关于微博话题组软件构建与发布工程的分享

针对于“发布工程(Release Engineer)”,也许大家并不陌生。如维基百科中介绍Release engineering, frequently abbreviated as RE or as the clipped compound Releng, is a sub-discipline in software engineering concerned with the compilation, assembly, and delivery of source code into finished products or other software components. Associated with the software release life cycle, it was said by Boris Debic of Google Inc.对于一个有着庞大开发团队... Read More

高并发、分布式数据库场景下需要注意的 UPDATE SQL 写法

业务模块超级话题签到积分具体场景更新签到积分行为表integration_record - 每次产生积分行为的记录表。即每当用户产生积分行为(如:在超级话题内进行签到、转发和回复等行为),就会增加一条 integration_record 表的记录。表明该用户在该超级话题下通过哪些行为产生了多少积分增量。integration - 每个用户的总积分表。即在每次写入一条 integration_record 记录后,会将积分增量累计加入到该表的总积分字段中。表明目前为止,该用户在该超级话题下通过积分行为一共获取的积分总数。表的细节就不给出了(也没必要)。这两张表都以话题 ID(topic_id)和用户 ID(uid_id)进行联合索引。具体问题在某些情况下,某个用户所在某个话题下的所有 integration_record 记录的积分总和小于该用户在该话题下的 integration 表记录... Read More

Powerline 插件安装之 Vim 篇(Mac)

Powerline 是 Vim 的状态栏插件,同时也提供状态栏和提示窗口功能给其他一些应用,包括 zsh,bash,Tmux,IPython,Awesome,i3 和 Qtile。这篇文字只谈 Vim 上的安装。环境与工具系统:OS X EI Capitan version 10.11.5终端:TerminalVim :v7.4.1914Xcode: 7.3.1(Xcode 的版本过低会影响一些依赖库的安装,我在 6.5 的情况下安装一些软件会出些问题,避免麻烦升级下)Python:3.5.源码python: https://www.python.org/ftp/python/3.5.1/Python-3.5.1.tar.xvim: https://github.com/vim/vim/archive/v7.4.1949.tar.g安装Pytho./configure --pre... Read More

Vim 使用技巧之只有用了才会懂“最好的 IDE 是 Vim”

半年前,我还在诸如 Eclipse、ZendStudio 等 IDE 里徘徊。然而,这半年对于 Vim 的使用,不得不说,Vim 的效率是更高的。代价是需要时间来自定义并熟悉自己的 Vim。这里,只写下迄今为止对于 Vim + Tmux 的使用感受,以及展示 Vim 的使用技巧(至于如何入门 Vim 请自行 Google)。为什么要用 Vim?随时随地,摆脱环境的束缚,你只需要一个终端(Terminal)。你不必在键盘和鼠标之前来回切换(我压根就觉得鼠标是不服务于“编码工作”的产品),所有的操作都在指尖下的按键。高程度的自定义,所以不要来拷贝他人的配置文件,很伤。其他 IDE 中的功能在 Vim 里基本能找到替代品,幸福指数飙升耳听十遍,不如亲眼一见winmanager, ftaglist, neardtree, bufexplorer和tmux等的应用ctrlp的应用Vim 使用技巧看... Read More

关于“如何开发 PHP 扩展”的学习小结

近期,工作上的业务并不是很忙。做了大半年的业务逻辑,尽管在 PHP 编码习惯和技巧上有所进步,初步熟悉了在高并发下 Redis 和 Memcache 缓存的使用和注意事项。但,应该借此闲暇时间探索下 PHP 底层的一些原理。这样,才是会有质的提升,写出更好的代码。正如那句话“PHP 取得成功的一个主要原因之一是她拥有大量的可用扩展”,那就从 PHP 扩展入手了解下。在此之前,大家肯定都了解“PHP 是 C 写的”。于是打开了 PHP 的源码,列出跟目录列表如下图PHP(5.6.4)跟目录列表看到了熟悉的以后缀 .c 结尾的源文件。如图,有个名为“Zend”的文件夹很重要,这个就是 PHP 的核心。于是在网上搜到了两个若干 PHP 扩展的教程http://www.laruence.com/2009/04/28/719.htmlhttp://www.walu.cc/phpboo起初,耐心... Read More

