Node版本管理最佳实践

最近遇到一个关于 Node 版本的问题,解决过程中我重新认识了一下 Node 的版本管理,分享一下经历。 背景 - 我们的 iOS 工程提交代码是使用了一个叫 Commitizen 的工具,这是一个标准化 git commit message 的工具,这个工具我之前是用过 npm install -g 方式进行全局安装的。 问题 - 今天使用 Commitizen 下的 `git ...

《异类》读书笔记

最近重新读异类这本书的时候还是能被书中的观点所触动,尤其是前两章关于机遇介绍的部分。这篇笔记就着书中的内容重新审视自己所看到的一些社会现象。 我觉得我自己的经历其实还是挺有说服力的,能印证一部分书中的观点。我是 12 年大学毕业,毕业之后基本上就进入了移动互联网行业做客户端工程师。当时我自己其实并没有意识到移动互联网是一个即将井喷的行业,是已经从事互联网行业的哥哥给我的指点,我学了一段时间后就直 ...

Swift 字符串

官方定义 String 就是一组字符的集合。 和 Objective-C 不同, Swift 中的 String 是值类型,并且我们通过下标去访问字符串某个字符的时候,Swift 中下标的类型是 String.Index,而不是 Int.. 下标为何是 String.Index 类型? String.Index 的定义是「A position of ...

IGListKit 学习笔记二-数据变化驱动视图更新

IGListKit 的数据变更后刷新是通过 diff 算法比较数据变更差异,然后在界面上应用这些差异。 数据刷新主要有两种方式 performUpdates 以及 reloadDatas。 performUpdates 和 reloadData 的区别 performUpdates 基于 UICollectionView 的 `performBatchUpdates: ...

IGListKit 学习笔记一-基本使用

客户端开发中用到的最多的就是列表渲染的场景,官方提供了 UITableView 和 UICollectionView 来做,这些会导致 MassiveViewController 的问题,以及复杂列表配置繁琐的问题,所以我们会用第三方的列表渲染库,这些库基本上也是基于 UICollectionView 和 UITableView 的。这篇文章是介绍 IGListKit 的基础使用。 IGList ...

算法-接雨水题解

接雨水 https://leetcode.cn/problems/trapping-rain-water/description/ 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 ![Untitled](./as ...

算法-每日温度题解

Problem: 739. 每日温度 给定一个整数数组 temperatures ,表示每天的温度,返回一个数组 answer ,其中 answer[i] 是指对于第 i 天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用 0 ...

算法-三数之和题解

刚开始看到题目的想法就是暴力求解,锚定前两个元素,根据结果确定第三个元素,就是三层 while 循环。 代码如下所示: var i = 0; var j = 0; var k = 0; var res = [Int] while i < nums.count { j = i + 1 while j < nums.count { k ...

《卡片笔记写作法》读书笔记

最近几天看完了《卡片笔记写作法》这本薄薄的小书,书中的一些观点帮我认识到写作究竟是怎么一回事,一些观点加深了我本身已有的对记笔记的认知。这本书写到后面其实写的非常啰嗦了,但是前面部分看完还是有一些心得体会。 先聊聊为什么要读这本书?因为很长一段时间以来我对记笔记这件事儿又开始感到困惑「到底应该怎么整理自己的想法」,我以前整理想法就是通过在日记里写一些自己日常的思考,但是这些想法就会零散在日记里, ...

微信小程序下拉刷新

目前看到有两种实现小程序下拉刷新的方法 使用系统提供的 onPullDownRefresh 使用 scroll-view 组件实现下拉刷新 使用 onPullDownRefresh 实现下拉刷新 主要是通过在 .json 里面进行配置实现下拉刷新,而且不光可以用在当前页面,也可以用在全局 json 配置文件中。 如果在全局 app.json 的 windows 配置下开 ...