2011年8月27日 星期六

[memo] C++ 遞增後置與編譯

#include<iostream>
#include<string>


int main(){
    using namespace std;
    int x=1;
    
    cout << "At first x = " << x << endl;
    cout << "x++ = "<< x++ ;
    cout << ",x++ = " << x++ << endl;
    cout << "So, x = " <<x  << "." << endl;




    cout << "And then, x = " << x << endl ;
    cout << "x++ = " << x++ << ", x++ = " << x++;



system("pause");
return 0;
}


 



看出差異了嗎?


在前段中, x++ 作為後置版本會先印出處理前的"值"之後再進行遞增,


所以 x++ = 1 會先被印出來才遞增一次!


 


至於編譯器的習慣使得 x++ =4 會印在前面這點請看以下解釋:


x++並不是一個完整的運算式,所謂"完整運算式"是整個指定敘述,


分號 " ; " 會標記出循序點,


所以 C++ 唯一保證的就是程式執行到下面敘述以前, x 會被遞增兩次!


 


C++並不會只是 x 需要在每一個子運算式計算後做遞增,


或者是當所有計算式計算後才做遞增,


因此我們要盡量避免用這樣的敘述。


2011年8月25日 星期四

九型人格測試(180題版)




http://o3o.cc/ninetest

九型人格測試(180題版)




<各類型分數>

第一型︰7
第二型︰6
第三型︰9
第四型︰11
第五型︰14
第六型︰15
第七型︰14
第八型︰7
第九型︰14

[轉貼] Foobar2000 1.1.7 XChange 4 Final by N.T.Black



[轉貼][澄空&2Dgame首發][Lambda_Z發布於巴哈姆特電玩資訊站]

[memo] JAVA 什麼是 Applet ?

Java Applet介紹 

什麼是 Applet ?

Applet可以翻譯為小應用程序,

Java Applet就是用Java語言編寫的這樣的一些小應用程序,

它們可以直接嵌入到網頁中,並能夠產生特殊的效果。

包含Applet的網頁被稱為Java-powered頁,可以稱其為Java支持的網頁。

當用戶訪問這樣的網頁時, Applet被下載到用戶的計算機上執行,

但前提是用戶使用的是支持Java的網絡l瀏覽器。

由於Applet是在用戶的計算機上執行的,

因此它的執行速度不受網絡帶寬或者Modem存取速度的限制。

用戶可以更好地欣賞網頁上Applet產生的多媒體效果。

在Java Applet中,可以實現圖形繪製,字體和顏色控制,動畫和聲音的插入,

人機交互及網絡交流等功能。

Applet還提供了名為抽像窗口工具箱(Abstract Window Toolkit, AWT)的窗口環境開發工具。

AWT利用用戶計算機的GUI元素,可以建立標準的圖形用戶界面,如窗口、按鈕、滾動條等等。

目前在網絡上有非常多的Applet範例來生動地展現這些功能

讀者可以去調閱相應的網頁以觀看它們的效果。


Applet的工作原理

含有Applet的網頁的HTML文件代碼中部帶有<applet> 和</applet>這樣一對標記,

當支持Java的網絡瀏覽器遇到這對標記時,

就將下載相應的小應用程序代碼並在本地計算機上執行該Applet。

例如下面是一個帶有 Applet 的首頁

1 <html>
2 <title>An Example Homepage </title>
3 <hl> Welcome to ddvip homepage! </hl>
4 This is an example homepage, you can see an applet in it。
5 <p>
6 <applet code=「Example.class」 width = 300 height=300>
7 <param name = img value="example.gif">
8 </applet>
9 <html>


上面這個例子就是一個簡單主頁的HTML文件代碼。


Code 第五行中的<P>,是為了確保Applet出現在新的一行,

也就是說,<P>的作用像一個回車符號(Enter),

若沒有它, Applet將會緊接著上一行的最後一個單詞出現。

Code 第六、七兩行是關於Applet的一些參數。


「第六行」是必需的Applet參數,

定義了編譯後的包含Applet字節碼的文件名,後綴通常為「.class」;

