Manjaro使用privoxy将socks转为http代理

安装 pacman -S privoxy 配置 修改/etc/privoxy/config 添加: forward-socks5 / 127.0.0.1:1080 . #ss的代理 listen-address localhost:8118 重启 systemctl restart privoxy PS 终端中使用代理 export http_proxy=http://127.0.0.1:8118 export https_proxy=http://127.0.0.1:8118

修复一个支付宝概率支付失败的问题

问题 App中一个遗留的bug,当用户使用支付宝进行支付时会概率出错.并且没有规律. 原因 对比支付宝的的url,发现部分参数中多了+号,程序中对url进行了URLDecoder.<em>decode</em>(url),导致空格变成了+号,从而导致支付宝报错.

快速的将Android-async-http升级到OKhttp

背景 Android-async-http已经不更新了。ps:还为这个库提交过功能https://github.com/android-async-http/android-async-http/pull/840 Android-async-http是基于HttpClient的。 替换方案 将项目中所有的请求代码都替换工作量巨大,也容易出问题。所以采用将Okhttp封装为Android-async-http的方式进行替换。 android-async-http的使用方法: 从代码可以看出,想要快速的替换需要: 1.使用okhttp来实现AsyncHttpClient 2.实现AsyncHttpResponseHandler,FileAsyncHttpResponseHandler,JsonHttpResponseHandler,TextHttpResponseHandler等项目中使用的Handler即可.

Android7,8的适配

背景 用户反馈华为Mate10 无法使用App。 升级 targetSdkVersion = 26 遇到的问题 网络请求异常 TransactionTooLargeException 通知渠道 FileUriExposedException Charles无法抓Https MODE_WORLD_READABLE no longer supported BadTokenException 7.1 Not allowed to start service getRunningServices deprecated in API level 26 As of O, this method is no longer available to third party applications. For backwards compatibility, it will still return the caller’s own services. ps:时间太长了想起来再写,详情有空再整理

Manjaro Linux安装步骤

介绍 优点: 1.基于Arch,但不用折腾 2.滚动更新,但比Arch慢,比Arch更稳定 3.支持AUR仓库,软件非常多,比如deepin qq,sogou输入法等,一行命令就可以安装 4.Wiki非常丰富 缺点: 1.滚动更新,容易滚挂 安装步骤 下载 https://mirrors.tuna.tsinghua.edu.cn/manjaro-cd/ usb安装 df -h 查看你的u盘 sudo umount /dev/sdb 卸载U盘 dd if=xxx.iso of=/dev/sdb bs=1M 制作启动盘 note: /dev/sdb为u盘 添加国内源 编辑 vi /etc/pacman-mirrors.conf 修改 OnlyCountry=China 根据速度排序 pacman-mirrors -g 添加Arch源 编辑 vi /etc/pacman.conf 在末尾添加 同步 sudo pacman -Syy && sudo pacman -S archlinuxcn-keyring 安装zsh 执行 sudo pacman -S zsh sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)" chsh -s /bin/zsh 安装输入法 sudo pacman -S fcitx-im # 全部安装

一个bad request http request or invalid response的错误

问题 部分客户端api报错,特别是8.0系统上,访问api出现bad request http request or invalid response,from ulb错误。 解决步骤 1.服务器联调 服务器端未发现问题,参数都对。服务器上也没有这句错误信息。猜测应该是服务器上层报出来的错误,如负载均衡。 2.用Charles抓包 Charles抓包后,就不会出现该错误了。后来发现Charles对错误报文进行了兼容处理,发给服务器的应该对的。 3.去GIthub查网络库的issues 项目中使用的是,Android-async-http这个库,issues中没有人说8.0中有这个问题,猜想应该是自己代码中的问题。 4.大鲨鱼Wireshark抓包 大鲨鱼Wireshark抓包后会出现该错误,没有看出报文有异常。 比较正确的报文和错误的报文,发现大小不一样。 最终发现(找了好久,反正就是很艰难),错误的报文Header中多了一个空行。 原因 在往Header中添加参数时,有一个参数出现了\n,正常情况下客户端发送报文的时会忽略\n,而有的版本把\n放在了报文中,导致报文格式出错。

使用SVN下载GitHub单个目录内的文件

背景 有时候需要在GitHub上下载单个目录里面的文件,而不需要去克隆整个项目,太大的项目克隆起来太慢。 解决方案 GitHub是支持SVN访问的,所以可以使用SVN下载单个目录。 下载master分支 复制浏览器地址栏中的地址,如: https://github.com/bumptech/glide/tree/master/integration 将tree改为trunk即可。 https://github.com/bumptech/glide/trunk/integration 下载其他分支 如: https://github.com/bumptech/glide/tree/3.0/integration 将tree改为branches即可。 https://github.com/bumptech/glide/branches/3.0/integration 然后svn checkout 即可。

在Okhttp中使用HTTPDNS

背景 用户经常在国外使用App,国外的网络环境更加复杂,经常会出现UnknownHostException的异常,无法解析DNS。 解决方案 当遇到该异常时就需要自己去解析DNS。常用的自己解析DNS的方式有两种 1.自己拿到IP后替换域名(App老的方式) 比如使用dnsjava拿到IP后需要:

Linux下安装网络环境模拟工具augmented-traffic-control

augmented-traffic-control A tool to simulate network conditions,Facebook提供的一款网络环境模拟工具,可以使用他来测试App在各种网络环境下的问题。 安装环境要求 Python2.7、Django1.10.+ 以下在Manjora下的安装命令 切换Python环境到Python2.7 安装pip sudo pacman -S python2-pip 安装Django1.10.+ sudo pip install Django==1.10.8 安装ATC 安装lib sudo pacman -S pip install atc_thrift atcd django-atc-api django-atc-demo-ui django-atc-profile-storage Django配置 django-admin startproject atcui cd atcui 修改atcui/settings.py中的INSTALLED_APPS 修改atcui/urls.py中的urlpatterns及引用 更新数据库 python manage.py migrate 创建虚拟Ap Linux开启虚拟AP 启动ATC sudo atcd --atcd-wan wlp3s0 --atcd-lan ap0 注意:wlp3s0是我的无线网卡,ap0是我创建的虚拟ap网卡 设置错误可能出现:https://github.com/facebook/augmented-traffic-control/issues/239 启动ATCUI python manage.py runserver 0.0.0.0:8000 导入默认配置 下载该路径下的文件https://github.com/facebook/augmented-traffic-control/tree/master/utils 运行导入命令 ./restore-profiles.sh localhost:8000 手机使用ATC 使用Android、iOS 的浏览器访问 ip:8000 ip为你电脑的ip