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

[python]记录关于websocket的原理和使用

Python websocket note django

什么是 websocket

WebSocket 是一种在单个 TCP 连接上进行全双工通讯的协议。WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在 WebSocket API 中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。

Websocket 是一个持久化的协议,相对于 HTTP 这种非持久的协议来说的。

举个例子:

HTTP 的生命周期通过 Request 来界定,也就是发送一次 Request,收到一次 Response ,那么在 HTTP1.0 中,这次 HTTP 请求就结束了

在 HTTP1.1 中进行了改进,使得有一个 keep-alive,也就是说,在一个 HTTP 连接中,可以发送多个 Request,接收多个 Response。但是请记住 Request = Response , 在 HTTP 中永远是这样,也就是说一个 request 只能有一个 response。而且这个 response 也是被动的,不能主动发起。

而对于 websocket 来说,在 HTTP 的握手基础上建立起链接,服务器端可以主动的向客户端发送数据。

Read more...

[笔记]git push卡主不动问题记录:Git push hangs on POST git-receive-pack

git note solution

问题

昨天完成了《一个完整的 Django 入门指南》 - 第 6 部分的翻译工作,本地在翻译的过程中,存储了十几张原文中的 png 格式的插图。

git push 提交 github 仓库的时候,终端显示写成功 100%, 但是一直卡在了下面这里没有推送成功:

Counting objects: 21, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (21/21), done.
Writing objects: 100% (21/21), 1018.52 KiB | 17.87 MiB/s, done.
Total 21 (delta 7), reused 0 (delta 0)
# 卡在这里
Read more...

[Python]使用pipenv管理python虚拟环境

pipenv autoenv Python virtualenv

前言

近期的项目中,我开始尝试着从 virtualenv 管理 python 虚拟环境,切换到用 pipenv 来管理。

经过一段时间的使用,着实觉得 pipenv 使用的更加顺手,更加的便捷。这当然也延续了 Kenneth 大神一贯的项目作风– For Humans

再配合上 autoenv(自动激活虚拟环境的工具),更加的 Perfect!

Read more...

[Python]Uvicorn初体验

uvicorn web Python asyncio

uvicorn 简介

uvicorn是一个基于asyncio开发的一个轻量级高效的 web 服务器框架。

官网:http://www.uvicorn.org

uvicorn 设计的初衷是想要实现两个目标:

它目前支持httpwebsocketsPub/Sub 广播,并且可以扩展到其他协议和消息类型。

Read more...

[算法笔记]动态规划之最长公共子串和最长公共子序列

动态规划 algorithms Python

本文是《算法图解》笔记

应用场景

