Tuesday, November 25, 2008

拜Mathematica

昨天遇到一个不定积分的求解(是大一的时候写在微积分课本上的,但是没有标注如何解答)—— ∫ Sec[x]^3 * Tan[x]^4 dx。这应该是一种普遍形式 Sec[x]^m * Tan[x]^n 的特殊例子。

对于m与n分别是偶偶、偶奇、奇奇的情况都比较容易求解,唯独奇偶不知如何处理。刚才突然看到微积分课本后的Mathematica 简介,发现其符号运算强大到仅需一行命令就可以做很牛逼很复杂很强悍的不定积分(例如 Sin[x^2] 这种原函数并非初等函数的函数也可以做)!于是打开 Mathematica ,输入如下表达式
f[x_] = Sec[x]^3 * Tan[x]^4;
Integrate[f[x], x]

额滴神啊,瞬间就给出了如下的答案
1/768 Sec[x]^6 (96 ArcTanh[Tan[x/2]] Cos[x]^6+78 Sin[x]-47 Sin[3 x]+3 Sin[5 x])

真的是五体投地!没太被主攻数值计算类型的科学计算软件(例如 Matlab Octave Scilab 等等)震撼过,这下子真的是被强大牛逼无敌滴符号运算震撼了!拜 Mathematica!不过俺真滴是很想知道这玩意的 kernel 是咋演算如此复杂的不定积分的。

没有安装 Mathematica 滴童鞋们可以去这里玩耍一把不定积分——http://integrals.wolfram.com/index.jsp

ps.

这里大致列举了 integrator 的两种实现方式(俺猜测肯定不止这两种,老陶如果看见了此日志,可以稍微详细滴描述下)。第一种很好理解,套用现成的 general form for an integral,然后微分之,继而和被积函数对比,确定未知参数。第二种所谓 generalized hypergeometric functions 俺没看明白,不过估计有可能是俺的那个积分表达式所采取的方式,因为如果我输入如下表达式
f[x_] = Sec[x]^m * Tan[x]^n;
Integrate[f[x],x]

就会得到如下答案
(1/(-1+m+n))Hypergeometric2F1[1/2 (1-m-n),(1-n)/2,1/2 (3-m-n),Cos[x]^2] Sec[x]^m (Sin[x]^2)^(1/2-n/2) Tan[x]^(-1+n)

查看了 Hypergeometric2F1 的帮助文档,可惜没看明白到底是啥分布函数 囧。等有时间了再仔细阅读之

Saturday, November 22, 2008

google用户自己主导自己的搜索结果(SearchWiki)

以前在blog里写过一则《强大好玩滴VPN》,不料今天用这个VPN服务上网居然有了一个非常令人欣喜的发现——來自google的searchwiki!具体的截图看这里(点击图片进入 picassa_web_albums 查看更多)——








From google

不仅仅可以promote,还可以进行抹掉某条result的操作。尚不清楚这种人为的操作是否会影响到其他人的搜索结果(排名情况等等),不过俺估计肯定是不会影响的(已经搜索证实,确实是不会影响的,具体查看來自google官方博客的通告),但是自身的搜索体验确实就棒了不少了!

ps.  找到了一些资源,粘贴在此——
來自google官方博客滴消息youtube上滴演示(不想设置VPN或者代理的可以看下体验体验);techcrunch上滴文章(描述成digg-like似乎有些欠妥)

update:现在可以直接访问了。 :-)

--jtuki

图像拼接 share autostitch

这几天做数字图像处理课程的一个presentation(图像拼接),查阅了一些资料,在这里share一下。

图像拼接中的方法主要是直接拼接法(Direct Method)和基于特征点的拼接(Feature-Based Method)。

前者有一篇很好的论文,需要界定详细的镜头物理参数等等,比较复杂。

后者有一些比较著名的特征点检测算法。例如Harris算子, 也叫做角点检测子(Corner Detector),一般情况下效果不错,对旋转、灰度值统一线性变化都不敏感(也就是哪怕被检测对象旋转了或者是亮度均匀改变了,同样还是能够检测到相 同的特征点),但是对图像缩放(image scale)过于敏感。于是有了现在用的比较普遍的SIFT算法(Scale Invariant Feature Transform),主要参考的论文是David Lowe(SIFT算法的提出者)自己写滴一文, 行文流畅,很值得一读,特别是使用热扩散方程类比证明连续高斯滤波之差(DoG)在某种条件下等效于高斯滤波的拉普拉斯变换(LoG),尺度空间 (scale space)和特征点定位(Keypoint localization),以及后面的一些关于特征点描述子(Keypoint Descriptor)的说明都很值得一读(不过俺自己只是匆匆瞟了下,后面都没读完就直接翻看Conclusions了 囧)。

