PIXNET Logo登入

Nightmare的胡言亂語

跳到主文

愛拍照的IT人碎碎念...

部落格全站分類:心情日記

  • 相簿
  • 部落格
  • 留言
  • 名片
  • 4月 22 週日 201215:11
  • PHP使用libpcap進行sniffer(1)

參考資料:http://marcelog.github.com/articles/swig_php_libpcap_module_c++.html
基本原理就是把現有的libpcap library透過C++寫成的interface包裝起來,並透過SWIG這個Wrapper包成PHP的Extension,讓PHP調用,原作者的程式碼相當簡單,稍微看一下應該可以懂。
環境設定
我自己的編譯環境為Ubuntu 11.10 x86_64 (64bit),PHP版本為5.3.6,因為編譯時需要除了原有的C++編譯環境與make之外,還需要安裝swig、libpcap-dev以及php5-dev等開發套件,當然php5-cli、php5-common以及libpcap-0.8等相關執行環境也都需要,我是透過apt-get直接安裝相關套件。
(繼續閱讀...)
文章標籤

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

  • 個人分類:電腦程式
▲top
  • 1月 29 週五 201021:12
  • Sikuli,用screenshot寫程式





(繼續閱讀...)
文章標籤

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

  • 個人分類:電腦程式
▲top
  • 1月 23 週六 201021:27
  • 在debian上安裝spidermonkey (pecl) + PHP 5.3

自從上次發了一篇初探SpiderMonkey之後,已經很久沒碰spidermonkey了,今天突然心血來潮想說既然spidermonkey都可以embeded在C裡面了,那PHP可不可以呢?上網google了一下,發現果然有善心人士(bombstrike)發了一個PECL的套件,讓PHP也可以跑javascript了,不過有個限制就是這個套件一定要跑在PHP 5.3以後(囧rz),PHP 5.3才剛release沒多久阿....這也未免太新了一點,人家的開發環境還停在5.2的說,用apt-get查一下目前stable的package果然還在5.2,該不會要我用source裝吧?
好在網路上的善心人士不只一位,dotdeb已經把最新的PHP 5.3包好了,只需將apt-get的source指到php53.dotdeb.org就可以安裝啦。
(繼續閱讀...)
文章標籤

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

  • 個人分類:電腦程式
▲top
  • 11月 03 週二 200922:28
  • [筆記][Javascript] Window物件的用法

拜AJAX套件盛行所賜,window.open()這個東西我已經好久沒用了,每當遇到這種有彈跳視窗的UI時大部分都是用Thickbox(已停止更新)或者其他Diaglog UI元件來做,不過今天遇到一個要開新視窗的UI設計,需求是父視窗要能夠操縱開啟的子視窗,不過上網找了一下大部分談window.open()的文章多半是講用子視窗來控制父視窗,譬如說:開啟一個子視窗的購物選單畫面,把User子視窗內選擇的東西回傳父視窗,這種操作只需透過opener物件即可完成對父視窗的操作;很少有文章談到父視窗如何操縱他開出來的子視窗。
在換過一堆關鍵字後終於讓我在網站建置百寶箱裡面找到街燈電箱105號寫的:『跟隨父視窗關閉的子視窗』這篇文章,參考他的原始碼後才了解到,如果要讓父視窗能夠操縱子視窗的話,在子視窗建置的初期就必須將子視窗變成物件(指進父視窗的變數中),以下是範例原始碼:
(繼續閱讀...)
文章標籤

nsysumis94 發表在 痞客邦 留言(0) 人氣(3,856)

  • 個人分類:電腦程式
▲top
  • 12月 17 週三 200823:11
  • Yahoo Map API V.S. Google Map API


最近在做map api的研究,主流的Open Map API最知名的大概要屬Google map的API了,另外一個急起直追的則是要跟Google一拼高下的Yahoo,從今年中Yahoo舉辦Yahoo open hack day的活動看來,Yahoo的確很有心要在Mash-up的Open API競爭中取得一席之地。
在稍微研究兩家的API之後發現對於我這個初學者來說,Yahoo的API不管是在申請使用或者程式撰寫上面都比google map要來的簡單以及直覺許多,首先就兩者的申請手續來說,兩邊都需要申請一個api key,但是Yahoo可選擇不綁web site,而google則得綁著一個url,沒透過這個url(我猜應該是認url-refer)來使用API的話是無效的,光是這點對沒有固定IP只想先嚐鮮的初學者來說,Yahoo的方案要來得有彈性許多。
再來在程式撰寫的部分,兩者其實都大同小異,但在定位的地方google map api需要new一個geocoder的物件來把使用者輸入轉成經緯度,而yahoo map api則可以直接餵使用者輸入,但是在定位準確度來說,則是天差地遠,雖然Yahoo map api找得到的時候,定位點都可以直接定在目標物上(這也是有人說Yahoo Geocoder比google準的原因),但是大部分在搜尋時,我覺得Yahoo的API要比google來的笨,這邊是有人做的比較,你可以輸入台北車站、中正紀念堂等地標比比看,看哪一家的API比較準。
(繼續閱讀...)
文章標籤

