Sunday, November 9, 2008

Lightbot 跳跳牌点灯机器人

Lightbot 这个游戏做滴挺有创意,但是恐怕不喜欢数学滴童鞋不会喜欢。

总共是12关,前面滴关卡教学为主(友情提醒——没有编程经历的童鞋可能需要多花点时间去适应一下前面滴指导关卡才能继续玩后面的几关)!针对那些有些编程经验滴童鞋来讲,思路其实也就特别简单了。俺总结一下(佛祖可以证明,这段总结不是大放厥词,或多或少还是有些道理的。因为俺就是根据这种思路玩通的,而且每一关的思路形成过程都非常滴顺利 :-D )——观察游戏地形,分成若干区域,在每个区域间寻找共性;完成某个区域后,回溯到某个可以重复使用一系列步骤的阶段,将这些相同滴步骤提取出来,函数实现之

最后三关(10-12)滴通关图片如下(点击链接地址查看全部)。








From lightbot 编程点灯机器人游戏

在豆瓣上找到了这个活动,上面提到了一段youtube上滴视频(真是牛人啊,仅仅用了132个commands,俺用了181个 囧)。此人滴解法中步骤的重复率很高,可谓是步步珠玑,但也因此造成很多滴步骤被白白的浪费。

-- jtuki

Saturday, November 8, 2008

嘿 哥们儿 要手电筒么?不要?那要weapon否?

大家都知道,美国是个不太安全的国家。(啥?珠海撞人事件?我可没听说过。中国可是世界上最安全的国家了,国民素质也是最高尚最文明最开化的,怎么可能会有人被逼得成了神经病、去开车撞中学生呢?)之所以这么说,最主要的原因当然还是多次校园枪击案件给人带来的心理包袱(可怜了CS和半条命这样的FPS游戏,在每次校园惨剧发生后,都难逃被严厉批判的厄运)。隐藏在多起青少年枪击事件背后的,当然也就是美国人人家中不仅藏着一副骷髅、还都藏着一杆枪的文化。

但是说真的,这样的事情还真是挺酷的。开始是在有意思吧看到了这个视频,后来输入视频中的链接找到了一些好资源!同大家伙share一下。视频在这里——



是不是想起了《国产零零漆》中滴精彩对白?表面上看这就是一手电筒,其实,这玩意可是把好家伙!

这把枪是一把 concept weapon ,咱们有了所谓概念车概念房概念电影,怎么能少了概念武器呢?这段视频出自这个站点,属于武器买卖公司,online-store 在这里。生产厂家是这家公司,当然咯,在国内自然是买不到啦 囧(强烈推荐其站点上方的随机logo 真是酷毙了)。

ps.
(个人观点)枪支不在于禁止与否。诚然,不禁止枪支所带来的问题固然是很多的,但很多问题并非不禁止枪支所造成的,而且其所占的比重远远超过了允许枪支流通所带来的问题。拿把菜刀还能乱捅呢,总不能全国都不让用菜刀切菜了吧?关键还是整个社会制度是否完善,社会风气是否良好,这才是问题的关键所在。(但是,特此声明——这样的论调绝对远远不足以构成允许枪支流通的理由。)

-- jtuki

Wednesday, November 5, 2008

黑人兄弟上台 - 平方数列求和 - 组合数学 - xarchiver

黑人兄弟奥巴马当选美国总统,算是今日滴最大新闻了。此人长着一副给人好印象的面孔,拥有算作离奇的身世(甚至自爆青少年时期迷茫滴吸毒历史),演说鼓噪人心。貌似对国人来说,奥巴马当选算是众望所归了。这里有來自Economist的一个flash实时演示,很有趣。

今天看题碰到了一个平方数列求和(1^2 + 2^2 + 3^2 + ...),我依然清楚的记得公式。可兴致大发的想要证明一把此公式滴俺却以失败告终。google到了答案,有多种方式。其中最典型的两种就是——三角形旋转叠加(这方法还真是挺形象 ;-) 不过解释中的“60度”应该改成“120度”);公式演算:
(n+1)^3 = n^3 + 3n^2 + 3n + 1  → (n+1)^3 - n^3 = 3n^2 + 3n + 1 然后叠加就OK了

还有一种提到了组合数学,看了半天没看明白 囧,觉得可能是某些式子写错了。不了了之。查了一把,觉得Brualdi教授的《Introductory Combinatorics》是本好书。可惜rapidshare上没找到4th edition的链接,仅有的一个3rd editon还是个死链接。emule上倒是可以搜索到,可惜这种资料用emule下载真是比白云天上飘还慢,完全没法和某些热门电影的无敌水上飘相比。倒是找到这么一本《Foundations of Combinatorics with Applications》,preface中有这么一段——
Advice to Students

