2017年8月31日星期四

福岡LINE IT工作筆試經驗



前言
相信很多人跟我一樣,對香港的前途感到灰暗,近年在Facebook的時事新聞Post中看過很多次的一句留言就是「有能力就離開香港啦」。
我認為這句說話,雖然所謂「能力」,大多數指就是金錢,你有幾百萬現金,大可以搞投資移民,沒有錢的話,就只好另覓出路。
其中一條出路就是出國工作,雖然跟移民是兩碼子的事,但至少還是離開了香港這個只適合工作,但不適合生活的地方。

其實早在一年多前已經開始物色有什麼工作機會,其實Linkedin上,蠻多大公司都多招聘廣告的。
最早有興趣的是「Agoda」,因為當時在JobsDB都有Ad,它在Linkedin上長期都有招聘廣告,所需工作要求其實跟自己稱得上符合,都是Microsoft .NET技術加一些新興技術,而且公司位置就是在曼谷的Central World大樓。
但跟現職員工打聽過後,知道它們只會請有Native英文程度的人....
我自己讀寫當然絕對沒問題啦,但不得不承認聽力跟會話,跟一個美國人/印度人相比,還差很遠,相信在第一回Skype Interview也過不了,所以無謂自討苦吃。

日本永住資格
早段時間見到「日本政府將縮短高度人才申請永住的條件」,網上看到不少人趨之若鶩。
雖然「永住」不代表你是「日本國民」,但「永住權」對你在日生活,出入境,工作生活都很重要。

詳細可以看一看日本法務省入国管理局網站:
高度人材ポイント制による出入国管理上の優遇制度

IT業類別是「高度専門・技術活動「高度専門職1号(ロ)」,以計分制作資格評估。
簡單來說,如果你有大學以上學歷,十年以上工作經驗,年收700萬Yen以上就差不多達到合格分數,當然還要在日本有工作。
如果你有JLPT N1或N2水平或認可的國際專業資格都有分數加。
不過這方面會花篇幅太多,有興趣大家可以自行研究一下。

能夠在日本工作,肯是一生人之中的寶貴經歷之外,還可以學好日語,再加上上述「永住」的巨大誘惑,足以成就第二人生。
而最近港台兩地IT行情之間,開始多人談論LINE的工作。
因為LINE早幾個月在台灣廣泛地招請人才,在香港JobsDB都有廣告,這份工作最吸引人的地方是:
1. 福岡的博多Office上班
2. 不需要懂日語,受聘請後,公司還會出錢給你在上辦公時間學日語
3. 薪水福利比香港還要高
還有等等很多很多誘因,當然如果你跟我一樣是崇日的話,根本能在日本工作這一個原因就已經足夠令你舉家移至日本。
在發應徵信之前,我做了萬全準備,上網盡可能了解LINE的產品,公司文化,所用的技術,CI/CD流程,更接觸過幾個現職的台灣員工了解一下,他們都給了我鼓勵。

福岡LINE的招聘廣告雖然有Python/Ruby要求,但我知道該公司在網路開發方法都是以JavaEE/Spring為主。
由種種LINE的文件顯示,亦支持我的說法,所以想去日本LINE工作的人就要主攻Spring了。
由LINE公司員工的Linkedin所提示,會用上Jenkins,Node.js,NoSQL,AWS RedShift,和Redis的in-memory data store。

面試
LINE的面試流程簡單:
1.寄CV -> 2.Screening -> 3.Pre-Test -> 4.真人面試

我申請的職位是「Development Engineer」,發CV出去後,一星期左右就收到電郵連測試附件的回覆。


測試有兩部份,第一部份是解答,第二部份是個人能力的問卷,例如(你最擅長的語言,你過去遇到最難的事等等)
基於保密理由,我不能公開試題,大家亦不需要留言問我。
我只能夠說重度Algorithm,外國Computer science課題上是很常見的題目,例如Recursive function, Time & Space Complexity, Big-O, Permutation and Combination,若你是剛畢業的CS學生,又有修過相關課題就應該沒問題,
不過好像我已經工作快20年的人來說,技能已經太過Practical反而應付不了。

當然我也有Google,但不可能Copy答案或以其他語言重寫交貨。
最後我理解其義,以C#作答,並自己想的方法去解題。

但沒想到,我在這個階段已經落選了....


其實這件事已經發生在一個月之前,對我自己的確有一定程度的打擊,我的日本夢也碎了。
因為我自己由90年代開始,聽的是日本歌,看到是日劇,玩的是日本Game,能夠去日本工作生活的確是我的夢想。
雖然結果很失望,但都想仔細寫出來,讓其他人參考一下,希望幫到有共同夢想的人。
希望大家就職成功!

參考資料
有一些網站對你理解LINE的工作情況和環境都很有用,同時了解一下為什麼福岡是外國人踏足日本工作的好地方。
WORKLIFE IN JAPAN 日本 職場 生活 趨勢
福岡:守業大國的 Start-up 之城
福岡市打造亞洲新創基地
43歲市長「跑業務」,福岡三年變日本新創之都!

Line Fukuoka / Facebook / Blog
LINE官方HR/工作環境相關:
LINE員工性別/年齡/國籍分佈
LINE Fukuoka のオフィス (Office) を紹介します
LINE Corporation slideshare - engineer culture
Line Engineering Blog

其他日本網站:
LINE Fukuokaの採用/求人/転職情報
Vorkers (日本版的Glass Door) - 事實上整體評分(3.32/5)並不高,<業界内の順位を見る>也不在高位。
カイシャの評判 - LINE Fukuoka株式会社の口コミ・評判

台灣員工的Blog:
kojilin’s diary
Freddie's BlogFreddie Wang在Line撰文 - 為什麼我們使用Kotlin開發LINE Creators Studio

2017年7月21日星期五

ASP.NET Core 正確發佈至CentOS/Apache & 解決Service Unavailable Error 503

若跟著Microsoft的教學文件,建立ASP.NET Core Project後,上傳至Apache後,應該都會跑得動。
但當你做了若干修改後,即使在本機以IISExpress運作得完美無瑕,
再次發佈可能都得以出現Http Error 503 - Service Unavailable
用GEdit打開Error log,Error message如下:

Long Term Support (LTS) releases are -

[Thu Jul 20 17:54:50.534863 2017] [proxy:error] [pid 1283] (111)Connection refused: AH00957: HTTP: attempt to connect to 127.0.0.1:5000 (127.0.0.1) failed
[Thu Jul 20 17:54:50.535276 2017] [proxy:error] [pid 1283] AH00959: ap_proxy_connect_backend disabling worker for (127.0.0.1) for 60s
[Thu Jul 20 17:54:50.535289 2017] [proxy_http:error] [pid 1283] [client 10.3.15.246:61490] AH01114: HTTP: failed to make connection to backend: 127.0.0.1



很自然就會Copy了上述幾句Google Search,得出的結果都是大概是(未打開SELinux, Firewall/iptables設置問題等等..)

如果依照這個方向去想,搞幾天都不會有什麼改變。
因為原因根本不是Apache的問題。

ASP.NET Core的Dependency Hell & Version Hell

由我早前所寫的問題集當中,可見.NET Core自身的版本跟其他Package的兼容性有極大關係,暫時Microsoft似乎未解決Dependency Hell問題,即使外國,已經有多位開發人員抱怨,認為.NET Core暫時不適合Production用,問題大多數跟我一樣出於開發過程上有太多難以解決的問題。

我們先了解一下.NET Core Runtime/SDK目前為止的版本。
在Github上的Release Notes可以看到有多個版本,而.NET Core Runtime and SDK download archive再分開LTS版和Current Release版,當中Runtime配搭著不同SDK版本下載。
官方解釋LTS和Current Release的分別是:

Long Term Support (LTS) releases are -
- Supported for three years after the general availability date of a LTS release
- Or one year after the general availability of a subsequent LTS release
Current releases are -
- Supported within the same three-year window as the parent LTS release
- Supported for three months after the general availability of a subsequent Current release
- And one year after the general availability of a subsequent LTS release

