2011 年 06 月

浏览模式: 标准 | 列表 | 图文
在Yii框架中使用Hprose或PHPRPC

在Yii框架中使用Hprose或PHPRPC

Yii:

Yii is a high-performance PHP framework best for developing Web 2.0 applications.

Yii comes with rich features: MVC, DAO/ActiveRecord, I18N/L10N, caching, authentication and role-based access control, scaffolding, testing, etc. It can reduce your development time significantly.

PHPRPC:

PHPRPC 是一个轻型的、安全的、跨网际的、跨语言的、跨平台的、跨环境的、跨域的、支持复杂对象传输的、支持引用参数传递的、支持内容输出重定向的、支持分级错误处理的、支持会话的、面向服务的高性能远程过程调用协议。

目前该协议的最新版本为 3.0。该版本目前已有以下几种语言的实现:

ASP,ActionScript,Delphi/C++Builder/Kylix,Java,JavaScript,NET,PHP,Python,Ruby,Perl,Lazarus(Free Pascal)

其中 ASP、.NET、Java、Ruby、Python 和 PHP 版本除了提供客户端实现外,还提供了服务器端实现。

HPROSE:

Hprose (High Performance Remote Object Service Engine) 是一个商业开源的新型轻量级跨语言跨平台的面向对象的高性能远程动态通讯中间件。它支持众多语言,例如 C++, .NET, Java, Delphi, Objective-C, ActionScript, JavaScript, ASP, PHP, Python, Ruby, Perl 等语言,通过 Hprose 可以在这些语言之间实现方便且高效的互通。

Hprose 易学易用,且功能强大,您只需很短时间的学习,就可以用它方便地构建出跨语言跨平台分布式的电信级应用系统。

如何在Yii中使用Hprose或者PHPRPC呢?我这里简单介绍一下Yii下hprose的应用方法

1、下载hprose的PHP版本,嗯,别看了,是混淆过的,但不影响你使用。

2、将下载后的hprose拷贝到yii项目的/protected/extension/hprose目录下

3、新建一个apicontroller:

f7fccadd1117ac3c390ed86fe8fba322

我这样的方式是最简单的,将一些actionIndex的方法都公开了,在实际应用中当然不可以这样。不过我这里是测试,当然是无所谓的

访问http://localhost/project/test/ (project是我的项目名称,test是controller, index是action,由于默认action是index,所以我省略了)

浏览器中返回了:

Fa4{s11"actionIndex"s11"afterAction"s5"hello"s3"sum"}z

由此其实我们也可以基本确认有四个方法可以使用actionIndex,afterAction,hello,sum,这主要是因为我把当前类当成发布对象了。(不主张啊不主张)

4、继续下一步,

<?php
include("./protected/extensions/hprose/hproseHttpClient.php");
$client = new HproseHttpClient("http://localhost/project/test");
$result = $client->sum(1,2,3,4,5);
print_r($result);

OK,浏览器输出了15,就这样完成了一个简单的HPROSE应用。

当然我这样的方式太简单了,文档在这里有下载,我就不再画蛇添足的提供了:http://www.hprose.com/documents.php。

因为只是简单的的一些应用,暂时也看不到hprose的性能比phprpc提升了多少。

---------------备注

由于Yii对于大小写敏感,因此在new HproseHttpServer();的时候,Hprose的H不能大写,否则,它会自动寻找HproseHttpServer.php,但由于PHP的hprose的文件中首字母都是小写。因此在new的时候就需要:new hproseHttpServer();

纠结,你懂的

看到这张OUTLOOK里的图,你就会懂了。为什么很多人都在问,每年的第一周到底是哪一周。。。
平时你又是怎么处理的呢?
a2e759148168c1a911ed5cc5631c99c6

CSS的一些兼容性的备份资料

CSS的一些兼容性的备份资料

纯资料,做备份,因为对CSS不太了解,所以复制了群内某人的发言。

#test{
color:red; /* 所有浏览器都支持 */
color:red !important;/* Firefox、IE7支持 */
_color:red; /* IE6支持 */
*color:red; /* IE6、IE7支持 */
*+color:red; /* IE7支持 */
color:red\9; /* IE6、IE7、IE8支持 */
color:red\0; /* IE8支持 */
}

好纠结的东西啊。

step by step 学习PHP之一

step by step 学习PHP之一

