2012-01-12

node.js library for MongoDB

node.js library系列第三彈──萌鴿

npm search mongo下去會啪啦啪啦地出現套件海,但真的實際去看package.json的內容後會發現大概有八成都是base on mongodb,包括最熱門的mongoose(這似乎也暗示了mogodb的介面不太好用xd),把這些都刪刪減減後我的名單就只剩下了mongodb蒙古人mongolian,其實還有一套mongous,不過在反覆測試並看過他的source以後我實在百思不得其解這套要怎麼連127.0.0.1以外的server,唯有作罷。(有興趣的可以看這裡的con function)

前言完了老樣子直接上圖吧
mongodb


mongolian


其實我本來測試時只有記錄第二行的find(),當次數多了以後明顯mongolian的效率比mongodb好上很多,但次數少的時候卻經常落後,後來決定連connection time都一起下去比較,結論mogodb在連線後取得collection的時間完全大輸,即使比數少時find比較快也無法掩蓋這個問題,就我個人而言應該是會選擇mongolian吧。

testing code→這裡

2012-01-01

使用 brew 安裝 htop

新年第一篇
來個簡單的分享

此篇文章從這裡延伸出來

在安裝前,可先使用 search 來確認套件
# brew search htop

確認 ok 的話直接安裝即可
# brew install htop

安裝完畢後即可直接使用 htop
# htop

本來到這邊就算結束的
但其實重點是從這邊開始…

htop 執行起來,乍看之下沒什麼問題
但是心細的你發現了嗎?


沒錯!
CPU 與 MEM 整排都是 0%
上面明明就有 loading,但是就是給你都掛蛋

原先想說
會不會是排序的問題
但是在 sort 過後,情況依舊…

再來一想
會不會是權限不足,無法調出 CPU 與記憶體的使用情況
但是…在切換到 root 後,還是沒變…

後來突然想到看一下套件的資訊好了


這才發現,還真的是權限的問題
照著上面的指令下完之後
就不用每次 htop 都要先切到 root 了

這時候,或許會有疑問
我先前不是就有試過用 root 執行了嗎
這部份我在之前還反覆切換過幾次做測試
一直是 0%
但是現在重灌幾次測試,一直都沒有這種問題了
這…這暫且就當做是我眼睛不好了…


補充說明一下:
這種問題對很多人來說,或許不是問題
但對於使用過很少的 Linux distributions 的人來說
因為在安裝的時候,root 權限就設定進去了(Ubuntu、 Mac)
所以壓根就不知道原來這東西是要用 root 執行的
也就產生出這個問題了…

2011-12-27

Zend Framework Support in NetBeans IDE for PHP

最近從 Zend Studio 8.x 轉到 Nebeans 7.1 有些針對 Zend Framework 的設定方式在這分享一下
已下是依照 Zend Server CE 5.5 下去設定,其他的其實也是改一改位置而已

步驟一:
Command + ,

步驟二:
加入 /usr/local/zend/share/ZendFramework/bin/zf.sh
步驟三:
cd /usr/local/zend/apache2/htdocs
git clone project
git clone gitosis@exampke.com:project.git















點選 Next

步驟四:
寫入 project.name & 選擇剛剛 clone forder













Netbeans 會跟你警告!你的專案不是空的




按下 Next 不用管他
步驟五:
設定 debug server url
在按 Next..

步驟六:@impormant
勾選 Zend Framework






然後按下 Finish..

步驟七:@impormant
因為 zf.sh 是 create new project 在使用
所以有些預設的檔案會被附蓋,檔案會變成 modify