和以"像素"為單位的Applet的初始寬度與高度。

「第七行」則是附加的Applet參數,它由一個分離的<param>標記來指定其後的名稱和值,

在這裡是img的值為「example.gif',它代表了一個圖形文件名。





Applet 的下載與圖形文件一樣需要一定的時間,若干秒後它才能在屏幕上顯示出來。

等待的時間則取決於 Applet 的大小和用戶的網絡連接的速度。

一旦下載以後,它便和本地電腦上的程序以相同的速度運行了。

Applet在用戶的計算機上執行時,還可以下載其它的資源,

如聲音文件、圖像文件或更多的Java代碼,有些Applet還允許用戶進行交互式操作。

但這需要重複的鏈接與下載,因此速度很慢,

這是一個亟待解決的問題,可以想到的一個好辦法是採用類似高速緩存的技術,

將每次下載的文件都臨時保存在用戶的硬盤上,雖然第一次使用時花的時間比較多,

但當再次使用時,只需直接從硬盤上讀取文件而無需再與Internet連接,便可以大大提高性能了。


哪裡得到App1et

自從Java日益流行之後,世界各地的愛好者們便不斷創造出各種各樣的Applet。

這裡列出了幾個較大的Applet收集站,讀者可以去逛一逛,

看看這些Applet的效果如何,相信會使人流連忘返的。

http://www.gamelan.com

這是Intemet上最負盛名的Applet收集站,它按照小應用程序的用途加以分類,
並列出了它們的說明、功能和程序代碼,其規模和種類之多,令人歎為觀止。

http://www.jars.com/
這個站點的特色是對它收集的小應用程序都加以評分,
JARS是小應用程序評價服務(Java Applet Rating Services)的簡稱。
許多Java開發者均以能獲得其好評為榮。

http://www.yahoo.com/Computers_and_Internet/Languages/Applet/

這個URL可真夠長的!
這是Yahoo公司提供的小應用程序目錄,收集的數量雖然稍遜於Gamelan,但也很可觀了。

http://home.netscape.com/comprod/products/navigator/version_2.0 /java_applets/

這是網景公司提供的小應用程序演示網頁,同時也提供一些Java信息。

http://java.wiwi.uni_frankfurt.de/

這是一個小應用程序的信息站點,提供了許多實用信息,
讀者可以借助這裡的數據庫,查詢自己感興趣的小應用程序的相關信息。

http://www.tech163.net/cx/jp/45428.htm

下載地址:

http://www.ibook8.com/Software/Catalog16/938.html
www.hnxa.com.cn/SoftView/SoftView_28192.html

[memo] Visual Assist X

最近很無聊查了很多關於編譯器的東西


因為前陣子在 Eclipse 寫 JAVA 所以想說為什麼不乾脆放棄 Visual Studio 


全部移到 Eclipse 上頭。


 


然後爬文爬到了這個關鍵字:Visual Assist X


所以下面我就想說來做個關於 Visual Assist X 的整理吧! 


 


(以上都算是前言吧)


 


http://www.wholetomato.com/


在番茄的網站上可以看到目前支援的版本數極多!


 


Visual Assist X 是一款非常好用的Visual Studio .NET插件,


支持C/C++C#ASPVisual BasicJavaHTML等語言,也支持VC 6.0VC 2008VC 2010


自動識別各種關鍵字、系統函數、成員變量、自動給出輸入提示、自動更正大小寫錯誤、自動標示錯誤等,


有助於提高開發過程地自動化和開發效率。


 


 


下面節錄自:http://blog.csdn.net/dl88250/article/details/1507989


增強Microsoft開發環境下的編輯能力。


Visual Assist X具有強大的編輯特色,提高了生產效率,可以完全集成到您的Microsoft開發環境中,升級了您的IDE,在不改變編程習慣的同時就可以感受到Visual Assist X为您帶來的好處。


 


