scope_exit 的 11 实现

#ifndef SCOPE_EXIT_HPP #define SCOPE_EXIT_HPP #include “pp_cat.h” #include <functional> #define SCOPE_EXIT_CLASSNAME(id) PP_CAT(__unique_classname__, id) #define SCOPE_EXIT_INSTANCENAME(id) PP_CAT(__unique_instance__, id) #define SCOPE_EXIT(…) struct SCOPE_EXIT_CLASSNAME(__LINE__) { typedef std::function<void(void)> fun; fun f_; SCOPE_EXIT_CLASSNAME(__LINE__) (fun f) :f_(f) { } ~SCOPE_EXIT_CLASSNAME(__LINE__) () { f_(); } } SCOPE_EXIT_INSTANCENAME(__LINE__) ([__VA_ARGS__]() #define SCOPE_EXIT_END ); #endif // SCOPE_EXIT_HPP 设计思路见 boost. 主要的方法是利用 析构函数, 在退出 scope 时自动执行代码. 1. 为了使 […]

why is neo4j so slow???!!!!

so that if some one – usually angered by a simple, but endless Cypher query, would find a proper webpage where its owner was expressing the same feeling as him.

scanf 相关

好像集训队的学长们对这个都很熟. 我啥都不懂在乱用土死了. 集合匹配用 [] 逆向匹配用 [^] 比方 scanf(“%[ab,]”, str); // 1 scanf(“%[^;]”,str); // 2 1 匹配 所有ab和逗号.  “aabbb,ab,aaacasdsdef” 2. 匹配除了分号外的所有字符 “aaa;bbbbccc” 表示匹配但不赋值. scanf(“%[ab,]”); 然后 http://en.cppreference.com/w/cpp/types/integer 用法 “%” SCNd64 比如. 貌似是 C99 的标准…看了下源码其实就是各种平台相关 define… 嗯差不多就这样 简直太土了…

流水帐

重装系统的诱因是 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 […]

libcxx 的 shared_ptr 实现分析

##以 libcxx 为对象的 shared_ptr 实现分析。## 注意:gcc 用的是 libstdc++ , 这里的 libcxx 是 llvm 的项目. 两者的 shared_ptr 实现相似但不相同 一个 shared_ptr/weak_ptr 存放两个指针,一个是被 manage 的 Tp* ptr, 一个是管理块, cntrl. 所以一个 shared_ptr/weak_ptr 的 空间开销 = 2*sizeof pointer。待会再说 cntrl 的空间开销。 访问 ptr 的时间开销是 1,没有性能损失。 ptr 没什么好说,每一个 shared_ptr/weak_ptr 存一份。那么 cntrl 呢? 首先说 cntrl 干什么。 cntrl 块存 shared_count weak_count allocator deleter ptr […]

python 坑的记录

python 的字符编码问题 MySQL text, longtext MySQL charset MySqlDb 再出现 attribute error 可以试试到 site-package 的 cursors.py 下面随便加一句 print re … 虽然至今该 bug 成因不明。。。 itertools.product 不是笛卡尔积。。。因为对 empty 它会生成 (elem, None)… http://stackoverflow.com/questions/3154301/what-should-itertools-product-yield-when-supplied-an-empty-list 苦苦追寻遍历 list 两遍的方法… CPython implementation detail: In CPython, due to the Global Interpreter Lock, only one thread can execute Python code at once (even though certain […]

A Test

for you, for me and for her var f = function() {xxx;} a.each do |x| puts x end constexpr int value = true; std::vector<decltype(value)> v = {1, 2, 3, 4, 5}; for( auto each : v) { if (v&v-1) cout << v; } class some_c(Object): def __init__(self, f): for each in f: print each; yield […]