WikiEditor插件安装配置
我自己有个meidiaWiki,这是为了积累知识所做的笔记,通过wiki的方式组织,强迫自己将笔记做得正规些,有条不紊,时机成熟的时候再放到网上。
为什么安装WikiEditor?
写wiki最烦恼的是格式,尤其是那些枯燥又容易混淆的格式符号。如果你用过wiki,几个月没有用了,还能记得非数字列表怎么表示吗?
去年听说wiki老总立志要让编辑人员更容易使用。最近看到meidawiki官方网站界面变得更加漂亮了,编辑页面也有了很大的变化,以往那些单调的编辑功能变得丰富了,而且还能插入特殊字符、有帮助,编辑的确更加容易。所以我打算把这个用到我的wiki上。
安装
我的安装过程并非一帆风顺。下载新的wiki系统并执行了升级程序后,并没有看到那漂亮的编辑器。全新安装也不行。于是仔细检查官方网站,发现这是mediaWiki的一个extension,叫UsabilityInitiative,下载与自己wiki版本对应的程序版本,需要翻墙。
最简单的流程是按照官方页面给出的方法,省时省力,又不费脑细胞。别像我一般傻,折腾一大堆,最后才恍然大悟!
官方方法:
- Get the extension with distributor or svn and drop it into MediaWiki directory /extensions
- Setup your LocalSettings.php as explained in README file.
- Run
php maintenance/update.phpfrom the command line (see update.php and also here)
This is an example, stable configuration for your LocalSettings.php file for the 1.16 release version:
// UsabilityInitiative/Vector
require_once("$IP/extensions/UsabilityInitiative/Vector/Vector.php");
$wgVectorModules['editwarning']['global'] = false; // Don't enable EditWarning globally
$wgVectorModules['editwarning']['user'] = true; // Allow users to enable EditWarning in their preferences
$wgVectorUseSimpleSearch = true; // Need this as well for SimpleSearch
$wgDefaultSkin = 'vector'; // If you want to change the default skin for new users
$wgVectorUseIconWatch = true; //Enable star icon to add/remove page from watchlist
// UsabilityInitiative/WikiEditor
require_once("$IP/extensions/UsabilityInitiative/WikiEditor/WikiEditor.php");
$wgDefaultUserOptions['usebetatoolbar-cgd'] = 1; // Default user preference to use toolbar dialogs
$wgWikiEditorModules['toolbar']['global'] = true; // Enable the WikiEditor toolbar for everyone
$wgWikiEditorModules['toolbar']['user'] = false; // Don't allow users to turn the WikiEditor toolbar on/off individually
接下来我讲讲我的过程:
- 读README文件。我当时没有找到这个页面,而是找到了WikiEditor页面,结果走了一大圈弯路(我好傻,居然没有看到上面的醒目提示,说
This extension has been migrated from Extension:UsabilityInitiative.)。我当时看到那个页面上说按README做,而页面链接过去的README是svn最新版本的,不是1.16的,结果怎么都不行。后来看自己目录下的READEME才隐约领会到,最后几乎把整个README内容都copy到了LocalSetting.php里面(找对书籍和信息很重要,不然会误入歧途!)。 - 执行SQL。当时我以为把LocalSetting.php设置对了就搞定了,没想到到页面上设置的时候却报SQL错误,说表不存在。半天没有找到初始化配置页面,只能动手登录mysql,然后手动执行那些找出来的sql文件。sql文件在哪?在extensions/UsabilityInitiative/下find一下吧。
配置
过程很简单,但不要走错,错了就复杂了!
Javascript的对象与数组
Object:
- 当Object被当作函数而不是构造器被调用时,它将扮演类型转换器的角色。
typeof 522 //"number" typeof Object(522) //522 var a = Object(522); typeof a //"object"
- Object ( [ value ] ):
如果value为null,undefined或不提供,则创建并返回一个新的Object对象。这跟使用Object构造方法一样。
- Object ( [ value ] ):
- Object 构造方法
- Object构造器的属性
除了包含一个内部属性length(此值总是1)外,还包含:- Object.prototype
包含三个属性:{DontEnum, DontDelete, ReadOnly}待补充
- Object.prototype
- Object的Prototype对象的属性
- Object.prototype.constructor:内建object构造器
- Object.prototype.toString ( ):待补充
- Object.prototype.toLocaleString ( ):待补充
- Object.prototype.valueOf ( )
- Object.prototype.hasOwnProperty (V):检查是否包含V属性。
var obj = {name:"zhanglin", age:25}; var p = obj.hasOwnProperty("name"); //p = true var q = obj.hasOwnProperty("sex"); //q = false - Object.prototype.isPrototypeOf (V):待补充
- Object.prototype.propertyIsEnumerable (V):待补充
Array:
null:
undefined:
typeof:
VIM查找时需要转义的字符
首先,VIM中在查找时使用正则表达式进行。但是,不能将平常的正则表达式直接搬过来使用。原因是标准正则中有些符号与VIM中的一些固有符号有冲突,这时就需要对这些符号转义,才能表示这个符号表示正则表达式的操作符,否则表示VIM操作符或者字符本意。
对于这些将在VIM Search时需要转义的字符总结如下:
- |
- &
- ()
- +
- =
- ?
- \{n,m} n到m个,按最多匹配
- \{-n,m} n到m个,按最少匹配
- <> 匹配单词边缘
命令行下批处理图片
每次拍完照片之后,因为照片太大无法直接上传到空间里面,需要将照片缩小。这时总是因为工作量太大而无法让人望而生畏。如果使用windows,而且手头又有photoshop,那很好。因为photoshop里面有个批处理功能叫Action,但是没有在windows下,更没有photoshop,有没有简便的方法可以做这种简单重复的事情呢?
答案是肯定的。那就是命令行的”imagemagick”!imagemagick是一组命令,包括convert, identify, mogrify, composite, montage, compare, stream, display, animate, import, conjure.
使用convert命令对原图做缩放处理,并将缩放后的图片放到resized/目录中:
find . -maxdepth 1 -name '*.JPG' -exec convert {} -resize '1024x1024' resized/{} \;
某些网站的图片上传功能要求后缀名小写,这时需要做一次转换。使用如下命令:
for f in *; do mv $f `echo $f | tr '[:upper:]' '[:lower:]'`; done
或者使用如下命令(更简单):
find resized -depth -exec rename 's/(.*)\/([^\/]*)/$1\/\L$2/' {} \;
正则与中文
在正则表达式中,拉丁字符的匹配很是方便,可是如果要匹配的内容中有中文或者中文标点符号就很恼火。今天特意对中文码表做了细致的了解,分享给大家。
按照Unicode Block分别介绍:
- Basic Latin(\u0020-\u007E):
这些是基本的可见ASCII码 - HalfWidth and FullWidth Forms(\uFF01-\uFFEE)
全角符号(\uFF01-\uFF60):包含了大部分中文输入法所输入的符号。
半角符号(\uFF61-\uFFEE): - Genaral Punctuation(\u2000-\u206F):
包含减号、破折号、省略号、单双引号、百分号、千分号、章节符号、分秒符号 - CJK Synmbols and Punctuation(\u3000-\u303F):
常见的有下列符号《》「」『』【】〖〗 - CJK Unified Ideograph(\u4E00-\u9FFF):
包含所有的中文汉字。因为从9FCC到最后都未定义,所以正则表达式中直接验证\u4E00-\u9FCB即可。有些朋友在介绍中文的正则匹配时说是从\u4E00-\u9FA5,但是在9FA5之后还有30个可见字,8个不可识别字(已分配,但无汉字实现),虽然最后有52个编码未分配,但起码也要在9FC3处结束,而不是9FA5。 - CJK Compatibility Ideographs(\uF900-\uFAFF):
另一块汉字区域。FADA-FAFF未分配,所以仅在\uF900-\uFAD9有汉字。不过,这一区域的汉字在CJK Unified Ideograph块中都存在,不知道当初卫生么会分配这么一小块来放汉字!
愚人节kernel.org之怪状
今天在LinuxToy上看到kernel.org主页完全翻转的怪状,发生这一情景的时间是4月1号,愚人节上。我看大部分人的意见都不太靠谱,因此也陈述了自己的意见,我不赞同其中的截图说和css说,见41楼。重复一下我的陈述:
33楼原文:还有数学符号。⊥ 这个就是。ǝ 是国际音标。ƃ 是斯拉夫字母。页面是 utf-8 的。
赞成33楼xiaq的说法。现在似乎还没有让元素倒过来的css功能吧!即使有,下面两点也讲不通:
- 倒过来之后的文字格式应该保持住才对!比如”Security”倒过来之后“ecurit”的底线应该与”S”的底线保持一致,而那个页面却是”ecurit”的顶线与”S”的顶线一致。
- 字型应该不变。但是如”A”倒过来之后变成了”∀”,”e”倒过来后变成了”ǝ”,”g”倒过来成了”ƃ”。字型上发生了很大的变化,这说明更本不是同一个字。 所以,这应该是将所有字母顺序用js反过来,然后找了对应相似的字母替换之后得到的。
VIM Tip Wiki
我用VIM已经好多年了。但一直不知道怎么用VIM自动格式化代码,每次都麻烦得要命,今天终于决定google一下。结果居然让我发现一个专门介绍VIM小技巧的wiki,叫VIM TIP WIKI(需要翻墙,又是GWF)。喜欢VIM的朋友可以多上去看看,翻墙方法自己找,抱歉!
网站偶尔被重置了
刚才打开我现在的这个网站想记点东西,结果居然返回RESET。我心里大呼“完了“!可是我的页面内容就这么点,怎么会有敏感词呢。于是我一篇一篇的点开试,看看到底是访问哪一篇内容时会被重置。结果又没有出现RESET的情况了!再重新打开首页,也没有。好奇怪!难道GWF知道我在试探他?
反正GWF是盯上我了,TMD,真是无恶不作!
北京的宝马警车(图)
一点关于西厢计划安装配置的问题
对于崇尚自由的人们来说,西厢计划简直就是神来之笔,它让我们在这个黑暗的年代看到了曙光,为我们打破信息谎言创造了途径。最值得赞叹的是:这是规则之下的博弈。gfw今天棋逢对手了!
具体的编译、安装和配置请看http://code.google.com/p/scholarzhang/wiki/INSTALL。
配置请看http://code.google.com/p/scholarzhang/wiki/USAGE
为了不重复发明轮子。在此,我仅仅提供一些应对问题的经验。
如果按照官方文档的指引,基本能够成功,但是从留言和我自己的经历来看,在中途可能还是有一部分人会遇到一点问题而成功不了。这些问题官方文档没有提及,也许是因为软件作者本身水平太高,这些问题基本遇不到,或者顺手就解决了,也就没有正式的写道wiki中。
好了,说正题。
- 问题一。大部分朋友会遇到找不到下面三个文件:
/lib/xtables/libipt_ZHANG.so
/lib/xtables/libipt_CUI.so
/lib/xtables/libipt_gfw.so
到/lib/xtables/下的确找不到这三个文件。不过编译安装后我们可以在/usr/local/libexec/xtables/下找到文件名相似的个文件(而源文件目录下,生成的也只有这几个文件,可以断定就是他们几个)。因此,可以从/usr/local/libexec/xtables/下创建链接文件到/lib/xtables/下:cd /lib/xtables sudo ln -s /usr/local/libexec/xtables/libxt_CUI.so libipt_CUI.so sudo ln -s /usr/local/libexec/xtables/libxt_ZHANG.so libipt_ZHANG.so sudo ln -s /usr/local/libexec/xtables/libxt_gfw.so libipt_gfw.so
- 问题二,IP地址解析仍然不正确。即使正确设置了自己的DNS server为8.8.8.8也解析不到正确的www.youtube.com地址。反复检查了/etc/hosts文件以及/etc/resolv.conf文件都找不到哪里出了错。于是浏览器要么出现网络错误,要么出现refuse错误。如果使用命令
nslookup www.youtube.com
则一如既往的错。但如果使用nslookup的交互模式,并设置了dns server 为8.8.8.8,则能够解析到正确的IP地址。其实,这是因为在还没有执行ipset和iptables命令之前访问了youtube,那时DNS被污染,因此本地的DNS cache记录了被污染的DNS地址。通过执行下面的命令可以清除本地DNS Cache:
sudo resolvconfig -d wlan0 sudo resolvconfig -d eth0
- ipset的规则是什么,example中的规则怎么理解?
example中的规则一般如这样”-A YOUTUBE 208.117.224.0/19 ”。前面的-A和YOUTUBE 容易理解。但是”208.117.224.0/19″是什么?其实,这是表示一个网段,将208.117.224.0转化为二进制后应该是”11010000.01110101.1110000.00000000″,每段8位,第19位是第三段第三位,就是最后那个1上。”208.117.224.0/19″就表示二进制的前19位是相同的,这表示一个网段的IP地址。与子网掩码表示的方法不同,但意思是一样的。
每个步骤保证正确之后,可以写成一个脚本,以简便每次启动过程:
首先,导出刚才的那些设置:
sudo ipset -S > ipset.ruls sudo iptables-save > iptable.ruls接着,把它们放到/etc目录下面,(不能放到/home目录下,因为到时候会用sudo执行,root用户访问不到自己的目录):
sudo mkdir /etc/west-chamber sudo chmod a+w /etc/west-chamber cp ipset.ruls iptable.ruls /etc/west-chamber/最后,写一个脚本,并赋予可执行权限:
sudo touche /usr/local/sbin/west-chamber.sh#!/bin/sh #restore rules ipset -R < /etc/west-chamber/ipset.ruls iptables-restore < /etc/west-chamber/iptable.ruls #set trusted nameserver echo nameserver 8.8.8.8 > /etc/resolv.conf echo nameserver 8.8.4.4 >> /etc/resolv.conf #clear the resolve catch resolvconf -d wlan0 resolvconf -d eth0sudo chmod a+x /usr/local/sbin/west-chamber.sh现在就可以执行
sudo west-chamber.sh来启动西厢计划了。
现在打开youtube看看吧!
附A:一些有用的命令:
查询所有www.youtube.com的IP并保存到文件中:
$nslookup www.youtube.com | grep Address | grep -v '#53' | awk '{print $2}' >> www.youtube.com.ip清除本地的dns缓存:
$resolvconfig -d wlan0 $resolvconfig -d eth0统计有多少个IP:
$cat www.youtube.com.ip | sort -g | uniq | wc -l


