mac下显示和隐藏文件

macOS更新到 Catalina 10.15.4之后,原来显示隐藏文件的快捷键:Command + Shift + . 失效了,只能先用shell命令临时处理一下:

显示隐藏文件:

defaults write com.apple.finder AppleShowAllFiles -boolean true ; killall Finder

隐藏隐藏文件:

defaults write com.apple.finder AppleShowAllFiles -boolean false ; killall Finder
发表在 mac/iphone/ipad/android | 留下评论

python字符编码问题一则

今天在分析nginx日志的时候,发现用户的请求中有如下格式的字符:

\xB6\xF1\xD2\xE2

而大部分用户提交的请求则是如下形式:

%E4%BC%98%E8%A1%A3%E5%BA%93

对于前者,使用以下python代码进行解码:

def decode_query_str():
    str = b'\xB6\xF1\xD2\xE2'
    print("{} ==》 {}".format(str, str.decode('GBK')))

执行结果:

b'\xb6\xf1\xd2\xe2' ==》 恶意

发生这种情况,可能的原因如下:
IE浏览器设置中有一个选项:”以UTF-8 形式发送URL路径”,当该选项有效时,IE将会对特殊字符进行UTF-8编码,同时进行URL编码。如果该选项无效,则使用默认编码”GBK”,并且不进行 URL编码。但是,对于URL后面的参数,则总是不进行编码,相当于UTF-8选项无效。比如: “中文.html?a=中文”, 当UTF-8选项有效时,将发送链接”%e4%b8%ad%e6%96%87.html?a=/x4e/x2d/x65/x87″; 而UTF-8选项无效时,将发送链接”/x4e/x2d/x65/x87.html?a=/x4e/x2d/x65/x87″。 在此注意,不管此选项是否有勾选,后面的参数都没有改变,改变的仅仅是地址。

对于后者,通过urldecode即可得到解码之后的数据,python代码如下:

def str_two():
    str = '恶意'
    print(urllib.parse.quote(str))
    str = '%E6%81%B6%E6%84%8F'
    print(urllib.parse.unquote(str))

发表在 python | 留下评论

TPS及计算方法

TPS (transaction per second)代表每秒执行的事务数量,可基于测试周期内完成的事务数量计算得出。例如,用户每分钟执行6个事务,TPS为6 / 60s = 0.10 TPS。同时我们会知道事务的响应时间(或节拍),以此例,60秒完成6个事务也同时代表每个事务的响应时间或节拍为10秒。

利特尔法则 (Little’s law):
该法则由麻省理工大学斯隆商学院(MIT Sloan School of Management)的教授John Little﹐于1961年所提出与证明。它是一个有关提前期与在制品关系的简单数学公式,这一法则为精益生产的改善方向指明了道路。

利特尔法则的公式描述为:

Lead Time(产出时间)= 存货数量×生产节拍

TH(生产效率)= WIP(存货数量)/ CT(周期时间)

P.S: 稍后我们会列出负载模型中利特尔法则的应用公式。

我们通过2个示例来看一下此法则是如何在生产环境中发生作用的。

例1:假定我们所开发的并发服务器,并发的访问速率是:1000客户/分钟,每个客户在该服务器上将花费平均0.5分钟,根据little’s law规则,在任何时刻,服务器将承担1000×0.5=500个客户量的业务处理。假定过了一段时间,由于客户群的增大,并发的访问速率提升为2000客户/分钟。在这样的情况下,我们该如何改进我们系统的性能? 根据little’s law规则,有两种方案:

第一:提高服务器并发处理的业务量,即提高到2000×0.5=1000。 或者
第二:减少服务器平均处理客户请求的时间,即减少到:2000×0.25=500。

例2:假设你排队参观某个风景点,该风景点固定的容纳人数是:60人。每个人在该风景点停留的平均时间是:3分钟。假设在你的前面还排有20个人,问:你估计你大概等多少时间才能进入该风景点。
答案:1小时(3×20=60),和该景点固定的容纳人数无关。

为了通过利特尔法则研究负载模型,我们就先要了解两个因子:响应时间(Response time)和节拍(Pacing)。实际上节拍会超越响应时间对TPS的影响。

示例1:节拍0秒,思考时间0秒
用户执行5个事务并且每个事务的响应时间是10秒,需要花费50秒完成5个事务,即5/50=0.1 TPS (这里TPS是由响应时间控制)。

示例2:速率15秒,思考时间0秒
用户执行5个事务且每个事务的响应时间是10秒,但实际由于节拍大于响应时间,所以它优于响应时间控制了事务发生的频率。完成5个事务需要5*15 = 75秒,产生5/75=0.06667 TPS。

在第二个示例中,平均响应时间小于节拍15秒,需要75秒完成5个迭代,产生了0.06667 TPS。

上面两个例子中我们假设思考时间为0秒。如果思考时间为2秒,总时间仍是75秒完成5个迭代,产生0.06667 TPS。

节拍为0秒,则 用户数 = TPS * ( 响应时间 + 思考时间 )
节拍不为0秒且大于响应时间与思考时间的和,则 用户数 = TPS * (速率)

事实上TPS是事务在w.r.t时间的速率,所以也被称为吞吐量(throughput)。

所以利特尔法则在负载模型中解释为:系统内平均用户数 = 平均响应时间 * 吞吐量

N = ( R + Z ) * X
N, 用户数
R, 平均响应时间(也可能是速率)
Z, 思考时间
X, 吞吐量(如TPS)

如:N (用户数)=1500, R (平均响应时间)=10, Z (思考时间)=0,则X (吞吐量)=1500/10=150 TPS

来源:http://www.cnblogs.com/richardcuick/p/6384122.html

