作为MIUI恐惧者,无奈LineageOS官方没有支持这台红米K30 5G,只能诚惶诚恐地使用欧版MIUI。直到某天发现了Resurrection Remix OS官方支持这款手机,才终于脱离MIUI。

查了资料,才知道Resurrection Remix OS是基于LineageOS的一款开源ROM,基本体验与LineageOS一致,并增加了很多设置(基本上是界面的,个人感觉用途不大),适合喜欢原生Android的用户。

LineageOS的优点基本继承了,总结一下缺点吧:

  • 1)国内支付应用,基本不能使用指纹支付。历史原因,一直遗留下来的问题。跟LineageOS一样。
  • 2)关屏后不能双击屏幕打开锁屏界面
  • 3)不能双击桌面锁屏。可以设置双击任务栏或者三大金刚键进行锁屏。
  • 4)不能拍摄6400万像素的照片。ROM自带相机和Google Camera移植版,最高都只支持1610万像素。不过即使是MIUI的自带相机,拍出来的6400万像素照片基本直出(纯粹自我安慰)。
  • 5)刚开始使用,比较耗电。做了一些优化后,后面变得相对省电一点。不过,这手机本身也不怎么省电。
  • 6)长时间使用的应用,容易自动退出。比如Chrome开个视频后,很大几率会自动关掉并回到桌面。可能是电源管理自动优化吧。

总的来讲,曾经的LineageOS用户可以放心刷,也没有遇到影响日常使用的bug 。

刷机过程,跟LineageOS一样。重点还是那句:刷机前先备份好数据。Recovery备份分区(刷机失败时可以还原系统) + Ti Backup备份应用(用于迁移应用及数据)。

1. 下载相关数据

2. 刷机

  • 备份数据。最好连sdcard的数据也备份一下
  • wipe手机,即Recovery格式化data分区
  • 解锁、刷recovery
  • 刷ROM
  • Recovery里Root系统
  • 刷Opengapps
  • 清cache
  • 重启进入系统

要注意,进入系统后,需要连Google验证。

3. 耗电优化的处理。当前的节电设置如下:

  • a)屏幕刷新率设为 60Hz,在“设置”->“系统”->Device-specific settings->Minimum Refresh Rate。120Hz屏幕其实很丝滑,但60Hz确实够用。
  • b)关闭 5G 网络,只用 4G 。设置移动网络的首选网络类型为“LTE/WCDMA”。当前来说,5G除了耗电比较快,没感受到什么优势。
  • c)限制应用使用电量。在电池管理器设置受限应用。目前设了 Google Play 商店。
  • d)关闭 Google 账户的自动同步功能,只开启了 Chrome 和 Gmail 。
  • e)冻结了一些不常用但不可缺的应用。冰箱、Shelter 、island 等。其中 island 的名称太中二,个人接受不了而放弃。用 Shelter 的话,如果工作空间的应用没用到 GMS,最好冻结它,并尽量安装非无依赖 GMS 的应用。

动画《放学后海堤日记》第10集,提到吃不完的竹荚鱼做成一夜干,不仅很好吃,还能提高存储时间。对这个做法很好奇,于是周末试了下,果然很惊艳!

虽然一夜干可以用新鲜鱼和冰鲜鱼,但是为了避免失败而造成的浪费,选用了太阳鱼(无细骨的淡水鱼)。最后烤制时,用了烤箱代替炭炉。

材料:

  • 太阳鱼 1条
  • 清水 500ml
  • 盐 50g

做法:

  • 1,太阳鱼削鳞,从背部开刀,去鳃、清理内脏、清理黑膜,清洗干净。
  • 2,清水和盐配成10%浓度的盐水,放入鱼,浸泡30分钟到1小时。盐水放入适当的米酒,可以去腥。
  • 3,从盐水取出鱼,用厨房纸吸干表面水份,放入冰箱过夜。
  • 4,从冰箱取出鱼,再次吸干表面水份。烤箱最高温度(我的是230°C)预热10分钟后,把鱼放最上层,烤大约20分钟,烤至表面金黄即可。烤的过程要适时翻面。鱼皮那面先朝上来烤,再翻面,可以烤出完整的鱼皮。

由于浸泡盐水和烤炙,鱼肉的水份大部分流失,使得鱼的鲜味浓缩,所以吃起来味道很棒!

