大牛们的世界好小

今天看到了蛮多东西,各种文章里引用的都是大牛的东西!最早是在看一篇纪念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),以自由型式的调整方式,来搬移某一场景的元素。从此越来越假了。

IPv6亚克西

进大学200多天,到今天才头脑一热,配上IPv6。不,应该称互联网协议第六版。
SJTU校内的IPv6不多说了,校外还有待尝试,Win7自带了IPv6协议,剩下的只要在cmd里输入:

netsh interface ipv6 isatap set router isatap.sjtu.edu.cn
netsh interface ipv6 isatap set state enabled

当你访问www.kame.net时,看到跳舞的乌龟,就说明你访问该页面走的是IPv6的隧道,IPv6网络正常。恭喜你可以凸墙了。
PS: 绝大多数IPv4网站都可以以http://(URL).sixxs.org的形式进行访问,这样便是使用了IPv6。

功夫网暂时拿IPv6没办法,所以ipv6.google.com就是无解状态,cache也不会打不开了。
成功访问ipv6.google.com的话可以看到跳动的google logo,什么google.com.hk,google.com/ncr啦都可以抛弃了。
推荐再装个叫IPv6 Google Search的Firefox插件,然后就可以直接很方便地在导航栏用IPv6的google搜索了。

访问youtube需要修改hosts,提供传送门,目前看视频很流畅,smilence~
twitter的ipv6地址好像还是不能访问,https也不行,求解。不过找到了fanfou.alwaysdata.net,从twitese到rabr,到fanfou.alwaysdata,UI感觉一个比一个赞,低俗了,以貌取啥了,还是要膜拜原作者bang。我本地twitese的api失效后一直懒得换,暂时就用这了。

PKM个人知识管理

我本来其实准备做作业的,结果chrome窗口一开不可收拾,保持20+。以前的债还没消化掉,今天一天被我记下存为keywords的信息又有4页,信息爆炸。在找一个web系统,可以管理我这些keywords和资料,方便日后搜索查找。之前搞了个MediaWiki,但很快发现wiki不合适,我不习惯添加wiki词条,单用户维护wiki也太奢侈了。

今天才知道我要找的东西叫PKM[1][2](个人知识管理 Personal Knowledge Management)。看了些资料后我越来越糊涂了,这个概念似乎98,99年就有了,但现在还是非常“小众”的样子,软件有好几个,不过似乎没有哪个web应用是打着PKM的旗帜的。所以我怀疑我对PKM是不是理解有误? 哪些算PKM? delicious,google reader,docs,notes,SNS等可不可以算PKM的部分? PKM现在是什么地位,发展情况怎么样? 有没有同关注PKMor感兴趣的朋友啊?

我理想的系统,要是能把下面全整合在一起,(Google应用的战线还是太长太散),就完美了:
1. RSS阅读,twitter 媒体信息/个人信息的订阅跟踪
2. SNS,google wave,邮箱 人际网络
3. delicious+wiki Keywords和资料(网站,某个页面或文章,词条)管理收藏
4. dropbox 在线存储/文件档案管理
5. 多平台 本地/web/手机更新
6. 数据 分类(tags,智能联系)/各种处理(搜索,筛选,排序)/加密/导入导出。

paRkingEDletter SWCandy AGothic Capital Letter L (Washington, DC)letter LOletter Wscrabble letter Z
PS: 收获两个好网站: spell with flickr和s_Programmer
spell with flickr
spell with flickr是老老早(我火星了)kastner 写的一个小程序,可以用Flickr图片来拼写英文字母。用鼠标点击字母,可以随机换另一张图,可以选2种尺寸regular和较小的square。
spell with flickr提供了javascript和html两种输出格式,让使用者可以将图片张贴到自己的网页中。两者的差异在于,html输出的图片是固定的,如果你想要它实现每刷新一次都展示不同的图片,那就应该用javascript。
is_Programmer
is_Programmer是一个基于Ruby on Rails,面向程序员的非盈利Blog系统。似曾相识的感觉,果然我注册过is_Programmer,当时没在那安家。现在发现is-programmer各种geek,遍地大牛,有种找到组织的感觉T^T

DidYouKnow & 库兹韦尔定律