其他参考:
http://www.ha97.com/5095.html

发表在 computer | 留下评论

w3lib安装记录

w3lib 在pypi网站上的版本为1.21.0
https://pypi.org/project/w3lib/

使用以下命令安装之后:

pip install w3lib

发现安装的版本为:

w3lib==1.19.0

通过以下命令可以查看到是可以升级的:

pip list --outdated

所以指定版本号来安装一下:

pip install w3lib==1.21.0
Collecting w3lib==1.21.0
Using cached https://files.pythonhosted.org/packages/6a/45/1ba17c50a0bb16bd950c9c2b92ec60d40c8ebda9f3371ae4230c437120b6/w3lib-1.21.0-py2.py3-none-any.whl
Requirement already satisfied: six>=1.4.1 in d:\python\python36\lib\site-packages (from w3lib==1.21.0) (1.11.0)
ERROR: scrapy 1.5.1 requires Twisted>=13.1.0, which is not installed.
Installing collected packages: w3lib
Found existing installation: w3lib 1.19.0
Uninstalling w3lib-1.19.0:
Successfully uninstalled w3lib-1.19.0
Successfully installed w3lib-1.21.0

w3lib的官方主页:
https://github.com/scrapy/w3lib

w3lib的文档地址:
https://w3lib.readthedocs.io/en/latest/

发表在 python | 标签为 | 留下评论

如何关掉pycharm的拼写检查


在Settings页面,选择 Editor=》Inspections,在右侧取消Spelling和Typo的选中状态即可。

发表在 other | 标签为 | 留下评论

php安装gd扩展

gd扩展需要安装几个前置库,比如freetype、libpng等,此处把常用的库都安装一下。

使用yum安装常用库:

yum install libxml2 libxml2-devel openssl openssl-devel bzip2 bzip2-devel libcurl libcurl-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel gmp gmp-devel libmcrypt libmcrypt-devel readline readline-devel libxslt libxslt-devel

其中:
freetype
FreeType是一个完全开源的、可扩展、可定制且可移植的字体引擎,它提供TrueType字体驱动的实现统一的接口来访问多种字体格式文件,包括点阵字、TrueType、OpenType、Type1、CID、CFF、Windows FON/FNT、X11 PCF等。
官方网址:https://www.freetype.org

libjpeg
用来处理jpeg图片读写的库。
官方网址:http://libjpeg.sourceforge.net

libpng
https://libpng.sourceforge.io/index.html
用来处理png图片的库。

gmp
高精度数字计算库。

libmcrypt
加密库

readline
交互式命令库

安装完毕,进入php源码包的gd目录:

cd /root/php-5.6.14/ext/gd

在该命令下执行phpize:

/usr/local/php/bin/phpize

然后configure一下:

./configure –with-php-config=/usr/local/php/bin/php-config

然后执行 make & make install

make install
Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/
Installing header files: /usr/local/php/include/php/

然后把php.ini文件中添加:

extension=gd.so

重启php即可:

service php-fpm restart
Gracefully shutting down php-fpm . done
Starting php-fpm done
发表在 lnmpa | 标签为 | 一条评论

为php安装memcached扩展

https://pecl.php.net 上搜索memcached,能够找到两个memcached扩展:

memcache
主页:https://pecl.php.net/package/memcache
memcache已经很久没有更新了。

memcached
主页:https://pecl.php.net/package/memcached
php-memcached的github地址:https://github.com/php-memcached-dev/php-memcached
版本比较新,支持php7,使用了libmemcached库,推荐使用。

继续阅读

发表在 lnmpa | 标签为 , | 留下评论

mac下修改nginx的Docroot

nginx使用brew安装,信息如下:


brew info nginx
nginx: stable 1.13.12 (bottled), HEAD
HTTP(S) server and reverse proxy, and IMAP/POP3 proxy server
https://nginx.org/
/usr/local/Cellar/nginx/1.6.2 (7 files, 902KB)
Poured from bottle on 2014-12-18 at 21:03:14
/usr/local/Cellar/nginx/1.13.9 (23 files, 1.4MB)
Poured from bottle on 2018-03-11 at 11:01:32
/usr/local/Cellar/nginx/1.13.10 (23 files, 1.4MB) *
Poured from bottle on 2018-04-03 at 19:40:49
From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/nginx.rb
==> Dependencies
Required: openssl ✔, pcre ✔
Optional: passenger ✘
==> Options
–with-passenger
Compile with support for Phusion Passenger module
–HEAD
Install HEAD version
==> Caveats
Docroot is: /usr/local/var/www

The default port has been set in /usr/local/etc/nginx/nginx.conf to 8080 so that
nginx can run without sudo.

nginx will load all files in /usr/local/etc/nginx/servers/.

To have launchd start nginx now and restart at login:
brew services start nginx
Or, if you don’t want/need a background service you can just run:
nginx

继续阅读

发表在 lnmpa | 标签为 , , , | 留下评论

在mac下使用docker搭建php开发环境

mac下安装docker
到官方下载安装即可。docker对系统版本要求较高,centos7及以上,window10需要专业版,家庭版无法安装。

mac版下载地址:https://store.docker.com/editions/community/docker-ce-desktop-mac

在安装之前先创建一下目录:

mkdir -p ~/docker/nginx/www

网站根目录。

继续阅读

发表在 docker | 标签为 , | 留下评论

windows系统安装pip记录

pip简介
pip是python的包管理工具。

项目主页:https://pypi.python.org/pypi/pip

下载后安装
下载后解压,通过CMD终端进入解压的目录,然后输入以下命令:


python setup.py install

继续阅读

发表在 python | 标签为 | 留下评论