0%

2015年12月4日,苹果正式开放了 Swift 的源代码,Swift 也从此开启了走向了各个平台的征程。苹果首先对 Linux 提供了支持,至于 Windows 嘛…
(对于Windows平台的支持)在Swift开源的初版中,这并不是我们所首要考虑的问题--费德里希
反正这件事自然有人会去做的。这篇文章对在 Ubuntu 上部署 Swift 开发环境进行描述(实际上就是翻译啦)。

本文原文:https://swift.org/download/#linux

Read more »

本文是一篇快速指南:

0x01

打开终端在客户机上生成公钥和私钥:

ssh-keygen -t rsa -C {comment_text} -f {my-key-file}

你将会得到两个文件分别是私钥 my-key-file 和公钥 my-key-file.pub

0x02

将公钥上传到你需要访问的服务器上,建议使用 scp 命令:

scp {my-key-file}.pub -P {端口号} {username}@{ip_address}:.

0x03

使用密码登陆你的服务器,然后在 ~/ 下执行:

cat my-key-file >> ~/.ssh/authorized_keys

0x04

退出连接回到本地终端,回到生成公钥私钥的目录下面执行

cp my-key-file ~/.ssh/

将私钥复制到 ~/.ssh/ 目录下面。

0x05

执行 vim ~/.ssh/config 编辑配置文件,以下是个例子,仅供参考:

1
2
3
4
5
Host alias-name
User username
HostName ip or domainname
Port port number
IdentityFile ~/.ssh/my-key-file

修改后保存。这是还需要一步,就是清除掉之前登陆留下的密钥缓存,之后才可以确保正常登录。
执行 vim ~/.ssh/known_hosts 查找 Hostname 对应的记录,将其删除保存文件即可。

0x06

这时就可以执行无密码登录了 ssh alias-name,爽爽哒。

0x07

可能会遇到配置完成之后连接服务器依然需要输入密码的情况,这一般是由于 .ssh,公钥文件的权限问题导致的,可以按照这个文章中的解决方案进行处理。

0x08

ssh 会话默认情况下很快就会过期,这在使用中很不方便,不过不要紧,这同样有解决办法

ObjectiveC questions

1.What is category? Can you have properties or ivars in a category?

可以,但不能在非匿名类别中使用实例变量。非匿名类别中的属性不会被合成setter/getter方法。需要使用关联对象来解决。

2.What is protocol? What is formal and informal protocol?

协议是一种用于实现多态的机制,遵守协议意味着协议中规定的必须方法需要被实现。是对象能力的一种保证。调用方只要知道被调用放遵守了协议即可,无需知道被调用方是什么类型。
正式协议是使用 protocol 关键字实现的,非正式协议即NSObject类别。

3.What is ARC? Is it garbage collection?

ARC 是自动引用计数,不是垃圾收集。实质上 ARC 还是一种手动的内存管理机制。对象是否释放需要根据引用计数是否为0来判断。引用计数将对对象内存的管理集中在了对象内部。而malloc/free new/delete是在外部的。且release只会减少引用计数,并不会直接收回内存。垃圾收集是全自动的,内存完全由垃圾收集器进行管理。

4.Difference between atomic and nonatomic properties?

atomic保证了属性setter/getter方法操作的原子性(加锁),会带来一定的开销。但并不意味着线程安全。因为在当前线程第一次读取到属性的当前值,紧接着另一个线程对属性进行了修改,此时当前线程又读取该属性就会造成数据的不一致。
nonatomic是不保证原子性的,开销较少。

Read more »

在 Objective-C 的 Fondation 框架中 NSString 对象是很复杂的存在,各种方式创建以及不同长度的字符串都会影响 NSString 对象在内存中所处的位置。Objective-C 在运行时也对其做了很多优化。今天就来研究一下 NSString 这个复杂的对象。

Read more »

实例方法(实例方法)消息转发的顺序如下:

1、检查忽略的Selector,比如当我们运行在有垃圾回收机制的环境中,将会忽略retain和release消息。

2、检查receiver是否为nil。不像其他语言,nil在objective-C中是完全合法的,并且这里有很多原因你也愿意这样,比如,至少我们省去了给一个对象发送消息前检查对象是否为空的操作。如果receiver为空,则会将 selector也设置为空,并且直接返回到消息调用的地方。如果对象非空,就继续下一步。

Read more »

XcodeGhost S: A New Breed Hits the US
November 03, 2015 | By Yong Kang , Zhaofeng Chen, Raymond Wei | Threat Research, Botnets
apple logo grey

Just over a month ago, iOS users were warned of the threat to their devices by the XcodeGhost malware. Apple quickly reacted, taking down infected apps from the App Store and releasing new security features to stop malicious activities. Through continuous monitoring of our customers’ networks, FireEye researchers have found that, despite the quick response, the threat of XcodeGhost has maintained persistence and been modified.

Read more »

作者:JohnGossman (MVVM 模式的创始人)

对于我们什么时候和为什么要使用 M-V-VM 与其它模式我思考了很多。

Read more »

工作中发现的一些问题

在一些公司中,为了测试的方便,经常会使用他们的企业证书去部署应用到测试设备上面。这样看似没什么问题,但是这里隐藏了一个安全问题。就是代码中的方法名和字符串经过反汇编都会一览无余地显示出来。

Read more »