2008年12月20日星期六

欧冠16强抽签结果:蓝黑战红魔

昨天晚上,欧冠16强对阵抽签在欧足联总部瑞士尼翁结束。抽签结果也真如之前人们预料的那样,多是强强对话,众多豪门将展开生死搏斗。
国米被抽到和曼联对决,这不但是两支豪门之间的对决,更是狂人穆里尼奥和爵爷弗格森之间的对决。早在5年前,穆里尼奥还在波尔图执教,就曾击败过曼联,爆出了当年最大的冷门,而且冷酷到底,最终捧起了冠军奖杯。现在穆帅执掌豪门蓝黑军团,虽然在联赛赛场上所向披靡,攻城略地,但在欧冠赛场上一直成绩不佳,对国米来说,遇上曼联算是比较倒霉吧!可是穆里尼奥毕竟是狂人,在他执教切尔西期间,就曾多次击败过曼联,而且狂人对淘汰赛很有心得,相信他定会给蓝黑带来新的气质。我一直在这样设想:国米在欧冠赛场上面的表现,总是差强人意,这是因为他们中了"魔咒"。如果他们能击败曼联,也就打破了这个"魔咒",那么冠军就指日可待了!国米是有这个实力的,而且眼下还有冬季转会,相信莫拉蒂不会没有动作的。
再总揽整个对阵表,众多豪门死拼,反而给另外一些球队留下了机会,如马竞,潜水艇之类的。说不定这个赛季的冠军杯又会爆出惊天大冷门!不管怎么说,比赛精彩、刺激、够心跳才会让我们球迷更加享受、更加畅快,期待明年2月25和3月11的欧冠盛宴!

附上对阵表:

国米 VS 曼联
尤文 VS 切尔西
皇马 VS 利物浦
巴萨 VS 里昂
罗马 VS 阿森纳
马竞 VS 波尔图
比利亚雷亚尔 VS 帕纳辛纳科斯
拜仁 VS 里斯本竞技

--
Be yourself.

2008年12月14日星期日

第234次西班牙国家德比

刚看完本轮西甲巴萨和皇马的比赛录像,巴萨2-0战胜皇马。
虽然结果没有什么意外的,但比赛过程和想象中大不一样。巴萨最近势头正猛,先灭了塞维利亚,再重挫瓦伦西亚,实在令人觉得恐怖!皇马却是另外一个样子,最近两场球都输掉了,而且多名主力缺阵,最近又换了主帅,这次的德比,有些打折的意思,呵呵,最近圣诞了,打折多了。开个玩笑。但是德比就是德比,气氛完全不一样,能明显感觉到场上节奏比平常快些,而且球员更加兴奋,拼抢对抗动作都比较大。巴萨毫无疑问地占据着场上的主动,控球率达到了70%以上,真是恐怖!可是换了主帅的皇马也像是换了一支队伍,场上的防守明显比前几场好得多,特别是两个中卫卡拉瓦罗和梅策尔德,表现相当好,不然巴萨可不止进两个球。巴萨这边嘛,梅西依然是那个梅西,开场活动就非常频繁,制造了几次好机会,但是皇马的中场可不怎么干净,斯内德,加戈,德伦特,轮番踩踏Messi的踝关节,我看得都疼....真是佩服Messi,这么被人侵犯还能保持冷静,还能继续突破,不怕受伤,真是足够敬业。好在后面裁判主持了公道,黄牌警告了皇马球员,起到了保护了Messi的作用。这场比赛让我觉得奇怪的就是皇马中场的防守,防线几乎退到了禁区前沿,场上普约尔就多次从后场拿球直接带到皇马禁区前沿组织进攻!可惜普约尔组织进攻能力有限,否则皇马麻烦就大了。可能这也是皇马新主帅的战术安排,他们是想打防守反击,能守一场平局也很不错了。上半场德伦特就获得了一次绝佳的单刀机会,可是他没有把握住,输给了巴尔德斯。
进球到了比赛的最后十分钟才出现,本来巴萨有过一个点球的绝好机会,可惜Eto'o太过激动,那个点球质量太差,成就了卡西扑出点球的壮举,不过Eto'o也毕竟是Eto'o,后面他抓住了机会。83'左右一次角球的机会,他接过普约尔的头球摆渡,用一个很不规范的大腿停球的动作将皮球停进了皇马的大门。落后的皇马大举压上,后方空虚,一次防守反击的机会,亨利助攻Messi,后者用左脚踢出非常漂亮的勺子,2-0!Messi终于用进球回报了那几位重点“问候”他的皇马球员!
恭喜巴萨,当然也希望皇马能迅速复兴,期待下一次德比能更加精彩!

附上技术统计(来自sports.sohu.com):

巴萨 技术名称 皇马
2 进球 0
19 射门次数 6
8 射中目标 3
4 射门偏离 2
0 射中门柱 0
7 射门被挡 1
11 角球 4
13 犯规 17
3 越位 3
589 传球次数 310
80 丢球次数 87
3 黄牌 5
0 红牌 0
64 抢断 57
67% 控球比 33%

2008年12月12日星期五

在Cygwin下面编译gcc

今天编译sqlite3的一个测试程序,明明sqlite的库在/lib目录下,可是gcc总是报ld链接错误,找不到调用的函数符号,最后google了一下gcc用法,加了-Wall参数,并指定库文件就可以了。 网上分析了一下gcc 3.x和4.x的区别,再查看一下Cygwin下面的gcc竟然是3.4版本的,再看看gcc.gnu.org上面,都已经到4.3.2了,怎能不升级?一方面也可以熟悉一下Cygwin的环境。
到gcc的一个镜像站点下载了最新的源码包gcc-4.3.2.tar.gz,在Windows下面可以用winrar解压,一步到位,很是方便。接下来就可以编译了,打开rxvt,进入解压好的源码文件夹,执行
./configure --enable-languages=c,c++
这里我只要求她支持c和c++,所以加了--enable-languages=c,c++选项。不能不说linux世界里面个人定制做得是非常好的。
过程并不顺利,出错了,查看了一下错误,说是需要gmp和mpfr支持,我的Cygwin环境下面没有,再用google搜索gmp和mpfr,分别下了各自的源码,准备编译安装。再看一下mpfr需要gmp支持,所有就只有先编译gmp了。
同样解压并cd进入源码目录,再
./configure
Omg,这次又出错了,原来gmp需要m4支持。我的心一顿,这该不会进入一个无底洞吧?那样可就没完没了。还是先试着安装m4了再说,google,下载源码,解压,再
./configure
这次终于成功了!再
make
make install
没有问题,m4算是安装完成了。接下来继续中断的gmp安装,cd 进入gmp源码目录,继续
./configure
成功,窃喜,继续
make
make install
依然没有任何问题,继续安装mpfr,cd 进入源码目录
./configure
make
make install
都没有问题,总算松了一口气!终于可以再次安装gcc了,进入源码目录,继续
./configure
我看着一行一行闪过的提示,默默祈祷,希望这次能成功。结果还没到三分钟,屏幕停止了闪动,我心里一愣,难道又出现问题了?再仔细查看,并没有找到error,成功了!而且速度真是快!可能与之前运行过configure有关吧。接下来就是编译了,执行
make
花了产不多3个小时,总算成功!
再make install,很快OK,迫不及待地
gcc -v
发现版本并没有变化,再
g++ -v
版本已经变成了4.3.2,难道我configure出错了?再仔细查看了一遍,参数是--enable-languages=c,c++,没问题。真是奇怪了!!!突然灵光一闪,关掉rxvt,再重启rxvt,继续
gcc -v
版本变成了4.3.2。Thank God!终于圆满成功!不过这个比较奇怪的问题就不得而知了,估计与Cygwin下的bash有关吧!

2008年12月11日星期四

在Cygwin下使用rxvt

昨天配置好了Cygwin,发现它自带的Bash运行在Windows的cmd shell下,实在不怎么友好,没有太多Linux下面的感觉,google一下,发现Cygwin下面有一个好东东:rxvt,这是一个比较酷的shell,最重要的是差不多可以百分百的定制!赶紧运行Cygwin的setup.exe,选中rxvt,安装,一切顺利,完成,直接打开cmd,输入rxvt,哈哈,出来了,一个新的shell!可是现在这个默认安装的rxvt可不怎么漂亮,继续google,找到了一个好的配置方法:
在~(Linux主目录)下新建一个.Xdefaults文件,内容如下:

Rxvt*title: Cygwin-Rxvt
Rxvt*geometry: 90x40+10+5
Rxvt*background: #BFDF74
Rxvt*foreground: #0C2E53
Rxvt*scrollBar_right: true
Rxvt*colorBD: 1
Rxvt*font: courier new
Rxvt*blodFont: Courier New
Rxvt*saveLines: 2000
Rxvt.backspacekey: ^?
Rxvt*loginShell: True
Rxvt*cursorColor:#338AE5
!!Rxvt*reverseVideo:True
!! Rxvt*multichar_encoding:gb
!! VIM-like colors
Rxvt*color0: #000000
!Rxvt*color1: #FFFFFF
Rxvt*color1: #911B08
Rxvt*color2: #00A800
Rxvt*color3: #DD0000
Rxvt*color4: #0000A8
Rxvt*color5: #A800A8
Rxvt*color6: #00A8A8
Rxvt*color7: #D8D8D8
Rxvt*color8: #B5613B
Rxvt*color9: #966BEB
Rxvt*color10: #00A800
Rxvt*color11: #FFFF00
Rxvt*color12: #0000A8
Rxvt*color13: #A800A8
Rxvt*color14: #00A8A8
Rxvt*color15: #B5613B

.Xdefaults文件的配置详解见http://milton.bloghome.cn/posts/64536.html
为了让Cygwin默认启动rxvt作为shell,还需要修改Cygwin安装目录下面的Cygwin.bat如下:
@echo off
C:
chdir C:\cygwin\bin
set EDITOR=vi
set VISUAL=vi
set CYGWIN=codepage:oem tty binmode title
rxvt -e bash --login -i
ps:只要配置好了Cygwin 下面bash可以支持中文,上面的配置即可使rxvt支持中文,不需要像网上很多博客提到的要加上-km gb的选项,而且.Xdefaults里面也不需要设置Rxvt*multichar_encoding:gb,我上面的文件中使用!!注释掉了的。
截个图看一下效果:

2008年12月10日星期三

Cygwin-在Windows下面模拟Linux环境

最近看Sqlite和Berkeley DB方面的资料,发现这类开源的软件都是在Linux下面开发的,要编译他们提供的源码,得用Linux才行。我的机器装的是XP,用了差不多半年,实在不想再折腾装一个Linux,突然间想起了Cygwin,据说用它来模拟Linux环境很不错!以前试着装过,可惜没能装成功,因为只有国外的镜像站点,无法连接上。用google搜索了一下,首先映入眼帘的是cygwin.cn,Cygwin的中文镜像站点,链接一下,速度飞快!这次终于可以安装了!下载setup.exe,一路next,安装完成后在、开始菜单里面多了一个Cygwin的条目,里面是Cygwin Bash Shell,点击打开,出来的是一个类似于cmd的console,不过提示符变成了Linux下面的$,哈哈,多么亲切!
来点简单的test,输入ls,gcc -v,g++ -v,ps,看看熟悉的Linux命令在这里表现如何:都可以执行,不过显示中文会出现乱码,恐怕要设置Cygwin的环境,以便让它可以显示中文。Google一下,呵呵,这方面的资料还真多,具体设置如下:

1. 编辑用户home目录下的文件.inputc,去除以下几行的注释:
set meta-flag on
set convert-meta off
set output-meta on
set input-meta on


2 编辑用户home目录下的文件.bash_profile,在文件末尾加上下面几行:
alias ls='ls --color --show-control-chars'
export LC_ALL=zh_CN.GB23122
export LC_CTYPE=zh_CN.GB2312
export LANG=zh_CN.GB2312
export XMODIFIERS="@im=Chinput"3
stty cs8 -istrip
stty pass8
export LESSCHARSET=latin1


再重启Cygwin bash shell,ls一下,中文正常显示,大功告成,以后可以Windows,Linux通吃了!

2008年12月5日星期五

开源嵌入式数据库Berkeley DB和SQLite

最近看数据方面的资料,发现Berkeley DB被引用过很多次,而我尚不知其为何物,自然不能放过它。google一下,相关结果非常的多,看来这个东西应该是相当有名,顺便了解了一下嵌入式数据库的资料,发现这方面还值得研讨一下。下面就把一些有用的资料贴过来,留着以后参考了!

嵌入式数据库概念

嵌入式数据库通常与操作系统和具体应用集成在一起,无须独立运行的数据库引擎,也就是说不像Oracle,SQL Server一样扮演数据库引擎,而是由程序直接调用相应的API去实现对数据的存取操作,它们运行时和调用它们的程序在同一数据空间里。更直白地讲,嵌入式数据库是一种具备了基本数据库特性的数据文件。它们的体积通常非常小,编译后的产品也不过几十KB,在一些移动设备上极具竞争力。

Berkeley DB

Berkeley DB不是关系型的数据库,不能应用标准的SQL语句对数据库操作,对它的操作要调用专用的API实现。这些API形成嵌在程序中的Berkeley DB函数库,通过对他们的调用可以完成对数据的保存、查询、修改和删除等操作。所有与数据库相关的操作都由函数库负责统一完成,这样无论是系统中的多个进程,或者是相同进程中的多个线程,都可以在同一时间调用访问数据库的函数;而底层的数据加锁、事务日志和存储管理等都在Berkeley DB函数库中实现。它们对应用程序来讲是完全透明的。
Berkeley DB源代码有C和Java两种,函数库源代码只有数百KB,却能够用来管理多达256TB的数据。它为许多编程语言提供了实用的API接口,包括C、C++、Java、Perl、Tcl、Python和PHP等。Berkeley DB对任何存入的数据都是按原样直接存储到数据文件中去,无论其是二进制数据还是ASC I I或Unicode等编码的文本。Berkeley DB提供了四种存储数据的模式:Btree、Hash、Queue和Recno。
Berkeley DB原本由美国的sleepycat公司研发,后被Oracle公司收购,现在的完整名字为Oracle Berkeley DB,官方地址为http://www.oracle.com/technology/products/berkeley-db/index.html。它虽然是开源的产品,但对某些条件下的商业性应用,却不是免费的,而且价格颇为昂贵。

SQLite

想比于Berkeley DB,SQLite 就显得更为小巧。而且更为称道的是它完全开放,按其作者的声明来说,SQLite 属于公共财产(The source code for SQLite is in the public domain),任何人都可以使用它,修改它,作为商业用途也可以。SQLite 的源代码是C语言,它的第一个Alpha版本诞生于2000年5月,现在已经是3.6版本,而且还在不断开发中,其主页为http://www.sqlite.org,主页上提供SQLite 的二进制程序和源代码下载,还提相关的文档和基本的支持,维护得相当不错。
SQLite 是关系型的数据库,它支持SQL语言。它的SQL语言很大程度上符合ANSI SQL92标准,支持视图、触发器、事务,支持嵌套SQL。它通过SQL编译器(SQL Complier)来实现SQL语言对数据库进行操作,支持大部分的SQL命令。
SQLite 最大的特点在于其数据类型为无数据类型(typelessness)。这意味着可以保存任何类型的数据到所想要保存的任何表的任何列中,无论这列声明的数据类型是什么。虽然在生成表结构的时候,要声明每个域的数据类型,但SQLite 并不做任何检查。开发人员要靠自己的程序控制输入与读出数据的类型。这里有一个例外,就是当主键为整型值时,如果要插入一个非整型值时会产生异常。
SQLite 只提供了Btree存储数据的模式。对二进制数据,SQLite 不能直接保存,但可以先将二进制的数据转换成ASCII编码,然后再保存。Base64编码机制是最常见的把二进制数据转换成ASCII编码的手段。在Sqlite提供了Base64编码的功能。
SQLite官方也这样描述SQLite: SQLite is not designed to replace Oracle. It is designed to replace fopen().当你程序需要管理大量数据,又不便使用大型数据库时,可以考虑SQLite。


--
Be yourself.