2015年7月19日星期日

UniConv - 超強轉碼工具 BIG5/GB/UTF8/Unicode

這個月工作上都需要用上SSIS ( SQL Server Integration Services ),處理以億行計的資料。
當中有一個難處是客戶提供的CSV出現中文亂碼,本來應該是UTF8的,他匯出了BIG5編碼。

本來日常對於這回事,是很簡單處理的。
可以用Notepad++人手轉換,或者用廣為人知的經典工具 - ConvertZ

但這次我處理數百計的CSV,所以必須要支援Parameter,由SSIS中傳遞檔案路徑,而且CSV檔案是上1GB的,相信很多軟件打開都會Crash。

這個網站找來知名的Iconv,滿心歡喜以為事情簡單,但轉出來的UTF8檔案,依然是亂碼。
研究過後是Iconv轉換出來的UTF8檔是沒有BOM ( 什麼是BOM? ),亦嘗試跟這裡做自行加上,但都不行。

最後在一個不起眼的討論串當中找到這個叫 UniConv的工具,效果十分好。
轉換1GB檔案竟然不用30秒。
一個小小的工具可以做大大的事。

執行命令很直接:
C:\uniconv.exe BIG5 "C:\chinese_input.txt" UTF8 "C:\chinese_output.txt"

如果還出現亂碼可以試一試把Output的編碼轉為"Unicode11:BOM:UTF8" 或 "Unicode20:BOM:UTF8",之於三者有什麼分別,我就沒有去研究了。
其他參數和編碼可以看Readme檔案 - uniconv.txt。

下載 UniConv由我的Dropbox下載

一開始總覺得這個工具很神秘,細看之下原來已經是1998年編譯的,由一間叫Basis Technology所寫,但現在連官網上都找不到這個工具了。

2014年9月25日星期四

Chrome插件偵測Apple iReserve開賣

上一篇「免安裝Javascript版Apple Store iPhone 6 開賣Bot」瀏覽達30000次是我始料不及。

最後應網友更新支援iReserve,但基於瀏覽器安全性對Javascript所限,最後放棄了,雖然大不了用PHP/ASP.NET等等方法解決,但太簡單反而讓我沒太有興趣去做。

不同有另一個可行方法,就是用Chrome的Extension - Page Monitor

自動每5秒自動重新載入,並偵測改變情況,若不同就會彈出通知和聲音。

1. 首先用Chrome打開iReserve availability文件 - https://reserve.cdn-apple.com/HK/zh_HK/reserve/iPhone/availability.json

2. 然後在右上角按插件圖示,再按「Monitor This Page」。

3. 之後如下圖所示設定每5秒refresh,就可以。

4. 若有iReserve有改變,Extension就會彈出通知。

當然那個店,什麼型號就無法分辨了。



Page Monitor
https://chrome.google.com/webstore/detail/page-monitor/pemhgklkefakciniebenbfclihhmmfcd

2014年9月11日星期四

免安裝Javascript版Apple Store iPhone 6 開賣Bot

唔洗講大家都知聽日係iPhone 6開賣日,高登討論區已經淪陷為Bot散貨場,當中是真是假我都唔知。
因為直至寫文呢個時間,Apple Store只更新iPhone 6訂購頁,但之後要填寫什麼都未知是否跟iPhone 5是一樣。
所以自動落單,自動填表的等媽媽餵奶流程是不是真的有用,我個人就很保留態度。



其實兩年前,我寫的Windows版 炒iPhone必備 Apple Store Checker - 開賣喇免費版,當時已經講過十個所謂監察App,相信九個都沒有太高深技術,純粹偵測一下Apple Store回應的Json就知道是否開賣。當時已經有一些無良開發者,竟然以如此低技術的程式,去收取$39.99的價錢,甚至比一些Office Apps或遊戲還要貴。

近日有人留言問我是否會更新那時的程式,其實程式的Source Code,我都好像刪除了。
不過今天看見網站流量突然爆升,全部都是衝著這個程式而來。
反正重寫都不會花太多時間,一個Lunch時間已經搞定,所以我就再重新寫一個。


不過這一次我為了快快搞掂,我以Javascript去實現,工作原理都是一樣,以GET方式檢查Json,有就出Alert,沒有就繼續StandBy,就是這麼簡單。
最簡單使用方法可以使用Browser上的Javascript Console如
除了Firefox之外,Chrome都已經內建。搞不懂就問問朋友或留言問我。

使用方法:
  1. 打開Browser先去 http://store.apple.com/hk-zh/buy-iphone/iphone6
  2. 按鍵盤F12,前往Console,把整段程式碼貼上執行就OK,之後程式每20秒就會對18個iPhone 6組合進行一次查詢。
  3. 想停止的話,可以輸入 stop()再按Enter就會停止(或者最直接就是重開瀏覽器),再開始就輸入run()按Enter。



當然我不能保証什麼,但在技術上或理論上,都是可靠的。
可惜近期我在工作上都很忙,恕我未能做到更好或解釋更多。m(~_~)m

下載Javascript檔
[開啟連結後,你會見到很長很嚇人的火星文,總之就直接按下Ctrl+A (全選), Ctrl+C (複製) , 再去Console Ctrl+V (貼上) , Enter, 右下角有提示出現就証明運作緊.]
https://dl.dropboxusercontent.com/u/19160547/Files/ip6.txt

Update#1 - 2014-09-12 00:16

呢段Script放左上網一發不可收拾,主要都是我Facebook的朋友用Chrome出現問題,
我自己都被訊息轟炸。而且他們執行上都覺得很困難,現在修正了一點地方,請重新再試。

Update#2 - 2014-09-12 01:40

程式原本設計是,任何一個組合開賣,就會出alert()提示,程式亦會停止(因為我怕同時彈出18個alert()視窗... ),但不能告之是什麼組合開賣(因程式已停止,餘下的組合不會再檢查),而且一不留神就會Miss左。
所以我再下苦功加入兩樣功能 -
1. 調用HTML5的Audio API做通知,開賣時,會有20秒的長Beep。
但不支援IE,即使是IE12,已查Mozilla文件証實。
2. 於Console Window顯示什麼組合開賣。

Update#3 - 2014-09-12 12:18

第三次更新,因為有人話自己在Office返工,唔可以打開Speaker,有聲都聽唔到。
所以我最後用了Chrome/Firefox的Notification功能去做提示,同時亦放棄支援IE。
記得第一次使用時,批准Browser的Permission,如下圖。

Chrome:

Firefox:

Update#4 - 2014-09-12 17:00

岩岩開賣時,好多人都不停Click個綠色選取制。
但我想講下,我都俾果個綠色制Fake左。
其實今次Apple果版做得好差,第一次按,有反應,但買唔到彈返轉頭果時,果個綠色制係會變到冇用的,
你再click佢,佢唔會send任何資料俾Apple,亦唔會做任何野動作。
一定要全版reload至得。
但今次我試左,自己呢段Script係Work的,再做左優化,大家一定要更新最新版本。

有很多人都說運行本Script後出現錯誤,最大原因是你的Firefox或Chrome沒有先前往http://store.apple.com/hk-zh/buy-iphone/iphone6就運行本Script。
若不懂用Chrome Developer Tool,有一段Youtube 上的Tutorial很簡單地教你怎用,由4:00開始睇就可以。

2014年5月20日星期二

Microsoft Project的免費替代軟件

Microsoft Project相信一般人都不會用得到,即使是IT Project Manager亦唔見得一定會用得上。 (香港的所謂 IT Project 大家心中有數....)

近期因為準備PMP考試關係,需要理解 WBS / Gantt Chart / Resource Leveling 等等Terms,為了更深入明白,所以就安裝MS Project實踐一下。

當然老習慣就是上Google找一下免費的替代品,最後找到幾個免費的,覺得比MS Project更是上手,更簡單。
對學習PMP都應該足夠,最重要當然是免費和更輕量。

ProjectLibre: Open source replacement of Microsoft Project

官方網站: http://www.projectlibre.org/

這個跟LibreOffice無關,但同樣都是Open Source的知名軟件。
誇平台支持 Windows / Mac / Linux
主要支持
  • Gantt Chart
  • Project Baseline
  • WBS
  • Network Diagram
  • RBS
  • Resources
如果你不想花時候去建立一個專案,你可以去這裡下載Project sample檔。
projectlibre-jlam - Github
pod檔案是ProjectLibre格式,mpp是MS Project格式。
點擊後按View Raw就會下載。



GanttProject - Free project scheduling and management

官方網站: http://www.ganttproject.biz/

同樣是Open Source並誇平台支持 Windows / Mac / Linux
這個比ProjectLibre簡單易用。
本身附帶一個Project Sample,在開始功能表開啟HouseBuildingSample就可以了。
主要分三部份
  • Gantt Chart
  • Resource Load Chart
  • PERT Chart (Network Diagram)



Gantter - Collaborative cloud scheduling made easy

官方網站: http://www.gantter.com/

一個Cloud-based的project management工具,介面上很似Google Doc,可以用Google登入,亦可能連結Google Drive。
使用上主要都是Gantt Chart功能,Resource和Risk部份都很簡單。
好處就是不用安裝,使用簡單。