• 记录一处discuz不兼容php7导致UCenter通信失败
    记录一处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
    直接访问就能看到报错

    此处的代码是

    而php5到php7有一个breaking change和类方法动态调用有关

    http://p[……]

    Read more

    Read more
  • 2016年终总结
    2016年终总结有1条评论

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

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

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

    炉心工艺从5周目开始解决了玻璃不防雨的问题,以前的问题是Bukkit下World.getHighestBloc(Position)方法会忽略透明方块,于是玻璃会被忽略从而判断玩家站在露天的地方。
    解决方[……]

    Read more

    Read more
  • 解决微博挂件不支持HTTPS导致浏览器报混合内容
    解决微博挂件不支持HTTPS导致浏览器报混合内容无评论

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

    最近突然在Chrome的开发者工具里看见了所有https请求都会携带一个Upgrade-Insecure-Requests:1头,Google后发现这个头允许浏览器自动升级http协议到https协议,对应的需要让服务端发来一个Content-Security-Policy: upgrade-insecure-requests,就可以让浏览器自动升级协议了。

    https

    于是在ngin[……]

    Read more

    Read more
  • 修复cnpm install命令回退npm而不是使用npminstall进行快速安装
    修复cnpm install命令回退npm而不是使用npminstall进行快速安装无评论

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

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

    看上去并没有什么问题,本地带相同的参数也能够正常调用npminstall。

    怀疑cnpm版本问题,但是运维给出cnpm -v是4.4.0

    后来在postinstall的hook里输出process.env,发现有shrinkwrap的设置,而npminstall是不支持shrinkwrap的,但是本地即使添加shrinkwrap也不会让cnpm[……]

    Read more

    Read more
  • nodejs CorkedRequest导致内存泄露
    nodejs CorkedRequest导致内存泄露无评论

    0x00 状态

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

    0x01 堆内存分析

    遇到内存泄露,第一时间想到的就是把内存dump下来看看,于是发布了一个能够实时dump内存的版本,拿到heapdump文件后发现文件只有60M不到,而当时的进程内存占用达到了1.6G,于是能够知道大量的内存开销都不是堆内存,而是[……]

    Read more

    Read more
  • CentOS 7 下MariaDB修改datadir后无法启动
    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的镜像默认就是关闭selinux的,所以不是这个问题

    第二说是apparmor限制了进程的目录读写,但是那是Ubuntu下默认安装的,CentOS下没有这个东西,所以也不是这个问题。

    其他文件权限之类的都检查过了,而且[……]

    Read more

    Read more
  • 记一次nodejs的长连接websocket服务故障
    记一次nodejs的长连接websocket服务故障有1条评论

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

    最初以为是node的ws模块有bug,在触发close事件的时候并没有真正关闭连接,所以在close事件触发的时候直接调用了socket._socket.close()来强制关闭连接,然而并没有什么卵用,情况并没有任何变化。

    随后开始了wireshark抓包,发现故障时,客户端会发来未知的opcode
    fecfce40-779f-11e6-8edf-f103b4c1845d

    在服务端收到这个错误的opcode后,[……]

    Read more

    Read more
  • nginx+php-fpm无法使用PUT和DELETE等方法
    nginx+php-fpm无法使用PUT和DELETE等方法无评论

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

    无标题

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

    对比双方的fastcgi配置后,并没有发现什么区别,唯一的区别是我使用的是Tengine,而对方是nginx,而Tengine文档里并没有提到这一改动,于是只好继续测试

    QQ截图20160603203050
    真的出现了405,难道真的是Tengine对这方面做出了改动?

    不过如果输入完整的url,事情就有了转机[……]

    Read more

    Read more
  • Space Engineers 可编程方块从入门到放弃
    Space Engineers 可编程方块从入门到放弃有1条评论

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

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

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

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

    为了不要一不小心修改了游戏代码,可以在解决方案里新建一个Console项目,然后添加对游戏项目的引用,然后让生成出来的类继承MyGridProgram类,
    并且修改Main方法,拿掉static,参数是(string args),
    添加需要用到[……]

    Read more

    Read more

Back to Top