欢迎参加 FlaskCon 2020!

来源:greyli   |   更新时间: 2月前   |   分类: 活动与游记


FlaskCon是一个社区举办的 Flask 大会,将会在 6 月 26 号举行。按照官方的介绍,它:

和 DjangoCon 类似,FlaskCon 会专注于 Flask 相关话题,包括 Flask 扩展介绍、开发经验、最佳实践、类似框架的对比等等。

如果你想分享 Flask 开发相关的经验,介绍你对 Flask 的有趣应用,或者是有任何和 Flask 相关而且你很想拿出来聊一聊的话题,欢迎报名演讲。演讲有 20 分钟和 40 分钟两种类型,需要使用英语。

查看原文

Django 集成阿里云OSS

来源:foofish   |   更新时间: 2月前   |   分类: Python技术


在django项目中,如果希望静态资源存储到阿里云的OSS中,不需要写一行代码,因为别人已经造好了轮子,你就不要重复造了。记录下配置过程。

第一步: 安装依赖包

pipinstalloss2pipinstalldjango-oss-storage

pip install oss2
pip install django-oss-storage
查看原文

django charfield 字段在 admin 中使用 textarea

来源:foofish   |   更新时间: 2月前   |   分类: Python技术


如下图,Account 模型中有个CharField类型的字段,对应在Admin中的是input输入框。如果我们想在admin中希望它是textarea输入框,那么需要自定义一个form表单对象

classAccount(BaseModel):c_remark=models.CharField(max_length=200,null=True,blank=True,verbose_name="备注")

class  Account(BaseModel):
    c_remark = models.CharField(max_length=200, null=True, blank=True, verbose_name="备注")
查看原文

My Reaction to "Under Discussion: The Performance of Python"

来源:laike9m   |   更新时间: 2月前   |   分类: 


MAY 13TH, 2020

The mindset of "If you want it to improve, feel free to contribute" does not helpDocumentationSpecificationToolsdirectionSummary

Today I read an articleUnder Discussion: The Performance of Python, and discussed it with some friends. I got some ideas from the discussion, so I decided to write an article.

查看原文

Redis 的命令设计

来源:kawabangga   |   更新时间: 2月前   |   分类: 数据库


很多人都知道,Redis 对代码上简单有一种极致的追求,比如坚持命令处理单线程。我在很多用户层面的配置和命令中,也看到了这种简单而优雅。比如SAVE的参数,save 900 1表示 900 秒内有一次写,就执行备份,这样可以配置多条配置,就可以达到即可以根据时间配置备份频率,又可以根据写入次数配置频率。

又比如ACL的设计,虽然不能说设计的特别简单,但是功能非常丰富,即可以根据 key 来设置权限,又可以根据命令来设置权限,并且既可以设置白名单,又可以设置黑名单。单单来说白名单与黑名单,我见过很多系统,只要涉及这两个概念,就会让用户一头雾水了。如果我有一个A是在黑名单中,然后A里面的X在白名单中,那么X到底会不会生效呢?然后你就必须去看它的实现才知道是怎么样一个逻辑。(比如 poetry 对文件的include 和 exclude 配置,就是一个反例)但是 Redis 的 ACL 设计,用了类似 DSL 的方式,一点歧义都没有。

查看原文

反爬之ID 混淆 hashids 了解下

来源:foofish   |   更新时间: 3月前   |   分类: Python技术


爬虫与反爬是一对相生相克的死对头,道高一丈魔高一尺。作为爬虫的一方,如果知道了某个站点的数据自增ID,那么就能轻而易举把整个站点都爬下来。是不是有点耸人听闻,你去看很多大站例如油管、P站等,他们都不会轻易把业务的自增ID暴露出来,而是用一种可逆的hash字符串替代。

最常用的ID混淆就是Hashids。Hashids是一个小型的开放源代码库,可以将数字生成很短的、唯一的、非顺序的字符ID。

查看原文

Python挑战题

来源:foofish   |   更新时间: 3月前   |   分类: Python技术


网址:http://www.pythonchallenge.com/

这个网站提供了33道智力题,需要用Python里面的一些知识去解决,当然你也可以使用其他语言,每道题都有解题线索,你要根据提示获取答案后才能进入下一题。截至目前,已经有3369095位用户试图发起挑战。

第一题

第一题是热身题,你要计算2的38次幂,计算结果就是第二题的入口链接

查看原文

Python自制PornHub风格的LOGO

来源:foofish   |   更新时间: 3月前   |   分类: Python技术


PornHub又名P站,网站的流量在全球也是TOP10级别,和淘宝、百度等站点同一个level,他们家网站的LOGO也显得个性鲜明。

如何用Python画一个呢?

画图需要用到一个库叫Pillow,它是专门用来出来图像的,功能非常强大,修图功能能做的事,都可以用Pillow来实现。

分析下这张图的结构

它有左右两部分组成,左边是黑底白字,右边是黄底黑字。这两部分包裹在一个黑色矩形框中。

