最新发表

没有安装权限的电脑使用者如何安装软件

许多公司里,除了必须拥有安装权限的群体如程序员和工程技术人员,相当多的行政人员、财务人员的电脑是没有使用权限的。其安装权限保留在公司IT部门,这主要是防止滥用电脑资源和防止病毒木马的信息安全需求而设立的规则。我们要尊重规则。

但有时候,我们需要获得额外的处理能力做一些事情。那么安装权限又几乎是必须的。当然,您可以采用简单手段破解Windows管理员密码。不过后果是严重的。IT部门很容易发现。所以,采用的方式有:

  1. LiveCD启动使用第二操作系统,如Ubuntu
  2. U盘启动使用第二操作系统,如PendriveLinux.com
  3. 采用PortableApps在U盘上使用免安装Windows软件;

这三种方式中,第三种Portableapps对大多数Windows用户来说,使用更加简单,无需重启,即可使用。其实,Portableapps是同时支持Windows/Linux两种系统的工具包。而LiveCD和U盘适合那些对于Linux有一定经验的用户。话说回来,Linux/Windows/Mac OS X有什么区别么?大部分Linux都有LiveCD下载,您可以烧光盘尝试一下新系统。或者将下载后的LiveCD通过PendriveLinux提供的USB Installer安装在U盘上。只要您电脑支持U盘光盘启动,就可以在启动后的操作系统中为所欲为。

第二系统启动之后,将独占您的电脑资源,也可以访问您原有的电脑硬盘以及网络配置。

有什么不能够使用的软件么?没有!只有您想不到,没有做不到。无论您想上网、做图形图像处理、科学计算、工程设计、软件编程、下载电影、即使您需要上网银、股市分析,也可以在第二系统中运行虚拟Windows就可以了。而且不会中毒、也不会被IT抓住(注意:我说的是没有证据,而不是没有察觉)。

据说,某些公司如华为将员工电脑定制为无法从U盘和光盘启动,也无法从网络启动。真是厉害。不过,这样您只有先黑了电脑的BIOS再说了。不推荐。

商用GAE支持SQL

Google AppEngine是许多人喜爱的虚拟主机服务,有Python和Java两种平台。但是GAE有着独特的限制:文件数、图像处理能力、能够使用网站框架、数据库等等。对于只熟悉LAMP服务器的开发者需要额外学习Python/Java和GAE本身的知识,有相当难度。尤其是使用BitTable限制了数据库全文检索的能力,限制了一些应用在GAE上的采用。一些用户不得不使用Remote SQL来替代。

Google AppEngine for Business 和免费的GAE相比,支持99%的SLA,SSL和SQL托管。这意味着Java/Python的一些原生框架可以在收费平台上直接使用。许多应用可以支持全文检索了。

收费:8美元至1000美元/月

将古老的ASCII字符用于视频编码

此文用于记录一个网站: dyne.org。防止我日后忘记。该网站提供了许多和音视频相关开源软件。其中一个HasciiCam,可以在低带宽情况下将视频信息专为ASCII字符后传输出去。这不仅仅是一个娱乐软件,实际在许多情况下(低带宽,单色,无视频加速,只有浏览器),这种软件有相当的作用。工作原理是将YUV中亮度根据字符的平均亮度进行计算,拼合而成。特别贴一张图让大家看看。

新的无线热点需求:广告服务器+Mesh网络

好久没有更新Ennovation WiFi网站了,最近接到新的需求。具体要求是使用开源无线热点网状网+强制门户+广告服务器。软件都是开源的,需要对于开源开发非常熟悉。

Mesh网络其实是扩展了原有的WiFi网络,只不过Repeater转发器多了些个;强制门户利用任何网站框架都是可以的;广告服务器却是头回儿听说。看了看规格,支持几乎所有种类的广告形式,还有计费,实时投放等一系列功能。基本上涵盖了原来设想的所有后台服务,还有许多我没有想到的。

看来,许多东西,尤其是自己知识范围之外的,往往都有开源的东西了。这启发我可以将广告服务器接入Ennovation的服务中。不过相对应的,强制门户需要改变。现在整个WiFi接入需要配置的组合是:

  • 硬件(路由器、AP)
  • 固件(何种开源固件操作系统)
  • 无线热点(认证方案)
  • 计费模式(计费、免费、支持漫游、广告支持)
  • 广告模式(Banner、插播、文字、JS、图文、Flash或者其他)
  • 广告交易(实时交易投放)
  • AAA服务器(RADIUS)

对比法学习Yii框架

