四月 15, 2008

视频

  1. YouTube :YouTube(你的视频)是一个可以让用户免费上传、观赏、分享视频短片的热门视频共享网站
  2. Meta Cafe: Metacafe (麦塔咖啡厅)-得到最好的网上视频-搞笑录象,惊奇短片,罕见电影
  3. Vimeo视频媒体):分享你自己剪辑的短片。上传你用自己的数码相机,手机,或摄象机拍摄后剪辑的短片,并通过Vimeo与大家分享。
  4. Daily
    Motion
    (每日行动):发布,标签,整和并分享你的视频剪辑短片。
  5. Imeem(亿门): imeem
    是一个社会媒体服务性质的网站。用户互相观看,传送,分享各种各样的媒体类型,包括包括博客、图片、音频、视频.在某中意义上说,imeem

    是以媒体为中心的社会服务网络,在另一层意义上来说,为用户提供了线上内容分享服务。
  6. ClipShack(剪辑室): ClipShack
    是录象爱好者的社区,用户可以将自己制作的视频上传给人们观赏,讨论,可以与朋友,家人共享短片,可以将这里的视频放入你的博客。
  7. vSocial视频社区): 用最快,最方便的方法上传、观看、分享视频短片。
  8. Jumpcut(跳跃剪刀):
    最好的在线制作、整和、分享电影和幻灯片的网站。这是别无仅有的一个网站。Jumpcut
    为您提供便利。
  9. Video
    Bomb
    (视频炸弹): Video Bomb
    为您过滤出网上最热门的视频短片:您只要点击‘Incoming!’就能找到您最想要的东西。多个类似视频会按照点击率排序。
  10. eyeSpot(关注点):
    拍摄,整和,分享你的视频。在线使用eyespot混合器来编辑并整和你的录象,音乐和图片。免费与世界共享你的视频。
  11. revver
    (回转者): 上传,共享视频。
  12. Avidbeauty(渴望美好): Avid Beauty
    是提供给
    IPOD用户的娱乐社区。我们提供可以下载到IPOD上的博客. 同时为会员提供 Flickr 图片, YouTube 视频和 LiveJournal integration 。

音乐

  1. last.fm: Last.fm是通过搜索和添加你最喜欢的歌手来形成风格的流动音乐网站 。创建你自己的音乐库并通过搜索来寻找和你拥有相似音乐库的同好们。
  2. Musicovery:
    根据心情来发现新的歌曲,通过免费的网络收音机来浏览不同风格和时代的
    音乐
  3. read.io :Read.io将RSS
    feeds转换成播客,由TextToSpeech转播.
    多语言支持.
  4. MusicStrands:
    使用MusicStrands搜索新音乐。听取片段,然后标出你不想购买的歌曲,或者在指定地点标出你想要购买的歌曲。接着从不同的卖主那里购买你想要的音乐。
  5. PODZINGER:
    PODZINGER - 世界上第一个音频,视频搜索引擎。
  6. Upto11:Upto11使用标签和队列向您推介新音乐。你可以创建个人工作页面,分享你的推荐,标签,播放列表。
  7. Pandora: Pandora可以通过你以前和现在的喜好来帮助你寻找并发现新的音乐

通信工具

  1. Meebo:
    meebo, 可以让您收到任何地方的来短信.
    支持 msn,
    yahoo, aol/aim, google talk (gtalk),jabber和icq。
  2. Joopz:
    允许用户从网上向个人及团体发送短信,同时可以直接从网上收到来自收件人来自个人电脑或
    Mac 的回复。Joopz web
    短信可以从世界上所有可以上网的设备上发给任何美国或加拿大的手机用户。
  3. campfire:提供简易的网上商务洽谈室。Campfire允许实时共享,编辑,协作,为用户提供一个安全的,密码保护的洽谈室。
  4. Goowy: 提供免费网页和flash电子邮件服务。用户可以即时通信,发送电子邮件,聊天,更多。
  5. Gizmo: Gizmo
    Project使用你的电脑连接(宽带或拨号),来与其他电脑用户打电话。只要点击鼠标,你就可以和在地球任何地方的朋友,家人,同事通话,就是这么简单。你们可以清楚的聊天,聊多久都可以,免费!
  6. eBuddy:
    为所有人,所有地区提供网上短信服务。
  7. e-messenger: e-Messenger 是一种方便用户在不用安装任何插件或 Java
    程序就可以同MSN, AOL
    和Yahoo用户聊天的应用软件。当你的学校或公司阻断你使用
    IM,即使隔着防火墙,你也可以用Web版的激活了JavaScript的标准ebuddy浏览器。
  8. ILOVEIM: eBuddy是在线提供 MSN, Yahoo 和 AIM
    (AOL)短信网站.当你的学校或公司阻断你使用
    IM,即使隔着防火墙,你也可以用Web版的激活了JavaScript的标准ebuddy浏览器。

图片


  1. Flickr
    :最好的储存、搜索、整理和分享您的图片的地方

  2. Zooomr
    :举世最好的在线分享,搜索,储存,整理照片的网站。

  3. Slide


  4. zoto
    zoto

  5. 23HQ

    :你的图片不是和你喜欢的人分享,而是储存在电脑硬盘上吗?

  6. Mybloop
    : MyBloop-
    免费共享图片,音频,视频。储存量无限制,无须安装软件。

博客

  1. Blogger: 傻瓜网站,可以快速发表你的想法,与人们交流,更多。
  2. Weblogs, Inc: 通过产业环境,创造使用者可以分享的产品。
  3. BlogCode:
    BlogCode.com是一个以StoryCode.com为模板,以快速、简易、直观的方式推荐博客的网站。用它,你可以以你最喜欢的日志(甚至你自己的日志)为基点,来找到
    …..
  4. blo.gs: 通过这个网页和电子邮件,你可以密切关注你最喜欢的日志你甚至可以在旁边制作一个博客名单列表,这样你就可以知道哪些你喜欢的博客更新了.
  5. BlogLines: 免费网搜索,订阅,制作,分享新闻和博客以及丰富的网站内容的网站。

书签

  1. Digg: Digg 主要靠用户自行填充内容。所有的内容都会被提交到本网站。分享,发现,加书签,支持你所喜欢的文章。
  2. del.icio.us: 社区性书签管理器。使用书签本,你可以将书签加入你的列表并将其加以分类。
  3. Reddit: Reddit可以搜索网络上最新,最流行的书籍。输入你正在看的书籍的连接,reddit
    就能知道你喜欢什么类型的书。
  4. StumbleUpon:
    StumbleUpon通过点击频率分析群众对书的质量的评价。当你犹豫的时候,可以看看和你爱好相似的朋友们喜欢的书。
  5. Blinklist:
    真正的人们共享兴趣的的网页名单。为人们喜欢的,或准备稍后收藏的网站写出了
    评价
  6. Blummy:
    一个通过你的书签工具栏,快速连接你喜欢的网页的免费工具。在Blummy
    上添加或制作几个小插件后,你几乎可以做任何事:添加图片到Flickr, 添加站点到del.icio.us,
    在WIkipedia.看文章,从上百个”blummlets”书签中选择你喜欢的,或者制作你自己的书签。

  7. Techcrunch: TechCrunch是关于Web
    2.0的产品及公司的博客,大部分(技术分析)文章都是Michael Arrington所写.
    这个博客第一次开始发表文章是在
    2.05611日。
  8. Furl:用Furl的简易书签,可以从所有网站连接你最喜欢的网页书签。通过Furl可以方便的储存、做笔记、分享你储存的连接、或浏览最热门的书签,来找到最新的或有意思的内容。

  9. Spurl:
    使用Spurl的免费线上书签服务和搜索引擎,你决不会再次无故丢失网页连接。只需点击书签本,Spurl就能快速储存网址,同时通过您的喜好来推荐新文章。
  10. Trailfire: 用于写作,分享的软件。

