2009年8月4日 星期二

Word 2007 文件自動備份設定

最近又聽到word忘了備份的災情傳出,
似乎有朋友在寫完一大段文章之後,想要存檔之時,word居然死當。
可想而知,剛才的心血一定付之流水啦。
其實,個人覺得word的自動儲存還是不夠的,應該要自動另存一個備份檔才安全,
因為word有時候會在自動儲存的時候當掉,那剛才新寫好的文章就被自動儲存蓋過去,
又因為自動儲存存到一半,記憶體中的暫存檔清掉了,原本的文件也損毀。
這樣的機率雖然不高,但是只要發生一次,就會要重寫一大段。
所以,為了確保這樣的狀況發生,當然是定時地將暫存檔備份成另一個檔案。

還記得以寫碩士論文的時候,用word 2003 就有自動備份的機制,
但是現在換成了2007,設定的位置都不一樣了,所以還是紀錄一下如何設定自動備份好了。
其實很簡單,只是位置改變,
現在要先點選Word的左上角 "office按鈕",接點選下方的"word選項"


之後會開啟一個視窗,選擇紅色方框所標明的"進階",並找到"儲存"的欄位,
最後將"建立備份"勾選起來,這樣就大功告成啦


設定完按下確定,以後在你存放word檔案的旁邊就會多一個*.wbk,
檔案和所編輯的檔案一樣,只是多了"備份"兩字。
這樣就不怕Word又當掉啦。

2009年8月3日 星期一

如何運用專案管理軟體維護論文

最近在研究專案管理的軟體,
深深的覺得專案管理真的有其必要性,
無論是在軟體開發或是人事配置的調動,
如果有一個好的管理流程,
都可以加快自己和大家做事的速度。
所以,今天突發奇想地想使用專案管理軟體來整理我的論文,
這樣一來,我可以追踪我自己論文的進度,也可以隨時提醒自己。
先前我已有打算使用git當作我寫論文的版本控制系統,
畢竟寫latex就跟寫程式一樣,有個版本控制系統也不為過。
那有什麼好的專案管理軟體可以和git搭在一起呢?
嘿嘿~~
答案呼之欲出啦!!!
就是Trac + git ~~~
沒錯,目前trac和git的整合性算是很高的,
不但可以利用trac中wiki做筆記,還可以用trac查看原始檔的變化。
相信有效利用這些工具可以完成很多事情。


安裝環境
作業系統: Debian
已安裝好的軟體:apache2


Step1 安裝git


sudo apt-get install git-core


Step2 安裝trac

sudo apt-get install trac libapache2-mod-python
sudo apt-get install trac-git

Step3 建立Repository
假設我在自己的家目錄底下建一個paper資料夾,並且在這個資料夾底下再開一個imitated_skew


mkdir ~/paper
cd ~/paper
mkdir imitated_skew
cd imitated_skew


首先用FTP將論文上傳到imitated_skew資料夾,
接著在這個資料夾底下開一個repository。


git init


這樣就可以在imitated_skew資料夾中看到一個.git資料夾,裡面包含了git的設定檔。
到這邊Server端已經設定好一個基本的repository。
接著就是要把Server端的repository clone回來,
為了方便操作,我在windows上的灌好了PortableGit-1.6.3.2和TortoiseGit-0.8.1.0,
所以只要在任意的資料夾上點選右鍵,就可以有Git的選項出來。如下圖所示:



這裡我是點選"Git Bash Here",因為我比較熟悉command line的操作,
接著會跑出一個提示命令字元,我們就可以下指令將Server端的資料抓回來,
底下我們輸入


git clone jay@140.xxx.xxx.xxx:/home/hdj/paper/imitated_skew imitated_skew


這裡的jay是Server上的帳號,140.xxx.xxx.xxx是Server的ip,/data/hdj/imitated_skew是Server上的repository的絕對位置,imitated_skew則是下載回來之後要取的資料夾名字。
按下Enter之後,可以透過ssh連線到Server,輸入完密碼後,資料就會下載回來了。
以上就是簡易的git設定,現在已經有一個基本的git server可以使用了。

