SQLite 的 Python 接口

查看原文

这篇文章对 SQLite 的 Python 接口做了很全面的介绍。走马观花介绍一下特性:.tables 查看全部表;SELECT SQLITE_VERSION() 获得 SQLite 版本;finally: if conn: conn.close() 是安全关闭连接的写法;with conn 是另一种写法;.headers on 可以在输出是把表头带上;cursor.executemany 可以执行批量数据;cursor.lastrowid 获取最后一次插入的 id; fetch 出来的数据可以用数字作为索引获取字段,也可以用字段名获取字段;参数化查询用 "?";字段用 BLOB 可以存二进制数据,例如图片;用 PRAGMA table_info(table) 可以查看 SQLite 的元数据,例如表,列信息 …

read more

HTML 默认样式是 responsive 的

查看原文

HTML 不加入任何样式的时候本身就是完美适配任何设备的。作者认为没有任何样式的网站又轻量,又是响应式的,甚至在各种奇形怪状的设备里都能渲染出来。(事实上很多 UNIX/Linux 程序的简介至今还是这种风格。) HTML 源码最后有颗彩蛋。

read more

PEP8

查看原文

PEP8 为我们制定了很多编码规范。在这之外,其实还有很多小技巧来提升代码可读性,譬如 @kennethreitz 写的这篇。文章前面的声明很值得一读:代码的一致性也很重要,有时候违反规范保持代码风格一致性也是蛮好的,自己判断好就行。

read more

SYN 洪水攻击简介

查看原文

SYN 洪水攻击是一种 DDos 攻击的常见形式。它基于 TCP 三路握手的弱点。一次三路握手会经历客户端 SYN, 服务端 SYN-ACK, 客户端再次 ACK。服务端在客户端 SYN 到达时调用 accept() 并阻塞,在客户端 ACK 收到 accept() 才返回。SYN flood 就是发送大量恶意的 SYN 给服务器,又不发 ACK 给服务器,结果服务器就要维护非常多的连接对象,直到内存被撑爆。防御手段的话得要对 TCP 协议做出一些修正,例如收到 SYN 只开一点内存用于存客户端信息而不创建连接,或者通过校验才创建连接等等。一般对于 DDos 攻击,服务端没有什么好的防御手段,只能硬扛,除非去购买 DDos 防御服务,把流量先引到服务商那里清洗干净了再导回来 …

read more

Side Project 使用 nohup 监管进程

查看原文

开发 side project 时,有时候会快猛操的连 supervisord 都懒得配,比较简单的方案就是用 nohup 去起一个进程。只要 daemon 程序做好容错,不会崩溃,nohup 非常省心。起进程时记得把标准输出和标准错误重定向到一个日志文件去方便排查。nohup your-command > /var/log/your-command.log 2>&1

<script>alert(1)</script>
read more

Crontab 支持从命令行标准输入读取配置

查看原文

我们一般使用 crontab -e 配置定时任务,它会触发一个交互编辑器让我们编辑定时任务的条目。那么如何做到不触发交互编辑器呢?一个思路是使用 crontab -l 输出配置,然后用 cat/sed/awk/echo 等命令做文本替换,再用 crontab - 写回。

read more

PyPI 早期只有一个人维护

查看原文

作为 Python 生态圈的基础设施,PyPI 基本上处于 @dstufft 一人开发,一人维护的状态。与其他社区项目一样,一旦它出了问题,我们更应该做的是去复现修好它,或者至少把步骤写清楚能让开发者复现出来,而不是去抱怨它又挂了又挂了又挂了。

read more

使用 Python 连接 SQLite 数据库

查看原文

SQLite 有诸多限制,但不妨碍成为非常流行的工具。它最大的限制是不支持并发访问,如果同时有数据库连接,并且有一个连接在修改数据库,其他数据库的访问都会被锁住,直到那个事务提交。这个锁导致堵塞,会有默认 5 秒的超时。所以 connect 函数需要考虑超时的场景。在 Python 中,我们可以自定义 detect_types 字段来扩展 SQLite 只有数字/字符串/文本/空 这么简单的几种类型。参数 cached_statements 用来缓存 SQL 语句的解析结果,默认缓存 100 条。不过我感觉相比业务,SQL 解析不太会是瓶颈。

read more

Python Coroutine 和 Go Goroutine 对比

查看原文

使用 Python 实现多线程通信时得用锁把共享变量锁住,要不然就是用线程安全的 Queue 存任务数据。Go 语言的 goroutine 关键字可以确保任意时刻只有一个 channel 可以访问,其余 channel 会被堵塞。单单就示例代码来说,对 Python 的评价有些过时,现在对这种场景 Python 有了更好的工具:coroutine,参考 https://gist.github.com/soasme/27f844e5c82c07a6ac85af46f5af54b6

read more

« Page 53 / 54 »