<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[dinght2000的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/dinght2000</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; dinght2000]]></copyright><item><title><![CDATA[webpack 笔记]]></title><link>https://blog.youkuaiyun.com/dinght2000/article/details/101594924</link><guid>https://blog.youkuaiyun.com/dinght2000/article/details/101594924</guid><author>dinght2000</author><pubDate>Thu, 01 Aug 2019 22:05:00 +0800</pubDate><description><![CDATA[https://webpack.js.org/concepts/modules/#what-is-a-webpack-module
webpack supports modules written in a variety of languages and preprocessors, via loaders. Loadersdescribe to webpack how to proc...]]></description><category></category></item><item><title><![CDATA[sphinx-python文档化]]></title><link>https://blog.youkuaiyun.com/dinght2000/article/details/101594938</link><guid>https://blog.youkuaiyun.com/dinght2000/article/details/101594938</guid><author>dinght2000</author><pubDate>Tue, 30 Apr 2019 17:08:00 +0800</pubDate><description><![CDATA[概述
下文讲述使用sphinx自动生成reStructuredText python API文档的简单过程。
配置流程
安装依赖
$ pip install sphinx blurb python-docs-theme
创建项目
$ mkdir demo
$ cd demo

# 自动生成配置文件
demo $ sphinx-quickstart
项目相关文件说明（以默认配置为例）
项目...]]></description><category></category></item><item><title><![CDATA[Docker笔记]]></title><link>https://blog.youkuaiyun.com/dinght2000/article/details/101594921</link><guid>https://blog.youkuaiyun.com/dinght2000/article/details/101594921</guid><author>dinght2000</author><pubDate>Sun, 03 Mar 2019 23:03:00 +0800</pubDate><description><![CDATA[核心概念

swarm：集群
node：集群中的节点
stack：技术栈，作为一个整体统一管理的不同类型实例
container：容器，通过镜像启动而成的服务进程，类比面向对象中的实例
image：镜像，打包好的程序包，类比面向对象中的类

概述
装有docker服务的服务器被称为node（节点），集群中有一个管理节点和多个工作节点，所有操作必须通过管理节点来操作。
docker中集群被...]]></description><category></category></item><item><title><![CDATA[一次Ubuntu下的排雷记录]]></title><link>https://blog.youkuaiyun.com/dinght2000/article/details/101594919</link><guid>https://blog.youkuaiyun.com/dinght2000/article/details/101594919</guid><author>dinght2000</author><pubDate>Mon, 17 Sep 2018 19:07:00 +0800</pubDate><description><![CDATA[起因
某天，发现一台服务器上出现了一个大量占用cpu资源的进程。尝试手动杀掉，但很快就会自动重新创建新的进程。

追查
用命令lsof -p 10316 查看其文件路径：

该进程文件夹/proc/10316下：


看到该文件夹下的exe文件是指向/var/tmp/.../Word，也就是文件夹名字就是"..."，查看简要的信息：

其中：
cmdline — 启动当前进程的完整命令
...]]></description><category></category></item><item><title><![CDATA[MongoDB多集合排序的一种实现]]></title><link>https://blog.youkuaiyun.com/dinght2000/article/details/101594936</link><guid>https://blog.youkuaiyun.com/dinght2000/article/details/101594936</guid><author>dinght2000</author><pubDate>Mon, 17 Sep 2018 18:22:00 +0800</pubDate><description><![CDATA[需求
假设有三个类型有所不同的表，saleorders、careorders、repairorders，表中有storeId信息，用于关联其所属的门店stores表，现在有个需求是要将这三个表集中展示在一个表格中展示。
实现
以下驱动使用mongoose实现，MongoDB版本大于3.6。

