星期四, 3月 31, 2005
星期一, 3月 28, 2005
Memo : Books to buy
MPEG4.
.天龍可以加入會員了,不用身分證字號。
會員卡scan後mail過去可以得到授權碼,
可以用7-11取貨。
可以用ATM。
英文大考驗-台灣小吃篇
在 http://www.longwin.com.tw/~jon/blog/archives/cat_ae.html 看到的
-----------------------------------------
早 餐~
燒餅 Clay oven rolls
油條 Fried bread stick
韭菜盒 Fried leek dumplings
水餃 Boiled dumplings
蒸餃 Steamed dumplings
饅頭 Steamed buns
割包 Steamed sandwich
飯糰 Rice and vegetable roll
蛋餅 Egg cakes
皮蛋 100-year egg
鹹鴨蛋 Salted duck egg
豆漿 Soybean milk
米漿 Rice & peanut milk
飯 類~
稀飯 Rice porridge
白飯 Plain white rice
油飯 Glutinous oil rice
糯米飯 Glutinous rice
滷肉飯 Braised pork rice
蛋炒飯 Fried rice with egg
地瓜粥 Sweet potato congee
麵 類~
餛飩麵 Wonton & noodles
刀削麵 Sliced noodles
麻辣麵 Spicy hot noodles
麻醬麵 Sesame paste noodles
鴨肉麵 Duck with noodles
鵝肉麵 Goose with noodles
鱔魚麵 Eel noodles
烏龍麵 Seafood noodles
榨菜肉絲麵 Pork , pickled mustard green noodles
蚵仔麵線 Oyster thin noodles
板條 Flat noodles
米粉 Rice noodles
炒米粉 Fried rice noodles
冬粉 Green bean noodle
湯 類~
魚丸湯 Fish ball soup
貢丸湯 Meat ball soup
蛋花湯 Egg & vegetable soup
蛤蜊湯 Clams soup
蚵仔湯 Oyster soup
紫菜湯 Seaweed soup
酸辣湯 Sweet & sour soup
餛飩湯 Wonton soup
豬腸湯 Pork intestine soup
肉羹湯 Pork thick soup
花枝湯 Squid soup
花枝羹 Squid thick soup
甜 點~
愛玉 Vegetarian gelatin
糖葫蘆 Tomatoes on sticks
長壽桃 Longevity Peaches
芝麻球 Glutinous rice sesame balls
麻花 Hemp flowers
雙胞胎 Horse hooves
冰 類~
綿綿冰 Mein mein ice
麥角冰 Oatmeal ice
地瓜冰 Sweet potato ice
紅豆牛奶冰 Red bean with milk ice
八寶冰 Eight treasures ice
豆花 Tofu pudding
果 汁~
甘蔗汁 Sugar cane juice
酸梅汁 Plum juice
楊桃汁 Star fruit juice
青草茶 Herb juice
點 心~
蚵仔煎 Oyster omelet
棺材板 Coffin
臭豆腐 Stinky tofu
油豆腐 Oily bean curd
麻辣豆腐 Spicy hot bean curd
天婦羅 Tenpura
蝦片 Prawn cracker
蝦球 Shrimp balls
春捲 Spring rolls
雞捲 Chicken rolls
碗糕 Salty rice pudding
筒仔米糕 Rice tube pudding
紅豆糕 Red bean cake
綠豆糕 Bean paste cake
豬血糕 Pig's blood cake
糯米糕 Glutinous rice cakes
蘿蔔糕 Fried white radish patty
芋頭糕 Taro cake
肉圓 Taiwanese Meatballs
水晶餃 Pyramid dumplings
肉丸 Rice-meat dumplings
豆干 Dried tofu
其他:
當歸鴨 Angelica duck
檳榔 Betel nut
星期五, 3月 25, 2005
Bookmark
http://savannah.nongnu.org/download/avr-libc/
AVR Sample Module Library : AVR外接chip的library module.
http://hubbard.engr.scu.edu/embedded/avr/avrlib/docs/html/main.html
星期四, 3月 24, 2005
Kermit File Transfer
特性
- 一次(一個session)傳送一個檔案
- data 以block的方式傳送,一個block最多100 byte
- receiver收到每個block都要做 acknowledges
- 使用check sum 作error detection
- 傳送中abort的話要整個file重新傳送
Sequence
- Client ready,送出NACK (Negative Acknowledge) 給server。Server回應S (Initialization),之後送出包含file name的F (File Header) packet。
- 用D (File Data) packet來送 file data。
- End of Transmission 用 Z (End of File) packet 來通知。
- Server 要 terminate session 用 B (End of Batch) packet
- Server 的每一個packet,Client都要送出 acknowledge packet.
- Client 或 Server timeout 時都要送出 T (timeout) packet.
- E (Fatal Error) packet會terminate session.
Packet 格式
Start of Packet : 1 byte - 0x01
Data Block Length : 1 byte - 0x23 + Data block length
Packet Sequence : 1 byte - 0x20 + packet sequence number
Packet Type : 1 byte - reference below ..
Data block : N byte
Check Byte : 1 byte
End of Packet : 1 byte - 0x0D
Packet Type
'N' : NACK - datablock contains no data
'S' : Initialization - datablock contains initialize parameters
'F' : File Header - datablock contains the filename
'D' : File Data - datablock contains the file data
'Z' : End of fil - datablock contains user-selectable attribute
'B' : End of batch - datablock contains no data
'T' : Timeout delay exceed - datablock contains no data.
'E' : Fatal Error - block contains no data, transfer will be aborted.
Sequence
initialize
NCAK
Client----------->Server
<----------
S & F
Data transfer
D
Client <---------- Server
----------->
ACK
End Transder
Z
Cient <------------ Server
------------->
ACK
Client <----------- Server
B
星期三, 3月 23, 2005
星期二, 3月 22, 2005
完工: 將menu和移到external data
設計上所有osd的Menu structure都是static宣告的。
所以可以全部搬到external memory space (flash)。
這樣code space就可以省下。
利用link script已經寫好的eeprom section.
因為eeprom自己管理,所以不用compiler管理。
借用eeprom section,將所有menu data移到 eeprom section.
(宣告時加 section space-specify word)
為external memory data寫read function (抄)
修改所有access menu的code,將read from progmem改為read from eeprom.
move font to 2nd sector.
OK! (p07)
原.text section size : 0x1c6a4
修改後 .text size : 0x1816c
program memory size是 20000.
遇到的問題
- password無法動作 : gcc的bug ? 將某function的register specifier刪掉ok.
- password無法動作 : 有些menu data access function用compiler的,不是用一般define的
- time可以修改,無法設定: 原source code的bug.
- 當機: 有些menu忘記先宣告eeprom的定義
後記:3/23 , merge w enos' latest verion ok : 2.0
星期四, 3月 17, 2005
New NB install Application
MSN 7.0 beta
Marble Mouse (trackball) driver
TUGZIP zip/unzip tool
editor
ClocX
NVU
WinAvr - D:
SourceNavigator
問題:
touchpad的sliderbar不能和firefox配合。
marble mouse 的driver不能設定small button.
TUGZIP的shell extension導致explorer當機,將shell extension改少後OK。
星期三, 3月 16, 2005
今天領到.. Notebook ASUS A3100L
SP4.
裝好output2002,設定mail account OK (exchange server)
裝好office。
原來這裡的password是不能自己改的,由MIS決定。
default password是識別證上的號碼。
==>所以只好改administrator的password (自己習慣的)。
因為沒有Win2000 install CD (和driver ?),所以還是先gost起來再安裝東西好了。
HD 36 (40?) G.
P1 : 6 G. NTFS.
P2: 30G. NTFS.
只裝了MSN 7.0b
Install printer driver - hp laserjet 1300
新增列表機--本地列表機--standard TCP/IP -- ip 192.168.192.133 (name隨便)
printer driver - 沒有,選windows update,會出現hp 1300 PS。
安裝完成,等1 min download and install driver。
print test page ok.
新的directjep有web interface,所以用
http://192.168.192.133 就可以access到jetdirect.
星期二, 3月 15, 2005
今天領到..and download procedure
Monitor一台 : 黑白
download cable.
80G HD.
install US232A driver : 使用uc232a_xp_15這個driver (from gmail file archieve)
38400.8N1.no flow control.
enter -> # prompt
help -> help messsage
login -> input password
load -> prompt
use kermit protocol, choose *.hfx.
once complete , it restart automatically.
為防止重複燒錄,會檢查版本日期,一樣的話就abort。
星期一, 3月 14, 2005
Memory Sections
The .text Section
.text section內含所有instruction部分,這個section被區分為initN和finiN等幾個部分
Note:
sram的使用量則是.data和.bss的總合
The .data Section
這個section包含所有static,有初值的data。例如
char err_str[]="Your program has died a horrible death!";
struct point pt = { 1, 1};
如果要指定.data section的起始位置,可以在compile加上-Wl,-Tdata,addr 這個option,addr就是設定的data sector起始位置。要注意的是addr必須要加上0x800000的offset,這樣linker才知道.data是在RAM space。
說明
因為AVR是harvard架構,所以linker script將RAM的位址(virtual memory address)指定在0x800000-?,所以屬於RAM的資料都要加上0x800000的offset。
所以沒有加上0x800000的話,linker會把.data的.noinit部分放在flash (.text)區域,會產生錯誤。
The .bss Section
沒有初始化的變數
The .eeprom Section
安排eeprom的空間
The .noinit Section
是.bss section的一部分,和一般.bss內的變數不一樣的是,一般宣告,沒有初始化的變數在main執行前都會被初始為0。
但是宣告
所以這樣宣告
一樣,可以用-Wl,--section-start=.noinit=0x802000指定這個section的起始位置。
The .initN Section
在main之前,各階段的init code。
.init0:
The .finiN Section
類似.initN,不過是在main呼叫exit()後依次執行的部分。
由9開始執行
.find9:
Using Sections in Assembly Code
#include <avrio.h>
.section .init1,"ax",@progbits
ldi rd0,0xff
out _SFR_IO_ADDR(PORTB),r0
out _SFR_IO_ADDR(EERB) ,r0
Note:
"ax"的a代表allocable, x是executable,@progbits代表有reference@progbits中的data.
Using Sections in C Code
#include <avrio.h.
void my_init_portb(void) __attribut__((naked)) \
__attribut__((section(".init1")));
void my_init_portb(void)
{
outb(PORTB,0xff);
outb(DDRB ,0xff);
}
這個 function (my_init_portb)因為在.init1 section,所以在main()之前就會被執行。
Plane : on AVR . NCHP and DV_
- familiar w Atmega128
- familiar w gcc on AVR (winavr)
- simulavr and gdb
Job : 將MENU的定義由program memory移到external memory (目前是flash memory).
Atmega128的external memory address range : 64k(ad0-ad15).
所以目前用bank selector (以program io作高位址ad16-ad19).
問題:gcc的loader要修改,增加一個section,將這部分的data放到那裡。
星期六, 3月 12, 2005
星期五, 3月 11, 2005
memo . for video
inter frame coding
RTP : Real Time Protocol
RTSP : Real Time Streaming Protocol
Full D1 : 720x480
Site Memo : GPL Video Server (and Client)
以下是他的說明
Video server is a streaming video server which feeds a Java applet/application for display. The updates are rather slow, somewhere in the 10 frames/second range on a PIII. The server is written in Bigloo scheme and C. The client is written in Java.
Site Memo : Video for Linux (V4l)
Linux上有關Video的 resource.
以下是他的說明:
Welcome to the Video for Linux resources page. Here you will find links to programs and information about this API which actually handles more than just video these days. Video sources include TV cards and quickcams, but there are also audio sources like radio cards.
星期四, 3月 10, 2005
CCIR 已經不存在,改歸屬於ITU了
The CCIR no longer exist - it has beed absorbed into the parent body, the ITU.
For a given "CCIRxxx" specification, see "BT.xxx"
星期二, 3月 08, 2005
Notes on Video
Component video : RGB or luminance-chrominance 的同義型(YIQ or YUV)
Composite video : color (or luminance ) 放入載波( carrier wave)
S video : ?
Analog Video
Analog video使用掃描線組成一個frame (一個螢幕)
NTSC
525 scan lines perframe. 30(29.97) frame per sec.
Aspect ratio - 4:3
Interlaced, each frame is divided into 2 field, 262.5 lines/field.
20 lines reserved for control information at the beginning of each field.
So the maximum of 485 lines of visible data
每個frame分為兩個field,分兩次掃描,每個field只包含1/2 frame的掃描線,所以每個frame只有262.5個掃描線
又每個field的前20 line用來儲存control information,所以兩個field總共用掉40 line的掃描線。
Laserdisc and S-VHS have actual 420 lines.
Ordinary TV - 320 lines.
Color representation
NTSC 使用YIQ color model
composite = Y + I cos(Fsc t) + Q sin(Fsc t)
Fsc : frequency of color subcarrier.
人眼對Y最敏感,依次是I,Q。 NTSC信號的Y使用4MHz,Q 1.5MHz,Y 0.6MHz。
PAL
625 scan lines per frame. 25 frames per sec
Aspect ratio - 4:3
Color representation
使用YUV(YCbCr) colour model
Composit = Y + 0.49 U sin(Fsc t) + 0.877 V cos(Fsc t)
Digital Video
Digital Video幾乎都使用component video
Chroma subsampling
為減少資料量,將人眼比較不敏感的信號的sampling rate降低(也就是說,使用較低解析度來表示),
因為人眼對Y最敏感,所以將Cb,Cr採用較低的解析度來表示。
一般subsampling的表示有:
4:2:2
水平解析度降低微1/2,每兩點合併為一點。
4:1:1
水平解析度降低微1/4,橫向每4點合併為一點。
4:2:0
水平和垂直的解析度都降1/2,所以也是每4點合併為一點,但是是縱橫2x2的方塊。
* 一般JPEG和MPEG都使用4:1:1和4:2:0
Digitial Video的CCIR標準
CCIR (Consultative Committee for Internation Radio)
CCIR 601 525/60 | CCIR 601 625/50 NTSC | CIF PAL/SECAM | QCIF NTSC | |
Luminance resolution | 720 x 485 | 720 x 576 | 352 x 240 | 176 x 120 |
Chrominance resolution | 360 x 485 | 360 x 576 | 176 x 120 | 88 x 60 |
Color Subsampling | 4:2:2 | 4:2:2 | ||
Field/sec | 60 | 50 | 30 | 30 |
Interlacing | Yes | Yes | No | No |
* CIF ( Common Intermediate Format) is temporary standard, for about VHS quality.
Install Dictionary Plugin in Firefox
貼過來的
===========================================
安裝 DictionarySearch!!!
我們進去看看吧,通常套件的安裝,就在畫面上方的 resources 那行的 Installation 連結可以找到。點下去,我們就能看到:Install Dictionary Search (version 0.4).
用滑鼠點一下,就能裝了。裝好後,要重新啟動瀏覽器。
(如果有已經抓下來,或是人家收集好現成的,只要把 XPI 檔案拖拉進 Mozilla 視窗就可以安裝了)
重開後,去個英文網站,用滑鼠 Mark 一個英文單字,然後在上面右鍵,跳出選單中,是不是就有個「Dictionary search for "XXXX"」的功能?點下去,就會在新分頁中到 dictionary.com 查詢你指定的這個字。
「什麼啊?才dictionary.com一個站台啊?還英文的耶…」
現在教大家設定擴充套件的方法。通常擴充套件的設定會在幾個地方。
1.在「工具」功能表中
2.在「偏好設定」中
Dictionary Search 正是在「偏好設定」中…
我們可以自己設定要使用的線上字典,最多四個,本來是應該去自己看想使用的那個網頁的原始碼,去找 url 的,我在這裡提供幾個讓大家參考:
奇摩:
text: Search "$" in KIMO Dictionary
url: http://tw.dictionary.yahoo.com/word/$
顏氏線上字典:
text:Search "$" in Yan's Online Dictionary
url: http://www.onlinedict.com/servlet/MobiDictLookup14?WoRd=$
教育部國語詞典:
text: Search "$" in Chinese Dictionary
url:http://140.111.1.22/mandr/clc/dict/dict/newsearch.cgi?Database=dict&QueryScope=Name&QueryString=$
設定好後,試試看吧… [/url]
星期日, 3月 06, 2005
zaurus c700 all
星期五, 3月 04, 2005
休假 - day 2
看牙醫,洗牙,本來想順便補一補牙的,竟然還要約下一次。
因為健保卡刷一次只能作一次療程?
其實多付錢到沒關係,我怕的是沒有時間,停車位。
下午看了蝴蝶效應和記憶裂痕。
並不是故意挑的,想不到這兩部片還互相呼應呢,
一個是回到過去改變現在,
一個是看到未來所以從現在改變未來。
我絕得蝴蝶效應比較好看。
星期四, 3月 03, 2005
Bye Bye 吳博士
休假 - day 1
星期三, 3月 02, 2005
Procedure to Quit
- 與主管談
- 到人資向阮先生拿離職單,他會向主管確認後再通知去拿。
- 實際上是在和主管談過後自己去拿,拿的時候阮先生會問一下為什麼想走。
- 離職單依照職級不同,要簽到不同的主管。
- 最後一天工作時,要交回離職單和識別證,並且準備兩個信封(一般的平信就可以),寫好收件人和地址,人資會將離職資料,健保單寄過去。
- 離職原因一般會寫”生涯規劃”。
- 離職單要寫”到職日”,在OA的"員工資料”可以查到。
- 離職單交老闆簽,簽過再交給下一個老闆(上一級),會有一級的老闆將離職單收走,放卷宗交到上面。
- 要確認老闆已經簽了,否則會一直押在那。
- Wait.助理會將簽完的離職單拿給你,並且有一個負責資產列表,問老闆要轉給誰,之後請助理移轉。
- OK後連同兩個信封,寫好收件人和住址,連同識別證交給人資阮先生旁邊的小姐。
慘,老闆現在才說要延一個月。可是我已經延過一次,這樣一定會被認為沒誠意。
果然2005沒有一個好的開始。
要整理的東西
- 個人帶來的書和工具要寄得帶走
- Mail要寄得將Private和公事分開,如果有password保護,可以New一個個人資料夾without password,將原來的mail都移過去。
- 如果使用公司的PC,要寄得將所有非公司的軟體移除。
- 如果有account上的疑慮,將browser的temp file移除。
- 移除MSN。
- 注意一下,如果有用公司mail account註冊的resource,要改account。
Don't forget
- 滑鼠
- iPaq (OK)
- PDA cable - iPag & Palm (OK)
- PDA charger (OK)
- Books : building blocks (OK)
- Books : uC/OS
- palmpix (OK)
- 杯子
- 衣服
- 墊子 (OK)
- 維他命 (OK)
- 茶葉
- 小抽屜要檢查
這個很cool喔 - Ajax - Gmail大量使用的...
這原來是在 Jacky'sBlog
========================================================
Ajax 新浪潮
最近在 Adaptive Path 看到一個新的名詞:Ajax,究竟是什麼來的呢?原來在上一年漸露鋒芒的 XMLHttpRequest,也就是這一年來 Google 不停在玩的技術,用在 GMail , Google Suggests , Google Map 上。Ajax 的全寫是 Asynchronous JavaScript + XML,這個寫法是 Adaptive Path 所自創的縮寫,他們形容一個 Ajax 的網絡應用程式,有以下的特質:
- 用 XHTML + CSS 作合符標準的表達
- 用 Document Object Model (DOM) 作動態顯示和互動
- 用 XML and XSLT 作為資料交換和操作
- 用 XMLHttpRequest 取得非同步資料
- 用 Javascript 將以上種種結合在一起
這個技術的主角 XMLHttpRequest 的最主要特點,在於能夠不用重新載入整個版面來更新資料,也就是所謂的 Refresh without Reload。因為與伺服器之間的溝通,完全是透過 Javascript 來實行,也就沒有傳統網頁的表單發送而引至的整版重載的 overhead,帶給用戶很慢的感覺。又因為使用 XMLHttpRequest 本身傳送的資料量很小,所以反應會更快,也就讓網絡程式更像一個桌面程式。
Ajax 的技術表明了要使用 XML + XSLT 作為資料格式,其實並非必要, XMLHttpRequest 本身並沒有限制資料格式,可以是 XML 又或是純文字格式的文字,然後到 Javscript 的時候就可以隨自己的喜歡來操作了。例如在 Google Suggests 裏,回傳的資料其實本身就是 Javscript 。
其中一個 Ajax 的應用,可用於表單的資料核對。表單核對是每一個網絡應用程式必需一環,確保使用者輸入正確的資料後,才真正的進行動作。以往的做法是用 Javascript 或伺服器來做,如果兩邊都寫,那麼就會產生兩堆不同的核對程式碼,管理很不方便。用了 Ajax 的方法,就可以完全將核對邏輯放在伺服器端,客戶端的 Javascript 程式,則只是傳送用戶所輸入的資料給伺服器核對,如果有錯誤的話,則回傳錯誤訊息。
不過,用 Ajax 的方法究竟要如何傳送整個表單呢?如果只是單純的一、兩個輸入的話,則可以用簡單的 GET 的方法來傳送這一、兩個輸入資料。但如果表單上面有很多不同的輸入,可以有自動的方法去取得表單上的各個資料然後送出,而不是要逐個輸入值寫入 GET 的 url 裏?這要看看發展下去有沒有好用的 library 代勞。
另一個問題是,用戶可能基於安全的理由而將瀏覽器的 Javascript 關掉,所以設計時要考慮到此一點:究竟是要讓用戶必需開啟 Javascript 才可以用,還是設計到表單可以單獨的運作, Javascript 則只是增加實用性 ( Unobtrusive Javascript )?這當中又會有很多考慮,開發上有一定的難度。
雖然如此, 在這一年有關 Ajax 技術的發展會更多,我們會看到很多不同的網站,運用這種技術來增加頁面的互動性和實用性,大家拭目以待。
wxPython : getting started
如果要產生一個windows application的物件,要用wxFrame(也是從wxWindow衍生的class)。
wxFrame實作了所有windows application需要的動作反應,像resize,move,get, lose focus.. etc。
所以最簡單的一個windows prorgram:
from wxPython.wx import *
app = wxSimpleApp()
frame = wxFrame(None,-1,"Hello World")
frame.Show(1)
app.MainLoop()
wxSimpleApp()是application的主體,
wxFrame是application的顯示(視窗)部分。
在Window中加入edit component (加入編輯的能力)
from wxPython.wx import *
class MainFrame(wxFrame):
def __init__(self,parent,id,title):
wxFrame.__init__(self,parent,wxID_ANY,title,size=(200,100),
py2exe : 將python script轉為EXE檔
Install py2exe:
download & execute py2exe-0.5.4.win32-py2.4.exe (for python2.4)
一樣的,安裝時會自動尋找python2.4的安裝目錄,並且自動安裝到python的目錄
開始
先將自己的application準備好(架設叫simple.py)
寫py2exe的setup script:
# setup.py
from distutils.core import setup
import py2exe
setup(console=["simple.py"])
執行
python setup.py py2exe
會產生一個build和dist目錄,dist裡面會包含所有需要的檔案。
目錄裡的simple.exe就是編輯過的執行檔。
build是編譯過程的暫存檔。
setup(console=["simple.py"]) 是用來編譯一個console program,
這樣的exe檔執行時會開啟一個console windows。
如果要編譯一個window program,不要開啟console,要寫
setup(windows=["simple.py"])
另一個說明