<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>万物皆代码</title>
    <description>深韵技术而不盛气凌人，思路敏捷而不缺乏大局观</description>
    <link>http://andyyehoo.javaeye.com</link>
    <language>UTF-8</language>
    <copyright>Copyright 2003-2008, JavaEye.com</copyright>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>JavaEye - 做最棒的软件开发交流社区</generator>
      <item>
        <title>最近越来越郁闷的公司</title>
        <author>andyyehoo</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://andyyehoo.javaeye.com">andyyehoo</a>&nbsp;
          链接：<a href="http://andyyehoo.javaeye.com/blog/177086" style="color:red;">http://andyyehoo.javaeye.com/blog/177086</a>&nbsp;
          发表时间: 2008年03月28日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>怎么美国公司还这样呢？喜欢独裁和搞一言堂的</p><p>&nbsp;</p><p>昨天本来就有点郁闷，新项目来了，本来说先做现有代码review，计划给一个星期，好嘛，说让你review也review不出什么东西，要求马上从开始改小东西开始，觉得这是最有效的办法，申请延缓两天也不行，就得旧小项目一收了马上就开始。好吧，你是技术总监，你说了算，就马上开始，缺乏点总体认识就缺乏吧，慢慢改。</p><p>&nbsp;</p><p>今天更好了，到CEO出面了，说，另外一个项目的技术培训，需要你们这个项目的全部人也过去培训，以后万一有事情可以backup，一培就是十天，那系统的熟悉，代码的review，小功能的修改怎么办？你自己一个人搞定，他们回来后，你再培训他们。我晕死，技术总监也有点傻眼了，这也太说不过去了，简直胡来。</p><p>&nbsp;</p><p>为什么美国的公司，也有这样混乱的管理呢？难道来中国的公司，都是些在本土混不下去的差公司吗？郁闷~</p>
          <br/>
          <span style="color:red;">
            <a href="http://andyyehoo.javaeye.com/blog/177086#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 28 Mar 2008 01:00:12 +0800</pubDate>
        <link>http://andyyehoo.javaeye.com/blog/177086</link>
        <guid>http://andyyehoo.javaeye.com/blog/177086</guid>
      </item>
      <item>
        <title>最近面试人的困惑</title>
        <author>andyyehoo</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://andyyehoo.javaeye.com">andyyehoo</a>&nbsp;
          链接：<a href="http://andyyehoo.javaeye.com/blog/164443" style="color:red;">http://andyyehoo.javaeye.com/blog/164443</a>&nbsp;
          发表时间: 2008年02月23日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          最近面试人，越来越没有状态<br /><br />一是因为工作忙，还要面试人，经常打断工作和拖慢进度，感觉不是很爽<br /><br />二是因为现在面试，比自己一开始的水平还不如。以前面试还说对人的总体素质会有考核，不是单纯的问技术，现在问的问题，其实更多是看他/她能不能通过第二轮面试，由我们的技术经理进行，如果知道不行，就懒得多问和发掘他/她的其它优点。之前试过一些候选人，我觉得素质还可以，可就是被问了几个细节问题答不上来，就被fail，觉得很可惜，其实潜力还可以的。不过当然我看人也不一定很准，之前有有过有一些能吹的，但是基本功很差，所以现在有笔试了，检查一些最基本的问题。不过说实话，这些题目，当面问，可能紧张做得不好，笔试慢慢做，其实没什么难度，向来以前一开始被我FAIL的那些人，有些可真是冤枉了，其实他们的素质，有些比现在通过我的这一关的素质，还好些。只不过之前我把水准放得有点高了，现在看看，如果又要通过我，又要通过CTO的考核，真的不容易咯。
          <br/>
          <span style="color:red;">
            <a href="http://andyyehoo.javaeye.com/blog/164443#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 23 Feb 2008 15:50:01 +0800</pubDate>
        <link>http://andyyehoo.javaeye.com/blog/164443</link>
        <guid>http://andyyehoo.javaeye.com/blog/164443</guid>
      </item>
      <item>
        <title>代码评审</title>
        <author>andyyehoo</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://andyyehoo.javaeye.com">andyyehoo</a>&nbsp;
          链接：<a href="http://andyyehoo.javaeye.com/blog/163563" style="color:red;">http://andyyehoo.javaeye.com/blog/163563</a>&nbsp;
          发表时间: 2008年02月20日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          最近对项目组进行代码评审，发觉需要对代码评审中找到的问题进行一下分类，大概可以分成以下几类问题：<br /><br />1. Comment<br />注释没写，或者格式不对，或者毫无意义<br /><br />2. Coding Standard<br />没遵守代码规范<br /><br />3. Existing Wheel<br />重复现成的代码，或者是开源项目，或者公司已有代码<br /><br />4. Better practice<br />Java或者开源项目，有更好的写法<br /><br />5. Performance bottle and Improvement<br />性能瓶颈和提高<br /><br />6. Code Logic Error <br />代码逻辑错误<br /><br />7. Business Logic Error<br />业务逻辑错误<br /><br />代码审查列出问题的类型，并有解决情况报告
          <br/>
          <span style="color:red;">
            <a href="http://andyyehoo.javaeye.com/blog/163563#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 20 Feb 2008 10:38:26 +0800</pubDate>
        <link>http://andyyehoo.javaeye.com/blog/163563</link>
        <guid>http://andyyehoo.javaeye.com/blog/163563</guid>
      </item>
      <item>
        <title>Php的生命力何在</title>
        <author>andyyehoo</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://andyyehoo.javaeye.com">andyyehoo</a>&nbsp;
          链接：<a href="http://andyyehoo.javaeye.com/blog/149085" style="color:red;">http://andyyehoo.javaeye.com/blog/149085</a>&nbsp;
          发表时间: 2007年12月18日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          公司的Java系统做得很精致，对于大企业自己私用的系统，确实Java是最好的选择。Java构造平台的多层性和扩展性，已经可维护度，确实都比PHP好<br /><br />但是看着这个系统，却又觉得悲哀，这样好的系统，用的人，范围确实如此的小，而且，它也不可能被重用到别的项目中去的。<br /><br />互联网是开放交流的世界，在互联网上，中小型的企业运用，越来越多，而PHP开源系统，对用户可用度的关注，可用性，兼容性，重用性的重视，使得PHP开源的生命力越来越强。<br /><br />J2EE一个百人开发的系统，往往就那么千人再用。而PHP一个十人的系统，却有几百万的全球用户，这个就是区别。即使PHP在性能和可维护性差那么一点点，可是由于系统良好的模块化和易用性，使得具有很低IT技术人平，而很高其他行业水平的人，也可以轻易构造自己的专业网站，在PHP专业人才的无私奉献基础上，这个就是PHP的生命力所在，已经它的发展空间。
          <br/>
          <span style="color:red;">
            <a href="http://andyyehoo.javaeye.com/blog/149085#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 18 Dec 2007 12:00:37 +0800</pubDate>
        <link>http://andyyehoo.javaeye.com/blog/149085</link>
        <guid>http://andyyehoo.javaeye.com/blog/149085</guid>
      </item>
      <item>
        <title>谁会是开源的真正胜利者</title>
        <author>andyyehoo</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://andyyehoo.javaeye.com">andyyehoo</a>&nbsp;
          链接：<a href="http://andyyehoo.javaeye.com/blog/145221" style="color:red;">http://andyyehoo.javaeye.com/blog/145221</a>&nbsp;
          发表时间: 2007年12月01日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          知道自己搭建博客不是很难的事情很久了，只不过自己比较懒，而且觉得内容更加重要，是自己的空间或者公共的空间无关紧要，所以也没想到自己搭建一个博客。<br />
