前言之前写的一个TCP Server最近部署到生产环境,Server用的Python的Twisted框架,里面虽然有进程守护的功能,但是我之前一直用的Supervisor做后台进程管理,其比较好的是具有一个Web管理界面,可以可视化的控制后台进程的启停,我比较喜欢。 安装Supervisor由于Supervisor是用python2开发,于是在服务器里就开了一个新的Python虚拟环境,安装了python2.7。直接 pip install supervisor 就好。 配置Supervisor基本配置# 生成配置文件echo_supervisord_conf > /etc/superv ...
ARKit入门-在AR中处理3D交互和UI控制
翻译自 Handling 3D Interaction and UI Controls in Augmented Reality 遵循AR体验中的视觉反馈、手势交互和现实渲染的最佳实践。 概述AR为用户提供了在app中与现实和虚拟3D内容交互的新方法。但是,人机界面设计的许多基本原理仍然有效。令人信服的AR幻想同样需要仔细关注3D资源和渲染。iOS人机界面指南包含有关AR人机界面原则的建议。该项目展示了如何应用这些指导方法轻松地创建身临其境、直观的AR体验。 这个示例app提供了一个简单的AR体验,允许用户将一个或多个真实的虚拟对象放置在现实世界的环境中,然后试用直观的手势来排列这些对象。 ...
ARKit入门-建立第一个AR体验
翻译自 Building Your First AR Experience 创建一个运行AR session并利用平面检测使用SceneKit来放置3D内容的app。 概述这个示例app运行一个 ARKit 现实追踪 session,并且在 SceneKit 视图中显示内容。为了演示平面检测,这个app仅放置一个 SCNPlane 对象来可视化每个检测到的 ARPlaneAnchor 对象。 配置并运行 AR SessionARSCNView 类是一个 SceneKit 视图,包括一个 ARSession 对象,该对象用来管理创建AR体验所需的运动跟踪和图像处理。但是,要运行 AR Se ...
非商业用途的 HomeKit 配件开发的常见问题
前言前天在 iOS11 的家庭 app 中看到苹果提醒我自己开发的智能设备没有经过认证,还以为苹果会关闭黑 HomeBridge 协议这个HomeKit接口,没想到 WWDC2017 今天公布了 HomeKit 非商业用途的配件的接入协议。可以让个人开发者接入自己的WiFi和BLE类型的智能硬件设备。本文是对官网 FAQs 的整理。 基础问题HomeKit 配件协议(HAP)是苹果专门用来使第三方配件(例如灯、恒湿器和门锁类)和苹果设备(iPhone、iPad、Apple Watch、AppleTV)之间相互通信的协议。HAP 支持两类通信方式:IP 和 BLE 。在 HAP(非商业版)协议中 ...
阿里百川用户反馈Swift开发小结
背景所有的App都需要给用户一个反馈意见的功能,这样才能让用户使用的更好更方便。不想自己写这一套组件,因此调研了几款第三方的反馈组件。 Instabug九月份上架的师大助手App用的就是这个反馈组件,知乎日报用的也是这个,不管在App任何界面摇一摇就可以触发,Instabug会把当前界面进行截图并且支持用户编辑,非常方便好用的组件,这个用来反馈bug我觉得非常好用,但是作为反馈意见的话,感觉还是缺少一个入口。另外,Instabug采集Bug还是非常准确的。 LeanCloudLeanCloud的反馈组件号称两行代码接入,非常方便,它做成一个对话框的形式,客服与用户可以进行交流,并且用户的反馈可 ...
iOS10 Today Extension 开发小结
背景9.15号中秋节那天发布了师大助手App后,就在想还加点什么功能。后来想到了可以在 Today Widgets 里面加一个今日课程,于是就开始动手做了。先给大家看一下最终效果:一开始开发的时候,还是 Xcode7 和 Swift2 ,等到准备上架审核的时候,Xcode8 正式版发布了,然后就做了 Swift3 迁移和 iOS10 适配。 步骤Part1 基本搭建 新建 iOS Project ,这就不用说了哈 新建一个 Target ,选择 Today-Extension ,Target名字就设置为 TodayWidget 在 MainInterface.storyboard 画 UI , ...
Swift3 迁移小结
背景9.15号中秋节那天发布了师大助手App,后来有次在 Yosemite OS 下更新到 Xcode8 ,打开后项目一片红,当时只是想修复一下 bug,还没想要迁移到 Swift3,于是默默的 重新装了 Xcode7,又继续愉快的改bug了,然后9月20号提交到商店更新也没问题。21号提示 Sierra 可以更新了,于是手贱更新了一波。然后悲剧就开始了。更新完 Sierra 后,我添加了Widgets功能,于是准备上传到商店,然后就是 一直传不上去。试了一下几个方法: Xcode7 打包,Xcode8 上传 Xcode7 打包,在 Sierra 下用 Application Loader ...
Swift 使用 Xib 自定义 View 和 Cell
背景原来一直使用的是Storyboard自定义UITableViewCell的,暑期来公司实习,发现公司用的是Xib自定义View,学长说人多用SB不好协同工作。除了这个原因,我之前还发现Storyboard的复用性不好,自定义的Cell不能在多个Storyboard文件中复用😂。 下面介绍利用Xib自定义View和Cell。 自定义Cell新建Cell文件时,勾选生成Xib文件。然后在Xib上使用控件和约束,和Storyboard一样。 在使用自定义的Cell时,要记得注册可复用的Cell。例如:collectionView.registerReusableCell(FMPersonHel ...
Swift 模拟登陆小结
背景过完年在学校度过大学的最后一学期,期间加深学习了Python的Django和iOS开发。在学习的过程中,就想着临走前做一个校园应用。由于我们的需要的信息分散在学校各个部门的系统中,此时就需要通过模拟登陆来获取我们想要的信息。一开始是用python来模拟登陆解析数据的,后期由于我对架构设计的改变(主要是服务器资源和流量没钱买😂),我把很多解析放在手机端(暂时为iOS端)来处理,所以就应运而出本篇博文。 准备工作要模拟浏览器登陆,首先得分析浏览器登陆的步骤,再用代码来实现。在分析浏览器登陆之前先介绍一下使用到的工具。 工具Charles这是一款常用的网络封包截取工具,在做开发时,我们为了调试 ...
Swift 使用 Alamofire 实现 GB2312 编码的网络请求
背景最近在做一个校园工具,其中有个功能是查看自己校园网账户的剩余流量。学校的网络管理中心没有开放接口,于是只能利用Alamofire来模拟登录解析数据。一开始通过GET请求获取用户账户余额都是没有问题的,但是通过POST请求的话,就无法正确访问数据。 原因之前知道该网站是GB2312编码的,于是在解析data为HTML的时候就用GB2312解码的。但在POST数据时,也需要GB2312编码。我开始时将post的string参数用GB2312编码,发现不行。于是就查看了Alamofire的源码,发现其默认的参数编码是UTF-8,而且只有这一个选择😂。 if mutableURLRequest. ...