為了編譯exfat ,
http://code.google.com/p/exfat/wiki/HOWTO
今天又遇到一個 新的編譯工具,scons
不知道怎麼用......
google一下
http://fourdollars.blogspot.com/2009/06/scons.html
http://www.scons.org/documentation.php
有需要再學吧....
- Mar 30 Fri 2012 10:40
scons 新的編譯工具
- Mar 29 Thu 2012 23:12
New set on Flickr: 樂高 LEGO.http://bit.ly/HlolHW
![]() http://www.facebook.com/photo.php?fbid=3335933810514&set=a.2303620203319.119885.1633655490&type=1 |
|||
|
- Mar 28 Wed 2012 22:11
用p990看影片
![]() http://www.facebook.com/photo.php?fbid=3329368966397&set=a.1813474029971.95872.1633655490&type=1 |
|||
|
- Mar 28 Wed 2012 20:37
exFAT format
目前kernel 2.6.x 好像還不支援 exFAT
只好上網查一下
wiki
http://zh.wikipedia.org/zh-hant/ExFAT
google project
http://code.google.com/p/exfat/
--> 不知怎麼弄 ,它用 scon 去 make ??
大家都在討論的 patch , 第一個掛了, 第二個OK
http://userweb.kernel.org/~hirofumi/exfat/exfat.tar.gz
http://www.munted.org.uk/programming/exfat.tar.bz2
--> 2.6.31 可以work , 2.6.21 不行, 因為 kmem_cache_create function 版本不合
同場加映 有人放上 2.6.36 的 patch
this patch makes the exFAT driver compatible with Linux 2.6.36.
-Tobias
diff -urN a/exfat/exfat.h b/exfat/exfat.h
--- a/exfat/exfat.h 2009-02-08 00:21:25.000000000 +0100
+++ b/exfat/exfat.h 2010-11-23 16:16:28.000000000 +0100
@@ -8,6 +8,7 @@
#include
#include
+#include
#include "exfat_fs.h"
/* FIXME: remove this */
diff -urN a/exfat/super.c b/exfat/super.c
--- a/exfat/super.c 2009-02-08 00:20:52.000000000 +0100
+++ b/exfat/super.c 2010-12-08 13:41:51.000000000 +0100
@@ -58,8 +58,11 @@
kmem_cache_free(exfat_inode_cachep, EXFAT_I(inode));
}
-static void exfat_clear_inode(struct inode *inode)
+static void exfat_evict_inode(struct inode *inode)
{
+ truncate_inode_pages(&inode->i_data, 0);
+ invalidate_inode_buffers(inode);
+ end_writeback(inode);
exfat_cache_inval(inode);
exfat_detach(inode);
}
@@ -268,8 +271,7 @@
.alloc_inode = exfat_alloc_inode,
.destroy_inode = exfat_destroy_inode,
// .write_inode = ext4_write_inode,
-// .delete_inode = ext4_delete_inode,
- .clear_inode = exfat_clear_inode,
+ .evict_inode = exfat_evict_inode,
.put_super = exfat_put_super,
// .write_super = ext4_write_super,
.statfs = exfat_statfs,
- Mar 28 Wed 2012 20:21
快速做 jpg 的縮圖
原本是要用
djpeg -scale 1/50 $i | cjpeg -quality 10 > ./.thumbnail/TN_$i
做快速縮圖
但有人說jpg exif 資訊就有包含縮圖了!!!!
真是井底之蛙啊, 之後還搞縮圖搞很久.......
反正就是用 jhead 的指令抓縮圖出來囉
http://www.sentex.net/~mwandel/jhead/
jhead -st "TN_&i" iphone.jpg
--> 會做出 TN_iphone.jpg 的縮圖
同場加映
jpg 的 format
http://en.wikipedia.org/wiki/JPEG_File_Interchange_Format
- Mar 28 Wed 2012 19:11
棋棋難得配合我拍照
![]() http://www.facebook.com/photo.php?fbid=3328723310256&set=a.1813474029971.95872.1633655490&type=1 |
|||
|
- Mar 28 Wed 2012 13:39
魔法風雲會
最近迷上魔法風雲會
不過要從規則K起
魔法風雲會完整規則中譯版
- Mar 28 Wed 2012 13:28
syslog-ng
最近需要功能較多的syslog 功能
所以把syslog-ng port 進我們的產品
config file 有點複雜, 不過參考下面的網址修改就好
http://note.tcc.edu.tw/161.html
http://www.suse.url.tw/sles10/lesson9.htm
最後我的config 像下面一樣
destination log_serv { udp("111.251.230.217" port(514)); };
destination log_serv1 { udp("111.243.155.104" port(514)); };
destination local { file("/var/log/messages"); };
source src { unix-stream("/dev/log"); internal(); };
filter f_emerg { level(emerg); };
filter f_normal { level(*); };
log { source(src); filter(f_emerg); destination(log_serv); };
log { source(src); filter(f_normal); destination(log_serv1); };
log { source(src); filter(f_normal); destination(local); };
- Mar 28 Wed 2012 13:09
Haripin (loopback) NAT translation
最近使用Cdrouer測試產品時
有個NAT 名詞 hairpin
查了一下
這個網站解釋了很多NAT P2P的技術,值得一看
P2P最簡單的作法是有一台 server 有中間當橋
1. relay
2. connection reversal
但這2個作法,那台server需要大量的頻寬, 因為2個endpoint所有的流量都會從這個 server 進去
所以有了另一個方法
UDP holepunching
這個方法就是為了不讓中間的server 太忙,讓2個endpoint直接連線
但是還要需要一台 Rendezvous Server,
記錄2個endpoint各自的 public ip+port , private ip+port
之後這兩個endpoint 要連線, 這個server 便會傳給各自的public+private ip+port
讓他們直接連線
但這個又分成3種網路階層
1. endpoint在同一個NAT
2. endpoint在不同NAT
3. endpoint 在不同NAT,而且是2層NAT的網路架構
這3種的技術又不太一樣
1. 同個NAT
第一個比較簡單,在連線之前, A,B都跟S留下各自的 private+public ip/port (左邊的圖)
之後 A想連到B時, 會通知S , S會傳給A 有關B的 private+public ip/port (中間的圖)
S也會同時傳給B 有關A private+public ip/port, 叫B準備連線
A這時會先送出主動連線的UDP packet 到 B的public 和 private ip
理論上 送到 B 的private ip 會先成立,因為都在同個NAT,
所以連線建立了
2. 不同NAT
第二個複雜了點,在連線之前, A,B都跟S留下各自的 private+public ip/port (左邊的圖)
之後 A想連到B時, 會通知S , S會傳給A 有關B的 private+public ip/port (中間的圖)
S也會同時傳給B 有關A private+public ip/port, 叫B準備連線
A這時會先送出主動連線的UDP packet 到 B的public 和 private ip
理論上 送到 B 的private ip 是送不出去的,
而送到B 的public ip 會被DROP,但這時A 的NAT開了一個洞是 A->B的 udp session
這時, B會發出去主動連線到A 的 public IP , 這個也會在B的NAT開了一個洞是 B->A的 udp session
這個 B->A的UDP 封包就可以穿過A的NAT, 這時, AB的連線也建立了
3. multi level NAT
第三個有點複雜,左邊的圖跟上面2個都一樣
但是到了中間時,當A發出主動連線到B , 實際上到了NAT C
NAT C 會發現這個連線是要到自己的domain,
如果NAT C 有支援hairpin (loopback) NAT translation ,
會把這個連線的 source and destination ip 同時轉換
10.0.1.1:45000->155.99.25.11:62005 這個組轉換成155.99.25.11:62000->10.0.1.2:55000,
所以NAT A也開了洞,再等到 NAT B 也送來連線, 這個p2p連線就建立了
但有個疑問是NAT C 要怎麼知道,要將source/destination 同時轉呢?
我猜是原本在A,B 跟S連線留下的session ,
10.0.1.2:55000155.99.25.11:62005
10.0.1.1:45000155.99.25.11:62000
但什麼條件下會同時轉呢?