====================
== Hi, I'm Vimiix ==
====================
Practice makes perfect (ง •̀_•́)ง

从七牛云到阿里云的自动化迁移代码说明

Python tool

前几天叙事性的写了一篇,有点像日记,这篇分析一下代码逻辑,便于以后回顾。

工具

  • python3.5
  • 顺手的 IDE(轻量级推荐vscode
  • qiniu/qshell (本文是基于 mac 系统开发,所以使用 qshell 的 mac 版本,读者请根据自己的系统下载,也可以直接跳至文末,下载本文源码,源码中 tool 文件夹中已经下载好了 mac 下的工具。这个工具只有一步使用到,所以如果只是使用一下,可以不用研究他的所有指令)
Read more...

七牛云数据自动迁移到阿里云OSS

Python tool migrate

背景

近期收到两封七牛云发来的邮件:

测试域名回收通知

您的账号 xxx 在七牛云融合 CDN 加速平台有以下测试域名还剩 7 个自然日会被系统自动回收

由于,我博客所有的图片文件都是存储在七牛云的,这个域名也使用了一年多了,怎么突然要回收呢?

上网一搜才知道,大概是有什么不法分子之类的,使用七牛云的免费空间传播色情暴力之类的内容,被 Godday 制裁了,现在新申请的 bucket 只能使用一个月,要想绑定域名,还得备案操作。俺这小博客,也就自己玩玩的一个国外服务器,也备不了案啊。

无奈,看网上很多人都是被回收了才知道自己的图片都访问不了。还好我习惯性的看这些推送邮件,给自己留了一周时间用来备份转移。既然免费的不好用了,微博之类的图床不好迁移,所以就买了一年阿里云的 OSS 服务。

虽然我的图片还算不是很多,但要是一张一张手动下载再上传到阿里云,也是不小的工作量,而且太浪费时间了。

Read more...

pipenv错误解决:TypeError: "module" object is not callable

Python note pipenv solution

软件版本

今天在折腾一台新的云主机,所以我在安装环境的时候pippipenv都选择安装了最新版本

注:正是这两个版本配合才会出现下面的报错,旧版本或以后的新版本的 Pipenv 不会出现)。

具体如下:

// pipenv 的版本 2018.7.1
$ pipenv --version
pipenv, version 2018.7.1

// pip 的版本 18.1
$ pip --version
pip 18.1 from /usr/bin/python3.6/lib/python3.6/site-packages/pip (python 3.6)
Read more...

macOXS中使用matplotlib遇到的问题及探究

Python note matplotlib solution

第一次在 mac 系统上使用matplotlib库的时候,在执行的时候,往往会遇到下面这样的问题:

ImportError: Python is not installed as a framework. balabala....

解决方案

当然这个问题很好解决,网上有一搜就会找到如下两种解决方案:

第一种方案是在系统中设置:

  • 假设你已经通过pip install matplotlib安装了 matplotlib,那么在你的根目录中会有一个名为〜/ .matplotlib的目录。
  • 在这个目录中创建一个matplotlibrc的文件 ,在里面添加一行代码:backend: TkAgg,保存退出即可。

总结为一行 shell 命令就是:echo "backend: TkAgg" >> ~/.matplotlib/matplotlibrc

这种方式可以设定整个系统的 matplotlib 渲染使用的引擎,但是不好的是,代码会变得不可移植,如果服务器很多,我们需要每一台机器都去设置这个参数,这时候就需要使用第二种方案。

第二种方案是在代码中设置:

在引用matplotlib库的代码之前,添加如下两行代码(确认安装 TkInter):

import matplotlib
matplotlib.use('TkAgg')

这样也可以临时的修改前面提到的 backend变量。

Read more...

[译]实践出真知

note translation
Aristotle(亚里士多德),希腊著名的哲学家和科学家,曾经说过:“对于那些我们在能做到之前必须学习如何做的事情,我们需要边做边学 (For the things we have to learn before we can do them, we learn by doing them.)”。想象一下,假如你已经读过 3 本关于骑行的书了,然后有人给你一辆自行车并让你骑它,你能骑吗?很显然,答案是“不能”。这无关乎你曾经读了多少关于骑行的书或你看了多少相关视频的事情。它需要你真正骑上一辆自行车,去保持平衡,去学习脚,手和眼睛的协调配合才能掌握的一件事情。学习新技术,新语言或框架同样也是如此。 如果现在你在想:我都不会某个语言或某个框架,我要怎么去实现这个开源项目呢,那么先停止抱怨。也许你是技术或编程的新手,但你需要知道如何去学习新事物。学习新东西的最好方法就是实践。这篇文章将重点关注普适通用的方法。它会帮助你从我想要学习’X’到我有一个项目在’X’运行,所以继续往下看。如果你决定通过做一个项目来学习新东西,那就把它开源吧。Github 是托管你的开源项目的首选服务商。在其上你可以享受很多的免费服务。这篇文章的编写主要面向编程起步者,但对于经验丰富的软件工程师也同样有用。 摘要(TLDR;) 通过编写项目来学习语言/框架,然后使用免费使用服务开源出去。不要只看课程,阅读文档,然后找到解决方案就完事,实践出真知。在项目中去使用 git 并尽量 docker 化。代码需要添加正确的代码质量检查服务以找到最佳实践,将项目部署到服务器上,让其可以对外通过 URL 访问。 不要只看课程,阅读文档,找到解决方案就完事 如今,学习新知识有很多选择。视频课程仍然是最受欢迎的媒介之一。你可以在Udemy,Pluralsight甚至Youtube上学习。在你边做边学之前,观看视频只会在某种程度上有所帮助,更好的方式是阅读官方手册。例如,阅读 React JS 文档比仅通过观看 React JS 课程更好。这样你会发现创作者的思想在其中。理清创作一个 Javascript 框架/库背后的逻辑会帮助你找到最合适的解决方案。 学习使用 Git 进行协作 “没有谁是一座孤岛” ,特别是在技术方面,你通常不会单独工作,肯定是作为团队的一员。因此,即使在学习新内容时,也要尝试找可以一起合作的人。与其它流行的代码协作工具相比,Git 非常受欢迎。当有超过 1 人为项目编写代码时,它是很有用的。你应该通过实践学习 git,可以通过查看Github 教程。我强烈推荐边做边学。当你将代码推送到 Github 之后,任何人都可以为你的项目贡献力量。 实现 docker 化,克服我的机器综合症 都8102 年了,如果你想让你的应用程序更易于使用,请使用Docker。这对于增加对开源项目的贡献也有很大帮助。使用docker compose在本地运行项目就像执行 2 个命令一样。Docker 有很多优点。对于初学者来说,这是一种确保你的应用可以在其他人的机器上以相同的方式运行的方法。在你部署应用程序的服务器上也是如此。只要它在 Docker 上运行良好,你就大可以放心,它保证可以在任何环境中无问题地运行。 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...
上一页 2 of 8 下一页