手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表Tag:linux

记一次失败的下载:for wps

wps是我喜爱的国产软件之一,听说升级到2009了,兴冲冲的到网站上去下载。
进入:http://www.wps.cn/product/index.htm,我想我应该没有理解错网站的意思,于是我先下载了升级包,结果失败,说我是最新版,我想2007大概不能升级到2009吧,然后就下载了直接的安装包。安装时提醒我说有旧软件要删除,兴奋呀。。

安装好后一运行 ,MD,还是2007.晕了我

看来是我RP太差了吧。

Tags: wps

zf的paginator的疑问

如果按照ZEND的手册,在使用Zend_Paginator类的时候有两种方法,一种是直接new,一种是用factory
当然,用factory是很方便的。只需要Zend_Paginator::factory( $array )就行了
可是,如果这个array很大怎么办?它没有说。。
即使是new Zend_Paginator( Zend_Db_xxx ?$array )[不记得括号中是哪个abstract了],如果数据量大,他也没办法的呀??

今天白天我试着一下子查询了1W多条,立马死掉。
我看网上的例子,大多是要么直接传结果,要么是传 ZEND_DB的查询对象进去。但结果集都不大的,所以顺利运行 了。我不知道结果集是上万的时候会怎么样,呵呵

最后我是采用了先COUNT出总数,然后用range生成一个大数组传组 Zend_Paginator::factory() ,因为我看他里面的计数是用count的,所以我对factory的数组参数就直接传了这个range出来的数组给它。

结果,成功了,看来,这也就可以了。只是方法有点妖而己。。

记录一下,备忘一下。

Config文件
[paginator]
page.pagemax = 10
page.pagestart = 1
page.itemperpage = 25

在文件里

PHP代码
  1. <?php  
  2. //...前面略  
  3. $request = $this->_request ;  
  4. $currentPage = $request->getParam('page');  
  5. $result = $table->fetchAll( ... 条件 );  
  6. $resultCount = $table->getCount( ... 条件 ); //文件自己实现  
  7. $resultCountArray = range( 1, $resultCount ); //到底是从0到resultCount-1好,还是直接从1到$resultCount好,我没有仔细测试过  
  8.   
  9. $paginator = Zend_Paginator::factory( $resultCountArray );  
  10. $paginator->setCurrentPage( $currentPage )  
  11.                 ->setItemPerPage( 25 )      //这个方法可能写错了,我是凭记忆写的,请看手册  
  12.                 ->setPageRange( 10 );  
  13. $this->view->paginator = $paginator;  

部分参数在获取失败的情况下,会直接从Config文件里读取,这里就不详细写了,大致应该是:

PHP代码
  1. <?php  
  2. //.....略  
  3. $config = new Zend_Config_Ini('...path...' , 'paginator' ); //即Config中[]包含的文字  
  4.   
  5. $pageMax = $config->page->pagemax ;  
  6. //取出来的每条数据都是对象了  

Tags: zend, framework, paginator

JS/CSS/images lazyLoader for JQuery

在jQuery的插件库里面,有一个imageLazyLoader,是专门用来进行延迟加载图片的。这次看到这个对于JS,CSS,IMAGE三者都能进行延迟加载的代码,当然是用来查看一下的。代码很小,大约只有3K左右,100多行代码,却实现了这么多的效果,看来jQuery的功能是被挖掘的越来越多了。

