為了編譯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

有需要再學吧....

jchuang1977 發表在 痞客邦 留言(0) 人氣()



http://www.facebook.com/photo.php?fbid=3335933810514&set=a.2303620203319.119885.1633655490&type=1




ifttt puts the internet to work for you. via task 863516

jchuang1977 發表在 痞客邦 留言(0) 人氣()



http://www.facebook.com/photo.php?fbid=3329368966397&set=a.1813474029971.95872.1633655490&type=1




ifttt puts the internet to work for you. via task 863516

jchuang1977 發表在 痞客邦 留言(0) 人氣()

目前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,
文章標籤

jchuang1977 發表在 痞客邦 留言(0) 人氣()

原本是要用
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
文章標籤

jchuang1977 發表在 痞客邦 留言(0) 人氣()



http://www.facebook.com/photo.php?fbid=3328723310256&set=a.1813474029971.95872.1633655490&type=1




ifttt puts the internet to work for you. via task 863516

jchuang1977 發表在 痞客邦 留言(0) 人氣()

最近迷上魔法風雲會
不過要從規則K起

魔法風雲會完整規則中譯版

jchuang1977 發表在 痞客邦 留言(0) 人氣()

最近需要功能較多的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); };

文章標籤

jchuang1977 發表在 痞客邦 留言(0) 人氣()

最近使用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
same ant
第一個比較簡單,在連線之前, 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
different 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, 這時, A<->B的連線也建立了


3. multi level NAT
multe 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:55000<->155.99.25.11:62005
10.0.1.1:45000<->155.99.25.11:62000

但什麼條件下會同時轉呢?
文章標籤

jchuang1977 發表在 痞客邦 留言(0) 人氣()