类百度文库解决方案 DocHub v2.4,发布重构规划
DocHub 文库系统是使用Go语言的Beego框架开发实现的类百度文库解决方案,使用对商业友好的 Apache2.0 开源协议进行开源,支持office(全部类型)、PDF、TXT、EPUB、MOBI等多种文档格式的在线阅读浏览。
升级日志
- 修复
group by title
查询文档列表失败的问题:https://stackoverflow.com/questions/34115174/error-related-to-only-full-group-by-when-executing-a-query-in-mysql - 导航栏标识大小写导致选中的时候无法高亮的问题
- 修复上一版本增加虚拟目录导致的 sitemap 找不到的问题
- 面包屑导航链接不正确的问题
- 文档上传过程中临时文件命名出现重名的问题
- 后台配置了备案号前台无法显示的问题(不知道是什么时候写死在模板里了)
- 是否允许上传重复文档(管理后台 -> 系统设置 进行设置)
- 每天凌晨 2:00 自动更新站点地图(sitemap)
相关链接
源码仓库
下载地址
https://gitee.com/truthhun/DocHub/releases
文档地址
https://www.bookstack.cn/books/dochub
演示站点
文库之家:https://www.wenkuzhijia.cn
手机端和PC端都可以直接点开访问,手机用户会自动显示为手机版。
重构规划
DocHub 项目之所以在码云和GitHub收到的star比较高,那是因为项目切中了大多人的需求,以及前端页面设计的比较简洁好看,且用户体验也尚可。
但真实情况却是代码写的很渣,这个真不是自谦。尽管我已经尽了很大努力去优化,但是一个不合理的数据库设计以及不规范的代码写作,导致了后续功能扩展和代码维护困难重重。
所以,还是决定对项目全部推翻了进行重构。现有分支仍会持续维护和修复Bug,但不会再增加新功能。重构会在新分支上进行,对于不兼容问题,届时会出一个迁移工具,以帮助从旧版迁移到重构的新版本上来。
服务架构
完整的服务架构图如下,按100万的IP访问量来进行设计的。
高清图看这里: https://www.processon.com/view/link/5b29103ae4b0d4a19d7c67f1
- DocHub 将采用前后端完全分离的技术方案,一套API接口,供PC前端和移动端APP和小程序使用
- 文档转换服务是比较耗费服务器资源的,属于计算密集型,该功能将独立成一个文档转换服务
moredoc
(也就是魔刀
),以便可以独立部署到另外的服务器上 CloudStore
是一个云存储服务中介,支持将文档等文件数据存储到各大云存储上。
moredoc(魔刀文档转换服务)
高清图看这里:https://www.processon.com/view/link/5cd63503e4b0bab9097b9ef2
moredoc
的技术构成和转换原理,如上图所示。
该服务将支持全部 office 文档类型和epub等文档类型转为可在前端页面展示的图片以提供用户阅读。
现有dochub
文库系统目前文档转换依赖的软件基本上就是上面这些了(除了pdftohtmlex
)。
由于这部分软件的安装部署,对于小白用户以及不同系统用户来说,比较复杂,所以整成moredoc
文档转换服务之后,整个都将打包到docker
容器中,moredoc
只提供文档转换的resetful接口给dochub
进行调用。
技术栈
前端技术方案主要用Vue
,考虑到SEO
的需要,配合Nuxt
使用,UI 使用ElementUI
。
移动端使用uni-app
的解决方案,一次开发,多端分发。
后端选用Go
语言,至于群友问为什么不用PHP
和Python
…
我也是做过三年PHP开发的,好不容易跳脱出来,又想骗我回去,怎么可能…Python
的话,在公司也就写写脚本做做运维,并没用真正实现过一个产品的开发,对这门语言还是不熟练。
所以综合考虑选用Go语言,Go语法简洁,性能和开发效率都很高,编译成二进制可执行文件之后,直接丢到服务器就能跑了,还不需要安装环境依赖,部署简单。
重构周期
我想按照自己的节奏来开发,由于是业余时间做的开发,所以开发周期至少要半年以上。
致谢
感谢自己通过努力生产Bug骗来了码云和红薯的一个奖牌。。
感谢红薯为感谢我经常使用码云而赠送的iPad mini 和 霸王。。
如果没人出来辟谣,那我以上所说句句属实。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Firefox Preview 2.0 发布,Mozilla 为 Android 开发的全新移动浏览器
Firefox Preview 2.0 版本现在可以在 Play Store 上下载,2.0 版本中添加了许多新特性,如下: 在 Android 上可将 Firefox Preview 搜索小部件添加到主屏幕 将用户喜欢的网站在主屏幕上添加一个快捷方式。使用方式:访问一个网站,点击菜单按钮,并选择“添加到主屏幕(Add to Home Screen)” 可将标签从Firefox Preview发送到 PC,但在此之前你需要在两边同时登录账号 通过点击设置中的隐私浏览快捷方式(Private browsing shortcut),将其添加到主屏幕,默认情况下在隐私浏览模式中启动 Firefox Preview “删除浏览数据(Delete browsing data)”选项允许在设置中选择要删除的数据类型(来自打开的选项卡、浏览历史记录和站点数据以及收藏集) 如果 Firefox Preview 的某个选项卡在播放视频或者音频内容,在通知中可以显示关闭或者暂停 增强跟踪保护在默认情况下是启用的,但它不是完全成熟的,2.0 版本增强跟踪保护默认启用不再提供“标准”和“严格”,也不会显示它从...
- 下一篇
node.js 12.11.0 发布,工作线程(多线程)稳定
显著变化 加密: 添加oaepLabel选项#29489 引擎: 将V8更新到7.7.299.11#28918 更有效的内存处理 堆栈跟踪序列化更快 该Intl.NumberFormatAPI获得了新的功能, 有关更多信息:https://v8.dev/blog/v8-release-77 事件: EventTarget在#29498中添加对once的支持 fs: 公开内存文件映射标志UV_FS_O_FILEMAP#29260 检查员: 新API-Session.connectToMainThread#28870 过程: 通过#28960提供初始SourceMap支持env.NODE_V8_COVERAGE 流: _write()可选#29639_writev() tls: 添加选项以覆盖签名算法#29598 程序: 添加encodeInto到TextEncoder#29524 线程: 该worker_thread模块现在稳定#29512
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7,8上快速安装Gitea,搭建Git服务器
- SpringBoot2全家桶,快速入门学习开发网站教程
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- CentOS8安装Docker,最新的服务器搭配容器使用
- Hadoop3单机部署,实现最简伪集群
- MySQL8.0.19开启GTID主从同步CentOS8
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS8编译安装MySQL8.0.19
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Docker快速安装Oracle11G,搭建oracle11g学习环境