2014年11月13日 星期四

軟體的國際化與在地化

自由軟體開發與社群發展

講者:FrankLin


INDEX Topic 1.自由軟體的國際化與在地化
Topic 2.Ezgo打包的技術初窺探

講者介紹:
Franklin,在社群中被稱為馬哥,大一開始玩Linux,但真正栽入Linux與OOS是在念研究所時。出社會後都在做RD,現在則是以OSS為業的浪人。
2006年起,擔任KDE中文化團隊的協調人。

Topic 1.自由軟體的國際化與在地化


 Ezgo是推廣自由軟體用的一個系統,既然要推廣,中文化就是個相當重要的部分。
  • 國際化與在地化
過去的軟體,光是要能顯示中文,就要處理很多事情,如訊息的顯示、字型(px上的設定,同時涉及了自行的解析度)、編碼問題,使得在過去中文版的推出,即是一件大事。

而除了訊息,還可能會涉及當地的觀念,像是:
  • 數字表示法
例如在歐洲大多數的國家,1.000是一千,1,000才代表1,假設今天有一個德國的會計軟體,台灣中文化就得做內部的修改。
  • 年份的表示法
  • 日期的表示法
  • 金錢的表示法
  • 度量衡系統
這些都是在軟體在地化時要做的處理。

而現在,為了在同款軟體賣給不同國家時不大量修改,軟體公司提出簡單多國語言化概念。

原始程式→將訊息抽取出來,編索引,存成一個檔案→將該檔的內容翻成不同語言
(原始程式在設計時就該有能檢視索引的機制)
因為訊息已經抽出來了,所以只要針對訊息獨立處理,不必修改原始程式。

Linux 上的中文化始祖 - CLE


Chinese Linux Extension - Linux 中文延伸套件
延伸:修改程式內容,重新編譯打包,以加入中文支援

CLE團隊也知道,光是修改打包只治標而不治本,因此積極與原始Linux團隊合作,期望加入國際化軟體的架構。
包刮 Linux ,  glibc , QT, KDE ,Gnome......都從收過CLE團隊的修改。

所謂國際化,即是將軟體與特定地區及語言脫鉤的過程,當移植時,不必做內部工程上的大量改變或修正。而在地化便是延續國際化的架構,建立某個地區文化的資料庫,填入該地區文化的資料,供程式在執行期呈現。

Gettext


關於自由軟體的國際化,主要是靠著Gettext這套軟體進行,Gettext只是套工具,他利用對訊息的包裝,可以將訊息抽取出來集中在一個 .pot 檔,翻譯者只需要拿pot翻譯成不同語言,並各別存成po檔即可,而開發者會將po檔編索引成為mo檔。

po檔分為檔頭與條目:

  • 檔頭存放的是po檔與其相對的pot檔的相關資訊,包括產生時間、最後翻譯者,還有複數型的定義 (plural - form)。
  • 條目則分為旗標與註解(區別相同訊息但不同意義,e.g: left : leave過去式? 左? )

翻譯工具簡介


  • 翻譯資料庫
  • Launchpad、pootle、transifex、tryneeds等線上共筆的翻譯平台

Ezgo打包技術初窺探


  • What is ezgo
    • 能夠讓從未接觸過OSS的人,接觸OSS並使用它 → 推廣
  • 推廣
    • 目標客群:從未用過OSS的人
    • Ezgo該有哪些特色?
      • 選單
      • 操作設計上貼近Windows思維
  • 從技術面而言
    • 屬於客製化的distribution
      • 有自己的品牌,卻不是一個獨立的distribution
    • Dirty hack產生的問題
      • 沒有組織,東西太零散
      • 版本一多不易管理
      • 不符合Debian規範,無法上傳
    • 目前的做法
      • 儘可能遵循標準機制,並自動化
      • 儘可能採用外加設定檔的方式,不覆蓋現有檔案
  • Debian - ezgo
    • Debian:套件的老祖宗
    • 遵循Debian規範,將常用重複的檔案與設定等等包裝成deb檔

古典密碼學

索引 #1.加密工具
  • 密碼棒
  • 卡爾達諾漏格板
  • 旋轉機
  • 一次性密碼本
#2.加密算法
  • 凱撒密碼
  • 希爾密碼
  • 路由加密
  • 單字母替換密碼
  • 維吉尼雅密碼
#3.攻擊類型 
  • 僅知密文攻擊
  • 已知明文攻擊
  • 選擇明文攻擊

加密工具 #1.密碼棒
取布條將其纏繞於木棒上,橫向寫下明文後取下布條。解密時,必須取得相同直徑的木棒。

#2.卡爾達諾漏格板


依照漏格書寫明文以及觀看明文。

#3.旋轉機(Rotar machine)


#4.一次性密碼本

藉由亂數產生的一本加密用密碼本,可以把它想成一組金鑰,每當要產生明文時,將明文與密碼本的內容相加,如明文中的字母C (3)與密碼本的字母 X (25),3+25=28,因為28超過了26個英文字母,而對28取餘數得2,即得加密完成的密文字母B。
一次性密碼本有三個限制:
  • 確定密碼本是由隨機產生的
  • 密碼本必須只能使用一次
  • 因為要與明文相加,密碼本至少要與明文一樣長

加密算法 #1.凱撒密碼

已知明文字母P,引入一個參數K,得出密文 C = (P + K)mod 26
例如 ABCDEFGHIJK,在K=3時,得出密文DEFGHIJKLMN。(K=3是最初的凱撒密碼)
解密時 P = (C - K)mod 26。

因其架構簡單,現今已能用暴力法輕易破解,故只用於字謎類遊戲(ROT-13)。

#2.希爾密碼

使用矩陣進行加密,由密文構成的密文矩陣C = KP,其中P為明文構成的明文矩陣,K為密鑰矩陣,密鑰矩陣須為可逆才可供解密。


 
希爾加密避開了頻率分析攻擊,然而在已知明文的情況下,可透過逆運算求得金鑰,無法保證安全性。

#3.路由加密

近似於密碼棒,採用直書橫寫進行加密。

#4.單字母替換密碼

與凱撒密碼同為單字母取代的概念。將26個英文字母分別做對應,比如A對應C,B對應F,替換不受限於特定規則,也不要求有跡可循,純粹是做出26個字母的明文密文對應表,以供加密與解密時使用。儘管其複雜度遠遠高於凱撒密碼,但明文字母與密文字母仍屬一對一對應,同樣易受頻率分析(分析字母出現的頻率)攻擊破解。

#5.維吉尼雅密碼


上圖其實是由26個凱薩密碼構成的。
維吉尼雅密碼引入了金鑰的概念,假設要加密ABCDEFG,使用密鑰CIP。首先,先將密鑰長度補至和明文一樣長:

ABCDEFG
CIPCIPC

接下來,取第A行第C列得A,取第B行第I列得J...取第G行第C列得I,如此完成加密。在配合一次性密碼本的情況下,維吉尼亞密碼是足夠安全的。
攻擊類型#1.僅知密文攻擊:攻擊者在只知道密文的情況下試圖求得明文或金鑰。

#2.已知明文攻擊:攻擊者在知道部分明文與密文配對的情況下試圖破解。

#3.選擇明文攻擊:公開加密器,攻擊者可以自由輸入明文及得到該明文的密文,藉此試圖破解算法。

儘管選擇明文攻擊於設計角度上看似不合理,但在近代密碼學中,十分強調在公開演算法的情況下,還能保證安全的才是優秀的演算法,這是為了避免開發者本身預先對算法預先留下了暗門,卻因為算法黑箱而無法得知,使得維護者或開發者成為最危險的攻擊者,因此必須公開算法接受檢視。

2014年11月10日 星期一

在地社群使Firefox行動版登陸印度

Firefox for mobile,開發代號Fennec,是Firefox建構於行動裝置(平板電腦,智慧型手機)上的網頁瀏覽器。Fennec內建了多種語系,而就在數月前,Fennec新增了 Assamese, Bengali (India), Gujarati, Kannada, Maithili, Malayalam, Marathi, Oriya, Punjabi, Tamil, and Telugu 十二種印地文。

在最新釋出的版本中,這12種印地語占了新植入語言的大多數,為此,印度社群舉辦了一個小型的聚會,慶祝與宣傳這引盼已久的成就。約莫30名志工與自由軟體的愛好者參與了Moilzia在浦那的活動。Mahesh Kulkarni,是語言技術的權威,同時也身為C-DAC GIST group的首長與 W3C India駐印經理,由他負責切下Fennec蛋糕的第一刀,為這起盛事揭開序幕。

Mahesh Kulkarni在會席上分享了他的經驗,他認為社群中端與端間的在地化經驗是必要的,而不僅只於裝飾性質。於在地化的領域,只有第一等的工作仍持續至今,而現在這是著手於第二等工作的時刻。與會的社群有些來自Mozilla Hindi Team,涉及Mozilla的在地化工程,有些則是Pune Linux User Group (PLUG)的成員,還有不少活躍於Mozilla各領域的社群,他們一同研討了當前翻譯上的討戰,以及籌畫實質策略以改善現狀。

這些來自世界各地的志願團體,都是被一份初衷所吸引:可以為講者提供配有當地語言的軟體,並幫助他們用自己的語言瞭解網路與瀏覽器。這份在地化的熱情及同行評審制往往產了比付費業者還優質的翻譯軟體。這些在地化的細節都紀錄在 the Mozilla Wiki上。

有許多用戶只理解當地語言,所以不論是網站的內容或是界面都須在地化,以讓更多用戶受益,Mozilla將持續促進網頁上的語言革新,以迎合這些使用者們。

Mozilla的在地化工程首重民主的原則 ── 民有、民治、民享,搭配上熱情與優良的作業流程。舉例來說,Mozilla的德國化起於一個簡單而微小的點 ── 一個大學生打算完成Firefox的德國版本做為給他父親的禮物,由於Firefo的原碼開放,他有能力完成這份願望。同樣的,在十幾年前我加入Red Hat印度語團隊,並開始投身在各個開源專案,現在我以相當熟悉Mozilla的在地化工作,並參與了Mozilla印度語翻譯團隊。

時至今日,大多Mozilla的產品都完成了翻譯,在地化工程於Pootle platform上平穩的進行著。Fennec的印度版也藉由協做完成了翻譯及測試,儘管如此,我們仍歡迎更多的志工朋友們加入。


2014年11月9日 星期日

Network Security issues

  • Network Security Basis
    • Confidentiality
      • 維持資料的完整性
    • Integrity
      • 確認資料是否有被修改
    • Authentication
      • 建立使用者身份的認證
    • Non - repudiation
      • 防止使用者否認其曾做過的行為
    • Access Control
      • 管制使用資料的使用權限
    • Availability
      • 隨時保持資料的可用性
  • Protocol
    • 網路傳輸的協定:HTTP/FTP......
    • 資訊安全的協定:SSL,IPSec,Kerberos......
  • Ideal Security Protocol
    • 滿足安全需求
    • 效率高
      • 運算量少、延遲短
    • 健壯性
    • 容易使用與實作且應用彈性高
  • Secure Entry to NSA
    • Insert badge into reader
    • Enter Pin
    • Correct Pin?
      • Yes : Enter
      • No : get shot by security guard

Authentication Protocol

  • mutual authentication
    • 假設現在有兩個使用者Alice和Bob (可以為人或電腦)
      • Alice必須要向Bob證明她的身份是Alice
      • 同樣的,Bob需要向Alice證明他的身份是Bob
      • 因為雙方都要驗證自己的身份,而稱為mutual authentication
    • 過程可能需要建立對稱金鑰,作為辨別的基準
    • 雙向認證的必要性
      • 以往都只有系統認證人
      • 但人若遇上假的系統 → 資料外流
  •  Challenge-Response mode
    • 為了避免重放攻擊,使用challenge-Responce
    • 當認證時,使用只有Alice本人才能進行的認證
    • e.g.
      • Bob為了確認Alice的身份,Bob送出一個Nonce給Alice,Nonce就是個Challenge
      • Alice對 Alice's password跟Nonce進行一次雜湊
        • 因為只有Alice跟Bob知道Alice's password,所以可避免重放攻擊
      • 若Bob進行雜湊的結果與Alice一樣,就能確認Alice的身份
  • Authentication : Symmetric Key
    • Alice和Bob共享一把對稱金鑰
    • 只有Alice和Bob知道這把金鑰
      • 為了認證Alice的身份,Bob會傳送一個Nonce,給Alice
      • Alice對Nonce進行加密 E= (Nonce,key),傳送E給Bob
      • 上述只完成了Bob對Alice的認證
    • 那麼如何完成雙向認證呢?
      • Alice先送Ra給Bob
      • Bob送回Rb跟E(Ra,key)給Alice
        • Alice可透過解密知道是否為Ra
      • Alice送出E(Rb,k)給Bob
        • Bob可透過解密知道是否為Rb
    • 然而,這會產生一個問題
      • 分成兩次的嘗試
      • 第一次,攻擊者可以透過送出Ra得到Rb跟E(Ra,k)
      • 第二次,攻擊者送出Rb,得到E(Rb,k)
      • 那麼就可以在第一次嘗試中送回E(Rb,k) 
  •  

