22岁生日

今天是自己22岁生日,一大早上老妈就起来,忙活着给我做手工面。一碗面,一句“生日快乐!”,足以令我感动。Thinks My Mam~~

昨天则是几个朋友一起来给我庆生,自己过生日还要给他们做饭,下午有出去唱K,再就是去打球。一天下来都累的的不行,不过还是玩的很开心。
感谢兄弟朋友们~!

Ubuntu中gcc安装及使用

在Ubuntu中安装gcc和其他一些发行版Linux系统有点不一样。
方法如下:
sudo apt-get install build-essential
安装完后可以执行gcc–version命令来查看版本
gcc--version
gcc (Ubuntu 4.4.3-4ubuntu5) 4.4.3
Copyright (C) 2009 Free Software Foundation, Inc.

我们编译程序就要使用gcc,首先就得熟悉gcc命令的用法,一般掌握几个常用选项就可以了。
一. 常用编译命令选项
假设源程序文件名为test.c。
1. 无选项编译链接
#gcc test.c
//将test.c预处理、汇编、编译并链接形成可执行文件。这里未指定输出文件,默认输出为a.out。

2. 选项 -o
#gcc test.c -o test
//将test.c预处理、汇编、编译并链接形成可执行文件test。-o选项用来指定输出文件的文件名。

3. 选项 -E
#gcc -E test.c -o test.i
//将test.c预处理输出test.i文件。

4. 选项 -S
#gcc -S test.i
//将预处理输出文件test.i汇编成test.s文件。

5. 选项 -c
#gcc -c test.s
//将汇编输出文件test.s编译输出test.o文件。

6. 无选项链接
#gcc test.o -o test
//将编译输出文件test.o链接成最终可执行文件test。

7. 选项-O
#gcc -O1 test.c -o test
//使用编译优化级别1编译程序。级别为1~3,级别越大优化效果越好,但编译时间就会越长。

二. 多个源文件的编译方法
如果有多个源文件,有两种编译方法:
假设有两个源文件为test.c和testfun.c
1. 多个文件一起编译
#gcc testfun.c test.c -o test
//将testfun.c和test.c分别编译后链接成test可执行文件。

2. 分别编译各个源文件,之后对编译后输出的目标文件链接。
#gcc -c testfun.c //将testfun.c编译成testfun.o
#gcc -c test.c //将test.c编译成test.o
#gcc -o testfun.o test.o -o test //将testfun.o和test.o链接成test

以上两种方法相比较,第一中方法编译时需要所有文件重新编译,而第二种方法可以只重新编译修改的文件,未修改的文件不用重新编译。

USACO 1.1.1 Your Ride Is Here

这道题并没有涉及到算法和数据结构的内容,很简单~就这样自己都提交了15次才AC掉,哎~~有些时间没看C了,很多内容都忘了~编程不能三天打鱼二天晒网,需要不断的积累才成成为牛X的人~下面是自己的代码,附加一网友的C++代码,比我写的要简炼多了~
注:这是以前的一篇日志,现在转到这了。

/*
ID: oysterliu
LANG: C
TASK: ride
*/
#include <stdio.h>
#include <string.h>
int main (void)
{ FILE *fin = fopen ("ride.in", "r");
FILE *fout = fopen ("ride.out", "w");
int i;
long sum1=1,sum2=1;
char group[7],comet[7];
fscanf(fin,"%s",comet);
fscanf(fin,"%s",group);
for(i=0;i<6;i++)
if(comet[i]!=0)
sum1*=(comet[i]-64);
else
break;
for(i=0;i<6;i++)
if(group[i]!=0)
sum2*=(group[i]-64);
else
break;
if((sum1 % 47)==(sum2 % 47))
fprintf(fout,"%s\n","GO");
else
fprintf(fout,"%s\n","STAY");
exit (0);}

附:
/*
ID:31440461
PROG:ride
LANG:C++
*/
#include<fstream>
using namespace std;
ifstream fin("ride.in");
ofstream fout("ride.out");
int main()
{
int a[2]={1,1};
char s[7];
for (int i=0;i<=1;i++)
{
fin>>s;
for (int j=0;s[j]!='\0';j++) a[i]*=s[j]-'@';
}
if ((a[0]-a[1])%47)
fout<<"STAY"<<endl;
else
fout<<"GO"<<endl;
return 0;
}

自动IP地址配置

最近总是在生活在实验室和寝室两点之间,整天都背着个本本~来回上网都要手动切换IP地址,很是不方便,~于是今天脑子一热用C++写了个小程序,这下高效多了~配置IP只需一键~到实验室时只需选择实验室选项即可自动配置为我所需要的地址,回来寝室后又可迅速调整过来~最主要的用的就是netsh命令,比如用bat、VBS脚本调用它也可以实现,高级点的就要调用WINAPI函数了~
注:这是以前的一篇日志,现在转到这了。

