我们被骗了

昨天和一些同学在一起吃饭,聊到了张悟本,现在大家都知道他是个骗子,有位同学还说买过张悟本的一本书,感觉挺尴尬,因为被骗总是一个让人很痛苦和伤心的事情。

不过这些事情实际上也没什么好丢人和尴尬的,幸运的是张悟本犯的错还不算太大,没有给人造成不可挽回的痛苦,被骗也就被骗了,在现在这个国家,想不被骗,那恐怕要到棺材里才行。

最重要的不是被骗了,而是被谁给骗了,假若你现在并不知道张悟本,他也没在电视台出现过,他说过的话你肯定不会那么相信的,所以,我们不是在相信张悟本,而是官媒,一个可以说白为黑,也可以说黑为白的群体,仅仅靠一支笔或一张嘴,就可以让我们相信这个而不相信那个的代表中国先进文化的前进方向的媒体。不是每个人都懂医学和养生的,但是我们需要健康,于是我们就从各种渠道寻找这些信息,于是,我们就被官媒骗了,所以没什么丢人的,就像被父母小骗了一下一样,我们不必要念念不忘。

好了,这次我们忍了,因为人都有办错事的时候。后来,我又看到了好多不一样的东西,我们的兄弟被矿难了,官方说没死人;被洪水了,还要交钱来赈灾;从官媒上我们所看到的是在官员的辛苦有效指挥和领导下,我们战胜一个又一个天灾,给人民带来了幸福安康的生活,哗,一片和谐。我知道,我们的“父母”又在骗我们了,这个父母也许从来就没生下过我们,我们是领养的,我们代表不了自己,哪怕他们说他们是人民选出来的,代表最广大人民的利益的,就像我们的监护人一样,这个才是最大的骗局。

所以被骗不是什么伤心的事,只是有点悲哀罢了,也有一点幸运在里面,你这一次没把我骗死,我终于认识你了!

Posted in 原创 | Tagged | Leave a comment

QWizard下一步按钮的控制

QWizard是Qt的向导类,在向导过程中,可以通过函数registerField注册字段实现全局访问,而且可以通过4种方法来控制下一步或者完成按钮的可用性:

第一种方法,isComplete函数,其应用于QWizardPage,可控制单个向导页面的“下一步”或者“完成”按钮的可用性,函数如下:

bool QWizardPage::isComplete () const[virtual]

下面是isComplete的实现,源码来源于

http://doc.qt.nokia.com/qq/qq22-qwizard.html#validatebeforeitstoolate

首先重新实现QWizardPage::isComplete()函数

bool SailingPage::isComplete() const
{
    return field("sailing").toDate().dayOfWeek() != Qt::Sunday;
}

连接输入框或者其他需要监视的对象的信号与QWizardPage::completeChanged ()信号。

connect(sailing, SIGNAL(selectionChanged()), this, SIGNAL(completeChanged()));

当然也可以自己执行QWizardPage::completeChanged ()信号,即自行编写完成检查函数后执行信号:

emit completeChanged()

第二种方法,hasAcceptableInput函数,用于QLineEdit,如果hasAcceptableInput为false,则按钮会变灰。

bool hasAcceptableInput () const

第三种方法,registerField函数,第一个参数name后加星号,例如field*,就可以保证如果此区域不填写,下一步按钮将始处于灰色状态。

void QWizardPage::registerField ( const QString & name, QWidget * widget, const char * property = 0, const char * changedSignal = 0)

第四种方法,重新实现bool QWizardPage::validatePage ()函数,其能在点击下一步或者完成按钮时完成函数所定义的功能,当然就包括验证这一类的东西了。









Posted in Qt, 原创 | Tagged , , , | Leave a comment

学校餐厅的饭桌

