写在出发之前

再过21个小时就要踏上旅程,为了这趟行程,筹备了半年多,昨天拿到火车票,心里莫名的紧张与激动。

转眼间已经在长春生活了5个年头,在这里学习,工作,生活,年复一年,日复一日。虽然每一步都是自己选择的,但总是感觉一切都是逼不得已,其实也没有选择,年初终于下定决心离开了工作三年多的单位,虽然薪水不少,平时也很克制,但还是由于种种原因没有攒下一毛钱。不过要感谢身边的朋友们,离职后的一个月我赚到了足够支持我整个旅程的钱,梦想还在那,从不曾因岁月而被遗忘。

从明天开始,背上行囊,远走他乡,见证那遥远的荒芜与繁华。

自制简易书架

想买一个书架很久了,网上买邮费比架子贵,去市场买价格偏高,今天去了二手市场,价格都不超过一百元,但是运费需要三五十.心里这个恨,反过来一想买一个太不值了,过一段时间就离开这里了,还拿不走就白买了,于是突发奇想.

看上去还不错,实际上就是一个纸箱从中间割开的,然后再增加隔断,这种结构,可能放3个是极限,纸箱的承重非常有限,再想增加需要想办法增加稳定性和承重能力.

PHP中静态调用非静态方法

PHP7.0.0 中静态调用非静态方法会产生下面的提示,这种调用方法会在以后的版本中不再支持。
Deprecated: Non-static method foo::bar() should not be called statically in - on line 8

1.PHP中可以静态调用非静态方法么?

今天我被问到PHP中可不可以使用 className::methodName() 的方法来调用一个没有声明Static的方法。在我的印象中,我好像是见过这种用法,但又有些不确定。大家都知道,在手册或者教程里,方法被分为静态方法和非静态方法,通常我们静态调用的方法,肯定是静态方法。

那如果我们调用了非静态方法会怎么样呢?首先做测试.

1
2
3
4
5
6
7
<?php
class test{
function test(){
echo 'it works';
}
}
test::test();

执行以下,返回错误如下
Fatal error: Non-static method test::test() cannot be called statically in /home/×××/test.php on line 7 Call Stack: 0.0002 332548 1\. {main}() /home/×××/test.php:0
这个时候,可能大家就会认为静态调用非静态方法是行不通的了,但其实,结论下的过早了,因为test()这个方法比较特殊,与类同名,是构造方法。

我们继续测试。

1
2
3
4
5
6
7
8
9
10
<?php
class test{
function test(){
echo 'it works';
}
function test2(){
echo 'it works too';
}
}
test::test2();

执行结果:
it works too
这说明,静态调用非静态方法是可行的,但是静态调用构造方法是不可以的。为了验证这个结论,我又做了如下测试:

1
2
3
4
5
6
7
<?php
class test{
static function test(){
echo 'it works';
}
}
test::test();

执行的结果如下:
Fatal error: Constructor test::test() cannot be static in /home/xxx/test.php on line 9
构造方法不能声明静态,所以上面的推论正确。

但这个结果的确是很特殊的,因为可能只有PHP可以静态调用非静态方法,我用Java做了实验,如果静态调用非静态方法会报如下错误:
Cannot make a static reference to the non-static method showString() from the type HelloWorldApp
其他语言我没有一一尝试,但这已经足够来说明PHP的特殊之处,关于为什么PHP会有这样的情况我暂时没有找到相关说明。

2.静态调用非静态方法是否应该被应用?

那我们是不是可以使用这种方法来代替static方法呢?** 首先在代码的可读性上来看,静态调用非静态方法当然是不被推荐的**,这会让维护者产生疑惑。

接下来我们再做一些实验,来看一下静态调用非静态方法在效率上是否会有一定的优势。

1
2
3
4
5
6
<?php 
class test{function test2(){}}
for($k=0; $k<10000; $k++)
{
test::test2();
}

上面代码在我这里的执行时间是18到28毫秒,我们再来测试标准的写法。

1
2
3
4
5
6
<?php 
class test{static function test2(){}}
for($k=0; $k<10000; $k++)
{
test::test2();
}

上面的代码执行时间在5到10毫秒之间,这样看来,静态调用非静态方法的效率要比标准的静态方法调用低的多,所以在效率上也不推荐静态调用非静态方法

国外PHP开源CMS系统一览

Joomla!

Joomla! 是一套采用PHP+MySQL数据库开发,可跨平台运行的内容管理程序。Joomla! 除了具有新闻/文章管理,文档/图片管理,网站布局设置,模板/主题管理等一些基本功能之外。还可通过其提供的上千个插件进行功能扩展包括:电子商务与购 物车引擎、论坛与聊天、日历、博客、目录分类管理、广告管理程序、电子报、数据收集与报表工具、期刊订阅服务等。
官方资源

官方网站:http://www.joomla.org

TYPO3 – 扩展支持,功能强大

Typo3 是一款开源的网站内容管理程序。Typo3 基于 PHP 和 MySQL。与一般的 CMS 不同,Typo3 对网站管理员的技术能力要求较高,其内部包含一系列完整的接口、函数和模块,使得Typo3的扩展功能开发十分灵活。Typo3 使用了模板分离技术,其模板使用了内置的 TypoScript 语言。Typo3 在企业级应用上表现出色。

官方网站:http://typo3.org

Pixie – 有扩展支持,模块,主题,插件,块(Blocks)