这是一个比较初级的教程,应该也会一直延续下去,直到这一次教完结束
上课之前的准备
1、AMP程序,关于这一类的程序相对比较多,我这里还是推荐妖怪的apmxe,嗯,在这里有下载:apmxe备份
2、JRE ,如果你有安装360,直接到软件中心可以下载,否则到sun.com找到jre下载:http://java.com/zh_CN/download/windows_xpi.jsp?locale=zh_CN
3、netbeans ,一款用来开发PHP的IDE(事实上有很多种IDE,但我推荐它的原因是免费、跨平台),下载地址为:http://netbeans.org/downloads/start.html?platform=windows&lang=zh_CN&option=php
4、editplus 如果仅仅用来修改一两个单独的PHP文件,那么editplus应该是可选的【备用软件notepad++,理由是它免费,而editplus不免费】,editplus官网地址:http://www.editplus.com
5、PHP中文手册,开发PHP时的必备之选,下载地址:http://phpdocs-cn-chm.googlecode.com/files/php_manual_en-HonestQiao-20110507-Beta-V0.9.8.gz

OK,做完上述准备工作,让我们先一步一步的开始
1、安装apmxe,安装过程中,我们选择目标地址为d:\www,因此最终生成的路径就是d:\www\apmxe,打开这个目录会发现里面已经有很多目录了:apache22,php5,mysql5,cgi-bin,htdocs,etc,var等目录。现在我们一一介绍一下这些目录:

  1. apache22,这是apache存放的目录
  2. php5 ,自带的是PHP5.2,还不是5.3,主要因为5.3中有一些功能暂时还用不上,所以5.2也足够了
  3. mysql5 ,嗯mysql5 server,具体版本是 5.0.27,虽然有点老,但足够了
  4. cgi-bin,这个目录一般是用来处理perl的,但APMXE里并没有自带perl,因此这个目录你就当成是无效的吧(如果你有安装perl,也可以尝试着看一下目录下的文件)
  5. htdocs,WEB存放的目录,系统安装完后,已经有一些自带的程序在里面了,是QEE的一些案例,由于目前我们不是学习QEE开发,因此可以将目录下的examples和qeephp这两个目录先备份后再删除,当然phpmyadmin和xcache-admin目录还是保留着。phpmyadmin是一个可视化管理mysql的WEB程序,xcache-admin则是用来对xcache进行管理的程序。
  6. etc,apmxe程序的一些配置文件,如果你需要更改配置,修改后缀名为.template的文件,修改完后,重启apmxe,则会自动更新成最新的配置。直接修改配置文件是无效的。程序每次运行都会将.template的文件更名覆盖配置文件。
  7. var目录,很明显这是一些存放环境变量的目录,apmxe是绿色软件,因此session和tmp都不会写到系统目录里,都默认放到var目录下了。仔细看一下data目录,其实这是mysql的数据库文件,LOGs目录则是存放了WEB运行的一些日志,包括访问正常和不正常的一些日志等,用于查看WEB运行时的一些记录。

推荐apmxe还有另外一个原因,那就是此版本的apmxe默认apache运行的端口是9000,因此访问的路径是:http://localhost:9000/ ,这有什么好处呢?它避免了下载软件和apmxe同时打开的时候,80端口的冲突(很多下载软件为了提速,都占用了80端口)
2、安装JRE,再安装netbeans。
3、安装editplus,【关于editplus可配置的东西就太多了,可以查看:http://neatstudio.com/?action=search&searchid=1118】

-----------------------------------------------------------------------------
打开netbeans,创建一个PHP的项目,项目目录指向到d:\www\apmxe\htdocs\lesson1,PHP运行环境选择为5.2,项目名称改为lesson1,点击下一步,将默认访问的URL :http://localhost/lesson1改为带端口的http://localhost:9000/lesson1,然后直接点击完成。

在IDE左侧的项目管理窗口中点击窗口前的+号,在源文件目录下点击右键,创建PHP文件,内容如下:

<?php
echo "hello ,world";
?>

然后按F6,我们可以在浏览器里发现页面上输出了hello,world【说明,F6是运行项目的意思】

在上面的代码中我们要说明几点,<?php ,这个代表了PHP代码的开始,虽然也可以写成<?,但我们还是需要从标准出来,不要使用简写,而是需要用完整的<?php来进行表示。

既然<?php代表了开始,那么什么代表结束呢?OK,从上面的代码里我们可以看到?>,是的"?>"这个就代表了PHP代码的结束,因此我们可以认为,一段完整的PHP代码是应该包含在<?php 与 ?>之间的。

