博文

[E17] 字体设置有变化

昨天升级E17到 0.16.999.027,发现标题栏中文字体又变成方框了。 今天在邮件E17邮件列表里面找了一下, shorne在中国 上有说明: E17 Font Configuration 大致是说,E17现在支持两种字体设置,一种是 Evas Native,另外一种就是大名鼎鼎的 FontConfig。 如果使用Vera这种字体名称,就表示用的是Evas Native的,这个时候如果要想显示中文呢,就用到了 fallbacks 这种设置,即如果文字在指定的字体里面找不到,那么就在一个指定的字体列表里面挨个找,直到找到或是找完列表为止(jre-1.5也类似这种方法,如果java中文显示有问题,直接在其字体目录下建个fallback目录,扔个中文字体进去就OK了)。这是传统的方法,需要自己配置下字体以及font-fallback列表, E17 Font Configuration 上有说明,也可以参考 E17的使用小结 如果使用Sans、Serif 这个字体名称,就表示是 FontConfig的,因为FontConfig本身就有fallback,所以就不用额外设置了。

[胡言乱语] 我的五一节

图片
从哪儿说起呢?还是从凌晨00点开始吧 玩得太Happy了,结果错过时间,导致无法进入第一落脚点,只好采用第一备选方案 一大早起来,赶往第一落脚点,在路上顺便解决了早餐 接着,上网灌水,一直到下午两点,然后同玮哥去文殊院吃斋 腊肠 招财进宝 啥啥啥,忘了 熘虾仁 忘了叫啥名了,就是那个什么白果,炒的这个油菜 八德汤 战果 好了,解决了肚子问题,就在院子里逛一逛 放生池 这个是叫木鱼吧? 吃饱了,喝足了,我回家睡觉,玮哥去逛春熙路。。。 时光如梭,一下子就到了最关键德时刻了,晚上醒来上了会儿灌了会儿水,发现肚子饿了。到厨房里面翻了翻,发现了4个鸡蛋,一包紫菜,呵呵,结局就是当然的了: 手机拍照,不会用 换个角度 佩服一下自己,在佐料严重不足的情况下,在足足有五年的时间没有做过饭的情况下,还能这样把自己对付过去(如大家所见,色是没有的;如我所知,香、味俱全。呵呵,色即是空),不容易。 吃完了,玮哥也回来了,继续伟大的灌水事业。

[Debian] [FreeBSD] 学习下 date 命令的用法

由ChinaUnix 上的 一篇讨论 引起了看 date 命令的兴趣 在FreeBSD的实现上,因为可以用多个 -v 选项,这样可以很灵活的得到你要的日期,举个例子说,要得到2010年2月的最后一天,可以用 date -v10y -v3m -v1d -v-1d ,解释一下,就是取得2010年(-v10y)3月(-v3m)1日(-v1d)再减一天(-v-1d)的日期。这其中,数字后面的字符有固定的意义:ymwdHMS -> 年月周日时分秒 在Linux上,date的实现有些不一样,有个-d 的选项,可以用字符串来表示时间,这个字符串也很灵活:可以是年月日(20081002);也可以是英语词句的表达,如yesterday,last year;还可以是数字加时间单词如-1month(一个月前,这儿有趣的是,这个单词可以用单数,也可以用复数)。但是总体来说,似乎没有BSD上的灵活,想想表达下 "2010年2月的最后一天" 该怎么说?恐怕还要在自己脑子里转个弯弯。 date命令的输出格式,可以用百分符带一个字符表示日期中某个部分,应该都是来源于strftime        %%     The % character.        %a or %A           The weekday name according to the current locale, in abbreviated           form or the full name.        %b or %B or %h           The month name according to the current locale,  in  abbreviated  ...

[短信陷阱] 事实证明,俺的钱不是那么好骗的。

昨天打电话到1860投诉了下,说是让俺等待处理结果。。。 今天处理结果就出来啦,不知道是叫啥名字的公司,给俺打电话说把钱退给俺,问俺的地址,俺嫌麻烦,让返还到卡上,对方说一个星期内到帐(开心ing.....,时间虽然长,也懒得计较了)。 后悔昨天没有多按几下。。。(!严重警告:贪小便宜吃大亏!!)