<br />
知道一段时间前，一个做媒体的朋友，让我去他搭建的一个网站上帮他写文章，发现他做得这个多用户博客水平还不错，一问知道是用wordpresss，因为他不是做计算机的，对于他能够这么快就建个这样的系统，还是感觉有点惊讶的。<br />
<br />
但是要出去旅游了，没什么时间留意，最近回来才开始细细品味和琢磨了。发现这后面的含义很大。<br />
<br />
朋友是媒体的，对网络也有一定的知识。建立这个博客基本做的事情就是：<br />
<br />
1）租赁一个好的国外虚拟主机，送域名，主机是Linux系统，带PHP和Mysql，全部是800rmb/年左右<br />
2）下载个WordPresss，上传，建立一个子域名，指向上传目录<br />
3）用浏览器访问主机上的WordPress系统，一步步安装指引做，OK，安装完毕<br />
<br />
接下来就是非IT的事情了，叫朋友来一起写文章，因为是媒体的，所以人气很快就上去了。就是一个很像模像样的网站了。<br />
<br />
简单的说，现在的基于web 2.0的网络应用，已经是如此成熟了，接近傻瓜化操作了。一个不懂IT和编程的人，也很容易就像装一个软件一样，在互联网上，通过浏览器，装了一个服务器，一个Web应用。<br />
<br />
以后的互联网，应该就是这个趋势吧，构建网站是个很简单的事情。这是一个博客系统，或者说一个博客软件，还有其它的，例如一个CMS系统，一个音乐发布共享系统，等等。只不过等谁的操作系统，能够把这些步骤再傻瓜化一些而已了。WordPress的安装界面了，真的已经很傻瓜化了，就像软件安装一样的简单。<br />
<br />
但是在这个趋势中，我看到的是什么呢？那就是PHP和Mysql的这个黄金组合，是如此的强劲，完全灭过了.net和java。而且都是4系列的版本最受欢迎。这个被诟病为没有良好的面向对象语言特性的语言，实际上已经静悄悄的，席卷了互联网的半壁江山。<br />
<br />
为什么呢？<br />
<br />
一是费用。随便简单搜索了一下，在olnevhost上，首页就有两种方案。一是php和mysql，10$/month。二是JSP和PostgreSQL，30$/month，当然也随便支持php和mysql。两者差价是3倍，而且php和mysql还有很多别的主机供应商，价格比这个优惠。jsp的少很多。<br />
<br />
二是系统，大家可以找一下php的开源项目和java的开源项目。PHP的项目明显偏向应用性的，首页就是WordPress，xoops，mambo....等等；Java的偏技术性的，首页就是Spring，hibernate，Webwork...等等。当然，我知道Java也有Blog和CMS等应用性的开源项目，不过好像没有哪个被广泛应用的，而且配置难度也比较高，恐怕非专业人士难以胜任了。<br />
<br />
是的，php没有java高级，所以人家不玩底层，开始玩上层了。而应用的可安装性和可配置性，对于非IT专业人士，却是如此的重要，他们不会关心php有没有面向对象，他们不关心php的性能那稍微一点点的慢，他们不希望去改代码，而且php的代码改起来根据傻瓜化...<br />
<br />
更重要的是，由于PHP的简易和开放，这些系统都有一个共同的优点，也是良好软件设计的结果，丰富的插件，可以进行扩张，这个和PHOTOSHOP的插件有点相似，凭借容易安装的插件，非IT人士，也很容易给自己的网站，加上各种各样的动态功能了，而不需要编程知识，有些高级的插件，可以购买就是了。<br />
<br />
也许是我了解不深，说实话，目前好像没有那个java开源系统，做到如此的好，大家都喜欢玩底层，折腾J2EE的企业应用。可是Web 2.0呢？<br />
<br />
Java是否在这方面无所作为呢？也许我们应该考虑一下，是否应该向PHP们的开发者学习了，多做一些面向大众，真正实用的软件了。只是津津乐道于一个个孤立企业应用的高性能，互联网的明天并不在于此。Java的开发者们，是否应该更加关心普遍大众的应用呢？
          <br/>
          <span style="color:red;">
            <a href="http://andyyehoo.javaeye.com/blog/145221#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 01 Dec 2007 00:05:25 +0800</pubDate>
        <link>http://andyyehoo.javaeye.com/blog/145221</link>
        <guid>http://andyyehoo.javaeye.com/blog/145221</guid>
      </item>
      <item>
        <title>最近面试别人的郁闷</title>
        <author>andyyehoo</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://andyyehoo.javaeye.com">andyyehoo</a>&nbsp;
          链接：<a href="http://andyyehoo.javaeye.com/blog/144636" style="color:red;">http://andyyehoo.javaeye.com/blog/144636</a>&nbsp;
          发表时间: 2007年11月28日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>最近面试了很多应聘JAVA工程师职位的人，自己也准备了一些面试的题目，面试对象都是2-3年工作经验的，面试的题目又浅入深，但是很遗憾，基本大多数连最基础问题都答不好，就连最基础的int和Integer的区别，ArrayList和LinkedList的区别，这两道最简单的题目，都能把1半人拦倒，让我准备的中高级问题，基本没有出手的机会。</p>
<p>看来还是要到JAVAEYE发发广告才行了</p>
          <br/>
          <span style="color:red;">
            <a href="http://andyyehoo.javaeye.com/blog/144636#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 28 Nov 2007 21:11:11 +0800</pubDate>
        <link>http://andyyehoo.javaeye.com/blog/144636</link>
        <guid>http://andyyehoo.javaeye.com/blog/144636</guid>
      </item>
      <item>
        <title>三明治的管理哲学</title>
        <author>andyyehoo</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://andyyehoo.javaeye.com">andyyehoo</a>&nbsp;
          链接：<a href="http://andyyehoo.javaeye.com/blog/74113" style="color:red;">http://andyyehoo.javaeye.com/blog/74113</a>&nbsp;
          发表时间: 2007年04月24日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          现在是一家外企，公司的架构很奇怪，到现在也有几年历史了。作为开国的元老，还是留了几个人，公司的代码都是这几个人原创的。但是老外就是不提升他们到更高的位置，不断的为他们招小弟，高层的几个职务，例如项目经理，明明是可以他们做，也不提拔，宁愿花钱外面再请，花上相当的时间去让他们熟悉项目后，磨合了再做管理。<br />
<br />
在我看来，这种可以称为三明治的管理哲学。其实公司真正享受带来的利润的成果，大部分都是中间层提供的，但是不垫上上下两层，吃起来恐怕又太直接，有着其它的种种顾虑。大家不妨讨论一下，这种三明治架构的优缺点如何呢？
          <br/>
          <span style="color:red;">
            <a href="http://andyyehoo.javaeye.com/blog/74113#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 24 Apr 2007 16:06:41 +0800</pubDate>
        <link>http://andyyehoo.javaeye.com/blog/74113</link>
        <guid>http://andyyehoo.javaeye.com/blog/74113</guid>
      </item>
      <item>
        <title>每日一Python——模块安装</title>
        <author>andyyehoo</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://andyyehoo.javaeye.com">andyyehoo</a>&nbsp;
          链接：<a href="http://andyyehoo.javaeye.com/blog/71521" style="color:red;">http://andyyehoo.javaeye.com/blog/71521</a>&nbsp;
          发表时间: 2007年04月16日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><font face="Arial">&nbsp;&nbsp;&nbsp;1.&nbsp;单文件模块<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 直接把文件拷贝到$python_dir/lib</font></p>
<p><font face="Arial">&nbsp;&nbsp;&nbsp;2.&nbsp;多文件模块，带setup.py<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;python setup.py install&nbsp;</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
<p><font face="Arial">&nbsp;&nbsp;&nbsp;3. egg文件，类似Java的jar<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1) 下载ez_setup.py,运行python ez_setup&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2)&nbsp; easy_install *.egg<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;egg是peak的一个产品，现在是python发布的主流工具之一，详细信息可以参考</font></p>
<blockquote dir="ltr" style="MARGIN-RIGHT: 0px"><blockquote dir="ltr" style="MARGIN-RIGHT: 0px">
<p><font face="Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="http://peak.telecommunity.com/DevCenter/PythonEggs">http://peak.telecommunity.com/DevCenter/PythonEggs</a></font><font face="Arial"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="http://peak.telecommunity.com/DevCenter/EasyInstall">http://peak.telecommunity.com/DevCenter/EasyInstall</a></font></p>
<p>&nbsp;</p>
<p><font face="Arial"></font></p>
<p><font face="Arial"></font></p>
</blockquote></blockquote>
          <br/>
          <span style="color:red;">
            <a href="http://andyyehoo.javaeye.com/blog/71521#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 16 Apr 2007 15:35:13 +0800</pubDate>
        <link>http://andyyehoo.javaeye.com/blog/71521</link>
        <guid>http://andyyehoo.javaeye.com/blog/71521</guid>
      </item>
      <item>
        <title>Java的堂弟——Python初体验</title>
        <author>andyyehoo</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://andyyehoo.javaeye.com">andyyehoo</a>&nbsp;
          链接：<a href="http://andyyehoo.javaeye.com/blog/69679" style="color:red;">http://andyyehoo.javaeye.com/blog/69679</a>&nbsp;
          发表时间: 2007年04月10日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          学习python一小段时间了，太高层次的话题就不说了，层次放低一点，就说说在实际编程中，体会到的Python和JAVA的区别。学习不久，认识有限，希望大家多指正，而我也会不断完善这篇文章。<br />
<br />
Python的代码和Java有着相当的类似度，学习一段时间后，感觉有一种亲切感，所以姑且称呼它为Java的堂弟罢。<br />
<br />
虽然Dive Into Python中，声明了Everything is Object，可是使用过程中，我的体会就是Python并非真正的OO，类只不过是比模块小一级的方法组织单位罢了，而非真正的类。从OO的学术角度来说，Python只能打个60分，众多的OO特性，更像是为了OO而凑上去的。<br />
<br />
1）动态类型语言，使得单纯从方法接口看出，参数和返回结果是什么类型对象，当然也就毫无所谓的接口之说。<br />
2）粗糙的默认公开和__私有方法，没有保护和包内可见的概念<br />
3）令人生厌，无处不在的self<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; 所有的方法，除了静态方法和类方法，都要以self作为第一个参数。这也就算了，对于成员变量和自己方法的应用，也要加个self. 。 程序小的话，我宁愿直接用module的方法好了，就像python的n个builtin模块一样<br />
4）不方便的log<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 虽然有类似log4j的东西，但是log的初始化和配置是在程序中进行，不太方便，我也习惯了用print。而在Django这样大的项目中，居然看不到log，是我没找到地方呢？还是真的没log？迷惑中。<br />
<br />
优点<br />
<br />
Python相对于Java最大的优势，是灵活和简洁。同样的功能，Python中1行的代码，Java往往要用3到5行才能完成。<br />
<br />
1）灵活的字符串，方便提供的超长字符串定义<br />
2）简洁，多行，可注释的正则表达式<br />
3）动态语言特性，对AJAX的配合如鱼得水，因为它和JavaScript的OO有着异曲同工之妙<br />
4）丰富的第三方类库，Python有相当的历史了，网站的copyright是1990-2006，在国外已经有丰富的应用基础，常用的第三方类库应有尽有。<br />
<br />
<br />
关于开发工具，目前用得最好的是PyDev。已经习惯了不断的代码重构，缺乏了这种的支持，感觉很不顺手，而由于Python的动态特性，PyDev的重构还是很不尽如人意，这点让我很怀疑，作为团队开发时，Python的可行性。<br />
<br />
总之，Pthon作为一门动态强类型语言，在OO的严谨，和过程式的随意中，取得了一种很好的平衡。虽然不能作为OO教学的一门语言，但是确实是编写中小型软件和系统的好工具。
          <br/>
          <span style="color:red;">
            <a href="http://andyyehoo.javaeye.com/blog/69679#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 10 Apr 2007 15:47:25 +0800</pubDate>
        <link>http://andyyehoo.javaeye.com/blog/69679</link>
        <guid>http://andyyehoo.javaeye.com/blog/69679</guid>
      </item>
      <item>
        <title>Re: 外国人的临时房子</title>
        <author>andyyehoo</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://andyyehoo.javaeye.com">andyyehoo</a>&nbsp;
          链接：<a href="http://andyyehoo.javaeye.com/blog/68014" style="color:red;">http://andyyehoo.javaeye.com/blog/68014</a>&nbsp;
          发表时间: 2007年04月04日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          这种房子外国人住得下，中国人未必住得下，刚毕业几年的拼搏期可以住，要结婚了，多少中国的女孩子愿意跟你住这样的房子？多少父母看了，有点能力的，会不拿点钱出来，帮你付个首期，无可奈何的接受房地产商和银行的联合剥削？  中国人居者有其屋的心态比较传统，这个也无可厚非，可以作为民族特色加以尊重，可恨的是受了房地产商的利用，成为一座大山。不要做超过自己经济能力的事情，有一点点精明头脑的人都会做的。可是现在的环境，就是你算来算去，发现租个几年房再买房，绝对是大亏本买卖，无可奈何才早早借债买房的。  像任正强那种人说得混帐话，就等于是jq了人，还说谁让你力气不够大，挣扎不成功，活该一样的可恶。而某些人，侥幸没被强奸的，就在旁边说，就是，谁让你力气不够大，活该，你看我，力气大点，不就没被qj么。这是中国的传统陋习之一，围观和幸灾乐祸。  但是中国也有传统美德的，身为强者，应该有关怀弱者的心胸和思想。有些人做了几年，能够凭借自身的能力和机遇小富了，结了婚，买了房子，过上安逸的小生活，也不要忘记了，还有很多的兄弟们，还在底层奋斗着，不要出言讥讽才好，须知善恶终有报，风水轮流转的。
          <br/>
          <span style="color:red;">
            <a href="http://andyyehoo.javaeye.com/blog/68014#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 04 Apr 2007 17:27:39 +0800</pubDate>
        <link>http://andyyehoo.javaeye.com/blog/68014</link>
        <guid>http://andyyehoo.javaeye.com/blog/68014</guid>
      </item>
      <item>
        <title>Re: 对java优秀开源项目相应.net版本的忧虑</title>
        <author>andyyehoo</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://andyyehoo.javaeye.com">andyyehoo</a>&nbsp;
          链接：<a href="http://andyyehoo.javaeye.com/blog/68013" style="color:red;">http://andyyehoo.javaeye.com/blog/68013</a>&nbsp;
          发表时间: 2007年04月04日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          这个最让担心的，一方面是ms对java的不断学习，复制，一方面是java开发人员的居高自傲，对ms的技术的不屑一顾，有谁是愿意虚心点的学习研究一下ms的表现层的长处，仿造做一个java开源的项目？  想想当年的domino，os/2，技术也是领先n多，对模仿它，不如它的微软产品不屑一顾。但是最终败于微软手下，退出舞台。开发语言的胜负，是场更长的战争。如果作为技术带头人，没能感受到繁华之下的危机的话，采取相应措施的话，那么失败到来的时候，只能慨叹回天无力，一个个皈依微软大旗。  微软的一统天下，实在是我等开发人员不愿意看到的。阻止的暴政建立，比推翻暴政要容易一些。希望各位技术老大们，能想想该做什么，能做什么。至于只关心市场，项目的人们，大可不必掺和，毕竟确实，无论用什么开发，对于上层其实是无关紧要的。
          <br/>
          <span style="color:red;">
            <a href="http://andyyehoo.javaeye.com/blog/68013#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 04 Apr 2007 17:26:37 +0800</pubDate>
        <link>http://andyyehoo.javaeye.com/blog/68013</link>
        <guid>http://andyyehoo.javaeye.com/blog/68013</guid>
      </item>
      <item>
        <title>每日一python——导入</title>
        <author>andyyehoo</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://andyyehoo.javaeye.com">andyyehoo</a>&nbsp;
          链接：<a href="http://andyyehoo.javaeye.com/blog/68005" style="color:red;">http://andyyehoo.javaeye.com/blog/68005</a>&nbsp;
          发表时间: 2007年04月04日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          python的导入和Java有着异曲同工之妙，但是却有颇有区别<br />
<br />
和JAVA文件的一个类一个文件不同，python更加倾向于多个类一个文件，一个文件就是一个module<br />
<br />
文件名习惯是小写，下划线分开单词。<br />
类名一样，是大小写混合，第一个字母大写。<br />
<br />
module中可以直接定义方法，直接调用，例如<br />
<br />
module method 和 class method<br />
<br />
import django.mail<br />
mail.send_mail(................)<br />
<br />
class method第一个参数必须是self，除非是static method，static method要用@staticmethod做修饰<br />
<br />
非静态的方法，必须通过类的实例调用<br />
<br />
from django.mail import *<br />
<br />
smt = SafeMIMEText()<br />
smt.__setitem__(....)<br />
<br />
可以看到，python和java最大是不同，是文件是代表一个module，可以容纳多个class,而且可以有自己的method<br />
<br />
另外<br />
<br />
使用from module import *的话，就可以直接使用module中的各个类和方法而无须module.***********<br />
<br />
如果是使用import module，就需要使用module.******<br />
          <br/>
          <span style="color:red;">
            <a href="http://andyyehoo.javaeye.com/blog/68005#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 04 Apr 2007 17:15:40 +0800</pubDate>
        <link>http://andyyehoo.javaeye.com/blog/68005</link>
        <guid>http://andyyehoo.javaeye.com/blog/68005</guid>
      </item>
      <item>
        <title>每日一python——编码</title>
        <author>andyyehoo</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://andyyehoo.javaeye.com">andyyehoo</a>&nbsp;
          链接：<a href="http://andyyehoo.javaeye.com/blog/67974" style="color:red;">http://andyyehoo.javaeye.com/blog/67974</a>&nbsp;
          发表时间: 2007年04月04日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          无论任何语言，都有编码的问题，Python也一样。<br />
<br />
但是大部分的语言，编码问题的解决也都很简单了，因为设计者都已经借鉴了经验和考虑了最好的方法，Python也一样。<br />
<br />
在有编码问题的module的第一行加上指定编码的语句，可以解决大部分的编码问题。
<div class="code_title"><br />
</div>
<div class="dp-highlighter">
<div class="bar">&nbsp;</div>
<ol class="dp-py">
    <li class="alt"><span><span class="comment">#&nbsp;-*-&nbsp;coding:&nbsp;utf-8&nbsp;-*-&nbsp;#&nbsp;</span><span>&nbsp;&nbsp;</span></span> </li>