在Nuget上,亦不見得好。.NET Core Package頁上,舊版本的更新時間可能比新版本還要新,實在有點混亂。

ASP.NET Core / CentOS / Apache 問題集

前天以為安裝好DotNET Core至CentOS,看到ASP.NET頁面,應該就可以專心進入開發程序。
但這兩天預到的問題實在太多,由Visual Studio本身對.NET Core的兼容性,.NET Core本身的問題,到Project設定,再到Apache等等問題,我都花了不少時間解決。
始終.NET Core還是很新的產品,Google後都很難找到實際解決方法,所以我把預到的問題和解決方法寫下來,希望幫到其他人。

開發環境可以參照我前天所寫的ASP.NET Core + CentOS 7 + Apache安裝攻略
Error 1 - The project has not been restored or restore failed - run `dotnet restore`
一次就出現4個Error Message:

Severity Code Description Project File Line Suppression State
Error 3. You may be trying to publish a library, which is not supported. Use `dotnet pack` to distribute libraries. SkinCV C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\DotNet\Microsoft.DotNet.Common.Targets 262
Error 2. The project does not list one of 'win10-x64, win81-x64, win8-x64, win7-x64' in the 'runtimes' section. SkinCV C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\DotNet\Microsoft.DotNet.Common.Targets 262
Error 1. The project has not been restored or restore failed - run `dotnet restore` SkinCV C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\DotNet\Microsoft.DotNet.Common.Targets 262
Error Can not find runtime target for framework '.NETCoreApp,Version=v1.0' compatible with one of the target runtimes: 'win10-x64, win81-x64, win8-x64, win7-x64'. Possible causes: SkinCV C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\DotNet\Microsoft.DotNet.Common.Targets 262

這個錯誤大多數出現在當你以Core 1.0.0開新Project後,做第一次Nuget Package更新到v1.0.1後,就會出現。
幸好這個問題已經在Github上有人報告issue #2442
解決方法是打開project.json,加上:
"runtimes": {
    "win10-x64": {},
    "win8-x64": {} 
},
之後找出"Microsoft.NETCore.App",修改為
"Microsoft.NETCore.App": {
    "version": "1.0.1",
    "type": "platform"
}
或者你會發現,在dependencies裡同樣都有"Microsoft.NETCore.App": "1.0.1",我自己就把這個刪除,但大家視乎情況而定。

2017年7月18日星期二

ASP.NET Core + CentOS 7 + Apache安裝攻略

作為一個經歷過ASP.NET初代到4.5版本的人,見到ASP.NET終於能夠誇平台是值得興奮的事。
雖然Mono早在好幾年前已經很成熟,而且相容度亦滿足一般使用,但始終不是官方支持,商業上實在很難說服團隊使用。
現在周圍的人都在應用Azure/AWS,甚至是Docker技術把虛擬機和程式封裝運作,ASP.NET MVC/Webforms只能在IIS上執行的確是很尷尬的局面。
Microsoft此舉絕對是明智決定,由一直面對著主流的PHP,Java/Spring,到近年在Start-up廣泛使用的Ruby on Rails或Python/Django,都是Cross-platform的。
所以DotNET Core的出現使ASP.NET不再邊緣化,終於名正言順在Linux/Mac上運行了。
我都來湊下熱鬧,嘗試設置一下DotNET Ready的Linux平台,過程中固然不會一直都順利,自己都是LINUX外行人,我使用CentOS的時候已經是大約6年前的CentOS 5,很多Command都忘記了。
所以我就把每一步Command的輸出,和自己遭遇到的問題解決辦法都寫下來,給自己和大家參考一下。


事前準備
我所採用的軟件版本如下:
  • CentOS Linux release 7.3.1611 (Core) 64Bit
  • Apache 2.4.6 (httpd.x86_64 0:2.4.6-45.el7.centos.4)
  • .NET Core 1.0.4

有幾個官方連結會用上的:
  1. CentOS Linux release 7.3.1611 (Core) 64Bit
  2. Set up a hosting environment for ASP.NET Core on Linux with Apache, and deploy to it
  3. .NET Core command-line interface (CLI) tools

