2013年12月30日星期一
2013年11月17日星期日
2013年11月7日星期四
2013年10月22日星期二
Perl 和 Ruby 对比总结 (持续更新)
备注:我这里以 ubuntu 12.04 LTS 做为参考系统
2013年9月11日星期三
Happy with Dreamhost
DreamHost is Turning 16 ! I feel happy with it’s wonderful service. I hope dreamhost developed better and be greater !
2013年9月7日星期六
html定位:scrollLeft,scrollWidth,clientWidth,offsetWidth 介绍
今天打算在一个页面上添加一个图片的跑马灯特效。看了一些网上的代码,发现自己对于 scrollLeft 和 scrollWidth 等相关概念有些模糊,于是就从别处转来这样一篇文章。最主要的是有完整的附图讲解。
2013年8月21日星期三
ubuntu 安装 php curl 扩展
sudo /etc/init.d/apache2 restart
2013年8月15日星期四
2013年7月25日星期四
perl 程序 pp 打包问题
1. 开发测试机子是 64位的系统, 打完包后到 32 位上会无法运行.(因为不太清楚 pp 内部的编译流程,查了些资料还是没有头绪)
2. 开发测试机上 glibc 库的版本比较高, 在一些 glibc 库版本低的机器上,会报找不到 glibc
上述问题,后续跟进,目前暂时先使用妥协的办法解决,在 32位,低版本 glibc 库的测试机上进行打包.
2013年7月23日星期二
Perl 中的 typeglob 理解
2013年7月22日星期一
ubuntu 13.04 xrdp 远程桌面连接问题
1. vnc 远程连接.在 windows 7 上面安装 vnc client 客户端, 然后启用 ubuntu 桌面共享(远程桌面), 在 win 7 上面通过 vnc 连接 ubuntu.
2. xrdp 远程连接. 不需要在 windows 上安装任何客户端, 直接采用 windows 自带的远程桌面连接程序就可以. 在 ubuntu 上面需要安装 xrdp 服务.
2013年7月13日星期六
搭建 Spdy SSL Proxy (三)
2013年7月12日星期五
搭建 Spdy SSL Proxy (二)
2013年7月11日星期四
搭建 Spdy SSL Proxy (一)
转发代理和反向代理
2013年6月20日星期四
perl 核心模块统计
2013年6月18日星期二
中文 CPAN 文档
2013年5月30日星期四
网络层点到点, 传输层端到端
2013年5月29日星期三
ubuntu update-rc.d 和 chkconfig 命令
2013年5月16日星期四
ubuntu vps 安装和设置
1. 初始化安装后的设置
基于 ubuntu-12.04 32bit minimal, 使用 root 登陆到 vps 后, 新建用户:
adduser demo
根据提示创建用户和密码。下面将新建的这个用户添加到 sudo 用户组:
usermod -aG sudo demo
更新系统并安装 vim
apt-get update
apt-get upgrade
apt-get install vim
接下修改 sshd 的端口和登陆账号限制, 首先修改 /etc/ssh/sshd_config 文件
vim /etc/ssh/sshd_config
Port 65536
PermitRootLogin no
修改 ssh 端口为 65536, 不允许 root 登陆,最后再添加如下一行到配置文件的最后
AllowUsers demo
设置仅允许 demo 账号登陆
2. 安装 lemp 环境(linux nginx mysql php) 首先安装 mysql-server
apt-get install mysql-server
因为默认安装的 mysql-server 比较占用内存,对于小内存的 vps 来说,需要进行一些优化,具体的可以参见 小内存 vps mysql 优化 这篇文章,在这里我再重复一下
cp /etc/mysql/my.cnf /etc/mysql/my.cnf.`date +%s`
find /usr/share/doc/mysql* -name my-small.cnf -exec cp {} /etc/mysql/my.cnf \;
sed -i 's/\[mysqld\]/&\nuser = mysql\n/' /etc/mysql/my.cnf
然后再修改 /etc/mysql/my.cnf 文件, 在 [mysqld] 下添加以下两行
innodb=OFF
default-storage-engine=MyISAM
然后重启mysql
/etc/init.d/mysql restart
现在再下,经过以上几步的优化,vps 内存的占用大概只有 30m 左右,接下来安装 nginx 和php
apt-get install nginx
service nginx start
apt-get install php5-fpm
然后修改 /etc/php5/fpm/php.ini 文件
cgi.fix_pathinfo=0
然后重启 php5-fpm
service php5-fpm restart
然后开始配置 nginx 使其支持 php5-fpm, 首先备份一下default 配置文件
cp /etc/nginx/sites-available/default /etc/nginx/sites-available/default.bak
将 default 配置文件中的下面这段的注释给取消掉
location ~ \.php$ { fastcgi_split_path_info ^(.+\.php)(/.+)$; # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini # With php5-cgi alone: # fastcgi_pass 127.0.0.1:9000; # With php5-fpm: fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; include fastcgi_params; }并将 server {} 段里面的 index 中添加
index.php
然后修改 /etc/php5/fpm/pool.d/www.conf 文件,将其中的
listen = 127.0.0.1:9000
修改为
listen = /var/run/php5-fpm.sock
然后重启 php5-fpm service php5-fpm restart
接下安装 phpmyadmin
apt-get install phpmyadmin
并根据提示填写 mysql 的 root 密码, 注意,因为要使用nginx ,所以在 webserver 选择这里不要选择.
安装完成后 ln -s /usr/share/phpmyadmin/ /usr/share/nginx/www
, 这样就可以通过 ip/phpmyadmin 的方式来访问 phpmyadmin 了, 在这里可能会有个报错说
The mysqli extension is missing
, 解决办法是修改 /etc/php5/fpm/php.ini 文件,添加 extension=mysqli.so
然后重启 php5-fpm 和nginx 就可以了最后打算再说一下 ftp ,设置为 限定指定的用户可以登录的方法
userlist_enable=YES //用户清单功能开启 userlist_deny=NO //把用户清单设为接受用户清单 userlist_file=/etc/vsftpd.user_list //用户清单文件为/etc/vsftpd.user_list 因为第二个语句把文件/etc/vsftpd.user_list设为接受用户清单,那么,文件里 面的用户名都能登录,不在文件里的用户不能登录。 从这里可以看出userlist_deny语句起了开关的作用,可把用户清单文件设为拒绝或是接受
2013年5月15日星期三
小内存 vps mysql 优化 (ubuntu)
手里有个 512m 的vps ,安装的是 ubuntu 12.04; 使用 tasksel 安装 lamp 应用后,默认的内存占用大概在 350m 左右。 我以为是因为 apache 的原因,就打算使用 lemp ( linux + nginx + php-fpm + mysql ),手动安装 mysql-server: apt-get install mysql-server 后发现内存占用竟然也达到了 300m, 看来问题主要在 mysql-server 上。所以开始查找优化的方案。
首先参照 http://wiki.ubuntu.org.cn/Vps 上的教程对 mysql 进行优化
cp /etc/mysql/my.cnf /etc/mysql/my.cnf.`date +%s` find /usr/share/doc/mysql* -name my-small.cnf -exec cp {} /etc/mysql/my.cnf \; sed -i 's/\[mysqld\]/&\nuser = mysql\n/' /etc/mysql/my.cnf
然后重启 mysql-server
/etc/init.d/mysql restart
然后再看内存占用,发现比之前少了一些,但是并不是很明显。
因为我只是安装 wordpress, 永不倒 innodb ,所以需要再进行如下优化
编辑 /etc/mysql/my.cnf
在[mysqld] 下添加两行
innodb=OFF
default-storage-engine=MyISAM
然后重启 mysql
/etc/init.d/mysql restart
再看内存占用情况,wonderful !只有 30多m 了!
2013年4月22日星期一
perl dump 数据的几种方式
1: #!/usr/bin/perl
2: use warnings;
3: use strict;
4: use Data::Dump qw(dump);
5: use Data::Dumper;
6: use Smart::Comments;
7: use YAML;
8:
9: my @a = (1, [2, 3], {4 => 5});
我这里要对数组 @a 进行 dump 以方便调试和查看其内容。
从我 use 模块也可以看出来我要使用的几种方法:
(1)首先尝试 Data::Dump 的 dump 方法
1: dump(@a);
1: (1, [2, 3], { 4 => 5 })
(2)尝试 Data::Dumper 的 Dumper
1: print Dumper(@a);
1: $VAR1 = 1;
2: $VAR2 = [
3: 2,
4: 3
5: ];
6: $VAR3 = {
7: '4' => 5
8: };
(3) 尝试 Smart::Comments 的 ###
1: ### @a;
其对应的输出为:
1: ### @a: [
2: ### 1,
3: ### [
4: ### 2,
5: ### 3
6: ### ],
7: ### {
8: ### '4' => 5
9: ### }
10: ### ]
(4) 尝试 YAML 里面的 Dump 函数
1: print YAML::Dump(@a);
其对应的输出为:
1: --- 1
2: ---
3: - 2
4: - 3
5: ---
6: 4: 5
(5) 最后尝试一下 print 函数
1: print "@a";
1: 1 ARRAY(0x1acf998) HASH(0x1aece20)
综述:以上几种方法,可以看到各有个的不同,也有侧重点,比如 Data:Dump 几乎是按照代码里面的数据结构输出了; YAML::Dump 是以 yaml 格式输出, 而 print 方法最简单,但是却无法打印内嵌的哈希元素,智能打印其引用的内存地址,这当然不是我们想要的。 Smart::Commnets 的输出很适合进行调试。 所以根据自己的需要各取所需了。 我这里只是列出了 5中方法,参考下面的这篇可以看到更多种方法的对比。
Dumping data in Perl
http://oylenshpeegul.typepad.com/blog/2012/01/dumping-data-in-perl.html2013年3月25日星期一
linux没有扩展名的概念
.a为后缀的文件,是由目标文件构成的档案库文件;
.C,.cc或.cxx 为后缀的文件,是C++源代码文件;
.h为后缀的文件,是程序所包含的头文件;
.i 为后缀的文件,是已经预处理过的C源代码文件;
.ii为后缀的文件,是已经预处理过的C++源代码文件;
.m为后缀的文件,是Objective-C源代码文件;
.o为后缀的文件,是编译后的目标文件;
.s为后缀的文件,是汇编语言源代码文件;
.S为后缀的文件,是经过预编译的汇编语言源代码文件。
2013年3月24日星期日
owncloud 私有云平台 (1): 编译 windows client
最近因为工作需要,接触了 owncloud 私有云平台,感觉真的很不错; 最特别的是其 app 扩展功能, 任何人都可以为依据这个私有云平台开发插件和应用, 目前这个平台已经可以集成 email , rss 等相关应用, 我认为以后可能还会集成 blog 或者 微博等相关应用,这样这款应该就可以真正的成为个人应用云平台。
下面转入正题,owncloud 有 windows、linux、android 和 ios 的客户端, 这里主要说一下 owncloud windows client 的编译过程。
1. 首先是编译环境,基于 opensuse 12.1 x64 版本,因为要在 linux 上编译 windows 程序,因此需要构建交叉编译环境。 构建这交叉编译环境是个力气活,因为要添加各种源,还有各种依赖要去解决和安装,所以花的时间比较长。 这里可以参考一下官方的文档 和 这篇文档。(在这里我建议在虚拟机里面安装 opensuse 并构建交叉编译环境,这样就可以将安装好的编译环境导出备份,以做后用。)
2. 编译过程。 只要交叉编译环境搭建好之后,剩下的就比较顺利了。
<code>
# cd ~
# mkdir owncloud-client
# cd owncloud-client
# git clone git://git.csync.org/users/freitag/csync.git ocsync
# git clone git://github.com/owncloud/mirall.git
# mkdir ocsync-build
# mkdir mirall-build
# cd ocsync
# git checkout dav
# cd ocsync-build
# mingw32-cmake -DCMAKE_BUILD_TYPE="Debug" ../ocsync
# mingw32-make
# cd ../mirall-build
# cmake -DCMAKE_BUILD_TYPE="Debug" ../mirall \
-DCSYNC_BUILD_PATH=/home/speed/owncloud-client/ocsync-build \
-DCSYNC_INCLUDE_PATH=/home/speed/owncloud-client/ocsync/src \
-DCMAKE_TOOLCHAIN_FILE=../mirall/admin/win/Toolchain-mingw32-openSUSE.cmake
# mingw32-make
# sudo mingw32-make package
</code>
3. 最后看到 owncloud-1.2.2-setup.exe generated 这个字样就可以了,说明 windows 客户端编译完成了。
参考文章:owncloud 官方文档: https://github.com/owncloud/mirall/blob/master/doc/building.rst
另外一篇文档 : https://gist.github.com/Noxwizard/4011094
定制自己的 linux 发行版
首先援引一条官方新闻
"日前工信部软件与集成电路促进中心正式宣布与 Canonical 达成协议,双方未来将合力打造专为中国市场而设的 Ubuntu 麒麟(Ubuntu Kylin)操作系统基准架构,为中国的硬件、软件开发者提供参考。据悉在四月的时候基于 Ubuntu 13.04(Raring Ringtail)的版本就会上线,其中会加入具有中国特色的农历、输入法、音乐服务等,未来百度地图、交通资讯、淘宝购物、照片编辑、WPS 等功能也均会被整合到系统之中。" ( 以上文字来自 瘾科技 Engadget )
看了这条新闻之后还是有些欣慰,毕竟光明正大的和开源社区合作要比银河麒麟涉嫌抄袭 FreeBSD 要好。 好吧转入正题吧,说一下定制自己的 Ubuntu 发行版。
为什么要定制呢,可能每个人的原因都不一样,比如说我很不喜欢 Ubuntu 的 unity,系统经常动不动就报错。 如果你只是想换其他的桌面环境的话,你可以直接到 Ubuntu 官方下载包含不同桌面环境的光盘镜像,目前我知道的有, kubuntu(KED),xubuntu( xfce), lubuntu (lxde),其他的还有很多, 如果你不满足以上官方给出的镜像, 你还可以尝试一下定制自己的 Ubuntu 发行版。 链接给出: http://code.google.com/p/ubuntu-builder/ 也就是 Ubuntu build 。 不过这里还是要吐槽一下, 这个和 http://susestudio.com 相比还是逊色不少。 如果你对 suse 或者 opensuse 感兴趣的话, 可以尝试一下 susestudio.com , 功能真的很赞。
2013年3月23日星期六
linux 终端下漂亮的字体
安装方法很简单: sudo apt-get install ttf-droid
瞬间感觉棒及了! mark 一下
2013年3月8日星期五
搭建 ipv6 测试环境 (一)
因为最近要做了一个 ipv6 的 cdn 加速项目,所以开始着手准备 ipv6 相关的测试环境,从网上搜出来不少相关的文章:有一篇介绍是通过 DynamipsGUI 加 vmware 来搭建ipv6 测试网络; 照着做了下,发现比较复杂,仅仅是 DynamipsGUI 的设置就比较麻烦; 后来看到老外的一篇文章,在 he.net 申请 ipv6 隧道,会获得一个 /64 的 ipv6 子网, 但因为 he.net 隧道要就客户端这边的 endpoint 要有独立的 ip 才行, 所以我就绕了个弯子; 在自己的美国的 vps ( 有独立的 ipv4 地址 ) 建立了一个 ipv6 隧道,然后再搭建给予 TAP openvpn 服务器,并安装 radvd 服务进行 ipv6 地址的路由; 这样的话,我处于内网的电脑,通过 openvpn 连接到我的 vps 上面,组建一个网络;这样,我处于内网的 电脑就可以获得公网 ipv6 地址了。 这个方案总体满足了测试的需求,并且可以从公网访问。 但是这个方案也有很多的不足,首先就是 openvpn 协议收到 gfw 的影响,很难连的上,第二就是网络延迟比较大,不适合进行测试。 对于 openvpn 协议受到干扰的问题,有好几种方法,整体思路就是修改报文的指纹,使得 gfw 无法认出 openvpn 协议,所以就无法干扰了。 但是对于网络的高延迟这块,就没有办法解决了。 后来因为项目搁浅的原因,我也去忙其他的了。
今天因为这个项目又有点消息了,我就又从网上查了一些资料,其中看到 https://wiki.ubuntu.com/IPv6 ubuntu 的关于 ipv6 的相关文档。 有看了一篇 ibm 的一篇关于搭建 ipv6 测试环境的文章 http://www.ibm.com/developerworks/cn/linux/l-cn-ipv6env/ ; 我就尝试了在我的 vmware 局域网中的一台 Ubuntu 服务器上 安装 radvd 服务,并配置了 ipv6 子网; 我发现处于局域网内的其他设备默认就配置好了 ipv6 地址了。 通过测试,发现完全满足自己的 ipv6 需求。
下面简单总结一下安装和设置的步骤:
1. 开启 ipv6 的转发功能, 修改 /etc/sysctl.conf 文件,开启 ipv6 的转发功能 ( 去掉对 net.ipv6.conf.all.forwarding=1 的注释),并 sudo sysctl �p 使生效。
2. 安装 radvd 服务 (基于 Ubuntu 12.04): sudo apt-get install radvd
3. 配置 ipv6 静态 ip地址; 在 /etc/network/interfaces 中添加下面配置
iface eth1 inet6 static
address 2002:9ba:b4e:6::1
netmask 64
4. 编辑 /etc/radvd.conf 文件
interface eth1
{
AdvSendAdvert on;
prefix 2002:9ba:b4e:6::/64
{
AdvOnLink on;
AdvAutonomous on;
};
};
5. 重启 radvd 服务, /etc/init.d/radvd restart
现在看下你局域网里的其他设备是不是已经设置好了 ipv6 的地址了
2013年3月5日星期二
ubuntu 下 vim 插件汇总
转眼就3月了,春天要来了! 距离上篇博客又是半个多月了。最近打算搞一下 php ;工欲善其事,必先利其器, 所以要搞定下 ide ,这里我还是用 vim 。
Vim 有很多的插件,选择合适的插件,并来个完美的vim 配置文件很重要的。 首先默认 ubuntu 并没有安装 vim ,所以要先把 vim 安装上。祭出 Apt 超级牛力命令 sudo apt-get install vim ;
安装完后,推荐一款 Ubuntu 上的 vim 插件管理工具, vim-addon-manager 可以很方便的管理现在已经安装的插件; 安装完 vim-addon-manager 后在安装 vim-scripts , 里面包含一些常用的 vim 脚本和插件。
除此之外, http://www.vim.org/scripts/ 这里有任何你需要的 vim 插件和脚本; 这里 make 一下, 通过 http://www.vim.org/scripts/ 直接下载并解压安装的 vim 插件; 在完成安装前需要下面的这个步骤:
在 console 里面 打开 vim ; 然后执行以下命令 ":helptags ~/.vim/doc/"
这样就可以在 vim 的 help 里面查到手工安装的 插件的帮助文件了;
最后备注几个常用或者不错的 vim 插件; ctags 不是 vim 的插件,但属于使用 vim 必装的软件,ubuntu 下可以用 apt 直接安装; taglist 非常不错; NERD_commenter 和 NERD_tree 也是非常的不错的插件;剩下的一些是和具体代码相关的插件, 比如 a.vim 和 c.vim 以及 zencoding 和 phpcomplete 和 php-doc
时间有限,这里就是简单的罗列一下,mark
2013年2月19日星期二
转载:虚拟化之QEMU与KVM
最近工作要搞下 kvm ,但是对于 QEMU 和 KVM 的关系有点搞不清;但是看了下面这篇文章后就明白了。转载自:http://blog.chinaunix.net/uid-23769728-id-3256677.html 版权归原作者所有。
QEMU是个完全独立的虚拟环境,因为KVM的出现,使得某些同学(包括我自己)对QEMU和KVM之间的关系不是很清楚。QEMU本身可以不依赖于KVM,但是如果有 KVM的存在并且硬件(处理器)支持比如Intel VT功能,那么QEMU在对处理器虚拟化这一块可以利用KVM提供的功能来提升性能。这篇博文侧重点在QEMU这块,前期主要是考察一下其使用,以及和KVM之关系,后续的博文会涉及到两者间的一些实现机制。
QEMU目前最新的版本是1.1.0 ( http://www.qemu.org), download到本地后,比如放到/home/dennis/workspace/Linux下是qemu-1.1.0-1.tar.bz2, 解压之后得到一个qemu-1.1.0的目录,为了实验的目的,我不想让它替换掉我系统中已经安装的qemu工具集合(bin tools set),所以我在/home/dennis /workspace/Linux下面重新建立了一个目录,比如qemu-bin-dbg. 先进入到/home/dennis/workspace/Linux/qemu-1.10目录下,然后依次执行:
1)./configure --prefix=/home/dennis/workspace/Linux/qemu-bin-dbg --enable-debug
这一步需要说明的是,我实验用的环境是ubuntu 12.04, 内核版本是我自己更新的3.4.3, intel i3处理器,在我实际操作过程中出现了以下的错误:
Error: zlib check failed
Make sure to have the zlib libs and headers installed.
----------------------------------------------------------
google了一下,这个错误很容易解决:
apt-get install zlib1g-dev
apt-get install libglib2.0-dev
2) make
3) make install
然后我们到/home/dennis/workspace/Linux/qemu-bin-dbg目录下,会发现QEMU的工具集都放在了其中的bin目 录下,其中会有qemu-i386和qemu-system-i386,前者只是对处理器的模拟(指令),后者则模拟一个基于i386的PC. 如果没有KVM的支持,比如rmmod kvm_intel,然后再运行qemu-system-i386,那么就会出现这样的提示信息:
Could not access KVM kernel module: No such file or directory
failed to initialize KVM: No such file or directory
Back to tcg accelerator.
因为前面我大体浏览过KVM的某些代码,KVM内核模块会生成一个"/dev /kvm"设备文件供用户空间程序使用,上面的提示信息就是因为QEMU在初始化阶段因为无法找到该"/dev/kvm"文件,因此认为当前系统没有提供 对KVM的支持,因而QEMU回退到所谓的tcg accelerator模式,这从另一个角度说明,独立的QEMU虚拟化方案并不一定需要KVM提供支持。
我的理解是KVM模块的存在可 以视为QEMU对i386处理器模拟的一种accelerator,如同GPU对3D的hardware acceleration一样(在没有GPU存在的情况下,软件也可以实现某些3D的功能,不过性能显然要慢多了,比如mesa).所以即便在 kvm_intel.ko不存在的情况下,QEMU也可以完成对一个pc的虚拟化。
KVM是Kernel-based Virtual Machine,从存在形式看,是两个内核模块kvm.ko和kvm_intel.ko(对AMD处理器来说,就是kvm_amd.ko),这两个模块用 来实现CPU的虚拟化,如果要让用户在KVM上完成一个虚拟机相关的操作,显然需要用户空间的东西,同时还包括IO虚拟化,所以KVM的解决方案借鉴了 QEMU的东西并做了一定的修改,形成了自己的KVM虚拟机工具集和IO虚拟化的支持,也就是所谓的qumu-kvm.
所以总结下来 是:QEMU是个独立的虚拟化解决方案,从这个角度它并不依赖KVM。 而KVM是另一套虚拟化解决方案,不过因为这个方案实际上只实现了内核中对处理器(Intel VT, AMD SVM)虚拟化特性的支持,换言之,它缺乏设备虚拟化以及相应的用户空间管理虚拟机的工具,所以它借用了QEMU的代码并加以精简,连同KVM一起构成了 另一个独立的虚拟化解决方案,不妨称之为:KVM+QEMU. 在我看来,KVM在用户空间的工具实际上是QEMU虚拟机管理工具的一个子集(KVM使用的QEMU代码可以在http://www.linux-kvm.org/page/Code上 下载):KVM用户空间虚拟机管理工具有kvm, kvm-img, kvm-nbd ,kvm-ok 和kvm_stat,实际上kvm就是一个指向qemu-system-x86_64的符号链接,kvm-img则是指向qemu-img的符号链接,至 少我的系统中就是如此。从适用的范围来讲, QEMU虚拟化方案除了支持x86架构外,还支持其他很多架构,这从上文中/home/dennis/workspace/Linux/qemu- bin-dbg/bin目录下的文件名就可以看出来,比如qemu-system-m68k,qemu-system-mips64, qemu-system-ppc64, qemu-system-arm等等。但是目前提到KVM,一般指x86上基于Intel VT和AMD SVM的解决方案,虽然目前将KVM移植到ARM, PPC的工作正在进行中。
当然由于redhat已经开始支持KVM,它认为KVM+QEMU'的方案中用户空间虚拟机管理工具不太好使,或者通用性不强(可以参考2011年10月份在南京大学举办的中国内核开发者大会上,来自redhat从事libvirt工作的资深专家 Daniel Veillard当天演讲的ppt文档:http://v.csdn.hudong.com/linuxkernal2011/page2.html),所以redhat想下一盘很大很大的棋,于是它搞了一个libvirt出来,一个用来管理虚拟机的API库,不只针对KVM,也可以管理Xen等方案下的虚拟机。关于libvirt,这是后话了,我会在后续的博文中予以讨论。
综上:QEMU虚拟化(模拟器)解决方案并不依赖KVM,而KVM虚拟化方案则一定要依赖QEMU(至少目前是),即便redhat开发了libvirt,但后者可以简单认为是一个虚拟机管理工具,libvirt依然需要用户空间的QEMU来和KVM交互。
2013年1月31日星期四
affect与effect的区别
因为对于 affect 和 effect 用法的模糊,今天特地总结一下:
effect 是名词,"影响",搭配短语:have an effect on sth.=have an influence on sth.对・・有影响
affect 是动词,"影响",直接跟宾语,affect sth 对・・・有影响,且通常指不利的影响。
eg, Sandstorms sometimes affect Bejing.
Watching TV for a long time will have a bad effect on your eyes.
・ Effected v. 产生;造成;招致(effect的过去分词); adj. 实现了的;受影响的
・ Affected vt. 影响;假装;使…感动(affect的过去式和过去分词);adj. 受到影响的;做作的;假装的
・ Effective adj. 有效的,起作用的;实际的,实在的;给人深刻印象
・ Affective adj. 情感的;表达感情的
Effection n. 影响;结果
・ Affection n. 喜爱,感情;影响;感染
Effectual adj. 奏效的;会应验的;有法律效力的
Affectual affectual action 情感行动
2013年1月27日星期日
U盘式生存法则: 自带信息 不装系统 随时插拔 自由协作
从网上看了罗振宇的一期脱口秀, 题目是"夹缝中的 80后" ; 比照自身也想了很多,很喜欢他总结的 U盘式生存法则: 自带信息 不装系统 随时插拔 自由协作。 感觉他这期提到的这些挺对的; 就是小个体的专业自由主义, u 盘式生存方式; 也许这真的是未来这个社会的发展趋势了。要坚决的脱离这个体制; 尤其是一个庞大和腐朽的体制;让市场为自己定价; 做一个自由的手艺人。 专一,专业,自由,不断学习的,一个市场中的节点。
视频地址:
http://v.youku.com/v_show/id_XNTA2NDQ4MzIw.html
2013年1月24日星期四
脂肪肝注意 18 条措施
下面介绍的18条措施,在脂肪肝的自疗自养中是非常重要的:
1、绝对禁酒。
2、选用去脂牛奶或酸奶。
3、每天吃的鸡蛋黄不超过2个。
4、忌用动物油;植物油的总量也不超过20克。
5、不吃动物内脏(即下水、下货)、鸡皮、肥肉及鱼籽、蟹黄。
6、忌食煎炸食品。
7、不吃巧克力。
8、常吃少油的豆制品和面筋。
9、每天食用新鲜绿色蔬菜500克。
10、吃水果后要减少主食的食量,日吃一个苹果,就应该减少主食50克。
11、山药、白薯、芋头土豆等,要与主食米、面粉调换吃,总量应限制。
12、每天摄入的盐量以5--6克为限。
13、葱、蒜,姜、辣椒等"四辣"可吃,但不宜多食。
14、经常吃鱼、虾等海产品。
15、降脂的食品有:燕麦、小米等粗粮,黑芝麻、黑木耳、海带、发莱以及菜花等绿 色新鲜蔬菜。
16、晚饭应少吃,临睡前切忌加餐。
17、每天用山楂30克、草决明子15克,加水1000毫升代茶饮。
18、如果肪肝引起肝功能异常,或者转氨酶升高时,应在医生指导下服用降脂药、降酶药物和鱼油类保健品,但不宜过多服用。
2013年1月22日星期二
centos 5 添加第三方源(EPEL RPMForge)
一般的配置是这样的:
[base], [addons], [updates], [extras] … priority=1
[CentOSplus],[contrib] … priority=2
其他第三的软件源为:priority=N (推荐N>10)
# CentOS-Base.repo
#
# The mirror system uses the connecting IP address of the client and the
# update status of each mirror to pick mirrors that are updated to and
# geographically close to the client. You should use this for CentOS updates
# unless you are manually picking other mirrors.
#
# If the mirrorlist= does not work for you, as a fall back you can try the
# remarked out baseurl= line instead.
#
#[base]
name=CentOS-$releasever – Base
mirrorlist=http://mirrorlist.CentOS.org/?release=$releasever&arch=$basearch&repo=os
#baseurl=http://mirror.CentOS.org/CentOS/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
priority=1#released updates
[updates]
name=CentOS-$releasever – Updates
mirrorlist=http://mirrorlist.CentOS.org/?release=$releasever&arch=$basearch&repo=updates
#baseurl=http://mirror.CentOS.org/CentOS/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
priority=1#packages used/produced in the build but not released
[addons]
name=CentOS-$releasever – Addons
mirrorlist=http://mirrorlist.CentOS.org/?release=$releasever&arch=$basearch&repo=addons
#baseurl=http://mirror.CentOS.org/CentOS/$releasever/addons/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
priority=1#additional packages that may be useful
[extras]
name=CentOS-$releasever – Extras
mirrorlist=http://mirrorlist.CentOS.org/?release=$releasever&arch=$basearch&repo=extras
#baseurl=http://mirror.CentOS.org/CentOS/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
priority=1#additional packages that extend functionality of existing packages
[CentOSplus]
name=CentOS-$releasever – Plus
mirrorlist=http://mirrorlist.CentOS.org/?release=$releasever&arch=$basearch&repo=CentOSplus
#baseurl=http://mirror.CentOS.org/CentOS/$releasever/CentOSplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
priority=2#contrib – packages by CentOS Users
[contrib]
name=CentOS-$releasever – Contrib
mirrorlist=http://mirrorlist.CentOS.org/?release=$releasever&arch=$basearch&repo=contrib
#baseurl=http://mirror.CentOS.org/CentOS/$releasever/contrib/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
priority=2
[root@CentOS ~]# rpm -ivh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm
[root@CentOS ~]# rpm -ivh http://download.fedora.redhat.com/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm
[epel]
name=Extra Packages for Enterprise Linux 5 – $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/5/$basearch
mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=epel-5&arch=$basearch
failovermethod=priority
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL
priority=11[epel-debuginfo]
name=Extra Packages for Enterprise Linux 5 – $basearch – Debug
#baseurl=http://download.fedoraproject.org/pub/epel/5/$basearch/debug
mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=epel-debug-5&arch=$basearch
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL
gpgcheck=1[epel-source]
name=Extra Packages for Enterprise Linux 5 – $basearch – Source
#baseurl=http://download.fedoraproject.org/pub/epel/5/SRPMS
mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=epel-source-5&arch=$basearch
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL
gpgcheck=1
[root@CentOS ~]# wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el5.rf.i386.rpm
[root@CentOS ~]# wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm
[root@CentOS ~]# rpm –import http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt
[root@CentOS ~]# rpm -K rpmforge-release-0.5.1-1.el5.rf.*.rpm
[root@CentOS ~]# rpm -i rpmforge-release-0.5.1-1.el5.rf.*.rpm
### Name: RPMforge RPM Repository for Red Hat Enterprise 5 – dag
### URL: http://rpmforge.net/
[rpmforge]
name = Red Hat Enterprise $releasever – RPMforge.net – dag
baseurl = http://apt.sw.be/redhat/el5/en/$basearch/rpmforge
mirrorlist = http://apt.sw.be/redhat/el5/en/mirrors-rpmforge
#mirrorlist = file:///etc/yum.repos.d/mirrors-rpmforge
enabled = 1
protect = 0
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rpmforge-dag
gpgcheck = 1
priority=12
[root@CentOS ~]# rpm -Uvh http://download1.rpmfusion.org/free/el/updates/testing/5/i386/rpmfusion-free-release-5-0.1.noarch.rpm[root@CentOS ~]# rpm -Uvh http://download1.rpmfusion.org/nonfree/el/updates/testing/5/i386/rpmfusion-nonfree-release-5-0.1.noarch.rpm
…
XX packages excluded due to repository priority protections