小记录

Home Assistant环境搭建

0 条评论 笔记 小记录 Yunoon

起因经过(概要

很久以前就想做智能家居整合了,但一直没找到时间,今天得空。
第一次尝试,开始是打算直接用pip装的,发现windows的环境会报c++ 14缺失 Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools最终的解决方案是,通过博客等方式了解信息,最终从下载下来一份VisualCppBuildTools_full,将这个安装后就可以使用了。(其实官网的也可以,但要在线下载,国内网络环境问题,这个问题在第二次尝试的时候解决的。)最终所有依赖包安装完毕后,发现不支持windows原生运行XD。

第二次尝试,在官网下载了安装镜像,但国内的环境让docker拉去镜像变得异常得慢,下了好几个小时都还没好,后面破防了,没有用这个方法。开始尝试第三种方法。
第三次尝试,直接拉docker容器发现还是拉的docker hub的镜像,通过更改为国内镜像解决问题。,这个可以,直接跑通,但后续还是有网络方面的问题。

最后对网络方面的问题就行总结一下,windows环境下,由于我用的是clash,无法对未配置的解析域名进行代理,从而导致的网络问题。后面在查阅clash官方文档发现可以用TAP模式(老版本没TUN模式),最后解决。在给VMware开了net模式后,可以直接走同一张网卡的流量,第二次尝试的问题就解决了。再来说第三次尝试的问题,虽然跑起来了,但是装hacs的时候发现还是出现代理问题,主要是GitHub的代理问题,我在有clash的设备上开启了允许局域网连接后,设置了git代理就最终解决了。目前已经可以把米家生态接入HomeKit了。

参考链接:
clash TAP配置:https://docs.cfw.lbyczf.com/contents/tap.html


LZ77算法学习

0 条评论 笔记 杂项 小记录 Yunoon

起因

没事打算啃下压缩算法原理

正文

压缩

  1. 直接开始写原理吧
  2. 比如个字符串aabcaacdcaaac, 我们设定一个为4的缓冲区。
  3. 步骤
    1. [...a]abcaacdcaaac aabcaacdcaaac
      1. 这里先丢一个进入缓冲区,由于缓冲区就一个字符其余都是null,因此就直接保留不需要替换。
    2. [..aa]bcaacdcaaac a(1,1)bcaacdcaaac
      1. 第二个a进入缓冲区的时候,就会对缓冲区内进行检索,发现a是重复的,然后再对第一个入缓冲区的a的右侧的字符进行匹配,发现第一个a的右侧是a,第二个a的右侧是b,因此就停止匹配。
      2. 这里就将原来的字符串进行更改,将第二个a更改为(1,1),括号中的第一个数字1是开始字符匹距离匹配字符的距离。这里可以把这个距离看成两个字符中间的字符+1,就比如在缓冲区域中的"aa",两个字符中间是没有字符的,所以其距离+1就为1。第二个数字则为连续匹配上的数字,这里连续匹配只连续匹配上了1个字符“a”因此结果就为1。
      3. 注意:这里的更改不会对这个字符串进行更改,而是对结果字符串进行更改,当前运行的字符串比如“abcaacdcaa”,查询时还是用缓冲区的方式查询[..aa]bcaacdcaa,但会在结果处理的时候创建一个字符串,是对这个字符串进行修改,这个时候结果字符串就变成了"a(1,1)bcaacdcaa"。
    3. [.aab]caacdcaaac a(1,1)bcaacdcaaac
      1. 当b进入缓冲区的时候,就对缓冲区内进行查找,发现没有匹配的就跳过,进行下一个字符的查找。
    4. [aabc]aacdcaaac a(1,1)bcaacdcaaac
      1. 当c进入缓冲区的时候,也是一样,就对缓冲区内进行查找,发现没有匹配的就跳过,进行下一个字符的查找。
    5. a[abca]acdcaaac a(1,1)bc(3,1)acdcaaac
      1. 当缓冲区满了过后,下一个字符进入缓冲区时,就会把缓冲区中最后一个字符挤出去(这里是从有右往左看)。
      2. 当a进入时进行匹配,发现能够匹配上最后的一个字符a,之间间隔了“bc”,因此他们的距离就是3。
      3. 然后查看连续字符,原有字符a的右边边为b,新加入的a的右边为c,因此无法连续,只有a一个连续字符,连续值就记为1。
    6. aa[bcaa]cdcaaac a(1,1)bc(3,1)(1,1)cdcaaac
      1. 当a入缓冲区的时候,匹配到的a,并且判断他们之间没有字符,因此距离为1。
      2. 并且原有字符a右侧是a,新加入字符右侧为c,因此停止匹配,连续值为1。
    7. aab[caac]dcaaac a(1,1)bc(3,1)(1,1)(3,1)dcaaac
      1. c加入后匹配到有c,距离为3。
      2. 原有c右侧为a,新加入c右侧为d,停止匹配,连续值为1。
    8. aabc[aacd]caaac a(1,1)bc(3,1)(1,1)(3,1)dcaaac
      1. 没有匹配跳过
    9. aabca[acdc]aaac a(1,1)bc(3,1)(1,1)(3,1)d(2,1)aaac
      1. 加入c后,匹配到c,距离为2。
      2. 原有c右侧为d,新加入c右侧为a,停止匹配,连续值为1.
    10. aabcaa[cdca]aac a(1,1)bc(3,1)(1,1)(3,1)d(2,1)aaac
      1. 加入a过后,没有匹配跳过。
    11. aabcaac[dcaa]ac a(1,1)bc(3,1)(1,1)(3,1)d(2,1)a(1,2)c
      1. 加入a后,匹配到a,距离为1。
      2. 原a右侧为a,新a右侧为a,加入a,连续值+1为2。此时缓冲区内为aabcaacd[caaa]c。进行下一次迭代匹配旧a右侧为a,新a右侧为c,终止匹配,连续值最终为2。
    12. aabcaacdc[aaac] a(1,1)bc(3,1)(1,1)(3,1)d(2,1)a(1,2)c
      1. 加入c后,没有匹配到内容,跳过。
  4. 结论
    1. 因此最终结果为a(1,1)bc(3,1)(1,1)(3,1)d(2,1)a(1,2)c ,这就是压缩到过程,压缩的好处就在于将原先的字符通过算法的方式变成了以数字存储的元组形式,这样能够有效压缩空间。比如一个字符a用ascii码来表示需要97,二进制表示为0110 0001,但如果变成了(1,1)这样或许会多出一些,但如果遇到连续的比如(10,9),这种就可以节约出很大一部分的空间。

解压

  1. 就不一个一个逆了,现在已经是凌晨了顶不住了。

  2. 直接贴文章的内容吧


    1. 压缩过的文本其实是由一系列的这种 (d, 1) 标记对和字母组成,标记对无法直接找到相匹配的字母。在解压过程中,字母保持不变,这种标记对转换为其指向位置的字母。下面看一个解压的例子:
    2. abc(3, 2)(1, 1)
    3. 复制代码字母 abc 保持不变,标记对 (3, 2) 表示从当前位置向左移动 3 个单位,然后取出 2 个字母,因此其转换为 ab。现在原始文本变成了这样 abcab(1, 1),最后的一个标记对表示从当前位置向左移动 1 个单位,然后取出 1 个字母,因此转换为 b。最终解压完成的文本为 abcabb。
  3. 就提一点,这个是从左往右看,就是反着来就行。具体看原理。

总结

我是犯了什么大病,大半夜跑来看算法原理,看完了还要写文章,写着写着又把自己绕进去了。

参考文章

https://juejin.cn/post/6844904168142929933


记录一次Pixel 3XL 使用启用电信模块的过程

0 条评论 笔记 杂项 小记录 Yunoon

起因

由于iPhone是单卡,Pixel也是单卡,我有两种卡,所以要这样,嗯对。

正文

  1. 解锁BL
    1. 进开发者模式
    2. 然后开OEM,adb调试
    3. 重启到fastboot adb reboot fastboot
    4. 在fastboot中开启BL fastboot unlock
  2. 装Magisk
    1. 去官网把Pixel 3XL的镜像下载来,拿到里面的boot.img。
    2. 下载地址:https://developers.google.com/android/images#crosshatch
    3. 手机装Magisk
    4. 把这个img放手机里,在手机上的Magisk中选安装->选择并修复一个文件—>选刚才放入手机中的boot.img,写入完成后会在Download文件夹下生成一个magisk_[xxxxx].img(xxxx会变动)。
    5. adb push ./boot.img /sdcard/Download/
      adb pull /sdcard/Download/magisk_patched-27000_PbD9p.img ./
    6. 把这个文件丢电脑中,重启到fastboot用fastboot刷入就可以了。命令fastboot flash boot [magiskxxx.img]
  3. 拉一个开源项目,有师傅讲原有的China Telecom Supporter改了过后就可以了,在Magisk中的模块是无法使用的,可能里面的参赛有变化。
  4. 具体操作可以看MD文件,这里就简单把原文贴出来。
    How to use this module:
    Since Magisk-Repo reject modules specific to certain devices, you need to install this module manually. Procedure are as follows:

    Packaging and send it to your phone

      git clone https://github.com/Yunoon/china_telecom_supporter
      cd china_telecom_supporter
    zip -r /tmp/china_telecom_supporter.zip *
    adb push /tmp/china_telecom_supporter.zip /sdcard/Download/

    Install it from Magisk Manager UI

    Go to "Magisk Manager -> Modules -> Install from storage", choose china_telecom_supporter.zip and install, reboot.


记录一次屏幕更换的过程

0 条评论 笔记 杂项 小记录 Yunoon

起因

努比亚Z17又又又坏了,这次是充电口的问题,想着买个尾插换了就行。然后其他工具都到了,尾插没到,寄!

打算先拆了等尾插到了再换,开工。
只有拆后才拍了照片,其他时候没照片。

正文

  1. 用加热台加热,让内部的胶水软化。
  2. 缓慢用吸盘吸屏幕,试着吸起来一个小缝,试着把卡片塞进去,慢慢地滑动。
  3. 这里就翻了车,由于卡片的插入没插到底,划开的地方是屏幕背光的区域。再幸亏没坏。将背光贴好后,继续用卡片划,最后成功拆除屏幕。
  4. 屏幕排线接口处有2颗螺丝,去掉后拆除屏幕。
  5. 小板是独立的,将下方的螺丝拆除后,撬动就可以取出。

  6. 这是准备装回去时就彻底翻车了,屏幕排线接口在这个位置。

    为了扣螺丝就没用手扶着屏幕,导致屏幕排线被拉扯断了,这个屏幕刚买来装完过后出现屏幕触摸不灵可能也是当时装这个屏幕时断了一部分,这次是彻底断了,所以只能再买一块。

总结

这次开始的加热以及卡片划动感觉已经做得很好了,就是在最后安装的时候操作不正确,导致翻车,吸取这次教训,以后如果有拆机的需求需要做到对排线仔细处理,不可马虎大意。

但这次也有一些可圈可点的地方,除了拆屏幕没翻车以外,还有螺丝的处理,对每一颗螺丝的位置进行仔细的定位以及用胶布来粘住。

以上就是对本次拆机翻车做的总结,下次一定好吧。


Miku 生日快乐

0 条评论 默认分类 小记录 Yunoon

未命名作品
摸了好久的鱼出来的画hhhhh