Visual
Assist X是一款非常好的Visual Studio .NET 2003、2002插件,支持C/C++,C#,Visual
Basic等語言,能自動識別各種關鍵字、系統函數、成員變量、自動给出輸入提示、自動更正大小寫錯誤、自動標示錯誤等,有助於提高開發過程的自動化和開
發效率。


 結構體系


從Microsoft
Visual C/C++ 6.0開始,所有的Microsoft
IDE都为您的編輯環境提供了輕巧的剖析器,为您的代碼編寫提供方便,他們不生成目標碼,這種默認幫助形式稱为Intellisense。其特性包括成員
列表框、完成列表框、停駐工具提示、自動参數信息。您可以在IDE對話框選項內設定每個組件的工作狀態。


Visual Assist X去除了默認Intellisense的幾個不足之處,采用一系列新的特性對其進行了補充,提高了IDE的可用性。其中,幫助的數量决定於IDE、所用編程語言和您設定的選項。



同默認Intellisense,Visual Assist
X也包括剖析器,運行於您的編輯過程中。該培訓器同默認剖析器的不同之處在於,他們不裝載預先設置的符號數據庫,因此擴大了Intellisense的範
圍。Visual Assist
X只收集您工程中的頭文件和對象信息,這些頭文件和對象可以包含在系統、第三方庫、MFC或ATL/WTL/STL中。這意味着Intellisence
的活動更加頻繁,結果也更加准確。


 



止是C/C++,對於所有編程語言,Visual Assist X都含有可執行的輕載默認剖析器。對於C/C++,您可以選擇Visual
Assist X專有Intellisense,也可以首選默認剖析器,只有當其不可用時,再采用Visual Assist
X,這些工作方式都可以通過專門設置來實現。


 


Visual Assist X作为一種低優先度的後台線程插件,不影響您的IDE環境性能。該線程在idle期間活動,當您開始輸入代碼時,又回复为靜默狀態。並且它的剖析器不生成目標碼,因此,同傳統剖析器相比,占用更少的資源。


Visual
Assist
X提高了工作的自動化,簡化了瀏覽,並且顯示您開發過程的關鍵信息。其功能完全集成到IDE中,實現了二者的充分融合。为Microsoft
Visual Studio .NET 2003和2002的所有編程語言提供編程助手,包括C/C++, C#, ASP, Visual
Basic, Java 和 HTML,另外,還为Microsoft Visual C++ 6.0和 5.0的C/C++用戶提供編程幫助。


產品特點


改進了Intellisense:成員和完成列表框的出現更加頻繁、迅速,並且結果更加准確。参數信息更加完善,並帶有注釋。含有所有符號的停駐工具提示。


 


代碼輸入更迅速:輸入時觀察suggestion列表框,其中將根據您的輸入提供相應的備選字符。为了更加方便的選擇字符,還可以提前定義Atuotext和代碼模板。


 


錯誤自動校正:監控您的IDE,對那些簡單但耗時的錯誤進行即時校正。


信息獲取更加快速:更加迅速了解代碼信息,在新的VA View中觀察當前的停駐類瀏覽器,可以獲得當前符號的更多信息。除此,資源窗口中還添加了小的內容和定義項,可以獲取信息快照。


 


增加了色彩和格式:采用了更多的色彩和格式選項,代碼解譯更加迅速。增強了IDE的基本語法色彩,在您輸入代碼的同時,突出匹配和不匹配條目。另外,還添加了column indicator和print in color,將RTF置於剪切版內。


 


簡化了查找和瀏覽:
找和瀏覽更加輕松。通過內容查找可以快速跳到相同名稱的符號處,在您工作台的任何地方都可以找到符號定義,還可以轉入您代碼中的符號執行處。選擇您文件的
列表方式,锁定頭文件和相應的cpp文件。從您的工作台文件列表中打開文件。含有最近行为列表,可以在代碼的活動部分之間相互轉換。Move
scope可以到達下一個方法,還包含往返瀏覽。


拼寫檢查:在您輸入代碼的同時進行檢查,並且可以看到同Microsoft Word相似的紅色下劃線。含有Spell check comments and strings,另外,Spell check code可以檢查錯誤的輸入符號。


