2014年7月8日 星期二

Tortoisegit + Gitosis + git in Windows 合起來用注意事項

先前在家裡的 CentOS 架了一個 Git Server ,本來只有自己用,也是很 OK。
可是最近會有不同的專案,會用到這個 Git Server。那原先的架構就不太適合了。
原先安裝好 Git 之後,是利用 git 資料夾當中,/.ssh/authorized_keys 這個檔案放入公鑰,而自己的機器上放私鑰的方法,來讓 git 可以自動登入,並且進行存取。
但是這樣設定的 Git Server ,會變成每個能夠進入的使用者,都可以對每個專案做存取。如果希望能夠依照不同的人設定不同專案的存取權限,這種設定就會有安全上的顧慮。
在網路上查詢之後,一般用來控管不同的人用不同的專案,用的是 Gitosis ,但是在 Windows 上面, 怎麼樣做 key 就是無法自動登入,都會詢問我 Server 上 git 帳號的密碼。這樣也就沒有自動辨別身分的功能了。
經過多次的嘗試,終於知道要怎麼做了,筆記如下:


  1. 先安裝好 msysGit (git for windows): http://msysgit.github.io/
  2. 下載 Tortoisegit 並且安裝,安裝時不要選 TortoisePLink, coming from Putty, 要選 OpenSSH Git defualt SSH Client。
  3. 這時候,一般的 Tortoisegit 的使用方法是利用 puttygen 產生一個 ppk ,然後讓 Tortoisegit 使用,但是在 git + Gitosis 的狀況下,我們不能用 TortoisePLink ,所以不應該這樣做。我們應該要先把安裝 Git 的資料夾位置的 bin 路徑,放入系統的 PATH 參數當中。
  4. 利用 msysGit 所帶來的ssh-keygen (在 Git 安裝資料夾當中,bin 的資料夾內) 產生 key,方法是 ssh-keygen -t rsa。
  5. 但是以上步驟會問你資料夾在何處,先隨便找個地方放。
  6. 先試著啟動 Tortoisegit ,然後建立 repo 之後,試著 push 上伺服器,這時候會失敗。但是會在 Windows 的使用者資料夾下產生一個資料夾為 【.ssh】 (例如 C:\Users\gituser\.ssh),然後把利用 ssh-keygen 產生的兩個 key 都放在這個資料夾當中。
  7. 接著就可以把 id_rsa.pub 上傳到伺服器,放到伺服器上的 keydir 並且進行設定,就可以了。




2014年6月6日 星期五

Swift 與 Xcode 6 playground 快速介紹

自從 Apple 在 WWDC 2014 宣布了 iOS / MacOS 新的開法語言 Swift 之後,網路上有多種文章在討論 Swift 的一些新東西,也有了 Wiki 。
不過我先針對一些似是而非的文章內容做更明確地介紹。

有的文章說,開發者可以看到即時輸出的結果。其實明確的說,這不是 Swift 的功能,而是在 Xcode 6 裡面,所提供的 playground 的功能。

Xcode 6 當中,提供了開發者 (更明確地說,應該是初學者) 一種體驗程式語言的方法,就是 playground。你只要在 Xcode 6 當中,開啟 playground 檔案,你就可以在左邊的程式碼視窗當中鍵入你想嘗試的程式碼,而在右邊的視窗當中,你就會看到 Xcode 自動告訴你,這個程式碼可以得到什麼結果。也可以把 Output Console 打開,你就能看到現在的程式碼會有怎麼樣的輸出。然後也可以針對某個變數,觀察那個變數對於時間的變化。

Xcode 6 的 playground 讓 Swift 的學習與教學變得更容易


以上圖來說,左邊是程式碼的區段。中間是系統告訴你這個程式碼會有怎麼樣的效果,右邊的內容是可以自己新增或者是減少的。可以看到程式碼實際執行的狀況,或者是變數的值變化的狀況。所以如果要在課堂上講解這些,有了 playground 就變得很容易了。




2012年7月17日 星期二

設計人!利用 PhoneGap Build 極速打造客戶 App

設計人!利用 PhoneGap Build 極速打造客戶 App
隨著 App 的需求日漸增多,我們也在很多地方看到了可以學習App的書籍或者是課程。但是對於大部分的人來說,學習撰寫App是有一定的挑戰的。
若要學習App的撰寫,困難的點在於程式語言的學習是需要一段時間以及陡升的學習曲線。下表是各相對應的裝置與語言列表。

iOS Android Windows Phone BlackBerry
Objective-C Java C# Java
 
