KevinHuang

KevinHuang的博客


  • 首页

  • 关于

  • 标签

  • 分类

  • 归档

  • 一些书

  • 常用命令

  • python tips

  • 站点地图

  • rss

  • 公益404

  • 搜索

一个flask+mongoengine的site

发表于 2016-04-23 | 分类于 python | 阅读次数:
####前言最近一直学习emacs和elisp, 也在做关于mongodb相关的研究,闲来无事就做了个网站,后端使用了flask, mongoengine,前端css框架用的是雅虎的pure,还是用了神奇的grunt做页面修改的livereload, 然后有d3,jquery,amchart和一个最近发现的页面消息弹出toastr.想学习flask和mongoengine的童鞋可直接拿去,开源地址是data-analysis####下载依赖和启动 12345678910111213cd /path/to/data-analysis pip install -r requirements.txt # 安装grunt npm install # 我的后端样例数据 mongorestore -d fetch_data --directoryperdb dump/fetch_data cd data_analysis # 启动Grunt grunt # 启动 python run.py # 然后打开 http://Youip:5000 版权声明:本文由 董伟明 原创,未经作者授权禁止任何微信公众号和向掘金(juejin.im)转载,技术博客转载采用 保留署名-非商业性使用-禁止演绎 4.0-国际许可协议python
阅读全文 »

分享一个准备给公司讲python高级编程的slide

