28万个开源项目之番外篇

一、工具

1. 数据抓取

最初是打算使用openhub.net的Open API的,他们有不错的API,还在Github上放了一个开源项目。只可惜,他们的API,最多申请5个API Key,每个Key明天的访问请求数量,不能超过1000次。当时我还不知道,其实openhub的数据只有28万多,还以为满打满算,至少得60多天才能全部抓完,顿时心就凉了。

后来有朋友介绍了一个很棒的直接抓取HTML页面,然后做DOM分析的工具,名叫noodle

接下来,只要抓取: https://www.openhub.net/p?ref=homepage&q=&page={num}
就能够拿到所有项目的概要数据了。

当然,后续的331个项目的明细数据,还是得通过OpenHub的API来抓取。

2. 数据分析

完全是土法上马:sqlite3+numbers+csv+ruby,反正各种手法,什么称手用什么。

3. 数据展示

原本是打算在numbers里想想办法的,后来发现实在太弱。Excel也差不多,只能到网上搜索一些信息图制作的工具,后来找到了几个不错的在线工具,经过一番比较,最后决定用infogr.am来完成。的确非常不错。

二、释疑:项目大小与创建时间的关系

我与@云风 在微博上有一小段讨论,起因还是我之前的一些分析的观点:

  • 是否使用Github,越是新的项目越愿意用;越是大的项目越没法用。
  • 是否使用Github来管理项目的issue,越是新的项目越愿意用;越是大的项目越没法用。

这个结论,其实在用词上,是有些讲究的:按理说,新与老相对,小与大相对;愿意与不愿意相对,能用与没法用相对,我的两个结论,对仗都不公整。其实,确实故意为之。

于是,云风与我的对话如下:
云风:项目规模和项目历史本身有相关性吧。代码规模越大的项目历史很可能越久。
我:项目的规模,主要还是与项目本身的特性有关。原本就复杂的项目,才可能越长越大。原本就是小项目,也未必就会稳定的逐年增长。
云风:这只能说明小项目可以历史久,不能说明大项目可以历史短啊。很少有新项目一开始就很大啊。代码也是一行行写出来的啊。
我:那就是成长速度不同了。比如OpenStack,一开始就不小。
云风:一开始就不小只能说闭源开发过一段时间,或从别的地方搬迁过来的吧。你能想象不被版本管理工具管理的情况下,首次提交 10 万行以上的代码?看这个 link 提交日志写的 initial fork out of nova。

后来,我也没有再继续这个讨论,但是却一直在思考这个问题:「项目的大小,与项目的创建时间,究竟有大少相关性?」

后来,我将两个数据,做了一个分析:Log(第一次提交代码,至今的天数)/Log(代码行数),大概得到如下一个图:

经过强大的Excel的计算,两个数据的相关系数,大约是0.203的样子,也就是说:大致上有较弱的正相关。

三、开源

目前,我已经将这个分析的相关数据,放在Github上开源了。简单介绍一下:

data.sqlite3.zip 是28万基础数据
projects.sqlite3 是331个项目的详细数据
projects.csv 是我用来做数据分析的大表格

四、名单

331一个开源项目,名单如下:

