UX

舍得 on 九月 14th, 2011  802次浏览

舍得所知道的最早研究并揭开SMPAK神秘面纱的是m4gic童鞋,当时他画了几张图,一一讲解了smpak文件中的奥秘,现在舍得根据自己的实践,用文字来阐述一下,可让更多的人迅速熟悉其中的规律,为实现smpak文件的自由制作创造机会。 一、头部 依先后顺序: 8字节:-SMArch- 2字节:版本号,01 01 2字节:锁定标识,01 00 4字节:EntrChnk的偏移值 4字节:NameChnk的偏移值 8字节:DataChnk的标志 以上共计28字节. 严格地讲,DataChnk标志不应归入头部,因为每个数据区块都有此标志.   二、数据区DataChnk 每组数据(一个页面文件或媒体文件)占一个数据区块,每个区块前均有DataChnk标志(DataChnk标志占8字节)。   三、文件列表区EntrChnk 此区相当于SMPAK里的索引,记录了文件名和文件内容的位置和长度等信息。 标志占8个字节,后面紧跟着的文件总数,占4个字节。然后是每个文件的相关信息,其格式如下(以第1条为例):     名称偏移值1:NameChnk offset1 (4字节)     长度1(2字节)     压缩标记1:(flags,2字节,表示内容是否压缩)     数据区偏移值1:DataChnk offset1 (4字节)     数据库尺寸1(相当于长度):DataChnk size1(4字节) 总共一个文件信息占16字节,依此循环.因为有文件总数这个参数,有多少个文件,只要用一个循环,就可以把上述的各项信息一一读取出来.由名称偏移值1可得到文件名位置,加上长度1可返回文件名;通过察看压缩标记1,可判断是否要调用压缩程序;由数据区偏移值1可得到文件内容储存位置,加上尺寸可返回文件内容.   四、文件名储存区NameChnk     NameChnk标志占8字节     随后是NameChnk区的总长度,8字节,后面还有2个字节,作用不详.在这2字节后边,就是文件名列表(注意和文件列表区分开来).   如果是解包操作的话,只消将EntrChnk里的数据取出,然后分别取文件名和文件内容,写入文件就OK了.其实打包的操作正好与此相反,先把各个数据计算好,然后分别将三个区的DataChnk、EntrChnk和NameChnk加上文件头写入文件即可。遗憾的是python处理二进制文件读写颇有不便之处,不然的话,打包应该是比较容易实现的. 本文版权归舍得英语魔法学苑所有,欢迎转载,转载请注明作者和出处。谢谢! 作者:舍得 首发:舍得@学习力博客

Continue reading about SMPAK文件揭秘

舍得 on 九月 11th, 2011  3次浏览

这个语法并不是真正的“语法”,而是指SuperMemo程序内部的“语法”,是用来呈现各种题型效果的,特此说明,以免混淆。 今天舍得在iphone版的官方课程中发现了两句“新语法”,第一句是调用其它页面,第二句是调用视频,遗憾的是视频的调用目前只能在iphone版中使用,期待官方在以后更新UX版时,把这个代码给加进去。 先来看看调用页面的代码: <preview ref="4">Click here to see the tapescript.</preview> 上面这句代码的效果是,“Click here to see the tapescript.”这句话看上去像网页中的超链接,点击之后,就会调用id为4的页面,这个页面调用的时候就像一个图片一样打开,今后若想对某个页面进行引用,效果应该很不错。 语法很简单,“Click here to see the tapescript.”可以用任意文字代替。熟悉html语言的童鞋想必可以看出,这几乎是”<a href=”网址”>链接文字</a>“的翻版。只不过”网址“部分用一个id号代替而已。 再来看看视频调用的代码: <video file="b" width="490" height="266" scale-base="512" play-start="0" play-end="117,394" float="center"></video> 这跟图片调用的方式几乎是一样的。只不过多了paly-start,play-end和float参数,标签名从gfx变成了video。可惜的是UX目前还无法支持这样的语句,不然,调用视频的代码或可写得简单一些了。好在我们用object方式调用也能获得同样的效果,想想也没有什么好遗憾的了。     本文版权归舍得英语魔法学苑所有,欢迎转载,转载请注明作者和出处。谢谢! 作者:舍得 首发:舍得@学习力博客

