webpack+React+gulp的调试

在开发过程中,开发程序只是第一步,调试才是最重要的,上一节讲了如何在webstorm中进行调试js内容,但是对于进行React进行jsx语法开发时,又是如何调试呢。

对于webpack.config.js配置,这里也不做过多介绍,网上有很多内容,其中一个很重要的就是source map。

什么是Source map

简单说,Source map就是一个信息文件,里面储存着位置信息。也就是说,转换后的代码的每一个位置,所对应的转换前的位置。

JS发布后通常会经过压缩和混淆,所有代码被压缩成一行代码,如果发生错误,无法定位错误,SourceMap因此而生。说起SourceMap,不得不说说uglifyjs,uglifyjs是nodejs下一款优秀的JS压缩优化工具,支持SourceMap的生成。

更多可以参考:

使用 SourceMap 来进行前端代码调试

但是自己在webpack.config.js中添加了如下配置:

devtool: 'eval-source-map',

而且在dish的目录下面有:

1
2
3
4
5
6
7
8
alliance-detail.js
alliance-detail.map
alliance-list.js
alliance-list.map
article-list.js
article-list.map
business-detail.js
business-detail.map

文件也有对应关系,但是在chrome中就是看多对应的jsx文件,最后经过公司前端一哥的帮忙,发现如果在webpack中将Debugger中的如下内容打开,就可以看到js对应的jsx文件,断点什么的,就可以飞起来了。
webstorm Debugger 配置

chrome显示结果如下
说明source map生效,可以在jsx里面打断点进行调试了。

如何调试一个js项目

今天在学习同时开发的一个脚手架工具Tiger,主要是用来快速生成模块化类的一个工具,其中是采用js语言写的,自己想调试的时候发现不得要领,查找一些资料下来有点眉目,此处做个记录。

首先这个工具的用法是:

tiger init className superClassName

其实内部就是调用一个js文件

node run.js  init className superClassName

如果没有node环境,可以将run.js添加x属性,然后执行 ./run.js … 操作。

调试工具选用 webstorm,然后在debug的 Run/Debug Configurations 里面可以选择要调试的js文件,如果需要参数,也可以在Node Parameters里面添加参数。
如图

剩下的问题就是js语法调试。

只支持横屏的应用调用竖屏系统库崩溃的问题

横屏应用调用竖屏内容,crash

今天在测试开发过程中,如果你的app只支持横屏,如下图图片
在设置中只支持横屏,这时候如果调用一些系统的只支持竖屏的应用,比如UIImagePickerViewcontroller,就会有崩溃,控制台显示如下:

自己比较纠结的地方在于,控制台完全没有上图
内容的输出,所以比较不好发现,重新写了一个测试程序才正常输出了。

ps:使用系统的库,CIDetector 自动识别二维码,发现如果二维码是拍照出来的,有比较多干扰,或者二维码内容不加多,CIDetector也是不能准确识别的。

iOS 开发记录

background Fetch 注意

使用background Fetch 主要记得要回调completionHandler(UIBackgroundFetchResultNewData)等

调试有两种方式
1 程序进入后台,选择xcode - debug - simulate background fetch,
2 选择scheme的 launch due to a background fetch event 这是谁debug调试的时候,先执行fetch功能,然后自己通过主动启动应用,查看是否执行了fetch

离线缓存

参考个大厂商的缓存,一种是看过即缓存,比如网易新闻,还有一种直接是离线下载,比如腾讯新闻。
针对这两个实现,自己大概想了下,一个是基于webview的缓存实现,另外一种,应该是通过服务下载资源到本地,然后存储到数据库中,比如coredata等。

webview的缓存实现主要两种,一个html5的manifest文件,也可以通过NSURLCache实现。
具体可以参考:iOS开发网络——数据缓存

还有一个就是采用NSURLProtocol实现存储,可以参考https://github.com/rnapier/RNCachingURLProtocol 就是将请求过的内容都缓存下来。

至于为什么说离线是通过服务下载的,因为他们可以把没有看过的内容都离线到本地,那就只能是是通过文件下载来实现。

http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0417/2736.html
https://github.com/rnapier/RNCachingURLProtocol
https://my.oschina.net/u/2340880/blog?sort=time&p=9&temp=1479982318849 晖少的博客

iOS证书之CSR文件

在iOS开发的过程中, 必然需要制作证书,开发者证书,发布证书,但是在制作他们的第一步都是先生成一个CSR文件
证书机构申请

那么到底CSR是什么东西呢?可以参考下面官方介绍

What is a CSR (Certificate Signing Request)?

简单来说,CSR就是Certificate Signing Request的缩写,是从证书颁发机构生成证书时,需要的一串加密的文本信息,也是从证书颁发机构获取的,用文本工具打开,可以看到他是一串