<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Just do IT.]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/njnujuly</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; njnujuly]]></copyright><item><title><![CDATA[gdal踩坑记录：在Kibbana中创建一个自定义地图热力图]]></title><link>https://blog.youkuaiyun.com/njnujuly/article/details/99954855</link><guid>https://blog.youkuaiyun.com/njnujuly/article/details/99954855</guid><author>njnujuly</author><pubDate>Wed, 21 Aug 2019 14:11:45 +0800</pubDate><description><![CDATA[在使用kibbana创建自定义地图的热力图（参考这里）的时候，第一步是需要将你的图片用gdal工具进行处理：

Step 1) Create a GeoTIFF version of the Arena image

gdal_translate -of GTiff -a_srs EPSG:4326 -a_ullr -105 45 105 -45 nhl_rink.gif nhl_rink_gti...]]></description><category></category></item><item><title><![CDATA[git diff 输出的含义， 如何撤销一个patch]]></title><link>https://blog.youkuaiyun.com/njnujuly/article/details/90670066</link><guid>https://blog.youkuaiyun.com/njnujuly/article/details/90670066</guid><author>njnujuly</author><pubDate>Tue, 04 Jun 2019 11:14:49 +0800</pubDate><description><![CDATA[记录这篇是来源于我有一个项目，将代码从仓库拉下来后，需要修改一些配置才能够运行。我不想每次都手动去修改那几个需要自定义的配置文件，所以我做了一个patch。然后每次把代码拉下来后，运行一下git apply set_config.patch，所有的配置就自动修改好了。
但是今天我apply这个patch的时候，我得到了一条错误信息：
$ git apply set_config.patch
err...]]></description><category></category></item><item><title><![CDATA[项目代码学习心得，结合《代码大全》]]></title><link>https://blog.youkuaiyun.com/njnujuly/article/details/90666661</link><guid>https://blog.youkuaiyun.com/njnujuly/article/details/90666661</guid><author>njnujuly</author><pubDate>Wed, 29 May 2019 10:41:55 +0800</pubDate><description><![CDATA[虽然这是一个类似于api形式的项目，每个api里面只有固定的get,post,之类的才能成为方法。如果我在这个现有的风格上做一些修改，应用一些诸如《代码大全》中定义的“最合适7”的规则，或者一个函数的篇幅最好是一个屏幕那么高的规则，那么会在现有的代码中显得格格不入。我还是把自己的心得记录下来，作为自己的一种追求和努力的方向吧！如果以后有机会，还是需要在一个能够提升代码风格的项目组锻炼下。

一个函...]]></description><category></category></item><item><title><![CDATA[深入理解计算机系统:网络编程 下 一个简单的web服务器]]></title><link>https://blog.youkuaiyun.com/njnujuly/article/details/89309209</link><guid>https://blog.youkuaiyun.com/njnujuly/article/details/89309209</guid><author>njnujuly</author><pubDate>Mon, 15 Apr 2019 11:50:51 +0800</pubDate><description><![CDATA[编写一个web服务器的基础是熟悉套接字接口。笔者因为还没有对其进行实践，只对其有一些粗浅的了解。本文重点记录一个web服务的核心功能主要由哪几部分组成。
1. main函数
之前写到，从客户端到服务器的连接是主动的，服务器是在被动地等待一个客户端对其发起连接请求，然后建立连接。所以，我们的服务器的main程序的核心功能就是有一个while循环，等待客户端发起连接请求，然后接受请求，处理事务(dio...]]></description><category></category></item><item><title><![CDATA[深入理解计算机系统:网络编程 上]]></title><link>https://blog.youkuaiyun.com/njnujuly/article/details/88734185</link><guid>https://blog.youkuaiyun.com/njnujuly/article/details/88734185</guid><author>njnujuly</author><pubDate>Fri, 22 Mar 2019 10:16:21 +0800</pubDate><description><![CDATA[一直以来对计算机网络比较感兴趣，但是无奈大学计算机网络的学习非常表面，已经忘得差不多了。毕业后读了一些网络方面的书，对网络知识的冰山一角有了一些感悟。
随着网络方面的书越读越多，不懂的地方也越来越多。而且很多知识不经常使用，没多久就网络。
so,我决定着手自己写一个web服务器。哇，居然没什么头绪。
第一步，我先阅读了下深入理解计算机系统的网络编程这一章。以下就是我在阅读过程中记录的精华。
11章...]]></description><category></category></item><item><title><![CDATA[nessus安装的大坑]]></title><link>https://blog.youkuaiyun.com/njnujuly/article/details/88389801</link><guid>https://blog.youkuaiyun.com/njnujuly/article/details/88389801</guid><author>njnujuly</author><pubDate>Mon, 11 Mar 2019 10:53:11 +0800</pubDate><description><![CDATA[上周因为工作需要，尝试在centos7上安装了Nessus。Nessus主要是一款能够对机器的网络安全漏洞进行扫描的软件，我安装它是为了查看我自己部署的web应用是否达到了一定的安全级别。
坑1. 插件安装
话说官网和一些博客文章都可以发现这款软件能够在下载了一个安装包之后，一条rpm -i就可以搞定安装。但麻烦的是，他需要你更新插件。更新插件可以通过本地在线，服务端在线，和本地离线的方式。三种我...]]></description><category></category></item><item><title><![CDATA[flask_restful template: 浏览器将flask模板解释为Html代码]]></title><link>https://blog.youkuaiyun.com/njnujuly/article/details/86693251</link><guid>https://blog.youkuaiyun.com/njnujuly/article/details/86693251</guid><author>njnujuly</author><pubDate>Mon, 11 Feb 2019 14:13:02 +0800</pubDate><description><![CDATA[要做一个网站demo, 准备用flask来做。按照官网的例子，照猫画虎，做了一个project。但是我写的html代码并没有像官网那样被浏览器按照html语言解释，而是被当做字符串解释了。如下图：

