2007年7月30日 星期一

Linux Programing

今天課程教的是socket程式,剛開始複習一下TCP與UDP的概念,最後有個lab算簡單,由於code都給我們了,稍微修改一點點就ok,不過卻遇到額外的難題,c語言整數字串的轉換,itoa函式linux library好像沒內建,兜了半天沒有結果...

這算是蠻常會碰到的問題,從網路整理一些資料:
數字轉字串,使用sprintf
#include "stdio.h"
#include "stdlib.h"

void main(void){
char string[10];
int num=55;
sprintf(string,"%d",num);
// sprintf的用法和printf完全相同,只是printf把結果印在螢幕上,sprintf把結果印到一個字串中.
printf("%s\n",string);}

數字轉字串,使用itoa()
char * itoa(int value, char * str, int base);
This function is not defined in ANSI-C and is not part of C++, but is supported by some compilers.
#include "stdio.h"
#include "stdlib.h"

void main (void){
int i=12;
char string[10];
itoa(i,string,10);
printf("decimal: %s\n",string);}

字串轉數字,使用sscanf
#include "stdio.h"
#include "stdlib.h"
void main(void){
char string[]="100";
int num;
sscanf(string,"%d",&num);
// sscanf和scanf用法一樣,只是輸入的來源改成從字串中讀取而不是從鍵盤
printf("%d\n", num);}

字串轉數字,使用atoi()
int atoi(const char * str);
#include "stdio.h"
#include "stdlib.h"

void main (void){
char string[]="34";
int i=atoi(string);
printf("%d\n",i);}

Ref:
cplusplus.com - The C++ Resources Network

2007年7月26日 星期四

summer trainintg

研究所課程這禮拜開始了,由於嵌入式系統門檻較高,其基礎課程很重要,軟體方面大多架構在linux,基本的command,shell script,tool都要會使用,更深入到kernel的運作.硬體方面由單一晶片8051入門,線路的焊接,組合語言控制,之後還會接觸到各式的嵌入式開發板...頓時開始懷念熊寶貝的課程,都怪我大學的時候沒認真學.programing方面以c為主,我想這是念這行不可避免,可以說是萬物的根源阿.

今天老闆特地關切一下我們的學習狀況,其實學長上課都以輕鬆為導向,沒有太大的負擔,lab,homework也不會刁難,畢竟是在暑假嘛,呵呵~ 聊了一下從前接觸過的課程,未來可能會往Multi-Core發展,必須額外加強parallel processing,multiprocessor的觀念.一切還是要端看我的能耐摟...

話說lab裡面有位自己開發作業系統的學長,有"一哥"的稱號,偷偷觀察一哥的桌面環境...還蠻亂的,最特別的就是那台只有外殼的主機,嘖嘖...這就是達人的境界阿.

training schedule
Home Automation, Networking and Entertainment Laboratory

2007年7月23日 星期一

2007 Summer Training Course

由於課程多樣化,不得不把每次上課內容記錄下來,不然真的很容易忘記.

8/30 Linux Block drivers


8/29 NS2, NCTUns
安裝ns2,寫簡單的tcl語言,跑sample並用awk翠取數據,gnuplot繪出圖形.

8/28 mP-8051 Interrupts
timer中斷, uart中斷

8/27 Linux CHAR drivers
為何使用kernel module. 自製一個module掛上去跑. lab2沒做.

8/24 Linux World, Parallel Port And Linux I/O Programming
Hacker的基本態度與所學. 焊接板子利用Print port做溝通.

8/22 Oscilloscope and logical analyzer [SCREAM]
示波器的使用

8/21 mP-8051 Interfacing–I2C, serial communications
介紹serial port,借由rs232跟8051溝通,sdcc編譯測試程式.

8/20 Linux GUI
在板子上跑測試程式.編譯QT

8/17 QEmu II
國科會計畫.

8/16 Linux Bootloader
自行編譯bootloader再燒到板子的rom執行.bootloader就像bios開機時偵測週邊裝置並作初始化.

