流水笔记

面向免费零食和饮料的编程

做了件傻事

Ubuntu下改hosts文件的时候把”127.0.0.1 机器名”这行给删了,然后退出以后发现sudo不能用了,每次sudo的时候总会提示

1
sudo: unable to resolve host 机器名

然后由于sudo不能用不能把hosts改回来。。。

幸好在网上搜了一下,发现有个gksudo的东西,与sudo类似功能,不过是GTK+ frontend的,反正就是说和sudo之间没什么联系了,然后就可以把hosts的内容改回来了。

Shell笔记

批量删除指定文件(以链接错误文件为例):

1
file * | grep 'symbolic link in a loop' | sed 's/:.*$//g' | xargs -i rm {}

file列出当前文件夹的文件属性,grep过滤文件,sed修改行内容,xargs生成删除指令

批量软链接:

1
file * | grep 'symbolic link in a loop' | sed 's/:.*$//g' | xargs -i rm {}

发现Ubuntu下面的Firefox暴快无比

之前Ubuntu下一直在用chrome,结果开十来个标签就崩溃了;然后改用Opera,感觉很好很强大。不过在笔记本里面装Ubuntu以后,还是用回了Firefox。然后真是不用不知道,一用吓一跳,速度快得惊人。装了大概10个左右的插件,启动还是两秒内就好了,而且使用过程中开二三十个页面依然毫无压力。 上个插件截图:

恩,不得不说,appspot虽然诸多限制,但存点图片什么的小文件还是很给力的。

学堂失火

抢鸡蛋大小的事情,本来学堂木质结构,又遇上这种风高放火天,更何况现在正在整修,而且烧的似乎主要集中在东边,频繁出现在各种封面上的西边清华学堂一侧表示毫无压力。虽然可惜,但毕竟旧的不去,新的不来。

可笑的是网上各种不明真相的群众纷纷发表各种感人言论,有高呼领导下课的,有感慨国将不国的,有感怀历史展望未来的,有反思百年清华精神的,有说二教鬼故事的o(╯□╰)o。总而言之,统而言之,无非就是想表达一个意思:作为一个有理想、有道德、有时间灌水、有精力无处释放的四有青年,表示压力很大。恩,也包括我。

Python的Import Site错误解决方法

在运行Python程序的时候可能会遇到’import site’ failed; use -v for traceback的信息,但出现这个错误以后程序还可以运行,只不过后面如果在import某些库的话就会出现ImportError No module name XXX的信息,然后程序就真正死了。

网上搜了很多后没有解决方法,后来一想,import site不就是说有一个site.py的文件咩,然后在Python安装目录下find一下,果然有两个site.py文件,一个在%PYTHON_HOME%/Lib目录下,一个在%PYTHON_HOME%/Lib/site-packages目录下,分别看了一下内容,发现%PYTHON_HOME%/Lib目录下的site.py比较靠谱,前面几行是这样写的:
Append module search paths for third-party packages to sys.path.
****************************************************************
* This module is automatically imported during initialization. *
****************************************************************
In earlier versions of Python (up to 1.5a3), scripts or modules that
needed to use site-specific modules would place “import site”
somewhere near the top of their code.  Because of the automatic
import, this is no longer necessary (but code that does it still
works).
可见应该就是它了,然后看了一下环境变量,果然%PATH%中没有%PYTHON_HOME%/Lib,把这个目录加到%PATH%中去,再次运行程序就好了。

Luit – Locale and ISO 2022 Support for Unicode Terminals

事情是这样的,比如想在Ubuntu下telnet上水木,telnet bbs.newsmth.net,然后就会蹭蹭蹭地发现放眼望去,一坨乱码。怎么办呢?

luit出现了,它可以把locale或者ISO 2022的编码转换成Unicode编码,从而在Unicode终端中正常显示,比如用
luit -encoding gbk telnet bbs.newsmth.net
就会发现看到的都是正常人能看明白的东西了。
当然luit的作用也不仅限telnet上水木了,比如cat gbk编码的文件的时候也可以在前面加luit。

无聊的日子

今天是实验室跟传说中的图灵奖大牛sifakis交流的日子,不过没我什么事就是了。中午吃完饭,左右无事,就向图书馆溜达过去了。进去以后查了查银行的余额,发现几乎弹尽粮绝,撑到毕业是肯定没希望的了,现在连能不能撑到放假都不知道。。。想来整个研究生生涯实在是有点尴尬。

