<?xml version="1.0" encoding="utf-8"?>
<!-- generator="FeedCreator 1.7.2" -->
<rss version="2.0">
    <channel>
        <title>老奔</title>
        <description><![CDATA[老奔-罗成个人博客，分享学习经验，讲述成长故事。]]></description>
        <link>http://www.luocheng.cn/</link>
        <lastBuildDate>Tue, 07 Feb 2012 07:25:36 +0800</lastBuildDate>
        <generator>FeedCreator 1.7.2</generator>
        <image>
            <url>http://www.luocheng.cn/styles/default/images/logo.gif</url>
            <title>老奔</title>
            <link>http://www.luocheng.cn/</link>
            <description><![CDATA[老奔-罗成个人博客，分享学习经验，讲述成长故事。]]></description>
        </image>
        <item>
            <title>PHP开源框架Drupal怎么样？</title>
            <link>http://www.luocheng.cn/article-view-255.html</link>
            <description><![CDATA[<p>首先我想说在中国请不要使用drupal，也不要学习drupal，真的，最近刚刚用drupal做了一个商业网站，drupal不适合中国绝对不是危言耸听。 </p><p>好，现在开始正文，我会从不仅仅是开发角度，而是从项目管理，流程，开发，测试，上传同步。等各个角度drupal的噩梦般的缺点。也许文字较多，希望有人能耐心看一下。我会把开发中的问题留到最后讲，因为实在是太多问题了。我们程序的经理一句话总结drupal只适合1个人开发。 </p><p></p><p><b>1、流程问题：</b>我是产品经理， 作为普通的web项目流程 一般为， 需求确立-&gt;做出设计(psd)-&gt;完成前端(html)-&gt;编程阶段(php)。 而drupal的流程为 需求确立-&gt;做出设计(psd)-&gt;drupal编程阶段(php)-&gt;完成前端html。 这样的流程直接导致了很多问题： </p><p></p><p>问题1：psd到html有一个切图的流程，大家都知道现在psd做出来的设计搞到html总会有一些差异。字体大小，图片大小，和一些效果。例如每行放多少个字，图片的尺寸比例都是需要等到html做完后微调确立的。而用drupal的流程没有切图这个步骤，所有的html都是drupal的view生成出来的，结果导致这个psd和html差异的问题被放大，需要更多时间去调整。 </p><p></p><p>问题2：由于html是view生成出来的，垃圾代码非常多，是普通手工写的代码3倍以上。可读性非常差，是做html人的恶梦。而且一些效果很难做出来(圆角就不要想了，直接用一个大背景算了) </p><p></p><p>问题3：由于流程 做出设计(psd)-&gt;drupal编程阶段(php)-&gt;完成前端html。 每次改动view生成的html的ID都会变化，然后html的css就要重做。举个例子：例如传统的方式html做好后，原来是一行显示的是城市改成显示省，城市，区后 html和css不需要该任何东西。因为css控制的一行的文字。 而drupal用view改了之后每个node都会生成span，需要重新调整样式给新建的样式，而且如果是更改了某个块， 块ID变了，css就没了，还要重新调整css里面的id， 做html的人不知道要做多少次重复的劳动。而且由于html是view生成的，从html里面的n多垃圾代码找到一个可以用于写css的ID真比自杀还难受。 </p><p></p><p>总结，流程的不同直接导致了drupal是做html人的恶梦 </p><p></p><p><b>2、成本问题：</b>在中国找到一个会html的不难，找一个会php的也不难，而且成本也不高。 即使找一个会做html css 并且会php也不是很难。 那么如果用drupal开发会变成什么样呢？你必须找一个需要精通html+CSS+JS+php的人，而且缺一个不可(注意是要精通)。而且还要同时找精通drupal的人，这样的人在中国能找到吗? </p><p>为什么呢? 首先drupal的view绝对不是仅仅懂html就能掌握的，view是给精通sql的程序员用的，所以不懂程序的人，或者不精通程序不精通sql的人请不要学习drupal了， drupal看似一个cms系统，但实际drupal是一种语言，一个操作系统。 没有3年以上的大型开发经验的人根本无法掌握。 (就连开发drupal的都无法掌握drupal) </p><p>我们开发这个项目时，从德国总部请来了drupal专家，而且还聘请了中国drupal社区的二号人物(一个法国人)，而且我们前端都是可以自己写js的人，这些的人成本有多高。关键是即使是这样我们还是无法降服drupal。 </p><p></p><p>总结 drupal是老板的恶梦。 </p><p></p><p><b>3、从现在开始谈开发问题。</b> </p><p>drupal 的view 说白了就是一个简单的sql查询工具。 一个程序员可以轻松手写sql达到目的，而用view可能怎么写也达不到目的，做同一个逻辑增加很多时间成本，而且关键很多都达不到。 还有就是定位的pannel只能往顶部或底部插入，不能往中间插，如果当初需求没定好想改，那就改整个页面的布局吧。而且html的样式还要重做。 一个开发同事原来会html，会js，会sql，现在做了drupal后被强制变成了viewer，只会写view了，html，css代码也不会了，sql不会了， 整个人的职业发展终结了。 </p><p>　　1、传值问题，例如js 与 flash之间传值， 现在变成了 view，js， flash， 之间传值 本来就不是很容易的问题现在又多了一成， 很多东西时间需要3倍以上时间用了很多办法才能做到。 </p><p>　　2、多人开发问题， 普通流程都是用svn控制，而用drupal开发很多逻辑都是直接储存在drupal的数据库，出了问题根本不知道是哪出了问题，是谁出了问题。 </p><p>　　3、性能问题，不多说了，垃圾的html代码，加垃圾的view的逻辑， 加上复杂的传值过程，性能要好就真是见鬼了。 </p><p>　　4、中文问题， 很多内置对英文的处理，例如截取，断句，等等都是很好功能，但是对于中文都成了bug。(那个法国人正在开发drupal7的适合中文的模块) </p><p>　　5、文章分页功能，都需要自己开发，很多bug。再加上多人开发问题，出了问题不知道问题在哪，如何解决。 </p><p>　　6、点击链接新开窗口打开，view中没有这个功能，真的，真的没有，目前我们用js实现的。 </p><p>　　7、js浏览器IE下兼容性问题，drupal会把js都整合到一起，无解，好了ie坏了firefox。 </p><p>　　8、cck问题， cck也是drupal重要部分，但是就连2级联动这种功能都没有，现在国内哪个cms和论坛没有类似cck建字段的功能。 最基本的功能都要自己开发，而且关键是自己开发很危险。说不定改了什么drupal核心的东西系统就崩溃了。 </p><p>　　9、批量上传图片问题，很多插件看似没有问题，但是不支持中文文件名，而且我们图片的数量级是15000张，数量级一多，一大堆问题。 </p><p></p><p><b>4、最最重要的问题：</b>drupal非常不稳定，或者drupal没有人能控制得了，现在drupal给我的感觉越来越像终结者里的天网。我们有开发drupal的专家，都控制不了。 举例说明几个问题： </p><p></p><p>　　1、内存泄露问题，在开发的时候我们曾经每5分钟重启一次服务器，不重启过一段时间服务器远程都连不上了，只能手动去按服务器上的按钮重启。 </p><p>　　2、有时候只改css的文件的时候样式都改不过来，即使已经清楚了所有服务器的缓存，drupal的缓存，和浏览器的缓存， </p><p>　　3、drupal自己把数据库回档了2次，本来我们都已经改好了功能，但却回档到某个版本，因为都是纯在在drupal的数据库里，根本无法找到问题所在，只好重做一遍。 而另一次是在切换域名的时候，也是数据丢失。 (drupal有自我修复功能?) </p><p>　　4、drupal 在我们切换域名的时候，强制把mysql服务器关闭了，不知道为什么，我们查看了mysql的日志，也不知道什么问题，很灵异。 </p><p>　　5、虽然有比较好的缓存系统，但只对访客有效，对于注册用户来说居然毫无作用，其中还有很多很多问题， 我只能想起什么写什么了， 总之 drupal是程序员的恶梦， 是项目管理的恶梦，我们无法控制项目，是drupal在控制我们。不知道什么时候出问题，不知道问题出在哪，不知道如何解决，都是走一步看一步。及时备份数据库吧。 </p><p>　　6、我非常同意我们开发经理的说的一句话，drupal只适合一个人开发，(我们那个德国专家说的是一个viewer对应一个htmler，2个人开发) </p><p>那么我在想，drupal的定位是什么，如果是定位于类似supersite，织梦，这种不懂编程也能快速建站用的人，drupal显然不适合， 那么给程序员的用的，把程序员强制了变成了一个viewer，终结了程序员发展，也不适合，开发大型的商业网站，不稳定，不适合多人协作，也不适合，那么drupal到底适合做什么呢? 所以我的结论就是drupal不适合中国。真的不适合。</p>]]></description>
            <author>fangzi</author>
            <pubDate>Wed, 28 Dec 2011 11:29:39 +0800</pubDate>
        </item>
        <item>
            <title>CentOS5.5安装Nginx0.8.55+php5.3.8</title>
            <link>http://www.luocheng.cn/article-view-254.html</link>
            <description><![CDATA[<p><b>1、安装Nginx</b> </p><p># tar zxvf nginx-0.8.55.tar.gz </p><p># cd nginx-0.8.55 </p><p># ./configure --prefix=/opt/nginx --with-http_stub_status_module </p><p># make &amp;&amp; make install </p><p># /opt/nginx/sbin/nginx //启动 </p><p></p><p><b>2、安装PHP</b> </p><p># tar zxvf php-5.3.8.tar.gz </p><p># cd php-5.3.8 </p><p>#./configure --prefix=/opt/php --with-config-file-path=/opt/php/etc --enable-fastcgi --enable-fpm - </p><p>-enable-force-cgi-redirect --enable-mbstring </p><p># make &amp;&amp; make install </p><p># cp php.ini-production /opt/php/etc/php.ini //拷贝php配置文件 </p><p># cp /opt/php/etc/php-fpm.conf.default /opt/php/etc/php-fpm.conf //拷贝php-fpm配置文件 </p><p># vi /opt/php/etc/php-fpm.conf </p><p>该配置文件只用修改以下四点 </p><p>pm.max_children = 64 </p><p>pm.start_servers = 20 </p><p>pm.min_spare_servers = 5 </p><p>pm.max_spare_servers = 35 </p><p>pm.max_requests = 1024 </p><p></p><p># /opt/php/sbin/php-fpm -t　//测试php-fpm.conf的语法是否正确 </p><p># /opt/php/sbin/php-fpm &amp;　//启动 </p><p># netstat -tnlp //查看端口占用情况 </p><p># killall -9 php-fpm </p><p></p><p><b>3、配置开机自动启动</b> </p><p># vi /etc/rc.d/rc.local </p><p>在空白行添加 </p><p>/opt/php/sbin/php-fpm &amp; </p><p>/opt/nginx/sbin/nginx </p><p></p><p><b>4、配置</b> </p><p>修改nginx.conf，改PHP解析环节为： </p><p>location ~ .php$ { </p><p>　　　　　　root　　　　　 html; </p><p>　　　　　　fastcgi_pass　 127.0.0.1:9000; </p><p>　　　　　　fastcgi_index　index.php; </p><p>　　　　　　fastcgi_param　SCRIPT_FILENAME $document_root$fastcgi_script_name; </p><p>　　　　　　include　　　　fastcgi_params; </p><p>} </p><p>注意： </p><p>fastcgi_param　SCRIPT_FILENAME　/scripts$fastcgi_script_name; </p><p>改为： </p><p>fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; </p><p></p><p><b>5、平滑重启 </p><p></b>对于Nginx 0.8.x版本，现在平滑重启Nginx配置非常简单，执行以下命令即可： </p><p># /opt/nginx/sbin/nginx -s reload</p>]]></description>
            <author>fangzi</author>
            <pubDate>Wed, 26 Oct 2011 01:58:34 +0800</pubDate>
        </item>
        <item>
            <title>jquery图片放大镜imagezoom v1.0下载(原创)</title>
            <link>http://www.luocheng.cn/article-view-253.html</link>
            <description><![CDATA[<p><wbr><div style="width: 100%; overflow-y: hidden;</p><p>overflow-x:auto;" ><a href="uploads/201110/20111012020830825.jpg" alt="uploads/201110/20111012020830825.jpg" target="_blank"><img src="uploads/201110/20111012020830825.jpg" border="0"></a></div><wbr> </p><p>关于图片放大镜目前网络上主要有以下三款插件： </p><p></p><p>jquery jqzoom:名气大，鼠标移入移除事件绑定在图片父级元素A上，如果让图片CSS完全居中后有BUG。 </p><p>kissy imagezoom:淘宝网的放大镜插件，由于基于kissy框架，普及率不是很高，适合于底层采用kissy的页面。 </p><p>jquery magnify:把mousemove事件绑定在镜头上，稍微移动快了鼠标会脱离镜头，有明显BUG。 </p><p></p><p>jquery imagezoom主要是为了满足传统商品展示，比如淘宝、京东的商品图片展示功能。特别是淘宝的商品图片均是用户自己上传的，有宽有窄，为了美观又必须让图片完全居中显示。 </p><p></p><p>该插件代码量很小，压缩后仅3K，在此特别感谢淘宝网前端&quot;乔花&quot;同学的大力支持。 </p><p></p><p>下载地址：<a href="uploads/201110/jquery.imagezoom.v1.0.rar" class="cRed" target="_blank">点击下载jquery.imagezoom.v1.0</a><wbr> </p><p></p><p>需要的朋友，留下正确的邮箱，系统自动发送解压密码！</p>]]></description>
            <author>fangzi</author>
            <pubDate>Wed, 12 Oct 2011 06:08:35 +0800</pubDate>
        </item>
        <item>
            <title>Varnish安装与配置</title>
            <link>http://www.luocheng.cn/article-view-252.html</link>
            <description><![CDATA[<p>传说中，Varnish比Squid要快很多倍，我没在实际的生产环境中检查过，但Varnish可以按条件清理缓存，这是Squid不可回避的弱点。 </p><p></p><p>安装环境： </p><p>OS：Linux CentOS 5.5 </p><p>Varnish：Varnish 2.1.2 </p><p></p><p><b>第一步：下载Varnish</b> </p><p>下载地址:http://sourceforge.net/projects/varnish/files/ </p><p></p><p><b>第二步：基本目录配置</b> </p><p>1、创建www用户和组，以及Varnish缓存文件存放目录（/var/vcache）： </p><p><div class="code">/usr/sbin/groupadd www -g 48 </p><p>/usr/sbin/useradd -u 48 -g www www </p><p>mkdir -p /data/varnish/vcache </p><p>chmod +w /data/varnish/vcache </p><p>chown -R www:www /data/varnish/vcache </div><wbr> </p><p></p><p>2、创建Varnish日志目录： </p><p><div class="code">mkdir -p /data/varnish/logs </p><p>chmod +w /data/varnish/logs </p><p>chown -R www:www /data/varnish/logs </div><wbr> </p><p></p><p><b>第三步：编译安装</b> </p><p><div class="code">tar zxvf varnish-2.1.2.tar.gz </p><p>cd varnish-2.1.2 </p><p>./configure --prefix=/opt/varnish </p><p>make </p><p>make install </div><wbr> </p><p></p><p>安装过程中，很可能出现&quot;No package 'libpcre' found&quot; </p><p>Varnish需要pcre支持，如果服务器没有安装pcre-devel会提示需要指定prce目录。 </p><p>Centos服务器上使用yum install pcre-devel安装 </p><p></p><p><b>第四步：配置 </b></p><p><div class="code">vi /opt/varnish/etc/varnish/www.vcl</div><wbr> </p><p>输入：附件中 www.vcl 内容 </p><p></p><p><b>第五步：启动</b> </p><p><div class="code">/opt/varnish/sbin/varnishd -u www -g www -f /opt/varnish/etc/varnish/www.vcl -a 119.254.69.171:80 -s file,/data/varnish/vcache/varnish_cache.data,3G -w 1024,51200,10 -t 3600 -T 127.0.0.1:3500 </p><p>#启动varnishncsa用来将Varnish访问日志写入日志文件： </p><p>/opt/varnish/bin/varnishncsa -w /data/varnish/logs/varnish.log &amp; </div><wbr> </p><p></p><p><b>第六步：配置开机自动启动Varnish</b> </p><p><div class="code">vi /etc/rc.local </div><wbr> </p><p>追加： </p><p><div class="code">/opt/varnish/sbin/varnishd -u www -g www -f /opt/varnish/etc/varnish/www.vcl -a 119.254.69.171:80 -s file,/data/varnish/vcache/varnish_cache.data,3G -w 1024,51200,10 -t 3600 -T 127.0.0.1:3500 </p><p>/opt/varnish/bin/varnishncsa -w /data/varnish/logs/varnish.log &amp; </div><wbr> </p><p></p><p><b>第七步：如何动态加载配置</b> </p><p><div class="code">/opt/varnish/bin/varnishadm -T 127.0.0.1:3500 </p><p>vcl.load vcl-03 &quot;/opt/varnish/etc/varnish/www.vcl&quot; </p><p>vcl.use vcl-03 </div><wbr> </p><p></p><p><b>第八步：优化Linux内核参数</b> </p><p><div class="code">vi /etc/sysctl.conf </div><wbr> </p><p>追加： </p><p><div class="code">net.ipv4.tcp_fin_timeout = 30 </p><p>net.ipv4.tcp_keepalive_time = 300 </p><p>net.ipv4.tcp_syncookies = 1 </p><p>net.ipv4.tcp_tw_reuse = 1 </p><p>net.ipv4.tcp_tw_recycle = 1 </p><p>net.ipv4.ip_local_port_range = 5000　　65000 </div><wbr> </p><p></p><p><b>第九步：如何清理缓存</b> </p><p>有两种方法： </p><p>1、登录系统命令行清理(适合批量操作) </p><p>清除所有缓存 # /opt/varnish/bin/varnishadm -T 127.0.0.1:3500 url.purge ^.*$ </p><p>请注意很多资料说</p><p># /opt/varnish/bin/varnishadm -T 127.0.0.1:3500 url.purge *$</p><p>可以清理所有缓存，那是2.0前的版本，2.0后必须严格按照正则规范匹配</p><p> </p><p>2、通过HTTP协议清理 </p><p>请查看附件index.php</p><p> </p><p>当然也可以用PHP函数exec调用命令行。 </p><p></p><p>附件下载：<a href="uploads/201109/varnish.rar" class="cRed" target="_blank">点击下载安装手册及配置文档</a><wbr></p>]]></description>
            <author>fangzi</author>
            <pubDate>Fri, 09 Sep 2011 01:51:29 +0800</pubDate>
        </item>
        <item>
            <title>Memcached、Tbstore数据缓存系统对比分析</title>
            <link>http://www.luocheng.cn/article-view-251.html</link>
            <description><![CDATA[<p>首先谈谈大名鼎鼎的memcached，这套cache系统很多大公司都在用，比如ebay、amazon、也包括我们啦。 </p><p>1、Memcached是高性能的，分布式的内存对象缓存系统，用于在动态应用中减少数据库负载，提升访问速度； </p><p>2、Memcached存储和访问速度非常快，它使用libevent，可以应付任意数量打开的连接（使用epoll，而非poll），使用非阻塞网络IO，分布式散列对象到不同的服务器，查询复杂度是O(1)； </p><p>3、Memcached客户端支持几乎所有主流开发语言，包括 Perl/PHP/Python/Ruby/Java/C#/C 等； </p><p>4、Memcached支持对cache内对象生命周期进行灵活设置； </p><p>5、分布式算法采用CRC32； </p><p>6、不提供cache内容的复制和持久化； </p><p></p><p>再说下淘宝的tbstore </p><p>1、tbstore是由淘宝实现的高性能、分布式的基于Berkeley DB(一种嵌入式数据库系统，以键值对的形式存储)的cache系统，目前在aliababa集团内部使用非常广泛； </p><p>2、客户端支持不是很丰富，好像只支持java； </p><p>3、也支持对cache内对象生命周期设置； </p><p>4、对cache内容可持久化； </p><p></p><p>其实我们很容易发现两者的实现非常类似，包括分布式实现的算法；两者最大的区别是memcached基于内存，而tbstore基于Berkeley DB；其缺点也很明显，前者当系统需要新增server或者重启的时候以前的cache内容都会失效，后者接口不丰富，文档支持少。</p>]]></description>
            <author>fangzi</author>
            <pubDate>Tue, 30 Aug 2011 03:59:18 +0800</pubDate>
        </item>
        <item>
            <title>因为爱情</title>
            <link>http://www.luocheng.cn/article-view-250.html</link>
            <description><![CDATA[<p><p id="qiHPzbhe0">Alternative content</p>　<script type="text/javascript">AudioPlayer.embed("qiHPzbhe0", {soundFile: "dXBsb2Fkcy9tcDMveXdhcS5tcDM"});</script> </p><p><wbr><div style="width: 100%; overflow-y: hidden;</p><p>overflow-x:auto;" ><a href="uploads/201108/20110828102621875.jpg" alt="uploads/201108/20110828102621875.jpg" target="_blank"><img src="uploads/201108/20110828102621875.jpg" border="0"></a></div><wbr> </p><p><wbr><div style="width: 100%; overflow-y: hidden;</p><p>overflow-x:auto;" ><a href="uploads/201108/20110828102636848.jpg" alt="uploads/201108/20110828102636848.jpg" target="_blank"><img src="uploads/201108/20110828102636848.jpg" border="0"></a></div><wbr> </p><p><wbr><div style="width: 100%; overflow-y: hidden;</p><p>overflow-x:auto;" ><a href="uploads/201108/20110828102644794.jpg" alt="uploads/201108/20110828102644794.jpg" target="_blank"><img src="uploads/201108/20110828102644794.jpg" border="0"></a></div><wbr> </p><p><wbr><div style="width: 100%; overflow-y: hidden;</p><p>overflow-x:auto;" ><a href="uploads/201108/20110828102652823.jpg" alt="uploads/201108/20110828102652823.jpg" target="_blank"><img src="uploads/201108/20110828102652823.jpg" border="0"></a></div><wbr> </p><p><wbr><div style="width: 100%; overflow-y: hidden;</p><p>overflow-x:auto;" ><a href="uploads/201108/20110828102702561.jpg" alt="uploads/201108/20110828102702561.jpg" target="_blank"><img src="uploads/201108/20110828102702561.jpg" border="0"></a></div><wbr> </p><p><wbr><div style="width: 100%; overflow-y: hidden;</p><p>overflow-x:auto;" ><a href="uploads/201108/20110828102709628.jpg" alt="uploads/201108/20110828102709628.jpg" target="_blank"><img src="uploads/201108/20110828102709628.jpg" border="0"></a></div><wbr> </p><p><wbr><div style="width: 100%; overflow-y: hidden;</p><p>overflow-x:auto;" ><a href="uploads/201108/20110828102718263.jpg" alt="uploads/201108/20110828102718263.jpg" target="_blank"><img src="uploads/201108/20110828102718263.jpg" border="0"></a></div><wbr> </p><p><wbr><div style="width: 100%; overflow-y: hidden;</p><p>overflow-x:auto;" ><a href="uploads/201108/20110828102723325.jpg" alt="uploads/201108/20110828102723325.jpg" target="_blank"><img src="uploads/201108/20110828102723325.jpg" border="0"></a></div><wbr> </p><p><wbr><div style="width: 100%; overflow-y: hidden;</p><p>overflow-x:auto;" ><a href="uploads/201108/20110828102730366.jpg" alt="uploads/201108/20110828102730366.jpg" target="_blank"><img src="uploads/201108/20110828102730366.jpg" border="0"></a></div><wbr> </p><p><wbr><div style="width: 100%; overflow-y: hidden;</p><p>overflow-x:auto;" ><a href="uploads/201108/20110828102800897.jpg" alt="uploads/201108/20110828102800897.jpg" target="_blank"><img src="uploads/201108/20110828102800897.jpg" border="0"></a></div><wbr> </p><p><wbr><div style="width: 100%; overflow-y: hidden;</p><p>overflow-x:auto;" ><a href="uploads/201108/20110828102809480.jpg" alt="uploads/201108/20110828102809480.jpg" target="_blank"><img src="uploads/201108/20110828102809480.jpg" border="0"></a></div><wbr> </p><p><wbr><div style="width: 100%; overflow-y: hidden;</p><p>overflow-x:auto;" ><a href="uploads/201108/20110828102813209.jpg" alt="uploads/201108/20110828102813209.jpg" target="_blank"><img src="uploads/201108/20110828102813209.jpg" border="0"></a></div><wbr></p>]]></description>
            <author>fangzi</author>
            <pubDate>Sun, 28 Aug 2011 14:29:43 +0800</pubDate>
        </item>
        <item>
            <title>jquery弹出层插件-jquery alert v1.2(原创)</title>
            <link>http://www.luocheng.cn/article-view-248.html</link>
            <description><![CDATA[<p>随着web2.0的发展，传统的页面交互技术已经不能满足人们更加苛刻的交互体验，你是否还在为网易邮箱完美的页面交互技术而感叹，为QQ邮箱的简单易用而自叹不如？其实，术业有专攻，我们只是一个人承担的工作太多太杂，没有那么多的时间、公司也没那么多的人力、物力成本而已。 </p><p>我在大量的项目实践中，总结、开发出了此款jquery弹出层插件-jQuery Alert V1.2,该插件包括了六种类型的基本交互，确定型、确定/取消型、输入型、嵌入页面型、选择交互型、HTML片段型，我想已经能满足你所有的交互形式。该插件页面文档类型推荐使用&lt;!DOCTYPE html&gt;，毕竟要为html5考虑吧！ </p><p>jQuery Alert V1.2特征： </p><p>1、完全基于jquery实现，有良好的扩展基础 </p><p>2、全CSS定制样式，和你的页面完美融合 </p><p>3、完美兼容主流浏览器，充分考虑到文档类型 </p><p>4、使用简单，易于回调 </p><p>5、可拖动，可定义插件样式、遮罩样式、偏移位置、按钮文本等 </p><p><wbr><div style="width: 100%; overflow-y: hidden;</p><p>overflow-x:auto;" ><a href="uploads/201108/20110804010259627.gif" alt="uploads/201108/20110804010259627.gif" target="_blank"><img src="uploads/201108/20110804010259627.gif" border="0"></a></div><wbr> </p><p></p><p>下载地址：<a href="uploads/201108/jquery.alert.v1.2.rar" class="cRed" target="_blank">点击下载jquery.alert.v1.2</a><wbr></p><p> </p><p>需要的朋友，留下正确的邮箱，系统自动发送解压密码！</p>]]></description>
            <author>fangzi</author>
            <pubDate>Thu, 04 Aug 2011 03:10:05 +0800</pubDate>
        </item>
        <item>
            <title>利用jquery.lazyload实现图片延迟加载</title>
            <link>http://www.luocheng.cn/article-view-247.html</link>
            <description><![CDATA[<p>由于用户访问页面需要加载很多的图片，延迟加载技术在电子商务网站领域越来越普及，淘宝商城，京东商城，凡客等访问量巨大的电子商务站点为了增加用户用户体验,访问速度以及减少对自身服务器的压力，纷纷研发或使用延迟加载技术。当然如果没有前端开发的深入研究很难写出自己的js特效包。 </p><p>jquery.lazyload.js就是一个基于jquery框架库的特效应用。它能让用户访问页面的时候，只加载当前屏幕所见内容的图片。 </p><p>jquery.lazyload.js使用方法：首先页面需导入jquery.js。这个是先决条件，毕竟jquery.lazyload.js特效包是基于jquery框架库的！然后需到如Jquery.Lazyload.js。还需在本地服务器上传一张用来占位的图片grey.gif（可以是张很小的图片或者loading.gif之类表示正在加载的图片）。 </p><p><div class="code">&lt;script type=&quot;text/javascript&quot; src=&quot;/js/jquery.js&quot;&gt;&lt;/script&gt; </p><p>&lt;script type=&quot;text/javascript&quot; src=&quot;/js/jquery.lazyload.js&quot;&gt;&lt;/script&gt; </p><p>&lt;script type=&quot;text/javascript&quot;&gt; </p><p>jQuery(document).ready( </p><p>function($){ </p><p>$(&quot;img&quot;).lazyload({ </p><p>　　 placeholder : /images/common/grey.gif, </p><p>　　 effect　　　: &quot;fadeIn&quot; </p><p>}); </p><p>}); </p><p>&lt;/script&gt;</div><wbr> </p><p>但是如果使用httpwatch等网页测试工具检测页面加载你会发现，图片其实是全部加载完了。因为执行js是在页面的page_load之后。所有，jquery.lazyload.js加载出来的只是图片的缓存文件。这样不就2次访问服务器加载图片了？即使jquery.lazyload.js加载的只是缓存图片... </p><p>解决办法：在jquery.lazyload.js的62行将 $(self).attr(&quot;original&quot;, $(self).attr(&quot;img&quot;));　修改成 $(self).attr(&quot;original&quot;, $(self).attr(&quot;original&quot;));　 然后读图图片的时候将img= 替换成 original= 即可。凡客，淘宝商城都是这样的作法。这样才实现真正意义上的延迟加载。</p>]]></description>
            <author>fangzi</author>
            <pubDate>Tue, 19 Jul 2011 07:46:00 +0800</pubDate>
        </item>
        <item>
            <title>jquery实现跨域提交(原创)</title>
            <link>http://www.luocheng.cn/article-view-246.html</link>
            <description><![CDATA[<p>我们在运营一个产品的时候往往会遇到这样那样的表单提交，如客户数据收集、申请加盟、意见反馈等，由此我们开发了这样一个产品，可以理解为万能型数据收集平台，不难想到，我们在前端会遇到跨域的问题，比如 www.a.com 需要提交数据到<a href="http://www.app.com/" target="_blank">www.app.com</a><wbr>，以前我们用服务端代理来解决跨域问题，上次遇到一台windows服务器，实现代理比较麻烦，于是想到了jquery实现。他有两种方法，getJSON和getScript． </p><p>getScript我常用来获取服务端数据，getJSON可用于提交信息，其实两者均是实现跨域提交。 </p><p>在jQuery1.3.2中,您可以通过使用JSONP形式的回调函数来加载其他网域的JSON数据，如&quot;myurl?callback=?&quot;。jQuery将自动替换?为正确的函数名,以执行回调函数。 </p><p><b>Jsonp原理：</b> </p><p>首先在客户端注册一个callback, 然后把callback的名字传给服务器。 </p><p>此时，服务器先生成 json 数据。 </p><p>然后以 javascript 语法的方式，生成一个function , function 名字就是传递上来的参数 jsonp. </p><p>最后将 json 数据直接以入参的方式，放置到 function 中，这样就生成了一段 js 语法的文档，返回给客户端。 </p><p>客户端浏览器，解析script标签，并执行返回的 javascript 文档，此时数据作为参数，传入到了客户端预先定义好的 callback 函数里动态执行回调函数。 </p><p><b>实例：</b> </p><p>jquery代码: </p><p>$.getJSON(&quot;http://www.app.com/index.php?c=add&amp;callback=?&quot;,{id: 10, name: &quot;test&quot;}, function(data){ </p><p>alert(data.msg); </p><p>}); </p><p>服务端返回： </p><p>jsonp1310628945031({&quot;rs&quot;:true,&quot;msg&quot;:&quot;u60a8u7684u4fe1u606fu63d0u4ea4u6210u529fuff01&quot;}) </p><p>PHP代码： </p><p>$result['rs']　= false; </p><p>$result['msg'] = '您的信息提交成功！'; </p><p>$json = new Services_JSON(); </p><p>header('Content-Type: application/json'); </p><p>echo $_GET['callback'].'('.$json-&gt;encode($result).')';</p>]]></description>
            <author>fangzi</author>
            <pubDate>Thu, 14 Jul 2011 08:12:18 +0800</pubDate>
        </item>
        <item>
            <title>百度统计热力图邀请码</title>
            <link>http://www.luocheng.cn/article-view-245.html</link>
            <description><![CDATA[<p>百度统计应该算是现在比较好的免费流量统计工具了，但高级点的功能需要邀请码，这里有十枚热力图邀请码，送给大家！ </p><p>a5ad3bee63103a12　c322ed750fa995a9　72e18e512394d262　9a50066a616a990d　cf58d21d1a264a97　c941fbbee9fd7950　76ccb9888007831c　665ffef677b145a2　6efc01053f6ee276　f4dab9212a5d45c2 </p><p></p><p>到现在目前为止都可以使用，有使用到的同学请留言备注一下。</p>]]></description>
            <author>fangzi</author>
            <pubDate>Fri, 08 Jul 2011 07:09:02 +0800</pubDate>
        </item>
    </channel>
</rss>

