<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"><title>Farseerfc的小窩 - life</title><link href="//farseerfc.me/" rel="alternate"></link><link href="//farseerfc.me/feeds/life.atom.xml" rel="self"></link><id>//farseerfc.me/</id><updated>2020-01-05T17:51:00+09:00</updated><entry><title>和萌狼交換問題</title><link href="//farseerfc.me/question-exchange-horo.html" rel="alternate"></link><published>2020-01-05T17:51:00+09:00</published><updated>2020-01-05T17:51:00+09:00</updated><author><name>farseerfc</name></author><id>tag:farseerfc.me,2020-01-05:/question-exchange-horo.html</id><summary type="html">&lt;p&gt;很抱歉萌狼很早就提過交換問題的事，被我一直咕咕了許久。 &lt;del&gt;拖延症晚期有藥麼&lt;/del&gt;&lt;/p&gt;
&lt;div class="section" id="id2"&gt;
&lt;h2&gt;我的提問和萌狼的回答&lt;/h2&gt;
&lt;p&gt;&lt;a class="reference external" href="https://blog.yoitsu.moe/life/question_exchange_farseerfc.html"&gt;可以去萌狼的博客上看呀&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="q1"&gt;
&lt;h2&gt;Q1：除了博客的「关于」页面以外，还愿意再向咱介绍一下自己嘛？&lt;/h2&gt;
&lt;p&gt;介紹自己啊。 &lt;del&gt;寫了刪刪了寫，不知道該介紹點啥&lt;/del&gt; 就說點自己的興趣？&lt;/p&gt;
&lt;p&gt;喜歡自由開源軟件，喜歡 Arch Linux 。喜歡這些倒不是出於 RMS 和 FSF 那樣道義上的原因，
我覺得商業軟件公司要賺錢吃飯也是無可厚非的。&lt;/p&gt;
&lt;p&gt;喜歡自由軟件是因爲，當我需要知道它到底怎麼工作的時候，有可能去挖代碼，必要的話能去改代碼。
當然我一個人肯定不能讀所有在用的軟件，但是我知道我有讀和修改代碼的權利的話，
那麼我認識的朋友們也同樣有這樣的權利，我不認識的廣大社區有千千萬萬的人也同樣有這樣的權利，
從而我相信當我遇到問題的時候不至於卡在某些人某些公司某些集體的決策上而無法解決。&lt;/p&gt;
&lt;p&gt;基於這個理由，我對開源社區也同樣有公開全部細節的期待。我喜歡 Arch Linux
因爲即便它的內部決策只是一小波人，但是導致決策的討論以及決策的執行方式全是公開的，可以在網上翻閱，
可以追根溯源，這讓我有種安心感。就像我不喜歡 Manjaro 的一點是它有太多細節是翻閱不到的，
雖然它也是開源社區，但是打包細節翻閱不到，包列表翻閱不到，決策的制定和執行的過程也翻閱不到 …&lt;/p&gt;&lt;/div&gt;</summary><content type="html">&lt;p&gt;很抱歉萌狼很早就提過交換問題的事，被我一直咕咕了許久。 &lt;del&gt;拖延症晚期有藥麼&lt;/del&gt;&lt;/p&gt;
&lt;div class="section" id="id2"&gt;
&lt;h2&gt;我的提問和萌狼的回答&lt;/h2&gt;
&lt;p&gt;&lt;a class="reference external" href="https://blog.yoitsu.moe/life/question_exchange_farseerfc.html"&gt;可以去萌狼的博客上看呀&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="q1"&gt;
&lt;h2&gt;Q1：除了博客的「关于」页面以外，还愿意再向咱介绍一下自己嘛？&lt;/h2&gt;
&lt;p&gt;介紹自己啊。 &lt;del&gt;寫了刪刪了寫，不知道該介紹點啥&lt;/del&gt; 就說點自己的興趣？&lt;/p&gt;
&lt;p&gt;喜歡自由開源軟件，喜歡 Arch Linux 。喜歡這些倒不是出於 RMS 和 FSF 那樣道義上的原因，
我覺得商業軟件公司要賺錢吃飯也是無可厚非的。&lt;/p&gt;
&lt;p&gt;喜歡自由軟件是因爲，當我需要知道它到底怎麼工作的時候，有可能去挖代碼，必要的話能去改代碼。
當然我一個人肯定不能讀所有在用的軟件，但是我知道我有讀和修改代碼的權利的話，
那麼我認識的朋友們也同樣有這樣的權利，我不認識的廣大社區有千千萬萬的人也同樣有這樣的權利，
從而我相信當我遇到問題的時候不至於卡在某些人某些公司某些集體的決策上而無法解決。&lt;/p&gt;
&lt;p&gt;基於這個理由，我對開源社區也同樣有公開全部細節的期待。我喜歡 Arch Linux
因爲即便它的內部決策只是一小波人，但是導致決策的討論以及決策的執行方式全是公開的，可以在網上翻閱，
可以追根溯源，這讓我有種安心感。就像我不喜歡 Manjaro 的一點是它有太多細節是翻閱不到的，
雖然它也是開源社區，但是打包細節翻閱不到，包列表翻閱不到，決策的制定和執行的過程也翻閱不到，
通常就只是在他們的論壇上發個通知了事，這我很不喜歡。&lt;/p&gt;
&lt;p&gt;除了喜歡自由開源軟件之外，可能我在網上比較有特點的地方是用繁體字了吧，
也曾經年幼時在水木社區和別人因爲這個吵過嘴，也在
&lt;a class="reference external" href="https://zhuanlan.zhihu.com/p/24586802"&gt;知乎上寫過篇「在知乎用繁體字是怎樣一種體驗」&lt;/a&gt; 。
致力於在我存在的地方爲繁體字愛好者們提供一個安逸的環境，不過好像最近也不見很多反對的聲音了。&lt;/p&gt;
&lt;p&gt;除了網上之外，現實中的自己嘛，特點可能算是不知道自己屬於哪兒了……一個漂泊的人。
小時候8歲前在陝西長大，把自己當作陝西人，但是身邊的鄰里街坊們卻以河南人和江浙人居多。
廠辦環境，好幾個大型重工都從江浙搬到了陝西秦川一帶，加上國共內戰的時候河南黃河缺口造成的難民慌西逃，
構成了當時廠辦的主要人口拿着城市戶口，反而是當地的陝西人都是農民戶口，
於是和廠辦子弟們形成了鮮明的隔閡。我對社會主義，對蘇式廠辦，對整個國家結構的理解大概也是從那兒來的。
跟着鄰里們學會了河南話，在家裏說普通話，從老一輩們身上又學會了江浙的語調。
都說一個廠辦是一個社會的縮影，那時候的環境可能算聚集了全國東南西北的樣子吧。
8、9歲左右隨父母到了上海，因爲不會說上海話受同學們排擠，倒也不是很在意，漸漸和同學們學起了上海話，
可能還參雜點爺爺奶奶的江蘇方言。十多年後考入大學，五湖四海的同學都有，就不算是在上海了。
大學畢業來了日本，一晃又是7年過去。至此我大概比起同齡人接觸到更多全國各地的人，
也分不清自己的歸屬地了。但有一條，我知道自己是個中國人，爲自己是個中國人自豪，覺得雖在他鄉，
該爲中國做點自己的貢獻。&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="q2"&gt;
&lt;h2&gt;Q2：现在这个名字是怎么想到的呢？&lt;/h2&gt;
&lt;p&gt;farseerfc 這個名字嘛，來自 firechild 這個更早的網名，和魔獸爭霸裏面 farseer
這個英雄。 farseer 本算是 &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Linguistic_purism_in_English"&gt;Anglish&lt;/a&gt;
，以日耳曼語系的構詞法再造的英語詞，對應拉丁構詞法的話 far = tele ， seer = visioner
，於是 farseer 也就是 tele-visioner ，看得遠的人，電視一詞 television 的原本的詞幹的衍生詞。
不過說爲什麼選 farseer 這個名字，更多是爲了符合 fc 這個縮寫，而 fc 來自 firechild 這個詞。
再深挖黑歷史也不再有什麼意義了， farseerfc 作爲網名只是一直以來的習慣吧。&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="q3"&gt;
&lt;h2&gt;Q3：觉得咱俩之间最令汝印象深刻的时候是什么？&lt;/h2&gt;
&lt;p&gt;近期來看，印象最深刻的可能算是起草 &lt;a class="reference external" href="https://fars.ee/~readme.html"&gt;Arch Linux 中文社区交流群指引&lt;/a&gt;
吧，看得出萌狼對社區發展的熱心和好意。&lt;/p&gt;
&lt;p&gt;再往前，印象深刻的時候可能是萌狼用 Pelican 搭博客吧，最初認識萌狼的時候覺得是 MediaWiki
方面的行家，還以爲博客也會繼續用 MediaWiki 打造，沒想到能吃了 Pelican
的安利，外加萌狼寫博文的產量着實讓人望塵莫及。&lt;/p&gt;
&lt;p&gt;然後 ArchWiki 上 Beginner's Guide 被刪除之後，萌狼的博客多了一篇爲新人們寫的入門安裝手冊，
配有完整截圖指引，詳盡程度令人感嘆。感覺得到萌狼作爲一個「過來人」對新人們的照顧。
每次羣中鬧起爭執，老用戶們對新人發起調侃的時候，也是萌狼站出來爲新人們解圍，
幫助有能力的人適應羣裏的討論環境。或許最初寫交流羣指引的時候也是出於這樣的良苦用心吧。&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="q4"&gt;
&lt;h2&gt;Q4：对咱的印象怎么样？&lt;/h2&gt;
&lt;p&gt;最早來 Arch Linux CN 的時候，似乎萌狼還不叫萌狼？不記得那時候用的名字了。只記得來自 AOSC
，和那邊一衆談笑風聲，着實令人羨慕，經常跑他們的聚會也令人羨慕。&lt;/p&gt;
&lt;p&gt;後來有了萌狼的名字，群裏的狼們也漸漸多了起來，一時間都分不清哪個狼是哪個了。
不過萌狼的口癖和說話方式總是在狼羣中非常有標誌性。&lt;/p&gt;
&lt;p&gt;後來似乎發生了好多事情，我不知道的事情，也不敢妄加揣測。萌狼開始變身音遊大佬，
羣裏的別的狼們漸漸也各忙東西。不知道什麼原因，萌狼會偶爾退群，想問下前因後果，
又覺得自己不該多管閒事。不過無論萌狼退羣多少次，總是在默默關心着社區發展，
關心着新人融入社區的環境。&lt;/p&gt;
&lt;p&gt;似乎萌狼加入了 FSF ？玩起了 Parabola ，玩起了 linux-libre 。有能跑起完全自由的發行版的設備，
這一點也非常令人羨慕。似乎有很多設備，但是似乎又很不滿於現狀。看得出萌狼爲了理想放棄了很多東西，
或許大家都是如此吧，也或許只是我多心。&lt;/p&gt;
&lt;p&gt;還有就是萌狼用 Gnome ，感覺 AOSC 那邊很多人都用 Gnome ，給 Gnome 貢獻翻譯之類的，
萌狼或許也是其中一員。DE 黨爭是水羣久勝不衰的話題，或許我也有些責任，但是我覺得以發行版角度而言 DE
多樣性非常重要，萌狼在社區中的作用也不可或缺。&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="q5-gnu-linux"&gt;
&lt;h2&gt;Q5：在汝用过的 GNU/Linux 发行版之间汝最喜欢的是哪一个，为啥咧？&lt;/h2&gt;
&lt;p&gt;最喜歡的當然是 Arch Linux 啦，喜歡的理由前面 Q1 算是提到了一些。其實別的發行版的很多特性也很眼饞，
眼饞 Fedora Silverblue 的 A/B 更新機制，眼饞 Fedora 的 SELinux 和諸多企業級特性支援，眼饞
openSUSE 的 OBS 和 btrfs 支持，眼饞 debian 的小巧和細化打包，眼饞 NixOS 的函數式包管理，
眼饞 Gentoo 的可定製性，眼饞 Parabola / GuixSD 的完全自由。&lt;/p&gt;
&lt;p&gt;但是總得來說， Arch Linux 提供的基礎足夠讓我折騰系統成自己喜歡的方式，足夠順手，
也在需要軟件的時候足夠自己打包使用，不需要等待某些遠在天邊的議會做決策，或許是讓我留在
Arch Linux 的原因吧（當然更大原因可能是因爲慣性）。發行版之間的技術區別可能並不那麼重要，
重要的是該幹活的時候能找到幹活的人，這一點 Arch Linux 還是有很多人在認真做事情的。
沒有繁瑣的議會投票表決，沒有細碎的打包步驟，用最快的方式把活幹了，這在我看來是最重要的。&lt;/p&gt;
&lt;p&gt;或許有一天，幹活的人沒了，或者我想要的特殊特性因爲太複雜沒人想帶頭幹，而別的發行版有，
那時可能我會換去別的發行版吧。又或許我會自己幹，誰知道呢。&lt;/p&gt;
&lt;p&gt;比起發行版之爭，甚至比起 Linux/Windows/macOS 的桌面系統地位之爭，可能日後更關鍵的是別的平臺
比如 Android 在手持設備甚至物聯網設備上的興起導致的 PC 桌面的衰落。雖然這些新設備大多都是跑着
Linux 的內核，但是其上的生態環境不能說像 GNU/Linux 那樣自由。這一點上，自由軟件該如何發揮優勢
爭取用戶和生態可能是更關鍵的。&lt;/p&gt;
&lt;p&gt;當然這些都於我而言過於遙遠，一人之力難挽狂瀾……我只希望自己和朋友們所在的自由的土地能保持下去，
或許我也僅能做到這些。&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="q6-arch-linux-trusted-users"&gt;
&lt;h2&gt;Q6：在 Arch Linux 做 Trusted Users 时有没有什么心得？&lt;/h2&gt;
&lt;p&gt;說來非常慚愧，做 TU 這麼4年了，實際做的事情着實有限，只能隔幾天打打包而已。要做的事情太多，
而自己上面也說了有幹活的人最重要，設身處地深刻體會到在開源社區的諸位志願者們大家都不容易。&lt;/p&gt;
&lt;p&gt;TU 應該做的事情，細數一下除了給 community 打包之外，還有處理包的 bug ，處理 AUR 的爭議，
測試新包給反饋，以及溝通和反饋上游。反觀自己做的事情，真的太少了。比起肥貓和其他 TU 們的辛勤，
總覺得自己不夠格。「精力有限，憑着志願者熱情」，什麼的說辭可以說很多，
但是良心上對着自己熱愛的事情卻不能百分百撲上去做，真的沒有顏面腆着臉說……&lt;/p&gt;
&lt;p&gt;打包和溝通上游之類的心得倒是有不少，也一直想寫點筆記記錄一下，挖坑卻沒時間填上。該說，
或許應該換個本職工作了，又想，孰重孰輕哪邊是本行需要自己掂量。&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="q7"&gt;
&lt;h2&gt;Q7：有什么话要对咱说嘛？&lt;/h2&gt;
&lt;p&gt;不知何時起，不知萌狼經歷了什麼，有時候感覺萌狼傲嬌的性格讓人看不透，不過事後能看出萌狼都是本着好心。
或許，如果能更坦誠一些的話，也能更融入大家吧。雖然我也沒資格這麼說。&lt;/p&gt;
&lt;p&gt;像前面寫的，隱約能感覺到萌狼似乎爲了理想放棄了很多，孰重孰輕是每個人自己的權衡。&lt;/p&gt;
&lt;p&gt;以及還有感謝，感謝萌狼把我當作朋友，感謝萌狼的耐心。&lt;/p&gt;
&lt;p&gt;最後還有抱歉，這篇拖了太久，是該治治我的拖延症了。&lt;/p&gt;
&lt;/div&gt;
</content><category term="life"></category><category term="friend"></category><category term="horo"></category></entry><entry><title>東方歌詞翻譯遷移至 sak.uy</title><link href="//farseerfc.me/move-lyrics-to-sakuy.html" rel="alternate"></link><published>2019-02-24T08:37:00+09:00</published><updated>2019-02-24T08:37:00+09:00</updated><author><name>farseerfc</name></author><id>tag:farseerfc.me,2019-02-24:/move-lyrics-to-sakuy.html</id><summary type="html">&lt;p&gt;最近幾個月在這個博客發了不少歌詞翻譯 &lt;del&gt;似乎有要轉型成音樂博主的趨勢&lt;/del&gt; ，前段時間買了個新域名
&lt;a class="reference external" href="https://sak.uy/"&gt;sak.uy&lt;/a&gt; ，準備專門用來放這些東方歌曲的歌詞翻譯，於是分設了單獨的博客「
&lt;a class="reference external" href="https://sak.uy/"&gt;Sakuya的音樂盒&lt;/a&gt; 」。主博客這邊右側邊欄會有到音樂盒的鏈接。&lt;/p&gt;
&lt;p&gt;曾經在這邊的那些歌儘量保持 URL 跳轉過去，新的歌詞翻譯會發到那邊去，還想繼續聽歌的話請繼續訂閱那邊的 RSS 呀。&lt;/p&gt;
&lt;p&gt;主博客這邊還是像往常一樣保持記錄生活點滴和技術經驗好了。說道介紹技術，
有人問過我那些日語歌詞上給漢字標註的假名都是我一個個手輸的麼？
一開始是手輸的，後來發現了不錯的自動化方案，於是這裏介紹一下。&lt;/p&gt;
&lt;div class="section" id="python-furigana"&gt;
&lt;h2&gt;首先是　python-furigana&lt;/h2&gt;
&lt;p&gt;這是個 python 寫的小程序（嚴格說是庫），可以把一段日文轉換成標準的 HTML 形式的
&lt;code class="code"&gt;
&amp;lt;ruby&amp;gt;&lt;/code&gt;
 標籤的振假名( &lt;ruby&gt;&lt;rb&gt;振&lt;/rb&gt;&lt;rp&gt;(&lt;/rp&gt;&lt;rt&gt;ふ&lt;/rt&gt;&lt;rp&gt;)&lt;/rp&gt;&lt;/ruby&gt; り &lt;ruby&gt;&lt;rb&gt;仮名&lt;/rb&gt;&lt;rp&gt;(&lt;/rp&gt;&lt;rt&gt;かな&lt;/rt&gt;&lt;rp&gt;)&lt;/rp&gt;&lt;/ruby&gt; )。
