commit 7474973e7cb6a4376c1ae0097853eadf4372a5f5
parent c50c4b873419a683208a504c8e42c8d1c2f20674
Author: Shimmy Xu <shimmy.xu@shimmy1996.com>
Date: Mon, 2 Dec 2019 15:53:12 -0500
Remove tags and categories from 2018 posts
Diffstat:
12 files changed, 197 insertions(+), 265 deletions(-)
diff --git a/content/posts/2018-01-03-my-review-of-the-last-jedi.en.md b/content/posts/2018-01-03-my-review-of-the-last-jedi.en.md
@@ -1,7 +1,5 @@
+++
title = "My Review of the Last Jedi [Spolier Alert]"
-tags = ["movie", "star-wars"]
-categories = ["geekery"]
draft = true
date = 2018-01-03
slug = "my-review-of-the-last-jedi"
diff --git a/content/posts/2018-01-15-my-very-own-avatar-icon-thingy.en.md b/content/posts/2018-01-15-my-very-own-avatar-icon-thingy.en.md
@@ -1,7 +1,5 @@
+++
title = "My Very Own Avatar Icon Thingy"
-tags = ["design", "social-network"]
-categories = ["geekery"]
draft = false
date = 2018-01-15
slug = "my-very-own-avatar-icon-thingy"
diff --git a/content/posts/2018-01-15-my-very-own-avatar-icon-thingy.zh.md b/content/posts/2018-01-15-my-very-own-avatar-icon-thingy.zh.md
@@ -1,7 +1,5 @@
+++
title = "自己画头像"
-tags = ["design", "social-network"]
-categories = ["geekery"]
draft = false
date = 2018-01-15
slug = "my-very-own-avatar-icon-thingy"
diff --git a/content/posts/2018-02-11-trying-out-mastodon.en.md b/content/posts/2018-02-11-trying-out-mastodon.en.md
@@ -1,7 +1,5 @@
+++
title = "Trying Out Mastodon"
-tags = ["social-network", "mastodon", "arch-linux"]
-categories = ["site-related"]
draft = false
date = 2018-02-11
slug = "trying-out-mastodon"
diff --git a/content/posts/2018-02-11-trying-out-mastodon.zh.md b/content/posts/2018-02-11-trying-out-mastodon.zh.md
@@ -1,7 +1,5 @@
+++
title = "Mastodon 尝鲜"
-tags = ["social-network", "mastodon", "arch-linux"]
-categories = ["site-related"]
draft = false
date = 2018-02-11
slug = "trying-out-mastodon"
diff --git a/content/posts/2018-03-18-my-keyboards-2018-edition.en.md b/content/posts/2018-03-18-my-keyboards-2018-edition.en.md
@@ -1,7 +1,5 @@
+++
title = "My Keyboards 2018 Edition"
-tags = ["keyboard"]
-categories = ["geekery"]
draft = false
date = 2018-03-17
slug = "my-keyboards-2018-edition"
diff --git a/content/posts/2018-03-18-my-keyboards-2018-edition.zh.md b/content/posts/2018-03-18-my-keyboards-2018-edition.zh.md
@@ -1,7 +1,5 @@
+++
title = "我的键盘 2018 版"
-tags = ["keyboard"]
-categories = ["geekery"]
draft = false
date = 2018-03-17
slug = "my-keyboards-2018-edition"
diff --git a/content/posts/2018-05-21-construction-finished.en.md b/content/posts/2018-05-21-construction-finished.en.md
@@ -1,7 +1,5 @@
+++
title = "Construction Finished"
-tags = ["plans"]
-categories = ["site-related"]
draft = false
date = 2018-05-21
slug = "construction-finished"
diff --git a/content/posts/2018-05-21-construction-finished.zh.md b/content/posts/2018-05-21-construction-finished.zh.md
@@ -1,7 +1,5 @@
+++
title = "施工完成"
-tags = ["plans"]
-categories = ["site-related"]
draft = false
date = 2018-05-21
slug = "construction-finished"
diff --git a/content/posts/2018-06-24-fun-with-fonts-in-emacs.en.md b/content/posts/2018-06-24-fun-with-fonts-in-emacs.en.md
@@ -2,10 +2,7 @@
title = "Fun With Fonts in Emacs"
date = 2018-06-24
slug = "fun-with-fonts-in-emacs"
-tags = ["emacs", "emacs-lisp", "font", "typesetting"]
-categories = ["geekery"]
draft = false
-series = ["fun-with-fonts"]
+++
I finally took some time to look at the my font configurations in Emacs and
diff --git a/content/posts/2018-06-24-fun-with-fonts-in-emacs.zh.md b/content/posts/2018-06-24-fun-with-fonts-in-emacs.zh.md
@@ -2,10 +2,7 @@
title = "字体配置 Emacs 篇"
date = 2018-06-24
slug = "fun-with-fonts-in-emacs"
-tags = ["emacs", "emacs-lisp", "font", "typesetting"]
-categories = ["geekery"]
draft = false
-series = ["fun-with-fonts"]
+++
我终于花了些时间清理我 Emacs 里一团糟的字体设定。在折腾这些设定的过程中,我了解
diff --git a/org/2018.org b/org/2018.org
@@ -2,13 +2,12 @@
#+HUGO_SECTION: ./posts
#+OPTIONS: author:nil
-* Geekery :@geekery:
-** TODO Review of the Last Jedi :movie:star_wars:
+* TODO Review of the Last Jedi
:PROPERTIES:
:EXPORT_HUGO_CUSTOM_FRONT_MATTER: :date 2018-01-03 :slug my-review-of-the-last-jedi
:END:
-*** TODO en
+** TODO en
:PROPERTIES:
:EXPORT_TITLE: My Review of the Last Jedi [Spolier Alert]
:EXPORT_FILE_NAME: 2018-01-03-my-review-of-the-last-jedi.en.md
@@ -114,12 +113,12 @@ Notable plots
7. R2 playing the original Leia clip.
8. Maybe hinting so many force usages in the film is to emphasize there will be
more jedi?
-** DONE My Very Own Avatar Icon Thingy :design:social_network:
+* DONE My Very Own Avatar Icon Thingy
:PROPERTIES:
:EXPORT_HUGO_CUSTOM_FRONT_MATTER: :date 2018-01-15 :slug my-very-own-avatar-icon-thingy
:END:
-*** DONE en
+** DONE en
:PROPERTIES:
:EXPORT_TITLE: My Very Own Avatar Icon Thingy
:EXPORT_FILE_NAME: 2018-01-15-my-very-own-avatar-icon-thingy.en.md
@@ -150,7 +149,7 @@ I isolated out the "rising star" part of the original logo and discarded the win
I also played around with several alternative color schemes, i.e. inverted versions. Maybe I will use these as icons for other projects. So far, I have updated all my actively used social network profiles and changed the favicon of this blog. Hopefully this icon would be unique enough for others to recognize me across different social networks.
-*** DONE zh
+** DONE zh
:PROPERTIES:
:EXPORT_TITLE: 自己画头像
:EXPORT_FILE_NAME: 2018-01-15-my-very-own-avatar-icon-thingy.zh.md
@@ -181,12 +180,173 @@ I also played around with several alternative color schemes, i.e. inverted versi
我还尝试了其他不同的配色,比如反色版本,以后可能会拿来作为我其他项目的图标。我所有还活跃的社交网站都已经换上了新头像,包括网站图标。这下大家应该可以更容易地在不同网站上认出我了XD。
-** DONE My Keyboards 2018 Edition :keyboard:
+* DONE Trying Out Mastodon
+:PROPERTIES:
+:EXPORT_HUGO_CUSTOM_FRONT_MATTER: :date 2018-02-11 :slug trying-out-mastodon
+:END:
+
+** DONE en
+:PROPERTIES:
+:EXPORT_TITLE: Trying Out Mastodon
+:EXPORT_FILE_NAME: 2018-02-11-trying-out-mastodon.en.md
+:END:
+
+As mentioned in my [[https://www.shimmy1996.com/en/posts/2017/10/22/no-more-disqusting-disqus/][previous post]], I am not really accustomed to posting on social networks. However, the other day I encountered a term I haven't heard in a long time: micro-blogging. Yes, quite a few social networks, Twitter for instance, is before anything a micro-blogging service. This definition of Twitter makes it immensely more appealing to me: it's a bite-sized blog for random thoughts, funny incidents, and many other pieces of my life that might not fit well with a regular blog post. However, I still find posting on Twitter has the 'broadcasting to the entire Internet' feeling stamped into it. Guess I'll just host my own then.
+
+[[https://github.com/tootsuite/mastodon][Mastodon]] turned out to be one such solution. Mastodon's federated and decentralized nature makes it ideal for someone like me who struggles between building my online identity while minimizing the number of different companies I expose my information to. If people are willing to give away their personal information for fancy profile pictures, then hosting a Mastodon wouldn't seem like such a bad deal.
+
+*** Installation on Arch Linux
+It was kinda surprising that there doesn't exist a Arch Linux specific installation guide for Mastodon. Not that the installation process would be more difficult on Arch Linux than Ubuntu, but installation can be made a lot due simpler to the abundance of packages. Since the [[https://github.com/tootsuite/documentation/blob/master/Running-Mastodon/Production-guide.md][official production guide]] is already fairly comprehensive, I'll just document some Arch Linux specific steps here.
+
+**** Dependencies
+Here's a table detailing all the dependencies and their corresponding packages in Arch Linux. There really is no need to git clone anything. =npm= was also required in the installation process, but was not listed in the official guide.
+
+| Dependency | Package |
+| =node.js= 6.x | [[https://www.archlinux.org/packages/community/x86_64/nodejs-lts-boron/][=nodejs-lts-boron=]] |
+| =yarn= | [[https://www.archlinux.org/packages/community/any/yarn/][=yarn=]] |
+| =imagemagick= | [[https://www.archlinux.org/packages/extra/x86_64/imagemagick/][=imagemagick=]] |
+| =ffmpeg= | [[https://www.archlinux.org/packages/extra/x86_64/ffmpeg/][=ffmpeg=]] |
+| =libprotobuf= and =protobuf-compiler= | [[https://www.archlinux.org/packages/?sort=&q=protobuf&maintainer=&flagged=][=protobuf=]] |
+| =nginx= | [[https://www.archlinux.org/packages/extra/x86_64/nginx/][=nginx=]] |
+| =redis= | [[https://www.archlinux.org/packages/community/x86_64/redis/][=redis=]] |
+| =postgresql= | [[https://www.archlinux.org/packages/extra/x86_64/postgresql/][=postgresql=]] |
+| =nodejs= | [[https://www.archlinux.org/packages/community/x86_64/nodejs/][=nodejs=]] |
+| =rbenv= | [[https://aur.archlinux.org/packages/rbenv/][=rbenv=]] |
+| =ruby-build= | [[https://aur.archlinux.org/packages/ruby-build/][=ruby-build=]] |
+| =npm= | [[https://www.archlinux.org/packages/community/any/npm/][=npm=]] |
+
+For =rbenv=, I needed to add ='eval "$(rbenv init -)"= to =.bashrc= or =.zshrc= after installation as prompted by the post installation script.
+
+**** Mastodon
+Create user =mastodon= and to =sudoers= using =visudo=.
+#+BEGIN_SRC sh
+ useradd -m -G wheel -s /bin/bash mastodon
+#+END_SRC
+
+Then I can clone the repository and start [[https://github.com/tootsuite/documentation/blob/master/Running-Mastodon/Production-guide.md#nodejs-and-ruby-dependencies][installing node.js and ruby dependencies]]. This is where =npm= is required. Besides, I encountered a =ENONT= error when running =yarn= saying =./.config/yarn/global/.yarnclean= is missing, which is resolved by creating the file.
+
+**** PostgreSQL
+In addition to installing the =postgresql= package, I followed [[https://wiki.archlinux.org/index.php/PostgreSQL][Arch Wiki]] to initialize the data cluster:
+
+#+BEGIN_SRC sh
+ $ sudo su postgres
+ [postgres]$ initdb --locale $LANG -E UTF8 -D '/var/lib/postgres/data'
+#+END_SRC
+
+After starting and enabling =postgresql= with =systemctl=, I can then start the =psql= shell as the =postgres= user and create user for Mastodon (use =psql= command =\du= to check the user is actually there):
+
+#+BEGIN_SRC sh
+ $ sudo su postgres
+ [postgres]$ psql
+ [psql]# CREATE USER mastodon CREATEDB;
+ [psql]# \q
+#+END_SRC
+
+Port selection is customizable in =postgresql.service= and the port number will be used in =.env.porduction= customization.
+
+**** Redis
+Pretty much the same drill as =postgresql=, I installed =redis= and start/enabled =redis.service=. The port selection and address that have access can all be configured from =/etc/redis.conf=.
+
+**** Nginx & Let's Encrypt
+The official production guide covers this part pretty well already.
+
+**** =.env.production=
+The config file is fairly self-explanatory. The only thing I got wrong the first time is the variable =DB_HOST= for =postgresql=. I then obtained the correct path, =/run/postgresql=, by checking status of =postgresql.service=.
+
+**** Scheduling Services & Cleanups
+Again, just follow the official production guide. I installed [[https://www.archlinux.org/packages/core/x86_64/cronie/][=cronie=]] to schedule cron jobs.
+
+*** My Experience
+The web interface is fairly good, I like how I can write toots while browsing timelines instead of been forced to stay at the top of the page. I tried out quite a few Mastodon clients on my phone and I settled on [[https://pawoo.net/about][Pawoo]], which is built by Pixiv. So far Mastodon feels like a more comfy twitter to me and a platform where I am actually willing to write on. I'm pushing myself to write something on Mastodon every few days. So far it's been mostly running logs, but I'll come up more stuff to post in the future.
+
+One thing I would really like to see though is multilingual post support in Mastodon. A workaround I currently use is appending different tags for Chinese vs. English posts, which not only bloats my toots, but also fragmented my timeline so that it's only 50% comprehensible for most people. Regrettably, it seems that out of the various micro-blogging/social networking services, only [[https://code.facebook.com/posts/597373993776783][Facebook]] has something similar to this at the moment.
+
+In the footer section, I've replaced Twitter with [[https://mstdn.shimmy1996.com/@shimmy1996][my Mastodon profile]]. Feel free to take a peek inside. :P
+
+** DONE zh
+:PROPERTIES:
+:EXPORT_TITLE: Mastodon 尝鲜
+:EXPORT_FILE_NAME: 2018-02-11-trying-out-mastodon.zh.md
+:END:
+
+我在 [[https://www.shimmy1996.com/zh/posts/2017/10/22/no-more-disqusting-disqus/][上一篇日志]] 里提到过,我并不习惯于在社交网络上发帖子。不过不久之前,我偶然撞见了一个很久没有听到过的词:微型博客。不少社交网络站点,例如 Twitter ,本质上还是一个微型博客服务。这种定义下的 Twitter 对我更加具有吸引力:我可以把一些随想,趣事和生活中其他不大适合写进博客的点点滴滴塞进去。但即使如此,我还是发推有一种“向整个互联网发送座标”的感觉。嗯,那么只好自己搭建一个微型博客了。
+
+[[https://github.com/tootsuite/mastodon][Mastodon]] 就是一个很好的解决方案。对与在最大化网络人格和最小化个人信息泄露之间进退两难的我来说,存储去中心化、但实例之间又紧密相联的 Mastodon 非常理想。如果人们愿意为了好看的头像将个人信息拱手送出的话,搭建一个 Mastodon 实例可以算得上是一个划算的多的买卖。
+
+*** 在 Arch Linux 上安装 Mastodon
+我在一番搜寻后,居然没有找到一篇专门针对 Arch Linux 的 Mastodon 安装指南,这有点让我惊讶。不过得益于丰富的软件包,在 Arch Linux 上安装 Mastodon 其实比在 Ubuntu 上更加简单。 [[https://github.com/tootsuite/documentation/blob/master/Running-Mastodon/Production-guide.md][官方指南]] 上有很详尽的步骤说明,我就简单补充一些只适用于 Arch Linux 的部分。
+
+**** 软件包依赖
+我把所有依赖以及相对应的 Arch Linux 软件包都列了出来。完全没有手动克隆 git 仓库的必要。 =npm= 会在安装过程中用到,但没有在官方指南中列出。
+
+| 依赖 | 软件包 |
+| =node.js= 6.x | [[https://www.archlinux.org/packages/community/x86_64/nodejs-lts-boron/][=nodejs-lts-boron=]] |
+| =yarn= | [[https://www.archlinux.org/packages/community/any/yarn/][=yarn=]] |
+| =imagemagick= | [[https://www.archlinux.org/packages/extra/x86_64/imagemagick/][=imagemagick=]] |
+| =ffmpeg= | [[https://www.archlinux.org/packages/extra/x86_64/ffmpeg/][=ffmpeg=]] |
+| =libprotobuf= 和 =protobuf-compiler= | [[https://www.archlinux.org/packages/?sort=&q=protobuf&maintainer=&flagged=][=protobuf=]] |
+| =nginx= | [[https://www.archlinux.org/packages/extra/x86_64/nginx/][=nginx=]] |
+| =redis= | [[https://www.archlinux.org/packages/community/x86_64/redis/][=redis=]] |
+| =postgresql= | [[https://www.archlinux.org/packages/extra/x86_64/postgresql/][=postgresql=]] |
+| =nodejs= | [[https://www.archlinux.org/packages/community/x86_64/nodejs/][=nodejs=]] |
+| =rbenv= | [[https://aur.archlinux.org/packages/rbenv/][=rbenv=]] |
+| =ruby-build= | [[https://aur.archlinux.org/packages/ruby-build/][=ruby-build=]] |
+| =npm= | [[https://www.archlinux.org/packages/community/any/npm/][=npm=]] |
+
+在安装 =rbenv= 后,我需要把 ='eval "$(rbenv init -)"= 加入 =.bashrc= 或 =.zshrc= 中(安装脚本也会提示这一步骤)。
+
+**** Mastodon
+创建用户 =mastodon= 并用 =visudo= 把该用户加入 =sudoers= 。
+#+BEGIN_SRC sh
+ useradd -m -G wheel -s /bin/bash mastodon
+#+END_SRC
+
+接下来就可以克隆 Mastodon 的 git 仓库并开始 [[https://github.com/tootsuite/documentation/blob/master/Running-Mastodon/Production-guide.md#nodejs-and-ruby-dependencies][安装 node.js 和 ruby 的依赖]] 了。在这一过程中会用到 =npm= 。我在运行 =yarn= 时,遇到了一个 =ENONT= 错误:无法找到 =./.config/yarn/global/.yarnclean= 。手动创建了迷失的文件解决了这个错误。
+
+**** PostgreSQL
+除了安装 =postgresql= 软件包外, 我遵循 [[https://wiki.archlinux.org/index.php/PostgreSQL][Arch Wiki]] 里的步骤初始化了数据库集群:
+
+#+BEGIN_SRC sh
+ $ sudo su postgres
+ [postgres]$ initdb --locale $LANG -E UTF8 -D '/var/lib/postgres/data'
+#+END_SRC
+
+在开始并启用 =postgresql.service= 后,我就可以以用户 =postgres= 的身份登录 =psql= 命令行并给 Mastodon 建立用户了(可以使用 =psql= 命令 =\du= 来确认用户列表):
+
+#+BEGIN_SRC sh
+ $ sudo su postgres
+ [postgres]$ psql
+ [psql]# CREATE USER mastodon CREATEDB;
+ [psql]# \q
+#+END_SRC
+
+端口设置可以在 =postgresql.service= 里找到,这会在编辑 =.env.porduction= 时用到。
+
+**** Redis
+和 =postgresql= 差不多,我安装了 =redis= ,开始/启用了 =redis.service= 。端口选择和允许连接的地址都可以在 =/etc/redis.conf= 里设置。
+
+**** Nginx 和 Let's Encrypt
+官方指南已经提供了很详尽的步骤,这里不再赘述。
+
+**** =.env.production=
+照配置文件里的说明做就可以了。我唯一弄错的地方是连接 =postgresql= 所需的 =DB_HOST= 。在查看 =postgresql.service= 的状态后,我找到了正确的路径, =/run/postgresql= 。
+
+**** 计划进程和缓存清理
+照官方指南做就好。我安装了 [[https://www.archlinux.org/packages/core/x86_64/cronie/][=cronie=]] 来安排 cron 作业。
+
+*** 使用感受
+网页版界面很不错,我很喜欢可以一边刷时间线一边慢慢写嘟文这一点(而不是在被迫停留在页面顶端)。我在尝试了数个 Mastodon 手机客户端后选定了 Pixiv 开发的 [[https://pawoo.net/about][Pawoo]] 。到目前为止, Mastodon 给我的感觉是一个比 Twitter 更加舒适、更能激发我写东西的平台。我试着推动自己每隔几天就写一条嘟文。虽然目前为止我写的大都是跑步的记录,但我会渐渐丰富我的嘟文内容的。
+
+我很希望看到 Mastodon 对多语言嘟文提供支持。目前我用的办法是给中文和英文的嘟文打上不同的标签,但这么做不仅使嘟文更加臃肿,也使得我的时间线对大部分人来说可读性只有 50% 。可惜的是,目前的诸多社交网络里只看到 [[https://code.facebook.com/posts/597373993776783][Facebook]] 对此提供了支持。
+
+在网站页脚,我已经把 Twitter 换成了我的[[https://mstdn.shimmy1996.com/@shimmy1996][Mastodon 页面]] ,随时欢迎各位来访。
+
+* DONE My Keyboards 2018 Edition
:PROPERTIES:
:EXPORT_HUGO_CUSTOM_FRONT_MATTER: :date 2018-03-17 :slug my-keyboards-2018-edition
:END:
-*** DONE en
+** DONE en
:PROPERTIES:
:EXPORT_TITLE: My Keyboards 2018 Edition
:EXPORT_FILE_NAME: 2018-03-18-my-keyboards-2018-edition.en.md
@@ -194,14 +354,14 @@ I also played around with several alternative color schemes, i.e. inverted versi
As part of my effort to tick off the last remaining item on my site roadmap, I read through some old keyboard-related posts from my WordPress blog and decided to give them an uplift to include more recent experiments.
-**** The First Crispy Clack
+*** The First Crispy Clack
My very first mechanical keyboard is a WASD v2 104 key with Cherry MX Blue switches that I got in 2014. I picked WASD mainly because of their keyboards' minimal look and keycap customization options. I also got my first 60% in 2014, a Poker II with Cherry MX Brown. Switch selection were more limited back then, seemingly because of potential issues with Cherry's patent. Of course, switch choices is only limited if we restrict ourselves to Cherry MX compatibles, but most alternatives (Matias, Topre, buckling spring to name a few) were even harder to come by in an commonly available package that I liked.
A GH60 based 60% that I frankensteined together became my main keyboard at first. I used Cherry MX Clear switches with 62g springs (ErgoClear) on them, mostly for the fun factor instead of preference. I also found myself tinkering with the layout a lot more often than when I had the Poker II. As great as Poker II's built-in macros mapping sounds, I could never remember all the steps without taking a moment to peruse the manual. I also found myself setting macros up and yet completely forget about them ever since. With GH60's firmware, at the very least I have the configuration files to remind me of the new bindings I set up. Even with this shiny new toy though, my early experiments with keyboard layouts still had only limited success. The layout of a 60% is too standard in my opinion to justify significant changes (while maintaining QWERTY layout), i.e. there isn't really a good location to move Enter to. The few tweaks I ended up making were numpad/function key mapping and swapping out Caps Lock for Control, which at best makes my GH60 on par with any random keyboard with [[https://www.x.org/wiki/XKB/][xkb]].
On a side note, I once aspired to collect keyboards of all form factors, but soon discovered it to be a highly impractical and expansive exercise. Thus far among the more common layouts, I either owned or tried 104 key, 96 key, 87 key, 75 key, 60 key, and 40 key keyboards. Majority of these differs very little experience wise for me, except for 60% or 40%, where a bit of creativity is required to fit all the desired keys.
-**** ErgoDox and Planck
+*** ErgoDox and Planck
The first keyboard ever to trigger me to give deeper thoughts into my keyboard layout is the ErgoDox. The ErgoDox boasts a layout drastically different from traditional keyboards, and because of this, offers great flexibility over key placements: I can immediately spot seven sensible locations for the Enter key (original pinky location, four 2u keys at the thumb clusters and the lower two 1.5u vertical keys in the center). I've been using ErgoDox almost exclusively since 2015, and have grown to like it even more as I started using Emacs - having access to both Control and Alt/Meta key on the home row just feels awesome.
#+CAPTION: My ErgoDox Base Layer Layout
@@ -223,10 +383,10 @@ Planck is another keyboard that I've taken some thoughts designing layout for. I
#+LABEL: fig: my-keyboards-2018-edition-03
[[/img/posts/2018/my-keyboards-2018-edition-03.png]]
-**** Keycap Craze
+*** Keycap Craze
Ever since I discovered Geekhack, I would routinely refresh the groupbuy or interest check section for new keycap sets that other users designed. I gradually went from sets with flashy colors to those with a more muted and uniform look. I also prefer uniform keycap profiles (like DSA) with text legends than those with height gradients and graphical legends, although I find it really hard to appreciate blank keycaps. Getting a full set of keycaps with matching legends for ErgoDox is certainly no easy task (unlike Planck which is almost entirely consisted of 1u keys), and all these quirks I have made keycap shopping increasingly difficult.
-**** My Own Keyboard/Layout
+*** My Own Keyboard/Layout
I've thought about creating my own keyboard occasionally. As perfect as ErgoDox
may seem, it is somewhat bulky, and I find the thumb cluster a bit hard to
reach. For quite some time I used ~C-Home~ and ~C-End~ to move to top/bottom of a
@@ -235,7 +395,7 @@ to reach both keys (that went away when I found ~M-<~ and ~M->~ though). A slim
Since I started using Emacs as my main editor, I've been taking statistics of my key-presses with =keyfreq=. When I have gathered enough data, I might look into customizing my layout even further to suit my needs.
-**** Pixel Art
+*** Pixel Art
Like many Geekhackers out there, I made a pixel art of my keyboards and used it as my Geekhack signature.
#+CAPTION: Pixel Art of My Keyboards I, 2015
@@ -250,7 +410,7 @@ Like many Geekhackers out there, I made a pixel art of my keyboards and used it
Drawing pixel art for keyboard is a fairly interesting exercise, since it is impossible to get the ratios exactly right, I needed to strike a balance between accuracy and simplicity. I will give this a long due update when I have time.
-*** DONE zh
+** DONE zh
:PROPERTIES:
:EXPORT_TITLE: 我的键盘 2018 版
:EXPORT_FILE_NAME: 2018-03-18-my-keyboards-2018-edition.zh.md
@@ -258,14 +418,14 @@ Drawing pixel art for keyboard is a fairly interesting exercise, since it is imp
为了完成主页施工计划上的最后一条项目,我重新浏览了旧博客里关于键盘的日志并决定翻新这些文章,同时加入一些近期的新尝试。
-**** 入门
+*** 入门
我在 2014 年入手了第一块机械键盘,使用 Cherry MX 青轴的 WASD v2 104 键键盘。我选了 WASD 的主要原因是他们键盘较为简约的外形和客制化键帽的服务。我在 2014 年还入手了第一块 60% 键盘,使用 Cherry MX 茶轴的 Poker II 。在那时候可能由于 Cherry 的专利尚未过期,所以键盘轴的选择要比现在少得多。当然如果不考虑 Cherry MX 兼容性,替代品还是有的( Matias , Topre , IBM 弹簧轴等),但入手更加困难。
我最初的主力是一块我七拼八凑起来的基于 GH60 的 60% 键盘。我使用的键盘轴是改装了 62 克弹簧的 Cherry MX 白轴( ErgoClear ),这更多的只是想尝试键盘轴改装而不是因为偏好。除此之外,我发觉自己比之前用 Poker II 的时候更经常修改键盘布局了。虽然 Poker II 自带的宏编辑功能听上去很棒,但复杂的步骤使得我从来没有在不看说明书的情况下成功完成过编辑。而就算我废了老大力气完成了宏的设定,我过一段时间就会把宏的存在抛在脑后。相比之下,编辑 GH60 的固件后,至少我还能查看设定文件来回忆自己的设定。我早期修改键盘布局的尝试并不太成功:在我看来, 60% 键盘的键位布局太标准了,以至于(在保持 QWERTY 布局下)任何大范围修改都会让人觉得别扭。举个例子:我完全没法找到第二个适合回车键的位置。我所作的布局修改大多只是数字小键盘和功能键的映射以及交换大写锁定和控制键,完全没发挥出 GH60 的潜能,充其量只不过和使用了 [[https://www.x.org/wiki/XKB/][xkb]] 的普通键盘旗鼓相当。
顺便一提,我曾经想过要收集所有键数布局的键盘,但很快的发现这是一个不切实际且烧钱的想法。目前为止在常见的键数布局中,我尝试过 104 键, 96 键, 87 键, 75 键, 60 键,和 40 键键盘。这当中的绝大多数对我来说在体验上并没有太大区别,除了 60% 或 40% :要想把所有标准键放上去是需要动一番脑筋的。
-**** ErgoDox 和 Planck
+*** ErgoDox 和 Planck
ErgoDox 是第一个促使我真正下心思选择键盘布局的键盘。正是由于布局和传统键盘相差甚远, Ergodox 在键位布局选择上提供了很高的自由度:我一眼就能找到七个适合回车键的位置(传统右侧小拇指位,拇指区的四个 2u 键位,以及中心偏下的两个 1.5u 键位)。从 2015 开始,我就几乎只使用 ErgoDox 了。 ErgoDox 的好处在我开始使用 Emacs 后更加明显:能够轻而易举地够到控制键和转换键的感觉非常棒。
#+CAPTION: 我的 ErgoDox 基本层布局
@@ -287,10 +447,10 @@ Planck 是另一块让我下心思设计布局的键盘。 40% 键盘所能塞
#+LABEL: fig: my-keyboards-2018-edition-03
[[/img/posts/2018/my-keyboards-2018-edition-03.png]]
-**** 键帽狂热期
+*** 键帽狂热期
在我发现了 Geekhack 论坛后,我在很长一段时间里都会疯狂刷新团购和兴趣调查版,以收集其他用户所设计的客制键帽情报。我发现自己的兴趣逐渐地从色彩对比强烈的配色转向了更为统一,柔和的设计。在键帽形状的选择上,我也偏好没有高低梯度的类型,比如 DSA 。键帽图样上我更喜欢文字而非图案,有意思的是我并不觉得空白键帽有多么值得欣赏。这些癖好使得我的寻找键帽之旅异常困难:要想给 ErgoDox 配齐一整套图样相称的键帽可不是什么容易的事( Planck 因为全是 1u 键,所以要容易得多)。
-**** 设计自己的键盘/布局
+*** 设计自己的键盘/布局
我有时会冒出设计自己的键盘的念头。 ErgoDox 已经很接近我理想中的键盘了,但是它还
是有点笨重,而且拇指区边缘的键比较难按到。我原先一直在 Emacs 里使用 ~C-Home~ 和
~C-End~ 来移动光标到文件开头/结尾,这两个键位组合使我不得不尽力伸展大拇指,导致
@@ -298,7 +458,7 @@ Planck 是另一块让我下心思设计布局的键盘。 40% 键盘所能塞
自从我开始使用 Emacs 作为主力文本编辑器,我就一直在使用 =keyfreq= 来记录每个键/组合键的使用频率。在我收集了足够多的数据后,我会以此为根据来调整我的键盘布局。
-**** 键盘像素画
+*** 键盘像素画
我之前跟风 Geekhack 众,也给我的键盘画了像素画作为签名。
#+CAPTION: 我的键盘像素画 I
@@ -313,14 +473,13 @@ Planck 是另一块让我下心思设计布局的键盘。 40% 键盘所能塞
给键盘画像素画其实挺有意思,要想保持精确的比例几乎是不可能的,这就需要在精准和简约之间作微妙的平衡。我有时间时会继续更新这些像素画的。
-** DONE Fun With Fonts In Emacs :emacs:emacs_lisp:font:typesetting:
+* DONE Fun With Fonts In Emacs
:PROPERTIES:
-:EXPORT_HUGO_CUSTOM_FRONT_MATTER: :series '(fun-with-fonts)
:EXPORT_DATE: 2018-06-24
:EXPORT_HUGO_SLUG: fun-with-fonts-in-emacs
:END:
-*** DONE en
+** DONE en
:PROPERTIES:
:EXPORT_FILE_NAME: 2018-06-24-fun-with-fonts-in-emacs.en.md
:EXPORT_TITLE: Fun With Fonts in Emacs
@@ -339,7 +498,7 @@ suffer as much from these problems, yet I don't want to give away the nice perks
like system clipboard access and greater key binding options, so here goes
nothing.
-**** Font Fallback Using Fontsets
+*** Font Fallback Using Fontsets
Ideally, I want to specify two sets of fonts, a default monospace font and a
CJK-specific font. Here's how I originally specified the font in Emacs:
#+BEGIN_SRC emacs-lisp
@@ -374,7 +533,7 @@ a new fontset instead of modifying existing ones.
I won't bore you with the exact logic just yet, as I also made other changes to
the fontset.
-***** Displaying Emoji
+**** Displaying Emoji
Solution to emoji display is similar—just specify a fallback font with emoji
support—or so I thought. I tried to use Noto Color Emoji as my emoji font,
only to find Emacs does not yet support colored emoji font. Emacs used to
@@ -395,7 +554,7 @@ that provides this functionality. I ultimately decided against it as it does
slow down Emacs quite noticeably and the colored emoji image library is not as
comprehensive.
-***** Quotation Marks
+**** Quotation Marks
I've always used full-width directional curly quotation marks ("“”" and
"‘’") when typing in Chinese, and ASCII style ambidextrous straight quotation
marks (""" and "'") when typing in English. Little did I know there really is no
@@ -459,7 +618,7 @@ and I'll list them here just for sake of completeness:
(add-hook 'before-make-frame-hook #'user/set-font)
#+END_SRC
-**** CJK Font Scaling
+*** CJK Font Scaling
My other gripe is the width of CJK fonts does not always match up with that of
monospace font. Theoretically, full-width CJK characters should be exactly twice
of that half-width characters, but this is not the case, at least not in all
@@ -516,7 +675,7 @@ least Emacs did offer the appropriate tools. By the way, I certainly wish I had
found [[https://www.emacswiki.org/emacs/FontSets][this article]] on Emacs Wiki sooner, as it also provides a neat write up of
similar workarounds.
-*** DONE zh
+** DONE zh
:PROPERTIES:
:EXPORT_FILE_NAME: 2018-06-24-fun-with-fonts-in-emacs.zh.md
:EXPORT_TITLE: 字体配置 Emacs 篇
@@ -531,7 +690,7 @@ emoji 时常显示为豆腐块。虽然终端 Emacs 不大受这些问题的影
Emacs 的其他好处,例如系统剪贴板和更加丰富的键位选择,所以我只好迎难而上着手解决
这些问题。
-**** 使用字体集( Fontset )设置后备字体
+*** 使用字体集( Fontset )设置后备字体
在最理想的状况下,我想指定两套字体,一套默认的等宽字体和一套专门显示中日韩字符的字
体。我原来是这么设定 Emacs 字体的:
#+BEGIN_SRC emacs-lisp
@@ -561,7 +720,7 @@ Emacs 的其他好处,例如系统剪贴板和更加丰富的键位选择,
由于我除了指定中日韩字体外还对字体集做了其他更改,我会在阐明所有改变后再贴出全部
设定。
-***** 显示 Emoji
+**** 显示 Emoji
解决 emoji 显示的方法与中日韩文字类似——找到一款支持 emoji 的字体不就好了吗——至少
我是这么想的。我一开始试图使用 Noto Color Emoji 作为 emoji 用后备字体,但发现
Emacs 目前并不支持彩色 emoji 字体。 Emacs 曾经在 macOS 上支持彩色 emoji字体,但
@@ -580,7 +739,7 @@ Unicode 字符替换为图片。[[https://github.com/iqbalansari/emacs-emojify][
个包会给 Emacs 带来一定的延迟,而且大部分彩色 emoji 图片库并不完整,我最终决定不
予采用。
-***** 引号风波
+**** 引号风波
我一直习惯在书写中文时使用成对的全角弯引号(““””和“‘’”)以及在书写英文时
使用 ASCII 里的对称直引号(“"”和“'”)。然而我并不知道“全角弯引号”其实根本
不存在: Unicode 中只存在一组弯引号编码( U+2018 、 U+2019 、 U+201C 、U+201D ),
@@ -639,7 +798,7 @@ Unicode 字符替换为图片。[[https://github.com/iqbalansari/emacs-emojify][
(add-hook 'before-make-frame-hook #'user/set-font)
#+END_SRC
-**** 中日韩字体大小比例
+*** 中日韩字体大小比例
最后需要解决的问题就是中日韩字体字宽和等宽字体比例不一致的问题了。理论上全角的中
日韩字符应该是半角字符宽度的两倍,但这并不在所有字号下成立。看起来原因是中日韩字
体在字号上其实偷懒了:在使用 Noto Sans CJK SC 时, 16px 和 17px 大小的中日韩字符
@@ -688,174 +847,12 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
了所需的各项工具。顺便一提, Emacs Wiki 上的 [[https://www.emacswiki.org/emacs/FontSets][这篇文章]] 也提供了一些类似的问题的解
决方案:要是我早一些看到,配置过程大概会顺利许多。
-* Site Related :@site_related:
-** DONE Trying Out Mastodon :social_network:mastodon:arch_linux:
-:PROPERTIES:
-:EXPORT_HUGO_CUSTOM_FRONT_MATTER: :date 2018-02-11 :slug trying-out-mastodon
-:END:
-
-*** DONE en
-:PROPERTIES:
-:EXPORT_TITLE: Trying Out Mastodon
-:EXPORT_FILE_NAME: 2018-02-11-trying-out-mastodon.en.md
-:END:
-
-As mentioned in my [[https://www.shimmy1996.com/en/posts/2017/10/22/no-more-disqusting-disqus/][previous post]], I am not really accustomed to posting on social networks. However, the other day I encountered a term I haven't heard in a long time: micro-blogging. Yes, quite a few social networks, Twitter for instance, is before anything a micro-blogging service. This definition of Twitter makes it immensely more appealing to me: it's a bite-sized blog for random thoughts, funny incidents, and many other pieces of my life that might not fit well with a regular blog post. However, I still find posting on Twitter has the 'broadcasting to the entire Internet' feeling stamped into it. Guess I'll just host my own then.
-
-[[https://github.com/tootsuite/mastodon][Mastodon]] turned out to be one such solution. Mastodon's federated and decentralized nature makes it ideal for someone like me who struggles between building my online identity while minimizing the number of different companies I expose my information to. If people are willing to give away their personal information for fancy profile pictures, then hosting a Mastodon wouldn't seem like such a bad deal.
-
-**** Installation on Arch Linux
-It was kinda surprising that there doesn't exist a Arch Linux specific installation guide for Mastodon. Not that the installation process would be more difficult on Arch Linux than Ubuntu, but installation can be made a lot due simpler to the abundance of packages. Since the [[https://github.com/tootsuite/documentation/blob/master/Running-Mastodon/Production-guide.md][official production guide]] is already fairly comprehensive, I'll just document some Arch Linux specific steps here.
-
-***** Dependencies
-Here's a table detailing all the dependencies and their corresponding packages in Arch Linux. There really is no need to git clone anything. =npm= was also required in the installation process, but was not listed in the official guide.
-
-| Dependency | Package |
-| =node.js= 6.x | [[https://www.archlinux.org/packages/community/x86_64/nodejs-lts-boron/][=nodejs-lts-boron=]] |
-| =yarn= | [[https://www.archlinux.org/packages/community/any/yarn/][=yarn=]] |
-| =imagemagick= | [[https://www.archlinux.org/packages/extra/x86_64/imagemagick/][=imagemagick=]] |
-| =ffmpeg= | [[https://www.archlinux.org/packages/extra/x86_64/ffmpeg/][=ffmpeg=]] |
-| =libprotobuf= and =protobuf-compiler= | [[https://www.archlinux.org/packages/?sort=&q=protobuf&maintainer=&flagged=][=protobuf=]] |
-| =nginx= | [[https://www.archlinux.org/packages/extra/x86_64/nginx/][=nginx=]] |
-| =redis= | [[https://www.archlinux.org/packages/community/x86_64/redis/][=redis=]] |
-| =postgresql= | [[https://www.archlinux.org/packages/extra/x86_64/postgresql/][=postgresql=]] |
-| =nodejs= | [[https://www.archlinux.org/packages/community/x86_64/nodejs/][=nodejs=]] |
-| =rbenv= | [[https://aur.archlinux.org/packages/rbenv/][=rbenv=]] |
-| =ruby-build= | [[https://aur.archlinux.org/packages/ruby-build/][=ruby-build=]] |
-| =npm= | [[https://www.archlinux.org/packages/community/any/npm/][=npm=]] |
-
-For =rbenv=, I needed to add ='eval "$(rbenv init -)"= to =.bashrc= or =.zshrc= after installation as prompted by the post installation script.
-
-***** Mastodon
-Create user =mastodon= and to =sudoers= using =visudo=.
-#+BEGIN_SRC sh
- useradd -m -G wheel -s /bin/bash mastodon
-#+END_SRC
-
-Then I can clone the repository and start [[https://github.com/tootsuite/documentation/blob/master/Running-Mastodon/Production-guide.md#nodejs-and-ruby-dependencies][installing node.js and ruby dependencies]]. This is where =npm= is required. Besides, I encountered a =ENONT= error when running =yarn= saying =./.config/yarn/global/.yarnclean= is missing, which is resolved by creating the file.
-
-***** PostgreSQL
-In addition to installing the =postgresql= package, I followed [[https://wiki.archlinux.org/index.php/PostgreSQL][Arch Wiki]] to initialize the data cluster:
-
-#+BEGIN_SRC sh
- $ sudo su postgres
- [postgres]$ initdb --locale $LANG -E UTF8 -D '/var/lib/postgres/data'
-#+END_SRC
-
-After starting and enabling =postgresql= with =systemctl=, I can then start the =psql= shell as the =postgres= user and create user for Mastodon (use =psql= command =\du= to check the user is actually there):
-
-#+BEGIN_SRC sh
- $ sudo su postgres
- [postgres]$ psql
- [psql]# CREATE USER mastodon CREATEDB;
- [psql]# \q
-#+END_SRC
-
-Port selection is customizable in =postgresql.service= and the port number will be used in =.env.porduction= customization.
-
-***** Redis
-Pretty much the same drill as =postgresql=, I installed =redis= and start/enabled =redis.service=. The port selection and address that have access can all be configured from =/etc/redis.conf=.
-
-***** Nginx & Let's Encrypt
-The official production guide covers this part pretty well already.
-
-***** =.env.production=
-The config file is fairly self-explanatory. The only thing I got wrong the first time is the variable =DB_HOST= for =postgresql=. I then obtained the correct path, =/run/postgresql=, by checking status of =postgresql.service=.
-
-***** Scheduling Services & Cleanups
-Again, just follow the official production guide. I installed [[https://www.archlinux.org/packages/core/x86_64/cronie/][=cronie=]] to schedule cron jobs.
-
-**** My Experience
-The web interface is fairly good, I like how I can write toots while browsing timelines instead of been forced to stay at the top of the page. I tried out quite a few Mastodon clients on my phone and I settled on [[https://pawoo.net/about][Pawoo]], which is built by Pixiv. So far Mastodon feels like a more comfy twitter to me and a platform where I am actually willing to write on. I'm pushing myself to write something on Mastodon every few days. So far it's been mostly running logs, but I'll come up more stuff to post in the future.
-
-One thing I would really like to see though is multilingual post support in Mastodon. A workaround I currently use is appending different tags for Chinese vs. English posts, which not only bloats my toots, but also fragmented my timeline so that it's only 50% comprehensible for most people. Regrettably, it seems that out of the various micro-blogging/social networking services, only [[https://code.facebook.com/posts/597373993776783][Facebook]] has something similar to this at the moment.
-
-In the footer section, I've replaced Twitter with [[https://mstdn.shimmy1996.com/@shimmy1996][my Mastodon profile]]. Feel free to take a peek inside. :P
-
-*** DONE zh
-:PROPERTIES:
-:EXPORT_TITLE: Mastodon 尝鲜
-:EXPORT_FILE_NAME: 2018-02-11-trying-out-mastodon.zh.md
-:END:
-
-我在 [[https://www.shimmy1996.com/zh/posts/2017/10/22/no-more-disqusting-disqus/][上一篇日志]] 里提到过,我并不习惯于在社交网络上发帖子。不过不久之前,我偶然撞见了一个很久没有听到过的词:微型博客。不少社交网络站点,例如 Twitter ,本质上还是一个微型博客服务。这种定义下的 Twitter 对我更加具有吸引力:我可以把一些随想,趣事和生活中其他不大适合写进博客的点点滴滴塞进去。但即使如此,我还是发推有一种“向整个互联网发送座标”的感觉。嗯,那么只好自己搭建一个微型博客了。
-
-[[https://github.com/tootsuite/mastodon][Mastodon]] 就是一个很好的解决方案。对与在最大化网络人格和最小化个人信息泄露之间进退两难的我来说,存储去中心化、但实例之间又紧密相联的 Mastodon 非常理想。如果人们愿意为了好看的头像将个人信息拱手送出的话,搭建一个 Mastodon 实例可以算得上是一个划算的多的买卖。
-
-**** 在 Arch Linux 上安装 Mastodon
-我在一番搜寻后,居然没有找到一篇专门针对 Arch Linux 的 Mastodon 安装指南,这有点让我惊讶。不过得益于丰富的软件包,在 Arch Linux 上安装 Mastodon 其实比在 Ubuntu 上更加简单。 [[https://github.com/tootsuite/documentation/blob/master/Running-Mastodon/Production-guide.md][官方指南]] 上有很详尽的步骤说明,我就简单补充一些只适用于 Arch Linux 的部分。
-
-***** 软件包依赖
-我把所有依赖以及相对应的 Arch Linux 软件包都列了出来。完全没有手动克隆 git 仓库的必要。 =npm= 会在安装过程中用到,但没有在官方指南中列出。
-
-| 依赖 | 软件包 |
-| =node.js= 6.x | [[https://www.archlinux.org/packages/community/x86_64/nodejs-lts-boron/][=nodejs-lts-boron=]] |
-| =yarn= | [[https://www.archlinux.org/packages/community/any/yarn/][=yarn=]] |
-| =imagemagick= | [[https://www.archlinux.org/packages/extra/x86_64/imagemagick/][=imagemagick=]] |
-| =ffmpeg= | [[https://www.archlinux.org/packages/extra/x86_64/ffmpeg/][=ffmpeg=]] |
-| =libprotobuf= 和 =protobuf-compiler= | [[https://www.archlinux.org/packages/?sort=&q=protobuf&maintainer=&flagged=][=protobuf=]] |
-| =nginx= | [[https://www.archlinux.org/packages/extra/x86_64/nginx/][=nginx=]] |
-| =redis= | [[https://www.archlinux.org/packages/community/x86_64/redis/][=redis=]] |
-| =postgresql= | [[https://www.archlinux.org/packages/extra/x86_64/postgresql/][=postgresql=]] |
-| =nodejs= | [[https://www.archlinux.org/packages/community/x86_64/nodejs/][=nodejs=]] |
-| =rbenv= | [[https://aur.archlinux.org/packages/rbenv/][=rbenv=]] |
-| =ruby-build= | [[https://aur.archlinux.org/packages/ruby-build/][=ruby-build=]] |
-| =npm= | [[https://www.archlinux.org/packages/community/any/npm/][=npm=]] |
-
-在安装 =rbenv= 后,我需要把 ='eval "$(rbenv init -)"= 加入 =.bashrc= 或 =.zshrc= 中(安装脚本也会提示这一步骤)。
-
-***** Mastodon
-创建用户 =mastodon= 并用 =visudo= 把该用户加入 =sudoers= 。
-#+BEGIN_SRC sh
- useradd -m -G wheel -s /bin/bash mastodon
-#+END_SRC
-
-接下来就可以克隆 Mastodon 的 git 仓库并开始 [[https://github.com/tootsuite/documentation/blob/master/Running-Mastodon/Production-guide.md#nodejs-and-ruby-dependencies][安装 node.js 和 ruby 的依赖]] 了。在这一过程中会用到 =npm= 。我在运行 =yarn= 时,遇到了一个 =ENONT= 错误:无法找到 =./.config/yarn/global/.yarnclean= 。手动创建了迷失的文件解决了这个错误。
-
-***** PostgreSQL
-除了安装 =postgresql= 软件包外, 我遵循 [[https://wiki.archlinux.org/index.php/PostgreSQL][Arch Wiki]] 里的步骤初始化了数据库集群:
-
-#+BEGIN_SRC sh
- $ sudo su postgres
- [postgres]$ initdb --locale $LANG -E UTF8 -D '/var/lib/postgres/data'
-#+END_SRC
-
-在开始并启用 =postgresql.service= 后,我就可以以用户 =postgres= 的身份登录 =psql= 命令行并给 Mastodon 建立用户了(可以使用 =psql= 命令 =\du= 来确认用户列表):
-
-#+BEGIN_SRC sh
- $ sudo su postgres
- [postgres]$ psql
- [psql]# CREATE USER mastodon CREATEDB;
- [psql]# \q
-#+END_SRC
-
-端口设置可以在 =postgresql.service= 里找到,这会在编辑 =.env.porduction= 时用到。
-
-***** Redis
-和 =postgresql= 差不多,我安装了 =redis= ,开始/启用了 =redis.service= 。端口选择和允许连接的地址都可以在 =/etc/redis.conf= 里设置。
-
-***** Nginx 和 Let's Encrypt
-官方指南已经提供了很详尽的步骤,这里不再赘述。
-
-***** =.env.production=
-照配置文件里的说明做就可以了。我唯一弄错的地方是连接 =postgresql= 所需的 =DB_HOST= 。在查看 =postgresql.service= 的状态后,我找到了正确的路径, =/run/postgresql= 。
-
-***** 计划进程和缓存清理
-照官方指南做就好。我安装了 [[https://www.archlinux.org/packages/core/x86_64/cronie/][=cronie=]] 来安排 cron 作业。
-
-**** 使用感受
-网页版界面很不错,我很喜欢可以一边刷时间线一边慢慢写嘟文这一点(而不是在被迫停留在页面顶端)。我在尝试了数个 Mastodon 手机客户端后选定了 Pixiv 开发的 [[https://pawoo.net/about][Pawoo]] 。到目前为止, Mastodon 给我的感觉是一个比 Twitter 更加舒适、更能激发我写东西的平台。我试着推动自己每隔几天就写一条嘟文。虽然目前为止我写的大都是跑步的记录,但我会渐渐丰富我的嘟文内容的。
-
-我很希望看到 Mastodon 对多语言嘟文提供支持。目前我用的办法是给中文和英文的嘟文打上不同的标签,但这么做不仅使嘟文更加臃肿,也使得我的时间线对大部分人来说可读性只有 50% 。可惜的是,目前的诸多社交网络里只看到 [[https://code.facebook.com/posts/597373993776783][Facebook]] 对此提供了支持。
-
-在网站页脚,我已经把 Twitter 换成了我的[[https://mstdn.shimmy1996.com/@shimmy1996][Mastodon 页面]] ,随时欢迎各位来访。
-
-** DONE Construction Finished :plans:
+* DONE Construction Finished
:PROPERTIES:
:EXPORT_HUGO_CUSTOM_FRONT_MATTER: :date 2018-05-21 :slug construction-finished :latex true
:END:
-*** DONE en
+** DONE en
:PROPERTIES:
:EXPORT_TITLE: Construction Finished
:EXPORT_FILE_NAME: 2018-05-21-construction-finished.en.md
@@ -863,7 +860,7 @@ In the footer section, I've replaced Twitter with [[https://mstdn.shimmy1996.com
After eight months, my blog have finally reached a place where I feel comfortable taking down the "under heavy construction" notice on my home page. In stead of out right deleting the site road map though, I'm stashing it into a blog post.
-**** Site Road Map
+*** Site Road Map
- [X] +Find new hosting location.+ Currently using DigitalOcean.
- [X] Install Arch Linux on server.
- [X] +Search for WP replacement.+ Hugo is pretty good.
@@ -890,10 +887,10 @@ After eight months, my blog have finally reached a place where I feel comfortabl
- [X] Use Let's Encrypt's wildcard certificate.
- [X] Restore/rewrite and translate some of the more valuable old posts.
-**** What's on Home Page Now?
+*** What's on Home Page Now?
I already have an about page and a contact page for whatever I think people might be interested in knowing about myself, so I have no clue what I should put on home page. Since I found the old site road map to be a great way of reminding myself the stuffs I need to get done, I'll replace the road map with another to-do list: my goals for 2018. I am definitely not the most motivated kind of person, but seeing an unfinished to-do list every once in a while does get on my nerves. Let's see how well this is gonna work.
-*** DONE zh
+** DONE zh
:PROPERTIES:
:EXPORT_TITLE: 施工完成
:EXPORT_FILE_NAME: 2018-05-21-construction-finished.zh.md
@@ -901,7 +898,7 @@ I already have an about page and a contact page for whatever I think people migh
历时八个月,我的博客终于到达了我觉得可以摘掉施工警告的程度。不过我并没有删除原先的站点施工计划,只不过把它移到了这篇日志里。
-**** 施工计划
+*** 施工计划
- [X] +找一家新的服务器提供商+ 目前使用 DigitalOcean 。
- [X] 在服务器上安装 Arch Linux 。
- [X] +搜寻WP的替代品。+ Hugo 很不错。
@@ -928,46 +925,5 @@ I already have an about page and a contact page for whatever I think people migh
- [X] 使用 Let's Encrypt 的通配符证书。
- [X] 把比较有价值的旧文章搬过来。
-**** 现在主页上是啥?
+*** 现在主页上是啥?
大部分我觉得别人会感兴趣的有关我的信息都可以在关于或联系方式页面里找到,所以对于主页应该放些什么,我实在没啥好主意。由于我感觉之前的站点施工计划是个提醒自己的不错方式,我会用另外一个任务清单来取代以完成的施工计划:我在 2018 年想实现的目标。我绝对不是那种最有干劲的人,但每每看到一张未完成的任务清单,我的强迫症神经还是会跳一跳的。那么,就让我试试看这么做效果如何吧。
-
-** TODO How To Train Your Tags :random_thoughts:
-:PROPERTIES:
-:EXPORT_HUGO_CUSTOM_FRONT_MATTER: :date 2018-05-16 :slug how-to-train-your-tags
-:END:
-
-*** TODO en
-:PROPERTIES:
-:EXPORT_TITLE: How To Train Your Tags
-:EXPORT_FILE_NAME: 2018-05-16-how-to-train-your-tags.en.md
-:END:
-
-Besides, I changed the category "My Life" to "Geekery". I still haven't figured out an efficient way to utilize categories and tags, so for now I'll hop around different selections.
-
-*** TODO zh
-:PROPERTIES:
-:EXPORT_TITLE: 驯标签高手
-:EXPORT_FILE_NAME: 2018-05-16-how-to-train-your-tags.en.md
-:END:
-
-* My Life :@my_life:
-** TODO First Trail Half Marathon :running:trail_running:
-:PROPERTIES:
-:EXPORT_HUGO_CUSTOM_FRONT_MATTER: :date 2018-05-27 :slug first-trail-half-marathon
-:END:
-
-*** TODO en
-:PROPERTIES:
-:EXPORT_TITLE: First Trail Half Marathon
-:EXPORT_FILE_NAME: 2018-05-27-first-trail-half-marathon.en.md
-:END:
-
-
-* Footnotes
-* COMMENT Local Variables :ARCHIVE:
-
-# Local Variables:
-# fill-column: 80
-# eval: (auto-fill-mode nil)
-# eval: (add-hook 'after-save-hook #'org-hugo-export-subtree-to-md-after-save :append :local)
-# End: