<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet href='http://feeds.feedsky.com/styles/temp01.xsl' type='text/xsl' ?><!--这是一个由Feedsy提供技术支持的Feed，为了提高读者阅读的体验，以及满足用户美化自己Feed的需要，我们设计了多种精美的Feed模板，提供给大家选择，所有最终呈现出来的样式，皆由用户自愿选择使用，未经许可，任何团体和个人，请不要擅自修改样式或者盗用，这是对于用户选择权的尊重。--><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:fs="http://www.feedsky.com/namespace/feed" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><atom:link href="http://feeds.feedsky.com/csdn.net/btmao" type="application/rss+xml" rel="self"></atom:link><fs:self_link href="http://feeds.feedsky.com/csdn.net/btmao" type="application/rss+xml"></fs:self_link><lastBuildDate>Mon, 09 Mar 2009 21:49:00 GMT</lastBuildDate><title>博之BTMAO</title><description>B小T的幸福生活</description><link>http://blog.csdn.net/btmao/</link><item><title>关于JS——架构的设计</title><link>http://blog.csdn.net/btmao/archive/2009/03/09/3974551.aspx</link><wfw:comment>http://blog.csdn.net/btmao/comments/3974551.aspx</wfw:comment><slash:comments>0</slash:comments><wfw:commentRss>http://blog.csdn.net/btmao/comments/commentRss/3974551.aspx</wfw:commentRss><trackback:ping>http://tb.blog.csdn.net/TrackBack.aspx?PostId=3974551</trackback:ping><description>原文地址：http://www.btmao.org/2009/03/09/jscodemodel/

 

随着web技术的发展，web2.0开始成为主流，JS在整个系统中的地位越来越重要，而对于JS的优化和架构的建立也越来越受到重视。

一、为自己的系统选择一个合适的框架

prototype和Jquery都是很好的框架。

prototype是一个完全存在于底层的代码，他优化了JS的面向对象的扩展，封装了DOM操作API，很好的处理了事件，AJAX等，体积也很小。要说他的缺点，恐怕就是它本身并没有实现太多的功能。
JQuery，本身实现了很多特效，能帮助工程师完成很多工作，即便是工程师对JS并不那么熟悉。它很重视代码的简介与高效。是一个很不错的库类，鼎鼎大名的YUI都复用了很多他的代码。
选好了一个框架，之后就应该要求工程师按照框架的要求去进行开发。否则，这个框架的选择还有什么意义呢。

二、不要把只有单独的子项目才会使用的JS放在全站都会引用的.js文件里

这个几乎是毋庸置疑的。但是有时候我们需要去减少一张页面的JS文件请求数，这时候我们通常会&lt;img src =&quot;http://blog.csdn.net/btmao/aggbug/3974551.aspx&quot; width = &quot;1&quot; height = &quot;1&quot; /&gt;</description><pubDate>Tue, 10 Mar 2009 05:49:00 +0800</pubDate><author>btmao</author><comments>http://blog.csdn.net/btmao/archive/2009/03/09/3974551.aspx#Feedback</comments><guid isPermaLink="false">http://blog.csdn.net/btmao/archive/2009/03/09/3974551.aspx</guid><dc:creator>btmao</dc:creator><fs:srclink>http://blog.csdn.net/btmao/archive/2009/03/09/3974551.aspx</fs:srclink><fs:srcfeed>http://blog.csdn.net/btmao/feed.aspx</fs:srcfeed><fs:itemid>csdn.net/btmao/~7399510/212120934/5509029</fs:itemid></item><item><title>说说JAVA的接口</title><link>http://blog.csdn.net/btmao/archive/2009/03/09/3974547.aspx</link><wfw:comment>http://blog.csdn.net/btmao/comments/3974547.aspx</wfw:comment><slash:comments>0</slash:comments><wfw:commentRss>http://blog.csdn.net/btmao/comments/commentRss/3974547.aspx</wfw:commentRss><trackback:ping>http://tb.blog.csdn.net/TrackBack.aspx?PostId=3974547</trackback:ping><description>原文地址：http://www.btmao.org/2009/03/09/javainterface/



学习JAVA的过程中，最让我郁闷的恐怕就是接口这个东西了。这个Interface，一度让我觉得是个鸡肋，看清楚，是鸡肋不是基类。在我一直的意识中，OO就是抽象，继承，再抽象，再继承。而这个接口在我看来无非是一个继承的替代品，一个多重继承的替代品。

可以为什么，我们要做接口而不是直接实现多重继承呢，JAVA开发组毕竟不是傻的。我带着疑问询问了google和还有一些前辈。

