Friday, April 30, 2010

WordPress無法登入?

給未來的裕翔

不知道為什麼WordPress偶爾會無法登入

可能的解決辦法

從以下網址登入(還是不知道為什麼, 但會成功)

localhost/~bob/wordpress/wp-admin

Wednesday, April 28, 2010

WordPress: themes

給未來的裕翔

下載好theme

解壓縮到~/public_html/wordpress/wp-content/themes/

重點是, 記得它的context要對

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

writer: Field name

給未來的裕翔

如果在某些地方插入某些Field

像是頁數

結果居然不是顯示實際頁數

而是 Page numbers

View -> Field Names

確認一下是否壓下去了

把它壓回來^^

快速作法: Ctrl + F9

Tuesday, April 27, 2010

當pcmanfm不正常時

給未來的裕翔

把它砍掉後

pcmanfm &

Saturday, April 24, 2010

cURL下載檔案

給未來的裕翔

昨天看人家部落格介紹cURL

發現一個很好用的指令

curl -o #2_#1.jpg http://cgi2.tky.3web.ne.jp/~{zzh,nick}/[001-201].JPG

參考來源:

命令行CURL教程

Friday, April 23, 2010

writer: 在Header裡面插入Chapter

給未來的裕翔

先Insert -> Header -> 勾選Default

確定游標在Header裡面後

Insert -> Fields -> Other -> Chapter

其中, Ctrl + F2 可以取代Insert -> Fields -> Other

注意: 這個Chapter的對象只有

Format -> Styles and FormattingHeading 1

Heading 1做出來的才會顯示成Header裡的Chapter

gimp: 把圖顏色變淡

給未來的裕翔

Colorr -> Curves

應該有其它更漂亮的方法吧

不過當下能抓老鼠的都是好小叮噹

writer: 每頁相同的浮水印

給未來的裕翔

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

兩天的煩惱, 搞定!

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 *

Thursday, April 22, 2010

git對於被mv檔案

給未來的裕翔

是不理不睬

比traceroute更好的工具

給未來的裕翔

mtr!!!!!!

論文文獻工具: zotero

給未來的裕翔

寫論文會遇到的頗大問題就是reference

既要前後參照又要注意格式問題

google了一整天後決定使用zotero

Word + EndNote -> Writer + Zotero

首先, 去zotero官網下載firefox的plugin

裝好後重啟firefox

接著去google scholar

搜尋paper, 出現一堆搜尋結果後

zotero-dir

這篇先停在這, 等我有時間再研究關於貼圖的事

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一下

writer: 顯示行號

給未來的裕翔

Tools -> Line Numbering -> 勾選Show numbering -> Interval設為1

這樣就會每行都顯示行號了

writer: 研討會論文形式的雙欄位

給未來的裕翔

Insert -> Section -> Columns

wirter: 插入目錄

給未來的裕翔

游標停在想要插入目錄的地方

Insert -> Indexed and Tables -> Indexes and Tables

似乎只有經過Format -> Styles and Formatting處理過的

才會出現在目錄裡面

writer: 圖片裁剪

給未來的裕翔

對圖片Right Click -> Picture -> Crop

writer: 上下標

給未來的裕翔

writer裡面的文字上下標

Format -> Character -> Position

當然, 比較快的作法是

Ctrl + Shift + b 下標

Ctrl + Shift + p 上標


writer: 段落內換行

給未來的裕翔

writer裡面

每經過一個 Enter換行就是一個新段落

Shift + Enter則是段落內換行, 依然屬於同一段落

Tuesday, April 20, 2010

writer: 快捷鍵

給未來的裕翔

Ctrl + L 文字置左

Ctrl + E 文字置中

Ctrl + R 文字置右

Ctrl + P 列印

Ctrl + Shift + y 重複上一個動作, 頗難按......

writer: 插入頁碼(in Footer)

給未來的裕翔

如果要在writer裡面加入頁碼

Insert -> Footer -> 勾選Default

然後游標一到任一個Footer

Insert -> Fields -> Page Number

這樣就有了, 對其中任一頁碼進行置左, 置中, 或置右

所有頁碼都會同步

writer: 強迫換頁

給未來的裕翔

本文寫到某頁的一半就結束時

如果想從新頁開始下一部分

不用白痴的一直按Enter

Insert -> Manual Break -> Page break

當然, 快捷鍵更好 Ctrl + Enter

writer: 分節自動編號(無關目錄)

給未來的裕翔

Right Click -> Numbering/Bullets

此時按 Enter

會跳到下一行, 編號接續, 或是符號照舊

如果只想跳到下一行, 保持格式但不編號或符號

從浮動視窗裡選擇 Insert Unnumbered Entry

如果不想要格式和編號

從浮動視窗裡選擇 Numbering Off

writer樣式管理

給未來的裕翔

Format -> Styles and Formatting

當然, 直接按F11最快

不過我不知道怎麼關掉桌面預設的

F11 -> 程式全螢幕

writer段落前後間距

給未來的裕翔

游標停在要處理的段落


Right Click -> Paragraph -> Indents & Spacing -> Above paragraph

Right Click -> Paragraph -> Indents & Spacing -> Below paragraph

writer首行縮排

給未來的裕翔

游標停在要處理的段落


Right Click -> Paragraph -> Indents & Spacing -> First line -> 12pt

writer上註腳(footnote)

給未來的裕翔

在本文想要加入footnote的地方

Insert -> Footnote/Endnote

接下來一目了然

使用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


把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的幾個functionparameter意義

nrhs number of right hand side


prhs pointer of right hand side

nlhsplhs比照辦理

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了~

wordpress備份

給未來的裕翔

我所有的筆記可以在我的wordpress上累積

