2011年10月15日 星期六

在 Ubuntu 中使用 Java 連接 MySQL

首先必須要有 java 對 mysql 的連接器,並設定環境變數,安裝方法:

sudo apt-get install libmysql-java

#取得 mysql java 連接器



CLASSPATH=$CLASSPATH:/user/share/java/mysql.jar

#設定自訂變數 CLASSPATH



export CLASSPATH

#將自定變數  CLASSPATH 設為環境變數



mysql connector 都安裝好了之後,就可以寫點小程式來測試一下啦!

JDBCMySQL.java


import java.sql.*;

public class JDBCMySQL {
    public static void main(String[] args) {
        String driver = "com.mysql.jdbc.Driver";
        String url = "jdbc:mysql://localhost:3306/phpbb";
        String user = "root";
        String password = "5.ru8ck6";
        try {
            Class.forName(driver);
            Connection conn =
               DriverManager.getConnection(url,
                                  user, password);

            if(conn != null && !conn.isClosed()) {
                System.out.println("資料庫連線測試成功!");
                conn.close();
            }

        }
        catch(ClassNotFoundException e) {
            System.out.println("找不到驅動程式類別");
            e.printStackTrace();
        }
        catch(SQLException e) {
            e.printStackTrace();
        }
    }
}


參考資料:
https://help.ubuntu.com/community/JDBCAndMySQL
http://caterpillar.onlyfun.net/Gossip/JavaGossip-V2/ConnectDB.htm


Ubuntu 11.10 (Oneiric Ocelot)發佈囉!

跟11.04的桌面有著全新的不同體驗!讚~下載位置:http://www.ubuntu.com/download

#以下轉自 ptt.cc Linux 板:
作者 hayatoman (小小的改變是,成功的開始) 看板 Linux

標題 [分享] Ubuntu 11.10正式發佈

時間 Fri Oct 14 09:59:39 2011

───────────────────────────────────────

Ubuntu 11.10(Oneiric Ocelot)如約正式發佈了,這是Ubuntu的第15個重大版本發佈,

桌面版和服務器版都有18個月的生命週期。Ubuntu 11.10包括以下版本:桌面版、服務器

版、Ubuntu Cloud、Kubuntu、Xubuntu、Lubuntu、Edubuntu、Mythbuntu、Ubuntu

Studio。

Ubuntu 11.10元件:

— Unity 3D界面4.22;

— Unity 2D界面4.12;

— 桌面環境GNOME 3.2.0;

— Linux kernel 3.0.4;

— X.Org 7.6;

— Xorg Server 1.10.4;

— Upstart 1.3;

— GCC 4.6 toolchain;

— Python 2.7.2;

— Compiz Fusion 0.9.6。



Ubuntu 11.10新特性:


— 完善了桌面體驗;

— 3D界面和2D界面兩種登錄方法,均屬Unity界面;

— 全新的LightDM登錄畫面;

— 新的Alt+Tab快捷鍵切換;

— 14張新壁紙;

— 默認的Ambiance主題進行了完善;

— 全新的Ubuntu Software Center軟件中心;

— 默認瀏覽器:Mozilla Firefox 7.0;

— 默認郵件客戶端:Mozilla Thunderbird 7.0;

— 混合CD/USB ISO鏡像:支持將ISO鏡像直接寫入USB;

— 完善了對32位和64位系統的兼容性;

— 服務器版本支持ARM架構;

— 引入了Juju雲端服務;

— 新的音樂播放器連接至Banshee;

— 支持更多腳本語言,包括日語、中文和韓語;

— DVD鏡像更小,包括所有你需要的應用程序。

Ubuntu 11.10官方下載頁面:


http://www.ubuntu.com/

http://cdimage.ubuntu.com/releases/11.10/release/





2011年10月14日 星期五

Rework - 工作大解放



前陣子就有聽聞這本書獨到的見解,剛好在退伍前一天,趁著放假的空閒,去書局帶了這本書回來。看完這本書我只能說,真的是大解我多年來的心頭之惑。一直以來都想著該如何創業、如何起手,讀完這本書會一掃我心中思考已久的疑惑。

作者是著名的 37signals 創辦人,述說著他們如何從網頁設計公司轉型成為軟體公司,秉持著與 MBA 大相逕庭的理念,不主張擴張,遵循著解決自己問題的原則來開發產品,與現存大部分的軟體公司,老想著如何解決別人問題、迎合別人來規劃開發新產品的作法,是完全不同。他們不做計畫、不當工作狂、不逞英雄、不訂長遠的目標,因為訂定太大、大遠的目標只是一種猜測,猜測事情的發展會發生無法預料的後果,並教導如何靠著經營客戶來經營自己的品牌,而不是透過廣告行銷,一些大費周章卻得不到成效的白工。書中還講了好多好多很棒的內容,讀完會讓我有種恍然大悟的感覺,很久以前就一直在尋找這類的書籍,沒想到真的出版了!

這本書中許多的專案管理理念和原則,跟我最近在讀的人月神話有許多相似的地方,最近真的是瘋狂愛上了這類的書籍...無法自拔!!


2011年10月13日 星期四

Linux 上 chmod 只修改檔案或是資料夾的權限

資料夾:
find . -type d -exec chmod 775 {} \;



檔案:
find . -type f -exec chmod 664 {} \;




在 phpBB 上安裝 Share On 模組

Share On 是 phpBB 官方認可的模組,安裝完之後可以在文章上看到大多數社群網站的分享按鈕,安裝的方法非常的簡單,照個官方的指示一步一步做就可以了。

模組名稱:Share On 1.2
官方介紹頁面:http://www.phpbb.com/customise/db/mod/share_on/


安裝完之後,會發現其實有個小 bug 需要修正。未登入的使用者,會看不到 share on 模組的語言字串 SO_SELECT,如這篇所示:


http://www.phpbb.com/customise/db/mod/share_on/support/solved_%7B_so_select_%7D-t_94654



網址內所提的方法是在 viewtopic.php 內加上:
$user->add_lang('mods/info_acp_shareon');


但我認為這並不是正確的修正方式,而是應該在 /phpbb/language/{lang}/common.php 再多加上:
'SHARE_ON_SELECT' => 'Share on',


並修改 /phpbb/styles/prosilver/template/viewtopiv_body.html 將:
SO_SELECT 改成 SHARE_ON_SELECT


另外,竹貓星球有提供中文化檔:http://phpbb-tw.net/phpbb/viewtopic.php?t=54283

使用 Java 進行 AES 加密

前天投了一家處理資安的公司,沒想到很快就回覆我了,而且還夾帶了一個小小的程式撰寫測驗!

----

程式寫作測驗:
請寫一個檔案加密的程式,輸入檔名,讀取內容,加密後輸出成另一加密檔。
請交原始碼、編譯環境相關檔案,可參考或使用現成的加密函式RSA, AES, DES…或者基本的XOR。
評分標準:
基本項目
1. coding style (Source Code)
2. 完成度(exe檔 或 JAR檔)


加分項目
1. 可以的話用不同語言(C++, Java)撰寫
2. 不同作業系統程式 (project or make file)
3. 視窗介面(console, Windows 或 手機)

----

加密的東西其實還蠻常用到的,像是 PHP 的使用者密碼都是會經過加密在儲存到資料庫,只是用 Java 到還是頭一遭!稍微做了點功課,發現大家比較推薦的加密演算法是 AES,而且在 Java 的官網就可以找到教學文章 ,所以就寫了一個簡單的 AES 加密、解密器。

核心程式碼如下:

AESEncrypter.java

package joujiahe.encrypt.AES;

import java.security.NoSuchAlgorithmException;

import javax.crypto.*;
import javax.crypto.spec.SecretKeySpec;

// AES Encrypt core
public class AESEncrypter {

 private SecretKeySpec skeySpec;
 private Cipher cipher;
 
 public AESEncrypter() throws NoSuchAlgorithmException, NoSuchPaddingException{
    // Get the KeyGenerator
    KeyGenerator kgen = KeyGenerator.getInstance("AES");
    kgen.init(128); // 192 and 256 bits may not be available
 
 
    // Generate the secret key specs.
    SecretKey skey = kgen.generateKey();
    byte[] raw = skey.getEncoded();
    this.skeySpec = new SecretKeySpec(raw, "AES");
 
 
    // Instantiate the cipher
    this.cipher = Cipher.getInstance("AES");
 }
 
 // output encrypted bytes
 public  byte[] encrypt( byte[] original ) throws Exception{
   
    this.getCipher().init(Cipher.ENCRYPT_MODE, skeySpec);
    byte[] encrypted = cipher.doFinal(original);
    
    return encrypted;
 }

 // output decrypted bytes
 public  byte[] decrypt( byte[] original ) throws Exception{
    
    this.getCipher().init(Cipher.DECRYPT_MODE, skeySpec);
    byte[] decrypted = cipher.doFinal(original);
    
    return decrypted;
 }

 // getter and setter
 public SecretKeySpec getSkeySpec() {
  return skeySpec;
 }

 public void setSkeySpec(SecretKeySpec skeySpec) {
  this.skeySpec = skeySpec;
 }

 public Cipher getCipher() {
  return cipher;
 }

 public void setCipher(Cipher cipher) {
  this.cipher = cipher;
 }
 
}


參考資料:Using AES with Java Technology

2011年10月7日 星期五

Ubuntu 11.04 安裝 phpMyAdmin

phpMyAdmin 是一套用 php 開發,來管理 MySQL 的軟體。安裝的方法非常簡單:

sudo apt-get install phpmyadmin


之後在修改 /etc/apache2/httpd.conf 加上:

Include /etc/phpmyadmin/apache2.conf


Ubuntu 11.04 安裝 ImageMagick

剛剛要試著在 Ubuntu 上安裝 ImageMagick 的時候,發現 tw.achive.ubuntu.com 掛掉了!查了一下,好像已經掛了一陣子了。解決的方法也很簡單,只要:

1. Synaptic > 設定 > 套件庫,將"位於臺灣的伺服器"改成"主要伺服器",

或是到 /etc/apt 下,

2. 修改 source.list 裡面的 tw.achive.ubuntu.com 成 achive.ubuntu.com 。


最後,再執行一次指令就安裝完成了!

sudo apt-get install imagemagick


2011年10月6日 星期四

Ubuntu 11.04 安裝 Epson EPL 6200L

原本以為在 Ubuntu 上安裝印表機會像 Windows 7 一樣簡單、順利,沒想到安裝了之後列印,印表機一動也不動。

感謝廣大的 Ubuntu 社群,讓我 Google 一下就找到解決方法了。只要按照下面的指令作就行了,基本上就是自己抓驅動程式來安裝:


cd /usr/src
sudo tar zxvf  /download/epsoneplijs-0.4.1.tgz
cd epsoneplijs-0.4.1/
sudo ./configure
sudo make
sudo make install
sudo mkdir -p /usr/share/cups/model/foomatic-ppds/Epson/
sudo cp -av ../foomatic_PPDs/Epson-EPL-*-cups.ppd.gz   /usr/share/cups/model/foomatic-ppds/Epson/
sudo cp foomatic/driver/epl6200l.xml    /usr/share/foomatic/db/source/driver/
sudo cp foomatic/opt/epsonepl-*   /usr/share/foomatic/db/source/opt/
sudo cp foomatic/printer/Epson-EPL-6200L.xml  /usr/share/foomatic/db/source/printer/
sudo cp ijs_server_epsonepl /usr/bin/
sudo /etc/init.d/cups restart


資料來源:http://ubuntuforums.org/showthread.php?t=1558950


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 的時候,忽然發現它有翻譯的功能,似乎是不久前才出現的!

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


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

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


2011年6月6日 星期一

守護程序 I 網路殺神



上次趁著返台的時候買了這本書 守護程序 I 網路殺神,主要是用來打發當兵苦悶的時間。由於平常沒有看小說的習慣,會挑上這本小說完全純屬意外,無意間被書籍介紹所吸引的,到底是什麼樣的書會讓每個電腦使用者無法停手?我的好奇心就驅使了我買下這本書。