V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
欢迎通过 V2EX 的 创造者 节点寻找创业伙伴。
推荐书目
Founders at Work 简体中文译本
Founders at Work
全世界的各种创业签证
StartUp Britain
Start-Up Chile
lepture
V2EX  ›  创造者

又一个静态博客引擎Felix Felicis

  •  
  •   lepture · 2011-11-24 17:16:11 +08:00 · 8159 次点击
    这是一个创建于 4753 天前的主题,其中的信息可能已经有所发展或是发生改变。
    http://lepture.com/project/liquidluck

    源起:

    个人的blog经历:百度空间 -> Blogger -> Wordpress -> GAE -> Hyde -> Felix Felicis
    其中GAE上是自己写的一个blog系统Vealous(已经不维护了)。

    这些年写了很多文章,但是由于总是在换地方,换域名,所以最后只剩下那么几篇了,都汇总在了 http://lepture.com/life/ (以前不写技术类的东西)

    最后接触到静态blog,用的是Hyde。有些需求满足不了,于是写了点plugin,解决了几点问题,但是还不能满足需求。所以打算换一个引擎,也看过一些,最后发现其实自己写一个也不费多大事。花了几个小时写了最初的引擎(几个大类搞定一切,只满足个人需求)。

    当时也没有打算release出来。后来觉得之前的设想还不错,便开始整理代码。基本的设想是文章就是文章,文章不应该表现模板所应该做的事来,所以你可以看一下这篇例子: https://github.com/lepture/lepture.com/blob/master/content/life/2011/dajiangdahai.rst 。即使离开了这个引擎,它还是表现得不错。

    不过因为markdown是标记语言,而不是文档语言,所以对meta信息做了点处理,表现就没有这么好了。

    #Python #pygment #reStructedText

    感谢第二个用户 @CMGS (我是第一个)
    42 条回复    1970-01-01 08:00:00 +08:00
    lepture
        1
    lepture  
    OP
       2011-11-24 17:40:48 +08:00
    忘了说一句了,这个名字是来自Harry Potter。火焰杯那一集,有一个魔法药水叫Felix Felicis,通俗的叫法就是liquidluck
    lwjef
        2
    lwjef  
       2011-11-24 17:43:13 +08:00
    酷 酷 酷 欧耶
    mvdfish
        3
    mvdfish  
       2011-11-24 18:25:32 +08:00 via Android
    mark
    dofine
        4
    dofine  
       2011-11-24 19:14:14 +08:00 via Android
    mark~~喜欢这种东西~
    lepture
        5
    lepture  
    OP
       2011-11-24 19:22:22 +08:00
    @dofine 界面是自适应手机的,也可以用手机看的哦
    Just1n
        6
    Just1n  
       2011-11-24 19:30:32 +08:00
    唉,严重佩服楼主的执行力。
    我早就想自己写个轻量级的博客,结果到现在还没正式开始。
    dofine
        7
    dofine  
       2011-11-24 19:32:50 +08:00 via Android
    cool~~
    lepture
        8
    lepture  
    OP
       2011-11-24 19:33:55 +08:00
    @Just1n 你还在用GAE么?
    loading
        9
    loading  
       2011-11-24 19:51:52 +08:00
    也打算自己写个blog程序,等sina的python公测。
    目前你的静态页是在github么?
    貌似现在觉得写个静态引擎也挺好的。
    目前正准备Flask
    flyingkid
        10
    flyingkid  
       2011-11-24 19:58:31 +08:00
    速度很快。
    lepture
        11
    lepture  
    OP
       2011-11-24 20:00:31 +08:00
    @loading 不在github上, github上host的话,url format 就要用 /path/to/file.html 了,我喜欢干净点的url.
    lepture
        12
    lepture  
    OP
       2011-11-24 20:01:26 +08:00
    @flyingkid it's static, it's fast.
    loading
        13
    loading  
       2011-11-24 20:02:50 +08:00
    @lepture 放哪里了呢?好快。。。
    lepture
        14
    lepture  
    OP
       2011-11-24 20:05:51 +08:00
    @loading vps上的,不过你也可以放在github上。支持中文url的。例如一同事的:http://kaizi.me/tag/%E9%9A%8F%E6%84%9F.html
    loading
        15
    loading  
       2011-11-24 20:08:08 +08:00
    @lepture 好的,感谢!
    研究下模板,目前只用过jinjia2。。。
    lepture
        16
    lepture  
    OP
       2011-11-24 20:10:03 +08:00
    @loading 刚好就是用的jinjia2做的模版引擎。
    loading
        17
    loading  
       2011-11-24 20:12:47 +08:00
    @lepture 太好了,等有空了就看下!
    itopidea
        18
    itopidea  
       2011-11-24 21:03:01 +08:00
    Mark
    tomyiyun
        19
    tomyiyun  
       2011-11-24 21:34:21 +08:00 via Android
    话说一直说去学一个Markdown之类的标记语言一直没有实行……写完博客排版画n小时的事情一直困扰着我
    tomyiyun
        20
    tomyiyun  
       2011-11-24 21:34:31 +08:00 via Android
    话说一直说去学一个Markdown之类的标记语言一直没有实行……写完博客排版花n小时的事情一直困扰着我
    cabinw
        21
    cabinw  
       2011-11-24 21:58:39 +08:00
    nice!必须推荐啊,最近和同事都在找博客引擎,本来享用jekyll的,这个貌似很不错,打算尝试下
    lepture
        22
    lepture  
    OP
       2011-11-24 22:04:26 +08:00
    @tomyiyun markdown本质上来说还是html的思想,你写文章的时候,考虑的还是这个标签对应的html的标签是什么,比如 ### 你想到是 h3

    但是reStructedText就不一样了,你写的时候,所考虑的是你要表达的是什么东西,它在整个文章中所处的地位,它是一种文档的思维。

    不过markdown接受起来简单一点。
    rightgenius
        23
    rightgenius  
       2011-11-24 22:10:59 +08:00
    收藏,有时间详细研究= =
    cabinw
        24
    cabinw  
       2011-11-24 22:19:23 +08:00
    ValueError: unknown locale: UTF-8 是怎么回事
    lepture
        25
    lepture  
    OP
       2011-11-24 22:26:16 +08:00
    @cabinw 你是什么系统? 我没有windows的机器,所以没有测试过windows. 有一个朋友是windows,不过他用的是cywin。 这句错误按字面理解就是你的系统没有UTF-8 locale支持。
    zerotty
        26
    zerotty  
       2011-11-24 22:29:29 +08:00
    @lepture 这个可以用作github主页吗?
    lepture
        27
    lepture  
    OP
       2011-11-24 22:37:03 +08:00
    @zerotty 我觉得github用Jekyll还是最好的选择,因为原生支持,所以只需要一个源码的repo就可以了。但是如果你想用的话,也不是不可以,可以看看 https://github.com/CMGS/cmgs.github.com
    https://github.com/CMGS/CMGS.ME
    Just1n
        28
    Just1n  
       2011-11-24 22:48:22 +08:00
    @lepture 不用了,已经被GFW搞得快疯了,可以架设反向代理,但不想那么麻烦了。
    现在是打算用Appharbor了。
    cabinw
        29
    cabinw  
       2011-11-24 22:59:22 +08:00
    @lepture MacOS Lion
    lepture
        30
    lepture  
    OP
       2011-11-24 23:06:30 +08:00
    @cabinw 那就奇怪了,我也是呀。这个错误是在什么时候产生的,可以截个屏我瞧瞧么?
    cabinw
        31
    cabinw  
       2011-11-24 23:32:02 +08:00
    @lepture 就是在写好文章之后运行命令时产生的
    lepture
        32
    lepture  
    OP
       2011-11-24 23:47:50 +08:00
    @cabinw 给个screenshot出来吧,像这个样子 http://d.pr/SEzK
    CMGS
        33
    CMGS  
       2011-11-25 00:07:25 +08:00
    @lepture 出现,没在来帝都度假,请了年假中= =

    推广一下,之前知道这套系统是通过一个基友的介绍,然后发现作者的需求和我基本是一模一样,低耦合和以文章为主,不需要WP那样重型,加之VPS生恐GFW发威。。做了VPS和github的balance。。就有了CMGS.ME 恩。。托管在GITHUB上,个人觉得难度并不是很大。

    最近刚整好一个AE,打算写个在线控制的app。。这样就可以脱离mouapp线下再rsync模式了~
    lepture
        34
    lepture  
    OP
       2011-11-25 10:21:43 +08:00
    @cabinw 路径里有中文的话,会出错的,我才发现。已经修正。不过你说的和路径中文这个bug不一样呀。
    cabinw
        35
    cabinw  
       2011-11-25 14:09:56 +08:00
    @lepture 晚上回去再折腾折腾,跟你汇报下具体的。工作拉~~哈哈
    thcode
        36
    thcode  
       2011-12-19 22:28:38 +08:00
    @lepture 我也出现了ValueError: unknown locale: UTF-8的问题,只要一运行liquidluck出现。系统是lion,是不是因为locale是英文的?
    thcode
        37
    thcode  
       2011-12-19 22:35:10 +08:00
    lZl
        38
    lZl  
       2011-12-19 23:32:18 +08:00
    @lepture 不太了解这个 想问一下
    github也可以像gae那样托管么 还可以绑定域名?
    lepture
        39
    lepture  
    OP
       2011-12-20 07:34:51 +08:00 via iPhone
    @thcode 我也是英文locale的lion。详细的错误信息应该可以锁定到行数。可否列出详细的信息?或者截图。
    thcode
        40
    thcode  
       2011-12-20 11:57:34 +08:00
    @lepture
    Traceback (most recent call last):
    File "/usr/local/bin/liquidluck", line 8, in <module>
    load_entry_point('liquidluck==0.1', 'console_scripts', 'liquidluck')()
    File "/Library/Python/2.7/site-packages/liquidluck-0.1-py2.7.egg/liquidluck/cli.py", line 107, in main
    return run_command(args.command)
    File "/Library/Python/2.7/site-packages/liquidluck-0.1-py2.7.egg/liquidluck/cli.py", line 96, in run_command
    return build(args.config)
    File "/Library/Python/2.7/site-packages/liquidluck-0.1-py2.7.egg/liquidluck/cli.py", line 44, in build
    import_module(reader)().start()
    File "/Library/Python/2.7/site-packages/liquidluck-0.1-py2.7.egg/liquidluck/utils.py", line 51, in import_module
    obj = __import__('.'.join(parts[:-1]), None, None, [parts[-1]], 0)
    File "/Library/Python/2.7/site-packages/liquidluck-0.1-py2.7.egg/liquidluck/readers/rst.py", line 34, in <module>
    from docutils.core import publish_parts
    File "/Library/Python/2.7/site-packages/docutils-0.8.1-py2.7.egg/docutils/core.py", line 20, in <module>
    from docutils import frontend, io, utils, readers, writers
    File "/Library/Python/2.7/site-packages/docutils-0.8.1-py2.7.egg/docutils/frontend.py", line 39, in <module>
    import docutils.utils
    File "/Library/Python/2.7/site-packages/docutils-0.8.1-py2.7.egg/docutils/utils.py", line 18, in <module>
    from docutils.error_reporting import ErrorOutput, SafeString
    File "/Library/Python/2.7/site-packages/docutils-0.8.1-py2.7.egg/docutils/error_reporting.py", line 47, in <module>
    locale_encoding = locale.getlocale()[1] or locale.getdefaultlocale()[1]
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/locale.py", line 496, in getdefaultlocale
    return _parse_localename(localename)
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/locale.py", line 428, in _parse_localename
    raise ValueError, 'unknown locale: %s' % localename
    ValueError: unknown locale: UTF-8

    我使用export LC_ALL=en_US.UTF-8之后就没有问题了,这个错误调用locale.getdefaultlocale()可以重现
    thcode
        41
    thcode  
       2011-12-21 18:52:14 +08:00
    如果需要在文章内插入图片的话,图片文件放在哪个位置比较好?
    lepture
        42
    lepture  
    OP
       2011-12-21 22:26:43 +08:00
    @thcode 取决于你用什么host。 比如用自己的服务器,自己想怎么放就怎么放,最后传到服务器上,有相应的url就可以了。 当然,有一个通用的解决方案。比如在 content 里建一个 media 文件夹,然后把东西都放这里面,url就是 /media/file 。 可以看我repo里的 demo 目录。

    整个的渲染机制是,非文章类文件都是按目录层级拷贝的,文章类文件按config渲染。

    如果用github之类的,其实放图片在上面也太占空间了,不如用外链图片。我一般用 imgur 。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1170 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 22:53 · PVG 06:53 · LAX 14:53 · JFK 17:53
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.