MVVM 设计模式笔记
很早就听说过 MVVM 系统模式,但是都是一知半解的。这次就借助泊学网视频重新搭建一个查看天气的项目,系统的研究一下 MVVM 设计模式。 概述简易的画了一个 MVVM 设计图。整体流程如下,接下来将根据这个图进行设计。 准备工作搭建好项目 Sky,并准备好图片。准备好需要的数据接口,这里使用了 DarkSky 接口的。 UI搭建 (View)平时的项目很少都不会使用 StroyBoard,所以借着这个机会使用一下。文字不太好描述,这里直接贴图了。View 上的控件记得连接在 Controller 上! Model创建这里偷懒直接用 CuteBaby 生成了我们需要的 Model 格式。注意处理好 Model 中嵌套的 struct 名称,尽量不要重名,防止将自己弄混。 ViewModel创建ViewModel 更多的是让 Controller 从数据处理中解放出来,所以在 Controller 文件夹中单独创建 ViewModels 文件夹,并且将相关代码文件放入其中。ViewModel 负责处理 Model 中传过来的数据。通过重写 set 方法将 Model 获取,并写好...
Xcode 单元测试
有的时候很需要进行单元测试来节省开发时间。之前一直不太熟悉这一块的知识,正好整理学习一下。 模拟网络请求这里以 Sky 这个项目作为演示。模拟获取天气的网络请求方法。关键代码如下: 1234567891011121314151617181920212223242526272829303132333435363738394041enum DataManagerError: Error { case failedRequest case invalidResponse case unknown}struct WeatherData: Codable { let latitude: Double let longitude: Double}typealias CompletionHandler = (WeatherData?, DataManagerError?) -> Void func weatherDataAt(latitude: Double, longtitude: Double, compl...
Vim使用技巧笔记
边学习 Vim 技巧 边做笔记 学到一点就记录一点 从今天开始练习使用Vim,从最开始开始。 查询: 可以在 Vi 模式下直接使用 :h ctrl-w 查询 <C-w> 的用法。 输出: :echo 指令。 Vim中的printf。 :echo "Hello,world!" 持久化消息, 使用 :echom "Hello again,World!" 指令,然后使用 :messages 。能够再次看到 echom打印 “Hello again,World!” 的指令 基本映射 :map \ dd 使用 ‘' 指令代表 dd (删除行) 缩写 可以快捷输入一些类内容 :iabbrev hu Copyright 2011 Steve Losh 插入模式映射设置 :inoremap jk <esc> 在插入模式下按jk退出插入模式 J (大写) 讲两行拼接成一行 多行注释 Ctrl+v, 选中行,I(大写I), #, ESC f F 移动光标到当前行的字母 例如 fc ...
回顾Swift设计模式
《Swift 设计模式》已经看过一遍了,不过大多时候也是看完就忘记了,这里重新再看一遍并记录一下。 对象模板模式 其实这个设计模式就是我们通常概念的 面向对象 编程。使用 类 或者 结构体 作为数据类型及其逻辑的规范。创建对象时使用 模板,并在初始化是完成数据赋值。赋值时,要么使用模板中的 默认值,要么使用类或者结构体的 构造器 提供数值。 技巧:有时候可以通过添加计算属性来保护不希望被随意修改的属性 123456789101112private var inValue = 0 var outValue: Int { get { return inValue } set { inValue = max(0, newValue) } } proClass.outValue = 10 // 10proClass.outValue = -10 // 0 原型模式 原型模式通过克隆已有的对象来创建新的对象,已有的对象即为原型 组件若想通过模...
使用vps搭建ss
使用 VPS 搭建 SS由于之前的 VPN 到期了,刚好想自己搞一个 VPS,初步搭建记录一下过程。 购买 VPS 服务器登录 Vultr 官网选择需要的服务器。我选择日本东京的服务器。服务器类型选择 CentOS 7 x64 等服务器启动后可以获取相关信息,查看 IP 地址和密码 配置服务器服务搭建完成后需要连接服务器,mac 用户可以直接在终端 使用 ssh root@XX.XX.XX.XXX 指令进行连接。windows 可以下载 XShell 提取密码: 666。连接之后输入密码,遍进入服务器终端。 使用 root 用户登录,运行一下命令: 123wget --no-check-certificate -O shadowsocks.sh https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocks.shchmod +x shadowsocks.sh./shadowsocks.sh 2>&1 | tee shadowsocks.log 按照提示命令,输入密码...
《批判性思维工具》笔记
心灵各自有所归属,天堂或地狱只在一念之间. ---- <失乐园> 读了很久这本书.内容实在太复杂了,做个笔记慢慢看吧. 绪论 了解批判性思维的本质. 与日常生活的关系. 用自己的话阐述对批判性思维的理解. 1: 批判性思维的本质是一种对思维方式进行研究和思考.2: 生活中各个地方都适用,找出他的 目的、困难、信息、结论、假设、意义、主要概念和观点并检查他的 清晰性、准确性、精准性、相关性、深度、广度、重要性、逻辑性和公正性3: 批判性思维是对思维方式的修正,在考虑问题的时候全面考虑各个方面会出现的问题,多次思考. 第一章:成为公正的思考者 公正性的含义. 公正性思维的特质. 如何将公正思维内化为自己自我认同的一部分 思维特质有哪些? 1: 公正就是要求我们努力平等对待每一种观点2: 思维谦逊、思维勇气、思维换位思考、思维正直、思维坚毅、对推理的信心、思维自主3: 思考自己是否能够抵抗住外部遵从力量以及内部自我中心思想的影响.4: 思维谦逊、思维勇气、思维换位思考、思维正直、思维坚毅、对推理的信心、思维自主. 第二章:你处于批判性思维前四个阶段的哪个阶段 如何通...
Swift的正则表达式
有的时候会遇到了需要自定义正则来判断输入信息 12345678910111213extension String { func regularExpressions() -> Bool { if self.isEmpty { return false } //简单判断邮箱或者是手机号 let photoReges = "^([A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}) ||1[0-9]{10}$" let test = NSPredicate(format: "SELF MATCHES %@", photoReges) return test.evaluate(with: self) }} 这里为了省事,直接给 String 添加...
关于WKWebView和JS交互开发
在工作中使用到了 WKWebView 和 JS 交互开发的问题,在此留作笔记。 引言关于 WKwebview 的优点就不多说了,苹果公司也推荐使用 WKWebView 来代替 UIWebView 作为网页浏览器开发。正好遇到的项目有这一部分需求,就直接使用了,也顺便学习一下,将遇到的问题记录下来。 设置WKWebView最简单的第一步还是需要引入头文件 import WebKit 为了能与 JS 进行交互,需要对 WKWebView 进行设置 12345678910111213//创建配置let config = WKWebViewConfiguration()// 创建UserContentController(提供JavaScript向webView发送消息的方法)let userContent = WKUserContentController()// 添加消息处理,注意:self指代的对象需要遵守WKScriptMessageHandler协议,结束时需要移除userContent.add(self, name: "webViewApp")// 将U...
当当买的书到了
今天在当当买的书到了 挑一本慢慢看吧 嗯。。。今天突然又决定练字了,哈哈。不知道能坚持多久。就当写着玩吧。练习的时候学到了一招 横长竖短!这样写才好看!以后多注意! 今天还看了一下日剧《逃避可耻但有用》新垣结衣真好看啊!!! 明天开始整理一下blog吧。把计划、学习的内容都规划上。今天看个视频,现在突然想学习滑滑板。哈哈。原来还突然想学手鼓的呢。。。还有口琴。。。都没坚持下去。。。算了,先记着,都写到计划上去!!!
第一篇日记
今天终于有了自己的blog不容易啊 弄了很久 终于成功了!!! 经过了大概3天的学习和尝试,终于成功的使用 github 和 hexo 搭建起来了! 虽然希望使用 VPS 和自己的域名进行搭建,但是自己所掌握的知识还是太少,光学习 hexo 的配置就已经花费了很多的时间,索性就直接用这样的吧。 搭建自己的blog的目的其实更多的是为了给自己在网上留下一些自己的痕迹吧。毕竟也已经已经毕业了一段时间,技术也还是不上不下的。从此刻起好好记录整理一下自己的变化吧。 争取坚持每天都记录一些东西吧,不知道能坚持多久~ 参考资料hexoNext的配置文档简单的搭建和分类blog
第一篇Swift
记录遇到的有关Swift的问题在这里记录遇到的问题吧,不论大小,总要留下来痕迹。 第一次写些技术的文章,可能很多都不是什么新的技术。只是把工作学习时候遇到的问题做一个整理吧。 顺便学习一下 MarkDown 的用法吧。
第一篇读书
又要开始写读书笔记了一直都想写读书笔记,最后总是不了了之。。。 这是第一篇笔记,那就随便写一些吧。读了很多书,但是大部分的已经忘记了。只是偶尔脑海中浮现出一两句记得特别清楚句子。有人说读那么多书又忘记了,那有什么用呢?我一直觉得这句话说的很对,也因此沮丧了很久。直到有一天我在知乎看到了这个问题,有一个回答特别好。 当我还是个孩子时,我吃过很多的食物,现在已经记不起来吃过什么。但可以很肯定的是,它们中的一部分已经长成我的骨头和肉。 看到这句话时候,我突然就释怀了,感觉自己总算找到即便读书之后也完全记不得的借口了。haha~ 读了很多书,但是都忘掉了,读书的意义在哪里?
这是一篇待续
在这就记录一些琐事吧,还有很多未完的事情这个分类和日记有些像吧 这里是记录接下来想做的事情 规划了很久的内容,但是有很多时候实现起来太难了,总是抵挡不住自己的懒惰吧。 总有很多想做未做的事情,看看以后能不能做完吧。 2017年11月09日09:19:36开始整理泊学网上的视频学习情况。争取每天一篇。
