Microsoft Mobile Office

Microsoft 終於推出了 Android 及 iOS 的手機版 Office,限時免費送,請到以下連結下載: Android 版: https://play.google.com/store/apps/details?id=com.microsoft.office.officehub iOS 版: https://itunes.apple.com/hk/app/microsoft-office-mobile/id541164041?l=zh&mt=8 該 iOS 版並未為 iPad 優化。Microsoft 另為 iPad 推出 Microsoft Word for iPad、Microsoft Excel for iPad、Microsoft Powerpoint for iPad。雖然,view 是 free,但 edit 就需要買 Office 365。不過,只要有 lightening to VGA/HDMI,就足夠用 iPad 做 present,無需拎 notebook 了, Powerpoint 仲送 leaser pointer,長按就有了。另外,OneNote 都幾好用 Word: https://itunes.apple.com/hk/app/microsoft-word-for-ipad/id586447913?mt=8 Excel: https://itunes.apple.com/hk/app/microsoft-excel-for-ipad/id586683407?mt=8 PowerPoint:… Read More »

在 CubieBoard2 上 compile Node.js

在 CubieBoard2 上 compile Node.js source code,build 完,一執行任何 JavaScript 就出現 Segmentation Fault,Hello World 都行唔到。但在 WandBoard 就無事。 Google 一下,發現原來部份 ARM CPU 上會出現這問題,解決方法是 configure 的時候,加上 –without-snapshot 就無問題。snapshot 是用來加快 JavaScript 的啟動,但在部份 ARM CPU 上就有 bug

Firefly Media Server

大家都知 iTunes 可以 Share Music 去全家電腦 (後來 Windows Media Player 都有此功能),但好多 router 只支援 WMP 分享 我找到了開源的 Firefly Media Server,成功在 ARM board 上 compile,令 CubieBoard2 可做埋 Media Server Firefly Media Server source code

Passwordless 檔案加密

唔想記密碼,又想把自己的檔案加密 (AES-256),可以用這個。 Download enc.exe 後,只需把檔案拖去 enc.exe 便可加密。把加密後的檔案拖去 enc.exe 便可解密。第一次用會在 enc.exe 隔離生成 key,不要遺失這個 key 檔案!key 唔見了,解密後也會是爛 file! 除了 drag and drop (OSX 不能 drag and drop),進階用家可以打 command 用,執行 enc.exe 便有說明 http://my.no-ip.info/carlos/pub/enc_binary/

node(.js) 和 JavaScript 很給力

我愛 Google Go,但也喜歡 node。有人說 node 不濟,因為 JavaScript 很爛。的確,JavaScript 很爛,但也很有趣,很神,識得用會好好用 node(.js) 真的很神奇。其實應該是 JavaScript 很給力!簡單地就用到 log4j 的效果 // logger.js exports.getLogger = function(className){  return {   now: function(){ /* 省略 */},   info: function(message){    console.log(this.now() + ‘ [‘ + className + ‘] ‘ + message);   }  }; } // 之後,只要的用法就如著名的 log4j 一樣 var logger = require(‘./logger.js’).getLogger(‘main’); logger.info(“hello world”);

JavaScript String

JavaScript String 本身是沒有 trim function,但透過簡單 regular expression 便可做到: String.prototype.ltrim = function(){ return this.replace(/(^\s*)/g, “”); } String.prototype.rtrim = function(){ return this.replace(/(\s*$)/g, “”); } String.prototype.trim = function(){ return this.replace(/(^\s*)|(\s*$)/g, “”); } 還有這個用來測試是否 ASCII 也很實用: String.prototype.isAscii = function() { return !/[\u0080-\uFFFF]/.test(this); }

fork and printf

題目:請問下面的程序一共輸出多少個 “-“? #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <unistd.h> int main(int argc, char *argv[]) {  for (int i = 0; i < 2; i++){   fork();   printf("-");  }  return 0; } 就咁睇,答案是 6,但實際是很 tricky 的 8。這是 printf 把 "-" 放到了緩存中,並沒有真正的輸出,在 fork 的時候,緩存被複製到了子進程空間,所以,就多了兩個

Mountain Lion 的 Apache (web sharing)