拓展了基本編輯:對編輯器進行了增強,編輯代碼更加迅速。含有Surround selections,multiple clipboards. Sort lines。


适合您個人風格的配置特色:細化選項對話框,定義Visual Assist X特性以适應您的編程習慣。內容菜單中含多個命令,設置快捷方式可以加快訪問您所偏好的命令。可以禁止或允許Visual Assist X,或者強制其重新剖析從而更加智能化。


 


 


2011年8月24日 星期三

[memo] Eclipse 各版本說明

整合開發環境(Integrated Development Environment,簡稱 IDE)

也有人稱為Integration Design Environment、Integration Debugging Environment

描述一種"輔助程式開發人員開發軟體"的應用軟體。


IDE通常包括程式語言編輯器、編譯器直譯器、自動建立工具、通常還包括除錯器。

有時還會包含版本控制系統和一些可以設計圖形用戶界面的工具。

許多支援物件導向的現代化IDE還包括了類別瀏覽器、物件檢視器、物件結構圖。

雖然目前有一些IDE支援多種程式語言(例如EclipseNetBeansMicrosoft Visual Studio),

但是一般而言,IDE主要還是針對特定的程式語言而量身打造(例如Visual Basic)。


以上內容轉錄自維基百科:http://0rz.tw/0d1b9


當我們來到 Eclipse 的下載頁面時會看到許多種的開發工具,下面做簡單的說明:

http://www.eclipse.org/downloads/



Eclipse IDE for Java EE Developers

針對 JavaEE 和 Web 應用程式的 Java 開發者的工具,
包括 Java ide, 和 JavaEE, JSF ,Mylyn 及其它一些工具


Eclipse Classic
典型版 Eclipse: Eclipse 平台, Java 開發工具, 和元件 (Plugin) 開發環境,
包括 Source Code 和 User Guide ,Documents.


Eclipse IDE for Java Developers
Java 開發者的必備工具, 包括 Java IDE, CVS 客戶端, XML編輯器和Mylyn.

Eclipse IDE for C/C++ Developers
集合 Mylyn 的平台 C/C++開發者的 IDE

Eclipse Modeling Tools (includes Incubating components)
該建模包包含了一系列 Eclipse Modeling Project 套件,
有 EMF, GMF, MDT XSD/OCL/UML2, M2M, M2T,和 EMFT元素.
包括了一個完整的SDK,開發者工具和源代碼.

Eclipse for RCP/Plug-in Developers
一個針對 Eclipse Plugin 和 RCP 應用開發者的工具集.
包括完整的 SDK ,開發工具和Source Code,
以及 Myly , XML 編輯器和 Eclipse Communication Framework.

Eclipse IDE for Java and Report Developers

針對創建 JavaEE 和 Web應用程序
並有報表需求的 Java 開發者的JavaEE工具和報表工具



※你如果是學習Java,下載classic或者for java developer版就可以了

2011年8月22日 星期一

[memo] C++ 型態轉換

#include <iostream>
using namespace std;

int main(){

double bu = 1.0;

double ch = 3.0;

int total;

total = static_cast<int>(bu/ch); // 要讓編譯出來的形態被接受需要在式子外面加註

/*  total = (bu/ch);  //左邊的式子在編譯時會出現錯誤,因為型態不對*/

return 0;

}


 


將數值由一種型態轉換成另一種型態稱為"型態轉換" (casting)


此程式所發生的型態轉換稱為"明確轉換"(explicit cast)


該敘述會讓等號右邊的值轉換成 int 型態。


 


標準C++的類型轉換:


static_cast、dynamic_cast、reinterpret_cast、和const_cast


2011年8月21日 星期日

[memo] C++ 動態結構

#include <iostream>

struct inflatable
{
    char name[20];
    float volume;
    double price;
};


//宣告一個 "空結構" & "結構成員"