那我的wordpress呢? 要怎樣才能在重灌後重建呢? 複製哪些檔案才算備份呢?

以下, 是我試一個早上的筆記^^

首先, 在要重建的電腦上設定httpd環境

yum install -y httpd

vi /etc/httpd/conf/httpd.conf

<IfModule mod_userdir.c>裡的

UserDir disabled註解, UserDir public_html反註解

然後打開selinuxhttpd_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

接著回要重建的電腦上

安裝mysqlmysql-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 + 方向鍵


Monday, April 19, 2010

幫大哥寫小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


Xournal套件: pdf註釋

給未來的裕翔

想為pdf寫筆記嗎?

安裝Xournal

可以開啟pdf檔來註釋筆記

也可以匯出為pdf檔

static library & shared library嘗試

給未來的裕翔

剛從"工程師碎碎唸"這篇部落格

看到static libraryshared 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

Impress的文字上標和下標

給未來的裕翔

Ctrl + Shift + p 上標

Ctrl + Shift + b 下標

Thursday, April 15, 2010

Win 7安裝問題

給未來的裕翔

原則上不紀錄關於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狀態來推測

Wednesday, April 14, 2010

multi-thread跟OpenMP的關係

給未來的裕翔

multi-thread是概念

OpenMP是實作

pthread也是實作

gdb技巧: 利用錯誤address反推程式碼

給未來的裕翔

當以gdb執行程式程式發生錯誤時

可以用bt指令看錯在哪個address, ex: 0x08048405

那就可以list *0x08048405

把程式碼位置秀出來

沒親自試過

如果能用就真的太棒了!

Monday, April 12, 2010

vim的syntax設定檔

給未來的裕翔

/usr/share/vim/vim72/syntax/syntax.vim

vim熱鍵

Ctrl + f 下一頁

Ctrl + b 上一頁

J 合併兩行, 中間以一個空格隔開

cc 清除整行, 但保留位置, 相當於dd + O

P 往左或往上貼上

d0 往前砍到行首, 游標所在字元不砍

X 命令模式的backspace

:buffers 列出所影編輯檔

:b# #是檔案序號, 切到該檔案去

:bd# #是檔案順序, 關掉該檔案, 後面序號保持不變

:vnew 在右邊開一個新視窗

:only 表留游標所在的視窗

bash的編輯模式設定

給未來的裕翔

bash可以設定為vi或是 emacs的編輯模式

set -o vi

set -o emacs

gdb的重複breakpoint

給未來的裕翔

如果在某一行重複設置breakpoint

是有效的, 雖然沒什麼意義

當在那一行執行clear

所以該行的breakpoint都會被清掉~

gdb的condition breakpoint

給未來的裕翔

如果想在某個地方設condition breakpoint

先設一個breakpoint, 假設它編號是2

我希望在變數 j == 8 的時候停在那


那就 condition 2 j == 8

gdb的step

給未來的裕翔

當我在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變數

Deluge觀察

給未來的裕翔

當我以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

這樣就可以了

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

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

不需要額外的動作

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的快捷鍵對應

給未來的裕翔

在Linux底下的Matlab

快捷鍵預設為和Emacs一樣

為了達到所謂累積的真諦!

我決定快捷鍵設定改掉

File -> Preferences -> Keyboard -> Editor/Debugger key bindings -> Windows

Monday, April 5, 2010

Matlab矩陣的index檢查

給為未來的裕翔

如果現在有個矩陣A存1:512這些值

但我的範圍上限是500

那我可以A(A>500) = []

藉此把不在範圍內的index拿掉

vim環境設定

給未來的裕翔

在此紀錄我常用會我將用的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語言縮排

vimrc的註解符號

給未來的裕翔

"

Sunday, April 4, 2010

^[ 的按法

給未來的裕翔

在script裡面的時候

對於 ^[ 的表示

除了真的用符號湊成

還有另一個產生方式:

Ctrl v + Esc

兩種產生方式會造成字體顏色不一樣

有機會的話確認一下效果是否也不一樣

增開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突破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也類似, 不過因為還沒親自去試

所以先不寫詳細操作


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 --libspkg-config --cflags

不過前提是已經make install

因為pkg-config參考的opencv.pc的內容

都是指向預設安裝目的地

移除Firefox的CNNIC憑證

給未來的裕翔

我所尊重的陌生強者之一

在自己的部落隔上強力建議大家從Firefox移除CCNIC憑證

也稍微看了一下其他人的文章

我決定跟進!

從Firefox的Edit -> Preferences -> Advanced -> View Certificates

移除所有Entrust.net的子項目

然後會失敗, 有幾個就是移不掉

後來依照我尊敬的Rex建議(我不認識他)

安裝CA Untrustworthy這個Firefox的plugin

實際去以下兩個網站測試

網址衛士

ENUM 試驗平台

果然有出現警告, 這樣表示這個plugin有效

ps: 一開始我是嘗試Rex寫的CertAlert, 似乎無效?

讓wordpress可以上傳檔案

給未來裕翔

為了讓wordpress可以上傳檔案

必須對wordpress/wp-contentchownchmod

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}'

不過仔細想想

第一個方法所需的鍵數比較少

那還是維持用第一個吧方法吧~

Matlab的breakpoint

給未來的裕翔

如果我的figMCAlinegaussians.m會呼叫MCA2_Bcr

那我直接把斷點設在MCA2_Bcr裡面按F5是不會到的

我猜, 因為預設不會step in

這可以解釋一切^^

後記: 這是錯的

當我除錯前在MCA2_Bcr設的breakpoint

很有可能在開始除錯時

剛設breakpoint就消失了

但是似乎也不是每次都會消失

Matlab的bug?

不知道

可以確定的是, 預設是會step in的^^