今天我去温泉的胸科医院检查。
去挂号时候大夫问我来过吗,我说几年前来过。说完后大夫就逗了,说你这不白说吗。我背个书包,一副学生装束,她又问怎么还没有毕业啊?我说明年毕业。哈哈,刚问完她就笑着说我不应该这么问你。这里的大夫说起话来都比较和气,不像有的医院的大夫,经常板着脸。
温泉远离市区,我觉得这里的人比城市里的大夫相对和气,给人轻松的感觉。我猜我要去城市里的医院,才没人和我说闲话呢。
看完大夫,我划价后问挂号处刚才那个大夫去哪里检查,她看了一眼我的单子后说70啊,看她的表情是觉得挺贵的。
检查完后我又去医院的小山上玩。医院南边有个小山,上面有辛亥革命滦州起义纪念碑,有冯玉祥写的碑文。今天多云,空气比较潮湿,小山上没人,感觉很好。在山上我还清晰得记得四年前来这个小山上,到山顶的大石头下面时候,几个男的看我是陌生人,跟我说了什么。在这里,回想2002年来这里的情景,又触动了我怀旧的感情。
下山的时候我从北边的小路下去,结果竟然越走越不像路,到山脚时旁边都是医院的栏杆,我就翻出去了。翻的时候好紧张,翻墙揭瓦的事情我很久没有干了,而且那栏杆的钢筋在顶上朝外面弯着,要一不小心轻则衣服划破,重则身子被钢筋戳进去。还好安全出去了。所以温泉医院的门,我进了两次,出了一次。哈哈。
出去后想吃饭,问一个小学生哪里吃饭,他指给我后我又不想去了,在330的站牌下等车,他在公路中间还指着对面的市场对我喊。真是天真纯朴的孩子啊。
我在颐和园下车,想去颐和园逛一圈,在车站边问了公交车司机才找到一个小饭馆,里面饭还挺贵。要了碗凉面六块钱,我靠,看着跟吐出的似的,吃了两截面条后就走了,太难吃了。这会学校了,也没有心情游园了。
2006年10月9日星期一
给Gnome Robots制作新图片(二):强大的Imagemagick
今天用Imagemagick的montage实现了命令行的图片组合,上图就是得到的图片。我再次体会到了Imagemagick的强大,上次是用Imagemagick来缩小JPEG图片的。昨天得到的图片只是第一个版本,每个小图片还需要改进,如果用GIMP 一个一个挪动的方法就会很麻烦,所以我研究了一下montage的命令行参数,得到了生成Gnome Robots图像的方法,就是一行montage命令:
montage -geometry 16x16 tux1.png tux2.png tux3.png tux4.png tux5.png gates1.png gates2.png gates3.png gates4.png gates-v1.png gates-v2.png gates-v3.png gates-v4.png dead.png -tile 14x1 -background transparent bill.pngtux1.png到tux5.png是从左到右的五张小企鹅图片,其它也是按从左到右的顺序命名的。
这种方法比用GIMP容易多了,而且可以很容易地重复操作。我把用montage得到的图片和用GIMP得到的对比了一下,发现用montage得到的图片比用GIMP得到的更精确,因为用GIMP的方法要挪动14张图片,容易出错,而montage的tile参数已经指定了按14行1列的布局排列图片,不用指定每个图片的偏移了。
Libellés :
自由自在
2006年10月8日星期日
给Gnome Robots制作新图片(一):用GIMP的实现
今晚要弄个Gnome Robots的新图片,用GIMP不知道如何精确排列图片,就用Inkscape,但是Inkscape(0.44版)的Object -> Grid Arrange根本不能用,行和列自动变为1,而且按了Apply后没反应。然后想用Scribus,但是Scribus(1.2.5)的File -> Import -> Get Text/Picture是灰色的,也不能用。我又用Imagemagick的montage命令,但是不带参数地执行后得到的图片不是由输入图片紧挨着从左到右排列生成的,而那些选项我也看不出眉目来。最后用GIMP比较麻烦地完成了,怕下次忘了,就简单记下来。
首先准备tux.png,gates.png,gates-v.png,dead.png,每张图片都是16x16的背景透明png图片。然后新建224x16的背景透明图片bill.png。把tux.png复制后粘贴进bill.png,然后菜单Layer -> Layer to Image Size,然后Layer -> Transform -> Offset,在X偏移值里面填入-114,确认,这样把第一个小企鹅左移114像素,正好在bill.png最左边。然后Layer -> Duplicate Layer,对新复制的层进行X方向16的偏移。然后再复制刚刚移动过的层,再偏移16,直到得到5个企鹅。用类似的方法再从左向右依次加入4个gates.png,4个gates-v.png,1个dead.png,即可得到最终的bill.png。将其复制到/usr/share/pixmaps/gnobots2里面,打开Gnome Robots即可选择新的图像bill了。
首先准备tux.png,gates.png,gates-v.png,dead.png,每张图片都是16x16的背景透明png图片。然后新建224x16的背景透明图片bill.png。把tux.png复制后粘贴进bill.png,然后菜单Layer -> Layer to Image Size,然后Layer -> Transform -> Offset,在X偏移值里面填入-114,确认,这样把第一个小企鹅左移114像素,正好在bill.png最左边。然后Layer -> Duplicate Layer,对新复制的层进行X方向16的偏移。然后再复制刚刚移动过的层,再偏移16,直到得到5个企鹅。用类似的方法再从左向右依次加入4个gates.png,4个gates-v.png,1个dead.png,即可得到最终的bill.png。将其复制到/usr/share/pixmaps/gnobots2里面,打开Gnome Robots即可选择新的图像bill了。
Libellés :
自由自在
2006年9月28日星期四
在Linux下用Windows下的共享打印机
终于可以在我的Ubuntu下面用实验室Windows下的共享打印机了。下面总结一下,供我以后查阅。
首先要安装以下的包:
然后要打开cupsys和samba服务:
以前曾经试着用gnome-cups-manager配置过这台打印机,但是没成功。下面总结一些问题以及解决方法。
1. 用lpadmin增加打印机时,如果出现lpadmin: add-printer (set model) failed: client-error-not-found这样的错误,看看ppd文件是否存在。如果没有需要的ppd文件,就需要安装相应的包。
2. 开始lpadmin添加打印机时,我用smb://zheng/HPLaserJ指定打印机地址,在打印时总是出现下面的错误:
3. 如果仅仅是使用Windows下的打印机,不需要对samba进行任何配置,即不需要改动/etc/samba/smb.conf。
4. Ubuntu里面我的用户在lpadmin这个组里面,所以上面添加打印机的操作无需root权限。
5. 在这里命令行比图像界面好。虽然gnome-cups-manager也可以设置打印机,但是添加打印机时选择Windows打印机后,不停弹出局域网电 脑的认证对话框,而且总是跳 到最前面,很烦人。不同发行版的图形界面配置程序往往有差异,甚至同一发行版不同版本程序的界面都不同,而命令行方法在Linux下都是通用的。用命令 行知道每一步在做什么,而且失败了有更多的出错信息。
6. 如果要多次测试打印机,可执行不带任何参数的lp,lp将从标准输入(stdin)读取内容,输入一个空行后按Ctrl-D,就可以让打印机走一张白纸了。这样可节约纸张。
首先要安装以下的包:
sudo aptitude update如果共享打印机HPLaserJ位于mea工作组的zheng电脑下,型号是HP LaserJet 1200系列,那么执行如下命令来添加该打印机[1]:
sudo aptitude-get install cupsys cupsys-bsd cupsys-client samba smbclient
lpadmin -p zhengprinter -v smb://mea/guest@zheng/HPLaserJ -P /usr/share/cups/model/hplip/HP_LaserJet_1200.ppd上面的命令首先增加打印机zhengprinter,然后让其可用并可以接收打印任务,最后把它设置为默认打印机。上面的命令在/etc/cups/printers.conf中增加相关内容。
enable zhengprinter
accept zhengprinter
lpadmin -d zhengprinter
然后要打开cupsys和samba服务:
sudo /etc/init.d/cupsys restart这两个服务都是必需的,缺一不可。上面的步骤如果都没有错误,那么就应该可以在Linux下使用Windows下的共享打印机了,可以用
sudo /etc/init.d/samba restart
lp testfile来测试是否成功,用相应的文件替换testfile。
以前曾经试着用gnome-cups-manager配置过这台打印机,但是没成功。下面总结一些问题以及解决方法。
1. 用lpadmin增加打印机时,如果出现lpadmin: add-printer (set model) failed: client-error-not-found这样的错误,看看ppd文件是否存在。如果没有需要的ppd文件,就需要安装相应的包。
2. 开始lpadmin添加打印机时,我用smb://zheng/HPLaserJ指定打印机地址,在打印时总是出现下面的错误:
Unable to connect to SAMBA host, will retry in 60 seconds...ERROR: Connection failed with error NT_STATUS_ACCESS_DENIED错误消息可以用tail /var/log/cups/error_log查看。在搜索了一些网页后,还是不知道怎么解决,不经意中看到这么一个类似问题的回复[2]:
Change the URI format to DeviceURI smb://WKGRP/guest@server/printer我于是把打印机地址改为smb://mea/guest@zheng/HPLaserJ,重新运行了lpadmin,然后打印机马上吱吱响了起来,打出了队列中的测试页。要不是偶然看到这个,我真不知道什么时候才会弄好。
due to a recent security update to CUPS.
3. 如果仅仅是使用Windows下的打印机,不需要对samba进行任何配置,即不需要改动/etc/samba/smb.conf。
4. Ubuntu里面我的用户在lpadmin这个组里面,所以上面添加打印机的操作无需root权限。
5. 在这里命令行比图像界面好。虽然gnome-cups-manager也可以设置打印机,但是添加打印机时选择Windows打印机后,不停弹出局域网电 脑的认证对话框,而且总是跳 到最前面,很烦人。不同发行版的图形界面配置程序往往有差异,甚至同一发行版不同版本程序的界面都不同,而命令行方法在Linux下都是通用的。用命令 行知道每一步在做什么,而且失败了有更多的出错信息。
6. 如果要多次测试打印机,可执行不带任何参数的lp,lp将从标准输入(stdin)读取内容,输入一个空行后按Ctrl-D,就可以让打印机走一张白纸了。这样可节约纸张。
Libellés :
自由自在
2006年8月21日星期一
如何创建一个C语言库
今天终于学会了如何创建一个C语言的库,就是把自己写的函数不放在主程序里面,而是放在独立的头文件和其他C文件中。这样可使主程序清晰,而且代码维护起来更容易。
比如写了个求中位数的函数median(),希望在主程序中调用median()但不出现它的代码,可以在主程序头部写上#include "median.h",median.h要和主程序放在一个目录下。median.h中的内容就只一行,是median()这个函数的原型声明,例如 extern int median(int [], int);,而median()函数的代码写在另一个文件median.c中。
编译和连接主程序时,需要多加一个文件median.c,即要用gcc -o main main.c median.c 。用上面说的方法,就可把自己写的函数作成C语言的库了。
另 一种方法是把所有东西都写到一个头文件median.h中,前面是函数原型声明int median(int[], int);,接着是函数的代码。这样编译和连接时,就无须增加median.c,只需 gcc -o main main.c。这样虽然只有一个文件,但是如果代码较多就会让头文件比较乱,所以把头文件和真正的代码分开是创建库的更合理的方法。
上面的总结主要参考了How C Programming Works和EasyBMP的源代码。记下此笔记,供以后查询。
比如写了个求中位数的函数median(),希望在主程序中调用median()但不出现它的代码,可以在主程序头部写上#include "median.h",median.h要和主程序放在一个目录下。median.h中的内容就只一行,是median()这个函数的原型声明,例如 extern int median(int [], int);,而median()函数的代码写在另一个文件median.c中。
编译和连接主程序时,需要多加一个文件median.c,即要用gcc -o main main.c median.c 。用上面说的方法,就可把自己写的函数作成C语言的库了。
另 一种方法是把所有东西都写到一个头文件median.h中,前面是函数原型声明int median(int[], int);,接着是函数的代码。这样编译和连接时,就无须增加median.c,只需 gcc -o main main.c。这样虽然只有一个文件,但是如果代码较多就会让头文件比较乱,所以把头文件和真正的代码分开是创建库的更合理的方法。
上面的总结主要参考了How C Programming Works和EasyBMP的源代码。记下此笔记,供以后查询。
Libellés :
自由自在
2006年8月17日星期四
买车记
几经周折,今天终于买了辆自行车 。
上学期在南门丢了车,虽然自己还有一辆,但太旧了,最严重是没有车闸了,而且不能带人,所以还得买。先买了一辆挺新的,但是骑着不舒服就又原价卖了。暑假回来后继续买。二手版上买车的多,卖车的少,一有卖车的帖子要不抢在前面,一会儿就被人先要了。曾经看过一辆车,但是太新了,怕丢就没有买。
今天中午一个人卖永久26自行车,老式的吧,我赶紧联系。我觉得那种车子挺结实,不大容易散。可是已经有人在先了,最后还是被那人买了,自己没拿到,遗憾了半天。
后来在北大东门买了一辆女式的车子,聊胜于无吧,总算可以带人了。恨死偷车贼了!让人都不敢买新车,旧车这么难找,麻烦死了!
上学期在南门丢了车,虽然自己还有一辆,但太旧了,最严重是没有车闸了,而且不能带人,所以还得买。先买了一辆挺新的,但是骑着不舒服就又原价卖了。暑假回来后继续买。二手版上买车的多,卖车的少,一有卖车的帖子要不抢在前面,一会儿就被人先要了。曾经看过一辆车,但是太新了,怕丢就没有买。
今天中午一个人卖永久26自行车,老式的吧,我赶紧联系。我觉得那种车子挺结实,不大容易散。可是已经有人在先了,最后还是被那人买了,自己没拿到,遗憾了半天。
后来在北大东门买了一辆女式的车子,聊胜于无吧,总算可以带人了。恨死偷车贼了!让人都不敢买新车,旧车这么难找,麻烦死了!
Libellés :
misc
订阅:
博文 (Atom)