- Sep 26 Wed 2012 12:01
母親節快樂
- Sep 25 Tue 2012 14:51
*EST休閒樂子快報*愛老虎油 But I Hate 油 藍正龍
- Sep 24 Mon 2012 17:14
我也愛台大
我也愛台大今年台大強強滾 冷門科系也領先這樣的標題要說明什麼?直覺的就是"名牌"的迷失 只要台大 什麼科系都可以----有幾個人能勇敢向台大說---NO!沒辦法啊 我們一聽他是台大的 幾乎就立刻有巢氏房屋"肅然起敬" 再聽是醫學系 電機系 法律系.等"黃金系".....就差點要跪地膜拜將心比心 我有機會進台大時 為何不進?想當年 我們是先填"志願"再考試 誰都希望自己有機會成"黑馬辦公室出租"希望考試時"佛光普照 " 機運好 一試中的 昂然進台大可是 我這人自卑感重 我就是不相信我會有那種運 所以 我~~~沒~~填~~~台~~~大!!!用今天眼光看來 我真是有大智大慧的酒店打工人 堅持理想 肯定自己其實 我是不想"浪費"志願填了也考不上 浪費 不如秤秤自己斤兩 填一些可能上的哪知我還是高估了自己 師大 政大那些我還是白填了竟然是落在"應該不會那麼衰"的私買房子立 我們都很高調的說"選系不選校" 沒錯 但是 你的分數落在模稜兩可的地帶 你的性向又沒那麼明確 你的生涯規劃又還沒想好怎麼辦??當然就是社會幫你決定 -----就是選名校 保濕面膜至少眼前是正確的光環所以 我爸常說我家小子就是被這光環害的我實在不怎麼"以為然" 因為 即使歷史重演 面對抉擇 我們也沒有"遠見'可以信誓旦旦的說 名校好 還是名系強社會會變辦公室出租的~~~~~不是說 最近那些冷門的"基礎"科系 物理 化學...等 又重出江湖了嗎不是有人預言說"資工" 等資訊的科系即將進入冷宮嗎?只有"上上才" "絕頂"的那些人才有信心說選系重要因為他有能膠原蛋白力進台大的"黃金系" 他 分數已經在台大的安全範圍了 他當然選系了(除非他倒楣到遇到那種駭客型同學 熱心的幫他決定前途)我猜 不選系的原因除了不知道要讀什麼外對未來茫然的無奈也使原因之一反售屋網正讀什麼都找不到工作 隨便混一下再說讀一讀 找到性向了 再轉系也可以社會不要批評這些茫然學子因為 他們都沒有機會知道自己的未來危機何在 無法堅定方向我們也沒有足夠的訓練 讓他知會場佈置道自己是哪種材 怎麼燒?所以 我愛台大 錯了嗎全世界排名16吧 很光榮的
- Sep 23 Sun 2012 19:52
傻眼的友誼
傻眼的友誼不知道是星座所致,還是個性使然,總之我嚮往自由,害怕被約束近來非常煩躁,不宜蘭民宿知是因為隱私被窺探,還是行蹤被打聽,總覺得有種被控制的感覺令我想越飛越遠,也越來越害買房子怕與"那個人"相處,令我無奈的是這個人不是我的男人充其量也不過是個朋友,一個將我綁的快關鍵字排名要窒息的朋友,實在有點莫名其妙?!她算是一個很NICE的人,但也只是一開始,日子久了吳哥窟熟了,全然變了個樣變化的速度令人瞠目結舌,至於變化的內容可說是精采絕倫,空前絕後呀!結婚從我發現她變了個人到現在,也不過短短的十多天,甚至不到半個月,有時候我還在想她真的是房地產我當初認識的那個"她"嗎?後來聽說了以前曾經與她要好,卻一個個離她而去的朋友買屋所言我才知道原來我不是第一個受這鳥氣的人了!但卻是唯一一個撐的最久才讓她發作的朋友我禮服該對自己說聲可喜可賀還是辛苦辛苦?實在有點無言…
- Sep 22 Sat 2012 22:45
參加小雅"9801 ATC主題串聯 【味道】"的活動(1)
- Sep 22 Sat 2012 02:12
我叫麵包
我叫麵包Give Me Some Sunshine台灣早期男人叫武雄 女人叫美香 祖母時代 女人叫房屋二胎罔市 叫招弟 說到部落格取名,當時正和同學喝咖啡,同學說妳爸媽給妳生個會嫁有錢人大鼻酒店打工子加上豐潤的臉,叫麵包包 我就加個超人,也許能比平凡人更厲害 比較特別的是我小學同學酒店兼職的媽媽叫 麵粉, 爸爸名字是鱔魚, 當時他真的很生氣,甚至於 只要學校要填父母親資料就哭關鍵字行銷, 我們到後來 我們大學畢業 開同學會,才知道由麵粉和鱔魚滋養長大的男孩是班上最有出息小額信貸的,他們因為家裡 有土地又開了工廠, 20歲已經是小開 成就超越我們領薪水的 另外也有許多信用貸款父母望子成龍 會把小孩男生取名金銀財寶 女生就是 美女 美仙瓊瑤小說盛行時代生下的室內設計就比較詩情畫意 到了民國77年左右, 小學老師歸納的,許多人給算命仙取名 叫 子軒租房子 伯翰 宗翰 品妤 怡芬 雨農 詠晴 同一班就有8個人叫 子軒早年叫 台生的起碼有5000宜蘭民宿人 你們叫什麼呢 老闆問我叫陽春麵我叫蛋炒飯 我叫乾麵 .....Give Me Some 房屋買賣Sunshine
- Sep 21 Fri 2012 05:17
悲憫佛陀子民-印度
悲憫佛陀子民-印度在五星級印度皇宮飯店內享用印度美食,但想到皇宮飯店圍牆外貧窮的印度街友,總讓我食不知味。印度各式香料印度景點外的小市集會想要去印度最大的結婚動機是想看看嚮往已久的泰姬瑪哈陵;另一方面也受到密宗師父的鼓勵,他覺得佛教徒應該去印度佛陀當年住世的四大佛跡及四大聖地看看。 這次的印度之旅先去了新、舊德西裝里、捷布爾和阿格拉,所謂的「印度金三角之旅」。卻讓我印象深刻,心情頗沉重。 相較於西藏、尼泊爾普遍貧窮的情況;印度的貧富差距更令人吃驚。 就在蒙兀兒帝國時期長灘島的首都阿格拉我們所住的五星級皇宮飯店內,我享用到印度最棒最美味的食物(與台中印度餐廳及新加坡印度街的印度料理相比較),但是皇宮飯店高高的圍牆外卻有一批又一會場佈置批,隨處橫躺在路邊飢餓,失業,要飯的印度百姓。 飯店內整齊清潔,一塵不染,上個洗手間有女侍為妳開門、開水龍頭、遞紙巾;圍牆外卻塵土飛揚、垃圾滿地、髒亂不堪房地產,那種心境上像洗三溫暖的衝擊,特別令人難受。 尤其導遊一再交代千萬不要拿錢給乞丐,我也見識到了差點就無法脫身。 我內心有個疑惑? 曾經是佛陀眷顧的地方;曾經婚禮顧問是佛教盛行的國度,為什麼天堂和地獄同時在此存在? 是佛陀離棄他們? 還是因為他們背棄了佛陀? 恐怕很難得到答案吧! 我的師父 洛卓仁波切一直希望我能和他一起去有巢氏房屋四大佛跡、四大聖地。可是要自己安排隨隊廚師及餐車,聽來令人吃驚! 是這些地方太落後?或是衛生條件有問題呢? 我們只不過要去幾天,但那些長期住在那兒的子民是過酒店打工著如何艱困的生活呢? 真是不忍想像。 在我的意識裡,虔誠且修持良好的佛教徒,幾乎都是過著清心寡慾、克勤克儉的苦修及實修生活。所求無非是希望渡化眾生,將來像佛酒店工作、成佛,最起碼也希望來世有好的福報過好的生活。 許多較貧窮落後的國家佛教特別盛行,也許就在於佛教教義裡主張的苦修,希望為不可預知的來生,求得一個好的未來及租屋善的果報!
- Sep 20 Thu 2012 08:02
紅色小提琴
- Sep 19 Wed 2012 09:25
Linux Driver(4) - 多個裝置、ioctl、lseek
Linux Driver(4) - 多個裝置、ioctl、lseekLinux Driver(3) - 最基本的開關讀寫 ),來增加一些功能。1. 多個裝置2. ioctl、lseek函式共有3個步驟。1. 修改scripts,改成建造4 個 nodes2. 修改vhcar.h,並新增 ioctl.h3. 修改vchar.c1. 修改scripts,改成建造4 個 nodes:先把他改成多個裝置,這裡我們設定為4個,那首先就要在 /dev 底下創造 4 個 nodes。先修改 vchar_load.sh 和 vchar_unload.sh。vchar_load.sh:把rm -f /dev/$module || exit 1mknod /dev/$module c $major 0改成rm -f /dev/${module}[0-3] || exit 1mknod /dev/${module}0 c $major 0 || exit 1mknod /dev/${module}1 c $major 1 || exit 1mknod /dev/${module}2 c $major 2 || exit 1mknod /dev/${module}3 c $major 3 vchar_unload.sh:把rm -f /dev/$module改成rm -f /dev/${module}[0-3]這樣就會在 /dev 底下建造 vchar0~3 共4個 nodes。2. 修改vhcar.h,並新增 ioctl.h先將VIRTUAL_CHAR_DEVICE_NR_DEVS從原來的 1 改成 4 。再新增 ioctl 和 llseek 兩個函式int vchar_ioctl(struct inode *inodep, struct seofile *filp, unsigned int cmd, unsigned long arg);loff_t vchar_llseek(struct file *filp, loff_t offset, int whence);最後增加 ioctl.h,內容如下:#ifndef _VCHAR_IOCTL_H_#define _VCHAR_IOCTL_H_#define MEM_CLEAR 0x1 // set memory to zero#endif內容很簡單,就是給user-space引入用的,讓它可以透過ioctl來控制driver,而這的功能就是清除memory的內容,並把offset移到0的位置。3. 修改vchar.c我們需要增加一個index的欄位給 vchar_dev 結構,這是為了讓 作業方法可以辨認此時是操作那一個設備。typedef struct _vchar_dev{ struct cdev cdev; // char device unsigned char mem[VCHAR_MEM_SIZE]; int index;}vchar_dev;更改vchar_fops,增加指定 llseek 和 ioctl 函式。const struct file_operations vchar_fops ={ .owner = THIS_MODULE, .llseek = vchar_llseek, .read = vchar_read, .write = vchar_write, .ioctl = vchar_ioctl, .open = 襯衫vchar_open, .release = vchar_release,};在vchar_init裡,更變分配devp記憶體的地方和註冊字元裝置的地方成4份 vchar_devp = kmalloc(vchar_nr_devs * sizeof(vchar_dev), GFP_KERNEL); if (!vchar_devp) { // unregister device before return error unregister_chrdev_region(devno, vchar_nr_devs); return result = -ENOMEM; } memset(vchar_devp, 0, vchar_nr_devs * sizeof(vchar_dev)); int i; for (i=0; i { vchar_setup_cdev(vchar_devp, i); TRACE("schar%d is loaded...\n", i); }釋放的 vchar_exit也要記得取消註冊4份字元裝置 int i; for (i=0; 酒店工作i { cdev_del(&vchar_devp[i].cdev); // delete char device TRACE("schar%d is unloaded...\n", i); }在 vchar_setup_cdev 裡增加這一行devp->index = index;給每一個 device 設定編號。在vchar_open裡,我們有4個 vchar_devp,我們需用不同的方法來儲存多個 vchar_dev*給filp->private_data。在 inode裡有一個 i_cdev欄位,這欄位指向一個cdev結構,但我們要的不是cdev結構,而是自已定義的 vchar_dev 結構。 這時可以用 container_of 巨集來取得所需的 vchar_dev 結構。 vchar_dev *devp; devp = container_of(inode->i_cdev, vchar_dev, cdev); filp->private_data = devp;container_of 的說明可參考這篇 Linux Driver(5) - container_of 分析 。read 、 write 並不用修改,但可加上index,來觀察目前讀寫的設備編號:TRACE("vchar%d:read %d bytes(s) from 婚禮顧問%ld\n", devp->index, count, offset);增加 ioctl函式的內容:int vchar_ioctl(struct inode *inodep, struct file *filp, unsigned int cmd, unsigned long arg){ vchar_dev *devp = filp->private_data; switch (cmd) { case MEM_CLEAR: memset(devp->mem, 0, VCHAR_MEM_SIZE); filp->f_pos = 0; TRACE("vchar%d: The memory is set to zero\n", devp->index); break; default: return - EINVAL; } return 0;}這裡做的就是清除 devp->mem 的內容,並把檔案 offset指為 0。增加 llseek函式的內容:loff_t vchar_llseek(struct file *filp, loff_t offset, int whence){ loff_t newpos = 褐藻醣膠0; vchar_dev *devp = filp->private_data; switch (whence) { case 0: // SEEK_SET TRACE("vchar%d: SEEK_SET\n", devp->index); newpos = offset; break; case 1: // SEEK_CUR TRACE("vchar%d: SEEK_CUR\n", devp->index); newpos = filp->f_pos + offset; break; case 2: // SEEK_END TRACE("vchar%d: SEEK_END\n", devp->index); newpos = VCHAR_MEM_SIZE + offset; break; 婚禮顧問default: return -EINVAL; break; } if (newpos < 0 || newpos > VCHAR_MEM_SIZE) { return -EINVAL; } TRACE("vchar%d: newpos:%d\n", devp->index, newpos); filp->f_pos = newpos; return newpos;}根據 whence 的值來做 offset 的位移。實際做的就是回應 user-space 中的 lseek 函式。最後再給出應用的例子,#include <sys/types.h>#include <unistd.h>#include <sys/stat.h>#include <sys/ioctl.h>#include <stddef.h>#include <stdio.h>#include <fcntl.h>#include <error.h>#include "ioctl.h"#define BUF_SIZE 128#define MAX_DEVS 4int main(void){ int i; int fd[MAX_DEVS]; ssize_t 褐藻醣膠len=0; __off_t offset=0; const char* dev_name[MAX_DEVS] = {"/dev/vchar0","/dev/vchar1","/dev/vchar2","/dev/vchar3"}; unsigned char buf[MAX_DEVS][BUF_SIZE] = {0}; for (i=0; i<MAX_DEVS; i++) { fd[i] = open(dev_name[i], O_RDWR, S_IRUSR | S_IWUSR); if (fd[i]) { memset(buf[i], i+1, BUF_SIZE); // set the memory to zero len = lseek(fd[i], offset, SEEK_END); // get the length of vchar printf("get %d of vchar\n", len); 酒店兼職 lseek(fd[i], offset, SEEK_SET); // set the offset to start len = BUF_SIZE; len = write(fd[i], buf[i], len); printf("vchar%d:write: %d bytes\n", i, len); } else { perror("test_vchar::write"); return -1; } lseek(fd[i], offset, SEEK_SET); // set the offset to start len = read(fd[i], buf, BUF_SIZE); if (len > 售屋網0) { printf("vchar%d:read: %d bytes\n", i, len); } else { perror("test_vchar::read"); return -1; } if (ioctl(fd[i], MEM_CLEAR) == -1) { perror("test_vchar::ioctl"); return -1; } close(fd[i]); } return 0;}