流水帐

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

预处理元编程笔记(生肉)

BOOL(x) 怎么做? 目标:0->0, 其他 -> 1. 方法: #define BOOL(x) BOOL_ ## x 此时, #define BOOL_0 0 #define BOOL_1 1 #define BOOL_2 2 … #if(condition, t, f) => if(bool(condition), t, f) => if_1(t, f) t, if_0(t, f) f 注意这个:https://gcc.gnu.org/onlinedocs/cpp/Variadic-Macros.html gcc 和 MSVC 支持。其他编译器普遍不支持 分治: #define MACRO_GET_1(str, i) (sizeof(str) > (i) ? str[(i)] : 0) #define MACRO_GET_4(str, […]

std::bind 源码阅读(未加工的生肉)

template<class _Tp> struct __is_bind_expression : public false_type {}; template<class _Tp> struct _LIBCPP_TYPE_VIS_ONLY is_bind_expression : public __is_bind_expression<typename remove_cv<_Tp>::type > {}; template<class _Tp> struct __is_placeholder : public integral_constant< int, 0> {}; template<class _Tp> struct _LIBCPP_TYPE_VIS_ONLY is_placeholder : public __is_placeholder<typename remove_cv<_Tp>::type > {}; 首先是 is_bind_expression 和 is_placeholder. 从这里看 is_bind_expression 会把 cv qualifier 去掉然后返回 false_type. 我猜测会有其他的 is_bind_expression 模板在其他地方定义。 namespace […]

functional 标准及 libcxx 实现. Part1 – 算数函数及基础设施

前言。。。 因为实在太长所以还是分几部分写吧。重中之重当然是 std::bind. std::function 其实实现不很难,就是体积大。 这篇主要说的是基础设施,包括最基本的定义和到处被用到的函数。 另因为 形如 template <Args…> struct {}; 的 和 形如 Ret(Args…) 的,前者是元编程里的元函数,后者是通常说法里的函数,下面可能统统会被叫做 函数,不作区分。 下面会从 标准对 functional 的定义,clang 对 functional 的实现 两方面做阐述。 大图片: functional 里主要包括两大主要设施以及两个小块。 两大设施:std::bind 和 std::function. 两小块:各种 hash 以及各种运算符的函数格式(比如 + 对应 plus 什么的)。与之相关的是 deprecated 的 binary_function 和 unary_function. 。 在 clang 里,functional 主要包含了 type_traits 和 __functional_base 两个头文件,阅读源码的时候也需要重点关注。另用到了 tuple 的一些设施。 […]