var orders = Store.aggregate([
    {
        $ma...]]></description><category></category></item><item><title><![CDATA[Ubuntu系统进程管理笔记]]></title><link>https://blog.youkuaiyun.com/dinght2000/article/details/101594916</link><guid>https://blog.youkuaiyun.com/dinght2000/article/details/101594916</guid><author>dinght2000</author><pubDate>Tue, 12 Jun 2018 23:15:00 +0800</pubDate><description><![CDATA[前言
今天对前端服务器进行迁移，本来前端服务器就一台，都是放置前端静态文件的地方，应该是比较简单的。唯一的问题是由于Nginx需要给ie8浏览器个i同https访问支持，不得不对Nginx进行重新编译。编译完成后想启动一下服务，才发现没有systemctl，于是使用service命令，奇怪的是service命令无法居然无法识别nginx服务。经过一番折腾终于解决了问题。
以前这些命令一直...]]></description><category></category></item><item><title><![CDATA[python日志模块笔记]]></title><link>https://blog.youkuaiyun.com/dinght2000/article/details/101594914</link><guid>https://blog.youkuaiyun.com/dinght2000/article/details/101594914</guid><author>dinght2000</author><pubDate>Sun, 15 Apr 2018 17:37:00 +0800</pubDate><description><![CDATA[前言
在应用中记录日志是程序开发的重要一环，也是调试的重要工具。但却很容易让人忽略。之前用flask写的一个服务就因为没有处理好日志的问题导致线上的错误难以察觉，修复错误的定位也很困难。最近恰好有时间可以梳理一下python日志的功能，下面是一点笔记。
使用
python标准库中提供了记录日志的方案。
import logging 
from logging.config import ...]]></description><category></category></item><item><title><![CDATA[一点关于"fat model, skinny controller"的思考]]></title><link>https://blog.youkuaiyun.com/dinght2000/article/details/101594934</link><guid>https://blog.youkuaiyun.com/dinght2000/article/details/101594934</guid><author>dinght2000</author><pubDate>Mon, 09 Apr 2018 20:42:00 +0800</pubDate><description><![CDATA[导言
想来从事服务器端开发也有将近一年的时间，服务端开发不能忽略的一个架构就是MVC架构，但一开始作为小白的我对这些高大上的概念也是很迷惑，由于很长一段时间应对的业务也是十分简单，业务代码也是流水一样的代码，所以对架构方面的东西接触也不是很多。
而随着过去几个月应对的业务越来复杂，越来越觉得脚本一样的模式写起来非常吃力。
思考
此前用flask和nodejs写过一些接口，这些代码一直是这...]]></description><category></category></item><item><title><![CDATA[flask+gunicorn中文文件下载报错问题及解决]]></title><link>https://blog.youkuaiyun.com/dinght2000/article/details/101594929</link><guid>https://blog.youkuaiyun.com/dinght2000/article/details/101594929</guid><author>dinght2000</author><pubDate>Mon, 09 Apr 2018 20:34:00 +0800</pubDate><description><![CDATA[导言
问题源起与一个静态文件下载的接口：
from flask import Flask, current_app
app = Flask(__name__)

@app.route('/file_name')
def file_download(file_name):
    return send_from_directory(current_app.root_path, file_...]]></description><category></category></item><item><title><![CDATA[使用hexo搭建github博客]]></title><link>https://blog.youkuaiyun.com/dinght2000/article/details/101594894</link><guid>https://blog.youkuaiyun.com/dinght2000/article/details/101594894</guid><author>dinght2000</author><pubDate>Sun, 11 Mar 2018 21:11:00 +0800</pubDate><description><![CDATA[导言