VOIP(网络电话

  1. Jajah: jah是网络电话提供商,由澳大利亚人Roman Scharf和Daniel
    Mattes制作于
    2.0501月.Jajah 的总部位于美国加洲的Mountain
    View,和卢森堡。Jajah还有一个位于以色列的显影中心。
  2. skype:Skype可以免费下载,免费致电他人.Skype是IP语音软件界的老大。
  3. Private Phone:
    拥有一个免费的当地语音电话号码和信息,你就可以在线查询任何电话。

游戏

1.Trendio: Trendio.com是一个在线的市场预测网站.用户不是真正的钱从公司购买股票,而是用虚拟货币购买有可靠新闻的项目的股票.可用到的词包括时世政治,体育和娱乐新闻中这些词出现的越多,股票的价值就越高.现在这个网站使用大约三千个搜索,来测量这些词的价值.


2.
GameSnips:digg风格的在线游戏列表.可以选择最近更新的游戏列表,或按点击率排列的列表。


3.
Pictaps: Roxik Pictaps -
画一个小人,然后看(控制)他在
3D界面中跳舞。


4.
Broadcast
Game
:
这个广播游戏的目的是:通过用户所在的方位,把所有的电缆和网络终端,连接到通往网络中心的网络上。而你需要做的仅仅是点击或轮流点击电缆,终端,或网络中心。

5.Pikipimp.com : 想过要把图片添加到你的相册中去吗?
使用Pikpimp程序可以方便的将网上任何图片添加到相册中。储存相册后就可以自由的将其加入你自己的网页了。

6.Mainada: 喜欢画漫画和素描吗?(感谢 Tiago)

wiki(维基百科)

  1. Wikipedia: 最大的免费网络多语言支持百科全书。超过2.0万个词条解释,并且数量持续增加中。
  2. LittleWiki:
    你可以在LittleWiki网站上创建公众的或私人的维基网页。Wiki是所有人都可以登入并编辑内容的网站,也就是说你可以编入和编辑所有你想添加的信息,任意阅读其他人编入的信息。

  3. Wetpaint:
    Wetpaint动力网站集合众人的智慧。Wetpaint的主要优势在于允许所有人
    特别是没有技术能力的人和有兴趣,有激情的人一起,来创造并建设网站.
    为了让任何人都可以登入并编辑这个网站,Wetpaint连接了同种类型中最好的万维,博客,论坛,及社区网络。
  4. JotSpot: 用户可以WYSIWYG编辑器来连接Jotspot的安全维基综合网站,建设并分享这个网站。通过安装各种各样的应用软件-项目管理器,公司目录,博客,论坛投票,日历等-来完善你的维基内容,然后邀请他人来投稿。
  5. PBWiki:
    制作一个免费的,密码保护的万维网站就跟做一个花生酱三文治一样容易。轻松上传
    HTML,将文档连接入你的网页,合并RSS,等等。

办公工具

  1. Zoho Office
    Suite
    : 在线Word Processor(文字处理器)。
  2. Google
    Docs & Spreadsheets: 使用Google Docs
    & Spreadsheets,您可以:

* 使用我们的在线编辑器来编排文档,检查拼写,等等

*上传Word,OpenOffice,RTF, HTML或text.文档

*下载…

  1. Num Sum: 简易的网络共享电子制表软件。
  2. Dictinary
    :在线字典。
  3. notifyr.org:使用notifyr.org让您走在前沿.
    Notifyr是一个任何人都可以轻松使用的工具,使用它,您可以每天在世界范围内,轻松快速的接收所有网站的最新更新的文件。网络蚂蚁出了新股票?或新产品上市信息
    ?–永远为您提供最好的,免费的信息。
  4. ThinkFree
    Office
    :
    你是否希望过可以在Linux系统上编辑Excel电子制表软件?你是否希望过可以给同事看一份在电脑上的陈述,而不是用Powerpoint制作的?你是否希望过可以…
  5. Numly: Numly是一个web 2.0的启动,提供web
    2.0下一代的版权和
    DRM数字许可证书。
  6. gOffice:免费的线上文字处理软件,可输出pdfhtml格式的信件,允许个性化信纸模板。

RSS服务

  1. FeedBurner:
    FeedBurner
    博客,播客,商业出版社拥有的内容创造更高的价值。我们将以高级feed管理技术,和熟练的期刊订阅的投递技巧,忠实的为您服务。
  2. Feed Digest: Feed Digest支持RSS和Atom
    feeds的剖析,再生及重新结构。你可以使用它将RSS或Atom feeds的内容转移到你的网站
  3. Attensa: Attensa, Inc.是一个制造RSS阅读器,提供在线RSS聚合器,企业RSS服务和RSS软件自动智能投递的软件公司。
  4. Tiny Tiny RSS: Tiny Tiny RSS是基于网络的新闻feed网站。通过它你可以阅读任何地区的新闻,并且它给人的感觉就像桌面的一个应用程序一样。
  5. Feed43:免费在线(在不影响您工作的状态下)转换网页为RSS
    feed。
  6. Feed
    Mailer
    : 直接向您发送电子邮件。(感谢
    John
    )

电邮

  1. Gmail:
    Gmail是一种实验性质的网络电子邮件,创建它的目的在于可以让你永远没有必要删除邮件,并且总是可以找到你想找到的邮件。

  2. 30 Gigs: 30Gigs.com是只有接到邀请才能注册的网络电子邮件。想想看,足足30G的空间。
  3. Zookoda:
    专门提供给用电子邮件来行销的博客
    。Zookoda以发送电子邮件的方法,为您博客的访客提供您的博客的每日,每周或每月摘要。
  4. Sprout: 为您管理电子邮件销售和服务业务。不需要IT部门,邮件屋可以帮您整理邮件并提供回复建议,节约您的时间,并让您与您的客户保持紧密的联系。不需要做任何设置,只需几分钟就可以迅速启动。
  5. Gawab:提供有特色的电子邮件服务,支持POP/SMTP.

新闻

  1. NewsGator: 在同一个地方就可以阅读所有你喜欢的新闻,网页和博客。
  2. newsvine.com: 用Newsvine追踪突发新闻:先在”The
    Wire”上阅读AP和ESPN上的一连串相关新闻,然后在”The
    Vine”上阅读用户发表的内容和专栏。接着通过评论或投票与其他读者交流,最后在Newsvine上写或者改进自己的专栏。
  3. Gabbr :Gabbr是一个社区新闻和博客网络。用户可以保存和共享他们喜欢的新闻摘要和博客日志。
  4. wired: 新闻网站和期刊,涵盖了技术,文化,商务,政治等方面的新闻。
  5. Clipmarks:
    在线新闻焦点集锦.

文件共享

  1. Box.Net:
    免费在线储存、分享文档的网站。您可以在我们的网络硬盘上储存,浏览,分享文档,也可以检索文档,图片,文档
  2. AllPeers:无限制的私人网络硬盘。任意分享私人图片。不需要记忆密码,没有公用登入通道。不需要上传就可以分享你的视频-节省主机内存,节约时间。私有并且安全。没有间谍插件,没有广告插件,没有讨厌的广告。
  3. MailBigFile 提供可以共享文件的网络硬盘。

其他

  1. Live:
    微软网2.0入口
  2. LinkedIn:类似Facebook,为商务业务人员提供。用它为自己建立一个商务网,来增加寻找工作和被雇佣的可能性,或使用它来与重要商务客户保持联系。
  3. BaseCamp:
    简单的项目管理,黑名单,记数器,时间线,文件共享,日历,等等。Basecamp适用于为大小项目的负责人,提供解决关于交流,合作,组织的方法。
  4. Side Job Track:为独立承包商提供工作跟踪服务。Sidejobtrack为商品,服务,钟点服务提供并管理发票,并汇报付款和进帐的资金流动路线。
  5. Kayak.com 搜索上百个旅行网站为您的飞机旅行和价位提供更多选择。搜索和预定机票是完全免费的,因为我们不是旅行社。
  6. TravBuddy 探险者的网站使用这个网站你不需要周游世界。可能你只是想分享一下一个当地你喜欢的饭馆,或者是上星期在附近发现的一个适合观看落日的地方。不管你是在家还是在国外寻找,发现的乐趣是相同的。对你来说司空见惯的东西,对旅行者来说可能是个惊喜呢。
  7. Wayfaring 是一个可以在谷歌地图上创建自己的路线,地址,标签的有趣的地方。
  8. Omnidrive:
    和世界上第一个网络硬盘一样,你可以把你硬盘中所有的文件上传到这个网站,支持所有平台。
  9. ma.gnolia: 在网络上创建自己的网站及社区.
  10. Ajaxian: Ajax相关博客
  11. Web 2.0 Sites:2.0网站目录,所有2.0网站的相关服务.
十一月 16, 2007

=================================

ANDROID 技巧

运行模拟器
emulator -console

* 将文件写入到模拟器的userdata.img文件中
adb push <file> <dst file>

*将一个目录拷贝到模拟器中,包括子目录
adb push <source> <destination>

* 将一个目录从模拟器中拷出来
adb pull <source> <destination>

* 使得模拟器可以运行arm代码.
使用GNU/ARM Linux编译器编译你的应用程序就可以了

* 在模拟器里面运行shell,需要先运行模拟器
adb shell

*运行模拟器中的一个控制台程序
adb shell <Linux command>

*连接模拟器的控制台
telnet localhost 5554/6/8

运行C程序

参考文献

Native C “Hello World” working in emulator
http://groups.google.com/group/a … wse_thread/threa…

Native C Applications for Android
http://benno.id.au/blog/2007/11/13/android-native-apps

步骤
* 下载GNU/ARM编译工具
http://www.codesourcery.com/gnu_toolchains/arm/download.html

* 编写c/c++代码.

* 使用GNU/ARM Linux 工具创建一个应用程序,不使用动态链接库
ex. arm-none-linux-gnueabi-g++.exe -static -o hello HelloAndroid.cpp

* 启动模拟器
$SDK_ROOT/tools/emulator.exe

* 在命令行窗口运行 abd将编译好的hello程序放入模拟器的磁盘
adb push hello /system/sbin/hello

* 让hello文件变成可执行程序,不要使用 chmod ugo+x
adb shell chmod 777 /system/sbin/hello

* 运行hello程序
adb shell
cd /system/sbin/
hello

EXAMPLE HELLO WORLD CODE
//
// HelloAndroid.cpp
//
//

#include <iostream>
using std::cin;
using std::cout;
using std::endl;

class MyName
{
public:
void getname( void );
void sayhello( void );

private:
char name[ 255 ];

};

void MyName::getname( void )
{
cout << “What is your name? “;
cin >> name;

}

void MyName::sayhello( void )
{
cout << “Welcome ” << name << ” to the world of Android” << endl;

}

MyName name;

int main( int argc, char *argv[] )
{
name.getname();
name.sayhello();
return 0;
}

==============================================

十一月 9, 2007
 
public   bool   IsCorrenctIP(string ip)

  {  
   string pattrn=@”(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])”;
   if(System.Text.RegularExpressions.Regex.IsMatch(ip,pattrn)) 

   {
    return   true;  
   }
   else
   {
    return  
false;  
   
   }
  }

  public   bool   IsValidIP(string   ip)  
  {  
   if  
(System.Text.RegularExpressions.Regex.IsMatch(ip,”[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}”))  

   {  
    string[]   ips   =   ip.Split(’.');  
    if  
(ips.Length   ==   4   ||   ips.Length   ==   6)  
    {  

     if(System.Int32.Parse(ips[0])   <   256   &&  
System.Int32.Parse(ips[1])   <   256   &   System.Int32.Parse(ips[2])  
<   256   &   System.Int32.Parse(ips[3])   <   256)  

      return   true;  
     else  
      return   false;  

    }  
    else  
     return   false; 
   
   }  

   else  
    return   false;  
  }

Powered by ScribeFire.

十一月 7, 2007

为什么使用Lighttpd,从性能方面来说,首先考虑单进程与多进程问题,这也是我为什么不想使用Apache的原因,多进程服务器的惊群问题,简单来说
多进程服务(例如Apache)在一个请求发送时候会唤醒所有sleep的进程,但是最终服务的只有一个,在进程数目很多,请求频繁的时候这会造成一个大
困扰,系统会忙于切换进程,如果看Top会发现CPU使用在system的比例很高,至于Lighttpd则使用单进程来响应quest,使用
libevent,poll()作为event handler,如果在linux2.4下,还可以选择rtsig作为event
handler。如果不使用大文件(>4G)支持,lighttpd使用sendfile()来发送文件,完全的zero-copy,在这方面性能
表现是占优的。同时Lighttpd使用FastCGI来做动态脚本处理,经过实测,在性能表现上也可以接受。

另外就是原先使用Apache的用户迁移成本会比较少,Lighttpd语法与Apache接近,并且核心功能基本实现,我关注的就是
url_rewrite,PHP(这是当然的),alias,custom_log这几个模块,语法接近,并且也同样支持跟cronolog的管道配合日
志,所以迁移之后功能都可以实现。另外我比较了Apache和Lighttpd的Suexec方案,虽然目前Lighttpd并没有官方模块来支持这一特
性,但是就实现的难度来看,跟Apache1.3乃至Apache2+MPM差不多……(如果希望安全的使用Apache2+MPM+PHP,一样需要
FastCGI模式)

如此,我们就可以开始尝试了,首先是Lighttpd的下载,然后把PHP安装为cgi模式,你可能需要安装Libevent,如果需要url_rewrite支持,还需要pcre,安装基础安装可以看TutorialLighttpdAndPHP

安装PHP

./configure \
–prefix=/usr/local/php-cgi \
–enable-fastcgi \
–enable-discard-path \
–enable-force-redirect \
&&make \
&&make install

在php.ini里边修改你的设置

cgi.fix_pathinfo = 1

安装Lighttpd

./configure \
–prefix=/usr/local/lighttpd \
&& make \
&& make install

设定文件范例 PHP部分

fastcgi.server = ( “.php” =>
(( “socket” => “/tmp/php-fastcgi.socket”,
“bin-path” => “/usr/local/php-cgi/bin/php”,
“idle-timeout” => 30,
“min-procs” => 1,
“max-procs” => 1,
“bin-environment” => (
“PHP_FCGI_CHILDREN” => “1″,
“PHP_FCGI_MAX_REQUESTS” => “10000″ ),
“bin-copy-environment” => (
“PATH”, “SHELL”, “USER” ),
“broken-scriptfilename” => “enable”
))
)

一个简单的启动/停止脚本

#!/bin/shLIGHTTPD_CONFIG=/usr/local/apache04/conf/httpd.conf
LIGHTTPD_BIN=/usr/local/apache04/sbin/lighttpd
LIGHTTPD_PID=/usr/local/apache04/lighttpd.pid
test -r $LIGHTTPD_CONFIG || exit 6

case “$1″ in
start )
echo -n “Starting lighttpd”
$LIGHTTPD_BIN -f $LIGHTTPD_CONFIG
;;
stop )
echo -n “Shutting down lighttpd”
killall lighttpd
rm $LIGHTTPD_PID
;;
esac
exit 0

