Moodle用户认证切换到CAS+LDAP笔记

cms以前用的是email认证,用户自己填个人信息。过程繁琐,信息不准,相当折腾。偶然获知信息处正在做统一认证平台(CAS),就联系了一下,他们也正希望能有其它IT系统融入,所以一拍即合,相当融洽。

Moodle本身就有CAS认证插件,认证后从LDAP获取用户信息。配置起来并不复杂。两个比较好的参考:http://docs.moodle.org/en/admin/auth/ldaphttps://mediawiki.middlebury.edu/wiki/LIS/CASifying_Moodle

比较复杂的是和旧账号的兼容。如果能有明确的旧账号和CAS账号的对应关系,那么只要修改Moodle的user表,把username改成cas的用户名,auth改成cas就行。一个脚本,甚至几条sql语句就能搞定。

可惜我们没有这样的对应关系,必须让用户自己设定账号绑定,所以有了这个项目:https://github.com/hit-moodle/bind_cas_users。它先引导用户在CAS登录,然后让用户输入旧用户名和密码,验证通过,用户确认后,修改user表,使username为CAS用户名,auth为cas,这样用户以后直接从CAS登录就能完全继承旧账号的一切了。

这里有个难点,就是假如旧用户名是user1,CAS用户名是user2,而Moodle还有一个用户名是user2的用户。如果user1在user2之前做绑定,那么无法修改username。

解决方法是把所有旧用户名统一加上后缀“.local”(先要确认没有用户已经用过这个后缀),本地验证时自动在用户输入的用户名后加上“.local”。这样改username就不会发生冲突。下面这条SQL语句就是做这个的

提前若干天发出账号切换通知,让大家先去CAS激活账号,同时在小范围测试账号绑定程序。

在直接用cas登录时,假如moodle中并没有该用户的记录,会直接创建一个新用户。这导致,如果一个cas登录了的用户,没有去做账号绑定,直接点击了cms的任意要求登录的页面,那么他就在cms中有了一个和cas对应的新账号,而旧账号无法和新账号绑定了。这个问题的解决靠下面这个补丁:

挑一个夜黑风高的晚上,关站完成以上过程。大家一觉醒来,就都必须都用CAS登录了。

Moodle的cas登录插件还兼容其它登录方式。在其配置中设置好后,在登录界面会显示两个选择:CAS登录、其它登录。因为cms还有很多校外用户,以及cas中还没有考虑校园访客的情况,所以我们保留了原有的email认证(用户名加了后缀)。CAS登录会先判断用户是否已经在cas中登录了。如果是,就直接以其身份登录;如果否,才显示选择登录方式的界面。

另外,auth/cas/cas_ldap_sync_users.php是需要放在cron中的脚本,但没有转换完所有账号前千万不要运行。它会直接在moodle创建ldap中的所有用户,而不会进行任何账号关联操作。一旦运行,再想让用户能继承旧数据就比较麻烦了。

把自己的错误设成密码

密码要常换才安全;犯过的错误要牢记才能进步。前者总是懒得换;后者总容易忘记。所以,结合起来,把自己的错误设成密码!

第一次这么做是沉迷于bbs灌水时,就是戒不掉。于是把密码设成提醒自己别灌水、好好学习的句子,然后每次登bbs输密码时都特愧疚,很快就戒掉了灌水的毛病(改潜水了,-_-!!)。

还有一次领导问我认识几年了,我居然一下子忘记日子了。大罪过,马上把这个日子设成密码(当然得做足够的变形,比如用字母o代替数字0等等),然后再也忘不掉了。

还有一次和领导大吵架。吵完的结果是让我意识到自己性格中的一个缺陷。于是这个缺陷成了我的新密码,天天提醒我……

今天下出租车没摸兜,结果手机丢了。这事儿就是俺的最新密码了!

Moodle招勤工助学人员两名

主要工作:
  1. 参与学校Moodle网站的维护和开发工作
  2. Moodle文档和界面的汉化工作(可选)
要求:
  1. 必须是计算机学院在读本科生
  2. 最常用的信箱是gmail
  3. 有热情和责任心
  4. 已经具有一定的LAMP开发经验
  5. 每周工作至少10小时(超出时间不付薪)
  6. 生活有困难的同学优先