一到吃饭时间,总见一群人伙同去吃饭,热闹还能多吃几种菜。但餐厅的桌子都一排一排的,一张只能容纳四个人,不过桌子能移动,于是就有好多同学把桌子合并起来,5、6个人或者更多,就开吃了,不过随便两张桌子一拉,就把过道堵了。

今天早上去学校餐厅吃饭,看到每隔几排桌子,总有两排桌子是合并的,看起来非常整齐,应该不会有同学再拉桌子了吧!

这个举动是餐厅有意为之,还是无心插柳;是一时为之,还是永久的觉悟!

Posted in 原创 | Tagged , | Leave a comment

dokuwiki中文文件名编码转换

默认情况下,dokuwiki需要把中文文件进行编码后存储,便会在data文件夹下存在好多形如%ED%类的文件名,不利用管理和SEO,如果你想改变这些,首先要更改dokuwiki对中文文件的存储方式,然后将以前的文件编码重新转换为正常的中文文件名。

第一步可参考上一篇文章http://klniu.com/post/dokuwiki-chinese-file-name-and-address-sitemap-garbled/更改。

而第二步就需要批量处理了,此方法适用于linux系统。我使用的是ubuntu,请大家参考执行:

安装uni2ascii工具:

sudo apt-get install uni2ascii

编写脚本:

#!/bin/sh
 times=5
 itimes=0
 while [ "$itimes" -lt "$times" ]
 do
 for oldfile in `find $1 -name "*"`
 do
 newfile=`echo $oldfile|ascii2uni -aJ -q`
 mv -n -v "$oldfile" "$newfile"
 done
 itimes=$(($itimes+1))
 done

脚本的原理是,遍历目录并转换文件名,然后再将乱码的文件重命名为转换后的文件名。

因为我shell学得不好,所以有一个问题没有解决–在脚本执行过程中,如果目录已经被更改,脚本继续执行的时候被更改过名字的目录下的文件会无法定位,所以此脚本需要多执行几次,具体次数要视最大目录层数决定,脚本默认5次,如果你目录较多,可以更改times=数字,来决定脚本执行次数。这是一个小问题,脚本并不会损坏文件,只是多执行几次,请放心使用。

脚本编写完成后,执行:

sh 脚本名字 被执行的目录   #例如 sh asciiconv.sh /home/username/dokuwiki/data
Posted in linux, 原创 | Tagged , , , | 2 Comments

dokuwiki中文文件名及sitemap乱码的解决

dokuwiki默认是使用urlencode函数对文件名进行编码后存储的,而索引文章的indexer.php文件在生成sitemap.xml时也会对文件名编码,这样对搜索引擎是不友好的,实际上将这两个编码的功能去掉就可以了。

中文文件名的乱码可以参考http://www.dokuwiki.org/zh:pagename进行更改,即:

function utf8_encodeFN($file, $safe = true) {
  if ($safe && preg_match('#^[a-zA-Z0-9/_\-.%]+$#', $file)) {
    return $file;
  }
  /* 把这个部分注释掉
     $file = urlencode($file);
     $file = str_replace('%2F','/',$file);
   */
  return $file;
}
}
if (!function_exists('utf8_decodeFN')) {
  /**
   * URL-Decode a filename
   *
   * This is just a wrapper around urldecode
   *
   * @author Andreas Gohr <andi@splitbrain.org>
   * @see urldecode
   */
  function utf8_decodeFN($file) {
    //$file = urldecode($file); //再注释掉这个语句...
    return $file;
  }
}

而生成sitemap.xml文件的是"/lib/exe/indexer.php"文件,打开这个文件,搜索runSitemapper()函数,在函数下有此语句:

print '    <loc>'.wl($id,'',true).'</loc>'.NL;

其中wl函数为重写url的,在wl函数的定义在"/inc/common.php"文件内,其中有一语句:

$id    = idfilter($id);

idfilter即是进行编码转换的,只需要在common.php中去掉那一行即可。

Posted in PHP, 原创 | Tagged , , , | Leave a comment