Author Archives: vincent

利用 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 編碼的程式庫覆蓋掉就可以了。

1 Star2 Stars3 Stars4 Stars5 Stars (1 votes, average: 4.00 out of 5)
Loading...

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

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

usb-1.PNG

每一個 USB Root Hub 都要設定

usb-2.PNG

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

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading...

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 配置

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading...

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 後就自動抓到失蹤的光碟機了,真是一個意料不到的解決方法。

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading...

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 說明可以參考。

1 Star2 Stars3 Stars4 Stars5 Stars (1 votes, average: 3.00 out of 5)
Loading...