又一个静态博客引擎Felix Felicis - V2EX
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 8654 次点击
    这是一个创建于 5138 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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     Solana     4907 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 09:07 PVG 17:07 LAX 01:07 JFK 04:07
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86