</ol>
</div>
<br />
          <br/>
          <span style="color:red;">
            <a href="http://andyyehoo.javaeye.com/blog/67974#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 04 Apr 2007 16:52:31 +0800</pubDate>
        <link>http://andyyehoo.javaeye.com/blog/67974</link>
        <guid>http://andyyehoo.javaeye.com/blog/67974</guid>
      </item>
      <item>
        <title>PhotoRobot之Sohu相册</title>
        <author>andyyehoo</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://andyyehoo.javaeye.com">andyyehoo</a>&nbsp;
          链接：<a href="http://andyyehoo.javaeye.com/blog/68027" style="color:red;">http://andyyehoo.javaeye.com/blog/68027</a>&nbsp;
          发表时间: 2007年03月27日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <br />这次的目标是sohu的相册，<a href="http://pp.sohu.com" title="http://pp.sohu.com">http://pp.sohu.com</a>，免费相册，图片公园。它的首页，美女没有yahoo的那么多，但是比163的光秃秃好点，所以作为第二位。<br /><br />Sohu使用的技术向来比较成熟稳健，而又有技术含量。例如很久以前，它的新闻和论坛就使用了CMS系统搭建，非常的规范。而博客则使用了Ajax技术，异步加载页面的不同部分，速度很快。所以在对它的相册动手之前，就做好了打硬仗的心理准备。<br /><br />同样，先进入专辑的第一张图片，这样页面的图片信息比较明确，方便提取，随便找个美女相册进先<br /><br />    <div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br><a href="http://www.CodeHighlighter.com/" target="_blank">http://www.CodeHighlighter.com/</a><br><br>--><span style="color: rgb(0, 0, 0);">http://pp.sohu.com/photo.jhtml?method=view</span><span style="color: rgb(255, 0, 0);">&amp;id</span><span style="color: rgb(0, 0, 0);">=74529157#74529157</span></div><br /><br />1. 定位图片source<br /><br />照例，view page source，先看看有没有图片部分的源代码，还好，正常<br /><br /><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br><a href="http://www.CodeHighlighter.com/" target="_blank">http://www.CodeHighlighter.com/</a><br><br>--><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">A </span><span style="color: rgb(255, 0, 0);">id</span><span style="color: rgb(0, 0, 255);">="photoHref"</span><span style="color: rgb(255, 0, 0);"> href</span><span style="color: rgb(0, 0, 255);">="javascript:gPhotoPage.nextPhoto(onPhotoChange);"</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />    </span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">img </span><span style="color: rgb(255, 0, 0);">id</span><span style="color: rgb(0, 0, 255);">="photodisplay"</span><span style="color: rgb(255, 0, 0);"> src</span><span style="color: rgb(0, 0, 255);">="http://img44.pp.sohu.com/images/2007/3/20/15/9/11205330d6b.jpg"</span><span style="color: rgb(255, 0, 0);"> title</span><span style="color: rgb(0, 0, 255);">="点击图片查看下一张"</span><span style="color: rgb(255, 0, 0);"><br />            alt</span><span style="color: rgb(0, 0, 255);">="post-3-1173601339.jpg_搜狐免费相册"</span><span style="color: rgb(255, 0, 0);"> border</span><span style="color: rgb(0, 0, 255);">=0 </span><span style="color: rgb(255, 0, 0);">hspace</span><span style="color: rgb(0, 0, 255);">=02 </span><span style="color: rgb(255, 0, 0);">vspace</span><span style="color: rgb(0, 0, 255);">=02 </span><span style="color: rgb(0, 0, 255);">/&gt;</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">A</span><span style="color: rgb(0, 0, 255);">&gt;</span></div><br /><br />没163那么变态，全部藏在javascript里面。这样还是比较简单，只要能够定位到翻页的代码，就可以比较简单和机械的提取相册图片了。<br /><br />2.    定位上下页<br />    <br />        这里遇到了麻烦，sohu的页面尽管给出很好的注释，<br /><br /><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br><a href="http://www.CodeHighlighter.com/" target="_blank">http://www.CodeHighlighter.com/</a><br><br>--><span style="color: rgb(0, 0, 0);">                    </span><span style="color: rgb(0, 128, 0);">&lt;!--</span><span style="color: rgb(0, 128, 0);">这里是导航区</span><span style="color: rgb(0, 128, 0);">--&gt;&lt;!--</span><span style="color: rgb(0, 128, 0);">导航区结束</span><span style="color: rgb(0, 128, 0);">--&gt;</span><span style="color: rgb(0, 0, 0);"><br />                    </span><span style="color: rgb(0, 128, 0);">&lt;!--</span><span style="color: rgb(0, 128, 0);">这里是面包屑目录区&amp;管理模块区</span><span style="color: rgb(0, 128, 0);">--&gt;&lt;!--</span><span style="color: rgb(0, 128, 0);">面包屑目录区&amp;管理模块区结束</span><span style="color: rgb(0, 128, 0);">--&gt;</span></div><br /><br />        但是都没能找到上下页的地方，怎么办？看看页面，发现有Ajax的踪迹，<br /><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br><a href="http://www.CodeHighlighter.com/" target="_blank">http://www.CodeHighlighter.com/</a><br><br>--><span style="color: rgb(0, 0, 0);"><br />        </span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">SCRIPT </span><span style="color: rgb(255, 0, 0);">LANGUAGE</span><span style="color: rgb(0, 0, 255);">="JavaScript"</span><span style="color: rgb(255, 0, 0);"> type</span><span style="color: rgb(0, 0, 255);">="text/javascript"</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="background-color: rgb(245, 245, 245); color: rgb(0, 0, 0);"><br />            </span><span style="background-color: rgb(245, 245, 245); color: rgb(0, 0, 0);">&lt;!--</span><span style="background-color: rgb(245, 245, 245); color: rgb(0, 0, 0);"><br />            </span><span style="background-color: rgb(245, 245, 245); color: rgb(0, 0, 255);">function</span><span style="background-color: rgb(245, 245, 245); color: rgb(0, 0, 0);"> addContact(userId) {<br />                </span><span style="background-color: rgb(245, 245, 245); color: rgb(0, 0, 255);">var</span><span style="background-color: rgb(245, 245, 245); color: rgb(0, 0, 0);"> url </span><span style="background-color: rgb(245, 245, 245); color: rgb(0, 0, 0);">=</span><span style="background-color: rgb(245, 245, 245); color: rgb(0, 0, 0);"> </span><span style="background-color: rgb(245, 245, 245); color: rgb(0, 0, 0);">"</span><span style="background-color: rgb(245, 245, 245); color: rgb(0, 0, 0);">/relations.jhtml?m=add&amp;userId=</span><span style="background-color: rgb(245, 245, 245); color: rgb(0, 0, 0);">"</span><span style="background-color: rgb(245, 245, 245); color: rgb(0, 0, 0);"> </span><span style="background-color: rgb(245, 245, 245); color: rgb(0, 0, 0);">+</span><span style="background-color: rgb(245, 245, 245); color: rgb(0, 0, 0);"> userId;<br />                </span><span style="background-color: rgb(245, 245, 245); color: rgb(0, 0, 255);">var</span><span style="background-color: rgb(245, 245, 245); color: rgb(0, 0, 0);"> actionItem </span><span style="background-color: rgb(245, 245, 245); color: rgb(0, 0, 0);">=</span><span style="background-color: rgb(245, 245, 245); color: rgb(0, 0, 0);"> </span><span style="background-color: rgb(245, 245, 245); color: rgb(0, 0, 255);">new</span><span style="background-color: rgb(245, 245, 245); color: rgb(0, 0, 0);"> ActionItem();<br />                </span><span style="background-color: rgb(245, 245, 245); color: rgb(0, 0, 255);">new</span><span style="background-color: rgb(245, 245, 245); color: rgb(0, 0, 0);"> Ajax.Request(url,{method:'get', onLoading:actionItem.onLoading.bind(actionItem),onComplete:actionItem.jsonBack.bind(actionItem)});<br />            }<br />            </span><span style="background-color: rgb(245, 245, 245); color: rgb(0, 128, 0);">//</span><span style="background-color: rgb(245, 245, 245); color: rgb(0, 128, 0);">--&gt;</span><span style="background-color: rgb(245, 245, 245); color: rgb(0, 128, 0);"><br /></span><span style="background-color: rgb(245, 245, 245); color: rgb(0, 0, 0);">        </span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">SCRIPT</span><span style="color: rgb(0, 0, 255);">&gt;</span></div><br /><br />        果然不好啃啊。<br /><br />3.    下载js文件<br />   
   
利用firefox的CacheViewer，过滤后排序，找到了pp.sohu.com的相关十几个js文件，果然是庞大啊。但是都是那种去掉分行的，
非常的难看，回头用python写个程序，专门把它们变回远样。据称最好的js编辑器，Aptana居然没有代码排版功能，感觉有点废啊。<br /><br />        找了下gPhotoPage.nextPhoto，发现是都是在Photos.js中，这个js文件是个很重要的类，对photo的操作都是封装在里面，后面用到了一个地方，但是没有找到获得图片列表的操作。<br /><br />4.    重新分析页面的源代码<br /><br />        在源代码的最后一部分，找到<br /><br /><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br><a href="http://www.CodeHighlighter.com/" target="_blank">http://www.CodeHighlighter.com/</a><br><br>--><span style="color: rgb(0, 0, 0);">        </span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">script </span><span style="color: rgb(255, 0, 0);">type</span><span style="color: rgb(0, 0, 255);">="text/javascript"</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="background-color: rgb(245, 245, 245); color: rgb(0, 0, 0);"><br />            </span><span style="background-color: rgb(245, 245, 245); color: rgb(0, 0, 255);">function</span><span style="background-color: rgb(245, 245, 245); color: rgb(0, 0, 0);"> loadPage() {<br />                </span><span style="background-color: rgb(245, 245, 245); color: rgb(0, 0, 255);">var</span><span style="background-color: rgb(245, 245, 245); color: rgb(0, 0, 0);"> rpccall </span><span style="background-color: rgb(245, 245, 245); color: rgb(0, 0, 0);">=</span><span style="background-color: rgb(245, 245, 245); color: rgb(0, 0, 0);"> </span><span style="background-color: rgb(245, 245, 245); color: rgb(0, 0, 255);">new</span><span style="background-color: rgb(245, 245, 245); color: rgb(0, 0, 0);"> JSONRpcClient(</span><span style="background-color: rgb(245, 245, 245); color: rgb(0, 0, 0);">"</span><span style="background-color: rgb(245, 245, 245); color: rgb(0, 0, 0);">/rpccall</span><span style="background-color: rgb(245, 245, 245); color: rgb(0, 0, 0);">"</span><span style="background-color: rgb(245, 245, 245); color: rgb(0, 0, 0);">,</span><span style="background-color: rgb(245, 245, 245); color: rgb(0, 0, 255);">null</span><span style="background-color: rgb(245, 245, 245); color: rgb(0, 0, 0);">,</span><span style="background-color: rgb(245, 245, 245); color: rgb(0, 0, 255);">null</span><span style="background-color: rgb(245, 245, 245); color: rgb(0, 0, 0);">, </span><span style="background-color: rgb(245, 245, 245); color: rgb(0, 0, 0);">"</span><span style="background-color: rgb(245, 245, 245); color: rgb(0, 0, 0);">photoMgr</span><span style="background-color: rgb(245, 245, 245); color: rgb(0, 0, 0);">"</span><span style="background-color: rgb(245, 245, 245); color: rgb(0, 0, 0);">);<br />                photosList </span><span style="background-color: rgb(245, 245, 245); color: rgb(0, 0, 0);">=</span><span style="background-color: rgb(245, 245, 245); color: rgb(0, 0, 0);"> rpccall.getAllPhotos(</span><span style="background-color: rgb(245, 245, 245); color: rgb(0, 0, 0);">74529157</span><span style="background-color: rgb(245, 245, 245); color: rgb(0, 0, 0);">)<br />                gPhotoPage </span><span style="background-color: rgb(245, 245, 245); color: rgb(0, 0, 0);">=</span><span style="background-color: rgb(245, 245, 245); color: rgb(0, 0, 0);"> </span><span style="background-color: rgb(245, 245, 245); color: rgb(0, 0, 255);">new</span><span style="background-color: rgb(245, 245, 245); color: rgb(0, 0, 0);"> Photos(photosList.list,getPhotoIdFormUrl() </span><span style="background-color: rgb(245, 245, 245); color: rgb(0, 0, 0);">!=</span><span style="background-color: rgb(245, 245, 245); color: rgb(0, 0, 0);"> </span><span style="background-color: rgb(245, 245, 245); color: rgb(0, 0, 255);">null</span><span style="background-color: rgb(245, 245, 245); color: rgb(0, 0, 0);"> </span><span style="background-color: rgb(245, 245, 245); color: rgb(0, 0, 0);">?</span><span style="background-color: rgb(245, 245, 245); color: rgb(0, 0, 0);"> getPhotoIdFormUrl() : </span><span style="background-color: rgb(245, 245, 245); color: rgb(0, 0, 0);">74529157</span><span style="background-color: rgb(245, 245, 245); color: rgb(0, 0, 0);">);<br />                gLoginUser </span><span style="background-color: rgb(245, 245, 245); color: rgb(0, 0, 0);">=</span><span style="background-color: rgb(245, 245, 245); color: rgb(0, 0, 0);"> rpccall.getLoginUser();<br />                initRequestPhoto(gPhotoPage, gPhotoPage.photo);<br />            }<br />        </span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">script</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">       <br />       <br /></span></div><br />        该部分是在body load的时候调用，呵呵，看了这里是关键了，通过JSON RPC调用，获得所有的photo列表，得来不费功夫，果然是越高级的东西就越方便。<br /><br />5.    JSON RPC<br /><br />        如果把它的javascript全部跑起来，当然可以获得一样的效果，不过太麻烦。即然用python，当然要用python来进行这个调用。<br />        使用google，找到了jsonrpclib的开源项目，python和java一样，开源的支持就是多，这点我喜欢。<br /><br />        jsonrpclib只有一个py，非常小巧，但是倚赖于simplejson的包，jsonrpc主要是对json的远程调用的封装，而simplejson则是对json数据的解析，两个模块各司其责，清晰明了。<br /><br />        看看源代码的版权信息，寒一个<br /><br /><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br><a href="http://www.CodeHighlighter.com/" target="_blank">http://www.CodeHighlighter.com/</a><br><br>--><span style="color: rgb(0, 0, 0);">            </span><span style="color: rgb(0, 128, 0);">#</span><span style="color: rgb(0, 128, 0);"> a port of xmlrpclib to json<img src="http://www.blogjava.net/images/dot.gif" />.</span><span style="color: rgb(0, 128, 0);"><br /></span><span style="color: rgb(0, 0, 0);">            </span><span style="color: rgb(0, 128, 0);">#<br /></span><span style="color: rgb(0, 0, 0);">            </span><span style="color: rgb(0, 128, 0);">#<br /></span><span style="color: rgb(0, 0, 0);">            </span><span style="color: rgb(0, 128, 0);">#</span><span style="color: rgb(0, 128, 0);"> The JSON-RPC client interface is based on the XML-RPC client</span><span style="color: rgb(0, 128, 0);"><br /></span><span style="color: rgb(0, 0, 0);">            </span><span style="color: rgb(0, 128, 0);">#<br /></span><span style="color: rgb(0, 0, 0);">            </span><span style="color: rgb(0, 128, 0);">#</span><span style="color: rgb(0, 128, 0);"> Copyright (c) 1999-2002 by Secret Labs AB</span><span style="color: rgb(0, 128, 0);"><br /></span><span style="color: rgb(0, 0, 0);">            </span><span style="color: rgb(0, 128, 0);">#</span><span style="color: rgb(0, 128, 0);"> Copyright (c) 1999-2002 by Fredrik Lundh</span><span style="color: rgb(0, 128, 0);"><br /></span><span style="color: rgb(0, 0, 0);">            </span><span style="color: rgb(0, 128, 0);">#</span><span style="color: rgb(0, 128, 0);"> Copyright (c) 2006 by Matt Harrison</span></div><br /><br />        原来这东西，国外99年就在研究了，自己现在才知道...<br /><br />        对于Ajax我没有什么经验，JSON RPC也没有，不过凭着程序员的直觉，进行使用测试。<br /><br />        网上例子不多，找到了两个例子<br /><br />            一个python例子<br /><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br><a href="http://www.CodeHighlighter.com/" target="_blank">http://www.CodeHighlighter.com/</a><br><br>--><span style="color: rgb(0, 0, 0);">                s </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> jsonrpclib.ServerProxy(</span><span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(128, 0, 0);">http://jsolait.net/services/test.jsonrpc</span><span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">)<br />                reply </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> s.echo(</span><span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(128, 0, 0);">foo bar</span><span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">)<br />                </span><span style="color: rgb(0, 0, 255);">print</span><span style="color: rgb(0, 0, 0);"> reply</span></div>        <br />            一个javaScript例子<br /><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br><a href="http://www.CodeHighlighter.com/" target="_blank">http://www.CodeHighlighter.com/</a><br><br>--><span style="color: rgb(0, 0, 0);">                </span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);"> jsonrpc </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);">  JSONRpcClient(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">/&lt;%=ApplicationHelper.getWebAppName(request)%&gt;/JSON-RPC</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">);<br />                jsonrpc.myObject.setName(“Vince”);</span></div>        <br />        仔细研究这两个例子，再参考sohu的页面代码，猜到，其实<br /><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br><a href="http://www.CodeHighlighter.com/" target="_blank">http://www.CodeHighlighter.com/</a><br><br>--><span style="color: rgb(0, 0, 0);">                </span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);"> rpccall </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);"> JSONRpcClient(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">/rpccall</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">,</span><span style="color: rgb(0, 0, 255);">null</span><span style="color: rgb(0, 0, 0);">,</span><span style="color: rgb(0, 0, 255);">null</span><span style="color: rgb(0, 0, 0);">, </span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">photoMgr</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">);<br />                photosList </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> rpccall.getAllPhotos(</span><span style="color: rgb(0, 0, 0);">74529157</span><span style="color: rgb(0, 0, 0);">)</span></div><br />        是json rpc 的一种javascript写法，可以改成                    <br /><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br><a href="http://www.CodeHighlighter.com/" target="_blank">http://www.CodeHighlighter.com/</a><br><br>--><span style="color: rgb(0, 0, 0);">                </span><span style="color: rgb(0, 0, 255);">var</span><span style="color: rgb(0, 0, 0);"> jsonrpc </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);"> JSONRpcClient(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">/rpccall</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">);<br />                photosList </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> jsonrpc.photoMgr.getAllPhotos(</span><span style="color: rgb(0, 0, 0);">74529157</span><span style="color: rgb(0, 0, 0);">)</span></div>        <br />        那么换成python就是<br /><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br><a href="http://www.CodeHighlighter.com/" target="_blank">http://www.CodeHighlighter.com/</a><br><br>--><span style="color: rgb(0, 0, 0);">                s </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> jsonrpclib.ServerProxy(</span><span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(128, 0, 0);">http://pp.sohu.com/rpccall</span><span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">)<br />                reply </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> s.photoMgr.getAllPhotos(</span><span style="color: rgb(0, 0, 0);">74529157</span><span style="color: rgb(0, 0, 0);">)</span></div>        <br />        当然了，这个写法也是改了好几次才得到的，结果是好长的一个dict对象，看到结果的时候，我得意的笑，得意的笑..<br /><br />        动态语言的优势这个时候就体现了，同为动态语言的python和javascript，都是不需要什么类型强制转换，直接获得的对象，再调用方法就可以了，换成了严谨的java，要如何处理才好呢？恐怕要写长好几句了。<br /><br />        得到后就简单了，分析一下reply的dict结构，提取出imgList<br /><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br><a href="http://www.CodeHighlighter.com/" target="_blank">http://www.CodeHighlighter.com/</a><br><br>--><span style="color: rgb(0, 0, 0);">            imglist </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> reply.get(</span><span style="color: rgb(128, 0, 0);">'</span><span style="color: rgb(128, 0, 0);">result</span><span style="color: rgb(128, 0, 0);">'</span><span style="color: rgb(0, 0, 0);">).get(</span><span style="color: rgb(128, 0, 0);">'</span><span style="color: rgb(128, 0, 0);">list</span><span style="color: rgb(128, 0, 0);">'</span><span style="color: rgb(0, 0, 0);">))</span></div><br />   
   
