Shawn's Blog

一个伪程序员的伪技术博客

0X00 install

安装nose:pip install nose
安装mock:pip install mock

Python3 中mock模块已成为标准库,无需单安装

在任意目录下执行nosetests看到有输出就是已经安装好了nose。进入到Python shell中执行import mock没有报错也就是mock安装好了。

0X01 用于测试的代码

这里先贴出这次被测的代码simple_math.py,是一个非常简单的数字计算类。

1
2
3
4
5
6
7
8
9
10
#!/usr/bin/env python
# coding=utf-8

class MyMath:
def my_add(self, a, b):
return a + b

def my_subtraction(self, a, b):
if a and b:
return a - b

这里的代码是有问题的,毕竟是要拿来作为单元测试的样例的嘛。

阅读全文 »

平时使用Django REST framework的时候除了常用的几个字段类型之外其实没有哪些字段是必须的了,不过了解一下这些「非必需」的字段能给日常的编程任务带来大幅度的效率提升呢。

0X00 EmailField

首先是EmailField,这个字段本质上是CharField但是单纯的添加了一个完善的校验,可以免去我们手工编写正则和对应报错信息的过程,简单地定义之后就可以使用了。

1
2
3
4
5
user_email = EmailFIeld(
min_length=5,
max_length=30,
allow_blank=False,
)

0X01 URLField

这里的URLField跟上面的EmailField类似,在CharField的本质上添加了对应的校验,使用时会校验该字段是否符合url的校验规则。

1
2
3
4
5
article_url = URLField(
min_length=10,
max_length=100,
allow_blank=False,
)
阅读全文 »

上周参与了公司举办的针对应届毕业生员工的一次培训课程,讲到了职场新人需要注意的一些问题。每个人的收获都是不同的,针对我自己认为的重点总结一下也算是给两天的时间一个交代。

0X00 同理心与同情心

同情心和同理心我们大家多少都会听过,不过多数人可能都会像我一样没有思考过其中的区别。其实同情心大家都会有,比如你看到一个人流离失所,被家人朋友抛弃,身上破破烂烂蹲在马路边乞讨,多少都会有些同情他,比如给他一些零钱之类的。这能够算是同情心,但是同情心并不是帮助别人的良好方案。我们古人就有“嗟来之食”之说:一位乞讨的人在面对别人用脚踢来的食物时宁可饿死也不会吃一口。我们也都知道既然要给别人食物就不应该用脚踢过去。所以这个提供食物的人是具有同情心的,但是不具有同理心。同理心强调“感同身受”,这不是随随便便就能做到的。

具有同理心的人肯定不会用脚踢过去,可能会带着食物过去他旁边聊起天来。说一说自己以前窘困的时候也是饥不择食,真切的体会他此时的痛苦,在这种情况下大家才能互相坦诚的交流。

同事之间相处也是这样,一天你的同事说最近工作不顺利生活也不如意该怎么办呢?如果你冲上去说“人生不如意十有八九,早晚都会过去的”。听起来是在安慰他,但是实际上并没有用,甚至还会让他变得更丧更不开心。如果你能坐在他旁边分享分享自己工作不顺利的时候,再询问一下他的具体情况,最后再结合自己以前的经历给提供一些好的建议,他一定会好起来的。

这里不讨论“可怜之人必有可恨之处”等问题,也没有别的什么意思,只是举例而已

阅读全文 »

0X00 When and Why

我是大三下学期即将结束的时候出来实习了,故事说来比较诡异。一天下午像往常一样背着包到教室准备上小学期的课程(小学期就是为期一个月的综合实践),一个朋友跑过来悄悄跟我说“hey 大家都在找实习了,你怎么还不着手找哇”。当时一听我就慌了,很慌的那种慌,然后那天下午把之前准备的简历投了出去。毕竟学期即将结束,其实我是想要回家过一个暑假的,所以我也就没打算真的找到实习,只是说尝试着面试一下赚一些面试经验。那既然目标是赚取面试经验就只投大厂呗,小公司面试经历的用处可能没有那么大。当天下午我就只投递了“知道创宇/知乎/陌陌”三家,结果还没下午课程还没结束呢就收到了创宇的面试通知。另外两家其中一家拒绝了我,另一家一直没有回馈信息。

后来面试还算比较顺利,拿到了offer后就咬牙放弃了最后一个暑假回家的机会,退掉了好不容易抢到的火车票,在2017-07-24就正式入职创宇的实习生岗了。所以说我几乎是被朋友忽悠出来实习的,再加上运气好拿到了创宇的offer,要不然我还要回家过暑假呢,哈哈

0X01 面试&笔试

面试当天到了公司,在前台登记后给了我一份笔试题,内容是真的记不起来了,不过都比较简单。多是关于Python语言的一些问题和Linux系统操作的一些问题还有一些基础的SQL,没有问到关于我应聘岗位使用的Django框架。笔试题答好后我现在的部门总监就来开始面试了,除了问我笔试题的答题思路以外还问了些我搞不懂为什么问的问题。比如问了我“栈溢出攻击”,然而我并不懂安全而且部门也不是安全产品部门,所以我并没有答出来,后来还是面试官给我科普了一下“栈溢出攻击”是什么。我记得后面问的最具技术性的问题就是我学过什么Web框架,我说了解过一点点Flask后面试官问了我为什么选择优先学习Flask。在此之后就是“会不会用梯子?梯子是买的还是哪里的?会不会用Linux?用的什么浏览器?”这类更偏向“程序员文化”的东西了。最后面试结束的时候问了我简历上的个人博客和Github有没有在更新,我说在更新后面试就差不多结束了。

因为互相加了QQ,在入职之前还给我说过感觉我Github上项目的代码比较整洁,挺合格的。其实当时我Github上就一个小项目,很小很小的那种,所以说Github在求职过程中还是非常非常有用的。

阅读全文 »

为什么这里说是”非入门级”用法呢,因为我个人觉得这是我接触Django之后一段时间才开始了解的用法,但是说是高级用法又太夸张了,所以用了这么一个诡异的”非入门级“的定位。

下面的示例中使用下面的model,简单描述一下并非真实代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
from django.db import models

class Staff(models.Model):
name = models.CharField(max_length=10)
age = models.IntegerField()


class Order(models.Model):
staff = models.ForeignKey( # 订单负责人
'Staff',
null=True,
on_delete=models.SET_NULL,
)
price = models.IntegerField() # 订单的价值
阅读全文 »
0%