2016年10月27日 星期四

Open Live Writer



自從 Windows Live Writer 不再更新之後,我一直都在留意其他的部落格編輯程式,前一陣子看到這個「Open Live Writer」。是基於Windows Live Writer 製作的,因此兩個程式幾乎一樣,只是 Open Live Writer 是公開發佈在 GitHub 上。
官方網站:http://openlivewriter.org/
下載網址連結:https://openlivewriter.azureedge.net/stable/Releases/OpenLiveWriterSetup.exe

2015年1月7日 星期三

Drupal 7.34 安裝架設於本機 Windows 系統–XAMPP

Image 1

 

Drupal 7.34 的系統需求

在安裝Drupal 之前,先看一下系統需求
  1. 硬碟空間:最小需求15MB,官網建議 60MB
  2. 網頁伺服器:Apache, Nginx or Microsoft IIS
  3. 資料庫:MySQL 5.0.15 或更高版本支援PDO(PHP Data Object), PostgreSQL 8.3 或更高版本支援PDO, SQLite 3.3.7 或更高版本
    Microsoft SQL Server 和 Oracle 需要額外的模組支援
  4. PHP:PHP 5.2.5 或更高版本(建議5.4或更高版本)
參考來源:Drupal System requirements
由於需要 Web Server, Database 和 PHP,我這裡很簡便的只使用XAMPP 5.6.3,至於安裝方式,請自行上網路查詢。

2014年12月18日 星期四

Microsoft XNA Game Studio 2.0 的安裝

xna-header
這篇文章要介紹如何安裝 XNA Game Studio 2.0
首先要確定您的電腦已安裝
Visual Studio 2005

C# Express 2005 下載Link http://www.microsoft.com/taiwan/vstudio/express/visualcsharp/download/
或以上版本
XNA Game Studio 2.0 的系統需求為:
-Windows Vista 或 Windows XP SP2 以上版本 的作業系統。
-可被 Visual Studio 2005 辨識的硬體。
-外加支援 DirectX 9.0c 和 Shader Model 1.1 的顯示卡(有些 Start Kits 建議使用 Shader Model 2.0)。
-如果你要使用 XACT(Microsoft Cross-Platform Audio Creation Tool) 功能來做音效的部份,則您的電腦需要有 .Net Framework 1.1。
如果您覺得很複雜看不懂,就確定您的電腦可以正常跑 DirectX 以及 .Net Framework 就對了。
(有人提出想要知道,我再另外補文章)
接下來就是看圖說故事時間啦

XNA 2.0 遊戲架構簡解

xna-header
我這次要談的是 XNA 2.0 的基本遊戲架構
為什麼特別說是 2.0 呢?
因為我不知道 MS 在以後的版本會不會改成其他的架構
科技日新越益,日後說不定有更好的架構也說不定
(本主題使用 Visual Studio 2005 以及 XNA 2.0)
XNA 2.0 的遊戲架構:
1.初始化 圖像、輸入裝置、聲音
2.載入 資源
3.開始遊戲循環,在每個循環中做以下四件事
  -抓取使用者輸入訊號
  -處理需要的計算 (像是 AI,動作,碰撞偵測 或是其他)
  -檢查是否達成遊戲結束的條件 - 如果是的話則跳出這個循環
  -繪圖至螢幕,產生音效,遊戲控制器的回饋
4.結束 圖像、輸入裝置、聲音
5.釋放資源
(翻譯自 Beginning XNA 2.0 Game Programming)

在 XNA 放置 2D 圖片 - 從背景開始

xna-header
遊戲中最重要的一項就是圖像啦
這篇就是要談怎麼使用 XNA 在遊戲裡放 2D 的圖片
背景是每個遊戲裡都一定會有的 2D 圖
即使是大部份的 3D 遊戲,也會貼一張假山假天空的 2D 背景畫面

2014年10月6日 星期一

Socket Error 錯誤號碼及原因

在Coding 網路連線資料傳輸時,免不了會遇到的錯誤代碼,記錄如下備查
  • Socket error #0 –
    Direct send error.
    直接傳送錯誤。
  • Socket error #10004 [WSAEINTR] –
    Interrupted function call.
    函式呼叫被中止。
  • Socket error #10013 [WSAEACCES] –
    Permission denied.
    沒有權限。
  • Socket error #10014 [WSAEFAULT] –
    Bad Address.
    不正確的地址。
  • Socket error #10022 [WSAEINVAL] –
    Invalid argument.
    無效的引數(參數)。

2014年6月26日 星期四

[Delphi 7]開啟時發生錯誤!Borland license information was found, but it is not valid for Delphi.

開啟 Delphi 時開過了很久都沒動作,後來好不容易動了,卻出現了如下的錯誤視窗:
Borland license information was found, but it is not valid for Delphi.Youcan not run Delphi without this information.Click the 'Exit' button to exit Delphi.
如此只要將
C:\Documents and Settings\用戶名\.borland
文件夾刪除即可
再次開啟時就會自動建立好

