Updates from admin RSS Toggle Comment Threads | Keyboard Shortcuts

  • admin 5:39 pm on April 14, 2012 Permalink | Reply
    Tags: wordpress ipad ios   

    测试WordPress ios!! 

    用Wordpress IOS来管理博客真心是个好主意!

     
  • admin 12:35 am on December 5, 2011 Permalink | Reply
    Tags: c struct   

    C struct initialize 

    struct SMyOrder
    {
    int quantity;
    int price;
    };

    int main()
    {
    static const struct SMyOrder zero_a;
    struct SMyOrder a = zero_a;

    printf(“price=%d, quantity=%d \n”, a.price, a.quantity);

    return 0;
    }

     
  • admin 11:27 pm on December 1, 2011 Permalink | Reply
    Tags: linux c   

    发个带颜色的printf:
    enum zh_color_set {
    COLOR_BLACK = 30,
    COLOR_RED,
    COLOR_GREEN,
    COLOR_YELLOW,
    COLOR_BLUE,
    COLOR_MAGENTA,
    COLOR_CYAN,
    COLOR_WHITE
    };
    void zh_printf(int color, char *fmt, …)
    {
    va_list ap;
    printf(“%c[1;%d;40m”, 0x1B, color);

    va_start(ap, fmt);
    vprintf(fmt, ap);
    va_end(ap);

    printf(“%c[0m”, 0x1B);
    }

     
  • admin 11:39 pm on November 30, 2011 Permalink | Reply
    Tags: php linux fsockopen   

    phpddos应对
    最近新起一种udp flood的攻击形式,是利用php中的fsockopen函数往特定机器发送大量UDP包,耗费大量流量,直到网络瘫痪。
    php当前只支持用allow_url_fopen整个禁用/启用网络文件访问,而不支持更细粒度的控制。这里介绍一种源码patch的方式,对该类型的攻击做一些防范。

    1. 捕蛇打三、七寸
    在ext/standard/fsock.c中的php_fsockopen_stream函数中,加入如下代码:
    if (!strncasecmp(“udp://”, host, 6)) {
    php_error_docref(NULL TSRMLS_CC, E_ERROR, “Unsupported wrapper UDP”);
    RETURN_FALSE;
    }

    if (!strncasecmp(“tcp://”, host, 6)) {
    php_error_docref(NULL TSRMLS_CC, E_ERROR, “Unsupported wrapper TCP”);
    RETURN_FALSE;
    }

    2. 频率限制
    创建一个全局变量数组,给每个用户维护一个计数器,执行一次函数加一。
    fsock_counter[uid] ++;
    if (fsock_counter[uid] > 10) {
    php_error_docref(NULL TSRMLS_CC, E_ERROR, “Too many calls.”);
    RETURN_FALSE;
    }
    一个请求,禁止发送超过10次的网络请求!

     
  • admin 9:09 pm on November 30, 2011 Permalink | Reply
    Tags: autohotkey windows   

    AutoHotKey: Windows下的自动化脚本,有点像linux下的expect,呵呵。
    几招基本功:
    1. msgbox, Hello World! `nNewline starts here
    2. run http://blog.eaxi.com/
    3. #x:: 绑定 win+x 快捷键
    4. #b:: msgbox, win+b
    !b:: msgbox, alt+b
    ^b:: msgbox, ctrl+b
    ^!b:: msgbox, alt+ctrl+b
    !#b:: msgbox, alt+win+b

     
  • admin 8:59 pm on November 30, 2011 Permalink | Reply
    Tags: vim gvim linux   

    调试vim慢的原因方法:
    vim –startuptime message.txt
    启动后,查看message.txt中,哪个脚本最慢,再考虑能否禁用加载。在我这里,c.vim禁用后,快了非常多。

    接下来,可以正常使用vim,然后输入命令
    :scriptnames
    看到列表后,也能发现耗时脚本。这一步,发现可以禁用菜单、禁用翻译(vim需要这些东西么!),又提速不少!

     
  • admin 9:48 pm on July 30, 2011 Permalink | Reply  

    温州动车追尾事故 

    23号,造成两百多人死伤的〝温州动车追尾事故〞过去还不到38小时,在原因还没有查清的情况下,铁道部将破损车体碾碎,掩埋,引发民众和媒体的质疑。同时,出事路段已经恢复通车。

    7月24日 23:15,铁道部发言人王勇平在温州水心饭店为“7?23”甬温线特别重大铁路交通事故举行新闻发布会。有记者问:“在你们宣布没生命体征、开始拆解车厢时,为什么又发现一个活着的女孩?”铁道部发言人称:“这只是一个奇迹。”记者:“那你们做的决策是不是错了?为什么说没人活着又发现呢?”发言人:“我只能说,它就是发生了。”

    7月25日 8:30,《东方卫视》24日7点11分的新闻连线,据现场记者丁桃介绍:“截至当时伤亡人数203人,死亡人数63人…”字幕却显示32人死亡。直到24日晚22点,铁道部发言人王勇平通报7?23事故死亡人数为35人

    7月25日 9:30,“35”一个神奇的数字。动车相撞35人死亡,河南平顶山矿难35人死亡;重庆暴雨造成35人死亡;云南遭大雨袭击全省35人死亡。知道为什么死亡人数控制在36人以内吗?超过36人,市委书记这个级别的要撤职,所以一开始发生,就注定了死亡人数不会超过36

    7月25日 9:50,一个在医院上班的哥说,其实到今天早上凌晨就已经死了100多了,抬出来的都是死人。只不过到医院走了一遭,算抢救无效,不算立即死亡。媒体被要求隐瞒了数据只说30多。。。。。。。。真是用心良苦。。。

    7月25日 15:45,凌晨4点宣布已无生命迹象,14个小时后又救出小孩儿,其间发生的事情有:碾碎掉落的车厢,内部协调,拟于 下午6点通车……我相信了:他们根本就没有尽力救人。

    7月25日 17:40,到底伤亡多少人:看下香港党报报导吧! 共6节车厢满员600人掉到30米高桥底下。桥上车厢里有多少人伤亡先不算,桥下已知活着的为210多人,而新华社报的 亡者 为35人。照新华社数据,那么,600(总)-210(伤)-35(亡)=355人,这355人 去 哪了?

    7月25日 21:27,@编剧周力军新浪认证:请大家记住这些图,记住这张脸。先是铁三局说没有掩埋列车,挖坑是为了方便作业。后来这位发言人笑嘻嘻地说,确实掩埋了机车,但那是为了垫脚!MD!你家这是盖房子挖地基呀!把车体、尸体、个人物品、证件、钱财,还有血都当基桩打下去呀!以为这样你们就稳当了吗?!我本不善粗口,但真是忍不住!MMD!

    7月25日 21:39,杨峰在现场透露了多个细节:24号凌晨他一点就到达了温州南站,但由于种种阻饶,2点半才到达出事车厢,当时现场已经停止救援,工作人员表示没有生命迹象。他的妻子和母亲是24号下午才被挖土机挖出来的,妻子已经没有了脸部,他流着泪问:这是动车撞的还是被挖的?

    7月25日 22:18,温州微新闻:#默哀现场直播#动车事故最新爆料!!当晚政府去营救的都是D301的。D3115的16节车厢近百人几乎全都死光!!!没有人去救他们!!!直到第二天下午用铲车车直接去铲的!!!这就是我们国家对待生命的方式吗?政府人员到现在都不露面!现场人越聚越多了!

    7月25日 22:50,@新民周刊杨江:杨先生此次事故失去四名亲人:妻子,岳母,大姨子及三岁外甥女,其妻怀孕七个月,所以也可以说失去了五个亲人!他身穿孝衣邀铁道部官员一起参观他因野蛮铲车导致尸体残缺,头部不齐的亲人遗体,该官员连连后退:我给你鞠躬,对不起!

    7月25日 22:53,@公民微报:求真相再次发!据报:保险公司收到医院的死亡人数是179个,新闻报道死亡人数不到40人。

    7月25日 22:55,网易微博@龚伟杰:保险公司朋友告诉我,现在核实死亡216人 还没有核实的。

    7月26日 8:30, @truth_cn这样都被兲朝狗官想得出: 中新浙江网7月25日电(记者 赵晔娇)有消息称,“温州事故原因有新进展:铁路调度程序员出现BUG(故障)是本次事故的根本原因,警方已经拘留了两名无证程序员。上海大火是无证电焊工,这次是无证程序员。

    7月26日 8:37,中央人民广播电台翔宇:铁道部发言人王勇平说:“雷击造成设备故障。”而全国雷电防护标准化技术委员会委员关像石却说:“我只有两句话好说!第一句,此次事故绝对是人祸!第二句,我对政府的善后工作很失望!”

    7月26日 14:04,家属看到领导来了,非常气愤,起冲突了,砸了水瓶。

    7月26日 14:21,记者不让他们走,家属在质问,家属和领导发生激烈冲突。“我妹妹还有半个头在里面!!!!”汤先生声斯力捷的喊!!!!!

    7月26日14:36,汤先生给专家跪下了,但是他们动用警力把记者强行拉住。汤先生已经哭的不行了,央视的记者大骂铁道部的人是狗!!!

    7月26日 14:44,这就是所谓的专家,坐在那里一言不发,我与他们一同身为人类感到可耻。

    7月26日 15:10,一听到是省内某城市的记者来采访,家属直接拒绝回答,“跟你们说他妈屁用,又不能播”。

    7月26日 15:37,家属不知又被带往何处,刚才有人向他们保证切割前会通知他们,你们信吗?

    7月26日 16:02,遇难者家属陈峰在事故中失去了五位亲人,其中包括他怀孕7个月的妻子。面对镜头,他对救援工作提出质疑

    7月26日 15:01,浙江省委书记大人实在很忙!!当年杭州地铁塌陷,他在海外访问;前两天三桥垮塌,他在海外访问;温州动车追尾,他也在海外访问。

    7月26日 15:30,一个强盛的国家,开放枪支都不会被颠覆;一个虚弱的政体,买菜刀都需要实名;一个人性的国家,总统会逐一念出遇难者的名字致以哀悼,一个冰冷的政府,遇难人数从来都是高度机密要被隐瞒;一个自由的国家,记者可以将内阁大臣追问到满头大汗,一个禁锢的体制,官员则告诉记者,你爱信不信,反正我信。

    7月26日 15:30,上海铁路局局长、党委书记、副局长三人就地免职之后,铁道部总调度长安路生调任上海铁路局局长。安路生,2006年任总调度长,2008年因胶济铁路4.28重大事故免职,之后出任成都铁路局局长,2009年调任上海铁路局局长,2010年重新出任铁道部总调度长。这算什么???

    7月26日 12:25,今天《人民日报》头版:“党的恩情比天高”。
    不知道哪里有痰盂,我想。

    铁道部发言人王勇平先生你好,您的大女儿王晓英是铁道部财务局主任,大女婿李阁奎是北京市交通局副局长,二女儿王晓霞是北京市计生局处长,二女婿郭亮是北京市中心医院副院长,小儿子王晓飞是铁道部质检科科长,儿媳张宁是市妇联主任,孙子北京市实验小学副班长王小帅,我所了解的这些情况都没错吧?

     
  • admin 7:30 pm on July 10, 2011 Permalink | Reply  

    用C++来编写PHP扩展 

    前面有文章介绍过如何编写一个简单的PHP扩展。简单说,也就下面几步:

    1. 去ext目录用ext_skel生成扩展框架
    2. 去php源文件目录./buildconf –force
    3. 编辑config.m4
    4. 修改extname.c
    5. ./configure && make && make install

    本文介绍下如何在扩展编写过程中,使用C++。

    读到这里,如果你还不知道GNU m4或phpize,建议参阅下相关资料。简而言之,GNU m4是一个用于生成文件的宏处理器。这里的phpize是调用了GNU m4来生成configure文件以及其他相关文件。Configure则是生成Makefile的一个bash脚本。

    PHP扩展默认使用C语言来完成编码。若想使用C++,需要对config.m4文件做出相应修改。

     


    PHP_REQUIRE_CXX()

     

    PHP_ADD_LIBRARY_WITH_PATH(tlib, $LIB_EXPORT_PATH, WANGGOU_SHARED_LIBADD)

    PHP_ADD_LIBRARY_WITH_PATH(library_sys, $LIB_EXPORT_PATH, WANGGOU_SHARED_LIBADD)

    PHP_ADD_LIBRARY_WITH_PATH(library_util, $LIB_EXPORT_PATH, WANGGOU_SHARED_LIBADD)

    PHP_ADD_LIBRARY_WITH_PATH(ip_pool, $LIB_EXPORT_PATH, WANGGOU_SHARED_LIBADD)

     

    PHP_SUBST(WANGGOU_SHARED_LIBADD)

    PHP_ADD_LIBRARY(stdc++, 1, WANGGOU_SHARED_LIBADD)

     

    PHP_ADD_INCLUDE($INC_EXPORT_PATH)

    PHP_ADD_INCLUDE($EXT_PROTOCOL_PATH)

    PHP_NEW_EXTENSION(wanggou, wanggou.cpp, $ext_shared)

     

    说明:

    上述宏的第一句,表明了该扩展需要使用CXX编译器。

    接下来四行,添加扩展中依赖的库,也就是 –Lpath/to/lib –lsomelib 段的内容。

    接下来添加C++标准库。

    下来两行是头文件包含的目录配置。

    最后一行表明源代码文件的名字是以.cpp结尾。需要自己重命名自动生成的wanggou.c

     

    接下来就是编码了,像平常一样include头文件,修改完文件,直接make来测试。

    祝你成功!

    –EOF—

     
  • admin 12:35 am on April 15, 2011 Permalink | Reply
    Tags: php ssh2 linux   

    PHP SSH2 

    function exec($cfg)
    {
    $conn = ssh2_connect($cfg['fip'], C(‘SSH_PORT’));
    if (!$conn) return “cannot connect to server {$cfg}:”.C(‘SSH_PORT’);

    $auth = ssh2_auth_password($conn, $cfg['flogin'], $cfg['floginpwd']);
    if (!$auth) return “auth failed”;

    $stdout_stream = ssh2_exec($conn, C(‘REALTIME_CMD’));
    //$stdio_stream = ssh2_shell($conn);

    $stderr_stream = ssh2_fetch_stream($stdout_stream, SSH2_STREAM_STDERR);

    stream_set_blocking($stderr_stream, true);
    stream_set_blocking($stdout_stream, true);

    $out = “”;
    while($line = fgets($stdout_stream)) { flush(); $out .= $line;}

    $err = “”;
    while($line = fgets($err_stream)) { flush(); $err .= $line; }

    fclose($stdout_stream);
    fclose($stderr_stream);

    return array($out, $err);
    }
    php_ssh2.dll

     
  • admin 5:56 pm on February 14, 2011 Permalink | Reply
    Tags: , tcp/ip   

    解决netstat中TIME_WAIT过多的问题 

    调节内核参数:
    net.ipv4.tcp_tw_reuse = 1
    net.ipv4.tcp_fin_timeout = 30

    如果,你的服务器,和所有可能的客户,都不处于NAT环境,还可以打开
    net.ipv4.tcp_tw_recycle = 1

    这里要注意一点,普通公网的机器不能起用回收,否则会导致问题。
    参考:

    http://zhangle.is-a-geek.org/2010/11/tcp_tw_recycle%E5%92%8Cnat/

     
c
compose new post
j
next post/next comment
k
previous post/previous comment
r
reply
e
edit
o
show/hide comments
t
go to top
l
go to login
h
show/hide help
shift + esc
cancel