2008/11/16

[DirectX]我的 sample 02

最近公司請了老師來教3D的部份,把上課的成果拿來貼一下 ^__^

 sample01
這跟第一個sample 有什麼不同呢?其實這是屬於pick的部份,也就是在3D的環境中,被滑鼠點到的部份,就會產生反應。

Sample02

這個就更有趣了,中間倒過來的小孩照片,其實個圓柱體上面貼個小孩的圖片,但是會上下轉動的,這種聽說通常做在河水上,然後再投影到黑色的材質上。

以上就是最近的作業了,以後還有新的作業還會貼上的。

2008/09/20

[Corsa]修車實錄20080920

在颱風天的早上本來想要開車出門的,沒想到點不起火。到了這禮拜六才有空來去車廠修。

本來都是到台北的生哥那邊去修,可是這次火點不起來,叫拖車,拖到台北也要一、二千元,

所以就想到附近的車場去修,問了以前修車的老闆(目前已經歇業),介紹了附近的車廠,

就來到「富業」的車廠。



 

由於一開始火點不起來,所以就請修車廠的師傅來推車,後來發現是啟動馬達壞掉。

最後還發現冷氣的壓縮機也是有問題,但是這個月的預算超過,還是下個月再修吧....

以下是這次修車的價錢:

啟動馬達                         3300

火星塞                             1000

機油兩瓶                           500

加油                                  790

----------------------------------------------------------

總計                                5590

 

之後還要冷氣的壓縮機要修....


2008/09/03

[程式]STLport vs Visual Studio 2008

最近在寫自已的程式,聽說 STLport 不錯用,就拿來編譯了一下,沒想到沒有支持vs2008,

於是就參考網路上的文章,如何順利編譯成功,



(1) 首先執行 C:\Program Files\Microsoft Visual Studio 9.0\VC\vcvarsall.bat

我在執行這個bat的時候,還是不能編譯,於是發揮我努力的精神發現,是執行C:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools\vsvars32.bat,於是我就COPY到 \STLport-5.1.5\build\lib\ 目錄下,再執行

(2)然後在 \STLport-5.1.5\build\lib\ 進入 cmd 視窗,輸入 configure -c msvc8

(3)如果要編譯成lib 輸入 nmake /fmsvc.mak install

(4)以上如果沒有意外的話 應該會順便成功編譯,不過當然沒有這麼順利,編譯後會出現一堆 dll 的錯誤

此時,就要到 \STLport-5.1.5\stlport\st\config\user_config.h增加一行

#define _STLP_STATIC_CONST_INIT_BUG 1

(5)最後再重複上面的指令,應該就可以編譯成功了

以上,感謝 估狗大神,和網路上分享大大的經驗

參考以下網站:
http://kimiya25.spaces.live.com/blog/cns!27A083D4FD9435E9!920.entry
http://blog.narahome.com/archive/200806


2008/08/15

[DirectX]我的 Sample 01

KEngine Sample 1

最近把之前工作的 DirectX 程式拿來重做了一下,把一些元件分離,設定一下 CallBack Function ,讓每個程式可以設定不同的Device設定,不需要每當做新的程式時,就更改原本的設定。



另外加入了 OIS 這個OpenSource,可以控管 鍵盤/滑鼠/搖桿 ,OGRE 也有使用,編譯也很簡單。使用上看範例也很容易。

另外還想加入 OPENAL (聲音的OpenSource) 、CEGUI(介面的OpenSource)。

