發表文章

目前顯示的是 2013的文章

eclipse c++ 編譯環境注意事項

一般在按下執行後eclipse會先編譯完C++ code後在Console視窗中顯示執行結果,但如果視窗中空空如也且直接執行編譯好的程式時會出現 找不到 libgcc_s_dw2-1.dll 則請在 Project -> Properties -> C/C++ Build -> Settings -> Tool Settings -> MinGW C++ Linker -> Miscellaneous -> Linker flags 欄位中加上 -static-libgcc -static-libstdc++ 即可。 如果還是有狀況則到 MinGW/bin 目錄中將 mingw32-make.exe 改名成 make.exe 即可

Virtual Box使用分享資料夾

圖片
1.  請先 安裝Guest Additons 2.  請將虛擬機器Ubuntu關機 3.  在VirtualBox的主畫面,選擇你的Ubuntu虛擬機器點選 設 定值->分享資料夾 ,       按旁邊的 + 號新增一個分享資料夾,就像這樣:資料夾名稱在這裡是 web-pic ,             如果你的 分享資料夾只想唯讀的話請將Read-only 打勾 4.  啟動虛擬機器Ubuntu 從應用程式->附屬應用程式->終端機 ,開啟一個終端機視窗 5.  輸入下列指令檢查客端額外功能是       否已正確安裝:         lsmod | grep vb       如果已安裝正確應該顯示像        vboxvfs 42048 0       vboxadd 25128 11 vboxvfs       注意第二組的數字並不會和這裡的一樣,但只要有出現這樣的訊息就表示沒問題了 6.  在終端機視窗新增一個你要放分享資料的資料夾,例如:        mkdir /home/使用者名稱/share (其中的使 用者名稱就是你登入Ubuntu的名稱),有一點要注意的是       這個資料夾的名稱不能和上面所設的共享資料夾名稱一樣,否則會連不上 7.  在終端機視窗鍵入 cd /etc  進入/etc目錄 8.  在終端機視窗鍵入 sudo gedit modules 來 編輯modules這個檔案 9.  在這個檔案的最後面加上 vboxvsf 和 vboxadd 這兩列,然後存檔、關閉gedit程式 10.同樣在終端機視窗鍵入 sudo gedit fstab 來 編輯fstab這個檔案 11.在這個檔案的最後面加上 web-pic /home/使用者名稱/share vboxsf defaults 0 0 ,然後一樣存檔、關閉       gedit程式 12.虛擬機器重新啟動,進入之後你應該可以在家目錄內的share資料夾內看到主端分享的檔案了

C++函式指標的運用及使用JAVA的替代方法

最近同事幫新進同事講解函式指標的妙用,在這裡做一下心得及替代方法比較 C & C++ 函式指標 語法:     type (*functionname)([type],..)    ->  回傳型態 (*函式名稱)(參數,..) 例: #include "stdafx.h" #include using namespace std; void printA(){      cout << "printA" << endl; } void printB(){      cout << "printB" << endl; }         void printC(){      cout << "printB" << endl; } int _tmain(int argc, _TCHAR* argv[]) {         void (*printValue[3])();                  printValue[0] = printA;          printValue[1] = printB;          printValue[2] = printC;         for( int i=0 ; i<3 3="" i="" span="">   printValue[i]();         }          system("PAUSE");         return 0; } RUN.... printA printB printC 或許你會覺得void (*printValue[3])()宣告方式不好看,你也可以這樣做        typedef void (*printValue)();     //將其宣告為指標資料型態        printValue pv[3];      //也可以用  printValue *pv = new printValue[3];

使用NativeJ包裝java jar

