燕之庐网站建设 - 优质网站设计公司

产业新闻

2010/03/08

谈Android等开放平台的应用软件生态

Tags:

移动互联网是大家公认的即将到来的巨大金矿,从手机的硬体厂商,再到运营商,再到开发 者,参与的企业和个人的数量和规模非常大,好不热闹。生态初步形成,不过这里参与者的主体角色却非常复杂,这不仅让个人开发者有些困惑,而且产业链领导者 也如此的困惑。作为一个新生的巨大市场,从产业的上下流都还完全形成一个良性的发展。我们都知道产业结构的是否合理化将影响到这个链条上的每一个参与者, 平台系统的提供者中移动研究院、播思软件,广大的应用软件开发者包括有实力的企业,众多的个人开发者。

Android应用产业链

在移动互联网的软件产业中,由于软件开发基本条件限制,自然地就将软件开发分为封闭式与开放式两个派别。与之对应,目前全球手机应用市场主要可 以分为两大阵营,一是以IPhone手机为典型代表的手机厂家主导封闭式阵营,一是以谷歌和众多中国企业(华人)参与手机开放联盟(OHA)阵营。 Android和OPhone是OHA重要推动平台。本文暂时不去讨论目前这连个平台的市场前景和他们的优劣势,既然是开放式手机联盟那么对于刚刚诞生的 手机应用市场来讲,开放式产业链如何与封闭手机等竞争,开放式的软件产业链又将是如何,Android应用又如何才能发挥自身的长 处,如何让这个Android应用产业链的每个参与方都能获得收益?

笔者受高焕堂先生指点,解开我心中对开放式软件产业发展的谜团,因此拙见引玉,共话Android平台应用软件产业链的机会和 优势。Android应用开发的一个重要环节是基于开放式平台基础上框架开发,须知开放式联盟需结合平台开源优势,开放式应用的技术中心有2个,开放平台 和框架。

Android 应用软件的基因

Android 应 用框架作为Android 应用产业链的内生源头,移动软件的基因设计者——框架发布者将会对现有开放式的移动软件带来巨大的冲击,目前来看,多数的框架发布者仍然以大企业为主,但 是企业自身并未意识到,框架对这个生态的重要性。对于框架的概念,举简单例,将Android平台作为一个框架,而其中Media、Location等服 务层则是子框架,而框架发布者则是针对更多的服务领域,发布相应的框架应用,以供开发者使用。

Android 应用框架的开发是开放式移动软件的发展的必然。有一点是肯定的,作为开放式的Android平台,应用框架开发并不是将原有的软件产业链截断,而作为框架 发布者本身,又必须思考自身的发展与生存,Android框架在移动软件产业链的结构 决定了优秀的Android框架发布者在起始阶段,需要具备大量的人力物力等。框架发布者如何谋求发展与生存,在Android 开发的大框架下,众多的android框架发布者既保持技术先进性,也保持技术市场的领先,无疑是一个挑战。

笔者认为框架发布者需务实2件事:卖导弹和卖茶叶蛋,卖导弹需要产业的多方支持,同时调用众多的资源,项目风险大。但是卖茶叶蛋启动快,并可以 做到产品投资回报率快,同时也会带来框架收益。通过茶叶蛋来尝试框架在软件应用市场的生存能力。

北京网站建设公司

产业新闻

Google 云计算的灾难恢复技术

Tags:

灾难恢复是个令人不快的话题,但必须面对。拿一个公司的邮件系统为例,有的公司会对过 去的邮件进行备份,备份的频率或许是每日或每周,灾难发生后,将备份的数据恢复到系统,尽管可以恢复一些,但这种周期性的备份只保证已备份的数据的安全, 最近一次备份到灾难发生之间的数据却是彻底没有了。

在大一些的公司,或许会使用 SAN 进行备份,SAN 很贵,而且,当整个数据中心出现故障的时候,即使 SAN 也不保险。因此,那些真正有实力的大公司,会在异地创建一个新的数据中心,并创建一套完整的异地备份。

然而天常不如人意,有时候,即使身处两个位置的两个数据中心也会同时挂掉,因此,更有实力的公司会将两个数据中心的物理距离尽可能拉大(越远意 味着成本越高),然而又带来管理上的问题,两套 SAN 之间要传输 TB 级的数据,需要非常高的带宽,不管怎样,这些都与成本有关,冗余越多,成本越高。

灾难备份与恢复有两个指标,一个是 RPO (Recovery Point Objective), 一个是 RTO (Recovery Time Objective),也就是数据丢失率和恢复间隔。对传统的 SAN 或异地备份,这两个指标基本取决于成本,指标越好,成本越高,Google 在这方面,使用的是同步复制技术,同步复制使 RPO 接近于 0, 而 RTO 接近实时,也就是说,灾难发生时,Google 所有在线应用的数据丢失基本为 0,恢复间隔接近实时,使用户完全觉察不到(可是,Gmail 的几次宕机是怎么回事 – 译者)。数据同步复制技术应用到所有 Google 在线应用(包括 Gmail,Google Calendar,Google Docs,以及Google Sites 等),用户需要保存的任何数据,都同步存储到 Google 的两个不同地理位置的数据中心,当任何一个数据中心发生故障,系统会立即切换到另一个数据中心。

同步复制式备份的运营成本相当高,在商业存储领域,25GB 的同步存储服务可能需要 150 到超过 500 美元每年,Google 通过以下方法,保证这些高成本的技术可以免费提供给用户使用:

Google 的一个数据中心支撑着数百万用户,因此,每个用户分摊的成本相对低很多。

Google 的备用数据中心并不是在灾难发生时才启用,而是一直在使用中,Google 始终在这些数据中心之间进行平衡,保证没有资源浪费。

Google 的数据中心之间有他们自己的高度连接网络,保证数据快速传送。

云计算的优势是让先进的技术迅速普及,Google 的云计算,云存储等应用,让那些以往只有超级公司才有能力享受的服务变得十分普通,而且成本极低。

北京网站建设公司

产业新闻

2010Ubuntu开发者峰会将在布鲁塞尔举行

Tags:

5月10日至14日Ubuntu开发者峰会(UDS)将在布鲁塞尔举行。本次 Ubuntu开发者峰会将会给出下一个版本(Ubuntu 10.10)的开发时间表。Jono Bacon(Ubuntu社区经理)宣布,布鲁塞尔Dolce La Hulpe Hotel and Resort商务酒店度假村在5月10日-14日。将会有众多赞助商和大量Ubuntu的支持者一起参加这个会议。

Canonical公司赞助部分机票和食宿,请于3月26日前申请。Jono Bacon说,UDS的不是一个严格意义上的会议,而是一个大家参与讨论的聚会,其目的是希望这个聚会能够确定Ubuntu的下一个版本需要在那些方面作 出更多工作的聚会,希望每一个参与者都能在聚会上有所收获。

北京网站建设公司

python

2010/03/06

用python爬虫抓站的一些技巧总结

Tags:

1.最基本的抓站

import urllib2

content = urllib2.urlopen('http://XXXX').read()

2.使用代理服务器

这在某些情况下比较有用,比如IP被封了,或者比如IP访问的次数受到限制等等。
import urllib2

proxy_support = urllib2.ProxyHandler({'http':'http://XX.XX.XX.XX:XXXX'})

opener = urllib2.build_opener(proxy_support, urllib2.HTTPHandler)


urllib2.install_opener(opener)

content = urllib2.urlopen('http://XXXX').read()

3.需要登录的情况

登录的情况比较麻烦我把问题拆分一下:

-

3.1 cookie的处理
import urllib2, cookielib

cookie_support= urllib2.HTTPCookieProcessor(cookielib.CookieJar())

opener = urllib2.build_opener(cookie_support, urllib2.HTTPHandler)

urllib2.install_opener(opener)

content = urllib2.urlopen('http://XXXX').read()

是的没错,如果想同时用代理和cookie,那就加入proxy_support然后operner改为

opener = urllib2.build_opener(proxy_support, cookie_support, urllib2.HTTPHandler)

3.2 表单的处理

登录必要填表,表单怎么填?首先利用工具截取所要填表的内容

比如我一般用firefox+httpfox插件来看看自己到底发送了些什么包

这个我就举个例子好了,以verycd为例,先找到自己发的POST请求,以及POST表单项:

post1

post2

-

可以看到verycd的话需要填username,password,continueURI,fk,login_submit这几项,其中fk是随机生
成的(其实不太随机,看上去像是把epoch时间经过简单的编码生成的),需要从网页获取,也就是说得先访问一次网页,用正则表达式等工具截取返回数据中
的fk项。continueURI顾名思义可以随便写,login_submit是固定的,这从源码可以看出。还有username,password那
就很显然了。

-

好的,有了要填写的数据,我们就要生成postdata
import urllib

postdata=urllib.urlencode({
    

    'username':'XXXXX',
    

    'password':'XXXXX',

    'continueURI':'http://www.verycd.com/',

    'fk':fk,

    'login_submit':'登录'

})

-
然后生成http请求,再发送请求:

req = urllib2.Request(

    url = 'http://secure.verycd.com/signinhttp://www.verycd.com/',

    data = postdata,

    headers = headers


)

#...

-
3.4 反”反盗链”
某些站点有所谓的反盗链设置,其实说穿了很简单,就是检查你发送请求的header里面,referer站点是不是他自己,所以我们只需要像3.3一样, 把headers的referer改成该网站即可,以黑幕著称地cnbeta为例:

#...
headers = {
    'Referer':'http://www.cnbeta.com/articles'
}
#...

headers是一个dict数据结构,你可以放入任何想要的header,来做一些伪装。例如,有些自作聪明的网站总喜欢窥人隐私,别人通过代理 访问,他偏偏要读取header中的X-Forwarded-For来看看人家的真实IP,没话说,那就直接把X-Forwarde-For改了吧,可以 改成随便什么好玩的东东来欺负欺负他,呵呵。
-

3.5 终极绝招
有时候即使做了3.1-3.4,访问还是会被据,那么没办法,老老实实把httpfox中看到的headers全都写上,那一般也就行了。
再不行,那就只能用终极绝招了,selenium直 接控制浏览器来进行访问,只要浏览器可以做到的,那么它也可以做到。类似的还有pamie,watir,等等等等。
-

4.多线程并发抓取
单线程太慢的话,就需要多线程了,这里给个简单的线程池模板
这个程序只是简单地打印了1-10,但是可以看出是并发地。

from threading import Thread


from Queue import Queue


from time import sleep

#q是任务队列


#NUM是并发线程总数


#JOBS是有多少任务

q = Queue()

NUM = 2

JOBS = 10


#具体的处理函数,负责处理单个任务

def do_somthing_using(arguments):
    

    print arguments


#这个是工作进程,负责不断从队列取数据并处理


def working():

    while True:

        arguments = q.get()

        do_somthing_using(arguments)

        sleep(1)

        q.task_done()

#fork NUM个线程等待队列


for i in range(NUM):

    t = Thread(target=working)

    t.setDaemon(True)

    t.start()

#把JOBS排入队列


for i in range(JOBS):

    q.put(i)

#等待所有JOBS完成

q.join()

5.验证码的处理
碰到验证码咋办?这里分两种情况处理:
-
1.google那种验证码,凉拌
-
2.简单的验证码:字符个数有限,只使用了简单的平移或旋转加噪音而没有扭曲的,这种还是有可能可以处理的,一般思路是旋转的转回来,噪音去掉,然后划分 单个字符,划分好了以后再通过特征提取的方法(例如PCA) 降维并生成特征库,然后把验证码和特征库进行比较。这个比较复杂,一篇博文是说不完的,这里就不展开了,具体做法请弄本相关教科书好好研究一下。
-
3.事实上有些验证码还是很弱的,这里就不点名了,反正我通过2的方法提取过准确度非常高的验证码,所以2事实上是可行的。
-
6.总结
基本上我遇到过的所有情况,用以上方法都顺利解决了,不太清楚还有没有其他漏掉的情况,所以本文到这里就完成了,以后要是碰上其他情况,再补充相关方法好 了:)

用python爬虫抓站的一些技巧总结

MYSQL

2010/03/05

mysql命令行常用命令

Tags:

mysql命令行常用命令

第一招、mysql服务的启动和停止

  • net stop mysql
  • net start mysql

第二招、登陆mysql

  • mysql -u用户名 -p用户密码
  • mysql -uroot -p, 回车後提示你输入密码,输入12345,然後回车即可进入到mysql中了,mysql的提示符是:

mysql> 注意,如果是连接到另外的机器上,则需要加入一个参数-h机器IP 第三招、增加新用户

  • grant 权限 on 数据库.* to 用户名@登录主机 identified by “密码”
  • 增加一个用户user1密码为password1,让其可以在本机上登录, 并对所有数据库有查询、插入、修改、删除的权限。首先用以root用户连入mysql,然後键入以下命令:grant select,insert,update,delete on *.* to user1@localhost Identified by “password1″;如果希望该用户能够在任何机器上登陆mysql,则将localhost改为”%”。
  • 如果你不想user1有密码,可以再打一个命令将密码去掉。grant select,insert,update,delete on mydb.* to user1@localhost identified by “”;

第四招: 操作数据库 登录到mysql中,然後在mysql的提示符下运行下列命令,每个命令以分号结束。

  • 显示数据库列表。

show databases; 缺省有两个数据库:mysql和test。 mysql库存放着mysql的系统和用户权限信息,我们改密码和新增用户,实际上就是对这个库进行操作。

  • 显示库中的数据表:

use mysql; show tables;

  • 显示数据表的结构:

describe 表名;

  • 建库与删库:

create database 库名; drop database 库名;

  • 建表:

use 库名; create table 表名(字段列表); drop table 表名;

  • 清空表中记录:

delete from 表名;

  • 显示表中的记录:

select * from 表名;

第五招、导出和导入数据

  • 导出数据:

mysqldump –opt test > mysql.test 即将数据库test数据库导出到mysql.test文件,後者是一个文本文件 如:mysqldump -u root -p123456 –databases dbname > mysql.dbname 就是把数据库dbname导出到文件mysql.dbname中。

  • 导入数据:

mysqlimport -u root -p123456 < mysql.dbname。 不用解释了吧。

  • 将文本数据导入数据库:

文本数据的字段数据之间用tab键隔开。 use test; load data local infile “文件名” into table 表名;

SQL常用命令使用方法:

(1) 数据记录筛选:

sql=”select * from 数据表 where 字段名=字段值 order by 字段名 [desc]”

sql=”select * from 数据表 where 字段名 like ‘%字段值%’ order by 字段名 [desc]”

sql=”select top 10 * from 数据表 where 字段名 order by 字段名 [desc]”

sql=”select * from 数据表 where 字段名 in (’值1′,’值2′,’值3′)”

sql=”select * from 数据表 where 字段名 between 值1 and 值2″

(2) 更新数据记录:

sql=”update 数据表 set 字段名=字段值 where 条件表达式”

sql=”update 数据表 set 字段1=值1,字段2=值2 …… 字段n=值n where 条件表达式”

(3) 删除数据记录:

sql=”delete from 数据表 where 条件表达式”

sql=”delete from 数据表” (将数据表所有记录删除)

(4) 添加数据记录:

sql=”insert into 数据表 (字段1,字段2,字段3 …) valuess (值1,值2,值3 …)”

sql=”insert into 目标数据表 select * from 源数据表” (把源数据表的记录添加到目标数据表)

(5) 数据记录统计函数:

AVG(字段名) 得出一个表格栏平均值 COUNT(*|字段名) 对数据行数的统计或对某一栏有值的数据行数统计 MAX(字段名) 取得一个表格栏最大的值 MIN(字段名) 取得一个表格栏最小的值 SUM(字段名) 把数据栏的值相加

引用以上函数的方法:

sql=”select sum(字段名) as 别名 from 数据表 where 条件表达式” set rs=conn.excute(sql)

用 rs(”别名”) 获取统的计值,其它函数运用同上。

(6) 数据表的建立和删除:

CREATE TABLE 数据表名称(字段1 类型1(长度),字段2 类型2(长度) …… )

例:CREATE TABLE tab01(name varchar(50),datetime default now())

DROP TABLE 数据表名称 (永久性删除一个数据表)

[编辑]

MySQL批 处理命令

批处理是一种非交互式运行mysql程序的方法,如同您在mysql中使用的命令一样,你仍然将使用这些命令。

为了实现批处理,您重定向一个文件到mysql程序中,首先我们需要一个文本文件,这个文本文件包含有与我们在mysql中输入的命令相同 的文本。 比如我们要插入一些数据,使用包含下面文本的文件(文件名为New_Data.sql,当然我们也可以取名为New_Data.txt及任何其他的合法名 字,并不一定要以後缀sql结尾):

  • USE Meet_A_Geek;
  • INSERT INTO Customers (Customer_ID, Last_Name) VALUES(NULL, “Block”);
  • INSERT INTO Customers (Customer_ID, Last_Name) VALUES(NULL, “Newton”);
  • INSERT INTO Customers (Customer_ID, Last_Name) VALUES(NULL, “Simmons”);

注意上面的这些句子的语法都必须是正确的,并且每个句子以分号结束。 上面的USE命令选择数据库,INSERT命令插入数据。

下面我们要把上面的文件导入到数据库中,导入之前要确认数据库已经在运行,即是mysqld进程(或者说服务,Windows NT下面称为”服务“,unix下面为”进程“)已经在运行。 然後运行下面的命令:

  • bin/mysql –p < /home/mark/New_Data.sql

接着按提示输入密码,如果上面的文件中的语句没有错误,那么这些数据就被导入到了数据库中。

命令行中使用LOAD DATA INFILE 从文件中导入数据到数据库: 现在您可能会问自己,”究竟为什么我要输入所有的这些SQL语句到文件中,然後通过程序运行它们呢?” 这样看起来好像需要大量的工作。很好,你这样想很可能就对了。但是假如你有从所有这些命令中产生的log记录呢?现在这样就很棒,嗯,大多数数据库都会自 动产生数据库中的事件记录的log。而大部分log都包含有用过的原始的SQL命令。因此,如果您不能从您现在的数据库中导出数据到新的 mysql数据库中使用,那么您可以使用log和mysql的批处理特性,来快速且方便地导入您地数据。当然,这样就省去了打字的麻烦。

LOAD DATA INFILE 这是我们要介绍的最後一个导入数据到MySQL数据库中的方法。这个命令与mysqlimport非常相似,但这个方法可以在mysql命令行中使用。也 就是说您可以在所有使用API的程序中使用这个命令。使用这种方法,您就可以在应用程序中导入您想要导入的数据。

使用这个命令之前,mysqld进程(服务)必须已经在运行。 启动mysql命令行:

  • bin/mysql –p

按提示输入密码,成功进入mysql命令行之後,输入下面的命令:

  • USE Meet_A_Geek;
  • LOAD DATA INFILE “/home/mark/data.sql” INTO TABLE Orders;

简单的讲,这样将会把文件data.sql中的内容导入到表Orders中,如mysqlimport工具一样,这个命令也有一些可以选择的参数。 比如您需要把自己的电脑上的数据导入到远程的数据库服务器中,您可以使用下面的命令:

  • LOAD DATA LOCAL INFILE “C:\MyDocs\SQL.txt” INTO TABLE Orders;

上面的LOCAL参数表示文件是本地的文件,服务器是您所登陆的服务器。 这样就省去了使用ftp来上传文件到服务器,MySQL替你完成了. 您也可以设置插入语句的优先级,如果您要把它标记为低优先级(LOW_PRIORITY),那么MySQL将会等到没有其他人读这个表的时候,才把插入数 据。可以使用如下的命令:

  • LOAD DATA LOW_PRIORITY INFILE “/home/mark/data.sql” INTO TABLE Orders;

您也可以指定是否在插入数据的时候,取代或者忽略文件与数据表中重复的键值。替代重复的键值的语法:

  • LOAD DATA LOW_PRIORITY INFILE “/home/mark/data.sql” REPLACE INTO TABLE Orders;

上面的句子看起来有点笨拙,但却把关键字放在了让您的剖析器可以理解的地方。

下面的一对选项描述了文件的记录格式,这些选项也是在mysqlimport工具中可以用的。他们在这里看起来有点不同。首先,要用到 FIELDS关键字,如果用到这个关键字,MySQL剖析器希望看到至少有下面的一个选项:

  • TERMINATED BY character
  • ENCLOSED BY character
  • ESCAPED BY character

这些关键字与它们的参数跟mysqlimport中的用法是一样的. The TERMINATED BY 描述字段的分隔符,默认情况下是tab字符(\t) ENCLOSED BY描述的是字段的括起字符。比方以引号括起每一个字段。 ESCAPED BY 描述的转义字符。默认的是反些杠(backslash:\ ). 下面仍然使用前面的mysqlimport命令的例子,用LOAD DATA INFILE语句把同样的文件导入到数据库中:

  • LOAD DATA INFILE “/home/mark/Orders.txt” REPLACE INTO TABLE Orders FIELDS TERMINATED BY ‘,’ ENCLOSED BY ‘”‘;

LOAD DATA INFILE语句中有一个mysqlimport工具中没有特点:

     LOAD DATA INFILE 可以按指定的列把文件导入到数据库中。

当我们要把数据的一部分内容导入的时候,这个特点就很重要。比方说,我们要从Access数据库升级到MySQL数据库的时候,需要加入一些栏目 (列/字段/field)到MySQL数据库中,以适应一些额外的需要。 这个时候,我们的Access数据库中的数据仍然是可用的,但是因为这些数据的栏目(field)与MySQL中的不再匹配,因此而无法再使用 mysqlimport工具。尽管如此,我们仍然可以使用LOAD DATA INFILE,下面的例子显示了如何向指定的栏目(field)中导入数据:

  • LOAD DATA INFILE “/home/Order.txt” INTO TABLE Orders(Order_Number, Order_Date, Customer_ID);

如您所见,我们可以指定需要的栏目(fields)。这些指定的字段依然是以括号括起,由逗号分隔的,如果您遗漏了其中任何一个,MySQL将会提 醒您^_^
ubuntu 下的 mysql 命令行方式。把 blue.sql 下载下来,运行

 (sudo) mysql
 create database XXXX;
 use XXXX;
 source blue.sql

北京网站建设公司

产业新闻

微软入股赛迪子公司 外资曲线进入中国传媒业

Tags:

海外资本正在通过入股等方式曲线缓慢进入中国传媒市场。国内传媒行业上市公司赛迪传媒最新公布的公告显示,美国微软公司旗下的Microsoft CIHC出资,收购赛迪传媒控股子公司北京赛迪经纬文化传播有 限公司(下称赛迪经纬)3%股权,赛迪经纬变更为中外合资经营企业的相关政府审批手续已经完成。

成为中外合资经营企业之后,赛迪经纬注册资本为一亿元人民币,营业范围为组织除演出外的文化艺术交流活 动,以及经营IT领域媒体《中国计算机报》、《数字时代》和《和谐之旅》投资管理咨询,以及知识产权咨询服务,企业形 象策划,技术领域的开发、转让、培训、服务等业务。

赛迪传媒于2008年11月12日发布的公告称,赛迪经纬计划将注册资本由1000万元人民币增加到9700万元人民币,具体增资计划为:公司以赛迪经纬 资本公积转增认缴出资额人民币8265万元,北京赛迪新宇投资顾问有限公司以赛迪经纬资本公积转增认缴出资额人民币435万元,Microsoft CIHC以美元现汇认缴出资150万美元。今日此次注资完成,注册资本调高至一亿元,但公告信息并未显示微软是否由于中美汇率变化追加投资。

此前赛迪经纬的股本结构是赛迪传媒持股95%,赛迪新宇持股5%,其中赛迪新宇为赛迪传媒持股比例为90%的控股子公司。增资完成后赛迪传媒将持有赛迪经 纬92.15%股权、赛迪新宇持有赛迪经纬4.85%股权、Microsoft CIHC持有赛迪经纬3%股权。

资料显示,赛迪传媒系A股上市公司,旗下控股公司赛迪经纬拥有《中国计算机报》、《数字时代》及《和谐之旅》等刊物的投资管理咨询等业务。

Microsoft CIHC系微软公司在美国注册的全资子公司,其主营业务为对外投资,尤其是针对中国市场的战略性投资。Microsoft CIHC独立于微软(中国)有限公司。

中国境内新闻媒体领域尚未对海外资本实施完整的放开,但在影视领域已经有部分放开。2005年之后,国内传媒机构与外资的接触多数为影视内容的合拍合作, 部分外资则以广告经营代理的方式变相获得个别电视台的内容经营合作。

北京网站建设公司

产业新闻

Linux内核十个版本性能对比

Tags:

从2008年1月底至今,Linux Kernel系统内核已经先后升级了十次,版本号也从2.6.24上升到 2.6.33,并且下个版本2.6.34也已进入开 发阶段。今天我们就看看过去两年内这十个版本在性 能上有何差异。

测试平 台是一套工作站系 统,硬件配置包括AMD Opteron 2384 2.7GHz四核心处理器(“上海”)、泰安Thunder n3600B S2927主板(NVIDIA nForce 3600PRO芯片组)、4GB DDR2 ECC Reg内存、希捷ST3300622AS 300GB硬盘、ATI FirePro V8700显卡软 件上采用Ubuntu 8.04.4 LTS 64位操作系统,组件有GNOME 2.22.3、X.Org Server 1.4.0.90、GCC 4.2.4、EXT3。

Linux Kernel 2.6.24-2.6.33的每个版本都从Ubuntu PPA源上获取,而且均为64位版本。除了替换内核之外,系统其他设置均保持默认。

Apache Benchmark(静态网页服务):2.6.33成绩大幅提升,但事实最早的2.6.24版反而才是好的,之后八个版本都差得很多,最新版终于基本正常 了。

PostgreSQL pgbench(每秒钟TPC-B交易数):2.6.30的成绩比上个版本骤然提升了多达770%,但之后2.6.32迅速下滑,最新的2.6.33却又 完全不如2.6.30之前的六个版本了。

7-Zip Compression(文件压缩速度):不同版本有所波动,最新的2.6.33成了赢家,这才是我们最希望看到的。

LZMA Compression(256MB文件压缩):十个版本几乎没什么区别。

Bork File Encrypter(文件加密时间):经过一番起伏之后,2.6.33又回到了当初2.6.24的水平,而之前一个版本2.6.32还是最快的。

PostMark(磁盘性能):和PostgreSQL测试结果惊人地相似,2.6.30-2.6.32三个版本性能异常突出,最新版里却又消 失了。

Dbench(单个客户):PostgreSQL、PostMark的故事再次上演,而且2.6.33的性能成了最差的,落后幅度也很大。

Dbench(12个客户):运行多个Dbench客户端之后情况又不同泐,2.6.30-2.6.32同样有明显改进,2.6.33则呈现井 喷之势,不过也可能和系统内存缓存有关。

FFmpeg(AVI视频转NTSC VCD):所有版本都差不多。

C-Ray光线追踪引擎:完全没区别。

Bullet物理引擎:只有第一个版本2.6.24稍差一些,之后一直非常稳定。

NAS Parallel Benchmark:美国航空航天局(NASA)用于评估并行超级计算机性能的测试程序,所有版本都没什么不同。

小结:

经过两年多的发展,Linux Kernel系统内核在稳定性和功能上都有了翻天覆地的变化,而这里我们只是考察了它们在部分情况下的性能,特别是和工作站应用相关的。

总的来说,十个版本在性能上基本保持稳定,但也有一些例外,最明显的就是PostgreSQL、PostMark的起起伏伏,很可能和EXT3 文件系统已经廉颇老矣有关,不过EXT4系统目前的主要工作仍是保证稳定性和可靠性,性能也有待提升。

新版内核也有不少时候表现更好一些,尤其是Apache Web服务 器性能,终于解决了困扰将近两年的性能问题。7-Zip压缩性能也不错。

北京网站建设公司

产业新闻

Web 设计中的 5 个最具争议性的话题

Tags:

Web 空前繁荣的今天,有关 Web 设计中的各种观点很多会成为话题,有的很快达成一致,有的则一直争议下去,本文讲述 Web 设计中的 5 大经典争议,这些争议从它们诞生的那天起,就被正反两方争得不亦乐乎。

争议之一:链接是否应该在新窗口打开

正 方:

外部链接应该始终从新窗口打开,当你浏览一个站点的时候,点击了一个链接,却被带到另外一个站点,你在这个站点的会话也因此丢失,这 实在令人恼怒。因此,站点内的链接可以在现有窗口打开,而站点外链接则应该在新窗口打开。

反方:

作为 Web 设计师,我们不该控制用户的行为,一个链接是 否在新窗口打开,应该是用户自己的选择。剥夺用户的控制权,在用户的桌面上打开一堆窗口或标签,这才是真正让人恼怒的事。如果用户想打开新窗口,他们可以 自己选择,而对非熟练用户,新窗口让他们丢失了后退按钮更让他们无所适从。

和事佬:

总体来讲,应该避免使用新窗口打开链 接,但在某些场合,如打开购物车中的帮助链接,打开一个非 html 文 件(如 PDF 文件),应该使用新窗口。为了提高易用性,最好在需要打开新窗口的地方,用一个小图标提示一下。

争 议之二:在链接中应该使用诸如Click here 一类的笼统词汇吗?

正 方:

事实证明,Click here 比描述性的链接更容易获得点击,因此应该使用该词汇以获得更好的点击率。

反方:

Click here 一类的链接损害 Web 的易用性,用户在点击之前,只能通过周围的上下文关系猜测这个链接是做什么的。Quality guidelines建议,任何 链接文字都应该明确描述该链接的目的。

和事佬:

为了提高站点的易用性,可访问性和 SEO 性能,应该始终使用描述性链接。很有趣听到有人说 Click here 比描述性链接可以获得更多点击率,不知道那些点击进来的人是不是看两眼就离开了。

争议之三:使用该继续使用 b 和 i 两个标签?

正方:

如果你仅仅想把一个词设为粗体,而这个词并没有强调表示重要 的意思,应该使用 b 标签,不该用 strong 标签,读屏软 件对 b 和i 标签有不同的发音,而 HTML5 规范中仍包含这两个标签。

反方:

这 两个标签的作用是将文字设置为粗体或斜体,从语义角度看,任何装饰性的东西都应该使用 CSS 实现,如果要强调一个词语,应该使用 strong 或 em 标签。

和事佬:

b 和 i 标签不应该用于修饰文字的式样,这些视觉的修饰应该交由 CSS 处理。如果要强调一个词汇或语句,应该使用 strong 或 em 标签。只有在那些没有别的标签可用的场合,才可以考虑 b 和 i 。

争议之四:站点 Logo 是否因出现在 h1 标签中?


正 方:

Logo 不应包围在标题标签中,标题标签应该包含这个页面的标题或描述性内容,这是 SEO 的最佳方式,否则,站点中的每个页的标题岂不是全变成公司名字了?

反方:

一个站点最明显 的标志是它的 Logo, 而 h1 是一个页面最顶级的标题,将 Logo 包围其中很自然,这样,即使没有 CSS 人们也很容易该明白这个页面的结构。

和事佬:

标题标签的作用是描述内容的层级结构,如果 一个站点有一个描述站点内容的标题,应该放在 h1 中,否则,第二级结构或描述性的对象,就是 Logo。

争议之五:是否应该支持 IE6?

正 方:

IE6 现在仍占有10%的市场份额 (在国内更高-译者注),因此,网站毫无疑问应该支持 IE6。世界上仍然有很多公司的系 统仍需使用 IE6 访问,另外,还有很多人根本不知道怎么升级他们的浏览器

反方:

IE6 已经过时,不支持最新的 Web 技 术,它给在线用户带来安全隐患,也是众多 Web 开 发设计师的噩梦。包括 YouTube 在内的大型站点已经停止支持 IE6。你也不例外。

和 事佬:

IE6 毫无疑问在衰退,随着大公司对它的抛弃,它的死亡可能来得比预期还快,是否支持 IE6 要看的具体情况,可以考虑为 IE6 用户提供最基本的页面格式,而不必为它挣扎。

本文来源:http://line25.com/articles/top-5-web-design-debates-that-cause-the-most-riots

北京网站建设公司

开源动态

2010/03/04

Symbian提前完成有史以来最大开源移动工程

Tags:

Symbian协会近日完成了世界 上应用最为广泛的智能手机 平台–Symbian平台的源代码开源发布。Symbian平台迄今已发展了10余年,全世界设备投放数量达到3.3亿,该平台现在已经实现完全开放,平台源代码可供免费使用。从私有 代码到开源代码,这一市场领先平台实现了软 件历史上的最大转变。这一过程已经提前4个月完成,使得从事基于创新和开放的自由移动开发成为可能。www.phpchina.com

无论是为了移动设备还是为了其他完全不同的东西,现在任何个人或组织都可以获取、使用并修改代码以实现任何目的。这项战略性转变为Symbian生态系统提供了更大的开发潜 力,更快上市的能力和免费开发平台的机会。Symbian平台的开放承诺还包括未来计划的完全透明,如发布2011年前(包括2011年)的平台发展蓝图 和规划功能。现在任何人都可以 影响平台发展蓝图并贡献新力量。www.phpchina.com

Symbian协会执行理事Lee Williams指出:”开发社 区现在有能力塑造移动产业的未来,目标就是实现全球范围的快速创新。Symbian协会成立之际,我们制定的目标是在 2010年中之前完成平台的开源发布,但是,凭借我们员工和成员公司的不断努力和卓越奉献,我们提前完成了目标。”www.phpchina.com

IDC分析师John Delaney 说:”为开发者提供独一无二的东西对于智能手机平台来说日益重要,而世界上应用最为广泛的智能手机平台实现开源正好可以满足这一需求。见证行业中这一重大 事件的发生将令人无比激动。”www.phpchina.com

包含Symbian平台开源代码的所有108个模块现在都可以根据Eclipse公共许可协议和其他开源许可协议从Symbian开发者网站 (tiny.symbian.org/open)下载。此外,创建应用程序(Symbian开发者工 具)和移动设备(产品开发工具)完整的开发工具也可供下载。这些开发工具可与最新平台版本Symbian^3兼 容,Symbian^3平台现在已经实现完全开源,并将在今年第一季度成为具备”完善功能”的平台。

网站建设

产业新闻

甲骨文数据集成跻身Gartner领导者象限

Tags:

Gartner公司最新发布的“数据集成工具魔法象 限(Magic Quadrant)”研究报告中,甲骨文位列领导者象限。www.phpchina.com

Gartner在研究报告中写道:“对于将单一用途工具融合到支持一系列数据交付方式的产品来说,数据集成工具市场的领导者处于领先地位。在这个市场 上,领导者拥有显著的市场占有率,而熟练掌握他们工具的技 术人员也为数众多。通过提供新的产品功 能,以及明确数据集成工具可以有效解决的新型业务问题,这些厂商在很大程度上决定了市场趋势。”www.phpchina.com

这份研究报告特别提到:“甲骨文在满足客户的各种数据集成需求方面做得越来越好。”www.phpchina.com

Gartner公司的“魔法象限(Magic Quadrant)”研究报告面向特定细分市场,根据厂商的执行能力以及愿景的完整性来划分厂商所处的象限。www.phpchina.com

关于Oracle数据集成www.phpchina.com

Oracle数据集成(Oracle Data Integration)用于帮助企业在面向服务的架构(SOA)、商务智能以及数据仓库环境中构建、部署和管理以实时数据为中心的架构。这个完全统一的 解决方案包括数据集成的所有要素――实时和批量数据移动、转换、同步、数据质量、数据管理和数据服务,以确保异构和高度可用系统的信息的及时、准确和一致。www.phpchina.com

Oracle数据集成套件是Oracle融合中间件的组件之一,由一套完整的、支持热插拔的、集成的数据管理产品组成,可帮助企业提高绩效和效率。该套 件包括Oracle数据集成器企业版、Oracle BPEL流程管理器、Oracle Hyperion 数据关系管理和Oracle服务总线。甲骨文公司还提供先进的Oracle数据质量和剖析产品,可为开 发和管理联合数据服务提供可信赖的信息和解决方案。www.phpchina.com

Oracle GoldenGate是Oracle数据集成产品中最新增加的产品,是具有实时数据集成和连续可用性的解决方案,使企业能够全天24小时不间断地获得实时 数据,从而优化运营和数据分析环境。Oracle GoldenGate有多种用途,其中包括实时的商务智能、查询卸载、零宕机升级、维护、数据中心合并以及数据分配和高可用性的Active- Active数据库等。www.phpchina.com

甲骨文已经在全球范围内启动了主题为“驱动实时企业创新”的数据集成论坛系列活 动,活动中将介绍Oracle GoldenGate、Oracle数据集成器企业版、Oracle数据质量和Oracle数据剖析产品。这一系列活动将为企业提供与甲骨文数据集成专家 共同探讨最佳实践的机会,从而实现以更低的总体拥有成本提供最快和可扩展性最高的实时数据架构。www.phpchina.com

甲骨文高管引言www.phpchina.com

甲骨文公司Oracle产品开发副总裁Sachin Chawla表示:“如今企业需要完整和灵活的数据集成技术解决方案,以便能够统一来自企业各个不同系统中的数据,并提供及时和可靠的信息。甲骨文提供一 套完整的数据集成产品,这些产品支持异构系统,并与Oracle应用和数据库产品紧密集成,因此拥有很大的优势。甲骨文始终承诺,提供最佳技术解决方案, 以帮助客户快速方便地访问最新和最准确的数据,进而帮助客户优化运营、做出更好的业务决策,此次因数据集成工具的卓越表现而跻身领导者象限再次表明甲骨文 兑现了这一承诺。”

北京网站建设公司