一年香

不知不觉,正式入职已经一年了,现在想起来一年前拿到毕业证的第二天就直接坐高铁杀到杭州,第三天直接办理入职的经历,还是觉得挺好玩。更何况入职第二天就是跑千岛湖 outing 去了
alibaba-150626

从高考结束到现在,五年过去了,我觉得我做过的最重要的两个决定分别是出省上大学,和翻墙。从此我的眼界大大开阔,世界观也再不似从前,后者甚至在很大程度上保证了我在那个逼仄的学校能保持仅有的一点思考和见解,否则今天我也不会顶着大公司的光环在这里写闲话。

最近一年代码写得不多,但进步还算不小,Google Oriented Develop 和 SlackOverflow Oriented Develop 果然是快速上手开[……]

继续阅读~→

终于解掉 nginx 在 SSL 下 400 的错误,蠢死了

这个问题持续了得有超过一年了,症状很简单,配置了 https 访问之后,使用 IPv6 访问的时候会报 400 Bad Request 错误,强制使用 IPv4 或者强行指定 https 协议都能解决。说到这里应该很明显了对吧,首先就应该想到是不是 80 端口上也开着 ssl 来着。但这个讨厌的地方在于用 IPv4 就一切正常了,我一直没想那么多……就因为这我的博客很长时间都没办法强制 https 访问,不然 IPv6 过来的用户没法看。

前两天搞着搞着调另一个什么反向代理相关的设置的时候,顺手开了 debug 日志,然后就想顺便测一把,结果一不小心就找到了原因_(:зゝ∠)_

长话短说,问题的根本原因是普通 http 协议和加密的 https 协议配置在了一个 server{} 块内。并不是说不支持这样搞,而是这样配置过后服务器的行为会和分开配置成两个有所不同。
[……]

继续阅读~→

一点点近况

距离上次更新博客已经一年多了,中间只有从 flicker 同步的贴图在刷着… 这一年多好像没什么好写的,但实际发生了很多,难道说博客写久了不再有耐心?或者更靠谱的说法大概是太现充以至于无暇来慢慢写博客了吧。

去年5月,我还没上大四,申请 GSoC 2013 刚刚提交都不知道结果,转眼一看,现在我已经毕业三个月、艰难地啃着 GSoC 2014 的项目;时间还真是过得快呢。这一年当中我买了单反,考研233,找到了工作,甚至感情状态都修改了两次,居然连13年年终总结都没有写。要说有意义的活动,大概去年暑假参加广州的第四届天文发展论坛算比较典型的了,好歹算是出远门。另外和天南大一起蹭天津天文节的[……]

继续阅读~→

To Enrich myLife

阴天教前天换届了…淋着打伞觉得没必要不打又觉得不爽的毛毛雨,提着湿漉漉的伞回到寝室,磨磨蹭蹭把电脑打开一看,错误691,上网帐号欠费了。
把手机卡卸出来用毕竟只能是应急的,就算是3G也实在用着苦逼,于是哈欠连天地想着干脆写博客消磨时间好了。

周四晚上收到邮件说25号下午组织两场模拟口试,可以去先行体验,然后正好又拿到了普通话考试的准考证,和口试时间一模一样:26号09:00. 于是就没什么好犹豫的了,周五和母上打电话汇报了一声,然后就买了第二天上午去天津的票,接着顺手定了个房间。

坐着普快一路到天津站,出来转地铁,然后走路,然后迷路,然后绕路…然后在终于对股沟地图给的建议[……]

继续阅读~→

三七二十一

总觉得还是应该保持每年生日一篇博客的习惯。
二十一岁,突然感觉自己……原来已经长这么大了啊……

嗯,说说近况吧,基本上就是社团这头基本上可以脱手了,另一边GSoC刚交了申请还不知道会是个什么展开。

暂时好像也没什么了,我很好,勿念。
祝我生日快乐

Apache + Varnish + nginx 获取正确的客户端IP

貌似现在只要我更新博客就说明又在没事瞎折腾了… =.=
很久以前就遇到过这个问题,或者不如说实际上就是因为无法正确获取客户端IP才让我一直用的 Apache + nginx 的构架。今天折腾一下午 + 一晚上总算是把这个问题(还算)圆满地解决掉了。

