2010年11月28日 星期日

DFG @ perl

早在之前曾經探討過在 "high level ALU numbers @ estimator" 主要是分析每個 block (always) 內所需要的 ALU 個數, 但這還必須考慮到每個 ALU 彼此之間的相關性, 判斷是否可以化簡還是可以做到 parallel..,之後在針對每個 ALU 的 time slide level 做調整, 如 ASAP(as soon as possible), ALAP(as later as possible)的演算法 ...可參考Data Flow Graphs Intro .這邊就不多做說明, 底下我們就用簡單的 syntax 來產生最簡單的 DFG graph, 之後我們可以用這個 graph 做基底加入 time wait, hw constrain, power ... 的 information. main.pl
my $dfg = DFG2Graph->new('c=(a+b)*c;');
   $dfg->run_text();

#   $dfg->dump_graph();
   $dfg->dump_graphviz();
project: https://github.com/funningboy/SOC_c_model/blob/master/DFG/main.pl Result : Ref: [PDF] Data Flow Graphs Intro http://en.wikipedia.org/wiki/Data_flow_diagram http://funningboy.blogspot.com/2010/09/alu-estimator-rtl-verilog.html

2010年11月26日 星期五

proxy website @ yahoo 999

最近因為 Yahoo 999 的問題卡了幾天, 沒想到透過 Mozilla Firefox + proxy website list 就可以解決了, 但是 proxy website 後端的 https 加密機制跟轉向過後的網址我們並不知道,只能透過 Mozilla 來處理 cookie 跟轉址的 methods. 底下用 perl 寫個簡單的 download 程式,並透過 proxy website....當然你也可以用這個方式來隱藏你的 ip, 不過最好不用連到需要登入的網站. 畢竟我們是透過 proxy 的方式. 說不定你的帳號密碼會被紀錄下來...XD mech.pl
   #!/usr/bin/perl
    #using proxy server to download your file...
    # author : sean chen
    # mail   : funningboy@gmail.com
    # 2010/11/26

    use strict;
    use warnings;
    use Data::Dumper;
    use File::Basename;

    my $path = $ARGV[0]
      or die "Must specify your download path \
              ex: http://xxx/xxx/xxx/jpg";

    # create a new browser
    use WWW::Mechanize;
    my $browser = WWW::Mechanize->new( env_proxy  => 1,
                                       keep_alive => 1,
                                       timeout    => 60 );

    $browser->cookie_jar(HTTP::Cookies->new());

    # proxy website 
    $browser->get("http://hidemy.biz/");

    # post form
    $browser->form_number(1);
    $browser->field("u", $path);
    $browser->click();

    #get new url
    my $url = $browser->uri;

    my @arr = split("\/",$path);

    open (oPtr,">$arr[$#arr]") || die "$!";
    if($browser->success()){
         binmode(oPtr);
         print oPtr $browser->content();
    } else {
       print $browser->status(); die;
    }
how to use it
perl mech.pl http://www.ccc.ccc/ddd/ddd.jpg

2010年11月23日 星期二

hot_or_not @ social network movie

最近看了一部好看的電影 "social network", 內容就請自行goole吧. 不果說真的現在社群的力量真是太強大了, 不像以前是靠 CPU 致富, 現在要靠 "社群&&網路" 摟...XD 不過回想到當初學生時代,那時候還很流行抽學辦,每次都要跟公關混熟不然拿到的都是張費紙.. .基於這樣的原因下, 想說透過 "自己->朋友1->朋友2->朋友3" 的分析找出最 hot/match 的選項, 這樣就不用巴結公關摟, 只需巴結你的朋友群, 再透過這個朋友認識下個朋友,依序認識到你最想要認識的...雖然說 facebook 已經提供了 "共通好友" 的功能,但還不能很陰險的把所有資料給抓出來,再進行分析比對. 底下就先寫個簡單的 sample layout view. 內部的分析之後再完成摟.
wretch       xxx@wretch.cc      :: 無名帳號
facebook     xxx@facebook.com   :: facebook帳號
relation     xxx->ddd->sss->your id
ps:       如何認識到 xxx?
          要從你的朋友 sss 再認識 ddd 就可以認識到 xxx

