nginx报错:terminate called after throwing an instance of 'std::bad_alloc' what(): std::bad_alloc

安装crmeb后系统经常性提示 network error , 检查nginx_error.log发现错误:terminate called after throwing an instance of 'std::bad_alloc' what(): std::bad_alloc,此错误到达一定程度后会自动停止服务。

经排查,由于服务器安装云锁导致,修改 /usr/local/yunsuo_agent/FilterKernel.xml

注释掉: <PlugIn dllpath="libs/libperformanceMonitor.so" RunOn_Filter=".*" RunOn_Product=".*"/>

重启Nginx,问题解决。

JS浏览器/操作系统属性检测 浏览器指纹

浏览器环境使用Js可以检测的属性不仅包含浏览器的信息,同时还有操作系统,计算机硬件等信息(虽然不多)。

Chrome一直在阻止网页技术捕获用户的指纹,这是出于对于用户隐私与安全性的考虑,所以现在可用的技术可能在未来的某个版本中就不可用了。但是浏览器指纹帮助我们了解到原来还可以这么玩?而且未来Chrome也有可能授权用户给JS赋能唯一ID的能力,当然目前来看Chrome还没打算这么做。

- 阅读剩余部分 -

批处理bat批量更新git脚本

将本脚本放置到项目目录下,如www,双击则自动遍历www目录下所有项目并拉取代码。

@echo off
setlocal

@REM normalize the relative path to a shorter absolute path.
pushd "%~dp0"
set repos_path=%CD%
popd

call :find_and_pull %repos_path%
echo. & echo Finished. & pause>nul
goto :EOF

::-------------------------------------
:: @name   find_and_pull
:: @param  %1 base directory to find .git
:: @usage  call :find_and_pull %base_dir%
::-------------------------------------
:find_and_pull
for /d %%i in (%1\*) do (
    cd %%i
    if exist .git (
        echo. & echo [ START git pull FROM ] %%i
        git pull
    ) else (
        call :find_and_pull %%i
    )
)
goto :EOF

Nginx的热更新方案

Nginx的热更新是通过多条信号命令组合完成,可粗略分为两个步骤:

1、通知老master启动新的master二进制文件。

2、通知老master进程优雅退出。

更新二进制

重命名之前的sbin/nginx文件,将新的nginx文件放到sbin/目录下。

#mv ./sbin/nginx ./sbin/nginx.old
#cp ~/nginx ./sbin/

启动新的nginx

向正在运行的nginx发送USR2信号启动新的nginx,这个时候新老nginx都会接收请求,看哪一个进程能抢到锁,抢到锁的worker进程可以accpet新请求。

#kill -USR2  `cat nginx.pid`

退出旧的nginx

观察新的nginx运行无误后,向旧nginx发信号 停止旧nginx的运行。

#kill -WINCH `cat nginx.pid.oldbin`
#kill -QUIT `cat nginx.pid.oldbin`

shell编码规范手册(shellcheck错误汇总)

shell脚本提交以前必须用静态代码扫描工具 shellcheck 扫描,根据提示修改代码,需达到扫描后无报错即可通过。

安装

#安装shellcheck
yum install shellcheck

#扫描
shellcheck -x -s bash *.sh
# -s 指定使用bash
# -x 给予shellcheck跟踪文件的权限,例如一个文件中导入了其他文件

错误编号

shellcheck 扫描出的每一个错误,均有其编号,以 SC+4位数字 组成。分为两部分:

- 阅读剩余部分 -

NanoID - 轻量、安全的 Unique ID 生成器

NanoID

一个小巧、安全、URL友好、唯一的 JavaScript 字符串 ID 生成器。

  • 小巧:130 bytes (已压缩和 gzipped), 没有依赖,Size Limit 控制大小;
  • 快速:它比 UUID 快 60%;
  • 安全:它使用加密的强随机 API,可在集群中使用;
  • 紧凑:它使用比 UUID(A-Za-z0-9_-)更大的字母表,因此,ID 大小从 36 个符号减少到 21 个符号;
  • 易用:Nano ID 已被移植到 20种编程语言。
php版:https://github.com/hidehalo/nanoid-php

- 阅读剩余部分 -

数据脱敏方案

数据脱敏也叫数据的去隐私化,在我们给定脱敏规则和策略的情况下,对敏感数据比如 手机号、银行卡号 等信息,进行转换或者修改的一种技术手段,防止敏感数据直接在不可靠的环境下使用。

像政府、医疗行业、金融机构、移动运营商是比较早开始应用数据脱敏的,因为他们所掌握的都是用户最核心的私密数据,如果泄露后果是不可估量的。

数据脱敏的应用在生活中是比较常见的,比如我们在淘宝买东西订单详情中,商家账户信息会被用 * 遮挡,保障了商户隐私不泄露,这就是一种数据脱敏方式。

- 阅读剩余部分 -