待遇:
  1. 每月补助300元人民币
  2. 锻炼LAMP技术
  3. 锻炼对git的使用
  4. 所做工作有机会被全校师生,甚至更远的人使用

有意者联系sunner@gmail.com,随信一定要有能打动人的文字。

使用Moodle的四层境界

一件工具是否是革命性的,要看它能否让我们已经习惯了的事物发生变化。“革命性”是否能发挥出来,要看使用者是否乐于去拥抱变化。比如iPhone,革命性已经毋容置疑,但不少拥有者只是喜欢炫耀它的外观,从来不用打电话、发短信以外的功能,那么这种“革命性”在他身上绝对不会体现。这样的人往往还会故作谦虚,其实是装牛X地说:“真没觉得这苹果手机有啥特别的”。Moodle也在遭遇这样的境遇。

本文的目的是想帮助初识或者不识Moodle的人一步步了解它到底能给我们带来什么。文中观点相信对blackboard、sakai、claronline等其它课程管理系统(CMS)或学习管理系统(LMS)一样适用。

第一层:资源发布

这一层是使用Moodle的第一步,也是很多人接受Moodle的最初原因。发布的资源主要两类:课件等资料,关于课程的信息和通知。

经常能见到教师通过博客和ftp等发布课件;没有博客或ftp的教师,会注册一个公共邮箱,把密码告诉学生,让大家到信箱下载;QQ群也是很多教师向学生发布信息和文件的基地。从这一点看,对信息化教学的需求其实是很巨大的。

上面这些手段没有一个是专门为课程设计的,所以总会遇到各种不便,比如不易查找、容量限制、密码被改、信件被删、不易重复利用等等。尽管诸多不便,很多教师仍能自觉坚持使用,很令人感动。

Moodle是专为课程设计,所以它更方便。除了完全克服上述缺点,还能轻易控制可见范围,更新、维护方便等等。基本上做一次,就可以用百次。

第二层:收取作业

网络相对传统媒体的一大优势就是信息能双向流动。开始在网上收作业,这个优势就开始被利用了。

收作业的需求也不少。最早,就是这个需求驱使我去寻找合适的系统,进而开始建设乐学网。在此之前,曾经用email收作业一次,其它很多教师也用过email。当课程的学生数不多时,用email收作业也还算不错。但学生数较多时,email附件的下载、整理,回信确认,信件丢失,迟发作业,以及没发还是丢失的扯皮,是能让教师疯掉的。

Moodle有专门的作业模块,将这一切轻松化解。作业在线布置,学生在线提交,超过截止时间自动关闭提交功能,教师在线浏览作业、评分、写评语,学生即时收到反馈,成绩自动归档统计,作业文件可以可以永久保存……

第三层:交互

老师讲,学生听,那不叫交互,甚至连“交流”都算不上。课堂是个很好的、不可被完全替代的交互场所,但它的时间与空间都是严重受限的。网络可以完全打破时间与空间的界限,实现无时无刻、无所不在的交互。

如果教师和学生,以及学生和学生之间能在QQ群讨论关于课程的问题,那么QQ群也是一个便捷交互式教学的场所。但它毕竟是为聊天设计,形式过分活泼,交流又只限于在线的人群,回顾旧话题非常不便。

Moodle中也有类似QQ群的聊天室,可以开展实时在线答疑。也有点对点的消息系统,可以单对单地沟通。但对教学最有突破意义的,是“讨论区”。

讨论区就是我们常用的论坛、bbs。每门课程都可以根据需要建立多个讨论区,对应不同的话题。缺省只能课程成员参与讨论,也可以限制只有课程成员才能看到帖子。不管你在线、不在线,看帖、不看帖,帖子都在那里,回复也都在那里,随时可以看到。精华的讨论可以永久保留,让一代代的学生受益。还能给好帖子打分,成绩可以记入课程成绩。我写过一篇专门的文章《moodle里如何活跃讨论区》,值得感兴趣的人参考。

第四层:协作

这是我能理解到的,使用Moodle的最高境界。但很可惜,这一层我暂时还没有做到,贡献不出第一手的感受。

