谦卑的程序员






静水流深

February 28, 2009

如何在WPMU中插入javascript,object等代码

Filed under: Wordpress (mu) — Eric Tou @ 12:55 am
Tags: ,

问题:无法插入javascript,object等代码

在Wordpres mu中是无法插入javascript,object等代码的,这些在Wordpress中是可以的,但在Wordpress mu中据说是基于安全考虑而屏蔽了。这样就导致无法插入很多网站的wadge以及flash,比如flickr的图片展示,youtube的视频等等。

其原理也就是在提交内容的时候,使用了filter函数将如script、object等关键字过滤掉而已。

解决方案1:直接修改代码

可以通过修改代码的方法来解决此问题,需要修改的文件是/wp-include目录下的kses.php文件,在 这个链接 中有详细的说明。

方法一是将过滤的代码注释掉。这样会导致所有的文章和注释都能够使用诸如<script>和<object>等标签。但将这些开放给注释用户会存在潜在的隐患。

方法二是添加全局变量$allowedposttags的值,添加你所需要启用的标签。这样将只对提交的文章启用标签。 这篇文章 专门说明这个问题,可读性更强。

不推荐这个方法,如此修改的地方多了需要专门的记录,每次升级以后还需要验证代码的有效性(代码的结构有可能变化),然后需要重新修改。总得来说原则是能使用插件就尽量不修改源代码。

解决方案2:使用有针对性的专门插件

可以通过有针对的插件来解决该问题,比如要插入flickr的图片wadge就找flickr的插件或是图片插件,需要插入youtube的视频就找youtube的插件或是视频插件。

坏处是这样的插件比较多,而且相当一部分是针对wordpress,筛选起来比较困难,水平也有点参差不齐。况且明明就是一件事情,却弄得有点头痛医头脚痛医脚,兼容性太差。

解决方案3:寻找通用的插件

所以需要找一款能够关闭对嵌入javascript、object等常用的关键字过滤的插件。

Widgetize-AnyHTML 插件,让你能够在widget中嵌入标签,但只能在widget里,而且只支持一个AnyHTML Widget,不很实用。

All text allowed 插件,让你能够在文章(post)和页面(page)中嵌入标签。在主页的注释中提到了会移除<p>标签的问题。

Unfiltered MU 插件,让你能够在文章(post)和页面(page)中嵌入标签,经测试widget也可以。 这个就是最终的解决方案 。下载压缩包,解压后得到 unfiltered-mu.php ,如果要安装为全局插件则复制进 wp-content/mu-plugins/ 目录,如果要逐个blog激活则复制进wp-content/plugins/目录。

February 24, 2009

Web 2.0从理论到实践

前一阵子准备一个关于Web 2.0的材料,实在是头疼了一阵子。

进入2009年,再来谈论Web 2.0,实在是有些落伍。现在都在折腾3.0概念了,云(Cloud)之类的,对于某个片面片面地理解似乎就是有些东西不需要知道它其实在哪里它就是在那里(好比一片云?),概念太新,先凉拌着吧。

虽然2.0听起来有些落伍,但是有些东西看起来大家都知道其实就不一定明白。观察了周围的人,对于Web 2.0的应用,有些人用得不亦悦乎,有些人则仍然浏览网页、电子邮件,活得也很好。用的人里面,未必就有多少人觉得自己2.0有什么特别了。

同时针对不同的人群,材料所要宣讲的侧重也是不同的。 对于非专业人员 来说,侧重于概念,直接通过一些Web 2.0网站的例子开门见山,然后在此基础上加以解释效果比较好; 对于有构建Web 2.0网站需要的商务人士 ①,则需要参考一些成功的例子说明Web 2.0的应用如何带来浏览量,如何带来收益等,比如电子商务领域可以参照eBay、Amazon、Wal-mart等等; 对于开发人员 ,应该比较侧重于Ajax技术的应用; 对于设计人员 ,则侧重于Web 2.0网站的设计理念、算法等。

①想起《Joel说软件》某篇的一句话,大致如下“那些XX经理们问:‘为什么我们不用Java?’只是因为飞机上的商务杂志的评论文章写到‘据调查Java的效率比Oracle快xx倍。’” 当然Business is Business,也得对付。

当然说是这么说,已经是折腾一番之后的感受了。在此之前,让我说Web 2.0,我只能翻来覆去两样:去中心化(Decentralization)和Ajax技术。

我必须骄傲地承认我抓住了事物的重点,但是光这重点还不够忽悠半分钟的。为了扩充材料,下面介绍一些值得借鉴的参考材料。

<What is Web 2.0>

