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

为ubuntu 10的php版本降级

一键式安装PHP果然还是有问题的,不是说程序有问题,而是说版本。其实在9.10的时候,PHP已经被ubuntu默认为5.3了。这就让人很痛苦了,现在很多程序在5.3下跑不起来。怎么办?降级喽。还能怎么办?
这里有很多方式,不过,我还是建议使用第一种,最方便不过了:http://2bits.com/drupal-planet/various-ways-running-php-52-ubuntu-1004-lucid-lynx.html
第一种是这样的,先搞一个脚本运行一下:

XML/HTML代码
  1. #!/bin/sh  
  2.   
  3. # Script to install PHP 5.2 from 9.10 on 10.04  
  4. # And pin it so it does not get updated  
  5.   
  6. PKGS=`dpkg -l | grep php | awk '{print $2}'`  
  7.   
  8. apt-get remove $PKGS  
  9.   
  10. sed s/lucid/karmic/g /etc/apt/sources.list |   
  11.   tee /etc/apt/sources.list.d/karmic.list  
  12.   
  13. mkdir -p /etc/apt/preferences.d/  
  14.   
  15. for PACKAGE in $PKGS  
  16. do  
  17.   echo "Package: $PACKAGE  
  18. Pin: release a=karmic  
  19. Pin-Priority: 991  
  20. " | tee -a /etc/apt/preferences.d/php  
  21. done  
  22.   
  23. apt-get update  
  24.   
  25. apt-get install $PKGS  

这时候,其实最后一步经常会失败。。(因为他的安装顺序可能不是php5-common在第一个)
因此在运行完第一句PKGS后,可以Echo $PKGS > xxx.php.list ,将它输出到一个文件里。如果最后一步失败了,再把这个PKGS导出的变量查看一下,再尝试重新install。避免有遗漏。

这里还介绍了drupal在安装的时候的一些问题:http://randyfay.com/node/63,上面的链接其实就是从这篇文章里找到的。(我不建议用randyfay.com里的源,速度还是比较慢的,如果你原来的源速度很快,那就不要换了,直接用上面的脚本吧。)以前就说过。网易的源还是不错的。。可以加上去喽。

Tags: ubuntu, php

Editplus 自动检查语法

用惯了IDE写PHP,再次回到Editplus的时候总有点不太习惯,比如没有函数提示了(当然也可以自己打造)。不过。。语法检查总还是需要的,总不能自己程序传到服务器上后运行了才知道语法有问题吧?于是利用Editplus的小功能aftersave。改造了一下。

进入editplus的选项设置,点击左侧的User tools菜单,在右侧的Group and Tools下拉框中选择 AutoSave:after save。

大小: 49.06 K
尺寸: 469 x 376
浏览: 1592 次
点击打开新窗口浏览全图

在右侧的 add tool里选择 program。然后输入:标题,程序所在位置,以及参数。。

php语法检测是php.exe -l filename,这个可以通过命令行下运行 php -? 了解。然后要catch output,以及针对current file。。

OK,这样就over了。

看看效果?

大小: 39.2 K
尺寸: 463 x 243
浏览: 1457 次
点击打开新窗口浏览全图

Tags: editplus, php, syntax

js模拟php:print_r

在PHP中,我们打印一个数组或者对象的时候,都是用print_r,相对比较直观,可是javascript就不行。翻了翻资料,也看到一些代码的写法。这里是一个简单的处理(不能打印window,document等对象):

JavaScript代码
  1. function print_r( $value ){  
  2.     if($value.constructor == Array || $value.constructor == Object ){  
  3.         document.write("<ul>");  
  4.         for (var $i in $value){  
  5.             if($value[$i].constructor == Array || $value[$i].constructor == Object ){  
  6.                 document.write("<li>["+$i+"] => " + typeof( $value ) + " </li><ul>");  
  7.                 print_r($value[$i]);  
  8.                 document.write("</ul>");  
  9.             }else{  
  10.                 document.write("<li>["+$i+"] => " + $value[$i] + "</li>");  
  11.             }  
  12.         }  
  13.         document.write("</ul>");  
  14.     }  
  15. }  
  16. var s = {};  
  17. s.i = '123';  
  18. s.o = {};  
  19. s.o.test = 'tt';  
  20. print_r(s);  

 

