[返回] [最新] [最热门] [最高评价]

Dockerfile 最佳实践之善用 ADD/COPY 来加快 Build

好久没有练习 Docker 技术了,最近一个项目重新使我用起了这项技术,并且在之前的基础上有了一个小的认知提升,那就是「善用 ADD/COPY 来加快 Build」。

之前对 Docker Build Image 有一个误区,总以为 Dockerfile 写得越简洁越干净越好,哪知这会造成意外的后果。拿我的 Python Web App 来说吧,有一步是从用 pip 从 requirements
...

图拉鼎 2018-06-20 20:49 | 查看: 415

修复 Django migration 时遇到的问题

今天想给自己的 Blog 加点功能,顺便补上测试,然而第一步在创建测试数据库就过不了,我就尝试解决这个问题。

在跑 ./manage.py test 时,先会创建一个测试用的数据库,这时我遇到了一个问题:

ValueError: Related model 'telegrambot.User' cannot be resolved

这个错误是指,相关的 Model telegrambot.
...

图拉鼎 2018-06-13 22:52 | 查看: 338

为 Nginx 启用带请求消耗时间的 access log

我是用 Nginx 作为 Proxy 来跑 Web Server 的,最近想做一件事情,就是 Profile 一下我的 Web Server 的运行状况,其中一个基本的点就是:性能。在参考了一些资料后,我打算先从 Web Server 的请求时间做起来。

默认情况下,Nginx 的 access log 是不会显示请求时间(request time)的,这需要我们给它的配置文件自定义一下 log
...

图拉鼎 2018-06-11 17:30 | 查看: 318

Python 3 的环境下如何正确地使用 Fabric

注:标题中「Fabric」指的是 Fabric( http://www.fabfile.org ),一个 Python 社区常用的远程/本地自动化执行工具。

讲 Fabric 之前,先讲讲我的 Python 开发环境。

很久以前,那会还在用 Python 2,Fabric 也是 Python 2 环境下的,当时我基于 Fabric 写一些部署和自动化脚本,很方便,也没有什么问题;

去年,我把
...

图拉鼎 2018-05-21 13:36 | 查看: 337

Swift 下用 lazy 让方法只被调用一次

在写 Swift 的过程中,我们会经常使用 lazy 来延迟一个对象的初始化。今天我发现了一个关于 lazy 的新的用法,也就用 lazy 来达到使「方法」只被调用一次,而不仅限于用在「对象」上。

lazy 常常用在一个对象需要延迟加载、或者初始化它的时候,要求 self 已经初始化成功的情况,比如:

lazy var shareItem: UIBarButtonItem = UIBarBut
...

图拉鼎 2018-05-10 13:22 | 查看: 341

Swift 的 Protocol Composition(协议组合) 的一种用法

最近在项目中用到了 Swift 的 Protocol Composition(协议组合),觉得这真是一个不错的设计,于是来简单的聊一聊我是怎么用它的。

Protocol Composition,中文叫「协议组合」或「协议合成」,简单地来说就是把不同的协议合起来以使目标对象限定在满足全部协议的一种方式。它的用法也蛮简单的,官方文档的这个例子可以很明了地学会怎么使用它:

一个叫 Named 的协议
...

图拉鼎 2018-05-06 20:06 | 查看: 389

关于在 iOS Extension 里使用「不安全的 API」

iOS 的 Extension 相当于一个权限受限的 App,很多 API 是无法使用的。如果你在 Extension 里用了这类 API、或者用了使用了这类 API 的库,那么就会得到这样的警告:

如果你在这个 Extension 里主动调用了相关 API,那么你一定要正视这个警告,并且把相关 API 的调用移除(比如和 UIApplication 相关的),毕竟它们会不工作。

但是如果你像
...

图拉鼎 2018-05-06 15:26 | 查看: 331

使 Visual Studio Code 的打开文件始终在新 Tab

最近会更新一系列和 Visual Studio Code 有关的文章,从小小的自定义设置到开发环境的设计都会涉及。今天这篇是「使打开文件始终在新 Tab」。

在进入这个话题之前,首先我们要了解 Visual Studio Code 有几种打开文件的方式,对我来说,常见的有两种:

从侧边的资源管理器打开;

使用快捷键(CMD+P)搜索文件名再打开。

无论哪种方式,Visual Studio
...

图拉鼎 2018-04-16 10:13 | 查看: 433

Ubuntu SSH 环境下如何自定义 PATH 等变量

今天在设置一台 Server 的时候,又因为一个老问题卡了一下。解决后想:当时要是写了文章就好了…于是为了不发生第三次这样的事情,我写了这篇文章。

这个问题就是 SSH 环境下的 Path 环境变量。在 Server 上,为了使用最新版本的 Python,我是使用 pyenv 在自己的 HOME 安装了一个 Python 3.6.5。pyenv 是用于管理 Python 版本的一个组件,非常好用
...

图拉鼎 2018-04-15 21:33 | 查看: 393

我的 Django + Visual Studio Code 的 Pylint 设置

最近又开始使用起 Visual Studio Code 写 Python/Django 的项目,发现不少地方可以配置,而以前常常忽略了这些,只是简单的安装了相关插件了事。今天先讲讲 Pylint 的相关配置。

使用 Pylint 可以对代码进行最基本的检查,把明显的问题消灭在编写阶段,而不是运行时才看出来。根据《Linting Python in VS Code》,VS Code 已经默认有比较
...

图拉鼎 2018-04-14 21:46 | 查看: 514

实现一个完美的自定义 Share Extension 呈现动画

在 iOS App 里,如果你实现过一个 Share Extension,可能会使用系统自带的 SLComposeServiceViewController 来完成分享动作。不过这个东西自定义性比较差,而且无法汇报错误、展现进度等待,这时会使用自定义 ViewController。

不过在使用自定义 ViewController 时,你又会发现在呈现的动画效果又没有系统的自然,很生硬(参考微信
...

图拉鼎 2018-04-13 15:30 | 查看: 385

实践 Django App Model 和数据库的迁移

良好的重构是项目可持续的一个重要因素。最近开始花时间重构「奇点」的网站部分,其中一个任务就是把 Django 项目的 Model 以及数据库进行迁移和合并,今天实践了一把,很成功,写文章纪录一下。

什么是「App Model 迁移」,简单地说,一个 Django 项目可能存在不同的 App,随着项目的发展,或者早先错误的规划,需要重新调整一下项目结构,比如把 App 们合并起来,把 App B
...

图拉鼎 2018-04-12 13:09 | 查看: 571

...更多...