精分的个推

个推的restapi也太不清真了……返回明明是个json,请求带个accept: application/json就丢出406,不带倒是能用,但是丢出content-type: text/html (╯‵□′)╯︵┻━┻ ​

...

nginx权限问题导致反代时报net::ERR_INCOMPLETE_CHUNKED_ENCODING

transmission可以启动一个http服务器,默认监听9091端口,就可以利用服务器的带宽下片,而且有公网优势,不存在内网还需要UPnP才能正常使用bt的p2p,于是在服务器上的nginx给个域名起个反代,最初用的还正常,但是最近突然发现页面加载不出来了……查看F12,只有jquery-ui.min.js会报net::ERR_INCOMPLETE_CHUNKED_ENCODING,而其他文件

...

weex初探

前言

厂里需要快速出一个集成推送的app,功能方面先用webview凑合,但是厂里没有移动端开发,所以我就想到了ionic,React Native和Weex。
ionic以前用过,几乎是纯webview实现,好处是可以和现有的网页上angular无缝对接,不过鉴于网页端本来就有点卡,所以这次想尝试混合开发。

然后在RN和Weex之间犹豫了一阵,最终由于我更熟悉Vue,所以打算试一下Weex

...

存个档

[singlepic id=246 w= h= float=none]
我真可爱【x


又拍云bug导致post请求源站抛出500时会处理成504

0x00 发现

这次故障是在厂里生产环境发现的,表现为:

  1. 接口遇到错误时服务器抛出500错误,但是前端迟迟拿不到响应
  2. 前段pending很久之后拿到cdn返回的504错误

0x01 分析

最初是认为后端对500的响应处理有问题,但是这个问题仅在生产环境上可复现,测试环境和本地开发均能够正常的返回500。
由于项目的历史原因,并没有完善的access log可以查看,所以先发布了一版带acces

...

用tinc搭建p2p vpn

0x00 需求

计划恢复炉心工艺的fmc.moe域名正常使用,但是moe域名没法备案,数据库在国内服务器上,不太想搬,于是只好把域名解析到国外服务器上,然后再反代回国。

但是同域名反代还是会遇到备案被拦截问题,于是就需要走加密协议传输或者干脆起跨机房内网

但是我有很多台服务器,而且几乎都是跨机房的,从ucloud到阿里云,墙外有hostker和conoha,如果用普通的vpn解决方案,所有流量都得

...

记录一处discuz不兼容php7导致UCenter通信失败

dz版本,discuz! F1.0
UCenter的通信测试的实质,是一个script脚本,调用地址是
/uc_server/admin.php?m=app&a=ping&inajax=1&url=https%3A%2F%2Fexample.com&ip=&appid=1&random=1230195151&sid=sdsfsddfd
直接访


...

2016年终总结

距离2016年结束还有不到两个星期,是时候想想今年都干了些什么了

年初的时候由于原厂架构变更,使用rabbitmq作为消息中间件,做服务拆分和为服务化,于是搞出了carrotmq 简化官方sdk使用难度,一度爬上npm下载量前5%

conoha服务器被封了一次,原因是翻着墙操作了在cohona的控制台充了钱,随后和客服交涉(可以用中文发,虽然回复是日文的)后解除了,但是也被告知仅此一次。

炉心工艺

...

解决微博挂件不支持HTTPS导致浏览器报混合内容

由于微博挂件不支持HTTPS,即使把调用的网址改成https的,也会由于返回的页面里引用的内容全部都是http而报混合内容。但是其实手工访问每个引用内容,都是支持HTTPS的,但是新浪太坑,全部按照http返回了。

最近突然在Chrome的开发者工具里看见了所有https请求都会携带一个Upgrade-Insecure-Requests:1头,Google后发现这个头允许浏览器自动升级http协议

...

修复cnpm install命令回退npm而不是使用npminstall进行快速安装

终于受不了npm的安装速度了,每次发布的耗时都能吃顿饭,让运维配合更换cnpm后查看输出日志却还是npm的格式,而不是npminstall的格式。

运维给出了服务器上的执行脚本

LD_LIBRARY_PATH="/opt/gcc/lib64:/opt/gcc/lib:$LD_LIBRARY_PATH"
export LD_LIBRARY_PATH
NPM="/opt/node/bin/cnpm
...

nodejs CorkedRequest导致内存泄露

0x00 状态

有一个websocket长连接服务原先是用php的workerman框架跑的,但是近期出现了一些莫名其妙的bug,用Nodejs重写后接替了原先的全部流量。
最初还没什么问题。
跑了一段时间后发现内存泄露问题比较严重,服务器有8G内存,用cluster方式跑了8个进程,几乎24小时内就会吃满8g内存,导致进程被系统kill。

0x01 堆内存分析

遇到内存泄露,第一时间想到的...


CentOS 7 下MariaDB修改datadir后无法启动

前阵子想把服务器的CentOS 6.8升级上CentOS7。但是失败了,重装了系统

重装以后挂载好数据盘后发现MariaDB起不来了,查journal log,只有一行warning

can't create test file /var/lib/mysql/core.lower-test

google了一下,有两种方案

第一是说selinux导致的,但是ucloud的镜像默认就是关闭se...


记一次nodejs的长连接websocket服务故障

故障最初表现是这样的,在客户端正常连接一段时间之后,无任何征兆的服务端会突然触发close事件从而进行连接断开的清理工作,将Redis和Mysql内的在线数据都清理掉了,导致推送时找不到该设备,但是客户端直接请求服务端的数据,服务端均能够正确响应。

最初以为是node的ws模块有bug,在触发close事件的时候并没有真正关闭连接,所以在close事件触发的时候直接调用了socket._sock...


nginx+php-fpm无法使用PUT和DELETE等方法

群里讨论nginx+fastcgi和apache+mod_php时,有人提到了nginx+fcgi不支持PUT和DELETE,会报405,所以只好通过劫持405状态码的方法来处理这些方法

无标题

但是这种方法过于蛋疼,再加上我以前在写php的时候是正常使用过这些方法的,于是提出了异议并且实现了PUT方法的demo。

对比双方的fastcgi配置后,并没有发现什么区别,唯一的区别是我使用的是Teng...


Space Engineers 可编程方块从入门到放弃

好好的一个游戏,玩着玩着就写起了代码

游戏里的编辑器没有代码提示没有代码高亮,甚至连括号对齐都没有,于是我们首先需要搭一个VS下的开发环境,用于写代码

并不是所有C#的内置类或者游戏类均可用,文章的最后会说明

首先需要把游戏源码clone下来https://github.com/KeenSoftwareHouse/SpaceEngineers/

为了不要一不小心修改了游戏代码,可以在解决方...


WordPress升级PHP7后白屏

把bmclapi安顿到其他服务器上后,这台服务器终于有内存跑第二个fpm了,所以决定安装一下php7,让dz跑在5.5的fpm上,单独给wp上7

安装完成后发现首页白屏,但是error_log里没有输出,即使打开WP_DEBUG,也只有几个Notice和Deprecated,按理来说不应该会导致白屏。

直接输入url进入文章页面终于有报错了,报错信息是called undefined func...


carrotmq中文文档

CarrotMQ是一个给NodeJS使用的RabbitMQ客户端,基于官方的amqplib,能够简化amqplib的复杂的操作

Version npm
NPM Downloads
Dependencies
NPM

使用姿势

var carrotmq = require('carrotmq');
//var rabbitmqSchema = require('rabbitmq-schema'); 
var rabbitmqSchema = carrotmq.schema
...