Name Homepage
Metasploit Framework http://www.metasploit.com/framework/
NetBSD http://www.netbsd.org
GNU C Library http://www.gnu.org/software/libc/
cURL http://curl.haxx.se/
Python programming language https://www.python.org
Linux Kernel http://kernel.org/
GNU Emacs http://www.gnu.org/software/emacs
gnulib http://savannah.gnu.org/projects/gnulib/
GNU Core Utilities http://savannah.gnu.org/projects/coreutils/
GNU Compiler Collection http://gcc.gnu.org/
Wine http://www.winehq.org
Debian http://www.debian.org/
GNU Octave http://www.octave.org
Visualization Toolkit http://www.vtk.org
pf http://www.benzedrine.cx/pf.html
GDB http://www.gnu.org/software/gdb/
GNU binutils http://www.gnu.org/software/binutils/
GHC http://haskell.org/ghc/
Zope http://zope2.zope.org
FreeBSD https://github.com/trueos/trueos
Perl http://www.perl.org/
GNU LilyPond Music Typesetter http://lilypond.org/
Gnus http://gnus.org/
ikiwiki https://github.com/schmonz/ikiwiki
Samba http://www.samba.org
PHP http://php.net
FreeBSD Ports http://www.freebsd.org/ports/
pkgsrc: The NetBSD Packages Collection http://www.pkgsrc.org/
Mesa http://www.mesa3d.org/
Squid Cache http://www.squid-cache.org/
KDElibs (KDE) http://www.kde.org/
gedit http://www.gnome.org/projects/gedit/
Evolution http://www.gnome.org/projects/evolution/
Kontact http://kontact.org/
KDE PIM http://pim.kde.org
Advanced Linux Sound Architecture (ALSA) http://www.alsa-project.org/
Wireshark http://www.wireshark.org
OpenSSL http://www.openssl.org/
GIMP http://www.gimp.org/
NetBeans IDE http://www.netbeans.org
Koha Library Automation Package http://www.koha-community.org
openSUSE Linux http://www.opensuse.org/
Doxygen http://doxygen.org/
libcurl http://curl.haxx.se/libcurl
GStreamer http://github.com/zaheerm/gst-plugins-good
GNOME http://www.gnome.org/
Insight Toolkit http://www.itk.org
zsh http://zsh.sourceforge.net/
Nautilus https://wiki.gnome.org/Apps/Nautilus
X.Org http://www.x.org/wiki/
Mozilla Core http://www.ahrcloud.com
MariaDB http://mariadb.org/
CMake http://www.cmake.org
LibreOffice http://www.libreoffice.org
ALT Linux http://www.altlinux.org
ParaView http://www.paraview.org
GTK+ http://www.gtk.org/
Poedit http://www.poedit.net/
Bugzilla http://www.bugzilla.org/
Enlightenment (window manager) http://www.enlightenment.org
FFmpeg http://www.ffmpeg.org/
GLib http://library.gnome.org/devel/glib/
PEAR http://pear.php.net/
Ruby http://www.ruby-lang.org/
GnuCash http://www.gnucash.org/
phpMyAdmin http://www.phpmyadmin.net/
Mono http://www.mono-project.com
SWIG http://www.swig.org
SWT (Standard Widget Toolkit) http://www.eclipse.org/swt/
Checkstyle http://checkstyle.sourceforge.net
Eclipse Java Development Tools (JDT) http://www.eclipse.org/jdt/
Eclipse Platform Project http://www.eclipse.org/eclipse/platform-ui/
Natural Language Toolkit (NLTK) http://www.nltk.org
Ekiga http://ekiga.org/
Boost C++ Libraries http://www.boost.org
Kate (KDE) http://kate-editor.org
Devhelp http://live.gnome.org/devhelp
Arch Linux Packages http://www.archlinux.org
SPIP http://www.spip.net
GNOME Terminal https://help.gnome.org/users/gnome-terminal/stable/
ScummVM http://www.scummvm.org/
Anjuta DevStudio http://anjuta.org
BlueZ http://www.bluez.org/
Eye of GNOME http://www.gnome.org/projects/eog
Tor http://www.torproject.org/
Fedora Packages http://fedoraproject.org
Haiku http://www.haiku-os.org
Stellarium http://stellarium.org/
Totem http://projects.gnome.org/totem/
Rhythmbox http://www.gnome.org/projects/rhythmbox/
Gentoo Linux http://www.gentoo.org/
CDT (Eclipse) http://www.eclipse.org/cdt/
JRuby http://www.jruby.org
eZ Publish http://share.ez.no
VLC media player http://videolan.org/
Equinox http://www.eclipse.org/equinox/
Epiphany http://www.gnome.org/projects/epiphany/
Thunderbird http://mozilla.org/thunderbird/
GeoTools http://geotools.org
PyPy http://pypy.org
KDE http://www.kde.org
apt – Advanced Package Tool https://wiki.debian.org/Apt
Moodle http://git.moodle.org/gw?p=moodle.git
Calligra Suite http://www.calligra.org
QGIS http://qgis.org/
Mozilla Firefox http://www.firefox.com/
coreboot http://www.coreboot.org/Welcome_to_coreboot
Tiki Wiki CMS Groupware http://tiki.org
Apache Maven 2 http://github.com/apache/maven-archetype
Plone http://plone.org
Superior Lisp Interaction Mode for Emacs http://common-lisp.net/project/slime/
Kodi http://kodi.tv
MythTV http://www.mythtv.org
systemd http://www.freedesktop.org/wiki/Software/systemd
GeoServer http://www.geoserver.org
Groovy http://groovy.codehaus.org/
Blender http://www.blender.org/
MySQL http://www.mysql.com/
iproute2 http://www.linuxfoundation.org/collaborate/workgroups/networking/iproute2
MonoDevelop http://www.monodevelop.com
Hibernate http://www.hibernate.org/subprojects/ogm
NetworkManager http://www.gnome.org/projects/NetworkManager/
NLog – Advanced .NET Logging http://nlog-project.org/
GParted http://gparted.org/
Seahorse http://www.gnome.org/projects/seahorse/
Glade User Interface Designer http://glade.gnome.org/
Jenkins http://jenkins-ci.org/
IntelliJ IDEA Community Edition http://www.jetbrains.org
Ruby on Rails http://rubyonrails.org
BusyBox http://busybox.net/
Evince http://projects.gnome.org/evince/
DokuWiki http://www.dokuwiki.org/
Linux NTFS file system support http://www.linux-ntfs.org/
KVM http://kvm.qumranet.com/kvmwiki
Battle for Wesnoth http://wesnoth.org/
Git http://git-scm.com/
SPIP-Zone http://zone.spip.org/trac/spip-zone/
Mercurial http://mercurial.selenic.com/
Hibernate Entity Manager http://entitymanager.hibernate.org/
Racket http://racket-lang.org/
RubyGems http://rubygems.org
SQLAlchemy http://www.sqlalchemy.org/
cabal http://haskell.org/cabal/
U-Boot http://www.denx.de/wiki/U-Boot/WebHome
WebKit http://webkit.org
OpenEmbedded http://openembedded.org
Yocto Project http://www.yoctoproject.org
matplotlib http://matplotlib.org/
Symfony http://www.symfony.com/
Meld http://meldmerge.org/
Haxe http://haxe.org/
FreeSWITCH http://www.freeswitch.org/
Geany http://geany.org/
collectd http://collectd.org/
Gramps http://gramps-project.org
phpBB Forum Software http://www.phpbb.com/
HAProxy http://www.haproxy.org/
fail2ban http://www.fail2ban.org/wiki/index.php/Main_Page
NumPy http://numpy.scipy.org
Scala http://www.scala-lang.org/
dpkg http://wiki.debian.org/Teams/Dpkg/
Nette Framework http://nette.org
Inkscape http://www.inkscape.org
Phing http://www.phing.info/
jBPM http://jbpm.org
JBoss Drools http://www.jboss.org/drools
Bitbake http://developer.berlios.de/projects/bitbake/
Zotero http://www.zotero.org/
Lutece http://www.lutece.paris.fr
OTRS http://www.otrs.com/
Sage: Open Source Mathematics Software http://sagemath.org
Rockbox http://rockbox.org
Liferay Portal http://liferay.com
TYPO3 CMS http://typo3.org
Vala http://live.gnome.org/Vala
pylint http://pylint.org
The LLVM Compiler Infrastructure http://llvm.org/
libvirt http://libvirt.org
TinyMCE http://tinymce.moxiecode.com
Django http://www.djangoproject.com/
PHPUnit http://www.phpunit.de/
OpenStreetMap http://www.openstreetmap.org/
SymPy http://sympy.org
Xen Project (Hypervisor) http://www.xenproject.org
Eclipse Mylyn http://www.eclipse.org/mylyn/
PHP_CodeSniffer http://pear.php.net/package/PHP_CodeSniffer
Sakai LMS (core) http://www.sakaiproject.org/
Spring Framework http://github.com/SpringSource/spring-framework
Joomla! http://www.joomla.org/
Marble http://edu.kde.org/marble/
LXDE http://lxde.org
Pygments http://pygments.org/
OpenLayers http://openlayers.org/
The MacPorts Project http://www.macports.org/
calibre http://calibre-ebook.com/
Grails http://grails.org
Alfresco Content Management http://www.alfresco.com
util-linux https://github.com/karelzak/util-linux
jQuery http://jquery.com/
Vaadin http://vaadin.com/
Cython http://www.cython.org/
Dojo Toolkit http://dojotoolkit.org/
MediaWiki https://www.mediawiki.org/wiki/MediaWiki
Second Life Viewer http://www.secondlife.com/
Munin http://munin-monitoring.org/
Odoo https://www.odoo.com
Mozilla Calendar http://www.mozilla.org/projects/calendar/
KDevelop http://kdevelop.org/
ZNC http://znc.in
Werkzeug http://werkzeug.pocoo.org/
cppcheck http://cppcheck.sourceforge.net/
Wicket Stuff http://wicketstuff.org
Drush http://drupal.org/project/drush
Sphinx documentation builder http://sphinx-doc.org/
Piwik http://piwik.org
JDownloader http://www.jdownloader.org
SeaMonkey http://www.seamonkey-project.org/
Empathy http://live.gnome.org/Empathy
SilverStripe http://www.silverstripe.org
PulseAudio http://pulseaudio.org
LLVM/Clang C family frontend http://clang.llvm.org/
Pylons http://pylonsproject.org
MongoDB http://www.mongodb.org/
Mockito https://github.com/mockito/mockito
Doctrine http://www.doctrine-project.org
Pacman http://www.archlinux.org/pacman/
MAME – Multiple Arcade Machine Emulator http://mamedev.org/
Rubinius http://rubini.us/
Apache Camel http://camel.apache.org/
OpenJDK http://openjdk.java.net/
Buildbot http://buildbot.net/trac
MPD http://sourceforge.net/projects/musicpd
Tracker http://projects.gnome.org/tracker/
org-mode http://orgmode.org
Sass http://sass-lang.com/
WPA/WPA2/IEEE 802.1X Supplicant http://hostap.epitest.fi/wpa_supplicant/
Go programming language http://golang.org/
Apache CouchDB http://couchdb.apache.org/
Qt 4 http://qt-project.org/
Apache CXF http://cxf.apache.org/
CakePHP http://cakephp.org
CKeditor WYSIWYG editor http://ckeditor.com/
SciPy http://www.scipy.org
gitg http://trac.novowork.com/gitg/
Banshee http://banshee-project.org
OGRE http://www.ogre3d.org
Chromium (Google Chrome) http://code.google.com/chromium/
Gradle http://www.gradle.org/
Netty Project http://netty.io/
Sinatra http://www.sinatrarb.com
Chef http://www.opscode.com/chef
Gerrit Code Review http://code.google.com/p/gerrit
GNOME Shell http://live.gnome.org/GnomeShell
Git Extensions http://code.google.com/p/gitextensions
Qt Creator http://qt-project.org/
Kohana v3 http://kohanaframework.org/
Android http://www.android.com
JUnit http://www.junit.org
PCSX2 http://pcsx2.net/
Shotwell https://wiki.gnome.org/Apps/Shotwell
Redis http://redis.io/
Cassandra http://cassandra.apache.org/
PhoneGap http://phonegap.com/
Trinity Core http://www.trinitycore.org
Icinga http://www.icinga.org
CyanogenMod http://www.cyanogenmod.com/
Rygel http://live.gnome.org/Rygel
QEMU http://www.qemu.org/
Trinity Core2 http://www.trinitycore.org
Pitivi http://github.com/jhoolmans
Openfire http://www.igniterealtime.org/projects/openfire/
Apache Hadoop http://hadoop.apache.org/core/
akka http://akka.io
JGit http://www.eclipse.org/jgit/
Homebrew https://github.com/Homebrew/homebrew-apache
Oh My Zsh http://github.com/robbyrussell/oh-my-zsh
ehcache http://www.ehcache.org/
EGit http://www.eclipse.org/egit/
node.js (NodeJs) http://nodejs.org
Thunar http://www.xfce.org
Selenium http://seleniumhq.org/
Arquillian http://jboss.org/arquillian
Erlang http://www.erlang.org
YUI http://yuilibrary.com/
Gunicorn http://gunicorn.org
CoffeeScript http://www.coffeescript.org/
Clementine Music Player https://github.com/clementine-player/Clementine
scikit learn http://scikit-learn.org
Processing http://processing.org/
Vagrant http://vagrantup.com/
Qt 5 http://www.qt-project.org/
Yii PHP Framework http://www.yiiframework.com
Zend Framework http://framework.zend.com/
Apache Spark http://spark.apache.org
Flask http://flask.pocoo.org/
OsmAnd http://www.osmand.net
ownCloud http://ownCloud.org
Open Computer Vision Library (OpenCV) http://opencv.org/
phpDocumentor http://www.phpdoc.org
IPython http://ipython.org/
RSpec http://rspec.info/
OpenStack http://www.openstack.org/
OpenStack Nova https://launchpad.net/nova
Apache CloudStack https://github.com/apache/incubator-cloudstack
AngularJS http://angularjs.org/
GWT (formerly Google Web Toolkit) https://github.com/google-web-toolkit/gwt
Facter http://puppetlabs.com/puppet/related-projects/facter/
salt http://saltstack.org
jMonkey Engine http://jmonkeyengine.org
Puppet http://puppetlabs.com/puppet/
Play! framework http://www.playframework.org/
Elasticsearch http://www.elasticsearch.com
Bootstrap (Twitter) http://twitter.github.com/bootstrap/
Apache OpenOffice http://www.openoffice.org/
GlassFish https://glassfish.dev.java.net/
Propel http://propelorm.org
JabRef http://jabref.sourceforge.net
CodeIgniter http://www.codeigniter.com/
GNOME Boxes http://live.gnome.org/Boxes
GitLab https://www.gitlab.com/gitlab-ce/
TiddlyWiki http://www.tiddlywiki.org
Fish shell https://github.com/fish-shell/fish-shell
Ansible http://ansible.com
Simple Machines Forum http://www.simplemachines.org/
FontForge http://www.fontforge.org
libgdx http://libgdx.badlogicgames.com
py-pandas http://pandas.sourceforge.net/
javascript https://github.com/airbnb/javascript
EasyTAG https://wiki.gnome.org/Apps/EasyTAG
docker http://docker.io
Capistrano http://capistranorb.com/

