Category Archives: Internet

Github项目文档化支持的很不错

一共有4种方法让项目开发者来组织文档:

1. 首先是project, 缺省都有一个README.md, 支持markdown的语法,具体可以参考:

http://daringfireball.net/projects/markdown/

https://help.github.com/articles/github-flavored-markdown

这里是一个例子:

https://github.com/zfdang/asm-android-client-for-newsmth/

README.md会在页面下面被自动展示出来。

2. 如果不够的话,还有一个wiki的入口,可以编辑一些wiki页面。比如:

https://github.com/zfdang/asm-android-client-for-newsmth/wiki

3. 如果希望一个更漂亮的页面的话,可以使用”Pages”,参考这里的说明:

https://help.github.com/articles/user-organization-and-project-pages

https://help.github.com/articles/creating-pages-with-the-automatic-generator

这里是另外一个例子:

http://git.zfdang.com/asm-android-client-for-newsmth/

4. Pages分为两种,一种是个人/组织的pages, 另外一种是project的pages. 上面的那个是项目的pages, 下面是一个users的pages的例子:

http://zfdang.github.com/

还支持域名绑定(项目pages也支持绑定域名):

http://git.zfdang.com/

绑定域名的方法很简单,添加一个CNAME的文件就可以了,比如:

https://github.com/zfdang/zfdang.github.com/blob/master/CNAME

5. 个人/组织的pages,实际是一个具有特殊名字的project(创建项目的时候,不需要加”/”前面的内容,我在这里被卡了好久~~,最终的项目地址为:https://github.com/zfdang/zfdang.github.com)。

不过这个 project的文档不再需要使用gh-pages的branch, 直接使用master就好了。

 

几个在线的用来检测网站状态的小工具

1. DNS check tool

http://www.intodns.com/zfdang.com

可以检查很多DNS设置的是否得当。

国内DNS解析,首推dnspod.cn

2. 网站测试:

http://17ce.com/

3. 网站优化测试:

http://alibench.com/

Gravatar全球通用头像

http://en.gravatar.com/

大家现在会使用很多的网站,这些网站一般都会给每个用户显示个头像以示亲切。但是每个网站都要自己上传一份,不是太麻烦了么?好了,现在有了gravatar了!

GRAvatar以email为key,可以给每个email设置头像;之后,所有使用了gravatar服务的网站,都能够自动显示你(同一个email账号)设置的头像了。看看使用了gravatar的网站都有哪些吧:

WordPress, Github, Stackoverflow等。据说gmail和qq mail也支持gravatar了

这个头像功能是和WordPress一起的,和反垃圾插件Akismet一样,都是属于Aumattic公司的产品,最开始也是依附于WordPress,但现在,已经不仅仅局限于为WordPress提供服务了,已经被广泛的应用在各种web 2.0的服务中,比如最新的就是gmail和QQ邮箱都支持Gratavar,所以,有一个自己的头像还是很必要的,Gravatar越来越成为全球通用头像

公益404页面

网站的404页面也有用,可以用来发布一些公益信息:比如下面的这个公益404:

http://www.qq.com/404/

公益404页面是由腾讯公司员工志愿者自主发起的互联网公益活动。

网站只需要在自己的404页面中嵌入一段简单的代码,就能通过互联网来迅速传播失踪儿童信息,从而提高找回失踪儿童的概率。失踪儿童信息来自宝贝回家寻子网。

<script type="text/javascript" src="http://www.qq.com/404/search_children.js?edition=small" charset="utf-8"></script>

点击这里看例子

wordpress媒体文件路径修改

wordpress文章里图片的地址,都是绝对路径,比如我的wordpress里图片的地址都是http://blog.zfdang.com/打头的。这样的好处是,如果别人引用了你的文章,不用做任何修改,图片就可以显示出来。但是坏处也很明显,如果有一天换了个域名,所有的图片地址就都不对了,即使我们把wp-contents/uploads目录备份了过来。

我个人的解决方法,是手动更新wp_posts里的链接地址。首先,要能连得上mysql的数据库,推荐安装phpmyadmin.

然后运行如下命令(原来的域名是blog-zfdang.rhcloud.com, 新域名是blog.zfdang.com):

UPDATE wp_posts SET post_content=REPLACE(post_content, 'blog-zfdang.rhcloud.com', 'blog.zfdang.com');

 

云计算的几种模式

根据 NIST 的权威定义,云的服务模型,分为以下三种:

CloudSpectrum

  • Software as a Service (SaaS):软件即服务模型,用户直接使用构建在云端的软件。例如,Google Docs, Salesforce.com,甚至是 Web Email 也是云计算,因为我们抛弃了客户端。
  • Platform as a Service (PaaS):平台即服务模型,用户使用云平台所支持的语言和工具,开发应用并部署在云平台。例如,Google App Engine, Force.com,国内的 Sina App Engine
  • Infrastructure as a Service (IaaS):基础架构即服务模型,提供处理器、存储、网络等(虚拟)硬件资源给用户,用户可任意安装软件和开发环境,包括安装操作系统。例如,Amazon EC2, Joyent,国内的阿里云

可见,三种模型从应用到平台再到架构,越来越底层,用户得到的可操作性和灵活性也越来越大。

UnderstandingCloudComputing

 

redhat openshift云平台试用

首先需要明确的是,redhat的这个openshift是所谓的PaaS平台,但是跟google appengine等相比,有很大的不同:

1.支持多种的编程语言,java, php, ruby, python, node.js等

2.程序部署采用的是git, 跟appengine的那个难用的appcfg相比起来,直观多了

3.平台貌似可以使用标准的组件来开发,比如mysql,等,而不是一个定制版本的API / service. 估计可以比较容易的迁移到别的平台上去

4.提供了一个rhc的CLI工具,可以很方便的对程序进行管理。当然也有web console, 不过功能有限。

下面说使用的步骤:

1. 首先,去注册一个账号:https://openshift.redhat.com/。现阶段可以免费创建三个app

2. 在自己的机器上安装rhc客户端

sudo gem install rhc

3. 在自己机器上初始化

rhc setup. 会生成一个pub key, 然后上载到openshift的平台上去

4. 创建一个app

rhc app create -a pydemo -t python-2.6

5. 增加一个cartridge

rhc cartridge add -a pydemo -c mysql-5.1

6. 为这个app绑定一个域名(当前,前提是要先做好CNAME, 映射到系统提供的 pydemo-zfdang.rhcloud.com 上去)

rhc alias add pydemo pydemo.zfdang.com

到此为止,就可以通过自己的域名来访问服务了

 

以后更新代码,通过git来操作,非常方便。

The NIST Definition of Cloud Computing

The NIST Definition of Cloud Computing

Cloud computing is a model for enabling ubiquitous, convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, servers, storage, applications, and services) that can be rapidly provisioned and released with minimal management effort or service provider interaction. This cloud model is composed of five essential characteristics, three service models, and four deployment models.

 

