2011年6月5日 星期日

抽象化。

前一陣看到一個有趣的議題~它描述資訊世界中,眾多的抽象化處理。
雖然為我們帶來很多便利;提升不少程式設計師的產力。
但卻也在這個世界埋下了,有機會造成崩壞的因子。

它舉了 TCP/IP 為例子,TCP 是一個"可靠的網路傳輸協定,但是它卻是建在 IP 這個不可靠的通訊協定上。
這可以有兩種說法~一種是,利用 TCP 的各種確認機制盡力達到"非常可靠"。另一種說法就是…拿上層的協定來催眠自己,說這整個過程沒有問題了!!

(目前 TCP/IP 我完全沒有什麼概念,並沒有辦法很細節的解釋上面的例子)

不過,這個議題還是引起我的注意~~
它另外題到了 SQL語法的例子;相同動作,不同 query 的語法,會造成效率很大的差距。
這就是一個很常見,在抽象化之後,被架空的結構。
也就是就你眼前所見,完全沒辦法理解它發生的原因。因為底層有太多太多的步驟被包裝成來了!!
當這些包裝的發展越來越好的時候,能進入這個圈子的人就變多了~
可是懂得包裝下,複雜繁鎖、重重機關的人將變少了


大量的工具、語法,幫我們把背後的工作都包裝起來~
SQL 我們不用寫排序、列表的程式,不用去看現在最快的演算法是什麼。只要會下 SQL query 就好了。
寫 Email、寫網誌~我們不用手刻檔頭、不用自己加標籤。
在系統上,我們寫入檔案,不用管它要寫到哪個磁柱的那個磁區。它的上層還有 Block map , Block group 才到記憶體的 page layer 。
多的是抽象處理時,帶來的便利~~~

不過不知道哪天、哪個程式上,產生了一個 bug 會讓整個系統崩潰,讓大家措手不及。

避免那個世界末日的來臨?
在程式語言上,可能可以在編譯器上動手腳。確認程設工程師的語義。提高面對不同寫作習慣的理解~~bababa。
( 這些可能就是現在寫編譯器的人在做的事吧? 好好奇喔…)

但是程式言自己本身語法的正交性,這個就是天生的了…已經問世的語言,他們大概沒辦法在語法上做什麼太大的更動…除非是砍掉重練。

目前我還只是初涉資訊這個領域,對於發展的過程、歷史大多一知半解,打打嘴砲。或許改天了解更多之後,會再對這個議題有不同的看法~^ ^





題外話~~抽象化聯想到的一些往事……
大學在修量子物理時,就大量使用很多抽象的算子、算符來代替每個粒子位置、動量…
看到題目時,常常就只是無腦的把它的算符列一列,式子套一套就衝了。
埋頭算了一大票~~回頭看時,都忘記我算的這些都東東都不單單只是個數字,都還有他們要滿足的物理定律。
這應該也可以算是抽象化造成錯誤的直覺……。
裡頭…也因此有人的想法被架空了~~~ㄏㄏ

2011年6月2日 星期四

[ chrome ] Yet Another Google Bookmarks Extension

Yet Another Google Bookmarks Extension
一套整合 google bookmarks 的外掛

可以直接在 chrome 的工具列上點開 google bookmarks
它把 bookmarks 的標簽做資料夾,遊覽起來非常方便。

要新加網頁到 google bookmarks 的話,可以直接右鍵。
它已經把選項放到右鍵的欄位裡了。
https://chrome.google.com/webstore/detail/jdnejaepfmacfdmhkplckpfdcjgbeode

2011年5月29日 星期日

[ linux ] date

在 linux 下,要碰到時間相關的事情~
就不得不用到內建的程式  data
下面來介紹幾個常常用到的功能……


date
輸出系統時間。


date +%s
輸出unix 時間
是從 utc 時間  1970/01/01 00:00:00 起~到現在的總秒數~

如果要自訂輸出時間的格式~
date +"%Y/%m/%d %Z %H:%M:%S"
2011/05/29 UTC 15:08:16


%Y   年
%m   月
%d    日
%Z    時區
%H    小時
%M   分鐘
%S    秒

後面的 小時、分、秒 都是大寫~ 這樣可以跟 月份的 m 做區分,蠻好記的。
如果忘記的話,可以直接 date --help
裡面會有更多細部的參數可以用~~~


