本周人數:18
honkia:
覺得 firefox 越來越慢…
Rex: 因為網頁會越積越多,執行就變得越來越慢,可以裝 "PlacesCleaner" 收藏庫清潔工 ( Tsung, clyde 也推薦!! )
Openlab.Taipei 的介紹,
台北數位藝術節,
"唉,我是 x200 耶.."
someone: "資訊展嘛"
Thinker: "x200 耶,怎麼會有鬼影…"
yan:
最近在看 Unix System V/386 和 Linux char device 和 framebuffer 方面
又另外想到我們常用的一些終端機下的軟體(ex: vim、……), 除了擴充模組外, 另一方面就是提供的介面和熟悉的鍵盤控制(終端控制部份)
所以以下分享有一些 terminal 或 curses 還有 sysv 相關的東東
char device / framebuffer / curses
gitkeys 和 showkey 可以看到一些鍵盤掃描碼或是輸入的顯示字元
tput //初始化或查詢終端機的相關設定 ( define by terminfo )
stty -a // can show the the capability value
setterm 、 stty 和 tput 也可以設定終端機 (如反白、打密碼時不在螢幕顯示輸入的字元、…)
setterm -reverse [off]
stty [echo | -echo]
tput -rev
tty : teletype
tty 命令可以顯示目前的終端機種類 (可以在 Console 模式、X 下的 terminal、Console 下用 screen 輸入看看)
tty1 虛擬終端1
ttys1 序列埠終端1 (如 win 的 COM1)
ptyp0 主虛擬終端 Master PTY
ttyp0 從虛擬終端 Slave PTY
ptm - pty master <-> /dev/pts/N
wycc: terminfo 代替了 termcap, 再早一點有 termlib, termios 是比較底層的
General procedure for building a terminal description: // from UNIX system V-386 programmer's guide
1. Give the known names of the terminal.
2. Learn about, list, and define the known capabilities.
3. Compile the newly-created description.
4. Tet the entry for correst operation.
5. Go back to step 2, add more capabilities, and repeat, as necessary.
tic -v myterm.ti // translate the terminfo data base into the compiled formate
infocmp -I linux // print out terminfo description, (linux : terminal name, /lib/terminfo/l/linux)
infocmp -C linux // print out termcap description
captoinfo // convert a termcap desccription into a terminfo description
curse 會讀取 terminfo 的資料
strace -o tracefile xxx.php
看看 trace 檔可以看到, 有時我們在 curses 下需要獲得或控制終端機, 就會用到 terminfo
#!/usr/bin/php -q
<?
$ncurses = ncurses_init();
$mainscreen = ncurses_newwin(0, 0, 0, 0);
ncurses_getmaxyx(&$mainscreen, $lines, $columns);
for($i = 0; $i < $lines; $i++)
{
if(($i%10)+1 == 10)
{
ncurses_attron(NCURSES_A_REVERSE);
ncurses_mvaddstr($i, 0, ($i%10)+1);
ncurses_attroff(NCURSES_A_REVERSE);
}
else
{
ncurses_mvaddstr($i, 0, ($i+1)%10);
}
ncurses_refresh();
}
for($i = 0; $i < $columns; $i++)
{
if(($i%10)+1 == 10)
{
ncurses_attron(NCURSES_A_REVERSE);
ncurses_mvaddstr(0, $i, ($i+1)%10);
ncurses_attroff(NCURSES_A_REVERSE);
}
else
{
ncurses_mvaddstr(0, $i, ($i+1)%10);
}
ncurses_refresh();
}
ncurses_getch();
ncurses_end();
?>
curses 的運作與操作以後再補充 :)
IPC (message、semaphore、shared memory)
ipcs 可以用來看 ipc 的狀態, 提供 ipc 的 information
ftok 函式可以把 path 跟 project identifier 轉成 sysv 的 ipc key
semaphore
ipcs -s
ipcs -s -i semid
範例下次重新 demo
wycc:
terminfo 代替了 termcap, 再早一點有 termlib, termios 是比較底層的
Mat:
dbus c++ 是我目前用過最好用的 IPC library
dbus 開始學習時,會對專有名稱不好掌握。
可以先裝 d-feet 跟 python dbus 來試玩玩看,這樣可以協務嘗握 dbus 的行為跟設計方向
http://www.blogjava.net/zarra/archive/2008/07/11/214161.html
pct:
來分享一下 zsync, 就是比對遠方 server 檔案跟你的檔案有不同時,可以來 sync,
請參照影片,從遠端更新 ubuntu 9.10 iso