然后看了一下phpjs.org,它上面的print_r就比较复杂了。。。

JavaScript代码
  1. function print_r (array, return_val) {  
  2.     // Prints out or returns information about the specified variable    
  3.     //   
  4.     // version: 1008.1718  
  5.     // discuss at: http://phpjs.org/functions/print_r    // +   original by: Michael White (http://getsprink.com)  
  6.     // +   improved by: Ben Bryan  
  7.     // +      input by: Brett Zamir (http://brett-zamir.me)  
  8.     // +      improved by: Brett Zamir (http://brett-zamir.me)  
  9.     // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)    // -    depends on: echo  
  10.     // *     example 1: print_r(1, true);  
  11.     // *     returns 1: 1  
  12.       
  13.     var output = "", pad_char = " ", pad_val = 4, d = this.window.document;    var getFuncName = function (fn) {  
  14.         var name = (/\W*function\s+([\w\$]+)\s*\(/).exec(fn);  
  15.         if (!name) {  
  16.             return '(Anonymous)';  
  17.         }        return name[1];  
  18.     };  
  19.    
  20.     var repeat_char = function (len, pad_char) {  
  21.         var str = "";        for (var i=0; i < len; i++) {  
  22.             str += pad_char;  
  23.         }  
  24.         return str;  
  25.     };   
  26.     var formatArray = function (obj, cur_depth, pad_val, pad_char) {  
  27.         if (cur_depth > 0) {  
  28.             cur_depth++;  
  29.         }   
  30.         var base_pad = repeat_char(pad_val*cur_depth, pad_char);  
  31.         var thick_pad = repeat_char(pad_val*(cur_depth+1), pad_char);  
  32.         var str = "";  
  33.          if (typeof obj === 'object' && obj !== null && obj.constructor && getFuncName(obj.constructor) !== 'PHPJS_Resource') {  
  34.             str += "Array\n" + base_pad + "(\n";  
  35.             for (var key in obj) {  
  36.                 if (obj[key] instanceof Array) {  
  37.                     str += thick_pad + "["+key+"] => "+formatArray(obj[key], cur_depth+1, pad_val, pad_char);                } else {  
  38.                     str += thick_pad + "["+key+"] => " + obj[key] + "\n";  
  39.                 }  
  40.             }  
  41.             str += base_pad + ")\n";        } else if (obj === null || obj === undefined) {  
  42.             str = '';  
  43.         } else { // for our "resource" class  
  44.             str = obj.toString();  
  45.         }   
  46.         return str;  
  47.     };  
  48.    
  49.     output = formatArray(array, 0, pad_val, pad_char);   
  50.     if (return_val !== true) {  
  51.         if (d.body) {  
  52.             this.echo(output);  
  53.         }        else {  
  54.             try {  
  55.                 d = XULDocument; // We're in XUL, so appending as plain text won't work; trigger an error out of XUL  
  56.                 this.echo('<pre xmlns="http://www.w3.org/1999/xhtml" style="white-space:pre;">'+output+'</pre>');  
  57.             }            catch (e) {  
  58.                 this.echo(output); // Outputting as plain text may work in some plain XML  
  59.             }  
  60.         }  
  61.         return true;    } else {  
  62.         return output;  
  63.     }  
  64. }  

 

果然是没有做不到的事,只有想不到的事呀。。。(上面的phpjs.org的print_r需要echo方法,请到phpjs.org下载)

Tags: print_r, php

写在NetBeans IDE 6.9.1 发布时

怎么说呢,netbeans这个IDE工具是目前我用的时间最长的一款IDE,以前也用过其他的一些IDE,不过,在算上版权问题后,这是目前唯一一款值得推荐的IDE吧?komodoEdit和netbeans相比,功能差了很多。当然各人习惯不一样,有的人喜欢拿GVIM来配置,把它配置成一款符合自己使用习惯的IDE,这,我也没话说。

正好看到cnbeta上说了6.9.1发布了,仔细看了一下更新内容,对于PHP来说,只有一小部份的更新,那就是:支持 PHP Zend 框架。这让我很吃惊。事实上,虽然我挺力挺这款IDE,但对他还是有抱怨的,或许在以前的贴子里也发表过,这里我再发发牢骚。。
用到现在nb让我郁闷的有几件事
1、同一项目中不能存在两种编码的文件。。。否则读取可能会是乱码(不过,这个能忍,自己的项目能够保证,主要是别人的)

2、耗内存,还有就是项目扫描,好几次就死在这上面了,卡死了

3、自动換行。配置里的自动换行永远是灰色的。。明明有这玩意却不能用。太让人郁闷了。。。

其他。。。好象还都能忍受 。在6.9更新的时候(http://wiki.netbeans.org/NewAndNoteworthy69#PHP),我们也看到,6.9对于PHP最大的更新其实就是formatter。格式化代码更优秀和准确了(在团队中,可以更方便的把代码格式化成同一风格,方便后来人),还有一个就是改进了语法检测。

虽然问题有一堆 ,不过,我还是推荐它。除非出来一款更好的(还要能跨平台,比如当我用LINUX进行IB的时候,我也有功能强劲的IDE可用)

Tags: php, netbeans

新闻:开源公司 IronTec将推动PHP进驻Android平台

看到这个新闻不转载一下恐怕对不起自己。
本来都以为自己会学习scala然后进行android的开发了,现在看来,还有其他的途径啊。当然,效率可能不能保证吧?(小应用估计没大问题。)不过在看到新闻的同时也要想到,PHP做界面的话,可不一定就OK呀。

上新闻:

对Java心生厌恶的朋友们 不妨来看看Android上的新玩意--PHP。

PHP可不仅仅只能在互联网站上发 展,一个PHP for Android (PFA)网站表示他们将可以发布编程模型、工具盒文档让PHP在Android上实现应用。

该项目的主要赞助商是开源公司IronTec,PFA使用Scripting Layer for Android (SL4A),也就是Androd Scripting Environment (ASE)来实现这一点,您可以参看他们的网站来了解更多技术内幕。

【事实上,我并未找到这个网站,而对于ASE,其实在09年infoQ上已经有介绍】

Android Scripting Environment(ASE)项目为Android增加了脚本支持。通过安装ASE,我们可以在设备上编写脚本并执行。

虽然现在已经涌现出了不少工具用于开发Android应用,但如果能在设备上编写脚本将是一件很爽的事情,这样我们就可以直接在设备上进行试验并快 速编写原型而无需启动IDE、编译、部署等。

ASE通过两种手段来访问Android API。目前我们可以通过ASE使用Python及Lua运行时来运行脚本,这些运行时都是本地应用,他们通过JSON-RPC来访问Android API。

由于Android本身基于Java,因此我们还可以运行基于JVM的语言。目前可以使用的是BeanShell——Java语言的动态版本。基于JVM的解释器就 在ASE内部加载,无需间接的RPC调用。

ASE还计划让更多的JVM语言运行在Android上。虽 然JRuby早就能运行在Android上了,但却存在一些问题,首当其冲的就是Android使用了Dalvik VM(Android应用被编译成Dalvik VM字节码)。

有兴趣的话就去看看ASE 的SVN仓库吧,那上面清 楚地表明了未来的Ruby支持也将基于JSON-RPC

我们还可以通过Rhodes在 Android设备上使用Ruby。

大家都对ASE未来的发展拭目以待。iPhone不允许上面的应用自带解释器,而ASE却通过脚本扩展了Android,并且用户可以创建、编辑这 些脚本。

InfoQ原文:http://www.infoq.com/cn/news/2009/07/android-scripting

Tags: android, php, irontec

Records:10312345678910»