再來是查詢時間的用法~~
date -d ' -2 day'
在 -d 這個 option後接上要查的時間
例子是兩天前,也可以有其它的間隔~~ 
像是  hour week year 都可以~~

打數字也OK,它的接受度出乎我的意料:p

date -d ' 2011/11/11 UTC 12:12:12'
Fri Nov 11 12:12:12 UTC 2011

這時候會想說為什麼要打數字…? 因為,它可以用在時間格式的轉換~
在做一些監控的 service 時,直接把時間統一指定成 UTC 時間的  unix 格式是很方便的!
可以開個變數 ~
WhatTime=`date -u +%s`
echo $WhatTime
( -u 是指定時區為  UTC )

那如果是從其它軟體、系統下載入的時間,也可以寫個 bash 呼叫  date來做格式轉換~
date -d ' 2011/11/11 UTC 12:12:12' +%s
1321013532
只要再後面補個 + 再打上自己想要的輸出格式~~

date  常用的功能也介紹差不多了~~

下面要不忘提醒一下,校正時間相關的指令
在爽爽的使用這些系統時間時,如果沒有把時間同步做好的話
收集到的數據可信度就會下降啦!!

對時用的軟體  ntpdate
可以直接手動執行校時動作
ntpdate <校時網址>

台灣的有下面幾個可以用~~~  (在 時間標準局 網站上可以查得到)
tock.stdtime.gov.tw
watch.stdtime.gov.tw
time.stdtime.gov.tw
clock.stdtime.gov.tw 
tick.stdtime.gov.tw