接下来我们说明一下echo "hello,world";

echo 是PHP的一个函数,它用来对浏览器中进行输出。常用的语法是echo $val; $val是一个非array或object或resource的变量(当基于这些变量时,输出的结果并非预料中的结果 )

被双引号""包含着的hello,world,是一个字符串,因此在初期我们可以认为echo 被用来输出字符串到浏览器显示。

最后,每一句PHP代码的结束标记是;,当一个PHP语句中出现了;,也就代表了该行代码的结束。

-------------------第一课先到这里,第一课我们了解了PHP运行环境以及IDE的安装,并写了一个程序员们爱用的hello world做了一个简单的测试,并在浏览器正常输出。

下一课我们会讲解变量,常量以及赋值。如果对于上文有意见和建议,可以通过留言来反馈。谢谢

转:nook 2 root的简单方法介绍和使用体验

转载吧,这是我刚用上nook2后就看到的文章,按步就班,顺序操作,然后就OK了。
先上原文再上我自己的一些操作问题解决,原文来自:http://bbs.mydoo.cn/thread-24877-1-1.html
折腾了半天 终于root成功了。。
现在简单说下步骤
方法主要还是看了这个英文教程
http://nookdevs.com/NookTouch_Rooting
我的实际操作结果和教程里讲的有些出入 但还是root成功了
还有http://www.hi-pda.com/forum/view ... &highlight=nook
这个帖子里的一些东西。大家可以看下

方法如下
1.首先 下载noogie.img.gz、uRamdisk_rooted、Win32DiskImager。
前两个那个英文教程贴里有下载地址
或者可以用这个地址下载:
uramdisk_rooted http://u.115.com/file/aqbzt2fw
noogie.img.gz http://u.115.com/file/dns62aws
Win32DiskImager http://www.vdisk.cn/down/index/6428099A5425

2.解压 noogie.img.gz。长按电源键关闭nook 将卡取出,通过读卡器链接电脑。用Win32DiskImager将解压后的文件写入卡中。
卡中的文件应是
boot.scr
boot.script
booting.pgm
cfg.bin
flash_spl.bin
MLO
regenerate_bootscript.sh
u-boot.bin
uImage
uRamdisk
wvf.bin

3.将卡插入nook并用usb链接电脑开机 屏幕上会出现rooted forever字样 等一段时间后电脑上出现一个"boot"盘符

4.将之前下载的uRamdisk_rooted改名为uRamdisk并替换boot盘里的同名文件。完成后电脑上删除硬件 将卡取出并删除其中的文件 机器重启。

5.这步做完后机器已经被root了。之后要做的用adb安装软件了
adb-win.zip (289.81 KB)
将这个文件解压后放在c:\windows\system32\

6.讲nook连入和电脑一样的无线网络。nook上点所连接的网络名称可以看到ip地址。

7.电脑上运行cmd。输入 adb connect + 刚才输入的ip
adb shell

8.安装adw launcher
ADWLauncher.rar (726.53 KB)
如果解压后放在C盘
输入adb install c:\ADWLauncher.apk

adb详细操作指南可以看这里
http://tech.163.com/mobile/09/1105/06/5NBAG1OQ00112K88.html

9.这样就安装完毕了。重启nook后就可以选择adwlauncher界面,按以上的做法可以尝试安装各种软件。
--------------------------------------------------
1、现在来说我的问题,看第6步:“6.讲nook连入和电脑一样的无线网络。nook上点所连接的网络名称可以看到ip地址。”,事实上,由于无线网络不是我自己管理的,我当然不知道无线的IP是多少,开始的时候还在纠结由哪里的设置可以看到自己的IP,后来直接利用它自带的搜索功能打开我本机的WEB界面,直接输出了:echo $_SERVER['REMOTE_ADDR'],就显示了NOOK的IP地址了。然后运行:adb connect xxxx.xxx.xxx
如果成功会显示 xxx connected,于是就可以运行adb install 等命令了。

2、安装了一下UC,发现刷新页面其实很闪,用的不是特别舒服,等下周装ireader再说吧,因为nook的字体大小好象适应的不太好。。。

3、第四步完成后,把卡放到机器上格式化后发现只有73M了,怎么办?需要下载一个工具SDFormatter重新进行格式化,你会发现未使用的剩余空间都恢复了。

5、adb install的时候文件名尽量用英文名,且不要有空格,避免因字符集出现问题。