由于贪便宜,上一部手机红米Note4x(代号:mido)买了3G内存+32G存储的版本,导致用了两年半就内部空间不足。即使插上128GB的TF卡,并转为内部存储,也要面对偶尔出现的SD卡错误,导致装在卡上的应用不能运行。抓狂……然后CFO的批准下,一起换了红米K30 5G(代号:picasso)。

这个时间点,要换手机,就肯定选5G网络的了。然后,考虑高性价比,能解BL锁,能刷第三方ROM,就剩下红米了。最后在K30i 5G与K30 5G之间,选择了拥有主摄6400万像素的K30 5G。低配版6GB + 128GB,目测用3年应该没问题。

关于此手机的一切说明,可以参考这个文章:
老妈钦点,我买了一部Redmi K30 5G版
https://pockies.github.io/2020/03/27/redmi-k30-5g/

按照文章的刷机操作,就是手机绑定小账号、解BL锁、刷recovery、刷欧版MIUI、折腾流氓应用。但是解锁后直接刷最新版Recovery,进去时会黑屏。参考了网上的经验分享,需要先刷旧版Recovery,然后刷ROM,再刷新版Recovery。由于该Recovery自带Magisk,所以不用单独下载。相关软件如下:

1)小米官方解锁工具
https://www.miui.com/unlock/index.html

2)非官方TWRP Recovery
https://mifirm.net/model/picasso.ttt#twrp
旧版:TWRP-3.4.0B-0209-REDMI_K30_5G-CN-wzsx150-fastboot
目前最新版:TWRP-3.4.2B-0623-REDMI_K30_5G-CN-wzsx150-fastboot

3)欧版MIUIv12
https://sourceforge.net/projects/xiaomi-eu-multilang-miui-roms/files/xiaomi.eu/MIUI-STABLE-RELEASES/MIUIv12/

简单的刷机流程是:刷旧版Recovery,格式化Data分区,刷入欧版MIUI,双清,在Recovery刷入最新版Recovery后,再进入Recovery进行root,重启进入系统。

刷完欧版ROM,我选择了冰箱(主要冻结无用的系统App,曾经买了付费版) + Island(主要是使用工作空间隔离流氓App,并且能进行冻结)结合使用。由于Shelter不能在MIUI上运行,只能暂时使用Island(缺点是没有自动冻结,用起来没有Shelter顺手)。

用了一段时间,一开始感觉是比较耗电,渐渐感觉跟红米Note4x差不多。已调低屏幕刷新率60mHz,没什么感觉。玩过Minecraft,手机发烫比较严重,耗电也比较快。

希望后面能刷上LineageOS。但是XDA-Developers上的网友说,小米官方一直没更新这手机的kernel源码,导致第三方系统不能完善。目前也就先这样了。

上周五下班前,明天去潮汕吧。于是,就在潮州度过了周六日两天。

本来的潮汕(潮州和汕头)之旅,为了避免赶路,改为呆在潮州。由于没有做好规划,浪费了不少时间。例如3次进出牌坊街(潮州最热闹的1地方)、没有住到有特色的旅馆、没有一条很好的吃货路线等。不过第一次随缘去玩,也是挺特别的。

关于交通
当前国内交通的发达,不仅体现在高铁的建设,还有多种交通工具和形式的补充。例如从潮汕站下高铁,两个人,打个顺风车到牌坊街,才20几块。超级方便舒适便宜!

还有,潮州市内遍布各种共享单车、助力车、电动车,不管回酒店,还是逛完逛完整个古城,都是很方便。不过如果骑了没有避震的车,最好不要走那些老旧的路,否则会颠簸到怀疑人生。

关于住宿
由于说走就走,我们计划先订个“7天酒店”(周六才100一晚),到了后边逛边找。但由于是周六,古城内的客栈民宿都订满了,最后还是睡了“7天”。

看了下,牌坊街的小巷子里、广济门城楼南面的城墙下,都有很多有当地特色的客栈民宿,都能很方便地游玩古城(潮州最热闹的地方了吧),而且当无所事是时,可以在大堂喝着功夫茶。当然,价格要比“7天”贵(一晚200以上吧)。

关于吃
虽然声称潮州有超级多的地方小吃,而且很有特色,但吃起来不是很香。大部分都是油炸的,而且口味有点重(偏咸),大热天的,对不上胃口。

大概参考了这篇攻略:
潮州吃不停之——24小时美食指南
https://m.mafengwo.cn/gonglve/ziyouxing/65034.html

最佳的入口,应该是环城西路与西马路交叉处附近的“镇记牛杂店”,来碗中份的牛杂粿条。因为一般到潮州都接近中午了,先稍稍填一下肚子,再沿西马路一路吃过去。

点评一下吃过的那些。

粿条。比河粉软、粘一点的粉条。对于追求爽滑的人来说,吃不惯。一般以汤底配上牛肉丸、牛杂或牛肉等。

笋粿。据说要指定季节才能吃到。就是用米粉做的皮,包着竹笋、虾米等馅料的饺子。笋带来爽脆的口感。

春卷。虾米、猪肉、绿豆做成馅料,外皮包着油炸,个人比较喜欢。偏咸。

咸水粿。米粉做的迷你“钵仔糕”,碗形,中间凹进去的地方,放着咸菜。咸菜的油能流出来,整体口感是爽口弹牙。

蚝煎。“伟舅牛肉丸”那店里吃的。生蚝的个头相对比较大,入口即化,要是能少放点盐,能1给90分以上。

海石花。外形和1口感都是啫喱,而且毫无味道,需搭配糖、芋丸、红豆、牛奶、各种水果等来做成甜品。冰冻后,很好吃。

豆花。甜品。老板说不是普通的豆腐花,但吃起来就是豆腐花。

功夫茶。古城里很多茶馆,走累了可以进去坐坐,喝口茶。

牛肉火锅。吃的是广济门附近的“阿彬牛肉火锅”,人均100,顾客超级多,但吃起来没什么惊喜。也许是吃过澳洲和牛,就感觉这牛肉没什么味道。应该是牛肉脂肪含量比较少的原因吧。

关于玩
主要就是古城内外游玩了。数不尽怕牌坊的牌坊街、感觉只是个大水塘的潮州西湖、潮州古城墙、广济门城楼、广济桥和湘子桥等,都是打卡的好地方。

总体来说,潮州是个值得一去的地方,可以发掘广东的另一面。

一个只有自己在用的新闻阅读器,终于改为使用OkHttp发起请求了。原来一直用Volley,但是改用OkHttp之后,做更多的请求定制,为后面添加更多功能做准备。记录一下一些知识点:

首先是Android官方教程,关于执行网络操作的部分。有教授使用HttpsURLConnection链接网络的方法。
Android官方教程 - 连接到网络
https://developer.android.com/training/basics/network-ops/connecting

然后是主线程不能发起网络请求的问题。主要是为了提高程序的性能,把不占用CPU的IO操作(例如网络请求)都移到子线程执行。网络请求执行结束后,调用runOnUiThread方法回到主线程更新UI。
Android 子线程更新UI了解吗?
https://juejin.im/post/5da14e8ae51d45782b0c1c20

最后是OkHttp的教程。其异步请求,用起来有点像jQuery的ajax方法。
1)okhttp代码
https://github.com/square/okhttp
2)OkHttp使用完全教程
https://www.jianshu.com/p/ca8a982a116b

已经不是第一次遇到Android Studio提示“gradle sync failed”的错误了,还是记录下来,免得又得烦。

原因一般是网络错误,导致Gradle不能下载项目相关的依赖包。于是配置网络代理,Android Studio的网络代理配置界面没有支持socks5。

解决方法,参考文章:
gradle代理 - 简书 - 蒸汽飞船
https://www.jianshu.com/p/7b3bc89d26e5

简单来说,就是不要用Android Studio设置网络代理。我选择修改$HOME/.gradle/gradle.properties文件,加上以下配置:

org.gradle.jvmargs=-DsocksProxyHost\=127.0.0.1 -DsocksProxyPort\=1080

白面包,小时候好像叫枕头面包。用最简单最基本的材料,却需要要求比较高的面团。已经做过几次了,除了第一次有点效果,后面两次都鼓不起来,确实感受到对面团的要求高。这个面包适合做早餐,因为做好后需要隔夜常温存放。由于没有味道,基本夹什么食材都可以。先看看小高姐的视频:

【小高姐】早餐白面包
https://www.bilibili.com/video/BV1Xg4y187BQ

总结如下:
1)材料
高筋面粉:360g
室温水:270g
酵母:4g
糖:12g
盐:2g
无盐黄油:25g(没有的话,可换成食用油)