“Did you know?”最近很火。最早来自2006年美國的一位老師Karl Fisch所製作的PPT”Did you know?”,后来被世界各地千万人引用及加工,被認為”現代人不可錯過發人深省的短片”。这里我找了几个做的不错的版本,数据流都很强大:
DidYouKnow4.0/另一个DidYouKnow4.0/DidYouKnow3.0/DidYouKnow2.0

We are living in exponential times:
理工科学生又杯具勒…其实在这里就根本接触不到最前端的科学知识,汗= =

2010年最迫切需要的工作在2004年根本不存在。我们必须教会现在的学生毕业后投入目前根本不存在的工作,使用还没发明出来的科技, 解决我们从未想到过的问题。
新的科学知识大约每两年就多出一倍,对正要上大学的学生来说,前两年学的知识,三年级的时候就统统过时了。

另外DidYouKnow里还纵向比较了接入Internet设备数量:1984年1000台,1992年1,000,000台,2008年 1,000,000,000台;2013年一台1000美元(以1999年美元计算)的电脑的能力大致上与人脑的计算能力相等,到2049年一台1000美元的电脑的能力等于全人类人脑的计算能力。
事实上这就是《灵魂机器的时代》(The Age of Spiritual Machines)里的思想:让我得用”可怕”去形容的库兹韦尔定律

《灵魂机器的时代》出版于1999年(当时电影《Matrix》还没出来),非常不错的一本书。作者是又一位传说中的NB人物:雷·库兹韦尔(Ray Kurzweil),比尔·盖茨家中的座上宾,《财富》评价他为The Smartest or the Nuttiest Futurist On Earth,发表了许多非常疯狂的预言:1980年代,他就预测1998年会诞生一台可以打败世界上最强象棋选手的计算机,这件事在1997年发生了;他预计一种世界范围的计算机网络将兴起,信息传递更加便利,娱乐会进一步深化,这些情况现在还在持续发生着。

书中雷·库兹韦尔提出了摩尔定理的扩展定理,库兹韦尔定律(Kurzweil’s Law/the Law of Accelerating Returns)技术发展以指数增长。在未来的某个时间内,技术发展将接近于无限大。库兹韦尔定律不可避免,整个进化过程的毁灭是制止库兹韦尔定律按指数方式发展的唯一方法。
PS: 与之相反的是混沌递增定律,没找到英语该怎么翻,适用于宇宙的演化和有机体生命的发展发育上。在书中第一章具体讨论了”混沌与秩序,效益与时间”的问题。

我们的未来不是再经历进化,而是要经历爆炸:
雷·库兹韦尔预言:人类在20年之后将改造成为半机械人,从而获得长生不老。(库兹韦尔本人据说就在实施对自己长生不老计划,传说他60岁但从指标上生理年龄只有40岁= =)2019年一台1000美元(以1999年美元计算)的电脑的能力大致上与人脑的计算能力相等(和DidYouKnow的数据有点出入)。2029年一台1000美元的电脑的能力大约相当于1000颗人脑。2049年一台1000美元的电脑的能力等于全人类人脑的计算能力。(信息技术正在加倍地产生力量,以每年两倍的速度在提升,10年就约是1000倍)。2099年人类的思维与人类创造的智能机器合并,大多说有意思的实体没有永久的实际的外形。从人类智能的扩展模型衍生出来的智能机器被称为”人”。最后,数千年后智能机器将考虑宇宙的命运。

在库兹韦尔定律基础上,还引出了技术奇点(Singularity)这么个概念。正如宇宙学上存在着一个让所有物理定律都失效的”奇点”一样,雷·库兹韦尔认为信息技术也正朝着“超人类智能”的奇点迈进。不仅如此,智能体还将具备无限循环的自我完善功能。具体等看完他的《奇点迫近》(The Singularity Is Near),再来介绍~
PS: 未来真可怕= =…你愿意相信2012还是库兹韦尔定律,or春哥?

嘀咕团队有能力

今天早上收到嘀咕回归的邮件,嘀咕成为了第一个升级完毕的微博客服务网站,令人”振奋”。很好奇嘀咕团队怎么去搞定真理部的,不过嘀咕显然怂+被阉割了,被转型”娱乐生活”,测的第一个xj就是敏感词,隐晦。