int main() {
    using namespace std;
    inflatable *ps = new inflatable;


//建立動態結構 ps
    
    cout << "Enter name of inflatable item: " ;
    cin.get(ps->name,20);


//輸入 char 指向結構成員 name 並限制 char 大小

    cout << "Enter your price: $ ";
    cin >>ps->price;


//輸入 double 指向結構成員 price

    cout << "Enter volume in cubic feet: ";


    /*cin >> ps->volume;   //效果與下面是一樣的*/


   cin >> (*ps).volume; 


// (*ps) 考慮運算子優先所以用括號。


// *ps 是結構;(*ps).volume 是結構的成員


// 上述兩種均是輸入 float 指向結構成員 volume


    cout << "Name: " << (*ps).name << endl;
    cout << "Volume: " << ps->volume << " cubic feet\n" ;
    cout << "price: $ " << ps->price << endl;
    delete ps;

    system("pause");
    return 0;
}


 



2011年8月20日 星期六

[memo] C++ 指標數學運算

#include <iostream>
using namespace std;

int main() { 


    int tacos[10] = {5,2,8,4,1,2,2,4,6,8};


// 建立矩陣


    int *pt = tacos;


// 指標 pt 指向矩陣 tacos, 在大部分情況中C++都將指標名稱視為陣列第一個元素的位址


    cout <<"*pt = tacos = "<< *pt << endl;


// 印出指標指向的第一個元素的值


    pt = pt+1;


// 令指標+1


    cout <<"pt = pt+1 = "<< pt << " *pt = " << *pt << endl;


//印出指標+1後指向的第二個元素的值


    int *pe = &tacos[9];


// pe 的指標位址取用陣列中第十個元素的記憶體位址


    cout <<"*pe = &tacos[9] = " << pe << endl;


//印出記憶體位址


    pe = pe - 1;


//令指標-1


    cout <<"pe = pe-1 = "<< pe << " *pe = " << *pe << endl;


//印出指標-1後指向的第九個元素的值


    int diff = pe - pt;


//運算出兩個指標間的所指出的陣列距離


    cout << diff << endl;


//印出陣列元素間的間隔距離


    cout <<"tacos[8] = "<< tacos[8] << endl;


    cout <<"tacos[9] = "<< tacos[9] << endl;
//印出陣列中第八元素與第九元素的值,證明上述運算是可信的


 system("pause");
    return 0;
}


 



2011年8月10日 星期三

[食記][普雷] 台北車站前~~ 小蒙牛

小蒙牛網址:http://0223637005.tw.tranews.com/



// 這一餐是 "謝學弟宴"  。

// 冰棒學長拉了含我全部六人一塊來到台北車站前的小蒙牛吃飯。

// 因為是學長請客,所以我一開始也不知道會吃多少錢。 XD



來到 2F 的餐廳感覺沒有很大,但是可以感覺到餐廳在利用空間的布局還 OK.

十二人的用餐空間,放下一個簾子就變成 6:6 的餐桌。



小蒙牛一張菜單可以點三輪。

不過份量都不算多,所以其實我們六個大男生的點餐速度也不慢。



服務生一開始說:「肉是現切的,為了保持鮮度希望可以一次點個四到五種就好。」

小蒙牛的餐盤很特別。

因為桌面空間有限,所以他們有種餐盤架可以一次擺放五六種菜色還不會影響到顧客用餐空間,這點我感覺很棒!





本圖僅供參考,圖源來自:http://www.ipeen.com.tw/shop/47362



肉、肉、肉......六個大男生幾乎都在吃肉。

我們點的是鴛鴦鍋,但我覺得麻辣的程度並不高!

雖然湯底紅通通還浮著一堆辛香料,感覺好像很嚇人....

實際吃起來是又麻又辣,但是我覺得還是 滿堂紅 的辣勁比較強悍。



前面說過一盤的分量並不多,一盤肉居然只有五片?!

幸好六個人裡頭有幾個人是(相較之下的) "小鳥胃" 。

// 後來就變成「學長在煮肉,學弟剝菜,我吃我的」~~ 哈哈。



// 冰櫃裡有冰棒、冰淇淋,但是小馬說冰淇淋沒想像中好吃,所以我後來吃了四、五支曠世奇派.....

