星期二, 十一月 08, 2011

CPanel developer's note

想不到最近還是有寫程式的機會,XD

目標是:修改httpd.conf , 根據cpanel的user package,來設置cband的quota limit

algorithms:
(1) 由cpanel的api---listaccts
去抓出package ( 看是A, B, C .. )

(2) 對於每一個user
建立資料夾 mkdir -p /usr/local/apache/conf/userdata/std/2/$user

(3) 由每一個user 的package, A ---> a.conf
B ---> b.conf
將對應的 $package.conf 拷貝到
/usr/local/apache/conf/userdata/std/2/$user/$package.conf

(4) 重新generate /usr/local/apache/conf/httpd.conf
下command /usr/local/cpanel/bin/build_apache_conf

重新啟動apache

星期五, 九月 23, 2011

日語教室 --- んです

昨天繁田塾去補課,又跑去問繁田禮二新的問題,「んです」、「のだ」這種東西,我毎次都很難翻譯,而且不會用。

他給我的答案是:
文(常体) + んです。 -> 隱れた情報の説明 (原因/ 状況/ 知識/ 判斷)

並且給了我一個例子: (差一個んです會完全不同的例子。)
(1) ラーメンを食べませんか? ( 你要不要吃拉麵? )// 邀請

(2) ラーメンを食べないんですか?( 你真的不吃拉麵嗎? )

/////

我的心得是,這個「~んです」有點類似「真的~/我跟你講啦~」的語感。

星期五, 六月 17, 2011

三條泳褲

幾年前,我去中正預校當排長。

有一天,我遇到了一個很麻煩的情況:

學校要辦運動會,班上必須派三個學生去游泳,由於時間是10月,其實學生很多人的泳褲放在家。學生很會擺爛,去游泳也沒有好處,幹嘛下水?把泳褲交出來,也沒有獎勵,幹嘛承認自己有帶泳褲收在行李中?

於是,我雖然可以指定三個學生去游泳,卻沒有三條泳褲~~ 唉~~ 又有理由被上面狂幹了~~

後來,我提議:「這樣吧,為了滿足官方的要求,我們用班費買三條泳褲。」「另外,有一個但書,如果有人可以交出泳褲,或是有擔任游泳代表的人,這筆班費他可以不用出。」



10分鐘後,三條泳褲出現了,全班沒有人需要出錢。真是一群需要調教的學生~~~

星期五, 五月 27, 2011

windows XP ---工作管理員

不知道是什麼原因,我在virtualbox上的windows XP,沒有辦法按ctrl + alt + del

還好,原來執行 taskmgr,也是可以把「工作管理員」叫起來。

星期五, 五月 20, 2011

我終於救回ubuntu的聲音了

前天,我為了要在ubuntu 9.10上使用麥克風。(我的音效卡 Codec: VIA ID 4441 )
開始瘋狂地亂灌套件。
apt-get install linux-backports-modules-alsa-karmic-generic-pae
apt-get install linux-sound-base alsa-base alsa-utils
apt-get install gnome-alsamixer
apt-get install gnome-audio
apt-get install esound

儘管microphone就是沒有反應~然而,更糟的事卻發生了…

ubuntu /系統/ 偏好設定/ 聲音 ----------- 只得到了 "正在等候音效系統回應"

////
幹,有套件被我玩爛了。這時候,我陷入了前所未有的困境,因為X11的config檔或是log檔,我從來都沒有看懂過。

剛才我靈機一動,我下了個指令
aptitude search audio
得到了不尋常的結果:
p pulseaudio-dbg
pB pulseaudio-esound-compat
p pulseaudio-esound-compat-dbg
pB pulseaudio-module-bluetooth
p pulseaudio-module-bluetooth-dbg
pB pulseaudio-module-gconf
p pulseaudio-module-gconf-dbg
p pulseaudio-module-lirc
p pulseaudio-module-lirc-dbg
p pulseaudio-module-raop
p pulseaudio-module-raop-dbg
p pulseaudio-module-rygel-media-server
p pulseaudio-module-rygel-media-server-dbg
pB pulseaudio-module-udev
p pulseaudio-module-udev-dbg
pB pulseaudio-module-x11

看到B,就覺得這個字母不對。
當我下了 sudo apt-get install pulseaudio-esound-compat 之後。
ubuntu的聲音總算回來了。

星期日, 五月 01, 2011

在ubuntu上,設置userdir網頁環境

首先,要安裝的是apache。
sudo apt-get install apache2

apache2安裝好之後,預設的http doc root是指向 /var/www ,此處有一個問題,如果直接在這邊放網頁的話,會有要改權限的問題。讓網頁的ower為root也不是一件好事。

所以,在user的home dir下,建立public_html ,然後,啟動apache2的userdir模組。
sudo a2enmod userdir
重新啟動apache2
sudo /etc/init.d/apache2 restart

如此,就可以用 http://127.0.0.1/~userA 去指向 /home/userA/public_html 了

星期三, 四月 27, 2011

mysql cache改善效能

一般而言,改進web site的效能,首先第一個performance瓶頸是web server,這個可以利用reverse proxy來處理。第二個瓶頸,通常落在database上。

由mysql performance的blog得知,用
APC Cache > File Cache > MySQL Query Cache (Unix Socket) > Memcached Cache (TCP/IP) > MySQL Query Cache (TCP/IP)

所以,看來如果要用的話,應該首選就是php APC cache了。

這邊有一個簡單的apc cache的範例:
主要是利用
apc_exists
apc_fetch
apc_store
apc_delete