它本身只是個方便的格式化庫，實際工作是用 python-mecab 這個 binding 去查詢 mecab
這個著名的日語語料分析庫。要用它還得配合一些開源的 mecab 詞典，這些在 …&lt;/p&gt;&lt;/div&gt;</summary><content type="html">&lt;p&gt;最近幾個月在這個博客發了不少歌詞翻譯 &lt;del&gt;似乎有要轉型成音樂博主的趨勢&lt;/del&gt; ，前段時間買了個新域名
&lt;a class="reference external" href="https://sak.uy/"&gt;sak.uy&lt;/a&gt; ，準備專門用來放這些東方歌曲的歌詞翻譯，於是分設了單獨的博客「
&lt;a class="reference external" href="https://sak.uy/"&gt;Sakuya的音樂盒&lt;/a&gt; 」。主博客這邊右側邊欄會有到音樂盒的鏈接。&lt;/p&gt;
&lt;p&gt;曾經在這邊的那些歌儘量保持 URL 跳轉過去，新的歌詞翻譯會發到那邊去，還想繼續聽歌的話請繼續訂閱那邊的 RSS 呀。&lt;/p&gt;
&lt;p&gt;主博客這邊還是像往常一樣保持記錄生活點滴和技術經驗好了。說道介紹技術，
有人問過我那些日語歌詞上給漢字標註的假名都是我一個個手輸的麼？
一開始是手輸的，後來發現了不錯的自動化方案，於是這裏介紹一下。&lt;/p&gt;
&lt;div class="section" id="python-furigana"&gt;
&lt;h2&gt;首先是　python-furigana&lt;/h2&gt;
&lt;p&gt;這是個 python 寫的小程序（嚴格說是庫），可以把一段日文轉換成標準的 HTML 形式的
&lt;code class="code"&gt;
&amp;lt;ruby&amp;gt;&lt;/code&gt;
 標籤的振假名( &lt;ruby&gt;&lt;rb&gt;振&lt;/rb&gt;&lt;rp&gt;(&lt;/rp&gt;&lt;rt&gt;ふ&lt;/rt&gt;&lt;rp&gt;)&lt;/rp&gt;&lt;/ruby&gt; り &lt;ruby&gt;&lt;rb&gt;仮名&lt;/rb&gt;&lt;rp&gt;(&lt;/rp&gt;&lt;rt&gt;かな&lt;/rt&gt;&lt;rp&gt;)&lt;/rp&gt;&lt;/ruby&gt; )。
它本身只是個方便的格式化庫，實際工作是用 python-mecab 這個 binding 去查詢 mecab
這個著名的日語語料分析庫。要用它還得配合一些開源的 mecab 詞典，這些在 &lt;code class="code"&gt;
[archlinuxcn]&lt;/code&gt;

都有打好的包了，直接安裝：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="code-line"&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="gp"&gt;$&lt;/span&gt; sudo pacman -Syu python-furigana mecab-git python-mecab mecab-ipadic&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;裝好之後用法也很直接，甚至沒有 binary 直接調用 python 的 module 就可以：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="code-line"&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="gp"&gt;$&lt;/span&gt; python -m furigana.furigana &lt;span class="s2"&gt;"振り仮名の例"&lt;/span&gt;&lt;/span&gt;
&lt;span class="code-line"&gt;&lt;span class="go"&gt;&amp;lt;ruby&amp;gt;&amp;lt;rb&amp;gt;振&amp;lt;/rb&amp;gt;&amp;lt;rt&amp;gt;ふ&amp;lt;/rt&amp;gt;&amp;lt;/ruby&amp;gt;り&amp;lt;ruby&amp;gt;&amp;lt;rb&amp;gt;仮名&amp;lt;/rb&amp;gt;&amp;lt;rt&amp;gt;かめい&amp;lt;/rt&amp;gt;&amp;lt;/ruby&amp;gt;の&amp;lt;ruby&amp;gt;&amp;lt;rb&amp;gt;例&amp;lt;/rb&amp;gt;&amp;lt;rt&amp;gt;れい&amp;lt;/rt&amp;gt;&amp;lt;/ruby&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;就是提供日語作爲輸入，然後輸出 HTML 形式的 &lt;code class="code"&gt;
&amp;lt;ruby&amp;gt;&lt;/code&gt;
 標籤而已。
像上面的例子中出現的錯誤（「振り仮名」完整的一個詞中「仮名」意思是「平仮名」應該發音「がな」而非意爲「假的人名」的「かめい」）
可以看出其實標註的準確率還是有些問題的。嘛日語作爲一個非常依賴上下文判斷的語言，
經常日本人都會搞錯某些漢字的發音，這些也不能強求機械化的算法能 100% 正確實現。
好在單純的詞典匹配也能滿足大部分標註的需要了，用這個標註總體來說 95%
以上的情況都是正確的（歌詞的話正確率低一些，畢竟歌詞中古語啦当て字啦訓読み這些情況很常見）。&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="id2"&gt;
&lt;h2&gt;把輸出插入我的博客&lt;/h2&gt;
&lt;p&gt;然後我的博客用 reStructuredText 語法寫，不能直接用 HTML 標籤（雖然我加了 &lt;code class="code"&gt;
:html:&lt;/code&gt;