msn          xxx@msn.com        ::msn
yahoo        xxx@yahoo.com      ::yahoo 
match score  9                  ::跟constrain match 的值            
sample view HTML generator on line http://www.spiderweblogic.com/HTML-Tag-Generator.aspx XML parser http://www.xml.com/pub/a/98/09/xml-perl.html http://oreilly.com/catalog/perlxml/chapter/ch03.html YAHOO Error 999 http://answers.yahoo.com/question/index?qid=20090107150130AArM2zP proxy http://briian.com/?p=5661 http://kobesearch.cpan.org/htdocs/libwww-perl/LWP/UserAgent.pm.html#ua_gt_proxy_schemes_proxy_url proxy list http://freenuts.com/top-10-free-online-proxy-websites/ wget http://www.gnu.org/software/wget/manual/wget.html#HTTPS-_0028SSL_002fTLS_0029-Options

2010年11月11日 星期四

OS case stusy

1.mm(virtual memory -> physical memory) GDT ( Global Descriptor Table )
  • 0 NULL
  • 1 kernel code
  • 2 kernel data
  • 3 user space code
  • 4 user space data
entry point
  • base -> entry address
  • limit -> entry size
ex: gdt_set_gate(0, 0, 0, 0, 0); // Null segment gdt_set_gate(1, 0, 0xFFFFFFFF, 0x9A, 0xCF); // Code segment gdt_set_gate(2, 0, 0xFFFFFFFF, 0x92, 0xCF); // Data segment gdt_set_gate(3, 0, 0xFFFFFFFF, 0xFA, 0xCF); // User mode code segment gdt_set_gate(4, 0, 0xFFFFFFFF, 0xF2, 0xCF); // User mode data segment IDT(interrupt description table) Faults, traps and exceptions ex:
  • 0 - Division by zero exception
  • 1 - Debug exception
  • 2 - Non maskable interrupt
  • 3 - Breakpoint exception
TSS(task state segment) @ system_call store each tasks info to kernel schedule , such as eax,ebx,esp... ex: // A struct describing a Task State Segment. struct tss_entry_struct { u32int prev_tss; // The previous TSS - if we used hardware task switching this would form a linked list. u32int esp0; // The stack pointer to load when we change to kernel mode. u32int ss0; // The stack segment to load when we change to kernel mode. u32int esp1; // Unused... .... } paging @ virtual memory call block -> used hole -> unused level directory -> tables(1024) -> entries(1024) frame @ physical memory call 2.VFS and the initrd VFS (virtual file system) define the file loc, uid, and i_node link list ex : /usr/bin/ -> ./ls /dev/tty/ initrd (initial ramdisk) boot image loc floop, disc, usb, ... linux 0.0.1 http://kerneltrap.org/Linux/Dusting_Off_the_0.01_Kernel http://www.cppblog.com/jake1036/archive/2010/11/13/133530.aspx http://mapopa.blogspot.com/2010/07/error-bad-register-name-sil.html http://manpages.ubuntu.com/manpages/gutsy/man1/as86.1.html http://www.cppblog.com/jake1036/archive/2010/11/13/133530.aspx JAME'S micro kernel http://www.jamesmolloy.co.uk/tutorial_html/4.-The%20GDT%20and%20IDT.html http://www.osdever.net/tutorials/index http://en.wikipedia.org/wiki/Task_State_Segment http://www.faqs.org/docs/Linux-HOWTO/KernelAnalysis-HOWTO.html#ss5.4 x86 instruction set http://siyobik.info/index.php?module=x86 nasm http://www.nasm.us/doc/nasmdoc0.html

2010年11月9日 星期二

OrzMicroKernel case stusy && emulator