据我了解,Moodle最有代表性的两个协作功能是Wiki和互动评价(Workshop)。

Wiki是一个类似维基百科的功能。在其中,学生可以彼此合作(当然,教师也可以参与),共同在线撰写文档,实现高效的协作。曾见过国外使用它的案例,用Wiki教小学生写作,效果特别好。

互动评价强调的不是共同完成一件事,而是通过互相评分达到共同提高的目的,同时还能节约教师时间。它的后台算法会尽量避免故意给高分或低分的情况,尽量只保留客观的评分。围绕它,甚至还有很多高水平的教学论文发表,比如这个,还有这个

总结

网络是个革命性的工具,基于网络的课程管理系统对教学是个革命性的工具。所有革命被广泛接受都需要一定的时间。让我们慢慢来,一层层地做,在Moodle中,潜移默化地改变我们的教学手段和方法,进而改变我们的教学思维。改变的过程中也许会有些许的阵痛,但最后的结果一定是皆大欢喜的!

用rdesktop映射本地打印机到远程的要点

Linux端:

  1. rdesktop一定要用“-5”参数。只有RDP5才支持打印机映射
  2. rdesktop映射打印机的参数“-r printer:hp-LaserJet-1010=”HP 1010″”。其中hp-LaserJet-1010必须是Linux上安装的打印机的名字。”HP 1010″可随便起名,貌似是远程Windows看到的打印机名

Windows端:

  1. 貌似不会自动搜索到这个打印机,需要手工添加
  2. 添加打印机->添加本地打印机,在端口中找TS00x这样名的,后面括号里跟着你的Linux主机名和PRN1,然后下一步,选驱动就行了。

rdesktop的代码库最近很长时间一直在更新,但是始终没有发布新版本。可气的是作者把代码树里的Makefile删了,想自己编译一个尝鲜都不能。热烈盼望beta啊!

回某学院书记的一封信

某老师,您好

收到来信非常惊喜,但因为一直不方便静下来写回信,所以回信较晚,不要介意。

那次在教学会上发言,我知道可能是我唯一的机会在这么多同事面前表达自己对教学的看法,所以我让自己一定要如实、真切地表达,甚至不惜把自己完全放到所有人的对立面。虽然最后时刻我还是有所收敛,一些狠话没有直接说出来,只做了一些表露,但从结果看还是吓到或惹恼了不少人。但让我颇惊喜和高兴的是,那以后,又认识了很多像您这样的人。你们的支持让我很踏实,你们所做的彻底消灭了我的孤独感。

以前不认识你,所以搜了一下你的资料,得知是某学院副书记,是领导。这里我想说说领导的坏话。我觉得中国的问题……还是别说那么大的,就只说工大吧。问题就全在于领导身上。领导们首先想的是往上爬,而能决定他们能否爬上去的,是上层领导。普通教师也在这个阶梯中,其下面是学生。每一层的人,都很少越级往下看,所以大家做事情第一考虑的就是让自己的上级满意,然后是别把自己的下级惹毛闹事。于是乎,能让领导开心的,虚的,甚至虚假的事情、工作,甚嚣尘上,而对底层好却显示度不高的事情就没人做,或做了也得不到回报。我并不想打击一大片。肯定有领导是做了实事的,但只要他想继续升迁,就绝对不能把让下属满意当做第一原则。

我也知道有些领导对各种事情也看不过眼,也在想办法做改变。他们只是不得不暂时委曲求全,以图获得更高的权力,才能去做更大的事情。但不管他们升得多高,都会有挥之不去的掣肘。而且,在这套氛围中折腾得久了,得益多了,慢慢的也就同化了。等到获得改变的机会时,可能反倒会去维护了。

所以,我对领导层来策动真正的改革,已经失去信心了。于是,我要做一个尝试,看看凭一介布衣之力,以让学生满意为一切前提,到底能将事情做成什么样子。在最开始时,我真的是抱着必死决心的。当然,这个“死”,不过就是被学校开除而已。

