闪电's profile闪电的共享空间BlogNetwork Tools Help

闪电的共享空间

闪电 折

April 30

FF 插件 痛并快乐着

这段时间一直在整这个该死的东东,经历了无数次郁闷之后,赶紧把这点经验写下来,下次再弄不好的时候,就可以参考一下。

首先是指针文件的位置问题,“开始”—>“运行”,输入%APPDATA%”后,进入”Mozilla”文件夹,注意:指针文件一定不要放在“Mozilla”下面的”Extensions”文件夹里,那个文件夹其实不在用户真正的profile里。应该进入”Firefox”—>”Profiles”,这时寻找一个名字为”XXXX.default”的文件夹,这才是firefox为用户生成的profile文件夹。把指针文件放到这个文件夹下面,重启firefox,它就可以找到对应的extension了。

其次,由于这个东西全是xml+js,如果里面有一点写错了,Firefox会什么反应都没有,这是最郁闷的地方:明明知道有个错误,但是没有任何提示信息告诉错在哪里。也许有相应的插件会提示错误信息,但是我还没找到:)后来没办法,我就用了一个比较土的办法,把chrome.manifest拷贝到用户profile下(同上面)的”chrome”文件夹下,把里面的相对路径改成绝对路径,即file:///XXX。然后在firefox里输入对应的chrome网址,一个个地看,如果某个xul或者dtd文件有错误,浏览器窗口里会给出错误信息。于是,我发现了我在一个dtd文件里多写了一个@,就这个破东西浪费了我好几个小时。

然后,manifest文件中的package的名字必须全部小写,此外路径后面要加反斜杠/,这在http://kb.mozillazine.org/Getting_started_with_extension_developmentl 里也提到了。

最后,install.rdf其实非常好生成,只要用ExtensionDeveloper插件就行,注意id要么是用工具生成的,要么是XXX@XXX形式,即类似一个邮件形式。还可以用这个插件直接打包生成.xpi文件,然后就可以拷贝给别人用了。

ok,此时就可以想蘸白糖沾白糖,想蘸红糖沾红糖了,哈哈

April 27

一直很安静

不知什么时候,变得安静了。从前,可以辗转反侧,彻夜难眠;可以激情澎湃,豪气冲天。现在要我晚上12点以后睡觉简直要命,天大的事情明天再说。以前在乎的太多;现在却倾向于无所谓。不知道这是好还是好坏。

       好象这天气,昨天的双龙峡寒意袭人,今天的科苑却暑气腾腾。未来会怎样,有谁能知道。虽然天气一定会热下去的,然而明天的自己会如何却完全无法把握。小时候,觉得丑小鸭并不可怜,因为他会变成黑天鹅。现在觉得这只是用来安慰那些永远变不成天鹅的丑小鸭,他们活着的唯一理由是这个渺茫的希望。用坚忍去博得上天的眷顾,这算得上是一种悲壮么?

March 19

Curl 心得

最近这几天在理解Curl_multi的用法,现在总算理解得差不多了。

Curl的官方文档中提到在单线程里实现多个Curl句柄并行下载的方法。本质思想是由用户监测socket的状态,在socket状态发生变化时,告诉libcur操作socket中的数据,以此完成每个Curl句柄的下载任务。

libcurl提供了2种方法。一种是通过调用curl_muti_fdset来提供用户一组文件描述符,用户可以使用select函数来监测fd的状态,一旦产生变化,就调用curl_multi_perform来操作socket,从而继续下载(或上传)任务。另外一种是用外部事件库(比如libevent)来定期强制libcurl轮询并操作内部的socket(主要调用curl_multi_socket_action,而轮询的timeout一般由libcurl提供)。在执行curl_multi_socket系列函数的时候,会要求预先设置callback。libevent总是在轮询完socket之后,通过调用callback将socket的状态(轮询之前)通知用户程序,用户可以据此设置被监听的socket以及相应的状态(比如通过libevent)。

Curl官方比较推荐第二种做法。因为第二种可以通过外部事件库定位哪个socket发生了变化,直接调用curl_multi_socket_action来操作相应的socket,而不需要像curl_multi_perform那样轮询所有的socket。此外,定期轮询,即调用curl_multi_socket_action时fd的参数设置为CURL_SOCKET_TIMEOUT,此时,libcurl只会轮询一部分socket---因为libcurl内部有个数据结构只保存在timeout到来时最需要轮询的socket;而select中如果设置timeout参数,则每次调用curl_multi_perform还是要轮询所有socket。所以总体来说第二种方法要比第一种方法更有效率。

用了好几天才明白这一套原理,说明我的linux编程基础还很差,唉,要学的技术太多,要看的论文太多,要学的数学太多。。。

August 02

我的第一次博客

     刚刚过了22岁生日,可惜今天天公不作美,一直电闪雷鸣,我本来想做一件特别值得纪念的事,却被这场雨耽误了。只好写一篇博客聊表纪念。
     这段时间在恍恍惚惚中度过,总感觉有很多事情要做,但又一拖再拖。以前那种冲劲消退了许多,代之的是每夜的辗转反侧和患得患失。也许并不需要深思熟虑,也许我所担心的只是细枝末节。宁可早点面对失败,我也不能按兵不动。
     不知道为什么,我不喜欢晴朗的天气,我喜欢昏暗的天空和淅淅沥沥的小雨。在小小的书房独享一杯清茶,透过窗外看看打伞的行人和被雨滴碰撞的微颤的树叶,是一种恬静的享受。
     今天在峨嵋轩吃得挺High的,不知道这种聚会还能够维持多久,希望越久越好,忽视友情的圈子是可怕的。
     偶尔上了一回校内网,罗沛沛居然祝我生日快乐了,真是很意外:)她真是一个很奇特的女生,有时候让人很生气,有时候又让人心里很暖和。
     彭莉又消失了,世界上没有比她更开心的女生了。
     理想是一种单纯而美好的东西,我不愿意为了直面现实而抛弃她,尤其是在年纪轻轻的时候。战胜自己是最重要的,不仅仅是战胜自己的懒惰,最重要的是战胜自己的心态----忘掉沮丧、痛苦、孤独等种种情绪,摔掉自以为是的尊严,时时刻刻以乐观的、积极的情绪去面对失望和等待。我需要时刻地自我嘲讽,需要让自己心的城墙和脸皮一样厚,不能赌气,不将自己的想法强加于他人,这也许是“大度”的真正内涵吧。
      赵传的《我是一只小小鸟》唱的是一种凄凉和无奈---我是一只小小小小鸟,怎么飞呀飞却永远飞不高,我寻寻觅觅,寻寻觅觅一个温暖的怀抱,这样的要求是不是太高?
     如同精卫填海,我更愿意执着下去,即便没有任何可能,因为这是我的权利,没有人有资格嘲笑。
     马东媛的座位都是花花草草,很有感觉。