顯示具有 技術文件 標籤的文章。 顯示所有文章
顯示具有 技術文件 標籤的文章。 顯示所有文章

2013年10月2日 星期三

Ubuntu 設定 isc-dhcp-server IPv6

不知為何中文的資料超少,在此作個筆記。[via]

sudo apt-get install isc-dhcp-server


  1. set a static IPv6 address for the Interface I want to run the DHCPv6 server from that is part of the IPv6 network subnet outside the DHCP range.

  2. Edit the /etc/dhcp/dhcpd6.conf file to configure the DHCPv6 range etc.

  3. Create the /var/lib/dhcp/dhcpd6.leases

  4. Manually start the DHCPv6 server.



sudo ifconfig eth0 inet6 add 2001:db8:0:1::128/64

設定 dhcpd6.conf

default-lease-time 600;
max-lease-time 7200;
log-facility local7;
subnet6 2001:db8:0:1::/64
{
#Range for clients
range6 2001:db8:0:1::129 2001:db8:0:1::254;
}


touch /var/lib/dhcp/dhcpd6.leases
chown dhcpd:dhcpd /var/lib/dhcp/dhcpd6.leases
sudo dhcp -6 -f -cf /etc/dhcp/dhcpd6.conf eth0

[via]

2013年2月19日 星期二

Google帳號的年齡限制

因為我們學校學生帳號是使用 Google apps 架設,包括查詢成績,我透過 OpenId 的方式設計程式,讓學生登入查詢。

但最近有少數學生反應,他們的帳號被鎖住了,原因是因為Google帳戶有年齡限制,超過13歲不得使用,這個規定在每個國家略有不同。而且Google很微妙的加註了一行:Google Apps for Education 網域中的使用者可能不受上述帳戶年齡規定的限制。真是把我搞得好亂啊~

我們學校一部分的國中一年級學生小於13歲,但我實在不願意叫他們謊報年齡。(不想教學生說謊,但網路世界個人資料也是需要保護的,這兩者一直都很矛盾的存在。) 請繼續閱讀全文

[[MORE]]

Google在某些應用需要輸入生日,例如Youtube,主要是某些18+的影片,不要讓不符年齡的人觀賞。Google+未滿13歲也是不得使用,這是為了保護兒童上網社交的安全。但一旦輸入生日,而且未滿13歲的話,就會被強行鎖住帳號,一個月後刪除。看這裡有好多受害者,有的甚至是公司帳號,使用公司成立日期作為生日,結果被刪除帳號欲哭無淚。

但如果是輸錯生日,在被停權的一個月之內,倒也有救回的方式

  1. 透過郵件或傳真寄送您親筆簽名的申請表格,並附上政府核發的身分證件的影本,影本上必須有您的出生日期,或是

  2. 上載政府核發的身分證件的電子圖檔,圖檔上必須有您的出生日期,或是

  3. 使用有效的信用卡支付一筆小額 ($0.30 美元) 交易。


如果父母要幫小孩恢復帳號,看起來是刷信用卡比較快。

因為恢復帳號有其時效性,時間一到,帳號刪除就是刪除了,就算你準備完整的資料證明身份已滿13歲也沒有用,所以一旦被鎖住,誤必要第一時間處理。Google也有優先帳號救援服務,不過當然要另外收錢,也不確定是不是能適用在年齡驗證這一關。

回到 Google apps for Education 的狀況,如果是管理員身份,能不能去修正學生的生日設定呢?預設是不行的,這是屬於Google+的付費功能。也就是說,如果你的網域有這個需要,也是要花一點錢(好像Google越來越多東西需要花錢?)。

But!人生最神奇的就是這個But!目前 Google apps for Education 可以「試用付費功能」,一旦你從設定頁面,開啟Google+設定,設定「試用付費功能」之後,就可以搜尋學生帳號,再幫學生修改生日。

Google所言,2013年底前都可以試用Google+付費功能,這些功能其中就有一條稱為「修正使用者註冊時不小心輸錯的年齡」。

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]

2011年12月6日 星期二

Linux 下的多頁列印

在 Windows 下不用說,fineprint 是節省紙張的好工具,很多年前我就有在用他節省地球的資源,因為他可以把很多頁的文件列印在同一頁上,甚至變成雙面,達到紙張的最佳利用。

