0X00 时间都去哪儿了 好多人都会有这种情况,整整两天的周末回忆起来却不知道自己做了什么,明明也没看几部电影、没怎么打游戏,也没怎么学习,时间怎么就不见了呢?更为常见的一种是“等我有空了就搞”、“等我空了一定去一趟哪儿哪儿哪儿”、“下周六一定要去吃XXX”,然后就再也想不起来了。真正空下来的时候又觉得自己没事做,完全想不起来之前列出来比卷纸还长的todo list了。 实际上大家几乎不会真的有“无事可做”的时候,只是有空的时候想不起来之前的计划,定了计划又不定执行时间。最后到头来就落得这么一个不仅很闲又啥事都做不了的境况。比如你一定会有过上午还在说“有空了一定去一趟本地的博物馆看看”,下午的时候就趴在床上不知道要干啥的情况。这种在我们中太长见了,通常我们都是就这么趴在床上继续下去了。 以我个人来说,在主动管理自己时间的时候我一天下来有很多事要做,感觉自己很充实。那段时间里我玩游戏、看书、写代码甚至去一公里外的镇上吃一家好吃的包子都会列在我的计划中,严格按照计划行事。…
好多人的VPS或是服务器就只跑了一个小服务或是小程序,虽然我们多数人的VPS性能比较差但是只跑一个小服务一个小程序未免还是有些浪费。大可将其充分利用起来,毕竟性能再差也是一个24小时不停机且带有一个独立公网IP的机器。这里我介绍一下我跑在VPS上的一些服务和使用中的一些经验和建议,希望可以给各位带来些许的帮助吧。 0X00 操作系统 通常我们自己的VPS性能都不怎么强,很多人都是买的单核512M内存的,所以Windows Server系统通常是不用想了。那么众多的Linux发行版本又该如何选择呢?其实因为我们是个人使用,不用过分考虑发行版本的区别,哪个用着习惯就用哪个。我自己的VPS用过一段时间的Fedora和Debian,都是很不错的。如果是针对Linux新手的话我还是比较建议使用Ubuntu和CentOS,因为这两个系统的用户群体很大,出现问题时候在网络上也更容易找到相关的解决方案。 还有就是图形界面,Linux作为服务器操作系统时是完全没有必要安装图形界面的。想必购买了VPS的用户应该也多少能操作一下Linux,就更没有必要浪费系统资源和时间去安装图形界面和VNC了。 0X01…
0X00 前言 最开始使用Linux的时候一直搞不懂为什么Linux下会有这么多在命令行里操作文本的工具。一度以为这些玩意儿没啥大用,但是随着使用频率与强度的增加才发现这些东西是Linux上非常有魅力的部分。 0X01 cat cat命令是最简单的,cat filename就是将文件内容以文本的形式输出到命令行。这个命令主要是作为后面组合技的基础,威力到后面cat的作用才能发挥出来。 0X02 head head是查看文件的前面部分,默认情况下是前10行,可以使用-n参数指定具体的行数。如果你有一个文件巨大无比,比如说几个G,且你只关心前100行,那怎么搞呢。使用cat是不可能的了,毕竟你cat一下之后回去睡一觉屏幕都可能还没滚完,何况你还得翻回最上面查看开头的内容。 0X03 tail tail类似于head命令,不过这个是用来查看文件最后的,同样支持使用-n参数来指定最后多少行。不过这个命令最多用于查看日志文件。例如你有一个日志文件每秒都在源源不断的写入新内容,此时又想看最新的日志怎么搞呢。tail提供了一个-f的参数,使用tail filename…
0X00 install 安装nose:pip install nose 安装mock:pip install mock Python3 中mock模块已成为标准库,无需单安装 在任意目录下执行nosetests看到有输出就是已经安装好了nose。进入到Python shell中执行import mock没有报错也就是mock安装好了。 0X01 用于测试的代码 这里先贴出这次被测的代码simple_math.py,是一个非常简单的数字计算类。 这里的代码是有问题的,毕竟是要拿来作为单元测试的样例的嘛。 0X02 编写单元测试 我们要针对上述文件创建一个新的test.py来测试其中的MyMath类。 从代码中可以看到首先导入了需要测试的类MyMath,然后就写了几个test_开头的方法,方法内部是模拟调用MyMath中的方法,并将得到的结果与预期结果相互匹配,最终使用assert语法来判断是否返回了理想的值。测试代码写好之后在当前目录下执行nosetest -v来运行我们的单元测试吧,输出结果如下。 0X003 简单解释一下…
平时使用Django REST framework的时候除了常用的几个字段类型之外其实没有哪些字段是必须的了,不过了解一下这些「非必需」的字段能给日常的编程任务带来大幅度的效率提升呢。 0X00 EmailField 首先是EmailField,这个字段本质上是CharField但是单纯的添加了一个完善的校验,可以免去我们手工编写正则和对应报错信息的过程,简单地定义之后就可以使用了。 0X01 URLField 这里的URLField跟上面的EmailField类似,在CharField的本质上添加了对应的校验,使用时会校验该字段是否符合url的校验规则。 0X02 IPAddressField IPAddressField也是一样,只是在CharField上添加校验。不过有一个针对ip的参数protocol,顾名思义,可以设定校验不同版本的ip地址。protocol参数的值从这三个中选一个both/IPv4/IPv6,其中默认选择的是both,也就是说同时会接受IPv4和IPv6两种地址。 0X03 DecimalField 带有精度的…
上周参与了公司举办的针对应届毕业生员工的一次培训课程,讲到了职场新人需要注意的一些问题。每个人的收获都是不同的,针对我自己认为的重点总结一下也算是给两天的时间一个交代。 0X00 同理心与同情心 同情心和同理心我们大家多少都会听过,不过多数人可能都会像我一样没有思考过其中的区别。其实同情心大家都会有,比如你看到一个人流离失所,被家人朋友抛弃,身上破破烂烂蹲在马路边乞讨,多少都会有些同情他,比如给他一些零钱之类的。这能够算是同情心,但是同情心并不是帮助别人的良好方案。我们古人就有“嗟来之食”之说:一位乞讨的人在面对别人用脚踢来的食物时宁可饿死也不会吃一口。我们也都知道既然要给别人食物就不应该用脚踢过去。所以这个提供食物的人是具有同情心的,但是不具有同理心。同理心强调“感同身受”,这不是随随便便就能做到的。 具有同理心的人肯定不会用脚踢过去,可能会带着食物过去他旁边聊起天来。说一说自己以前窘困的时候也是饥不择食,真切的体会他此时的痛苦,在这种情况下大家才能互相坦诚的交流。…
0X00 When and Why 我是大三下学期即将结束的时候出来实习了,故事说来比较诡异。一天下午像往常一样背着包到教室准备上小学期的课程(小学期就是为期一个月的综合实践),一个朋友跑过来悄悄跟我说“hey 大家都在找实习了,你怎么还不着手找哇”。当时一听我就慌了,很慌的那种慌,然后那天下午把之前准备的简历投了出去。毕竟学期即将结束,其实我是想要回家过一个暑假的,所以我也就没打算真的找到实习,只是说尝试着面试一下赚一些面试经验。那既然目标是赚取面试经验就只投大厂呗,小公司面试经历的用处可能没有那么大。当天下午我就只投递了“知道创宇/知乎/陌陌”三家,结果还没下午课程还没结束呢就收到了创宇的面试通知。另外两家其中一家拒绝了我,另一家一直没有回馈信息。 后来面试还算比较顺利,拿到了offer后就咬牙放弃了最后一个暑假回家的机会,退掉了好不容易抢到的火车票,在2017-07-24就正式入职创宇的实习生岗了。所以说我几乎是被朋友忽悠出来实习的,再加上运气好拿到了创宇的offer,要不然我还要回家过暑假呢,哈哈 0X01 面试&笔试…
为什么这里说是"非入门级"用法呢,因为我个人觉得这是我接触Django之后一段时间才开始了解的用法,但是说是高级用法又太夸张了,所以用了这么一个诡异的”非入门级“的定位。 下面的示例中使用下面的model,简单描述一下并非真实代码 0X00 使用Avg()/Sum()/Count()/Max()/Min() 这些方法的用法很简单,顾名思义。不过需要配合下面介绍的annotate()或aggregate()使用。 from django.db.models import Avg, Sum, Count, Max, Min name | function | Avg | 求平均数 Sum | 求和 Count | 计数 Max | 求最大 Min | 求最小 0X01 使用annotate() 最基础的查询就是从一张表中查询符合某条件的字段,而使用annotate()可以得到一些我们手动计算得到的值,并将其作为Queryset中Item的一个属性来调用。…
自从一咬牙购入了一台Synology之后感觉网络和存储的体验提升了很多。在这里总结一下购买理由,方便犹豫不决的朋友做个参考。 0X00 来自百度云盘的惊悚事件 国内云盘一波洗牌过后,常用的几家都已经GG了,仅有一家百度还存活着。不过百度云说起来是免费的,实际如果使用的比较多的话就会发现,如果不充值为会员的话,速度就会非常的慢。所以说百度云盘也几乎是一个收费的网盘,超级会员算下来要将近30元/月。 其实收费无可厚非,毕竟大家花钱享受服务嘛。不过直到一天,在网上看到了这样一件事: 一个人在自己的百度云盘中上传了大量自己拍摄的照片(纯一手自己拍摄的),过段时间后因为一些原因从百度云盘手动删除了。又过了不短的一段时间 ,该用户再次将自己的这些照片上传至百度云盘,发现居然所有图片都是使用 急速秒传…
0X00 内容比较少,不分标题 我们对Django中的model进行查询时通常是某个字段和一个常量 对比,比如下面这种写法 如果遇到高级的查询可能会使用Q()查询,不过也只是进行多个条件的查询 这里是我的另一篇介绍Q()的博文。 但是如果有这样一个需求:”查询订单中结束时间和开始时间的间隔大于45分钟的“。那应该怎么办的?因为订单的开始时间和结束时间都是一个字段,我们需要对比同一条数据中的两个字段。这时候可以使用F()来查询。 本段内容的官方文档:<https://docs.djangoproject.com/en/2.1/ref/models/expressions/#f-expressions> 本段内容的另一篇博客:<https://www.cnblogs.com/liuq/p/5946803.html>