V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
sinux
V2EX  ›  分享创造

于是我用 Python 重写了那个上千 star 的“开源”简历模板

  •  5
     
  •   sinux · 2015-12-03 19:07:39 +08:00 · 5276 次点击
    这是一个创建于 3276 天前的主题,其中的信息可能已经有所发展或是发生改变。

    DEMO 地址: [我是链接]( http:sinux.cc),阅读密码: 1234, 管理密码: abcd
    项目地址: https://github.com/shnode/Deerlet

    为什么不用 DeerResume

    DeerResume 是国内很火的一个“开源”简历模板。

    DeerResume 的前端很漂亮,但它远远称不上作者所说的“ DeerResume 作为一个开源软件”。因为简历一切数据都保存在 http://cvbox.sinaapp.com/ 这个 sae 的云端,是的,并且在 app.js 中:

    var baseurl = 'http://cvbox.sinaapp.com/'; // 使用 SAE 托管简历数据
    // var baseurl = 'data.php'; // 使用本地文件托管简历数据,本地模式下,不支持在线编辑
    

    我们不去猜测这么多保存在云端的简历会被拿去做什么,可能如作者所说只是做数据缓存。但是这个本地的 data.php 基本上没什么用处,在离线的情况下(本地调试),我甚至不能编辑,修改和查看我自己的简历, 因为它根本就不存在。

    而打印服务,也是放在作者的远端,依赖一个 http://pdf.ftqq.com/ 的链接,并提供下载服务。

    如果你用这个服务下载了 pdf 文件,那么这个文件的底端还有水印。

    这些理由已经足够让我不去使用它了,更不要说阅读密码和管理密码的传输方式,参见 issue

    Deerlet

    Deerlet 是一个开源在线简历模板,提供在线展示,在线编辑,下载 pdf 服务(无水印:),密码写死在后台配置文件并在 session 中保存和验证,不需要任何数据库。

    DEMO | 在线预览 (阅读密码: 1234, 管理密码: abcd )

    (resume.md 的基本模板仅作为参考)

    下载及部署

    ( Deerlet 只支持 Python3 )

    依赖 Python3 环境。

    克隆 Deerlet:

    git clone [email protected]:shnode/Deerlet.git && cd Deerlet/static && git clone https://github.com/pandao/editor.md.git
    

    安装第三方包(最好在 virtualenv 中):

    pip install -r requirements.txt
    

    安装 pdf 打印服务的依赖 wkhtmltopdf:

    osx/windows : 在 http://wkhtmltopdf.org/downloads.html 下载的对应版本并安装。
    
    DEB 系 linux: sudo apt-get install wkhtmltopdf
    
    其余 linux 查询相关包管理或去 http://wkhtmltopdf.org/downloads.html 下载.
    

    如果下载之后仍然报错,请尝试重新编译 QT 和 wkhtmltopdf ,参见: 链接

    由于服务器中文字体不全的问题,请下载字体并更新缓存:

    sudo apt-get install fonts-wqy-microhei ttf-wqy-microhei fonts-wqy-zenhei ttf-wqy-zenhei
    fc-cache -f -v
    

    运行:

    Python3 main.py
    
    open "http://127.0.0.1:5000" # 访问 http://127.0.0.1:5000
    

    配置

    建议在使用之前,进行配置。配置集中在 Deerlet 的项目根目录下的 config.py 中:

    SECRET_KEY = os.environ.get('SECRET_KEY') or 'deerletisawesome'  # Modify your SECRET KEY 建议足够复杂
    
    TITLE = 'Deerlet'  # 简历标题,例:马云的简历
    SUB_TITLE = '基于 Python 的开源简历模板'  # 简历子标题,一句话介绍自己,例:好的东西往往都是很难描述的。
    READ_PASSWORD = '12345'  # 简历浏览密码
    ADMIN_PASSWORD = 'abcd'  # 简历管理密码
    BASE_DIR = basedir
    UPLOAD_FOLDER = basedir
    
    PDF_OPTIONS = {
        'page-size': 'Letter',
        'margin-top': '0.75in',
        'margin-right': '0.75in',
        'margin-bottom': '0.75in',
        'margin-left': '0.75in',
        'encoding': "UTF-8",
        'no-outline': None
    }  # PDF 设置
    

    在线编辑模式下,每 6 秒自动保存一次当前的文本(全文保存),如果你想修改这个数值,在 admin.html 的第 35 行进行修改:

    setInterval("saveToFile()", 6000);  // 修改自动保存的时间
    

    一切简历数据(除了标题)保存在 resume.md 中,如果喜欢,你也可以离线编辑,并且 copy 到任何地方。

    License

    GPLv2

    16 条回复    2015-12-31 16:52:58 +08:00
    hbkdsm
        1
    hbkdsm  
       2015-12-03 19:10:24 +08:00 via Android
    Interesting, 收藏了
    jimmy66
        2
    jimmy66  
       2015-12-03 19:33:24 +08:00
    Star ,非常感谢!
    unity0703
        3
    unity0703  
       2015-12-03 19:33:24 +08:00
    前排支持
    elya
        4
    elya  
       2015-12-03 20:35:00 +08:00 via iPhone
    非常好
    defunct9
        5
    defunct9  
       2015-12-03 20:51:13 +08:00 via iPhone
    🆗
    xuzywozz
        6
    xuzywozz  
       2015-12-03 22:51:07 +08:00
    亦可赛艇
    sevncz
        7
    sevncz  
       2015-12-04 17:02:59 +08:00
    已 star
    Douglee
        8
    Douglee  
       2015-12-04 17:35:39 +08:00
    围观~
    nicegoing
        9
    nicegoing  
       2015-12-06 00:15:37 +08:00 via Android
    这什么鹿的模板非常丑。打印出来好难看,很后悔当初花了点时间在上面。我实在不明白为什么这么多跟风的。还有,真的有模仿的必要?就是些 md 语法而已。
    Raynor41
        10
    Raynor41  
       2015-12-08 00:08:53 +08:00
    鼓励,已经 star
    GNiux
        11
    GNiux  
       2015-12-30 17:45:04 +08:00
    按照 README.md 写的步骤安装相应应用 /依赖后,在执行

    > sudo python3 main.py
    出现:
    > Traceback (most recent call last):
    File "main.py", line 6, in
    from flask import Flask
    ImportError: No module named 'flask'

    求解答。谢谢!

    本机: Ubuntu 14.04
    sinux
        12
    sinux  
    OP
       2015-12-30 23:40:48 +08:00
    @GNiux (不需要用 sudo 的)这个是没找到 flask ,先 pip freeze 确定一下当前环境是否有 flask
    GNiux
        13
    GNiux  
       2015-12-31 12:27:19 +08:00
    @sinux
    已查看,安装了呢:
    > Flask==0.10.1
    > Flask-Markdown==0.3

    奇怪,我用:> python3.4 main.py; 或 python3.3 main.py ;或 python3 main.py 都是同样错误。
    但 > python2.7 main.py 则出现:

    > UnicodeDecodeError

    UnicodeDecodeError: 'ascii' codec can't decode byte 0xe5 in position 0: ordinal not in range(128)
    Traceback (most recent call last)

    File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1836, in __call__

    return self.wsgi_app(environ, start_response)

    File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1820, in wsgi_app

    response = self.make_response(self.handle_exception(e))

    File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1403, in handle_exception

    reraise(exc_type, exc_value, tb)

    File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1817, in wsgi_app

    response = self.full_dispatch_request()

    ——不好意思, python 不是很熟,正在学习中……谢过
    sinux
        14
    sinux  
    OP
       2015-12-31 14:35:01 +08:00   ❤️ 1
    @GNiux 不知道你有没有用虚拟环境。如果没用,可能包是装在 Python2 的环境中。
    blade254353074
        15
    blade254353074  
       2015-12-31 14:56:18 +08:00
    @sinux 厉害
    GNiux
        16
    GNiux  
       2015-12-31 16:52:58 +08:00
    @sinux
    没用虚拟环境。。再试试。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5793 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 02:26 · PVG 10:26 · LAX 18:26 · JFK 21:26
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.