- 博客(49)
- 资源 (11)
- 收藏
- 关注
原创 Ubuntu 系统上 Python 项目开发本地虚拟环境管理方案: pyenv + virtualenv
1. 概述由于使用 pipenv 安装相关包时非常慢,特别是 Lock 操作,故不推荐使用。本文介绍用 Pyenv + virtualenv 管理 Python 项目开发的本地虚拟环境。pyenv: 安装和管理多个 Python 版本。virtualenv: 为每个项目创建独立的虚拟环境。以下所有操作在 Ubuntu 16.04 系统上进行。2. Python 版本管理: pyenv2.1. 安装 pyenv$ curl https://pyenv.run | bashpyenv 相
2020-05-13 17:10:54 317
原创 thingsboard 规则引擎结点功能总结
1. 概述本文结合官方文档和v2.4.3版本源码总结了各规则引擎结点的功能。官方文档的有些描述不太清楚,需要结合源码理清。2. 核心概念规则引擎是一个事件处理系统。能对由设备和资产上传的消息进行 filter, enrich, transform 处理并触发不同的动作,如 notification, 与外部系统交互等2.1. Rule Engine Message 规则引擎消息...
2020-04-30 16:00:38 3939 1
原创 thingsboard 实体及数据存储研究
1. 概述本文主要研究 thingsboard 各种实体在关系型数据库 postgres 中的存储。2. 安装与配置使用 Postgresql 数据库从源码编译安装参考 : https://thingsboard.io/docs/user-guide/contribution/how-to-contribute/编译运行后,需创建 thingsboard 数据库:psql -U post...
2020-04-27 15:21:56 2628 2
原创 C 系程序员20分钟学会 Dart 语言
1. 概述Dart 是 Google 下一代操作系统 Fuchsia 的御用程序开发语言,而是 App 跨平台框架 Flutter 使用的开发语言。它是一种面向对象的语言,使用 C 风格语法,揉合了 Javascript、Python、Java 等语言的相关特性。如果之前熟悉这几门语言,可以快速入门。2. 应知就会2.1. 语句结束符同 C 语言一样,Dart 所有语句都以 ; 结束。...
2020-04-09 11:44:06 492
原创 理解 Docker
概述Docker 是一个用于开发、部署和运行应用的开源平台。它意在使你能更快地进行应用分发。使用 Docker 可以将应用系统和基础设施分离,并且可以用管理应用系统类似的方式对基础设施进行管理。Docker 使用了内核的容器功能 + 工作流程 + 工具来助我们管理和部署应用。什么是 Docker 平台Docker 内核能将应用安全地运行于一个个容器中。同时,它的容器是轻量级的,因而可以在...
2020-03-31 16:45:40 136
原创 Django 的第三方包
第三方仓库 Python Package Index(PyPI)Django 第三方包信息库Django 项目中的 Requirements 文件中的依赖包一定要指定特定的版本号,如:Django==1.8coverage==3.7.1django-extensions==1.5.2django-braces==1.4而你发布的第三方包中,依赖包不能指定特定的版本,版本...
2020-03-31 16:44:25 478
原创 Django 项目中使用 User 数据模型
通过 Django 工具查找 User 数据模型获取 User 类的最佳方式:# Stock user model definition>>> from django.contrib.auth import get_user_model>>> get_user_model()<class 'django.contrib.auth.models.U...
2020-03-31 16:42:07 408
原创 使用 Django Admin
它不是为终端用户准备的,它是为网站管理员准备的使用 Admin 定制 vs 创建新的视图相比于对 Django Admin 进行大量定制,通常创建一个相同功能的新视图会更简单。对象的数据库表示最佳实践:对每个 Django 数据模型都要实现其 str_ 方法,如果使用 python 2.7,使用 django.utils.encoding.python_2_unicode_compat...
2020-03-31 16:40:21 183
原创 权衡替换 Django 核心组件
尽量不要替换 Django 核心组件,除非你了解:可能无法使用一些或全部的第三方应用包不能使用 Django admin 应用你已花费大量时间使用核心组件来创建你的应用,但是发现这些核心组件是主要问题所有你已对代码进行了分析,找出了主要的问题所在你已尝试了其它所有的可能方案,包括缓存等你的项目是一个实时的,有大量用户的网站。即不是在没有根据的情况下进行预优化你已评估了 SOA 模式...
2020-03-31 16:38:12 294
原创 Ubuntu 上开发 Flutter 设置
1. 安装 flutter SDK可以直接 git clone flutter 的 github 库,或从官网下载压缩包,但都比较慢,最好从 中文镜像 下载压缩包。解压到 $HOME/opt/flutter/,并更新路径: export PATH="$PATH:$HOME/opt/flutter/bin"国内下载安装 flutter 相关包会比较慢,最好设置从国内镜像下载,在 ~/.bash...
2020-03-31 16:30:51 295
原创 Django 使用 REST API
以下的前端 JavaScript 框架使得使用 REST API 更加容易:React.js: Facebook 发布,可用于构建 HTML、iOS 和 Android 应用。Angular.js:Google 发布,可用于创建单页应用, Django 社区用地较多。Backbone.js:基于 underscope.js 库。jQuery。学习如何调试客户端客户端调试不只是写 c...
2020-03-25 16:51:16 380
原创 Django 创建 REST API
REST API 设计基础REST API 操作与 HTTP 方法的关系请求目的 | HTTP 方法 | 相应的 SQL------------------------------------|-----------|创建一个资源 | POST | INSERT读取一个现有资源 ...
2020-03-25 16:47:35 467
原创 Tmux 学习摘要7--补遗
PREFIX ?: 列出所有的快捷键,它对应的命令行命令为 :list-keys。:list-commands 列出所有的 tmux 命令。:info 命令显示有关当前会话的信息:w。将命令前缀改为 CTRL-SPACE 更加容易使用,但是输入法切换可能也会用这两个键,因此要进行修改设置。unbind C-bset -g prefix C-Space方便切换到上一个窗口。bind-...
2020-03-25 13:04:11 166
原创 Tmux 学习摘要6--工作流
高效使用窗口和窗格将窗格转变成窗口将当前窗格升级为一个独立的窗口,使用快捷键 PREFIX !,此后,当前会话中会多出一个窗口。将窗口转变成一个窗格在命令模式下使用 join-pane 命令,该命令的格式为:join-pane -s [souce-window-no] -t [target-window-no]-s 和 -t 两个参数都可以忽略,表示为当前的窗口或窗格。最大化窗格与...
2020-03-25 13:01:58 175
原创 Tmux 学习摘要5--结对编程
使用 tmux 进行结对编程的两种方式:创建一个新帐户。在该新用户下创建 tmux 开发环境,其他组员和你共享这个新帐户,并在其下工作。使用 tmux 的 sockets,使得其他人能连接到你的 tmux 会话。这两种方式本质上都有安全隐患:别人会看到你屏幕上的内容。因此,较好的方法是在 VPS 或虚拟机(VirtualBox + Vagrant)上搭建开发环境用于结对编程共享。共享帐...
2020-03-25 13:00:15 204
原创 Tmux 学习摘要4--处理文本和缓冲区
在复制模式下移动当进行测试或者查看日志文件时,由于内容较多,往往需要进行上下翻滚查找。按下 PREFIX [ 进入复制模式,然后可以在屏幕上使用方向键进行移动了。要想使用 Vim 的各种移动键进行移动,可以在 .tmux.conf 中配置:setw -g mode-keys vi使用 PREFIX [ 后进入的复制模板,相当于 Vim 中使用 ESC 进入的 Normal 模式,在其中可...
2020-03-25 12:52:26 924
原创 Tmux 学习摘要3--使用脚本定制 tmux 环境
使用脚本为每个项目定制一个 tmux 环境:创建会话,分割窗口,自动开启项目要用到的程序等。使用 tmux 命令创建定制设置可以使用 tmux 命令在一个会话中分割窗口,改变布局,甚至开启程序。完成这些操作的关键是使用 -t target 开关。当有一个命名 tmux 会话后,可以这样与它进行关联:$ tmux attach -t [session_name]我们使用 -t 开关将命令...
2020-03-25 12:49:44 1588
原创 Tmux 学习摘要2--配置
配置文件系统范围的配置文件是 /etc/tmux.conf,而针对个人的配置文件在 ~/.tmux.conf。通过配置文件,可以定义新的快捷键,定义窗口、窗格布局等。绑定 CAPS LOCK 键到 CTRL 键在 OS X 上:打开 Keyboard preference panel->System Preference,按下 Modifier 键,然后将 CAPS LOCK 的动作...
2020-03-25 12:47:56 341
原创 Tmux 学习摘要1--使用默认配置进行基本操作
tmux 是一个运行于 OS X 和 Unix 上的终端分屏软件 terminal multiplexer。快捷键的表示及按键规则CTRL-b: 同时按下 CTRL 键和 b 键CTRL-R: 同时按下 CTRL、SHIFT 和 r 键CTRL-b d: 同时按下 CTRL 键和 b 键,再松开,然后再迅速按下 d 键安装在 OS X 上:$ brew install tmux...
2020-03-25 12:45:29 169
原创 Github Pages 代码语法高亮支持的语言和语法分析器
Github Pages 现只支持使用 Rouge 来代码语法高亮了。从 Rouge 项目 中摘录支持的语言和语法分析器如下,以便查阅。apache: extend previous fix to apache and cmake lexersapiblueprint: Add a lexer for API Blueprintapple_script: utf-8 rampagebi...
2020-03-25 12:42:58 455
原创 PostgreSQL 初学者应该学会的 11 个任务
一、安装以 Ubuntu 为例,如果无需安装最新版本,只需用:sudo apt-get install postgresql如果要安装最新版本,以 Ubuntu Trusty(14.04) 为例。先从 PostgreSQL 下载页 获取相应的 Apt 仓库信息,然后创建文件 /etc/apt/sources.list.d/pgdg.list, 命令为:sudo sh -c 'ech...
2020-03-25 12:39:52 209
原创 Two Scoops Django 推荐的数据模型最佳实践
添加或修改数据模型都不能马虎,有关数据的操作都需慎重考虑。推荐使用的 Django 数据模型相关的包:django-model-utils: 使用其 TimeStampedModeldjango-extensions: 使用其管理命令 shell_plus,它会自动加载所有已安装应用的数据模型基础将具有很多数据模型的应用进行拆分推荐每个应用的数据模型数不超过 5 个。如果一个应用的...
2020-03-24 16:49:50 242
原创 Two Scoops Django 推荐的 Settings 和 Requirements 文件设置
基本原则Django 1.8 有约 140 个配置项可通过 settings 模块进行设置。settings 模块在每次启动 Django 服务时进行初始化,因此对 settings.py 文件修改后,都要重启 Django 服务器才能生效。所有 settings 文件都应进行版本控制,包括对配置项的修改日期/时间和注释信息进行版本控制DRY,通过 import base_setti...
2020-03-24 16:47:45 180
原创 Django App 设计基本原则
基本原则每个 App 都应该只做一件事。它的功能应该能用一句简单的语句就可以描述清楚,如果描述过程中用了一个以上的 ”以及“,可能就意味着这个 App 有点大了,需要拆分。James Bennett:The art of creating and maintaining a good Django app is that it should follow the truncated Uni...
2020-03-24 16:45:16 596
原创 如何用 cookiecutter-django 进行 Django 项目布局
以下介绍的是 cookiecutter-django 项目布局模板。其它类似的项目模板可以到 这里 找到。Django 1.8 默认生成的布局生成命令:$ django-admin.py startproject mysite$ cd mysite$ django-admin.py startapp my_app生成的布局:mysite/ manage.py my...
2020-03-24 13:47:26 785 1
原创 Django 官方代码风格指南学习摘要
Python 风格以下没有特别提到的,都遵循 Python 的 PEP8 约定,见Python 代码风格指南 PEP8 摘要。PEP 8 中限制行长最多 79 个字符,但 Django 允许最多到 119 个字符(这是 GitHub 代码审查工具允许的宽度)。 PEP 8 限制文档、注释、docstring 的行长为 72 个字符, Django 将它们限制到 79 个字符。使用 Fla...
2020-03-24 13:45:16 135
原创 理想的 Django 环境设置
在开发、测试和生产等所有环境中都使用相同的数据库引擎使用的数据库不相同,会有以下问题:无法将生产环境中取得的数据原封不动地还原到本地进行测试不同的数据库有不同的类型/限制,Django 的 ORM 不可以做到十全十美不能依赖 fixtures 来消除本地和生产环境间的数据库差异, fixtures 只能用于创建简单的硬编码的测试数据,不能作为数据库无关的数据插入工具Django 项目...
2020-03-24 13:43:16 114
原创 欢迎一起翻译thingsboard 中文文档,一起学习thingsboard物联网平台
一起学习thingsboard物联网平台,有谁一起翻译Thingsboard文档吗?中文文档翻译项目: https://github.com/haiiiiiyun/thingsboard.cn, 项目中都列出了翻译进程,以及每篇内容的翻译贡献者。通过翻译,不仅可以进不步了解 thingsboard,还能推广 thingsboard 在国内的使用。为了能看到最新的翻译效果,我自建了个中文文档网站...
2020-03-24 12:08:44 889
原创 一种值得推荐的 Django 项目布局方法
一、这种布局的优点项目中的每个应用都相对独立,方便以后拿出来重用。这样的布局会促使你在开发过程中考虑每个应用的重用性。开发、测试、生产等不同的环境都有各自独立的配置文件,方便配置项的共享和定制。不同的环境都有各自独立的 pip requirements 文件。每个应用都有各自的 templates 和 static 目录,你可以通过项目级的 templates 和 s...
2020-03-20 16:55:35 405
原创 Python 代码风格指南 PEP8 摘要
一、代码布局缩进每层缩进使用 4 个空格断行风格断行首字母与括号开启符垂直对齐# 这是正确的例子:foo = long_function_name(var_one, var_two, var_three, var_four)悬挂缩进,首行不能有参数; 后面还有其它代码部分时,断行要添加一层缩进,使其与其它代码部分能区别开来...
2020-03-19 16:25:40 186
原创 Linux进程的虚拟地址空间描述
通过虚拟内存的概念,操作系统为每一个进程提供完全一致的内存视图,这个内存视图的地址空间,叫虚拟地址空间。从每个进程的角度来看,内存中只存在操作系统内核及本进程,即内存是被本进程独占的。从向往上看,分为进程代码和数据区、堆数据区、共享库区、堆栈区、内核内存区。进程代码与数据区可执行程序文件的内容加载到该区域,该区域又分成2部分,低地址部分包含程序的代码及只读数据,为只读部分;另一区域存放可...
2020-03-19 16:23:55 236
原创 helloword程序在Linux系统上的一生
记录C语言程序helloworld在Linux系统上从编写、编译到调用的全过程。一、编写源代码经典的helloworld程序,源代码hello.c如下:#include <stdio.h>int main(){ printf("hello, world\n");}程序员在IDE中,或者文本编辑器(如Vim、Emacs等)中敲入程序源代码,并保存为文本文件hel...
2020-03-19 16:21:51 213
翻译 Beej的GDB快速指南
Beej’s Quick Guide to GDBRelease 2 (2009 Jun 14)Beej’s Quick Guide to GDB by Brian “Beej Jorgensen” Hall is licensed under aCreative Commons Attribution-Noncommercial-No Derivative Works 3.0 Unite...
2020-03-19 16:20:30 325
原创 quick-and-dirty如何翻译
quick-and-dirty典型的用法有:quick-and-dirty tipsquick-and-dirty guidequick-and-dirty solution内容多是用通俗易懂的语言讲解一些小知识、小窍门。quick是快捷的意思,dirty是脏或不干净的意思, 在韦氏字典中,quick and dirty的定义是:Definition of quick and ...
2020-03-19 16:18:49 1623
原创 十进制与十六进制之间的转换
十进制数 x 转化为十六进制表示将十进制数 x 除以 16, 即 x = q * 16 + r,取得余数 r 和 商 q,此时余数 r 就是 x 用十六进制表示时的最低位值; 之后商值 q 继续进行以上的除法操作, 获取每次的余数 r 作为 十六进制表示时的低位值, 直到 q 值小于 16 为值, 此时的 q 值即为十六进制表示时的最高位值。例如: 314156 = 19634...
2020-03-19 16:17:43 1690 1
原创 在github上创建文档翻译项目,并与readthedocs、transifex整合的方法
一、概述本文以创建Django最新LTS版本的文档简体中文翻译项目为例,描述了在github.com上创建文档翻译项目,并与readthedocs.org和transifex.com整合的方法。操作流程主要分为三部分:在github.com上创建一个文档翻译项目与transifex.com整合与readthedocs.org整合,将翻译内容发布到readthedocs.org网站二...
2020-03-19 16:16:26 1140 1
原创 二进制与十六进制之间的转换
1 位十六进制数对应 4 位 二进制数。记住三个基准数记住下面的三个基准数的十六进制表示及对应的二进制表示,对这两种进制数之前的快速转换很有帮助。A: 1010C: 1100F: 1111B 可以通过 A+1得到,即为 1011; D 可以通过 C+1 得到,即为 1101, E 可以通过F-1得到, 即为 1110。记住这三个基准数后,可以进行快速的转换,例如:0x39A7...
2020-03-19 16:15:06 2058
原创 GNU gettext工具简介
一、简介支持多语言的程序,在编写时,通常源代码中的交互语句首先还是用英文编写,然后才为交互语句添加多语言支持机制。程序在运行过程时,再根据用户环境变量设置,选择合适的语言版本,显示给用户。GNU gettext 为程序的国际化i18n和本地化l10n提供了很好的支持。用GNU gettext实现多语言支持的一般步骤如下:在程序源代码中添加gettext的相关声明信息及本地化运行环境检测代...
2020-03-19 16:13:26 6148
原创 GDB日常调试基本命令列表
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-S4UOO0Bq-1584605489346)(/assets/images/GDB-archer.jpg)]GDB 是GUN项目里的调试器软件,支持Ada, C, C++, Objective-C, Pascal等语言。GDB日常调试基本命令 命令示例解释 help <GDB命令名&g...
2020-03-19 16:12:17 112
原创 函数parameter与argument的区别
写注释时经常会混淆parameter和argument的用法,特记录下。Parameter是定义函数参数时的形参,而Argument是调用函数时的实参。int my_func(int par1, int par2){ /* fun block */}int main(){ int ret, arg1_val, arg2_val; arg1_val = 1; ...
2020-03-19 16:10:54 871
软件设计哲学 A Philosophy of Software Design
2019-01-31
计算机网络自顶向下方法原书第6版正文+课后答案+课后编程答案
2018-09-12
iOS Programming The Big Nerd Ranch Guide 6th Edition
2018-01-29
Android Programming The Big Nerd Ranch Guide 3rd Edition
2018-01-29
advanced_windows_debugging
2010-03-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人