- 博客(46)
- 收藏
- 关注
原创 gdal踩坑记录:在Kibbana中创建一个自定义地图热力图
在使用kibbana创建自定义地图的热力图(参考这里)的时候,第一步是需要将你的图片用gdal工具进行处理:Step 1) Create a GeoTIFF version of the Arena imagegdal_translate -of GTiff -a_srs EPSG:4326 -a_ullr -105 45 105 -45 nhl_rink.gif nhl_rink_gti...
2019-08-21 14:11:45
1431
1
原创 git diff 输出的含义, 如何撤销一个patch
记录这篇是来源于我有一个项目,将代码从仓库拉下来后,需要修改一些配置才能够运行。我不想每次都手动去修改那几个需要自定义的配置文件,所以我做了一个patch。然后每次把代码拉下来后,运行一下git apply set_config.patch,所有的配置就自动修改好了。但是今天我apply这个patch的时候,我得到了一条错误信息:$ git apply set_config.patcherr...
2019-06-04 11:14:49
6185
原创 项目代码学习心得,结合《代码大全》
虽然这是一个类似于api形式的项目,每个api里面只有固定的get,post,之类的才能成为方法。如果我在这个现有的风格上做一些修改,应用一些诸如《代码大全》中定义的“最合适7”的规则,或者一个函数的篇幅最好是一个屏幕那么高的规则,那么会在现有的代码中显得格格不入。我还是把自己的心得记录下来,作为自己的一种追求和努力的方向吧!如果以后有机会,还是需要在一个能够提升代码风格的项目组锻炼下。一个函...
2019-05-29 10:41:55
1648
1
原创 深入理解计算机系统:网络编程 下 一个简单的web服务器
编写一个web服务器的基础是熟悉套接字接口。笔者因为还没有对其进行实践,只对其有一些粗浅的了解。本文重点记录一个web服务的核心功能主要由哪几部分组成。1. main函数之前写到,从客户端到服务器的连接是主动的,服务器是在被动地等待一个客户端对其发起连接请求,然后建立连接。所以,我们的服务器的main程序的核心功能就是有一个while循环,等待客户端发起连接请求,然后接受请求,处理事务(dio...
2019-04-15 11:50:51
306
原创 深入理解计算机系统:网络编程 上
一直以来对计算机网络比较感兴趣,但是无奈大学计算机网络的学习非常表面,已经忘得差不多了。毕业后读了一些网络方面的书,对网络知识的冰山一角有了一些感悟。随着网络方面的书越读越多,不懂的地方也越来越多。而且很多知识不经常使用,没多久就网络。so,我决定着手自己写一个web服务器。哇,居然没什么头绪。第一步,我先阅读了下深入理解计算机系统的网络编程这一章。以下就是我在阅读过程中记录的精华。11章...
2019-03-22 10:16:21
251
原创 nessus安装的大坑
上周因为工作需要,尝试在centos7上安装了Nessus。Nessus主要是一款能够对机器的网络安全漏洞进行扫描的软件,我安装它是为了查看我自己部署的web应用是否达到了一定的安全级别。坑1. 插件安装话说官网和一些博客文章都可以发现这款软件能够在下载了一个安装包之后,一条rpm -i就可以搞定安装。但麻烦的是,他需要你更新插件。更新插件可以通过本地在线,服务端在线,和本地离线的方式。三种我...
2019-03-11 10:53:11
29648
5
原创 flask_restful template: 浏览器将flask模板解释为Html代码
要做一个网站demo, 准备用flask来做。按照官网的例子,照猫画虎,做了一个project。但是我写的html代码并没有像官网那样被浏览器按照html语言解释,而是被当做字符串解释了。如下图:更别说我调查半天挑出来的css样式框架都没应用。网上资料也是比较少。自己也很纳闷,为什么代码并没有问题,却跟官网显示的截然不同?查找一番,这个回答给了我启发:get rid of the api...
2019-02-11 14:13:02
1273
1
原创 pyinstaller 填坑记:打包一个拍照分析小程序
前两天写了一个图形界面的python小程序,通过摄像头拍照,对人脸进行性别和年龄的分析,并将分析结果图表化。最后一步就是将这个小程序打包成一个可以直接双击运行的exe。通过简单调查,决定使用pyinstaller这个工具。1. 安装pyinstaller在你需要的地方安装上pyinstaller。pyinstaller其实是一个Python库,直接用pip就可以安装。如果你用的是anacond...
2019-01-29 10:21:25
1899
1
原创 win10+visual studio2017编译caffe
目前微软不提供visual studio 2017以外 的版本下载,根据caffe官方文档说明必须用2013或者2015版本进行编译。我没有安装gpu什么的,也就是安照官网上面最基本的配置去装的。找到的这篇博客非常有用,在visual studio 2017版本上编译,参考其中的部分步骤。但是即使有参考,编译的过程也不是一帆风顺。以下是我遇到的问题,以及记录的解决办法:编译过程中出现错...
2019-01-24 14:56:13
3069
原创 git仓库重新创建master分支
准备在git上新建一个仓库,先测试下ssh-key有没有添加成功。就在master作了一次提交,没有仔细查看就直接push了。然后到github上面一看,发现自己的签名有点问题,想要修改一下。可是之前push的提交,已经没有办法修改了。怎么办,只好重新创建一个master分支好了。当我在本地将git config修改好了以后,新建一个test分支,用于稍后重命名为master,并切换到这...
2019-01-15 09:06:40
16367
原创 漫谈程序员的阻塞解决之道
新年伊始,首先祝各位新年快乐。元旦在家没事做,随便找了一道给出一组数字的全排列的编程题,题目要求不要用递归做。这种题一看“不要用递归做”,那肯定既能用递归,也能用迭代了。想出其中一种,另外一种也就迎刃而解了。但是周末的时候我一看这道题就头大,光知道一组个数为N数字的排列的个数是N!。但是怎么用代码实现,一时半会儿没个头绪。在家想了一个多小时,随手写了几行代码,发现漏掉了很多排列。然后就趁着元...
2019-01-04 10:35:04
267
原创 git之rebase
应用场景你的项目中存在下图这样的开发情况。分支a是从master分支的版本4checkout出来的,用于开发功能a;分支b是从master分支上切出来的另一个分支,用于开发功能b。当分支b上面的开发已经完成,它需要被合并到master分支中,然后继续开发其他的功能。分支b被合入到master以后,这三个分支大概是下图这样:分支b上的所有开发都被合入到了master分支,并且master...
2018-12-28 17:56:34
152
原创 bash command line shortcuts/ linux bash命令行快捷键
关于在bash终端可以使用的快捷键,网上有很多文章做了很多的罗列。本文仅将比较重要的一些快捷键进行归类,分享一些快速记忆这些快捷键的小技巧。当然,好记性不如烂笔头,只有不断实践,经常去使用它们,渐渐地你习惯了它们就不再需要去记忆了。光标移动首先,个人认为使用频率最高的快捷键:Ctrl+e :(end) 光标到达行尾Ctrl+a :(home) 光标到达行首Alt+f :(forwar...
2018-12-21 15:15:07
273
原创 关于项目管理的一些感悟
最近一个需求来的时候,我为了锻炼新人,将这次开发的工作交给了他。新人吭哧吭哧写了一个礼拜代码,边写边调试,却总有种在写bug的感觉,我非常不安。不知道为什么,跟他讲过很多次,写代码之前要尽可能考虑清楚所有的情况,然后再动手写代码。但是新人总喜欢边调试,边修补。在他提交了代码后,我一眼就能看出其中的bug。照着我写的测试case进行测试,在他认为已经可以出版本的代码中,他前前后后修了有十几个...
2018-12-14 16:40:17
1305
原创 《代码大全》——①表驱动法初体验,要的就是高级感
之前翻《code complete》(中文:代码大全)的时候,看到讲解表驱动法的地方,当时觉得很好懂。于是在工作中,经常思考怎么把表驱动法运用到实际的代码编写中。经过一段时间的探索,才终于有点豁然开朗的感觉。当前的项目以Mongodb作为数据载体,熟悉Mongodb的同学都知道这种nosql类型的数据库插数据非常自由,只要符合json格式,都可以被插入到表当中。这也是mongodb作为非关系型...
2018-12-10 11:11:42
1193
1
原创 mongodb仅返回查询字段及值
mongodb查询语句简单,仅用下面一句话就可以进行最基本的查找了:db.tablename.find({})也就是类似关系型数据的select * from tablename。因为mongodb默认返回所有键,当我们没有指定find()的第二个参数的时候。但是一般我们不用这样的语句进行查询,因为这样查找出的数据有太多我们不需要的信息。在关系型数据库中,一般我们会写这样的语句进行查询:...
2018-11-23 18:04:43
7582
原创 Nginx服务重启失败:Job for nginx.service failed because
在部署一个网站的时候,可能需要更改Nginx的配置,然后重启Nginx服务,部署的网站才能够访问。在这里先简单总结一下nginx部署网站的步骤吧。nginx建站流程简介安装Nginx。以下说明步骤中都使用相对路径,具体部署时将.替换为nginx安装所在路径即可。到./nginx/sites-available/下面创建你的网站的配置文件homepage.com,内容为:server{ ...
2018-11-16 14:18:38
34951
2
原创 如何使用patch命令打补丁
有时候因为条件限制,我们不能使用git仓库进行代码的更新工作。例如你需要更新服务器的代码,一般的生产环境上面的代码是某个版本的代码而非整个git仓库。当你进行了一些开发,你需要将你的代码部署到服务器上面,进行一系列测试。这时,使用patch是一个不错的办法。确保你的服务器上安装了patch命令。如果没有安装,在联网状态下安装一下也就几分钟的事。在你本地生成patch文件。在你的git仓...
2018-11-09 10:01:15
41451
原创 异常处理如何使代码变得简洁高效可控:以python为例
平时写代码的时候,习惯考虑很多细节问题。比如输入类型的合法性,值的合法性等等。所以在进入代码的核心部分之前,有很大篇幅的代码都是一些if else语句。这样并不是不好,而是当输入比较复杂的时候,就要考虑非常多的细节。在核心代码之前放一堆if else,会影响一段代码的紧凑性,也会使维护变得困难。比如需要校验输入中有没有这些key,输入的类型是str,还是list,是否符合预期等等。我见过...
2018-11-02 09:24:26
247
原创 linux系统上mongodb使用用户名密码登陆
前提默认的mogodb是不用用户名密码也可以登陆的,但是这是不安全的。所以默认创建一个数据库之后,会给这个数据库创建一个用户,并赋予一些权限:> use dbname switched to db dbname> db.createUser({user:"root",pwd:"root_pwd",roles:[{role:"root",db:&a
2018-10-26 10:46:25
24830
原创 windows系统如何切换系统默认python版本
一个机器上可能同时会运行多个项目,不同的项目可能使用了不同版本的python。在不同的python版本之间切换,有很多种方式:进行python版本管理的工具具特点yenv只支持linuxywinpyenv的windows替代,据说没有pyenv功能全我在系统上使用pip安装pywin的时候,报了一些错误,因为需要尽快把项目跑起来,我就没继续折腾了。...
2018-10-17 13:37:06
20275
原创 Numpy.nonzero() 使用方法简明解释
官方文档的解释不是很易懂,查阅资料后,作为程序员,我给出的解释是:numpy.nonzero是用来返回一个多维数组中不为0的元素的下标,这个下标包含两个维度,可以想象成行和列的索引。也就是说,它的返回值是一个包含两个数组的元组。拿官网的例子说明一下:>>> x = np.array([[1,0,0], [0,2,0], [1,1,0]])>>> xar...
2018-10-05 11:16:39
1971
原创 windows unix化神器——cygwin
话说,每次打开Windows自带的terminal窗口,习惯性的打出一个linux命令按下回车,系统提示“command not found ”的时候,那心情可是肥肠复杂啊。。于是开始百度“window Kill 进程 命令”,可谓大费周章。后来辗转发现,git 自带的工具git-bash就比Windows家的终端好用多了。至少可以直接用这些属性的命令。但是有个不方便的地方就是,每次得先打开...
2018-09-25 13:11:58
260
原创 python项目导出包
可以用如下命令:pip freeze > requirements.txt对于不同项目之间的包的区分和隔离,最好使用virtualenv.另外,导出包信息后,最好检查下有没有问题。很多时候可能需要手动修改下。...
2018-09-21 17:47:17
4576
原创 win10-64安装pygraphviz
最近部署一个项目时,pip install 的requirements里面需要用到一个pygraphviz的包。这个包是用来图形化数据的。 requirements里面所有的包都顺利安装了,唯独这个包死活装不上。 如下所示是相关的错误信息。error: Microsoft Visual C++ 10.0 is required. Get it with "Microsoft Windows...
2018-09-04 13:53:41
2357
1
原创 多进程开发如何共享数据:以python为例
最近使用gunicorn部署了一个项目,在启动的时候,加上了worker 3的参数。也就是说,同时有3个进程存在。 这就引出了进程间通信的问题。因为有一个功能只用单线程去执行就行了,也就是说,即使启动100个进程, 这部分功能只有一个执行的实例才可以。否则系统就紊乱了。如何在多进程之间共享数据呢? 根据我搜索到的资料,有以下几种方案:使用 multiprocessing.manage...
2018-07-24 14:33:12
3700
2
原创 Nginx建站遇到的那些坑
需求:在一台linux服务器上能够同时启动多个web服务。主要是为了团队成员之间并行开发、测试,互不影响。在安装完 Nginx 之后,默认配置文件在 /etc/nginx/sites-available/default 。 复制一份,命名为test.com,修改一下端口之类的参数。server{ **listen** **8087**; **server_name y...
2018-07-10 12:22:02
3753
翻译 github:Error: Permission denied (publickey)解决方法
permittion denied错误,其实是暗示你对git服务器的链接被拒绝。一般原因有以下几个:不要在git 命令前面加上sudo一般情况下,不要在使用git的时候加上sudo 。 如果你非要用,在你需要取得一个以root身份登陆的shell的场合下,你可以用su 替代 sudo。确保你访问的server名字是git打字的时候难免会发生错误。有可能你不小心把githu...
2018-07-02 11:16:08
3101
1
原创 linux工具之awk利用:获取cpu占用率达到一定值的进程的PID
之前我对awk的使用仅限于从格式确定的字符串输出中取出自己相要的字段。但是最近有一个需求,需要从标准输出中截取一个字段,但是这个标准输出看上去好像格式并不统一:这个命令就是top -bn 1 -i -c输出如下:top - 12:23:08 up 16 days, 20:30, 6 users, load average: 1.20, 1.17, 0.80Tasks: 287...
2018-06-21 11:45:55
5441
原创 浅析HTTP协议请求报文: post和get方法
学习计算机网络,很多初学者,包括我在内,在学习web知识的时候容易产生一种惯性思维,那就是觉得get方法就是从服务器取得数据;post方法就是向服务器提交数据。造成这种思维的原因,大概就是我们在学习面向对象编程的时候学过类的get()方法和set()方法,容易把这种概念类比到HTTP协议的概念里面。哪怕是我身边有一定工作经验的程序员都有可能产生这种思维。HTTP协议是运行在计算机网络应用层的网...
2018-05-30 17:54:08
2703
2
原创 git之rebase
git基本操作1.创建一个本地分支,并使这个分支和远程分支同步。 git checkout -b dev origin/dev 或者git checkout -b dev remotes/origin/dev2.add,commit之后,push到远程分支: git push origin HEAD:devgit config –list 列出所有配置为什么会有rebase...
2018-05-23 17:51:06
370
原创 linux 部署 node.js 运行环境
linux安装node.jsapt-get update apt-get install python gcc make g++ 到node.js官网下载Source Code的版本:wget https://nodejs.org/dist/v8.9.0/node-v8.9.0.tar.gz 解压文件 cd 解压后的目录 ./configure make sudo make in...
2018-05-23 17:43:53
675
原创 linux 部署项目会遇到的一些问题
1.修改系统语言sudo nano /etc/default/locale LANG=”en_US.UTF-8” LANGUAGE=”en_US:en”reboot如果系统没有装en_US:en,运行: sudo locale-gen en_US.UTF-82.不能使用tab键vi /etc/passwd 找到该用户,修改其shell为bash ps:bash完全...
2018-05-23 17:41:20
618
原创 重启rabbitmq服务
重启rabbitmq服务通过两个命令来实现: rabbitmqctl stop :停止rabbitmq rabbitmq-server restart : 重启rabbitmq因为rabbitmqctl是没有restart命令的,所以重启rabbitmq服务需要这么两步。另外,附上一些有用的官方连接: 官网所有文档 rabbitmq命令使用 rabbitmq-server...
2018-05-22 15:03:11
48239
6
原创 fluent-gem install:fluentd在线安装插件遇到的问题
最近在使用fluent-bit 和 fluentd 进行日志收集、数据批量插入elasticsearch、rabbitmq。在使用fluentd批量插入数据的时候,我们需要用到fluentd的插件来把收集到的日志数据按照规定的格式插入数据库或者消息队列。所有的插件都可以在fluentd官网找到。安装插件的步骤,按照官方文档,只要执行这条命令就可以: fluent-gem install ...
2018-05-22 11:04:01
3717
原创 vmware安装错误:丢失 MSVCR120.dll。
最近由于工作需要,需要了解下vmware。于是我去官网下载了一个安装包,安装好后,点击图标准备开启虚拟机之旅时,一个对话框弹了出来,类似下面这样:无法启动此程序,因为计算机中丢失 MSVCR120.dll。尝试重新安装该程序以解决此问题。网上会有一些让你去下载个这个文件放到windows/system32相关的文件夹里。我试过了,没用,而且会报一个新的错误:应用程序无法正常启动(0xc
2018-01-22 17:59:04
7107
1
原创 centos5.11安装gcc
最新想要写点c语言玩玩,就想在去年装的centos上面装一下gcc. 本以为输入一个yum gcc install就好了,谁知道天真的我又错了。 遇到了一系列困难,历时5个小时左右,现在gcc安装已经好了。 简而言之,遇到的问题有下面几个:yum源无效。我对linux目前玩得还不是很转,不知道这么说是否正确。总之,centos5.11这款系统太古老,已经不再被维护,所以它的很多软件,资源都比
2017-06-19 22:22:15
1024
原创 vim 基础
vim 快捷键其他基本的一些如复制,删除,保存,模式切换等暂且不表。 这里是提高效率的一些快捷键,经常用就熟练了。 u:撤销 ctrl+r:重做 G:回到最后一行 gg:回到首行 ndd:删除n行,从光标所在行开始 nyy:复制光标所在行开始的N行 .:重复上个操作 h:左 l:右 j:上 k:下 o:在光标所在行下插入一行
2017-06-15 20:24:17
166
原创 C预处理器_基础知识
编译前的准备空白字符替换为一个空格(换行符除外)注释替换为一个空格把源代码里面的字符映射到源字符集定位反斜杠,把多个物理行变为一个逻辑行define宏代码中引用宏的位置,直接用宏定义替换带参数的宏,需要在参数和宏定义表达式外面加上括号宏定义为大写字母,长度为一行include头文件包含头文件的Include行直接被头文件里的代码替换如果头文件里面有头文件,也用相关的代码替换I
2017-06-13 23:27:39
223
原创 关于外包公司线性盈利与软件公司规模化盈利的思考
今天看得一篇文章 为什么说软件外包公司没前途 里面写道: 外包型软件公司的典型盈利模式,它是线性模式:它把低廉的员工时间高价卖给客户,从中赚取差价,同一个员工的时间在某个阶段只能卖给一个客户。 对这类外包公司来讲,它的增长,就是线性的。如果它只有外包模式,就只好通过不断地招更多的人不断地承接更多的项目来赚到更多的钱。在这个线性增长的过程中,它还要面临接不到项目、管理成本指数型增长、人员
2017-06-13 22:12:22
797
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人