菜鸟翻译屋

什么时候不使用箭头函数

Roy

作为一个前端渣渣,最近在写js代码的时候,开始使用一些ES6的新特性,结果到箭头函数部分“掉坑”了。网上大部分都说箭头函数怎么用,而很少说箭头什么时候 不要用,所以这里翻译一篇文章来说说什么时候不要用的问题。

原文地址,向原作者表示感谢。

我特么是如何利用Django, Django REST Framework, Angular 1.1.x和Webpack构建一个项目的

Roy

原文地址,向原作者表示感谢。由于本人并没学习过angular,所以翻译有误的地方恳请指正。


我已经受够了JS社区的那帮二货,我只是想使用Django作为后端结合Angular做一个简单的、可复用的项目,却没有一个简明的指导教我如何做到。如果你也为此挣扎,这里有一份指南教你如何构建一个由Django作为后端、Webpack进行组织的Angular程序。

问题

我想开发一个Angular1.1.x的项目并使用Django作为后端提供数据,我喜欢使用Django REST Framework(DRF)来构造RESTful API。我也想打包需要的JavaScript资源。目前,我打算使用单一的服务器上运行这个程序。

依赖

  • Python 2.x
  • a virtual Python environment
  • Django 1.9.x (pip install django)
  • npm 2.15.8+
  • Webpack 1.13.x (sudo npm i -g webpack)
  • ESLint 2.13.1+ (sudo npm i -g eslint)
  • NodeJS 4.4.7+

在MySQL中存储树状结构

Roy

原文地址,原文中Hierarchical Data直译为 分层结构,这里我翻译成 树状结构

补充资源:

  1. https://django-mptt.github.io/django-mptt/ ,如果你也使用python和django,这个是现成的APP。

另外,个人觉得这种方法对于搜索的效率提升最大,而相应的新增、删除等操作则会变慢,个人猜测未经测试。

个人总结的核心:如果一个节点A是节点B的子节点,那么A的左值一定大于B的左值,A的右值一定小于B的右值。或者说,A的左值一定在B的左值和右值之间。

名词王国里的死刑(翻译)

Roy

真是惭愧,直到今日才读到这篇文章,原文在这里。我本人大学课程中唯一没选修的语言就是Java,不知什么原因对于Java就是不感冒。虽然由于某些原因做了一阵android的开发,但是这段经历更是让我坚定了“能不写java程序就不写java程序”的想法。这里无意引起“语言之战”,仅是个人喜好问题罢了。

flask-socketio中文文档

Roy

官网在这里,英语好的直接去看官网文档吧,我是英语渣只能翻译个大概;另外注意本文翻译时间,可能你看到的时候官网已经更新了。


flask-socketio赋予了flask程序支持服务端和客户端间双向低延迟通讯的能力,客户端可以使用 SocketIO 库或任何支持与服务端建立长链接的兼容库。

安装

可以直接使用pip安装:

pip install flask-socketio

依赖

自从1.0版开始,这个扩展完全兼容了python2.7和python3.3+版本。异步服务的支持基于下面3个选择中的一个:

  • eventlet 是3个选项中性能最高的,同时支持长轮循(long-polling)和WebSocket。
  • gevent 是在以前版本中使用的框架,支持长轮循,如果想支持WebSocket的话需要同时安装gevent-websocket 库。使用gevent和gevent-websocket结合性能也不错,但略低于eventlet。
  • flask 基于Werkzeug的开发服务也能用,不过性能上不如上面2个选项,所以它应该只用于开发时使用。这个选项只支持长轮循。 本扩展将自动检测哪些异步框架被安装,默认首选eventlet,其次是gevent,最后是flask自带的开发服务。 对于客户端来说,可以使用官方的Socket.Io来建立于服务端的链接,也有使用swift和c++写成的客户端。非官方的客户端也能工作,只要它实现了Socket.IO 协议。

目前的局限

目前flask-socketio只能同时运行在单个进程中(这里应该指的是一个进程中仅能存在一个实例的意思,而非只能开启一个进程吧…),解决这个限制的工作正在进行中。 (关于升级变化、以及从老版本迁移到新版的注意事项我就不翻译了,因为没用过老版本)

使用firewalld-cmd配置防火墙

Roy
CentOS7和fedora中的默认防火墙都变成了firewalld,当然你也可以选择禁用这个并自己安装iptables,下面内容原文:这里,而且只翻译我用到的部分文章。原文中还展示了如何使用图形界面进行配置,不过作为键盘爱好者,能不用鼠标的就尽量不用鼠标了,直接上命令行操作。 4.5.4 理解域概念 firewalld可以根据不同的信任级别,将处于不同域内的设备进行分离。NetworkManager用于管理firewalld将接口分配到哪个域中,可以通过NetworkManager界面或filrewall-config工具来进行设置。 默认的配置文件位于/etc/firewalld/可以快速的应用在网络接口上,这里有一份关于域的简短的说明: dorp:任何入站请求都被忽略,无任何回复,只有发起的网络链接请求被放行。 block:任何入站请求都被拒绝,ipv4协议回复"icmp-host-prohibited"消息,ipv6协议回复"icmp6-adm-prohibited",只有从系统内部发出的链接请求才被放行。 (个人感觉上面两个区别就是在于有无回复,对内的话用block、对外用dorp好一些,让外部扫描费点劲才知道被防火墙过滤了) public:为在公共场所准备,你不相信网络中的其他电脑不会对你的电脑造成伤害,只有被选定的入站链接被接受。 external:为有伪装的外部网络特别是路由器准备,你不相信网络中的其他电脑不会对你的电脑造成伤害,只有被选定的入站链接被接受。