发表于 2016-04-22 | 分类于 python | 阅读次数:
前言我以前在学习python模块的时候,曾经翻译[pymotw](http://pymotw.com/2/py-modindex.html#)的文章,其实还是有抄袭的嫌疑,从最近开始逐渐直接阅读python标准库源码, 收获颇多.我现在不愿意教一些从网上或者书里提到的知识点,而更愿意根据我工作中常见的需求去挖掘对应的python的解法.也是在过程中对一些东西有了比较深的理解.这个ppt是从[像黑客一样使用 Linux 命令行](https://linuxtoy.org/archives/using-cli-like-a-hacker.html)获得的灵感. 然后角度为<python高级编程>, 还用到了webfonts娃娃体^.^PS: 特别推荐github上看到的”雨痕”的学习笔记. 建议大家都好好看看. 找到它Expert-Python或者直接下载代码: github但是注意我的字体内嵌项目里面, 请注意流量,避免移动设备直接访问或者强制刷新 UPDATE: 2015-02-02我已经把视频放到youtube上了: https://www.youtube.com/watch?v=bf5qpFFxo9g 大家可以选择在线看 目录 XX不理解python竟然没有end…. 设置全局变量 字符串格式化 操作列表 操作字典 字典视图 vars from future import unicode_literals from future import absolute_import 不是支持了绝对引入,而是拒绝隐式引入 我靠,我的需求呢? – 在很多开源项目是拒绝你第一次的隐式用法的, 一个关于编码的问题 原因是: encoding_example里面没有对文字自动转化为unicode,默认是ascii编码 super 当子类调用父类属性时一般的做法是这样 supe ...
阅读全文 »

使用Python进行并发编程-PoolExecutor篇

发表于 2016-04-21 | 分类于 python | 阅读次数:
我在2016年12月12日发布了一篇 使用Python进行并发编程-PoolExecutor篇。其中有个例子中concurrent.futures要比multiprocessing.pool版本的快了1.7倍。看起来还是挺振奋人心的,不过这个数据是完全错误的。在我的博客的文章下,NoAnyLove留言对我表示怀疑,我一翻代码,果然: 123results = pool.map(fib, NUMBERS) for num, result in zip(NUMBERS, pool.map(fib, NUMBERS)): map了2次…我一心想推concurrent.futures,当时太主观武断了,以为是Future这种架构带来的这种性能上的质变,没有去深究。在此向各位读者道歉,也感谢NoAnyLove指出这个错误。这个周末我重新写了这篇文章。请大家以此为准,忽略之前那篇。原文如下:—— 分割线 —–之前我们使用多线程(threading)和多进程(multiprocessing)完成常规的需求,在启动的时候start、jon等步骤不能省,复杂的需要还要用1-2个队列。随着需求越来越复杂,如果没有良好的设计和抽象这部分的功能层次,代码量越多调试的难度就越大。有没有什么好的方法把这些步骤抽象一下呢,让我们不关注这些细节,轻装上阵呢?答案是: 有的 。从Python3.2开始一个叫做concurrent.futures被纳入了标准库,而在Python2它属于第三方的futures库,需要手动安装: 12❯ pip install futures 这个模块中有2个类:ThreadPoolExecutor和ProcessPoolExecutor,也就是对threading和multiprocessing的进行了高级别的抽象,暴露出统一的接口,帮助开发者非常方便的实现异 ...
阅读全文 »

豆瓣条目组招聘

发表于 2016-04-20 | 分类于 python | 阅读次数:
我来做广告豆瓣是国内python应用最广泛的公司. 没有其二. 我们条目组随着业务变更, 也需要更多地优秀工程师的加入.条目是指什么? 豆瓣的电影/读书/音乐, 以及豆瓣东西都是我们在维护和迭代开发(对, 你没有听错, 你不是在一个产品线).我先列一下作为一个厂公在技术层面, 我对豆瓣的感想(其他层面大家都懂): 豆瓣有很多知名的工程师, 包括但是不限于前后端以及IOS/Android, 你会他们协作, 吐槽他们的代码以及被他们吐槽 豆瓣多年积累了很多对工作有帮助的工具. 比如CODE, dae, 还有很多的用于运维支持, 数据分析和统计, 爬虫等项目. 豆瓣有很多开源项目, 被其他公司使用, 比如dpark, OzJS. 你有机会参与到这样的项目中招聘内容简单地需求都在这里: 产品开发工程师我来解读下(以下方面能帮你提高面试通过的几率): 豆瓣希望你是一个倾向于全栈工程师. 比如你会python, 还能写前端, 或者有移动开发经验. 你可以想到, 我们大多是同时支持多个产品线, 任务重的时候如果你独当一面很好, 要是可以再别的领域帮个忙就更好了 假如你python初学,但是很熟悉其他语言, 我们相信你很快会上手, 不要害怕. 我组之前就有一个原来是ruby的实习生. 希望你能有个github/stackoverflow账号, 或者个人博客. 尤其是能看到你的作品, 了解你的代码, 希望看到你对代码的热爱. 我相信你有主动的态度会走的更远 如果你曾经是某个/些开源项目的贡献者甚至是多次贡献者, 或者你曾经做过分享, 也请记得一并告诉我们.联系我们想想还是先联系我吧. 我会给大家转发到组内. 或者直接在线申请我的邮箱是: ciici123#gmail.com. 请在标题中注明[豆瓣求职] 版权声明:本文由 董伟明 原创,未经作者授权禁止任何微信公众号和向掘金(juejin ...
阅读全文 »

知乎Live全文搜索之模型设计和爬虫实现

发表于 2016-04-19 | 分类于 python | 阅读次数:
晒一下知乎Live团队送的新年礼物:感谢。所以我将送上一系列知乎Live主题的文章在我的知乎Live里面,我留下了调查问卷,其中一项是可以反馈自己感兴趣的Python相关技术。意料之内,最受大家欢迎的就是爬虫。所以最近开始写了一些和爬虫有关的内容。不过虽然现在还是1月,但是我发誓这是本年最后一次写爬虫文章了(要写吐了)。 模型设计做知乎Live的全文搜索,首先要抓取到全部Live信息。我尝试了下,只要是登录状态就可以使用知乎提供的API获取。接口分为2种: https://api.zhihu.com/lives/ongoing?purchasable=0&limit=10&offset=10 (未结束) https://api.zhihu.com/lives/ended?purchasable=0&limit=10&offset=10 (已结束)每个Live包含非常多的字段,还包含了一些预留字段。我们简单分析下并实现对应的模型。主讲人模型主讲人字段如下: 12345678910111213141516speaker: { member: { name: "Flood Sung", url: "https://api.zhihu.com/people/23deec836a24f295500a6d740011359c", type: "people", user_type: "people", headline: "Deep Learning/Reinforcement Learning/Robotics/", avatar_url: "https://pic3.zhimg.com/73a71f47d66e ...
阅读全文 »

使用Python进行并发编程-我为什么不喜欢Gevent

发表于 2016-04-18 | 分类于 python | 阅读次数:
在Python的发展历史中,有过一些失败的修复CPython的缺陷和提高性能的尝试,比如消除GIL、Stackless(一个微线程扩展,避免传统线程所带来的性能与复杂度问题)、psyco(被PyPy代替)、[Unladen Swallow](https://code.google.com/archive/p/unladen-swallow/)。当然也有成功的,比如PyPy。 协程在开始表达我的观点之前,我们先来了解下Coroutine。Coroutine 也就是 corporate routine,直译为「协同的例程」,中文一般叫做「协程」, 实际上这个概念和进程与线程有相似之处,因为linux线程就是所谓的「轻量级进程」。我在gevent源码分析中找到一段表述的比较好的描述进程和协程异同的内容: 相同点: 二者都是可以看做是一种执行流, 该执行流可以挂起,并且在将来又可以在 你挂起的地方恢复执行, 这实际上都可以看做是continuation,我们来看看当我们挂 起一个执行流时我们要保存的东西: 1. 栈, 因为如果你不保存栈,那么局部变量你就无法恢复,同时函数的调用链你也无 法恢复, 2. 寄存器的状态: 这好理解, 比如说EIP,如果你不保存,那么你恢复执行流就不知道 到底执行哪一条指令, 在比如说ESP,EBP,如果你不保存,那么你即便有完整的栈 你也不知道怎么用.这二者实际就是所谓的上下文,也可以说是continuation. 在执行流切换时必须保存 这两个东西, 内核调度进程时也是一回事. 不同点: 执行流的调度者不同, 进程是内核调度, 而协程是在用户态调度, 也就是说进程 的上下文是在内核态保存恢复的,而协程是在用户态保存恢复的.很显然用户态的 代价更低 进程会被抢占,而协程不会,也就是说协程如果不主动让出CPU,那么其他的协程是不 可能得到执行机 ...
阅读全文 »

12个python填空题

发表于 2016-04-17 | 分类于 python | 阅读次数:
前言什么? 你已经很了解python了? 好.我们开始做个测验. 下面有12个题目. 填个空, 让这个代码片段变的可能. 先做个例子例子1: 1234>>> x, y = ??? >>> x + y == y + x False 其中有个???. 把它替换成什么就可以让这段代码成立呢?揭晓答案: 1234>>> x, y = [0], [1] >>> x + y == y + x False 这个还是蛮简单的. 好继续例子2: 1234>>> x = ??? >>> x < x True 答案呢?如果使用python内置的数据结构, 确实是不可能的. 唯一可以硬造一个例子 1234>>> x = type("", (), {"__lt__": lambda a, b: True})() >>> x < x True 但是这里不需要这么复杂的去想trick出结果, 只考虑python已经实现的设计 发考卷 难度3星 1234>>> x, y = ??? >>> min(x, y) == min(y, x) False 难度4星 1234>>> x = ??? >>> len(set(list(x))) == len(list(set(x))) False 难度3星 12345>>> x, s = ??? >>> s.add(x) >>> type(x) in map(type, s) False 难度3星 1 ...
阅读全文 »

Python有没有站到风口上?

发表于 2016-04-16 | 分类于 python | 阅读次数:
前言熟悉我的同学都知道4-5月份在知乎上我开了三炮: Python技术分享的乱象 《如何选择Python版本2还是3》涉嫌大量的「抄袭」 我不认识Pythoner这种开发者另外也回答了对于知乎Python话题下大量的入门爬虫教程的成因,详见python分享中初级爬虫教程泛滥是否有其语法特征和生态环境的锅?知乎是一个群魔乱舞的地方。当时看起来,没人出来说话,我再不说话,知乎就要成为营销号收智商税最好的去处了。本着治病救人的原则,我隐晦的警告了那些以为关注了Python话题的知友智商都不够用的坏人。PS:昨晚有个叫做 @Larry的偷了我这篇文章发出来,他其实就是我文中抨击的一种人,不过抄习惯了没好好看。知乎的不作为纵容了平台上出现了这种不尊重别人知识的人,我只能说知乎💊开炮之后,知乎的Python话题的风气好了很多,动机不纯的人基本都开始夹起尾巴,而那些营销号也大多被封号或者退出知乎了。自认为这是一次有意义的胜利。关注我的人越多我就越觉得有责任说正确的实话。所以我的回答主要包含2种:1. 帮助新同学;2.某些热门问题立意鲜明的观点,不过这种类型的回答自带杀伤力,并且经常不讨喜。今天说的这篇是周二首发于我的同名微信公众号「Python之美」,目前的荣誉是:![](https://user-images.githubusercontent.com/841395/28205566-2421bc42-68b5-11e7-92a2-3af7e01398.png)14人赞赏,算是我被认可最多的一次文章了,还被这个同学暖到了:![](https://user-images.githubusercontent.com/841395/28206085-3c02d4de-68b7-11e7-986e-583533938c.png)感谢大家的支持,因为我这一篇得罪好几大波人。下文主要针对发Py ...
阅读全文 »

搜集系统信息的dashboard

发表于 2016-04-15 | 分类于 python | 阅读次数:
前言过年在家无聊, 发现个挺有意思的项目: [linux-dash](https://github.com/afaqurk/linux-dash),就是使用Twitter的Bootstrap做的管理模板,可以显示服务器信息, 负载,内存,进程,硬盘,用户,安装/未安装的软件信息,网卡IP,网速,以及网络状态,在线用户等. 但是有2个问题: 它是php的… 它获取信息都是通过shell下得系统命令我就用django写了一个python版的[django-linux-dash](https://github.com/dongweiming/django-linux-dash):本来想用flask,结果被人用了,但是问题也是通过subprocess调用命令获取数据,这个轮子有以下优点: 不仅支持linux,也支持OS X 使用psutil, 项目完全不调用shell命令安装和使用需要django>=1.4以及psutils模块 123$pip install/easy_install django $pip install/easy_install psutil PS: OS X 还需要netifaces模块用于获取网卡ip 12$pip install/easy_install netifaces 启动: 1234$cd /You/install/path $git clone https://github.com/dongweiming/django-linux-dash && cd django-linux-dash $python manage.py runserver 0.0.0.0:8000 打开浏览器输入 http://localhost:8000 就可以看见了…TODO: 目前还没有添加测速功能,因为我希望不要一直傻瓜 ...
阅读全文 »

ptpython- a better Python REPL

发表于 2016-04-14 | 分类于 python | 阅读次数:
前言今天发现一个项目: ptpython.新一代的REPL神器. 玩了一下. 毅然的ipython换成了ptipython - ptpython自带的iython的接口. 和大家介绍下 ptpython的优点先说几个在用ipython过程中遇到的问题吧. ipython在Mac下缩进问题. 每次在交互模式里面输入一个缩进的内容, 比如下面 1234567In [1]: def t(): ...: return 1 ...: In [2]: def t(): return 1 看到了吧, 缩进不正确了. ptpython没有这个问题,它的底层库[prompt_toolkit](https://github.com/jonathanslenders/python-prompt-toolkit)实现了一个替代物 2. jedi. 我在emacs里面, jedi是标配. 其一是因为有epc, 可以和python通信, 它的自动补全和跳到函数/类定义真的很方便. 但是python交互解释器还没有一个用它的. 这里真的感觉效果很好. 3. emacs/vim键位. 好吧我经常在用ipython的时候习惯Ctrl+x Ctrl+c退出. 能用emacs的键位做编辑真的很爽 4. 提供一个终端的菜单, 有多个选项可以选择 5. 模式粘贴. 大家知道python有个问题: 你粘贴过来的代码不一定能运行 - 粘贴后的缩进会很奇怪的. ipython虽然有%paste和%cpaste. 但是有时候还是会有IndentationError问题.ptpython在这里独创了Paste mode. 使用F7切换. 还可以多行编辑. 6. 可以开启多个Tab,甚至多个Tab的内容一齐显示出来. 类似vim的:split 7. 能对你写的每 ...
阅读全文 »
1…91011…20
Kevin Huang

Kevin Huang

197 日志
24 分类
84 标签
RSS
E-Mail
友情链接
  • 董伟明
  • FOOFISH
  • 酷壳
  • 知道创宇
  • 阮一峰
  • 求索
  • Sdandroid
  • 全栈实验室
© 2023 Kevin Huang 豫ICP备16018730号-1
本站访客数 人次 本站总访问量 次