• Category Archives: Programming

computer

大牛们的世界好小

今天看到了蛮多东西,各种文章里引用的都是大牛的东西!最早是在看一篇纪念Dennis Ritchie的博客文章,文章最后推荐了一个Rob Pike 2001做的演讲的slide,好像蛮有名的:The Good, the Bad, and the Ugly: The Unix Legacy

Rob Pike何许人也? 他也是贝尔实验室元老级别的大牛,他参加了UNIX系统、C语言、AWK语言和许多其他系统的开发,与Ken Tompson协同发明UTF-8, Plan 9操作系统的设计者,《Unix Programming Environment》,《The Practice of Programming》作者。现供职于Google,Google的首席工程师,参与开发了Go语言。

slide里面有一句很内涵,一下就抓人眼球:

C is the desert island language.

想看看有没有大牛给出自己的理解,又找到了stanford的《C Craft》。接着第一句“C is the desert island language.”,作者Ben Lynn对C做了很高的评价:

Despite its age, despite many flaws, C is still the de facto standard, the lingua franca. Why? As with other older languages, inertia is partly to blame, but this cannot be the only reason. C must possess a near-perfect balance of vital language features.
Or as Linus Torvalds puts it, “C is the only sane choice”.

可再看看原slide里“C is the desert island language.”出现的位置,我觉得Rob Pike肯定了C前无古人后无来者的里程碑式地位,但也有持负面观点得把? 他认为C写得丑陋,从1970以来也没什么改变。

后来看到《C Craft》下面还有介绍Obfuscated Tiny C Compiler (OTCC) ,发现作者是Fabrice Bellard,他凭这个参加著名的国际C语言混乱代码比赛(IOCCC)就拿了奖。OTCC后来发展为TCC项目。
我是第一次听说TCC,Tiny C Compiler(TCC)是一个轻量级高速的C语言编译器,完全支持C99标准。与其他C语言编译器不同,它是一个自我TCC标志依赖的系统,不需要其他外部的汇编器和连接器。TCC很小,传说是目前最小的ANSI C语言编译器,小于100k,编译速度快,编译出来的执行文件比gcc更小,可以有内存和边界检查,还可以让C语言源文件可以像Perl和Python一些脚本语言一样直接执行! orz是不是可以抛弃gcc了...

其开发者 Fabrice Bellard 又是个传奇的天才:他是FFmpeg(暴风影音,KMPLAYER什么的都是拿FFmpeg的解码器),虚拟机QEMU(科创大作业好像要用这个东西!),TCC作者;发现了最快速的计算圆周率的算法貝拉公式;2009年他声称仅用了一台小于$3,000的台式机算出小数点后2.7万亿位,打破了圆周率计算的世界纪录?
我开始知道Fabrice Bellard是因为那个在web跑linux就是他的作品!原理ms是用js写出了x86虚拟机然后加载二进制linux镜像。关于js版的linux的开发原因,他说...I did it for fun!气场全开,HOLD住全场阿!!!

PS1: Rob Pike主页:http://www.herpolhode.com/rob/
Fabrice Bellard主页:http://bellard.org/

盗梦终端 bash的嵌套

今天正好看到了TualatriX在去年写的《盗梦终端:如何进入第1000层梦境》,很有意思。程序猿说,盗梦空间就像是一层层的“函数调用”:Inception:一场层层调用的函数大战

而Shell有个内置的环境变量$SHLVL,可以用echo %SHLVL%显示当前Shell的级别Level或者说递归层次,你可以想象成Inception里的第n层梦境。在使用Shell(Bash为例)的过程中,实际上就是一个Inception的过程:

执行一个脚本的时候,并不是在当前的Shell环境下执行的,而是父进程shell fork()出一个“相同”的子进程,再调用exec()重新装载,执行具体命令,执行完毕后,销毁它,并回到当前的Shell。

一般情况下,我们的Shell都是第一层,如何进入下一层?只需要不停地执行自身(bash)即可,如果理解递归的话-3-

Shell最多支持几层梦境呢?Bash的源代码variables.c里搜索adjust_shell_level,可以找到

if (shell_level < 0)
shell_level = 0;
else if (shell_level > 1000){
internal_warning (_("shell level (%d) too high, resetting to 1"), shell_level);
shell_level = 1;
}

也就是说最多可以有1000层,超过1000层后,又回到第1层,也就是现实世界了?其实是不一样的,最多1000层什么是伪的,因为1001层(显示1)两次exit后重新显示999了- -! 回到第1层还是要一层层返回上去的吧...

Linux下的小小输入法

之前一直在用ibus-pinyin输入法,感觉它的输入法好不强大,好像还不能调教,也不清楚有木有在用搜狗的词库。据说,有一个157.5M的android.db词库可以挂?

前几天试了小小输入法,是国人dgod的一个作品,一直有在更新,集成了众多中文输入方式,比如五笔、郑码等,还有云词库,可以使用搜狗的词库作为分词库,可以改皮肤改输入法图标等。感觉靠谱很多,也没有发现BUG,就固定下来了~

关于安装:

可见Ubuntu论坛的小小输入法资料汇总,下载地址:http://u.115.com/folder/f69cec2c653

关于设置:

修改yong输入法的配置文件,在/home/用户目录下,ctrl+H,修改~/.yong/yong.ini,都有注释的。

如果想让拼音输入具有自动调频功能,将auto_move的值改为1;其他建议修改的项目,括号是我的配置:候选字个数cand(7),联想字数legend(4),候选显示长度strip(12),中英文切换(LSHIFT),二三重码选择select(;\');还有[IM]是显示在设置中的输入法条目,也可以自己删减,还可以添加云词库(百度/搜狗/QQ)。

改好后不用重启,退出小小输入法,然后Alt+F2运行yong -d就可以生效。如果发现进程管理器中有yong僵死进程,可修改/etc/X11/xinit/xinput.d/yong(root权限),XIM_ARGS="-d"改成XIM_ARGS="",重启后就不会再有了。

关于词库:

主要用的是pinyin.txt,刚装好小小的那个词库不大,需要找大点的词库,我现在挂的12M够用,不过原帖找不到了><直接问我要把;或者在Ubuntu论坛搜索"小小输入法 词库",更折腾的可以看将搜狗细胞词库导入小小输入法

关于修改输入法图标:

linux输入法的图标各种难看,原来用ibus时是个"拼"被我改掉了。小小输入法的图标也可以改,做好图标,png,ico神马都可以,在yong/skin/skin.ini中修改icon=,前者是中文输入下图标,后者是英文输入下图标。放出我做的两个图标~~简单的"中""英",和面板的显示时间和用户名很配!!!

Google启用SSL加密搜索

昨天是Google I/O大会,今天除了Google可以吃豆子外,SSL加密的Google网页搜索已经低调上线:https://www.google.com

Google在2008年于Gmail和Docs中引入HTTPS,用来保护电子邮件访问的安全性。今年1月,Google发生安全问题后,所谓功夫网研发团队试图破解Gmail的SSL协议以监视邮件内容,Gmail开始全面默认使用HTTPS加密。
现在HTTPS将会被部署到Google.com的整个域。通过加密搜索,一切你发送出去的搜索关键字都会以加密方式传输,不会有数据被截取或泄漏的担忧。目前加密搜索只覆盖Google网页搜索,地图搜索和图片搜索还都不支持加密搜索,当然Google未来会逐步让其它搜索产品也支持加密。
另外需要注意的是,所谓的加密只是针对网络传输的过程加密,Google那边依然会存储你搜索的内容,以提升搜索质量。

PS1: HTTPS是对网络安全的中坚力量之一,该协议也被俗称为安全套接字层(SSL),这种技术可以保障网络在传送敏感数据例如金融、医疗信息时不被拦截和盗取。HTTPS占用443端口。
PS2: 用ipv6登陆twiiter/facebook需要绕过HTTPS登陆。
方法是从手机版m.twitter.com和m.facebook.com登陆,登陆成功后再切换回标准页面。
ipv6的twiiter/facebook/youtube地址可以问我要:)
PS3: Google启用加密搜索可能会再次激怒中央,会不会暴力墙掉Google搜索服务+443端口,拭目以待。

VS2010&Photoshop CS5发布

本周连续有两个重量级软件发布。知道的那就不必往下看了,没什么营养;不知道的应该也不知道我在讲什么。这是篇水文,只是膜拜下Visual Studio 2010和Adobe CS5系列orz

Visual Studio 2010
微软在DreamSpark上已经添加了VS2010,好久不上DreamSpark好像改版了。
微软这次推广VS2010还做了两个广告,《想做你的code》和《让爱延长》,大打煽情牌:

如果可能,我来做你的下一行code,好不好?

程序猿们表示内牛满面,很亚克西的幻觉,并预测第三集是分手,让所有coder都回到现实= =...Vim目前情绪稳定,没有压力。
PS1: VS2010的Logo...这不是莫比乌斯环吗?
PS2: 很意外两个广告都是在ku6上发布的,他们和微软有一腿吗?

Photoshop CS5
Photoshop CS5非常火星非常强大,从软件大小就可以看出来了,12+G,比Mathematica+Matlab加起来都要大。
PatchMatch/Content-Aware Fill ,感知自动填充是亮点。用户可以用来修复图片中因压缩而变形的物体,可以对图片的图像进行挪移、添加或删除,该功能的算法能自动从画面的各处,寻找合适的区块、材质来填满你选择的部份。强大的PS工具将让人无法区分什么是真实,什么又被修改过了。
这项神奇功能背后的算法来自普林斯顿大学的计算机科学家,他们在去年的SIGGRAPH上演示了该功能。给出传送门,里面有paper和souce code。
PS3: linuxers.org声称,开源图像编辑软件GIMP早在两年前就推出了这项功能。
PS4: 最亮的视频在youtube: http://www.youtube.com/watch?v=3ScWu7pG7r0 可以自动补完数学方程题目,这哥们儿视频演示里用的还是photoshop7...囧
另一个新功能,Puppet Warp,让你根据控制点(control points)和锚点(anchor points),以自由型式的调整方式,来搬移某一场景的元素。从此越来越假了。

close