Submitted by gouki on 2010, September 19, 4:47 PM
一键式安装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代码
- #!/bin/sh
-
- # Script to install PHP 5.2 from 9.10 on 10.04
- # And pin it so it does not get updated
-
- PKGS=`dpkg -l | grep php | awk '{print $2}'`
-
- apt-get remove $PKGS
-
- sed s/lucid/karmic/g /etc/apt/sources.list |
- tee /etc/apt/sources.list.d/karmic.list
-
- mkdir -p /etc/apt/preferences.d/
-
- for PACKAGE in $PKGS
- do
- echo "Package: $PACKAGE
- Pin: release a=karmic
- Pin-Priority: 991
- " | tee -a /etc/apt/preferences.d/php
- done
-
- apt-get update
-
- 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
Linux | 评论:0
| 阅读:21368
Submitted by gouki on 2010, September 3, 11:10 AM
用惯了IDE写PHP,再次回到Editplus的时候总有点不太习惯,比如没有函数提示了(当然也可以自己打造)。不过。。语法检查总还是需要的,总不能自己程序传到服务器上后运行了才知道语法有问题吧?于是利用Editplus的小功能aftersave。改造了一下。
进入editplus的选项设置,点击左侧的User tools菜单,在右侧的Group and Tools下拉框中选择 AutoSave:after save。
在右侧的 add tool里选择 program。然后输入:标题,程序所在位置,以及参数。。
php语法检测是php.exe -l filename,这个可以通过命令行下运行 php -? 了解。然后要catch output,以及针对current file。。
OK,这样就over了。
看看效果?
Tags: editplus, php, syntax
PHP | 评论:0
| 阅读:25551
Submitted by gouki on 2010, August 24, 2:04 PM
在PHP中,我们打印一个数组或者对象的时候,都是用print_r,相对比较直观,可是javascript就不行。翻了翻资料,也看到一些代码的写法。这里是一个简单的处理(不能打印window,document等对象):
JavaScript代码
- function print_r( $value ){
- if($value.constructor == Array || $value.constructor == Object ){
- document.write("<ul>");
- for (var $i in $value){
- if($value[$i].constructor == Array || $value[$i].constructor == Object ){
- document.write("<li>["+$i+"] => " + typeof( $value ) + " </li><ul>");
- print_r($value[$i]);
- document.write("</ul>");
- }else{
- document.write("<li>["+$i+"] => " + $value[$i] + "</li>");
- }
- }
- document.write("</ul>");
- }
- }
- var s = {};
- s.i = '123';
- s.o = {};
- s.o.test = 'tt';
- print_r(s);
然后看了一下phpjs.org,它上面的print_r就比较复杂了。。。
JavaScript代码
- function print_r (array, return_val) {
-
-
-
-
-
-
-
-
-
-
-
- var output = "", pad_char = " ", pad_val = 4, d = this.window.document; var getFuncName = function (fn) {
- var name = (/\W*function\s+([\w\$]+)\s*\(/).exec(fn);
- if (!name) {
- return '(Anonymous)';
- } return name[1];
- };
-
- var repeat_char = function (len, pad_char) {
- var str = ""; for (var i=0; i < len; i++) {
- str += pad_char;
- }
- return str;
- };
- var formatArray = function (obj, cur_depth, pad_val, pad_char) {
- if (cur_depth > 0) {
- cur_depth++;
- }
- var base_pad = repeat_char(pad_val*cur_depth, pad_char);
- var thick_pad = repeat_char(pad_val*(cur_depth+1), pad_char);
- var str = "";
- if (typeof obj === 'object' && obj !== null && obj.constructor && getFuncName(obj.constructor) !== 'PHPJS_Resource') {
- str += "Array\n" + base_pad + "(\n";
- for (var key in obj) {
- if (obj[key] instanceof Array) {
- str += thick_pad + "["+key+"] => "+formatArray(obj[key], cur_depth+1, pad_val, pad_char); } else {
- str += thick_pad + "["+key+"] => " + obj[key] + "\n";
- }
- }
- str += base_pad + ")\n"; } else if (obj === null || obj === undefined) {
- str = '';
- } else {
- str = obj.toString();
- }
- return str;
- };
-
- output = formatArray(array, 0, pad_val, pad_char);
- if (return_val !== true) {
- if (d.body) {
- this.echo(output);
- } else {
- try {
- d = XULDocument;
- this.echo('<pre xmlns="http://www.w3.org/1999/xhtml" style="white-space:pre;">'+output+'</pre>');
- } catch (e) {
- this.echo(output);
- }
- }
- return true; } else {
- return output;
- }
- }
果然是没有做不到的事,只有想不到的事呀。。。(上面的phpjs.org的print_r需要echo方法,请到phpjs.org下载)
Tags: print_r, php
Javascript | 评论:0
| 阅读:22551
Submitted by gouki on 2010, August 6, 8:42 PM
怎么说呢,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
Software | 评论:2
| 阅读:23971
Submitted by gouki on 2010, July 17, 8:53 PM
看到这个新闻不转载一下恐怕对不起自己。
本来都以为自己会学习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
PHP | 评论:0
| 阅读:19191