邊吃我還邊想要不要弄個曠世奇派塔  XD

不過小蒙牛的工讀生很認真,主動過來加湯、收垃圾、收碗盤、撿瓶罐......所以失敗了

// 看著被收走盒子剩下袋子的冰棒,我還打趣的跟學長說:

// 「要不要跟那位工讀生講:『你這麼認真,我們下次不來吃(看妳)怎麼可以?』....」



糕點的部分,有三、四種小蛋糕,蛋塔、豆花、愛玉.....不過我主力都在吃蛋塔,兩口一個....

一不小心我就吃了六、七個蛋塔、兩個豆花。  >皿<









這頓飯我們吃得很慢(?),也吃得蠻開心的......

// 冰棒學長忙著面試不可開交,還順便給我們分享資訊,真的有吃又有得學!Good Job!









2011年8月7日 星期日

[memo] C++ 指標 筆記

閱讀資料來自於:http://caterpillar.onlyfun.net/Gossip/CppGossip/Pointer.html


 


 變數名稱  ─ 指標 記憶體位址 


如上所述關係:


指標的名稱表示了位址,而當要取得指標指向位址裏頭的"值"便需要在指標錢加上 ' * ' 運算子。


' * ' 這運算子被稱作"間接值"或"提領運算子"。


 


我們在學習指標時常常看到一個東西  " * ptr "


ptr 其實就是 Pointer (我們說的指標),同時他也是保留字所以不要看到他就害怕了。


 


舉例:


int *ptr;


int * ptr;


上面這兩行其實是一樣的,對於編譯器來說,空白置於何處是沒差別的。


 


但是下面這個宣告就不同了。


舉例:


int * p1,p2;


上面這個宣告中,宣告了一個指標 ( int *p1 )與一個整數( int p2 )。


所以這邊要說的是,每一個指標他的變數名稱都需要 ' * ' 。


 


 




 


在 C++ 裏頭,宣告指標的時候要注意的還有下面這點。


舉例:


int *test;


*test = 123456;


假如把 code 寫成上面這樣的表示式可能會發生不可預期的狀況。


這裡我們宣告了 test 指標 ,但是我們卻忘了指定這指標要指向什麼位址!


使得這時 test 指向的記憶體位址便可能是任意值。


那第二行的 123456 又該存去哪裡呢?自然是 test 指向的任意一個位址囉!


所以我們應該竭力避免上面這種宣告方式。


(因為這種不好的宣告方式編譯器是很難找出錯誤的。)


 


 




 


 


C++ 用 new 配置記憶體。


 


這邊要提點一下:指標的價值在於當程式執行期間配置無名稱的記憶體來儲存值。


 


在 C 裏頭使用 malloc() 配置記憶體。


在 C++ 當然也可以用,但是用 new 會更好。


 


舉例1:


int * test = new int;


 


我們 new 出一個資料型態(上面的例子是個 int )佔住記憶體中一個區塊,


並且將這個區塊的位址指定給 test 這個指標。


 


下面再提供另一種配置記憶體的方法做個比較。


舉例2:


int dog;


int *test_2 = &dog;


 


&讓我們直接取得記憶體位址,而 test_2 間接得到了 dog 的記憶體位址。


dog ── test_2 ── 記憶體區塊


舉例1 跟 舉例2 的差別乍看下好像沒有不同,但是稱呼上就截然不同了。


在 舉例2 裏頭我們可以透過變更 dog 這個變數名稱進行存取。


 


但是在 舉例1 中我們卻是在存取一個指標,而這個指標卻沒有一個名稱!


用下面這個來解釋會更清楚 ↓


?????? ── test ── 記憶體區塊


 


從上面我們來做個結論:


舉例2 在處理資料物件的時候看起來好像更優於 舉例1 ,


但其實 舉例1 在管理記憶體上卻是有更大的優勢。


比如我們開發程式在一個板子或是嵌入式的環境上頭,記憶體的管理就顯示出它的重要性了。