------------------------------
1、nook2 破解相关:9c5d6b43caa77469ecfaac9c7e7fb25b

2、sdformatter:bd3736b013db4ac4d9d5f8be0776d194

Mozilla Firefox 3.6.18?????

Mozilla Firefox 3.6.18?????

在cnbeta上面看到这个新闻的时候,我以为自己是穿越了。。。我都被强制升到4.0了,难道我还能再缩回去??

以下是内容:

Mozilla Firefox是一个自由的,开放源码的浏览器,适用于Windows, Linux 和 MacOS X平台。它 还有其它一些高级特征,如标签式浏览,可以禁止弹出式窗口.内置了钓鱼保护、改变标签浏览行为、能够重新打开以外关闭的标签、更好的支持网页订 阅的预览和订阅、拼写检查、支持JavaScript 1.7等.

下载:Mozilla Firefox 3.6.18

Firefox 3.6.18 fixes the following issues found in previous versions of Firefox 3.6:

  • Fixed several security issues.
  • Fixed several stability issues.

Please see the complete list of changes in this version. You may also be interested in the Firefox 3.6.17 release notes for a list of changes in the previous version.

-------EOF------

好纠结呀,是我穿越呢?还是cnbeta穿越了?

收到phpstorm序列号

收到phpstorm序列号

在下载phpstorm的时候,向phpstorm申请了开源序列号,在经历了14天之后,终于收到了一封来自phpstorm的邮件,里面给了我一个序列号,可以使用一年。
非常开心,HOHO。
当然,在高兴之余也得谢谢thinkphp,因为我在申请的时候,是用的thinkphp的commiter的身份。幸好流年没有从google code的项目中将我删除。灰常感谢。。

phpstorm在一段时间的使用过程中感觉还是比较爽的,我对它进行了一些简单的配置
1、把字体換成我习惯的字体(参考dualface的更换netbeans字体)
2、将快捷键換成了netbeans的用法
3、将代码的配色基本換成了与netbeans一致的。。方便我更換IDE
4、配置了一些代码的美化功能等。

上图,由于我不知道那个号码是否有用,所以我屏蔽了。。。
8eb452eeb5bda0206a1a8af737bb5f63

关于序列化javascript

关于序列化javascript

不想多说什么,其实很多人在序列化上面纠结了很多了。
比如这篇javascript 序列化 ,它可是有完整的代码的哦,其实在很久之前,PHPRPC里就实现了PHP的序列化,还有PHPJS.org里也有相应的代码。当然这里我贴的还是我文中链接中的代码:

function serialize(_obj)
{
// Let Gecko browsers do this the easy way
if (typeof _obj.toSource !== 'undefined' && typeof _obj.callee === 'undefined')
{
return _obj.toSource();
}

// Other browsers must do it the hard way
switch (typeof _obj)
{
// numbers, booleans, and functions are trivial:
// just return the object itself since its default .toString()
// gives us exactly what we want
case 'number':
case 'boolean':
case 'function':
return _obj;
break;

// for JSON format, strings need to be wrapped in quotes
case 'string':
return '\'' + _obj + '\'';
break;

case 'object':
var str;
if (_obj.constructor === Array || typeof _obj.callee !== 'undefined')
{
str = '[';
var i, len = _obj.length;
for (i = 0; i < len-1; i++) { str += serialize(_obj[i]) + ','; }
str += serialize(_obj[i]) + ']';
}
else
{
str = '{';
var key;
for (key in _obj) { str += key + ':' + serialize(_obj[key]) + ','; }
str = str.replace(/\,$/, '') + '}';
}
return str;
break;

default:
return 'UNKNOWN';
break;
}
}

或许你也可以看一下PHPRPC的代码 。。我就不贴了提供下载一下,可以从这里下载:http://www.phprpc.org/zh_CN/download/ 【有序列化也有反序列化哦。。。】
我提供的只有PHPSerialize.js,请下载:057bcd57f5ddff69fd2f4af6a841061e

RSS「已死」,电子书格式什么时候死?

RSS「已死」,电子书格式什么时候死?

RSS已死?说实话我还没有仔细想过会死,但RSS目前已经不在流行是真的,现在RSS更多的是被用来做数据传输,RSS之所以还没有死是因为RSS阅读器越来越被移动客户端所接受。而基于WEB的RSS已经成为垃圾数据的来源。信息轰炸可不是一件轻松的事情,每天看着上千条RSS,你会有多少去看呢?
RSS阅读器可以将一些你所关注的RSS下载到本地方便以后阅读,这是一件好事,对于编辑来说是好事,因为可以从海量数据中进行搜索定位并且找到自己的资料。也就是说全文的RSS输出已经变成了数据来源,而不再是阅读对象了。【一家之言】
现在来看看apple4us上怎么说:

昨天在 Twitter 上推了一下 NetNewsWire 的作者布兰特·西蒙(Brent Simmons)写的「当我们谈 RSS 时我们谈些什么」。很多人喜欢叫嚷说「RSS 已死」。西蒙说,死掉的是 RSS 阅读器,以及「看到喜欢的网站,用 RSS 阅读器去订阅之」这样一种用例(use case)。作为协议格式的 RSS 不仅没有死,使用范围反而在日益扩大。

最重要的是:西蒙认为这是好事:用户不必再关心格式。她们只是想读新闻、博客、播客、朋友的状态更新等种种内容。在后 Twitter / Facebook 的世界里,她们希望这种内容以实时更新的方式被推送到自己眼前。至于背后的技术是 RSS、还是 Atom、还是 JSON……睬它都傻。

这让我想到知乎上的一个问题:你会选择什么样的电子书格式?为什么?(需要有知乎帐号方可访问)

问题是这么说的:

当一本电子书同时提供多个格式如 txt、chm、pdf、epub、mobi 等的时候,你会选择哪个格式?为什么?

目前为止有七十一人回答这个问题,每人都有自己的偏好。

这是很有问题的。

在真正的电子阅读时代,你不会去关心电子书的格式,正如看纸书时,大部分人不会去关心这本书用的是骑马订还是锁线胶装。做电子阅读软件的人,也不会把「我们支持 XXX、XXX 格式」作为卖点。她们会说:我们有谁谁谁的书。

在中文电子书的语境里想象这种景况可能比较困难,那么看看英文电子书的老大 Kindle 好了。Kindle 用的格式叫 AZW。懂行的人会告诉你那是封装过的 HTML。但无数掏钱买 Kindle 书的人不需要知道这个,你也很少看到亚马逊吹嘘 Kindle 能支持多少种格式,虽然它的确支持 mobi 和 PDF。

西蒙说,2002 年的普通互联网用户的「geek 指数」高于今天。在当年,网上的人们有耐心和兴趣去研究「订阅 RSS」这件事背后的一整套繁复和抽象的观念。今天不行了。

同理,今天中国的电子书受众有耐心和兴趣去研究各种电子书格式,这本身就说明电子书还完全没有成熟──注意,不是「市场」没有成熟,也不是「产业」 没有成熟,是做电子阅读的人、以及她们做出的东西,还没有成熟。研究格式,是软件的设计和开发者应该做的事情,这种工作不应该转嫁到用户身上──如果你想 从用户身上赚钱的话。

------------------
正如文中所说的一个选择,对于我来说如果是大屏幕的电脑或者平板,那可能会更多的使用PDF,如果是小屏幕的话,我会用txt或者chm。因为这两种最方便查看。但如果文件中很多参考图片之类的,那当然是pdf。epub的还需要单独的阅读器,不是说PDF不要,而是很方便。。。

孤岛天才——超强记忆

在看纪实频道的探索节目时,看到了本文标题的节目,突然间想起很多很多以前的事情。但同样又忘记了很多事情。

5岁以后25岁以前有很多事情我都记在了心里,到现在我还能大致回忆的出,但是一些真正的细节什么的,确实是忘记了。
幼儿园的事情,小学二年级,三年级四年级五年级等的事情。初一初二等等。。。很多到现在都留在记忆里。小时候读过的书,看过的书还有很多都记忆着,读书的时候,背书背到几乎连哪一页都记得下来。。。。
直到在局里的时候,一两年前放的文件的位置也都能记得住。。。但,真正开始从事IT之后,发现记忆力越来越差,我一直怀疑可能是因为用电脑的时间过长了,导致记忆力会降低很多。
在看电视的时候,发现那些白痴学者们的一些特长,感觉自己和他们的差距还是很明显的,毕竟我不是白痴也不是学者。。。。。但记忆力的衰退是很明显的。
为了加强自己的记忆能力,我要开始学会用笔来记录东西,否则再过几年,真的就啥也记不住 了。

OK事实上我也就发发牢骚说自己的头发越来越少了,记忆力越来越差了等等。。。。。