查看原文

Python项目整合PyOTP+Google Authenticator

来源:ansheng   |   更新时间: 3月前   |   分类: 


PyOTP主要是用來生成与验证一次性密码(OTP, One-Time Password)的Python库,下面是官方介绍

首先需要安装PyOTP

pip install pyotp
# 这里安装的版本是2.3.0
查看原文

重学前端:相对定位VS绝对定位VS固定定位

来源:foofish   |   更新时间: 3月前   |   分类: 前端


position 是CSS中非常重要的属性,顾名思义,他是用来指定一个元素在页面上的位置,搞懂了position的属性值对布局的理解会更加透彻。

一共有5个值,分别是:

static relative fixed absolute sticky

static
relative
fixed
absolute
sticky
查看原文

一个困扰我两年的 Flask bug

来源:greyli   |   更新时间: 3月前   |   分类: 计算机与编程


严格来说算不上 bug,而是一个很容易导致出错的行为:如果你安装了 python-dotenv,同时在 Flask 程序的上层目录创建了 .env 或 .flaskenv 文件,那么你将没法成功执行 flask run 等命令,因为这会导致 Flask 没法正确找到对应的 Flask 程序实例。

这个问题从 Flask 开始引入 CLI 机制开始就存在了,困扰了我两年。18 年偶然在用户根目录创建了一个 .env 文件,发现 Flask 程序没法运行了,当时遇到的各种 bug 太多,没仔细考虑这两者之间的关联。后来经过几次测试,才确定下来是上层目录的 .env 和 .flaskenv 文件导致,但是一时找不到原因,就暂时放下了。直到 19 年 11 月,花了几个小时排查,还是没找到原因。

查看原文

一个困扰我两年的 Flask「Bug」

来源:greyli   |   更新时间: 3月前   |   分类: 计算机与编程


TL;DR 版本:

如果你的程序存储在单脚本里,比如 app.py,那么 .flaskenv 和 .env 应该放在程序脚本的同级目录:

myproject/
    - app.py
    - templates
    - static
    - .flaskenv
    - .env
查看原文

安装 Python 依赖时出现 MarkupSafe ImportError: cannot import name Feature 报错的解决方法

来源:greyli   |   更新时间: 3月前   |   分类: 计算机与编程


这个报错在 3 月 8 号 setuptools 发布新版本之后出现,通常会在安装 Python 依赖时触发。

报错信息

使用 pip 安装依赖时的报错如下:

Collecting markupsafe==1.0
  Downloading https://.../MarkupSafe-1.0.tar.gz (14 kB)
    ERROR: Command errored out with exit status 1:
     command: '...\python.exe' -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'...\\pip-install-bsormril\\markupsafe\\setup.py'"'"'; __file__='"'"'...\\pip-install-bsormril\\markupsafe\\setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base '...\pip-install-bsormril\markupsafe\pip-egg-info'
         cwd: ...\pip-install-bsormril\markupsafe\
    Complete output (5 lines):
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "...\pip-install-bsormril\markupsafe\setup.py", line 6, in <module>
        from setuptools import setup, Extension, Feature
    ImportError: cannot import name 'Feature'
    ----------------------------------------
ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
查看原文

安装 Python 依赖出现 MarkupSafe ImportError … Feature 报错的解决方法

来源:greyli   |   更新时间: 3月前   |   分类: 计算机与编程


这个报错在 3 月 8 号 setuptools 发布新版本之后出现,通常会在安装 Python 依赖时触发。

报错信息

使用 pip 安装依赖时的报错如下:

Collecting markupsafe==1.0
  Downloading https://.../MarkupSafe-1.0.tar.gz (14 kB)
    ERROR: Command errored out with exit status 1:
     command: '...\python.exe' -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'...\\pip-install-bsormril\\markupsafe\\setup.py'"'"'; __file__='"'"'...\\pip-install-bsormril\\markupsafe\\setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base '...\pip-install-bsormril\markupsafe\pip-egg-info'
         cwd: ...\pip-install-bsormril\markupsafe\
    Complete output (5 lines):
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "...\pip-install-bsormril\markupsafe\setup.py", line 6, in <module>
        from setuptools import setup, Extension, Feature
    ImportError: cannot import name 'Feature'
    ----------------------------------------
ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
查看原文

Use the Index, Luke! 笔记6:增删改的索引

来源:kawabangga   |   更新时间: 3月前   |   分类: 数据库


前面我们讨论的都是查询语言,但是 SQL 不仅仅是查询,还需要修改数据。索引是完全冗余的数据,是用空间换时间的一种形式。对于修改数据来说,这就意味着不仅要修改表中的数据,还要修改索引中的数据,索引对修改数据来说会带来负面的性能影响。

Insert 语句几乎是唯一无法从索引获益的语句,因为 insert 没有 where 条件。

索引越多,insert 执行的就越慢。

查看原文

《Flask Web 开发实战》虚拟环境/依赖/Pipenv 等问题解决方法

来源:greyli   |   更新时间: 3月前   |   分类: 计算机与编程


注:这篇文章的主要受众是《Flask Web 开发实战》的读者。

注2:文中的 $ 符号标识一条命令行命令的开始,$ 前面是当前工作目录,# 号后面是注释。你实际只需要输入 $ 符号和 # 号之间的内容,不包括开头和结尾的空格。

在群聊和论坛里总是看到和虚拟环境和依赖安装相关的各类问题,这篇文章希望能够提供一个统一的解决方案。下次如果遇到有人问虚拟环境/Pipenv/依赖安装相关的问题,请把这篇文章的链接丢过去。

查看原文

《Flask Web 开发实战》虚拟环境/依赖/Pipenv 等问题解决方法

来源:greyli   |   更新时间: 3月前   |   分类: 计算机与编程


注:这篇文章的主要受众是《Flask Web 开发实战》的读者。

注2:文中的 $ 符号标识一条命令行命令的开始,$ 前面是当前工作目录,# 号后面是注释。你实际只需要输入 $ 符号和 # 号之间的内容,不包括开头和结尾的空格。

在群聊和论坛里总是看到和虚拟环境和依赖安装相关的各类问题,这篇文章希望能够提供一个统一的解决方案。下次如果遇到有人问虚拟环境/Pipenv/依赖安装相关的问题,请把这篇文章的链接丢过去。

查看原文

近况更新

来源:kawabangga   |   更新时间: 4月前   |   分类: 程序开发笔记


这是一篇碎碎念,最近有一些想法想分享一下,但是内容又比较简单,不适合写成一篇博客,twitter 又写不下,就一起写一篇博客好了。

首先是上个周做的有关命令行的分享,个人觉得比较满意吧,大家参与的热情也很高,提了不少问题,我自己想说的东西也都分享了。从另外两位讲师的分享中,我自己也学到很多东西。

命令行操作是一个程序员必备的技能。对我来说,写代码是我热爱的事情,我觉得要拿编程作为自己的饭碗(而不是焦虑着如何“在35岁之前转管理”),1)要不断学习新的技术;2)理解这些技术背后的原理更为重要,学习要学到精髓,技术一直在变,但是基本的原理(网络、容器、存储甚至机器学习等)几十年来的变化不大;3)要擅长使用自己的工具。第三点很容易被忽视,但是我觉得是程序员成长路上比较重要的一部分。如果你自己连自己的工具都用不溜,那你很难喜欢自己的编程工作。我见过一些蹩脚的程序员,解压 tar 包都要去网上下载一个解压工具。也难怪想方设法要转管理来脱离编程的“苦海”了。工具的使用不受重视的原因,有一点我觉得是技术氛围是比较受“面试官”导向的。比如面试喜欢问你读过什么源代码,就导致很多人读过各种牛逼项目的源代码,却连文档都没看完;比如面试喜欢问一些“JVM原理”,就造成候选人好像人人都是 Java 专家,却写不好 Java 代码;又比如很多人能回答上来 TCP 一些刁钻的问题,但是却不懂 TCP 的基本原理。面试中很少有人会问你工具如何使用,写一个命令行工具也远不如写一个xxx系统/中间件对面试官来说有吸引力,但是现实是,很多人连“将一个文件夹从一台服务器传到另一台”都做不好。

查看原文

Flask 新书完成时间推迟

来源:greyli   |   更新时间: 4月前   |   分类: 读书与写作


很抱歉没能按照预期时间完成Flask 新书。本来这个消息要到四月一号(预估的完成时间)发布的,但是怕被当做愚人节玩笑,所以还是提前一点比较好。

去年大部分时间花在了组织活动和准备演讲上,而今年前几个月又大都用来玩游戏和做外包了,所以一直没有全身心投入到新书写作上,目前大约只完成了一半……

为新书写了一个简单的主页,地址在http://helloflask.com/book/2。我在页面上放了一个写作进度条,方便感兴趣的人了解进度。同时也加了一个订阅功能,你可以用 Email 来订阅新书的发布消息。

查看原文

Flask 新书完成时间推迟

来源:greyli   |   更新时间: 4月前   |   分类: 读书与写作


很抱歉没能按照预期时间完成Flask 新书。本来这个消息要到四月一号(预估的完成时间)发布的,但是怕被当做愚人节玩笑,所以还是提前一点比较好。

去年大部分时间花在了组织活动和准备演讲上,而今年前几个月又大都用来玩游戏和做外包了,所以一直没有全身心投入到新书写作上,目前大约只完成了一半……

为新书写了一个简单的主页,地址在http://helloflask.com/book/2。我在页面上放了一个写作进度条,方便感兴趣的人了解进度。同时也加了一个订阅功能,你可以用 Email 来订阅新书的发布消息。

查看原文

本页内容使用均遵循相关开源协议,部分内容获得作者本人授权