頭兩個是必須的,第三個頁面讓你了解一下Linux下的DotNET CLI工作的命令。

首先我們依照第一個頁面的指示先把DotNET Core核心檔案安裝至Linux。
頁面上沒有提的事,就是我們安裝CentOS後,有兩件事我認為要做的。
1. 做一次系統軟件更新
2. 安裝VNC Server,畢竟我是來自Windows世界,有GUI操作資料夾或檔案,用GUI文字編輯軟件(GEdit)去編輯Apache Config檔會更容易,沒必要扮Geek用vi Editor吧...

Yum Update

***請確認是使用Root權限作SSH連線***

#確認CentOS版本
[root@localhost ~]# cat /etc/centos-release
#> CentOS Linux release 7.3.1611 (Core)
#更新一次系統軟件
[root@localhost ~]# yum update
#完成後,重啟系統
[root@localhost ~]# reboot

安裝VNC Server
#確認沒有安裝過VNCServer
[root@localhost ~]# which vncserver
#***Output***:
#> /usr/bin/which: no vncserver in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)

#安裝Gnome Desktop
[root@localhost ~]# yum groupinstall "GNOME Desktop"

#完成後,安裝VNCServer
[root@localhost ~]# yum install tigervnc-server

#執行以下指令,檢查是否安裝完成
[root@localhost ~]# rpm -qa | grep tigervnc-server
#***Output***:
#> tigervnc-server-1.3.1-9.el7.x86_64
#> tigervnc-server-minimal-1.3.1-9.el7.x86_64

2017年6月20日星期二

ASP.NET MVC EntityFramework DataContext (*.edmx) 應該放在哪裡?

以前我做 Webforms Project的時候,很多時求個方便,都都直接在同一個Project下建立DBContext (*.edmx),之後就會在DAL或BLL層面直接利用。
當然還是有機會引起Class名稱上的混亂,但還是機會較微,因為即使要採用Entity,都會使用回EF輸出的POCO classes。

但MVC專案情況下就有所不同,大家都知道,除了DBContext之外,一般我們還會在Models下建立類同的POCO classes (或可叫做DTOs, Data Transfer Objects),而到了EF6,更可以用Code First做Reverse Engineer 快速建立POCOs。
至於原因可以看看這裡 - Entity Framework classes vs. POCO




上述兩者不止內容相似,名稱都可以是相似甚至一樣,如果跟Webforms專案時一樣放在同一個Project下,那麼問題就出現了。



因為很大機會程式會出現錯誤訊息:
Schema specified is not valid.
Errors:
The mapping of CLR type to EDM type is ambiguous because multiple CLR types match the EDM type 'Address'.
Previously found CLR type 'NewMVC.Models.Address', newly found CLR type 'NewMVC.Database.Address'.

最簡單地說明原因是EF會忽略Namespace,而以Class Name做Table Mapping,更詳細的解釋,可以看看CodePlex上的回報。

解決方法就是以另一個Assembly去載入DBContext,換句話說,就是新建Class Library Project去把EntityFramework的DBContext跟本身的Models分離。

2017年3月26日星期日

Google Blogger終於有新Theme用了!

一度認為Google慢慢會放棄Blogger,始終有Google Reader的前科
回顧一下Blogger的問題,有用開Blogger都會知道,Blogger無論是的Frontend和Admin頁都跟不上時代,簡單如文章搜尋功能都一直都不精準,編輯文章沒有Version Control等等都是現今,
甚至可以說是早很多年CMS上應該有的基本功能,所以都習慣了,但求Google不會對Blogger開刀而已。

2016年6月3日星期五

使用PowerShell多層資料夾大量轉換檔案繁簡中文

前幾天公司叫我把一個ASP.NET MVC專案由繁體中文轉換成簡體中文,
雖然都知道只是轉字不轉語法,但要求是這樣都沒辦法。
第一時間就想到用古法知名的ConvertZ,但原來ConvertZ只是支援一層資料夾,並不支援Recursive轉換檔案。