2)工具
土司模具:1个

3)步骤
a)室温水加入酵母,搅匀。加入糖、盐,搅拌,再放入高筋面粉,混合成团(面团比较湿)。不用揉面,饧面20分钟,让面筋自己形成。
b)面筋形成后,放入无盐黄油。揉面,让黄油揉到面团里。再次饧面20分钟。
c)揉面1分钟,弄出光面,饧面(发酵)1小时,发到两倍大。
d)手粘上干面粉,把面团放到撒了干面粉桌面。面团分成3等分,分别擀平并排气,再卷起。可以按小姐的做法弄成3股辫子,也可以直接把3个卷放到土司模具。发酵1小时左右,发8到9分满。
e)表面刷黄油或蛋液,放到预热好的烤箱,190摄氏度烤35分钟。
f)放凉后用塑料袋密封,室温保存,第二天可切片食用。

特意买了红薯来做红薯饼。网站看了很多教程都没一个有准确的材料份量,就只好自己去尝试。第一次做出来效果还可以,记录一下:

材料
红薯:250g
糯米粉:100g
糖:30g
水:适量

步骤
1.红薯去皮,切成小粒,微波炉中火加热5分钟。建议先加热2分钟左右,拿出来翻一下,再继续加热。没微波炉,可以蒸熟。
2.熟了的红薯搅拌成泥,慢慢加入糯米粉和糖,混合成团。如果不能成团,可以加入适量的水。糯米粉和水的份量可以调节口感,越多糯米粉就越软。糖的份量可以根据个人口味调节。
3.根据个人喜好,分成等份的团。逐个搓圆并拍扁,弄成圆饼形状。其实弄成什么形状都可以,但不能弄得太薄,否则煎的时候不好翻面。
4.电磁炉开60到100度火力,放不粘锅上煎熟。60度比较容易控制,100度的话大概1分钟就焦了,然后翻面两次左右就熟了。厚的话,要煎久一点。

做起来非常简单,完全可以由小孩来做,我负责煎。

为了刷步数,做了摇步机。今天入手了直流减速电机,算是改成最简单的方案了。记录一下一路以来的方案与改良。

第一版,手机 + 9G舵机 + 微控制器

最初的版本采用Arduino Pro Micro来控制9G舵机。只是手头上正好有Pro Micro,也想试试控制舵机。刷步的原理是舵机左右摆动,把手机抬起一定的角度(大概30度)并迅速放下,刚好触发手机计步。最大缺点是摇步期间,没得用手机。

第二版,手环 + 9G舵机 + 微控制器

为了关闭计步软件的后台运行,也为了在摇步期间可以用手机,入手了小米手环2(便宜,但屏幕有老化bug,不建议入手)。每天晚上只需打开计步软件同步一下步数即可。摇步机的实现也改了一下,在舵机的转动端接上硬吸管,再挂上手环,舵机不断上下摆动,实现摇步。出于好奇和尝试,把控制器改为更便宜的ATTiny85(不到7rmb),后来不小心烧了控制器,回想这一决定真是明智。

这个版本用了满长的一段时间,后来CFO也要摇步,又再改良了一下。因为上下摆动两个手环,对于9G舵机来说,很吃力,于是改为抽拉的方式,舵机也从来回摆动改为连续转动(转一圈停一下)。机械原理是参考蒸汽火车的轮子。

特别版,手环 + 四足机械人

这期间做了个四足机械人(虽然目前还没写好程序…),绑上手环,一直做俯卧撑,也能摇步。但是一条腿3个舵机,四条退12个舵机,非常不划算。也只是玩玩而已。

第三版,手环 + 减速电机

前面两个版本有个很大的缺点,耗舵机,就是舵机容易坏。于是直接把坏了的舵机改为只能360度连续旋转的方式,并去掉了微控制器(也因为不小心烧掉了)。但是舵机的直流电机比较小,依然不耐用。既然都360度连续旋转了,就直接改用直流减速电机(拼多多3.9rmb/个),希望更耐用。试了下,只要3V供电,速度刚好。

整个过程,非常好玩,有点从原型到产品的感觉。

昨天发现Debian服务器上的Aria2居然不能下载https的链接,才发现编译安装时,忘了设置开启SSL的参数。还是记录一下,以免后面又犯错了。

关于编译安装的教程,可以直接查看官方说明:
https://github.com/aria2/aria2/blob/master/README.rst
https://aria2.github.io/manual/en/html/README.html#how-to-build

1. 安装相关依赖

详见官方文档。注意的是,Linux上,开启SSL,要安装openssllibssl-dev

2. 编译

官方文档已经很详细了,总结脚本如下:

$ git clone https://github.com/aria2/aria2.git
$ cd aria2
$ ./configure --without-gnutls --with-openssl
$ make
$ sudo cp ./src/aria2c /usr/local/bin/

3. 部署服务

关于Aria2配置文件的说明,参考官方文档:
https://aria2.github.io/manual/en/html/aria2c.html#aria2-conf
示例配置文件如下(参考路径:/etc/aria2/aria2.conf):

#OPTIONS
#下载路径
dir=/opt/aria2_download
#log路径
log=/var/log/aria2/aria2.log
#log-level: debug, info, notice, warn or error
log-level=warn
console-log-level=warn
#session
input-file=/var/cache/aria2/aria2.session
#最大下载数,默认5
max-concurrent-downloads=5
#校验完整性,只在bt下有效果,默认false
check-integrity=true
#断点续传
continue=true
 
#HTTP/FTP/SFTP Options
#同时连接的服务器数量,默认1
max-connection-per-server=5
#最大尝试次数,默认5
max-tries=20
#最小文件分割大小,默认20M
#min-split-size=20M
#单个文件最大线程,默认5
#split=5
#超时时间,默认60
#timeout=60
 
#BitTorrent Specific Options
#启用本地发现
bt-enable-lpd=true
#hash校验种子,默认true
bt-hash-check-seed=true
#最大打开文件数量,默认100
bt-max-open-files=200
#单个种子最大连接数
bt-max-peers=100
#在磁力下载中,保留torrent文件
bt-save-metadata=true
#监听端口,默认6881-6999
#listen-port=6881-6999
#最大上传限制,0是无限制
max-overall-upload-limit=100K
#下载完成后做种的设置
seed-ratio=1.0
seed-time=120
#bt-tracker=需要相关的服务地址
 
#RPC Options
#启用rpc
enable-rpc=true
#允许所有访问
rpc-allow-origin-all=true
#监听所有网络
rpc-listen-all=true
#监听端口
rpc-listen-port=6800
#rcp保存上传的元数据,默认false
rpc-save-upload-metadata=true
 
#Advanced Options
#下载时覆盖已经存在的文件,默认false
allow-overwrite=false
#此选项为true可能会导致下载进度丢失,默认false
allow-piece-length-change=true
#总是尝试恢复下载,默认true
always-resume=true
#指定dns服务器
#async-dns=true
#async-dns-server=8.8.4.4,208.67.222.222
#如果文件存在,自动重命名,仅适用于http,ftp
auto-file-renaming=true
#自动保存间隔,控制文件保存在.aria2中
auto-save-interval=60
#作为守护进程启用
daemon=true
#禁用ipv6
disable-ipv6=true
#磁盘缓存,默认16M
disk-cache=16M
#文件是否启用预先分配,默认prealloc
file-allocation=falloc
#最大下载结果在内存中保留数量,默认1000
max-download-result=500
#最大失败重试次数,默认0
max-resume-failure-tries=0
#下载完成时候执行的脚本
#on-bt-download-complete=/etc/aria2/on-bt-download-complete
#on-download-complete=/etc/aria2/on-download-complete
#on-download-error=/etc/aria2/on-download-error
#总体下载速度限制
max-overall-download-limit=1024K
#单个下载最大速度限制
max-download-limit=1024K
#保存下载进度,很有用的配置
save-session=/var/cache/aria2/aria2.session
#保存间隔,默认0
save-session-interval=60

# token验证
rpc-secret=123456

Systemd的服务配置文件(参考路径:/etc/systemd/system/aria2.service):

[Unit]
Description=Aria2 Service
After=network.target

[Service]
Type=forking
User=www-data
Group=www-data
WorkingDirectory=/var/cache/aria2
ExecStart=/usr/local/bin/aria2c --conf-path=/etc/aria2/aria2.conf -D
ExecReload=/usr/bin/kill -HUP $MAINPID
RestartSec=1min
Restart=on-failure

[Install]
WantedBy=multi-user.target

4. 客户端

我用yaaw,纯静态页面,服务器上部署个Nginx即可:
https://github.com/binux/yaaw