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+

步骤

  1. 下载源码
  2. 解压后修改 src/main/resources/local.properties 中的数据库配置,并创建数据库
  3. 可能需要修改 latke.properties 中的端口为容器端口
  4. 可能需要修改 init.properties 中的管理员账号
  5. 使用 mvn install 进行构建
  6. 将构建好的 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 发布相关推荐

  1. Java 社区平台 Sym 2.6.0 发布,增加帖子列表渲染方式

    新增特性 568 帖子列表显示方式 592 帖子锁定 596 领域可设置是否渲染导航 细节改进 588 数据库使用 utf8mb4 字符集 591 默认使用中文初始化 602 性能优化 607 用户可 ...

  2. Java 开源开发平台 O2OA V7.1.0 发布,人力资源办公平台及手写签批上线

    O2OA V7.1.0发布,新增了[人力资源办公平台]和版式公文中的[手写签批]功能. [人力资源办公平台]是使用O2OA开发平台设计并开发的一套适合于人力资源管理的办公系统.该平台将人力资源管理的所 ...

  3. Java 开源办公开发平台 O2OA V5.3.0 发布 | 移动版H5发布,服务器性能优化升级

    O2OA此次发布的移动端H5版本,拥有高度的灵活性.强大的交互功能.丰富的适配平台,同时拥有齐全的页面组件,功能组合极其便利.客户在使用移动端H5进行办公时,能够更高效地实现动态信息确认.助力企业协同 ...

  4. 开源java企业网站建设系统MiinCMP1.0发布!

    Juuluu MiinCMP 微你型JAVA企业网站系统,是一款可运行于128M-256M超低内存下的企业网站系统,MiinCMP主要用于解决国内JAVA成本高昂,中小建站建 设 公司用不起java的 ...

  5. 开源并“免费”的Linux平台DAW——Ardour 4.0发布

    Ardour团队日前在官网发布声明,宣布正式发布Ardour 4.0. Ardour是国际著名的.唯一开源并免费的Linux平台DAW,也就是一种数字音频工作站.你可以使用它来录制,编辑和混合多轨音频 ...

  6. 开源进展|区块链跨链协作平台WeCross v1.1.0发布

    WeCross是完全开源的区块链跨链协作平台,致力于促进跨行业.机构和地域的跨区块链信任传递和商业合作,有助于实现异构区块链系统之间安全可信的互操作. 2020年12月,WeCross v1.0.0正 ...

  7. 谷歌:明年开始对应用内购买抽取 30% 分成;钉钉创始人无招将离任;Java O2OA V5.2.0 发布|极客头条

    整理 | 郑丽媛 头图 | CSDN 下载自东方 IC 扫描上方二维码,快来收听极客头条音频版吧,智能播报由出门问问「魔音工坊」提供技术支持. 「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋 ...

  8. JavaMelody 1.77.0 发布,Java 应用监控平台

    JavaMelody 1.77.0 发布了,JavaMelody 是一个监控系统,目标是在 QA 和生产环境中监控 Java 或 Java EE 应用程序. 更新内容如下: fix: When usi ...

  9. java 开源sns_JEESNS V1.0发布,JAVA 开源 SNS 社交系统

    JEESNS V1.0 发布了,本次更新内容: 增加后台管理员授权与取消功能 增加私信模块 解决在微博页面,左侧微博点赞过后,左侧展示列表小手会变黑,但是右侧热门出小手依然是白色 修复后台添加栏目.文 ...

  10. mysql 源码设计,java+mysql大学网络社区平台设计+源代码

    摘要如今,信息管理与信息系统的网络平台上,更多的都是一些静态信息的介绍,缺乏老师与老师之间, 老师与同学之间信息的交流的功能. 因此, 需要建立一个从 Web 1.0转换到 Web 2.0 的, 能够 ...

最新文章

  1. [kuangbin带你飞]专题七线段树 更新ing
  2. “python不是内部命令或外部命令,也不是可执行程序解决方案”的解决方案
  3. Spring学习总结(6)——Spring之核心容器bean
  4. SOPC第三课---同时点亮4个LED灯闪烁
  5. java的spinner_java中的spinner | 学步园
  6. 获取2个地址之间的距离(高德API)
  7. 如何在 ASP.Net Core 中使用 Lamar
  8. 企业实战04:Oracle数据库_管理表
  9. java replace stringbuilder_【基础篇】揭开String、StringBuilder以及StringBuffer的神秘面纱...
  10. mysql binlog size_设置max_binlog_size和expire_logs_days参数,设置mysql数据库bin log清除机制...
  11. Python--turtle绘图模块讲解
  12. opencv3 学习三 - 图像输入输出显示等
  13. java排序方式(冒泡,选择,JDK)
  14. [分块][离散化] Bzoj P2724 蒲公英
  15. SYNwall:零配置物联网防火墙
  16. 全局钩子,解决命名烦恼!——代码翻译小工具。
  17. TF-IDF算法介绍及实现
  18. java背景颜色代码_java设定背景颜色
  19. MIPI扫盲——DSI介绍(一)
  20. 08年度的佳作——《真・恋姫†無双》玩后感(蜀国篇)+AGTH真正提取大法

热门文章

  1. 网络流行简笔画图片大全,网络的简笔画图片
  2. WinXP去掉桌面图标阴影
  3. Task07: 凸优化;梯度下降;优化算法进阶 学习笔记
  4. C# dataGridView控件单元格底色 dataGridView背景色 背景色调整 Header背景色前景色
  5. Elasticsearch:如何在聚合时选择所需要的 bucket 并进行可视化
  6. Pygame实战:Python趣味编程之我的兔子终于变了游戏啦
  7. 新书出版:《数字滤波器的MATLAB与FPGA实现——Altera/Verilog版(第2版)》已开始印刷出版
  8. C语言中ret的作用,c-RET抑制剂 | c-RET Inhibitor
  9. android recyclerview 滑动状态,RecyclerView的滑动监听
  10. 微信撤回消息在服务器可以看到吗,微信撤回消息可以查看了,对方撤回了什么一目了然...