这样就可以跑起来了:)

Lighttpd

libevent

PCRE

Powered by ScribeFire.

Nginx 是一个轻量级的 http server,也可作为 proxy server 使用,由一个俄罗斯哥们儿开发并在一些高负载的站点上跑了2年多。许多人用它来搭建 Rails 应用,有的评测性能已经超过 lighty。Nginx 能快速响应静态页面的请求,支持 fastcgi、ssl、virtual host、rewrite、HTTP Basic Auth、Gzip 等,功能比较完备,配置文件也是类似 lighty 那种很简介的形式。

Nginx 和 PHP 一起应用应该也是个不错的搭配:
1. 第一步安装 Nginx,最新版本是 0.5.5,配置:

./configure         –sbin-path=/usr/local/nginx/nginx         –conf-path=/usr/local/nginx/nginx.conf         –pid-path=/usr/local/nginx/nginx.pid         –with-http_ssl_module

如果是需要 rewrite 模块的话,系统需要有 pcre-devel 类似的包,然后就是 make ; make install 。

2. 然后需要 PHP 有 fastcgi 的支持,编译的时候带上 –enable-fastcgi 这个选项。

3. 运行FastCGI server,有2种方法,一种是运行 PHP 自带的 FastCGI server,可以用类似的脚本来执行;一种是使用 spawn-fcgi 这样的工具(lighty网站上有下载),推荐用后者,使用很方便:

spawn-fcgi -a 127.0.0.1 -p 9000 -u jason -f /usr/bin/php-cgi 

4. 配置 Nginx,将 nginx.conf 中关于 PHP 支持那段按实际情况稍作修改即可:

location ~ .php$ {    fastcgi_pass   127.0.0.1:9000;    fastcgi_index  index.php;    fastcgi_param  SCRIPT_FILENAME  /usr/local/nginx/html$fastcgi_script_name;    include        conf/fastcgi_params;}

那个 include 的 conf 目录可以在源码包里复制过来。

5. 启动 nginx,访问 localhost,能看到一个大大的 Welcome to nginx!,再跑几个 PHP 应用试试。

更多的资料可以参考:Nginx English Wiki

Powered by ScribeFire.

一、) 安装Nginx
1.) 安装
Nginx发音为[engine x],是由俄罗斯人Igor Sysoev建立的项目,基于BSD许可。据说他当初是F5的成员之一,英文主页:http://nginx.net。俄罗斯的一些大网站已经使用它超过两年多了,一直表现不凡。
Nginx的编译参数如下:

[root@localhost]#./configure --prefix=/usr/local/server/nginx --with-openssl=/usr/include –with-pcre=/usr/include/pcre/ –with-http_stub_status_module –without-http_memcached_module –without-http_fastcgi_module –without-http_rewrite_module –without-http_map_module –without-http_geo_module –without-http_autoindex_module

在这里,需要说明一下,由于Nginx的配置文件中我想用到正则,所以需要 pcre 模块的支持。我已经安装了 pcrepcre-devel 的rpm包,但是 Ngxin 并不能正确找到 .h/.so/.a/.la 文件,因此我稍微变通了一下:

[root@localhost]#mkdir /usr/include/pcre/.libs/[root@localhost]#cp /usr/lib/libpcre.a /usr/include/pcre/.libs/libpcre.a[root@localhost]#cp /usr/lib/libpcre.a /usr/include/pcre/.libs/libpcre.la

然后,修改 objs/Makefile 大概在908行的位置上,注释掉以下内容:

./configure --disable-shared

接下来,就可以正常执行 makemake install 了。

2.) 修改配置文件 /usr/local/server/nginx/conf/nginx.conf
以下是我的 nginx.conf 内容,仅供参考:

#运行用户user  nobody nobody;

#启动进程worker_processes  2;

#全局错误日志及PID文件error_log  logs/error.log notice;pid        logs/nginx.pid;

#工作模式及连接数上限events {        use epoll;        worker_connections      1024;}