#include <iostream>
#include <string>
using namespace std;
int menu_select();
void shiy();
void qinshi();
void zidong();
int main(void)
{
for(;;)
{
switch(menu_select())
{
case 1:shiy();break;
case 2:qinshi();break;
case 3:zidong();break;
case 4:break;
case 5:exit(0);
}
}
system("PAUSE");
return 0;
}
int menu_select()
{
int n;
cout<<"--------------自动IP地址配置-------------"<<endl;
cout<<"|\t\t-by Oyster\t\t|"<<endl;
cout<<"|\t\t-2011/3/30\t\t|"<<endl;
cout<<"-----------------------------------------"<<endl;
cout<<"\t1.实验室\n";
cout<<"\t2.寝室\n";
cout<<"\t3.自动获取\n";
cout<<"\t4.临时WLAN\n";
cout<<"\t5.退出\n";
do{
cout<<"\n\t请输入选项(1~5):";
cin>>n;
}while(n<1||n>5);
return n;
}
void shiy()
{
system("CLS");
system("netsh interface ipv4 set address name=\"无线网络连接\" source=static address=1.1.1.189 mask=255.255.255.0 gateway=1.1.1.200");
system("netsh interface ipv4 set dnsservers name=\"无线网络连接\" source=static address=1.1.1.200 register=primary");
cout<<"成功切换为实验室模式...\n";
getchar();
system("CLS");
}
void qinshi()
{
system("CLS");
system("netsh interface ipv4 set address name=\"无线网络连接\" source=static address=115.158.178.69 mask=255.255.255.128 gateway=115.158.178.126");
system("netsh interface ipv4 set dnsservers name=\"无线网络连接\" source=static address=222.21.112.18 register=primary");
cout<<"成功切换为寝室模式...\n";
getchar();
system("CLS");
}
void zidong()
{
system("CLS");
system("netsh interface ipv4 set address name=\"无线网络连接\" source=dhcp");
system("netsh interface ipv4 set dnsservers name=\"无线网络连接\" source=dhcp");
cout<<"成功切换为自动获取模式...\n";
getchar();
system("CLS");
}

Grub2的linux和initrd命令

linux /boot/vmlinuz-XXX root=UUID=XXX
linux 是一个指令,它告诉 grub2 程序:“请使用后面给出的这个内核”,于是名为“/boot/vmlinuz-XXX”的内核将被载入内存,并读取“root=UUID=XXX”这个分区的一些必需的文件。

initrd /boot/initrd.img-XXX
initrd 也是一个指令,意思是:先用名称为“/boot/initrd.img-XXX”的文件,在内存中构造一个“虚拟”的根文件系统,以便于内核检测完硬件信息后载入必需的模块等等。
其实这个 initrd 也可以认为是内核的一部分,只是为了保持 vmlinuz 的简洁而分离出来的,有的内核甚至根本不需要这个东东。

Ubuntu中安装 VMware tools

Ubuntu默认是禁用root权限,所以安装的第一步是获取root权限。具体方法是:
在终端中输入:
sudo -s
回车,输入当前用户密码,就取得了root权限。
当然在命令语句前面加上sudo也可以。

开始安装VMware tool
在VMware虚拟机中启动Ubuntu系统,然后点击VMware虚拟机菜单:VM — Install VMware Tools ,这时会在Ubuntu系统桌面上创建一个光盘的图标,表示已将VMware tool的安装文件已经载入。
然后在终端中输入下面的命令:

1.转至VMware Tools目录
cd /cdrom/

2.复制 VMwareTools-8.1.3-203739.tar.gz 文件到根目录
sudo cp VMwareTools-8.1.3-203739.tar.gz /

3.转至根目录
cd /

4.解压缩tar包
sudo tar vzxf VMwareTools-8.1.3-203739.tar.gz

5.转至vmware-tools-distrib目录
cd vmware-tools-distrib/

6.安装VMware Tools
sudo ./vmware-install.pl
之后只需一路回车,即可完成 Ubuntu安装VMware tools 的安装。

Ubuntu中Rhythmbox 乱码问题解决办法

Ubuntu中Rhythmbox 音乐播放器中显示乱码,网上找了方法,最后确定以下方法很有效。只需在/etc/profile中加入两句字符串即可。方法如下:

sudo gedti /etc/profile

在打开的gedit最后添加两行:
export PATH=$PATH GST_ID3_TAG_ENCODING=GBK:UTF-8:GB18030
export PATH=$PATH GST_ID3V2_TAG_ENCODING=GBK:UTF-8:GB18030

保存文件,注销,重新登录
打开Rhythmbox,清空播放列表,重新载入即可。

Ubuntu中安装微软雅黑字体

我还是比较喜欢微软雅黑字体的,那么下面是Ubuntu中安装微软雅黑字体方法。
1.下载字体

2.复制到对应的位置
cd /usr/share/fonts
sudo mkdir yahei
sudo chmod 755 yahei
cp /下载后文件路径/msyh.ttf /usr/share/fonts/yahei

3.通过命令建立字体缓存
cd /usr/share/fonts/yahei/
sudo mkfontscale
sudo mkfontdir
sudo fc-cache –fv

完成后yahei文件夹中多了两个文件,这就说明你做对了
最后,打开火狐浏览器,在编辑->首选项->内容->默认字体,在这把字体改为雅黑就可以OK了。