分类目录归档:未分类

pycharm 2018.2 debug remote docker超级慢

开始以为是app的问题,排查后发现是新版pycharm 有问题。退回2017.3

问题环境是:Flask latest版本,docker-compose运行在远端。flask在pycharm开启debug运行后会卡在第二次reloader中。

其它运行等都没有影响

对Flask 初始化过程的 profile

如果是普通的flask页面profile建议使用WSGI Application Profiler

它会自动分析每一个页面,并profile,内部也是cprofile实现。

针对初始化过程只能手动使用cProfile:

python -m cProfile -o profiling run_web.py

等到初始化完毕再进入python ide:

>>> import pstats
>>> stats = pstats.Stats(‘profiling’)
>>> stats.sort_stats(‘time’).print_stats(10)

 

Flask Debug模式下总是初始化两遍

这个如果是在debug模式下出现一般是跟reloader特性有关系,WERKZEUG提供的这个特性主要是方便实时监测到开发中修改的文件,比重启app要快很多。但是有的时候我们希望app或者部分代码指启动一遍,可以用下面的环境变量来监测是否是第二次reload中的初始化。

if not app.debug or os.environ.get(“WERKZEUG_RUN_MAIN”) == “true”

组件初始化我们也希望初始化一遍,flask对此有一个专门的事件:

@app.before_first_request
def initialize():
print “Called only once, when the first request comes in”

docker network 网络服务发现和内嵌的dns系统

docker-compose的启动会默认创建一个bridge类型的网络,当然它跟默认的bridge是继承关系。最近升级ide和docker后发现服务之间出现了个现象,服务能ping的通但是别名就不可以。而更改的地方就是网络模式network_mode  设置为了bridge。

原来当使用default bridge network的情况下,docker container使用宿主机的resolv.conf,当然不会解析服务名了。从1.10开始docker对自建的网络默认启用embedded dns,这个dns会自动更新新分配的服务。

docker network create mynet  //不指定网络模式时默认是bridge

用mynet替换原先的bridge即可。如果在一个网络内可以用服务名来访问比如ping service_name,如果不是可以通过ping service_name.devnet

mysql docker 日志输出时区修正

docker通常修改 -v /etc/localtime:/etc/localtime就可以修改系统时间,但是mysql日志输出时间还是没变,因为它的时间默认是UTC时间,修改需要更改mysql的配置。增加启动参数:–log_timestamps=SYSTEM

完整示例:

docker run -e MYSQL_ROOT_PASSWORD=root -v /etc/localtime:/etc/localtime:ro  -d mysql:5.7 –log_timestamps=SYSTEM

wordpress 用WP-CLI解决更新慢的问题


wordpress的升级非常方便,就是不适合国情,之前多试几次总会成功的,最近老是失败,删除了几次lock后发飙了。

对了如果没有安装SSH SFTP Updater Support的话,请先装好他,wp原生的太弱,还不加密,咱升级的重要原因不就是因为漏洞太多么,还没侵入性,因为ssh肯定有啊。win OS请走开,xx空间请走开。

然后就是主角WP-CLI了,这个东西太好了,有了它就算上面的升级失败也有终极方法了,命令行终究是万能的,甩UI几条街。安装请移步:WP-CLI

 wp plugin install 插件名

 wp core update #wordpress升级
奇怪的就是这种升级非常快,如果下载慢重来一次,如果实在下载不了可以拷贝下载链接用迅雷下载后直接安装。
 wp plugin update --all #wordpress 插件升级
 wp media regenerate --yes #重新生成wordpress多媒体文件

PHP 7.1开始放弃mcrypt

PHP7安装mcrypt失败。

最近更新docker镜像发现这个问题,搜索半天居然没有解决,原来从7.1开始mcrypt就被放弃了。因为它的依赖10年前就停止更新了。好吧放弃需要他的组件即可。

绝地求生/吃鸡 攻略 保证进前十

 