其实,我发现Yii框架最简单的学习应该是对比法。目前网站上有三个例子:

  1. Yiic 创建的 main;
  2. Yii 提供的 Hello World, Hangman, Phonebook, Blog 四组Demo;
  3. Yii Playground,在Google Code上托管;

这几个例子的难易程度均是从容易到高级,其中Yii Playground几乎包含了主流的Components/Modules如:多语种,AJAX,UI,JavaScript。使用BeyondCompare等对比工具,将高级代码一点点儿地加入到基础代码中,可以很容易地了解框架修改所需意图。当然,数据库Schema需要自己使用SQLite3/MySQL进行对比和迁移。遇到不懂的地方稍微看看文档即可。这样可以快速入门,甚至快速创建一个网络应用。

利用Micolog建立自己的全景设计博客

利用开源Micolog在谷歌GAE平台上建立了一个新的全景摄影博客。主要讨论如何针对不同的全景摄影要求进行数据采集(摄影器材如DSLR+鱼眼镜头),后期处理(拼合软件)和网站呈现进行专门讨论和业务承揽。

宝丽多维全景工作室

大家可以体会到利用Google免费资源的快捷。网站速度不慢,虽然一开始会有个几秒钟,之后速度会很快。

Yii(易框架)容易么?

这个问题我在不同时间段的答案是不同的。

我原来使用CodeIgniter,当时的主要理由是PHP4兼容性。CI小巧、可爱、快捷、易学。我至今依然喜欢CI,认为它是PHP平台上的优秀框架,文档和社区支持非常好。但是CI没有内置一些关键的如用户模块,曾经使得我有些受挫折。但是FreakAuth等社区开发模块解决了此事。使得我放弃CI开发新项目的原因则是:我的虚拟主机在扩展OpenID时受到了限制,对于大流量的支持等等。基本上不能够说是CI的原因,而是虚拟主机的原因。CI目前版本基本上不再升级,主要是其开发者为了和其商业版框架做出一定的区分。

在谷歌上检索Yii,大量的都是其文档翻译。很少有网站设计公开。不同Yii的确有自己的Demo、教程和一个开源的Yii Playground网站设计可供下载。按理来说,很足够了。这是许多博客推荐Yii的主要原因。也是我采用Yii的理由。

不过,这也是我在选择新项目的时候偏好使用新框架的主因,无论是OpenID,流量或者扩展能力都没有问题。Yii恰恰在这方面进行了重点的优化和宣传。此时,我认为Yii是容易的。

CodeIgniter虽然也采用了OOP/MVC的编程模式,但是它容忍了许多开发者从PHP4学习之初就有的开发习惯。同时,Yii无疑在许多方面和CI有所不同。

CodeIgniter中,有关View的代码可以留在View中,也可以在Controller|action中,利用HTMLhelper来做。我个人喜欢将View留给View,Controller不太涉及View的工作。如此,我需要将View中的布局CSS文件,客户端工作JavaScript文件和图形资源文件都在View中进行编码。当然,CI也可以使用嵌套View来实现共享主题框架的方式。但是CI从来就是将CSS/JS/Image这种资源文件单独放在某个全局文件夹中的。

到了Yii,一切都改变了。首先Yii的首选CSS是Blueprint,首先JS是jQuery,这和CI有所不同。其次,Yii中每个视图对象,如Menu,Form,NavigationBar,Calendar都是独立的Components。每个Components可以有自己的CSS/JS/Image,这样有个好处,可以在不同页面中复用。但是这对我原来的使用经验是一次冲击。最要命的是,Yii居然没有重点提及和其他框架的此点不同。于是,我花了一天时间做了新的Layout,View,Controller|action,才将最简单的谷歌地图呈现出来,到处是补丁。让自己很不满意。此时,我认为Yii框架和易经一样难懂

昨天花了一天时间看了看它的Definitive Guide,记了点儿笔记,总算有了新的了解。所有的东西先到extension中去找找看。发现一个GoogleMap扩展。下载、解压、在View文件中将代码嵌入。So easy, so simple !

当然了,这只是我目前的想法,Yii的这种组件方式有其优点:快速配置复用组件,而且在主体CSS已经加载后,在尾部加载JS/局部CSS可以使得整体网站非常快捷地呈现在使用者眼前(参考雅虎的可扩展网站设计之前端优化)。缺点是:在后端组件中混合了JS/CSS/Image/View/Controller,是否符合大型网站的开发流程?关键是前端和后端代码混在一起了。是否有维护上的麻烦?