O’Reilly的主席兼CEO Tim O’Reilly在2005年9月30日写过一篇 <What is Web 2.0> 的文章( 中文翻译 ),对Web 2.0的概念进行了可以说是纲领性的总结。

文章开篇就Web 1.0和Web 2.0的比较为大家举出了各种实例。大家可以看到,无论是 del.icio.us 、Blog、 Wikipedia 、 Flickr 、 YouTube 还是BT,以上这些书签、新闻、知识、图片、影像、文件的提供者不再是网站运营商,而是用户自己,即是所谓的去中心化。

当然因为文章写得比较早的缘故,最近很火的SNS(如 Facebook 、 MySpace )其中没有列举。

在中国,我们也已经有了很多的本地化应用,比如网络相册的 Yupoo 和 巴巴变 ,比如视频的 优酷 和 土豆 ,比如SNS的 校内网 和开心网,比如 豆瓣 ,比如 大众点评网 。如果要宣讲,最好将例子替换为以上本地化的应用。没用过?那就试试看。

之后提到的概念方面,个人比较看重的是标签(tags)、RSS、软件即服务(SAAS)、永远的Beta版、开源软件。

标签和RSS虽小,在我看来却非常重要。一个改变了传统的目录分类方式,提供更为灵活的资料定位方法。一个使你能够即时/实时地得到资料的更新,在我看来如果没有RSS,一个在其他方面再Web 2.0的网站都名不符实。

软件即服务(SAAS)和永远的Beta版改变了传统的软件开发和发布模式,开源软件的合作方式本身就是Web 2.0的一种表现,大量的开源软件降低了技术的准入门槛,使许多自由的声音能够在此基础上响起。

《Ajax修炼之道 – Web 2.0入门》

该书是The Pragmatic Programers系列中的一本,可以说是品质保证。Ajax目前并没有统一的标准和实现,该书并不是非常step by step的书,但是却是非常有大局观的一本书。不做太多的介绍,开发人员值得一读。

《集体智慧编程》

如果光看标题和相关的关键字:算法、数据挖掘、机器学习、人工智能,你可能会知难而退。简言之这是一本很容易被错过的书。

不过请注意英文原版还有一个副标题:Building Smart Web 2.0 Applications。再读一读章节名:提供推荐;发现群组;搜索与排名;优化;文档过滤;决策树建模;构建价格模型……。

很多人都曾经上过算法课,快速排序、二分查找……,却不知道在何处应用。这本书却介绍如何使用“更复杂的”算法来开发如del.icio.us的链接推荐系统、搜索引擎的爬虫程序这样的实际Web 2.0应用,如何分析、整合海量的Web 2.0程序的用户数据。远比很多标题为《Web 2.0XX》的口水书言之有物。

本书的程序基于Python语言,不过并不重要。推荐想要搞明白原理或是自己设计开发的开发人员和设计人员阅读。

February 6, 2009

将你的Linux安装入USB设备

几天前介绍了 《如何创建你自己的Windows Live CD》 ,但是可以没能把制成的Live CD给Portable化,塞进我的USB移动硬盘里。今天转过头来看看Linux的部分如何。

Linux的世界大部分的发行版都提供Live CD,比如我现在在用的很流行的“有奔头”( Ubuntu )。有Live CD的好处是:1. 当你初次使用一个发行版本时,你可以先试用再决定要不要安装;2. 通过Live CD启动的系统在某些场合增加安全性。

如何制作自己的Linux Live CD

当然,如果对现成的Live CD不够满意,也可以通过工具创建自定义的Linux Live CD。

Revisor 是一个创建自定义的 Fedora Live CD和安装盘的工具。

而对于Ubuntu则有 Reconstructor 。

当然对于绝大部多数的发行版,你还可以使用 mklivecd 脚本工具为当前扇区的数据创建“快照”并将其压缩入ISO镜像,以作为已安装系统的实时复制。

如何将Linux安装入USB设备

Ubuntu的wiki 里详细介绍了将其安装入USB设备的几种方法:

  1. 使用Linux环境下的工具Portable Linux或Live USB Creater自动创建。
  2. 使用安装CD直接安装。
  3. 将Ubuntu的ISO镜像隐藏在USB设备的分区。
  4. 将ISO镜像(中的文件)复制到USB设备。
  5. 使用Windows环境下的工具UNetbootin安装。

几种方法各有优劣,同学们可以根据自己的情况选择。如果不介意USB设备的损耗的话,方法2:使用安装CD直接安装是比较简单方便的。

其他的发行版方面,在 Pendrive Linux 对相当多的发行版都有介绍可供参考。