对实验报告中的教条的抵制,是我所做尝试的一部分。我知道同事和学生们都多反对这些教条。诚然,确实有些人反对它,是为了偷懒。但,也有很多教师和学生,是很认真对待实验的,却要为了满足这些教条而多耗费心力。这些心力的耗费对教学效果不仅没有半点贡献,反倒可能起反作用。可是,所有人都怕让领导不高兴,于是就都不得不一边抱怨,一边装修。

我就是不装修,我就是要拿实际效果说话,我就要看看这样到底能获得什么结果。我很希望有个好的结果,这样就能让更多教师放心、坦然、专心地做有实效的事情,不用再刻意迎合领导。

我已经留校8年多,这份尝试做了也有8年了。目前为止,效果都是很好,真的。不仅学生满意,学院里的领导也一样很满意。真是难为领导们了,感谢他们对我的纵容,甚至包庇。他们的支持,最终让我获得在全校大会发言的机会,还有每年的新教师培训

有人说我是运气好,碰到了好领导。也许吧。不过,在我做这些之前,不少同事可都是在告诫我,说“领导”肯定不会开心的。从这件事看,我们可能一直都在误解领导,或者太在意领导的心情了。当我们真的放开手脚,惊喜就会呈现。

院领导对我来说是绝对的惊喜。校领导呢?是不是官越大就越谨慎呢?不知道,现在我还得不到结论,慢慢看吧。这次的实验报告事件就是我在争取的一个与高层人士直接交锋的机会,目前还没下文。那次发言,亦没有获得高层的任何反馈。至少,负面效果还未呈现,所以希望还是很大的!

谢谢来信,祝您的下属和您的上级对您都满意!:-)

P.S. 我推动了五年的乐学网最早的初衷就是让技术手段代替人力做一些繁琐、教条或无实效的事情,节约教师和学生的时间。使用后发现它更能提升教学效果。现在网上还没有贵学院的课程,在此特诚意邀请开课!详情可以随时联系我:136xxxx4426

自动同步wordpress的文章到哈工大独立博客

哈工大独立博客静悄悄地开张很久了。它的域名很惹眼,便注册了一个。稍加了解发现,这个博客在工大范围内的传播能力还是比较强的,只要你发的博文又好又和谐,被管理员推荐,就会登上今日哈工大的首页,访问量会增加不少。不过,我当然舍不得更惹眼的sunner.cn,也舍不得wordpress,所以就寻找在wordpress发文,自动同步到工大独立博客的方案。

工大独立博客支持MetaWeblog API,但可惜这个API太老了,wordpress里所有对它的插件现在都失效了。本着“编程,让生活更美好”的精神,就自己做了一个插件,把新发的文章立即也在独立博客发一份,日后修改文章也能自动同步。此外,发往独立博客的文章末尾还自动添加一条链接指向原始博文,方便读者过来留言。

插件已经用了个把月了,挺稳定,就发布出来了。地址是:https://github.com/sunner/cross-post-to-metaweblog。按照README安装就行了。

“开网考试”的设想

开卷考试大获成功之后,曾想能否“开网考试”,就是在考试过程中允许学生访问互联网。上学期和西安交大的程向前老师交流时,他也提到过类似想法。

开网考试的好处是显见的。与开卷考试相比,它提供了更广泛的信息源,检索起来更加便捷,与日后工作找资料的情形更加一致,还节约纸张。面对的最大问题是如何阻止考生网上交流。

今天早饭时偶然想起这个问题,突然想到了解决办法:

  1. 限制每台机器只能通过squid之类的代理上网
  2. 代理中严格限制POST数据大小的上限,保证正常的搜索查询同时,阻止发帖、webqq之类的可能
  3. 将所有GET和POST都日志下来,做为监考记录备案

嗯,也许能行。等什么时候给小班上课,就试试看。

这样公布成绩能比较有趣

现在考试成绩发布的官方流程是:

  1. 教师把成绩登录到教务处;
  2. 学生到教务处网站查询成绩;
  3. 如果学生对成绩有异议,向教务处提交书面查考卷申请,教务处将申请转给教师,教师回复一个“成绩无误”。

当然,如果发现错误,教师通常也是不会承认的,因为这是在向教务处承认错误啊。实际上,如果真的仔细推敲,评卷中的错误肯定不会少,无论评分错,还是算分错,都会有。