千萬別 push...(會爆炸

步驟八:@impormant
還原所有被覆蓋的檔案
#git checkout application public













步驟九:@impormant
Ignore Netbeans IDE create file & zend unit test file
在專案資料夾建立 .gitignore
寫入
.gitignore
.zfproject.xml
nbproject
docs
tests






在把顯示 branch 打開



















完工畫面




















如果有上 PHP Unit test 就有更多功能可以使用了
下次在補充..很懶用這麼爛的工具排版了~見諒

node.js library for MySQL

因為太久沒維護、根本就是depend on另一套mysql library、使用不直覺等等種種原因,最後被我篩選留下的library只有兩套mysqldb-mysql,其中mysql算是目前最popular使用的一套,db-mysql則是比較新的東西,看起來像是打算長期開發的project,文件也寫得不錯。

其實兩套的語法都很接近目前在php上的使用方式,寫起來都還蠻直覺的,而他們最主要的差異就是在implement使用的語言不同,mysql是純js,db-mysql是c,需要有libmysqlclient-dev package底下的mysql_config才能編出他的.node plugin (note: 直接複製到其他機器執行時需要安裝libmysqlclient16)

以下是執行效率差異
mysql










db-mysql










testing code→這裡

node.js library for memcache

這禮拜對目前project比較常用的資料存取資源找了幾套現在比較popular而且近期還在維護中的library作了一些測試,以下是memcache部分的測試報告。

其實npm上搜尋只有三套,其中兩套memcached跟nMemcached還是同一個作者寫的兩個版本,其中memcached已經不再maintain了,而最後一套memcache也近兩個月沒有maintain,後來在git上找到了另一套對他的fork,以下以這三套做比較
git repository
nMemcached
memcache
memcache(fork)

問題
nMemcached:
其實不少issue還沒fix,最明顯每次執行都會出現的是這個
memcache:
沒人report這個issue,不過以作者的活動程度大概report了也不會修吧... 在新版的node.js lib sys被更名成util,每次執行都會出現The "sys" module is now called "util". It should have a similar interface.,不過這其實只要手動改一行就會動了。
memcache(fork):
可以正常執行不會亂噴error,除了不能直接從npm安裝更新以外應該沒有什麼大問題。

接下來是執行時間比較:
nMemcached:















memcache:















memcache(fork):













目前看來memcache(fork)似乎會是比較好的選擇,不過更新他可能會有點麻煩就是了。

testing code→這裡

2011-12-24

compile libvirt php

這是用 KVM 那麼久以來的第一篇 KVM 文章

不過這次要分享的是把 libvirt php 編譯起來,並透過 libvirt 去 管理 HOST Server
這篇的範例是使用 CentOS 6.2 去 work (建議使用 64bit 版本)

首先安裝下載
CentOS 64 mini (x86-64) (安裝可以請壯兔解說..
完成 install 完成後 mini 預設網卡 boot 不會 on 安裝完 network 是 off
所以你必須要編輯 /etc/sysconfig/network-scripts/ifcfg-eth0
修改並增加一行設定


BOOTPROTO=dhcp (增加) 需依照您的 network setting
ONBOOT=yes (開機就啟動)








安裝編譯所需要的套件 # yum install wget make gcc make gcc libvirt-devel libxml2-devel php-devel man vim
然後就到 libvirt 官方下載 libvirt for php

# wget http://libvirt.org/sources/php/libvirt-php-0.4.5.tar.gz

解壓縮
# tar zxvf libvirt-php-0.4.5.tar.gz
切換到解壓縮的資料夾
# cd libvirt-php-0.4.5
接下來就是快樂的 gcc time



以下是 ./configure






































# make && make install















列出 php model 資訊
# php -m



























PHP Code :

<?php
$uri
='qemu+ssh://kvm03.2be.com.tw/system';
 echo (
"Connecting to libvirt (URI:$uri)\n");
 
$conn=libvirt_connect($uri);
 if (
$conn==false)
 {
     echo (
"Libvirt last error: ".libvirt_get_last_error()."\n");
     exit;
 } else {
     
$hostname libvirt_connect_get_hostname($conn);
     echo(
"hostname:$hostname\n");

     
$domains libvirt_list_domains($conn);
     foreach(
$domains as $guest){
        echo(
$guest)."\n";
     }
 }



執行結果:










參考的 API 網址:
http://libvirt.org/php/api-reference.html#libvirt_domain_get_uuid_string

不過測試完發現  libvirt_list_active_domains 有錯誤.. (32bit only)


這樣來監控或寫成網頁管理介面就很方便了
寫完這篇發現!bloggger編輯器排版真糟糕..

Tags

Linux (92) Security (33) Live (23) PHP (20) MySQL (15) Google (14) Apache (11) nginx (8) Shit™ Happens (7) Flash (5) Flex (5) SEO (5) Git (4) Hacks (4) Mac (4) 懶人包 (4) Java (3) Tomcat (3) Benchmark (2) CSS (2) How-To (2) NetBeans (2) Windows (2) Zend Framework (2) 18+ (1) AIR (1) Browser (1) Clouds (1) English (1) FMS (1) Facebook (1) KVM (1) MIND HACKS (1) MongoDB (1) NFS (1) NoSQL (1) NodeJS (1) PuTTY (1) Revolution 2.0 (1) SpongeBob (1) Svn (1) jQuery (1) 讀書心得 (1)