云中漫步——一次概念梳理与再思考的阅读经历

《云计算解码》书评

本文发表于《麻省理工科技创业》 2011年第7期,完整版超过4000字,在杂志上发表时,删减到了原来的三分之一,这里贴出的完整版。

一、缘起

“云计算”是一个非常热门的IT词汇,从2007年这个概念被提出到现在,已经火了好几年了。作为一个IT从业者,以及一个对于各种新事物都有着相当兴趣的家伙,我也一直在关注着这个领域的各种动态与发展。但是,这样一种陆陆续续的日常阅读与思考,是相当分散与琐碎的,毕竟我自己的工作领域与云计算没有直接关联,所以大多数观念,都只是来源于片段的网络文章与道听途说。

这次因为特别的机缘,《麻省理工科技创业》杂志邀请我写一篇关于云计算的书评。而另一方面,我所在盛大创新院,新近成立了云计算创新院,正在全力发展盛大的云计算事业,我周围的很多同事朋友,也开始越来越多地讨论云计算相关的话题。因此,我也就毫不犹豫的答应了杂志社,决定好好的读一下这本深入分析云计算,号称运营商观点第一书的《云计算解码》。

二、总体印象

阅读这本书对我而言,首先是一次概念梳理与印证的过程,在本书作者的辛勤工作下,纷繁复杂的各种云计算相关概念,被井井有条的组织起来,以自顶向下的方式层层展开,用明白晓畅的语言,为我们介绍各种内容,的确称得上是一本为云计算“解码”的好书。

