Dec
29
A Bite of Python
Published 12:12 Dec 29, 2016 by @ezra.
#Programming# 不可不知的Python陷阱
由于易于学习以及快速开发更大更复杂的应用, Python 渐渐在计算环境中无处不在。尽管明显的语言清晰度和友好会麻痹软件工程师和系统管理员的警觉性,诱使他们编码可能会有严重...
Nov
27
OS X: Best practical way to validate NSTouchBar items
Published 12:11 Nov 27, 2016 by @ezra.
#Programming# Protocol and extensions:
@available(macOS 10.12.1, *)
protocol TouchBarItemValidations: class {
...
Nov
23
系统基本配置概要
Published 12:11 Nov 23, 2016 by @ezra.
#Technology# 因为时不时会给自己或者被人的电脑💻重装系统, 装系统很简单, 但之后要配置的内容还是蛮多的, 这里列举一下吧。
重装系统
首先要从重装系统说起, 由于直接运行 .app 安装会保留原来的数据, 而很多...
Nov
18
Xcode: Showing TODO as a warnig in a Swift Xcode project
Published 12:11 Nov 18, 2016 by @ezra.
#Programming# I rarely use comments when I’m coding1. I do make one exception though; using // TODO: and // FIXME:...
Nov
12
最近一些比较好的 jQuery 插件
Published 12:11 Nov 12, 2016 by @ezra.
#Programming#
最近一些比较好的 jQuery 插件。
Gradientify 是一个简单的 jQuery 插件,它提供了 CSS 梯度过渡效果。
PrognRoll 是一个微小的 jQuery 插件,用于在...
Nov
12
OS X: Setting up Spotlight Control in OS X El Capitan to macOS Sierra
Published 12:11 Nov 12, 2016 by @ezra.
#Programming# OS X El Capitan introduced a new Security Feature called System Integrity Protection. With System In...
Nov
01
Why SVG?
Published 12:11 Nov 01, 2016 by @ezra.
#Programming# SVG是什么?
SVG是一种可缩放矢量图形 (英语: Scalable Vector Graphics, SVG) 是基于可扩展标记语言 (XML) , 用于描述二维矢量图形的图形格式。SVG由W3C...
Oct
20
iOS: in6_addr to string
Published 12:10 Oct 20, 2016 by @ezra.
#Programming# 将 struct in6_addr 转换为字符串:
+ (NSString *)formatIPV6Address:(struct in6_addr)ipv6Addr {
NSString *...
Sep
22
SSL: certificate verify failed
Published 12:09 Sep 22, 2016 by @ezra.
#Programming# 今天在虚拟机里安装 CocoaPods 的时候,偶然遇到一个问题:
$ gem install cocoapods
ERROR: Could not find a valid gem 'cocoap...
Sep
12
Xcode 8: Resource fork, Finder information, or similar detritus not allowed
Published 12:09 Sep 12, 2016 by @ezra.
#Programming# 最近 Xcode 8 中遇到这样一个错误:
.app: resource fork, Finder information, or similar detritus not allowed
其实解决办...
Sep
10
Swift 3: Basic Syntax
Published 12:09 Sep 10, 2016 by @ezra.
#Programming# 这里是一些 Swift 3 的基本语法示例,Swift 前几个版本变化较大,所以做一个总结。
虽然目前来说选择 Swift 做为商业应用的开发语言的维护成本还是很大,但始终是一个前进的方向。
控制台输...
Sep
09
Swift 3.0 怎么玩
Published 12:09 Sep 09, 2016 by @ezra.
#Programming# Swift 已经发展到 3.0,早在几个月前苹果就已经表明 Swift 3.0 还将会有不少崩坏性的改动,这篇博客就来介绍一下新版本 Swift 的主要改动。
编译器与语法
参数标签
在 Swift ...
Aug
16
OS X: Simulating mouse input programmatically
Published 12:08 Aug 16, 2016 by @ezra.
#Programming# 玩过远程辅助工具小伙伴应该都对模拟鼠标事件不陌生, 要做到这件事, 可以使用 Quartz Event Services。
先来一个 Demo, 首先要引入 ApplicationServices:
...
Aug
10
Sierra: 找回消失的允许“任何来源”的应用
Published 12:08 Aug 10, 2016 by @ezra.
#Programming# 自从 Sierra 之后, 系统偏好设置 -> 通用 -> 允许以下位置下载的应用 中的 任何来源 便消失了。
为了找回它,我们打开 终端, 输入:
sudo spctl --master...
Jul
26
Xcode 8: 注释快捷键失效的问题
Published 12:07 Jul 26, 2016 by @ezra.
#Programming# Xcode 8 发布以来,Beta 版有一个可能不是很普遍的问题: 注释快捷键 ⌘ + / 失效。
在 Twitter 上找到一个解决办法,很简单,在终端执行下面的指令,然后重启系统即可。
sudo ...
Jul
20
User-Agents
Published 12:07 Jul 20, 2016 by @ezra.
#Programming# 一些常见的 User-Agents 示例:
桌面
IE
Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0)
Mozilla/4.0 (compatib...
Jul
16
CocoaPods: Swift Version
Published 12:07 Jul 16, 2016 by @ezra.
#Programming# 最近使用 CocoaPods 又出了点问题,在执行 pod trunk push 的时候,出现了 Xcode Build 错误,提示了一些关于 Swift 版本的错误。
起初尝试了配置 Xcode 项...
Jul
12
iOS: Easy cast with _ObjectiveCBridgeable
Published 12:07 Jul 12, 2016 by @ezra.
#Programming# Swift is out there for about a year and it’s a great programming language. I think that almost every...
Jul
10
iOS: UIAlertController text alignment
Published 12:07 Jul 10, 2016 by @ezra.
#Programming# Custom text alignment of UIAlertController:
let controller = UIAlertController(title: t, message: in...
Jul
07
Difference between nullable, __nullable and _Nullable in Objective-C
Published 12:07 Jul 07, 2016 by @ezra.
#Programming# From the Swift blog:
This feature was first released in Xcode 6.3 with the keywords __nullable and ...
Jun
28
OS X: Menu Bar Extra is invisible in macOS Dark Mode
Published 12:06 Jun 28, 2016 by @ezra.
#Programming# 周末提交的 APP 又被秒拒, 理由很简单, “Menu Bar Extra is invisible in macOS Dark Mode”, 菜单栏图标在黑色模式中看不到。
由于是第一次用黑白色的...
Jun
24
CentOS: Install Clang
Published 12:06 Jun 24, 2016 by @ezra.
#Technology# 本文主要关于在 CentOS 中安装 Clang 的相关步骤。
(以 CentOS 7 为例)
安装 libstdc++
如果你正在使用 CentOS 7 及以上的版本,请直接跳过此步骤。
wget ...
Jun
24
Ubuntu: Using Swift
Published 12:06 Jun 24, 2016 by @ezra.
#Technology# 本文主要关于在 Ubuntu 中安装和使用 Swift 的相关步骤。
(以 Ubuntu 15.10 为例)
下载 Swift
在 Swift.org 找到并下载对应的 Swift 版本。
解压 Sw...
Jun
01
OS X: csrutil
Published 12:06 Jun 01, 2016 by @ezra.
#Programming# El Capitan 加入了 Rootless 机制, 不再能够随心所欲的读写很多路径真是很难过。
Rootless 机制将成为对抗恶意程序的最后防线
要关闭 Rootless, 需要进入恢复系统...
May
13
max-height: x% doesn't work on Chrome
Published 12:05 May 13, 2016 by @ezra.
#Programming# Some times using percentages for fluidity in layouts is tricky because you have to deal with contain...
May
12
Swift: Optional Protocol Methods Without @objc
Published 12:05 May 12, 2016 by @ezra.
#Programming# Objective-C 协议 (protocol) 在 Swift 中是一个特殊的存在, 当你使用 @objc 标记一个协议, LLVM 会生成一系列额外内容:
一个 isa 指针
运行时模块, 例...
May
10
Cocoa: Change Cursor
Published 12:05 May 10, 2016 by @ezra.
#Programming# The way to change the cursor when it's over an NSButton:
First, you should subclass NSButton first,...
May
06
CSS Selectors Level 4
Published 12:05 May 06, 2016 by @ezra.
#Programming# 关于 CSS Selectors Level 4 阶段性新特性的总结。
Negation pseudo-class :not
:not 用于将符合规则的元素剔除, 将样式规则应用于其他元素上。
在 C...
Apr
27
Cocoa: Sending mail via Python
Published 12:04 Apr 27, 2016 by @ezra.
#Programming# 偶然看到一个讨论, 需求很简单, 单纯的 SMTP 邮件发送。
这样的话我想 Python 应该是一个不错的选择, 那么首先我们需要写一个 Python 程序, 我们将它保存为 mail.py:
im...
Apr
25
Sparkle 2: Publishing an update
Published 12:04 Apr 25, 2016 by @ezra.
#Programming# 配置好一些基本的内容后,是时候发布一个新版本了。
归档
首先你需要归档你的应用。
如果你使用 DMG,归档后不要再次压缩 .dmg 文件
如果你使用 ZIP,你可以通过 ditto -c -k --...
Apr
25
Sparkle 1: Setup
Published 12:04 Apr 25, 2016 by @ezra.
#Programming# 做 Mac 开发的同学应该至少都听说过 Sparkle,一个应用升级框架,Sparkle 是开源的,参考 Github。
不过需要注意的是,Sparkle 的使用场景应仅仅局限于 非 App Sto...
Apr
22
NSImage: Get size in pixels
Published 12:04 Apr 22, 2016 by @ezra.
#Programming# Just simple:
let rep = originImage.representations.first
let pixelSize = CGSize(width: (rep?.pixelsW...
Apr
14
Haskell Primer 008: 类型类
Published 12:04 Apr 14, 2016 by @ezra.
#Programming# 在 Haskell 中,类型类 (typeclass) 是定义类型行为的接口,如果一个类型是某类型类的实例 (Instance),那么它一定实现了该类型类所描述的行为。
这里需要注意,不要将 Has...
Apr
14
Haskell Primer 007: 类型初识
Published 12:04 Apr 14, 2016 by @ezra.
#Programming# 有了前面一些基础介绍,现在我们开始介绍 Haskell 中关于类型的各种知识。
由于 Haskell 支持类型推导 (Type Inference),允许我们不对类型进行显示声明,但对于初学者,有时我...
Apr
13
Haskell Primer 006: 模式匹配
Published 12:04 Apr 13, 2016 by @ezra.
#Programming# 模式匹配主要用来定义一些数据必须遵循的规则,根据他们来解析数据。
例如:
sevencheck :: Integer -> Bool
sevencheck 7 = True
sevencheck...
Apr
13
Haskell Primer 005: 认识元组
Published 12:04 Apr 13, 2016 by @ezra.
#Programming# 学习了列表之后,我们再来认识一下元组 (Tuple)。
什么是元组
学习过 C++ 的朋友应该对这个词不陌生,元组允许我们将多个不同类型的值组合为一个单一值。元组与列表有些类似,但元组含有的内容可以是...
Apr
12
Haskell Primer 004: 玩玩列表
Published 12:04 Apr 12, 2016 by @ezra.
#Programming# 列表 (List),是一种单类型 (Homogeneous) 数据结构,用于存储一个或多个同类型元素,例如一系列的数字。
将一系列的元素使用方括号 ([]) 包含,元素间使用逗号 (,) 分隔,就形成...
Apr
12
Haskell Primer 003: 函数定义
Published 12:04 Apr 12, 2016 by @ezra.
#Programming# 尝试了一些函数调用之后,紧接着了解一下函数的定义,这与调用的形式类似,只是多了函数行为的定义:
函数名 参数1 参数2 参数3 参数4 ... = 函数行为
例如:
doubleIt x = x ...
Apr
12
OS X: How to get the path of Home directory
Published 12:04 Apr 12, 2016 by @ezra.
#Programming# We all know that NSHomeDirectory() is retuning the sandbox root (not the home directory), [@"~" str...
Apr
11
Haskell Primer 002: 函数初探
Published 12:04 Apr 11, 2016 by @ezra.
#Programming# 通过上一篇我们简单尝试了 Haskell 语言,也许你没有察觉,其实我们自始至终都在使用着函数。
前面我们使用的运算符 +、-、*、/ 其实都是函数,像这样置于两个参数之间调用的函数,称为中缀函数 (...
Apr
11
OS X: launchd
Published 12:04 Apr 11, 2016 by @ezra.
#Programming# I would like to create a service to execute a task automatically, and starting and stopping it on de...
Apr
04
Haskell Primer 001: 尝鲜
Published 12:04 Apr 04, 2016 by @ezra.
#Programming# 关于什么是 Haskell 以及为什么要选择 Haskell 的问题就不再讨论了。本文主要介绍学习 Haskell 要准备的工作。
请知悉: 这个系列的博客只是 Haskell 的基础知识,写给准备了...
Mar
30
Kotlin : Introduction
Published 12:03 Mar 30, 2016 by @ezra.
#Programming# Kotlin 是由 JetBrains 开发的基于 JVM 的新编程语言,在 Apache 许可下开源发布已经过去一段时间了,所以写篇博客简单介绍下。
说到 JetBrains 相信大家都不陌生,Py...
Mar
30
Kotlin : Syntax
Published 12:03 Mar 30, 2016 by @ezra.
#Programming# 前面对 Kotlin 的情况做了简单介绍,这一篇再来说说它的基本语法。
分号
首先可喜可贺的是,Kotlin 中语句末尾并不需要分号结尾。
基本类型
Kotlin 中的基本数据类型有:
类型位宽
D...
Mar
25
Load Balancing
Published 12:03 Mar 25, 2016 by @ezra.
#Technology# 开头先理解一下所谓的“均衡”
不能狭义地理解为分配给所有实际服务器一样多的工作量,因为多台服务器的承载能力各不相同,这可能体现在硬件配置、网络带宽的差异,也可能因为某台服务器身兼多职,我们所说的“均衡...
Mar
21
Make .webloc
Published 12:03 Mar 21, 2016 by @ezra.
#Programming# 熟悉 Mac 的同学对 .webloc 想必也不陌生, 它的实质其实就是一个 plist 文件, 也就是 XML 格式。今天刚好用到, 随手写一篇吧。
<?xml version="1...
Mar
16
Hex Color Form
Published 12:03 Mar 16, 2016 by @ezra.
#Programming# The three-digit hex form typically follows the RGB (RGB) format. Expanding this form to the six-digi...
Mar
11
公钥与私钥
Published 12:03 Mar 11, 2016 by @ezra.
#Technology# 公钥(yuè)和私钥的概念并不是什么新鲜事物,鉴于不少小伙伴还是不明白,简单写个说明的文章吧。
介绍
公钥和私钥属于不对称加密方式,在网络通讯中很十分常用。
公钥,顾名思义,就是可供公众使用的密钥,你...
Mar
02
ShellPy: A tool for convenient shell scripting in Python
Published 12:03 Mar 02, 2016 by @ezra.
#Programming# Python 与 Shell 相信大家都不陌生,但你有没有想象过在 Python 中写 Shell 指令呢?如果你有兴趣,就一起来看看 ShellPy 吧!
安装 Installation
Shell...
Feb
28
iOS: Handling unhandled exceptions and signals
Published 12:02 Feb 28, 2016 by @ezra.
#Programming# 当一个 iOS 应用崩溃, 往往只是单纯的消失, 用户却不知道发生了什么。然而, 为你的应用添加异常和信号处理的功能并不是一件困难的事情, 有了处理程序我们可以告诉用户发生了什么状况, 甚至还能及时修...
Feb
26
Xcode: Finding symbolicatecrash
Published 12:02 Feb 26, 2016 by @ezra.
#Programming# symbolicatecrash 是在开发调试和问题定位中是很常用的工具, 但它在 Xcode 中的位置经常随着 Xcode 版本变化, 不过其实要找到他还是很简单的:
$ find <Xcod...
Feb
21
最近很火的 6008 问题
Published 12:02 Feb 21, 2016 by @ezra.
#Programming# 6008似乎是最近很火的一个思维测试题,原题是这样的:
要求,移动两跟火柴组成一个最大的数。
看到这个题的第一反应是: 9908。
但如果允许十六进制,那么可以组成的最大数应该是 F888,也即十进...
Feb
20
iOS: Socket 编程
Published 12:02 Feb 20, 2016 by @ezra.
#Programming# 最近总被问到 Socket 问题, 好久没写了, 干脆总结一下吧。
一、HTTP 、TCP/IP 与 Socket
网络七层分别为:
物理层
数据链路层
网络层
传输层
会话层
表示层
应用层
其...
Feb
09
Xcode: Code Sense
Published 12:02 Feb 09, 2016 by @ezra.
#Programming# 聊天的时候有人问了一个平常大家不太注意的问题, 如图, 左侧小图标:
以前无聊的时候研究过, 趁这个机会总结一下吧, 其实这些小图标苹果称为 Code Sense, 貌似在很早的 Xcode 版本中...
Feb
09
版本控制系统: SVN 与 Git 的一些误区
Published 12:02 Feb 09, 2016 by @ezra.
#Version Control# 最近都在找工作,所以博客更新停滞了下来。之前几个 Primer 系列也没有写完。不过暂时先写一些和面试有关的内容吧,因为这几次面试,总被问到 SVN 和 Git 的相关问题,但在其中却也发现一些理解误...
Feb
08
Python: 构建包的那些事
Published 12:02 Feb 08, 2016 by @ezra.
#Programming# 一般来说构建一个包是很简单的事情,许多人只把一堆模块都放进一个有 __init__.py 文件的目录里面,但是,随着对包的修改越来越多,糟糕的设计就会变得臃肿、脆弱,甚至带来循环依赖问题。
__ini...
Feb
08
sudo rm -rf /
Published 12:02 Feb 08, 2016 by @ezra.
#Technology# 今天做了一件非常糟糕的事情, 由于一个玩笑导致朋友用 rm 误删了很多重要的文件。
起初是因为印象里 Mint 中 sudo rm -rf / 这个指令不会被执行, 以为 macOS 中也是这样, 但...
Jan
28
StaSh: Shell Like an Expert in Pythonista
Published 12:01 Jan 28, 2016 by @ezra.
#Programming# StaSh is a serious attempt to implement a Bash-like shell for Pythonista, inspired by shellista and ...
Jan
28
iOS : 模拟微信红包照片
Published 12:01 Jan 28, 2016 by @ezra.
#Programming# 上一篇博客用 HTML5 + CSS3 实现了一个简单的微信红包照片的效果,那当然少不了街机 iPhone 中的实现。
iOS 实现这个效果常用的有三种方式:
CoreImage 绘图
CAL...
Jan
28
HTML5/CSS3: 模拟微信红包照片
Published 12:01 Jan 28, 2016 by @ezra.
#Programming# 前几天微信红包照片着实火了一把,很多人也已经发现可以通过抓包获取到原始图片,而其背后的实现方式也引起了一些朋友的兴趣。
所以今天我们一起实现一个简单的微信红包照片效果。
首先,根据标题你已经知道我们要...
Jan
26
Using the View Hierarchy and Console for easier debugging
Published 12:01 Jan 26, 2016 by @ezra.
#Programming# At some point in life, you are gonna work with a codebase that you didn't write from the very beginn...
Jan
05
Objective-C: weakSelf
Published 12:01 Jan 05, 2016 by @ezra.
#Programming# The correct way to define a weak object is:
__typeof__(obj) __weak wobj = obj;
Note that having __...
Jan
01
What is System Integrity Protection (aka Rootless) and how to disable it
Published 12:01 Jan 01, 2016 by @ezra.
#Programming# All Macs with OS X El Capitan installed on them have a new layer of security known as System Integri...