更别说我调查半天挑出来的css样式框架都没应用。
网上资料也是比较少。自己也很纳闷，为什么代码并没有问题，却跟官网显示的截然不同？
查找一番，这个回答给了我启发：
get rid of the api...]]></description><category></category></item><item><title><![CDATA[pyinstaller 填坑记：打包一个拍照分析小程序]]></title><link>https://blog.youkuaiyun.com/njnujuly/article/details/86626816</link><guid>https://blog.youkuaiyun.com/njnujuly/article/details/86626816</guid><author>njnujuly</author><pubDate>Tue, 29 Jan 2019 10:21:25 +0800</pubDate><description><![CDATA[前两天写了一个图形界面的python小程序，通过摄像头拍照，对人脸进行性别和年龄的分析，并将分析结果图表化。最后一步就是将这个小程序打包成一个可以直接双击运行的exe。通过简单调查，决定使用pyinstaller这个工具。
1. 安装pyinstaller
在你需要的地方安装上pyinstaller。pyinstaller其实是一个Python库，直接用pip就可以安装。如果你用的是anacond...]]></description><category></category></item><item><title><![CDATA[win10+visual studio2017编译caffe]]></title><link>https://blog.youkuaiyun.com/njnujuly/article/details/86155567</link><guid>https://blog.youkuaiyun.com/njnujuly/article/details/86155567</guid><author>njnujuly</author><pubDate>Thu, 24 Jan 2019 14:56:13 +0800</pubDate><description><![CDATA[目前微软不提供visual studio 2017以外 的版本下载，根据caffe官方文档说明必须用2013或者2015版本进行编译。
我没有安装gpu什么的，也就是安照官网上面最基本的配置去装的。
找到的这篇博客非常有用，在visual studio 2017版本上编译，参考其中的部分步骤。
但是即使有参考，编译的过程也不是一帆风顺。以下是我遇到的问题，以及记录的解决办法：


编译过程中出现错...]]></description><category></category></item><item><title><![CDATA[git仓库重新创建master分支]]></title><link>https://blog.youkuaiyun.com/njnujuly/article/details/86011600</link><guid>https://blog.youkuaiyun.com/njnujuly/article/details/86011600</guid><author>njnujuly</author><pubDate>Tue, 15 Jan 2019 09:06:40 +0800</pubDate><description><![CDATA[准备在git上新建一个仓库，先测试下ssh-key有没有添加成功。就在master作了一次提交，没有仔细查看就直接push了。
然后到github上面一看，发现自己的签名有点问题，想要修改一下。
可是之前push的提交，已经没有办法修改了。怎么办，只好重新创建一个master分支好了。
当我在本地将git config修改好了以后，

