| |
十一 05
由于某个软件的兼容性问题,我不得不重新装起Windows98。


标签: Windows, Windows98, 兼容性, 安装, 怀旧, 系统, 虚拟机
十 30
Ubuntu 9.10 终于发布了,今天下载完立刻装了试试。不料装完以后Ubuntu的Grub占据了主MBR,而且无法引导Windows。在网上搜索多种方法,居然都无效。最后漫不经心地以root权限输入了grub-update,一切问题解决,双系统正式引导成功。
Ubuntu 9.10 界面有很大改善

Windows 7 速度有不错提升

标签: Grub, Ubuntu, Windows, 引导, 技术, 操作系统
二 28
Windows Live Writer,这个东西居然能够支持WordPress。发个截图
本篇日志用Windows Live Writer发表。
标签: Windows, Wordpress
二 21
今天在整理资料的时候,突然发现有个文件无法移动,也无法打开,无法复制,甚至居然不能删除,删除时显示如下。

我试着重命名,也不管用,显示“无法读源文件或磁盘”。仔细观察,发现它的名字很奇怪,是
用高斯消元法
解线性方程组.ppt
“法”和“解”之间有个换行。

我只好打开CMD界面,果然,文件名两个字符之间多了一个换行符。我尝试用del命令,也不管用。

之后我找了许多删除工具,连IceSword都用上了,无论哪个工具也删不掉这个奇怪又顽固的东西。上网看了看,似乎许多人也遇到了相同的问题,但却没有什么较好的解决方案,有人说只能格式化了。
仔细思索,想起这个文件是从一个rar压缩包中解压出来的,但是由于时间久远,原压缩包已经不见了。现在我大概明白了无法删除的原因了,Windows把文件中的换行符当作了一个分隔符,于是总是找不到文件了。
既然Windows对付不了,我不妨试试Linux。打开Ubuntu,找到文件,从状态栏中可以清晰的看到中间有个[000A]的东西。

按下Delete键,出现了我所期待的画面,终于可以删掉了!


还是Linux强大啊,不得不佩服。从此件小问题可以看出Windows的严重缺陷,就是承袭DOS的8.3文件格式,虽说有了扩展提高,但还是有大量的残余。例如就是这样的特殊字符问题,也许Windwos设计者根本没有考虑过,而认为检查机制已经够严格了,所以觉得这样的文件不会出现。但是为了兼容其他的系统,Windows的确应该考虑。
标签: Bug, Linux, Ubuntu, Windows, 删除, 文件, 特殊字符, 缺陷, 顽固
十二 01
为了适应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;
} |
不过也是有不少好处的,起码我不能玩游戏了,减少时间的浪费。
标签: Chrome, DDD, Emacs, Firefox, Linux, NOI, Opera, Ubuntu, Vim, Windows, 换行符, 改名, 测试数据, 静态查错
24 queries. 0.535 seconds.
Designed by NattyWP . Images by desEXign.
|
|
Recent Comments