Essential Characteristics:

On-demand self-service. A consumer can unilaterally provision computing capabilities, such as server time and network storage, as needed automatically without requiring human interaction with each service provider. 

Broad network access. Capabilities are available over the network and accessed through standard mechanisms that promote use by heterogeneous thin or thick client platforms (e.g., mobile phones, tablets, laptops, and workstations).

Resource pooling. The provider’s computing resources are pooled to serve multiple consumers using a multi-tenant model, with different physical and virtual resources dynamically assigned and reassigned according to consumer demand. There is a sense of location independence in that the customer generally has no control or knowledge over the exact location of the provided resources but may be able to specify location at a higher level of abstraction (e.g., country, state, or datacenter). Examples of resources include storage, processing, memory, and network bandwidth.

Rapid elasticity. Capabilities can be elastically provisioned and released, in some cases automatically, to scale rapidly outward and inward commensurate with demand. To the consumer, the capabilities available for provisioning often appear to be unlimited and can be appropriated in any quantity at any time.

Measured service. Cloud systems automatically control and optimize resource use by leveraging a metering capability[1] at some level of abstraction appropriate to the type of service (e.g., storage, processing, bandwidth, and active user accounts). Resource usage can be monitored, controlled, and reported, providing transparency for both the provider and consumer of the utilized service.

 

Service Models:

Software as a Service (SaaS). The capability provided to the consumer is to use the provider’s applications running on a cloud infrastructure[2]. The applications are accessible from various client devices through either a thin client interface, such as a web browser (e.g., web-based email), or a program interface. The consumer does not manage or control the underlying cloud infrastructure including network, servers, operating systems, storage, or even individual application capabilities, with the possible exception of limited userspecific application configuration settings.

