静默

下面这段文字,是尤大在朋友圈发的。看了这段儿,我便想到陪我的静默俩字。一直都很喜欢静默这个词,而且这个词也陪我度过了那个艰难的岁月,很是受用。

人属于自然,也受自然法则约束,因此,很容易跟随潮流,或随波逐流,或自我放逐。但这过程中更多的是对不确定性的恐慌,因此,人要想不恐慌,必须得沉淀下来。总感觉,最近处于恐慌状态,恐慌自己的无知,很怕如浮萍般随波逐流。

以前,每每此时,我都会买书,仿佛书在,自己就能沉淀下来。但其实,书终归要多读多去体会的。内心的力量,只能产生于内心,方式只是助推器。读万卷书,行万里路,名师指路,说白了,就是「多读书,在路上,交高人」。多读书,自然知道世界之大,无奇不有,就自然会想领略大好河山。在路上,自然会经遇高人,碰撞出别往的精神世界,从而笃定内心的坚定力量,进而无惧无恐。所以,活着就是种修行,而修行自有多种方式,但,修行的目的也许只是想在这变化万千的世界里,守候住内心的一片宁静,波澜不惊!惊涛大浪之后,往往是一片死寂,而死寂下面同样正在暗流涌动,继而再次惊涛大浪,周而复始。

最后,放下虚妄,是时候继续锤炼静、定的功夫啦!

iOS 9 新特性(Core Spotlight)

Core Spotlight

What?

Core Spotlight 提供了一些方法来索引应用程序中的内容和管理私有设备上的索引。

When?

使用场景:用来处理用户数据的比如:文档,照片以及其他类型的由用户产生的内容。用户通过索引可以快速的索引到应用本身的内容。

How?

note: 用户搜索的索引的关键字和内容是需要应用本身提供。下面给出的是基本使用的用法。

  • 引入CoreSpotlight 框架。
1
2
#import <CoreSpotlight/CoreSpotlight.h>
#import <MobileCoreServices/MobileCoreServices.h>
  • 创建索引属性。
1
2
3
4
5
6
CSSearchableItemAttributeSet *itemSet = [[CSSearchableItemAttributeSet alloc] initWithItemContentType:(NSString *)kUTTypeText];

itemSet.title = @"防骚扰电话指南";
itemSet.thumbnailData = UIImagePNGRepresentation([UIImage imageNamed:@"icon"]);
itemSet.contentDescription = @"通过将号码数据写入通讯录,达到防骚扰。";
itemSet.keywords = @[@"fangsaorao"];
  • 创建索引。
1
CSSearchableItem *item = [[CSSearchableItem alloc] initWithUniqueIdentifier:@"fangsaorao" domainIdentifier:@"fangsaorao" attributeSet:itemSet];
  • 添加索引到设备。
1
2
3
4
5
6
7
[[CSSearchableIndex defaultSearchableIndex] indexSearchableItems:@[item] completionHandler:^(NSError * _Nullable error) {
if (error) {
NSLog(@"%@", error.localizedDescription);
}else {
NSLog(@"Core Spotlight success");
}

}]
;

  • 索引的响应处理
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
- (BOOL)application:(nonnull UIApplication *)application continueUserActivity:(nonnull NSUserActivity *)userActivity restorationHandler:(nonnull void (^)(NSArray * __nullable))restorationHandler{
if (userActivity.activityType == CSSearchableItemActionType) {
NSString *idetifier = userActivity.userInfo[@"kCSSearchableItemActivityIdentifier"];

if ([idetifier isEqualToString:@"fangsaorao"]) {
NSLog(@"进入防骚扰指南界面");


}
}
NSString *idetifier = userActivity.userInfo[@"kCSSearchableItemActivityIdentifier"];

if ([idetifier isEqualToString:@"fangsaorao"]) {
NSLog(@"进入防骚扰指南界面");


}


return YES;
}

image

iOS 9 新特性(3DTouch)

3D Touch

What?

在iPhone 6s后,多了新的一种交互方式,重按。

三种模块

  1. Home Screeen Quick Actions
  2. peek and pop
  3. Force Properties

How?

  • Plist 添加字段
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<key>UIApplicationShortcutItems</key>
<array>
<dict>
<key>UIApplicationShortcutItemIconType</key>
<string>UIApplicationShortcutIconTypeLocation</string>
<key>UIApplicationShortcutItemTitle</key>
<string>hello 3D touch</string>
<key>UIApplicationShortcutItemType</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER).first</string>
<key>UIApplicationShortcutItemUserInfo</key>
<dict>
<key>firstShortcutKey</key>
<string>firstShortcutValue</string>
</dict>
</dict>
</array>
  • 代码动态创建。
