Read the fucking ♂ source code

每天学习新姿势


  • 首页

  • 标签

  • 分类

  • 归档

  • 关于

一种强大、可靠的React Native拆包以及热更新方案,基于CodePush,Metro

发表于 2019-09-29 | 分类于 技术

背景需求

因为需要将各业务线通过划分jsbundle的形式进行分离,以达到

  • 各个业务包独立更新、回滚以及版本管控
  • 增量加载,优化启动速度
  • 优化增量更新,只对单独某一业务包增量更新

案例参考

参考了携程以及各种网络版本的做法,大致总结为三种

阅读全文 »

基于Node.js搭建一个微信机器人

发表于 2019-05-05 | 分类于 技术

将要实现的功能

  • 自动聊天,可以把它扔群里跟大家聊骚聊天
  • 每日简报,给同事家人定时播报头条简报
  • 每日天气预报,给你老婆程序猿哪来的老婆嘘寒问暖

基本架构

本项目基于Wechaty,这是一个封装了微信基本事件的开源库,比如onLogin(登陆事件),onMessage(消息事件),onLogout(登出事件)等等,详细使用可参考该项目文档,
有了这些事件,我们可以基于Node.js很轻松的开发一些常用功能。

本项目Node版本需要 >= 10,可以自行安装nvm进行版本切换。

本项目工程代码wechat-boy

阅读全文 »

Android免root获取shell级权限实现静默卸载安装

发表于 2019-04-03 | 分类于 技术

方案分析

市面上实现这种方案最早的应用应该是”黑阈”,我们在使用的时候需要开启调试模式,然后通过adb或者注入器注入主服务,才可以使用后台管制以及其他高级权限的功能。所以本方案也是基于这种注入服务的方式,来实现各种需要高级权限的功能

Shell级权限的服务

这种方案的关键点是这个拥有shell级权限的服务,Android提供了app_process指令供我们启动一个进程,我们可以通过该指令起一个Java服务,如果是通过shell执行的,该服务会从/system/bin/sh fork出来,并且拥有shell级权限

阅读全文 »

一个NodeJS生成excel表格的小demo

发表于 2018-12-14 | 分类于 技术

环境准备

已经2018年了,广大人民群众基本都用上es6了,所以这里也配一下es6的环境

新建工程,创建一个package.json

1
2
3
4
5
6
{
"name": "projectName",
"version": "1.0.0",
"devDependencies": {},
"dependencies": {}
}

阅读全文 »

shadowsocks服务搭建以及全局代理

发表于 2018-11-13 | 分类于 技术

最近又有一台服务器被GFW给干掉了,又得掏腰包买服务器跟搭建环境了,这次记录一下方便以后翻出来看吧

阅读全文 »

手撸排序:快速排序

发表于 2018-10-25 | 分类于 技术

核心思想

首先算法理解了主要思想,那么代码实现也是信手拈来

快排分以下三步:

阅读全文 »

关于Android提取、备份APK

发表于 2018-07-10 | 分类于 技术

通过adb提取APK

Android提取apk有两种途径,一种是通过adb

1
2
3
4
5
6
7
8
9
10
// 列出所有安装包
adb shell pm list package

// 找到你需要提取的包名,然后获取路径
adb shell pm path packageName

// 输出路径后拷贝或者pull到你的电脑
adb pull apkPath ~/Download

// 某些设备可能需要root权限才能访问这个path路径

阅读全文 »

React Native for Android 源码解析:Reload, Debug JS Remotely具体做了什么?

发表于 2018-05-15 | 分类于 技术

Reload, debug js remotely罪恶滔天,弄的百姓怨声载道

最近使用0.54.0版本开发有个调试的bug非常恶心,debug js remotely总是抛

1
2
3
4
DeltaPatcher.js:58 Uncaught (in promise) Error: DeltaPatcher should receive a fresh Delta when being initialized
at DeltaPatcher.applyDelta (DeltaPatcher.js:58)
at deltaUrlToBlobUrl (deltaUrlToBlobUrl.js:34)
at <anonymous>

想再次debug就得杀掉进程重新打开,官方解释在0.55版本会修复此问题,看了下pr改动都是js代码,随即更新版本修复此问题。若想以后碰到类似框架性的问题,想要自己能有排错纠错能力,还是老老实实啃源码吧

阅读全文 »

记一次RN Android端在Mobx环境下使用FlatList导致列表错乱的问题

发表于 2018-04-26 | 分类于 技术

排查结果

首先说下结果,以供参考
github的issue有FlatList不显示的问题,表现的跟我不太一样,他们解决方案是将removeClippedSubviews={false},我尝试了一下不适用我的场景
最终找出罪魁祸首是mobx的observable变量与FlatList的data在release环境下,未关闭RN log日志所导致的冲突

  • 解决方案1:release环境关掉日志(我是用babel的transform-remove-console插件来关闭的)
  • 解决方案2:如果一定要开日志,FlatList的data不要给observable Array,给普通Array
阅读全文 »

浅析JS闭包(Closure)与函数的柯里化(Currying)

发表于 2018-04-26 | 分类于 技术
阅读全文 »
Yori Zhao(赵佳康)

Yori Zhao(赵佳康)

不定时更新技术,游戏,阿尼妹脱

10 日志
1 分类
5 标签
RSS
GitHub E-mail
© 2019 Yori Zhao(赵佳康)
由 Hexo 强力驱动
|
主题 — NexT.Pisces v5.1.4