新建一个test分支，用于稍后重命名为master,并切换到这...]]></description><category></category></item><item><title><![CDATA[漫谈程序员的阻塞解决之道]]></title><link>https://blog.youkuaiyun.com/njnujuly/article/details/85618141</link><guid>https://blog.youkuaiyun.com/njnujuly/article/details/85618141</guid><author>njnujuly</author><pubDate>Fri, 04 Jan 2019 10:35:04 +0800</pubDate><description><![CDATA[新年伊始，首先祝各位新年快乐。
元旦在家没事做，随便找了一道给出一组数字的全排列的编程题，题目要求不要用递归做。
这种题一看“不要用递归做”，那肯定既能用递归，也能用迭代了。想出其中一种，另外一种也就迎刃而解了。
但是周末的时候我一看这道题就头大，光知道一组个数为N数字的排列的个数是N!。但是怎么用代码实现，一时半会儿没个头绪。在家想了一个多小时，随手写了几行代码，发现漏掉了很多排列。然后就趁着元...]]></description><category></category></item><item><title><![CDATA[git之rebase]]></title><link>https://blog.youkuaiyun.com/njnujuly/article/details/84938534</link><guid>https://blog.youkuaiyun.com/njnujuly/article/details/84938534</guid><author>njnujuly</author><pubDate>Fri, 28 Dec 2018 17:56:34 +0800</pubDate><description><![CDATA[应用场景
你的项目中存在下图这样的开发情况。分支a是从master分支的版本4checkout出来的，用于开发功能a；分支b是从master分支上切出来的另一个分支，用于开发功能b。
当分支b上面的开发已经完成，它需要被合并到master分支中，然后继续开发其他的功能。

分支b被合入到master以后，这三个分支大概是下图这样：

分支b上的所有开发都被合入到了master分支，并且master...]]></description><category></category></item><item><title><![CDATA[bash command line shortcuts/ linux bash命令行快捷键]]></title><link>https://blog.youkuaiyun.com/njnujuly/article/details/84975861</link><guid>https://blog.youkuaiyun.com/njnujuly/article/details/84975861</guid><author>njnujuly</author><pubDate>Fri, 21 Dec 2018 15:15:07 +0800</pubDate><description><![CDATA[关于在bash终端可以使用的快捷键，网上有很多文章做了很多的罗列。
本文仅将比较重要的一些快捷键进行归类，分享一些快速记忆这些快捷键的小技巧。
当然，好记性不如烂笔头，只有不断实践，经常去使用它们，渐渐地你习惯了它们就不再需要去记忆了。
光标移动
首先，个人认为使用频率最高的快捷键：
Ctrl+e ：(end)	光标到达行尾
Ctrl+a ：(home)	光标到达行首
Alt+f ：(forwar...]]></description><category></category></item><item><title><![CDATA[关于项目管理的一些感悟]]></title><link>https://blog.youkuaiyun.com/njnujuly/article/details/84257699</link><guid>https://blog.youkuaiyun.com/njnujuly/article/details/84257699</guid><author>njnujuly</author><pubDate>Fri, 14 Dec 2018 16:40:17 +0800</pubDate><description><![CDATA[最近一个需求来的时候，我为了锻炼新人，将这次开发的工作交给了他。
新人吭哧吭哧写了一个礼拜代码，边写边调试，却总有种在写bug的感觉，我非常不安。
不知道为什么，跟他讲过很多次，写代码之前要尽可能考虑清楚所有的情况，然后再动手写代码。
但是新人总喜欢边调试，边修补。在他提交了代码后，我一眼就能看出其中的bug。
照着我写的测试case进行测试，在他认为已经可以出版本的代码中，他前前后后修了有十几个...]]></description><category></category></item><item><title><![CDATA[《代码大全》——①表驱动法初体验，要的就是高级感]]></title><link>https://blog.youkuaiyun.com/njnujuly/article/details/84587420</link><guid>https://blog.youkuaiyun.com/njnujuly/article/details/84587420</guid><author>njnujuly</author><pubDate>Mon, 10 Dec 2018 11:11:42 +0800</pubDate><description><![CDATA[之前翻《code complete》（中文：代码大全）的时候，看到讲解表驱动法的地方，当时觉得很好懂。
于是在工作中，经常思考怎么把表驱动法运用到实际的代码编写中。经过一段时间的探索，才终于有点豁然开朗的感觉。
当前的项目以Mongodb作为数据载体，熟悉Mongodb的同学都知道这种nosql类型的数据库插数据非常自由，只要符合json格式，都可以被插入到表当中。这也是mongodb作为非关系型...]]></description><category></category></item><item><title><![CDATA[mongodb仅返回查询字段及值]]></title><link>https://blog.youkuaiyun.com/njnujuly/article/details/84233547</link><guid>https://blog.youkuaiyun.com/njnujuly/article/details/84233547</guid><author>njnujuly</author><pubDate>Fri, 23 Nov 2018 18:04:43 +0800</pubDate><description><![CDATA[mongodb查询语句简单，仅用下面一句话就可以进行最基本的查找了：
db.tablename.find({})
也就是类似关系型数据的select * from tablename。因为mongodb默认返回所有键，当我们没有指定find()的第二个参数的时候。
但是一般我们不用这样的语句进行查询，因为这样查找出的数据有太多我们不需要的信息。
在关系型数据库中，一般我们会写这样的语句进行查询：
...]]></description><category></category></item><item><title><![CDATA[Nginx服务重启失败：Job for nginx.service failed because]]></title><link>https://blog.youkuaiyun.com/njnujuly/article/details/83821354</link><guid>https://blog.youkuaiyun.com/njnujuly/article/details/83821354</guid><author>njnujuly</author><pubDate>Fri, 16 Nov 2018 14:18:38 +0800</pubDate><description><![CDATA[在部署一个网站的时候，可能需要更改Nginx的配置，然后重启Nginx服务，部署的网站才能够访问。
在这里先简单总结一下nginx部署网站的步骤吧。
nginx建站流程简介

