2012年8月15日 星期三

使用Google Apps Script讀取試算表中的資料

最近在研究 Google Apps Script,這實在是很有趣的新玩具。
如果想要透過 Script 去讀取雲端硬碟中試算表的資料,並透過HTML的網頁印出在瀏覽器上,在 Google Apps Script 的說明頁面上,有關於 HTML service 的說明,也在 Pulling Data into a Template 這個 section 提供了一個範例。但這個範例卻不夠完整,初入門的人(就是指我)會搞得一團霧水,又沒辦法正常執行程式。

我將在這篇文章中,將說明文件中的範例程式,一步一步說明建置方法。

[[MORE]]

首先從雲端硬碟中,找出想要讀取資料的試算表,將想要讀取的範圍進行命名。

下拉式選單「資料」,「已命名和受保護的範圍」,「新增範圍」,給個名稱,例如 NamedRange1。

接下來必須獲得該文件的「key」,可以直接從該文件的網址(url)獲得,例如網址是

http://spreadsheets1.google.com/ccc?key=tvGWKARIojJaOIGNX7C4qyg&hl=en#gid=0

那麼 key 就是 tvGWKARIojJaOIGNX7C4qyg

總之,我們要存取資料,總是要告訴程式說,我們要存取的資料位於何處。而 Google 透過 key 取得文件位置,再透過範圍名稱取得資料範圍。

接下來在雲端硬碟中,新增一個「指令碼」文件。
該文件中必須有兩個檔案,一個是副檔名 .gs 的程式碼,另一個則需新增一個 .html 的網頁範本。

.gs 的程式碼範例如下:

[codebox 1]

.html 的範例如下:

[codebox 2]

然後去設定發布版本

「檔案」、「管理版本」

然後進行發布

「發布」、「佈署為網路應用程式」


這樣就可以了!

2012年8月14日 星期二

使用 Python 管理 Google Apps

這是上一篇文章的續集:Google Apps 遠端管理,透過 Provisioning API

首先必須抓 Python 的 Google Data APIs 的 client librarys
[[MORE]]
下載解壓縮。

然後必須針對 ssl 連線會出錯的問題進行 patch。patch 檔在這篇討論的 comment 3

patch gdata-2.0.17/src/gdata/client.py < issue-416-hotfix.patch

然後進行安裝。

sudo python setup.py install

測試可以用這個指令:

python gdata-2.0.17/samples/apps/userprovisioning_quick_start_example.py python userprovisioning_quick_start_example.py --client_id="1234567890.apps.googleusercontent.com" --client_secret "lCdEIxxxxxxxxxxvbTjV" --domain="shsh.ylc.edu.tw"


client_id 跟 client_secret 請先自行取得,取得方式在前文中已有說明。

Google Apps 遠端管理,透過 Provisioning API

自己撰寫程式從遠端管理 Google Apps,必須透過 Provisioning API 。

啟用 API 存取的方法如下:

  • 登入您的管理控制台。

  • 按一下 [網域設定] > [使用者設定]。

  • 如要使用 Provisioning API:勾選 [啟用 Provisioning API] 旁的方塊。

  • 按一下 [儲存變更]。


[[MORE]]
接下來你要選一種慣用的程式語言,用來呼叫 Provisioning API。
語言包括 PHP、Python、Java、.Net C#。
這裡有非常多 Provisioning API 的呼叫範例:Google Apps Provisioning API

目前 PHP 需要搭配 ZendFramework,不過不知為何,我在 FreeBSD 9 (32/64 bit) 中執行會一直發生 segment fault。之前在 FreeBSD 8 上則很正常。

使用 Python 的sample呼叫某些 API,則會要求你輸入 client id 及 client secret。
取得的方法是到 Google APIs Console 先註冊一個 Project。這個其實就是透過 OAuth 在沒有個別使用者的帳號密碼的情況下,存取他們某些特定的資料,例如通訊錄等。Google 為了避免濫用,這些存取是有數量限制的,如果要大量使用頻寬,則必須付費。
在 Google APIs Console 裡面,一個 Project 最多可以設定 7 個 client IDs。

如果只是要做一些比較簡單的應用,例如寄信給資料表中的某些人,在信中使用特定的稱呼(例如小隆先生您好),而不像寄發大量廣告信,則可以有更簡單的方法。即是在 Google 雲端硬碟中,撰寫 Google Scripts。這些 Google Scripts 是使用 JavaScript。

在這裡有官方所提供的許多範例及參考文件:
Google Apps Platform

2012年6月5日 星期二

Dev C++ 的替代方案

