2009年2月22日星期日

中华田园老公

冷笑话一则。如题,余下自己想。

Trac 0.12 开发环境(二)设定测试用户权限

昨晚头痛,上一篇没写完,其实对于trac,如果你只是把htpasswd文件传给它,还是不能在web端配置,因为没有admin用户。

这个时候我们需要回到命令行下,用trac-admin来试试:

详细文档请见这里

简单的说,按我习惯的开发用户march,我要将其设定为当前这个trac应用的管理员用户:

trac-admin . permission add march TRAC_ADMIN

现在再启动trac,以march登录,就可以看到页面左上角多了一个"admin"链接。

这样,就可以使用march用户在web界面上继续管理工作啦。

2009年2月21日星期六

Trac 0.12 开发环境(一)授权

上帝说,要有光,所以就有光。
武总问,trac怎么设用户?所以就有了本文。
=======================
这是针对开发人员的,对于实际生产环境,可以选的用户认证方式有很多。公司这边现在用的LDAP,效果不错。
相关链接(更多内容可google):http://trac-hacks.org/wiki/LdapPlugin

正式开场


对于开发人员,通常总是会选用tracd作为开发环境,无它,简单。 tracd支持所谓的standalone模式。基本的运行很简单:

tracd -p %port %path

但是这个时候点击login,只会看到这样的一个页面:

Trac Error

Authentication information not available. Please refer to the installation documentation.

TracGuide — The Trac User and Administration Guide


默认情况下trac需要它的前端服务器为其提供授权,比如apache或nginx,standalone的时候,得要自己准备一个口令文件,文档上给出了用htpasswd工具,或直接使用Python脚本来生成口令文件的方法

有了这个文件,我们就可以用basic-auth的方式使得我们的开发环境支持简单的用户登录:

tracd -p 8080 --basic-auth=trac,.htpasswd,trac .

这里的--basic-auth指定基本授权方式,它的格式是[项目目录],[密码文件路径],[realm]
虽然文档上要求全都写完整目录,但是实践证明相对路径也是可以的,以上命令是我执行成功的。
测试过程中如果看到浏览器提示可能因为拒绝cookie造成服务器循环引用地址而产生错误,很可能说明你的设置成功了,只要把地址指向login以外的位置,应该就可以正常访问啦。

Trac 0.12 安装

注:比起ZOPE系,trac的安装已经算相当的简单啦。

如果是release版的trac,我的建议就简单粗暴,你的系统提供什么软件包(或者你能在trac的主站上下到的包)。就直接拿来用好了。当然,release版的trac安装还是都很靠谱的,就算是源码版, sudo python setup.py install足矣。

developer版稍麻烦些,setup.py install的时候,你会发现它要求的genshi库版本自己找不到。其实,这时候可以先
easy_install -U "Genshi==dev"

,然后再回过头来继续安装吧。
接下来就按部就班的建站点,trac-admin %path% initenv。它会以问答的形式指引用户设定项目名、源码库、数据库(SQLite之外的用户移步这里)。
此时,启动tracd -p %port %path ,已经可以看到站点了。安装至此算是初步成功,祝你顺利:)。

附:其实这就是Django所宣传的MVT结构(Model View Template),trac可以说是比较典型的MTV应用。理解这一点,开发trac的插件或对它进行定制,思路就会清楚多了。

2009年2月6日星期五

今日流水帳

在私记薄里记录想法。
在即时贴里记录todo小tips,这些事项可能不会很正规,未经整理,强调的是快捷。
在公司wiki的todo页跟踪事务序列(Todo/Doing/Done)
养成做事前先明确的习惯。谋定而后动,坐言起行,不拖泥带水。
不要想太多,先做,详细记录,用到出问题,再找解决方法,比猜测需求要可靠的多。
事事留心皆学问。
发现GMail的POP接口每天能接收的邮件是有数量限制的--正常的人类也不会一天收三千封邮件吧。
小时候我爸妈帮我办了残疾人证,可能怕伤害到我的自尊心,没告诉过我,是我无意中看到的。
后来到了快三十才发现有这个可以免费进博物馆什么的,结果现在政府不承认我这样的算残疾了。
党的政策好了,我现在不残疾了!
不该买新鞋哇!
还好没在本子上继续训练分词,pos训练慢到吐血,这会儿我的台式工作机已经卡到不行。