java程式寫作完成後,往往會將其編製成jar檔以方便程式執行,目前windows系統已經可以點兩下滑鼠左鍵即可執行jar檔,但在較舊的windows系統往往必須自己寫bat檔,如此並不是很方便,而且jar檔也容易被解壓縮後實行反組譯,所以我們會希望jar檔包裝成.exe檔,底下介紹NativeJ使用方式,運用此程式包裝後的jar檔將不可回復成jar檔。 1.開啟NativeJ後會自動執行Project Wizard ,一開始就要你去指定NativeJ的專案檔,不能輸     入只能Browse,一開始就悶了,如何下手阿~~按下cancel囉。 2.由於我們還是希望使用Project Wizard,所以先儲存一個空專案(按下Save Project),然後再按     下New Project Wizard這樣就可以按Browse找到我們剛剛儲存的專案檔,next。 3.Executable name ->輸入你想要製作的exe檔名稱,next。 4.Icon file->輸入你想要exe檔的icon檔,可以跳過,next。 5.Application main class->輸入你的程式main class這不用說明吧,next。 6.Application type 這裡兩個選項 console application  graphical application 就看你的程式是     console  mode 或 graphical mode囉,next。 7.重點來拉,Application JAR file,將你的主要jar檔add進來,並將你會用到的其他jar檔一併     add進來。     請注意,這裡的所有jar檔你可以從不同地方的資料夾指定進來,程式在專案設定完成後     會將這些jar檔copy一份到此專案目錄,next。 8.Finish,到此我們完成了大部分設定了,接下來開始各項細部設定。 9.首先看到左邊的Project->Java Runtime,將Baseline version選擇成你的java版本。 10.將Classpath中所有內容剪下並貼到Embedded JAR files,這樣將來包好的exe檔就會將        這些jar檔包裝成一個exe檔,這裡如果我們沒有作搬移,則這些jar檔將不

C++Builder 2007 Release程式時要包含builder元件的設定方式

由於C++Builder非微軟所開發的視窗開發工具,所以如果以Builder開發程式尤其是視窗程式,往往會用到BCB的特定元件,這些原件並不存在於微軟視窗系統中,所以程式開發完成必須將所用到的BCB元件一併編譯成exe檔,如此程式才能執行,這就像以往使用VB開發程式常常缺乏ocx檔是一樣的。 1.將Paths and Defines中的Build configuration設為Release。 2.將Linker中的Linking的Dynamic RTL取消。 3.將packages中的Build with runtime packages取消。 如此即可

直角座標、極座標之轉換

圖片
x = radius * cos(angle) y = radius * sin(angle) angle = atan(y/x) radius = sqrt(x*x+y*y)   atan : 反正切 sqrt : 平方根值 帶入以上公式即可作兩個座標系之轉換

在Ubuntu上使用netbeans6.9編輯C++

1.在ubuntu上已預設安裝 C 編譯器 gcc 但 C++ 編譯器沒有安裝,所以要從Synaptic套件管理器中   安裝 g++,請在套建中選較新版本安裝。 2.安裝完成後,打開netbeans6.9 工具 -> 選項 -> C++ -> Built Tool頁簽 -> C++ Compiler 填入   /usr/bin/g++-4.1(這裡的版本編號視您所下載的而有所不同)。 3.接下來在 Code Assistance 頁簽中的 C++ Compiler 依序加上 Include Directories 如下列   ● /usr/include/c++/4.1.3/i486-linux-gnu      ● /usr/include/c++/4.1.3   ● /usr/include/c++/4.1.3/backward   ● /usr/local/include   ● /usr/lib/gcc/i486-linux-gnu/4.1.3/include   ● /usr/include ☆ 請注意:以上順序請勿顛倒,因 C/C++ 在 include 時有順序問題,請特別注意!  4.如此就可以在netbeans上編輯C++程式了。  

當除數為0時的SQL語法

當除數為0時的SQL語法 select case a when a = 0 then 0 else b/a end as '商數' from teblename

在 Blogger 上用 Google Code Prettify 顯示程式碼