但是現在大多數時間使用 ubuntu,其實也有類似的工具,不過要下一點指令。psnup 這個小工具可以使用指令列命令,將 ps 檔案轉成另一個多頁的 ps 檔。

所以如果有其他格式的文件,需要先匯出成 pdf 檔,再將 pdf 轉成 ps 檔。


  1. pdf 轉成 ps: pdftops input.pdf output.ps

  2. ps 轉成四頁: psnup -4 -d1 output.ps > output4.ps (-d表示加上邊框)

2011年11月29日 星期二

Google Apps 對於 openid 的支援

我在前文中提到,可以使用 php openid library 在自己的網站上作 google 帳號的身份驗證。不過我自己實作的結果,發現 Google Apps For Education 的帳號並沒有辦法像 gmail 帳號那樣可以直接拿來作 openid 的驗證。

原來還需要管理者進行一個權限的開放,開放權限的網址在後台 cpanel 中:

(請把 your-domain 換成自己的網域)
http://www.google.com/a/cpanel/your-domain/SetupIdp.

參考資料:

2011年9月19日 星期一

PDF檔產生中文破碎字的原因與解法

在 Ubuntu Linux 裡面,如果開啟內含中文字體的 PDF 檔,很常見到中文字破碎的狀況,為何會如此?

這裡有一篇好文章解釋來龍去脈:

Not Again, MingLiu!

2011年6月27日 星期一

FreeBSD Unable to find device node

剛剛在安裝 FreeBSD 的時候,分割完硬碟的 Partition,要繼續切割 Slice 的時候,突然出現一個訊息:

Unable to find device node for /dev/da0s1b in /dev!

也就是怎樣都無法寫入分割表,裝了這麼多年 FreeBSD 倒是第一次遇到這種情形,不知道是不是因為我安裝在 Virtual Machine 裡面。

拜了 Google 大神之後,有個解法如下:

安裝光碟 (CD1) 的選單中,有個 fixit 的模式,進入之後會叫你換光碟片,這光碟片就是 ISO 檔中稱為 livefs 的東西,例如 FreeBSD-8.2-RELEASE-i386-livefs.iso

這個光碟其實是 FreeBSD 的 Live CD,可以用它得到一個 shell。然後可以使用一些基本的工具,這時候輸入指令:

dd if=/dev/zero of=/dev/da0 bs=64k count=1

然後重新開機再安裝就可以了。

[參考]

2011年6月18日 星期六

我終於也開始玩 Amazon EC2 了!

之前我都自己用 VMware ESXi 4 架設自己的私有雲主機,但一來備份麻煩(也沒有 vMotion),二來硬碟掛了真是讓我頭大!以往伺服器硬碟掛了也不過影響到一台電腦的服務,虛擬主機掛了可是一連串的災難!

我在備份 VMware ESXi 上面的 Virtual Machine 時,如果 guest OS 是 FreeBSD,就用 rsync 將資料同步出來,如果 OS 是 Windows 系列,也是用某些檔案備份工具。然後每固定一段時間,透過 CloneZilla 將 Virtual Machine 透過網路備份出來。但因為使用 CloneZilla 必須將 guest OS 關機,所以服務得中斷,幸好是在學校,總是有空檔讓我作這件事。(例如半夜)

但最近覺得偶而硬體故障,以及需要時常備份,實在是有點煩人的事情。所以開始摸索 Amazon EC2 的雲端服務。目前註冊都還有一年免費的使用權。(但限使用基本的方案)

[[MORE]]
註冊完,使用預設的系統 image 可以很快啟用一台主機(它稱為 instance),例如 Basic 64-bit Amazon Linux AMI 2011.02.1 Beta 或是 Ubuntu 或是 CentOS 都可以免費使用。

以 Basic 64-bit Amazon Linux AMI 2011.02.1 Beta 為例,啟用起來之後,記得注意一下防火牆(Security Groups)的相關設定,必須檢查一下是不是有啟用 ssh (port 22)允許 0.0.0.0 連入。(當然要更安全一點,也可以設定成只允許自己的 IP 連入)

然後使用像這樣的指令連入建好的虛擬機中:

ssh -i mykey.pem ec2-user@ec2-XXXXXX.compute-1.amazonaws.com

