Python 描述符入门指北
很久都没写 Flask 代码相关了,想想也真是惭愧,然并卵,这次还是不写 Flask 相关,不服你来打我啊(就这么贱,有本事咬我啊这次我来写一下 Python 一个很重要的东西,即 Descriptor (描述符)
初识描述符老规矩,Talk is cheap,Show me the code. 我们先来看看一段代码
1234567891011121314151617181920212223class Person(object): """""" #---------------------------------------------------------------------- def __init__(self, first_name, last_name): """Constructor""" self.first_name = first_name self.last_name = last_ ...
Swift 3 中的函数参数命名规范指北
原文地址:Function Naming In Swift 3
原文作者:Pablo Villar
译文出自:掘金翻译计划
译者:Zheaoli
校对者:Kulbear, Tuccuay
昨天,我开始将这个 Jayme 迁移到 Swift 3。这是我第一次将一个项目从 Swift 2.2 迁移至 Swift 3。说实话这个过程十分的繁琐,由于 Swift 3 在老版本基础上发生了很多比较大的改变,我不得不承认眼前这样一个事实,除了花费较多的时间以外,没有其余的捷径可走。不过这样的经历也带来一点好处:我对 Swift 3 的理解变得更为深入,对我来讲,这可能是最好的消息了。😃
在迁移代码的过程中,我需要做出很多的选择。更为蛋疼的是,整个迁移过程并不是修改代码那么简单,你还需要用耐心去一点点适应 Swift 3 中带来的新变化。某种意义上来讲,修改代码只是整个迁移过程的开始而已。
如果你已经决定将你的代码迁移到 Swift 3 ,我建议你去看看这篇文章来作为你万里长征的第一步。
如果一切顺利的话,在不久以后,我将回去写一篇博客来记录下整个迁移过程中的点点滴滴,包括我所作出的决定等 ...
聊聊 Python 中生成器和协程那点事儿
文章来源:itsCoder 的 WeeklyBolg 项目
itsCoder主页:http://itscoder.com/
作者:Manjusaka
审阅者:allenwu,Brucezz
写在前面的话本来想这周继续写写 Flask 那点破事儿的,但是想了想决定换换口味,来聊聊很不容易理解但是很重要的 Python 中的生成器和协程。
Generators 科普我猜大家对于生成器肯定并不陌生,但是为了能让我愉快的继续装逼,我们还是用点篇幅讲一下什么是生成器吧。比如在 Python 里,我们想生成一个范围 (1,100000) 的一个 list,于是我们无脑写了如下的代码出来
12345def generateList(start,stop): tempList=[] for i in range(start,stop): tempList.append(i) return tempList
注1:这里有同学提出了为什么我们不直接返回 range(start,stop),Nice question,这里涉及到一个基础问题,range 的机制究竟是怎样的。这就要分版本而论了,在 ...
「最简单」的 Core Data 上手指南
原文地址:The Easiest Core Data
原文作者:Alberto De Bortoli
译文出自:掘金翻译计划
译者:Zheaoli
校对者:Kulbear, cbangchen
在过去的几个月里,我花费了大量的时间在研究 Core Data 之上,我得去处理一个使用了很多陈旧的代码,糟糕的 Core Data 以及违反了多线程安全的项目。讲真,Core Data 学习起来非常的困难,在学习 Core Data 的时候,你肯定会感到迷惑和一种深深的挫败感。正是因为这些原因,我决定给出一种超级简单的解决方案。这个方案的特点就是简洁,线程安全,非常易于使用,这个方案能满足你大部分对于 Core Data 的需求。在经过若干次的迭代后,我所设计的方案最终成为一个成熟的方案。OK,女士们,先生们,现在请允许我隆重向您介绍 Skiathos 和 Skopelos。其中 Skiathos 是基于 Objective-C 所开发的,而 Skopelos 则基于 Swift 所开发的。这两个框架的名字来源于希腊的两个岛,在这里,我渡过了2016年的夏天,同时,在这里完成了两个框架 ...
详解模板引擎工作机制
原文地址:How a template engine works
原文作者:Shipeng Feng
译文出自:掘金翻译计划
译者: Zheaoli
校对者:Kulbear, hpoenixf
我已经使用各种模版引擎很久了,现在终于有时间研究一下模版引擎到底是如何工作的了。
简介简单的说,模版引擎是一种可以用来完成涉及大量文本数据的编程任务的工具。一般而言,我们经常在一个 web 应用中利用模板引擎来生成 HTML 。在 Python 中,当你想使用模板引擎的时候,你会发现你有不少的选择,比如jinja 或者是mako。从现在开始,我们将利用 tornado 中的模板引擎来讲解模板引擎的工作原理,在 tornado 中,自带的模板引擎相对的简单,能方便我们去深入的剖析其原理。
在我们研究(模版引擎)的实现原理之前,先让我们来看一个简单的接口调用例子。
123456789101112131415from tornado import templatePAGE_HTML = """<html> Hello, {{ us ...
菜鸟阅读 Flask 源码系列(1):Flask的router初探
文章来源:itsCoder 的 WeeklyBolg 项目
itsCoder主页:http://itscoder.com/
作者:写代码的香港记者
审阅者:Brucezz
前言没有一个完整的开源项目的的阅读经验的程序猿是一个不合格的程序猿,虽然曾经阅读过部分诸如 Redis 等项目的源码,但是还没有过一个完整的开源项目的阅读经验,因此在经过某个前辈的不断安利后,我决定用 Flask 来作为阅读开源源码计划的开始。而这一个系列的文章,将作为我自己的阅读笔记,来巩固自己曾经所没有重视的 Python 的很多细节。
关于 Flask关于 Flask 的背景知识,就不需要太多的描述了,网上已经有很多的资料了。在使用 Flask 的时候,我们经常用如下的方式来设置我们的自定义的路由:
12345678910111213141516171819202122232425262728293031323334353637##Flask官方Example中flaskr项目部分代码app = Flask(__name__)@app.route('/')def show_entr ...
详解Swift的类型检查器
原文链接: Exponential time complexity in the Swift type checker
原文作者: Matt Gallagher
译文出自: 掘金翻译计划
译者: Zheaoli
校对者: geeeeeeeeek, Graning
这篇文章将围绕曾不断使我重写代码的一些 Swift 编译器的报错信息展开:
错误:你的表达式太过于复杂,请将其分解为一些更为简单的表达式。(译者注:原文是 error: expression was too complex to be solved in reasonable time; consider breaking up the expression into distinct sub-expressions)
我会看那个触发错误的例子,谈谈以后由相同底层问题引起以外的编译错误的负面影响。我将会带领你看看在编译过程中发生了什么,然后告诉你,怎样在短时间内去解决这些报错。
我将为编译器设计一种时间复杂度为线性算法来代替原本的指数算法来彻底的解决这个问题,而不需要采用其余更复杂的方法。
正确代码的编译错误如果 ...
如何检测iPhone处于低电量模式
原文链接 : Detecting low power mode
原文作者 : useyourloaf
译文出自 : 掘金翻译计划
译者 : Zheaoli
校对者 : LoneyIsError, wild-flame
这个星期,我阅读了一篇关于Uber怎样检测手机处于省电模式的文章。(注:文章连接是Uber found people more likely to pay) 在人们手机快要关机时,使用Uber可能会面临更高的价格。 这家公司(注:指Uber)宣称他们不会利用手机是否处于节能模式这一数据来进行定价, 但是这里我想知道 我们怎么知道用户的iPhone处于低电量模式
低电量模式在iOS 9中,苹果为iPhone手机新添加了 低电量模式 功能。在你能充电之前,低电量模式通过关闭诸如邮件收发,Siri,后台消息推送能耗电功能来延长你的电池使用时间。
在这里面,很重要的一点是,是否进入低电量模式是由用户自行决定的。 你需要进入电池设置中去开启低电量模式。当你进入低电量模式的时候,状态栏上的电池图标会变成黄色。
当你充电至80%以上时,系统会自动关闭低电量模式。
低电量模式 ...
在Swift中实现撤销功能
原文链接 : Undo History in Swift
原文作者 : chriseidhof
译文出自 : 掘金翻译计划
译者 : Zheaoli
校对者: xcc3641, Jaeger
在过去的一段时间里,有很多的Blog推出了关于他们想在Swift中所添加的动态特性的文章。事实上Swift 已经成为了一门具有相当多动态特性的语言:它拥有泛型,协议, 头等函数(译者注1:first-class function指函数可以向类一样作为参数传递),和包含很多可以的动态操作的函数的标准库,比如map和filter等(这意味着我们可以利用更安全更灵活的函数来代替 KVC 来使用 字符串)(译者注2:KVC指Key-Value-Coding一个非正式的 Protocol,提供一种机制来间接访问对象的属性)。对于大多数人而言,特别希望介绍反射这一特性,这意味着他们可以在程序运行时进行观察和修改。
在Swift中,反射机制受到很多的限制,但是你仍然你可以在代码运行的时候动态的生成和插入一些东西。 比如这里是怎样为NSCoding或者是JSON动态生成字典的实例。
今天在这里,我们将一 ...
关于PostCSS的一点小科普
原文链接 : PostCSS – What It Is And What It Can Do
原文作者 : Jake Bresnehan
译文出自 : 掘金翻译计划
译者 : Zheaoli
校对者: aidistan, JolsonZhu
PostCSS起源于2013年9月,发展到现在,已经有很多开发者在工作中使用它。如果你尚未接触过PostCSS,这篇文章正适合你。
PostCSS是一个使用JavaScript插件来转换CSS的工具。
PostCSS本身很小,其只包含CSS解析器,操作CSS节点树的API,资源生成器(译者注1:原文是source map),以及一个节点树字符串化工具。所有的黑魔法都是通过利用插件实现的。
截止目前,PostCSS的生态圈内已经拥有超过100种插件。这些插件可以做太多的事情,比如lint(译者注2:一种用来检测CSS代码的工具),添加vendor prefixes(译者注3:添加浏览器内核前缀,可以使用浏览器的一些独有特性),允许使用最新的CSS特性,在你的CSS里提供统计数据,或者是允许你使用Sass,Less或是Stylus等CSS预 ...