[FreeBSD] DenyHosts 設定在 hosts.allow 注意事項
Posted on March 11, 2010
| 1 minutes
| 139 words
| appleboy
DenyHosts 是一套用 Python 跟 shell script 寫出來的 open source base on Linux or FreeBSD (/var/log/secure on Redhat, /var/log/auth.log on Mandrake, FreeBSD, etc…),用來阻擋 SSH Server 被攻擊,之前寫一篇 FreeBSD 安裝設定教學,有一點沒有注意到,就是打開 /etc/hosts.allow,注意要把 ALL : ALL : allow 放到最後一行,跟 iptables 設定原理是一樣的,會從第一條規則開始比對,如果比對成功,下面的 rule 就會略過比對了,參考英文說明:
Start by allowing everything (this prevents the rest of the file from working, so remove it when you need protection). The rules here work on a “First match wins” basis. /etc/hosts.deny 已經被 FreeBSD 棄用,所以必須把 allow 跟 deny 的 rule 都寫到 hosts.
[Read More][C/C++] 計算二進位任意數含有多少個位元為1?
Posted on February 24, 2010
| 1 minutes
| 136 words
| appleboy
今天看到一個有趣的題目,就是計算二進位任意數值,其中包含了幾個1,這非常有趣,利用每個 bit 做&就可以解出這個問題了:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 #include <stdio.h> #include <stdlib.h> int bitcount(unsigned int); int main(){ int count = 0, a; a = 1023; count = bitcount(a); printf("%d有%d個位元為1\n\n", a, count); system("pause"); return 0; } int bitcount(unsigned int n) { int count = 0 ; while (n) { count++ ; n &= (n - 1) ; //關鍵演算之處 } return count ; } 關鍵解法是在 n &= (n - 1) ; 這個地方,為什麼會是這樣寫呢,大家可以想看看,為什麼要 (n-1),其實可以帶數字進去跑看看就知道程式為什麼會這樣寫,這個 case 可以分作兩種,數值可能會有兩種狀況,一種是奇數,另一種就是偶數,8 代表 1000,9 代表 1001,最右邊 bit 是 1 代表奇數,剩下的都是偶數,拿9當例子帶入 while 迴圈試試看,首先將 count + 1,接下來 1001 會跟 1000 做相乘動作,就會變成 1000,接下來跑另一次 while 會變成 1000 & 0111 就會變成 0 了,退出 while 迴圈,所以結論是 (n -1) 的用意是去掉一個 1 位元 bit,就像 [xxxx10 … 0] -1 = [xxxx01 … 1] ….
[Read More]製作 Windows XP USB 開機系統 (模擬光碟開機)
Posted on February 15, 2010
| 1 minutes
| 166 words
| appleboy
最近幫朋友重灌一台電腦,發現他是 HP Mini 1109TU,沒有內建光碟機,然後朋友又沒買外接式光碟機,所以只好趕快上網找如何製作 Windows XP USB 系統,如果是 Linux 系列就好辦了,網路上找到一堆關於 Linux 教學文件,後來在 mobile01 找到一篇:『[教學]將USB 隨身碟 製成 XP 的安裝碟 (模擬CD-ROM)』,裡面的安裝過程我全部測試過了,可以正常運作,利用 USB 安裝 XP 真的還蠻快的,少了 CD-Rom 的讀取,USB 真的安裝相當快速,不過大家在上面下載的安裝程式,它會先將您的 USB 進行 Fat32 格式化,然後複製 XP 光碟內容到 USB 隨身碟,在設定複製內容到 USB 的同時,請不要將 USB 掛載到 D 槽,因為看了一下程式碼 usb_prep8.cmd 裡面有一段設定 USB 開機選項:
:_getusb
set _ok=
echo.
echo Please give Target USB-Drive Letter e.g type U
ECHO.
set /p _ok= Enter Target USB-Drive Letter: set _ok=!_ok:~0,1!
if not exist !
[Read More][C/C++] 指標相加 = ?or 相減 = offset
Posted on February 8, 2010
| 2 minutes
| 267 words
| appleboy
最近看到網路上討論 C/C++ 題目,某公司主管給新進人員面試的 C/C++ 考題,如下:
1 2 3 4 5 6 7 8 int main(void) { int *a,*b; a=1; b=1; printf("%d\n",a+b); return 0; } 請問上面這個題目,哪裡有出問題,這是面試官問新進人員的題目之一,看也知道這程式丟到 Dev-C++ 是不會過的,a b 都是宣告為整數指標型態,可是在 a=1 或 b=1 在 Dev-C++ 裡面是編譯不過的,但是那寫法是沒有錯的,就像你設定 a=0 或者是 a=NULL 是一樣意思,不過最好是不要這樣寫,assignment 這樣寫不太好,可以改成 a = (int )1; b = (int )1; 這樣就可以順利編譯通過,再來 printf("%d\n",a+b); 這行錯很大,指標相加會爆炸吧,如果程式這樣寫,不把 OS 搞掛,那我還會覺得懷疑呢,正確寫法是指標加上 offset(位移),這樣才是可以正確執行的,所以我們把程式改成下面:
1 2 3 4 5 6 7 8 int main(void) { int *a,*b; a = (int *)1; b = (int *)1; printf("%d\n",a+(int)b); return 0; } 最後的執行結果是 5,(int) b 就相當於 sizeof(b) 也等於 sizeof(int ) 答案都是四,所以就是 1+4 =5,指標是不能相加的,只能透過 offset 方式來讓指標指向不同 base,但是如果是指標相減,那就是求 offset 的意思喔,看一下底下例子
[Read More]Google Chrome 支援超過 40,000 Extensions! with Greasemonkey
Posted on February 3, 2010
| 1 minutes
| 82 words
| appleboy
看到 Google Chrome Blog 發表的Google Chrome 支援超過 40,000 Extensions!,當 Google Chrome 瀏覽器剛出來的時候,造成 Web Developer 一些震撼,因為 Chrome 強調的是擁有快速的 Javascript 引擎,以及快速的啟動,Fast start-up、Fast loading、Fast search,也因此讓很多設計網站的工程師必須把 Chrome 的支援性考慮進去,但是由於剛推出的瀏覽器,沒有任何外掛功能,我本身用 FireFox 瀏覽器很多年了,FireFox 的附加元件讓許多程式設計師投入開發,也製造出很多方便的附加元件來讓大家使用,例如:FireBug、Gmail Manager、Greasemonkey…,然而 FireFox 最方便的就是 Greasemonkey 此附加元件,使用者可以撰寫簡單 Javascript 語言來跟指定網站進行元件控制,現在 Google 工程師聽到我們的聲音了,Google Chrome 4 加入 Greasemonkey user scripts 功能,大家可以到 userscripts.org 下載超過 40,000 script 安裝到 Chrome 瀏覽器。您可以在 blogger 使用 emoticons,大家可以去參考看看。 由於 Chrome 支援了 Greasemonkey,所以趕快把 FireFox 所安裝的 script,也安裝到 Chrome,可是我發現之前 DarkKiller 大神寫的 Wretch Album Expander 已經不能用了,所以我將它實做到 Chrome,可以從這裡下載安裝:Wretch Album Expander for Google Chrome or FireFox,平時自己偶而會看看無名小站,所以也是方便自己觀看照片,此 script 也可以安裝在 FireFox 喔。這樣大家就不用再看圖片還要一張一張慢慢點,只要負責按換頁就可以了 ^^。 來測試看看,隨便找一本無名相簿:馬甲‧小葵 ,畫面:點我觀看
phpBB 3.1 版本將不再支援 PHP4
Posted on January 31, 2010
| 1 minutes
| 61 words
| appleboy
在 phpBB 官方網站看到這篇:『phpBB 3.1 to discontinue support for PHP versions below 5.2』,內容大致上是說 phpBB 3.0 “Olympus” 系列的版本將是 phpBB 支援 php 4 最後一個版本,之後所推出的 phpBB 3.1 “Ascraeus” 版本,PHP 需要 5.2 或者是更高才可以正確執行。隨著 3.1 版本的推出,3.0 將會繼續維護 6~9 個月的時間,這版本將會繼續維持相容於 php 4 系統。 由於 phpBB 3.1 還處於開發的階段,尚未決定發佈日期,所以大家還是有很多時間可以將 php 升級到 5.2.0 或者是更高。看到 phpBB 可以捨棄 php 4 還蠻高興的,自己本身玩 phpBB 多年,看到 2.0 到 3.0 的變化蠻大的,php 4 安全姓做的非常不好,所以導致 code 非常隴長,希望 3.1 可以快點推出。
Google Chrome 推出 4.0 穩定版 & Mozilla 推出 FireFox 3.6
Posted on January 29, 2010
| 1 minutes
| 59 words
| appleboy
Mozilla 在上禮拜 (2010.01.22) 推出了 FireFox 3.6,大家可以下載測試效能如何,也可以 follow 狐耳摩莎的 Plurk 來收到 MozTW 的最新資訊,這篇重點不是在 FireFox,而是 Google 正式推出 Windows 版本 new Chrome 4.0 stable release,4.0 版本已經可以正式使用 Google Extensions,之前在3.0版本,只能安裝 Chrome Beta 版本才可以使用 extension,現在只要將 Windows Google Chrome 升級成 Stable 版本,就可以全面使用 Extensions,可以使用手動升級,或者是在下禮拜就會自動 update 到最新版本。
最後可以參考 ericsk 大大所寫的從開發者角度看 Chrome 4 的推出 Reference: Extensibility + new HTML and JavaScript APIs for Google Chrome More Resources for Developers
How to change run levels and init.d scripts in Ubuntu & Debian
Posted on January 28, 2010
| 2 minutes
| 333 words
| appleboy
Ubuntu 6.10 (Edgy Eft) 之後使用 Upstart 代替原來的 sysinit,而 init 是用來管理 Upstart 的 Daemon,本來系統預設的 runlevel 可以在 /boot/menu.list 或者是 /etc/inittab,可是現在這檔案已經移除了,取而代之的就是 Upstart 管理,可以利用 telinit 來改變系統 runlevel,然而現在 runlevel 的定義跟以前不太一樣了,原先 Ubuntu 跟 Fedora 系列 runlevel 代表意義如下:
0:系統關機 (to halt the system) 1:單一使用者模式 (single-user mode) 2:尚未使用(可由使用者定義) 3:多使用者模式 (文字介面登入) 4:尚未使用 (可由使用者定義) 5:多使用者模式 (含有一個X介面的登入畫面) 6:重新開機 (reboot the system) 轉換成 Upstart 的話,就會變成底下
0:系統關機 (to halt the system) 1:單一使用者模式 (single-user mode) 2:多使用者模式 (含有一個X介面的登入畫面) 3:多使用者模式 (含有一個X介面的登入畫面) 4:多使用者模式 (含有一個X介面的登入畫面) 5:多使用者模式 (含有一個X介面的登入畫面) 6:重新開機(reboot the system) 上面資訊可以在 man telinit 裡面找到,寫得很詳細,現在 Ubuntu 9.
[Read More]遲來的 jQuery 1.4 Released
Posted on January 21, 2010
| 1 minutes
| 63 words
| appleboy
為了慶祝 jQuery 四週年慶,官方網站終於 Release 1.4 版本了,也大幅度修改了 jQuery API 網站,跟以往一樣,jQuery 提供兩種版本讓大家測試跟下載:jQuery Minified (23kb Gzipped),這版本是利用 Google Closure Compiler 去壓縮,以往好像是用 YUI Compressor,另一版本就是沒經過壓縮:jQuery Regular (154kb),當然 Google 也提供了 host 來讓 jQuery 有 cache 檔案作用,增加網站速度: http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js 1.4 版本的出來,最主要就是效能的改善,以及整個 Code Base 翻修,可以參考 John Resig 寫的 JavaScript Function Call Profiling,看到底下的圖,就大致上知道 1.4 的效能改善
.css() and .attr() 效能改善圖:
整篇都在說明 jQuery 效能的部份,真的是改善很多,Media Temple 主機商也贊助 jQuery 14天的徵文活動,大家可以上去看看有很多影片都是在介紹 jQuery,最後得獎的人可以獲得 13" MacBook Pro,真是太吸引人了。 最後可以參考 黑暗執行緒大大寫的:jQuery 1.4 小閱兵
How to install Google Web Toolkit with Eclipse
Posted on January 17, 2010
| 1 minutes
| 85 words
| appleboy
Google Web Toolkit (簡稱:GWT)是先以 Java 語言編寫 AJAX 應用程式網頁,然後在編譯成最佳化 Javascript,不但幫助了剛入門 Javascrit,然後又需要撰寫 AJAX 應用程式的工程師很大的幫助,不僅如此,Google App Engine 也提供了 Java 跟 Python 環境,整合了 GWT,讓您可以上傳到 GAE 的空間進行測試,GWT 目的是產生具有高效能性的 Web 應用程式,您不需要是 Javascript 專家也可以做到,GWT 用在 Google 相當多的服務,例如 Google Wave, 新版的 Google AdWords 可以參考這裡更多實際範例。它是開放姓原始碼(open source),完全免費,您也可以參與 GWT 的開發。 Google Plugin for Eclipse 支援 Google Web Toolkit 跟 Google App Engine 開發,我們可以直接安裝此 Plugin 就可以開始上手 GWT,當製作完成之後,就可以上傳到 GAE,直接打開提供的網址就可以看到成果了。 首先安裝 Google Plugin for Eclipse,先去下載 Eclipse 3.5 (Galileo) 最新版,打開 Eclipse 1. 選擇 Help -> Install New Software 2.
[Read More]