读书,本就是一桩乐事,得此好书,“云中漫步”,尤其惬意。

在阅读的过程中,我发现书中有很多地方与我的观点一致,这就成为一种印证;而有些观点与我的并不一致,我也想在下面提出来探讨。有我完全赞同的部分,有使我获益良多的部分,也有些我感到略有微词的部分。

另外,对于本书的第六章“云计算对产业的影响”、第八章“电信运营商与云计算”,我的感想比较复杂,需要单列出来表述一番。

三、完全赞同的地方

 

因为是完全赞同,这里就简单的摘录一下,不多加评述了。

 

1、云计算对信息产业的影响,P9

IaaS降低了服务器、计算和存储资源能力获取的门槛,PaaS降低了开发者部署应用的门槛,SaaS则降低了用户使用软件的门槛。PaaS和SaaS致力于颠覆传统的软件开发、使用和提供模式,而IaaS致力于改变传统的计算、存储提供模式,他们都能使未来的IT格局产生巨大的变化,改变人们获取IT资源的方式。

2、云计算系统与传统PC系统架构对比,P15

image

3、云计算与移动互联网、物联网、智慧地球的关系,P224~P227

移动互联网的发展将促使云计算的进一步发展,同时,云计算的发展也将改变现有移动互联网生态系统;“智慧地球”的实质就是“物联网+云计算”。

