網頁

2014年8月30日 星期六

[Web] 如何在Ubuntu上架設Apache2 server ?

如何在Ubuntu上架設Apache2 server ?

環境:

192.168.0.101 (Ubuntun)

安裝:

sudo apt-get install apache2

啟用Cgi模組:

sudo a2enmod cgi

編輯Apache2 conf檔:

vim /etc/apache2/apache2.conf
----------------------------------------------------------------------
ScriptAlias /cgi-bin/ /var/www/cgi-bin/
<Directory /var/www/cgi-bin/>
AddHandler cgi-script cgi
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>

重新啟動Apache2:

sudo service apache2 restart

撰寫Cgi程式: 

vim index.cpp
----------------------------------------------------------
#include <stdio.h>

int main(int argc, char *argv[]) {
        printf ("Content-type: text/html\n\n");
        printf ("<html>\n");

        printf ("\t<head>\n");
        printf ("\t\t<titLe>!!! Hello, world!!!</title>\n");
        printf ("\t</head>\n");
        printf ("\t<body>\n");
        printf ("\t\t<h1>hello~~~~~~~</h1>\n");
        printf ("\t</body>\n");
        printf ("</html>\n");
        return 0;
}

編譯:

vim Makefile
-------------------------------------------------------------
all:
        $(CXX) index.cpp -o index.cgi


make

移動Cgi程式:

將編譯好的.cgi放到 /var/www/cgi-bin/ 下面

Test:

http://192.168.0.101/cgi-bin/

Debug:

cat /var/log/apache2/access.log
cat /var/log/apache2/error.log

[git] 如何git push/clone 免打密碼 ?

如何git push/clone 免打密碼 ?


使用時機:

不想每次git push時都要打密碼

環境:

A (192.168.0.101) Ubuntu (開發機)
B (192.168.0.100) Synology DS + Synology Git Server

概念:

在A上把public key generate出來後放到B上,並且設定好ssh即可做到ssh免密碼登入。
因為git push/clone都是走ssh,所以就可以在push/clone時免打密碼。

SSH Key Generate: (on A)

ssh-keygen -t rsa (產生/root/.ssh/id_rsa 以及/root/.ssh/id_rsa.pub)
NOTE:注意當問"Enter passphrase (empty for no passphrase):"直接enter即可,否則還是會需要輸入一個passpharse

Copy public key to B: (on A)

scp /root/.ssh/id_rsa.pub 192.168.0.100:/root/.ssh/id_rsa.git.pub

Set default git user name: (on A)

vim /root/.gitconfig
----------------------------------------------
[user]
        name = root
                    ^^^^^ 必須和 B 上的git init --bare的目錄是同個owner

Concat content into authorized_keys: (on B)

cat /root/.ssh/id_rsa.git.pub >> /root/.ssh/authorized_keys

成功後就可以從A ssh到B、A git clone/push B的project而不用輸入密碼


[git] 如何使用Synology的git package建立自己的 git server ?

如何使用Synology的git package建立自己的 git server ?

使用時機:

不想用GitHub,想建立自己的git server時,開發環境就只有你自己一個人(root)會push code

環境:

A (192.168.0.101) Ubuntu (開發機)
B (192.168.0.100) Synology DS

開始: (on B)

去package center下載Git Server

配置: (on B)

Package方面完全不用配置,啟動Git Server即可
但要console進入DS然後在/volume1下建一個目錄,譬如: /volume1/git_exmaples

建立Project: (on B)

cd /volume1
mkdir project1
cd project1
git init --bare

抓Code: (on A)

git clone ssh://192.168.0.100:/volume1/git_examples/project1


接下來...就能在這個clone下來的project做任何git能做的事情 : )

[Working env] 如何使用 ssh + putty ?

如何使用 ssh + putty ?


使用時機:

在Winodows上想要連到你Ubuntu的開發機來開發程式。

環境:

A (192.168.0.101) Ubuntu
B (192.168.0.102) Windows


開始: (on A)

安裝ssh

sudo apt-get install ssh

啟動sshd

安裝完似乎會自己啟動的樣子

設定ssh可連線來源 

sudo vim /etc/hosts.allow
------------------------------------------
sshd:192.168.0.102:ALLOW

使用: (on B)

去 google搜尋 putty 以及使用方法

[Working env] 如何在Synology DS上開發自己的(c/c++)程式 ?

如何在Synology DS上開發自己的(c/c++)程式 ?

使用時機:

想在Synology DS上開發自己的binary。

環境:

A (192.168.0.101) Ubuntu
B (192.168.0.100) Synology cedarview 5.0

開始:

去 http://www.synology.com/#tool 的  
"Toolkits and GPL source" 依據你的平台(ex. cedarview) 下載開發包

準備:

把開發包 gcc463_glibc213_i686_cedarview-GPL.tgz 解壓縮
可以在 i686-pc-linux-gnu/bin下看到 i686-pc-linux-gnu-g++ 以及 i686-pc-linux-gnu-gcc

第一個Makefile環境:

vim Makefile
---------------------------------------------------------------
TOOL_PATH= [your deitectory]/i686-pc-linux-gnu

CXX=$(TOOL_PATH)/bin/i686-pc-linux-gnu-c++
CC=$(TOOL_PATH)/bin/i686-pc-linux-gnu-gcc

all:
        $(CXX) test.cpp


vim test.cpp
----------------------------------------------------------------
#include <stdio.h>

int main() {
        printf ("hello~~\n");
        return 0;

}

Run:

make;
./a.out

[Working Env] 如何在Ubuntu使用nfs mount ?

如何在Ubuntu使用nfs mount ?

使用時機:

開發機在A而目標機器在B,可以在B上mount A, 加速開發速度

環境:

A (192.168.0.101) Ubuntu
B (192.168.0.100) Synology cedarview 5.0

如何安裝nfs: (on A)

sudo apt-get install nfs-common
sudo apt-get nfs-kernel-server

如何啟動nfs: (on A)

vim /etc/exports
------------------------------------------------
     [directory path on A] 192.168.0.100(ro,sync)

/etc/init.d/nfs-kernel-server restart

如何mount directory: (on B)

mount 192.168.0.101:[directory path on A] [existed path on B]/.

2014年8月23日 星期六

懷孕前三個月要注意的事情

懷孕前三個月要注意的事情


1. 切勿勞累,最好是一直躺著就好,盡量不要走動 (會掉胎的)
2. 盡量吃比較營養的東西
3. 有些食物不能吃,請參考中醫有關懷孕的書
4. 最可怕的是不知道自己懷孕還去拔牙、喝酒、...

如何改變 Extjs 的 listview 的 cursor types

如何將 Extjs 的 listview 的 cursor types 改為 default且移除滑鼠移上去時的hight light效果

先說明什麼是 cursor style好了,

cursor syle是一個CSS的property。當指定 style="cursor:default;" 時就會是一般的滑鼠游標,當指定 style="cursor:pointer;" 時就會是一個小手圖示。
詳情可以參考以下:http://www.w3schools.com/cssref/pr_class_cursor.asp


在說明一下什麼是 listview 好了,listview是Extjs中的 grid panel 前身,也就是它的功能和 grid panel是類似的,並且在extjs 4.0已經被合併到 gird panel裡面了。如果你指定以下這樣的code:http://dev.sencha.com/deploy/ext-3.4.0/examples/view/list-view.html你發現當滑鼠游標移過去的時候,會出現'小手'。這是因為某一個 css 發揮作用,必然是有某一層 css 的 style 設為 "cursor:pointer;"且你會發現滑鼠遊標移過去的地方會自動有'光棒'的效果(或是說highlight的效果)


方法一

How to fix it ?

先說如何移除當滑鼠移過去會出現hight light的效果。
在 listview 有一個欄位為 overClass 就是用來做當滑鼠移上去時 hight light這件事情。
因此我們可以把 overClass設為 空字串 '' 即可以消除high light效果。

另外如果想要移除當滑鼠移過去會出現小手的效果,我目前找到的方法是使用extjs的 XTemplate。

因為 listview有一個 tpl的欄位專門來存 XTemplate的 obj,
我們可以先按 F12 開 javascript的 debug mode,然後觀察 listview就可以看到在
tpl下面有一個 html的 property。

仔細觀察就可以發現就是 listview 目前的 table 狀態。
我們修改這個 property 內容就可以達到我們任何想要的外觀。
這邊有一篇不錯的內容:
http://www.cnblogs.com/lipan/archive/2011/12/12/2274740.html
看完應該就可以知道XTemplate如何使用。

但我們要的其實很單純,就是修改cursor style。
因此我們可以在debug mode把listivew的tpl的html這個property 的內容 copy一分下來,並且修改style部分改為 "style=cursor:default;"就可以達成我們的需求。

進一步延伸 (XTemplate)

看完上面說的這個link之後
http://www.cnblogs.com/lipan/archive/2011/12/12/2274740.html

應該就可以發現使用XTemplate就可以不被extjs的框架限制住,而達到很大的彈性,做我們想做的任何行為。
而缺點就是在javascript內內嵌 html的 code,可能會有maintain性不好的疑慮。

會了XTemplate似乎可以做出很多有趣的元件出來,這部分不是很懂,下回待續吧 : )


方法二

How to fix it ?

覆寫 listview 的 cls property 譬如叫 'my-style-no-cursor'
...
cls: 'my-style-no-cursor'
..

然後定義自己的 .css 如下
.my-style-no-cursor .x-list-body dt {
    cursor: default;
}

詳細解說:

當覆寫了 listview 的 cls ,在 browser的debug mode我們就可以看到 listview 會把這個css加入它的div class 裡面

當我們定義了 .my-style-no-cursor .x-list-body dt 這樣子的 selector 就會將這樣的style正確的套用到每個 dt 上。(browser 先選擇 .my-style-no-cursor然後是 .x-list-body 最後 dt tag)