月度归档:2010年08月

moodle的隐藏功能

当了解到这些隐藏功能后,我不得不对Moodle的喜爱又增加了一层。本文慢慢搜集它们,持续补充。

隐藏功能是那些在moodle界面中找不到,必须手工在地址栏输入url才能使用的功能。本文后面只给出每个url相对于moodle root的部分,比如“/foo/bar.php”意味着应该访问“http://www.mymoodle.com/foo/bar.php”。

1. 系统管理

1.1 数据库性能监视

/admin/dbperformance.php

1.2 把MySQL数据库从MyISAM格式转换到InnoDB格式

/admin/innodb.php

因为MyISAM不支持事务等缺点,从Moodle 2.0开始,InnoDB将成为官方推荐的格式。详情可以参考MDL-23682,moodler们对MyISAM的态度几近于愤怒。

1.3 体检中心

/admin/health.php

自动检查系统潜在的问题,并给出建议性的解决方案。这个很值得每隔一段时间就用一用。

1.4 全数据库替换

/admin/replace.php

对整个moodle数据库进行文本搜索和替换。比如网站更换了域名,就可以用一下这个。

2.辅助开发

2.1 调试发出的email

把所有发出的email都重定向到一个log文件中。

脚本在/admin/mailout-debugger.php,但它不是从浏览器里访问的。它的注释详细说明了使用方法。

3. 彩蛋

3.1 列出所有用户的头像

/userpix/index.php

Android 2.2 (Froyo) 中文联系人拼音检索增强补丁

Froyo终于开始官方支持在任何系统语言下都能把中文联系人按照拼音顺序排序,并且支持全拼和简拼(可以从名字中间任意一字的拼音开始)检索。这要感谢一位叫Bai Tao的工程师。

不过,google的改进有一点不如我以前的补丁,只是很小的一点,就是用“gdg”可以搜索到“郭德纲”,而“gdgang”不行。gdgang这种简全混合的模式在同一简拼的联系人较多的时候,只要比纯简拼多敲1-2个字符,就能让检索的结果好很多。比如“gdga”可以过滤掉郭得乖、国大贵、关定格等等。

下面这个补丁,就补全了这个功能:

--- a/src/com/android/providers/contacts/ContactLocaleUtils.java
+++ b/src/com/android/providers/contacts/ContactLocaleUtils.java
@@ -102,7 +102,13 @@ public class ContactLocaleUtils {
                 final Token token = tokens.get(i);
                 if (Token.PINYIN == token.type) {
                     keyPinyin.insert(0, token.target);
-                    keyInitial.insert(0, token.target.charAt(0));
+                    if (i == tokenCount - 1) {
+                        // Use all characters of the last token
+                        keyInitial.insert(0, token.target);
+                    } else {
+                        // Use the first character of other tokens
+                        keyInitial.insert(0, token.target.charAt(0));
+                    }
                 } else if (Token.LATIN == token.type) {
                     // Avoid adding space at the end of String.
                     if (keyPinyin.length() > 0) {
@@ -112,7 +118,13 @@ public class ContactLocaleUtils {
                         keyOrignal.insert(0, ' ');
                     }
                     keyPinyin.insert(0, token.source);
-                    keyInitial.insert(0, token.source.charAt(0));
+                    if (i == tokenCount - 1) {
+                        // Use all characters of the last token
+                        keyInitial.insert(0, token.source);
+                    } else {
+                        // Use the first character of other tokens
+                        keyInitial.insert(0, token.source.charAt(0));
+                    }
                 }
                 keyOrignal.insert(0, token.source);
                 keys.add(keyOrignal.toString());

我已经编译好一个,安装方法如下:

  1. 下载ContactsProvider.apk,通过adb、Root Explorer等覆盖Android系统的/system/app/下的同名文件;或者下载pyin-patch-froyo-0.1.zip,用刷rom的方法刷一下。
  2. 更改两次系统的语言(比如:中文->英文->中文),并且更改后等一小会儿,让系统在后台刷新联系人检索关键词数据库。
  3. 搞定!

以上内容在CM 6.0 RC3 for G1测试通过。理论上说,只要是2.2的Rom应该都能用,除非厂商自己在ContactsProvider里动了手脚。

欢迎反馈使用情况。如果比较多人喜欢这个,可以考虑提交给google……

想不人云亦云,好难啊

前两天在buzz上reshare了一篇文章,讲的是有人真正做了一次温水煮青蛙的实验,结果与广泛传播的故事完全不一样,文火逐渐加温的水中的青蛙,全都安全地跳出去了。然后,文章用加粗的字体强调:“即便所有人都认同并且经常说的道理,也可能是错的。那些被社会普遍认定的真理,也可能是谎言。凡事一定要经过亲自实验、调查、思考,不要人云亦云。”

这个故事和结论是很有震撼力的,好几个朋友也都对它进行了reshare。这两天我也时不时地回味几下,以提醒自己不要人云亦云。但是就在刚才,我突然想到,无论我reshare的动作,还是后来的思考,恰恰都是在人云亦云啊!就算流传很久的故事是杜撰的,那么这篇文章的故事就肯定不是杜撰的吗?按照这篇文章的精神,我应该是去搞两只青蛙,亲自煮煮看,才算真的“亲自实验、调查、思考,不要人云亦云”。

一篇反对人云亦云的文章,只是改变了我对“人云”的认识,并没有改变我“亦云”的习惯,挺讽刺。这说明什么?说明在我的意识中,打破“人云”是很容易的,而改变“亦云”是很难的。

谁知道哪里能买到活青蛙?

最难了解的是自己

昨日偶发一想法,给评师网发了一封信,质问为什么我的页面里的负面评价都被删除了。其实很久以前就发现了,只是昨天才想起来该问问他们。

答复说:“评师网并未删除任何与教学有关非重复发表的负面评论,只是将所有负面评论予以隐藏,只提供老师本人查看,老师用户的此项功能将在近期放出。”

我猜想,评师网一定是受到了强大的、来自各色教师的压力,才决定这么做的。大约半年多前,我曾经和某高校教师讨论过评师网。他当时很愤慨地说,“高校教师又不像明星那样是公众人物,凭什么要被摆到明面上被大众评论?”我相信他的想法在教师圈里应该是主流的。评师网为了生存,就自然得选择主动过滤掉负面的评论,创造和谐景色。

最难了解的是自己。这里的“难”有两层含义。一层是“不容易”,不容易获得别人对自己的客观评价,尤其是负面评价;另一层是“不愿意”,不愿意听到负面评价,让自己心安理得地活在一片美好中,并让自己相信那是真实的。

高中时候我曾经非常主动征询周围同学对我的意见,让他们帮我挑缺点。在等待回应的时候,我的心里是其实是“不愿意”听到不好的话的,所以我听到的真的都是好话。也许是我的表情在暗示他们别说难听的,也许是我用快速的回答抹杀了他们在一番赞美然后说“但是”的机会。反正我挺美滋滋的,觉得自己真的可能是天下第一大好人。

大学时,为了证明自己真是第一大好人,我开始另一种尝试:四处树敌。这里有点儿言重了,所谓树敌不过就是故意很直白地当面指出别人的这不好那不行。确实真的惹恼了不少人,换回的是很多反击。于是,我终于有机会重新认识自己了。值得一提的是,我惹恼的人,现在都是很好的朋友。难道大家本质上都是喜欢被人当面品头论足?

工作后,我鼓了若干次勇气,终于建了真言堂,在2003年3月17日那一天。开始几年,我经常气急败坏地想把它关掉;中间几年,我很庆幸它没被关掉;最近几年,我觉得几近干涸的它继续存在的意义已经不大了。这7年多,我做的事情并没有改变,但是学生对我的态度却发生了很大变化,究其原因,是真言堂让我得到了最直接、最极端的反馈,使我知道用什么样的方式去实行我的理念,可以让学生更平和地接受,从而效果更好。同时,真言堂中匿名支持我的话可信度也很高,使我更自信。

当言论突然放开时,真的是能吓死人的。但只要坚持住,若干年后,无论听言的还是发言的,就都能享受到开放言论带来的好处了。这是真言堂教给我的最大的道理。

回到评师网,它的做法已然很不错了。虽然表面在粉饰太平,但至少在试图把负面的东西通过隐秘的通道呈现给当事人。不知道在其它媒体上被封、被删的林林总总,是否会通过某些渠道送交给当事人做参考呢?希望不要真的是“删除”了啊。

婚礼两周年,三俗三下

老婆好庸俗,非要庆祝一下结婚两周年。我就媚俗了一下,附和了。一起出去低俗了一下:吃自助餐吃到快撑死。

自从听林海峰在百科全说讲无敌自助餐吃法,就一直想找机会试试。基本路数是先吃5盘水果,再吃5盘蔬菜,再猛吃海鲜,再吃肉,最后吃点儿主食意思一下。据说最低也能吃掉15盘食物。

我先吃了三盘水果两盘菜,此时还真觉得和啥都没吃一样。然后开始吃海鲜,吃肉,吃主食。最后的战果是:我俩几乎是最早进场的,一直不住嘴地吃,话都没说多少,等离开的时候,我们不仅是最后一桌,而且服务员已经擦完地,换完所有的桌布了。真的是没少吃啊!

几点感想:

  1. 高丽园涨价了,77一位了,食品的档次提高了很多,鲍鱼和鱼翅汤做得都挺好,生鱼片马马虎虎,螃蟹质量较差。
  2. 服务员最先送上来的是一份黑椒牛扒,限量供应的。味道很好,但如果你先吃,就着了道儿了。一块牛扒下去,基本都半饱了。我们忍着最后吃的。
  3. 水果蔬菜吃得足,整个过程都不觉得口渴,饮料一口没喝。
  4. 肉吃到不想吃了,还是一点儿没有饱的感觉。最后吃了三块年糕,喝了半杯橙汁,缴械了。
  5. 两年前在这儿婚礼,两年后又来吃,没啥特别感觉。
  6. 兆麟公园终于免费了!

博客遭受攻击,怀疑和骏丰集团有关

先看一张图,是google analytics统计的blog.sunner.cn最近一个月的流量。
攻击下的博客流量

左上图可以看出最近两天访问量异常地增大。

从左下图可以看出流量的增加并不是因为有人链接过来,而是直接的访问。这说明,如果增加的流量不是攻击,那么只可能是有很多人(从日志可以看到上千个独立ip)对我的网站超级感兴趣,直接在浏览器地址框里输入网址访问。

从右下图可以看出,这些人直接访问的并不是我的首页,而是不厌其烦地输入两个超长链接,访问的是两篇关于骏丰频谱的帖子。一篇是揭露骏丰频谱在营销过程中如何夸大宣传另一篇通过拆解机器让消费者了解其内里乾坤文章内容的真实性得到了骏丰高层的认可

8月4日,刚刚又有骏丰公关部的人和我接洽,8月6日,攻击就开始了。

那么,我当然首先会怀疑骏丰在搞鬼。当然,也不排除有人栽赃陷害他们。

现在攻击已经暂时减弱,本人保留继续追究的一切权力。

最后本人声明,放弃此链接下所有文章的版权,任何团体和个人都可以随意转载、发表,文责我自己承担。热烈欢迎转载!

再次遭受骏丰骚扰

今天又接到骏丰电话,还是劝我删文章。这回来的是个小人物,自称是公关部的中层。她明显不知道他们的总裁助理已经和我交涉过两轮的事实,这也暴露出她们内部信息流动的不畅,以及她读我博客的不用心。

没什么新花样,还是承认我说的都是事实,但很期望我删除。我想探探他们的底线,就暗示说,删除对我一点儿好处也没有。她也没听明白,还想对我晓之以理动之以情。下次再有这样的骚扰,我就直接按《独唱团》稿费的10倍开价,省得费口舌。还是100倍吧,万一他们觉得10倍可以接受,那就不好玩了。

btw:《独唱团》第一辑断断续续都看完了。感想是,还想再看下一辑。最喜欢艾未未《我脑》那张照片,可惜看不懂其中有啥病变。