Feeds:
文章
留言

Archive for 2005 年 12 月

強烈推薦… 不僅支援一般的 VCD /DVD, 連 rmvb 都支援播放…

 


[轉貼] toGet 軟體報

軟體:GeeXboX(版本:0.98.7)
類別:Unix
性質:Freeware(27.5 M)

【編輯/高啟唐】

你手邊是否有閒置不用、丟掉又嫌可惜的舊電腦?現在就告訴你一個處理舊電腦的最佳方案,只要下載GeeXboX這個免費軟體將之燒成光碟,然後利用這張光碟開機之後,你的舊電腦就會馬上變身成一台可以播放VCD、DVD、音樂CD、MP3、相片光碟的家庭多媒體播影音放機!

不少人應該都聽過Windows Media Center吧!如果說Media Center是Windows XP的多媒體版本,那麼GeeXboX就是Linux的多媒體版本。我們都知道Linux的多媒體播放功能並不遜於Windows XP,所以GeeXboX不但可以播放市面上標準格式的影音光碟,還可以播放在網路上極受歡迎的高壓縮比影片檔(如AVI、RMVB等)呢!

GeeXboX的使用方法很簡單,只要把GeeXboX的ISO光碟映像檔從網路上下載回來,利用燒錄程式將它燒錄成光碟,然後將這張光碟放進光碟機裡,選擇光碟開機就行了。開機之後螢幕會出現多媒體播放選單並自動退出光碟機托盤,這時你只要將GeeXboX光碟拿出來然後放進你想觀賞的影片光碟,系統就會自動讀取播放了。

最令人激賞的是,GeeXboX並不需要多高級的配備就能運作,根據網路上眾多網友所分享的經驗,只要Pentium II或K6-2 400MHz的CPU、96MB的記憶體就可以順暢執行,甚至連硬碟都不需要呢!如果你手邊有閒置不用的舊電腦,剛好可以拿來執行GeeXboX,免費打造一台家庭多媒體影音中心!

以筆者本身為例,家裡剛好有一台配備Duron 600MHZ、128MB記憶體、2倍速DVD光碟機的舊電腦主機;筆者把它搬到客廳然後利用AV線將輸出視訊與音訊接到電視上,接著再利用GeeXboX開機,當場就變成一台家庭多媒體播放機了!什麼都能播,比市面上一台三、四千元的DVD播放機還好用呢!

下載:
http://toget.pchome.com.tw/intro/unix_linux/24656.html
對這個軟體有意見/疑問想提出來?請來toget討論區發表~
http://toget.pchome.com.tw/BBS/index2nd.php?cl1st=unix&cl2nd=unix_linux

Read Full Post »

[轉貼] ToGet 軟體報
 

軟體:Nvidia Omega Drivers(版本:1.6693)
類別:系統工具
性質:Freeware(20.9 M)

【編輯/王國淵】

現在的遊戲體積越來越大,除了遊戲內容變得更豐富,當然就是其中的視覺與聲光效果更加驚人所致,為了要享受電腦遊戲所帶來的刺激,許多玩家不惜投入大筆金錢收集電腦,當說到顯示卡時,更是有不少玩家指明要使用 Nvidia 晶片的顯示卡,因為它在許多遊戲上有著出眾的表現,因此當然成為了玩家們的首選,但是要如何更進一步調校你手邊的顯示卡呢?讓 Nvidia Omega Drivers 來幫助你。

Nvidia Omega Drivers 是一款免費的 Nvidia 系列顯示卡專用驅動程式,它對 Nvidia 公司所出品的公版驅動程式進行了更多細部的調校,目的就是要讓玩家手邊的顯示卡能夠發揮 100% 的威力,而不會因為公版驅動程式為了求穩定下犧牲了部分效能的犧牲品。

使用者們還能夠透過 Nvidia Omega Drivers 來對顯示卡進行更進一步的調校,舉凡核心速度、記憶體速度等,都是可以被調整的。不過筆者還是要再提醒使用者一聲,對於硬體的超頻,必定有某些潛在的危險,因此請謹慎小心使用。

註:toget 所提供之 Nvidia Omega Drivers 為 Win XP/2000 適用的版本,若需要 Win Me/98 的驅動程式,請至原廠網頁下載。

下載:
http://toget.pchome.com.tw/intro/utility_system/utility_system_Optimize/24635.html
對這個軟體有意見/疑問想提出來?請來toget討論區發表~
http://toget.pchome.com.tw/BBS/index2nd.php?cl1st=utility&cl2nd=utility_system

Read Full Post »

超級業務員