2014年11月6日 星期四

Ezgo

Ezgo

Speaker : Eric


Ezgo開源教材分享
  • Stellarium
    • 可以描繪星體的軌跡
  • MuseScore
    • 可繪製五線譜,快速調整譜面
    • 可隨音符演奏音樂
    • 配有音樂社群,分享音樂創作
  • Hydrogen
    • 節奏編曲軟體
    • 配有各種音源,操作容易
  • Fritzing
    • 備有虛擬麵包板與圖像化電路,可以用於電路設計上的教學

2014年11月4日 星期二

C4 Labs Course 4

#1. Makefile


  • makefile REF
    • Makefile學習筆記
  • 平常的編譯方式
    • gcc file.c -o file
    • make file.o -> make file
  • makefile :很多個檔案要做編譯,彼此之間有相依性,所以寫一個腳本來完成所有的編譯動作
PROJECT = test
OBJS = a.o b.o c.o //物件檔當成三個字串

all: $(PROJECT)
$(PROJECT): $(OBJS)
...編譯指令...
  • 檢查include的標頭檔是否有被改過
    • 知道誰被改過,又有誰用到它
  • 建立一個描述相依性的檔案,然後將其include到makefile中
    • command line指令:-MF
      •  產生出一個.d檔,說明完成這個.o檔需要哪些.h檔
  • 引入一個目錄內所有檔案:wildcard
    • wildcard會展開目錄內的檔案

#2.Arch Linux


2014年11月1日 星期六

MOPCON 2014 會後會

 

MOPCON 2014 議程紀錄


這次是MOPCON會後會,主要在分享ㄧ些參加心得和揭露祕辛,所以不會跟議程直接相關唷。

第一次摸去IRSlab,空間比想像中的要大些,席間有提供飲料跟小點心,是個蠻愜意社群環境。分享人是MOPCON贊助組的成員,提及了一些MOPCON內部的分工,研討會的初衷與贊助者的立場等等。

對於贊助商而言,贊助的目的無非是推銷自身的產品,不過今年有些小悲劇,因為會眾有約40%是學生,所以有些產品不怎麼迎合需求,為了拯救贊助商,只好把MOPCON的店面移到贊助商旁邊,希望幫忙挽回一點人氣~算是會議的小插曲吧。

不光是產品推銷,這次的MOPCON也成為獵人頭的手段。分享人提到,這類大型開發者聚會往往是找人才的管道,因為會來參加聚會的,通常也都是對這領域略有了解的人,不妨藉此管道找尋真正適合的人才,比起104的模糊篩選好太多了。

但是這也引發了一個問題,一個堅持在濁水溪以南舉辦的研討會,來的贊助商卻多是北部的,講者也是北下而來,而會眾族群又多是學生,這會不會把南部的資訊人才又往北拉?反而是違背了研討會的初衷。這個問題討論了整整一個小時,直到蘇教授出來Demo自製咖啡機,工作人員是認為,能把北部的資源拿來南部用,這對研討會而言是件好事,而人才流失的問題,這並不是一時半刻就能解決的,MOPCON 至今也才辦了三屆,還不算個成熟的研討會,就先放眼當下,想辦法促進南部的素質吧。