上学期,我将每道大题的分数都录入到了moodle,这样让计算机计算总分,再将成绩自动传往教务处,避免了低级错误的发生,同时还能让学生知道自己每道题的得分,从而了解自己的学习情况。但这样公布成绩却勾起了学生“找分”的欲望,一下子让我应付不过来,急忙发了篇博客《不要为了维护一个讨厌的,而去破坏一个喜欢的》,以平民意。民意是平了,但这样其实是在回避直面自己的错误的机会,不好。所以有了下面的想法:

  1. 依然在moodle公布每道大题得分
  2. 公布后留出24小时让学生提交查卷申请
  3. 申请通过支付宝提交,每笔申请只能查一道题,并要转给我<1元的钱,钱数做为和学生本人对照的密码
  4. 24小时结束后,不再接受申请,开始查卷。多给的扣掉,少给的加上

这样便有了一个弥补错误的机会;收的钱数不高,不至于造成经济问题;支付宝转账还是有点小麻烦的,能保证提交申请的基本都是认真的;收入的钱足够平衡评卷用笔的开支。

收钱方式上还可以搞些花样,比如收50元,如果成绩有变化,退回,没变化就不退。在淘宝上开个店就可以非常方便地实现这个流程。

你觉得怎么样?有啥好建议吗?

下学期一定要试试!这学期如果有同事这么玩了,一定要分享经验啊!

凭自身力量改变世事

“我最最重要的任务,是要使民众明白可以凭自身力量改变世事。”——昂山素季

2011年1月31日,《让子弹飞》终于在哈尔滨下线了。自从看完此片后,我每天早上都要用手机上的时光网客户端查一下当天哈尔滨影院的排片情况,尤其注意比较它和《非诚勿扰2》的排片数。晚上一个星期的非2,在初期排片数远超子弹,但差距逐渐减少,到后来就开始比子弹少了。这说明了子弹的旺盛战斗力。现在还没有正式的票房数字公布,只是有些消息说能超7亿,铁定成为中国史上票房最高的电影。之前的冠军是《唐山大地震》。《大地震》算不上不好,但至少《子弹》没搞什么公务员包场,而是纯靠观众自己一票一票地顶起来的。

CCTV-10的第10放映室的《2010电影回顾》中有一段评论,大意是说很多所谓国产大片都缺乏诚意,片子质量不高,只靠卖力的宣传和炒作来吸引观众,根本不在乎口碑。而中国的观众还真是钱多人傻,就算口碑不好,也非要去影院凑凑热闹,看看这片到底多糟糕。如此这样,造成各大名导更不用诚意拍片,而票房却总能节节高升。如此这样,也就能理解为什么电影质量都这么差强人意了。以张、陈、冯三位为代表的大导演,都在墨守着这条潜规则,追求省心、省力还赚钱的境界。而《让子弹飞》的出现打破了行业秩序,它既让观众明白什么样的电影才值得掏钱,也让大导演们明白怎样才能赚钱还赚名声,还让小导演们明白片子再好也得做足宣传。可以说,姜文是靠个人的追求和大胆,拉起一支队伍,改变了电影界的世事。这事儿,和管理机构的各种精神、文件、装模作样的指手画脚毫无关系。

其实这事儿非等到姜文出手才有转机,挺悲催的。我们作为观众,完全有权力用脚向那些没诚意的电影投票,但我们偏偏就是喜欢一边骂着,一边非要嚼着,觉得能充饥就心满意足了,并不奢望有上好的味道。对各种事情,我们都是这样。不满,就说,就骂,但落到实际,还是与之为伍。有人问:“为啥不做点儿什么来改变它呢?”,回答多半是:“那是领导的事。”“那为啥不去向领导反映呢?”回答是:“领导才不会搭理呢。”于是,世事依旧,每个人都在不满中寻找如何让自己的角色成为“满意”的那一方。

领导们的注意力已经都集中在做立面装修了,每个百姓只是努力让自己的屋子像个样子,但对一栋楼最关键的部分——墙体结构,谁都不关心。

我们信任或不信任领导,这都不重要。重要的是我们不信任自己,不相信凭我们自身力量就能改变世事。我们应该有这份自信的!必须有!