写 RN 也有段时间了,今天抽空就对 RN 当中的 ListView 进行一个简单介绍,主要介绍使用当中的一些坑。
写一个简单的 ListView
1 | class MyComponent extends Component { |
用心做一件工艺品
写 RN 也有段时间了,今天抽空就对 RN 当中的 ListView 进行一个简单介绍,主要介绍使用当中的一些坑。
1 | class MyComponent extends Component { |
今天给大家推荐一个非常好用的工具 docsify,对,没错,就是上面这个萌萌哒的类似果冻的东西。
docsify 是一个非常好用的文档网站生成工具。它能快速的将你存储在 Git 仓库中的 markdown 文档生成一个文档网站,而且界面非常美观。
下面是 docsify 文档的介绍
docsify 是一个动态生成文档网站的工具。不同于 GitBook、Hexo 的地方是它不会生成将 .md 转成 .html 文件,所有转换工作都是在运行时进行。
这将非常实用,如果只是需要快速的搭建一个小型的文档网站,或者不想因为生成的一堆 .html 文件“污染” commit 记录,只需要创建一个 index.html 就可以开始写文档而且直接部署在 GitHub Pages。
直接点击这里查看其官方文档即可,里面非常详细的介绍了如何使用。另外docsify 文档也是一个实例 demo。
今天无意间翻到了以前有关 cookies 的代码,就顺便整理了一下,和大家分享下。
这里有比较详细的介绍,本文就不再赘述了。click me
在 iOS 当中需要注意以下几点:
注:cookie 不能跨域是通用的,在所有情况下都是这样,并非在 iOS 系统上如此。.baidu.com 和 image.baidu.com 可以使用彼此的 cookie 是因为服务端做了特殊的处理。
CocoaPods 作为 iOS 开发常用的包管理工具一直深受大家的喜爱,但是它出现问题的时候也让我们非常纠结。最近我就遇到这么一个让人纠结的错误ArgumentError - invalid byte sequence in UTF-8,下面就来说下如何解决它。
我的问题是当你pod search <content>时就会报这个错误,详细的错误提示如下:
/Users/yzq/.rvm/gems/ruby-2.4.1@global/gems/cocoapods-1.2.1/lib/cocoapods/user_interface/error_report.rb:135:in `error_from_podfile': invalid byte sequence in UTF-8 (ArgumentError)
期间我尝试了重新下载 repo、重新安装 CocoaPods、甚至重新安装 Ruby 环境都没有解决,手动摊手。
当你 Google 这个错误或者在 CocoaPods 的 issues 里面搜索之后,你大致会发现以下几种解决方案。
这种方法认为你本地字符集没有配置好,需要配置成标准的en_US.UTF-8,执行以下命令即可,或者将以下命令添加的相应的 shell 配置文件当中,例如:~/.bashrc 或者~/.zshrc。
//使用命令locale可以查看本地字符集
export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8
然而这种方法并没有解决我的问题,我使用locale命令查看同事的电脑的字符集,发现和我一样是zh_CN.UTF-8,然而他的 CocoaPods 却没有问题,所以断定不是字符集的问题。
曾经我以为 iOS 最牛叉的错误是 EXC_BAD_ACCESS,直到我遇到了 Signal 10 was raised. SIGBUS ……
这个错误出现的几率其实蛮低的,但是会造成闪退,所以还是不容忽视的。下面我们就来一起看一下
Bus error 即总线错误,以下是中文维基百科的定义
存储器区块错误(英语:Segmentation fault,经常被缩写为 segfault),又译为记忆段错误,也称为总线错误(bus error),或总线错误、访问权限冲突(access violation),是一种程序错误。
它会出现在当程序企图访问 CPU 无法定址的存储器区块时。当错误发生时,硬件会通知操作系统,产生了存储器访问权限冲突的状况。
英文维基百科的释义相对详细一些,也介绍了造成这种错误的原因
On POSIX-compliant platforms, bus errors usually result in the SIGBUS signal being sent to the process that caused the error. SIGBUS can also be caused by any general device fault that the computer detects, though a bus error rarely means that the computer hardware is physically broken—it is normally caused by a bug in a program’s source code.Bus errors may also be raised for certain other paging errors; see below.
There are at least three main causes of bus errors:
- Non-existent address
- Unaligned access
- Paging errors
开发过程中有时候需要更新 repo 仓库和代码,但是 GitHub 上的仓库和代码的下载速度感人。
翻墙倒是可以解决这个问题,但是终端默认不走翻墙代理,这个时候就需要我们做一些配置了。
我们可以终端当中输入以下命令使终端的请求走相应的代理
1 | //设置http和https请求代理 |
我们拉取的时候有的时候可能会用到 ssh,我们可以这样配置
1 | //设置所有协议代理 |
当前这些配置只对当前终端有效
在开发过程中我们为了减小安装包的体积,我们一般会把工程当中的图片资源文件进行压缩。
在添加图片的时候进行压缩是一个好习惯,但是对于工程当中的大量图片进行压缩替换是一个不小的工作量,而且还有可能不小心弄错,像这种大批量的重复性工作就需要写脚本来帮助我们完成了。
我们先来介绍我们今天的主角TinyPng,我相信许多开发人员都知道这个网站,TinyPng 凭借着优秀的压缩效率和压缩质量备受好评。同时它也提供了相应的 API 供我们使用,这也是为什么要使用它的原因。
不过 TinyPng 也有一个限制,单个账号每月最多压缩 500 张次图片,想要提高相应压缩数量需要付费,这也对脚本的批量压缩造成了一些限制,后面会做相应介绍。
shell 脚本就不过多的进行介绍了,网上的教程有很多,本文只会针对比较特殊的地方进行介绍。
基本思路是从给定的文件夹下进行遍历查找,如果是图片,进行压缩,将压缩之后的图片下载进行替换,如果是文件夹的话则进入该文件夹下进行更深一层的遍历查找压缩。具体的可以查看脚本,代码如下:
最近使用 JSPatch 遇到了一些坑,发出来大家引以为鉴少走弯路吧,后续遇到问题的话会持续更新的。
1.一些无法直接调用的常量应该怎么写,特别是系统定义的?
使用 NSLog 将对应常量值输出,直接使用输出的常量值替代
2.在 JS 当中发现不能调用方法,导致 JS 文件执行中断,使用 console.log 输出,发现为[NSObject object]
这种情况说明当前对象没有序列化,需转换成 JS 对象使用,调用 toJS()即可
1 | var temp = registrationID.toJS(); |
更多问题详见 JSPatch 官方文档,JSPatch 基础用法,JSPatch 常见问题