关于 rsync 工具的安装、配置与进行文件同步与备份的使用流程

安装linux yum install rsyn配置编辑文件vim /etc/xinetd.d/rsyn内容如下# default: of# description: The rsync server is a good addition to an ftp server, as it # allows crc checksumming etc.service rsyndisable = nflags = IPvsocket_type = streawait = nuser = rooserver = /usr/bin/rsynserver_args = --daemolog_on_failure += USERI创建配置文件touch /etc/rsyncd.con... Read More

[开发中] Java 实现仿 QQ 界面多人聊天客户端程序

记得几年前,在校期间写过一个聊天程序,也发布了一篇博客在 csdn 上。然而,近期有好多网友加我 QQ 索要源码,可惜的是源码早已消失在网络中了。所以,借此闲暇时间重写一次 Java 多人聊天客户端程序,以供爱好者学习交流之用。如下是每日程序的进展日志。项目源码客户端 ->github.com/genialx/Ch服务端 ->github.com/genialx/ChatXServe前面的话对于 Java,笔者算是新手,没有用 Java 做过实际的项目。所以,在做这个项目的过程中,进行了大量的调研工作,有很多问题都无法短时间内解决。固然,项目中的代码是很糟糕的。不过,有时间会进行深入的学习来优化项目甚至重构代码。进展日志2016.02.1项目不是起于今日,目前已经完成了客户端的登陆界面,正在着手完善朋友列表的界面。登陆界面朋友列表遇到的一些不是问题的问题...容器组件半透明的问题... Read More

GO 语言实现的多人 WEB 聊天室

前段时间的工作,大部分都在“热门微博推荐流”的性能优化上。前期通过源码分析对源码的逻辑进行了优化,其中可优化的地方大多都是落在了 Redis 的多次调用、外部接口的调用以及自身过多的 IO 操作。近期,提出利用 GO 语言做一层 RPC 服务,将较数据层进行封装。所以,为了尽快熟悉并上手 GO,先写个小程序熟悉熟悉程序名称:聊天室源码地址:http://github.com/genialx/gurin截图程序中固然存在不合理的地方,仅供参考 Read More

PHP 数组函数 array_diff()、array_merge() 与数组操作符 +

array_diff() 函数是以值为判断依据,比如<?use Libs\Helper;include '../vendor/autoload.php';$a = array(0 => '1760', 1 => '1199', 2 => '4188', 3 => '1552', 4 => '6388',);$b = array(1760, 9999, '8999');Helper::p(array_diff($a, $b));Helper::p(array_diff($b, $a));输出Arra[1] => 1[2] => 4[3] => 1[4] => 6Arra[1] => 9[2] => 8同样,array_merge 函数也是以值为判断依据进行合并数组,如下<?use Libs\Helper;include '../ven... Read More

利用 xhprof(PHP)扩展进行 WEB 性能分析

最近工作有些小忙,经常加班,偶尔还会通宵。但最终热门微博“混合流”顺利地全量上线了。可是,从性能角度来说,还是有不少的提升空间的。下面说下利用 xhprof 来进行 WEB 性能的分析。安装 xhprof 扩展官方的文档胜过一切 => http://php.net/xhpro注意:如果想利用 xhprof 绘图,那么需要将系统默认禁用函数打开。;disable_functions = phpinfo,system,exec,shell_exec,passthru,proc_close,show_sourc部署xhprof的运行环境经过上面的配置,在你跑过项目后,xhprof 会输出一份报告文件。不过,这份文件的内容是被序列化的数组。所以,需要搭建一个能够读取该数据文件的 WEB 环境。这里给一份 xhprof 环境的代码:http://pan.baidu.com/s/1bnLvmr之后通过访问 xhprof 的环境,你会看到如下报告界面。... Read More