如果是 ubuntu 主機,需使用 ubuntu 這個帳號連入,如果是其他版本的 Linux ,則可能直接使用 root 連入。
安裝套件則使用 sudo 進行,例如:

sudo yum groupinstall "Web Server"
sudo yum groupinstall "MySQL Database"

這兩行指令就可以把 LAMP 環境建構起來了,不過當然在防火牆設定上一樣得允許 port 80 連入才行。

雖然伺服器成功啟動了,但還沒想到應用到學校的網路服務中,可以怎麼玩,然後學校可以達到利益最大化,過兩天玩熟悉一點再說囉~

參考文件:

2011年6月2日 星期四

使用簡單的 php 程式存取 google 帳號資訊

有很多企業或學校使用 Google Apps 來作為內部或對外的雲端服務,但如果想寫一個程式,讓程式可以存取已經登入的 google 帳號資訊,有沒有比較簡單的方法呢?

我會想這個問題是因為最近想做一個收信的簽到簿,因為 Gmail 沒有提供收信回條功能,有某些第三方網站(例如 Spypig )雖然提供類似的功能,但他們多半是使用插入外部圖片的方式,去判斷圖片被打開的時間。但這個方法有幾個嚴重的限制,例如大量發信時無法知道是哪一個人打開了信,只能知道有信被打開了。而且 gmail 預設會阻擋外部圖片,除非使用者好心去按了「顯示信件中的圖片」。

[[MORE]]

所以最好可以直接用個簡單的 php 程式,直接讀取目前已經登入的 Google account 郵件地址,然後透過後端資料庫進行紀錄即可。對使用者而言,他不需要重新登入,只要同意這個問題即可:「某個第三方服務正要求授權以存取您的 Google 帳戶。 」

這個方法列示在此文件中
設計者需要準備三個檔案,一為 PHP OpenID library,一為 login.php,以及引導使用者前往授權同意頁面的按鈕即可。

後面兩個檔案的內容,請移駕至原網站即可得知。

Ubuntu Unity 介面呼叫傳統主選單

Ubuntu 11.04 預設採用了 Unity 介面,很多人都很不習慣,包括我,本來想強迫自己適應,但是今天找不到一個程式,突然覺得再這樣下去不行了。(我想找的程式是中文檔名,Unity 的「搜尋」居然不能輸入中文,是只有我這樣還是大家都這樣?)

於是先試了 Linyl 網友提供的方法,使用 Avant Window Navigator 這個套件去新增一個 main menu 的按鈕,但這樣畫面稍微變得更複雜了些,也許是我誤會了 Linyl 的意思。但不管,我繼續找看看有沒有別的維持 Unity 介面簡潔,又可以擁有主選單的方法。

於是找到了這個 Use Classic menu in Ubuntu 11.04 Unity Launcher,先看一下效果像這樣:
[[MORE]]
Ubuntu Unity main menu

方法簡述如下:

打開終端機界面,依次輸入以下指令:


sudo add-apt-repository ppa:cardapio-team/unstable
sudo apt-get update
sudo apt-get install cardapio

mkdir ~/.local/share/applications
gedit ~/.local/share/applications/Cardapio.desktop


然後將以下這段文字複製貼上後存檔結束 gedit:

[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Exec=cardapio
Name=menu
Icon=gnome-main-menu


之後使用檔案瀏覽器,去開啟這個資料夾 “.local/share/applications”
(可以用 Ctrl-H 顯示隱藏資料夾)

然後將 Cardapio.desktop 這個我們剛剛編輯出來的檔案,使用拖曳的方式拉進 Unity 的選單中。
接下來按下選單中新增的按鈕,就可以跑出主選單了,但預設會出現在畫面的正中央,這樣很難看,所以我們還要調整一下。

打開 CompizConfig-Setting-Manager ,如果沒有這個的,可以透過這個指令安裝(sudo apt-get install compizconfig-settings-manager)

在「放置視窗」(Place Windows) 的設定項目中,找到「固定視窗位置」(Fixed Window Placement tab) 的分頁。
在最上面那一欄(視窗以位置方式固定)點選「新增」。

視窗的部位設定為 “name=cardapio” (不含雙引號)
x 設定為 70
y 設定為 30
保持在工作區域 要打勾


這樣就大功告成囉!有一點麻煩,但是出來的效果感覺還不錯。

然後我裝完之後,還沒使用這個主選單就找到我原本要找的東西了。我本來要找「終端機」,其實只要輸入「term」就找到了。但是上面的設定過程不是就要用到終端機了嘛?所以我根本是耍笨。

2011年5月30日 星期一

錯誤處理:「您嘗試開啟由登錄原則設定封鎖的檔案類型」

在開啟儲存某些 PowerPoint 檔案的時候,可能會出現這樣的訊息:「您嘗試開啟由登錄原則設定封鎖的檔案類型」。 狀況是有時候無法開啟,有時候則是無法儲存。

根據微軟官方的解法是,需要由 registry 去修改群組原則。解法請按此

不過這個方法很麻煩,而且修改機碼失誤更可能出大事。

我測試確定可以直接用別的 Office 軟體開啟再另存新檔一次即可,例如使用 LibreOffice。也可以下載其可攜版 LibreOffice Portable,平常準備一份放在隨身碟中,遇到這類疑難雜症很好用的!

2011年5月9日 星期一

針對各大行動裝置的web設計

連結:Mobile Emulators & Simulators: The Ultimate Guide

很可惜,以前很期待 .Net 真的如微軟所說可以跨平台(包括在手機上),所以也練習過 Windows Mobile 6.5 上的小程式。但 iOS 跟 Andriod 崛起後,好像大家都忘了這麼一回事,只好各自為政了,甚至快要連 Mono Project 都有點岌岌可危了

2011年5月8日 星期日

Ubuntu 11.04 的 Unity

Ubuntu 11.04 在桌面體驗上有一個很大的改變,就是加入了「Unity」的桌面效果。
想看看怎麼回事的朋友可以看這一段Youtube影片
看起來雖然不錯,但用起來卻會發現不少問題,比如常用的選項都不在原來的地方,Ubuntu 的舊使用者會有一種不適應感(至少我就是)。
關於這個網路上也有不少討論,例如:Natty Dread,只是不少都是抱怨文。
剛升級到 11.04 ,我在使用上也是很多挫折,相信很多 M$ Windows 使用者要進入 Ubuntu 11.04 更容易一頭霧水。
但我還是肯定 Ubuntu 的改變,總是要不斷地進步,然後走出自己的路,這樣才可以跟 Windows 有所區隔,而不是一昧跟著 Windows 的腳步走。
要調回舊有 gnome 介面也不是太難,在使用者登入時的下方就有個地方可以選擇傳統介面。

如果想要去調整 Unity 工作列,可以試著按 Alt-F2,然後在搜尋列上輸入「about:config」,就可以出現調整選項。

2011年4月28日 星期四

在協作平台中設置留言板

很多人現在都用 Google Sites (協作平台)設置網站,不過因為沒有匿名留言板,所以減少跟瀏覽者互動的機會。

Google 現在有個服務,叫做 Google Friend Connect,它可以讓你在自己網站上弄個社群小圈圈,就像 Facebook 好友圈一樣。但這東西暫時是不支援 Google Sites,但幸好有個東西叫做 iframe,我們可以利用 iframe 將 Google Friend Connect 嵌入到任何地方,包括 Google Sites。


  1. 利用 Google Sites 建立自己的協作平台。

  2. 如何擁有Google Friend Connect留言板?(Wall gadget)

  3. 如何利用 iframe 將 Google Friend Connect 嵌入到協作平台中。

2011年3月10日 星期四

MySQL 突然出現錯誤

錯誤訊息如下:


#2000 - mysqlnd cannot connect to MySQL 4.1+ using the old insecure authentication. Please use an administration tool to reset your password with the command SET PASSWORD = PASSWORD('your_existing_password'). This will store a new, and more secure, hash value in mysql.user. If this user is used in other scripts executed by PHP 5.2 or earlier you might need to remove the old-passwords flag from your my.cnf file


原來是系統更新到 PHP 5.3 後,MySQL 卻仍只支援到 PHP 5.2 所致。只要把 MySQL 也更新就好。

2010年6月25日 星期五

Ubuntu 下的 VMware workstation 啟動失敗

會出現如下訊息:

Could not open /dev/vmmon: No such file or directory.
Please make sure that the kernel module `vmmon' is loaded.

這時只要下一個指令就可以暫時解決了:

sudo /etc/init.d/vmware start

參考資料