還是自己乖乖做小程式,網上一些文章介紹兩種方法,
一是引用VisualBasic.Runtime的Strings.StrConv功能,
二是引用Microsoft Office的Microsoft.Office.Interop.Word中的簡繁互換,
但公司是英文版Office,沒提供Language Pack,所以沒有安裝那個中文繁簡轉換增益集。
最後只可以選擇前者,但完成後,發現轉換不到簡體,既沒有亂碼,
檔案都是有修改過,但文字原封不動。
不知道是否英文Windows + 英文.NET Framework影響,都沒有研究下去。

突然想起之前SSIS專案用過Uniconv,(見UniConv - 超強轉碼工具 BIG5/GB/UTF8/Unicode)
Uniconv除了轉換內碼如Big5,UTF8等等,還可以繁簡轉換的。
花了一點時間研究如何用CMD做Loop之後.......
還是使用PowerShell更簡單。

完成後的程式碼如下:

#取得所有主資料夾和子資料夾所有檔案,可自行設定Filter
$files_table = Get-ChildItem -Path "C:\Source\MVCSite" -Include *.cshtml,*.cs -Recurse
#建立暫存資料夾供uniconv使用
$temp_folder = "C:\Source\Translated\"
foreach ($file in $files_table)
{
    #取得個別檔案所在的路徑
    $origin_folder = Split-Path -Path $file.fullname
    #複製至暫存資料夾的路徑
    $temp_file = $temp_folder + $file.Name
    #uniconv命令行
    $arg = 'UTF8 "' + $file.FullName + '" UTF8 "' + $temp_file + '" ToSimplifiedChinese'
    #write-host是debug用,類似echo或debug.print
    #write-host $arg 
    #啟動uniconv, wait參數是等待一個程序完成才執行下一個
    Start-Process -FilePath "C:\uniconv\uniconv.exe" -Wait -ArgumentList $arg
    #複製回原本的資料夾
    Copy-Item -Path $temp_file -Destination $origin_folder -Force
    #刪除暫存檔案
    Remove-Item $temp_file
}
程序上沒太多技術細節,但我轉換了多層資料夾,大量檔案都沒有問題,而且速度都很快。

要在PowerShell執行多行程序可以使用";"分號代替LineBreak。
$files_table = Get-ChildItem -Path "C:\Source\MVCSite" -Include *.cshtml,*.cs -Recurse;$temp_folder = "C:\Source\Translated\";foreach ($file in $files_table){ $origin_folder = Split-Path -Path $file.fullname;$temp_file = $temp_folder + $file.Name;$arg = 'UTF8 "' + $file.FullName + '" UTF8 "' + $temp_file + '" ToSimplifiedChinese';Start-Process -FilePath "C:\uniconv\uniconv.exe" -Wait -ArgumentList $arg;Copy-Item -Path $temp_file -Destination $origin_folder -Force;Remove-Item $temp_file;}

