Farlanki.

Farlanki.

使用Electron和JavaScript构建桌面应用
前言  好久没写博客了。最近我一直在努力扩充自己的词汇量,想起房间里有一个一直闲置的显示器和树莓派,就萌生了将那个显示器作为一个单词的展示窗口的想法。我的打算是开发一个桌面应用。因为该应用需要运行在安装了linux的树莓派上,而我之前并没有学习过linux的GUI编程,所以我选择使用Electron这个跨平台的框架来构建这个桌面应用。 关于ElectronElectron(最初名为Atom Shell)是GitHub开发一个的开源框架。它允许使用Node.js(作为后端)和Chromium(作为前端)完成桌面GUI应用程序的开发。Electron现被已多个开源Web应用程序用于前端与后端...
将YUV图像渲染到屏幕上(OpenGL)
YUV 是我们在处理视频数据的时候经常会遇到的一种格式。我们在使用苹果的 VideoToolbox 框架将视频进行解码后,得到的就是 NV12 格式的 CVPixelBuffer。本篇文章将会在苹果的源码上解释如何将 YUV 图像渲染到屏幕上。本篇文章主要着重介绍在 iOS 上使用 OpenGL ES 如何将一个 YUV 格式的 buffer 显示出来。 iOS 上的 OpenGLiOS 使用的是 OpenGL ES,这是 OpenGL 在移动端上的实现。苹果为了简化基于 OpenGL ES 应用的开发,设计了 GLKit 这个框架。使用这个框架能让我们更轻松地实现纹理加载,矩阵运算,渲...
iOS转场:神奇效果
#前言iOS中可以实现自定义效果的转场动画,iOS 7为我们带来了新的转场动画API。下面将来我们看看具体怎么使用这些新的API实现自定义转场效果,最后本文章会介绍一种类似keynote的神奇效果的转场动画的实现方法。可以用到转场动画的地方一般有以下这几个: 模态view的展示与消失时: 12open func present(_ viewControllerToPresent: UIViewController, animated flag: Bool, completion: (() -> Swift.Void)? = nil)open func dismiss(animat...
总结一下让动画保持流畅的几个方法
前言动画的流畅性,是让iPhone俘虏广大果粉的心的一个重要的因素.但是我们在开发iOS APP的时候,却会经常遇到各种动画不能流畅表现的情况.下面将会介绍一些能让APP动画重回流畅的方法. CPU和GPU,哪一块才是短板?为了更好的实现动画的优化,我们首先需要了解一段动画在iOS中呈现需要经过哪些步骤. 从苹果在WWDC 2012中展示的可以看出,一段动画从创建到展示需要经过三个主要的过程: 创建动画并且更新动画层级 准备并且提交动画 渲染 在这三个过程中,第一第二个过程是在CPU中被处理的,而第三个过程:渲染,则是由GPU所负责.所以,当我们需要优化动画的流畅性的时候,我们首先需...
漫谈Swift面向协议编程
前言面向对象编程(OOP)自从在很久之前就已经成为了主流,相信每一个软件工程师都曾经或者正在使用着OOP编程.诚然,OOP为我们提供了很多很好的特性,例如封装,多态和继承等,让代码复用率更高,程序的解耦更加容易实现.但是,在随着软件的功能越来越多,需求越来越复杂,OOP的一些缺点已经被暴露了出来. 破立OOP缺点一:结构复杂很明显,OOP已经流行了很长的一段时间.在很多情况下,每当我们要实现一个新的需求,我们总会想到创建一个或几个新的类.这些类或许继承了之前已经存在的类,或者把之前存在的一些类的对象Wrap起来,从而使用它们的功能.然而这样做,很多情况下我们的类会继承到一些我们并用不到的...
iOS逆向工程之微信防撤回
前言购买了《iOS应用逆向工程》这本书后,我只是抱着书本看了几天,但是却缺少实战经验,书本上的内容也已经忘记了差不多.最近我浏览了一些关于iOS逆向工程的技术博客,心里萌生了练练手的想法.所以就选择了微信防撤回这个题目,开始这次逆向工程的一次练手小项目.本篇博客仅作记录之用. 准备在这里先介绍一下iOS逆向工程中用到的一些工具. Mac端 iFunBox : Mac端上的iPhone文件管理工具. Hopper Disassembler : Mac端上的反汇编工具. USBmuxd : Mac端上的端口转发工具. Theos : 越狱开发工具包. class-dump : 用于取得应用的...
AsyncDisplayKit(一)初识
AsyncDisplayKit介绍AsyncDisplayKit的是Facebbook为了解决其App在某些机型上的性能问题而写的一个库。这个库使用ASNode把UIView再进行了封装,最大限度的保留开发者对于使用UIView的习惯。在UIView之上的ASNode是线程安全的,即使在后台线程使用ASNode也毫无问题。这篇文章分析的主要是ASNode的绘制流程。 关于CALayer的绘制时机在分析ASNode的绘制流程之前,我们先来了解一下一些关于CALayer的知识。当一个CALayer需要更新的时候,系统会先将其标记,在下一个更新周期调用其-display()方法对其进行绘制。A...
Strong-Weak Dance
简述在我们使用block的时候,我们会使用__weak关键字来避免循环引用.例如 12345__weak MyViewController *wself = self; self.completionHandler = ^ { //do something in block using wself //do something in block using wself }; 但是这种方法会遇到一个问题,就是当执行block中的操作时,self已经被释放了,这就会导致wself为nil,在某些情况下,这会导致应用崩溃.有人会说,如果我们加入一个判...
Objective-C之分类
Category自从category被加入到Objective-C 2.0中以来,已经被开发者广泛应用到自己的App中.有了category我们可以为各种类添加新的方法.category的强大能力来源于运行时. 代码分散使用category有利于将代码进行分散管理.假设我们要实现一个功能强大的类,我们很可能会把这个类的所有代码都写在一个文件里.为了防止各种功能的代码随意分布在文件中,我们应该使用category把各个功能的代码分开.但是,如果把所有的分类都写在一个文件里,情况也不会变得很好.所以,正确的做法应该是将各个分类写在不同的文件中,便于管理. 12345678910111213/...
掌上课堂性能优化历程
苹果在WWDC 2013上介绍了drawViewHierarchyInRect:这个新的api,用于将指定view的整个view hierarchy 渲染在context中.renderInContext:是运行在app本身的地址空间里的,使用的是CPU,而drawViewHierarchyInRect:则是运行在app的地址空间之外的,使用了尽可能多的的GPU加速.参考:http://stackoverflow.com/questions/23157653/drawviewhierarchyinrectafterscreenupdates-delays-other-animations...
avatar
Farlanki
一个多头
FRIENDS