Month – 8 月 2015

在 OS X 10.11 上编译 Twister

Twister 是个著名的去中心化匿名微博客系统,它借用了我们所熟知的比特币以及 P2P 协议,让微博不能再被删帖,这是一个反审查的微博系统。不过,它的使用目前可能还不能像微博那样打开网页登录帐号来的简单。在电脑本地安装一个预先编译好的客户端是个不错的选择——可惜 OS X 下还没有那么方便的事情,[……]

点击跳转以继续阅读

是时候使用 PAC 白名单了

早在12年的时候,我写过一篇文章,更漂亮的智能PAC!–Flora,介绍了 Flora 这个项目,那个时候我们说 gfwlist 每隔一段时间就需要更新才能运行良好,不然就会有不少网页打不开。

gfwlist 是一个开源的黑名单项目,它由成千上万的网友贡献整理而成,从而实现被 GFWed 的域名自[……]

点击跳转以继续阅读

给网页添加一张背景图

有时候我们要做一个简单的占位页面出来,这个页面不需要任何的内容,只要简单的一章背景图片即可,但是简单的东西却往往更难以实现。

这是我在直接写一个页面时候遇到的问题,代码是这样的:

看上去很完美的解决办法对吧?但是实际上却遇到[……]

点击跳转以继续阅读

蓝灯 Lantern 2.0 官方发布

早在去年, Lantern 就已经发布了,作为一个全新的突破封锁的世界性分享工具。那时候它还完全是内测,需要邮件申请并等待验证。然而它基于Java,Mac版基本残废……

如果你有梯子,那么可以观看下边的一段视频,这就是当时Lantern面世时,官网发布的宣传视频了。

做的很棒。

h[……]

点击跳转以继续阅读

WordPress 中文用户 升级 4.3 后 后台问题解决

在之前的一篇文章当中我吐槽了自己的愚蠢,不过随后我就成功地解决了这个问题。

现在来说一下怎么做

问题现象

首先是问题现象,中文版 Wordpress (尤其是从老版本一路升级上来的)用户升级到 4.3 后可能会遇到后台编辑器无法切换“可视化”与“文本”模式,“添加媒体”按钮失效,代码高亮插[……]

点击跳转以继续阅读

Poker 2 机械键盘 Mac 键位修改

使用Mac有这诸多你想不到的好处,当然难以配到键位合适的键盘却是你能想到的缺点之一。

纠结了好久之后,我还是入了 Poker 2 ,一款84键的我们俗称是 60% 键盘,或者说小键盘。这款键盘就好像是你家的键盘,从功能区往右边的所有按钮都砍掉,然后把外边框做窄的样子。

如你所见,[……]

点击跳转以继续阅读

关于翻译的统一画风问题

首先这个翻译并不是开源翻译,根据将来的捐赠收入,大家会得到补偿(可能不多

其次作为贡献者你自己翻译的爽是前提。

 

基本规则

  • 首先你会得到这个博客的一个作者帐号,用这个号在这个博客发布你的翻译,正在翻译的章节请使用“保存草稿”功能持续更新。——你保存草稿我能[……]

    点击跳转以继续阅读

如何 隐藏 统计代码 的 文字

一般来说,我们在创建独立博客的时候都会使用一个第三方的统计代码来监控博客的访问情况,以便获得一些小小的成就感~

总之,添加那些统计代码的时候它们总会抓紧时机来给自己的网站打广告——“站长统计”等讨厌的字样隐藏在了调用里,你怎么也清除不掉。

另外,就算不现实文字,还有扯淡的图片显示,我靠,[……]

点击跳转以继续阅读

泛型

泛型是面向对象里另外一个重要的概念,除了多态,它进一步增加的代码的重用范围,而对于 Swift 语言来说,泛型贯穿了它的始终。

从 Print() 说起

我们从上课的第一天开始就在使用这个全局函数了,它让我们得以在屏幕上显示语句,用起来十分简单,传入一个字符串即可。

传入字符串就显示字符串[……]

点击跳转以继续阅读

总会报错:异常处理

这节课我们一起来认识一下 Swift 中的错误处理

在调用方法和写一个轮子的时候,总会有各种各样奇奇怪怪的错误,就是已经正常编译的软件,也会出现一些不可预期的错误。不过,这些错误当中,有一些是可以被识别和捕捉的——它们可预期。

可预期的错误

为什么我们说有一些错误是可以预料得到的呢?比如说[……]

点击跳转以继续阅读

静态方法和静态属性

不全都是动态

我们都知道,方法是放在实例里运行的。也就是说方法执行的结果是依据实例属性而来的,而实例的属性是根据当前状态而变化的——我们称其为“动态”。

但真的全都是动态的吗?其实不是,有些方法它会直接根据你的调用而给出结果,并不需要依据实例属性的变化来产生变动——也就是说它是无论如何都会产[……]

点击跳转以继续阅读

生存周期:自动引用计数

前边铺垫了那么多,现在终于要讲到垃圾回收这个东西了。

ARC

这不是方舟……这是自动引用计数(Automatic Reference Counting),这个东西是苹果用来管理内存的。

它的功能就是那个垃圾堆上的垃圾回收器。它能够保证所有在堆上运行的对象被释放后不会一直驻留在堆上。保证了那[……]

点击跳转以继续阅读

初始化器

在上一节课的末尾,我们最终明确了一个对象的创建过程,那么,说起来创建一个对象的样子很像是调用了一个方法,可这个方法到底是什么呢?

初始化器

没错的,当我们初始化了一个类为对象的时候,我们确实调用了一个方法——初始化器。

初始化器其实就是一个特殊规定了的方法,它能够为类进行初始化。

想象一下,[……]

点击跳转以继续阅读

“堆栈”:到底什么事“堆”,什么是“栈”?

是时候来看看对象和方法的生存空间了——想要了解面向对象,不知道方法和对象放在哪里是一件很尴尬的事情——毕竟我们还是要面对垃圾收集器的,想要让垃圾收集器帮你做更多的事情,我们就得一定程度上了解它的工作机制,了解方法和对象存放在哪里,否则的话,你就又要写出一个不堪一击的程序来了!

我们在前边的课程[……]

点击跳转以继续阅读

“致命方块”:多重继承与协议

上节课我们提到了协议,但是只讲了它的一种应用方式,这节课我们就来深入地了解一下这个用起来和 class 差不多的协议究竟有什么高深奥义。

现在,我们要再一次回顾那个可耻的继承树:

这里我们写了武器……是用来进行攻击和防守的。那么,作为一个游戏,武器的模型不能够单单只用在这一个地方[……]

点击跳转以继续阅读