这两天看了些技术文章，心血来潮突然想搭建一个github博客。在网上搜了一些教程，花了点时间，终于把博客搭好，下面简单记录下搭建过程，做个记录。
原理
在网上看了几个教程，很多上来就是按照步骤输入命令行安装，运行。一开始看到云里雾里，虽然最终是安装成功了，但相信对于不少新手读者来说存在不少困惑。
下面是自己的一点粗浅理解。首先，我们知道，NodeJS是一个宿主运行环境，我们可以在上...]]></description><category></category></item><item><title><![CDATA[pm2笔记]]></title><link>https://blog.youkuaiyun.com/dinght2000/article/details/101594880</link><guid>https://blog.youkuaiyun.com/dinght2000/article/details/101594880</guid><author>dinght2000</author><pubDate>Fri, 23 Feb 2018 23:13:00 +0800</pubDate><description><![CDATA[概述
pm2是一个进程管理工具。使用pm2部署NodeJS服务可以轻松实现负载均衡。
指定用户启动
pm2启动时会指定一个PM2_HOME目录，作为存放日志文件、rpc.sock文件，默认情况下会PM2_HOME指向$HOME/.pm2文件夹，使用其他用户启动pm2时，除非另外指定，否则该环境变量仍然会指向当前用户的家目录下的文件夹，从而会出现Permission denied错误。可以...]]></description><category></category></item><item><title><![CDATA[Nginx 兼容IE8]]></title><link>https://blog.youkuaiyun.com/dinght2000/article/details/101594879</link><guid>https://blog.youkuaiyun.com/dinght2000/article/details/101594879</guid><author>dinght2000</author><pubDate>Fri, 23 Feb 2018 22:16:00 +0800</pubDate><description><![CDATA[前言
前段时间由于业务需要，在服务器上新增一个服务专门接收各个门店的业务结算数据，接口文档指明需要使用https协议。这本不是什么问题，因为之前服务器已经有配置过https。但等到服务部署之后才发现这些客户端死活连接不上。一直提示“Error connecting with SSL”的错误。服务器明明已经配置好了，而且其它服务使用https协议通信都正常，为什么偏偏这些客户端连接不上呢？...]]></description><category></category></item><item><title><![CDATA[Express定制参数解析错误响应值]]></title><link>https://blog.youkuaiyun.com/dinght2000/article/details/101594877</link><guid>https://blog.youkuaiyun.com/dinght2000/article/details/101594877</guid><author>dinght2000</author><pubDate>Sat, 20 Jan 2018 23:49:00 +0800</pubDate><description><![CDATA[Nodejs的Express框架本身所提供的东西并没有其它框架那么多。其中的一个问题就是对于请求数据的解析。
express中的请求对象并没有未经过解析的请求体，几乎所有的请求体都要经过类似于body-parser这类包来实现对其解析。
例如，像请求体是json格式的数据，而Content-Type: application/json时，body-parser会将请求体作为json字符串...]]></description><category></category></item><item><title><![CDATA[Nodejs将Buffer转化成Stream]]></title><link>https://blog.youkuaiyun.com/dinght2000/article/details/101594872</link><guid>https://blog.youkuaiyun.com/dinght2000/article/details/101594872</guid><author>dinght2000</author><pubDate>Sun, 03 Dec 2017 23:41:00 +0800</pubDate><description><![CDATA[编写接口的时候经常需要将上传的文件保存到数据库的情况，在nodejs中文件上传可以使用multer来接收上传的文件。如果不想保存到本地，而是直接保存到mongodb中，就要将buffer对象转化成流再写入数据库。
虽然fs模块的接口文档中说该模块可以接收Buffer对象作为参数，但实践中发现传入buffer对象会报错：
var fs = require('fs');
var b = Bu...]]></description><category></category></item><item><title><![CDATA[Javascript报错Converting circular structure to JSON 错误排解]]></title><link>https://blog.youkuaiyun.com/dinght2000/article/details/101594870</link><guid>https://blog.youkuaiyun.com/dinght2000/article/details/101594870</guid><author>dinght2000</author><pubDate>Sun, 03 Dec 2017 23:38:00 +0800</pubDate><description><![CDATA[在运行nodejs程序的时候报出以下的错误：
2017-11-20 17:44 +08:00: TypeError: Converting circular structure to JSON
    at Object.stringify (native)
    at stringify (/home/dev/backend/backcode/owner-backend/node_m...]]></description><category></category></item><item><title><![CDATA[pymongo: MongoClient opened before fork错误排解]]></title><link>https://blog.youkuaiyun.com/dinght2000/article/details/101594868</link><guid>https://blog.youkuaiyun.com/dinght2000/article/details/101594868</guid><author>dinght2000</author><pubDate>Thu, 02 Nov 2017 23:46:00 +0800</pubDate><description><![CDATA[使用pymongo配合flask和gunicorn使用的时候触发以下错误信息：