Continue reading about SuperMemo中的“新语法”

舍得 on 五月 21st, 2011  9次浏览

在最新版SuperMemo UX(1.4.10.8)中导入以往版本(SuperMemo2006或2008)的词库很是简单,方法如下: 1.打开SuperMemo2008的"文件->导出->XML文件"菜单: 2.保持默认选项不变: 3.设定路径和文件名: 4.导出成功后,切换到SuperMemo UX界面,点击主界面中的add命令: 5.在"Select a course”窗口中点击”Create”按钮: 6.在"New course”窗口输入新课程的名称,然后勾选"Import pages”、“Import pages from SuperMemo 2006(*.xml)” 7.点击"Import pages from SuperMemo 2006(*.xml)”窗口中的"Select"按钮: 8.选择刚才导出的XML文件,点击"打开"按钮继续: 9.导入成功,如图所示: 如此便可以在UX课程中学习了!   本文版权归舍得英语魔法学苑所有,欢迎转载,转载请注明作者和出处。谢谢! 作者:舍得 首发:舍得@学习力博客

Continue reading about SuperMemo UX新手指南之如何导入SM2006/08的词库

舍得 on 十二月 7th, 2010  8次浏览

自从用上Michal Czerwinski(全名叫迈可.什么瘟死鸡,真想不明白孩子他爹怎么取的名,以下称迈可)制作的SuperMemo UX插件后就喜欢上了它,后来还专门将它汉化了,说心里话,这个小插件确实给我们使用SuperMemo UX带来了很多的方便。6月份的时候,有童鞋问到能否给录音加快捷键,当时特意给迈可发了封邮件,结果被迈可给收编到他的项目组里去了。 迈可发信给我说,你先尝试着自己编译一下工程文件,可惜的是舍得对C#是七窍才通了六窍,还有一窍没通。下载了SharpDevelop、VS2008着手编译,通通无济于事。后来事情一忙,就把这个给搁下了。 最近老看到《 关于UX插件功能的拓展》这个帖子被顶起,于是上迈可的小站看了一下,居然看到迈可在前一天更新了源代码,呵呵,下载下来,用SharpDevelop编译,居然说版本不够高。干脆昨天晚上开了一夜机子,从网上拖了一个VS2010下来,上午有点空的时候开始编译,还是不行。 不过这次编译时出的结果不一样,我在看编译错误信息提示的时候发现,迈可这家伙居然把输出路径写成了"program file (x86)\SuperMemo UX",这哪行呢。一检查发现每个项目文件的路径都不对,逐一修改之。再继续编译,还是不行。经过几番折腾终于一一排除故障,编译出了一个勉强能运行的版本。 总结一下迈可提供的源代码在编译时的注意事项: 1.各个子文件夹下的项目文件中,要把 “%28×86%29”删除掉(会出现“(x86)”); 2.源代码文件夹要放在UX的Plugins文件夹下; 3.Plugins文件夹下面要放一个ManagedInjector.dll文件。4.根据错误提示逐一排除那些编码不正确导致无法正常编译的文件,通常是CS文件,因为迈可用了波兰文,所以这个别文件用的是西欧ISO的编码,会导致换行或无“}”的错误,需要一个个修改掉; 编译后可看到版本信息,就是拿迈可最新发布的源代码编译的。 编译出来的文件倒是能运行了,但还是存在很多的问题(也有舍得转换编码时造成的问题),需要一一排查解决。 不过听说m4gic也编译了一个版本,他的版本可能会比舍得的完善一些。   Technorati 标签: SuperMemo,UX,学习,插件,使用,舍得英语   本文版权归舍得英语魔法学苑所有,欢迎转载,转载请注明作者和出处。谢谢! 作者:舍得 首发:http://blog.sina.com.cn/learningpower

Continue reading about 【SuperMemo UX插件】泪牛满面,首次成功编译UX插件