Today's the day

思考,自知,耐心

回归

为了为 Gtk+ 编程做准备,今天开始复习 C~  从令人怀念的 Hello world 开始:

  1. #include <stdio.h>
  2.  
  3. int main()
  4. {
  5.     printf("Hello World!\n");
  6.     return 0;
  7. }

C 是会的最早的一个语言,不过却从来没有拿他来写过什么像样的程序,现在都快忘光了。相比之下,Ruby 这门最近才了解的语言,现在却能娴熟运用。语言还是得多用,呵呵~

感觉在 Linux 下写写软件,C 配合一门脚本语言确实是不错的组合,C 可以让你彻底享受接触底层和运行效率的快感,脚本语言可以让你享受动态编程和开发效率的快感,C 还可以和很多脚本语言方便的螯合~

从 Ruby 到 C,彻底的回归了~

机场的安检严格多了

奥运会临近了,再加上前些阵子的劫机事件,航空安全问题越来越得到重视,这次回上海,首都机场的安检严格了许多。

不知道其他城市的情况,反正提醒最近要从首都机场出发的朋友:

  1. 一定要早去一些,今天安检排起了“巨龙”,过个安检就要 1 个小时。
  2. 液体的东西最好都托运,身上禁止携带任何超过 100ml 的液体,包括牙膏之类的膏状物,一次性打火机也不能超过 5 个。带在身上的液体过安检的时候都要拿出来装在个透明袋中,一个个被安检的人员开盖闻过才行。

可怜安检人的鼻子,这一天下来,不知道要闻过多少东西……  也因为要闻这个,安检速度慢得要死,有的人随身的包里化妆品太多了,索性直接把包托运掉了~

不管怎么样,一切平安、顺利第一……

重整 Chito 代码

暂时停止向 Chito 添加复杂的功能,是时候把代码优化和整理一下了~ 

实现功能的代码,该封装的封装,该简化的简化,也要遵循 MVC 的设计信条,尽量精简 Controller 层,把功能都放到 Model 里去~ 而且很多地方的代码都有啰嗦的嫌疑,现在 Chito 的总代码 2300 行左右,但是实现管理界面的文件管理器,就用了 200 行汗……现在这代码要是被别人看了岂不会被笑话死……

另外插件的方式也有再精简的余地,现在的实现方式效率也不是很高,趁着现在插件量还不是很多,修改起来还是很轻松的~

正好前两天打印的两本书:《Design Patterns in Ruby》和《The Rails Way》,这几天看看,再对 Ruby 和 Rails 重新了解一下,相信能学到不少的东西,然后把他们应用到 Chito 里来~ 


明天闪人,恋恋不舍的离开舒适的家。在家赖了快两个月,省了不少的饭钱,不过干事效率确实是不高,带回来好多书都没看,这两天更是萎靡得一塌糊涂,只想上网瞎逛,就是不想干事情,大概是吃得太多了……

回去就没好吃的了,上厕所又得骑车了……     不过效率应该会比家里高不少,而且可以用新电脑,嘿嘿,这样想想心情好多了~~ 

rake rails:update

今天才发现有这个 rake 任务……

rake rails:update 自动帮你升级项目中的配置文件、脚本、还有默认的 javascript 文件,如果你的项目是在旧版的 rails 之上构建的,只要一个命令,就跟在新版上构建的无异啦~   原来我还傻乎乎的建个空项目然后把新的文件拷过来……

你还可以升级更详细的部分:

localhost chito # rake -D rails:update
(in /root/work/chito)
rake rails:update
    Update both configs, scripts and public/javascripts from Rails

rake rails:update:configs
    Update config/boot.rb from your current rails install

rake rails:update:javascripts
    Update your javascripts from your current rails install

rake rails:update:scripts
    Add new scripts to the application script/ directory

不过因为用了新版 prototype 和 scriptaculus 的缘故,新版 rails 的默认 javascript 比旧版的尺寸大了很多,如果旧版用的好好的,就不用升级了,比如我……

拉肚子……郁闷

跑了无数次厕所了,还好是在家……

估计昨天晚上着凉了……

正好当作接口什么都不干了,晚上休息~

哎,还真痛啊…真的是着凉吗……

单用户、多用户版合在一起?

Chito 一直想搞个单用户版,渐渐发现精力不够(其实是自己犯懒),想加入 Chito 的功能实在是太多了……  忽然想到为啥不把单机和多用户版合在一起呢?

细想了下,合在一起的好处还真不少~

首先当然是我省事了,插件一套就够了,也不要可以去考虑兼容性。

由于可以注册用户,评论也可以防止别人冒名顶替。

心情好了还可以让大家来自己的地盘写 blog。