而且,此种方式真的对框架初学者是一种很大的使用习惯上的冲击。这也为什么Yii框架有人称之为较难掌握的原因之一吧。

PRADO vs Yii

在某篇文章中看到Yii开发者来自PRADO框架团队。两者都是PHP5的OOP框架。今天抽空看了看,果然PRADO和Yii的概念,甚至网站结构都类似。但是仔细看看Yii的论坛,很明显来自中国和俄罗斯的用户较多。

对于开源软件来说,哪个项目跑在前面,关键在于Leadship是谁。不管如何,有两个选择总比没得选要好得多。

PHP框架对比:CodeIgniter vs Yii

最近在免费主机上设计网站原型,由于CodeIgniter在某些方面受到局限(或许是虚拟主机受到局限)导致我想找到一个备选的,至少是代表将来趋势的新的PHP框架。实际上我已经选用Yii进行尝试了,但是不顺利,非常不顺利。让我很搓火。

找到一篇博客:

Choosing a PHP framework round2 , Yii vs CodeIgniter vs Kohana | Beyond Coding

该篇文章作者其实也没有真正使用过Yii,但是他认为很有希望。和我一开始的想法是一致的。但是实际使用下来,尤其是使用过CodeIgniter这种简洁风格的框架的用户,会发现有些格格不入。

我的应用主要围绕谷歌地图,jQuery插件,OpenID和图形处理。其中最简单的两个问题绕了我相当长的时间。如何定制View/Layout和管理JS/CSS/Image资源。

由于谷歌地图的API自成系统,一般来说jQuery也不会对GoogleAPI进行大的修改,如果在CI上,基本上就是将jQuery,GoogleAPI等JS放置在根目录下,同理,CSS和图形文件也放置在同一级目录下。这样CKEditor/TinyMCE/jQuery插件/UI都可以工作。简单有效。

但是这一切在Yii中,第三方Widget和自己的JS/CSS是在controller(可能View中也可以)中通过框架注册并在线复制到根目录下。这种方法在第一次运行大型JS库中如ExtJS会出现复制文件产生的时滞。最让人困惑的是,Yii对这种方法没有特别强调,而且在blog demo中也找不到在哪里注册用户脚本。(还是我没有找到?我使用grep来找的。)

至于Yii为什么喜欢在后端PHP框架中操纵前端JS代码,这明显和前后端(服务器和客户端分离)的实践相悖,其理由是在第三方Widget扩展时可以获得灵活性。我现在还没有体会,或许是这样,但是我必须有耐心学到那一步才行。

在没有学会跑步之前,还是先爬吧。我定制了一个新的View,里面主要在头部添加了硬编码的JS文件。按照文档“暗示”增加了view\layout\map.php,view\site\map.php两个文件,在controller\SiteController.php中添加了mapAction(),里面重载了layout和view。可是居然发现有部分 div tag 被遗漏了。原来默认的设计为:main.php->column1.php->index.php,我重载了第一个和最后一个,中间没有做处理,它直接成了两级的布局,而文档中也没有叙述,至少没有完整的定制视图的描述。不得已,我用最恶心的方式打了个补丁,在main.php中直接添加了两级 div。OK,工作正常。

看看,我在资源管理和布局上就花了N多时间,现在看来有些不划算。时间才是最重要的。条条大路通罗马,问题在于你愿意抄捷径,还是经历风雨享受过程。各种框架的配合关键是要省心省力,费力劳神的框架需要时间呐。

From PHP4 to PHP5

迁移PHP4环境涉及到服务器方方面面,不到万不得已总是希望PHP4能够继续使用。但是现在PHP6都逐渐成熟了,不得不考虑PHP5迁移问题。

现有CI是兼容PHP4/PHP5的,但是FreakAuth基本上还是PHP4的代码,所以在Ubuntu的LAMP上总是出现:Assigning the return value of new by reference is deprecated 的错误。

仔细一看是www\ci\system\application\helpers\freakauth_light_helper.php 第33行中:

$obj->freakauth_light = & new MyFAL();

将其改为:

$obj->freakauth_light = new MyFAL();

之后,问题消失,可以在PHP4.4以上运行,所以可以做到PHP4/5兼容。目前我的开发环境是:

  1. Windows:XAMPP 1.6.8,PHP4/PHP5可切换;
  2. Linux: Ubuntu 10.04 + Apache2 + PHP5 + MySQL + SQLite

生产环境:

  • FreeBSD + PHP4.4 (LAMP)
  • Linux + PHP5 (LAMP)