interface，可以说是class的类别，也可以说是对class的定义的一种规范。把不同的对象放到不同的接口里面，然后更好的管理它们。是一种对对象的抽象。

抽象这个词在这里额外的重要。其实对于继承来说，继承的意义也并不是完全在于我想要复用代码，而是在抽象。假设我们有类A里面有一函数run，类B 也想用这个方法。于是有些人就class B extends A，这样的做法是不经过大脑的。其实我们有办法来实现而不造成更大的负担，比如：

class B {
    function &lt;img src =&quot;http://blog.csdn.net/btmao/aggbug/3974547.aspx&quot; width = &quot;1&quot; height = &quot;1&quot; /&gt;</description><pubDate>Tue, 10 Mar 2009 05:47:00 +0800</pubDate><author>btmao</author><comments>http://blog.csdn.net/btmao/archive/2009/03/09/3974547.aspx#Feedback</comments><guid isPermaLink="false">http://blog.csdn.net/btmao/archive/2009/03/09/3974547.aspx</guid><dc:creator>btmao</dc:creator><fs:srclink>http://blog.csdn.net/btmao/archive/2009/03/09/3974547.aspx</fs:srclink><fs:srcfeed>http://blog.csdn.net/btmao/feed.aspx</fs:srcfeed><fs:itemid>csdn.net/btmao/~7399510/212120935/5509029</fs:itemid></item><item><title>弱弱的说一下敏捷开发</title><link>http://blog.csdn.net/btmao/archive/2009/03/09/3974542.aspx</link><wfw:comment>http://blog.csdn.net/btmao/comments/3974542.aspx</wfw:comment><slash:comments>0</slash:comments><wfw:commentRss>http://blog.csdn.net/btmao/comments/commentRss/3974542.aspx</wfw:commentRss><trackback:ping>http://tb.blog.csdn.net/TrackBack.aspx?PostId=3974542</trackback:ping><description>原文地址：http://www.btmao.org/2009/03/04/smartdev/



关于敏捷开发，这已经不是一个新词了，我第一次听到敏捷开发这个名词的时候已经是好几年前。可是最近我才真正的开始关注和学习敏捷开发的思想。

首先，敏捷开发是一种针对人的以人为核心的开发模式，这是一种循序渐进的开发模式。他强调的是人与人之间的交互，而不是工具或者其他的流程。它有完整的开发团队，扁平式的，工程师与工程师之间，工程师与项目经理之间直接进行沟通。它把系统划分为若干个尽量小而简单的模块。它要求团队所有成员所做的事情都只是恰到好处。它甚至觉得我们应该拥有一个更好的沟通模式和流程控制，然后抛弃文档，因为文档会耗费大量的时间。

我们需要持续的向客户或者产品设计人员提交版本来让它了解进度并随时给出修改意见，这样做能避免更大程度的返工，也更能在不停的使用中进行测试，找出不尽人意的地方。

进度的控制很重要。进度是保持开发持续性的一个重要因素。而开发持续性是敏捷开发在代码质量控制的过程中的重中之重。

我们需要更好的架构和需求设计。更好的架构能保证模块与模块之间的解耦性&lt;img src =&quot;http://blog.csdn.net/btmao/aggbug/3974542.aspx&quot; width = &quot;1&quot; height = &quot;1&quot; /&gt;</description><pubDate>Tue, 10 Mar 2009 05:46:00 +0800</pubDate><author>btmao</author><comments>http://blog.csdn.net/btmao/archive/2009/03/09/3974542.aspx#Feedback</comments><guid isPermaLink="false">http://blog.csdn.net/btmao/archive/2009/03/09/3974542.aspx</guid><dc:creator>btmao</dc:creator><fs:srclink>http://blog.csdn.net/btmao/archive/2009/03/09/3974542.aspx</fs:srclink><fs:srcfeed>http://blog.csdn.net/btmao/feed.aspx</fs:srcfeed><fs:itemid>csdn.net/btmao/~7399510/212120936/5509029</fs:itemid></item><item><title>打台球与写程序</title><link>http://blog.csdn.net/btmao/archive/2009/03/09/3974537.aspx</link><wfw:comment>http://blog.csdn.net/btmao/comments/3974537.aspx</wfw:comment><slash:comments>0</slash:comments><wfw:commentRss>http://blog.csdn.net/btmao/comments/commentRss/3974537.aspx</wfw:commentRss><trackback:ping>http://tb.blog.csdn.net/TrackBack.aspx?PostId=3974537</trackback:ping><description>原文地址：http://www.btmao.org/2009/03/03/billiardsandcoding/



我是个十足的台球爱好者。而自认为技术不错只是状态不稳定，嘿嘿。我也很喜欢写程序，至少以前是，虽然现在我更多把他看作是一种工作。但是我窃以为打台球与写程序是有相同相通之处的，如下。

架构思维

我们都知道打台球的时候要注意下颗球的走位，而且这个过程中你通常还得让这个走位更适合你在击打下一个颗球之后的连续击打。对于美式黑八，高手们通常都在开球之后就观察局面，布置战术流程，每颗球怎么走走到哪里。

在写程序的时候这个通常叫做架构思维。实际上在一个团队里，架构思维是很重要的。当你处在一个team work，你的每一个工作每一个项目都在不同程度的为你的团队、团队的其他成员以及你开发的系统服务。在一个较大系统的开发中，如果不注重架构，便会出现以下情况：1. 牵一发而动全身，当你要改动你的代码的时候你不得不去关注其他各种系统的异常，加大其他开发工程师和测试工程师的工作量，严重时可能会引起众怒。2. 一处不干净的代码可能拖慢整个系统，往往是这样，在你coding&lt;img src =&quot;http://blog.csdn.net/btmao/aggbug/3974537.aspx&quot; width = &quot;1&quot; height = &quot;1&quot; /&gt;</description><pubDate>Tue, 10 Mar 2009 05:44:00 +0800</pubDate><author>btmao</author><comments>http://blog.csdn.net/btmao/archive/2009/03/09/3974537.aspx#Feedback</comments><guid isPermaLink="false">http://blog.csdn.net/btmao/archive/2009/03/09/3974537.aspx</guid><dc:creator>btmao</dc:creator><fs:srclink>http://blog.csdn.net/btmao/archive/2009/03/09/3974537.aspx</fs:srclink><fs:srcfeed>http://blog.csdn.net/btmao/feed.aspx</fs:srcfeed><fs:itemid>csdn.net/btmao/~7399510/212120937/5509029</fs:itemid></item><item><title>2008那一SNS年</title><link>http://blog.csdn.net/btmao/archive/2009/03/09/3974533.aspx</link><wfw:comment>http://blog.csdn.net/btmao/comments/3974533.aspx</wfw:comment><slash:comments>0</slash:comments><wfw:commentRss>http://blog.csdn.net/btmao/comments/commentRss/3974533.aspx</wfw:commentRss><trackback:ping>http://tb.blog.csdn.net/TrackBack.aspx?PostId=3974533</trackback:ping><description>原文地址：http://www.btmao.org/2009/03/02/2008sns/



如果说我算是进入SNS这个行业的话已经一年了。而这一年，就是被称作是“SNS年”的一年。如果我说要盘点这一年的话明显是没有公信力的，所以我只是回顾这一年我所看到的想到的。

一、千橡，开心，51都融资了，facebook还没有上市

SNS爆发的这一年，手握现金的投资商们也爆发了，形形色色的大大小小的SNS很多都不同程度的拿到了一笔融资。我不清楚到底用户数、流量、PV能值多少钱，因为在我看来如果没有一个良好的盈利模式，以上的三个指标都会增加成本而不能转化为有效的生产力。当然，用户资源就是网站的无形资产，有了用户便是好事情，因为有了用户再加上盈利模式就能赚钱，就怕空有盈利模式却没有用户。但是facebook依然找不到盈利模式的现状再结合其他的因素让我对现在的SNS网站的前景也并不看好。这些其他因素后来也会讲到。

二、无耻，还可以更无耻一些

开心病毒营销爆发的背后，让我们看到了那些不光彩的一面，比如那些垃圾邮件，那些擅自使用用户MSN联系人列表发出去的邀请信，同时&lt;img src =&quot;http://blog.csdn.net/btmao/aggbug/3974533.aspx&quot; width = &quot;1&quot; height = &quot;1&quot; /&gt;</description><pubDate>Tue, 10 Mar 2009 05:43:00 +0800</pubDate><author>btmao</author><comments>http://blog.csdn.net/btmao/archive/2009/03/09/3974533.aspx#Feedback</comments><guid isPermaLink="false">http://blog.csdn.net/btmao/archive/2009/03/09/3974533.aspx</guid><dc:creator>btmao</dc:creator><fs:srclink>http://blog.csdn.net/btmao/archive/2009/03/09/3974533.aspx</fs:srclink><fs:srcfeed>http://blog.csdn.net/btmao/feed.aspx</fs:srcfeed><fs:itemid>csdn.net/btmao/~7399510/212120938/5509029</fs:itemid></item><item><title>PHP的魔术函数们</title><link>http://blog.csdn.net/btmao/archive/2009/03/09/3974513.aspx</link><wfw:comment>http://blog.csdn.net/btmao/comments/3974513.aspx</wfw:comment><slash:comments>0</slash:comments><wfw:commentRss>http://blog.csdn.net/btmao/comments/commentRss/3974513.aspx</wfw:commentRss><trackback:ping>http://tb.blog.csdn.net/TrackBack.aspx?PostId=3974513</trackback:ping><description>原文地址：http://www.btmao.org/2009/02/26/magicfuncofphp/



PHP5带给我们的面向对象的变化是伟大的是空前的是胜利的，就像所有的两会一样。尤其是它提供给我们的那些魔术函数，更是像桂林山水一样令人流连忘返。

1. __construct() 构造函数


这是PHP默认的构造函数，它并不能主动被程序调用只能是在对象创建的时候被自动调用。同时为了向下兼容，PHP5也支持与类同名的构造函数，值得一提的是当两种构造函数同时存在的时候，__construct()将不会被调用。

2. __destruct() 析构函数

3. __get($key)

当读取一个不存在的属性时调用。

varnotexist;
?&gt; 
上面的这段程序将会输出：varnotexist is not exist。

4. __set($key, value)

与__get($key)类似，而它是在修改一个不存在的属性时被调用。

5. __call($key, $args)

与__get($key)类似，&lt;img src =&quot;http://blog.csdn.net/btmao/aggbug/3974513.aspx&quot; width = &quot;1&quot; height = &quot;1&quot; /&gt;</description><pubDate>Tue, 10 Mar 2009 05:37:00 +0800</pubDate><author>btmao</author><comments>http://blog.csdn.net/btmao/archive/2009/03/09/3974513.aspx#Feedback</comments><guid isPermaLink="false">http://blog.csdn.net/btmao/archive/2009/03/09/3974513.aspx</guid><dc:creator>btmao</dc:creator><fs:srclink>http://blog.csdn.net/btmao/archive/2009/03/09/3974513.aspx</fs:srclink><fs:srcfeed>http://blog.csdn.net/btmao/feed.aspx</fs:srcfeed><fs:itemid>csdn.net/btmao/~7399510/212120939/5509029</fs:itemid></item><item><title>云计算：梦想和“共产主义”</title><link>http://blog.csdn.net/btmao/archive/2009/03/09/3974495.aspx</link><wfw:comment>http://blog.csdn.net/btmao/comments/3974495.aspx</wfw:comment><slash:comments>0</slash:comments><wfw:commentRss>http://blog.csdn.net/btmao/comments/commentRss/3974495.aspx</wfw:commentRss><trackback:ping>http://tb.blog.csdn.net/TrackBack.aspx?PostId=3974495</trackback:ping><description>原文链接：http://www.btmao.org/2009/02/26/dreamofcloudcomputing/



这篇文章要从一个叫做google的公司谈起。这是一个伟大的公司，甚至是一个像神一样的公司，他总是在安排着互联网和数据的未来，不管是无意的还是计划的。他有着我喜欢的东西，技术创新和梦想。

现在，这个一直都充满了梦想的公司又有了一个新的梦想。去年差不多也是这个时候，一个叫做施密特的人来了中国，这个人是google的CEO，他来到一个狭小的会议室里，他告诉人们，就像一个预言家，“未来的互联网发展，最重要的一个改变就是从个人计算机的架构逐渐转向云计算”。

云计算？google告诉人们，“人们对计算机的使用正在从桌面为中心转向以网络为中心”。

那么什么是云计算呢，为了找到一个答案我去了wiki。

云计算（cloud computing，台湾译作云端运算），是分布式计算技术的一种，其最基本的概念，是透过网络将庞大的计算处理程序自动分拆成无数个较小的子程序，再交由多部服务器所组成的庞大系统经搜寻、计算分析之后将处理结果回传给用户。透过这项技术，&lt;img src =&quot;http://blog.csdn.net/btmao/aggbug/3974495.aspx&quot; width = &quot;1&quot; height = &quot;1&quot; /&gt;</description><pubDate>Tue, 10 Mar 2009 05:32:00 +0800</pubDate><author>btmao</author><comments>http://blog.csdn.net/btmao/archive/2009/03/09/3974495.aspx#Feedback</comments><guid isPermaLink="false">http://blog.csdn.net/btmao/archive/2009/03/09/3974495.aspx</guid><dc:creator>btmao</dc:creator><fs:srclink>http://blog.csdn.net/btmao/archive/2009/03/09/3974495.aspx</fs:srclink><fs:srcfeed>http://blog.csdn.net/btmao/feed.aspx</fs:srcfeed><fs:itemid>csdn.net/btmao/~7399510/212120940/5509029</fs:itemid></item><item><title>PHP的MVC</title><link>http://blog.csdn.net/btmao/archive/2009/03/09/3974467.aspx</link><wfw:comment>http://blog.csdn.net/btmao/comments/3974467.aspx</wfw:comment><slash:comments>0</slash:comments><wfw:commentRss>http://blog.csdn.net/btmao/comments/commentRss/3974467.aspx</wfw:commentRss><trackback:ping>http://tb.blog.csdn.net/TrackBack.aspx?PostId=3974467</trackback:ping><description>原文地址：http://www.btmao.org/2009/02/26/mvcofphp/

 

PHP的面向对象的特性越来越完善使得，PHP能够更好的从代码结构上进行系统的封装。当一个系统，其中有大量的逻辑存在与流程控制之中，MVC的优势就开始渐渐体现。

MVC的模式要求对系统的总体结构在逻辑上分成三部分

View（界面/视图）：用户界面，网页模板
Controller（控制/流程）：系统业务流程
Model（模型/逻辑）：系统设计中的一些基础类和数据操作
拿一个简单的登陆流程当例子

 

最常见的登陆流程是这样的，我们假设我们的网站根目录下有一个叫做/user的文件夹来存放所有与用户操作相关的页面，其中有一个页面是/user /login.php。而我们的根目录上有文件/index.php作为网站的首页。当我们打开/index.php的时候进行判断，如果未登陆则跳转到 /user/login.php进行登陆，如果成功则跳回/index.php，否则跳到/error.php。

流程图如下：



根据文字和流程图的描述，我们可以开&lt;img src =&quot;http://blog.csdn.net/btmao/aggbug/3974467.aspx&quot; width = &quot;1&quot; height = &quot;1&quot; /&gt;</description><pubDate>Tue, 10 Mar 2009 05:22:00 +0800</pubDate><author>btmao</author><comments>http://blog.csdn.net/btmao/archive/2009/03/09/3974467.aspx#Feedback</comments><guid isPermaLink="false">http://blog.csdn.net/btmao/archive/2009/03/09/3974467.aspx</guid><dc:creator>btmao</dc:creator><fs:srclink>http://blog.csdn.net/btmao/archive/2009/03/09/3974467.aspx</fs:srclink><fs:srcfeed>http://blog.csdn.net/btmao/feed.aspx</fs:srcfeed><fs:itemid>csdn.net/btmao/~7399510/212120941/5509029</fs:itemid></item><item><title>解决PHP中fopen容易超时的问题</title><link>http://blog.csdn.net/btmao/archive/2008/04/11/2282980.aspx</link><wfw:comment>http://blog.csdn.net/btmao/comments/2282980.aspx</wfw:comment><slash:comments>1</slash:comments><wfw:commentRss>http://blog.csdn.net/btmao/comments/commentRss/2282980.aspx</wfw:commentRss><trackback:ping>http://tb.blog.csdn.net/TrackBack.aspx?PostId=2282980</trackback:ping><description>http://www.btmao.org

为了从远程读取网页内容，我们常常用需要用PHP打开网页文件，而当网页文件很大或者网页根本不存在的时候，我们发现使用fopen的方法经常会出现超时。于是我们需要一个更加稳定的方法来解决这个问题。
我们想到使用fsockopen来帮助我们完成工作。fsockopen是定下在network function下的一个函数，他使用的是socket来打开文件。
resource fsockopen ( string $hostname [, int $port [, int &amp;$errno [, string &amp;$errstr [, float $timeout ]]]] )
我们定义了一个类叫做http，下面是详细的代码。
 $strpos)
        {
            $host = substr($url, 7, $strpos - 7);
            $port = 80;
        }
        else
        {
            $host = substr(&lt;img src =&quot;http://blog.csdn.net/btmao/aggbug/2282980.aspx&quot; width = &quot;1&quot; height = &quot;1&quot; /&gt;</description><pubDate>Sat, 12 Apr 2008 02:33:00 +0800</pubDate><author>btmao</author><comments>http://blog.csdn.net/btmao/archive/2008/04/11/2282980.aspx#Feedback</comments><guid isPermaLink="false">http://blog.csdn.net/btmao/archive/2008/04/11/2282980.aspx</guid><dc:creator>btmao</dc:creator><fs:srclink>http://blog.csdn.net/btmao/archive/2008/04/11/2282980.aspx</fs:srclink><fs:srcfeed>http://blog.csdn.net/btmao/feed.aspx</fs:srcfeed><fs:itemid>csdn.net/btmao/~7399510/212120942/5509029</fs:itemid></item></channel></rss>