一個鄉下來的小夥子去應聘城裏『世界最大』的『應有盡有』百貨公司的銷售員。
老闆問他:"你以前做過銷售員嗎?"
他回答說:"我以前是村裏挨家挨戶推銷的小販子。
老闆喜歡他的機靈:"你明天可以來上班了。等下班的時候,我會來看一下。"
一天的光陰對這個鄉下來的窮小子來說太長了,而且還有些難熬。
但是年輕人還是熬到了5點,差不多該下班了。
老闆真的來了,問他說:"你今天做了幾單買賣?","一單,"年輕人回答說。
"只有一單?"老闆很吃驚地說:"我們這兒的售貨員一天基本上可以完成20到30單生意呢。
你賣了多少錢?"
"300,000美元,"年輕人回答道。
"你怎麼賣到那麼多錢的?"目瞪口呆,半晌才回過神來的老闆問道。
"是這樣的,"鄉下來的年輕人說,"一個男士進來買東西,我先賣給他一個小號的魚鉤,然後中號的魚鉤,最後大號的魚鉤。
接著,我賣給他小號的魚線,中號的魚線,最後是大號的魚線。
我問他上哪兒釣魚,他說海邊。
我建議他買條船,所以我帶他到賣船的專櫃,賣給他長20英尺有兩個發動機的縱帆船。
然後他說他的大眾牌汽車可能拖不動這麼大的船。我於是帶他去汽車銷售區,賣給他一輛豐田新款豪華型’巡洋艦’。"
老闆後退兩步,幾乎難以置信地問道:"一個顧客僅僅來買個魚鉤,你就能賣給他這麼多東西?"
"不是的,"鄉下來的年輕售貨員回答道,
"他是來給他妻子買衛生棉的。我就告訴他:"你的週末算是毀了,幹嗎不去釣魚呢?"
 
 
如果我們公司的業務這麼厲害就好了 -_-b

Read Full Post »

Read Full Post »

今天測試了一下 .Net 環境開發 DirectX 程式,寫了一個播放 wav 聲音的簡單程式如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Microsoft.DirectX.DirectSound; 
namespace DirectSoundDemo {
    public partial class Form1 : Form {
        public Form1() {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e) {
            Device dev = new Device();
            dev.SetCooperativeLevel(this, CooperativeLevel.Normal );            
            Microsoft.DirectX.DirectSound.Buffer buf = new Microsoft.DirectX.DirectSound.Buffer(@"c:winntmediatada.wav", dev) ;
            buf.Play(0, BufferPlayFlags.Looping );

        }
    }
}

結果在 VS2005 Express IDE 環境以 debug 模式執行時丟出下面的訊息:
LoaderLock was detected
Message: DLL ‘C:WINNTassemblyGACMicrosoft.DirectX1.0.2902.0__31bf3856ad364e35Microsoft.DirectX.dll’ is attempting managed execution inside OS Loader lock. Do not attempt to run managed code inside a DllMain or image initialization function since doing so can cause the application to hang.

詳細資訊可以 MSDN 的 LoaderLock 關鍵字文件

解決方法:
Debug | Exceptions | Managed Debugging Assistants | LoaderLock 的 Thrown 勾選取消即可。

後記:
在 .Net 環境寫 DirectX 真的比較容易,不同於用 DirectX SDK 繁瑣,只要簡單的幾行指令就可以達成需求。要執行上述範例,記得在專案中加入 Microsoft.DirectX.DirectSound 的 Reference

Read Full Post »

真是什麼人都有啊

 那天,我女朋友打電話給我,因為我都叫她喵咪,所以下面簡稱喵。
 喵:AA~我的電腦當機了,出現藍底白字的畫面了啦!!
 我:喔~那你先按ESC再看看能不能跳回WINDOWS。
 喵:(過一會兒)我按啦!可是它沒反應咩…
 我:妳多按幾次看看有沒有反應。
 喵:我按了啊,可是它就沒反應咩…
 我:應該可以啊?!
 喵:還是我按的順序錯誤?
 我:( ̄▽ ̄)?
 
 喵:先按E還是S還是C啊?還是三個一起按!?
 我:|||Orz,是鍵盤左上角的那一個"ESC"鍵啦…
 喵:喔!(過一會兒),可以了~可以了~!!那現在呢??
 我:妳先到 我的電腦去看看。
 
 
 喵:你的電腦在你家耶~!我要去你家看嗎?!
 
 我:…我看不用了,我去 你的電腦看好了…
 
 喵:真的嗎!!你真是個好人耶~( ̄︶ ̄)
 
 我:|||OTZ

Read Full Post »

[Game]錯別字挑戰

Read Full Post »

這個簡單範例讓我花了許多時間,主要是因為 callback 函數使用 Borland Compiler 的時候必須額外加上 CALLBACK 或 __stdcall 修飾字,否則雖然編譯成功可是執行階段卻會莫名奇妙的當機,會發生這個問題主要應該是因為 Borland C++ Complier 預設的修飾字是 __fastcall,而 Visual C++ Compiler 預設應該是 __stdcall,這個修飾字主要是告訴編譯器函數被呼叫時的參數在堆疊中的放置規則,因此,程式才會在程式執行階段掛了 -_-b
 
記取教訓~~
原始檔下載 (按右鍵下載,並將副檔名改為 rar)

