<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Hello World &#187; moodle_dev</title>
	<atom:link href="http://blog.sunner.cn/tag/moodle_dev/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.sunner.cn</link>
	<description>孙志岗的博客</description>
	<lastBuildDate>Fri, 03 Feb 2012 03:13:01 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
<atom:link rel="hub" href="http://pubsubhubbub.appspot.com"/><atom:link rel="hub" href="http://superfeedr.com/hubbub"/>		<item>
		<title>Moodle 2.x过滤器不能正确链接中文活动名的补丁</title>
		<link>http://blog.sunner.cn/moodle-2-filter-chinese/</link>
		<comments>http://blog.sunner.cn/moodle-2-filter-chinese/#comments</comments>
		<pubDate>Wed, 17 Aug 2011 03:44:51 +0000</pubDate>
		<dc:creator>Sunner</dc:creator>
				<category><![CDATA[NULL]]></category>
		<category><![CDATA[moodle_dev]]></category>

		<guid isPermaLink="false">http://blog.sunner.cn/?p=1023</guid>
		<description><![CDATA[补丁在此。 Moodle 2的过滤正则只考虑了欧洲语系带注音的字符，没有考虑亚洲的不用空格分词的语言，导致过滤器失效。这个补丁能解决亚洲语言的问题，但也让欧洲语系失效。两全其美的解决方案我不知道，因为我不懂欧洲语系的正则，就像Moodle开发者不懂中文正则一样。]]></description>
			<content:encoded><![CDATA[<p><a href="https://github.com/hit-moodle/moodle/commit/b67f716ca5b33b9259d00220cbbecec43c46f62e">补丁在此</a>。</p>
<p>Moodle 2的过滤正则只考虑了欧洲语系带注音的字符，没有考虑亚洲的不用空格分词的语言，导致过滤器失效。这个补丁能解决亚洲语言的问题，但也让欧洲语系失效。两全其美的解决方案我不知道，因为我不懂欧洲语系的正则，就像Moodle开发者不懂中文正则一样。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sunner.cn/moodle-2-filter-chinese/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>支持Moodle 2.0的在线评测2.0开始公开测试了</title>
		<link>http://blog.sunner.cn/online-judge-2-0-for-moodle-2-0/</link>
		<comments>http://blog.sunner.cn/online-judge-2-0-for-moodle-2-0/#comments</comments>
		<pubDate>Mon, 27 Jun 2011 14:17:30 +0000</pubDate>
		<dc:creator>Sunner</dc:creator>
				<category><![CDATA[NULL]]></category>
		<category><![CDATA[moodle_dev]]></category>
		<category><![CDATA[onlinejudge]]></category>

		<guid isPermaLink="false">http://blog.sunner.cn/?p=1000</guid>
		<description><![CDATA[项目主页、下载地址、安装说明等都在：https://github.com/hit-moodle/moodle-local_onlinejudge 它并不是1.x的简单升级，而是完全的redesign，和近乎完全的recode。主要改进： 架构上分成三个部分：judgelib、judge和client。 judgelib是一个函数库，以local插件的形式安装到moodle中，对外提供评测接口 judge是judgelib的子插件，可以叫做评测引擎插件。现在支持sandbox和ideone.com两种引擎，还可以扩展到更多 client是和最终用户交互的插件，它对用户提供界面，对内调用judgelib做评测。现在只有一个作业类型插件，还可以扩展更多，比如测验插件、活动插件等等 作业插件支持多文件编程（仅限sandbox） 管理员可以设置一些全局设置 教师可以设定自己的ideone.com账号，避免了免费账号判题次数的问题，还能通过ideone.com管理学生的程序 可以一次只重新评判一名学生 暂时还未完成的1.x的功能包括： 显示学生程序的输出给教师。这个功能将改进成显示更详细的程序运行信息 代码加亮预览。因为moodle 2.0的变化，这个实现起来稍微有些麻烦，正在寻找最好的解决办法 1.x用户将moodle升级到2.0后，可以直接升级online judge 2.0，原有作业都会被继承保留。 欢迎测试！发现任何问题，有任何意见和建议，都请在项目主页的issues中提出。多谢！ 另外，后续版本的发布可能不会再通过博客等媒体宣布，请在github上watch本项目，以便随时了解最新动态。 再另外： 热点提问支持moodle 2.0的版本早已经在了，而且可以算是稳定版，欢迎使用 支持Moodle 2.0的MOSS反抄袭将是接下来的开发焦点。现在的代码还很惨不忍睹，很不建议试用，不信可以在github上看看 最后：诚征志愿者帮我们解决各种issue，详见《志愿者指南》]]></description>
			<content:encoded><![CDATA[<p>项目主页、下载地址、安装说明等都在：<a href="https://github.com/hit-moodle/moodle-local_onlinejudge">https://github.com/hit-moodle/moodle-local_onlinejudge</a></p>
<p>它并不是1.x的简单升级，而是完全的redesign，和近乎完全的recode。主要改进：</p>
<ol>
<li>架构上分成三个部分：judgelib、judge和client。
<ol>
<li>judgelib是一个函数库，以local插件的形式安装到moodle中，对外提供评测接口</li>
<li>judge是judgelib的子插件，可以叫做评测引擎插件。现在支持sandbox和ideone.com两种引擎，还可以扩展到更多</li>
<li>client是和最终用户交互的插件，它对用户提供界面，对内调用judgelib做评测。现在只有一个作业类型插件，还可以扩展更多，比如测验插件、活动插件等等</li>
</ol>
</li>
<li>作业插件支持多文件编程（仅限sandbox）</li>
<li>管理员可以设置一些全局设置</li>
<li>教师可以设定自己的ideone.com账号，避免了免费账号判题次数的问题，还能通过ideone.com管理学生的程序</li>
<li>可以一次只重新评判一名学生</li>
</ol>
<p>暂时还未完成的1.x的功能包括：</p>
<ol>
<li>显示学生程序的输出给教师。这个功能将改进成显示更详细的程序运行信息</li>
<li>代码加亮预览。因为moodle 2.0的变化，这个实现起来稍微有些麻烦，正在寻找最好的解决办法</li>
</ol>
<p>1.x用户将moodle升级到2.0后，可以直接升级online judge 2.0，原有作业都会被继承保留。</p>
<p>欢迎测试！发现任何问题，有任何意见和建议，都请在项目主页的<a href="https://github.com/hit-moodle/moodle-local_onlinejudge/issues">issues</a>中提出。多谢！</p>
<p>另外，后续版本的发布可能不会再通过博客等媒体宣布，请在github上watch本项目，以便随时了解最新动态。</p>
<p>再另外：</p>
<ol>
<li><a href="https://github.com/hit-moodle/moodle-mod_hotquestion">热点提问支持moodle 2.0的版本</a>早已经在了，而且可以算是稳定版，欢迎使用</li>
<li>支持Moodle 2.0的MOSS反抄袭将是接下来的开发焦点。现在的代码还很惨不忍睹，很不建议试用，不信可以在github上看看</li>
</ol>
<p>最后：<span style="color: #ff0000;">诚征志愿者帮我们解决各种issue</span>，详见《<a href="https://github.com/hit-moodle/moodle/wiki/HIT-Moodle%E5%BF%97%E6%84%BF%E8%80%85%E6%8C%87%E5%8D%97">志愿者指南</a>》</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sunner.cn/online-judge-2-0-for-moodle-2-0/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>庆祝Moodle 2.0中文包翻译率达到80%，冲入第一阵营</title>
		<link>http://blog.sunner.cn/moodle-zh-cn-to-80-percent/</link>
		<comments>http://blog.sunner.cn/moodle-zh-cn-to-80-percent/#comments</comments>
		<pubDate>Thu, 28 Apr 2011 04:45:36 +0000</pubDate>
		<dc:creator>Sunner</dc:creator>
				<category><![CDATA[NULL]]></category>
		<category><![CDATA[moodle_dev]]></category>

		<guid isPermaLink="false">http://blog.sunner.cn/?p=939</guid>
		<description><![CDATA[在提交了剑晖的#1142贡献后，Moodle 2.0中文包的翻译率终于达到了80%，冲入第一阵营。记得去年9月份翻译协作网刚开通时，只有50%多一点儿翻译率。半年多的时间，326次提交，15位志愿贡献者，完成了大量的翻译和修订工作。贡献者名单如下（排名不分先后）： 邢林林 陶显锋 Zhou Joe zhang angel 王帅 Xie Yubo Jin Ping Gao Jiayang Fu Jianyu 田大龙 Lee Edward Zhao Chonke Zhang Lei 剑晖 Sun Zhigang 感谢他们！期待100%时，贡献者名单里能有您的名字！]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.sunner.cn/wp-content/uploads/2011/04/moodle-zh-cn-80.png"><img class="aligncenter size-full wp-image-940" title="moodle-zh-cn-80" src="http://blog.sunner.cn/wp-content/uploads/2011/04/moodle-zh-cn-80.png" alt="" width="928" height="170" /></a></p>
<p>在提交了剑晖的#1142贡献后，Moodle 2.0中文包的翻译率终于达到了80%，冲入第一阵营。记得去年9月份<a href="http://lang.moodle.org">翻译协作网</a>刚开通时，只有50%多一点儿翻译率。半年多的时间，326次提交，15位志愿贡献者，完成了大量的翻译和修订工作。贡献者名单如下（排名不分先后）：</p>
<ul>
<li>邢林林</li>
<li>陶显锋</li>
<li>Zhou Joe</li>
<li>zhang angel</li>
<li>王帅</li>
<li>Xie Yubo</li>
<li>Jin Ping</li>
<li>Gao Jiayang</li>
<li>Fu Jianyu</li>
<li>田大龙</li>
<li>Lee Edward</li>
<li>Zhao Chonke</li>
<li>Zhang Lei</li>
<li>剑晖</li>
<li>Sun Zhigang</li>
</ul>
<p>感谢他们！期待100%时，贡献者名单里能有您的名字！</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sunner.cn/moodle-zh-cn-to-80-percent/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Moodle用户认证切换到CAS+LDAP笔记</title>
		<link>http://blog.sunner.cn/chang-moodle-auth-to-cas-ldap/</link>
		<comments>http://blog.sunner.cn/chang-moodle-auth-to-cas-ldap/#comments</comments>
		<pubDate>Thu, 31 Mar 2011 01:41:08 +0000</pubDate>
		<dc:creator>Sunner</dc:creator>
				<category><![CDATA[NULL]]></category>
		<category><![CDATA[moodle_dev]]></category>

		<guid isPermaLink="false">http://blog.sunner.cn/?p=885</guid>
		<description><![CDATA[cms以前用的是email认证，用户自己填个人信息。过程繁琐，信息不准，相当折腾。偶然获知信息处正在做统一认证平台（CAS），就联系了一下，他们也正希望能有其它IT系统融入，所以一拍即合，相当融洽。 Moodle本身就有CAS认证插件，认证后从LDAP获取用户信息。配置起来并不复杂。两个比较好的参考：http://docs.moodle.org/en/admin/auth/ldap，https://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中的所有用户，而不会进行任何账号关联操作。一旦运行，再想让用户能继承旧数据就比较麻烦了。]]></description>
			<content:encoded><![CDATA[<p>cms以前用的是email认证，用户自己填个人信息。过程繁琐，信息不准，相当折腾。偶然获知信息处正在做<a href="http://my.hit.edu.cn">统一认证平台</a>（CAS），就联系了一下，他们也正希望能有其它IT系统融入，所以一拍即合，相当融洽。</p>
<p>Moodle本身就有CAS认证插件，认证后从LDAP获取用户信息。配置起来并不复杂。两个比较好的参考：<a href="http://docs.moodle.org/en/admin/auth/ldap" target="_blank">http://docs.moodle.org/en/admin/auth/ldap</a>，<a href="https://mediawiki.middlebury.edu/wiki/LIS/CASifying_Moodle" target="_blank">https://mediawiki.middlebury.edu/wiki/LIS/CASifying_Moodle</a>。</p>
<p>比较复杂的是和旧账号的兼容。如果能有明确的旧账号和CAS账号的对应关系，那么只要修改Moodle的user表，把username改成cas的用户名，auth改成cas就行。一个脚本，甚至几条sql语句就能搞定。</p>
<p>可惜我们没有这样的对应关系，必须让用户自己设定账号绑定，所以有了这个项目：<a href="https://github.com/hit-moodle/bind_cas_users">https://github.com/hit-moodle/bind_cas_users</a>。它先引导用户在CAS登录，然后让用户输入旧用户名和密码，验证通过，用户确认后，修改user表，使username为CAS用户名，auth为cas，这样用户以后直接从CAS登录就能完全继承旧账号的一切了。</p>
<p>这里有个难点，就是假如旧用户名是user1，CAS用户名是user2，而Moodle还有一个用户名是user2的用户。如果user1在user2之前做绑定，那么无法修改username。</p>
<p>解决方法是把所有旧用户名统一加上后缀“.local”（先要确认没有用户已经用过这个后缀），本地验证时自动在用户输入的用户名后加上“.local”。这样改username就不会发生冲突。下面这条SQL语句就是做这个的<br />
<script src="https://gist.github.com/909029.js?file=append_suffix_to_username.sql"></script><br />
提前若干天发出账号切换通知，让大家先去CAS激活账号，同时在小范围测试账号绑定程序。</p>
<p>在直接用cas登录时，假如moodle中并没有该用户的记录，会直接创建一个新用户。这导致，如果一个cas登录了的用户，没有去做账号绑定，直接点击了cms的任意要求登录的页面，那么他就在cms中有了一个和cas对应的新账号，而旧账号无法和新账号绑定了。这个问题的解决靠下面这个补丁：</p>
<p><script src="https://gist.github.com/909040.js?file=ask_before_creating_cas_users.patch"></script></p>
<p>挑一个夜黑风高的晚上，关站完成以上过程。大家一觉醒来，就都必须都用CAS登录了。</p>
<p>Moodle的cas登录插件还兼容其它登录方式。在其配置中设置好后，在登录界面会显示两个选择：CAS登录、其它登录。因为cms还有很多校外用户，以及cas中还没有考虑校园访客的情况，所以我们保留了原有的email认证（用户名加了后缀）。CAS登录会先判断用户是否已经在cas中登录了。如果是，就直接以其身份登录；如果否，才显示选择登录方式的界面。</p>
<p>另外，auth/cas/cas_ldap_sync_users.php是需要放在cron中的脚本，但没有转换完所有账号前千万不要运行。它会直接在moodle创建ldap中的所有用户，而不会进行任何账号关联操作。一旦运行，再想让用户能继承旧数据就比较麻烦了。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sunner.cn/chang-moodle-auth-to-cas-ldap/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>假期第一周工作总结</title>
		<link>http://blog.sunner.cn/first-week-in-2011-winter-holiday/</link>
		<comments>http://blog.sunner.cn/first-week-in-2011-winter-holiday/#comments</comments>
		<pubDate>Sun, 30 Jan 2011 13:43:00 +0000</pubDate>
		<dc:creator>Sunner</dc:creator>
				<category><![CDATA[教书匠]]></category>
		<category><![CDATA[moodle_dev]]></category>

		<guid isPermaLink="false">http://blog.sunner.cn/?p=845</guid>
		<description><![CDATA[这一周的主题，就是Moodle 2.0。 赶在临放假前，将cliff调好的服务器送入了网络中心，指导服务器的技术支持人员将其成功上架。因此错过了科研研讨会第一天精彩的下半场。 科研研讨会第二天中午接到数学系一名教师的电话，于是前去介绍Moodle，就又错过了第二天精彩的下半场。但愿这趟没白跑吧。 将老cms上的数据库和用户文件拷贝到新服务器。太多零碎文件了，打包和解包都耗费了数个小时。传输按理说应该很快，但一个机房里都是千兆接入的两台机器平均速度还到不了10MB/s…… 1.9升到2.0勉强算顺利，遇到一个bug，但官方旋即就修正了。 开始测试和开发： 简单修改了几个缺省参数，可以让新用户直接启用AJAX功能、跟踪讨论区未读帖子和不自动订阅讨论区。 做了个可以用中文全名搜索用户的补丁，顺手pull-request给dongsheng，讨论一番，决定做个更好的。 报了一个小bug，也做了小补丁，但skodak看我的补丁时发现原来的代码有严重安全问题，并没有直接用我的补丁，而是做了新的。留个名的念头破灭。 和dongsheng讨论后，做了个比较大的补丁，可以更好地支持各种语言的用户全名搜索。提交到moodle tracker，等待发落中…… 又报了个moodle和nginx配合的bug，被skodak指出是我们自己配置的问题。耽误他时间了，很不好意思。希望这条信息能对后来人有帮助吧。 做了一个更好地处理姓、名顺序的补丁，如果全名搜索的补丁被接受，就再PULL一下这个。 把中文姓氏检索用户的补丁移植到了2.0。这个太中国化了，不可能给官方。 git和github.com真好用啊！！！！ 另外就是moodle 2.0的翻译工作。把中文包的翻译率从70%提升到了73%，大概新翻译了有500多条吧（感谢王帅朋友贡献的5条），修正的也好多，数量就没有统计了。 做这些很有成就感，很快乐，欲罢不能。但下周不能再干这个了，得写tmd的论文了，还有tmd的NSFC，过tmd年，开始tmd的生活。TMD！]]></description>
			<content:encoded><![CDATA[<p>这一周的主题，就是<a href="http://docs.moodle.org/en/Moodle_2.0_release_notes">Moodle 2.0</a>。</p>
<p>赶在临放假前，将cliff调好的服务器送入了网络中心，<strong>指导</strong>服务器的技术支持人员将其成功上架。因此错过了科研研讨会第一天精彩的下半场。</p>
<p>科研研讨会第二天中午接到数学系一名教师的电话，于是前去介绍Moodle，就又错过了第二天精彩的下半场。但愿这趟没白跑吧。</p>
<p>将老<a href="http://cms.hit.edu.cn">cms</a>上的数据库和用户文件拷贝到新服务器。太多零碎文件了，打包和解包都耗费了数个小时。传输按理说应该很快，但一个机房里都是千兆接入的两台机器平均速度还到不了10MB/s……</p>
<p>1.9升到2.0勉强算顺利，遇到一个bug，但官方旋即就修正了。</p>
<p>开始测试和开发：</p>
<ol>
<li>简单<a href="https://github.com/hit-moodle/moodle/commit/92a7bae2ed261bcda28b88a89db12ba36d439a7a">修改了几个缺省参数</a>，可以让新用户直接启用AJAX功能、跟踪讨论区未读帖子和不自动订阅讨论区。</li>
<li>做了个可以<a href="https://github.com/hit-moodle/moodle/commit/d73ff9d3aa82aa14902ea94f1e1f6ab7252c58ab">用中文全名搜索用户的补丁</a>，顺手pull-request给<a href="https://github.com/dongsheng">dongsheng</a>，<a href="https://github.com/dongsheng/moodle/issues/closed#issue/1">讨论一番</a>，决定做个更好的。</li>
<li>报了<a href="http://tracker.moodle.org/browse/MDL-26154">一个小bug</a>，也做了小<a href="https://github.com/hit-moodle/moodle/commit/39e898c41a546edc9c0b94719f9dcbad190ae641">补丁</a>，但skodak看我的补丁时发现原来的代码有严重安全问题，并没有直接用我的补丁，而是做了新的。留个名的念头破灭。</li>
<li>和dongsheng讨论后，做了个比较大的<a href="https://github.com/hit-moodle/moodle/commit/3856abfb97737397b859e7b1eae92bedb5326fa0">补丁</a>，可以更好地支持各种语言的用户全名搜索。提交到moodle <a href="http://tracker.moodle.org/browse/MDL-26171">tracker</a>，等待发落中……</li>
<li>又报了个moodle和nginx配合的<a href="http://tracker.moodle.org/browse/MDL-26182">bug</a>，被skodak指出是我们自己配置的问题。耽误他时间了，很不好意思。希望这条信息能对后来人有帮助吧。</li>
<li>做了一个更好地处理姓、名顺序的<a href="https://github.com/hit-moodle/moodle/commit/8bce6755c9c2e4d8f7a801163b24e2a8df9be105">补丁</a>，如果全名搜索的补丁被接受，就再PULL一下这个。</li>
<li>把<a href="http://blog.sunner.cn/2010/04/index-by-surname-in-moodle/">中文姓氏检索用户的补丁</a>移植到了<a href="https://github.com/hit-moodle/moodle/commit/e88eff7d5c806e18ce05cca5500ce58820ea735c">2.0</a>。这个太中国化了，不可能给官方。</li>
</ol>
<p>git和<a href="http://github.com">github.com</a>真好用啊！！！！</p>
<p>另外就是moodle 2.0的翻译工作。把<a href="http://download.moodle.org/langpack/2.0/">中文包</a>的翻译率从70%提升到了73%，大概新翻译了有500多条吧（感谢王帅朋友贡献的5条），修正的也好多，数量就没有统计了。</p>
<p>做这些很有成就感，很快乐，欲罢不能。但下周不能再干这个了，得写tmd的论文了，还有tmd的NSFC，过tmd年，开始tmd的生活。TMD！</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sunner.cn/first-week-in-2011-winter-holiday/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Moodle 2.0值得关注的新特性</title>
		<link>http://blog.sunner.cn/moodle-2-0-new-features/</link>
		<comments>http://blog.sunner.cn/moodle-2-0-new-features/#comments</comments>
		<pubDate>Wed, 06 Oct 2010 02:50:01 +0000</pubDate>
		<dc:creator>Sunner</dc:creator>
				<category><![CDATA[技术]]></category>
		<category><![CDATA[moodle_dev]]></category>
		<category><![CDATA[moodle_using]]></category>

		<guid isPermaLink="false">http://blog.sunner.cn/?p=585</guid>
		<description><![CDATA[2.0是Moodle历史上最大的一次升级，已经发布了RC1版，期望一个月后能正式发布。现在moodle.org就在运行Moodle 2.0，说明它已经能在开发人员的监管下稳定工作。 目前已经有三个可以公开访问的运行2.0的网站，除了moodle.org，还有lang.moodle.org（Moodle的协同翻译平台，注册后就能参与），和qa.moodle.net（公测网站，每个人都可以用管理员、教师或学生身份登录）。通过使用这三个网站，以及Release Notes，对Moodle 2.0已经有了一些感受。 视觉上的主要变化是更漂亮和方便了。2.0官方提供的主题风格的数量和质量都有很大的提升，而且主题本身还可以提供个性化的功能。比如版块不再是只能傻傻地贴在页面上，用户可以把它放到一个停靠栏里，需要的时候才弹出来，很节约空间。 “导航版块”能让用户非常方便地直接进入不同课程的不同活动。“设置版块”有上下文感知能力，会根据你所处的位置不同自动变为最相关的选项。 旧的HTML编辑器被抛弃，换用TinyMCE。它不仅对各种浏览器的支持更好，排版功能更强（比如支持layer、CSS自定义），而且支持可视化的公式编辑，这个太有必要了！ 旧的基于目录的文件管理被“容器”替代。从用户角度看，当需要使用文件的时候，只需从它所在的容器选择它。容器的种类很多，可以是自己上传的文件和目录，也可以提供一个url让moodle自己下载，还可以是从Google Docs、DropBox、Youtube等导入。当然，最主要的导入功能在中国是别指望用了。所有导入的文件都会自动和文件源保持同步。从开发者的角度看，文件不再是以目录、子目录的形式组织，而是被后台用hash一类的方法管理。好处是重复的文件会只有一份，缺点是不能再通过直接访问文件系统来处理文件了。 “活动完成状态跟踪”和“条件”对授课会很有帮助。它可以强制要求学生必须先做完某件事，才能再做另一件。比如，必须先参加一个投票，才能提交某个作业；完成作业1，才能做作业2；如果作业1得分高，可以做作业2，否则做作业3……。这个功能亦扩展到课程级别，从而开始支持先修课。 “反抄袭”功能有了内置API，既可以通过插件的方式扩充多种反抄袭手段，也让任何功能模块都可以调用反抄袭的API。看来与抄袭的斗争已经是世界性的了。 “信息反馈”模块第一次成为标准模块。用它可以自定义各种形式的调查问卷，而不像旧的“问卷调查”模块只能设置固定的几个问题。 表面的主要变化并不是很大，最重的都在后台。比如开始支持Web Service，这使得Moodle可以更好地和其它系统交互，也更便于移动客户端的开发；“备份和恢复”功能完全重写；Wiki完全重写；Workshop完全重写…… 后台的变化意味着它需要更多的测试。估计一年以后俺的乐学网就可以升级到2.0了。在此期间，得把在线评测和反抄袭做个移植。因为底层的变化太多，这个移植动作实在不小，有兴趣的欢迎加入开发！]]></description>
			<content:encoded><![CDATA[<p>2.0是Moodle历史上最大的一次升级，已经发布了<a href="http://docs.moodle.org/en/Moodle_2.0_Release_Candidate_1_release_notes">RC1版</a>，期望一个月后能正式发布。现在<a href="http://moodle.org">moodle.org</a>就在运行Moodle 2.0，说明它已经能在开发人员的监管下稳定工作。</p>
<p>目前已经有三个可以公开访问的运行2.0的网站，除了<a href="http://moodle.org">moodle.org</a>，还有<a href="http://lang.moodle.org">lang.moodle.org</a>（Moodle的协同翻译平台，注册后就能参与），和<a href="http://qa.moodle.net/">qa.moodle.net</a>（公测网站，每个人都可以用管理员、教师或学生身份登录）。通过使用这三个网站，以及<a href="http://docs.moodle.org/en/Moodle_2.0_release_notes">Release Notes</a>，对Moodle 2.0已经有了一些感受。</p>
<p>视觉上的主要变化是更漂亮和方便了。2.0官方提供的主题风格的数量和质量都有很大的提升，而且主题本身还可以提供个性化的功能。比如版块不再是只能傻傻地贴在页面上，用户可以把它放到一个停靠栏里，需要的时候才弹出来，很节约空间。</p>
<p>“导航版块”能让用户非常方便地直接进入不同课程的不同活动。“设置版块”有上下文感知能力，会根据你所处的位置不同自动变为最相关的选项。</p>
<p>旧的HTML编辑器被抛弃，换用TinyMCE。它不仅对各种浏览器的支持更好，排版功能更强（比如支持layer、CSS自定义），而且支持可视化的公式编辑，这个太有必要了！</p>
<p>旧的基于目录的文件管理被“容器”替代。从用户角度看，当需要使用文件的时候，只需从它所在的容器选择它。容器的种类很多，可以是自己上传的文件和目录，也可以提供一个url让moodle自己下载，还可以是从Google Docs、DropBox、Youtube等导入。当然，最主要的导入功能在中国是别指望用了。所有导入的文件都会自动和文件源保持同步。从开发者的角度看，文件不再是以目录、子目录的形式组织，而是被后台用hash一类的方法管理。好处是重复的文件会只有一份，缺点是不能再通过直接访问文件系统来处理文件了。</p>
<p>“活动完成状态跟踪”和“条件”对授课会很有帮助。它可以强制要求学生必须先做完某件事，才能再做另一件。比如，必须先参加一个投票，才能提交某个作业；完成作业1，才能做作业2；如果作业1得分高，可以做作业2，否则做作业3……。这个功能亦扩展到课程级别，从而开始支持先修课。</p>
<p>“反抄袭”功能有了内置API，既可以通过插件的方式扩充多种反抄袭手段，也让任何功能模块都可以调用反抄袭的API。看来与抄袭的斗争已经是世界性的了。</p>
<p>“信息反馈”模块第一次成为标准模块。用它可以自定义各种形式的调查问卷，而不像旧的“问卷调查”模块只能设置固定的几个问题。</p>
<p>表面的主要变化并不是很大，最重的都在后台。比如开始支持Web Service，这使得Moodle可以更好地和其它系统交互，也更便于移动客户端的开发；“备份和恢复”功能完全重写；Wiki完全重写；Workshop完全重写……</p>
<p>后台的变化意味着它需要更多的测试。估计一年以后俺的乐学网就可以升级到2.0了。在此期间，得把<a href="http://code.google.com/p/sunner-projects/">在线评测和反抄袭</a>做个移植。因为底层的变化太多，这个移植动作实在不小，有兴趣的欢迎加入开发！</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sunner.cn/moodle-2-0-new-features/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Moodle插件“热点提问 1.0”发布</title>
		<link>http://blog.sunner.cn/moodle-activity-module-hot-question-1-0-released/</link>
		<comments>http://blog.sunner.cn/moodle-activity-module-hot-question-1-0-released/#comments</comments>
		<pubDate>Sun, 19 Sep 2010 06:26:27 +0000</pubDate>
		<dc:creator>Sunner</dc:creator>
				<category><![CDATA[技术]]></category>
		<category><![CDATA[moodle_dev]]></category>

		<guid isPermaLink="false">http://blog.sunner.cn/?p=571</guid>
		<description><![CDATA[这可能是Moodle第一个为教室服务的插件。其设计灵感来自于普渡大学的Hotseat。 课堂互动是目前教学工作中比较强调的一件事。但中国学生的性格内敛、羞涩，在提问前经常会瞻前顾后，顾虑较多，导致提问不够踊跃，难以形成良好的互动。本插件就是为解决此问题而设计。 在“热点提问”中，学生可以像发微博一样地提问，而且可以匿名提问。还可以对别人的提问投票。教师可以根据投票结果获知学生对什么问题最感兴趣，就能更有选择性地回答学生的问题。 我已经用了两次课，效果还不错。能在上课时访问网络的学生还是不多，所以参与度目前还不算高。可以到这里围观它。 此插件可以在这里下载。这里有安装说明。]]></description>
			<content:encoded><![CDATA[<p>这可能是Moodle第一个为教室服务的插件。其设计灵感来自于普渡大学的<a href="http://www.itap.purdue.edu/tlt/hotseat/">Hotseat</a>。</p>
<p>课堂互动是目前教学工作中比较强调的一件事。但中国学生的性格内敛、羞涩，在提问前经常会瞻前顾后，顾虑较多，导致提问不够踊跃，难以形成良好的互动。本插件就是为解决此问题而设计。</p>
<p>在“热点提问”中，学生可以像发微博一样地提问，而且可以匿名提问。还可以对别人的提问投票。教师可以根据投票结果获知学生对什么问题最感兴趣，就能更有选择性地回答学生的问题。</p>
<p>我已经用了两次课，效果还不错。能在上课时访问网络的学生还是不多，所以参与度目前还不算高。可以到<a href="http://cms.hit.edu.cn/mod/hotquestion/view.php?id=2957">这里</a>围观它。</p>
<p>此插件可以在<a href="http://code.google.com/p/sunner-projects/downloads/list?q=label:hotquestion">这里下载</a>。<a href="http://code.google.com/p/sunner-projects/wiki/HotQuestionActivity">这里</a>有安装说明。</p>
<p style="text-align: center;"><a href="http://blog.sunner.cn/wp-content/uploads/2010/09/hot-question.jpg"><img class="aligncenter size-full wp-image-572" title="hot-question" src="http://blog.sunner.cn/wp-content/uploads/2010/09/hot-question.jpg" alt="" width="607" height="469" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sunner.cn/moodle-activity-module-hot-question-1-0-released/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>moodle的隐藏功能</title>
		<link>http://blog.sunner.cn/hidden-features-in-moodle/</link>
		<comments>http://blog.sunner.cn/hidden-features-in-moodle/#comments</comments>
		<pubDate>Sun, 22 Aug 2010 03:01:21 +0000</pubDate>
		<dc:creator>Sunner</dc:creator>
				<category><![CDATA[NULL]]></category>
		<category><![CDATA[moodle_dev]]></category>
		<category><![CDATA[moodle_using]]></category>

		<guid isPermaLink="false">http://blog.sunner.cn/?p=533</guid>
		<description><![CDATA[当了解到这些隐藏功能后，我不得不对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]]></description>
			<content:encoded><![CDATA[<p>当了解到这些隐藏功能后，我不得不对Moodle的喜爱又增加了一层。本文慢慢搜集它们，持续补充。</p>
<p>隐藏功能是那些在moodle界面中找不到，必须手工在地址栏输入url才能使用的功能。本文后面只给出每个url相对于moodle root的部分，比如“/foo/bar.php”意味着应该访问“http://www.mymoodle.com/foo/bar.php”。</p>
<h2>1. 系统管理</h2>
<h3><strong>1.1 数据库性能监视</strong></h3>
<p>/admin/dbperformance.php</p>
<h3>1.2 把MySQL数据库从MyISAM格式转换到InnoDB格式</h3>
<p>/admin/innodb.php</p>
<p>因为MyISAM不支持事务等缺点，从Moodle 2.0开始，InnoDB将成为官方推荐的格式。详情可以参考<a href="http://tracker.moodle.org/browse/MDL-23682">MDL-23682</a>，moodler们对MyISAM的态度几近于愤怒。</p>
<h3>1.3 体检中心</h3>
<p>/admin/health.php</p>
<p>自动检查系统潜在的问题，并给出建议性的解决方案。这个很值得每隔一段时间就用一用。</p>
<h3>1.4 全数据库替换</h3>
<p>/admin/replace.php</p>
<p>对整个moodle数据库进行文本搜索和替换。比如网站更换了域名，就可以用一下这个。</p>
<h2><strong>2.辅助开发</strong></h2>
<h3>2.1 调试发出的email</h3>
<p>把所有发出的email都重定向到一个log文件中。</p>
<p>脚本在/admin/mailout-debugger.php，但它不是从浏览器里访问的。它的注释详细说明了使用方法。</p>
<h2>3. 彩蛋</h2>
<h3>3.1 列出所有用户的头像</h3>
<p>/userpix/index.php</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sunner.cn/hidden-features-in-moodle/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Moodle Online Judge 1.3.1发布</title>
		<link>http://blog.sunner.cn/moodle-online-judge-1-3-1-released/</link>
		<comments>http://blog.sunner.cn/moodle-online-judge-1-3-1-released/#comments</comments>
		<pubDate>Sat, 22 May 2010 06:13:54 +0000</pubDate>
		<dc:creator>Sunner</dc:creator>
				<category><![CDATA[技术]]></category>
		<category><![CDATA[moodle_dev]]></category>

		<guid isPermaLink="false">http://blog.sunner.cn/?p=435</guid>
		<description><![CDATA[新特性： 支持40余种编程语言的在线评测。新语言的支持来自于ideone.com，这是一个免费的Web服务。所有程序都是在ideone.com运行，所以对您的moodle服务器而言，是相当安全。该功能由刘琦卿开发。 因为可以使用ideone.com运行程序，所以从这个版本开始支持Windows了 下载请到：http://code.google.com/p/sunner-projects/downloads/list]]></description>
			<content:encoded><![CDATA[<p>新特性：</p>
<ol>
<li>支持40余种编程语言的在线评测。新语言的支持来自于ideone.com，这是一个免费的Web服务。所有程序都是在ideone.com运行，所以对您的moodle服务器而言，是相当安全。该功能由刘琦卿开发。</li>
<li>因为可以使用ideone.com运行程序，所以从这个版本开始支持Windows了</li>
</ol>
<p>下载请到：<a href="http://code.google.com/p/sunner-projects/downloads/list">http://code.google.com/p/sunner-projects/downloads/list</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sunner.cn/moodle-online-judge-1-3-1-released/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Moodle在线评测1.2版发布</title>
		<link>http://blog.sunner.cn/moodle-online-judge-1-2-released/</link>
		<comments>http://blog.sunner.cn/moodle-online-judge-1-2-released/#comments</comments>
		<pubDate>Sat, 01 May 2010 08:01:12 +0000</pubDate>
		<dc:creator>Sunner</dc:creator>
				<category><![CDATA[技术]]></category>
		<category><![CDATA[moodle_dev]]></category>

		<guid isPermaLink="false">http://blog.sunner.cn/?p=412</guid>
		<description><![CDATA[这个版本最大的改进是不再延迟评分，而是实时评分（由计算机学院06级学生刘琦卿开发）。此外增加了把编译警告视为编译错误的功能，可以帮助学生养成更好的编程习惯。再就是一些安全增强和小修补。 该插件的详细介绍在：http://code.google.com/p/sunner-projects/wiki/OnlineJudgeAssignmentType]]></description>
			<content:encoded><![CDATA[<p>这个版本最大的改进是不再延迟评分，而是实时评分（由计算机学院06级学生刘琦卿开发）。此外增加了把编译警告视为编译错误的功能，可以帮助学生养成更好的编程习惯。再就是一些安全增强和小修补。</p>
<p>该插件的详细介绍在：<a href="http://code.google.com/p/sunner-projects/wiki/OnlineJudgeAssignmentType">http://code.google.com/p/sunner-projects/wiki/OnlineJudgeAssignmentType</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sunner.cn/moodle-online-judge-1-2-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

