Saturday, April 30, 2005

整理舊東西

因為家裡在重新裝潢
所以今天再把所有的舊東西全部整理一次
找到了好多許久沒見到的東西

以前看過的書
重考時買的CD
聯考成績單 ( <-這個最虎爛 我完全不記得我有留下來)
國中畢冊 ( 那時候還蠻可愛的 :$ 可是也很欠打 )
一些久遠的雜誌
- linux journal中文版 可惜停刊了
- linuxer
- palmtop!!!!!!!!!!!!!!!!!
(昨天才找某個從良的敗家男聊天的說..今天就找到回憶了..XD)
可口可樂的Call機 ( 喝了好多罐可樂才換到的...:$ )

還有很多要收起來的東西
人越大 不想去回想到的東西越多...

Wednesday, April 27, 2005

塞格門佛特,摳鄧普, 與 克諾盤尼克

這幾天為了接待幾位好朋友弄到快瘋了
一開始只是老板要我加個新數據 (=.= 明明就很麻煩 還硬是要我弄)
我很開心的想到了一個好方法然後把程式寫好就開始生數據了

這時 第一個好朋友來找我了 =.=
這個好朋友相信也很很多人跟他瞞熟的
他很愛跟別人裝熟
可是大家都很討厭他
他就是"塞格門佛特"(Segment Fault)

他帶著他的問題來找我
我卻也束手無策
只好找來另一個好朋友叫做
"摳鄧普" (Core Dump)
來幫忙解決問題
於是乎這幾日我都跟他們兩個在一起 (我也不想ㄚ)
每天都要看他們兩個看個幾十次

終於
剛剛我把塞格們的問題解決了
正在高興的時候
另一個好朋友又來了

這個好朋友叫做.....




"克諾盤尼克" (Kernel Panic)




..................
雖然兩個都不好
可是我還是比較喜歡塞格門....
盤尼克幹嘛來ㄚ....棍....><

--

哀 bug 滴不盡...春風吹又生...

Thursday, April 21, 2005

Linux Kernel Socket

這陣子由於某些特殊需要
所以找了些資料如何在kernel寫socket programming...
(其實在kernel作這種事情是不道德的...小孩子千萬不要亂用喔...叔叔是有練過的)
大致上是要利用kernel裡面的struct sock直接使用

sock_create(PF_INET, SOCK_DGRAM, IPPROTO_UDP, &sock);
sock->ops->bind ( sock, (struct sockaddr*) &sin2, sizeof(cmdsin));
sock_release(sock);
上面是幾個比較簡單的setup function
然後要send的話就使用
struct msghdr msg;
struct iovec iov;

iov.iov_base=buf;
iov.iov_len=count;
msg.msg_iov=&iov;
msg.msg_iovlen=1;
msg.msg_control=NULL;
msg.msg_controllen=0;
msg.msg_name = (struct sockaddr*)&sin;
msg.msg_namelen = sizeof(sin);
msg.msg_flags = 0;//MSG_DONTWAIT;

sock_sendmsg(sock,&msg,count);
如果想要送的東西並不是從user level傳下來的...
就必須改成
oldseg= get_fs();
set_fs (KERNEL_DS);

// send process.......

set_fs (oldseg);

至於recieve我還在檢查packet究竟掉在那裡...orz

Friday, February 11, 2005

利用Debian 的 ifupdown來做到根據不同的Gateway設定不同的網路組態

買了新的notebook就開始想弄一些有的沒有的
所以了這篇心得

================終極目標=====================
當我接上網路線的時候...
電腦會自動幫我檢查我的網路線接到那
然後把IP設定好...
=============================================


在debian下有個很好用的ifupdown的機制
就是你把某個interface的相關ip設定寫在
/etc/network/interfaces
ex:

iface eth0 inet dhcp

這樣當你輸入
ifup eth0
他就會把你把eth0用dhcp來連上網路

當然他也可以使用static IP
ex:
iface eth0 inet static
address 192.168.0.100
netmask 0xffffff00
gateway 192.168.0.1

而當你想要把這個interface關掉時
輸入
ifdown eth0
就可以了

====================稍微進階分隔線=====================

如果你以為ifupdown只有上面那些東西
那你就錯了
他可以幫你在把某個interface啟用之前先執行一些指令

iface eth0 inet dhcp
pre-up /usr/local/bin/print_cch_is_bigbig

如此ifup便會在把eth0啟動前去執行/usr/local/bin/print_cch_is_bigbig
另外也可以使用up,down
iface eth0 inet static
...
up route add -host x.x.x.x y.y.y.y
down route del x.x.x.x

這個應該就很好懂了就是在ifup的時候跑route add, ifdown時跑route del


===================我很無聊分隔線=====================

我為了方便花了一些時間做這個...(嗚...我的論文阿...>
我為了方便花了一些時間做這個...(嗚...我的論文阿...>
首先我想要讓我的系統在eth0的網路線有插著的時候才可以啟動
所以我在eth0的設定時加了一行
iface eth0 inet static
pre-up [ `ifconfig eth0 up; ifconfig eth0 |grep RUNNING` != "" ]

上面這個意思就是先把eth0啟動(此時可能沒有IP)
然後去檢查ifconfig eth0產生的message裡面有沒有RUNNING這個字
有代表網路線有接起來, 這時ifup才會把eth0啟動










只有這樣嗎?!!!!!
那你太小看一個深夜孤單男子的潛力了
請想像在半夜的時候, 有個男人很孤獨的坐在桌前
整個世界裡陪伴他的只有他面前的notebook
他將雙手舉起...開始讓notebook響起了如同機關槍似的聲響
背景請配上The Phantom of the Opera出場的音樂 XD

..............
好吧 我真的很無聊

我為了能夠讓我的nb自動判斷我在家裡還是lab
所以我繼續利用了interfaces這個設定檔裡面的mapping的功能
首先我在裡面加了下面這兩行

mapping eth0
script /usr/local/bin/get-lan-gw-mac

就是說eth0他會利用/usr/local/bin/get-lan-gw-mac的stdout來做mapping
而/usr/local/bin/get-lan-gw-mac這個程式會幫我獲得
我所接上的Gateway的MAC address
然後印在stdout



例如我在實驗室的gateway為192.168.0.1 MAC是00:02:B3:33:DD:BA
所以設定如下

mapping eth0
script /usr/local/bin/get-lan-gw-mac

iface 00:02:B3:33:DD:BA inet static
address 192.168.0.22
netmask 0xffffff00
gateway 192.168.0.1


這樣eth0如果接到我實驗室的gateway上..就會把IP設成192.168.0.22
我另外也寫了一個家裡adsl的

iface 00:30:88:00:58:8b inet static
address 61.64.162.XXX
netmask 0xffffff00
gateway 61.64.162.254

這樣他就可以利用Gateway的MAC address來決定用那個設定

但是 問題來了
要怎麼拿到Gateway的MAC address
大致上我是利用arping這隻程式來做arp level的ping的動作
所以跑起來有點慢
不過因為interface不多我還可以接受
script在下面 我也懶得解釋
有興趣的人可以拿去看看
希望有人能幫我改進啦...XD

====================================================================

#!/usr/bin/perl

$IFACE = $ARGV[0];

if (`ifconfig $IFACE up;ifconfig $IFACE |grep RUNNING` eq "") {exit 1;}

$MAC = "";

my %gateways;

my $use = 0;

my $address = "";
my $gateway = "";

open ETCIFACES,"
while (){
if (/iface/){
if (/iface ..:..:..:..:..:../) {
$use = 1;
$address = "";
$gateway = "";
next;
}else { $use = 0;}
}
next if ($use == 0);
if (/address\b*([^\b]*)/){
$address = $1;
}
if (/gateway\b*([^\b]*)/){
$gateway = $1;
}
if ($gateway != ""){
chomp $gateway;

chomp $address;
$gateways{$gateway} = $address;
}
}
close ETCIFACES;

for $i (keys %gateways){
$MAC = `arping -c 1 -S $gateways{$i} -i $IFACE $i|grep from`;
$MAC =~ s/60 bytes from ([^ ]*) .*/$1/;
last if ($MAC ne "");
}
print $MAC;

exit 0;

==================================================================


呼呼...我真的是太無聊了....
因為...
世界上有一種東西叫做dhcp................................

Friday, February 04, 2005

2005/01/31 娃娃出嫁

娃娃是我的表姊
她在2005/01/31這天出嫁
在此祝他永遠幸福快樂 :)


早上9:00多我媽就打電話給我要我趕快去
因為早上她們是在女方家裡有一些儀式
可是我還是摸到10:00才出門...XD
到了表姊家 我居然是最後一個錄感謝辭的 :$

壓軸的當然不能漏氣...
我在恭喜她們之外...
也鼓勵了一下其他表姊趕快嫁一嫁 =.=
我們家到現在才嫁出去一個女生...orz
再跟爸媽敬茶的時候
我表姊跟我舅媽哭的西哩花拉的
在場的其他表姊也很多都哭了...
真的蠻感傷的...
不過因為是喜事...大家都要一直說這是喜事阿...要笑

下午變成跟男方去教堂
可是...全部講台語...@_@
聽到台語的誓詞時
我有點傻住....=.=

"哩萬異己系郎愛丟伊嗎"
"哇萬億"


晚上男方請101宴會廳
相當高級...菜色也不錯...
只是聽說不便宜...:P


這裡有四個美女的合照

Monday, February 23, 2004

linux上備分

今天硬碟忽然出現怪聲音....
為了避免慘劇發生
我立刻從lab拿回cd-rw來輩分一些重要的東西
我大約看了一下我需要備份的資料量大概有20Gb
這樣要輩備份到cd裡面實在是有點累
所以我就找了一些軟體來試試看


第一套叫做cdbackup
用perl寫的 可是有點不好用...:P
而且不太穩定
所以我試用了一次

第二次我使用multicd
他只要寫/etc/multicdrc這個設定檔
接下來他就會幫你把所有的東西用ext2的fs來備份
這樣的好處是就不用管那些長檔名跟中文檔名的問題了 ^^||
他還可以開兩個thread(雖然我覺得可能要3 or 4個thread才夠快)
一個thread作create image
另一個thread則是執行cdrecord
所以我只要一值準備換cd就好了
方便蠻多

Wednesday, February 11, 2004

C860入手...

前天拿到我的C860了...
雖然要寫lab的東西又要做實驗
可是我還是花很一些時間在玩我的c860...XD
今天幫他拍了一些照片

放在這裡


先說明一下...
前面幾張是C860沒開機的照片
後面是有開機的照片
然後跟我之前的5500一起合照..XD
最後放上我拿來放C860的包包(hedgren)

Monday, January 05, 2004

我的outlook,evolution,手機跟pda

最近買了SE Z600,也開使用他裡面的PIM功能
所以就在想要如何將我的outlook,evolution,pda裡面的pim來做sync
我的機器如下:
windows XP on IBM A31 with BT dongle
outlook 2k
PC with debian (sid)
evoution 1.4
sharp zaurus SL-5500
SonyEricsson Z600


首先買手機or pda都會有內附outlook跟他們的sync的工具...
我的z600我是用bt來做sync, zaurus則是用usb
這樣他們之間就可以直接跟outlook來做sync了

然後在linux上有multisync
http://multisync.sourceforge.net/
可以讓手機,evolution,pda來做sync
他其實支援的東西不少...還有支援syncml,irml等等
也蠻容易使用的

最後最困難的就是outlook跟evolution之間的sync了
目前我只有找到一個可以幫我做outlook->evolution的東西
http://outport.sourceforge.net/
他可以把outlook export 成evolution的.ics
不過要在經過iconv -f big5 -t utf8的轉換...(因為中文問題:P)
這樣就可以把task,calendar等轉到evolution了....
可是我一直找不到方法做evolution->outlook...殘念....

一些其他的link
http://laughingmeme.org/archives/000281.html
http://www-106.ibm.com/developerworks/xml/library/x-syncml3.html
http://nicolas.bougues.net/syncml/

Thursday, September 28, 2000


網頁圖片群