[2017-09-19 15:20: ] [25780] [CRITICAL] WORKER TIMEOUT (pid:25896)
/home/for4c/projects/excel.d/venv3.4/lib/python3.4/site-packages/pymongo/topology.py:14...]]></description><category></category></item><item><title><![CDATA[pymongo.errors.BulkWriteError错误排解]]></title><link>https://blog.youkuaiyun.com/dinght2000/article/details/101594862</link><guid>https://blog.youkuaiyun.com/dinght2000/article/details/101594862</guid><author>dinght2000</author><pubDate>Thu, 02 Nov 2017 23:42:00 +0800</pubDate><description><![CDATA[在mongodb进行数据库操作的时候触发异常
  pymongo Error: pymongo.errors.BulkWriteError: batch op errors occurred
这种问题出现在调用insert_many方法，原因可能有两种：
  1. 数据库某个字段被设置成了unique，在插入的时候这个字段出现了重复；
  2. insert_many使用时所插入的文档列...]]></description><category></category></item><item><title><![CDATA[javascript与mongodb的日期时区问题]]></title><link>https://blog.youkuaiyun.com/dinght2000/article/details/101594895</link><guid>https://blog.youkuaiyun.com/dinght2000/article/details/101594895</guid><author>dinght2000</author><pubDate>Thu, 02 Nov 2017 23:29:00 +0800</pubDate><description><![CDATA[默认情况下，js的日期生成是当地时区，但默认显示是按照GMT显示的：
&gt; var c = new Date('2017-10-31 06:00:00');
&gt; c
2017-10-30T22:00:00.000Z
但是日期对象中有时区信息，可以获取：
&gt; c.getTimezoneOffset()
-480  // 以分钟为单位 晚于GMT则为正，早于则为负
在获取关于...]]></description><category></category></item><item><title><![CDATA[nvm: node版本管理工具]]></title><link>https://blog.youkuaiyun.com/dinght2000/article/details/101594893</link><guid>https://blog.youkuaiyun.com/dinght2000/article/details/101594893</guid><author>dinght2000</author><pubDate>Sun, 29 Oct 2017 21:50:00 +0800</pubDate><description><![CDATA[安装nvm
  curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.29.0/install.sh | bash
node 版本切换
nvm install stable  # 安装最新稳定版 node，现在是 5.0.0
nvm install 4.2.2  # 安装 4.2.2 版本
nvm install 0.1...]]></description><category></category></item><item><title><![CDATA[MongoDB中$redact操作符的使用]]></title><link>https://blog.youkuaiyun.com/dinght2000/article/details/101594864</link><guid>https://blog.youkuaiyun.com/dinght2000/article/details/101594864</guid><author>dinght2000</author><pubDate>Thu, 14 Sep 2017 23:29:00 +0800</pubDate><description><![CDATA[介绍
redact &lt;- redaction 修订/校验，意思是对文档内容进行过滤，选择一些过滤或保留的信息 。
access level 存取等级 有三种：
- $$DESCEND 返回当前等级的文档，排除掉该等级下的内嵌等级文档；
- $$PRUNE 排除掉满足条件的当前等级及其下属等级的所有内容，而不再检查其内嵌文档是否还有满足条件的内容；
- $$KEEP 保留满足条件的当...]]></description><category></category></item></channel></rss>