星期六, 四月 23, 2011

Nginx的筆記

Nginx的directive
http://wiki.nginx.org/DirectiveIndex

Nginx的variable
http://wiki.nginx.org/HttpCoreModule#Variables

Nginx的if
http://wiki.nginx.org/NginxHttpRewriteModule#if

星期五, 四月 15, 2011

Debug PPTPVPN

最近公司的project是在一份linux 24.18的 OS上,使PPTP VPN server可以運作。一連遇到了好幾個關卡:

這分linux source code是被patched過的,所以它的pppd的版本比較舊,支援的option也不太一樣。最大的不同點在於,和mppe相關的config,格式有所修改。變成和pptpvpn官網的不一樣。

Usage:
By default pppd tries to negotiate MPPC and don't negotiate MPPE but will agree if peer wants encryption. If peer supports a few key lengths, according to RFC3078 pppd will choose the strongest one.

mppe suboptions:
required - make MPPE obligatory, disconnect if peer doesn't support MPPE
stateless - try to negotiate stateless mode
no40 - disable 40 bit keys
no56 - disable 56 bit keys
no128 - disable 128 bit keys

Examples:

pppd [options] - try to negotiate MPPC, MPPE is optional
pppd nomppe [options] - try to negotiate MPPC and disable MPPE; peer will disconnect if it requires MPPE
pppd nomppc [options] - disable MPPC; MPPE is optional
pppd mppe required,stateless,no128 [options] - try to negotiate MPPC, require MPPE in stateless mode and disable 128 bit keys; pppd will disconnect if peer doesn't support MPPE

//
在除錯的過程中,也一直不知道windows的pptpvpn 的選項,直到最後,終於看懂了
ConfReq <+H, -M, +S, -L, -D>
=> 這是使用mppe 128bits, stateless, nomppc的意思

之後,掙扎了很久,總算是生出一分可以使用的config檔。

/etc/ppp/options.pptpd
name "pptpd"
lock
mtu 1450
mru 1450
proxyarp
auth
ipcp-accept-local
ipcp-accept-remote
lcp-echo-failure 3
lcp-echo-interval 5
deflate 0
+chap
+mschap-v2
mppe required,stateless

/etc/pptpd.conf
ppp /bin/pppd
option /etc/ppp/options.pptpd
localip 172.16.16.1
remoteip 172.16.17.1-254

/etc/ppp/chap-secrets
"帳號" pptpd "密碼" *

在ubuntu 9.10上灌svn

灌好之後,用svnadmin 來做svnroot 時,
sudo mkdir /var/local/svnroot
sudo svnadmin create /var/local/svnroot

得到error message
svnadmin: SQLite compiled for 3.6.16, but running with 3.6.10

後來,找了半天,終於找到一個超簡單的解法:
sudo svnadmin create --pre-1.6-compatible /var/local/svnroot/

星期六, 三月 26, 2011

管理虛擬主機的小技巧 ( 列出所有的cpanel使用者 )

cat /etc/passwd | tr ":" " " | awk '{print $1":"$5}'| grep -v '/var/cpanel' | grep home | sort

先把/etc/passwd印出來,
把這個檔案內容中的: 換成 " "
然後,對每一列,選第一和第五個變數,
再把 含有/var/cpanel的列去掉,
再把 含有 home的列留下
這樣子,就可以選出,所有cpanel 創建的user

星期四, 三月 24, 2011

快被 linux 的at玩死了

在作公司的產品,其中有一個零件,我要port at到公司的linux 上。

由於整隻linux是學長重新改過的,在生成script的時候,有一個比較特別的地方是,系統的script會在 /tmp/cfg.XXXdfa 之類暫時的資料夾生成。

而我把at port上system 之後,由於我讓at 的指令生成的時間點,正好是script生成的時間點,於是at 就把這個/tmp/cfg.XXXdfa 視為是current directory存下來, 寫到/var/spool/cron/atjobs/下的job define script檔

然後,我的at永遠都不會動,除非我下的時間點是 now。不會動的錯誤訊息是 Execution directory inaccessible

我用console進去 debug時,永遠都會動,因為current directory是 /root


星期二, 三月 22, 2011

php的sendmail

php本來sendmail的函式,無法做authentication
所以要灌library之後,php才可以支援這個功能。

參考

http://www.cyberciti.biz/tips/howto-php-send-email-via-smtp-authentication.html

要灌的library,要下三個指令
pear install Mail
pear install Net_SMTP
pear install Net_Socket

星期日, 一月 09, 2011

繁田塾N3課程筆記1

(0)用言
活用する言葉

(1)副詞
a. 修飾「用言」
b. 活用しない
新しいコンピューターを買いました。 = 買了一台新電腦
新しくコンピューターを買いました。 = 新買一台電腦

(2)複合語
後半段由清音變成濁音,且在後半段降語調

(3) 生徒 ( 習う人 ) -> 高中以下 ( 模仿地學 )
学生 ( 学ぶ人 ) -> 大學以上 ( 帶有批判性地學 )

(4) ザ行的I類動詞不存在。 信じる -> 二類動詞

(5) 省略 ( 主詞 )
山田さんは明日学校を休むと言いました。
明日学校を休む => 主詞應該是山田 ,所以省略。

星期二, 一月 04, 2011

busybox sendmail with gmail

sendmail
-U user_id@gmail.com
-P XXXXX
-w 20
-s 'Email subject'
-f sender@example.com
-H 'openssl s_client -connect smtp.gmail.com:465 -quiet'
receiver@example.com
< ./ttt