周结巴/费玉清-千里之外

yayj 发表于 2006-10-08 09:54:52

引用自土豆千里之外


mv的主题是想表现男主角对女主角忠贞的爱情,于是歌词的每句结尾都是以ai(爱)压韵,除了第一句的‘崖’和几个‘生’,很有意思

 

关键词(Tag): 娱乐 喃喃呓语 麻布袋
收藏: QQ书签 del.icio.us 订阅: Google 抓虾

兄弟们可好

yayj 发表于 2006-09-14 10:46:40

1.周末本打算找黄董耍哈,结果手机无法接通。昨天才在电话头了解到,原来燕曦突然想银厂沟,两口子啥都没准备就跑去耍了两天,衣服都没带够,也让我头一次听说了烧烤的目的是为了烤火。真™小资。

2.没想到啊没想到,O di shen a,居然是大学班上头一个发婚的男人。现在两口子又屁颠屁颠地跑去三亚vacation去了,真™的爽。

3.老雍的账还清了,花花开店了,卖龙升级当经理了,肥跑德意志挣钱去了,3年过去了,看来现在兄弟们都还是混得不错,就剩我还在原地装模作样。

关键词(Tag): 喃喃呓语 麻布袋
收藏: QQ书签 del.icio.us 订阅: Google 抓虾

几个正则表达式

yayj 发表于 2006-08-05 23:37:06

1.字母表{a,b,c}上满足后面条件的字符串:首次出现的a位于首次出现的b之前。-------- c*a(a|c)*b(a|b|c)*
2.字母表{a,b,c}上由偶数个a组成的字符串。------- ((b|c)|(a(b|c)*a))*
3.是4的倍数的二进制数。-------- ((0|1)*00)|0
4.大于101001的二进制数。
5.字母表{a,b,c}上不包含连续子串baa的字符串。--------- (a|c)*(b(b|((ac*b)*c?))*)?
6.C语言中非负整常数组成的语言,其中以0开关的数是八进制常数,其他数是十进制常数。
7.使得方程an+bn=cn存在着整数解的二进制整数n。
若这里是指存在正整数解,则由费马大定理得知n为1或2,所以表达式为0*10?。
若这里是指存在整数解,则由于此时肯定存在a=b=c=0这一解,则n为任意二进制整数,所以表达式为(0|1)*。

收藏: QQ书签 del.icio.us 订阅: Google 抓虾

内网穿透

yayj 发表于 2006-07-24 13:44:01

Linux的iptables和FreeBSD的pf都是实现的symmetry nat,可以考虑把它改成cone nat或者port cone nat,这样在内网中的p2p软件的速度可能会明显提高,应该不复杂,嗯。
关键词(Tag): freebsd 事业未竞
收藏: QQ书签 del.icio.us 订阅: Google 抓虾

修改FreeBSD-5-stable的ppp(8)和pppoed(8)

yayj 发表于 2005-12-16 16:32:09

ppp(8)和pppoed(8)都是FreeBSD系统自己的用户级ppp处理程序,配合使用这两个程序可以使FreeBSD成为一个pppoe服务器。pppoed(8)作为daemon进程一直运行,当收到与之对应的PADI后,pppoed(8)会fork出ppp(8)来处理这个连接,每个ppp(8)进程只处理与这对应的ppp接口。

需求:
1. ppp(8)使用tunN作为ppp接口名,其中包括有一个adsl的接口,所以adsl接口的名称不固定,这对做NAT的pf(4)配置造成了困难。要求固定adsl接口的名称,并使其它的pppoe不能使用该接口名称。
2. ppp(8)不提供限制用户登录次数的功能,要求提供该功能。
3. ppp(8)能统计它对应接口的流量,但不提供统计用户流量的功能,要求提供该功能。

完成情况:
1. ppp(8)默认从tun0开始一直重试到打开tunN设备为止,而它的-unit N选项表示只使用tunN接口,所以只要修改-unit选项的意义即可。而pppoed(8)在调用ppp(8)时不会使用-unit选项,所以要为它加上这个功能。
pppoe.c.diffs如下:
--- pppoed.c.orig Sat Nov 15 23:26:34 2003
+++ pppoed.c Fri Dec 16 16:18:20 2005
@@ -61,7 +61,7 @@
#include


-#define DEFAULT_EXEC_PREFIX "exec /usr/sbin/ppp -direct "
+#define DEFAULT_EXEC_PREFIX "exec /usr/sbin/fixedppp -direct -unit "
#define HISMACADDR "HISMACADDR"
#define SESSION_ID "SESSION_ID"

@@ -503,7 +503,7 @@
struct ngm_connect ngc;
struct sigaction act;
int ch, cs, ds, ret, optF, optd, optn, sz, f;
- const char *pidfile;
+ const char *pidfile, *unit;

prog = strrchr(argv[0], '/');
prog = prog ? prog + 1 : argv[0];
@@ -512,14 +512,19 @@
label = NULL;
acname = NULL;
provider = "";
+ unit = "0 ";
optF = optd = optn = 0;

- while ((ch = getopt(argc, argv, "FP:a:de:l:n:p:")) != -1) {
+ while ((ch = getopt(argc, argv, "Fu:P:a:de:l:n:p:")) != -1) {
switch (ch) {
case 'F':
optF = 1;
break;

+ case 'u':
+ unit = optarg;
+ break;
+
case 'P':
pidfile = optarg;
break;
@@ -568,14 +573,16 @@
" must be given\n", prog);
return usage(prog);
}
- exec = (char *)alloca(sizeof DEFAULT_EXEC_PREFIX + strlen(label));
+ exec = (char *)alloca(sizeof DEFAULT_EXEC_PREFIX + strlen(label) + strlen(unit) + 1);
if (exec == NULL) {
fprintf(stderr, "%s: Cannot allocate %d bytes\n", prog,
(int)(sizeof DEFAULT_EXEC_PREFIX) + strlen(label));
return EX_OSERR;
}
strcpy(exec, DEFAULT_EXEC_PREFIX);
- strcpy(exec + sizeof DEFAULT_EXEC_PREFIX - 1, label);
+ strcat(exec, unit);
+ strcat(exec, " ");
+ strcat(exec, label);
}

if (acname == NULL) {
这个很简单,ppp(8)的更简单,把bundle.c的2019行中改为maxunit = -1;即可。

2. 这个需要实现每个ppp进程间的通信与同步。我现在的做法是以用户名作为文件名,把进程的pid存入该文件,并用文件锁来实现各个ppp进程间的同步。新 的ppp进程验证前先检查这个文件,如果文件不存在或者文件中的pid对应的进程不存在则表示用户没有登录,否则用户已经在线了。修改pap.c中的 pap_Input函数和chap.c中的chap_Input函数实现pid的存入操作,修改main.c中的AbortProgram函数实现清理工 作。

3. 还没写好。

体会:
1. alloca函数很好用。
2. 要看懂一个程序,必须先看懂它的数据结构。
3. 这次看程序全部使用cscope+vim完成,很好用,还有很多功能示发现。

收藏: QQ书签 del.icio.us 订阅: Google 抓虾

关于98.2

yayj 发表于 2005-12-16 16:14:59

虽然98.2还有很多问题,但维护了这么久,而且我可能最近会停止对它的维护工作,所以想写点关于它的东西。
再想想吧,手头还有很多东西没看完,pf(4)、netgraph(4)、ppp(8)、pppoed(8)、策略路由、动态DNS和负载均衡.....
关键词(Tag): freebsd 喃喃呓语 麻布袋
收藏: QQ书签 del.icio.us 订阅: Google 抓虾