当然,如果你觉得以上的操作步骤仍然很麻烦;你不介意使用哪个版本的Linux;你对运行速度很介意;你的USB设备容量很小;你只需要一个GTD的Linux系统在你的USB设备里,你可以试试 “真TM小的Linux” ( Damn Small Linux )。

Damn Small Linux

DSL的最初开发目的是尝试可以将多少应用程序塞入一张50MB的Live CD。之前是一个个人工具,逐渐发展成为社区项目。

DSL可以在光盘、硬盘、或USB设备上使用作为本地安装系统或是多用途的备份/恢复系统使用。虽然容量只有小小的50MB,但包含了媒体播放、FTP客户端、Web浏览器、电子表哥、邮件客户端、文字处理软件、文本编辑器、图片工具、PDF阅读器、文件管理器、即时通讯软件等等实用软件。

DSL麻雀虽小,却也能做以下的事情:

  • 从business card CD以Linux Live CD启动
  • 从USB设备启动
  • 在宿主操作系统中启动(能在Windows里运行) (注:不就是虚拟机么)
  • Run very nicely from an IDE Compact Flash drive via a method we call “frugal install” (这个不懂,所以不翻译)
  • 从硬盘安装转换为Debian OS
  • 可以在486DX 16MB内存上运行
  • 全速运行只需128MB内存
  • 可以通过模块来扩展 (还是得自定义的,没有一劳永逸这回事)

关于DSL的安装可以参照FAQ的 这里 。如果使用虚拟机的话注意是2.4内核。下图是DSL的桌面

damn_small_linux_desktop

后记

在查找资料的时候看到某人提到,Live CD的主要作用是备份和恢复,深以为然。在系统崩溃了以后,能快速地弄起一个操作系统,里面该有的都有,就是这样。当然因为媒体的只读特性,还适合用来干些不想或不需要留痕迹的事情,安全。至于USB媒体方面,可说是东西在别人手上自己的数据不安全,东西在自己手上别人的数据不安全,还是要谨慎使用啊。

其实了解到这些东西的起因还是几个月前一个同事问起怎么备份Linux的分区(貌似Ghost不行),于是一通Google查到了 Partimage ,一个与Ghost类似的工具,但支持Ext2/Ext3、Reiser3、FAT16/32、NTFS、HPFS、JFS、XFS、UFS、HFS文件系统,囊括了Linux、Unix、Mac OS、Windows平台。该工具还被收录在 SystemRescueCD 里方便使用。(机器挂了总得有个环境能运行吧)于是从SystemRescueCD的扩展阅读开始了Live CD之旅。

最近似乎关于操作系统方面写得多了些,不过这也是根本,摆弄不好系统还是要被人鄙视的,不过大致上也告一段落了。Live CD也好,USB设备也好,除了备份和恢复的目标外,其他的似乎都能通过虚拟机解决(这个对于程序员来说是应该掌握的东西),之后把话题转向虚拟机方面。

前一阵子做了点功课,经过一段时间的发展,应用的逐渐成熟,虚拟机(或者说虚拟化)开始成为一个越来越大的话题,不再是来一篇《VMWare图文教程》什么的就能大致概括得了的了,慢慢来吧。

February 3, 2009

如何创建你自己的Windows Live CD

Filed under: 1.9 操作系统 — Eric Tou @ 4:48 pm
Tags: , ,

之前有记录过一篇 《便携式WinPE》, 介绍如何将别人已经做好的WinPE改成Portable的。现在移动硬盘里装的就是这个,重新安装系统也不用到处找光盘什么的,只要主板支持USB启动就好,可谓是居家旅行之必备。

于是也会好奇这个WinPE是怎么弄的,前几天在codeproject的newsletter里读到了一篇 <How To Make Your Own Windows Live CD> ,虽然还是使用工具,但好歹是一个小小的进步。

以下翻译自上文,有兴趣的同学可以DIY

Live CD允许你从光驱启动计算机并对你的系统实现不同的功能,比如Live CD非常适于恢复数据、修复问题或者当你使用不是自己的计算机时拥有一个由自己支配的自定义桌面。

Live CD 在Linux世界相当普遍,但并不常听说Windows Live CD

今天我们要向你展示如何创建自定义的Windows Live CD

需要的工具
Bart PE
你的Windows安装盘 (注:或者i386文件夹)

步骤

1. 下载并安装 最新版的Bart PE 。运行PE Builder。这是程序的主窗口。

pe-builder

2. 所有你想要添加的额外功能通过插件的手段实现。有很多插件可供选择。插件不过是向你的Live CD添加额外软件的手段而已。你可以从 这里 访问Bart PE的插件库。 (注:相当多的插件,这张Live CD被打造成什么样子,或者说要实现怎样的功能,完全取决于你选择的插件)