[短信陷阱] 偶这么聪明的人都被骗,没天理!

  事情的缘起是这样地:   买个了手机,用的是动感地带的卡,因为好奇,所以各种功能都要试一下,先别忙着鄙视我:我的警惕性,那是相当的高啊!凡是要求发短信的,偶是一概不发;凡是说要收费的,偶一概不看。遵循这两个凡是的原则,头三天,愣是没有骗走俺一分钱。 然后今天的故事是这样地:   我进入动感地带M2.0卡的菜单,一个一个的详细查看功能以及说明,在进入到"我的铃声图片"->"多彩和弦" 的时候,有菜单如下 业务描述 HIFI和弦 原音原味 流行前线 偶想剧场 怀旧经典 欧美流行   进入"业务描述",其说明如下: 多彩和弦铃音,丰富你的铃音色彩。请确保你已经开通GPRS功能;若未开通,请拨打1860即可为你开通此功能。   看完说明,偶就点了一下"原音原味",没有反应,偶就又点了一下"HIFI和弦",这时就提示收到了彩信和短信息,偶点击进入彩信提示是否下载,偶选择了下载(因为刚咨询过1860,说下载彩信是不收费地)。果然有彩信,就是两首极破的歌;同时短信里面说有什么歌什么榜之类的,叫我回复,2元/条,偶当然不回复,直接删除。   做到这里,偶还是心虚,毕竟SP骗人的把戏太多了,所以偶及时选择了查询话费,就是发送HF到1861,回复提示偶卡上的余额还剩xx,偶一看,没有变化,心里的石头终于落了地。   放松了警惕,又点了下"原音原味","怀旧经典",在"精彩图片"里面点了下"节日祝福","体坛风云",然后在心底里暗暗夸了下动感地带,真是不错啊。   然后就在电脑上上网,逛到了移动的网上营业厅,正想看看GPRS的资费说明呢,顺便查了下实时话费详单,一下就吓了一跳:居然有6块钱的彩信费用,如下: ------------------ 四川省移动通信公司详单(彩信话单) 电话号码13548114xxx 结帐年月200604 工号:wwwwww 流水号:1144325622 打印时间:20060406 客户名称:unknow 类型 对端 使用时间 ...

[AWK] 用awk处理较为复杂的数据