This book does not assume any previous knowledge of combinatorics or discrete mathematics. Except for a few items which can easily be skipped over and some of the material on "generating functions"
in Part IV, calculus is not required. What is required is a certain level of ability or "sophistication" in dealing with mathematical concepts. The level of mathematical sophistication that is needed is about the same as that required in a solid beginning calculus course.

You may have noticed similarities and differences in how you think about various fields of mathematics such as algebra and geometry. In fact, you may have found some areas more interesting or more difficult than others partially because of the different thought patterns required.

The field of combinatorics will also require you to develop some new thought patterns. This can sometimes be a difficult and frustrating process. Here is where patience, mathematical sophistication and a willingness to ask "stupid questions" can all be helpful. Combinatorics differs as much from mathematics you are likely to have studied previously as algebra differs from geometry. Some people find this disorienting and others find it fascinating. The introductions to the parts and to the chapters can help you orient yourself as you learn about combinatorics. Don't skip them.

Because of the newness of much of combinatorics, a significant portion of the material in this text was only discovered in this generation. Some of the material is closely related to current research. In contrast, the other mathematics courses you have had so far probably contained little if anything that was not known in the Nineteenth Century.(这句话俺太喜欢了! :D 譬如Calculus就是19世纪滴东西,而现在国内大学里,哪怕是专业课程和Calculus几乎毫不沾边的学生都得学习之,的确比较无奈。对于我们这种数学功底还不错的学生来说,C不算困难。特别是(俺个人觉得)其可谓是高中数学内容的一种思考方式上的延伸,不需要太多思维转换即可轻松接受。可那些数学功底不好的学生咋办?君不见某些人连挂几次依旧不得不补考?真不知道那些白痴curriculum制定者是怎么想问题的。为啥不改成选修课程?) Welcome to the frontiers!

顺便推荐一个gnome下的好东西,xarchiver,比gnome自带的压缩包管理工具好用,界面也很整洁。其他linux桌面下应该也没问题,毕竟是x打头的软件嘛。

