blog.Ring.idv.tw

Articles

Hacking - The Art of Exploitation, 2nd & Head First Java, 2nd

剛剛又下手了兩本書了...= =" 雖然我知道短時間內還是不可能好好的翻翻它們~ 不過就是覺得都是好書,就想將它們帶回家「保藏」著~ 沒錯~ 的確是「保藏」~ 因為我的書多到看不完~ 現在會想買的書一定是值得留存永久類的書~ 所以才會又毫不考慮地又給它下手~ 不過這個月好像有點花費過度... 心中燃起一點危機感... 可是好像也都花在該花的地方呀~ 只好再多努力做事了>_<"

Hacking - The Art of Exploitation, 2nd Edition(Jon Erickson)

Hacking is the art of creative problem solving, whether that means finding an unconventional solution to a difficult problem or exploiting holes in sloppy programming. 
Many people call themselves hackers, but few have the strong technical foundation needed to really push the envelope.

Rather than merely showing how to run existing exploits, author Jon Erickson explains how arcane hacking techniques actually work.
To share the art and science of hacking in a way that is accessible to everyone, 
Hacking: The Art of Exploitation, 2nd Edition introduces the fundamentals of C programming from a hacker's perspective.

Head First Java, Second Edition(Kathy Sierra, Bert Bates)

Head First Java 是個完整的物件導向(object-oriented,OO)程式設計與 Java 的學習指引。
此書是根據學習理論所設計的、 讓你可以從學習程式語言的基本開始一直到包括執行緒、網路、與分散式程式等項目。
最重要的,你會學會如何像個物件導向開發者一般的思考。
而且不只是讀死書-你還會玩遊戲、拼圖、解謎題、以及以意想不到的方式與 Java 互動。
在這些活動中,你會寫出一堆真正的 Java 程式,包括了一個船艦炮戰型態遊戲與一個網路聊天程式。

Head First 系列的圖文並茂學習樣式能讓你快速的在腦海中掌握住知識。
敞開心胸準備好學習這些關鍵性的主題:

    * Java 程式語言
    * 物件導向程式開發
    * 撰寫、測試、與佈署應用程式
    * 使用 Java API 函式庫
    * 處理例外
    * 多執行緒
    * Swing 圖形化介面
    * 網路程式設計
    * 集合與泛型

如果你想要看正經八百的書,去看別的。
但如果你真的想要好好的學習 Java, 你會需要 Head First Java。
這本書可是 2003 與 2004 年 Amazon 編輯推薦的十大好書之一!

其實這本Head First Java很早就想買回來「保藏」了~ 因為真的是一本好書~ 只是現在的我看這本書是從另一個角度去看待它~ 而不是從學習Java的角度~ 總之,如果你想學Java的話~ 我還是會推薦這一本 ^^b

2008-04-20 22:25:13 | Comments (2)

台師大蔣公像被Kuso惡搞

今天因為case的關係~ 一早起來就和夥伴們一同搭高鐵上去台北處理相關事務~ (其實都感覺像被招待~ ^^ 哈哈)

重點請注意右上圖~ 台師大的蔣公像居然被戴上了「粉紅大墨鏡」,而且左手拿著「大溪豆干」~ 一整個搞Kuso啊~ 呵~

看到這張圖時... 已經不曉得多久沒運動了~ 我想~ 現在只要打個15分鐘的籃球~ 我想我就需要休息個三天了.. XD

好了~ 又要去忙了~ 要趕緊準備博班的相關事項~ 否則我想我也不需要報名了...

相關資訊

台師大蔣公像KUSO 戴墨鏡住紀念「糖」

2008-04-19 22:56:45 | Comments (2)

Installing MySQL & Apache2 & PHP & PDO on Debian 4.0

來練習一下該如何在Debian Linux下建立一個LAMP的環境~

安裝MySQL

「libmysqlclient15-dev」要編譯「PDO_MYSQL」時會用到,所以就一併安裝

apt-get install mysql-server libmysqlclient15-dev

裝完成功後~ 記得為你的MySQL root帳號設置一下密碼,假設密碼為「1234」:

mysqladmin -u root password 1234

安裝Apache2

apt-get install apache2

裝好後修改一下設定~

vi /etc/apache2/sites-available/default

將「RedirectMatch ^/$ /apache2-default/」這一行註解起來,如下所示:

# RedirectMatch ^/$ /apache2-default/

讓「/」根目錄不要重導到「/var/www/apache2-default」下

安裝PHP5

「php5-dev」有包含「phpize」這個指令~ 待會要編譯PHP extension會用到~ 所以也一併安裝

apt-get install php5 php5-dev

這時候你可以在「/var/www/」下建立一個名為「index.php」,內容如下:

<?
phpinfo();
?>

然後打開你的瀏覽器,輸入「http://localhost/」就可以看到你的PHP相關組態資訊了~

安裝PDO

首先先下載PDO、PDO-MySQL~

wget http://pecl.php.net/get/PDO-1.0.3.tgz
wget http://pecl.php.net/get/PDO_MYSQL-1.0.2.tgz

然後解壓縮兩個檔案~

tar zxvf PDO-1.0.3.tgz
tar zxvf PDO_MYSQL-1.0.2.tgz

先安裝PDO

cd PDO-1.0.3
phpize
./configure
make
make install

在安裝PDO_MYSQL,要先修改「config.m4」這個檔案,然後刪除下述四行,在122行。

ifdef([PHP_ADD_EXTENSION_DEP],
[
  PHP_ADD_EXTENSION_DEP(pdo_mysql, pdo)
])

安裝PDO_MYSQL

cd PDO_MYSQL-1.0.2
phpize
./configure
make
make install