參考:
[C#].net的簡繁轉換
CODE-封裝Office繁簡轉換服務
用vb.net自製一個簡繁互換!!不用再開Word去互換

2016年4月10日星期日

Google Webfont的思源黑體(Noto Sans TC)中文測試

上年年尾Google公佈Noto Sans字形時,一直都有留意住。
因為一直都並未有比較好看而免費的web font可以使用,相信大多數設計網頁的人還在使用"微軟正黑體"為主。
其實微軟正黑體並不差,由2000年的Windows XP時代走到2015,依然是很多人使用的預設繁體中文字體。
但在現今高解析度的螢幕下就顯得有不足。

當時Google的Webfont服務並未有同步包含這個字形,所以一直無緣使用在網頁上。
上幾個星期,得知Google Fonts的Early Access頁面已經可以使用Noto Sans CJK就立即在自己的Blog上測試一下。

前往Early Access頁面,搜索"Noto Sans TC"就可以找得到。
至於如何使用Webfont,大家就自行Google搜尋了。

測試一下Noto Sans TC使用效果 :

1. 在微軟正黑體 / 14px的字形下是這樣,大家應該都見慣這樣式。
font-family: 'Microsoft JhengHei', '微軟正黑體', Verdana, Arial, 'Microsoft YaHei' !important;
font-size:14px;



2. 使用Noto Sans TC後,在單純14px的情況下,其實會更得更醜,
font-family: 'Noto Sans TC', 'Microsoft JhengHei', '微軟正黑體', Verdana, Arial, 'Microsoft YaHei' !important;
font-size:14px;



3. 主要原因是我未加font-weight去控制粗幼,Noto Sans TC的Font Weight預設是Regular 400,所以我加上font-weight: 300後,雖然字體幼了,但不會比微軟正黑體好看。
font-family: 'Noto Sans TC', 'Microsoft JhengHei', '微軟正黑體', Verdana, Arial, 'Microsoft YaHei' !important;
font-size:14px;
font-weight:300;



4. 來到這裡,我耍了一些手段,令字體更有圓滑,我加上text-shadow:#999 0.01em 0.01em 0.05em !important,是不是開始有感覺了。
font-family: 'Noto Sans TC', 'Microsoft JhengHei', '微軟正黑體', Verdana, Arial, 'Microsoft YaHei' !important;
font-size:14px;
font-weight:300;
text-shadow:#999 0.01em 0.01em 0.05em !important



5.若果我把font-weight設回400,字體會更見結實。


所以我最後得出的結果是,視乎你使用情況而定,你可以微調font-size和font-weight得出最好的結果。
有關Noto Sans TC的font-weight可以參考官方文件 - https://www.google.com/get/noto/#sans-hant
如果你是完美主義者的話,可以再加上以下CSS做反鋸齒。
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
font-smooth: always;


值得一提的是Noto Sans TC在手機上有非常出色的效果,即使大量文字在最光的螢幕下看起來都十分舒服。


最後我在jsfiddle上建立了範例,大家可以用這個玩一玩測試一下。

2015年11月8日星期日

超好用的免費FastStone Photo Resizer - 批次修圖 / 加浮水印

上兩個月去了柬埔寨旅行,回到香港,多達1200張相需要處理,包括Resize至2048px以上傳至Picasa而不計空間,而且最重要是加浮水印。
其實我一直放上Blog的圖片都不想加Watermark,一來麻煩,二來沒必要。
但想真一點,始終自己拍的照片,還是加入Watermark比較好。

上網想找一個簡單的軟件做,其實選擇有很多。
但原來最好的就在附近,它就是FastStone Photo Resizer,免費,簡單,不用安裝,完全符合自己一向選用軟件的要求。
它的兄弟產品就是知名的看圖軟件 - FastStone Image Viewer,在Windows上名氣跟XnView差不多。
(順便一提,最新版FastStone Image Viewer終於支援unicode filenames,它亦是我現在用的看圖軟件,取代XnViewMP)


2015年8月24日星期一

Microsoft Azure 安裝uBuntu Server + XRDP 灰畫面解決方法


前天在Azure上的Market Place部署uBuntu Server的VM,並需要安裝Samba與Windows Share Folder,選擇的版本是14.04 LTS,過程順利,照著這裡這裡這裡的指示,利用SSH安裝Deskop的GUI和XRDP。
但安裝後,興奮打開Windows的Remote Desktop連接後竟然出現如下圖的灰點畫面。

最後發現原來14.04 LTS使用ubuntu-desktop GUI就會這樣,
轉用Xfce Desktop GUI就沒有問題。
若用不慣,就只好好像我一樣,退回使用12.04 LTS版本,
就可以如常使用ubuntu-desktop。



參考:

2015年8月15日星期六

Windows 10 Metro App自動關閉解決方法

Windows 10其實是不錯,但很多個別情況由Win7/8升級後就出現問題。
我自己主要就遇到以下問題,比較煩人:
  1. 明明停了UAC,而且是Admin登入,但執行軟件預設都不是 Administrator mode。
  2. 部份檔案出現權限問題,變成ReadOnly,要自行再設定安全性。
  3. 開機時,Windows Defender嚴重消耗資源。
而另一個必需解決的問題就是Metro App如Edge,Store等內建App,會出現Crash(閃退)的情況。
原因不明,而且在我使用Win10第三天才發生。

在Windows的Event Viewer看到超多Error,全部都是 -
  • 應用程式 Microsoft.MicrosoftEdge_8wekyb3d8bbwe!MicrosoftEdge 的啟用失敗,錯誤為: 應用程式未啟動。 如需詳細資訊,請參閱 Microsoft-Windows-TWinUI/Operational 記錄檔。
  • svchost (1360) SRUJet: 嘗試開啟檔案 "C:\WINDOWS\system32\SRU\SRU.log" 供讀 / 寫存取失敗並出現系統錯誤 5 (0x00000005): "Access is denied. "。 開啟檔案作業將會失敗並出現錯誤 -1032 (0xfffffbf8)。
  • svchost (1360) SRUJet: 無法寫入檔案 C:\WINDOWS\system32\SRU\SRU.chk 的陰影標題。錯誤 -1032。


最後在這裡找到解決方法 -
  1. 以Administrator 打開CMD
  2. 輸入powershell,按Enter
  3. 輸入
    Get-AppXPackage | Foreach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"}
    再按Enter。
系統就會重建所有Win10預設的Metro App,完成後就可以正常執行程式了。

2015年8月4日星期二

Windows 10初體驗 + 奇摩速成/廣東輸入法測試


近日見到討論區上的大家都在試玩Windows 10,見到有參與Windows Insider的人說「Windows 10是最後一個版本的Windows」,「Windows 10會再戰十年」等等評語,搞到我都心急想試用一下。

用出了沒多久的VirtualBox 5.0安裝。( New features in VirtualBox 5.0 )
安裝時記得開啟5.0新版才有的Paravirtualization Interface,由原本Legacy轉至Hyper-V,據說會效能更好
另外3D加速都要開啟。

Win10把人人得以誅之的Metro App由強迫性全螢幕轉回視窗型式 (有最大化/縮小/關閉按鈕),
不過就是這一小步令Win8失敗。
我見到很多人都樂意接受視窗式Metro App,終於不用把滑鼠以超精準地,向上邊界移動去關閉Metro App。

第一時間試一試Microsoft Edge瀏覽器。
速度很快,但功能肯定不如Firefox/Chrome/Opera,沒有Extension的話,應該都是用來下載其他瀏覽器多。
不過預設字形很奇怪 (不是Segoe UI嗎?),而且Edge本身沒有獨立設定字形 (還是有其他方法?)

試完Edge後,周圍走一走,市集或XBox那些跟Win8時差不多。
而且Media Player竟然還是Win7時的版本....
反而見到有一個內建軟件叫3D Builder,玩過一下,幾得意。



不過老實說,如果以一般用戶角度,Win10給我的驚喜反而不如Win8,Win10只是7代加上8代的最終型態。
Win10的視窗風格,感覺就跟知名.NET Control開發商DevExpress的出品一樣,而且人家在五年前的Winforms Control已經是這個風格。
圖片取自 -
Metro Style WinForms Skin
Metro Inspired Theme


最後試了一試奇摩輸入法,自從我上一個Post介紹之後,
自己都用了兩年了,都已經習慣了它的速成和廣東輸入法。
所以即刻試試Windows 10支援狀況,試過了安裝沒問題,使用上都是一樣。
還是有小缺點是不支援Metro App,只支援Desktop軟件,如輸入法遇上Metro軟件會如下圖灰了不能選擇的。
不過相信大家暫時95%都是用Desktop軟件,問題應該不大。
奇摩輸入法的介紹 / 使用方式 / 下載可以返回這個Post - Windows 8.1 速成/廣東輸入法救星

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部份都很簡單。
好處就是不用安裝,使用簡單。

2014年5月19日星期一

Picasa 網絡相簿圖片Hotlink連結無效

近期我才發現,我兩個Blog中的圖片出現"叉燒包" (404 not found),不知幾時開始,亦不知道什麼原因。

一直以來我用Picasa網絡相簿都相安無事。
設定方面,我全部相簿的顯示設定 (英文版:Album visibility) 都會設定為 "僅限擁有連結的使用者 (Limited, anyone with the link)",
原因就是我不想公開相簿,亦不想給人搜尋得到,但同時我可以貼圖片上Blog或討論區之用。

但這段時間,同一本相簿內,有些圖片顯示得到,有些就不能,用Firebug顯示是"Error 403 Forbidden",所以不用說9成9是權限問題。
最後燃眉之急把權限設為"公開 (Public)"

本來都算了,但大家都知道Google近期實在很霸道地推廣Google+,先把Youtube留言整合Google+ Profile,已經惹怒很多人。
而Google+相簿亦連結至Picasa,我實在不太放心,而我個人亦覺得Google+安全性設定非常複雜+麻煩。

這個月斷斷續續找解決辦法,最後斬腳指避沙蟲,我乾脆把Google+所有頁面權限設定為"自己"就算了。
反正我最多都是用於Youtube留言。

搜尋一翻後,其實這個問題果然源自Google+跟Picasa整合,而早於 2011年中已經有人在Google Product Forums投訴。
可以看看:

另一個我發現的問題,就是Android的自動備份相簿,會出現越獄情況。
有使用過就知道"自動備份"中,會有很多子資料夾以"年/月/日"命名。
正常是在"自動備份"中的,但上個月發現這些子資料夾竟然跑到外邊,最後我只好把它刪除了事。
其實Picasa相簿自推出以來已經使用,一直功能沒多沒少,但整合Google+後問題多多。

坦白講,都不知道Google何時會把Picasa好像Google Reader般殺掉,

準備PMP考試

由上年12月到現在,幾乎大部份時間都在忙PMP考試,
先後已經睇過三大本書 - PMBOK, Rita Exam Prep, Head First PMP

每本都約600頁,全英文,每次睇完都頭昏腦漲,直到今年4月至睇完幾本書。
還專程起了一個新Blog叫 JustPMP,方便我自己做筆記之用。
暫時內容好亂,Pass左之後至整理一下,唔合格就講乜都冇用。

由於我係自修,冇報讀任何PMP課程,所以又要報一些PMI認可的網上課程。
最後揀了WhizlabsPMP Exam Simulator,做800題MC,合格後就可以有43個PDU的考試資格。

其實PMP真的不用去報課程,考得PMP的人應該本身都有一定工作經驗,有一定的專案管理經驗。
不可能會不明白參考書講的道理。因為PDU而花錢花時間去上一些依書直說的堂,沒意思的。

完成Whizlabs之後,我拿到43PDU,就立即去Apply真正的考試。
5月10日上網報名,填一大堆資料,最繁複的就是填工作經驗和Project管理經驗。
幸好PMI 可以經由Linkedin Import資料,省回我不少功夫。
之後等等等,心急如焚,等到今天5月18日終於等到Email回覆通過Review。

立即網上俾考試費,最令我擔心的時候到了,就是我會不會要求被Audit呢?
PMP考証Audit是隨機的,其實正常提交証明文件一般都可以通過,但是實在很煩,
聽說要返舊公司拿工作証明的簽名,又要學歷証明,還要HardCopy寄去外國,總之就係煩。

好彩我一交錢之後,立即收到Email証明我唔洗Audit,可以立即上Prometric預約時間。

聽講香港的PMP考試地點是和GMAT/TOFEL Share同一個試場 (黃大仙考評局),所以難怪名額咁緊張,
我今天預約,最快都要7月22日至有位,而且都是早上9點的場次,但我想在下午1點那一場 (因為想有充足睡眠),
最後D-Day決定在8月5日下午一點,還有兩個多月時間,好讓我做Rita Fast TrackPMStudy

其實為左考PMP真係花左好多錢...
PMP參考書 約HKD$1500
Whizlabs 約HKD$1000
模擬考試(Rita/PMStudy) 約HKD$2000
PMI 考試費 HKD$4000

希望可以一Take Pass喇。(重考要再俾HKD$2000元的...)

Whizlabs的PMP Exam Simulator,完成後會俾張咁既圖我。


報名, 呆等一個星期:


速速磅水:


直接拿到PMI Eligibility ID,唔洗Audit: