利用 rsync 協定同步 Windows 和 Linux 系統上的檔案

很早就有這個需求了,但是一直堅持要找 win32 native、open source 的 client 軟體,找到的不是不容易操作就是不穩定,最後還是回來用早就知道 cygwin port 套件。

Linux 端設定

Step 1. 啟動 rsync service,這部份各 distribution 的 UI 都作的不錯了,不再詳述

Step 2. 設定 /etc/rsyncd.conf

[notebook]
path=<儲存檔案的路徑>
read only=false
incoming chmod=a+rx,u+w
charset=utf8
uid=<linux 用戶帳號>
gid=<linux 用戶群組>

要注意的是紅字部份,windows 傳上來的檔案未指定的話 permission 都是 -w——-,如果是目錄而且沒有 x permission,底下的檔案同步時馬上會有 permission deny 的錯誤。

Windows 端設定

Step 1. 下載 cwRsync 套件先安裝好

Step 2. 把這個 batch 檔放在 windows 要同步的目錄下,以後跑 batch 就好不用打一長串指令

@echo off

set CWRSYNC_HOME=<cwRsync 安裝目錄>
set REMOTE=rsync://<rsync server ip>/notebook
“%CWRSYNC_HOME%\bin\rsync” -vurt %REMOTE% .

注意事項: cwRsync 套件附的 cygwin1.dll 程式庫無法正確處理中文檔名,只要碰到中文目錄,底下的檔案都會被忽略掉, 到這個 網站 下載支援 UTF-8 編碼的程式庫覆蓋掉就可以了。

[ratings]

Lenovo 3000 N200 notebook 關機時無法切斷電源

網路上有人說要改 registry,有人說是安裝了某些 service 關機時停不掉才會無法切斷電源,都試過了,全部都沒有對症。最後在某個討論區看到可能是 USB 設備電源管理的問題,半信半疑的試了一下,真的是這個原因,只能說資訊科技太過神奇了。下面是 裝置管理員 畫面:

usb-1.PNG

每一個 USB Root Hub 都要設定

usb-2.PNG

允許電腦關閉這個裝置以節省電源 選項取消掉,就可以正常關機了

[ratings]

Ubuntu 7.10 的 grub boot manager 無法安裝在 root partition

上一集我們提到為了讓 Ubuntu、Windows 同時並存在一台 notebook 上鬧到 Windows 的光碟機離家出走,努力的在網路上打聽後才知道要把 Ubuntu grub 放在 MBR 的第三者換成 GAG boot manager 才讓 Windows 挽回許久不見的光碟機,但是從此以後 Ubuntu、Windows 有快樂的在一起嗎 …

很抱歉還是沒有。因為 MBR 的 grub 被換掉了我們必須用下面指令把 grub 裝到 root partition 來載入 ubuntu

grub-install /dev/sda3 (假設  /dev/sda3  是 root partition)

結果出現以下錯誤訊息

Error 6: Mismatched or corrupt version of stage1/stage2

再次打聽後發現想要把 grub 安裝在 format 成 xfs、jfs 的 root partition 時就會有這種問題,在 Ubuntu 的討論區有人說這個問題已經存在 1~2 年了都沒修好。

解決的方法是切 2 個 partition /boot 、 / ,/boot format 成 ext2/ext3,/則隨便你想要 format 成什麼 filesystem 都可以,然後用以下指令把 grub 裝在 /boot partition

grub-install /dev/sda6 (假設  /dev/sda6  是 /boot partition)

註1:/boot 通常只放 kernel 及 grub,大約只要幾十 M 空間

註2:只切一個 root partition 絕對是個壞習慣,安裝 linux 前建議好好規劃一下 filesystem、partition 配置

[ratings]

Windows、Ubuntu 雙系統灌好後光碟機不見了

最近幫一台 lenovo 3000 N200 筆記型電腦灌雙系統,首先縮小隨機灌好的 Windows partition,接著灌 Ubuntu 7.10 x64,過程順利,Ubuntu 建立的 boot manager 也可以正常登入2個作業系統。

在測試機器各項功能時忽然發現用來灌 Ubuntu 的光碟機沒有出現在 Windows,直覺的反應是 Windows 有問題,網路上找了一下資料,的確有人 Windows 的光碟機因為不明原因消失了,根據微軟 Article Q314060 改 registry 可以排除問題,但是看了這台機器的 registry,和微軟文件敘述的現象並不完全相符,把類似的項目改了,但是 Windows 還是找不到光碟機。

後來想起來光碟機是在 Ubuntu 灌好後才消失的,改用 Fedora 8 x64 試試,Windows 一樣看不到光碟機。最後找到一些文章指出 grub 這個 boot manager 在某些筆記型電腦會有這個問題,解決的方法是改用 GAG boot manager,換了 boot manager 後,再登入 Windows 後就自動抓到失蹤的光碟機了,真是一個意料不到的解決方法。

[ratings]

Yahoo UI DataTable 使用範例

在設計網路應用程式時,常必須呈現表格資料,表格呈現出來後,用戶也必定直覺的發問,資料這麼多可不可以分頁顯示,可不可以稍微排序一下。自己來 coding 當然只是多花點時間而已,現在 Yahoo UI 不只可以提供這些功能,還有更多的控制選項可以調整,更好的是不用為 browser 相容性傷腦筋。Yahoo UI 網站已經有相當完整的範例了,只是看不太習慣自己來寫一個。

首先要先 include 以下的 css、 js 檔

<!– datatable includes below –>
<link rel=”stylesheet” type=”text/css” href=”/js/yui/build/datatable/assets/skins/sam/datatable.css”>
<script src=”/js/yui/build/yahoo-dom-event/yahoo-dom-event.js”></script>
<script src=”/js/yui/build/element/element-beta-min.js”></script>
<script src=”/js/yui/build/datasource/datasource-beta-min.js”></script>
<script src=”/js/yui/build/datatable/datatable-beta-min.js”></script>

接下來在 body 內留一個 container 給 Yahoo UI 放產生的 table

<body class=”yui-skin-sam”>

<div id=”DataTableYUI”></div>

再來準備1支程式餵資料給 DataTable 元件,例如以下 datafeed.php

<?php

$sql=”select name,age from user”;
$result=mysql_query($sql);

$data=array();
if ( $result ) {
while ( $row=mysql_fetch_assoc($result) ) {
array_push($data,$row);
}
$status=0;
} else {
$status=1;
}

$response[‘status’]=$status;
$response[‘data’]=$data;

echo json_encode($response);

?>

利用以下 javascript 即可將 data table 呈現在之前定義的 div 內

function showDataTable() {
var ds=new YAHOO.util.DataSource(“datafeed.php”);
ds.responseType=YAHOO.util.DataSource.TYPE_JSON;
ds.responseSchema={
resultsList: “data”,
fields: [“name”,”age”]
};
var cols=[
{ key: “name”, label: “User name” },
{ key: “age”, label: “User age”, sortable: “true” }
];
var dt=new YAHOO.widget.DataTable(“DataTableYUI”, cols, ds, {} );
}

Yahoo UI 網站還有更多的範例及 API 說明可以參考。

[ratings]