- 博客(23)
- 资源 (5)
- 收藏
- 关注
原创 colortail,让 tail 命令绚丽起来
<br />colorgcc, colormake, man, vim 等的彩色可能很多人都知道了,今天介绍 colortail,让 tail 命令也多彩起来。<br />colortail 下载地址<br />http://joakimandersson.se/projects/colortail/<br />下载后 configure, make, make check, make install 就可以使用<br />除了用 -k 选项指定色彩配置文件外,跟 tail 命令都一样。<br />
2010-10-20 14:23:00
1844
原创 让 less 显示 ANSI 控制字符
<br />为了醒目,我们常把信息比如日志以彩色输出到终端,这会用到 ANSI 彩色控制字符。<br />通常输出到文件的时候,为了分析或者查看方便(很多工具不识别),则往往不输出彩色。<br /> <br />其实输出彩色还是有些工具能查看的,比如 cat 就可以,还有就是 less 也是可以的,用 -R 选项即可:<br /> <br /> -R or --RAW-CONTROL-CHARS<br /> Like -r, but only ANSI "color
2010-10-12 11:08:00
1074
原创 在 Windows 上通过 SSH 协议挂载远程文件系统
linux 用户应该都知道 fuse 和 sshfs 这两个东西,fuse 方便以用户模式开发文件系统,而 sshfs 则是其应用,用来把远程的 ssh 主机 mount 到本地文件系统。不要只羡慕 Linux 用户,Windows 用户也有福音了,那就是Dokan 及其SSHFS。http://dokan-dev.net/en/download/还有一个类似的商业软件,叫 ExpanDrive,http://www.expandrive.com/windows/,感觉更好用一些。使用 sshfs 最大的好
2010-10-09 16:21:00
3080
原创 用 sscanf 解析字符串时结尾的判断
常用 sscanf 解析字符串,处理错误也很简单:sscanf 会返回实际解析并赋值了的域的个数,判断一下是否和期望的一致即可。今天却遭遇一个解析地址的 bug,是由于地址本应该是“127.0.0.1:30000”被写成 “127.0.0.1:30000:127.0.0.1:30000”,原来用 sscanf 解析,判断结果等于5就认为正确,却没有判断额外的字符。修正: bool Assign(const char* src) { unsigned int b1, b2,
2010-07-31 18:49:00
3949
原创 用 proxychains 做透明代理
有时候需要连接某机器,但是直接连被屏蔽了,虽然可以用代理来搞定一些应用程序,但是很多程序不支持代理,或者只支持某些类型的代理,这时候就可以试一试 proxychains 这个软件了。比如:svn 只支持 HTTP 代理,不支持 socks4 代理,svn+ssh 方式也挺麻烦的,可以用一个 socks 转 HTTP 代理软件的,需要在 ~/.subversion/servers 利配置,用 proxychains 这个东西就更方便。proxychains 用起来就像 time, strace, ccache
2010-07-29 22:02:00
9916
原创 万恶的夏令时
<br />帮人调试一段代码,及其慢的代码,经调试发现是因为这个没有初始化造成的。<br />这个成员成员对性能影响极大,设置与不设置,性能差了一万倍。设置为 >0 的值时,会多做相当多的额外的复杂的操作。<br />万恶的夏令时。想节约能源,调整一下作息时间就是了,居然调整时间,这种做法跟我以前怕迟到把表拨快5分钟一样山寨。
2010-07-29 20:15:00
625
原创 服务器程序不要用 select 函数,可能会因越界而崩溃
<br />select 效率问题大家都知道,但是 select 正确性问题,很少有人讨论,特地点出来。<br />linux 下 fd_set 是个 1024 位的位图,每个位代表一个 fd 的值,这也是效率低的原因。<br />性能问题且不提,正确性问题则更值得重视。<br /><br />因为这是一个 1024 位的位图,因此当进程内的 fd 值 >= 1024 时,就会越界,可能会造成崩溃。对于服务器程序,fd >= 1024 很容易达到,只要连接数 + 打开的文件数足够大即
2010-07-23 00:55:00
1287
原创 让 flock 支持多个命令外部和内部命令的方法
让 flock 支持多个命令外部和内部命令的方法flock 是个外部,只支持外部命令,且不支持多个命令。这样就可以了# 把要执行的命令序列写成函数$ function xxxx() { sleep 3; echo xxxx; }# 导出给子进程$ export -f xxxx# OK 了$ flock a.cpp /bin/bash /dev/stdin 类似的方法可以推广到其他能执行命令的外部命令,比如 /usr/bin/time
2010-07-01 12:39:00
684
原创 实测多线程并发对随机读取的性能提升
<br />机器是4core, 单cpu,文件大小 15GiB,分成 N 个线程共随机读取一万次,SUSE10, Linux 2.6.16 内核<br />初始机器负载基本为空,线程个数与耗时的关系如下:<br /><br />线程个数 耗时<br />0 31.3s<br />1 31.3s<br />2 25.5s<br />4 20.2s<br />8 16.5s<br />12 15.0
2010-07-01 12:38:00
608
原创 自动设置 vim 的终端编码
<br />vim 用 termencoding 选项控制输出时的编码,这个选项默认为空,也就是不进行转换,<br />这导致我在 GB 编码的终端下打开 UTF-8 文件,虽然能识别出来,显示却是乱码。<br />设置终端编码当然可以,不过还是要相应设置 locale,比较麻烦。<br /><br />通常终端编码和 LOCALE 的设置一致,因此可以借用一下这个设置:<br /><br />let &termencoding = substitute($LC_ALL, "[a-zA-Z_
2010-07-01 12:33:00
730
原创 检查 Linux 下线程库的类型
linux 下有 linuxthreads 和 NPTL,nptl 比 linuxthreads 先进,目前新内核都支持 ntpl,相应的 glibc 也支持,遇到老的机器,用的还是 linuxthreads,虽然二者二进制兼容,但是某些细节上还是不同,问题现实存在,无奈也得解决。方法是用 confstr 来读取系统的配置信息:#include static bool CheckNptl(){ char buf[32]; confstr(_CS_GNU_LIBPTHREAD_VERSIO
2010-07-01 12:30:00
1069
原创 gcc 下获得程序名
Windows 上我们可以用 GetMuduleName 获得可执行文件的名字。Linux 下应该是 /proc/self/exe,如果只需要获得大概的名字用作帮助信息和诊断报告等,可以用 program_invocation_name 或者 program_invocation_short_name 。program_invocation_name 是进程被命令行启动时调用的名字,也就是 argv[0]。program_invocation_short_name 是program_in
2010-07-01 12:21:00
2764
原创 写了个 C++ 名字的 demangle 函数
<br />当然不是自己解码的,不过有神人这么做:<br />http://hi.baidu.com/avengine/blog/item/9b7147a94c78c4fc1e17a2f7.html<br /><br />还有这个<br />http://sourceforge.net/projects/php-ms-demangle/<br />是抄的 wine 的。<br /><br />搞这个是为了解决 gcc typeinfo::name 返回的不是原始名字的问题。<br /><
2010-06-29 14:06:00
1166
1
原创 用猥琐的方式解决了 glibc 版本兼容
<br />2.6内核下编译的程序,放到2.4内核下运行不了。找不到 __stack_chk_fail@@GLIBC_2.4<br />因为老机器上的 glibc 版本是 2.3.4,于是猥琐地解决了这个问题:<br /><br />extern "C" void dummp_stack_chk_fail(){}<br />__asm__(".symver dummp_stack_chk_fail, __stack_chk_fail@@GLIBC_2.4");<br />这样
2010-06-29 14:04:00
2095
原创 用 LD_PRELOAD 挽救被误删的 libc.so.6
用 LD_PRELOAD 挽救被误删的 libc.so.6libc.so.6 的符号链接被同事误删,。libc.so.6,不仅包含了普通的 C 运行库,还包含了系统调用的封装。就像 Windows 系统上的 kernel32.dll 一样重要。被误删后,几乎所有新的进程都起不来,因为几乎所有的程序都依赖 libc.so.6。因此 scp, cz, cp, ln 统统不管用。用写一个这样的文件或许有效。$ cat /usr/lib/libc.so/* GNU ld script U
2010-06-29 13:56:00
2366
原创 通过使用类型库提高VB调用DLL函数的性能
本文始发于水木清华BBS(smth.org),转载请保留有关信息,谢谢! 通过使用类型库提高VB调用DLL函数的性能RoachCock@smth mailto:chen3feng@163.com, chen3fengx@163.com, chen3fengx@hotmail.com VB虽然是个很好玩的东西,但是自身功能有限,限制了VB在某些方面的应用. MS提供了两种两种方式来增
2003-01-16 08:53:00
2033
原创 利用动态创建自动化接口实现VB的函数指针调用
发信人: RoachCock (chen3feng), 信区: MicrosoftTRD 标 题: 我的 VB的函数指针调用 发信站: BBS 水木清华站 (Fri Jan 3 14:54:25 2003), 转信 本文首发于水木清华BBS MicrosoftTRD版,转载请保留有关信息 作者chen3feng(RoachCock@smth.org) email: chen3feng@
2003-01-06 10:01:00
2337
原创 定长字符串模板类
本文始发于水木清华BBS,转载请保留作者信息,谢谢Auther: chen3feng (RoachCock@smth)email: chen3feng@163.com mailto:chen3fengx@163.com chen3feng@hotmail.com 发信人: RoachCock (chen3feng), 信区: CPlusPlus 标 题: [代码]定长字符串模板
2002-11-02 00:06:00
5108
原创 cfc::array,一个多维数组类
发信人: RoachCock (chen3feng), 信区: Programming 标 题: cfc::array,一个多维数组类 发信站: BBS 水木清华站 (Wed May 29 10:46:42 2002) cfc::array boost提供了boost::array,但是那只是一维的数组,我实现的这个支持一维,二维和三 维数组,三维以上的没有支持,我想你大概也不大会用到吧
2002-10-08 09:22:00
1348
原创 在VBS中使用事件
发信人: RoachCock (chen3feng), 信区: Programming 标 题: 在VBS中使用事件 发信站: BBS 水木清华站 (Thu Jun 13 18:55:43 2002) VBS是一种功能强大的语言,这个从各种宏病毒的泛滥可以看得出,VBS功能强大不是语言 本身,而是它具有调用自动化COM组件的能力,而且,在VBS中还可以使用事件 VBS提供了一个GetRef函
2002-09-30 10:37:00
2683
原创 .net中的 delegate的标准C++模拟
发信人: RoachCock (穷鬼), 信区: Programming 标 题: .net中的 delegate的标准C++模拟 发信站: BBS 水木清华站 (Mon Mar 18 21:11:30 2002) 用模板的偏特化和成员模板,重载函数调用运算符成功的实现了delegate,既可以绑定普通函数,也可以绑定对象及其成员函数在cygnuwin下编译通过, 还不支持一个delegat
2002-04-01 09:29:00
1064
Searching for Build Debt: Experiences Managing Technical Debt at Google
2018-07-11
Capability Myths Demolished
2018-07-11
Move Fast and Break Things: Engineering at Facebook
2018-06-02
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人