一个awk(my.awk)脚本,使用方式: awk -f my.awk data.txt function strip(s){ gsub ( / ^ *| *$ / , "" , s) ; return s} function stripColon(s){a= length ( ":" )+ index (s , ":" ) ; return strip( substr (s , a))} BEGIN {      OFS = ","     process= 0      print "名称" , "人均消费" , "电话" , "地址" , "菜系" , "特色菜" } {      if (process == 1 ){          #print myarray["name"]          if ( $1 ~ "查看全部网友评论" )         {              print myarray[ "name" ] , myarray[ "avg" ] , myarray[ "tel" ] , myarray[ "add" ] , myarray[ "ser" ] , myarray[ "spe...

[AWK] 用awk处理数据

一个awk脚本,使用方法: awk -f my.awk data.txt function strip(s){ gsub(/^ *| *$/, "", s) , "" , s) ; return s} function stripColon(s){a= length ( ":" )+ index (s , ":" ) ; return strip( substr (s , a))} BEGIN { OFS = " , " process= 0 print "名称" , "人均消费" , "电话" , "地址" , "菜系" , "特色菜" } { if (process == 1 ){ #print myarray["name"] if ( $1 ~ "查看全部网友评论" ) { print myarray[ "name" ] , myarray[ "avg" ] , myarray[ "tel" ] , myarray[ "add" ] , myarray[ "ser" ] , myarray[ "spe" ] delete myarray } else if ( $1 ~ "查看餐馆详细信息" || $1 ~ "向朋友推荐" || $1 ~ "挑错或补充信息" || $1 ~ "网友打分" || $1 ~ /口味/ ) { } else if ( $1 ~ "满分为10分" ) { ...

[Google Maps] Where are you from?

今天在 Google Maps 上一通好找,终于可以回答这个问题了。 I'm from here 哈哈,可惜图片分辨率还是不够,看不见俺家的屋顶,放到最大后,中间有一个黑点,俺家就在旁边。。。 不看地图,还真不知道俺家周围是这么多的水啊。

[awk] 数据过滤

[root@VmwareHost ~]# ps -ef -aux Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.3/FAQ USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.2 3308 560 ? S 12:15 0:00 init [3] HOME=/ TERM=linux SELINUX_INIT= root 2 0.0 0.0 0 0 ? SN 12:15 0:00 [ksoftirqd/0] root 3 0.0 0.0 0 0 ? S< 12:15 0:00 [events/0] root 4 0.0 0.0 0 0 ? S< 12:15 0:00 \_ [khelper] root 5 0.0 0.0 0 0 ? S< 12:15 0:00 \_ [kacpid] root 18 0.0 0.0 0 0 ? S< 12:15 0:00 \_ [kblockd/0] root 28 0.0 0.0 0 0 ? S 12:15 0:00 \_ [pdflush] root 29 0.0 0.0 0 0 ? S 12:15 0:00 \_ [pdflush] root 31 0.0 0.0 0 0 ? S< 12:15 0:00 \_ [aio/0] root 19 0.0 0.0 0 0 ? S ...

[FreeBSD]穿越屏障:tor 的安装和使用

系统环境:FreeBSD 6.0 Tor 的介绍 这 个就不多说了。 参见 [ Jserv's blog ] 中 [ Tor : 第二代 onion routing ] 安装 如 果安装了portupgrade, 可以直接用 portupgrade -PpN tor 如果没有 portupgrade, 可以到 tor 的目录中 make install 如果没有安装ports,那 么就下载tor 和 tsock 的包手动安装 安装完成之后,系统会创建 _tor 这个用户。 ^v^$ id _tor uid=256(_tor) gid=256(_tor) groups=256(_tor) 设 置 到 /usr/local/etc/tor 目录下: ^v^$ cp torrc.sample torrc ^v^$ cp tor-tsocks.conf.sample tor-tsocks.conf 如 果是通过局域网代理上网,还需要设置代理服务器 HttpProxy   192.168.0.1:3128 HttpProxyAuthenticator  user:passwd HttpsProxy  192.168.0.1:3128 HttpsProxyAuthenticator user:passwd 更多关于torrc的设置,可以参见tor的手册 到 /usr/local/etc/rc.d/目录 ^v^$ cp tor.sh.sample tor.sh ^v^$ chmod a+x tor.sh 创建 /var/db/tor/data 目录,并修改属主为 _tor ^v^$ mkdir -p /var/db/tor/data ^v^$ chown -R _tor /var/db/tor 启 动 tor ^v^$ /usr/local/etc/rc.d/tor.sh start 应 用 用 torify 来启动应用程序就可以了。 更新ports: ^v^$ torify cvsup -L0 -g ~/mnt/portsup ^v^$ torify make fetchindex cvs: ^v^$ torify cvs -z3 update ...

[Debian] 启动时加载 sisfb 模块并指定参数

系统:Debian/sid 内核:2.6.14 initrd工具:yaird   有一台联想台式机,液晶显示器,在启动的时候,如果启用vesafb(即:内核参数是 vga=0x318之类),出现的文字基本上无法看清,显示器会出现一个提示信息,说要使用 1024x768@75的模式(一般液晶的都是60HZ),而在目前的模式下,不给内核打补丁,是没有办法调整 vesafb 的 vga 模式的。   因为这台机器集成的是 sis 的显卡,所以决定试试 sisfb 模块。   按照内核文档的提示,sisfb 模块在载入的时候可以手动指定参数 Example for sisfb as part of the static kernel: Add the following line to your lilo.conf:     append="video=sisfb:mode:1024x768x16,mem:12288,rate:75" Example for sisfb as a module: Start sisfb by typing     modprobe sisfb mode=1024x768x16 rate=75 mem=12288 即:如果 sisfb 编入了内核,则可以在启动时加入分辨率,刷新率等参数,如果是内核模块,则可以在命令行载入是加入参数。   可是,我现在需要的是在作为模块的情况下,需要在启动的时候加入刷新率和分辨率。 解决办法是: 在 /etc/yaird/Default.cfg 文件中加入sisfb的模块项: OPTIONAL MODULE sisfb 这样在创建initrd文件时,会在initrd文件中加入sisfb的内核模块。 创建 /etc/modprobe.d/sisfb (名字自己随意取),在这个文件中加入如下内容 options sisfb mode=1024x768x16 rate=75 这样在加载模块时,会自动加入刷新率和分辨率的参数。 Why? 这是因为 yaird 在创建 initrd 的时候,会参考 /etc/yaird/Default.cfg 来获取需要加载的模块名称,而在具体的添加 加载模块的命...

[图解] 完全自由软件[WinScp+Putty+Pageant]之Public Key Authentication方式登陆SSHD

图片
[注]原文发布于 Chinaunix.net 的BSD版,起因源于看到了 HonestQiao 版主的 [图解] 完全图解F-Secure SSH Client之Public Key Authentication方式登陆SSHD ,一时兴起,决定照猫画虎,完全用自由软件来实现(有点偏执狂),原文链接: [图解] 完全自由软件[WinScp+Putty+Pageant]之Public Key Authentication方式登陆SSHD , 里面罗里八嗦的提到UTF-8,也是我的另一个偏执了。 ------------------------------------------------------------------------------------- 将几样自由软件结合到一起,完成强大的Public Key Authentication方式登陆SSHD 用到的软件为 PuTTY: A Free Telnet/SSH Client WinScp: Freeware SFTP and SCP client for Window PuttyGen: 包含于WinScp的安装包里面 Pageant:包含于WinScp的安装包里面 安装之后,全程图解如下: 1,看看我们的软件列表: --------------------------------------- 2,启动PuttyGen --------------------------------------- 3,创建私钥,记得给私钥设置密码(passphrase,此密码只是用来保护私钥,而不是你的ssh帐号密码:谢谢3,4楼的兄弟指正),在Pageant里面,你也可以导入其他格式的私钥。 --------------------------------------- 4,保存私钥,你也可以把私钥导出成openssh可以识别的格式。 --------------------------------------- 5,复制公钥 --------------------------------------- 6,设置Putty,将显示设置为UTF-8 --------------------------------------- ...

测试了下 MSN SPACE 空间的HTML格式问题

两个意见 1,现在 MSN Space 又支持用 Firefox 编辑页面了(所见即所得:WYSIWYG),好事,赞一个。 2,VIM是一个非常强大的编辑器,有一个功能,就是可以将你在VIM中看到的语法高亮转换成HTML页面,这样可以将你的配置文件,程序代码用彩色的标记发布出去。要发布到MSN Space上,默认状况下要注意两个事:a,不要用<pre>的标记来导出html,否这发布到MSN Space上是给自己找麻烦(:let html_no_pre = 1);b,记得在<body></body>标记之间加上<div>的符号,div的样式参考body的样式。

[qemu] FreeBSD 上同时运行 Debian

刚刚装了一个FreeBSD,打算比较长久的用一下。 原先Debian上的东西需要拷贝出来,但是问题是:FreeBSD不支持除ext2外的Linux分区格式,同样,Linux也不支持UFS2,而我硬盘上唯一的一块fat32分区刚刚装了FreeBSD。 怎么办?用qemu,在qemu里面运行Debian,然后FreeBSD再从Debian上拷贝文件。 试了一下,发现 -net user 这个选项在我的机器上有问题,加了之后,Debian无法找到网卡,因为本机是唯一的FreeBSD系统,所以无法确定是RPWT还是BUG,好在这个选项是默认的,不加也可以。 然后想通过 -smb dir 这个选项来搞定,但是理解能力有限,没有搞定。 最后,只好测试 -redir tcp:5555::22 这个选项,好家伙,总算是能够进入Debian了。 目前来说,觉得FreeBSD很有趣,打算花一段时间来慢慢熟悉下。

[Debian] Raid1 + LVM + xfs

Debian/testing kernel: 2.6.12-1-686 mdadm: 1.12.0-1 lvm2: 2.01.04-5 系统中两块硬盘,分区 hdb1 和 hdc1 做的raid1,其上做的lvm,由于年深日久,当年又未曾留下文字记录,所以忘了怎么做的了 :-) 凑巧的是,这个lvm的磁盘空间眼看就要用完,而hdb 和 hdc 恰好又还有剩余的空间。干脆将剩余空间再做成raid1,然后加到先前的lvm里面,顺便在此留下文字记录。 分区,将两块磁盘上为利用的空间分区,因为是raid1的关系,两个分区大小要一致。分区之后,reboot。 创建raid1 mdadm --create /dev/md1 --level=1 --raid-disks=2 /dev/hdb8 /dev/hdc8 如果提示没有 /dev/md1 这个文件(因为使用了udev),需要自己手动创建一个 mkmod /dev/md1 b 9 1 将新创建的raid1加入到原先的lvm中去(以下三个命令,都有-t:供测试的参数,建议先加一个-t测试一下)。 将新建的 /dev/md1 用pvcreate命令格式化一下 pvcreate /dev/md1 用vgextend命令将 /dev/md1 加入到原先的 vg0 中 vgextend -Ay vg0 /dev/md1 扩展lv,命令是 lvextend lvextend -Ay -L +36G /dev/vg0/lv0 /dev/md1 扩展文件系统,我使用的是xfs. 首先是将文件系统挂载(mount) 扩展文件系统,使用xfs_growfs,man里头说就是为了配合 lvm 使用的 :-) xfs_growfs mount_point 稳妥起见,还是运行一下磁盘检查程序 umount mount_point xfs_check /dev/vg0/lv0 大功告成!! 参考文章: Convert Root System to Bootable Software RAID1 (Debian):http://alioth.debian.org/projects/rootraiddoc 以上所用命令的手册页(man)

[Debian] 解决DMA无法启用一例

系统(Debian/sid)原来运行的内核是2.4.27,现在升级到2.6.14,其中遇到的问题: 在2.4.27的系统下无法完成2.6.14-2-686的安装,主要是无法生成initrd文件,在Debian-user的邮件列表上有人问过这个问题,需要安装 initramfs-tools, 这样可以解决 2.6.14 的安装问题。 系统启动之后,发现DMA无法启用: # hdparm -d 1 /dev/hda /dev/hda: setting using_dma to 1 (on) HDIO_SET_DMA failed: Operation not permitted using_dma = 0 (off) 在google搜索了一下,找到了这个地址:http://seclists.org/lists/linux-kernel/2002/Oct/0162.html: looks like you forgot to enable via support 正好我的也是via的主板: $ lspci|grep -i ide 0000:00:07.1 IDE interface: VIA Technologies, Inc. VT82C586A/B/VT82C686/A/B/VT823x/A/C PIPC Bus Master IDE (rev 06) 查看了下initrd里面的文件,确实没有via的IDE驱动模块,于是修改了一下yaird的配置文件(/etc/yaird/Default.cfg),加入了via模块的支持: OPTIONAL MODULE via82cxxx 然后重新配置下2.6的内核 dpkg-reconfigure linux-image-2.6.14-2-686 完成之后,重新启动,OK,问题解决了。

[python] 我的第一个python脚本

很丑陋,但是是我写的第一个Python程序。     想学习下python,于是将python.cn上的邮件列表存档下载下来,想用zcat将它们合并成一个文件,以便用mutt来观看存档,结果发现文件名是类似于2004-September.txt.gz这种结构,如果强行将它们合并的话,时间顺序就会不正确,应为这种文件名不会按照正确的时间来排序。     于是想到将月份由名称改成数字,这样可以解决文件名排序问题,昨天才看python,但是正好动一下手,解决这个"实际"问题 :-)     再次申明:很丑陋,但是完成了我的"实际需求" #!/usr/bin/python # coding: utf-8 # filename name_convert.py import sys, os, string, re def monthConvert (name): """ monthConvert:Convert full month name to number. Return a month as a decimal number if Param is not a full month name, then return None """ month = { " January " : " 01 " , \ " February " : " 02 " , \ " March " : " 03 " , \ " April " : " 04 " , \ " May " : " 05 " , \ " June " : " 06 " , \ " July " : " 07...

iptables的几个概念

前两天玩emule,因为在内网,需要端口转发,顺便再了解了一下iptables的一些规则。 以前对filter中的INPUT链和nat中的PREROUTING有些搞不清,例如,如果INPUT的规则是DROP,那么对PREROUTING会有怎样的影响或是冲突。 通过实验,应当是这样的,nat的PREROUTING链应当在filter之前,INPUT对PREROUTING的影响只是在于,如果PREROUTING修改过得目的地址如果仍然是本机的话,那么INPUT链将起作用,但如果PREROUTING修改的目的地址不是本机的话,那么就该是FORWARD链的规则控制了。 做端口转发,应当注意链路的完整性,进得来的要出得去。以amule为例,外部对4662端口的访问如下: 进入:外部->proxy:4662->PREROUTING修改目的地址->FORWARD转发->amule:4662 回应:amule:4662->proxy->POSTROUTING修改源地址->FORWARD转发->外部 这儿应当注意的是,不管POSTROUTING和PREROUTING怎么设置,如果没有FORWARD链,内部和外部是不可能连通的。 iptables的LOG命令是一个相当有用的东西,尤其是在调试iptables的规则的时候,可以用LOG来查看包是否依据规则流动。

apache 对.svn目录的保护

为了图方便,我是在apache的目录下面直接修改文件的,用的是subversion做的版本控制,为了保护.svn目录,需要在apache的配置文件里面加上一节 禁止对.svn目录的访问 <Directory ~ "/\.svn">         Order allow,deny         Deny from all  </Directory> 额外的,想禁止对所有以.开头的文件的访问: <Files ~ "^\.">         Order allow,deny         Deny from all   </Files>

[Debian] grub 菜单配置文件的说明

什么是grub grub是一个操作系统引导器,具备引导多个操作系统的能力 为什么是grub grub的行为可以由配置文件控制,同时又具有一个类似于bash的控制台环境,这使得它具有非常强大和灵活的控制能力。很多Linux发行版都选择将它作为默认的引导器。 Debian and grub 自动更新的机制 /sbin/update-grub /sbin/update-grub 是 Debian 系统中的一个脚本,它读取 /boot/grub/menu.lst文件的配置,根据一些参数自动重新生成grub启动菜单。 /etc/kernel-img.conf 这个配置文件也是 Debian 所特有的,它是在安装或删除内核时,供内核软件包所带的脚本读取,来完成安装内核所需要的一些步骤。 示例: do_initrd = yes postinst_hook = /sbin/update-grub postrm_hook   = /sbin/update-grub 说明: 1,安装(/删除)内核后,自动产生(/删除)相应的 initrd.img 文件 2,内核安装完成后,调用 /sbin/update-grub 以更新启动菜单 3,内核卸载完成后,调用 /sbin/update-grub 以更新启动菜单 Debian中grub配置菜单的说明 # menu.lst - See: grub(8), info grub, update-grub(8) # grub-install(8), grub-floppy(8), # grub-md5-crypt, /usr/share/doc/grub # and /usr/share/doc/grub-doc/. ## default num # 将第num条设置为默认启动。条目计数从0开始,如果没有设置的话,默认就是第0条。 # # 你可以用 'saved' 来代替数字。在这种情况下,默认项就是由命令 'savedefault' # 保存的项 default saved ## timeout sec # 设置默认项(一般是最开始的那一条)自动启动之前等待的时间,单位是秒。 timeout 5 # Pretty co...