今天有同学问如何用 grep 匹配 tab,想到这么几个方法:
- 在匹配模式里写上一个真正的 tab (bash下):
-
grep foo$'\t'bar … -
[ESC] tabORC-v tab
-
- 用 awk:
awk '/\t/' … - 有支持 PCRE 的 grep (编译时没有打开
--disable-perl-regexp),加上开关-P:grep –P '\t' … - 换个真正的工具:
perl
今天有同学问如何用 grep 匹配 tab,想到这么几个方法:
grep foo$'\t'bar … [ESC] tab OR C-v tab awk '/\t/' … --disable-perl-regexp),加上开关 -P : grep –P '\t' … perl 如果设定了timer_resolution并在自己的模块中调用了ngx_localtime(),nginx极有可能失去响应。
原因看来是localtime_r(3)信号不安全。nginx内部会用ngx_time这个变量中存下当前的时间,默认是在每次event循环中更新这个变量,减少gettimeofday(2)的调用次数。设置timer_resolution参数会导致nginx使用SIGALRM信号来定时更新,作者认为这样会有更好的精度。触发信号处理函数ngx_timer_signal_handler()后,里面调用ngx_localtime(),最后落实到glibc的localtime_r(3)。由于localtime_r(3)信号不安全,这样自己的模块代码中也进行了ngx_localtime()调用的话,两者很容易冲突而死锁(不知道我说清楚了吗)。
这个问题看起来也没什么好修正的,不要在自己的模块里面用ngx_localtime()就好了。如果不需要设定timer_resolution,可以假装一切都很正常。我现在使用ngx_timeofday()/ngx_gmtime()来格式化时间,目前情绪稳定。
Update: nginx 0.7.66 已经修正了此问题。
参考:
ps: 为了这篇post,山寨了个在Windows Live Writer里面给选定文字加<code>标签的插件,有需要的同学吗……
Tags: dev, module, nginx, timer_resolution, webserver, 模块开发
Posted in tech | 1 Comment »
Windows 下面有最小化所有窗口的快捷键, 但默认没有最小化当前窗口的快捷键. 解决方法(之一)是使用仅16.5k的神器 HoeKey.
安装运行 HoeKey 后, 按Win+Q呼出配置界面, 选择编辑配置文件, 加入一条:
~0=Msg||274|61472
这样就可以用快捷键 Win+0 来最小化当前窗口了.
同理可以写 ~9=Msg||274|61488 来用 Win+9 最大化当前窗口.
Tags: hoekey, hotkey, minimize, shortcut, tips, window
Posted in tech | 4 Comments »
lighty 1.4 的 setenv 模块是可以操作 http 头的, 但它提供的三个指令实际只是把给定的值附加进去, 如果处理的请求本来有同名的头, 会变成这样: Host: foo.com, bar.com
对 X_FORWARD_FOR 这样的头可以如此处理, 但 Host 之类就不是希望的结果了.比如作为代理时, 伺服的主机名和后端伺服的不同, 需要覆盖掉 Host 头.
lighty 1.5 和 nginx 都提供了对应的指令, 1.4 下面得自助. 这里我添加了一个 set-request-header 指令, 顾名思义(set vs add), 会用给定值覆盖设置请求头的值. 响应头的因为我用不到所以没实现, 需要的同学自己折腾吧.
patch 放在 lighty 的论坛上, 但几个月了没人理, 是没人需要鹰语太烂还是要开 issue 才行?
Tags: dev, header, http, lighttpd, lighty, module, set, webserver, 模块开发
Posted in tech | 2 Comments »
我(曾经)觉得 HttpWatch 比 Fiddler 强的一处是,可以显示当前 http 会话中对话主机地址。其实 Fiddler 也早就可以了,而且更强大。方法是点菜单的Rules > Customize Rules,找到并修改文件中的Main()部份:
static function Main()
{
FiddlerObject.UI.lvSessions.AddBoundColumn("HostIP", 50, "x-
hostIP");
}
Fiddler 的订制能力挺强,参考它的文档可以加入很多元素。它的作者人很好,论坛里面帖子回复很及时。
另外,由于 .NET 中DNS.Resolve()不会进行缓存,所以在 Fiddler 代理时对 hosts 文件的修改可以即时生效。
Tags: dev, fildder, http
Posted in tech | 6 Comments »
周五晚上骑车去中关村,半路上开始下雨,就在冷雨里面骑了一转。
周六晚上骑车去师大吃饭,到了就开始下,更冷的雨,再次被浇。
只好留宿。躺半天睡不着,拿出手机,弄了两下,没电了。
周日早上醒来,发现外边下大雪。。。那个大呦,手指头插积雪里到不了底。
索性迎着风雪骑回去。我是年轻人阿!
我一会儿往西骑,雪迎着我下。一会儿往北骑,雪迎着我下。一会儿往东骑,雪迎着我下。路上好像就我一个瓜人在骑骑骑,好拉风的。
然后到家,一下雪就停了。
Posted in life | 10 Comments »
和怀疑人生夜里醒来。
年底又有人要结婚订婚啊,怎么怎么这么快。
或者是我太慢。
Posted in life | 8 Comments »