Platform as a Service (PaaS). The capability provided to the consumer is to deploy onto the cloud infrastructure consumer-created or acquired applications created using programming languages, libraries, services, and tools supported by the provider.[3] The consumer does not manage or control the underlying cloud infrastructure including network, servers, operating systems, or storage, but has control over the deployed applications and possibly configuration settings for the application-hosting environment.

Infrastructure as a Service (IaaS). The capability provided to the consumer is to provision processing, storage, networks, and other fundamental computing resources where the consumer is able to deploy and run arbitrary software, which can include operating systems and applications. The consumer does not manage or control the underlying cloud infrastructure but has control over operating systems, storage, and deployed applications; and possibly limited control of select networking components (e.g., host firewalls).

 

Deployment Models:

Private cloud. The cloud infrastructure is provisioned for exclusive use by a single organization comprising multiple consumers (e.g., business units). It may be owned, managed, and operated by the organization, a third party, or some combination of them, and it may exist on or off premises.

Community cloud. The cloud infrastructure is provisioned for exclusive use by a specific community of consumers from organizations that have shared concerns (e.g., mission, security requirements, policy, and compliance considerations). It may be owned, managed, and operated by one or more of the organizations in the community, a third party, or some combination of them, and it may exist on or off premises.

Public cloud. The cloud infrastructure is provisioned for open use by the general public. It may be owned, managed, and operated by a business, academic, or government organization, or some combination of them.  It exists on the premises of the cloud provider.

Hybrid cloud. The cloud infrastructure is a composition of two or more distinct cloud infrastructures (private, community, or public) that remain unique entities, but are bound together by standardized or proprietary technology that enables data and application portability (e.g., cloud bursting for load balancing between clouds).  

 


[1] Typically this is done on a pay-per-use or charge-per-use basis.

[2] A cloud infrastructure is the collection of hardware and software that enables the five essential characteristics of cloud computing. The cloud infrastructure can be viewed as containing both a physical layer and an abstraction layer. The physical layer consists of the hardware resources that are necessary to support the cloud services being provided, and typically includes server, storage and network components. The abstraction layer consists of the software deployed across the physical layer, which manifests the essential cloud characteristics.  Conceptually the abstraction layer sits above the physical layer.

[3] This capability does not necessarily preclude the use of compatible programming languages, libraries, services, and tools from other sources. 

zzPaaS遍地開花!整理各種平台的Heroku-like解決方案

http://www.inside.com.tw/2011/02/17/heroku-like

PaaS是Platform As A Service的簡寫,便是以提供平台作為一種服務。以目前最具盛名、不久前才被Salesforce所收購的Heroku而言,就是提供了大家一個以Ruby為基礎的平台,讓大家可以自行在平台上開發各種網站,並且由Herkou來提供平台的架設管理。

透過PaaS的最大好處,便是可以減少維護管理系統底層的成本。相對自己架設機器而言,必須要自己管理的系統、機器和軟體,其中只要一個環節一不小心出錯了,就有可能像某些網路服務一樣,將資料庫的帳號密碼等重要資訊通通曝光,造成敏感資料暴露在危險當中。

除此之外,架設在PaaS的服務也可以透過簡單的介面來調整所需使用的硬體設備等級,程式完全不需要修改馬上就可以處理突如其來的龐大瀏覽量,而當使用者逐漸退去時,也可以馬上的將硬體降為一般的水準,省下額外的開支。

Python的Heroku

與Ruby相同熱門的Python是現在很多新一代網路創業者的首選,包含Instagram、Quora和Dropbox等服務在內都是使用Python。

Google App Engine

Google App Engine算是相當早期的PaaS服務,是Google所提供的雲端網站服務,搭配了webapp這套輕巧簡單的Python web framework和Datastore這套NoSQL的資料庫系統。

除了webapp之外,任何支援Python wsgi標準的web framework包含最熱門的Django在內都可以在GAE上面運行。

順道一題,台灣也已經有由知名開發者ericsk所撰寫的Google應用服務引擎開發實戰一書可以供入門者作為參考。

Djangy

顧名思義,Djangy所提供的便是Django的平台服務,支援背景工作(background job),如同Heroku一般是使用git作為上傳佈署的方式,並提供了shell下所使用的管理指令,看起來相當的不錯且完整。

Djangy目前仍然在封閉測試當中,有興趣的使用者可以在其官方網站上索取邀請函。

DjangoZoom

另外一個專門為Django打造的PaaS服務,同樣是使用git作為上傳佈署的方式,目前也仍然在測試當中,有興趣的使用者可以在其官方網站上索取邀請函。