nsysumis94 發表在 痞客邦 留言(0) 人氣(1,199)

  • 個人分類:電腦程式
▲top
  • 12月 04 週四 200820:53
  • PHP截中文字


話說....Big5編碼一直是我們在做字串處理時的痛,因為Big5屬於Double Byte字元而且結尾那個byte的編碼好死不死又跟ASCII Code重複,導致像是許功蓋這些結尾字元在ASCII Code裡面為\(脫逸符號)、\t(tab)、\n(換行)等符號的字元在輸出的時候都會有問題,在我還是大學生的時候,這問題困擾了我好久,因為除了顯示時add_slash不能在這些字串後面多個'\'之外,老闆還叫我開發個文章自動斷行系統,不能截掉英文單字且中文字要能正常顯示,截英文字事小,只要back track回上一個空白字元就好(ASCII Code=32),重點是這個系統的萬年資料庫是Big5編碼的,整個的欲哭無淚,經過三週的奮戰後,我終於解決了這個問題,不過時間久了也忘記要怎麼解了,今天心血來潮上網找了兩種解法,當然最根本的還是捨Big5用UTF-8來存字串最好囉。
第一種是逐一比對每一個Byte,若此Byte>127則表示為中文字(Big5的First Byte > 127),下一個Byte和這個Byte為同一個字組,這個解法是我那時候使用的解法,印象中PHP的版本還是3.x的時候
(繼續閱讀...)
文章標籤

nsysumis94 發表在 痞客邦 留言(0) 人氣(1,129)

  • 個人分類:電腦程式
▲top
  • 10月 17 週五 200814:15
  • MySQL - LEFT JOIN and RIGHT JOIN, INNER JOIN and OUTER JOIN