imglist是个dict的list，每个dict中，最主要的就是hosturl和imgNames属性，imgNames属性一般有3个图片名，全
部下载后，结合photos.js的_getImgeUrl方法的分析，知道最后一个非空的，就是最大的图片，这个就是我需要的啦，剩下的事情就简单了。<br /><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br><a href="http://www.CodeHighlighter.com/" target="_blank">http://www.CodeHighlighter.com/</a><br><br>--><span style="color: rgb(0, 0, 0);"><br />        imgSrcs </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> []<br />        </span><span style="color: rgb(0, 0, 255);">for</span><span style="color: rgb(0, 0, 0);"> imgurl </span><span style="color: rgb(0, 0, 255);">in</span><span style="color: rgb(0, 0, 0);"> imglist:           <br />            hosturl </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> imgurl[</span><span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(128, 0, 0);">hosturl</span><span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">]<br />            imgNames </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> imgurl[</span><span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(128, 0, 0);">imgNames</span><span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">].split(</span><span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(128, 0, 0);">;</span><span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">)<br />           <br />            </span><span style="color: rgb(0, 0, 255);">for</span><span style="color: rgb(0, 0, 0);"> i </span><span style="color: rgb(0, 0, 255);">in</span><span style="color: rgb(0, 0, 0);"> range(len(imgNames)</span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">, 0, </span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">):<br />            </span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);"> imgNames[i]:<br />                imgSrc </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> hosturl </span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);"> imgNames[i]<br />                </span><span style="color: rgb(0, 0, 255);">break</span><span style="color: rgb(0, 0, 0);"><br />            imgSrcs.append(imgSrc)</span></div><br /><br />        现在sohu的图片公园也没有防止外链了，直接用SimpleDownloader下载就可以了，至此，大功告成。<br /><br /><img src="http://www.blogjava.net/andyyehoo/aggbug/106691.html" height="1" width="1" /><br /><br /><div align="right"><a href="http://www.blogjava.net/andyyehoo/" target="_blank" style="text-decoration:none;">龙舞九天</a> 2007-03-27 16:19 <a href="http://www.blogjava.net/andyyehoo/archive/2007/03/27/106691.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>
          <br/>
          <span style="color:red;">
            <a href="http://andyyehoo.javaeye.com/blog/68027#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 27 Mar 2007 08:19:00 +0800</pubDate>
        <link>http://andyyehoo.javaeye.com/blog/68027</link>
        <guid>http://andyyehoo.javaeye.com/blog/68027</guid>
      </item>
      <item>
        <title>2006年的IT业开发领域</title>
        <author>andyyehoo</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://andyyehoo.javaeye.com">andyyehoo</a>&nbsp;
          链接：<a href="http://andyyehoo.javaeye.com/blog/41858" style="color:red;">http://andyyehoo.javaeye.com/blog/41858</a>&nbsp;
          发表时间: 2006年12月31日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><strong>Ajax</strong></p>
<p>燕南天以一把锈剑，骗倒了雷老大。剑不是关键，关键是燕南天强大的内力。 Google以Google Map，把大家的眼球都吸引到了Ajax，飞快的实时地图，固然有Ajax表现能力功劳，可是后台地图数据存储设计，数据的读取和传输，服务器的带宽和群集，才是优秀表现的关键。可惜这些技术，google是不会公布的。 </p>
<p>&nbsp;</p>
<p><strong>Ruby</strong></p>
<p>日本人的模仿基础上创新的能力，终于在IT界有所表现了，出了一个这么一个看起来不错的东西。只不过在有如此多技术可选的情况下，偏偏要跑去帮人家做测试，在下的心里是不愿意的。虽然俺的相机也是日货，可是那是没有办法的事情。所以，如果要学门辅助动态语言玩玩，我选Python；如果说要靠技术打工，我选Java，5年内没任何问题。如果要创业，技术切面自然有其他，不需要用它。 </p>
<p>&nbsp;</p>
<p><strong>Web 2.0</strong></p>
<p>2006是web 2.0应用井喷的一年，各大网站都纷纷推出了博客，阿猫阿狗都开始写博客了，让俺们这些比较早开始写技术博客的汗颜，原来博客还可以这样写，这样用。 web 2.0的特点是用户体验，资源共享，集体思维，平台开放。听起来很符合互联网的自由精神，但我却不以为然。 </p>
<p>1）Wiki。靠广大互联网民的自发编辑，不断修改，达到大英百科全书的水平，要多久？须知道，大英百科全书的编辑者，都是超级大大牛的。他们会自愿免费的参加到wiki的队伍？不是开源软件的路子可以放之四海而皆准的。 </p>
<p>2）Blog。 本来大家本来都是到权威论坛的板块上，集中写东西讨论，现在变成都是在自己博客上写东西，各写各的，权威的力量被削弱。 </p>
<p>这样带来的负面影响就是，缺乏专业人士的评级和管理，网络上便会充斥着乱糟糟的声音。以前你要看影评，你可能会到某个很有意思的影视论坛，看看置顶贴，版主写的，版主推荐的，几个写的，就可以得到享受，自己也可以发表看法，捧捧场，吵吵架。现在你不得不到一个影视博客，如果搜索功能做得好，你又会用，幸运的话你可能会搜到几个博客的日志，然后分别到他们家逛逛，发表点恭维，因为你讽刺或者批评的话，拥有自主删除权，不用大家公决或者版主判断的。 </p>
<p>例如豆瓣网，我觉得就很难在上面找到有点品味的声音。真正有水平的人，谁愿意到处白白浪费口水？当权威都被消灭光了，大家都各自为政，恐怕日子也未必好过。过度的自由，也会带来灾难。当然了，不是说这东西不好，只是现在的这种情况，还不行。 </p>
<p>总之，2006年的开始流行的新鲜玩意不少，做开发的技术人员，不要盲目的被牵着到处走，成为人家厂商和产品，观念的白老鼠，想想如何争强内力才是关键，看清形势，把握时机，创造自己的事业才是王道。</p>
          <br/>
          <span style="color:red;">
            <a href="http://andyyehoo.javaeye.com/blog/41858#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 31 Dec 2006 16:07:23 +0800</pubDate>
        <link>http://andyyehoo.javaeye.com/blog/41858</link>
        <guid>http://andyyehoo.javaeye.com/blog/41858</guid>
      </item>
  </channel>
</rss>