#设定http服务器,利用它的反向代理功能提供负载均衡支持http {        #设定mime类型        include       conf/mime.types;        default_type  application/octet-stream;

        #设定日志格式        log_format main         ‘$remote_addr - $remote_user [$time_local] ‘                                                ‘”$request” $status $bytes_sent ‘                                                ‘”$http_referer” “$http_user_agent” ‘                                                ‘”$gzip_ratio”‘;

        log_format download ‘$remote_addr - $remote_user [$time_local] ‘                                                ‘”$request” $status $bytes_sent ‘                                                ‘”$http_referer” “$http_user_agent” ‘                                                ‘”$http_range” “$sent_http_content_range”‘;

        #设定请求缓冲        client_header_buffer_size    1k;        large_client_header_buffers  4 4k;

        #开启gzip模块        gzip on;        gzip_min_length  1100;        gzip_buffers     4 8k;        gzip_types       text/plain;

        output_buffers   1 32k;        postpone_output  1460;

        #设定access log        access_log  logs/access.log  main;

        client_header_timeout  3m;        client_body_timeout    3m;        send_timeout           3m;

        sendfile                on;        tcp_nopush              on;        tcp_nodelay             on;

        keepalive_timeout  65;

        #设定负载均衡的服务器列表        upstream mysvr {                #weigth参数表示权值,权值越高被分配到的几率越大                #本机上的Squid开启3128端口                server 192.168.8.1:3128 weight=5;                server 192.168.8.2:80   weight=1;                server 192.168.8.3:80   weight=6;        }

        #设定虚拟主机        server {                listen          80;                server_name     192.168.8.1 www.yejr.com;

                charset gb2312;

                #设定本虚拟主机的访问日志                access_log  logs/www.yejr.com.access.log  main;

                #如果访问 /img/*, /js/*, /css/* 资源,则直接取本地文件,不通过squid                #如果这些文件较多,不推荐这种方式,因为通过squid的缓存效果更好                location ~ ^/(img|js|css)/  {                        root    /data3/Html;                        expires 24h;                }

                #对 “/” 启用负载均衡                location / {                        proxy_pass      http://mysvr;

                        proxy_redirect          off;                        proxy_set_header        Host $host;                        proxy_set_header        X-Real-IP $remote_addr;                        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;                        client_max_body_size    10m;                        client_body_buffer_size 128k;                        proxy_connect_timeout   90;                        proxy_send_timeout      90;                        proxy_read_timeout      90;                        proxy_buffer_size       4k;                        proxy_buffers           4 32k;                        proxy_busy_buffers_size 64k;                        proxy_temp_file_write_size 64k;                }

                #设定查看Nginx状态的地址                location /NginxStatus {                        stub_status             on;                        access_log              on;                        auth_basic              “NginxStatus”;                        auth_basic_user_file  conf/htpasswd;                }        }}

运行以下命令检测配置文件是否无误:

< pre>  如果没有报错,那么就可以开始运行Nginx了,执行以下命令即可:
< pre>  备注:conf/htpasswd 文件的内容用 apache 提供的 htpasswd 工具来产生即可,内容大致如下:
< pre #帐号 yejr,密码 123456 yejr:qLYyJ0ZRLAId2>  3.) 查看 Nginx 运行状态  输入地址 http://192.168.8.1/NginxStatus/,输入验证帐号密码,即可看到类似如下内容:
Active connections: 328server accepts handled requests9309 8982 28890Reading: 1 Writing: 3 Waiting: 324

