搭gitlab的那些坑

2014-06-13

搭gitlab的那些坑 @招牌疯子 手动搭建gitlab的复杂程度想必大家也有所耳闻,我也曾有过在测试机上搭建成功的经验,后来想放到线上机器给团队用,搭建之初,综合利弊,选择了最简单方便的bitnami-gitlab一键安装包,本以为这样就可以轻松加愉悦了,事实证明我还是图样图森破。 首先,我厂的线上机器不允许非自然人账户通过ssh登陆(想ssh登陆服务器的帐号必须通过微盾认证),你新建的git帐号会在系统定期检查时被清理掉,OP给的建议是申请一个假账户绑定一个微盾,作为一个假人存在,但弊端是我得随身携带两个微盾,蛋疼。 于是想别的办法,发现一个线上服务器清理账户的bug

内存拷贝memcpy()与vmsplice()性能对比

2014-06-13

内存拷贝memcpy()与vmsplice()性能对比 @招牌疯子 综述 在上一篇文章《进程间大数据拷贝方法调研》中介绍和对比了三种A进程读取文件然后拷贝给B进程的方法,测试结果显示在涉及到内存与磁盘间的数据传输时,splice方法由于避免了内核缓冲区与用户缓冲区之间的多次数据拷贝,表现最好。但是由于这种对比限定在包含I/O读写,且进程不能对数据进行修改的特殊情景中,毕竟在实际情况下不太常见,理论意义大于实际意义。 那本文要探讨的情景,在实际编程过程中就十分常见了: A进程的内存中有一大块数据,要传递给B进程

进程间大数据拷贝方法调研

2014-06-13

进程间大数据拷贝方法调研 @招牌疯子 综述 多进程程序经常会遇到数据拷贝的需求,一般情况下的进程间通信可以认为是个传递消息的场景。在此场景中,原始数据和目标数据都存储于内存里,传递的消耗比较小,而且有大量成熟的消息库可以拿来使用,本文不再赘述。但是如果我们需要传递的是一个容量很大的数据,它们不能长期存储于内存中,就会涉及到从磁盘取出,然后传递给目标进程,目标进程再把数据发给磁盘或socket fd的情景。在这个情况下,由于多次数据复制和CPU状态的切换,会导致数据传输性能低下,严重制约整体服务的负载能力

GoAgentUI发布

2014-06-13

GoAgentUI发布 @招牌疯子 经过两个晚上的边学边做,GoAgentUI终于发布了,虽然是个小的不能再小的应用,但怎么说也是第一次写MAC和Linux下的GUI程序,还是挺有意思的。 软件功能很简单,如果你是goagent翻墙用户,并且跟我一样无法忍受每次开机都要打开一个terminal,切换到goagent的目录下运行python proxy.py,同时还要一直保持这个窗口开着的话,那么GoAgentUI将是你的最好选择。先上一个运行截图: 需要使用的同学请到项目主页下载最新版本的安装包,第一次运行时点击Open选择你的goagent目录下的proxy.py文件,再按一下Start就行了

手把手教你打造自己的ping工具

2014-06-13

手把手教你打造自己的ping工具 @招牌疯子 记得之前看到过一句话:什么是Geek,Geek就是当看到什么东西不顺手时,第一时间想到的是怎么把它改造到顺手好用。 其实事情是这样的,ping命令大家都用过,Linux下的ping命令本身很强大,但是有一点不太符合用户体验的是,它不会自动结束(哼我当然知道-c选项啊魂淡>_<平心而论这方面windows下的ping就好用一点),因为我们ping一个地址一般只是为了测试下网络是否通畅,每次都得多按一下ctrl+C说多不多,说少也不少,SO,正好前阵子在一本书上看到过ping的原理和实现

生成大文件的方法

2014-06-13

生成大文件的方法 @招牌疯子 今天群里讨论到生成大文件的问题,由于这种小技术经常会用到,所以记一下。 第一种是组内同学用到的fsutil file createnew命令,实际是操作的磁盘,划出一段空间标记成文件,看起来是生成了,其实只操作了文件头和文件尾,所以内容肯定是空。优点是速度很快;缺点是文件内容固定都是\0,而且只适用于FAT和NTFS等windows分区,附上一个例子: fsutil file