开源在今天的软件业已经很普遍,但开源是否意味着使用者可以对开源后的代码为所欲为呢 ? 答案当然是否定的。开源运动同样有自己的游戏规则和道德准则。不遵行这些规则不但损害开源运动的健康发展,也会对违规者造成名誉和市场上的损失,更可能陷入法律纠纷和赔偿。现今存在的开源协议很多,而经过Open Source Initiative组织通过批准的开源协议目前有58种。我们在常见的开源协议如BSD, GPL, LGPL, MIT等都是OSI批准的协议。如果要开源自己的代码,最好也是选择这些被批准的开源协议。首先借用一张相当直观清晰的图来划分各种协议:

继续阅读

由于本人并不准备搭建旧版本WordPress的运行环境,于是决定从代码入手,分析这个彩蛋。

在revisions-js.php中定义的函数dvortr()作用是使用一对一的替换来加密字符串,该文件中有两次调用此函数:dvortr( “Erb-y n.y ydco dall.b aiacbv Wa ce]-irxajt- dp.u]-$-VIr XajtWzaVv” )和dvortr( ‘Eabi.p!’ )。经过解密,其输出分别为”Don’t let this happen again. <a id=’goback’ href=’$’>Go Back</a>.”和’Danger!’ 。

而定义的变量$j作用是包含jQuery库,$n是获取的当前用户名,$d是noscript时的输出。通过替换掉一些WordPress中定义的函数,我成功地使部分解码后的php文件在本地Apache服务器成功运行。并且,我还重新制作了这个彩蛋,现在它已经可以在本站以某种方式触发~

下面附上整个解密过程中所用到的文件。其中revision.php和revisions-js.php是原文件,decode.php是部分解密后的文件,decode.js是浏览器获取的匿名js文件,decoder.html是根据原文件的加密算法编写的加密、解密脚本。

WordPressEasterEgg

今天我在进行博客考古活动时,得知了一个WordPress彩蛋。来源见:

http://www.kaisir.com/2010/02/the-egg-wordpress.html

http://www.codeweblog.com/wordpress的一个彩蛋/

在WordPress文章中使用Compare Revisions功能,如果两个相比较的文章ID一致,就会触发彩蛋。其效果是显示文字:

Wake up XXX…
The matrix has you.
Follow the white rabbit.
Don’t let this happen again.

这是一个致敬The Matrix的彩蛋。经过对WordPress历史版本的分析,发现该彩蛋已在4.x版本移除。通过分析3.0.2版本的文件,找到了该版本的revision.php和revision-js.php文件,并大致研究出了其实现方法。在revision.php中有这样一串代码:

// If we're comparing a revision to itself, redirect to the 'view' page for that revision or the edit page for that post

if ( $left_revision->ID == $right_revision->ID ) {

    $redirect = get_edit_post_link( $left_revision->ID );

    include( './js/revisions-js.php' );

    break;

}

而在revision-js.php中,有一串经过了eval混淆的代码,用于向用户输出彩蛋内容。

目前本人正在尝试反混淆代码,并复现这个彩蛋。如果你有兴趣,也可以下载revision-js.php进行研究。

上帝说,要有

\[\nabla\cdot\vec{E} = \frac{\rho}{\epsilon_0}\]
\[\nabla\cdot\vec{B} = 0 \]
\[\nabla\times\vec{E} = -\frac{\partial B}{\partial t} \]
\[\nabla\times\vec{B} = \mu_0\left(\vec{J}+\epsilon_0\frac{\partial E}{\partial t} \right)\]

于是就有了光

//以上文字旨在测试LaTeX兼容情况

使用方法:

在HTML页面中,通过<script src=”https://cdn.bootcss.com/mathjax/2.7.3/MathJax.js?config=default”></script>,即可加载MathJax,该脚本将会把所有LaTeX公式正确显示出来。尽情的按照LaTeX语法插入公式就好啦!
如果要在WordPress中使用,可以通过在编辑文章界面,选择“文本”(如果使用“可视化”,字符将被转义,导致脚本无法加载),输入<script src=”https://cdn.bootcss.com/mathjax/2.7.3/MathJax.js?config=default”></script>,达到相同效果。

使用时请注意:

The default math delimiters are $$...$$ and \[...\] for displayed mathematics, and \(...\) for in-line mathematics. Note in particular that the $...$ in-line delimiters are not used by default.

官方网站:https://www.mathjax.org/

Sublime Text是一款非常优秀的编辑器,速度快,界面简洁,插件众多。并且能跨平台使用,在Mac和Windows上都能完美使用。虽然是一款付费软件,但作者很厚道地给了无限期的试用期限。这一切正如其官网广告词说的那样:The text editor you’ll fall in love with.

Skim是一款免费轻量的PDF阅读、标注工具,布局贴心友好,与OS X自带的Previewer相比,Skim能更好的注释PDF文件。

LaTeX是一款权威的科技论文排版软件,不仅可以写论文,也可以处理日常的各种文档工作,甚至是做幻灯片。相比于Word,LaTeX最大的优势是对于复杂公式的编辑与排版非常漂亮。并且用简单的命令就可以生成脚注、索引、目录和参考文献等复杂的结构。这一切优点都使得世界上众多的“科学家”们不再需要身兼作者与排版工两职,从而将更多的精力集中于文章内容本身。

本文的目的是将上述三种软件综合部署在Mac上。完成之后,你将可以在Sublime Text里面进行LaTeX代码编辑,用Skim预览生成的PDF文件。更重要的是,让你觉得,写论文也可以是一件很优美的事。继续阅读