第一行表示目前活跃的连接数
第三行的第三个数字表示Nginx运行到当前时间接受到的总请求数,如果快达到了上限,就需要加大上限值了。
第四行看不懂 :(

Powered by ScribeFire.

Nginx,它的发音为“engine X” 是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP 代理服务器.Nginx
是由 Igor Sysoev
为俄罗斯访问量第二的 Rambler.ru
站点开发的,它已经在该站点运行超过两年半了。直到20074月,俄罗 斯大约有20%左右的虚拟主机是由nignx服务或代理的。Google在线安全博客中统计nginx服务或代理了大约所有Internet虚拟主机的4%。而netcraft的统计显示,nginx服务的主机在过去的一年里以四倍的速度增长。短短的几年里,它的排名已跃进第9(参见:http://survey.netcraft.com/Reports/200707/)

 

现在,Igor
将源代码以类BSD许可证的形式发布。Nginx因为它的稳定性、丰富的模块库、灵活的配置和低系统资源的消耗而闻名.业界一致认为它是Apache2.2mod_proxy_balancer的轻量级代替者,不仅是因为响应静态页面的速度非常快,而且它的模块数量达到Apache的近2/3。对proxy
rewrite
模块的支持很彻底,还支持mod_fcgissl
vhosts ,适合用来做mongrel clusters的前端HTTP响应。

 

nginx做为HTTP服务器,有以下几项基本特性:

<!–[if !supportLists]–>处理静态文件,索引文件以及自动索引;打开文件描述符缓冲.

<!–[if !supportLists]–>无缓存的反向代理加速,简单的负载均衡和容错.

<!–[if !supportLists]–>FastCGI,简单的负载均衡和容错.

<!–[if !supportLists]–>模块化的结构。包括gzipping, byte ranges, chunked responses,
以及 SSI-filterfilter。如果由FastCGI或其它代理服务器处理单页中存在的多个SSI,则这项处理可以并行运行,而不需要相互等待。

<!–[if !supportLists]–>支持SSL TLS
SNI

 

Nginx专为性能优化而开发,性能是其最重要的考量,
实现上非常注重效率 。它支持内核Poll模型,能经受高负载的考验,
有报告表明能支持高达 50,000
个并发连接数。

 

Nginx具有很高的稳定性。其它HTTP服务器,当遇到访问的峰值,或者有人恶意发起慢速连接时,也很可能会导致服务器物理内存耗尽频繁交换,失去响应,只能重启服务器。例如当前apache一旦上到200个以上进程,web响应速度就明显非常缓慢了。而Nginx采取了分阶段资源分配技术,使得它的CPU与内存占用率非常低。nginx官方表示保持10,000个没有活动的连接,它只占2.5M内存,所以类似DOS这样的攻击对nginx来说基本上是毫无用处的。就稳定性而言,
nginx
lighthttpd更胜一筹。

 

Nginx支持热部署。它的启动特别容易, 并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动。你还能够在不间断服务的情况下,对软件版本进行进行升级。

 

Nginx采用master-slave模型,
能够充分利用SMP的优势,且能够减少工作进程在磁盘I/O的阻塞延迟。当采用select()/poll()调用时,还可以限制每个进程的连接数。

 

Nginx代码质量非常高,代码很规范,
手法成熟, 模块扩展也很容易。特别值得一提的是强大的UpstreamFilter链。 Upstream为诸如reverse proxy,
与其他服务器通信模块的编写奠定了很好的基础。而Filter链最酷的部分就是各个filter不必等待前一个filter执行完毕。它可以把前一个filter的输出做为当前filter的输入,这有点像Unix的管线。这意味着,一个模块可以开始压缩从后端服务器发送过来的请求,且可以在模块接收完后端服务器的整个请求之前把压缩流转向客户端。

 

Nginx采用了一些os提供的最新特性如对sendfile (Linux
2.2+)
accept-filter (FreeBSD
4.1+)
TCP_DEFER_ACCEPT (Linux 2.4+)
的支持,从而大大提高了性能。

 

当然,nginx还很年轻,多多少少存在一些问题,比如:

<!–[if !supportLists]–>Nginx是俄罗斯人创建,目前文档方面还不是很完善.因为文档大多是俄语,所以文档方面这也是个障碍.

<!–[if !supportLists]–>尽管nignx的模块比较多,但它们还不够完善。

<!–[if !supportLists]–>对脚本的支持力度不够。

 

这些问题,nginx的作者和社区都在努力解决,我们有理由相信nginx将继续以高速的增长率来分享轻量级HTTP服务器市场,会有一个更美好的未来。

Powered by ScribeFire.

十一月 6, 2007

         
Web2.0无论在国内外的IT界都是热门话题,我都没想到前几天的那篇“谁是中国未来十年的Web2.0英雄”会是那么hot的一篇文章,估计我今天这个惹眼的blog标题也会让这篇blog很火热:)。国内很多对Web2.0的讨论都是在理论层面上的,而今天看到的这篇blog则是从操作层面上阐述如何创建一个成功的Web2.0网站,其中谈论的一些手法值得国内的Web2.0公司去借鉴。

1、为用户解决一个“小”问题,并清楚地知道你要解决的是什么问题。我的理解就是从一个小处着眼,而这个小处恰恰是用户需求没有得到满足的地方。比如文章中举的Google的例子,Google开始只是为解决大家资料搜索的困难(不过Google算Web2.0网站吗?呵呵),比如Flickr就是为了解决大家图片的存储与共享的困难,从这样针对性的“小处”开始,能够一针见血地吸引到用户来使用你的服务。

2、找到负责任而且积极参与讨论的用户。拥有这些投入的用户是你最大的财富,他们会不停地提出各种改进建议,让你的服务变得更加完美。

3、尽早推出。不要等到服务“完美”了之后再推出,而是让你的用户去帮助你完善服务,通过用户的完善才是真正尊重用户体验与用户需求的完善,比你闭门造车的结果要好得多。而且持续有新的功能推出反而会更加吸引到你的用户继续使用。而在服务推出后,则要不断地完善,就如keso在blog中提到的永远的测试版的概念。

4、让用户可随处使用你的服务。不要让你的用户只有在你的网站上才能享受到你的服务,而要让你的用户在任何地点都可以有使用你的服务的方式,就如del.icio.us的Linkroll功能,Flickr的blog发布功能,豆瓣的在自己blog上发布的功能,365key的昨日新闻功能等等。

5、不要违背用户的意愿。如果用户想离开,就大大方方地为他们的离开提供可行的方式,将重点放在提升网站的服务与用户的体验,让用户自己愿意回来,而不是让他们不得不继续使用你的服务。

6、简单就是美。为用户提供最简单但能够满足他们需求的方式。

7、用免费的服务吸引与挽留用户,不要急于收费。

8、不要在市场推广上浪费金钱。互联网与blog的普及已经让口耳相传的成本变得很低,只要你的服务能够让用户满意,他们就会主动替你在blog上宣传,为你带来病毒营销的力量。

9、不要过度融资。资金不足当然是个问题,但过度融资可能会让你的目标膨胀,业务多元化,放弃了自己最核心的产品和竞争力。

10、没有人一无是处。你需要认真地研究和对待每一个竞争者,借鉴他们的优势和强项,没有任何竞争者是一无是处不值得你学习的。

PS.因为只是简单的意译,建议大家有空的话也可以认真读一读原文以及下面的留言讨论。

Powered by ScribeFire.

十一月 2, 2007
FireBug 是一个非常实用的JavaScript以及DOM查看调试工具,是 Firefox 的一个插件。使用 FireBug 调试 AJAX 应用非常方便,终于可以告别 alert 时代了!

Console Logging 函数

FireBug 为所有 Web 页面提供了一个 console 对象。这个对象有以下函数:

Logging 基础

console.log(”message” [,objects]) - 将一个字符串打印到控制台。字符串可以包含任何“String Formatting”小节描述的模式。字符串后面的对象应该用来取代之前字符串中的模式。(译者注:大家用过C里面 printf 吧,效果基本是一样的。)

Logging 等级

通常根据不同的等级来区分Logging的严重程度是很有帮助的。FireBug 提供了4个等级。为了达到视觉分离的效果,这些函数与 log 不同的地方就是它们在被调用的时候会自动包含一个指向代码行数的链接。

console.debug(”message” [,objects]) - 记录一个 debug 消息。
console.info(”message” [,objects]) - 记录一个信息.
console.warn(”message” [,objects]) - 记录一个警告.
console.error(”message” [,objects]) - 记录一个错误.

断言

断言是一条确保代码规则的非常好的途径。console 对象包含了一系列各种类型的断言函数,并且允许你编写自己的断言函数。

console.assert(a, “message” [,objects]) - Asserts that an a is true.
console.assertEquals(a, b, “message” [,objects]) - Asserts that a is equal to b.
console.assertNotEquals(a, b, “message” [,objects]) - Asserts that a is not equal to b.
console.assertGreater(a, b, “message” [,objects]) - Asserts that a is greater than b.
console.assertNotGreater(a, b, “message” [,objects]) - Asserts that a is not greater than b.
console.assertLess(a, b, “message” [,objects]) - Asserts that a is less than b.
console.assertNotLess(a, b, “message” [,objects]) - Asserts that a is not less than b.
console.assertContains(a, b, “message” [,objects]) - Asserts that a is in the array b.
console.assertNotContains(a, b, “message” [,objects]) - Asserts that a is not in the array b.
console.assertTrue(a, “message” [,objects]) - Asserts that a is equal to true.
console.assertFalse(a, “message” [,objects]) - Asserts that a is equal to false.
console.assertNull(a, “message” [,objects]) - Asserts that a is equal to null.
console.assertNotNull(a, “message” [,objects]) - Asserts that a is not equal to null.
console.assertUndefined(a, “message” [,objects]) - Asserts that a is equal to undefined.
console.assertNotUndefined(a, “message” [,objects]) - Asserts that a is not equal to undefined.
console.assertInstanceOf(a, b, “message” [,objects]) - Asserts that a is an instance of type b.
console.assertNotInstanceOf(a, b, “message” [,objects]) - Asserts that a is not an instance of type b.
console.assertTypeOf(a, b, “message” [,objects]) - Asserts that the type of a is equal to the string b.
console.assertNotTypeOf(a, b, “message” [,objects]) - Asserts that the type of a is not equal to the string b.

测量(Measurement)

下面的一些函数可以让你方便的测量你的一些代码。

console.trace() - 记录执行点的堆栈信息。
console.time(”name”) - 根据 name 创建一个唯一的计时器。
console.timeEnd(”name”) - 根据 name 停止计时器,并且记录消耗的时间,以毫秒为单位。
console.count(”name”) - 记录该行代码执行的次数。

字符串格式化

所有 console 的 logging 函数都可以通过以下模式格式化字符串:

%s - 将对象格式化为字符串。
%d, %i, %l, %f - 将对象格式化为数字。
%o - 将对象格式化成一个指向 inspector 的超链接。
%1.o, %2.0, etc.. - 将对象格式化成包含自己属性的可交互的表格。
%.o - 将对象格式化成具有自身属性的一个数组。
%x - 将对象格式化成一个可交互的 XML 树形结构。
%1.x, %2.x, etc.. - 将对象格式化成一个可交互的 XML 数型结构,并且展开 n 层节点。

如果你需要一个真实的 % 符号,你可以通过一个转移符号就像这样 “\%”。

命令行函数

内建的命令行函数可以通过以下命令行使用:

$(”id”) - document.getElementById() 的简写。(译者注:跟 prototype.js 学来的吧?)
$$(”css”) - 返回一个符合 CSS 选择器的元素数组。
$x(”xpath”) - 返回一个符合 XPath 选择器的元素数组。
$0 - 返回最近被检查(inspected)的对象。
$1 - 返回最近被检查(inspected)的下一个对象。
$n(5) - 返回最近被检查的第n个对象。
inspect(object) - 将对象显示在 Inspector 中。
dir(object) - 返回一个对象的属性名数组。(译者注:跟 Python 学的?)
clear() - 清除控制台信息。

Powered by ScribeFire.

十月 31, 2007

A former student asked me a few days ago how I learned Ruby on Rails. The
answer was that I simply read alot of great tutorials. So in the spirit of
sharing, here are the 12 tutorials that I found most useful:

  1. Rolling
    with Ruby on Rails
    - Curtis Hibbs of ONLamp.com offers his first excellent
    introduction to Ruby on Rails. This is the article that got me really excited
    about RoR.
  2. Rolling
    with Ruby on Rails, Part 2
    - The sequel to Curtis Hibbs excellent series of
    articles.
  3. Four Days on Rails (PDF) - a great
    tutorial that is broken down into simple tasks that you can do over a four day
    period. To be quite honest, this tutorial only takes about 2 hours, but
    nonetheless it is very well organized!
  4. Really
    Getting Started in Rails
    - Amy Hoy has a great tutorial that not only covers
    RoR, but also introduces the reader to many of the basic concepts of the very
    cool Ruby scripting language.
  5. Tutorial in Ruby
    on Rails
    - is a basic tutorial aimed at newbies.
  6. Fast-track
    your Web apps with Ruby on Rails
    - IBM jumps into the sandbox with an
    excellent (as usual) tutorial to get you on your feet fast.
  7. Getting
    Your Feet Wet With Ruby on Rails
    - Talking about getting on your feet fast,
    this one from Webmonkey promises to get them wet too!
  8. How to
    make a todo list program with Rails
    - Another excellent introductory
    tutorial that actually helps you build something useful!
  9. Ajax
    on Rails
    - Curtis Hibbs offers part 3 of his look at RoR
  10. Many
    to Many Tutorial for Rails (PDF)
    - is a nice document that begins to delve
    into some of the more complex parts of web application programming, but in fine
    Ruby on Rails manner, it’s really not too complicated!
  11. Distributing
    Rails Applications - A Tutorial
    - So now you’ve built your RoR application,
    how to you push it to a production server? This tutorial covers the bases.
  12. Installing Ruby on
    Rails with Lighttpd and MySQL on Fedora Core 4
    - and of course this list
    wouldn’t be complete without a shameless bit of self-promotion, this tutorial
    promises what it says. Other install tutorials can be found here, here and here!

Happy Rails developing and if you have any other tutorials that you’d like to
share, please leave them in the comments!

Powered by ScribeFire.

下一页 »