Python3 实现的社区系统 Icarus v1.1,也请大家找找 BUG

2018-09-29 23:17:02 +08:00
 fy

简介


这是一个由 Python3.6 与 Vue.js 全家桶构建的现代社区系统。

可能包含以下内容:

杂乱无章的演示站点: https://t.myrpg.cn

井然有序的 Repo 页面: https://github.com/fy0/icarus

版本主题 - 安全


这个版本着重强化了一下程序的安全性,在新的密码机制下,后端密码将加盐哈希迭代 10 万次后存储。这个迭代次数是相关报告(2017 年)建议数字一万次的十倍。本来计划了更多的次数,但在百万次后我的低压 U 机器发生了明显的卡顿,考虑到个人 VPS 性能更差,因此就没有继续提升迭代次数了。

前端密码则以固定盐哈希迭代 10 万次后再向后端发送,这是为了防备非 https 环境下的中间人攻击,可以用于一些私人的或者是内网环境下的小破论坛场景,同时后端不再有机会得到明文密码。

版本主题 2 - 内容聚合


这个版本对文章列表的展示方式做了几乎完全的重构。从较为传统的“浏览板块列表 - 进入某个板块 - 浏览文章”的模式转为了一个页面布局同时展示板块列表和文章列表的模式。同时对论坛的全部内容做了一个简单的聚合。

这主要考虑到了:

  1. 拥有大量板块时,让一些层级较深的内容不被淹没
  2. 站点内容较少时,不会显得很空旷
  3. 维护起来简单

大家可能也看得出来这中间 Flarum 做了非常多的借鉴。其实研究来研究去,我发现此类社区的布局貌似总共就三种:Flarum 这种、V2EX 这种、Discourse 则自成一派。

我不喜欢 Discourse 那种一横条一横条的风格,V2EX 风格则是太多珠玉在前,自己又想不出什么更加牛逼的布局方式,因此就效仿他人故智了。

虽然我个人觉得这样更扁平的论坛显得更好,但想必也不是人人满意,不知道大家有什么看法?

附录:更新日志


https://t.myrpg.cn/topic/1002

4252 次点击
所在节点    分享创造
34 条回复
fy
2018-09-29 23:33:36 +08:00
对了补充两句

## 关于 Websocket 连接的移除

我使用的腾讯云 CDN 似乎仍然不能很好的支持 ws 回源,为了避免暴露服务器地址就砍掉了。

毕竟传统轮询又不是不能用(滑稽)。

当然如果可以用了,我还是会加回去,毕竟 ws 能搞不少事情。

## 升级指南

* 通过 backend/misc/upgrade 下的升级脚本完成升级应该没什么问题,建议复制到 backend 目录下执行

* 由于提醒机制的完全重做,用户的第一次重新登录会刷新提醒列表,会出现多个新提醒

* 用于密码机制的重做,在默认配置下所有用户都应该通过邮箱重置密码后才能登录。可以手动关闭新的安全密码机制,即 config 中设定`USER_SECURE_AUTH_ENABLE = False` 来继续使用老机制。

* 其实我估计大概根本没人需要这个升级指南吧……真的有人用了 1.0 版本吗?
ddup
2018-09-29 23:50:04 +08:00
界面不错啊!
Trim21
2018-09-29 23:55:07 +08:00
还是 aiohttp 的...star 了
coolesting
2018-09-30 00:09:15 +08:00
用 vue 做的界面果然高大上,比我的好多了
luckyswag
2018-09-30 00:21:59 +08:00
vue 就是屌
ArchiTech
2018-09-30 06:26:06 +08:00
成果看起来很不错啊,UI 好看速度也快。而且居然是自己一个人做出来的,太厉害了。不过一个人做很辛苦吧,日后要维护起来也不容易,而且还得提供主体插件接口方便别人用的时候可以 customize。。
我最近也做了个简单的论坛,直接用 nodebb 做的,然后自己写了主题插件,比如首页瀑布流的图片显示 - https://catlog.club/
allinoneok
2018-09-30 06:51:06 +08:00
那个载入等待特效看得多了 很烦
omph
2018-09-30 08:35:05 +08:00
那个载入特效确实太狂放,不舒服
这样的版面看久了对眼睛不好,因为 UI 没有体现层次感,过分扁平,经常需要眼睛去定位,累
mathzhaoliang
2018-09-30 08:52:40 +08:00
UI 应该改进,你使用的色彩太多,容易分散用户的注意力,时间长了看起来很累。

一个好的论坛,好看的界面只是冰山上的那一角,有许多影响个人体验的细节。举个例子,markdown 编辑器支持 mathjax 数学公式吗?
bucky
2018-09-30 09:17:12 +08:00
什么字体,太细了,都快看不见了
fy
2018-09-30 09:48:34 +08:00
@allinoneok #7
我看看怎么搞个更柔和的载入效果,例如说改成评论加载那样的灰色 placeholder。切换板块的时候加载动画比普通页面偏上,这可能也是不协调的缘故之一。我笔记本的 13 寸屏注意不到,换个大屏就比较明显了。

@omph #8
说到过分扁平的问题,主要的取舍是关于有没有外框的这么一个设定。我这里选择了没有,再加上个人水平的原因就呈现了这样的结果。我会继续想一想,尽量从各方面做改进。

@mathzhaoliang #9
谢谢,我会尽量想办法做调整的。目前想法是进一步先将文章标题突出。板块带来的颜色区分没什么办法,虽然已经通过淡化色彩压制了一下,但好像还是……

其他的方面只能持续努力了,毕竟这种东西细节太多,无法一蹴而就。markdown 部分的话现在依赖的 SimpleMDE 年久失修非常僵硬,可惜 vue.js 没有 slate.js 这样牛逼的终极文本编辑器解决方案。markdown 语法也就开了一个 gfw 扩展+语法高亮而已。

=======

总之感谢大家的反馈吧,我会继续努力改进。

下版本争取实现一些喜欢、收藏、感谢之类的功能,把华夏特色的手机验证做了,重构一些老的页面,并加入更多与 spam 的对抗策略。
fy
2018-09-30 09:51:39 +08:00
@bucky #10

额,能否告知系统和浏览器。

字体设置是已经忘了从哪抄的:font-family: PingFang SC, Lantinghei SC, Microsoft Yahei, Hiragino Sans GB, Microsoft Sans Serif, WenQuanYi Micro Hei, sans, FontAwesome, sans-serif;
bucky
2018-09-30 10:19:04 +08:00
@fy win7 chrome
nifanle7
2018-09-30 10:22:44 +08:00
第一次知道 Flarum、Discourse。看了下,UI 都比较舒服,谢谢楼主科普。
pimin
2018-09-30 10:32:35 +08:00
粉了 fy god
zwpaper
2018-09-30 11:32:21 +08:00
手机点了一下主页,基本处于不能看状态
fy
2018-09-30 12:04:33 +08:00
@pimin #15

这是我姓名的缩写,可惜我是一个 3000 分老年波特菜鸡选手。并没有因此沾到真正的 fy god 的光。

@zwpaper #16

哈哈,这就是令人不安程度的移动端支持啊……后面有更多的时间精力之后会逐渐改善。
zhzer
2018-09-30 12:05:03 +08:00
问个面试官专用问题

这个项目有什么亮点吗?
sobigfish
2018-09-30 12:22:55 +08:00
就是觉得 UI 有点像 flarum 的 https://discuss.flarum.org/ (好像也是学 nodebb )
但提到 flarum 和 nodebb 的原因是 tag, 能支持 tag 就好了
ThunderStruck
2018-09-30 13:43:00 +08:00
爱抚歪我来组成移动端

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/493988

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX