2006年07月05日

[ZZ]超星中的GPL代码

原文参见b13朋友post在本站的回复
http://sitaphi.com/mt/mt-comments.cgi?entry_id=12

注:文章不代表本站观点。另,这个发现可能解释了05H的的PDG文件的来源问题。

超星涉嫌非法使用GPL代码,又一个“自主知识产权”的典范

作者:B13
本文欢迎转载


超星阅读器中涉嫌非法使用开源图形库DjVuLibre ( http://djvulibre.djvuzone.org/ )。DjVuLibre提供了高效的图像压缩格式DjVu格式的编码和解码功能。DjVuLibre的使用授权为GPL(GNU General Public License: http://www.thebigfly.com/gnu/gpl/ ),按照GPL的要求,凡是使用该软件的代码也需要开放原代码,而超星浏览器公然违反了这个授权,不但没有开放原代码,而且利用自由软件牟利。

验证超星中包含了DjVuLibre过程很简单,首先到超星主页下载最新的超星阅读器(http://www.ssreader.com/download/) 并安装。同时到
http://www.heaventools.com/download/pexsetup.exe
下载PE Explorer的试用版。安装并启动PE Explorer,在弹出的窗口中选择File(文件)\Open File(打开文件),然后浏览你的windows目录(C:\Windows)下的system32子目录下的pdg2.dll,程序会提示你是否继续,选择Continue(继续)。载入后,选择Tools(工具)菜单下的Disassembler(反汇编),然后选择Start Now(开始),PE Explorer会将程序转换为汇编代码,按Ctrl+F,查找djvu,你就会发现程序的汇编代码中有很多包含djvudocument类的字符串,而你google一下这些含有djvu的串,你就会发现他们无一例外的来自开源软件Djvulibre。包含Djvu关键字的串参见附件。

超星这种无视开源软件授权的做法是对软件作者劳动的践踏。作为国内最大的电子图书制作商,在以盈利性质的软件中使用专利图像格式djvu和开源软件无疑都是非常不明智的做法,蕴含了巨大的法律风险。

有趣的是,在超星的软件下载主页上,我们又一次看到了熟悉的“自主知识产权”字样,我们曾经在一度沸沸扬扬,最后被证实为造假的“汉芯"的宣传材料中看到过,我们也曾经在花费了8000万纳税人的税收,但后来被发现大规模抄袭FreeBSD的“麒麟操作系统”的宣传材料中看到过这个名词。而非常不幸的是这次这个名词出现的地方又一次让我们失望了。从一开始使用产生80年代产生的TIFF G4压缩格式,到后来简单更改GIF/JPEG格式后缀,到现在剽窃开源软件,使得我们一次又一次地认识到超星不但是一个没有任何技术创新能力的公司,而且商业诚信也让人怀疑。

超星中包含的GPL代码已经反馈给自由软件基金会(FSF),我们期望国内的信息产业公司遵守游戏规则,珍重自己的诚信。

下面是含有djvu字样的汇编行:

push SSZ100F0648_DjVuPort
push SSZ100F0674_DjVuDocument__start_init____init
push SSZ100F0664_document_djvu
push SSZ100F06A8_DjVuFile
push SSZ100F06EC_DjVuDocument_init_eof
push SSZ100F06D4_DjVuDocument_stopped
push SSZ100F0888_DjVuDocument__init_thread____gue
push SSZ100F0808_FORM_DJVU
push SSZ100F07A4_Got_DJVU_OLD_INDEXED_or_SINGLE_P
push SSZ100F08E0_DjVuDocument__set_file_aliases__
push SSZ100F0978_DjVuDocument__check_unnamed_file
push SSZ100F0958_DjVuDocument_miss_page_name_
push SSZ100F093C_DjVuDocument_miss_page_num_
push SSZ100F09BC_DjVuDocument__page_to_url____pag
push SSZ100F09E4_DjVuDocument__url_to_page____url
push SSZ100F0A08_DjVuDocument__id_to_url____trans
push SSZ100F0AB4_DjVuDocument__url_to_file____url
push SSZ100F06A8_DjVuFile
push SSZ100F06A8_DjVuFile
push SSZ100F0A58_found_internal_file_using_DjVuPo
push SSZ100F0AD8_DjVuSimplePort
push SSZ100F0648_DjVuPort
push SSZ100F0B60_DjVuDocument__get_djvu_file____r
push SSZ100F06A8_DjVuFile
push SSZ100F0AE8__djvu
push SSZ100F0B94_djvufileurl____p__s
push SSZ100F0BB8_DjVuDocument__get_djvu_file____I
push SSZ100F0BDC_DjVuDocument
push SSZ100F0648_DjVuPort
push SSZ100F0BEC_DjVuDocument__get_djvu_file____U
push SSZ100F0C14_DjVuDocument__get_page____reques
push SSZ100F0C60_DjVuDocument_cant_extract_
push SSZ100F0C90_DjVuDocument__get_thumbnail____p
push SSZ100F0CBC_DjVuDocument__add_to_cache____ur
push SSZ100F0DB0_DjVuDocument__request_data____se
push SSZ100F0D54_Found_tmp_unnamed_DjVuFile__Retu
push SSZ100F0EC0_DjVuDocument__get_djvm_doc____cr
push SSZ100F0EFC_DjVuDocument__write____storing_D
push SSZ100F0EFC_DjVuDocument__write____storing_D
push SSZ100F0F34_DjVuDocument__expand____codebase
push SSZ100F0F58_DjVuDocument__save_as____where__
push SSZ100F184C_DjVuFile__init____url__
push SSZ100F182C_DjVuFile__DjVuFile____url_is_
push SSZ100F1864_DjVuFile___DjVuFile____destroyin
push SSZ100F188C_DjVuFile__wait_for_chunk___calle
push SSZ100F18D0_DjVuFile__wait_for_finish_____se
push SSZ100F19DC_DjVuFile__decode_func___called__
push SSZ100F1974_DjVuFile_stopped_
push SSZ100F1960_DjVuFile_failed_
push SSZ100F1A10_DjVuFile__process_incl_chunk____
push SSZ100F1A4C_DjVuFile_EOF_
push SSZ100F1A7C_DjVuFile__process_incl_chunks_vo
push SSZ100F1D7C_DjVuFile__decode_chunk___
push SSZ100F1D64_DjVuFile_unrecog_chunk
push SSZ100F1D3C_DjVuFile__decode_chunk_____decod
push SSZ100F1D28_DjVuFile_page_info
push SSZ100F1D10_DjVuFile_indir_chunk1_
push SSZ100F1CF8_DjVuFile_indir_chunk2
push SSZ100F1CD8_DjVuFile_shape_dict__d
push SSZ100F1CB4_DjVuFile_fg_mask__d__d__d
push SSZ100F1C98_DjVuFile_G4_mask__d__d__d
push SSZ100F1C74_DjVuFile_IW44_bg1__d__d__d
push SSZ100F1C5C_DjVuFile_IW44_bg2__d__d
push SSZ100F1C38_DjVuFile_IW44_fg__d__d__d
push SSZ100F1C10_DjVuFile_color_import1__d__d__d
push SSZ100F1BF8_DjVuFile_color_import2
push SSZ100F1BDC_DjVuFile_JPEG_bg1__d__d__d
push SSZ100F1BB8_DjVuFile_JPEG_fg1__d__d__d
push SSZ100F1B9C_DjVuFile_JPEG2K_bg
push SSZ100F1B80_DjVuFile_JPEG2K_fg
push SSZ100F1B60_DjVuFile_JB2_fg__d__d
push SSZ100F1B30_DjVuFile_IW44_data1__d__d__d
push SSZ100F1B14_DjVuFile_IW44_data2__d__d
push SSZ100F1B00_DjVuFile_nav_dir
push SSZ100F1AE4_DjVuFile_anno1
push SSZ100F1AC4_DjVuFile_anno2
push SSZ100F1AA4_DjVuFile_text
push SSZ100F1E30_DjVuFile__decode____url__
push SSZ100F0808_FORM_DJVU
push SSZ100F1E04_image_x_djvu
push SSZ100F1DD8_DjVuFile_IW44_header__d__d__d
push SSZ100F1DB4_DjVuFile_djvu_header__d__d__d__d
push SSZ100F1D98_DjVuFile_ratio__0_1f__0_1f
push SSZ100F06A8_DjVuFile
push SSZ100F0648_DjVuPort
push SSZ100F1E4C_DjVuFile__start_decode____url__
push SSZ100F1E6C_DjVuFile__stop_decode____url__
push SSZ100F1E98_DjVuFile__stop____Stopping_every
push SSZ100F1EC0_DjVuFile__decode_ndir____decodin
push SSZ100F06A8_DjVuFile
push SSZ100F1F20_DjVuFile__trigger_cb____got_data
push SSZ100F1EF0_DjVuFile__trigger_cb____We_have_
push SSZ100F1F80_DjVuFile__progress_cb___called_
push SSZ100F1FA0_DjVuFile__move____dir_url__
push SSZ100F1FBC_DjVuFile__set_name____name__
push SSZ100F1FDC_DjVuFile__contains_chunk____url_
push SSZ100F2010_DjVuFile__get_djvu_bytestream___
push SSZ100F204C_DjVuFile__unlink_file___
push SSZ100F2068_DjVuFile__insert_file____id__
push SSZ100F3BA0_DjVuFileCache__add_file____tryin
push SSZ100F3BF4_DjVuFileCache__clear_to_size____
push SSZ100D8794____Unrecognized_DjVu_Message____
SSZ100D8794____Unrecognized_DjVu_Message____:
db '** Unrecognized DjVu Message:',0Ah,09h,'** Message name: %1!s!',0
SSZ100F0648_DjVuPort:
db 'DjVuPort',0
SSZ100F0664_document_djvu:
db 'document.djvu',0
SSZ100F0674_DjVuDocument__start_init____init:
db 'DjVuDocument::start_init(): initializing class...',0Ah,0
SSZ100F06A8_DjVuFile:
db 'DjVuFile',0
SSZ100F06D4_DjVuDocument_stopped:
db 'DjVuDocument.stopped',0
SSZ100F06EC_DjVuDocument_init_eof:
db 'DjVuDocument.init_eof',0
SSZ100F07A4_Got_DJVU_OLD_INDEXED_or_SINGLE_P:
db 'Got DJVU OLD_INDEXED or SINGLE_PAGE document here.',0Ah,0
SSZ100F0808_FORM_DJVU:
db 'FORM:DJVU',0
SSZ100F0888_DjVuDocument__init_thread____gue:
db 'DjVuDocument::init_thread(): guessing what we',27h,'re dealing with',0Ah,0
SSZ100F08E0_DjVuDocument__set_file_aliases__:
db 'DjVuDocument::set_file_aliases(): setting global aliases for file ',27h,0
SSZ100F093C_DjVuDocument_miss_page_num_:
db 'DjVuDocument.miss_page_num',09h,0
SSZ100F0958_DjVuDocument_miss_page_name_:
db 'DjVuDocument.miss_page_name',09h,0
SSZ100F0978_DjVuDocument__check_unnamed_file:
db 'DjVuDocument::check_unnamed_files(): Seeing if we can fix some...',0Ah,0
SSZ100F09BC_DjVuDocument__page_to_url____pag:
db 'DjVuDocument::page_to_url(): page_num=',0
SSZ100F09E4_DjVuDocument__url_to_page____url:
db 'DjVuDocument::url_to_page(): url=',27h,0
SSZ100F0A08_DjVuDocument__id_to_url____trans:
db 'DjVuDocument::id_to_url(): translating ID=',27h,0
SSZ100F0A58_found_internal_file_using_DjVuPo:
db 'found internal file using DjVuPortcaster',0Ah,0
db 'found fully decoded file using DjVuPortcaster',0Ah,0
SSZ100F0AB4_DjVuDocument__url_to_file____url:
db 'DjVuDocument::url_to_file(): url=',27h,0
SSZ100F0AD8_DjVuSimplePort:
db 'DjVuSimplePort',0
SSZ100F0AE8__djvu:
db '.djvu',0
SSZ100F0B60_DjVuDocument__get_djvu_file____r:
db 'DjVuDocument::get_djvu_file(): request for page ',0
SSZ100F0B94_djvufileurl____p__s:
db 'djvufileurl://%p/%s',0
SSZ100F0BB8_DjVuDocument__get_djvu_file____I:
db 'DjVuDocument::get_djvu_file(): ID=',27h,0
SSZ100F0BDC_DjVuDocument:
db 'DjVuDocument',0
SSZ100F0BEC_DjVuDocument__get_djvu_file____U:
db 'DjVuDocument::get_djvu_file(): URL=',27h,0
SSZ100F0C14_DjVuDocument__get_page____reques:
db 'DjVuDocument::get_page(): request for page ',0
SSZ100F0C60_DjVuDocument_cant_extract_:
db 'DjVuDocument.cant_extract',0Ah,0
SSZ100F0C90_DjVuDocument__get_thumbnail____p:
db 'DjVuDocument::get_thumbnail(): page_num=',0
SSZ100F0CBC_DjVuDocument__add_to_cache____ur:
db 'DjVuDocument::add_to_cache(): url=',27h,0
SSZ100F0D54_Found_tmp_unnamed_DjVuFile__Retu:
db 'Found tmp unnamed DjVuFile. Return empty DataPool',0Ah,0
SSZ100F0DB0_DjVuDocument__request_data____se:
db 'DjVuDocument::request_data(): seeing if we can do it',0Ah,0
SSZ100F0EC0_DjVuDocument__get_djvm_doc____cr:
db 'DjVuDocument::get_djvm_doc(): creating the DjVmDoc',0Ah,0
SSZ100F0EFC_DjVuDocument__write____storing_D:
db 'DjVuDocument::write(): storing DjVmDoc into ByteStream',0Ah,0
SSZ100F0F34_DjVuDocument__expand____codebase:
db 'DjVuDocument::expand(): codebase=',27h,0
SSZ100F0F58_DjVuDocument__save_as____where__:
db 'DjVuDocument::save_as(): where=',27h,0
SSZ100F182C_DjVuFile__DjVuFile____url_is_:
db 'DjVuFile::DjVuFile(): url is ',0
SSZ100F184C_DjVuFile__init____url__:
db 'DjVuFile::init(): url=',27h,0
SSZ100F1864_DjVuFile___DjVuFile____destroyin:
db 'DjVuFile::~DjVuFile(): destroying...',0Ah,0
SSZ100F188C_DjVuFile__wait_for_chunk___calle:
db 'DjVuFile::wait_for_chunk() called',0Ah,0
SSZ100F18D0_DjVuFile__wait_for_finish_____se:
db 'DjVuFile::wait_for_finish(): self=',0
SSZ100F1960_DjVuFile_failed_:
db 'DjVuFile.failed',09h,0
SSZ100F1974_DjVuFile_stopped_:
db 'DjVuFile.stopped',09h,0
SSZ100F19DC_DjVuFile__decode_func___called__:
db 'DjVuFile::decode_func() called, url=',27h,0
SSZ100F1A10_DjVuFile__process_incl_chunk____:
db 'DjVuFile::process_incl_chunk(): processing INCL chunk...',0Ah,0
SSZ100F1A4C_DjVuFile_EOF_:
db 'DjVuFile.EOF',09h,0
SSZ100F1A7C_DjVuFile__process_incl_chunks_vo:
db 'DjVuFile::process_incl_chunks(void)',0Ah,0
SSZ100F1AA4_DjVuFile_text:
db 'DjVuFile.text',0
SSZ100F1AC4_DjVuFile_anno2:
db 'DjVuFile.anno2',0
SSZ100F1AE4_DjVuFile_anno1:
db 'DjVuFile.anno1',0
SSZ100F1B00_DjVuFile_nav_dir:
db 'DjVuFile.nav_dir',0
SSZ100F1B14_DjVuFile_IW44_data2__d__d:
db 'DjVuFile.IW44_data2',09h,'%d',09h,'%d',0
SSZ100F1B30_DjVuFile_IW44_data1__d__d__d:
db 'DjVuFile.IW44_data1',09h,'%d',09h,'%d',09h,'%d',0
SSZ100F1B60_DjVuFile_JB2_fg__d__d:
db 'DjVuFile.JB2_fg',09h,'%d',09h,'%d',0
SSZ100F1B80_DjVuFile_JPEG2K_fg:
db 'DjVuFile.JPEG2K_fg',0
SSZ100F1B9C_DjVuFile_JPEG2K_bg:
db 'DjVuFile.JPEG2K_bg',0
SSZ100F1BB8_DjVuFile_JPEG_fg1__d__d__d:
db 'DjVuFile.JPEG_fg1',09h,'%d',09h,'%d',09h,'%d',0
SSZ100F1BDC_DjVuFile_JPEG_bg1__d__d__d:
db 'DjVuFile.JPEG_bg1',09h,'%d',09h,'%d',09h,'%d',0
SSZ100F1BF8_DjVuFile_color_import2:
db 'DjVuFile.color_import2',0
SSZ100F1C10_DjVuFile_color_import1__d__d__d:
db 'DjVuFile.color_import1',09h,'%d',09h,'%d',09h,'%d',0
SSZ100F1C38_DjVuFile_IW44_fg__d__d__d:
db 'DjVuFile.IW44_fg',09h,'%d',09h,'%d',09h,'%d',0
SSZ100F1C5C_DjVuFile_IW44_bg2__d__d:
db 'DjVuFile.IW44_bg2',09h,'%d',09h,'%d',0
SSZ100F1C74_DjVuFile_IW44_bg1__d__d__d:
db 'DjVuFile.IW44_bg1',09h,'%d',09h,'%d',09h,'%d',0
SSZ100F1C98_DjVuFile_G4_mask__d__d__d:
db 'DjVuFile.G4_mask',09h,'%d',09h,'%d',09h,'%d',0
SSZ100F1CB4_DjVuFile_fg_mask__d__d__d:
db 'DjVuFile.fg_mask',09h,'%d',09h,'%d',09h,'%d',0
SSZ100F1CD8_DjVuFile_shape_dict__d:
db 'DjVuFile.shape_dict',09h,'%d',0
SSZ100F1CF8_DjVuFile_indir_chunk2:
db 'DjVuFile.indir_chunk2',0
SSZ100F1D10_DjVuFile_indir_chunk1_:
db 'DjVuFile.indir_chunk1',09h,0
SSZ100F1D28_DjVuFile_page_info:
db 'DjVuFile.page_info',0
SSZ100F1D3C_DjVuFile__decode_chunk_____decod:
db 'DjVuFile::decode_chunk() : decoding ',0
SSZ100F1D64_DjVuFile_unrecog_chunk:
db 'DjVuFile.unrecog_chunk',0
SSZ100F1D7C_DjVuFile__decode_chunk___:
db 'DjVuFile::decode_chunk()',0Ah,0
SSZ100F1D98_DjVuFile_ratio__0_1f__0_1f:
db 'DjVuFile.ratio',09h,'%0.1f',09h,'%0.1f',0
SSZ100F1DB4_DjVuFile_djvu_header__d__d__d__d:
db 'DjVuFile.djvu_header',09h,'%d',09h,'%d',09h,'%d',09h,'%d',0
SSZ100F1DD8_DjVuFile_IW44_header__d__d__d:
db 'DjVuFile.IW44_header',09h,'%d',09h,'%d',09h,'%d',0
SSZ100F1E04_image_x_djvu:
db 'image/x.djvu',0
SSZ100F1E30_DjVuFile__decode____url__:
db 'DjVuFile::decode(), url=',27h,0
SSZ100F1E4C_DjVuFile__start_decode____url__:
db 'DjVuFile::start_decode(), url=',27h,0
SSZ100F1E6C_DjVuFile__stop_decode____url__:
db 'DjVuFile::stop_decode(), url=',27h,0
SSZ100F1E98_DjVuFile__stop____Stopping_every:
db 'DjVuFile::stop(): Stopping everything',0Ah,0
SSZ100F1EC0_DjVuFile__decode_ndir____decodin:
db 'DjVuFile::decode_ndir(): decoding for NDIR in ',27h,0
SSZ100F1EF0_DjVuFile__trigger_cb____We_have_:
db 'DjVuFile::trigger_cb(): We have ALL data for ',27h,0
SSZ100F1F20_DjVuFile__trigger_cb____got_data:
db 'DjVuFile::trigger_cb(): got data for ',27h,0
SSZ100F1F80_DjVuFile__progress_cb___called_:
db 'DjVuFile::progress_cb() called',0Ah,0
SSZ100F1FA0_DjVuFile__move____dir_url__:
db 'DjVuFile::move(): dir_url=',27h,0
SSZ100F1FBC_DjVuFile__set_name____name__:
db 'DjVuFile::set_name(): name=',27h,0
SSZ100F1FDC_DjVuFile__contains_chunk____url_:
db 'DjVuFile::contains_chunk(): url=',27h,0
SSZ100F2010_DjVuFile__get_djvu_bytestream___:
db 'DjVuFile::get_djvu_bytestream(): creating DjVu raw file',0Ah,0
SSZ100F204C_DjVuFile__unlink_file___:
db 'DjVuFile::unlink_file()',0Ah,0
SSZ100F2068_DjVuFile__insert_file____id__:
db 'DjVuFile::insert_file(): id=',27h,0
SSZ100F3BA0_DjVuFileCache__add_file____tryin:
db 'DjVuFileCache::add_file(): trying to add a new item',0Ah,0
SSZ100F3BF4_DjVuFileCache__clear_to_size____:
db 'DjVuFileCache::clear_to_size(): dropping cache size to ',0
dd SSZ100F3E88_DjVuMessage_failed_to_parse_XML
dd SSZ100F3E6C_DjVuMessage_Unrecognized
dd SSZ100F3E54_DjVuMessage_Parameter
SSZ100F3E54_DjVuMessage_Parameter:
db 'DjVuMessage.Parameter',0
SSZ100F3E6C_DjVuMessage_Unrecognized:
db 'DjVuMessage.Unrecognized',0
SSZ100F3E88_DjVuMessage_failed_to_parse_XML:
db 'DjVuMessage.failed_to_parse_XML',0
dd SSZ100F3E88_DjVuMessage_failed_to_parse_XML

作者: bxmaster 写于09:50 | 回复(2)

2006年06月18日

下载地址更新

由于前一段下载服务器停止服务,所以软件下载地址失效。现在最新版的bxviewer文件上传到另外一个地址,请前一段无法下载的朋友点击下载。

作者: bxmaster 写于00:29 | 回复(20)

2006年03月12日

BooX Viewer 1.0.4.31中文版

发布1.0.4.31中文版:

主要改进:
1. 添加跳转到指定页面的功能(Ctrl+G)
2. QDG文件批量解码按钮。
3. 修正了对zip文件无法显示文件类型的错误。
4. 笔画分析程序显示效率大大提高。

请点击这里下载新版本。MD5SUM为523f530d1a0f2ad1272842957bc6f37f。

英文版将随后推出。

作者: bxmaster 写于14:56 | 回复(49)

2006年02月25日

BooX Viewer 1.0.4.27中文版

修正了一个严重的内存泄漏问题;注册界面添加了一些自动功能,帮助用户选择关键点;添加了教育网注册的服务器地址;修正了几个小的bug (已注册的用户无需再注册).

下载地址不变,仍然为:BXViewer1b4_Zh.zip

官方发布的BXViewer1b4_Zh.zip的MD5 Checksum为9da412f840f08d5bc2feddf2c4cb89d9, 查看方法参见前面的日志。


欢迎大家参与绘字游戏,动画演示(注意:竖心第一笔,宝盖第二笔为点;请勿将短撇如鬼的第一笔)作为提;笔画起始、终止点请尽量靠近笔画中轴线的尽头):

作者: bxmaster 写于22:53 | 回复(4)

2006年02月10日

教育网用户注册方法

如果教育网内用户无法直接连接我们的SourceForge服务器进行在线注册,您可以尝试使用下面的这个地址进行注册:

http://wqy.lwfs.net/cgi-bin/

设置方法:将地址拷贝粘贴在笔画分析页面的“服务器地址”栏中,然后选择“在线获得下一个汉字图片”。

作者: bxmaster 写于01:47 | 回复(13)

2005年12月06日

boox viewer 1.0b4文件大小

官方发布的boox viewer 1.0b4中文版BXViewer.exe文件大小为668 KB (684,158 bytes),生成日期为2005年7月18日11(PM)点47分。该exe文件的MD5 Checksum为8949646c5cc4684abc9020e723a5985e(查看该文件的checksum,您需要使用这个免费小软件,md5sums-1.2.zip解压后,把BXViewer.exe图标拖动到md5sums.exe上,松开鼠标,在弹出窗口右下方可以看到打印的MD5 sum)

如果您使用的BXViewer.exe文件大小/日期和MD5 Checksum与上面不符,可能该程序已经被别人修改(比如注入木马等),可能会导致系统不稳定或者意想不到的数据丢失。建议您立即从本页面重新下载官方版本。

作者: bxmaster 写于22:58 | 回复(11)

2005年08月25日

软件注册操作的视频教程

注册视频,AVI格式,15M。

作者: bxmaster 写于11:48 | 回复(13)

2005年08月22日

用户注册需知

发现bxv的注册用户当中有一大半没有按照要求完成汉字笔画分析。在被分析的汉字当中根本没有折线和弧线这样两种非汉字笔画,但仍然有大量用户随意选择这两种笔画进行注册。

我们保留对这些用户取消注册的权利。对于参加注册的用户,请认真完成笔画分析再发送!对于笔画明显不正确的发送结果将被拒绝注册(错误提示为:无法连接服务器!)

作者: bxmaster 写于23:15 | 回复(13)

2005年07月17日

发布BooX Viewer 1.0b4中文版

中文版下载地址(需要重新注册):

BXViewer1b4_Zh(675k)

屏幕预览:

作者: bxmaster 写于22:50 | 回复(17)

2005年06月09日

使用BooX Viewer的十大理由

使用BooX Viewer的十大理由

  1. 小巧
    --软件只有600K左右,比大多数电子图书阅读软件小几十倍
  2. 绿色
    --软件解压即可使用,无须安装,可以直接刻录在光盘或者软盘上,直接运行
  3. 通用
    --BXViewer可以在几乎所有的Windows平台(95,98,NT4,ME,2000,XP,2003)上运行,Windows版本也可以在Linux下使用Wine运行。Linux用户还可以直接运行linux版的BXViewer
  4. 快速
    --BXViewer采用了非常高效的图形显示库,能够非常迅速地显示大幅真彩图像
  5. 美观
    --软件使用了防锯齿图形放缩的高效算法,页面显示清晰美观,另外软件的阴影功能、图标等也经过精心美化
  6. 独立稳定
    --软件本身不要求用户安装其他软件,运行不需要额外的动态连接库
  7. 节省空间
    --BXViewer中提供了对压缩的电子图书的支持,这样用户只需保存压缩成单个文件的电子图书,而不需要保存大量的单页文件,大大提高了硬盘利用率。阅览时解压过程都在内存中进行,不涉及硬盘读写,效率很高
  8. 合法
    --软件本身为独立开发的C++程序(由ShunCox提供的文件解码核心C++库,Momotalo提供的用户界面主体),不涉及任何破解等非法使用情形,企业用户和个人用户均可安心使用
  9. 可扩展
    --最新版的BXViewer提供了集成外部解码器的功能,该功能允许用户使用系统原本安装的正版超星阅读器阅读来浏览注册用户下载的电子图书,该功能对于以往的大多数超星阅读器兼容(3.4以后)
  10. 意义重大
    --使用这个软件的注册功能(文泉驿矢量中文笔画分析程序),您可以为全世界的中文用户作出自己的贡献。您的劳动将对中国软件产业的均衡发展具有重要的意义。

希望您能喜欢这款软件,也希望您积极参与软件的免费注册!

作者: bxmaster 写于18:51 | 回复(17)

2005年06月07日

BooX Viewer 1.0.4.22

改进了调用外部解码器的形式,对于3.6~3.8进行测试。
使用适当的外部解码器,可以阅读05及6XH等格式。

(有待改进:程序启动一次,只能载入一个外部解码器,调换外部解码器的过程需要重新启动bxviewer)

下载地址不变。

作者: bxmaster 写于23:49 | 回复(6)

2005年06月05日

BooX Viewer 1.0b4 (Octopus)

BooX Viewer 1.0b4 (Octopus)测试

2005/6/5

发布1.0b4 Octopus(测试版),新添加功能:
  • 自定义外部解码器(pdg.dll)
  • 多个外部解码器并存,不影响系统默认的解码器的正常工作
  • 可以设定系统默认pdg解码程序
  • 显示文件类型信息列表
  • 文件大小比原来缩小10%

总体来说,如果你使用外部解码器,是否能够浏览pdg文件主要取决于你的外部解码器的安装。(3.6/3.7版本的测试效果正常,3.8的没有完全测试)。定义/使用外部解码器的功能不影响你使用默认的bxv解码器正常工作。

另外,对于希望通过参与汉字笔画分析进行免费注册的用户,启动程序后选择"yes",否则,每次启动程序选择"No"。(1.0b4Oct与1.0b4WQY的注册是相互独立的)。我们对注册用户的支持表示感谢。

程序下载:BXViewer1b4_Octopus.zip (文件大小 650k).

版权声明: 2002~2005 Momotalo, ShunCox, dd321, 2005 FangQ

免责声明:软件作者声明,对于用户在该软件使用过程当中的任何问题以及引起的任何不当后果不承担任何形式的责任。

外部解码器管理界面:

作者: bxmaster 写于23:05 | 回复(31)

2005年05月13日

电子图书阅读器BooX Viewer 1.0b4 WQY

电子图书阅读器BooX Viewer之文泉驿版

感谢momotalo大侠提供了电子图书阅读器BooX Viewer最新版本1.0b4的源码,在他的帮助下,我们已将我们的矢量笔画分析界面嵌入。使用该软件的用户需要通过制作一个以上矢量汉字笔画分析来进行免费注册。

最新动态

2005/5/11

  1. 发布BooX Viewer 1.0b4文泉驿版。这是BooX Viewer在过去两年内的唯一一次更新,性能有极大提高,强烈推荐使用,也希望大家推广该软件(中文版和Linux版本也将随后推出)。

主要的更新包括(by momotalo):

    1. 升级主要的程序模块至其最新版本,包括图形显示的Graphics32控件(升级至v1.7.1)以及TZipForge(升级至v2.61)
    2. 使用Graphics32控件的最新的防锯齿图形放缩算法——sfDraft——作为默认的图形显示方式,该算法比原来的默认算法速度提高200%,对于高清晰电子图书效果尤其明显
    3. 优化图书载入代码,载入速度较原来有极大提高
    4. 添加鼠标滚轮支持
    5. 控件显示采用XP风格,使用了更加漂亮的图标
    6. 采用Windows的注册表来进行信息存储,不再采用原先的ini文件。这样您可以地将该软件刻录在CD上而不会出现原来程序无法退出的错误
    7. 移除Djvu转换功能,该功能将在本软件的后继版本中以更加严谨地方式重新添加
    8. 移除使用频率较低的阅读历史功能
    9. 添加了对“文泉驿”计划的支持。该计划主要目的是开发开放源代码的免费中文(中日韩)字库,便利中文用户之间的交流,希望大家参与他们的计划,详情参见他们的主页:http://wqy.sf.net/
    10. 软件提供了免费注册,注册方式和界面采用了FangQ编写的矢量汉字笔画分析程序
    11. 添加了本软件主页和论坛链接
    12. 修正了大量先前版本(1.0b3)中出现的程序缺陷
    13. 页面显示添加了阴影效果,界面风格也适当进行了调整

 下载地址:http://www.fileh.com/fangq/boox/BXViewer1b4_WQY.zip
 操作系统:Windows 95/98/Me/NT/2000/XP/2003
 文件大小:725k

屏幕截图


有关BooX Viewer的问题或者建议,请大家写信给momotalo(bookexpress2003 AT yahoo DOT com),有关汉字笔画分析界面的问题或者建议,请写信给FangQ(fangqq AT gmail DOT com)。您也可以在本网站用户论坛进行讨论。


作者: bxmaster 写于15:50 | 回复(106)