About

  • 📜
  • Nasy

    May 3, 2018

    About this blog and nasy, 关于此 blog 和 nasy.

    关于 Nasy

    Nasy 就是 Nasy 啦!虽然现在这个 blog 只有一人在维护,但是,我目前的人生中,还有另外两个 Nasy,都是生命中不可缺少的存在呢!

    至于我嘛,见 >> https://nasy.me1.

    关于此博客

    这个博客是我的一个尝试,基本上是从 0 开始2,从基础的 markup 的文档渲染生成可以使用的 HTML ,到前端展现给我自己以及大家3,全都是自己慢慢的搞定的。

    思想,思路与过程

    Server

    这次是一个尝试嘛,服务端的渲染部分是 Python4 写的,而处理那些 requests 以及 response 的部分,则是用 Haskell5 写的6。也是一种写代码风格的尝试,这一次,我尽我所能用了函数式,不使用面向对象来搞定,主要是 Haskell 给了我各种各样的改变,当然 Elm7 也是同样的,影响风格的东西…

    Org mode8

    首先是,我很明确,我将要使用 Org mode 来进行 blog 的写作。原因很简单,对于我来说, markdown 太简单了,有些时候,我想一边计算,一边运行某些代码,一边把结果输出出来,由于个人的专业或者是一些兴趣爱好,不是一个很罕见的需求。但是,这是基本的 markdown 办不到的,而 Org mode 是可行的。不过最主要的是,我用 emacs 啊!都用 emacs 了,怎么能不接着使用 Org mode 呢?

    与 markdown 的比起来,Org mode 也有一个比较麻烦的东西,这东西不像 markdown 一样,遍地都是渲染器,什么语言都有将它转为 HTML 的库。 Org mode 需要使用 emacs 来生成 HTML 或者其他格式的东西,虽然 GitHub9 上也能预览 Org 文件,但是很残念,稍微多一点的东西都无法正确显示出来。原先的 blog ,我使用的是 hexo 10,虽然有几个插件它支持 Org mode,然而遗憾的是,一些特有的用法,都无法用插件体现出来。

    这次从 0 开始,解决 Org 文件转为 HTML 是一个很艰难的差事…我去研究了一下,那几个 hexo 的 Org mode 源码,发现大都是自己写了一个 ox-html 的东西,把 Org 文件转为 HTML 。GitHub 上也有几个 org to html 的库。不过嘛,后来我突然明白起来,这是我自己使用嘛,何必那么麻烦,直接简单的一条命令 org-html-export-to-html 不就可以了嘛…于是就有了下面这一段 Python 的 subprocess.

    subprocess.Popen(
        "emacsclient --socket-name=org_to_html "
        f"-e '(progn (find-file \"{path}\") "
        "(setq org-export-preserve-breaks nil)"
        "(setq org-export-with-emphasize t)"
        "(setq org-export-with-special-strings t)"
        "(setq org-export-with-sub-superscripts t)"
        "(setq org-export-headline-levels 4)"
        "(setq org-export-with-latex t)"
        "(setq org-export-with-fixed-width t)"
        "(setq org-export-with-section-numbers nil) "
        "(setq org-export-with-toc 3)"
        "(setq org-export-with-tables t)"
        "(org-html-export-to-html))' ",
        shell = True,
        stdout = subprocess.PIPE,
        stderr = subprocess.PIPE,
    )

    剩下的一些就很简单了,就是从原始的 Org 文件里,读取什么 Tags 啊,Categories 啊,Title 之类的。大概就是,一行一行往下读,然后分析一下这一行是否有我要的内容。

    Elm

    其实,最开始,我并不是使用 Elm 来作为我网站的前端的,我本来,只想使用简单的静态网页。不过,某一天,突然见到了 Elm 这样一门语言,于是,这一次,也就顺便使用这门语言来写一写前端,也是一种练习嘛。最后,Elm 的体验还行。不过由于最开始,我对其理解不够透彻,有些地方,一开始就做的不是很好,导致后来明白的时候,想改也很麻烦了…也就那样摆着了。

    如果以后,有机会重构的话,我想,我还是会选择 Elm 或者 Haskell 里的 miso 来写吧!已然成为函数式的粉丝11。

    Hakyll

    在又过了不久之后,我终于忍受不了坑那么多的 Elm 了,于是,目前是 Hakyll 最为静态网站的生成器…

    Style

    作为一个 blog 的第一印象,就是这个风格了吧!不知道看到我这个星星✨背景,霓虹特效风格感想是什么呢?当然,我不会去手写 CSS 的,用了下 Stylus12 减轻了一些痛苦。

    感谢

    • laobubu13,好基友,不管怎样先写上就是了。虽然我也记不清他在这里起了什么作用,总之是留下了些什么在代码里面了。哦,是背景跟随滚动…
    • IceYu14, Twitter 的一个朋友?一眼指出了 Safari 上的该死的选中有很多边框的问题出在哪儿。
    • 学校食堂,在不比外面贵的情况下,分量也够,价格也不错,味道也不差。总之,为我写这个提供了充足的能量。

    ??

    也许还应该有个英文版本的 About…


    1. 依然在建设中…↩︎

    2. 当然,用到的很多包,很多工具都不是我写的。↩︎

    3. 没几个人看吧…↩︎

    4. Python↩︎

    5. Haskell, an advanced, purely functional programming language.↩︎

    6. 虽然也用 Python 写了一个…↩︎

    7. Elm, a delightful language for reliable webapps.↩︎

    8. Org mode is for keeping notes, maintaining TODO lists, planning projects, and authoring documents with a fast and effective plain-text system.↩︎

    9. https://github.com↩︎

    10. Hexo, a fast, simple & powerful blog framework.↩︎

    11. 尽管有些时候,以非函数形式会更方便。↩︎

    12. Stylus, EXPRESSIVE, DYNAMIC, ROBUST CSS↩︎

    13. laobubu, 好基友…↩︎

    14. IceYu↩︎