https://cdn.programmer.work/icon/avatar.jpg

Shawn's blog

分享我的知识、经验、生活与感悟

文章内容可能过时、有瑕疵、有误、甚至和主流价值观相违背

vim 寄存器的使用

编辑器之神可不是浪得虚名

0X00 遇到了一些问题

如果你看到了这篇文章那么我可以认为你至少已经掌握了vim基本用法。在我个人使用vim的过程中遇到了一些问题,这次就挑“寄存器”这部分出来说一下吧。

如何将自己的时间管理起来

0X00 时间都去哪儿了

好多人都会有这种情况,整整两天的周末回忆起来却不知道自己做了什么,明明也没看几部电影、没怎么打游戏,也没怎么学习,时间怎么就不见了呢?更为常见的一种是“等我有空了就搞”、“等我空了一定去一趟哪儿哪儿哪儿”、“下周六一定要去吃XXX”,然后就再也想不起来了。真正空下来的时候又觉得自己没事做,完全想不起来之前列出来比卷纸还长的todo list了。

把自己的 VPS/Server 用起来

好多人的VPS或是服务器就只跑了一个小服务或是小程序,虽然我们多数人的VPS性能比较差但是只跑一个小服务一个小程序未免还是有些浪费。大可将其充分利用起来,毕竟性能再差也是一个24小时不停机且带有一个独立公网IP的机器。这里我介绍一下我跑在VPS上的一些服务和使用中的一些经验和建议,希望可以给各位带来些许的帮助吧。

Linux上的简单文本处理

0X00 前言

最开始使用Linux的时候一直搞不懂为什么Linux下会有这么多在命令行里操作文本的工具。一度以为这些玩意儿没啥大用,但是随着使用频率与强度的增加才发现这些东西是Linux上非常有魅力的部分。

职场新人培训总结

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

作为实习生的一年

0X00 When and Why

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

Django 中的一些非入门级用法

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

你为什么需要一台 NAS

自从一咬牙购入了一台Synology之后感觉网络和存储的体验提升了很多。在这里总结一下购买理由,方便犹豫不决的朋友做个参考。

0X00 来自百度云盘的惊悚事件

国内云盘一波洗牌过后,常用的几家都已经GG了,仅有一家百度还存活着。不过百度云说起来是免费的,实际如果使用的比较多的话就会发现,如果不充值为会员的话,速度就会非常的慢。所以说百度云盘也几乎是一个收费的网盘,超级会员算下来要将近30元/月。

Django 中的 F()

0X00 内容比较少,不分标题

我们对Django中的model进行查询时通常是某个字段和一个常量 对比,比如下面这种写法

    Student.objects.filter(name='shawn')
    Student.objects.filter(age=233)
    Student.objects.filter(gender__in=('F', 'M'))

如果遇到高级的查询可能会使用Q()查询,不过也只是进行多个条件的查询

关于 Python 函数默认值的小问题

Python一切皆对象

0X00 困扰我的一个问题

前两天在工作上遇到了个问题,说来很简单:我要在每天的固定时刻统计系统中当天产生的一些数据并且用邮件发送给指定的人,又考虑到了程序的可复用性(统计其他日期)我并没有把参数写死,而是将其默认为当天的日期并可以指定参数。很容易我就写出了类似下面的代码。Ps.伪代码,不要过分纠结。

提升 git 新手效率的小技巧

内容比较少,只是今晚翻看教程的时候发现的几个可以替换调我以前一些诡异操作的方法,将其整理贴出。

0X00 git blame

是谁在代码里下了毒?是谁用了一个超酷炫的方法解决了你解决不了的问题?当你想知道仓库中的某行代码是谁提交的,就可以使用这个方法。git blame hello.py可以看到hello.py这个文件所有行的提交人是谁,于何时提交的。而且这个命令最常用的是和grep合用,git blame hello.py | grep prinft(是谁写错了这个单词+_+)

git 中的 bare repository

0X00 遇到了什么

我们使用git,绝大多数情况下都是大于等于一个人进行代码编辑,然后将自己的改动提交到github/gitlab/gogs等仓库,然后再通过pull request/merge request的方式进行代码合并。所以我们一般都是先从github上创建一个新的项目,然后按照向导在自己的本地git clone下来一个空项目,再提交代码上去;或者fork & clone的流程。

Linux 下日常使用软件推荐

本来准备总结一下Linux桌面系统使用一年以来的一些感受,以及为什么选择Linux作为桌面系统工作学习的,但是构思了半个小时也没能想到要写些什么。所以还是来推荐一下一年以来在Linux桌面平台下的软件体验和推荐吧。由于我这一年多以来一直使用的是Fedora Workstadion,所以并不能保证这些软件能在其他平台下的体验与我一致,不过一般来说都是没有问题的呢。

使用 Docker 部署 Sentry 服务

0X00 Sentry是什么

Sentry是一个统一收集整理程序异常错误的服务。如果你有一个程序在跑,并且配置了日志,那么可以轻松的找到程序出错的地方;甚至可以在报错后发邮件通知自己以便抓紧处理。但是如果你的团队有10个项目和50个人,并且这50个人并不是每人只负责一个项目,此时此刻该怎么办呢?难道为每个项目都配置很多人,并且在人员变动和项目变动的时候都去再修改吗?这样就未免有点傻了,Sentry就是用来做这个的。

Django 中事务的三种简单用法

0X00 什么是“事务”

“事务”简单的说就是把一些数据库操作打包起来,要么就全部执行要么就全部不执行。

假设有一个操作是新建一个学生信息,有多张表分别记录了“基本信息、家庭信息、学校信息等“,那么就需要分成多步来新增这个学生的信息。但是如果在添加了”基本信息和家庭信息“两张表的内容后在添加”学校信息“时出现了错误那么数据库中就会存在该学生部分信息,从而使得数据库中的数据出现错误。

Django 与 Django REST framework 中的这些 "空"

0X00 Django Model中的空

Django的Model常见两个与空有关的参数:nullblank。其中null是数据库层面的是否允许为Null,而blank则将空处理为空值。比如一个CharFieldblank=True,那么这个字段在没有赋值的情况下入库,这个字段就会是空字符串而不是Null。

Django REST framework 中要注意的几个点

0X00 Model中要注意的几点

verbose_name 和 help_text 属性

Model中通常第一个参数指定的是verbose_name,还要手动指定一个help_text属性。其中verbose_name属性是用来我们自己读的,而help_text是用于提供字段描述类的功能,比如在DJango Admin中verbose_name会变成字段的中文名,而help_text则会变成改字段的描述。