最近在研究Jserv大師 所寫的 "OrzMicroKernel", 果然是霧裡看花...有看沒有懂的地步,很多地方還是要靠 Google 來找答案...XD, 不過最重要的核心部份, 我想應該是 Schedule 摟. 可參考OS Kernel 相關閱讀與實作心得﹝一﹞,裡面會定義哪個 task 有使用權,是 Preemptive/Non-preemptive type, 以現今的 real time 系統下, 應該都有 support Preemptive 的架構. 底下我們就用 c 來實作個 Schedule emulator. 1.task 架構 利用 pthread 來模擬 task request os kernel 的型式. 分別會定義 task id, priority, time_out, work_time priority : 為 task 的使用優先權. 0>1>2.... time_out : 為 task 的 requirement time,表示這個 task 最低的容忍時間, 一但 time_out =0 時, 表示目前的 task 要立刻被執行, 可以 interrupt high priority 的 task. work_time : 為 task 所要 run 的時間. 2. queue 架構 normal queue : 為 task 存取的 queue emergency queue : 一但有 task 的 time_out=0, 立刻從 normal queue 中移入 emergency queue. emulator os 會先判斷 emergency queue是否為空, 如果為空的, 就 access normal queue. 做 一般 priority 判斷的結果. 如果不為空的, 則處理 emergency queue. Results:
   @iOS work on normal queue -> id @,0
@NORMAL queue
queue :: id  0,time_out :     9,priority :     0,work_time :     2
queue :: id  1,time_out :     2,priority :     1,work_time :     3
queue :: id  2,time_out :     4,priority :     2,work_time :     3

@EMERGENCY queue

   @iOS work on normal queue -> id @,0
@NORMAL queue
queue :: id  0,time_out :     8,priority :     0,work_time :     1
queue :: id  1,time_out :     1,priority :     1,work_time :     3
queue :: id  2,time_out :     3,priority :     2,work_time :     3

@EMERGENCY queue

   @iOS work on emergency queue -> id @,1
@NORMAL queue
queue :: id  2,time_out :     2,priority :     2,work_time :     3
queue :: id  0,time_out :     7,priority :     0,work_time :     1

@EMERGENCY queue
queue :: id  1,time_out :     0,priority :     1,work_time :     2

   @iOS work on emergency queue -> id @,1
@NORMAL queue
queue :: id  2,time_out :     1,priority :     2,work_time :     3
queue :: id  0,time_out :     6,priority :     0,work_time :     1
ps: 應該要好好認真的把 OS 看熟才是...XD project @ https://github.com/funningboy/SOC_c_model/tree/master/iOS/ Refs: OS Kernel 相關閱讀與實作心得﹝一﹞ http://en.wikipedia.org/wiki/X86_memory_segmentation x86 Instruction Set Reference x86 Disassembly/Loop Examples OrzMicrokernel tasks.asm 工作排程器的切換執行權函式註解,

2010年11月3日 星期三

co-syn with Google server

有時候真害怕不小心把檔案誤殺,不然就是硬碟壞軌....XD,這樣不就等於做白工嘛... 底下就用 Google Doc 當 back up server. 不用害怕硬碟壞軌 + 誤殺檔案的後果. 原理其實就是用 Google 所提供的 API, 寫成底層的 protocol interface. 為了要 hack Google 的 upload check, 我們會暫存成 *.pdf 的檔名.但檔案內容還是 tar 檔. 等有需要時, 再download 回 local 端.再解 tar 即可.... supports
   
      -[Uu] -[Tt] -[Pp] your_path 
      -[Dd] -[Yy] -[Pp] your_path
   
      -u -t 3600 -p /home/sean/prj/ss       
#back up the project 'ss' && upload 2 google doc @ period of 3600s
# 每3600s back up 一次,且上傳到 google doc server.
  
      -u -t 0    -p /home/sean/prj/ss       
#back up the project 'ss' && upload 2 google doc right now
# 立即備份,且上傳到 google doc server

      -d -y 2010/11/04 -p /home/sean/prj/ss 
#download the project 'ss' by day
# 下載back up data by day

results code @ https://github.com/funningboy/co_syn/blob/master/GoogleDoc.pl Refs: SSL install http://bredsaal.dk/lwpuseragent-and-https http://code.activestate.com/lists/perl-win32-web/1972/ content type ref http://en.wikipedia.org/wiki/Internet_media_type11 others API 4 google learning plus: Google Finance 4 Quote learning plus: Google Picasa API learning plus: Google Finance API Google Blogger API Google Upload 2 Google DOC