背着笔记本,行走于宿舍和实验室之间,每次都要修改ip,一个要设成静态ip,另外一个是动态ip,小小研究了一下,写了两个脚本来做,以后不用点鼠标了,^_^
脚本lab.bat
netsh interface ip set address “LAN” dhcp
netsh interface ip set dns “LAN” dhcp
脚本lab.bat
netsh interface ip set address “LAN” static 59.66.96.123 255.255.254.0 59.66.96.1 1
netsh interface ip set dns “LAN” static 166.111.8.28 primary
netsh interface ip add dns name=”LAN” addr=166.111.8.29 index=2
其中LAN是我的局域网连接的名称。更详细的解释,参考netsh命令的帮助,或者查看“如何在命令行更改ip地址”。
如果对用Python完成这个工作感兴趣,请看“用Python干实事: 自动修改Windows的IP、网关和DNS设置”,呵呵。
每晚,从西门骑车进来后,开始下车步行,一路走回宿舍。落叶树丛和慵懒的灯光,冷冷清清的道路,宁静的冬夜,仿佛时间开始放慢,开始静止。毕业已经不远了,也就几个月时间,一把手数得过来,还有很多需要做的事情。
越来越习惯步行了,步行去实验室,步行去食堂,步行回宿舍。时间飞逝让人窒息,DH中有句台词,大概是 they forget to stop to smell the flowers of the summer……
一帮人去森林公园,很大的森林公园,和其他人走散了,一个人带着所有装备。时间是下午,安静地下着大雨,雨是透明的,空气也是透明的,总之很安静地下着大雨。在一个貌似山村的地方逡巡,不留神遗失了所有的装备,问题是这些装备大都是别人的,应该很昂贵的,于是很郁闷地说:生活好艰难。其实,这是一个梦境,为什么去森林公园呢,我也不知道,现实中只去过共青森林公园,在另一个城市。好,梦境的第一幕,结论是生活好艰难。
第二幕是在住处,我的手机爆炸了,炸了四次,发出四次巨响。每次爆炸后,手机发生变身,依次是透明外壳型、古典笨重型、小矮人型……迅速切断房间电源后,回来检查,发现手机没事,而笔记本被炸坏,屏幕严重变形,一片狼藉……于是想:生活还能再艰难吗?……于是醒了。
这两幕倒是有趣,记录一下,^__^
GNU make 有许多预定义的变量,这些变量具有特殊的含义,可在规则中使用。下表给出了一些主要的
预定义变量,除这些变量外,GNU make 还将所有的环境变量作为自己的预定义变量。
预定义变量????????????????????? 含义
$*????????????? 不包含扩展名的目标文件名称。
$+????????????? 所有的依赖文件,以空格分开,并以出现的先后为序,可能包含重复的依赖文件。
$<????????????? 第一个依赖文件的名称。
$?????????????? 所有的依赖文件,以空格分开,这些依赖文件的修改日期比目标的创建日期晚。
$@????????????? 目标的完整名称。
$^????????????? 所有的依赖文件,以空格分开,不包含重复的依赖文件。
$%????????????? 如果目标是归档成员,则该变量表示目标的归档成员名称。例如,如果目标名称
??????????????? 为 mytarget.so(image.o),则 $@ 为 mytarget.so,而 $% 为 image.o。
AR????????????? 归档维护程序的名称,默认值为 ar。
ARFLAGS???????? 归档维护程序的选项。
AS????????????? 汇编程序的名称,默认值为 as。
ASFLAGS???????? 汇编程序的选项。
CC????????????? C 编译器的名称,默认值为 cc。
CCFLAGS???????? C 编译器的选项。
CPP???????????? C 预编译器的名称,默认值为 $(CC) -E。
CPPFLAGS??????? C 预编译的选项。
CXX???????????? C++ 编译器的名称,默认值为 g++。
CXXFLAGS??????? C++ 编译器的选项。
FC????????????? FORTRAN 编译器的名称,默认值为 f77。
FFLAGS????????? FORTRAN 编译器的选项。
遍历并打印linux的环境变量的代码片段:
//The ENVIRON variable contains the environment
extern char** environ;
int main(){
char** var;
for(var = environ; *var != NULL; ++var){
printf("%s\n", *var);
}
return 0;
}
如果需要读取、设置或清楚环境变量,请分别man这几个:getenv、setenv、unsetenv。
1. 包含getopt.h
2. 定义短选项,比如,ho:v
3. 定义长选项结构,注意最后一项全部设为0
4. 未定义的选项,解析时会返回’?’
5. 含有参数的选项,参数存于全局变量optarg中
6. 非参数选项的起始索引,存于全局变量optind中
示例程序如下:
#include <stdio.h></stdio.h>
#include <getopt.h></getopt.h>
const char* program_name;
void print_usage(FILE* stream, int exit_code){
fprintf(stream, "Usage: %s options [ inputfile ...]n", program_name);
fprintf(stream, " -h –help Display this uage information.n"
" -v –verbose Print verbose message.n"
" -o –output filename Write output to file.n");
exit(exit_code);
}
int main(int argc, char* argv[]){
int next_option;
const char* short_options = "ho:v";
const struct option long_options[] = {
{"help", 0, NULL, ‘h’},
{"output", 1, NULL, ‘o’},
{"verbose", 0, NULL, ‘v’},
{NULL, 0, NULL, 0}
};
const char* output_filename = NULL;
int verbose = 0;
program_name = argv[0];
do{
next_option = getopt_long(argc, argv, short_options, long_options, NULL);
switch(next_option){
case ‘h’:
print_usage(stdout, 0);
case ‘o’:
//the global var optarg contains the specified argument
output_filename = optarg;
break;
case ‘v’:
verbose = 1;
break;
case ‘?’: //if the arg list contains invalid options
print_usage(stderr, 1);
case -1:
break;
default:
abort();
}
}while(next_option != -1);
printf("[option] verbose: %dn", verbose);
printf("[option] output: %sn", output_filename);
if(verbose){
int i;
//the global var optind contains the index of the first nonoption argument
for(i = optind; i<argc;></argc;> printf("Argument: %sn", argv[i]);
}
}
return 0;
}
相应的Makefile:
CFLAGS=-Wall -g
all: getopt
getopt: getopt.o
$(CC) $(CFLAGS) -o $@ $@.o
%.o: %.c
$(CC) $(CFLAGS) -c $+
clean:
rm -f *.o
rm -f getopt
某年某月某日某次聊天,说到北京的气候,我说:I and most of my friends…we hate the climate here, but we love the city!
对于我,北京的气候就一个字:干。刚到北京时,常常嘴唇干裂开来,流出的血被氧化变黑,恐怖的样子。
两年多来,已经适应到临界点内。这一感冒,马上嘴唇又开始干裂了,喝下的水,仿佛倒入沙漠,很快消失的无影无踪。这气候,难道也要适应四五年? ![]()

Recent Comments