7 |
8 | {{ page.title }}
9 | {% if PDF_PROCESSOR %}
10 |
11 | get the pdf
12 |
13 | {% endif %}
14 |
15 |
16 |
17 | {{ page.content }}
18 |
19 |
20 |
21 |
25 | {% include 'includes/page_comments.html' %}
26 |
27 |
28 |
29 | {% endblock %}
30 |
--------------------------------------------------------------------------------
/_themes/pelican-bootstrap3/templates/includes/addthis.html:
--------------------------------------------------------------------------------
1 | {% if ADDTHIS_PROFILE %}
2 |
3 |
Comments
4 |
29 | {% endif %}
30 |
31 |
--------------------------------------------------------------------------------
/_themes/pelican-bootstrap3/templates/archives.html:
--------------------------------------------------------------------------------
1 | {% extends "base.html" %}
2 | {% block content %}
3 |
4 | Archives for {{ SITENAME }}
5 |
6 |
7 | {% for article in articles %}
8 | {% if loop.first or article.date.strftime('%Y %m') != articles[loop.index0-1].date.strftime('%Y %m') %}
9 | {% set currArcDate = article.date.strftime('%Y-%m') %}
10 |
11 | {{ currArcDate }}
12 |
13 |
23 | {% endif %}
24 | {% endfor %}
25 |
26 |
27 |
28 | {% endblock %}
29 |
--------------------------------------------------------------------------------
/_drafts/issue-152.md:
--------------------------------------------------------------------------------
1 | Title: 蠎周刊 1512:
2 | Slug: issue-152
3 | Date: 2015-02-7 23:23
4 | Tags: Weekly,Pycoder,Zh
5 |
6 | 为了收集中国项目,先放出来占个坑,
7 | 一般 官方是周6才发布的,,,
8 |
9 |
10 | 
11 |
12 |
13 | - 原文:
14 |
15 |
16 | ## 搜罗Py万物 的周刊
17 |
18 | 亲,
19 |
20 |
21 | 大家多分享[文章](http://pycoders.com/submissions/)
22 | 俺们才折腾的出又一周的美好呢.
23 |
24 | 喜欢就
25 | 在 [Gratipay](https://www.gratipay.com/PycodersWeekly)
26 | 支持俺们吧!
27 | 当然的,俺们也在[twitter](http://www.twitter.com/pycoders)
28 |
29 |
30 |
31 | ## 新闻
32 |
33 |
34 |
35 |
36 | ## 项目
37 |
38 |
39 |
40 |
41 |
42 | ## 文章
43 |
44 |
45 | ## DAMA
46 | (`大妈私人无责任播报`)
47 |
48 | - [像Python专家一样编程: 道地的Python](http://www.ch-linghu.me/article/idiomatic/handout_cn.html)
49 |
50 | (`是也乎:`
51 |
52 | 精译自: [Code Like a Pythonista: Idiomatic Python](http://python.net/~goodger/projects/pycon/2007/idiomatic/handout.html)
53 |
54 | 大妈收藏了有4年多了,一直想翻译的,
55 | 结果还是给老行者给翻译了,,,
56 | 严正推荐!
57 |
58 | )
59 |
60 | # 是也乎
61 |
62 | - 150124 [Zoom.Quiet](http://zoomquiet.org/) 用时 42 分钟 完成快译.
63 | - 150124 [Zoom.Quiet](http://zoomquiet.org/) 用时 7 分钟 完成格式转抄.
64 |
65 |
66 |
67 |
--------------------------------------------------------------------------------
/_themes/pelican-bootstrap3/templates/404.html:
--------------------------------------------------------------------------------
1 | {% extends "base.html" %}
2 |
3 |
4 | {% block content %}
5 |
6 |
7 |
8 |
9 |
10 | \ 404 /
11 | \ SORRY /
12 | \ /
13 | \ This page does /
14 | ] not exist yet. [ ,'|
15 | ] [ / |
16 | ]___ ___[ ,' |
17 | ] ]\ /[ [ |: |
18 | ] ] \ / [ [ |: |
19 | ] ] ] [ [ [ |: |
20 | ] ] ]__ __[ [ [ |: |
21 | ] ] ] ]\ _ /[ [ [ [ |: |
22 | ] ] ] ] (#) [ [ [ [ :===='
23 | ] ] ]_].nHn.[_[ [ [
24 | ] ] ] HHHHH. [ [ [
25 | ] ] / `HH("N \ [ [
26 | ]__]/ HHH " \[__[
27 | ] NNN [
28 | ] N/" [
29 | ] N H [
30 | / N \
31 | / q, \
32 | / \
33 |
34 | yowl: zoomquiet+pychina[AT]gmail.com
35 |
36 |
37 |
38 | {% endblock %}
39 |
--------------------------------------------------------------------------------
/_themes/pelican-bootstrap3/static/css/pygments/README.rst:
--------------------------------------------------------------------------------
1 | pygments-css
2 | ============
3 |
4 | Pygments_, a Python-based code highlighting tool, comes with a set of builtin styles_ (not css files) for code highlighting. You have to generate a CSS file using the command line. I just figured I'd save someone this work in the future and generate all the CSS files based on the Pygments builtins.
5 |
6 | Pretty simple stuff here. These css files were generated using pygmentize
7 | on the command line like so::
8 |
9 | pygmentize -S default -f html > default.css
10 |
11 | I'm using a combination of Pygments and Markdown on a django project that has a model with the following save method::
12 |
13 | def save(self):
14 | self.html = markdown(self.body, 'codehilite')
15 | super(Entry, self).save()
16 |
17 | That's why the CSS styles all have .codehilite in front of them. You should change the .codehilite to work with the style name that you use for your Pygments HTML output.
18 |
19 | .. _Pygments: http://pygments.org
20 | .. _styles: http://dev.pocoo.org/projects/pygments/browser/pygments/styles
21 |
22 | Theme previews
23 | --------------
24 |
25 | To preview the various themes, check out http://igniteflow.com/pygments/themes/ from igniteflow_.
26 |
27 | .. _igniteflow: https://github.com/igniteflow
28 |
--------------------------------------------------------------------------------
/_themes/pelican-bootstrap3/templates/article.html:
--------------------------------------------------------------------------------
1 | {% extends "base.html" %}
2 | {% block title %}{{ article.title }}
3 | ~{{ SITENAME }}
4 | ~{{ SITEDESC }} {% endblock %}
5 | {% block content %}
6 |
7 |
8 |
17 |
18 | {% if article.toc %}
19 | {{ article.toc }}
20 | {% endif %}
21 |
22 | {{ article.content }}
23 |
24 |
25 |
26 |
27 |
28 |
29 | {% include "includes/article_info.html" %}
30 |
31 |
32 |
33 |
34 |
35 |
36 |
40 | {% include 'includes/page_comments.html' %}
41 |
42 |
43 |
44 | {% include 'includes/announce.html' %}
45 |
46 |
47 |
48 |
49 |
50 | {% endblock %}
51 |
--------------------------------------------------------------------------------
/_plugins/jekyll2pelican.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 | #!/usr/bin/env python
3 | import sys
4 | import os
5 | import time
6 | import fnmatch
7 |
8 |
9 | def j2p(rpath, aimpath):
10 | print rpath
11 | all_tid = []
12 | for md in os.listdir(rpath):
13 | exp = ""
14 | if fnmatch.fnmatch(md, '*.md'):
15 | mdls = open('%s/%s'% (rpath, md)).readlines()
16 | #print mdls[:7]
17 | print md
18 | exp += "Title: %s \n"% mdls[2].split('title: ')[1].strip()
19 | exp += "Date: %s \n"% md[:10]
20 | #print "Tags: %s"% mdls[5].split('tags: ')[1].strip().split
21 | exp += "Tags: %s \n"% ','.join(mdls[5].split('tags: ')[1].strip().split())
22 | exp += "Slug: %s \n"% md[11:-3]
23 | exp += "".join(mdls[8:])
24 | print "%s/%s.md"% (aimpath, md[11:-3])
25 | open("%s/%s.md"% (aimpath, md[11:-3]),'w').write(exp)
26 | #break
27 | #for l in open('%s/%s'% (rpath, md)).readlines:
28 | # print
29 |
30 | return None
31 |
32 | if __name__ == '__main__':
33 | if 3 != len(sys.argv) :
34 | print '''Usage:
35 | $ python jekyll2pelican.py /path/2/[数据文件目录] /path/2/[输出目的目录]
36 | '''
37 | else:
38 | begin = time.time()
39 | r = sys.argv[1]
40 | a = sys.argv[2]
41 | j2p(r, a)
42 |
43 | end = time.time()
44 | print "\t runing time=%.2fs<<<"%(end - begin)
45 |
46 |
47 |
--------------------------------------------------------------------------------
/_themes/pelican-bootstrap3/templates/includes/comments.html:
--------------------------------------------------------------------------------
1 | {% if DISQUS_SITENAME and SITEURL and article.status != "draft" %}
2 |
3 |
26 | {% endif %}
--------------------------------------------------------------------------------
/_themes/pelican-bootstrap3/static/js/github.js:
--------------------------------------------------------------------------------
1 | var github = (function(){
2 | function escapeHtml(str) {
3 | return $('
').text(str).html();
4 | }
5 | function render(target, repos){
6 | var i = 0, fragment = '', t = $(target)[0];
7 |
8 | for(i = 0; i < repos.length; i++) {
9 | fragment += '
'+repos[i].name+' '+escapeHtml(repos[i].description||'')+'
';
10 | }
11 | t.innerHTML = fragment;
12 | }
13 | return {
14 | showRepos: function(options){
15 | $.ajax({
16 | url: "https://api.github.com/users/"+options.user+"/repos?callback=?"
17 | , dataType: 'jsonp'
18 | , error: function (err) { $(options.target + ' li.loading').addClass('error').text("Error loading feed"); }
19 | , success: function(data) {
20 | var repos = [];
21 | if (!data || !data.data) { return; }
22 | for (var i = 0; i < data.data.length; i++) {
23 | if (options.skip_forks && data.data[i].fork) { continue; }
24 | repos.push(data.data[i]);
25 | }
26 | repos.sort(function(a, b) {
27 | if (a[options.sort_attribute] > b[options.sort_attribute]) { return 1; }
28 | if (a[options.sort_attribute] < b[options.sort_attribute]) { return -1; }
29 | return 0;
30 | });
31 | if (options.sort_descending) { repos.reverse(); }
32 | if (options.count) { repos.splice(options.count); }
33 | render(options.target, repos);
34 | }
35 | });
36 | }
37 | };
38 | })();
39 |
--------------------------------------------------------------------------------
/content/pyrecap/2024-trend.mmd:
--------------------------------------------------------------------------------
1 | ---
2 | config:
3 | theme: forest
4 | ---
5 | mindmap
6 | root((**蟒周刊 2024 技术主题及社区事件**))
7 | **Web开发**
8 | **主要框架**
9 | Django
10 | Flask
11 | FastAPI
12 | **前端集成**
13 | HTMX
14 | WebAssembly/WASM
15 | Tailwind CSS
16 | InertiaJS
17 | **数据科学与AI**
18 | **核心领域**
19 | 机器学习/深度学习
20 | 自然语言处理(NLP)
21 | 数据分析/处理
22 | **AI应用与工具**
23 | AI应用开发
24 | PyTorch
25 | CUDA
26 | **工具与库**
27 | **开发工具**
28 | 包管理工具(uv, pip-tools, poetry)
29 | 调试工具
30 | 测试工具(pytest)
31 | 代码分析工具
32 | **辅助工具**
33 | REPL改进
34 | 类型检查工具
35 | Jupyter Notebook
36 | 数据库工具
37 | Emacs 开发工具
38 | **语言特性与优化**
39 | **性能优化**
40 | GIL优化
41 | 异步编程(asyncio)
42 | SIMD优化
43 | **代码质量**
44 | 类型提示
45 | CPython改进
46 | 代码重构
47 | **项目管理与部署**
48 | **部署方案**
49 | Docker
50 | Kubernetes
51 | 云服务部署(AWS, Azure)
52 | **项目管理**
53 | 项目打包
54 | 虚拟环境管理
55 | 版本控制
56 | 依赖管理
57 | **其他**
58 | **应用领域**
59 | 串口编程(pyserial)
60 | 游戏开发(Pygame, 虚幻引擎)
61 | 硬件控制(电机)
62 | 多媒体处理
63 | 网络编程
64 | 加密
65 | **运维**
66 | 日志和监控
67 | **社区事件**
68 | **重大影响**
69 | 核心开发人员变动
70 | 新包管理器 UV 兴起
71 | RustPython 项目活跃
72 | AI 工具及应用爆发
73 | Django 新功能发布
74 | **其他关注**
75 | 类型提示的广泛采用
76 | WebAssembly 的关注度提升
77 | Mojo 语言兴起
78 | Python 打包问题讨论
79 | PyPy 发布新版本
80 |
--------------------------------------------------------------------------------
/pub4trigger.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | #
3 | ### changelog::
4 | # 200306:ZQ re-define for rMBP local Pyenv
5 | # 191213:ZQ re-define for YAtrigger restartr self
6 | # 191204:ZQ re-define for Yaz
7 | #1 0 * * * /opt/srv/yaz_studio/yeti/yazi/cmd/inv4pub.sh >> /opt/log/cron/_hook4yaz.log 2>&1
8 |
9 | # 191031:ZQ refactory as inv4pub.sh
10 | # 170818:ZQ refactory for N3160 miniPC Aoi
11 | # 150803:ZQ re-pub with github
12 | # 141022:ZQ creat base hook-deploy-by-git.sh
13 | #=========================================================== var defines
14 | VER="pub4trigger v.200306.2142"
15 | #DATE=`date "+%y%m%d"`
16 | #NOW=$(date +"%Y-%m-%d")
17 |
18 | PBIN=~/.pyenv/versions/ztop380/bin
19 | SELF=~/Sites/PyChina.org/weekly
20 |
21 | GIT=$( which git)
22 |
23 | PY=$PBIN/python
24 | PIP=$PBIN/pip
25 | ACTI=$PBIN/activate
26 | #=========================================================== path defines
27 | NOW=`date +"%y%m%d_%H%M%S"`
28 | YEAR=`date +"%Y"`
29 | MONTH=`date +"%m"`
30 | #AIMP=/opt/log/cron
31 | #LOGF=$AIMP/$YEAR-$MONTH-YAtrigger.log
32 |
33 | #TARGET=/opt/log/yazi/_upd_trigger.log
34 | #=========================================================== action defines
35 | source $ACTI
36 | $PIP list | grep pelican
37 | python -V
38 |
39 | cd $SELF
40 |
41 | git pl
42 |
43 | #fab ?
44 | #fab pub
45 | inv -l
46 | inv pub
47 |
48 |
49 | #=========================================================== action DONE
50 | exit 0
51 |
52 |
53 | # SEE:
54 | # Is there a preferred way to use pyenv in a shell script? · Issue #492 · pyenv/pyenv https://github.com/pyenv/pyenv/issues/492
55 | # cron定时运行python virtualenv中的python程序 - SegmentFault 思否 https://segmentfault.com/q/1010000000319231
56 | # How to set virtualenv for a crontab? | RubyPDF Blog http://blog.rubypdf.com/2018/10/12/how-to-set-virtualenv-for-a-crontab/
57 |
58 |
59 |
--------------------------------------------------------------------------------
/_themes/pelican-bootstrap3/templates/includes/sidebar.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | {% if SOCIAL %}
5 | Social
6 | {% for name, link in SOCIAL %}
7 | {{ name }}
9 |
10 | {% endfor %}
11 | {% endif %}
12 |
13 | {# Uncomment if you want to show Categories #}
14 |
15 |
16 | Categories
17 | {% for cat, null in categories %}
18 |
19 |
20 | {{ cat }}
21 |
22 |
23 |
24 |
25 |
26 | {% endfor %}
27 |
28 | Tags
29 | {% for tag in tag_cloud|sort(attribute='1') %}
30 |
31 |
32 | {{ tag.0 }}
33 |
34 |
35 | {% endfor %}
36 |
37 |
38 | {% include 'includes/powerded.html' %}
39 |
40 | {% include 'includes/github.html' %}
41 |
42 |
--------------------------------------------------------------------------------
/content/PgWeekly/issue-46.md:
--------------------------------------------------------------------------------
1 | Title: Postgres Weekly : Issue 47
2 | Date: 2014-02-19 21:42
3 | Tags: Weekly,Pycoder,Zh
4 | Slug: pgw-47
5 |
6 |
7 | 原文: [Postgres Weekly Issue 47: February 19, 2014](http://postgresweekly.com/issues/47)
8 |
9 |
10 | - [PostgreSQL 9.4 - 对此俺有什么期望](http://www.craigkerstiens.com/2014/02/15/PostgreSQL-9.4-What-I-Wanted/?utm_source=postgresweekly&utm_medium=email)
11 |
12 | PostgreSQL 9.4 已经指日可待了,
13 | 虽然以前俺唠叨过,但是,他们依然没有都包含进去.
14 | 当然,现在你依然可以进入列表以及#postgresql IRC 继续唠叨...
15 |
16 |
17 | `Craig Kerstiens`
18 |
19 | - [PGConf NYC 2014 放票了 - New York - 四月 3-4](https://www.eventbrite.com/e/pgconf-nyc-2014-tickets-5944459037?discount=PGWEEKLY14&aff=pgweekly)
20 |
21 |
22 | 本次 PGConf 已经公布了日程,想去的,俺这儿有 PG Weekly 专用的优惠码 ;-)
23 |
24 | `Eventbrite`
25 |
26 | - [数据库范式: 在PG 中通过 RECURSIVE 使用 Trees 和 Paths](http://blog.databasepatterns.com/2014/02/trees-paths-recursive-cte-postgresql.html?utm_source=postgresweekly&utm_medium=email)
27 |
28 | CTEs 能难以致信的提升 Postgres 的表达能力,
29 | 允许你不用 plpgsql 或是 其它 pl 语言进行递归查询!
30 | 这儿已经有些实例,比如折腾 Trees 和 Paths.
31 |
32 | `Database Patterns`
33 |
34 | - [对 NBA 数据进行聚合, PostgreSQL vs MongoDB](http://tapoueh.org/blog/2014/02/17-aggregating-nba-data-PostgreSQL-vs-MongoDB.html?utm_source=postgresweekly&utm_medium=email)
35 |
36 | 又一场在关系数据库和无模式数据库间的业务比对,
37 | 以相同的事务为目标,对比双方怎么折腾出结果来.
38 |
39 |
40 | `Dimitri Fontaine`
41 |
42 | - [情人节, 爱PG](http://blogs.enterprisedb.com/2014/02/14/valentines-day-a-day-to-love-postgres-2/?utm_source=postgresweekly&utm_medium=email)
43 |
44 | 如果你想在这天入 PG 教,这儿提供了一个不错的资源列表给你.
45 | 当然,如果你自个儿有其它积累,也欢迎增补到其中!
46 |
47 | `Marc Linster`
48 |
49 | - [索引: 被忽视的性能多面手](http://www.slideshare.net/MarkusWinand/indexes-neglectedperformanceallrounder?utm_source=postgresweekly&utm_medium=email)
50 |
51 | 每当遇到性能问题追加硬件往往就能解决,
52 | 从而忽视了 索引 的能力.
53 | 这儿有一次 FOSDEM 中的对话,
54 | 给出了各种在人家哪儿是什么用 索引 跨越性能问题的体验.
55 |
56 |
57 | `Marcus Winand`
58 |
59 | # 是也乎
60 |
61 | - 140219 [Zoom.Quiet](http://zoomquiet.org/) 用时 13 分钟 完成快译.
62 | - 140219 [Zoom.Quiet](http://zoomquiet.org/) 用时 3 分钟 完成格式转抄.
63 |
64 |
65 |
--------------------------------------------------------------------------------
/_themes/pelican-bootstrap3/static/css/pygments/vs.css:
--------------------------------------------------------------------------------
1 | .codehilite .hll { background-color: #ffffcc }
2 | .codehilite .c { color: #008000 } /* Comment */
3 | .codehilite .err { border: 1px solid #FF0000 } /* Error */
4 | .codehilite .k { color: #0000ff } /* Keyword */
5 | .codehilite .cm { color: #008000 } /* Comment.Multiline */
6 | .codehilite .cp { color: #0000ff } /* Comment.Preproc */
7 | .codehilite .c1 { color: #008000 } /* Comment.Single */
8 | .codehilite .cs { color: #008000 } /* Comment.Special */
9 | .codehilite .ge { font-style: italic } /* Generic.Emph */
10 | .codehilite .gh { font-weight: bold } /* Generic.Heading */
11 | .codehilite .gp { font-weight: bold } /* Generic.Prompt */
12 | .codehilite .gs { font-weight: bold } /* Generic.Strong */
13 | .codehilite .gu { font-weight: bold } /* Generic.Subheading */
14 | .codehilite .kc { color: #0000ff } /* Keyword.Constant */
15 | .codehilite .kd { color: #0000ff } /* Keyword.Declaration */
16 | .codehilite .kn { color: #0000ff } /* Keyword.Namespace */
17 | .codehilite .kp { color: #0000ff } /* Keyword.Pseudo */
18 | .codehilite .kr { color: #0000ff } /* Keyword.Reserved */
19 | .codehilite .kt { color: #2b91af } /* Keyword.Type */
20 | .codehilite .s { color: #a31515 } /* Literal.String */
21 | .codehilite .nc { color: #2b91af } /* Name.Class */
22 | .codehilite .ow { color: #0000ff } /* Operator.Word */
23 | .codehilite .sb { color: #a31515 } /* Literal.String.Backtick */
24 | .codehilite .sc { color: #a31515 } /* Literal.String.Char */
25 | .codehilite .sd { color: #a31515 } /* Literal.String.Doc */
26 | .codehilite .s2 { color: #a31515 } /* Literal.String.Double */
27 | .codehilite .se { color: #a31515 } /* Literal.String.Escape */
28 | .codehilite .sh { color: #a31515 } /* Literal.String.Heredoc */
29 | .codehilite .si { color: #a31515 } /* Literal.String.Interpol */
30 | .codehilite .sx { color: #a31515 } /* Literal.String.Other */
31 | .codehilite .sr { color: #a31515 } /* Literal.String.Regex */
32 | .codehilite .s1 { color: #a31515 } /* Literal.String.Single */
33 | .codehilite .ss { color: #a31515 } /* Literal.String.Symbol */
34 |
--------------------------------------------------------------------------------
/content/Issue/hello-world.md:
--------------------------------------------------------------------------------
1 | Title: 你好,世界
2 | Date: 2013-08-09
3 | Tags: md,hallo
4 | Slug: hello-world
5 |
6 | Hallo World!
7 | ==================
8 |
9 | 俺们的第一篇文章
10 |
11 | 为毛要这样发布翻译文档?
12 | ------------------------------
13 |
14 | 为了快速完成 [Pycoder's Weekly | Weekly Python Newsletter](http://pycoders.com/archive.html)的翻译,目测这种形式是必须的!
15 |
16 | - 用 `Wordpress` / `Drupal` 来自个儿架设一个?!
17 | - 嗯嗯嗯,我们只是想有个快速发布内容的渠道
18 | - 并不想成为 SA+DBA+SEO ...复合角色
19 | - 虽然, SAE 的 [云商店](http://www.yunshangdian.com/?a=item&id=23) 有 Wordpress 可选,但是,依赖云主机,无法免费使用...
20 | - 用 blogger / livejournal ... 明星 blogging 服务?
21 | - 不好意思,都是伟大的墙认证过的,,,
22 | - 用 cnblog / csdn / sina ... 国产主流 blogging 服务?
23 | - OMG! 我们不想同木子美们混在同一域名里
24 | - 所以,果断的入了 github 教! 触动我们的文章:
25 | - [为什么Markdown+R有较大概率成为科技写作主流? ← 阳志平的个人网站::技术](http://www.yangzhiping.com/tech/r-markdown-knitr.html)
26 | - [告别wordpress,拥抱jekyll ← 阳志平的个人网站::技术](http://www.yangzhiping.com/tech/wordpress-to-jekyll.html)
27 | - [理想的写作环境:git+github+markdown+jekyll ← 阳志平的个人网站::技术](http://www.yangzhiping.com/tech/writing-space.html)
28 | - [如何提高创作型任务的效率? ← 阳志平的个人网站::随笔](http://www.yangzhiping.com/psy/flow.html)
29 | - [像黑客一样写博客](http://kyle.xlau.org/posts/blogging-like-a-hacker.html)
30 |
31 | - 舒服参考的文章:
32 | - [搭建一个免费的,无限流量的Blog----github Pages和Jekyll入门 - 阮一峰的网络日志](http://www.ruanyifeng.com/blog/2012/08/blogging_with_jekyll.html)
33 | - 再从眼花缭乱的 [Jekll 实例站点](https://github.com/mojombo/jekyll/wiki/Sites)
34 | - 选择出心水的:
35 | - [Home - shawhu的blog](http://shawhu.org/)
36 | - [Benedikt Meurer » Home](http://benediktmeurer.de/)
37 | - 快速完成设计!
38 | - 以及 
39 | - 是另外一种力量感动了我们:
40 | - [开源在中国需要什么? | Blog – GitCafe](http://blog.gitcafe.com/99.html)
41 | - [代码托管服务GitCafe正式上线 | Blog – GitCafe](http://blog.gitcafe.com/10.html)
42 |
43 | 所以,我们来,我们写,我们发布!
44 |
45 |
46 |
47 | ps: 测试语法顔色
48 | ------------------------------
49 |
50 | {% highlight python %}
51 | import sys
52 |
53 | print "Hollo World!-)"
54 | {% endhighlight %}
55 |
56 |
57 |
--------------------------------------------------------------------------------
/_themes/pelican-bootstrap3/static/css/pygments/zenburn.css:
--------------------------------------------------------------------------------
1 | .codehilite code,.codehilite pre{color:#fdce93;background-color:#3f3f3f}.codehilite .hll{background-color:#222}.codehilite .c{color:#7f9f7f}.codehilite .err{color:#e37170;background-color:#3d3535}.codehilite .g{color:#7f9f7f}.codehilite .k{color:#f0dfaf}.codehilite .l{color:#ccc}.codehilite .n{color:#dcdccc}.codehilite .o{color:#f0efd0}.codehilite .x{color:#ccc}.codehilite .p{color:#41706f}.codehilite .cm{color:#7f9f7f}.codehilite .cp{color:#7f9f7f}.codehilite .c1{color:#7f9f7f}.codehilite .cs{color:#cd0000;font-weight:bold}.codehilite .gd{color:#cd0000}.codehilite .ge{color:#ccc;font-style:italic}.codehilite .gr{color:red}.codehilite .gh{color:#dcdccc;font-weight:bold}.codehilite .gi{color:#00cd00}.codehilite .go{color:gray}.codehilite .gp{color:#dcdccc;font-weight:bold}.codehilite .gs{color:#ccc;font-weight:bold}.codehilite .gu{color:purple;font-weight:bold}.codehilite .gt{color:#0040D0}.codehilite .kc{color:#dca3a3}.codehilite .kd{color:#ffff86}.codehilite .kn{color:#dfaf8f;font-weight:bold}.codehilite .kp{color:#cdcf99}.codehilite .kr{color:#cdcd00}.codehilite .kt{color:#00cd00}.codehilite .ld{color:#cc9393}.codehilite .m{color:#8cd0d3}.codehilite .s{color:#cc9393}.codehilite .na{color:#9ac39f}.codehilite .nb{color:#efef8f}.codehilite .nc{color:#efef8f}.codehilite .no{color:#ccc}.codehilite .nd{color:#ccc}.codehilite .ni{color:#c28182}.codehilite .ne{color:#c3bf9f;font-weight:bold}.codehilite .nf{color:#efef8f}.codehilite .nl{color:#ccc}.codehilite .nn{color:#8fbede}.codehilite .nx{color:#ccc}.codehilite .py{color:#ccc}.codehilite .nt{color:#9ac39f}.codehilite .nv{color:#dcdccc}.codehilite .ow{color:#f0efd0}.codehilite .w{color:#ccc}.codehilite .mf{color:#8cd0d3}.codehilite .mh{color:#8cd0d3}.codehilite .mi{color:#8cd0d3}.codehilite .mo{color:#8cd0d3}.codehilite .sb{color:#cc9393}.codehilite .sc{color:#cc9393}.codehilite .sd{color:#cc9393}.codehilite .s2{color:#cc9393}.codehilite .se{color:#cc9393}.codehilite .sh{color:#cc9393}.codehilite .si{color:#cc9393}.codehilite .sx{color:#cc9393}.codehilite .sr{color:#cc9393}.codehilite .s1{color:#cc9393}.codehilite .ss{color:#cc9393}.codehilite .bp{color:#efef8f}.codehilite .vc{color:#efef8f}.codehilite .vg{color:#dcdccc}.codehilite .vi{color:#ffffc7}.codehilite .il{color:#8cd0d3}
2 |
--------------------------------------------------------------------------------
/_themes/pelican-bootstrap3/static/css/pygments/bw.css:
--------------------------------------------------------------------------------
1 | .codehilite .hll { background-color: #ffffcc }
2 | .codehilite .c { font-style: italic } /* Comment */
3 | .codehilite .err { border: 1px solid #FF0000 } /* Error */
4 | .codehilite .k { font-weight: bold } /* Keyword */
5 | .codehilite .cm { font-style: italic } /* Comment.Multiline */
6 | .codehilite .c1 { font-style: italic } /* Comment.Single */
7 | .codehilite .cs { font-style: italic } /* Comment.Special */
8 | .codehilite .ge { font-style: italic } /* Generic.Emph */
9 | .codehilite .gh { font-weight: bold } /* Generic.Heading */
10 | .codehilite .gp { font-weight: bold } /* Generic.Prompt */
11 | .codehilite .gs { font-weight: bold } /* Generic.Strong */
12 | .codehilite .gu { font-weight: bold } /* Generic.Subheading */
13 | .codehilite .kc { font-weight: bold } /* Keyword.Constant */
14 | .codehilite .kd { font-weight: bold } /* Keyword.Declaration */
15 | .codehilite .kn { font-weight: bold } /* Keyword.Namespace */
16 | .codehilite .kr { font-weight: bold } /* Keyword.Reserved */
17 | .codehilite .s { font-style: italic } /* Literal.String */
18 | .codehilite .nc { font-weight: bold } /* Name.Class */
19 | .codehilite .ni { font-weight: bold } /* Name.Entity */
20 | .codehilite .ne { font-weight: bold } /* Name.Exception */
21 | .codehilite .nn { font-weight: bold } /* Name.Namespace */
22 | .codehilite .nt { font-weight: bold } /* Name.Tag */
23 | .codehilite .ow { font-weight: bold } /* Operator.Word */
24 | .codehilite .sb { font-style: italic } /* Literal.String.Backtick */
25 | .codehilite .sc { font-style: italic } /* Literal.String.Char */
26 | .codehilite .sd { font-style: italic } /* Literal.String.Doc */
27 | .codehilite .s2 { font-style: italic } /* Literal.String.Double */
28 | .codehilite .se { font-weight: bold; font-style: italic } /* Literal.String.Escape */
29 | .codehilite .sh { font-style: italic } /* Literal.String.Heredoc */
30 | .codehilite .si { font-weight: bold; font-style: italic } /* Literal.String.Interpol */
31 | .codehilite .sx { font-style: italic } /* Literal.String.Other */
32 | .codehilite .sr { font-style: italic } /* Literal.String.Regex */
33 | .codehilite .s1 { font-style: italic } /* Literal.String.Single */
34 | .codehilite .ss { font-style: italic } /* Literal.String.Symbol */
35 |
--------------------------------------------------------------------------------
/_plugins/extract_toc/extract_toc.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 | """
3 | Extract Table of Content
4 | ========================
5 |
6 | A Pelican plugin to extract table of contents (ToC) from `article.content` and
7 | place it in its own `article.toc` variable for use in templates.
8 | """
9 |
10 | from os import path
11 | from bs4 import BeautifulSoup
12 | from pelican import signals, readers, contents
13 | import logging
14 |
15 | logger = logging.getLogger(__name__)
16 |
17 |
18 | def extract_toc(content):
19 | if isinstance(content, contents.Static):
20 | return
21 |
22 | soup = BeautifulSoup(content._content, 'html.parser')
23 | filename = content.source_path
24 | extension = path.splitext(filename)[1][1:]
25 | toc = None
26 |
27 | # default Markdown reader
28 | if not toc and readers.MarkdownReader.enabled and extension in readers.MarkdownReader.file_extensions:
29 | toc = soup.find('div', class_='toc')
30 | if toc:
31 | toc.extract()
32 |
33 | # default reStructuredText reader
34 | if not toc and readers.RstReader.enabled and extension in readers.RstReader.file_extensions:
35 | toc = soup.find('div', class_='contents topic')
36 | if toc:
37 | toc.extract()
38 | tag = BeautifulSoup(str(toc), 'html.parser')
39 | tag.div['class'] = 'toc'
40 | tag.div['id'] = ''
41 | p = tag.find('p', class_='topic-title first')
42 | if p:
43 | p.extract()
44 | toc = tag
45 |
46 | # Pandoc reader (markdown and other formats)
47 | if 'pandoc_reader' in content.settings['PLUGINS']:
48 | try:
49 | from pandoc_reader import PandocReader
50 | except ImportError:
51 | PandocReader = False
52 | if not toc and PandocReader and PandocReader.enabled and extension in PandocReader.file_extensions:
53 | toc = soup.find('nav', id='TOC')
54 |
55 | if toc:
56 | toc.extract()
57 | content._content = soup.decode()
58 | content.toc = toc.decode()
59 | if content.toc.startswith(''):
60 | content.toc = content.toc[12:-14]
61 |
62 |
63 | def register():
64 | signals.content_object_init.connect(extract_toc)
65 |
--------------------------------------------------------------------------------
/_themes/pelican-bootstrap3/templates/index.html:
--------------------------------------------------------------------------------
1 | {% extends "base.html" %}
2 | {% set PAGINATOR = 20 %}
3 | {% block content %}
4 | {% if articles %}
5 | {% for article in (articles_page.object_list if articles_page else articles) %}
6 |
7 |
8 | {{ article.summary }}
9 | {# Uncomment if you want to show comment counts #}
10 | {#{% include 'includes/comment_count.html' %}#}
11 |
more ...
12 |
13 |
14 |
15 | {% endfor %}
16 | {% endif %}
17 |
18 | {% if articles_page and articles_paginator.num_pages > 1 %}
19 |
43 | {% endif %}
44 | {% endblock content %}
45 |
--------------------------------------------------------------------------------
/_themes/pelican-bootstrap3/templates/includes/github.html:
--------------------------------------------------------------------------------
1 | {% if GITHUB_USER %}
2 |
3 | {% if GITHUB_REPO_COUNT is not defined %}
4 | {% set GITHUB_REPO_COUNT = 5 %}
5 | {% endif %}
6 | {% if GITHUB_SKIP_FORK is not defined %}
7 | {% set GITHUB_SKIP_FORK = "false" %}
8 | {% else %}
9 | {% if GITHUB_SKIP_FORK %}
10 | {% set GITHUB_SKIP_FORK = "true" %}
11 | {% else %}
12 | {% set GITHUB_SKIP_FORK = "false" %}
13 | {% endif %}
14 | {% endif %}
15 | {% if GITHUB_SORT_ATTRIBUTE is not defined %}
16 | {% set GITHUB_SORT_ATTRIBUTE = "pushed_at" %}
17 | {% endif %}
18 | {% if GITHUB_SORT_DESCENDING is not defined %}
19 | {% set GITHUB_SORT_DESCENDING = "true" %}
20 | {% else %}
21 | {% if GITHUB_SORT_DESCENDING %}
22 | {% set GITHUB_SORT_DESCENDING = "true" %}
23 | {% else %}
24 | {% set GITHUB_SORT_DESCENDING = "false" %}
25 | {% endif %}
26 | {% endif %}
27 |
28 |
29 |
30 | GitHub Repos
31 |
32 |
Status updating...
33 |
34 | {% if GITHUB_SHOW_USER_LINK is defined %}
35 | @{{ GITHUB_USER }} on GitHub
36 | {% endif %}
37 |
38 |
58 |
59 |
60 | {% endif %}
--------------------------------------------------------------------------------
/_plugins/sitemap/Readme.rst:
--------------------------------------------------------------------------------
1 | Sitemap
2 | -------
3 |
4 | This plugin generates plain-text or XML sitemaps. You can use the ``SITEMAP``
5 | variable in your settings file to configure the behavior of the plugin.
6 |
7 | The ``SITEMAP`` variable must be a Python dictionary and can contain these keys:
8 |
9 | - ``format``, which sets the output format of the plugin (``xml`` or ``txt``)
10 |
11 | - ``priorities``, which is a dictionary with three keys:
12 |
13 | - ``articles``, the priority for the URLs of the articles and their
14 | translations
15 |
16 | - ``pages``, the priority for the URLs of the static pages
17 |
18 | - ``indexes``, the priority for the URLs of the index pages, such as tags,
19 | author pages, categories indexes, archives, etc...
20 |
21 | All the values of this dictionary must be decimal numbers between ``0`` and ``1``.
22 |
23 | - ``changefreqs``, which is a dictionary with three items:
24 |
25 | - ``articles``, the update frequency of the articles
26 |
27 | - ``pages``, the update frequency of the pages
28 |
29 | - ``indexes``, the update frequency of the index pages
30 |
31 | Valid frequency values are ``always``, ``hourly``, ``daily``, ``weekly``, ``monthly``,
32 | ``yearly`` and ``never``.
33 |
34 | You can exclude URLs from being included in the sitemap via regular expressions.
35 | For example, to exclude all URLs containing ``tag/`` or ``category/`` you can
36 | use the following ``SITEMAP`` setting.
37 |
38 | .. code-block:: python
39 |
40 | SITEMAP = {
41 | 'exclude': ['tag/', 'category/']
42 | }
43 |
44 | If a key is missing or a value is incorrect, it will be replaced with the
45 | default value.
46 |
47 | You can also exclude an individual URL by adding metadata to it setting ``private``
48 | to ``True``.
49 |
50 | The sitemap is saved in ``
/sitemap.``.
51 |
52 | .. note::
53 | ``priorities`` and ``changefreqs`` are information for search engines.
54 | They are only used in the XML sitemaps.
55 | For more information:
56 |
57 | **Example**
58 |
59 | Here is an example configuration (it's also the default settings):
60 |
61 | .. code-block:: python
62 |
63 | PLUGINS=['pelican.plugins.sitemap',]
64 |
65 | SITEMAP = {
66 | 'format': 'xml',
67 | 'priorities': {
68 | 'articles': 0.5,
69 | 'indexes': 0.5,
70 | 'pages': 0.5
71 | },
72 | 'changefreqs': {
73 | 'articles': 'monthly',
74 | 'indexes': 'daily',
75 | 'pages': 'monthly'
76 | }
77 | }
78 |
--------------------------------------------------------------------------------
/develop_server.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | ##
3 | # This section should match your Makefile
4 | ##
5 | PY=python
6 | PELICAN=pelican
7 | PELICANOPTS=
8 |
9 | BASEDIR=$(pwd)
10 | INPUTDIR=$BASEDIR/content
11 | OUTPUTDIR=$BASEDIR/output
12 | CONFFILE=$BASEDIR/pelicanconf.py
13 |
14 | ###
15 | # Don't change stuff below here unless you are sure
16 | ###
17 |
18 | SRV_PID=$BASEDIR/srv.pid
19 | PELICAN_PID=$BASEDIR/pelican.pid
20 |
21 | function usage(){
22 | echo "usage: $0 (stop) (start) (restart) [port]"
23 | echo "This starts pelican in debug and reload mode and then launches"
24 | echo "A pelican.server to help site development. It doesn't read"
25 | echo "your pelican options so you edit any paths in your Makefile"
26 | echo "you will need to edit it as well"
27 | exit 3
28 | }
29 |
30 | function alive() {
31 | kill -0 $1 >/dev/null 2>&1
32 | }
33 |
34 | function shut_down(){
35 | PID=$(cat $SRV_PID)
36 | if [[ $? -eq 0 ]]; then
37 | if alive $PID; then
38 | echo "Killing pelican.server"
39 | kill $PID
40 | else
41 | echo "Stale PID, deleting"
42 | fi
43 | rm $SRV_PID
44 | else
45 | echo "pelican.server PIDFile not found"
46 | fi
47 |
48 | PID=$(cat $PELICAN_PID)
49 | if [[ $? -eq 0 ]]; then
50 | if alive $PID; then
51 | echo "Killing Pelican"
52 | kill $PID
53 | else
54 | echo "Stale PID, deleting"
55 | fi
56 | rm $PELICAN_PID
57 | else
58 | echo "Pelican PIDFile not found"
59 | fi
60 | }
61 |
62 | function start_up(){
63 | local port=$1
64 | echo "Starting up Pelican and pelican.server"
65 | shift
66 | $PELICAN --debug --autoreload -r $INPUTDIR -o $OUTPUTDIR -s $CONFFILE $PELICANOPTS &
67 | pelican_pid=$!
68 | echo $pelican_pid > $PELICAN_PID
69 | cd $OUTPUTDIR
70 | $PY -m pelican.server $port &
71 | srv_pid=$!
72 | echo $srv_pid > $SRV_PID
73 | cd $BASEDIR
74 | sleep 1
75 | if ! alive $pelican_pid ; then
76 | echo "Pelican didn't start. Is the pelican package installed?"
77 | return 1
78 | elif ! alive $srv_pid ; then
79 | echo "pelican.server didn't start. Is there something else which uses port 8000?"
80 | return 1
81 | fi
82 | echo 'Pelican and pelican.server processes now running in background.'
83 | }
84 |
85 | ###
86 | # MAIN
87 | ###
88 | [[ ($# -eq 0) || ($# -gt 2) ]] && usage
89 | port=''
90 | [[ $# -eq 2 ]] && port=$2
91 |
92 | if [[ $1 == "stop" ]]; then
93 | shut_down
94 | elif [[ $1 == "restart" ]]; then
95 | shut_down
96 | start_up $port
97 | elif [[ $1 == "start" ]]; then
98 | if ! start_up $port; then
99 | shut_down
100 | fi
101 | else
102 | usage
103 | fi
104 |
--------------------------------------------------------------------------------
/_themes/pelican-bootstrap3/static/js/jXHR.js:
--------------------------------------------------------------------------------
1 | // jXHR.js (JSON-P XHR)
2 | // v0.1 (c) Kyle Simpson
3 | // MIT License
4 |
5 | (function(global){
6 | var SETTIMEOUT = global.setTimeout, // for better compression
7 | doc = global.document,
8 | callback_counter = 0;
9 |
10 | global.jXHR = function() {
11 | var script_url,
12 | script_loaded,
13 | jsonp_callback,
14 | scriptElem,
15 | publicAPI = null;
16 |
17 | function removeScript() { try { scriptElem.parentNode.removeChild(scriptElem); } catch (err) { } }
18 |
19 | function reset() {
20 | script_loaded = false;
21 | script_url = "";
22 | removeScript();
23 | scriptElem = null;
24 | fireReadyStateChange(0);
25 | }
26 |
27 | function ThrowError(msg) {
28 | try { publicAPI.onerror.call(publicAPI,msg,script_url); } catch (err) { throw new Error(msg); }
29 | }
30 |
31 | function handleScriptLoad() {
32 | if ((this.readyState && this.readyState!=="complete" && this.readyState!=="loaded") || script_loaded) { return; }
33 | this.onload = this.onreadystatechange = null; // prevent memory leak
34 | script_loaded = true;
35 | if (publicAPI.readyState !== 4) ThrowError("Script failed to load ["+script_url+"].");
36 | removeScript();
37 | }
38 |
39 | function fireReadyStateChange(rs,args) {
40 | args = args || [];
41 | publicAPI.readyState = rs;
42 | if (typeof publicAPI.onreadystatechange === "function") publicAPI.onreadystatechange.apply(publicAPI,args);
43 | }
44 |
45 | publicAPI = {
46 | onerror:null,
47 | onreadystatechange:null,
48 | readyState:0,
49 | open:function(method,url){
50 | reset();
51 | internal_callback = "cb"+(callback_counter++);
52 | (function(icb){
53 | global.jXHR[icb] = function() {
54 | try { fireReadyStateChange.call(publicAPI,4,arguments); }
55 | catch(err) {
56 | publicAPI.readyState = -1;
57 | ThrowError("Script failed to run ["+script_url+"].");
58 | }
59 | global.jXHR[icb] = null;
60 | };
61 | })(internal_callback);
62 | script_url = url.replace(/=\?/,"=jXHR."+internal_callback);
63 | fireReadyStateChange(1);
64 | },
65 | send:function(){
66 | SETTIMEOUT(function(){
67 | scriptElem = doc.createElement("script");
68 | scriptElem.setAttribute("type","text/javascript");
69 | scriptElem.onload = scriptElem.onreadystatechange = function(){handleScriptLoad.call(scriptElem);};
70 | scriptElem.setAttribute("src",script_url);
71 | doc.getElementsByTagName("head")[0].appendChild(scriptElem);
72 | },0);
73 | fireReadyStateChange(2);
74 | },
75 | setRequestHeader:function(){}, // noop
76 | getResponseHeader:function(){return "";}, // basically noop
77 | getAllResponseHeaders:function(){return [];} // ditto
78 | };
79 |
80 | reset();
81 |
82 | return publicAPI;
83 | };
84 | })(window);
85 |
--------------------------------------------------------------------------------
/_themes/pelican-bootstrap3/static/css/style.css:
--------------------------------------------------------------------------------
1 | /* PyChina.org design by Zoom.Quiet
2 | - 190626 upgrade fixed div#article-content
3 | */
4 | div#article-content ul li ul li {
5 | color: yellowgreen;
6 | font-size: 70%;
7 | position: relative;
8 | float: right;
9 | top: -2em;
10 | padding-right: 3em;
11 | }
12 |
13 | /* PyChina.org design by Zoom.Quiet
14 | .highlight pre {
15 | background-color: #202020;
16 | color: #777;
17 | }
18 | */
19 |
20 |
21 | .navbar-nav {
22 | float: left;
23 | margin: 0px 0px 0px -100px;
24 | }
25 | .navbar-nav a:hover {
26 | background-color: #eee;
27 | text-decoration: underline;
28 | }
29 |
30 | .navbar-brand {
31 | float: left;
32 | padding: 10px 0px 4px 15px;
33 | }
34 |
35 |
36 | .list-group-zip {
37 | padding-left: 0;
38 | margin-bottom: 4px;
39 | }
40 | .list-group-item-zip {
41 | position: relative;
42 | display: block;
43 | padding: 2px 15px;
44 | margin-bottom: -1px;
45 | background-color: #fff;
46 | border: 1px solid #ddd;
47 | }
48 | span.violet-site {
49 | display: inline;
50 | font-size: 10px;
51 | font-weight: 600;
52 | color: #525252;
53 | background: #d8d8d8;
54 | line-height: 12px;
55 | position: relative;
56 | border-radius: 7px 0px 7px 0;
57 | padding: 0px 5px 0 3px;
58 | top: -23px;
59 | left: -5px;
60 | }
61 |
62 | /*
63 | span.violet-site {
64 | display: inline;
65 | line-height: 12px;
66 | font-size: 10px;
67 | font-weight: 600;
68 | color: #525252;
69 | background: #d8d8d8;
70 | position: absolute;
71 | padding: 0px 10px 0 10px;
72 | border-radius: 7px 0px 7px 0;
73 | top: 2px;
74 | left: 160px;
75 | }
76 | */
77 |
78 | /* original design */
79 | body {
80 | padding-top: 70px;
81 | }
82 |
83 | #sidebar .list-group, #sidebar .list-group-item {
84 | background-color: transparent;
85 | }
86 |
87 | .list-group-item {
88 | border: none;
89 | }
90 |
91 | .tag-1 {
92 | font-size: 13pt;
93 | }
94 |
95 | .tag-2 {
96 | font-size: 10pt;
97 | }
98 |
99 | .tag-2 {
100 | font-size: 8pt;
101 | }
102 |
103 | .tag-4 {
104 | font-size: 6pt;
105 | }
106 |
107 | #sidebar {
108 | padding-top: 0px;
109 | }
110 |
111 | #sidebar a {
112 | color: inherit;
113 | }
114 |
115 | i {
116 | margin-right: 10px;
117 | }
118 |
119 | a, a:hover {
120 | color: inherit;
121 | }
122 |
123 | .entry-content a {
124 | text-decoration: none;
125 | border-bottom: 1px dotted;
126 | }
127 |
128 | .entry-content a:hover {
129 | text-decoration: none;
130 | border-bottom: 1px solid;
131 | }
132 |
133 | .entry-content img {
134 | max-width: 100%;
135 | height: auto;
136 | }
137 |
138 |
139 | #categories ul, #tags ul {
140 | list-style: none;
141 | padding: 0;
142 | margin-left: 0;
143 | }
--------------------------------------------------------------------------------
/content/importpython/why-another-py-newsletter.md:
--------------------------------------------------------------------------------
1 | Title: 为毛又来个 Py 周刊?
2 | Date: 2014-11-27
3 | Tags: Weekly,ImportPython,Zh
4 | Slug: importpython-why
5 |
6 | 
7 |
8 |
9 | 原文: [Why Another Python Newsletter ?](http://importpython.com/blog/post/why-another-python-newsletter)
10 |
11 | Have been subscriber of Python Weekly for a long time and lately Pycoder's weekly. Both newsletters do a tremendous job. Have learned a lot from the links they share every week. Then why launch Yet Another Newsletter ?.
12 |
13 | The problem with both these newsletters and pretty much every other newsletter is "It's a one size fits all" approach.
14 |
15 | Assume a freshman learning Python and a Professionally with 5+ years of Python Development experience. They both have different needs. Links they click reflect their interest. Wouldn't it be great if a newsletter content could adapt to what they like and change accordingly ?. That's what ImportPython intends to do.
16 |
17 | Import Python Newsletter launched a month back at Pycon India as part of the lightning talk. Approach was to learn till the first 10 issue how users behave and what links/articles they click/read. Based on the learning roll out a content recommendation engine. One that decides what content goes in which newsletter.
18 |
19 | ## What are the parameters/document features that recommendation engine takes into account ?
20 |
21 | - Click History. Terms that appear in the article that user reads.
22 | - Length of the article.
23 | - Preference to sections ? Articles ? Projects ? Videos ? Tweets ?.
24 | - No of clicks per newsletter reflects consumption appetite.
25 |
26 | ## How do we know if the recommendation engine is doing it's job ?
27 |
28 | It's difficult to assess per user unless one can get feedback over a period of time. However click through rates will offer insight into how efficient the algorithm is ?. Also Average open rate being higher then other newsletters or industry standard is another benchmark to compare with.
29 |
30 | Issue 10th is the last "One size fits all" version of importpython.com. Issue 11th to 20th will see rollout of the recommendation engine to a subset of subscribers. The subset of users are those who are subscribed from issue one. Every week the subset grows until 20th issue when all users as of today would have a recommended newsletter.
31 |
32 | Tweet
33 |
34 | # 是也乎
35 | Pycoder's weekly 已经坚持了很长时间,作的也很好.
36 | (当然的,大妈也坚持翻译了下来: [|蠎周刊 |汇集全球蠎事儿 !-)](http://weekly.pychina.org/))
37 |
38 | 那么问题来了, 为毛我们还需要另外一个周刊呢?
39 |
40 | 简单的说, 世界没这么简单,不同层次的行者,需要不同的信息...
41 |
42 | 引擎对文章的推荐参数有这么几个方向:
43 |
44 | - 点击
45 | - 长度
46 | - 类型
47 | - 阅读偏爱 (newsletter 打开的情景,以及再次点击...)
48 |
49 | 那么问题来了, 推荐引擎这么来靠谱嘛?
50 |
51 | 所以, 我们要尝试其它的方式来推荐,
52 | 从 Issue 10 开始,将结束这种单一结构的内容,
53 | 具体的我们折腾的来..
54 |
55 |
56 | - 141202 用时 7分钟完成翻译.
57 | - 141202 [Zoom.Quiet](http://zoomquiet.io) 用时7分钟完成格式化.
58 |
59 |
60 |
61 |
62 |
63 |
--------------------------------------------------------------------------------
/content/importpython/issue-002.md:
--------------------------------------------------------------------------------
1 | Title: 蠎加载 2
2 | Date: 2014-10-02 23:32
3 | Tags: Weekly,ImportPython,Zh
4 | Slug: importpython-2
5 |
6 | 
7 |
8 | ## 大家好,
9 |
10 |
11 |
12 | 原文: [importpython-2](http://importpython.com/static/files/issue2.html)
13 |
14 |
15 | ## 该读
16 | ~ 文章, Blog, 教程...
17 |
18 | - [访问Reddit的API](http://blog.thehumangeo.com/2014/09/23/supercharging-your-reddit-api-access/)
19 |
20 | 解释了怎么用PRAW来使用它们的API访问Reddit(Python Reddit API 封装)
21 |
22 | - [Django多模板引擎](https://www.indiegogo.com/projects/multiple-template-engines-for-django)
23 |
24 | Django支持多个模板引擎的众筹活动. Jinja2将会是模板. 由Aymeric Augustin发起.
25 |
26 | - [更新你的可重用Djanog APP到Django1.7版本](https://www.twilio.com/blog/2014/10/upgrading-your-django-reusable-app-to-support-django-1-7.html)
27 |
28 | Django项目从1.6以及以下版本升级到1.7的一个指南. 重点在数据迁移.
29 |
30 | - [Sharq - 基于Redis的限制速率的队列系统](http://sharq.io/)
31 |
32 | 动态创建新队列和实时限制更新速率,零配置
33 |
34 | - [微软 Visual C++ 编译版Python2.7](https://mail.python.org/pipermail/distutils-sig/2014-September/024885.html)
35 |
36 | 微软发布了一个Pyhton2.7的编译包,它可以让大家在windows上更容易的建立和发布C扩展模块
37 |
38 | ## 代码
39 | ~ 包/模块/库/片段...
40 |
41 |
42 | - [Taiga](https://github.com/taigaio/taiga-back)
43 | - 518 Stars, Trending for 2 Days
44 |
45 | 记住scrum的web型项目管理工具, 建立在Django和AngularJS(后端代码)上.
46 |
47 | - [GoAgent](https://github.com/goagent/goagent)
48 | - 11 Stars, Trending for 1 Days
49 |
50 | GAE代理
51 |
52 | - [Python Prompt Toolkit](https://github.com/jonathanslenders/python-prompt-toolkit)
53 | - 763 Stars, Trending for 4 Days
54 |
55 | 使用Python建立交互式命令行的库
56 |
57 | - [Odoo](https://github.com/odoo/odoo)
58 | - 1329 Stars, Trending for 2 Days
59 |
60 | Odoo (原来的OpenERP). 帮助你做生意的开源APP.
61 |
62 | - [inbox](https://github.com/inboxapp/inbox)
63 | - 1622 Stars, Trending for 5 Days
64 |
65 | 下一代邮件平台
66 |
67 | ## 曰了
68 | ~ Tweets
69 |
70 | - [Guido van Rossum »](https://twitter.com/gvanrossum/status/517418015613538304)
71 |
72 | PY2(pyhton2) 的使用者: 做你喜欢的东西并开始使用 "from \__future\__ import print_function"
73 |
74 | - [哈利·波特 和 Python »](http://9gag.com/gag/aKgj6M3?ref=tp)
75 |
76 | 一些该看或者不该看的
77 |
78 | ## 本周之星
79 | ~ 一周 Python 程序员之选
80 |
81 | [](https://github.com/jonathanslenders)
82 |
83 | [](https://github.com/JakeWharton)
84 |
85 | [](https://github.com/feross)
86 |
87 | [](https://github.com/ValdikSS)
88 |
89 |
90 |
91 | # 是也乎
92 | ~ 参考: [为毛又一个蠎周刊?](importpython-why)
93 |
94 | - 150123 来自 [635e235e](https://gitcafe.com/CPyUG/weekly/commit/635e235eb1b42c3f43d62ff73c5c48a89eb6854c) 的 `PR`
95 | - 141202 [Zoom.Quiet](http://zoomquiet.io) 用时7分钟完成格式化.
96 | - 150126 [orangleliu](http://orangleliu.info) 补译
97 |
--------------------------------------------------------------------------------
/content/_extra/README.md:
--------------------------------------------------------------------------------
1 | Title: README
2 |
3 | # PyChina.github.io
4 |
5 | in fact from 2003 there is CZUG.org ~ the 1st(and only one) focus Zope tech community be set up;
6 |
7 | so years ago, there is soooooooo many python tech abt. commuity in China
8 |
9 | but never group as one unify community brand,
10 | like as: perl-china/ruby-china etc.
11 |
12 | so after PyCon2013China, some `old` Chinese Pythonista together and building:
13 |
14 | 
15 |
16 | ## goal
17 |
18 | - by Pythonner in China Operations
19 | - as Pythonner in China Deleloping
20 | - for Pythonista in Global support events organizing srvice
21 |
22 |
23 | ## organizer
24 |
25 | - lepture
26 | - KJ
27 | - Sting
28 | - twinsant
29 | - Zoom.Quiet
30 |
31 | ## usage
32 | How to update the site contents
33 |
34 | main loop:
35 |
36 | 1. git clone git@github.com:PyChina/CPyUG.git
37 | 1. edit some .md in `content/`
38 | 1. `fab build` for test local
39 | 1. `git` add->ci->push
40 | 1. `fab deploy2obp` published through `obp` into pychina.u.qiniudn.com
41 | 1. `cd output`
42 | 1. `git` add->ci->push published as pychina.github.io
43 |
44 | ### writing
45 |
46 | - fork https://gitcafe.com/CPyUG/PyChina into local
47 | - or becamed https://gitcafe.com/CPyUG member hold the repo. ACL
48 | - cd into content/
49 | - the sub-dir means:
50 |
51 | content/
52 | +- Events 首字母大写的是分类目录 收集对应文章
53 | +- Volunteer ...志愿者
54 | +- _extra 扩展功能文件 e.g robots.txt
55 | +- _files 站内文件
56 | +- _images 站内图片
57 | `- pages 类似 about 的导航栏文档
58 |
59 | #### 文章格式
60 | - 标准 Markdown 格式
61 | - 以 .md 为后缀
62 | - 文件名不得使用中文/空格/符号
63 | - 内容模板:
64 |
65 | Title: 中E可以混杂的标题
66 | Date: 2013-12-09
67 | Tags: people, shanghai
68 | Slug: sting-chen
69 | Author: Zoom.Quiet
70 |
71 | - 其中:
72 | - `Date:` 如果没有将使用文件的系统时间
73 | - `Tags:` 使用逗号作间隔, 不宜过多,建议三个为界,以人物/行为/目标领域 为方向进行定义
74 | - 参考: [如何规划blog的标签(tag)和分类 - 心内求法 - 博客园](http://www.cnblogs.com/holbrook/archive/2012/11/05/2755268.html)
75 | - `Slug:` 是实际输出的页面文件名, 建议全部小写E文, 使用中划线, 不使用特殊符号
76 |
77 |
78 | ### deploy
79 |
80 | 支持本地调试! 使用 `fabric` 进行管理, 支持的命令:
81 |
82 | fab
83 | Available commands:
84 |
85 | build 编译所有页面
86 | deploy 向主机部署所有页面
87 | rebuild 重编译所有页面
88 | reserve 重编译所有页面再启动本地服务
89 | serve 启动本地服务 localhost:8000
90 |
91 |
92 | `注意!` 向主机部署,需要有相关权限,并在本地配置好对应 SSH 信息
93 |
94 | ### design
95 |
96 | 基于 [pelican-bootstrap3](https://github.com/getpelican/pelican-themes/tree/master/pelican-bootstrap3) 深度定制
97 |
98 | - 配置: `pelicanconf.py`
99 | - 样式: `_themes/pelican-bootstrap3/`
100 | - 插件: `_plugins/`
101 |
102 | ## changelog
103 |
104 | - 140102 re-publish into https://github.com/PyChina/PyChina.github.io
105 | - 131218 base pelican build and through qiniu.com publish
--------------------------------------------------------------------------------
/fabfile.py:
--------------------------------------------------------------------------------
1 | import functools
2 | import os
3 |
4 | from invoke import task
5 | #from fabric.api import env, lcd, local, task
6 |
7 | # Local path configuration (can be absolute or relative to fabfile)
8 | env.input_path = 'content'
9 | env.deploy_path = 'output'
10 |
11 |
12 | def build(c):
13 | c.run('pelican {input_path} -o {deploy_path} -s pelicanconf.py'.format(**env))
14 |
15 |
16 | def serve(c):
17 | c.run('cd {deploy_path} && python -m SimpleHTTPServer'.format(**env))
18 |
19 |
20 | def reserve(c):
21 | build(c)
22 | serve(c)
23 |
24 |
25 | def gh_pages(c):
26 | c.run('cd {deploy_path} && '
27 | 'pwd && '
28 | 'git st && '
29 | 'git add --all . && '
30 | 'git ci -am "re-build from local by markdoc @MBP111216ZQ" && '
31 | # 'git pu cafe gitcafe-page '
32 | 'git pu && '
33 | 'date '.format(**env)
34 | )
35 |
36 | @task
37 | def pub(c):
38 | pull_data(c)
39 | build(c)
40 | # CNAME()
41 | gh_pages(c)
42 |
43 |
44 | def pull_data():
45 | c.run(
46 | 'cd {deploy_path} && '
47 | 'pwd && '
48 | 'git pull'.format(**env)
49 | )
50 |
51 |
52 | '''
53 | env.deploy_7niu = '7niu'
54 | env.qiniu_bin = '/opt/bin/7niu_package_darwin_amd64/qrsync'
55 | env.qiniu_conf = '../7niu4pychina.json'
56 |
57 |
58 | def cd_app_root(func):
59 | app_root = os.path.dirname(os.path.realpath(__file__))
60 |
61 | @functools.wraps(func)
62 | def _to_app_root(*args, **kwargs):
63 | with lcd(app_root):
64 | return func(*args, **kwargs)
65 | return _to_app_root
66 |
67 | @task
68 | @cd_app_root
69 | def pub7niu():
70 | build7niu()
71 | local('pwd && '
72 | '{qiniu_bin} {qiniu_conf} && '
73 | 'date '.format(**env)
74 | )
75 | @task
76 | @cd_app_root
77 | def build7niu():
78 | local(
79 | 'pelican {input_path} -o {deploy_7niu} -s pelicanconf.py'.format(**env)
80 | )
81 |
82 | @task
83 | @cd_app_root
84 | def pub2cafe():
85 | build4cafe()
86 | local(
87 | 'cd {deploy_pages} && '
88 | 'pwd && '
89 | # 'git pu && '
90 | 'git add --all . && '
91 | # 'git st && '
92 | 'git ci -am "upgraded in local. @MBP111216ZQ" && '
93 | # 'git pu cafe gitcafe-page '
94 | 'git pu && '
95 | 'pwd '.format(**env)
96 | )
97 | @task
98 | @cd_app_root
99 | def build4cafe():
100 | local(
101 | 'pelican {input_path} -o {deploy_pages} -s pelicanconf.py'.format(**env)
102 | )
103 |
104 | @task
105 | @cd_app_root
106 | def serve():
107 | local('cd {deploy_path} && python -m SimpleHTTPServer'.format(**env))
108 | @task
109 | @cd_app_root
110 | def reserve():
111 | build()
112 | serve()
113 |
114 | @task
115 | def install_deps():
116 | local(
117 | 'pip install '
118 | 'beautifulsoup4 '
119 | 'Markdown '
120 | 'pelican'
121 | )
122 | '''
123 |
--------------------------------------------------------------------------------
/_themes/pelican-bootstrap3/static/css/pygments/borland.css:
--------------------------------------------------------------------------------
1 | .codehilite .hll { background-color: #ffffcc }
2 | .codehilite .c { color: #008800; font-style: italic } /* Comment */
3 | .codehilite .err { color: #a61717; background-color: #e3d2d2 } /* Error */
4 | .codehilite .k { color: #000080; font-weight: bold } /* Keyword */
5 | .codehilite .cm { color: #008800; font-style: italic } /* Comment.Multiline */
6 | .codehilite .cp { color: #008080 } /* Comment.Preproc */
7 | .codehilite .c1 { color: #008800; font-style: italic } /* Comment.Single */
8 | .codehilite .cs { color: #008800; font-weight: bold } /* Comment.Special */
9 | .codehilite .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */
10 | .codehilite .ge { font-style: italic } /* Generic.Emph */
11 | .codehilite .gr { color: #aa0000 } /* Generic.Error */
12 | .codehilite .gh { color: #999999 } /* Generic.Heading */
13 | .codehilite .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */
14 | .codehilite .go { color: #888888 } /* Generic.Output */
15 | .codehilite .gp { color: #555555 } /* Generic.Prompt */
16 | .codehilite .gs { font-weight: bold } /* Generic.Strong */
17 | .codehilite .gu { color: #aaaaaa } /* Generic.Subheading */
18 | .codehilite .gt { color: #aa0000 } /* Generic.Traceback */
19 | .codehilite .kc { color: #000080; font-weight: bold } /* Keyword.Constant */
20 | .codehilite .kd { color: #000080; font-weight: bold } /* Keyword.Declaration */
21 | .codehilite .kn { color: #000080; font-weight: bold } /* Keyword.Namespace */
22 | .codehilite .kp { color: #000080; font-weight: bold } /* Keyword.Pseudo */
23 | .codehilite .kr { color: #000080; font-weight: bold } /* Keyword.Reserved */
24 | .codehilite .kt { color: #000080; font-weight: bold } /* Keyword.Type */
25 | .codehilite .m { color: #0000FF } /* Literal.Number */
26 | .codehilite .s { color: #0000FF } /* Literal.String */
27 | .codehilite .na { color: #FF0000 } /* Name.Attribute */
28 | .codehilite .nt { color: #000080; font-weight: bold } /* Name.Tag */
29 | .codehilite .ow { font-weight: bold } /* Operator.Word */
30 | .codehilite .w { color: #bbbbbb } /* Text.Whitespace */
31 | .codehilite .mf { color: #0000FF } /* Literal.Number.Float */
32 | .codehilite .mh { color: #0000FF } /* Literal.Number.Hex */
33 | .codehilite .mi { color: #0000FF } /* Literal.Number.Integer */
34 | .codehilite .mo { color: #0000FF } /* Literal.Number.Oct */
35 | .codehilite .sb { color: #0000FF } /* Literal.String.Backtick */
36 | .codehilite .sc { color: #800080 } /* Literal.String.Char */
37 | .codehilite .sd { color: #0000FF } /* Literal.String.Doc */
38 | .codehilite .s2 { color: #0000FF } /* Literal.String.Double */
39 | .codehilite .se { color: #0000FF } /* Literal.String.Escape */
40 | .codehilite .sh { color: #0000FF } /* Literal.String.Heredoc */
41 | .codehilite .si { color: #0000FF } /* Literal.String.Interpol */
42 | .codehilite .sx { color: #0000FF } /* Literal.String.Other */
43 | .codehilite .sr { color: #0000FF } /* Literal.String.Regex */
44 | .codehilite .s1 { color: #0000FF } /* Literal.String.Single */
45 | .codehilite .ss { color: #0000FF } /* Literal.String.Symbol */
46 | .codehilite .il { color: #0000FF } /* Literal.Number.Integer.Long */
47 |
--------------------------------------------------------------------------------
/content/importpython/issue-005.md:
--------------------------------------------------------------------------------
1 | Title: 蠎加载 5
2 | Slug: importpython-5
3 | Date: 2014-10-23 23:32
4 | Tags: Weekly,ImportPython,Zh
5 |
6 | 
7 |
8 |
9 | 原文: [issue5](http://importpython.com/static/files/issue5.html)
10 |
11 |
12 | ## 发了
13 | ~ Just Out
14 |
15 | - [Django 1.7.1 发布](https://docs.djangoproject.com/en/1.7/releases/1.7.1/)
16 |
17 | Django1.7.1 修复了1.7 版本中的几个bug.
18 |
19 |
20 | ## 该读
21 | ~ 文章, Blog, 教程...
22 |
23 | - [Python 隐藏的特性](http://stackoverflow.com/questions/101268/hidden-features-of-python#)
24 |
25 | Python 编程语言有哪些鲜为人知而又十分有用的特性呢? 6年前发布在 stackoverflow 上的这个问题,非常有必要读一读.
26 |
27 | - [通过Python使用Elasticsearch ](http://engineroom.trackmaven.com/blog/first-monthly-challenge-elasticsearch/)
28 |
29 | Elasticsearch 是一个极为强大的搜索和分析引擎.
30 |
31 | - [Python Async IO 资源](http://asyncio.org/)
32 |
33 | 整合了大量的关于python3.4 asyncio 的演讲,类库,资源.
34 |
35 | - [Python 全局变量](http://kracekumar.com/post/100399630630/python-global-keyword)
36 |
37 | 用简单的代码片段来解释全局变量是如何工作的?
38 |
39 | - [Python 最好的IDE 集合](http://codecondo.com/best-python-ide-for-developers/)
40 |
41 | 拥有一个好的代码编辑器(集成开发环境)真的可以改变你的开发速度,因为它能把工作项目完全整合起来.
42 |
43 | - [大量的python在线学习教程](https://www.codementor.io/organize-python-online)
44 |
45 | - [Flask 处理视频流](http://blog.miguelgrinberg.com/post/video-streaming-with-flask)
46 |
47 | 这个篇文章着眼于流媒体,一个有趣的功能是让 Flask 应用可以把一个很大的 response 在一段很长的时间内切分成小块来响应.
48 |
49 | ## 代码
50 | ~ 包/模块/库/片段...
51 |
52 | - [Doga](https://github.com/pravj/Doga)
53 | - 194 Stars
54 |
55 | 更好用的 HTTP log 监控控制台. Trivia Doga 是以印度漫画超级英雄人物来命名的.
56 |
57 | - [q - Text as Data](http://harelba.github.io/q/)
58 | - 338 Stars, Trending for 1 Day
59 |
60 | q 是一个可以直接在 CSVs/TSVs(任何其他表格形式的文本文件)文件上执行类似 SQL 查询的命令行工具.
61 |
62 | - [fig](https://github.com/docker/fig)
63 | - 3294 Stars
64 |
65 | 使用Docker建立快速,隔离的开发环境
66 |
67 | - [prospector](https://github.com/landscapeio/prospector)
68 | - 241 Stars
69 |
70 | 检查 Python 源码,并提供类型,classes定位,方法等信息.
71 |
72 | - [Pixie](https://github.com/pixie-lang/pixie)
73 | - 249 Stars
74 |
75 | A small fast, native lisp with "magical" powers.
76 | 一个小巧,快速,充满魔法力量的原始lisp.
77 |
78 | - [beets](https://github.com/sampsyo/beets)
79 | - 3247 Stars
80 |
81 | Beets 是一个面向具有强迫症音乐极客的多媒体管理系统. beets 的目标是让你的音乐收藏变得一劳永逸.
82 | 它可以自动分类和导入媒体信息,提供了一系列编辑和访问音乐的工具.
83 |
84 | - [Gamification Server](https://github.com/ngageoint/gamification-server)
85 | - 43 Stars
86 |
87 | 在网页或者app中追踪游戏元素(徽章,点,标记)的服务
88 |
89 | - [Logbook](https://github.com/mitsuhiko/logbook)
90 | - 635 Stars
91 |
92 | 一个很酷的logging库,用来替换Python 内置logging库
93 |
94 | - [cropman](https://github.com/ufoym/cropman)
95 | - 281 Stars
96 |
97 | 图像面部自动截取(看github的例子还挺准)
98 |
99 | ## 播了
100 | ~ Podcast
101 |
102 | [Django 自动化部署攻略»](http://www.reddit.com/r/django/comments/2k2gz5/strategies_on_automated_django_deployment/)
103 |
104 | 讨论了现有的Django自动化部署方案. 在Reddit上
105 |
106 | ## 本周之星
107 | ~ 一周 Python 程序员之选
108 | 
109 | Victor Felder
110 |
111 | # 是也乎
112 |
113 | ~ 参考: [为毛又一个蠎周刊?](importpython-why)
114 |
115 | - 141204 用时 .57分钟完成翻译.
116 | - 141204 [Zoom.Quiet](http://zoomquiet.io) 用时7分钟完成格式化.
117 | - 150127 [orangleliu](http://orangleliu.info) 补译
118 |
--------------------------------------------------------------------------------
/_themes/pelican-bootstrap3/README.md:
--------------------------------------------------------------------------------
1 | # pelican-bootstrap3
2 |
3 | This is a Bootstrap 3 theme for Pelican. It's fully responsive. Bootstrap 3 has seen an official, final release now, so I don't expect any breaking changes anymore. I will try to keep it up-to-date.
4 |
5 | ## Installation
6 |
7 | First:
8 |
9 | `git clone https://github.com/DandyDev/pelican-bootstrap3.git`
10 |
11 | Then:
12 |
13 | Point the `THEME` variable in your `pelicanconf.py` to `/path/to/pelican-bootstrap3`
14 |
15 | ## Usage
16 |
17 | This theme honors the following standard Pelican settings:
18 |
19 | * Putting feeds in the `` section:
20 | * `FEED_ALL_ATOM`
21 | * `FEED_ALL_RSS`
22 | * Template settings:
23 | * `DISPLAY_PAGES_ON_MENU`
24 | * `DISPLAY_CATEGORIES_ON_MENU`
25 | * `MENUITEMS`
26 | * Analytics & Comments
27 | * `GOOGLE_ANALYTICS`
28 | * `DISQUS_SITENAME`
29 |
30 | It uses the `tag_cloud` variable for displaying tags in the sidebar. You can control the amount of tags shown with: `TAG_CLOUD_MAX_ITEMS`
31 |
32 | Categories are disabled by default because I don't use them myself. If you want to show them in the sidebar, uncomment the relevant section in `includes/sidebar.html`
33 |
34 | ## Extras
35 |
36 | ### GitHub
37 |
38 | The theme can show your most recently active GitHub repos in the sidebar. To enable, provide a `GITHUB_USER`. Appearance and behaviour can be controlled using the following variables:
39 |
40 | * `GITHUB_REPO_COUNT` (default: `5`)
41 | * `GITHUB_SKIP_FORK` (default: `False`)
42 | * `GITHUB_SHOW_USER_LINK` (default: `True`)
43 | * `GITHUB_SORT_ATTRIBUTE` (default: `pushed_at`, for other attributes like `stargazers_count` cf. `https://api.github.com/users//repos`)
44 | * `GITHUB_SORT_DESCENDING` (default: `True`)
45 |
46 | ### Bootswatch and other Bootstrap 3 themes
47 |
48 | I included all the lovely Bootstrap 3 themes from [Bootswatch](http://bootswatch.com/), built by [Thomas Park](https://github.com/thomaspark). You can tell Pelican what Bootswatch theme to use, by setting `BOOTSTRAP_THEME` to the desired theme, in lowercase (ie. 'readable' or 'cosmo' etc.). My own site is using _Readable_. If you want to use any other Bootstrap 3 compatible theme, just put the minified CSS in the `static/css` directory and rename it using the following naming scheme: `bootstrap.{theme-name}.min.css`. Then update the `BOOTSTRAP_THEME` variable with the _theme-name_ used.
49 |
50 | ### AddThis
51 |
52 | You can enable sharing buttons through [AddThis](http://www.addthis.com/) by setting `ADDTHIS_PROFILE` to your AddThis profile-id. This will display a **Tweet**, **Facebook Like** and **Google +1** button under each post.
53 |
54 | ### Facebook Open Graph
55 |
56 | In order to make the Facebook like button work better, the template contains Open Graph metatags like ` `. You can disable them by setting `USE_OPEN_GRAPH` to `False`. You can use `OPEN_GRAPH_FB_APP_ID` to provide a Facebook _app id_. You can also provide a default image that will be passed to Facebook for the homepage of you site by setting `OPEN_GRAPH_IMAGE` to a relative file path, which will be prefixed by your site's static directory.
57 |
58 | ### Tag List
59 |
60 | You can customize the separator between article tags with `TAG_LIST_SEPARATOR`. The default separator is `/`.
61 |
62 | ## Screenshot
63 |
64 | 
65 |
66 | 
67 |
68 | ## Live example
69 |
70 | [This is my website](http://dandydev.net)
71 |
--------------------------------------------------------------------------------
/content/pages/about.md:
--------------------------------------------------------------------------------
1 | Title: About
2 | Date: 2014-01-11
3 | Tags: About,Historic
4 | Slug: about
5 |
6 |
7 | [TOC]
8 |
9 | ## 蠎周刊
10 |
11 | 主要内容来自:
12 |
13 | [Pycoder's Weekly | Weekly Python Newsletter](http://pycoders.com/)
14 |
15 | A free weekly newsletter, on Fridays,
16 | for those interested in python development
17 | and various topics around python.
18 |
19 |
20 | 是
21 | [02/17/2012](http://us4.campaign-archive2.com/?u=9735795484d2e4c204da82a29&id=e9564edf16)
22 | 开始独立发行的一个电子刊物;
23 |
24 | ### 过往翻译
25 |
26 | 在第一时间就被 华蠎用户组 就已经发现,进行了翻译:
27 | [PyCoder’s Weekly 中文翻译 — PyCoder's Weelky CN](http://pycoders-weekly-chinese.readthedocs.org/en/latest/index.html)
28 |
29 | 也在列表中吼过:
30 |
31 | :::text
32 | 发件人: fan zeyi
33 | 回复: python-cn@googlegroups.com
34 | 发送至: python-cn
35 | 日期: 2012年3月12日 上午3:49
36 | 主题: [CPyUG] [OT][发布通告] PyCoder's Weekly 中文翻译 #4
37 |
38 | 可惜只坚持了几期就停止了,目测是因为想对指向的所有文章都进行翻译,
39 | 工作量太大...
40 |
41 |
42 | 后来 42区 也尝试组织翻译过:
43 | [Python . 中文周刊 - 2013年 . 05周 - 42qu.com](http://python.42qu.com/week-1/201305)
44 |
45 |
46 | ### 中谷教育
47 | [2014年1月10日 12:30](http://weibo.com/1689940061/ArlnUiWW7)
48 | 在 [@limodou](http://weibo.com/u/1689940061) 转发后,
49 |
50 | 发现 [中谷教育](http://www.csvt.net/t/course/1)
51 | 在其 pythoner.cn 网站中,也开辟了相关栏目;
52 | 由[@小猴机器人](http://weibo.com/u/1966427173)
53 | 翻译的[Pycoder's Weekly](http://www.pythoner.cn/pycoders/weekly/95/)
54 |
55 | 但是,相对社区的翻译就不够齐全.
56 |
57 |
58 | #### PS: pythoner
59 | `pythoner`一词,其实是俺当初用错的; 参考:
60 |
61 | - [Pythoneer和Pythoner两个分别是啥意思,又有啥区别? - 芝麻问答](http://www.zhimaq.com/questions/81/pythoneerpythoner)
62 | - [Code Like a Pythonista: Idiomatic Python](http://python.net/~goodger/projects/pycon/2007/idiomatic/handout.html)
63 |
64 | 而且在中国,类似的网站还有:
65 |
66 | - [PYTHON开发者社区-pythoner.org](http://pythoner.org/about/)
67 | - [Pythoner.com](http://www.pythoner.com/about)
68 |
69 |
70 | ### 大妈重启
71 | 以往,没有坚持下来的原因各不相同,
72 | 但是,[Pycoder's Weekly | Weekly Python Newsletter](http://pycoders.com/)
73 |
74 | 能坚持下来,我们为什么不能?
75 |
76 | 所以:
77 |
78 | - 原本想在 [PyCon2013China](http://pychina.org/events/pycon2013china-zh.html) 之前,将以往的 Issue 都翻译了,作为礼物分享给大家;
79 | - 结果,挫了
80 | - 再后来,想在 100 期前,补齐所有过往的翻译,再分享给大家
81 | - 结果,发现有继续挫的可能!
82 |
83 | 所以:
84 |
85 | - 决定先公开给大家,共同享受第一时间 蠎世界 新事儿的乐趣
86 | - 其实,坚持什么的只是个习惯,
87 | - 这种快速翻译,可以当成周末的小阅读,
88 | - 根据俺的体验,每篇只用42分钟就可以翻译,发布了,,,
89 | - 如果人多了也就不用每周来翻译了,是也乎?
90 |
91 |
92 | ### 如何参与翻译
93 | 仓库在:
94 |
95 | [CPyUG/weekly - GitCafe](https://gitcafe.com/CPyUG/weekly)
96 |
97 | 想贡献的,使用标准的 Github 式的对话方式:
98 |
99 | `frok->commit->pull request` 流程就好 ;-)
100 | - `importpython`目录存放的是[importpython](http://importpython.com/newsletter/archive/)中的文章
101 | - `issue`目录存放的是[Pycoder](http://pycoders.com/archive/)中的文章
102 | - `PgWeekly`目录存放的是[PgWeekly](http://postgresweekly.com/issues)中的文章
103 | 这些目录中有些文章是没有翻译的,所以很容易找到,找到后在`gitcafe`的`Ticket`中注明已经认领翻译的文章,避免别人重复翻译,浪费资源呐
104 |
105 | ## contact
106 |
107 | `support[AT]PyChina.org`
108 |
109 | ## changelog
110 |
111 | - 181217 补交费用, 恢复 weekly.pychina.org
112 | - 181216 pychina.org 域名过期, 临时迁移为 101.camp
113 | - 140111 增补历史来由
114 | - 131218 base pelican build and through qiniu.com publish
115 |
116 | ## 其实
117 |
118 | [CommonCommunicaTing -- 合众期刊 中文Py讯息简刊](http://wiki.woodpecker.org.cn/moin/CommonCommunicaTing) 早在 2007 年就提出了完全相同的电子刊物创意
119 |
120 | 只是,在大妈折腾了两期后,
121 | 然后,就没有然后了...
--------------------------------------------------------------------------------
/_themes/pelican-bootstrap3/static/css/pygments/github.css:
--------------------------------------------------------------------------------
1 | .hll { background-color: #ffffcc }
2 | .c { color: #999988; font-style: italic } /* Comment */
3 | .err { color: #a61717; background-color: #e3d2d2 } /* Error */
4 | .k { color: #000000; font-weight: bold } /* Keyword */
5 | .o { color: #000000; font-weight: bold } /* Operator */
6 | .cm { color: #999988; font-style: italic } /* Comment.Multiline */
7 | .cp { color: #999999; font-weight: bold; font-style: italic } /* Comment.Preproc */
8 | .c1 { color: #999988; font-style: italic } /* Comment.Single */
9 | .cs { color: #999999; font-weight: bold; font-style: italic } /* Comment.Special */
10 | .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */
11 | .ge { color: #000000; font-style: italic } /* Generic.Emph */
12 | .gr { color: #aa0000 } /* Generic.Error */
13 | .gh { color: #999999 } /* Generic.Heading */
14 | .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */
15 | .go { color: #888888 } /* Generic.Output */
16 | .gp { color: #555555 } /* Generic.Prompt */
17 | .gs { font-weight: bold } /* Generic.Strong */
18 | .gu { color: #aaaaaa } /* Generic.Subheading */
19 | .gt { color: #aa0000 } /* Generic.Traceback */
20 | .kc { color: #000000; font-weight: bold } /* Keyword.Constant */
21 | .kd { color: #000000; font-weight: bold } /* Keyword.Declaration */
22 | .kn { color: #000000; font-weight: bold } /* Keyword.Namespace */
23 | .kp { color: #000000; font-weight: bold } /* Keyword.Pseudo */
24 | .kr { color: #000000; font-weight: bold } /* Keyword.Reserved */
25 | .kt { color: #445588; font-weight: bold } /* Keyword.Type */
26 | .m { color: #009999 } /* Literal.Number */
27 | .s { color: #d01040 } /* Literal.String */
28 | .na { color: #008080 } /* Name.Attribute */
29 | .nb { color: #0086B3 } /* Name.Builtin */
30 | .nc { color: #445588; font-weight: bold } /* Name.Class */
31 | .no { color: #008080 } /* Name.Constant */
32 | .nd { color: #3c5d5d; font-weight: bold } /* Name.Decorator */
33 | .ni { color: #800080 } /* Name.Entity */
34 | .ne { color: #990000; font-weight: bold } /* Name.Exception */
35 | .nf { color: #990000; font-weight: bold } /* Name.Function */
36 | .nl { color: #990000; font-weight: bold } /* Name.Label */
37 | .nn { color: #555555 } /* Name.Namespace */
38 | .nt { color: #000080 } /* Name.Tag */
39 | .nv { color: #008080 } /* Name.Variable */
40 | .ow { color: #000000; font-weight: bold } /* Operator.Word */
41 | .w { color: #bbbbbb } /* Text.Whitespace */
42 | .mf { color: #009999 } /* Literal.Number.Float */
43 | .mh { color: #009999 } /* Literal.Number.Hex */
44 | .mi { color: #009999 } /* Literal.Number.Integer */
45 | .mo { color: #009999 } /* Literal.Number.Oct */
46 | .sb { color: #d01040 } /* Literal.String.Backtick */
47 | .sc { color: #d01040 } /* Literal.String.Char */
48 | .sd { color: #d01040 } /* Literal.String.Doc */
49 | .s2 { color: #d01040 } /* Literal.String.Double */
50 | .se { color: #d01040 } /* Literal.String.Escape */
51 | .sh { color: #d01040 } /* Literal.String.Heredoc */
52 | .si { color: #d01040 } /* Literal.String.Interpol */
53 | .sx { color: #d01040 } /* Literal.String.Other */
54 | .sr { color: #009926 } /* Literal.String.Regex */
55 | .s1 { color: #d01040 } /* Literal.String.Single */
56 | .ss { color: #990073 } /* Literal.String.Symbol */
57 | .bp { color: #999999 } /* Name.Builtin.Pseudo */
58 | .vc { color: #008080 } /* Name.Variable.Class */
59 | .vg { color: #008080 } /* Name.Variable.Global */
60 | .vi { color: #008080 } /* Name.Variable.Instance */
61 | .il { color: #009999 } /* Literal.Number.Integer.Long */
62 |
--------------------------------------------------------------------------------
/content/importpython/issue-006.md:
--------------------------------------------------------------------------------
1 | Title: 蠎加载 6
2 | Slug: importpython-6
3 | Date: 2014-10-30 23:32
4 | Tags: Weekly,ImportPython,Zh
5 |
6 | 
7 |
8 |
9 | 原文: [issue6](http://importpython.com/static/files/issue6.html)
10 |
11 |
12 | ## 发了
13 | ~ Just Out
14 |
15 | ...
16 |
17 | ## 该读
18 | ~ 文章, Blog, 教程...
19 |
20 | - [python Fluent 接口](http://kracekumar.com/post/100897281440/fluent-interface-in-python)
21 |
22 | Fluent interface is an implementation of an object oriented API that aims to provide more readable code. A fluent interface is normally implemented by using method cascading (concretely method chaining) to relay the instruction context of a subsequent call. Kracekumar explains with simple code snippets How to implement the same with simple code snippets ?.
23 |
24 | Fluent 接口是一种面向对象的API实现,目标是让代码可读性更高. 一个fluent通常是通过使用方法级联(具体的方法链)来接替后续的指令上下文调用来实现的. Kracekumar 解释了怎么使用简单的代码来实现简单的代码?
25 |
26 | - [Lambda的利弊](http://python.dzone.com/articles/pros-and-cons-lambda)
27 |
28 | lambda 的好处是什么?为什么我们需要 lambda ? 利弊在哪儿 ?
29 |
30 | - [使用Python查找IP - Mark Litwintschik](http://tech.marksblogg.com/ip-address-lookups-in-python.html)
31 |
32 | MaxMind数据库提供了一个IP映射允许范围广泛的应用程序包括内容个性化,欺诈检测,广告定位,交通分析,合规,地理定位,地理防御和数字版权管理. Mark向我们展示了怎样在python中使用.
33 |
34 | - [详解 Python 描述符 - Chris Beaumont ](http://nbviewer.ipython.org/urls/gist.github.com/ChrisBeaumont/5758381/raw/descriptor_writeup.ipynb)
35 |
36 | 通过代码详细的解释了 Python 描述符的使用.
37 |
38 | - [Python import 系统的陷阱](http://python-notes.curiousefficiency.org/en/latest/python_concepts/import_traps.html)
39 |
40 | Python 的 import 系统是强大的,同时也是复杂的. Nick Coghlan 详细的解释了 Python 3.3.x 中 import 是怎么样工作的.
41 |
42 | - [高性能的Python扩展 1,2,3 部分](https://www.crumpington.com/blog/2014/10-19-high-performance-python-extensions-part-1.html)
43 |
44 | Crumpington Consulting LLC 公司的一系列博客 , 专注于使用NumPy API为Python编写高性能的C扩展模块
45 |
46 | - [使用机器学习找出仇敌](http://kevinmcalear.com/thoughts/building-hater-news/)
47 |
48 | Kevin McAlear 使用 Python,机器学习来找出不断提出负面新闻的评论家. 利用了pandas, numpy.
49 |
50 | ## 代码
51 | ~ 包/模块/库/片段...
52 |
53 | - [mps-youtube](https://github.com/np1/mps-youtube)
54 | - 355 Stars, 31 Forks, 41 Watch
55 |
56 | 基于终端的 YouTube播放器和下载器.
57 |
58 | - [wolf](https://github.com/slawekj/wolf)
59 | - 371 Stars, 51 Watch, 44 Fork
60 |
61 | 外汇交易平台.
62 |
63 | - [python-patterns](https://github.com/faif/python-patterns)
64 | - 4029 Stars, 768 Watch, 1036 Fork
65 |
66 | 收集了 Python 常用的设计模式
67 |
68 | - [did you mean](https://github.com/dutc/didyoumean)
69 | - 84 Stars, 2 Watch, 6 Fork
70 |
71 | "你是什么意思?" 根据属性提供良好的错误提示
72 |
73 | - [Awesome-Machine-Learning - Python](https://github.com/josephmisiti/awesome-machine-learning#python)
74 | - 3469 Stars, 345 Watch, 503 Fork
75 |
76 | 一系列很棒的 机器学习框架,类库 和软件. 都是基于python的.
77 |
78 | ## 曰了
79 | ~ Tweets
80 |
81 | - [Python Wear 的新生 »](https://plus.google.com/+Importpythongoogle/posts/9FLi6bnfgix) »
82 |
83 | 读这个就对了. 看一看,她是很可爱的,代码很pythonic .
84 |
85 | ## 播了
86 | ~ Podcast/Vidoes
87 |
88 | - [Python 必看视频](https://github.com/s16h/py-must-watch)
89 |
90 | ## 本周之星
91 | ~ 一周 Python 程序员之选
92 |
93 | [](https://github.com/asciimoo?tab=repositories)
94 |
95 | Adam Tauber
96 |
97 | # 是也乎
98 | ~ 参考: [为毛又一个蠎周刊?](importpython-why)
99 |
100 | - 141205 用时 .57分钟完成翻译.
101 | - 141205 [Zoom.Quiet](http://zoomquiet.io) 用时7分钟完成格式化.
102 |
--------------------------------------------------------------------------------
/content/importpython/issue-007.md:
--------------------------------------------------------------------------------
1 | Title: 蠎加载 7
2 | Slug: importpython-7
3 | Date: 2014-11-06 23:32
4 | Tags: Weekly,ImportPython,Zh
5 |
6 | 
7 |
8 |
9 | 原文: [issue7](http://importpython.com/static/files/issue7.html)
10 |
11 |
12 | ## 发了
13 | ~ Just Out
14 |
15 | - [PyPy IO的改进](http://morepypy.blogspot.in/2014/11/pypy-io-improvements.html)
16 |
17 | PyPy是一个速度快,兼容性好,替代Python(2.7.8和3.2.5)的实现. 相对于标准的Python解释器,它有几个优势. 例如:更好的IO实现和垃圾回收机制. 快来瞧瞧Cpython VS PyPy的比较吧~
18 |
19 | ## 该读
20 | ~ 文章, Blog, 教程...
21 |
22 | - [六大Python面试问题(原来又增加了一条~)](http://www.toptal.com/python/interview-questions) »
23 |
24 | So...你懂Python编程,是吧!那来看看这些小的代码片段,预测一下输出的结果吧.
25 |
26 | - [使用Python和SQLCipher加密SQLite](http://charlesleifer.com/blog/encrypted-sqlite-databases-with-python-and-sqlcipher/) »
27 |
28 | SQLite是一个独立的,不需要服务和配置,并且还支持事务的数据库引擎. 它却没有提供对数据文件加密的功能,那么这就有SQLCipher的用武之地了. 这篇文章就是向我们介绍如何去使用它.
29 |
30 | - [11个Python开发者必读博客](http://codecondo.com/blogs-for-python-developers/) »
31 |
32 | Python开发者必须博客摘要.
33 |
34 | - [Python在线课程综合列表 / MOOCs](https://www.mysliderule.com/search?term=python) »
35 |
36 | MySlideRule在线课程列表 / MOOCs.有许多免费,收费的课程可以选择.
37 |
38 | ## 代码
39 | ~ 包/模块/库/片段...
40 |
41 | - [fluentmail](https://github.com/alexandrevicenzi/fluentmail)
42 | - 34 Stars, 3 Watch
43 |
44 | 轻量级邮件发送库. 接口流畅,漂亮. 值得参考,观摩.
45 |
46 | - [nogotofail](https://github.com/google/nogotofail)
47 | - 893 Stars, 124 Watch, 93 Fork
48 |
49 | Nogotofail是Google的一个网络安全测试工具. 旨在帮助开发人员和安全研究人员发现和修复TLS/SSL的弱连接,设备和程序之间敏感的明文传输,提供一个灵活的,可伸缩的,功能强大的方式.
50 |
51 | - [db.py](https://github.com/yhat/db.py)
52 | - 122 Stars, 13 Watch, 8 Fork
53 |
54 | db.py让我们与数据库交互更加简单了. 可以更容易的查询表,列,视图等. 非常好用户交互,信息展示,并提供易于使用的辅助功能. 支持多数主流数据库:PostgreSQL,MySQL,SQLite,Oracle,MS SQL Server...
55 |
56 | - [hangups](https://github.com/tdryer/hangups)
57 | - 179 Stars, 20 Watch, 15 Fork
58 |
59 | Hangups是Google HOA的一个第三方即时客户端. 它包含一个Python的库和一个基于文本的用户界面.
60 |
61 | - [Pyrsistent](https://github.com/tobgu/pyrsistent)
62 | - 95 Stars, 7 Watch, 3 Fork
63 |
64 | Pyrsistent是一个持久化集合类(由一些称为功能的数据结构组成),在某种意义上说是不可变的.
65 | 所有方法的数据结构在发生改变时都会拷贝一个包含更新信息的新副本,原始结构不变. 了解多种编程语言的程序员接触过函数式编程的一定要瞧瞧Pyrsistent.
66 |
67 | - [Procs](https://github.com/kennethreitz/procs)
68 | - 140 Stars, 16 Watch, 4 Fork
69 |
70 | Kenneth Reitz尝试提供了一个类似于Python Subprocess模块功能的高层次抽象API.
71 |
72 | - [Oxyry Python Obfuscator](http://pyob.oxyry.com/)
73 | -
74 |
75 | 使用Obfuscation来混淆python源码,可以将符号名称重命名,包括变量,函数,imports,类,参数,类的私有方法.
76 |
77 | ## 曰了
78 | ~ Tweets
79 |
80 | - [Twitter tweets on GIL and Unicode](https://twitter.com/dabeaz/status/529606665986142209) »
81 |
82 | GIL在python中就像Ebola病毒一样. 理所当然的它可能会影响到你,你的代码可能在百万次之后死于UnicodeError - David Beazley(Python book author, software developer, and teacher).
83 |
84 | ## 社区
85 | ~ Community
86 |
87 | - [呼吁广大蟒人翻译"Invent with Python"第三版](http://inventwithpython.com/blog/2014/11/03/call-for-translators-for-3rd-edition-of-invent-with-python/) »
88 |
89 | "Invent Your Own Computer Games with Python"是一本在年轻人中非常受欢迎的书. 在该书第三版开始,他们希望能将这本书翻译成更多的语言,欢迎有经验的志愿翻译者参与. 如果你掌握一门外语,想提供帮助. 请联系 al@inventwithpython.com.
90 |
91 | ## 本周之星
92 | ~ 一周 Python 程序员之选
93 |
94 | 
95 |
96 | [Paulus Schoutsen](https://github.com/balloob)
97 |
98 | # 是也乎
99 | ~ 参考: [为毛又一个蠎周刊?](importpython-why)
100 |
101 |
102 | - 141207 用时 .57分钟完成翻译.
103 | - 141207 [Zoom.Quiet](http://zoomquiet.io) 用时7分钟完成格式化.
104 |
--------------------------------------------------------------------------------
/_themes/pelican-bootstrap3/static/css/pygments/monokai.css:
--------------------------------------------------------------------------------
1 | .codehilite .hll { background-color: #49483e }
2 | .codehilite .c { color: #75715e } /* Comment */
3 | .codehilite .err { color: #960050; background-color: #1e0010 } /* Error */
4 | .codehilite .k { color: #66d9ef } /* Keyword */
5 | .codehilite .l { color: #ae81ff } /* Literal */
6 | .codehilite .n { color: #f8f8f2 } /* Name */
7 | .codehilite .o { color: #f92672 } /* Operator */
8 | .codehilite .p { color: #f8f8f2 } /* Punctuation */
9 | .codehilite .cm { color: #75715e } /* Comment.Multiline */
10 | .codehilite .cp { color: #75715e } /* Comment.Preproc */
11 | .codehilite .c1 { color: #75715e } /* Comment.Single */
12 | .codehilite .cs { color: #75715e } /* Comment.Special */
13 | .codehilite .ge { font-style: italic } /* Generic.Emph */
14 | .codehilite .gs { font-weight: bold } /* Generic.Strong */
15 | .codehilite .kc { color: #66d9ef } /* Keyword.Constant */
16 | .codehilite .kd { color: #66d9ef } /* Keyword.Declaration */
17 | .codehilite .kn { color: #f92672 } /* Keyword.Namespace */
18 | .codehilite .kp { color: #66d9ef } /* Keyword.Pseudo */
19 | .codehilite .kr { color: #66d9ef } /* Keyword.Reserved */
20 | .codehilite .kt { color: #66d9ef } /* Keyword.Type */
21 | .codehilite .ld { color: #e6db74 } /* Literal.Date */
22 | .codehilite .m { color: #ae81ff } /* Literal.Number */
23 | .codehilite .s { color: #e6db74 } /* Literal.String */
24 | .codehilite .na { color: #a6e22e } /* Name.Attribute */
25 | .codehilite .nb { color: #f8f8f2 } /* Name.Builtin */
26 | .codehilite .nc { color: #a6e22e } /* Name.Class */
27 | .codehilite .no { color: #66d9ef } /* Name.Constant */
28 | .codehilite .nd { color: #a6e22e } /* Name.Decorator */
29 | .codehilite .ni { color: #f8f8f2 } /* Name.Entity */
30 | .codehilite .ne { color: #a6e22e } /* Name.Exception */
31 | .codehilite .nf { color: #a6e22e } /* Name.Function */
32 | .codehilite .nl { color: #f8f8f2 } /* Name.Label */
33 | .codehilite .nn { color: #f8f8f2 } /* Name.Namespace */
34 | .codehilite .nx { color: #a6e22e } /* Name.Other */
35 | .codehilite .py { color: #f8f8f2 } /* Name.Property */
36 | .codehilite .nt { color: #f92672 } /* Name.Tag */
37 | .codehilite .nv { color: #f8f8f2 } /* Name.Variable */
38 | .codehilite .ow { color: #f92672 } /* Operator.Word */
39 | .codehilite .w { color: #f8f8f2 } /* Text.Whitespace */
40 | .codehilite .mf { color: #ae81ff } /* Literal.Number.Float */
41 | .codehilite .mh { color: #ae81ff } /* Literal.Number.Hex */
42 | .codehilite .mi { color: #ae81ff } /* Literal.Number.Integer */
43 | .codehilite .mo { color: #ae81ff } /* Literal.Number.Oct */
44 | .codehilite .sb { color: #e6db74 } /* Literal.String.Backtick */
45 | .codehilite .sc { color: #e6db74 } /* Literal.String.Char */
46 | .codehilite .sd { color: #e6db74 } /* Literal.String.Doc */
47 | .codehilite .s2 { color: #e6db74 } /* Literal.String.Double */
48 | .codehilite .se { color: #ae81ff } /* Literal.String.Escape */
49 | .codehilite .sh { color: #e6db74 } /* Literal.String.Heredoc */
50 | .codehilite .si { color: #e6db74 } /* Literal.String.Interpol */
51 | .codehilite .sx { color: #e6db74 } /* Literal.String.Other */
52 | .codehilite .sr { color: #e6db74 } /* Literal.String.Regex */
53 | .codehilite .s1 { color: #e6db74 } /* Literal.String.Single */
54 | .codehilite .ss { color: #e6db74 } /* Literal.String.Symbol */
55 | .codehilite .bp { color: #f8f8f2 } /* Name.Builtin.Pseudo */
56 | .codehilite .vc { color: #f8f8f2 } /* Name.Variable.Class */
57 | .codehilite .vg { color: #f8f8f2 } /* Name.Variable.Global */
58 | .codehilite .vi { color: #f8f8f2 } /* Name.Variable.Instance */
59 | .codehilite .il { color: #ae81ff } /* Literal.Number.Integer.Long */
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # [weekly.PyChina.org](http://weekly.pychina.org/)
2 |
3 | in fact from 2003 there is CZUG.org ~ the 1st(and only one) focus Zope tech community be set up;
4 |
5 | so years ago, there is soooooooo many python tech abt. commuity in China
6 |
7 | but never group as one unify community brand,
8 | like as: perl-china/ruby-china etc.
9 |
10 | so after PyCon2013China, some `old` Chinese Pythonista together and building:
11 |
12 | 
13 |
14 | ## goal
15 |
16 | - by Pythonner in China Operations
17 | - as Pythonner in China Deleloping
18 | - for Pythonista in Global support events organizing srvice
19 |
20 |
21 | ## organizer
22 |
23 | - Zoom.Quiet
24 |
25 | ## path
26 |
27 | - 基于 `gh-pages` 专用分支发布
28 | - 所以, 本地要复制出两个仓库
29 | + `master` 分支进行内容撰写
30 | + 另外一个仓库, 切换为 `gh-pages` 分支
31 | * 并链接为 `output` 输出目录
32 | * 这样, 才可以合理使用 `fab` 指令来完成自动化本地编译和发布
33 |
34 |
35 | ## usage
36 | How to update the site contents
37 |
38 | main loop:
39 |
40 | 1. git clone
41 | 1. edit some .md in `content/`
42 | 1. `fab build && fab serve` for test local
43 | 1. `cd output` this is another repo. yet!
44 | 1. mark the article you have applied on GitCafe Ticket
45 | 1. git add->ci->push
46 | 1. `fab deploy` published all
47 |
48 | ### writing
49 |
50 | - fork https://gitcafe.com/CPyUG/PyChina into local
51 | - or becamed https://gitcafe.com/CPyUG member hold the repo. ACL
52 | - cd into content/
53 | - the sub-dir means:
54 |
55 | content/
56 | +- Events 首字母大写的是分类目录 收集对应文章
57 | +- Volunteer ...志愿者
58 | +- _extra 扩展功能文件 e.g robots.txt
59 | +- _files 站内文件
60 | +- _images 站内图片
61 | `- pages 类似 about 的导航栏文档
62 |
63 | #### 文章格式
64 | - 标准 Markdown 格式
65 | - 以 .md 为后缀
66 | - 文件名不得使用中文/空格/符号
67 | - 内容模板:
68 |
69 | Title: 中E可以混杂的标题
70 | Date: 2013-12-09
71 | Tags: people, shanghai
72 | Slug: sting-chen
73 | Author: Zoom.Quiet
74 |
75 | - 其中:
76 | - `Date:` 如果没有将使用文件的系统时间
77 | - `Tags:` 使用逗号作间隔, 不宜过多,建议三个为界,以人物/行为/目标领域 为方向进行定义
78 | - 参考: [如何规划blog的标签(tag)和分类 - 心内求法 - 博客园](http://www.cnblogs.com/holbrook/archive/2012/11/05/2755268.html)
79 | - `Slug:` 是实际输出的页面文件名, 建议全部小写E文, 使用中划线, 不使用特殊符号
80 |
81 |
82 | ### deploy
83 |
84 | 支持本地调试! 使用 `fabric` 进行管理, 支持的命令:
85 |
86 | fab
87 | Available commands:
88 |
89 | build 编译所有页面
90 | deploy 向主机部署所有页面
91 | reserve 重编译所有页面再启动本地服务
92 | serve 启动本地服务 localhost:8000
93 |
94 |
95 | `注意!` 向主机部署,需要有相关权限,并在本地配置好对应 SSH 信息
96 |
97 | ### design
98 |
99 | 基于 [pelican-bootstrap3](https://github.com/getpelican/pelican-themes/tree/master/pelican-bootstrap3) 深度定制
100 |
101 | - 配置: `pelicanconf.py`
102 | - 样式: `_themes/pelican-bootstrap3/`
103 | - 插件: `_plugins/`
104 |
105 |
106 | ### 贡献
107 |
108 | 提交你的贡献到`CPyUG / weekly`,先确保自己的仓库与上游仓库同步
109 |
110 | # 在 Fork 的代码库中添加上游代码库的 remote 源,(操作一次就可以,以后不必每次添加)
111 | git remote add upstream https://gitcafe.com/CPyUG/weekly.git
112 |
113 | # 查看添加的上游仓库
114 | git remote -v
115 |
116 | # 提交本地修改
117 | git add .
118 | git commit -m "****"
119 |
120 | # 同步上游版本
121 | git remote update upstream
122 | git rebase upstream/master
123 |
124 | # push代码到gitcafe
125 | git push origin master
126 |
127 | # pull request
128 | 在自己gitcafe项目仓库下提交pull request到上游仓库
129 |
130 |
131 |
132 | ## changelog
133 |
134 | - 191028 ZQ 提醒本地发布环境
135 | - 190818 ZQ ++ CNZZ WA support
136 | - 131219 base pelican build and through qiniu.com publish
137 |
138 |
--------------------------------------------------------------------------------
/content/Issue/issue-016.md:
--------------------------------------------------------------------------------
1 | Title: Issue 16 ~ 规则胜于特例
2 | Date: 2012-06-01
3 | Tags: Weekly,Pycoder,Zh
4 | Slug: issue-16
5 | # Hi Pythonistas.
6 |
7 | 本周的新闻并不是很多,不过贴纸的事情倒是有很多要说的,我们这星期会收到新设计的贴纸,所以赶快给我们寄来回邮吧,我们的地址是:
8 |
9 | 44 Byward Market Square, Suite 210
10 |
11 | Ottawa, Ontario Canada
12 |
13 | K1P 7A2
14 |
15 | RSS 订阅和存档可以在 [这里](http://feeds.feedburner.com/pycodersweekly) 和 [这里](http://pycoders.com/archive.html) 找到.
16 |
17 | [戳这里](https://twitter.com/#!/pycoders) 和我们签订契约成为魔法少女(少年). (◕‿‿◕)
18 |
19 |
20 |
21 | Enjoy!
22 |
23 |
24 | --
25 | [Mahdi](https://twitter.com/#!/myusuf3) and [Mike](https://twitter.com/#!/mgrouchy)
26 |
27 | 原文: [Pycoder's Weekly (Issue #16) : Special cases aren't special enough to break the rules.](http://us4.campaign-archive2.com/?u=9735795484d2e4c204da82a29&id=07c5d1307c)
28 |
29 |
30 | ## 新闻与开发动态
31 |
32 | - [Light Table](http://www.kickstarter.com/projects/ibdknox/light-table?ref=users)
33 | 虽然这个东西在之前的邮件中已经说过了,但是现在还是有必要再说一下, Light Table 现在已经筹集到足够的资金来开发 Python 支持,我们很高兴能够看到像视频中一样的 Flask 支持.
34 |
35 | - [Radio Free Python - 第八期](http://radiofreepython.com/episodes/8/)
36 | 最新一期的 Radio Free Python ( Python 每月 Podcast ),本期采访了来自冰岛 CCP 公司(以制作 Eve Online & DUST 514 知名的游戏公司)的
37 | [Kristjan Valur Jonsson](http://blog.ccpgames.com/kristjan/)
38 | ,讨论了关于
39 | [Stackless Python](http://www.stackless.com/)
40 | 以及其应用在 Eve Online 中的话题.
41 |
42 |
43 | ## 讨论
44 |
45 | - [Python 与 C](http://www.reddit.com/r/Python/comments/u9by4/coming_to_python_from_c_writing_this_finally_made/)
46 | 当一个 C 程序员开始学习 Python 的时候会出现什么样的情况呢?在这篇讨论里,作者贴了一段很简单的从 C 语言转换到 Python 的代码,从而引出了一系列对这段代码的优化,从这篇讨论中,我们或许能够了解如何用更加 Python 的方式来解决问题,如果你刚开始学习 Python,认真的读一下这篇讨论吧.
47 |
48 |
49 |
50 | ## 项目
51 |
52 | - [workflow](https://github.com/mdipierro/workflow)
53 | Workflow 是一个单文件的小项目,用于解决某些周期性的工作,比如删除或移动文件,运行脚本之类的.
54 |
55 | - [webxray](https://github.com/hackasaurus/webxray)
56 | 这个项目的文档中写道:"Web X-Ray 眼睛为非技术宅提供了一个简单的方式去剖析页面,了解他们是如何运作的", webxray 提供了一个书签,在你需要的页面点一下书签就可以方便快捷的得到关于这个页面的所有信息了.
57 |
58 | - [django-discover-runner](https://github.com/jezdez/django-discover-runner)
59 | 一个基于 unittest2 的 Django 单元测试模块,
60 | 它解决了如何运行基于Django项目结构的测试问题.
61 | 让你把测试可以放置Django项目的结构外,仍然可以随时运行测试套件.
62 |
63 | - [dnspython](https://github.com/rthalley/dnspython)
64 | dnspython 是一个用 Python 写的 DNS 工具箱,换言之, dnspython 是一个一站式的 DNS 解决方案,它几乎支持所有的记录类型,同时也可以被用作解析,区域转移 (zone transfers)和动态更新(Dynamic updates)等.
65 |
66 |
67 | ## 文章
68 |
69 | - [Mongrel2&Circul = web栈的完全控制](http://pycoders-weekly-chinese.readthedocs.org/en/latest/issue16/mongrel2-amp-circus-full-control-of-your-web-stack.html)
70 | 由于配置 [Gunicorn](http://gunicorn.org/) 失败.. Tarek Ziadé 决定用 Mongrel2 & Circus 来建立一个 WSGI 栈,自己的进程管理器. 这篇文章介绍了如何建立一个网络堆栈,如果你并不想使用传统的 Gunicorn ,可以读一下这篇文章.
71 |
72 | - [不要使用散点图!](http://www.chrisstucchio.com/blog/2012/dont_use_scatterplots.html)
73 | 在这篇文章里,作者讨论了为什么散点图对于可视化数据来说很不好,并且建议应该绘制密度图而不是散点图,同时作者也提供了一些生成图形的 Python 代码,这些代码对你的数据展示工作或许会有帮助.
74 |
75 | - [奇怪的 Python 本地线程](http://emptysquare.net/blog/pythons-thread-locals-are-weird/)
76 | 这篇文章很好的解释了 Python 中本地线程的奇怪之处,作者比较了新版本与旧版本 Python 的本地线程的不同之处,读一下吧.
77 |
78 | - [RQ Tips](http://pycoders-weekly-chinese.readthedocs.org/en/latest/issue16/rq-tips.html)
79 | [RQ](http://nvie.com/posts/introducing-rq/)
80 | 是最近发布的一个任务队列处理库,对于任务队列我们更常用 [Celery](http://celeryproject.org/)
81 | ,不过 [RQ](http://nvie.com/posts/introducing-rq/) 仍然是一个不错的选择,因为他仅仅依赖 Redis ,所以比起 [Celery](http://celeryproject.org/)
82 | , [RQ](http://nvie.com/posts/introducing-rq/) 要更易于管理,这篇文章中介绍了许多关于在生产环境中部署 [RQ](http://nvie.com/posts/introducing-rq/) 的提示.
83 |
84 |
85 | # 是也乎
86 |
87 | 转自: [Issue #16: 规则胜于特例 — PyCoder's Weelky CN](http://pycoders-weekly-chinese.readthedocs.org/en/latest/issue16/index.html)
88 |
89 |
90 |
91 |
--------------------------------------------------------------------------------
/content/importpython/issue-003.md:
--------------------------------------------------------------------------------
1 | Title: 蠎加载 3
2 | Date: 2014-10-10 23:32
3 | Tags: Weekly,ImportPython,Zh
4 | Slug: importpython-3
5 |
6 | 
7 |
8 | ## Hi
9 |
10 |
11 |
12 | 原文: [issue3](http://importpython.com/static/files/issue3.html)
13 |
14 | ## 发了
15 | ~ Just Out
16 |
17 | - [Python 3.4.2 发布](https://www.python.org/downloads/release/python-342/)
18 |
19 | Python3.4.2修复了3.4.1中很多bug,并且还有其他的一些提升. 对于OS X系统的用户有个新特性:OS X的installers 是一个单独的安装文件包 并且兼容OS X Gatekeeper安全特性.
20 |
21 |
22 | ## 该读
23 | ~ 文章, Blog, 教程...
24 |
25 | - [小星球投影](https://www.richwareham.com/articles/2014/09/29/little-planet-projection)
26 |
27 | A Little Planet Panorma using Python and Scikit Image.
28 | 一个使用Python和Scikit Image 的小星球Panorma(有点没懂)
29 |
30 | - [Python谜题](https://speakerdeck.com/alangpierce/python-puzzlers/)
31 |
32 | 包含了6个谜题,揭示了Python语言编程中的一些陷阱和古怪. 每个谜题中,给你了一些Python代码,你的任务就是指出代码运行之后会发生什么.
33 |
34 | - [Django 身份验证流程](http://makkalot.github.io/posts/2014/Jul/13/django-auth-workflow/)
35 |
36 | 简要的综述了Django用户认证的流程.
37 |
38 | - [Django 模型,封装和数据完整性](http://www.dabapps.com/blog/django-models-and-encapsulation/)
39 |
40 | As codebases grow it becomes difficult to make any cast-iron guarantees that you really are enforcing application-level data integrity.
41 | 随着代码库的增长就变得难有保证,你就强制应用级的数据完整性.
42 |
43 | ## 代码
44 | ~ 包/模块/库/片段...
45 |
46 | - [Pykov](https://github.com/riccardoscalco/Pykov)
47 | - 163 Stars, Trending for 2 Day
48 |
49 | Pykov 是一个有限马尔可夫链的小模块
50 |
51 | - [Shadowsocks](https://github.com/clowwindy/shadowsocks)
52 | - 3201 Stars, Trending for 2 Days
53 |
54 | 快速的隧道代理助你翻越防火长城
55 |
56 | - [t_dict](https://github.com/vandersonmota/t_dict)
57 | - 32 Stars, Trending for 1 Day
58 |
59 | Traversable Python Dictionaries. (有点不明白)
60 |
61 | - [Mastering Bitcon Book's Code -](https://github.com/aantonop/bitcoinbook/tree/develop/code)
62 | - 492 Stars, Trending for 1 Day
63 |
64 | Mastering Bitcoin是一个面向开发者的书. 早期的草稿放在gitub上,源码是用Python写的.
65 |
66 | - [Sorted Containers](https://github.com/grantjenks/sorted_containers)
67 | - 182 Stars, Trending for 1 Day
68 |
69 | Python可排序的容器类型:SortedList, SortedDict, and SortedSet使用纯python编写,但是速度跟用C实现一样快
70 |
71 | - [Ripple](https://github.com/web-i/ripple)
72 | - 1 Stars
73 |
74 | Python的一个meta web 框架
75 |
76 |
77 |
78 | ## 播了
79 | ~ Podcast
80 |
81 | - [Glyph Lefkowitz ,Twisted的发明者](http://www.binpress.com/blog/2014/10/07/binpress-podcast-episode-14-glyph-lefkowitz-twisted/)
82 |
83 | Glyph 解释了为什么开源项目的创造者要对项目的用户负责, 为什么他既欣赏同时又批评开源社区 和为什么开源世界应该看到自由软件的根源.
84 | 他还阐述了他接管Python IRC频道来促进Twisted项目,这个项目怎么样诞生,为什么会有一个光明的未来或者更好.
85 |
86 |
87 | ## 曰了
88 | ~ Tweets
89 |
90 | - [Victor Stinner »](https://mail.python.org/pipermail/python-dev/2014-October/136607.html)
91 |
92 | Windows可用于Python的编译器的现状
93 |
94 | - [Ola Sitarska »](https://twitter.com/olasitarska/status/520256058334650368)
95 |
96 | 380位女性和女生参加了在华沙的 @DjangoGirls
97 |
98 | ## 本周之星
99 | ~ 一周 Python 程序员之选
100 |
101 |
102 | [
103 | ](https://github.com/karan)
104 | Karan Goel
105 |
106 | ## 将来之书
107 |
108 | Effective Python
109 |
110 | [](http://www.effectivepython.com/)
111 |
112 | # 是也乎
113 | ~ 参考: [为毛又一个蠎周刊?](importpython-why)
114 |
115 | - 150123 来自`PR` [85a2f73f](https://gitcafe.com/CPyUG/weekly/commit/85a2f73fd5bb091748c88394801a6a2bd6f2e030)
116 | - 141204 [Zoom.Quiet](http://zoomquiet.io) 用时7分钟完成格式化.
117 | - 150126 [orangleliu](http://orangleliu.info) 补译
118 |
--------------------------------------------------------------------------------
/_themes/pelican-bootstrap3/static/css/pygments/autumn.css:
--------------------------------------------------------------------------------
1 | .codehilite .hll { background-color: #ffffcc }
2 | .codehilite .c { color: #aaaaaa; font-style: italic } /* Comment */
3 | .codehilite .err { color: #F00000; background-color: #F0A0A0 } /* Error */
4 | .codehilite .k { color: #0000aa } /* Keyword */
5 | .codehilite .cm { color: #aaaaaa; font-style: italic } /* Comment.Multiline */
6 | .codehilite .cp { color: #4c8317 } /* Comment.Preproc */
7 | .codehilite .c1 { color: #aaaaaa; font-style: italic } /* Comment.Single */
8 | .codehilite .cs { color: #0000aa; font-style: italic } /* Comment.Special */
9 | .codehilite .gd { color: #aa0000 } /* Generic.Deleted */
10 | .codehilite .ge { font-style: italic } /* Generic.Emph */
11 | .codehilite .gr { color: #aa0000 } /* Generic.Error */
12 | .codehilite .gh { color: #000080; font-weight: bold } /* Generic.Heading */
13 | .codehilite .gi { color: #00aa00 } /* Generic.Inserted */
14 | .codehilite .go { color: #888888 } /* Generic.Output */
15 | .codehilite .gp { color: #555555 } /* Generic.Prompt */
16 | .codehilite .gs { font-weight: bold } /* Generic.Strong */
17 | .codehilite .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
18 | .codehilite .gt { color: #aa0000 } /* Generic.Traceback */
19 | .codehilite .kc { color: #0000aa } /* Keyword.Constant */
20 | .codehilite .kd { color: #0000aa } /* Keyword.Declaration */
21 | .codehilite .kn { color: #0000aa } /* Keyword.Namespace */
22 | .codehilite .kp { color: #0000aa } /* Keyword.Pseudo */
23 | .codehilite .kr { color: #0000aa } /* Keyword.Reserved */
24 | .codehilite .kt { color: #00aaaa } /* Keyword.Type */
25 | .codehilite .m { color: #009999 } /* Literal.Number */
26 | .codehilite .s { color: #aa5500 } /* Literal.String */
27 | .codehilite .na { color: #1e90ff } /* Name.Attribute */
28 | .codehilite .nb { color: #00aaaa } /* Name.Builtin */
29 | .codehilite .nc { color: #00aa00; text-decoration: underline } /* Name.Class */
30 | .codehilite .no { color: #aa0000 } /* Name.Constant */
31 | .codehilite .nd { color: #888888 } /* Name.Decorator */
32 | .codehilite .ni { color: #800000; font-weight: bold } /* Name.Entity */
33 | .codehilite .nf { color: #00aa00 } /* Name.Function */
34 | .codehilite .nn { color: #00aaaa; text-decoration: underline } /* Name.Namespace */
35 | .codehilite .nt { color: #1e90ff; font-weight: bold } /* Name.Tag */
36 | .codehilite .nv { color: #aa0000 } /* Name.Variable */
37 | .codehilite .ow { color: #0000aa } /* Operator.Word */
38 | .codehilite .w { color: #bbbbbb } /* Text.Whitespace */
39 | .codehilite .mf { color: #009999 } /* Literal.Number.Float */
40 | .codehilite .mh { color: #009999 } /* Literal.Number.Hex */
41 | .codehilite .mi { color: #009999 } /* Literal.Number.Integer */
42 | .codehilite .mo { color: #009999 } /* Literal.Number.Oct */
43 | .codehilite .sb { color: #aa5500 } /* Literal.String.Backtick */
44 | .codehilite .sc { color: #aa5500 } /* Literal.String.Char */
45 | .codehilite .sd { color: #aa5500 } /* Literal.String.Doc */
46 | .codehilite .s2 { color: #aa5500 } /* Literal.String.Double */
47 | .codehilite .se { color: #aa5500 } /* Literal.String.Escape */
48 | .codehilite .sh { color: #aa5500 } /* Literal.String.Heredoc */
49 | .codehilite .si { color: #aa5500 } /* Literal.String.Interpol */
50 | .codehilite .sx { color: #aa5500 } /* Literal.String.Other */
51 | .codehilite .sr { color: #009999 } /* Literal.String.Regex */
52 | .codehilite .s1 { color: #aa5500 } /* Literal.String.Single */
53 | .codehilite .ss { color: #0000aa } /* Literal.String.Symbol */
54 | .codehilite .bp { color: #00aaaa } /* Name.Builtin.Pseudo */
55 | .codehilite .vc { color: #aa0000 } /* Name.Variable.Class */
56 | .codehilite .vg { color: #aa0000 } /* Name.Variable.Global */
57 | .codehilite .vi { color: #aa0000 } /* Name.Variable.Instance */
58 | .codehilite .il { color: #009999 } /* Literal.Number.Integer.Long */
59 |
--------------------------------------------------------------------------------
/_themes/pelican-bootstrap3/static/css/pygments/perldoc.css:
--------------------------------------------------------------------------------
1 | .codehilite .hll { background-color: #ffffcc }
2 | .codehilite .c { color: #228B22 } /* Comment */
3 | .codehilite .err { color: #a61717; background-color: #e3d2d2 } /* Error */
4 | .codehilite .k { color: #8B008B; font-weight: bold } /* Keyword */
5 | .codehilite .cm { color: #228B22 } /* Comment.Multiline */
6 | .codehilite .cp { color: #1e889b } /* Comment.Preproc */
7 | .codehilite .c1 { color: #228B22 } /* Comment.Single */
8 | .codehilite .cs { color: #8B008B; font-weight: bold } /* Comment.Special */
9 | .codehilite .gd { color: #aa0000 } /* Generic.Deleted */
10 | .codehilite .ge { font-style: italic } /* Generic.Emph */
11 | .codehilite .gr { color: #aa0000 } /* Generic.Error */
12 | .codehilite .gh { color: #000080; font-weight: bold } /* Generic.Heading */
13 | .codehilite .gi { color: #00aa00 } /* Generic.Inserted */
14 | .codehilite .go { color: #888888 } /* Generic.Output */
15 | .codehilite .gp { color: #555555 } /* Generic.Prompt */
16 | .codehilite .gs { font-weight: bold } /* Generic.Strong */
17 | .codehilite .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
18 | .codehilite .gt { color: #aa0000 } /* Generic.Traceback */
19 | .codehilite .kc { color: #8B008B; font-weight: bold } /* Keyword.Constant */
20 | .codehilite .kd { color: #8B008B; font-weight: bold } /* Keyword.Declaration */
21 | .codehilite .kn { color: #8B008B; font-weight: bold } /* Keyword.Namespace */
22 | .codehilite .kp { color: #8B008B; font-weight: bold } /* Keyword.Pseudo */
23 | .codehilite .kr { color: #8B008B; font-weight: bold } /* Keyword.Reserved */
24 | .codehilite .kt { color: #a7a7a7; font-weight: bold } /* Keyword.Type */
25 | .codehilite .m { color: #B452CD } /* Literal.Number */
26 | .codehilite .s { color: #CD5555 } /* Literal.String */
27 | .codehilite .na { color: #658b00 } /* Name.Attribute */
28 | .codehilite .nb { color: #658b00 } /* Name.Builtin */
29 | .codehilite .nc { color: #008b45; font-weight: bold } /* Name.Class */
30 | .codehilite .no { color: #00688B } /* Name.Constant */
31 | .codehilite .nd { color: #707a7c } /* Name.Decorator */
32 | .codehilite .ne { color: #008b45; font-weight: bold } /* Name.Exception */
33 | .codehilite .nf { color: #008b45 } /* Name.Function */
34 | .codehilite .nn { color: #008b45; text-decoration: underline } /* Name.Namespace */
35 | .codehilite .nt { color: #8B008B; font-weight: bold } /* Name.Tag */
36 | .codehilite .nv { color: #00688B } /* Name.Variable */
37 | .codehilite .ow { color: #8B008B } /* Operator.Word */
38 | .codehilite .w { color: #bbbbbb } /* Text.Whitespace */
39 | .codehilite .mf { color: #B452CD } /* Literal.Number.Float */
40 | .codehilite .mh { color: #B452CD } /* Literal.Number.Hex */
41 | .codehilite .mi { color: #B452CD } /* Literal.Number.Integer */
42 | .codehilite .mo { color: #B452CD } /* Literal.Number.Oct */
43 | .codehilite .sb { color: #CD5555 } /* Literal.String.Backtick */
44 | .codehilite .sc { color: #CD5555 } /* Literal.String.Char */
45 | .codehilite .sd { color: #CD5555 } /* Literal.String.Doc */
46 | .codehilite .s2 { color: #CD5555 } /* Literal.String.Double */
47 | .codehilite .se { color: #CD5555 } /* Literal.String.Escape */
48 | .codehilite .sh { color: #1c7e71; font-style: italic } /* Literal.String.Heredoc */
49 | .codehilite .si { color: #CD5555 } /* Literal.String.Interpol */
50 | .codehilite .sx { color: #cb6c20 } /* Literal.String.Other */
51 | .codehilite .sr { color: #1c7e71 } /* Literal.String.Regex */
52 | .codehilite .s1 { color: #CD5555 } /* Literal.String.Single */
53 | .codehilite .ss { color: #CD5555 } /* Literal.String.Symbol */
54 | .codehilite .bp { color: #658b00 } /* Name.Builtin.Pseudo */
55 | .codehilite .vc { color: #00688B } /* Name.Variable.Class */
56 | .codehilite .vg { color: #00688B } /* Name.Variable.Global */
57 | .codehilite .vi { color: #00688B } /* Name.Variable.Instance */
58 | .codehilite .il { color: #B452CD } /* Literal.Number.Integer.Long */
59 |
--------------------------------------------------------------------------------
/_themes/pelican-bootstrap3/static/css/pygments/trac.css:
--------------------------------------------------------------------------------
1 | .codehilite .hll { background-color: #ffffcc }
2 | .codehilite .c { color: #999988; font-style: italic } /* Comment */
3 | .codehilite .err { color: #a61717; background-color: #e3d2d2 } /* Error */
4 | .codehilite .k { font-weight: bold } /* Keyword */
5 | .codehilite .o { font-weight: bold } /* Operator */
6 | .codehilite .cm { color: #999988; font-style: italic } /* Comment.Multiline */
7 | .codehilite .cp { color: #999999; font-weight: bold } /* Comment.Preproc */
8 | .codehilite .c1 { color: #999988; font-style: italic } /* Comment.Single */
9 | .codehilite .cs { color: #999999; font-weight: bold; font-style: italic } /* Comment.Special */
10 | .codehilite .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */
11 | .codehilite .ge { font-style: italic } /* Generic.Emph */
12 | .codehilite .gr { color: #aa0000 } /* Generic.Error */
13 | .codehilite .gh { color: #999999 } /* Generic.Heading */
14 | .codehilite .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */
15 | .codehilite .go { color: #888888 } /* Generic.Output */
16 | .codehilite .gp { color: #555555 } /* Generic.Prompt */
17 | .codehilite .gs { font-weight: bold } /* Generic.Strong */
18 | .codehilite .gu { color: #aaaaaa } /* Generic.Subheading */
19 | .codehilite .gt { color: #aa0000 } /* Generic.Traceback */
20 | .codehilite .kc { font-weight: bold } /* Keyword.Constant */
21 | .codehilite .kd { font-weight: bold } /* Keyword.Declaration */
22 | .codehilite .kn { font-weight: bold } /* Keyword.Namespace */
23 | .codehilite .kp { font-weight: bold } /* Keyword.Pseudo */
24 | .codehilite .kr { font-weight: bold } /* Keyword.Reserved */
25 | .codehilite .kt { color: #445588; font-weight: bold } /* Keyword.Type */
26 | .codehilite .m { color: #009999 } /* Literal.Number */
27 | .codehilite .s { color: #bb8844 } /* Literal.String */
28 | .codehilite .na { color: #008080 } /* Name.Attribute */
29 | .codehilite .nb { color: #999999 } /* Name.Builtin */
30 | .codehilite .nc { color: #445588; font-weight: bold } /* Name.Class */
31 | .codehilite .no { color: #008080 } /* Name.Constant */
32 | .codehilite .ni { color: #800080 } /* Name.Entity */
33 | .codehilite .ne { color: #990000; font-weight: bold } /* Name.Exception */
34 | .codehilite .nf { color: #990000; font-weight: bold } /* Name.Function */
35 | .codehilite .nn { color: #555555 } /* Name.Namespace */
36 | .codehilite .nt { color: #000080 } /* Name.Tag */
37 | .codehilite .nv { color: #008080 } /* Name.Variable */
38 | .codehilite .ow { font-weight: bold } /* Operator.Word */
39 | .codehilite .w { color: #bbbbbb } /* Text.Whitespace */
40 | .codehilite .mf { color: #009999 } /* Literal.Number.Float */
41 | .codehilite .mh { color: #009999 } /* Literal.Number.Hex */
42 | .codehilite .mi { color: #009999 } /* Literal.Number.Integer */
43 | .codehilite .mo { color: #009999 } /* Literal.Number.Oct */
44 | .codehilite .sb { color: #bb8844 } /* Literal.String.Backtick */
45 | .codehilite .sc { color: #bb8844 } /* Literal.String.Char */
46 | .codehilite .sd { color: #bb8844 } /* Literal.String.Doc */
47 | .codehilite .s2 { color: #bb8844 } /* Literal.String.Double */
48 | .codehilite .se { color: #bb8844 } /* Literal.String.Escape */
49 | .codehilite .sh { color: #bb8844 } /* Literal.String.Heredoc */
50 | .codehilite .si { color: #bb8844 } /* Literal.String.Interpol */
51 | .codehilite .sx { color: #bb8844 } /* Literal.String.Other */
52 | .codehilite .sr { color: #808000 } /* Literal.String.Regex */
53 | .codehilite .s1 { color: #bb8844 } /* Literal.String.Single */
54 | .codehilite .ss { color: #bb8844 } /* Literal.String.Symbol */
55 | .codehilite .bp { color: #999999 } /* Name.Builtin.Pseudo */
56 | .codehilite .vc { color: #008080 } /* Name.Variable.Class */
57 | .codehilite .vg { color: #008080 } /* Name.Variable.Global */
58 | .codehilite .vi { color: #008080 } /* Name.Variable.Instance */
59 | .codehilite .il { color: #009999 } /* Literal.Number.Integer.Long */
60 |
--------------------------------------------------------------------------------
/_themes/pelican-bootstrap3/static/js/respond.min.js:
--------------------------------------------------------------------------------
1 | /*! matchMedia() polyfill - Test a CSS media type/query in JS. Authors & copyright (c) 2012: Scott Jehl, Paul Irish, Nicholas Zakas. Dual MIT/BSD license */
2 | /*! NOTE: If you're already including a window.matchMedia polyfill via Modernizr or otherwise, you don't need this part */
3 | window.matchMedia=window.matchMedia||function(a){"use strict";var c,d=a.documentElement,e=d.firstElementChild||d.firstChild,f=a.createElement("body"),g=a.createElement("div");return g.id="mq-test-1",g.style.cssText="position:absolute;top:-100em",f.style.background="none",f.appendChild(g),function(a){return g.innerHTML='',d.insertBefore(f,e),c=42===g.offsetWidth,d.removeChild(f),{matches:c,media:a}}}(document);
4 |
5 | /*! Respond.js v1.1.0: min/max-width media query polyfill. (c) Scott Jehl. MIT/GPLv2 Lic. j.mp/respondjs */
6 | (function(a){"use strict";function x(){u(!0)}var b={};if(a.respond=b,b.update=function(){},b.mediaQueriesSupported=a.matchMedia&&a.matchMedia("only all").matches,!b.mediaQueriesSupported){var q,r,t,c=a.document,d=c.documentElement,e=[],f=[],g=[],h={},i=30,j=c.getElementsByTagName("head")[0]||d,k=c.getElementsByTagName("base")[0],l=j.getElementsByTagName("link"),m=[],n=function(){for(var b=0;l.length>b;b++){var c=l[b],d=c.href,e=c.media,f=c.rel&&"stylesheet"===c.rel.toLowerCase();d&&f&&!h[d]&&(c.styleSheet&&c.styleSheet.rawCssText?(p(c.styleSheet.rawCssText,d,e),h[d]=!0):(!/^([a-zA-Z:]*\/\/)/.test(d)&&!k||d.replace(RegExp.$1,"").split("/")[0]===a.location.host)&&m.push({href:d,media:e}))}o()},o=function(){if(m.length){var b=m.shift();v(b.href,function(c){p(c,b.href,b.media),h[b.href]=!0,a.setTimeout(function(){o()},0)})}},p=function(a,b,c){var d=a.match(/@media[^\{]+\{([^\{\}]*\{[^\}\{]*\})+/gi),g=d&&d.length||0;b=b.substring(0,b.lastIndexOf("/"));var h=function(a){return a.replace(/(url\()['"]?([^\/\)'"][^:\)'"]+)['"]?(\))/g,"$1"+b+"$2$3")},i=!g&&c;b.length&&(b+="/"),i&&(g=1);for(var j=0;g>j;j++){var k,l,m,n;i?(k=c,f.push(h(a))):(k=d[j].match(/@media *([^\{]+)\{([\S\s]+?)$/)&&RegExp.$1,f.push(RegExp.$2&&h(RegExp.$2))),m=k.split(","),n=m.length;for(var o=0;n>o;o++)l=m[o],e.push({media:l.split("(")[0].match(/(only\s+)?([a-zA-Z]+)\s?/)&&RegExp.$2||"all",rules:f.length-1,hasquery:l.indexOf("(")>-1,minw:l.match(/\(\s*min\-width\s*:\s*(\s*[0-9\.]+)(px|em)\s*\)/)&&parseFloat(RegExp.$1)+(RegExp.$2||""),maxw:l.match(/\(\s*max\-width\s*:\s*(\s*[0-9\.]+)(px|em)\s*\)/)&&parseFloat(RegExp.$1)+(RegExp.$2||"")})}u()},s=function(){var a,b=c.createElement("div"),e=c.body,f=!1;return b.style.cssText="position:absolute;font-size:1em;width:1em",e||(e=f=c.createElement("body"),e.style.background="none"),e.appendChild(b),d.insertBefore(e,d.firstChild),a=b.offsetWidth,f?d.removeChild(e):e.removeChild(b),a=t=parseFloat(a)},u=function(b){var h="clientWidth",k=d[h],m="CSS1Compat"===c.compatMode&&k||c.body[h]||k,n={},o=l[l.length-1],p=(new Date).getTime();if(b&&q&&i>p-q)return a.clearTimeout(r),r=a.setTimeout(u,i),void 0;q=p;for(var v in e)if(e.hasOwnProperty(v)){var w=e[v],x=w.minw,y=w.maxw,z=null===x,A=null===y,B="em";x&&(x=parseFloat(x)*(x.indexOf(B)>-1?t||s():1)),y&&(y=parseFloat(y)*(y.indexOf(B)>-1?t||s():1)),w.hasquery&&(z&&A||!(z||m>=x)||!(A||y>=m))||(n[w.media]||(n[w.media]=[]),n[w.media].push(f[w.rules]))}for(var C in g)g.hasOwnProperty(C)&&g[C]&&g[C].parentNode===j&&j.removeChild(g[C]);for(var D in n)if(n.hasOwnProperty(D)){var E=c.createElement("style"),F=n[D].join("\n");E.type="text/css",E.media=D,j.insertBefore(E,o.nextSibling),E.styleSheet?E.styleSheet.cssText=F:E.appendChild(c.createTextNode(F)),g.push(E)}},v=function(a,b){var c=w();c&&(c.open("GET",a,!0),c.onreadystatechange=function(){4!==c.readyState||200!==c.status&&304!==c.status||b(c.responseText)},4!==c.readyState&&c.send(null))},w=function(){var b=!1;try{b=new a.XMLHttpRequest}catch(c){b=new a.ActiveXObject("Microsoft.XMLHTTP")}return function(){return b}}();n(),b.update=n,a.addEventListener?a.addEventListener("resize",x,!1):a.attachEvent&&a.attachEvent("onresize",x)}})(this);
7 |
--------------------------------------------------------------------------------
/content/Issue/issue-092.md:
--------------------------------------------------------------------------------
1 | Title: Issue 92 ~ 轮子
2 | Date: 2013-11-15
3 | Tags: Weekly,Pycoder,Zh
4 | Slug: issue-92
5 | ## Hi Pythonistas!
6 |
7 | 这周有个很大的问题,
8 | 就是Python 社区发布忒多事儿了,俺们都不知道怎么选择了!
9 |
10 | 一如即往,任何疑问/意见/抱怨/建议,
11 | 让我们知道就好;
12 |
13 | 想跟上所有 蠎界 新闻?
14 | [@pycoders](http://twitter.com/pycoders).
15 |
16 | 请用
17 | [Gittip](https://www.gittip.com/PycodersWeekly)
18 | 支持俺们吧!
19 |
20 | --
21 | [Mahdi](https://twitter.com/#!/myusuf3) and [Mike](https://twitter.com/#!/mgrouchy)
22 |
23 | 原文:[Pycoder's Weekly (Issue #92): Wheel](http://us4.campaign-archive2.com/?u=9735795484d2e4c204da82a29&id=720a9f6aa5)
24 |
25 |
26 | ## 新闻与开发动态
27 |
28 | - [微蠎: Python for microcontrollers](http://www.kickstarter.com/projects/214379695/micro-python-python-for-microcontrollers) (kickstarter.com)
29 |
30 | 发布在 kickstarter 上项目,
31 | 就是想作一个简化版的Python 以便制造: Micro Python board.
32 |
33 |
34 |
35 | - [Python Wheels](http://pythonwheels.com/) (pythonwheels.com)
36 |
37 | Wheels 是全新的标准化 Python 分发管理,
38 | 目标是取代 eggs.
39 | 建议学习怎么通过 Wheels 来创建包并发布.
40 | 当然, 可以关注已经有多少项级模块已经用Wheels 来发布了!
41 |
42 | - [Celery 3.1 已发布](http://docs.celeryproject.org/en/latest/whatsnew-3.1.html) (celeryproject.org)
43 |
44 |
45 | 这是期待久矣的一个大版本,
46 | 成吨的改进,一定要去感谢一嗓子!
47 |
48 |
49 | - [Twisted 13.2.0 发布](http://labs.twistedmatrix.com/2013/11/twisted-1320-released.html) (django-rest-framework.org)
50 |
51 | bug 修订,
52 | 并解决了 Django 1.6 的兼容问题
53 |
54 |
55 |
56 |
57 | ## 讨论
58 |
59 | - [你应该知道的Python 模块](http://www.reddit.com/r/Python/comments/1qnuyo/python_modules_you_should_know/)(reddit.com)
60 |
61 | - 在 reddit 上的热门话题,集中推荐的模块在
62 | - docopt, [opster](http://opster.readthedocs.org/en/latest/)
63 | - functools,itertools,collections,urllib2
64 |
65 | ## 项目
66 |
67 | - [genesis](https://github.com/cznweb/genesis) (github.com)
68 |
69 | Genesis是 arkOS 上的一个图形化应用管理器.
70 | 能从任何电脑接入你的 arkOS, 增加/修改应用,并查阅运行情况.
71 |
72 |
73 |
74 | - [cherrymusic](https://github.com/devsnd/cherrymusic) (github.com)
75 |
76 | Python 实现的音乐流媒体服务器,
77 | 能向所有设备播放你收集的音乐!
78 | 发烧支有褔了!
79 |
80 |
81 |
82 | - [pyaib](https://github.com/facebook/pyaib) (github.com)
83 |
84 | 帮助你用Python 快速完成 IRC 机器人开发的框架
85 |
86 |
87 | - [dataset](https://github.com/pudo/dataset) (github.com)
88 |
89 | 相当NB 的模块,
90 | 能若读写JSON 般操作数据库!
91 |
92 |
93 | - [flanker](https://github.com/mailgun/flanker) (github.com)
94 |
95 | 当前包含很好用的 地址以及 MIME 解决库
96 |
97 |
98 | - [marshmallow](https://github.com/sloria/marshmallow) (github.com)
99 |
100 | marshmallow 算是一种 ORM 转换库,
101 | 处理复杂的数据类型变成Python 内置的数据类型对象,
102 | 能用以快速发布成 JSON 的接口.
103 |
104 |
105 |
106 | ## 文章
107 |
108 | - [Modelling a Basic Income with Python and Monte Carlo Simulation](http://www.chrisstucchio.com/blog/2013/basic_income_vs_basic_job.html) (chrisstucchio.com)
109 |
110 | [Basic income](http://en.wikipedia.org/wiki/Basic_income)
111 | 是近来相当频繁的被谈及的策略.
112 | 此文,作者使用 应用Python 在 Monte Carlo 模拟环境中测试了此策略.
113 |
114 |
115 |
116 | - [用Python 进行自然语言处理](http://okfnlabs.org/blog/2013/11/11/python-nlp.html) (okfnlabs.org)
117 |
118 | 此文就如何用
119 | [NLTK](http://nltk.org/)
120 | 实现以及处理自然语言,给出了简短的可用纲要
121 |
122 |
123 |
124 |
125 | - [Ad-hoc Data Breakpoints](http://nedbatchelder.com/blog/201311/adhoc_data_breakpoints.html) (nedbatchelder.com)
126 |
127 | 提供贴心的小功能,能在动态场景中加入你期望的断点,触发一些行动.
128 |
129 |
130 |
131 | - [Python 2 到 Python 3 的回顾](https://www.dropbox.com/s/83ppa5iykqmr14z/Py2v3Hackers2013.pptx)[slides] (dropbox.com)
132 |
133 |
134 | 此幻灯是 Guido 老爹为了回答为毛应该开始使用 Python 3 而写的,
135 | 解释了为什么 None, True 以及 False 变成了关键字,
136 | 以及其它很多思考内幕.
137 | 必须认真学习!
138 |
139 |
140 | - [用Bokeh无痛绘制图表](http://continuum.io/blog/painless_streaming_plots_w_bokeh) (blogspot.ca)
141 |
142 | 了解如何 Bokeh 完成无痛的实时图表绘制.
143 | 文章中,作者使用 15 行代码
144 | 完成从 Xbee模块获取的数据流变成图表输出,实时的!
145 |
146 |
147 | # 是也乎
148 |
149 | - 131120 [Zoom.Quiet](http://zoomquiet.org/) 用时 31 分钟 完成快译.
150 | - 131118 [Zoom.Quiet](http://zoomquiet.org/) 用时 3 分钟 完成格式转抄.
151 |
152 |
--------------------------------------------------------------------------------
/content/Issue/issue-002.md:
--------------------------------------------------------------------------------
1 | Title: Issue 2 ~ PyCon 来了!
2 | Date: 2012-02-24
3 | Tags: Weekly,Pycoder,Zh
4 | Slug: issue-2
5 | # Hi Pythonistas.
6 |
7 | 让我们继续:
8 | 这是第二期Pycoder周刊
9 |
10 | 本周感觉过的很慢,目测每个人都在摩拳擦掌的期待Python会议.
11 |
12 | 另外作为承诺,我们必须释放RSS源,以便大家可以订阅所有文章.
13 | 另外如大伙所愿, 我们还将发布归档网站.
14 |
15 | 作为新闻通讯,我们也将释放全新的邮件列表,
16 | 并发布上周的信息,
17 | 目测,以往的订户将首先获知.
18 |
19 |
20 |
21 | Enjoy!
22 |
23 |
24 | --
25 | [Mahdi](https://twitter.com/#!/myusuf3) and [Mike](https://twitter.com/#!/mgrouchy)
26 |
27 | 原文: [Pycoder's Weekly (Issue #2) : PyCon All The Things](http://us4.campaign-archive2.com/?u=9735795484d2e4c204da82a29&id=790318f521)
28 |
29 | ## 新闻与开发动态
30 |
31 | -[Startup Row Winners Pycon 2012](http://pycon.blogspot.com/2012/02/startup-row-winners-for-pycon-2012.html)
32 | 对于有心想创业的小伙伴,今年的 PyCon 将关注使用 Python 的创业团队,
33 | 你们的信息将陈列到官网!
34 |
35 | - [Guido将在今年PyCon上讲什么?](https://plus.google.com/115212051037621986145/posts/P8XZ5Zxvpxk)
36 | 老爹将试图一改以往的 "国情咨文" 或 "自我感觉良好的成功感受" 演讲基调.
37 | 因为他知道这不是他的强项, 所以,特别在 G+ 上公开征集提案,
38 | 大家赶紧去支招儿吧!
39 |
40 |
41 | - [赢得 PyCon 2012 门票!](http://blog.dotcloud.com/win-tickets-to-pycon-2012)
42 | 对于那些无法前往 PyCon 现场的小伙伴们,
43 | 幸运之神有关注泥们的.
44 | [dotcloud](https://twitter.com/#!/dot_cloud)
45 | 的家伙发动了个比赛, 你们依然有机会赢得门票! 赶紧吧...
46 |
47 |
48 | ## 讨论
49 |
50 | - [用Python 构建 Android](http://www.reddit.com/r/Python/comments/pyq1p/python_used_to_make_full_apps_for_android/)
51 | 发源自 Reddit 的讨论,有关为毛无法使用我们敬爱的Python 来开发完整的 Android 应用?!
52 | 原先的标题很拉仇恨, 但是,讨论很深入,比如引出了这么COOL 的项目:
53 | [SL4A](http://code.google.com/p/android-scripting/).
54 |
55 |
56 | - [min() vs. sort()](http://www.reddit.com/r/Python/comments/q2f4c/min_vs_sort_and_then_list0/)
57 | 有关如何从大数目列表中获得最小值(浮点数)的 "简单问题".
58 | 简单的结论是 min() 就足够快了.
59 | 但对复杂的排序,引发了各种思考.
60 |
61 |
62 |
63 | ## 项目
64 |
65 | - [在线Python 教程](http://people.csail.mit.edu/pgbovine/python/tutor.html#mode=edit)
66 | 超赞的项目.
67 | 接收任意Python 代码,
68 | 并以可视化的形式逐步展示执行过程中堆栈以及 I/O 变化!
69 | 想理解堆桟的工作原理? 试试这货!
70 |
71 |
72 | - [Django Knowledge](https://github.com/zapier/django-knowledge)
73 | 每次建立工程,总会被一遍遍询问相同的问题.
74 | [Zapier](https://twitter.com/#!/zapier)
75 | 创建的 Django Knowledge 应用能帮助你快速创建有知识库支持的项目.
76 |
77 | - [Django Bootstrap](https://github.com/earle/django-bootstrap)
78 | 嗯,目测你能在后台呼风唤雨, 但是,你的网站看起来依旧很一般.
79 | 现在,你走运了!
80 | Bootstrap 能让网站轻易的看起来专业很多.
81 | 你如果懒的动 CSS/HTML,
82 | [Earle Ady](https://github.com/earle)
83 | Django Bootstrap 正是你要的一切, 兼容 Django 的Twitter-Bootstrap 样表单!
84 |
85 |
86 | - [Flask Debug Toolbar](https://github.com/mgood/flask-debugtoolbar)
87 | 你是否喜爱 django-debug-toolbar?
88 | 也想在 Flask 中使用类似的?
89 | 你走运了!
90 | flask-debug-toolbar 果断有了,
91 | 由[Matt Good](https://github.com/mgood) 带来的美妙项目!
92 | 可以非常COOL 通过调试页面进行在经典著作操作了!
93 |
94 |
95 | ## 文章
96 |
97 |
98 | - [CS 373: Programming a Robotic Car](http://www.udacity.com/overview/Course/cs373)
99 | 由[Udacity](http://www.udacity.com/)
100 | 提供的开放课程, 在7周之内教会你编程.
101 | 甚至于不用安装 Python 一切都有网页中准备好了!
102 | 喔液!
103 |
104 |
105 | - [PyGame Treasure](http://therealkatie.net/blog/2012/feb/20/pygame-treasure/)
106 | 我们爱游戏, 为毛不用深爱的Python 创建几个?
107 | [Katie Cunningham](https://twitter.com/#!/kcunning)
108 | 在次系列的第二部分,
109 | 分享了如何用 PyGame 构建游戏,很有趣,值得一试!
110 |
111 | - [Python Web 服务 CPython vs. Pypy](http://casbon.me/what-will-pypy-do-for-your-website-benchmarki)
112 | 本文总结了所有web 框架的类型,
113 | 以及可运行的服务.
114 | 进一步的,对比了不用类型应用的部署差异.
115 | [James](https://twitter.com/#!/casualbon)
116 | 由此得出了非常有趣的结论..
117 |
118 |
119 | - [True and False Python 2](http://aboutsimon.com/2012/02/22/whats-up-with-true-and-false-in-python-2/)
120 | 非常COOL 的总结,
121 | 有关Python 从性能角度对 真假的判定, 以及 1/0 的使用.
122 | 由[Simon](http://aboutsimon.com/about/) 分享.
123 |
124 | - [Python 文档搜索应用](http://blog.codecropper.com/2012/02/pythons-documentation-at-your-fingertips/)
125 | 最新的英雄出现了:[Gustavo Ambrozio](https://github.com/gpambrozio)
126 | 将 Python 文档集成到了 Dash (MAC 中非常好用的文档以及代码片段管理软件)
127 | Dash 帮助我们轻易的查找任何开发文档, 值得体验!
128 |
129 | # 是也乎
130 |
131 | - 131020 [Zoom.Quiet](http://zoomquiet.org/) 用时35分钟完成快译.
132 |
--------------------------------------------------------------------------------
/content/ElixirWeekly/exs-144.md:
--------------------------------------------------------------------------------
1 | Title: Elixir Weekly #144
2 | Slug: elixirweekly-144
3 | Date: 2019-04-11 16:42
4 | Tags: Weekly,Elixir,ZH
5 |
6 |
7 |
8 | 原文: [ElixirWeekly - Elixir Community Newsletter, one email every Thursday.](https://elixirweekly.net/issues/144)
9 |
10 | 
11 |
12 | ------
13 |
14 | >> Every Thursday: No frills, no click-through, no spam.
15 | >>
16 |
17 |
18 | ## 当周 不老药
19 | > This week in Elixir
20 |
21 | - [Phoenix 的 Params 模块](https://kubasub.proseful.com/params-modules-for-phoenix)
22 |
23 | The Params modules pattern can be used in Phoenix to validate and massage a controller action’s params into data that can be passed to contexts.
24 |
25 | (`是也乎:`
26 |
27 | 所谓中间件模块
28 |
29 | )
30 |
31 |
32 | - [使用 GenServer 进行夜间任务](https://blog.smartlogic.io/genserver-nightly-task/)
33 |
34 | Eric set up a nightly process that uses OTP primitives to run nightly tasks for his games. Nice!
35 |
36 | (`是也乎:`
37 |
38 | 只是为了游戏刷分?
39 |
40 | )
41 |
42 | - [ExDoc v0.20](http://blog.plataformatec.com.br/2019/04/exdoc-v0-20-keyboard-shortcuts-autocompletion-full-text-search-and-more/)
43 |
44 | Wojtek wrote about keyboard shortcuts, autocompletion, full-text search, and other stuff in the latest version of ExDoc.
45 |
46 | - [Micro: 读取 elixir 中的 cmd pipes](https://dom.events/2019/04/09/read-cmd-line-pipes-in-elixir.html)
47 |
48 | Regis wrote a blog post about reading pipes from the command line in Elixir CLI tools.
49 |
50 | - [清理 Phoenix 控制器操作](https://link.medium.com/u2pVO4TMIV)
51 |
52 | Damon writes about a pattern he came across that helps when you need to pass a lot of variables to the view / template.
53 |
54 | (`是也乎:`
55 |
56 | 在 Elixir 中, 多少算大量?
57 |
58 | )
59 |
60 |
61 | - [Elixir 协议,它们如何工作? erlang 的观点](http://marianoguerra.org/posts/elixir-protocols-how-do-they-work-the-erlang-perspective.html)
62 |
63 | Mariano gives "the erlang perspective" on protocols in Elixir.
64 |
65 |
66 | ## 📆🐍 社区
67 | > Even more from around the Elixir community
68 |
69 | - [The ElixirConf US 2019 Speaker CFP is NOW OPEN!](https://docs.google.com/forms/d/e/1FAIpQLSes4zJptuQH8Qvbfa1wgJy4tBZYsQerXMsoqyv6mRYfR9jDzg/viewform?usp=send_form)
70 | + Misc
71 |
72 | - [Jay Ashe from Cava - Elixir in Production](https://podcast.smartlogic.io/season-1-cava)
73 | + Podcast
74 |
75 | - [ElixirMix Podcast 046 - 嫑重复你的领域知识 Yiming Chen](https://devchat.tv/elixir-mix/emx-046-dont-repeat-your-domain-knowledge-with-yiming-chen/)
76 | + Podcast
77 |
78 | (`是也乎:`
79 |
80 | 一鸣大大?
81 |
82 | )
83 |
84 | ## 好物
85 | > Interesting Projects, Tools and Libraries
86 |
87 | - [Elixir Orb for CircleCI](https://circleci.com/blog/contributing-the-elixir-orb/)
88 | + Blog post
89 |
90 | - [Hashing Files in Elixir](https://www.poeticoding.com/hashing-a-file-in-elixir/)
91 | + Blog post
92 |
93 | - [Passing a Function Inside @assigns in Phoenix](https://hlongvu.com/post/qnqceslup4-Passing-a-function-inside-atassigns-in-Phoenix-Elixir)
94 | + Blog post
95 |
96 | - [Make Multi-clause Functions More Readable with This Quick Tip](https://kubasub.proseful.com/elixir-tips-function-clauses)
97 | + Blog post
98 |
99 | - [复习 “Elixir & Erlang 的尾调用优化” with Benchee 1.0](https://pragtob.wordpress.com/2019/04/08/revisiting-tail-call-optimization-in-elixir-erlang-with-benchee-1-0/)
100 | + Blog post
101 |
102 |
103 | ## DAMA
104 | > ❤️ Happy Pythonic!
105 |
106 | (`大妈私人无责任播报`)
107 |
108 | - [4-21 第4期简讯 #issue4 · 语雀](https://www.yuque.com/zengzhi/elixir-weekly-report/vn8itv)
109 | - [Creating an HTTP Server using pure OTP – Tyler Pachal – Medium](https://medium.com/@tylerpachal/creating-an-http-server-using-pure-otp-c600fb41c972)
110 | + OTP
111 |
112 | # 是也乎
113 |
114 | - 190411 [Zoom.Quiet](http://zoomquiet.io/)(大妈) 用时 42 分钟 完成快译
115 | - 190411 [Zoom.Quiet](http://zoomquiet.io/)(大妈) 用时 17 分钟 完成格式转抄.
116 |
--------------------------------------------------------------------------------
/content/importpython/issue-055.md:
--------------------------------------------------------------------------------
1 | Title: 蠎加载 55
2 | Slug: importpython-55
3 | Date: 2015-12-24 14:42
4 | Tags: Weekly,ImportPython,Zh
5 |
6 | 
7 |
8 |
9 | - 原文: [Import Python Weekly Newsletter - Issue No 55](http://importpython.com/newsletter/no/55/)
10 | - 嗯哼, 圣诞节都不停,虽然少了点,果断程序猿都是 single boy...
11 |
12 | ## 该读
13 | ~ 文章, Blog, 教程...
14 |
15 |
16 | - [用 Django allauth 进行 facebook 移动应用调查](http://bytefilia.com/titanium-mobile-facebook-application-django-allauth-sign-sign/)
17 |
18 | 过去几周, 对 titanium C/S 移动社交应用进行了调查,
19 | 通过简单的 Django allauth 配置就能快速进行.
20 |
21 |
22 | - [将 IPython 作为 OpenShift 中的 Docker 容器来运行.](http://blog.dscpl.com.au/2015/12/running-ipython-as-docker-container.html)
23 | + docker
24 |
25 | 希望大家能有更多的姿势来任性的使用 Docker,
26 | OpenShift 中将对更多高层次可托管容器提供服务.
27 |
28 | - [6 种机器学习可视化模式用 Python 以及 R 来现实](http://moderndata.plot.ly/machine-learning-visualizations-made-in-python-and-r/)
29 |
30 | 这6种可视化,是2014年至2016年间使用 Plotly 来完成的,
31 | Plotly 是基于 Python 以及 R 的开源图形库.
32 |
33 | - [你的 Django 故事: 遇见 Anna Schneider](http://blog.djangogirls.org/post/135640345113)
34 | + djangogirls
35 |
36 | Anna Schneider 是 WattTime 的 CTO,
37 | 一个技术非营利组织, 旨在减少智能设备的碳足迹!
38 | 在她生物物理学博士期间,自学了 Python,
39 | 两年前又自学了 Django,
40 | 进一步创立了 WattTime!
41 |
42 |
43 | - [介绍 Lektor — 静态文件管理系统](http://lucumr.pocoo.org/2015/12/21/introducing-lektor)
44 |
45 | 内容管理系统, 类似其它同类系统使用文件作为源.
46 | 但是,有本地托管的管理面板,
47 | 以便非程序员使用.
48 | 当前可安装/双击/打开浏览器/编辑页面,
49 | 基于静态 HTML 页面,
50 | 并用发布按钮发布到服务器,
51 | 兼容 Dropbox 后端.
52 |
53 |
54 | (`是也乎:`
55 |
56 | pocoo 出品,必属上品!
57 | 又得及时上手一种仙器矣.
58 |
59 | 
60 |
61 | 简单的说,又一个静态wiki
62 | )
63 |
64 |
65 |
66 | - [作为 Caktus' 开源研究员重构我的时间](https://www.caktusgroup.com/blog/2015/12/21/reflecting-my-time-caktus-open-source-fellow/)
67 |
68 | Ben Phillips 是 Caktus' 开源研究员.
69 | 当奖学金即将结束时,
70 | 认真反省了过往的时间以及经验.
71 |
72 | - [2015 心目中最赞 '新' Python 模块](http://blog.rtwilson.com/my-top-5-new-python-modules-of-2015/)
73 | + core python
74 |
75 | 过去一年中写了很多 blogging,
76 | 应该能列出年度最佳模块.
77 | 虽然都在 2015 发布了版本,是 '新的' ;-)
78 | 当然对于读者可能是 '真的新'
79 |
80 | - [用 Python 创建 NBA 射栏榜](http://www.danvatterott.com/blog/2015/12/22/creating-nba-shot-charts/)
81 |
82 | 通过统计不同场次中的照片,
83 | 构造了射栏统计图,对比双方的投篮命中率.
84 |
85 | - [构建简单 Interpreter. 第 1 ~ 7. [Python 和 Rust]](http://ruslanspivak.com/lsbasi-part7/)
86 |
87 | "如果你并不理解编译器如何工作的,
88 | 那么其实你并不理解计算机的工作.
89 | 如何你无法 100% 的理解计算机的工作,
90 | 那么就无法理解程序猿的工作" - Steve Yegge
91 |
92 | 所以,想知道编译器/解释器的工作?
93 | 意思是 100% 的清楚?
94 | 别担心, 通过一系列 解释器和编译器的构建练习,
95 | 你必定能理解他们的工作,从而变的自信又快乐!
96 |
97 |
98 |
99 | - [Sophy: 高速 Sophia 数据 Python 绑定库](http://www.reddit.com/r/Python/comments/3xilqu/sophy_fast_python_bindings_for_sophia_database/)
100 |
101 | Sophia 是种强力 K/V 数据库,
102 | 通过简洁的 C 接口发布了丰富的功能.
103 | 为了使用之,作者构建了 Python 绑定.
104 | 文章中介绍了 Sophia 数据库,以及如何通过 Sophy 来使用.
105 |
106 |
107 | ### 工作
108 |
109 | ....
110 |
111 | ## 项目
112 | ~ 包/模块/库/片段...
113 |
114 |
115 |
116 | - [lektor](https://github.com/lektor/lektor)
117 | - 909 Stars, 29 Fork
118 |
119 | 静态文件的内容管理系统
120 |
121 | - [ispy](https://github.com/dellis23/ispy)
122 | - 756 Stars, 26 Fork
123 |
124 | 用于监测其他终端和流程的输出
125 |
126 | - [ComicFetcher](https://github.com/XIAZY/ComicFetcher)
127 | - 13 Stars, 1 Fork
128 |
129 | 从 comic.ck101.com 收集漫画的抓取工具
130 |
131 |
132 | - [dj-ango](https://github.com/pydanny/dj-ango)
133 | - 11 Stars, 0 Fork
134 |
135 | Django 的简化输入结构
136 |
137 | - [Python-Packet-Sniffer](https://github.com/buckyroberts/Python-Packet-Sniffer)
138 | - 6 Stars, 0 Fork
139 |
140 | Python的网络数据包嗅探器
141 |
142 | (`是也乎:`
143 |
144 | Wow!
145 | )
146 |
147 | ## DAMA 无责任推荐
148 |
149 | - [GitHub 漫游指南](https://github.com/phodal/github-roam)
150 |
151 | # 是也乎
152 |
153 | - 151224 [Zoom.Quiet](http://zoomquiet.io) 42 分钟完成快译
154 | - 151224 [Zoom.Quiet](http://zoomquiet.io) 用时 7 分钟完成格式化.
155 |
156 |
157 |
--------------------------------------------------------------------------------
/content/Issue/issue-026.md:
--------------------------------------------------------------------------------
1 | Title: Issue 26: 好奇心
2 | Slug: issue-26
3 | Date: 2012-8-10
4 | Tags: Weekly,Pycoder,Zh
5 |
6 | 
7 |
8 |
9 | ## 搜罗Python 万物的周刊
10 |
11 | 亲们,
12 |
13 | 看到这么多人穿着Tee恤的照片, 真是激动万分哪. 本期包含成吨的内容, 感谢投稿的蟒行者们! 接下去也请继续猛砸稿件吧.
14 |
15 | 如果你想要一个贴纸, 寄给我们回邮信封就好(送完为止):
16 |
17 | 44 Byward Market Square, Suite 210
18 | Ottawa, Ontario Canada
19 | K1P 7A2
20 |
21 |
22 | 想跟上所有 蠎界 新闻? [@pycoders](http://twitter.com/pycoders).
23 |
24 | --
25 |
26 | [Mahdi](https://twitter.com/#!/myusuf3) and [Mike](https://twitter.com/#!/mgrouchy)
27 |
28 | 原文: [Pycoder's Weekly (Issue #26): Curiosity](http://us4.campaign-archive2.com/?u=9735795484d2e4c204da82a29&id=d726d67b25)
29 |
30 |
31 | ## 新闻
32 |
33 | - [加拿大PyCon](http://pycon.ca/) (pycon.ca)
34 |
35 | 对所有加拿大人(还有我们!)来说, 这真是一个好消息.
36 | 加拿大PyCon将带着所有PyCon的优良传统于11月9日-11日在多伦多举办. 还不去搞票!
37 |
38 | 加拿大PyCon正在寻找各式有经验想法的演讲嘉宾. 想要分享知识或是展示一下自己作品的同学, 这可是个千载难逢的好机会.
39 | 如果你是演讲新手, 你面对的将是一群友好的听众, 我们也可以帮你找到合适的人脉及资源来帮忙完善讲稿和技巧.
40 |
41 |
42 | ## 讨论
43 |
44 | [Python编译时类型检测](http://www.reddit.com/r/Python/comments/xrhmm/python_compiletime_type_checking/)
45 |
46 |
47 | ## 项目
48 |
49 | - [piano](http://jordanscales.com/piano/) (jordanscales.com)
50 |
51 | (`译注:` 链接失效, github中也未发现该项目)
52 |
53 |
54 | - [decrypt](https://github.com/jtwaleson/decrypt) (github.com)
55 |
56 | 想成为电影中的黑客吗? decrypt让你离梦想更进一步. 程序会控制屏幕输出, 跳出一些随机字符, 一点点将pipe中的内容显示出来. Cool!
57 |
58 |
59 | - [Beautifulmind.io](http://beautifulmind.io/) (beautifulmind.io)
60 |
61 | Beautifulmind.io 是一个开源的实时协作思维导图工具.
62 | 如果你和小伙伴们想找个思维导图工具来分析你们最棒或是最新的项目, 试试它.
63 |
64 |
65 | - [bitey](https://github.com/dabeaz/bitey) (github.com)
66 |
67 | bitey简直帅呆了. 你有点危险吗? 你嗜好速度吗? 你想在你的python应用里直接使用llvm字节码吗?
68 | Bitey有你一切想要的. David Beazley 善意提醒, bitey可是双刃剑. 请小心使用.
69 |
70 |
71 | - [debug inspector面板](https://github.com/santiagobasulto/debug-inspector-panel) (github.com)
72 |
73 | 你经常在debug代码时打印变量吗? Debug inspector在[django-debug-toolbar](https://github.com/django-debug-toolbar/django-debug-toolbar)中添加了一个面板, 方便你查看所有你关心的变量值.
74 |
75 |
76 | ## 文章
77 |
78 |
79 | - [用Pyramid记录唯一请求ID](http://www.alexconrad.org/2012/08/log-unique-request-ids-with-pyramid.html) (alexconrad.org)
80 |
81 |
82 | - [自豪地编写无状态实时程序](http://lucumr.pocoo.org/2012/8/5/stateless-and-proud/) (pocoo.org)
83 |
84 | [Flask](http://flask.pocoo.org/)的作者Armin Ronacher 介绍如何创建无状态的"实时"系统. 文章深入浅出值得一读, 推荐.
85 |
86 |
87 | - [Python内部构造: 简述](http://tech.blog.aknin.name/2010/04/02/pythons-innards-introduction/) (aknin.name)
88 |
89 | 对Python内在感兴趣? 不用再苦苦寻觅, 这篇文章是作者关于Python内部实现系列文章的第一篇. 在[这里](http://tech.blog.aknin.name/category/pythons-innards/)可以看到其余的文章.
90 |
91 |
92 | - [Flask系列教程视频](http://www.youtube.com/playlist?list=PL0DA14EB3618A3507&feature=plcp) (youtube.com)
93 |
94 | 我们的一位读者提交了这个赞爆的[Flask](http://flask.pocoo.org/)系列视频. 想了解Flask里里外外的话, 这是一个绝佳的切入点.
95 |
96 |
97 | - [理解Python的 "With" 语句](http://blog.sdqali.in/blog/2012/07/09/understanding-pythons-with/) (sdqali.in)
98 |
99 |
100 | - [为生物学家准备的Python入门](http://nematodes.org/martin/teaching/introduction-to-python-for-biologists/) (nematodes.org)
101 |
102 | Python在**科学**领域挺流行的. Python社区拥有[NumPy](http://numpy.scipy.org/), [SciPy](http://www.scipy.org/)和[Pandas](http://pandas.pydata.org/). 而现在, 打算入门的生物学家们也有了这个很棒的的Python入门课程.
103 |
104 |
105 | - [用C写Python模块](http://danfm.ca/posts/python-c-extensions/) (danfm.ca)
106 |
107 | 这篇文章简述了你该如何写自己的Python C扩展.
108 | [Dan](https://github.com/dfm)并不想过多涉及C扩展开发, 这个例子将给你演示一次完整模块创建的流程.
109 |
110 |
111 | - [用Python的sub-generators做词法扫描](http://eli.thegreenplace.net/2012/08/09/using-sub-generators-for-lexical-scanning-in-python/) (thegreenplace.net)
112 |
113 | (`译注:` sub-generators 指用`yield from`完成的generator)
114 |
115 |
116 | - [用PyPy和CPython进行多核编程](http://morepypy.blogspot.ca/2012/08/multicore-programming-in-pypy-and.html) (blogspot.ca)
117 |
118 |
119 | ## 是也乎
120 | - 来自: [SkyLothar](https://gitcafe.com/SkyLothar) 的 `PR`
121 |
--------------------------------------------------------------------------------
/content/Issue/issue-096.md:
--------------------------------------------------------------------------------
1 | Title: Issue 96: 蛋刀
2 | Date: 2013-12-13
3 | Tags: Weekly,Pycoder,Zh
4 | Slug: issue-96
5 | ## Hi Pythonistas!
6 |
7 | 马上就100期了! 哗!
8 |
9 | 一如即往,任何疑问/意见/抱怨/建议,
10 | 让我们知道就好;
11 |
12 |
13 | 想跟上所有 蠎界 新闻?
14 | [@pycoders](http://twitter.com/pycoders).
15 |
16 | 请用
17 | [Gittip](https://www.gittip.com/PycodersWeekly)
18 | 支持俺们吧!
19 |
20 | --
21 | [Mahdi](https://twitter.com/#!/myusuf3) and [Mike](https://twitter.com/#!/mgrouchy)
22 |
23 | 原文: [Pycoder's Weekly (Issue #96): Cake](http://eepurl.com/KD6rH)
24 |
25 | ## 新闻
26 |
27 | - [Django 更新报告将复活](https://www.djangoproject.com/weblog/2013/dec/09/reviving-django-update-posts/) (djangoproject.com)
28 |
29 | Django 团队宣布对 1.7 的发展更新将在 Blog 中复活,
30 | 以便加强社区更新.
31 |
32 |
33 | - [DjangoCon EU 准备上岛!](http://2014.djangocon.eu/) (djangocon.eu)
34 |
35 | 目测 DjangoCon EU 将在 2014 五月 12-17号,
36 | 在 L'île des Embiez 举行, 法国的一个岛上,整个儿的!
37 |
38 |
39 | - [Coverage 3.7.1 发布](http://nedbatchelder.com/blog/201312/coveragepy_371.html) (nedbatchelder.com)
40 |
41 | 主要对 HTML 报表性能进行了发布.
42 |
43 |
44 | - [Pydev 3.1.0 发布](http://pydev.blogspot.ca/2013/12/pydev-310-released.html) (blogspot.ca)
45 |
46 |
47 | ## 讨论
48 | [针对俺数据挖掘的扩展请指教](http://www.reddit.com/r/Python/comments/1slrzj/need_some_resources_to_help_scale_up_my_datamining/) (reddit.com)
49 | Need Some Resources To Help Scale Up My Data Mining.
50 |
51 |
52 | [会 Python? Byzantium 项目需要你!](http://www.reddit.com/r/Python/comments/1spfvg/know_python_project_byzantium_needs_your_help/) (reddit.com)
53 | Know Python? Project Byzantium Needs Your Help!
54 |
55 |
56 | ## 项目
57 |
58 | - [DissidentX](https://github.com/bramcohen/DissidentX) (github.com)
59 |
60 | Bram Cohen 发布的一种 Censorship resistance 工具,能将图形编码文件中.
61 |
62 |
63 |
64 | - [MIDAS](https://github.com/etsy/MIDAS) (github.com)
65 |
66 | 用以专发 Mac 上入侵分析系统的框架.
67 |
68 |
69 | - [bamboo](https://github.com/SEL-Columbia/bamboo) (github.com)
70 |
71 | 简化的实时数据分析应用.
72 | bammboo 支持通过界面对动态数据进行 合并,聚集,加入代数计算.
73 |
74 |
75 |
76 | - [telegraphy](https://github.com/machinalis/telegraphy/) (github.com)
77 |
78 | Telegraphy
79 | 为 WSGI 应用提供了各种实时的附加功能,
80 | 例如: 事件过滤,订阅的持久化,授权/认证...
81 | 求试用!
82 |
83 | - [timesched](https://github.com/mitsuhiko/timesched) (github.com)
84 |
85 | 这是 daemontools 的工具接口.
86 | 能工作在 Windows 以及所有 Python 能跑的系统中,
87 | 包含完善的测试, 并不需要安装专用编译器.
88 |
89 | - [timesched](https://github.com/mitsuhiko/timesched) (github.com)
90 |
91 | 简洁的日历应用,
92 | 对于在 Python 中想使用 Angular.js 以及时区控制的,值得一试.
93 |
94 |
95 |
96 | - [dejavu](https://github.com/worldveil/dejavu) (github.com)
97 |
98 | 是否想知道 Shazam 怎么工作的?
99 | `音频指纹识别` 算法已经在 Python 中实现!
100 |
101 |
102 |
103 | ## 文章
104 |
105 | - [在日志中增加堆栈跟踪消息](http://blog.ionelmc.ro/2013/12/10/adding-stacktraces-to-log-messages/) (ionelmc.ro)
106 |
107 |
108 | - [高级正则表达式技巧/技术](http://pypix.com/tools-and-tips/advanced-regular-expression-tips-techniques/)(pypix.com)
109 |
110 | 正则表达式对于多数人是混沌的,
111 | 看看这篇文章,学习一些高级技巧.
112 |
113 | - [用Python 构建渐变色](http://bensouthgate.com/p/12_3_13.php) (bensouthgate.com)
114 |
115 | 想知道怎么用 Python 以脚本形式来创建渐变色的话,
116 | 学习这篇带有示例代码的好文章吧!
117 |
118 |
119 | - [在Flask中 用Mock 和 Nose 进行测试 ](http://blog.safaribooksonline.com/2013/12/05/flask-with-mock-and-nose/)(safaribooksonline.com)
120 |
121 | 一篇伟大的教程,
122 | 教会你如何开始使用 Nose 测试 FLask 应用,
123 | 并有对 Mock 的良好介绍.
124 |
125 |
126 | - [改进你的Python: 理解单元测试](http://jeffknupp.com/blog/2013/12/09/improve-your-python-understanding-unit-testing/) (jeffknupp.com)
127 |
128 | 梦幻般的好文章!
129 | 如果你在寻求测试水平的突破,从这儿开始!
130 |
131 | - [厨房中的自然语言处理](http://datadesk.latimes.com/posts/2013/12/natural-language-processing-in-the-kitchen/) (latimes.com)
132 |
133 | 洛杉矶时报,
134 | 已经结合入了 假日版加州菜谱 在界面上.
135 |
136 | 这是用Python 的自然语言处理技术达成的,
137 | 详细请参看文章以及示例代码.
138 |
139 |
140 | - [加速 Django](https://syerram.silvrback.com/make-django-fasssst) (silvrback.com)
141 | 月经文了...
142 |
143 |
144 | # 是也乎
145 |
146 | - 131216 [Zoom.Quiet](http://zoomquiet.org/) 用时 42 分钟 完成快译.
147 | - 131216 [Zoom.Quiet](http://zoomquiet.org/) 用时 7 分钟 完成格式转抄.
148 |
149 |
--------------------------------------------------------------------------------
/content/Issue/issue-003.md:
--------------------------------------------------------------------------------
1 | Title: Issue 3 ~ 努力编程
2 | Date: 2012-03-03
3 | Tags: Weekly,Pycoder,Zh
4 | Slug: issue-3
5 | # Hi Pythonistas.
6 |
7 | 本周的 PyCoder's Weekly 由 [SWIX](http://swixhq.com/) 盛情赞助.
8 |
9 | 让我们开始吧,本周的关注热点有:使用 Python 进行 iOS 开发, Python 3 的一些新的改进等等.
10 |
11 | 我们保证下周的时候你们就能在直接在网站上看到之前所有的周刊了,我们刚刚结束了存档页面的设计. 同时,像往常一样,欢迎给我们提建议,直接回复这封邮件就行了.
12 |
13 | 把我们 分享 给你的朋友吧!
14 |
15 |
16 | Enjoy!
17 |
18 |
19 | --
20 | [Mahdi](https://twitter.com/#!/myusuf3) and [Mike](https://twitter.com/#!/mgrouchy)
21 |
22 | 原文: [Pycoder's Weekly (Issue #3) : Code Hard](http://us4.campaign-archive2.com/?u=9735795484d2e4c204da82a29&id=3fc88c3249)
23 |
24 |
25 | ## 新闻与开发动态
26 |
27 | - [What's New Celery 2.5](http://docs.celeryproject.org/en/latest/whatsnew-2.5.html)
28 | 任务队列管理库 Celery 在本周发布了新版本,去试试新功能吧!
29 |
30 | - [AppEngine Python 2.7](http://googleappengine.blogspot.in/2012/02/announcing-general-availability-of.html)
31 | Python 2.7 运行时终于摘掉了 Beta 的帽子,从实验室毕业了,同时还支持多个流行库(比如 PIL,numpy,lxml 等等),是时候去折腾下GAE了!
32 |
33 |
34 | ## 讨论
35 |
36 | - [Haskell 与 Python 哪个代码可读性更高?](http://www.reddit.com/r/programming/comments/q80nh/haskell_python_and_readability/)
37 | 关于 Python 与 Haskell 代码可读性的讨论非常激烈. 最近有人在 Github 上发了一篇文章,分别用 Haskell 与 Python 实现了一个基于 Trie 树的自动补全程序,这个讨论值得一看.
38 |
39 | - [Python 3 即将支持 Unicode 标示符](http://mail.python.org/pipermail/python-dev/2012-February/116995.html)
40 | Guido 批准在 Python 3 中提供 Unicode 标识符的功能,详细信息请在 PEP 414 中查看.
41 |
42 |
43 |
44 |
45 | ## 项目
46 |
47 | - [Python 学习测验](http://www.bythemark.com/products/quiz-learn-python/)
48 | 这是一个非常有爱 iOS应用,用来检测你的 Python 知识,这个应用是为那些想去学习 Python 的人所设计的.
49 |
50 | - [Travis CI 宣布支持 Python 程序](http://about.travis-ci.org/blog/announcing_python_and_perl_support_on_travis_ci/)
51 |
52 | 首先普及一下知识, Travis CI 是一个基于云的持续集成项目,就像 Jenkins 那样的. Travis 是最近才出现的新项目,现在他已经能够完美支持 Python 项目了. 最近我们试用了下,偶尔会出现一些小问题但是基本上还是不错的.
53 |
54 |
55 |
56 | ## 文章
57 |
58 | - [Python For iOS](http://pythonforios.com/)
59 | 这是 iOS 平台上的一个非常简洁的 Python IDE,不管你想用它来干啥,这个东西真的是酷!毙!了!Python for iOS 拥有完整的解释器,代码编辑器以及文档浏览器. 快用你的 iPad 试试这个东西吧~
60 |
61 | - [微框架 Django](http://pycoders-weekly-chinese.readthedocs.org/en/latest/issue3/django-micro-framework.html)
62 | 这是一篇很棒的文章,我们喜欢 Django,但是我们经常不理解为什么很多人觉得 Django 对于小项目来说太笨重了,Software Maniacs 解决了这个问题,让 Django 也能灵活适用于一些小项目,读读看吧,或许会改变你对 Django 的看法.
63 |
64 | - [Python 应用程序包](http://pycoders-weekly-chinese.readthedocs.org/en/latest/issue3/python-application-package.html)
65 | 对于 Python 的包分发方式一直有很多的讨论,在这篇文章里 Ian 简单勾勒出了未来的应用开发与部署方案.
66 |
67 | - [httpie](https://github.com/jkbr/httpie)
68 | 这个东西真的很酷, httpie 是一个用 Python 写的类似 cURL 的程序,实际上他只是一个对于 python-request 的包装. 基本你能用 cURL 做的事情它都可以做,而且实现方式比 cURL 更加优美,还有各种代码高亮,以及更多的牛逼功能,赶快把它加到你的工具库里面吧.
69 |
70 | - [脚本语言横向比较](http://hyperpolyglot.org/scripting)
71 | 这是一篇非常完整的关于在不同的语言中实现一种功能的比较报告,这个表格包含了很多代码片段,从显示语言版本到处理文件,无所不包.
72 |
73 | - [用 Trie 树实现你自己的自动补全程序](http://v1v3kn.tumblr.com/post/18238156967/roll-your-own-autocomplete-solution-using-tries)
74 | 想知道自动补全功能是怎么做出来的么,读一下这篇文章你就知道了,这篇文章利用 Python 实现了一个类似 Google 搜索建议的自动补全程序,利用 Python 代码很清晰的展示出了 Trie 树是如何工作的. 读完这篇文章后或许你可以看看 Trie 树的维基百科条目.
75 |
76 | - [PyCon 会议手机版指南](http://guidebook.com/g/pycon2012/)
77 | 要参加今年位于米帝的 PyCon 会议么? 今年的 PyCon US 提供了一个手机版的指南,提供 iOS Android 两种版本,你可以利用这个应用查询今年会议的时刻表,查看会场地图,向大会反馈意见等等.
78 |
79 | - [Clojure 的纯 Python 实现](https://github.com/halgari/clojure-py)
80 | 这是一个很有意思的项目,作者认为静态虚拟机对于动态语言来说是非常不合适的,所以他开发了一个用纯 Python 编写的 Clojure 实现以让人们相信虚拟机可以拥有更好的性能,正如 pypy 那样. 这个项目的发展方向很令人期待.
81 |
82 | - [Python 的闭包和装饰器](http://pycoders-weekly-chinese.readthedocs.org/en/latest/issue3/python-closures-and-decorators.html)
83 | @fhaard 写的这一系列文章对 Python 的装饰器做了一个非常系统的解析,如果你想学习或复习关于 Python 装饰器的东西,可以看看这篇文章.
84 |
85 | - [AST 模块:用 Python 修改 Python 代码](http://pycoders-weekly-chinese.readthedocs.org/en/latest/issue3/static-modification-of-python-with-python-the-ast-module.html)
86 |
87 | 这是一篇关于如何使用 Pyhton 的 AST 模块对 Python 代码进行静态分析和修改的文章. 它同时也介绍了关于 CPython 的编译过程以及修改 AST 树的工作过程. 在这篇文章的最后,还有一个很有价值的 PyCon 演讲视频,来看看吧!
88 |
89 |
90 | # 是也乎
91 |
92 | 转自: [issue 3: Code Hard — PyCoder's Weelky CN](http://pycoders-weekly-chinese.readthedocs.org/en/latest/issue3/index.html)
93 |
--------------------------------------------------------------------------------
/_themes/pelican-bootstrap3/static/css/pygments/emacs.css:
--------------------------------------------------------------------------------
1 | .codehilite .hll { background-color: #ffffcc }
2 | .codehilite .c { color: #008800; font-style: italic } /* Comment */
3 | .codehilite .err { border: 1px solid #FF0000 } /* Error */
4 | .codehilite .k { color: #AA22FF; font-weight: bold } /* Keyword */
5 | .codehilite .o { color: #666666 } /* Operator */
6 | .codehilite .cm { color: #008800; font-style: italic } /* Comment.Multiline */
7 | .codehilite .cp { color: #008800 } /* Comment.Preproc */
8 | .codehilite .c1 { color: #008800; font-style: italic } /* Comment.Single */
9 | .codehilite .cs { color: #008800; font-weight: bold } /* Comment.Special */
10 | .codehilite .gd { color: #A00000 } /* Generic.Deleted */
11 | .codehilite .ge { font-style: italic } /* Generic.Emph */
12 | .codehilite .gr { color: #FF0000 } /* Generic.Error */
13 | .codehilite .gh { color: #000080; font-weight: bold } /* Generic.Heading */
14 | .codehilite .gi { color: #00A000 } /* Generic.Inserted */
15 | .codehilite .go { color: #808080 } /* Generic.Output */
16 | .codehilite .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
17 | .codehilite .gs { font-weight: bold } /* Generic.Strong */
18 | .codehilite .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
19 | .codehilite .gt { color: #0040D0 } /* Generic.Traceback */
20 | .codehilite .kc { color: #AA22FF; font-weight: bold } /* Keyword.Constant */
21 | .codehilite .kd { color: #AA22FF; font-weight: bold } /* Keyword.Declaration */
22 | .codehilite .kn { color: #AA22FF; font-weight: bold } /* Keyword.Namespace */
23 | .codehilite .kp { color: #AA22FF } /* Keyword.Pseudo */
24 | .codehilite .kr { color: #AA22FF; font-weight: bold } /* Keyword.Reserved */
25 | .codehilite .kt { color: #00BB00; font-weight: bold } /* Keyword.Type */
26 | .codehilite .m { color: #666666 } /* Literal.Number */
27 | .codehilite .s { color: #BB4444 } /* Literal.String */
28 | .codehilite .na { color: #BB4444 } /* Name.Attribute */
29 | .codehilite .nb { color: #AA22FF } /* Name.Builtin */
30 | .codehilite .nc { color: #0000FF } /* Name.Class */
31 | .codehilite .no { color: #880000 } /* Name.Constant */
32 | .codehilite .nd { color: #AA22FF } /* Name.Decorator */
33 | .codehilite .ni { color: #999999; font-weight: bold } /* Name.Entity */
34 | .codehilite .ne { color: #D2413A; font-weight: bold } /* Name.Exception */
35 | .codehilite .nf { color: #00A000 } /* Name.Function */
36 | .codehilite .nl { color: #A0A000 } /* Name.Label */
37 | .codehilite .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */
38 | .codehilite .nt { color: #008000; font-weight: bold } /* Name.Tag */
39 | .codehilite .nv { color: #B8860B } /* Name.Variable */
40 | .codehilite .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */
41 | .codehilite .w { color: #bbbbbb } /* Text.Whitespace */
42 | .codehilite .mf { color: #666666 } /* Literal.Number.Float */
43 | .codehilite .mh { color: #666666 } /* Literal.Number.Hex */
44 | .codehilite .mi { color: #666666 } /* Literal.Number.Integer */
45 | .codehilite .mo { color: #666666 } /* Literal.Number.Oct */
46 | .codehilite .sb { color: #BB4444 } /* Literal.String.Backtick */
47 | .codehilite .sc { color: #BB4444 } /* Literal.String.Char */
48 | .codehilite .sd { color: #BB4444; font-style: italic } /* Literal.String.Doc */
49 | .codehilite .s2 { color: #BB4444 } /* Literal.String.Double */
50 | .codehilite .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */
51 | .codehilite .sh { color: #BB4444 } /* Literal.String.Heredoc */
52 | .codehilite .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */
53 | .codehilite .sx { color: #008000 } /* Literal.String.Other */
54 | .codehilite .sr { color: #BB6688 } /* Literal.String.Regex */
55 | .codehilite .s1 { color: #BB4444 } /* Literal.String.Single */
56 | .codehilite .ss { color: #B8860B } /* Literal.String.Symbol */
57 | .codehilite .bp { color: #AA22FF } /* Name.Builtin.Pseudo */
58 | .codehilite .vc { color: #B8860B } /* Name.Variable.Class */
59 | .codehilite .vg { color: #B8860B } /* Name.Variable.Global */
60 | .codehilite .vi { color: #B8860B } /* Name.Variable.Instance */
61 | .codehilite .il { color: #666666 } /* Literal.Number.Integer.Long */
62 |
--------------------------------------------------------------------------------
/_themes/pelican-bootstrap3/static/css/pygments/friendly.css:
--------------------------------------------------------------------------------
1 | .codehilite .hll { background-color: #ffffcc }
2 | .codehilite .c { color: #60a0b0; font-style: italic } /* Comment */
3 | .codehilite .err { border: 1px solid #FF0000 } /* Error */
4 | .codehilite .k { color: #007020; font-weight: bold } /* Keyword */
5 | .codehilite .o { color: #666666 } /* Operator */
6 | .codehilite .cm { color: #60a0b0; font-style: italic } /* Comment.Multiline */
7 | .codehilite .cp { color: #007020 } /* Comment.Preproc */
8 | .codehilite .c1 { color: #60a0b0; font-style: italic } /* Comment.Single */
9 | .codehilite .cs { color: #60a0b0; background-color: #fff0f0 } /* Comment.Special */
10 | .codehilite .gd { color: #A00000 } /* Generic.Deleted */
11 | .codehilite .ge { font-style: italic } /* Generic.Emph */
12 | .codehilite .gr { color: #FF0000 } /* Generic.Error */
13 | .codehilite .gh { color: #000080; font-weight: bold } /* Generic.Heading */
14 | .codehilite .gi { color: #00A000 } /* Generic.Inserted */
15 | .codehilite .go { color: #808080 } /* Generic.Output */
16 | .codehilite .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */
17 | .codehilite .gs { font-weight: bold } /* Generic.Strong */
18 | .codehilite .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
19 | .codehilite .gt { color: #0040D0 } /* Generic.Traceback */
20 | .codehilite .kc { color: #007020; font-weight: bold } /* Keyword.Constant */
21 | .codehilite .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */
22 | .codehilite .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */
23 | .codehilite .kp { color: #007020 } /* Keyword.Pseudo */
24 | .codehilite .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */
25 | .codehilite .kt { color: #902000 } /* Keyword.Type */
26 | .codehilite .m { color: #40a070 } /* Literal.Number */
27 | .codehilite .s { color: #4070a0 } /* Literal.String */
28 | .codehilite .na { color: #4070a0 } /* Name.Attribute */
29 | .codehilite .nb { color: #007020 } /* Name.Builtin */
30 | .codehilite .nc { color: #0e84b5; font-weight: bold } /* Name.Class */
31 | .codehilite .no { color: #60add5 } /* Name.Constant */
32 | .codehilite .nd { color: #555555; font-weight: bold } /* Name.Decorator */
33 | .codehilite .ni { color: #d55537; font-weight: bold } /* Name.Entity */
34 | .codehilite .ne { color: #007020 } /* Name.Exception */
35 | .codehilite .nf { color: #06287e } /* Name.Function */
36 | .codehilite .nl { color: #002070; font-weight: bold } /* Name.Label */
37 | .codehilite .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */
38 | .codehilite .nt { color: #062873; font-weight: bold } /* Name.Tag */
39 | .codehilite .nv { color: #bb60d5 } /* Name.Variable */
40 | .codehilite .ow { color: #007020; font-weight: bold } /* Operator.Word */
41 | .codehilite .w { color: #bbbbbb } /* Text.Whitespace */
42 | .codehilite .mf { color: #40a070 } /* Literal.Number.Float */
43 | .codehilite .mh { color: #40a070 } /* Literal.Number.Hex */
44 | .codehilite .mi { color: #40a070 } /* Literal.Number.Integer */
45 | .codehilite .mo { color: #40a070 } /* Literal.Number.Oct */
46 | .codehilite .sb { color: #4070a0 } /* Literal.String.Backtick */
47 | .codehilite .sc { color: #4070a0 } /* Literal.String.Char */
48 | .codehilite .sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */
49 | .codehilite .s2 { color: #4070a0 } /* Literal.String.Double */
50 | .codehilite .se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */
51 | .codehilite .sh { color: #4070a0 } /* Literal.String.Heredoc */
52 | .codehilite .si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */
53 | .codehilite .sx { color: #c65d09 } /* Literal.String.Other */
54 | .codehilite .sr { color: #235388 } /* Literal.String.Regex */
55 | .codehilite .s1 { color: #4070a0 } /* Literal.String.Single */
56 | .codehilite .ss { color: #517918 } /* Literal.String.Symbol */
57 | .codehilite .bp { color: #007020 } /* Name.Builtin.Pseudo */
58 | .codehilite .vc { color: #bb60d5 } /* Name.Variable.Class */
59 | .codehilite .vg { color: #bb60d5 } /* Name.Variable.Global */
60 | .codehilite .vi { color: #bb60d5 } /* Name.Variable.Instance */
61 | .codehilite .il { color: #40a070 } /* Literal.Number.Integer.Long */
62 |
--------------------------------------------------------------------------------
/content/Issue/issue-008.md:
--------------------------------------------------------------------------------
1 | Title: Issue 8 ~ 蠎之禅
2 | Date: 2012-04-06
3 | Tags: Weekly,Pycoder,Zh
4 | Slug: issue-8
5 | # Hi Pythonistas.
6 |
7 |
8 | 首家赞助商已落实!
9 | 正如大家所知, MailChimp 不便宜,
10 | 特别是我们的订阅量增长这么快!
11 | 所以,我们必须采取措施确保收支平衡,
12 | 因此决定启动赞助机制.
13 | 赞助方,必须是在Python 社区有突出信誉的公司.
14 |
15 | 嵌入的广告必须是清雅的, 不显眼的,
16 | 内容必须完全由我们自行策划, 而且一直这样.
17 |
18 | 如果针对赞助商,还有什么问题/意见,请回复邮件说明.
19 |
20 | RSS 和归档在
21 | [这儿](http://feeds.feedburner.com/pycodersweekly)
22 | , 以及
23 | [这儿](http://pycoders.com/archive.html)
24 | .
25 |
26 |
27 | 成为巾帼或英雄, 作对的事儿, 要Follow
28 | [@pycoders](http://twitter.com/pycoders)
29 | 如果你还不明白当期标题的含义,
30 | 进入命令行输入
31 |
32 | python -m this
33 |
34 |
35 |
36 | Enjoy!
37 |
38 |
39 | --
40 | [Mahdi](https://twitter.com/#!/myusuf3) and [Mike](https://twitter.com/#!/mgrouchy)
41 |
42 | 原文: [Pycoder's Weekly (Issue #8) : Zen of Python](http://us4.campaign-archive2.com/?u=9735795484d2e4c204da82a29&id=454b9dc99c)
43 |
44 |
45 | ## 新闻与开发动态
46 |
47 | - [Circus 0.2 发布ed](http://pypi.python.org/pypi/circus/0.2)
48 | Circus 是类似 supervisord 的进程监管工具,
49 | 现已发布0.1 版本,
50 | 项目很有意思,由
51 | [@tarek_zaide](http://twitter.com/#!/tarek_ziade)
52 | 以及
53 | [benoitc](http://twitter.com/#!/benoitc)
54 | 创建
55 |
56 |
57 | - [rauth](https://github.com/litl/rauth)
58 | 恨写一遍又一遍相同的OAuth的代码吧?!
59 | 这儿是来自 LITL
60 | 包含完全测试的模块,
61 | 目测,这事儿可以了了!
62 |
63 |
64 |
65 | ## 讨论
66 | - [字串重排的最佳方式?](http://www.reddit.com/r/Python/comments/rm3ii/whats_the_best_way_to_reorder_strings/)
67 |
68 | 这是在 rediit
69 | [/r/python](http://reddit.com/r/python)
70 | 频道引发的一个伟大的讨论,
71 | 有关对字符串排序以及重新的最好方式,
72 | 以及在 Python 中如何得到各种排列组合,
73 | 包含大量的神奇代码,相当深入的对 itertools 的使用经验,
74 | 值得关注.
75 |
76 | - [Python中最困难的?!](http://www.jeffknupp.com/blog/2012/03/31/pythons-hardest-problem/)
77 | 过去十年, 没有任何讨论能同时引发新手以及专家一置的挫折以及好奇.
78 | 这就是 全局锁!
79 | 相关文章,此篇甚佳, 评注也异常有料!
80 |
81 |
82 |
83 | ## 项目
84 |
85 | - [Django Sampler](https://github.com/colinhowe/djangosampler)
86 | 引自仓库:"Django Sampler
87 | 允许对你的查询(SQL, Mongo,等)进行取样,给出慢执行.
88 | 并成组的指出在你的代码中哪里引发的查询.
89 | "
90 | 目前支持:
91 | Django SQL, Django Requests, Celery and MongoDB.
92 |
93 |
94 |
95 | - [Melopy](http://prezjordan.github.com/Melopy/)
96 | 玩弄声音的Python 库!
97 | 是对音乐发烧友梦想中的好物!
98 | 通过简单的代码,支持对声音播放/渲染 等等操作,
99 | 作出你自个儿的音乐!
100 |
101 |
102 | - [DCPU16py](https://github.com/jtauber/dcpu16py)
103 | 名为
104 | [0x10c](http://0x10c.com/)
105 | 的工具,能在Notch的新游戏 中设计船舶,
106 | 虽然只能给每种船提供少数模拟资源,
107 | 但是
108 | [James Tauber](https://twitter.com/#!/jtauber)
109 | 以前折腾过类似的模拟器,所以,这次很容易的整了出来.
110 |
111 | ## 文章
112 |
113 | - [回调是数据过程的抽象](http://dreid.org/2012/03/30/deferreds-are-a-dataflow-abstraction/)
114 | 有趣的文章,
115 | 讨论如何使用 JavaScript 中的回调方式,
116 | 在 Python(
117 | 具体是[Twisted](http://twistedmatrix.com/trac/)
118 | )中实现, 并使代码简洁,易读,好测试!
119 |
120 |
121 |
122 | - [对运行中的 Python 和 Django 进行标记以及追踪](http://www.saltycrane.com/blog/2011/06/notes-tracing-code-execution-django-python/)
123 | 文章就如何使用
124 | [trace](http://docs.python.org/library/trace.html)
125 | 来追踪Django 的执行
126 | 给出了一些注意事项,
127 | 还通过 [Django Plugin](https://github.com/saltycrane/django-trace)
128 | 提供了额外的管理命令,
129 | 来对 Django 项目进行执行跟踪!
130 |
131 |
132 |
133 | - [Python HTTP的未来](http://kennethreitz.com/the-future-of-python-http.html)
134 | [Kenneth Reitz](http://twitter.com/#!/kennethreitz)
135 | 探讨了Python 进行HTTP 响应的特性,
136 | 以及如何接入
137 | [Werkzeug](http://werkzeug.pocoo.org/)
138 | .
139 | 未来可以共享的核心 HTTP 库,
140 | 已经启动有关仓库在
141 | [here](https://github.com/core)
142 | .
143 |
144 |
145 | - [Python中的计数](http://rhodesmill.org/brandon/2012/counting-without-counting/)
146 | 非常有趣的讨论,
147 | 有关如何在Python 的通用循环体中,
148 | 使用 range() 或 xrange(),
149 | 甚至执行体本身并不需要这种整数.
150 | 作者探讨了其它可实现相同目标的选择,逐一讨论,
151 | 对比.
152 |
153 |
154 |
155 | - [Python objects, types, classes and Instances - 辞汇](http://eli.thegreenplace.net/2012/03/30/python-objects-types-classes-and-instances-a-glossary/)
156 | 继 [Python 可调用的内因](http://eli.thegreenplace.net/2012/03/23/python-internals-how-callables-work/)
157 | 之后,
158 | 作者对以往讨论的各种内部机制,进行了梳理,
159 | 重新说明了各种条目的含义,
160 | 对以往文章关注的朋友,这篇必须认真读哈!
161 |
162 |
163 | # 是也乎
164 |
165 | - 131020 [Zoom.Quiet](http://zoomquiet.org/) 用时42分钟完成快译.
166 |
--------------------------------------------------------------------------------
/_themes/pelican-bootstrap3/static/css/pygments/default.css:
--------------------------------------------------------------------------------
1 | .codehilite .hll { background-color: #ffffcc }
2 | .codehilite { background: #f8f8f8; }
3 | .codehilite .c { color: #408080; font-style: italic } /* Comment */
4 | .codehilite .err { border: 1px solid #FF0000 } /* Error */
5 | .codehilite .k { color: #008000; font-weight: bold } /* Keyword */
6 | .codehilite .o { color: #666666 } /* Operator */
7 | .codehilite .cm { color: #408080; font-style: italic } /* Comment.Multiline */
8 | .codehilite .cp { color: #BC7A00 } /* Comment.Preproc */
9 | .codehilite .c1 { color: #408080; font-style: italic } /* Comment.Single */
10 | .codehilite .cs { color: #408080; font-style: italic } /* Comment.Special */
11 | .codehilite .gd { color: #A00000 } /* Generic.Deleted */
12 | .codehilite .ge { font-style: italic } /* Generic.Emph */
13 | .codehilite .gr { color: #FF0000 } /* Generic.Error */
14 | .codehilite .gh { color: #000080; font-weight: bold } /* Generic.Heading */
15 | .codehilite .gi { color: #00A000 } /* Generic.Inserted */
16 | .codehilite .go { color: #808080 } /* Generic.Output */
17 | .codehilite .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
18 | .codehilite .gs { font-weight: bold } /* Generic.Strong */
19 | .codehilite .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
20 | .codehilite .gt { color: #0040D0 } /* Generic.Traceback */
21 | .codehilite .kc { color: #008000; font-weight: bold } /* Keyword.Constant */
22 | .codehilite .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */
23 | .codehilite .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */
24 | .codehilite .kp { color: #008000 } /* Keyword.Pseudo */
25 | .codehilite .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */
26 | .codehilite .kt { color: #B00040 } /* Keyword.Type */
27 | .codehilite .m { color: #666666 } /* Literal.Number */
28 | .codehilite .s { color: #BA2121 } /* Literal.String */
29 | .codehilite .na { color: #7D9029 } /* Name.Attribute */
30 | .codehilite .nb { color: #008000 } /* Name.Builtin */
31 | .codehilite .nc { color: #0000FF; font-weight: bold } /* Name.Class */
32 | .codehilite .no { color: #880000 } /* Name.Constant */
33 | .codehilite .nd { color: #AA22FF } /* Name.Decorator */
34 | .codehilite .ni { color: #999999; font-weight: bold } /* Name.Entity */
35 | .codehilite .ne { color: #D2413A; font-weight: bold } /* Name.Exception */
36 | .codehilite .nf { color: #0000FF } /* Name.Function */
37 | .codehilite .nl { color: #A0A000 } /* Name.Label */
38 | .codehilite .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */
39 | .codehilite .nt { color: #008000; font-weight: bold } /* Name.Tag */
40 | .codehilite .nv { color: #19177C } /* Name.Variable */
41 | .codehilite .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */
42 | .codehilite .w { color: #bbbbbb } /* Text.Whitespace */
43 | .codehilite .mf { color: #666666 } /* Literal.Number.Float */
44 | .codehilite .mh { color: #666666 } /* Literal.Number.Hex */
45 | .codehilite .mi { color: #666666 } /* Literal.Number.Integer */
46 | .codehilite .mo { color: #666666 } /* Literal.Number.Oct */
47 | .codehilite .sb { color: #BA2121 } /* Literal.String.Backtick */
48 | .codehilite .sc { color: #BA2121 } /* Literal.String.Char */
49 | .codehilite .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */
50 | .codehilite .s2 { color: #BA2121 } /* Literal.String.Double */
51 | .codehilite .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */
52 | .codehilite .sh { color: #BA2121 } /* Literal.String.Heredoc */
53 | .codehilite .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */
54 | .codehilite .sx { color: #008000 } /* Literal.String.Other */
55 | .codehilite .sr { color: #BB6688 } /* Literal.String.Regex */
56 | .codehilite .s1 { color: #BA2121 } /* Literal.String.Single */
57 | .codehilite .ss { color: #19177C } /* Literal.String.Symbol */
58 | .codehilite .bp { color: #008000 } /* Name.Builtin.Pseudo */
59 | .codehilite .vc { color: #19177C } /* Name.Variable.Class */
60 | .codehilite .vg { color: #19177C } /* Name.Variable.Global */
61 | .codehilite .vi { color: #19177C } /* Name.Variable.Instance */
62 | .codehilite .il { color: #666666 } /* Literal.Number.Integer.Long */
63 |
--------------------------------------------------------------------------------
/content/Issue/issue-087.md:
--------------------------------------------------------------------------------
1 | Title: Issue 87 ~ 感谢贡献
2 | Date: 2013-10-11
3 | Tags: Weekly,Pycoder,Zh
4 | Slug: issue-87
5 | ## Hi Pythonistas!
6 |
7 | Happy Thanksgiving to all our Canadian readers who will be celebrating this coming weekend.
8 | We have a great issue this week to get you ready for the weekend whether it is a holiday weekend for you or not.
9 |
10 |
11 |
12 | 想跟上所有 蠎界 新闻?
13 | [@pycoders](http://twitter.com/pycoders).
14 |
15 | 请用
16 | [Gittip](https://www.gittip.com/PycodersWeekly)
17 | 支持俺们吧!
18 |
19 | --
20 | [Mahdi](https://twitter.com/#!/myusuf3) and [Mike](https://twitter.com/#!/mgrouchy)
21 |
22 |
23 |
24 | 原文: [Pycoder's Weekly (Issue #87): Thanksgiving (CA)](http://eepurl.com/GPSyT)
25 |
26 |
27 | ## 新闻与开发动态
28 |
29 |
30 | - [Announcing the Pycon 2014 Keynotes](http://pycon.blogspot.ca/2013/10/announcing-keynotes-van-lindberg.html) (blogspot.ca)
31 |
32 |
33 |
34 | ## 讨论
35 |
36 |
37 | - [New to Python](http://www.reddit.com/r/Python/comments/1nsotj/new_to_python/) (reddit.com)
38 |
39 |
40 |
41 | ## 项目
42 |
43 | - [furl](https://github.com/gruns/furl) (github.com)
44 |
45 | This intends to make url manipulation simple. Has an easy to use api for accessing and updating url parameters, modifying url paths, dealing with url fragments and much more.
46 |
47 |
48 |
49 | - [csscompressor](https://github.com/sprymix/csscompressor) (github.com)
50 |
51 | Port of YUI CSS Compressor to Python.
52 |
53 |
54 | - [emacs-jedi](https://github.com/tkf/emacs-jedi) (github.com)
55 |
56 | If you are a vim user you may have seen jedi.vim, now for the emacs crowd we have jedi.el to provide you with Python autocompletion for emacs.
57 |
58 |
59 | - [dh-virtualenv](https://github.com/spotify/dh-virtualenv) (github.com)
60 |
61 | Combining Python virtualenvs with debian packages. Interesting idea, for more in depth details, check out the [blog post](http://labs.spotify.com/2013/10/10/packaging-in-your-packaging-dh-virtualenv/).
62 |
63 |
64 |
65 | - [lifelines](https://github.com/CamDavidsonPilon/lifelines) (github.com)
66 |
67 | [Survival analysis](http://en.wikipedia.org/wiki/Survival_analysis) in Python by the author of [Bayesian Methods for Hackers](https://github.com/CamDavidsonPilon/Probabilistic-Programming-and-Bayesian-Methods-for-Hackers).
68 |
69 |
70 | - [webtest-plus](https://github.com/sloria/webtest-plus) (github.com)
71 |
72 | An extension of WebTest with useful extras, including requests-style authentication and redirect following.
73 |
74 |
75 | ## 文章
76 |
77 |
78 | - [Mapping Data in Python with Pandas and Vincent](http://wrobstory.github.io/2013/10/mapping-data-python.html) (github.io)
79 |
80 | With the most recent release of Vincent, doing awesome stuff with maps is now possible checkout this blog post to see how.
81 |
82 | - [What's in Which Python 3?](http://nedbatchelder.com/blog/201310/whats_in_which_python_3.html) (nedbatchelder.com)
83 |
84 | Nice little summary of what features were included in which Python 3.
85 |
86 | - [Read and Write Video Frames in Python Using FFMPEG](http://zulko.github.io/blog/2013/09/27/read-and-write-video-frames-in-python-using-ffmpeg/) (github.io)
87 |
88 | This article shows how easy it is to read or write video frames with Python, by calling the external software FFMPEG through pipes. Worth the read if you are interested in video manipulation.
89 |
90 | - [Abstracting Control Flow](http://hackflow.com/blog/2013/10/08/abstracting-control-flow/) (hackflow.com)
91 |
92 | Nice thought experiment of an article. It discusses the advantages between composability and control flow. A bit extreme, but excellent thing to think about.
93 |
94 | - [Introduction Hardware Hacking Arduino](http://juliahgrace.com/intro-hardware-hacking-arduino.html) (juliahgrace.com)
95 |
96 | Interested in playing around with an Arduino and some Python to send a text message by the push of a button? Then look no further.
97 |
98 | - [Making a Multi-Branch Test Server](http://depressedoptimism.com/blog/2013/10/8/making-a-multi-branch-test-server) (depressedoptimism.com)
99 |
100 |
101 |
102 | # 是也乎
103 |
104 | - 1311?? [Zoom.Quiet](http://zoomquiet.org/) 用时42分钟完成翻译.
105 |
106 |
--------------------------------------------------------------------------------
/tasks.py:
--------------------------------------------------------------------------------
1 | __version__ = 'v.210526.1158'
2 | __author__ = 'Zoom.Quiet'
3 | __license__ = 'MIT@2021-05'
4 |
5 | import functools
6 | import os
7 |
8 | from invoke import task
9 |
10 | # from fabric.api import env, lcd, local, task
11 |
12 | # Local path configuration (can be absolute or relative to fabfile)
13 | env = {"input_path": 'content', "deploy_path": 'output'}
14 |
15 | SROOT = os.path.dirname(os.path.abspath(__file__))
16 | print(SROOT)
17 |
18 | @task
19 | def ver(c):
20 | '''echo crt. verions'''
21 | print('\n ~> powded by {} <~'.format(__version__))
22 |
23 | # support stuff func.
24 | def cd(c, path2, echo=True):
25 | os.chdir(path2)
26 | if echo:
27 | print('\n\t crt. PATH ===')
28 | c.run('pwd')
29 | c.run('echo \n')
30 |
31 | @task
32 | def build(c):
33 | print("\t>>> base Pelican build-out html")
34 | # c.run('pelican {input_path} -o {deploy_path} -s pelicanconf.py --debug'.format(**env))
35 | c.run('pelican {input_path} -o {deploy_path} -s pelicanconf.py '.format(**env))
36 |
37 |
38 | def serve(c):
39 | c.run('cd {deploy_path} && python -m SimpleHTTPServer'.format(**env))
40 |
41 |
42 | @task
43 | def reserve(c):
44 | build(c)
45 | serve(c)
46 |
47 |
48 | def gh_up(c):
49 | print("\t>>> git pu all .md update")
50 | c.run(
51 | 'pwd && '
52 | 'git st && '
53 | 'git add --all . && '
54 | 'git ci -am "push all new words for markdoc build" && '
55 | # 'git pu cafe gitcafe-page '
56 | 'git pu && '
57 | 'date '.format(**env)
58 | )
59 |
60 |
61 | def gh_pages(c):
62 | print("\t>>> jump-into gh-pages to publish results")
63 | # print(env['deploy_path'])
64 | cd(c, env['deploy_path'])
65 | c.run(
66 | 'git st && '
67 | 'git add --all . && '
68 | 'git ci -am "re-build from local by markdoc @MBP111216ZQ" && '
69 | # 'git pu cafe gitcafe-page '
70 | 'git pu && '
71 | 'date '.format(**env)
72 | )
73 | cd(c, SROOT)
74 |
75 |
76 | def pull_data(c):
77 | # cd(c, env['deploy_path'])
78 | print("\t>>> git pull all others doc.")
79 | c.run('git pull'.format(**env))
80 | cd(c, SROOT)
81 |
82 |
83 | @task
84 | def pub(c):
85 | pull_data(c)
86 | build(c)
87 | gh_up(c)
88 | # CNAME()
89 | gh_pages(c)
90 |
91 |
92 | '''
93 | env.deploy_7niu = '7niu'
94 | env.qiniu_bin = '/opt/bin/7niu_package_darwin_amd64/qrsync'
95 | env.qiniu_conf = '../7niu4pychina.json'
96 |
97 |
98 | def cd_app_root(func):
99 | app_root = os.path.dirname(os.path.realpath(__file__))
100 |
101 | @functools.wraps(func)
102 | def _to_app_root(*args, **kwargs):
103 | with lcd(app_root):
104 | return func(*args, **kwargs)
105 | return _to_app_root
106 |
107 | @task
108 | @cd_app_root
109 | def pub7niu():
110 | build7niu()
111 | local('pwd && '
112 | '{qiniu_bin} {qiniu_conf} && '
113 | 'date '.format(**env)
114 | )
115 | @task
116 | @cd_app_root
117 | def build7niu():
118 | local(
119 | 'pelican {input_path} -o {deploy_7niu} -s pelicanconf.py'.format(**env)
120 | )
121 |
122 | @task
123 | @cd_app_root
124 | def pub2cafe():
125 | build4cafe()
126 | local(
127 | 'cd {deploy_pages} && '
128 | 'pwd && '
129 | # 'git pu && '
130 | 'git add --all . && '
131 | # 'git st && '
132 | 'git ci -am "upgraded in local. @MBP111216ZQ" && '
133 | # 'git pu cafe gitcafe-page '
134 | 'git pu && '
135 | 'pwd '.format(**env)
136 | )
137 | @task
138 | @cd_app_root
139 | def build4cafe():
140 | local(
141 | 'pelican {input_path} -o {deploy_pages} -s pelicanconf.py'.format(**env)
142 | )
143 |
144 | @task
145 | @cd_app_root
146 | def serve():
147 | local('cd {deploy_path} && python -m SimpleHTTPServer'.format(**env))
148 | @task
149 | @cd_app_root
150 | def reserve():
151 | build()
152 | serve()
153 |
154 | @task
155 | def install_deps():
156 | local(
157 | 'pip install '
158 | 'beautifulsoup4 '
159 | 'Markdown '
160 | 'pelican'
161 | )
162 | '''
163 |
--------------------------------------------------------------------------------
/_plugins/extract_toc/README.md:
--------------------------------------------------------------------------------
1 | Extract Table of Content
2 | ========================
3 |
4 | A Pelican plugin to extract table of contents (ToC) from `article.content` and
5 | place it in its own `article.toc` variable for use in templates.
6 |
7 | Copyright (c) Talha Mansoor
8 |
9 | Author | Talha Mansoor
10 | ----------------|-----
11 | Author Email | talha131@gmail.com
12 | Author Homepage | http://onCrashReboot.com
13 | Github Account | https://github.com/talha131
14 |
15 |
16 | Acknowledgement
17 | ---------------
18 |
19 | Thanks to [Avaris](https://github.com/avaris) for going out of the way to help
20 | me fix Unicode issues and doing a thorough code review.
21 |
22 | Thanks to [gw0](http://gw.tnode.com/) for adding Pandoc reader support.
23 |
24 |
25 | Why do you need it?
26 | ===================
27 |
28 | Pelican can generate ToC of reST and Markdown files, using markup's respective
29 | directive and extension. Such ToC is generated and placed at the beginning of
30 | `article.content` like a string. Consequently it can not be placed anywhere
31 | else on the page (eg. `` HTML5 tag, in header, or at the end of your
32 | article's contents).
33 |
34 | To solve this problem, this plugin extracts ToC from `article.content` and
35 | places it in its own `article.toc` variable for use in templates.
36 |
37 |
38 | Requirements
39 | ============
40 |
41 | `extract_toc` requires BeautifulSoup.
42 |
43 | ```bash
44 | pip install beautifulsoup4
45 | ```
46 |
47 |
48 | How to Use
49 | ==========
50 |
51 | This plugin works by extracting the first occurrence of enclosed in:
52 |
53 | - `` for the default Markdown reader
54 | - `
` for the default reStructuredText reader
55 | - `` for the Pandoc reader
56 |
57 | If ToC appears in your article at more than one places, `extract_toc` will
58 | remove only the first occurrence. You shouldn't probably need to have multiple
59 | ToC in your article. In case you need to display it multiple times, you can
60 | print it via your template.
61 |
62 |
63 | Template example
64 | ----------------
65 |
66 | Add something like this to your Pelican templates if missing:
67 |
68 | ```python
69 | {% if article.toc %}
70 |
71 | {{ article.toc }}
72 |
73 | {% endif %}
74 | ```
75 |
76 |
77 | reStructuredText reader
78 | -----------------------
79 |
80 | To add a table of contents to your reStructuredText document (`.rst`) you need to add a `.. contents::` directive to its beginning. See the [docutils documentation](http://docutils.sourceforge.net/docs/ref/rst/directives.html#table-of-contents) for more details.
81 |
82 | ```rst
83 | My super title
84 | ##############
85 |
86 | :date: 2010-10-03
87 | :tags: thats, awesome
88 |
89 | .. contents::
90 | ..
91 | 1 Head 1
92 | 1.1 Head 2
93 | 2 Head 3
94 | 3 head 4
95 |
96 | Heading 1
97 | ---------
98 |
99 | Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa.
100 | ```
101 |
102 |
103 | Markdown reader
104 | ---------------
105 |
106 | To enable table of contents generation for the Markdown reader you need to set `MD_EXTENSIONS = (['toc'])` in your Pelican configuration file.
107 |
108 | To add a table of contents to your Markdown document (`.md`) you need to place the `[TOC]` marker to its beginning. See the [Python Markdown documentation](http://pythonhosted.org/Markdown/extensions/toc.html) for more details.
109 |
110 | ```markdown
111 | title: My super title
112 | date: 4-4-2013
113 | tags: thats, awesome
114 |
115 | [TOC]
116 |
117 | # Heading 1 #
118 |
119 | Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa.
120 | ```
121 |
122 |
123 | Pandoc reader
124 | -------------
125 |
126 | To enable table of contents generation for the Pandoc reader you need to set `PANDOC_ARGS = (['--toc', '--template=pandoc-template-toc'])` in your Pelican configuration file.
127 |
128 | Contents of the Pandoc template file `pandoc-template-toc.html5`:
129 |
130 | ```html
131 | $if(toc)$
132 |
133 | $toc$
134 |
135 | $endif$
136 | $body$
137 | ```
138 |
--------------------------------------------------------------------------------
/_themes/pelican-bootstrap3/static/css/pygments/manni.css:
--------------------------------------------------------------------------------
1 | .codehilite .hll { background-color: #ffffcc }
2 | .codehilite .c { color: #0099FF; font-style: italic } /* Comment */
3 | .codehilite .err { color: #AA0000; background-color: #FFAAAA } /* Error */
4 | .codehilite .k { color: #006699; font-weight: bold } /* Keyword */
5 | .codehilite .o { color: #555555 } /* Operator */
6 | .codehilite .cm { color: #0099FF; font-style: italic } /* Comment.Multiline */
7 | .codehilite .cp { color: #009999 } /* Comment.Preproc */
8 | .codehilite .c1 { color: #0099FF; font-style: italic } /* Comment.Single */
9 | .codehilite .cs { color: #0099FF; font-weight: bold; font-style: italic } /* Comment.Special */
10 | .codehilite .gd { background-color: #FFCCCC; border: 1px solid #CC0000 } /* Generic.Deleted */
11 | .codehilite .ge { font-style: italic } /* Generic.Emph */
12 | .codehilite .gr { color: #FF0000 } /* Generic.Error */
13 | .codehilite .gh { color: #003300; font-weight: bold } /* Generic.Heading */
14 | .codehilite .gi { background-color: #CCFFCC; border: 1px solid #00CC00 } /* Generic.Inserted */
15 | .codehilite .go { color: #AAAAAA } /* Generic.Output */
16 | .codehilite .gp { color: #000099; font-weight: bold } /* Generic.Prompt */
17 | .codehilite .gs { font-weight: bold } /* Generic.Strong */
18 | .codehilite .gu { color: #003300; font-weight: bold } /* Generic.Subheading */
19 | .codehilite .gt { color: #99CC66 } /* Generic.Traceback */
20 | .codehilite .kc { color: #006699; font-weight: bold } /* Keyword.Constant */
21 | .codehilite .kd { color: #006699; font-weight: bold } /* Keyword.Declaration */
22 | .codehilite .kn { color: #006699; font-weight: bold } /* Keyword.Namespace */
23 | .codehilite .kp { color: #006699 } /* Keyword.Pseudo */
24 | .codehilite .kr { color: #006699; font-weight: bold } /* Keyword.Reserved */
25 | .codehilite .kt { color: #007788; font-weight: bold } /* Keyword.Type */
26 | .codehilite .m { color: #FF6600 } /* Literal.Number */
27 | .codehilite .s { color: #CC3300 } /* Literal.String */
28 | .codehilite .na { color: #330099 } /* Name.Attribute */
29 | .codehilite .nb { color: #336666 } /* Name.Builtin */
30 | .codehilite .nc { color: #00AA88; font-weight: bold } /* Name.Class */
31 | .codehilite .no { color: #336600 } /* Name.Constant */
32 | .codehilite .nd { color: #9999FF } /* Name.Decorator */
33 | .codehilite .ni { color: #999999; font-weight: bold } /* Name.Entity */
34 | .codehilite .ne { color: #CC0000; font-weight: bold } /* Name.Exception */
35 | .codehilite .nf { color: #CC00FF } /* Name.Function */
36 | .codehilite .nl { color: #9999FF } /* Name.Label */
37 | .codehilite .nn { color: #00CCFF; font-weight: bold } /* Name.Namespace */
38 | .codehilite .nt { color: #330099; font-weight: bold } /* Name.Tag */
39 | .codehilite .nv { color: #003333 } /* Name.Variable */
40 | .codehilite .ow { color: #000000; font-weight: bold } /* Operator.Word */
41 | .codehilite .w { color: #bbbbbb } /* Text.Whitespace */
42 | .codehilite .mf { color: #FF6600 } /* Literal.Number.Float */
43 | .codehilite .mh { color: #FF6600 } /* Literal.Number.Hex */
44 | .codehilite .mi { color: #FF6600 } /* Literal.Number.Integer */
45 | .codehilite .mo { color: #FF6600 } /* Literal.Number.Oct */
46 | .codehilite .sb { color: #CC3300 } /* Literal.String.Backtick */
47 | .codehilite .sc { color: #CC3300 } /* Literal.String.Char */
48 | .codehilite .sd { color: #CC3300; font-style: italic } /* Literal.String.Doc */
49 | .codehilite .s2 { color: #CC3300 } /* Literal.String.Double */
50 | .codehilite .se { color: #CC3300; font-weight: bold } /* Literal.String.Escape */
51 | .codehilite .sh { color: #CC3300 } /* Literal.String.Heredoc */
52 | .codehilite .si { color: #AA0000 } /* Literal.String.Interpol */
53 | .codehilite .sx { color: #CC3300 } /* Literal.String.Other */
54 | .codehilite .sr { color: #33AAAA } /* Literal.String.Regex */
55 | .codehilite .s1 { color: #CC3300 } /* Literal.String.Single */
56 | .codehilite .ss { color: #FFCC33 } /* Literal.String.Symbol */
57 | .codehilite .bp { color: #336666 } /* Name.Builtin.Pseudo */
58 | .codehilite .vc { color: #003333 } /* Name.Variable.Class */
59 | .codehilite .vg { color: #003333 } /* Name.Variable.Global */
60 | .codehilite .vi { color: #003333 } /* Name.Variable.Instance */
61 | .codehilite .il { color: #FF6600 } /* Literal.Number.Integer.Long */
62 |
--------------------------------------------------------------------------------
/content/importpython/issue-004.md:
--------------------------------------------------------------------------------
1 | Title: 蠎加载 4
2 | Slug: importpython-4
3 | Date: 2014-10-16 23:32
4 | Tags: Weekly,ImportPython,Zh
5 |
6 | 
7 |
8 |
9 | 原文: [issue4](http://importpython.com/static/files/issue4.html)
10 |
11 | ## 发了
12 | ~ Just Out
13 |
14 | - [Visual Studio的Python工具2.1版本发布](https://pytools.codeplex.com/releases/view/109707)
15 |
16 | Python Tools for Visual Studio (PTVS)是一个Visual Studio的开源插件,用来支持Python语言的开发.
17 | PTVS 拥有一系列的功能,包括CPython/IronPython,编辑,智能提示,交互式调试,性能分析,Microsoft Azure,Ipython 和支持跨平台调试.
18 |
19 |
20 |
21 | ## 该读
22 | ~ 文章, Blog, 教程...
23 |
24 | - [PDF版Python快速参考手册](http://www.astro.up.pt/~sousasag/Python_For_Astronomers/Python_qr.pdf)
25 |
26 | 对于Python开发新手非常方面和有帮助的参考. 打印一份,好好利用吧
27 |
28 | - [Python装饰器和元类高级用法](http://lgiordani.com/blog/2014/10/14/decorators-and-metaclasses/) »
29 |
30 | 告诉你如何使用元类和装饰器来创建强大的class,这些class可以通过添加装饰器方法被继承和定制. Python3 的代码. (对大家提升非常有用啊)
31 |
32 | - [让你的Python Shell 大不相同](http://dlo.me/archives/2014/09/08/pythonrc/) »
33 |
34 | 你知道什么是 .pythonrc 吗? 阅读和定制你的Python shell. 是一个非常好的每日 python 生产力 hack.
35 |
36 | - [Python处理失败的HTTP请求指南](https://www.mobify.com/blog/http-requests-are-hard/) »
37 |
38 | 当你通过HTTP向远程服务器请求信息的时候会发生很多错误:请求超时, 服务器宕机, 或者是政府切断了海底光缆.
39 |
40 | - [怎样使用Django一键安装镜像](https://www.digitalocean.com/community/tutorials/how-to-use-the-django-one-click-install-image) »
41 |
42 | 在寻找新主机在部署你的新Django web应用?DigitalOcean 是性价比最好的之一,这里有一份他们的Django VPS镜像快速使用手册.
43 | 使用时注意配置好Django,Gunicorn,Nginx.
44 |
45 |
46 | ## 代码
47 | ~ 包/模块/库/片段...
48 |
49 | - [pritunl](https://github.com/pritunl/pritunl)
50 | - 338 Stars, Trending for 1 Day
51 |
52 | 企业级VPN服务
53 |
54 | - [fobi](http://pythonhosted.org/django-fobi/)
55 | - 5 Stars
56 |
57 | django-fobi(后来就叫fobi)是一个个定制化的, 模块化的,对开发者友好的Django应用构建器.
58 | fobi可以让你用直观的桌面(GUI)方式建立Django forms,保存或者用邮件发布你的数据. API允许构建自己的表单元素和表单处理器(处理所提交的表单数据的机制)
59 |
60 | - [PyDbLite](https://github.com/PierreQuentel/PyDbLite)
61 | - 4 Stars
62 |
63 | 快速的,纯Python的内存数据库引擎.
64 |
65 | - [asciinema-cli](https://github.com/asciinema/asciinema-cli)
66 | - 329 Stars, Trending for 2 Day
67 |
68 | asciinema.org 服务的命令行记录器. Screencasting 命令行.
69 | 查看demo -https://asciinema.org/ 看看吧,非常有用
70 |
71 | - [pydub](https://github.com/jiaaro/pydub)
72 | - 845 Stars, Trending for 3 Days
73 |
74 | 用简单和高级的接口操纵声音
75 |
76 | - [Django Smart Autoregister](http://paulocheque.github.io/django-smart-autoregister/)
77 | - 19 Stars
78 |
79 | 它是一个Django 工具,可以使用一些好的模式来自动配置django 应用中的ModelAdmin类.
80 |
81 | - [Scrap Google Results using selenium](https://github.com/DanMcInerney/search-google/blob/master/search-google.py)
82 |
83 | 用来拆解google搜索结果或者指定不拆解的小脚本,注意Google会对请求频率异常的IP进行封锁.
84 |
85 | - [Django-pushy.](https://github.com/rakanalh/django-pushy)
86 | - 49 Stars
87 |
88 | 使用celery 提供Python / Django app 推送通告的功能. 这个app的主要用途是上帮助你发送推送通知到一定规模的用户.
89 | 如果你有很多设备注册keys,django-pushy 可以把这些keys拆分成小组,然后并行发送,使得整个推送更快.
90 |
91 | - [Pyleus: An Open-source Framework for Building Storm Topologies in Pure Python](http://engineeringblog.yelp.com/2014/10/introducing-pyleus.html)
92 |
93 | Pyleus是一个新的开源框架,旨在为Storm(另一个开源Yelp project,对于Hadoop). 可以让开发者使用纯Python操作大规模数据,快速迭代,更多的时间来解决业务相关问题,更少的时间关心底层的平台.
94 |
95 |
96 | ## 社区儿
97 |
98 | - [US 2015 DjangoCon 招募志愿者 »](https://www.djangoproject.com/weblog/2014/oct/10/call-volunteers-djangocon-us-2015/)
99 |
100 | "如果你乐于助人,请加入DjangoCon组织的mailing list - https://groups.google.com/group/djangocon-organizers 让大家知道你是多么热心"
101 |
102 | ## 讨论
103 |
104 | - [在学校教学Python遇到的问题 »](http://www.reddit.com/r/Python/comments/2j0rl3/problems_with_teaching_python_in_school/)
105 |
106 | 一个老师分享了他每天在学校教学Python的挑战. reddit上很有教育的讨论.
107 |
108 | - [\#PyConIE »](https://twitter.com/hashtag/PyConIE?src=hash)
109 |
110 | Pycon Ireland @pyconireland 举办了他们的 2014 Pycon. 上tweets看看他们做了啥吧
111 |
112 | # 是也乎
113 |
114 | ~ 参考: [为毛又一个蠎周刊?](importpython-why)
115 |
116 | - 150123 来自 `PR` [87d20fa4](https://gitcafe.com/CPyUG/weekly/commit/87d20fa44e701ae2eac84439811f54fab6b75a20)
117 | - 141204 [Zoom.Quiet](http://zoomquiet.io) 用时7分钟完成格式化.
118 | - 150126 [orangleliu](http://orangleliu.info) 补译
119 |
--------------------------------------------------------------------------------
/content/Issue/issue-028.md:
--------------------------------------------------------------------------------
1 | Title: Issue 28: Fabric
2 | Slug: issue-28
3 | Date: 2012-08-24
4 | Tags: Weekly,Pycoder,Zh
5 |
6 | 
7 |
8 | ## 搜罗Py万物 的周刊
9 |
10 | 亲,
11 |
12 | 我们又用海量的新闻和各种项目填满了本期周报!
13 | 我们非常开心看到有这么多超赞的事情发生在Python社区中.
14 | 和往常一样, 如果你写了有趣的文章或者代码, [联系我们吧](admin@pycoders.com)!
15 |
16 | 如果你想要一个贴纸, 寄给我们回邮信封就好(送完为止):
17 |
18 | 44 Byward Market Square, Suite 210
19 | Ottawa, Ontario Canada
20 | K1P 7A2
21 |
22 |
23 | 想跟上所有 蠎界 新闻? [@pycoders](http://twitter.com/pycoders).
24 |
25 | --
26 |
27 | Mahdi and Mike
28 | [Mahdi](https://twitter.com/#!/myusuf3) and [Mike](https://twitter.com/#!/mgrouchy)
29 |
30 |
31 | ## 新闻
32 |
33 | - [PyCharm 2.6新增Flask支持](http://blog.jetbrains.com/pycharm/2012/08/flask-in-pycharm-26-eap/) (jetbrains.com)
34 |
35 | 这条新闻包含2个超赞的因素. 首先当然是Flask的支持. 其次, 你现在可以通过向导, 使用Pycharm的OpenApi来创建你自己的框架插件了!
36 |
37 |
38 | - [AWS Elastic Beanstalk现已支持Python](http://aws.typepad.com/aws/2012/08/announcing-aws-elastic-beanstalk-support-for-python-and-seamless-database-integration.html) (typepad.com)
39 |
40 | 蟒行者们, "扩展Web应用"变得更简单啦! Django, Flask 现已加入AWS Elastic Beanstalk 超值午餐组. 点击查看更多
41 |
42 |
43 | - [PyCon澳大利亚2012视频](http://www.youtube.com/pyconau) (youtube.com)
44 |
45 | 查阅 PyCon 澳大利亚2012
46 |
47 |
48 | - [Django实验性支持Python3](https://www.djangoproject.com/weblog/2012/aug/19/experimental-python-3-support/) (djangoproject.com)
49 |
50 |
51 | ## 讨论
52 |
53 | - [做一个网页爬虫,从何学起](http://www.reddit.com/r/Python/comments/yfe5u/ask_rpython_making_a_web_bot_where_do_i_start/) (reddit.com)
54 |
55 |
56 | ## 项目
57 |
58 | - [bookie](https://github.com/mitechie/bookie) (github.com)
59 |
60 | bookie是收藏夹站点delicious的开源实现, 当然, 基于Python. [点我试试](https://bmark.us/).
61 |
62 |
63 | - [blessings](https://github.com/erikrose/blessings) (github.com)
64 |
65 | 简单实用的Python终端库. 能让你方便地格式化终端字符输出. 要是你打算写一些cli应用, 绝对值得一看.
66 |
67 |
68 | - [beaker](https://github.com/bbangert/beaker) (github.com)
69 |
70 | beaker是一个WSGI中间件. 无论是独立Python程序或是Web应用, 无论是sesions或是缓存, 用它来对付就对了.
71 |
72 |
73 | - [pyjnius](https://github.com/kivy/pyjnius) (github.com)
74 |
75 | 这个新项目还在早期阶段, 但它绝对够酷! 从此你可以使用JNI访问Java的Classes了.
76 | 不妨看看一下[readme](http://github.com/kivy/pyjnius#pyjnius)里的例子吧.
77 |
78 |
79 | - [anafero](https://github.com/eldarion/anafero) (github.com)
80 |
81 | 推广任何事物都是非常困难的. 你希望能追踪各个推广渠道并分析出最有效的那个.
82 | Anafero 在生成链接的同时也保存了这些有用的信息.
83 |
84 |
85 | - [pathod](https://github.com/cortesi/pathod) (github.com)
86 |
87 | Pathod是一组用来对HTTP服务或客户端进行严酷测试的疯狂工具, 它由一个HTTP守护进程, 一个HTTP客户端, 和一些能将他们用在你的测试程序里的工具组成.
88 | [mitmproxy](http://mitmproxy.org/)的作者荣誉出品, 不妨一试.
89 |
90 |
91 | - [Helm: 实时讨论](http://www.indiegogo.com/helm) (indiegogo.com)
92 |
93 | 来自[ToastDriven](http://toastdriven.com/)的Daniel Lindsey和Ben Spaulding在Indiegogo上发起的这个项目, 旨在募集50K资金来创建Helm实时讨论.
94 | Helm将会以以BSD协议发布, 用来解决公共(或私有)的实时讨论需求, 如需长期保存, 也可以将对话存档, 并提供良好的搜索及api.
95 |
96 | 关注一下这个众酬项目吧! (`译注:` 早已结束)
97 |
98 |
99 | ## 文章
100 |
101 | - [用Boto在亚马逊EC2上部署应用](http://engineerwithoutacause.com/amazon-ec2-deployment-with-boto.html) (enginee
102 | rwithoutacause.com)
103 |
104 | 用[Boto](https://github.com/boto/boto)和[Fabric](http://fabfile.org/)自动初始化EC2实例,并让你的应用部署更上一层楼. 赞!
105 |
106 |
107 | - [在Python中轻松追踪嵌套函数调用](http://eli.thegreenplace.net/2012/08/22/easy-tracing-of-nested-
108 | function-calls-in-python/) (thegreenplace.net)
109 |
110 | Eli在这篇文章中提供了一个简单的decorator来帮助你在Python应用中追踪嵌套的函数调用.
111 |
112 |
113 | - [Django Dash 2012总结](http://blog.jupo.org/2012/08/21/django-dash-2012-round-up/) (jupo.org)
114 |
115 | 错过了上周[Django Dash](http://www.djangodash.com/)的活动吗?
116 | 别担心. [Stephen](https://github.com/stephenmcd)整理了一个各参赛队伍代码和网站的列表.
117 | 绝对值得去看一眼.
118 |
119 |
120 | - [亡羊补牢, 修正常见unicode错误](http://blog.lumino.so/2012/08/20/fix-unicode-mistakes-with-python/) (lumino.so)
121 |
122 | 字符编码, unicode, 常常是你的梦魇. 正如这篇博客所说, 你大可以尽你所能把一切都做对, 但意想不到的严重错误还是会发生. 如果你要处理第三方代码产生的文本, 这篇文章或许能给你一些启示, 它将教你如何挽回第三方代码犯下的错误.
123 |
124 |
125 | - [Matplotlib动画教程](http://jakevdp.github.com/blog/2012/08/18/matplotlib-animation-tutorial/) (github.com)
126 |
127 |
128 | ## 是也乎
129 | - 来自: [SkyLothar](https://gitcafe.com/SkyLothar) 的 `PR`
130 |
--------------------------------------------------------------------------------
/_themes/pelican-bootstrap3/static/css/pygments/vim.css:
--------------------------------------------------------------------------------
1 | .codehilite .hll { background-color: #222222 }
2 | .codehilite .c { color: #000080 } /* Comment */
3 | .codehilite .err { color: #cccccc; border: 1px solid #FF0000 } /* Error */
4 | .codehilite .g { color: #cccccc } /* Generic */
5 | .codehilite .k { color: #cdcd00 } /* Keyword */
6 | .codehilite .l { color: #cccccc } /* Literal */
7 | .codehilite .n { color: #cccccc } /* Name */
8 | .codehilite .o { color: #3399cc } /* Operator */
9 | .codehilite .x { color: #cccccc } /* Other */
10 | .codehilite .p { color: #cccccc } /* Punctuation */
11 | .codehilite .cm { color: #000080 } /* Comment.Multiline */
12 | .codehilite .cp { color: #000080 } /* Comment.Preproc */
13 | .codehilite .c1 { color: #000080 } /* Comment.Single */
14 | .codehilite .cs { color: #cd0000; font-weight: bold } /* Comment.Special */
15 | .codehilite .gd { color: #cd0000 } /* Generic.Deleted */
16 | .codehilite .ge { color: #cccccc; font-style: italic } /* Generic.Emph */
17 | .codehilite .gr { color: #FF0000 } /* Generic.Error */
18 | .codehilite .gh { color: #000080; font-weight: bold } /* Generic.Heading */
19 | .codehilite .gi { color: #00cd00 } /* Generic.Inserted */
20 | .codehilite .go { color: #808080 } /* Generic.Output */
21 | .codehilite .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
22 | .codehilite .gs { color: #cccccc; font-weight: bold } /* Generic.Strong */
23 | .codehilite .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
24 | .codehilite .gt { color: #0040D0 } /* Generic.Traceback */
25 | .codehilite .kc { color: #cdcd00 } /* Keyword.Constant */
26 | .codehilite .kd { color: #00cd00 } /* Keyword.Declaration */
27 | .codehilite .kn { color: #cd00cd } /* Keyword.Namespace */
28 | .codehilite .kp { color: #cdcd00 } /* Keyword.Pseudo */
29 | .codehilite .kr { color: #cdcd00 } /* Keyword.Reserved */
30 | .codehilite .kt { color: #00cd00 } /* Keyword.Type */
31 | .codehilite .ld { color: #cccccc } /* Literal.Date */
32 | .codehilite .m { color: #cd00cd } /* Literal.Number */
33 | .codehilite .s { color: #cd0000 } /* Literal.String */
34 | .codehilite .na { color: #cccccc } /* Name.Attribute */
35 | .codehilite .nb { color: #cd00cd } /* Name.Builtin */
36 | .codehilite .nc { color: #00cdcd } /* Name.Class */
37 | .codehilite .no { color: #cccccc } /* Name.Constant */
38 | .codehilite .nd { color: #cccccc } /* Name.Decorator */
39 | .codehilite .ni { color: #cccccc } /* Name.Entity */
40 | .codehilite .ne { color: #666699; font-weight: bold } /* Name.Exception */
41 | .codehilite .nf { color: #cccccc } /* Name.Function */
42 | .codehilite .nl { color: #cccccc } /* Name.Label */
43 | .codehilite .nn { color: #cccccc } /* Name.Namespace */
44 | .codehilite .nx { color: #cccccc } /* Name.Other */
45 | .codehilite .py { color: #cccccc } /* Name.Property */
46 | .codehilite .nt { color: #cccccc } /* Name.Tag */
47 | .codehilite .nv { color: #00cdcd } /* Name.Variable */
48 | .codehilite .ow { color: #cdcd00 } /* Operator.Word */
49 | .codehilite .w { color: #cccccc } /* Text.Whitespace */
50 | .codehilite .mf { color: #cd00cd } /* Literal.Number.Float */
51 | .codehilite .mh { color: #cd00cd } /* Literal.Number.Hex */
52 | .codehilite .mi { color: #cd00cd } /* Literal.Number.Integer */
53 | .codehilite .mo { color: #cd00cd } /* Literal.Number.Oct */
54 | .codehilite .sb { color: #cd0000 } /* Literal.String.Backtick */
55 | .codehilite .sc { color: #cd0000 } /* Literal.String.Char */
56 | .codehilite .sd { color: #cd0000 } /* Literal.String.Doc */
57 | .codehilite .s2 { color: #cd0000 } /* Literal.String.Double */
58 | .codehilite .se { color: #cd0000 } /* Literal.String.Escape */
59 | .codehilite .sh { color: #cd0000 } /* Literal.String.Heredoc */
60 | .codehilite .si { color: #cd0000 } /* Literal.String.Interpol */
61 | .codehilite .sx { color: #cd0000 } /* Literal.String.Other */
62 | .codehilite .sr { color: #cd0000 } /* Literal.String.Regex */
63 | .codehilite .s1 { color: #cd0000 } /* Literal.String.Single */
64 | .codehilite .ss { color: #cd0000 } /* Literal.String.Symbol */
65 | .codehilite .bp { color: #cd00cd } /* Name.Builtin.Pseudo */
66 | .codehilite .vc { color: #00cdcd } /* Name.Variable.Class */
67 | .codehilite .vg { color: #00cdcd } /* Name.Variable.Global */
68 | .codehilite .vi { color: #00cdcd } /* Name.Variable.Instance */
69 | .codehilite .il { color: #cd00cd } /* Literal.Number.Integer.Long */
70 |
--------------------------------------------------------------------------------
/content/Issue/issue-111.md:
--------------------------------------------------------------------------------
1 | Title: Issue 111: Eggs
2 | Slug: issue-111
3 | Date: 2014-04-21 12:14
4 | Tags: Weekly,Pycoder,Zh
5 |
6 | 
7 |
8 | ## 搜罗Python 万物的周刊
9 |
10 | 亲们,
11 |
12 | 复活节快乐卟?
13 |
14 | 向们分享[文章](http://pycoders.com/submissions/)
15 | 呗,如果上了周刊,
16 | 你滴大名会被高亮显示出来啊!
17 |
18 | 另,用
19 | [Gittip](https://www.gittip.com/PycodersWeekly)
20 | 支持俺们吧!
21 |
22 | --
23 |
24 | 原文: [Pycoder's Weekly (Issue #111): Eggs](http://us4.campaign-archive1.com/?u=9735795484d2e4c204da82a29&id=60bf5a649b&e=889f3f6a05)
25 |
26 | ## 新闻
27 |
28 | - [Python 2.7's 将维护到 2020 年](http://hg.python.org/peps/rev/76d43e52d978)
29 |
30 | Guido 老爹增补了 PEP 373, 承诺将 Python 2.7 的寿命延保致 2020.
31 |
32 | python.org
33 |
34 | Shared by @mgrouchy
35 |
36 | (`译注:` 目测老爹这是气乐了...
37 | 也是大家对 Py3 的进展实在没有信心的集体心理反应,
38 | 如果真能这么折腾下去, Py2.7 将成为后续版本最多的开源软件, 到时,大家将面对 Python 2.7.42 之类的版本号了...)
39 |
40 | ## 讨论
41 |
42 | [什么类型的项目不应考虑上 Python ?](http://www.reddit.com/r/Python/comments/23ap65/what_kind_of_project_would_you_not_use_python_for/)
43 | eddit.com
44 | Shared by @mgrouchy
45 |
46 | (`译注:` 果断炒HIGH 了,大家列出了很多,然后逐一驳掉了...
47 | 目测最终能达成的共识,只有 OS+驱动了..)
48 |
49 | ## 项目
50 |
51 | - [diamond](https://github.com/BrightcoveOS/Diamond)
52 |
53 |
54 | 很赞的为 graphite 以及兼容小伙伴完成的系统状态监察收集器
55 |
56 | github.com
57 |
58 | Shared by @myusuf3
59 |
60 | - [mirai](https://github.com/duckworthd/mirai)
61 |
62 |
63 | Twitter 对 Python 的支持部分.
64 | 通过简洁的接口,来提供广告操作.
65 |
66 | github.com
67 |
68 | Shared by @mgrouchy
69 |
70 | - [shadowsocks](https://github.com/clowwindy/shadowsocks)
71 |
72 | 轻量级 隧道代理,帮助你嗯嗯嗯.
73 |
74 | github.com
75 |
76 | Shared by @myusuf3
77 |
78 | - [cubehelix](http://www.ifweassume.com/2014/04/cubehelix-colormap-for-python.html)
79 |
80 | 漂亮的 Cubhelix 色彩表实现,具体效果去看便知.
81 |
82 | ifweassume.com
83 |
84 | Shared by @mgrouchy
85 |
86 | - [pem](https://github.com/hynek/pem)
87 |
88 | 协助快速进行 PEM 文件解析的工具.
89 |
90 | github.com
91 |
92 | Shared by @mgrouchy
93 |
94 | - [500 lines or less](https://github.com/aosabook/500lines)
95 |
96 | Montreal 的 PyCon2014 上提出,
97 | 有关创建一本专门用来收集 500行以下开源软件代码的架构相关图书.
98 | 如果你有这种好物,请及时点击进入分享.
99 |
100 |
101 | github.com
102 |
103 | Shared by @myusuf3
104 |
105 | - [hendrix](https://github.com/hangarunderground/hendrix)
106 |
107 | 虽然处于早期,但是,基于 Django 的应用想轻松的异步化部署,就应该关注了.
108 |
109 | github.com
110 |
111 | Shared by @myusuf3
112 |
113 | - [django-tenant-schemas](https://github.com/bernardopires/django-tenant-schemas)
114 |
115 | github.com
116 |
117 | Shared by @mgrouchy
118 |
119 |
120 | ## 文章
121 | - [Django 项目的数据迁移](http://www.machinalis.com/blog/migrating-data-into-your-django-project/)
122 |
123 |
124 | 将传统数据库的数据迁移到 Django 应用一直是个棘手的问题.
125 | 本指南就是解决这个问题的...
126 |
127 | machinalis.com
128 |
129 | Shared by @mgrouchy
130 |
131 | - [召唤Python 2.8](http://blog.startifact.com/posts/the-call-of-python-28.html)
132 |
133 | 自从在 PyCon 2014 上 Guido 宣称,没有 Pytnon2.8 了,
134 | 直到 2020 年都将只有 2.7 和 Py3 一直PK了.
135 |
136 | 于是大家就攒了个长文,详细说,为毛要 Py2.8 以及具体的应该解决什么问题.
137 |
138 |
139 | startifact.com
140 |
141 | Shared by @myusuf3
142 |
143 | - [SimPy: Process Interaction](http://stefan.sofa-rockers.org/2014/04/11/simpy-process-interaction/)
144 |
145 | sofa-rockers.org
146 |
147 | Shared by @mgrouchy
148 |
149 | - [深入Python的VM: LOAD_CONST bug的故事](https://doar-e.github.io/blog/2014/04/17/deep-dive-into-pythons-vm-story-of-load_const-bug/)
150 |
151 | 非常COOL 的故事,
152 | 有关如何利用内建bug 来执行本地代码!
153 |
154 | github.io
155 |
156 | Shared by @mgrouchy
157 |
158 | - [构建 Git 服务](https://medium.com/joltem-an-open-incubator/1dfb89adca1d)
159 |
160 | 有关为毛 Github/Gitolite 都不好用,
161 | 以及如果通过 Twisted,SSH 和 Git 来创建自个儿的 git 服务.
162 |
163 | medium.com
164 |
165 | Shared by @mgrouchy
166 |
167 | - [轻量级Python 3.4 可视化环境](http://www.drdobbs.com/architecture-and-design/lightweight-virtual-environments-in-pyth/240167069)
168 |
169 | 介绍 venv 针对 Python 3.4 的最新特性.
170 |
171 | drdobbs.com
172 |
173 | Shared by @myusuf3
174 |
175 | ## DAMA
176 | (`大妈私人发现的值得分享的消息`)
177 |
178 |
179 | # 是也乎
180 |
181 | - 140421 [Zoom.Quiet](http://zoomquiet.org/) 用时 42 分钟 完成快译.
182 | - 140421 [Zoom.Quiet](http://zoomquiet.org/) 用时 7 分钟 完成格式转抄.
183 |
184 |
185 |
--------------------------------------------------------------------------------
/content/Issue/issue-077.md:
--------------------------------------------------------------------------------
1 | Title: Issue 77 ~ Zelda
2 | Date: 2013-08-02
3 | Tags: Weekly,Pycoder,Zh
4 | Slug: issue-77
5 | ## Hi Pythonistas!
6 |
7 |
8 | We got a great response to the shirt inquiry last week, we will get the design together and let you guys know when we have something!
9 |
10 |
11 |
12 | As always, if you have any questions, comments, gripes or suggestions just hit reply to this email and let us know.
13 |
14 | 想跟上所有 蠎界 新闻?
15 | [@pycoders](http://twitter.com/pycoders).
16 |
17 | 请用
18 | [Gittip](https://www.gittip.com/PycodersWeekly)
19 | 支持俺们吧!
20 |
21 | --
22 | [Mahdi](https://twitter.com/#!/myusuf3) and [Mike](https://twitter.com/#!/mgrouchy)
23 |
24 |
25 |
26 | 原文: [Pycoder's Weekly (Issue #77): Zelda](http://eepurl.com/DdEm5)
27 |
28 | ## 新闻与开发动态
29 |
30 | - [PyPy 2.1 Released](http://morepypy.blogspot.ca/2013/08/pypy-21-considered-armful.html) (blogspot.ca)
31 |
32 | Complete with horrible puns. Pypy 2.1 first release with official support for ARM processors in the JIT. RaspberryPi users get your speed on.
33 |
34 | - [The Style Guide for Python Code (PEP 8) Modernization.](https://www.draftable.com/compare/9spTfcM) (draftable.com)
35 |
36 | Most notably the increase of the number of lines to 99, removed "harsher" wording of certain parts, as well as other various modernizations.
37 |
38 | - [RuPy 2013](http://13.rupy.eu/) (rupy.eu)
39 | RuPy is a unique conference that brings together communities from different state-of-the-art programming languages Python, Ruby, JavaScript, Clojure, Go and related technologies.
40 |
41 |
42 | ## 讨论
43 |
44 | [Do you debug with python with breakpoints?](http://www.reddit.com/r/Python/comments/1jeurc/do_you_debug_python_with_breakpoints/) (reddit.com)
45 |
46 |
47 |
48 | ## 项目
49 | - [gittle](https://github.com/FriendCode/gittle) (github.com)
50 |
51 | Gittle is a high-level pure-python git library. It builds upon dulwich which provides most of the low-level machinery
52 |
53 |
54 | - [babel](https://github.com/mitsuhiko/babel) (github.com)
55 |
56 | Babel is a Python library that provides an integrated collection of utilities that assist with internationalizing and localizing Python applications.
57 |
58 |
59 |
60 | - [pantograph](https://github.com/adicu/pantograph) (github.com)
61 |
62 | Control HTML5 Canvas through Python. This is quite fun, I would take a look at the examples.
63 |
64 |
65 |
66 | - [projects](https://github.com/thekarangoel/Projects) (github.com)
67 |
68 | Trying to complete over 100 projects in various categories in Python. Awesome resource for
69 |
70 | people new to Python.
71 |
72 |
73 |
74 | - [huxley](https://github.com/facebook/huxley) (github.com)
75 |
76 | Watches you browse, takes screenshots, tells you when they change. Huxley is a test-like system for catching visual regressions in web applications.
77 |
78 |
79 |
80 | - [leapcast](https://github.com/dz0ny/leapcast) (github.com)
81 |
82 | Simple ChromeCast emulation app.
83 |
84 |
85 |
86 | - [textblob](https://github.com/sloria/TextBlob) (github.com)
87 |
88 | Simplified text processing for Python 2 and 3. Cool helpers for tags, and noun phrases.
89 |
90 |
91 |
92 | - [requirementstxt](https://github.com/wuub/requirementstxt) (github.com)
93 |
94 | Autocomplete for all your python requirements, for Sublime Text 3 & 2.
95 |
96 | ## 文章
97 | - [Sharing Your Labor of Love: PyPI Quick And Dirty](http://hynek.me/articles/sharing-your-labor-of-love-pypi-quick-and-dirty/) (hynek.me)
98 |
99 | A completely incomplete guide to packaging a Python module and sharing it with the world on PyPI.
100 |
101 |
102 | - [Why Not Python?](http://www.chrisstucchio.com/blog/2013/why_not_python.html) (chrisstucchio.com)
103 |
104 | One of the more sensible GIL articles I have read, nice comparisons and examples
105 |
106 |
107 |
108 | - [PyPy From Scratch](http://blog.flaper87.org/post/51f971e70f06d32de86edfa9/) (flaper87.org)
109 |
110 | Small article which introduces the PyPy source structure to interested developers.
111 |
112 |
113 | - [Automatically Inline Python Function Calls](http://tomforb.es/automatically-inline-python-function-calls) (tomforb.es)
114 |
115 |
116 |
117 | # 是也乎
118 |
119 | - 1312?? [Zoom.Quiet](http://zoomquiet.org/) 用时42分钟完成翻译.
120 | - 131218 [Zoom.Quiet](http://zoomquiet.org/) 用时11分钟完成格式转抄.
121 |
122 |
--------------------------------------------------------------------------------
Comments
4 | 5 | 6 | 13 | 14 | 15 | 16 |