其實只要做完以上動作git就算是設定完成了,
但是,如果要讓trac能讀取git的版本控制資料,我們必須提供一個bare的repository,
所以,我們要再新增一個資料夾,建立新的repository,
並且將剛才的資料push上去。

cd ~/paper
mkdir imitate_repo
cd imitate_repo
git --bare init
cd ../imitated_skew/
### 新增一個遠端的repository並上傳 ###
git remote add origin ../imitate_repo
git push origin master

Step4 設定trac

再來就是比較麻煩的trac設定,
首先一樣必須為trac建立一個資料夾 ~/trac/imitated_skew

mkdir ~/trac
cd ~/trac
mkdir imitated_skew
cd imitated_skew

接著起始化imitated_skew資料夾,讓他存放trac的設定檔。

trac-admin /home/hdj/trac/imitated_skew initenv

依照指示填入
1.project name: imitated_skew
2.使用的Database: (按Enter就可以用預設的trac.db)
3.使用的版本控制軟體: git
4.repository的路徑: /home/hdj/trac/imitate_repo
這樣就完成了基本的設定了,
接著修改conf/trac.ini,變動一些設定用以啟動git plugin。
新增一個[components]:

[components]
# for plugin version 0.10 (如果 trac 版本是 0.10, 下面 gitplugin 前的 # 要拿掉)
# gitplugin.* = enabled

# for plugin version 0.11.0.1+ (目前 Debian Testing 版 trac 為 0.11, 需要加這段)
tracext.git.* = enabled

並在[git]中修改git的路徑:

[git]
cached_repository = false
# git_bin must be set to git's absolute path
# or it will not work, "git" is not sufficient
git_bin = /usr/bin/git
persistent_cache = false
shortrev_len = 6

大致上trac的設定完成了,不過光是這樣還不夠,
必須設定virtual host才能透過web介面使用trac。
所以要修改/etc/apache2/site-available/default
並在之前加入


SetHandler mod_python
PythonInterpreter main_interpreter
PythonHandler trac.web.modpython_frontend
PythonOption TracEnv "/home/hdj/trac/imitated_skew/"
PythonOption TracUriRoot "/trac/imitated_skew/"
AuthType Basic
AuthName "Paper Trac Server"
AuthUserFile /home/hdj/trac/imitated_skew/.htpasswd
Require valid-user



設定完virtual host之後,再來就是設定可以登入的使用者,
輸入以下指令就可以新增使用者:


sudo htpasswd -c /home/hdj/trac/imitated_skew/.htpasswd hdj


最後再重啟apache2,就可以連線到http://your_path/trac/imitated_skew/觀看結果。

參考來源:

http://blog.yam.com/wjyaries/article/18199573

http://wiki.ubuntu.org.cn/index.php?title=Trac%E7%9A%84%E5%AE%89%E8%A3%85%E8%AE%BE%E7%BD%AE&variant=zh-hant
http://plog.longwin.com.tw/my_note-unix/2009/05/13/debian-linux-build-git-trac-2009
http://www.fwolf.com/blog/post/345
http://labs.kihomacapps.com/general/14/trac-gitplugin-on-ubuntu-810
http://cwlin0416.wordpress.com/2009/06/02/trac-subversion-apache-ldap-with-multiple-projects/
http://www.vixual.net/blog/archives/232

2009年7月10日 星期五

好用的Javascipt工具-- Variable Dump

一直以來我都是用alert來找javascript的bug
但是有時連變數的型態都不知道的時候
真的是叫天天不應,叫地地不靈
還好找到了一個好用的工具
可以將javascript的變數Dump出來

參考網址如下:

http://plog.longwin.com.tw/post/1/492


官方的網站:
http://www.netgrow.com.au/files/javascript_dump.cfm


雖然他有jquery的版本
不過我只有測試成功javascript的版本
dump出來的範例如下:


(圖一)它會開啟一個新的視窗,並且可以清楚的知道變數的型態。

(圖二)甚至是物件中的array也可以看得出來,相當的有用。

2009年7月9日 星期四

Jquery livequery應用

