Java 社区平台 - Sym 1.7.0 发布
English | 中文
简介
Symphony([ˈsɪmfəni],n.交响乐)是一个现代化的社区平台,因为它:
- 实现了面向内容讨论的论坛
- 包含了面向用户分享、交友、游戏的社交网络
- 集成了聚合独立博客的能力,共建共享优质资源
- 并且
100%
开源
欢迎到 Sym 官方讨论区了解更多。另外,如果你需要搭建一个企业内网论坛,请使用 SymX。
动机
Sym 的诞生是有如下几点原因:
(正版)
- 很多系统界面上仍然保持着老式风格,远远没有跟上时代发展的脚步,它们没有创新、好玩的特性,缺少现代化的交互元素和用户体验
- 大部分系统是从程序员的角度进行设计的,没有考虑实际的产品、运营需求,这类系统功能过于简陋、细节不够精致、缺乏长期维护
- 另外,我们正在探索新的社区模式,实现独奏(Solo)与协奏(Symphony)相结合的社区新体验
(野版)
- 万能的 GitHub 上连个能用的 Java 社区系统都找不到,Sym 填补了这个宇宙级空白
- 做最 NB 的开源社区系统,预计几年以后 82% 的社区都将是 Sym 搭建的
- 作者技痒,炫技之作,Ruby/Python/Node.js/(特别是)PHP 怎么能比得过 Java
案例
个人维护:
- 黑客派
- 宽客网
- 贵州IT
- 超级产品经理
- Titandb 学习主站
公司维护:
- 四方环视
如果你也搭建好了,欢迎通过 Pull Request 将你的站点加到这个列表中 :-p
功能特性
具体功能点细节可浏览 Sym 功能点脑图,下面列出了 Sym 的主要特性,说明 现代化 的由来。
好用的编辑器
- Markdown:支持 GFM 语法以及一些扩展语法
- 格式调整:粗体、斜体、超链接、引用、列表等可以通过工具栏按钮,同时也支持快捷键
- 文件上传:支持复制粘贴或者拖拽上传图片;支持上传普通文件;对 MP3 会使用在线播放器进行渲染
- 剪贴板处理:自动将复制的内容转换为 Markdown 格式;外链的图片自动上传站内
- @用户:根据用户名自动补全,支持快捷键
- Emoji:支持大部分主流 Emoji 表情,快捷键自动补全
- 数学公式:支持 LaTex 数学公式渲染
- 数据暂存:支持本地浏览器暂存数据,避免意外情况导致编辑内容丢失
智能、灵活的信息架构
传统的节点式社区要求帖子必须 分类 到某一个节点下,信息架构方式属于自上而下。Sym 不是自上而下的节点式信息架构,帖子不需要固定分类,通过标签 聚合 到某个领域下。
- 标签:根据帖子内容智能抽取关键字进行标签自动补全,一篇帖子关联多个标签。标签和标签之间以带边权重的图结构进行描述,方便进行相关计算
- 领域:一个领域下包含了多个标签,通过标签将帖子自动聚合到具体领域,随时可以通过增减关联标签从而达到调整领域范围,最终聚合出适合的帖子列表
满足多样化的发帖需求
目前支持 4 中帖子类型,满足不同用户的偏好:
- 普通帖子:提问或分享对别人有帮助的经验与见解
- 思绪:写作过程的记录与重放,文字版的沙画表演 (?)
- 小黑屋:邀请好友在私密空间中进行交流
- 同城广播:发起你所在城市的招聘、Meetup 等
另外,所有帖子都可以设置 打赏区 ,打赏区可以放置一些“珍藏”内容,只有打赏后的用户才能浏览。打赏区编辑器同样支持 Markdown、Emoji 和文件上传等特性。打赏区支持内容更新,并可以随时调整打赏积分值。
对于测试帖,可以使用 Sandbox 机制:带有 Sandbox 标签的帖子将视为测试帖,不会显示在首页或是某领域内,只会展现在发帖者自己的帖子列表中。
人性化的回帖交互
- 实时呈现:回帖提交后其他浏览者可以不刷新页面就实时看到你的回帖
- 随时滚动:浮出式回帖编辑器方便回帖者随时滚动屏幕查看其他内容,不必担心焦点丢失
- 真正的回复:回复是针对回帖而言的,而 @ 是针对用户而言的,@ 是提及不是回复,很多系统都没有考虑到这一点。回复/引用可以在当前位置进行展开浏览,也可以跳转到回帖处,并支持跨分页跳转
- 智能机器人:回帖时可以让机器人也参与到讨论中来,活跃气氛的同时说不定机器人真的能解决一些问题呢
用户个性化设置
用户可以自己设置很多参数以满足个性化需求:
- 帖子列表浏览分页每页条目数
- 回帖浏览模式:传统(按发布时间升序,无实时推送刷新);实时(按发布时间降序,实时推送新回帖)
- 头像浏览模式:原图(支持 gif 动图);静态图
- Chrome 通知/邮件订阅/键盘快捷键开关
- 设置常用 Emoji,方便发布内容时快速插入表情
除了功能个性化配置项,还有很多隐私项开关:
- 是否公开帖子/回帖列表
- 是否公开关注用户/标签/粉丝、收藏帖子、积分列表
- 是否公开在线状态
- 是否公开 UA 信息
- 是否公开地理位置
- 是否参与财富/消费排行
另外,用户还可以完整导出数据,包括帖子和回帖。
编辑历史与匿名发布
发帖者可以进行该帖更新,但是每次更新都会产生编辑历史,浏览者可以看到并对比其内容变更。目前还不支持回帖更新,后续会加入,敬请期待。
帖子和回帖都可以使用匿名身份进行发布,你懂的。
对搜索引擎友好
- 标签、领域可以自定义链接,并且可以单独配置 meta title/keywords/description
- 后端 Markdown 渲染,输出爬虫可读的 HTML
- 管理员设置的浏览权限不影响爬虫抓取内容
- 通过一些 HTML 细节属性(比如 canonical)进行 SEO
实时的消息通知
- 可按类别展示消息,标记已读
- 详细的消息类别:收到的回帖、收到的回复、@我的、我关注的人、积分相关、同城、系统消息等
- 友好的 Chrome 桌面提醒
好玩的活动
- 领取签到奖励、领取昨日活跃奖励
- 上证博彩
- 字 (?)
- 贪吃蛇
后续还会继续加入一些好玩的在线小游戏。
强大的后台管理
- 后台首页:数据统计、版本检查
- 用户管理:搜索用户、添加用户、用户数据维护(状态设置、积分等)
- 帖子管理:搜索帖子、添加新帖、帖子数据维护(置顶、重建索引等)
- 回帖管理:状态设置、内容更新
- 领域管理:添加领域、领域数据维护(关联标签、图标、URI、CSS、描述等)
- 标签管理:添加标签、标签数据维护(图片、URI、CSS、描述等)
- 保留词管理:添加保留词、保留词数据维护
- 邀请码管理:生成邀请码、邀请码数据维护
- 广告管理:侧边栏独占展位维护
- 其他管理:发帖/回帖开关;用户开放/关闭/邀请码注册开关
开放的内容 API
Sym 提供了 API 进行帖子、回帖的同步(B3log 构思),目前 Solo、Typecho、Z-BlogPHP、WordPress 均已经提供插件来进行内容同步,欢迎大家进行接入!
以后也会陆续加入新的接口,方便大家制作 APP 客户端或是一些有价值的应用。
集成云邮件服务
通过配置即可集成 SendCloud 云邮件服务,送达率较为自己搭建邮件服务更为可靠。
- 用户注册验证、密码重置通过触发类型发送
- 每周优选订阅推送通过批量类型发送
集成云搜索服务
- 通过配置即可集成 Algolia 云搜索服务,可自定义搜索字段,并进行权重、排序调优
- 也可以自己搭建 Elasticsearch 并通过配置进行集成
后续会对搜索功能进行加强,实现条件过滤,结果高亮等,敬请期待。
计划中的特性
信任系统
通过历史数据对用户进行分级提权,让用户从浏览者逐步变为参与者、组织者、管理者,实现自治的社区生态系统。
徽章系统
记录下用户达成的成就以及对社区的贡献。
安装
需求
Maven3+、MySQL5.5+、Jetty9+/Tomcat9+
步骤
- 下载源码
- 解压后修改
src/main/resources/local.properties
中的数据库配置,并创建数据库 - 可能需要修改
latke.properties
中的端口为容器端口 - 可能需要修改
init.properties
中的管理员账号 - 使用
mvn install
进行构建 - 将构建好的 war 包部署到容器中,数据库表会在第一次启动时自动建立
注意:
- 没有数据库建表 SQL 脚本,手动建库后,表会在第一次启动时自动生成
- 生产环境建议使用反向代理,并需要配置好 WebSocket 代理
- Tomcat 用 9 以上版本,最好是使用最新版本
- 参考 Latke 配置剖析
配置
- 图片上传默认是上传服务器本地,要使用七牛可配置
symphony.properties
中的qiniu.*
属性 - 邮件发送使用的是 SendCloud,需要配置
symphony.properties
中的sendcloud.*
属性 - 用户注册时需要验证邮箱的,所以必须先配置好 SendCloud
如果遇到问题,可以参考一下这篇帖子。
使用授权
商用授权和开源授权在功能上没有任何区别,你可以从以下两种授权方式中选择一种。
开源授权
Sym 是使用 GPL 作为开源协议的,如果你选择了开源授权,则必须完全遵守 GPL 的相关条款。
商用授权
如果需要将 Sym 用于商用,包括但不限于如下场景:
- 公司使用
- 有盈利性质
则必须付费,价格为 ¥10000,请联系 QQ845765 或者 DL88250@gmail.com 进行细节咨询。
贡献
作者
Sym 的主要作者是 Daniel 与 Vanessa,所有贡献者可以在这里看到。
我们非常期待你加入到这个项目中,无论是使用反馈还是代码补丁,都是对 Sym 一份满满的爱 :heart:
讨论区
- 到 Sym 官方讨论区发帖(推荐做法)
- 来一发 issue
- 加入 Sym 开发支持 Q 群 17370164
感悟
在实现 B3log 构思的这几年:
- 我们见证了 xAE(GAE/BAE/SAE/etc)的兴起与没落。2009 年选择了 GAE 作为服务器,并开始实现 Latke 框架来解决跨云平台,直到告别 GAE,不得不感叹技术更迭之快
- 感受到了自造轮子的优缺点,并且可以肯定一点:对于一个想要长久的产品来说,自制技术框架优势远大于劣势
- 一个好玩的产品或说是细节特性然并卵,需要做的是一个能够持续提供用户价值的产品/特性
- 虽然直到目前 B3log 系产品用户不多,但我们已经初步证明了:Java 用来实现博客、论坛没有什么不好的
- 使用开源软件,了解开源思想,融入开源生态
- 如果你想做个程序员相关的论坛,请三思
- 你怎么看待社群、社区这两个词?
- UGC 社区价值生态
鸣谢
Sym 的诞生离不开以下开源项目:
- jQuery:前端 JavaScript 工具库
- CodeMirror:前端 Markdown 编辑器内核
- Highlight.js:前端代码高亮库
- emojify.js:前端 Emoji 处理库
- APlayer:前端 HTML5 音乐播放器
- ECharts:前端 JavaScript 交互式图表库
- MathJax:前端数学公式渲染引擎
- SoundRecorder:前端 HTML5 录音库
- ZeroClipboard:前端剪贴板支持
- JavaScript MD5:前端 JavaScript MD5 库
- ReconnectingWebSocket:前端 WebSocket 重连库
- to-markdown:前端 HTML 转换 Markdown
- UAParser.js:前端 User-Agent 解析库
- Sass:前端 CSS 处理工具
- jsoup:Java HTML 解析器
- pegdown:Java Markdown 处理库
- Apache Commons:Java 工具库集
- Jodd:Java 工具库集
- emoji-java:Java Emoji 处理库
- User-Agent-Utils:Java User-Agent 解析库
- Druid:Java 数据库连接池
- FreeMarker:好用的 Java 模版引擎
- Latke:Java Web 框架
- NetBeans:全宇宙暂时排名第三的 IDE
下一代的社区系统,为未来而构建
转载于:https://www.cnblogs.com/lanzhi/p/6467754.html
Java 社区平台 - Sym 1.7.0 发布相关推荐
- Java 社区平台 Sym 2.6.0 发布,增加帖子列表渲染方式
新增特性 568 帖子列表显示方式 592 帖子锁定 596 领域可设置是否渲染导航 细节改进 588 数据库使用 utf8mb4 字符集 591 默认使用中文初始化 602 性能优化 607 用户可 ...
- Java 开源开发平台 O2OA V7.1.0 发布,人力资源办公平台及手写签批上线
O2OA V7.1.0发布,新增了[人力资源办公平台]和版式公文中的[手写签批]功能. [人力资源办公平台]是使用O2OA开发平台设计并开发的一套适合于人力资源管理的办公系统.该平台将人力资源管理的所 ...
- Java 开源办公开发平台 O2OA V5.3.0 发布 | 移动版H5发布,服务器性能优化升级
O2OA此次发布的移动端H5版本,拥有高度的灵活性.强大的交互功能.丰富的适配平台,同时拥有齐全的页面组件,功能组合极其便利.客户在使用移动端H5进行办公时,能够更高效地实现动态信息确认.助力企业协同 ...
- 开源java企业网站建设系统MiinCMP1.0发布!
Juuluu MiinCMP 微你型JAVA企业网站系统,是一款可运行于128M-256M超低内存下的企业网站系统,MiinCMP主要用于解决国内JAVA成本高昂,中小建站建 设 公司用不起java的 ...
- 开源并“免费”的Linux平台DAW——Ardour 4.0发布
Ardour团队日前在官网发布声明,宣布正式发布Ardour 4.0. Ardour是国际著名的.唯一开源并免费的Linux平台DAW,也就是一种数字音频工作站.你可以使用它来录制,编辑和混合多轨音频 ...
- 开源进展|区块链跨链协作平台WeCross v1.1.0发布
WeCross是完全开源的区块链跨链协作平台,致力于促进跨行业.机构和地域的跨区块链信任传递和商业合作,有助于实现异构区块链系统之间安全可信的互操作. 2020年12月,WeCross v1.0.0正 ...
- 谷歌:明年开始对应用内购买抽取 30% 分成;钉钉创始人无招将离任;Java O2OA V5.2.0 发布|极客头条
整理 | 郑丽媛 头图 | CSDN 下载自东方 IC 扫描上方二维码,快来收听极客头条音频版吧,智能播报由出门问问「魔音工坊」提供技术支持. 「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋 ...
- JavaMelody 1.77.0 发布,Java 应用监控平台
JavaMelody 1.77.0 发布了,JavaMelody 是一个监控系统,目标是在 QA 和生产环境中监控 Java 或 Java EE 应用程序. 更新内容如下: fix: When usi ...
- java 开源sns_JEESNS V1.0发布,JAVA 开源 SNS 社交系统
JEESNS V1.0 发布了,本次更新内容: 增加后台管理员授权与取消功能 增加私信模块 解决在微博页面,左侧微博点赞过后,左侧展示列表小手会变黑,但是右侧热门出小手依然是白色 修复后台添加栏目.文 ...
- mysql 源码设计,java+mysql大学网络社区平台设计+源代码
摘要如今,信息管理与信息系统的网络平台上,更多的都是一些静态信息的介绍,缺乏老师与老师之间, 老师与同学之间信息的交流的功能. 因此, 需要建立一个从 Web 1.0转换到 Web 2.0 的, 能够 ...
最新文章
- [kuangbin带你飞]专题七线段树 更新ing
- “python不是内部命令或外部命令,也不是可执行程序解决方案”的解决方案
- Spring学习总结(6)——Spring之核心容器bean
- SOPC第三课---同时点亮4个LED灯闪烁
- java的spinner_java中的spinner | 学步园
- 获取2个地址之间的距离(高德API)
- 如何在 ASP.Net Core 中使用 Lamar
- 企业实战04:Oracle数据库_管理表
- java replace stringbuilder_【基础篇】揭开String、StringBuilder以及StringBuffer的神秘面纱...
- mysql binlog size_设置max_binlog_size和expire_logs_days参数,设置mysql数据库bin log清除机制...
- Python--turtle绘图模块讲解
- opencv3 学习三 - 图像输入输出显示等
- java排序方式(冒泡,选择,JDK)
- [分块][离散化] Bzoj P2724 蒲公英
- SYNwall:零配置物联网防火墙
- 全局钩子,解决命名烦恼!——代码翻译小工具。
- TF-IDF算法介绍及实现
- java背景颜色代码_java设定背景颜色
- MIPI扫盲——DSI介绍(一)
- 08年度的佳作——《真・恋姫†無双》玩后感(蜀国篇)+AGTH真正提取大法
热门文章
- 网络流行简笔画图片大全,网络的简笔画图片
- WinXP去掉桌面图标阴影
- Task07: 凸优化;梯度下降;优化算法进阶 学习笔记
- C# dataGridView控件单元格底色 dataGridView背景色 背景色调整 Header背景色前景色
- Elasticsearch:如何在聚合时选择所需要的 bucket 并进行可视化
- Pygame实战:Python趣味编程之我的兔子终于变了游戏啦
- 新书出版:《数字滤波器的MATLAB与FPGA实现——Altera/Verilog版(第2版)》已开始印刷出版
- C语言中ret的作用,c-RET抑制剂 | c-RET Inhibitor
- android recyclerview 滑动状态,RecyclerView的滑动监听
- 微信撤回消息在服务器可以看到吗,微信撤回消息可以查看了,对方撤回了什么一目了然...