Mac OSX 內置 Apache (Apple 稱之為 web sharing,在 System Preferences -> Sharing 中開啟) 和 PHP,對 developer 來說十分方便 PHP 預設是關閉的,但只需修改 /etc/apache2/httpd.conf,把 #LoadModule php5_module libexec/apache2/libphp5.so 前面的 # 移除,重啟 Apache 便可 但在 Mountain Lion,web sharing 這個選項不見了,但其實系統仍提供 Apache 及 PHP 的 不過,不能透過 GUI 開啟,需要透過 Terminal。有人話,這是唔想一般使用者錯誤地啟動了 Apache 造成安全隱患,始終要設定 Apache 需要一點知識 啟動 Apache: sudo apachectl start 停止 Apache: sudo apachectl stop… Read More »

解決 LLVM compiles Reachability.h warning 問題

Apple 提供很多 sample code 給開發者作為參考之用。其中有一個叫 Reachability,用來測試當是用者的 internet 連線,但用上 LLVM Compiler 後,會出現以下 warning: Reachability.h: warning: Semantic Issue: Declaration of ‘struct sockaddr_in’ will not be visible outside of this function 其實可以很簡單解決,只需在 Reachability.h 開頭中,加下以下一句: #import <netinet/in.h> 就可解決了

開放 MP3 ID3 編碼轉換及編輯工具已收藏於 Softpedia 資料庫

收到 Softpedia 通知,開放 MP3 ID3 編碼轉換及編輯工具 (MP3 ID3 Tag Encoding Converter) 已收藏於 Softpedia 資料庫 想不到有人留意及使用我的作品,得到肯定,感到十分鼓舞 Windows 版: http://www.softpedia.com/get/Multimedia/Audio/Tag-Editors/MP3-ID3-Tag-Encoding-Converter.shtml Mac 版: http://mac.softpedia.com/get/Audio/MP3-ID3-Tag-Encoding-Converter.shtml

開放 MP3 ID3 編碼轉換及編輯工具

大家有無發覺 d 中文歌拖入 iTunes 時,歌名歌手名變晒亂碼?其實原因好簡單,就是 iTunes 只接受 Unicode 作為 MP3 ID3 tag 的編碼。即是如果 MP3 制作者用 Big5 或 GBK 輸入 MP3 ID3 metadata,你放去 iTunes 就會亂碼。坊間都有工具把 ID3 轉成 Unicode,最出名的是 “Unicode Rewriter”,以 Java 寫成。缺點是它要求使用者輸入來源編碼,無法自動檢測,再者其 Swing 介面很醜,自從 0.1 之後無再開發了 我決定用 C/C++ 重作這個 MP3 ID3 Tag Unicode Convertor,終於在這個農曆新年假期完成了: 開放 MP3 ID3 編碼轉換及編輯工具 ID3 標籤多應用於MP3格式的音訊檔案中。它可以將相關的曲名、演唱者、專輯、音軌數等資訊儲存在 MP3 檔案中。 資訊文字可以以不同編碼儲存,但多數現代 MP3 播放器如 iTunes、VLC… Read More »

Android 取得 root user 權限原理

Android 取得 root user 權限原理: (1) check what the number of processes limit is, (2) check to see what process number the “adb shell” is running under, (3) spawn, or make a bunch of useless processes to run the operating system up to its limit, (4) kill the adb shell process, and then (5) restart… Read More »

編碼轉換

UTF-8、UTF-16、Unicode 之間的轉碼可以透過運算方法進行轉換,但 Unicode 跟 Big5 的轉碼就要方透過字碼表 Mozilla 台灣社群就收集了各種泛 Big5 的 b2u 跟 u2b 對映表 (mapping table) http://moztw.org/docs/big5/ 當然你也可以使用現成的 iconv 或 Windows API 進行轉換

淺談 Unicode、UTF-8、UTF-16 和 UTF-32

淺談 Unicode、UTF-8、UTF-16 和 UTF-32 電腦其實只以儲存和處理數字,而電腦的數字是以二進制的,亦即只有 1 和 0,要電腦處理文字,首先要為文字編上一個數字。 而 Unicode 就是為所有字元都編上一個獨有的數字,由於是獨一的數字,同一編碼就只會對應一個字元,這就可解決亂碼的問題。之於 UTF-8、UTF-16 和 UTF-32 就是如何儲存 Unicode 編碼的方法,UTF 全名是 Unicode Transformation Format。 問題是全世界有這麼多字元,數字要多大才夠?Unicode 1.0 以為 2 bytes﹝即是 16-bit 就足以處理,故此出現了 UTF-16 / UCS-2﹞。但好快就發覺 2 bytes 不足以為所有字元編碼,故此就出現了 Unicode 2.0,它是以 21 bits 編碼。目前 Unicode 最新標準是 Unicode 6.0,21 bits 空間仍然十分充裕。 UTF-16 原意是以固定 2 bytes 儲存一個字元,這樣運算和處理起來都十分方便有效率,無奈 2 bytes 無法為所有字元編碼。UTF-16 的做法是如果 FFFF… Read More »

Windows 64-bit Firefox

買了新 notebook (i5 2430M with 8G DDR3 RAM),第一部 64-bit notebook,且配備了 64-bit Windows 7 的 license 第一次 compile Windows 上的 64-bit Firefox (之前已在 Linux 及 Mac OSX 上 compile 過,只是沒有 64-bit Windows 電腦,所以第一次在 Windows 上的 64-bit Firefox 而已) 同 compile 32-bit 大同少異,用 Admin Right 開啟 start-msvc9-x64.bat (32-bit 是開啟 start-msvc9.bat)。MSVC9 即是 Microsoft Visual Studio 2008 .mozconfig 加上… Read More »

[轉貼] Unicode、UTF-8 和 ISO-8859-1 到底有什麼區別

來源:http://campuss.blog.sohu.com/74210127.html Unicode、UTF-8 和 ISO-8859-1到底有什麼區別 本文主要包括以下幾個方面:編碼基本知識,java,系統軟件,url,工具軟件等。 在下面的描述中,將以”中文”兩個字爲例,經查表可以知道其GB2312編碼是”d6d0 cec4″,Unicode編碼爲”4e2d 6587″,UTF編碼就是”e4b8ad e69687″。注意,這兩個字沒有ISO-8859-1編碼,但可以用ISO-8859-1編碼來”表示”。 2. 編碼基本知識 最早的編碼是ISO-8859-1,和ASCII編碼相似。但爲了方便表示各種各樣的語言,逐漸出現了很多標準編碼,重要的有如下幾個。 2.1. ISO-8859-1 屬於單字節編碼,最多能表示的字符範圍是0-255,應用於英文系列。比如,字母a的編碼爲0x61=97。 很明顯,ISO-8859-1編碼表示的字符範圍很窄,無法表示中文字符。但是,由於是單字節編碼,和計算機最基礎的表示單位一致,所以很多時候,仍舊使用ISO-8859-1編碼來表示。而且在很多協議上,默認使用該編碼。比如,雖然”中文”兩個字不存在ISO-8859-1編碼,以gb2312編碼爲例,應該是”d6d0 cec4″兩個字符,使用ISO-8859-1編碼的時候則將它拆開爲4個字節來表示:”d6 d0 ce c4″(事實上,在進行存儲的時候,也是以字節爲單位處理的)。而如果是UTF編碼,則是6個字節”e4 b8 ad e6 96 87″。很明顯,這種表示方法還需要以另一種編碼爲基礎。 2.2. GB2312/GBK 這就是漢子的國標碼,專門用來表示漢字,是雙字節編碼,而英文字母和ISO-8859-1一致(兼容ISO-8859-1編碼)。其中gbk編碼能夠用來同時表示繁體字和簡體字,而gb2312只能表示簡體字,gbk是兼容gb2312編碼的。 2.3. unicode 這是最統一的編碼,可以用來表示所有語言的字符,而且是定長雙字節(也有四字節的)編碼,包括英文字母在內。所以可以說它是不兼容ISO-8859-1編碼的,也不兼容任何編碼。不過,相對於ISO-8859-1編碼來說,uniocode編碼只是在前面增加了一個0字節,比如字母a爲”00 61″。 需要說明的是,定長編碼便於計算機處理(注意GB2312/GBK不是定長編碼),而unicode又可以用來表示所有字符,所以在很多軟件內部是使用unicode編碼來處理的,比如java。 2.4. UTF 考慮到unicode編碼不兼容ISO-8859-1編碼,而且容易佔用更多的空間:因爲對於英文字母,unicode也需要兩個字節來表示。所以unicode不便於傳輸和存儲。因此而產生了utf編碼,utf編碼兼容ISO-8859-1編碼,同時也可以用來表示所有語言的字符,不過,utf編碼是不定長編碼,每一個字符的長度從1-6個字節不等。另外,utf編碼自帶簡單的校驗功能。一般來講,英文字母都是用一個字節表示,而漢字使用三個字節。 注意,雖然說utf是爲了使用更少的空間而使用的,但那只是相對於unicode編碼來說,如果已經知道是漢字,則使用GB2312/GBK無疑是最節省的。不過另一方面,值得說明的是,雖然utf編碼對漢字使用3個字節,但即使對於漢字網頁,utf編碼也會比unicode編碼節省,因爲網頁中包含了很多的英文字符。 3. java對字符的處理 在java應用軟件中,會有多處涉及到字符集編碼,有些地方需要進行正確的設置,有些地方需要進行一定程度的處理。 3.1. getBytes(charset) 這是java字符串處理的一個標準函數,其作用是將字符串所表示的字符按照charset編碼,並以字節方式表示。注意字符串在java內存中總是按unicode編碼存儲的。比如”中文”,正常情況下(即沒有錯誤的時候)存儲爲”4e2d 6587″,如果charset爲”gbk”,則被編碼爲”d6d0 cec4″,然後返回字節”d6 d0 ce c4″。如果charset爲”utf8″則最後是”e4 b8 ad e6 96 87″。如果是”ISO-8859-1″,則由於無法編碼,最後返回 “3f 3f”(兩個問號)。… Read More »

Shrink ext2/3/4 parition without data lost

我成日都 suggest 如果想學電腦,真的要用下 Linux,以下是一個例子: 如果想 shrink 一個 parition (e.g. /dev/sda2) in ext2/3/4 file system to 120G: 0. 如果 shrink 的 parition 是 system, 需要用 Live CD / USB boot 機 1. e2fsck -f /dev/sda2 (check 下 disk 先, -f = force check even partition seems clean) 2. resize2fs /dev/sda2 119G (must slightly smaller than 120G)… Read More »

法治

Albert Venn Dicey – 法治包含了三個基本元素: 1. 沒有人會因為違反尚不存在的法律而受到懲罰,或是在肉體上或財物上有損失 2. 沒有人能凌駕於法律上 3. 法庭的決定是維護個人權益的最後防線 Joseph Raz 確定了幾個法治原則: – 新制定的法律不應該有回溯性 – 法律應該是穩定的,不應該改變過於頻繁 – 制定法律應該要有明確的規則和程序 – 司法機構的獨立性必須得到保證 – 天賦公正原則 (principles of natural justice) 應該得到遵守 – 法院應有違憲審查的終審權 – 每個人都可以使用法院,沒有人使用法院的權利被拒絕 – 執法和預防犯罪的機構不應允許枉法 中共對法制的理解實為政權凌駕於法律之上 (rex lex),中共對法治的理解實則為法制 (rule by law),而與法治 (rule of law) 並沒有關係

Firefox 4 on Windows

終於 build 好左 Firefox 4 on Windows 之前 build 唔到原來是 mozilla-build 中的 configure.in 有 bug, detect 唔到 DirectX SDK,有人已 commit 左 bug fix 但未 release http://hg.mozilla.org/mozilla-central/rev/962fee06b08e 雖然個 bug fix 有 d hard-code 但 works 根據 license, 無改過 source code 可以用返 firefox 個名同 logo 發佈,build config 如下,透過除去無用的功能同埋 compiler 優化來提升性能: . $topsrcdir/browser/config/mozconfig mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/objdir-ff-release mk_add_options MOZ_MAKE_FLAGS=”-j2″ mk_add_options… Read More »

Notepad++ 5.9.2

Notepad++ 5.9.2, 不需安娤,unzip 即用 http://my.no-ip.info/carlos/pub/notepad++.5.9.2.zip 內裡有 plugins, 只包括 English, 繁中 lang file,另有: set_context_menu. bat: 可以令按 right-click 有 edit w/ Notepad++ set_default_html_viewer.reg: 可以令 Notepad++ 變成 IE 的 html source viewer 復原可以用: unset_context_menu.bat, unset_default_html_viewer.reg Build Opt: /Ox, /Oi, /Ot, SSE2, PGO, inline function (/Ob2), etc Build Env: VS C++ 2008 SP1; Win SDK 7.0