我覺得livequery是Jquery的外掛中,最值得使用的一個外掛,
有了livequery,我們可以在DOM元件尚未生成之前就先將其綁定,
這樣就可以操作"未來的DOM元件",
對於常常使用Ajax動態載入頁面的朋友,
無疑是一項很重要的工具。

在底下這個範例中可以清楚的知道livequery的優點:

http://www.cssrain.cn/article.asp?id=964


不過如果是要操作未來的未來的DOM元件,
千萬不要livequery兩層,
這樣會導致相同的DOM元件操作兩次,
並且會發生不可預期的問題。

錯誤示範:

$('#first_data').livequery(function(){
$('#first_link').click(function(){
var $new_data = $(['click me',''].join(''));
$(first_data).append($new_data);
});

$('#second_data').livequery('click',funcont(){
alert($('#first_data').find('#first_subdata').html());

});
});

由上面的這個範例中,我們可以清楚的知道,#first_data是一塊尚未出現的DOM元件。
為了要將其綁定,我們使用了livequery將整個DOM元件預先保留起來,
其中還包括一個#first_link,它的作用是新增一個id為second_data連結。
這裡的second_data連結就是我所謂的"未來的未來的DOM元件"。

現在如果我們想要按下#second_data時,跑起一個警告視窗,內容為#first_data中的#first_subdata的資料,
很自然的,會在和程式的下方多加一個livequery去執行這個動作。
但是這樣的寫法,會導致#second_data連結,被啟動兩次,所以會造成不可預期之動作。

那要怎麼處理未來的未來的DOM元件呢??
其實不用把它想的太難,我只要用livequery綁定一次就OK了。
只是如果livequery之中的function如果有需要用到其他未來的DOM元件,
就必須另外寫一個livequery來處理其他的DOM元件。

所以正確的寫法如下

var first_subdata;
//Part 1
$('#first_data').livequery(function(){
first_subdata = $(this).find('#first_subdata');
$('#first_link').click(function(){
var $new_data = $(['click me',''].join(''));
$(first_data).append($new_data);
});
});
//Part 2
$('#second_data').livequery('click',funcont(){
alert(first_subdata.html());
});


因此,我們必須在Part 1之前,就事先宣告一個first_subdata變數去保留了#first_subdata的資料,然後在Part 2的時候才能使用first_subdata的資料。

2009年6月23日 星期二

Crossbow TelosB 硬體測試 by using Oscilloscope

很久沒有紀錄和TinyOS相關的文章了
上個星期收到了幾顆Crossbow的mote
所以一時手癢拿來跑Oscilloscope的範例程式
順便復習一下TinyOS
不然人老了,很容易忘東忘西的

首先要跑Oscilloscope
可以先到官網的wiki看一下說明
http://docs.tinyos.net/index.php/Sensing

底下為大家一一介紹燒錄和觀看結果的步驟:

Step1 燒錄程式
要燒錄的程式有兩種:
1.BaseStation
2.Oscilloscope
第一份BaseStation主要是將收到的封包,透過serialforwarder傳回PC端
第二份Oscilloscope是將mote上收集的sensing data 傳送出去

由此可見,至少要二個mote才能跑起這個範例
所以我準備了兩個mote
在第一個mote上燒BaseStation


cd /opt/tinyos-2.1.0/BaseStation/
make telosb install,1 bsl,/dev/ttyUSB0


接著在第二個mote上燒Oscilloscope



cd /opt/tinyos-2.1.0/Oscilloscope/
make telosb install,2 bsl,/dev/ttyUSB1

在install之後的2是用來設定mote id用的,單純為了待會辨視之用

Step2 顯示資料結果
我們透過內建的java程式,觀測感測的資料


export MOTECOM=serial@/dev/ttyUSB0:telosb
cd /opt/tinyos-2.1.0/Oscilloscope/java/
./run


這樣就可以看到感測資料的結果了

2009年6月14日 星期日

[Mac] Macbook air 大降價~~

好像是從去Berkeley那年開始,我都會注意Apple的產品發表會。
一來是自己從那個時候開始注意Apple的產品,二來是每次的演講都是很讓人期待。
從iPhone到Macbook air,這兩年來,Apple的新產品線都讓人衝動的想買一台回家。

