====================
== Hi, I'm Vimiix ==
====================
Get hands dirty.

[译]实践出真知

note translation

Aristotle(亚里士多德),希腊著名的哲学家和科学家,曾经说过:“对于那些我们在能做到之前必须学习如何做的事情,我们需要边做边学 (For the things we have to learn before we can do them, we learn by doing them.)”。想象一下,假如你已经读过 3 本关于骑行的书了,然后有人给你一辆自行车并让你骑它,你能骑吗?很显然,答案是“不能”。这无关乎你曾经读了多少关于骑行的书或你看了多少相关视频的事情。它需要你真正骑上一辆自行车,去保持平衡,去学习脚,手和眼睛的协调配合才能掌握的一件事情。学习新技术,新语言或框架同样也是如此。

如果现在你在想:我都不会某个语言或某个框架,我要怎么去实现这个开源项目呢,那么先停止抱怨。也许你是技术或编程的新手,但你需要知道如何去学习新事物。学习新东西的最好方法就是实践。这篇文章将重点关注普适通用的方法。它会帮助你从我想要学习’X’到我有一个项目在’X’运行,所以继续往下看。如果你决定通过做一个项目来学习新东西,那就把它开源吧。Github 是托管你的开源项目的首选服务商。在其上你可以享受很多的免费服务。这篇文章的编写主要面向编程起步者,但对于经验丰富的软件工程师也同样有用。

Read more...

[译]通过HTTPS协议运行你的Flask程序

HTTPS SSL Flask translation

我们在开发 Flask 应用程序时,通常通过运行 Flask 自带的 Web 服务器来开发测试,这个服务器提供了基本的但功能完备的 WSGI 服务器。但开发结束以后,在应用程序上线到生成环境时,有很多不得不考虑的事情,其中之一是我们是否应该要求客户端使用加密连接以增加安全性。

人们总是问我这个问题,特别是如何在 HTTPS 协议上部署 Flask 服务器。在本文中,我将介绍几种为 Flask 应用程序添加加密的方案,从一个非常简单的可以在五秒内实现,到一个强大的就像我的网站一样可以得到一个 A +评级解决方案(我的网站的 SSL 分析数据)。

Read more...

Git开发记录-合并多条commit最佳实践

git

问题

常规的多人基于 GIT 协作开发的时候,都是遵循先 fork 一份主版本代码到自己的账号下面,然后基于本账户的版本,开分支来开发功能或修 Bug,完成以后再讲修改的内容,提交一个完整的 PR 贡献回主版本。

在本分支上开发的过程中,有时候不得不先提交到自己账号下面的克隆版本中来测试(比如豆瓣的dae pre,无法在本地生成预览,需要提交到远端),我们不能保证一次性提交就做到完美,避免不了会往复的修改后提交,这样的一次次测试用的 commit 属于是冗余的琐碎信息,对于主版本迭代是没有价值的。如果直接在基于该分支提交 PR,甚至被mergeupstream/master主版本中,这些不必要的 commit 信息也会包含进主版本中。这当然不是一个理想的迭代方式。

现在问题明确以后,就是一个目标:将这些开发中的所有 commit 都合并为一条有意义的 commit 信息提交给主版本

Read more...

Django Channels2.0 websocket最佳实践

Django Channels websocket

做 web 后端开发,少不了要和 websocket 打交道。之前写过一篇关于 websocket 的实践文章 — 《[python]记录关于 websocket 的原理和使用》 ,不过,从 GITHUB 上可以看到,django-websocket 这个开源项目俨然已经是一个被放弃了的坑,并且在使用的过程中确实也有很多坑,果断弃之。

今天想聊的就是目前业界大牛都在推荐的一个框架–Channels, Channels 是针对 Django 项目的一个增强框架,它可以是的同步的 Django 项目转变为异步的项目。它可以使得 Django 项目不仅支持 HTTP 请求,还可以支持 Websocket, chat 协议,IOT 协议 ,甚至是你自定义的协议,同时也整合了 Django 的 auth 以及 session 系統等等。

Read more...

浅谈Python中的上下文管理