一切脱离实际应用场景的算法都是耍流氓!

  • 生物学家根据最长公共序列来确定 DNA 链的相似性,进而判断两种动物或疾病有多相似。最长公共序列还被用来寻找多发性硬化症治疗方案。
  • 源代码管理中,git diff指令,可以查找出编辑前后文件的差异,这是基于动态规划实现的。
  • 编辑距离(levenshtein distance),判断字符串的相似程度,也是基于动态规划计算。可以通过这个技术从拼写检查到判断用户上传的资料是否是盗版。(这样看来,我猜想大学论文查重应该也是基于动态规划算法:P
  • Microsoft Word 等软件中具有断字功能,使用动态规划可以确定什么地方断字以确保行长一致。
Read more...

[Jenkins]Error:403 No valid crumb was included in the request

CI ERROR jenkins csrf

错误备忘

配置 jenkins 的时候,一直报这个错,是因为 jenkins 默认安全设置里面开启了 防止款站点请求伪造

Read more...

[Python]python如何方便的操作MySQL和Oracle数据库

Python pymysql cx_Oracle

环境

Read more...

[区块链]区块链和通证的应用与技术路径

blockchain note 通证经济

前言:1 月 21 日参加 CSDN 举办的区块链沙龙,以下是来自 CSDN 副总裁孟岩的 Slide 笔记。表达上使用了个人的理解,如果有哪里理解错误,还请在评论中指正。

产业形势和发展方向

三大派别

目前国内的区块链产业形势分为 三个派别,这三个群体需要分开来评判看待。

最为我们大众所熟知的一些企业,或者说是一些数字货币,大都属于圈公司。这一类公司可以用六个字总结:“只造势,不做事”。各种铺天盖地的宣传,为的是制造其发行的数字货币的影响力,而并没有实际的实体价值依托。

因为我们大家日常接触或听到的大部分都是币圈的公司信息,所以常常会有人说:“区块链这个技术没有实际的落地应用,只是个噱头”。其实不然,国外其实有很多的公司在做着基于区块链技术的应用,只是因为这一类的公司不会去发行数字货币,也不发通证(通证的概念后面会提到),只是在借助区块链技术在做着一些实际的应用产品,所以往往不被人所了解。这一类的公司就属于链圈公司范畴。链圈的公司会有很多基于区块链技术的落地应用,但是因为每个产品都是独立的,影响力是很有限的,所以无法对全球产生革命性的改变。

还有第三个派别就是—“通证派”。首先理解一下通证的定义,通证,英文的名字是Token,还有的人译作“代币”,但是这个真不是一个很雅的翻译,我更倾向于称之为“通证”。通证的核心是,流通,通证是一种价值转移的载体形式。

通证有广义的通证和狭义的通证之分,狭义的通证包含但不限于:身份证,房产证,信用卡,用户积分,通行证,门票,购物卡,发票,股票,债券等等…广义的通证是在狭义的通证基础上多一个数字加密货币

Read more...

[python]web框架中的代码自动重载怎么实现

Python reload Flask Django uWSGI

在开发和调试 wsgi 应用程序时,有很多方法可以自动重新加载代码。例如,如果你使用的是werkzeug,则只需要传use_reloader参数即可:

run_sumple('127.0.0.1', 5000, app, use_reloader=True)

对于 Flask,实际上在内部使用 werkzeug,所以你需要设置 debug = true:

app.run(debug=True)

django 会在你修改任何代码的时候自动为你重新加载:

python manage.py runserver

所有这些例子在本地开发的时候都非常有用,但是,建议不要在实际生产中使用。

作为学习,可以一起来看一下,python 是如何让代码自动地重新加载的?

Read more...

[python]ImportError:attempted relative import with no known parent package

Python 翻译 importError

前言

在这篇文章中,我将会解析 ImportError: attempted relative import with no known parent package 这个异常的原因。当你在运行的 python 脚本。使用了相对引用方式 (类似import ..module) 去引用包时,可能会出现这个异常。

Read more...

[译]关于python字典类型最疯狂的表达方式

Python translation dict trick

一篇来自 Dan Bader 的有趣的博文,一起来学习一下,如何去研究一个意外的 Python 现象。

Read more...

写Flask应用时的一些优雅技巧

python flask pythonic tricks

借助find_modules,import_string优雅地注册蓝图模块

find_modules, import_string这两个函数包含在werkzeug.utils工具包中,借助着两个工具函数可以帮助我们在更优雅的给应用注册blueprint模块,尤其是当项目中blueprint模块很多的时候,会节省很多行代码,看起来更加的舒服。

Read more...

[译]python中的global和nonlocal的实践

python translation global nonlocal

今天的博文翻译是关于 python 中 global 和 nonlocal 两个关键字的用法,原文的作者是来自孟加拉国的Tamim Shahriar,他的博客非常适合新手朋友去阅读,都是简短而有意义的 python 实践。

我们大多数人都对 Python 中的全局变量很熟悉了。如果我们在一个模块中声明全局变量,模块内部的任何函数都可以访问这个全局变量。(模块可以理解为一个python文件或.py文件)

Read more...

[译]Python的enumerate()函数揭秘

python translation enumerate

今天的原文的作者是来自国外的一位 Python“布道师”Dan Bader,他的博客完全就是一个个人品牌的学校。有跟多 Python 技巧,有很多他录制的 Youtube 视频,国内的 Pythonista 们,不妨订阅一下他的每周邮件推送。订阅链接

今天的译文是他博客中的一篇,点击查看原文

如何以去写以及为什么你应该使用 Python 中的内置枚举函数来编写更干净更加 Pythonic 的循环语句?

Read more...

[译]编码,编码,编码!提高编程技能的唯一途径

python translation experience

最近博客没什么更新。工作上新项目马上要开始了,我很清楚自己的技术积累很匮乏,需要学习的东西太多了,但又不知该从何学起。以前听过一句话,不知道怎么规划学习的时候,只管学就好了。最近家里也储备了一批的新书,都还没来得及看,所以暂时不想怎么规划博客了,接下来到过年的这两个月,博客的文章将都是国外博客的译文,希望可以学习大神经验的同时提升自己的英文水平。

今天是第一篇,来自前美国宇航局工程师,python 大神Daniel Roy Greenfeld的博客中的一篇《code,code,code》,旨在帮助新手程序员知道如何才能提高自己的编程技能。

Read more...

脱离Flask上下文,使用jinja2渲染html模板

Python template jinja2

前言

首先,如果一个正常的 flask 带路由的接口,我们是不需要关心上下文对象的,Flask 做了很多“魔术”的方法,当一个 Flask 应用接收到一个请求的时候,它会在将逻辑委托给你的视图函数之前,创建好一个上下文对象。

当我们返回的时候调用render_template(template, **context),就可以正常的渲染界面返回,在这个函数中,如果看一下源码就会发现,返回渲染之前,会创建一个 ctx 去获得当前环境的app变量。然后通过这个 ctx 去渲染传进来的context参数列表。

Read more...

[译]Python3:变量注释

Python annotation translation

Python 在 3.6 版中添加了一个叫做变量注释的语法。变量注释简单讲就是对于类型提示的增强,这个概念是在 Python3.5 中开始引入的。变量注释的完整解释在PEP 526中进行了详细说明。在本文中,我们将将要的回顾一下类型提示,然后再介绍新的变量注释语法。

Read more...

rsync服务器配置文件参数备忘

Linux rsync
最近工作中用到了 rsync 服务器,对于 rsync 服务器的配置来说,不是很复杂,网上有很多介绍。rsync 的配置文件是最重要的一部分。有很多参数需要了解一下,所以今天记录整理一下,方便以后自己查看。 基本介绍 Rsync(remote synchronize)是一个远程数据同步工具,可通过 LAN/WAN 快速同步多台主机间的文件。Rsync 使用所谓的“Rsync 算法”来使本地和远 程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。 rsync 的配置文件是由一个或多个模块结构组成。一个模块定义是以方括弧中的模块名开始,直到下一个模块定义开始或者文件结束。 模块中包含格式为name = value的参数定义。每个模块其实就对应需要备份的一个目录树,比方说在实际环境中,有三个目录树需要备份:/www/、/home/web_user1/和/home/web_user2/,那么就需要在配置文件中定义三个模块,分别对应三个目录树。 配置文件是行为单位的,也就是说每个新行都表示一个新的注释、模块定义或者参数赋值。以#开始的行表示注释,以"“结束的行表示下面一行是该行的继续。参数赋值中等号后可能是一个大小写不敏感的字符串、一个以trure/false或者yes/no表示的布尔值。 全局参数 在文件中[modlue]之前的所有参数都是全局参数,当然也可以在全局参数部分定义模块参数,这时候该参数的值就是所有模块的默认值。 motd file 指定一个消息文件,当客户连接服务器时该文件的内容显示给客户,默认是没有 motd 文件的。该文件有无都不影响 rsync 的正常使用。 log file 指定 rsync 的日志文件,而不将日志发送给syslog。 pid file 指定 rsync 的 pid 文件。 syslog facility 指定 rsync 发送日志消息给 syslog 时的消息级别,常见的消息级别是:uth, authpriv, cron, daemon, ftp, kern, lpr, mail, news, security, sys-log, user, uucp, local0, local1, local2, local3,local4, local5, local6和local7。 默认值是daemon。 模块参数 在全局参数之后就需要定义一个或多个模块了,模块中可以定义以下参数: comment 给模块指定一个描述,该描述连同模块名在客户连接得到模块列表时显示给客户。默认没有描述定义。 Read more...

自动化DDL审核|pymysql链接Inception中踩过的几个坑

pymsql Inception Python

简单整理了一下这几天使用 pymysql 链接 inception 做 sql 审核过程中出现的坑和解决方法。

这些解决方法一定不是最漂亮的,如果有伙伴遇到同样的问题,并且有好的解决方案,请一定在留言中回一下我哦。

先行感激!!

Read more...

Python|寻找最大最小的N个元素几种方法

Python sort

实际的生产中,常常会需要处理一个序列,找出其中的 N 个最大或者最小的元素,这里提供几种思路,不同的情况,使用不同的搜索方式,可以更好提高我们代码的运行效率。

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