而且,有的时候,即使是一个人,也想有多个 blog,来记录自己不同方面的事情。

真诱人啊,不过得考虑下可行性先……


 

打印了几本书

早就想把一些想看的 pdf 打印成书,pdf 看起来实在是太累,只能正襟危坐在显示器前看,而且,如果当前的内容要和前几页的某个内容对照着看,在 pdf 上前后翻来翻去实在让人发疯……

原来想自己打印来着,不过没有激光打印机,而且也不会装订,前两天去淘宝上找了个打印的地方,一狠心打印了 4 本书:

  • 《Foundations of GTK+ Development》
  • 《The Rails Way》
  • 《Design Patterns in Ruby》
  • 《Programming Firefox》

花了 180 大洋汗,前天晚上把 pdf 传给打印店老板,今天书就送来了~ 效果不错,封皮和我们毕业论文用的差不多,超过 600 页的书老板还帮我分成两册,这点比较好啊,按我说一章装订成一册都不为过,这样以后再回家就带正在看的部分就可以了,就连拿着上厕所对都方便~

不过要是国内有影印版我肯定去买,可惜不少好书没希望引进到国内来,等我有钱了再去买正版赔罪吧~

其实电脑上的 pdf 不少,有的老早之前就下载回来,心想有空一定要看,但是一直没有看……现在好了,打印出来放在桌上就是一摞,提醒自己抓紧看,再说也得对得起那 180 块~

就是挺重的,还得扛回去……

《赌博启示录》,痛快~

好久没看到这么痛快的漫画了~

刚开始看的时候被作者粗犷的画风吓了一跳,但是看了几页马上就陷进去了,13 卷一口气看完。

和《欺诈游戏》不同,《赌博启示录》更多的是心理上的挣扎的描写,悲愤、踌躇、恐惧、崩溃…在粗犷的画风下淋漓尽致,主角开司大部分时间是个泪人 + 汗人

其实这些都不重要,重要的是《赌博启示录》以强烈震撼的方式,问出一个个问题,让人不能不陷入思考……

什么是真正的仁慈?什么是真正的勇气?

人和人之间怎么才能真正相互了解?

人们是不是经常把自己重要的抉择交给别人来作,只因为自己恐惧去思考?

人们是不是经常抱怨环境,只因为事情没按照自己的意愿发展?

人们是不是活在自己构造的“假”中?

……

强烈推荐~  《赌博启示录》

FCKediotr 支持漂浮窗口了~

原来一直很羡慕 TinyMCE 那样,插入链接或者图片是在页面上开一个浮动的窗口,而 FCKeditor 却是傻傻的弹出一个浏览器窗口,速度慢、不直观,而且要是同时在很多编辑器之间编辑文章,都不知道哪个是哪个……

现在好了,几天没看,FCKeditor 已经升级到 2.6 beta 了,并且支持的浮动窗口,速度和效果相当不错 :

等到 2.6 正式版发布,就更新到 is-Programmer 上来,不知道插件是不是还要改一下才行。

对于 Blog 来说,编辑器至关重要,希望 FCKeditor 越来越好~

Ruby 数组转换成 Javascript 参数

有的时候数据存储在 Ruby 的数组里,如果你想把这个数组当作 Javascript 的函数的参数,比如:

@names = ['Zhangsan','Lisi']

你想把他作为参数传给 Javascript 代码,达到这样的效果:

a_js_function(['Zhangsan','Lisi']);

需要把 @names 转换成字符串的表达形式,你可能想到迭代数组中的每项,拼出最终的字符串,其实简单的方法是 inspect:

a_js_function(<%= @name.inspect %>);

因为在 Ruby 和 Javascript 中数组的表达是基本一样的,所以这样刚好达到了要求。

不过如果数组中有不期望的数据,比如 nil 或者一个复杂的对象什么的,结果可能就不是你希望的了。那么可以试试 array_or_string_for_javascript:

a_js_function(<%= array_or_string_for_javascript(@names) %>);

不过,array_or_string_for_javascript 会把数组中所有的项目都转换成字符串,所以如果数组是 [100, 200, 300] 就会被转换成 ['100', '200', '300'] 如果你想传入数值的话就用前面的 inspect 了。

另外还有一个 options_for_javascript,把 Ruby 的 Hash 转成 Javascript 的格式:

<%= options_for_javascript(:a => 1, :b => 2, :c => 3) %>
=>  {a:1, b:2, c:3}

Rails 中的 Helper 也用这俩函数生成 Javascript 的参数。

inspect 只适合偷懒用,毕竟 inspect 的格式并不保证不会变,也许 Ruby 下一般换个更漂亮的方式显示 inspect 结果,这招就不灵了。