四月 25th, 2010
押尾コータロー – Merry Christmas, Mr. Lawrence from Starting Point
先介绍一下这首背景音乐吧,老早就听过,前几天才发现出处:是“Merry Christmas Mr. Lawrence”这部电影(断臂片)的主题曲,也是坂本龙一配乐的处女作。这个版本是押尾光太郎的指弹吉他版。
自从开始实习就没有更新过blog了,加上软工、数据库、图形学乱七八糟的实验,有点忙不过来了。
本来一直在想以后做Linux相关的开发,周围认识的很多学长都走上了这条路,开始实习后却事与愿违搞起了Linux开发。其实说实话一直也不知道自己的兴趣点在哪里,工作了一个月后感觉可能还是桌面和互联网更适合自己,对于系统开发、运维这样的工作,干长时间可能会受不了……纠结啊
前两天和朋友聊到windows下一个程序如何删除自己,正好以前和同学讨论过这个问题,写出来凑个数。
Read the rest of this entry
一月 31st, 2010
1.IO重定向功能分析
IO重定向也是Shell的基本功能之一,这篇文章比较全面地介绍了Linux Shell的IO重定向功能。总结一下,IO重定向的大致格式是这样:
cmd [src | &] (> | < | >> ) (& num|-) | dst
貌似写得有点复杂(我不是故意的)。解释一下,整个重定向语句由三部分组成:
Read the rest of this entry
一月 31st, 2010
在写完一个最简单的命令解释器以后,我给自己的shell起了个名字——jdsh(JackalDire Shell)。
本来以为加入后台执行不是什么难事,但是认真想了一下要处理好一个字符‘&’不是一般的麻烦,各种问题接踵而至,于是决定先找点轻松的活干。
1.加入shell内建命令
Read the rest of this entry
一月 29th, 2010
Like The Wind — S.E.N.S
寒假在做Linux Kernel Project这本书上的习题,第二章的练习是写一个简单的shell,看了一下要求觉得这个练习很有价值,涉及到很多Linux C Programming的知识,所以准备认真地做一下。
最终的目标如下:
- 命令解释执行
- 支持后台执行(&)
- 支持输入输出重定向(< , >, >>)
- 支持管道IPC
- 内建命令cd, pwd, exit等
可见写一个shell并不是一件简单的事,从简单的一步一步做起吧,手头有APUE,一边做一边查。
Read the rest of this entry
一月 13th, 2010
Version 1 (ZZ)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
| result love(boy, girl)
{
if ( boy.有房() and boy.有车() ) {
boy.set(nothing);
return girl.嫁给(boy);
} else if (girl.愿意等()) {
while( ! (boy.赚钱 > 1e6 and girl.感情 > 8 )) {
for (day=1; day <=365; day++) {
if ( day == 情人节 )
if ( boy.givegirl(玫瑰) ) girl.感情++;
else girl.感情--;
if( day == girl.生日)
if ( boy.givegirl(玫瑰) )
girl.感情++;
else girl.感情--;
boy.拼命赚钱();
if( girl.耐心 == 0 && girl.有其它追求者) {
girl.goto(nother_boy);
boy.郁闷中();
boy.天天到BYR灌水();
return 没有结果;
}
}
}
try
{
girl.要男友买房();
girl.要男友买车();
girl.每天逛专卖店();
if ( boy.有房() && boy.有车() ) {
girl.去澳洲旅游(boy);
girl.到英国威斯敏斯结婚(boy);
girl.嫁给(boy);
boy.没日没夜挣钱();
}
} catch() {
girl.byebye(boy);
boy.郁闷中();
boy.天天到天涯灌水();
return girl.broadcast("这个男人真小气");
}
return girl.每天逛专卖店();
}
return girl.goto(another_boy);
} |
Read the rest of this entry
一月 11th, 2010
没事搜了一下自己域名,无意间发现老早提交的open directory申请居然通过了…想到一个多月没写东西,大惭…
为了尽快阻止这个连续N天没有日志的记录,先找一篇凑数…
先上开胃小菜 Appetizer
有人在byr论坛C++版上问了这样一道C++面试题:
class A {
public: void fun() { }
};
class B: public A {
public: virtual void fun() { }
};
class C: public B {
public: void fun(){}
};
class D: virtual public A {
public:
void fun(){}
};
int main(void) {
void *p;
((A*)NULL)->fun();
((C*)NULL)->fun(); // why fault here?
((D*)NULL)->fun();
return 0;
}
为什么在((C*)NULL)->fun()这句挂了呢?
Read the rest of this entry
十一月 25th, 2009
Question
字符串1:只含有英文字母
字符串2:含有英文字母和*,其中符号*表示匹配任意字符0或者多次,即正则表达式里面的含义。
现在给定这样的两个串,要求判断是否匹配?
bool isMatch ( const char *str1, const char *str2)
例如:str1 = “hello”, str2 = “he*o”,则二者匹配,返回true,str1 = “hello”, str2 = “he*l”,则不匹配,返回false。
Read the rest of this entry
八月 27th, 2009
快速排序详细分析
注:REF[n]为参考资料,列于文章结尾。
看了编程珠玑Programming Perls第11章关于快速排序的讨论,发现自己长年用库函数,已经忘了快排怎么写。于是整理下思路和资料,把至今所了解的快排的方方面面记录与此。
Read the rest of this entry
八月 18th, 2009
输入:一个字符串,单词用某个特定符号分割(比如空格)
输出:一个字符串,单词顺序和原串相反
看到倒置,一般的做法是用栈,要么自己建个数组、要么STL,或者递归用程序栈。
优雅的递归
void reverse_token() {
char str[MAX] = {0};
if (scanf("%[^#]", str) != EOF) { //利用scanf的正则式特性
getchar();
reverse_token();
printf("%s ", str);
}
}
Read the rest of this entry
七月 5th, 2009
今天在论坛上看有laphon同学的一个问题,觉得这个问题很有意思。
原帖地址
问题援引如下:
做一个小程序的时候发现的。代码如下,使用的编译器为DEV-C++ 4.9.9.2。
如果先要求输入a,再要求输入b,那么a的值无论输入多少(少于255)输出都会是0;
反过来,如果先要求输入b,再要求输入a,那么就会正常。
这是为什么呢?请教达人解释。
#include
#include
int main(int argc,char **argv)
{
unsigned char a,b;
scanf("%d",&a);
scanf("%d",&b);
printf("a=%d,b=%d\n",a,b);
scanf("%d",&b);
scanf("%d",&a);
printf("a=%d,b=%d\n",a,b);
system("pause");
}
Read the rest of this entry