不過OPENAL 好像沒有mp3的支援(不太確定,

CEGUI編譯不太容易,雖然比起OGRE簡單多了,可是目前OGRE還沒有建起來過。

原本的程式已經可以繪製2D了 ,只是鏡頭跟世界沒辦法旋轉,所以製作了這個 Sample 01 ,有看過DirectX9的Tutorials的一定很面熟,我就是拿了Matrices的程式來套用。

另外,右邊的東西是什麼呢?其實就是 Console Log, 也就是記載 log 訊息的視窗,與主視窗 共生。可以及時顯示訊息,蠻方便的使用。

繼續來研究 DirectX9 的 Tutorials ,建製自已的3d引擎 ^_^


2008/07/20

[生活]與韓國人的工作

換新工作已經一個月了,從當初想要到科技業然後又被吸引回遊戲業,這之間的風風雨雨實在不少。

到目前的公司,工作上有韓國人要合作,要用英語溝通,讓我更深深的感受到自已英語能力的不足,從面試到目前工作,讓人覺得英語真的是很重要的工具,不管是文件、溝通,都要透過英語。

目前的環境還不錯,但是更希望能夠有自已的未來,希望在目前工作上能夠繼續的努力,學習再學習。

2008/06/08

[程式] What is a Design Pattern?

在面試的時候,遇見一個主管 問說 會不會 "Design Pattern" ,當場就被問倒了!!

那主管說,如果要繼續走程式的路,可能就要學習 "Design Pattern"。

因此相關的資料都會在此留存 讓以後參考用!!



http://www.codeguru.com/forum/showthread.php?t=327982

http://www.javaworld.com.tw/confluence/display/designpattern/Home


2008/06/07

[面試]2008年6月份 面試經驗

面試真的對我而言,真的是一種很累的活動,因為我對台北的不熟悉,住的地方「軟體工程師」之類的工作實在也算是幾乎沒有。不過面試有個好處,是了解現在業界在做什麼東西,所需的人才是什麼,另外也讓我小小的瘦了幾公斤。雖然可以之後沒面試會胖回來...



這次面試的經驗,讓我覺得英文真的是個蠻重要的東西,蠻多比較正規的公司都會考英文,然後我的英文真的很爛,讓我喪失了不少工作的機會。

另外,程式語言,我一直覺得自已學的還可以,雖然學校學的比較淺。後來到公司考程式 C/C++ 的時候,出來的分數真的打磨掉我的信心,可能因為只是資訊管理出身,也可能是上課不用心,一些比較細部的東西,在我的粗心之下,真的分數就很低了。

面試期間,真的有印象好的公司,也有印象差的公司,雖然我考出來的程式分數可能有點低,但是我覺得我有相關的工作經驗,應該可以讓跟主管聊聊天,聊聊一些業界的訊息,對程式的作法。結果遇到一間公司,只有看到櫃台小姐,拿程式考卷給我,考完就跟說我不及格,謝謝再連絡了,實在是對這家公司印象不太好。

當然在印象好的公司面試,雖然我的成績不太好,但是面試主管還出了一題,讓我再試一遍,而我解出來的,主管還是願意錄用我,雖然之後沒有去那間公司,但我覺得對那家公司印象就很好。那間公司還是個上市公司,雖然拒絕了,但是心理還是很感恩的。

面試連續一個禮拜之後,真的打磨掉我的信心,但是也讓我知道自已所缺少的,未來必要了解的東西。

在此,謝謝給我面試機會的公司跟主管。^____^


2008/03/31

[VBS]資料夾內檔案內容增加

就是會在同一個目錄內檔案增加幾行的文字,程式碼如下:




' 日期:20080308
' 作者:Kwedr
' 作用:在檔案後增加資料'
' 開啟瀏覽資料夾畫面,選擇資料夾
dim oShell
dim oFolder
dim oFolderItem
set oShell = CreateObject("Shell.Application")
set oFolder = oShell.BrowseForFolder(0, "選擇你要更改檔名的資料夾", 0)
set oFolderItem = oFolder.Items.Item
dim fileItem
dim name
Const ForAppend = 8
Set objFSO = CreateObject("Scripting.FileSystemObject")
For each fileItem in oFolder.Items
name = oFolderItem.Path & "\" & fileItem.name
Set opFile = objFSO.OpenTextFile( name , ForAppend)
opFile.WriteLine("")
opFile.Close
Next
Wscript.echo "完成"

2008/03/15

[VBS]更改資料夾內檔名

最近都在用PDA看小說,可是下載下來的檔案都很大,如果一次開啟,就會造成一整個LAG。

然後就在網路上找切割程式,但是好像沒有找到文字檔的切割,就隨便找一個切割軟體來使用。

但是,如果檔名為"xxx.txt",切割後就會變成"xxx.txt.001",於是我就寫了一個程式,把後面的001 跟 txt 互換的程式。

原始碼如下:



' 日期:20080308
' 作者:Kwedr
' 作用:更改檔名
'
'開啟瀏覽資料夾畫面,選擇資料夾
dim oShell
dim oFolder
dim oFolderItem
set oShell = CreateObject("Shell.Application")
set oFolder = oShell.BrowseForFolder(0, "選擇你要更改檔名的資料夾", 0)
set oFolderItem = oFolder.Items.Item
dim fileItem
dim tmp,pos,name,ext,no,strlen
dim oldname,newname
Set objFSO = CreateObject("Scripting.FileSystemObject")
For each fileItem in oFolder.Items
strlen=Len(fileItem.name)
oldname = oFolderItem.Path & "\" & fileItem.name
'Wscript.echo "oldname:"&oldname
if pos <= 0 then
Wscript.echo "oldname:"&oldname
end if
pos = InStr(fileItem.name,".")
name = Left(fileItem.name,pos-1)
'Wscript.echo "name:"&name
tmp = Right(fileItem.name,strlen-pos)
pos = InStr(tmp,".")
'Wscript.echo "tmp:"&tmp
strlen=Len(tmp)
ext = Left(tmp,pos-1)
'Wscript.echo "ext:"&ext
tmp = Right(tmp,strlen-pos)
no = String(3-Len(tmp),"0")+tmp
'Wscript.echo "no:"&no
newname = oFolderItem.Path & "\" & name&"_"+no&"."&ext
'Wscript.echo "newname:"&newname
objFSO.MoveFile oldname, newname
Next
Wscript.echo "完成"

2008/02/17

[WAnts]使用說明

版本:0.3

更新日期:20080217

  1. 功能說明
  2. 進階說明
  3. 下載範例

功能說明

啟始網址

image

輸入要開始抓取的啟始網址,可輸入多行網址與使用{}方式。

[Top]

次頁關鍵

image

在啟始網頁與接下來的網頁中,使用連結來判斷下一頁的網址,可輸入多行與使用{}方式與*方式。

只需要輸入部份關鍵字串,即可使用。

如果空白則所有連結都會抓取。

image

當選取了不換頁,就不會抓取下一頁的連結。即次頁關鍵失效。

image

「建立資料夾」,使用次頁關鍵的第一筆網址,來當資料夾的名稱,常用來抓取討論區時,以每篇標題來分類,抓取的圖檔就會分在不同的資料夾中。如果需要抓取簡體論壇,就需要勾選「目錄簡轉繁」。

[Top]

下載關鍵

image image

網頁中的圖片連結判斷是否需要下載,可輸入多行與使用{}方式與*方式。

只需要輸入部份關鍵字串,即可使用。

如果空白則所有圖檔都會抓取。

圖檔長寬用來判斷圖檔長寬,大於等於設定值即下載。

目前支援 bmp、jpg、png、gif、psd,等5種。

[Top]

Cookie 使用

image

不使用Cookie

當抓取Yahoo漫畫時,如果開啟,下載會失敗。

<0.3之前版本因為預設使用,所以會下載失敗。>

Cookie

使用儲存在電腦中的Cookie資料,在登入網站或論壇時,通常會讓使用者選取Cookie的記錄時間,一般而言非「瀏覽器關閉」即失效的Cookie,就會存在電腦中。

Session Cookie

抓取IE瀏覽器的Cookie資料,使用時,請先用IE瀏覽器開啟要抓取的網址,並在抓取期間不能關閉。

[Top]

下載模式

image

文字模式

抓取網頁的HTML原始碼,判別連結和圖檔的網址,無法判別JavaScript產生的網址,速度較快,下載網頁內容同時判別網址。

網頁模式

使用IE瀏覽器開啟網址,抓取其中的網址連結和圖檔的連結,可視即可抓。速度較慢,因為要等網頁載入完畢。
目前只支援使用連結方式換頁,暫不支援使用按鈕等其他方式。

<程式中IE7 不支援 iFrame ,IE6可以 >

單網頁模式

由於在使用IE7時,同時開啟太多網址,會產生失敗訊息,使用單一網頁,可以減少失敗。

[Top]

Proxy模式

image

Host:Proxy網址 : ProxyPort

使用Proxy:勾選時使用Proxy

只在下載檔案使用:勾選後,文字模式下載網頁時不使用Proxy,下載檔案使用Proxy

以上 只適用於文字搜尋模式與下載檔案,網頁模式請自已設定IE瀏覽器。

[Top]

逾時設定

image

文字模式或下載檔案時超過逾時設定即會中斷下載,網頁模式會加長逾時設定。

[Top]

儲存網頁

只在文字模式時使用,方便取得網頁內容。

[Top]

進階說明

網址設定

{}模式

可使用{001-002} {a-z}{A-Z}

範例:

http://www.myweb.com.tw/{01-02}-{a-z}.html
會產生如下網址:

http://www.myweb.com.tw/01-a.html

http://www.myweb.com.tw/02-b.html

說明:

產生的網址數,由第一個{}產生的個數決定。

數字型態,可由數字的個數決定是否要填「0」

*模式

次頁關鍵與下載關鍵使用,當輸入如下

http://www.*.com.tw/01-*.html

以下網址都可成功

http://www.myweb.com.tw/01-abced.html

http://www.yourweb.com.tw/01-454645666.html

[Top]

INI格式

[Config]

SavePath 儲存目錄

Proxy Proxy網址

TimeOut 逾時(毫秒)

SaveHtml 是否儲存網頁(文字模式)

SaveHtmlPath 儲存網頁目錄

UseProxy 是否使用Proxy

UseProxyOnlyFile 是否只在下載使用Proxy

[UrlKeyWord]  判別網址HTML語法
Num 判別網址語法數量

[UrlKeyWord/KeyWord01]  判別網址HTML語法第一筆

Num 關鍵字數量
Word01 第一關鍵字

說明: 在HTML一般的網址連結方式是使用

<a href="test.html">test</a>

組成有 a 、 href 、 =

但是在ini檔中 可以看到 a、*、href、=

因為在 a 跟 href 可以插入其他的語法,所以 中間的 都以 * 代替

下載關鍵語語法 <img scr="p.jpg"> ,使用方式如上,如果有需要,可以自已更改。

[Top]

下載範例

文字模式

抓取Yahoo漫畫極樂地獄為例:

啟始網址:

image

http://tw.comics.yahoo.com/080122/260/3ta8j.html

次頁關鍵:

首先對次頁連結按右鍵->內容

image

取得網址

image

多幾個網頁的比較之後,都大概是以下網頁內容為主

輸入 http://tw.comics.yahoo.com/*/260/

下載關鍵:

對圖檔按右鍵->內容,取得如下資料

image

多幾個網頁比較之後,大概是以下網址為主

輸入 http://tw.news.yimg.com/comics/comics_whatthehell/

接下來就選取

image

再按下

image 

就可以抓取圖片了。

[Top]

[回到程式主頁]

如有使用上問題、Bug、建議,請至各版本更新資料中留言,謝謝

如有此說明意見,請在此留言,非與說明意見相關,將刪除,請見諒

2008/02/16

[WAnts][20080222][0.3]更新訊息

更新日期: 20080222

版本代號:0.3.01

更新資料如下:

執行頁:

  • 增加圖檔長、寬、檔案大小限制(以前只要長或寬條件符合即下載,現在要全部條件符合才可下載)。

系統:

  • 下載執行緒數更改 網頁:5 下載:5 ,當網頁執行緒為0 時,下載執行緒增為 8 。 
  • INI增加記錄圖檔限制。

以上,感謝網友建議。

 

更新日期: 20080215

版本代號:0.3

更新資料如下:

執行頁:

  • 畫面配製更改
  • {}語法更改,一個網址二個以上{}支援
  • 次頁關鍵、下載關鍵 支援 {} 語法
  • 在沒有ini檔下,下載目錄自動判別執行檔目錄下"DownLoad"
  • Cookie模式增加 Session Cookie模式
  • 下載模式增加網頁模式、單網頁模式
  • 檔案下載改為 百分比模式,同時更改某些顯示字串

設定頁:

  • Proxy設定增加,設定使用Proxy,只在下載檔案使用
  • 現在使用INI檔,如要變更設定值,請按確定後更改
  • 在沒有INI檔下,儲存網頁目錄自動判別執行檔目錄下"SaveHtml"

系統:

  • 增加INI檔儲存設定。
  • 可在INI中,增加、修改下載語法支援
  • 下載執行緒數更改 網頁:3 下載:3

主頁位置

以上,如有[0.3版本]使用上問題、Bug、建議,請在此回應,謝謝。

[作品]WAnts 會換頁抓圖的軟體

capture_02162008_113336
名稱:
WAnts

功能:
支援換頁、可限定大小的抓圖軟體
動機:
由於現在抓圖的軟體不多,能抓取網頁中的特定圖,能自動換頁的更少了,只能用砍站軟體慢慢砍,於是就產生我寫這個軟體的想法。
使用教學:
Go
使用程式:
Visual Studio 2008 Express Edition
wxDev-C++
wxWidgets + wxActiveX 1.0
下載:[DropBox] (20131209)

更新訊息:
[20080222]0.3.01版本
[20080215] 0.3版本
如有使用上問題、Bug、建議,請至各版本更新資料中留言,謝謝

2008/02/08

WTL with Visual Studio 2008 Express

最近在寫WAnts 的更新,使用 ie 透過 ActiveX,用wxWidgets 實在是不方便,有許多的錯誤,例如在IE7下抓取iFrame不知道為什麼一直錯誤,所以就想來裝裝看另一款有名的「WTL」。

在WTL安裝之前,請先安裝 PlamtForm SDK。我安裝的版本是「Microsoft Platform SDK for Windows Server 2003 SP1」

  • WTL目前的版本是 8.0,在下載安裝之後,並沒有內附 2008Express 的安裝,於是修改 "\WTL80\AppWiz\setup80x.js"的檔案,編輯內容把8的字串都改為9,再另存為 "setup90x.js" ,點擊執行就可以安裝到 2008 Express 上了。
  • 接下來修改 PlamFormSDK的檔案,在路徑"Microsoft Platform SDK\Include\atl\atlbase.h",在288行的位置,修改如下

#pragma pack(pop)

/*
PVOID __stdcall __AllocStdCallThunk(VOID);
VOID  __stdcall __FreeStdCallThunk(PVOID);

#define AllocStdCallThunk() __AllocStdCallThunk()
#define FreeStdCallThunk(p) __FreeStdCallThunk(p)

#pragma comment(lib, "atlthunk.lib")
*/
#define AllocStdCallThunk() HeapAlloc(GetProcessHeap(),0,sizeof(_stdcallthunk))
#define FreeStdCallThunk(p) HeapFree(GetProcessHeap(), 0, p)

#elif defined (_M_AMD64)
#pragma pack(push,2)

以上,也可以增加專案中的stdafx.h 修改如下:(由TabBrowser中 支援 2005 Express 參考)

//#ifdef _VC80X
  // Support for VS2005 Express & SDK ATL
  #define _CRT_SECURE_NO_DEPRECATE
  #pragma conform(forScope, off)
  #pragma comment(linker, "/NODEFAULTLIB:atlthunk.lib")
  #pragma warning(disable: 4565) // redefinition; the symbol was previously declared with __declspec(noalias)
  #pragma warning(disable: 4068) // unknown pragma
//#endif // _VC80X

#include <atlbase.h>

//#ifdef _VC80X
  // Support for VS2005 Express & SDK ATL
  namespace ATL
  {
    inline void * __stdcall __AllocStdCallThunk()
    {
        return ::HeapAlloc(::GetProcessHeap(), 0, sizeof(_stdcallthunk));
    }

    inline void __stdcall __FreeStdCallThunk(void *p)
    {
        ::HeapFree(::GetProcessHeap(), 0, p);
    }
  };
//#endif // _VC80X

  • "Microsoft Platform SDK\Include\atl\atlwin.h",在1753行的位置

for(int i = 0; i < m_aChainEntry.GetSize(); i++)

  • "WTL80\AppWiz\Files\Templates\1033\root.rc",在507的位置

[!if WTL_COM_SERVER]
1 TYPELIB "[!output PROJECT_NAME].tlb"
[!endif]
[!if WTL_USE_MANIFEST]
//CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "res\\[!output PROJECT_NAME].exe.manifest"
[!endif]

  • 如果在編譯Sample時出現以下錯誤

CVTRES : fatal error CVT1100: duplicate resource. type:MANIFEST, name:1, language:0x0409

LINK : fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt.

就尋找專案中的 ".rc" 檔案,並注解掉
//CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST

 

以上,就是編譯WTL Sample 中遇到的問題,解決的方式。

 

2008/01/19

[聚餐]好吃國

名稱:好吃國
類型:巴西窯烤、半自助式
地址:台北市南京東路5段6號2樓
價位:午餐 330 + 10%
人員:11名

又一次大學同學的聚餐,回想也聚餐了不少次,這次的巴西窯烤,一開始在樓下時看著電視日本台的節目介紹,肉剛上來時,用刀子切下去時油滴下來的樣子,我同時口水也滴了下來。

所謂的半自助式,主餐「窯烤」出來的東西,是由幾個服務人員(有一個應該是老闆自已),在你桌面邊喊,「要不要吃啊 ~」「要不要吃啊~」,如果你要吃呢 就把劍上剛烤好的一串的東西分一些給你,另外還有自助式的餐點、飲料。

先講一下自助的餐點有:生菜沙拉、一些熟食(來不及吃,因為肉一直上來)、水果、甜點,湯是我覺得比較特別的,有羊肉爐、一點都不辣的麻辣鴨血,不過我覺得鴨血還不錯,有些地方的鴨血因為一直煮會變的有點老,不過這邊的完全不會,而且一咬下去汁都會噴出來,另外還有巴西蘑菇湯,不過蘑菇已經切碎,吃不到完整單個蘑菇,還是巴西的蘑菇湯,都是切碎的?

窯烤的主菜有:
豬肉,一整大塊串在劍上拿去烤,要吃的時候會切一小塊下來給你,切的時候會看到油噴射而出的樣子,應該算是招牌了。
魷魚圈,網路上蠻多人討論的,其實還不難吃也沒有網路上說的那麼硬,只不過我很好奇,怎麼每塊都看起來一樣大圈。
香蕉:這應該是最特別的菜了,香蕉烤了之後,烤的比較軟爛的比較好吃,會有烤香蕉的香味,甜味也會比較突出,就是會有點爛爛的,可能有些人不能接受。另外記住皮是不能吃的喔,吃到一半聽到隔壁桌的把皮也吃了下去,當下想問問說烤香蕉皮味道怎麼樣?
其他的東西還有:方型牛肉、方型魚肉、雞心、雞翅(沒有棒棒腿的部份,只有二節翅)、杏苞菇、青椒。
不是烤有的:絲瓜,不知道是不是我吃的少,覺得他們的煮絲瓜中間軟,外皮有點脆,還不錯,另外還有洋蔥圈、薯條(?)。

以上肉的部份會一直上,青菜就比較少了。聽網路說中午沒有羊肉,果然沒有烤羊的部份出現。

飲料由於感冒還沒好,只能喝熱的,喝了一杯巴西咖啡,非常淡沒什麼味道,還有熱紅茶倒是喝了不少,因為沒有其他熱飲。

感想:桌面有點小,其實盤子常常裝不滿,應該可以用小一點的,不然自助式的盤子,會不太夠放。還是因為晚餐比較豐盛。不過以這個價位吃到飽,已經還不錯了。