Marguerite Su: Golang/Ruby Programmer, openSUSE Member

openSUSE 下的 Fcitx 输入法

这是给 openSUSE Marketing team 做的,大概会写到 news.opensuse.org 的 12.3 发布日志上。介绍了一些 Fcitx 的多语言支持和高级功能。 Youku: Download: http://115.com/u/26338483

openSUSE Linux 战渣浪详解教程

自从去年十一申请到哔哩哔哩账户,一直也没有加入阿婆主的行列中去,我心有愧…于是就做了一个授人以渔的从原理到实现的教程,讲述了一些阿婆主喜闻乐见的基础知识。 “战渣浪” 原理 Av Fun 和哔哩哔哩的视频都是外链到渣浪、土豆、优酷这些视频站的。 平均码率大于 1047KB/s 的视频会被二次压缩(我没写错,我也不懂为什么会有这个奇葩的设定) 非 flv 封装格式的视频会被二次压缩 视频非 AVC 编码、音频非 AAC 编码会被二次压缩 二次压缩首先会掉帧,其次会过审。你投原创自然没问题也不需要战,我只看影视区的。 来战! 查看平均码率 FFMpeg 查看码率的方法是 ffmpeg -i 视频文件 Input #0, matroska,webm, from '谎言满屋.House.of.Lies.S01E01.Chi_Eng.AC3.1024X576.x264-五零字幕组.mkv': Metadata: creation_time : 2012-06-06 12:52:18 Duration: 00:33:28.38, start: 0.000000, bitrate: 1585 kb/s Stream #0:0: Video: h264 (Main), yuv420p, 1024x576 [SAR 1:1 DAR 16:9], 23.98 fps, 23.98 tbr, 1k tbn, 47.95 tbc (default) Stream #0:1: Audio: ac3, 48000 Hz, 5. Read more...

openSUSE 下玩围棋

Update:更新了评论里两位巨巨指正的技术错误和建议到正文中。 主要是整理下 Linux 下面的围棋软件近况、设置方法和已知故障。 引擎 GNUGo 这个是所有围棋软件的后端,简单说就是个棋力十二级的机器人。 不是很明白这里的电脑棋力单位“级”与我们人类的棋力单位“段”的换算关系,因为电脑肯定没法参加人类的段位考试,而两者也很少对弈,围棋引擎很奇怪的,中低段位的人类和引擎对弈,基本很难赢。它的思考方法和这些段位的人类很不一样,比如人类会在开局考虑一些谋篇布局,而电脑只有那几个布局定式,根据你落子的位置优化选出一个; 人类在中盘会考虑大局,而电脑除非你不与它对抗(它就按照定式走),如果出现对抗那它的算法就是怎么堵截你在数学上最优,而人类肯定不是这样,有些禁忌位也一样有人放,即所谓的“妙手”、“妖刀”,当然更多的还是“俗手”、“蠢手”。而高段位的人类和引擎对弈中,引擎被虐的很惨,还不如三段的人类去下,因为高段位的变化很多,思考质量也不亚于电脑。 围棋引擎流行的能跑在 Linux 下的有这些:Fuego(棋力 9 段,9×9 棋盘), GNU Go(棋力 12 级), MoGo, Pachi(棋力 4 段),其中开源最强的是 Fuego(因为闭源引擎用的多数不是蒙地卡罗方法,强是应该的)。 当然这些强弱是对有几年棋龄的业余棋手而言的,我们这种入门小菜哪个都下不过,随意选个就开始好了。一般发行版都会带 GNUGo。我们就用它了。 另外关于围棋程序比较好的网站是:Sensei’s Library,有各种引擎比较详细的介绍和测评,至于界面,还能用的我都在下面整理出来了,完整列表见此。 界面 gGo Pandanet 电脑围棋界比较有名的熊猫网出的。Java 写的,最新版本发布于 2004 年。 RubyGo Ruby 写的,最新版本发布于 2005 年。 qGo Qt3 写的,最新版本发布于 2008 年。 CGoban 这其实是围棋网 KGS 的官方客户端。Java 写的,版本也比较老。 glGo Pandanet 出的,最后更新于 2008 年,但是依赖很烦,依然依赖 python 2.5。没有源代码(网页打不开),非开源软件。 这些都是老黄历了,网上宣传的基本也都是这些,因为这是 IGS 或者 KGS 这些业内比较知名的组织开发的。但是在现今的 Linux 上都比较难跑。我整理了一份比较好跑的界面: qGo2 这是 qGo 的 Qt4 移植,可以说几多波折,开发者换了一个又一个,因为它太强大了,支持这些战网:IGS, WING, LGS, CyberORO, Tygem, Tom, and eWeiqi 的对弈和观战(看好了后面两个是中国的),还是目前最强大的 sgf(通用围棋棋谱格式,用于复盘和自己打谱)编辑器。 quarry 这是一个本地围棋和五子棋客户端。用 GNUGo 或 GRhino 做后端。配置 GTP 后端的时候要加 -mode gtp –quiet 参数才能把 /usr/bin/gnugo 跑起来。 kigo 只用于 KDE,自动识别后端。我目前用这个。但是有一个 Bug 就是电脑不会认输,走不下去了就一直下虚手(跳过),需要你手动结束游戏才能统计“目”。 其中前两者我都有打包,但是还没有推送到 openSUSE 的 games 源,迫不及待的话可以用我的 home:MargueriteSu:branches:M17N 源里的 RPM。 Read more...