/*
 * 列舉系統中的支援 DiectSound 和 DirectSoundCapture 設備
 *
 * 相關檔案:
 * [1] dsound.h
 * [2] dsound.lib
 *
 * 環境:
 * [1] Windows 2000 Professional
 * [2] Edit Plus 2.12
 * [3] Bolrnad C++ Compiler 5.6
 * [4] DirectX 9.0 SDK
 *
 * 編譯:
 * bcc32 dx.cpp
 *
 * 參考資料:
 *  [1] DSEnumCallback, http://msdn.microsoft.com/library/en-us/directx9_c/DSEnumCallback.asp
 * [2] DirectSoundCaptureEnumerate, http://msdn.microsoft.com/library/en-us/directx9_c/DirectSoundCaptureEnumerate.asp
 * [3] DirectSoundEnumerate, http://msdn.microsoft.com/library/en-us/directx9_c/DirectSoundEnumerate.asp
 *
 * 開發日誌:
 * 2005/12/23 建立
 *
 */
#include <iostream>
#include "windows.h"
#include "Includedsound.h"

#pragma link "Lib\dsound.lib"

using std::cout;
using std::endl;
using std::cerr;

BOOL CALLBACK DSEnumCallback(
  LPGUID lpGuid,
  LPCSTR lpcstrDescription,
  LPCSTR lpcstrModule,
  LPVOID lpContext
){
 cout << lpGuid    << "t"
   << lpcstrDescription << "t"
   << lpcstrModule  << "t"
   << lpContext   << endl;
 return TRUE;
}

int main(){
 cout << "sound list:n";
 if ( DS_OK != DirectSoundEnumerate((LPDSENUMCALLBACK)DSEnumCallback, NULL) ) {
  cerr << "DirectSoundEnumerate error n";
 }

 cout << endl;

 cout << "sound capture list:n";
 if ( DS_OK != DirectSoundCaptureEnumerate((LPDSENUMCALLBACK)DSEnumCallback, NULL) ) {
  cerr << "DirectSoundCaptureEnumerate error n";
 }

 return 0;
}

Read Full Post »

IE 外掛-繁簡字轉換

Read Full Post »

 
今天對平常慣用的字串寫法的效能作一些簡單的測試,看哪一個效能比較優,以作為未來撰寫程式上的考量之一,測試程式請參考附錄,如果有錯請指教,下面是執行的結果:
$a = "hello";
$b = "world";
$c = "arick";
執行運算 100 次為一個單位時間,累計 10 個單位後取平均
case 1:
 $out = $a . $b . $c;
 平均:0.000521636009216 sec
—————————————————–
case 2:
 $out .= $a;
 $out .= $b;
 $out .= $c;
 平均:0.00125730037689 sec
—————————————————– 
case 3:
 $out = "{$a}{$b}{$c}";
 平均:0.00104262828827 sec 
—————————————————– 
case 4:
 $out = sprintf("%s%s%s", $a, $b, $c);
 平均:0.00283813476562 sec
就相對效能而言,似乎直接串接成一行的效果較佳,其次是將變數直接放入字串中,我原先以為 case 1 和 case 3 的效能應該差不多,想不到出乎我的意料,另外,我原先以為 case 3 的效能最佳,看來以後要注意一下寫法了。不過從容易修改的角度呢?我還是覺得 case 3 最優,不過可讀性稍差一些。case 4 最差是可以理解的,因為多了一層函式呼叫和其他的運算。

附錄:測試程式
<?php
class CTimer {
 var $_time_start;
 var $_time_end;
 var $_isRun;
// public:
 function CTimer(){
  $this->_time_start = -1;
  $this->_time_end = -1;
  $this->_isRun  = false;
 }
 function start(){
  if ($this->_isRun === true){
   return false;  
  }
  $this->time_start = $this->_microtime_float();
  $this->_isRun  = true;
 }
 function stop(){
  if ($this->_isRun === false){
   return false;  
  }
  $this->time_end = $this->_microtime_float();
  $this->_isRun  = false;
 }
 function getCountTime(){
  return $this->time_end – $this->time_start;
 }
// private:
 function _microtime_float()
 {
    list($usec, $sec) = explode(" ", microtime());
    return ((float)$usec + (float)$sec);
 }
}
$aTimer = new CTimer();
$count_test = 10;
$a = "hello";
$b = "world";
$c = "arick";
$data = array();
for($k=0; $k<$count_test; ++$k){
 $aTimer->start();
 for($i = 0; $i<100; ++$i){
 // case 1:
 // $out = $a . $b . $c;
 // case 2:
 /*
  $out .= $a;
  $out .= $b;
  $out .= $c;
 */
 // case 3:
 // $out = "{$a}{$b}{$c}";
 // case 4:
  $out = sprintf("%s%s%s", $a, $b, $c);
 }
 $aTimer->stop();
 $time  = $aTimer->getCountTime();
 $data[] = $time;
}
echo array_sum($data)/$count_test ."sec<br/>";
//print_r($data);
?>

Read Full Post »

Older Posts »