這個 &lt;ruby&gt;&lt;rb&gt;行內角色&lt;/rb&gt;&lt;rp&gt;(&lt;/rp&gt;&lt;rt&gt;inline role&lt;/rt&gt;&lt;rp&gt;)&lt;/rp&gt;&lt;/ruby&gt; 但是大量用也不方便）。這個博客一開始用
&lt;a class="reference external" href="//farseerfc.me/redesign-pelican-theme.html#bootstrapify-twitter-bootstrap-rst-directives"&gt;Pelican 重寫主題的時候&lt;/a&gt;
我就實現了個自己的 &lt;code class="code"&gt;
:ruby:&lt;/code&gt;
&lt;ruby&gt;&lt;rb&gt;行內角色&lt;/rb&gt;&lt;rp&gt;(&lt;/rp&gt;&lt;rt&gt;inline role&lt;/rt&gt;&lt;rp&gt;)&lt;/rp&gt;&lt;/ruby&gt; 用來標發音，於是一段
sed 就能把 python-furigana 的輸出轉換成我用的 rst 語法：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="code-line"&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="gp"&gt;$&lt;/span&gt; which clipboard Co Ci Ct&lt;/span&gt;
&lt;span class="code-line"&gt;&lt;span class="go"&gt;clipboard: aliased to xclip -selection clipboard&lt;/span&gt;&lt;/span&gt;
&lt;span class="code-line"&gt;&lt;span class="go"&gt;Co: aliased to clipboard -o&lt;/span&gt;&lt;/span&gt;
&lt;span class="code-line"&gt;&lt;span class="go"&gt;Ci: aliased to clipboard -i&lt;/span&gt;&lt;/span&gt;
&lt;span class="code-line"&gt;&lt;span class="go"&gt;Ct () {&lt;/span&gt;&lt;/span&gt;
&lt;span class="code-line"&gt;&lt;span class="go"&gt;    t=$(mktemp /tmp/furigana-XXXX)&lt;/span&gt;&lt;/span&gt;
&lt;span class="code-line"&gt;&lt;span class="go"&gt;    python -m furigana.furigana $(Co) | sed 's@&amp;lt;ruby&amp;gt;&amp;lt;rb&amp;gt;@ :ruby:`@g;s@&amp;lt;/rb&amp;gt;&amp;lt;rt&amp;gt;@|@g;s@&amp;lt;/rt&amp;gt;&amp;lt;/ruby&amp;gt;@` @g' | sponge $t&lt;/span&gt;&lt;/span&gt;
&lt;span class="code-line"&gt;&lt;span class="go"&gt;    cat $t | tee /dev/tty | perl -pe 'chomp if eof' | Ci&lt;/span&gt;&lt;/span&gt;
&lt;span class="code-line"&gt;&lt;span class="go"&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;上面這些 alias 在我的 &lt;a class="reference external" href="https://git.io/fczsh"&gt;.bashrc&lt;/a&gt; 中。有了這些之後，
我只要把需要標註的日語文本放入剪切版，執行 Ct ，再粘帖結果就好了。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="code-line"&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="gp"&gt;$&lt;/span&gt; &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"振り仮名の例"&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; Ci&lt;/span&gt;
&lt;span class="code-line"&gt;&lt;span class="gp"&gt;$&lt;/span&gt; Ct&lt;/span&gt;
&lt;span class="code-line"&gt;&lt;span class="go"&gt;:ruby:`振|ふ` り :ruby:`仮名|かめい` の :ruby:`例|れい`&lt;/span&gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;然後所有那些歌詞上標註的假名都是這樣一句一句標註好之後，再手動校對修改的。&lt;/p&gt;
&lt;/div&gt;
</content><category term="life"></category><category term="life"></category></entry><entry><title>【聽譯】君さえいなけりゃよかった</title><link href="//farseerfc.me/kimisaeinakerya.html" rel="alternate"></link><published>2018-12-23T23:04:00+09:00</published><updated>2018-12-23T23:04:00+09:00</updated><author><name>farseerfc</name></author><id>tag:farseerfc.me,2018-12-23:/kimisaeinakerya.html</id><summary type="html">&lt;div align="left" class="youtube embed-responsive embed-responsive-16by9"&gt;&lt;iframe allow="fullscreen" class="embed-responsive-item" frameborder="0" src="https://www.youtube.com/embed/-KOeQapXsx8"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;table border="0" class="table docutils borderless translate-paragraph"&gt;
&lt;colgroup&gt;
&lt;col width="50%"/&gt;
&lt;col width="50%"/&gt;
&lt;/colgroup&gt;
&lt;tbody valign="top"&gt;
&lt;tr&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;君さえいなけりゃよかった&lt;/td&gt;
&lt;td&gt;如果你從未出現過該多好&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;降り出した雨の中で　君に出会った時から&lt;/td&gt;
&lt;td&gt;下起雨的那一刻　從遇到你那時起&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;君がいないということが　当たり前じゃなくなった&lt;/td&gt;
&lt;td&gt;身邊沒有你的情況　就已經不再是平常&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;ああ　こんなはずじゃない&lt;/td&gt;
&lt;td&gt;啊　不應該是這樣的&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;ずっと自分勝手にさ　過ごせたはずなのに&lt;/td&gt;
&lt;td&gt;明明一直是散漫地過着自己的日子&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;まるで僕じゃないような僕が　さらけ出されてくよ&lt;/td&gt;
&lt;td&gt;就像是帶出了不是我的另一面的我&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr class="docutils"/&gt;
&lt;table border="0" class="table docutils borderless translate-paragraph"&gt;
&lt;colgroup&gt;
&lt;col width="50%"/&gt;
&lt;col width="50%"/&gt;
&lt;/colgroup&gt;
&lt;tbody valign="top"&gt;
&lt;tr&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;君さえいなけりゃよかった　こんな気持ちは知らないから&lt;/td&gt;
&lt;td&gt;如果你從未出現過該多好　就不會知道這種心情&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;やらなくちゃいけないことが　手つかずのまま積もってく&lt;/td&gt;
&lt;td&gt;一堆不得不做的事情　堆在手頭越積越多&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;僕じゃなくてもいいのなら　こっちを見て笑わないでよ&lt;/td&gt;
&lt;td&gt;如果不是我也可以的話　就別看着我這邊笑啊&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;大袈裟じゃなくてそれだけで　忘れられなくなるの&lt;/td&gt;
&lt;td&gt;甚至那些不重要的事情　都變得難以忘記了&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr class="docutils"/&gt;
&lt;table border="0" class="table docutils borderless translate-paragraph"&gt;
&lt;colgroup&gt;
&lt;col width="50%"/&gt;
&lt;col width="50%"/&gt;
&lt;/colgroup&gt;
&lt;tbody valign="top"&gt;
&lt;tr&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;君の適当な話も　全部心に刺さります&lt;/td&gt;
&lt;td&gt;你無意間隨口說的話　全都刺在心頭&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;気にしなけりゃいいのにな　残らずかき集めちゃうの&lt;/td&gt;
&lt;td&gt;雖說只要不在意就可以了　卻一句不剩全收集了起來&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;ああ　こんなはずじゃない　こんなはずじゃない&lt;/td&gt;
&lt;td&gt;啊　不應該是這樣的　不應該是這樣的 …&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;</summary><content type="html">&lt;div align="left" class="youtube embed-responsive embed-responsive-16by9"&gt;&lt;iframe allow="fullscreen" class="embed-responsive-item" frameborder="0" src="https://www.youtube.com/embed/-KOeQapXsx8"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;table border="0" class="table docutils borderless translate-paragraph"&gt;
&lt;colgroup&gt;
&lt;col width="50%"/&gt;
&lt;col width="50%"/&gt;
&lt;/colgroup&gt;
&lt;tbody valign="top"&gt;
&lt;tr&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;君さえいなけりゃよかった&lt;/td&gt;
&lt;td&gt;如果你從未出現過該多好&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;降り出した雨の中で　君に出会った時から&lt;/td&gt;
&lt;td&gt;下起雨的那一刻　從遇到你那時起&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;君がいないということが　当たり前じゃなくなった&lt;/td&gt;
&lt;td&gt;身邊沒有你的情況　就已經不再是平常&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;ああ　こんなはずじゃない&lt;/td&gt;
&lt;td&gt;啊　不應該是這樣的&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;ずっと自分勝手にさ　過ごせたはずなのに&lt;/td&gt;
&lt;td&gt;明明一直是散漫地過着自己的日子&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;まるで僕じゃないような僕が　さらけ出されてくよ&lt;/td&gt;
&lt;td&gt;就像是帶出了不是我的另一面的我&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr class="docutils"/&gt;
&lt;table border="0" class="table docutils borderless translate-paragraph"&gt;
&lt;colgroup&gt;
&lt;col width="50%"/&gt;
&lt;col width="50%"/&gt;
&lt;/colgroup&gt;
&lt;tbody valign="top"&gt;
&lt;tr&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;君さえいなけりゃよかった　こんな気持ちは知らないから&lt;/td&gt;
&lt;td&gt;如果你從未出現過該多好　就不會知道這種心情&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;やらなくちゃいけないことが　手つかずのまま積もってく&lt;/td&gt;
&lt;td&gt;一堆不得不做的事情　堆在手頭越積越多&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;僕じゃなくてもいいのなら　こっちを見て笑わないでよ&lt;/td&gt;
&lt;td&gt;如果不是我也可以的話　就別看着我這邊笑啊&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;大袈裟じゃなくてそれだけで　忘れられなくなるの&lt;/td&gt;
&lt;td&gt;甚至那些不重要的事情　都變得難以忘記了&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr class="docutils"/&gt;
&lt;table border="0" class="table docutils borderless translate-paragraph"&gt;
&lt;colgroup&gt;
&lt;col width="50%"/&gt;
&lt;col width="50%"/&gt;
&lt;/colgroup&gt;
&lt;tbody valign="top"&gt;
&lt;tr&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;君の適当な話も　全部心に刺さります&lt;/td&gt;
&lt;td&gt;你無意間隨口說的話　全都刺在心頭&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;気にしなけりゃいいのにな　残らずかき集めちゃうの&lt;/td&gt;
&lt;td&gt;雖說只要不在意就可以了　卻一句不剩全收集了起來&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;ああ　こんなはずじゃない　こんなはずじゃない&lt;/td&gt;
&lt;td&gt;啊　不應該是這樣的　不應該是這樣的&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr class="docutils"/&gt;
&lt;table border="0" class="table docutils borderless translate-paragraph"&gt;
&lt;colgroup&gt;
&lt;col width="50%"/&gt;
&lt;col width="50%"/&gt;
&lt;/colgroup&gt;
&lt;tbody valign="top"&gt;
&lt;tr&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;君に出会わなきゃよかった　こんなに寂しくなるのなら&lt;/td&gt;
&lt;td&gt;如果沒遇到過你該多好　就不會變得如此寂寞&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;君じゃなくてもいいことが　もう見つからないの&lt;/td&gt;
&lt;td&gt;已經找不到　和你無關也可以的情況了&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;忘れられないから　君じゃなかったら&lt;/td&gt;
&lt;td&gt;無法忘記了　要不是你的話&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr class="docutils"/&gt;
&lt;table border="0" class="table docutils borderless translate-paragraph"&gt;
&lt;colgroup&gt;
&lt;col width="50%"/&gt;
&lt;col width="50%"/&gt;
&lt;/colgroup&gt;
&lt;tbody valign="top"&gt;
&lt;tr&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;いっそ見損なってしまうような　そんなひとだったらなあ&lt;/td&gt;
&lt;td&gt;乾脆變成根本看不起的人　如果是那種人的話&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;でもそれでも　どうせ無理そう　嫌いになれないや&lt;/td&gt;
&lt;td&gt;但是即使如此　大概反正也不可能　無法變得討厭&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr class="docutils"/&gt;
&lt;table border="0" class="table docutils borderless translate-paragraph"&gt;
&lt;colgroup&gt;
&lt;col width="50%"/&gt;
&lt;col width="50%"/&gt;
&lt;/colgroup&gt;
&lt;tbody valign="top"&gt;
&lt;tr&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;僕がいなくてもいいなら　いっそ不幸になってしまえ&lt;/td&gt;
&lt;td&gt;如果不是我也可以的話　乾脆變得不幸吧&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;最後にまた僕の元に　泣きついてくればいい&lt;/td&gt;
&lt;td&gt;最後還是會回到我身邊　哭着湊過來的話就可以&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;君さえいなけりゃよかった　こんな気持ちは知らないから&lt;/td&gt;
&lt;td&gt;如果沒有你該多好　就不會知道這種心情&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;やらなくちゃいけないことが　手つかずのまま積もってく&lt;/td&gt;
&lt;td&gt;一堆不得不做的事情　堆在手頭越積越多&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;僕じゃなくてもいいのなら　こっちを見て笑わないでよ&lt;/td&gt;
&lt;td&gt;如果不是我也可以的話　就別看着我這邊笑啊&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;大袈裟じゃなくてそれだけで&lt;/td&gt;
&lt;td&gt;甚至那些不重要的事情&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;君のこと　間違いなく&lt;/td&gt;
&lt;td&gt;對你　毫無疑問&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;苦しいほど　好きになっちゃうよ&lt;/td&gt;
&lt;td&gt;刻骨銘心地　變得喜歡上了啊&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr class="docutils"/&gt;
&lt;table border="0" class="table docutils borderless translate-paragraph"&gt;
&lt;colgroup&gt;
&lt;col width="50%"/&gt;
&lt;col width="50%"/&gt;
&lt;/colgroup&gt;
&lt;tbody valign="top"&gt;
&lt;tr&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;忘れられないから　君じゃなかったら&lt;/td&gt;
&lt;td&gt;因爲無法忘記　如果不是你的話&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;君に出会わなきゃ　僕じゃなかったら&lt;/td&gt;
&lt;td&gt;要是沒遇到過你　如果不是我的話&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;君さえいなけりゃよかった&lt;/td&gt;
&lt;td&gt;如果你從未出現過該多好&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
</content><category term="life"></category><category term="translate"></category><category term="chouyaku"></category><category term="kimi"></category><category term="sae"></category><category term="inakerya"></category><category term="聽譯"></category></entry><entry><title>避免在博文中寫「簡單地」</title><link href="//farseerfc.me/stop-write-simply.html" rel="alternate"></link><published>2015-03-11T22:00:00+09:00</published><updated>2015-03-11T22:00:00+09:00</updated><author><name>farseerfc</name></author><id>tag:farseerfc.me,2015-03-11:/stop-write-simply.html</id><summary type="html">&lt;p&gt;我的 RSS 訂閱着一個博客叫 &lt;a class="reference external" href="http://blogs.msdn.com/b/oldnewthing/"&gt;The Old New Thing&lt;/a&gt;
，作者是Windows開發者之一的 Raymond Chen ，記錄 Windows 中的很多有趣的技術細節。
這個博客中的一些精彩內容還被他寫成了一本書，中文名叫《Windows編程啓示錄》
(ISBN: &lt;a class="reference external" href="http://www.amazon.cn/dp/B0011C1ZEG/"&gt;978-7-111-21919-4&lt;/a&gt;) 而英文書名就叫
&lt;em&gt;The Old New Thing — Practical Development Throughout the Evolution of Windows&lt;/em&gt;
(ISBN: &lt;a class="reference external" href="http://www.amazon.com/gp/product/0321440307"&gt;978-0-321-44030-3&lt;/a&gt;)。&lt;/p&gt;
&lt;p&gt;今天看到這個博客的一篇文章說
&lt;a class="reference external" href="http://blogs.msdn.com/b/oldnewthing/archive/2015/03/10/10598846.aspx"&gt;你用「簡單地」次數越多我越懷疑你不懂這個詞的意思&lt;/a&gt; ， 描述他看到某個博客上指導讀者打開命令行、執行某條魔法命令、從命令輸出抽取參數、
改寫配置文件、用魔法命令重啓服務，並把這些工作描述爲「簡單地」。&lt;/p&gt;
&lt;p&gt;的確正如 Raymond 指出，一個人覺得簡單的事情對別人並不一定是簡單的。
搜了一下我自己寫的東西，的確很多地方寫了「簡單 …&lt;/p&gt;</summary><content type="html">&lt;p&gt;我的 RSS 訂閱着一個博客叫 &lt;a class="reference external" href="http://blogs.msdn.com/b/oldnewthing/"&gt;The Old New Thing&lt;/a&gt;
，作者是Windows開發者之一的 Raymond Chen ，記錄 Windows 中的很多有趣的技術細節。
這個博客中的一些精彩內容還被他寫成了一本書，中文名叫《Windows編程啓示錄》
(ISBN: &lt;a class="reference external" href="http://www.amazon.cn/dp/B0011C1ZEG/"&gt;978-7-111-21919-4&lt;/a&gt;) 而英文書名就叫
&lt;em&gt;The Old New Thing — Practical Development Throughout the Evolution of Windows&lt;/em&gt;
(ISBN: &lt;a class="reference external" href="http://www.amazon.com/gp/product/0321440307"&gt;978-0-321-44030-3&lt;/a&gt;)。&lt;/p&gt;
&lt;p&gt;今天看到這個博客的一篇文章說
&lt;a class="reference external" href="http://blogs.msdn.com/b/oldnewthing/archive/2015/03/10/10598846.aspx"&gt;你用「簡單地」次數越多我越懷疑你不懂這個詞的意思&lt;/a&gt; ， 描述他看到某個博客上指導讀者打開命令行、執行某條魔法命令、從命令輸出抽取參數、
改寫配置文件、用魔法命令重啓服務，並把這些工作描述爲「簡單地」。&lt;/p&gt;
&lt;p&gt;的確正如 Raymond 指出，一個人覺得簡單的事情對別人並不一定是簡單的。
搜了一下我自己寫的東西，的確很多地方寫了「簡單」二字，這的確對讀者不友好。&lt;/p&gt;
&lt;p&gt;從今往後避免用「簡單」來描述。&lt;/p&gt;
</content><category term="life"></category><category term="blog"></category><category term="writing"></category></entry><entry><title>從天氣預報談談日本的學術氛圍</title><link href="//farseerfc.me/weather-forcast-academic-in-japan.html" rel="alternate"></link><published>2015-02-18T21:00:00+09:00</published><updated>2015-02-18T21:00:00+09:00</updated><author><name>farseerfc</name></author><id>tag:farseerfc.me,2015-02-18:/weather-forcast-academic-in-japan.html</id><summary type="html">&lt;p&gt;最近 &lt;a class="reference external" href="/links.html#mazk"&gt;mazk&lt;/a&gt; 說我 &lt;a class="reference external" href="//farseerfc.me/pages/about.html#comment-1856339316"&gt;life 分類裏的文章太少&lt;/a&gt;
，所以想了想寫了這篇。&lt;/p&gt;
&lt;p&gt;很多人問過我爲什麼要來日本留學，嘛原因之一是我英語太差了，相對而言日語比較好。
另一方面，我比較喜歡日本的學術氛圍。這個當然是主觀體會，而不是客觀的評價，只是我
覺得相對於 &lt;strong&gt;歐美喜歡研究基礎架構技術&lt;/strong&gt; ， &lt;strong&gt;日本則偏向實用層面&lt;/strong&gt; 。&lt;/p&gt;
&lt;p&gt;說個具體一點例子，最近看到這篇新聞說
&lt;a class="reference external" href="http://www.solidot.org/story?sid=43079"&gt;卢布贬值影响中央气象台预报准确率？&lt;/a&gt;
，其中提到：&lt;/p&gt;
&lt;blockquote&gt;
因为卢布贬值，天气预报的准确率会有所降低&lt;/blockquote&gt;
&lt;p&gt;也說道：&lt;/p&gt;
&lt;blockquote&gt;
不过经我多年的观察，中国中央气象台的预报准确率实在是不怎么样，具体到我生活的地区，
实际天气状况和中国中央气象台预报的出入较大……&lt;/blockquote&gt;
&lt;p&gt;相信不少人也有類似的體會。&lt;/p&gt;
&lt;p&gt;天氣預報是事關人們生活的重要信息，其準確度對生產生活當然有很大影響。
說到增加天氣預報的準確度，人們自然會想到高性能的超級計算機比如
&lt;a class="reference external" href="https://zh.wikipedia.org/wiki/%E5%A4%A9%E6%B2%B3%E4%BA%8C%E5%8F%B7"&gt;天河二號&lt;/a&gt;
，想到環繞在地球高空的 &lt;a class="reference external" href="https://zh.wikipedia.org/wiki/%E6%B0%A3%E8%B1%A1%E8%A1%9B%E6%98%9F"&gt;氣象衛星&lt;/a&gt;
，想到遍佈世界各地的氣象站觀測臺。想想這麼多耗資不菲的高尖端項目被國家投入，
用來改善天氣預報的準確程度，看起來這的確是一個困難的科研課題。&lt;/p&gt;
&lt;p&gt;話說回來，準確預測氣溫、氣壓、溼度、降水概率等等這些事情對於生產生活固然重要，
不過對一般民衆而言，天氣預報最重要的作用就只是回答 &lt;strong&gt;明天我該穿多厚的衣服，出門是否需要打傘&lt;/strong&gt;
這種問題 …&lt;/p&gt;</summary><content type="html">&lt;p&gt;最近 &lt;a class="reference external" href="/links.html#mazk"&gt;mazk&lt;/a&gt; 說我 &lt;a class="reference external" href="//farseerfc.me/pages/about.html#comment-1856339316"&gt;life 分類裏的文章太少&lt;/a&gt;
，所以想了想寫了這篇。&lt;/p&gt;
&lt;p&gt;很多人問過我爲什麼要來日本留學，嘛原因之一是我英語太差了，相對而言日語比較好。
另一方面，我比較喜歡日本的學術氛圍。這個當然是主觀體會，而不是客觀的評價，只是我
覺得相對於 &lt;strong&gt;歐美喜歡研究基礎架構技術&lt;/strong&gt; ， &lt;strong&gt;日本則偏向實用層面&lt;/strong&gt; 。&lt;/p&gt;
&lt;p&gt;說個具體一點例子，最近看到這篇新聞說
&lt;a class="reference external" href="http://www.solidot.org/story?sid=43079"&gt;卢布贬值影响中央气象台预报准确率？&lt;/a&gt;
，其中提到：&lt;/p&gt;
&lt;blockquote&gt;
因为卢布贬值，天气预报的准确率会有所降低&lt;/blockquote&gt;
&lt;p&gt;也說道：&lt;/p&gt;
&lt;blockquote&gt;
不过经我多年的观察，中国中央气象台的预报准确率实在是不怎么样，具体到我生活的地区，
实际天气状况和中国中央气象台预报的出入较大……&lt;/blockquote&gt;
&lt;p&gt;相信不少人也有類似的體會。&lt;/p&gt;
&lt;p&gt;天氣預報是事關人們生活的重要信息，其準確度對生產生活當然有很大影響。
說到增加天氣預報的準確度，人們自然會想到高性能的超級計算機比如
&lt;a class="reference external" href="https://zh.wikipedia.org/wiki/%E5%A4%A9%E6%B2%B3%E4%BA%8C%E5%8F%B7"&gt;天河二號&lt;/a&gt;
，想到環繞在地球高空的 &lt;a class="reference external" href="https://zh.wikipedia.org/wiki/%E6%B0%A3%E8%B1%A1%E8%A1%9B%E6%98%9F"&gt;氣象衛星&lt;/a&gt;
，想到遍佈世界各地的氣象站觀測臺。想想這麼多耗資不菲的高尖端項目被國家投入，
用來改善天氣預報的準確程度，看起來這的確是一個困難的科研課題。&lt;/p&gt;
&lt;p&gt;話說回來，準確預測氣溫、氣壓、溼度、降水概率等等這些事情對於生產生活固然重要，
不過對一般民衆而言，天氣預報最重要的作用就只是回答 &lt;strong&gt;明天我該穿多厚的衣服，出門是否需要打傘&lt;/strong&gt;
這種問題。一年四季換衣服的時機其實並不那麼頻繁，氣溫提升五度或者降低兩度這種程度下人們估計也
不能感覺得到，大體上只要根據「昨天穿什麼衣服，昨天覺得冷不冷」就能作出判斷。另一方面，
&lt;strong&gt;出門是否需要打傘&lt;/strong&gt; 這樣的問題的確只能依靠天氣預報來回答。&lt;/p&gt;
&lt;p&gt;那麼解決 &lt;strong&gt;出門是否需要打傘&lt;/strong&gt; 這個問題需要那麼高尖端的技術麼？&lt;/p&gt;
&lt;p&gt;我所在的大阪大學情報科學研究科有個已經畢業的學長 &lt;ruby&gt;&lt;rb&gt;今城 健太郎&lt;/rb&gt;&lt;rp&gt;(&lt;/rp&gt;&lt;rt&gt;いまじょう けんたろう&lt;/rt&gt;&lt;rp&gt;)&lt;/rp&gt;&lt;/ruby&gt;
就對此作出了解答。他的專業不是氣象預測，而是圖像分析處理，純粹的計算機科學學科。
而他的本科畢業設計就着眼於「僅僅分析氣象雲圖，能否高精度預測降水概率」，
其研究成果，就是一個叫 &lt;a class="reference external" href="http://blog.imoz.jp/post/7316967132/ninetan-forecast"&gt;ないんたん 的降水概率預測系統&lt;/a&gt; 。&lt;/p&gt;
&lt;p&gt;這個系統有數個會賣萌的Twitter機器人 &lt;a class="reference external" href="//twitter.com/ninetan"&gt;@ninetan&lt;/a&gt; ，每時每刻對
其預測地區的降水情況做播報，同時也有詳細的降水概率曲線圖對
&lt;a class="reference external" href="http://sx9.jp/weather/osaka.html"&gt;大阪&lt;/a&gt; ( &lt;a class="reference external" href="//twitter.com/ninetan_osaka"&gt;@ninetan_osaka&lt;/a&gt; )，
&lt;a class="reference external" href="http://sx9.jp/weather/kyoto.html"&gt;京都&lt;/a&gt; ( &lt;a class="reference external" href="//twitter.com/ninetan_kyoto"&gt;@ninetan_kyoto&lt;/a&gt; )，
&lt;a class="reference external" href="http://sx9.jp/weather/tokyo.html"&gt;東京&lt;/a&gt; ( &lt;a class="reference external" href="//twitter.com/ninetan_tokyo"&gt;@ninetan_tokyo&lt;/a&gt; )，
&lt;a class="reference external" href="http://sx9.jp/weather/hyogo.html"&gt;兵庫&lt;/a&gt; ( &lt;a class="reference external" href="//twitter.com/ninetan_hyogo"&gt;@ninetan_hyogo&lt;/a&gt; )，
&lt;a class="reference external" href="http://sx9.jp/weather/wakayama.html"&gt;和歌山&lt;/a&gt; ( &lt;a class="reference external" href="//twitter.com/ninetan_wakayam"&gt;@ninetan_wakayam&lt;/a&gt; ) 的各個大學所在校區
兩個半小時內做精確的降水概率預測。比如今天晚上大阪大學三個校區的降水概率圖如下：&lt;/p&gt;
&lt;div class="figure"&gt;
&lt;img alt="今天晚上大阪大學三個校區的降水概率圖" class="img-responsive" src="//farseerfc.me/images/forcast-osaka.png"/&gt;
&lt;p class="caption"&gt;今天晚上大阪大學三個校區的降水概率圖&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;從上面的圖可以看出這個系統的預測精度是以 &lt;strong&gt;分爲單位&lt;/strong&gt; 的，可以看到
兩個半小時內各地的降水量的大小。比如我可以根據這張圖看出，我所在的吹田校區
將在 &lt;strong&gt;21時35分&lt;/strong&gt; 開始有微弱的概率下起 0.1mm/h~1mm/h 的毛毛雨，到 &lt;strong&gt;22時05分&lt;/strong&gt; 左右這個降水概率
爬升到最高大約45%，從而作出判斷：
我最好在晚上九點左右離開學校回家，避免淋雨。&lt;/p&gt;
&lt;p&gt;自從研究室的前輩給我介紹這個天氣預報系統開始，我用了它兩三年了，直觀感覺是
這個系統的預測精度驚人得準確，基本上能接近
&lt;a class="reference external" href="http://zh.wikipedia.org/wiki/%E9%AD%94%E6%B3%95%E7%A6%81%E6%9B%B8%E7%9B%AE%E9%8C%84%E7%94%A8%E8%AA%9E%E5%88%97%E8%A1%A8#.E8.A3.9D.E7.BD.AE.E3.80.81.E5.85.B5.E5.99.A8.E3.80.81.E6.8A.80.E8.A1.93"&gt;《魔法的禁書目錄》中的「樹形圖設計者」&lt;/a&gt;
能做的天氣預報的程度，
它說何時會下雨就一定下雨，它說何時雨停就一定雨停。同學們出門和回家的時候一般都會
看一眼這個天氣預報然後決定是否出門。「啊今天晚上9點開始下雨所以早點回家」
或者「啊還有30分鐘雨就停了，再在研究室裏留一會兒」。&lt;/p&gt;
&lt;p&gt;這只是一個本科生的畢業設計，所以覆蓋面小（只有5所大學的十幾個校區，只能預測
未來兩個多小時的降水概率），不過僅此而已能做到如此的精度以至於實用，實在讓我
驚訝。系統的測試之初就有人說：&lt;/p&gt;
&lt;blockquote class="twitter-tweet" lang="zh-tw"&gt;&lt;p&gt;最近ないんたん予報あたりすぎてないんたんが雨降らせてるんじゃないかという疑惑&lt;/p&gt;— すみのネコ歩き (@sumi_eee) &lt;a href="https://twitter.com/sumi_eee/status/88530793407852544"&gt;2011 7月 6日&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async="" charset="utf-8" src="//platform.twitter.com/widgets.js"&gt;&lt;/script&gt;&lt;!-- --&gt;
&lt;blockquote&gt;
最近ないんたん預告實在太準了，甚至讓人懷疑是不是ないんたん把雨招來的。&lt;/blockquote&gt;
&lt;p&gt;不過最近身邊的日本人似乎已經把這個系統的準確當作習以爲常了，就像日本的電車
掐着秒錶準點到站一樣，理所當然。
把天氣預報這種高尖端的技術做到如此實用的地步，這基本上可以代表我對
日本學術界研究方式和研究目的的總體印象了。&lt;/p&gt;
&lt;p&gt;嗯今天就寫這麼多，9點到了，我要按照天氣預報的預測，準時回家了。&lt;/p&gt;
&lt;p&gt;——寫於2015羊年除夕夜，9點。&lt;/p&gt;
</content><category term="life"></category><category term="japan"></category><category term="academic"></category></entry><entry><title>嫁給我好麼</title><link href="//farseerfc.me/marry-me.html" rel="alternate"></link><published>2013-02-20T20:42:00+09:00</published><updated>2013-02-20T20:42:00+09:00</updated><author><name>farseerfc</name></author><id>tag:farseerfc.me,2013-02-20:/marry-me.html</id><content type="html">&lt;div class="panel panel-default"&gt;
&lt;div class="panel-heading"&gt;
渲染的樣子&lt;/div&gt;
&lt;div class="panel-body"&gt;
&lt;blockquote&gt;
&lt;!-- PELICAN_BEGIN_SUMMARY --&gt;
&lt;img alt="嫁給我好麼" class="img-responsive" src="/images/marry-me.png"/&gt;
&lt;!-- PELICAN_END_SUMMARY --&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;可以玩的是下面這個：&lt;/p&gt;
&lt;script src="/static/three.min.js" type="text/javascript"&gt;&lt;/script&gt;
&lt;script src="/static/FirstPersonControls.js" type="text/javascript"&gt;&lt;/script&gt;
&lt;script src="/static/helvetiker_regular.typeface.js" type="text/javascript"&gt;&lt;/script&gt;
&lt;script src="/static/214game.js" type="text/javascript"&gt;&lt;/script&gt;
&lt;div id="game_area" style="width: 600px; height: 450px; margin-left: 10px;clear:both"&gt;
&lt;/div&gt;
&lt;p style="margin-left: 100px; margin-top: 10px; "&gt;* 用 WASD←→ 移動，需要 WebGL 支持&lt;/p&gt;</content><category term="life"></category><category term="will"></category><category term="you"></category><category term="marry"></category><category term="me"></category></entry><entry><title>ICSE 2012</title><link href="//farseerfc.me/icse2012.html" rel="alternate"></link><published>2012-06-06T10:42:00+09:00</published><updated>2012-06-06T10:42:00+09:00</updated><author><name>farseerfc</name></author><id>tag:farseerfc.me,2012-06-06:/icse2012.html</id><summary type="html">
&lt;div class="section" id="june-6"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="#id1"&gt;June 6&lt;/a&gt;&lt;/h2&gt;
&lt;!-- PELICAN_BEGIN_SUMMARY --&gt;
&lt;div class="section" id="keynote-1"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#id2"&gt;Keynote 1&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;沒怎麼聽懂，只記得講到了finance is not money但是沒聽懂這個和軟件有什麼關係。&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="cost-estimation-for-distributed-software-project"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#id3"&gt;Cost Estimation for Distributed Software Project&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;講到他們試圖改善現有的模型去更精確地評估軟件開發的開銷。&lt;/p&gt;
&lt;p&gt;他們會給PM建議之前的項目的歷史數據，然後對於新項目，他們建議歷史上已有
的項目的數據，從而幫助PM得到更精確的評估。他們試圖儘量減少項目評估對PM
的經驗的需求，從而幫助即使經驗很少的PM也能準確評估項目的開銷。&lt;/p&gt;
&lt;!-- PELICAN_END_SUMMARY --&gt;
&lt;p&gt;他們的觀點：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Context-specfic solutions needed!&lt;/p&gt;
&lt;p&gt;我們需要更上下文相關的解決方案！&lt;/p&gt;
&lt;p&gt;Early user paticipation is key!&lt;/p&gt;
&lt;p&gt;早期用戶的參與是關鍵&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
&lt;div class="section" id="characterizing-logging-practices-in-open-source-software"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#id4"&gt;Characterizing Logging Practices in Open-Source Software&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Common mistakes in logging messages&lt;/p&gt;
&lt;p&gt;在日誌記錄中容易犯的錯誤&lt;/p&gt;
&lt;p&gt;他們學習了歷史上的log記錄，然後試圖找到重複修改的輸出log的語句，確定log …&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;</summary><content type="html">
&lt;div class="section" id="june-6"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="#id1"&gt;June 6&lt;/a&gt;&lt;/h2&gt;
&lt;!-- PELICAN_BEGIN_SUMMARY --&gt;
&lt;div class="section" id="keynote-1"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#id2"&gt;Keynote 1&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;沒怎麼聽懂，只記得講到了finance is not money但是沒聽懂這個和軟件有什麼關係。&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="cost-estimation-for-distributed-software-project"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#id3"&gt;Cost Estimation for Distributed Software Project&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;講到他們試圖改善現有的模型去更精確地評估軟件開發的開銷。&lt;/p&gt;
&lt;p&gt;他們會給PM建議之前的項目的歷史數據，然後對於新項目，他們建議歷史上已有
的項目的數據，從而幫助PM得到更精確的評估。他們試圖儘量減少項目評估對PM
的經驗的需求，從而幫助即使經驗很少的PM也能準確評估項目的開銷。&lt;/p&gt;
&lt;!-- PELICAN_END_SUMMARY --&gt;
&lt;p&gt;他們的觀點：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Context-specfic solutions needed!&lt;/p&gt;
&lt;p&gt;我們需要更上下文相關的解決方案！&lt;/p&gt;
&lt;p&gt;Early user paticipation is key!&lt;/p&gt;
&lt;p&gt;早期用戶的參與是關鍵&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
&lt;div class="section" id="characterizing-logging-practices-in-open-source-software"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#id4"&gt;Characterizing Logging Practices in Open-Source Software&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Common mistakes in logging messages&lt;/p&gt;
&lt;p&gt;在日誌記錄中容易犯的錯誤&lt;/p&gt;
&lt;p&gt;他們學習了歷史上的log記錄，然後試圖找到重複修改的輸出log的語句，確定log
中存在的問題。他們首先確定修改是事後修改。&lt;/p&gt;
&lt;p&gt;通常的修改的比例（9027個修改）&lt;/p&gt;
&lt;table border="0" class="table docutils borderless"&gt;
&lt;colgroup&gt;
&lt;col width="10%"/&gt;
&lt;col width="90%"/&gt;
&lt;/colgroup&gt;
&lt;tbody valign="top"&gt;
&lt;tr&gt;&lt;td&gt;45%&lt;/td&gt;
&lt;td&gt;靜態文本&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;27%&lt;/td&gt;
&lt;td&gt;打印出的變量&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;26%&lt;/td&gt;
&lt;td&gt;調試等級verbosity&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;2%&lt;/td&gt;
&lt;td&gt;日誌輸出的位置&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;他們發現有調試等級的變化，是因爲安全漏洞之類的原因，或者在開銷和數據
之間的權衡。&lt;/p&gt;
&lt;p&gt;大多數對log的變量的修改都是爲了增加一個參數。他們之前的LogEnhancer是爲了
解決這個問題而提出的，通過靜態檢查，提醒程序員是否忘記了某個參數&lt;/p&gt;
&lt;p&gt;對text的修改是因爲要改掉過時的代碼信息，避免誤導用戶。&lt;/p&gt;
&lt;p&gt;他們的實驗是採用了基於code clone 的技術，找到所有log語句，然後找不一致
的clone，然後自動提出建議。&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="combine-functional-and-imperative-pgrm-for-multicore-sw-scala-java"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#id5"&gt;Combine Functional and Imperative Pgrm for Multicore Sw: Scala &amp;amp; Java&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;趨勢：到處都是多核，但是併發程序呢？&lt;/p&gt;
&lt;p&gt;他們研究的對象是Scala和Java，因爲可以編譯後確認JVM字節碼的語義。&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;dl class="first docutils"&gt;
&lt;dt&gt;Java:&lt;/dt&gt;
&lt;dd&gt;&lt;ul class="first last"&gt;
&lt;li&gt;共享內存&lt;/li&gt;
&lt;li&gt;顯示創建的線程&lt;/li&gt;
&lt;li&gt;手動同步&lt;/li&gt;
&lt;li&gt;Wait/Notify機制&lt;/li&gt;
&lt;/ul&gt;
&lt;/dd&gt;
&lt;/dl&gt;
&lt;/li&gt;
&lt;li&gt;&lt;dl class="first docutils"&gt;
&lt;dt&gt;Scala:&lt;/dt&gt;
&lt;dd&gt;&lt;ul class="first last"&gt;
&lt;li&gt;高階函數&lt;/li&gt;
&lt;li&gt;Actors, 消息傳遞&lt;/li&gt;
&lt;li&gt;lists, filters, iterators&lt;/li&gt;
&lt;li&gt;while&lt;/li&gt;
&lt;li&gt;共享狀態, OO&lt;/li&gt;
&lt;li&gt;import java.* 能從java導入任何庫&lt;/li&gt;
&lt;li&gt;auto type inferance 自動類型推導&lt;/li&gt;
&lt;/ul&gt;
&lt;/dd&gt;
&lt;/dl&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;實驗的參與者都經過4周的訓練，實驗項目是工業等級的開發項目&lt;/p&gt;
&lt;p&gt;結果：&lt;/p&gt;
&lt;p&gt;scala 的項目平均比java多花38%的時間，主要都是花在Test和debug上的時間。&lt;/p&gt;
&lt;p&gt;程序員的經驗和總體時間相關，但是對test和debug沒有顯著影響。&lt;/p&gt;
&lt;p&gt;scala的爲了讓編程更有效率的設計，導致debug更困難。比如類型推導，debug
的時候需要手動推導，來理解正在發生什麼。&lt;/p&gt;
&lt;p&gt;scala的程序比java小，中位數2.6%，平均15.2%&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;dl class="first docutils"&gt;
&lt;dt&gt;性能比較：&lt;/dt&gt;
&lt;dd&gt;&lt;ul class="first last"&gt;
&lt;li&gt;單核：scala的線性程序的性能比java好&lt;/li&gt;
&lt;li&gt;&lt;dl class="first docutils"&gt;
&lt;dt&gt;4核：&lt;/dt&gt;
&lt;dd&gt;&lt;ul class="first last"&gt;
&lt;li&gt;scala 7s @ 4 threads&lt;/li&gt;
&lt;li&gt;java 4si @ 8 threads&lt;/li&gt;
&lt;li&gt;&lt;dl class="first docutils"&gt;
&lt;dt&gt;median&lt;/dt&gt;
&lt;dd&gt;&lt;ul class="first last"&gt;
&lt;li&gt;83s scala&lt;/li&gt;
&lt;li&gt;98s java&lt;/li&gt;
&lt;/ul&gt;
&lt;/dd&gt;
&lt;/dl&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/dd&gt;
&lt;/dl&gt;
&lt;/li&gt;
&lt;li&gt;32core: best scala 34s @ 64 threads&lt;/li&gt;
&lt;/ul&gt;
&lt;/dd&gt;
&lt;/dl&gt;
&lt;/li&gt;
&lt;li&gt;&lt;dl class="first docutils"&gt;
&lt;dt&gt;結論&lt;/dt&gt;
&lt;dd&gt;&lt;ul class="first last"&gt;
&lt;li&gt;java有更好的scalability&lt;/li&gt;
&lt;/ul&gt;
&lt;/dd&gt;
&lt;/dl&gt;
&lt;/li&gt;
&lt;li&gt;&lt;dl class="first docutils"&gt;
&lt;dt&gt;scala類型推導&lt;/dt&gt;
&lt;dd&gt;&lt;ul class="first last"&gt;
&lt;li&gt;45%說對攜帶碼有幫助&lt;/li&gt;
&lt;li&gt;85%說導致程序錯誤&lt;/li&gt;
&lt;/ul&gt;
&lt;/dd&gt;
&lt;/dl&gt;
&lt;/li&gt;
&lt;li&gt;&lt;dl class="first docutils"&gt;
&lt;dt&gt;調試&lt;/dt&gt;
&lt;dd&gt;&lt;ul class="first last"&gt;
&lt;li&gt;23%認爲scala簡單&lt;/li&gt;
&lt;li&gt;77%認爲java簡單&lt;/li&gt;
&lt;/ul&gt;
&lt;/dd&gt;
&lt;/dl&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;multi-paradigram are better&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="sound-empirical-evidence-in-software-testing"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#id6"&gt;Sound Empirical Evidence in Software Testing&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Test data generation 測試數據自動生成&lt;/p&gt;
&lt;p&gt;Large Empirical Studies - not always possible&lt;/p&gt;
&lt;p&gt;For open source software - big enough&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="identifing-linux-bug-fixing-patch"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#id7"&gt;Identifing Linux Bug Fixing Patch&lt;/a&gt;&lt;/h3&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;dl class="first docutils"&gt;
&lt;dt&gt;current practice:&lt;/dt&gt;
&lt;dd&gt;&lt;ul class="first last"&gt;
&lt;li&gt;manual&lt;/li&gt;
&lt;/ul&gt;
&lt;/dd&gt;
&lt;/dl&gt;
&lt;/li&gt;
&lt;li&gt;&lt;dl class="first docutils"&gt;
&lt;dt&gt;Current research:&lt;/dt&gt;
&lt;dd&gt;&lt;ul class="first last"&gt;
&lt;li&gt;keywords in commits&lt;/li&gt;
&lt;li&gt;link bug reports in bugzilla&lt;/li&gt;
&lt;/ul&gt;
&lt;/dd&gt;
&lt;/dl&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Try to solve classification problem&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;dl class="first docutils"&gt;
&lt;dt&gt;issue&lt;/dt&gt;
&lt;dd&gt;&lt;ul class="first last"&gt;
&lt;li&gt;pre-identified&lt;/li&gt;
&lt;li&gt;post-identified&lt;/li&gt;
&lt;/ul&gt;
&lt;/dd&gt;
&lt;/dl&gt;
&lt;/li&gt;
&lt;li&gt;&lt;dl class="first docutils"&gt;
&lt;dt&gt;data&lt;/dt&gt;
&lt;dd&gt;&lt;ul class="first last"&gt;
&lt;li&gt;from commit log&lt;/li&gt;
&lt;/ul&gt;
&lt;/dd&gt;
&lt;/dl&gt;
&lt;/li&gt;
&lt;li&gt;&lt;dl class="first docutils"&gt;
&lt;dt&gt;feature extraction&lt;/dt&gt;
&lt;dd&gt;&lt;ul class="first last"&gt;
&lt;li&gt;text pre-process stemmed non-stop words&lt;/li&gt;
&lt;/ul&gt;
&lt;/dd&gt;
&lt;/dl&gt;
&lt;/li&gt;
&lt;li&gt;model learning&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;research questions&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="active-refinement-of-clone-anomaly-reports"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#id8"&gt;Active Refinement of Clone Anomaly Reports&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;motivating&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;code clones, clone groups&lt;/li&gt;
&lt;li&gt;clone used to detect bugs&lt;/li&gt;
&lt;li&gt;anomaly : inconsistent clone group
many anomaly clone are note bug, high false positive&lt;/li&gt;
&lt;/ul&gt;
&lt;dl class="docutils"&gt;
&lt;dt&gt;approach&lt;/dt&gt;
&lt;dd&gt;&lt;ul class="first last simple"&gt;
&lt;li&gt;reorder by sorted bug reports&lt;/li&gt;
&lt;/ul&gt;
&lt;/dd&gt;
&lt;/dl&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr class="docutils"/&gt;
&lt;div class="section" id="june7"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="#id9"&gt;June7&lt;/a&gt;&lt;/h2&gt;
&lt;div class="section" id="keynotes-2-sustainability-with-software-an-industrial-perspective"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#id10"&gt;Keynotes 2: Sustainability with Software - An Industrial Perspective&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Sustainability&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;dl class="first docutils"&gt;
&lt;dt&gt;Classic View: Idenpendent view with overlap&lt;/dt&gt;
&lt;dd&gt;&lt;ul class="first last"&gt;
&lt;li&gt;Social&lt;/li&gt;
&lt;li&gt;Environment&lt;/li&gt;
&lt;li&gt;Economic&lt;/li&gt;
&lt;/ul&gt;
&lt;/dd&gt;
&lt;/dl&gt;
&lt;/li&gt;
&lt;li&gt;&lt;dl class="first docutils"&gt;
&lt;dt&gt;Nested viw&lt;/dt&gt;
&lt;dd&gt;&lt;ul class="first last"&gt;
&lt;li&gt;&lt;dl class="first docutils"&gt;
&lt;dt&gt;Environment&lt;/dt&gt;
&lt;dd&gt;&lt;ul class="first last"&gt;
&lt;li&gt;&lt;dl class="first docutils"&gt;
&lt;dt&gt;Social&lt;/dt&gt;
&lt;dd&gt;&lt;ul class="first last"&gt;
&lt;li&gt;Economic&lt;/li&gt;
&lt;/ul&gt;
&lt;/dd&gt;
&lt;/dl&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/dd&gt;
&lt;/dl&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/dd&gt;
&lt;/dl&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;dl class="docutils"&gt;
&lt;dt&gt;Triple bottom line&lt;/dt&gt;
&lt;dd&gt;&lt;ul class="first last simple"&gt;
&lt;li&gt;&lt;dl class="first docutils"&gt;
&lt;dt&gt;economic&lt;/dt&gt;
&lt;dd&gt;-global business, networks , global econ&lt;/dd&gt;
&lt;/dl&gt;
&lt;/li&gt;
&lt;li&gt;&lt;dl class="first docutils"&gt;
&lt;dt&gt;env&lt;/dt&gt;
&lt;dd&gt;&lt;ul class="first last"&gt;
&lt;li&gt;natural res, climate change, population grow&lt;/li&gt;
&lt;/ul&gt;
&lt;/dd&gt;
&lt;/dl&gt;
&lt;/li&gt;
&lt;li&gt;&lt;dl class="first docutils"&gt;
&lt;dt&gt;social&lt;/dt&gt;
&lt;dd&gt;&lt;ul class="first last"&gt;
&lt;li&gt;awareness, connectivity, accountability&lt;/li&gt;
&lt;/ul&gt;
&lt;/dd&gt;
&lt;/dl&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/dd&gt;
&lt;/dl&gt;
&lt;div class="section" id="green-it"&gt;
&lt;h4&gt;&lt;a class="toc-backref" href="#id11"&gt;Green IT&lt;/a&gt;&lt;/h4&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;dl class="first docutils"&gt;
&lt;dt&gt;reduce IT energy&lt;/dt&gt;
&lt;dd&gt;&lt;ul class="first last"&gt;
&lt;li&gt;more than 50% cooling - doing nothing&lt;/li&gt;
&lt;/ul&gt;
&lt;/dd&gt;
&lt;/dl&gt;
&lt;/li&gt;
&lt;li&gt;&lt;dl class="first docutils"&gt;
&lt;dt&gt;mini e-waste: not properly recycled&lt;/dt&gt;
&lt;dd&gt;&lt;ul class="first last"&gt;
&lt;li&gt;80% in EU&lt;/li&gt;
&lt;li&gt;75% in US&lt;/li&gt;
&lt;/ul&gt;
&lt;/dd&gt;
&lt;/dl&gt;
&lt;/li&gt;
&lt;li&gt;foster dematerialization&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In-Memory Technology: Expected Sustainable Benefits&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="what-can-we-do"&gt;
&lt;h4&gt;&lt;a class="toc-backref" href="#id12"&gt;What can we do?&lt;/a&gt;&lt;/h4&gt;
&lt;blockquote&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;consider all software lifecycle phases in your design&lt;/li&gt;
&lt;li&gt;avoid energy expensive behavior in your codes&lt;/li&gt;
&lt;li&gt;design lean architectures&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
&lt;div class="section" id="green-by-it"&gt;
&lt;h4&gt;&lt;a class="toc-backref" href="#id13"&gt;Green by IT&lt;/a&gt;&lt;/h4&gt;
&lt;blockquote&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;2% green IT&lt;/li&gt;
&lt;li&gt;98% green IT&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="on-how-often-code-is-cloned-across-repositories"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#id14"&gt;On How Often code is cloned across repositories&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Line based hashing code clone detection&lt;/p&gt;
&lt;p&gt;never do anything harder than sorting&lt;/p&gt;
&lt;p&gt;hashing a window of 5 lines of normalized (tokenized) code, dropping
3/4 of the hashing&lt;/p&gt;
&lt;p&gt;把ccfinder一個月的工作縮短到了3, 4天。沒有比較presion和recall。&lt;/p&gt;
&lt;table border="0" class="table docutils borderless"&gt;
&lt;colgroup&gt;
&lt;col width="11%"/&gt;
&lt;col width="89%"/&gt;
&lt;/colgroup&gt;
&lt;tbody valign="top"&gt;
&lt;tr&gt;&lt;td&gt;14%&lt;/td&gt;
&lt;td&gt;type1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;16%&lt;/td&gt;
&lt;td&gt;type2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;17%&lt;/td&gt;
&lt;td&gt;type3 (not really type2)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div class="section" id="graph-based-analysis-and-prediction-for-sw-evolution"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#id15"&gt;Graph-based analysis and prediction for sw evolution&lt;/a&gt;&lt;/h3&gt;
&lt;div class="section" id="graph-are-everywhere"&gt;
&lt;h4&gt;&lt;a class="toc-backref" href="#id16"&gt;graph are everywhere&lt;/a&gt;&lt;/h4&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;internet topology&lt;/li&gt;
&lt;li&gt;social net&lt;/li&gt;
&lt;li&gt;chemistry&lt;/li&gt;
&lt;li&gt;biology&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;in sw
- func call graph
- module dependency graph&lt;/p&gt;
&lt;p&gt;developer interaction graph
- commit logs
- bug reports&lt;/p&gt;
&lt;p&gt;experiment 11 oss, 27~171 release, &amp;gt; 9 years&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="predictors"&gt;
&lt;h4&gt;&lt;a class="toc-backref" href="#id17"&gt;predictors&lt;/a&gt;&lt;/h4&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;dl class="first docutils"&gt;
&lt;dt&gt;NodeRank&lt;/dt&gt;
&lt;dd&gt;&lt;ul class="first last"&gt;
&lt;li&gt;similar to pagerank of google&lt;/li&gt;
&lt;li&gt;measure relative importance of each node&lt;/li&gt;
&lt;li&gt;&lt;dl class="first docutils"&gt;
&lt;dt&gt;func call graph with noderank&lt;/dt&gt;
&lt;dd&gt;&lt;ul class="first last"&gt;
&lt;li&gt;compare rank with severity scale on bugzilla&lt;/li&gt;
&lt;/ul&gt;
&lt;/dd&gt;
&lt;/dl&gt;
&lt;/li&gt;
&lt;li&gt;&lt;dl class="first docutils"&gt;
&lt;dt&gt;correlation between noderank and BugSeverity&lt;/dt&gt;
&lt;dd&gt;&lt;ul class="first last"&gt;
&lt;li&gt;func level 0.48 ~ 0.86 varies among projects.&lt;/li&gt;
&lt;li&gt;model level &amp;gt; func level&lt;/li&gt;
&lt;/ul&gt;
&lt;/dd&gt;
&lt;/dl&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/dd&gt;
&lt;/dl&gt;
&lt;/li&gt;
&lt;li&gt;&lt;dl class="first docutils"&gt;
&lt;dt&gt;ModularityRatio&lt;/dt&gt;
&lt;dd&gt;&lt;ul class="first last"&gt;
&lt;li&gt;cohesion/coupling ratio:  IntraDep(M)/InterDep(M)&lt;/li&gt;
&lt;li&gt;forecast mantencance effort&lt;/li&gt;
&lt;li&gt;&lt;dl class="first docutils"&gt;
&lt;dt&gt;use for&lt;/dt&gt;
&lt;dd&gt;&lt;ul class="first last"&gt;
&lt;li&gt;identify modules that need redesign or refactoring&lt;/li&gt;
&lt;/ul&gt;
&lt;/dd&gt;
&lt;/dl&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/dd&gt;
&lt;/dl&gt;
&lt;/li&gt;
&lt;li&gt;&lt;dl class="first docutils"&gt;
&lt;dt&gt;EditDistance&lt;/dt&gt;
&lt;dd&gt;&lt;ul class="first last"&gt;
&lt;li&gt;bug-based developer collaboration graphs&lt;/li&gt;
&lt;li&gt;ED(G1,G2)=|V1|+|V2|-2|V1交V2|+|E1|+|E2|-2|E1交E2|&lt;/li&gt;
&lt;li&gt;&lt;dl class="first docutils"&gt;
&lt;dt&gt;use for&lt;/dt&gt;
&lt;dd&gt;&lt;ul class="first last"&gt;
&lt;li&gt;release planning&lt;/li&gt;
&lt;li&gt;resource allocation&lt;/li&gt;
&lt;/ul&gt;
&lt;/dd&gt;
&lt;/dl&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/dd&gt;
&lt;/dl&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;graph metrics&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;dl class="first docutils"&gt;
&lt;dt&gt;graph diameter&lt;/dt&gt;
&lt;dd&gt;&lt;ul class="first last"&gt;
&lt;li&gt;average node degree indicates reuse&lt;/li&gt;
&lt;/ul&gt;
&lt;/dd&gt;
&lt;/dl&gt;
&lt;/li&gt;
&lt;li&gt;clustering coefficient&lt;/li&gt;
&lt;li&gt;assortativity&lt;/li&gt;
&lt;li&gt;num of cycles&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class="section" id="conclusion"&gt;
&lt;h4&gt;&lt;a class="toc-backref" href="#id18"&gt;Conclusion&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;"Actionable intelligence" from graph evolution&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;studie 11 large long-live projs&lt;/li&gt;
&lt;li&gt;predictors&lt;/li&gt;
&lt;li&gt;identify pivotal moments in evolution&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="what-make-long-term-contributors-willingness-and-opportunity-in-oss"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#id19"&gt;What make long term contributors: willingness and opportunity in OSS&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;OSS don't work without contributors form community&lt;/p&gt;
&lt;p&gt;mozilla (2000-2008)&lt;/p&gt;
&lt;p&gt;10^2.2 LTC &amp;lt;- 2 order -&amp;gt; 10^4.2 new contributors &amp;lt;- 3.5 order -&amp;gt; 10^7.7 users&lt;/p&gt;
&lt;p&gt;gnome (1999-2007)&lt;/p&gt;
&lt;p&gt;10^2.5 LTC &amp;lt;- 1.5 order -&amp;gt; 10^4.0 new contributors &amp;lt;- 3.5 order -&amp;gt; 10^6.5 users&lt;/p&gt;
&lt;div class="section" id="approach"&gt;
&lt;h4&gt;&lt;a class="toc-backref" href="#id20"&gt;approach&lt;/a&gt;&lt;/h4&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;read issues of 20 LTC and 20 non-LTC&lt;/li&gt;
&lt;li&gt;suvery 56 (36 non-LTC and 20 LTC)&lt;/li&gt;
&lt;li&gt;extract practices published on project web sites&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class="section" id="summeray"&gt;
&lt;h4&gt;&lt;a class="toc-backref" href="#id21"&gt;summeray&lt;/a&gt;&lt;/h4&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;Ability/Willingness distinguishes LTCs&lt;/li&gt;
&lt;li&gt;&lt;dl class="first docutils"&gt;
&lt;dt&gt;Environment&lt;/dt&gt;
&lt;dd&gt;&lt;ul class="first last"&gt;
&lt;li&gt;&lt;dl class="first docutils"&gt;
&lt;dt&gt;macro-climate&lt;/dt&gt;
&lt;dd&gt;&lt;ul class="first last"&gt;
&lt;li&gt;popularity&lt;/li&gt;
&lt;/ul&gt;
&lt;/dd&gt;
&lt;/dl&gt;
&lt;/li&gt;
&lt;li&gt;&lt;dl class="first docutils"&gt;
&lt;dt&gt;micro-climate&lt;/dt&gt;
&lt;dd&gt;&lt;ul class="first last"&gt;
&lt;li&gt;attention&lt;/li&gt;
&lt;li&gt;bumber of peers&lt;/li&gt;
&lt;li&gt;performance of peers&lt;/li&gt;
&lt;/ul&gt;
&lt;/dd&gt;
&lt;/dl&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/dd&gt;
&lt;/dl&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;regression model&lt;/p&gt;
&lt;p&gt;newcomers to LTC conversion drops&lt;/p&gt;
&lt;dl class="docutils"&gt;
&lt;dt&gt;actions in first month predicts LTCs&lt;/dt&gt;
&lt;dd&gt;&lt;ul class="first last simple"&gt;
&lt;li&gt;24% recall&lt;/li&gt;
&lt;li&gt;37% precision&lt;/li&gt;
&lt;/ul&gt;
&lt;/dd&gt;
&lt;/dl&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="develop-of-auxiliary-functions-should-you-be-agile"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#id22"&gt;develop of auxiliary functions: should you be agile?&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;a empirial assessment of pair programming and test-first programming&lt;/p&gt;
&lt;p&gt;can agile help auxiliary functions?&lt;/p&gt;
&lt;div class="section" id="experiment"&gt;
&lt;h4&gt;&lt;a class="toc-backref" href="#id23"&gt;experiment&lt;/a&gt;&lt;/h4&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;pair vs solo&lt;/li&gt;
&lt;li&gt;test-first vs test-last&lt;/li&gt;
&lt;li&gt;students vs professors&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class="section" id="research-questions"&gt;
&lt;h4&gt;&lt;a class="toc-backref" href="#id24"&gt;research questions&lt;/a&gt;&lt;/h4&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;r1: can pair help obtain more correct impl&lt;/li&gt;
&lt;li&gt;r2: can test-first&lt;/li&gt;
&lt;li&gt;r3: dst test1 encourage the impl or more test cases?&lt;/li&gt;
&lt;li&gt;r4: does test1 course more coverage&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class="section" id="result"&gt;
&lt;h4&gt;&lt;a class="toc-backref" href="#id25"&gt;result&lt;/a&gt;&lt;/h4&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;dl class="first docutils"&gt;
&lt;dt&gt;test-first&lt;/dt&gt;
&lt;dd&gt;&lt;ul class="first last"&gt;
&lt;li&gt;higher coverage&lt;/li&gt;
&lt;li&gt;non change with correctness&lt;/li&gt;
&lt;/ul&gt;
&lt;/dd&gt;
&lt;/dl&gt;
&lt;/li&gt;
&lt;li&gt;&lt;dl class="first docutils"&gt;
&lt;dt&gt;pair&lt;/dt&gt;
&lt;dd&gt;&lt;ul class="first last"&gt;
&lt;li&gt;improve on correctness&lt;/li&gt;
&lt;li&gt;longer total programming time&lt;/li&gt;
&lt;/ul&gt;
&lt;/dd&gt;
&lt;/dl&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="static-detection-of-resource-contention-problems-in-server-side-script"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#id26"&gt;Static Detection of Resource Contention Problems in Server-side script&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Addressed the race condition of accessing database or filesystem of PHP&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="amplifying-tests-to-validate-exception-handling-code"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#id27"&gt;Amplifying Tests to Validate Exception Handling Code&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;異常處理的代碼不但難寫，而且難以驗證。各種組合情況難以估計，尤其是手機
系統上。&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="a-tactic-centric-approach-automating-traceability-of-quality-concerns"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#id28"&gt;A tactic-centric approach automating traceability of quality concerns&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;tactic traceability information models&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
</content><category term="life"></category><category term="icse"></category><category term="software"></category></entry><entry><title>MSR 2012 @ ICSE</title><link href="//farseerfc.me/msr2012.html" rel="alternate"></link><published>2012-06-02T10:42:00+09:00</published><updated>2012-06-02T10:42:00+09:00</updated><author><name>farseerfc</name></author><id>tag:farseerfc.me,2012-06-02:/msr2012.html</id><summary type="html">
&lt;div class="section" id="mining-software-repository-2012-icse"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="#id3"&gt;Mining Software Repository 2012 @ ICSE&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;參加了今年的MSR，會場在University of Zurich。一大早來到大學，註冊有點
小插曲，顯然瑞士人搞不清楚中國人的名字，3個楊（Yang）姓的中國人的名牌
被搞錯了。然後堀田學長的所屬被寫作了“Japan, Japan”，成爲了全日本的代表。&lt;/p&gt;
&lt;div class="section" id="msr-microsoft-research-talk-msr-mining-software-repositories"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#id4"&gt;MSR(MicroSoft Research) talk @ MSR(Mining Software Repositories)&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;首先是來自微軟亞洲研究院（MicroSoft Research @ Asia, MSR Asia）的Keynots，
於是就變成了MSR在MSR的演講。MSR的張冬梅（Dongmei Zhang）女士的演講
分爲關於Software Analysis和XIAO的兩部分。XIAO是MSRA開發的Code Clone
Detector，似乎我要給井上研做的就是這個。想更多瞭解Xiao的細節，不過張女士
演講結束的時候的鼓掌導致了話筒的小故障 …&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;</summary><content type="html">
&lt;div class="section" id="mining-software-repository-2012-icse"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="#id3"&gt;Mining Software Repository 2012 @ ICSE&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;參加了今年的MSR，會場在University of Zurich。一大早來到大學，註冊有點
小插曲，顯然瑞士人搞不清楚中國人的名字，3個楊（Yang）姓的中國人的名牌
被搞錯了。然後堀田學長的所屬被寫作了“Japan, Japan”，成爲了全日本的代表。&lt;/p&gt;
&lt;div class="section" id="msr-microsoft-research-talk-msr-mining-software-repositories"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#id4"&gt;MSR(MicroSoft Research) talk @ MSR(Mining Software Repositories)&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;首先是來自微軟亞洲研究院（MicroSoft Research @ Asia, MSR Asia）的Keynots，
於是就變成了MSR在MSR的演講。MSR的張冬梅（Dongmei Zhang）女士的演講
分爲關於Software Analysis和XIAO的兩部分。XIAO是MSRA開發的Code Clone
Detector，似乎我要給井上研做的就是這個。想更多瞭解Xiao的細節，不過張女士
演講結束的時候的鼓掌導致了話筒的小故障。&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="towards-improving-bts-with-game-mechanisms"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#id5"&gt;Towards Improving BTS with Game Mechanisms&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;感覺這篇的內容基本上就是關於&lt;/p&gt;
&lt;p&gt;&lt;a class="reference external" href="http://www.joelonsoftware.com/items/2008/09/15.html"&gt;http://www.joelonsoftware.com/items/2008/09/15.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;這裏寫到的東西，然後說同樣的理論是否可以用於Issue Tracking之類的事情上。
個人感覺這個意義不大，stackoverflow之所以成功是因爲它把開源社區本身就
具有的名譽體系具現化了，本着大家都喜歡被別人奉爲大牛的心態，就如同
wikipedia一樣。同樣的理論如果用於公司內部的Issue Tracking系統上，會得到
完全不同的東西吧。就像MSDN的組織方式雖然和wikipedia是一樣的，但是在MSDN
裏找信息的感覺和在wikipedia完全不一樣。個人不太看好這個方向。&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="ghtorrent"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#id6"&gt;GHTorrent&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;這篇的slide在這裏可以看到：&lt;a class="reference external" href="http://www.slideshare.net/gousiosg/ghtorrent-githubs-data-from-a-firehose-13184524"&gt;http://www.slideshare.net/gousiosg/ghtorrent-githubs-data-from-a-firehose-13184524&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Data exporter for github. Github的主要數據，代碼，已經可以通過git接口
獲得了，wiki是git的形式保存的。所以這個項目的目的就是暴露別的數據，主要
是issue tracking，code comments，這種。代碼訪問github api，然後用分佈式
實現以克服api的限制，然後提供torrents形式的history下載。github api獲得
的json數據以bson的形式保存在MongoDB裏，解析過的有了Schema之後的數據保存
在MySQL裏並可以導出SQL。&lt;/p&gt;
&lt;p&gt;個人的想法，覺得數據如果能夠更統一，全部存在Git裏或許更好，像Wiki一樣。
同樣是要暴露全部歷史記錄的目的，用Torrent自己實現的歷史遠不如用Git的
接口實現的歷史記錄方便吧，git blame之類的也更方便追蹤code comment之類的
作者信息。當然對git的raw date直接讀寫，需要對git的內部原理有足夠的理解，
或許只有github的人有這種能力了。&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="topic-mining"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#id7"&gt;Topic Mining&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;用得兩個參數， DE 和 AIC，完全不能理解，過後研究。實驗針對了Firefox,
Mylyn, Eclipse三個軟件。試圖從Repo中分析源代碼的identifier和comments，
找到topic和bug之間的關係，比如怎樣的topic更容易導致bug。得出的結論似乎
也很曖昧，只是說核心功能被報告的bug更多，但是不知道原因。這只能表示核心
功能受到更多關注和更多測試吧，並不能說明核心功能就容易產生bug。&lt;/p&gt;
&lt;p&gt;不過這個的Slide做得很漂亮，很容易理解。&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="secold"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#id8"&gt;SeCold&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;A linked data platform for mining software repositories&lt;/p&gt;
&lt;p&gt;沒聽懂這個項目的目的。&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="the-evolution-of-software"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#id9"&gt;The evolution of software&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;第二天的Keynotes，關於將Social Media和Software Development相結合的想法。
或許就是Github賴以成功的基礎。講到代碼中的comment, Tags, uBlog, blog之類
的social的特性和IDE的融合的趨勢。&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="do-faster-releases-imporve-software-quality"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#id10"&gt;Do Faster Releases Imporve Software Quality?&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;使用Firefox作爲例子。&lt;/p&gt;
&lt;p&gt;結論是快速發佈導致bug更多，更容易crash，但是bug更快得到修復，並且用戶
更快轉向新的發佈。&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="security-vs-performance-bugs-in-firefox"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#id11"&gt;Security vs Performance Bugs in Firefox&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Performance bugs are regression, blocks release.&lt;/p&gt;
&lt;/div&gt;
&lt;hr class="docutils"/&gt;
&lt;div class="section" id="id1"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#id12"&gt;一些感想&lt;/a&gt;&lt;/h3&gt;
&lt;div class="section" id="commit"&gt;
&lt;h4&gt;&lt;a class="toc-backref" href="#id13"&gt;基於自然語義分析的commit分割&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;經常工具（比如git）的使用者並沒有按照工具設計者的意圖使用工具，這給MSR
帶來很多困難。舉個例子，git有非常完美的branch系統，通常期望git的使用者
能夠在一次commit裏commit一個功能，比如一個bug的修復，或者一個feature的
添加，但是事實上經常有很多邏輯上的commit被合併在一個裏面了。&lt;/p&gt;
&lt;p&gt;或許這不是使用者的錯，而是工具仍然不夠人性的表現。或許我們可以自動把
一次的commit按照語義分割成多個。&lt;/p&gt;
&lt;p&gt;分割之後，可以更容易地把issue和commit關聯，也更容易組織更多的研究。&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="slides"&gt;
&lt;h4&gt;&lt;a class="toc-backref" href="#id14"&gt;關於這次發表中大家用的slides系統&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;題目爲``Incorporating Version Histories in Information Retrieval Based
Bug Localization''的人用的slide是beamer的。公式很多，overlay很多，列表
很多，圖片很少，典型的beamer做出的slide。思維導圖用得很不錯。今天一天
有至少3個slide是用beamer做的。&lt;/p&gt;
&lt;p&gt;題目爲``Towards Improving Bug Tracking Systems with Game Mechanisms''
的人用了prezi，圖片很多，過度很多。但是比如沒有頁號沒有頁眉頁腳，正式
會議的場合不太方便。&lt;/p&gt;
&lt;p&gt;至少有六個以上用了Apple Keynotes，Keynotes做出來的東西真的和Powerpoint
做出來的很難區別，其中兩個人用了初始的主題所以才看出來。&lt;/p&gt;
&lt;p&gt;剩下的自然是PPT。MSRA的張女士做的雖然是PPT，倒是有很多beamer的感覺，
比如頁眉頁腳和overlay的用法。這些如果都是PPT做出來的，會多很多額外的
人力吧。&lt;/p&gt;
&lt;p&gt;值得一提的是有一個題目爲``Green Mining: A Methodology of Relating
Software Change to Power Consumption''的人的slide全是``劣質''的手繪漫畫，
效果意外地好，很低碳很環保很綠色很可愛。具體效果可以參考下面的動畫，雖然
現場看到的不是一個版本：&lt;/p&gt;
&lt;p&gt;&lt;a class="reference external" href="http://softwareprocess.es/a/greenmining-presentatation-at-queens-20120522.ogv"&gt;http://softwareprocess.es/a/greenmining-presentatation-at-queens-20120522.ogv&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="id2"&gt;
&lt;h4&gt;&lt;a class="toc-backref" href="#id15"&gt;微軟是個腹黑娘！&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;嘛雖然這也不是什麼新聞了。MSR2012的Mining Challenge的贊助商是微軟，管理
組織者來自微軟研究院，獎品是Xbox和Kinect。然後今年的題目是：&lt;/p&gt;
&lt;pre class="literal-block"&gt;
Mining Android Bug
&lt;/pre&gt;
&lt;p&gt;我看到了微軟滿滿的怨氣……&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</content><category term="life"></category><category term="msr"></category><category term="icse"></category><category term="mining"></category><category term="software"></category><category term="repository"></category></entry></feed>