Posted by Mr. D-Day

對於很多程式開發者,腳本語言(Script Language)應該是蠻常見的,諸如 shell script、JavaScript、Perl、PHP、Ruby 等。腳本語言的執行方式是動態的,也就是說原始碼原則上是不需要先經過編譯的。這對於一些商業用途的產品會產生一點困擾,因為這意謂著,產品必須以原始碼型態的方式發佈。除了原始碼,包含一些產品運作必須的重要參數,例如:資料庫密碼,也都會用明碼的方式存在。

對於 PHP 來說,像是 ionCubeSourceGuardianphpSHIELD 等商業化軟體都可以幫助我們解決這個窘境。如果是 Python 呢?以下是我知道的幾種作法:

把原始碼轉成 pyc 檔

我想這應該是每個 Python Programmer 最先想到的方法。因為 Python 在執行時,最先把 Python 原始碼轉變為易於執行的 bytecode,也就是 .pyc  檔。這些 .pyc 檔都是一些二進碼,並不利於人類閱讀,所以作拿來保護原始碼聽起來很適合。但是很可惜,.pyc 的decompiler (反編譯)工具算蠻成熟的,例如 Easy Python Decompiler

包裝成一個執行檔

雖然 Python 是一個跨平台語言,但這並不表示每台電腦或伺服器都安裝了 Python 直譯器,特別是個人用戶。因此有時候產品發行的時候,會希望使用像 Py2ExePyInstaller 這類型的工具,把 Python 直譯器與原始碼統一包成一個單一執行檔,使用者只要用像執行一般程式一樣的方式執行,也不用管環境有沒有安裝 Python 直譯器。也因為包裝後,看起來純粹就是一個執行檔,所以這類工具也可以被拿來當成 Python 原始碼保護使用。

打亂原始碼(obfuscation)

把 Python 原始碼打亂是另一種可行之道。被打亂的原始碼原則上還是一個符合 Python 語法的程式,只不過可能因為少了空白、換了變數名稱、或寫作方式,導致一般程式設計者很難閱讀。這種方式在 JavaScript 是很常見的,因為 obfuscatinon 通常附帶的好處是「減少程式碼的大小」。例如:pyminifier 就是屬於這類型的工具。

更改 bytecode 定義表

前面提到的方式都是比較容易的作法,但是嚴格講起來,並沒有辦法很確實的保護原始碼。像 Dropbox 為了實現跨平台的資料同步,它們所提供的資料同步程式,是以 Python 為基礎做開發的。為了保護自己的產品,Dropbox 乾脆修改了 Python 直譯器,開發自有的保護機制。簡明扼來說,Dropbox 的保護機制是以 Python 的 bytecode 為基礎,但是它更改了幾個 bytecode 機器碼的對應表(bytecode re-mapping),這導致你無法使用一般標準的 Python 直譯器執行它的程式,也無法透過像 Easy Python Decompiler 這樣的工具把程式反組譯回來。有興趣仔細研究的讀者,可以參考這篇文章

直接加密原始碼

這種作法是先把原始碼加密後發佈,只有在執行的時候,才會把加密的原始碼還原來執行。它與 Dropbox 採用的方式有著一樣的特點,就是必須採用客製化的 Python 直譯器,而不能直接在標準的 Python 環境底下執行。但是比起前面三種方式,因為執行時期,所有的原始碼都要多經過一道解碼的手續,對於執行效率要求比較高的應用或許可能會有一點影響。例如:PyProtect 算是屬於這一類的作法的工具。

Posted by Mr. March

我們常說眼睛是人類的靈魂之窗,那對於手機和平板來說呢?當然就是Camera Module囉!

關於那隻手機拍照的好壞評比,這在各大數位部落格上應該已經有很多相關的資訊了,今天Mr. March 不談這個,今天主要想談的是關於手機上的Camera Module相關的原理和硬體知識等,基本上不會談得太深入,就是一些雜談,目標是深入淺出總覽式的講一遍,讓大家對Camera Module和相關的硬體有一個簡單的概念! 繼續閱讀全文 … »

《KANO》

Posted by Mr. Tuesday

kano04

(按:本文寫於今年十月初,刊載於2014年11月號《人本教育札記》第305期)

曾在今年二月上映,描寫日治時代嘉義農林棒球隊(即現在的國立嘉義大學)打進甲子園決賽的國片《KANO》,九月底再度登板重映,據導演馬志翔說,這是因為他們半年來四處受邀演講,卻發現「看過的人只有3%!」此前,《KANO》的票房是精采的三億兩千萬,以國片而言實屬超高了,然看過的人都深受感動,評價也不俗,就潛力而言還可以更好。如今七個月後,恰好我們從創作面(上映前)和迴響面(上映後)兩個脈絡,再來談談《KANO》現象。

繼續閱讀全文 … »

Mr. Monday (UIUI)

(自我揭露:本文作者為 LIVEhouse.in 服務的開發者之一)

LIVEhouse.in_Alexa_Rank

LIVEhouse.in 在 Alexa 上的排名上昇曲線圖

最近 LIVEhouse.in 有許多好消息在這年底的時間不斷來到,包括我們獲得了心元資本的種子投資第一屆的亮點企業獎,幫然也包括了實實在在的流量成長(見上圖)。除了許多好友過來道賀恭喜之外,也有不少人來私下詢問我們究竟做對了什麼事情。因此,秉持著互聯網的思維,多多分享有益台灣互聯網產業的發展,這邊就趁著一年一度的 MMDays Showtime 時間來做個分享。

LIVEhouse.in_Events

LIVEhouse.in 目前是台灣第一家國產直播平台,如果大家每天到 LIVEhouse.in 時會看到各式各樣的直播活動在上面進行著,有演講活動、有電影介紹、有聊天談心、有藝人受訪 、有獨立樂團的表演、也有許多人在上面玩遊戲。在 LIVEhouse.in 上面每天有著許多有趣、好玩的活動在進行著。而這些活動的進行都圍繞著一件事情:「社群經營」。簡單來說,直播主們用我們的平台來經營他們的社群;我們則是以更寬廣的平台角度來經營整個社群。也因此,在我們的團隊裡面有一個角色,叫做「社群經理」

繼續閱讀全文 … »

MMDays Showtime 2014

MMDays

(圖片來源: 4regularfolks.com)

又到了年底之時,又將是一年的結束,以及一年的開始。在這個特別的日子裡面,為了感謝眾讀者們的支持,因此,按照傳統,年底之時,又是 MMDays 的年度大戲:「MMDays Showtime」。透過一年一度的 MMDays Showtime,大家不僅能看見許久未曾露面的 Days 們,還可以看到多重風貌的文章們。今年第五屆參加 Showtime 的寫手一共有 15 位,將在明天(12/8)揭開序幕!也請各位多多指教囉!

我在 2006 年時開始為 Google 工作,2012 年決定離開時 (離開的原因寫在這邊),Google 已從數千人的公司,擴張到超過 30,000 人的規模。Google 的管理模式總是令人好奇,究竟是什麼樣的方式,才能打造出如此強大的一家公司?最近創新、創業在台灣被談得很多,Google 過去十幾年的成功秘訣,也逐漸被抽絲剝繭地揭露出來。當時作為 Google 第一線的軟體工程師,現在自己又領導 30 多人的新創團隊,最近 Google 董事長 Eric Schmidt 又出版了一本新書「Google 模式」、揭露 Google 的大小事,讓我有機會回頭去驗證 Google 的一些管理方式。

image description

繼續閱讀全文 … »

從 0 到 1、是無限倍的成長,也代表從無到有、創新的無限可能,這本書的書名本身就頗富哲學意味。Peter Thiel 是法律、哲學背景出身,卻在短短幾年內成為矽谷創業成功的傳奇人物,這位創業家與投資家當年與鋼鐵人 Elon Musk 聯手、讓 Paypal 成為最成功的第三方支付公司,且他是臉書第一位天使投資人,足見其眼光不凡,本書整理了他在史丹佛開設的創業課程內容、充分揭露了他的心法和世界觀。

繼續閱讀全文 … »