<?xml version="1.0" encoding="UTF-8"?><!-- generator="WordPress/2.6.1" -->
<rss version="0.92">
<channel>
	<title>C1G军火库</title>
	<link>http://blog.c1gstudio.com</link>
	<description>给自已看的流水账</description>
	<lastBuildDate>Mon, 24 Nov 2008 08:39:59 +0000</lastBuildDate>
	<docs>http://backend.userland.com/rss092</docs>
	<language>en</language>
	
	<item>
		<title>UCenter Home 1.5 Nginx rewrite</title>
		<description>UCenter Home 1.5 Nginx rewrite
http://www.discuz.net/forum-149-1.html

 

 rewrite ^/(space&#124;network)-(.+)\.html$ /$1.php?rewrite=$2 last;
  rewrite ^/(space&#124;network)\.html$ /$1.php last;
  rewrite ^/([0-9]+)$ /space.php?uid=$1 last; </description>
		<link>http://blog.c1gstudio.com/archives/369</link>
			</item>
	<item>
		<title>根据mysql id产生分级目录并导出</title>
		<description>项目中的静态页根据信息表的id来自动分级目录，结构为每3位为一级。
如id=347234 就会先补全至9位-&#62;000347234再分级成/000/347/show_234.html。

程序中是用php来做的，目前需要导出一批地址数据，懒的写程序就直接用sql了。
SELECT id,CompanyName,CONCAT('http://www.c1gstudio.com/',left(lpad(id,9,0),3),'/',SUBSTR(lpad(id,9,0),4,3),'/show_',right(lpad(id,9,0),3),'.html') as url
FROM `t_reprint`
WHERE FromSite='C1G军火库' and `OperatorID`='1'

在phpmyadmin 3.0.0中导出界面可能对中文支持不好，导致语句中断，不能导出
在远程创建用户，在本地phpmyadmin 2.8.2.4用远程用户导出，报substr函数未找到...(但在本地测试是可以的)

使用命令行导出
./mysql -hlocalhost -uroot -p
输入密码
use db;
SELECT id,CompanyName,CONCAT('http://www.c1gstudio.com/',left(lpad(id,9,0),3),'/',SUBSTR(lpad(id,9,0),4,3),'/show_',right(lpad(id,9,0),3),'.html') as url
INTO OUTFILE './output.txt'
FROM `t_reprint`
WHERE FromSite='C1G军火库' and `OperatorID`='1' ;
 然后在mysql/var/下就可以找到output.txt </description>
		<link>http://blog.c1gstudio.com/archives/367</link>
			</item>
	<item>
		<title>用jailkit创建一个chroot环境的sftp</title>
		<description>jailkit 官网
http://olivier.sessink.nl/jailkit/

环境as4
#wget http://olivier.sessink.nl/jailkit/jailkit-2.5.tar.gz
#tar zxvf jailkit-2.5.tar.gz
#cd jailkit-2.5
#./configure
#make
#make install

创建jail环境目录
#mkdir /home/jail
创建初始权限
#jk_init -v -j /home/jail basicshell editors extendedshell netutils ssh sftp scp
上面的斜体字都是可用的服务，可以在/etc/jailkit/jk_init.ini 中找到相应的部分
创建需限制的用户
#groupadd backup
#useradd -g backup -m john
#passwd john
限制该用户
#jk_jailuser -m -j /home/jail john

如果遇到错误
ldconfig: Can't open configuration file /etc/ld.so.conf: No such file or directory
编辑/etc/jailkit/jk_init.ini
vi /etc/jailkit/jk_init.ini
#增加ldconfig
[ldconfig]
executables = /sbin/ldconfig
regularfiles = /etc/ld.so.conf

[uidbasics]
# this section probably needs adjustment on 64bit ...</description>
		<link>http://blog.c1gstudio.com/archives/356</link>
			</item>
	<item>
		<title>用scponly创建一个chroot环境的sftp</title>
		<description>使用scponly可以使用户只能运行scp / sftp等命令,与rsync、subversion、gftp兼容,对winscp这个open source for Windows的client端支持很好.

scponly官网
http://sublimation.org/scponly/

服务器为as4
#wget http://nchc.dl.sourceforge.net/sourceforge/scponly/scponly-4.8.tgz
#tar zxvf scponly-4.8.tgz
#cd scponly-4.8
#./configure --prefix=/usr/local/scponly --enable-chrooted-binary --enable-winscp-compat --enable-sftp-logging-compat --enable-scp-compat --enable-rsync-compat --enable-passwd-compat
#make
#make install
#echo /usr/local/scponly/sbin/scponlyc &#62;&#62; /etc/shells
#make jail

/usr/bin/install -c -d /usr/local/scponly/bin
/usr/bin/install -c -d /usr/local/scponly/man/man8
/usr/bin/install -c -d /usr/local/scponly/etc/scponly
/usr/bin/install -c -o 0 -g 0 scponly /usr/local/scponly/bin/scponly
/usr/bin/install -c -o 0 -g 0 -m 0644 scponly.8 /usr/local/scponly/man/man8/scponly.8
/usr/bin/install -c -o 0 ...</description>
		<link>http://blog.c1gstudio.com/archives/352</link>
			</item>
	<item>
		<title>用squid缓存jsp加速lucene搜索</title>
		<description>前面尝试了使用nginx负载均衡lucene，效果还不错，但更新维护比较麻烦。
搜索来源中大部分是由连接方式过来，所以大部分的页面内容相同，可以使用缓存的方式重复使用。

方案一：用nginx的proxy stone
方案二：用nginx的ncache
方案三：用Varnish
方案四：用squid

方案一和方案二：
方案一和二是副本概念不会自动更新缓存，需写脚本来控制
都要使用nginx 的rewrite将html转成jsp
修改jsp中分页等连接地址为html
方案二需修改jsp在header中增加max-age
尝试结果：
jsp的参数超过了10个，但nginx只支持10个，所以不能缓存所有页面，但可以尝试缓存最常用的关键词第一页。
linux上好像没法将文件缓存起来并且没log,以下是windows上error.log
------------------------------------------------------
2008/11/04 16:39:16 [crit] 2828#0: *3 rename() "/proxy_temp/0000000004" to "html/locals.c1gstudio.com/search/" failed (21: Is a directory) while reading upstream, client: 127.0.0.1, server: locals.c1gstudio.com, request: "GET /search/ HTTP/1.1", upstream: "http://192.168.1.50:8080/search/", host: "locals.c1gstudio.com"
2008/11/04 16:39:19 [crit] 2828#0: *1 rename() "/proxy_temp/0000000013" to "html/locals.c1gstudio.com/search/result.jsp?keyword=+%E7%BC%96%E8%BE%91&#38;city=0&#38;type=0&#38;do=1" failed (2: No such file or directory) while reading upstream, client: ...</description>
		<link>http://blog.c1gstudio.com/archives/348</link>
			</item>
	<item>
		<title>[转]iostat 介绍</title>
		<description>2. iostat 结果解析

# iostat -x
Linux 2.4.21-9.30AX (localhost) 2004年07月14日

avg-cpu: ％user ％nice ％sys ％idle
3.85 0.00 0.95 95.20

Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm ％util
/dev/hda 1.70 1.70 0.82 0.82 19.88 20.22 9.94 10.11 24.50 11.83 57.81 610.76 99.96
/dev/hda1 0.00 0.00 0.00 0.00 0.01 0.00 0.00 0.00 12.92 ...</description>
		<link>http://blog.c1gstudio.com/archives/345</link>
			</item>
	<item>
		<title>Nginx for Windows</title>
		<description>kevin写的nginx for windows 支持(Windows Vista, Windows XP, Windows 2000)
他的主页：http://www.kevinworthington.com/nginx/win32/
目前有三个主流版本下载：



Branch
Download Package
Release Date


Development
0.7.19
13 October 2008


Stable
0.6.32
07 July 2008


Legacy
0.5.37
07 July 2008


tips:请不要用在生产环境,仅供开发测试。

一。下载
我这里下载0.6.32版http://www.kevinworthington.com/nginx/win32/nginx-0.6.32-win32-setup.exe
下载后安装到c:\nginx。

到PHP 官方下载php
我这里下载PHP 5.2.6 zip package
下载后以解压到c:\php。

二。配置nginx
下面这张截图内容为廖老师 nginx 配置单：



上图中用红线椭圆圈起来的，是nginx php 配置的关键部分，没配置正确会出现404错误，让我郁闷很久。
如果你的程式放在有空格的文件夹下如program files下，可以用以下方法。
     include fcgi.conf;    
     set $rootpath "D:\Program Files\wamp\www";
     fastcgi_param SCRIPT_FILENAME $rootpath$fastcgi_script_name;

三。启动nginx
执行c:\nginx\Start-nginx.bat启动
启动php的cgi server

关于php cgi server 可以使用以下命令：

      php-cgi.exe -b 127.0.0.1:9000 -q

这样做，缺陷是命令行窗口一直打开，若关闭那cgi server 也关闭啦。到网上下载RunHiddenConsole.exe 可以使命令行窗口隐藏啦。
       RunHiddenConsole.exe php-cgi.exe -b 127.0.0.1:9000 -q

你也可以写一个批处理来做这件事：

start_phpcgi.bat
 @ECHO OFF
ECHO Starting ...</description>
		<link>http://blog.c1gstudio.com/archives/342</link>
			</item>
	<item>
		<title>[转载]程式設計師的格言</title>
		<description>via Tsung’s Blog

从 Tsung’s Blog 上看到这篇东西，发现里面的一些格言实在太经典、太贴切了！我觉得这个应该是和技术相关的，贴在这里，估计有共鸣的人应该很多。:)

先摘录几个经典的（做了小幅修改，替换了一些繁体术语）：

要殺一個程式設計師不需要刀，改三次需求就好

程式是運氣與直覺堆砌而成的奇蹟。
若不具備這兩者，不可能以這樣的工期實現這樣的需求。
修改需求是對奇蹟吐槽的亵渎行為。
而追加修改則是相信奇蹟還會重現的無謀行動。

追加需求確定後交貨期限就無法確定，
交貨期限確定後追加需求就無法確定。
這稱為「追加需求與交貨期限的測不準原理」。

原文出处：程式設計師的格言 « but, or bug
——————————————————————————

程式設計師的格言（盜作不少）

譯自

* プログラマーの格言（盗作多し）
* http://mixi.jp/view_community.pl?id=1772737

(版本2 2008/10/12更新)

譯註

* SE是日本軟體公司裡程式設計師的頭子。自己不太寫程式，主要工作是跟客戶確認規格。
* 程式設計師多半自己不面對客戶。
* 跟PM又不一樣。（有什麼比較貼切的職稱翻譯嗎？）

1. 每天有24小時。
所謂的「今天之內」，是指到明天早上為止。
2. 程式不會照自己所想的跑。只會照所寫的跑。
3. 需求規格在程式寫完後才會敲定。
基本規格要客戶看到成品後才會決定。
詳細規格要使用者用過後才會確定。
4. 我對軟體設計的方式導出的結論，有兩種方式。
一是把軟體設計得單純到很明顯不會有缺陷，
不然就是把軟體設計得複雜到沒有明顯的缺陷。
- C.A.R.Hoare
5. 程式碼不要在開發現場寫！ 去客戶那寫！
除錯不要在期限前做！ 上線後再做！
6. 畫面是藍色的！
(國際太空站太空人重新安裝 Windows NT，日誌中的名句)
7. 先說「沒辦法」的人贏。
8. 有意見的話你寫
9. 要殺一個程式設計師不需要刀，改三次規格就好
10. 首先要先懷疑別人，被懷疑的人或許會把問題解決掉。
（註：通常會「先懷疑自己」）
11. 開發沒有終點。只有釋出(release)。
12. 無論規格多晚才能確定，結案期限永遠不會變。
這是所謂的「期限守恆定理」。
13. 客戶總是覺得水跟追加需求是不用錢的。
14. 付錢愈計較的客人愈囉唆。
15. 在排定開發行程時，總是視而不見一些連小學生都會的算數。
業務部門總是一堆不知道1+1=2的人。
16. 一個人掛了大家都掛了。
17. bug過了一晚可能就變成規格了。
18. 好的規格找一個天才不如找三個凡人。
爛的規格找一百個凡人不如找一個天才。
19. 客製軟體中30%的價格用在確認規格上。
30%用在修改規格上。
30%用在找bug。
結果初期規格反映在價格上占的比例只有10%。
20. 對客戶來說SE是部下，程式設計師是家畜。
對SE來說客人是錢，對程式設計師來說顧客是看不見的病毒。
除了弄完程式以外，沒有其他驅除的辦法。
21. 顧客想受SE喜歡，要自己了解到系統開發需要時間與金錢，早點確定規格。
SE想受顧客喜歡，則要讓程式設計師討厭自己。
22. 很多SE跟程式設計師都暗自想著有錢有閒的話什麼系統都想自己動手做，
不過都沒這種機會。
23. 品質的劣化程度依規格改變的次數與規模而定。
24. 業務是認為空想能夠實現的夢想家。
SE則是深信任何障礙都能突破的冒險家。
程式設計師則是被夢想家和冒險家拋到漆黑海裡的漂流者。
25. 有才能的程式設計師第一次看到設計細節時，要先理解程式的目的。
接下來要設法讓SE了解到以指定的方法、工時並無法完成這個工作。
26. 程式是運氣與直覺堆砌而成的奇蹟。
若不具備這兩者，不可能以這樣的工時實現這樣的規格。
修改規格是對奇蹟吐槽的褻瀆行為。
而追加修改則是相信奇蹟還會重現的無謀行動。
27. 程式設計師聽了「把自己當作顧客去著想！」而開始思考。
啊，像夢一樣。
28. 對於因為興趣而寫程式的人來說，所謂的技術是程式語言能力。
對於因為工作而寫程式的人來說，所謂的技術是邏輯思考能力與人際溝通能力。
程式語言可以看著手冊溝通，客戶不行。
29. 程式系統在交貨之前會不斷縮小。
先用元件定義取悅老闆。
再拿經費概算要部長妥協現實的方案。
在運用會議中，課長會嘗識減少自己責任範圍。
在細節會議中，負責人會把範圍縮到自己記得的部分。
30. ...</description>
		<link>http://blog.c1gstudio.com/archives/340</link>
			</item>
	<item>
		<title>使用vnstat监控流量</title>
		<description>vnstat通/proc来监控流量，无需root权限，提供每日、每月等报表，并有php前台扩展。
http://humdi.net/vnstat/

wget http://humdi.net/vnstat/vnstat-1.6.tar.gz
tar zxvf vnstat-1.6.tar.gz
cd vnstat-1.6
make &#38;&#38; make install ; vnstat --testkernel &#38;&#38; vnstat -u -i eth0

如果用户在一个64位平台上编译，应改用make 64bit命令.

添加crontab
crontab -e
0-55/5 * * * * if [ -x /usr/bin/vnstat ] &#38;&#38; [ `ls/var/lib/vnstat/ &#124; wc -l` -ge 1 ]; then /usr/bin/vnstat -u; fi




 vnStat 1.6 by Teemu Toivola

	 -q,  --query		 query database
	 ...</description>
		<link>http://blog.c1gstudio.com/archives/335</link>
			</item>
	<item>
		<title>使用iftop实时监控网卡流量</title>
		<description>iftop是类似于top的实时流量监控工具，无报表功能，需使用root运行。
官方网站：http://www.ex-parrot.com/~pdw/iftop/
目前最新版本为: iftop-0.17pre3.tar.gz
安装需要:
libpcap
http://www.tcpdump.org/
安装libpcap时出错
gcc -O2 -I.  -DHAVE_CONFIG_H  -D_U_="__attribute__((unused))" -c ./fad-getad.c
In file included from ./fad-getad.c:64:
/usr/include/linux/if_packet.h:52: 错误：expected specifier-qualifier-list before ‘__u32’
make: *** [fad-getad.o] 错误 1
将
#include &#60;linux/types.h&#62;
加入到
/usr/include/linux/if_packet.h
再make,make install，通过!
libcurses
界面:
 

界面说明：
第一行为带宽，这里为1Mbit,不是字节哦.
连接列表，最后三个分别是2秒，10秒和40秒的平均流量
=&#62;代表发送，&#60;= 代表接收
最后三行表示发送，接收和全部的流量，第二列为你运行iftop到目前流量，第三列为高峰值，第四列为平均值。

命令：
iftop: display bandwidth usage on an interface by host
 
Synopsis: iftop -h &#124; [-npbBP] [-i interface] [-f filter code] [-N net/mask]
 
   -h                  display this message
   -n                  don't do hostname ...</description>
		<link>http://blog.c1gstudio.com/archives/332</link>
			</item>
</channel>
</rss>

<!-- Dynamic Page Served (once) in 1.199 seconds -->
