简介

Sym 是一个用 Java 写的实时论坛,欢迎来体验

初衷

Sym 的诞生是有如下几点原因:

  • 我们想实现一种新的网络社区体验,独立博客+社区互动
  • 大多数论坛用户体验不够现代化,想做一个和聊 QQ 一样体验的论坛
  • 已有的用 Java 写的论坛真的很少/丑,并且大多已经不再维护

基本理念

实时交互

在浏览帖子时,传统论坛都是需要刷新页面来查看回帖的。Sym 在类似的用户交互场景上是基于 WebSocket 技术进行架构的,看帖时不需要刷新页面也可以看到其他人回帖。

HTML5

Sym 使用了很多 HTML5 提供的技术特性,比如通过使用本地存储防止编辑帖子/评论时内容丢失;使用了音频特性来进行帖子/评论音频录制;复制/粘贴上传图片等等。

运用这些技术,Sym 可以让用户在分享、灌水时更加便捷、舒服 

积分系统

积分系统是所有论坛的基础/标配系统之一吧,好玩是一方面,另一方面是量化每个用户的价值。Sym 的积分系统参考了 V2EX 的积分系统,未来将会加入更多动态特性,比如用户阵营汇率、系统运营参数等。

互联

Sym 提供了 API 进行帖子、评论的同步(B3log 构思),目前 Solo 博客系统已经可以完整和 Sym 保持内容同步。

功能图解

首页

首页使用 Reddit 热帖排序算法,基于用户投票和时间来决定首页内容。另外,列表上面的每篇帖子都有一个小红条,表示该帖的当前热度(实时浏览/评论)。

帖子

个人设置

发布选择

目前有 4 类帖子:

  • 文章:普通的帖子,注重作者分享经验和见解
  • 思绪:记录写作过程,实例请看这里
  • 讨论组:邀请好友进行私密交流,其他用户看不到具体内容和评论
  • 同城广播:发起你所在城市的招聘、Meetup 等

发布编辑

  • Markdown 编辑器
  • Chrome 下可以直接粘贴图片,其他浏览器支持拖拽
  • 除了使用文字,也可以在帖子内一键进行录音
  • 支持标准 Emoji 表情
  • 积分打赏

移动端

移动端目前除了不能录音外,其他功能和 PC 端保持一致。

首页

浏览帖子

评论区

发布

安装

需求:Maven3+、MySQL5+、Jetty9+

  1. 下载源码
  2. 解压后修改 src/main/resources/local.properties 中的数据库配置,并创建数据库
  3. 可能需要修改 latke.properties 中的端口为容器端口
  4. 可能需要修改 init.properties 中的管理员账号
  5. 使用 mvn install 进行构建
  6. 部署到 Servlet 容器的 ROOT 下并启动容器,数据库表会在第一次启动时自动建立

注意:

  • 只能部署到 ROOT 中,线上环境建议使用反向代理

配置

  • 图片上传使用的是七牛,需要配置 symphony.properties 中的 qiniu.* 属性
  • 邮件发送使用的是 SendCloud,需要配置 symphony.properties 中的 sendcloud.* 属性

用户注册时是启用邮件验证的,如果需要修改请参考相关代码。

商用授权

请看这里

思绪

在实现 B3log 构思的这几年:

  • 我们见证了 xAE(GAE/BAE/SAE/etc)的兴起与没落。2009 年选择了 GAE 作为服务器,并开始实现 Latke 框架来解决跨云平台,直到今年告别 GAE,不得不感叹技术更迭之快
  • 感受到了自造轮子的优缺点,并且可以肯定一点:对于一个想要长久的产品来说,自制技术框架优势远大于劣势
  • 一个好玩的产品或说是细节特性然并卵,需要做的是一个能够持续提供用户价值的产品/特性
  • 虽然直到目前 B3log 系产品用户不多,但我们已经初步证明了:Java 用来实现博客、论坛没有什么不好的(仅次于 PHP 吧)
  • 先完成本职工作,再用开源的产品/经验来进行工作相关结合与提升

Java 实时论坛 - Sym 1.3.0 发布的更多相关文章

  1. Java 实时论坛 - Sym 1.4.0 发布

    简介 Sym 是一个用 Java 写的实时论坛,欢迎来体验! 如果你需要搭建一个企业内网论坛,请使用 SymX. 作者 Sym 的主要作者是 Daniel 与 Vanessa,所有贡献者可以在这里看到 ...

  2. Java 社区论坛 - Sym 1.5.0 发布

    简介 Sym 是一个用 Java 写的实时论坛,欢迎来 体验!(如果你需要搭建一个企业内网论坛,请使用 SymX) 非常详细的 Sym 功能点脑图 如果你在搭建或者二次开发时碰到问题,欢迎加 Q 群 ...

  3. Java 社区论坛 - Sym 1.6.0 发布

    简介 Sym 是一个用 Java 写的现代化的社区论坛,欢迎来体验!(如果你需要搭建一个企业内网论坛,请使用 SymX) 非常详细的 Sym 功能点脑图 Sym 的诞生是有如下几点原因: (正版) 好 ...

  4. Java 社区平台 - Sym 1.7.0 发布

    English | 中文 简介 Symphony([ˈsɪmfəni],n.交响乐)是一个现代化的社区平台,因为它: 实现了面向内容讨论的论坛 包含了面向用户分享.交友.游戏的社交网络 集成了聚合独立 ...

  5. Java 开源博客 Solo 1.4.0 发布 - 简化

    Solo 1.4.0 正式发布了!这个版本主要是简化了配置项,修复了一些缺陷并改进了很多细节体验,感谢一直以来关注和支持我们的朋友! 只需一个命令即可启动(不需要安装数据库.部署容器):也可以通过 w ...

  6. Java 开源博客 Solo 1.5.0 发布 - 新皮肤

    Solo 1.5.0 正式发布了!这个版本主要是加入了 一款新皮肤 next,感谢一直以来关注和支持我们的朋友! 只需一个命令即可启动(不需要安装数据库.部署容器):也可以通过 war 方式部署容器, ...

  7. 网页动物园2.0发布,经过几个月的努力,采用JAVA编写!

    网页动物园2.0发布,经过几个月的努力,采用JAVA编写! 网页动物园2.0 正式发布!游戏发布 游戏名称: 网页动物园插件 游戏来源: 原创插件 适用版本: Discuz! X1.5 - X3.5 ...

  8. 实时流式计算框架Storm 0.9.0发布通知(中文版)

    Storm0.9.0发布通知中文翻译版(2013/12/10 by 富士通邵贤军 有错误一定告诉我 shaoxianjun@hotmail.com^_^) 我们很高兴宣布Storm 0.9.0已经成功 ...

  9. 基于Java图片数据库Neo4j 3.0.0发布 全新的内部架构

    基于Java图片数据库Neo4j 3.0.0发布 全新的内部架构 Neo4j 3.0.0 正式发布,这是 Neo4j 3.0 系列的第一个版本.此版本对内部架构进行了全新的设计;提供给开发者更强大的生 ...

随机推荐

  1. drf05 路由Routers

    对于视图集ViewSet,我们除了可以自己手动指明请求方式与动作action之间的对应关系外,还可以使用Routers来帮助我们快速实现路由信息. REST framework提供了两个router ...

  2. 【转载】VMware完全卸载

    出现安装时出现vmwareworkstationxxx.msi failed问题是官方解决方案...真心详细. http://kb.vmware.com/selfservice/microsites/ ...

  3. Microsoft Visual Studio 常用快捷键总结

    table tr:nth-child(odd){ background: #FFFFCC; } table tr:nth-child(even){ background: #FFFF99; } Mic ...

  4. 【剑指Offer】61、序列化二叉树

      题目描述:   请实现两个函数,分别用来序列化和反序列化二叉树.   解题思路:   序列化是指将结构化的对象转化为字节流以便在网络上传输或写到磁盘进行永久存储的过程.反序列化是指将字节流转回结构 ...

  5. jdk8时间格式处理

    SimpleDateFormat 是线程不安全的类,一般不要定义为 static 变量,如果定义为 static,必须加锁,或者使用 DateUtils 工具类. 正例:注意线程安全,使用 DateU ...

  6. C# 实现串口发送数据(不用串口控件版)

    参考:https://blog.csdn.net/mannix_lei/article/details/79979432 https://www.cnblogs.com/ElijahZeng/p/76 ...

  7. 【hihocoder 1329】平衡树·Splay(Splay做法)

    [题目链接]:http://hihocoder.com/problemset/problem/1329 [题意] [题解] 插入操作:-,记住每次插入之后都要把它放到根节点去就好; 询问操作:对于询问 ...

  8. 图论·Dijkstra·HDU2066

    这道题刚做的时候用的Floyd,果断超时,于是去学了Dijkstra,主函数和Floyd很像. 原理: 从起点开始,找最近的又未标记的点,记录距离,标记此点,再找此点附近相连的未标记的点,记录下距离, ...

  9. (26)改变自动扫描的包【从零开始学Spring Boot】

    在开发中我们知道Spring Boot默认会扫描启动类同包以及子包下的注解,那么如何进行改变这种扫描包的方式呢,原理很简单就是: @ComponentScan注解进行指定要扫描的包以及要扫描的类. 接 ...

  10. netty helloWord (一)

    什么是nettty netty是基于javaNio模型的网络编程框架.很多框架底层也是用netty实现的 比如dubbo 与NIO的区别 1.简化了API的使用.基于事件驱动.只需要在对应的事件写相应 ...