ps. 刚才在emule上已经下载完《Introductory Combinatorics》全书了(速度比俺想象的快不少啊),是机械工业的影印版,扫描得不清晰。不过看起来印刷质量还不错,字体也漂亮。还是买书看吧。不过近来开始准备考研,肯定是不能买得看了。也不知两个月时间可否顺利搞定考研和4门专业课以及若干门公选课。真是愤恨自己前三年都没啥明确的努力目标,不然保研出国起码也得搞定一个了!吾悲愤啊! :( 如果搞不定,明年3月份就准备和众童鞋一起找工作去咯! :D

Saturday, November 1, 2008

强大好玩滴VPN!

接着上次的说。总是听说VPN(Virtual Private Network 虚拟私人网络),但是一直都没有尝试。直到昨日在solrex的博客上看到了此文,兴致大增——居然还有免费的VPN服务!于是搬出google搜索,发现了另外一个更佳的VPN服务,Relakks.

Solrex介绍的香港Prairie Dog VPN服务对于免费用户滴限制挺多,具体可参看他们的FAQ,摘录如下:
Free account will be disconnected automatically once the download exceeds 30M or upload exceeds 15M, even though users may reconnect again.
This limitation is to discourage users from hogging the bandwidth. They should move to paid account instead.
There is no limit on the number of concurrent users on the free account server. As a result, a free account user is more likely to experience network congestion, including inability to connect to the VPN server and slow connection.
VIP/Premium/Paid account do not have such limitation. We will also limit the number of VIP accounts hosted per VPN server to ensure there is adequate network bandwidth for each VIP account user.

简单点说就是每次连接之后的通信流量有限(下载30M 上传15M),但是你可以reconnect重新连接;免费用户相比付费用户而言,速度更慢(因为双方服务器的待遇大不相同)。

而Relakks就好得多。流量上任你用,待遇也一样,不过有一点不同,就是每个注册用户只能用30天。(画外音——这还不简单,注册多个用户不就得了?回答——不行,他们是根据网卡的物理地址MAC来定位每个注册用户的。画外音——那就换一个MAC不就行了?回答——有违法律内容咯,这里就不说了,大家有兴趣自己研究.)

Relakks上有如何在WindowsXP下配置VPN的说明,也有针对Vista和Apple Mac的,就是没有Linux的! :(

不过没有也无所谓啦,自己动手,丰衣足食嘛。Solrex的文章其实已经说得挺清楚的了,不出意外的话,配置起来应该没啥问题。可偏偏俺多灾多难的系统就有问题——压根找不到VPN的选项。按道理,安装如下软件后(sudo apt-get install pptp-linux network-manager-pptp network-manager-vpnc)就应该可以在nm-applet(网络管理插件)上找到VPN配置的选项,可是估计还是俺升级不规范的原因,怎么都找不到。

在Preferences - Main Menu - Applications - Internet下找到两个控制台软件——



也就是刚才安装的network-manager-pptp和network-manager-vpnc了,尝试着运行,却提示找不到nm-vpn-properties,google后发现这nm-vpn-properties还真是挺怪!首先是搜索之后,发现大家对此小东西是叫苦不迭,看得我心中真是深感安慰(瓦哈哈哈,大家居然都是苦难人啊 囧)!最后终于在这里找到了问题所在,摘录这位Debian开发者的一段话——
On Mon, 01 Sep 2008 12:30:19 +0200, Michael Biebl <...@debian.org

No, you are right, the network-manager package has no GNOME dependencies
although it ships nm-vpn-properties, a GNOME application.


This is actually a bit of a hack.
The monolithic NetworkManager source tarball was split into a core part
and GUI/GNOME part in version 0.6.5. Unfortunately nm-vpn-properties
remained in the core network-manager package.

We had the option to split nm-vpn-properties into yet another package,
make the network-manager binary package depend on GNOME libs, or cheat a
little and exclude the GNOME dependencies from network-manager.

We chose the last option. We assumed, that anyone using
nm-vpn-properties will also use nm-applet from network-manager-gnome,
which will pull in all the necessary dependencies.
Another reason was, that in the upcoming 0.7 release, nm-vpn-properties
will be dropped from the network-manager core package, so a separate
binary package seemed like a bit of overkill.

And making the network-manager binary depend on GNOME libs was also not
an option, given that it is used by KDE only desktops.

Hope this clarifies the situation a bit.

Cheers,
Michael
--
Why is it that all of the instruments seeking intelligent life in the
universe are pointed away from Earth? (这段签名很有意思 :D )

可见,由于nm-vpn-properties的在多个版本中依赖关系的不确定性,导致俺机器上压根没了这小东西。所以nm-applet就没法检测出VPN配置的存在了。
-------------------------------------------

So,怎么解决?推荐kvpnc!这个KDE下的基于Qt library的软件,功能异常丰富,可谓豪华级别的配置!安装就不说了,大家apt-get install自己搞定。这里就说一说配置Relakks的VPN服务时要注意的问题——

1. 协议要选择M$的PPTP点对点通信协议。

2.在PPTP的设置页面上,切记务必做出如下设置——(具体信息参考 /etc/ppp/options.pptp 文件或者是 man pptp 查阅


3. 网络设置上,做出如下设置——(不要自定义MTU,同时网络设备选择default,ADSL用户一般会自动选择到宽带链接,如ppp0)


4. 服务器选择 pptp.relakks.com

连接就OK咯。你将会使用來自瑞典的VPN服务,通过瑞典的IP,穿越伟大的“超大”防火墙访问internet! :D

ps. 如果你不想安装kvpnc,想直接通过命令行连接,那也是可以的。因为毕竟kvpnc只是帮助你配置了一下pon的文件和chap-secrets中的用户和密码罢了,而pptp的设置在options.pptp中可以方便设置。只是这里就不罗嗦了。大家自己研究探索啦! :)

-- jtuki

network-admin无法启动的解决办法

还是接着上次的说。对于我等广大滴ADSL用户来说,在linux下只需要运行pppoeconf便可配置ADSL用户名密码等来上网了。但是有时候遇到更加advanced滴事情,例如配置VPN,就需要network-manager-gnome来帮帮忙了。毕竟,对于网络配置而言,在图形界面下配置比在命令行下配置要更加令人愉悦。 :)

可惜有时候network-admin就是打不开!例如launchpad上报告的这个bug,我不太清楚他是否和我碰到了一样的问题,不过我昨天也是一样,同样没法打开网络配置页面。后来通过错误消息定位,发现有如下错误提示[Liboobs:ERROR:(utils.c:114):utils_get_basic: code should not be reached.]。

google了一把(居然只搜索到一个结果,哪怕去掉114这个数字依然如此,可见这问题还没被人怎么关注啊 囧),原来liboobs是用来给system-tools-backends提供基于GObject的接口的轻量级library。打开synaptic搜索,发现我本地机器上的liboobs果然是一个陈旧的版本(liboobs-1-3),而且liboobs-1-3和liboobs-1-4版本居然没有dependency升级关系!直接删除liboobs-1-3,安装liboobs-1-4,问题解决。

可以很明确的说,这个问题是由于Ubuntu发行版本升级造成的。由于Ubuntu开源社区开发软件的松散性,上千种软件的打包有时候并未完美的解决掉依赖性问题。由于我每次都是直接修改sources.list文件中的版本号来升级更新系统,而且并非一次性统统更新、而是有选择性的,例如只升级nautilus、gnome-themes、gnome-session和一些常用library等等(更新内核与否要看情况),这样就容易造成一些版本冲突。 :(

强烈建议各位每次升级后,如果出现问题,及时查看terminal终端上给出的信息,google解决之。如果google都找不到,那就去launchpad上报告这个bug或者是去irc上问一问吧。

--jtuki

有关SCIM输入法的tip一则

接着上一篇说。用了SCIM这么久,要不是前天想要将搜狗细胞词库导入,意外发现了这个小tip,还真是不知道SCIM中滴一个隐藏功能——特殊符号输入

打开SCIM帮助,可以看到如下一段:



还需要多加解释么?俺看到这个简直是兴奋异常,打开special_table文件后从头到尾研究了一把(是不是觉着俺确实很有聊啊 囧)。
这里挑选若干有趣的说一说,其他的大家自己观摩文档咯——
imath 输入数学符号:(例如) ± ∀ ∈ ∝
idate 输入当前日期: 2008年11月2日
itime 输入当前时间: 15点45分
ifuhao 输入各种标点符号: § ‖ ‰ ’ “
ijiantou 输入各类箭头图案: ← ↗ ↘ ↔
ilatin 输入各种拉丁字母(ixila 是输入希腊字母): à ê ò
isanjiao 和 ifangkuai 输入各种三角和方块: △ ▼ ■ □
ishuzi 输入各类数字序号: Ⅳ ⅳ ① ⑴ ㈠
idaxieshuzi 输入中文大写数字: 叁 壹
imale ifemale 输入男女性别符号: ♂ ♀

最强大的当然不是系统内部的这些,而是可以和搜狗一样,自定义快捷方式!例如,你可以搜索到心形(heart symbol)的16进制格式的Unicode编码是0x2665(更多搜索参考Unicode Chart官方站点),于是你可以在special_table文件后输入如下一行——

love = 0x2665


然后重启scim(使用 sudo pkill -9 scim* 杀死scim进程,接着 scim -d 将scim做为精灵守护daemon后台程序启动),输入ilove,便可以看到心形符号了 ♥.

同理,你可以继续添加,例如个人通信地址等等。例如俺所添加的——
580 #user-defined
581 love = 0x2665
582 email = jerome.rivest.long # gmail.com
583 emaildisguised = jerome@rivest@long#gmail.com
584 name = jtuki

最后给大家献上俺用如此方式编辑的一条语句: ♂ ♥ ♀ ∧ ♀ ♥ ♂ → another or more ♀ ♂ :D

--jtuki

SCIM输入法 VPN连接 network-admin启动 @ Ubuntu

这一天半整标题上的这些东西,花去了大量时间,于心不忍,于是blog一则记录之。

------------------------------------------------------

首先是觉得SCIM的词库实在是不太理想,于是想将搜狗拼音输入法的众多基于用户分享的、txt格式的细胞词库转换过来为我所用。得到google反馈,在~/.scim下找到了两个文件夹,pinyin 和 sys-tables,顾名思义,前者是拼音输入法相关数据,后者是基于码表的输入法的相关数据,要对其展开工作的就是前者了。

pinyin文件夹中有5个文件(tar打包文件是我临时做的备份,并非系统所有,标号1-5是vim中的行计数)
1 phrase_lib
2 pinyin_backup.tar
3 pinyin_phrase_index
4 pinyin_phrase_lib
5 pinyin_table

其中phrase_lib内容大致如下(提取前面一小段,标号1-5是vim中的行计数)
1 SCIM_Phrase_Library_TEXT
2 VERSION_0_6
3 26468
4 121732
5 2212
6 代理    4965
7 服务器  8329
8 韩国    5901
9 运行    9074

可以发现,如果phrase_lib中只有前面的汉字部分,例如“代理”,而没有后面的数字部分,例如“4965”,那么咱们就爽了——直接将细胞词库中无数的词组复制粘贴到这个文件中就万事大吉了!可惜事实并非如此。
google搜索到了SCIM中有关phrase_lib文件的源代码,其中定义了phrase_lib相关的多个类(classes)。可以看出,后面的数字是offset偏移量,是为了方便输入时的即时搜索。查看另外的两个文件pinyin_phrase_lib和pinyin_phrase_index也可以印证这一点。

事到如今,直接将细胞词库导入的办法基本上行不通了,于是继续google,看是否有人已经做好了更棒的输入法,结果找到了一个scim-python,居然是直接将搜狗中主要的细胞词库作为其默认词库!大喜!
直接编译scim-python需要安装若干dev开发包,俺为了节省一点硬盘空间,继续google看是否有已编译好的deb文件下载。结果发现还真有不少,继续大喜!从中挑选了一个看起来比较靠谱的,下载之,使用dpkg安装,没有dependencies依赖问题。
直到这里,我都是处于轻松惬意的状态。谁知安装完毕后结束X-window,重新登录,居然花掉了大约半分钟才进入桌面!而且还擅作主张滴给俺直接启动了一个gnome-terminal,不带标题栏的!急忙关闭gnome-terminal,却发现所有打开的窗口都没了标题栏,而且我给系统自定义的快捷键全部失效。最可怕的是整个系统速度慢如蜗牛,卡得让人无法忍受。 :(
于是赶紧去确认下俺刚才到底安装滴啥宝贝,咋这么大威力,一下子把俺系统弄这模样了。一看,原来是一个svn临时开发版本,既非stable版本,也非rc版本,甚至beta都够不上!额滴神,怪只怪自己没看清。由此可见,各位朋友今后安装非官方deb包时,务必注意看清版本号。

卸载掉(使用purge,将配置文件也一并删除)scim-python,却发现系统依然如此。甚是不爽,于是重新配置可能出现问题的gnome主要部分:
sudo dpkg-reconfigure gnome-session
sudo dpkg-reconfigure gnome-icon-theme
sudo dpkg-reconfigure gnome-applets
sudo dpkg-reconfigure gnome-applets-data
sudo dpkg-reconfigure gnome-desktop-data
sudo dpkg-reconfigure gnome-themes

熟料无效,顿时抓狂。

幸亏俺做事情不怕野蛮,也不怕辛苦。<Ctrl>+<Alt>+<F1>进入黑色的命令行世界,进行极具风险但成功率很高的purge+install工作(风险很高,如果愿意尝试,后果自己负责咯 囧)。
将可能出现问题的软件包删除——
sudo aptitude purge gnome-session gnome-icon-theme gnome-applets gnome-applets-data gnome-desktop-data gnome-themes
当提示你是否决定彻底删除这些软件包和 configuration 配置文件时,别手软,敲入Y继续。一下删除掉了180M的东西,当我看到屏幕上冒出 rhythmbox 的时候,泪奔了,大量的 playlist 文件还没来得及备份呢!

删除完毕后,重新安装。需要多增加一个 gdm ( gnome 的登录管理器)——
sudo aptitude install gnome-session gnome-icon-theme gnome-applets gnome-applets-data gnome-desktop-data gnome-themes gdm

重新登录,一切OK咯。 :D
就先写这么多,吃完饭后有时间了再接着写剩下的部分。

--------

update1: 后续文章在这里——
有关SCIM输入法的tip一则
network-admin无法启动的解决办法
强大好玩滴VPN!

update2(2008年11月6日)
进行上述的 purge+install 之后,系统会同时删除 gdebi (本地 deb 包安装管理工具),下载的 deb 包会无法找到关联。简单情况直接 dpkg -i file.deb 就可解决。如果遇到 dependencies 比较复杂的情况,可以重新安装 gdebi 工具(推荐)!同时,如果你希望找到 rhythmxbox 的替代软件,这里推荐 Amarok (有更加强大的 playlist 管理功能,界面和 foobar2000 类似)或者是 Audacious (界面很清新,有 winamp 的风范,支持的 plugins 范围很广泛)。

update3(2008年11月8日)
插入mp3提示 Cannot mount volume. Invalid mount option when attempting to mount the volume.
估计是由于 gnome-volume-manager 在 purge 中同样被删除的缘故。但是无需重新安装之,仅仅升级 gnome-mount 和 mount 便可解决问题。

--jtuki