线程池典型错误一例

撸了个线程池设施. 经一位很厉害的前辈指点, 有不少可以优化的地方 犯傻逼了: sem_post(&sem); return lockfree_queue.push(v); 然后在 pop 那里, 先 sem_wait() 一看, 哎! 有东西, 于是到 queue 里取, 一看, 哎! 空的! 于是线程休眠, 继续等待信号. 此时主线程姗姗来迟, 终于把 v push 到 queue 里. 客户端阻在那儿, 直到海枯石烂, 天地为之变色.

svn 作死心得

svn 不是分布式版本控制系统, 这个不是分布式很有讲究, 一个显著的表现是, commit 直接就发到服务器上了, 不会先在本地 ci 一下, 等 push 的时候再传到服务器( git way ). 如何让一个新的空分支 rebase 到另一个分支上? switch, svn switch, 把当前的 working copy 设置成另一个分支. 就是, 当前是 co 的分支 A, 但通过 switch, 可以让当前的代码转成分支 B merge, 把某个分支的代码 merge 到当前空分支上. 推荐使用 server url merge.

流水帐

重装系统的诱因是 mobaXterm 不尽如人意。 再说公司电脑不可能用来玩游戏,用 windows 就没啥诱惑力了。 早上研究了半天从 mobile device (更准确地说,我华为手机) 安装 linux,发现还是有点麻烦的,于是弃了。借了个 U 盘装 fedora. 1. 阿里旺旺没有 fedora 版本的,有一个从 deb 包 ebuild 过来的,但未知原因报错 file / from install of nixnote-1.6-2.x86_64 conflicts with file from package filesystem-3.2-19.fc20.x86_64 file /usr/bin from install of nixnote-1.6-2.x86_64 conflicts with file from package filesystem-3.2-19.fc20.x86_64 类似这种的。 于是强制解开,手动拷贝到相应目录下。 2. evernote 没有 linux 版本的。但 nevernote […]

cygwin 下的 ssh multiplexing

结论是不能用,蛤蛤蛤 某司最近猛抓安全,登陆 ssh 都要输动态密码了。 坑爹嘛。 大家纷纷想办法登陆时只输一次密码,后续就不需要再输入了。其中的代表有 securecrt 的 clone session 和 openssh 的 multiplexing 而功能很好很强大的 mobaXterm 竟然直接没有这个选项! 我师傅期待证明 securecrt 比 mobaXterm 好用已久,以往常难以得逞,这次难道他要大功告成? 于是搜到 multiplexing. 用了一下,竟然会 mux_client_request_session: send fds failed 于是网上搜啊搜啊搜,发现信息如下: https://sourceware.org/ml/cygwin/2005-11/msg00737.html https://sourceware.org/ml/cygwin/2005-10/msg00672.html https://cygwin.com/ml/cygwin/2010-08/msg00088.html https://github.com/ansible/ansible/issues/6363 意思是,Cygwin still doesn’t support descriptor passing via sendmsg/recvmsg. 好了问题来了:现在已知 mobaXterm is based on cygwin,请问mobaXterm 是否支持 duplicate session / multiplexing ?

ls after every cd

20150109 update: 因为有时候主目录下东西特别多, cd 进去很慌, 会 ls 出一大堆东西, 所以想法子做了限制, 只有文件数量少于 100 的时候 ls, 数量太多就默认不 ls 了.所以 改正如下: builtin cd “$*” && (( $(ls -l | wc -l) < 100 )) && ls 想了想标题实在不知所云,需求很简单,在 cd 之后自动打个 ls, 仅此而已 function cd() { builtin cd “$*” && (( $(ls -l | wc -l) < 100 )) && ls […]