ep.io

ep.io則是另外一個我相當看好的選擇,相對於Djangy是以Django的支援為主,ep.io支援了透過Python標準WSGI所設計的網頁框架,所以包含Django在內,其他熱門的選擇像是Flas或者是Quora所使用的Pylons都可以支援。

ep.io目前也在封閉測試當中,有興趣的使用者同樣可以在其官方網站上索取邀請函。

Java的Heroku

Java在網路的開發領域上算是具有數一數二的份量,許許多多的企業都是透過Java作為其網站開發的主要語言,且具有龐大的使用者基礎,故仍然在雲端時代相當的受到歡迎。

Google App Engine for Java

是的,Google App Engine同樣有提供Java的服務,使用標準的servlets和JSP等技術,搭配上JDO和JPA介面的DataStore,讓Java的使用者同樣可以透過GAE來開發程式。

AWS Elastic Beanstalk

談到雲端時代,最重要的網路公司之一莫過於Amazon了,其所提供的EC2、S3或是Cloudfron服務都是許多先進網站的重要底層架構(包 含Heroku實際上便是運行在EC2上),而最近他們所推出的Elastic Beanstalk便是提供了PaaS的服務,讓開發者可以快速的部屬Java程式到Amazon的機器上。

雖然目前此項服務仍在測試當中,但我相信Amazon所提供的雲端服務一向是具有相當水準的,在未來一定會有很好的發展。

PHP的Heroku

PHP是專為網路服務所打照的語言,由於其相對好上手的特性,在網站中是相當的普遍,包含Inside部落格在內,許許多多的網站、部落格論壇都是用PHP所開發,其中最著名的代表莫過於就是Facebook了。

phpfog


phpfog是PHP的Heroku類服務中最受矚目的一個,標榜秉持著N-Tier的概念,就是將資料庫、平衡負載和網頁伺服器等等通通分配在不同機器上,來達成最佳的效能和穩定度,並且提供許多PHP Apps的快速安裝功能,和git為主的程式上傳功能。

目前phpfog也是在測試當中,有興趣的讀者可以透過網站上的表格加入等候邀請函,或是參加其Facebook/Twitter的活動來獲得搶先的測試機會。

cloudcontrol

cloudcontrol也是針對PHP所提供的Heroku-like服務,其特殊的地方是在計費的方式是透過所謂的boxes,也就是透過access_log分析來顯示出使用的直線圖,然後選定一個方形的大小來付費。

另外一點特殊之處在於,cloudcontrol不需要邀請函,已經是一個正式開放的服務了。

.Net的Heroku

ASP.Net雖然是微軟的解決方案,一般需要較高的授權金而讓許多網路創業者卻步,但是仍然有包含像是stackoverflow等知名網站使用。

Windows Azure

提到C#的Heroku,一定要提到微軟官方所提供的Windows Azure平台了,隨著雲端時代的到來,微軟也提供了許多相關的服務,主要分為Windows Azure和SQL Azure,也就是運算平台和資料庫的平台提供開發者使用。

目前Azure的成功案例大多為企業用戶為主,不過在微軟的努力推廣之下,也逐漸有越來越多的開發者陸續投入。

AppHarbor

AppHarbor則是.Net平台上的另外一個非官方的選擇,其官方網站強調的他們為「Azure done right」,也就是改善了許多Windows Azure的缺點,比如說像是佈署時間過長,或者是操作設定上的不方便等等。

個人認為AppHarbor具有相當的潛力可以和Azure抗衡,無論是在操作的簡便度或者是收費的策略上,都相對於官方的平台好上一些。

綜合型PaaS

Makara

Makara是前陣子被Red Hat(知名Linux領導廠商)所收購的PaaS平台,現階段提供PHP和Java的平台服務,未來可以支援包含Ruby/Python等在內的各種語 言。而相對於其他一般的PaaS,Makara提供了更好的彈性讓開發者可以選擇佈署到不同的雲端上,包含Rackspace和Amazon EC2等。

由於背後有Red Hat的加持,加上高度的延展性,我認為Makara也會是未來市場上相當具有競爭力的。

推荐另外一个翻墙利器gsnova

使用了一下,貌似大多数情况下要比GAE快不少。项目地址:

https://github.com/yinqiwen/gsnova

这里有一个很详细的使用说明:

http://digest.definite.name/gsnova-golang-achieve-the-snova-of.html