安装Nginx。以下说明步骤中都使用相对路径，具体部署时将.替换为nginx安装所在路径即可。
到./nginx/sites-available/下面创建你的网站的配置文件homepage.com，内容为：server{
 ...]]></description><category></category></item><item><title><![CDATA[如何使用patch命令打补丁]]></title><link>https://blog.youkuaiyun.com/njnujuly/article/details/83186179</link><guid>https://blog.youkuaiyun.com/njnujuly/article/details/83186179</guid><author>njnujuly</author><pubDate>Fri, 09 Nov 2018 10:01:15 +0800</pubDate><description><![CDATA[有时候因为条件限制，我们不能使用git仓库进行代码的更新工作。
例如你需要更新服务器的代码，一般的生产环境上面的代码是某个版本的代码而非整个git仓库。
当你进行了一些开发，你需要将你的代码部署到服务器上面，进行一系列测试。
这时，使用patch是一个不错的办法。

确保你的服务器上安装了patch命令。如果没有安装，在联网状态下安装一下也就几分钟的事。
在你本地生成patch文件。在你的git仓...]]></description><category></category></item><item><title><![CDATA[异常处理如何使代码变得简洁高效可控：以python为例]]></title><link>https://blog.youkuaiyun.com/njnujuly/article/details/83145938</link><guid>https://blog.youkuaiyun.com/njnujuly/article/details/83145938</guid><author>njnujuly</author><pubDate>Fri, 02 Nov 2018 09:24:26 +0800</pubDate><description><![CDATA[平时写代码的时候，习惯考虑很多细节问题。比如输入类型的合法性，值的合法性等等。
所以在进入代码的核心部分之前，有很大篇幅的代码都是一些if else语句。
这样并不是不好，而是当输入比较复杂的时候，就要考虑非常多的细节。
在核心代码之前放一堆if else，会影响一段代码的紧凑性，也会使维护变得困难。
比如需要校验输入中有没有这些key,输入的类型是str,还是list，是否符合预期等等。
我见过...]]></description><category></category></item><item><title><![CDATA[linux系统上mongodb使用用户名密码登陆]]></title><link>https://blog.youkuaiyun.com/njnujuly/article/details/83108902</link><guid>https://blog.youkuaiyun.com/njnujuly/article/details/83108902</guid><author>njnujuly</author><pubDate>Fri, 26 Oct 2018 10:46:25 +0800</pubDate><description><![CDATA[前提
默认的mogodb是不用用户名密码也可以登陆的，但是这是不安全的。
所以默认创建一个数据库之后，会给这个数据库创建一个用户，并赋予一些权限：
&amp;amp;gt; use dbname
  switched to db dbname
&amp;amp;gt; db.createUser({user:&amp;quot;root&amp;quot;,pwd:&amp;quot;root_pwd&amp;quot;,roles:[{role:&amp;quot;root&amp;quot;,db:&a]]></description><category></category></item></channel></rss>