之後,可以把對時動作寫進 crontab 裡,讓系統每天自動幫你對時~~
vim /etc/crontab
加入下面這一行 
10 5 * * * root /usr/sbin/ntpdate tock.stdtime.gov.tw  &> /dev/null
( 對時的時間是 每天的 5 點10 分,如果要改成早上四點可以寫成…
10 4 * * * root /usr/sbin/ntpdate tock.stdtime.gov.tw  &> /dev/null


下面補個快速查詢表^ ^

date

date +%s

date +"%Y/%m/%d %Z %H:%M:%S"
2011/05/29 UTC 15:08:16

%Y   年
%m   月
%d    日
%Z    時區
%H    小時
%M   分鐘
%S    秒

#hour week year 
date -d ' -2 day'

date -d ' 2011/11/11 UTC 12:12:12'
Fri Nov 11 12:12:12 UTC 2011

WhatTime=`date -u +%s`
echo $WhatTime
( -u 是指定時區為  UTC )

date -d ' 2011/11/11 UTC 12:12:12' +%s
1321013532
只要再後面補個 + 再打上自己想要的輸出格式~~

ntpdate <校時網址>



2011年5月25日 星期三

Define some search engine about EGI grid operation on chrome

Add there link on   Tool> Option >Search engine manager

Some web page we'll frequently to use... like EGI GUSS ticket system, GOCDB, ROCNagios, bababa... ...
I define some engine as below.

engine Des.       Keyword        engine_link
GGUS                    ggus                  https://gus.fzk.de/ws/ticket_info.php?ticket=%s

Twiki_cern            cernsearch      https://cernsearch.web.cern.ch/cernsearch/Twiki.aspx?query=%s&scope=EGEE
GOCDB                 gocdb             https://gocdb4.esc.rl.ac.uk/portal/index.php?Page_Type=Submit_Search&Search_String=%s
RocNAGIOS          rocnagios        https://rocnagios.grid.sinica.edu.tw/nagios/cgi-bin/status.cgi?hostgroup=site-%s&style=overview
RocNAGIOS_host   rocnagiosh      https://rocnagios.grid.sinica.edu.tw/nagios/cgi-bin/status.cgi?host=%s
glite-APEL              apel                http://goc-accounting.grid-support.ac.uk/rss/%s_Sync.html





GGUS
When you want to open the ticket #00000
Then you can type only "ggus<tab>00000" Then open the ticket page.

GOCDB
GOCDB save the site page no any site information on the link.
Some time we need to find service or site on GOCDB.
Only can use there search engine.
Now, add the search into chrome.

RocNAGIOS (for APROC)
type the sitename to link your site service status page.

RocNAGIOS (for APROC)
type the service name

glite-APEL
type your site name to open the accounting data publish status about your site.


------------------------------------------------------------------------------
GGUS update the link......
GGUS                    ggus                  https://ggus.eu/ws/ticket_info.php?ticket=%s

XOR 運算子

Xor 運算子

在 C++ 裡面是用   ^  或是  XOR
兩變數相互作位元的羅輯互斥運算。

用個例子來介紹一下它的運算
A     0 1 0 1 1
B     0 0 0 1 0
----------------------------   A, B 分別是表示某個二進位的數字
C     0 1 0 0 1

C=A^B

由上面可以簡單看出,如果是 0 0 的組合得出來還是 0
如果是 1 0  就是 1
1 1 則得出 0

有幾個特別的情況~~
1. 任何數對零作用都是自己。
A  1 0 1 1
B  0 0 0 0
-------------
    1 0 1 1   = A
2. 自己對自己作用變成零。
A 1 1 1 0
B 1 1 1 0
-------------
   0 0 0 0 = 0

3. 照順序做下面三個指向完,A B 的值就對換了。
A = A ^ B
B = A ^ B
A = A ^ B


★ 這個算子的特性可以用做一些 mapping 、 換位的動作。


我會發現這個有趣的算子是在跟同事討論一個測網路流量的軟體中發現的~
程式的運作原理是指定一塊空間的資料,然後用 MPI 的function 讓它在 nodes 間互相copy。
那這時候,它必需要指定copy 檔案到除了source 端以外的其它node。
這時候就可以用上這個算子了。

把自己 rank 的編號當成 A 依度對 B( 0<B< max ) 作用。
就可以得出目的地了 ( max - 1 個)

int pair(int np,int p,int k)
{
    int q;
    q = p^k;
    if(q>np-1)
       return(-1);
    else
      return(q);
}



總覺得這種算子應該還有一些其它用途~
改天有聽到,再補充吧~~~


2011年3月10日 星期四

ubuntu Rhythmbox EQ plugin

Rhythmbox 是 ubuntu 底下內建的音樂播放程式。
不過有些常用的功能,它並沒有寫進程式裡。
像是等化器( EQ ) ,下面就是提到要如果自己下載安裝它的 EQ外掛。


Rhythmbox Equalizer
為一套 Rhythmbox 的外掛,通過在網路下載 .tar.gz 檔
自行解壓縮到正確的路徑。
之後就可以在 Rhythmbox > 工具  叫出等化器的調整面版了。


#下載外掛程式
wget rbeq-X.X.tar.gz

#複製、解壓縮到家目錄下的 .gnome2
cp /home/user_name/.gnome2
tar zxvf rbeq-X.X.tar.gz

#解開來它的目錄結構為:/rhythmbox/plugins/rbeq
#COPY 一份到系統內

cd rhythmbox/plugins
sudo cp -r rbeq /usr/lib/rhythmbox/plugins/

#之後直接打開Rhythmbox 就可以看到了









2011年3月3日 星期四

[chrome] switch to tab

Chrome 的連結列工具 omnibox?
http://blog.chromium.org/2011/02/extending-omnibox.html


討論串提到的幾個外掛。
Switch to Tab ( sw )
https://chrome.google.com/webstore/detail/gbfhhcljihbgcobpfnceegfmooomhhli#
History Search ( h )
https://chrome.google.com/webstore/detail/bojcckfnoicpmfgjhhoncpinbmechmkl#


switch to tab
chrome 在一個視窗下同時開很多子分頁時,它並不會為了保留等寬的tab
而在左右兩邊留下移動的鍵頭。

但缺點就是很難分辦那些密密麻麻的tab 是什麼分頁了。

switch to tab 就是用 omnibox 的工具,讓你用該搜尋工具找到你要的tab。
key work ( sw )

history search 一定是一個使用 omnibox 搜尋自己的 history
目的一樣是為了能更快、更方便的找到自己要的網頁。

不過兩個外掛主要都是針對網址搜尋。
如果對網址沒有印象的話,就不太好用了。




另外一方面:
便利 <=> 隱私

  1. http://www.zdnet.com.tw/news/software/0,2000085678,20131482,00.htm
  2. http://chinese.engadget.com/2010/12/08/google-spruces-up-chrome-with-instant-search-from-the-omnibox-o/