Dockerize Python Web 应用

虽然“人生苦短,我用 Python”,但是很多时候一个 Python 新手写完第一个 Web 项目之后会陷入 WSGI 是什么?接下来要干啥的蒙蔽状态中。不过好在有 Docker 这个神器,相信了解它之后,就能体验 Python + Docker 的双倍快乐并不

本文只是一个向导,基于本地编排,一步一步来实现一个 Flask 应用的容器化,想要能顺畅的阅读,至少需要了解一些 Docker 的基本知识,基本的镜像构建命令。

[阅读全文]

博客搬家——从 Hexo 迁移到 Hugo

久违的再次迁移博客,这次是由 Hexo 迁移到 Hugo,对于 Hexo 其实也没并没有觉得不好用,当然,可能还是我懒癌写的博客篇数太少的缘故。

Github 开启了免费私有仓库之后,自建 Git 仓库的需求消失了,阿里云服务器唯一存在的意义就只有博客了。这次除了用 Hugo 代替 Hexo 之外,还会使用 Caddy 来替换 Nginx,顺便完善一下之前一直有计划但是没动手实现的自动更新。

[阅读全文]
Hugo  Caddy 

在 Jenkins 中构建 Eclipse 开发的 Android 项目

本文只是对之前的资料进行一个整理与汇总,毕竟已经 9102 年了,大概已经没有不用 Android Studio 开发的 Android 项目了 :doge:。

问题

Android Studio 与早期 Eclipse 所使用的构建脚本语言不同,Eclipse 是 Ant,Android Studio 则使用 Gradle,两者均是通过调用 Android SDK 进行编译构建。

但是很多时候 Eclipse 开发的 Android 项目代码在仅有 Android 编译环境中,通过 CLI 命令调用 Ant 脚本构建时却无法编译成功。

原因是 Eclipse 中默认使用 Java 编译器并非 Oracle JDK/OpenJDK 而是 Eclipse 的 Eclipse Java development tools (JDT) 中的 Eclipse Compiler for Java (ECJ),正是编译器的差异造成了这些问题。

[阅读全文]

pipenv 快速入门

A Better Pip Workflow™

Python 开发中一般会使用 virtualenv pip 管理项目运行环境与依赖。在创建一个新项目时先使用 virtualenv 创建一个虚拟运行环境,然后使用 pip 安装依赖,最后使用 pip freeze > requirements.txt 记录项目依赖。这个过程中会遇到一些问题:

  • 版本信息没有保存
  • 升级依赖包时需要先查看requirements.txt
  • 开发环境与生产环境依赖区分

解决上述问题最直接的做法就是生成多个 requirements.txt ,比如:requirements-dev.txtrequirements-prod.txt 并记录好依赖版本信息,或者选择 Pipenv: Python Dev Workflow for Humans

[阅读全文]

在 Windows 上部署 Laravel 项目

Laravel 框架中需要部署 PHP Web、队列、任务调度三部分功能,官方文档中只有 Linux 下的部署说明。虽然 Linux 纯 CLI 看起来更高大上,不过 Windows 也是一种解决方案。

[阅读全文]
PHP  IIS  Windows 

在树莓派上学习 Docker —— Part 3

已经掌握了如何 Run Docker 镜像,接下来就是如何 Build 、Ship。

首先需要知道镜像(Image)是只读的,容器(Container)是可写的,为了方便 Image 的分发,还需要一个集中保存管理 Image 的地方,称为 Docker Registry。

[阅读全文]

一次 DNS 查询会产生多少流量

参考资料:

以客户端的角度,根据相关协议的 RFC 文档内容来计算 IPv4 网络中一次 DNS 查询会产生多少网络流量。

根据 RFC 1122 TCP/IP 模型可以知道,要计算一次 DNS 查询所产生的流量,首先需要知道 DNS 协议在应用层产生的数据大小,然后根据传输层 TCP 或 UDP 协议计算出数据封包后的大小,最后根据网络层 IP 协议计算出实际产生的流量。

[阅读全文]
DNS