微信浏览器,用户真实的IP地址

接上篇Docker内web服务获取真实客户端IP,在设置好REMOTE_ADDR后,通过解析IP发现用户的位置竟然是别的地区,小伙伴第一次告诉我的时候我以为是IP地址库不是很准确,并没有在意,后来自己再一次测试的时候,发现IP确实不是我真实的对外IP。

Read More

Docker内web服务获取真实客户端IP

系统需求要在用户注册的时候,自动获取用户所在的区域,最简单的,不通过浏览器或微信获取位置权限的方式,就是通过解析IP归属地。IP归属地查询很简单,通过高德IP定位或者其他服务商提供的API就可以实现,但是在实施过程中,发现Docker内部的Web程序,获取的IP都是Docker容器的IP🤦‍♂️.

Read More

我删了一个数据库

2019年2月18日,我删了一个数据库。

对的,网上段子里的事故,真实的发生在我身上了。我删的不单单是数据,是整个数据库文件夹。

提醒一下有幸看到的朋友,XFS文件系统,误删了理论上就不存在找回的可能性,如果没有备份的话。

如果有朋友也手贱了,别激动,抽根烟冷静地想一想离职书怎么写,毕竟删库和跑路是分不开的。

Read More

DRF DateTime转换为时间戳

将时间转化为时间戳输出给前端,可以减少前端工作量,毕竟从时间戳转换为本地时间很简单,也减少了时区转换的麻烦。但是DRF本身是没有提供时间戳输出选项的,准确的是python的strftime并没有提供标准的时间戳输出格式,但是%s作为GNU 扩展的时间输出格式,因此DRF的DATETIME_FORMAT可以设置为’%s’,能够输出时间戳字符串(注意,不是数字,是字符串),但是不要高兴的太早,如果不是UTC时间,那么这样设置是有问题的。

Read More

Charles和 Shadowsocks 共存设置说明

该文的说明解释可能需要如下的软件及环境:

Chrome v71.0.3578.98
macOS v10.13.6
Charles v4.2.7
ShadowsocksX-NG v1.8.2 (1)


Charles作为一款HTTP(S)抓包工具非常好用,不过国内的用户基本上还都挂Shadowsocks翻墙了,系统代理只能有一个(注意是系统代理,一般软件也都可以配置自己的代理服务),在macOS上,Chrome默认使用的就是系统代理(单独设置代理请参考为谷歌chrome浏览器设置独立代理服务器),所以如果想要两者同时工作不冲突,还需要一些特别的设置。

Read More

Django 国际化和本地化

1. 配置

很多不靠谱的文章上来第一步就是设置LANGUAGE_CODE = 'zh-CN',这明显是没看懂配置项的意思,从Django文档可以看出, LANGUAGE_CODE只是最后的兜底设置 ,所以这一步的设置完全没有必要,当然,如果站点确定只提供一种语言的服务,则需要设置并且不提供其他语言的翻译。

Read More

DRF serializer中外键post使用id,get获取详细信息

在使用Django REST framework Serializer的时候,并不一定单一的SerializerField就可以满足要求,比如遇到Model 中含有外键,如果Writable nested representations,则参考官方的例子重写create或者update方法就行,但如果要是想在deserializering的时候使用外键键值——object_id, serializering的时候表达出一些必要的信息,那么就需要对Serializer的字段进行一些特定的设置了。

Read More

一次可怕的误操作-暨IDE的重要性

很早之前喜欢用VIM 敲代码,也跟着yangyangwithgnu的文档折腾过一段时间,不过随着几次换电脑、重装等(虽然配置也做了备份),热情逐渐退却,在项目开发中还是换回了IDE,平常写一些简单的脚本才会用VIM,也是第一反应,毕竟为了写两三个文件的代码是不需要用IDE的。也幸亏用了PyCharm,才免去了一次说大不大说小不小的损失。

Read More

Django添加用户Celery任务

系统开发需要添加用户自己设定的定时任务,当然这种任务不是用户自己编程那种,而是写好的逻辑,用户设定参数执行即可。

上篇Django2结合Celery添加定时任务说明了如何利用Celery设定定时任务,这次需要用户添加自己的定时任务,总共分为步:

Read More

Twisted 服务间通信

基于Django & Channels & WebSocket & Twisted的物联网远程控制】写到,下位机每隔一段时间连接上位机传送数据和进行任务下发,现在领导改需求了,要求使用长链接,使得上位机的任务可以随时下发,方便用户。小米的智能家电采取的应该也都是长链接的方式,由于小米家电本身是市电供应,家里也都是wifi上网,所以除了会多消耗服务器资源外,这种即时的控制还是蛮不错的。但是真正用于野外的物联网终端,还是要平衡好电量、流量的问题才行。

Read More