2014年3月20日 星期四

[Delphi]視窗位置 Vcl.Forms.TPosition

調整選項以在應用程式剛開啟時,放到你所選擇的位置
以下就各個選項做說明
poDesigned
The form appears positioned on the screen and with the same height and width as it had at design time.
form 將會顯示在和你設計規劃的時候相同的大小和位置

poDefault
The form appears in a position on the screen and with a height and width determined by the operating system.
交由作業系統決定所該顯示的位置和大小,通常都會在上一個程式開啟後的位置再往右下一點

2014年1月15日 星期三

[Delphi] 利用Winsock 檢查要使用的Port 是否已被佔用

注意,如果使用Winsock2 無法正常檢查!!
此程式會檢查給的port 是否已經被使用,如果是就+1,直到找到空著(沒有被使用)的埠為止。
function TNetServer.GetFreePort(aPort: Integer): Integer;
var
  _vSock: TSocket;
  _vWSAData: TWSAData;
  _vAddrIn: TSockAddrIn;
begin
  try
  if WSAStartup(MAKEWORD(2, 2), _vWSAData) = 0 then begin
    _vSock := Socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
    try
      if _vSock <> SOCKET_ERROR then begin
        _vAddrIn.sin_family := AF_INET;
        _vAddrIn.sin_addr.S_addr := htonl(INADDR_ANY);
        _vAddrIn.sin_port := htons(APort);
        while (Bind(_vSock, _vAddrIn, SizeOf(_vAddrIn)) <> 0) and (WSAGetLastError = WSAEADDRINUSE) do
        begin
            inc(aPort);
            _vAddrIn.sin_port := htons(aPort);
        end;
      end;
    finally
      CloseSocket(_vSock);
      WSACleanup();
    end;
  end;
  finally
    Result := aPort;
  end;
end;


如果有需要指定範圍,可在 18, 19行間增加如下:


if aPort > XXXXX then aPort := OOOOO;


XXXXX 是最大的埠號值

OOOOO 是最小的埠號值

2013年12月6日 星期五

[Delphi] Break, Exit, Abort, Continue 使用

Break;
中斷執行迴圈,可從當前 for…to…do、while…do、repeat…until 執行中途跳出,繼續執行該迴圈的下一段程式碼。

Continue;
繼續迴圈,可從當前 for…to…do、while…do、repeat…until 執行中途,忽略以下程式碼,跳到迴圈頭續續執行。

Exit;
離開函式,可從當前 procedure、function 執行中跳出,繼續執行呼叫的程式碼。

Abort;
中斷函式,可從當前 procedure、function 執行中跳出,並觸發 try…except(如有將 Abort 包進 try…except)

Break, Continue 範例結果:
procedure Test;
begin
for i := 0 to 3 do
begin
if i := 0 then begin
continue;
ShowMessage('After Continue' + IntToStr(i));
end;
if i := 2 then begin
break;
ShowMessage('After Break;' + IntToStr(i));
end;
ShowMessage('End of If' + IntToStr(i));
end;
ShowMessage('End of For' + IntToStr(i));
end; // end of procedure


結果應該會依序出現

End of If 1


End of For 3




Exit, Abort 範例結果



procedure Test;
begin
try
Abort;
ShowMessage('After Abort 1');
except
ShowMessage('Enter Except 1');
end;
ShowMessage('Out try...except 1 ');

try
Exit;
ShowMessage('After Exit 2');
except
ShowMessage('Enter Except 2');
end;
ShowMessage('Out try...except 2');
end;



結果應該會依序出現

Enter Except 1


Out try…except 1

2013年12月5日 星期四

[Delphi 7](2014.3.3改)Indy 10 網路元件安裝

舊的方法原本是以下這樣,後來我裝新的XP系統時發現無法成功

