🚧 Symphony(引起 || 处理)Bug 日志 & PR 日志

本贴最后更新于 3023 天前,其中的信息可能已经时移俗易

由于几乎每次贡献代码,都能引起点儿 bug 出来,让我深感惭愧,故觉有必要做一下记录,避免日后重复掉坑。给 D 大添麻烦真是太不好意思了 😭
顺便记录下自己处理的 bug(两种应该都不会很多,故而 Merge 了)

🐛 查看他人主页时标签页多出匿帖
错误原因:编辑此处代码时为了解逻辑,造成标签错误闭合
此处代码定义了四个标签页,分别是帖子、回复、匿帖、匿回。代码中嵌入了显示个数的标签。少写一个,此处显示就少一个(神奇的 FreeMarker,恕我并不了解)。写错的 if 标签,是用来判断是否在查看自己的主页,只有在自己的主页下才能查看匿帖和匿回。

🐛 编辑更新帖子报 500 错误
错误原因:在添加同步开关时,针对新增文章导向的页面 post.ftl 添加了新的字段,但没有在编辑文章处对新加的字段进行赋值
此外,判断值的时候,由于 CV 代码,对值进行了错误的判断,真是蠢哭……
在做此功能时,明明搜过 post.ftl,即知道不止一个 controller 导向了 post.ftl,却没有在相应的方法上加上需要的值,导致该 controller 导向这个页面时,引用了空对象导致异常。至于 CV 代码,实在是容易引发错误啊,
日后就算 CV,只要不是同一个东西,就手敲改写

🐛 同步文章失败
错误原因:蠢。。。瞎。。。
明明不到两行的位置下面就有自己打算添加的代码,没看到,添加重了不说,还特么添加错了 orz
太毛糙,急于提交代码,没有改后进行基本的测试。
缺少艺术家那种再小的细节也要认真处理的匠心、耐心……

🐛
错误原因:pegdown 对于纯 html 解析的不够完善,会进入死循环,可参考:PegdownIssue
这个问题一开始我跑偏了,试图从 pegdown 入手解决(心真大。。。),然而纠结了两三天的代码,并没有什么很好的解决办法(实际上,由于 eclipse 对于 maven 项目源码查看的问题,我跟踪代码困难重重,基本靠猜……),最终反过来还是在 sym 上入手,然而问题来了,虽然连蒙带猜的发现,对于纯 html,如果外面包裹上一层 < p > 标签,就可以解决,然而对于非纯 html 的 MD 语法就不行了(然而我由于太激动以为解决了就 PR 了,给自己造成了代码不同步的麻烦。。。说多了都是泪。 下次 PR 前一定要自己测清楚,之前的用例必须通过再说,一旦 PR 了,要改的话最好先合并了再改)

💄 升级 emoji 表情
TAPR(Thinking After PR):这次改动主要在图片文件上,原 emojify 是基于 gemoji 的,故而支持 alias 解析,而 twemoji 并没有 alias 一说,表情多达两千,看解析似乎是通过 unicode 码,具体怎么取调用,我是没看懂,不过感觉可能是那种选图的方式,其 emoji 图片命名是通过 codepoint,所以一开始的方案是,转换 alias 到 unicode,然后再转换为 codepoint,再转换为路径(sym 使用图库的方式比较偏门,不按他们的套路来,等同于只用了图片素材)。由此纠结了很久,诸如如何处理转换不了的,有没与可能通过 codepoint 转换为 alias 的,多余的图片是否保留等,一一搞定,到了最后,处理弹出快捷表情列表的时候,发现之前的方法统统不行了。。。强行做也行,无非就是再加一个 ajax,去后台获取 alias,然而为了这么个功能,在前端加了两个 ajax 请求,刚在看 web 性能的我觉得有点蛋疼,于是放弃了,同时回滚了两天的修修补补,在五点快下班的时候,用了大概三个小时,进行了图片文件改名,也是之前讨论的第二方案。一开始就感觉改名对代码改动最小,是比较靠谱的一个方案,但是 codepoint 不知到如何转换为 alias,后来做的时候已经通过 alias 生成了 codepoint,现在只要对应一下,写个脚本改就行了(脚本写的很丑陋就不放了,多谢 sublime 列编辑……)
说这么多,总结一下就两点: 对原逻辑改动最小的总是最优办法;重点是如何达到目的,而不是考虑解决办法看起来是否炫酷优雅。。

  • B3log

    B3log 是一个开源组织,名字来源于“Bulletin Board Blog”缩写,目标是将独立博客与论坛结合,形成一种新的网络社区体验,详细请看 B3log 构思。目前 B3log 已经开源了多款产品:SymSoloVditor思源笔记

    1063 引用 • 3455 回帖 • 165 关注
  • Sym

    Sym 是一款用 Java 实现的现代化社区(论坛/BBS/社交网络/博客)系统平台。

    下一代的社区系统,为未来而构建

    524 引用 • 4601 回帖 • 701 关注
  • 开源

    Open Source, Open Mind, Open Sight, Open Future!

    409 引用 • 3587 回帖 • 1 关注
  • Bug

    Bug 本意是指臭虫、缺陷、损坏、犯贫、窃听器、小虫等。现在人们把在程序中一些缺陷或问题统称为 bug(漏洞)。

    76 引用 • 1742 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • 千万不要有愧疚感。你能一起帮忙维护这个开源项目已经很好了,我们这个不是火箭上天的工程,所以上线后再测试也是可以有的。

    说起细心、耐心来,确实是个习惯,但不一定这样做就是好的或者对的。我们都知道看待事情应该分多个角度,非要衡量对错的话我想唯一标准就是看“大部分人”是否都能接受罢了。讲道理就事论事,这几个 bugs 其实也增加我们之间的沟通,并且也有其他人发现了 bug 并且报告给了我们,对于我个人来说倍感欣慰啊。说大了,这才是一个生态系统的价值,我们的目标不是产出一个 Sym 程序,而是将对这个程序、对我们在做的事情感兴趣的人连接起来,这个代谢过程才是真正的价值。

    总之,还要谢谢你的。天冷了,多喝开水~

    1 回复
  • ZephyrJung

    相比愧疚感,更多的还是烦恼自己水平问题
    希望能在不断贡献代码中,让自己成为代码的艺术家 💰

ZephyrJung
一切有为法,如梦幻泡影,如露亦如电,应作如是观 北京

推荐标签 标签

  • HHKB

    HHKB 是富士通的 Happy Hacking 系列电容键盘。电容键盘即无接点静电电容式键盘(Capacitive Keyboard)。

    5 引用 • 74 回帖 • 494 关注
  • BookxNote

    BookxNote 是一款全新的电子书学习工具,助力您的学习与思考,让您的大脑更高效的记忆。

    笔记整理交给我,一心只读圣贤书。

    1 引用 • 1 回帖
  • 黑曜石

    黑曜石是一款强大的知识库工具,支持本地 Markdown 文件编辑,支持双向链接和关系图。

    A second brain, for you, forever.

    21 引用 • 204 回帖 • 1 关注
  • 学习

    “梦想从学习开始,事业从实践起步” —— 习近平

    172 引用 • 516 回帖
  • 周末

    星期六到星期天晚,实行五天工作制后,指每周的最后两天。再过几年可能就是三天了。

    14 引用 • 297 回帖
  • 面试

    面试造航母,上班拧螺丝。多面试,少加班。

    325 引用 • 1395 回帖
  • 叶归
    5 引用 • 16 回帖 • 9 关注
  • 以太坊

    以太坊(Ethereum)并不是一个机构,而是一款能够在区块链上实现智能合约、开源的底层系统。以太坊是一个平台和一种编程语言 Solidity,使开发人员能够建立和发布下一代去中心化应用。 以太坊可以用来编程、分散、担保和交易任何事物:投票、域名、金融交易所、众筹、公司管理、合同和知识产权等等。

    34 引用 • 367 回帖
  • SOHO

    为成为自由职业者在家办公而努力吧!

    7 引用 • 55 回帖 • 5 关注
  • OpenResty

    OpenResty 是一个基于 NGINX 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。

    17 引用 • 56 关注
  • 一些有用的避坑指南。

    69 引用 • 93 回帖
  • 资讯

    资讯是用户因为及时地获得它并利用它而能够在相对短的时间内给自己带来价值的信息,资讯有时效性和地域性。

    56 引用 • 85 回帖 • 1 关注
  • 人工智能

    人工智能(Artificial Intelligence)是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门技术科学。

    157 引用 • 290 回帖
  • GitLab

    GitLab 是利用 Ruby 一个开源的版本管理系统,实现一个自托管的 Git 项目仓库,可通过 Web 界面操作公开或私有项目。

    46 引用 • 72 回帖 • 1 关注
  • Python

    Python 是一种面向对象、直译式电脑编程语言,具有近二十年的发展历史,成熟且稳定。它包含了一组完善而且容易理解的标准库,能够轻松完成很多常见的任务。它的语法简捷和清晰,尽量使用无异义的英语单词,与其它大多数程序设计语言使用大括号不一样,它使用缩进来定义语句块。

    556 引用 • 674 回帖
  • 宕机

    宕机,多指一些网站、游戏、网络应用等服务器一种区别于正常运行的状态,也叫“Down 机”、“当机”或“死机”。宕机状态不仅仅是指服务器“挂掉了”、“死机了”状态,也包括服务器假死、停用、关闭等一些原因而导致出现的不能够正常运行的状态。

    13 引用 • 82 回帖 • 81 关注
  • Thymeleaf

    Thymeleaf 是一款用于渲染 XML/XHTML/HTML5 内容的模板引擎。类似 Velocity、 FreeMarker 等,它也可以轻易的与 Spring 等 Web 框架进行集成作为 Web 应用的模板引擎。与其它模板引擎相比,Thymeleaf 最大的特点是能够直接在浏览器中打开并正确显示模板页面,而不需要启动整个 Web 应用。

    11 引用 • 19 回帖 • 380 关注
  • Latke

    Latke 是一款以 JSON 为主的 Java Web 框架。

    71 引用 • 535 回帖 • 819 关注
  • Wide

    Wide 是一款基于 Web 的 Go 语言 IDE。通过浏览器就可以进行 Go 开发,并有代码自动完成、查看表达式、编译反馈、Lint、实时结果输出等功能。

    欢迎访问我们运维的实例: https://wide.b3log.org

    30 引用 • 218 回帖 • 642 关注
  • Git

    Git 是 Linux Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

    211 引用 • 358 回帖 • 1 关注
  • Docker

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的操作系统上。容器完全使用沙箱机制,几乎没有性能开销,可以很容易地在机器和数据中心中运行。

    494 引用 • 928 回帖
  • Logseq

    Logseq 是一个隐私优先、开源的知识库工具。

    Logseq is a joyful, open-source outliner that works on top of local plain-text Markdown and Org-mode files. Use it to write, organize and share your thoughts, keep your to-do list, and build your own digital garden.

    7 引用 • 69 回帖 • 1 关注
  • FreeMarker

    FreeMarker 是一款好用且功能强大的 Java 模版引擎。

    23 引用 • 20 回帖 • 459 关注
  • React

    React 是 Facebook 开源的一个用于构建 UI 的 JavaScript 库。

    192 引用 • 291 回帖 • 383 关注
  • MyBatis

    MyBatis 本是 Apache 软件基金会 的一个开源项目 iBatis,2010 年这个项目由 Apache 软件基金会迁移到了 google code,并且改名为 MyBatis ,2013 年 11 月再次迁移到了 GitHub。

    173 引用 • 414 回帖 • 367 关注
  • RYMCU

    RYMCU 致力于打造一个即严谨又活泼、专业又不失有趣,为数百万人服务的开源嵌入式知识学习交流平台。

    4 引用 • 6 回帖 • 53 关注
  • 京东

    京东是中国最大的自营式电商企业,2015 年第一季度在中国自营式 B2C 电商市场的占有率为 56.3%。2014 年 5 月,京东在美国纳斯达克证券交易所正式挂牌上市(股票代码:JD),是中国第一个成功赴美上市的大型综合型电商平台,与腾讯、百度等中国互联网巨头共同跻身全球前十大互联网公司排行榜。

    14 引用 • 102 回帖 • 319 关注