被人为割裂的中国互联网

原作者:申音

—– 正文 —–

我有两个朋友。

L的公司在上海,大半时间跑广东。他是华南某所不太知名的大学毕业的,小眼睛质朴男,多年以前还是个文学青年。哥们做手机网游的,我见他使过好几款手机, 但最贵的一个也不过1千多块钱。比起什么Web2.0、移动互联网的概念,他更关心珠三角的几千万农民工和城市边缘的大学生“蚁族”,怎么关心?在东莞的 夜宵摊上跟他们拼啤酒,在富士康厂区外网吧里刷夜,跟靠做他们生意开上宝马的便利店老板扯淡……

W猫在北京中关村。他从小就是个脑袋很大眼睛发亮的天才少年,数理化成绩很好,逻辑思维超强,英文和中文一般流利。在首都某著名大学毕业后,W 直接去美国名校拿了硕士,接着回国创业。我一直觉得,他是硅谷Geek们的中国版。诸如iPad之类的新技术玩意,我总能第一时间从他那儿找到。他也是国内把玩Facebook、Twitter、Groupon、Foursqure的人。啥叫互联网的未来,W做的网站就代表互联网的未来。 Read more…

Posted in: 乱语

现在的IM到底需要什么?

IM——即时通讯,用来为用户提供即时的,有状态的通讯沟通服务。其代表作是ICQ,国内则是QQ。

在很长的一段时间内,他占领了上网人大部分在网时间。一直以来,我们都在使用IM来聊天。但问题是IM并不只是一个聊天软件,他设计的初衷是为了解决即时通讯的需求。

对于不同人群,即时通讯的定义又不同。

对于一个开发人员来说,即时通讯可能是即时分享他的代码,高亮,运行结果,调试信息等,因为这些信息对于通讯的接收者可能是有用的。

对于平面设计人员来说,即时通讯可能是即时分享他的设计图,人物设定,图片细节等。

对于3D设计人员来说,可能就是全方位的展示他的3D建模或渲染后的3D效果

个人认为即时通讯要做的不只是服务,而是一个平台。搭建一个成熟的,健壮的平台。为其后到来的平台扩展服务开发者做好准备。

IM只有像FF那样拥有五花八门的扩展服务(比如插件,但不局限于插件)以后才会出现第二次的用户井喷时期

Posted in: 乱语

解释一下为何有些朋友的$_ENV为空

PHP中的$_ENV记载了一些系统环境变量(因为牵扯到实际的操作系统,所以不可能给出$_ENV的完整列表)。

但有些朋友的$_ENV是空的,可能是原因是:

你的php.ini的variables_order值为"GPCS",也就是说系统在定义PHP预定义变量时的顺序是 GET,POST,COOKIES,SERVER,没有定义Environment(E),你可以修改php.ini文件的 variables_order值为你想要的顺序,如:"EGPCS"。这时,$_ENV的值就可以取得了

EGPCS值(EGPCS是Environment、Get、Post、Cookies、Server的缩写 — 这是PHP中外部变量来源的全部范围)

本文为本人数年前发表于本人CSDN BLOG中,现移到此。

Posted in: PHP

strtr()和str_replace()的区别

strtr和str_replace同样都是字符替换函数,以前没怎么用过strtr,今天看到一些朋友在BBS里问strtr和 str_replace的区别,有些人说是效率不同,但鄙人感觉如果只是效率不同的话,那么就没有必要让那个效率低的函数存在了,他们到底是哪里有区别呢?

鄙人亲自实验了一把来验证他们的不同:

strtr:他的效率确实是比str_replace快,而且好象还是4到5倍呢,他的作用与其说是字符替换,还不如说是字符串改写。

他有3个参数:

第一个参数是要被改写的字符串源。

第二个参数是定位改写从那里开始(这个参数只是确定改写开始的地方,而不是要被改写的字符,也就是说这里的字符串长度与最终被改写多少个字符无关)。

第三个参数是被改写成的内容(最终要被改掉多少个字符,与他有关)。

例子
echo strtr("abcdeabcf","abc","55″); 最终显示55cde55cf
echo strtr("abcdeabcf","abc","55555″);最终显示555de555f

str_replace:这个函数相信大家都已经无比了解了。str_replace(要被替换的字符(可以是array),要替换成的字符(可以是array),字符串源(可以是array)[,$替换次数(可选的变量或引用)])

本文为本人数年前发表于本人CSDN BLOG中,现移到此。

Posted in: PHP

别让Lighttpd的PHP_FCGI_MAX_REQUESTS拖跨了你的服务器

Lighttpd的配置文件中有一项叫做“PHP_FCGI_MAX_REQUESTS”,他在fastcgi.server的php-cgi地址选项的bin-environment下。他定义了当一个fastcgi子进程在工作多少次后被系统杀死并让新生成的子进程顶替他的工作。
文章来源:http://blog.zenw.org/dont_let_lighttpd_max_requests_kill_server
他的意义是为了防止当一个或多个fastcgi子进程效率降低后拖死整个系统。

但问题出现了,子进程在工作一段时间以后其占用的内存可能将会是他刚被生成时的数十倍,这样会使你为了提高并发而开启的数百到数千个fastcgi进程变的臃肿,并且死死的占满你的内存。

所以我建议根据具体的硬件情况合理的设置这个数值,甚至可以直接设置为1,让每次工作的子进程都是新生的。具体的数值就需要在不断观察服务器状况的情况下慢慢寻找并调节,但这样的代价是生成一个进程需要消耗系统时间。

题外话:

根据实验,个人认为Lighttpd在管理fastcgi子进程工作时不是请求均衡的,也就是说会出现某些fastcgi子进程已经工作了数百次,但另外一些却可能从来也没有工作过,这样下来无法让每个进程均衡的占用内存。由于长期工作导致占用内存不断增加,用top命令查看其RES指数可能会超过数十M左右。这样的好处是尽早让那些臃肿的子进程完成他们的工作,让新的代替他们。但负面的影响是那些长期不活动的子进程浪费系统资源,但如果减少进程数量又会出现无法负担高并发的情况。

Posted in: Lighttpd

Lighttpd 真正的防盗链设置(简易版)

今天,发现网上流传着一种错误的(至少我没有一次实验成功)对Lighttpd 防盗链的设置方法,居然这种方法还被大大小小几十家网站(或BLOG)“原创”了。为了不误人子弟,就不贴出来了。只把正确的分享出来。

#以下为正确的配置方法
#写在LIGHTTPD配置文件的全局位置
$HTTP["referer"] !~ "^(http://.*(zenw\.org))"{
    $HTTP["url"] =~ "\.(jpg|jpeg|png|gif|rar|zip|mp3)$" {
        url.redirect = (".*" => "http://www.google.com/intl/en_ALL/images/srpr/logo1w.png")
    }
}

Posted in: Lighttpd, Linux

新的开始

今天新买了个VPS,并且建立了这个新的blog,这里的宗旨是反对采集。发表有意义的文章

Posted in: 未分類