給未來的裕翔
不知道為什麼WordPress偶爾會無法登入
可能的解決辦法
從以下網址登入(還是不知道為什麼, 但會成功)
localhost/~bob/wordpress/wp-admin
Friday, April 30, 2010
Wednesday, April 28, 2010
WordPress快捷鍵
給未來的裕翔
原來WordPress的編輯器有一堆快捷鍵
粗體 Ctrl + b
斜體 Ctrl + i
刪除線 Alt + Shift + d
項目符號 Alt + Shift + u
編號 Alt + Shift + o
引言 Alt + Shift + q
靠左 Alt + Shift + l
置中 Alt + Shift + c
靠右 Alt + Shift + r
插入連結 Alt + Shift + a
取消連結 Alt + Shift + s
插入繼續閱讀標籤 Alt + Shift + t
拼字檢查 Alt + Shift + n
全螢幕模式 Alt + Shift + g
顯示隱藏深入功能 Alt + Shift + z
原來WordPress的編輯器有一堆快捷鍵
粗體 Ctrl + b
斜體 Ctrl + i
刪除線 Alt + Shift + d
項目符號 Alt + Shift + u
編號 Alt + Shift + o
引言 Alt + Shift + q
靠左 Alt + Shift + l
置中 Alt + Shift + c
靠右 Alt + Shift + r
插入連結 Alt + Shift + a
取消連結 Alt + Shift + s
插入繼續閱讀標籤 Alt + Shift + t
拼字檢查 Alt + Shift + n
全螢幕模式 Alt + Shift + g
顯示隱藏深入功能 Alt + Shift + z
writer: Field name
給未來的裕翔
如果在某些地方插入某些Field
像是頁數
結果居然不是顯示實際頁數
而是 Page numbers
View -> Field Names
確認一下是否壓下去了
把它壓回來^^
快速作法: Ctrl + F9
如果在某些地方插入某些Field
像是頁數
結果居然不是顯示實際頁數
而是 Page numbers
View -> Field Names
確認一下是否壓下去了
把它壓回來^^
快速作法: Ctrl + F9
Tuesday, April 27, 2010
Saturday, April 24, 2010
Friday, April 23, 2010
writer: 在Header裡面插入Chapter
給未來的裕翔
先Insert -> Header -> 勾選Default
確定游標在Header裡面後
Insert -> Fields -> Other -> Chapter
其中, Ctrl + F2 可以取代Insert -> Fields -> Other
注意: 這個Chapter的對象只有
Format -> Styles and Formatting裡面的Heading 1
用Heading 1做出來的才會顯示成Header裡的Chapter
先Insert -> Header -> 勾選Default
確定游標在Header裡面後
Insert -> Fields -> Other -> Chapter
其中, Ctrl + F2 可以取代Insert -> Fields -> Other
注意: 這個Chapter的對象只有
Format -> Styles and Formatting裡面的Heading 1
用Heading 1做出來的才會顯示成Header裡的Chapter
writer: 每頁相同的浮水印
給未來的裕翔
Format -> Page -> Background -> As: Graphic -> Type: Position
Type: Area 把圖放到版面一樣大
Type: Tile 把圖重複到跟版面一樣大
Format -> Page -> Background -> As: Graphic -> Type: Position
Type: Area 把圖放到版面一樣大
Type: Tile 把圖重複到跟版面一樣大
引用圖檔問題之解決方案: co.cc
給未來的裕翔
如果我在wordpress裡面養用圖檔
勢必位址是含有我IP的
萬一哪天我換IP了
這賽不就挫很大?
當然, 一個個指明相對位置似乎也能行
不過還是有點麻煩, 這會降低我寫筆記附圖檔的動力
使用網路相簿? 無名, PIXNET, PICASA......?
我就是要當永遠的VIP才把網頁架在自己電腦上的阿!!!
憑著小小的腦袋所能想到的最一途, 註冊一個免費網址
以文字而不以數字取得我的圖片資源!
之後我如果換IP就只要去更改網址對應的IP即可
co.cc 謝謝你!!!!!!
筆記部份:
在co.cc裡面的最後設定
有四個選項:
1. Name Server
2. Zone Records
3. URL Forwarding
4. Webhosting(with fee)
一開始看, 我只確定第四個不是我要的, 因為要付費
當然, 我也沒要架DNS啦, 所以第一個也排除
點第二個點進去後
出現一個Type下拉式選單: A, MX, NS, CNAME, TXT
幸好我架過DNS^^
我知道我要的就是這一個, 並且Type選A!!!
出乎意料的是, 設定完馬上就可以用了
一開始連yushiangfu.co.cc
顯示virtual 1 test
我以為是它在測試, 因為講co.cc註冊的教學網站說要過幾小時才會生效
到了晚上我又試一次
依舊是virtual 1 test
我想起來了!
這是我當初練習架虛擬主機的網頁內容阿!
對應的另一個網頁內容是
virtual 2 test
兩天的煩惱, 搞定!
如果我在wordpress裡面養用圖檔
勢必位址是含有我IP的
萬一哪天我換IP了
這賽不就挫很大?
當然, 一個個指明相對位置似乎也能行
不過還是有點麻煩, 這會降低我寫筆記附圖檔的動力
使用網路相簿? 無名, PIXNET, PICASA......?
我就是要當永遠的VIP才把網頁架在自己電腦上的阿!!!
憑著小小的腦袋所能想到的最一途, 註冊一個免費網址
以文字而不以數字取得我的圖片資源!
之後我如果換IP就只要去更改網址對應的IP即可
co.cc 謝謝你!!!!!!
筆記部份:
在co.cc裡面的最後設定
有四個選項:
1. Name Server
2. Zone Records
3. URL Forwarding
4. Webhosting(with fee)
一開始看, 我只確定第四個不是我要的, 因為要付費
當然, 我也沒要架DNS啦, 所以第一個也排除
點第二個點進去後
出現一個Type下拉式選單: A, MX, NS, CNAME, TXT
幸好我架過DNS^^
我知道我要的就是這一個, 並且Type選A!!!
出乎意料的是, 設定完馬上就可以用了
一開始連yushiangfu.co.cc
顯示virtual 1 test
我以為是它在測試, 因為講co.cc註冊的教學網站說要過幾小時才會生效
到了晚上我又試一次
依舊是virtual 1 test
我想起來了!
這是我當初練習架虛擬主機的網頁內容阿!
對應的另一個網頁內容是
virtual 2 test
兩天的煩惱, 搞定!
git最基本指令
給現在的水哥^^
不管怎樣, 都先 git init 初始化
接著慢慢新增檔案 git add FILE-NAME
如果資料夾原本就已經有一堆檔案
git add *
之後, 像平常一樣對檔案做修改
自己決定要到什麼程度當成一個新版本
也許講紀錄點會讓你更好懂, 然後
git commit -a
輸入關於這個版本的資訊, 存檔後離開
(你的話 git commit -a -mMESSAGE)
使用git log看一下剛才版本的編號, 類似一長串亂數
git tag TAG-NAME HASH-NUMBER
HASH-NUMBER就是那個像亂數的編號, 不用全打沒關係
如果想看某個版本的某個檔案
git show TAG-NAME:FILE-NAME
想另存新檔
git show TAG-NAME:FILE-NAME > ANOTHER-FILE-NAME
以上都是單一方向開發
其實還可以多方向, 像樹枝一樣
git branch BRANCH-NAME
預設所在樹枝稱為master, 想跳到BRANCH-NAME的話
git checkout BRANCH-NAME
之後如果修改檔案並且git commit -a
不會改變原來master的版本
切換回master
git checkout master
此時可以直接merge剛才發展的樹枝
git merge BRANCH-NAME
當我有什麼想測試的時候, 先增一個branch
測試成功就merge, 很方便
但是, 萬一在merge前, 我在master的檔案也改過
那就會merge失敗
可以用git diff看要修改掉哪些地方, 才可以merge
目前我也只會這樣, 萬一你深入研究, 希望你可以教我^^
參考來源:
Git 版本管理
新增幾個我覺得有的有用的指令:
git add . 跟git add *
不管怎樣, 都先 git init 初始化
接著慢慢新增檔案 git add FILE-NAME
如果資料夾原本就已經有一堆檔案
git add *
之後, 像平常一樣對檔案做修改
自己決定要到什麼程度當成一個新版本
也許講紀錄點會讓你更好懂, 然後
git commit -a
輸入關於這個版本的資訊, 存檔後離開
(你的話 git commit -a -mMESSAGE)
使用git log看一下剛才版本的編號, 類似一長串亂數
git tag TAG-NAME HASH-NUMBER
HASH-NUMBER就是那個像亂數的編號, 不用全打沒關係
如果想看某個版本的某個檔案
git show TAG-NAME:FILE-NAME
想另存新檔
git show TAG-NAME:FILE-NAME > ANOTHER-FILE-NAME
以上都是單一方向開發
其實還可以多方向, 像樹枝一樣
git branch BRANCH-NAME
預設所在樹枝稱為master, 想跳到BRANCH-NAME的話
git checkout BRANCH-NAME
之後如果修改檔案並且git commit -a
不會改變原來master的版本
切換回master
git checkout master
此時可以直接merge剛才發展的樹枝
git merge BRANCH-NAME
當我有什麼想測試的時候, 先增一個branch
測試成功就merge, 很方便
但是, 萬一在merge前, 我在master的檔案也改過
那就會merge失敗
可以用git diff看要修改掉哪些地方, 才可以merge
目前我也只會這樣, 萬一你深入研究, 希望你可以教我^^
參考來源:
Git 版本管理
新增幾個我覺得有的有用的指令:
git add . 跟git add *
Thursday, April 22, 2010
論文文獻工具: zotero
給未來的裕翔
寫論文會遇到的頗大問題就是reference
既要前後參照又要注意格式問題
google了一整天後決定使用zotero
Word + EndNote -> Writer + Zotero
首先, 去zotero官網下載firefox的plugin
裝好後重啟firefox
接著去google scholar
搜尋paper, 出現一堆搜尋結果後
這篇先停在這, 等我有時間再研究關於貼圖的事
寫論文會遇到的頗大問題就是reference
既要前後參照又要注意格式問題
google了一整天後決定使用zotero
Word + EndNote -> Writer + Zotero
首先, 去zotero官網下載firefox的plugin
裝好後重啟firefox
接著去google scholar
搜尋paper, 出現一堆搜尋結果後
這篇先停在這, 等我有時間再研究關於貼圖的事
Wednesday, April 21, 2010
連到ftp卻不能ls?
給未來的裕翔
ftp server端要額外設定
vim /etc/sysconfig/iptables-config
IPTABLES_MODULES="ip_conntrack_ftp"
vim /etc/sysconfig/iptables
-A CLASS-RULES -p tcp --sport 1024:65535 --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT
到此, ls可以成功, 不過檔案不一會秀出來^^
請對/var/ftp裡面的檔案restorecon一下
ftp server端要額外設定
vim /etc/sysconfig/iptables-config
IPTABLES_MODULES="ip_conntrack_ftp"
vim /etc/sysconfig/iptables
-A CLASS-RULES -p tcp --sport 1024:65535 --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT
到此, ls可以成功, 不過檔案不一會秀出來^^
請對/var/ftp裡面的檔案restorecon一下
wirter: 插入目錄
給未來的裕翔
游標停在想要插入目錄的地方
Insert -> Indexed and Tables -> Indexes and Tables
似乎只有經過Format -> Styles and Formatting處理過的
才會出現在目錄裡面
游標停在想要插入目錄的地方
Insert -> Indexed and Tables -> Indexes and Tables
似乎只有經過Format -> Styles and Formatting處理過的
才會出現在目錄裡面
writer: 上下標
給未來的裕翔
在writer裡面的文字上下標
Format -> Character -> Position
當然, 比較快的作法是
Ctrl + Shift + b 下標
Ctrl + Shift + p 上標
在writer裡面的文字上下標
Format -> Character -> Position
當然, 比較快的作法是
Ctrl + Shift + b 下標
Ctrl + Shift + p 上標
Tuesday, April 20, 2010
writer: 快捷鍵
給未來的裕翔
Ctrl + L 文字置左
Ctrl + E 文字置中
Ctrl + R 文字置右
Ctrl + P 列印
Ctrl + Shift + y 重複上一個動作, 頗難按......
Ctrl + L 文字置左
Ctrl + E 文字置中
Ctrl + R 文字置右
Ctrl + P 列印
Ctrl + Shift + y 重複上一個動作, 頗難按......
writer: 插入頁碼(in Footer)
給未來的裕翔
如果要在writer裡面加入頁碼
Insert -> Footer -> 勾選Default
然後游標一到任一個Footer裡
Insert -> Fields -> Page Number
這樣就有了, 對其中任一頁碼進行置左, 置中, 或置右
所有頁碼都會同步
如果要在writer裡面加入頁碼
Insert -> Footer -> 勾選Default
然後游標一到任一個Footer裡
Insert -> Fields -> Page Number
這樣就有了, 對其中任一頁碼進行置左, 置中, 或置右
所有頁碼都會同步
writer: 強迫換頁
給未來的裕翔
本文寫到某頁的一半就結束時
如果想從新頁開始下一部分
不用白痴的一直按Enter了
Insert -> Manual Break -> Page break
當然, 快捷鍵更好 Ctrl + Enter
本文寫到某頁的一半就結束時
如果想從新頁開始下一部分
不用白痴的一直按Enter了
Insert -> Manual Break -> Page break
當然, 快捷鍵更好 Ctrl + Enter
writer: 分節自動編號(無關目錄)
給未來的裕翔
Right Click -> Numbering/Bullets
此時按 Enter 後
會跳到下一行, 編號接續, 或是符號照舊
如果只想跳到下一行, 保持格式但不編號或符號
從浮動視窗裡選擇 Insert Unnumbered Entry
如果不想要格式和編號
從浮動視窗裡選擇 Numbering Off
Right Click -> Numbering/Bullets
此時按 Enter 後
會跳到下一行, 編號接續, 或是符號照舊
如果只想跳到下一行, 保持格式但不編號或符號
從浮動視窗裡選擇 Insert Unnumbered Entry
如果不想要格式和編號
從浮動視窗裡選擇 Numbering Off
writer段落前後間距
給未來的裕翔
游標停在要處理的段落
Right Click -> Paragraph -> Indents & Spacing -> Above paragraph
Right Click -> Paragraph -> Indents & Spacing -> Below paragraph
游標停在要處理的段落
Right Click -> Paragraph -> Indents & Spacing -> Above paragraph
Right Click -> Paragraph -> Indents & Spacing -> Below paragraph
使用gdb對mex file進行除錯
給未來的裕翔
先以mex加-g選項來編譯成mex file
指定debugger的方式開啟matlab, matlab -Dgdb
執行matlab, run -nojvm
在matlab裡面開啟除錯功能, dbmex on
在mex file設斷點, b mexFunction
接下來就一直continue直到mexFunction這個中斷點
參考來源:
Debugging C/C++ Language MEX-Files
先以mex加-g選項來編譯成mex file
指定debugger的方式開啟matlab, matlab -Dgdb
執行matlab, run -nojvm
在matlab裡面開啟除錯功能, dbmex on
在mex file設斷點, b mexFunction
接下來就一直continue直到mexFunction這個中斷點
參考來源:
Debugging C/C++ Language MEX-Files
把c變成mex file
給未來的裕翔
因為有個m file執行一次要九分鐘
忍無可忍之際, 決定改寫作者的c code
那個作者提供的程式不但不完整
連c code都不能直接編譯成mex file......
要修改一些地方才可以
vector_t perform_omp(matrix_t a, vector_t b, int k) {
改成
void mexFunction(int nlhs,mxArray *plhs[],int nrhs,const mxArray *prhs[]){
matrix_t a;
a.matrix = mxGetPr(prhs[0]);
a.w = mxGetN(prhs[0]);
a.h = mxGetM(prhs[0]);
vector_t b;
b.vector = mxGetPr(prhs[1]);
b.h = mxGetM(prhs[1]);
int k = *mxGetPr(prhs[2]);
然後
return x_sol;
改成
plhs[0] = mxCreateDoubleMatrix(a.w, 1, mxREAL);
x_sol.vector = mxGetPr(plhs[0]);
x_sol.h = mxGetM(plhs[0]);
記得要放面上面宣告的地方
這樣就可以了
接著介紹關於mex file的幾個function和parameter意義
nrhs number of right hand side
prhs pointer of right hand side
nlhs和plhs比照辦理
mxGetPr 取得prhs或plhs的實數變數指標, get pointer of real
mxGetM 取得該變數的row數
mxGetN 取得該變數的column數
因為有個m file執行一次要九分鐘
忍無可忍之際, 決定改寫作者的c code
那個作者提供的程式不但不完整
連c code都不能直接編譯成mex file......
要修改一些地方才可以
vector_t perform_omp(matrix_t a, vector_t b, int k) {
改成
void mexFunction(int nlhs,mxArray *plhs[],int nrhs,const mxArray *prhs[]){
matrix_t a;
a.matrix = mxGetPr(prhs[0]);
a.w = mxGetN(prhs[0]);
a.h = mxGetM(prhs[0]);
vector_t b;
b.vector = mxGetPr(prhs[1]);
b.h = mxGetM(prhs[1]);
int k = *mxGetPr(prhs[2]);
然後
return x_sol;
改成
plhs[0] = mxCreateDoubleMatrix(a.w, 1, mxREAL);
x_sol.vector = mxGetPr(plhs[0]);
x_sol.h = mxGetM(plhs[0]);
記得要放面上面宣告的地方
這樣就可以了
接著介紹關於mex file的幾個function和parameter意義
nrhs number of right hand side
prhs pointer of right hand side
nlhs和plhs比照辦理
mxGetPr 取得prhs或plhs的實數變數指標, get pointer of real
mxGetM 取得該變數的row數
mxGetN 取得該變數的column數
gdb參考的原始碼
給未來的裕翔
當我有三個資料夾, gdb-1, gdb-2, gdb-3
現在在gdb-1裡面編輯一個main.c產生a.out
以 gcc -g main.c 編譯它
理所當然, 在gdb-1可以使用gdb
把a.out移到gdb-2的話, 依舊可以gdb
表示它會紀錄編譯來源的原始碼位置
若把main.c也移到gdb-2
依舊可以gdb, 表示gdb搜尋路徑包括 .
再把main.c移到gdb-3?
在gdb-2裡面無法gdb了~
當我有三個資料夾, gdb-1, gdb-2, gdb-3
現在在gdb-1裡面編輯一個main.c產生a.out
以 gcc -g main.c 編譯它
理所當然, 在gdb-1可以使用gdb
把a.out移到gdb-2的話, 依舊可以gdb
表示它會紀錄編譯來源的原始碼位置
若把main.c也移到gdb-2
依舊可以gdb, 表示gdb搜尋路徑包括 .
再把main.c移到gdb-3?
在gdb-2裡面無法gdb了~
wordpress備份
給未來的裕翔
我所有的筆記可以在我的wordpress上累積
那我的wordpress呢? 要怎樣才能在重灌後重建呢? 複製哪些檔案才算備份呢?
以下, 是我試一個早上的筆記^^
首先, 在要重建的電腦上設定httpd環境
yum install -y httpd
vi /etc/httpd/conf/httpd.conf
把 <IfModule mod_userdir.c>裡的
UserDir disabled註解, UserDir public_html反註解
然後打開selinux的httpd_enable_homedirs
setsebool -P httpd_enable_homedirs on
記得/home/bob和/home/bob/public_html的權限要讓httpd可以讀
chmod 755 /home/bob
chmod 755 /home/bob/public_html
接著到原本放置wordpress的server上去
先把wordpress整個複製到要重建的電腦上的~/public_html裡面
記得要改變 它的context
chcon -t httpd_user_content_t wordpress
再來就是部落格內容: 我的筆記!
經過一個早上的嘗試, 我很確定筆記就是存在資料庫裡面
mysqldump -u bob -p --database wordpress > wordpress.sql
如果日後希望寫成指令形式好加在script裡面的話
mysqldump -u bob -pmypassword --database wordpress > wordpress.sql
注意-p mypassword一定要連在一起
複製到要重建的電腦上
scp wordpress.sql 140.114.28.187:/home/bob
接著回要重建的電腦上
安裝mysql和mysql-server
yum install -y mysql mysql-server
service mysqld start
新增root帳號
mysqladmin -u root password 'mypassword'
以root身份登入, 新增bob帳號
mysql -u root -p
grant all on *.* to bob@localhost identified by 'mypassword2'
localhost不加的話, 之後bob登入會有錯誤
離開 mysql, quit
把server上複製過來的wordpress.sql匯入
mysql -u bob -p < wordpress.sql
搞定^^耶!
以上是憑印象寫出來的筆記
也許會有哪邊漏掉
底下順便列幾個mysql指令
show databases 秀所有的databases
drop databases mydatabase 刪除mydatabase這個database
note: 可以發現, 要重建的那台電腦, 重頭到尾都不需要安裝wordpress~
我所有的筆記可以在我的wordpress上累積
那我的wordpress呢? 要怎樣才能在重灌後重建呢? 複製哪些檔案才算備份呢?
以下, 是我試一個早上的筆記^^
首先, 在要重建的電腦上設定httpd環境
yum install -y httpd
vi /etc/httpd/conf/httpd.conf
把 <IfModule mod_userdir.c>裡的
UserDir disabled註解, UserDir public_html反註解
然後打開selinux的httpd_enable_homedirs
setsebool -P httpd_enable_homedirs on
記得/home/bob和/home/bob/public_html的權限要讓httpd可以讀
chmod 755 /home/bob
chmod 755 /home/bob/public_html
接著到原本放置wordpress的server上去
先把wordpress整個複製到要重建的電腦上的~/public_html裡面
記得要改變 它的context
chcon -t httpd_user_content_t wordpress
再來就是部落格內容: 我的筆記!
經過一個早上的嘗試, 我很確定筆記就是存在資料庫裡面
mysqldump -u bob -p --database wordpress > wordpress.sql
如果日後希望寫成指令形式好加在script裡面的話
mysqldump -u bob -pmypassword --database wordpress > wordpress.sql
注意-p mypassword一定要連在一起
複製到要重建的電腦上
scp wordpress.sql 140.114.28.187:/home/bob
接著回要重建的電腦上
安裝mysql和mysql-server
yum install -y mysql mysql-server
service mysqld start
新增root帳號
mysqladmin -u root password 'mypassword'
以root身份登入, 新增bob帳號
mysql -u root -p
grant all on *.* to bob@localhost identified by 'mypassword2'
localhost不加的話, 之後bob登入會有錯誤
離開 mysql, quit
把server上複製過來的wordpress.sql匯入
mysql -u bob -p < wordpress.sql
搞定^^耶!
以上是憑印象寫出來的筆記
也許會有哪邊漏掉
底下順便列幾個mysql指令
show databases 秀所有的databases
drop databases mydatabase 刪除mydatabase這個database
note: 可以發現, 要重建的那台電腦, 重頭到尾都不需要安裝wordpress~
vim: taglist
給未來的裕翔
期待這天好久了~
之前在windows上安裝vim plugin總是有種討厭的感覺
一想到之後在Linux底下安裝 相同的plugin
必然會有數分鐘的摸索期就很不爽, 明明是已經做過的同一件事說~
---情緒分隔線---
首先, 下載taglist_45.zip
在~/.vim裡面解壓縮
unzip taglist_45.zip
接著下載ctags-5.8-1.i386.rpm, 安裝
yum localinstall ctags-5.8-1.i386.rpm --nogpgchkeck
然後在vim裡面就可以使用了
用法是
:TlistOpen
:TlistClose
:TlistToggle
提醒: vim裡面切換視窗的指令是
Ctrl + w + 方向鍵
期待這天好久了~
之前在windows上安裝vim plugin總是有種討厭的感覺
一想到之後在Linux底下安裝 相同的plugin
必然會有數分鐘的摸索期就很不爽, 明明是已經做過的同一件事說~
---情緒分隔線---
首先, 下載taglist_45.zip
在~/.vim裡面解壓縮
unzip taglist_45.zip
接著下載ctags-5.8-1.i386.rpm, 安裝
yum localinstall ctags-5.8-1.i386.rpm --nogpgchkeck
然後在vim裡面就可以使用了
用法是
:TlistOpen
:TlistClose
:TlistToggle
提醒: vim裡面切換視窗的指令是
Ctrl + w + 方向鍵
Monday, April 19, 2010
幫大哥寫小Ruby
給未來的裕翔
剛幫簡大哥完成一份小歸小
依然有成就感的Ruby^^
先貼在這, 也許哪天會用到
剛幫簡大哥完成一份小歸小
依然有成就感的Ruby^^
先貼在這, 也許哪天會用到
say = ''
while 1
puts 'say something to grandma!'
say=gets.chomp
if say != say.upcase
puts 'HUH?! SPEAK UP, SONNY!'
elsif say == 'BYE'
break
else
puts 'NO ,NOT SINCE ' + (1930+rand(21)).to_s + '!'
end
end
Sunday, April 18, 2010
人體Compiler: && ||
給未來的裕翔
main()
{
int a = 5; int b = 5;
printf("%d%2d%2d%2d", a&&b, a&b, a||b, a|b);
}
雖然是馬後炮還是要說一下
&&左右如果放數字依然當成condition
所以只要都不為0那就回傳1
&則是做bit的交集
||和|以此類推
%2d對於不到二位數的數字, 補空格
超過二位數的數字, 就超過阿......
完整輸出是:
1 5 1 5
main()
{
int a = 5; int b = 5;
printf("%d%2d%2d%2d", a&&b, a&b, a||b, a|b);
}
雖然是馬後炮還是要說一下
&&左右如果放數字依然當成condition
所以只要都不為0那就回傳1
&則是做bit的交集
||和|以此類推
%2d對於不到二位數的數字, 補空格
超過二位數的數字, 就超過阿......
完整輸出是:
1 5 1 5
static library & shared library嘗試
給未來的裕翔
剛從"工程師碎碎唸"這篇部落格
看到static library和shared library的實作介紹
首先準備三個檔案
main.c
#include "myHeader.h"
int main()
{
myFunc();
return 0;
}
myHeader.h
void myFunc();
function.c
#include <stdio.h>
void myFunc()
{
printf("this is myFunc speaking\n");
}
gcc -c main.c function.c
ar crv myLib.a function.o
(c: create r: insert with replace v: verbose)
gcc -o main main.o myLib.a
以上是static library
gcc -o myLib.so -shared function.c
gcc -o main main.o myLib.so
./main
./main: error while loading shared libraries: myLib.so: cannot open shared object file: No such file or directory
就算編譯成功, 執行期間還是到預設幾個位置尋找shared library
方便起見, 把myLib.so複製到/lib底下
cp myLib.so /lib
./main
./main: error while loading shared libraries: /lib/myLib.so: cannot restore segment prot after reloc: Permission denied
這是SELinux的問題, 必須修改檔案的type
chcon -t textrel_shlib_t myLib.so
cp -a myLib.so /lib
注意, 一定要加-a, 否則myLib.so複製過去後, type會被自動改掉
./main
成功!
以上是shared library
如果是使用static library
ldd main只有預設的三行
如果使用shared library
ldd main則會多一行我們自己的myLib.so
linux-gate.so.1 => (0x00e3a000)
myLib.so => /lib/myLib.so (0x00521000)
libc.so.6 => /lib/libc.so.6 (0x00364000)
/lib/ld-linux.so.2 (0x00342000)
剛從"工程師碎碎唸"這篇部落格
看到static library和shared library的實作介紹
首先準備三個檔案
main.c
#include "myHeader.h"
int main()
{
myFunc();
return 0;
}
myHeader.h
void myFunc();
function.c
#include <stdio.h>
void myFunc()
{
printf("this is myFunc speaking\n");
}
gcc -c main.c function.c
ar crv myLib.a function.o
(c: create r: insert with replace v: verbose)
gcc -o main main.o myLib.a
以上是static library
gcc -o myLib.so -shared function.c
gcc -o main main.o myLib.so
./main
./main: error while loading shared libraries: myLib.so: cannot open shared object file: No such file or directory
就算編譯成功, 執行期間還是到預設幾個位置尋找shared library
方便起見, 把myLib.so複製到/lib底下
cp myLib.so /lib
./main
./main: error while loading shared libraries: /lib/myLib.so: cannot restore segment prot after reloc: Permission denied
這是SELinux的問題, 必須修改檔案的type
chcon -t textrel_shlib_t myLib.so
cp -a myLib.so /lib
注意, 一定要加-a, 否則myLib.so複製過去後, type會被自動改掉
./main
成功!
以上是shared library
如果是使用static library
ldd main只有預設的三行
如果使用shared library
ldd main則會多一行我們自己的myLib.so
linux-gate.so.1 => (0x00e3a000)
myLib.so => /lib/myLib.so (0x00521000)
libc.so.6 => /lib/libc.so.6 (0x00364000)
/lib/ld-linux.so.2 (0x00342000)
Saturday, April 17, 2010
Thursday, April 15, 2010
Win 7安裝問題
給未來的裕翔
原則上不紀錄關於Windows的東西的
因為無法累積
不過因為它把我其它顆硬碟的MBR清掉了, 特此紀錄~
(不過不確定是XP還是Win 7幹的)
關於安裝, 只要format和setup以重開機隔開似乎就會成功
不過安裝成功的第一次, 感覺反而沒把MBR寫掉?
我原來LInux系統的boot分割還在
結果開機依舊有選單可以選!? 只是進去沒東西罷了
把boot刪掉後, Win 7還是進不去(當然)
試了一下安裝光碟的Startup Repair(不確定是不是這名稱)
沒有成功就決定重新安裝了
特別的是
這次安裝, 它要求保留100MB放檔案什麼的
之前好像沒出現這個?
不管, 總之我成功了^^
原則上不紀錄關於Windows的東西的
因為無法累積
不過因為它把我其它顆硬碟的MBR清掉了, 特此紀錄~
(不過不確定是XP還是Win 7幹的)
關於安裝, 只要format和setup以重開機隔開似乎就會成功
不過安裝成功的第一次, 感覺反而沒把MBR寫掉?
我原來LInux系統的boot分割還在
結果開機依舊有選單可以選!? 只是進去沒東西罷了
把boot刪掉後, Win 7還是進不去(當然)
試了一下安裝光碟的Startup Repair(不確定是不是這名稱)
沒有成功就決定重新安裝了
特別的是
這次安裝, 它要求保留100MB放檔案什麼的
之前好像沒出現這個?
不管, 總之我成功了^^
重新安裝MBR
給未來的裕翔
不知道是因為XP還是因為Win 7
安裝失敗就算了, 還把我其他硬碟的MBR清掉了
利用Fedora 12的DVD安裝光碟(有Rescue功能)
進到救援模式
(以下假設我的boot在第一顆硬碟的第一個partition)
chroot /mnt/sysimage 這行我不確定是不是必要
grub
root (hd0,0) 硬碟和partition編號都從0開始, 指定目標位置
setup (hd0) 安裝Grub, 果然顯示找不到stage 1
quit
reboot
如果不確定要安裝的硬碟編號多少
可以利用geometry (hd0)指令
一個個看硬碟的partion狀態來推測
不知道是因為XP還是因為Win 7
安裝失敗就算了, 還把我其他硬碟的MBR清掉了
利用Fedora 12的DVD安裝光碟(有Rescue功能)
進到救援模式
(以下假設我的boot在第一顆硬碟的第一個partition)
chroot /mnt/sysimage 這行我不確定是不是必要
grub
root (hd0,0) 硬碟和partition編號都從0開始, 指定目標位置
setup (hd0) 安裝Grub, 果然顯示找不到stage 1
quit
reboot
如果不確定要安裝的硬碟編號多少
可以利用geometry (hd0)指令
一個個看硬碟的partion狀態來推測
Wednesday, April 14, 2010
gdb技巧: 利用錯誤address反推程式碼
給未來的裕翔
當以gdb執行程式程式發生錯誤時
可以用bt指令看錯在哪個address, ex: 0x08048405
那就可以list *0x08048405
把程式碼位置秀出來
沒親自試過
如果能用就真的太棒了!
當以gdb執行程式程式發生錯誤時
可以用bt指令看錯在哪個address, ex: 0x08048405
那就可以list *0x08048405
把程式碼位置秀出來
沒親自試過
如果能用就真的太棒了!
Monday, April 12, 2010
vim熱鍵
Ctrl + f 下一頁
Ctrl + b 上一頁
J 合併兩行, 中間以一個空格隔開
cc 清除整行, 但保留位置, 相當於dd + O
P 往左或往上貼上
d0 往前砍到行首, 游標所在字元不砍
X 命令模式的backspace
:buffers 列出所影編輯檔
:b# #是檔案序號, 切到該檔案去
:bd# #是檔案順序, 關掉該檔案, 後面序號保持不變
:vnew 在右邊開一個新視窗
:only 表留游標所在的視窗
Ctrl + b 上一頁
J 合併兩行, 中間以一個空格隔開
cc 清除整行, 但保留位置, 相當於dd + O
P 往左或往上貼上
d0 往前砍到行首, 游標所在字元不砍
X 命令模式的backspace
:buffers 列出所影編輯檔
:b# #是檔案序號, 切到該檔案去
:bd# #是檔案順序, 關掉該檔案, 後面序號保持不變
:vnew 在右邊開一個新視窗
:only 表留游標所在的視窗
gdb的condition breakpoint
給未來的裕翔
如果想在某個地方設condition breakpoint
先設一個breakpoint, 假設它編號是2
我希望在變數 j == 8 的時候停在那
那就 condition 2 j == 8
如果想在某個地方設condition breakpoint
先設一個breakpoint, 假設它編號是2
我希望在變數 j == 8 的時候停在那
那就 condition 2 j == 8
gdb的step
給未來的裕翔
當我在gdb裡面step進某個function後
即使我up 1回到上一層
按n, 又進到剛剛的function, 然後才next
似乎不先把這個function結束不行
改天可以試試看finish
看能不能因此順利到上一層, 不再被拉回
當我在gdb裡面step進某個function後
即使我up 1回到上一層
按n, 又進到剛剛的function, 然後才next
似乎不先把這個function結束不行
改天可以試試看finish
看能不能因此順利到上一層, 不再被拉回
Sunday, April 11, 2010
把OpenCV的編譯器最佳化關掉
給未來的裕翔
編譯器是否最佳化是由參數決定
也就是寫在Makefile裡面
不過跑完./configure後
用find -name Makefile | wc -l
發現有16個Makefile
一個個改太白癡了
所以針對源頭configure檔
把裡面所有的-O2和-O3都換成-O0就好
ps: 終於可以不用在gdb的時候
看到一堆<value optimized out>了......
ps: 要檢查一個function 裡面有沒有變數是<value optimized out>
可以在gdb裡面用info local, 列出所有local變數
編譯器是否最佳化是由參數決定
也就是寫在Makefile裡面
不過跑完./configure後
用find -name Makefile | wc -l
發現有16個Makefile
一個個改太白癡了
所以針對源頭configure檔
把裡面所有的-O2和-O3都換成-O0就好
ps: 終於可以不用在gdb的時候
看到一堆<value optimized out>了......
ps: 要檢查一個function 裡面有沒有變數是<value optimized out>
可以在gdb裡面用info local, 列出所有local變數
Deluge觀察
給未來的裕翔
當我以Deluge下載A檔案的同時
再下載一次, 不會成功
A檔案下載好後
再下載一次, 不會成功
把A檔案的實際所在砍掉
它依然在Seeding列表上
關掉Deludge重開後
它不在Seeding列表上了
而是跑去Downloading列表, 並且重新下載
結論: 重複下載同名的torrent, 會因為自動檢查而避免
為了省空間只移檔案實際所在
並且希望藉由檔案依然在列表上這件事
避免重複下載我不要的檔案, 是不會成功的
因為Deludge一旦發現實際檔案所在沒東西
就會自動重新下載
當我以Deluge下載A檔案的同時
再下載一次, 不會成功
A檔案下載好後
再下載一次, 不會成功
把A檔案的實際所在砍掉
它依然在Seeding列表上
關掉Deludge重開後
它不在Seeding列表上了
而是跑去Downloading列表, 並且重新下載
結論: 重複下載同名的torrent, 會因為自動檢查而避免
為了省空間只移檔案實際所在
並且希望藉由檔案依然在列表上這件事
避免重複下載我不要的檔案, 是不會成功的
因為Deludge一旦發現實際檔案所在沒東西
就會自動重新下載
Saturday, April 10, 2010
Yahoo的電影預告
給未來的裕翔
如果想看Yahoo的電影預告
請先新增Rpm Fusion
接著安裝三個套件
gstreamer-plugins-bad
gstreamer-plugins-ugly
gstreamer-ffmpeg
這樣就可以了
如果想看Yahoo的電影預告
請先新增Rpm Fusion
接著安裝三個套件
gstreamer-plugins-bad
gstreamer-plugins-ugly
gstreamer-ffmpeg
這樣就可以了
Google的namebench: 推薦DNS
給未來的裕翔
剛以Google的namebench測試一堆DNS速度
以下是執行的結果:
Recommended configuration (fastest + nearest):
----------------------------------------------
nameserver 203.187.0.6 # GIGA-Net 4 TW Replica of GIGA-Net-2 TW [203.133.1.6]
nameserver 140.114.229.129 # SYS-140.114.229.129 Replica of 8.8.4.4, Replica of 8.8.8.8
nameserver 202.145.138.1 # TTN TW
下載&執行步驟:
到http://code.google.com/p/namebench/
下載namebench-1.2-source.tgz
依照鳥哥對於tarball的擺放建議
把下載的tarball移到/usr/local/src後解壓縮
./namebench.py
剛以Google的namebench測試一堆DNS速度
以下是執行的結果:
Recommended configuration (fastest + nearest):
----------------------------------------------
nameserver 203.187.0.6 # GIGA-Net 4 TW Replica of GIGA-Net-2 TW [203.133.1.6]
nameserver 140.114.229.129 # SYS-140.114.229.129 Replica of 8.8.4.4, Replica of 8.8.8.8
nameserver 202.145.138.1 # TTN TW
下載&執行步驟:
到http://code.google.com/p/namebench/
下載namebench-1.2-source.tgz
依照鳥哥對於tarball的擺放建議
把下載的tarball移到/usr/local/src後解壓縮
./namebench.py
Rpm Fusion
為了安裝VLC Player
要先把Rpm Fusion加到我的Repo裡面
(Rpm Fusion好像最一開始安裝Fedora的時候有出現?)
直接到Rpm Fusion官網http://rpmfusion.org/
點選Enable RPM Fusion on your system
下載
http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-stable.noarch.rpm
和
http://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-stable.noarch.rpm
然後安裝
yum localinstall -y --nogpgcheck rpmfusion-free-release-stable.noarch.rpm
yum localinstall -y --nogpgcheck rpmfusion-free-nonrelease-stable.noarch.rpm
記得中間有那個--noghgcheck
這樣Rpm Fusion就會自動新增到Repo檔裡面去
以安裝vlc為例
直接yum install -y vlc
不需要額外的動作
要先把Rpm Fusion加到我的Repo裡面
(Rpm Fusion好像最一開始安裝Fedora的時候有出現?)
直接到Rpm Fusion官網http://rpmfusion.org/
點選Enable RPM Fusion on your system
下載
http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-stable.noarch.rpm
和
http://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-stable.noarch.rpm
然後安裝
yum localinstall -y --nogpgcheck rpmfusion-free-release-stable.noarch.rpm
yum localinstall -y --nogpgcheck rpmfusion-free-nonrelease-stable.noarch.rpm
記得中間有那個--noghgcheck
這樣Rpm Fusion就會自動新增到Repo檔裡面去
以安裝vlc為例
直接yum install -y vlc
不需要額外的動作
Thursday, April 8, 2010
Matlab常用(或可用)快捷鍵
給未來的裕翔
一開始不喜歡Matlab, 因為不喜歡用盜版
現在, 學校有提供正版了
我可以放心的基於累積好好學習了^^
Matlab快捷鍵列表:
在Command line輸入Esc: 刪除當下的整列輸入
在Command line輸入Ctrl + u: 刪除當下的游標以前
在Command line輸入Ctrl + k: 刪除當下的游標以後
Alt + s: 叫出Matlab左下角的Start\
Alt + y: 跳到Matlab上面的路徑欄
Ctrl + Tab: 在Matlab的子視窗之間切換
Ctrl + Shift + Tab: 在Matlab的子視窗之間逆切換
Ctrl + PageUp(PageDown): 在Editor的子文件之間切換
一開始不喜歡Matlab, 因為不喜歡用盜版
現在, 學校有提供正版了
我可以放心的基於累積好好學習了^^
Matlab快捷鍵列表:
在Command line輸入Esc: 刪除當下的整列輸入
在Command line輸入Ctrl + u: 刪除當下的游標以前
在Command line輸入Ctrl + k: 刪除當下的游標以後
Alt + s: 叫出Matlab左下角的Start\
Alt + y: 跳到Matlab上面的路徑欄
Ctrl + Tab: 在Matlab的子視窗之間切換
Ctrl + Shift + Tab: 在Matlab的子視窗之間逆切換
Ctrl + PageUp(PageDown): 在Editor的子文件之間切換
Matlab的快捷鍵對應
給未來的裕翔
在Linux底下的Matlab
快捷鍵預設為和Emacs一樣
為了達到所謂累積的真諦!
我決定快捷鍵設定改掉
File -> Preferences -> Keyboard -> Editor/Debugger key bindings -> Windows
在Linux底下的Matlab
快捷鍵預設為和Emacs一樣
為了達到所謂累積的真諦!
我決定快捷鍵設定改掉
File -> Preferences -> Keyboard -> Editor/Debugger key bindings -> Windows
Monday, April 5, 2010
vim環境設定
給未來的裕翔
在此紀錄我常用會我將用的vim設定
可以都寫在~/.vimrc裡面
在此紀錄我常用會我將用的vim設定
可以都寫在~/.vimrc裡面
set nu "顯示行號
set background=dark "這樣關鍵字可以亮一些
set background=light "這樣關鍵字可以亮一些
(縮寫se bg=light)
set hls "找到關鍵字反白, highlight search
set ic "搜尋不分大小寫, ignore case
set incsearch "即時搜尋已經輸入好的部份
set ai "自動縮排, auto indent
set ft=c "對此文件視為c語言提供顏色標記
syntax off "取消顏色標記
set nobackup "不要自動產生swp檔
abbr hw homework "輸入hw後接著按空白鍵, 就變homework
una hw "取消abbr對hw的縮寫設定
cabbr hw homework "只對command line有效的abbr
cuna hw "取消cabbr對hw的縮寫設定
iabbr hw homework "只對insert mode有效的abbr
iuna hw "取消iabbr對hw的縮寫設定
set tabstop=4 "控制tab縮排的寬度4
set cindent C語言縮排
Sunday, April 4, 2010
增開ssh server的port
給未來的裕翔
現有一個ssh server, ex: ru129.dorm.nthu
如果想要增開服務的port
先去看/etc/services還有哪個port沒被用
tac /etc/services | grep 23
23, 24, 25, 26, 試到26就發現一個沒人用的了
修改/etc/ssh/sshd_config
新增Port 26
原來的#Port 22繼續保持註解也沒關係
接著對selinux解禁
semanage port -a -t ssh_port_t -p tcp 26
-a: add
-t: type吧, 我猜
重啟sshd後, client端就可以使用
ssh ru129.dorm.nthu -p 26來連接新增的port
ps: server端的iptables要記得為port 26新增規則
現有一個ssh server, ex: ru129.dorm.nthu
如果想要增開服務的port
先去看/etc/services還有哪個port沒被用
tac /etc/services | grep 23
23, 24, 25, 26, 試到26就發現一個沒人用的了
修改/etc/ssh/sshd_config
新增Port 26
原來的#Port 22繼續保持註解也沒關係
接著對selinux解禁
semanage port -a -t ssh_port_t -p tcp 26
-a: add
-t: type吧, 我猜
重啟sshd後, client端就可以使用
ssh ru129.dorm.nthu -p 26來連接新增的port
ps: server端的iptables要記得為port 26新增規則
ssh突破port限制
給未來的裕翔
也許哪天在公司裡需要這技巧
假設現在所在的地方, 只有開放port 80
但我想使用別的port
先找一台ssh server, ex: ru129.dorm.nthu
然後sudo ssh -D 80 bob@ru129.dorm.nthu -p 22
-D: local端要出發的port
-p: server端要到達的port
接下來如果要使用firefox或是pidgin
就分別去做proxy設定
對firefox而言: Edit -> Preferences -> Advanced -> Network -> Settings
-> Manual proxy configuration -> SOCKS Host: 127.0.0.1 Port: 80
pidgin也類似, 不過因為還沒親自去試
所以先不寫詳細操作
也許哪天在公司裡需要這技巧
假設現在所在的地方, 只有開放port 80
但我想使用別的port
先找一台ssh server, ex: ru129.dorm.nthu
然後sudo ssh -D 80 bob@ru129.dorm.nthu -p 22
-D: local端要出發的port
-p: server端要到達的port
接下來如果要使用firefox或是pidgin
就分別去做proxy設定
對firefox而言: Edit -> Preferences -> Advanced -> Network -> Settings
-> Manual proxy configuration -> SOCKS Host: 127.0.0.1 Port: 80
pidgin也類似, 不過因為還沒親自去試
所以先不寫詳細操作
gdb的參考原始碼
給未來的裕翔
我有個猜測
函式庫在編譯的時候
如果有加-g選項
會紀錄原始碼的位置
當我在其他地方編譯一個sample原始碼
使用pkg-config指定標頭檔和函式庫所在位置
gdb過程中, 有些可以進去的函式
把函式原始碼移開原本位置
重新執行gdb就會進不去
我有個猜測
函式庫在編譯的時候
如果有加-g選項
會紀錄原始碼的位置
當我在其他地方編譯一個sample原始碼
使用pkg-config指定標頭檔和函式庫所在位置
gdb過程中, 有些可以進去的函式
把函式原始碼移開原本位置
重新執行gdb就會進不去
Friday, April 2, 2010
pkg-config的--libs和--cflags
給未來的裕翔
當我們在編譯程式的時候
如果會使用到額外的函式庫
那就需要引入額外的標頭檔
而在編譯的時候, 對於額外的函式庫和標頭檔位置都要指明
看是要自己記得位置或是利用 pkg-config
以OpenCV-2.0為例, 如果我要標頭檔位置:
pkg-config --cflags opencv
如果要知道函式庫位置:
pkg-config -libs opencv
不過因為OpenCv-2.0不是使用yum安裝
所以pkg-config會顯示找不到opencv.pc
並且建議對環境變數指明opencv.pc位置
PKG_CONFIG_PATH=/home/bob/Desktop/opencv-project/OpenCV-2.0.0/
實際上我是用PKG_CONFIG_PATH=$(dirname $(locate -r 0/opencv.pc$))
建議直接加在~/.bashrc吧
export PKG_CONFIG_PATH=/home/bob/Desktop/opencv-project/OpenCV-2.0.0/
此時可以使用pkg-config --libs或pkg-config --cflags
不過前提是已經make install了
因為pkg-config參考的opencv.pc的內容
都是指向預設安裝目的地
當我們在編譯程式的時候
如果會使用到額外的函式庫
那就需要引入額外的標頭檔
而在編譯的時候, 對於額外的函式庫和標頭檔位置都要指明
看是要自己記得位置或是利用 pkg-config
以OpenCV-2.0為例, 如果我要標頭檔位置:
pkg-config --cflags opencv
如果要知道函式庫位置:
pkg-config -libs opencv
不過因為OpenCv-2.0不是使用yum安裝
所以pkg-config會顯示找不到opencv.pc
並且建議對環境變數指明opencv.pc位置
PKG_CONFIG_PATH=/home/bob/Desktop/opencv-project/OpenCV-2.0.0/
實際上我是用PKG_CONFIG_PATH=$(dirname $(locate -r 0/opencv.pc$))
建議直接加在~/.bashrc吧
export PKG_CONFIG_PATH=/home/bob/Desktop/opencv-project/OpenCV-2.0.0/
此時可以使用pkg-config --libs或pkg-config --cflags
不過前提是已經make install了
因為pkg-config參考的opencv.pc的內容
都是指向預設安裝目的地
移除Firefox的CNNIC憑證
讓wordpress可以上傳檔案
給未來裕翔
為了讓wordpress可以上傳檔案
必須對wordpress/wp-content做chown和chmod
chown root.apache wp-content
chmod g+w wp-content
為了讓wordpress可以上傳檔案
必須對wordpress/wp-content做chown和chmod
chown root.apache wp-content
chmod g+w wp-content
awk輸出有興趣欄位
給未來的裕翔
對於aaa bbb ccc這樣的字串
如何快速擷取bbb呢?
除了echo "aaa bbb ccc" | cut -d\ -f2
我們還可以
echo "aaa bbb ccc" | awk '{print $2}'
不過仔細想想
第一個方法所需的鍵數比較少
那還是維持用第一個吧方法吧~
對於aaa bbb ccc這樣的字串
如何快速擷取bbb呢?
除了echo "aaa bbb ccc" | cut -d\ -f2
我們還可以
echo "aaa bbb ccc" | awk '{print $2}'
不過仔細想想
第一個方法所需的鍵數比較少
那還是維持用第一個吧方法吧~
Matlab的breakpoint
給未來的裕翔
如果我的figMCAlinegaussians.m會呼叫MCA2_Bcr
那我直接把斷點設在MCA2_Bcr裡面按F5是不會到的
我猜, 因為預設不會step in
這可以解釋一切^^
後記: 這是錯的
當我除錯前在MCA2_Bcr設的breakpoint
很有可能在開始除錯時
剛設breakpoint就消失了
但是似乎也不是每次都會消失
Matlab的bug?
不知道
可以確定的是, 預設是會step in的^^
如果我的figMCAlinegaussians.m會呼叫MCA2_Bcr
那我直接把斷點設在MCA2_Bcr裡面按F5是不會到的
我猜, 因為預設不會step in
這可以解釋一切^^
後記: 這是錯的
當我除錯前在MCA2_Bcr設的breakpoint
很有可能在開始除錯時
剛設breakpoint就消失了
但是似乎也不是每次都會消失
Matlab的bug?
不知道
可以確定的是, 預設是會step in的^^
Subscribe to:
Posts (Atom)