• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            colorful

            zc qq:1337220912

             

            vi / vim

            為什么這些死腦筋們在用 VI ?

            http://www.oschina.net/news/25882/why-they-are-using-vi?from=20120226
            看起來是個好文章,不過現在我還不適合看,記下來以后看

            手冊
            http://vimcdoc.sourceforge.net/doc/usr_01.html

            posted @ 2012-04-18 15:40 多彩人生 閱讀(265) | 評論 (0)編輯 收藏

            there are stopped jobs

            Dealing with Stopped Jobs
            Sometimes when you try to logout, you'll get a message saying there are "stopped jobs". These stopped jobs are programs or processes which have been suspended by a ^Z (Ctrl - Z) command. You have to either make the job active again, or get it running properly in the "background" before you can logout.

            Stopping a program is useful if you want to temporarily suspend working on one program so you can do something else.

            To see a list of stopped jobs, type:

            jobs

            You will see a list of the stopped programs. Here's an example showing a stopped "learn" session:

            [1] + Stopped learn


            You can kill this stopped job by typing:

            kill %1 (where %1 is the number of the job
            to be killed>


            Or you can make the program active again by typing:

            fg %1 (where %1 is the number of the job)


            fg stands for foreground. (You are bringing the program from suspended status back to the foreground.) Once brought back to the foreground, you can continue the program or quit in a normal manner.

            posted @ 2012-04-18 14:57 多彩人生 閱讀(547) | 評論 (0)編輯 收藏

            linux command

            查看當前路徑: pwd

            posted @ 2012-04-18 10:57 多彩人生 閱讀(270) | 評論 (0)編輯 收藏

            fcitx

            輸入法切換用ctrl+shift

            Ubuntu自帶的輸入法不太盡如人意思,用起來也不方便,我在Ubuntu和FC中都是用Fcitx,很好用!

            安裝配置如下:

            1. 安裝 fcitx

              sudo apt-get install fcitx

             

            2. 配置默認輸入法為 fcitx

              im-switch -s fcitx  // 注意無須加 sudo


            3. 重啟 x-window

              重啟之后,fcitx 輸入法應當正常啟動,輸入條將顯示在屏幕最上面,不過輸入框中文顯示可能是 “口口”,需要小小的改動。

             

            4. 修改配置文件

              gedit ~/.fcitx/config

              //如果沒有配置gedit 支持GB18030編碼,打開后文件會是亂碼(此處針對9.10前版本,9.10無需配置已支持)

              修改如下幾項:

              顯示字體(中)=YaHei Consolas Hybrid   //主要是看你的OpenOffice中有什么字體,加進來就行

              Enter鍵行為=1 # =1表示回車時清除輸入框中輸入的內容,隨個人喜好設置

              上一頁=, # 使用 , . 翻頁,隨個人喜好設置

              下一頁=.

              [輸入法]

              使用拼音=0

              拼音名稱=智能拼音

              使用雙拼=0

              雙拼名稱=智能雙拼

              默認雙拼方案=自然碼

              使用區位=0

              區位名稱=區位

              使用碼表=1

              提示詞庫中的詞組=1

              其他輸入法=

            5. 修改碼表文件

              sudo gedit /usr/share/fcitx/data/tables.conf

              由于五筆拼音已經完全夠用,其它輸入法就沒必要出現了,文件中只需留下如下內容,其它配置段可以清除或注釋掉。

              [碼表]

              名稱=五筆拼音

              碼表=wbpy.mb

              調頻=2

              拼音=1

              拼音鍵=z

              自動上屏=-1

              空碼自動上屏=-1
              自動詞組=1
              精確匹配=0
              提示編碼=0
            6、重啟 x-window
              重啟 x-window 之后,小企鵝輸入法中文顯示將完全正常,且只有“五筆拼音”,免去了在多個輸入法中來回切換的麻煩。

             

            Note: Restart 后小企鵝面板不是最上面,我們也以用[Ctrl+Alt+h]來把它調上來。

            posted @ 2012-04-17 20:12 多彩人生 閱讀(791) | 評論 (0)編輯 收藏

            ubuntu gcc g++ make

            sudo apt-get install make gcc g++
            再裝上函數手冊
            sudo apt-get install manpages-dev

            另一方法:
            sudo apt-get install build-essential
            執行完后,完成了gcc,g++,make的安裝。
            build-essential 是一整套工具,gcc,libc等等

            函數手冊的使用:
            是的,比如man scanf。
            偶爾會有同名的,比如printf就有兩個,一個在腳本下用,一個在c里面用,可以用
            代碼:
            man -a printf

            這樣會顯示出第一個,按q退出后接著顯示第二個。
            當然,如果你知道你要查的幫助屬于哪一類的話也可以直接加類別號,如:
            代碼:
            man 1 printf
            man 3 printf

            第一個顯示的就是腳本下用的printf,第二個顯示的是c的。
            編譯運行:
            安裝好后必要的工具后,運行
            代碼:
            gcc xxx.c

            運行編譯好的程序,用
            代碼:
            ./xxx.out

            gcc有很多參數,可以看看
            代碼:
            gcc --help


            代碼:
            man gcc
            或:
            $chmod +x a.out
            $./a.out


            用gcc的話加-lstdc++參數

            posted @ 2012-04-17 20:10 多彩人生 閱讀(1618) | 評論 (0)編輯 收藏

            extern c

            時常在cpp的代碼之中看到這樣的代碼:

            #ifdef __cplusplus
            extern "C" {
            #endif

            //一段代碼

            #ifdef __cplusplus
            }
            #endif

              這樣的代碼到底是什么意思呢?首先,__cplusplus是cpp中的自定義宏,那么定義了這個宏的話表示這是一段cpp的代碼,也就是說,上面的代碼的含義是:如果這是一段cpp的代碼,那么加入extern "C"{和}處理其中的代碼。

              要明白為何使用extern "C",還得從cpp中對函數的重載處理開始說起。在c++中,為了支持重載機制,在編譯生成的匯編碼中,要對函數的名字進行一些處理,加入比如函數的返 回類型等等.而在C中,只是簡單的函數名字而已,不會加入其他的信息.也就是說:C++和C對產生的函數名字的處理是不一樣的.

              比如下面的一段簡單的函數,我們看看加入和不加入extern "C"產生的匯編代碼都有哪些變化:

            int f(void)
            {
            return 1;
            }

              在加入extern "C"的時候產生的匯編代碼是:

            .file "test.cxx"
            .text
            .align 2
            .globl _f
            .def _f; .scl 2; .type 32; .endef
            _f:
            pushl %ebp
            movl %esp, %ebp
            movl $1, %eax
            popl %ebp
            ret

              但是不加入了extern "C"之后

            .file "test.cxx"
            .text
            .align 2
            .globl __Z1fv
            .def __Z1fv; .scl 2; .type 32; .endef
            __Z1fv:
            pushl %ebp
            movl %esp, %ebp
            movl $1, %eax
            popl %ebp
            ret

              兩段匯編代碼同樣都是使用gcc -S命令產生的,所有的地方都是一樣的,唯獨是產生的函數名,一個是_f,一個是__Z1fv。

              明白了加入與不加入extern "C"之后對函數名稱產生的影響,我們繼續我們的討論:為什么需要使用extern "C"呢?C++之父在設計C++之時,考慮到當時已經存在了大量的C代碼,為了支持原來的C代碼和已經寫好C庫,需要在C++中盡可能的支持C,而 extern "C"就是其中的一個策略。

              試想這樣的情況:一個庫文件已經用C寫好了而且運行得很良好,這個時候我們需要使用這個庫文件,但是我們需要使用C++來寫這個新的代碼。如果這個代 碼使用的是C++的方式鏈接這個C庫文件的話,那么就會出現鏈接錯誤.我們來看一段代碼:首先,我們使用C的處理方式來寫一個函數,也就是說假設這個函數 當時是用C寫成的:

            //f1.c
            extern "C"
            {
            void f1()
            {
            return;
            }
            }

              編譯命令是:gcc -c f1.c -o f1.o 產生了一個叫f1.o的庫文件。再寫一段代碼調用這個f1函數:

            // test.cxx
            //這個extern表示f1函數在別的地方定義,這樣可以通過
            //編譯,但是鏈接的時候還是需要
            //鏈接上原來的庫文件.
            extern void f1();

            int main()
            {
            f1();

            return 0;
            }

              通過gcc -c test.cxx -o test.o 產生一個叫test.o的文件。然后,我們使用gcc test.o f1.o來鏈接兩個文件,可是出錯了,錯誤的提示是:

            test.o(.text + 0x1f):test.cxx: undefine reference to 'f1()'
              也就是說,在編譯test.cxx的時候編譯器是使用C++的方式來處理f1()函數的,但是實際上鏈接的庫文件卻是用C的方式來處理函數的,所以就會出現鏈接過不去的錯誤:因為鏈接器找不到函數。

              因此,為了在C++代碼中調用用C寫成的庫文件,就需要用extern "C"來告訴編譯器:這是一個用C寫成的庫文件,請用C的方式來鏈接它們。

              比如,現在我們有了一個C庫文件,它的頭文件是f.h,產生的lib文件是f.lib,那么我們如果要在C++中使用這個庫文件,我們需要這樣寫:

            extern "C"
            {
            #include "f.h"
            }

              回到上面的問題,如果要改正鏈接錯誤,我們需要這樣子改寫test.cxx:

            extern "C"
            {
            extern void f1();
            }

            int main()
            {
            f1();

            return 0;
            }

              重新編譯并且鏈接就可以過去了.

              總結


              C和C++對函數的處理方式是不同的.extern "C"是使C++能夠調用C寫作的庫文件的一個手段,如果要對編譯器提示使用C的方式來處理函數的話,那么就要使用extern "C"來說明

            posted @ 2012-04-17 19:12 多彩人生 閱讀(235) | 評論 (0)編輯 收藏

            string

            stl string 里沒有format
            可用 stringstream   來格式化你要的東西。

            http://www.cnblogs.com/lzjsky/archive/2011/01/04/1925538.html

            輸入輸出的頭文件 <iostream>
            string流的頭文件 <sstream>
            文件流的頭文件   <fstream>

            stringstream的用法

            1.利用輸入輸出做數據轉換

            stringstream ss_stream;
            ss_stream << i; // 將int輸入流中
            ss_stream >> str; // 將ss_stream中的數值輸出到str中

            //注意:如果做多次數據轉換;必須調用clear()來設置轉換模式
            ss_stream << "456";
            ss_stream >> i; // 首先將字符串轉換為int
            ss_stream.clear();
            ss_stream << true;
            ss_stream >> i; // 然后將bool型轉換為int;假如之前沒有做clear,那么i會出錯

            //運行clear的結果
            i = 456
            i = 1
            //沒有運行clear的結果
            i = 456
            i = 8800090900

             

             

            2.支持char*的輸入和輸出

            char sz_buf[20];
            ss_stream << 8888;
            ss_stream >> sz_buf; // 直接將數輸出到sz_buf字符數組中

             

            3.來存儲可變數據的列表

            stringstream ss_stream;
            ss_stream << "字符串一" << endl;
            ss_stream << "字符串二" << endl;
            ss_stream << "字符串三" << endl;
            ss_stream << "字符串四" << endl;
            ss_stream << "字符串五" << endl;

            char buffer[100];
            while ( ss_stream.getline(buffer, sizeof(buffer))
            {
            printf("msg=%s\n", buffer);
            }
            ss_stream("");// 釋放字符串流中的資源

            // 或者用string來接收
            stringstream ss_stream;
            string stemp;
            while ( getline(ss_stream, stemp) )
            {
            task_download(stemp.c_str(), relate.c_str());
            }

            posted @ 2012-04-16 17:14 多彩人生 閱讀(165) | 評論 (0)編輯 收藏

            time

            函數簡介
             函數名: time
            頭文件:time.h
            函數原型:time_t time(time_t * timer)
            功 能: [1]獲取當前的系統時間,返回的結果是一個time_t類型,其實就是一個大整數,其值表示從UTC(Coordinated Universal Time)時間1970年1月1日00:00:00(稱為UNIX系統的Epoch時間)
            到當前時刻的秒數。然后調用localtime將time_t所表示的UTC時間轉換為本地時間(我們是+8區,比UTC多8個小時)并轉成struct tm類型,該類型的各數據成員分別表示年月日時分秒。
            補充說明:time函數的原型也可以理解為 long time(long *tloc),
            因為在time.h這個頭文件中time_t實際上就是:
             #ifndef _TIME_T_DEFINED
            typedef long time_t; /* time value */
            #define _TIME_T_DEFINED /* avoid multiple def's of time_t */
            #endif
            即long。
            函數應用舉例
            程序例1: time函數獲得日歷時間。日歷時間,是用“從一個標準時間點到此時的時間經過的秒數”來表示的時間。
            這個標準時間點對不同的編譯器來說會有所不同,但對一個編譯系統來說,
            這個標準時間點是不變的,該編譯系統中的時間對應的日歷時間都通過該標準時間點來衡量,所以可以說日歷時間是“相對時間”,
            但是無論你在哪一個時區,在同一時刻對同一個標準時間點來說,日歷時間都是一樣的。
            #include <time.h>
            #include <stdio.h>
            #include <dos.h>
             int main(void)
            {
             time_t t;
            t = time(NULL);
            printf("The number of seconds since January 1, 1970 is %ld",t);
             return 0;
            }
            程序例2:
             //time函數也常用于隨機數的生成,用日歷時間作為種子。
            #include <stdio.h>
             #include <time.h>
             #include<stdlib.h>
             int main(void)
            {
             int i;
             srand((unsigned) time(NULL));
             printf("ten random numbers from 0 to 99\n\n");
             for(i=0;i<10;i++)
             {
             printf("%d\n",rand()%100);
             }
             return 0;
            }
            程序例3:
            用time()函數結合其他函數(如:localtime、gmtime、asctime、ctime)可以獲得當前系統時間或是標準時間。
            #include <stdio.h>
             #include <stddef.h>
             #include <time.h>
             int main(void)
            {
             time_t timer;//time_t就是long int 類型
            struct tm *tblock;
            timer = time(NULL);//這一句也可以改成time(&timer);
            tblock = localtime(&timer);
            printf("Local time is: %s\n",asctime(tblock));
             return 0;
             }

            posted @ 2012-04-15 23:45 多彩人生 閱讀(243) | 評論 (0)編輯 收藏

            vmware

            Failed to initialize remote display subsystem【VMware】
            錯誤:
            啟動虛擬機后彈出“Failed to initialize remote display subsystem”錯誤提示,點擊確定后虛擬機中的操作系統關閉,無論如何也無法啟動。

            原因:
            虛擬機在安裝時自動添加了一個“__vmware_user__”帳戶,不小心刪掉這個帳戶后虛擬機中的操作系統就會啟動失敗。

            解決:
            進入DOS命令窗口,輸入“net user __vmware_user__  /add”命令添加這個虛擬機帳戶即可。

            posted @ 2012-04-13 19:37 多彩人生 閱讀(271) | 評論 (0)編輯 收藏

            shared_ptr

            //null-pointer-with-boostshared-ptr
            http://stackoverflow.com/questions/621220/null-pointer-with-boostshared-ptr

            shared_from_this 幾個值得注意的地方
            http://www.cnblogs.com/lzjsky/archive/2011/09/09/2172469.html

            posted @ 2012-04-07 15:45 多彩人生 閱讀(209) | 評論 (0)編輯 收藏

            僅列出標題
            共25頁: First 17 18 19 20 21 22 23 24 25 

            導航

            統計

            常用鏈接

            留言簿(3)

            隨筆分類

            隨筆檔案

            搜索

            最新評論

            閱讀排行榜

            評論排行榜

            久久精品国产清自在天天线| 亚洲国产日韩综合久久精品| 久久综合久久自在自线精品自| 五月丁香综合激情六月久久| 国产精品美女久久久久| 精品久久久久久中文字幕| 久久播电影网| 一级a性色生活片久久无| 久久久久久精品成人免费图片| 热re99久久6国产精品免费| 97超级碰碰碰碰久久久久 | 久久久久久久精品妇女99| 日韩久久久久久中文人妻| 97久久精品人人做人人爽| 精品久久亚洲中文无码| 国产精品久久久久…| 一本久久精品一区二区| 99久久精品免费看国产| 久久水蜜桃亚洲av无码精品麻豆| 久久久WWW成人| 狠狠久久亚洲欧美专区| 亚洲愉拍99热成人精品热久久| 久久久精品国产Sm最大网站| 久久国产精品久久久| 久久久久久国产精品免费无码| 久久精品视频一| 久久久久九九精品影院| 久久福利青草精品资源站| 日韩久久久久久中文人妻| 久久精品无码专区免费青青| 久久精品国产亚洲AV不卡| 久久婷婷午色综合夜啪| 久久人人爽人人精品视频| 久久精品不卡| 久久国产香蕉视频| 欧洲性大片xxxxx久久久| 国产香蕉97碰碰久久人人| 久久亚洲精品中文字幕三区| 日本一区精品久久久久影院| 婷婷综合久久中文字幕| 超级碰久久免费公开视频|