2009年2月5日星期四

昨日流水帐

工作计划应该至少精确到小时,一个优秀的工程师应该可以精确到十分钟,虽然不一定可以百分百的达成。
人真的是有惰性的动物,记录时间帐单,催促自己提高工作效率。
记录自己将要做的事而不是刚刚做的事,推动自己从被动完成向主动做事的转变,养成每次只做一件事,做好一件事的习惯。
要锻练自己及时发现讨论跑题,并且要及时拉回来。
工作讨论,寻找共识比起战胜对方更重要。应该从大专辩论会那种“谁有理”转为沟通、理解、互利的角度。
OO表格在不同机器上有变形,导成PDF比较安全。

其实我要说的是,A正太昨天多了一个仰慕他的男FANS!恭喜A正太!

2009年2月4日星期三

流水帳

寒,写了一天的流水帐,save changes的时候opera居然死了,你丫狠,居然还清了我的剪贴板……
我现在等Acrobat Reader装完,查一下PG里yesterday是啥……
PG的Timestamp还分有时区没时区,还不能隐式转换,差儿坑死我。
trunc_date是个好东西。
extract是个好东西。

2009年2月3日星期二

流水帳

昨天准备把车上写的两篇关于Postgres的文章放到blog上,结果发现找不到了。想来想去,只有可能是因为手贱删了两个私记薄的备份文件。看来它现在学习MoinMoin,把版本记录到了历史文件中。这下我可不敢随便删文件了,还是把它存到一个独立的目录吧。
下午试着DONE了一下,果然不作save changes的话,它不会保存。
PGAdmin III启动,Tips 弹出一个:42是生命、宇宙和万物的终极解答。
结果我很没有面子的在例会时间笑出声了,NND。

我干了一件很白烂的事,写了一个联接查询,把一百多个IP重复ping了两遍(其中大部分是ping不通的),多等N久,明天把時間賬單的報表查出來就知道了……
这种时候应该用表子查询。

2009年2月2日星期一

ubuntu 的 postgreSQL

ubuntu上其实有PostgreSQL的安装包,sudo apt-get install,就可以直接使用,但是刚开始的时候这个包也给我弄出不少麻烦。以至于有很长一段时间我宁可使用源码自己编译。总结一下,比较容易给新手造成麻烦的地方有这样几个:

ubuntu上PostgreSQL的超级用户是postgres,与官方文档一致。而bsd上是psql。

ubuntu上的pg命令行工具名为psql,bsd上是pgsql。

pg_ctl找不到?但是ubuntu上有一个pg_ctlcluster,它可以帮你完成pg_ctl的工作,只是需要一点题外的东西:
ubuntu 将PostgreSQL的服务器按集群管理(我是不太想在一台硬件主机上架一个“集群”那么多个PostgreSQL实例,那跑起来能快吗?做开发和学习测试还差不多)。因此执行pg_lsclusters,你会看到一个集群列表。默认是只有一个。用pg_cltcluster管理服务器的时候,你要比pg_ctl多指定一个版本号,一个集群名,就是从这里来的,不知道该指定谁的时候,可以查看pg_lsclusters。

在apt安装以后,pg实例就自动运行起来了,如果想要手工控制,同样使用pg_ctlcluster。如果想参考一下apt的pg启动配置,推荐看一下/etc/init.d/postgresql-8.3(或者你自己安装的那个版本)脚本。

默认的数据区不在postgres文档所推荐的/usr/local/pgsql/data,而在/var/lib/postgresql/8.3/main/。而配置文件在/etc/postgresql/8.3/main,到时候不要找不到pg_hba.conf哦:)。