4、云计算成功的关键因素,P238~P244

技术是云计算成功的基础;商业模式是云计算成功的关键;运营能力是云计算成功的必要条件。

5、互联网的本质精神,P249

20世纪70年代创建互联网的时候,带队设计师文特·瑟夫(Vint Cerf)和鲍伯·卡恩(Robert Kahn)……他们给出的答案简单得惊人,基于两个公理:首先,不应该存在拥有者和控制中心,没有任何机构能够决定谁可以加入网络或者网络的用途;第二,网络不应该只被优化为任何特定的应用……在这个网络世界中,如果你有一个想法可以用数据包实现,那么网络会帮你完成,为你而做,而你也无须得到谁的许可。

四、获益良多的地方

1、第三章,IaaS及其关键实现技术

非常透彻

2、第四章,PaaS及其关键实现技术

流派分析很有价值

五、略有微词的地方

1、我对SaaS的理解以及对第五章的评价

实际上,我对于SaaS是否属于云计算,是有些看法的。2006年,Amazon提出了弹性计算云(Elastic Compute Cloud)的概念,并对外提供EC2服务,2007年,Google提出云计算(Cloud Computing)的概念。而在这之前的很多年,我们就已经听说了B/S架构,听说了Web Application,即使是SaaS(Software as a Service)概念的提出,也早在1999年之前。

从概念梳理来说,最严格的云计算,其实最初只是指IaaS,后来,PaaS说,我也是云计算,这从逻辑上来说,还讲得通,因为将一个网络应用,部署在大规模的分布式架构上,相比直接部署于弹性的基础设施之上,与部署于更加方便的分布式平台之上,是在同一个概念下的演进。而SaaS站出来说,我也是云计算的一部分,不过是也想沾云计算这个热门词汇的光罢了。

