2007-08-02

“GPS技术在气象学中的应用”

昨天被大雨所困,想起了F1赛事精准的天气预报和GPS。今天上网查了一下,GPS早就被气象部门用来采集数据了,GPS技术在气象学中的应用还真少。不过,这些家伙搞的都是观测系统,什么时候有公司能根据个人GPS提供的方位为我们实时传送气象预报呢?我记得有些手机是有GPS配件的,等过两年GPS变成了手机的标配,再在手机上加几个温度湿度气压之类的传感器,手机就变成全能的气象终端啦,既可以给观测系统提供实时的数据,又可以接收精度很高的个人化天气预报。看起来国外已经有人在做这事了,有气象专家的研究,也有商业公司的系统;国内不知道是不是因为卫星系统国有,没有人冒风险去研究这种偏门的项目,好像没有这方面的消息。人家已经快要开始搞产品商业化时,我们这边的新闻还是某地又建了几个“高科技”的GPS气象采集基站,各部门领导很有面子云云。难道是我们又输在起跑线上了?

2007-08-01

果真是天有不测风云

早晨看到阳光灿烂,赶紧把昨天洗完晾在房间里的衣服挂到外面的晾衣绳上。晚上下班了,忽然听到外面淅沥哗啦,又开始下雨啦!怎么昨天的暴雨还没下够?今年北京的雨水可是下足了。上网看看北京今天的天气预报,也是说晴转多云,就没提到会下雨这回事。话说天有不测风云,果然不错。前几天看F1德国站的比赛,那两场雨预报的,准确的让人瞠目结舌。不过特定地点、特定时间的预报会比大范围的预报容易做一些吧,什么时候通过GPS就能实时接收这么准确的气象预报就好啦,呵呵。顶着早晨的大太阳,我可没想到晚上会被大雨困在办公室:可怜,完全没想到要带雨伞 :(

多等一会,雨停了后回家再把衣服洗一遍吧....

2007-07-29

收拾心情,继续似水流年中的流水帐

我写blog是因为时常有跟别人分享点什么东西的冲动,写出来也许能跟人产生共鸣;或是指望帮人解决碰到的同样问题,自己心里也能有些窃喜。不过自打GFW愈演愈烈,访问国外blog的人全都会撞上一堵墙,偏巧我又只信任国外的blog服务...本来就拙于写字,如此有中国特色的blog体验更是让人心里烦躁,blog也就慢慢荒废了。

不过今年的见闻让我又有所领悟,当撞墙已经成为常态,练就翻墙绝顶轻功的人岂不是会越来越多?也许有一天世界又会大同,blog在墙里还是墙外还有什么分别。干脆抛开这些烦人的事情,哪怕铜墙铁壁终于铸成,起码墙外的人还能知道墙里的人曾经有这样的生活。

2007-07-28

在Ubuntu上安装用Windows目录服务做认证的Subversion服务

最近需要架设一台svn服务器,在Ubuntu Feisty(7.04)上安装了一下,非常容易。网上有很多相关资料,不过我需要让用户使用Windows的目录服务(Active Directory)来认证身份,参照了这篇LDAP Authentication for Subversion on Ubuntu Feisty文章,在这里做个文档备份:
# sudo apt-get install libapache2-svn subversion subversion-tools
# cd /etc/apache2/mods-enabled
# sudo ln -s /etc/apache2/mods-available/dav_svn.load
# sudo ln -s /etc/apache2/mods-available/ldap.load
# sudo ln -s /etc/apache2/mods-available/authnz_ldap.load
# sudo /etc/init.d/apache2 restart# cd /etc/apache2/mods-enabled
# sudo touch dav_svn.conf
# sudo vi dav_svn.conf
其中加粗的两个命令是启用ldap相关的apache模块,这是参考的文章中没有提到的,否则会出现:“Unknown Authn provider: ldap”的错误提示。

dav_svn.conf文件,指明svn仓库在那里,如何认证用户身份:

<Location /svn/>
DAV svn
SVNParentPath /home/svn
AuthType Basic
AuthName "Subversion Repository"
AuthBasicProvider ldap
AuthLDAPBindDN "cn=readuser,ou=dep,dc=mydomain,dc=com"
AuthLDAPBindPassword "password"
AuthLDAPURL "ldap://adserver:3268/ou=dep,dc=mydomain,dc=com?sAMAccountName?sub?(objectClass=user)"
AuthzLDAPAuthoritative Off
Require valid-user
SVNListParentPath on
AuthzSVNAccessFile /home/svn/authz.conf
</Location>
authz.conf文件,定义用户的组和访问不同项目仓库的权限:
[groups]
svnadmin = xieyanbo
erpadmin = user1

[/]
* =
@svnadmin = rw

[sandbox:/]
* = rw

[repos1:/]
@erpadmin = rw
为了创建项目方便,写了一个脚本add_project.sh做一些琐碎的事情,比如目录权限、配置文件的修改等:
#!/bin/bash

project_name="$1"

if [ x"$project_name" = "x" ]; then
echo "$0 PROJECT_NAME"
exit 1
fi

sudo mkdir /home/svn/"$project_name"
sudo svnadmin create /home/svn/"$project_name"
sudo chown -R www-data:www-data /home/svn/"$project_name"
sudo chmod -R go-rwxs /home/svn/"$project_name"
sudo sh -c "echo 'auth-access = write' >> /home/svn/$project_name/conf/svnserve.conf"
sudo sh -c "echo '['$project_name':/]' >> /home/svn/authz.conf"
sudo sh -c "echo >> /home/svn/authz.conf"



补充,增加SSL支持



参考《Apache2 SSL and Subversion in Debian》,给服务添加SSL支持。助记如下:
sudo apt-get install openssl
sudo mkdir /etc/apache2/ssl
export RANDFILE=/dev/random
sudo openssl req $@ -new -x509 -days 365 -nodes \
-out /etc/apache2/ssl/apache.pem \
-keyout /etc/apache2/ssl/apache.pem
sudo chmod 600 /etc/apache2/ssl/apache.pem
cd /etc/apache2/sites-available/
sudo cp default ssl
sudo a2ensite ssl
sudo a2enmod ssl
sudo vi /etc/apache2/ports.conf # add Listen 443

其实生成证书用apache的命令apache2-ssl-certificate很方便,但Ubuntu从Debian继承的一个bug把它给搞丢了,可惜...下面是ssl的apache配置文件/etc/apache2/sites-available/ssl的内容:
<VirtualHost *:443>
SSLEngine On
SSLCertificateFile /etc/apache2/ssl/apache.pem
Include /etc/apache2/mods-enabled/dav_svn.conf
</VirtualHost>

2007-08-01再补充,SVNListParentPath on的bug临时应对方案


参考svn bug #2753,在使用 authz 的情况下,SVNListParentPath on这个设置会失效,apache总是报告权限错误。避免这种情况的临时方案:把<Location /svn>改成<Location /svn/>,路径的最后面增加一个斜线。还真是个古怪的bug呀。

2006-08-01

pkblogs,救星

最近借助pkblogs看了不少blogspot上的文章,真是广大受压迫人民的救星呀。托pkblogs的福,这个blog也能再利用一下了:

http://www.pkblogs.com/xieyanbo