確認PDO有設置成功

vi /etc/php5/conf.d/pdo.ini

內容應該包含下述兩行:

extension=pdo.so
extension=pdo_mysql.so

測試環境

先重新啟動你的「apache2」

/etc/init.d/apache2 restart

然後在「/var/www/」之下,建立一個「test.php」,程式如下:

<?php
set_exception_handler('exception_handler');

$user = 'root';
$pass = '1234';
$db = new PDO('mysql:host=localhost;dbname=mysql', $user, $pass);

foreach ($db->query('SELECT * from user') as $row) {
    print_r($row);
}
$db = null;
function exception_handler($e) {
    die($e->getMessage() . "\n");
}
?>

成功的話應該就會看見一大堆陣列資訊了 ^^

參考資源

【PHP】DebianにPDOをインストール

在 Debian 安裝 Apache + MySQL + PHP

【安裝筆記】Apache, MySQL, PHP, Subversion Installation on Debian Etch

Debian下Apache2+Mysql5+Php5的安装配置

2008-04-19 00:38:05 | Comments (7)

我在工研院的第一天

今天是第一天到工研院上班~ 上圖就是工研院51館的總部~

早上七點多爬起來~ 坐8:20分的客運到清大站~ 約9:45分就到了~ 然後轉搭新竹客運~ 要搭乘「新竹-下公館」的市區公車~ 好久沒坐公車了~ XD

搭乘費用:新台幣32元~ (P.S. 現在連新竹Nova都準備好了人民幣,所以要強調一下 ^^)

很巧的是~ 剛好在等公車的時候~ 遇到一位要去工研院創意中心面試的人~ XD

中午就去B1的餐廳中心用餐~ 由於B1是一個圓環的建築設計,所以視野相當好~ 採光也佳 ^^ 上圖如果在正中午時~ 那可真是「人滿為患」哈哈~ 好怪的形容~

這是今天中午吃的小簡餐~ 美味嗎?我不曉得~ 反正吃光光就是了 ^^

看到這個「工研市集」就知道~ 我應該是要去合作社滴~ 今天要返家時~ 發覺身上的零錢不夠搭乘公車~ 所以跑下去隨手買個麵包~

後記

今天第一天上班和我的主管建泰(謝謝你的磁鐵書籤^^)先聊一下未來預計要執行的事項及規劃~ 並將我的工作環境先設置好~ 期許我在這可以讓我「肆無忌憚」的發揮 ^^ 又是一個很怪的形容~ 呵~ 反正就是盡力做好每件事就對了~

P.S. 我還蠻喜歡這邊非制式化的辦公環境 ^^b 制式化的環境就會覺得無趣 = =" 會使我覺得毫無生氣盎然的感覺~

2008-04-18 21:14:44 | Comments (3)

跨網域請求(三) - Cross Domain Proxy

這種跨網域技術的方式最大的優點在於~ 他只需要單方面的向你所想要請求的資源進行溝通即可~

也就是說,我們先前所曾介紹過的「跨網域請求(二) - Flash Plug-In」、「跨網域請求(一) - Cross-Domain Script Tag」都需要雙方遵循著某種條件才能達成進行溝通~

而最簡單的例子不外乎像是Flickr所提供的API~ 它就是採用「Cross-Domain Script Tag」來達成的~

不過利用「Cross Domain Proxy」最大的缺點就在於~ 你需要將所有請求的資源都交由這台「Proxy」委任地去幫你處理~ 這將會造成「IP」被對方的伺服器封鎖,或是負荷過載的情形發生~ 所以這時就需要「CSProxy」才能解決這些問題~ 這部份留待以後再介紹~

我們就直接來看一個簡單的「Corss Domain Proxy」的例子,此例子以「Google Translate」為例:

Translate.php

<?php
require_once "HttpClient.php";

if($_POST)
{
	$sentence = $_POST['input'];
	$uri = "http://translate.google.com/translate_t";
	$data = array('langpair' => 'en|zh-TW', 'h1' => 'en', 'ie' => 'UTF8', 'text' => $sentence);

	$request = new HttpClient();
	$request->setContent($data);
	$request->setUri($uri);
	$body = $request->doAction();
	
	$regex = '/<div id=result_box dir=\"ltr\">(.*)<\/div><\/td>/Us';
	preg_match($regex,$body,$match);
	echo $match[1];
}
?>

HttpClient.php

此程式參考HTTP POST from PHP, without cURL,您可以自行修改並擴充~ 當然也歡迎您再分享您的成果 ^^

<?php
/**
 * Date: 2008/04/17
 * Shen(http://blog.ring.idv.tw)
 */
class HttpClient
{
	private $uri;
	private $params;

	function __construct()
	{
		$this->params = array
		(
			'http' => array
			(
				'method' => 'POST',
				'content' => '',
			)
		);
	}
	public function setUri($uri)
	{
		$this->uri = $uri;
	}
	public function setContent($content)
	{
		$this->params['http']['content'] = http_build_query($content);
	}
	public function doAction()
	{
		$ctx = stream_context_create($this->params);
		$fp = @fopen($this->uri, 'rb', false, $ctx);
	
		if(!$fp)
			throw new Exception("Problem: $php_errormsg");
	
		$response = @stream_get_contents($fp);
		if ($response === false)
			throw new Exception("Problem: $php_errormsg");
	
		return $response;
	}
}
?>

2008-04-17 23:50:55 | Add Comment

Next Posts~:::~Previous Posts
Copyright (C) Ching-Shen Chen. All rights reserved.

::: 搜尋 :::

::: 分類 :::

::: 最新文章 :::

::: 最新回應 :::

::: 訂閱 :::

Atom feed
Atom Comment