从看到的各种文章来说,早期的文章还是在说:云计算与SaaS有相似或者可相类比之处,后来,就直接说自己是云计算的组成部分了,这种事情,在IT产业中,的确屡见不鲜,也是很容易让外人感到迷惑的。

回到本书的第五章,相比第三章介绍IaaS关键技术的52页,第四章介绍PaaS关键技术的71页,介绍SaaS的第五章,只有43页。而且,介绍的内容也相当分散与粗浅,给人一种拼凑与敷衍的感觉。在基于浏览器的Web呈现技术一节,将HTML5、CSS3与Ajax并列介绍,让我感觉作者对这方面只有相当泛泛的了解。

2、一个小bug,P150

在谈到微软从传统软件转向PaaS时,有这么一段话:微软也意识到自己在桌面软件上的绝对优势,以及用户在很长时间内还将依赖于桌面软件的实际情况。因此,利用其桌面软件目前拥有的用户黏性及庞大的Visual Studio .NET开发者社区(在国内有非常著名的MSDN社区),微软通过开发可与桌面软件无缝结合的云软件服务及可与桌面开发平台无缝连接的PaaS平台……将大量的用户留住……

这话的确很怪异,国内著名的技术社区,应该是CSDN,而且他们也不是单纯的微软技术社区,如果的确是指MSDN中文版,那在国内又确实不是非常著名。所以,的确是有些奇怪。

六、对第六章的评价

本书的第六章,论述云计算对产业的影响,希望通过深入的分析,对于产业的结构与现状,做出一定的梳理。书中提出了三条主线,互联网云与IT云;分布式架构与虚拟化架构;公有云与私有云。对于这三个主线,我都有一些与作者不太一致的看法。

1、互联网云与IT云,在作者看来,互联网云,是云计算的发起者(互联网企业)想要革掉传统IT产业的命的一种全新创造。而传统IT厂商,通过重新定义云计算,甚至偷换概念,将“云计算是一场IT技术革命,同时也是一场传统IT的产业革命”这一观点,转变为:“云计算不过是一种商业模式的革命,互联网公司并没有什么高明之处,大家都可以分一杯羹,共同通过云计算(说白了即使‘模式’)分享新的IT市场!”——参见208页

但是,在我看来,其实并没有这么尖锐的对立,或者说阴谋论。而是互联网厂商主要提供云计算服务,而传统IT厂商,主要提供云计算解决方案。是“能者”与“使能者”的关系。IaaS与PaaS要革的,其实是传统IDC的命,而SaaS要革的,则是传统软件与传统网络应用服务提供商(ASP)的命。而这些传统产业,希望通过云计算改造,重新获得竞争力,这就需要采用IT厂商例如IBM、Oracle、HP、Microsoft等等提供的云计算解决方案。当然,原本拥有众多计算资源的大型企业,借助构建私有云大大降低计算成本,也是IT厂商的市场争夺重点。

所以,IT厂商提供的云计算解决方案,同样可以是某种公有云解决方案,也不会仅仅局限于虚拟化架构,而不是分布式架构。当然,这个分析,我在下节再细说。总之,本书对于IT厂商云计算的理解,颇为扭曲,我并不认同。

2、分布式架构与虚拟化架构的对立,同样令我不解。首先,虚拟化技术,能够模拟出几乎无法分辨的“真实的计算机”,在这样的计算机上,跑任何分布式架构的应用,都是可行的。再者,作者反复在强调Amazon是虚拟化架构的代表,Google是分布式架构的代表,而事实上,Amazon除了提供EC2之外,还提供了Elastic MapReduce(这得算是分布式计算的核心了吧?),Amazon Simple Storage Service (S3,这得算是分布式存储的核心了吧?),当然,他的SimpleDB和Relational Database Service也是分布式数据库的两种服务。

所以,在我看来,所谓两种架构的技术对立,只是作者写作本书时,存在的某种结构化追求的产物,并非实际存在,对于技术人员来说,千万不要有二中选一的臆想。

3、公有云与私有云,这样的区分当然是存在的,但是在本书中,只是简单的做了评述,不是特别透彻。

七、对第八章的评价

作为本书封底介绍的“运营商观点第一书”,第八章《电信运营商与云计算》是本书的重中之重,也是我最为关注的一章。但是,这一章只能称得上瑕瑜互见,有些不够完美。

8.1节云计算的基本经济规律及产业链分析又分为两个小节:1、互联网的本质和基本经济规律;2、云计算产业链分析。在短短5页半的篇幅里,探讨了互联网的本质、马太效应、摩尔定律、互联网基础设施层面的经济模型、互联网与万维网的区分、对于信息经济的深入讨论、以及云计算的本质。

如果以上这些话题,作者写到50页甚至更多的篇幅,一定会令读者受益匪浅。而在如此短的篇幅,堆积对此多的重大话题,难免会让读者感到肤浅和堆砌。

但是,紧接着的云计算产业链分析,的确是非常有价值的梳理,值得仔细阅读与消化。这里就不再赘述了。

在267页,对于电信运营商在云计算产业链中的角色和定位,作者列举了四种:网络通道服务提供商、云计算基础资源服务提供商、服务整合平台提供商以及云计算系统咨询服务提供商,还是相当准确的。有一段话,我感到非常认同:云计算将促使整个世界变得更加“平坦”。在“平坦”的世界中,最好的公司就是那些最善于合作的公司。对于电信运营商这样的大公司而言(我认为这里指的就是中国电信自己),得到发展的一个经验就是要学会“该放手时就放手”,要“有所为有所不为”。

如果能够做到这一点,我相信电信运营商,会做得很棒。

紧接着的遗憾,就是本书的8个“案例分析”,每一个都仅仅是蜻蜓点水的描述了一下浮面上的情况,缺少实际运营情况的分析和运营手法的探讨。这,其实是我最想要读到的内容……

八、结论

简单的结论,就列三条吧:

1、本书对于纷繁复杂的云计算技术与产业,做出了卓有成效的梳理;

2、对于IaaS和PaaS的技术介绍,深入、透彻,很有价值;

3、也许是由于多人合作的缘故,各个章节的水平,略有参差不齐的遗憾。

科普,应该以怎样的心态?

连岳老师的一篇《爱科普,用爱科普》,引起了轩然大波。到目前我所知的,就有N多中文网络中的大牌Blogger加入战斗。比如方舟子、和菜头、土摩托、王三表、还有好多人,我一时也记不全,索性一律不加引用link了。

在我看来,问题非常简单,做科普这件事情,应该以怎么样一种态度去做。是一件非常值得探讨与重视的问题。是怀着“爱心”去做的?还是带着“怜悯”去做的?是怀着“谦卑”去做的?还是带着“傲慢”去做的?是从平等的立场出发去做的?还是从高高在上的角度出发去做的?效果会大有区别!

反方的观点,却相当有趣:“这根本就不是一个问题!”,“只要是普及科学,就是科普。”,“你一个文科生,在那里教育我们这些理科生该如何科普,而且还扯那些不相干的所谓爱,简直就是。。。”

一切XX都是自证的。这回,土摩托的傲慢也暴露得特别迅速。在他以高高在上的理科生的姿态,向连岳提供一个例子的“过程中”,真正内行的人,出来说话了。于是,一场活剧的上演,让大家颇有收获——原来,傲慢的天才,也照样会犯傻啊。

想起我以前读书时的一件趣事,我是华东师范大学毕业的。有一次,我去听一个学生演讲,那个同学,在台上玩文字游戏,把TEACHER拆成七个英文单词,说:“这就是教师应该具备的7项能力、素质”。我当时就站起来说:“你这七个字母,恰恰少了一个L,Love的那个L。”作为教师,怎么能够少了爱呢?同样的,作为一个科普作者,怎么能够少了爱呢?

因此,我相当同意和菜头对于“灌顶派”与“内光明派”的划分,科普如果不能传递并引发对科学的热爱,那也无非是一堆资料而已。但是,他所谓的射杀云云,我颇不欣赏。

好书不必托,有托必烂书!

http://www.amazon.cn/mn/detailApp?prodid=bkbk823558&source=baidubk080505sk51017159bkbk823558

有学习价值2008-06-12 16:07:26
super_master为此商品评分: 
我买了这本书,这是我第二次买李刚老师的书。
非常喜欢李刚老师的写书风格——语言流畅,通俗易懂,思路非常清晰,操作步骤十分有条理,注释也写得非常详细。
重要的是:不仅告诉读者在开发过程中应该怎么做,还深入的介绍其原理,告诉读者为什么要这样做。
此外,知识点介绍得十分全面,这也是该书的一大特点。

http://club.book.csdn.net/book/247890.html

无题 – qinhhanw   财富等级:    
李刚老师的书是很不错的,我当初想买本struts2的书,朋友就向我推荐李刚老师的struts2权威指南,到书店去问,人家说卖脱销了、暂时没货。
如果李刚老师的这本书也保持这种水平的话,应该是买起来很放心的。 

这个高级了:“连环书托”