資料來源
In a database such as MySQL, data is divided into a series of tables (the "why" is beyond what I'm writing today) which are then connected together in SELECT commands to generate the output required. I find when I'm running MySQL training, people often get confused between all the join flavours. Let me give you an example to see how it works.
If this isn't quite the question you're looking to have answered, we've got a MySQL IAQ (Infrequently Answered Questions that may help you. And if you want to learn how to make use of this in PHP, see here
First, some sample data:
Mr Brown, Person number 1, has a phone number 01225 708225
Miss Smith, Person number 2, has a phone number 01225 899360
Mr Pullen, Person number 3, has a phone number 01380 724040
and also:
Person number 1 is selling property number 1 - Old House Farm
Person number 3 is selling property number 2 - The Willows
Person number 3 is (also) selling property number 3 - Tall Trees
Person number 3 is (also) selling property number 4 - The Melksham Florist
Person number 4 is selling property number 5 - Dun Roamin.
(繼續閱讀...)
文章標籤

nsysumis94 發表在 痞客邦 留言(0) 人氣(1,282)

  • 個人分類:電腦程式
▲top
  • 10月 14 週二 200813:05
  • MySQL刪除重複資料

資料來源:MySQL: Remove duplicate entries
Remove duplicate entries. Assume the following table and data.
CREATE TABLE IF NOT EXISTS dupTest (
pkey int(11) NOT NULL auto_increment,
a int,
b int,
c int,
timeEnter timestamp(14),
PRIMARY KEY (pkey)
);
insert into dupTest (a,b,c) values (1,2,3),(1,2,3),
(1,5,4),(1,6,4);
mysql> select * from dupTest;
select * from dupTest;
+------+------+------+------+---------------------+
| pkey | a | b | c | timeEnter |
+------+------+------+------+---------------------+
| 1 | 1 | 2 | 3 | 2004-04-16 10:55:35 |
| 2 | 1 | 2 | 3 | 2004-04-16 10:55:35 |
| 3 | 1 | 5 | 4 | 2004-04-16 10:55:35 |
| 4 | 1 | 6 | 4 | 2004-04-16 10:55:35 |
+------+------+------+------+---------------------+
4 rows in set (0.00 sec)
mysql>
Note, the first two rows contains duplicates in columns a and b. It contains
other duplicates; but, leaves the other duplicates alone.
mysql> ALTER IGNORE TABLE dupTest ADD UNIQUE INDEX(a,b);
mysql> select * from dupTest;
select * from dupTest;
+------+------+------+------+---------------------+
| pkey | a | b | c | timeEnter |
+------+------+------+------+---------------------+
| 1 | 1 | 2 | 3 | 2004-04-16 11:11:42 |
| 3 | 1 | 5 | 4 | 2004-04-16 11:11:42 |
| 4 | 1 | 6 | 4 | 2004-04-16 11:11:42 |
+------+------+------+------+---------------------+
3 rows in set (0.00 sec)
(繼續閱讀...)
文章標籤

nsysumis94 發表在 痞客邦 留言(1) 人氣(2,377)

  • 個人分類:電腦程式
▲top
  • 9月 30 週二 200813:22
  • php如何在背景執行其他程式


www的興起改變了以往系統平台皆以應用程式為主的設計方式,越來越多的應用程式都搭配上網頁的功能,讓使用者無論身在何處皆能透過瀏覽器來連接系統,而不需要再浪費等待應用程式安裝的時間,也由於網頁語言和UI的關係非常緊密且大部分的網頁語言都屬於透過Interpreter及時解譯的Script Language,使得網頁語言非常的不適合也不應該用於開發需要消耗大量系統運算資源的程式,但是出來混的總有一天要還的,總會有些功能需要由那種能夠處理超大量資料的程式語言如C/C++來開發,抑或者你會需要透過一些現有的程式來幫助你完成一些事情,但是這些程式天殺的沒有API來供你調用,類似這種時候,我們多半都會利用資料介面如資料庫,或者由system、exec等透過Command Argument Passing的方式來完成網頁與AP的介接。
雖然像上面那樣開發程式的方式可能不多見,但是就被我遇到了(之前mantain的一套程式也是這樣透過exec把一些元件包裝成API),我遇到的問題主要是需要對網頁上傳檔案作一些需要耗費相當多功夫的處理,姑且可以想像成把上傳的圖片縮圖、加框蓋上浮水印,反正就是網頁程式沒辦法那麼快處理好的就是了拉,一般遇到這種問題多半有兩種解法,第一種就是叫Client等,就如同你在網頁上面常常看到用AJAX寫成Loading畫面,第二種就是先把檔案存在Server上面,再寫一隻Daemon定期去處理這些檔案,第一種方式是比較不吃系統資源,反正檔案傳上來了我就做,不用隨時常駐一隻Daemon在那裡monitor,而且對用戶來說比較及時,等完了就可以看結果,但是如果需要處理時間非常久的話,用戶會等到起笑,第二種方法則相反。
今天心血來潮在想是不是有折衷方案(其實是懶的去寫Daemon),因為平時在使用unix的時候,一些需要耗時較久的工作我都會把它先丟到背景,晚點再來看結果,結果試了php的exec()跟system()這兩個函數都失敗,二話不說趕快去拜google大神,想不到一下子就找到解決方案了,在php裡面要把shell job丟到背景裡跑的話,可以用popen()跟pclose()這兩個函數,popen會fork一個command process然後回傳pointer,接著php就可以透過這個pointer利用fread、fput等函式來跟fork出來的這個command process溝通,而exec跟system雖然也會create command process,但是這兩個function並沒有辦法在執行時互動,頂多只能輸出執行結果,因此一但用了exec跟system就得等到command執行完畢才會繼續執行其他程式碼,且無法將command process丟到背景執行,所以若你用exec或system執行耗時較久的程式時可能會導致整個主程式等待過久而發生execution timeout,因此,利用popen跟pclose就成了折衷方案,下面是騎蟲企啃米提供的Sample Code:
(繼續閱讀...)
文章標籤

nsysumis94 發表在 痞客邦 留言(1) 人氣(8,398)

  • 個人分類:電腦程式
▲top
  • 8月 26 週二 200821:34
  • 利用javascript偵測鍵盤動作-無名相簿熱鍵功能實做

自視窗系統以及網頁問世以來,高互動式的UI環境帶給人類全新的使用體驗,突然間滑鼠變成了不可或缺的工具,而分頁這個功能則是自CLI盛行時代就有的基本瀏覽需求,網頁在大量資料表單的呈現上,分頁的需求更是兼顧了效能以及瀏覽便利性而必備的功能,但是,當有需要瀏覽大量頁面時,以滑鼠點選下一頁的方式似乎沒有直接以鍵盤熱鍵換頁來的直覺且方便。
前兩天幫同事寫了一個換頁熱鍵的功能,發現javascript只要透過overload事件處理函式即可完成鍵盤監聽(偵測)的動作,比起利用系統API做keylogger還要簡單,不過兩者應用方式不同,不能混為一談,廢話不多說直接看code:
<script language="javascript">
//偵測瀏覽器版本
var browser=navigator.appName;
if(browser=="Netscape"){    //如果瀏覽器為Netscape或者Firefox
    //開始監聽鍵盤事件
    document.captureEvents(Event.KEYDOWN)
    document.onkeydown=function(event){
        if(event.which==37){
            //key code 37為→
            alert("你按下了下一頁");
        }
        else if(event.which==39){
            //key code 39為←
            alert("你按下了上一頁");
        }
    }
}
else{    //假設瀏覽器不為Nescape則猜測為ie
    //開始監聽鍵盤事件
    document.onkeydown = function(){
        if(event.whitch==37){
            //key code 37為→
            alert("你按下了下一頁");
        }
        else if(event.whitch==39){
            //key code 39為←
            alert("你按下了上一頁");
        }
    }
}
</script>
只需要更改上面的sample code的alert部分為換頁動作即可完成javascript熱鍵功能,在javascript中主要的鍵盤動作分為keydown、keypress以及keyup,keydown以及keypress都表示按下鍵盤,但是執行順序有差(keydown->keypress->keyup),而我在網路上面查到的資料表示,keypress無法偵測系統功能鍵(如delete)是和其他兩個事件處理函式較為不同的地方,我這邊選擇overload的函式為keydown,主要是希望熱鍵按了就有反應,如此而已,有需要的人可以根據需求overload不同函式。
有需要查key code的人可以參考Tsung's Blog的鍵盤按鍵與javascript key code對應表
(繼續閱讀...)
文章標籤

nsysumis94 發表在 痞客邦 留言(1) 人氣(7,740)

  • 個人分類:電腦程式
▲top
123»

參觀人氣

  • 本日人氣:
  • 累積人氣:

文章分類

toggle IT技術 (4)
  • 工作筆記 (14)
  • 電腦程式 (22)
  • 網路安全 (17)
  • 伺服器管理 (4)
toggle 心情 (4)
  • 自言自語 (143)
  • 敗家 (3)
  • 食記 (9)
  • 攝影記事 (80)
  • 未分類文章 (1)

我的地盤

nsysumis94
暱稱:
nsysumis94
分類:
心情日記
好友:
累積中
地區:

熱門文章

  • (22,740)Cisco Switch Port模式詳解以及GBIC問題處理心得
  • (22,036)Win32 Socket 練習 (C語言)- http client
  • (16,453)Cisco & Extreme L3 Switch VLAN port mirror設定
  • (14,011)Argument list too long問題的解決方法
  • (13,434)如何用PHP做SSH連線
  • (4,678)分數運算-約分問題
  • (1,183)灌吸哥對Nikon D90的看法
  • (848)過去過去‧現在現在‧未來未來
  • (679)2007.02.24旗美行
  • (100)第二本書《給下一個科學小飛俠的37個備忘錄》

近期文章

  • Ford Fiesta 星海之戀 好友默契出遊去
  • Jquery onClick傳遞參數方式
  • CVE弱點查找工具
  • PHP使用libpcap進行sniffer(1)
  • 是不是應該要回來寫文章
  • 有些傷
  • 利用PHPMyAdmin scripts/setup.php漏洞入侵的Botnet
  • 沒有長進
  • 謝謝妳
  • 過期商品

最新迴響

  • [20/08/23] guest 於文章「Argument list too lo...」留言:
    find 可用 -delete 參數 ...
  • [18/11/12] skylife 於文章「分數運算-約分問題...」留言:
    "質"因數...
  • [16/10/05] 翔某 於文章「如何用PHP做SSH連線...」留言:
    我想請問一下,就是我這裡需要連綫到一個server去做刪除檔...
  • [16/07/07] 蔡 於文章「如何用PHP做SSH連線...」留言:
    我想請問一下 我按照上面的方式做完 因該是連線成功了但是我...
  • [15/03/29] 阿名 於文章「人是一種矛盾的生物...」留言:
    我跟你應該算是同一樣類人。 ...
  • [14/10/22] 小個頭老麵饅頭 於文章「萬華好料整理+田野調查...」留言:
    萬華火車站邊邊 - 花枝羹麵(未知)-在台灣銀行面對停車場的...
  • [14/09/26] 訪客 於文章「php如何在背景執行其他程式...」留言:
    你的解答好詳盡,謝謝。真的快多了! 有個問題想再問一下,算...
  • [14/07/01] your nickname ... 於文章「萬華好料整理+田野調查...」留言:
    四神湯加油飯,在貴陽街上,直興市場主口對面...
  • [14/06/08] 3 於文章「Cisco Switch Port模式詳...」留言:
    3Q!...
  • [13/12/30] 訪客 於文章「重新。活著...」留言:
    ~試﹎過在﹉網路◎推﹍廣你﹋的產品◎嗎 z...

誰來我家

噗一下