但是對於很多的廣告或是介紹型的App,例如餐廳或商店所想要的自介用App,程式的運算與邏輯不是App的重點,重點是圖像與資訊的傳達。
而對於一個視覺設計師來說,為了製作App,除了設計圖像與資訊之外,還要學習程式的撰寫才能把App製作出來,是一件很累並且浪費時間的行為。所以市面上就開始出現了一些轉換的工具,可以讓網頁設計師們,很快的把網頁轉換成App之後可以安裝在裝置上。而如果需要數學或邏輯的運算,則就要使用Java Script程式碼來進行撰寫。若是需要手機本身提供的功能,例如相機、重力加速度感應器等,則可以利用Java Script呼叫轉換工具的API來達到。
可是這些工具的安裝都有一定的困難。以下要介紹的是完全不用安裝,只要利用雲端轉換,就可以製成App的方法。PhoneGap Build!
這裡介紹的是使用Dreamweaver CS6再加上PhoneGap轉換App的方法。首先可以先用Dreamweaver CS6的網站管理功能建立一個網站。然後新增一個檔案為index.html。
為了手機瀏覽的格式,最快速設定的方式是利用CS6的插入jQuery Mobile頁面功能。當中Dreamweaver CS6會詢問連結類型是遠端(CDN)或者是區域。因為我們所要建構的是手機App,而手機在操作中可能是沒有連結網路的,所以要選擇區域。
clip_image002
在插入jQuery頁面之後,會得到的頁面形式為下圖:
clip_image004
如果用瀏覽器預覽,會得到下圖:
clip_image005
所以已經有手機應用程式的樣子了。這個時候只要把內容加入,並且加入圖片,修改配色以及CSS設定。若有多個資訊頁面,可以加上項目清單,並且製作成多個頁面連結,讓它資訊完整。設計完成之後,可以得到像這樣的頁面。這時候這個頁面還只是手機版本的網頁。
clip_image007 clip_image009 clip_image011
完成了這些頁面之後,接下來要設定icon檔案以及程式名稱。
在這個資料夾當中,建立一個config.xml。並且在config.xml裡面設定好id (程式唯一的識別碼,建議使用公司網址倒裝加上專案名稱),name是程式名稱,還有icon.png。icon.png指的就是程式圖示。設定範例如下:
  image
都設定好之後我們就要利用PhoneGap Build一次把它轉換成六種版本的App。
這時候可以利用Dreamweaver Build的直接PhoneGap Build服務功能來操作。但也可以直接到Phonegap build網站上傳。
PhoneGap上傳步驟如下:
把這幾個html檔案,加上圖檔以及jQuery的js/css檔打包成一個zip檔案。到build.phonegap.com註冊帳號之後,開始設定App的細節。
clip_image012
設定好了程式的名稱之後,就可以將zip檔案上傳。只要短短一兩分鐘的時間,網站就會將您的應用程式轉換成App並且顯示出二維條碼可以掃描下載。
而iOS的版本需要驗證,所以必須要在驗證程序之後才能夠產生。而BlackBerry的版本,名稱不能有中文,所以若用中文則無法產生。但是其他版本都可以使用了。
PhoneGap Build目前是測試版本,可以無限製造App。而在正式收費之後,若您的App是公開且不收費的,則可以無限制產生,若是私人使用的App,則請參考定價方式斟酌使用。
clip_image014

2012年6月15日 星期五

iPad 發信,Outlook 接收的亂碼問題

最近遇到很多人問我,用 iPad 發信給人的時候,收信者會看到滿滿的亂碼,無法閱讀信的內容。其實這個問題簡單想一下就知道原因,因為 iPad 發信用的是 UTF-8 編碼,可是在台灣,Outlook 收信常常是 Big5 編碼收信。而 iPad 寄出的信件也缺少了指定編碼的標頭,所以 Outlook 就用 Big5 去解它,就會看到滿滿的亂碼。
在網路上查詢之後,發現解決的方法很簡單。
只要在信件當中加入【 - 】符號即可。就是【減號】。
所以最簡單的方法是,到 iPad 當中,把簽名檔【從我的 iPad 寄出】
改成

------------------------
從我的 iPad 寄出

就可以解決這個問題了

2012年5月13日 星期日

CentOS 6.2 抓不到網路的問題 (CentOS 6.2 eth0 does not work after booting)

CentOS 6.2 抓不到網路的問題。

最近新安裝了 CentOS 6.2 發現偶爾 eth0 會無法啟動。這是這個版本的怪問題,在網路上也搜尋了很多結果,找不到問題在哪。

後來靈機一動,把 eth0 從 DHCP 取得 IP 改為固定 IP 。問題就不再出現了。

提供給也遇到這個問題的朋友參考。

I installed CentOS 6.2 recently. But the eth0 interface sometimes does not work after booting.
I found some solutions on the net but they are unusable.
A bright idea suddenly occurs. I have used DHCP to get the IP of eth0. I modified it to STATIC and gave it a static IP. The problem solved.
When modifying to static IP, don't forget to add the routing information in /etc/sysconfig/network and add GATEWAY=x.x.x.x into the file.