KVM (Kernel-based Virtual Machine) – Linux Virtualization Open Source project Hiring – IBM

IBM CSTL Linux Virtualization Open Source Developer/Tester

Band: 06 to 09

Conact Point: dihao # cn.ibm.com

Working Location: Beijing

——————————————————————————–

We are hiring open source developer who will work on Kernel-based Virtual Machine (KVM) project within the open source community.

http://www.linux-kvm.org/page/Main_Page

Skills required:

  • OS (kernel & user space, Scheduler, Memory Mgmt, Core VFS, SMP synchronization)
  • Device Driver
  • C programming
  • Virtualization technologies (KVM, VMware, Xen, other hypervisors
  • Established community relationships & reputation
  • Personality that fits with open source community

Skills preferred:

  • Power architecture
  • Windows OS
  • Systems Mgmt
  • Willing to share information and expertise with individuals and teams to enhance effectiveness.
  • Work well in a team environment

Required

  • Bachelor’s Degree
  • English: Fluent

关于视频格式的讨论收集

– 在TLF 上的帖子里讨论的, 收集下来 –

第一个帖子:

今天跟同事讨论了一下, 从技术上讲, 实现应该不是很难。 例如现在的H.264算法里, 本身就是基于一块一块的进行压缩。 同时,我也查到1998年,Compad的一个专利,就是实现在个人电脑上实现分布式视频压缩的专利。 现在有些工具里实现了多线程的压缩,当单核的时候,多线程就变成了时间片的分割压缩。 同理, 把块放大,放在网络中,就是一个基于网络的分布式视频压缩系统。 

不过要说多个小组来做,可能我对视频压制小组的活动不是很了解。 假设这种系统实现,我已经都可以想象的到将来还是有很大的商业价值的。对电影也可能是一次新的尝试。

第二个帖子:

回复  haides 
你说的云计算
moguiyouxia 发表于 2011-1-10 21:07 

云计算只不过是新的名词而已。 所谓的云的基础,分布式存储,本身就是 bt/电驴一样道理。  对大文件进行hash分解,然后存到各个容器里面去。 任何bt或电驴的客户端,实际上还不是从其他人的机器上下载,而我们使用的人,同样不知道是从哪里拷贝而来的。   我的想法就是在这基础上,每个client还有对视频处理功能。     

举个我假设的商业模式:  电影工厂制作拍摄超高清片子, 大概300G容量(将来片子的肯定更大)。  现在他们建立类似PT的网站,开放下载。 而不同的电影院, 视频网站,在线电影提供商可以购买不同清晰度的拷贝。 每家网站有个服务器,下载对应的压制参数和模板, 这些网站肯定面向的客户群也不一样。 例如提供手机视频的,mp4或3GP的,他们下载的压制参数压制一部分之后,互相之间拷贝组合成一部完整的片子。 同理,假设内容分发商面向多种客户,每个客户根据自己播放设备进行点播相应的视频,应该说根本不需要懂任何视频知识,只需要打开播放器观看而已。

第三个帖子:

我又梳理了一下思路。 现在有点清晰了。

如果这样的系统实现,可以分两种模式: 免费和商业。 

免费系统就像我刚开始考虑的那样,有很多相同需要的人组成各种压制小组,最后得到不同的格式。

商业模式上,类似于迅雷看看。 各种客户端上都有各种零碎的视频块,得不到完整的片子。 看的时候支持P2P下载。

要是完美实现上的确还有点遥远,不过闲着没事转转脑筋也算够了。 就到这里吧,这个问题算思考完了,嘿嘿。

关于视频格式的再讨论

本来发在博客上,因为关注少,后来发在HDC论坛里,但是好像也没人理。 我再发到TLF一次,一方面求指正,另外一方面也想引起大家讨论。

压制的片子,可不可以从用户播放设备角度出发,根据视频编码,音频编码和封装格式,追求最好效果的同时,适应最多的播放器材,出品的片子才能更受欢迎。 同时也有个想法: 是不是可以考虑将来能把一个高清原盘视频进行分割成大小适中的几段,在PT中流传。然后根据不同配置,每个压制组成员选在自己输出的格式。 当原盘下载完成后,同时生成某段的压制作品共享,最终根据所有段落的完成度,组成一个完整的视频再发布。  

研究一下有关视频格式的话题

今天想在PS3上看视频,从网上下载了一部WMV格式的社交网络,可是发现只能看图像,而没有声音,发现因为压制的时候,音频使用的DTS,可能PS3不能识别。虽然我从一个游戏主机PT站点上下载的,看来仅仅是支持xbox的,而没有考虑PS3的兼容。 这倒是让我思考了一下现在视频压缩格式的问题。虽然我不太懂这些视频技术,不过从自己的需求从发,看看到底应该什么样的视频格式可以满足我。

  • 一个片子,基本上三要素:  视频 , 音频, 字幕
  • 播放设备,基本上也可以分三大类:  PC系列,  高清播放器, 智能手机系列

我先说说播放设备。 不论是普通PC还是在很多高清论坛流行的HTPC,基本上都能归结为PC这类。 PC系列的特点是软件丰富,功能强大,兼容性好。基本上可以播放任何格式的影片。显示设备可以是显示器,也可能是大屏幕及投影。使用者面比较广,既有初级用户,也有超级发烧友。

高清播放器类,就比较多了。XBOX和PS3我都给归结到这一类里面,包括现在市场可以买到的高清播放器。 这类播放器的特点是不能任意升级,播放格式比较固定,有很大的局限性。但播放效果不错。一般这样的设备,都会配套尺寸较大的高清电视。一般都是高清的发烧友采用。对分辨率要求比较高。

智能手机系列,这是未来的一个方向。归结一下特点,CPU不高,硬件解码能力随着发展,可能会有很大的提高,但和前两类比起来,会有一定的限制。同时存储空间也不是非常大,屏幕也不是很大。这类用户不要求分辨率太高,主要看中的是方便。iphone/ipad,android系列手机都归为这类。

播放器的选择,也就决定了对视频格式的偏好。 (可能我有些地方说的不太对,请指正)

PC: 这类用户往往追求最好的效果,类似BD的片子。视频多采用x264编码,音频最好的效果使用DTS5.1,包含字幕的mkv容器等。视频大小不限,分辨率最好在1080p。

高清播放器: 基本上视频支持 Divx编码为基础,音频一般为mp3格式,容器一般是avi或mp4的。视频大小在2-8GB之间都能接受。分辨率720p以上。

智能移动设备:智能设备播放器可以升级,视频格式是多种的,兼容上一般就是iphone系列和android系列。音频可以是acc或mp3. 容器要求不一定。视频大小一般在1G以下最佳。分辨率根据设备大小不同,能看清就可以。一般满足现在480×800的屏幕和平板的7/10寸屏幕。

所以,我觉得任何一部片子,现在基本上都是蓝光的片源,然后可以根据这三类需求,进行压制发布。应该都会受到欢迎的。

用了Ubuntu之后,发现硬盘上保留的软件越来越少了

今天偶尔下载了两个软件,找到硬盘上的soft目录,惊讶的发现里面居然没有什么东西。以前我的soft目录下面是占硬盘空间最多的,各种操作系统类的软件,各种常用的工具,还有工作中常用的开发类工具。现在发现除了一个vmware的license文件,其他都没有了。方便的ubuntu安装方式,以及现在飞快的网速,让我越来越不愿意使用硬盘来保存东西了。 “云”的日子不远了。

使用WDS方式部署家庭用无线局域网

现在建筑设计的时候,很多设计师会设计一个弱电箱,用来走网线,电话线,数字电视信号等。 非常方便。但是有一个问题,如果使用无线路由器的话,那么这个弱电箱将变成一个大铁笼子,信号衰减非常严重。

要解决这个办法, 第一种选择就是把无线路由器放在外面。我家装修的时候,当时没考虑这么多。入户的网线就只能到弱电箱。这种方式不适合。

第二种选择, 在弱电箱里安装一个路由器,或者把无线路由器的无线信号禁止掉。 然后在用网线引出一个无线AP(无线信号接入点)。这种方式对于我来说是可行的。因为在装修的时候,我把网线布到了所有的屋子里。 不过要是在装修的时候没有拉出一根网线来, 这种方式对于某些人来说就会很痛苦。

第三种方式,可以选择有WDS功能的无线路由器进行桥接。这样就有两个相同的无线信号接入点,可以根据信号最强的一点进行连接。 如果你的房子很大,这种方式非常适合。我就讲一讲这个的安装过程。

我手里有两个无线路由器,分别是D-LINK的 DI-524M的A版和B版, 也就是一个黑,一个白。 这两款路由器都升级到最新的硬件驱动,分别对应 A-106CN, B-201CN. 

由于A版(白色的),在使用WDS模式的时候,不能支持ppoe拨号,所以只能使用黑色的作为主无线路由。

 

下面是主无线路由器的配置界面:

配置无线设置:

  • 无线网络名(ssid): 填写习惯的名称,如dlinkwds
  • 自动信道选择:不勾选 。就是不使用自动选择
  • 无线信道: 选 1 ,6 , 11 都可以。
  • 加密方式和密钥: 根据你自己的需要选择,就像配置单独的无线路由器一样。

主无线路由器的无线配置

 

配置局域网参数:

这个地方没有什么特别改动,和一个无线路由器配置基本一样。

配置主无线路由器的局域网

 

配置WDS开关:

  • 通过 高级 -> 高级无线 -> 启用 wds。 
  • 对等MAC: 填入第二个无线路由器的MAC地址。可以在路由器的背面找到。

打开WDS开关

 

配置好PPPoE链接之后,查看一下系统状态:

我的主路由器中可以看到, 已经通过PPPoE方式获得了ADSL连接,无线信号和局域网参数都已经打开。

系统状态

 

打开一个无线设备,查看无线连接是否正确:

可以看到,无线信号已经连接上,并自动分配了局域网ip.

检验主无线路由器的连接

 

下面我们来配置第二个无线路由器, 使用的是DI-524M A版(白色)

首先配置无线方式 : 

  • 选择 WDS+AP的无线模式:
  • 无线网络名: 填入和主无线路由器一样的名字,如dlinkwds
  • 无线信道:选择和主无线路由器一样的信道,同样禁止自动选择。
  • 无线加密方式和密钥: 也填入和第一个路由器一样的配置信息。
  • 远程AP MAC地址: 填入第一个无线路由器的mac地址。

配置第二个无线路由器

配置局域网参数:

  • LAN连接类型: 使用静态ip地址,并配置一个在主路由器上的地址,网关设定为主路由的网关地址。
  • DHCP服务: 禁止DHCP服务。

配置第二个路由器的局域网参数

查看连接状态:

查看一下第二个无线路由器的连接状态,如下

查看第二个无线路由器的连接状态

查看无线状态:

在靠近第二个无线路由器的地方,打开一个无线连接,只需要输入ssid名字和密钥(如: dlinkwds 和 password),可以看到,新的无线终端接入了第二个无线路由器。同样可以上网。

查看无线状态

 

注释: 如果第二个无线路由器需要连接有线,需要把第一个无线路由器lan端口和第二个无线路由器的lan端口相连,不能连第二个无线路由器的wan口,否则会导致级联错误。

学习Android开发系列一:开发环境的安装

在cliff的影响下,抓紧时间学习android的开发吧。 虽然从有想法到现在已经有一年之久了。这里先来共享一下自己的第一步,建立一个android的开发环境。

我现在非常喜欢Ubuntu, 尤其是Ubuntu One,非常方便。 google docs和微软的web office都很好,但一个由于某种原因不稳定,另外由于不支持linux,都不能满足我的现实需求。 在单位和家里的电脑上,现在都使用ubuntu,这就为ubuntu one提供的2GB云空间提供很好的便利。

1. 要安装JDK, 尤其是sun的jdk 1.6. 这个非常重要。 我就是因为使用iBM的jdk,在做第一个例子Hello World的时候,出现 Can Not find helloworld.apk的错误。即使按照google搜出来的方法,把jre的环境变量添加完善。

在Ubuntu 的software source里增加多个源, 然后运行:

$ sudo apt-get install sun-java6-bin sun-java6-jre sun-java6-jdk

如果已经安装了其他jre环境,需要更改缺省的java环境变量:

$ sudo update-java-alternatives -s java-6-sun

2. 安装Eclipse开发环境。

$ sudo apt-get install eclipse

这里你可以选择多种eclipse的打包形式。推荐使用Ubuntu自带的eclipse版本,因为安装路径配置信息在多台环境中基本上保持一致。 当然也可以从eclipse.org官方上下载最新的版本,这里有个技巧,就是把jre的目录直接拷贝到eclipse的目录中,就可以自动找到并直接运行了。

3. 配置Eclipse工作环境。

第一次启动eclipse,会让你创建一个workspace目录,我推荐选: ~/Ubuntu One/workspace 作为缺省目录。

4.下载Android SDK安装包。我推荐解压到/opt/android目录下。然后运行 tools/android命令下载升级更多SDK的开发包。都是图形的界面,相信大家很容易上手。刚开始可能不知道那些package都是干什么,干脆全选下载就好了。

下载地址: http://androidappdocs.appspot.com/sdk/index.html#quickstart

5. 升级eclipse插件并安装ADT。

官方的指导地址: http://androidappdocs.appspot.com/sdk/eclipse-adt.html#installing

最简单的方法就是下载ADT的plugin包,然后解压,并放到eclipse/dropins目录下。 当然推荐的方法还是使用https://dl-ssl.google.com/android/eclipse/作为eclipse插件的安装地址进行在线安装。

6. 在Eclipse里配置ADT。

启动eclipse -> windows -> Preferences, 在左边选择Android,右边SDK Location里填入 /opt/android 作为路径 (如果sdk是按照上面推荐的路径安装的。)

7. 创建AVD。

AVD, 就是虚拟的android模拟器。 名字随便写一个,选择target是最重要的。根据你的目标设备选择。SD Card的可以选择小一点,启动时候可以快一些。skin,选缺省的就好了,毕竟现在更多的手机都在向着3.7寸以上迈进。

8. 根据向导创建一个hello world程序。

官方的地址: http://androidappdocs.appspot.com/resources/tutorials/hello-world.html

注意在项目属性里添加好jre build path.

现在就可以运行hello world了。验证通过之后,一个支持”android云开发”的环境就好了。只要使用Ubuntu的机器,填上Ubuntu One的帐号,指定eclipse的workspace,就可以打开同样的项目了。当然前提是在网络环境下。 这个方法在一定程度上比使用svn或cvs等源代码管理工具的方式好。

网站的区域化与专业化

相信很多人都有和我一样的体验,在信息量极具膨胀的网络社会中,也不知道该怎么看什么,到哪里去看。 往往我们花了大量的时间在网上,而浏览的有效信息量很小。 但又不能不去浏览。

而现在网络发展的两个方向,一个是专业化。 提供相对非常专业内容的讨论网站,往往更能吸引也留住客户。 尤其一些技术网站,甚至有很多派系网站。 这类网站往往做的时间比较长了,客流量也很大。这个概念在前两年比较吸引人,最好的例子就是圈子这个概念。甚至包括关系,都可以理解为一种兴趣相投的体现。

另外一个方向也就是区域化的发展。 这类网站往往是各地区的门户网站,小到类似于我摆弄的这个住宅小区的社区网,大到一个省,市的门户, 甚至可以说新浪搜狐等也不过是一个区域性的门户。 这类网站往往内容相对多种多样,满足目标客户群的需要。 最近比较火爆的一个概念“团购”,其实也不过是区域性概念的一个变种。 

那么如何能让这两个概念结合起来呢? 因为他们是完全不同的两个方向。 一个是横向,一个是纵向。  现在可以看到, 专业化网站提供圈子,圈子的分类都是以地区这类方法分割的。 区域性网站也提供了圈子的概念,多数恰恰是以兴趣为分类标准的。 不管哪个方向的网站,当他在尝试往另外一个方向发展的时候,都会感到力不从心。因为他的客户群有着完全不同的特点。 而搜索引擎在处理起这些方面来,也存在这较大的难度,所以很多分类搜索应运而生。

我有个想法。如果说要让搜索引擎去智能判断这些匹配结果,到不如让网站自己主动提供信息给搜索引擎。 例如你的目标客户群是那些专业的方向(header里的meta信息现在已经很好的支持了这点), 另外需要增加一个目标区域的概念。这个方法可以在header里增加一个location的meta标记, 如果不设置,缺省为全世界。 如果特别指定,则能给搜索引擎提供更加精确的信息。 例如某个餐馆, 他的目标客户实际上就是(经纬坐标+30公里)范围内的客户。 在投放广告的时候,搜索引擎可以非常方便的根据这个餐馆的网站提供的信息,对该地区的网站自动投放广告。

想法还不太成熟,也不知道是否能通过html的标准来推广或者申请某个专利。 哈哈。 当然这种方式也许已经有个更好的方法实现,尤其是google这种做BI和数据分析的公司。(我只能偷偷的小声说,我想去google,可惜我的技术还真不太自信)