JavaScript代码
  1. /* 
  2.  * xLazyLoader 1.0 - Plugin for jQuery 
  3.  * Load js, css and  images 
  4.  * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) 
  5.  * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses. 
  6.  * Depends: 
  7.  *   jquery.js 
  8.  *  Copyright (c) 2008 Oleg Slobodskoi (jimdo.com) 
  9.  */  
  10. ;(function($){  
  11.     $.xLazyLoader =  function ( method, options ) {  
  12.         if (typeof method == 'object') {  
  13.             options = method;  
  14.             method = 'load';  
  15.         };  
  16.         xLazyLoader[method]( options );  
  17.     };  
  18.       
  19.     var xLazyLoader = new function ()  
  20.     {  
  21.         var head = document.getElementsByTagName("head")[0];  
  22.         this.load = function ( options )  
  23.         {  
  24.             //Defaults  
  25.             var d = {  
  26.                 js: [],  
  27.                 css: [],  
  28.                 image: [],  
  29.                 name: null,  
  30.                 load: function(){}  
  31.             };  
  32.             $.extend(d, options);  
  33.               
  34.             var self = this,  
  35.                 ready = false,  
  36.                 loaded = {  
  37.                     js: [],  
  38.                     css: [],  
  39.                     image: []  
  40.                 }  
  41.             ;  
  42.               
  43.             each('js', d.js);  
  44.             each('css', d.css);  
  45.             each('image', d.image);  
  46.               
  47.             function each (type, urls)  
  48.             {  
  49.                 if ( $.isArray(urls) && urls.length>0 )  
  50.                     $.each( urls, function(i, url){  
  51.                         load(type, url);  
  52.                     });  
  53.                 else if (typeof urls == 'string')  
  54.                     load(type, urls);  
  55.             };  
  56.             function load (type, url)  
  57.             {  
  58.                 self[type](url, function() {   
  59.                     $.isArray(d[type]) ? loaded[type].push(url) : loaded[type] = url;  
  60.                     d.js.length == loaded.js.length   
  61.                     && d.css.length == loaded.css.length   
  62.                     && d.image.length == loaded.image.length  
  63.                     && d.load.apply(loaded, []);  
  64.                     return;  
  65.                 }, d.name ?'lazy-loaded-'+ d.name : 'lazy-loaded-'+new Date().getTime());  
  66.             };  
  67.         };  
  68.           
  69.         this.js = function (src, callback, name)  
  70.         {  
  71.             if ($('script[src*="'+src+'"]').length>0) {  
  72.                 callback();  
  73.                 return;  
  74.             };  
  75.             var script = document.createElement('script');  
  76.             script.setAttribute("type","text/javascript");  
  77.             script.setAttribute("src", src);  
  78.             script.setAttribute('id', name);  
  79.             if ($.browser.msie)  
  80.                 script.onreadystatechange = function () {  
  81.                      /loaded|complete/.test(script.readyState) && callback();  
  82.                 }  
  83.             else  
  84.                 //FF, Safari, Opera  
  85.                 script.onload = callback;  
  86.             head.appendChild(script);  
  87.         };  
  88.           
  89.         this.css = function (href, callback, name)  
  90.         {  
  91.             if ($('link[href*="'+href+'"]').length>0) {  
  92.                 callback();  
  93.                 return;  
  94.             };  
  95.               
  96.             var link = $('<link rel="stylesheet" type="text/css" media="all" href="'+href+'" id="'+name+'"></link>')[0];  
  97.             if ($.browser.msie)  
  98.                 link.onreadystatechange = function ()   {  
  99.                     /loaded|complete/.test(link.readyState) && callback();  
  100.                 }  
  101.             else if ($.browser.opera)  
  102.                 link.onload = callback;  
  103.             else  
  104.                 //FF, Safari, Chrome  
  105.                 (function(){  
  106.                     try {  
  107.                         link.sheet.cssRule;  
  108.                     } catch(e){  
  109.                         setTimeout(arguments.callee, 20);  
  110.                         return;  
  111.                     };  
  112.                     callback();  
  113.                 })();  
  114.             head.appendChild(link);  
  115.         };  
  116.           
  117.         this.image = function (src, callback)  
  118.         {  
  119.             var img = new Image();  
  120.             img.onload = callback;  
  121.             img.src = src;  
  122.         };  
  123.       
  124.         this.disable = function ( name )  
  125.         {     
  126.             $('#lazy-loaded-'+name, head).attr('disabled''disabled');  
  127.         };  
  128.         this.enable = function ( name )  
  129.         {     
  130.             $('#lazy-loaded-'+name, head).removeAttr('disabled');  
  131.         };  
  132.           
  133.         this.destroy = function ( name )  
  134.         {  
  135.             $('#lazy-loaded-'+name, head).remove();   
  136.         };  
  137.     };  
  138. })(jQuery);  
使用方法也很方便 :

Example 1:

Load some files

 $.xLazyLoader({
     js
: 'jquery.ui.all.js',
     css
: 'ui.allplugins.css',
     image
: 'your_image.jpg',
     load
: function(){
         alert
('All files are loaded');
     
}
 
});
 

Example 2:

Load multiple files of each type

 $.xLazyLoader({
     js
: ['ui.core.js','ui.dialog.js'],
     css
: ['ui.core.css', 'ui.dialog.css'],
     image
: ['your_image.jpg', 'your_image1.jpg', 'your_image2.jpg'],
     name
: 'dialog',
     load
: function(){
         alert
('All files are loaded');
     
}
 
});
 

Example 3:

Remove tags from head (javascript is still working, but css is completely destroyed )

 $.xLazyLoader('destroy','dialog');
 

Example 4:

Disable css.

 $.xLazyLoader('disable','dialog');
 

Enable css.

 $.xLazyLoader('enable','dialog');

项目存在于GOOGLECODE上,网址为:http://code.google.com/p/ajaxsoft/
估计还是会有BUG,不过相信作者应该会更新的

Tags: jquery, lazyloader

得道者多助,失道者寡助

  天时不如地利,地利不如人和。
  三里之城,七里之郭,环而攻之而不胜。夫环而攻之,必有得天时者矣;然而不胜者,是天时不如地利也。
  城非不高也,池非不深也,兵革非不坚利也,米粟非不多也;委而去之,是地利不如人和也。
  故曰: 域民不以封疆之界,固国不以山溪之险,威天下不以兵革之利。 得道者多助,失道者寡助。寡助之至,亲戚畔⑧之;多助之至,天下顺之。以天下之所顺,攻亲戚之所畔;故君子有不战,战必胜矣。”

Tags: 孟子, 得道多助, 失道寡助, 天时地利, 人和

短信价格下来了

12月3日消息,据中国新闻网报道,工业和信息化部通知,长期被消费者和业界诟病的短信网间差别定价将被取消,在2009 年1月15日前基于就低不就高原则实行内外网间统一定价。届时起,移动、联通和电信三大运营商的6亿多手机用户间互发国内短信将享有统一的0.1元/条的 价格。

据工信部10月份通信统计月报数据显示,截至10月31日,中国手机用户总数为6.27亿户。目前,除了小灵通外,我国手机用户在同一家运营商的网 络内互发国内短信,费用是0.1元/条,而在不同运营商的网络间发送国内短信时,一般费用为 0.15元/条(移动神州行用户为:网内0.15元/条,网外0.2元/条),实行的是“异网异价”政策。


不过我还是觉得挺为电信惋惜的,刚刚把CDMA搞过来。就给他定下来价格一致了。连价格优势都被扼杀了。真可怜

Tags: 短信, 移动, 联通, 电信

Records:351234567