1
2
3
4
5
6
7
NSArray <UIApplicationShortcutItem *> *existingShortcutItems = [[UIApplication sharedApplication] shortcutItems];
UIApplicationShortcutItem *anExistingShortcutItem = [existingShortcutItems objectAtIndex: anIndex];
NSMutableArray <UIApplicationShortcutItem *> *updatedShortcutItems = [existingShortcutItems mutableCopy];
UIMutableApplicationShortcutItem *aMutableShortcutItem = [anExistingShortcutItem mutableCopy];
[aMutableShortcutItem setLocalizedTitle: @“New Title”];
[updatedShortcutItems replaceObjectAtIndex: anIndex withObject: aMutableShortcutItem];
[[UIApplication sharedApplication] setShortcutItems: updatedShortcutItems];
  • 响应处理(在AppDelegate里有代理回掉,做逻辑处理判断)
1
- (void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void(^)(BOOL succeeded))completionHandler NS_AVAILABLE_IOS(9_0);

BKPasscodeView组件

About 。。。

这个是 github 上开源的一个应用密码锁组件。最近使用了这个,这里做个使用说明总结。点击BKPasscodeView进行了解,上边有很详细的 demo。作者是个韩国的一个开发者。

  1. 支持自定义,输入框的样式。
  2. 支持 Touch ID 。
  3. 当程序进入后台时,也可弹出密码验证。

不管咋说,这个组件,挺 nice 的,你想要的东西全在上边。

How 。。。

下面是我要做成的样子。
image

Cocoapods 的使用

what?

Cocoapods出现的一个警告,只要输入与pod有关的命令都会出现下面的警告

/Library/Ruby/Gems/2.0.0/gems/cocoapods-0.37.2/lib/cocoapods/command.rb:127: warning: Insecure world writable dir /usr/local in PATH, mode 040777

Why?

问题原因:目录被赋予777的权限、不安全,所以只要将提示权限改为775,

How?

sudo chmod go-w /usr/local/bin

Other…

pod install 和 pod update总是很缓慢。。

原因在于当执行以上两个命令的时候会升级CocoaPods的spec仓库,加一个参数可以省略这一步,然后速度就会提升不少。加参数的命令如下:

pod install --verbose --no-repo-update

pod update --verbose --no-repo-update

或者

pod install --no-repo-update

pod update --no-repo-update

ADD

  • 更新或安装Cocoapods 会出现如下错误
1
2
3
4
ERROR:  While executing gem ... 	
(Errno::EPERM)

Operation not permitted - /usr/bin/pod

解决方案:

1
sudo gem install -n /usr/local/bin cocoapods

参考方案:

http://stackoverflow.com/questions/33015875/operation-not-permitted-usr-bin-update-rubygems

  • Cocoapods 卸载

找到Cocoapods 安装路径

1
which pod

手动移除Cocoapods

1
sudo rm -rf <path>
  • 查看Cocoapods安装包

查看gems中本地程序包

1
gem list

输出

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
*** LOCAL GEMS ***

activesupport (4.2.1)
bigdecimal (1.2.0)
CFPropertyList (2.2.8)
claide (1.0.0.beta.1, 0.9.1, 0.8.1)
clamp (0.6.5)
cocoapods (0.39.0, 0.38.2, 0.37.1)
cocoapods-core (0.39.0, 0.38.2, 0.37.1)
cocoapods-downloader (0.9.3, 0.9.0)
cocoapods-plugins (0.4.2)
cocoapods-search (0.1.0)
cocoapods-stats (0.6.2, 0.5.3)
cocoapods-trunk (0.6.4, 0.6.0)
cocoapods-try (0.5.1, 0.4.5, 0.4.4)
colored (1.2)
colorize (0.7.7)
escape (0.0.4)
fourflusher (0.3.0)
fuzzy_match (2.0.4)
i18n (0.7.0)
io-console (0.4.2)

移除程序包

1
2
sudo gem upinstall cocoapods -v 0.35.0
sudo gem upinstall cocoapods-core -v 0.35.0
  • 安装指定版本的Cocoapods
1
sudo gem install cocoapods -v 0.39.0

查看安装版本

1
pod --version

你要干嘛

是要给自己,来个约法三章

尽于此,这样的时间,这样的地方,这样的人。。。。你要做的只是保持清醒,一直往前。一直往前。就是拼了,干了,什么乱七八糟,不管,就是干。从心出发,勿忘初心。。。。

七月。。。

近期安排

生活

来到北京也差不多些日子,慢慢地也适应了这里。自己的生活节奏,一定要跑起来,该做什么,不该做什么,要很明确。虽然,还没女票吧,那就先给自己一个想要的生活,一点点的往前走。

技术点

这些天,频频问到些东西,确实没做过,既然不会,那自己没有理由不看。还是老规矩,按照每天既定计划安排,快速有效地了解和使用这些技术。

  • 支付

目前,现在的两大支付平台,支付宝、微信。然后就是支持网银。用到第三方,所以基本上还是挺安全。支付宝和微信,都做了相应地 sdk,使用起来难度应该是不大。网银的话,之前朋友让给他做个电子商城网站,有考虑过这个东西,具体点再看看是怎样做的。

  • XMPP