饭否应该也能看到回来的曙光了,饭否博客10.20更新了短短的一句话:

“停了105天,走了2位同事,但我们还在。饭否会回来。”

结果博客服务器就被挤爆了结果= =…才发现爱饭的朋友好团结,还有很专业的饭否避难手册。饭否团队加油了,等饭否喊我回家吃饭T_T

另推荐一个Twitter第三方应用:推特中文网Twitese
由强人bang开发的中文界面Twitter应用,架设在Google App Engine上,一个暑假的时间编写完成,界面和功能都跟之前的饭否等网站类似。
其原理是通过API把获取和发送twitter信息的程序放在国外服务器上,国外的服务器访问twitter没有限制,而国外的这台服务器没有被和谐,所以国内也是可以访问的,等于把这台服务器作为国内用户与twitter连接的中介。这就是twitter不可能被完全封杀的原因,每一台外国服务器都可以把你连接到twitter上。
原来的twitese.appspot.com已经无法打开,可以尝试下t.webbang.net / twitese.webbang.net
作者28日更新了5天内写出的PHP开源版本,可由任何人自由架设在自己服务器上,详细。开源主页:http://code.google.com/p/twitese/

PS1: 我的www.redswallow.me在祖国60大寿后两周通过备案,已经恢复。
PS2: 手机被偷了,上一周世界清静了。

递归和Droste Effect

递归
公认的递归(Recursion)的标准定义是非常难理解的:若一个对象部分地包含它自己,或用它自己给自己定义,则称这个对象是递归的;若一个过程直接地或间接地调用自己,则称这个过程是递归的过程。通俗地说,递归就是大鱼吃小鱼,就是一条蛇咬住自己的尾巴,一样东西自己包含了自己。

Google就有一个很形象的彩蛋:在Google.com里搜索recursion,下面的纠错会很可爱地提示”Did you mean: recursion”,然后就可以陷入永无止境勒。因此递归通常是可以无限循环下去的,然后就有这样一个很Geek的笑话:

作为一个狂热的电脑游戏迷,如果有一天你从一个完全陌生的地方醒来,你如何判断这是虚拟空间还是在现实中? 答案是,找两面镜子来,互相对着放。如果出现周围的物体运动变慢等不正常的情况,说明你是在虚拟空间中。大自然是神奇的,它能处理两面镜子相对放置时镜子里应该显示的内容;但电脑就模拟不出来,如果电脑真遇到这种情况,指定会把CPU累死。

递归是种很重要的思想,从递归出发可以联系到化归,递推,分治,回溯,DP,分形…这里就不展开了,具体的可以去膜拜Matrix67的语文暑假作业某说明文:递归(?!)…ms那时候Matrix67就很实力进中文系了
PS: Matrix67.com的递归tags下还有很多强文,超有意思Orz

Droste effect
理解了递归,就可以明白Droste Effect就是种图片的递归:图片含有一个小部份与与整张图片相同。Droste最初是荷兰一个可可的厂牌,它运用递归视觉效果设计的包装,使这厂牌名闻于世。而创作出Droste effect效果的是错觉图形大师Escher,为什么不叫Escher Effect呢,MS太多经典的错觉图片都是出自他之手,关于他又可以写篇博文。

    
记得一本很招摇的《A New Kind of Science》里,Wolfram提出计算等价性的原理(Principle of Computational Equivalence,PCE)。这个原理是说,任何一个足够复杂的物理过程都有可能是支持通用计算。Wolfram甚至怀疑自然界不存在所谓的随机行为,那些看似随机的过程很有可能也是支持通用计算的,因此也是复杂类型的。

上面段在装比耍挑,请忽略= =…其实想说Droste effect可以通过Mathmap, GIMP生成。具体的教程可以上很Xe的煎蛋,(居然2007年就有写文章了,从下面的回复看那时煎蛋还是很纯洁的= =,我是不小心挖到煎蛋的坟的)。
更多图片可以去膜拜flickr上的Droste Effect小组。最牛B轰轰就是把Droste effect用在MV里:Wild Beasts & Clap Your Brains Off,很华丽~~