contrib目录在/usr/share/postgresql/8.3/contrib/,安装插件什么的一定会用到。

安装bamboo的时候,我有很久找不到pg_conf跑哪里去了,这也是我早先使用pg源码的一个非常非常重要的原因。其实这个命令在postgresql-server-dev-8.3里。万恶吧!我google了好久才找到……

书店偶历

春节生活回顾。

和太太出門逛街,本來是要去安泰找相機維修店的,結果相機沒修成,半路倆人又溜進了圖書城。存了包,兩個人各投所好,她去裝潢家居,我去IT區。
實體書店的IT柜,我沒見過一個不囧的。CCNA與HTML比鄰,LINUX管理與Windows入門相伴。總算安泰強過閩臺,竟然C專柜沒有見到C#的教程,而且知道VC專列一柜,大大的讓人刮目相看。VC和VC#混在一起,我想就不必強求了。
大概太久不逛實體書店,來到C++柜,居然不見當年那些《STL源碼剖析》等老面孔。雖然確實過了好幾年,但是現在還是覺得好書永不過時。想到現在的年輕人讀不到這些好書,還是為他們有點小遺憾。
又 見到《C++大學教程》,這本書當年買來一直沒有讀進去,最后送給了同事。想想也許邱仲潘老師的譯本確實有些毛病,但是自己心浮氣躁應該還是主要問題。這 次見到已經是第五版了,希望以后買到這本英文版的朋友不會像我當年一樣半途而廢,C++是一門需要花時間學習的語言,如果做不到勤奮二字,再好的教程也沒 有用。
赫然看到一本比《C++大學教程》更厚的《C大學教程》,仔細揉了揉眼睛,發現英文標題真的是跟《C++大學教程》對應來的,真的不是BT 吖。心說《C Programming Language》不過二百多頁。這本大學教程能翻出什么花樣寫出千把頁的內容?了了翻過不禁莞爾,原來這作者把C/C++/Java來個一勺燴,還夾雜 進去一堆GUI編程之類的東西,難怪能如此肥大。想來如果是某些逢中文書必貶,豆瓣收藏都是英文影印書的IT裝13青年,倒是大大的和此書的意境。確實大 家評選垃圾書的時候,多關注的是國內的剪刀黨,或者機器翻譯風格的家伙,原文書普遍來說,還是比較有保障。但是前有21天精通XXXX系列,后又出了這個 《C大學教程》,充分說明了遠道的和尚一樣不少瞎念經的,以后垃圾IT書排版也應該分出不同的類別,比如原創垃圾書、翻譯變寶為廢、洋垃圾等等才是。
本 來也沒什么目的性,就是瞎轉一番,看到一對中年夫妻擠在VC柜討論了半天,聽不清說什么,走進去看看沒有自己喜歡的書,連VC++編程內幕這種當年的基準 資料書都沒有。不知道是我老了還是這家書店太out了。看到一本關于多核程序設計的書,頁數不多,但是內容很實在,簡單質樸,翻了翻,類似性能評估,并行 算法之類的介紹很有一些,而不是簡單的講講API。對比下自己買的那本,頓時覺得虧到了。小小遺憾下,還是恭敬的放回去,希望能遇到識貨的買家。
偶 然間看到了《編程珠璣》,這本書發售當時是大大的火了一番,但是我這人天生別扭,買書偏不喜歡與流行時,眾人說好的往往避之不及。今天看到,想起當年曾有 個家伙說我發表在《程序員》上的某算法講解是抄襲自此書,心血來潮,便拿起來翻翻。沒想到內容居然是大大的喜歡,知識講的簡單清楚,橋段也八的津津有味。 讀到美國人構想從衛星上發射電纜到地面以建立高可靠的通信網絡,甚是心馳神往,六七十年代的美國佬上九天登月,下五洋捉鱉,端的是激情澎湃。越讀越覺得與 此書甚是有緣,便不管安泰不打折,拿了前后兩冊結帳去也。