Pixie是一款简单精致的轻型开源CMS。作为2009年Open Source CMS Award - 最具潜力开源CMS大奖的亚军,Pixie并不热衷于与其他同类系统竞争,他们的目标是打造一款“简单到连祖母都会使用”的建站系统,同时不失其强大的功能特色。

Pixie严格遵循Web标准,在可用性及SEO方面表现出色;用户在安装Pixie时甚至可以提前选择不同的预设安装包来打造博客、商业网站等不同类型的站点。

官方网站:http://www.getpixie.co.uk

XOOPS

XOOPS 是一套开源的内容管理程序,衍生自 PHP-Nuke,采用PHP语言跟MySQL数据库。功能、界面全部模板化设计,可用于构建各种网络社区。XOOPS 的发布采用GPL协议,可免费使用和修改;在遵循GPL相关条款的前提下,可自由再发布。

XOOPS 的用途很广泛,对于个人用户,可以启用XPress模块(针对XOOPS的WordPress),作为个人的网志。对于较大规模的网站,可以根据需要,启 用更多的模块,如新闻发布、论坛、资源下载、友情链接,以及在线购物、广告管理等,对于Wiki、RSS,XOOPS也有相应的模块。

在国际语言支持方面,XOOPS有十种以上的语言版本,包括简体中文、繁体中文,编码可自由选择采用GB 2312、BIG 5或是UTF-8。
官方资源

官方网站:http://www.xoops.org

Textpattern – 没有扩展支持

Textpattern 是一款简洁而又漂亮的CMS,主题很素雅,留有很大的个性化空间。内置Textile写作语法,所以用户不必懂得 HTML标签语法也能轻松写作。预设主题非常简洁,但可定制程度很高。Textpattern采用 PHP+MySQL构建,代码体积小,效率高,网页访问速度快。目前已支持包含中文在内的多种语言。Textpattern 适合做风格清新简练的博客。

官方资源

官方网站:http://textpattern.com

ImpressCMS – 有很多扩展,Modules和Themes。

2009年Open Source CMS Award - 最具潜力开源CMS大奖冠军得主。基于MySQL驱动的模块化的内容管理系统。网站内容由各自独立的内容模块进行管理,用户可以按照自己的需求来安装相应的模块,当前可用的模块包括:新闻发布,论坛,相册以及其它各类第三方模块扩展。

官方网站:http://www.impresscms.org

SilverStripe – Module,Theme,Widget,扩展较多

SilverStripe是一款功能强大的CMS内容管理系统,具有强大的网站设计功能,直观和友好的用户操作界面。采用MVC框架设计开发并运用了Ajax技术。易于扩展。所有页面都符合XHTML标准并基于模板生成。安装需要PHP5和MySQL环境支持,内置所见所得编辑的文本编辑器TinyMCE。文件管理界面采用了AJAX技术,可仅通过简单的拖曳,来调整文件树和链接关联。

官方网站:http://silverstripe.org

MODx – 从官方网站上看,用户体验非常烂,有扩展功能,但看上去乱七八糟的,源码包也太大了。

MODx 是一个开源的 PHP 应用框架,可以帮助使用者控制自己的网上内容。它是开发人员和高级用户理想的控制系统,任何人都可以使用 MODx 发布、更新、维护动态网站,或 html 静态页面的网站内容。

MODx 也是 CSS 布局的 Ajax CMS ,是一个完全符合 XHTML 标准规范的 php 内容管理系统(CMS),内部集成的 MooTools、Scriptaculous 和 Prototype 库,MODx系统能够帮助用户、开发者和CSS设计者或Ajax爱好者快速建立“Web 2.0”网站。

官方网站:http://modxcms.com

ExpressionEngine – 收费的

ExpressionEngine 是 EllisLab 推出的内容管理程序,它包含一个免费的“核心”版本,和一次性收费的“个人”及“商业”版本。ExpressionEngine 是基于 CodeIgniter 开发(CodeIgniter 也是 EllisLab 的产品)构架的,这也使得它能得到更多的PHP程序员的支持,从而开发出更多的插件和模块。ExpressionEngine 的后台管理面板很精美,依靠 AJAX 技术实现了不少只有在桌面软件中才有的效果,采用jQuery更是给插件的开发带来了许多方便。

官方网站:http://expressionengine.com

国外优秀的CMS项目还有很多, 以上整理了一些比较有名气的, 当然其他不知名的CMS系统中也不乏优秀作品.

HTC G1刷Android 2.2官方移植版

昨天晚上刷了2.2的官方移植版本,过程非常坎坷,记录,待整理.

我以前刷过一次蛋总的2.2,功能的确强悍但是效率是最大的问题,最关键是最后出现了自动重启的毛病,官方移植版本目前看来还是很完美的.

第一步,备份,刷RC29

第二步,取得ROOT权限

http://www.hiapk.com/bbs/viewthread.php?tid=282&extra=page%3D1%26amp%3Bfilter%3Dtype%26amp%3Btypeid%3D154

第三步,刷1.7的 recovery

第四步,刷2.22 Radio + 1.33 SPL
http://mobile.yesky.com/361/11428861_2.shtml

第五步,安装CM6
http://forum.xda-developers.com/showthread.php?t=717874

第六步,刷2.2的ROM
http://forum.xda-developers.com/showthread.php?t=811620

第七步,通过recovery对SD重分区,swap 96M,ext2 512M,其他的fat32,然后再ext2 to ext3.

Done!