月归档:五月 2017

在 MacOS 下捕获模拟器中发出的网络请求

最近在做一个 React Native 项目遇到了一个小问题:安装 react-native-cookiemanager 后,如何测试 cookie 是否设置成功并随请求发送,同时不影响 React Native 本地编译服务的连接(即不影响远程 JS Debug、热刷新等功能)。 使用 Charles 全局代理捕获网络请求 单纯的使用 Charles 抓包,需要给模拟器或测试机指定代理到本机 IP 的 8888 端口。这样虽然可以捕获请求,但也导致热刷新无法连接本地开发服务器。之后我尝试使用 Charles 全局代理来抓包,结果发现依然不能捕获 Genymotion 里的请求。网上搜了一下,还是需要在模拟器系统里设置网络代理到 10.0.3.2:8888,这样一来就跟 Charles 本身代理无异了。 使用 Wireshark 捕获网络请求 后来同事建议直接用 Wireshark,虽然有点大炮打蚊子但还是轻松地解决了我的需求。 在 Wireshark 里设置想抓取的域名/IP 以及接口就可以了。 捕获到请求后,右键选择「追踪流」-「HTTP 流」。 然后就会弹一个新窗口展示了请求的完整信息。此时已经可以看到请求时的 cookie 等信息了。 这样我就可以一边开发一边测试了,而不需要频繁切代理。需要注意的是 Wireshark 如果在配置不佳的机器(如单位的 iMac)上使用,如果开启捕获后不关掉,时间久了可能会卡死。所以抓完包即时关掉,随用随开。 使用 Debookee 捕获网络请求 同样是同事推荐的应用,之前没用过。这个是付费的,但是界面简洁很多。打开后开启捕获,然后左边直接切换到 HTTP 请求就行了。 每条请求点箭头展开就能查看详细信息,非常方便。 遗憾的是免费版功能有限制,开一会儿捕获的数据就「打码」展示了,此时重开一下就好。舍不得花 $29.90 买,所以忍了。 相关下载 Charles($50):官网 Wireshark(免费):官网 Deebookee($29.90起):官网 -- EOF --

发表在 前端开发 | 标签为 , , , | 一条评论

[译]ES6 中你应该知道的 Numbers 用法

本文翻译自:What You Should Know About Numbers in ES6 JavaScript 在 JavaScript 中,数据类型 Number 被应用在很多地方。自 ES6 起,Number 有了大量地改进来帮助开发者提升开发效率。下面是 ES6 为我们带来的几个新特性。 二进制与八进制直接量 对新人来讲,开发者现在能够在 ES6 中使用前缀来表达不同的数字系统。 表达二进制数字使用 0b 前缀,使用 00 前缀表达八进制数字(译注:都是数字 0)。 Number.isNaN Number.isNaN 与它的全局函数不同。它不会在比较前通过 Number(value) 作数字类型转换。 只有数值确实是 NaN 时 Number.isNaN 才会返回真。 蛋疼的是 typeof NaN === 'number',所以 typeof NaN === 'number' 并不能精准地告诉你值是否是一个数字。它只告诉你该值属于数字,也包括了 NaN。 因此更精确的判断方式是: typeof value === 'number' && !Number.isNaN(value) 当然,其它处理数字是否被错误描述的方式包括 Number(x) === x 将只在数字时返回 true。 Number.isFinite Number.isFinite 同样与全局的 isFinite 有些区别,Number.isFinite 不会在计算前通过 Number(value) 作数字类型转换。 例如,非数字在类型转换时会等于 0(Number(null) === 0)。 这种情况下 Number.isFinite 更高级一些。 Number.isInteger 这是 ES6 的新功能,它可以检测一个数字是否是整数。不需要用 Number(value) 作类型转换,非数字例如 null 会直接返回 false。 Number.parseInt, Number.parseFloat Number.parseInt 和 Number.parseFloat 跟他们的全局函数表现一毛一样。 Number.MAX_SAFE_INTEGER, Number.MIN_SAFE_INTEGER 它们表述了在 JavaScript 的实现里,可以安全使用的最大/最小数值。它由 IEEE 浮点限制(IEEE 754)在 2⁵³-1。 当然,最小安全整数是最大值的负值。要记住电脑在内存里是如何存储数字的。 Number.isSafeInteger Number.isSafeInteger 直接返回提供的值是否位于上面的最大/最小值之间。 Number.EPSILON 在 JavaScript 里,当浮点数在系统里不能被精确描述时会触发取整误差。例如,.1 加 .2 不等于 .3! Number.EPSILON 提供了一个可接受的误差范围用来计算(译注:Number.EPSILON 属性表示数字 1 和在 JavaScript 里大于 1 的最小数值之间的差值,详见 MDN)。所以可以用来检测计算误差是否处于可接受的范围,就像这样: 在 ES6 中,Numbers 有了长足的进步,并且仍有不少进步的空间,像这样的增强也帮助 ES6 变的比以往的 JavaScript 版本更优秀。(卧槽,这就忽然写结束语了?好 TM 突然!) -- EOF --

发表在 前端开发 | 标签为 , , | 留下评论

调整 WebStorm/PhpStorm 的内存限制

在处理大型项目时,WebStorm/PhpStorm 经常会遇到内存不够用导致响应缓慢的情况,原因是默认的 JVM 配置限制了内存大小(MacOS 64 位版默认是 750M)。 过去调整限制很麻烦,要到应用目录里面改配置(/Applications/PhpStorm.app/Contents/bin/phpstorm.vmoptions),不知道什么版本起多了一个选项,可以快速在应用里进入设置:「Help」——「Edit Custom VM Options」。 如果之前没有改过则会提示创建一个配置,然后在配置里调大 -Xmx(最大可占内存)参数后重启应用就可以了。 -Xmx2048m 具体的数值根据电脑配置而定,我分的 2G。提高此值大小会对 IDE 的响应速度有显著改善。另外这个修改对其它 Java 平台的 IDE 也有效,例如丑的一逼的 eclipse。 当然还有一些深入优化的参数,就不深入挖掘了,具体可看下面「相关链接」的第二条。一般情况下设置好内存限制、把没用的插件都禁用掉就可以带来很好的运行速度了。 相关链接 Tuning PhpStorm The One and Only Reason to Customize IntelliJ IDEA Memory Settings -- EOF --

发表在 软件技巧 | 标签为 , , | 2 条评论