Ubuntu 一周小记

Linux 10 Comments »314 views

为了适应NOI比赛恶劣的操作环境,从上周起我就开始使用Ubuntu,编程用Vim,G++,DDD。不要向我推荐Emacs,我讨厌这东西。尽量减少调试,不要依赖于调试器,要靠自己认真细心,和静态查错。

毕竟Windows用惯了,使用Linux真的有许多不方便的地方,太多了。最显著的问题是输入法,Google拼音输入法为什么没有For Linux版?就连Chrome也没有Linux版,还好Firefox和Opera都是不错的。播放音频和视频支持的格式很少,Real player还不错。

没有批量更名的软件,对付大量的测试数据很麻烦。大小写区分,换行符不同,令人棘手。还好换行符的问题可以用dos2unix命令解决,批量更名就麻烦了,我承认我不会shell编程。

我用C++写了两个方便的工具,测试数据改名程序和测试数据答案文件生成程序。
测试数据改名程序用法 ./ren PROB#.IN prob#.in 1 10
把PROB1.IN … PROB10.IN 改成 prob1.in … prob10.in
代码如下

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
46
47
48
49
#include <iostream>
#include <stdlib.h>
 
using namespace std;
 
int i,S,T;
char Ti[100],To[100];
char *Fi,*Fo;
 
void rm(char *t,char *p,int k)
{
	for (;*t;t++)
	{
		if (*t!='#')
		{
			*p=*t;
			p++;
		}
		else
		{
			sprintf(p,"%d",k);
			while (*p) p++;
		}
	}
	*p=0;
}
 
int main(int argc,char **argv)
{
	int suc;
	Fi=argv[1];
	Fo=argv[2];
	sscanf(argv[3],"%d",&S);
	sscanf(argv[4],"%d",&T);
	printf("\nData Renamer. Author: CmYkRgB123 \nFrom:%s\nTo:%s\nRange:[%d,%d] \n\n",Fi,Fo,S,T);
	for (i=S;i<=T;i++)
	{
		rm(Fi,Ti,i);
		rm(Fo,To,i);
		printf("Rename from %s to %s ...",Ti,To);
		suc=rename(Ti,To);
		if (suc==0)
			printf("Done.\n");
		else
			printf("Failed.\n");
	}
	printf("\n");
	return 0;
}

测试数据答案文件生成程序用法 ./datacreator prob 1 10
根据prob1.in … prob10.in,调用./prob,生成prob1.ans … prob10.ans

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
#include <iostream>
#include <stdlib.h>
 
using namespace std;
 
int main(int argc,char **argv)
{
	int i,S,T;
	char FI[100],FO[100],ti[100],to[100],Run[100];
	char *name;
	name=argv[1];
	sprintf(Run,"./%s",name);
	sscanf(argv[2],"%d",&S);
	sscanf(argv[3],"%d",&T);
	printf("\nData Creator. Author: CmYkRgB123 \nProblem Name:%s\nRange:[%d,%d] \n\n",name,S,T);
	for (i=S;i<=T;i++)
	{
		printf("Creating %s #%d ...",name,i);
		sprintf(FI,"%s%d.in",name,i);
		sprintf(ti,"%s.in",name);
		sprintf(to,"%s.out",name);
		sprintf(FO,"%s%d.ans",name,i);
		rename(FI,ti);
		system(Run);
		rename(ti,FI);
		rename(to,FO);
		printf(" Done.\n");
	}
	printf("\n");
	return 0;
}

不过也是有不少好处的,起码我不能玩游戏了,减少时间的浪费。

标签:, , , , , , , , , , , , ,

还是Firefox执行脚本快

點滴發現 No Comments »89 views

为COGS写了两个插件,IP地理位置查询和简繁转换,都是用Javascript实现的。做好以后分别用IE,Opera,Chrome和Firefox运行了一下。IE很慢,Opera和Chrome要卡一下,Firefox非常流畅,一点也不停顿。有人说Firefox执行脚本最快,果然不是吹的。

Firebug真是太好用了,Javascript调试就靠它了,它还能显示Ajax操作。

IP查询插件的截图,登录后可以使用。http://www.ruvtex.cn/cogs/addons/ipquery/

标签:, , , , , ,
25 queries. 0.524 seconds. Designed by NattyWP .
Images by desEXign.