我的需求很简单, diff 某个版本和我当前的代码, 正常应该是
svn diff url_xxx .(这样操作方式和diff命令一致)
url_xxx 就是那个版本的路径, 点号”.”就是当前目录, 没想到竟然不行! 太弱智的东西了! 真正的用法是:
svn diff –new url_xxx –old .(这样不对, 因为顺序弄反了!)
正确的是
svn diff –old url_xxx –new .
svn 从来就是这么弱智, 比如这一篇文章: 请提供Fuck-All选项
Written by ideawu
at 2010-09-09 13:35:12
最近在设计一种网络服务器架构, 最重要的一点是把耗时操作委托给工作进程(或者线程)来做, 所以考察一下 fastcgi. 大概看了下 lighttpd 的 mod_fastcgi 的源码, 没想到立即被卡住了. 根据我的想法, PHP 等 fastcgi 程序(php-cgi 进程)监听网络, 然后 mod_fastcgi 只需要 connect 这些进程即可, 奇怪的是, 我竟然看到了 listen! -
fcgi_spawn_connection() 函数:
fcgi_fd = socket(socket_type, SOCK_STREAM, 0);
if (-1 == connect(fcgi_fd, fcgi_addr, servlen)) {
close(fcgi_fd);
fcgi_fd = socket(socket_type, SOCK_STREAM, 0);
/* create socket */
bind(fcgi_fd, fcgi_addr, servlen);
listen(fcgi_fd, 1024);
switch ((child = fork())) {
case 0: {
// child process
if(fcgi_fd != FCGI_LISTENSOCK_FILENO) {
close(FCGI_LISTENSOCK_FILENO);
dup2(fcgi_fd, FCGI_LISTENSOCK_FILENO);
close(fcgi_fd);
}
/* exec the cgi */
execve(arg.ptr[0], arg.ptr, env.ptr);
exit(errno);
}
}
我很奇怪, mod_fastcgi 为什么要监听网络连接? 谁会连接它? 问了同事, 同事说可能是 fastcgi 进程要连接它, 可问题是 fastcgi 进程怎么知道连接什么地方, 更不用说, fastcgi 协议里没有提到要 fastcgi 进程主动连接 Web Server 一说.
Continue reading »
Written by ideawu
at 2010-08-29 18:00:51
对于高负载的网络服务器, 瓶颈几乎总是在等待 IO, 而 CPU 的计算能力往往不是最先遇到的问题. 你的服务器程序, 接收客户端的请求, 可能还要连接另一台网络服务器, 一起合作处理客户端的请求. 很多情况下, 你无法把客户端的连接以及与另一台服务器的连接统一处理, 不可避免地要出现等待. 这时, 只能使用多进程或者多线程.
Master-Workers(管理者-工作者)模式是处理这种情况的主要方式, 只要有 IO 等待或者其它耗时的操作, 都交互若干个工作者之一处理, 这样, 后续的请求不会被阻塞, 从而实现高负载.
目录:
下文中有时用”进程”一词同时指代进程和线程, 它们的区别主要考虑的是通信方式.
Continue reading »
Written by ideawu
at 2010-08-22 16:03:57
TCP 协议是大量重要的网络和通讯的思想和技术的集合体. 这些思想和技术被应用在 TCP 身上, 另一方面, 学习 TCP 可以了解这些思想和技术. 通讯的思想和技术不仅仅可以应用狭义的数据通讯上, 也可以应用在广义的信息通讯上, 后者一般可以理解为应用层的交互协议, 例如即时通讯(IM)的聊天协议.
首先, TCP 协议是一种可靠的传输协议. 这种可靠性可以从两方面理解: 1. TCP 保证数据的有序性和无差错; 2. TCP 尽最大努力确保数据被接收.
有序和无差错可能比较好理解, 但”最大努力”则和我们一般理解的”可靠”有较大差别. 首先, TCP 尽最大努力传输数据, 一旦发送方无法保证数据传输到接收方, 它将通过断开连接(使连接失效)来声明这一点. 其次, TCP 可以明确地告诉一个数据分段已经被对方接收, 但无法准确的断定未被确认的数据没有被对方接收, 也就是说, 数据可能没有被对方接收, 也能已经被对方接收. 这种对传输失败的不确定性, 显然是对可靠性的一个重大打击. “两军队问题(Two Army Problem)“说明了这一点, 事实上, 我们无法判断一个确认(ACK)是丢失了还是没有发出.
Continue reading »
Written by ideawu
at 2010-07-07 12:16:47
我在 2006 年的时候, 曾经提出过用 HTML/CSS 来做桌面应用程序的界面的想法, 但更早之前(2001年), 著名游戏开发者, 网易的游戏工程师云风便在其公司的”大话西游”网站游戏中应用了嵌入浏览器做界面的方法.
Windows 控制面板里的”添加/删除应用程序”应该是较早的利用浏览器来做程序界面的一个程序, 当然, 微软肯定还有更早的程序. 后来的 Google Talk, 又是一个经典的利用浏览器做界面的一个软件.
Continue reading »
Written by ideawu
at 2010-07-06 10:34:22
有些程序员可能过于追求 if-else 对代码优化的效果, 却忽略了其带来的对代码清晰度的反作用. 假设这样一个功能, 根据用户的等级显示不同的页面. 如果用户的等级大于等于 5, 他能看到的东西和普通用户(等级小于5)不同, 代码如下:
echo "欢迎您, ";
if(level > 5){
echo "高级用户!";
}else{
echo "用户!"
}
// ... 大段代码
echo '<a href="#">个人信息</a>';
if(level > 5){
echo "审核文章!";
}else{
echo "发表文章!"
}
echo "...";
Continue reading »
Written by ideawu
at 2010-06-22 10:52:44
|
|
Recent Comments