跳到主要內容

發表文章

目前顯示的是 一月, 2014的文章

Detached Apps Script

通常Apps Script會Binding在一份文件上,但是使用的情境上,如果永遠讓文件與Script做Binding,就缺少了些操縱的快感.... 例如,需要動態產生表單,並且讓表單自動的Binding onFormSubmit的Event….下面就是這段範例,執行createFormTrigger之後,ID為 '1hCg1vS…..Qm5-Q'的文件(必須要是Form啦,這個Trigger是針對Form動作的),就會附加上onFormSubmit的Event,而Event的內容,則是同一份Script中的runCommand function,也就是由ScriptApp所new的Trigger名稱:
function createFormTrigger() {  var fid = '1hCg1vS…..Qm5-Q';  // Create onEdit trigger using sheet ID  ScriptApp.newTrigger("runCommand").forForm(fid).onFormSubmit().create();}
function runCommand(){  Logger.log('TEST......' + new Date());}
上面的Script可以搭配Driver來使用,例如指定某個Forder下的文件都要附加上某個Trigger,這樣以後Create在那個Folder下的文件,就都會具備同樣的Event...

Intall OracleXE in Google Compute Engine

Step1: 上傳所下載的Oralce安裝檔,並解壓縮

Step2: 執行安裝$ sudo rpm -ivh oracle-xe-11.2.0-1.0.x86_64.rpm

Step3: 使用root設定環境$ sudo su -# /etc/init.d/oracle-xe configure

Step4: 設定Apex預設admin密碼$ sudo su - oracleoracle@sles11-roaclexe: ~ > export PATH=~/product/11.2.0/xe/bin:$PATHoracle@sles11-roaclexe: ~ > sqlplusSQL*Plus: Release 11.2.0.2.0 Production on Thu Jan 23 02:49:25 2014Copyright (c) 1982, 2011, Oracle.  All rights reserved.Enter user-name: systemEnter password:Connected to:Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit ProductionSQL> @apxxepwd admin


Step5: 登入並設定預設的Workspace與相關user資訊
登入:http://your-ip-address:8080/apex/ 使用system作為使用者名稱,密碼為安裝時提示設定的那組

登入APEX系統,使用admin作為帳號,密碼為之前sqlplus設定的那組

正常登入後就可以進行進階管理...

GCE Create N-Tier Network Environment

傳統的實體資料中心中,一般會把網路切分成:DMZ層、AP層、DB層等等,目的是讓每一層區域之間,透過Firewall來保護不從曾主機的安全性,而Google Cloud Platform在Compute Engine的網路運作上,則是透過定義Network與Firewall及Router幾個元素來彈性定義網路架構,搭配TAG的應用切分不同的主機網路區段。之後主機只要使用不同的Tag設定,就可以快速定義可連線的區段。下面描述一下實際執行的做法...
N-Tier描述
此範例實做簡單的三個區段,如果需要再往下切分,可以延續此概念再往下切割...
admin: 建立允許外部SSH進入或建制VPN Gateway服務的網段,作為管理之用
frontend: 第一線服務伺服器,通常為DMZ區段,作為提供用戶服務的連線功能,一般為Web Server所在位置,在此我們建制Web Server,需要開放80 port
db: 後端資料儲存區,通常為資料庫或是檔案伺服器所在位置,在此我們建制couchdb,需要開放5984 port


Network Tier Setup
建立network:
首先我們先建立屬於這個服務的網段(my-network),給定一個C class(192.168.10.0/24),並指定192.168.10.1作為Gateway... 這裡的網段設定是屬於內部的私有網段,也就是會實際attach在主機之上的ip位置
$ gcutil --service_version="v1" --project="my-project" addnetwork "my-network" --range="192.168.10.0/24" --gateway="192.168.10.1"
建立admin zone:允許外部SSH連入+SSH連進內部frontend, db網段,作為管理之用

$ gcutil addfirewall --allowed_ip_sources=0.0.0.0/0 --target_tags=admin --network=my-network --allowed=tcp:22 myfw-admin-ssh
$ gcutil addfirewall --al…

Connect CloudSQL with SSH tunnel

連線到CloudSQL的方式很多 原則上與使用MySQL無異 而在MySQL連線上,使用SSH Tunnel的方式算是安全又穩定的 而SSH Tunnel簡單的說就是透過SSH到某一檯Linux主機 再透過該主機連線到MySQL的方式
有了這樣的連線方式 我們可以在CloudSQL的Connection Control部分設定允許root角色由某個IP連線過去 而該IP可以設定成一檯Compute Engine的IP位置 這樣,像MySQL workbench之類的連線工具就可以使用SSH Tunnel連線到CloudSQL中 概念如下圖:


而Workbench的部分,設定大致如下:


原則上有兩個部分: SSH server部分:設定中繼的SSH server位置與連線上去的金鑰或是帳號密碼
MySQL server部分:設定最終要連線的MySQL位置與帳號密碼等資訊
這樣的連線方式通常適用在您申請了GCE server作為AP開發使用時候 為了安全性考量,CloudSQL可以只開放給GCE server連線 這時候,使用SSH Tunnel從AP server轉連線到CloudSQL資料庫則相當方便喲∼

GCE上製作自己的image

在雲端的世代,主機服務怎麼可以少得了image呢...
Google Compute Engine在製作image的部分 可以透過幾個簡單的指令來打包你的主機 然後再註冊到image服務上,就可以方便之後使用拉∼ 簡單的三步驟,介紹一下:
步驟一:在客製好(安裝好你所需要的軟件或服務)的主機上做打包的動作
$ sudo gcimagebundle -d /dev/sda -o /tmp/ --log_file=/tmp/abc.log 

步驟二:傳送到google cloud storage
$ gsutil cp /tmp/308...439.image.tar.gz gs://arecord-customise-images 

如果要從google的主機上執行gsutil的話,記得要在開主機的時候,把project access的cloud storage部分選擇read + write


步驟三:將image加到Google的image collection中,之後就可以在web console中看到自己的image了喲∼
$ gcutil addimage test-image gs://arecord-customise-images/308...439.image.tar.gz
INFO: Waiting for insert of image test-image. Sleeping for 3s.
…(skip)
INFO: Waiting for insert of image test-image. Sleeping for 3s.
INFO: Waiting for insert of image test-image. Sleeping for 3s.

Table of resources:

+------------+-------------+--------+
| name       | deprecation | status |
+------------+-------------+--------+
| test-image |             | READY  |
+------------+-------------+--------+

Table of operations:

+----------------------------------------…