openshift 搭建 wordpress 教程

最近把 suse.ws 搬家到了 Red Hat 的 openshift.com。原因是我个人博客的空间 IP 也被光荣认证了,而 openSUSE 简体中文官方主站不能在简体中文地区不能访问呀。又没有赞助就选了搞基的红帽子搞的 PaaS。 下面把搭建时候的要点简单说一下。 准备 你要有一个 openshift 账户。每个账户可以开三个 Gear,共享 3 GB 硬盘和 1.5 GB 内存(VPS 泪流满面)。 你要会 Git 基本命令。比如 git clone,git add,git rm,git commit。不会的快去学习 codeschool 的免费课程 Try Git,半个小时包教包会。 你要安装 rvm 和 ruby,然后安装 openshift 的命令行客户端 rhc,具体的 Ruby 新新人指南可以看我的上一篇文章。 安装 WordPress 生成 ssh 密钥对并把公共密钥贴到 openshift 去。 申请一个 Gear,选 wordpress。然后看需要可以添加一个 phpMyAdmin 的 Cartridge。把它给你的数据库 root 用户名和密码以及数据库名记在小本本上别弄丢了。 git clone 返回给你的那个 repo,php/wp-config-example.php 改成 php/wp-config.php,把里面的数据库名、root 用户名和密码安装上面的填了。WPLANG 愿意改改一下。 提交一次,留意命令行中的信息,会说数据库的 IP。 Read more...

Ruby on Rails 学习笔记-安装和 Hello World

因为想给 Open Build Service 加 i18n 支持,所以要学习下 Ruby on Rails。 什么是 Ruby on Rails? 推特上有 Ruby 程序员说是「肉夹馍」的关系,意思是其实硬菜在 Ruby。 对新手这么要求可能太苛刻了,初心者应该是「荷叶包饭」的关系,意思是你真正一开始吃的部分是 Rails。 但是要想学好 Ruby on Rails,其实应该是「鸡蛋灌饼」的关系,就是 Ruby & Rails,两手都要硬,毕竟所有的东西都是用 Ruby 写,要是没有系统学习过 Ruby 可能登不了大雅之堂。但 Rails 不熟悉啥都当 C++ 写那用它开发就没意思了。 科学的解释是这样的,Ruby 是屌丝松本行弘有感于白富美们漂亮的胸不大,胸大的腿不长,腿长的说话声音不好听,声音好听的长相又不是 S 级而自主研发的一个女神,同时兼顾了其他屌丝的需求(几乎所有的内置方法都可以由类在运行时重定义,眼前的加不是加,你说的 < 是什么 <,什么的)。gem 类似于芭比娃娃的衣橱(类似 perl 的 CPAN,python 的 PYPI,带平台的分发格式)。Rails 是其中一个 gem,一个网络框架。于是 Ruby on Rails 就有点像,Wordpress on PHP 的意思,然后你就是在 WordPress 上开发主题。。。 不要怪我吐槽它啊。。。less is more:()少做多。还有:Ruby 是让程序员「快乐」的一门语言。。。。您再想想? 开发环境 教材:Ruby on Rails Tutorial 3rd editon(好象是新浪爱问上下载的) Read more...

[Solved] btrfs 开机 initramfs 加载时间过长

这是困扰了我一年半的一个 bug,昨晚被 btrfs ML 的 cwillu 几封邮件解决了。 最早开始使用 btrfs 是在 10 年 11 月,那时我换上了听歌比 ssd 更有质感的 1TB 西数 7200 转机械硬盘,重装系统就装了那之前炒作的沸沸扬扬的「下一代文件系统」btrfs。不得不说,很少有人写文章像我这么求实了。「下一代文件系统」,那不就是「future never actually comes!」吗?!刚装机就遇到了一个 serious bug,那就是 btrfs 的几个进程 100% cpu 使用率,基本幻灯片。怀疑过 chromium,firefox 的数据库导致碎片,反正怀疑了一大堆,最终是升级到 3.2 莫名其妙的解决了。(后来 OBS 又在这上面吃了一回屎,12.2 发布前几周,RC 2 的时候,升级服务器换了 btrfs,结果卡的 scheduler 一动不动,编译服务变成了一块大网盘,最终跳掉了 RC3) 这次的这个 bug 是 12.2 后带来的。我之前的 RC 版本没注意,但根据我编辑维基的记录,是在 RC 2 出现的。当时是因为我看到了 lizards 的一篇小短文,叫做「openSUSE 2 秒启动」,本来想试做然后发到 suse.ws 的。结果人家全部两秒,我的 NetworkManager 就要 80000+ms 才能启动。这不是坑人么。于是找到 NM 的维护者 BinLi 报了 bug。 中间很曲折,BinLi 无法复现,后来有个用户说这 bug 他也有,重装改成 ext4 好了。可是我用 Linux 是木有重装机这个概念的。因为垃圾我能清理掉(Windows 完全清不掉!),Linux 又稳定,我自己是打包者也没有「/usr 污染」,于是这台电脑上攒了好多的资料。比如 300GB 的电影。。。 Read more...

当梦想照进现实 记 Ubuntu Tweak 的烂尾

本文是从我的角度来揣摩主席的,说的可能不对(语序,那叫不可能对!)。首先澄清我不是在黑他(你一说这话就没好事,这不是黑是什么呀哎呦喂),主席 tualatrix chau,是第四帝国的老朋友,我朝金吾卫、奋威校尉 @shellex 和国子监祭酒、工部造作局大匠 @csslayer 的好基友,不过他既然已经是党内最高职务了,我这边就没有什么可以开出的价码了。只能说暗恨他不能为我所用什么的,不能说黑他。和他的关系是:认识、聊过、不熟。因此也别指望从这里得到什么独家新闻。算是从逻辑的角度很世故的看待这件事。(鬼扯,阴谋论就说阴谋论好啦!)事情大家已经很清楚了,所以就是社论。(明明是胡勒!) 大约两周前,@shellex 找工作,我和他聊去大公司还是 free lance 的问题,期间参与的还有 SuSE 的 desktop team leader joeyzheng。我当时做出的判断是:C 家的 home based 不好,它针对的对象不是应届生,是 SuSE 在职的那些走在 Google青云之路上想暂时歇歇脚的大小牛。解释下什么是青云之路,中国 IT 职场有条青云之路,非常 clear 的 path: 针对超级大牛:SuSE/RedHat -> Google,比如苏哲,黄鹏。 针对中小牛:SuSE/RedHat -> Canonical -> Google。 针对自以为很牛的一般人:网易/百度/腾讯 -> 自主创业 针对苦逼:中关村/张江/华强北/各种科技园 -> forever 不在前两条路上走着的人们,无论你是 virushuo 还是 tinyfool,总归有点半路出家的感觉,在另一个 level 的人的眼里看来总是很 cheap,就好比金融口一个 standardchartered/HSBC/Citi -> Goldman Sachs/Morgan Stanley/Merrill Lynch/UBS 的人看一个 ICBC <-> CCB 转来转去的人,就是人家两步超神,你转来转去始终在高手的阶位不上不下的感觉。 其中 C 家说清楚了就是进去偷个懒,为去西海岸攒点生活费的地方。那为什么招主席? 主席的经历说真的我不是很清楚,我进 Linux 圈是在 09 年 10 月,认识他的时候他已经是 C 家的人了,Ubuntu Tweak 也已经开发了很久。但根据圈里的风评和他们言语里给人的感觉,主席就是个 Python 程序员,只不过阴差阳错选了个「好」项目,近水楼台地,在 10 年 C 家刚有中国分部的时候入主了 C 家。简单说,天时地利,没什么羡慕也没什么嫉妒的。就好比你金融专业一毕业就赶上金融危机大规模裁员一样,没什么好抱怨的,造化弄人而已。 Read more...