做即时通讯的协议,其实也是对这个 socket 的一层封装。对于这个东西,现在也是有较成熟的框架。是时候要了解这些东西,这个做社交的必不可少的。

  • socket 通信

前天记录的相关笔记, socket 基本概念:套接字,是支持 TCP/IP 协议的网络通信的基本操作单元,是网络通信过程中断点的抽象表示。包含进行网络通信的物种信息:

  1. 连接使用的协议
  2. 本地主机的 IP 地址
  3. 本地进程的协议端口
  4. 远地主机的 IP 地址
  5. 远地进程的协议端口

socket 是干嘛使的:应用层通过传输层进行数据通信时,TCP 会遇到同时为多个应用程序进程提供并发服务的问题。多个 TCP 连接或多个应用程序进程,可能需要通过同一个 TCP 协议端口传输数据。为了区别不同的应用程序进程和连接,许多计算机操作系统为应用程序与 TCP/IP 协议交互提供了套接字(socket)接口,应用层可以和传输层通过 socket 接口区分来自不同应用程序进程或网络连接的通信实现数据传输的并发服务。

  • 蓝牙

之前的时候,是了解过相关使用的 API,core Bluetooth 框架。在这个基础上开发的。既然是通信,那么就有协议,搞清楚协议就容易多了。苹果的蓝牙好像是在近期才变得好用,以前的话,苹果机是连不上 Android 机的。想这些通信的东西,使用的东西,比较固定,重要的是其细节问题,出现问题不断调试,就 OK。

唐巧的那本 iOS 进阶是该吸收完了,入手有一段时间了。另外,入手不久的 Swifter,和 iOS 应用逆向工程,偶尔翻阅,有好多东西还没时间来及看。这段时间,刚好手中只有一件事情,时间也挺好安排,再也不找理由没时间了。呵呵。。关于读书,是一件有趣的事情,越来越觉得。读读书,写写字,画画素描,撸撸代码,这,,,,挺好。。。。

总结

另外,这个支付还有其他的方式,apple pay,应用的内支付,都是要一并做了解的。那么后边的这个通信,当然很重要啦,做应用,目的就是可以通信。现在,智能家居也起来了,所以这种东西的需求也在增长。苹果的 homekit,快发布了,到时候得写写东西,试试看。
不管是生活上,还是工作上,继续保持一个平静地心,努力做手中的事情,就够啦。fighting ~·~,~·~

开始的日子

开始的日子

没有什么能够阻挡,你对自由的向往。—-许巍

眼中的北京

终于来到北京,开始了我的北京生活。因为爸妈的关系,之前的每个暑假,都会来到北京,所以就这样和北京有了感情。每每走在街道,看看眼旁的楼宇,有点不适应,但这里的每一件东西,都让我着迷和好奇,想去体验。路上的行人,不管是做什么的,从心底里,我对他们十分敬意,在我看来能在这里生活、工作,是件很荣幸的事情,他们一定是优秀的。
老实说,北京这座城市挺残酷的,人的等级被划分的很清楚。每个人都好像是,在自己的圈子里,圈子间并不是那么和谐融洽。不知道,这里人们动物的性质,很明显。这座超级城市,也聚集着一些带着梦想在拼搏的人们,因为,我也在其中。这次来到北京,心底也是带着小小心愿的,于是,也就算开始了。
北京,因为各种聚集,所以拥挤也是这座城,好似,人天生就是一个凑热闹的动物。

顺利也罢,不顺利也罢,还是要认真做自己。切记不要与自身的平凡为敌。

总结与思考

面试了这么些天,机会都不是太好。都是创业公司,所以公司招人也挺谨慎地,这可以理解,但大多数公司都是自己太过紧张。我就是只有一年经验嘛,去面了,却给我说他想招经验更多的,你做不了,其实我心里想的时,只要公司给我信任,我就敢干。有的时候,经验多是可以解决些问题,但是创业公司什么业务都是新的,无论是经验多,还是经验少,业务也都是从零开始做的。不知道我这样想对不。我只是想安静的做个技术。
对于我自己来说,准备的不充分吧。因为有一个月没进行代码的编写,所以难免有些东西会有遗忘,实在是没办法。在技术方面,我自己采取的策略是,先铺开面,有一些东西,会限是知道,等到遇到具体问题环境,再来着重研究。我想的是,铺开我的知识面后,看到什么业务,能快速确定用什么做,然后就是细做。我的时间精力就是只有这么多,不可能是把所有技术做的那么深。所以,从我自身来看,必须有快速学习能力。
加油,好好准备你自己就行,很多事情,还是要选择接受,继续努力。

要做的事情

一是,找个合适的互联网公司做 iOS 开发。二是,自己很多的东西是从github 上学习的,接下来,会琢磨写写什么东西,回馈这个开源社区。三是,继续补充自己的知识储备。四是,让自己变得更有生活情趣。