3. 为了实现我们的目的我们需要一个叫做 Windows XPE 的插件以使我们能够启动进入图形化界面环境。你可以自由的为你想添加的功能选择其他的插件。那里有磁盘恢复、办公、备份、磁盘镜像等插件。

4. 现在插入你的Windows安装盘,为PE Builder指定包含Windows安装盘的CD驱动器或者其复制文件的路径。(如果你有一台笔记本和i386文件夹就更好了)

5. 点击底部的plug-ins按钮。你可以添加更多的软件或是调整现有的软件/插件。如果你得到错误提示,可能是你之前提供的源路径不对。

pe-builder-plugins

6. 点击add按钮,指向你存储Windows XPE插件的位置将其添加。我们使用了XPE插件后你可以安全地禁用Nu2shell,PENETCFG和A43插件因为它们提供的功能XPE插件已经包含。

7. 点击close。现在你可以刻录光碟或者保存一个ISO用于测试以便之后刻录。点击build之后PE Builder就会开始工作。

图略

8. 如果编译的过程无错误地结束,你已经创建了你自己的Live CD。

注:我的编译过程5分钟不到,生成的文件大小270MB。作者在Virtual Box虚拟机中测试生成的iso的贴图略去。以下是运行的WinXP PE的桌面贴图。感觉运行速度比较一般,还有待调校。

winxp-pe-desktop

有其他的小技巧使你可以自定义启动时的文本,墙纸以及其他东西。不过是需要编辑一些文件的小麻烦而已。不管有没有这个可视的自定义环境,现在你都已经拥有了一个包含符合你特定需要的工具的,功能完整的Live CD。通过探索这样一个工具,还有无数其他的可能性在等待着你。比如你可以创建一张包含了所有你喜爱的程序和文档的Live DVD。
————————————————–

Bart PE的简介

翻译完上面的动手文章后,我们来介绍一下其中用到的Bart PE。引用自 Bart PE的主页 。

什么是Bart PE和PE Builder?

Bart是作者的名字,他开发的PE Builder帮助你通过原始的Widnows XP或Windows Server 2003安装盘创建一个基于BartPE(Bart Preinstalled Environment Bart预装系统)Windows启动光盘,非常适用于PC维护。

使用Windows内核的优势

对NTFS分区的完全读写访问

BartPE vs. Windows PE?

BartPE不是由Microsoft支持的。Windows PE才是Microsoft官方产品。
BartPE有图形化用户界面。Windows PE有一个命令行界面。
创建BartPE安装盘的工具是免费软件。Windows PE只针对Microsoft OEM用户。
BartPE允许无限制的自定义插件。Windows PE只有有限数量的插件选择。

BartPE和Windows PE的技术差别?

目标 – Microsoft把Windows PE看做一个安装平台。Bart把Windows PE 看做下一代的拯救回复平台。

开始菜单 – Bart的builder提供简单、动态、功能强大的开始菜单(Nu2Menu, 见 截图 ). Microsoft的builder不提供开始菜单,只有命令提示符。

创建的源 – Bart的builder能够从Windows XP Home Edition或者一个 预装的Windows XP版本创建(不需要CD).

插件 – 通过PE Builder你能使用插件轻松添加应用程序、驱动和工具。这使PE Builder特别强大。最终用户能将不同软件商的插件整合到一个光盘镜像中。

网络支持 – PE Builder包含自己的网络支持工具(bartpe/penetcfg) 来启动TCP/IP和Microsoft Client. 各种TCP/IP设置如: dynamic/static ip-address, subnet-mask, default gateway, dns-servers computer-name, workgroup能即时修改。你也能创建一个供选择的预定义档案。Microsoft Windows PE只支持DHCP或是使用winbom.ini的固定的设定。
此外还有一个Erwin Veermans制作的插件(NwDskPe) 能为BartPE载入 Netware Client(IP/IPX).

文件共享 - BartPE能够开启文件共享支持。

VNC – 因为支持文件共享,你同样可以运行UltraVNC。

Dos支持 – Bart’s builder有一个”dospe”插件。

授权 - Microsoft Windows PE只针对企业/OEM客户,BartPE面向所有人。

64-Bit – Bart’s builder不支持Windows 64-bit版本。

————————————————–

后记

比较了生成的文件结构,和原来的老毛桃版本不一样,怎样把自制的版本Portable暂时还没什么头绪,以后再研究。

默认生成的只是一个可以运行的GUI,并没有太多的功能,还需要根据需要选择插件自己定制。看着长长的插件列表,仿佛又看见了一个时间杀手。需要查询一下是否已经有在Bart PE基础上提供的插件方案。

WPMU Theme pack by WPMU-DEV .