比较简单的实现可以直接使用matlab中的IPT里的一些函数来做,因为David Lowe的已经给出了SIFT的二进制实现和matlab的调用,简单情况下的图像变换(变换矩阵的确定)和联结相对来说就容易许多了。

如果需要开源的SIFT算法的实现,可以去这个链接里翻。(有灰常多种类滴实现,包括 C_&_matlab 的,C# 的等等)

这里给大家再share一个很强悍的全景图拼接软件 autostitch,是上文中提到的SIFT的提出者 David Lowe 和他的一个博士生 Brown 写的,他们所写的论文 Automatic Panoramic Image Stitching using Invariant Features 也确实堪称经典。如果想要把自己在海边度假的照片拼接起来、成为一副全景图的话,那么这款软件(尽管只免费提供 demo)绝对是首选!(起码现在看起来是如此 囧)

还有一些拼接实现,例如 pano-tools Hugin autopano-sift 等等都没有能够做到上述的 autostitch 的自动化识别和处理的效果(包括自动化识别大量图像的配对关系、自动确定配对图像间的空间关系、图像初步拼接后的多通道渲染处理等等)。关于其使用和体验分析可以看这里:AutoStitch 自動接圖軟體-全景圖(Panorama). 不过最好滴方式自然是下载来尝试一把。

--jtuki

Tuesday, November 11, 2008

排队排队排长队

开机后不自觉的输入了豆瓣的网址,看到几个好友推荐的一文——《被毒奶喂大的我们 该唱怎样的赞歌赞美你?》。很是无奈,不过在这里还是不说什么了吧。

这里要随便扯扯的,是另外一个事情。关于考研报名的长队。

今天上午一童鞋跑去考研报名现场确认报名(也就是照相等工作),回来后大呼幸亏去得早。咱们问他排在多远的地方,他说大约是100m处。我大惊失色(俺承认自己确实没有意识到“人多”啥含义),结果才得知居然总长度大约400m左右 囧。国内的本科生以及研究生教育体系和无奈滴研究生选拔机制不是本文的讨论的主题,而是另外一点——如何改进这个排队机制——俺倒是愿意八卦一下谈一谈。

研究生报名的排队和银行取款等的排队很类似,从本质上看,被处理时间的先后对最终结果影响不大——总不会说你先取款就可以奖给你100块钱。与此不同的是另一种排队,例如托福考试报名,例如奥运开幕式门票网上订票,在这一种排队中,被处理时间的先后对最终结果的影响是明显的——你可能晚了一天就没得考位(俺当时就是个悲惨的例子)或者门票了!咱们姑且将前者称作时间无关性排队,后者称作时间有关性排队。

咱们当前大多数的考研报名自然是长龙式——一条人站在那里无所事事,慢慢等待自己成为队伍中的头一个。工作人员尽管不止一人,但是也都还挺清闲,还能够聊聊天讲讲笑话。但是整个排队系统中被处理的客体——学生群体——的时间就被白白浪费了。(不要说 Iphone 或者是 G1-Android 首发的时候排长龙的现象,甚至是印有 Obama 大选胜利的报纸被人们排长龙热卖的现象,性质不一样 囧)

如何改进?参考下银行吧。对,就是象征排队顺序先后的号码!每个人去了之后都可以领一张号码纸,将这个号码减去当前正在被处理的号码,就得到了一个数字——表示自己被排在了多少位(往往是看到数字后就直接晕掉了 囧)。后面怎么办就很自然了,当然是估算下时间,例如排在第1000位,前面每位被处理的时间大约是1分钟,那么你只要保证在1000分钟后左右的时间再过来就行了(这里的数字纯属理论值,如有雷同,纯属故意)。

当然,在实际运作过程中还会有一些麻烦。比如很自然的很可能就会出现号码造假,号码领取票贩子,走后门不公正,领取号码后却长时间没来,发放号码的唯一性问题(例如根据学号或者身份证等等,但是无疑会增加发放号码的工作人员的工作负荷),等候室中最佳等待人数大小的确定(例如排队缓冲区大小是10个人,那么当200号在被处理时,201-210号就进入等候室排队等待,当轮到210号开始被处理时,211-220就开始接着上面10个人进入等候室,这个数字主要是根据处理方的工作人员速度决定),等等。这些问题都有一些相应的解决办法,就看付出的代价(学校需要在号码纸的制作和号码纸的发派等方面做更多的工作)和能够被回收的成本(学生的时间)之间的博弈了。

ps.

当年奥运开幕式门票网上订票系统就是因为没有做好人数限制工作,导致系统崩溃。如果能够做好服务器间的分流、排队等待和最大被处理人数的限制(但是依然可以通过 IP 和浏览器 cookie 等记录排队顺序)等工作,想必也不至于直接崩溃掉。Firefox 3.0 首发当日的下载系统也是如此。

update1(2008年11月11日 19点14分)

吃饭的时候突然想到忘记考虑了报名人数的问题。例如此次武汉大学考研报名现场确认的限定时间是5天,那么如果5天时间搞不定怎么办?俺相信这时间长度应该是个经验值,应该没啥问题。可是如果搞不定呢?咱们也不能排除这可能。号码计数就可以解决这个问题,统计和估算下网上报名的人数、每个人被处理的速度、每天工作人员的工作时间和相应工作人员的数量,就可以得到一个时间上的估计值,以及每天理论上能够被处理的人数——例如每天只能够处理2000人,那么每天发放号码到2100人的时候就开始停止发放(因为可能有人会领了号码不来,所以给出一定的冗余)。

update2(2008年11月13日)

纠正一个隐晦滴错误,上文中暗示了报名的速度慢。其实今天俺去报名了,觉得速度还成。一次性进去20个,然后在里面进行处理,根据内部人数的多少选择是否继续放人进去,工作人员滴效率也还算是挺不错的其实。 囧

--jtuki

Monday, November 10, 2008

给BBer们唠叨下由于google天气预报造成滴相关事宜

(俺首先承认自己是越来越不会起标题了,本想直接取名叫无题,最终还是罢了,以一长句话作为标题貌似也不错)

使用黑莓滴朋友可能都知道这个软件 BBer_SMS_Manager(某个爱好者开发的免费软件),可以将你的数千条短信附带电话簿一起导出,还可以保存成为文本或者 Excel 表格的形式,非常实用。(如果你还没尝试过,就赶紧去尝试一把吧。)

可惜今天俺着实是不太运气。本是一门公选课的倒数第二次课,俺弄错了日期,以为是最后一次,于是风风火火滴从一个校区坐车到另一个校区去上课,谁知居然被老师放了鸽子,座位前方还坐着一对小两口赌气闹别扭。晚上回来想备份下短信,谁知这 BBer_SMS_Manager 也不怎么给面子,出现了大致如下的错误——

Access violation at address XXXXXXXX in module 'BBerSMSManager.exe'. Read of address XXXXXXXX.

定位了一下错误,发现了错误的根源所在。记录在此,供已经碰到此问题正困扰不已滴朋友,或者是尚未碰到但有可能在未来某个时间碰到此问题滴朋友们参考,顺便为貌似比较晦气滴俺积攒点RP。

由于我使用了google天气预报,可能是运营商网络拥塞的缘故,我常常会收到类似如下的预报——



下方的 [some text missing] 可不是预报的文本内容,而可能是信息中丢失了某些帧,导致手机自动用此类语句作为提醒——换句话说,这是一个非常规的、难以被一般软件识别的文本内容(因为是手机自动替换相关信息所产生的嘛)。平时无所谓,但是用 BBer_SMS_Manager 就出现问题了,因为它也没办法识别这段消息!

同理,如果你也碰到了此类问题,就定位一下,看 BBer_SMS_Manager 是在哪里卡壳了,寻找到出错点,删除出错点所在的短信就OK咯。

如何删除呢?不要一个个去肉眼定位寻找,那就太枉费黑莓手机良好的操作系统设计了。(我使用的是8700系列,其他系列类似操作便可)打开主界面选择 Search 搜索(或者是直接按 S 便可快捷进入搜索界面),输入 keyword 例如“湖北 武汉”,选择范围是 messages,自动搜索便可以了——



搜索到了再如何?当然是 Delete 咯(直接按快捷键 D 便可删除)。但是依旧得益于Blackberry的完美操作设置——定位到某个日期,按下滑轮,选择 Delete Prior 便可删除在此日期前的被搜索到的全部短信了。 :D



--jtuki

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