0%

Input - Issue 1

如果用计算机程序来类比人生的话,那么一个人的生活从最简单的角度去看,无非就是不断的输入和输出。

输入就是人的五感带来的信息,即所见所闻。输出就是由我们产生的东西,即所想所为,可具体可抽象,具体如言语、绘画、产品等,抽象如各种思考的衍生物。

只谈编程开发和技术学习的方面,我的输入不算少。我订阅了许多 newsletter 的 email,也有不少 blog 的 RSS,再加上平时搜索得到的 blog 和文章,其实在这方面的阅读量并不少,虽然不一定每周都及时读完每个文章,但也基本会抽出一段时间集中读完。

但是,我一直有以下几点的困扰:

  1. 阅后即忘。小到一篇 blog,大到一整本,过了一段时间以后我都有可能完全忘掉。这也就导致了重复搜索和学习,时间和精力被大大消耗了。
  2. 有时候的阅读只是肤浅的读了一遍,并没有完全理解或者没有上手实践,导致印象不深,和第一点很像。
  3. 脑中始终是混乱的,熵增现象越来越明显。

学习的方法论里称最好的学习是教会其他人,这其实就是完全的输出了,然而我能力有限,我能自己学会了就已经不错了。我退一步,先做到总结,也算是简单模式的输入了。

所以,我打算不定期(希望能做到定期)记录自己一段时间内的输入,并附上简单的总结,这个系列就是Input Issue。我并不是要发布一个 newsletter,一来做不到定期,二来做不到一手性。只是我个人简单的记录,也方便以后的查找。

Problems

  • 解决 iOS View Controller Push/Pop 时的黑影,最近在写的一个 app 也遇到了这个问题,而这个问题我之前也遇到过,但是完全忘记了。最后的解决方案也不是图拉鼎写的那个,而是文章评论里的。

Tutorials

  • React Tutorial,这个放在这可能有充字数的嫌疑……但我真的是又跟着上手写了一遍(是「又」噢)。正好碰到实现一个非常简单的 web demo 的机会,于是就想着用 React 了。 也算是技能树又多了一项,可以多接活了!

  • MongoDB Quick Start Node.js Edition,还是和上面提到的那个 demo 有关,不想用 MySQL 了,换个味道。

  • Material-UI,依旧是和上面提到的 demo 有关,自己写 CSS 是不可能的,不过还没有完整看完,只是看了需要的几个控件。和 Element UI 相比,要额外写好多的 import。

  • UISearchController Tutorial: Getting Started,以前我都是自己用 UITextField 和 UITableView 来实现搜索栏,都不知道 iOS 早就有整套的 solution 了。

Blogs & Articles

  • Designing Swift APIs ,这篇 blog 里的 API 是广义上的,即函数签名。文章重点就是如何用 Swift 语法中的一些特性来使得函数签名既简单又明确,还可以达到灵活化,这些特性包括参数标签(argument label)、参数默认值、参数类型严格化以及包装器(wrapper)的使用。

下面这三篇是一口气看的,由表入里。

Libraries & Tools

  • SwiftCharts,app 中有折线图的需求,于是就用了这个 swift 中 start 最多的一个 library。没想到啊,巨难用!搞了两天才用自己的数据跑通并正确显示出来,虽然支持许多样式的图表,但是并不支持我设计的那种,而且定制起来太麻烦了,需要大量的魔改,准备换一个方案了。
  • Tabman,也是许多 star,但是我已经弃用了。原因一是这个控件适合全屏都作为一个 tab 的情况,如果只是页面中的部分作为 tab 容器的话需要魔改,我这人懒,喜欢开箱即用的东西。还有一个原因是每个 tab 下的 child view controller 的大小不能控制,也和第一点有关,在我的 app 里出现了 frame 大小诡异的 bug。
  • csv-parser,之前的一个项目需要将 MySQL 中的旧数据导出,再转换成新格式的数据导入到新表中,于是就搜到了这个 package,就是将 csv 转换成 JSON。
  • country-list,demo 项目需要用到 country code。
  • react-flag-icon-css,根据 country code 来提供对应的国旗图标,和上面的 country-list 配合使用的。
  • request-ip,获取请求的 IP 地址。
  • geoip-country,获取 IP 地址所在的国家,配合上面的 request-ip 使用的。
  • random-ipv4,生成随机 IPv4 地址,和上面的 geoip-country 一起用来做测试的。
  • mongoose,MongoDB 的 ORM,不多说了
  • react-router,React 没有官方的 Routing library,于是就选了这个貌似是使用的最多的,我的 demo 只有两个页面,所以一些复杂的路由配置还没用上。

欢迎关注我的其它发布渠道