而今年的WWDC 2009,個人感覺對於產品線而言,並沒有太大的突破。
不過,Macbook air的價錢真的是降到我認為合理的價碼,讓人很心動的想去買一台回來。
尤其是其它的產品線對我而言都太重了,超過1.5公斤以上的NB,對我來說都是不合格。
所以,Macbook air ssd版降了這麼多,真的是佛心來的。
當然,台灣要上市大概還要等大約一個月,這一個月就可以讓我好好的評估是否要自己買一台。
買之前當然要先做功課啦,先把硬體規格列一下:


2.13GHz,128GB 固態磁碟
13.3 吋 (實際顯示範圍) LED 背光鏡面寬螢幕顯示器
1280 x 800 像素
Intel Core 2 Duo
1066MHz 前端匯流排
6MB 容量 L2 快取記憶體
NVIDIA GeForce 9400M 繪圖晶片,與主記憶體共享 256MB 容量 DDR3 SDRAM 記憶體
2GB 的 1066MHz DDR3 SDRAM (位於主機板上)
內建鋰聚合物電池
可提供長達 5 小時的高效率無線網路連線
1 個 USB 2.0 連接埠
耳機輸出、麥克風、揚聲器
Apple USB Ethernet Adapter
全尺寸,具備環境光線感應器的發光式鍵盤
Multi-Touch 軌跡板
1.36 公斤

參考網址:
http://en.wikipedia.org/wiki/MacBook_Air
http://store.apple.com/tw/browse/home/shop_mac/family/macbook_air?afid=p202|GOTWE&cid=AOS-AP-TW-GOOGLE-AA5000082926
http://forums.whirlpool.net.au/forum-replies-archive.cfm/1225888.html

原則上,記憶體是沒辦法擴充啦,因為是銲在主機版上的。
不過我的X31好像也是4年之後才加了1G的ram,所以不影響。
可能可以換的,我猜只有ssd硬碟,可能過幾年會出256G的吧。
當然,如果可以等9月雪豹一起出來,一次到位那是最好啦。
就不會再花錢更新作業系統。

目前在MAC Rumor其實有傳出一些災情:

1.顯示器有線條跑出來,而且顯示器其實跟2代一樣,希望有線條的NB只是個案><
(目前已經有三四篇在討論這個問題了,真的要買的話要好好注意)
http://forums.macrumors.com/showthread.php?t=715107


一些個人覺得有用的評價:
1.跑windows 7很順(沒辦法一定要跑一下雙系統的丫)
http://forums.macrumors.com/showthread.php?t=719163
2.不會過熱,這個很重要
http://forums.macrumors.com/showthread.php?t=717958
3.跑windows 7 電池可以撐4個多小時
4.跟第一代比起來,風扇比較靜

大致上就是這樣啦
就等9月啦

2009年5月20日 星期三

[PHP] Pear - HTTP_Upload使用心得

如果有在使用Pear的人
相信對HTTP_Upload一定不默生
他是一套相當好用的檔案上傳套件
不過我最近發現一件事
不知道是他原本就有的問題
還是我程式沒有寫好

我們都知道HTTP_Upload支援多檔案上傳
只要使用

require_once 'HTTP/Upload.php';

$upload = new http_upload();
$files = $upload->getFiles();

foreach($files as $key => $value)
{
//處理每一個file
}


但是,如果<input type="file" name ="XXXX">這段tag是單純是由jQuery產生的
檔案就不會post給下一個頁面,只會出現error
不過如果網頁本身就有<input type="file" name ="XXXX">
混合jQuery產生的tag就可以將每個檔案傳出去

所以,目前我的解決方法就是不管有沒有要傳資料
那一段tag都要寫在網頁裡,然後display設為none
眼不見為淨,這樣就不會有file error的問題


參考文章:
http://andy.diimii.com/2008/12/pear%E6%AA%94%E6%A1%88%E4%B8%8A%E5%82%B3http_upload%E7%AF%84%E4%BE%8B%E8%A3%9C%E5%85%85/#more-149
http://phpeye.com/bbs/thread-310-1-1.html
Related Posts Plugin for WordPress, Blogger...