目前公司所有项目的React Native版本为0.63.2,发布于2020.6月份,时隔将近4年,Native SDK的更新已经导致了某些RN api的不兼容,例如安卓点击事件的穿透还有iOS tabbar 颜色更新无效等等,iOS SDK 最低支持版本从10升到了13,舍弃了市场份额小的机型覆盖,对于简化代码和架构稳定性具有重大意义,而Hermes新引擎的引入,以及对未来新框架的适配,对用户体验来说也至关重要。

阅读全文

Trading in the zone

发布在 Stock

交易的冷酷现实是每笔交易的结果都不确定,除非你学会彻底接受结果不确定的可能性,否则你会有意或无意地避免你定义为痛苦的可能性。在这种过程中你会碰到很多自己创造的昂贵错误 — 马克道格拉斯

阅读全文

在根目录下创建hack.js文件,内容如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
const fs = require('fs');
const { resolve } = require('path');
const nmPath = resolve(__dirname, './node_modules');
//支持安卓单步调试
console.log('[hack] support debug for android')
path = resolve(nmPath, './react-native/Libraries/BatchedBridge/MessageQueue.js')
content = fs.readFileSync(path, { encoding: 'utf-8'})
replace = `callNativeSyncHook(
moduleID: number,
methodID: number,
params: any[],
onFail: ?Function,
onSucc: ?Function,
): any {
const isDebuggingEnabled = (typeof atob !== 'undefined');
this.processCallbacks(moduleID, methodID, params, onFail, onSucc);
if(!isDebuggingEnabled)
{
if (typeof global.nativeCallSyncHook == 'function') {
return global.nativeCallSyncHook(moduleID, methodID, params);
}
return '';
}
}
`
fs.writeFileSync(path, content.replace(/callNativeSyncHook.+\n(.+\n)*/gm, replace))

其实是修改node_modules中导致crash的callNativeSyncHook方法,由于node_module是gitignore的 一部分,建议将node hack.js加入package.json的script中,作为build命令的一部分

评论和共享

本章为最终章,主要讲解dnsmasq的配置
由于我们走透明代理的时候,网关跟DNS地址都是指向了旁路由,也就是Openwrt,地址为192.168.0.50。而局域网地址在nftables中已经被过滤掉,即不走v2ray代理,原因见上篇。dnsmasq能对DNS请求进行劫持,并且有dnsmasq-china-list,这提供了我们做DNS分流的基础条件

阅读全文

上一篇是Openwrt的安装篇,本篇将着重打通双端隧道的问题
一般来说,我们并没有公司或者实验室的网关权限,所以需要通过ssh的远端端口映射命令打通外部跟家里的通信隧道,这需要有一台具有公网ip的机子,或者是家里的路由器有公网ip,进行端口映射都行,另外为了保证自动重连,外部使用autossh进行ssh的连接。

阅读全文

我们一定会有一种需求,比如把公司或者实验室网络搬回家,因为公家的网络常常带着魔法,又快又好,当然这一切都可以简单的用VPN来解决,而折腾的方式只是为了让我们在家里连接特定wifi的那一刻就不知不知觉地坐上魔法的飞毯

阅读全文

WIFI分流

发布在 Network

不是所有设备,所以系统都可以装vpn,可以指定协议代理,但是几乎所有设备都可以连接wifi,而所有设备都可以修改网络的网关和dns服务器,就着这个思路,旁路由实现透明代理,主路由正常线路。不同wifi指定不同网关跟路由器可以实现wifi分流

阅读全文
作者的图片

sakamoto

no past no future


厦门