上篇文 我们介绍了适用 Flarum 的 Docker LNMP 环境的配置,本文将进一步从本地环境搭建、版本控制的设计的角度,介绍一套可操作的 Flarum 项目配置与二次开发迭代方案。

目前本文方案在 0xFFFF 社区 运行良好,它遵循了现有的 Composer 加载,版本管理的机制,可以跟踪本地的修改、随时切换官方分支或定制开发的分支,避免那些诸如定制修改丢失、与最新版本代码难以同步等问题。若你想用 Flarum 搭建论坛并想对它进行二次开发调整,不妨试试本文方案。

本文方案的前置技能要求:

  • Unix / Linux 命令行操作
  • 对 Composer 基础认识
  • 熟练的 Git 操作(基本操作、分支、远程仓库、子模块等概念)

注:本文基于当前最新的 Beta 13 版本 展开,列出的脚本与命令,需要在 Unix 命令行环境运行(Linux 或 macOS,Windows 最好安装 WSL 以及 Docker)。

阅读全文 »

Flarum 是一个简洁的轻论坛程序,交互体验做的十分不错,也有良好的插件扩展机制。接触过的人可能知道,它目前还在 beta,在功能更新和迭代方面不算稳定,部署、修改与定制功能更是一件麻烦的事情。

在 2018 年,我基于它构建了 0xFFFF 社区。经过两年的不断推翻与修改,慢慢沉淀下了一套适合持续迭代的 Flarum 部署与开发迭代方案。

这里主要介绍 Flarum 在服务器和本地开发环境的部署方案。本文假定读者对 Linux 命令行操作、Docker 与 Docker Compose 有基本的了解。相关文件均已开源在 GitHub: zgq354/flarum-docker-env

Why Docker

在 Linux 折腾 LAMP/LNMP 的同学可能经常被各种环境配置的细节问题折磨,诸如 Nginx 配置、“伪静态”(URL Rewrite)、各种文件权限、所有者问题等等。好不容易配置好了,过一两个月可能已经完全忘记,在未来需要修改或更新之时,如西西弗斯受罚一般,重重复复做着相似的事。

基于 Docker,只需要一系列配置文件,就可以从各种各样的针对手动配置解放出来,通过 Git 管理配置的历史版本。可以随时切换环境配置,而不担心因时间的流逝忘记当初是怎么搞的。

接下来会介绍这个方案的细节,若只想把项目跑起来,可以直接跳到本文的 “使用” 小节。

阅读全文 »

B站在 5.3 那天出了一个 演讲视频,当时大概看了一遍,想到互联网正在改变很多现状,还是挺认同B站背后反映的互联网下 “认知盈余” 的现象。但这种表达形式让我感觉十分做作和尴尬,压根谈不上喜欢,也就没多留意细节。

或许也是这样的做作引发的热烈讨论吧,今天在朋友圈注意到了这一画面,在“自由学习新的语言”这一帧画面中,看到了当下在啃书学习领域最流行的 APP — MarginNote,突然意识到了某种差距所在。

阅读全文 »

上篇博文 引出了“硬币模型”,从“抛硬币”的角度描述了计算机数据的最本质属性。同时也介绍了为若干硬币赋予现实意义、实现更多数据在计算机表示的基本思路。

接下来我也会具体展开介绍一下数字、文字、音频、图像、视频在“硬币体系”下的表达,为你带来更直观的印象,本篇将重点介绍“数字”的表达。

1. 放下“硬币”

读过上篇博文的你,大概已经有了解我们说的“硬币体系”,它其实就是数学角度的 “二进制位”,这里先明确一个设定:

二进制位的值抛硬币结果
0反面
1正面

为了更好地表达更复杂的概念,这时候的你需要逐渐放下“硬币”这样的模型,去适应那由符号 0 和 1 构成的数学世界啦。

阅读全文 »

最近与几个朋友聊到了“信息的本质”相关的话题,惊讶地发现,即使是计算机相关专业在读,面对“数据究竟是怎么一回事”这个问题,许多人依然云里雾里(包括我)。

解决了这个最根本的问题,方可从计算机领域的各种复杂之中解脱出来。所以我也尝试以文章的形式梳理一下。

“数据” 与 “信息”

说到“数据”,自然和“信息”这个概念是分不开的。什么是信息呢?这个概念没有一个统一定义,但有一点可以确认的是:信息可以减少不确定性。对一件事情不确定,引入信息,把不确定变成确定,这是最基本的“通信“过程。

“通信”过程时时刻刻都在发生,你的肉眼看到的每一个画面,耳朵听到的每一点声音,神经传来的每一丝冲动,或多或少都在传递着信息,为你的大脑减少对外界的不确定性,辅助你的每一个决策。

传递神经冲动的突触

这时候,“数据”像是一种客观角度下的“信息”存在,它从某个具体的角度描述了某个事物的特征。当我们需要确定某事物在某个角度的特点,这个角度对应的“数据”便可以给我们传递应有的信息。比如说,我想知道你的期末考试成绩如何,成绩单上对应这门课的数字,可以给我带来这方面的“信息”;我们看到一段文字、一张照片,了解到一件事情的来龙去脉,文字和照片传递了“信息”,这段文字、这张照片本身就是“数据”。

从这个角度上来看,“数据”实际上是“信息”的载体,我们从某个角度,解决对客观事物的不确定性,形成“数据”;然后我们再通过“数据”解决我们自身对客观事物的不确定性。也就是说,“数据”给我们传递了“信息”。以本文为例,我用文字记下了这篇文章,你在读这篇文章的时候,了解了我所讨论的“数据”与“信息”是怎么一回事。

数据与信息的关系

阅读全文 »