首先是参考这篇文章配置好整个服务器构架,后端使用 Apache httpd 来处理 PHP, 中间用 Varnish 做缓存,前端使用 Tengine 作为 web 服务器,所以来自客户端的请求的处理流程是:

Client -> Tengine:80 -> Varnish:8090 ->(Miss)-> httpd:81

然后问题就来了,处在最后面的 httpd 拿不到正确的客户端IP地址,总是显示为127.0.0.1. 这个问题有趣在于,一直以来我都是使用了 mod_rpaf 来获取 X-Forwarded-For 中的客户端IP的,而如果我去掉中间那一层 Varnish 直接让 Tengine/nginx 反向代理给 httpd 的话,IP地址是能够正确获取的,更进一步实验表明,在只有一次代理的情况下一切都是正常的,当代理变成了两层,无论两层代理的顺序如何,都会出现这个问题。

中间各种股沟各种查文档就[此处省略6小时]了…

基本上有两个比较主要的原因。
[……]

继续阅读~→

写了个简单的 shadowsocks 退出自动重启脚本

screen在 VPS 上跑 shadowsocks, 不过时不时会退出然后需要我上去重启,很麻烦,于是就搞了个定时检测 shadowsocks 是否在运行,如果没有就自动重启的脚本。

然后在cron任务里面写上一句 */1 * * * * root bash /some/path/autostart.sh 就可以每分钟自动执行了,而且这样还能变相实现开机自动启动,所以就算服务器意外重启也不怕了。

如果觉得异常退出过后一分钟启动的间隔太长,当然也可以写成死循环:

继续阅读~→

从 MySQL 迁移到 MariaDB

“Because Oracle is Oracle is Oracle()”[?]

ArchLinux 昨天宣布将使用 MariaDB 作为 MySQL 的默认提供包,openSUSE 已经在新近发布的12.3版中默认使用 MariaDB, 连 Fedora 也正在考虑更换为 MariaDB.

于是我决定把我的所有服务器从 MySQL 迁移到 MariaDB.

对 Arch 用户来说很简单,照着官方新闻里面的来就是了:

而对于 openSUSE 就更傻瓜式了,毕竟是默认的嘛: zypper in mariadb 一句就够。

至于 Debian/Ubuntu 用户就要稍微复杂一些,不过整个过程还是很流畅的:
[……]

继续阅读~→

解决一个 embrr 不能翻页的 PHP 配置问题

唔…大致说来就是最近在折腾着把停止更新的 embr 给升级到 Twitter REST API v1.1, 然后今天参考黄飘飘的改动把 fav 相关的两个地方弄上了自动翻页。

因为 api 更新的关系,不能用原来的页码作为参数,只能用推文的 id 来做界定了,不过操作起来倒是比想象的还要简单就是了。修改好过后传到 appfog 上木有任何问题,但放到我自己的服务器上面过后发现翻页不能了…
开始还以为是 nginx 配置不对,但看了半天找不到问题,于是考虑是不是 PHP 的问题…

简单找了一下,发现问题在于生成的翻页链接上,因为推文 id 被作为参数传到链接里面,而生成的链接变成了类似于 /favor.php?max_id=2.9972877531744E+13 这样的形式…科学计数法耶…
[……]

继续阅读~→

新装系统 Win8 与声卡那点纠结的记录

好吧我换系统了,因为换了个新硬盘神马的。然后就想着干脆装 Win8 吧。

装系统一切都好,什么都很正常很顺利那样,结果完了我想看番的时候发现…耳机没声音……
囧死了好吧。

长话短说,试过了网上提到的多种方法,有些是用了无解,有些是不适用我的情况。

我的声卡是 Reltek ALC 269 机子是华硕 N53Jf.

折腾一整天,重装三次系统之后,问题确定:Reltek 官方驱动与 Win8 不兼容。
是滴你没看错,最新版写着支持 Windows 8 的那个也不行,只有外放有声音耳机不行。

解决方案是装好系统过后静置,等系统自己联网下载微软的驱动。[……]

继续阅读~→

喜欢本馆内容的话,记得订阅
Merry