8/15 QEmu I
國科會計畫.QEmu(a virtual hardware),製作/修改Hard Disk Image, Ramdisk, 撰寫I/O測試程式.

8/14 8051 Timer
利用timer製作跑馬燈.使用interrupt service routine...

8/13 RVDS
RVDS(RealView Development Suite)基本設定與編譯.

8/13 Linux Root filesystem
編譯embedded linux 的檔案系統.

8/10 8051 board schematics and soldering
焊接8051平台,基本input,output測試.

8/9 Linux Kernel image
OS工作簡介,練習編譯kernel,再從超級終端load到嵌入式板子.

8/8 Trace 32 Training
Trace 32 debug工具的使用

8/7 mP-8051 Assembly programming II
8051 Bank register and stacka 簡介.ssembly inline use SDCC compiler.

8/6 Linux Toolchains
建立makefile的方式以及makefile的語法,並且實際演練,再利用autotools自行產生makefile的檔案.
Automake:http://pigfoot.org/cc/devel/auto1/

8/1 Lab Equipment
介紹所有嵌入式開發版

7/31 mP-8051 Assembly programming I


7/30 Linux Programming II

7/26 Linux Programming I

7/24 mP-8051 Architecture and instruction set

7/23 Linux Architecture and commands

2007年7月21日 星期六

A Nice Day

今天是中區大學博覽會,感謝darker兄把機會讓給我,代表嘉大資工去做宣傳.理工學院代表只有我跟王老師,實在是人才缺乏,發發文宣必要時介紹系所發展,不過一天下來詢問本科系的似乎沒有~囧,礙於理工學院之一,硬是要介紹應物應數系真是太為難了,只能翻著簡章亂哈拉的...

各校宣傳方式花樣也很多,最在意的當然是贈品摟,雖然不是大學新鮮人,還是到處去搜括有的沒的,有獎徵答還拿到隨身碟,屏科商技真是大手筆阿^Q^ 不過台清交成完全沒附加那些東西,但攤位的人群似乎沒少過...嘖嘖.最讓我印像深刻的是一所軍校,直接把攤位佈置成叢林射擊場,依我對CS的熱衷當然是進去扣扣板機啦,步槍基本站姿射擊,目標物一一倒下QQ 很多學校也有表演節目,一整天都是那麼歡樂;)

晚上是高中同學會在迦南園,稍微晚了點到,遠看都是些生面孔,是我們太久沒見面了嗎><" 熟悉的動作相近的話題,問候來問候去的,大家感情都還很熱絡.吃飽飯當然不忘續攤啦,在Elva為主體之下,茶店裡又充滿歡笑聲,高腰男還帶了"簫"來助興,真是高~~~明阿!傅永茶一搭一唱全場都笑翻了,動不動就提A的,誇張的動作都記錄在影片裡面,咱們YouTube相見XD

補上影片,老實說有點髒髒的啦~哈哈

後記:
第二天的大博會人潮依舊,詢問度提高很多,又得介紹一些非本科系手忙腳亂的...其中有個人讓我超不爽,竟然說我講話都在包裝不像念過資工系,他X的我才講沒幾句話,妳存心是來踢館的阿,一副屌屌的樣子我看妳跟本不適合念大學...運氣似乎都用光了,今天有獎徵答主持人都不叫我...好在荷包跟肚子都滿滿的...

2007年7月20日 星期五

台中生活

台南到台中想不到近3小時,還好現在改搭莒光,不然電車可能會讓我得恐懼症.中午和三位ntcu新朋友吃飯,聊了一下嘉義跟台中學生的大學生活.在資科樓遇到了林老師,她當然是嚇了一跳~科科,彼此稍微敘敘舊啦.實驗室裡見識到了真正的程式女魔人(腦海浮現出抓狂一族的田中),那種熱衷的態度是很少見的,在一旁聽她們kuso的對話都快笑翻了,聽說她都不愛洗澡刷牙,這就是魔人的特權啊XD

晚上有一則新聞比較吸引我的注意,是關於一個新興行業"SEO"(Search Engine Optimization,搜尋引擎最佳化),美國教育部評為2010年最迫切需要的十大行業之一.大家都知道搜尋結果會依其重要性來排列,而越前面的網頁點閱率越高,商機也越大,因此SEO的目的就是找出搜尋引擎的排名因素(如分析google的PageRank),再將網頁最佳化,使其排名提高而且穩定.感覺上這是一種干擾搜索引擊的偷雞法,不過每個搜尋引擎都有自己的防範措施,演算法也常常在變,只能說是一場打不完的仗.

2007年7月18日 星期三

丁丁大站

今天一個人在家閒著,想說來寫個台鐵查詢系統,當然不是台鐵的系統不好,而是我想將查詢結果排版濃縮(簡單說就是過濾掉不要的東西),列印在一張小紙上面,說真的複製貼上word快多了,想說藉機練一下程式也無妨.

vb.net連接http不用自己建立socket,有專屬的HttpWebRequest HttpWebResponse元件可用,困難之處大概就是在字串分析跟排版上,html語法做切割稍微複雜了點,不過只要有時間就一定弄的出來,台鐵系統不常改版,做一次就可以用很久;)

焦點不知不覺轉移到丁丁大站,有些人blog相簿有鎖右鍵+防止複製文字的功能,想說透過字串取代那些語法再送到瀏覽器上,看了一下原始碼:
body id="blog_main" onDragStart="return false" onContextmenu="return false" onSelectStart="return false"

這些就是搞鬼的地方,用replace取代掉即可(解決的方法很多,我的算複雜的了).拿了小偉哥的相簿來測試,上述功能是擋掉了不過照片都變XX,搜尋一下,原來丁丁伺服器會檢查referer(上次瀏覽的網頁),簡單說就是從無名網域來的才能成功顯示,直接打在網址列上referer是空的,這就是為什麼直接輸入照片網址會錯誤的緣故,所以只要用程式修改referer就可以摟.
Dim myHttpWebRequest As HttpWebRequest = CType(WebRequest.Create("相片網址"), HttpWebRequest)
myHttpWebRequest.Referer = "丁丁大站的網址"
Dim myHttpWebResponse As HttpWebResponse = CType(myHttpWebRequest.GetResponse(), HttpWebResponse)
Dim picture As Bitmap = New Bitmap(myHttpWebResponse.GetResponseStream)

試了一下鎖住的相簿一樣找的到,不過前提是你要知道相簿的網址啦,網址的命名規則有人知道?

參考資料
HttpWebRequest.Referer屬性
darker兄

2007年7月17日 星期二

KWANG YANG HONDA

今天要介紹的是我爸的愛車(HONDA不知什麼哇戈型號的,有人知道嗎?),這台車應該有15年以上的歷史,我腦海中仍存在記憶是國小三年級,那時上下學都是靠它,全身上下大概只有殼沒換過,里程錶搞不好已經轉過一圈重頭開始了.

以前在台中我都不敢騎它,奇特的外表讓我覺得很丟臉,好像路人都在看似的,寧可去騎吐白煙的小50.近期才發現它的好! 6公升菜籃,隨你想放些什麼,加長形椅墊寬敞好坐,柔軟度媲美沙發,乘載3名都不覺得擠(小時候都3+1貼的).前擋玻璃讓你見識不是汽車才有的專利,擋風擋雨擋泥巴,尤其是在民雄那種蟲多的地方功能更顯著.重點是約會都不會被發現,配合著簡樸的裝扮-汗衫+短褲+夾腳拖+龜殼式安全帽(照片太可怕就不放上來了),完全不會被懷疑,不過你得擔心後座乘客的感受...

當然,想駕馭它也不是那麼容易,第一就是要學會腳踩發動,非常抱歉沒提供電發的服務.老舊的變速齒輪大概磨損,催油門的時候一定要緩緩的,如果太過猴急就會發出巨大的聲響,好像引擎要解體一樣.油錶指針永遠都在0,必要時也得打開油箱看高度,除此之外別想考驗它的極限,小心罷工給你看.