之前有提過,應該可以多利用現代的 IDE (例如 Visual C++) 來進行程式教學。不過有時候為了避免其他因素干擾,只想讓學生學習 C 語言的邏輯的話,其實 Dev C++ 還有後代正在更新。

Dev C++ 官網上的版本 4.9.9.2 已經很多很多年沒有更新了,而且最多只支援到 Windows XP,如果勉強裝到 Windows 7 上會有不少問題要克服。

這時可以考慮改用 Orwell Dev-C++ (目前最新版本 5.2.0.2)
http://orwellengine.blogspot.com/

或是 wxDev-C++ (目前版號 7.4.2.542)
http://wxdsgn.sourceforge.net/

2012年5月9日 星期三

Ubuntu 12.04 下安裝 VMware Workstation 8.0.3 Player 4.0.3

在 Ubuntu 12.04 下安裝 VMware Workstation 8.0.3 或 VMware Player 4.0.3,可能會需要重新安裝核心模組。(rebuild kernel module)
可是通常在安裝到 vmnet 這模組會失敗。(或者其他的模組失敗)

這時可以用一個知名的補釘程式處理:
vmware workstation 8.0.2 / player 4.0.2 fix for linux 3.2+

tar xvf vmware802fixlinux320.tar.gz
修改 patch-modules_3.2.0.sh
將 vmreqver=8.0.2 改成 vmreqver=8.0.3
將 plreqver=4.0.2 改成 plreqver=4.0.3
存檔後執行 sudo sh patch-modules_3.2.0.sh

但如果這麼做出現錯誤訊息:
patch-modules_3.2.0.sh: 27: [: player4.0.2: unexpected operator
patch-modules_3.2.0.sh: 28: [: player4.0.2: unexpected operator
Sorry, this script is only for VMWare WorkStation 8.0.3 or VMWare Player 4.0.3. Exiting

接下來就要手動打補釘了,請先 su - 或者 sudo bash 變身成 root。

cd /usr/lib/vmware/modules/source
解壓縮 source modules
tar xvf vmnet.tar
這時候會解開許多檔案在 vmnet-only 這個資料夾中

假設你將補釘檔放在 ~/Downloads/vmware3.2.0.patch
patch -p1 < ~/Downloads/vmware3.2.0.patch

這樣就手動打完補釘了。接下來我們要重新將這些檔案壓縮回原來的包裹
mv vmnet.tar vmnet.bak.tar ; tar cvf vmnet.tar vmnet-only/

重新執行 VMware Workstation 或是 Player 即可順利重編核心模組。[1][2]

2012年4月27日 星期五

Google Drive for Google Apps for your domain

經過許多年的謠言,網路龍頭 Google 終於推出了雲端硬碟 Google Drive
對於使用方式與介紹,已經有很多人寫了,在此不必多言。
可以看這裡的介紹:電腦玩物 Google Drive 的介紹

這裡主要補充一個重點,就是如果您使用 Google Apps 管理自己的 domain,也想要使用雲端硬碟,有幾個需要注意的地方。

如果您登入雲端硬碟頁面,他出現:「您的網域 尚未啟用 Google 雲端硬碟。」
必須由 Google Apps 管理介面進入,「網域設定」頁面的「一般」設定。

在「新使用者功能」 選 「快速發布」 (預設應該是定期發布)
在「新服務」 選 「自動」 (另一個選項是手動)。

在這裡儲存設定後,重新整理 Google Drive 的頁面,可以發現訊息變成了:
「Google 雲端硬碟尚未準備就緒」,點選「通知我」

然後使用者點「通知我」後,過一段時間就可以收到啟用通知了。
這麼耗頻寬的服務,逐步開放也是很合理的,不然一下子負荷不了,大家都別玩囉~

2012年2月16日 星期四

2012年1月2日 星期一

ASP.NET 發現重大資安弱點影響範圍涵蓋 ASP.NET 1.1 ~ 4.0

...由於這類攻擊手法已於 2011-12-28 在德國的 Chaos Communication Congress 駭客年會中被公開,研究員 Julian Wälde 與 Alexander Klink 在現場展示如何透過一個自訂的表單攻擊目前市面上多個知名的 網站應用程式框架 (Web Application Frameworks),其中包括 PHP 4, PHP 5, Java / JSP, Apache Tomcat, Jetty, ASP.NET, Python, v8, … 等,他可以利用極少的 HTTP Requests 癱瘓現有的網站伺服器,而且不僅僅是 ASP.NET 可能受害,許多其他 Web 框架依然無法倖免於難!...

請大家盡快更新系統囉!

延伸閱讀:ASP.NET 發現重大資安弱點影響範圍涵蓋 ASP.NET 1.1 ~ 4.0