CJK 的尊嚴(三)塵埃

首先,按照 @csslayer 的說法,紅地毯鋪到大門口,再該傳教傳教該懲戒懲戒。彙報下進展: 虎戰士(@tigersoldier) 寫了一篇很客觀的技術文:關於 GNOME 整合 IBUS 事件的技術細節 它的技術方面說的很客觀,「正確與否」我不懂(拜托要是真参考了我的「技术文」要给 pingback 哦),老 K 可能說那是個渣,但至少它解釋給普通用戶聽應該夠,注意,那也是一篇傳教文,該腦補腦補,該過濾過濾。 但它的結論是錯的。所以看技術就好。但也不是它想錯,是事情後來變化了。 正在開發 IBUS 的日本人 Takao Fujiwara 說:「也許我可以加一個判斷 ibus.pc 是否存在的東西,但這取決於 GNOME 的要求,大策略是他們定的。」 意思就是說,IBUS 的開發者私下裏也覺得應該有個開關,但到最後給不給這個開關,還是要看 GNOME 的「大策略」。 另外即使有這樣的開關,這個開關也不是給用戶的,是給帖子裏的發行版維護者的。就像虎戰士說的,你的發行版沒給你開,還有的選擇,那就是能自己開的 gentoo。這比「drop GNOME」的選擇好了一些,至少還可以有 GNOME 用,雖然折騰过程不比直接 drop 掉簡單。 這正是我這樣的發行版維護者所喜聞樂見的。至少態度先擺出來。到時候你整合的好,用戶歡迎,自然給你打開; 整合的不好,也有 fallback。這也是我當初去 GNOME DESKTOP DEVEL LIST 發言的目的。目的達到了。我就沒有必要再干預什麼了。因爲我的發行版同樣有用着 GNOME 的小白。 但目前有沒有,不確定。要說之前是看負面,現在只能看平。看正面還太早。因爲回覆者沒有決定權。 這依然集中在「編譯依賴」這個環節,而不是「運行 runtime」這個環節。也就是說,你發行版沒開,會怎樣,誰來管。太多技術我不知道,但屢次被提到的一個東西叫 CLUTTER,還有虎戰士提到的 DAEMON,CENTER,究竟不開後會不會死球。想把這個噴出水平我來不了。就像 Xu 私下裏說的,到時候中毒已深,解套可得幾個 release。 @csslayer 作爲「其他輸入法」的開發者,私下對所謂「中文用戶」的素質極爲失望,在郵件列表裏面這麼說:「即使,即使,GNOME 只有一個 IBUS,我依然能做 FCITX 的 GNOME 支持。」。至於爲什麼沒有對 GNOME 失望,拜託,就沒抱希望好嗎? 「在 KDE 活着自由得多」—— @csslayer 套用老 K 的話,我也可以自信的告訴我的發行版的用戶:「即使,即使 GNOME 只有一個 IBUS,我大 KDE 依然有辦法讓 FCITX 作爲 openSUSE 簡體中文的默認輸入法,GCIN 作爲 openSUSE 繁體中文的默認輸入法。而不會讓大家之前的投票都作廢」。 Read more...

CJK 的尊嚴(三)聖戰

前面 po 了給各位 openSUSE 使用者的彙報,被「戰友」粱水龍轉載到了中文開源界排名很高的 Linuxtoy 上。發生了一些不必要的爭執。其中很多人的辯論基礎都是錯的,甚至沒有站在正確的主題上。原因在於他們對輸入法的不瞭解,雖然大家都在用。 前文是流程彙報,沒有解釋技術細節(這也是多數後續爭執沒踩對節拍的原因),所以我寫了這篇投資者教育,會盡力解釋我明白的技術細節。至於我也不明白的,相信大家在瞭解了我懂的技術細節之後再討論,真正的輸入法開發者是不介意在關鍵問題上教大家一些東西的。這對整個中文開源圈都是好事。 但請不要覺得我應該天經地義的爲你們架起這座橋樑,我比客服貴多了。不止是在 FOSS 社區,生活中也是這樣,一個人可以自行決定她想說什麼而又不說什麼,所以這次要還不帶耳朵,說些空中樓閣的「理論」,那就沒有下次了。就像真正的輸入法開發者說的:「let it be, let it be 二逼」。但沒有人是真想做 XX 的都是無意中犯錯的對麼?只要不是無藥可救,那就都有地方願意收留你。 標題的含義 我們其實一直都很沒有尊嚴。請不要民族主義衝頭反駁。下面是一些普通用戶不知道的開發細節,解釋了爲什麼。這是爭論的基礎。不要對它爭論,因爲你真的不懂。你可以要求更多的例子和細節,但請不要就此爭論。沒有結果。 中文在開源界一直處於「二流」的位置。這是 GNOME 開發者說的。 爲什麼想必不用說了。他們自以爲是核心的開發者。我們做的是敲邊鼓。所以他們不懂我們的語言不重要。我們會用他們的語言來發。這就給他們自大的誤解說,他們很大。其實很多工作是我們做的。包括核心。GNOME 上游的 Network Manager 誰維護的?中國人。 大到什麼程度呢?大到他們可以自以爲能夠決定我們的事。一次兩次叫做沒有考慮到,總是這樣那就叫不在意。 早些年,使用 Linux 的人是不是會發現無論我們做了什麼本地化定製,都會被上游下一個版本的一些改動覆蓋掉,導致我們被逼去重新做這些定製? 舉例來說,Wine 模擬器的中文字體。我們有補丁,上游不收。再舉例,openSUSE 的 freetype2 補丁,上游不收。爲什麼呢?有什麼都不懂的西文用戶說,會影響我的 liberation sans。實際上這個補丁根本就沒有碰過它。於是怎樣呢?我們現在默認還沒有。那麼我就要問,爲什麼影響他們就那麼重要,影響我們就屁都不是?我們沒有貢獻嗎?不是。是整個項目的走向就沒考慮過我們。 所以我們的中文維護者一直在做的就是:重造各種輪子。 這是 Linux 的悲哀。Linux 世界的很多推倒重來都是源於一開始考慮的就不夠,而不是技術發展。因爲他們一開始做的就是滿足自己需要的東西。後來有各種人加入了他們的需要。它慢慢變的重要起來了。再後來,一些人發現前面一些人考慮的不完善,導致他的需要添加不進去了。於是要麼忍,要麼滾。於是推倒重來把所有人的需要再重新設計一遍。 這還僅僅是設計,還不包括實現。知道前面 X11 做了一件什麼事嗎?加了有史以來最大的一個 patch,一萬多行代碼。幹了什麼事情呢?報道這個消息的 Phoronix 都無奈了,什麼特性都沒加,把那些渣實現改掉了。不知道同學們是怎麼看的,我當時的想法是,幸虧我不懂代碼,不然我這個潔癖知道系統上用了一萬多行的渣代碼,我會瘋掉的。 所以爲什麼不在做事情的時候都負責任一點呢!?以前做的不好,至少現在起,我們做好它,之前的錯誤,想要加特性的人幹不了,總會有牛人能幹的。當然,牛人肯幹,GNOME 收不收還是兩說。GNOME 被紅帽和西施社區背後的公司影響很深,就好比這次如果只是幾個輸入法開發者去鬧的話,沒結果的。他們是因爲西施的 CJK 決定放棄 IBus 了。所以才停掉的。 所以有人說我「挾西施以令 GNOME」也好,說我自以爲是 Hero 也好,不重要的,因爲這就是事實。被輸入法開發者承認並尊重的事實。就像小企鵝輸入法作者說的「I’d be happy」。因爲他們之前也鬧過,Lauchpad/Unity/GNOME/KDE/GTK/…,他們的郵件打印出來嚇死你。結果呢?兩手空空。實力不對等的爭吵,都是撒嬌。不管你是小企鵝,還是 IBus,又或是你能想像得到的任何中文開發面向中文用戶的東西。不要以爲你有十四億人口就可以是老大了,在人家眼裏,你叫少數族裔。「CJK 不可放棄」,那是憐憫,霸道的時候還沒到。強推,又怎樣?又能怎樣?你們這些自以爲是大爺吵來吵去的傢伙們,最後不也都捏着鼻子認了? 重要的是人。任何發行版、社區裏都要有溝通國際社區和本地社區的人。前面那文彙報了我是 openSUSE Member 的事情,詳情是怎樣的呢?我等了三個月,西施董事會的 mrdocs 一封 Approving Marguerite Su,半個小時之後,Member 標誌就掛上去了。你們以爲默認輸入法真的是我說的那麼簡單的?你知道要是你不是 M17N 的維護者你最長的提交會等多久嗎?七個月。你知道你不和 Packman 管理員是私交,Packman 編譯平臺的帳號下來要多久嗎?兩年。還批發個鬼的帳號。 Read more...

CJK 的尊嚴

好吧,這名字起的有點義和團的 feeling? 民國 101 年 5 月 11 日,西歷 2012. 這一天絕對值得載入中文自由與開源軟件界史冊。如果有這樣的史冊的話。 首先這天我們 CJK 社區開發的 FOSS 軟件 fcitx/gcin 首次成爲 openSUSE 這種重量級發行版的默認輸入法。 其次這天我們 CJK FOSS 社區首次擺脫了被動接受的局面,對世界發出了自己的聲音。還是在一個重量級社區 GNOME。而且成功了。 這兩者各自都不那麼重要,但是放在一起,就重要了。讓我表述給你聽:我們也可以決定任意一個發行版默認的樣子,而不是只對定製中文版。我們也可以決定世界級社區的走向。 起 5 月 10 日晚,我與 OBS 的全域管理員 coolo 在關於是否在 soft.opensuse.org 上顯示本地化軟件包描述的一個郵件列表主題裏遇到,實際上是我問如何製作這樣的包描述。因爲輸入法這樣的軟件包只對本地化用戶有用,完全沒有必要顯示英文。於是我隨意問了一句,如何替換發行版默認輸入法? 答案簡單的出乎人所料,coolo 說這事隨你,只要去工廠版郵件列表(openSUSE 的主開發列表)上發個文章,抄送給相關各個輸入法的維護者,大家討論出結果,然後你來做就行(技術上的實現很簡單),因爲你是本地化軟件源的管理員。 承 但我覺得輸入法很重要,應該聽聽用戶的聲音,於是我做了這個投票:openSUSE 中日韓輸入法調查。然後投遞到了 G+,臉書,linuxsir 和官方論壇。接着發表了這個主題:建議從 DVD 中替換默認的IBus/SCIM 輸入法。 主題貼本身沒什麼值得好跟進的。大體的經過就是簡體繁體中文沒人發表意見,全部意見來自於投票。大家一致同意 drop scim,替換簡體中文默認輸入法爲更強大的小企鵝輸入法; 替換繁體中文輸入法爲 gcin 和它的衍生品 hime 姬。 由於日文目前沒有輸入法,所以暫時保留 IBus,直到 fcitx-anthy 或其他日文輸入法完全可用。韓文社區沒有迴應。 也就是說,在未來即將到來的 openSUSE 12.2 裏,大家將會有一個全新的更好的中文體驗。(IBus 依然在 DVD 中,安裝時可手選) 轉 openSUSE GNOME 的大佬 Vincent 在上述帖子中問了我一個問題:爲什麼要建議放棄 IBus?GNOME 正在整合 IBus 到它的系統,是強制運行依賴。 Read more...
Previous Page 3 of 4 Next Page