2011年9月29日 星期四

[轉錄] 程式設計師應讀的十本好書


這是由 Stack Overflow 票選出來的前十大好書,慚愧~一本都沒看過!


第一名 Code Complete,1289票,教你怎麼寫乾淨的程式。中文翻譯版連結在此



第二名 Pragmatic Programmer,1138票,簡體版叫做”程序員修煉之道︰從小工到專家“。



第三名 Structure and Interpretation of Computer Programs,672票,這本有夠貴,要六千多台幣。不過,線上有免費全文版本在這裡可以線上閱讀



第四名 The C Programming Language,541票,大名鼎鼎的C語言聖經。





第五名 Introduction to Algorithms,463票,StackOverflow上面這麼來簡述各聖經的訂位:Code Complete教你正確地寫程式;人月神話教你怎麼正確管理專案;Design Patterns教你怎麼正確設計;而這本書是教你怎麼想演算法。



第六名 Refactoring: Improving the Design of Existing Code,459票,中文譯本在這裡



第七名 The Mythical Man-Month 人月神話,418票,中譯本從這裡購買。這是軟體專案管理的經典書籍。



第八名 Design Patterns,415票,中文譯本在這,不過似乎絕版了。



第九名 The Art of Computer Programming,378票,數冊可做參考書。這書簡稱為TAOCP,作者是Stanford大學的Knuth教授,也就是他發明了大名鼎鼎的TeX排版系統。



第十名 Compilers Principles, Techniques, and Tools,346票,可帶你進入compiler的奇幻世界,書的封面可是有一隻噴火龍的。






資料來源:http://www.inside.com.tw/2011/03/03/books-programmer-must-read

[轉錄] PHP - if v.s. switch 誰快?

fluffycat 上看到一篇測試 PHP 的 if 和 switch 判斷式哪個執行速度較快,根據作者使用亂數測試的結果是 if 略勝 switch,但差距並不明顯。雖然程式碼亂數只取到 5,但下面有網友幫忙測試了亂數 10、20 和 50,得到的結果還是 if 略勝。

小小的測試,小小的趣味。

原始碼:下載

//copyright Lawrence Truett and FluffyCat.com 2009, all rights reserved
  	define('BR', '<'.'BR'.'>');
	echo 'Performance Testing PHP if / else VS switch with 100,000 iterations'.BR.BR;
	
	$ifTime = 0;
	$switchTime = 0;
	for ($x = 0; $x < 100000; $x++) {
		$oneToFive = rand(1,5);
		if (0 == fmod($x,2)) {
			$switchTime = $switchTime + testSwitch($oneToFive);
			$ifTime = $ifTime + testIf($oneToFive);
		} else {
			$ifTime = $ifTime + testIf($oneToFive);  			
			$switchTime = $switchTime + testSwitch($oneToFive);  		
		}
	}
	echo 'total if / else time: '.$ifTime.BR;
	echo 'total case time: '.$switchTime.BR;
	echo BR;
	if ($ifTime > $switchTime) {
		echo 'switch is quicker by '.($ifTime - $switchTime).BR;
	} else {
		echo 'if / else is quicker by '.($switchTime - $ifTime).BR;		
	}


	function testSwitch($oneToFive) {
		$time_start = microtime(true);
		switch($oneToFive) {
			case 1: $z = 1; break;
			case 2: $z = 2; break;
			case 3: $z = 3; break;
			case 4: $z = 4; break;
			case 5: $z = 5; break;						
		}
		$time_end = microtime(true);
		$time = $time_end - $time_start;
		return $time;
	}
  
	function testIf($oneToFive) {
		$time_start = microtime(true);
		if (1 == $oneToFive) {
			$z = 1;
		} elseif(2 == $oneToFive) {
			$z = 2;			
		} elseif(3 == $oneToFive) {
			$z = 3;	
		} elseif(4 == $oneToFive) {
			$z = 4;	
		} elseif(5 == $oneToFive) {
			$z = 5;	
		}
		$time_end = microtime(true);
		$time = $time_end - $time_start;
		return $time;
	}



參考資料:http://www.fluffycat.com/PHP-Design-Patterns/PHP-Performance-Tuning-if-VS-switch/


2011年9月28日 星期三

PHP 5.4 beta1 發佈

PHP 5.4 beta1 發佈了!!!

增加了一些新功能和移除部分過時的行為,主要做了三項變動:

  1. 增加可呼叫的 type hint。
  2. 移除自動辨識時區演算法,改用 UTC 為預設。
  3. 使用 mysqlnd 為預設來取代掉 mysql、mysqli 和 pdo_mysql。


原文:

  • Added callable typehint.
  • Removed the timezone guessing algorithm. "UTC" is now used in case the timezone is not set.
  • The mysql, mysqli and pdo_mysql extensions now use mysqlnd by default.

參考資料:http://www.php.net/archive/2011.php#id2011-09-27-1


2011年9月27日 星期二

Facebook 新功能 - 翻譯

今天再逛 Facebook 的時候,忽然發現它有翻譯的功能,似乎是不久前才出現的!

如下圖,在留言旁邊出現了"翻譯"的字樣。


按下翻譯之後,僅限塗鴉牆上的文字會被立即翻譯,不包含分享的內容。翻譯字樣則會變成"原文"。 

目前還不知道背後是透過什麼來進行翻譯。不過,在實用性上我覺得多多少少對用戶都有些幫助!像是一些韓國偶像團體的粉絲網頁,就可以透過這個功能來直接翻譯原文,不用再額外透過一些翻譯軟體就能得知心愛的偶像的動態喔~