到图书馆总是要翻翻书的,于是向中文阅览室走去,顺手拿了《三国故事集》、《什刹海的传说和故事》和《丰臣秀吉》三本书,挪到角落里搬张小板凳开始看起来了。翻了两页《三国故事集》,发现很像儿童读物,居然说刘备力大无穷,能把正在打架的关羽张飞生生拉开,很是无语,又往后翻了翻,猛然发现有“据说司马懿和诸葛亮小时候是同学哦”这样的句子,断定了这就是给小朋友看的,就把书放到一边,开始翻《什刹海的传说和故事》,翻了翻目录,发现都是些说传说又不够神奇,说八卦也不甚给力的小故事,颇为无聊,也放到一边去了。

然后开始专心看山冈庄八的《丰臣秀吉》,翻了翻目录,共分为六章,除了少年一章不甚熟悉以外,其余几张感觉都跟历史相符,于是就开始看起来了。一翻就翻了两个多小时,看到与今川大战四处打酱油的一段。感觉书写的还是很有意思的,写历史写得跟小说一样,不过日吉丸小时候似乎正义感太足了,然后阿春的一段又似乎颇为神奇,甲斐这段直接跳过也然我很不爽。秀吉同学的口才是很好的,还善用计谋,不过最牛的还是死缠烂打的精神,一方面不达目的誓不罢休,另一方面为了实现目标可以不顾别人的看法,实在是非常人所能为之。

然后就收到短信,明天开工,估计最近将近一个月的无聊日子要结束了。

Ubuntu10.10下安装KBS

假设php5,apache2,ssl等相关包都已通过apt-get的方法安装好,在当前用户下安装。

依赖包包含但不限于如下:
# apt-get install automake1.9 # apt-get install php5-dev # apt-get install libmysqlclient15-dev # apt-get install sendmail # apt-get install libesmtp5 # apt-get install byacc # apt-get install libgmp3-dev # apt-get install flex # apt-get install libxml2-dev # apt-get install libjpeg62-dev # apt-get install libpng12-dev # apt-get install libfreetype6-dev # apt-get install subversion
1、checkout源码
cd ~/bbs
svn co http://svn.kcn.cn/repos/kbs/trunk/
2、修改站点定义信息
cat /etc/passwd | grep <用户名> (查看当前用户的gid和uid)
vi site/fb2k-v2.h (修改相关信息,将BBSUID和BBSGID改为上面看到的内容)
3、配置、编译安装
./autogen.sh
./configure –prefix=/home/bbs –enable-site=fb2k-v2 –with-php –with-mysql –enable-ssh –enable-ssl –with-openssl=/usr –with-libesmtp –enable-innbbsd CFLAGS=”-O3 -g” (–prefix为安装目录,–enable-site指定站点信息)
make
sudo make install
sudo make install-home (会清空安装目录下的数据信息)
4、生成密钥
cd /home/bbs/etc
touch sshd_config
ssh-keygen -t rsa1 -f ssh_host_key
5、编辑php.ini
修改 extension_dir=”/usr/lib/php5/20090626+lfs/”(php5目录下的类似文件)
增加一行 extension=libphpbbslib.so
将 short_open_tag 的值修改为 Off,magic_quotes_gpc 也应该设置成 Off
将 session.save_path 目录(如 /var/lib/php5/)设置成 bbs 用户可写
6、配置apache2
vi /etc/apache2/apache2.conf (增加一行AddType application/x-httpd-php .php, 把 KeepAlive 参数设为 Off, 建议加入 AddDefaultCharset gb2312)
vi /etc/apache2/envvars (把APACHE_RUN_USER和APACHE_RUN_GROUP的值改为当前用户)
sudo /etc/init.d/apache2 restart (重启apache)
把源码目录www2复制到apache2的DOCUMENT_PATH目录下(/var/www)
7、初始化
cd /home/bbs/bin
./bootstrap
8、运行及停止
编写脚本startbbs,加入如下内容
  • #!/usr/bin/env sh
  • ./miscd daemon
  • sudo ./bbslogd
  • sudo ./bbsd -p 23
  • sudo ./sshbbsd -p 22
编写脚本stopbbs,加入如下内容
  • #!/usr/bin/env sh
  • killall sshbbsd
  • killall bbsd
  • killall bbslogd
  • ./miscd flush
  • killall miscd
通过startbbs启动,通过stopbbs停止。启动后通过telnet localhost或者网页访问localhost/连接服务器
转信,blog,首页导读等未配置

Python的部分函数

Haskell原生支持部分函数(这么说也不准确,Haskell本来一个函数就最多只能有一个参数,多参数函数只是多个函数组合的一种简化形式),然后今天发现其实Python里面也是有部分函数的,就是functools包里面的partial函数了,partial函数的第一个参数是一个函数,后面是这个函数的参数,然后返回一个新的函数,这个函数就是原来的函数中相应的参数被替换为常量的一个函数了。

。。。描述能力堪忧