先將下列文字貼到 範本-編輯HTML-找到 在上方加上 <link href="http://google-code-prettify.googlecode.com/svn/trunk/src/prettify.css" rel="stylesheet" type="text/css"></link> <script src="http://google-code-prettify.googlecode.com/svn/trunk/src/prettify.js" type="text/javascript"> </script> 再搜尋 標籤在後面加入 onload='prettyPrint();' 再來是要加上框框及一些顏色,到範本-自訂-進階-增加CSS .post .code { display: block; font-family: Courier New; font-size: 10pt; overflow:auto; background: #f3f3f3; border: 1px solid #ddd; padding: 10px 10px 10px 21px; line-height: 1.2; border-radius:3px; } 之後如下將想要框起來的文章如下格式填入即可 <pre class="prettyprint code"> 輸入想顯示的程式碼 </pre> 如果在框起來的文章中有html標籤, 可用"& lt;"取代'<',"& gt;"取代'>', "& amp;"  取代  "&"

Unity3D範例之3.DragRigidbody

 DragRigidbody.cs using UnityEngine; using System.Collections; public class DragRigidbody : MonoBehaviour { public float spring; public float damper; public float drag; public float angularDrag; public float distance; public bool attachToCenterOfMass; private SpringJoint springJoint; private Rigidbody body; // Use this for initialization void Start () { spring = 50.0f; damper = 5.0f; drag = 10.0f; angularDrag = 5.9f; distance = 0.2f; attachToCenterOfMass = false; } // Update is called once per frame void Update () { if(!Input.GetMouseButtonDown(0)) return; Camera mainCamera = FindCamera(); RaycastHit hit; //檢測滑鼠按鍵是否點擊 if(!Physics.Raycast(mainCamera.ScreenPointToRay(Input.mousePosition),out hit,100)) return; //是否有點擊到剛性物體或剛性物體可被物理控制 if(!hit.rigidbody||hit.rigidbody.isKinematic) return; if(!springJoint){ //彈性物體是否存在 //新增一個名稱為"Rigidbody dragger"的遊戲物件 GameObject go = new GameObject("Rigidbody dr

Unity3D範例之2.取得Unity3D上的所有物件

void Awake(){ Object[] objs = FindObjectsOfType(typeof(GameObject)); foreach(GameObject go in objs){ print("objname:"+go.name); } }

Unity3D範例之1.FPSWalker

FPSWalker.cs using UnityEngine; using System.Collections; [RequireComponent(typeof(CharacterController))] //js->@script RequireComponent(CharacterController) public class FPSWalker : MonoBehaviour { //請不要在這裡就將參數初始化 public float speed = 6.0f; public float jumpSpeed = 8.0f; public float gravity = 20.0f; private Vector3 moveDirection = Vector3.zero; private bool grounded = false; // Use this for initialization void Start () { //一定要在Start或Awake裡面做初始化,這樣才不會有參數值更改無效的問題 speed = 6.0f; jumpSpeed = 8.0f; gravity = 20.0f; moveDirection = Vector3.zero; grounded = false; } // Update is called once per frame void FixedUpdate () { if(grounded){ //取得自身座標 moveDirection = new Vector3(Input.GetAxis("Horizontal"),0,Input.GetAxis("Vertical")); //轉換自身座標為世界座標 moveDirection = transform.TransformDirection(moveDirection); //x,y,z向量值乘與speed moveDirection *= speed; //有按到Edit-Project Settings-Input中Ju
Unity3D 使用C#注意事項: 1.繼承於MonoBehaviour       public class NewBehaviourScript:MonoBehaviour{...} //Unity C#腳本建立時會自動產生 2.在Awake或Start函式中做初始化 3.類別名稱需與檔案名稱相同 4.Coroutines(協同程序) 相較於C#有不同的語法      C#中有所謂的Thread來實現多執行緒的操作,但在Unity3D中有些元素是不能操作的,      這個時候就可以用Coroutines來實現Thread,做法是使用StartCoroutine("function_name")來完            成,其中function_name的function以IEnumerator來實做,範例如下:          StartCoroutine("func");  //也可以寫成StartCoroutine(func());      IEnumerator func(){           while(true){              yield return 1;  //數字1是畫面更新一次就返回一次,或是寫成             // yield return new WaitForSeconds(0.5f);  每0.5秒返回一次           }      } 5.不要使用命名空間(namespace) 6.成員變數會條列在Inspector中    當所寫的Script賦予某物件後,Script的成員變數會條列顯示在Inspector中,但在Normal模式    只會條列宣告為public的變數,只有在Debug Mode才會將宣告為private,protected的變數顯    示出來(在Inspector頁籤上在mouse右鍵即可改變模式) 7.避免在constructor(建構函式)中初始化變數    永遠不要在繼承於MonoBehaviour Script的建構函式初始化變數,要在Awake()或Start()中初    始化變數,除非你的Script是繼承至ScripttableObject,才可以