前端工具整理

把比较热门的一些前端工具整理出来以加深自己对这些工具的理解。

webpack:

定位:一个现代 JavaScript 应用程序的静态模块打包器
主要功能:在内部创建一个依赖图,用于映射到项目需要的每个模块,然后将所有这些依赖生成到一个或多个 bundle
默认配置文件:webpack.config.js

Babel:

定位:一个 JavaScript 编译器
主要功能:主要用于在旧的浏览器或环境中将 ECMAScript 2015+ 代码转换为向后兼容版本的 JavaScript 代码
默认配置文件:babel.config.js .babelrc package.json

Gulp:

定位:用自动化构建工具增强你的工作流程!
主要功能:用自动化构建工具增强你的工作流程!
默认配置文件:gulpfile.js

Sass/Scss:

定位:CSS 的一个扩展,它使 CSS 的使用起来更加优雅和强大。

查看更多

webpack 4 入门

导读

写这篇文章是为了让自己在自学 webpack 的过程中有所产出,于是边读 webpack 中文文档 边写下了这篇文章,里面的很多实例都是直接挪用的文档中的实例,但在一些概念的理解上我加入了自己的想法「未必精确」,所以读的时候要抱着「怀疑的态度」。

文章内容不仅仅是简单的「概念堆叠」,还有一些「重点」概念的「深入理解」,不过篇幅有限我不希望这篇文章变成一份冗长的伪文档,所以全部的内容都是围绕 webpack 的 4个 核心概念延展开来的,每个配置后面我都会尽量跟上一个实例以更加形象的展示配置的具体作用。

站在我的角度上,读完这篇文章并不能让你精通 webpack 但是理解 webpack 中的重要概念,自己编写一个 webpack.config.js 配置文件还是可以的。

webpack 简介

本质上,webpack 是一个现代 JavaScript 应用程序的静态模块打包器(static module bundler)。在 webpack 处理应用程序时,它会在内部创建一个依赖图(dependency graph),用于映射到项目需要的每个模块,然后将所有这些依赖生成到一个或多个bundle。

查看更多

MacOS 下利用 pyenv 管理Python 版本和虚拟环境

pyenv 介绍

pyenvPython 版本管理工具。pyenv 可以改变全局的 Python 版本,安装多个版本的 Python,设置目录级别的 Python 版本,还能创建和管理 virtual python environments。所有的设置都是用户级别的操作,不需要 sudo 命令。

pyenv 主要用来管理 Python 的版本,比如一个项目需要 Python 2.x,一个项目需要 Python 3.x。 而 virtualenv 主要用来管理 Python 包的依赖,不同项目需要依赖的包版本不同,则需要使用虚拟环境。

pyenv 原理简介

pyenv 通过系统修改环境变量来实现 Python 不同版本的切换。而 virtualenv 通过将 Python 包安装到一个目录来作为 Python 包虚拟环境,通过切换目录来实现不同包环境间的切换。

pyenv 的美好之处在于,它并没有使用将不同的 PATH 植入不同的 shell 这种高耦合的工作方式,而是简单地在 PATH 的最前面插入了一个垫片路径(shims):~/.pyenv/shims:/usr/local/bin:/usr/bin:/bin。所有对 Python 可执行文件的查找都会首先被这个 shims 路径截获,从而使后方的系统路径失效。

安装之前

不同系统请参考 Common build problems,安装必须的工具。

查看更多

Python 虚拟环境:virtualenv 以及 virtualenvwrapper

在使用 Python 开发的过程中,工程一多,难免会碰到不同的工程依赖不同版本的库的问题;亦或者是在开发过程中不想让物理环境里充斥各种各样的库,引发未来的依赖灾难。此时,我们需要对于不同的工程使用不同的虚拟环境来保持开发环境以及宿主环境的清洁。

1. virtualenv

virtualenv 可以在系统中建立多个不同并且相互不干扰的虚拟环境。

1.1 原理简介

把系统 Python 「复制」一份到 virtualenv 的环境,用命令 source venv/bin/activate 进入一个 virtualenv 环境时,virtualenv 会修改相关环境变量,让命令 pythonpip 均指向当前的 virtualenv 环境。

PS:想了解更多可以查看 activate 脚本文件源码。

1.2 安装

1
pip install virtualenv

查看更多

Django 笔记-1-从请求到响应

本文所用 Django 代码版本:2.1.3

本文中进行的分析并不局限于某一个 Django 版本但都会尽量讨论版本 2.0+

流程总览

Django 处理请求流程

概述:

Django 和其他 Web 框架的 HTTP 处理的流程大致相同:先通过 Request Middleware 对请求对象做定义处理,然后再通过默认的 URL 指向的方法,最后再通过 Response Middleware 对响应对象做自定义处理。

细则:

查看更多

MySQL 修改数据库名

首先,MySQL 没有直接更改数据库名称的命令;
其次,无论使用什么方法都要记得提前备份数据库。

注:RENAME DATABASE 这条命令在 MySQL 5.1.7 中被加入,但很快就被发现其所带来的危险,于是在 MySQL 5.1.23 中这条命令被移除。

推荐方案

假如现在我们想把数据库名由 ABC 更改为 EFG

我们可以在数据库外执行以下命令:

1
2
mysqladmin -u root -p create EFG
mysqldump ABC | mysql -u root -p EFG

查看更多

Erlang 程序设计笔记-第一部分

第一章:什么是并发

在本书中,我们讲学习如何将 并行 活动描述为相互通信的多组 并行 进程,并学习如何编写并发程序

在日常用语中,并发(concurrent)、同时(simultaneous)和并行(parallel)等词几乎表示同一个意思。但在编程语言中需要做更精确的区分。

如果只有一台单核的计算机,是无法在上面运行并行程序的。因为只有一个 CPU,而它一次只能做一件事。然而,可以在单核计算机上运行并发程序。计算机在不同任务之间分享时间,使人产生这些任务是并行运行的错觉。

1.1 给并发建模

我们将从一个简单的例子入手,为一种日常情景构建并发模型。设想我看见四个人出去散步,另外还有两条狗和一大群兔子。这些人正在相互交谈,而狗则想要追逐兔子。要在Erlang里模拟这些,需要编写四个模块,名字分别是person(人)、dog(狗)、rabbit(兔子)和world(世界)。person的代码会放在名为person.erl的文件里,看起来就像是这样:

1
2
3
4
-module(person).
-export([init/1])

init(Name) -> ...

查看更多

CentOS7 + Python3 + Django(rest_framework) + MariaDB + nginx + uwsgi 部署 API 开发环境

这是一个 Django 环境部署教程,也是一个我坑爹的 Django 环境部署记录:

开始撸代码之前有两点需要提醒:

  1. 本教程完美适配如题开发环境但不局限于此环境,其他开发环境仅需将命令操作转换为当前环境下的命令即可;
  2. 我写作的顺序是我个人体验比较好的操作顺序仅供参考;
查看更多