首先從 http://www.indyproject.org/downloads/10/indy10.0.52_source.zip 下載壓縮檔。
(或是到這個網頁找 http://www.indyproject.org/sockets/download/files/indy10.en.aspx )

Indy 10 安裝步驟:

移除舊版 Indy 9
  1. 進 Delphi 後,選擇 Component –> Install Packages…
  2. 在 Design Packages 找有 Indy 字樣的選項後,Remove 後離開。
  3. 在 Delphi 裡,選擇 Tools –> Environment Options,打開 Library 標籤,刪除有Indy 的路徑。
  4. 在系統資料夾找所有 Indy 開頭的 Indy*.bpl 和 Indy*.dcp 檔案,並刪除。
開始安裝:
  1. 解壓縮剛下載的 Indy10.0.52_source.zip 檔至 您放置 Lib 的目錄 (例:C:\Program Files (x86)\Borland\Delphi7\Source\Indy10),並將底下四個目錄加入 Delphi 內的 Library 路徑。
  2. 打開 \System\IndySystem70.dpk        ,Compile
  3. 打開 \Core\IndyCore70.dpk               ,Compile
  4. 打開 \Protocols\IndyProtocols70.dpk   ,Compile
  5. 打開 \SuperCore\IndySuperCore70.dpk,Compile
  6. 打開 \Core\dclIndyCore70.dpk            ,Install
  7. 打開 \Protocols\dclIndyProtocols70.dpk,Install
  8. 打開 \SuperCore\dclIndySuperCore70.dpk,Install

 

新的方式(成功率大幅提高)

http://indy.fulgan.com/ZIP/ 下載開發中的Indy10,(2014.3.3)今日的版本是 Indy10_5099.zip 
(下載舊方法的連結 indy10.0.52_source.zip 應該也可以,但我沒試過)

開始進行安裝

先移除原安裝的 Indy (Delphi7之後好像都會自動裝Indy9,大致和舊方式相同,這邊再寫詳細一點):

  1. 進 Delphi 後,選擇上方功能選項 「Component」 –> 「Install Packages…」
  2. 在 「Design Packages」框框裡找有「Indy」字樣的選項,點選後按「Remove」移除(如有安裝過或Delphi7之後版本應該有1,2個)
  3. 全部移乾淨後,按 「OK」離開
  4. 再選擇上方功能選項「Tools」 –> 「Environment Options」,再點開「Library」標籤
  5. 在「Directories」框框裡,找「Library path」的最後面,點「…」按鈕
  6. 尋找列表內,有任何「Indy」字樣的路徑,點選後按「Delete」刪除掉
  7. 刪除完後,點選「OK」離開,關掉 Delphi
  8. 再從檔案總管中,搜尋「系統資料夾」(就是Windows目錄)內所有的Indy開頭的檔案,應該都會在 windows/system32 裡面

確定以上步驟都完成,或是您確定沒安裝任何版本的Indy ,就可以開始進行安裝

  1. 解壓縮剛下載的壓縮檔到你想參照的目錄位置,我是放在 C:\Program Files (x86)\Borland\Delphi7\Source\Indy10
  2. 進入 \Lib 目錄,找Fulld_7.bat,點選執行 (不同版本請自行變通,這步不做應該也可以,10.0.52版沒有這檔案,請自行嘗試)
  3. 點擊打開 \System\IndySystem70.dpk ,然後點 Compile
  4. 點擊打開 \Core\IndyCore70.dpk ,然後點 Compile
  5. 點擊打開 \Protocols\IndyProtocols70.dpk ,然後點 Compile
  6. 在 Delphi 上面功能列選擇「Component」 –> 「Install Packages…」 (用點擊檔案打開後Install的方式經常失敗)
  7. 點「Add…」按鈕,選擇 \Core\dclIndyCore70.dpk,然後「開啟舊檔」
  8. 再點「Add…」按鈕,選擇 \Protocols\dclIndyProtocols70.dpk,然後「開啟舊檔」
  9. P.S. 「SuperCore」可以完全忽視,不用安裝

我照這個步驟的成功率目前是百分百,提供給大家試試看

參照網址 http://www.indyproject.org/Sockets/Docs/Indy10Installation.EN.aspx

2013年12月4日 星期三

[Delphi]設定Record Array不定長度

從資料庫抓取資料出來時,卻不確定筆數有幾筆,可以用這種方式,在將資料庫資料抓出來後,設定陣列的長度空間並放入資料。

定義結構 Record 及 Array

type
RDBData = Record
A:Integer;
B:String;
end;
ARDBData = Array of RDBData;


設定 Array 長度



function GetData: ARDBData;
var
dbData: ARDBData;
i: Integer;
begin
...
dbQuery.SQL.Text := 'SELECT * FROM [User]';
dbQuery.Open;

SetLength(dbData, dbQuery.RecordCount);
for i := 0 to dbQuery.RecordCount - 1 do begin
dbData[i].A := dbQuery.Fields[0].AsInteger;
dbData[i].B := dbQuery.Fields[1].AsInteger;
dbQuery.Next;
end;
Result := dbData;
...
end;



可以注意到,也可以回傳陣列沒問題


2013年10月2日 星期三

[MS-SQL]兩個資料表的值互相比較取值

偶爾會用到,當要尋找兩個(或以上)不同資料表之間,有相同的兩個以上的值需互相比較,找出符合條件的結果之時。
有需要用到 別名Alias

SELECT t1.Value_a1, t1.Value_a2 
FROM ( SELECT [Value_a1], [Value_a2] FROM [Table1] WHERE [ID]=123 ) AS t1,
( SELECT [Value_b1], [Value_b2] FROM [Table2] WHERE [ID]=456 ) AS t2
WHERE t1.Value_a1 <= t2.Value_b1 and t1.Value_a2 <= t2.Value_b2;

2013年9月27日 星期五

[Delphi]TADOConnection 交易

在對資料進行異動前,為避免異動失敗,造成後續存取資料不正確,因此使用ADO交易模式,在發生錯誤失敗時,回復相關異動。

主要動作如下:

  1. 在對資料庫進行任何異動前先 BeginTrans,開始進行新的交易 (ADOConnection 必需已與資料庫建立連接 Connected = True)
  2. 資料庫異動內容 Select, Insert, Update, Delete
  3. 確認異動內容 CommitTrans,此時將資料異動寫入資料庫
  4. 如發生錯誤則取消異動內容 RollBackTrans,則將所有異動取消

Code Sample:

begin
Try
ADOConnection1.BeginTrans; // 開始交易

ADOQuery1.Insert; // 或 Delete, Edit
ADOQuery1.FieldByName('fieldname').Value := ...;
ADOQuery1.Post;

ADOQuery1.Close;
ADOQuery1.SQL.Text:='............';
ADOQuery1.ExecSQL / Open;

ADOConnection1.CommitTrans; // 確認交易
Except
ADOConnection1.RollBackTrans; // 取消交易
end;
end;

2009年12月12日 星期六

沒想到惡靈古堡、惡靈勢力…等等的僵屍復活戲碼有可能要成真了


(僵屍豬)
首先要先看一段新聞報導
------------------<新聞報導分隔線>--------------------

美科學家尋找讓受傷士兵冬眠方法

2009年12月10日 星期四

透過 Google 購買網址

Google 販賣的英文網域名稱是我目前看到最便宜的,一年只要 10 美金,約台幣340元,加上其他費用,也不到台幣400元
其他台灣有在賣的,一年大約在台幣600-800元之間,並且有些不合理且奇怪的收費制度
可以申請的網域有 .com, .net, .org, .info, .biz
首先要進入 Google Apps(Google 應用服務)裡面

2009年9月22日 星期二

各種顏色代表的意義

忘了在哪看到,不過蠻實用的

黃色
代表愉稅、智慧、明白事理及有直覺力。
喜歡黃色的你是一個務實的人,並擅於運用金錢。
經常精力充沛、愛主動幫助朋友,在朋友眼中,
你是一個值得信任、可靠、聰敏而開朗的人。科學家、政治家及商界女強人都偏愛黃色。
黃色代表機智、樂觀、自信。
黃色是三原色之一,屬高明度色,光亮在色環中是最高的,有明快、輕薄的性格特徵,能夠刺激大腦中與焦慮有關的部分,因此具有警告的效果。它也是早上第一道曙光的顏色,代表了太陽的光與熱,充滿了朝氣及希望,給人留下光明、輝煌、充實、成熟、溫暖、透明的感覺。古代黃色甚至是帝王尊川的顏色,代表崇高的地位及智慧。
黃色的至極就是金色,金色是財富與地位的象徵,也代表了奢華和享樂。
黃色會給人機智、樂觀的感覺,也很容易引起人的注意。但少不免在可愛中給人帶點淘氣的感覺。
橙色
這是一種代表愛情和睿智的顏色,代表創作力、野心、能量、驕傲和保護力。

2009年1月7日 星期三

把 Blogger 上面的導覽列 NavBar 移掉

我想這麼做很久了,嘿嘿嘿
今天在這邊看到的
http://arkelin.blogspot.com/2007/10/bloggernavbar.html

想要把導覽列變不見
進入「修改 Html」-> 點擊「展開小裝置範本」
在 </head> 之前加入下列程式碼
.Navbar {visibility:hidden;display:none;}
再點擊「儲存範本」
檢視網誌之後,就看到那一條長長的不見啦!!

2008年11月29日 星期六

IPohone 3G comes to Taiwan 來台灣囉

昨日在逛 Mobile01 的時候看到這篇文章
[快訊]iPhone 3G今(28)日公佈搭中華電信資費方案 8GB售價0元起
IPhone 3G 來台灣囉
中華電信 mPro 商務網站上的 IPhone 頁 http://www.mpro.net/iphone
不過費率方面有點嚇人
在 Mobile01 上面一堆人在討論
由我看來,如本身通話量大且經常使用手機上網的人購買最划算
因為他的三個方案都要一定要會有 行動上網
由其是前兩個方案,都必搭 mPro
顯示中華電信強迫推銷他們的上網服務。
ZDNet 上的文章 觀察:從iPhone費率看出了什麼? 也點明了
我看到 Mobile01 有人拿美國的費率來比較,
並且說台灣的 IPhone 算是便宜的了
但因為各國的物價及使用方式並不相同
我覺得這很難去比較是不是真的比較便宜