此攻略完全原创,没看过他人的攻略,全凭自己的推测和经验。精力有限玩了大概二十局不到一般都进前十,照着攻略走前十没问题,越靠前的规则越重要。前十的攻略较为重要,前五要养成习惯。十条以后就是经验了。

  1. 决定生死的不是枪的好坏,而是谁先发现对方。好枪不重要,拳头都能杀人,这个游戏还原度超级高,一把手枪也可以一枪爆头。所以不要总是低头找装备,时刻先观察四周才最重要。
  2. 看过电影都知道,进到一个建筑物特战队都会先clear一遍所有房间,这是因为近距离遭遇都会致命,远距离大概率都是受伤,所以观察以近处为主,远处瞥一眼即可。远处的敌人最喜欢了,一开枪就会暴露自己,还有时间慢慢找他,近处的一出现就是夺命一梭子弹。同理,接近房间和建筑物就要弯腰前行放轻脚步,靠墙后不妨听几秒,确定无声再进。
  3. 因为逼真度高,自动步枪默认是点发,我擦,一开始我真的不知道,近距离的时候点发必死。常备状态一定改为全自动。
  4. 找车。这条本来考虑放到第二,想想跟中后期有关,就排到第四了。这个游戏在一个岛上,这个岛还原度高,真的很大,毒圈收缩开始慢可能跑跑问题不大,中后期毒圈收缩快,扣血加快,没车必死。
  5. 沿着路找到车的概率大,现实世界中也是,所以跳伞开始不妨就先观察公路,找到一辆车是进前十的前提,除非运气好到爆,正好跳进圈子中心。
  6. 躲,有了前面五条为基础,新手只要不被毒死,在圈内靠躲就能进前20。枪法不好,枪不好都没事。别人和毒会帮你杀人。
  7. 跑图路线选择,毕竟是游戏,躲太没意思了,当然了,很多老阴B就是爱躲咱就不提了。时间和航线很重要,越是靠近航线的房子越容易被搜空,所以一开始有车就过上土豪生活了,开车搜刮装备是很爽的,根据时间计算一下跟航线的距离来选择后续跑的点很重要。开车的话肯定走公路,如果遇到枪机,加速即可。
  8. 如果没车,或者后期不适合开车的地方,跑点非常讲究障碍物和阴影,空旷的地方简直是找死的,逼不得已不去空旷的地方。
  9. 防御装备,这个要重视,直接加血的,等级越高越好,装备这种东西真的看运气,搜索很多房子不一定能找到合适的,所以高手的选择就是空旷的大厂房这类,因为不像房间很多,需要一个个找,很花时间。这里防毒面具有必要找到,后期很有用。
  10. 防御后就是枪了,这个大家都知道m16和sks首选,因为稳定,使用场景多。建议中后期要配备,前期无所谓的。高手都是让别人快递的,哈哈哈
  11. 圈子的收缩跟空投是一致的,所以观察空投飞机的路径是可以大致判断即将收缩的大概位置。
  12. 只要不需要开镜就不要开镜杀,乱枪打死老师傅就是这个道理。
  13. 后期跑点容易跑到有人的地方,这种遭遇很爽,双方都知道大概位置,这个时候逆向思维非常重要,还有就是耐心,这属于高级内容了。
  14. 最后几个圈子,应该差不多进前十了,这个时候要特别观察地形,记住房子的出入口,和制高点,能判断圈子的收缩就要抢占制高点,这个时候超级容易死人。所以要综合把握时间,地形,并时刻观察四周,杀人是必须的,否则下一刻杀的可能就是你。
  15. 说几个杀人小技巧,随时找制高点,然后看毒圈的收缩,这里要会看地形,然后慢慢杀人。
  16. 远程当然要点射了,这里没有几倍镜的就不要想了。瞄准的时候要预估到前面去。
  17. 杀人要果断,追击,这游戏看不到血条,还有一丝血也能活蹦乱跳。
  18. 不要总是呆在房间里,躲容易,发现人了就要追击,否则多房间就是死。
  19. 游戏有一个bug,并且会长期存在,就是守门边的时候,你的武器模型可能在墙外能看到一点,话就说到这里,哈哈

 

debian/ubuntu install 安装 ffmpeg

ffmpeg太出名了,linux上只要跟多媒体有关的多多少少都会有它的身影。最近需要用到它读取多媒体metadata,使用的库说找不到ffmpeg,apt也装不了会报错误。原来debian7开始ffmpeg被libav取代,这个东西也是从ffmpeg fork出来的,到了debian9又回到了ffmpeg,不过奇怪的是我换了stretch还是无法安装ffmpeg。老版本如果要装ffmpeg可以加入backports源,例如jessie源可以加入如下:

 
deb http://mirrors.163.com/debian/ jessie-backports main non-free contrib
deb-src http://mirrors.163.com/debian/ jessie-backports main non-free contrib

 

 

阿里云OSS js SDK使用https出现ERR_SSL_PROTOCOL_ERROR错误


在HTTPS站点ajax请求的地址如果不是https那么就有ERR_SSL_PROTOCOL_ERROR错误了。

解决办法:当然是把http改为https即可

阿里云一贯loss文档的尿性,确实找不到相应的说明,甚至找到对应sdk的项目地址都难,这里贴上oss js sdk的地址,看去是淘宝ued出品:https://github.com/aliyun-UED/aliyun-sdk-js

找到后发现有n多可配置项,这里需要加secure:true 到oss对象初始化的options即可,默认是false所以请求的是http。

最后重要的事说三遍:鄙视👎阿里云、鄙视👎阿里云、鄙视👎阿里云