蓝天,小湖,湖水中一方小筑

Linux下的十六进制编辑器

关键字: Linux, hex editor, cli 折腾东西,需要找一个命令行下的十六进制编辑器,最后在[这篇文章](http://ox0spy.blogspot.com/2008/02/linux_27.h tml)中找到了办法。其实就是在用xxd看了,编辑完后,用xxd -r命令把它给恢复回去,然后再写回文件就行了,嗯。 vim file :%!xxd ... edit ... :%!xxd -r

在Moin中使用pygments

关键字: MoinMoin, pygments 想给自己的东西分个类,于是又一次架起了MoinMoin,不满足于里面自带的parser,想起来了pygments好像有对MoinMoin的支持,于是乎就去找 了。 找到了结果,其实很简单,把pygments的external文件夹下的一个文件拷到自己wiki的data/plugin/parser下,然后改成你想要的名字 (如code.py)就可以了,然后写代码就包在{{{}}}块中,然后加上#!code <foobar>,以告诉它用那个东西处理,处理的语言是foobar,然后记得把css加到想要的地方就行了,嗯。 很简单,但是比原来的好看多了,不过还是要把它CSS中pre的默认字体改一下,嗯。

BLUG - Coding4fun

关键字: coding, fun, exoweb, BLUG

对BLUG的这项活动,早就有所耳闻,也一直很想去体验一下,于是今天就去了。

活动是11点开始,早上9点多出门的,本来以为可以轻松在规定时间内赶到,结果郁闷的事情再次发生了,我又迷路了。在问了N多人后终于找到了正确的方向,期间走过的冤 枉路就不说了,因为太多了,后来为了赶时间,尽管气喘吁吁了还是在一路狂蹬,居然在某处飚到了44kmh的速度。本来是去Coding4Fun的,结果先来了段Cra sy4Finding。其实更郁闷的是,当我赶上楼的时候,居然只来了三个人,而且大门还没开,FT啊FT。注,本文纯流水,嗯。

在Django的模板中使用m2m

关键字: django, many-to-many, template, m2m 最近在写自己的blog系统,自然就想到加上了tags。在我的数据库中,把tag扔在一个单独的表Tags中,然后在Articles表中有一个字段以m2m的关系 连到Tags表中。已经把post, list等页面写完了,但是在写detail的时候,发现如果直接用article.tags引用,模板系统会报m2m的对象不 能遍历的错,放狗找了一圈才知道需要使用article.tags.all作为for遍历的变量集,剩下的没啥说的了。

root可写NFS目录

关键字: root, NFS, 权限 最近在挂NFS,root默认在里面没权限。因为默认会加上root_squash选项,这个选项的含义就是把客户机上的root映射为服务器端的nobody用户, 所以自然就没有权限了,解决方案也很简单,加上no_root_squash即可,这个选项表示不把root映射为nobody,自然在那边就还是root了,ove r。

偷懒用的Makefile

关键字: 偷懒, makefile

经常写些测试的小程序,有时一个目录下N多C程序要手动编译,想着头都大,于是乎就想偷懒了,花了半小时攒了个Makefile:

CC=gcc
CFLAGS=-g
RM=rm -f

SRCS=$(wildcard *.c)
OUTS=$(patsubst %.c,%,$(SRCS))

all:$(OUTS)

$(OUTS):%:%.c
    $(CC) $(CFLAGS) -o $@ $<

clean:
    $(RM) $(OUTS)

sed打印替换后的内容

关键字: sed, text process 一个文件,首先需要将某一特定行中的一些字符给删除,然后再将删除后的这一行内容打印出来,也不知道自己发什么神经不想用管道,反正在放狗N分钟后得到如下结果: sed -n 's/^hostname:[ \t]*\(.*\)/\1/p' conf.ini 首先让sed进入安静模式,然后正则查找,把找到的那个东西\1打印出来,本来老想着先查找,再p,再替换,所以总是走不通。没想到s//后面还能跟p,真像那个ma n手册里面说的一样,sed的瑞士军刀啊。

配置crontab

关键字: crontab crontab -e编辑当前用户的crontab,这个应该没啥说的了,设置环境变量EDITOR可以更改编辑crontab的编辑器。 文件里面就是一行算是一个任务,前面5列是执行的时间,分别是 分 时 日 月 星期,在man 5 crontab里面能看到允许的值。如果是 * 则表示是所有值。然后就是这样了,如果我有一个任务需要每天的10点运行,则就写成 0 10 * * * XXX ,如果要每2小时跑一次,可以写成 0 */2 XXX 。 还要说一下最后运行的那个命令,它会新开一个进程跑,那个进程只有USER, HOME, SHELL这三个环境变量,所以写命令的时候需要考虑到这一点。 下面,没有了……

主机名解析顺序

关键字: 主机名解析 折腾机器,明明已经在/etc/hosts里面把一个东西给更新了,但是ping主机名还是ping不通,解析出来的IP地址还是原来的一个地址。后来上网转了一圈, 知道解析的顺序是通过配置文件确定的,于是就简单了,在Linux上是/etc/nsswitch.conf,在AIX上是/etc/netsvc.conf,在Li nux的配置文件里面写hosts: files dns,AIX的写hosts = local, bind就可以保证先由/etc/hosts解析了,嗯。

在iptables中配置nat包转发

关键字:iptables, nat, 包转发 两台机器,一台有多块网卡,能连外网,算是A吧,另一台连在A上,就叫B吧。现在的情况就是,有一台机器C,机器A能连上,机器B连不上,于是就要在A上做一个转发, 把B发来的到C的包都转出去。 于是就有了一句iptables: iptables -t nat -A POSTROUTING \ -s [ip of addr B] -d \ [ip addr if C] -j SNAT \ --to-source [outer ip addr of A] 下面逐段解释一下,第一个选项-t表示要把东西加到nat表中,iptables默认使用的是filter表;选项A表示是要把这条规则加到POSTROUTING链 中的,系统在决定了数据包的路由后执行该链中的规则;-s选项表示源目的地址,在这个配置中就是内网机器B的地址;-d选项指定目的地址,即C的地址;SNAT操作表 示改变包的源地址;最后–to-source写的是机器A的地址,然后就配完了,嗯。