程序员还是要认真 – 202.10.69.*       
其实我觉得如果你真的想学好Struts2,那就一定要好好研究这本书——不要觉得书庞大,其实任何一门知识,你只有深入研究才会有收获!浅尝辄止的学习一下可能很难真正掌握软件开发的真正内容。
我现在已经基本看完了这本书,每个案例也基本练习了1~2次,感觉自己的Web应用的开发,对MVC的理解都比以前深入得多。 

这个垃圾,托错书了都。

相信李刚老师 – 58.62.104.*       
稍稍浏览了一下本书的试读部分,感觉很语言很流畅,讲解很清晰。确实是李刚老师的风格,与之前读过的李刚老师《轻量级J2EE企业应用实战》非常像。 

感觉还不错 – 202.116.45.*       
看了一下第二章的试读,思路很清晰,语言也很流畅
感觉Rails真的很简单。看来需要学习一下rails才行了。

非常有参考价值 – 59.41.221.*       
读了一下试读的部分,第一感觉是这本书写得非常实用,条理清晰,深入浅出。尤其是试读中关于Ajax的部分,非常清楚明白地介绍了如何在ror中使用Ajax来实现拖动效果、排列列表效果,和各种常用的视觉效果,这些都是开发过程中非常有用的东西,非常有参考价值! 

翻来覆去就那几个词,这个托很敷衍了事啊!

http://www.douban.com/review/1465474/

此外,作者既精通java,又熟识ruby,可见人家的功力非同一般,其将各门学问融会贯通的能力令人佩服。
  可能是树大招风吧,总有那么一些自己不好好干活又整天乱攻击成功人士的无聊之人,说什么作者是托,看了这两个链接(http://www.leegang.org/thread-502-1-1.html
   http://www.leegang.org/thread-510-1-1.html)
  的文章后,只要稍微动脑想一下,就知道肇事者纯属妒忌。

这个托,自然是大本营派出来的了。


技术分析,来自:Readonly

老庄,你做这种事情不专业,来看看专业人士的分析:

ip地址查询 58.62.104.* 属于 广东省广州市天河区
李刚所在的培训学校: 东方标准广州
联系地址: 广东省广州市天河区中山大道西55号
强烈号召china-pub应该像上面那个网站一样显示IP,让书托无所遁形

补充,老庄引文中的
59.41.221.* 也属于 广东省广州市天河区
202.116.45.* 属于 广东省广州市 华南师范大学
而 东方标准广州
联系地址: 广东省广州市天河区中山大道西55号华南师范大学计算机学院


更加有技术含量的分析,请看Readonly好文《师傅领错门,害了你个人 – ruby/rails新手避免入错门

走向大一统个人信息的平台的可行性

1、最近我改用Google Reader了,因为基于这个RSS Reader,我与朋友之间的分享阅读,成为可能。

2、Google Reader的使用体验,其实不如抓虾,常常会卡。我猜想是他的分享机制与“无限下拉阅读”的方式,导致了更多的服务器开销。

3、我参加了不少的Google Groups,一律通过Gmail来接受讨论摘要。而Gmail的使用体验,比Google Reader好多了。

4、如果,能够将阅读mail与阅读rss合为一体,我希望能够在gmail的形式下,统一起来

5、我同时也是delicious的用户,我在使用抓虾的时候,就有一个烦恼,因为一篇文章我有时候会在抓虾里直接收藏,有时候因为是点开来看详情,就会通过delicious的插件收藏。这样就存在信息分散的问题。

6、现在我使用EverNote,导入了所有的delicious书签,以后也一律使用EverNote做网摘,再通过我在EverNote的个人主页输出。然后用Google Reader订阅。这样,非RSS源的信息,我也能通过Google Reader分享给我的朋友了。

7、Gmail同时还集成了GTalk的功能,这个是我与朋友之间,更加直接的一个联系。再参照这篇文章,充分利用Google日历的提醒功能~~我就可以不出gmail,做N多,N多事情了。

敬业与专业

前段时间看到何必呢的blog。其中有一篇《强悍敬业的淘宝MM店主》讲到现在在淘宝兴起的一种店主真人秀的卖法。所有店内的商品,都是她自己穿了以后拍出来的。另外还有好多这样的店家,比如“快乐猪精”,“咖啡百合”,“丝袜佳丽”等等等等。有照为证:
taobao

果然是敬业,当时看得我是感叹不已。

今天通过The sky of Daemon!的介绍,又看到了一个网站:http://www.knickerpicker.com/dressing-room.asp

也有照为证:

KnickerPicker

每种内衣,有三种身材的模特试穿,可以转身,走来走去,还面带微笑~~~这就是专业的水平了,不服不行啊!