Thursday, June 30, 2005

掰掰...交大宿舍

七舍>ls
行李 垃圾 一塊錢 衣服

七舍>mv 垃圾 垃圾桶/

七舍>mv * 車/

七舍>logout

bye~

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


這裡有四個美女的合照