2012年6月14日 星期四

2012年5月29日 星期二

用NetBeans開JavaFX新專案

1.開啟NetBeans IDE

2.依序點選File → New Project

3.點選JavaFX → JavaFX Application → Next

4.輸入專案名稱:HelloProject

5.在專案名稱(HelloProject)上按下滑鼠右鍵 → 選Properties

6.在專案屬性視窗中點選Sources,確認Source/Binary Format為JDK7

7.一樣在專案屬性視窗中點選Libraries → Manage Platforms

8.在Java Platform Manager視窗中確認Default JavaFX Platform項目中有JavaFX頁籤,及JavaFX SDK Home、Runtime、JavaDoc皆有設定

9.按下ok

10.接著要開始執行HelloProject專案,依序點選Run → Run Main Project

11.執行成功後會出現一個Hello World!的視窗

12.按下Say 'Hello World'後,在NetBeans的Task頁籤視窗中便會出現Hello World!字串(按一下出現一次)

設定JavaFX 2.1的CLASSPATH

如果需要在命令提示字元(command-line)下compile及run JavaFX的程式 就需先設定CLASSPATH,讓compiler知道JavaFX的runtime library的正確位置。

set JAVAFX_HOME=C:\Program Files\Oracle\JavaFX 2.1 SDK

set JAVA_HOME=C:\Program Files\Java\jdk1.7.0_04

set CLASSPATH=%JAVAFX_HOME%\rt\lib\jfxrt.jar

JavaFX預設的home directory(CLASSPATH)

C:\Program Files\Oracle\JavaFX 2.1 SDK

(JavaFX 2.1 SDK's home directory)

2012年5月8日 星期二

將FreeTTS聲音存成wav檔


package tw.feisty.server.test;


import java.text.SimpleDateFormat;
import java.util.Date;

import com.sun.speech.freetts.Voice;
import com.sun.speech.freetts.VoiceManager;
import com.sun.speech.freetts.audio.SingleFileAudioPlayer;

public class TextToSpeech {

public static void convertTextToSpeech(Voice voice, String message) {

boolean status = true;

Date date = new Date();

SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd_HHmmssSS");

String dateString = sdf.format(date);

//System.out.println(dateString);

//text為傳入的字串
String text = new String(message);

System.setProperty("com.sun.speech.freetts.voice.defaultAudioPlayer", "com.sun.speech.freetts.audio.SingleFileAudioPlayer");

byte[] fbytes = text.getBytes();

if(fbytes == null) {

System.out.println("no bytes");

//直接中斷程式
System.exit(1);
}

SingleFileAudioPlayer audioFile;
try {

//文字發聲起動
voice.speak(message);

audioFile = (SingleFileAudioPlayer) voice.getDefaultAudioPlayer();
System.out.println("產生" + text + "的發音檔");
audioFile.write(fbytes);
}
catch(Exception e) {

System.out.println(text + "轉檔失敗");
e.printStackTrace();

status = false;
}

voice.deallocate();

if(status == true) {
try {

System.out.println("檔案複製開始");
String copyCommand = "copy .\\freetts.wav .\\wave\\" + dateString + ".wav";
Runtime.getRuntime().exec("cmd.exe /c" + copyCommand);
System.out.println("檔案複製完成");
}
catch(Exception e) {

e.printStackTrace();

status = false;
}
}

System.out.println("status: " + status);
}

public static void main(String[] argv) {

String message = "i get up at six o'clock. i rub my eyes. i stretch out.";

VoiceManager vm = VoiceManager.getInstance();

Voice voice = vm.getVoice("kevin16");
if(voice != null) {

voice.allocate();
convertTextToSpeech(voice, message);
}
else {

//無法取得發聲引擎
System.out.println("voice is null");
}


}
}

使用FreeTTS時出現「System property "mbrola.base" is undefined. Will not use MBROLA voices.」


1.如下圖:
2.請刪除「mbrola.jar」

FreeTTS(語音合成引擎)所需jar檔

Struts2(Version 2.3.3)必備lib檔

2012年5月7日 星期一

ExtJS menu顯示二種

1.將menu直接顯示在元素上 menu.show(this);
2.顯示在滑鼠所在的x,y上 menu.showAt(e.getXY());

ExtJS將Element事件傳入click事件

ExtJS對某一個class綁定事件

Ext.select(".spellChecker").on("click", function () { alert("hi"); });

2012年4月27日 星期五

google瀏覽器,安裝檔

https://www.google.com/chrome/eula.html?standalone=1

2012年4月24日 星期二

javascript 取代換行為

tempString = tempString.replace(/\n/g, "
");

2012年4月23日 星期一

2012年4月18日 星期三

讓hibernate將java string轉成mysql longtext資料型態




1.在xxx.hbm.xml中加入type="text"即可

2012年4月16日 星期一

某國立大學徵教師的資格

1.開出這種條件的用意是?



那是不是要請該系所的碩博士班也停止招生(讀了沒用)?

跟一般企業一樣,
明明內部培養出來的人才對公司最符合使用需求,
卻一味地向外高薪禮聘不見得對公司有所幫助的人才,
否定自我價值。

2012年4月10日 星期二

windows server 2008 r2 自動遠端桌面連線到 localhost




1.開啟「命令提示字元」視窗,並輸入「cmdkey /generic:localhost /user:sql /pass:syssysysys」,其中sql是帳號,syssysysys是密碼


2.再輸入「mstsc /v:localhost」


3.自動遠端桌面連線開始作用中


4.遠端桌面連線結果畫面,過程不用輸入帳號及密碼


5.在工作管理員中我們可以看到此帳號(帳號名為sql)的識別碼為2


6.在命令提示字元中,可以使用「tsdiscon 2 /server:localhost /v」指令中斷此遠端桌面連線


7.執行完上述指今後,我們可以看到「遠端桌面工作階段已經結束」畫面


8.在工作管理員中,可以看到此帳號的狀態為「已中斷」


9.將以下內容存成startup.bat並放到windows啟動資料表中,讓windows開機後自動執行


10.結果如下