2009年12月23日 星期三

程式語言

現有好多種程式語言,
每種程式語言都有特色。

寫組合語言可以用8051、8086、SIC/XE;
寫應用工具可以用C/C++、C#、Java(J2SE)、Visual Basic、Matlab;
寫網頁可以用HTML、CSS、JavaScript、VBScript、Flash;
寫資料庫可以用MySQL、Oracle、JDBC、ODBC;
寫動態介面可以用PHP、ASP、JSP(J2EE)、Python;
寫手機可以用Java(J2ME);
寫硬體可以用Verilog、VHDL;
寫圖形處理可以用OpenGL、JOGL;
另外還有XML可攜帶資料傳輸。

還有很多程式語言及其所屬的開發工具沒列出來。

要學的東西還很多,
不過學有專攻,
沒有那麼多時間和精力都學。

程式語言只是工具,
要如何用工具去寫出道具,
這才是技術。

2009年12月12日 星期六

Ubuntu - ATI Catalyst 9.11 安裝

作業系統:Ubuntu 9.10 64bit
顯示卡:ATI Radeon HD 5770
顯示卡驅動:ATI Catalyst 9.11

最近ATI出了9.11版的Catalyst驅動程式,下載網址:Download Drivers

下載完的檔名為ati-driver-installer-9-11-x86.x86_64.run (這是64位元版本)。安裝時需要輸入指令:
sudo sh ati-driver-installer-9-11-x86.x86_64.run --buildpkg Ubuntu/karmic
sudo dpkg -i *.deb
sudo apt-get -f install
sudo aticonfig --initial -f

2009年12月2日 星期三

C# - 多執行緒(thread)+視窗元件(form)+委派(delegate)=發生問題

在寫C#的視窗應用程式,若使用多執行緒,並用委派和事件的方式使用到視窗元件,會碰到視窗元件的資料完整性問題,例如要輸出文字到文字方塊上。此時可以在被呼叫的方法裡加上判斷條件,防範此問題。

範例的委派宣告為:
public delegate void PrintDelegate(string message);

方法應定義在擁有視窗元件的類別中:
public void PrintFuction(string str){
  if(textBox.InvokeRequired){
    this.Invoke(new PrintDelegate(str), new object[] { str });
  }else{
    textBox.Text += str;
  }
}

C# - 委派(delegate)與事件(event)

C++有函數指標,可以傳遞方法,C#則有委派可以用。

下面有範例,方法定義在類別ExecuteClass中,要呼叫方法的類別是CallClass。
public class ExecuteClass{
  public void PrintFuction(string str){
    Console.Write(str); //輸出字串
  }
}

public class CallClass{
  public delegate void PrintDelegate(string message); //宣告委派型別
  public event PrintDelegate PrintEvent; //宣告事件
  public void CallFuction(string message){
    PrintEvent(message); //呼叫委派方法
  }
}

public class MainClass{
  public static void main(){
    ExecuteClass execute = new ExecuteClass();
    CallClass call = new CallClass();
    call.PrintEvent += execute.PrintFuction; //對事件註冊方法
    call.CallFuction("呼叫成功!");
  }
}

2009年11月17日 星期二

Ubuntu - AMD Unsupported Hardware Watermark

作業系統:Ubuntu 9.10 64bit
顯示卡:ATI Radeon HD 5770
顯示卡驅動:ATI Catalyst 9.10

事件狀況:
螢幕右下角出現「AMD Unsupported Hardware」的浮水印。

解決方法:
以系統管理員的身份輸入
#!/bin/sh
DRIVER=/usr/lib/xorg/modules/drivers/fglrx_drv.so
for x in $(objdump -d $DRIVER|awk '/call/&&/EnableLogo/{print "\\x"$2"\\x"$3"\\x"$4"\\x"$5"\\x"$6}'); do
 sed -i "s/$x/\x90\x90\x90\x90\x90/g" $DRIVER
done

2009年11月15日 星期日

Ubuntu - flash中文顯示問題

作業系統:Ubuntu 9.10 64bit
瀏覽器:Firefox 3.5.5
外掛元件:Adobe flash player 10

事件狀況:
Flash介面有中文顯示時,
出現方框(馬賽克)而看不到原本的中文字。

解決方法:
這是因為Ubuntu的預設字型引起的問題。

  1. 預防以後可能還原的情況,先備份要更動的設定檔49-sansserif.conf。
  2. sudo cp /etc/fonts/conf.d/49-sansserif.conf /etc/fonts/conf.d/49-sansserif.conf.bak
  3. 開啟設定檔49-sansserif.conf。
  4. sudo gedit  /etc/fonts/conf.d/49-sansserif.conf
  5. 修改字型設定,改成文泉驛正黑或其他中文字型。
  6. <match target="pattern">
    <test compare="not_eq" name="family" qual="all">
    <string>文泉驛正黑</string>
    </test>
    <test compare="not_eq" name="family" qual="all">
    <string>文泉驛正黑</string>
    </test>
    <test compare="not_eq" name="family" qual="all">
    <string>monospace</string>
    </test>
    <edit mode="append_last" name="family">
    <string>文泉驛正黑</string>
    </edit>
    </match>
  7. 存檔後重開瀏覽頁面。

Ubuntu - flash按鈕元件失效

作業系統:Ubuntu 9.10 64bit
瀏覽器:Firefox 3.5.5
外掛元件:Adobe flash player 10

事件狀況:
播放影音的時候,
發現flash介面上的按鈕元件無法使用。

解決方法:
這是因為Ubuntu的視覺效果設定所引發的狀況。

  1. 在桌面按滑鼠右鍵選擇更改桌面背景,
  2. 點選視覺效果的頁籤,
  3. 選擇無特效的桌面環境,
  4. 再重開瀏覽頁面就可以囉!