Python context

with 语法

平常在写 Python 代码的时候,经常会用到with 来处理一个上下文环境,比如文件的打开关闭,数据库的连接关闭等等。

with语法的使用,需要我们处理的对象实现__enter____exit__两个魔术方法来支持。__enter__函数处理逻辑函数之前需要做的事情,并返回操作对象作为as后面的变量,__exit__函数处理当代码离开with代码块以后的事情。

with语法非常方便的让我使用资源并且不用操心忘记后续操作所带来的隐患。

Read more...

《算法图解》读书笔记7-狄克斯特拉算法

algorithm Python Dijkstra

概念

狄克斯特拉算法是从一个顶点到其余各顶点的最短路径算法,解决的是有向图中最短路径问题 (该算法不能处理包含负边的图)。主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。

Read more...

跳槽

生活 跳槽
不知不觉,一个月没有写东西。感觉很快,因为没有感觉;但又感觉很慢,因为心理一直在作斗争。 这将近一个月的时间里,我基本没有和圈内的朋友交流,自己都感觉自己像蒸发了一样。这一个月的经过,给我积累了人生的一次重要经验——项目一定要选对人。剩下的就留给时间去消化吧。 今天以后,我将继续恢复日常的上班,学习,记录生活。 今天,北京天气很好。趁着阳光正好,我正式入职豆瓣了。 豆瓣,因为喜欢 python,慕名而来。 希望自己未来可以在这个 python 的"伊甸园"里面茁壮地成长!

[译]python中垃圾回收和析构函数笔记

GC Python

紧接上一篇转载的文章《Python 魔术方法总结》文末提及的英文参考文章,洒家顺手就翻译了一下。方便墙内的同学学习。这篇文章不仅指出了 Python 如何处理垃圾回收,还提到了我们作为程序员不应该只借助现代化 IDE 的函数提示功能去完成代码,应该多去看官方的完整文档,可以知道哪些函数被废弃的,哪些函数在使用时需要注意什么等等一些很重要的信息。话不多说,自己体会,请向下阅读文章吧。

原文链接:https://www.electricmonk.nl/log/2008/07/07/python-destructor-and-garbage-collection-notes/

我很少在 Python 对象中使用析构函数。我猜 Python 的动态特性往往弱化了对析构函数的需求。但是现在,假如我需要在对象被销毁时,或者更确切地说,当程序退出时,要将一些数据写入磁盘。这时我会使用__del__ 魔术方法在主要操作的类对象中定义了一个析构函数。但是奇怪的是,这个析构函数自始至终都没有被调用到。不仅在程序退出时没有被调用到,而且我手动使用del删除时也不会被调用。由于这个程序是我前一段时间写的,所有稍微有点不是很熟悉了,这导致我怀疑是我程序中有一个大的 BUG 存在。

Read more...

[转]Python中的魔术方法汇总

magic method Python

这是一篇很不错的总结文章,简单易理解,洒家忍不住要转载收藏一下。

源文链接:http://algo.site/?cat=60

基础:

如果你想…所以,你写…Python 调用…
初始化一个实例x = MyClass()x.__init__()
作为一个字符串的"官方"表示repr(x)x.__repr__()
作为一个字符串str(x)x.__str__()
作为字节数组bytes(x)x.__bytes__()
作为格式化字符串format(x, format_spec)x.__format__(format_spec)
Read more...

《算法图解》读书笔记6-图以及广度优先搜索

algorithms Linux

什么是图

图模拟一组链接,图由顶点和边组成。一个顶点可能与众多顶点直接相连,这些顶点被称为邻居

图通常表示为:G(V,E),其中,G表示一个图,V是图中顶点的集合,E是图中边的集合。

简单图

在图结构中,若不存在顶点到其自身的边,且同一条边不重复出现,则这样的图称之为简单图。

无向图

如果图中任意两个顶点之间的边都是无向边,则称该图为无向图。

无向边:若顶点 M 到顶点 N 的边没有方向,称这条边为无向边,用无序偶对(M,N)或(N,M)表示。

Read more...
上一页 3 of 9 下一页