<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>郑羊羊咩的窝</title><description>Cup Pinkie</description><link>https://zyyme.com/</link><language>zh_CN</language><item><title>Blackmagic Camera App 3.5以上版本 自定义Live Stream直播推流配置</title><link>https://zyyme.com/blackmagic-camera-app-live-stream-xml.html</link><guid isPermaLink="true">https://zyyme.com/blackmagic-camera-app-live-stream-xml.html</guid><description>首先官方文档太老了，网上能找到的都是用于2.x版本的App的配置，而3.5版本的配置就完全不一样了，官方文档太老了，并且是针对Blackmagic Camera相机的而不是Blackmagic Camera App的，在App上不能用，甚至会闪退 咩咩测试了N次找到了正确的配置Key，实现了修改分辨率和修改码率 直播的分辨率跟随录制的的分辨率设置，编码器也是</description><pubDate>Wed, 21 Oct 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;首先官方文档太老了，网上能找到的都是用于2.x版本的App的配置，而3.5版本的配置就完全不一样了，官方文档太老了，并且是针对Blackmagic Camera相机的而不是Blackmagic Camera App的，在App上不能用，甚至会闪退&lt;br /&gt;
咩咩测试了N次找到了正确的配置Key，实现了修改分辨率和修改码率&lt;/p&gt;
&lt;p&gt;直播的分辨率跟随录制的的分辨率设置，编码器也是（注意一般rtsp只接受H264），帧率跟随左上角的帧率设置，直播的质量设置则是实时生效的（降码率很快，升码率有点慢）&lt;/p&gt;
&lt;p&gt;将配置文件保存成 &lt;code&gt;.xml&lt;/code&gt; 后缀的文件，在App的Live Stream设置的Platform最下面Import导入文件，然后勾选&lt;/p&gt;
&lt;p&gt;这是一个哔哩哔哩的推流服务设置，如果要推到其他地方，你只需要修改name和url就可以用&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;
&amp;lt;streaming&amp;gt;
    &amp;lt;service&amp;gt;
        &amp;lt;name&amp;gt;哔哩哔哩&amp;lt;/name&amp;gt;
        &amp;lt;servers&amp;gt;
            &amp;lt;server&amp;gt;
                &amp;lt;name&amp;gt;Server&amp;lt;/name&amp;gt;
                &amp;lt;url&amp;gt;rtmp://live-push.bilivideo.com/live-bvc/&amp;lt;/url&amp;gt;
            &amp;lt;/server&amp;gt;
        &amp;lt;/servers&amp;gt;
        &amp;lt;profiles&amp;gt;
            &amp;lt;profile&amp;gt;
                &amp;lt;name&amp;gt;Streaming High&amp;lt;/name&amp;gt;
                &amp;lt;config resolution=&quot;2160p&quot; fps=&quot;60&quot;&amp;gt;
                    &amp;lt;bitrate&amp;gt;40000000&amp;lt;/bitrate&amp;gt;
                    &amp;lt;audio-bitrate&amp;gt;192000&amp;lt;/audio-bitrate&amp;gt;
                    &amp;lt;keyframe-interval&amp;gt;2&amp;lt;/keyframe-interval&amp;gt;
                &amp;lt;/config&amp;gt;
                &amp;lt;config resolution=&quot;1080p&quot; fps=&quot;60&quot;&amp;gt;
                    &amp;lt;bitrate&amp;gt;20000000&amp;lt;/bitrate&amp;gt;
                    &amp;lt;audio-bitrate&amp;gt;128000&amp;lt;/audio-bitrate&amp;gt;
                    &amp;lt;keyframe-interval&amp;gt;2&amp;lt;/keyframe-interval&amp;gt;
                &amp;lt;/config&amp;gt;
                &amp;lt;config resolution=&quot;2160p&quot; fps=&quot;30&quot;&amp;gt;
                    &amp;lt;bitrate&amp;gt;20000000&amp;lt;/bitrate&amp;gt;
                    &amp;lt;audio-bitrate&amp;gt;192000&amp;lt;/audio-bitrate&amp;gt;
                    &amp;lt;keyframe-interval&amp;gt;2&amp;lt;/keyframe-interval&amp;gt;
                &amp;lt;/config&amp;gt;
                &amp;lt;config resolution=&quot;1080p&quot; fps=&quot;30&quot;&amp;gt;
                    &amp;lt;bitrate&amp;gt;10000000&amp;lt;/bitrate&amp;gt;
                    &amp;lt;audio-bitrate&amp;gt;128000&amp;lt;/audio-bitrate&amp;gt;
                    &amp;lt;keyframe-interval&amp;gt;2&amp;lt;/keyframe-interval&amp;gt;
                &amp;lt;/config&amp;gt;
                &amp;lt;config resolution=&quot;720p&quot; fps=&quot;30&quot;&amp;gt;
                    &amp;lt;bitrate&amp;gt;4000000&amp;lt;/bitrate&amp;gt;
                    &amp;lt;audio-bitrate&amp;gt;128000&amp;lt;/audio-bitrate&amp;gt;
                    &amp;lt;keyframe-interval&amp;gt;2&amp;lt;/keyframe-interval&amp;gt;
                &amp;lt;/config&amp;gt;
            &amp;lt;/profile&amp;gt;
            &amp;lt;profile&amp;gt;
                &amp;lt;name&amp;gt;Streaming Medium&amp;lt;/name&amp;gt;
                &amp;lt;config resolution=&quot;2160p&quot; fps=&quot;30&quot;&amp;gt;
                    &amp;lt;bitrate&amp;gt;15000000&amp;lt;/bitrate&amp;gt;
                    &amp;lt;audio-bitrate&amp;gt;192000&amp;lt;/audio-bitrate&amp;gt;
                    &amp;lt;keyframe-interval&amp;gt;2&amp;lt;/keyframe-interval&amp;gt;
                &amp;lt;/config&amp;gt;
                &amp;lt;config resolution=&quot;1080p&quot; fps=&quot;30&quot;&amp;gt;
                    &amp;lt;bitrate&amp;gt;8000000&amp;lt;/bitrate&amp;gt;
                    &amp;lt;audio-bitrate&amp;gt;128000&amp;lt;/audio-bitrate&amp;gt;
                    &amp;lt;keyframe-interval&amp;gt;2&amp;lt;/keyframe-interval&amp;gt;
                &amp;lt;/config&amp;gt;
                &amp;lt;config resolution=&quot;720p&quot; fps=&quot;30&quot;&amp;gt;
                    &amp;lt;bitrate&amp;gt;4000000&amp;lt;/bitrate&amp;gt;
                    &amp;lt;audio-bitrate&amp;gt;128000&amp;lt;/audio-bitrate&amp;gt;
                    &amp;lt;keyframe-interval&amp;gt;2&amp;lt;/keyframe-interval&amp;gt;
                &amp;lt;/config&amp;gt;
            &amp;lt;/profile&amp;gt;
            &amp;lt;profile&amp;gt;
                &amp;lt;name&amp;gt;Streaming Low&amp;lt;/name&amp;gt;
                &amp;lt;config resolution=&quot;2160p&quot; fps=&quot;30&quot;&amp;gt;
                    &amp;lt;bitrate&amp;gt;12000000&amp;lt;/bitrate&amp;gt;
                    &amp;lt;audio-bitrate&amp;gt;160000&amp;lt;/audio-bitrate&amp;gt;
                    &amp;lt;keyframe-interval&amp;gt;2&amp;lt;/keyframe-interval&amp;gt;
                &amp;lt;/config&amp;gt;
                &amp;lt;config resolution=&quot;1080p&quot; fps=&quot;30&quot;&amp;gt;
                    &amp;lt;bitrate&amp;gt;6000000&amp;lt;/bitrate&amp;gt;
                    &amp;lt;audio-bitrate&amp;gt;128000&amp;lt;/audio-bitrate&amp;gt;
                    &amp;lt;keyframe-interval&amp;gt;2&amp;lt;/keyframe-interval&amp;gt;
                &amp;lt;/config&amp;gt;
                &amp;lt;config resolution=&quot;720p&quot; fps=&quot;30&quot;&amp;gt;
                    &amp;lt;bitrate&amp;gt;3000000&amp;lt;/bitrate&amp;gt;
                    &amp;lt;audio-bitrate&amp;gt;128000&amp;lt;/audio-bitrate&amp;gt;
                    &amp;lt;keyframe-interval&amp;gt;2&amp;lt;/keyframe-interval&amp;gt;
                &amp;lt;/config&amp;gt;
            &amp;lt;/profile&amp;gt;
        &amp;lt;/profiles&amp;gt;
    &amp;lt;/service&amp;gt;
&amp;lt;/streaming&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;其中 &lt;code&gt;config&lt;/code&gt; 中的 &lt;code&gt;resolution&lt;/code&gt; 必须是我这样的配置，必须有 &lt;code&gt;1080p&lt;/code&gt; ， &lt;code&gt;HD&lt;/code&gt; ， &lt;code&gt;4K&lt;/code&gt; 这些配置会闪退，也必须包含 &lt;code&gt;fps&lt;/code&gt; 和 &lt;code&gt;30&lt;/code&gt;，如果你使用的fps在配置里没有，他会用 &lt;code&gt;30&lt;/code&gt; 对应的码率，另外 &lt;code&gt;bitrate&lt;/code&gt; 的 &lt;code&gt;10000000&lt;/code&gt; 就是10M码率，而 &lt;code&gt;audio-bitrate&lt;/code&gt; 只能是128k，他好像只支持这个，如果配置对不上，需要重新选一下设置里的质量&lt;/p&gt;
&lt;p&gt;如果你不想要那么多，只是想改个码率，默认会回退到分辨率 &lt;code&gt;1080p&lt;/code&gt; ，帧率 &lt;code&gt;30&lt;/code&gt; 的配置的码率，所以只写这个也行&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;
&amp;lt;streaming&amp;gt;
    &amp;lt;service&amp;gt;
        &amp;lt;name&amp;gt;本地2.106&amp;lt;/name&amp;gt;
        &amp;lt;servers&amp;gt;
            &amp;lt;server&amp;gt;
                &amp;lt;name&amp;gt;Server&amp;lt;/name&amp;gt;
                &amp;lt;url&amp;gt;srt://192.168.2.106:8890/&amp;lt;/url&amp;gt;
            &amp;lt;/server&amp;gt;
        &amp;lt;/servers&amp;gt;
        &amp;lt;profiles&amp;gt;
            &amp;lt;profile&amp;gt;
                &amp;lt;name&amp;gt;Streaming High&amp;lt;/name&amp;gt;
                &amp;lt;config resolution=&quot;1080p&quot; fps=&quot;30&quot;&amp;gt;
                    &amp;lt;bitrate&amp;gt;10000000&amp;lt;/bitrate&amp;gt;
                    &amp;lt;audio-bitrate&amp;gt;128000&amp;lt;/audio-bitrate&amp;gt;
                    &amp;lt;keyframe-interval&amp;gt;2&amp;lt;/keyframe-interval&amp;gt;
                &amp;lt;/config&amp;gt;
            &amp;lt;/profile&amp;gt;
        &amp;lt;/profiles&amp;gt;
    &amp;lt;/service&amp;gt;
&amp;lt;/streaming&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;比如上面这个配置就可以配合mediamtx使用&lt;br /&gt;
因为是srt，那key的位置就需要填&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;publish:1
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果你想用rtmp（只支持H264），那就把url那行改成&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;url&amp;gt;rtmp://192.168.2.106:1935/&amp;lt;/url&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;key的位置就填&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;1
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;然后可以拉流&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;http://127.0.0.1:8888/live/1/index.m3u8
rtsp://127.0.0.1:8554/1
rtmp://127.0.0.1:1935/1
srt://127.0.0.1:8890/?streamid=read:1
# 或者浏览器打开
http://127.0.0.1:8889/1
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>解决iOS27录制的视频上传转码失败或无声的问题</title><link>https://zyyme.com/fix-ios27-video-upload-convert-fail.html</link><guid isPermaLink="true">https://zyyme.com/fix-ios27-video-upload-convert-fail.html</guid><description>首先罪魁祸首是因为iOS27修改了录像的空间音频的文件容器内容 现在他是这样的 Metadata: majorbrand : qt minorversion : 0 compatiblebrands: qt creationtime : 2026-09-13T17:10:21.000000Z com.apple.quicktime.location.accu</description><pubDate>Mon, 14 Sep 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;首先罪魁祸首是因为iOS27修改了录像的空间音频的文件容器内容&lt;br /&gt;
现在他是这样的&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;  Metadata:
    major_brand     : qt
    minor_version   : 0
    compatible_brands: qt
    creation_time   : 2026-09-13T17:10:21.000000Z
    com.apple.quicktime.location.accuracy.horizontal: 8.388570
    com.apple.quicktime.full-frame-rate-playback-intent: 0
    com.apple.quicktime.make: Apple
    com.apple.quicktime.model: iPhone 17
    com.apple.quicktime.software: 27.0
    com.apple.quicktime.creationdate: 2026-09-14T01:03:46+0800
  Duration: 00:01:29.64, start: 0.000000, bitrate: 13762 kb/s
  Stream #0:0[0x1](und): Video: hevc (Main 10) (hvc1 / 0x31637668), yuv420p10le(tv, bt2020nc/bt2020/arib-std-b67), 1920x1080, 13149 kb/s, 59.97 fps, 60 tbr, 600 tbn (default)
    Metadata:
      creation_time   : 2026-09-13T17:10:21.000000Z
      handler_name    : Core Media Video
      vendor_id       : [0][0][0][0]
      encoder         : HEVC
    Side data:
      DOVI configuration record: version: 1.0, profile: 8, level: 5, rpu flag: 1, el flag: 0, bl flag: 1, compatibility id: 4, compression: 0
      Ambient viewing environment: ambient_illuminance=314.000000, ambient_light_x=0.312700, ambient_light_y=0.329000
  Stream #0:1[0x2](und): Audio: none (apac / 0x63617061), 48000 Hz, 4.0, 396 kb/s (default)
    Metadata:
      creation_time   : 2026-09-13T17:10:21.000000Z
      handler_name    : Core Media Audio
      vendor_id       : [0][0][0][0]
  Stream #0:2[0x3](und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 196 kb/s
    Metadata:
      creation_time   : 2026-09-13T17:10:21.000000Z
      handler_name    : Core Media Audio
      vendor_id       : [0][0][0][0]
  Stream #0:3[0x4](und): Data: none (mebx / 0x7862656D), 5 kb/s (default)
    Metadata:
      creation_time   : 2026-09-13T17:10:21.000000Z
      handler_name    : Core Media Metadata
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;说人话的话就是在这个MOV容器中&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;0:0 视频 hevc 正常，iPhone 的 H.265 10-bit，还带 Dolby Vision
0:1 音频 none (apac) Apple 空间音频，FFmpeg 不认
0:2 音频 aac 正常立体声
0:3 数据 none (mebx) Apple 元数据轨，FFmpeg 不认
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;第一个音频轨道，也就是默认的音频轨道是&lt;br /&gt;
apac，但是像哔哩，某音这些国内平台，他都是没有apac解码器的，但他不会使用第二条aac的轨道，于是哔哩就炸了，转码失败，某音就没有声音，反观国外的YTB就适配的很快，转码没问题，也有声音&lt;br /&gt;
那怎么解决呢，很简单啊&lt;br /&gt;
首先你需要安装ffmpeg并配置到PATH，或者你直接在ffmpeg的目录打开命令行，cmd或者powershell或者bash或者zsh之类的都可以&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ffmpeg -i 把文件拖进来 -map 0:v:0 -map 0:a:1 -c copy 输出文件名.mkv
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这样转换后，视频就能正常上传和转码了&lt;/p&gt;
</content:encoded></item><item><title>作业帮w80博学版Linux词典笔</title><link>https://zyyme.com/zyb-w80.html</link><guid isPermaLink="true">https://zyyme.com/zyb-w80.html</guid><description>配置是‌展锐SL8541E 1G+16G，对于一个词典笔来说还算豪华，但是自带没有任何文件管理之类的功能，这很学习机 手上有一个工程机，是工厂测试系统，正式版的机器我也不知道点10下SN的那个密码是什么，因此无法开启ADB，因此以下内容都是建立在你已经开启了ADB的前提下 更多系统信息 root@sl8541e-smartpen32:/ cat /etc/o</description><pubDate>Sun, 26 Jul 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;配置是‌展锐SL8541E 1G+16G，对于一个词典笔来说还算豪华，但是自带没有任何文件管理之类的功能，这很学习机&lt;/p&gt;
&lt;p&gt;手上有一个工程机，是工厂测试系统，正式版的机器我也不知道点10下SN的那个密码是什么，因此无法开启ADB，因此以下内容都是建立在你已经开启了ADB的前提下&lt;/p&gt;
&lt;h3&gt;更多系统信息&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;root@sl8541e-smartpen32:/ # cat /etc/os-release
ID=&quot;unisoc-wayland&quot;
NAME=&quot;unisoc-wayland-distro&quot;
VERSION=&quot;sl8541e-smartpen32+unisoc-initgc-1.0+W22.35.2:01.51.45+userdebug+native (sumo)&quot;
VERSION_ID=&quot;sl8541e-smartpen32-unisoc-initgc-1.0-w22.35.2:01.51.45-userdebug-native&quot;
PRETTY_NAME=&quot;unisoc-wayland-distro sl8541e-smartpen32+unisoc-initgc-1.0+W22.35.2:01.51.45+userdebug+native (sumo)&quot;
root@sl8541e-smartpen32:/ # uname -a
Linux sl8541e-smartpen32 4.14.174 #1 SMP PREEMPT Mon Aug 29 18:15:45 UTC 2022 armv7l armv7l armv7l GNU/Linux
root@sl8541e-smartpen32:/ # opkg print-architecture
arch all 1
arch any 6
arch noarch 11
arch armv5hf-vfp 16
arch armv5thf-vfp 21
arch armv5ehf-vfp 26
arch armv5tehf-vfp 31
arch armv6hf-vfp 36
arch armv6thf-vfp 41
arch armv7ahf-vfp 46
arch armv7at2hf-vfp 51
arch sl8541e_smartpen32 56
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;屏幕是240x960然后旋转了90度，但是系统里读到的是480x960，非常抽象&lt;/p&gt;
&lt;h2&gt;连Wi-Fi&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;connmanctl
enable wifi
agent on
scan wifi
services
# 会输出扫描到的wifi
connect 复制名字右侧那串
# 输入密码按回车就连上了
quit
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;安装 工作咩闹钟&lt;/h2&gt;
&lt;p&gt;其实下载直接运行 &lt;code&gt;workdayAlarmClock-linux-arm&lt;/code&gt; 就可以&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;mkdir /home/root/workdayAlarmClock
cd /home/root/workdayAlarmClock
curl -L -o workdayAlarmClock-linux-arm https://github.com/zanjie1999/workdayAlarmClockGo/releases/latest/download/workdayAlarmClock-linux-arm
chmod +x workdayAlarmClock-linux-arm
./workdayAlarmClock-linux-arm
# 输入exit可以退出
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;增加开机启动&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;mount -o rw,remount /
printf &apos;%s\
&apos; \
&apos;#!/bin/sh&apos; \
&apos;case &quot;$1&quot; in&apos; \
&apos;  start)&apos; \
&apos;    cd /home/root/workdayAlarmClock || exit 1&apos; \
&apos;    start-stop-daemon --start --background --exec /home/root/workdayAlarmClock/workdayAlarmClock-linux-arm&apos; \
&apos;    ;;&apos; \
&apos;  stop)&apos; \
&apos;    start-stop-daemon --stop --exec /home/root/workdayAlarmClock/workdayAlarmClock-linux-arm&apos; \
&apos;    ;;&apos; \
&apos;esac&apos; \
&apos;exit 0&apos; \
&amp;gt; /etc/init.d/workdayAlarmClock

chmod +x /etc/init.d/workdayAlarmClock
ln -s /etc/init.d/workdayAlarmClock /etc/rcS.d/S90workdayAlarmClock
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;然后就可以用 &lt;code&gt;/etc/init.d/workdayAlarmClock start&lt;/code&gt; 来启动了&lt;br /&gt;
启动后用浏览器访问设备ip的8080端口即可看到web控制台&lt;/p&gt;
&lt;h3&gt;关闭测试界面&lt;/h3&gt;
&lt;p&gt;测试界面是一个QT程序，用Wayland显示，可以临时杀掉&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;killall demotest
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果想让他不开机启动，可以删掉&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;rm /etc/rc5.d/S99qtdemo-init
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;恢复&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cd /etc/rc5.d
ln -s ../init.d/qtdemo-init S99qtdemo-init
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;然后就可以自由的运行Wayland程序了，自带一个weston桌面环境&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;export XDG_RUNTIME_DIR=/run/user/0
export WAYLAND_DISPLAY=wayland-0
# 运行你的程序 比如自带的终端
weston-terminal --help
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>在Ubuntu不用snap安装Chromium</title><link>https://zyyme.com/ubuntu-chrome-no-snap.html</link><guid isPermaLink="true">https://zyyme.com/ubuntu-chrome-no-snap.html</guid><description>Ubuntu官方仓库真是罪大恶极，特别是Ubuntu26，如果使用自带的商店打开deb安装都会自动创建snap，但是你用dpkg直接装就没问题 Google也是不知道怎么回事，都2026年了还没有arm64的Chrome，只能用Chromium，而Chromium不能登录Google账户进行同步 目前官方仓库的chromium-browser就是一个snap</description><pubDate>Sat, 27 Jun 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Ubuntu官方仓库真是罪大恶极，特别是Ubuntu26，如果使用自带的商店打开deb安装都会自动创建snap，但是你用dpkg直接装就没问题&lt;br /&gt;
Google也是不知道怎么回事，都2026年了还没有arm64的Chrome，只能用Chromium，而Chromium不能登录Google账户进行同步&lt;br /&gt;
目前官方仓库的chromium-browser就是一个snap包chromium的启动器（你可以理解成快捷方式），如果你想普普通通的安装一个chromium，那你只需要：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo apt update
sudo apt install -y software-properties-common

sudo add-apt-repository -y ppa:xtradeb/apps
sudo apt update

sudo apt install -y chromium
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;就能装上了&lt;/p&gt;
</content:encoded></item><item><title>修复GLiNet路由器使用AP模式时Wi-Fi设备无法互联的问题</title><link>https://zyyme.com/fix-glinet-ap-arp.html</link><guid isPermaLink="true">https://zyyme.com/fix-glinet-ap-arp.html</guid><description>这个抽象bug已经困扰我一年了，自从去年5月开始用BE6500（就用来做AP啥也没装），每隔一段时间（短则几天，长则一两周）Wi-Fi设备就会出现无法互联的情况，具体表现为无法ping，无法进行tcp连接，就像开了客户端隔离一样 2026/10/19更新： 发现之前的解决方案好像治标不治本，虽然解决了无法连接的问题，但是时间长了会明显感觉到网络延迟变大变慢（</description><pubDate>Tue, 23 Jun 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;这个抽象bug已经困扰我一年了，自从去年5月开始用BE6500（就用来做AP啥也没装），每隔一段时间（短则几天，长则一两周）Wi-Fi设备就会出现无法互联的情况，具体表现为无法ping，无法进行tcp连接，就像开了客户端隔离一样&lt;/p&gt;
&lt;p&gt;2026/10/19更新：&lt;br /&gt;
发现之前的解决方案好像治标不治本，虽然解决了无法连接的问题，但是时间长了会明显感觉到网络延迟变大变慢（测速没问题）&lt;br /&gt;
于是又研究了一下，发现GL-Inet所有Wi-Fi7路由器的MLO+WPA3的组合下，连接不支持Wi-Fi7的设备，都会有问题，具体是WPA3强制绑定了PMF开启，PMF开启后MLO就有Bug&lt;br /&gt;
那解决方案就很简单了，要么关掉MLO当个Wi-Fi6路由器用，要么关掉WPA3，用纯WPA2，那我选把MLO的Wi-Fi的加密方式改成WPA2&lt;br /&gt;
注意了，WPA3换WPA2需要把Windows电脑上的Wi-Fi忘记了重新连，不然会一直自动断开！！！&lt;br /&gt;
另外还有个暗坑，GL-Inet的路由器在防火墙里有一条1秒25的ARP限速规则，设备多的时候可能会不够&lt;br /&gt;
另外还发现了一个问题，不知道为什么在AP模式下iPv6的DHCP是开着的，这样电脑上会有两个局域网IP，其中有一个永远不通，那我们给他关了&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;/etc/init.d/odhcpd stop
/etc/init.d/odhcpd disable
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;p&gt;昨天又出现了，实在是受不了时不时给他重启一下这种操作了，花了45分钟研究了一下：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;首先，我需要访问我一台安卓手机上的工作咩闹钟服务，使用iPhone可以访问，使用iPad不能访问，使用电脑不能访问，但是使用有线连接使用主路由可以访问，但是把iPhone的wifi关掉再开，访问不了了&lt;/li&gt;
&lt;li&gt;在主路由抓包，发现收到了电脑ping时发送的who-has arp包，但是没收到那个安卓机发送的reply包，但是如果在主路由上ping，来回的arp包都有，arp表正常&lt;/li&gt;
&lt;li&gt;在AP上抓包，发现也能收到电脑发送的who-has arp包，但是也收不到reply包，arp表有问题，只有v6地址，没有v4，说明是AP有问题&lt;/li&gt;
&lt;li&gt;让电脑和手机都连接wpa2的2.4g wifi，排除了wifi7的mlo问题，依然不能ping&lt;/li&gt;
&lt;li&gt;wifi和有线的交换是要走CPU的，wifi和wifi或许有硬件加速呢？关闭BE6500d的硬件加速，还是不行&lt;/li&gt;
&lt;li&gt;那既然是arp包收不到，会不会被过滤了呢？关掉AP的arp filter，成功了&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;那么问题很明显了，这arp过滤器有bug，他把不应该过滤的过滤掉了，毕竟他是AP模式，扫不到v4的arp表好像也正常&lt;br /&gt;
解决方案就是开机运行这四条命令，把filter关了&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;echo 0 &amp;gt; /proc/sys/net/ipv4/conf/all/arp_filter
echo 0 &amp;gt; /proc/sys/net/ipv4/conf/default/arp_filter
echo 0 &amp;gt; /proc/sys/net/ipv4/conf/all/rp_filter
echo 0 &amp;gt; /proc/sys/net/ipv4/conf/default/rp_filter
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;先直接运行一下，让他实时生效，然后&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;vi /etc/rc.local
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;按 i 进入编辑模式，把这4行加到最后的 exit 0 的前面，按esc键退出编辑模式，输入 :wq 然后按回车保存退出&lt;/p&gt;
</content:encoded></item><item><title>使用Windows自带命令实现一键增量同步 robocopy</title><link>https://zyyme.com/robocopy.html</link><guid isPermaLink="true">https://zyyme.com/robocopy.html</guid><description>你是否有备份的烦恼，每次手动一点点找到更新的文件复制粘贴，或是全部重新拷贝一遍，费时费力？ 其实不需要安装任何软件，Windows自带的robocopy命令就可以完成这一切 新建一个文本文档，把以下内容贴进去，并把后缀改成bat @echo off %1 mshta vbscript:CreateObject(&quot;Shell.Application&quot;).She</description><pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;你是否有备份的烦恼，每次手动一点点找到更新的文件复制粘贴，或是全部重新拷贝一遍，费时费力？&lt;br /&gt;
其实不需要安装任何软件，Windows自带的robocopy命令就可以完成这一切&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;新建一个文本文档，把以下内容贴进去，并把后缀改成bat&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;@echo off
%1 mshta vbscript:CreateObject(&quot;Shell.Application&quot;).ShellExecute(&quot;cmd.exe&quot;,&quot;/c %~s0 ::&quot;,&quot;&quot;,&quot;runas&quot;,1)(window.close)&amp;amp;&amp;amp;exit
cd /d &quot;%~dp0&quot;

rem 用robocopy来增量复制    zyyme 20250730
rem 参数必须写在最后  /xd 多个忽略目录 /xf 多个忽略文件 /e 复制子目录但不删除多余文件 /mir 复制子目录并删除多余文件 /z 断点续传 /copyall 复制所有属性

robocopy &quot;F:\视频录制&quot; &quot;视频录制&quot; /xd 已投稿 /mir /z
robocopy &quot;E:\音乐&quot; &quot;音乐&quot; /e /z
robocopy  &quot;D:/&quot; &quot;itxFiles&quot; /xd &quot;$RECYCLE.BIN&quot; /xd &quot;System Volume Information&quot;  /xd &quot;OneDriveTemp&quot; /xd &quot;OneDrive&quot; /mir /z

msg * /time:15 同步完成
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;以后只需要双击运行那个bat文件就可以同步了，如果有弹窗就点 是，同步完成会有弹窗提示&lt;/p&gt;
&lt;h3&gt;那么如何自定义同步的文件夹呢&lt;/h3&gt;
&lt;p&gt;修改文件中的3行&lt;br /&gt;
robocopy开头的为同步命令，用空格分割&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;robocopy &quot;来源路径&quot; &quot;目标路径&quot; /mir /z
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;你可以在文件夹上右键来复制路径&lt;/p&gt;
&lt;p&gt;其中/开头的部分为参数，写在最后&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;/xd 多个忽略目录 /xf 多个忽略文件 /e 复制子目录但不删除多余文件 /mir 复制子目录并删除多余文件 /z 断点续传 /copyall 复制所有属性
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;举个栗子&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;robocopy &quot;F:\视频录制&quot; &quot;视频录制&quot; /xd 已投稿 /mir /z
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;就是将 F:\视频录制 增量镜像同步到脚本旁边的 视频录制 文件夹，并跳过里面的 已投稿 文件夹&lt;/p&gt;
&lt;p&gt;再举个栗子&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;robocopy &quot;E:\音乐&quot; &quot;音乐&quot; /e /z
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;就是将 E:\音乐 增量复制到脚本旁边的 音乐 文件夹，音乐 文件夹中有的文件，但是 E:\音乐 里没有的，会保留，不会删除。就像你你平时用的复制粘贴，并点击跳过重复文件，但是重复文件如果变化了，也会重新复制过去&lt;/p&gt;
&lt;p&gt;再再举个例子&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;robocopy  &quot;D:/&quot; &quot;itxFiles&quot; /xd &quot;$RECYCLE.BIN&quot; /xd &quot;System Volume Information&quot;  /xd &quot;OneDriveTemp&quot; /xd &quot;OneDrive&quot; /mir /z
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;就是将整个 D盘 增量镜像同步到脚本旁边的 itxFiles 文件夹，并且跳过同步回收站、OneDrive、以及两个临时目录&lt;/p&gt;
</content:encoded></item><item><title>解决M1系列mac扬声器间歇破音问题</title><link>https://zyyme.com/fix-m1-mac-speaker-cracking.html</link><guid isPermaLink="true">https://zyyme.com/fix-m1-mac-speaker-cracking.html</guid><description>打开终端，使用外放播放音乐，运行这个清理内存的命令，如果出现了噼里啪啦的破音声，那说明这篇文章可以解决你的问题 sudo purge 密码输入你的解锁密码 问题的原因很简单，因为m系列cpu跟a系列手机cpu一样，外放是纯cpu软件处理的，没有硬件加速，所以在cpu时间竞争（不够用了）的时候就会破音，罪魁祸首就是这些HAL驱动： cd /Library/Au</description><pubDate>Mon, 06 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;打开终端，使用外放播放音乐，运行这个清理内存的命令，如果出现了噼里啪啦的破音声，那说明这篇文章可以解决你的问题&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo purge
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;密码输入你的解锁密码&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;问题的原因很简单，因为m系列cpu跟a系列手机cpu一样，外放是纯cpu软件处理的，没有硬件加速，所以在cpu时间竞争（不够用了）的时候就会破音，罪魁祸首就是这些HAL驱动：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cd /Library/Audio/Plug-Ins/HAL/
ls
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;你可以通过删除HAL驱动来减少处理需要的时间，比如把毒瘤ToDesk的移走，不过这样被远程连接的时候就没声音了：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;mkdir ~/HAL
sudo mv ToDeskOutputDriver.driver ~/HAL/
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;一般移走ToDesk的就可以了，因为就他最慢，最后重启一下音频服务&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo pkill coreaudiod
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这时候破音的问题应该就解决了，或许进行purge还会有一点破音，但也比最初好太多了吧&lt;/p&gt;
</content:encoded></item><item><title>ChromeOS自动登录</title><link>https://zyyme.com/chromeos-auto-login.html</link><guid isPermaLink="true">https://zyyme.com/chromeos-auto-login.html</guid><description>使用Python3调用系统的uinput来模拟键盘输入密码/PIN 首先需要先开启开发者模式，这个每个型号可能不太一样，自己找教程 解除 rootfs 只读限制（如果还没做） bash sudo /usr/share/vboot/bin/makedevssd.sh --removerootfsverification sudo reboot 这个据说可以跳过</description><pubDate>Fri, 27 Feb 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;使用Python3调用系统的uinput来模拟键盘输入密码/PIN&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;首先需要先开启开发者模式，这个每个型号可能不太一样，自己找教程&lt;/p&gt;
&lt;p&gt;解除 rootfs 只读限制（如果还没做）&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo /usr/share/vboot/bin/make_dev_ssd.sh --remove_rootfs_verification
sudo reboot
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这个据说可以跳过跳过开发者模式30秒等待界面（我的机器到我手上已经是只有3秒了）&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo crossystem dev_default_boot=disk
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;将这两个文件放到指定路径：&lt;br /&gt;
文件 &lt;code&gt;/usr/local/bin/autologin_type.py&lt;/code&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#!/usr/bin/env python3
&quot;&quot;&quot;通过 /dev/uinput 模拟键盘输入，用于 ChromeOS 自动登录&quot;&quot;&quot;
import struct, time, sys, fcntl, os

UI_SET_EVBIT = 0x40045564
UI_SET_KEYBIT = 0x40045565
UI_DEV_CREATE = 0x5501
UI_DEV_DESTROY = 0x5502
EV_SYN = 0x00
EV_KEY = 0x01
SYN_REPORT = 0x00
KEY_ENTER = 28
KEY_LEFTSHIFT = 42

KEYMAP = {
    &apos;a&apos;: (30, False), &apos;b&apos;: (48, False), &apos;c&apos;: (46, False), &apos;d&apos;: (32, False),
    &apos;e&apos;: (18, False), &apos;f&apos;: (33, False), &apos;g&apos;: (34, False), &apos;h&apos;: (35, False),
    &apos;i&apos;: (23, False), &apos;j&apos;: (36, False), &apos;k&apos;: (37, False), &apos;l&apos;: (38, False),
    &apos;m&apos;: (50, False), &apos;n&apos;: (49, False), &apos;o&apos;: (24, False), &apos;p&apos;: (25, False),
    &apos;q&apos;: (16, False), &apos;r&apos;: (19, False), &apos;s&apos;: (31, False), &apos;t&apos;: (20, False),
    &apos;u&apos;: (22, False), &apos;v&apos;: (47, False), &apos;w&apos;: (17, False), &apos;x&apos;: (45, False),
    &apos;y&apos;: (21, False), &apos;z&apos;: (44, False),
    &apos;1&apos;: (2, False), &apos;2&apos;: (3, False), &apos;3&apos;: (4, False), &apos;4&apos;: (5, False),
    &apos;5&apos;: (6, False), &apos;6&apos;: (7, False), &apos;7&apos;: (8, False), &apos;8&apos;: (9, False),
    &apos;9&apos;: (10, False), &apos;0&apos;: (11, False),
}

def write_event(fd, ev_type, code, value):
    t = time.time()
    sec = int(t)
    usec = int((t - sec) * 1000000)
    fd.write(struct.pack(&apos;llHHi&apos;, sec, usec, ev_type, code, value))
    fd.flush()

def setup_uinput():
    fd = open(&apos;/dev/uinput&apos;, &apos;wb&apos;)
    fcntl.ioctl(fd, UI_SET_EVBIT, EV_KEY)
    all_keys = set(kc for kc, _ in KEYMAP.values())
    all_keys.add(KEY_ENTER)
    all_keys.add(KEY_LEFTSHIFT)
    for key in all_keys:
        fcntl.ioctl(fd, UI_SET_KEYBIT, key)
    name = b&apos;autologin-kbd&apos; + b&apos;\&apos; * 67
    fd.write(name)
    fd.write(struct.pack(&apos;HHHHi&apos;, 0x03, 0x01, 0x01, 1, 0))
    fd.write(b&apos;\&apos; * (4 * 64 * 4))
    fd.flush()
    fcntl.ioctl(fd, UI_DEV_CREATE)
    time.sleep(0.5)
    return fd

def press_key(fd, keycode):
    write_event(fd, EV_KEY, keycode, 1)
    write_event(fd, EV_SYN, SYN_REPORT, 0)
    time.sleep(0.05)
    write_event(fd, EV_KEY, keycode, 0)
    write_event(fd, EV_SYN, SYN_REPORT, 0)
    time.sleep(0.05)

def type_char(fd, ch):
    if ch in KEYMAP:
        keycode, shift = KEYMAP[ch]
        if shift:
            write_event(fd, EV_KEY, KEY_LEFTSHIFT, 1)
            write_event(fd, EV_SYN, SYN_REPORT, 0)
        press_key(fd, keycode)
        if shift:
            write_event(fd, EV_KEY, KEY_LEFTSHIFT, 0)
            write_event(fd, EV_SYN, SYN_REPORT, 0)

def main():
    text = sys.argv[1] if len(sys.argv) &amp;gt; 1 else &apos;&apos;
    fd = setup_uinput()
    time.sleep(0.3)
    for ch in text:
        type_char(fd, ch)
        time.sleep(0.03)
    time.sleep(0.1)
    press_key(fd, KEY_ENTER)
    time.sleep(0.5)
    fcntl.ioctl(fd, UI_DEV_DESTROY)
    fd.close()

if __name__ == &apos;__main__&apos;:
    main()
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;文件 &lt;code&gt;/etc/init/autologin.conf&lt;/code&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;description &quot;Auto login&quot;
start on started ui

env LD_LIBRARY_PATH=/usr/local/lib

script
  sleep 15
  exec python3 /usr/local/bin/autologin_type.py 密码或pin看你要输入什么能解锁就输什么 &amp;gt; /tmp/autologin.log 2&amp;gt;&amp;amp;1
end script
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;你可以用各种方式保存在某个路径，然后再去终端里 &lt;code&gt;sudo cp 当前文件路径 目标路径&lt;/code&gt; 把他复制过去&lt;/p&gt;
&lt;p&gt;如果没有成功，可以手动运行 &lt;code&gt;initctl start autologin&lt;/code&gt; 然后等15秒看log &lt;code&gt;/tmp/autologin.log&lt;/code&gt;&lt;/p&gt;
</content:encoded></item><item><title>修复Sunshine在Ubuntu24上黑屏的问题</title><link>https://zyyme.com/fix-sunshine-on-ubuntu24.html</link><guid isPermaLink="true">https://zyyme.com/fix-sunshine-on-ubuntu24.html</guid><description>首先引起这个问题的主要是Gnome46的屏幕采集有问题，那么解决方案也很简单，换成sunshine-kms，不使用Gnome的屏幕录制就行了 可能使用n卡就没有这个问题，但我是intel核显 先看一下主程序的路径 ls -l /usr/bin/sunshine 设置权限 sudo setcap capsysadmin+p /usr/bin/sunshine-</description><pubDate>Thu, 26 Feb 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;首先引起这个问题的主要是Gnome46的屏幕采集有问题，那么解决方案也很简单，换成sunshine-kms，不使用Gnome的屏幕录制就行了&lt;br /&gt;
可能使用n卡就没有这个问题，但我是intel核显&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;先看一下主程序的路径&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ls -l /usr/bin/sunshine
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;设置权限&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo setcap cap_sys_admin+p /usr/bin/sunshine-2026.224.134041

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;把启动的服务换一下&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;systemctl --user stop sunshine
systemctl --user disable sunshine
systemctl --user enable sunshine-kms
systemctl --user start sunshine-kms

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这样就可以正常使用了，画面有了，声音也正常了&lt;/p&gt;
</content:encoded></item><item><title>给NanoKVM Pro增加h265支持</title><link>https://zyyme.com/add-hevc-support-to-nanokvm-pro.html</link><guid isPermaLink="true">https://zyyme.com/add-hevc-support-to-nanokvm-pro.html</guid><description>此方式仅供学习，使用请遵守当地发法律，强行启用hevc会带来风险，这些风险包括但不限于专利授权费用、法律责任、设备兼容性问题及性能下降，咩咩不承担任何责任 只支持NanoKVM系统，不支持PiKVM 点击顶栏的终端图标，打开NanoKVM终端（不支持Safari），或者通过ssh连接上去（在设置中启用ssh，用户名root密码是你的密码） 运行这条命令 gr</description><pubDate>Sat, 08 Nov 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;strong&gt;此方式仅供学习，使用请遵守当地发法律，强行启用hevc会带来风险，这些风险包括但不限于专利授权费用、法律责任、设备兼容性问题及性能下降，咩咩不承担任何责任&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;只支持NanoKVM系统，不支持PiKVM&lt;br /&gt;
点击顶栏的终端图标，打开NanoKVM终端（不支持Safari），或者通过ssh连接上去（在设置中启用ssh，用户名root密码是你的密码）&lt;br /&gt;
运行这条命令&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
grep -h -oP &apos;label:\s*&quot;H\.265 WebRTC&quot;,\s*disabled:\s*\K.*?(?=\s*})&apos; /kvmapp/server/web/assets/index-*.js | head -n 1 | xargs -I {} sed -i &apos;s#{}#false#g&apos; /kvmapp/server/web/assets/index-*.js &amp;amp;&amp;amp; systemctl restart nanokvm
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;然后等大概10秒，刷新页面重新登录，这时候h265就可以用了，虽然他看起来还是灰色的&lt;br /&gt;
应该不会被编译器优化成别的东西，或者再找时间我重新写一个正则来实现&lt;/p&gt;
</content:encoded></item><item><title>Android修改boot分区实现来电自启</title><link>https://zyyme.com/android-automatically-power-on-when-charger.html</link><guid isPermaLink="true">https://zyyme.com/android-automatically-power-on-when-charger.html</guid><description>首先提取并解包boot，可以使用MIO-KITCHEN-ROM解包打包工具，操作比较无脑 编辑 ramdisk 中的 init.rc 找到 on charger classstart charger 改成 on charger classstart charger setprop sys.powerctl reboot 打包以任意刷回去，这样手机就会在在触发</description><pubDate>Tue, 07 Oct 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;首先提取并解包boot，可以使用MIO-KITCHEN-ROM解包打包工具，操作比较无脑&lt;br /&gt;
编辑 &lt;code&gt;ramdisk&lt;/code&gt; 中的 &lt;code&gt;init.rc&lt;/code&gt;&lt;br /&gt;
找到&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;on charger
    class_start charger
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;改成&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;on charger
    # class_start charger
    setprop sys.powerctl reboot
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;打包以任意刷回去，这样手机就会在在触发关机充电后自动重启进行开机&lt;br /&gt;
如果不行，则保留 &lt;code&gt;class_start charger&lt;/code&gt; 那行试试&lt;/p&gt;
</content:encoded></item><item><title>StorCLI使用教程与IO Error修复的记录</title><link>https://zyyme.com/storcli.html</link><guid isPermaLink="true">https://zyyme.com/storcli.html</guid><description>有一台二手联想服务器，使用的是 ServeRAID M5210 阵列卡，今天发现他在 dmesg 中出现了大量的 direct IO failed ，PVE中的运行的虚拟机也出现了 io-error 的错误提示，这也不是这台服务器第一次出毛病了，之前还出现过网卡断流，DIMM报错CPU报错等莫名其妙的问题，毕竟是采购贪便宜从供应商买的二手服务器，倒也合理 安</description><pubDate>Thu, 11 Sep 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;有一台二手联想服务器，使用的是 &lt;code&gt;ServeRAID M5210&lt;/code&gt; 阵列卡，今天发现他在 &lt;code&gt;dmesg&lt;/code&gt; 中出现了大量的 &lt;code&gt;direct IO failed&lt;/code&gt; ，PVE中的运行的虚拟机也出现了 &lt;code&gt;io-error&lt;/code&gt; 的错误提示，这也不是这台服务器第一次出毛病了，之前还出现过网卡断流，DIMM报错CPU报错等莫名其妙的问题，毕竟是采购贪便宜从供应商买的二手服务器，倒也合理&lt;/p&gt;
&lt;h2&gt;安装StorCLI&lt;/h2&gt;
&lt;p&gt;PVE的环境是debian，因此需要做的是&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;下载安装包
访问这个 &lt;code&gt;docs.broadcom.com/docs/12351432&lt;/code&gt;&lt;br /&gt;
或者访问 &lt;code&gt;docs.broadcom.com&lt;/code&gt; ，在 &lt;code&gt;Product Family&lt;/code&gt; 筛选 &lt;code&gt;RAID Controller Cards&lt;/code&gt; ，然后搜索 &lt;code&gt;StorCLI&lt;/code&gt; ，再展开 &lt;code&gt;Management Software and Tools&lt;/code&gt; ，里面就有StorCLI了，下下来，在服务器上建一个文件夹传上去并unzip&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;安装&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;apt install alien
alien storcli-1.01.10-1.noarch.rpm
dpkg -i storcli_1.01.10-2_all.deb
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这样就安装到了 &lt;code&gt;/opt/MegaRAID/storcli/storcli64&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;给硬盘进行smart长自检&lt;/h2&gt;
&lt;p&gt;首先，可以用这个命令查看硬盘的一些基础信息&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;/opt/MegaRAID/storcli/storcli64 /c0 show
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;在输出的第一个表格中，有一列 &lt;code&gt;DID&lt;/code&gt; 这个就是硬盘id，依次对每一个硬盘执行即可&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;smartctl -t long --device=megaraid,硬盘id /dev/sda
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果你使用的是sata硬盘，可能需要改为 &lt;code&gt;--device=sat+megaraid,硬盘id&lt;/code&gt;&lt;br /&gt;
然后可以使用下面这个命令来获取自检结果&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;smartctl -l selftest --device=megaraid,硬盘id
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>群辉闲置时自动关机</title><link>https://zyyme.com/syno-auto-off.html</link><guid isPermaLink="true">https://zyyme.com/syno-auto-off.html</guid><description>如果你希望群辉可以在闲置的时候自动关机，比如说凌晨2点，人睡觉了，同步的计划任务也昨做完了，那么群辉开着也没什么用，不如关掉，那么就可以有以下操作 定时关机 在设置创建一个计划任务，定时运行，用root执行，每天的2点运行 iostat sata1 -m -d 10 2 |sudo awk &apos;NR==8 {if($3</description><pubDate>Mon, 16 Jun 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;如果你希望群辉可以在闲置的时候自动关机，比如说凌晨2点，人睡觉了，同步的计划任务也昨做完了，那么群辉开着也没什么用，不如关掉，那么就可以有以下操作&lt;/p&gt;
&lt;h2&gt;定时关机&lt;/h2&gt;
&lt;p&gt;在设置创建一个计划任务，定时运行，用root执行，每天的2点运行&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;iostat sata1 -m -d 10 2  |sudo  awk &apos;NR==8 {if($3&amp;lt;20&amp;amp;&amp;amp;$4&amp;lt;20) system(&quot;synopoweroff&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;其中sata1是群辉中的第一块硬盘，你可以自由选择需要检查的硬盘，他会检查硬盘的读写速度在10秒内有没有超过20m/s，如果没有，就关机&lt;/p&gt;
&lt;h2&gt;定时开机&lt;/h2&gt;
&lt;p&gt;在路由器增加计划任务，比如在周六的早上10点自动开机，想要每天可以把 &lt;code&gt;6&lt;/code&gt; 改成 &lt;code&gt;*&lt;/code&gt; ，这样会通过网络唤醒让nas自动开机&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;0 10 * * 6 etherwake -b -i br-lan 你nas的mac地址
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;如何优雅的用命令让群辉关机&lt;/h2&gt;
&lt;p&gt;这个问题我找了很多地方，并且试了4次，最后试出来了，根本查不到，好像很多人都不关机的&lt;br /&gt;
至于为什么关机，因为硬盘休眠根本不工作，特别是ntfs分区，一直在写也不知道写什么&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;synopoweroff
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这跟在DSM的web上点关机完全一样，会先运行计划任务中的关机任务再关机，不会很强硬的直接关掉&lt;/p&gt;
</content:encoded></item><item><title>使用tgt搭建iscsi服务</title><link>https://zyyme.com/tgt-iscsi.html</link><guid isPermaLink="true">https://zyyme.com/tgt-iscsi.html</guid><description>tgt是一个用户层的iscsi服务，因此不需要什么依赖，可以使用文件、物理设备、硬盘上的一个分区作为iscsi磁盘的目标存储，只能由一台电脑连接，连上去就像是一个本地磁盘 安装 我使用的服务器是Openwrt系统，因此我使用 opkg 作为包管理器安装 tgt ，包管理器因系统而异，请自行修改 opkg update opkg install tgt 配置 </description><pubDate>Sat, 14 Jun 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;tgt是一个用户层的iscsi服务，因此不需要什么依赖，可以使用文件、物理设备、硬盘上的一个分区作为iscsi磁盘的目标存储，只能由一台电脑连接，连上去就像是一个本地磁盘&lt;/p&gt;
&lt;h2&gt;安装&lt;/h2&gt;
&lt;p&gt;我使用的服务器是Openwrt系统，因此我使用 &lt;code&gt;opkg&lt;/code&gt; 作为包管理器安装 &lt;code&gt;tgt&lt;/code&gt; ，包管理器因系统而异，请自行修改&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;opkg update
opkg install tgt
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;配置&lt;/h2&gt;
&lt;p&gt;修改配置，文件在 &lt;code&gt;/etc/config/tgt&lt;/code&gt; 也有可能在 &lt;code&gt;/etc/tgt&lt;/code&gt;&lt;br /&gt;
其中 &lt;code&gt;#&lt;/code&gt; 开头的是注释，你也可以修改现有的配置文件，也能用下面的修改并替换掉整个配置文件&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;config options &apos;tgt&apos;
        option iothreads &apos;2&apos;
        # 这是监听端口，因为我是路由器我写我的ip，如果你希望监听全部，则写0.0.0.0:3260
        list portal &apos;192.168.1.1:3260&apos;

# 第1个目标的名字配置  可以随便写，不强制用这个格式
config target 1
        option name &apos;iqn.2012-06.org.openwrt:iscsi.img&apos;

# 第2个目标的名字配置
config target 2
        option name &apos;iqn.2012-06.org.openwrt:win10.img&apos;

# 第1个目标的第1块盘的路径  如果是第二块盘就是1_2
config lun 1_1
        option device /raid0/iscsi.img

# 第2个目标的第1块盘的路径
config lun 2_1
        option device /raid0/win10.img

# 第2个目标的第2块盘的路径  像这样可以映射sda这一整块硬盘
config lun 2_2
        option device /dev/sda

# 用户名密码 局域网就没必要配这个了
config account
       list target 1
       list target 2
       option user &quot;username1&quot;
       option password &quot;pass1&quot;

&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;重启服务&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;service tgt restart
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;如何快速的创建一个镜像文件（创建稀疏文件），或是扩大现有虚拟硬盘文件&lt;/h2&gt;
&lt;p&gt;比如我要创建一个100g的镜像  有100个1024MB，就是 &lt;code&gt;bs&lt;/code&gt; 乘 &lt;code&gt;seek&lt;/code&gt; ，扩大也是一样的命令&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;dd if=/dev/zero of=iscsi.img bs=1024M count=0 seek=100
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;操作完要重启服务，记得先断开了再操作，注意iscsi不能多台电脑同时连接&lt;/p&gt;
&lt;h2&gt;再来说说Windows电脑怎么连接&lt;/h2&gt;
&lt;p&gt;开始菜单输入搜索“iscsi发起程序”，打开，切换到发现tab，点发现门户，输入ip或者域名，切换到目标tab，找到你上面配置的target名字，点连接，这时候盘就挂上了，如果是空白文件，需要打开“磁盘管理”进行右键初始化和右键创建卷&lt;/p&gt;
</content:encoded></item><item><title>修复群辉CloudSync问题</title><link>https://zyyme.com/fix-dsm-cloudsync.html</link><guid isPermaLink="true">https://zyyme.com/fix-dsm-cloudsync.html</guid><description>在同步WebDav时，经常会遇到“文件夹不存在”的问题，实际文件夹是存在的，并且无法继续同步和暂停同步 先连上群辉的ssh，运行命令(需要输入密码的时候输入你的登录密码) 先在菜单栏暂停同步，或者在商店停用CloudSync 打开数据库 sudo sqlite3 /volume1/@cloudsync/db/config.sqlite 可以查到当前错误的行 </description><pubDate>Wed, 05 Feb 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;在同步WebDav时，经常会遇到“文件夹不存在”的问题，实际文件夹是存在的，并且无法继续同步和暂停同步&lt;br /&gt;
先连上群辉的ssh，运行命令(需要输入密码的时候输入你的登录密码)&lt;br /&gt;
先在菜单栏暂停同步，或者在商店停用CloudSync&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# 打开数据库
sudo sqlite3 /volume1/@cloudsync/db/config.sqlite
# 可以查到当前错误的行
select * from session_table where error = -12;
# 把错误改成正常
update session_table set error = 0 where error = -12;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;点击菜单栏的恢复同步，或者在商店启用CloudSync&lt;/p&gt;
&lt;h3&gt;修改webdav服务器地址&lt;/h3&gt;
&lt;p&gt;比如你要将webdav远程端的地址改一下，用户名密码不变&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# 找到id
.head on
select id,server_addr from connection_table;
# 更新这个id为9的
update connection_table set server_addr=&apos;http://127.0.0.1:5244/dav&apos; where id=9;
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;修复alist自动退出的问题&lt;/h2&gt;
&lt;p&gt;查看日志，是因为在golang中某些连接错误没有被处理，导致的退出，下面将通过在退出时自动重启，来修复这个问题&lt;/p&gt;
&lt;p&gt;创建一个每5分钟运行一次的计划任务，用root执行，内容中贴入这个命令&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ps -ef | grep alist | grep -v grep || synopkg start alist3
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>macOS蓝牙音频配置 提升SBC音质 开启aptX</title><link>https://zyyme.com/macos-bluetooth-audio.html</link><guid isPermaLink="true">https://zyyme.com/macos-bluetooth-audio.html</guid><description>由于macOS的可配置性，可以直接用命令修改AAC，aptX开关（新机器可能没有aptX），甚至SBC的比特率 defaults write com.apple.BluetoothAudioAgent &quot;Apple Bitpool Max (editable)&quot; 90 defaults write com.apple.BluetoothAudioAgent </description><pubDate>Thu, 27 Jun 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;由于macOS的可配置性，可以直接用命令修改AAC，aptX开关（新机器可能没有aptX），甚至SBC的比特率&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;defaults write com.apple.BluetoothAudioAgent &quot;Apple Bitpool Max (editable)&quot; 90
defaults write com.apple.BluetoothAudioAgent &quot;Apple Bitpool Min (editable)&quot; 80
defaults write com.apple.BluetoothAudioAgent &quot;Apple Initial Bitpool (editable)&quot; 88
defaults write com.apple.BluetoothAudioAgent &quot;Apple Initial Bitpool Min (editable)&quot; 80
defaults write com.apple.BluetoothAudioAgent &quot;Negotiated Bitpool&quot; 88
defaults write com.apple.BluetoothAudioAgent &quot;Negotiated Bitpool Max&quot; 90
defaults write com.apple.BluetoothAudioAgent &quot;Negotiated Bitpool Min&quot; 80
sudo defaults write bluetoothaudiod &quot;Enable AptX codec&quot; -bool true
sudo defaults write bluetoothaudiod &quot;Enable AAC codec&quot; -bool true
sudo defaults write bluetoothaudiod &quot;Enable SBC codec&quot; -bool true
sudo defaults write bluetoothaudiod &quot;SBCBitpool&quot; -int 88
sudo defaults write bluetoothaudiod &quot;EnableJointStereo&quot; -bool false
sudo pkill bluetoothaudiod
sudo pkill coreaudiod
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;然后手动关掉蓝牙再开就行，&lt;code&gt;Bitpool&lt;/code&gt;最大值为255，但是经过测试，&lt;code&gt;qcc3040&lt;/code&gt;只能支持到90，也就是529kbps，几十块便宜货是84，也就是496kbps，现在大部分耳机都支持Stereo模式，关闭能显著提升高频音质，当然了这比特率是很高的，如果环境信号较差，断断续续，甚至没声，请降低&lt;code&gt;Min&lt;/code&gt;，或者实在不行降低&lt;code&gt;SBCBitpool&lt;/code&gt;&lt;br /&gt;
这样操作可以让SBC达到甚至远超AAC的音质水准（主要看耳机的情况，SBC解码容易，码率能拉到很高）&lt;br /&gt;
MacBook2021信号好像比较拉，默认值90人动一下就会卡，测试88良好&lt;br /&gt;
最好弄完重启一下电脑，因为直接kill掉会影响罗技的软件正常工作&lt;/p&gt;
</content:encoded></item><item><title>Arm的Chromebook手动切换AB分区 cgpt使用教程 Ubuntu双系统共存 改温度墙</title><link>https://zyyme.com/arm-chromebook-cgpt.html</link><guid isPermaLink="true">https://zyyme.com/arm-chromebook-cgpt.html</guid><description>本文讲教你如何使用cgpt命令，在ChromeOS上切换启动分区，大概在x64上也是差不多的（至少分区是一样的，虽然引导的方式可能不一样，未使用efi，是bios直接启动的Kernel），咩咩使用的是MT8183的Chromebook Duet 1代 插播一条提示，这是Chromebook Duet的113恢复镜像，解压后dd写u盘启动，最后一版ARC++的</description><pubDate>Tue, 30 Apr 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;本文讲教你如何使用cgpt命令，在ChromeOS上切换启动分区，大概在x64上也是差不多的（至少分区是一样的，虽然引导的方式可能不一样，未使用efi，是bios直接启动的Kernel），咩咩使用的是MT8183的Chromebook Duet 1代&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;插播一条提示，这是Chromebook Duet的113恢复镜像，解压后dd写u盘启动，最后一版ARC++的系统，流程多了&lt;br /&gt;
dl.google.com/dl/edgedl/chromeos/recovery/chromeos_15393.58.0_kukui_recovery_stable-channel_mp-v6.bin.zip&lt;/p&gt;
&lt;p&gt;首先新的系统需要到&lt;code&gt;tty2&lt;/code&gt;，也就是&lt;code&gt;ctrl + alt + f2&lt;/code&gt;切换过去的，桌面则是&lt;code&gt;f1&lt;/code&gt;，老的系统可以直接按&lt;code&gt;ctrl + alt + t&lt;/code&gt;在桌面打开控制台，输入shell回车进入终端&lt;/p&gt;
&lt;p&gt;首先说一下cgpt这个命令并不是ChromeOS独有的，你可以在其他Linux上直接拿包管理器装，就像gdisk一样&lt;br /&gt;
先&lt;code&gt;sudo -i&lt;/code&gt;切换到root，方便操作，假设我的硬盘是&lt;code&gt;/dev/mmcblk0&lt;/code&gt;，那么&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# 查看分区表状态
cgpt show /dev/mmcblk0
# 看不全可以这样，按空格翻页
cgpt show /dev/mmcblk0 | more
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Attr与cgpt add命令转换&lt;/h3&gt;
&lt;p&gt;你会发现输出的分区信息中以&lt;code&gt;KERN-&lt;/code&gt;开头的分区有一个Attr的参数，这个参数决定了启动的方式&lt;br /&gt;
例如这是&lt;code&gt;part&lt;/code&gt;是2的&lt;code&gt;KERN-A&lt;/code&gt;分区的参数&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Attr: priority=2 tries=0 successful=l
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;priority&lt;/code&gt; 对应 &lt;code&gt;-P&lt;/code&gt; 是启动优先级，越大越优先&lt;br /&gt;
&lt;code&gt;tries&lt;/code&gt; 对应 &lt;code&gt;-T&lt;/code&gt;  是尝试启动次数&lt;br /&gt;
&lt;code&gt;successful&lt;/code&gt; 对应 &lt;code&gt;-S&lt;/code&gt; 标记是否能成功启动&lt;br /&gt;
&lt;code&gt;part&lt;/code&gt; 对应 &lt;code&gt;-i&lt;/code&gt;&lt;br /&gt;
那么如果将上面的配置用命令写出来，就是&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cgpt add -i 2 -P 2 -T 0 -S 1 /dev/mmcblk0
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;是不是一下就懂了？&lt;/p&gt;
&lt;h3&gt;AB分区切换&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;KERN-A&lt;/code&gt;和&lt;code&gt;KERN-B&lt;/code&gt;即为AB分区系统的内核，用于启动&lt;code&gt;ROOT-A&lt;/code&gt;和&lt;code&gt;ROOT-B&lt;/code&gt;中的系统，那么假设&lt;code&gt;KERN-A&lt;/code&gt;在&lt;code&gt;part2&lt;/code&gt;的位置，&lt;code&gt;KERN-B&lt;/code&gt;在&lt;code&gt;part4&lt;/code&gt;的位置&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# 从A分区启动
cgpt add -i 2 -P 2 -T 0 -S 1 /dev/mmcblk0
cgpt add -i 4 -P 1 -T 0 -S 1 /dev/mmcblk0
# 从B分区启动
cgpt add -i 2 -P 1 -T 0 -S 1 /dev/mmcblk0
cgpt add -i 4 -P 2 -T 0 -S 1 /dev/mmcblk0
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;其实就是调整&lt;code&gt;-P&lt;/code&gt;来修改启动优先级&lt;br /&gt;
至于怎么确定当前设置的是那个槽位呢，看一下show的时候priority谁更大即可&lt;/p&gt;
&lt;h3&gt;启动规则&lt;/h3&gt;
&lt;p&gt;如果需要临时启动一次&lt;br /&gt;
此处我都拿&lt;code&gt;/dev/mmcblk0&lt;/code&gt;的分区6来举例&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cgpt add -i 6 -P 15 -T 1 -S 0 /dev/mmcblk0
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;经过多次测试得到以下结论&lt;br /&gt;
&lt;code&gt;-S 0&lt;/code&gt;的情况下，一般启动后都不会保存（虽然理论上启动成功他应该从0变成1）&lt;br /&gt;
&lt;code&gt;-T&lt;/code&gt;不为0时，会多次尝试启动，无法启动则跳到下一个&lt;br /&gt;
&lt;code&gt;-P&lt;/code&gt;设置成15绝对够大，能确保他优先级一定是最高的&lt;/p&gt;
&lt;h3&gt;ChromeOS&lt;/h3&gt;
&lt;p&gt;本次测试的版本是113和123，大部分数据从新系统切换到旧系统后都能完美兼容，但由于113是最后一个使用ARC++的版本，后面Android都变成ARCVM了，导致123下的ARCVM数据被自动删除，因此启动过113再次启动123，Android会变得完全无法启动&lt;br /&gt;
但是你如果被自动更新了想要回到旧系统，马上把槽位切换一下，应该还是完美回到旧系统的（因为我花了2小时去执行“升级优化”Android，他已经完全变成ARCVM的形状了）&lt;br /&gt;
理论上可以通过这种方式，在Arm的Chromebook上安装Ubuntu和ChromeOS双系统，毕竟ChromeOS的系统只是占了前面12个分区，通过调整第一个&lt;code&gt;STSTE&lt;/code&gt;分区的大小（他虽然是第一个分区但是物理位置是在最后面）来腾出空间在后方安装Ubuntu&lt;/p&gt;
&lt;h3&gt;将Ubuntu与ChromeOS安装到eMMC共存&lt;/h3&gt;
&lt;p&gt;可以查看 &lt;a href=&quot;https://www.bilibili.com/video/BV1VZ421J7xx&quot;&gt;这个视频&lt;/a&gt; 可以达到双系统随意切换启动&lt;br /&gt;
ChromeOS占用了前12个分区，Ubuntu需要4个分区，咩咩将分区建到后面，相当于分区13到16为Ubuntu分区，此操作不会对ChromeOS有任何影响&lt;br /&gt;
其中ChromeOS是AB分区，对于咩咩这个Duet来说，系统因为arcvm性能差的原因，只能锁死到最后一版ARC++也就是113的系统了，此时113装在A分区，B分区内容虽然跟A的一样但是是完全没有用到的，因此可以缩小&lt;code&gt;ROOT-B&lt;/code&gt;来腾出空间安装Ubuntu实现无损安装（用户空间也不会减少）当然，你也可以选择缩小分区1（就是用户数据空间），但是由于数据是加密的，也没法挂载，要缩小就得格式化了&lt;/p&gt;
&lt;p&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
如果你需要禁用ChromeOS系统自动更新&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo -i
mkdir -p /mnt/stateful_partition/etc
echo &quot;CHROMEOS_RELEASE_VERSION=99999.9.9&quot; &amp;gt; /mnt/stateful_partition/etc/lsb-release
sync
reboot
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
需要准备的有：写好Ubuntu可以启动的U盘，写入u盘用的镜像(拿另一个u盘装着也行，或者调整写好的盘第4个分区的大小，然后用复制进去也行)，用U盘启动到Ubuntu，并将那个镜像挂载到loop0（直接在文件管理器用镜像挂载器打开就能自动挂好，没有提示），然后打开终端，&lt;code&gt;sudo -i&lt;/code&gt;换成root开始操作&lt;/p&gt;
&lt;p&gt;缩小&lt;code&gt;ROOT-B&lt;/code&gt;(分区5，如果是A则是3）并创建Ubuntu需要的分区&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cgpt show /dev/loop0
# 记录他展示的4个分区的UUID，待会会用到

gdisk /dev/mmcblk0
p
x
i
5
# 这里记录上面输出的Partition unique GUID
m
d
5
# 下面将创建1M的ROOT-B
n
5
# 直接回车
+1M
7F01
# 下面将创建Ubuntu的第1分区
n
13
# 直接回车
+32M
7F00
# 下面将创建Ubuntu的第2分区
n
14
# 直接回车
+1M
7F00
# 下面将创建Ubuntu的第3分区
n
14
# 直接回车
+100M
# 直接回车
# 下面将创建Ubuntu的第3分区
n
14
# 直接按3次回车
x
c
5
# 输入上面记录的Partition unique GUID
p
# 下面这一步会写入磁盘，如果前面做错了可以直接按Ctrl+C退出
w
y
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;不需要设置相同的uuid也能正常启动，如果设置相同的uuid会导致无法usb无法启动，如果使用dd镜像直接安装Ubuntu单系统，建议去x c R将每个分区的uuid都生成一个新的以保证usb启动的真的是usb的系统&lt;br /&gt;
进行完上面的操作，分区就准备好了，下面开始安装系统&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;dd if=/dev/loop0p1 of=/dev/mmcblk0p13
resize2fs /dev/loop0p3 90M
dd if=/dev/loop0p3 of=/dev/mmcblk0p15
resize2fs /dev/mmcblk0p15
dd if=/dev/loop0p4 of=/dev/mmcblk0p16 bs=100M
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这样系统就安装好了，接下来将教你如何启动系统&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# 切换启动到Ubuntu
cgpt add -i 13 -P 15 -S 1 /dev/mmcblk0
# 切换启动到ChromeOS
cgpt add -i 13 -P 0 /dev/mmcblk0
# 启动一次ChromeOS
cgpt add -i 13 -P 15 -T 1 -S 0 /dev/mmcblk0
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
以下方式可以让你在ChromeOS下创建一个启动脚本，快速启动到Ubuntu&lt;br /&gt;
按最上面说的，进入终端，并且&lt;code&gt;sudo -i&lt;/code&gt;换成root&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;mkdir -p /usr/local/bin
echo &apos;sudo cgpt add -i 13 -P 15 -T 1 -S 0 /dev/mmcblk0 &amp;amp;&amp;amp; sync &amp;amp;&amp;amp; sudo reboot&apos; &amp;gt; /usr/local/bin/ubuntu
chmod 777 /usr/local/bin/ubuntu
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这样你下次在终端运行&lt;code&gt;ubuntu&lt;/code&gt;就会自动重启到Ubuntu，并且再重启就能回到ChromeOS&lt;/p&gt;
&lt;h3&gt;Ubuntu优化&lt;/h3&gt;
&lt;p&gt;在Ubuntu下重力感应的方向不对，需要修改一下配置&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo vim /etc/udev/hwdb.d/61-sensor-local.hwdb
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;按i进编辑模式输入以下内容（实测24系统失效）&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sensor:modalias:platform:cros-ec-accel:*
 ACCEL_MOUNT_MATRIX=0,1,0;-1,0,0;0,0,1
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;注意第二行开头有个空格&lt;br /&gt;
按esc，&lt;code&gt;:wq&lt;/code&gt;回车保存退出&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;systemd-hwdb update
reboot
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
扩展btrfs文件系统到分区实际大小&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;btrfs filesystem resize max /
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
另外可以把Ubuntu的软件源换成国内镜像，Ubuntu Arm的镜像源独此清华一家，其他都不知道为什么没arm&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo sed -i &apos;s@//.*archive.ubuntu.com@//mirrors.tuna.tsinghua.edu.cn/ubuntu-ports@g&apos; /etc/apt/sources.list
sudo sed -i &apos;s@//ports.ubuntu.com/ubuntu-ports@//mirrors.tuna.tsinghua.edu.cn/ubuntu-ports@g&apos; /etc/apt/sources.list
sudo apt update
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
可以进行系统更新，亲测更新到Ubuntu 24.04 LTS，但是WiFi会掉，解决方案很简单，把 &lt;a href=&quot;https://github.com/hexdump0815/imagebuilder/tree/main/systems/chromebook_kukui/extra-files/lib/firmware&quot;&gt;这个目录&lt;/a&gt; 下的文件 &lt;code&gt;cp -r&lt;/code&gt; 合并到 &lt;code&gt;/lib/firmware&lt;/code&gt; 即可&lt;/p&gt;
&lt;p&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
删除日志，日志其实很占空间的，将保留最后10M日志&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;journalctl --vacuum-size=10M
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
另外有一些在Ubuntu的非必要操作&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo -i
# 这系统里带了两套桌面环境 把没用的都删了，删完已用2.2G
apt autoremove xubuntu* xfce* mate*
# 删掉没用的软件
apt autoremove gimp transmission
# 装回一个gnome3的文件浏览器
apt install nautilus
# 切换语言为中文
sed -i &apos;s/^# zh_CN.GBK GBK/zh_CN.GBK GBK/&apos; /etc/locale.gen
sed -i &apos;s/^# zh_CN.UTF-8 UTF-8/zh_CN.UTF-8 UTF-8/&apos; /etc/locale.gen
locale-gen
update-locale LANG=zh_CN.UTF-8
# 换成gdm3管理登录 才能用触摸屏登录
apt install gdm3
apt autoremove lightdm
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;其他&lt;/h3&gt;
&lt;p&gt;btrfs硬盘压缩 (提升不大)&lt;br /&gt;
编辑&lt;code&gt;/etc/fstab&lt;/code&gt;,&lt;br /&gt;
可以将此处的&lt;code&gt;compress-force=zstd&lt;/code&gt;改为&lt;code&gt;compress-force=zstd:6&lt;/code&gt;默认不写比例是3，可以提高压缩比&lt;br /&gt;
这条命令可以进行全盘压缩&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# 生效刚刚配置的zstd:6
mount -o remount /
btrfs filesystem defragment -r -v -czstd /
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;可见硬盘从已用3.1g降到了3.0g，提升显著？看来之前已经压过了&lt;/p&gt;
&lt;p&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
和ChromeOS一样的道理，我们也可以弄两个脚本在Ubuntu中快速切换系统&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;echo &apos;sudo cgpt add -i 13 -P 15 -T 1 -S 0 /dev/mmcblk0 &amp;amp;&amp;amp; sync &amp;amp;&amp;amp; sudo reboot&apos; &amp;gt; /usr/local/bin/ubuntu
echo &apos;sudo cgpt add -i 13 -P 0 /dev/mmcblk0 &amp;amp;&amp;amp; sync &amp;amp;&amp;amp; sudo reboot&apos; &amp;gt; /usr/local/bin/chromeos
chmod 777 /usr/local/bin/ubuntu
chmod 777 /usr/local/bin/chromeos
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
由于ChromeOS开启了ext4的FEATURE_C12特性，但是目前这版的Ubuntu不支持，可以这样关掉这个特性，达到共用state分区的操作（比如mount --bind 过去/）&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;tune2fs -O ^FEATURE_C12 /dev/mmcblk0p1
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
在ChromeOS中Android（ARC++）设置深色主题/黑暗模式/夜间模式&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# 黑
adb shell settings put secure ui_night_mode 2
# 白
adb shell settings put secure ui_night_mode 1
# 自动
adb shell settings put secure ui_night_mode 0
# 设置完要重启Android才能生效
adb shell reboot
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
系统备份，备份整个emmc&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;dd if=/dev/mmcblk0 bs=100M | zstd -9 -T0 --long=27 -c &amp;gt; ddBackup.img.zst
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;还原&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;zstd -d -c ddBackup.img.zst | dd of=/dev/mmcblk0 bs=100M
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
修改ChromeOS的温度墙，让CPU高温不降频&lt;br /&gt;
因为是被动散热，所以默认68度的温度墙虽然摸起来一点不烫，但很影响使用，特别是充电时，本方法在113测试通过，125应该是不行了，或者说就根本没温度墙了，需要root（可能还需要将根分区设置成读写模式）&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# 查看实际cpu温度（诊断的实际是主板温度）
cat /sys/class/thermal/thermal_zone0/temp
# 查看当前大核心最高主频，最高1989000
cat /sys/devices/system/cpu/cpufreq/policy4/scaling_max_freq
# 小核心，最高1989000
cat /sys/devices/system/cpu/cpufreq/policy0/scaling_max_freq
# 将温度墙改成95度，这个温度刚好能在满载时达到散热平衡
echo 95000 &amp;gt; /sys/class/thermal/thermal_zone0/trip_point_0_temp
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;因为没办法开机启动，所以每次开机都要手动运行，用一句话执行就是这样&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo sh -c &apos;echo 95000 &amp;gt; /sys/class/thermal/thermal_zone0/trip_point_0_temp&apos;
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>给自制的nRF52840硬件秘钥编译CanoKey固件</title><link>https://zyyme.com/canokey-nrf52840.html</link><guid isPermaLink="true">https://zyyme.com/canokey-nrf52840.html</guid><description>[硬件已开源][1] 原用途为作为OpenSK兼容硬件使用 本文将使用Ubuntu编译CanoKey固件 触摸按钮在p1.11 bootloader按钮在ai0(p0.2) 灯在p1.13 都是拉低触发 环境准备 bash 因为新的Ubuntu他是没有python命令的，所以我们得给他建个连接，你可以自己试试有没有，需要是python3.x sudo ln </description><pubDate>Fri, 19 Apr 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;https://oshwhub.com/zanjie1999/fido-opensk-nrf52840-mini&quot;&gt;硬件已开源&lt;/a&gt;&lt;br /&gt;
原用途为作为OpenSK兼容硬件使用&lt;br /&gt;
本文将使用Ubuntu编译CanoKey固件&lt;br /&gt;
触摸按钮在p1.11&lt;br /&gt;
bootloader按钮在ai0(p0.2)&lt;br /&gt;
灯在p1.13&lt;br /&gt;
都是拉低触发&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h2&gt;环境准备&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;# 因为新的Ubuntu他是没有python命令的，所以我们得给他建个连接，你可以自己试试有没有，需要是python3.x
sudo ln -s /usr/bin/python3 /usr/bin/python

sudo apt install git cmake gcc-arm-none-eabi
git clone https://github.com/canokeys/canokey-nrf52.git
cd canokey-nrf52
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;将&lt;code&gt;config/boards/nordic/pca10059.h&lt;/code&gt;这个开发板配置内容直接替换成下面的内容以简单的适配咩咩的E73模块双头usbkey&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#ifndef PCA10059_H
#define PCA10059_H

#ifdef __cplusplus
extern &quot;C&quot; {
#endif

// LED definitions for zyyme
#define LEDS_NUMBER    1

#define LED_1          NRF_GPIO_PIN_MAP(1,13)
#define LED_START      LED_1
#define LED_STOP       LED_1

#define LEDS_ACTIVE_STATE 0

#define LEDS_LIST { LED_1 }

#define LEDS_INV_MASK  LEDS_MASK

#define BSP_LED_0      LED_1


// There is only one button for the application
// as the second button is used for a RESET.
#define BUTTONS_NUMBER 2

#define BUTTON_1       NRF_GPIO_PIN_MAP(1,11)
#define BUTTON_2       NRF_GPIO_PIN_MAP(0,2)
#define BUTTON_PULL    NRF_GPIO_PIN_PULLUP

#define BUTTONS_ACTIVE_STATE 0

#define BUTTONS_LIST { BUTTON_1, BUTTON_2 }

#define BSP_BUTTON_0   BUTTON_1

#define BSP_SELF_PINRESET_PIN NRF_GPIO_PIN_MAP(0,19)

#define HWFC           false

#ifdef __cplusplus
}
#endif

#endif // PCA10059_H
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;拉依赖库，请保持网络通畅&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;git submodule update --init --recursive
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;编译&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;mkdir build
cd build
cmake \
-DCROSS_COMPILE=/usr/bin/arm-none-eabi- \
-DCMAKE_TOOLCHAIN_FILE=../toolchain.cmake \
-DCMAKE_BUILD_TYPE=Release ..
make canokey_flash.uf2
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;第一次运行的时候他会让你下sdk，去他提供的地址下载，因为时间的推移，需要的版本可能不一样，下面咩咩演示一下自己的&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cd ~/make
wget https://nsscprodmedia.blob.core.windows.net/prod/software-and-other-downloads/sdks/nrf5/binaries/nrf5_sdk_17.1.0_ddde560.zip
cd ~/make/canokey-nrf52/nrf_sdk
unzip ~/make/nrf5_sdk_17.1.0_ddde560.zip
cd ~/make/canokey-nrf52/build
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;然后再&lt;code&gt;cmake&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;如果一切正常，会输出&lt;code&gt;canokey_flash.uf2&lt;/code&gt;，直接用bootloader刷进去就完事了&lt;br /&gt;
初始化可以按着官方的走，也可以走一些捷径，去咩咩的工程下载附件，里面有个exe，插上运行一次就可以了，编译好的固件也上传了&lt;/p&gt;
</content:encoded></item><item><title>go get删除依赖包</title><link>https://zyyme.com/go-get-remove.html</link><guid isPermaLink="true">https://zyyme.com/go-get-remove.html</guid><description>Golang总有一些匪夷所思的设计， 如果你使用go mod来管理项目依赖（初始化使用go mod init 项目名）， 安装很容易（go get 包名），但从没有人说过怎么删除，有的说编辑文件或是go mod tidy，但这只是删除依赖并没有删除包， 那么删除依赖包时，你只需要在后面加上@none（相当于指定版本为none），举个例子： go get go</description><pubDate>Thu, 11 Apr 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Golang总有一些匪夷所思的设计，&lt;br /&gt;
如果你使用&lt;code&gt;go mod&lt;/code&gt;来管理项目依赖（初始化使用&lt;code&gt;go mod init 项目名&lt;/code&gt;），&lt;br /&gt;
安装很容易（&lt;code&gt;go get 包名&lt;/code&gt;），但从没有人说过怎么删除，有的说编辑文件或是&lt;code&gt;go mod tidy&lt;/code&gt;，但这只是删除依赖并没有删除包，&lt;br /&gt;
那么删除依赖包时，你只需要在后面加上&lt;code&gt;@none&lt;/code&gt;（相当于指定版本为none），举个例子：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;go get gorm.io/gorm@none
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这样就删掉了&lt;/p&gt;
</content:encoded></item><item><title>群晖SA6400修改eSATA(修改dtb)</title><link>https://zyyme.com/sa6400-esata-dtb-edit.html</link><guid isPermaLink="true">https://zyyme.com/sa6400-esata-dtb-edit.html</guid><description>由于群晖的从DS920开始的机器不再使用esataportcfg和internalportcfg的synoinfo进行esata和内置sata的配置，所以修改这两个参数已经不能把内置sata改为esata了 新的机型采用dtb的方式进行配置，下面将讲述如何进行dtb配置 1. 首先，先把需要设置成esata的盘位插上硬盘，进入RR（或者ARPL，下称引导）的</description><pubDate>Tue, 30 Jan 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;由于群晖的从DS920开始的机器不再使用esataportcfg和internalportcfg的synoinfo进行esata和内置sata的配置，所以修改这两个参数已经不能把内置sata改为esata了&lt;br /&gt;
新的机型采用dtb的方式进行配置，下面将讲述如何进行dtb配置&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;首先，先把需要设置成esata的盘位插上硬盘，进入RR（或者ARPL，下称引导）的编译引导环境（Configure），正常的配置好编译引导&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;进入系统安装（如果已经装好系统，用第二个启动项进入安装程序）用telnet连接，用户名root没有密码，执行下面的命令查看sata口信息&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;cat /sys/block/sata数字/device/syno_block_info
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;其中“数字”取决于群晖磁盘管理中显示的硬盘序号，可以&lt;code&gt;ls /sys/block/sata*&lt;/code&gt;查看所有的&lt;br /&gt;
&lt;code&gt;pciepath&lt;/code&gt;对应下方配置中完整的&lt;code&gt;pcie_root&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;ata_port&lt;/code&gt;对于下方配置中的&lt;code&gt;ata_port&lt;/code&gt;&lt;br /&gt;
记下来，下面会用到&lt;/p&gt;
&lt;p&gt;对应的 &lt;code&gt;/sys/block/usb*&lt;/code&gt;则是usb盘的内容，如果你希望用usb硬盘盒改成内置硬盘来用，就请这样找出来在dts中进行类似的修改&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;在系统安装中，执行以下命令解析并查看dtb（进入dsm系统后没有dtc命令，所以只能在系统安装做）&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;dtc -I dtb -O dts -o model.dts /run/model.dtb
# 先多按几下回车方便查找 把下面这个命令输出的内容复制下来
cat model.dts
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;使用Visual Studio Code或者其他记事本，使用UTF-8编码保存刚刚复制的内容（用系统自带的记事本也行）并进行修改&lt;br /&gt;
根据刚刚让你记下来的信息找到你的esata接口，并把它的&lt;code&gt;internal_slot&lt;/code&gt;改成&lt;code&gt;esata_port&lt;/code&gt;，并调整一下后面的数字，没有就自行增加一个&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;          esata_port@从1开始数接口数量 {
                ahci {
                        pcie_root = &quot;0000:刚刚让你记下的控制器id;
                        ata_port = &amp;lt;0x刚刚Ports里数的转16进制&amp;gt;;
                        internal_mode;
                };
        };

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;比如说pve里加的第一个虚拟硬盘就是 &lt;code&gt;00:1e.0,01.0,07.0&lt;/code&gt; 和1，那你需要输入 &lt;code&gt;0000:00:1e.0,01.0,07.0&lt;/code&gt;和 &lt;code&gt;0x01&lt;/code&gt; (16进制会自忽略前面的0)&lt;br /&gt;
&lt;code&gt;esata_port&lt;/code&gt;是外置esata，&lt;code&gt;internal_slot&lt;/code&gt;是内置口，请举一反三&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;下面则是天钡r1用pve直通n100的物理sata控制器，1口是esata，0口是内置的例子（cpu风扇那边是0）  
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;/dts-v1/;

/ {
        compatible = &quot;Synology&quot;;
        model = &quot;synology_epyc7002_sa6400&quot;;
        version = &amp;lt;0x01&amp;gt;;

        esata_port@1 {
                protocol_type = &quot;sata&quot;;

                ahci {
                        pcie_root = &quot;0000:00:1c.0,00.0&quot;;
                        ata_port = &amp;lt;0x01&amp;gt;;
                };
        };

        internal_slot@1 {
                protocol_type = &quot;sata&quot;;

                ahci {
                        pcie_root = &quot;0000:00:1c.0,00.0&quot;;
                        ata_port = &amp;lt;0x00&amp;gt;;
                };
        };

        usb_slot@1 {

                usb2 {
                        usb_port = &quot;1-1&quot;;
                };

                usb3 {
                        usb_port = &quot;1-1&quot;;
                };
        };

        usb_slot@2 {

                usb2 {
                        usb_port = &quot;1-2&quot;;
                };

                usb3 {
                        usb_port = &quot;1-2&quot;;
                };
        };

        usb_slot@3 {

                usb2 {
                        usb_port = &quot;1-3&quot;;
                };

                usb3 {
                        usb_port = &quot;1-3&quot;;
                };
        };

        usb_slot@4 {

                usb2 {
                        usb_port = &quot;1-4&quot;;
                };

                usb3 {
                        usb_port = &quot;1-4&quot;;
                };
        };

        usb_slot@5 {

                usb2 {
                        usb_port = &quot;1-5&quot;;
                };

                usb3 {
                        usb_port = &quot;1-5&quot;;
                };
        };

        usb_slot@6 {

                usb2 {
                        usb_port = &quot;1-6&quot;;
                };

                usb3 {
                        usb_port = &quot;1-6&quot;;
                };
        };

        usb_slot@7 {

                usb2 {
                        usb_port = &quot;2-1&quot;;
                };

                usb3 {
                        usb_port = &quot;2-1&quot;;
                };
        };

        usb_slot@8 {

                usb2 {
                        usb_port = &quot;2-2&quot;;
                };

                usb3 {
                        usb_port = &quot;2-2&quot;;
                };
        };

        usb_slot@9 {

                usb2 {
                        usb_port = &quot;2-3&quot;;
                };

                usb3 {
                        usb_port = &quot;2-3&quot;;
                };
        };

        usb_slot@10 {

                usb2 {
                        usb_port = &quot;2-4&quot;;
                };

                usb3 {
                        usb_port = &quot;2-4&quot;;
                };
        };

        usb_slot@11 {

                usb2 {
                        usb_port = &quot;2-5&quot;;
                };

                usb3 {
                        usb_port = &quot;2-5&quot;;
                };
        };

        usb_slot@12 {

                usb2 {
                        usb_port = &quot;2-6&quot;;
                };

                usb3 {
                        usb_port = &quot;2-6&quot;;
                };
        };
};
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果在pve中增加一块sata0虚拟盘作为启动盘(引导盘用scsi0)，设置为槽1，那就是这样&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;/dts-v1/;

/ {
        compatible = &quot;Synology&quot;;
        model = &quot;synology_epyc7002_sa6400&quot;;
        version = &amp;lt;0x01&amp;gt;;

        esata_port@1 {
                protocol_type = &quot;sata&quot;;

                ahci {
                        pcie_root = &quot;0000:00:1c.0,00.0&quot;;
                        ata_port = &amp;lt;0x01&amp;gt;;
                };
        };

        internal_slot@1 {
                protocol_type = &quot;sata&quot;;

                ahci {
                        pcie_root = &quot;0000:00:1e.0,01.0,07.0&quot;;
                        ata_port = &amp;lt;0x00&amp;gt;;
                };
        };

        internal_slot@2 {
                protocol_type = &quot;sata&quot;;

                ahci {
                        pcie_root = &quot;0000:00:1c.0,00.0&quot;;
                        ata_port = &amp;lt;0x00&amp;gt;;
                };
        };

        usb_slot@1 {

                usb2 {
                        usb_port = &quot;1-1&quot;;
                };

                usb3 {
                        usb_port = &quot;1-1&quot;;
                };
        };

        usb_slot@2 {

                usb2 {
                        usb_port = &quot;1-2&quot;;
                };

                usb3 {
                        usb_port = &quot;1-2&quot;;
                };
        };

        usb_slot@3 {

                usb2 {
                        usb_port = &quot;1-3&quot;;
                };

                usb3 {
                        usb_port = &quot;1-3&quot;;
                };
        };

        usb_slot@4 {

                usb2 {
                        usb_port = &quot;1-4&quot;;
                };

                usb3 {
                        usb_port = &quot;1-4&quot;;
                };
        };

        usb_slot@5 {

                usb2 {
                        usb_port = &quot;1-5&quot;;
                };

                usb3 {
                        usb_port = &quot;1-5&quot;;
                };
        };

        usb_slot@6 {

                usb2 {
                        usb_port = &quot;1-6&quot;;
                };

                usb3 {
                        usb_port = &quot;1-6&quot;;
                };
        };

        usb_slot@7 {

                usb2 {
                        usb_port = &quot;2-1&quot;;
                };

                usb3 {
                        usb_port = &quot;2-1&quot;;
                };
        };

        usb_slot@8 {

                usb2 {
                        usb_port = &quot;2-2&quot;;
                };

                usb3 {
                        usb_port = &quot;2-2&quot;;
                };
        };

        usb_slot@9 {

                usb2 {
                        usb_port = &quot;2-3&quot;;
                };

                usb3 {
                        usb_port = &quot;2-3&quot;;
                };
        };

        usb_slot@10 {

                usb2 {
                        usb_port = &quot;2-4&quot;;
                };

                usb3 {
                        usb_port = &quot;2-4&quot;;
                };
        };

        usb_slot@11 {

                usb2 {
                        usb_port = &quot;2-5&quot;;
                };

                usb3 {
                        usb_port = &quot;2-5&quot;;
                };
        };

        usb_slot@12 {

                usb2 {
                        usb_port = &quot;2-6&quot;;
                };

                usb3 {
                        usb_port = &quot;2-6&quot;;
                };
        };
};
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果后续再加一条计划任务，就能实现开机自动把机械盘加入10分钟后分离，既能备份，也能保证硬盘休眠&lt;br /&gt;
md0是系统盘，md1是swap虚拟内存，sata1是机械（1不是槽1，而是跟上面第1点的那个）&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sleep 600
hdparm -S 120 /dev/sata1
hdparm -S 120 /dev/sata2
mdadm /dev/md0 --re-add /dev/sata1p1
sleep 600
mdadm /dev/md0 -f sata1p1
#mdadm /dev/md1 -f sata1p2
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果是物理机，亲测nvme不能作为esata_port，不用尝试了&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;/dts-v1/;

/ {
        compatible = &quot;Synology&quot;;
        model = &quot;synology_epyc7002_sa6400&quot;;
        version = &amp;lt;0x01&amp;gt;;
        power_limit = &quot;100&quot;;

        esata_port@1 {
                protocol_type = &quot;sata&quot;;

                ahci {
                        pcie_root = &quot;0000:00:17.0&quot;;
                        ata_port = &amp;lt;0x01&amp;gt;;
                };
        };

        internal_slot@2 {
                protocol_type = &quot;sata&quot;;

                ahci {
                        pcie_root = &quot;0000:00:17.0&quot;;
                        ata_port = &amp;lt;0x00&amp;gt;;
                };
        };

        nvme_slot@1 {
                pcie_root = &quot;0000:00:1c.0,00.0&quot;;
                port_type = &quot;ssdcache&quot;;
        };

        usb_slot@1 {

                usb2 {
                        usb_port = &quot;1-1&quot;;
                };

                usb3 {
                        usb_port = &quot;1-1&quot;;
                };
        };

        usb_slot@2 {

                usb2 {
                        usb_port = &quot;2-1&quot;;
                };

                usb3 {
                        usb_port = &quot;2-1&quot;;
                };
        };

        usb_slot@3 {

                usb2 {
                        usb_port = &quot;3-1&quot;;
                };

                usb3 {
                        usb_port = &quot;3-1&quot;;
                };
        };

        usb_slot@4 {

                usb2 {
                        usb_port = &quot;3-2&quot;;
                };

                usb3 {
                        usb_port = &quot;3-2&quot;;
                };
        };

        usb_slot@5 {

                usb2 {
                        usb_port = &quot;3-3&quot;;
                };

                usb3 {
                        usb_port = &quot;3-3&quot;;
                };
        };

        usb_slot@6 {

                usb2 {
                        usb_port = &quot;3-4&quot;;
                };

                usb3 {
                        usb_port = &quot;3-4&quot;;
                };
        };

        usb_slot@7 {

                usb2 {
                        usb_port = &quot;3-5&quot;;
                };

                usb3 {
                        usb_port = &quot;3-5&quot;;
                };
        };

        usb_slot@8 {

                usb2 {
                        usb_port = &quot;3-6&quot;;
                };

                usb3 {
                        usb_port = &quot;3-6&quot;;
                };
        };

        usb_slot@9 {

                usb2 {
                        usb_port = &quot;3-7&quot;;
                };

                usb3 {
                        usb_port = &quot;3-7&quot;;
                };
        };

        usb_slot@10 {

                usb2 {
                        usb_port = &quot;3-8&quot;;
                };

                usb3 {
                        usb_port = &quot;3-8&quot;;
                };
        };

        usb_slot@11 {

                usb2 {
                        usb_port = &quot;3-9&quot;;
                };

                usb3 {
                        usb_port = &quot;3-9&quot;;
                };
        };

        usb_slot@12 {

                usb2 {
                        usb_port = &quot;3-10&quot;;
                };

                usb3 {
                        usb_port = &quot;3-10&quot;;
                };
        };

        usb_slot@13 {

                usb2 {
                        usb_port = &quot;3-11&quot;;
                };

                usb3 {
                        usb_port = &quot;3-11&quot;;
                };
        };

        usb_slot@14 {

                usb2 {
                        usb_port = &quot;3-12&quot;;
                };

                usb3 {
                        usb_port = &quot;3-12&quot;;
                };
        };

        usb_slot@15 {

                usb2 {
                        usb_port = &quot;4-1&quot;;
                };

                usb3 {
                        usb_port = &quot;4-1&quot;;
                };
        };

        usb_slot@16 {

                usb2 {
                        usb_port = &quot;4-2&quot;;
                };

                usb3 {
                        usb_port = &quot;4-2&quot;;
                };
        };

        usb_slot@17 {

                usb2 {
                        usb_port = &quot;4-3&quot;;
                };

                usb3 {
                        usb_port = &quot;4-3&quot;;
                };
        };

        usb_slot@18 {

                usb2 {
                        usb_port = &quot;4-4&quot;;
                };

                usb3 {
                        usb_port = &quot;4-4&quot;;
                };
        };
};
&lt;/code&gt;&lt;/pre&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;强制关机重启或在telnet中 &lt;code&gt;reboot&lt;/code&gt; ，进入引导，用浏览器访问引导的web配置界面，选择“高级”中的“自定义dts文件”上传你刚刚编辑好的文件，并进行一次编译，再正常启动即可完成对esata的配置&lt;/p&gt;
&lt;p&gt;另外也可以直接对系统中的dtb进行覆盖，但是可能会导致你的修改被系统覆盖而无法生效，所以不推荐，除非你是白的&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;sudo dtc -I dts -O dtb -o model.dtb model.dts
cp -f model.dtb /etc/model.dtb
cp -f model.dtb /etc.defaults/model.dtb
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>解决大陆无法Push到Github的问题</title><link>https://zyyme.com/fix-github-push.html</link><guid isPermaLink="true">https://zyyme.com/fix-github-push.html</guid><description>错误提示：ssh: connect to host github.com port 22: Connection refused 正门走不了就走后门 修改用户文件夹/.ssh/config，Windows设置一下显示隐藏文件可以看到 Linux或者macOS编辑 /.ssh/config 没有就新建一个 在底部增加以下内容 Host github.com H</description><pubDate>Fri, 26 Jan 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;错误提示：&lt;code&gt;ssh: connect to host github.com port 22: Connection refused&lt;/code&gt;&lt;br /&gt;
正门走不了就走后门&lt;br /&gt;
修改&lt;code&gt;用户文件夹/.ssh/config&lt;/code&gt;，Windows设置一下显示隐藏文件可以看到&lt;br /&gt;
Linux或者macOS编辑 &lt;code&gt;~/.ssh/config&lt;/code&gt; 没有就新建一个&lt;br /&gt;
在底部增加以下内容&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;  Host github.com
    Hostname ssh.github.com
    Port 443
    User git
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>Android Studio Gradle镜像配置</title><link>https://zyyme.com/android-studio-gradle-mirror-config.html</link><guid isPermaLink="true">https://zyyme.com/android-studio-gradle-mirror-config.html</guid><description>因为网络环境日益严峻，正常是无法新建项目的 左边文件顶部切换到Android（默认就是） 底部打开 settings.gradle.kts 在两处 google() 上方插入 maven { url=uri (&quot;https://www.jitpack.io&quot;)} maven { url=uri (&quot;https://maven.aliyun.com/repos</description><pubDate>Thu, 18 Jan 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;因为网络环境日益严峻，正常是无法新建项目的&lt;br /&gt;
左边文件顶部切换到Android（默认就是）&lt;br /&gt;
底部打开 &lt;code&gt;settings.gradle.kts&lt;/code&gt;&lt;br /&gt;
在两处 &lt;code&gt;google()&lt;/code&gt; 上方插入&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;maven { url=uri (&quot;https://www.jitpack.io&quot;)}
maven { url=uri (&quot;https://maven.aliyun.com/repository/releases&quot;)}
maven { url=uri (&quot;https://maven.aliyun.com/repository/google&quot;)}
maven { url=uri (&quot;https://maven.aliyun.com/repository/central&quot;)}
maven { url=uri (&quot;https://maven.aliyun.com/repository/gradle-plugin&quot;)}
maven { url=uri (&quot;https://maven.aliyun.com/repository/public&quot;)}
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>Kindle8 (Kindle558/咪咕版) 备份与刷机</title><link>https://zyyme.com/kindle8.html</link><guid isPermaLink="true">https://zyyme.com/kindle8.html</guid><description>首先亚马逊已经退出中国大陆市场了，简单的说就是书城不再有中国大陆的正版书，并且kindle.cn的国区账号不再提供服务，这不代表他废了，你可以使用kindle.com的国际服账号来享受原来的个人文档邮箱推送服务 2019年收了一个二手的Voyage，然后21年出掉了，如今又收了一个558用于折腾（ 本文针对Kindle8，也就是入门款的售价558元的不带前光</description><pubDate>Tue, 16 Jan 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;首先亚马逊已经退出中国大陆市场了，简单的说就是书城不再有中国大陆的正版书，并且kindle.cn的国区账号不再提供服务，这不代表他废了，你可以使用kindle.com的国际服账号来享受原来的个人文档邮箱推送服务&lt;/p&gt;
&lt;p&gt;2019年收了一个二手的Voyage，然后21年出掉了，如今又收了一个558用于折腾（&lt;/p&gt;
&lt;p&gt;本文针对Kindle8，也就是入门款的售价558元的不带前光，后盖平整，配置为512M+4G的版本，定制的咪咕版同理（就是在退出中国大陆市场前那次打卡xx天全返的活动的机器），CPU均为iMX6&lt;/p&gt;
&lt;p&gt;至于为什么不是其他机器，因为亚马逊在新的kindle上增加了Bootloader锁（BL锁）难以越狱折腾（KO2，PW4，2019年有前光的入门款K10，时间线可以参考 &lt;a href=&quot;https://en.wikipedia.org/wiki/Amazon_Kindle&quot;&gt;维基百科&lt;/a&gt;）&lt;/p&gt;
&lt;p&gt;咪咕版则可以通过绕过启动验证的方式启动第三方系统，但是有锁，uboot还是只能启动原版的，&lt;br /&gt;
本文也会讲述Kindle刷安卓的相关问题。&lt;/p&gt;
&lt;h2&gt;系统&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;亚马逊原装Linux系统，遵循GPL协议，代码是开源的&lt;/li&gt;
&lt;li&gt;Kdroid，一个需要花费160元买激活码的闭源第三方Android，并没有遵循协议开源，Android4.4&lt;/li&gt;
&lt;li&gt;Crackdroid，上方的破解版，无需激活码，免费提供，但由于被大量奸商以“刷安卓不收费，xx收费”的形式进行付费刷机，目前已大范围撤包（咩咩有，如果你能证明你不是奸商并且自用的情况下我可以发给你以用于学习，并请在24小时内删除）&lt;/li&gt;
&lt;li&gt;Kosp，由Ygjsz主重新开发的Android 5.1.1 AOSP，只适用于亚马逊板558和咪咕板558，是开源的&lt;/li&gt;
&lt;li&gt;咪咕板系统，是严重阉割深度定制的Android 5.1.1，可以在亚马逊板558和咪咕板558上运行&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;越狱&lt;/h2&gt;
&lt;p&gt;既获取系统的root权限，这是刷机和备份的前提&lt;br /&gt;
看 &lt;a href=&quot;https://bookfere.com/?s=%E8%B6%8A%E7%8B%B1&quot;&gt;书伴的文章&lt;/a&gt;&lt;br /&gt;
或者 &lt;a href=&quot;https://www.bilibili.com/video/BV1zs4y1s71p&quot;&gt;拆机短接越狱&lt;/a&gt;&lt;br /&gt;
~~ 或者 &lt;a href=&quot;/kindle-voyage-jailbreak.html&quot;&gt;拆机越狱&lt;/a&gt; ~~&lt;/p&gt;
&lt;h2&gt;备份&lt;/h2&gt;
&lt;p&gt;相当于后悔药，假如你刷了Android想刷回来，这可以让你完整的还原到原来的状态，但是需要花费比较多的时间，适用于所有Kindle&lt;/p&gt;
&lt;p&gt;提供一种新的方案，直接挂载usb模式：&lt;br /&gt;
在kindle上运行&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;dd if=/dev/mmcblk0boot0 of=/mnt/us/mmcblk0boot0.img
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;插上数据线，把这个mmcblk0boot0.img复制出来，拔掉usb&lt;br /&gt;
在kindle上运行这些命令，usb插上就会出现整个emmc的u盘，将他dd或者win32diskimage备份出来&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;rmmod g_mass_storage
modprobe g_mass_storage file=/dev/mmcblk0
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;可以手动备份u盘分区的数据（3G）那只要备份前面700m就行，还原回去后插电脑格式化一下拷贝回去就行&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;dd if=/dev/disk4 of=mmcblk0-700m.img bs=100M count=7
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;使用局域网netcat的办法：&lt;br /&gt;
&amp;lt;details&amp;gt;&lt;br /&gt;
需要一台安装了netcat命令的Linux或者Mac机器用于存储备份镜像，下面称其为服务端，需要开放防火墙，Windows太麻烦了而且可能出错，你要是没有手机上装个termux也不是不行&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# 服务端
nc -l 12345 -vv | dd of=保存文件名
# Kindle上
dd if=分区路径 bs=10M count=1  | nc 服务端ip 12345 -vv
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;也可以反过来，让服务端连Kindle，但是如果你的nc不支持&lt;code&gt;-q 0&lt;/code&gt;传输完成不会自动退出&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# 服务端
nc -q 0 Kindle的ip 12345 &amp;gt; 保存文件名
# Kindle上
dd if=分区路径 bs=10M | nc -l -vv -p 12345
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;好了，你已经学会如何使用netcat了，分区有&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;/dev/mmcblk0boot0
/dev/mmcblk0boot1
/dev/mmcblk0
/dev/mmcblk0p1
/dev/mmcblk0p2
/dev/mmcblk0p3
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;lt;/details&amp;gt;&lt;/p&gt;
&lt;p&gt;咪咕那种Android系统的请拆机解除启动验证，并且启动twrp后，在twrp里 &lt;code&gt;adb pull 分区路径&lt;/code&gt; 进行备份，分区在 &lt;code&gt;/dev/block/&lt;/code&gt; 中，一样是备份下面3个就行，路径自己改一下&lt;br /&gt;
请举一反三，我就只举第一种例子，单数行是服务器运行的，双数行是Kindle上运行的，手动一行行运行&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;nc -l 12345 -vv | dd of=boot0.img
dd if=/dev/mmcblk0boot0 bs=10M | nc 服务端ip 12345 -vv
nc -l 12345 -vv | dd of=boot1.img
dd if=/dev/mmcblk0boot1 bs=10M | nc 服务端ip 12345 -vv
nc -l 12345 -vv | dd of=32m.img
dd if=/dev/mmcblk0 bs=32M count=1 | nc 服务端ip 12345 -vv
nc -l 12345 -vv | dd of=full.img
dd if=/dev/mmcblk0 bs=10M | nc 服务端ip 12345 -vv
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;最后那行会非常慢，请慢慢等，最好插上充电器，这样锁屏不会断开WiFi，完成了会自动退出，可以看输出文件大小和网卡速度来确认是否有在传输，full的大小和设备rom大小差不多（比如4G、16G），出现failed则为错误了，请自己Google查查报错信息，一般都是局域网无法互相通信或是防火墙没关/端口没开放&lt;/p&gt;
&lt;h2&gt;刷机&lt;/h2&gt;
&lt;p&gt;先看 &lt;a href=&quot;/assets/uploads/2024/01/hlwm1e0cgx.pdf&quot;&gt;Kindle刷机指南Ver2.2 220305.pdf&lt;/a&gt; 写的很详细了，请逐字看完&lt;br /&gt;
其中刷入Android的uboot，你可以把main-htmlviewer.tar.gz解压，进到最里面的文件夹有个uboot，把它dd到mmcblk0boot0，然后重启的时候长按电源键使其闪烁两次橙色灯后在绿灯闪烁时放手，进入fastboot，可以避免概率变砖。&lt;/p&gt;
&lt;h2&gt;mft短接救砖&lt;/h2&gt;
&lt;p&gt;就跟短接越狱一样，但是u-boot.bin需要换成 &lt;a href=&quot;http://kdroid.club/firmtest/kindle/tools/extensions.zip&quot;&gt;这个&lt;/a&gt; 里面的heisneberg，&lt;br /&gt;
点start，拔掉电池，短接，插线，长按3s开机，这时候进度条再走了，可以把电池插上，&lt;br /&gt;
然后再&lt;code&gt;fastboot flash bootloader uboot&lt;/code&gt;把上面的Android的uboot刷进去&lt;/p&gt;
&lt;h2&gt;在刷了Android后还原亚马逊Linux&lt;/h2&gt;
&lt;p&gt;首先需要dd和Python3和adb工具，都配到path里，在备份存放位置打开终端或cmd&lt;br /&gt;
刷入uboot&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;adb push boot0.img /tmp/x
adb shell dd if=/tmp/x of=/dev/block/mmcblk0boot0
adb shell rm /tmp/x
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;分块刷入emmc，先&lt;code&gt;python3&lt;/code&gt;或者&lt;code&gt;python&lt;/code&gt;启动python3然后贴进去回车，跑完了Ctrl+D退出&lt;br /&gt;
Windows请自己去装个dd for windows&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;import os
ddif=&apos;full.img&apos;
ddof=&apos;/dev/block/mmcblk0&apos;
ddbs=str(100*1024*1024)
i=0
while True:
  print(&quot;part &quot;+str(i))
  os.system(&quot;dd if=&quot;+ddif+&quot; of=x bs=&quot;+ddbs+&quot; count=1 skip=&quot;+str(i))
  if not os.path.getsize(&apos;x&apos;):
    break
  os.system(&quot;adb push x /tmp/x&quot;)
  os.system(&quot;adb shell dd if=/tmp/x of=&quot;+ddof+&quot; bs=&quot;+ddbs+&quot; seek=&quot;+str(i))
  os.system(&quot;adb shell rm /tmp/x&quot;)
  i+=1
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;还原完成，重启&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;adb shell sync
adb shell sync
adb shell reboot
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Android内存参数优化&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;adb shell&lt;/code&gt; 运行&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;setprop dalvik.vm.heapstartsize 4m
setprop dalvik.vm.heapgrowthlimit 128m
setprop dalvik.vm.heapsize 256m
setprop dalvik.vm.heaptargetutilization 0.9
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;可以先看一下默认值&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;getprop dalvik.vm.heapstartsize
getprop dalvik.vm.heapgrowthlimit
getprop dalvik.vm.heapsize
getprop dalvik.vm.heaptargetutilization
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;我这里是 5m 48m 128m 0.75&lt;/p&gt;
</content:encoded></item><item><title>禁用crontab -r</title><link>https://zyyme.com/disable-crontab-remove.html</link><guid isPermaLink="true">https://zyyme.com/disable-crontab-remove.html</guid><description>一键，使用root用户或者sudu运行命令，将为所有用户增加这个保护 find /home /root -maxdepth 2 -name &quot;.shrc&quot; -type f -exec sh -c &quot;grep -q &apos;crontab()&apos; {} &amp;&amp; echo {} || (echo {} &amp;&amp; echo &apos;crontab(){&apos; {} &amp;&amp; echo &apos; [</description><pubDate>Fri, 12 Jan 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;一键，使用root用户或者sudu运行命令，将为所有用户增加这个保护&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;find /home /root -maxdepth 2 -name &quot;.*shrc&quot; -type f -exec sh -c &quot;grep -q &apos;crontab()&apos; {} &amp;amp;&amp;amp; echo {} || (echo &amp;gt;&amp;gt; {} &amp;amp;&amp;amp; echo &apos;crontab(){&apos; &amp;gt;&amp;gt; {} &amp;amp;&amp;amp; echo &apos;  [[ \$@ =~ -[iel]*r ]] &amp;amp;&amp;amp; echo \&quot;crontab remove command is disabled\&quot; || command crontab \&quot;\$@\&quot;&apos; &amp;gt;&amp;gt; {} &amp;amp;&amp;amp; echo &apos;}&apos; &amp;gt;&amp;gt; {})&quot; \;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;可以重复执行，不会重复添加&lt;br /&gt;
其原理就是在&lt;code&gt;.bashrc&lt;/code&gt;或者&lt;code&gt;.zshrc&lt;/code&gt;等shell的rc文件添加了一个方法覆盖&lt;code&gt;crontab&lt;/code&gt;命令&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;crontab(){
  [[ $@ =~ -[iel]*r ]] &amp;amp;&amp;amp; echo &quot;crontab remove command is disabled&quot; || command crontab &quot;$@&quot;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;你可能会好奇为什么我会写这个，因为手抖将&lt;code&gt;crontab -e&lt;/code&gt;执行成了&lt;code&gt;crontab -r&lt;/code&gt;将生产服务器当前用户的crontab给清空了&lt;br /&gt;
以前是使用重命名crontab命令并用一个sh代替他的办法，但这需求修改系统，或是写一个alias来将命令指向一个脚本，这样不优雅，于是尝试寻找更棒的方案，于是写出了这个&lt;/p&gt;
</content:encoded></item><item><title>一说宝宝s1</title><link>https://zyyme.com/ysbbs1.html</link><guid isPermaLink="true">https://zyyme.com/ysbbs1.html</guid><description>简单的说，这就是一个大号随身wifi，骁龙210 512m+4g的配置，带摄像头喇叭麦克风，简直就是工作咩闹钟绝配 先来看视频：[BV1zC4y1N7uk][1] 由于厂家过于良心，所有app都是装在用户空间而不是固化在系统中的，所有可以直接删掉所有他自带的app装自己的服务 工作咩闹钟 使用Golang+Kotlin开发，[在Github开源][2] [1</description><pubDate>Sun, 31 Dec 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;简单的说，这就是一个大号随身wifi，骁龙210 512m+4g的配置，带摄像头喇叭麦克风，简直就是工作咩闹钟绝配&lt;br /&gt;
先来看视频：&lt;a href=&quot;https://www.bilibili.com/video/BV1zC4y1N7uk&quot;&gt;BV1zC4y1N7uk&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;由于厂家过于良心，所有app都是装在用户空间而不是固化在系统中的，所有可以直接删掉所有他自带的app装自己的服务&lt;/p&gt;
&lt;h3&gt;工作咩闹钟&lt;/h3&gt;
&lt;p&gt;使用Golang+Kotlin开发，&lt;a href=&quot;https://github.com/zanjie1999/workdayAlarmClockAndroid&quot;&gt;在Github开源&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;https://www.123pan.com/s/oyRbVv-vytjh.html&quot;&gt;123云盘下载&lt;/a&gt; 提取码:郑羊羊咩&lt;br /&gt;
是一个我写的开源跨平台中国法定工作日闹钟，同时具备网易云音乐歌单播放功能，实现除语音助手外智能音响的功能&lt;br /&gt;
已对此设备进行特殊适配，机身上的按键可以直接控制播放，鼻子是停止&lt;br /&gt;
20230104通过逆向自带app，实现了自带15x4灯板的控制，访问 &lt;code&gt;http://设备ip:8080/echo?msg=YSLED%20数字&lt;/code&gt; 或者直接在app中输入&lt;code&gt;ysled 数字&lt;/code&gt; 并按回车来实现控制，具体可以参考 &lt;code&gt;MeYsLed.java&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;先安装网盘中的7kDesktop&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;adb install 文件拖到窗口里
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;使用scrcpy投屏，点击“暂停自启服务”&lt;br /&gt;
按鼠标中键，选择lancher，始终，这样桌面就换成自己的了，长按桌面上的YiShuo图标并强制停止，关闭官方的服务后可以提升扬声器的低音&lt;br /&gt;
进设置连一下wifi，并点一下右上角三个点，高级，滑动到下面看一下设备ip&lt;br /&gt;
同上，安装工作咩闹钟的apk版本，然后重启就行，访问http://设备ip:8080即可进入控制台&lt;/p&gt;
&lt;h3&gt;开机启动网络adb&lt;/h3&gt;
&lt;p&gt;插电脑上，先&lt;code&gt;adb shell&lt;/code&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;su
mount -o remount,rw /system
echo &apos;service.adb.tcp.port=5555&apos; &amp;gt;&amp;gt; /system/build.prop
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;试了一下配置成默认mtp设备不行，内置存储不能自动挂上&lt;/p&gt;
&lt;h3&gt;飞行模式&lt;/h3&gt;
&lt;p&gt;不插手机卡也会费电，可以开一下飞行模式，一直唤醒一晚费电4%，为了避免wifi蓝牙被关还得配置一下&lt;br /&gt;
插电脑上，先&lt;code&gt;adb shell&lt;/code&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;settings put global airplane_mode_radios cell,wimax
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;然后scrcpy投屏上去在设置里开一下飞行模式&lt;/p&gt;
&lt;h3&gt;小爱同学&lt;/h3&gt;
&lt;p&gt;装个小爱同学app就能实现&lt;br /&gt;
在桌面长按小爱同学图标，点权限，进行勾选，按提示进入设置关掉悬浮窗权限&lt;br /&gt;
右上角三个点选显示系统应用，每个应用点进去关掉开关，再点上方圆圈i图标去强制停止（重启马上去设置也行）&lt;br /&gt;
最后返回，在桌面长按小爱同学图标，点权限，全部勾选&lt;/p&gt;
</content:encoded></item><item><title>PVE虚拟化配置Proxmox VE</title><link>https://zyyme.com/pve-config.html</link><guid isPermaLink="true">https://zyyme.com/pve-config.html</guid><description>这篇文章将带你快速的配置pve 首先强调一下，自从8.1开始的安装盘使用了一种非常傻逼的方式去启动，导致你必须把iso用dd写入一个u盘才能启动 官网的下载在 https://www.proxmox.com/en/downloads/proxmox-virtual-environment 别下错了 安装完成后访问你设置的固定ip的 https://ip地址:</description><pubDate>Fri, 22 Dec 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;这篇文章将带你快速的配置pve&lt;br /&gt;
首先强调一下，自从8.1开始的安装盘使用了一种非常傻逼的方式去启动，导致你必须把iso用dd写入一个u盘才能启动&lt;br /&gt;
官网的下载在 &lt;code&gt;https://www.proxmox.com/en/downloads/proxmox-virtual-environment&lt;/code&gt; 别下错了&lt;br /&gt;
安装完成后访问你设置的固定ip的 &lt;code&gt;https://ip地址:8006/&lt;/code&gt; 进入控制台，并且在控制台登录时可以选择中文语言&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h2&gt;切换软件源&lt;/h2&gt;
&lt;p&gt;华为有钱，在镜像站的下载速度上瑶瑶领先&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sed -i &apos;s|^deb http://ftp.debian.org|deb https://mirrors.huaweicloud.com|g&apos; /etc/apt/sources.list
sed -i &apos;s|^deb http://security.debian.org|deb https://mirrors.huaweicloud.com/debian-security|g&apos; /etc/apt/sources.list
source /etc/os-release
echo &quot;deb https://mirrors.ustc.edu.cn/proxmox/debian/pve $VERSION_CODENAME pve-no-subscription&quot; &amp;gt; /etc/apt/sources.list.d/pve-no-subscription.list
if [ -f /etc/apt/sources.list.d/ceph.list ]; then CEPH_CODENAME=`ceph -v | grep ceph | awk &apos;{print $(NF-1)}&apos;`; source /etc/os-release; echo &quot;deb https://mirrors.ustc.edu.cn/proxmox/debian/ceph-$CEPH_CODENAME $VERSION_CODENAME no-subscription&quot; &amp;gt; /etc/apt/sources.list.d/ceph.list; fi
mv /etc/apt/sources.list.d/pve-enterprise.list /etc/apt/sources.list.d/pve-enterprise.list.bak
apt update
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;合并local和local-btrfs&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;cd /var/lib
find vz -type f
# 看清楚了上面这条输出是不是都是空的，是空的才可以删，不是空的先把文件移到/var/lib/pve/local-btrfs
rm -rf vz &amp;amp;&amp;amp; ln -s /var/lib/pve/local-btrfs vz
ls -l vz
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>RX5600XT降压超频并固化到VBIOS</title><link>https://zyyme.com/rx5600xt-oc-vbios.html</link><guid isPermaLink="true">https://zyyme.com/rx5600xt-oc-vbios.html</guid><description>rx5600xt-vbios-fix.jpg 本文将讲述如何修改AMD的显卡BIOS，这篇文章页适合其他amd显卡，就是新的卡可能得用新的工具才能修改 修改显卡控制面板超频频率上限，修改GPU、显存默认频率、电压，风扇调速规则，降低功耗提升性能 首先我的显卡是这款 Radeon™ RX 5600 XT WINDFORCE OC 6G rev. 2.0 官方有</description><pubDate>Fri, 10 Nov 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;/assets/uploads/2023/11/hjpz8p5u94.jpg&quot; alt=&quot;rx5600xt-vbios-fix.jpg&quot; /&gt;&lt;br /&gt;
本文将讲述如何修改AMD的显卡BIOS，这篇文章页适合其他amd显卡，就是新的卡可能得用新的工具才能修改&lt;br /&gt;
修改显卡控制面板超频频率上限，修改GPU、显存默认频率、电压，风扇调速规则，降低功耗提升性能&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;首先我的显卡是这款 &lt;a href=&quot;https://www.gigabyte.cn/Graphics-Card/GV-R56XTWF2OC-6GD&quot;&gt;Radeon™ RX 5600 XT WINDFORCE OC 6G rev. 2.0&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;官方有提供一个版本号是068的，049的是没有鸡血的，先给他更新了&lt;br /&gt;
修改vbios有风险，你一旦没按本文操作漏了一些操作（比如没勾上unlock），则会黑，这时候bios无法通过自检，就算你开了远程桌面也开不了机，需要一个带核显的cpu开机刷，或者一个双显卡槽的主板，把这张卡插在第二个槽进行刷写&lt;br /&gt;
我因为最后一次修改忘勾unlock，于是刷黑了，靠家里那台老e3的b85-d3v双槽刷回来的&lt;/p&gt;
&lt;p&gt;刷入vbios需要win10，win7亲测刷不了(即使装了驱动也cannot load driver)&lt;/p&gt;
&lt;h2&gt;准备&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;https://zyyme.lanzout.com/irELu1edfong&quot;&gt;下载这个zip&lt;/a&gt;，密码:zyyme，解压到桌面&lt;/li&gt;
&lt;li&gt;运行 &lt;code&gt;AMDVBFlashDriverInstaller.exe&lt;/code&gt; 按 &lt;code&gt;i&lt;/code&gt; 安装刷写驱动&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;code&gt;管理员cmd&lt;/code&gt; 的打开方式 开始菜单键盘输入 &lt;code&gt;cmd&lt;/code&gt; 右键管理员运行&lt;br /&gt;
&lt;code&gt;绝对路径&lt;/code&gt; 就是你打开了文件夹，点一下顶部地址栏，显示的就是，如果是文件，直接拖入cmd窗口就行&lt;/p&gt;
&lt;h3&gt;备份vbios&lt;/h3&gt;
&lt;p&gt;管理员cmd运行&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cd amdvbflash3.04plus的绝对路径
amdvbflash -s 0 backup.rom
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;其中&lt;code&gt;-s 0&lt;/code&gt;的0是显卡的序号，可以 &lt;code&gt;amdvbflash -i&lt;/code&gt; 看到列表，下同&lt;/p&gt;
&lt;h2&gt;修改vbios&lt;/h2&gt;
&lt;h3&gt;MorePowerTool&lt;/h3&gt;
&lt;p&gt;load你备份的vbios，如果你改过一次了还想再改，可以load最后输出的文件&lt;/p&gt;
&lt;h4&gt;Features&lt;/h4&gt;
&lt;p&gt;点 &lt;code&gt;Feature Control&lt;/code&gt; 勾上 &lt;code&gt;DPM_GFX_PACE&lt;/code&gt; 和 &lt;code&gt;GFXOFF&lt;/code&gt; 可以降低功耗，关掉 &lt;code&gt;DS_GFXCLK&lt;/code&gt; 可以关掉深度休眠（我没关）&lt;br /&gt;
改完了戳一下 &lt;code&gt;Write SPPT&lt;/code&gt;&lt;/p&gt;
&lt;h4&gt;Overdrive Limits&lt;/h4&gt;
&lt;p&gt;显卡控制面板里的超频限制&lt;br /&gt;
GFX是核心，Memory是显存，Power是功耗墙，都是字面意思，可以吧GFX Max改成2100，其他不动，毕竟矿卡也没少锻炼过，显存会被矿老板超，核心不超，显存和供电不太适合加，gpu因为都功耗墙频率随便拉反正也跑不上去，但拉高了频率可以让游戏中瞬间性能提升&lt;br /&gt;
Fan Aco是自动控制风扇的范围，可以适当提高max，但不要超过Fan Max，也可以不动&lt;/p&gt;
&lt;h4&gt;Power and Volage&lt;/h4&gt;
&lt;p&gt;是电压和功耗墙，建议不要动，1050mv已经很高了，Power Limit可以根据散热情况增加，TDC是电流&lt;br /&gt;
反正我这张双风扇的卡只能压住默认的135w，150w可以跑到1755mhz并且原神枫丹4k60全高，但是温度101度&lt;/p&gt;
&lt;h4&gt;Frequency&lt;/h4&gt;
&lt;p&gt;默认频率，建议把调整好的超频频率直接输入到这里&lt;br /&gt;
GFX是核心，建议不要超过1900，能跑到1850左右，Memory是显存频率除以2，Soc不要动&lt;br /&gt;
内存超频则修改最后一档内存频率，也就是DPM 3&lt;br /&gt;
我核显设置成1800，这样能跑到1700左右，电压在900mv内，相对比较凉快，再网上超频后性能提升不大，功耗提升很大&lt;br /&gt;
我将最后一档内存频率由默认的875改为850，也就是鸡血的1750mhz降频到1700mhz，因为每次直播都不太稳定，在崩溃的边缘，经过多次测试是显存跑不上去了&lt;/p&gt;
&lt;h4&gt;Curve&lt;/h4&gt;
&lt;p&gt;频率电压曲线，打开&lt;code&gt;navi_curve_helper_1.0.2.exe&lt;/code&gt;，&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;将目前显示的abc从左到右抄到Stock curve里&lt;/li&gt;
&lt;li&gt;打开显卡控制面板，把你测试稳定的超频参数的频率电压 除以1000 对着位置填进去Modded volt，比如2102就填2.102&lt;/li&gt;
&lt;li&gt;显卡控制面板里，点一下默认（关闭超频）点一下自定义（将展示默认的参数）, 像第2点那样抄到Stock volt里，其中Botton的Volts看图形的左下角小字填写(比如0.67)，Mid对应中间的输入框，Top的电压需要减0.025左右，不然曲线永远不对&lt;/li&gt;
&lt;li&gt;点击下面蓝色Calc，把下面输出的Modded curve抄到MorePowerTool里，并勾上Override
我经过多次调整和n次崩溃的测试的，建议设置成：-0.133211 0.222327 -0.029012&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;以后修改了电压参数，只需要做2和4就可以了&lt;/p&gt;
&lt;h4&gt;Fan&lt;/h4&gt;
&lt;p&gt;可以调节风扇的转速曲线，复制一段别人的话来解释一下，写的挺好&lt;br /&gt;
Fan Target Temperature(风扇目标温度)，这个温度和上面的几个转速控制相关联，显卡风扇首先会尝试以Fan Acoustic Limit的转速来进行散热，如果在此转速下超过了目标温度，则风扇会提高到Fan Throtteling的转速，如果还是压不下温度，则风扇会以Fan Maximum转速运行&lt;/p&gt;
&lt;p&gt;我的修改是，Fan Throtteling改到风扇不是很吵的转速3000，Fan Acoustic Limit设置成开始有声音的的转速2500，Fan Target Temperature设置成80度（效率比较高），zero开启，60起转50停转&lt;/p&gt;
&lt;p&gt;改完了，点save保存一个mpt文件，下面会用到&lt;/p&gt;
&lt;h3&gt;RedBiosEditor&lt;/h3&gt;
&lt;p&gt;这个用于把上面的修改打包bios文件，这个操作至关重要，黑不黑全看这里的操作，上面只要你不动最高电压上限1050mv，功耗墙不是太离谱，怎么改都不会出事&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;load你备份的vbios，如果你改过一次了还想再改，必须选原始备份，不然曲线会不对&lt;/li&gt;
&lt;li&gt;有 &lt;code&gt;unlock&lt;/code&gt; 的请务必勾上，不然会黑，每次都要勾选&lt;/li&gt;
&lt;li&gt;切换到PowerPlay的tab，load一下刚刚改好的mpt文件&lt;/li&gt;
&lt;li&gt;VRM Con改显存电压，VRAM Tim改显存时序的，这里不动（矿卡显存本来就不稳定），点save导出oc.rom，存到amdvbflash3.04plus文件夹里，这就是可以直接刷进去的文件了&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果你二次修改bios文件，已经unlock过的文件不会出现unlock的勾选，是正常的&lt;/p&gt;
&lt;h2&gt;刷入vbios&lt;/h2&gt;
&lt;p&gt;管理员cmd运行&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cd amdvbflash3.04plus的绝对路径
amdvbflash -p 0 oc.rom
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;耐心等等，大概1分钟就能写好，会有提示原bios和新bios基本信息，&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;如果没有任何提示电脑直接卡死，不要慌，直接强制重启就行，还没刷进去，铁定是文件有问题&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;如果刷了错误的文件还刷成功了，不要慌，重新刷正确的进去就行&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;如果不慎刷黑了，先看显卡有没有双bios切换开关，可以换一下进系统再换回来刷（我这款没有），没有就需要一个带核显的cpu开机刷，或者一个双显卡槽的主板，把这张卡插在第二个槽进行刷写，动手能力强的可以拆卡，找bios芯片，用ch341a编程器和夹子刷上面导出的rom文件&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Linux screen使用教程</title><link>https://zyyme.com/linux-screen.html</link><guid isPermaLink="true">https://zyyme.com/linux-screen.html</guid><description>详细可以先看看 [GNU官方的文档][1] 英语的，不建议用翻译机 这就简单说说，让你1分钟上手 命令 开一个screen screen -S 名字 查看当前screen列表 screen -ls 将某个强制放到后台 screen -S 名字 -d 恢复某一个到前台 screen -S 名字 -r 快捷键 首先简单说一下比如^A c是按一下Ctrl+a这个组</description><pubDate>Thu, 12 Oct 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;详细可以先看看 &lt;a href=&quot;https://www.gnu.org/software/screen/manual/screen.html&quot;&gt;GNU官方的文档&lt;/a&gt; 英语的，不建议用翻译机&lt;br /&gt;
这就简单说说，让你1分钟上手&lt;/p&gt;
&lt;h2&gt;命令&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;# 开一个screen
screen -S 名字
# 查看当前screen列表
screen -ls
# 将某个强制放到后台
screen -S 名字 -d
# 恢复某一个到前台
screen -S 名字 -r
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;快捷键&lt;/h2&gt;
&lt;p&gt;首先简单说一下比如&lt;code&gt;^A c&lt;/code&gt;是按一下&lt;code&gt;Ctrl+a&lt;/code&gt;这个组合键，再按一下&lt;code&gt;c&lt;/code&gt;&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;组合键&lt;/th&gt;
&lt;th&gt;用途&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;^A c&lt;/td&gt;
&lt;td&gt;创建一个新的screen窗口&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;^A 1&lt;/td&gt;
&lt;td&gt;切换到1号窗口（总共有0-9第一个是0）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;^A k&lt;/td&gt;
&lt;td&gt;关掉当前的窗口&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;^A d&lt;/td&gt;
&lt;td&gt;放在后台跑&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;^A w&lt;/td&gt;
&lt;td&gt;在底部展示当前所有的窗口列表&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;^A ^A&lt;/td&gt;
&lt;td&gt;在这一个和上一个窗口之间切换&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;^A a&lt;/td&gt;
&lt;td&gt;相当于在shell中按&lt;code&gt;Ctrl+a&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;^A esc键&lt;/td&gt;
&lt;td&gt;此时可以用方向键滚动历史记录按esc退出该模式&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;^A \&lt;/td&gt;
&lt;td&gt;关掉所有窗口并退出(相当于挨个&lt;code&gt;^A k&lt;/code&gt;)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;^A ?&lt;/td&gt;
&lt;td&gt;展示快捷键说明&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2&gt;写进脚本里&lt;/h2&gt;
&lt;p&gt;可以纯后台运行，有两种方案&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;用一条命令实现，缺点显而易见，一个screen只能开一个程序&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;screen -dmS candy bash -c &apos;你的启动命令&apos;
&lt;/code&gt;&lt;/pre&gt;
&lt;ol&gt;
&lt;li&gt;通过指令控制，优点是可以在一个screen开多个窗口，缺点是操作繁琐
&lt;code&gt;-X&lt;/code&gt;后面的其实就是按&lt;code&gt;^A :&lt;/code&gt;后可以输入的命令，文档中的&lt;code&gt;Command: &lt;/code&gt;后面的东西&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;# 打开名叫me的新screen并放在后台
screen -dmS me
# 执行命令 其中 ^M 是回车键 ^C 是 Ctrl+c 这个组合键
screen -S meuwb -X stuff &quot;htop^M&quot;
# 在这个screen里开一个新窗口（默认是0，运行一次后创建并切换到1以此类推加到9）
screen -S meuwb -X screen
# 切换到窗口0
screen -S meuwb -X select 0
# 关掉当前窗口
screen -S meuwb -X kill
# 关掉所有窗口并退出
screen -S meuwb -X quit
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;举一反三，就可以在开机启动的时候运行一个screen并在里面跑多个程序&lt;/p&gt;
&lt;p&gt;其他大概用不到的命令&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;命令&lt;/th&gt;
&lt;th&gt;用途&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;next&lt;/td&gt;
&lt;td&gt;切换到下一个窗口&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;prev&lt;/td&gt;
&lt;td&gt;切换到上一个窗口&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;other&lt;/td&gt;
&lt;td&gt;在这一个和上一个之间切换&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
</content:encoded></item><item><title>咩温控</title><link>https://zyyme.com/me-miui-8gen2.html</link><guid isPermaLink="true">https://zyyme.com/me-miui-8gen2.html</guid><description>咩温控是一款适用于MIUI 澎湃OS 8+Gen1 8Gen2 8Gen3机型的温控 请逐字仔细看该说明，这就像心海的锦囊，可以帮助你解决大部分问题 本说明为8Gen2版本，但也最详细，其他cpu的版本仅为频率配置根据实际功耗比浮动，实际体验一致，在保证够用的性能的情况下尽量省电降温 内部测试QQ群914919401 群仅用于咩温控的调试与测试，请勿讨论无关</description><pubDate>Tue, 29 Aug 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;咩温控是一款适用于MIUI 澎湃OS 8+Gen1 8Gen2 8Gen3机型的温控&lt;/p&gt;
&lt;h3&gt;请逐字仔细看该说明，这就像心海的锦囊，可以帮助你解决大部分问题&lt;/h3&gt;
&lt;p&gt;本说明为8Gen2版本，但也最详细，其他cpu的版本仅为频率配置根据实际功耗比浮动，实际体验一致，在保证够用的性能的情况下尽量省电降温&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;内部测试QQ群914919401&lt;br /&gt;
群仅用于咩温控的调试与测试，请勿讨论无关内容，小白请不要加群，谢谢合作&lt;br /&gt;
入群请确保你熟练和了解：&lt;br /&gt;
解锁bootloader，root，cpu和gpu频率的关系，功耗与性能和发热的关系，温控的角色与目的，MIUI云控、调度、温控工作方式，正确的记录数据，截取长截图&lt;/p&gt;
&lt;h3&gt;更新发布于这个网盘&lt;/h3&gt;
&lt;p&gt;https://zyyme.lanzout.com/b0acmncdi&lt;br /&gt;
密码:郑羊羊&lt;/p&gt;
&lt;h2&gt;咩温控&lt;/h2&gt;
&lt;p&gt;几乎每天都更新至少一次&lt;br /&gt;
有 性能模式 和 均衡模式 以及 游戏均衡 3种，适配系统的性能模式开关&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;均衡模式，亮屏快充（60w起步），温控激进，绝对不会烫（37度）&lt;/li&gt;
&lt;li&gt;性能模式，限制充电速度（大约30w），性能激进，游戏绝对不会卡（47度）&lt;/li&gt;
&lt;li&gt;游戏均衡，添加到游戏中心中的游戏，侧边栏选择均衡模式既为该模式，在性能模式的基础上，限制性能，达到持续稳定的性能输出（40度）&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;运行无需root（只要能放进去就能用），需要解bl锁，依赖官方”电量和性能”运行，请关闭任何“温控”、“去云控”相关模块避免冲突（Cemiuiler去云控可以共存），不能与破坏温控以及调度的程序共存（比如潘多拉内核），可以与a-soul共存，至于scene调度能否共存请自测，试用期到了没钱冲订阅&lt;/p&gt;
&lt;p&gt;将config里的4个文件放到&lt;br /&gt;
&lt;code&gt;/data/vendor/thermal/config&lt;/code&gt;&lt;br /&gt;
注意不是&lt;code&gt;/sdcard/Android/data&lt;/code&gt;&lt;br /&gt;
如果目录中有文件，请全部删掉，是云控下发的负优化&lt;br /&gt;
卸载就是删掉这4个文件&lt;br /&gt;
如果你只想要快充加速以及日用均衡，游戏等维持原样，只放 &lt;code&gt;thermal-normal.conf&lt;/code&gt; 即可&lt;/p&gt;
&lt;p&gt;开关一下系统设置或状态栏或游戏侧边栏的性能模式实时生效&lt;br /&gt;
试试能不能正常切换性能模式，不能正确切换，请先重启手机试试&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;使用那个“国际板”的map覆盖一下当前的&lt;/li&gt;
&lt;li&gt;因为这个温控的工作原理是使用了系统云控的工作方式来实现，所以你必须确保你的“电量和性能”这个app是没有被修改过的
清除“电量和性能”的数据，删除&lt;code&gt;/data/vendor/thermal&lt;/code&gt;文件夹并重启手机可以恢复默认的应用列表，再重新放入温控测试&lt;/li&gt;
&lt;li&gt;可以通过拨号盘输入 &lt;code&gt;*#*#76937#*#*&lt;/code&gt; 进入配置选项“神隐模式云控信息”
大概只有开发版可以进入，然后有个修改云控自动同步的按钮可以禁用云控更新，并且点击“更新China服务器数据”再重新放入温控测试&lt;/li&gt;
&lt;li&gt;如果还不行，请看上方排除冲突，如果还不行请看最后“需要一些技术但更简单的操作”&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;实在不懂看视频照着做：https://b23.tv/5tl345p&lt;/p&gt;
&lt;h3&gt;具体温度规则&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;均衡模式：40度1个大核，43度再锁一个，在流畅的情况下从36度开始降频（虽然日常在35度根本用不到），关掉性能模式会快速降到40以下，由于要保持均衡流畅，降频幅度较小，极限负载会达到42度用于换取丝滑的体验（建议提前开启性能模式）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;亮屏快充：
120w会在20A和6A之间反复横跳，大概就是85w与30w之间，而67w则充电会根据充电头情况到最高20A再慢慢下降（14-7之间），最后会稳定在9A左右，大约40w左右，只提升上限，高电量涓流自动降速和充电器握手导致的充电慢咩咩管不了&lt;br /&gt;
室温29.5，充电速度测试：&lt;br /&gt;
67w  5分钟冲入20% 半小时真充满&lt;br /&gt;
120w 7分钟冲入34% 比上面快一点&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;无线充电：
调整无线充电避免在华强北的苹果磁吸充电器上断冲（这个6w，官方立式12w，5v2a垃圾的3w）快充没钱没有所以没测过&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;性能模式：
43度cpu开始降频，48度gpu锁650，充电为官方龟速，性能相对均衡模式大幅提升，最后整体温度会维持在45度左右&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;游戏均衡模式：
性能模式的档位，均衡模式的温度墙，不锁核，没有亮屏快充，在均衡模式的温度上限尽量保持性能&lt;br /&gt;
删除thermal-me-nor.conf文件将在游戏侧边栏设置均衡模式的时候使用普通的均衡模式&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;常见问题&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;因为众所周知的物理特性，cpu和gpu就算你锁死最高频率，性能会随着温度上升以肉眼可见的速度下降，如果你认为性能不佳，充电太慢，请让手机凉下来（电池温度小于35度）再进行测试
根据反馈，重启手机可以解决feas抽风的问题&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;游戏中（至少原神是这样），均衡是45帧以下启动feas，性能模式是60帧，有一个节省功耗并且不太影响性能的办法&lt;br /&gt;
复制一份thermal-me-nor.conf改名thermal-me.conf放进去，让性能模式用游戏均衡的配置（是的我feas就这么测的）&lt;/p&gt;
&lt;p&gt;经过多次测试目前游戏均衡已经达到了比较合适的情况，asoul新版cpu频率鬼畜建议降到28及以下&lt;br /&gt;
玩王者的可以把超大核心（cpu7）锁在1.4，可以获得流畅120帧极低功耗&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;经常更新，有人可能会问了哪个版本好用？
已经调好了，没有问题是不会更新的，新版本只会比旧版本好，更新就是了&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;GPU降压超频&lt;/h2&gt;
&lt;p&gt;最后更新于20230817&lt;br /&gt;
对档位以及功耗进行了调整&lt;br /&gt;
目前档位3dmark跑分功耗和分数，其中690和640只选用了功耗比较好的位置，改成999性能拉满10w 3758&lt;br /&gt;
10.12更新，42度测的功耗偏高（温度越高功耗越高）&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;频率&lt;/th&gt;
&lt;th&gt;功耗&lt;/th&gt;
&lt;th&gt;分数&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;124&lt;/td&gt;
&lt;td&gt;2.5w&lt;/td&gt;
&lt;td&gt;709&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;220&lt;/td&gt;
&lt;td&gt;3.2w&lt;/td&gt;
&lt;td&gt;1210&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;348&lt;/td&gt;
&lt;td&gt;4w&lt;/td&gt;
&lt;td&gt;1881&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;401&lt;/td&gt;
&lt;td&gt;4.5w&lt;/td&gt;
&lt;td&gt;2108&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;475&lt;/td&gt;
&lt;td&gt;5w&lt;/td&gt;
&lt;td&gt;2467&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;550&lt;/td&gt;
&lt;td&gt;5.47w&lt;/td&gt;
&lt;td&gt;2750&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;650&lt;/td&gt;
&lt;td&gt;7.28w&lt;/td&gt;
&lt;td&gt;3039&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;690&lt;/td&gt;
&lt;td&gt;9.41w&lt;/td&gt;
&lt;td&gt;3608&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;使用konabess的剪贴板导入功能导入&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;pre&gt;&lt;code&gt;konabess://H4sIAAAAAAAAAM3V606DMBQH8FdZ8OtI2tIb3uKD+KUr7SRjF8HpotlL+BY+mO8hQzK7paeMiYnJlqanBPhROP+3SD/kq+gymqlCzVU0jjJT6Xr++f5R/+SU1CVbmse69KiX8/F0tY5XL2Vhnk1RxWj0dr9o6vkif8pVsV8b3Yyu0UbeXrXr1Wwd62V98u+FZIQ2vP4nCFncjrsaa+esnYt2vhtJO5p2tLuTX1T5q4m1KYr2zKipqiwrTVW5C3h/L67hriGUZtoctD9E6Sx2HZIYZm22X5+sq3iuNt+r6WE5X/jKu4d4XHeuYNDB7f0cTVQ2wVg3y1uvADsCPKiAAQLhE2hQIKWwCgUExBEQSKAksbBA+AUJIOA+QQoKaH1xEdqDxBEkkMAgInsLCCBIfAIJCpCWjMmAgDoCep6A+QW4j4BBAqypNTq0B8wRMEigEVGwgA4goKBAGK45DQi4I+CBPZjAgmQAQaIhAZ0YZENfsnAEIiDI/lggIQFOGQt+ydIRyMBbFOhFPQXYK6CAIMPaOFvgRVQx7gjmn705Cmb0X0JV+h8iBx6iN5LAF5mkBKUo1A4HCFWgHUKRxHwCDDZ0Tlidqb8N1bMaOhRJtJ+gM5IGCNUhIgkUdEfSSaE6aCSRfoLOSDo1VIdrhz0FnZF0UqiGBaSfwNvQQcFRQz8zU8MA/JcAwSkWh4kUbb8AxypfXFkOAAA=
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;常见问题&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;如果出现游戏跑分中局部花屏的情况，是体质太差了，需要调整一下：
点编辑频率表，选下面那个，点击690，电压改为low_sys，返回，点击650，频率改成630，点保存，点刷入&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;适配 主流游戏 和 手动添加到游戏中心 的游戏，如果游戏开性能模式性能不好，按照以下方法排查：
进游戏开个文件管理器小窗，去看config文件夹旁边的decrypt.txt里的第一行（复制出来看），&lt;br /&gt;
如果不是“咩温控 性能模式”那就是没有生效，&lt;br /&gt;
把config里三个文件删掉，按照刚刚的方法系统默认用的是哪个前缀的配置，对应的要把-map.conf里的加一行（搞不定把对应发给咩咩来加也行）&lt;br /&gt;
[数字:thermal-me.conf]&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;被miui下发的云控覆盖了怎么办
插电脑上打开&lt;code&gt;adb shell&lt;/code&gt;或是其他终端模拟器等能打开shell的东西，需要root权限&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;# 加锁 即使是root也无法修改
su -c &apos;chattr +i /data/vendor/thermal/config/*&apos; &amp;amp;&amp;amp; echo OK
# 如果不想要了或者更新 解锁 这样就可以删除修改文件了
su -c &apos;chattr -i /data/vendor/thermal/config/*&apos; &amp;amp;&amp;amp; echo OK
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;执行完后输出“OK”即为成功&lt;/p&gt;
&lt;h2&gt;进阶操作&lt;/h2&gt;
&lt;h3&gt;制作你自己的完美映射map，需要一定技术&lt;/h3&gt;
&lt;p&gt;解密 /vendor/etc/thermal-map.conf 得到文本文件，使用正则&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;(\[\d+:thermal-)(iec-)?(tgame|arvr|per-normal|c?yuanshen|per-cgame|nolimits|huanji|xingtie|highfps).*
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;选择选定的内容（vscode在mac上是cmd+shift+L，手机上大概只能手动复制）复制出来&lt;br /&gt;
将上面的正则批量替换成下面这条&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$1me.conf]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;然后按上面那样，使用这个复制&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;(\[\d+:thermal-)(iec-)?(c?mgame|cgame|hp-mgame).*
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;将上面的正则批量替换成下面这条&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$1me-nor.conf]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这个是用于在将均衡模式换成锁4核心的配置时，开相机使用原8核全开的均衡模式，保证成像速度&lt;br /&gt;
按上面那样，使用这个复制&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;(\[\d+:thermal-)(iec-)?camera.*
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;将上面的正则批量替换成下面这条&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$1camera.conf]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;并且在替换时将原来的&lt;code&gt;thermal-normal.conf&lt;/code&gt;重命名为&lt;code&gt;thermal-camera.conf&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;补上固定的第一行&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;[0:thermal-normal.conf]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;将文本加密成thermal-map.conf替换咩温控中的文件，这样就得到了一个完美的map&lt;/p&gt;
&lt;h4&gt;如果你看不懂正则并且你想手动编辑：&lt;/h4&gt;
&lt;p&gt;固定的第一行&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;[0:thermal-normal.conf]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;包含这些的行复制出来&lt;br /&gt;
&lt;code&gt;tgame|arvr|per-normal|yuanshen|per-cgame|nolimits|huanji|xingtie|highfps&lt;/code&gt;&lt;br /&gt;
将它改成&lt;br /&gt;
&lt;code&gt;[数字:thermal-me.conf]&lt;/code&gt;&lt;br /&gt;
包括 &lt;code&gt;cgame|mgame&lt;/code&gt; 的复制出来，并改为&lt;br /&gt;
&lt;code&gt;[数字:thermal-me-nor.conf]&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;加解密可以通过网盘中的旧版scene的miui温控功能实现（无需付费）&lt;/p&gt;
&lt;h4&gt;如果你实在不知道怎么弄&lt;/h4&gt;
&lt;p&gt;使用这个方式可能会有奇怪的问题&lt;/p&gt;
&lt;p&gt;删除thermal-map.conf&lt;br /&gt;
把thermal-me.conf复制几份，分别改名&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;thermal-tgame.conf
thermal-arvr.conf
thermal-per-normal.conf
thermal-yuanshen.conf
thermal-cyuanshen.conf
thermal-per-cgame.conf
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;（以上文件名不完整但能覆盖大多数）&lt;br /&gt;
然后把thermal-me-nor.conf复制几份，分别改名&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;thermal-mgame.conf
thermal-cgame.conf
thermal-cmgame.conf
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;默认使用的map中数字对应关系，如果你的map解密出来跟这个一样，那绝对是环境问题：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;[0:thermal-normal.conf]
[3:thermal-huanji.conf]
[4:thermal-videochat.conf]
[5:thermal-abnormal.conf]
[6:thermal-nightvideo.conf]
[7:thermal-dolbyvision.conf]
[8:thermal-phone.conf]
[9:thermal-tgame.conf]
[10:thermal-nolimits.conf]
[11:thermal-class0.conf]
[12:thermal-camera.conf]
[13:thermal-tgame.conf]
[15:thermal-arvr.conf]
[16:thermal-tgame.conf]
[17:thermal-4k.conf]
[18:thermal-4k.conf]
[19:thermal-navigation.conf]
[20:thermal-mgame.conf]
[21:thermal-video.conf]
[23:thermal-yuanshen.conf]
[30:thermal-per-normal.conf]
[33:thermal-huanji.conf]
[34:thermal-videochat.conf]
[35:thermal-abnormal.conf]
[36:thermal-nightvideo.conf]
[37:thermal-dolbyvision.conf]
[38:thermal-phone.conf]
[39:thermal-tgame.conf]
[40:thermal-nolimits.conf]
[41:thermal-per-class0.conf]
[42:thermal-camera.conf]
[43:thermal-tgame.conf]
[45:thermal-arvr.conf]
[46:thermal-tgame.conf]
[47:thermal-4k.conf]
[48:thermal-4k.conf]
[49:thermal-navigation.conf]
[50:thermal-mgame.conf]
[51:thermal-per-video.conf]
[53:thermal-yuanshen.conf]
[78:thermal-cyuanshen.conf]
[79:thermal-cmgame.conf]
[88:thermal-per-cclassvideo-unfold.conf]
[89:thermal-cclassvideo-unfold.conf]
[90:thermal-per-cclassvideo.conf]
[91:thermal-cclassvideo.conf]
[96:thermal-per-cgame-unfold.conf]
[97:thermal-cgame-unfold.conf]
[98:thermal-per-cgame.conf]
[99:thermal-cgame.conf]
[100:thermal-normal-unfold.conf]
[103:thermal-huanji-unfold.conf]
[104:thermal-videochat-unfold.conf]
[105:thermal-abnormal-unfold.conf]
[108:thermal-phone-unfold.conf]
[109:thermal-tgame-unfold.conf]
[110:thermal-nolimits-unfold.conf]
[111:thermal-class0-unfold.conf]
[112:thermal-camera-unfold.conf]
[113:thermal-tgame-unfold.conf]
[115:thermal-arvr-unfold.conf]
[116:thermal-tgame-unfold.conf]
[117:thermal-4k-unfold.conf]
[118:thermal-4k-unfold.conf]
[119:thermal-navigation-unfold.conf]
[120:thermal-mgame-unfold.conf]
[121:thermal-video-unfold.conf]
[130:thermal-per-normal-unfold.conf]
[133:thermal-huanji-unfold.conf]
[134:thermal-videochat-unfold.conf]
[135:thermal-abnormal-unfold.conf]
[138:thermal-phone-unfold.conf]
[139:thermal-tgame-unfold.conf]
[140:thermal-nolimits-unfold.conf]
[141:thermal-per-class0-unfold.conf]
[142:thermal-camera-unfold.conf]
[143:thermal-tgame-unfold.conf]
[145:thermal-arvr-unfold.conf]
[146:thermal-tgame-unfold.conf]
[147:thermal-4k-unfold.conf]
[148:thermal-4k-unfold.conf]
[149:thermal-per-navigation-unfold.conf]
[150:thermal-mgame-unfold.conf]
[151:thermal-per-video-unfold.conf]
[200:thermal-iec-normal.conf]
[203:thermal-iec-huanji.conf]
[204:thermal-iec-videochat.conf]
[205:thermal-iec-abnormal.conf]
[208:thermal-iec-phone.conf]
[209:thermal-iec-tgame.conf]
[210:thermal-iec-nolimits.conf]
[211:thermal-iec-class0.conf]
[212:thermal-iec-camera.conf]
[213:thermal-iec-tgame.conf]
[215:thermal-iec-arvr.conf]
[216:thermal-iec-tgame.conf]
[217:thermal-iec-4k.conf]
[218:thermal-iec-4k.conf]
[219:thermal-iec-navigation.conf]
[220:thermal-iec-mgame.conf]
[221:thermal-iec-video.conf]
[230:thermal-iec-per-normal.conf]
[233:thermal-iec-huanji.conf]
[234:thermal-iec-videochat.conf]
[235:thermal-iec-abnormal.conf]
[238:thermal-iec-phone.conf]
[239:thermal-iec-tgame.conf]
[240:thermal-iec-nolimits.conf]
[241:thermal-iec-per-class0.conf]
[242:thermal-iec-camera.conf]
[243:thermal-iec-tgame.conf]
[245:thermal-iec-arvr.conf]
[246:thermal-iec-tgame.conf]
[247:thermal-iec-4k.conf]
[248:thermal-iec-4k.conf]
[249:thermal-iec-per-navigation.conf]
[250:thermal-iec-mgame.conf]
[251:thermal-iec-per-video.conf]
[300:thermal-iec-normal-unfold.conf]
[303:thermal-iec-huanji-unfold.conf]
[304:thermal-iec-videochat-unfold.conf]
[305:thermal-iec-abnormal-unfold.conf]
[308:thermal-iec-phone-unfold.conf]
[309:thermal-iec-tgame-unfold.conf]
[310:thermal-iec-nolimits-unfold.conf]
[311:thermal-iec-class0-unfold.conf]
[312:thermal-iec-camera-unfold.conf]
[313:thermal-iec-tgame-unfold.conf]
[315:thermal-iec-arvr-unfold.conf]
[316:thermal-iec-tgame-unfold.conf]
[317:thermal-iec-4k-unfold.conf]
[318:thermal-iec-4k-unfold.conf]
[319:thermal-iec-navigation-unfold.conf]
[320:thermal-iec-mgame-unfold.conf]
[321:thermal-iec-video-unfold.conf]
[330:thermal-iec-per-normal-unfold.conf]
[333:thermal-iec-huanji-unfold.conf]
[334:thermal-iec-videochat-unfold.conf]
[335:thermal-iec-abnormal-unfold.conf]
[338:thermal-iec-phone-unfold.conf]
[339:thermal-iec-tgame-unfold.conf]
[340:thermal-iec-nolimits-unfold.conf]
[341:thermal-iec-per-class0-unfold.conf]
[342:thermal-iec-camera-unfold.conf]
[343:thermal-iec-tgame-unfold.conf]
[345:thermal-iec-arvr-unfold.conf]
[346:thermal-iec-tgame-unfold.conf]
[347:thermal-iec-4k-unfold.conf]
[348:thermal-iec-4k-unfold.conf]
[349:thermal-iec-per-navigation-unfold.conf]
[350:thermal-iec-mgame-unfold.conf]
[351:thermal-iec-per-video-unfold.conf]
[500:thermal-hp-normal.conf]
[520:thermal-hp-mgame.conf]
[600:thermal-hp-normal-unfold.conf]
[620:thermal-hp-mgame-unfold.conf]
[700:thermal-cgame.conf]
[701:thermal-cclassvideo.conf]
[702:thermal-comp.conf]
[703:thermal-cmgame.conf]
[704:thermal-cyuanshen.conf]
[730:thermal-per-cgame.conf]
[731:thermal-per-cclassvideo.conf]

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;或者是这样，这是Android14或澎湃新map(老机型还是用的上面的)&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;[0:thermal-normal.conf]
[1:thermal-huanji.conf]
[2:thermal-abnormal.conf]
[3:thermal-nightvideo.conf]
[4:thermal-dolbyvision.conf]
[5:thermal-phone.conf]
[6:thermal-nolimits.conf]
[7:thermal-class0.conf]
[8:thermal-youtube.conf]
[9:thermal-arvr.conf]
[10:thermal-navigation.conf]
[11:thermal-video.conf]
[12:thermal-demo.conf]
[13:thermal-sptm.conf]
[14:thermal-videochat.conf]
[15:thermal-camera.conf]
[16:thermal-4k.conf]
[17:thermal-4k.conf]
[18:thermal-tgame.conf]
[19:thermal-mgame.conf]
[20:thermal-yuanshen.conf]
[25:thermal-xingtie.conf]
[26:thermal-highfps.conf]
[50:thermal-per-normal.conf]
[52:thermal-per-abnormal.conf]
[57:thermal-per-class0.conf]
[58:thermal-per-youtube.conf]
[60:thermal-per-navigation.conf]
[61:thermal-per-video.conf]
[76:thermal-highfps.conf]
[100:thermal-normal-unfold.conf]
[101:thermal-huanji-unfold.conf]
[102:thermal-abnormal-unfold.conf]
[103:thermal-nightvideo-unfold.conf]
[104:thermal-dolbyvision-unfold.conf]
[105:thermal-phone-unfold.conf]
[106:thermal-nolimits-unfold.conf]
[107:thermal-class0-unfold.conf]
[108:thermal-youtube-unfold.conf]
[109:thermal-arvr-unfold.conf]
[110:thermal-navigation-unfold.conf]
[111:thermal-video-unfold.conf]
[112:thermal-demo-unfold.conf]
[113:thermal-sptm-unfold.conf]
[114:thermal-videochat-unfold.conf]
[115:thermal-camera-unfold.conf]
[116:thermal-4k-unfold.conf]
[117:thermal-4k-unfold.conf]
[118:thermal-tgame-unfold.conf]
[119:thermal-mgame-unfold.conf]
[120:thermal-yuanshen-unfold.conf]
[150:thermal-per-normal-unfold.conf]
[152:thermal-per-abnormal-unfold.conf]
[157:thermal-per-class0-unfold.conf]
[158:thermal-per-youtube-unfold.conf]
[160:thermal-per-navigation-unfold.conf]
[161:thermal-per-video-unfold.conf]
[200:thermal-iec-normal.conf]
[201:thermal-iec-huanji.conf]
[202:thermal-iec-abnormal.conf]
[203:thermal-iec-nightvideo.conf]
[204:thermal-iec-dolbyvision.conf]
[205:thermal-iec-phone.conf]
[206:thermal-iec-nolimits.conf]
[207:thermal-iec-class0.conf]
[208:thermal-iec-youtube.conf]
[209:thermal-iec-arvr.conf]
[210:thermal-iec-navigation.conf]
[211:thermal-iec-video.conf]
[212:thermal-iec-demo.conf]
[213:thermal-iec-sptm.conf]
[214:thermal-iec-videochat.conf]
[215:thermal-iec-camera.conf]
[216:thermal-iec-4k.conf]
[217:thermal-iec-4k.conf]
[218:thermal-iec-tgame.conf]
[219:thermal-iec-mgame.conf]
[220:thermal-iec-yuanshen.conf]
[250:thermal-iec-per-normal.conf]
[252:thermal-iec-per-abnormal.conf]
[257:thermal-iec-per-class0.conf]
[258:thermal-iec-per-youtube.conf]
[260:thermal-iec-per-navigation.conf]
[261:thermal-iec-per-video.conf]
[300:thermal-iec-normal-unfold.conf]
[301:thermal-iec-huanji-unfold.conf]
[302:thermal-iec-abnormal-unfold.conf]
[303:thermal-iec-nightvideo-unfold.conf]
[304:thermal-iec-dolbyvision-unfold.conf]
[305:thermal-iec-phone-unfold.conf]
[306:thermal-iec-nolimits-unfold.conf]
[307:thermal-iec-class0-unfold.conf]
[308:thermal-iec-youtube-unfold.conf]
[309:thermal-iec-arvr-unfold.conf]
[310:thermal-iec-navigation-unfold.conf]
[311:thermal-iec-video-unfold.conf]
[312:thermal-iec-demo-unfold.conf]
[313:thermal-iec-sptm-unfold.conf]
[314:thermal-iec-videochat-unfold.conf]
[315:thermal-iec-camera-unfold.conf]
[316:thermal-iec-4k-unfold.conf]
[317:thermal-iec-4k-unfold.conf]
[318:thermal-iec-tgame-unfold.conf]
[319:thermal-iec-mgame-unfold.conf]
[320:thermal-iec-yuanshen-unfold.conf]
[350:thermal-iec-per-normal-unfold.conf]
[352:thermal-iec-per-abnormal-unfold.conf]
[357:thermal-iec-per-class0-unfold.conf]
[358:thermal-iec-per-youtube-unfold.conf]
[360:thermal-iec-per-navigation-unfold.conf]
[361:thermal-iec-per-video-unfold.conf]
[500:thermal-hp-normal.conf]
[501:thermal-hp-mgame.conf]
[600:thermal-hp-normal-unfold.conf]
[601:thermal-hp-mgame-unfold.conf]
[700:thermal-cgame.conf]
[701:thermal-cclassvideo.conf]
[702:thermal-comp.conf]
[800:thermal-cgame-unfold.conf]
[801:thermal-cclassvideo-unfold.conf]

&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;关于适配其他cpu&lt;/h2&gt;
&lt;p&gt;没钱买测试机，但可以教会你一些非常简单的适配的方法&lt;br /&gt;
除了cpu频率不同，其他都通用（不支持快充的就算给很大的上限电流也不会超速）&lt;/p&gt;
&lt;p&gt;ls /sys/devices/system/cpu/cpufreq/&lt;br /&gt;
可以看到cpu从集控制器，比如8g2有3个，0是小核，3是大，7是超大&lt;/p&gt;
&lt;p&gt;cat /sys/devices/system/cpu/cpufreq/policy0/scaling_available_frequencies&lt;br /&gt;
可以看到0也就是小核心可用频率&lt;/p&gt;
&lt;p&gt;你只需要根据你使用手机的经验使用这些频率换掉3个配置中target中的对应档位就行&lt;/p&gt;
&lt;h2&gt;关于miui系统调度的一些猜测&lt;/h2&gt;
&lt;p&gt;小核心大核心超大核心&lt;br /&gt;
中杯  大杯  超大杯&lt;br /&gt;
优先使用小核心，当负载达到一定程度后压力转给大核心，再超过一定程度后转给超大核&lt;br /&gt;
游戏通常使用大核心和小核心运行，当压力超过一定程度后负载将转移给大超核心，大核心摆烂，负载下降后大核心下降&lt;br /&gt;
受狂暴引擎影响，特别是大核心频率虚高导致耗电，超大核心在需要时直接拉满导致发热严重，但是帧率稳定（仅限温度稳定时）&lt;br /&gt;
日常使用小核心满载后大核心来帮忙&lt;/p&gt;
</content:encoded></item><item><title>HDR激发亮度测试</title><link>https://zyyme.com/hdr-test.html</link><guid isPermaLink="true">https://zyyme.com/hdr-test.html</guid><description>如果你的设备支持HDR，你会看到下面的白色正方形中有一个特别亮的正方形。 有多亮？像闪光弹那样亮的刺眼吧（ 如果你看到的是一个白色的正方形，说明你的设备不支持HDR。 如果你看到的是一个裂开的图片，说明你的浏览器不支持avif。 Laowj+g 如果能在下面的长方形中看到另一个长方形，说明可以播放HDR视频： 下面你能看到一个“咩”字： 咩 这是一个使用ic</description><pubDate>Thu, 10 Aug 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;如果你的设备支持HDR，你会看到下面的白色正方形中有一个特别亮的正方形。&lt;br /&gt;
有多亮？像闪光弹那样亮的刺眼吧（&lt;br /&gt;
如果你看到的是一个白色的正方形，说明你的设备不支持HDR。&lt;br /&gt;
如果你看到的是一个裂开的图片，说明你的浏览器不支持avif。&lt;br /&gt;
&amp;lt;div style=&quot;background: #000; padding: 1px; width: 300px;&quot;&amp;gt;&amp;lt;div style=&quot;background: #FFF; padding: 50px; width: 200px;&quot;&amp;gt;![Laowj+g](data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAACQAAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAIAAAACAAAAAEHBpeGkAAAAAAwoKCgAAAAxhdjFDgQBMAAAAABNjb2xybmNseAAJABAACQAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAACxtZGF0EgAKCRgZv/9ihIgEgjIVEZACSSSRALSDWh0OcWLT/Laowj+g)&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;/p&gt;
&lt;p&gt;如果能在下面的长方形中看到另一个长方形，说明可以播放HDR视频：&lt;br /&gt;
&amp;lt;div style=&quot;background: #000; padding: 1px; width: 160px;&quot;&amp;gt;&amp;lt;div style=&quot;background: #FFF; padding: 30px; width: 100px;&quot;&amp;gt;&amp;lt;video src=&quot;https://kidi.ng/wanna-see-a-whiter-white/white1.6805bac8.webm&quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;/p&gt;
&lt;p&gt;下面你能看到一个“咩”字：&lt;br /&gt;
&amp;lt;div style=&quot;background: #000; padding: 1px; max-width: 160px;&quot;&amp;gt;&amp;lt;div style=&quot;background: #FFF; width: 160px;&quot;&amp;gt;&amp;lt;div style=&quot;background-image: url(&apos;data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAACQAAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAIAAAACAAAAAEHBpeGkAAAAAAwoKCgAAAAxhdjFDgQBMAAAAABNjb2xybmNseAAJABAACQAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAACxtZGF0EgAKCRgZv/9ihIgEgjIVEZACSSSRALSDWh0OcWLT/Laowj+g&apos;); background-clip:text; -webkit-background-clip:text; color:transparent; font-size:160px;&quot;&amp;gt;咩&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;/p&gt;
&lt;p&gt;这是一个使用icc色彩配置文件实现的png格式的的HDR图片：&lt;br /&gt;
&lt;img alt=&quot;v0v8PrHnMe5A3AgMAAAAASUVORK5CYII=&quot; /&gt;&lt;br /&gt;
在支持HDR的设备上，他会显示很亮很纯正的红高亮的红色&lt;/p&gt;
&lt;p&gt;青蛙头&lt;br /&gt;
&lt;img alt=&quot;NBbf6gGLAAAAABJRU5ErkJggg==&quot; /&gt;&lt;/p&gt;
&lt;p&gt;如果你能看到这张红色图片中的Android机器人图案，那么你的屏幕支持DCI-P3色域&lt;br /&gt;
&lt;img alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;下面是黑色背景下不同面积的方块，可以看一下miniled的光晕表现如何&lt;br /&gt;
&amp;lt;div style=&quot;background: #000; display: flex; flex-flow: wrap; padding: 50px;&quot;&amp;gt;&lt;br /&gt;
![Laowj+g](data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAACQAAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAIAAAACAAAAAEHBpeGkAAAAAAwoKCgAAAAxhdjFDgQBMAAAAABNjb2xybmNseAAJABAACQAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAACxtZGF0EgAKCRgZv/9ihIgEgjIVEZACSSSRALSDWh0OcWLT/Laowj+g)&lt;br /&gt;
![Laowj+g](data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAACQAAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAIAAAACAAAAAEHBpeGkAAAAAAwoKCgAAAAxhdjFDgQBMAAAAABNjb2xybmNseAAJABAACQAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAACxtZGF0EgAKCRgZv/9ihIgEgjIVEZACSSSRALSDWh0OcWLT/Laowj+g)&lt;br /&gt;
![Laowj+g](data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAACQAAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAIAAAACAAAAAEHBpeGkAAAAAAwoKCgAAAAxhdjFDgQBMAAAAABNjb2xybmNseAAJABAACQAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAACxtZGF0EgAKCRgZv/9ihIgEgjIVEZACSSSRALSDWh0OcWLT/Laowj+g)&lt;br /&gt;
![Laowj+g](data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAACQAAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAIAAAACAAAAAEHBpeGkAAAAAAwoKCgAAAAxhdjFDgQBMAAAAABNjb2xybmNseAAJABAACQAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAACxtZGF0EgAKCRgZv/9ihIgEgjIVEZACSSSRALSDWh0OcWLT/Laowj+g)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>红米K60Pro</title><link>https://zyyme.com/redmi-k60pro.html</link><guid isPermaLink="true">https://zyyme.com/redmi-k60pro.html</guid><description>2023/05/30突发奇想，打算重新买一个Android手机，回归Android平台，于是06/01与狗东3379购入一台红米K60Pro（12+512G），由于狗东太狗了，背刺不允许价保，便于06/07以3264重新购入 之前使用的是于2022/02/04以4599在狗东购入的iPhone12（4+128G），因为完全没有后台能力，特别是导出上传视频和备</description><pubDate>Tue, 08 Aug 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;2023/05/30突发奇想，打算重新买一个Android手机，回归Android平台，于是06/01与狗东3379购入一台红米K60Pro（12+512G），由于狗东太狗了，背刺不允许价保，便于06/07以3264重新购入&lt;br /&gt;
之前使用的是于2022/02/04以4599在狗东购入的iPhone12（4+128G），因为完全没有后台能力，特别是导出上传视频和备份同步文件时时极其不便，需一直亮屏，目前给奶奶用了（只用微信的话是非常舒适的，并且重量极轻）&lt;/p&gt;
&lt;p&gt;为什么买这个呢，因为便宜啊，屏幕也还行，买不起小米13。2个月过去了，这款手机为k60u让路，已停产，那么来说说咩咩这两个月咩咩都做了什么优化：&lt;/p&gt;
&lt;p&gt;首先官方优化，不能说好也不能说特别辣鸡，按官方在14.0.23的调节来看，性能相对之前用的一加7Pro（855）提升的同时功耗也提升了，加上MIUI的屎山负优化，可以说低压力下几乎毫无优势，但是官方的调度在众多第三方调度用了一圈之后发现还是官方的最好用，相对不掉帧而且省电&lt;/p&gt;
&lt;p&gt;忍了7天终于解锁了，先尝试给GPU降压，使用虚假的gpu档位骗过温控，得到了非常不错的效果，游戏直降2w功耗（BV16m4y1E7wb），最低档的re最高可以运行650mhz，体质差的也能跑到630mhz，此处的性能已经能和超频到680mhz的855所媲美，甚至更好，但由于电压表最低就这档了，导致低频的提升空间非常有限，64mhz时更是出现1mhz相当于855的4mhz的性能。换句话说频率表就像虚拟的，功耗跟着压力变化，最高频率限制在692mhz，功耗墙整机不能超过10w&lt;/p&gt;
&lt;p&gt;因为提升有限，而且MIUI那性能模式开了跟没开没啥区别，完全没性能，尝试学习修改MIUI温控，给miui适配真正的性能模式，并实现亮屏快充，普通模式日常使用在体感35度左右，日常比官方凉快并且性能模式性能好，极限cpu温度95度，得到了比较好的成果，既 咩温控&lt;/p&gt;
&lt;p&gt;目前在酷安发布的动态用于收集用户反馈（因为可以一直编辑不用重发）：&lt;br /&gt;
https://www.coolapk.com/feed/48095864?shareKey=ODg3YWYxZWY1MDEwNjRkMWIwNTY~&lt;/p&gt;
&lt;p&gt;咩温控 + 降压超频 网盘下载&lt;br /&gt;
https://zyyme.lanzout.com/b0acmncdi&lt;br /&gt;
密码：郑羊羊&lt;/p&gt;
&lt;p&gt;这台手机也就算是毕业了，现在就看还未发布的8g3的表现了，8g2究竟是站着当年865的位置还是站在870的位置呢，那就拭目以待吧&lt;/p&gt;
</content:encoded></item><item><title>openEuler添加Oepkgs仓库</title><link>https://zyyme.com/openeuler-add-oepkgs-repo.html</link><guid isPermaLink="true">https://zyyme.com/openeuler-add-oepkgs-repo.html</guid><description>由于某些原因被迫使用openEuler系统，但不知道为什么坑很多并且缺很多包，导致经常无法满足依赖 因此，在系统重添加Oepkgs的软件仓库弥补这个问题 简单的说你只要运行这几条命令就可以，但官网并没有写这方面的说明 sudo dnf config-manager --add-repo https://repo.oepkgs.net/openeuler/rp</description><pubDate>Wed, 14 Jun 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;由于某些原因被迫使用openEuler系统，但不知道为什么坑很多并且缺很多包，导致经常无法满足依赖&lt;br /&gt;
因此，在系统重添加Oepkgs的软件仓库弥补这个问题&lt;br /&gt;
简单的说你只要运行这几条命令就可以，但官网并没有写这方面的说明&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo dnf config-manager --add-repo https://repo.oepkgs.net/openeuler/rpm/`sed &apos;s/release //;s/ /-/g&apos; /etc/openEuler-release`/extras/`uname -m`/
sudo dnf clean all
sudo dnf makecache
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;安装会出现&lt;code&gt;Error: GPG check FAILED&lt;/code&gt;错误，因为软件包未签名，使用&lt;code&gt;--nogpgcheck&lt;/code&gt;跳过检查&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;dnf install --nogpgcheck 包名
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>适配了黑暗模式</title><link>https://zyyme.com/new-dark-mode.html</link><guid isPermaLink="true">https://zyyme.com/new-dark-mode.html</guid><description>今天用了一个下午给主题适配了黑暗模式，将根据您系统或浏览器的设置自动变化，Safari的回弹动画花了一点时间，不过实际效果还不错，花这个时间还是值得的 9日又花了一个半小时用颜色覆盖的方式重新实现了一下，视频全屏不会被反色了，emoji因也正常显示</description><pubDate>Sat, 08 Apr 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;今天用了一个下午给主题适配了黑暗模式，将根据您系统或浏览器的设置自动变化，Safari的回弹动画花了一点时间，不过实际效果还不错，花这个时间还是值得的&lt;br /&gt;
9日又花了一个半小时用颜色覆盖的方式重新实现了一下，视频全屏不会被反色了，emoji因也正常显示&lt;/p&gt;
</content:encoded></item><item><title>Openwrt旁路由配置</title><link>https://zyyme.com/openwrt-bypass.html</link><guid isPermaLink="true">https://zyyme.com/openwrt-bypass.html</guid><description>虽然标题是这么说，但实际上这个op更像是作为一个防火墙的角色，但又不是串在网络之中的，是一个旁路由 并且依然使用主路由作为网关，dns，dhcp，哪怕这个op宕机了也不会对网络造成任何影响，并且实现了异地组网的需求 众所周知，op没有ap模式，按本文的操作，将会给op分配两个ip，一个用于局域网访问，一个用于从主路由直接DMZ（转发所有WAN的端口的流量到这</description><pubDate>Thu, 06 Apr 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;虽然标题是这么说，但实际上这个op更像是作为一个防火墙的角色，但又不是串在网络之中的，是一个旁路由&lt;br /&gt;
并且依然使用主路由作为网关，dns，dhcp，哪怕这个op宕机了也不会对网络造成任何影响，并且实现了异地组网的需求&lt;/p&gt;
&lt;p&gt;众所周知，op没有ap模式，按本文的操作，将会给op分配两个ip，一个用于局域网访问，一个用于从主路由直接DMZ（转发所有WAN的端口的流量到这个ip）&lt;/p&gt;
&lt;p&gt;假设你使用的网段是 &lt;code&gt;192.168.100.0&lt;/code&gt; ，并且子网掩码是 &lt;code&gt;255.255.255.0&lt;/code&gt; ，也就是 &lt;code&gt;192.168.100.0/24&lt;/code&gt; 这个网段&lt;/p&gt;
&lt;p&gt;首先先到 网络 -&amp;gt; 接口 编辑lan，&lt;br /&gt;
设置一个用于访问op的固定ip地址，比如 &lt;code&gt;192.168.100.253&lt;/code&gt; ，&lt;br /&gt;
子网掩码设置为 &lt;code&gt;255.255.255.0&lt;/code&gt;,&lt;br /&gt;
网关空着，&lt;br /&gt;
或者直接改成DHCP模式，&lt;br /&gt;
切换到 高级设置 的标签，沃点删掉，保存（别点保存应用，待会一起应用）&lt;/p&gt;
&lt;p&gt;如果是做ap的，直接删掉所有wan，点保存应用就完成了，&lt;br /&gt;
如果你需要一个wan ip来给上级DMZ用，当防火墙映射端口，那就&lt;br /&gt;
~~ 用nmap扫一下局域网的80端口或是看上级路由的dhcp列表，找到ip去访问op， ~~&lt;br /&gt;
网络 -&amp;gt; 接口 编辑wan，&lt;br /&gt;
设置一个用于DMZ的固定ip地址，比如 &lt;code&gt;192.168.252.1&lt;/code&gt; ，&lt;br /&gt;
子网掩码设置为 &lt;code&gt;255.255.0.0&lt;/code&gt;（重要，因为网关不在同一个网段）,&lt;br /&gt;
网关设置为你的主路由ip，&lt;br /&gt;
切换到 高级设置 的标签，沃点设置为5，保存应用&lt;/p&gt;
&lt;p&gt;因为wan的沃点比较高，普通的联网流量会走wan，但是如果你的局域网不止一个网段，这时候其他的网段局域网流量也会在wan，这就有问题了！&lt;br /&gt;
在这种情况下，需要添加静态路由，&lt;br /&gt;
网络 -&amp;gt; 静态路由&lt;br /&gt;
比如你还有一个 &lt;code&gt;192.168.102.0&lt;/code&gt; 的局域网网段，那你需要从左往右这样填写&lt;br /&gt;
&lt;code&gt;lan&lt;/code&gt; &lt;code&gt;192.168.102.0&lt;/code&gt; &lt;code&gt;255.255.255.0&lt;/code&gt; &lt;code&gt;主路由ip&lt;/code&gt; 剩下的默认&lt;/p&gt;
&lt;p&gt;最后去主路由添加一条静态路由，比如H3C就这样添加&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ip route-static 192.168.252.0 255.255.255.0 192.168.100.253
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;网络 -&amp;gt; 防火墙，进行以下配置：&lt;br /&gt;
SYN防御 关&lt;br /&gt;
丢弃无用数据包 开&lt;br /&gt;
启用Fullcore-NAT 关&lt;br /&gt;
入站,出站,转发 都选接受&lt;/p&gt;
&lt;p&gt;区域（如果使用wg等异地组网，将接口归到vpn防火墙区里）&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;网络区域&lt;/th&gt;
&lt;th&gt;入站数据&lt;/th&gt;
&lt;th&gt;出站数据&lt;/th&gt;
&lt;th&gt;转发&lt;/th&gt;
&lt;th&gt;IP动态伪装&lt;/th&gt;
&lt;th&gt;MSS钳制&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;LAN到其他区域&lt;/td&gt;
&lt;td&gt;接受&lt;/td&gt;
&lt;td&gt;接受&lt;/td&gt;
&lt;td&gt;丢弃&lt;/td&gt;
&lt;td&gt;关&lt;/td&gt;
&lt;td&gt;关&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;WAN到其他区域&lt;/td&gt;
&lt;td&gt;丢弃&lt;/td&gt;
&lt;td&gt;接受&lt;/td&gt;
&lt;td&gt;丢弃&lt;/td&gt;
&lt;td&gt;开&lt;/td&gt;
&lt;td&gt;关&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;vpn到其他区域&lt;/td&gt;
&lt;td&gt;接受&lt;/td&gt;
&lt;td&gt;接受&lt;/td&gt;
&lt;td&gt;接受&lt;/td&gt;
&lt;td&gt;开&lt;/td&gt;
&lt;td&gt;关&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;编辑区域LAN，在允许转发到和允许从转发上勾选vpn（如果不需要组网就不做这步）&lt;/p&gt;
&lt;p&gt;编辑区域vpn，在允许转发到和允许从转发上勾选lan&lt;/p&gt;
&lt;p&gt;切换到端口转发的标签，添加一条任意端口转到lan口的ip的80，用于在关闭lan口arp后从wan口的ip访问后台&lt;/p&gt;
&lt;p&gt;~~ 系统 -&amp;gt; 启动项 中，在&lt;code&gt;exit 0&lt;/code&gt;前加上&lt;code&gt;ip link set arp off br-lan&lt;/code&gt;，关掉lan口的arp ~~&lt;br /&gt;
~~ 以上的配置后，所有的流量都将由wan口收发（端口转发时），lan口的ip就单纯是用来访问后台设置和ssh的了（需要主路由上添加静态arp）  ~~&lt;/p&gt;
&lt;p&gt;然后就可以在服务中启用upnp，在 防火墙 -&amp;gt; 端口转发 中从wan转发到lan实现端口转发了&lt;/p&gt;
</content:encoded></item><item><title>CentOS7编译最新OpenSSH</title><link>https://zyyme.com/centos7-update-openssh.html</link><guid isPermaLink="true">https://zyyme.com/centos7-update-openssh.html</guid><description>首先CentOS7已经凉了很久了，但是很多地方的生产环境依然用着这个系统，openssh经常爆出高危漏洞，现在以openssh-9.2p1作为例子讲述一下到底应该怎么更新 有人可能会问了，那更新ssh的文章不是百度一下满天飞吗？实际上确实是这样，但是照着他们的方式去做更新出来的绝对有问题，比如systemctl重启超时，ssh连接提示Permission d</description><pubDate>Thu, 09 Mar 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;首先CentOS7已经凉了很久了，但是很多地方的生产环境依然用着这个系统，openssh经常爆出高危漏洞，现在以openssh-9.2p1作为例子讲述一下到底应该怎么更新&lt;br /&gt;
有人可能会问了，那更新ssh的文章不是百度一下满天飞吗？实际上确实是这样，但是照着他们的方式去做更新出来的绝对有问题，比如systemctl重启超时，ssh连接提示Permission denied之类的，虽然说可能勉强能用，但依然会带来一些奇奇怪怪的问题&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;首先软件源肯定是没有了，所以得源码编译，&lt;a href=&quot;https://mirrors.aliyun.com/pub/OpenBSD/OpenSSH/portable/&quot;&gt;点开这里&lt;/a&gt; 拉到最下面看一下现在最新的ssh版本是什么，当前是openssh-9.2p1&lt;br /&gt;
服务器要是没网，那就把它下下来传到服务器上，有网可以用 &lt;code&gt;wget 右键复制的连接地址&lt;/code&gt; 下，没有wegt就用 &lt;code&gt;yum install -y wget&lt;/code&gt; 装&lt;/p&gt;
&lt;p&gt;编译需要一些依赖，可以yum装一下，everything的iso镜像中是包含这些内容的，没网可以配置一下本地软件源这样比较快&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;yum install -y gcc gcc-c++ glibc make autoconf openssl openssl-devel pcre-devel  pam* zlib* wget
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;cd到你下载好ssh源码包的位置，开始安装，以下命令均使用root运行&lt;br /&gt;
注意了这里必须&lt;code&gt;--with-pam&lt;/code&gt;,默认的configure不带PAM将导致root无法ssh登录哪怕在配置文件中允许了&lt;br /&gt;
不要尝试将&lt;code&gt;sshd.init&lt;/code&gt;的名字改成&lt;code&gt;sshd&lt;/code&gt;，会变得不幸&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;tar -xzvf openssh-9.2p1.tar.gz
cd openssh-9.2p1
./configure --with-md5-passwords --with-pam --without-hardening
make &amp;amp;&amp;amp; make install
cp contrib/redhat/sshd.init /etc/init.d/
cd /usr/bin
mkdir sshbak
mv ssh* sshbak/
mv scp sshbak/
cp sshbak/ssh-copy-id ./
ln -s /usr/local/bin/ssh* ./
ln -s /usr/local/bin/scp ./
cd /usr/sbin
mkdir sshbak
mv ssh* sshbak/
ln -s /usr/local/sbin/ssh* ./
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;初步安装完成，如果需要使用root来ssh，就执行下面的命令(可能因为未知原因root不能密码登录，请备好普通用户)&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# 允许root登录
sed -i &apos;s/#\? \?PermitRootLogin \(yes\|no\|prohibit-password\)/PermitRootLogin yes/g&apos; /etc/ssh/sshd_config
# 允许root登录时使用密码登录
sed -i &apos;s/#\? \?PasswordAuthentication \(yes\|no\)/PasswordAuthentication yes/g&apos; /etc/ssh/sshd_config
sed -i &apos;s/#\? \?ChallengeResponseAuthentication \(yes\|no\)/ChallengeResponseAuthentication no/g&apos; /etc/ssh/sshd_config
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;修改默认的加密方式，使其兼容老旧的ssh客户端，比如堡垒机&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cat &amp;lt;&amp;lt; EOF &amp;gt;&amp;gt; /etc/ssh/sshd_config
Ciphers aes128-cbc,aes192-cbc,aes256-cbc,aes128-ctr,aes192-ctr,aes256-ctr,3des-cbc,arcfour128,arcfour256,arcfour,blowfish-cbc,cast128-cbc
MACs hmac-md5,hmac-sha1,umac-64@openssh.com,hmac-ripemd160,hmac-sha1-96,hmac-md5-96
EOF
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;因为版本跨度比较大，用下面这条命令重启ssh&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;nohup ps -ef | grep sshd | awk &apos;{system(&quot;kill &quot;$2)}&apos;; /etc/init.d/sshd.init restart &amp;gt; /dev/null &amp;amp;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;换掉service以便使用systemctl&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cp /run/systemd/generator.late/sshd.init.service  /usr/lib/systemd/system/sshd.service
systemctl daemon-reload
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>hevc视频测试</title><link>https://zyyme.com/video-test.html</link><guid isPermaLink="true">https://zyyme.com/video-test.html</guid><pubDate>Mon, 27 Feb 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&amp;lt;video src=&quot;https://cloud.zyyme.com/.oss/02%E8%88%AB%E4%B8%AD%E7%87%95.mp4&quot; controlsList = &quot;nodownload&quot; controls = &quot;true&quot;&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>批量SSH运行命令</title><link>https://zyyme.com/batch-ssh-run-shell.html</link><guid isPermaLink="true">https://zyyme.com/batch-ssh-run-shell.html</guid><description>假设你有一堆机器需要运维，并且都要执行相同的操作，那么你会怎么做呢？一个个ssh上去执行命令或是做成一个脚本挨个执行吗？这样效率太低啦，于是有了这个批量执行ssh运行命令的骚操作 准备 本文建立在你从未ssh连接过这些机器，并且他们都配置好了网络（自动获取ip或是固定ip） 首先需要sshpass用来批量填写ssh密码，如果这堆机器都是同一个虚拟机模板复制出</description><pubDate>Tue, 21 Feb 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;假设你有一堆机器需要运维，并且都要执行相同的操作，那么你会怎么做呢？一个个ssh上去执行命令或是做成一个脚本挨个执行吗？这样效率太低啦，于是有了这个批量执行ssh运行命令的骚操作&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h2&gt;准备&lt;/h2&gt;
&lt;p&gt;本文建立在你从未ssh连接过这些机器，并且他们都配置好了网络（自动获取ip或是固定ip）&lt;br /&gt;
首先需要&lt;code&gt;sshpass&lt;/code&gt;用来批量填写ssh密码，如果这堆机器都是同一个虚拟机模板复制出来的，密码都是一样的，那就更好办了&lt;br /&gt;
还可以装一下&lt;code&gt;nmap&lt;/code&gt;用来扫描需要连接的机器的ip，或者需要一个ip对应用户密码的台账&lt;/p&gt;
&lt;p&gt;扫描&lt;code&gt;192.168.100.1&lt;/code&gt;到&lt;code&gt;192.168.100.254&lt;/code&gt;整个网段开了22端口的机器ip&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;nmap -sS 192.168.100.1/24 -p 22 -T 5 -open | grep 192.168.100. | awk &apos;{print($5)}&apos;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这样就得到了一个ip清单&lt;/p&gt;
&lt;h2&gt;执行命令&lt;/h2&gt;
&lt;p&gt;简单的说就是这样的：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sshpass -p ssh的密码 ssh -o StrictHostKeyChecking=no ssh用户名@ip地址 要运行的命令
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;其中StrictHostKeyChecking就是为了跳过初次连接ssh时显示证书要求yes同意的那个询问&lt;/p&gt;
&lt;p&gt;那和上面的nmap串起来，就得到了下面这条命令，就可以自动扫描这个网段并自动在每台机上执行了&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;nmap -sS 192.168.100.1/24 -p 22 -T 5 -open | grep 192.168.100. | awk &apos;{system(&quot;sshpass -p ssh的密码 ssh -o StrictHostKeyChecking=no ssh用户名@&quot;$5&quot; 要运行的命令&quot;)}&apos;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;或者写一个脚本就好了，把下面的内容贴到比如&lt;code&gt;batchSSH.sh&lt;/code&gt;文件中&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cat &amp;lt;&amp;lt; EOF | awk &apos;{print($1, system(&quot;sshpass -p &quot;$1&quot; ssh -o StrictHostKeyChecking=no &quot;$2&quot; &apos;&quot;$*&quot;&apos;&quot;))}&apos;
密码1 用户名1@ip1
密码2 用户名2@ip2
EOF
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这时候运行&lt;code&gt;sh batchSSH.sh 要运行的命令&lt;/code&gt;就会在每一台机上执行了&lt;/p&gt;
&lt;p&gt;如果你的用户名和密码都一样，那就这样，正好可以把上面nmap扫的ip贴进来&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cat &amp;lt;&amp;lt; EOF | awk &apos;{print($1, system(&quot;sshpass -p 密码 ssh -o StrictHostKeyChecking=no 用户名@&quot;$1&quot; &apos;&quot;$*&quot;&apos;&quot;))}&apos;
服务器ip1
服务器ip2
EOF
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;要是不放心，可以把&lt;code&gt;system&lt;/code&gt;删掉输出命令看看&lt;/p&gt;
</content:encoded></item><item><title>Zstandard(zstd)压缩</title><link>https://zyyme.com/zstd.html</link><guid isPermaLink="true">https://zyyme.com/zstd.html</guid><description>随着时代的发展，Win11已经自带zstd压缩支持，但由于大多数平台仍不支持zstd压缩文件的检查，这或许也是安全分享文件的一种方案，你可以直接在Win11的单个文件上右键，压缩到，压缩方式中选择Zstandard，来创建zstd压缩文件，如果你说你想压缩文件夹，那你可以使用tar先压缩一次（zip其实也可以，就是不标准），然后再将tar使用 Zstanda</description><pubDate>Sat, 11 Feb 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;随着时代的发展，Win11已经自带zstd压缩支持，但由于大多数平台仍不支持zstd压缩文件的检查，这或许也是安全分享文件的一种方案，你可以直接在Win11的单个文件上右键，压缩到，压缩方式中选择Zstandard，来创建zstd压缩文件，如果你说你想压缩文件夹，那你可以使用tar先压缩一次（zip其实也可以，就是不标准），然后再将tar使用&lt;br /&gt;
Zstandard压缩一次，下面将教你如何使用命令行，在Unix系统和Win10上使用zstd&lt;/p&gt;
&lt;p&gt;首先，使用使用zstd压缩非常块，压缩后的文件也很小，压缩等级为1-19，默认是3，并且支持多线程压缩（gzip需要装pigz）&lt;br /&gt;
但是文本文件（比如日志）使用gzip压缩后可以直接使用vim打开并且编辑，zip也是一样的道理&lt;/p&gt;
&lt;p&gt;举个例子，5G的系统盘tf卡的dd备份，使用gzip压缩后大小为1.9G，使用zstd压缩得到的文件是1.7G&lt;br /&gt;
关于压缩等级，建议设置成9，因为经过测试，像nas的j1900和3.5寸监控机械硬盘，在使用15的时候压缩挺慢的，9则挺快，默认的3由于硬盘速度其实也块不到哪去，而15与9的压缩后的大小差距不到50m，超过15会非常占cpu（ssd用16，12代i9，24线程占满，15则占不满），至于手机，因为散热和性能问题推荐设置成6，如果使用管道，还可以使用 &lt;code&gt;--adapt&lt;/code&gt; 自动调节压缩比&lt;/p&gt;
&lt;p&gt;压缩命令&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;zstd -T0 -9 文件名
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;解压命令&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;zstd -d 文件名
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;不会像gzip那样自动删除文件，还支持管道，gzip不支持管道解压，但是支持管道压缩，导致还原的时候需要先&lt;code&gt;gzip -dk 文件名&lt;/code&gt;解压出来后再使用，对于硬盘有一定的压力&lt;br /&gt;
如果需要操作完自动删除原文件，需要加上&lt;code&gt; --rm&lt;/code&gt;参数，如果ram非常充足，还可以使用&lt;code&gt; --ultra -22&lt;/code&gt;来提高压缩比(压缩等级最高22)&lt;/p&gt;
&lt;p&gt;在多个文件时，可以使用tar进行压缩&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;tar -cavf 压缩包.tar.zst 要压缩的内容用空格隔开
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;解压&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;tar -xavf 压缩包.tar
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;或者使用这种方法来指定压缩参数，使文件更小，&lt;code&gt;--long=31&lt;/code&gt;将使用2G的运行内存作为缓存协助压缩，&lt;code&gt;--long=27&lt;/code&gt;则为128M&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;tar --use-compress-program=&quot;zstd -9 -T0 --long=31&quot; -cvf 压缩包.tar.zst 要压缩的内容用空格隔开
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;tar -cvf - 要压缩的内容用空格隔开 | zstd -9 -T0 --long=31 -c &amp;gt; 压缩包.tar.zst
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;其中&lt;code&gt;-&lt;/code&gt;和&lt;code&gt;-c&lt;/code&gt;用于指定输出到标准输出，将内容交给后面的&lt;code&gt;|&lt;/code&gt;和&lt;code&gt;&amp;gt;&lt;/code&gt;，否则依然会输出到当前目录下&lt;br /&gt;
解压用上面的&lt;/p&gt;
&lt;p&gt;在Windows下，情况比较特殊&lt;br /&gt;
Win10 (其中zstd.exe需自备，tar系统自带):&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;tar -cvf 要压缩的内容用空格隔开 | zstd &amp;gt; 压缩包.tar.zst
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;解压&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;zstd -d 1.tar.zst | tar -xvf -
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Win11:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;tar --zstd -cvf 压缩包.tar.zst 要压缩的内容用空格隔开
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;解压&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;tar --zstd -xvf 压缩包.tar.zst
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;配合dd使用，备份硬盘或者分区&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;dd if=/dev/mmcblk0 bs=100M | zstd -9 -T0 --long=27 -c &amp;gt; ddBackup.img.zst
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;还原&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;zstd -d ddBackup.img.zst | dd of=/dev/mmcblk0 bs=100M
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>Linux看门狗喂狗</title><link>https://zyyme.com/linux-watchdog.html</link><guid isPermaLink="true">https://zyyme.com/linux-watchdog.html</guid><description>在通常情况下，无论是arm设备还是正常的x64的PC，Linux下都会有一个叫/dev/watchdog的设备 据说，内核会自动喂他，但是经过咩咩多次的死机经验来看，他喂了跟没喂一样，优先级过高了，系统卡死了也不重启 还有安装一个叫watchdog的程序来喂，依然是实时性过高，导致卡死不重启 据说，超时时间是1分钟，但实测在s905l和s905l3a上，30</description><pubDate>Mon, 30 Jan 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;在通常情况下，无论是arm设备还是正常的x64的PC，Linux下都会有一个叫&lt;code&gt;/dev/watchdog&lt;/code&gt;的设备&lt;br /&gt;
据说，内核会自动喂他，但是经过咩咩多次的死机经验来看，他喂了跟没喂一样，优先级过高了，系统卡死了也不重启&lt;br /&gt;
还有安装一个叫watchdog的程序来喂，依然是实时性过高，导致卡死不重启&lt;br /&gt;
据说，超时时间是1分钟，但实测在s905l和s905l3a上，30秒喂一次都会重启，20秒一次就没问题，因此就有了下面两种喂狗方式：&lt;/p&gt;
&lt;h3&gt;crontab法&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;sudo crontab -e&lt;/code&gt;修改root的计划任务，加入这行&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;* * * * * echo 1 &amp;gt; /dev/watchdog; sleep 20; echo 1 &amp;gt; /dev/watchdog; sleep 20; echo 1 &amp;gt; /dev/watchdog
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;方便是很方便，缺点也显而易见，在&lt;code&gt;dmesg&lt;/code&gt;查看系统日志时会看到大量的&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;watchdog: watchdog0: watchdog did not stop!
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;但是这也是有效的，crontab的优先级并不高，系统卡死的时候crontab会不准时或卡死堆积起来同时执行多次&lt;/p&gt;
&lt;h3&gt;Python法&lt;/h3&gt;
&lt;p&gt;由于Linux大量依赖python的程序，所以Linux中一般都自带python3或者python2.7&lt;br /&gt;
鉴于可能出现系统负载爆炸但是这程序还活着的情况，顺便监视一下5分钟平均负载&lt;br /&gt;
新建&lt;code&gt;linuxWatchdog.py&lt;/code&gt;，写入内容&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# coding=utf-8
# Linux Watchdog
# v1.0
# Sparkle 20230130
import os, time
with open(&apos;/dev/watchdog&apos;, &apos;w&apos;) as d, open(&apos;/proc/loadavg&apos;, &apos;r&apos;) as l:
    while True:
        d.write(&quot;1&quot;)
        d.flush()
        l.seek(0)
        if float(l.read().split()[1]) &amp;gt; 200:
            break
        time.sleep(15)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;编辑&lt;code&gt;/etc/rc.local&lt;/code&gt;在&lt;code&gt;exit 0&lt;/code&gt;上加入&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;nice -n -19 python3 /root/linuxWatchdog.py &amp;amp;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这个程序会每15秒喂一次狗，并且使用最低的系统优先级来运行，尽可能做到卡死时他先死&lt;/p&gt;
&lt;h3&gt;网络检查&lt;/h3&gt;
&lt;p&gt;比如像cm311-1a运行armbian的情况下，网口在开机后可能会抽风，导致没有网络，需要重启或是插拔才能正常工作，那么就可以在crontab中加一条&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;*/5 * * * * ping -W 30 -c 1 -q baidu.com &amp;gt;/dev/null;if [ $? != 0 ];then reboot;fi
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这样每5分钟都会ping一次检查网络是否连通，否则就重启&lt;/p&gt;
</content:encoded></item><item><title>Tasker实现Android通知息屏转发iOS</title><link>https://zyyme.com/tasker-android-notification-push-to-ios.html</link><guid isPermaLink="true">https://zyyme.com/tasker-android-notification-push-to-ios.html</guid><description>目前市面上的转发app大多只支持Android转Android，或是要收费，本文就用Tasker来实现免费的通过http推送api实现通知转发 iOS端目前有个App叫Bark可以提供http推送服务，走苹果的通知推送速度快免费不限量 1. 点击加号，新建一个配置文件，事件，搜索添加通知，无需修改，直接返回 2. 建个新任务，随便起个名，我这里叫通知转发 3</description><pubDate>Fri, 30 Dec 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;目前市面上的转发app大多只支持Android转Android，或是要收费，本文就用Tasker来实现免费的通过http推送api实现通知转发&lt;br /&gt;
iOS端目前有个App叫Bark可以提供http推送服务，走苹果的通知推送速度快免费不限量&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;点击加号，新建一个配置文件，事件，搜索添加&lt;code&gt;通知&lt;/code&gt;，无需修改，直接返回&lt;/li&gt;
&lt;li&gt;建个新任务，随便起个名，我这里叫通知转发&lt;/li&gt;
&lt;li&gt;加号，搜索添加&lt;code&gt;if&lt;/code&gt;，条件&lt;code&gt;%evtprm1 != 你不想推送的应用包名&lt;/code&gt;，多个点击右上角加号用&lt;code&gt;与&lt;/code&gt;连起来&lt;/li&gt;
&lt;li&gt;加号，搜索添加&lt;code&gt;HTTP Request&lt;/code&gt;，在URL处输入你的http推送api，我这里用的是Bark的，你可以直接复制把key改成你自己的：
&lt;code&gt;https://api.day.app/key/%evtprm2  %evtprm1/%evtprm3?sound=birdsong&amp;amp;group=android&lt;/code&gt;&lt;br /&gt;
其中，&lt;code&gt;%evtprm2&lt;/code&gt;是通知标题，&lt;code&gt;%evtprm3&lt;/code&gt;是通知内容，&lt;code&gt;%evtprm1&lt;/code&gt;是应用的包名&lt;/li&gt;
&lt;li&gt;返回，到配置文件长按那个通知，添加一个状态，搜索添加&lt;code&gt;屏幕状态&lt;/code&gt;，默认关闭无需修改，直接返回就完成了&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这是导出的任务xml，可以保存成文件后，点击顶部任务导入任务&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;TaskerData sr=&quot;&quot; dvi=&quot;1&quot; tv=&quot;5.9.3&quot;&amp;gt;
	&amp;lt;Task sr=&quot;task10&quot;&amp;gt;
		&amp;lt;cdate&amp;gt;1672318605010&amp;lt;/cdate&amp;gt;
		&amp;lt;edate&amp;gt;1678235314365&amp;lt;/edate&amp;gt;
		&amp;lt;id&amp;gt;10&amp;lt;/id&amp;gt;
		&amp;lt;nme&amp;gt;通知转发&amp;lt;/nme&amp;gt;
		&amp;lt;pri&amp;gt;6&amp;lt;/pri&amp;gt;
		&amp;lt;Action sr=&quot;act0&quot; ve=&quot;7&quot;&amp;gt;
			&amp;lt;code&amp;gt;37&amp;lt;/code&amp;gt;
			&amp;lt;ConditionList sr=&quot;if&quot;&amp;gt;
				&amp;lt;bool0&amp;gt;And&amp;lt;/bool0&amp;gt;
				&amp;lt;bool1&amp;gt;And&amp;lt;/bool1&amp;gt;
				&amp;lt;bool2&amp;gt;And&amp;lt;/bool2&amp;gt;
				&amp;lt;Condition sr=&quot;c0&quot; ve=&quot;3&quot;&amp;gt;
					&amp;lt;lhs&amp;gt;%MEPUSH&amp;lt;/lhs&amp;gt;
					&amp;lt;op&amp;gt;1&amp;lt;/op&amp;gt;
					&amp;lt;rhs&amp;gt;%evtprm1%evtprm2%evtprm3&amp;lt;/rhs&amp;gt;
				&amp;lt;/Condition&amp;gt;
				&amp;lt;Condition sr=&quot;c1&quot; ve=&quot;3&quot;&amp;gt;
					&amp;lt;lhs&amp;gt;%evtprm1&amp;lt;/lhs&amp;gt;
					&amp;lt;op&amp;gt;1&amp;lt;/op&amp;gt;
					&amp;lt;rhs&amp;gt;org.telegram.messenger&amp;lt;/rhs&amp;gt;
				&amp;lt;/Condition&amp;gt;
				&amp;lt;Condition sr=&quot;c2&quot; ve=&quot;3&quot;&amp;gt;
					&amp;lt;lhs&amp;gt;%evtprm1&amp;lt;/lhs&amp;gt;
					&amp;lt;op&amp;gt;1&amp;lt;/op&amp;gt;
					&amp;lt;rhs&amp;gt;com.synology.projectkailash&amp;lt;/rhs&amp;gt;
				&amp;lt;/Condition&amp;gt;
				&amp;lt;Condition sr=&quot;c3&quot; ve=&quot;3&quot;&amp;gt;
					&amp;lt;lhs&amp;gt;%evtprm1&amp;lt;/lhs&amp;gt;
					&amp;lt;op&amp;gt;2&amp;lt;/op&amp;gt;
					&amp;lt;rhs&amp;gt;com.digibites.accubattery&amp;lt;/rhs&amp;gt;
				&amp;lt;/Condition&amp;gt;
			&amp;lt;/ConditionList&amp;gt;
		&amp;lt;/Action&amp;gt;
		&amp;lt;Action sr=&quot;act1&quot; ve=&quot;7&quot;&amp;gt;
			&amp;lt;code&amp;gt;547&amp;lt;/code&amp;gt;
			&amp;lt;Str sr=&quot;arg0&quot; ve=&quot;3&quot;&amp;gt;%MEPUSH&amp;lt;/Str&amp;gt;
			&amp;lt;Str sr=&quot;arg1&quot; ve=&quot;3&quot;&amp;gt;%evtprm1%evtprm2%evtprm3&amp;lt;/Str&amp;gt;
			&amp;lt;Int sr=&quot;arg2&quot; val=&quot;0&quot;/&amp;gt;
			&amp;lt;Int sr=&quot;arg3&quot; val=&quot;0&quot;/&amp;gt;
			&amp;lt;Int sr=&quot;arg4&quot; val=&quot;0&quot;/&amp;gt;
			&amp;lt;Int sr=&quot;arg5&quot; val=&quot;3&quot;/&amp;gt;
		&amp;lt;/Action&amp;gt;
		&amp;lt;Action sr=&quot;act2&quot; ve=&quot;7&quot;&amp;gt;
			&amp;lt;code&amp;gt;339&amp;lt;/code&amp;gt;
			&amp;lt;Int sr=&quot;arg1&quot; val=&quot;0&quot;/&amp;gt;
			&amp;lt;Int sr=&quot;arg10&quot; val=&quot;0&quot;/&amp;gt;
			&amp;lt;Int sr=&quot;arg11&quot; val=&quot;0&quot;/&amp;gt;
			&amp;lt;Str sr=&quot;arg2&quot; ve=&quot;3&quot;&amp;gt;https://api.day.app/YourKeyHere/%evtprm2  %evtprm1/%evtprm3?sound=birdsong&amp;amp;amp;group=OnePlus7Pro&amp;amp;amp;icon=https://zyyme.com/usr/themes/zyymeTheme/screenshot.png&amp;lt;/Str&amp;gt;
			&amp;lt;Str sr=&quot;arg3&quot; ve=&quot;3&quot;/&amp;gt;
			&amp;lt;Str sr=&quot;arg4&quot; ve=&quot;3&quot;/&amp;gt;
			&amp;lt;Str sr=&quot;arg5&quot; ve=&quot;3&quot;/&amp;gt;
			&amp;lt;Str sr=&quot;arg6&quot; ve=&quot;3&quot;/&amp;gt;
			&amp;lt;Str sr=&quot;arg7&quot; ve=&quot;3&quot;/&amp;gt;
			&amp;lt;Int sr=&quot;arg8&quot; val=&quot;5&quot;/&amp;gt;
			&amp;lt;Int sr=&quot;arg9&quot; val=&quot;0&quot;/&amp;gt;
		&amp;lt;/Action&amp;gt;
	&amp;lt;/Task&amp;gt;
&amp;lt;/TaskerData&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>随身WiFi棒子</title><link>https://zyyme.com/msm8916-wifi.html</link><guid isPermaLink="true">https://zyyme.com/msm8916-wifi.html</guid><description>这些4G随身WiFi棒子大多是卖内置esim卡的流量赚钱，所以都卖的很便宜（大概10元，早期5元），但性能却不差，有的还自带卡槽可以插自己的卡，有骁龙210,410，还有中兴微三种，本文主要以刷了Linux后的骁龙410的随身WiFi棒子UFI003（UFI001C）展开，如果为了上网，而不是为了折腾着玩，请优先选择旧手机开热点而不是这种WiFi棒子 备份 </description><pubDate>Wed, 28 Dec 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;这些4G随身WiFi棒子大多是卖内置esim卡的流量赚钱，所以都卖的很便宜（大概10元，早期5元），但性能却不差，有的还自带卡槽可以插自己的卡，有骁龙210,410，还有中兴微三种，本文主要以刷了Linux后的骁龙410的随身WiFi棒子UFI003（UFI001C）展开，如果为了上网，而不是为了折腾着玩，请优先选择旧手机开热点而不是这种WiFi棒子&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h3&gt;备份&lt;/h3&gt;
&lt;p&gt;常在河边走哪有不湿鞋，做一个完整的备份以便不时之需&lt;br /&gt;
视频教程：&lt;a href=&quot;https://www.bilibili.com/video/BV1sG4y1E7oG&quot;&gt;BV1sG4y1E7oG&lt;/a&gt;&lt;br /&gt;
顺便说一下，基带存在fsg modemst1 modemst2这三个分区里，所以其实备份了这三个分区相当于备份了基带，备份好这三个分区，再用星海备份基带擦除基带写入基带这一波操作，可能会全网通，也可能没信号&lt;/p&gt;
&lt;p&gt;至于移动4g用不了，那是硬件只支持一个冷门的频段，用不了也不奇怪了，大多数应该都能很好的支持电信4G，联通可能要操作一下，我没有联通卡不知道，全网通的设备在cpu那面可以看到有一个1cm*0.5cm的长方形射频芯片，大部分是没有的，大部分都只能用电信卡（联通可能也行）&lt;/p&gt;
&lt;h3&gt;查看sim卡状态&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;mmcli -m 0
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;看&lt;code&gt;Status&lt;/code&gt;就可以知道当前卡的状态和信号强度&lt;br /&gt;
如果返回&lt;code&gt;error: couldn&apos;t find modem&lt;/code&gt;，可以把你全分区备份里的modem分区用7zip解压了放到/lib/firmware/大概可以解决4g用不了的问题&lt;/p&gt;
&lt;h3&gt;切换esim&lt;/h3&gt;
&lt;p&gt;切换需要至少几十秒的时间，不要着急，连上了自然有网，可以用上面的那条命令检查卡是否识别到&lt;/p&gt;
&lt;p&gt;Debian&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;echo 0 &amp;gt; /sys/class/leds/sim\:sel/brightness
echo 1 &amp;gt; /sys/class/leds/sim\:sel2/brightness
systemctl restart rmtfs
systemctl restart ModemManager
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;切回内置将0和1换一下位置&lt;/p&gt;
&lt;p&gt;Openwrt&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;echo 0 &amp;gt; /sys/class/leds/sim\:sel/brightness
echo 255 &amp;gt; /sys/class/leds/sim\:sel2/brightness
/etc/init.d/rmtfs restart
/etc/init.d/modemmanager restart
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;切回内置将0和255换一下位置&lt;/p&gt;
&lt;h3&gt;查看emmc（emcp）的寿命&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;cat /sys/class/mmc_host/mmc0/mmc0\:0001/life_time
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;返回0x00的话就是看不到，00这个位置的数字就是已用的寿命百分比&lt;/p&gt;
&lt;h3&gt;debian建新用户&lt;/h3&gt;
&lt;p&gt;毕竟 root敢死队 是一种很危险的行为，建议日常还是使用sudo而不是直接登录root用户&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# 默认有个叫user的普通用户，把它删掉空出1000的uid和gid
userdel user
# 添加用户me 可以改成你喜欢的名字
adduser me
# 把用户me添加到sudu组
usermod -aG sudo me
# 登录测试一下 输入刚刚建的用户名和密码尝试登录吧
login
# 使用sudu切换到root试一下 确保sudu正常工作
sudo su
# 禁用root用户直接登录ssh
sudo sed -i &apos;s/PermitRootLogin yes/# PermitRootLogin yes/g&apos; /etc/ssh/sshd_config
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;安装zsh 促进体验&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;sudo apt update
sudo apt install git zsh
sh -c &quot;$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)&quot;
sed -i &apos;s/ZSH_THEME=&quot;robbyrussell&quot;/ZSH_THEME=&quot;ys&quot;/g&apos; .zshrc
echo &apos;export PATH=/usr/local/sbin:/usr/sbin:/sbin:$PATH&apos; &amp;gt;&amp;gt; .zshrc
zsh
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;切换usb的otg模式&lt;/h3&gt;
&lt;p&gt;在切换为host模式时，插入小米的qc3.0充电头可能带来巨大发热（原因未知）&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# 切换成usb主机模式（otg模式）
echo host &amp;gt; /sys/kernel/debug/usb/ci_hdrc.0/role
# 切换为默认的从机模式（接电脑的usb网络共享和adb）
echo gadget &amp;gt; /sys/kernel/debug/usb/ci_hdrc.0/role
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;开机自动切换，将下面的内容加到&lt;code&gt;/etc/rc.local&lt;/code&gt;的&lt;code&gt;exit 0&lt;/code&gt;上面&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# usb auto otg
sleep 3
grep 0 /sys/kernel/debug/usb/ci_hdrc.0/device | grep speed
if [ $? -eq 0 ]
then
echo host &amp;gt; /sys/kernel/debug/usb/ci_hdrc.0/role
fi
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;开机等3秒检查是否连接到电脑，没有连接就切换成主机模式可以用公对公接usb设备&lt;/p&gt;
&lt;h3&gt;Openwrt开机自动联网，解决WiFi限速&lt;/h3&gt;
&lt;p&gt;本质上Openwrt开机是不会自动联网的，因为启动网络的时候moden还没启动，因此添加启动项来解决这个问题&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# modem auto start time sync
sleep 20
/etc/init.d/network restart
sleep 10
date -s &quot;`mmcli -m 0  --time|grep -E &quot;Time &quot;  | awk -F &quot; &quot;  &apos;{print $5,$NF}&apos;|awk -F &quot;+&quot; &apos;{print $1,$3}&apos;|awk -F &quot;T&quot;  &apos;{print $1,$2}&apos;| awk &apos;{gsub(/^\s+|\s+$/, &quot;&quot;);print}&apos;`&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;注意了，如果重启网络服务，usb网络共享的mac地址是会变的，所以我们需要给他固定一个值&lt;br /&gt;
打开网络，接口，顶部的设备，找到usb0，配置，把它显示的mac地址抄一份填进去保存（注意是半角英文冒号）&lt;/p&gt;
&lt;p&gt;修改ap设置，带宽20mhz，信道6，底部开启wmn，wifi可以稳定9mbps&lt;/p&gt;
&lt;p&gt;另外有个玄学操作，有概率提升到19mbps：&lt;br /&gt;
在高级设置中，无线信号覆盖密度改为正常（默认是禁用）&lt;br /&gt;
启动项都删掉换成这个&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# modem auto start time sync
sleep 20
/etc/init.d/network restart
uci set wireless.default_radio0.wmm=1
wifi up
sleep 10
date -s &quot;`mmcli -m 0  --time|grep -E &quot;Time &quot;  | awk -F &quot; &quot;  &apos;{print $5,$NF}&apos;|awk -F &quot;+&quot; &apos;{print $1,$3}&apos;|awk -F &quot;T&quot;  &apos;{print $1,$2}&apos;| awk &apos;{gsub(/^\s+|\s+$/, &quot;&quot;);print}&apos;`&quot;
uci set wireless.default_radio0.wmm=0
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;最后我选择手动将Debian配置成一个路由器，折腾了一天，完美的实现了op的所有功能，可以继续往下看&lt;br /&gt;
顺带提一下，可以通过开启ipv4转发（下面Ap配置时开了），并且安装v2◯◯◯a让开出来的热点实现透明◯◯，安装看官方文档，换iptable的那步不要做&lt;/p&gt;
&lt;h3&gt;Debian的Ap配置&lt;/h3&gt;
&lt;p&gt;adb shell上去nmtui&lt;br /&gt;
添加网桥&lt;code&gt;br0&lt;/code&gt;&lt;br /&gt;
网桥里添加以太网，名称设备&lt;code&gt;usb0&lt;/code&gt;&lt;br /&gt;
网桥里添加wi-fi，模式选成接入点，这就是ap的信息，名称设备&lt;code&gt;wlan0&lt;/code&gt;&lt;br /&gt;
信道选择2.4G，旁边填写6或8&lt;br /&gt;
安全性选第二个wpa2，不要用wpa3，会一直提示密码错误&lt;br /&gt;
回到网桥配置中，ipv4配置改为手动，并添加ip地址，填入网关的地址，默认是192.168.68.1，下面会告诉你怎么改，也可以设置成你想要的网段，那个叫网关地址的必须空着&lt;br /&gt;
ipv6配置成忽略（不然下面的ipv6配置不会生效）&lt;br /&gt;
移到最下面，确定，返回，退出&lt;/p&gt;
&lt;p&gt;如果需要修改网关和分配的ip范围，可以修改&lt;code&gt;/etc/dnsmasq.conf&lt;/code&gt;最后网关和分配ip范围，比如这样，改成192.168.250.1&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;domain=lan
local=/lan/
listen-address=192.168.250.1
dhcp-range=192.168.250.100,192.168.250.254,12h
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;上面加的两行可以使其可以解析局域网的主机名&lt;br /&gt;
另外还需要修改&lt;code&gt;/etc/hosts&lt;/code&gt;，在第一行加上&lt;code&gt;192.168.250.1 你的主机名&lt;/code&gt;保证解析的可以被其他设备访问，主机名在&lt;code&gt;/etc/hostname&lt;/code&gt;也是可以修改的&lt;/p&gt;
&lt;p&gt;继续配置Ap，启用试试看，如果失败了，可以adb shell上去修改，以下命令请在adb shell下一行行运行（因为网会断）&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;echo &quot;net.ipv4.ip_forward = 1&quot; &amp;gt;&amp;gt; /etc/sysctl.conf
echo &quot;net.ipv6.conf.all.forwarding=1&quot; &amp;gt;&amp;gt; /etc/sysctl.conf
echo &quot;net.ipv6.conf.all.proxy_ndp=1&quot; &amp;gt;&amp;gt; /etc/sysctl.conf
echo &quot;net.ipv6.conf.all.accept_ra=2&quot; &amp;gt;&amp;gt; /etc/sysctl.conf
sysctl -p
nmcli connection up br0
systemctl enable dnsmasq.service
systemctl start dnsmasq.service
nmcli connection show
nmcli connection up usb0
nmcli connection up wlan0
systemctl enable dnsmasq.service
systemctl start dnsmasq.service
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这样就配置好了ap，试一下能不能搜到ap，能的话那就完成了&lt;br /&gt;
&lt;strong&gt;如果重启后获取不到ip，可以多运行几次&lt;code&gt;dnsmasq.service&lt;/code&gt;那两行，后面就没有问题了&lt;/strong&gt;&lt;/p&gt;
&lt;h3&gt;Debian在没连上WiFi的时候自动开Ap&lt;/h3&gt;
&lt;p&gt;首先按照上面配置Ap&lt;br /&gt;
编辑&lt;code&gt;/root/autoap.sh&lt;/code&gt;，写入下面的内容&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#!/bin/sh
nmcli connection down wlan0
sleep 30
ip=&quot;`ifconfig | grep wlan0 -A 1 | grep inet | awk &apos;{print $2}&apos;`&quot;
if [ ! -z &quot;$ip&quot; ]; then
echo $ip
else
nmcli connection up wlan0
fi
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;然后将&lt;code&gt;sh /root/autoap.sh &amp;amp;&lt;/code&gt;加到&lt;code&gt;/etc/rc.local&lt;/code&gt;的&lt;code&gt;exit 0&lt;/code&gt;上面就完成了&lt;br /&gt;
开机时会自动停用ap30秒去连接已保存wifi，如果没连上就会打开ap便于配置新的wifi连接&lt;/p&gt;
&lt;h3&gt;moden的ipv6给Ap共享&lt;/h3&gt;
&lt;p&gt;首先按照上面配置Ap，特别是&lt;code&gt;ipv6&lt;/code&gt;那几行一定要配置，不然有ip没网&lt;br /&gt;
安装依赖，可能会问你监听接口，回答&lt;code&gt;br0&lt;/code&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;apt install ndppd radvd wide-dhcpv6-server
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;创建文件&lt;code&gt;/etc/NetworkManager/dispatcher.d/dhcpv6&lt;/code&gt;贴进去&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#!/usr/bin/env bash

interface=$1
event=$2
if [ &quot;$interface&quot; == &quot;wwan0&quot; ]; then
        prefix=$(ip -6 addr show dev wwan0| sed -e&apos;s/^.*inet6 \([^ ]*\)\/.*$/\1/;t;d&apos;|head -n 1|cut -f&apos;1-4&apos; -d&apos;:&apos;)
        # just assume prefix length /64 here
        echo &quot;get prefix $prefix::/64&quot;|systemd-cat -t ipv6_conf
        cp /etc/ndppd.conf.me /etc/ndppd.conf
        sed -i &quot;s/REPLACE_PREFIX_HERE/$prefix:2333::\/80/g&quot; /etc/ndppd.conf
        cp /etc/radvd.conf.me /etc/radvd.conf
        sed -i &quot;s/REPLACE_PREFIX_HERE/$prefix:2333::\/64/g&quot; /etc/radvd.conf
        cp /etc/wide-dhcpv6/dhcp6s.conf.me /etc/wide-dhcpv6/dhcp6s.conf
        sed -i &quot;s/PREFIX_MIN/$prefix:2333::2000/g&quot; /etc/wide-dhcpv6/dhcp6s.conf
        sed -i &quot;s/PREFIX_MAX/$prefix:2333::3000/g&quot; /etc/wide-dhcpv6/dhcp6s.conf
        systemctl restart radvd
        systemctl restart ndppd
        systemctl stop wide-dhcpv6-server
        systemctl start wide-dhcpv6-server
        echo 1 &amp;gt; /proc/sys/net/ipv6/conf/all/forwarding
        sleep 10
        systemctl restart dnsmasq
        sleep 10
        echo &quot;setting route&quot; |systemd-cat -t ipv6_conf
        ip -6 addr add $prefix:2333::1/80 dev br0
        ip -6 route add $prefix::/65 dev br0
        ip -6 route add $prefix:8000::/65 dev br0
        ip -6 route |systemd-cat -t ipv6_conf
fi
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;然后&lt;code&gt;chmod +x /etc/NetworkManager/dispatcher.d/dhcpv6&lt;/code&gt;&lt;br /&gt;
还需要创建几个配置文件模板&lt;br /&gt;
&lt;code&gt;/etc/ndppd.conf.me&lt;/code&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;proxy wwan0 {
    router yes
    timeout 500
    ttl 30000
    rule REPLACE_PREFIX_HERE {
        auto
    }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;/etc/radvd.conf.me&lt;/code&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;interface br0 {
    AdvSendAdvert on;
    AdvOtherConfigFlag on;
    AdvManagedFlag on;
    MinRtrAdvInterval 3;
    MaxRtrAdvInterval 10;
    prefix REPLACE_PREFIX_HERE {
        AdvOnLink on;
        AdvAutonomous on;
        AdvRouterAddr off;
    };
};
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;/etc/wide-dhcpv6/dhcp6s.conf.me&lt;/code&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;interface br0 {
    address-pool pool1 3600;
};

pool pool1 {
    range PREFIX_MIN to PREFIX_MAX ;
};
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;降低发热 调节cpu频率&lt;/h3&gt;
&lt;p&gt;众所周知，骁龙的基带是真的烫，甚至可以比cpu都烫（比如iPhone12），只连WiFi不插卡的就没有这个问题&lt;br /&gt;
默认主频是四核998.4mhz，平时会一直跑在800mhz，但负载只有0.3，导致在插卡长时间工作的时候巨烫，因此将cpu频率减半，降到400mhz，温度就暖暖的一点也不烫了（四核400mhz的温度应该低于双核800mhz）&lt;br /&gt;
查看当前支持的频率，不同的内核不一样&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cat /sys/devices/system/cpu/cpufreq/policy0/scaling_available_frequencies
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;将以下内容添加到开机启动项，限制最高频率为400mhz&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;echo 400000 &amp;gt; /sys/devices/system/cpu/cpufreq/policy0/scaling_max_freq 
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;另外还有一种直白明了的办法，安装&lt;code&gt;sudo apt-get install cpufrequtils&lt;/code&gt;&lt;br /&gt;
修改&lt;code&gt;/etc/init.d/cpufrequtils&lt;/code&gt;来实现设置频率最高频率为600mhz&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;MAX_SPEED=&quot;600&quot;
MIN_SPEED=&quot;0&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;修改Debian连上ssh时的提示&lt;/h3&gt;
&lt;p&gt;编辑&lt;code&gt;/etc/update-motd.d/10-uname&lt;/code&gt;即可修改&lt;br /&gt;
比如最后加一个modem信号显示&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;mmcli -m 0|grep signal|awk &apos;{print $2&quot; &quot;$3&quot; &quot;$4&quot;\
&quot;}&apos;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;查看效果&lt;code&gt;run-parts /etc/update-motd.d&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;Debian启动时从modem同步时间&lt;/h3&gt;
&lt;p&gt;因为Debian下moden的时间其实是不对的，他显示他是+8时区其实是utc时间，modem启动也巨慢，所以要这样操作一下&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sleep 25
date -s &quot;`mmcli -m 0  --time|grep -E &quot;Time &quot;  | awk -F &quot; &quot;  &apos;{print $5,$NF}&apos;|awk -F &quot;+&quot; &apos;{print $1,$3}&apos;|awk -F &quot;T&quot;  &apos;{print $1,$2}&apos;| awk &apos;{gsub(/^\s+|\s+$/, &quot;&quot;);print}&apos;`&quot; &amp;amp;&amp;amp; date -s &quot;`date -d +8hour &apos;+%Y-%m-%d %H:%M:%S&apos;`&quot;
systemctl start dnsmasq.service
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;加入&lt;code&gt;/etc/rc.local&lt;/code&gt;的&lt;code&gt;exit 0&lt;/code&gt;上面（最好写在你写的内容的最上面）&lt;/p&gt;
&lt;h3&gt;led灯控制&lt;/h3&gt;
&lt;p&gt;在&lt;code&gt;/sys/class/leds/&lt;/code&gt;有三个led，分别是blue,green,red，其他的是控制卡槽等设备的入口，可以修改led的触发器实现不同的功能&lt;br /&gt;
查看所有触发器&lt;code&gt;cat /sys/class/leds/green\:internet/trigger&lt;/code&gt;框起来那个就是当前的&lt;br /&gt;
比如把绿色灯改为usb网络指示灯&lt;code&gt;echo usb-gadget &amp;gt;/sys/class/leds/green\:internet/trigger&lt;/code&gt;&lt;br /&gt;
需要永久修改需加入&lt;code&gt;/etc/rc.local&lt;/code&gt;的&lt;code&gt;exit 0&lt;/code&gt;上面&lt;/p&gt;
&lt;h3&gt;Debian远程桌面&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;# 远程桌面服务
sudo apt install xrdp
# lxde桌面最小安装
sudo apt install lxde-core
# 思源黑体中文字体 显示效果比文泉驿优秀
sudo apt install fonts-noto-cjk
# 可选 chromium浏览器 arm64没有chrome
sudo apt-get install chromium
# 可选 chromium浏览器界面的中文语言包 不装不影响中文网页浏览
sudo apt-get install chromium
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;然后用微软的远程桌面客户端连上去就可以用了&lt;/p&gt;
&lt;h3&gt;Debian Btrfs修改压缩率&lt;/h3&gt;
&lt;p&gt;使用更高的压缩率可以减少空间占用，但占用更多的cpu&lt;br /&gt;
本着emmc慢成狗cpu十分富裕，可以考虑采用更高的压缩率，默认3，可以设置1到15，不建议大于8&lt;br /&gt;
修改&lt;code&gt;/etc/fstab&lt;/code&gt;将其中&lt;code&gt;zstd&lt;/code&gt;改为&lt;code&gt;zstd:6&lt;/code&gt;即可将压缩等级改为6&lt;br /&gt;
为了避免修改错误，导致无法开机，可以先在下面这条命令上做修改，并运行进行挂载测试(比配置中的多了一个remount的选项)&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo mount -o remount,defaults,noatime,compress=zstd:6,commit=120 /dev/mmcblk0p14 /
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;可以使用这条命令对根分区进行压缩，系统占用大约700m左右，压缩从3调成6可以把占用从2g降到1.4g&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo btrfs filesystem defragment -r -v -czstd /
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;固件&lt;/h3&gt;
&lt;p&gt;咩咩按照上面配置好并备份了一份rootfs在这 &lt;a href=&quot;https://cloud.zyyme.com/%E9%9A%8F%E8%BA%ABWiFi%E6%A3%92%E5%AD%90/&quot;&gt;咩咩云&lt;/a&gt;&lt;br /&gt;
可以先一键刷入其他必要的东西，再按键进9008刷这个rootfs会比较快（不用9008直接解压改成rootfs.img和一键放一起也能刷）&lt;br /&gt;
至于密码是什么嘛，自己&lt;code&gt;adb shell&lt;/code&gt;上去用&lt;code&gt;passwd root&lt;/code&gt;改吧&lt;br /&gt;
配置好了自动切换usb，自动切换连wifi还是开热点，以及透明◯◯服务在2017端口&lt;/p&gt;
&lt;p&gt;贴一个咩咩的Debian的&lt;code&gt;/etc/rc.local&lt;/code&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#!/bin/sh

sleep 5
grep 0 /sys/kernel/debug/usb/ci_hdrc.0/device | grep speed
if [ $? -eq 0 ]
then
echo host &amp;gt; /sys/kernel/debug/usb/ci_hdrc.0/role
echo usb-host &amp;gt;/sys/class/leds/green\:internet/trigger
#echo timer &amp;gt; /sys/class/leds/green\:internet/trigger
#echo 1 &amp;gt; /sys/class/leds/green\:internet/delay_on
#echo 1999&amp;gt; /sys/class/leds/green\:internet/delay_off
else
echo usb-gadget &amp;gt;/sys/class/leds/green\:internet/trigger
fi

sleep 25
date -s &quot;`mmcli -m 0  --time|grep -E &quot;Time &quot;  | awk -F &quot; &quot;  &apos;{print $5,$NF}&apos;|awk -F &quot;+&quot; &apos;{print $1,$3}&apos;|awk -F &quot;T&quot;  &apos;{print $1,$2}&apos;| awk &apos;{gsub(/^\s+|\s+$/, &quot;&quot;);print}&apos;`&quot; &amp;amp;&amp;amp; date -s &quot;`date -d +8hour &apos;+%Y-%m-%d %H:%M:%S&apos;`&quot;

bash /etc/NetworkManager/dispatcher.d/dhcpv6 wwan0 &amp;amp;

echo 600000 &amp;gt; /sys/devices/system/cpu/cpufreq/policy0/scaling_max_freq

exit 0
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>PVE(Proxmox VE)解除集群</title><link>https://zyyme.com/pve-disable-cluster.html</link><guid isPermaLink="true">https://zyyme.com/pve-disable-cluster.html</guid><description>PVE的集群创建很容易，适合新机加入现有虚拟化时方便的迁移虚拟机 但是没有人说怎么把集群解开，变成独立运行的单机，并且保留虚拟机，网上找到的是备份，删除节点，还原备份的虚拟机 集群缺点 1. PVE集群的子机需要用母机验证来进入管理控制台，如果母机没有开机或者挂了就进不去啦 2. 加入集群的子机必须是空的没有虚拟机的 只需要运行以下命令就可以把集群解了 不会</description><pubDate>Tue, 06 Dec 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;PVE的集群创建很容易，适合新机加入现有虚拟化时方便的迁移虚拟机&lt;br /&gt;
但是没有人说怎么把集群解开，变成独立运行的单机，并且保留虚拟机，网上找到的是备份，删除节点，还原备份的虚拟机&lt;/p&gt;
&lt;p&gt;集群缺点&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;PVE集群的子机需要用母机验证来进入管理控制台，如果母机没有开机或者挂了就进不去啦&lt;/li&gt;
&lt;li&gt;加入集群的子机必须是空的没有虚拟机的&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;只需要运行以下命令就可以把集群解了&lt;br /&gt;
不会删除虚拟机&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;systemctl stop pve-cluster corosync
pmxcfs -l
cp -a /etc/corosync /etc/corosync.bak
rm /etc/corosync/*
rm /etc/pve/corosync.conf
killall pmxcfs
systemctl start pve-cluster
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;其中&lt;code&gt;/etc/corosync.bak&lt;/code&gt;是备份，如果要组回来可以直接用回他（重走流程要清空子机），再启动&lt;code&gt;corosync&lt;/code&gt;服务即可&lt;/p&gt;
&lt;p&gt;这时候可以各自用各自的root用户在管理控制台登录&lt;br /&gt;
会发现有一些问号的虚拟机，和已经解除集群的机器，那现在就可以放心的删除了，因为已经断开连接了，不会把子机的虚拟机删掉&lt;/p&gt;
</content:encoded></item><item><title>GDB调试器(GNU Project Debugger)的使用</title><link>https://zyyme.com/gdb.html</link><guid isPermaLink="true">https://zyyme.com/gdb.html</guid><description>因为某些原因，一直使用C++做嵌入式开发的咩咩被迫使用C++开发了一些PC端程序的功能，因为历史遗留原因，程序只能在Linux服务器上运行，为了解决一些bug，于是就有了这篇文章 首先使用gcc编译的时候，需要配置DEBUG=true(Makefile.inc) debugb 先找到需要插入的进程id ps -ef | grep &apos;名字&apos; 进入jdb gdb</description><pubDate>Mon, 21 Nov 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;因为某些原因，一直使用C++做嵌入式开发的咩咩被迫使用C++开发了一些PC端程序的功能，因为历史遗留原因，程序只能在Linux服务器上运行，为了解决一些bug，于是就有了这篇文章&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;首先使用gcc编译的时候，需要配置&lt;code&gt;DEBUG=true&lt;/code&gt;(Makefile.inc)&lt;br /&gt;
debugb&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# 先找到需要插入的进程id
ps -ef | grep &apos;名字&apos;
# 进入jdb
gdb attach 上面左侧的数字id
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这时命令行显示&lt;code&gt;(gdb)&lt;/code&gt;就是进入成功了，此时程序会暂停&lt;br /&gt;
速通：&lt;br /&gt;
&lt;img src=&quot;/assets/uploads/2023/12/hkec47gxva.png&quot; alt=&quot;与vscode的debug按钮对比&quot; /&gt;&lt;br /&gt;
详细教学：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# 可以显示帮助
help breakpoints
# 给叫ClassName中的funcName方法打断点
b ClassName::funcName
# 给filename.cpp的第404行打断点
b filename.cpp:404
# 继续执行
c
# 显示附近的行的代码
l
# 跳到下一行，每运行一行会显示当前行运行的行号和代码
n
# 输出user_id变量的值
p user_id
# 用hex显示user_id变量的值
p/x user_id
# 显示login_head_flag变量的类型
ptype login_head_flag
# 用hex显示login_head_flag这个char数组指针指向的实际的值并显示前2位
p/x (*(char*)login_head_flag)@2
# 显示login_head_flag中指针user_id的值
p login_head_flag-&amp;gt;user_id
# 退出 然后y确认退出
quit
# gdb有多种布局，你可以这样切换下一个和上一个
lay next
lay prev
# 其中支持的lay有cmd（默认的）src（源码）asm（汇编）等，可以这样切换
lay src
# 可以这样把光标焦点移到指定窗口
focus cmd
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>Centos7配置NFS服务</title><link>https://zyyme.com/centos7-nfs.html</link><guid isPermaLink="true">https://zyyme.com/centos7-nfs.html</guid><description>因为smb有安全漏洞，所以使用nfs进行文件共享 本次安装分为服务端和客户端 服务端 首先需要安装两个包，通常情况下，这两个包是系统自带的，可以查一下看看有没有 rpm -aq | grep nfs rpm -aq | grep rpcbind 没有就装 yum install nfs-utils rpcbind 修改/etc/sysconfig/nfs将下</description><pubDate>Tue, 15 Nov 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;因为smb有安全漏洞，所以使用nfs进行文件共享&lt;br /&gt;
本次安装分为服务端和客户端&lt;/p&gt;
&lt;h2&gt;服务端&lt;/h2&gt;
&lt;p&gt;首先需要安装两个包，通常情况下，这两个包是系统自带的，可以查一下看看有没有&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;rpm -aq | grep nfs
rpm -aq | grep rpcbind 
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;没有就装&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;yum install nfs-utils rpcbind
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;修改&lt;code&gt;/etc/sysconfig/nfs&lt;/code&gt;将下面的内容加到最后面固定端口&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;RQUOTAD_PORT=1001
LOCKD_TCPPORT=32803
LOCKD_UDPPORT=32769
MOUNTD_PORT=892
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;打开指定的防火墙端口，不限制来源ip&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;firewall-cmd --zone=public --permanent \
--add-port=111/tcp --add-port=111/udp \
--add-port=2049/tcp --add-port=2049/udp \
--add-port=1001/tcp --add-port=1001/udp \
--add-port=892/tcp --add-port=892/udp \
--add-port=32803/tcp --add-port=32803/udp \
--add-port=32769/tcp --add-port=32769/udp

systemctl restart firewalld
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;但是，因为目前只需要被一个ip访问，所以限制一下来源ip，那就改成这样&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;firewall-cmd --zone=public --permanent --add-rich-rule=&apos;rule family=&quot;ipv4&quot; source address=&quot;10.108.5.68/32&quot; port port=&quot;111&quot; protocol=&quot;tcp&quot; accept&apos;
firewall-cmd --zone=public --permanent --add-rich-rule=&apos;rule family=&quot;ipv4&quot; source address=&quot;10.108.5.68/32&quot; port port=&quot;111&quot; protocol=&quot;udp&quot; accept&apos;
firewall-cmd --zone=public --permanent --add-rich-rule=&apos;rule family=&quot;ipv4&quot; source address=&quot;10.108.5.68/32&quot; port port=&quot;2049&quot; protocol=&quot;tcp&quot; accept&apos;
firewall-cmd --zone=public --permanent --add-rich-rule=&apos;rule family=&quot;ipv4&quot; source address=&quot;10.108.5.68/32&quot; port port=&quot;2049&quot; protocol=&quot;udp&quot; accept&apos;
firewall-cmd --zone=public --permanent --add-rich-rule=&apos;rule family=&quot;ipv4&quot; source address=&quot;10.108.5.68/32&quot; port port=&quot;1001&quot; protocol=&quot;tcp&quot; accept&apos;
firewall-cmd --zone=public --permanent --add-rich-rule=&apos;rule family=&quot;ipv4&quot; source address=&quot;10.108.5.68/32&quot; port port=&quot;1001&quot; protocol=&quot;udp&quot; accept&apos;
firewall-cmd --zone=public --permanent --add-rich-rule=&apos;rule family=&quot;ipv4&quot; source address=&quot;10.108.5.68/32&quot; port port=&quot;892&quot; protocol=&quot;tcp&quot; accept&apos;
firewall-cmd --zone=public --permanent --add-rich-rule=&apos;rule family=&quot;ipv4&quot; source address=&quot;10.108.5.68/32&quot; port port=&quot;892&quot; protocol=&quot;udp&quot; accept&apos;
firewall-cmd --zone=public --permanent --add-rich-rule=&apos;rule family=&quot;ipv4&quot; source address=&quot;10.108.5.68/32&quot; port port=&quot;32803&quot; protocol=&quot;tcp&quot; accept&apos;
firewall-cmd --zone=public --permanent --add-rich-rule=&apos;rule family=&quot;ipv4&quot; source address=&quot;10.108.5.68/32&quot; port port=&quot;32803&quot; protocol=&quot;udp&quot; accept&apos;
firewall-cmd --zone=public --permanent --add-rich-rule=&apos;rule family=&quot;ipv4&quot; source address=&quot;10.108.5.68/32&quot; port port=&quot;32769&quot; protocol=&quot;tcp&quot; accept&apos;
firewall-cmd --zone=public --permanent --add-rich-rule=&apos;rule family=&quot;ipv4&quot; source address=&quot;10.108.5.68/32&quot; port port=&quot;32769&quot; protocol=&quot;udp&quot; accept&apos;

systemctl restart firewalld
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;删除规则只需要将&lt;code&gt;--add&lt;/code&gt;替换成&lt;code&gt;--remove&lt;/code&gt;再执行一次就可以了&lt;/p&gt;
&lt;h3&gt;共享文件夹配置&lt;/h3&gt;
&lt;p&gt;编辑&lt;code&gt;/etc/exports&lt;/code&gt;写入需要共享的文件夹，一行一个（没有这个文件就创建）&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;/home/Servers/attach/attach 10.108.5.68(rw,sync,no_root_squash)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;第一个是共享文件夹的绝对路径&lt;br /&gt;
第二个是允许访问的ip，如果允许所有ip可以用&lt;code&gt;*&lt;/code&gt;代替，括号里的是对应的权限参数&lt;br /&gt;
如果有多个ip需要配置，在最后用空格隔开写进去&lt;br /&gt;
其中参数有这些&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;多个参数用,分隔&lt;/th&gt;
&lt;th&gt;对应的含义&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;rw&lt;/td&gt;
&lt;td&gt;读写&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ro&lt;/td&gt;
&lt;td&gt;只读&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;sync&lt;/td&gt;
&lt;td&gt;实时写入硬盘，效率低，实时性高&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;async&lt;/td&gt;
&lt;td&gt;先写入缓存，再写入硬盘，效率高，断电数据可能丢失&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;root_squash&lt;/td&gt;
&lt;td&gt;客户端root映射为服务器的匿名用户&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;no_root_squash&lt;/td&gt;
&lt;td&gt;客户端root映射为服务端root&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;配置好了，重启服务&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;exportfs -rv
service rpcbind restart
service nfs restart
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;查看目前的共享情况和rpc监听&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;showmount -e
rpcinfo -p localhost
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;客户端&lt;/h2&gt;
&lt;p&gt;首先跟服务端一样，需要安装两个包，通常情况下，这两个包是系统自带的，可以查一下看看有没有&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;rpm -aq | grep nfs
rpm -aq | grep rpcbind 
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;没有就装&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;yum install nfs-utils rpcbind
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;启动服务&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;service rpcbind start
service nfs start
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;显示服务端的共享信息，如果显示不出来那请检查防火墙&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;showmount -e 10.108.5.67
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;进行挂载&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;mount -t nfs -o nolock,nfsvers=3,vers=3 10.108.5.67:/home/Servers/attach/attach /home/Servers/attach/attach
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;编辑&lt;code&gt;/etc/fstab&lt;/code&gt;加入这行以便开机自动挂载（nofail在失败时不影响开机，x-systemd.device-timeout=是自动挂载超时）&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;10.108.5.67:/home/Servers/attach/attach /home/Servers/attach/attach nfs defaults,nofail,x-systemd.device-timeout=1000ms 0 0
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>Armbian安装配置</title><link>https://zyyme.com/armbian.html</link><guid isPermaLink="true">https://zyyme.com/armbian.html</guid><description>本文章记录armbian装机配置，以root用户登录进行操作，处理一些奇奇怪怪的问题和bug armbian-insatll no 前一定要 ls -l / 检查所有者是不是1023 如果是，重做启动盘再装 实测通过 find / -gid 1023 -uid 1023 -exec chown root:root {} \; 的方式找出来改掉还会有其他的问题</description><pubDate>Mon, 17 Oct 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;本文章记录armbian装机配置，以root用户登录进行操作，处理一些奇奇怪怪的问题和bug&lt;br /&gt;
&lt;code&gt;armbian-insatll no&lt;/code&gt; 前一定要 &lt;code&gt;ls -l /&lt;/code&gt; 检查所有者是不是1023&lt;br /&gt;
如果是，重做启动盘再装&lt;br /&gt;
实测通过 &lt;code&gt;find / -gid 1023 -uid 1023 -exec chown root:root {} \;&lt;/code&gt; 的方式找出来改掉还会有其他的问题，不要把启动盘往Android上乱插&lt;/p&gt;
&lt;h2&gt;定义变量&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;export user=你的非root用户名
export sshport=ssh端口
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;这部分无需交互直接执行&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;# 改zsh主题
sed -i s/mrtazz/ys/g .zshrc
sed -i s/mrtazz/ys/g /home/$user/.zshrc
# 关swap
sed -i s/ENABLED=true/ENABLED=false/g /etc/default/armbian-ramlog
sed -i s/# ENABLED=false/ENABLED=false/g /etc/default/armbian-zram-config
# 软件源
sed -i s#ports.ubuntu.com#mirrors.ustc.edu.cn/ubuntu-ports#g /etc/apt/sources.list
apt update
apt install samba python3-pip -y
curl -s https://install.zerotier.com | sudo bash
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
usermod -aG docker $user
chmod 755 /var/run/docker.sock
#docker管理器
docker run -d -p 9000:9000 \
    --restart=always \
    -v /var/run/docker.sock:/var/run/docker.sock \
    --name portainer \
    portainer/portainer    
# ssh关掉root登录改端口
sed -i &quot;s/#Port 22/Port $sshport/g&quot; /etc/ssh/sshd_config
sed -i &apos;s/PermitRootLogin yes/PermitRootLogin no/g&apos; /etc/ssh/sshd_config
cat /etc/ssh/sshd_config | grep Port
/etc/init.d/ssh restart
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;以下需要交互&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;#smb设置，按提示输密码
smbpasswd -a $user
nano /etc/samba/smb.conf
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;按&lt;code&gt;ctrl+w&lt;/code&gt;找&lt;code&gt;Domains&lt;/code&gt;在他上面加上&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;   server min protocol = NT1
   server max protocol = SMB3
   null passwords = no
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;在最后加上&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;[data]
   comment = 750G
   path = /data
   browseable = yes
#   create mask = 0755
#   directory mask = 0755
   valid users = 非root用户名
   writeable = yes
   guest ok = no
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;ctrl+x y&lt;/code&gt;保存&lt;/p&gt;
&lt;p&gt;非root用户&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;pip3 install pynat
echo &apos;export PATH=$PATH:~/.local/bin&apos; &amp;gt; ~/.zshrc
echo &apos;export PATH=$PATH:~/.local/bin&apos; &amp;gt; ~/.bashrc
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;加入zerotier组网&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;zerotier-cli join 网络id
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;最后执行&lt;code&gt;armbian-config&lt;/code&gt;以下均为首字母&lt;br /&gt;
改主频 Sys -&amp;gt; CPU&lt;br /&gt;
改主机名 Per -&amp;gt; Hos&lt;br /&gt;
改永久固定ip Net -&amp;gt; Adv&lt;br /&gt;
用#注释01放开02改里面的，同一个启动盘装出来mac一样是因为01定义了，要注意&lt;br /&gt;
然后没有变，不要疑惑，重启就变了，不想重启的可以选IP再改一次临时的&lt;/p&gt;
</content:encoded></item><item><title>Openwrt做虚拟化母机跑QEMU虚拟机</title><link>https://zyyme.com/openwrt-qemu.html</link><guid isPermaLink="true">https://zyyme.com/openwrt-qemu.html</guid><description>咩咩有一个J4125的软路由，曾经使用Pve直通网卡运行Openwrt做路由器，但发现即使在较低的网络负载下cpu的使用率还是比较高，排查下来是网卡直通带来的性能损耗，因此就换成了单Openwrt，其余软件均跑在Docker中，并在编译的Openwrt固件中编译了声卡显卡驱动，这样在Docker中依然能使用硬件加速的视频流转码（比如用路由器接采集卡推流直播）</description><pubDate>Thu, 29 Sep 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;咩咩有一个J4125的软路由，曾经使用Pve直通网卡运行Openwrt做路由器，但发现即使在较低的网络负载下cpu的使用率还是比较高，排查下来是网卡直通带来的性能损耗，因此就换成了单Openwrt，其余软件均跑在Docker中，并在编译的Openwrt固件中编译了声卡显卡驱动，这样在Docker中依然能使用硬件加速的视频流转码（比如用路由器接采集卡推流直播），以上功能实现都比较容易，下面说说用Openwrt做虚拟化母机跑QEMU虚拟机，代替Pve跑Windows的事。&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h2&gt;安装QEMU&lt;/h2&gt;
&lt;p&gt;首先，固件在编译时必须带&lt;code&gt;kmod-tun&lt;/code&gt;,或者有能力安装，&lt;code&gt;kmod-&lt;/code&gt;开头的包是内核模块，是不通用的，强制忽略也装不上的，建议在编译时将用不到的&lt;code&gt;kmod-&lt;/code&gt;开头的包全选成&lt;code&gt;&amp;lt;M&amp;gt;&lt;/code&gt;编译了保存起来以备不时之需，&lt;code&gt;uname -a&lt;/code&gt;可以看到当前的内核版本，咩咩的是&lt;code&gt;5.10.89&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;下载这个文件，里面有需要的包，上传到路由器任意目录(比如&lt;code&gt;/tmp&lt;/code&gt;)&lt;br /&gt;
&lt;a href=&quot;/assets/uploads/2022/09/h6n89crhk5.tgz&quot;&gt;openwrt-qemu_x86_64-ipk.tgz&lt;/a&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cd /tmp
tar -xzvf openwrt-qemu_x86_64-ipk.tgz
cd openwrt-qemu_x86_64-ipk
# 首先确保 kmod-tun 已安装，没装可以试试 opkg install kmod-tun
opkg install ./lib*.ipk ./glib2_2.58.3-5_x86_64.ipk ./pixman_0.38.4-1_x86_64.ipk ./uclibcxx_0.2.5-3_x86_64.ipk
opkg install ./qemu-firmware*.ipk ./qemu-keymaps_4.2.0-1_x86_64.ipk
opkg install ./qemu-keymaps_4.2.0-1_x86_64.ipk
opkg install ./qemu-img_4.2.0-1_x86_64.ipk ./qemu-ga_4.2.0-1_x86_64.ipk ./qemu-bridge-helper_4.2.0-1_x86_64.ipk ./virtio-console-helper_4.2.0-1_x86_64.ipk
# 最后这个能装上就装装不上就算，目前这样也用不到，需要 kmod-nbd 
opkg install ./qemu-nbd_4.2.0-1_x86_64.ipk
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这样就装完了&lt;/p&gt;
&lt;h2&gt;启动虚拟机&lt;/h2&gt;
&lt;p&gt;首先如果你需要后台运行，建议装个&lt;code&gt;opkg install screen&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;首先可以先启动一个3核心，4G，并且挂了一个iso的winpe来试试，调好了再建虚拟硬盘装系统&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;qemu-system-x86_64 -enable-kvm -nodefaults -monitor stdio \
  -machine q35,accel=kvm -vga virtio \
  -cpu host -smp 4,cores=4,threads=1 -m 4G \
  -cdrom /opt/Sparkle-PE.iso \
  -device e1000e,mac=EE:FF:00:01:02:03,netdev=br0 -netdev bridge,br=br-lan,id=br0 \
  -usb -device usb-kbd -device usb-tablet \
  -vnc :0,password -k en-us
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;运行了之后，就可以使用vnc连接了，&lt;code&gt;:0&lt;/code&gt;就是5900的意思（最后一位），比如macOS可以访问&lt;code&gt;vnc://192.168.1.1&lt;/code&gt;连接桌面，Windows则需要自行下载VNC客户端&lt;br /&gt;
需要在显示&lt;code&gt;(qemu)&lt;/code&gt;的情况下输入&lt;code&gt;change vnc password&lt;/code&gt;回车来设置vnc密码，输完密码回车就设置好了&lt;/p&gt;
&lt;p&gt;解释一下配置内容：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;虚拟cpu总数 &lt;code&gt;-smp 4&lt;/code&gt;,核心 &lt;code&gt;cores=4&lt;/code&gt;,核心的线程 &lt;code&gt;threads=1&lt;/code&gt;，他们的关系是cores * threads = smp，如果你是双核四线程的超线程cpu，那建议配置为&lt;code&gt;-cpu host -smp 4,cores=2,threads=2&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;内存大小4G &lt;code&gt;-m 4G&lt;/code&gt; 分多少启动的时候就占多少&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;网卡支持&lt;code&gt;e1000e &lt;/code&gt;,&lt;code&gt;vmxnet3&lt;/code&gt;,&lt;code&gt;virtio-net-pci&lt;/code&gt;，性能最好的是virtio那个(win不带驱动)，兼容性最好是e1000e，接到&lt;code&gt;br-lan&lt;/code&gt;上，也就是Op的lan口，可以设置多个虚拟网卡，注意id要唯一&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;vnc用的usb鼠标键盘&lt;code&gt;usb-tablet&lt;/code&gt;和&lt;code&gt;usb-kbd&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;vnc就算设置&lt;code&gt;password=off&lt;/code&gt;也是没有效果的依然需要密码，&lt;code&gt;:0&lt;/code&gt;就是5900，&lt;code&gt;:1&lt;/code&gt;就是5901，以此类推，或是可以配置监听指定ip，比如&lt;code&gt;-vnc 192.168.1.1:5900,password=yes -k en-us&lt;/code&gt;，另外还支持网页版的noVNC，只要将配置改为&lt;code&gt;-vnc :0,websocket -k en-us&lt;/code&gt;就可以用noVNC v1.1.0来进行连接了&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;不可以直通（重定向）物理usb设备，先插上，lsusb查看id，然后添加配置
比如lsusb得到的是这样的&lt;code&gt;Bus 001 Device 009: ID 058f:6387 Sparkle 32G Sandisk&lt;/code&gt;&lt;br /&gt;
对应&lt;code&gt;lsusb -t&lt;/code&gt;的&lt;code&gt;Port 5: Dev 9, If 0, Class=, Driver=usb-storage, 480M&lt;/code&gt;&lt;br /&gt;
那就配置 &lt;code&gt;-device usb-host,vendorid=0x058f,productid=0x6387&lt;/code&gt;&lt;br /&gt;
或者&lt;code&gt;-device usb-host,hostbus=1,hostport=5&lt;/code&gt; 上面的针对设备，下面的针对接口&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;添加&lt;code&gt;-drive file=镜像文件,cache=none,format=raw,if=virtio&lt;/code&gt; 指定虚拟硬盘镜像，&lt;code&gt;if=virtio&lt;/code&gt;需要驱动支持，但可以大幅提升磁盘性能，format根据镜像来定义，可以是raw也可以是qcow2，我btrfs开压缩，用的raw，file也可以直接指向物理硬盘设备&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;如果一定要sata硬盘，那就这样配置（那个反斜杠&lt;code&gt;\&lt;/code&gt;是告诉shell命令还没结束，可以把一行很长的命令拆成几行）&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;  -device ich9-intel-hda -device hda-duplex \
  -device ich9-ahci,id=sata \
  -drive id=dri1,if=none,format=raw,file=镜像文件 \
  -device ide-hd,bus=sata.0,drive=dri1
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;其他更多参数可以看 &lt;a href=&quot;https://wiki.archlinux.org/title/QEMU_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)&quot;&gt;Arch的Wiki&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;最后启动Win10，我也不知道为什么打了驱动virtio的硬盘启动还是蓝屏，可能安装时应该勾选win to go&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;qemu-system-x86_64 -enable-kvm -nodefaults -monitor stdio \
  -machine q35,accel=kvm -vga virtio \
  -cpu host -smp 3,sockets=0,cores=3,threads=1 -m 4G \
  -drive file=/opt/win10.img,cache=none,format=raw \          
  -device virtio-net-pci,mac=EE:FF:00:01:02:03,netdev=br0 -netdev bridge,br=br-lan,id=br0 \
  -usb -device usb-kbd -device usb-tablet \
  -vnc :0,password -k en-us
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;QEMU控制台命令&lt;/h2&gt;
&lt;p&gt;设置vnc密码 &lt;code&gt;change vnc password&lt;/code&gt;&lt;br /&gt;
软关机 &lt;code&gt;system_powerdown&lt;/code&gt;&lt;br /&gt;
复位键 &lt;code&gt;system_reset&lt;/code&gt;&lt;br /&gt;
USB设备信息 &lt;code&gt;info usb&lt;/code&gt;&lt;br /&gt;
连接USB &lt;code&gt;usb_add host:058f:6387&lt;/code&gt;&lt;/p&gt;
</content:encoded></item><item><title>macOS的睡眠和休眠</title><link>https://zyyme.com/macos-sleepmode.html</link><guid isPermaLink="true">https://zyyme.com/macos-sleepmode.html</guid><description>在通常情况下，Windows上有两种暂停的方式，一种是睡眠，一种是休眠，睡眠时会给内存供电，唤醒很快，休眠时是将内存的内容写到硬盘中再关机，下次开机时放回内存中还原之前的工作状态，那么在macOS下怎么实现呢？ 在mac中，左上角菜单中只有一个睡眠的选项，那么就只能通过修改睡眠方式的方法来实现休眠 切换到睡眠模式（给内存供电） sudo pmset -a h</description><pubDate>Thu, 18 Aug 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;在通常情况下，Windows上有两种暂停的方式，一种是睡眠，一种是休眠，睡眠时会给内存供电，唤醒很快，休眠时是将内存的内容写到硬盘中再关机，下次开机时放回内存中还原之前的工作状态，那么在macOS下怎么实现呢？&lt;br /&gt;
在mac中，左上角菜单中只有一个睡眠的选项，那么就只能通过修改睡眠方式的方法来实现休眠&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# 切换到睡眠模式（给内存供电）
sudo pmset -a hibernatemode 0
# 切换到混合睡眠模式（写到硬盘中并且给内存供电，默认值）
sudo pmset -a hibernatemode 3
# 切换到休眠模式（写到硬盘并关机）
sudo pmset -a hibernatemode 25
# 单独为电池供电时设置为混合睡眠
sudo pmset -b hibernatemode 3
# 输出当前配置
sudo pmset -g
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;sudo shutdown -s +0&lt;/code&gt;命令能和点击菜单上的睡眠达到一样的效果，那么就有了&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# 在插着电的时候睡眠（此时电脑可以被ssh，连接vnc，访问smb文件共享)
sudo pmset -a hibernatemode 0 &amp;amp;&amp;amp; sudo shutdown -s +0
# 休眠（关机）
sudo pmset -a hibernatemode 25 &amp;amp;&amp;amp; sudo shutdown -s +0 &amp;amp;&amp;amp; sleep 30 &amp;amp;&amp;amp; sudo pmset -a hibernatemode 3
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;因为sudu需要输入电脑密码，也可以在命令最前面加上&lt;code&gt;echo 密码 | &lt;/code&gt;来自动输入密码，这样就可以做在ios的快捷指令中或是自动操作中&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;echo 密码 | sudo pmset -a hibernatemode 25 &amp;amp;&amp;amp; sudo shutdown -s +0 &amp;amp;&amp;amp; sleep 30 &amp;amp;&amp;amp; sudo pmset -a hibernatemode 3
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>LEDE(Openwrt) TOTP两步验证</title><link>https://zyyme.com/lede-totp.html</link><guid isPermaLink="true">https://zyyme.com/lede-totp.html</guid><description>这篇文章将会给openwrt的ssh加上totp的验证，方便开到公网上进行ssh并且降低被扫的安全风险 op自带的ssh服务是Dropbear，他不提供pam验证的功能，所以需要用到openssh，这样一来也可以实现对外的ssh需要两步验证，局域网的不需要 首先需要一个linux机器用于生成key配置文件 sudo apt-get install libpa</description><pubDate>Mon, 15 Aug 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;这篇文章将会给openwrt的ssh加上totp的验证，方便开到公网上进行ssh并且降低被扫的安全风险&lt;br /&gt;
op自带的ssh服务是Dropbear，他不提供pam验证的功能，所以需要用到openssh，这样一来也可以实现对外的ssh需要两步验证，局域网的不需要&lt;/p&gt;
&lt;p&gt;首先需要一个linux机器用于生成key配置文件&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo apt-get install libpam-google-authenticator
google-authenticator -t -d -r 1 -R 30 -W -Q UTF8 -l root@op -f -s op
cat op
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;把&lt;code&gt;cat op&lt;/code&gt;输出的内容复制下来备用&lt;/p&gt;
&lt;p&gt;这里用的是lean的源码编译的lede，使用openwrt官方的系统大概没那么多事&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;vi ~/.google_authenticator
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;按i后将刚刚复制的贴进去，按一下esc再输入:wq回车保存&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;opkg update
opkg install google-authenticator-libpam openssh-server-pam
mkdir /lib/security
vi /etc/ssh/sshd_config
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;改一下配置，首先开头的#代表这行是注释，配置的时候要去掉&lt;br /&gt;
&lt;code&gt;Port&lt;/code&gt;是端口，可以改成10000以上的高位端口，然后再去 网络 防火墙 通信规则 打开路由器端口 里开放&lt;br /&gt;
&lt;code&gt;MaxAuthTries&lt;/code&gt;是最多尝试的次数，建议改成2&lt;br /&gt;
在最后加上，或者修改现有的&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;UsePAM yes
ChallengeResponseAuthentication yes
KbdInteractiveAuthentication yes
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;其中KbdInteractiveAuthentication是较新的ssh版本需要额外配置的配置项，比如ubuntu24&lt;/p&gt;
&lt;p&gt;如果你使用root用户登录，还需要保证&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;PermitRootLogin yes
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;然后配置一下验证pam&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;vi /etc/pam.d/sshd
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;将这行加在最后面，这样会先验证密码再验证totp，加在最前面就会先验证totp再验证密码&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;auth requisite pam_google_authenticator.so nullok
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;配置好了，重启sshd&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;/etc/init.d/sshd restart
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;此时不要关闭现有的ssh窗口，开一个新的验证一下，如果无法使用，你可以把配置改回去恢复原状&lt;/p&gt;
&lt;p&gt;如果你参考这篇文章给ubuntu24进行配置，用这条命令重启&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;systemctl restart sshd.service
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;理想很美好，现实很残酷，你会发现连接这个新ssh服务验证都一切正常，但是却无法打开shell直接就断开连接了&lt;br /&gt;
去 状态 系统日志 中看到每次成功连接这个新ssh服务后日志最后有这行错误&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;fatal: privsep_preauth: preauth child terminated by signal 31
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这是openssl版本不匹配导致的，这只需要更新就好了，请确保已经删除软件源中非lede官方的源（镜像可以）避免有其他版本的openssl混在其中&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;opkg update
opkg install libopenssl-conf libopenssl1.1 openssl-util
/etc/init.d/sshd restart
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这就正常了&lt;/p&gt;
</content:encoded></item><item><title>小爱米家联动Home Assistant</title><link>https://zyyme.com/mihome-hass.html</link><guid isPermaLink="true">https://zyyme.com/mihome-hass.html</guid><description>虽然说，在hass中安装一个叫Xiaomi Miot Auto的插件，米家的大部分设备都可以直接在hass中控制了，但是如何使用小爱同学来控制接入到hass中的非米家设备呢？经过咩咩2小时的研究，找到了一个非常简单的方法，不需要破解小爱音响，甚至手机或是手环中的小爱也可以达到控制的效果 首先需要在hass中安装Xiaomi Miot Auto这个插件并登录好</description><pubDate>Sat, 06 Aug 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;虽然说，在hass中安装一个叫&lt;code&gt;Xiaomi Miot Auto&lt;/code&gt;的插件，米家的大部分设备都可以直接在hass中控制了，但是如何使用小爱同学来控制接入到hass中的非米家设备呢？经过咩咩2小时的研究，找到了一个非常简单的方法，不需要破解小爱音响，甚至手机或是手环中的小爱也可以达到控制的效果&lt;/p&gt;
&lt;p&gt;首先需要在hass中安装&lt;code&gt;Xiaomi Miot Auto&lt;/code&gt;这个插件并登录好，有了这个插件，就可以拿到米家中的通知（比如说什么智能执行成功了）&lt;/p&gt;
&lt;p&gt;这时候在米家中添加一个无意义的自动化智能（随便什么操作都行，比如气温超过100度就发送通知给手机）&lt;/p&gt;
&lt;p&gt;再新建一个手动触发的智能，名称是你想执行的操作（记下来待会有用），执行的操作是关闭刚刚新建的那个无意义的自动化智能，并且点击 用小爱同学控制 设置好触发他时对小爱说的话，或是ios中的Siri也可以一并设置好&lt;/p&gt;
&lt;p&gt;在hass中打开侧边栏中的配置，场景自动化，新建一个新的自动化，名字随便起，添加触发条件，条件类型选择自定义模板，在数值模板填写&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{{ &quot;米家创建的智能名称&quot; in state_attr(&quot;sensor.mi_小米id数字_message&quot;, &quot;title&quot;) }}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;至于这个&lt;code&gt;小米id数字&lt;/code&gt;是多少，可以去hass的实体列表里找找这个实体，在动作里设置好需要的操作，如果需要像调节空调温度这种复杂的操作，可以试试hass的场景功能&lt;/p&gt;
&lt;p&gt;这一波操作后，就可以使用小爱同学来控制hass中的设备了&lt;/p&gt;
</content:encoded></item><item><title>Samba配置</title><link>https://zyyme.com/smb-conf.html</link><guid isPermaLink="true">https://zyyme.com/smb-conf.html</guid><description>安装 首先安装samba，Ubuntu的话就是 sudo apt install samba 总之先装好 先要确定一下samba的版本，因为自从4.11开始，就默认关闭了smb1的支持了，因为smb1存在安全漏洞，但有些老软件又只支持smb1，因为它真的非常老，所以兼容性很强，记住版本号，后面会用到 samba -V 编辑配置文件 sudo nano /et</description><pubDate>Mon, 25 Jul 2022 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;安装&lt;/h2&gt;
&lt;p&gt;首先安装samba，Ubuntu的话就是&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo apt install samba
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;总之先装好&lt;/p&gt;
&lt;p&gt;先要确定一下samba的版本，因为自从4.11开始，就默认关闭了smb1的支持了，因为smb1存在安全漏洞，但有些老软件又只支持smb1，因为它真的非常老，所以兼容性很强，记住版本号，后面会用到&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;samba -V
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;编辑配置文件&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;sudo nano /etc/samba/smb.conf
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;其中&lt;code&gt;#&lt;/code&gt;和&lt;code&gt;;&lt;/code&gt;开头的行都是注释掉的，修改的时候需要注意&lt;/p&gt;
&lt;h3&gt;smb版本支持的配置&lt;/h3&gt;
&lt;p&gt;目前市面上几乎全部的系统和软件都能兼容smb1（除了默认禁用的），如果发现有其其怪怪的问题，可以把服务端的smb1打开，虽然说着不太安全&lt;br /&gt;
大部分的系统和软件可以兼容到smb2，但有些软件（比如es文件管理器），在有smb2的时候还是会优先使用smb1导致速度很慢&lt;br /&gt;
如果你的samba版本是4.11之前的，他会默认只开启smb1，如果是之后的，默认只开启smb2&lt;br /&gt;
找到配置文件中的&lt;code&gt;[global]&lt;/code&gt;,在他下面写下这些配置&lt;br /&gt;
正常情况下，兼顾兼容性和速度，开启smb1和smb2&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;server min protocol = NT1
server max protocol = SMB2
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果希望更安全，可以只开启smb2&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;server min protocol = SMB2
server max protocol = SMB2
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果你希望他在新系统上速度更快点，那么可以开启到smb3，但注意一个问题，旧版本无法识别这个smb3的配置，他会解析成仅smb1&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;server min protocol = NT1
server max protocol = SMB3
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;访问验证配置&lt;/h3&gt;
&lt;p&gt;举个🌰，在win10下，默认会限制不允许访问那种无需输入用户名密码的匿名共享，那么我们可以换一种思维，将验证失败的都当成匿名访问，那么只要随便输入一下都能进行匿名访问了，不需要修改组策略&lt;br /&gt;
依然是找到配置文件中的&lt;code&gt;[global]&lt;/code&gt;,在他下面写下这些配置&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;map to guest = bad user
null passwords = no
invalid users = root
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;最后这行指定了在匿名模式下使用&lt;code&gt;root&lt;/code&gt;的权限去访问文件，如果不需要匿名访问，那就不要配置这行，即可正常在win10访问&lt;/p&gt;
&lt;h3&gt;绑定监听网卡&lt;/h3&gt;
&lt;p&gt;如果你有多个网卡，内网外网什么的，可以设置让它只监听一个&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;bind interfaces only = yes
interfaces = eth0
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;最后这行指定了监听&lt;code&gt;eth0&lt;/code&gt;这个网卡&lt;/p&gt;
&lt;h3&gt;共享目录配置&lt;/h3&gt;
&lt;p&gt;加到配置最后面，一个共享目录加一个&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;[data]
   comment = 750G
   path = /data
   browseable = yes
   create mask = 0755
   directory mask = 0755
   valid users = root
   writeable = yes
   guest ok = no
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;[]&lt;/code&gt;里面的内容是共享的名称&lt;br /&gt;
&lt;code&gt;comment&lt;/code&gt;鼠标放上去显示的描述信息&lt;br /&gt;
&lt;code&gt;path&lt;/code&gt;共享目录硬盘路径&lt;br /&gt;
&lt;code&gt;create mask&lt;/code&gt;创建新文件的权限，去掉将保持原来的权限&lt;br /&gt;
&lt;code&gt;directory mask&lt;/code&gt;创建新文件夹的权限，去掉将保持原来的权限&lt;br /&gt;
&lt;code&gt;valid users&lt;/code&gt;允许什么用户访问这个目录&lt;br /&gt;
&lt;code&gt;writeable&lt;/code&gt;是否允许写入&lt;br /&gt;
&lt;code&gt;guest ok&lt;/code&gt;匿名的时候是否允许访问&lt;/p&gt;
&lt;h2&gt;访问用户名密码设置&lt;/h2&gt;
&lt;p&gt;首先用户必须是系统里有的，因为读写文件的时候就是按着系统里这个用户的权限来读写的，密码倒是可以和系统里的密码不一样&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo smbpasswd -a root
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;创建一个叫root的smb共享用户，根据提示输入密码即可完成设置&lt;/p&gt;
&lt;p&gt;全部配置好了就重启服务吧&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo /etc/init.d/smbd restart
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;挂载&lt;/h2&gt;
&lt;p&gt;smb共享可以作为cifs挂载在linux系统下&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# 其中 centos可能需要安装cifs支持 openwrt需要编译时加入
yum install cifs-utils.x86_64

# 挂载  用户名admin密码1234 挂载1.1的file目录到本地的/cifs
mount -t cifs -o username=admin,password=1234 //192.168.1.1/file /cifs

&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>最简单的方式在linux中编译安装Python3</title><link>https://zyyme.com/easy-to-make-python3-on-linux.html</link><guid isPermaLink="true">https://zyyme.com/easy-to-make-python3-on-linux.html</guid><description>众所周知，目前还有很多的服务器用着CentOS7，虽然他已经凉了，这些服务器通常都是不联网的，那么就需要编译安装，此时补齐依赖包在没有能联网的跳板机的socks5代理给yum使用的情况下，将是一件十分痛苦的事情。 特别是OpenSSL，依赖巨多，那么这时候应该怎么办呢，那就用LibreSSL吧，恰好Python3是支持的，于是就有了下面愉快的操作 先去 [P</description><pubDate>Mon, 04 Jul 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;众所周知，目前还有很多的服务器用着CentOS7，虽然他已经凉了，这些服务器通常都是不联网的，那么就需要编译安装，此时补齐依赖包在没有能联网的跳板机的socks5代理给yum使用的情况下，将是一件十分痛苦的事情。&lt;/p&gt;
&lt;p&gt;特别是OpenSSL，依赖巨多，那么这时候应该怎么办呢，那就用LibreSSL吧，恰好Python3是支持的，于是就有了下面愉快的操作&lt;/p&gt;
&lt;p&gt;先去 &lt;a href=&quot;https://www.python.org/downloads/&quot;&gt;Python官网&lt;/a&gt; 和 &lt;a href=&quot;https://mirrors.aliyun.com/pub/OpenBSD/LibreSSL/&quot;&gt;LibreSSL镜像&lt;/a&gt; 下载对应的tar，并上传到服务器，并ssh上去切换成root&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;export TMOUT=0

# libressl 安装  先找找看系统里是否已经装过
tar -xvf libressl-3.5.3.tar.gz
cd libressl-3.5.3
./configure
make
make install

# py3安装
tar -xvf Python-3.8.10.tgz
cd Python-3.8.10/
# 因为有前人装了libressl所以这里直接用了 否则不需要带 --with-openssl这个参数
./configure --with-openssl=/usr/local/libressl-2.9.2
make
make install

# 由于centos的path里没有/usr/local/bin，得把二进制文件移动到正确的位置
mv /usr/local/bin/* /usr/bin/
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>PostgreSQL</title><link>https://zyyme.com/postgresql.html</link><guid isPermaLink="true">https://zyyme.com/postgresql.html</guid><description>由于某些原因，将Oracle换成了PostgreSQL，sql也要修改为pg的语法，虽然pg有很多函数名和oracle的一样，但是用起来就是两个不同的东西，这将导致sql查出来的内容乱七八糟或是报错。 时区 pg里的timestamp是带时区的，众所周知，中国在+8区，这个+8小时是基于utc时间来计算的，虽然你建表的时候把字段类型设置成了timestamp</description><pubDate>Tue, 31 May 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;由于某些原因，将Oracle换成了PostgreSQL，sql也要修改为pg的语法，虽然pg有很多函数名和oracle的一样，但是用起来就是两个不同的东西，这将导致sql查出来的内容乱七八糟或是报错。&lt;/p&gt;
&lt;h3&gt;时区&lt;/h3&gt;
&lt;p&gt;pg里的timestamp是带时区的，众所周知，中国在+8区，这个+8小时是基于utc时间来计算的，虽然你建表的时候把字段类型设置成了&lt;code&gt;timestamp with time zone&lt;/code&gt;，但实际上，那个字段只是会把你插入的时间当成utc的存储罢了&lt;br /&gt;
当咩咩在使用&lt;code&gt;timezone=&apos;8&apos;&lt;/code&gt;并且&lt;code&gt;timestamp with time zone&lt;/code&gt;作为时间字段的时候遇到了一个查询上的问题，使用时间计算，算出&lt;code&gt;2022-06-07 19:15:00+08&lt;/code&gt;作为查询条件，可以从数据库中查到显示为&lt;code&gt;2022-06-07 11:15:00.000000 +00:00&lt;/code&gt;的这条数据，但是如果使用&lt;code&gt;2022-06-07 19:15:00&lt;/code&gt;作为查询条件，那肯定是查不到的，因为是通过timestamp计算的，直接导致了在使用&lt;code&gt;on conflict&lt;/code&gt;的时候数据错乱，所以应该使用类型&lt;code&gt;timestamp&lt;/code&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;-- 设置为utc时间也就是+00:00 如果库里全是 timestamp with time zone 类型要用这个
set timezone=&apos;0&apos;;
-- 设置为中国时间也就是+08:00
set timezone=&apos;8&apos;;

-- 查询当前时间 代替oracle的sysdate，输出的最后可以看到当前时间
select now();
-- current_date 在oracle中为utc时间，在pg中是当前日期，如果pg设置的utc时间可以用now()，否则减8小时
select now() - interval &apos;8&apos; hour
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;trunc()&lt;/h3&gt;
&lt;p&gt;这在oracle里用来截取时间，比如把精确秒的时间截到日，他在pg里使用&lt;code&gt;date_trunc&lt;/code&gt;代替&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;-- 当前时间截取到天 对应 TRUNC(SYSDATE)
date_trunc(&apos;day&apos;, now())
-- 当前时间截取到分钟 对应 TRUNC(SYSDATE, &apos;MI&apos;)
date_trunc(&apos;minute&apos;, now())
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;interval&lt;/h3&gt;
&lt;p&gt;这是用来时间加减计算的，oracle里时间与数字计算单位默认是天，pg里要写清楚&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;-- 加2天 对应 SYSDATE + 2
now() + interval &apos;2&apos; day
-- 加num天 对应 SYSDATE + num
now() + interval &apos;1&apos; day * num
-- 加1小时 对应 SYSDATE + 1/24
now() + interval &apos;1&apos; hour
-- 这样写也行 加180天
now() + INTERVAL &apos;180 days&apos;
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;mod()&lt;/h3&gt;
&lt;p&gt;用来计算除法的时候的余数的，在oracle里除以0就会返回左边的数字，而pg里直接炸给你看，如果被除数是0都会返回0&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;-- 解决方案就是写个case在除数b为0的时候返回被除数a
case when b=0 then a else MOD(a, b) end
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;类型转换&lt;/h3&gt;
&lt;p&gt;pg不像oracle和mysql那样有着比较随便的数据类型转换，字符串或是时间和数字是不能直接进行运算的，那就会用到&lt;code&gt;字段或值::类型&lt;/code&gt;的方式进行类型转换以保证sql正常运行&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;-- 取一个时间字段c中的分钟数字 类型名称都比较接近自然语言能猜到是什么
extract(minute from cast(c as timestamp))::numeric
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;to_date()&lt;/h3&gt;
&lt;p&gt;这是用于字符串与时间转换的，当你把oracle的sql放到pg里的时候，你会发现你的时间查询坏掉了，因为在pg中&lt;code&gt;to_date()&lt;/code&gt;转出来的只能精确到日，不能像oracle那样精确到秒&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;-- 错误示范 转出来是 2022-05-31 00:00:00
to_date(&apos;2022-05-31 09:43:29&apos;, &apos;yyyy-mm-dd hh24:mi:ss&apos;)
-- 正确的方法
to_timestamp(&apos;2022-05-31 09:43:29&apos;, &apos;yyyy-mm-dd hh24:mi:ss&apos;)
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;merge into&lt;/h3&gt;
&lt;p&gt;pg不支持这个，但是他有个代替品&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;-- 在 conflict 中的字段需要给他创建一个key才能使用这个功能，这样这些字段在全表中的组合必须是唯一的
alter table table1
add constraint table1_conflict_abc
unique (a,b,c);
-- 大量数据的时候
insert into table1 (a,b,c) values
(1,2,3),
(4,5,6)
on conflict(a,b) do update set
c=excluded.c
-- 从其他表插入
insert into table1 (a,b,c)
select a,b,c from table2
on conflict(a,b) do update set
c=excluded.c
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>双网口群晖Docker部署OpenWrt</title><link>https://zyyme.com/dsm-docker-openwrt.html</link><guid isPermaLink="true">https://zyyme.com/dsm-docker-openwrt.html</guid><description>以下内容来自QQ:1729746258 测试环境 硬件：赛扬 3865U 双千兆主板 系统：DSM 7.1 容器：Docker 网络配置：群晖 eth0 连接到上级路由自动获取 IP (192.168.0.23)，eth1 断开 部署过程 1. SSH 到群晖开启网口混杂模式 sudo -i ip link set eth0 promisc on ip li</description><pubDate>Fri, 27 May 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;以下内容来自QQ:1729746258&lt;/p&gt;
&lt;h2&gt;测试环境&lt;/h2&gt;
&lt;p&gt;硬件：赛扬 3865U 双千兆主板&lt;br /&gt;
系统：DSM 7.1&lt;br /&gt;
容器：Docker&lt;br /&gt;
网络配置：群晖 eth0 连接到上级路由自动获取 IP (192.168.0.23)，eth1 断开&lt;/p&gt;
&lt;h2&gt;部署过程&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;SSH 到群晖开启网口混杂模式&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo -i
ip link set eth0 promisc on
ip link set eth1 promisc on
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Docker 拉取 OpenWrt 镜像&lt;br /&gt;
拉这个：&lt;code&gt;piaoyizy/openwrt-x86&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Docker 创建虚拟网卡
eth0 作为 OpenWrt 的 WAN 口&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;docker network create -d macvlan -o parent=eth0 macvwan
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;eth1 作为 OpenWrt 的 LAN 口&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;docker network create -d macvlan -o parent=eth1 macvlan
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;启动 OpenWrt 容器 (连接到 macvlan)&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;docker run -d --name=OpenWrt --restart always --privileged --network macvlan piaoyizy/openwrt-x86
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;OpenWrt容器连接到 macvwan&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;docker network connect macvwan openwrt
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;进入 OpenWrt 容器 Shell&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;vi /etc/config/network
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;配置如下：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;config interface &apos;lan&apos;
option ifname &apos;eth1&apos;
option proto &apos;static&apos;
option ipaddr &apos;192.168.1.1&apos;
option netmask &apos;255.255.255.0&apos;

config interface &apos;wan&apos;
option ifname &apos;eth0&apos;
option proto &apos;dhcp&apos;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;保存退出&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;重启容器&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;进入 OpenWrt 容器 Shell 或上级路由器后台查看自动获取的 IP
登录到 OpenWrt 后台，网络 -&amp;gt; 防火墙 -&amp;gt; 自定义规则, 添加一行：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;iptables -t nat -I POSTROUTING -s 192.168.1.0/24  -j MASQUERADE
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;重启防火墙&lt;br /&gt;
网络 -&amp;gt; 防火墙 -&amp;gt; 区域设置 -&amp;gt; 转发: 接受&lt;br /&gt;
保存&amp;amp;应用&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;设置网口混杂模式开机自启
登录到群晖，控制面板 -&amp;gt; 任务计划 -&amp;gt; 新增 -&amp;gt; 触发的任务 -&amp;gt; 用户自定义的脚本：&lt;br /&gt;
用户账号：root&lt;br /&gt;
脚本如下：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ip link set eth0 promisc on
ip link set eth1 promisc on
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;保存&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
</content:encoded></item><item><title>雷神G50</title><link>https://zyyme.com/leishen-g50.html</link><guid isPermaLink="true">https://zyyme.com/leishen-g50.html</guid><description>雷神g50.jpeg 由于之前用的北通X1被某个大佬薅走了，于是咩咩买了个新的手柄。 翻了一下，看到雷神G50可以刷固件支持MFI，也就是模拟一个Xbox的无线手柄的蓝牙给iOS连，就168买了这个。 到手后发现，原来是比较老出厂的才可以刷，手上这个是2022-04-04的货，于是就刷了试试，结果发现个问题，陀螺仪用不了了，陀螺仪读数不会变，大概就是固件不兼</description><pubDate>Mon, 09 May 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;/assets/uploads/2022/06/h3a74mv7py.jpeg&quot; alt=&quot;雷神g50.jpeg&quot; /&gt;&lt;br /&gt;
由于之前用的北通X1被某个大佬薅走了，于是咩咩买了个新的手柄。&lt;br /&gt;
翻了一下，看到雷神G50可以刷固件支持MFI，也就是模拟一个Xbox的无线手柄的蓝牙给iOS连，就168买了这个。&lt;/p&gt;
&lt;p&gt;到手后发现，原来是比较老出厂的才可以刷，手上这个是2022-04-04的货，于是就刷了试试，结果发现个问题，陀螺仪用不了了，陀螺仪读数不会变，大概就是固件不兼容吧，但其他功能都没问题，那就两个固件换着刷用吧，现在来说说怎么刷。&lt;br /&gt;
&amp;lt;!--more--&amp;gt;&lt;br /&gt;
因为批次不一样，陀螺仪芯片不一样，如果刷了MFI固件陀螺仪能用那就没什么事了，测试陀螺仪的方法很简单，在ios下载keylinker，连上之后右上角点固件更新（不知道为什么Android端的永远提示当前已是最新版）更新完后连上，右上角菜单里多了一个按键测试，显示体感的值就是陀螺仪的读数。&lt;/p&gt;
&lt;p&gt;手柄关机，按住L3键（左摇杆在中心位置按压为L3键），USB连接到电脑，解压打开exe，点击中间Update Firmware，弹窗提示Update Success即为刷机完成，按住back按房子开机可以进入mfi模式&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;出厂固件v40，这个v21没有校验，可以直接刷进去
&lt;a href=&quot;/assets/uploads/2022/05/4190351593.zip&quot;&gt;2020-5-16_ver_21.zip&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;这是MFI功能的最新固件
&lt;a href=&quot;/assets/uploads/2022/05/1603328063.zip&quot;&gt;2020-9-18_ver_22.zip&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;这个我也不知道干嘛的，虽然版本号更低但是他日期更新
&lt;a href=&quot;/assets/uploads/2022/05/3430617488.zip&quot;&gt;2021-6-10_ver_21.zip&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;如果想刷回去，需要先刷这个，这也同时是旧版的出厂固件
&lt;a href=&quot;/assets/uploads/2022/05/2317958212.zip&quot;&gt;2020-10-29_ver_20.zip&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;这是找官方技术要到的新版手柄出厂v40固件，不能外发，有需要联系官方客服
(G50)2021-9-15_ZXD1388_BLE_C113_0x9FDFver_40(仅支持ZX160和ZX650).rar&lt;/li&gt;
&lt;/ol&gt;
</content:encoded></item><item><title>使用Cloudflare CDN时百度抓取异常 socket读写错误</title><link>https://zyyme.com/cloudflare-zzbaidu.html</link><guid isPermaLink="true">https://zyyme.com/cloudflare-zzbaidu.html</guid><description>百度socket读写错误.jpeg 因为百度太菜，不支持，所以需要打开Cloudflare的控制台，找到 SSL/TLS - 边缘证书 - 随机加密 把它关掉 网上查到很多说是因为百度只会用http，强制https将无法爬取，这个得去zz.baidu.com完成HTTPS认证 至于他为什么不收录，或是只收录主页，大概是因为没充钱吧（ [1]: /assets</description><pubDate>Thu, 05 May 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;/assets/uploads/2022/06/h3a77e8lrz.jpeg&quot; alt=&quot;百度socket读写错误.jpeg&quot; /&gt;&lt;br /&gt;
因为百度太菜，不支持，所以需要打开Cloudflare的控制台，找到 SSL/TLS -&amp;gt; 边缘证书 -&amp;gt; 随机加密 把它关掉&lt;br /&gt;
网上查到很多说是因为百度只会用http，强制https将无法爬取，这个得去zz.baidu.com完成HTTPS认证&lt;br /&gt;
至于他为什么不收录，或是只收录主页，大概是因为没充钱吧（&lt;/p&gt;
</content:encoded></item><item><title>Openwrt Docker Macvlan</title><link>https://zyyme.com/openwrt-docker-macvlan.html</link><guid isPermaLink="true">https://zyyme.com/openwrt-docker-macvlan.html</guid><description>因为使用Openwrt作为宿主机运行Docker，因为他占用资源少，但总会出现需要使用的端口被Openwrt自身服务占用的事情，举个很常见的例子，比如自带的Upnp，Dlna接收器，Airplay接收器，他们都需要5000端口，Airplay其实还好，因为用的是udp和ipv6，所以可以和Upnp共存，这时候就需要使用Macvlan虚拟端口了。 首先来说说他</description><pubDate>Sun, 24 Apr 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;因为使用Openwrt作为宿主机运行Docker，因为他占用资源少，但总会出现需要使用的端口被Openwrt自身服务占用的事情，举个很常见的例子，比如自带的Upnp，Dlna接收器，Airplay接收器，他们都需要5000端口，Airplay其实还好，因为用的是udp和ipv6，所以可以和Upnp共存，这时候就需要使用Macvlan虚拟端口了。&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;首先来说说他的原理，通常一个端口会有一个mac地址，&lt;br /&gt;
ip会与这个mac地址绑定，当设备被通过ip地址访问时，会去查路由表应该往哪条路走，最后根据ip找到mac地址对应设备将包给他，Macvlan就是给一个端口虚拟多个mac地址，来实现给一个端口分配多个地址的方案，多个地址又可以以host模式分别给容器使用。&lt;br /&gt;
有些操作其实很简单，但是总没有人告诉咩咩应该怎么做，也没有任何相关资料，因此折腾了一个下午+一个晚上才搞定。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/assets/uploads/2022/06/h3a78lqq4u.jpeg&quot; alt=&quot;子网192.168.10.1:24启用ipv6其他默认.jpeg&quot; /&gt;&lt;br /&gt;
Docker -&amp;gt; 网络 -&amp;gt; 新建&lt;br /&gt;
名称&lt;code&gt;lan&lt;/code&gt;，驱动&lt;code&gt;MAC VLAN&lt;/code&gt;&lt;br /&gt;
首先容器的Macvlan网络需要被局域网访问，因此是桥接到br-lan上&lt;br /&gt;
先说明一点，在同一个网段是不可能的，因为这是两个相同网段的路由表，他并不知道应该走虚拟的还是真实的路由，所以会导致外部可以访问容器，容器没外网，已经试过了不行就别再试了&lt;br /&gt;
虽然设置不同的网段，但是测试路由的通的，咩咩的局域网是&lt;code&gt;192.168.1.1/24&lt;/code&gt;，分配给它的子网是&lt;code&gt;192.168.10.1/24&lt;/code&gt;&lt;br /&gt;
网关选择了子网的第一个ip，&lt;code&gt;192.168.10.1&lt;/code&gt;&lt;br /&gt;
开启ipv6，因为像Airplay这种服务需要ipv6，子网用默认的&lt;code&gt;fe80::/10&lt;/code&gt;就行&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/assets/uploads/2022/06/h3a7apjsuw.jpeg&quot; alt=&quot;docker网络.jpeg&quot; /&gt;&lt;br /&gt;
&lt;img src=&quot;/assets/uploads/2022/06/h3a7b75fa0.jpeg&quot; alt=&quot;docker_lan接口.jpeg&quot; /&gt;&lt;br /&gt;
创建好后，网络中会出现一个新的接口&lt;/p&gt;
&lt;p&gt;请注意最重要的一点，使用这个Macvlan的容器必须是带着&lt;code&gt;--net=lan&lt;/code&gt;全新run的，不能修改现有容器加上这个网络，否则启动会报错网段冲突，无论网段是否真的冲突，绝对会报错&lt;br /&gt;
&lt;img src=&quot;/assets/uploads/2022/06/h3a7dj933g.jpeg&quot; alt=&quot;网段冲突错误.jpeg&quot; /&gt;&lt;/p&gt;
</content:encoded></item><item><title>避免误删crontab</title><link>https://zyyme.com/crontab-r.html</link><guid isPermaLink="true">https://zyyme.com/crontab-r.html</guid><description>因为crontab -r是删除，crontab -e是编辑，但是键盘上的e和r特别近，特别容易按错，当你有特别多的计划任务，而且还没有备份的时候，这和rm -rf / --no-preserve-root的威力差不多 需要先换成root，可以sudo -s或者su换过去 echo &apos;if [ &quot;$1&quot; != &quot;-r&quot; ];then /usr/bin/cron</description><pubDate>Wed, 20 Apr 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;因为&lt;code&gt;crontab -r&lt;/code&gt;是删除，&lt;code&gt;crontab -e&lt;/code&gt;是编辑，但是键盘上的e和r特别近，特别容易按错，当你有特别多的计划任务，而且还没有备份的时候，这和&lt;code&gt;rm -rf /* --no-preserve-root&lt;/code&gt;的威力差不多&lt;/p&gt;
&lt;p&gt;需要先换成root，可以&lt;code&gt;sudo -s&lt;/code&gt;或者&lt;code&gt;su&lt;/code&gt;换过去&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;echo &apos;if [ &quot;$1&quot; != &quot;-r&quot; ];then /usr/bin/crontab $1;fi&apos; &amp;gt; /usr/local/bin/crontab
chmod +x /usr/local/bin/crontab
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>给Typecho写了一个新评论Http推送插件MeHttpPush</title><link>https://zyyme.com/mehttppush.html</link><guid isPermaLink="true">https://zyyme.com/mehttppush.html</guid><description>本插件会在Typecho收到新评论时，按照配置HTTP推送Api进行推送，本质上就是GET请求 支持Server酱,Bark,Telegram等使用HTTP的推送Api 详细请见 Github仓库</description><pubDate>Tue, 19 Apr 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;本插件会在Typecho收到新评论时，按照配置HTTP推送Api进行推送，本质上就是GET请求&lt;br /&gt;
支持Server酱,Bark,Telegram等使用HTTP的推送Api&lt;/p&gt;
&lt;p&gt;详细请见 &lt;a href=&quot;https://github.com/zanjie1999/MeHttpPush&quot;&gt;Github仓库&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>Struts2.3升级到2.5.30</title><link>https://zyyme.com/struts-2-3-to-2-5-30.html</link><guid isPermaLink="true">https://zyyme.com/struts-2-3-to-2-5-30.html</guid><description>众所周知，Struts2经常被爆出一些奇奇怪怪的大漏洞，并且Struts2.3和Struts2.5是两个不同的分支，就像Python2.7和Python3一样，并且Struts2.3的分支在2018年已经停止维护了，想要修复漏洞那么只能做大版本升级。 本次为远程执行漏洞CVE-2021-31805(S2-062)，由于版本差距悬殊，用时一天半，现在记录一下改</description><pubDate>Tue, 19 Apr 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;众所周知，Struts2经常被爆出一些奇奇怪怪的大漏洞，并且Struts2.3和Struts2.5是两个不同的分支，就像Python2.7和Python3一样，并且Struts2.3的分支在2018年已经停止维护了，想要修复漏洞那么只能做大版本升级。&lt;br /&gt;
本次为远程执行漏洞&lt;code&gt;CVE-2021-31805(S2-062)&lt;/code&gt;，由于版本差距悬殊，用时一天半，现在记录一下改了什么。&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h2&gt;pom.xml&lt;/h2&gt;
&lt;p&gt;主&lt;code&gt;pom.xml&lt;/code&gt;（就是项目根目录那个）的&lt;code&gt;&amp;lt;properties&amp;gt;&lt;/code&gt;中的版本升级&lt;br /&gt;
这个项目的Spring版本是&lt;code&gt;3.1.2.RELEASE&lt;/code&gt;如果小于3.1请继续用Quartz1&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;slf4j-api.version&amp;gt;1.7.30&amp;lt;/slf4j-api.version&amp;gt;
&amp;lt;struts.version&amp;gt;2.5.30&amp;lt;/struts.version&amp;gt;
&amp;lt;quartz.version&amp;gt;2.0.2&amp;lt;/quartz.version&amp;gt;
&amp;lt;cglib.version&amp;gt;3.2.4&amp;lt;/cglib.version&amp;gt;
&amp;lt;commons-lang3.version&amp;gt;3.9&amp;lt;/commons-lang3.version&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;&amp;lt;dependencyManagement&amp;gt;&lt;/code&gt; -&amp;gt; &lt;code&gt;&amp;lt;dependencies&amp;gt;&lt;/code&gt;中&lt;br /&gt;
新增加的依赖，其中Struts2.5需要Log4j2,为了让原有项目的Log4j1能正常运行，增加&lt;code&gt;log4j-to-slf4j&lt;/code&gt;把日志转到&lt;code&gt;slf4j&lt;/code&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;dependency&amp;gt;
    &amp;lt;groupId&amp;gt;org.slf4j&amp;lt;/groupId&amp;gt;
    &amp;lt;artifactId&amp;gt;slf4j-api&amp;lt;/artifactId&amp;gt;
    &amp;lt;version&amp;gt;${slf4j-api.version}&amp;lt;/version&amp;gt;
&amp;lt;/dependency&amp;gt;
&amp;lt;dependency&amp;gt;
    &amp;lt;groupId&amp;gt;org.slf4j&amp;lt;/groupId&amp;gt;
    &amp;lt;artifactId&amp;gt;slf4j-log4j12&amp;lt;/artifactId&amp;gt;
    &amp;lt;version&amp;gt;${slf4j-api.version}&amp;lt;/version&amp;gt;
&amp;lt;/dependency&amp;gt;
&amp;lt;dependency&amp;gt;
    &amp;lt;groupId&amp;gt;org.apache.logging.log4j&amp;lt;/groupId&amp;gt;
    &amp;lt;artifactId&amp;gt;log4j-to-slf4j&amp;lt;/artifactId&amp;gt;
    &amp;lt;version&amp;gt;2.17.2&amp;lt;/version&amp;gt;
&amp;lt;/dependency&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Struts2的那条需要修改一下，增加了&lt;code&gt;log4j-api&lt;/code&gt;，也就是Log4j2的东西，他将被&lt;code&gt;log4j-to-slf4j&lt;/code&gt;代替所以不用了&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;dependency&amp;gt;
    &amp;lt;groupId&amp;gt;org.apache.struts&amp;lt;/groupId&amp;gt;
    &amp;lt;artifactId&amp;gt;struts2-core&amp;lt;/artifactId&amp;gt;
    &amp;lt;version&amp;gt;${struts.version}&amp;lt;/version&amp;gt;
    &amp;lt;exclusions&amp;gt;
        &amp;lt;exclusion&amp;gt;
            &amp;lt;groupId&amp;gt;javassist&amp;lt;/groupId&amp;gt;
            &amp;lt;artifactId&amp;gt;javassist&amp;lt;/artifactId&amp;gt;
        &amp;lt;/exclusion&amp;gt;
        &amp;lt;exclusion&amp;gt;
            &amp;lt;artifactId&amp;gt;log4j-api&amp;lt;/artifactId&amp;gt;
            &amp;lt;groupId&amp;gt;org.apache.logging.log4j&amp;lt;/groupId&amp;gt;
        &amp;lt;/exclusion&amp;gt;
    &amp;lt;/exclusions&amp;gt;
&amp;lt;/dependency&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;至于子Maven包中的&lt;code&gt;pom.xml&lt;/code&gt;，只需要将这些&lt;code&gt;&amp;lt;dependencies&amp;gt;&lt;/code&gt;修改同步复制过去就行，区别在于要去掉&lt;code&gt;&amp;lt;version&amp;gt;&lt;/code&gt;这一行，如不行，删掉报错缺少的包的&lt;code&gt;&amp;lt;scope&amp;gt;provided&amp;lt;/scope&amp;gt;&lt;/code&gt;配置。&lt;/p&gt;
&lt;h2&gt;spring-quartzJob.xml&lt;/h2&gt;
&lt;p&gt;因为版本更新，class的名字有变化，简单的说就是两个批量替换&lt;br /&gt;
&lt;code&gt;Bean&lt;/code&gt; -&amp;gt; &lt;code&gt;FactoryBean&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;FactoryFactoryBean&lt;/code&gt; -&amp;gt; &lt;code&gt;FactoryBean&lt;/code&gt;&lt;br /&gt;
在Linux下可以用这两条命令实现&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sed -i &apos;s/Bean/FactoryBean/g&apos; spring-quartzJob.xml
sed -i &apos;s/FactoryFactoryBean/FactoryBean/g&apos; spring-quartzJob.xml
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;struts.xml&lt;/h2&gt;
&lt;p&gt;首先要把头部的版本号换一下，2.3换成2.5，简单的说，就是把文件第二行的&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;!DOCTYPE struts PUBLIC &quot;-//Apache Software Foundation//DTD Struts Configuration 2.3//EN&quot; &quot;http://struts.apache.org/dtds/struts-2.3.dtd&quot;&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;换成&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;!DOCTYPE struts PUBLIC &quot;-//Apache Software Foundation//DTD Struts Configuration 2.5//EN&quot; &quot;http://struts.apache.org/dtds/struts-2.5.dtd&quot;&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;另外在Struts2.5中多了一个叫Allowed Methods的功能，可以限制action允许请求的方法名，写在class注释@Action的旁边&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;@Action(value=&quot;zyymeAction&quot;,results={@Result(name=&quot;success&quot;,location=&quot;/success.jsp&quot;)})
@AllowedMethods(value={(&quot;add&quot;),(&quot;update&quot;),(&quot;delete&quot;)})
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果不配置，那就默认所有方法都不能被请求，最简单的方式就是配置一个全局配置允许所有方法&lt;br /&gt;
&lt;code&gt;&amp;lt;struts&amp;gt;&lt;/code&gt; -&amp;gt; &lt;code&gt;&amp;lt;package&amp;gt;&lt;/code&gt;中加入&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;global-allowed-methods&amp;gt;regex:.*&amp;lt;/global-allowed-methods&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;因为配置有顺序要求，你可以尝试在原有标签的中间插入这一条直到他不报错为止，他的顺序要求是这样的&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;result-types&amp;gt;
&amp;lt;interceptors&amp;gt;
&amp;lt;default-interceptor-ref&amp;gt;
&amp;lt;default-action-ref&amp;gt;
&amp;lt;default-class-ref&amp;gt;
&amp;lt;global-results&amp;gt;
&amp;lt;global-allowed-methods&amp;gt;
&amp;lt;global-exception-mappings&amp;gt;
&amp;lt;action&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;web.xml&lt;/h2&gt;
&lt;p&gt;因为Struts2.5的包路径有所变化，需要删掉&lt;code&gt;ng&lt;/code&gt;这一层&lt;br /&gt;
简单的说就是将&lt;code&gt;.ng.&lt;/code&gt;替换成&lt;code&gt;.&lt;/code&gt;&lt;br /&gt;
在Linux下可以用这条命令实现&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sed -i &apos;s/.ng././g&apos; web.xml
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>京东云</title><link>https://zyyme.com/jdc.html</link><guid isPermaLink="true">https://zyyme.com/jdc.html</guid><description>京东云2存储情况.jpeg 由于k2p的mt7621老了，wifi5的速度只有400mbps上下，不能满足新设备的网速需求（连宽带都跑不满），看着京东云还能跑京豆回本，就在2021-08-24买了一个京东云无线宝2代(AX1800 Pro)也就是现在说的亚瑟，本着高通高性能armcpu还有usb3指望能刷个机什么的，结果没等到他出固件，就换了软路由，现在依然</description><pubDate>Tue, 12 Apr 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;/assets/uploads/2022/06/h3a7gxbfjf.jpeg&quot; alt=&quot;京东云2存储情况.jpeg&quot; /&gt;&lt;br /&gt;
由于k2p的mt7621老了，wifi5的速度只有400mbps上下，不能满足新设备的网速需求（连宽带都跑不满），看着京东云还能跑京豆回本，就在2021-08-24买了一个京东云无线宝2代(AX1800 Pro)也就是现在说的亚瑟，本着高通高性能armcpu还有usb3指望能刷个机什么的，结果没等到他出固件，就换了软路由，现在依然作为ap使用，因为固件太菜，所以始终只有做ap的命。&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2023年4月22日16点20分京东云突然重启，系统被强制更新到r2279&lt;/strong&gt;&lt;br /&gt;
&lt;strong&gt;原来是r2242，并且自动更新是关的，插件也没有跑，说明京东云有隐藏后门(大概是jdc_agent)&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;开SSH&lt;/h2&gt;
&lt;p&gt;最后一个能用的是1.5.40r2181,&lt;s&gt;目前最新的1.5.50r2204是不行的&lt;/s&gt;，另外这个版本还会更新到easymesh，如果没有不同型号的需要进行组网，强烈不建议更新&lt;br /&gt;
登录京东云，打开f12控制台，运行一下这个&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$.ajax({
    url: &quot;/jdcapi&quot;,
    async: false,
    data: JSON.stringify({
        jsonrpc: &quot;2.0&quot;,
        id: 1,
        method: &quot;call&quot;,
        params: [
            $.cookie(&quot;sessionid&quot;),
            &quot;service&quot;,
            &quot;set&quot;,
            {
                &quot;name&quot;: &quot;dropbear&quot;,
                &quot;instances&quot;: {&quot;instance1&quot;: {&quot;command&quot;: [&quot;/usr/sbin/dropbear&quot;]}}
            }
        ]
    }),
    dataType: &quot;json&quot;,
    type: &quot;POST&quot;
})
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果是1.5.50r2204的固件，可以试试这个 &lt;a href=&quot;/assets/uploads/2022/05/1589306327.txt&quot;&gt;评论区Monic提供加密脚本&lt;/a&gt; 的内容在京东云断网的情况下恢复出厂设置（不会删缓存）后贴到控制台运行，因为是加密的，也不知道运行了什么，安全性自辩&lt;/p&gt;
&lt;p&gt;22年11月头，目前最新的固件是1.5.70r2242，2181无法下发aiecpluginES，所以必须更新，咩咩已经成功带着ssh升级到了这个最新版，方法不公开发布，目前没有可以直接在此固件开ssh的办法，这里提供一些思路：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;旧版固件可以开ssh&lt;/li&gt;
&lt;li&gt;固件更新成功后会重启，亮蓝灯，这时手机app可以连接控制路由器&lt;/li&gt;
&lt;li&gt;大概1分钟后，亮绿灯启动插件，然后会下发/opt/etc/下的插件脚本&lt;code&gt;nattype.sh&lt;/code&gt; &lt;code&gt;jdc_docker.sh&lt;/code&gt; &lt;code&gt;aiecpluginES.sh&lt;/code&gt; &lt;code&gt;aiecpluginextA.sh&lt;/code&gt;这4个文件，其中aie开头的是插件，另外两个是nat测试和docker环境的启动脚本，以及&lt;code&gt;/opt/etc/init.d/r2242_hotfix&lt;/code&gt;这个开机启动的补丁&lt;/li&gt;
&lt;li&gt;补丁每次开机重置一次定时计划任务，几分钟定时kill掉一次dropbear&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;因为他是基于Openwrt的，其中&lt;code&gt;/usr/sbin/dropbear&lt;/code&gt;为本次请求运行的命令，带着cookie还能运行其他的命令&lt;br /&gt;
如果需要开机启动，那只需要在&lt;code&gt;/etc/rc.local&lt;/code&gt;中的&lt;code&gt;exit 0&lt;/code&gt;前面加入这个命令，具体怎么加，可以查查vi怎么用&lt;br /&gt;
另外如果你用京东云拨号，那么这个ssh服务也是可以从公网访问的，如果不想，请自行增加iptables规则来屏蔽从pppoe访问tcp22&lt;br /&gt;
这也算是个隐藏功能吧，不是什么漏洞&lt;/p&gt;
&lt;h2&gt;DNS劫持&lt;/h2&gt;
&lt;p&gt;虽然作为AP模式，但是他依然会劫持接在它下面dns到他自身，也就是udp53&lt;br /&gt;
其实劫持也没啥，主要是他的DNS解析太慢了，而且局域网主机名&lt;code&gt;.lan&lt;/code&gt;后缀的都无法正常传递到上级路由解析&lt;br /&gt;
具体的话可以&lt;code&gt;iptables -t nat -L PREROUTING&lt;/code&gt;检查一下是否有这条规则，解决方案也很简单，命令咩咩已经写好了，运行将删除这条劫持dns的规则，也可以按上面的方式加到开机启动&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;iptables -t nat -L PREROUTING --line-num | grep dpt:domain | awk &apos;{system(&quot;iptables -t nat -D PREROUTING &quot;$1)}&apos; ​​​
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;至于如何验证劫持关掉了呢？&lt;code&gt;nslookup jdcloudwifi.com&lt;/code&gt;解析不出来则为成功（京东云劫持这个域名用于快速访问路由器设置）&lt;br /&gt;
另外发现他还是会不定时加回来，所以还需要&lt;code&gt;crontab -e&lt;/code&gt;加到计划任务里&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;* * * * * iptables -t nat -L PREROUTING --line-num | grep dpt:domain | awk &apos;{system(&quot;iptables -t nat -D PREROUTING &quot;$1)}&apos;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这样一分钟会自动检查一次并删掉劫持的规则&lt;/p&gt;
&lt;p&gt;或者可以把dns请求劫持一下到主路由&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;iptables -t nat -A PREROUTING -p udp --dport 53 -j DNAT --to 192.168.1.1:53
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;1.5.70r2242收敛了一点，ap模式不会再劫持全部dns，收敛了一点，可以不处理正常用&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;target     prot opt source               destination         
DNAT       udp  --  anywhere             anywhere             udp dpt:domain STRING match  &quot;|0b6a64636c6f75647769666903636f6d|&quot; ALGO name bm TO 65535 to:192.168.1.3
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;QoS&lt;/h2&gt;
&lt;p&gt;京东云自带QoS规则，可以使用&lt;code&gt;iptables -t mangle -L&lt;/code&gt;查到，积分模式切换的就是QoS模式，具体的脚本是&lt;code&gt;/etc/ipt_qosnss.sh&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;端口转发&lt;/h2&gt;
&lt;p&gt;用这个路由器大概也会用它的赚京东功能吧？由于他的UPnP比较奇怪，就算上级路由开了UPnP他也是nat3，那么就需要给他做端口转发，因为他跑的插件虽然说最多就两个，但是具体跑的是哪一个是不固定的，可以先查一下端口监听&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;netstat -anp | grep 0.0.0.0 | grep -v -E &apos;wpa|hostap|nmbd|dns|smb|nginx|cnssdaemon|dro
pbear|jdc_|127.0.0.1:&apos;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;/assets/uploads/2022/06/h3a7hykvyy.jpeg&quot; alt=&quot;centaurs和happ-vod监听了38033和18688.jpeg&quot; /&gt;&lt;br /&gt;
然后把他们监听的端口加到主路由的端口转发就行&lt;br /&gt;
另外有一个&lt;code&gt;/opt/etc/nattype.sh&lt;/code&gt;用于检测nat类型，观察了一下，他会在18700-18799的范围内随机检测，因此这部分也要转发&lt;/p&gt;
&lt;p&gt;另外还有个办法，看京东云的防火墙都开放了什么端口，照着添加转发也可以&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;iptables -L  zone_wan_input
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;更新到r2242之后，有了一个新方法，这是热补丁的一部分&lt;br /&gt;
&lt;code&gt;/sbin/haiapi call &apos;{&quot;payload&quot;:[{&quot;method&quot;:&quot;firewall.get_port_access_list&quot;}],&quot;version&quot;:&quot;1.0.0&quot;,&quot;action&quot;:&quot;call&quot;}&apos;&lt;/code&gt;&lt;br /&gt;
显示的是个json，需要转发什么端口是什么协议清晰可见&lt;/p&gt;
&lt;p&gt;实在是懒的话，直接把10000-59999都转给京东云就完事咯&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/assets/uploads/2022/06/h3a7ifrk6p.jpeg&quot; alt=&quot;Openwrt防火墙-端口转发.jpeg&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;外置双插件&lt;/h2&gt;
&lt;p&gt;因为京东云给的越来越少了，咩咩这里是内置X哔哩哔哩（aiecpluginE）外置Y爱奇艺（aiecpluginA），并且内置跑的比外置还猛，Y插件也占不满500g的硬盘，那么就将内置的X也移动过去&lt;br /&gt;
插件安装在&lt;code&gt;/opt&lt;/code&gt;中，&lt;code&gt;aiecplugin&lt;/code&gt;开头的文件夹就是，其中aiecpluginA的存储是在&lt;code&gt;aiecpluginA.conf&lt;/code&gt;中，aiecpluginE则是一个软连接链过去的&lt;code&gt;cache&lt;/code&gt;文件夹&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cd /opt/aiecpluginE
# 将内置的缓存复制到外置
cp -a /mnt/mmcblk0p27/aiecpluginE /mnt/sda1/aiecpluginE
# 将插件运行目录换成外置的
rm Log cache
ln -s /mnt/sda1/aiecpluginE/cache cache
ln -s /mnt/sda1/aiecpluginE/Log Log
# 让路由状态显示的是实际的缓存大小
cd /mnt/mmcblk0p27/
rm -rf aiecpluginE
ln -s /mnt/sda1/aiecpluginE aiecpluginE
# 重启插件
ps | grep mmcblk0p27
kill 上面第一列所有的数字用空格隔开
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;22年11月头，aiecpluginE已经被aiecpluginES插件取代，这是一个跑在docker里的插件，2181无法下发，所以被迫更新到最新的2242&lt;br /&gt;
因为插件是个docker容器，所以要将其改为外置就简单了，刚刚被傻逼iOS的下拉刷新坑了，写的全没了，现在就简单写一下吧，假设你的外置盘在/mnt/sda1&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;docker stop centaurs
cd /mnt/mmcblk0p27
cp -a aiecpluginES /mnt/sda1/aiecpluginES
ln -s /mnt/sda1/aiecpluginES aiecpluginES
docker start centaurs
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;固件降级&lt;/h2&gt;
&lt;p&gt;编辑文件&lt;code&gt;/lib/upgrade/platform.sh&lt;/code&gt;，找到&lt;code&gt;check_hlos_type()&lt;/code&gt;这个方法，把&lt;code&gt;-a $ver -ge $version_no&lt;/code&gt;删掉，大概在31行&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;elif [ -n &quot;$type&quot; -a $ver -ge $version_no ];then
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;改为&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;elif [ -n &quot;$type&quot; ];then
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;就可以在web选择旧版固件降级了&lt;br /&gt;
另外评论区有个旧版固件和旧版的platform.sh，因为不知道后期会有什么变化，优先推荐直接修改文件而不是替换，如果不会改可以替换试试（1.5.50r2204测试通过）&lt;/p&gt;
&lt;h2&gt;Bug&lt;/h2&gt;
&lt;p&gt;2022年12月初，京东云给2代亚瑟把双插件发成了内外A，也就是爱奇艺的ipes，导致积分暴降，60mbps上一天0.6，之前刚出雅典娜1.2，21年刚买2.5元&lt;br /&gt;
原来的aiecpluginA服务变成了aiecplugin2A和aiecpluginsame2A，aiecplugin2A内置，aiecpluginsame2A外置&lt;br /&gt;
但是不知道是不是开发的人根本看不懂代码还是有bug，导致这内外两个A只能启动一个，插盘就启动外置的，不插就启动内置的，向客服反馈一个月多次让工程师看也没找到问题，外置存满了内置还是0缓存&lt;/p&gt;
&lt;h2&gt;LED&lt;/h2&gt;
&lt;p&gt;红灯：emmc读写，绿灯：wan口传输，蓝灯：wan口插入&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;echo mmc0 &amp;gt; /sys/class/leds/led_r1/trigger
echo netdev &amp;gt; /sys/class/leds/led_b1/trigger
echo netdev &amp;gt; /sys/class/leds/led_g1/trigger
echo eth4 &amp;gt; /sys/class/leds/led_b1/device_name
echo eth4 &amp;gt; /sys/class/leds/led_g1/device_name
echo link &amp;gt; /sys/class/leds/led_b1/mode
echo &apos;tx rx&apos; &amp;gt; /sys/class/leds/led_g1/mode
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;备份emmc&lt;/h2&gt;
&lt;p&gt;因为京东云2代和1代不一样，系统是装在emmc里的，积分也是用emmc跑的，众所周知闪存的写入量是有限的，很有可能跑积分给跑挂了（比如持续红灯不开机）既然开了ssh那就备份一下比较好&lt;br /&gt;
如果插usb盘:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;dd if=/dev/mmcblk0 bs=10M of=/mnt/sda1/jdc2emmc.img
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;使用nc网络传输到另一台设备上:&lt;br /&gt;
先在存镜像的电脑上运行（Linux，如果用op的话去掉-q 0，但完成后不会自动退出，自己看盘读写）&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;nc -q 0 京东云ip 12345 &amp;gt; jdc2emmc.img
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;在京东云运行&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;dd if=/dev/mmcblk0 bs=10M | nc -l -vv -p 12345
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;其他&lt;/h2&gt;
&lt;p&gt;京东云对外有个54171端口，转发/api到80端口，是固定端口，建议屏蔽避免被运营商扫，并且这里的api可以修改/opt/etc/config中的文件，另外后台还跑着一个使用固定证书验证访问的webdav服务&lt;br /&gt;
ssh证书免密登录把pub里的内容加到这个文件&lt;code&gt;/etc/dropbear/authorized_keys&lt;/code&gt;&lt;br /&gt;
另外看看评论区，有帮助&lt;/p&gt;
</content:encoded></item><item><title>咩咩从Wordpress换成了Typecho</title><link>https://zyyme.com/wordpress2typecho.html</link><guid isPermaLink="true">https://zyyme.com/wordpress2typecho.html</guid><description>因为Wordpress逐渐臃肿，并且多了一些有的没的功能，并且屎山代码有些高，特别是装了插件之后数据库总有一些奇怪的表 并且希望用用md，于是在鸽子的安利下，换成了Typecho 目前全站在折腾了两个晚上到凌晨3点的情况下已经全部转换了过来 建议各位如果要像咩咩这样迁移，记得先打开Typecho的debug模式以查看数据库错误信息，因为官方带的迁移插件有点b</description><pubDate>Tue, 05 Apr 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;因为Wordpress逐渐臃肿，并且多了一些有的没的功能，并且屎山代码有些高，特别是装了插件之后数据库总有一些奇怪的表&lt;br /&gt;
并且希望用用md，于是在鸽子的安利下，换成了Typecho&lt;br /&gt;
目前全站在折腾了两个晚上到凌晨3点的情况下已经全部转换了过来&lt;br /&gt;
建议各位如果要像咩咩这样迁移，记得先打开Typecho的debug模式以查看数据库错误信息，因为官方带的迁移插件有点bug，草稿的内容创建时间会出异常，而且所有emoji不能正常迁移（插件读数据库编码不是utf8mb4，尽管数据库默认编码是utf8mb4），另外创建时间在数据库居然是用int来记录的，这随时都可能是一个定时炸弹！&lt;br /&gt;
总之就这样用着吧，速度的确挺快，也能满足需求&lt;/p&gt;
</content:encoded></item><item><title>Ubuntu编译最新OpenSSH</title><link>https://zyyme.com/ubuntu-make-install-openssh.html</link><guid isPermaLink="true">https://zyyme.com/ubuntu-make-install-openssh.html</guid><description>https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/ 官网到这里看看最新版是多少，换掉下面的命令 http://www.zlib.net/zlib-1.2.11.tar.gz https://www.openssl.org/source/openssl-1.1.1.tar.gz 这是他的两个依赖，open</description><pubDate>Mon, 14 Mar 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&amp;lt;a href=&quot;https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/&amp;lt;/a&amp;gt;&lt;br /&gt;
官网到这里看看最新版是多少，换掉下面的命令&lt;/p&gt;
&lt;p&gt;&amp;lt;a href=&quot;http://www.zlib.net/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;http://www.zlib.net/zlib-1.2.11.tar.gz&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;a href=&quot;https://www.openssl.org/source/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;https://www.openssl.org/source/openssl-1.1.1.tar.gz&amp;lt;/a&amp;gt;&lt;br /&gt;
这是他的两个依赖，openssl不同系统对应能装的版本不一样，请注意，Ubuntu用的也就是上面这两个版本，所以不需要装&lt;/p&gt;
&lt;p&gt;现在举安装OpenSSH的例子，依赖也是一样的，如果更新依赖那么依赖要先装&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-8.9p1.tar.gz
tar -xzvf openssh-8.9p1.tar.gz
cd openssh-8.9p1.tar
./configure
make
make install
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;好了，这样就装好了，但是系统自带的ssh需要处理掉，因为系统自带的装在/usr/bin而编译的装在/usr/local/bin&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;rm /usr/bin/ssh
rm /usr/bin/ssh-add
rm /usr/bin/ssh-agent
rm /usr/bin/ssh-argv0
rm /usr/bin/ssh-copy-id
rm /usr/bin/ssh-import-id
rm /usr/bin/ssh-import-id-gh
rm /usr/bin/ssh-import-id-lp
rm /usr/bin/ssh-keygen
rm /usr/bin/ssh-keyscan
rm /usr/sbin/sshd
ln -s /usr/local/bin/ssh /usr/bin/ssh
ln -s /usr/local/bin/ssh-add /usr/bin/ssh-add
ln -s /usr/local/bin/ssh-agent /usr/bin/ssh-agent
ln -s /usr/local/bin/ssh-argv0 /usr/bin/ssh-argv0
ln -s /usr/local/bin/ssh-copy-id /usr/bin/ssh-copy-id
ln -s /usr/local/bin/ssh-import-id /usr/bin/ssh-import-id
ln -s /usr/local/bin/ssh-import-id-gh /usr/bin/ssh-import-id-gh
ln -s /usr/local/bin/ssh-import-id-lp /usr/bin/ssh-import-id-lp
ln -s /usr/local/bin/ssh-keygen /usr/bin/ssh-keygen
ln -s /usr/local/bin/ssh-keyscan /usr/bin/ssh-keyscan
ln -s /usr/local/sbin/sshd /usr/sbin/sshd
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>Docker安装Home Assistant (Hassio Supervisor) HASS HACS 代替HAOS</title><link>https://zyyme.com/docker-home-assistant-hassio-supervisor.html</link><guid isPermaLink="true">https://zyyme.com/docker-home-assistant-hassio-supervisor.html</guid><description>目前尝试过安装在arm64和x64的Ubuntu上，Openwrt上，Pve母机的Debian上，openwrt直接跑会出现内存溢出的情况，本文最后说说如何从根本上解决，顺便鄙视一下某个每篇文章都要1.99元的网站 虽然官方有安装脚本，但等于没有一样，并用不了，不要尝试 下载 删掉冒号后面的去访问就能知道最新stable版本是多少，点下面View all t</description><pubDate>Fri, 11 Mar 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;目前尝试过安装在arm64和x64的Ubuntu上，Openwrt上，Pve母机的Debian上，openwrt直接跑会出现内存溢出的情况，本文最后说说如何从根本上解决，顺便鄙视一下某个每篇文章都要1.99元的网站&lt;/p&gt;
&lt;p&gt;虽然官方有安装脚本，但等于没有一样，并用不了，不要尝试&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;下载&amp;lt;/h2&amp;gt;
删掉冒号后面的去访问就能知道最新&lt;code&gt;stable&lt;/code&gt;版本是多少，点下面&lt;code&gt;View all tagged versions&lt;/code&gt;可以展开&lt;br /&gt;
不下载也行，启动的时候会下载&lt;br /&gt;
&amp;lt;h4&amp;gt;arm64&amp;lt;/h4&amp;gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;docker pull ghcr.io/home-assistant/aarch64-hassio-supervisor:2024.12.0
docker pull ghcr.io/home-assistant/qemuarm-64-homeassistant:2024.12.3
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;lt;h4&amp;gt;x64&amp;lt;/h4&amp;gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;docker pull ghcr.io/home-assistant/amd64-hassio-supervisor:2024.12.0
docker pull ghcr.io/home-assistant/qemux86-64-homeassistant:2024.12.3
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;lt;h2&amp;gt;启动&amp;lt;/h2&amp;gt;
不要看官方文档安装他所需要的依赖，因为那些依赖确实没有也行，并且如果在Pve下安装networkmanager会导致网络崩坏&lt;/p&gt;
&lt;p&gt;此处 /opt/apps/hassio 是Home Assistant的所有数据，可以改到你想要的地方，迁移的时候也只需要迁移这个文件夹，并卸载重新安装所有插件（插件即容器，数据不会丢）&lt;br /&gt;
不要问为什么不加&lt;code&gt;--privileged&lt;/code&gt;问就是启不来&lt;br /&gt;
&amp;lt;h4&amp;gt;arm64&amp;lt;/h4&amp;gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;docker run -d --name hassio_supervisor --privileged \
--restart unless-stopped \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /var/run/dbus:/var/run/dbus \
-v /run/udev:/run/udev \
-v /opt/apps/hassio:/data \
-e SUPERVISOR_SHARE=/opt/apps/hassio \
-e SUPERVISOR_NAME=hassio_supervisor \
-e HOMEASSISTANT_REPOSITORY=homeassistant/qemuarm-64-homeassistant \
ghcr.io/home-assistant/aarch64-hassio-supervisor:2024.12.0
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;lt;h4&amp;gt;x64&amp;lt;/h4&amp;gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;docker run -d --name hassio_supervisor --privileged \
--restart always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /var/run/dbus:/var/run/dbus \
-v /run/udev:/run/udev \
-v /opt/apps/hassio:/data \
-e SUPERVISOR_SHARE=/opt/apps/hassio \
-e SUPERVISOR_NAME=hassio_supervisor \
-e HOMEASSISTANT_REPOSITORY=homeassistant/qemux86-64-homeassistant \
ghcr.io/home-assistant/amd64-hassio-supervisor:2024.12.0
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;然后需要耐心等待，按网速和性能需要蛮长时间的，用这个命令来看安装情况或者直接去portainer看log&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;docker logs -f hassio_supervisor
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;另外有人说装完之后找不到Supervisor的菜单，新版的菜单在设置里而不是左边菜单栏上，如果实在找不到，访问路径&lt;code&gt;/hassio/dashboard&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;更新&lt;/h2&gt;
&lt;p&gt;发布了新版本，怎么可能不更新呢&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# 这里的容器镜像名记住了替换下面的
docker stop hassio_supervisor
docker rm hassio_supervisor
# 此时将hassio目录下的jobs.json改个名字，看最上面跑最新版的hassio_supervisor，界面上重启一下homeassistant，尝试用自带的更新功能更新，大概率是能更新成功的

# 如果失败了把hassio目录下的homeassistant.json删掉，并且继续操作，停止删除容器后重新启动hassio_supervisor
docker stop hassio_cli hassio_multicast hassio_audio hassio_dns hassio_observer hassio_supervisor homeassistant
docker rm homeassistant
docker restart hassio_supervisor
# 看日志
docker logs -n 100 -f hassio_supervisor

# 升级成功，清理旧的镜像，如果走web中的升级按钮会自动清理
docker images | grep supervisor
# 上面输出的都挨个删掉
docker rmi ghcr.io/home-assistant/amd64-hassio-supervisor:2022.04.0
docker images | grep 4-homeassistant
# 上面输出的都挨个删掉
docker rmi ghcr.io/home-assistant/qemux86-64-homeassistant:2022.3.6
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;lt;h2&amp;gt;错误和解决方案&amp;lt;/h2&amp;gt;
1.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&apos;AddonManager.install&apos; blocked from execution, system is not healthy
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;hassio文件夹下新建jobs.json并在里面写入&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{&quot;ignore_conditions&quot;: [&quot;healthy&quot;]}
&lt;/code&gt;&lt;/pre&gt;
&lt;ol&gt;
&lt;li&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;在Openwrt下，hassio_audio会以肉眼可见的速度拼命吃内存，原因是因为Openwrt没有/dev/fd&lt;br /&gt;
解决方案1（推荐）&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ln -s /proc/self/fd /dev/fd
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;并且写到启动项中（因为是tmpfs所以需要每次开机都建一次软连接）&lt;br /&gt;
解决方案2（虽然说这东西没啥用，但hassio_supervisor有守护进程，会自动重启它，起起停停浪费资源）&lt;br /&gt;
在计划任务写入&lt;/p&gt;
&lt;pre&gt;&lt;code&gt; * * * * * docker kill hassio_audio
&lt;/code&gt;&lt;/pre&gt;
&lt;ol&gt;
&lt;li&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;path /opt/apps/hassio/share is mounted on /opt but it is not a shared or slave mount
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;新版hass对所在分区挂载有要求，需要增加一条开机启动（尚不清楚怎么写fstab）&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;mount --make-shared /opt
&lt;/code&gt;&lt;/pre&gt;
&lt;ol&gt;
&lt;li&gt;升级，homeassistant 等很久也没有启动，没有 homeassistant 容器
先检查下下来的两个镜像是不是最新的稳定版本（没有dev字样），换成稳定版。&lt;br /&gt;
如果出现&lt;code&gt;[supervisor.docker.interface] Attaching to ghcr.io/home-assistant/qemux86-64-homeassistant with version&lt;/code&gt;的错误&lt;br /&gt;
或是卡在&lt;code&gt;[supervisor.jobs] &apos;MountManager.reload&apos; blocked from execution, mounting not supported on system&lt;/code&gt;的时候&lt;br /&gt;
这是supervisor的问题，我也不知道怎么修，但是在升级2022.11.3的时候遇到了，并且找到了解决方案：&lt;br /&gt;
&lt;strong&gt;删除hassio目录里的config.json再run&lt;/strong&gt;&lt;br /&gt;
下面是极端的解决方案：&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;# 全删掉
docker stop hassio_cli hassio_multicast hassio_audio hassio_dns hassio_observer hassio_supervisor homeassistant
docker rm hassio_cli hassio_multicast hassio_audio hassio_dns hassio_observer hassio_supervisor homeassistant
# 按上面的方式启动，但是去掉 -v /opt/apps/hassio:/data 这个目录映射，SUPERVISOR_SHARE 维持不变，或者换个目录，比如这样：
docker run -d --name hassio_supervisor --privileged \
--restart always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /var/run/dbus:/var/run/dbus \
-v /opt/apps/hassio222:/data \
-e SUPERVISOR_SHARE=/opt/apps/hassio -e SUPERVISOR_MACHINE=qemux86-64 \
-e SUPERVISOR_NAME=hassio_supervisor \
-e HOMEASSISTANT_REPOSITORY=homeassistant/qemux86-64-homeassistant \
ghcr.io/home-assistant/amd64-hassio-supervisor:2023.11.3
# 等待 homeassistant启动成功
# 删除除了homeassistant以外的容器
docker stop hassio_cli hassio_multicast hassio_audio hassio_dns hassio_observer hassio_supervisor homeassistant
docker rm hassio_cli hassio_multicast hassio_audio hassio_dns hassio_observer hassio_supervisor
# 再按上面的方式正常启动一次，这样就完美修复了
docker run -d --name hassio_supervisor --privileged \
--restart always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /var/run/dbus:/var/run/dbus \
-v /opt/apps/hassio:/data \
-e SUPERVISOR_SHARE=/opt/apps/hassio -e SUPERVISOR_MACHINE=qemux86-64 \
-e SUPERVISOR_NAME=hassio_supervisor \
-e HOMEASSISTANT_REPOSITORY=homeassistant/qemux86-64-homeassistant \
ghcr.io/home-assistant/amd64-hassio-supervisor:2023.11.3
&lt;/code&gt;&lt;/pre&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;Bad Request (&quot;invalid mount config for type &quot;bind&quot;: bind source path does not exist: 某个路径&quot;)&lt;/code&gt; 其中路径可能是docker.sock或是/run/udev
是因为你的系统可能有些不一样，这些套接字(socket)并没有在 &lt;code&gt;/var/run/&lt;/code&gt; 下面，而是在 &lt;code&gt;/run/&lt;/code&gt; 下面，你只需要将那两行 &lt;code&gt;-v&lt;/code&gt; 换成这些就行&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;-v /run/docker.sock:/run/docker.sock \
-v /run/dbus:/run/dbus \
-v /run/udev:/run/udev \
&lt;/code&gt;&lt;/pre&gt;
&lt;ol&gt;
&lt;li&gt;HomeKit扫码连接不上
左侧设置，系统，网络，取消掉auto，勾选br-lan，然后左侧开发者工具，重启&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;附加组件&lt;/h2&gt;
&lt;h3&gt;EMQX&lt;/h3&gt;
&lt;p&gt;既然都用到hassio了，那肯定会用到mqtt吧，那就启动一个emqx吧&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;docker run -d --name emqx -v /etc/localtime:/etc/localtime -p 1883:1883 -p 18083:18083 emqx/emqx
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;然后发现启动报错，因为Openwrt没有/etc/localtime和/etc/timezone&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;opkg install zoneinfo-asia
/etc/init.d/system reload
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;HACS&lt;/h3&gt;
&lt;p&gt;再装个HACS(的国内镜像hacs-china)吧，你可以理解成是插件仓库兼管理器&lt;br /&gt;
登录母机的ssh，cd到你的 &lt;code&gt;hassio&lt;/code&gt; 目录中的 &lt;code&gt;homeassistant&lt;/code&gt; 目录然后运行脚本&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cd /opt/apps/hassio/homeassistant
curl -fsSL get.hacs.vip | bash
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;然后左侧开发者工具，重启&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
</content:encoded></item><item><title>Python3打开新shell并进行多次交互</title><link>https://zyyme.com/python3-keep-shell.html</link><guid isPermaLink="true">https://zyyme.com/python3-keep-shell.html</guid><description>这时候有人要说了，执行shell用os.system()就行了嘛 需要返回值用subprocess.Popen().communicate()嘛 但是如果需要多次交互，就需要使用下面这种方法 import subprocess import os ssh = subprocess.Popen(&apos;ssh root@192.168.100.52&apos;, shell=</description><pubDate>Tue, 25 Jan 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;这时候有人要说了，执行shell用os.system()就行了嘛&lt;/p&gt;
&lt;p&gt;需要返回值用subprocess.Popen().communicate()嘛&lt;/p&gt;
&lt;p&gt;但是如果需要多次交互，就需要使用下面这种方法&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;import subprocess
import os
ssh = subprocess.Popen(&apos;ssh root@192.168.100.52&apos;, shell=True, stdout=subprocess.PIPE, stdin=subprocess.PIPE,stderr=subprocess.PIPE, universal_newlines=True)
os.read(ssh.stdout.fileno(), 10240)
ssh.stdin.write(&apos;ls\
&apos;)
ssh.stdin.flush()
print(os.read(ssh.stdout.fileno(), 10240))
ssh.stdin.write(&apos;pwd\
&apos;)
ssh.stdin.flush()
print(os.read(ssh.stdout.fileno(), 10240))
ssh.stdin.write(&apos;whoami\
&apos;)
ssh.stdin.flush()
print(os.read(ssh.stdout.fileno(), 10240))
ssh.stdin.write(&apos;exit\
&apos;)
ssh.stdin.flush()
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>配置Openwrt的ipv6</title><link>https://zyyme.com/openwrt-ipv6.html</link><guid isPermaLink="true">https://zyyme.com/openwrt-ipv6.html</guid><description>照图设置，需要使用Openwrt拨号，光猫改桥接的同时要开启ipv4+ipv6模式才能获取到v6地址 更新：如果是一级路由，将路由器通告和dhcpv6设置为服务器模式（混合包含了中继和服务器模式，实际工作的是服务器模式）如果是二级路由开dhcp则需要选择中继模式 如果想让设备被外网访问，还需要在防火墙加一条通信规则，限制地址仅ipv6，协议tcp+udp， </description><pubDate>Wed, 19 Jan 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;照图设置，需要使用Openwrt拨号，光猫改桥接的同时要开启ipv4+ipv6模式才能获取到v6地址&lt;br /&gt;
更新：如果是一级路由，将路由器通告和dhcpv6设置为服务器模式（混合包含了中继和服务器模式，实际工作的是服务器模式）如果是二级路由开dhcp则需要选择中继模式&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/assets/uploads/2022/01/op-ipv6.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;如果想让设备被外网访问，还需要在防火墙加一条通信规则，限制地址仅ipv6，协议tcp+udp，&amp;lt;label class=&quot;cbi-value-title&quot; for=&quot;cbid.firewall.cfg3192bd.src&quot;&amp;gt;源区域wan，目标区域所有，动作接受，也可以指定目标端口10000-65535来增强安全性&amp;lt;/label&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>配置Openwrt的IPSec服务</title><link>https://zyyme.com/openwrt-ipsec.html</link><guid isPermaLink="true">https://zyyme.com/openwrt-ipsec.html</guid><description>默认只能访问网关甚至完全没法用，只要找照这两张图设置好接口防火墙就行，缺点是这东西只能同时连接一个设备</description><pubDate>Tue, 18 Jan 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;默认只能访问网关甚至完全没法用，只要找照这两张图设置好接口防火墙就行，缺点是这东西只能同时连接一个设备&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/assets/uploads/2022/01/ipsec1.jpg&quot; alt=&quot;&quot; /&gt;&lt;br /&gt;
&lt;img src=&quot;/assets/uploads/2022/01/ipsec2.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
</content:encoded></item><item><title>PVE直通核显</title><link>https://zyyme.com/pve-igpu-passthrough.html</link><guid isPermaLink="true">https://zyyme.com/pve-igpu-passthrough.html</guid><description>Proxmox Virtual Environment 7.1-7 J4125 UHD600 使用 PVE 7.1-7 最新版本目前全网没有任何资料，折腾了三个晚上终于成了，现在写个教程 开启直通 首先有一个特别重要的事情，需要在bios里开启vt-d，csm，并且video必须是legacy，否则直通显卡后虚拟机直接无法启动，至于pve用什么方式启动这个无</description><pubDate>Fri, 14 Jan 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Proxmox Virtual Environment 7.1-7  J4125  UHD600&lt;/p&gt;
&lt;p&gt;使用  PVE 7.1-7 最新版本目前全网没有任何资料，折腾了三个晚上终于成了，现在写个教程&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;h3&gt;开启直通&lt;/h3&gt;
&lt;p&gt;首先有一个特别重要的事情，需要在bios里开启vt-d，csm，并且video必须是legacy，否则直通显卡后虚拟机直接无法启动，至于pve用什么方式启动这个无所谓&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;nano /etc/default/grub
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;把 GRUB_CMDLINE_LINUX_DEFAULT 那行改成这样&lt;br /&gt;
这是GVT模式，也就是共享模式，少部分cpu支持，但体验很好&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;GRUB_CMDLINE_LINUX_DEFAULT=&quot;quiet intel_iommu=on iommu=pt i915.enable_gvt=1 video=efifb:off&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这是独占模式，都支持，但显示器没有pve的控制台输出，也只能直通个一个虚拟机&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;GRUB_CMDLINE_LINUX_DEFAULT=&quot;quiet intel_iommu=on iommu=pt video=efifb:off&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;nano /etc/modules
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;把这些填进去&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd
kvmgt
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;允许不安全中断&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;nano /etc/modprobe.d/iommu_unsafe_interrupts.conf
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;把这行填进去&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;options vfio_iommu_type1 allow_unsafe_interrupts=1
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;避免死机&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;nano /etc/modprobe.d/kvm.conf
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;把这行填进去&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;options kvm ignore_msrs=1
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;更新引导和内核，然后重启pve&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;update-initramfs -u
update-grub
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;查看核显pcie设备id，记下来，待会用到&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;lspci -nn
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;从这里可以看出，核显位置是在00:02.0，并且id是8086:3185，下面的声卡同理&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;00:02.0 VGA compatible controller [0300]: Intel Corporation GeminiLake [UHD Graphics 600] [8086:3185] (rev 06)
00:0e.0 Audio device [0403]: Intel Corporation Celeron/Pentium Silver Processor High Definition Audio [8086:3198] (rev 06
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;上面改了GVT模式的，先看看核显支不支持GVT，这个文件夹下面有i915-GVT之类就是支持，可以同时直通给多个虚拟机同时用，并且直接在图形界面选了就行，后面不用看了&lt;br /&gt;
不支持的话，看上面重改/etc/default/grub换成独占模式，重启，然后继续后面的步骤&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ls /sys/bus/pci/devices/0000:00:02.0/mdev_supported_types
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;添加到vfio的配置中，如果hdmi无法显示，那请去掉这条配置&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;nano /etc/modprobe.d/vfio.conf
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;举个例子，两组id自己改成自己的&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;options vfio-pci ids=8086:3185,8086:3198
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;屏蔽驱动&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;nano /etc/modprobe.d/blacklist.conf
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;把这些填进去&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;blacklist snd_hda_intel
blacklist snd_hda_codec_hdmi
blacklist i915
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;提取 vbios.bin&lt;/h3&gt;
&lt;p&gt;如果您也是J4125，那么你可以直接用这个改好的 &amp;lt;a href=&quot;/assets/uploads/2022/01/j4125.zip&quot;&amp;gt;j4125.zip&amp;lt;/a&amp;gt;，解压了把它放到/usr/share/kvm中，然后配置虚拟机&lt;/p&gt;
&lt;p&gt;另外群友 心- 提供了另一个，如果你的4125怎么都不亮，可以试试这个vbios &lt;a href=&quot;/assets/uploads/2022/12/h9coab2l02.zip&quot;&gt;vbios_j4125.bin.zip&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;必须开csm并且设置成传统的video才能读出来，没有vbios大概也能用，懒的话可以先试试插HDMI能不能亮&lt;/p&gt;
&lt;p&gt;进去核显的位置并且提取vbios，举个例子，位置换成你自己的&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cd /sys/bus/pci/devices/0000:02:00.0
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;echo 1 &amp;gt; rom&lt;br /&gt;
cat rom &amp;gt; /usr/share/kvm/vbios.bin&lt;br /&gt;
echo 0 &amp;gt; rom&lt;/p&gt;
&lt;p&gt;安装工具&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;apt install gcc make git
cd ~
git clone https://github.com/awilliam/rom-parser
cd rom-parser
make
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;修复id不对的问题，举个例子，按提示改成你自己的id&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;./rom-fixer /usr/share/kvm/vbios.bin
Valid ROM signature found @0h, PCIR offset 40h
PCIR: type 0 (x86 PC-AT), vendor: 8086, device: 15f3, class: 020000
PCIR: revision 3, vendor revision: 201
Modify vendor ID 8086? (y/n): n
Modify device ID 15f3? (y/n): y
New device ID: 3185
Overwrite device ID with 3185? (y/n): y
Valid ROM signature found @f000h, PCIR offset 1ch
PCIR: type 3 (EFI), vendor: 8086, device: 15f3, class: 000000
PCIR: revision 3, vendor revision: 902
EFI: Signature Valid, Subsystem: Boot, Machine: X64
Modify vendor ID 8086? (y/n): n
Modify device ID 15f3? (y/n): y
New device ID: 3185
Overwrite device ID with 3185? (y/n): y
Last image
ROM checksum is invalid, fix? (y/n): y
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;配置虚拟机&lt;/h3&gt;
&lt;p&gt;我这里是一个win10 ltsc的虚拟机，虚拟机id是100，请注意下面的命令里的虚拟机id改成你自己的&lt;br /&gt;
在图形界面上虚拟机硬件添加pci设备，只需要勾选PCI-Express&lt;br /&gt;
回到命令行，改虚拟机配置文件&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;nano /etc/pve/qemu-server/100.conf
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;在显卡那条hostpci的最后加上,romfile=vbios.bin&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;hostpci0: 0000:00:02.0,pcie=1,romfile=vbios.bin
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果上面的方法不行，那就删掉hostpci0那行，在文件最上面加上这行，并且把 显示 设置成 无，不加romfile大概也能用，可以先试试&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;args: -device vfio-pci,host=00:02.0,addr=0x02,x-igd-gms=1,romfile=vbios.bin
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;然后开虚拟机装驱动就完事了，虚拟机必须是SeaBIOS的传统启动，此处显卡驱动必须得是26.20.100.7262版本的，不然就会黄三角，已经往咩咩乐园群共享传了一份，可以去下载在设备管理器手动装&lt;br /&gt;
测试过好了之后，去编辑把主gpu勾上，这样虚拟机的bios都会显示在显示器上了&lt;/p&gt;
&lt;h3&gt;其他&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;n5105实测没法直通，通进去了也是没有任何硬件加速的，intel在驱动里下毒了&lt;/li&gt;
&lt;li&gt;虚拟机里声卡明明有设备有驱动用不了，其实不是声卡驱动问题，而是要关机物理机再开机，第一次开直通的虚拟机的时候声卡就是可以用的，但是虚拟机再次开机声卡就用不了了，又是intel搞的鬼&lt;/li&gt;
&lt;li&gt;顺便扯一下，在bios的 Device... -&amp;gt; OVMF... 中可以修改虚拟显示器的分辨率，或者使用spice都可以修改默认的800x600&lt;/li&gt;
&lt;/ol&gt;
</content:encoded></item><item><title>Btrfs修复</title><link>https://zyyme.com/btrfs-fix.html</link><guid isPermaLink="true">https://zyyme.com/btrfs-fix.html</guid><description>看到这篇文章，大概都是看到这条错误开始的 wrong fs type, bad option, bad superblock on /dev/sdx, missing codepage or helper program, or other error. ---------- 因为nas电源可能不太够，在插入硬盘的时候导致正在读写的主硬盘掉盘了，重启后群辉报</description><pubDate>Mon, 10 Jan 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;看到这篇文章，大概都是看到这条错误开始的&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;wrong fs type, bad option, bad superblock on /dev/sdx, missing codepage or helper program, or other error.
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;&amp;lt;!--more--&amp;gt;&lt;/h2&gt;
&lt;p&gt;因为nas电源可能不太够，在插入硬盘的时候导致正在读写的主硬盘掉盘了，重启后群辉报错，存储空间只读，ssh上去重新挂载了下是可以挂读写的，因为不可能吧数据全部拷贝出来格式化，因为网上几乎0资料，摸索到凌晨3点，下面记录一下修复操作&lt;/p&gt;
&lt;p&gt;ssh上去，换成root权限来执行&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo su
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;检查一下错误日志&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;dmesg | grep BTRFS
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;发现有以下错误&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;btrfs error (device dm-2): qgroup generation mismatch, marked as inconsistent
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;卸载分区&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;df -h
umount -fl /dev/mapper/cachedev_2
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;进行分区修复，需要一会&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;btrfs check --repair /dev/mapper/cachedev_2
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果上面那条秒退出，那么可以试试下面这两条再去试试上一条&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;btrfs check --clear-space-cache v1 /dev/mapper/cachedev_2
btrfs check --clear-space-cache v2 /dev/mapper/cachedev_2
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;修超级快，不需要修会自动跳过的&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;btrfs rescue super-recover -v /dev/mapper/cachedev_2
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;计算校验，需要很长时间，没有输出，处理完会退出&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;btrfs scrub start -Bf /dev/mapper/cachedev_2
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;可以开一个新终端用这条命令检查计算校验的进度&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;btrfs scrub status /dev/mapper/cachedev_2
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;最后，清错误记录&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;btrfs rescue zero-log /dev/mapper/cachedev_2
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;清错误计数器&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;btrfs dev stats -z /dev/mapper/cachedev_0
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;重启nas&lt;/p&gt;
&lt;p&gt;明明都没有错误了，还是只读？不要慌&lt;br /&gt;
点开存储管理器，点报警的存储空间右边三个点，转换为读/写&lt;br /&gt;
然后无论再怎么重启都能正常读写了&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;2022年3月9日，Pve的Btrfs突然提示空间不足，df -h显示还有4G可用，重启了一下，就显示可用0了，实际上总空间减去已用还有4G&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Filesystem                Size      Used Available Use% Mounted on
/dev/sdb3                29.3G     25.9G      0  100% /mnt/sdb3
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;看了一下 btrfs fi df /mnt/sdb3 发现Metadata要满了，那么怎么扩展Btrfs的Metadata呢？&lt;/p&gt;
&lt;p&gt;尝试了一下 btrfs bal start /mnt/sdb3 进行清理优化，提示空间不足，无法进行&lt;/p&gt;
&lt;p&gt;建一个5G的文件在另一个硬盘，并用 losetup 把它挂成一个虚拟硬盘&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;dd if=/dev/zero of=/mnt/sda1/tmpBtrfs.img bs=1G count=5
losetup -v -f /mnt/sda1/tmpBtrfs.img
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;把这个虚拟盘加到当前有问题的存储空间中&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;btrfs device add /dev/loop1 /mnt/sdb3
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果无法操作显示只读，那么需要这样清掉缓存&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;btrfs check --clear-space-cache v1 /dev/sdb3
btrfs check --clear-space-cache v2 /dev/sdb3
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这时候去 df -h显示已经正常了，只要进行一下清理优化，Metdata就会自动扩展（不需要跑完全程，跑一会Ctrl + C掐掉再去看其实已经增加了）&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;btrfs bal start /mnt/sdb3
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这时候这5G虚拟盘就已经完成他的使命了，把它卸掉&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;btrfs device delete /dev/loop1 /mnt/sdb3
losetup -d /mnt/sda1/tmpBtrfs.img
rm /mnt/sda1/tmpBtrfs.img
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;p&gt;用btrfs组raid的时候有时莫名奇妙就挂不上去了，明明盘都在线却显示&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;BTRFS warning :  devid 2 uuid 43870ae8-44c9-4f4d-9463-0917b94bc581 is missing
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这时候只要运行一下 &lt;code&gt;blkid&lt;/code&gt; 显示一下所有分区的uuid，就能正常挂载了，咩咩也不知道是什么原理&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;这是一些额外的内容&lt;/h2&gt;
&lt;h3&gt;压缩&lt;/h3&gt;
&lt;p&gt;挂载时&lt;code&gt;-o&lt;/code&gt;加上参数&lt;code&gt;compress=zlib&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;手动压缩(空间回收 清理)&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;btrfs filesystem defragment -r -v  -czstd 挂载点
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;子卷&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;# 创建
btrfs subvolume create 路径
# 删除
btrfs subvolume delete 路径
# 显示所有
btrfs subvolume show
# 显示单个
btrfs subvolume show 路径
# 挂载成压缩的
mount -o compress=zlib,subvol=子卷名字 主盘的设备 路径
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;快照&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;非常不建议用跟挂载点来装文件，而是建一个子卷@来作为根节点使用，这样方便快照处理&lt;/strong&gt;&lt;br /&gt;
&lt;strong&gt;然后在这个@下创建一个.snapshots文件夹，把/@snapshots子卷挂上去用&lt;/strong&gt;&lt;br /&gt;
需要先创建一个子卷来存储快照，比如&lt;code&gt;/opt&lt;/code&gt;是一个btrfs分区的根挂载点&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# 如果你不使用采纳上述建议，可以直接创建在根节点，和文件放在一起
btrfs subvol create /opt/@snapshots
# 如果你使用上述方案，你需要先挂载他实际的根
mkdir /mnt/realroot
mount -t btrfs -o subvol=/ /dev/sdb4 /mnt/realroot
# 创建快照子卷
btrfs subvol create /mnt/realroot/@snapshots
# 创建用于存文件的子卷，并设置成默认券
btrfs subvol create /mnt/realroot/@
btrfs subvolume set-default /mnt/realroot/@
# 并且把它重新挂载一下，挂载默认的子卷不需要指定名字，记得写到fstab
mount -t btrfs /dev/sdb4 /opt
mkdir /opt/.snapshots
mount -t btrfs -o subvol=/@snapshots /dev/sdb4 /opt/.snapshots
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;照个快照(只读的，去掉&lt;code&gt;-r&lt;/code&gt;可以变成读写的)&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;btrfs subvol snapshot -r /opt /opt/.snapshots/`date +%Y-%m-%d`
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;删除快照&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;btrfs subvol delete /opt/.snapshots/快照的那个目录
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;备份到其他地方（只支持只读快照）这里使用zstd快速压缩&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;btrfs send /opt/.snapshots/快照的那个目录 | zstd -T0 -9 -c &amp;gt; 保存路径
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;还原&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# 这个操作需要在跟节点上操作，比如说得这样挂载
mount -t btrfs -o subvol=/ /dev/sdb4 /mnt/realroot
# 注意，这还原的依然是个快照，只读的，比如你备份的快照是2025-03-01，那他就会输出到保存路径下的2025-03-01里
zstd -d 备份文件 -c | btrfs receive 保存路径
# 因为无法将文件还原到btrfs真正的根节点上，所以还原到@上
# 如果你有@，先删掉，或者mv一下原地改个名字来备份也是可以的
btrfs subvol delete @
btrfs subvol snapshot 你最新的快照 @
btrfs subvolume set-default @
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;请举一反三，简单的说，就是吧快照再快照一遍出来用，当你有多次增量快照时，你把快照子卷都还原回去后，直接快照最新的那个来用就行&lt;/p&gt;
&lt;p&gt;增量拷贝&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;btrfs send -p /opt/.snapshots/旧快照 /opt/.snapshots/新快照 | btrfs receive 保存路径
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;空间限制&lt;/h3&gt;
&lt;p&gt;有个问题，就是程序拿不到这个限制后的剩余空间，而是拿到全部的&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# 开启功能
btrfs quota enable 路径
# 设置限制最大占10G 解除限制设置成none
btrfs qgroup limit 10G 路径
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;raid&lt;/h3&gt;
&lt;p&gt;使用btrfs，可以实现多盘raid0并且空间利用率100%，当然了数据火葬场（&lt;br /&gt;
直接多盘格式化的话就像是jbod那样连在一起的&lt;br /&gt;
可以看这个视频，也可以看下面的内容 https://www.bilibili.com/video/BV1g14y1h7B3&lt;br /&gt;
先给大盘sdg分区，第一个分区从2048到+按第二块盘sdh的block数-1，剩下的分一个区&lt;br /&gt;
格式化&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;mkfs.btrfs -L wxr0 -m raid0 -d raid0 /dev/sdh /dev/sdg1
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;给他挂载到一个目录，然后&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;btrfs device add /dev/sdg2 挂载点
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这样就得到了一个空间利用率100%的raid0，前面的部分是两个盘的raid0，后面连接着大盘剩下的空间&lt;br /&gt;
简单点说，就相当于在两块盘上做了一个两盘raid0和一个单盘raid1，再把这两做个jbod，但这个过程无需系统内核软raid参与，如你所见，视频是在openwrt上进行这种神仙操作的&lt;br /&gt;
作为缓存盘，速度和容量优先，要说安全性，btrfs有crc校验能告诉你哪些文件坏了&lt;/p&gt;
&lt;h3&gt;恢复被误删但还打开着的文件&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;lsof | grep deleted | awk &apos;!a[$2]++{print(&quot;deleted /proc/&quot;$2&quot;/fd&quot;); system(&quot;ls -l /proc/&quot;$2&quot;/fd&quot;)}&apos; | grep deleted
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;deleted开头的行则为上方文件指针所在路径&lt;br /&gt;
说人话就是这样恢复 cp &lt;code&gt;要恢复的文件上面deleted开头右侧的路径&lt;/code&gt;/&lt;code&gt;要恢复的文件箭头左侧的那一个数字&lt;/code&gt; &lt;code&gt;保存的文件名&lt;/code&gt;&lt;br /&gt;
比如&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;deleted /proc/673140/fd
lrwx------ 1 root root 64 Apr 27 09:22 35 -&amp;gt; /var/lib/pve/local-btrfs/images/103/vm-103-disk-0/disk.raw (deleted)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;恢复到/var/lib/pve/local-btrfs/images/103/vm-103-disk-0/disk.raw1&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cp /proc/673140/fd/35 /var/lib/pve/local-btrfs/images/103/vm-103-disk-0/disk.raw1
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;关于DUP&lt;/h3&gt;
&lt;p&gt;目前默认btrfs会将元数据（Metadata记录了文件存在哪里）和文件系统数据（System）使用DUP存储，哪怕你是单盘，DUP会在同一块盘上存储两份一样的数据，以保证在一份坏的时候还可以读取零一份，这会比raid1更加自由和安全，但是会影响性能，或是让本就拮据的空间更加雪上加霜，可以在格式化时指定为single模式（只存一份），在使用btrfs作为pve的虚拟硬盘空间的时候，建议使用single&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;mkfs.btrfs -m single -d single -L 卷标 硬盘或分区的设备路径
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;其中，当前文件系统的配置可以这样查看（还能查看uuid用于写fstab）&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;btrfs filesystem show
btrfs filesystem usage 挂载点
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;调整大小&lt;/h3&gt;
&lt;p&gt;是的，分区不只是可以放大，还能缩小&lt;br /&gt;
当然了，&lt;code&gt;gparted&lt;/code&gt;确实可以实现调整大小（并且和命令一样）但是他不会维护你的分区uuid，会导致系统盘直接无法启动，所以需要用&lt;code&gt;gisk&lt;/code&gt;操作一下&lt;br /&gt;
先换成&lt;code&gt;root&lt;/code&gt;，开始操作，我这需要操作的分区为&lt;code&gt;/dev/sdb&lt;/code&gt;的第4个分区，也就是&lt;code&gt;/dev/sdb4&lt;/code&gt;，请举一反三&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;gdisk /dev/sdb
# 查看分区
p
i
# 输入你希望修改的分区号，并记录输出的Partition unique GUID
4
# 退出
q
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;此时可以用&lt;code&gt;gparted&lt;/code&gt;去调分区大小，或者按下面操作，要是出错，那就是缩太小了，调大点即可&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# 先把分区挂在到一个地方
mkdir sparkle
mount /dev/sdb4 sparkle
# 调整btrfs大小到5100M 可以带单位，最大就写max
btrfs filesystem resize 5100M sparkle
# 卸载，调整分区大小
umount /dev/sdb4
gdisk /dev/sdb
# 记住你要修改的分区的Start和Code
p
i
# 为了避免你刚才没有记录Partition unique GUID，现在可以记录一下
4
d
# 输入你希望修改的分区号
4
n
# 输入你希望修改的分区号
4
# 输入你刚记录的Start
1187840
# 输入分区大小，为了保险可以比btrfs的大小稍微大一点, 扩大到最大直接回车就行
+5200M
# 输入你刚记录的Code
8300
x
c
# 输入你希望修改的分区号
4
# 输入你之前记录的Partition unique GUID
B0B70132-B2DA-0941-9E7E-F57B87585945
m
# 这一步会写入磁盘，如果前面做错了可以直接按Ctrl+C退出
w
y
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果你用gparted调好了，那就按照下面的步骤来&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# 卸载分区
umount /dev/sdb4
gdisk /dev/sdb
x
c
# 输入你希望修改的分区号
4
# 输入你之前记录的Partition unique GUID
B0B70132-B2DA-0941-9E7E-F57B87585945
m
# 这一步会写入磁盘，如果前面做错了可以直接按Ctrl+C退出
w
y
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这样就调整完毕了&lt;br /&gt;
另外提醒一下，如果你dd到另一个盘，要调大，需要在gdisk里先执行&lt;code&gt;x&lt;/code&gt;,&lt;code&gt;e&lt;/code&gt;,&lt;code&gt;m&lt;/code&gt;来把分区表调整到实际大小，然后再执行分区大小调整，再执行btrfs调整，请举一反三&lt;/p&gt;
&lt;h3&gt;检查并修复文件损坏&lt;/h3&gt;
&lt;p&gt;如果因为意外断电或是其他原因导致文件系统读写出现io错误或是其他的问题，并且在硬盘smart报告正常没有坏道的情况下，可以使用校验对损坏的部分进行修复，如果smart报告有坏道，建议是先全盘dump或是备份能复制出来的文件&lt;br /&gt;
比如在 &lt;code&gt;dmesg&lt;/code&gt; 时出现像这样的错误&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;[7773336.920021] BTRFS warning (device nvme0n1p3): csum failed root 256 ino 358 off 60783452160 csum 0x6a963d6c expected csum 0x9af01a40 mirror 1
[7773336.920029] BTRFS error (device nvme0n1p3): bdev /dev/nvme0n1p3 errs: wr 0, rd 0, flush 0, corrupt 11518, gen 0
[7773336.920031] BTRFS warning (device nvme0n1p3): direct IO failed ino 358 op 0x0 offset 0xe26f9e000 len 4096 err no 10
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;首先先将分区挂载，这个检查的过程可以在线进行&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# 开始检查
btrfs scrub start 挂载点位置
# 查看检查的进度
btrfs scrub status 挂载点位置
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这是一条用于PVE服务器的sn770 2T，写入478T，虽然smart没有报告任何错误，但看起来已有大量无法修复的错误&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;UUID:             47102369-5280-47ee-8f3e-62030bf039e6
Scrub started:    Mon Aug 26 15:05:50 2024
Status:           finished
Duration:         0:08:57
Total to scrub:   1.23TiB
Rate:             2.15GiB/s
Error summary:    csum=9609
  Corrected:      0
  Uncorrectable:  9609
  Unverified:     0
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>在Termux上搭建Samba服务</title><link>https://zyyme.com/smb-on-termux.html</link><guid isPermaLink="true">https://zyyme.com/smb-on-termux.html</guid><description>pkg install unstable-repo pkg install samba nano mkdir $PREFIX/etc/samba cp /data/data/com.termux/files/usr/share/doc/samba/smb.conf.example $PREFIX/etc/samba/smb.conf 设置用户 sudo sm</description><pubDate>Fri, 31 Dec 2021 00:00:00 GMT</pubDate><content:encoded>&lt;pre&gt;&lt;code&gt;pkg install unstable-repo
pkg install samba nano
mkdir $PREFIX/etc/samba
cp /data/data/com.termux/files/usr/share/doc/samba/smb.conf.example $PREFIX/etc/samba/smb.conf
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;设置用户&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo smbpasswd -a 用户名
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;然后输入密码来设置用户&lt;/p&gt;
&lt;p&gt;修改配置文件&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;nano $PREFIX/etc/samba/smb.conf
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;前排提示，查找的快捷键是ctrl + w&lt;/p&gt;
&lt;p&gt;把 map to guest 的值改成 Bad User 和把 guest ok 的值改成 yes 就可以运行匿名登录&lt;br /&gt;
吧 path 的值改成 /storage/emulated/0 就是映射到sdcard&lt;br /&gt;
默认的端口号是4445，不要修改，改成445需要root启动但是root无法启动，所以使用端口转发&lt;/p&gt;
&lt;p&gt;启动&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;smbd
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;开启端口转发 需要root 可以让windows愉快连接&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo iptables -t nat -A PREROUTING -p tcp --dport 445 -j REDIRECT --to-port 4445
sudo iptables -t nat -A OUTPUT -p tcp --dport 445 -j REDIRECT --to-port 4445
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>在M1 Pro Mac上安装Arm64的Node.js</title><link>https://zyyme.com/mac-install-arm64-nodejs.html</link><guid isPermaLink="true">https://zyyme.com/mac-install-arm64-nodejs.html</guid><description>官网下载的安装的是x8664的版本，虽然说不是不能用，但是编译速度慢了几乎一半，这不能忍，那么就重新编译一个arm64的安装上吧 如果装过官网的dmg，可以用下面的命令把node删的一干二净 sudo npm uninstall npm -g sudo rm -rf /usr/local/lib/node /usr/local/lib/nodemodules</description><pubDate>Fri, 19 Nov 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;官网下载的安装的是x86_64的版本，虽然说不是不能用，但是编译速度慢了几乎一半，这不能忍，那么就重新编译一个arm64的安装上吧&lt;/p&gt;
&lt;p&gt;如果装过官网的dmg，可以用下面的命令把node删的一干二净&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo npm uninstall npm -g
sudo rm -rf /usr/local/lib/node /usr/local/lib/node_modules /var/db/receipts/org.nodejs.*
sudo rm -rf /usr/local/include/node /Users/$USER/.npm
sudo rm /usr/local/bin/node
sudo rm /usr/local/share/man/man1/node.1\
sudo rm /usr/local/lib/dtrace/node.d
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;然后安装brew&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;/bin/bash -c &quot;$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;用brew来安装nvm用来自动编译node的指定版本&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;brew install nvm
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;需要在 ~/.zshrc 加一些东西让他可以运行&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;nano ~/.zshrc
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;在最后加上这些内容然后保存&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;export NVM_NODEJS_ORG_MIRROR=http://npm.taobao.org/mirrors/node
export NVM_IOJS_ORG_MIRROR=http://npm.taobao.org/mirrors/iojs
export NVM_DIR=&quot;$HOME/.nvm&quot;
[ -s &quot;/opt/homebrew/opt/nvm/nvm.sh&quot; ] &amp;amp;amp;&amp;amp;amp; . &quot;/opt/homebrew/opt/nvm/nvm.sh&quot;
[ -s &quot;/opt/homebrew/opt/nvm/etc/bash_completion.d/nvm&quot; ] &amp;amp;amp;&amp;amp;amp; . &quot;/opt/homebrew/opt/nvm/etc/bash_completion.d/nvm&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;安装你想要的node版本，等他编译完就好了，M1 Pro编译挺快的&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;nvm install v14.18.1
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;装pnpm，可以节省大量空间&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;npm i -g pnpm
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;然后在需要npm install的时候换成这条&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;pnpm i --shamefully-hoist
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果有比如chromedriver这种不兼容的东西，就这样&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;pnpm i --shamefully-hoist --ignore-scripts
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果遇到node-sass出错，就这样&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;pnpm rebuild node-sass
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;设置cnpm镜像，不要装cnpm这个垃圾&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;npm config set registry http://registry.npm.taobao.org
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>Android飞行模式不关闭WiFi</title><link>https://zyyme.com/android%E9%A3%9E%E8%A1%8C%E6%A8%A1%E5%BC%8F%E4%B8%8D%E5%85%B3%E9%97%ADwifi.html</link><guid isPermaLink="true">https://zyyme.com/android%E9%A3%9E%E8%A1%8C%E6%A8%A1%E5%BC%8F%E4%B8%8D%E5%85%B3%E9%97%ADwifi.html</guid><description>在正常情况下，打开飞行模式将会关闭WiFi，那么会导致断网，特别是在使用平板电脑的时候，使用WiFi时可以关掉蜂窝网络来节省电量（因为不像手机那样要拿来接电话）。 以下命令可以修改系统设置达到在飞行模式下不关闭WiFi，可能需要Root 先获取一下默认会关掉的内容 settings get global airplanemoderadios 比如我这里输出的</description><pubDate>Mon, 25 Oct 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;在正常情况下，打开飞行模式将会关闭WiFi，那么会导致断网，特别是在使用平板电脑的时候，使用WiFi时可以关掉蜂窝网络来节省电量（因为不像手机那样要拿来接电话）。&lt;/p&gt;
&lt;p&gt;以下命令可以修改系统设置达到在飞行模式下不关闭WiFi，可能需要Root&lt;/p&gt;
&lt;p&gt;先获取一下默认会关掉的内容&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;settings get global airplane_mode_radios
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;比如我这里输出的是cell,bluetooth,wifi,nfc,wimax&lt;/p&gt;
&lt;p&gt;然后将返回的内容删掉你不想关的，再存回去，我这里删掉了蓝牙和WiFi和NFC，相当于飞行模式只控制蜂窝网络的开关&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;settings put global airplane_mode_radios cell,wimax
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>Attiny85 Arduino Digispark Micronucleus</title><link>https://zyyme.com/attiny85-arduino-digispark-micronucleus.html</link><guid isPermaLink="true">https://zyyme.com/attiny85-arduino-digispark-micronucleus.html</guid><description>本文章将教会你如何给Attiny85烧写Micronucleus让他支持Arduino，就像Digispark那样 先下载Micronucleus，推荐用1.x的版本，因为2.x的有时程序就莫名奇妙就没掉了，有时甚至连Micronucleus自己都把自己给干掉了，在下面下一个你喜欢的 稳定的1.11版 micronucleus-1.11-upgrade.he</description><pubDate>Sat, 16 Oct 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;本文章将教会你如何给Attiny85烧写Micronucleus让他支持Arduino，就像Digispark那样&lt;/p&gt;
&lt;p&gt;先下载Micronucleus，推荐用1.x的版本，因为2.x的有时程序就莫名奇妙就没掉了，有时甚至连Micronucleus自己都把自己给干掉了，在下面下一个你喜欢的&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;稳定的1.11版 &amp;lt;a class=&quot;js-navigation-open Link--primary&quot; title=&quot;micronucleus-1.11-upgrade.hex&quot; href=&quot;https://github.com/micronucleus/micronucleus/blob/v1.11/upgrade/releases/micronucleus-1.11-upgrade.hex&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-pjax=&quot;#repo-content-pjax-container&quot;&amp;gt;micronucleus-1.11-upgrade.hex&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;没有5秒等待烧录需要P0接地插入烧录 &amp;lt;a class=&quot;js-navigation-open Link--primary&quot; title=&quot;micronucleus-1.11-entry-jumper-pb0-upgrade.hex&quot; href=&quot;https://github.com/micronucleus/micronucleus/blob/v1.11/upgrade/releases/micronucleus-1.11-entry-jumper-pb0-upgrade.hex&quot; data-pjax=&quot;#repo-content-pjax-container&quot;&amp;gt;micronucleus-1.11-entry-jumper-pb0-upgrade.hex&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;插入后P5接地一次后进入烧录&lt;br /&gt;
&amp;lt;div class=&quot;flex-auto min-width-0 col-md-2 mr-3&quot; role=&quot;rowheader&quot;&amp;gt;&amp;lt;span class=&quot;css-truncate css-truncate-target d-block width-fit&quot;&amp;gt;&amp;lt;a class=&quot;js-navigation-open Link--primary&quot; title=&quot;micronucleus-1.11-entry-ext-reset-upgrade.hex&quot; href=&quot;https://github.com/micronucleus/micronucleus/blob/v1.11/upgrade/releases/micronucleus-1.11-entry-ext-reset-upgrade.hex&quot; data-pjax=&quot;#repo-content-pjax-container&quot;&amp;gt;micronucleus-1.11-entry-ext-reset-upgrade.hex&amp;lt;/a&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;最新版2.5可用空间多600字节左右 &amp;lt;a class=&quot;js-navigation-open Link--primary&quot; title=&quot;t85_default.hex&quot; href=&quot;https://github.com/micronucleus/micronucleus/blob/master/firmware/releases/t85_default.hex&quot; data-pjax=&quot;#repo-content-pjax-container&quot;&amp;gt;t85_default.hex&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
你得先有个arduino，比如arduino uno，用来当编程器，在自带的示例中烧录ArduinoISP&lt;/p&gt;
&lt;p&gt;打开 &lt;code&gt;arduino软件路径/hardware/tools/avr/bin&lt;/code&gt;，然后在文件管理器地址栏输入cmd按回车打开命令行&lt;/p&gt;
&lt;p&gt;这样连接好你的Arduino和Attiny85：
GND -&amp;gt; GND 脚4
5v -&amp;gt; 5v 脚8
10 -&amp;gt; P5  脚1
11 -&amp;gt; P0 脚5
12 -&amp;gt; P1 脚6
13 -&amp;gt; P2 脚7&lt;/p&gt;
&lt;p&gt;找来一个图，请无视下面那个没用的电容&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.yiboard.com/data/attachment/forum/202012/21/152604fsqwwyljpbtt5n5r.png&quot; alt=&quot;152604fsqwwyljpbtt5n5r.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;烧录命令（端口号可以在Arduino里看，比如COM4）：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;avrdude -C ..\etc\avrdude.conf -v -pattiny85 -carduino -P端口号 -b19200 -Uflash:w:下载的hex文件的路径:i -U lfuse:w:0xE1:m -U hfuse:w:0xDD:m -U efuse:w:0xFE:m  
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;另外，如果想释放P5用来当普通io用的话，可以改熔丝位来锁死芯片，锁死后只能用高压编程器进行烧录，当然了，依然可以用Micronucleus烧录（因为是单片机自己写自己），这是命令，在执行之前请务必确认刚刚已经烧进去了并且完全没问题了：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;avrdude -C ..\etc\avrdude.conf -v -pattiny85 -carduino -P端口号 -b19200 -U hfuse:w:0x5F:m  
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;https://image.lceda.cn/pullimage/y1atZFxp8iialSaSgFB91qWHKvYEqSVPQPO7RGZB.jpeg&quot; alt=&quot;y1atZFxp8iialSaSgFB91qWHKvYEqSVPQPO7RGZB.jpeg&quot; /&gt;&lt;/p&gt;
&lt;p&gt;来看个成品，这个金属按键大小和脚宽度正合适，不会影响烧录夹子使用，用来按一下拉低P5复位进入烧录模式，当然了，要是改了熔丝，这功能就没法用了&lt;/p&gt;
</content:encoded></item><item><title>搭建socks5服务</title><link>https://zyyme.com/gost-socks5-server.html</link><guid isPermaLink="true">https://zyyme.com/gost-socks5-server.html</guid><description>因为某些原因，常常需要一个socks5服务端来做跳板，这里推荐一个叫gost的程序，它可以搭建一个socks5服务 无验证的服务端： gost -L socks5://:端口 有验证的： gost -L &apos;socks5://用户名:密码@:端口&apos; 带黑名单： gost -L &apos;socks5://用户名:密码@:端口?bypass=ip段/24&apos; 只允许走tg</description><pubDate>Fri, 24 Sep 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;因为某些原因，常常需要一个socks5服务端来做跳板，这里推荐一个叫gost的程序，它可以搭建一个socks5服务&lt;/p&gt;
&lt;p&gt;无验证的服务端：&lt;/p&gt;
&lt;p&gt;gost -L socks5://:端口&lt;/p&gt;
&lt;p&gt;有验证的：&lt;/p&gt;
&lt;p&gt;gost -L &apos;socks5://用户名:密码@:端口&apos;&lt;/p&gt;
&lt;p&gt;带黑名单：&lt;/p&gt;
&lt;p&gt;gost -L &apos;socks5://用户名:密码@:端口?bypass=ip段/24&apos;&lt;/p&gt;
&lt;p&gt;只允许走tg的白名单：&lt;/p&gt;
&lt;p&gt;gost -L &apos;socks5://用户名:密码@:端口?bypass=~91.108.56.0/22,91.108.4.0/22,109.239.140.0/24,149.154.160.0/20&apos;&lt;/p&gt;
</content:encoded></item><item><title>PowerDesigneri常用VBS脚本</title><link>https://zyyme.com/powerdesigneri%E5%B8%B8%E7%94%A8vbs%E8%84%9A%E6%9C%AC.html</link><guid isPermaLink="true">https://zyyme.com/powerdesigneri%E5%B8%B8%E7%94%A8vbs%E8%84%9A%E6%9C%AC.html</guid><description>首先按 Ctrl + Shift + X 打开脚本窗口，把需要的脚本贴进去点Run 将名称转为注释 Option Explicit ValidationMode = True InteractiveMode = imBatch Dim mdl &apos; the current model &apos; get the current active model Set mdl</description><pubDate>Mon, 09 Aug 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;首先按 Ctrl + Shift + X 打开脚本窗口，把需要的脚本贴进去点Run&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;将名称转为注释&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Option Explicit
ValidationMode = True
InteractiveMode = im_Batch
Dim mdl &apos; the current model
&apos; get the current active model
Set mdl = ActiveModel
If (mdl Is Nothing) Then
MsgBox &quot;There is no current Model &quot;
ElseIf Not mdl.IsKindOf(PdPDM.cls_Model) Then
MsgBox &quot;The current model is not an Physical Data model. &quot;
Else
ProcessFolder mdl
End If
&apos; This routine copy name into comment for each table, each column and each view
&apos; of the current folder
Private sub ProcessFolder(folder)
Dim Tab &apos;running table
for each Tab in folder.tables
if not tab.isShortcut then
&apos; 表名赋给表注释
tab.comment = tab.name
Dim col &apos; running column
for each col in tab.columns
&apos; 列名赋给列注释 引入的不能操作做错误处理
on error resume next
col.comment= col.name
next
end if
next
Dim view &apos;running view
for each view in folder.Views
if not view.isShortcut then
view.comment = view.name
end if
next
&apos; go into the sub-packages
Dim f &apos; running folder
For Each f In folder.Packages
if not f.IsShortcut then
ProcessFolder f
end if
Next
end sub
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>夜视宝 RT5350 WiFi图传破解</title><link>https://zyyme.com/rt5350-wifi-video-transmission.html</link><guid isPermaLink="true">https://zyyme.com/rt5350-wifi-video-transmission.html</guid><description>拆解视频： BV1Zf4y1G74v 这是老王家卖的一个汽车摄像头用的wifi图传，内置cvbs（也就是av复合视频）转usb，然后可以通过一个叫 夜视宝 的app来查看，虽说app历史久远，但Android10亲测使用正常 内置了一个防反带保险的宽电压降压模块，7-12v应该都行，5v可能带不动，我选择直接绕过他5v接板子上 白色插座按上图的方向接线方式（</description><pubDate>Thu, 05 Aug 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;拆解视频：&amp;lt;a href=&quot;https://www.bilibili.com/video/BV1Zf4y1G74v&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;BV1Zf4y1G74v&amp;lt;/a&amp;gt;&lt;/p&gt;
&lt;p&gt;这是老王家卖的一个汽车摄像头用的wifi图传，内置cvbs（也就是av复合视频）转usb，然后可以通过一个叫 &amp;lt;a href=&quot;https://dlc2.pconline.com.cn/download.jsp?target=0194N0XC3lw6Pz643AJ&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;夜视宝&amp;lt;/a&amp;gt; 的app来查看，虽说app历史久远，但Android10亲测使用正常&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/assets/uploads/2021/08/5350vt1.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;内置了一个防反带保险的宽电压降压模块，7-12v应该都行，5v可能带不动，我选择直接绕过他5v接板子上&lt;/p&gt;
&lt;p&gt;白色插座按上图的方向接线方式（两个正极都要接，负极随便接一个就行）&lt;/p&gt;
&lt;p&gt;负极       正极     TX 负极&lt;br /&gt;
AV输入 麦克风 RX 负极&lt;/p&gt;
&lt;p&gt;如果不想深入了解，就不用往下看了&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/assets/uploads/2021/08/5350vt2.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;画板子的工程师挺良心的，插座和焊盘都标注了是干什么的，其中VIN是电源输入，输入5V即可，TTL波特率9600&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/assets/uploads/2021/08/5350vt3.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;原理很简单，AV信号输入由那个&amp;lt;del&amp;gt;呱太LOGO的&amp;lt;/del&amp;gt;AMT630解码，再由V399转成USB，实测不能在左下角USB直接接电脑（从上往下红白绿黑）此处的5v与供电VIN不相连&lt;/p&gt;
&lt;p&gt;用的是Ralink的SDK固件魔改的，连上他 HDAV_* 的WiFi，在它的IP 192.168.10.123下有三个端口监听&lt;/p&gt;
&lt;p&gt;TCP 23      Telnet，密码不知道，固件加密，弄了两天没能解开，app混淆了&lt;/p&gt;
&lt;p&gt;TCP 7060  视频流，&lt;/p&gt;
&lt;p&gt;TCP 9060  只能发送的串口透传（另外串口几乎每秒都会收到A5 11 01 00 B7的心跳包）&lt;/p&gt;
&lt;p&gt;UDP 52100  开启app后会发送 A5 11 01 01 B8 到设备的这个端口来打开上面的两个TCP端口&lt;/p&gt;
&lt;p&gt;最后，发热贼大，真是冬日极佳暖手神器&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
</content:encoded></item><item><title>Windows WSL 安装最新版Docker</title><link>https://zyyme.com/windows-wsl-docker.html</link><guid isPermaLink="true">https://zyyme.com/windows-wsl-docker.html</guid><description>curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun sudo echo &apos;DOCKEROPTS=&quot;-H=unix:///var/run/docker.sock -H=0.0.0.0:2375 --iptables=false&quot;&apos; /etc/default/docker sudo</description><pubDate>Fri, 23 Jul 2021 00:00:00 GMT</pubDate><content:encoded>&lt;pre&gt;&lt;code&gt;curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
sudo echo &apos;DOCKER_OPTS=&quot;-H=unix:///var/run/docker.sock -H=0.0.0.0:2375 --iptables=false&quot;&apos; &amp;amp;gt;&amp;amp;gt; /etc/default/docker
sudo sed -i &apos;s#^ExecStart=.*#EnvironmentFile=-/etc/default/docker\
ExecStart=/usr/bin/dockerd -H fd:// $DOCKER_OPTS#&apos; /lib/systemd/system/docker.service
sudo apt -y install cgroupfs-mount
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这就装好了，然后启动，这需要用管理员权限的cmd中启动bash来运行&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo cgroupfs-mount
sudo service docker start
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;需要开机启动可以去计划任务里添加计算机启动时的基本任务，运行的程序填bash.exe，参数填&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;-c &apos;sudo cgroupfs-mount; sudo service docker start&apos;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;因为sudo要输入密码，所以还需要做点操作&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo visudo
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;在最后面新起一行写上&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;你wsl里的用户名 ALL=(ALL) NOPASSWD: ALL
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这就完成了&lt;/p&gt;
</content:encoded></item><item><title>更换域名到zyyme.com</title><link>https://zyyme.com/change-domain-to-zyyme-com.html</link><guid isPermaLink="true">https://zyyme.com/change-domain-to-zyyme-com.html</guid><description>郑羊羊 - zyy (拼音首字母) 咩 - me (罗马字) 至于为什么不是zyymie，绝对不是因为字母不小心少打了个i，只是 希望更短一点罢了，相比之前的cupinkie确实短了不少 想去买zmie.com但是200+价格直接劝退QAQ（查到对方是上个月底刚过期）</description><pubDate>Sat, 03 Jul 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;郑羊羊 -&amp;gt; zyy (拼音首字母)    咩 -&amp;gt; me (罗马字)&lt;/p&gt;
&lt;p&gt;至于为什么不是zyymie，绝对不是因为字母不小心少打了个i，只是 希望更短一点罢了，相比之前的cupinkie确实短了不少&lt;/p&gt;
&lt;p&gt;想去买zmie.com但是200+价格直接劝退QAQ（查到对方是上个月底刚过期）&lt;/p&gt;
</content:encoded></item><item><title>常用正则表达式</title><link>https://zyyme.com/regular-expression.html</link><guid isPermaLink="true">https://zyyme.com/regular-expression.html</guid><description>^头 $尾 []里面的任意或 ()调整优先级没有什么用 .任意字符串 ^[ \ \s]$ 就是从头匹配\ 或\s这两个字符任意次到尾 方括号里不需要或（ ^(aaa|bbb)$ 包含aaa或bbb这两个字符串重复任意次 ^\.en ?(.+)$ 取出.en后的内容，间隔的空格可有可无 [^\u4e00-\u9fa5] 不是中文的内容 ^(?=.[0-9])(</description><pubDate>Mon, 21 Jun 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;^头&lt;br /&gt;
$尾&lt;br /&gt;
[]里面的任意或&lt;br /&gt;
()调整优先级没有什么用&lt;br /&gt;
.*任意字符串&lt;/p&gt;
&lt;p&gt;^[ &lt;br /&gt;
\s]*$&lt;br /&gt;
就是从头匹配&lt;br /&gt;
或\s这两个字符任意次到尾&lt;br /&gt;
方括号里不需要或（&lt;/p&gt;
&lt;p&gt;^(aaa|bbb)*$&lt;br /&gt;
包含aaa或bbb这两个字符串重复任意次&lt;/p&gt;
&lt;p&gt;^.en ?(.+)$&lt;br /&gt;
取出.en后的内容，间隔的空格可有可无&lt;/p&gt;
&lt;p&gt;[^\u4e00-\u9fa5]&lt;br /&gt;
不是中文的内容&lt;/p&gt;
&lt;p&gt;^(?=.&lt;em&gt;[0-9])(?=.&lt;/em&gt;[a-z])(?=.&lt;em&gt;[A-Z])(?=.&lt;/em&gt;[`~!@#$%^&amp;amp;&lt;em&gt;()-=_+[]\;&apos;:&quot;,./&amp;lt;&amp;gt;?])[\w!@#$%^&amp;amp;&lt;/em&gt;()+-=*/ ]{8,16}$&lt;br /&gt;
8-16位的 数字 大写字母 小写字母 特殊符号&lt;/p&gt;
</content:encoded></item><item><title>Js读写Cookie</title><link>https://zyyme.com/js-get-set-cookie.html</link><guid isPermaLink="true">https://zyyme.com/js-get-set-cookie.html</guid><description>// 读取cookie function getCookie(key) { if (document.cookie.length 0) { var start = document.cookie.indexOf(key + &quot;=&quot;) if (start !== -1) { start = start + key.length + 1 var end = do</description><pubDate>Mon, 31 May 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&amp;lt;pre&amp;gt;// 读取cookie&lt;br /&gt;
function getCookie(key) {&lt;br /&gt;
if (document.cookie.length &amp;gt; 0) {&lt;br /&gt;
var start = document.cookie.indexOf(key + &quot;=&quot;)&lt;br /&gt;
if (start !== -1) {&lt;br /&gt;
start = start + key.length + 1&lt;br /&gt;
var end = document.cookie.indexOf(&quot;;&quot;, start)&lt;br /&gt;
if (end === -1)&lt;br /&gt;
end = document.cookie.length&lt;br /&gt;
return unescape(document.cookie.substring(start, end))&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
}&lt;/p&gt;
&lt;p&gt;// 设置cookie&lt;br /&gt;
function setCookie(key, value, second) {&lt;br /&gt;
var cookie = key + &quot;=&quot; + escape(value) + &quot;;&quot;;&lt;br /&gt;
if (second !== undefined &amp;amp;&amp;amp; second !== &apos;&apos;) {&lt;br /&gt;
cookie += &quot;Max-Age=&quot; + second + &quot;;&quot;;&lt;br /&gt;
}&lt;br /&gt;
document.cookie = cookie&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>Python3 urllib 怎么POST Json</title><link>https://zyyme.com/python3-urllib-post-json.html</link><guid isPermaLink="true">https://zyyme.com/python3-urllib-post-json.html</guid><description>outData = urllib.request.urlopen(urllib.request.Request(url, headers={&apos;content-type&apos;: &apos;application/json&apos;}), json.dumps(jsonData).encode(&apos;utf-8&apos;)) jsonObject = json.loads(outData.re</description><pubDate>Mon, 31 May 2021 00:00:00 GMT</pubDate><content:encoded>&lt;pre&gt;&lt;code&gt;outData = urllib.request.urlopen(urllib.request.Request(url, headers={&apos;content-type&apos;: &apos;application/json&apos;}), json.dumps(jsonData).encode(&apos;utf-8&apos;))
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;jsonObject = json.loads(outData.read().decode(&apos;utf-8&apos;))
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;应该看懂了吧，jsonData相当于放到body中发过去的，不是params。&lt;/p&gt;
&lt;p&gt;别问为什么不用requests和httpx&lt;/p&gt;
&lt;p&gt;反正标准库就是这样，试了十几次半个小时试出来的&lt;/p&gt;
</content:encoded></item><item><title>修改配置文件实现手机双扬声器</title><link>https://zyyme.com/android-config-dual-speaker.html</link><guid isPermaLink="true">https://zyyme.com/android-config-dual-speaker.html</guid><description>需求修改系统，至于是root还是magisk模块等骚操作把文件换掉都可以 把系统中 /etc/mixerpathsmtp.xml 文件拷出来编辑 先来说一些基础的，这是一个xml文件，那么数据都是又头有尾的，比如 这就是他的头和尾 找到 的节点，然后把里面的内容复制到 的节点中 另外，在听筒(handset)的参数中, 拥有一个 Digital Volume</description><pubDate>Mon, 29 Mar 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;需求修改系统，至于是root还是magisk模块等骚操作把文件换掉都可以&lt;/p&gt;
&lt;p&gt;把系统中 /etc/mixer_paths_mtp.xml 文件拷出来编辑&lt;/p&gt;
&lt;p&gt;先来说一些基础的，这是一个xml文件，那么数据都是又头有尾的，比如&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;path&amp;gt;
&amp;lt;/path&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这就是他的头和尾&lt;/p&gt;
&lt;p&gt;找到 &lt;code&gt;&amp;lt;path name=&quot;handset&quot;&amp;gt;&lt;/code&gt; 的节点，然后把里面的内容复制到 &lt;code&gt;&amp;lt;path name=&quot;speaker&quot;&amp;gt;&lt;/code&gt; 的节点中&lt;br /&gt;
另外，在听筒(handset)的参数中, 拥有一个 Digital Volume 的参数，可以改大来增大听筒的音量(百分比)，但是写到扬声器(speaker)中会限制音量&lt;/p&gt;
&lt;p&gt;举个例子&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;path name=&quot;speaker&quot;&amp;gt;
&amp;lt;ctl name=&quot;RX3 MIX1 INP1&quot; value=&quot;RX1&quot; /&amp;gt;
&amp;lt;ctl name=&quot;LINE_OUT&quot; value=&quot;Switch&quot; /&amp;gt;
&amp;lt;/path&amp;gt;
&amp;lt;path name=&quot;handset&quot;&amp;gt;
&amp;lt;ctl name=&quot;RX1 MIX1 INP1&quot; value=&quot;RX1&quot; /&amp;gt;
&amp;lt;ctl name=&quot;RDAC2 MUX&quot; value=&quot;RX1&quot; /&amp;gt;
&amp;lt;ctl name=&quot;RX1 Digital Volume&quot; value=&quot;84&quot; /&amp;gt;
&amp;lt;ctl name=&quot;EAR PA Gain&quot; value=&quot;POS_6_DB&quot; /&amp;gt;
&amp;lt;ctl name=&quot;EAR_S&quot; value=&quot;Switch&quot; /&amp;gt;
&amp;lt;/path&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;那么就应该把speaker的那一个修改为&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;path name=&quot;speaker&quot;&amp;gt;
&amp;lt;ctl name=&quot;RX3 MIX1 INP1&quot; value=&quot;RX1&quot; /&amp;gt;
&amp;lt;ctl name=&quot;LINE_OUT&quot; value=&quot;Switch&quot; /&amp;gt;
&amp;lt;ctl name=&quot;RX1 MIX1 INP1&quot; value=&quot;RX1&quot; /&amp;gt;
&amp;lt;ctl name=&quot;RDAC2 MUX&quot; value=&quot;RX1&quot; /&amp;gt;
&amp;lt;ctl name=&quot;EAR PA Gain&quot; value=&quot;POS_6_DB&quot; /&amp;gt;
&amp;lt;ctl name=&quot;EAR_S&quot; value=&quot;Switch&quot; /&amp;gt;
&amp;lt;/path&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;保存，放回系统中去或者放到magisk模块中，重启系统即可生效&lt;/p&gt;
&lt;p&gt;要是没声音，换个编辑器来编辑，VsCode我也不知道为什么是不行的&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;修改一台ZTE 701zt的日本儿童手机，听筒音质实在是太好了声音还大，他的配置是在 &lt;code&gt;/system/etc/mixer_paths_msm8909_pm8916.xml&lt;/code&gt; 具体怎么知道是哪一个呢，就几个 &lt;code&gt;mixer_paths&lt;/code&gt; 开头的，都备份了挨个删掉试一下有没有声音就知道了，&lt;br /&gt;
也有可能在 &lt;code&gt;/system/vendor/etc/&lt;/code&gt; 中&lt;/p&gt;
&lt;p&gt;除了可以重启手机，在一次bootloop的时候找到了办法&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;killall audioserver
killall android.hardware.audio.service
killall -9 com.sec.android.app.soundalive
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这样就应用了最新的配置了，那么我恰好adb有root，只要写一个脚本，点一下就能应用&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;adb push mixer_paths_msm8909_pm8916.xml /system/etc/
adb shell killall audioserver
adb shell killall android.hardware.audio.service
adb shell killall -9 com.sec.android.app.soundalive
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;使用上面的方式将 &lt;code&gt;handset&lt;/code&gt; 的内容放到 &lt;code&gt;speaker&lt;/code&gt; 中已经没有效果了，因为音频是使用i2s输出的，完全就没有用 &lt;code&gt;speaker&lt;/code&gt; 中的内容，经过测试，注释掉&lt;code&gt;deep-buffer-playback-zte-smart-pa&lt;/code&gt;里面的内容就没有声音了，说明外放就是这部分，通过多次尝试，上方的 &lt;code&gt;deep-buffer-playback&lt;/code&gt; 中使用的 &lt;code&gt;PRI_MI2S_RX&lt;/code&gt; 即为听筒，那我们就加一行，将 &lt;code&gt;PRI_MI2S_RX&lt;/code&gt; 也加入 &lt;code&gt;MultiMedia1&lt;/code&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;path name=&quot;deep-buffer-playback-zte-smart-pa&quot;&amp;gt;
        &amp;lt;ctl name=&quot;QUAT_MI2S_RX Audio Mixer MultiMedia1&quot; value=&quot;1&quot; /&amp;gt;
        &amp;lt;ctl name=&quot;PRI_MI2S_RX Audio Mixer MultiMedia1&quot; value=&quot;1&quot; /&amp;gt;
    &amp;lt;/path&amp;gt;	
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;但是发现没声音，是因为听筒的 &lt;code&gt;RX1&lt;/code&gt; 需要打开，因此从 &lt;code&gt;handset&lt;/code&gt; 复制过来&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;    &amp;lt;path name=&quot;deep-buffer-playback-zte-smart-pa&quot;&amp;gt;
        &amp;lt;ctl name=&quot;QUAT_MI2S_RX Audio Mixer MultiMedia1&quot; value=&quot;1&quot; /&amp;gt;
        &amp;lt;ctl name=&quot;PRI_MI2S_RX Audio Mixer MultiMedia1&quot; value=&quot;1&quot; /&amp;gt;
        &amp;lt;ctl name=&quot;RX1 MIX1 INP1&quot; value=&quot;RX1&quot; /&amp;gt;
        &amp;lt;ctl name=&quot;RDAC2 MUX&quot; value=&quot;RX1&quot; /&amp;gt;
        &amp;lt;ctl name=&quot;RX1 Digital Volume&quot; value=&quot;82&quot; /&amp;gt;
        &amp;lt;ctl name=&quot;EAR PA Gain&quot; value=&quot;POS_6_DB&quot; /&amp;gt;
        &amp;lt;ctl name=&quot;EAR_S&quot; value=&quot;Switch&quot; /&amp;gt;
    &amp;lt;/path&amp;gt;	
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;其中 &lt;code&gt;&amp;lt;ctl name=&quot;RDAC2 MUX&quot; value=&quot;RX1&quot; /&amp;gt;&lt;/code&gt; 这会进行数模转换降低音质，但是方便放大到更大的音量，关闭后把 &lt;code&gt;RX1 Digital Volume&lt;/code&gt; 从82改到87也能发出相同的响度，你可以自行修改，反正应用非常容易&lt;/p&gt;
</content:encoded></item><item><title>Windows常用注册表补丁.reg</title><link>https://zyyme.com/windows-reg.html</link><guid isPermaLink="true">https://zyyme.com/windows-reg.html</guid><description>由于Windows总有一些奇奇怪怪的反人类默认限制/设置，需要到注册表中修改，因此会写一些reg来批量导入 reg的格式说明： Windows Registry Editor Version 5.00 [路径] &quot;名称&quot;=类型:值 如何使用呢？复制了存成一个后缀为.reg的文件再双击合并就可以 双系统时间同步补丁.reg 将把bios时间当成utc时区来看待</description><pubDate>Tue, 16 Mar 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;由于Windows总有一些奇奇怪怪的反人类默认限制/设置，需要到注册表中修改，因此会写一些reg来批量导入&lt;/p&gt;
&lt;p&gt;reg的格式说明：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Windows Registry Editor Version 5.00
[路径]
&quot;名称&quot;=类型:值
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如何使用呢？复制了存成一个后缀为.reg的文件再双击合并就可以&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;双系统时间同步补丁.reg&lt;br /&gt;
将把bios时间当成utc时区来看待&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation]
&quot;RealTimeIsUniversal&quot;=dword:00000001
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;WebDav补丁.reg&lt;br /&gt;
解决群晖连不上的问题和下载文件大小限制的问题&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters]
&quot;BasicAuthLevel&quot;=dword:00000002
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters]
&quot;FileSizeLimitInBytes&quot;=dword:ffffffff
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>买了一个新域名i-xyy.com</title><link>https://zyyme.com/i-xyy.html</link><guid isPermaLink="true">https://zyyme.com/i-xyy.html</guid><description>这个域名是喜羊羊与灰太狼官方社区的域名 但由于官方放弃经营，于是人走茶凉，目前22dm连新闻都不更新了 现在将替换zyyme.com 共存期半年 域名又变短了呢 3天后退了，因为发现在国内无论绑定到什么ip上80口都会被掐流量，提示连接已重置 大概是在防火墙的黑名单里吧，没救了 血亏3.88</description><pubDate>Mon, 22 Feb 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;这个域名是喜羊羊与灰太狼官方社区的域名&lt;/p&gt;
&lt;p&gt;但由于官方放弃经营，于是人走茶凉，目前22dm连新闻都不更新了&lt;/p&gt;
&lt;p&gt;&amp;lt;del&amp;gt;现在将替换zyyme.com&amp;lt;/del&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;del&amp;gt;共存期半年&amp;lt;/del&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;del&amp;gt;域名又变短了呢&amp;lt;/del&amp;gt;&lt;/p&gt;
&lt;p&gt;3天后退了，因为发现在国内无论绑定到什么ip上80口都会被掐流量，提示连接已重置&lt;/p&gt;
&lt;p&gt;大概是在防火墙的黑名单里吧，没救了&lt;/p&gt;
&lt;p&gt;血亏3.88&lt;/p&gt;
</content:encoded></item><item><title>给Windows驱动自签名</title><link>https://zyyme.com/self-sign-the-windows-driver.html</link><guid isPermaLink="true">https://zyyme.com/self-sign-the-windows-driver.html</guid><description>需要makecert.exe和signtool.exe这两个开发工具带的程序，网上搜一下就有，capicom.dll可以到 这里 下载安装 2022/12/23更新：发现很多东西现在都下不到了，这里提供 [驱动签名工具包.zip][1] 里面有下面需要的两个命令行程序，以及他们需要安装的的依赖 capicomdcsdk.msi 生成证书 makecert -</description><pubDate>Sat, 26 Dec 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;~~ 需要makecert.exe和signtool.exe这两个开发工具带的程序，网上搜一下就有，capicom.dll可以到 这里 下载安装 ~~&lt;/p&gt;
&lt;p&gt;2022/12/23更新：发现很多东西现在都下不到了，这里提供 &lt;a href=&quot;/assets/uploads/2022/12/h9e6c87s6c.zip&quot;&gt;驱动签名工具包.zip&lt;/a&gt;&lt;br /&gt;
里面有下面需要的两个命令行程序，以及他们需要安装的的依赖 capicom_dc_sdk.msi&lt;/p&gt;
&lt;p&gt;生成证书&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;makecert -r -pe -ss Sparkle -n &quot;CN=Sparkle&quot; sparkle.cer
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;签名&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;signtool sign /v /s Sparkle /n Sparkle 要签名的文件用空格隔开
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;就签好了&lt;/p&gt;
&lt;p&gt;关驱动强制签名是不可能关驱动强制签名的，Windows 10 1803以后是不可能关的，但是打开测试模式可以使用自签名证书&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;bcdedit -set NOINTEGRITYCHECKS ON
bcdedit -set TESTSIGNING ON
bcdedit -set loadoptions DDISABLE_INTEGRITY_CHECKS
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>ThinkPad x200t P9300 超频</title><link>https://zyyme.com/thinkpad-x200t-p9300-overclock.html</link><guid isPermaLink="true">https://zyyme.com/thinkpad-x200t-p9300-overclock.html</guid><description>在看了众多资料，查阅了各种文档帖子后，得出以下结论： SP9300 Cpu的x200t 的时钟芯片的频率是200mhz，于是只需要断开时钟芯片的R405 即可将时钟提高到266mhz实现超频 在扩展卡插槽旁边，靠近主板底部边缘附近 但是，频率1.2超到1.6还不是废XD 所以算了算了。。。 另外拆掉R396，用一个10k拉到旁边的那一排滤波电容上（1.05v</description><pubDate>Tue, 13 Oct 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;在看了众多资料，查阅了各种文档帖子后，得出以下结论：&lt;/p&gt;
&lt;p&gt;SP9300 Cpu的x200t 的时钟芯片的频率是200mhz，于是只需要断开时钟芯片的R405 即可将时钟提高到266mhz实现超频&lt;/p&gt;
&lt;p&gt;在扩展卡插槽旁边，靠近主板底部边缘附近&lt;/p&gt;
&lt;p&gt;但是，频率1.2超到1.6还不是废XD&lt;/p&gt;
&lt;p&gt;所以算了算了。。。&lt;/p&gt;
&lt;p&gt;另外拆掉R396，用一个10k拉到旁边的那一排滤波电容上（1.05v）可以实现266mhz超到333mhz&lt;/p&gt;
</content:encoded></item><item><title>光学传媒W10-D破解</title><link>https://zyyme.com/w10-d-track.html</link><guid isPermaLink="true">https://zyyme.com/w10-d-track.html</guid><description>目前本教程已经被抄走，未提供或授权任何付费服务，请退款差评并举报 评测： BV1Lp4y1Y7er 首次拆机： BV1gA41177bn 第二次拆机： BV1RK4y1h7Jg 增加前置红外接收器： BV13541177pX 更换msp430： BV1ua4y1W7gu 内置电池： BV1RK4y1L7wL BV1TX4y1M7Ke 换喇叭： BV1C541</description><pubDate>Fri, 09 Oct 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&amp;lt;h3&amp;gt;&amp;lt;span style=&quot;color: #ff0000;&quot;&amp;gt;目前本教程已经被抄走，未提供或授权任何付费服务，请退款差评并举报&amp;lt;/span&amp;gt;&amp;lt;/h3&amp;gt;
评测：&amp;lt;a href=&quot;https://b23.tv/Q1KNO7&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&amp;gt;BV1Lp4y1Y7er&amp;lt;/a&amp;gt;&lt;/p&gt;
&lt;p&gt;首次拆机：&amp;lt;a href=&quot;https://b23.tv/NQQHnF&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&amp;gt;BV1gA41177bn&amp;lt;/a&amp;gt;&lt;/p&gt;
&lt;p&gt;第二次拆机：&amp;lt;a href=&quot;https://www.bilibili.com/video/BV1RK4y1h7Jg/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&amp;gt;BV1RK4y1h7Jg&amp;lt;/a&amp;gt;&lt;/p&gt;
&lt;p&gt;增加前置红外接收器：&amp;lt;a href=&quot;https://www.bilibili.com/video/BV13541177pX&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;BV13541177pX&amp;lt;/a&amp;gt;&lt;/p&gt;
&lt;p&gt;更换msp430：&amp;lt;a href=&quot;https://www.bilibili.com/video/BV1ua4y1W7gu&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;BV1ua4y1W7gu&amp;lt;/a&amp;gt;&lt;/p&gt;
&lt;p&gt;内置电池：&amp;lt;a href=&quot;https://www.bilibili.com/video/BV1RK4y1L7wL&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;BV1RK4y1L7wL&amp;lt;/a&amp;gt;  &amp;lt;a href=&quot;https://www.bilibili.com/video/BV1TX4y1M7Ke&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;BV1TX4y1M7Ke&amp;lt;/a&amp;gt;&lt;/p&gt;
&lt;p&gt;换喇叭：&amp;lt;a href=&quot;https://www.bilibili.com/video/BV1C5411H7MD&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;BV1C5411H7MD&amp;lt;/a&amp;gt;&lt;/p&gt;
&lt;p&gt;修复耳机孔相位反转：&amp;lt;a href=&quot;https://www.bilibili.com/video/BV1Uy4y1h78f&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;BV1Uy4y1h78f&amp;lt;/a&amp;gt;&lt;/p&gt;
&lt;p&gt;这是一款720p DLP的投影机，大概是公模，康佳K3和这款差不多（公模既视感）&lt;/p&gt;
&lt;p&gt;配置是能到1.2g主频的全智h3，1g RAM，8g EMMC或者NAND&lt;/p&gt;
&lt;p&gt;拆开四颗螺丝可以看到核心板，有个USB可以连接电脑&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;提权&amp;lt;/h2&amp;gt;
建议先 &amp;lt;a href=&quot;https://zyyme.com/backup-android-fastboot-image.html&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&amp;gt;备份Android设备的fastboot镜像&amp;lt;/a&amp;gt;&lt;/p&gt;
&lt;p&gt;adb自带root，因此可以数据线插核心板上的usb口，根据 &amp;lt;a href=&quot;https://zyyme.com/manually-install-supersu.html&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&amp;gt;手动安装SuperSU&amp;lt;/a&amp;gt; 来进行root（康佳固件使用/system/bin/preinstall.sh作为开机启动脚本），然后开启网络adb就可以为所欲为了&lt;/p&gt;
&lt;p&gt;可以在 /etc/install-recovery.sh 中加入下面的内容来默认开启网络adb&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;setprop service.adb.tcp.port 5555
stop adbd
start adbd
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;lt;h2&amp;gt;去广告&amp;lt;/h2&amp;gt;
在shell中，除了 媒体播放 其他app都可以停用，这个app控制投影开关，停了投影就不亮了&lt;/p&gt;
&lt;p&gt;显示所有app包名 &lt;code&gt;pm list packages&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;停用app &lt;code&gt;pm disable 包名&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;启用app &lt;code&gt;pm enable 包名&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;我停用了这些app&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;root@dolphin-fvd-p1:/ # pm list packages -d
package:com.vfun.protectservice
package:optica.com.qrcodeapplication
package:com.vfun.elevatorservice
package:com.fx.diaochan
root@dolphin-fvd-p1:/ #
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;package:后面的是包名&lt;br /&gt;
&amp;lt;h2&amp;gt;无遥控器点亮屏幕&amp;lt;/h2&amp;gt;
有遥控器的可以按遥控器右上角的按钮来点亮屏幕&lt;/p&gt;
&lt;p&gt;咪咕盒子遥控器可以通用，就几块钱&lt;/p&gt;
&lt;p&gt;外接的插头3条控制线，红色是5v，绿色是负极，蓝色是一个检测的模拟输入，理论上可以把蓝绿接在一起或者红蓝接在一起点亮屏幕&lt;/p&gt;
&lt;p&gt;由于每台机设置的亮屏的阈值都不太一样，可以用一个 单联电位器 蓝线接中间，红绿接两边，调调就亮了&lt;/p&gt;
&lt;p&gt;这样就点亮屏幕了，每次都这么干挺麻烦的，打开 媒体播放，接了线的断开连接线，点一下 关门取值 开门取值，这样开机就默认亮了，也不会因为下面的播放超时导致遥控器唤醒了3分钟黑屏&lt;br /&gt;
&amp;lt;h2&amp;gt;固件&amp;lt;/h2&amp;gt;
康佳K3的固件（核实固件来自康佳官方的百度云分享）：&lt;/p&gt;
&lt;p&gt;2019-01-07 17:07发布的版本&lt;/p&gt;
&lt;p&gt;sun8iw7p1_android_dolphin-p1_uart0.img (&amp;lt;a href=&quot;https://pan.baidu.com/s/1cagzGQ1mWXYoqBVSzrwPtA&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&amp;gt;百度云&amp;lt;/a&amp;gt; 密码:p3hv)&lt;/p&gt;
&lt;p&gt;此固件只支持AP6210的网卡，蓝牙可以用&lt;/p&gt;
&lt;p&gt;可以使用PhoenixSuit刷入：&lt;br /&gt;
在软件里把固件选择好&lt;br /&gt;
卸下H3小板&lt;br /&gt;
数据线连接H3小板&lt;br /&gt;
按住小板上的按键&lt;br /&gt;
用usb数据线连接小板和电脑&lt;br /&gt;
等软件识别到设备后松开按钮&lt;/p&gt;
&lt;p&gt;或使用PhoenixCard制作启动卡，选卡启动，选镜像，写入，写完了插上设备，插电就能开机了，拔掉卡通电就会进源机系统（全志啥都不好就这点做的挺牛逼，写卡报错的换win7即可）&lt;/p&gt;
&lt;p&gt;&amp;lt;span style=&quot;color: #ff0000;&quot;&amp;gt;实测由于固件不会喂狗，导致每3分钟会被hdmi旁边的usb背面的一个msp430g2553单片机看门狗重启，&amp;lt;del&amp;gt;建议先别刷到emmc中，可以做成卡启动先玩玩，目前有dalao正在写430的程序&amp;lt;/del&amp;gt;&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/assets/uploads/2020/10/IMG_20201017_000954-scaled.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;飞线大法好！使用hdmi的时钟，经过二极管出来交流电压为1.8v极其安全，&amp;lt;span style=&quot;color: #ff0000;&quot;&amp;gt;注意j9旁边靠镜头那条线要切断&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;p&gt;图片可以点击放大了看（线接的是下面的那个）&lt;br /&gt;
&amp;lt;h3&amp;gt;&amp;lt;/h3&amp;gt;
&amp;lt;h3&amp;gt;原生设置&amp;lt;/h3&amp;gt;
众所周知，康佳系统各种魔攻，并且这和机器源系统是同一个底包，so，可以把那边的app拿过来用，反过来也行&lt;/p&gt;
&lt;p&gt;由于Android有签名验证不能直接装上App，先要处理一下，本操作需要先ROOT&lt;/p&gt;
&lt;p&gt;顺便提一下 wifi adb可以在设置 -&amp;gt; 关于 -&amp;gt; 产品信息 -&amp;gt; 按10次下方向键 -&amp;gt; 其他选项 -&amp;gt; 打开adbd 然后 adb connect IP地址 就能连上&lt;/p&gt;
&lt;p&gt;下载这个文件 &amp;lt;a href=&quot;/assets/uploads/2020/10/SettingAndLP.zip&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&amp;gt;SettingAndLP.zip&amp;lt;/a&amp;gt;&lt;/p&gt;
&lt;p&gt;安装幸运破解器 LucкуPatcher_8.6.8.apk 并打开&lt;/p&gt;
&lt;p&gt;工具箱 -&amp;gt; 核心破解 -&amp;gt; 禁用签名验证 -&amp;gt; 应用 -&amp;gt; 重启&lt;/p&gt;
&lt;p&gt;安装提取的设置 TvdSettings.apk&lt;/p&gt;
&lt;p&gt; &lt;br /&gt;
&amp;lt;h2&amp;gt;耳机孔相位反转&amp;lt;/h2&amp;gt;
耳机孔三右声道相位是反的，所以在单声道的音箱上会人声消音，那么只要把它在耳放前面反转一下就行了&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/assets/uploads/2020/10/w10dAudio.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;原来的样子可以参考上面的喂狗飞线图&lt;/p&gt;
&lt;p&gt; &lt;br /&gt;
&amp;lt;h2&amp;gt;自制固件&amp;lt;/h2&amp;gt;
我做了一版固件自用，精简掉所有没用的服务和程序，内置了平时会用到的app（哔哩ytb播放器等），加入了原生设置&lt;/p&gt;
&lt;p&gt;有需要的可以上咩咩乐园深入了解&lt;/p&gt;
&lt;p&gt; &lt;br /&gt;
&amp;lt;h2&amp;gt;坑&amp;lt;/h2&amp;gt;
电源口比较特殊，是5.5 2.5的，不是常见的5.5 2.1，实测2A的电源带起来没啥压力，可以买个插头和插座自己做一条转接线（我就是这样操作的）&lt;/p&gt;
&lt;p&gt;&amp;lt;del&amp;gt;目前还不知道怎么切换hdmi输入（固件屏蔽，蓝牙也是）&amp;lt;/del&amp;gt;&lt;/p&gt;
&lt;p&gt;目前搞到了康佳k3的固件，功能都正常，无USB从机模式不能有线adb调试&lt;/p&gt;
&lt;p&gt;第二次拆机把usb口做了一条线引出来了，实测不支持otg，但是口的5v带电，可以给音箱供电&lt;/p&gt;
&lt;p&gt;&amp;lt;del&amp;gt;3.5mm耳机孔插上之后内置喇叭还会响，并且耳机不能完全插进去不然没有声音&amp;lt;/del&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>iPhone4绕过ID锁</title><link>https://zyyme.com/iphone4-bypass-id-lock.html</link><guid isPermaLink="true">https://zyyme.com/iphone4-bypass-id-lock.html</guid><description>此教程能让你绕过iPhone4的iCould激活锁，当然由于可以直接操作文件系统，所以你还能干其他事情，由于是绕过，实际上手机在Apple的角度来看还是处于未激活的状态，所以没有推送，蜂窝网络无服务 首先需要准备一个 32位(x86)的java8运行环境 ，以及下载 iphone4-bypass-id-lock.zip ，当然还需要良好的网络连接 此处mac</description><pubDate>Sun, 13 Sep 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;此教程能让你绕过iPhone4的iCould激活锁，当然由于可以直接操作文件系统，所以你还能干其他事情，由于是绕过，实际上手机在Apple的角度来看还是处于未激活的状态，所以没有推送，蜂窝网络无服务&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;首先需要准备一个 &amp;lt;a href=&quot;https://www.oracle.com/java/technologies/javase-jre8-downloads.html&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&amp;gt;32位(x86)的java8运行环境&amp;lt;/a&amp;gt;，以及下载  &amp;lt;a href=&quot;/assets/uploads/2020/09/iphone4-bypass-id-lock.zip&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&amp;gt;&amp;lt;span class=&quot;upload-filename&quot;&amp;gt;iphone4-bypass-id-lock.zip&amp;lt;/span&amp;gt;&amp;lt;/a&amp;gt;，当然还需要良好的网络连接&lt;/p&gt;
&lt;p&gt;此处macOS劝退，因为不支持32位应用程序&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;手机进DFU模式（插线，关机，按住电源和Home键10秒，放掉电源键，Home键继续按着10秒）&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;终端或者cmd运行&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;java -jar 将iphone4-ssh.jar拖进来
```&amp;lt;/li&amp;gt;
 	&amp;lt;li&amp;gt;等一会，窗口会显示Success!，并且显示ssh的端口和用户名密码，此时使用ssh工具来连接手机（服务器地址填127.0.0.1）压缩包中带了一个MobaXterm破解版  
如果出现了红色的错误提示，请确定你使用的是否真的是32位的java&amp;lt;/li&amp;gt;
 	&amp;lt;li&amp;gt;```  
mount.sh  
rm -rf /mnt1/Applications/Setup.app  
reboot  
```&amp;lt;/li&amp;gt;
 	&amp;lt;li&amp;gt;用比如爱思这种软件将手机退出恢复模式&amp;lt;/li&amp;gt;
&amp;lt;/ol&amp;gt;
好了，现在你就把这台砖头变成了一个有听筒的高配Touch4&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>备份ESP固件</title><link>https://zyyme.com/dump-esp-firmware.html</link><guid isPermaLink="true">https://zyyme.com/dump-esp-firmware.html</guid><description>首先装好Python3 下载一个 esptool.py 去设备管理器看一下usb串口是那一个号（此处是COM69，下面请自己换掉别傻傻的复制） 在esptool.py同级目录打开cmd 容量1m： python esptool.py --baud 115200 --port COM69 readflash 0x00000 0x100000 dump.bin </description><pubDate>Thu, 03 Sep 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;首先装好Python3&lt;/p&gt;
&lt;p&gt;下载一个&amp;lt;a href=&quot;https://github.com/espressif/esptool&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&amp;gt;esptool.py&amp;lt;/a&amp;gt;&lt;/p&gt;
&lt;p&gt;去设备管理器看一下usb串口是那一个号（此处是COM69，下面请自己换掉别傻傻的复制）&lt;/p&gt;
&lt;p&gt;在esptool.py同级目录打开cmd&lt;/p&gt;
&lt;p&gt;容量1m：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;python esptool.py --baud 115200 --port COM69 read_flash 0x00000 0x100000 dump.bin
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;容量4m：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;python esptool.py --baud 115200 --port COM69 read_flash 0x00000 0x400000 dump.bin
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;其他容量请举一反三&lt;/p&gt;
&lt;p&gt;这时候目录下会生成一个dump.bin，这就是读出来的内容了&lt;/p&gt;
</content:encoded></item><item><title>Oracle imp exp 导入导出</title><link>https://zyyme.com/oracle-imp-exp.html</link><guid isPermaLink="true">https://zyyme.com/oracle-imp-exp.html</guid><description>啊还是MySql方便呐 首先imp和exp可以到数据库服务器上运行或者在客户端上运行，建议直接把dmp文件scp或者rz到服务器上导（无需担心客户端版本是否对应），如果安装Oracle时没有配置PATH，那你还得跑oracle安装目录/bin中运行 导出 按表导出： exp file=文件名.dmp tables=(数据库名.表名1,数据库名.表名2) 按用</description><pubDate>Thu, 03 Sep 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;啊还是MySql方便呐&lt;/p&gt;
&lt;p&gt;首先imp和exp可以到数据库服务器上运行或者在客户端上运行，建议直接把dmp文件scp或者rz到服务器上导（无需担心客户端版本是否对应），如果安装Oracle时没有配置PATH，那你还得跑oracle安装目录/bin中运行&lt;br /&gt;
&amp;lt;h2&amp;gt;导出&amp;lt;/h2&amp;gt;
按表导出：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;exp file=文件名.dmp tables=(数据库名.表名1,数据库名.表名2)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;按用户导出：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;exp file=文件名.dmp owner=(用户名1,用户名2)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;lt;h2&amp;gt;导入&amp;lt;/h2&amp;gt;
导入的可能出现奇怪问题可能就比较多，比如用vs code来打开一个dmp，可以看到头部长这样&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;TEXPORT:V10.01.00
USPARKLE
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;其中V10.01.00是数据库的版本号，如果导出的服务版本比将导入的版本要高那肯定是导不进的，可以把运行imp显示的版本号复制过来改掉，但注意像10.0.1.0.0需要去掉两个点变成10.01.00&lt;/p&gt;
&lt;p&gt;第二行的第一个字母，D是需要dba权限的用户才能导入的，U则可以使用普通用户导入&lt;/p&gt;
&lt;p&gt;后面的SPARKLE是用户名，后面会用到&lt;/p&gt;
&lt;p&gt;Ctrl + F （mac下是Cmd + F）查找TABLE可以看到导出了的表名&lt;/p&gt;
&lt;p&gt;导入到与导入数据库的目标用户名同名的库中：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;imp file=文件名.dmp fromuser=dmp中导出的用户名 touser=导入数据库的目标用户名 tables=(表名1,表名2) ignore=Y
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;其中ignore=Y可以跳过警告的提示继续导入&lt;/p&gt;
</content:encoded></item><item><title>Linux内存盘tmpfs</title><link>https://zyyme.com/linux%E5%86%85%E5%AD%98%E7%9B%98tmpfs.html</link><guid isPermaLink="true">https://zyyme.com/linux%E5%86%85%E5%AD%98%E7%9B%98tmpfs.html</guid><description>在某些情况下，你可能需要一个临时空间，并且你的ram还挺大 或者是需要通过某些资源占用的审核 Linux搞这种事情就超级简单 首先mount需要root权限，你可以前面加sudu或者su切换过去 找个合适的地方建个文件夹 mkdir mendisk 然后挂载，size是内存盘的最大可用大小，比如1G，500M，注意单位要大写，当然，这部分内存不是创建之后就马</description><pubDate>Tue, 01 Sep 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;在某些情况下，你可能需要一个临时空间，并且你的ram还挺大&lt;/p&gt;
&lt;p&gt;或者是需要通过某些资源占用的审核&lt;/p&gt;
&lt;p&gt;Linux搞这种事情就超级简单&lt;/p&gt;
&lt;p&gt;首先mount需要root权限，你可以前面加sudu或者su切换过去&lt;/p&gt;
&lt;p&gt;找个合适的地方建个文件夹&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;mkdir mendisk
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;然后挂载，size是内存盘的最大可用大小，比如1G，500M，注意单位要大写，当然，这部分内存不是创建之后就马上占用了的&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;mount -t tmpfs -o size=1G tmpfs mendisk
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;然后就可以用了，这个目录里面的内容就是写到内存中的内容了&lt;/p&gt;
&lt;p&gt;不想要的时候&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;umount -fl mendisk
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;就卸载掉了，占用的内存也会腾出来&lt;/p&gt;
</content:encoded></item><item><title>svn权限不足 svn: E000001: Operation not permitted</title><link>https://zyyme.com/svn-e000001-operation-not-permitted.html</link><guid isPermaLink="true">https://zyyme.com/svn-e000001-operation-not-permitted.html</guid><description>在macOS和Windows互换的时候经常会遇到这个问题，无论是NTFS还是Fat32 svn: E000001: Can&apos;t remove file &apos;文件名&apos;: Operation not permitted 这个时候哪怕用sudo来运行svn也是不可能cleanup的，需要一个个文件的rm -f 那就运行这个脚本吧，他能帮你自动的一个个文件删掉 代码块</description><pubDate>Mon, 06 Jul 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;在macOS和Windows互换的时候经常会遇到这个问题，无论是NTFS还是Fat32&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;svn: E000001: Can&apos;t remove file &apos;文件名&apos;: Operation not permitted
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这个时候哪怕用sudo来运行svn也是不可能cleanup的，需要一个个文件的rm -f&lt;/p&gt;
&lt;p&gt;那就运行这个脚本吧，他能帮你自动的一个个文件删掉&lt;/p&gt;
&lt;p&gt;代码块的功能有bug 就这样看吧&lt;/p&gt;
&lt;p&gt;d=&lt;code&gt;svn cleanup 2&amp;amp;gt;&amp;amp;amp;1 | grep &quot;Can&apos;t remove file&quot; | sed &quot;s/svn: E000001: Can&apos;t remove file &apos;//&quot; | sed &quot;s/&apos;: Operation not permitted//&quot;&lt;/code&gt;&lt;br /&gt;
while [ -n &quot;$d&quot; ]&lt;br /&gt;
do&lt;br /&gt;
echo $d&lt;br /&gt;
sudo rm -f $d&lt;br /&gt;
d=&lt;code&gt;svn cleanup 2&amp;amp;gt;&amp;amp;amp;1 | grep &quot;Can&apos;t remove file&quot; | sed &quot;s/svn: E000001: Can&apos;t remove file &apos;//&quot; | sed &quot;s/&apos;: Operation not permitted//&quot;&lt;/code&gt;&lt;br /&gt;
done&lt;/p&gt;
</content:encoded></item><item><title>Node.js的坑</title><link>https://zyyme.com/nodejs-kidding-me.html</link><guid isPermaLink="true">https://zyyme.com/nodejs-kidding-me.html</guid><description>首先这些奇奇怪怪的问题Windows需要背大部分的锅，毕竟平时用macOS就没有这些奇奇怪怪的问题 实在有点不解，macOS是怎么做到在exfat文件系统下支持软连接的 ---------- Error: EISDIR: illegal operation on a directory, symlink&apos;文件路径&apos; - &apos;目标路径&apos; 如果工作目录处于非ntf</description><pubDate>Sun, 28 Jun 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;首先这些奇奇怪怪的问题Windows需要背大部分的锅，毕竟平时用macOS就没有这些奇奇怪怪的问题&lt;/p&gt;
&lt;p&gt;实在有点不解，macOS是怎么做到在exfat文件系统下支持软连接的&lt;/p&gt;
&lt;hr /&gt;
&lt;pre&gt;&lt;code&gt;Error: EISDIR: illegal operation on a directory, symlink&apos;文件路径&apos; -&amp;amp;gt; &apos;目标路径&apos;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果工作目录处于非ntfs文件系统，会出现这样的问题&lt;/p&gt;
&lt;p&gt;解决方案：不使用文件链接&lt;/p&gt;
&lt;p&gt;npm i --registry=https://registry.npm.taobao.org --no-bin-links&lt;/p&gt;
&lt;p&gt;如果不行（实测不行），使用yarn&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;npm install -g yarn
yarn
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;pre&gt;&lt;code&gt;Module build failed: Error: Node Sass does not yet support your current environment: Windows 64-bit with Unsupported runtime (83
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;多系统切换，node-sass不同系统不通用而且还不能同时安装&lt;/p&gt;
&lt;p&gt;解决方案：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;npm rebuild node-sass
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果不行，删掉重装&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;npm uninstall --save node-sass
yarn add node-sass
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt; &lt;/p&gt;
</content:encoded></item><item><title>备份Android设备的fastboot镜像</title><link>https://zyyme.com/backup-android-fastboot-image.html</link><guid isPermaLink="true">https://zyyme.com/backup-android-fastboot-image.html</guid><description>这篇文章教你备份现有设备的fastboot镜像，可以是手机，手表，电子书，甚至智能音响 优点是可以无视设备的可用空间，比如像手表的sdcard所在分区没有system大，以至于无法使用twrp备份system。以及备份的是image，还原之后可以过ota的md5验证 当然，也是有门槛的 1. 一个拥有adb和fastboot支持的平台，电脑，路由器，另一个手</description><pubDate>Sat, 27 Jun 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;这篇文章教你备份现有设备的fastboot镜像，可以是手机，手表，电子书，甚至智能音响&lt;/p&gt;
&lt;p&gt;优点是可以无视设备的可用空间，比如像手表的sdcard所在分区没有system大，以至于无法使用twrp备份system。以及备份的是image，还原之后可以过ota的md5验证&lt;/p&gt;
&lt;p&gt;当然，也是有门槛的&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;一个拥有adb和fastboot支持的平台，电脑，路由器，另一个手机都可以(Windows请使用utf8的cmd)&lt;/li&gt;
&lt;li&gt;adb工具（android-tools-adb）&lt;/li&gt;
&lt;li&gt;fastboot工具（android-tools-fastboot）&lt;/li&gt;
&lt;li&gt;设备已解锁拥有对应twrp或是已经root&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;使用twrp的情况&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;将设备启动到fastboot并连接电脑&lt;/li&gt;
&lt;li&gt;启动twrp，这里使用设备的twrp.img，如果要备份原厂recovery请别把twrp刷进去&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;fastboot boot twrp.img
&lt;/code&gt;&lt;/pre&gt;
&lt;ol&gt;
&lt;li&gt;请看备份部分&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;设备已root的情况&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;将设备启动到Android并连接到电脑&lt;/li&gt;
&lt;li&gt;将adb切换到root模式&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;adb root
&lt;/code&gt;&lt;/pre&gt;
&lt;ol&gt;
&lt;li&gt;请看备份部分&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;备份&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;打开一个shell&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;adb shell
&lt;/code&gt;&lt;/pre&gt;
&lt;ol&gt;
&lt;li&gt;在 /dev/block/platform 中的任意文件夹下找到找到 by-name 目录
可以尝试用命令或是手动找&lt;code&gt;find /dev/block -name by-name&lt;/code&gt;&lt;br /&gt;
这里教你几个常用的Linux命令&lt;br /&gt;
切换到某个目录 &lt;code&gt;cd 目录&lt;/code&gt;&lt;br /&gt;
显示当前目录下的文件 &lt;code&gt;ls&lt;/code&gt;&lt;br /&gt;
显示当前所在目录的路径 &lt;code&gt;pwd&lt;/code&gt;&lt;br /&gt;
补全路径或命令 按键盘上的tab按钮&amp;lt;/li&amp;gt;&lt;/li&gt;
&lt;li&gt;这里以TicwatchPro为例，找到的路径是&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;/dev/block/platform/soc/7824900.sdhci/by-name
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;进去&lt;code&gt;ls -l&lt;/code&gt;可以竖着输出目录中的文件名，拼接成这样的命令(仅Linux或Mac)&lt;br /&gt;
&lt;code&gt;adb shell cat 路径/文件名 &amp;gt; 文件名.img&lt;/code&gt;&lt;br /&gt;
或是(包括Windows可用，甚至不用切utf-8)&lt;br /&gt;
&lt;code&gt;adb pull 路径/文件名&lt;/code&gt;&lt;br /&gt;
然后拿着像vscode这种按住shift+alt（shift+option）可以同时编辑多行的编辑器操作一番，就能得到这样一堆命令&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;adb pull /dev/block/platform/soc/7824900.sdhci/by-name/DDR
adb pull /dev/block/platform/soc/7824900.sdhci/by-name/aboot
adb pull /dev/block/platform/soc/7824900.sdhci/by-name/abootbak
adb pull /dev/block/platform/soc/7824900.sdhci/by-name/boot
adb pull /dev/block/platform/soc/7824900.sdhci/by-name/cache
adb pull /dev/block/platform/soc/7824900.sdhci/by-name/cmnlib
adb pull /dev/block/platform/soc/7824900.sdhci/by-name/cmnlibbak
adb pull /dev/block/platform/soc/7824900.sdhci/by-name/config
adb pull /dev/block/platform/soc/7824900.sdhci/by-name/devinfo
adb pull /dev/block/platform/soc/7824900.sdhci/by-name/fsc
adb pull /dev/block/platform/soc/7824900.sdhci/by-name/fsg
adb pull /dev/block/platform/soc/7824900.sdhci/by-name/keymaster
adb pull /dev/block/platform/soc/7824900.sdhci/by-name/keymasterbak
adb pull /dev/block/platform/soc/7824900.sdhci/by-name/keystore
adb pull /dev/block/platform/soc/7824900.sdhci/by-name/misc
adb pull /dev/block/platform/soc/7824900.sdhci/by-name/modem
adb pull /dev/block/platform/soc/7824900.sdhci/by-name/modemst1
adb pull /dev/block/platform/soc/7824900.sdhci/by-name/modemst2
adb pull /dev/block/platform/soc/7824900.sdhci/by-name/oem
adb pull /dev/block/platform/soc/7824900.sdhci/by-name/pad
adb pull /dev/block/platform/soc/7824900.sdhci/by-name/persist
adb pull /dev/block/platform/soc/7824900.sdhci/by-name/recovery
adb pull /dev/block/platform/soc/7824900.sdhci/by-name/rpm
adb pull /dev/block/platform/soc/7824900.sdhci/by-name/rpmbak
adb pull /dev/block/platform/soc/7824900.sdhci/by-name/sbl1
adb pull /dev/block/platform/soc/7824900.sdhci/by-name/sbl1bak
adb pull /dev/block/platform/soc/7824900.sdhci/by-name/sec
adb pull /dev/block/platform/soc/7824900.sdhci/by-name/splash
adb pull /dev/block/platform/soc/7824900.sdhci/by-name/ssd
adb pull /dev/block/platform/soc/7824900.sdhci/by-name/system
adb pull /dev/block/platform/soc/7824900.sdhci/by-name/ticnv
adb pull /dev/block/platform/soc/7824900.sdhci/by-name/tz
adb pull /dev/block/platform/soc/7824900.sdhci/by-name/tzbak
adb pull /dev/block/platform/soc/7824900.sdhci/by-name/userdata
adb pull /dev/block/platform/soc/7824900.sdhci/by-name/vendor
&lt;/code&gt;&lt;/pre&gt;
&lt;ol&gt;
&lt;li&gt;在需要存放备份的目录打开一个终端(Windows请使用utf8的cmd)，运行第三步拼出的命令，fastboot线刷包就备份完成了&lt;/li&gt;
&lt;/ol&gt;
</content:encoded></item><item><title>Kindle网易云音乐</title><link>https://zyyme.com/kindle-mplayer-cloudmusic.html</link><guid isPermaLink="true">https://zyyme.com/kindle-mplayer-cloudmusic.html</guid><description>这是一个kual插件，需要越狱kindle，可以实现在kindle上使用otg接usb声卡播放网易云歌单的内容 这是之前做出来的，比较简陋，有人需要那就花了点时间整理出来 依赖有两个 kterm（用于显示alsamixer调节音量，压缩包中已包含） python3（主程序运行支持，可以参考 Kindle Voyage越狱 下载k5的python进行安装，太大</description><pubDate>Tue, 16 Jun 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;这是一个kual插件，需要越狱kindle，可以实现在kindle上使用otg接usb声卡播放网易云歌单的内容&lt;/p&gt;
&lt;p&gt;这是之前做出来的，比较简陋，有人需要那就花了点时间整理出来&lt;/p&gt;
&lt;p&gt;依赖有两个&lt;/p&gt;
&lt;p&gt;kterm（用于显示alsamixer调节音量，压缩包中已包含）&lt;/p&gt;
&lt;p&gt;python3（主程序运行支持，可以参考 &amp;lt;a href=&quot;https://zyyme.com/kindle-voyage-jailbreak.html&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&amp;gt;Kindle Voyage越狱&amp;lt;/a&amp;gt; 下载k5的python进行安装，太大了服务器有点hold不住不传上来了）&lt;/p&gt;
&lt;p&gt;剩下的只需要将文件解压出来合并到kindle的u盘根目录就可以&lt;/p&gt;
&lt;p&gt;下载 &amp;lt;a href=&quot;/assets/uploads/2020/06/kindle-mplayer-cloudmusic.zip&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&amp;gt;kindle-mplayer-cloudmusic.zip&amp;lt;/a&amp;gt;&lt;/p&gt;
&lt;p&gt;音乐放在music文件夹中，可以使用mplayer播放&lt;/p&gt;
&lt;p&gt;网易云音乐请自行修改 extensions\mplayer\menu.json中make_playlist.py后面的数字为歌单的id实现播放，在网页版点开我的音乐里的歌单，地址栏中id=后面的数字就是歌单id&lt;/p&gt;
&lt;p&gt;播放全程请保持亮屏，因为需要联网（待机会自动关闭wifi，时间长一些声卡也会断电）&lt;/p&gt;
&lt;p&gt;使用蓝牙的同学请自行测试（理论上应该没什么问题不过不知道是否走alsa）&lt;/p&gt;
&lt;p&gt;至于一寸mb一寸金之python环境特别大的问题打算看看找个arm环境拿pyinstaller打个二进制文件包（目前没环境）&lt;/p&gt;
</content:encoded></item><item><title>红米小爱Play hack</title><link>https://zyyme.com/redmi-xiaoai-play-hack.html</link><guid isPermaLink="true">https://zyyme.com/redmi-xiaoai-play-hack.html</guid><description>视频 BV12T4y1E7nq 因为没找到什么入口，于是打算拆开ttl 要无损拆开，需要准备金属撬棒，大塑料撬棒，锤子 先找一个角，用金属撬棒向外顶着锤子敲开一点缝（因为4个角缝最小） 然后塑料撬棒塞进去翘一圈即可拆开 准备一个ttl小板，三根弯排针 pcb上有小字写着线的连接顺序，tx，rx与小板的反着接 插电，开机，开机完会看到控制台输出了sncode:</description><pubDate>Sat, 06 Jun 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;视频 &amp;lt;a href=&quot;https://www.bilibili.com/video/BV12T4y1E7nq&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&amp;gt;BV12T4y1E7nq&amp;lt;/a&amp;gt;&lt;/p&gt;
&lt;p&gt;因为没找到什么入口，于是打算拆开ttl&lt;/p&gt;
&lt;p&gt;要无损拆开，需要准备金属撬棒，大塑料撬棒，锤子&lt;/p&gt;
&lt;p&gt;先找一个角，用金属撬棒向外顶着锤子敲开一点缝（因为4个角缝最小）&lt;/p&gt;
&lt;p&gt;然后塑料撬棒塞进去翘一圈即可拆开&lt;/p&gt;
&lt;p&gt;准备一个ttl小板，三根弯排针&lt;/p&gt;
&lt;p&gt;pcb上有小字写着线的连接顺序，tx，rx与小板的反着接&lt;/p&gt;
&lt;p&gt;插电，开机，开机完会看到控制台输出了sn_code: ，后面的复制下来，这样拼起来&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sn码A20EDC68-62E5-70C6-76E8-75879721B8EC
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;lt;a href=&quot;http://md5jiami.51240.com&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&amp;gt;到这里算一个32位小写md5&amp;lt;/a&amp;gt;，前14位就是root的密码&lt;/p&gt;
&lt;p&gt;开启ssh：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;dropbearkey -t rsa -f /data/dropbear_rsa_host_key
dropbear -r /data/dropbear_rsa_host_key
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;由于/是只读的，所以没法修改开机启动打开ssh，可以使用内置一个单片机来延时执行serial&lt;/p&gt;
&lt;p&gt;播放音频：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;mphelper tone 文件或链接
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;具体可以 cat /usr/bin/mphelper来了解提供的控制api&lt;/p&gt;
&lt;p&gt;系统信息：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;U-Boot 2018.05 (Dec 11 2019 - 02:53:20 +0000) Allwinner Technology, Build: jenkins-Mico_l07a_ota_publish-63
CPU: Allwinner Family
Model: sun8iw18
I2C: ready
DRAM: 64 MiB
Relocation Offset is: 00f48000
secure enable bit: 1
CPU=1008 MHz,PLL6=600 Mhz,AHB=200 Mhz, APB1=100Mhz MBus=264Mhz
Linux version 4.9.118 (jenkins@88969dbf45be) (gcc version 6.4.1 (OpenWrt/Linaro GCC 6.4-2017.11 2017-11) ) #1 SMP Wed Mar 25 02:19:05 UTC 2020
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;root@mico:~# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/root 23296 23296 0 100% /
devtmpfs 512 0 512 0% /dev
tmpfs 29240 204 29036 1% /tmp
tmpfs 512 0 512 0% /dev
/dev/by-name/UDISK 24981 3604 19497 16% /data
/dev/by-name/UDISK 24981 3604 19497 16% /etc/shadow
root@mico:~# free
total used free shared buffers cached
Mem: 58484 56312 2172 272 6532 16968
-/+ buffers/cache: 32812 25672
Swap: 0 0 0
root@mico:~# ps
PID USER VSZ STAT COMMAND
1 root 1324 S /sbin/procd
2 root 0 SW [kthreadd]
3 root 0 SW [ksoftirqd/0]
4 root 0 SW [kworker/0:0]
5 root 0 SW&amp;amp;lt; [kworker/0:0H]
6 root 0 SW [kworker/u4:0]
7 root 0 SW [rcu_sched]
8 root 0 SW [rcu_bh]
9 root 0 SW [migration/0]
10 root 0 SW&amp;amp;lt; [lru-add-drain]
11 root 0 SW [cpuhp/0]
12 root 0 SW [cpuhp/1]
13 root 0 SW [migration/1]
14 root 0 SW [ksoftirqd/1]
15 root 0 SW [kworker/1:0]
16 root 0 SW&amp;amp;lt; [kworker/1:0H]
17 root 0 SW [kdevtmpfs]
18 root 0 SW [kworker/u4:1]
205 root 0 SW [kworker/u4:2]
228 root 0 SW [oom_reaper]
229 root 0 SW&amp;amp;lt; [writeback]
230 root 0 SW&amp;amp;lt; [crypto]
232 root 0 SW&amp;amp;lt; [bioset]
234 root 0 SW&amp;amp;lt; [kblockd]
273 root 0 SW [kworker/1:1]
275 root 0 SW&amp;amp;lt; [cfg80211]
304 root 0 SW [kworker/0:1]
320 root 0 SW [kswapd0]
321 root 0 SW&amp;amp;lt; [vmstat]
452 root 0 SW&amp;amp;lt; [bioset]
453 root 0 SW [nand]
454 root 0 SW [nftld]
466 root 0 SW [nand_rcd]
483 root 0 SW&amp;amp;lt; [btfwwork]
484 root 0 SW [cfinteractive]
485 root 0 SW [autohotplug]
486 root 0 SW [irq/165-sunxi-m]
648 root 0 SW&amp;amp;lt; [ipv6_addrconf]
666 root 0 SW&amp;amp;lt; [kworker/0:1H]
667 root 0 SW&amp;amp;lt; [kworker/1:1H]
858 root 972 S /sbin/ubusd
866 root 1040 S -ash
1250 root 0 SW&amp;amp;lt; [krfcommd]
1331 root 1324 S /usr/sbin/dbus-daemon --system
1383 root 1412 S /sbin/netifd
1402 root 0 SW [jbd2/nand0p9-8]
1403 root 0 SW&amp;amp;lt; [ext4-rsv-conver]
1410 root 2600 S&amp;amp;lt; /usr/bin/quickplayer
1419 root 1040 S&amp;amp;lt; /bin/ledserver
1461 root 1040 S /usr/sbin/crond -f -c /etc/crontabs -l 5
1479 root 4296 S {syslog-ng} supervising syslog-ng
1480 root 4348 S /usr/sbin/syslog-ng
1581 root 6440 S /usr/bin/xiaomi_dns_server
1630 root 0 SW [ksdioirqd/mmc0]
1641 root 0 SW [RTW_XMIT_THREAD]
1642 root 0 SW [RTW_CMD_THREAD]
1643 root 0 SW [RTWHALXT]
1655 root 1700 S /usr/sbin/wpa_supplicant -Dnl80211 -iwlan0 -c/data/w
1678 root 1040 S udhcpc -f -S -s /bin/simple_dhcp.sh -R -t 0 -i wlan0
1699 root 704 S odhcp6c -s /lib/netifd/odhcp6c-script.sh -P0 -e -v w
1702 root 1048 S {wireless_point.} /bin/sh /usr/bin/wireless_point.sh
2578 root 824 S rtk_hciattach -n -s 115200 ttyS1 rtk_h4
2628 nobody 872 S /usr/sbin/dnsmasq -C /var/etc/dnsmasq.conf -k -x /va
2651 root 9936 S /usr/bin/upnp-disc
2667 root 1340 S /usr/bin/alarmd
2687 root 7820 S /usr/bin/mico_aivs_lab
2700 root 0 SW&amp;amp;lt; [kworker/u5:0]
2701 root 0 SW&amp;amp;lt; [hci0]
2702 root 0 SW&amp;amp;lt; [hci0]
2705 root 0 SW&amp;amp;lt; [kworker/u5:1]
2706 root 0 SW&amp;amp;lt; [kworker/u5:2]
2729 root 3420 S /usr/bin/bluetoothd -n
2776 root 10040 S /usr/bin/mediaplayer
2790 root 736 S /usr/sbin/wpa_cli -a/bin/wpa_action.sh
2791 root 8004 S /usr/bin/messagingagent --handler_threads 8
2809 root 1300 S /usr/bin/mico-helper
2823 root 1024 S /bin/wifitool
2899 root 5208 S /usr/bin/statpoints_daemon
2999 root 1032 S /usr/bin/miio_client -L /dev/null
3000 root 1092 S {miio_client_hel} /bin/sh /usr/bin/miio_client_helpe
3315 root 5248 S /usr/bin/bluealsa -i hci0 -p a2dp-sink
3316 root 5760 S /usr/bin/bluealsa-aplay 00:00:00:00:00:00 -vv -i hci
3317 root 5964 S /usr/bin/bluez_mibt_classical
3318 root 2628 S /usr/bin/bluez_mibt_ble
3385 root 564 S /usr/bin/miio_recv_line
3428 root 1236 S /usr/bin/miio_service
3449 mosquitt 844 S mosquitto -c /etc/mosquitto/mosquitto.conf
3482 root 18604 S&amp;amp;lt; /usr/bin/mipns-horizon -c /usr/share/mipns/ -r opus3
3490 root 960 S /bin/touchpad
3668 root 5832 S /usr/bin/mibrain_service
3678 root 1400 S /usr/bin/mico_ai_crontab
3689 root 780 S /usr/bin/nano_httpd
3702 root 3316 S /usr/bin/pns_ubus_helper
3721 root 3204 S /usr/bin/mibt_mesh_proxy
4028 root 1040 S sleep 10s
4030 root 1040 R ps
root@mico:/data# ls /etc/init.d/
adbd dnsmasq mico_ai_crontab silentboot
alarm done mico_aivs_lab start_sound
alsa dropbear mico_helper statpoints_daemon
bluetooth fstab miio sysctl
bluetoothd gpio_switch mitv-disc sysfixtime
boot led mosquitto syslog-ng
boot_check logrotate nano_httpd system
check_mac mediaplayer network touchpad
coredump messagingagent odhcp6c umount
cron mibrain_service pns wifitool
dbus mibt_mesh pns_ubus_helper wireless
dhcpc mibt_mesh_proxy quickplayer xiaomi_dns_server
root@mico:/data# cat /etc/rc.local
# Put your custom commands here that should be executed once
# the system init finished. By default this file does nothing.

#playback#
amixer -D hw:audiocodec cset name=&apos;External Speaker Switch&apos; 1
amixer -D hw:audiocodec cset name=&apos;digital volume&apos; 63
amixer -D hw:audiocodec cset name=&apos;LINEOUT volume&apos; 23
amixer -D hw:audiocodec cset name=&apos;Right LINEOUT Mux&apos; 1

#capture#
amixer -D hw:audiocodec cset name=&apos;Left Input Mixer MIC1 Boost Switch&apos; 1
amixer -D hw:audiocodec cset name=&apos;Right Input Mixer MIC2 Boost Switch&apos; 1
amixer -D hw:audiocodec cset name=&apos;Xadc Input Mixer MIC3 Boost Switch&apos; 1
amixer -D hw:audiocodec cset name=&apos;MIC1 gain volume&apos; 2
amixer -D hw:audiocodec cset name=&apos;MIC2 gain volume&apos; 2
amixer -D hw:audiocodec cset name=&apos;MIC3 gain volume&apos; 0

exit 0
root@mico:/data#
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>优化Linux触摸屏体验</title><link>https://zyyme.com/linux-touch-screen.html</link><guid isPermaLink="true">https://zyyme.com/linux-touch-screen.html</guid><description>有一说一，Linux下的触摸屏体验真的挺糟糕的，当然，Mac更加糟糕，比如右键的问题，当然之前有用一个digispark做了一个红外遥控接收器，顺便上面有个按键用于模拟鼠标右键的功能，或者是为了按右键插一个鼠标什么的... Touchegg Linux下的多点触摸辅助程序，当然如果只用chrome什么都不用装，chrome对触摸屏支持真的超级有好，绕过系统的</description><pubDate>Sat, 30 May 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;有一说一，Linux下的触摸屏体验真的挺糟糕的，当然，Mac更加糟糕，比如右键的问题，当然之前有用一个digispark做了一个红外遥控接收器，顺便上面有个按键用于模拟鼠标右键的功能，或者是为了按右键插一个鼠标什么的...&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;br /&gt;
&amp;lt;h3&amp;gt;Touchegg&amp;lt;/h3&amp;gt;
Linux下的多点触摸辅助程序，当然如果只用chrome什么都不用装，chrome对触摸屏支持真的超级有好，绕过系统的那种&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo apt-get install touchegg build-essential libqt4-dev libx11-6 libx11-dev
git clone https://github.com/Raffarti/Touchegg-gce.git
cd Touchegg-gce
qmake &amp;amp;amp;&amp;amp;amp; make &amp;amp;amp;&amp;amp;amp; sudo make install
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这就装好了，并且有一个Touchegg-GCE的图形设置程序&lt;br /&gt;
&amp;lt;h3&amp;gt;Onboard&amp;lt;/h3&amp;gt;
是个屏幕键盘，挺好用的&lt;/p&gt;
&lt;p&gt;谨慎使用 编辑文字时自动显示 可能会炸&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo apt-get install onboard
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>解决群晖硬盘休眠问题</title><link>https://zyyme.com/fix-dsm-hdd-sleep.html</link><guid isPermaLink="true">https://zyyme.com/fix-dsm-hdd-sleep.html</guid><description>哪怕去设置 - 硬件和电源 - 打开硬盘休眠和休眠日志,也能看到超级准时的1h唤醒一次硬盘的操作 经过检查,是群晖写日志的时候把硬盘唤醒了(是的,有事没事就写日志)于是就想了个办法把日志放到u盘上 首先打开群晖ssh,在设置 - 终端机中打开 准备一个u盘上的分区,待会需要格式化,郑咩的是 /dev/sdu4 下面需要换掉 连上ssh df -h 看一下准备</description><pubDate>Mon, 25 May 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;哪怕去设置 -&amp;gt; 硬件和电源 -&amp;gt; 打开硬盘休眠和休眠日志,也能看到超级准时的1h唤醒一次硬盘的操作&lt;/p&gt;
&lt;p&gt;经过检查,是群晖写日志的时候把硬盘唤醒了(是的,有事没事就写日志)于是就想了个办法把日志放到u盘上&lt;/p&gt;
&lt;p&gt;首先打开群晖ssh,在设置 -&amp;gt; 终端机中打开&lt;/p&gt;
&lt;p&gt;准备一个u盘上的分区,待会需要格式化,郑咩的是 /dev/sdu4 下面需要换掉&lt;/p&gt;
&lt;p&gt;连上ssh&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;df -h
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;看一下准备的那个分区会挂在那里,记录下来,郑咩这里是 /volumeUSB2/usbshare2-4 下面需要换掉&lt;/p&gt;
&lt;p&gt;格式化u盘分区&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;umount -fl /dev/sdu4
mkfs.ext4 /dev/sdu4
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;将 /var/log 复制过去,再挂载回去&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cp -a /var/log/* /volumeUSB2/usbshare2-4/
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;然后需要在设置中添加一个触发的任务计划,开机触发,下面是运行内容&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;mount /dev/sdu4 /var/log
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&amp;lt;del&amp;gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo vi /etc/init/syslog-ng.conf  
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;lt;/del&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;del&amp;gt;按 i 进行编辑在 echo &quot;Starting syslog-ng&quot; 的上面加上&amp;lt;/del&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;del&amp;gt;```
mount /dev/sdu4 /var/log || true&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;/del&amp;gt;

&amp;lt;del&amp;gt;然后按esc，:wq回车&amp;lt;/del&amp;gt;  

这个方法会被群晖强行重挂  

&amp;amp;nbsp;  

如果路由器比较高端  

在设置 -&amp;amp;gt; 安全性 -&amp;amp;gt; 防火墙 -&amp;amp;gt; 编辑规则  

把路由器添加进去,80,443,windows文件服务,bonjour,upnp,dlna都设置为拒绝&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>挂载群晖的硬盘</title><link>https://zyyme.com/mount-dsm-hdd.html</link><guid isPermaLink="true">https://zyyme.com/mount-dsm-hdd.html</guid><description>先装依赖 sudo apt-get install -y mdadm lvm2 btrfs-progs 硬盘插好 硬盘上第一个是系统分区,是ext4,如果要挂载他,那就直接 sudo mount -t ext4 设备路径 文件夹 这就挂载完成了,无需理会他显示的标识是什么 第二个是交换分区也就是虚拟内存swap 第三个是数据分区,按下面的操作挂载 sudo </description><pubDate>Mon, 25 May 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;先装依赖&lt;/p&gt;
&lt;p&gt;sudo apt-get install -y mdadm lvm2 btrfs-progs&lt;/p&gt;
&lt;p&gt;硬盘插好&lt;/p&gt;
&lt;p&gt;硬盘上第一个是系统分区,是ext4,如果要挂载他,那就直接&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo mount -t ext4 设备路径 文件夹
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这就挂载完成了,无需理会他显示的标识是什么&lt;/p&gt;
&lt;p&gt;第二个是交换分区也就是虚拟内存swap&lt;/p&gt;
&lt;p&gt;第三个是数据分区,按下面的操作挂载&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo mdadm -Asf
sudo vgchange -ay
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这时打开那个叫磁盘的app,能看到一个dm设备,当然,也可以&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo fdisk -l
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;来查看,然后直接点挂载或者&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo mount 设备路径 文件夹
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;p&gt;很不幸，在2020年11月9日晚上，我有一块硬盘因为坏道导致数据分区的超级块损坏，存储池直接消失了，由于dm容器不像Ext4拥有备用的超级快，因此尝试了4个小时尚未将超级块重建&lt;/p&gt;
&lt;p&gt;我使用的是Basic模式，也就是一个单盘raid1的dm容器里面套着Btrfs&lt;/p&gt;
&lt;p&gt;转折是在第二天dd备份了全盘镜像之后找到了一个可以直接挂载这个dm容器中的分区的办法&lt;/p&gt;
&lt;p&gt;先找到群晖的硬盘，比如/dev/sda，挂载第三个分区，下面自行替换（1048576是2048*512算出来的Data Offset偏移量）&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo losetup --find --show --read-only --offset 1048576 /dev/sda3
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这时候会显示一个设备路径，比如/dev/loop0，下面自行替换&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;mkdir sparkle
sudo mount /dev/loop0 sparkle
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>rk3328掉盘云（我家云、粒子云）armbian启用硬件加速</title><link>https://zyyme.com/rk3328-gpu.html</link><guid isPermaLink="true">https://zyyme.com/rk3328-gpu.html</guid><description>这个事情折腾了两天时间 更换内核 rk他虽然没有全志那么坑，但是呢郑咩实测只有使用了4.4.x的内核才有mali的gpu设备，新的5.4.x是没有的 可以使用这个命令来检查当前固件到底有没有这个设备，如有有了那就跳过这里直接安装驱动 ls /dev/mali 问题来了，为什么不直接用armbian页面上最大的下载按钮提供的4.4.x内核的版本呢？那个在启动大</description><pubDate>Sun, 24 May 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;这个事情折腾了两天时间&lt;br /&gt;
&amp;lt;h2&amp;gt;更换内核&amp;lt;/h2&amp;gt;
rk他虽然没有全志那么坑，但是呢郑咩实测只有使用了4.4.x的内核才有mali的gpu设备，新的5.4.x是没有的&lt;/p&gt;
&lt;p&gt;可以使用这个命令来检查当前固件到底有没有这个设备，如有有了那就跳过这里直接安装驱动&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ls /dev/mali*
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;问题来了，为什么不直接用armbian页面上最大的下载按钮提供的4.4.x内核的版本呢？那个在启动大约一到两分钟就会cpu报错停止，所以要先使用5.4.x内核版本的固件（也就是最新的固件）&lt;/p&gt;
&lt;p&gt;系统在 &amp;lt;a href=&quot;https://www.armbian.com/rock64/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&amp;gt;这里&amp;lt;/a&amp;gt; 下载，页面最下面，如果现在的系统正常运行可以直接使用现有系统&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;初始化后运行下面的命令来更换内核，郑咩这里提供一个备份，避免链接挂掉， &amp;lt;a href=&quot;/assets/uploads/2020/05/掉盘云能用的4.4.174内核.zip&quot;&amp;gt;掉盘云能用的4.4.174内核&amp;lt;/a&amp;gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;wget https://apt.armbian.com/pool/main/l/linux-4.4.174-rockchip64/linux-image-rockchip64_5.75_arm64.deb
wget https://apt.armbian.com/pool/main/l/linux-4.4.174-rockchip64/linux-dtb-rockchip64_5.75_arm64.deb
sudo dpkg -i *.deb
rm -rf *.deb
wget -O rk3328-chainedbox.dtb https://wind-1252079755.cos.ap-chengdu.myqcloud.com/Chainedbox/rk3328-chainedbox.dtb
apt-mark hold linux-dtb-rockchip64 linux-image-rockchip64
dpkg --purge linux-image-current-rockchip64 linux-dtb-current-rockchip64
sudo mv rk3328-chainedbox.dtb /boot/dtb/rockchip/rk3328-chainedbox.dtb
sed -i &apos;$a\fdtfile=rockchip/rk3328-chainedbox.dtb&apos; /boot/armbianEnv.txt
sudo reboot
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt; &lt;br /&gt;
&amp;lt;h2&amp;gt;安装驱动&amp;lt;/h2&amp;gt;
&amp;lt;a href=&quot;https://forum.armbian.com/topic/9310-rk3328-media-script-rock64-renegade/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&amp;gt;官方论坛&amp;lt;/a&amp;gt;&lt;/p&gt;
&lt;p&gt;照着做就行，什么？英语看不懂？&lt;/p&gt;
&lt;p&gt;&amp;lt;a href=&quot;https://mega.nz/#!s2A3SISA!vW_Rnets7FLNv510PwG_UgSrcGME_IU48xDnReND2dw&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&amp;gt;下载这个&amp;lt;/a&amp;gt;，把它scp或者用U盘拷贝到板上&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;tar -xJvf media-rk3328_1.0.txz
cd media-script
./media-rk3328.sh
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;一路回车就能安装完成&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;奇怪的知识增加了：&lt;/p&gt;
&lt;p&gt;思源黑体：```&lt;br /&gt;
sudo apt install fonts-noto-cjk&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>dlna接收器upmpdcli安装</title><link>https://zyyme.com/upmpdcli-install.html</link><guid isPermaLink="true">https://zyyme.com/upmpdcli-install.html</guid><description>sudo add-apt-repository ppa:jean-francois-dockes/upnpp1 sudo apt-get update sudo apt-get install upmpdcli sudo apt-get install mpd 然后大概可以用了 在 /etc/upmpdcli.conf 中的 friendlyname 是设备</description><pubDate>Sun, 24 May 2020 00:00:00 GMT</pubDate><content:encoded>&lt;pre&gt;&lt;code&gt;sudo add-apt-repository ppa:jean-francois-dockes/upnpp1
sudo apt-get update
sudo apt-get install upmpdcli
sudo apt-get install mpd
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;然后大概可以用了&lt;/p&gt;
&lt;p&gt;在 /etc/upmpdcli.conf 中的 friendlyname 是设备名字&lt;/p&gt;
&lt;p&gt;修改之后重启生效&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo /etc/init.d/upmpdcli restart
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果用的是 pulseaudio 那还得改一下mpd配置文件 /etc/mpd.conf 把 audio_output 部分改成这样&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;audio_output {
type     &quot;pulse&quot;
name     &quot;My PULSE Device&quot;
server   &quot;localhost&quot;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;修改之后重启生效&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;/etc/init.d/mpd restart
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;还要改一下 /etc/pulse/default.pa&lt;/p&gt;
&lt;p&gt;其中 #load-module module-native-protocol-tcp 改成&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;load-module module-native-protocol-tcp auth-anonymous=1
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;修改之后重启生效&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;pulseaudio -k
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;加到用户组&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo adduser mpd pulse
sudo adduser mpd pulse-access
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>更换VS Code背景图片</title><link>https://zyyme.com/change-vscode-background-image.html</link><guid isPermaLink="true">https://zyyme.com/change-vscode-background-image.html</guid><description>VS Code设置背景图片稍微有些麻烦，不像IDEA只需要去设置搜索set background image并给这个功能入库设置一个快捷键就可以使用了 首先要装一个叫background的插件，准备图片（最多三张），并记下图片文件的绝对路径 配置settings.json，添加需要的内容，什么你不知道怎么打开？按Cmd+Shfit+P选择打开设置（Windo</description><pubDate>Fri, 08 May 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;VS Code设置背景图片稍微有些麻烦，不像IDEA只需要去设置搜索set background image并给这个功能入库设置一个快捷键就可以使用了&lt;/p&gt;
&lt;p&gt;首先要装一个叫background的插件，准备图片（最多三张），并记下图片文件的绝对路径&lt;/p&gt;
&lt;p&gt;配置settings.json，添加需要的内容，什么你不知道怎么打开？按Cmd+Shfit+P选择打开设置（Windows：Ctrl+Shfit+P）&lt;/p&gt;
&lt;p&gt;图片设置，填写图片全路径，只有一张那就复制三次吧，useFront可以控制显示在上层还是下层：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&quot;background.customImages&quot;: [
// &quot;/Users/sparkle/Pictures/照片图库.photoslibrary/originals/D/D45F39A4-954B-470E-9B69-B04E29019ECE.png&quot;,
&quot;/Users/sparkle/Pictures/照片图库.photoslibrary/originals/9/92414D07-39E2-460B-BB63-8DEBB128F011.png&quot;,
&quot;/Users/sparkle/Pictures/照片图库.photoslibrary/originals/9/92414D07-39E2-460B-BB63-8DEBB128F011.png&quot;,
&quot;/Users/sparkle/Pictures/照片图库.photoslibrary/originals/9/92414D07-39E2-460B-BB63-8DEBB128F011.png&quot;
],
&quot;background.useDefault&quot;: false,
&quot;background.useFront&quot;: true,
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;下面样式表（css）二选一：&lt;/p&gt;
&lt;p&gt;显示在右下角，适合透明小图：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&quot;background.style&quot;: {
&quot;content&quot;:&quot;&apos;&apos;&quot;,
&quot;pointer-events&quot;:&quot;none&quot;,
&quot;position&quot;:&quot;absolute&quot;,
&quot;width&quot;:&quot;100%&quot;,
&quot;height&quot;:&quot;100%&quot;,
&quot;z-index&quot;:&quot;99999&quot;,
&quot;background.repeat&quot;:&quot;no-repeat&quot;,
&quot;background-size&quot;:&quot;25%,25%&quot;,
&quot;opacity&quot;:0.2
},
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;全屏显示，大背景图：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&quot;background.style&quot;: {
&quot;-webkit-background-size&quot;: &quot;cover&quot;,
&quot;-moz-background-size&quot;: &quot;cover&quot;,
&quot;-o-background-size&quot;: &quot;cover&quot;,
&quot;background-size&quot;: &quot;cover&quot;,
&quot;opacity&quot;:0.1
},
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;所有设置重启VS Code生效&lt;/p&gt;
</content:encoded></item><item><title>Kindle常用命令</title><link>https://zyyme.com/kindle-shell-command.html</link><guid isPermaLink="true">https://zyyme.com/kindle-shell-command.html</guid><description>更新屏幕 fbink -s 翻转颜色并更新屏幕 fbink -H -s 在屏幕上显示ip eips 25 1 &quot;IP: ifconfig wlan0 | grep &apos;inet addr&apos; | awk -F &apos;[ :]&apos; &apos;{print $13}&apos;&quot; 禁用锁屏 lipc-set-prop com.lab126.powerd preventScreenSaver</description><pubDate>Sun, 19 Apr 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;更新屏幕&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;fbink -s
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;翻转颜色并更新屏幕&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;fbink -H -s
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;在屏幕上显示ip&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;eips 25 1 &quot;IP: `ifconfig wlan0 | grep &apos;inet addr&apos; | awk -F &apos;[ :]&apos; &apos;{print $13}&apos;`&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;禁用锁屏&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;lipc-set-prop com.lab126.powerd preventScreenSaver 1
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;启用锁屏&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;lipc-set-prop com.lab126.powerd preventScreenSaver 0
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;iptables允许所有入站&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;iptables -I INPUT -j ACCEPT
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;iptables恢复默认&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;iptables-restore &amp;amp;lt; /etc/sysconfig/iptables &amp;amp;amp;&amp;amp;amp; iptables -I INPUT -p tcp --dport 22 -j ACCEPT
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;关机&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;halt
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;切换夜间模式（反色，需要USBNetwork）&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;fbdepth -H toggle
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>哔哩哔哩av号BV号互转</title><link>https://zyyme.com/bilibili-bvav.html</link><guid isPermaLink="true">https://zyyme.com/bilibili-bvav.html</guid><description>因为比较懒整了这么个东西 毕竟电脑可以直接在控制台输入aid按回车就会显示av号 不过手机就比较惨 av号BV号互转</description><pubDate>Sun, 29 Mar 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;因为比较懒整了这么个东西&lt;/p&gt;
&lt;p&gt;毕竟电脑可以直接在控制台输入aid按回车就会显示av号&lt;/p&gt;
&lt;p&gt;不过手机就比较惨&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe style=&quot;width: 100%; height: 200px;&quot; src=&quot;/bili.html&quot; frameborder=&quot;0&quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;a href=&quot;/bili.html&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&amp;gt;av号BV号互转&amp;lt;/a&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>解决新系统格式化的ext4无法在老系统挂载</title><link>https://zyyme.com/fix-new-ext4-mount-error-on-old-system.html</link><guid isPermaLink="true">https://zyyme.com/fix-new-ext4-mount-error-on-old-system.html</guid><description>经常在新的Linux系统上格式化的ext4没法在路由器等内核比较老的设备上挂载，因为新的系统的ext4有一些新特性在老的系统上不支持（然而这些新特性都是默认启用的） 怎么解决呢？重新格式化又不是不行（笑） 那就关掉不支持的功能吧 先找到你无法挂载的硬盘分区，我这里是 /dev/sda1 先检查下分区表 [NAS /home/root] e2fsck -f /</description><pubDate>Mon, 23 Mar 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;经常在新的Linux系统上格式化的ext4没法在路由器等内核比较老的设备上挂载，因为新的系统的ext4有一些新特性在老的系统上不支持（然而这些新特性都是默认启用的）&lt;/p&gt;
&lt;p&gt;怎么解决呢？重新格式化又不是不行（笑）&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;那就关掉不支持的功能吧&lt;/p&gt;
&lt;p&gt;先找到你无法挂载的硬盘分区，我这里是 /dev/sda1 先检查下分区表&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;[NAS /home/root]# e2fsck -f /dev/sda1
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;查看所有启用的特性&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;[NAS /home/root]# tune2fs -l /dev/sda1 | grep features
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype extent 64bit flex_bg sparse_super large_file hu_file dir_nlink extra_isize metadata_csum
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;关一个试一次能不能挂上&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;[NAS /home/root]# tune2fs -O ^metadata_csum /dev/sda1
tune2fs 1.45.4 (23-Sep-2019)
Disabling checksums could take some time.
Proceed anyway (or wait 5 seconds to proceed) ? (y,N) y
[NAS /home/root]# tune2fs -O ^has_journal /dev/sda1
tune2fs 1.45.4 (23-Sep-2019)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;好了能挂上了，问题解决&lt;/p&gt;
</content:encoded></item><item><title>汇尔微管家 M1 Vpod ar9331 自用 LEDE 固件</title><link>https://zyyme.com/vpod-lede.html</link><guid isPermaLink="true">https://zyyme.com/vpod-lede.html</guid><description>root@Vpod: cat /proc/mtd dev: size erasesize name mtd0: 00020000 00010000 &quot;u-boot&quot; mtd1: 00143c68 00010000 &quot;kernel&quot; mtd2: 00e8c398 00010000 &quot;rootfs&quot; mtd3: 00220000 00010000 &quot;rootfs</description><pubDate>Wed, 18 Mar 2020 00:00:00 GMT</pubDate><content:encoded>&lt;pre&gt;&lt;code&gt;root@Vpod:~# cat /proc/mtd
dev:    size   erasesize  name
mtd0: 00020000 00010000 &quot;u-boot&quot;
mtd1: 00143c68 00010000 &quot;kernel&quot;
mtd2: 00e8c398 00010000 &quot;rootfs&quot;
mtd3: 00220000 00010000 &quot;rootfs_data&quot;
mtd4: 00010000 00010000 &quot;art&quot;
mtd5: 00fd0000 00010000 &quot;firmware&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;写到mtd5 也就是 firmware 即可&lt;/p&gt;
&lt;p&gt;需要16m flash&lt;/p&gt;
&lt;p&gt;需要16m flash&lt;/p&gt;
&lt;p&gt;需要16m flash&lt;/p&gt;
&lt;p&gt;重要的事情说三次&lt;/p&gt;
&lt;p&gt;如果是官方的4m flash&lt;/p&gt;
&lt;p&gt;可以找一个16m flash先用编程器写一个品胜的breed，然后电脑开中断程序，按住电源键启动（一直按着）&lt;/p&gt;
&lt;p&gt;刷入官方的4m编程器备份(取消勾选自动重启，取消勾选保留art，取消勾选保留BootLoader)，再以刷入固件的方式刷入本固件&lt;/p&gt;
&lt;p&gt;基于Lean 2020年3月16日的代码，以及TS-D084修改而来&lt;/p&gt;
&lt;p&gt;固件下载：&lt;/p&gt;
&lt;p&gt;&amp;lt;a href=&quot;/assets/uploads/2020/03/vpod-lede-20200328.zip&quot;&amp;gt;vpod-lede-20200328&amp;lt;/a&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;a href=&quot;/assets/uploads/2020/03/vpod-lede-20200316.zip&quot;&amp;gt;vpod-lede-20200316&amp;lt;/a&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>解决macOS10.15+的软件兼容性问题</title><link>https://zyyme.com/fix-macos10-15-compatibility-issues.html</link><guid isPermaLink="true">https://zyyme.com/fix-macos10-15-compatibility-issues.html</guid><description>我这里有两个软件出现了不显示画面和手柄无法输入的的问题，是Wmware Fusion和Citra 先去应用程序里找到这个app，然后右键显示包内容，打开Contents中的Info.plist，找到有CFBundleIdentifier的那一行的下一行，把string标签中的包名复制出来待会会用到 打开终端机，执行这3条命令，注意把包名替换刚刚复制出来的包名</description><pubDate>Sun, 01 Mar 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;我这里有两个软件出现了不显示画面和手柄无法输入的的问题，是Wmware Fusion和Citra&lt;/p&gt;
&lt;p&gt;先去应用程序里找到这个app，然后右键显示包内容，打开Contents中的Info.plist，找到有CFBundleIdentifier的那一行的下一行，把string标签中的包名复制出来待会会用到&lt;/p&gt;
&lt;p&gt;打开终端机，执行这3条命令，注意把包名替换刚刚复制出来的包名&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo sqlite3 &quot;/Library/Application Support/com.apple.TCC/TCC.db&quot; &apos;insert into access values (&quot;kTCCServiceScreenCapture&quot;, &quot;包名&quot;, 0, 1, 1, &quot;&quot;, &quot;&quot;, &quot;&quot;, &quot;UNUSED&quot;, &quot;&quot;, 0,1565595574)&apos;
sudo sqlite3 &quot;/Library/Application Support/com.apple.TCC/TCC.db&quot; &apos;insert into access values (&quot;kTCCServiceListenEvent&quot;, &quot;包名&quot;, 0, 1, 1, &quot;&quot;, &quot;&quot;, &quot;&quot;, &quot;UNUSED&quot;, &quot;&quot;, 0,1565595574)&apos;
sudo sqlite3 &quot;/Library/Application Support/com.apple.TCC/TCC.db&quot; &apos;insert into access values (&quot;kTCCServicePostEvent&quot;, &quot;包名&quot;, 0, 1, 1, &quot;&quot;, &quot;&quot;, &quot;&quot;, &quot;UNUSED&quot;, &quot;&quot;, 0,1565595574)&apos;

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这就给了他辅助功能、输入监视、屏幕录制的权限啦&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Citra：（启动游戏之后要改变一下窗口大小才才会显示，另外mac可以完美支持ps手柄usb外接，xbox的不行）&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo sqlite3 &quot;/Library/Application Support/com.apple.TCC/TCC.db&quot; &apos;insert into access values (&quot;kTCCServiceScreenCapture&quot;, &quot;com.citra-emu.citra&quot;, 0, 1, 1, &quot;&quot;, &quot;&quot;, &quot;&quot;, &quot;UNUSED&quot;, &quot;&quot;, 0,1565595574)&apos;
sudo sqlite3 &quot;/Library/Application Support/com.apple.TCC/TCC.db&quot; &apos;insert into access values (&quot;kTCCServiceListenEvent&quot;, &quot;com.citra-emu.citra&quot;, 0, 1, 1, &quot;&quot;, &quot;&quot;, &quot;&quot;, &quot;UNUSED&quot;, &quot;&quot;, 0,1565595574)&apos;
sudo sqlite3 &quot;/Library/Application Support/com.apple.TCC/TCC.db&quot; &apos;insert into access values (&quot;kTCCServicePostEvent&quot;, &quot;com.citra-emu.citra&quot;, 0, 1, 1, &quot;&quot;, &quot;&quot;, &quot;&quot;, &quot;UNUSED&quot;, &quot;&quot;, 0,1565595574)&apos;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Wmware Fusion：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo sqlite3 &quot;/Library/Application Support/com.apple.TCC/TCC.db&quot; &apos;insert into access values (&quot;kTCCServiceScreenCapture&quot;, &quot;com.vmware.fusion&quot;, 0, 1, 1, &quot;&quot;, &quot;&quot;, &quot;&quot;, &quot;UNUSED&quot;, &quot;&quot;, 0,1565595574)&apos;
sudo sqlite3 &quot;/Library/Application Support/com.apple.TCC/TCC.db&quot; &apos;insert into access values (&quot;kTCCServiceListenEvent&quot;, &quot;com.vmware.fusion&quot;, 0, 1, 1, &quot;&quot;, &quot;&quot;, &quot;&quot;, &quot;UNUSED&quot;, &quot;&quot;, 0,1565595574)&apos;
sudo sqlite3 &quot;/Library/Application Support/com.apple.TCC/TCC.db&quot; &apos;insert into access values (&quot;kTCCServicePostEvent&quot;, &quot;com.vmware.fusion&quot;, 0, 1, 1, &quot;&quot;, &quot;&quot;, &quot;&quot;, &quot;UNUSED&quot;, &quot;&quot;, 0,1565595574)&apos;
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>Kindle Voyage越狱</title><link>https://zyyme.com/kindle-voyage-jailbreak.html</link><guid isPermaLink="true">https://zyyme.com/kindle-voyage-jailbreak.html</guid><description>20240122更新：这个方法只适合旧版uboot的kindle，简单的说就是KO2和PW4和K10开始这个方法均不适用，以及老机器全停更了，最新系统已经可以直接完美越狱了 由于kindle自动更新到5.12.3，我之前的越狱被覆盖掉了，于是我就得再搞一次，因此记录一下 本教程可以用于任何系统版本，Kindle各种触屏型号的越狱没有区别，可以直接参考操作 视</description><pubDate>Sat, 15 Feb 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;####20240122更新：这个方法只适合旧版uboot的kindle，简单的说就是KO2和PW4和K10开始这个方法均不适用，以及老机器全停更了，最新系统已经可以直接完美越狱了&lt;/p&gt;
&lt;p&gt;由于kindle自动更新到5.12.3，我之前的越狱被覆盖掉了，于是我就得再搞一次，因此记录一下&lt;/p&gt;
&lt;p&gt;本教程可以用于任何系统版本，Kindle各种触屏型号的越狱没有区别，可以直接参考操作&lt;/p&gt;
&lt;p&gt;视频教程：&amp;lt;a href=&quot;https://www.bilibili.com/video/av89177622&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&amp;gt;av89177622&amp;lt;/a&amp;gt;&lt;/p&gt;
&lt;p&gt;需要准备的东西&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;螺丝刀&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;指甲或撬棒等能翘塑料的东西&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;一个1.8v的ttl小板（看别人帖子3.3v的其实也可以，不过我建议是随便买个便宜的1.8v的比较保险）&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;烙铁和几条线&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;一条能连接Kindle Usb 的数据线&amp;lt;/li&amp;gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
软件准备&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;一个能连串口的软件（比如MobaXterm）&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;在 &amp;lt;a href=&quot;https://www.sven.de/kindle/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&amp;gt;这个页面&amp;lt;/a&amp;gt; 把kindle的序列号填进去算出root密码&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;在 &amp;lt;a href=&quot;https://www.mobileread.com/forums/showthread.php?t=225030&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&amp;gt;这个页面&amp;lt;/a&amp;gt; 找到Kindle 5标签下面的，下载 K5 JailBreak、K5 JailBreak Hotfix、MR Package Installer、KUAL（有几个cdn文件被可能打开巨慢）&amp;lt;/li&amp;gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
另外我做了个插件用的挺爽 &amp;lt;a href=&quot;https://zyyme.com/kindle-web-filebrowser.html&quot;&amp;gt;Kindle Web 文件管理器&amp;lt;/a&amp;gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;连接串口线&amp;lt;/h2&amp;gt;
Kindle Voyage超级容易拆，只需要把背面顶部的塑料盖板从下往上扣出来，拧掉螺丝，再把背板往下一滑就可以打开了&lt;/p&gt;
&lt;p&gt;先拔掉电池，然后找到这个地方&lt;/p&gt;
&lt;p&gt;从左往右顺序是 TX  RX  GND 与小板交叉连接（TX接小板RX，RX接小板TX，GND接GND）&lt;/p&gt;
&lt;p&gt;用线焊接好透明胶贴一下以防不测（带线的小板一般绿色是TX白色是RX）&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/assets/uploads/2020/02/kindlejb1.jpg&quot; alt=&quot;ttl&quot; /&gt;&lt;/p&gt;
&lt;p&gt;接好之后电池接口按回去，反过来，屏幕朝上（待会会用到触摸屏）&lt;/p&gt;
&lt;p&gt; &lt;br /&gt;
&amp;lt;h2&amp;gt;删除root密码&amp;lt;/h2&amp;gt;
插好小板，打开串口工具，选好usb小板的串口，速度设置为115200&lt;/p&gt;
&lt;p&gt;kindle按电源键开机，同时在黑框窗口中按连续按回车，看到显示 uboot &amp;gt; 时你就成功了&lt;/p&gt;
&lt;p&gt;输入&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;bootm 0xE41000
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;回车等待启动，进入一个文字界面&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;o&amp;gt; REBOOT...&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;&amp;lt;EXIT LOGIN&amp;gt; EXIT...&amp;lt;/li&amp;gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
这时kindle会显示大树和DIAGS EXIT的提示，在串口工具操作&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;mkdir /tmp/sparkle
mount /dev/mmcblk0p1 /tmp/sparkle
vi /tmp/sparkle/etc/passwd
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;按i进入编辑模式&lt;/p&gt;
&lt;p&gt;将&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;root:x:0:0:root:/tmp/root:/bin/sh
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;中的x删掉，也就是改为&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;root::0:0:root:/tmp/root:/bin/sh
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;按esc，然后输入 :wq 保存退出，然后重启&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;reboot
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt; &lt;br /&gt;
&amp;lt;h2&amp;gt;安装JailBreak&amp;lt;/h2&amp;gt;
（如果更新出现007错误，请从这里开始做）&lt;/p&gt;
&lt;p&gt;将K5 JailBreak中的JailBreak\kindle-5.4-jailbreak.zip解压，扔到KindleU盘的根目录，并在串口处输入&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cd /mnt/us
./jb.sh
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;别按回车，拔掉连接Kindle的数据线，一秒之后，按下回车，此时看到屏幕底部显示 JAILBREAK 那就成功一半了&lt;/p&gt;
&lt;p&gt;将K5 JailBreak Hotfix解压，里面有一个bin文件，扔到KindleU盘的根目录，拔掉连接Kindle的数据线，在Kindle设置中点右上角的菜单更新&lt;/p&gt;
&lt;p&gt;如果错误007，请从上面开始重新做，直到这里提示更新成功&lt;/p&gt;
&lt;p&gt; &lt;br /&gt;
&amp;lt;h2&amp;gt;安装KUAL&amp;lt;/h2&amp;gt;
首先需要mrpi，只要把下载的MR Package Installer解压扔到kindleU盘的根目录就可以了&lt;/p&gt;
&lt;p&gt;然后把下载的KUAL里的那个没有hotfix的install的bin文件扔到KindleU盘的mrpackages 目录（为了使用更多shell命令我还扔了usbnet），将KUAL-KDK-2.0.azw2扔到KindleU盘的documents目录&lt;/p&gt;
&lt;p&gt;拔掉连接Kindle的数据线，在Kindle的搜索框输入&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;;log mrpi
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;然后按回车搜索，这时候屏幕底部会显示提示，然后安装完自动重启&lt;/p&gt;
&lt;p&gt;如果显示的是搜索无结果，那就需要继续往下看了&lt;/p&gt;
&lt;p&gt; &lt;br /&gt;
&amp;lt;h2&amp;gt;修复;log mrpi命令&amp;lt;/h2&amp;gt;
升级到5.12.2以及以上的版本会丢失log命令&lt;/p&gt;
&lt;p&gt;下载 &amp;lt;a href=&quot;/assets/uploads/2020/02/restore_log_0.1.zip&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&amp;gt;这个文件&amp;lt;/a&amp;gt; 并解压&lt;/p&gt;
&lt;p&gt;将 emergency.sh 扔到KindleU盘的根目录，拔掉连接Kindle的数据线，重启Kindle&lt;/p&gt;
&lt;p&gt;正常情况下KindleU盘的根目录应该会出现 done_emergency.sh、old_debug_cmds.json、new_debug_cmds.json 这三个文件&lt;/p&gt;
&lt;p&gt;如果没有，那请重新安装hotfix（将K5 JailBreak Hotfix解压，里面有一个bin文件，扔到KindleU盘的根目录，拔掉连接Kindle的数据线，在Kindle设置中点右上角的菜单更新）&lt;/p&gt;
&lt;p&gt;此时再重启，;log mrpi就可以用了&lt;/p&gt;
&lt;p&gt;如果出了什么差错，比如 new_debug_cmds.json 看起来不正常，可以将 emergency_revert.sh 扔到KindleU盘的根目录，并将名字改为 emergency.sh 并重启Kindle即可还原&lt;/p&gt;
&lt;p&gt; &lt;br /&gt;
&amp;lt;h2&amp;gt;后话&amp;lt;/h2&amp;gt;
在上面软件准备的第3，还有一些其他的环境可以下载，强烈推荐安装USBNetwork，可以提供Linux下很多常用命令和ssh的功能，fbdepth -H toggle可以反转屏幕颜色（夜间模式）&lt;/p&gt;
&lt;p&gt;每次更新系统前，一定要记得下载一个最新版本的Hotfix安装一下再更新系统，避免越狱丢失&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;以下内容来自书伴，证明只要曾经安装过 2019 年 10 月 7 日发布的或更新的版本的Hotfix，在系统更新时会执行kindle的u盘根目录的emergency.sh，kindle允许同版本固件多次更新，因此可以使用此方法来恢复越狱(上面的jb.sh)以及;log命令&lt;/p&gt;
&lt;p&gt;亚马逊刚刚发布了 5.12.4 版本固件，在例行升级固件的过程中，偶然瞥见 Kindle 屏幕上显示了一些原生系统不会出现的提示信息字符（想必越狱过的小伙伴都熟悉安装越狱文件或插件的时候屏幕上出现的字符），这让书伴忽然意识到，之前为了测试把 Shell 文件 emergency.sh 遗留在了 Kindle 根目录，难道更新固件时因为某种原因把它执行了？升级完成后，发现果然如此，脚本文件的确被成功执行了。&lt;br /&gt;
按照 MobileRead 论坛上那个方案的步骤，成功执行 Shell 脚本后需要再次重启 Kindle 让脚本的修改生效，然后书伴把&amp;lt;a href=&quot;https://bookfere.com/post/326.html#rjb_1_1&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&amp;gt;恢复越狱教程&amp;lt;/a&amp;gt;提供的 RUNME.sh 文件放入 Kindle 根目录，在搜索框中输入 &lt;code&gt;;log runme&lt;/code&gt; 命令，左上角出现了预期的 “Hello World!”字符，这证明 &lt;code&gt;;log&lt;/code&gt; 命令确实恢复了，越狱也没失效。&lt;br /&gt;
为了验证这不是一个巧合，书伴又拿另外一台因为升级 5.12.2 版本固件导致无法正常使用越狱的 Kindle Paperwhite 3（当前固件版本 5.12.3）用同样的方法测试了一遍，结果同样恢复了 &lt;code&gt;;log&lt;/code&gt; 命令，并能正常安装越狱插件。这的确是个巧合，虽然不知道是什么机制导致的，但重要的是能让越狱恢复正常了。&lt;/p&gt;
</content:encoded></item><item><title>Win10 wsl子系统大战Docker</title><link>https://zyyme.com/run-docker-on-win10-wsl.html</link><guid isPermaLink="true">https://zyyme.com/run-docker-on-win10-wsl.html</guid><description>我这里使用的是Win10 Ltsc简单点说就是1809啦，无缘wsl2 先加个key，装依赖 sudo apt-get install apt-transport-https ca-certificates curl software-properties-common curl -fsSL https://download.docker.com/linux</description><pubDate>Wed, 08 Jan 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;我这里使用的是Win10 Ltsc简单点说就是1809啦，无缘wsl2&lt;/p&gt;
&lt;p&gt;先加个key，装依赖&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository &quot;deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果直接安装的话，运行的时候就会得到&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;docker: Error response from daemon: OCI runtime create failed: container_linux.go:346: starting container process caused &quot;process_linux.go:319: getting the final child&apos;s pid from pipe caused \&quot;EOF\&quot;&quot;: unknown.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;所以最新版大概是劝退了，那就上旧版吧，19的版本不行18的还是可以的，使用这个命令可以查询历史版本&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;apt-cache madison docker-ce
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;然后挑一个，安装（1809看别人踩过的坑可以用18.06.1）&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo apt-get install docker-ce=18.06.1~ce~3-0~ubuntu
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;启动&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo cgroupfs-mount
sudo service docker start
sudo docker version
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;嗯呐，能显示出Server 的Version那就是安装成功惹&lt;/p&gt;
&lt;p&gt;装个控制面板吧&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;docker pull portainer/portainer
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;启动它(实测访问不了)&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo docker run -d -p 9000:9000 \
--restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
--name prtainer-test \
portainer/portainer
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;嫌下载慢整个 &amp;lt;a href=&quot;https://cr.console.aliyun.com/cn-hongkong/instances/mirrors&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&amp;gt;阿里镜像&amp;lt;/a&amp;gt; 吧&lt;/p&gt;
</content:encoded></item><item><title>Wear OS中国版国际化共存Magisk模块</title><link>https://zyyme.com/wear-os-to-global-magisk.html</link><guid isPermaLink="true">https://zyyme.com/wear-os-to-global-magisk.html</guid><description>本模块可以给 Wear OS中国版 添加缺失的 Wear OS国际版 相关Google服务，实现国际版与中国版共存，同时享受国内App与国外App的双重体验，通俗点说就像是给国内的手机刷Gapps。 手机端需要使用国际版Wear OS App进行连接(也就是说手机端必须要有Google服务和Google搜索App) 在TicWatch Pro上测试通过，第一</description><pubDate>Sun, 01 Dec 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;本模块可以给 Wear OS中国版 添加缺失的 Wear OS国际版 相关Google服务，实现国际版与中国版共存，同时享受国内App与国外App的双重体验，通俗点说就像是给国内的手机刷Gapps。&lt;/p&gt;
&lt;p&gt;手机端需要使用国际版Wear OS App进行连接(也就是说手机端必须要有Google服务和Google搜索App)&lt;/p&gt;
&lt;p&gt;在TicWatch Pro上测试通过，第一次开机可能比较卡，请耐心等待&lt;/p&gt;
&lt;p&gt;直接刷入就可以了，不需要双清什么的，如果有奇怪的问题，在设置里卸载Wear OS的更新(因为这个模块带国际板的Wear OS手表自动更新的是国内版的)&lt;/p&gt;
&lt;p&gt;需要在手机国内版app走完初始化再使用本模块，并且再下载一个手机国际板app配合使用（数据是存在play服务的所以数据共用）&lt;/p&gt;
&lt;p&gt;Magisk模块下载（&amp;lt;a href=&quot;https://pan.baidu.com/s/1QaSakcHJAH1QBSmD5FpBBw&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&amp;gt;百度云&amp;lt;/a&amp;gt; 提取码: 28pw）&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;这是一个反过来的版本，也就是把国际版国内化&lt;/p&gt;
&lt;p&gt;目前手头没有国际版的表可以测试，想协助我做&amp;lt;del&amp;gt;小白鼠&amp;lt;/del&amp;gt;测试的可以来群里讨论一下：639551216&lt;/p&gt;
&lt;p&gt;进不了系统可以这样删掉模块&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;adb shell
su
rm -rf /data/adb/modules/wear-os-to-china-magisk
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Magisk模块下载（&amp;lt;a href=&quot;https://pan.baidu.com/s/12zjYQASZ6i5VOTDOhAiOow&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&amp;gt;百度云&amp;lt;/a&amp;gt; 提取码: 6izr）（v3）&lt;/p&gt;
&lt;p&gt;&amp;lt;a href=&quot;https://www.coolapk.com/feed/16545176?shareKey=OTAxZTE5MjFmZjk2NWU4MDU5NTg~&amp;amp;shareUid=798985&amp;amp;shareFrom=com.coolapk.market_10.0.3&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&amp;gt;E和S看这里&amp;lt;/a&amp;gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;简单说一下magisk怎么刷，免得被伸手党和喷子喷：&lt;/p&gt;
&lt;p&gt;1.以下内容不懂的请Google或者bing，英语看不懂有Google拍照翻译&lt;/p&gt;
&lt;p&gt;2.从Google开发者或者其他地方下载adb工具包，从twrp官网下载对应型号比如ticwatch pro的twrp，在magisk官网下载magisk最新版（目前是20）&lt;/p&gt;
&lt;p&gt;3.开adb调试连接好电脑&lt;/p&gt;
&lt;p&gt;4.执行以下命令&lt;/p&gt;
&lt;p&gt;adb push 把magisk.zip拖进来 /sdcard&lt;/p&gt;
&lt;p&gt;adb push 把模块.zip拖进来 /sdcard&lt;/p&gt;
&lt;p&gt;adb reboot bootloader&lt;/p&gt;
&lt;p&gt;5.如果看到不是unlock需要解锁，否则跳到7&lt;/p&gt;
&lt;p&gt;fastboot oem unlock&lt;/p&gt;
&lt;p&gt;6.在手表上确认解锁（会清空所有数据）&lt;/p&gt;
&lt;p&gt;7.执行命令&lt;/p&gt;
&lt;p&gt;fastboot boot 把twrp.img拖进来&lt;/p&gt;
&lt;p&gt;8.在twrp里lnstall安装magisk.zip和模块.zip，装完了reboot -&amp;gt; system重启&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
</content:encoded></item><item><title>iptables常用命令</title><link>https://zyyme.com/iptables-useful-command.html</link><guid isPermaLink="true">https://zyyme.com/iptables-useful-command.html</guid><description>以下命令需要以root的权限执行 &amp;gt; 是 代码显示或许有些bug 展示所有的规则： iptables -vnL --line-numbers 如果比较特殊的，比如nat，那就需要指定类型，其他命令也一样： iptables -t nat -vnL --line-numbers 删除规则： iptables -D 类型 对应的序号num 这样可以删掉IN</description><pubDate>Thu, 29 Aug 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&amp;lt;h2&amp;gt;以下命令需要以root的权限执行&amp;lt;/h2&amp;gt;
&amp;lt;h6&amp;gt;&amp;amp;gt; 是 &amp;gt; 代码显示或许有些bug&amp;lt;/h6&amp;gt;
&amp;lt;h3&amp;gt;展示所有的规则：&amp;lt;/h3&amp;gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;iptables -vnL --line-numbers
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果比较特殊的，比如nat，那就需要指定类型，其他命令也一样：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;iptables -t nat -vnL --line-numbers
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;lt;h3&amp;gt;删除规则：&amp;lt;/h3&amp;gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;iptables -D 类型 对应的序号num
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这样可以删掉INPUT规则的第一条：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;iptables -D INPUT 1
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这样可以删掉nat中PREROUTING规则的第一条：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;iptables -t nat -D PREROUTING 1
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;lt;h3&amp;gt;开放端口(INPUT)：&amp;lt;/h3&amp;gt;
开80：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;iptables -I INPUT -p tcp --dport 80 -j ACCEPT
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;开22：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;iptables -I INPUT -p tcp --dport 22 -j ACCEPT
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;lt;h3&amp;gt;本地的端口转发(REDIRECT)：&amp;lt;/h3&amp;gt;
80转到8080：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;可以指定固定访问客户端ip实现对端口的复用：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;iptables -t nat -I PREROUTING -p tcp -s 223.6.6.6 --dport 8080 -j REDIRECT --to-ports 22
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;lt;h3&amp;gt;远程的端口转发(DNAT)：&amp;lt;/h3&amp;gt;
这里配置相对比较麻烦，如果是做一下跳板简单用一下的，我推荐：&amp;lt;a href=&quot;https://github.com/zanjie1999/showArgvSocket&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&amp;gt;showArgvSocket&amp;lt;/a&amp;gt;&lt;/p&gt;
&lt;p&gt;开启ip路由转发功能：&lt;/p&gt;
&lt;p&gt;临时：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;echo 1 &amp;amp;gt; /proc/sys/net/ipv4/ip_forward
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;永久：&lt;/p&gt;
&lt;p&gt;编辑 /etc/sysctl.conf 添加到最后：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;net.ipv4.ip_forward = 1
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;或者找到被注释的这行删掉最前面的#注释并把0改成1&lt;/p&gt;
&lt;p&gt;应用设置：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sysctl -p
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;添加转发：&lt;/p&gt;
&lt;p&gt;80转发到1.1.1.1的80：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 1.1.1.1:80
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;可以指定固定访问客户端ip实现对端口的复用：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;iptables -t nat -I PREROUTING -p tcp -s 223.6.6.6 --dport 443 -j DNAT --to-destination 1.1.1.1:80
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;lt;h3&amp;gt;其他：&amp;lt;/h3&amp;gt;
转发时使用 -d 可以指定服务端监听ip，这在多ip服务器上很有用，或是监听127.0.0.1仅允许本地访问&lt;/p&gt;
&lt;p&gt;查看状态：&lt;/p&gt;
&lt;p&gt;/etc/init.d/iptables status&lt;/p&gt;
&lt;p&gt;启动：&lt;/p&gt;
&lt;p&gt;/etc/init.d/iptables start&lt;/p&gt;
&lt;p&gt;停止：&lt;/p&gt;
&lt;p&gt;/etc/init.d/iptables stop&lt;/p&gt;
&lt;p&gt;保存：&lt;/p&gt;
&lt;p&gt;centos大概可以这样操作：&lt;/p&gt;
&lt;p&gt;service iptables save&lt;/p&gt;
&lt;p&gt;比较通用的打开姿势（以下任意一条）：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;iptables-save &amp;amp;gt; /etc/iptables.rules
iptables-save &amp;amp;gt; /etc/network/iptables.up.rules
iptables-save &amp;amp;gt; /etc/iptables/rules.v4
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>FydeOS安装与魔改</title><link>https://zyyme.com/fydeos-install-and-edit.html</link><guid isPermaLink="true">https://zyyme.com/fydeos-install-and-edit.html</guid><description>安装 我这里使用的设备是pocket2，官方有一个图形化的安装程序，不过看起来兼容性不太好，安装到emmc提示不能修改分区名称，安装到tf卡启动黑屏... 于是...chrome官方命令行走起 本安装会清空这整个磁盘，请注意备份 如果没有登陆就按 ctrl + alt + f2 切换到终端(f1可以换回来)，登陆就按 ctrl + alt + t 打开控制台</description><pubDate>Wed, 24 Jul 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&amp;lt;h2&amp;gt;安装&amp;lt;/h2&amp;gt;
我这里使用的设备是pocket2，官方有一个图形化的安装程序，不过看起来兼容性不太好，安装到emmc提示不能修改分区名称，安装到tf卡启动黑屏...&lt;/p&gt;
&lt;p&gt;于是...chrome官方命令行走起~&lt;/p&gt;
&lt;p&gt;&amp;lt;span style=&quot;color: #ff0000;&quot;&amp;gt;本安装会清空这整个磁盘，请注意备份&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;p&gt;如果没有登陆就按 &lt;code&gt;ctrl + alt + f2&lt;/code&gt; 切换到终端(f1可以换回来)，登陆就按 &lt;code&gt;ctrl + alt + t&lt;/code&gt; 打开控制台&lt;/p&gt;
&lt;p&gt;输入 &lt;code&gt;shell&lt;/code&gt; 按回车打开shell&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;lsblk  
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;查看所有分区，找到你要用来安装的那一个&lt;/p&gt;
&lt;p&gt;我这里的TF卡是 &lt;code&gt;/dev/sda1&lt;/code&gt;，于是:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo /usr/sbin/chromeos-install --skip_dst_removable --dst /dev/sda
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;输入 &lt;code&gt;y&lt;/code&gt; 按回车开始安装&lt;/p&gt;
&lt;p&gt;安装完后重启&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/assets/uploads/2019/07/IMG_20190724_094327.jpg&quot; alt=&quot;&quot; /&gt; &lt;img src=&quot;/assets/uploads/2019/07/IMG_20190724_095104.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;分区顺序是乱的，千万不要使用比如Diskgenius这种“智能”的软件来改分区，顺序就会被改回去，被改回去也不要慌，用gdisk删掉所有分区，再按照原来的起止地址和code按1到12的顺序重新建一下就好了,然后系统分区A和B的uuid会变，需要改一下第12个分区(efi)中的grub.cfg，uuid替换成gdisk的i中第二个
&amp;lt;p style=&quot;text-align: left;&quot;&amp;gt;可以使用GParted对分区进行修改，缩小最后一个分区的大小(也就是1号，STATE)，在后面安装其他系统，实现共存(我这里是一个叫Pocket的数据分区)&amp;lt;/p&amp;gt;
 
&amp;lt;h2&amp;gt;Google服务&amp;lt;/h2&amp;gt;
按照按照上面的方法打开shell&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo mount -o remount,rw /  
rm /etc/chromium/policies/managed/*.json  
sudo vim /etc/chrome_dev.conf  
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;把最下面改成这样:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;--google-account-enabled  
--fydemina  
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这里我简单说一下vim怎么用：
按 &lt;code&gt;i&lt;/code&gt; 进入编辑模式，按 &lt;code&gt;esc&lt;/code&gt; 能退回去&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;:q!  
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;退出不保存；执行 &lt;code&gt;:wq&lt;/code&gt; 保存并退出(退出了直接在键盘按)&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo reboot
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;重启，Google服务会让你登陆&lt;/p&gt;
&lt;p&gt; &lt;br /&gt;
&amp;lt;h3&amp;gt;设备未获得Play保护机制验证的问题&amp;lt;/h3&amp;gt;
先按照按照上面的方法打开shell&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&amp;lt;del&amp;gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;curl -Ls https://raw.githubusercontent.com/nolirium/aroc/master/01Root.sh | sudo sh  
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;lt;/del&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;del&amp;gt;重启&amp;lt;/del&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;del&amp;gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;curl -Ls https://raw.githubusercontent.com/nolirium/aroc/master/02SEPatch.sh | sudo sh
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;lt;/del&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;del&amp;gt;在安卓设置打开adb调试&amp;lt;/del&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;del&amp;gt;在另一台电脑上运行这些命令，或者按照 &amp;lt;a href=&quot;https://faq.fydeos.com/recipes/android-development-guide-with-fydeos/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&amp;gt;官方文档&amp;lt;/a&amp;gt; 开启Linux（beta）来使用adb，或者使用crew安装adb(ip地址可以在打开了shell之后ifconfig)&amp;lt;/del&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;del&amp;gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;adb connect 设备ip地址:5555  
adb root  
adb shell &apos;sqlite3 /data/data/com.google.android.gsf/databases/gservices.db &quot;select * from main where name = \&quot;android_id\&quot;;&quot;&apos;  
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;lt;/del&amp;gt;&lt;/p&gt;
&lt;p&gt;测试了，root失败，以上方法行不通，所以才采取一些曲线救国的方法&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;安装crew包管理器(用mac的人应该都知道brew其实差不多)&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;curl -Ls https://raw.github.com/skycocker/chromebrew/master/install.sh | bash  
crew install sqlite  
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;实际上那个db文件就在这里&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;/opt/google/containers/android/rootfs/android-data/data/data/com.google.android.gsf/databases/gservices.db  
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;那么&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sqlite3 /opt/google/containers/android/rootfs/android-data/data/data/com.google.android.gsf/databases/gservices.db &quot;select * from main where name = \\&quot;android_id\\&quot;;&quot;  
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;去注册就行了&lt;/p&gt;
&lt;p&gt;&amp;lt;a href=&quot;https://www.google.com/android/uncertified&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&amp;gt;https://www.google.com/android/uncertified&amp;lt;/a&amp;gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
</content:encoded></item><item><title>Kindle Web 文件管理器</title><link>https://zyyme.com/kindle-web-filebrowser.html</link><guid isPermaLink="true">https://zyyme.com/kindle-web-filebrowser.html</guid><description>把 https://github.com/filebrowser/filebrowser 做成了kual 插件(ARM v7) 下载（2024/01/22）缩小体积，并允许访问根目录，提供一个默认配置，用户名密码admin [filebrowser-20240122.zip][1] 下载(2020/10/10): filebrowser-20201010.z</description><pubDate>Sun, 05 May 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;把 https://github.com/filebrowser/filebrowser 做成了kual 插件(ARM v7)&lt;/p&gt;
&lt;p&gt;下载（2024/01/22）缩小体积，并允许访问根目录，提供一个默认配置，用户名密码admin&lt;br /&gt;
&lt;a href=&quot;/assets/uploads/2024/01/hm2isj0irq.zip&quot;&gt;filebrowser-20240122.zip&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;下载(2020/10/10): &amp;lt;a href=&quot;/assets/uploads/2019/05/filebrowser-20201010.zip&quot;&amp;gt;filebrowser-20201010.zip&amp;lt;/a&amp;gt;&lt;/p&gt;
&lt;p&gt;下载(2019/5/5): &amp;lt;a href=&quot;/assets/uploads/2019/05/filebrowser.zip&quot;&amp;gt;filebrowser.zip&amp;lt;/a&amp;gt;&lt;/p&gt;
&lt;p&gt;越狱了之后解压到Kindle的U盘根目录合并就行&lt;/p&gt;
&lt;p&gt;点Start运行，访问屏幕顶部显示的ip（若是低分屏的设备可以通过在搜索框;711来获取设备ip，或者改一下start.sh，取消注释6的那行，注释25的那行）&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;2020年5月13更新&lt;br /&gt;
File Browser 被 archived 了，可惜了，多好的项目&lt;/p&gt;
&lt;p&gt;2020年10月10日更新&lt;/p&gt;
&lt;p&gt;更新了二进制文件，项目有新人接手了，现新版还支持上传文件夹了&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;投稿到书伴了，书伴牛逼，写的非常详细，不知道怎么用的请看&amp;lt;a href=&quot;https://bookfere.com/post/823.html&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&amp;gt;这里&amp;lt;/a&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>手动安装SuperSU</title><link>https://zyyme.com/manually-install-supersu.html</link><guid isPermaLink="true">https://zyyme.com/manually-install-supersu.html</guid><description>首先，设备需要满足两个条件： adb可以获得root（例如 adb root ） 可以写入system（例如 adb remount 或 mount -o remount,rw -t auto /system ） 解压官网下载的SuperSU，给adb配好环境变量（当然你每次都输adb的路径不配也没关系）。 adb push su /system/xbin/</description><pubDate>Sun, 24 Feb 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;首先，设备需要满足两个条件：&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;adb可以获得root（例如```&lt;br /&gt;
adb root&lt;/p&gt;
&lt;pre&gt;&lt;code&gt; 	&amp;lt;li&amp;gt;可以写入system（例如```
adb remount
```或```
mount -o remount,rw -t auto /system  
```）&amp;lt;/li&amp;gt;
&amp;lt;/ol&amp;gt;
&amp;amp;nbsp;

解压官网下载的SuperSU，给adb配好环境变量（当然你每次都输adb的路径不配也没关系）。

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;adb push su /system/xbin/su&lt;br /&gt;
adb shell&lt;br /&gt;
cd /system/xbin&lt;br /&gt;
chmod 777 /system/xbin/su&lt;br /&gt;
cp -a /system/xbin/su /system/xbin/daemonsu&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
然后要找一个开机运行的脚本，通常在 /etc 下或者 /system/bin 里面会有，通常以sh结尾，我这里找了一个 /system/etc/install-recovery.sh

echo &quot;setenforce 0&quot; &amp;amp;gt;&amp;amp;gt; /system/etc/install-recovery.sh
echo &quot;/system/xbin/daemonsu -ad&quot; &amp;amp;gt;&amp;amp;gt; /system/etc/install-recovery.sh

重启之后，你就会发现在设备上已经可以用su获取root权限了

另外，像电视盒子这种东西我们还可以给他开一下网络adb调试

echo &quot;setprop service.adb.tcp.port 5555&quot; &amp;amp;gt;&amp;amp;gt; /system/etc/install-recovery.sh
echo &quot;stop adbd&quot; &amp;amp;gt;&amp;amp;gt; /system/etc/install-recovery.sh
echo &quot;start adbd&quot; &amp;amp;gt;&amp;amp;gt; /system/etc/install-recovery.sh

这样就可以随时 adb connect 设备ip 来连接设备的adb调试啦&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>Coding Pony</title><link>https://zyyme.com/coding-pony.html</link><guid isPermaLink="true">https://zyyme.com/coding-pony.html</guid><description>前言 这是一只程序员小马在小马国科技潮流兴起时的故事，这个故事的主人公叫Sparkle，他来自 未来 人类世界。 我每天中午/晚上会抽点时间来写这个故事。 第一次写小说可能写的特别烂，如果有什么奇怪的坑欢迎提出来我尝试着填一下。 咕了好久，有空就拿Kindle出来慢慢写一下... ---------- 电传门 “啊(哈欠)…新的一天开始啦，今天也要加油呀！&quot;</description><pubDate>Thu, 14 Feb 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&amp;lt;h2&amp;gt;前言&amp;lt;/h2&amp;gt;
&lt;img src=&quot;/assets/uploads/2019/02/Map_of_Equestria_2015.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;这是一只程序员小马在小马国科技潮流兴起时的故事，这个故事的主人公叫Sparkle，他来自&amp;lt;del&amp;gt;未来&amp;lt;/del&amp;gt;人类世界。&lt;/p&gt;
&lt;p&gt;我每天中午/晚上会抽点时间来写这个故事。&lt;/p&gt;
&lt;p&gt;第一次写小说可能写的特别烂，如果有什么奇怪的坑欢迎提出来我尝试着填一下。&lt;/p&gt;
&lt;p&gt;咕了好久，有空就拿Kindle出来慢慢写一下...&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&amp;lt;h2&amp;gt;电传门&amp;lt;/h2&amp;gt;
“啊(哈欠)…新的一天开始啦，今天也要加油呀！&quot;&lt;/p&gt;
&lt;p&gt;早上6点半，Sparkle被他房间的音响的闹钟音乐吵醒。他看起来十分疲倦，眼神中透露出一丝的疲倦。昨晚，他干到凌晨1点才睡觉，已经连续几个月晚睡早起了。他正在做一个叫“电传门”的东西，是一台可以让物体瞬间移动到目的地的机器，如果成功了，那就可以瞬间到达目的地啦，出行将从此变的简单。&lt;/p&gt;
&lt;p&gt;“电传门的固件还剩一点就开发完成了，可以准备调试了”&lt;/p&gt;
&lt;p&gt;经过一天的努力…时间到了第二天0点，电传门的固件终于开发完成了，可以开始进行调试了，Sparkle将固件写入u盘并插入了电传门的usb口。这是电传门的首次通电，Sparkle显的有些害怕，他接了一根很长的电源线和一个空气开关，避免通电之后会发生什么短路意外。如果这次测试成功了，这将是一个历史性的时刻，虽然他的发明或许并不怎么靠谱，有句话说的好，失败是成功的妈妈，没有尝试怎么会成功？他躲在墙角闭着眼睛接通了电源…&lt;/p&gt;
&lt;p&gt;顿时黑暗的房间变的明亮起来，门发出了耀眼的白光，这次调试似乎一次就成功了，Sparkle的脸上洋溢着Pinkie般的笑容，看来这几个月的努力没有白费。他从口袋拿出电脑，设置了目的地—Sparkle的家门口，虽然距离挺近的，但这也足以测试电传门能不能进行传送了。他往门中扔了一支笔，跑到家门口一看，笔真的从房间传送到家门口了。&lt;/p&gt;
&lt;p&gt;“哇！真棒呢～居然成功了”&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/assets/uploads/2019/02/69fed6e2a7b45ec6.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&amp;lt;h2&amp;gt;Bug&amp;lt;/h2&amp;gt;
经过成功传送笔的测试，Sparkle开始想尝试传送自己，但这时已经是凌晨3点了，不得不睡觉了，因为第二天还要早起赶地铁出门，短短两天的周末就这样 结束了，关掉连接电传门的空气开关就睡觉了。&lt;/p&gt;
&lt;p&gt;早上闹钟没有响，因为Sparkle把音响的插头拔掉了插了电传门的空气开关电源线…&lt;/p&gt;
&lt;p&gt;“天哪现在几点了！闹钟怎么又没响！”Sparkle突然惊醒，看了一下正在充电的手表，快赶不上车了。看了看旁边的电传门，打算试一试，把自己传送到地铁站就能赶上车了。经过上一次成功传送笔的的成功经历，让他不那么害怕了，打开了电传门的电源，用手机将目的地设置到地铁站，深吸一口气，背上书包，向这散发着耀眼的光芒的电传门走去…&lt;/p&gt;
&lt;p&gt;当Sparkle刚走进电传门，由于传送物体过大导致电流过高引起了一个不起眼小Bug抛出了一个异常—没写cry catch。由于电流过高超过了空气开关跳匝，电传门断电了，他掉到了一片柔软的草地中，四周一片漆黑，伸手不见五指，他感觉头好疼，在草地中睡着了。&lt;/p&gt;
&lt;p&gt;代码千万条，try catch第一条；代码不规范，debug两行泪。&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&amp;lt;h2&amp;gt;地图的任务&amp;amp;不认识的小雌驹&amp;lt;/h2&amp;gt;
第二天一早，在小马谷的蛋糕店，Pinkie发现自己的可爱标志在发光，看来是地图在召唤她了，她来到友谊城堡，发现Twilight正在呆呆的看着地图，张大的嘴似乎脱臼了一样。地图召唤Pinkie到小马谷远处一片荒无人烟的草地上。&lt;/p&gt;
&lt;p&gt;“那儿已经很久没有人居住了，那儿会发生什么友谊问题呢？”Twilight对正在走进门的Pinkie说。&lt;/p&gt;
&lt;p&gt;“绝对没问题哒，我认识小马谷的所有马，我对他们都了如指掌”Pinkie说。&lt;/p&gt;
&lt;p&gt;Pinkie蹦着出了城堡…&lt;/p&gt;
&lt;p&gt;昨晚掉到草地睡着的Sparkle被明亮的阳光照醒了，四周都是草地，看不到边，Sparkle尝试站起来，但她马上就摔倒了&lt;/p&gt;
&lt;p&gt;“我的手…我的手变成了蹄子…我…我…我…变成了一只小雌驹!”&lt;/p&gt;
&lt;p&gt;Sparkle变成了一只天蓝色的天角兽，她不停的尝试，不停的摔倒，始终无法用双脚站起来，或许她应该用四肢来走路吧，用四肢走路是能站起来了，但是这 让她很不习惯，尝试拍打着翅膀却始终飞不起来。Sparkle开始四处闲逛，似乎远处好像有一座城市的影子…&lt;/p&gt;
&lt;p&gt;Pinkie蹦跶的来到了大草地，Pinkie自言自语道：“究竟是什么神秘的任务呢”此时她看到了一个陌生的身影，这匹小马他从未见过，她看到那匹小马正在向她走来。&lt;/p&gt;
&lt;p&gt;“你好呀，我叫Pinkie，这里发生了什么友谊问题吗？我似乎从未在小马谷见过你”Pinkie说。&lt;/p&gt;
&lt;p&gt;“这里是小马国吗？天哪…我怎么会在这里…”Sparkle显得十分慌张。&lt;/p&gt;
&lt;p&gt;“对呀！这里是小马谷，友谊城堡的地图派我到这里解决友谊问题，”Pinkie说，“你叫什么名字呢，你看起来很慌张呢。”&lt;/p&gt;
&lt;p&gt;“我叫Sparkle，我来自另外一个世界，”Sparkle说，“我本应该被传送到地铁站的，我的发明不知道出了什么故障，我就被传送到这里了。”&lt;/p&gt;
&lt;p&gt;“地铁是什么？”Pinkie问。&lt;/p&gt;
&lt;p&gt;“地铁就是一种在地下开的火车”Sparkle回答道，“我平时都做这种交通工具去上学。”&lt;/p&gt;
&lt;p&gt;Sparkle说着摆弄着手机，由于手变成了蹄子，似乎没法把好好用，一直戳不准屏幕上的图标，就这样摆弄了好久总算是打开了相册。&lt;/p&gt;
&lt;p&gt;“这是地铁，旁边站着的都是人，”Sparkle说，“我曾经也是人，掉到这里之后我就变成了一只小马”&lt;/p&gt;
&lt;p&gt;“哇好像好厉害的样子，为什么你不用你的角呢？”Pinkie说，“我们一起去城堡找Twilight吧，她去过人类世界，或许他更清楚”&lt;/p&gt;
&lt;p&gt;“我不知道怎么使用魔法，我也飞不起来，”Sparkle边走边说，“用四肢走路让我很不习惯。”&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&amp;lt;h2&amp;gt;新朋友&amp;lt;/h2&amp;gt;
Sparkle和Pinkie从大草地走到了友谊城堡，Sparkle显得十分害羞，Pinkie对于这只小马谷的新小马显得十分兴奋，“这太带劲了！我很兴奋，你兴奋吗？我从没如此兴奋，除了我见你来到镇上，而我，我说真的，那次是空前绝后！(Maybe English better than Chinese: Isn&apos;t this exciting? Are you excited because I&apos;m excited I&apos;ve never been so excited, well, except for the time that I saw you walking into town and I went, but I mean really, who could top that?) 我要为你办一场欢迎派对，给你介绍小马谷的所有人…”，她们就这样聊了一路，在Pinkie飞快的语速下，Sparkle了解了最近小马国发生的各种大事小事，Pinkie也了解了Sparkle的电传门事情的经过以及一些人类世界的人与物的故事，也让Sparkle和Pinkie成为了朋友，这是Sparkle在小马国认识的第一个朋友。&lt;/p&gt;
&lt;p&gt;“这是谁？”正在地图旁看书的Twilight转过头问Pinkie。&lt;/p&gt;
&lt;p&gt;“她叫Sparkle，一只来自人类世界的小马，”Pinkie说，“她在使用她的新发明电传门的时候不慎被传送到了小马国…”Pinkie把刚刚Sparkle说的全给Twilight说了一遍。&lt;/p&gt;
&lt;p&gt;“我是Twilight，小马国的友谊公主，我很高兴认识你，”Twilight说，“我没有办法把你送回去，不过城堡很大，在找到送你回去的方法之前，你可以住进来。”&lt;/p&gt;
&lt;p&gt;“你可以教我如何使用魔法吗？”Sparkle问，“我想我需要练习飞翔”&lt;/p&gt;
&lt;p&gt;“让我来陪你练习吧。”刚走进门的Rainbow Dash说。&lt;/p&gt;
&lt;p&gt;Twilight想了想，说：“我有关于基础魔法的书，它应该在第4个书架的第2行。”说着就向图书室走去。&lt;/p&gt;
&lt;p&gt;Twilight开始疯狂的找书，在隔壁都能能听到她在翻书的声音，Sparkle被Rainbow Dash拽了出去，她们来到了一片空地上，开始飞行练习。&lt;/p&gt;
&lt;p&gt;“慢慢煽动翅膀，逐渐加快煽动的速度”Rainbow Dash说，“然后你就会飞起来，像我这样”&lt;/p&gt;
&lt;p&gt;Sparkle试着煽动翅膀，她离开了地面，没多久就摔倒了地上。&lt;/p&gt;
&lt;p&gt;“别急，找到飞翔的感觉，你就可以飞起来了”Rainbow Dash说，“拉着我的蹄，我们一起飞。”&lt;/p&gt;
&lt;p&gt;说着Rainbow Dash把Sparkle一把拉住飞上了天&lt;/p&gt;
&lt;p&gt;“找找飞翔的感觉。”Rainbow Dash说。&lt;/p&gt;
&lt;p&gt;Sparkle十分害怕，但她还是照着做了，努力的拍打着翅膀—因为她怕Rainbow Dash一松手他会掉下去摔死。&lt;/p&gt;
&lt;p&gt;“找到感觉了吗？”Rainbow Dash说，“我要松手了。”&lt;/p&gt;
&lt;p&gt;“别…”Sparkle用祈求的眼神看着Rainbow Dash说到。&lt;/p&gt;
&lt;p&gt;“别紧张，放心，”Rainbow Dash说，“要是真的掉下去了我会接住你的。”&lt;/p&gt;
&lt;p&gt;经过一天的练习，Sparkle勉强能飞起来了，虽然飞的不高也飞的不快—和走路差不多的速度。回到城堡&lt;/p&gt;
&lt;p&gt;，Twilight还在找着书，Spike正在帮她整理书本，书架旁边堆了很各种各样的书，Twilight看到Sparkle和Ranbow Dash回来了，说：“这些书是关于小马的魔法基础，”说着指了指身旁的一堆书，“这一本是目录，剩下的是内容。”&lt;/p&gt;
&lt;p&gt;Twilight拿出一个苹果放到桌上，“我先教你怎么用魔法拿东西吧，看着你想拿起的东西，把注意力集中在那个物体上，想着你要做的动作，把力量集中到角上，然后它就会根据你的想法变化了，就像这样”说着Twilight用魔法拿起了苹果又放了下来，“你来试一试吧。”&lt;/p&gt;
&lt;p&gt;Sparkle试着把精力集中在苹果上，想着要把苹果拿起来，把力量集中在角上，这时候，sparkle的角发出了淡蓝色的魔法之光，苹果被推动了一下，Sparkle又试多了几次，弄的满头大汗，还是没能把苹果拿起来。&lt;/p&gt;
&lt;p&gt;“多练习，会成功的，”Twilight说，“失败是成功之母嘛，你还小，需要多练习。”&lt;/p&gt;
&lt;p&gt;经过了一个多小时的练习，Sparkle终于把苹果拿起来了，虽然变成小马有各种不习惯，但始终能习惯的，作为一只天角兽，要学的东西还有很多呢。此时Applejack，Rarity，Fluttershy，Starlight和Pinkie一起来了，“我把大家都叫来啦，认识一下这位新朋友吧，这是来自人类世界的Sparkle，她在使用她的新发明电传门的时候不慎被传送到了小马国…”Pinkie又用飞快的语速把上午Sparkle说的全给大家说了一遍。&lt;/p&gt;
&lt;p&gt;“我是Applejack，很高兴认识你，”Applejack说，“我住在苹果园，你可以到苹果园找到我。”&lt;/p&gt;
&lt;p&gt;“我是友谊学校的辅导员Starlight，”Starlight说，“明天来找我办理一下入学手续。”&lt;/p&gt;
&lt;p&gt;“来试试你的新背包，”Rarity说着把背包扣在Sparkle身上，“我是Rarity，我是一个服装设计师。”&lt;/p&gt;
&lt;p&gt;“我是Fluttershy…”，Fluttershy小声说，“天使兔看起来很喜欢你呢。”&lt;/p&gt;
&lt;p&gt;“今天是我来到小马国的第一天，能认识你们我真的好高兴！”Sparkle说着拿出手机拍照。&lt;/p&gt;
&lt;p&gt;“这是什么？”Starlight问。&lt;/p&gt;
&lt;p&gt;“这是手机，可以用来照相打电话什么的，这是人类世界的东西，”Sparkle回答道，“小马国没有网络所有就不能用来打电话了。”&lt;/p&gt;
&lt;p&gt;“人类世界还有在地下开的火车，”Pinkie说这并用头发点开了相册，“Sparkle早上给我看过。”&lt;/p&gt;
&lt;p&gt;Sparkle变的不再那么的害羞，她给她们讲了一晚上人类世界的故事，来到小马国的第一天，Sparkle认识了7个新朋友，这让她第一次真正的感受到了什么是友谊…&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&amp;lt;h2&amp;gt;开学&amp;lt;/h2&amp;gt;
今天是友谊学校新学期开学的第一天，学生们都从远方的家回到了学校，打扫卫生迎接新学期的到来。Sparkle早早就到Starlight那里办理了入学登记，她也笨拙的用着刚学会的魔法帮忙打扫着柱子上的灰尘。&lt;/p&gt;
&lt;p&gt;这时候广播响起了AppleJack的声音：“十分钟后到礼堂集合召开开学典礼。”&lt;/p&gt;
&lt;p&gt;小马们加快了打扫的速度，为了待会赶着召开的开学典礼，走道灰尘滚滚，呛得Sparkle直打喷嚏，这时Twilight走了过来说：“作为新同学，待会要好好介绍自己喔！”Sparkle楞了一下，紧接着开始瑟瑟发抖，她自言自语到：“不用紧张…不要紧张…”大家都向礼堂走去，Sparkle跟在最后不敢说话。&lt;/p&gt;
&lt;p&gt;“今天是友谊学校的春季开学典礼，我是校长Twilight，很高兴在这里为大家举办开学典礼，新学期开始了，大家要加油呀，争取取得良好的成绩，下面我来介绍一下我们今年的新同学Sparkle，下面请他上来介绍一下自己吧。”&lt;/p&gt;
&lt;p&gt;“我叫Sparkle…我做了一个可以传送物体到指定地点的电传门，由于一次失误我来到了小马国变成了一只小马，昨天我才刚学会了飞，希望大家能多多关照…”说完Sparkle走下了台&lt;/p&gt;
&lt;p&gt;“天哪你能从人变成小马，”Silverstream惊讶的说，“你是幻形灵吗？”&lt;/p&gt;
&lt;p&gt;“不，我曾经是人类，现在是一只小雌驹”Sparkle说，“我不能像幻形灵一样变成任何生物的样子。”&lt;/p&gt;
&lt;p&gt;“不是会变的生物都是幻形灵啦…”Gallus说着摊手一脸无奈的样子&lt;/p&gt;
&lt;p&gt;“Yona喜欢小马朋友！”Yona看起来很兴奋。&lt;/p&gt;
&lt;p&gt;“我叫Sandbar，以后我们就是好朋友了，你们觉得呢”&lt;/p&gt;
&lt;p&gt;“我是Ocellus，是幻形灵。”说着从小马的样子变回幻形灵。&lt;/p&gt;
&lt;p&gt;“我Smolder是你的龙朋友！”&lt;/p&gt;
&lt;p&gt;“我们带Sparkle去参观校园吧”Sandbar说。&lt;/p&gt;
&lt;p&gt;“好呀！”&lt;/p&gt;
&lt;p&gt;Sparkle在七位新同学&amp;amp;朋友的带领下参观了友谊学校，学校虽然不大，但都充满着乐趣。明天学校就要开始正式上课了，Twilight和RainbowDash要带着大家参观云中城，顺便观看闪电飞马队的表演，大家将着热气球来到云中城，Twilight为了解决不是天马不能在云上行走的问题提前准备了一个魔法，让大家能够站在云上，虽说这个魔法只能持续一天，但还是需要高级魔法师才能使用的，大家都十分兴奋的准备着明天要带上的东西，早早就睡觉了。幸好小马国使用的是110v 60hz的交流电，Sparkle睡前给她的手机和电脑充上了电…&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&amp;lt;h2&amp;gt;云中城&amp;lt;/h2&amp;gt;
Applejack一大早就去准备热气球了，为了大家早上参观云中城做准备，热气球使用的燃料是天然气，Pie家族的采石场在几年前已经转型天然气这种清洁能源了，小马国的日常供电也是由天然气燃烧发电产生的。&lt;/p&gt;
&lt;p&gt;“大家都准备好了吗？”Twilight说，“我们准备要出发了！”&lt;/p&gt;
&lt;p&gt;“好棒，云和彩虹都是在那制作出来的，今天终于可以去参观啦！”Silverstream兴奋的说到。&lt;/p&gt;
&lt;p&gt;“不过我记得Rainbow Dash老师上课的时候有说过，不是天马是不能站在云上的。”Ocellus说。&lt;/p&gt;
&lt;p&gt;“没关系，Twilight会施展魔法让我们能够站在云上的。”Sandbar说。&lt;/p&gt;
&lt;p&gt;大家都上了热气球，Applejack解开了绳子说：“祝你们旅途愉快！”&lt;/p&gt;
&lt;p&gt;热气球在Twilight的控制下越升越高，Rainbow Dash在后面控制气球的飞行方向，热气球慢慢的飞到了云中城…&lt;/p&gt;
&lt;p&gt;“云中城到了，大家跟着我来参观吧！”Rainbow Dash说。&lt;/p&gt;
&lt;p&gt;Pinkie不知道从哪里蹦了出来，在云上蹦，原来Pinkie在大家上热气球前就偷偷藏在了放在气球上的箱子里。&lt;/p&gt;
&lt;p&gt;“Yona害怕…”Yona站在热气球上不敢下来。&lt;/p&gt;
&lt;p&gt;“不会掉下去的，你看我。”Sparkle说着蹦到了云上，确实没掉下去，Yona也一下跳到了云上，她的一只脚陷到了云里面，大家赶紧把她从云里扯了出来。&lt;/p&gt;
&lt;p&gt;“或许牦牛太重了吧…”Yona说着小心翼翼的在云上走起来。&lt;/p&gt;
&lt;p&gt;“这里的的地面好柔软，好舒服啊，海底做梦也不能想到还要那么舒服的东西。”Silverstream说着在地上打滚。&lt;/p&gt;
&lt;p&gt;“这是云工厂，小马国的天气云就是由这里生产的，飞马负责搬运云来控制小马国的天气，”Rainbow Dash说，“彩虹则是由旁边的彩虹工厂生产出来的。”&lt;/p&gt;
&lt;p&gt;“好漂亮啊，在人类的世界到处都是雾霾，晚上根本看不到星星…”Sparkle感叹道，眼睛瞪的特别大，双眼如图发光一般，“小马的魔法居然还能制造出云和彩虹，实在是太厉害啦！”她打开相机并拍了几张照，从背包里拿出一个瓶子装了一瓶彩虹瀑布的彩虹。&lt;/p&gt;
&lt;p&gt;“云和彩虹有什么好惊讶的，龙才不会在乎这一些呢！”Smolder说，“你说对吧Gallus？”&lt;/p&gt;
&lt;p&gt;“对呀Smolder，不过确实挺好看的…”Gallus说。&lt;/p&gt;
&lt;p&gt;“闪电飞马队的表演快要开始了，”Twilight说，“大家快点参观完出发了。”&lt;/p&gt;
&lt;p&gt;“大家一定很期待我待会的表演吧！”Rainbow Dash说着在工厂里飞了一圈，“快跟我来吧！”&lt;/p&gt;
&lt;p&gt;大家跟着Rainbow Dash去到了表演场地，来看的人非常多，观众席坐满了人，在表演者之一的Rainbow Dash的带领下，我们可以坐在第一排的Vip位置&lt;/p&gt;
&lt;p&gt;，坐在观众席上期待着表演的开始，Rainbow Dash则去后台穿上服装准备她的表演。&lt;/p&gt;
&lt;p&gt;过了一会儿表演开始了。&lt;/p&gt;
&lt;p&gt;“本次为我们带来表演的是闪电飞马队，他们都是经过层层挑选和艰苦训练出来的顶级飞马，下面有请他们登场…”&lt;/p&gt;
&lt;p&gt;“下面他们要进行精彩激烈的杂技飞行表演…”&lt;/p&gt;
&lt;p&gt;作为讲解的Fluttershy十分专注的讲解着表演，甚至不再有平时害羞的感觉。最后Rainbow Dash做出了全场最佳的表演—彩虹音爆，声音十分之大，也十分漂亮，Sparkle将这的视频一段录了下来，这或许是她来到小马国看过最漂亮的东西了吧，大家都兴奋的站起来欢呼。&lt;/p&gt;
&lt;p&gt;表演结束了，Rainbow Dash显得有些疲倦，可能彩虹音爆需要消耗大量的体力吧，Sparkle显得对云中城有点舍不得，不过她知道，只要多练习飞行，就能从小马谷飞到云中城，就有可能加入闪电飞马队，成为他们的一员。&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&amp;lt;h2&amp;gt;一个月之后&amp;lt;/h2&amp;gt;
Sparkle就这样在小马谷的学习生活中快乐的度过了一个月，在这一个月中，她每天晚上都在看书学习独角兽的魔法，和朋友们练习飞行，终于她看完了Twilight给她的那一堆书，虽然他的魔法并不是很强大，但也足以应付日常，她学会了一些飞行技巧，能让她的飞行更省力更灵活，还能让她飞的更高。&lt;/p&gt;
&lt;p&gt;在友谊城堡里住了一个月，虽然城堡很大，但是Sparkle已经很熟悉城堡的房间了，再也不会在城堡里迷路了。Sparkle成为了Twilight的第三个小助手，，虽然有时会弄错什么东西，但经过长时间的熟悉，已经没什么大问题啦。在学校给老师们同学们帮忙，很快整个学校的小马都认识她了，Sparkle获得了这个月的优秀学生，这让他很开心。Pinkie给Sparkle办了个欢迎派对，Pinkie真的给Sparkle介绍了小马谷的所有人，虽然Sparkle没能一下子记住这几千只马的名字的名字。&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&amp;lt;h2&amp;gt;工作&amp;lt;/h2&amp;gt;
小马国科技的高速发展，Sparkle在小马哈顿找了一份技术打杂的工作以维持生计:给魔法计算机编程，但是她对这种魔法语言的编程方式并不是特别熟练，为了应对各种问题，Sparkle因此每天晚上都在看从中心城图书馆借来的技术书籍，毕竟没有人类世界的互联网实在是不方便呢。因为不是每天都需要工作，于是她打算在友谊学校开设一门新的课程:科学，给各国的生物介绍小马国的最新技术，顺便讲讲编程技巧。于是Sparkle下课后去找Twilight谈了谈她的想法。&lt;br /&gt;
(敲门)&lt;br /&gt;
“进来吧”Twilight说，“原来是Sparkle啊，找我有什么事吗?”&lt;br /&gt;
“我...我有一个大胆的想法...”&lt;br /&gt;
“说来听听...”&lt;br /&gt;
“小马国的科技发展的那么快，我想开展一门选修课，给大家介绍最新的技术和一些编程技巧...”&lt;br /&gt;
“挺好的呀，课程的名字叫什么好?信息技术?”说着Twilight站起来向广播室走去。&lt;br /&gt;
“不如叫科学好了，毕竟内容比较杂...”&lt;br /&gt;
Twilight打开了广播，说:“通知，从今天开始，Sparkle将给大家上选修的科学课，会给大家介绍小马国目前最新的技术和一些编程技巧，大家感兴趣的话可以找辅导员Starlight报名，同时我也鼓励大家讲将自己擅长的技术与大家分享。”&lt;br /&gt;
“谢谢你，Twilight。”Sparkle说。&lt;br /&gt;
“不必谢谢，希望你能尽快得到你的可爱标志。”Twilight笑着回答。&lt;br /&gt;
Sparkle找这份给魔法计算机编程的工作还算良心，他们采用的是965工作制(早上9点到下午6点一周工作5天)，而不是部分公司采用的996工作制(早上9点到晚上9点一周工作6天)，还有一部分时间用于从小马谷到马哈顿的飞行。由于经常的远距离飞行对飞行的练习，她对飞行的掌握已经很熟练了，和RainbowDash有得一拼，她们经常在比“谁更快到达某个地方”，虽然Sparkle在短途飞行上经常输给 RainbowDash，似乎Sparkle更擅长于长途飞行 ，但是她仍然没有获得他的可爱标志，难道因为他是来自人类世界的穿越者，不能拥有可爱标志吗?或许是因为她在飞行这一方面还不够出色吧。&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&amp;lt;h2&amp;gt;终端机&amp;lt;/h2&amp;gt;
给魔法计算机编程需要独角兽使使用她们的角来施展魔法，这意味着只有独角兽和天角兽才能给魔法计算机编程。Sparkle正在尝试做一台能够控制魔法计算机的终端机，让飞马､陆马甚至其他生物也可以控制和使用魔法计算机，以普及计算机技术，他设计了一套电动机械打字设备，可以将编程语言输入并传换成信号并由印刷设备打印到纸上，但把这信号转换成魔法仍有一些问题&lt;br /&gt;
&amp;lt;h3&amp;gt;咕咕咕...&amp;lt;/h3&amp;gt;
还没写完，不过空闲时间都去搞其他了。&lt;/p&gt;
&lt;p&gt;要是有什么记假名的好方法就好了...&lt;/p&gt;
</content:encoded></item><item><title>不要尝试 iptables -P INPUT DROP</title><link>https://zyyme.com/do-not-try-iptables-p-input-drop.html</link><guid isPermaLink="true">https://zyyme.com/do-not-try-iptables-p-input-drop.html</guid><description>今天被坑了允悲 看了这个 Linux下iptables 禁止端口和开放端口 然后执行了 iptables -P INPUT DROP 发现ssh不上了 查了一下才发现使用 iptables -P INPUT DROP 来全部关掉input链路后，那么服务器本身发送的数据请求返回的数据同样被iptables拒之门外 现在正在尝试重启服务器恢复(没保存iptab</description><pubDate>Wed, 14 Nov 2018 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;今天被坑了&lt;img src=&quot;https://img.t.sinajs.cn/t4/appstyle/expression/ext/normal/83/2018new_kuxiao_org.png&quot; alt=&quot;[允悲]&quot; /&gt;&lt;/p&gt;
&lt;p&gt;看了这个 &amp;lt;a id=&quot;cb_post_title_url&quot; class=&quot;postTitle2&quot; href=&quot;https://www.cnblogs.com/zongfa/p/7967935.html&quot;&amp;gt;Linux下iptables 禁止端口和开放端口&amp;lt;/a&amp;gt;&lt;br /&gt;
然后执行了```&lt;br /&gt;
iptables -P INPUT DROP&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
发现ssh不上了

查了一下才发现使用 iptables -P INPUT DROP 来全部关掉input链路后，那么服务器本身发送的数据请求返回的数据同样被iptables拒之门外
现在正在尝试重启服务器恢复(没保存iptables) ​​​​

----------

千万千万&amp;lt;span style=&quot;color: #ff0000;&quot;&amp;gt;&amp;lt;strong&amp;gt;不要&amp;lt;/strong&amp;gt;&amp;lt;/span&amp;gt;使用这个命令在CentOS 7卸载iptables ```
yum remove iptables
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这样操作会卸载掉很多系统必要的组件，那就开不了机了&lt;/p&gt;
&lt;p&gt;CentOS 7.x 中如果不需要使用 iptables 防火墙，可以清空策略条目， 尝试停止 iptables 服务时会提示没有服务，因为centos从7开始默认用的是firewalld，这个是基于iptables的，虽然有iptables的核心，但是 iptables 的服务（iptables-services）是没安装的。所以你只要停止firewalld服务即可 ```&lt;br /&gt;
systemctl stop firewalld.service&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>自定义Gnome Hidpi分辨率解决Ubuntu18高分屏问题</title><link>https://zyyme.com/gnome-hidpi-fix.html</link><guid isPermaLink="true">https://zyyme.com/gnome-hidpi-fix.html</guid><description>我想要一个686x1098的hidpi分辨率, 把大小x2然后cvt cvt 1372 2196 然后把输出的Modeline后面的东西复制下来 把下面的内容添加到开机启动 xrandr --newmode 粘贴Modeline后面的东西 xrandr --addmode eDP-1 粘贴Modeline后面&quot;&quot;中的名称 xrandr -s 粘贴Modeli</description><pubDate>Wed, 14 Nov 2018 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;我想要一个686x1098的hidpi分辨率, 把大小x2然后cvt&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cvt 1372 2196
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;然后把输出的Modeline后面的东西复制下来&lt;/p&gt;
&lt;p&gt;把下面的内容添加到开机启动&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;xrandr --newmode 粘贴Modeline后面的东西
xrandr --addmode eDP-1 粘贴Modeline后面&quot;&quot;中的名称
xrandr -s 粘贴Modeline后面&quot;&quot;中的名称
gsettings set org.gnome.desktop.interface scaling-factor 2
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;我这里的配置(gpd pocket 2)写一个脚本放在/usr/bin里面然后在&quot;启动应用程序&quot;里面添加一下就ok了&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;xrandr --newmode &quot;1376x2196_60.00&quot;  259.75  1376 1496 1640 1904  2196 2199 2209 2275 -hsync +vsync
xrandr --addmode eDP-1 &quot;1376x2196_60.00&quot;
xrandr -s &quot;1376x2196_60.00&quot; -o right
gsettings set org.gnome.desktop.interface scaling-factor 2
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>hosts的magisk模块</title><link>https://zyyme.com/hosts-magisk.html</link><guid isPermaLink="true">https://zyyme.com/hosts-magisk.html</guid><description>这个模块可以让你在刷机的时候保持当前hosts (启用模块后的修改都会独立的挂载到/etc/hosts) 也可以解决hosts文件无法修改的问题(这个才是重点) 下载: hosts.zip</description><pubDate>Thu, 08 Nov 2018 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;这个模块可以让你在刷机的时候保持当前hosts&lt;/p&gt;
&lt;p&gt;(启用模块后的修改都会独立的挂载到/etc/hosts)&lt;/p&gt;
&lt;p&gt;也可以解决hosts文件无法修改的问题(这个才是重点)&lt;/p&gt;
&lt;p&gt;下载: &amp;lt;a href=&quot;/assets/uploads/2018/11/hosts.zip&quot;&amp;gt;hosts.zip&amp;lt;/a&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>服务器被莫名其妙关机</title><link>https://zyyme.com/%E6%9C%8D%E5%8A%A1%E5%99%A8%E8%A2%AB%E8%8E%AB%E5%90%8D%E5%85%B6%E5%A6%99%E5%85%B3%E6%9C%BA.html</link><guid isPermaLink="true">https://zyyme.com/%E6%9C%8D%E5%8A%A1%E5%99%A8%E8%A2%AB%E8%8E%AB%E5%90%8D%E5%85%B6%E5%A6%99%E5%85%B3%E6%9C%BA.html</guid><description>前几天早上好好的, 中午突然失联, 登到管理后台发现服务器被关掉了 应该是维护吧, 然后我就去按了一下重启然后恢复了 刚刚发现又被关掉了...果断起了个工单 果然廉价vps...超售爆炸不过跑个站还是ok的 (最后还是把工单关了...答非所问系列...) 服务商: AlphaRacks 就冲着那个双核 768M ram 20G rom 2T bandwidt</description><pubDate>Thu, 25 Oct 2018 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;前几天早上好好的, 中午突然失联,  登到管理后台发现服务器被关掉了&lt;/p&gt;
&lt;p&gt;应该是维护吧, 然后我就去按了一下重启然后恢复了&lt;/p&gt;
&lt;p&gt;刚刚发现又被关掉了...果断起了个工单&lt;/p&gt;
&lt;p&gt;果然廉价vps...超售爆炸不过跑个站还是ok的&lt;/p&gt;
&lt;p&gt;(最后还是把工单关了...答非所问系列...)&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;服务商: &amp;lt;a href=&quot;https://www.alpharacks.com/myrack/aff.php?aff=2286&quot;&amp;gt;AlphaRacks&amp;lt;/a&amp;gt;&lt;/p&gt;
&lt;p&gt;就冲着那个双核 768M ram 20G rom &amp;lt;span id=&quot;displaybandwidthbarInfoSpan2&quot;&amp;gt;2T bandwidth&amp;lt;/span&amp;gt; 每年9.99刀去的&lt;/p&gt;
&lt;p&gt;超售的厉害配置还是买高点好(大概就是内存某些情况下只有一半能用的)&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/assets/uploads/2018/10/kylin.gif&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
</content:encoded></item><item><title>一加3T氧nfc配置文件magisk模块</title><link>https://zyyme.com/oneplus3t-nfclib-magisk.html</link><guid isPermaLink="true">https://zyyme.com/oneplus3t-nfclib-magisk.html</guid><description>因为刷了magisk, 其su权限似乎没有supersu的高 导致时常权限不足或者不能正常读写/system 因为修改libnfc-nxp.conf提示文件正忙(也不知道是不是一加的神奇操作) 我要模拟卡ID啊... 突然脑洞就做了这个magisk模块, 问题解决(尝试公交卡和模拟卡同时使用失败了) 理论上还让第三方系统刷上公交卡 下载: 一加3Tnfc配置</description><pubDate>Wed, 17 Oct 2018 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;因为刷了magisk, 其su权限似乎没有supersu的高&lt;/p&gt;
&lt;p&gt;导致时常权限不足或者不能正常读写/system&lt;/p&gt;
&lt;p&gt;因为修改libnfc-nxp.conf提示文件正忙(也不知道是不是一加的神奇操作)&lt;/p&gt;
&lt;p&gt;我要模拟卡ID啊...&lt;/p&gt;
&lt;p&gt;突然脑洞就做了这个magisk模块, 问题解决(尝试公交卡和模拟卡同时使用失败了)&lt;/p&gt;
&lt;p&gt;理论上还让第三方系统刷上公交卡&lt;/p&gt;
&lt;p&gt;下载: &amp;lt;a href=&quot;/assets/uploads/2018/10/一加3Tnfc配置文件带bak.zip&quot;&amp;gt;一加3Tnfc配置文件带bak.zip&amp;lt;/a&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>YayPonies下载捷径</title><link>https://zyyme.com/yayponies-download-shortcut.html</link><guid isPermaLink="true">https://zyyme.com/yayponies-download-shortcut.html</guid><description>本文可以教你批量下载YayPonies的资源，YayPonies主要是英语资源，大部分资源包含英语字幕轨。 这篇文章已经咕了一个月了，我决定来填一下坑，让小白看起来更简单。 本操作适合有一定基础的电脑端用户使用，手机端不支持。如果你想开始下面的操作，请找一台电脑进行操作。 先安装一个aria2 (如果你有了那就跳过这个部分)： aria2是一款开源、轻量级的</description><pubDate>Fri, 12 Oct 2018 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;本文可以教你批量下载YayPonies的资源，YayPonies主要是英语资源，大部分资源包含英语字幕轨。&lt;/p&gt;
&lt;p&gt;这篇文章已经咕了一个月了，我决定来填一下坑，让小白看起来更简单。&lt;/p&gt;
&lt;p&gt;本操作适合有一定基础的电脑端用户使用，手机端不支持。如果你想开始下面的操作，请找一台电脑进行操作。&amp;lt;!--more--&amp;gt;&lt;br /&gt;
&amp;lt;h4&amp;gt;先安装一个aria2 (如果你有了那就跳过这个部分)：&amp;lt;/h4&amp;gt;
aria2是一款开源、轻量级的多协议命令行下载工具。你可以把它安装在你的路由器，下载机，服务器，电脑，甚至手机上。&lt;/p&gt;
&lt;p&gt;下面以Windows电脑作为例子，如果你使用的是macOS或者Linux，我想我不说你也知道怎么安装的了。（一条命令的事）&lt;/p&gt;
&lt;p&gt;下载这个文件：&amp;lt;a href=&quot;https://eqcn.ajz.miesnfu.com/wp-content/uploads/2018/10/2018120106411763.zip&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;aria2.zip&amp;lt;/a&amp;gt;  并解压到一个你喜欢的地方&lt;/p&gt;
&lt;p&gt;然后你就会得到这样的一个目录树：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;aria2
│  aria2.session
│  aria2c.exe
│  aria2关闭.bat
│  aria2启动.VBS
│  AUTHORS
│  ChangeLog
│  config.conf
│  COPYING
│  LICENSE.OpenSSL
│  log.txt
│
└─downloads
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;其中 &lt;code&gt;downloads&lt;/code&gt; 文件夹是默认的下载路径。你也可以用文本编辑器打开 &lt;code&gt;config.conf&lt;/code&gt; 来修改设置，双击 &lt;code&gt;aria2启动.VBS&lt;/code&gt; 即可启动aria2。（不会打开任何窗口，点完就可以了）&lt;/p&gt;
&lt;p&gt;然后浏览器打开这个：&amp;lt;a href=&quot;https://ziahamza.github.io/webui-aria2/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;Aria2 WebUI&amp;lt;/a&amp;gt;
在&quot;设置&quot; -&amp;gt; &quot;连接设置&quot; 中 &quot;主机&quot; 后后面填写 127.0.0.1 在 &quot;端口&quot; 后面填入 6800
点击 &quot;保存连接设置&quot;。&lt;/p&gt;
&lt;p&gt;这样aria2就安装好了，是不是很简单呢~
&amp;lt;h4&amp;gt;获取下载的内容：&amp;lt;/h4&amp;gt;
目前脚本支持&amp;lt;a href=&quot;https://yp2.yayponies.pw/videos/episodes.php&quot;&amp;gt;Episodes(视频)&amp;lt;/a&amp;gt;，&amp;lt;a href=&quot;https://yp2.yayponies.pw/books/book.php&quot;&amp;gt;Books/Comics(书和漫画)&amp;lt;/a&amp;gt;，点击链接即可打开。&lt;/p&gt;
&lt;p&gt;选择要下载的分类，视频这里我推荐 HEVC 的版本(h265在相同画质的情况下文件更小)，如果你使用一台比较老的设备进行观看，请选择h264。选好后点击 Get Ponies!&lt;/p&gt;
&lt;p&gt;我建议使用&amp;lt;a href=&quot;https://www.google.cn/chrome/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;Chrome浏览器&amp;lt;/a&amp;gt;以获取更好的体验&lt;/p&gt;
&lt;p&gt;打开浏览器开发者工具，大部分的系统可以通过 F12 打开(macOS请使用 ⌘Command + ⌥Option + I)，切换到 Console 标签(控制台)，在下面复制对应的代码，粘贴到控制台中，按下回车，这时会输出一些下载地址，把输出的内容复制下来。&lt;/p&gt;
&lt;p&gt;回到打开的 Aria2 WebUI，点击 &quot;添加&quot; -&amp;gt; &quot;使用链接&quot;，粘贴刚刚复制的内容，点击 开始，就开始下载啦~&lt;/p&gt;
&lt;p&gt;&amp;lt;a href=&quot;https://yp2.yayponies.pw/videos/episodes.php&quot;&amp;gt;Episodes:&amp;lt;/a&amp;gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;var out = &quot;&quot;;  
for(var i=1; i &amp;amp;lt; $(&quot;#links&quot;).children[2].children[0].children.length; i++){  
var t = $(&quot;#links&quot;).children[2].children[0].children[i];  
if (t.children[2].children.length &amp;amp;gt; 1){  
out += t.children[2].children[1].href + &quot; &quot; + t.children[2].children[0].href + &quot; --out=&quot; + ($(&quot;select&quot;).options[$(&quot;select&quot;).selectedIndex].innerHTML + t.children[0].children[0].innerHTML).replace(/[?&amp;amp;lt;&amp;amp;gt;\&apos;\&quot;]/g,&apos;&apos;).replace(/[/\\|:*\s]/g,&apos;_&apos;).replace(&apos;_-_&apos;,&apos;-&apos;).replace(/(_)\1+/g,&apos;_&apos;) + &quot;.mkv\
&quot;;  
} else {  
out += t.children[2].children[0].href + &quot; --out=&quot; + ($(&quot;select&quot;).options[$(&quot;select&quot;).selectedIndex].innerHTML + t.children[0].children[0].innerHTML).replace(/[?&amp;amp;lt;&amp;amp;gt;\&apos;\&quot;]/g,&apos;&apos;).replace(/[/\\|:*\s]/g,&apos;_&apos;).replace(&apos;_-_&apos;,&apos;-&apos;).replace(/(_)\1+/g,&apos;_&apos;) + &quot;.mkv\
&quot;;  
}  
}  
console.log(out);  
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&amp;lt;a href=&quot;https://yp2.yayponies.pw/books/book.php&quot;&amp;gt;Books/Comics:&amp;lt;/a&amp;gt;&lt;/p&gt;
&lt;p&gt;EPUB:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;var out = &quot;&quot;;  
for(var i=1; i &amp;amp;lt; $(&quot;#links&quot;).children[2].children[0].children.length; i++){  
var t = $(&quot;#links&quot;).children[2].children[0].children[i];  
if (t.children[2].children.length &amp;amp;gt; 5) {  
out += t.children[2].children[1].href + &quot; &quot; + t.children[2].children[0].href + &quot; --out=&quot; + (t.children[0].innerText).replace(/[?&amp;amp;lt;&amp;amp;gt;\&apos;\&quot;]/g,&apos;&apos;).replace(/[/\\|:*\s]/g,&apos;_&apos;).replace(&apos;_-_&apos;,&apos;-&apos;).replace(/(_)\1+/g,&apos;_&apos;) + &quot;.epub\
&quot;;  
} else {  
out += t.children[2].children[0].href + &quot; --out=&quot; + (t.children[0].innerText).replace(/[?&amp;amp;lt;&amp;amp;gt;\&apos;\&quot;]/g,&apos;&apos;).replace(/[/\\|:*\s]/g,&apos;_&apos;).replace(&apos;_-_&apos;,&apos;-&apos;).replace(/(_)\1+/g,&apos;_&apos;) + &quot;.epub\
&quot;;  
}  
}  
console.log(out);  
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;PDF:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;var out = &quot;&quot;;  
for(var i=1; i &amp;amp;lt; $(&quot;#links&quot;).children[2].children[0].children.length; i++){  
var t = $(&quot;#links&quot;).children[2].children[0].children[i];  
if (t.children[2].children.length &amp;amp;gt; 5) {  
out += t.children[2].children[4].href + &quot; &quot; + t.children[2].children[3].href + &quot; --out=&quot; + (t.children[0].innerText).replace(/[?&amp;amp;lt;&amp;amp;gt;\&apos;\&quot;]/g,&apos;&apos;).replace(/[/\\|:*\s]/g,&apos;_&apos;).replace(&apos;_-_&apos;,&apos;-&apos;).replace(/(_)\1+/g,&apos;_&apos;) + &quot;.pdf\
&quot;;  
} else {  
out += t.children[2].children[2].href + &quot; --out=&quot; + (t.children[0].innerText).replace(/[?&amp;amp;lt;&amp;amp;gt;\&apos;\&quot;]/g,&apos;&apos;).replace(/[/\\|:*\s]/g,&apos;_&apos;).replace(&apos;_-_&apos;,&apos;-&apos;).replace(/(_)\1+/g,&apos;_&apos;) + &quot;.pdf\
&quot;;  
}  
}  
console.log(out);  
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;CBZ:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;var out = &quot;&quot;;  
for(var i=1; i &amp;amp;lt; $(&quot;#links&quot;).children[2].children[0].children.length; i++){  
var t = $(&quot;#links&quot;).children[2].children[0].children[i];  
if (t.children[2].children.length &amp;amp;gt; 5) {  
out += t.children[2].children[7].href + &quot; &quot; + t.children[2].children[6].href + &quot; --out=&quot; + (t.children[0].innerText).replace(/[?&amp;amp;lt;&amp;amp;gt;\&apos;\&quot;]/g,&apos;&apos;).replace(/[/\\|:*\s]/g,&apos;_&apos;).replace(&apos;_-_&apos;,&apos;-&apos;).replace(/(_)\1+/g,&apos;_&apos;) + &quot;.cbz\
&quot;;  
} else {  
out += t.children[2].children[4].href + &quot; --out=&apos;&quot; + (t.children[0].innerText).replace(/[?&amp;amp;lt;&amp;amp;gt;\&apos;\&quot;]/g,&apos;&apos;).replace(/[/\\|:*\s]/g,&apos;_&apos;).replace(&apos;_-_&apos;,&apos;-&apos;).replace(/(_)\1+/g,&apos;_&apos;) + &quot;.cbz&apos;\
&quot;;  
}  
}  
console.log(out);  
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;MOBI:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;var out = &quot;&quot;;  
for(var i=1; i &amp;amp;lt; $(&quot;#links&quot;).children[2].children[0].children.length; i++){  
var t = $(&quot;#links&quot;).children[2].children[0].children[i];  
if (t.children[2].children.length &amp;amp;gt; 5) {  
out += t.children[2].children[7].href + &quot; &quot; + t.children[2].children[6].href + &quot; --out=&quot; + (t.children[0].innerText).replace(/[?&amp;amp;lt;&amp;amp;gt;\&apos;\&quot;]/g,&apos;&apos;).replace(/[/\\|:*\s]/g,&apos;_&apos;).replace(&apos;_-_&apos;,&apos;-&apos;).replace(/(_)\1+/g,&apos;_&apos;) + &quot;.mobi\
&quot;;  
} else {  
out += t.children[2].children[4].href + &quot; --out=&quot; + (t.children[0].innerText).replace(/[?&amp;amp;lt;&amp;amp;gt;\&apos;\&quot;]/g,&apos;&apos;).replace(/[/\\|:*\s]/g,&apos;_&apos;).replace(&apos;_-_&apos;,&apos;-&apos;).replace(/(_)\1+/g,&apos;_&apos;) + &quot;.mobi\
&quot;;  
}  
}  
console.log(out);  
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;p&gt;原文地址：&amp;lt;a href=&quot;https://zyyme.com/2018/10/12/yayponies-download-shortcut/&quot;&amp;gt;https://zyyme.com/2018/10/12/yayponies-download-shortcut/&amp;lt;/a&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>H3C路由设置nat端口转发</title><link>https://zyyme.com/h3c-nat-server-protocol-setting.html</link><guid isPermaLink="true">https://zyyme.com/h3c-nat-server-protocol-setting.html</guid><description>我这里是一台WX2560H, 严格上来说也不是路由器吧, 只是个无线控制器 这就触及到常年用Linux路由的我的知识盲区了 官方文档也没有说到关于这个型号nat server的设置(难道是我打开的方式不对?) 最后是在其他型号的文档和Google找到的华为路由器的设置方式设置完成的(虽然说华三现在是HP的子公司, 但是控制台命令还是沿用至今啊) 先telne</description><pubDate>Thu, 11 Oct 2018 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;我这里是一台WX2560H, 严格上来说也不是路由器吧, 只是个无线控制器&lt;/p&gt;
&lt;p&gt;这就触及到常年用Linux路由的我的知识盲区了&lt;/p&gt;
&lt;p&gt;官方文档也没有说到关于这个型号nat server的设置(难道是我打开的方式不对?)&lt;/p&gt;
&lt;p&gt;最后是在其他型号的文档和Google找到的华为路由器的设置方式设置完成的(虽然说华三现在是HP的子公司, 但是控制台命令还是沿用至今啊)&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;先telnet上去, 然后进入操作视图&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sys
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;然后看一下现有的设置,找到连接到互联网的那个口&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;display current-configuration
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;我这里是pppoe拨号的, 所以是Dialer0&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;interface Dialer0
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;设置端口转发&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;nat server protocol 协议 global current-interface 外网端口 inside 内网ip 内网端口
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;还可以实现dmz，但是优先级会高于上面的端口转发，所有端口都会转到这个ip&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;nat server protocol tcp global current-interface inside 内网ip
nat server protocol udp global current-interface inside 内网ip
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;然后可以测试一下了, 换条宽带或者用移动数据测一下&lt;br /&gt;
如果没问题, 保存&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;save
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果要删除配置&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;undo nat server protocol 协议 global current-interface 外网端口
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;静态路由&lt;/h3&gt;
&lt;p&gt;显示所有&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;display ip routing-table
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;添加静态路由&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ip route-static 192.168.252.0 255.255.255.0 192.168.100.253
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;删除只需要前面加上undo就跟上面一样&lt;/p&gt;
</content:encoded></item><item><title>解决Linux下Pulse Audio的音质问题</title><link>https://zyyme.com/%E8%A7%A3%E5%86%B3linux%E4%B8%8Bpulse-audio%E7%9A%84%E9%9F%B3%E8%B4%A8%E9%97%AE%E9%A2%98.html</link><guid isPermaLink="true">https://zyyme.com/%E8%A7%A3%E5%86%B3linux%E4%B8%8Bpulse-audio%E7%9A%84%E9%9F%B3%E8%B4%A8%E9%97%AE%E9%A2%98.html</guid><description>我在树莓派啊橙子派这些卡板上, 通常为了声卡不冲突, 都会选择安装Pulse Audio来进行混音 然后就有了一些破音啊杂音啊一些乱七八糟的问题 通常都是因为设备的频率不对或者处理器跑不动导致的 查看当前声卡的工作频率 pacmd list-sinks | grep sample -A 10 我这里是 sample spec: s16le 2ch 44100</description><pubDate>Sat, 29 Sep 2018 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;我在树莓派啊橙子派这些卡板上, 通常为了声卡不冲突, 都会选择安装Pulse Audio来进行混音&lt;/p&gt;
&lt;p&gt;然后就有了一些破音啊杂音啊一些乱七八糟的问题&lt;/p&gt;
&lt;p&gt;通常都是因为设备的频率不对或者处理器跑不动导致的&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;查看当前声卡的工作频率&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;pacmd list-sinks | grep sample -A 10
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;我这里是 sample spec: s16le 2ch 44100Hz&lt;br /&gt;
通常工作频率是自动的,如果不正常可以给他指定一个默认值&lt;/p&gt;
&lt;p&gt;修改 ```&lt;br /&gt;
/etc/pulse/daemon.conf&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
查找 ```
resample-method
``` 并确保都注释掉了 (我这里用 nano 所以快捷键是 Ctrl + w)

在最后添加, 并把参数改成你想要的  
这里 speex-float 从0-10分别代表音频质量的差到好, 改到10估计板子跑不动, 我这里设置的是5, 工作频率不支持会没有声音  
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;resample-method = speex-float-5
default-sample-format = s16le
default-sample-rate = 44100&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
&amp;amp;nbsp;  

然后重启 pulseaudio  
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;pulseaudio -k
pulseaudio --start&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
我那块全志h2+的橙子派只要设置了 resample-method 跑机器人就没声...不知道什么鬼...其他声音正常...&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>idea授权</title><link>https://zyyme.com/idea-activate.html</link><guid isPermaLink="true">https://zyyme.com/idea-activate.html</guid><description>如果下面的Activate Code失效, 请下载 这个 jar包丢到程序安装目录的bin里面 编辑bin里面的 idea.vmoptions 文件 在最后添加 -javaagent:./你下载的文件的名字.jar 其实好像直接在 /etc/hosts 加条 0.0.0.0 account.jetbrains.com 容易一点 (丢到路由器的hosts整个局</description><pubDate>Fri, 28 Sep 2018 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&amp;lt;del&amp;gt;如果下面的Activate Code失效, 请下载 &amp;lt;a href=&quot;http://idea.lanyus.com/jar&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;这个&amp;lt;/a&amp;gt;&amp;lt;/del&amp;gt;&lt;br /&gt;
&amp;lt;del&amp;gt;jar包丢到程序安装目录的bin里面&amp;lt;/del&amp;gt;&lt;br /&gt;
&amp;lt;del&amp;gt;编辑bin里面的 &lt;code&gt;idea.vmoptions  &lt;/code&gt; 文件&amp;lt;/del&amp;gt;
&amp;lt;del&amp;gt;在最后添加 &lt;code&gt;-javaagent:./你下载的文件的名字.jar&lt;/code&gt;&amp;lt;/del&amp;gt;&lt;/p&gt;
&lt;p&gt;其实好像直接在 &lt;code&gt;/etc/hosts&lt;/code&gt; 加条 &lt;code&gt;0.0.0.0 account.jetbrains.com&lt;/code&gt; 容易一点
(丢到路由器的hosts整个局域网电脑都不用改了)&lt;/p&gt;
&lt;p&gt;然后继续下面的操作:&lt;/p&gt;
&lt;p&gt;Help -&amp;gt; Register -&amp;gt; Activate Code -&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;2DZ8RPRSBU-eyJsaWNlbnNlSWQiOiIyRFo4UlBSU0JVIiwibGljZW5zZWVOYW1lIjoiY24gdHUiLCJhc3NpZ25lZU5hbWUiOiIiLCJhc3NpZ25lZUVtYWlsIjoiIiwibGljZW5zZVJlc3RyaWN0aW9uIjoiRm9yIGVkdWNhdGlvbmFsIHVzZSBvbmx5IiwiY2hlY2tDb25jdXJyZW50VXNlIjpmYWxzZSwicHJvZHVjdHMiOlt7ImNvZGUiOiJJSSIsInBhaWRVcFRvIjoiMjAxOS0wNy0yOCJ9LHsiY29kZSI6IlJTMCIsInBhaWRVcFRvIjoiMjAxOS0wNy0yOCJ9LHsiY29kZSI6IldTIiwicGFpZFVwVG8iOiIyMDE5LTA3LTI4In0seyJjb2RlIjoiUkQiLCJwYWlkVXBUbyI6IjIwMTktMDctMjgifSx7ImNvZGUiOiJSQyIsInBhaWRVcFRvIjoiMjAxOS0wNy0yOCJ9LHsiY29kZSI6IkRDIiwicGFpZFVwVG8iOiIyMDE5LTA3LTI4In0seyJjb2RlIjoiREIiLCJwYWlkVXBUbyI6IjIwMTktMDctMjgifSx7ImNvZGUiOiJSTSIsInBhaWRVcFRvIjoiMjAxOS0wNy0yOCJ9LHsiY29kZSI6IkRNIiwicGFpZFVwVG8iOiIyMDE5LTA3LTI4In0seyJjb2RlIjoiQUMiLCJwYWlkVXBUbyI6IjIwMTktMDctMjgifSx7ImNvZGUiOiJEUE4iLCJwYWlkVXBUbyI6IjIwMTktMDctMjgifSx7ImNvZGUiOiJHTyIsInBhaWRVcFRvIjoiMjAxOS0wNy0yOCJ9LHsiY29kZSI6IlBTIiwicGFpZFVwVG8iOiIyMDE5LTA3LTI4In0seyJjb2RlIjoiQ0wiLCJwYWlkVXBUbyI6IjIwMTktMDctMjgifSx7ImNvZGUiOiJQQyIsInBhaWRVcFRvIjoiMjAxOS0wNy0yOCJ9LHsiY29kZSI6IlJTVSIsInBhaWRVcFRvIjoiMjAxOS0wNy0yOCJ9XSwiaGFzaCI6Ijk3MDU1NjEvMCIsImdyYWNlUGVyaW9kRGF5cyI6MCwiYXV0b1Byb2xvbmdhdGVkIjpmYWxzZSwiaXNBdXRvUHJvbG9uZ2F0ZWQiOmZhbHNlfQ==-WJc5TNMU/wdSqz+DA2MV6sweSRrJCr5IZpTk21WIa2mxKksn3moaDQseF/d/wcDlKEMlmtqdTL/WFPhNDLycga6ycslHu2XOXYqNLbPZhlH5UuZbtlpY+9qH3rwr0Vr0usdNbyTFZBaqiAxubP32hOQENdGWkwsdiAthVKxwFo4jpBj6IsFLzR0CeEP4qW82TpELboynTjCRoCu5RFv63OXrKsk3+YraKCRH0YxOR4rpaJRl/4kIETAAHOZXMi5ipLWohZsmMWLnGt8DmRsCjEjOcYdAkW6uazSkaaHaCSF+jsgRalR0y7pqSncrAGTqcMlrkdiLWYqnZ5ghsYbomg==-MIIEPjCCAiagAwIBAgIBBTANBgkqhkiG9w0BAQsFADAYMRYwFAYDVQQDDA1KZXRQcm9maWxlIENBMB4XDTE1MTEwMjA4MjE0OFoXDTE4MTEwMTA4MjE0OFowETEPMA0GA1UEAwwGcHJvZDN5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxcQkq+zdxlR2mmRYBPzGbUNdMN6OaXiXzxIWtMEkrJMO/5oUfQJbLLuMSMK0QHFmaI37WShyxZcfRCidwXjot4zmNBKnlyHodDij/78TmVqFl8nOeD5+07B8VEaIu7c3E1N+e1doC6wht4I4+IEmtsPAdoaj5WCQVQbrI8KeT8M9VcBIWX7fD0fhexfg3ZRt0xqwMcXGNp3DdJHiO0rCdU+Itv7EmtnSVq9jBG1usMSFvMowR25mju2JcPFp1+I4ZI+FqgR8gyG8oiNDyNEoAbsR3lOpI7grUYSvkB/xVy/VoklPCK2h0f0GJxFjnye8NT1PAywoyl7RmiAVRE/EKwIDAQABo4GZMIGWMAkGA1UdEwQCMAAwHQYDVR0OBBYEFGEpG9oZGcfLMGNBkY7SgHiMGgTcMEgGA1UdIwRBMD+AFKOetkhnQhI2Qb1t4Lm0oFKLl/GzoRykGjAYMRYwFAYDVQQDDA1KZXRQcm9maWxlIENBggkA0myxg7KDeeEwEwYDVR0lBAwwCgYIKwYBBQUHAwEwCwYDVR0PBAQDAgWgMA0GCSqGSIb3DQEBCwUAA4ICAQC9WZuYgQedSuOc5TOUSrRigMw4/+wuC5EtZBfvdl4HT/8vzMW/oUlIP4YCvA0XKyBaCJ2iX+ZCDKoPfiYXiaSiH+HxAPV6J79vvouxKrWg2XV6ShFtPLP+0gPdGq3x9R3+kJbmAm8w+FOdlWqAfJrLvpzMGNeDU14YGXiZ9bVzmIQbwrBA+c/F4tlK/DV07dsNExihqFoibnqDiVNTGombaU2dDup2gwKdL81ua8EIcGNExHe82kjF4zwfadHk3bQVvbfdAwxcDy4xBjs3L4raPLU3yenSzr/OEur1+jfOxnQSmEcMXKXgrAQ9U55gwjcOFKrgOxEdek/Sk1VfOjvS+nuM4eyEruFMfaZHzoQiuw4IqgGc45ohFH0UUyjYcuFxxDSU9lMCv8qdHKm+wnPRb0l9l5vXsCBDuhAGYD6ss+Ga+aDY6f/qXZuUCEUOH3QUNbbCUlviSz6+GiRnt1kA9N2Qachl+2yBfaqUqr8h7Z2gsx5LcIf5kYNsqJ0GavXTVyWh7PYiKX4bs354ZQLUwwa/cG++2+wNWP+HtBhVxMRNTdVhSm38AknZlD+PTAsWGu9GyLmhti2EnVwGybSD2Dxmhxk3IPCkhKAK+pl0eWYGZWG3tJ9mZ7SowcXLWDFAk0lRJnKGFMTggrWjV8GYpw5bq23VmIqqDLgkNzuoog==
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>mac下idea控制台Tomcat中文显示为问号</title><link>https://zyyme.com/idea-for-mac-console-chinese-is-displayed-as-a-question-mark.html</link><guid isPermaLink="true">https://zyyme.com/idea-for-mac-console-chinese-is-displayed-as-a-question-mark.html</guid><description>在配置 Tomcat 的时候 在 VM options 填写 -Dfile.encoding=UTF8 或 编辑 /Applications/IntelliJ IDEA.app/Contents/bin/idea.vmoptions 在最后加一行 -Dfile.encoding=UTF8 问题解决</description><pubDate>Fri, 28 Sep 2018 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;在配置 Tomcat 的时候&lt;/p&gt;
&lt;p&gt;在 VM options 填写&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;-Dfile.encoding=UTF8
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;lt;h3&amp;gt;或&amp;lt;/h3&amp;gt;
编辑&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;/Applications/IntelliJ IDEA.app/Contents/bin/idea.vmoptions
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;在最后加一行&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;-Dfile.encoding=UTF8
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;问题解决&lt;/p&gt;
</content:encoded></item><item><title>Javascript和JQuery获取附近的元素</title><link>https://zyyme.com/javascript-and-jquery-get-nearby-elements.html</link><guid isPermaLink="true">https://zyyme.com/javascript-and-jquery-get-nearby-elements.html</guid><description>Javascript: var j = document.getElementById(&quot;content&quot;); 获取a的全部子节点 j.childNodes; 获取a的父节点 j.parentNode; 获取a的下一个兄弟节点 j.nextSibling; 获取a的上一个兄弟节点 j.previousSibling; 获取a的第一个子节点 j.firstCh</description><pubDate>Fri, 28 Sep 2018 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Javascript:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;var j = document.getElementById(&quot;content&quot;);
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;获取a的全部子节点&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;j.childNodes;
```&amp;lt;/li&amp;gt;
 	&amp;lt;li&amp;gt;获取a的父节点  
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;j.parentNode;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt; 	&amp;lt;li&amp;gt;获取a的下一个兄弟节点  
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;j.nextSibling;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt; 	&amp;lt;li&amp;gt;获取a的上一个兄弟节点  
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;j.previousSibling;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt; 	&amp;lt;li&amp;gt;获取a的第一个子节点  
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;j.firstChild;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt; 	&amp;lt;li&amp;gt;获取a的最后一个子节点  
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;j.lastChild;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;/ol&amp;gt;  
JQuery的要方便不少:  
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;var q = $(&quot;#content&quot;);&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;ol&amp;gt;  
 	&amp;lt;li&amp;gt;找父亲节点，可以传入expr进行过滤，比如$(&quot;span&quot;).parent()或者$(&quot;span&quot;).parent(&quot;.class&quot;)  
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;q.parent(expr);&lt;/p&gt;
&lt;pre&gt;&lt;code&gt; 	&amp;lt;li&amp;gt;类似于jQuery.parents(expr),但是是查找所有祖先元素，不限于父元素  
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;q.parents(expr);&lt;/p&gt;
&lt;pre&gt;&lt;code&gt; 	&amp;lt;li&amp;gt;返回所有子节点，这个方法只会返回直接的孩子节点，不会返回所有的子孙节点  
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;q.children(expr);&lt;/p&gt;
&lt;pre&gt;&lt;code&gt; 	&amp;lt;li&amp;gt;返回下面的所有内容，包括节点和文本。这个方法和children()的区别就在于，包括空白文本，也会被作为一个jQuery对象返回，children()则只会返回节点  
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;q.contents();&lt;/p&gt;
&lt;pre&gt;&lt;code&gt; 	&amp;lt;li&amp;gt;返回上一个兄弟节点，不是所有的兄弟节点  
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;q.prev();&lt;/p&gt;
&lt;pre&gt;&lt;code&gt; 	&amp;lt;li&amp;gt;返回所有之前的兄弟节点  
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;q.prevAll();&lt;/p&gt;
&lt;pre&gt;&lt;code&gt; 	&amp;lt;li&amp;gt;返回下一个兄弟节点，不是所有的兄弟节点  
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;q.next();&lt;/p&gt;
&lt;pre&gt;&lt;code&gt; 	&amp;lt;li&amp;gt;返回所有之后的兄弟节点  
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;q.nextAll();&lt;/p&gt;
&lt;pre&gt;&lt;code&gt; 	&amp;lt;li&amp;gt;返回兄弟姐妹节点，不分前后  
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;q.siblings();&lt;/p&gt;
&lt;pre&gt;&lt;code&gt; 	&amp;lt;li&amp;gt;跟q.filter(expr)完全不一样。q.filter()是从初始的q对象集合中筛选出一部分，而q.find()的返回结果，不会有初始集合中的内容，比如$(&quot;p&quot;),find(&quot;span&quot;),是从p元素开始找,等同于$(&quot;p span&quot;)  
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;q.find(expr);&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;/ol&amp;gt;&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>GPD Pocket 2</title><link>https://zyyme.com/gpd-pocket-2.html</link><guid isPermaLink="true">https://zyyme.com/gpd-pocket-2.html</guid><description>B站 郑羊羊 放了一个开箱测评和GTA5测试的视频 ---------- 最近众筹买了一台Pocket 2来代替我的平板 我买的是4g版本 发现8g是镁光白片而4g是镁光正片 贫穷限制了内存大小 手上这台是白色电源灯的 左边的USB实际上是2.0 屏幕转轴左边先着地 手指鼠标左边有点刮手(剪刀解决) 众筹价格3499送一个皮套 到货一周后退100 目前已实现</description><pubDate>Mon, 10 Sep 2018 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;B站 郑羊羊&lt;br /&gt;
放了一个开箱测评和GTA5测试的视频&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;最近众筹买了一台Pocket 2来代替我的平板&lt;/p&gt;
&lt;p&gt;我买的是4g版本&lt;br /&gt;
发现8g是镁光白片而4g是镁光正片&lt;br /&gt;
贫穷限制了内存大小&lt;/p&gt;
&lt;p&gt;手上这台是白色电源灯的&lt;br /&gt;
左边的USB实际上是2.0&lt;br /&gt;
屏幕转轴左边先着地&lt;br /&gt;
手指鼠标左边有点刮手(剪刀解决)&lt;/p&gt;
&lt;p&gt;众筹价格3499送一个皮套&lt;br /&gt;
&amp;lt;span style=&quot;color: #ffffff;&quot;&amp;gt;到货一周后退100&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;p&gt;目前已实现：&lt;/p&gt;
&lt;p&gt;&amp;lt;del&amp;gt;没有hidpi的Ubuntu 18(其实实现了但是鼠标移不到右下角&amp;lt;/del&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;del&amp;gt;已实现基础显示缩放(放大字体，Chrome整个都放大了)其他没啥问题…主要是烫烫烫…&amp;lt;/del&amp;gt;&lt;br /&gt;
&amp;lt;del&amp;gt;换kde了, hidpi支持好&amp;lt;/del&amp;gt;&lt;/p&gt;
&lt;p&gt;已摸索到解决Ubuntu18下的Gnome的Hidpi的bug的解决方案, 详见 &amp;lt;a href=&quot;https://zyyme.com/2018/11/14/gnome-hidpi-fix/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;这篇文章&amp;lt;/a&amp;gt;&lt;/p&gt;
&lt;p&gt;Grub2下在bios旋转横屏情况下完美显示(给mate的那个github提issuse了,估计会整合进脚本)&lt;/p&gt;
&lt;p&gt;凤凰os屏幕终于转过来了，无法休眠(一休眠就重启)，&amp;lt;del&amp;gt;b站视频声音图像不同步(视频慢，可能没有硬件加速，不过ui流畅，就b站播放器这样，其他正常)&amp;lt;/del&amp;gt;粉色app正常&lt;/p&gt;
&lt;p&gt;装在TF卡中不太完美的macOS(用的是我Github的8代处理器万能版本)&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;英特尔网卡肯定不行的(最多蓝牙)&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;内置屏幕不认&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;没外放(默认耳机插入状态)&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;emmc不认&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;触摸屏不能用(可能因为内置屏幕没打开)&amp;lt;/li&amp;gt;
&amp;lt;/ul&amp;gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Ubuntu屏幕旋转&lt;/p&gt;
&lt;p&gt;console:&lt;/p&gt;
&lt;p&gt;修改 ```&lt;br /&gt;
/etc/default/grub&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;添加 ```
fbcon=rotate:1
``` 到 ```
GRUB_CMDLINE_LINUX_DEFAULT  
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;lt;del&amp;gt;顺便设置分辨率为1024x768可以正常显示grub2而不是黑屏&amp;lt;/del&amp;gt;&lt;/p&gt;
&lt;p&gt;添加这两行可以解决显示黑屏问题:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;GRUB_GFXMODE=1200x1920x32  
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;GRUB_GFXPAYLOAD_LINUX=keep  
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;然后执行 ```
sudo update-grub&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
&amp;amp;nbsp;  

神奇的Gnome：  

在设置里设置好  

然后 ```  
cp ~/.config/monitors.xml /var/lib/gdm3/.config/  
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;图像撕裂问题&lt;/p&gt;
&lt;p&gt;参考 &amp;lt;a href=&quot;https://github.com/stockmind/gpd-pocket-ubuntu-respin&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;Pocket 1 Ubuntu&amp;lt;/a&amp;gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;for i in thermald tlp va-driver-all vainfo libva1 libva2 i965-va-driver gstreamer1.0-libav gstreamer1.0-vaapi python-gi gksu git python gir1.2-appindicator3-0.1 xfonts-terminus xinput; do  
sudo apt-get install -y $i  
done  
mkdir -p /etc/X11/xorg.conf.d/  
cd display  
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;避免撕裂和触摸支持:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cp 20-intel.conf /etc/X11/xorg.conf.d/20-intel.conf  
cp 40-touch.conf /etc/X11/xorg.conf.d/40-touch.conf  
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;鼠标按住右键滚动:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cp 40-trackpoint.conf /etc/X11/xorg.conf.d/40-trackpoint.conf  
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;然后改一下 &lt;code&gt;/etc/default/grub&lt;/code&gt;，加后面两个&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;GRUB_CMDLINE_LINUX=&quot;fbcon=rotate:1 i915.fastboot=1 i915.semaphores=1&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果使用KDE:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;echo &quot;xrandr --output eDP1 --rotate right&quot; &amp;amp;gt;&amp;amp;gt; /usr/share/sddm/scripts/Xsetup # Rotate Monitor0
echo &quot;xrandr --dpi 168&quot; &amp;amp;gt;&amp;amp;gt; /usr/share/sddm/scripts/Xsetup # Scaling 175%
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这是一个旋转控制插件:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;mkdir -p temp
cd temp
git clone https://github.com/stockmind/gpd-pocket-screen-indicator.git
cd gpd-pocket-screen-indicator
chmod +x install.sh
sudo ./install.sh
cd ../../
rm -fr temp
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;装fcitx删掉另一个面板&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo apt-get purge fcitx-ui-qimpanel
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;p&gt;&amp;lt;a href=&quot;https://github.com/zanjie1999/HidpiFix/blob/master/extend.sh&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;这里&amp;lt;/a&amp;gt; 有个小脚本, 可以解决KDE下不同显示器不同缩放比的问题, Gnome也可以试试, 反正我这里Gnome就是蹦了&lt;br /&gt;
我这里的飞利浦电视就被设置成了1369x768然后显示1920x1080的字体大小&lt;br /&gt;
(飞利浦也是坑人...给42寸的电视一个32寸的固件,导致设备都认为1360x768是最佳分辨率)&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Ubuntu Mate 官方给的打开方式: &amp;lt;a href=&quot;https://github.com/wimpysworld/gpd-pocket2-ubuntu&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;Github&amp;lt;/a&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>目前已实现https绿锁</title><link>https://zyyme.com/https-has-been-achieved.html</link><guid isPermaLink="true">https://zyyme.com/https-has-been-achieved.html</guid><description>总结出来一些问题 引入的路径尽量使用 // 开头而不是http或者https 另外就是关于直接编辑WordPress的设置的坑 例如: a:1:{ s:3:&quot;key&quot;;s:5:value; s:4:&quot;name&quot;;s:7:&quot;Sparkle&quot;; } 两个一组, 以及前面有一个长度校验字符串有多长数字就是多少 数组有多少对数字就是多少</description><pubDate>Thu, 30 Aug 2018 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;总结出来一些问题&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;引入的路径尽量使用```&lt;br /&gt;
//&lt;/p&gt;
&lt;pre&gt;&lt;code&gt; 	&amp;lt;li&amp;gt;另外就是关于直接编辑WordPress的设置的坑
例如:
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;a:1:{&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;s:3:&quot;key&quot;;s:5:value;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;s:4:&quot;name&quot;;s:7:&quot;Sparkle&quot;;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;两个一组, 以及前面有一个长度校验字符串有多长数字就是多少
数组有多少对数字就是多少&amp;lt;/li&amp;gt;
&amp;lt;/ol&amp;gt;&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>哔哩哔哩番剧 上架了 小马宝莉 第6季 和 第7季</title><link>https://zyyme.com/bilibili-approved-my-little-pony-season-6-and-7.html</link><guid isPermaLink="true">https://zyyme.com/bilibili-approved-my-little-pony-season-6-and-7.html</guid><description>据 孩之宝中国 所说: 将在 哔哩哔哩 上架6,7两季 截止至投稿时, 第7季还是没有内容的, 第6季已经上了 英语配音: Twilight Sparkle 对话配音 - Tara Strong 唱歌配音 - Rebecca Shoichet 日语配音 - 泽城美雪 Applejack 配音 - Ashleigh Ball 日语配音 - 徳井青空 Rainb</description><pubDate>Sun, 26 Aug 2018 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;据 孩之宝中国 所说:&lt;br /&gt;
将在 哔哩哔哩 上架6,7两季&lt;br /&gt;
截止至投稿时, 第7季还是没有内容的, 第6季已经上了&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://eqcn.ajz.miesnfu.com/wp-content/uploads/2018/08/2018082611503526.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;英语配音:&lt;/p&gt;
&lt;p&gt;Twilight Sparkle&lt;br /&gt;
对话配音 -&amp;gt; Tara Strong&lt;br /&gt;
唱歌配音 -&amp;gt; Rebecca Shoichet&lt;br /&gt;
日语配音 -&amp;gt; 泽城美雪&lt;/p&gt;
&lt;p&gt;Applejack&lt;br /&gt;
配音 -&amp;gt; Ashleigh Ball&lt;br /&gt;
日语配音 -&amp;gt; 徳井青空&lt;/p&gt;
&lt;p&gt;Rainbow Dash&lt;br /&gt;
配音 -&amp;gt; Ashleigh Ball&lt;br /&gt;
日语配音 -&amp;gt; 橘田泉&lt;/p&gt;
&lt;p&gt;Rarity&lt;br /&gt;
对话配音 -&amp;gt; Tabitha St. Germain&lt;br /&gt;
唱歌配音 -&amp;gt; Kazumi Evans&lt;br /&gt;
日语配音 -&amp;gt; 佐佐木未来&lt;/p&gt;
&lt;p&gt;Fluttershy&lt;br /&gt;
配音 -&amp;gt; Andrea Libman&lt;br /&gt;
日语配音 -&amp;gt; 加藤英美里&lt;/p&gt;
&lt;p&gt;Pinkie Pie&lt;br /&gt;
对话配音 -&amp;gt; Andrea Libman&lt;br /&gt;
唱歌配音 -&amp;gt; Shannon Chan - Kent&lt;br /&gt;
日语配音 -&amp;gt; 三森铃子&lt;/p&gt;
&lt;p&gt;国语配音:&lt;br /&gt;
紫悦 -&amp;gt; 洪海天&lt;br /&gt;
碧琪 -&amp;gt; 李晔&lt;br /&gt;
云宝 -&amp;gt; 范楚绒&lt;br /&gt;
珍奇 -&amp;gt; 张安琪&lt;br /&gt;
苹果嘉儿 - 李敏研&lt;br /&gt;
柔柔 &amp;amp; 穗龙 - 罗玉娟&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;声优都是怪物...=&lt;br /&gt;
你能想象PP和FS的声音是一个人吗&lt;br /&gt;
(英语)&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;下面是一些多高赞短评价:&lt;/p&gt;
&lt;p&gt;第7季:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://eqcn.ajz.miesnfu.com/wp-content/uploads/2018/08/2018082615022992.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;恩? 和审核斗智斗勇?&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://eqcn.ajz.miesnfu.com/wp-content/uploads/2018/08/2018082615075844.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;第6季:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://eqcn.ajz.miesnfu.com/wp-content/uploads/2018/08/2018082615023186.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;剧情越来越水? S8E19 官方暗示第9季?&lt;/p&gt;
</content:encoded></item><item><title>关于 esp8266 analogRead</title><link>https://zyyme.com/about-esp8266-analogread.html</link><guid isPermaLink="true">https://zyyme.com/about-esp8266-analogread.html</guid><description>这个周末打算做一个音频输入自动开音响的功能 期初是用stm32f103c8t6来调试的...毕竟烧录的时间比较短... 弄了一天写出来了, 烧到esp8266调试, 才发现esp8266只有gpio17(A0, ADC)可以正常analogRead 好吧原来做了双声道的改成单声道检测 调好了复制到原来音响的程序里, 发现web服务器不工作了 查了一下anal</description><pubDate>Sun, 19 Aug 2018 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;这个周末打算做一个音频输入自动开音响的功能&lt;/p&gt;
&lt;p&gt;期初是用stm32f103c8t6来调试的...毕竟烧录的时间比较短...&lt;/p&gt;
&lt;p&gt;弄了一天写出来了, 烧到esp8266调试, 才发现esp8266只有gpio17(A0, ADC)可以正常analogRead&lt;/p&gt;
&lt;p&gt;好吧原来做了双声道的改成单声道检测&lt;/p&gt;
&lt;p&gt;调好了复制到原来音响的程序里, 发现web服务器不工作了&lt;/p&gt;
&lt;p&gt;查了一下analogRead需要比较长的时间, 多次调试之后发现是因为不停analogRead导致cpu时间占满&lt;/p&gt;
&lt;p&gt;然后在前面加了个&lt;br /&gt;
&amp;lt;h3&amp;gt;delay(1);&amp;lt;/h3&amp;gt;
恩问题解决&lt;/p&gt;
</content:encoded></item><item><title>Java还有这种操作?</title><link>https://zyyme.com/java%E8%BF%98%E6%9C%89%E8%BF%99%E7%A7%8D%E6%93%8D%E4%BD%9C.html</link><guid isPermaLink="true">https://zyyme.com/java%E8%BF%98%E6%9C%89%E8%BF%99%E7%A7%8D%E6%93%8D%E4%BD%9C.html</guid><description>昨天发现一个bug, type超长了 背景: 存日志的时候有两位数是从前台传过来的, 数据库里好就是5位空间, 前辈写的代码 null + &quot;07&quot; aka &quot;null&quot; + &quot;07&quot;</description><pubDate>Fri, 10 Aug 2018 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;/assets/uploads/2018/08/null07.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;昨天发现一个bug, type超长了&lt;/p&gt;
&lt;p&gt;背景: 存日志的时候有两位数是从前台传过来的, 数据库里好就是5位空间, 前辈写的代码&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;null + &quot;07&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;aka&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&quot;null&quot; + &quot;07&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt; &lt;/p&gt;
</content:encoded></item><item><title>音乐人推荐 - Marcus Warner (Evening Star)</title><link>https://zyyme.com/%E9%9F%B3%E4%B9%90%E4%BA%BA%E6%8E%A8%E8%8D%90-marcus-warner-evening-star.html</link><guid isPermaLink="true">https://zyyme.com/%E9%9F%B3%E4%B9%90%E4%BA%BA%E6%8E%A8%E8%8D%90-marcus-warner-evening-star.html</guid><description>9gQa9ribJQjFZp92EDx24A3D3D2F18987466300081223.jpg 推荐一首歌 Land of Equestria songId=464373796 这首是 私人FM 听到的, 听到之后点了红心(我以为我点到了...触摸屏) 这里吐槽一下 mac OS 当你有多个窗口, 在非焦点窗口的按钮点第一下焦点会切换到窗口上而不是点到按</description><pubDate>Thu, 09 Aug 2018 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;http://www.equestriacn.com/wp-content/uploads/2018/08/9gQa9ribJQjFZp92EDx24A3D3D2F18987466300081223.jpg&quot; alt=&quot;9gQa9ribJQjFZp92EDx24A3D3D2F18987466300081223.jpg&quot; /&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;推荐一首歌 &amp;lt;a href=&quot;https://music.163.com/song?id=464373796&quot;&amp;gt;Land of Equestria &amp;lt;/a&amp;gt; songId=464373796&lt;/p&gt;
&lt;p&gt;这首是 私人FM 听到的, 听到之后点了红心(我以为我点到了...触摸屏)&lt;/p&gt;
&lt;p&gt;这里吐槽一下 mac OS 当你有多个窗口, 在非焦点窗口的按钮点第一下焦点会切换到窗口上而不是点到按钮&lt;/p&gt;
&lt;p&gt;当我想找回来听的时候我发现我并没有成功收藏, 后面凭着记忆中的唱片封面图翻找回来的, 也算是找到一首好歌&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&amp;lt;a href=&quot;https://music.163.com/artist?id=1046308&quot;&amp;gt;网易云音乐歌手主页&amp;lt;/a&amp;gt; artistId=1046308&lt;/p&gt;
&lt;p&gt;出生: 1996 年（22岁）&lt;br /&gt;
所属唱片公司: Evening Star,  Marcus Warner&lt;br /&gt;
类型: 古典,  新世纪乐器演奏&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://eqcn.ajz.miesnfu.com/wp-content/uploads/2018/08/1369991489389347-1533809028.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Marcus Warner 是一位青年作曲家, 配器大师和制作人, 出生于1996年, 居住在英格兰威尔特郡. 他从事音乐创作距今已经12年, 他通过原声和电子音乐的各种流派风格和写作部分, 从当代的钢琴独奏到完整的管弦乐交响乐&lt;br /&gt;
他描述他的目标是成为“制作史诗和令人振奋的音乐, 唤起内心”, 并树立自己在做的卓越品质, 超越其本身的每个版本. 他的音乐已经被制作商, 广播公司和国际电影制作商使用和委托&lt;br /&gt;
在过去的12个月, 已经超过150个网站, 跨越60多个国家和接收超过1,000,000以上倾听&lt;br /&gt;
Marcus 的首张专辑Grand Flying Machines, 他的作品自2013年10月发布, 已获得令人难以置信的反馈&lt;br /&gt;
在过去的两年过程中, Marcus 一直努力和记录各种各样音乐家带给他大量的管弦乐的生命, 制作更广泛的原声作品, 记录自己和其他艺术家的过程. 他曾与其他制作人合作混合原声大钢琴, 学生合唱团和弦乐器, 来创建一个特殊的交响音乐标准, 尝试一种管弦乐器, 合成器的融合&lt;br /&gt;
Marcus 演奏钢琴, 法国圆号和吉他, 并收集各种世界乐器, 如 Kalimba 克林巴琴（非洲班图人的乐器）, 葫芦丝；他喜欢威尔特郡的宁静的乡村生活和一杯浓浓的茶&lt;/p&gt;
&lt;p&gt;Marcus 还是 MLP 的忠实观众. 在同人音乐界有很大的影响力. 其创作的小马同人音乐大多以“Evening Star”为网名发布.&lt;br /&gt;
他自己的OC是一匹有着黑白相间鬃毛的独角兽. 他的同人音乐较出名的有《Octavia》《Kindness》《Searching Eyes》等&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt; &lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;按照&amp;lt;a href=&quot;https://g.co/kgs/XA72mz&quot;&amp;gt; Google 来的资料&amp;lt;/a&amp;gt; Marcus Warner 是 1996 年生的, 也就是说, 在发布 专辑 &amp;lt;a href=&quot;https://music.163.com/album?id=35256484&quot;&amp;gt;Land of Equestria&amp;lt;/a&amp;gt; 的时候只有 17岁&lt;/p&gt;
&lt;p&gt;Marcus Warner 这位 dalao 感觉还是蛮成功的...&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;顺便安利一下之前写的py小脚本: &amp;lt;a href=&quot;https://github.com/zanjie1999/make_lrc_music_m3u&quot;&amp;gt;网易云音乐歌词音乐播放列表生成器&amp;lt;/a&amp;gt;&lt;/p&gt;
&lt;p&gt;只需传入歌单id  (playlistId), 即可自动下载歌单播放列表m3u, 双语歌词lrc, 以及mp3文件&lt;/p&gt;
&lt;p&gt;自动将 Android客户端 命名规则转为 pc客户端 命名规则&lt;/p&gt;
&lt;p&gt;然后可以愉快的丢到你无法联网的Hi-Fi音频播放器食用&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;顺便分享一下 &amp;lt;a href=&quot;https://music.163.com/playlist?id=737023512&quot;&amp;gt;我的MLP歌单&amp;lt;/a&amp;gt;&lt;/p&gt;
&lt;p&gt;第一次撰稿, 如果有什么 bug  &amp;lt;a href=&quot;https://zyyme.com/message/&quot;&amp;gt;欢迎留言&amp;lt;/a&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>关于本站https问题</title><link>https://zyyme.com/%E5%85%B3%E4%BA%8E%E6%9C%AC%E7%AB%99https%E9%97%AE%E9%A2%98.html</link><guid isPermaLink="true">https://zyyme.com/%E5%85%B3%E4%BA%8E%E6%9C%AC%E7%AB%99https%E9%97%AE%E9%A2%98.html</guid><description>好了,现在是纯https了,不过也意味着流量消耗x2以及: 我把图全搬回来了,和页面放在一起(幸好服务器宽带贼快) 图片流量还是挺大的,一个月得耗掉3g的样子(全是大图) ---------- 七牛要实名验证才能绑定域名...突然想放弃这个想法 服务器的https用了七牛一年免费证书搞定(并不是绿锁) 目前是七牛的https问题 七牛上的图全下下来了也不到2</description><pubDate>Sun, 05 Aug 2018 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;好了,现在是纯https了,不过也意味着流量消耗x2以及:&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;我把图全搬回来了,和页面放在一起(幸好服务器宽带贼快)&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;图片流量还是挺大的,一个月得耗掉3g的样子(全是大图)&amp;lt;/li&amp;gt;
&amp;lt;/ol&amp;gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;七牛要实名验证才能绑定域名...突然想放弃这个想法&lt;/p&gt;
&lt;p&gt;服务器的https用了七牛一年免费证书搞定(并不是绿锁)&lt;/p&gt;
&lt;p&gt;目前是七牛的https问题&lt;/p&gt;
&lt;p&gt;七牛上的图全下下来了也不到200mb&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;想做OneSignal Push浏览器通知推送,然后发现需要https&lt;/p&gt;
&lt;p&gt;然后打算弄一个letsencrypt的证书&lt;/p&gt;
&lt;p&gt;然后想想七牛那边绑定域名还要备案(不绑定没有https)&lt;/p&gt;
&lt;p&gt;以及一些文章写死的图片url&lt;/p&gt;
&lt;p&gt;真是头大&lt;/p&gt;
</content:encoded></item><item><title>买了第一个域名</title><link>https://zyyme.com/%E4%B9%B0%E4%BA%86%E7%AC%AC%E4%B8%80%E4%B8%AA%E5%9F%9F%E5%90%8D.html</link><guid isPermaLink="true">https://zyyme.com/%E4%B9%B0%E4%BA%86%E7%AC%AC%E4%B8%80%E4%B8%AA%E5%9F%9F%E5%90%8D.html</guid><description>经过长年吃土,终于是买了一个正经的域名 每年8.99美元 zyyme.com EqCN 的 居正 大佬给的建议</description><pubDate>Fri, 03 Aug 2018 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;经过长年吃土,终于是买了一个正经的域名&lt;/p&gt;
&lt;p&gt;每年8.99美元&lt;br /&gt;
&amp;lt;h2&amp;gt;&amp;lt;a href=&quot;https://zyyme.com/&quot;&amp;gt;zyyme.com&amp;lt;/a&amp;gt;&amp;lt;/h2&amp;gt;
&amp;lt;a href=&quot;http://www.equestriacn.com/&quot;&amp;gt;EqCN&amp;lt;/a&amp;gt; 的 居正 大佬给的建议&lt;/p&gt;
</content:encoded></item><item><title>买了一个k2p</title><link>https://zyyme.com/%E4%B9%B0%E4%BA%86%E4%B8%80%E4%B8%AAk2p.html</link><guid isPermaLink="true">https://zyyme.com/%E4%B9%B0%E4%BA%86%E4%B8%80%E4%B8%AAk2p.html</guid><description>和原来的newifi 2 用5G来WDS中续,全家5g都能满格了,虽然不能跑满宽带,但是150mbps也是够快了 由于固件bug,需要重启2.4G之后WDS才能用 然后在开机启动脚本写了点东西 重启2.4G 连接WDS radio2disable &amp;&amp; radio2enable logger -t &quot;【连接WDS】&quot; &quot;2.4G重启完成&quot; 挂载 /tmp 到</description><pubDate>Sun, 29 Jul 2018 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;和原来的newifi 2 用5G来WDS中续,全家5g都能满格了,虽然不能跑满宽带,但是150mbps也是够快了&lt;/p&gt;
&lt;p&gt;由于固件bug,需要重启2.4G之后WDS才能用&lt;/p&gt;
&lt;p&gt;然后在开机启动脚本写了点东西&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# 重启2.4G 连接WDS
radio2_disable &amp;amp;amp;&amp;amp;amp; radio2_enable
logger -t &quot;【连接WDS】&quot; &quot;2.4G重启完成&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;# 挂载 /tmp 到 /opt
( mkdir -p /tmp/opt; mount --bind /tmp/opt /opt; opkg.sh; logger -t &quot;【内存opt】&quot; &quot;安装 内存opt 成功&quot;; /opt/bin/opkg install htop; logger -t &quot;【内存opt】&quot; &quot;安装 htop 成功&quot; ) &amp;amp;amp;
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;logger -t &quot;【运行路由器启动后】&quot; &quot;脚本完成&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;虽然我改了usb口但是我还是没打算给他插个u盘&lt;br /&gt;
mount一个文件夹骗一下路由器把opt运行环境装到内存盘&lt;/p&gt;
</content:encoded></item><item><title>关于rm -rf的坑</title><link>https://zyyme.com/%E5%85%B3%E4%BA%8Erm-rf%E7%9A%84%E5%9D%91.html</link><guid isPermaLink="true">https://zyyme.com/%E5%85%B3%E4%BA%8Erm-rf%E7%9A%84%E5%9D%91.html</guid><description>巨坑啊...平时用zsh时按tab出来之后,按回车前最后的 / 会自动去掉 写在脚本里就emmmm... 当 dirB 里面有个 dirA 的软连接时 . ├── dirA │ └── fileInDirA └── dirB └── dirA - ../dirA 3 directories, 1 file 执行 rm -rf dirB/dirA 时 dirB</description><pubDate>Wed, 11 Jul 2018 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;巨坑啊...平时用zsh时按tab出来之后,按回车前最后的 &lt;code&gt;/&lt;/code&gt; 会自动去掉&lt;/p&gt;
&lt;p&gt;写在脚本里就emmmm...&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;当 &lt;code&gt;dirB&lt;/code&gt; 里面有个 &lt;code&gt;dirA &lt;/code&gt; 的软连接时&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;.  
├── dirA  
│   └── fileInDirA  
└── dirB  
└── dirA -&amp;amp;gt; ../dirA  
3 directories, 1 file  
&lt;/code&gt;&lt;/pre&gt;
&lt;ol&gt;
&lt;li&gt;执行 &lt;code&gt;rm -rf dirB/dirA&lt;/code&gt; 时 &lt;code&gt;dirB&lt;/code&gt; 中的 &lt;code&gt;dirA&lt;/code&gt; 的软连接被删掉了&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;.
├── dirA
│   └── fileInDirA
└── dirB
2 directories, 1 file
&lt;/code&gt;&lt;/pre&gt;
&lt;ol&gt;
&lt;li&gt;执行 &lt;code&gt;rm -rf dirB/dirA/&lt;/code&gt; 时 &lt;code&gt;dirA&lt;/code&gt; 的本体被删除了 &lt;code&gt;dirB&lt;/code&gt; 中的软连接还在&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;.  
└── dirB  
└── dirA -&amp;amp;gt; ../dirA  
1 directory, 1 file  
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>使用NTFS-3G代替macOS的NTFS驱动读写NTFS</title><link>https://zyyme.com/use-ntfs3g-for-macos.html</link><guid isPermaLink="true">https://zyyme.com/use-ntfs3g-for-macos.html</guid><description>由于我的数据盘是NTFS的,所以我需要在Mac下读写NTFS分区 换了各种软件不是丢文件就是慢的要死 最后选择了一般Linux上的选择:NTFS-3G 文件不丢,速度也还不错(当然不会有Windows下读写那么快的) 装一下 FUSE for macOS brew install ntfs-3g (这里需要 Homebrew ) 将系统的mountntfs替</description><pubDate>Mon, 09 Jul 2018 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;由于我的数据盘是NTFS的,所以我需要在Mac下读写NTFS分区&lt;/p&gt;
&lt;p&gt;换了各种软件不是丢文件就是慢的要死&lt;/p&gt;
&lt;p&gt;最后选择了一般Linux上的选择:NTFS-3G&lt;/p&gt;
&lt;p&gt;文件不丢,速度也还不错(当然不会有Windows下读写那么快的)&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;装一下 &amp;lt;a href=&quot;https://github.com/osxfuse/osxfuse/releases&quot;&amp;gt;FUSE for macOS&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;```&lt;br /&gt;
brew install ntfs-3g&lt;/p&gt;
&lt;pre&gt;&lt;code&gt; 	&amp;lt;li&amp;gt;将系统的mount_ntfs替换成NTFS-3G的
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;sudo mv /sbin/mount_ntfs /sbin/mount_ntfs.original&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;sudo ln -s /usr/local/sbin/mount_ntfs /sbin/mount_ntfs&lt;/p&gt;
&lt;pre&gt;&lt;code&gt; 	&amp;lt;li&amp;gt;磁盘工具 -&amp;amp;gt; 卸载 -&amp;amp;gt; 装载&amp;lt;/li&amp;gt;
&amp;lt;/ol&amp;gt;
如果存在权限问题，比如svn提交的时候提示权限不够，可以在```
/etc/fstab
```中加入
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;LABEL=分区名字 none auto rw,default_permissions,allow_other&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;或者  
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;UUID=分区UUID可以在磁盘工具简介看 none auto rw,default_permissions,allow_other&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;覆盖分区设置的文件夹/文件权限&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>祝各位六一儿童节快乐</title><link>https://zyyme.com/%E7%A5%9D%E5%90%84%E4%BD%8D%E5%85%AD%E4%B8%80%E5%84%BF%E7%AB%A5%E8%8A%82%E5%BF%AB%E4%B9%90.html</link><guid isPermaLink="true">https://zyyme.com/%E7%A5%9D%E5%90%84%E4%BD%8D%E5%85%AD%E4%B8%80%E5%84%BF%E7%AB%A5%E8%8A%82%E5%BF%AB%E4%B9%90.html</guid><description>早上由于服务商的内存超售导致服务器宕机… 刚刚又发现ssh端口被长城墙了… 今天事真多… 1fc14f98294f8b7b.jpg 20180611 更新: 服务器又被封了2个端口 都是因为使用ssh 20180627 更新: 因为服务器超售卡的要死甚至无法reboot网站宕机一天</description><pubDate>Fri, 01 Jun 2018 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;早上由于服务商的内存超售导致服务器宕机…&lt;/p&gt;
&lt;p&gt;刚刚又发现ssh端口被长城墙了…&lt;/p&gt;
&lt;p&gt;今天事真多…&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/assets/uploads/2018/06/1fc14f98294f8b7b.jpg&quot; alt=&quot;1fc14f98294f8b7b.jpg&quot; /&gt;&lt;/p&gt;
&lt;p&gt;20180611 更新: 服务器又被封了2个端口 都是因为使用ssh&lt;/p&gt;
&lt;p&gt;20180627 更新: 因为服务器超售卡的要死甚至无法reboot网站宕机一天&lt;/p&gt;
</content:encoded></item><item><title>修复全志开发板AV输出Overscan问题</title><link>https://zyyme.com/fix-allwinner-av-overscan.html</link><guid isPermaLink="true">https://zyyme.com/fix-allwinner-av-overscan.html</guid><description>之前买了一个Orange Pi Zero,现在是我的智能音响 因为只有av输出没有hdmi,在av日常显示超出范围的情况下,全志居然没有Overscan这种设置 然后研究了一下有了这个教程(调了一晚上) ---------- 全志有个叫script.bin和树莓派的config.txt类似,不过这个文件明显不能用编辑器打开的 bin2fex /boot/sc</description><pubDate>Wed, 23 May 2018 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;之前买了一个Orange Pi Zero,现在是我的智能音响&lt;/p&gt;
&lt;p&gt;因为只有av输出没有hdmi,在av日常显示超出范围的情况下,全志居然没有Overscan这种设置&lt;/p&gt;
&lt;p&gt;然后研究了一下有了这个教程(调了一晚上)&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;全志有个叫script.bin和树莓派的config.txt类似,不过这个文件明显不能用编辑器打开的&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;bin2fex /boot/script.bin ~/script.fex
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;nano ~/script.fex
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;按 Ctrl + w 查找:```&lt;br /&gt;
fb0_&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
将```
fb0_width = 0
```修改成```
fb0_width = 658  
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;将&lt;code&gt;fb0_height = 0&lt;/code&gt;修改成```
fb0_height = 548&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
Ctrl + x 保存

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;sudo fex2bin ~/script.fex /boot/script.bin&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;wget https://raw.githubusercontent.com/harshgandhi/linuxScripts/master/devmem2.c&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;gcc devmem2.c&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;sudo mv a.out /usr/local/bin/devmem2&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;nano /etc/rc.local&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
在文件最后的```
exit 0
```之前加入

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;devmem2 0x01E00130 w 0x00c003a&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
如果不能使用以上方法来修改，也可以用：  

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;fbset -g 658 548 658 548 32&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
然后重启 Enjoy~  

----------  

发现NTSC在宽屏设备下显示挺不错的…比PAL下的设置要好  
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;screen0_output_mode = 11&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;这里11是PAL,改成14就是NTSC了  

对应的  
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;fb0_width = 660
fb0_height = 470&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
如果没办法改，也能用  
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;fbset -g 660 470 660 470 32&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
移动屏幕位置  
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;devmem2 0x01E00130 w 0x0090396&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
这和上面的配置差不多…只是修改了一些数值  

----------  

最近换了新的armbain系统，内核是4.14.x的，没有视频输出，Google翻了一下找到一个h3-tve的模块，然后把内核提取出来换掉boot里面的（记得替换那三个软连接），我并不知道怎么在字符界面把输出改成NTSC，PAL虽然分辨率大但是彩边比较严重，NTSC就很清晰。  

内核下载: &amp;lt;a href=&quot;/assets/uploads/2018/05/armbain-4.14.21-kernel.zip&quot;&amp;gt;armbain-4.14.21-kernel.zip&amp;lt;/a&amp;gt;  

在```  
/etc/rc.local  
```中添加:
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;devmem2 0x01E00130 w 0x0170048&lt;br /&gt;
fbset -g 658 548 658 548 32&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;修正在PAL下的显示大小和位置

在桌面环境下可以在```
/etc/rc.local
```中添加:
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;devmem2 0x01E00130 w 0x0120048&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;在图形界面的开机启动(Startup)中添加  
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;DISPLAY=:0 xrandr --output Composite-1 --mode NTSC --scale 1.454x1.15 --panning 960x540&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;来修正位置和修改为NTSC(可以差值更高的分辨率,但是真的挺卡的)  

我是这样配置的```  
/etc/rc.local  
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果你不需要图形界面:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# PAL
devmem2 0x01E00130 w 0x0170048  
fbset -g 658 548 658 548 32  
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;图形界面:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# NTSC
su sparkle -c startx&amp;amp;  
su -c &quot;sleep 30 &amp;amp;&amp;amp; fixav&quot;&amp;amp;  
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;其中的```
/usr/local/bin/fixav&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;devmem2 0x01E00130 w 0x0120048
su - sparkle -c &quot;DISPLAY=:0 xrandr --output Composite-1 --mode NTSC --scale 1.454x1.15 --panning 960x540&quot;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
----------  

国产的东西文档总是写的不清不楚的…&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>iTop通过Email自动生成工单</title><link>https://zyyme.com/itop%E9%80%9A%E8%BF%87email%E8%87%AA%E5%8A%A8%E7%94%9F%E6%88%90%E5%B7%A5%E5%8D%95.html</link><guid isPermaLink="true">https://zyyme.com/itop%E9%80%9A%E8%BF%87email%E8%87%AA%E5%8A%A8%E7%94%9F%E6%88%90%E5%B7%A5%E5%8D%95.html</guid><description>因为有这个需求,然后就折腾了一下 然后有了这个教程 iTop国内资料真少... iTop安装 官网下个zip丢到www浏览器运行安装程序就行了 需要安装php的pop3或者imap模块,我这里用的是imap(因为刚好有php源代码编译了安装进去就行了,安装方法在最后面) iTop对环境要求比较高,最好把php.ini里面的disablefunction注释掉</description><pubDate>Tue, 22 May 2018 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;因为有这个需求,然后就折腾了一下&lt;/p&gt;
&lt;p&gt;然后有了这个教程&lt;/p&gt;
&lt;p&gt;iTop国内资料真少...&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;iTop安装&amp;lt;/h2&amp;gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;官网下个zip丢到www浏览器运行安装程序就行了&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;需要安装php的pop3或者imap模块,我这里用的是imap(因为刚好有php源代码编译了安装进去就行了,安装方法在最后面)&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;iTop对环境要求比较高,最好把php.ini里面的disable_function注释掉不要禁用任何函数&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;如果用的是Nginx注意在配置文件的server里面的server_name配置好,不要使用_通配符&amp;lt;/li&amp;gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;h2&amp;gt;在iTop Hub安装插件&amp;lt;/h2&amp;gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;菜单 iTop Hub -&amp;gt; Connect to iTop Hub&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;然后安装 &amp;lt;a href=&quot;https://store.itophub.io/en_US/products/combodo-mail-to-ticket-automation&quot;&amp;gt;这个插件&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;h2&amp;gt;配置&amp;lt;/h2&amp;gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;菜单 管理工具-&amp;gt; Incoming eMail Inboxes -&amp;gt; 新建...&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;配置一下接收工单的邮箱的信息&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;菜单 配置管理 -&amp;gt; 新联系人 -&amp;gt; 人员&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;将所有发工单的邮箱添加为人员,联系资料中的Email填写发工单的邮箱&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;运行cron.php:&lt;br /&gt;
&amp;lt;h4&amp;gt;终端开个screen运行:&amp;lt;/h4&amp;gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cd iTop目录/webservices
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;php cron.php --auth_user=admin的用户名 --auth_pwd=admin的密码 --verbose=1
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;lt;h4&amp;gt;配置一个crontab计划任务也可以:&amp;lt;/h4&amp;gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;45 4 1, 10, 22 * * php安装目录/bin/php iTop目录/webservices/cron.php --auth_user=admin的用户名 --auth_pwd=admin的密码 --verbose=1
```&amp;lt;/li&amp;gt;
&amp;lt;/ol&amp;gt;  
&amp;amp;nbsp;  

----------  

&amp;lt;h3&amp;gt;安装php的imap模块&amp;lt;/h3&amp;gt;
&amp;lt;ol&amp;gt;  
 	&amp;lt;li&amp;gt;安装libc-client-dev:  
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;apt-get install libc-client-dev&lt;/p&gt;
&lt;pre&gt;&lt;code&gt; 	&amp;lt;li&amp;gt;编译:  
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;cd php源代码目录/ext/&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;php安装目录/bin/phpize  
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;./configure --with-php-config=/usr/local/php/bin/php-config --with-kerberos --with-imap-ssl&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;make &amp;amp;amp;&amp;amp;amp; sudo make install  
```&amp;lt;/li&amp;gt;
 	&amp;lt;li&amp;gt;当看到```
Build complete.
```即安装成功&amp;lt;/li&amp;gt;
&amp;lt;/ol&amp;gt;&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>Arduino附加开发板管理器网址</title><link>https://zyyme.com/arduino%E9%99%84%E5%8A%A0%E5%BC%80%E5%8F%91%E6%9D%BF%E7%AE%A1%E7%90%86%E5%99%A8%E7%BD%91%E5%9D%80.html</link><guid isPermaLink="true">https://zyyme.com/arduino%E9%99%84%E5%8A%A0%E5%BC%80%E5%8F%91%E6%9D%BF%E7%AE%A1%E7%90%86%E5%99%A8%E7%BD%91%E5%9D%80.html</guid><description>做一个备份 esp8266 digispark usb驱动 stm32f103 刷写的bootloader usb驱动 http://arduino.esp8266.com/stable/packageesp8266comindex.json http://digistump.com/packagedigistumpindex.json http://dan</description><pubDate>Thu, 10 May 2018 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;做一个备份&lt;br /&gt;
esp8266&lt;br /&gt;
digispark    &amp;lt;a href=&quot;https://github.com/digistump/DigistumpArduino/releases&quot;&amp;gt;usb驱动&amp;lt;/a&amp;gt;&lt;br /&gt;
stm32f103    &amp;lt;a href=&quot;http://wiki.stm32duino.com/index.php?title=Burning_the_bootloader#Flashing_the_bootloader_onto_the_Black_Pill_via_USB_to_Serial_converter_using_UART1&quot;&amp;gt;刷写的bootloader&amp;lt;/a&amp;gt;    &amp;lt;a href=&quot;https://github.com/zanjie1999/STM32mapleUSBDrivers/raw/master/driversSTM32maple.zip&quot;&amp;gt;usb驱动&amp;lt;/a&amp;gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;http://arduino.esp8266.com/stable/package_esp8266com_index.json
http://digistump.com/package_digistump_index.json
http://dan.drown.org/stm32duino/package_STM32duino_index.json
https://dl.espressif.com/dl/package_esp32_index.json
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>null与&apos;&apos;(空字符串)</title><link>https://zyyme.com/null%E4%B8%8E%E7%A9%BA%E5%AD%97%E7%AC%A6%E4%B8%B2.html</link><guid isPermaLink="true">https://zyyme.com/null%E4%B8%8E%E7%A9%BA%E5%AD%97%E7%AC%A6%E4%B8%B2.html</guid><description>在JavaScript中: null == &apos;&apos; 返回true null === &apos;&apos; 返回false ---------- 在Oracle中: null 和 &apos;&apos; 是一个东西 &apos;&apos; 会自动转成 null ---------- 在Mysql中: &apos;&apos; 是空字符串 null 是null (为什么觉得这是废话) 在设置字段 not null 的时候依然可以插入 </description><pubDate>Wed, 09 May 2018 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&amp;lt;h3&amp;gt;在JavaScript中:&amp;lt;/h3&amp;gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;null == &apos;&apos;
```返回true
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;null === &apos;&apos;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
----------  

&amp;lt;h3&amp;gt;在Oracle中:&amp;lt;/h3&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;null
&lt;code&gt;和&lt;/code&gt;
&apos;&apos;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&apos;&apos;&lt;br /&gt;
&lt;code&gt;会自动转成&lt;/code&gt;
null&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
----------  

&amp;lt;h3&amp;gt;在Mysql中:&amp;lt;/h3&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&apos;&apos;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;null&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;(为什么觉得这是废话)  
在设置字段```  
not null  
```的时候依然可以插入```
&apos;&apos;
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>搬家,不知道这个站还能活多久</title><link>https://zyyme.com/%E6%90%AC%E5%AE%B6%E4%B8%8D%E7%9F%A5%E9%81%93%E8%BF%99%E4%B8%AA%E7%AB%99%E8%BF%98%E8%83%BD%E6%B4%BB%E5%A4%9A%E4%B9%85.html</link><guid isPermaLink="true">https://zyyme.com/%E6%90%AC%E5%AE%B6%E4%B8%8D%E7%9F%A5%E9%81%93%E8%BF%99%E4%B8%AA%E7%AB%99%E8%BF%98%E8%83%BD%E6%B4%BB%E5%A4%9A%E4%B9%85.html</guid><description>原来用的PHP虚拟主机现在已经没有免费套餐了 目前使用的是9.99美刀/年的OpenVZ的vps 弄了一天,编译了5次mysql还是有问题,后来直接把派上的mysql数据目录直接拷进去用终于可以了 然后各种崩溃内存溢出调了一晚上配置文件 TIM图片20180429020407.gif</description><pubDate>Sun, 29 Apr 2018 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;原来用的PHP虚拟主机现在已经没有免费套餐了&lt;/p&gt;
&lt;p&gt;目前使用的是9.99美刀/年的OpenVZ的vps&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;弄了一天,编译了5次mysql还是有问题,后来直接把派上的mysql数据目录直接拷进去用终于可以了&lt;/p&gt;
&lt;p&gt;然后各种崩溃内存溢出调了一晚上配置文件&lt;/p&gt;
&lt;p&gt;&amp;lt;!--StartFragment --&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt; &lt;img src=&quot;/assets/uploads/2018/04/TIM%E5%9B%BE%E7%89%8720180429020407.gif&quot; alt=&quot;TIM图片20180429020407.gif&quot; /&gt;&amp;lt;/div&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>ESP8285</title><link>https://zyyme.com/esp8285.html</link><guid isPermaLink="true">https://zyyme.com/esp8285.html</guid><description>今天是愚人节 讲一个笑话： esp8285 = esp8266 + 1mb flash 8285资料贼少，折腾了三天，发现 SPI Mode 要设置成 DOUT 才能正常启动，而且有一部分固件这样写进去有一定的问题 IMG20180331181831.jpgIMG20180401111903.jpgIMG20180331192429.jpg</description><pubDate>Sun, 01 Apr 2018 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;今天是愚人节&lt;/p&gt;
&lt;p&gt;讲一个笑话：&lt;br /&gt;
esp8285 = esp8266 + 1mb flash&lt;/p&gt;
&lt;p&gt;8285资料贼少，折腾了三天，发现 SPI Mode 要设置成 DOUT 才能正常启动，而且有一部分固件这样写进去有一定的问题&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/assets/uploads/2018/04/IMG_20180331_181831.jpg&quot; alt=&quot;IMG_20180331_181831.jpg&quot; /&gt;&lt;img src=&quot;https://zyyme.com/assets/uploads/2018/04/IMG_20180401_111903.jpg&quot; alt=&quot;IMG_20180401_111903.jpg&quot; /&gt;&lt;img src=&quot;https://zyyme.com/assets/uploads/2018/04/IMG_20180331_192429.jpg&quot; alt=&quot;IMG_20180331_192429.jpg&quot; /&gt;&lt;/p&gt;
</content:encoded></item><item><title>Clover</title><link>https://zyyme.com/clover.html</link><guid isPermaLink="true">https://zyyme.com/clover.html</guid><description>这里有一些我为我使用的电脑做的Clover,现已传到Github 详细请见: Github 同时请勿使用此资源用于商业用途,否则后果自负</description><pubDate>Wed, 21 Mar 2018 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;这里有一些我为我使用的电脑做的Clover,现已传到Github&lt;/p&gt;
&lt;p&gt;详细请见: &amp;lt;a href=&quot;https://github.com/zanjie1999/HP-Clover&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;Github&amp;lt;/a&amp;gt;&lt;/p&gt;
&lt;p&gt;同时请勿使用此资源用于商业用途,否则后果自负&lt;/p&gt;
</content:encoded></item><item><title>pinkie box</title><link>https://zyyme.com/pinkie-box.html</link><guid isPermaLink="true">https://zyyme.com/pinkie-box.html</guid><description>pinkiebox2.gif ﻿ 作为强迫症做了一个连贯且无限重复的版本</description><pubDate>Tue, 13 Mar 2018 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;/assets/uploads/2018/03/pinkie_box2.gif&quot; alt=&quot;pinkie_box2.gif&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;audio src=&quot;/assets/uploads/2018/03/tarzan_and_jane_loop.ogg&quot; loop=&quot;loop&quot; controls=&quot;controls&quot;&amp;gt;&amp;lt;span data-mce-type=&quot;bookmark&quot; style=&quot;display: inline-block; width: 0px; overflow: hidden; line-height: 0;&quot; class=&quot;mce_SELRES_start&quot;&amp;gt;﻿&amp;lt;/span&amp;gt;&amp;lt;/audio&amp;gt;&lt;br /&gt;
作为强迫症做了一个连贯且无限重复的版本&lt;/p&gt;
</content:encoded></item><item><title>将TicWatch E刷成Android Wear / Wear OS</title><link>https://zyyme.com/flash-the-ticwatch-e-to-wear-os.html</link><guid isPermaLink="true">https://zyyme.com/flash-the-ticwatch-e-to-wear-os.html</guid><description>How to flash your Ticwatch E to Android Wear / Wear OS 本教程将教你备份手表和将手表刷成Android Wear / Wear OS系统 理论上Ticwatch S通用, Ticwatch 2刷了之后振动器和麦克风不可用 还原备份之后不能记步，请确定你真的需要 NFC 模块的开关会一直维持，理论上公交卡在</description><pubDate>Sun, 11 Mar 2018 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;How to flash your Ticwatch E to Android Wear / Wear OS&lt;/p&gt;
&lt;p&gt;本教程将教你备份手表和将手表刷成Android Wear / Wear OS系统&lt;/p&gt;
&lt;p&gt;理论上Ticwatch S通用, Ticwatch 2刷了之后振动器和麦克风不可用&lt;br /&gt;
&amp;lt;h4&amp;gt;还原备份之后不能记步，请确定你真的需要&amp;lt;/h4&amp;gt;
NFC 模块的开关会一直维持，理论上公交卡在ticwear设置好在wear os是可以使用的&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&amp;lt;h3&amp;gt;这里拒绝提供有偿服务 ←_←&amp;lt;/h3&amp;gt;
&amp;lt;h2&amp;gt;&amp;lt;span style=&quot;color: #ff0000;&quot;&amp;gt;郑咩不会提供并且从未授权过任何人付费帮刷的服务，咸鱼淘宝那些请退款并差评&amp;lt;/span&amp;gt;&amp;lt;/h2&amp;gt;
你可以捐助服务器费用，但是不会对你提供任何其他额外的帮助&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;仔细想想我也是惨哦。。。花了两个月研究出来怎么备份怎么刷机（此处需要感谢kevin、泊未央、EpicLPer），然后一堆人来问，写了个教程，评论区很多人问，于是建了一个群，刚开始有人怼我说根本不用备份（结果现在他们的云同步都串了），然后被人直接复制走赚稿费（比如上面的捉蛋网，复制那个包有一些小问题），引起内部轰动降低搜索排名，由于有很多人没有备份刷坏后找售后保修，售后不再提供救砖服务（使用付费换主板来解决），后来被人搬到问问社区以原创的方式赚取稿费（大概是30-60）。期间呢也遇到“我进你群问你是在抬举你”的身手党，然后呢又有人拿这个教程搞付费刷机还反过来骂我（广告都打到我群里来了，之前盗magisk模块的也是他）。我不开放了就有人来造谣我群一直收费，他收这点怎么了，然后带着小号来我2群打广告，在中国用盗版，不遵守开源协议，拿别人免费开放给的劳动成功来收费都是理所当然的（273775204,3256368589）。至于为什么我那么在乎这些呢，因为花的时间比较多，希望能产生意义，让更多人学会，提升姿势水平，而不是让某些人拿这个来恰烂钱&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;来看一些牛逼的人，他们的信息是百度搜来的公开信息：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/assets/uploads/2018/03/90af1072630e73f.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;免费放出来的东西就这样给这家伙用来赚钱？&amp;lt;span style=&quot;color: #ff0000;&quot;&amp;gt;还发到我的群里来了&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;p&gt;后面还起帖骂我，拉人来攻击我，之前盗国际化magisk模块的也是他&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/assets/uploads/2018/03/Screenshot_20190809-192343__01.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;现在的伸手党越来越没素质了&lt;/p&gt;
&lt;p&gt;QQ: 1976227132  郭梓涵&lt;/p&gt;
&lt;p&gt;MIUI论坛的 gzh2333(uid:216694626已在2017年被封号) 新号 helloabc12138(uid:665075307)&lt;/p&gt;
&lt;p&gt;bilibili的 goretz(uid:11732180，生日11月1日)&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&amp;lt;h3&amp;gt;它们不自觉替换自己的基带,&amp;lt;/h3&amp;gt;
&amp;lt;h3&amp;gt;并教别人不用备份且违反IEEE规则造成严重后果（云同步串了，个人信息泄露）&amp;lt;/h3&amp;gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;QQ: 707229308  陈琛
问问论坛uid:84455 A-chen&lt;/li&gt;
&lt;li&gt;问问论坛uid:78394  Shawn_Zhang&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&amp;lt;h3&amp;gt;搬运一个Wear OS系统更新的fastboot更新包&amp;lt;/h3&amp;gt;
reboot到fastboot解锁(&lt;code&gt;oem unlock&lt;/code&gt;)之后就可以通过flash-all.bat直接刷入啦&lt;/p&gt;
&lt;p&gt;TicwatchOreoUpdate.7z(&amp;lt;a href=&quot;https://pan.baidu.com/s/13ZqQXoLe82Mbi-S5vIGbJA&quot;&amp;gt;百度云&amp;lt;/a&amp;gt; 密码:kc5q)&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&amp;lt;h3&amp;gt;准备&amp;lt;/h3&amp;gt;
首先,win10已经带了MTK驱动所以就不用装驱动了&lt;/p&gt;
&lt;p&gt;你需要准备:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;SP_Flash_Tool_v5.1744_Win 或以上版本(新版有中文了)&lt;/li&gt;
&lt;li&gt;TicwearToAndroidWear.7z (&amp;lt;a href=&quot;https://pan.baidu.com/s/14xZ5eYaUfQw_vbf_kwAq0w&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&amp;gt;百度云&amp;lt;/a&amp;gt; 密码: 9uqy)&lt;/li&gt;
&lt;li&gt;MT2601_Android_scatter.txt (&amp;lt;a href=&quot;https://pan.baidu.com/s/1T_clmo-jPKm4SaJ6fdwHCw&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&amp;gt;百度云&amp;lt;/a&amp;gt; 密码:yz4z)&lt;/li&gt;
&lt;li&gt;wxMEdit 或其他hex编辑器&lt;/li&gt;
&lt;/ol&gt;
&lt;hr /&gt;
&lt;p&gt;&amp;lt;h3&amp;gt;备份&amp;lt;/h3&amp;gt;
&amp;lt;h2&amp;gt;&amp;lt;span style=&quot;color: #ff0000;&quot;&amp;gt;请务必备份,不备份你会后悔&amp;lt;/span&amp;gt;&amp;lt;/h2&amp;gt;
&amp;lt;h4&amp;gt;&amp;lt;span style=&quot;color: #ff0000;&quot;&amp;gt;后面需要替换文件&amp;lt;/span&amp;gt;&amp;lt;/h4&amp;gt;
根据反馈,有的表通电自动开机,备份会失败,下面是一些鬼点子:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;先重启进fastboot或者recovery然后在里面关机&lt;/li&gt;
&lt;li&gt;拿夹子夹住电源键直到备份完毕&lt;/li&gt;
&lt;li&gt;如果你能保持按住电源键十多分钟的话,一直按住他直到备份完毕&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/assets/uploads/2018/03/Snipaste_2018-03-11_12-42-48.png&quot; alt=&quot;Snipaste_2018-03-11_12-42-48.png&quot; /&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;choose 准备的 MT2601_Android_scatter.txt&lt;/li&gt;
&lt;li&gt;切换到 Readback 标签页&lt;/li&gt;
&lt;li&gt;点击 Add 添加&lt;/li&gt;
&lt;li&gt;双击 新增的那一条&lt;/li&gt;
&lt;li&gt;和 MT2601_Android_scatter.txt 放在一起,文件名和 file_name 相同&lt;/li&gt;
&lt;li&gt;选择分区,输入地址和地址和长度&lt;/li&gt;
&lt;li&gt;循环步骤 3到6 ,直到所有分区(共21个)都添加进去&lt;/li&gt;
&lt;li&gt;点击 Read Back 按钮&lt;/li&gt;
&lt;li&gt;将手表关机,然后插上usb&lt;/li&gt;
&lt;li&gt;直到弹出绿色的 ✔ 备份完成&lt;/li&gt;
&lt;li&gt;手表按住电源键直到重启(10秒左右)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt; &lt;br /&gt;
&amp;lt;h3&amp;gt;修改preloader.bin&amp;lt;/h3&amp;gt;
&lt;img src=&quot;/assets/uploads/2018/03/Snipaste_2018-03-11_13-02-14.png&quot; alt=&quot;Snipaste_2018-03-11_13-02-14.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;span style=&quot;color: #ff0000;&quot;&amp;gt;给喷子的提示: 删除完了请仔细检查,不要把你在Windows cmd的垃圾习惯带进来&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;打开 preloader.bin&lt;/li&gt;
&lt;li&gt;删除红线前面的部分( MMM 前面的,注意前面不要有空格)&lt;/li&gt;
&lt;li&gt;删除红线下面的部分(后面全是 FF 或者 00 ,每台机的结尾可能不一样,按实际情况操作)&lt;/li&gt;
&lt;li&gt;保存&lt;/li&gt;
&lt;/ol&gt;
&lt;hr /&gt;
&lt;p&gt;&amp;lt;h3&amp;gt;刷机&amp;lt;/h3&amp;gt;
&lt;img src=&quot;/assets/uploads/2018/03/Snipaste_2018-03-11_13-08-24.png&quot; alt=&quot;Snipaste_2018-03-11_13-08-24.png&quot; /&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;解压 TicwearToAndroidWear.7z&lt;/li&gt;
&lt;li&gt;choose 解压出来的 MT2601_Android_scatter_GPT_Dump.txt&lt;/li&gt;
&lt;li&gt;在 preloader, nvram 和 nvdata 右边双击选择&amp;lt;span style=&quot;color: #ff0000;&quot;&amp;gt;备份的&amp;lt;/span&amp;gt; preloader.bin, nvram.img 和 nvdata.img&lt;/li&gt;
&lt;li&gt;Download only 换成 Format All + Download&lt;/li&gt;
&lt;li&gt;点击 Download 按钮&lt;/li&gt;
&lt;li&gt;将手表关机,然后插上usb&lt;/li&gt;
&lt;li&gt;直到弹出绿色的 ✔ 备份完成&lt;/li&gt;
&lt;li&gt;手表按住电源键直到重启(10秒左右)&lt;/li&gt;
&lt;/ol&gt;
&lt;hr /&gt;
&lt;p&gt;&amp;lt;h3&amp;gt;TWRP &amp;amp; Root&amp;lt;/h3&amp;gt;
&amp;lt;span style=&quot;color: #ff0000;&quot;&amp;gt;Ticwear的root会导致每次开机都会&quot;优化&quot;所有应用&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;p&gt;你需要准备:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;adb工具箱(带fastboot),不知道是什么的可以问 Android 开发老师&lt;/li&gt;
&lt;li&gt;TWRP_TicwatchE_v003.img (&lt;a href=&quot;https://pan.baidu.com/s/1OvPnGEMWSYIl0qTWL3eeeQ&quot;&gt;百度云&lt;/a&gt; 密码:utw2)&lt;/li&gt;
&lt;li&gt;如果是8.0,请刷入 从官网下载的&lt;a href=&quot;https://magisk.download/&quot;&gt;zip包&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;如果是 Ticwear 请使用专用的 TWRP (&lt;a href=&quot;https://pan.baidu.com/s/1GcQksIIt6hfXeL15Oul8bw&quot;&gt;百度云&lt;/a&gt; 密码:n2vy)
并从Super SU官网下载一个 &lt;a href=&quot;http://www.supersu.com/download&quot;&gt;zip包&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;本操作会丢失所有用户数据,可以先用SP Flash Tool备份一下userdata&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;打开usb调试,连接上电脑装好一切驱动(win10又带了)&lt;/li&gt;
&lt;li&gt;如果是8.0,&lt;code&gt;adb push &lt;/code&gt; 把 Magisk zip 拖进来&lt;code&gt;/sdcard&lt;/code&gt;
如果是TicWear,&lt;code&gt;adb push&lt;/code&gt; 把 从Super SU zip 拖进来&lt;code&gt;/sdcard&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;adb reboot bootloader&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;这时手表重启进入到fastboot&lt;/li&gt;
&lt;li&gt;&lt;code&gt;fastboot flash recovery &lt;/code&gt; 把 TWRP_TicwatchE_v003.img 拖进来, 如果是TicWear,拖入TicWear_TWRP_recovery.img&lt;/li&gt;
&lt;li&gt;若 OKAY 跳到第13步,如果不行就继续&lt;/li&gt;
&lt;li&gt;&lt;code&gt;fastboot oem lock&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;长按表冠同意&lt;/li&gt;
&lt;li&gt;&lt;code&gt;fastboot oem unlock&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;长按表冠同意&lt;/li&gt;
&lt;li&gt;&lt;code&gt;fastboot format userdata&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;跳到第5步&lt;/li&gt;
&lt;li&gt;&lt;code&gt;fastboot oem reboot-recovery&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;看一下能不能挂载data,可以的话跳到第16步,如果不行长按10秒把手表关了然后继续&lt;/li&gt;
&lt;li&gt;用SP Flash Tool重新刷入userdata.img(只勾选这一个就可以了)也可以选择备份的userdata&lt;/li&gt;
&lt;li&gt;手表按住电源键直到重启(10秒左右)&lt;/li&gt;
&lt;li&gt;进到系统开usb调试&lt;/li&gt;
&lt;li&gt;&lt;code&gt;adb reboot recovery&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;这时手表重启来到twrp(有一个system只读的提示忽略他)&lt;/li&gt;
&lt;li&gt;如果是TicWear:
Install -&amp;gt; Install ZIP -&amp;gt; Super SU zip&lt;br /&gt;
如果是8.0:&lt;br /&gt;
Install -&amp;gt; Install ZIP -&amp;gt; Magisk zip&lt;br /&gt;
如果不是:&lt;br /&gt;
Install -&amp;gt; Install ZIP -&amp;gt; supersu文件夹 -&amp;gt; SuperSU-2.79-wear_systemless.zip (请勿理会error 2)&lt;/li&gt;
&lt;li&gt;reboot -&amp;gt; system&lt;/li&gt;
&lt;/ol&gt;
&lt;hr /&gt;
&lt;p&gt;&amp;lt;h3&amp;gt;Tips&amp;lt;/h3&amp;gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;apk(&amp;lt;a href=&quot;https://pan.baidu.com/s/14ByEHUynXc7n_otPq0E34w&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&amp;gt;百度云&amp;lt;/a&amp;gt; 密码:xvnv)&lt;/li&gt;
&lt;li&gt;在设置中停用 Tic 相关应用可大幅节省耗电量&lt;/li&gt;
&lt;li&gt;备份步骤可选(你可以只备份 preloader, nvram 和 nvdata ),如果不喜欢 Android Wear 可以选择备份用的txt刷回备份,那么你就回到ticwear了&lt;/li&gt;
&lt;li&gt;Ticwatch 2 USB:
&lt;img src=&quot;/assets/uploads/2018/03/O6aFSie.jpg&quot; alt=&quot;O6aFSie.jpg&quot; /&gt;&lt;/li&gt;
&lt;li&gt;打开蓝牙可查找:
&lt;code&gt;adb shell “am start -a android.bluetooth.adapter.action.REQUEST_DISCOVERABLE”&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt; &lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&amp;lt;h3&amp;gt;感谢&amp;lt;/h3&amp;gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;kevin&lt;/li&gt;
&lt;li&gt;泊未央&lt;/li&gt;
&lt;li&gt;EpicLPer&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt; &lt;/p&gt;
</content:encoded></item><item><title>你好2018</title><link>https://zyyme.com/%E4%BD%A0%E5%A5%BD2018.html</link><guid isPermaLink="true">https://zyyme.com/%E4%BD%A0%E5%A5%BD2018.html</guid><description>新年快乐 小郑咩在这里祝大家新年快乐啦</description><pubDate>Sat, 10 Feb 2018 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&amp;lt;h1&amp;gt;新年快乐~&amp;lt;/h1&amp;gt;
&amp;lt;h3&amp;gt;小郑咩在这里祝大家新年快乐啦&amp;lt;/h3&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>aria2无法下载https问题</title><link>https://zyyme.com/aria2%E6%97%A0%E6%B3%95%E4%B8%8B%E8%BD%BDhttps%E9%97%AE%E9%A2%98.html</link><guid isPermaLink="true">https://zyyme.com/aria2%E6%97%A0%E6%B3%95%E4%B8%8B%E8%BD%BDhttps%E9%97%AE%E9%A2%98.html</guid><description>通常因为安装的aria2不全,导致无法兼容大部分文件下载出现 [ERROR] CUID7 - Download aborted. Download GID857536231c00b75d not complete: Status Legend: (ERR):error occurred. 等问题,有小部分文件能够成功下载,可以尝试添加参数 check-cer</description><pubDate>Sun, 12 Nov 2017 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;通常因为安装的aria2不全,导致无法兼容大部分文件下载出现&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;[ERROR] CUID#7 - Download aborted.
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;Download GID#857536231c00b75d not complete:
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;Status Legend:
(ERR):error occurred.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;等问题,有小部分文件能够成功下载,可以尝试添加参数&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;check-certificate=false
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;来解决这个问题&lt;/p&gt;
</content:encoded></item><item><title>Openwrt安装lnmp</title><link>https://zyyme.com/openwrt%E5%AE%89%E8%A3%85lnmp.html</link><guid isPermaLink="true">https://zyyme.com/openwrt%E5%AE%89%E8%A3%85lnmp.html</guid><description>这个嘛...其实我已经装过很多次了,可能配置文件写的比较丑又懒得再写一遍就一直用下来了 ---------- 安装需要的包: opkg install nginx opkg install php7-mod-mysqli php7-mod-pdo-mysql mysql-server opkg install php7-mod-curl php7-mod-g</description><pubDate>Tue, 07 Nov 2017 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;这个嘛...其实我已经装过很多次了,可能配置文件写的比较丑又懒得再写一遍就一直用下来了&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;安装需要的包:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;opkg install nginx
opkg install php7-mod-mysqli php7-mod-pdo-mysql mysql-server
opkg install php7-mod-curl php7-mod-gd php7-mod-iconv php7-mod-json php7-mod-mbstring php7-mod-opcache php7-mod-session php7-mod-zip
opkg install php7-fpm
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;大概要装的就这些,还有其他要用的PHP库就装吧&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;配置文件,大概就是换掉就好了,有其他需求自己改一下咯:&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;/etc/nginx/nginx.conf&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#user nobody nogroup;
user root root;
worker_processes  1;

error_log  /tmp/log/nginx/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

pid        /tmp/log/nginx/nginx.pid;


events {
    use epoll;
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  &apos;$remote_addr - $remote_user [$time_local] &quot;$request&quot; &apos;
    #                  &apos;$status $body_bytes_sent &quot;$http_referer&quot; &apos;
    #                  &apos;&quot;$http_user_agent&quot; &quot;$http_x_forwarded_for&quot;&apos;;

    #access_log  logs/access.log  main;

    sendfile        on;
    tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    include       php.conf;


#    server {
#        listen       80;
#        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

#        location / {
#            root   html;
#            index  index.html index.htm;
#        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
#        error_page   500 502 503 504  /50x.html;
#        location = /50x.html {
#            root   html;
#        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}

        # deny access to .htaccess files, if Apache&apos;s document root
        # concurs with nginx&apos;s one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
#    }


    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}


    # HTTPS server
    #
    #server {
    #    listen       443;
    #    server_name  localhost;

    #    ssl                  on;
    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;

    #    ssl_session_timeout  5m;

    #    ssl_protocols  SSLv2 SSLv3 TLSv1;
    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers   on;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}

}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;/etc/nginx/php.conf&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;server {
        listen       80;
        server_name _;
        #charset utf-8
        root  /mnt/mmcblk0/Web/www;
        index  index.html index.htm index.php default.php;
        #error_page   500 502 503 504  /50x.html;

        #location = /50x.html {
        #root html;
        #}

        location ~* ^.+\.php(\/.*)*$ {
                #fastcgi_pass   127.0.0.1:9000;
		fastcgi_pass unix:/var/run/php7-fpm.sock;
                fastcgi_index  index.php;
                fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
                include        fastcgi_params;
		client_max_body_size	2048m;
        }

        #error_page   404   /404.html;

        # Deny access to PHP files in specific directory
        #location ~ /(wp-content|uploads|wp-includes|images)/.*\.php$ { deny all; }


        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
        {
            expires      30d;
        }

        location ~ .*\.(js|css)?$
        {
            expires      12h;
        }

        location ~ /.well-known {
            allow all;
        }

        location ~ /\.
        {
            deny all;
        }

}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;/etc/php.ini&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;[PHP]
zend.ze1_compatibility_mode = Off

; Language Options

engine = On
short_open_tag = On
precision    =  12
y2k_compliance = On
output_buffering = Off
;output_handler =
zlib.output_compression = Off
;zlib.output_compression_level = -1
;zlib.output_handler =
implicit_flush = Off
unserialize_callback_func =
serialize_precision = 100

;open_basedir =
disable_functions =
disable_classes =

; Colors for Syntax Highlighting mode.  Anything that&apos;s acceptable in
; &amp;lt;span style=&quot;color: ???????&quot;&amp;gt; would work.
;highlight.string  = #DD0000
;highlight.comment = #FF9900
;highlight.keyword = #007700
;highlight.bg      = #FFFFFF
;highlight.default = #0000BB
;highlight.html    = #000000

;ignore_user_abort = On
;realpath_cache_size = 16k
;realpath_cache_ttl = 120

; Miscellaneous

expose_php = On

; Resource Limits

max_execution_time = 500	; Maximum execution time of each script, in seconds.
max_input_time = 120	; Maximum amount of time each script may spend parsing request data.
;max_input_nesting_level = 64
memory_limit = 16M	; Maximum amount of memory a script may consume.

; Error handling and logging

; Error Level Constants:
; E_ALL             - All errors and warnings (includes E_STRICT as of PHP 6.0.0)
; E_ERROR           - fatal run-time errors
; E_RECOVERABLE_ERROR  - almost fatal run-time errors
; E_WARNING         - run-time warnings (non-fatal errors)
; E_PARSE           - compile-time parse errors
; E_NOTICE          - run-time notices (these are warnings which often result
;                     from a bug in your code, but it&apos;s possible that it was
;                     intentional (e.g., using an uninitialized variable and
;                     relying on the fact it&apos;s automatically initialized to an
;                     empty string)
; E_STRICT			- run-time notices, enable to have PHP suggest changes
;                     to your code which will ensure the best interoperability
;                     and forward compatibility of your code
; E_CORE_ERROR      - fatal errors that occur during PHP&apos;s initial startup
; E_CORE_WARNING    - warnings (non-fatal errors) that occur during PHP&apos;s
;                     initial startup
; E_COMPILE_ERROR   - fatal compile-time errors
; E_COMPILE_WARNING - compile-time warnings (non-fatal errors)
; E_USER_ERROR      - user-generated error message
; E_USER_WARNING    - user-generated warning message
; E_USER_NOTICE     - user-generated notice message
; E_DEPRECATED      - warn about code that will not work in future versions
;                     of PHP
; E_USER_DEPRECATED - user-generated deprecation warnings
;
; Common Values:
;   E_ALL &amp;amp; ~E_NOTICE  (Show all errors, except for notices and coding standards warnings.)
;   E_ALL &amp;amp; ~E_NOTICE | E_STRICT  (Show all errors, except for notices)
;   E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR  (Show only errors)
;   E_ALL | E_STRICT  (Show all errors, warnings and notices including coding standards.)
; Default Value: E_ALL &amp;amp; ~E_NOTICE
error_reporting  =  E_ALL &amp;amp; ~E_NOTICE &amp;amp; ~E_STRICT

display_errors = On
display_startup_errors = Off
log_errors = Off
log_errors_max_len = 1024
ignore_repeated_errors = Off
ignore_repeated_source = Off
report_memleaks = On
;report_zend_debug = 0
track_errors = Off
;html_errors = Off
;docref_root = &quot;/phpmanual/&quot;
;docref_ext = .html
;error_prepend_string = &quot;&amp;lt;font color=#ff0000&amp;gt;&quot;
;error_append_string = &quot;&amp;lt;/font&amp;gt;&quot;
; Log errors to specified file.
;error_log = /var/log/php_errors.log
; Log errors to syslog.
;error_log = syslog

; Data Handling

;arg_separator.output = &quot;&amp;amp;amp;&quot;
;arg_separator.input = &quot;;&amp;amp;&quot;
variables_order = &quot;EGPCS&quot;
request_order = &quot;GP&quot;
register_globals = Off
register_long_arrays = Off
register_argc_argv = On
auto_globals_jit = On
post_max_size = 2048M
;magic_quotes_gpc = Off
magic_quotes_runtime = Off
magic_quotes_sybase = Off
auto_prepend_file =
auto_append_file =
default_mimetype = &quot;text/html&quot;
;default_charset = &quot;iso-8859-1&quot;
;always_populate_raw_post_data = On

; Paths and Directories

; UNIX: &quot;/path1:/path2&quot;
;include_path = &quot;.:/php/includes&quot;
#doc_root = &quot;/www&quot;
user_dir =
extension_dir = &quot;/usr/lib/php&quot;
enable_dl = On
;cgi.force_redirect = 1
;cgi.nph = 1
;cgi.redirect_status_env = ;
cgi.fix_pathinfo=1
;fastcgi.impersonate = 1;
;fastcgi.logging = 0
;cgi.rfc2616_headers = 0

; File Uploads

file_uploads = On
upload_tmp_dir = &quot;/mnt/mmcblk0/Web/tmp&quot;
upload_max_filesize = 2048M
max_file_uploads = 20

; Fopen wrappers

allow_url_fopen = On
allow_url_include = Off
;from=&quot;john@doe.com&quot;
;user_agent=&quot;PHP&quot;
default_socket_timeout = 60
;auto_detect_line_endings = Off&amp;lt;/span&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;/etc/my.cnf&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;[client]
port		= 3306
socket		= /var/run/mysqld.sock

[mysqld]
user		= root
socket		= /var/run/mysqld.sock
port		= 3306
basedir		= /usr

############ Don&apos;t put this on the NAND #############
# Figure out where you are going to put the databases
# And run mysql_install_db --force
datadir		= /mnt/mmcblk0/Web/mysql/

######### This should also not go on the NAND #######
tmpdir		= /mnt/mmcblk0/Web/tmp/

skip-external-locking

bind-address		= 127.0.0.1

# Fine Tuning
key_buffer		= 16M
max_allowed_packet	= 16M
thread_stack		= 192K
thread_cache_size       = 8

# Here you can see queries with especially long duration
#log_slow_queries	= /var/log/mysql/mysql-slow.log
#long_query_time = 2
#log-queries-not-using-indexes

# The following can be used as easy to replay backup logs or for replication.
#server-id		= 1
#log_bin			= /var/log/mysql/mysql-bin.log
#expire_logs_days	= 10
#max_binlog_size         = 100M
#binlog_do_db		= include_database_name
#binlog_ignore_db	= include_database_name


[mysqldump]
quick
quote-names
max_allowed_packet	= 16M

[mysql]
#no-auto-rehash	# faster start of mysql but no tab completition

[isamchk]
key_buffer		= 16M
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;/etc/php7-fpm.d/www.conf&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;; Start a new pool named &apos;www&apos;.
; the variable $pool can we used in any directive and will be replaced by the
; pool name (&apos;www&apos; here)
[www]

; Per pool prefix
; It only applies on the following directives:
; - &apos;slowlog&apos;
; - &apos;listen&apos; (unixsocket)
; - &apos;chroot&apos;
; - &apos;chdir&apos;
; - &apos;php_values&apos;
; - &apos;php_admin_values&apos;
; When not set, the global prefix (or /usr) applies instead.
; Note: This directive can also be relative to the global prefix.
; Default Value: none
;prefix = /path/to/pools/$pool

; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user&apos;s group
;       will be used.
user = root
;group = root

; The address on which to accept FastCGI requests.
; Valid syntaxes are:
;   &apos;ip.add.re.ss:port&apos;    - to listen on a TCP socket to a specific address on
;                            a specific port;
;   &apos;port&apos;                 - to listen on a TCP socket to all addresses on a
;                            specific port;
;   &apos;/path/to/unix/socket&apos; - to listen on a unix socket.
; Note: This value is mandatory.
;listen = 127.0.0.1:9000 
listen = /var/run/php7-fpm.sock

; Set listen(2) backlog.
; Default Value: 128 (-1 on FreeBSD and OpenBSD)
;listen.backlog = 128

; Set permissions for unix socket, if one is used. In Linux, read/write
; permissions must be set in order to allow connections from a web server. Many
; BSD-derived systems allow connections regardless of permissions. 
; Default Values: user and group are set as the running user
;                 mode is set to 0666
listen.owner = root
listen.group = root
listen.mode = 0666

; List of ipv4 addresses of FastCGI clients which are allowed to connect.
; Equivalent to the FCGI_WEB_SERVER_ADDRS environment variable in the original
; PHP FCGI (5.2.2+). Makes sense only with a tcp listening socket. Each address
; must be separated by a comma. If this value is left blank, connections will be
; accepted from any ip address.
; Default Value: any
;listen.allowed_clients = 127.0.0.1

; Specify the nice(2) priority to apply to the pool processes (only if set)
; The value can vary from -19 (highest priority) to 20 (lower priority)
; Note: - It will only work if the FPM master process is launched as root
;       - The pool processes will inherit the master process priority
;         unless it specified otherwise
; Default Value: no set
; priority = -19

; Choose how the process manager will control the number of child processes.
; Possible Values:
;   static  - a fixed number (pm.max_children) of child processes;
;   dynamic - the number of child processes are set dynamically based on the
;             following directives. With this process management, there will be
;             always at least 1 children.
;             pm.max_children      - the maximum number of children that can
;                                    be alive at the same time.
;             pm.start_servers     - the number of children created on startup.
;             pm.min_spare_servers - the minimum number of children in &apos;idle&apos;
;                                    state (waiting to process). If the number
;                                    of &apos;idle&apos; processes is less than this
;                                    number then some children will be created.
;             pm.max_spare_servers - the maximum number of children in &apos;idle&apos;
;                                    state (waiting to process). If the number
;                                    of &apos;idle&apos; processes is greater than this
;                                    number then some children will be killed.
;  ondemand - no children are created at startup. Children will be forked when
;             new requests will connect. The following parameter are used:
;             pm.max_children           - the maximum number of children that
;                                         can be alive at the same time.
;             pm.process_idle_timeout   - The number of seconds after which
;                                         an idle process will be killed.
; Note: This value is mandatory.
pm = dynamic

; The number of child processes to be created when pm is set to &apos;static&apos; and the
; maximum number of child processes when pm is set to &apos;dynamic&apos; or &apos;ondemand&apos;.
; This value sets the limit on the number of simultaneous requests that will be
; served. Equivalent to the ApacheMaxClients directive with mpm_prefork.
; Equivalent to the PHP_FCGI_CHILDREN environment variable in the original PHP
; CGI. The below defaults are based on a server without much resources. Don&apos;t
; forget to tweak pm.* to fit your needs.
; Note: Used when pm is set to &apos;static&apos;, &apos;dynamic&apos; or &apos;ondemand&apos;
; Note: This value is mandatory.
pm.max_children = 5

; The number of child processes created on startup.
; Note: Used only when pm is set to &apos;dynamic&apos;
; Default Value: min_spare_servers + (max_spare_servers - min_spare_servers) / 2
pm.start_servers = 2

; The desired minimum number of idle server processes.
; Note: Used only when pm is set to &apos;dynamic&apos;
; Note: Mandatory when pm is set to &apos;dynamic&apos;
pm.min_spare_servers = 1

; The desired maximum number of idle server processes.
; Note: Used only when pm is set to &apos;dynamic&apos;
; Note: Mandatory when pm is set to &apos;dynamic&apos;
pm.max_spare_servers = 3

; The number of seconds after which an idle process will be killed.
; Note: Used only when pm is set to &apos;ondemand&apos;
; Default Value: 10s
;pm.process_idle_timeout = 10s;

; The number of requests each child process should execute before respawning.
; This can be useful to work around memory leaks in 3rd party libraries. For
; endless request processing specify &apos;0&apos;. Equivalent to PHP_FCGI_MAX_REQUESTS.
; Default Value: 0
;pm.max_requests = 500

; The URI to view the FPM status page. If this value is not set, no URI will be
; recognized as a status page. It shows the following informations:
;   pool                 - the name of the pool;
;   process manager      - static, dynamic or ondemand;
;   start time           - the date and time FPM has started;
;   start since          - number of seconds since FPM has started;
;   accepted conn        - the number of request accepted by the pool;
;   listen queue         - the number of request in the queue of pending
;                          connections (see backlog in listen(2));
;   max listen queue     - the maximum number of requests in the queue
;                          of pending connections since FPM has started;
;   listen queue len     - the size of the socket queue of pending connections;
;   idle processes       - the number of idle processes;
;   active processes     - the number of active processes;
;   total processes      - the number of idle + active processes;
;   max active processes - the maximum number of active processes since FPM
;                          has started;
;   max children reached - number of times, the process limit has been reached,
;                          when pm tries to start more children (works only for
;                          pm &apos;dynamic&apos; and &apos;ondemand&apos;);
; Value are updated in real time.
; Example output:
;   pool:                 www
;   process manager:      static
;   start time:           01/Jul/2011:17:53:49 +0200
;   start since:          62636
;   accepted conn:        190460
;   listen queue:         0
;   max listen queue:     1
;   listen queue len:     42
;   idle processes:       4
;   active processes:     11
;   total processes:      15
;   max active processes: 12
;   max children reached: 0
;
; By default the status page output is formatted as text/plain. Passing either
; &apos;html&apos;, &apos;xml&apos; or &apos;json&apos; in the query string will return the corresponding
; output syntax. Example:
;   http://www.foo.bar/status
;   http://www.foo.bar/status?json
;   http://www.foo.bar/status?html
;   http://www.foo.bar/status?xml
;
; By default the status page only outputs short status. Passing &apos;full&apos; in the
; query string will also return status for each pool process.
; Example: 
;   http://www.foo.bar/status?full
;   http://www.foo.bar/status?json&amp;amp;full
;   http://www.foo.bar/status?html&amp;amp;full
;   http://www.foo.bar/status?xml&amp;amp;full
; The Full status returns for each process:
;   pid                  - the PID of the process;
;   state                - the state of the process (Idle, Running, ...);
;   start time           - the date and time the process has started;
;   start since          - the number of seconds since the process has started;
;   requests             - the number of requests the process has served;
;   request duration     - the duration in µs of the requests;
;   request method       - the request method (GET, POST, ...);
;   request URI          - the request URI with the query string;
;   content length       - the content length of the request (only with POST);
;   user                 - the user (PHP_AUTH_USER) (or &apos;-&apos; if not set);
;   script               - the main script called (or &apos;-&apos; if not set);
;   last request cpu     - the %cpu the last request consumed
;                          it&apos;s always 0 if the process is not in Idle state
;                          because CPU calculation is done when the request
;                          processing has terminated;
;   last request memory  - the max amount of memory the last request consumed
;                          it&apos;s always 0 if the process is not in Idle state
;                          because memory calculation is done when the request
;                          processing has terminated;
; If the process is in Idle state, then informations are related to the
; last request the process has served. Otherwise informations are related to
; the current request being served.
; Example output:
;   ************************
;   pid:                  31330
;   state:                Running
;   start time:           01/Jul/2011:17:53:49 +0200
;   start since:          63087
;   requests:             12808
;   request duration:     1250261
;   request method:       GET
;   request URI:          /test_mem.php?N=10000
;   content length:       0
;   user:                 -
;   script:               /home/fat/web/docs/php/test_mem.php
;   last request cpu:     0.00
;   last request memory:  0
;
; Note: There is a real-time FPM status monitoring sample web page available
;       It&apos;s available in: ${prefix}/share/fpm/status.html
;
; Note: The value must start with a leading slash (/). The value can be
;       anything, but it may not be a good idea to use the .php extension or it
;       may conflict with a real PHP file.
; Default Value: not set 
;pm.status_path = /status

; The ping URI to call the monitoring page of FPM. If this value is not set, no
; URI will be recognized as a ping page. This could be used to test from outside
; that FPM is alive and responding, or to
; - create a graph of FPM availability (rrd or such);
; - remove a server from a group if it is not responding (load balancing);
; - trigger alerts for the operating team (24/7).
; Note: The value must start with a leading slash (/). The value can be
;       anything, but it may not be a good idea to use the .php extension or it
;       may conflict with a real PHP file.
; Default Value: not set
;ping.path = /ping

; This directive may be used to customize the response of a ping request. The
; response is formatted as text/plain with a 200 response code.
; Default Value: pong
;ping.response = pong

; The access log file
; Default: not set
;access.log = log/$pool.access.log

; The access log format.
; The following syntax is allowed
;  %%: the &apos;%&apos; character
;  %C: %CPU used by the request
;      it can accept the following format:
;      - %{user}C for user CPU only
;      - %{system}C for system CPU only
;      - %{total}C  for user + system CPU (default)
;  %d: time taken to serve the request
;      it can accept the following format:
;      - %{seconds}d (default)
;      - %{miliseconds}d
;      - %{mili}d
;      - %{microseconds}d
;      - %{micro}d
;  %e: an environment variable (same as $_ENV or $_SERVER)
;      it must be associated with embraces to specify the name of the env
;      variable. Some exemples:
;      - server specifics like: %{REQUEST_METHOD}e or %{SERVER_PROTOCOL}e
;      - HTTP headers like: %{HTTP_HOST}e or %{HTTP_USER_AGENT}e
;  %f: script filename
;  %l: content-length of the request (for POST request only)
;  %m: request method
;  %M: peak of memory allocated by PHP
;      it can accept the following format:
;      - %{bytes}M (default)
;      - %{kilobytes}M
;      - %{kilo}M
;      - %{megabytes}M
;      - %{mega}M
;  %n: pool name
;  %o: ouput header
;      it must be associated with embraces to specify the name of the header:
;      - %{Content-Type}o
;      - %{X-Powered-By}o
;      - %{Transfert-Encoding}o
;      - ....
;  %p: PID of the child that serviced the request
;  %P: PID of the parent of the child that serviced the request
;  %q: the query string 
;  %Q: the &apos;?&apos; character if query string exists
;  %r: the request URI (without the query string, see %q and %Q)
;  %R: remote IP address
;  %s: status (response code)
;  %t: server time the request was received
;      it can accept a strftime(3) format:
;      %d/%b/%Y:%H:%M:%S %z (default)
;  %T: time the log has been written (the request has finished)
;      it can accept a strftime(3) format:
;      %d/%b/%Y:%H:%M:%S %z (default)
;  %u: remote user
;
; Default: &quot;%R - %u %t \&quot;%m %r\&quot; %s&quot;
;access.format = &quot;%R - %u %t \&quot;%m %r%Q%q\&quot; %s %f %{mili}d %{kilo}M %C%%&quot;

; The log file for slow requests
; Default Value: not set
; Note: slowlog is mandatory if request_slowlog_timeout is set
;slowlog = log/$pool.log.slow

; The timeout for serving a single request after which a PHP backtrace will be
; dumped to the &apos;slowlog&apos; file. A value of &apos;0s&apos; means &apos;off&apos;.
; Available units: s(econds)(default), m(inutes), h(ours), or d(ays)
; Default Value: 0
;request_slowlog_timeout = 0

; The timeout for serving a single request after which the worker process will
; be killed. This option should be used when the &apos;max_execution_time&apos; ini option
; does not stop script execution for some reason. A value of &apos;0&apos; means &apos;off&apos;.
; Available units: s(econds)(default), m(inutes), h(ours), or d(ays)
; Default Value: 0
;request_terminate_timeout = 0

; Set open file descriptor rlimit.
; Default Value: system defined value
;rlimit_files = 1024

; Set max core size rlimit.
; Possible Values: &apos;unlimited&apos; or an integer greater or equal to 0
; Default Value: system defined value
;rlimit_core = 0

; Chroot to this directory at the start. This value must be defined as an
; absolute path. When this value is not set, chroot is not used.
; Note: you can prefix with &apos;$prefix&apos; to chroot to the pool prefix or one
; of its subdirectories. If the pool prefix is not set, the global prefix
; will be used instead.
; Note: chrooting is a great security feature and should be used whenever
;       possible. However, all PHP paths will be relative to the chroot
;       (error_log, sessions.save_path, ...).
; Default Value: not set
;chroot =

; Chdir to this directory at the start.
; Note: relative path can be used.
; Default Value: current directory or / when chroot
chdir = /

; Redirect worker stdout and stderr into main error log. If not set, stdout and
; stderr will be redirected to /dev/null according to FastCGI specs.
; Note: on highloaded environement, this can cause some delay in the page
; process time (several ms).
; Default Value: no
;catch_workers_output = yes

; Limits the extensions of the main script FPM will allow to parse. This can
; prevent configuration mistakes on the web server side. You should only limit
; FPM to .php extensions to prevent malicious users to use other extensions to
; exectute php code.
; Note: set an empty value to allow all extensions.
; Default Value: .php
;security.limit_extensions = .php .php3 .php4 .php5

; Pass environment variables like LD_LIBRARY_PATH. All $VARIABLEs are taken from
; the current environment.
; Default Value: clean env
;env[HOSTNAME] = $HOSTNAME
;env[PATH] = /usr/local/bin:/usr/bin:/bin
;env[TMP] = /tmp
;env[TMPDIR] = /tmp
;env[TEMP] = /tmp

; Additional php.ini defines, specific to this pool of workers. These settings
; overwrite the values previously defined in the php.ini. The directives are the
; same as the PHP SAPI:
;   php_value/php_flag             - you can set classic ini defines which can
;                                    be overwritten from PHP call &apos;ini_set&apos;. 
;   php_admin_value/php_admin_flag - these directives won&apos;t be overwritten by
;                                     PHP call &apos;ini_set&apos;
; For php_*flag, valid values are on, off, 1, 0, true, false, yes or no.

; Defining &apos;extension&apos; will load the corresponding shared extension from
; extension_dir. Defining &apos;disable_functions&apos; or &apos;disable_classes&apos; will not
; overwrite previously defined php.ini values, but will append the new value
; instead.

; Note: path INI options can be relative and will be expanded with the prefix
; (pool, global or /usr)

; Default Value: nothing is defined by default except the values in php.ini and
;                specified at startup with the -d argument
;php_admin_value[sendmail_path] = /usr/sbin/sendmail -t -i -f www@my.domain.com
;php_flag[display_errors] = off
;php_admin_value[error_log] = /var/log/fpm-php.www.log
;php_admin_flag[log_errors] = on
;php_admin_value[memory_limit] = 32M
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;因为我要用root启动fpm所以要改一下:&lt;/p&gt;
&lt;p&gt;/etc/init.d/php7-fpm&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#!/bin/sh /etc/rc.common

START=50

PROG=/usr/bin/php-fpm
CONFIG=/etc/php7-fpm.conf
#CONFIG=/etc/php7-fdm.d/www.conf

SERVICE_PID_FILE=/var/run/php7-fpm.pid

start_instance() {
	local section=&quot;$1&quot;
	local enabled

	config_get_bool enabled &quot;$section&quot; &apos;enabled&apos; 0

	[ $enabled -gt 0 ] || return 1

	service_start $PROG -y $CONFIG -g $SERVICE_PID_FILE -R
}

start() {
	config_load &apos;php7-fpm&apos;
	config_foreach start_instance &apos;php7-fpm&apos;
}

stop() {
	service_stop $PROG
}
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>Tomcat设置SSL</title><link>https://zyyme.com/tomcat%E8%AE%BE%E7%BD%AEssl.html</link><guid isPermaLink="true">https://zyyme.com/tomcat%E8%AE%BE%E7%BD%AEssl.html</guid><description>在终端执行命令生成 .keystore keytool -genkey - alias tomcat -keyalg RSA 输入所需信息,如果买了的跳过生成这个步骤 之后生成了一个 /.keystore ---------- 编辑 server.xml 添加 Connector SSLEnabled=&quot;true&quot; acceptCount=&quot;100&quot; cli</description><pubDate>Thu, 21 Sep 2017 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;在终端执行命令生成```&lt;br /&gt;
.keystore&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;keytool -genkey -&amp;lt;span class=&quot;hljs-keyword&quot;&amp;gt;alias&amp;lt;/span&amp;gt; tomcat -keyalg RSA&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
输入所需信息,如果买了的跳过生成这个步骤

之后生成了一个```
~/.keystore
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;p&gt;编辑 &lt;code&gt;server.xml&lt;/code&gt;，添加&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Connector SSLEnabled=&quot;true&quot; acceptCount=&quot;100&quot; clientAuth=&quot;false&quot;  
disableUploadTimeout=&quot;true&quot; enableLookups=&quot;false&quot; maxThreads=&quot;25&quot;  
port=&quot;端口号&quot; keystoreFile=&quot;你的.keystore绝对路径&quot; keystorePass=&quot;设置的密码&quot;  
protocol=&quot;org.apache.coyote.http11.Http11NioProtocol&quot; scheme=&quot;https&quot;  
secure=&quot;true&quot; sslProtocol=&quot;TLS&quot; /&amp;amp;gt;  
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;p&gt;如果需要强制启用(只能使用 HTTPS ,使用 HTTP 访问会自动跳转),编辑 &lt;code&gt;web.xml&lt;/code&gt; ,在```
&amp;lt;web-app&amp;gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;内添加

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;lt;security-constraint&amp;gt;&lt;br /&gt;
&amp;lt;web-resource-collection&amp;gt;&lt;br /&gt;
&amp;lt;web-resource-name&amp;gt;securedapp&amp;lt;/web-resource-name&amp;gt;&lt;br /&gt;
&amp;lt;url-pattern&amp;gt;/*&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;
&amp;lt;/web-resource-collection&amp;gt;&lt;br /&gt;
&amp;lt;user-data-constraint&amp;gt;&lt;br /&gt;
&amp;lt;transport-guarantee&amp;gt;CONFIDENTIAL&amp;lt;/transport-guarantee&amp;gt;&lt;br /&gt;
&amp;lt;/user-data-constraint&amp;gt;&lt;br /&gt;
&amp;lt;/security-constraint&amp;gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>mac挂载ntfs读写</title><link>https://zyyme.com/mac%E6%8C%82%E8%BD%BDntfs%E8%AF%BB%E5%86%99.html</link><guid isPermaLink="true">https://zyyme.com/mac%E6%8C%82%E8%BD%BDntfs%E8%AF%BB%E5%86%99.html</guid><description>2021/12/15更新： 原来的办法太麻烦了，想了个办法，可以在保持ui中显示的同时将ntfs挂为读写，只需要运行这条命令，并输入密码按回车，在macOS12上测试通过 df|grep ntfs:|awk &apos;{match($1,/disk[0-9]+s[0-9]+/);system(&quot;sudo mount -o rw,nobrowse -t ntfs /d</description><pubDate>Sat, 16 Sep 2017 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;2021/12/15更新：&lt;/p&gt;
&lt;p&gt;原来的办法太麻烦了，想了个办法，可以在保持ui中显示的同时将ntfs挂为读写，只需要运行这条命令，并输入密码按回车，在macOS12上测试通过&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;df|grep ntfs:|awk &apos;{match($1,/disk[0-9]+s[0-9]+/);system(&quot;sudo mount -o rw,nobrowse -t ntfs /dev&quot;substr($1,7,RLENGTH+1)&quot; &quot;$9)}&apos;
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;ol&gt;
&lt;li&gt;打开磁盘工具，找到要挂载的分区，按简介找到UUID&lt;/li&gt;
&lt;li&gt;编辑 &lt;code&gt;/etc/fstab&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;加入&lt;code&gt;UUID=刚刚找到的UUID none ntfs rw,auto,nobrowse&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Finder打开&lt;code&gt;/Volumes&lt;/code&gt;并把挂载的磁盘拖到收藏&lt;/li&gt;
&lt;/ol&gt;
</content:encoded></item><item><title>尝试涂了一个RD</title><link>https://zyyme.com/%E5%B0%9D%E8%AF%95%E6%B6%82%E4%BA%86%E4%B8%80%E4%B8%AArd.html</link><guid isPermaLink="true">https://zyyme.com/%E5%B0%9D%E8%AF%95%E6%B6%82%E4%BA%86%E4%B8%80%E4%B8%AArd.html</guid><pubDate>Sun, 10 Sep 2017 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;/assets/uploads/2017/09/RD.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
</content:encoded></item><item><title>Linux USB 设备自动挂载rules</title><link>https://zyyme.com/linux-auto-mount-rules.html</link><guid isPermaLink="true">https://zyyme.com/linux-auto-mount-rules.html</guid><description>在 /etc/udev/rules.d 添加文件 10-automount.rules KERNEL!=&quot;sd[a-z]?&quot;, GOTO=&quot;automountexit&quot; ACTION==&quot;add&quot;, SUBSYSTEM==&quot;block&quot;, RUN+=&quot;/bin/mkdir /media/%E{IDFSLABEL}-%E{IDFSUUID}&quot;, RUN+=&quot;/</description><pubDate>Sat, 19 Aug 2017 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;在&lt;code&gt;  /etc/udev/rules.d  &lt;/code&gt;添加文件```
10-automount.rules&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;KERNEL!=&quot;sd[a-z]?&quot;, GOTO=&quot;automount_exit&quot;
ACTION==&quot;add&quot;, SUBSYSTEM==&quot;block&quot;, RUN+=&quot;/bin/mkdir /media/%E{ID_FS_LABEL}-%E{ID_FS_UUID}&quot;, RUN+=&quot;/bin/mount -o uid=1000,user,codepage=936,utf8 $root/%k /media/%E{ID_FS_LABEL}-%E{ID_FS_UUID}&quot;
ACTION==&quot;remove&quot;, SUBSYSTEM==&quot;block&quot;, RUN+=&quot;/bin/umount /media/%E{ID_FS_LABEL}-%E{ID_FS_UUID}&quot;, RUN+=&quot;/bin/rmdir /media/%E{ID_FS_LABEL}-%E{ID_FS_UUID}&quot;
LABEL=&quot;automount_exit&quot;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
这时候，插上设备时会自动在```  
/media  
```创建文件夹挂载，移除设备时文件夹会自动删除&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>发现Linux版MySQL的表名是区大小写的</title><link>https://zyyme.com/%E5%8F%91%E7%8E%B0linux%E7%89%88mysql%E7%9A%84%E8%A1%A8%E5%90%8D%E6%98%AF%E5%8C%BA%E5%A4%A7%E5%B0%8F%E5%86%99%E7%9A%84.html</link><guid isPermaLink="true">https://zyyme.com/%E5%8F%91%E7%8E%B0linux%E7%89%88mysql%E7%9A%84%E8%A1%A8%E5%90%8D%E6%98%AF%E5%8C%BA%E5%A4%A7%E5%B0%8F%E5%86%99%E7%9A%84.html</guid><description>Linux版MySQL表名区大小写 Windows版MySQL表名 不 区大小写 从Windows下导出的数据脚本中使用的是小写,所以再导入到Linux上所有的表名都是小写 ---------- 让MySQL不区分表名大小写的方法： 修改/etc/my.cnf 在 [mysqld] 下加入一行 lowercasetablenames=1 重启数据库</description><pubDate>Mon, 07 Aug 2017 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Linux版MySQL表名区大小写&lt;/p&gt;
&lt;p&gt;Windows版MySQL表名&amp;lt;strong&amp;gt;不&amp;lt;/strong&amp;gt;区大小写&lt;/p&gt;
&lt;p&gt;从Windows下导出的数据脚本中使用的是小写,所以再导入到Linux上所有的表名都是小写&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;让MySQL不区分表名大小写的方法：&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;修改/etc/my.cnf&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;在&lt;code&gt;  [mysqld]  &lt;/code&gt;下加入一行```
lower_case_table_names=1&lt;/p&gt;
&lt;pre&gt;&lt;code&gt; 	&amp;lt;li&amp;gt;重启数据库&amp;lt;/li&amp;gt;
&amp;lt;/ol&amp;gt;&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>给RedHat6.5配置yum</title><link>https://zyyme.com/%E7%BB%99redhat6-5%E9%85%8D%E7%BD%AEyum.html</link><guid isPermaLink="true">https://zyyme.com/%E7%BB%99redhat6-5%E9%85%8D%E7%BD%AEyum.html</guid><description>今天中科大的centos源403了,阿里的好慢,拿163的用用吧 ---------- 设置dns如果没设置的话 编辑 /etc/resolv.conf nameserver 223.6.6.6 ---------- 下载centos的yum wget http://mirrors.163.com/centos/6/os/x8664/Packages/yum</description><pubDate>Thu, 27 Jul 2017 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;今天中科大的centos源403了,阿里的好慢,拿163的用用吧&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;设置dns如果没设置的话&lt;/p&gt;
&lt;p&gt;编辑 ```&lt;br /&gt;
/etc/resolv.conf&lt;br /&gt;
nameserver 223.6.6.6&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
----------

下载centos的yum
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;wget http://mirrors.163.com/centos/6/os/x86_64/Packages/yum-metadata-parser-1.1.2-16.el6.x86_64.rpm&lt;br /&gt;
wget http://mirrors.163.com/centos/6/os/x86_64/Packages/yum-plugin-fastestmirror-1.1.30-40.el6.noarch.rpm&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
yum-3.2.29-30.el6.noarch.rpm需要自行下载再scp上去...源没有了...(&amp;lt;a href=&quot;https://pan.baidu.com/s/1qYpxCrq&quot;&amp;gt;百度云&amp;lt;/a&amp;gt;)
这些rpm包小版本号会变更，所有复制此链接时，如果报404错误，请登入此网页并查看具体小版本号

卸载自带的
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;rpm -aq | grep yum|xargs rpm -e --nodeps&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
安装
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;rpm -iv yum-3.2.29-30.el6.noarch.rpm  yum-metadata-parser-1.1.2-16.el6.x86_64.rpm  yum-plugin-fastestmirror-1.1.30-40.el6.noarch.rpm&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
设置软件源
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;cd /etc/yum.repos.d/&lt;br /&gt;
wget http://mirrors.163.com/.help/CentOS6-Base-163.repo&lt;br /&gt;
sed -i &apos;s#$releasever#6#g&apos; CentOS6-Base-163.repo&lt;br /&gt;
yum clean all&lt;br /&gt;
yum makecache&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
然后就可以用```
yum install 包名
```安装软件了

----------  

另外,Google是个好东西  

附: &amp;lt;a href=&quot;https://www.scalescale.com/tips/nginx/how-to-install-nginx-on-centos-rhel/&quot;&amp;gt;在Redhat 上安装 nginx(English)&amp;lt;/a&amp;gt;&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>网易云音乐 for Ubuntu17.04</title><link>https://zyyme.com/%E7%BD%91%E6%98%93%E4%BA%91%E9%9F%B3%E4%B9%90-for-ubuntu17-04.html</link><guid isPermaLink="true">https://zyyme.com/%E7%BD%91%E6%98%93%E4%BA%91%E9%9F%B3%E4%B9%90-for-ubuntu17-04.html</guid><description>依赖变了所以装不了,改了一下依赖就可以装了 依赖：qt5-style-plugins 度盘下载: netease-cloud-music1.0.0i386ubuntu17.04.deb.deb (鬼知道为什么我打包的时候打了这样一个包名)</description><pubDate>Sat, 27 May 2017 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;依赖变了所以装不了,改了一下依赖就可以装了&lt;/p&gt;
&lt;p&gt;依赖：qt5-style-plugins&lt;/p&gt;
&lt;p&gt;度盘下载: &amp;lt;a href=&quot;https://pan.baidu.com/s/1slbKPq9&quot;&amp;gt;netease-cloud-music_1.0.0_i386_ubuntu17.04.deb.deb&amp;lt;/a&amp;gt;&lt;/p&gt;
&lt;p&gt;(鬼知道为什么我打包的时候打了这样一个包名)&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
</content:encoded></item><item><title>解决百度云限速问题</title><link>https://zyyme.com/%E8%A7%A3%E5%86%B3%E7%99%BE%E5%BA%A6%E4%BA%91%E9%99%90%E9%80%9F%E9%97%AE%E9%A2%98.html</link><guid isPermaLink="true">https://zyyme.com/%E8%A7%A3%E5%86%B3%E7%99%BE%E5%BA%A6%E4%BA%91%E9%99%90%E9%80%9F%E9%97%AE%E9%A2%98.html</guid><description>最近百度云已经开始服务端限速了 当一个用户下载超过限定流量时速度会变成10k甚至个位数 ---------- 解决办法: 首先你要有这些东西: chrome浏览器 aria2 非移动端设备 然后你需要一个插件: BaiduExporter (GitHub) 在 chrome扩展程序页面 点击 加载已解压的扩展程序 选择从GitHub下载下来的 chrome文</description><pubDate>Thu, 18 May 2017 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&amp;lt;h2&amp;gt;最近百度云已经开始服务端限速了&amp;lt;/h2&amp;gt;
&amp;lt;h3&amp;gt;当一个用户下载超过限定流量时速度会变成10k甚至个位数&amp;lt;/h3&amp;gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&amp;lt;h4&amp;gt;解决办法:&amp;lt;/h4&amp;gt;
首先你要有这些东西:&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;chrome浏览器&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;aria2&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;非移动端设备&amp;lt;/li&amp;gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
然后你需要一个插件: &amp;lt;a href=&quot;https://github.com/acgotaku/BaiduExporter&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&amp;gt;BaiduExporter (GitHub)&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;在&amp;lt;a href=&quot;chrome://extensions/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&amp;gt;chrome扩展程序页面&amp;lt;/a&amp;gt;点击 加载已解压的扩展程序&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;选择从GitHub下载下来的 chrome文件夹&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;打勾 在隐身模式下启用&amp;lt;/li&amp;gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
在百度云给你要下载的东西创建一个分享链接,别人分享给你的也可以&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;打开一个隐身标签页(Ctrl+Shift+N)&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;打开分享地址&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;使用导出下载功能&amp;lt;/li&amp;gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
这时候就可以获得类似于新帐号的速度,当然这样下载也是会限制流量的,不过没关系,把隐身标签页关了重新打开一个又能享受新帐号的速度啦&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
</content:encoded></item><item><title>最近入了小马坑</title><link>https://zyyme.com/%E6%9C%80%E8%BF%91%E5%85%A5%E4%BA%86%E5%B0%8F%E9%A9%AC%E5%9D%91.html</link><guid isPermaLink="true">https://zyyme.com/%E6%9C%80%E8%BF%91%E5%85%A5%E4%BA%86%E5%B0%8F%E9%A9%AC%E5%9D%91.html</guid><description>有一天，網易雲音樂推了一首Gypsy Bard，然後收藏了，第二天在每日推荐出現了My Little Pony Equestria Girls Friendsh，我收藏了整個專輯，然後是推了一堆小馬的音樂收藏了一些之後FM都是小馬了。幾年前前也有聽說過也用過rainbow dash做過壁紙，然後看了第六季，發現禎率很高，其中查各種wiki了解，這居然是個fl</description><pubDate>Mon, 08 May 2017 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;/assets/uploads/2017/05/57eb2757162b6a1.gif&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;有一天，網易雲音樂推了一首Gypsy Bard，然後收藏了，第二天在每日推荐出現了My Little Pony Equestria Girls Friendsh，我收藏了整個專輯，然後是推了一堆小馬的音樂收藏了一些之後FM都是小馬了。幾年前前也有聽說過也用過rainbow dash做過壁紙，然後看了第六季，發現禎率很高，其中查各種wiki了解，這居然是個flash動畫，然後從國配換成了自配，然後入坑&lt;/p&gt;
</content:encoded></item><item><title>嗯。。。目前在学PHP。。。</title><link>https://zyyme.com/%E5%97%AF-%E7%9B%AE%E5%89%8D%E5%9C%A8%E5%AD%A6php.html</link><guid isPermaLink="true">https://zyyme.com/%E5%97%AF-%E7%9B%AE%E5%89%8D%E5%9C%A8%E5%AD%A6php.html</guid><description>嗯。。。目前在学PHP。。。看一本叫《细说PHP》的书 另外发现那本书居然还有说 MySQL (整本书三分之一是讲 Mysql 控制台操作) e850352ac65c1038f70f4ef5ba119313b07e8990.jpg ---------- 另外，求一个 Java开发 的工作?</description><pubDate>Wed, 12 Apr 2017 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;嗯。。。目前在学PHP。。。看一本叫《细说PHP》的书&lt;/p&gt;
&lt;p&gt;另外发现那本书居然还有说 MySQL&lt;/p&gt;
&lt;p&gt;(整本书三分之一是讲 Mysql 控制台操作)&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://gss0.baidu.com/-4o3dSag_xI4khGko9WTAnF6hhy/zhidao/wh%3D600%2C800/sign=6f5ffc530123dd542126af6ee1399fe6/e850352ac65c1038f70f4ef5ba119313b07e8990.jpg&quot; alt=&quot;e850352ac65c1038f70f4ef5ba119313b07e8990.jpg&quot; /&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&amp;lt;h2&amp;gt;另外，求一个 Java开发 的工作?&amp;lt;/h2&amp;gt;
 &lt;/p&gt;
</content:encoded></item><item><title>买了一台新的电脑</title><link>https://zyyme.com/%E4%B9%B0%E4%BA%86%E4%B8%80%E5%8F%B0%E6%96%B0%E7%9A%84%E7%94%B5%E8%84%91.html</link><guid isPermaLink="true">https://zyyme.com/%E4%B9%B0%E4%BA%86%E4%B8%80%E5%8F%B0%E6%96%B0%E7%9A%84%E7%94%B5%E8%84%91.html</guid><description>惠普 光影精灵2pro,感觉够用，7代i5大概就e3的三分之二左右，1050可以跑起gta5，另外买个游戏本敲代码什么鬼……</description><pubDate>Fri, 03 Mar 2017 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;惠普 光影精灵2pro,感觉够用，7代i5大概就e3的三分之二左右，1050可以跑起gta5，另外买个游戏本敲代码什么鬼……&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/assets/uploads/2017/03/IMG_20170305_202106.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
</content:encoded></item><item><title>新年快乐</title><link>https://zyyme.com/%E6%96%B0%E5%B9%B4%E5%BF%AB%E4%B9%90-1.html</link><guid isPermaLink="true">https://zyyme.com/%E6%96%B0%E5%B9%B4%E5%BF%AB%E4%B9%90-1.html</guid><description>小郑咩在这里祝大家新年快乐哦～</description><pubDate>Sat, 28 Jan 2017 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;小郑咩在这里祝大家新年快乐哦～&lt;/p&gt;
</content:encoded></item><item><title>开发文档服务器镜像</title><link>https://zyyme.com/%E5%BC%80%E5%8F%91%E6%96%87%E6%A1%A3%E6%9C%8D%E5%8A%A1%E5%99%A8%E9%95%9C%E5%83%8F.html</link><guid isPermaLink="true">https://zyyme.com/%E5%BC%80%E5%8F%91%E6%96%87%E6%A1%A3%E6%9C%8D%E5%8A%A1%E5%99%A8%E9%95%9C%E5%83%8F.html</guid><description>地址： 开发文档服务 ---------- 文档全部来自互联网, 文档版权属于各自发布组织</description><pubDate>Sat, 26 Nov 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;地址：&amp;lt;a href=&quot;http://weslie.16mb.com/doc/&quot;&amp;gt;开发文档服务&amp;lt;/a&amp;gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;文档全部来自互联网, 文档版权属于各自发布组织&lt;/p&gt;
</content:encoded></item><item><title>Java eclipse安装教程</title><link>https://zyyme.com/java-eclipse%E5%AE%89%E8%A3%85%E6%95%99%E7%A8%8B.html</link><guid isPermaLink="true">https://zyyme.com/java-eclipse%E5%AE%89%E8%A3%85%E6%95%99%E7%A8%8B.html</guid><description>所需文件下载地址： 百度云 ---------- 1.下载了文件找个地方解压 2.先安装JDK，32位系统安装 jdk-7u51-windows-i586.exe ，64位系统安装 jdk-7u51-windows-x64.exe ，一路下一步即可 3.配置环境变量： 右键 我的电脑(计算机/此电脑/这台电脑) - 属性 - 高级(系统高级设置) - 环境变</description><pubDate>Mon, 17 Oct 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;所需文件下载地址：&amp;lt;a href=&quot;http://pan.baidu.com/s/1i5oaIHZ&quot;&amp;gt;百度云&amp;lt;/a&amp;gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;1.下载了文件找个地方解压&lt;/p&gt;
&lt;p&gt;2.先安装JDK，32位系统安装 jdk-7u51-windows-i586.exe ，64位系统安装 jdk-7u51-windows-x64.exe ，一路下一步即可&lt;/p&gt;
&lt;p&gt;3.配置环境变量：&lt;/p&gt;
&lt;p&gt;右键 我的电脑(计算机/此电脑/这台电脑) - 属性 - 高级(系统高级设置) - 环境变量&lt;br /&gt;
&lt;img src=&quot;/assets/uploads/2016/10/java1.png&quot; alt=&quot;java1&quot; /&gt;&lt;/p&gt;
&lt;p&gt;在系统变量中找到 Path，编辑它并在后面加入 &lt;code&gt;;&lt;/code&gt;（前面的分号无需重复，这是一个分隔符）&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;;%JAVA_HOME%;%JAVA_HOME%\jre  
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;/assets/uploads/2016/10/java2.png&quot; alt=&quot;java2&quot; /&gt;&lt;/p&gt;
&lt;p&gt;点击 新建 ，并新建两个变量&lt;/p&gt;
&lt;p&gt;变量名：&lt;code&gt;JAVA_HOME&lt;/code&gt;
变量值：&lt;code&gt;C:\Program Files\Java\jdk1.7.0_51&lt;/code&gt;
变量名：&lt;code&gt;CLASSPATH&lt;/code&gt;
变量值：```&lt;br /&gt;
.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\	ools.jar;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
![java3](/assets/uploads/2016/10/java3.png)

4.解压 eclipse-jee-mars-2-win32-x86_64.zip 里面的 eclipse 文件夹放在你喜欢的地方， eclipse.exe 是主程序，打开它尽情的敲代码吧&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>害怕-高清重置-喜羊羊公仔限定</title><link>https://zyyme.com/%E5%AE%B3%E6%80%95-%E9%AB%98%E6%B8%85%E9%87%8D%E7%BD%AE-%E5%96%9C%E7%BE%8A%E7%BE%8A%E5%85%AC%E4%BB%94%E9%99%90%E5%AE%9A.html</link><guid isPermaLink="true">https://zyyme.com/%E5%AE%B3%E6%80%95-%E9%AB%98%E6%B8%85%E9%87%8D%E7%BD%AE-%E5%96%9C%E7%BE%8A%E7%BE%8A%E5%85%AC%E4%BB%94%E9%99%90%E5%AE%9A.html</guid><description>%e5%ae%b3%e6%80%95-%e5%96%9c%e7%be%8a%e7%be%8a%e5%85%ac%e4%bb%94%e9%99%90%e5%ae%9a-%e9%ab%98%e6%b8%85%e9%87%8d%e7%bd%ae</description><pubDate>Thu, 13 Oct 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;/assets/uploads/2016/10/%E5%AE%B3%E6%80%95-%E5%96%9C%E7%BE%8A%E7%BE%8A%E5%85%AC%E4%BB%94%E9%99%90%E5%AE%9A-%E9%AB%98%E6%B8%85%E9%87%8D%E7%BD%AE.png&quot; alt=&quot;%e5%ae%b3%e6%80%95-%e5%96%9c%e7%be%8a%e7%be%8a%e5%85%ac%e4%bb%94%e9%99%90%e5%ae%9a-%e9%ab%98%e6%b8%85%e9%87%8d%e7%bd%ae&quot; /&gt;&lt;/p&gt;
</content:encoded></item><item><title>LG G3 vs985破解电信4g且完美回落</title><link>https://zyyme.com/lg-g3-vs985%E7%A0%B4%E8%A7%A3%E7%94%B5%E4%BF%A14g%E4%B8%94%E5%AE%8C%E7%BE%8E%E5%9B%9E%E8%90%BD.html</link><guid isPermaLink="true">https://zyyme.com/lg-g3-vs985%E7%A0%B4%E8%A7%A3%E7%94%B5%E4%BF%A14g%E4%B8%94%E5%AE%8C%E7%BE%8E%E5%9B%9E%E8%90%BD.html</guid><description>首先。。。这机子是某宝买的二手，全家移动突然有3张电信卡，于是就买了这台机 ---------- 首先，切记先备份efs 所有用到的文件都在 这里下载 ---------- 回落这个问题我弄了两天，刚刚终于弄好了 1.系统随意，要root 2.adb工具包请自备，手机打开USB调试，打开diag支持，打开方式： adb shell su setprop sy</description><pubDate>Fri, 23 Sep 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;首先。。。这机子是某宝买的二手，全家移动突然有3张电信卡，于是就买了这台机&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;首先，切记先备份efs&lt;/p&gt;
&lt;p&gt;所有用到的文件都在 &amp;lt;a href=&quot;http://pan.baidu.com/s/1jIRneTK&quot;&amp;gt;这里下载&amp;lt;/a&amp;gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;回落这个问题我弄了两天，刚刚终于弄好了~&lt;/p&gt;
&lt;p&gt;1.系统随意，要root&lt;/p&gt;
&lt;p&gt;2.adb工具包请自备，手机打开USB调试，打开diag支持，打开方式：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;adb shell
su
setprop sys.usb.config diag,adb
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;或者&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;adb shell
su
echo 1&amp;amp;gt;/sys/devices/platform/lg_diag_cmd/diag_enable
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;3.装上DFS，按照 &amp;lt;a href=&quot;http://bbs.gfan.com/android-8209857-1-1.html&quot; target=&quot;_blank&quot;&amp;gt;这个帖子&amp;lt;/a&amp;gt; 的第四步把文件换了，&amp;lt;strong&amp;gt;若DFS无法考入文件可以用QPST，我建议用QPST&amp;lt;/strong&amp;gt;（QPST连接方法见：&amp;lt;a href=&quot;http://www.3533.com/news/2005/1/20/13766.htm&quot;&amp;gt;这个网站&amp;lt;/a&amp;gt;）&lt;/p&gt;
&lt;p&gt;4.照着下面这张图设置一下：（记得先 Read 再修改 再按 Write 写入）&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/assets/uploads/2016/09/3SAHNX811H3230JD38.png&quot; alt=&quot;3sahnx811h3230jd38&quot; /&gt;&lt;/p&gt;
&lt;p&gt;5.如果3G上网有问题，关闭eHRPD&lt;img src=&quot;/assets/uploads/2016/09/V12ZMAUOJ3_J8ZDV@4.png&quot; alt=&quot;v12zmauoj3_j8zdv4&quot; /&gt;&lt;/p&gt;
&lt;p&gt;6.重启手机，可以去再备份一份efs备用&lt;/p&gt;
</content:encoded></item><item><title>新路由器newifi d1</title><link>https://zyyme.com/%E6%96%B0%E8%B7%AF%E7%94%B1%E5%99%A8newifi-d1.html</link><guid isPermaLink="true">https://zyyme.com/%E6%96%B0%E8%B7%AF%E7%94%B1%E5%99%A8newifi-d1.html</guid><description>这可能是我买过最贵的一个路由器 至于为什么要买这个路由。。。 首先。。。之前的路由宝卡槽坏了，而且7620有点力不从心(明明是你跑的东西太多了好吧)，另外中国移不动的20m光纤缩水实在太恐怖了，20m看720p直播都一卡一卡的。。。于是决定投奔中国电不信100m的绑卡套餐，有了三张电信卡(扯偏了扯偏了)。。。 要买一个全千兆路由，配置得好点的，最好能塞个硬盘</description><pubDate>Tue, 06 Sep 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&amp;lt;h2&amp;gt;这可能是我买过最贵的一个路由器&amp;lt;/h2&amp;gt;
至于为什么要买这个路由。。。&lt;/p&gt;
&lt;p&gt;首先。。。之前的路由宝卡槽坏了，而且7620有点力不从心(明明是你跑的东西太多了好吧)，另外中国移不动的20m光纤缩水实在太恐怖了，20m看720p直播都一卡一卡的。。。于是决定投奔中国电不信100m的绑卡套餐，有了三张电信卡(扯偏了扯偏了)。。。&lt;/p&gt;
&lt;p&gt;要买一个全千兆路由，配置得好点的，最好能塞个硬盘什么的，最初打算 米路由2 的，发现不能上openwrt就不考虑了，看了一圈也就只剩mt7621了， 新路由2 或者 极路由4 (网件的那个和华硕的那个性价比不考虑)，看在这个sd卡槽和价格上，买了一个 newifi d1 。。。(毕竟监控的缓存不能存硬盘里，这样硬盘会持续唤醒)&lt;/p&gt;
&lt;p&gt;然后狗东229入手&lt;/p&gt;
&lt;p&gt;这个玩意用料什么的还算可以，比路由宝好，就是WiFi天线比较小，后期改天线信号估计会好点。。。&lt;/p&gt;
&lt;p&gt;现在就这样接着硬盘摄像头和两条宽带叠加了(移不动的当时续费一年无法终止合同)。。。平均负载2~3的样子，redsock2是单线程的拖慢网速气死了。。。。。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/assets/uploads/2016/10/IMG_20161009_093317-e1475976940648.jpg&quot; alt=&quot;img_20161009_093317&quot; /&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
</content:encoded></item><item><title>Ngrok Openwrt使用教程</title><link>https://zyyme.com/ngrok.html</link><guid isPermaLink="true">https://zyyme.com/ngrok.html</guid><description>众所周知，移不动的大内网，没公网ip，花生壳内网版免费的又不能用，在一次群内探讨时，我知道了Ngrok。。。 下面以百毒搜的到的 ngrok.cc 为例 废话不多说，我相信注册个用户你们会的。。。 隧道管理-新建 ngrok1 Openwrt的安装包： 百度云 我相信装个包你们是会的。。。。 服务器新建一个： ngrok2 下面通道新建一个： ngrok3 </description><pubDate>Mon, 29 Aug 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;众所周知，移不动的大内网，没公网ip，花生壳内网版免费的又不能用，在一次群内探讨时，我知道了Ngrok。。。&lt;/p&gt;
&lt;p&gt;下面以百毒搜的到的 ngrok.cc 为例&lt;/p&gt;
&lt;p&gt;废话不多说，我相信注册个用户你们会的。。。&lt;/p&gt;
&lt;p&gt;隧道管理-新建&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/assets/uploads/2016/08/ngrok1.png&quot; alt=&quot;ngrok1&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Openwrt的安装包：&amp;lt;a href=&quot;http://pan.baidu.com/s/1kVk6xlt&quot;&amp;gt;百度云&amp;lt;/a&amp;gt;&lt;/p&gt;
&lt;p&gt;我相信装个包你们是会的。。。。&lt;/p&gt;
&lt;p&gt;服务器新建一个：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/assets/uploads/2016/08/ngrok2.png&quot; alt=&quot;ngrok2&quot; /&gt;&lt;/p&gt;
&lt;p&gt;下面通道新建一个：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/assets/uploads/2016/08/ngrok3.png&quot; alt=&quot;ngrok3&quot; /&gt;&lt;/p&gt;
&lt;p&gt;最后访问: 你的子域名.ngrok.cc 玩去吧。。。。&lt;/p&gt;
</content:encoded></item><item><title>无污染DNS</title><link>https://zyyme.com/%E6%97%A0%E6%B1%A1%E6%9F%93dns.html</link><guid isPermaLink="true">https://zyyme.com/%E6%97%A0%E6%B1%A1%E6%9F%93dns.html</guid><description>马化腾DNS DNS: 115.159.158.38 设置这个DNS(当然最好设置DNS转发)能愉快的访问世界互联网 ---------- 如果你用Chinadns的话，可以把上游服务器这样设置： 208.67.222.222,115.159.158.38,233.5.5.5 屏幕截图(83) 刚才发现一个问题，很多人的Chinadns设置都不对（包括我），</description><pubDate>Fri, 19 Aug 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;马化腾DNS&lt;/p&gt;
&lt;p&gt;DNS: ```&lt;br /&gt;
115.159.158.38&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
设置这个DNS(当然最好设置DNS转发)能愉快的访问世界互联网

----------

如果你用Chinadns的话，可以把上游服务器这样设置：

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;208.67.222.222,115.159.158.38,233.5.5.5&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
![屏幕截图(83)](/assets/uploads/2016/08/屏幕截图83.png)

刚才发现一个问题，很多人的Chinadns设置都不对（包括我），国内的dns应该要填在后面，而无污染的dns填前面&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>关于本站差点没了</title><link>https://zyyme.com/%E5%85%B3%E4%BA%8E%E6%9C%AC%E7%AB%99%E5%B7%AE%E7%82%B9%E6%B2%A1%E4%BA%86.html</link><guid isPermaLink="true">https://zyyme.com/%E5%85%B3%E4%BA%8E%E6%9C%AC%E7%AB%99%E5%B7%AE%E7%82%B9%E6%B2%A1%E4%BA%86.html</guid><description>2016/08/11时网站突然被我用的主机提供商停用了账号。。。（没办法。。。免费的虚拟主机。。。） 于是我第二天就在openshift搭了个镜像。。。。 由于还没来得及备份就被突然停了账号（真是防不胜防），没办法只能翻遍全电脑，路由，平板，手机，还好是给我找到了一份之前在路由搭服务时的备份，一天还原到现在这个效果。。。（还好在暂停前几个小时把图都传到cdn</description><pubDate>Sat, 13 Aug 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;2016/08/11时网站突然被我用的主机提供商停用了账号。。。（没办法。。。免费的虚拟主机。。。）&lt;/p&gt;
&lt;p&gt;于是我第二天就在openshift搭了个镜像。。。。&lt;/p&gt;
&lt;p&gt;由于还没来得及备份就被突然停了账号（真是防不胜防），没办法只能翻遍全电脑，路由，平板，手机，还好是给我找到了一份之前在路由搭服务时的备份，一天还原到现在这个效果。。。（还好在暂停前几个小时把图都传到cdn）&lt;/p&gt;
&lt;p&gt;主站地址： &amp;lt;a href=&quot;http://zanjie1999.16mb.com&quot;&amp;gt;http://zanjie1999.16mb.com&amp;lt;/a&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;del&amp;gt;镜像&amp;lt;/del&amp;gt; 副站地址： &amp;lt;a href=&quot;http://weslie.toh.info&quot;&amp;gt;http://weslie.toh.info&amp;lt;/a&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>终于弄好图片CDN啦😆</title><link>https://zyyme.com/%E7%BB%88%E4%BA%8E%E5%BC%84%E5%A5%BD%E5%9B%BE%E7%89%87cdn%E5%95%A6.html</link><guid isPermaLink="true">https://zyyme.com/%E7%BB%88%E4%BA%8E%E5%BC%84%E5%A5%BD%E5%9B%BE%E7%89%87cdn%E5%95%A6.html</guid><description>用了 七牛 的空间，直接用镜像存储居然什么也缓存不到。。。。好吧。。。只好把文件下载下来上传咯😒。。。结果发现原来还自动生成了一堆缩略图🙄。。。。于是便有了 服务器文件突然多出1GB！ 这种蛋疼的事情😭。。。把全部缩略图都删了，导致媒体库的缩略图都是叉叉。。。😖不理啦，把所有图分目录上传上去！恩，现在可以用啦 这是一张无关紧要的图：</description><pubDate>Wed, 10 Aug 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;用了 &lt;a href=&quot;https://portal.qiniu.com/signup?code=3lfwcu5vke5aq&quot;&gt;七牛&lt;/a&gt; 的空间，直接用镜像存储居然什么也缓存不到。。。。好吧。。。只好把文件下载下来上传咯😒。。。结果发现原来还自动生成了一堆缩略图🙄。。。。于是便有了 服务器文件突然多出1GB！ 这种蛋疼的事情😭。。。把全部缩略图都删了，导致媒体库的缩略图都是叉叉。。。😖不理啦，把所有图分目录上传上去！恩，现在可以用啦~&lt;/p&gt;
&lt;p&gt;这是一张无关紧要的图：&lt;br /&gt;
&lt;img src=&quot;/assets/uploads/2016/08/QQ%E5%9B%BE%E7%89%8720160810125307.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
</content:encoded></item><item><title>这图有毒😣</title><link>https://zyyme.com/%E8%BF%99%E5%9B%BE%E6%9C%89%E6%AF%92.html</link><guid isPermaLink="true">https://zyyme.com/%E8%BF%99%E5%9B%BE%E6%9C%89%E6%AF%92.html</guid><description>懵逼-动图</description><pubDate>Wed, 10 Aug 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;/assets/uploads/2016/08/%E6%87%B5%E9%80%BC-%E5%8A%A8%E5%9B%BE.gif&quot; alt=&quot;懵逼-动图&quot; /&gt;&lt;/p&gt;
</content:encoded></item><item><title>emoji</title><link>https://zyyme.com/emoji.html</link><guid isPermaLink="true">https://zyyme.com/emoji.html</guid><description>有时想输入emoji却没法输入😔 emoji全套，来自谷歌拼音输入法内置emoji表情 注意！会出现卡顿！慎重点开 人： 😀😁😂🤣😃😄😅😆😉😊😋😎😍😘😗😙😚☺🙂🤗😇🤓🤔😐😑😶🙄😏😣😥😮🤐😯😪😫😴😌😛😜😝😒😓😔😕🙃🤑😲😷🤒🤕🙁😖😞😟😤😢😭😦😧😨😩😬😰😱😳😵😡😠😈👿👹👺💀☠👻👽👾🤖💩😺😸😹😻😼😽🙀😿😾🙈🙉🙊👦👧👨👩👴👵👶👱👮👲👳👷⛑👸💂🕵🎅👰👼💆💇🙍🙎🙅🙆💁🙋🙇</description><pubDate>Tue, 26 Jul 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;有时想输入emoji却没法输入😔&lt;/p&gt;
&lt;p&gt;emoji全套，来自谷歌拼音输入法内置emoji表情&lt;br /&gt;
注意！会出现卡顿！慎重点开&lt;/p&gt;
&lt;p&gt;人：&lt;br /&gt;
😀😁😂🤣😃😄😅😆😉😊😋😎😍😘😗😙😚☺🙂🤗😇🤓🤔😐😑😶🙄😏😣😥😮🤐😯😪😫😴😌😛😜😝😒😓😔😕🙃🤑😲😷🤒🤕🙁😖😞😟😤😢😭😦😧😨😩😬😰😱😳😵😡😠😈👿👹👺💀☠👻👽👾🤖💩😺😸😹😻😼😽🙀😿😾🙈🙉🙊👦👧👨👩👴👵👶👱👮👲👳👷⛑👸💂🕵🎅👰👼💆💇🙍🙎🙅🙆💁🙋🙇🙌🙏🗣👤👥🚶🏃👯💃🕴👫👬👭💏👩‍❤‍💋‍👨👨‍❤‍💋‍👨👩‍❤‍💋‍👩💑👩‍❤‍👨👨‍❤‍👨👩‍❤‍👩👪👨‍👩‍👦👨‍👩‍👧👨‍👩‍👧‍👦👨‍👩‍👦‍👦👨‍👩‍👧‍👧👨‍👨‍👦👨‍👨‍👧👨‍👨‍👧‍👦👨‍👨‍👦‍👦👨‍👨‍👧‍👧👩‍👩‍👦👩‍👩‍👧👩‍👩‍👧‍👦👩‍👩‍👦‍👦👩‍👩‍👧‍👧💪👈👉☝👆🖕👇✌🖖🤘🖐✋👌👍👎✊👊👋👏👐✍💅👂👃👣👀👁👁‍🗨👅👄💋💘❤💓💔💕💖💗💙💚💛💜💝💞💟❣💌💤💢💣💥💦💨💫💬🗨🗯💭🕳👓🕶👔👕👖👗👘👙👚👛👜👝🛍🎒👞👟👠👡👢👑👒🎩🎓📿💄💍💎&lt;br /&gt;
自然：&lt;br /&gt;
🐵🐒🐶🐕🐩🐺🐱🐈🦁🐯🐅🐆🐴🐎🦄🐮🐂🐃🐄🐷🐖🐗🐽🐏🐑🐐🐪🐫🐘🐭🐁🐀🐹🐰🐇🐿🐻🐨🐼🐾🦃🐔🐓🐣🐤🐥🐦🐧🕊🐸🐊🐢🐍🐲🐉🐳🐋🐬🐟🐠🐡🐙🐚🦀🐌🐛🐜🐝🐞🕷🕸🦂💐🌸💮🏵🌹🌺🌻🌼🌷🌱🌲🌳🌴🌵🌾🌿☘🍀🍁🍂🍃&lt;br /&gt;
食物：&lt;br /&gt;
🍇🍈🍉🍊🍋🍌🍍🍎🍏🍐🍑🍒🍓🍅🍆🌽🌶🍄🌰🍞🧀🍖🍗🍔🍟🍕🌭🌮🌯🍳🍲🍿🍱🍘🍙🍚🍛🍜🍝🍠🍢🍣🍤🍥🍡🍦🍧🍨🍩🍪🎂🍰🍫🍬🍭🍮🍯🍼☕🍵🍶🍾🍷🍸🍹🍺🍻🍽🍴🔪🏺&lt;br /&gt;
人造/自然物品：&lt;br /&gt;
🌍🌎🌏🌐🗺🗾🏔⛰🌋🗻🏕🏖🏜🏝🏞🏟🏛🏗🏘🏙🏚🏠🏡🏢🏣🏤🏥🏦🏨🏩🏪🏫🏬🏭🏯🏰💒🗼🗽⛪🕌🕍⛩🕋⛲⛺🌁🌃🌄🌅🌆🌇🌉♨🌌🎠🎡🎢💈🎪🎭🖼🎨🎰🚂🚃🚄🚅🚆🚇🚈🚉🚊🚝🚞🚋🚌🚍🚎🚏🚐🚑🚒🚓🚔🚕🚖🚗🚘🚙🚚🚛🚜🚲⛽🛣🛤🚨🚥🚦🚧⚓⛵🚣🚤🛳⛴🛥🚢✈🛩🛫🛬💺🚁🚟🚠🚡🚀🛰🛎🚪🛌🛏🛋🚽🚿🛀🛁⌛⏳⌚⏰⏱⏲🕰🕛🕧🕐🕜🕑🕝🕒🕞🕓🕟🕔🕠🕕🕡🕖🕢🕗🕣🕘🕤🕙🕥🕚🕦🌑🌒🌓🌔🌕🌖🌗🌘🌙🌚🌛🌜🌡☀🌝🌞⭐🌟🌠☁⛅⛈🌤🌥🌦🌧🌨🌩🌪🌫🌬🌀🌈🌂☂☔⛱⚡❄☃⛄☄🔥💧🌊&lt;br /&gt;
节日和物品：&lt;br /&gt;
🎃🎄🎆🎇✨🎈🎉🎊🎋🎍🎎🎏🎐🎑🎀🎁🎗🎟🎫🎖🏆🏅⚽⚾🏀🏐🏈🏉🎾🎱🎳🏏🏑🏒🏓🏸⛳🏌⛸🎣🎽🎿⛷🏂🏄🏇🏊⛹🏋🚴🚵🏎🏍🎯🎮🕹🎲♠♥♦♣🃏🀄🎴&lt;br /&gt;
产品：&lt;br /&gt;
🔇🔈🔉🔊📢📣📯🔔🔕🎼🎵🎶🎙🎚🎛🎤🎧📻🎷🎸🎹🎺🎻📱📲☎📞📟📠🔋🔌💻🖥🖨⌨🖱🖲💽💾💿📀🎥🎞📽🎬📺📷📸📹📼🔍🔎🔬🔭📡🕯💡🔦🏮📔📕📖📗📘📙📚📓📒📃📜📄📰🗞📑🔖🏷💰💴💵💶💷💸💳💹💱💲✉📧📨📩📤📥📦📫📪📬📭📮🗳✏✒🖋🖊🖌🖍📝💼📁📂🗂📅📆🗒🗓📇📈📉📊📋📌📍📎🖇📏📐✂🗃🗄🗑🔒🔓🔏🔐🔑🗝🔨⛏⚒🛠🗡⚔🔫🏹🛡🔧🔩⚙🗜⚗⚖🔗⛓💉💊🏁🏳🏴🚩🎌🚬⚰⚱🗿🛢🔮&lt;br /&gt;
其它：&lt;br /&gt;
🏧🚮🚰♿🚹🚺🚻🚼🚾🛂🛃🛄🛅⚠🚸⛔🚫🚳🚭🚯🚱🚷☢☣⬆↗➡↘⬇↙⬅↖↕↔↩↪⤴⤵🔃🔄🔙🔚🔛🔜🔝🛐⚛🕉✡☸☯✝☦☪☮🕎🔯♻📛⚜🔰🔱⭕✅☑✔✖❌❎➕➖➗➰➿〽✳✴❇‼⁉❓❔❕❗〰©®™♈♉♊♋♌♍♎♏♐♑♒♓⛎🔀🔁🔂▶⏩⏭⏯◀⏪⏮🔼⏫🔽⏬⏸⏹⏺⏏🎦🔅🔆📶📵📳📴#⃣*⃣0⃣1⃣2⃣3⃣4⃣5⃣6⃣7⃣8⃣9⃣🔟💯🔞🔠🔡🔢🔣🔤🅰🆎🅱🆑🆒🆓ℹ🆔Ⓜ🆕🆖🅾🆗🅿🆘🆙🆚🈁🈂🈷🈶🈯🉐🈹🈚🈲🉑🈸🈴🈳㊗㊙🈺🈵▪▫◻◼◽◾⬛⬜🔶🔷🔸🔹🔺🔻💠🔘🔲🔳⚪⚫🔴🔵&lt;br /&gt;
旗帜：&lt;br /&gt;
🇦🇩🇦🇪🇦🇫🇦🇬🇦🇮🇦🇱🇦🇲🇦🇴🇦🇷🇦🇸🇦🇹🇦🇺🇦🇼🇦🇽🇦🇿🇧🇦🇧🇧🇧🇩🇧🇪🇧🇫🇧🇬🇧🇭🇧🇮🇧🇯🇧🇲🇧🇳🇧🇴🇧🇷🇧🇸🇧🇹🇧🇼🇧🇾🇧🇿🇨🇦🇨🇨🇨🇩🇨🇫🇨🇬🇨🇭🇨🇮🇨🇰🇨🇱🇨🇲🇨🇳🇨🇴🇨🇷🇨🇺🇨🇻🇨🇼🇨🇽🇨🇾🇨🇿🇩🇪🇩🇯🇩🇰🇩🇲🇩🇴🇩🇿🇪🇨🇪🇪🇪🇬🇪🇷🇪🇸🇪🇹🇪🇺🇫🇮🇫🇯🇫🇲🇫🇴🇫🇷🇬🇦🇬🇧🇬🇩🇬🇪🇬🇬🇬🇭🇬🇮🇬🇱🇬🇲🇬🇳🇬🇶🇬🇷🇬🇹🇬🇺🇬🇼🇬🇾🇭🇰🇭🇳🇭🇷🇭🇹🇭🇺🇮🇩🇮🇪🇮🇱🇮🇲🇮🇳🇮🇴🇮🇶🇮🇷🇮🇸🇮🇹🇯🇪🇯🇲🇯🇴🇯🇵🇰🇪🇰🇬🇰🇭🇰🇮🇰🇲🇰🇳🇰🇵🇰🇷🇰🇼🇰🇾🇰🇿🇱🇦🇱🇧🇱🇨🇱🇮🇱🇰🇱🇷🇱🇸🇱🇹🇱🇺🇱🇻🇱🇾🇲🇦🇲🇨🇲🇩🇲🇪🇲🇬🇲🇭🇲🇰🇲🇱🇲🇲🇲🇳🇲🇴🇲🇵🇲🇷🇲🇸🇲🇹🇲🇺🇲🇻🇲🇼🇲🇽🇲🇾🇲🇿🇳🇦🇳🇪🇳🇫🇳🇬🇳🇮🇳🇱🇳🇴🇳🇵🇳🇷🇳🇺🇳🇿🇴🇲🇵🇦🇵🇪🇵🇫🇵🇬🇵🇭🇵🇰🇵🇱🇵🇳🇵🇷🇵🇸🇵🇹🇵🇼🇵🇾🇶🇦🇷🇴🇷🇸🇷🇺🇷🇼🇸🇦🇸🇧🇸🇨🇸🇩🇸🇪🇸🇬🇸🇮🇸🇰🇸🇱🇸🇲🇸🇳🇸🇴🇸🇷🇸🇸🇸🇹🇸🇻🇸🇽🇸🇾🇸🇿🇹🇨🇹🇩🇹🇬🇹🇭🇹🇯🇹🇰🇹🇱🇹🇲🇹🇳🇹🇴🇹🇷🇹🇹🇹🇻🇹🇼🇹🇿🇺🇦🇺🇬🇺🇸🇺🇾🇺🇿🇻🇦🇻🇨🇻🇪🇻🇬🇻🇮🇻🇳🇻🇺🇼🇸🇾🇪🇿🇦🇿🇲🇿🇼&lt;/p&gt;
</content:encoded></item><item><title>服务器文件突然多出1GB！</title><link>https://zyyme.com/%E6%9C%8D%E5%8A%A1%E5%99%A8%E6%96%87%E4%BB%B6%E7%AA%81%E7%84%B6%E5%A4%9A%E5%87%BA1-gb.html</link><guid isPermaLink="true">https://zyyme.com/%E6%9C%8D%E5%8A%A1%E5%99%A8%E6%96%87%E4%BB%B6%E7%AA%81%E7%84%B6%E5%A4%9A%E5%87%BA1-gb.html</guid><description>这！些！都！是！缩！略！图！ 每张图都有3张小图，如此成倍增长的文件数量 你们自己感受一下： 2016-07-26 04-13-25屏幕截图 宝宝心里苦但宝宝不说 QQ图片20160726042648</description><pubDate>Tue, 26 Jul 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&amp;lt;h2&amp;gt;这！些！都！是！缩！略！图！&amp;lt;/h2&amp;gt;
每张图都有3张小图，如此成倍增长的文件数量&lt;br /&gt;
&amp;lt;h3&amp;gt;你们自己感受一下：&amp;lt;/h3&amp;gt;
&lt;img src=&quot;/assets/uploads/2016/07/2016-07-26-04-13-25%E5%B1%8F%E5%B9%95%E6%88%AA%E5%9B%BE.png&quot; alt=&quot;2016-07-26 04-13-25屏幕截图&quot; /&gt;&lt;br /&gt;
&amp;lt;h4&amp;gt;宝宝心里苦但宝宝不说&amp;lt;/h4&amp;gt;
&amp;lt;!--StartFragment --&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;img src=&quot;/assets/uploads/2016/07/QQ%E5%9B%BE%E7%89%8720160726042648.jpg&quot; alt=&quot;QQ图片20160726042648&quot; /&gt;&amp;lt;/div&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>改hg255d天线</title><link>https://zyyme.com/%E6%94%B9hg255d%E5%A4%A9%E7%BA%BF.html</link><guid isPermaLink="true">https://zyyme.com/%E6%94%B9hg255d%E5%A4%A9%E7%BA%BF.html</guid><description>群里还有人在说改天线的事情，经过我的实验，这样改最方便且最好用： 首先： 这是谷歌相册集 这是我的改法 20160720233011</description><pubDate>Thu, 21 Jul 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;群里还有人在说改天线的事情，经过我的实验，这样改最方便且最好用：&lt;/p&gt;
&lt;p&gt;首先：&amp;lt;a href=&quot;https://goo.gl/photos/fav99aXFuSDhajde6&quot;&amp;gt;这是谷歌相册集&amp;lt;/a&amp;gt;&lt;/p&gt;
&lt;p&gt;这是我的改法&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/assets/uploads/2016/07/20160720233011-2.png&quot; alt=&quot;20160720233011&quot; /&gt;&lt;/p&gt;
</content:encoded></item><item><title>又是一个暑假</title><link>https://zyyme.com/%E5%8F%88%E6%98%AF%E4%B8%80%E4%B8%AA%E6%9A%91%E5%81%87.html</link><guid isPermaLink="true">https://zyyme.com/%E5%8F%88%E6%98%AF%E4%B8%80%E4%B8%AA%E6%9A%91%E5%81%87.html</guid><description>恩，终于放假啦 话说我好久没去过游泳了 （不过我还是不去了吧)</description><pubDate>Tue, 12 Jul 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&amp;lt;h1&amp;gt;恩，终于放假啦~&amp;lt;/h1&amp;gt;
&amp;lt;h4&amp;gt;话说我好久没去过游泳了~&amp;lt;/h4&amp;gt;
&amp;lt;h6&amp;gt;（不过我还是不去了吧)&amp;lt;/h6&amp;gt;
 &lt;/p&gt;
</content:encoded></item><item><title>升级到win10</title><link>https://zyyme.com/%E5%8D%87%E7%BA%A7%E5%88%B0win10.html</link><guid isPermaLink="true">https://zyyme.com/%E5%8D%87%E7%BA%A7%E5%88%B0win10.html</guid><description>首先： 这是一个网页版的生成器 win10版： 升级到win10 广电版： 升级到win10广电版 千万不要升级版： 千萬不要升級</description><pubDate>Fri, 08 Jul 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;首先：&amp;lt;a href=&quot;https://app.kxg.io/windows10/&quot; target=&quot;_blank&quot;&amp;gt;这是一个网页版的生成器&amp;lt;/a&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;win10版：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/assets/uploads/2016/07/%E5%8D%87%E7%BA%A7%E5%88%B0win10.png&quot; alt=&quot;升级到win10&quot; /&gt;&lt;/p&gt;
&lt;p&gt;广电版：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/assets/uploads/2016/07/%E5%8D%87%E7%BA%A7%E5%88%B0win10%E5%B9%BF%E7%94%B5%E7%89%88.png&quot; alt=&quot;升级到win10广电版&quot; /&gt;&lt;/p&gt;
&lt;p&gt;千万不要升级版：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/assets/uploads/2016/07/%E5%8D%83%E8%90%AC%E4%B8%8D%E8%A6%81%E5%8D%87%E7%B4%9A.jpg&quot; alt=&quot;千萬不要升級&quot; /&gt;&lt;/p&gt;
</content:encoded></item><item><title>interesting?</title><link>https://zyyme.com/interesting.html</link><guid isPermaLink="true">https://zyyme.com/interesting.html</guid><description>在网页右下角或者最底下。。。。。 屏幕截图(1) 无聊弄的可以么。。。。。 20150829003518azXEs.thumb.7000[1</description><pubDate>Thu, 07 Jul 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;在网页右下角或者最底下。。。。。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/assets/uploads/2016/07/%E5%B1%8F%E5%B9%95%E6%88%AA%E5%9B%BE1.png&quot; alt=&quot;屏幕截图(1)&quot; /&gt;&lt;/p&gt;
&lt;p&gt;无聊弄的可以么。。。。。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/assets/uploads/2016/08/20150829003518_azXEs.thumb_.700_01.jpeg&quot; alt=&quot;20150829003518_azXEs.thumb.700_0[1]&quot; /&gt;&lt;/p&gt;
</content:encoded></item><item><title>做了个设置Windows Update服务的bat</title><link>https://zyyme.com/%E5%81%9A%E4%BA%86%E4%B8%AA%E8%AE%BE%E7%BD%AEwindows-update%E6%9C%8D%E5%8A%A1%E7%9A%84bat.html</link><guid isPermaLink="true">https://zyyme.com/%E5%81%9A%E4%BA%86%E4%B8%AA%E8%AE%BE%E7%BD%AEwindows-update%E6%9C%8D%E5%8A%A1%E7%9A%84bat.html</guid><description>由于蛋疼的Windows应用商店需要Windows Update服务支持 所以不得不打开Windows Update服务 这个小程序可以帮你设置Windows Update服务 下载地址： 戳我</description><pubDate>Fri, 01 Jul 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;由于蛋疼的Windows应用商店需要Windows Update服务支持&lt;br /&gt;
所以不得不打开Windows Update服务&lt;br /&gt;
这个小程序可以帮你设置Windows Update服务&lt;/p&gt;
&lt;p&gt;下载地址：&amp;lt;a href=&quot;http://pan.baidu.com/s/1i49ZrUH&quot;&amp;gt;戳我&amp;lt;/a&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>手动滑稽</title><link>https://zyyme.com/%E6%89%8B%E5%8A%A8%E6%BB%91%E7%A8%BD.html</link><guid isPermaLink="true">https://zyyme.com/%E6%89%8B%E5%8A%A8%E6%BB%91%E7%A8%BD.html</guid><description>各种恶搞的蓝屏。。。纯手工制作。。。 害怕-win10TP限定-自制版害怕-win10限定-自制版9e84f49cgw1f53r6emxnmj21hc0xcn6p.jpg 9e84f49cgw1f53r6du5f2j21hc0xcqfb.jpg</description><pubDate>Wed, 22 Jun 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;各种恶搞的蓝屏。。。纯手工制作。。。&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/assets/uploads/2016/06/%E5%AE%B3%E6%80%95-win10TP%E9%99%90%E5%AE%9A-%E8%87%AA%E5%88%B6%E7%89%88.png&quot; alt=&quot;害怕-win10TP限定-自制版&quot; /&gt;&lt;img src=&quot;https://zyyme.com/assets/uploads/2016/06/%E5%AE%B3%E6%80%95-win10%E9%99%90%E5%AE%9A-%E8%87%AA%E5%88%B6%E7%89%88.jpg&quot; alt=&quot;害怕-win10限定-自制版&quot; /&gt;&lt;img src=&quot;http://ww2.sinaimg.cn/large/9e84f49cgw1f53r6emxnmj21hc0xcn6p.jpg&quot; alt=&quot;9e84f49cgw1f53r6emxnmj21hc0xcn6p.jpg&quot; /&gt;&lt;br /&gt;
&lt;img src=&quot;http://ww4.sinaimg.cn/large/9e84f49cgw1f53r6du5f2j21hc0xcqfb.jpg&quot; alt=&quot;9e84f49cgw1f53r6du5f2j21hc0xcqfb.jpg&quot; /&gt;&lt;/p&gt;
</content:encoded></item><item><title>论中国移动光宽带</title><link>https://zyyme.com/%E8%AE%BA%E4%B8%AD%E5%9B%BD%E7%A7%BB%E5%8A%A8%E5%85%89%E5%AE%BD%E5%B8%A6.html</link><guid isPermaLink="true">https://zyyme.com/%E8%AE%BA%E4%B8%AD%E5%9B%BD%E7%A7%BB%E5%8A%A8%E5%85%89%E5%AE%BD%E5%B8%A6.html</guid><description>恩，我装了中国移不动的光宽带，也用了一年多了，为什么要装移动的宽带呢？便宜嘛。。。但是咧。。。。 这是10m宽带的测速图： wp-1466416500004.png speedtest是一个国际极的测速，选用的是中国内离我25km的服务器，当之前用电信100m时能跑到满速 卧槽，这TM就是10m的宽带，2m还差不多。。。。 毕竟是共享宽带，高峰慢点正常，不过</description><pubDate>Mon, 20 Jun 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;恩，我装了中国移不动的光宽带，也用了一年多了，为什么要装移动的宽带呢？便宜嘛。。。但是咧。。。。&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;这是10m宽带的测速图：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/assets/uploads/2016/06/wp-1466416500004.png&quot; alt=&quot;wp-1466416500004.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;speedtest是一个国际极的测速，选用的是中国内离我25km的服务器，当之前用电信100m时能跑到满速&lt;br /&gt;
&amp;lt;h1&amp;gt;卧槽，这TM就是10m的宽带，2m还差不多。。。。&amp;lt;/h1&amp;gt;
毕竟是共享宽带，高峰慢点正常，不过这差别也太大了吧。。。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/assets/uploads/2016/06/wp-1466416490468.jpg&quot; alt=&quot;wp-1466416490468.jpg&quot; /&gt;&lt;/p&gt;
&lt;p&gt;我装移动宽带比较早，最初光交换机只插了我 一根的时候，10m满速刚好够用，现在靠内的整个交换机都插满了（第一根就是我的），而且还不能直接换靠外的那台（换了拨号拨不上）&lt;/p&gt;
&lt;p&gt;我手机是双卡的，卡1电信卡，还有1格信号（4G）而移动没信号（2G都没有）信号差几年了，最近几个月信号更差了！打电话都得去阳台。。。。&lt;br /&gt;
&amp;lt;h2&amp;gt;这还不是最操蛋的!!!!&amp;lt;/h2&amp;gt;
移动宽带的DNS经常解析出问题，有时莫名其妙的DNS解析错误&lt;/p&gt;
&lt;p&gt;或者是打开一些页面时，会转到中国移动的“极速网站导航（广东移动网内资源）”http://gd.10086.cn/internet/daohang/&lt;/p&gt;
&lt;p&gt;必须再次打开网站才能正确进入！！！&lt;br /&gt;
&amp;lt;h4&amp;gt;然而更加坑人的是，它锁定了DNS！&amp;lt;/h4&amp;gt;
这是花300元初装费“借用”的光猫：&lt;img src=&quot;/assets/uploads/2016/06/%E6%8D%95%E8%8E%B7.jpg&quot; alt=&quot;捕获&quot; /&gt;&lt;/p&gt;
&lt;p&gt;我已经设置了114的DNS，但&amp;lt;strong&amp;gt; 这完全没效果 &amp;lt;/strong&amp;gt;恩，我路由器，电脑都试过了，毫无效果。。。&lt;br /&gt;
&amp;lt;h1&amp;gt;不带这样榨用户的！！！&amp;lt;/h1&amp;gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;我打了1008616反馈了这个问题，然后收到了短信：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/assets/uploads/2016/06/%E7%A7%BB%E4%B8%8D%E5%8A%A8%E5%B7%A5%E4%BD%9C%E4%BA%BA%E5%91%98.jpg&quot; alt=&quot;移不动工作人员&quot; /&gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;报10086没用？难道要把中国移动告上法庭才会解决问题？&amp;lt;/h1&amp;gt;
&amp;lt;h1&amp;gt;还是要中国移动自取灭亡？&amp;lt;/h1&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>换头像系列</title><link>https://zyyme.com/%E6%8D%A2%E5%A4%B4%E5%83%8F%E7%B3%BB%E5%88%97.html</link><guid isPermaLink="true">https://zyyme.com/%E6%8D%A2%E5%A4%B4%E5%83%8F%E7%B3%BB%E5%88%97.html</guid><description>Screenshot20160610-193155 原因未知，请看左边菜单?</description><pubDate>Fri, 10 Jun 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;/assets/uploads/2016/06/Screenshot_20160610-193155.png&quot; alt=&quot;Screenshot_20160610-193155&quot; /&gt;&lt;/p&gt;
&lt;p&gt;原因未知，请看左边菜单?&lt;/p&gt;
</content:encoded></item><item><title>折腾了一天终于恢复正常啦</title><link>https://zyyme.com/%E6%8A%98%E8%85%BE%E4%BA%86%E4%B8%80%E5%A4%A9%E7%BB%88%E4%BA%8E%E6%81%A2%E5%A4%8D%E6%AD%A3%E5%B8%B8%E5%95%A6.html</link><guid isPermaLink="true">https://zyyme.com/%E6%8A%98%E8%85%BE%E4%BA%86%E4%B8%80%E5%A4%A9%E7%BB%88%E4%BA%8E%E6%81%A2%E5%A4%8D%E6%AD%A3%E5%B8%B8%E5%95%A6.html</guid><description>最近登陆不了，后台进不去，500错误，最后发现是多说的问题。。。?</description><pubDate>Sat, 28 May 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;最近登陆不了，后台进不去，500错误，最后发现是多说的问题。。。?&lt;/p&gt;
</content:encoded></item><item><title>动手下载网上视频</title><link>https://zyyme.com/%E5%8A%A8%E6%89%8B%E4%B8%8B%E8%BD%BD%E7%BD%91%E4%B8%8A%E8%A7%86%E9%A2%91.html</link><guid isPermaLink="true">https://zyyme.com/%E5%8A%A8%E6%89%8B%E4%B8%8B%E8%BD%BD%E7%BD%91%E4%B8%8A%E8%A7%86%E9%A2%91.html</guid><description>事情是这样的，同学叫我帮他下个视频。。。 A0E747B750FA5415F71B1DD9E5F024B4 然后我是这样做的： 首先，搞到页面地址。。。 EQ03KJMFB24]@W2CU4ZN用个chrome内核的浏览器（你用个什么360之类的都行，很多浏览器内核一样的，除了ie） 打开页面地址，按F12，按Ctrl+F，输flash，按回车 找到视频播放</description><pubDate>Sat, 09 Apr 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;事情是这样的，同学叫我帮他下个视频。。。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/assets/uploads/2016/04/A0E747B750FA5415F71B1DD9E5F024B4.png&quot; alt=&quot;A0E747B750FA5415F71B1DD9E5F024B4&quot; /&gt;&lt;/p&gt;
&lt;p&gt;然后我是这样做的：&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;首先，搞到页面地址。。。&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;![EQ03KJMFB24_]`@W2~CU4ZN](/assets/uploads/2016/04/EQ03KJMFB24_@W2CU4ZN.jpg)用个chrome内核的浏览器（你用个什么360之类的都行，很多浏览器内核一样的，除了ie）&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;打开页面地址，按F12，按Ctrl+F，输flash，按回车&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;找到视频播放器地址，比如说这个： ![U1PQ2VR)LA%KFT`9T]@K33K](/assets/uploads/2016/04/U1PQ2VRLAKFT9T@K33K.png)&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;新建一个页面打开它：![OC6{]KD4X_]QG%KTBVLA]B9](/assets/uploads/2016/04/OC6KD4X_QGKTBVLAB9.jpg)&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;按F12，切换到NetWork标签&lt;img src=&quot;/assets/uploads/2016/04/0N75PY8J_@3I21K@4HAW1U.png&quot; alt=&quot;0N75PY8J_@3I21K@4HA(W1U&quot; /&gt;&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;刷新页面，这时这里有条蓝色一直在走，是视频在缓冲![V1CGAX{EBV0CET5JDC&lt;a href=&quot;/assets/uploads/2016/04/V1CGAXEBV0CET5JDCS1D.png&quot;&gt;S{1D&lt;/a&gt;&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;在只有蓝色的区域拖动下鼠标，然后你就看到视频地址了，复制出来吧，最前面指向的那个媒体文件就是你想要的视频&lt;img src=&quot;/assets/uploads/2016/04/PU3MJRP7AR3KKWC36NG.png&quot; alt=&quot;PU3MJ{RP7AR~3K{KWC36~NG&quot; /&gt;&amp;lt;/li&amp;gt;
&amp;lt;/ol&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>发现个挺好玩的东西------App Inventor</title><link>https://zyyme.com/%E5%8F%91%E7%8E%B0%E4%B8%AA%E6%8C%BA%E5%A5%BD%E7%8E%A9%E7%9A%84%E4%B8%9C%E8%A5%BF-app-inventor.html</link><guid isPermaLink="true">https://zyyme.com/%E5%8F%91%E7%8E%B0%E4%B8%AA%E6%8C%BA%E5%A5%BD%E7%8E%A9%E7%9A%84%E4%B8%9C%E8%A5%BF-app-inventor.html</guid><description>MIT App Inventor 2： 点这里进入 全中文。。。恩，让我想到那个橙黄色猫头图标的软件：Scratch 现已加入小学课本。。。然而我们那时没有。。。。</description><pubDate>Sun, 06 Mar 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;MIT App Inventor 2：&amp;lt;a href=&quot;http://app.gzjkw.net/&quot; target=&quot;_blank&quot;&amp;gt;点这里进入&amp;lt;/a&amp;gt;&lt;/p&gt;
&lt;p&gt;全中文。。。恩，让我想到那个橙黄色猫头图标的软件：Scratch&lt;/p&gt;
&lt;p&gt;现已加入小学课本。。。然而我们那时没有。。。。&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
</content:encoded></item><item><title>自制粗体微软幼圆</title><link>https://zyyme.com/%E8%87%AA%E5%88%B6%E7%B2%97%E4%BD%93%E5%BE%AE%E8%BD%AF%E5%B9%BC%E5%9C%86.html</link><guid isPermaLink="true">https://zyyme.com/%E8%87%AA%E5%88%B6%E7%B2%97%E4%BD%93%E5%BE%AE%E8%BD%AF%E5%B9%BC%E5%9C%86.html</guid><description>首选，上个图你们感受一下。。。 字库已经很全很全了。。。恩，有点bug比如“吱”字，底下的又会有问题（详情见图） ---------- 恩，下载地址。。。。。 戳这里</description><pubDate>Sat, 20 Feb 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&amp;lt;p style=&quot;text-align: left;&quot;&amp;gt;首选，上个图你们感受一下。。。&amp;lt;/p&amp;gt;
&amp;lt;p style=&quot;text-align: left;&quot;&amp;gt;&lt;img src=&quot;http://ww1.sinaimg.cn/large/87717ff7jw1f14ok3o99bj20zy0qo0z9.jpg&quot; alt=&quot;&quot; /&gt;&amp;lt;/p&amp;gt;
&amp;lt;p style=&quot;text-align: left;&quot;&amp;gt;&lt;img src=&quot;http://ww1.sinaimg.cn/large/87717ff7jw1f14ok4g7xzj20qo1begqf.jpg&quot; alt=&quot;&quot; /&gt;&lt;img src=&quot;http://ww2.sinaimg.cn/large/87717ff7jw1f15m87hri1j20qo1beqfr.jpg&quot; alt=&quot;&quot; /&gt;&amp;lt;/p&amp;gt;
&amp;lt;p style=&quot;text-align: left;&quot;&amp;gt;字库已经很全很全了。。。恩，有点bug比如“吱”字，底下的又会有问题（详情见图）&amp;lt;/p&amp;gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;恩，下载地址。。。。。&amp;lt;a href=&quot;http://pan.baidu.com/s/1mhrpRIg&quot; target=&quot;_blank&quot;&amp;gt;戳这里&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;p style=&quot;text-align: left;&quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>旧站的域名即将过期</title><link>https://zyyme.com/%E6%97%A7%E7%AB%99%E7%9A%84%E5%9F%9F%E5%90%8D%E5%8D%B3%E5%B0%86%E8%BF%87%E6%9C%9F.html</link><guid isPermaLink="true">https://zyyme.com/%E6%97%A7%E7%AB%99%E7%9A%84%E5%9F%9F%E5%90%8D%E5%8D%B3%E5%B0%86%E8%BF%87%E6%9C%9F.html</guid><description>我会抽空把它转回 http://zanjie1999.16mb.com 当初用了这个域名，后来换来换去，最后换了服务器，换了现在的域名，优化了打开速度，才有今天 ---------- Screenshot20160214-015144</description><pubDate>Sun, 14 Feb 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;我会抽空把它转回 http://zanjie1999.16mb.com&lt;/p&gt;
&lt;p&gt;当初用了这个域名，后来换来换去，最后换了服务器，换了现在的域名，优化了打开速度，才有今天&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/assets/uploads/2016/02/Screenshot_20160214-015144.png&quot; alt=&quot;Screenshot_20160214-015144&quot; /&gt;&lt;/p&gt;
</content:encoded></item><item><title>新年快乐！</title><link>https://zyyme.com/%E6%96%B0%E5%B9%B4%E5%BF%AB%E4%B9%90.html</link><guid isPermaLink="true">https://zyyme.com/%E6%96%B0%E5%B9%B4%E5%BF%AB%E4%B9%90.html</guid><description>-6fafa710d3b0e6f</description><pubDate>Mon, 08 Feb 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;/assets/uploads/2016/02/6fafa710d3b0e6f.jpg&quot; alt=&quot;-6fafa710d3b0e6f&quot; /&gt;&lt;/p&gt;
</content:encoded></item><item><title>使用小米手机的一些感想</title><link>https://zyyme.com/%E4%BD%BF%E7%94%A8%E5%B0%8F%E7%B1%B3%E6%89%8B%E6%9C%BA%E7%9A%84%E4%B8%80%E4%BA%9B%E6%84%9F%E6%83%B3.html</link><guid isPermaLink="true">https://zyyme.com/%E4%BD%BF%E7%94%A8%E5%B0%8F%E7%B1%B3%E6%89%8B%E6%9C%BA%E7%9A%84%E4%B8%80%E4%BA%9B%E6%84%9F%E6%83%B3.html</guid><description>当初选择小米的手机是因为刷机，但现在miui各种广告植入伏优化等开始让我使用原生，远离miui，小米当初是为发烧而生的，说是最适合中国人的系统，但现在却使用各种卑鄙手段来限制用户，推广各种广告，以各种营销手段像耍猴一样玩消费者，从此以后，我不会再购买不能刷原生的小米手机，我也不会向任何人推荐miui，珍爱生命，远离miui</description><pubDate>Sat, 06 Feb 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;当初选择小米的手机是因为刷机，但现在miui各种广告植入伏优化等开始让我使用原生，远离miui，小米当初是为发烧而生的，说是最适合中国人的系统，但现在却使用各种卑鄙手段来限制用户，推广各种广告，以各种营销手段像耍猴一样玩消费者，从此以后，我不会再购买不能刷原生的小米手机，我也不会向任何人推荐miui，珍爱生命，远离miui&lt;/p&gt;
</content:encoded></item><item><title>又到最让人欣慰的寒假了</title><link>https://zyyme.com/%E5%8F%88%E5%88%B0%E6%9C%80%E8%AE%A9%E4%BA%BA%E6%AC%A3%E6%85%B0%E7%9A%84%E5%AF%92%E5%81%87%E4%BA%86.html</link><guid isPermaLink="true">https://zyyme.com/%E5%8F%88%E5%88%B0%E6%9C%80%E8%AE%A9%E4%BA%BA%E6%AC%A3%E6%85%B0%E7%9A%84%E5%AF%92%E5%81%87%E4%BA%86.html</guid><description>恩，一年一度的寒假，为什么会欣慰呢？有两种原因： 1.终于放假了 2.过年了有红包收。。。。 But。。。。万恶的作业啊，而且放假只放到21号。。。 还要雪上加霜的是，万恶的淘宝15号才上班啊。。。。我要买东西做作业啊！！！！！！！</description><pubDate>Thu, 04 Feb 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;恩，一年一度的寒假，为什么会欣慰呢？有两种原因：&lt;/p&gt;
&lt;p&gt;1.终于放假了&lt;/p&gt;
&lt;p&gt;2.过年了有红包收。。。。&lt;/p&gt;
&lt;p&gt;But。。。。万恶的作业啊，而且放假只放到21号。。。&lt;/p&gt;
&lt;p&gt;还要雪上加霜的是，万恶的淘宝15号才上班啊。。。。我要买东西做作业啊！！！！！！！&lt;/p&gt;
</content:encoded></item><item><title>学校渣配置电脑</title><link>https://zyyme.com/%E5%AD%A6%E6%A0%A1%E6%B8%A3%E9%85%8D%E7%BD%AE%E7%94%B5%E8%84%91.html</link><guid isPermaLink="true">https://zyyme.com/%E5%AD%A6%E6%A0%A1%E6%B8%A3%E9%85%8D%E7%BD%AE%E7%94%B5%E8%84%91.html</guid><description>学校电脑</description><pubDate>Fri, 22 Jan 2016 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;/assets/uploads/2016/01/%E5%AD%A6%E6%A0%A1%E7%94%B5%E8%84%91.png&quot; alt=&quot;学校电脑&quot; /&gt;&lt;/p&gt;
</content:encoded></item><item><title>百度收录本站啦！！！</title><link>https://zyyme.com/%E7%99%BE%E5%BA%A6%E6%94%B6%E5%BD%95%E6%9C%AC%E7%AB%99%E5%95%A6.html</link><guid isPermaLink="true">https://zyyme.com/%E7%99%BE%E5%BA%A6%E6%94%B6%E5%BD%95%E6%9C%AC%E7%AB%99%E5%95%A6.html</guid><description>未命名 还是排在第一个，看来努力没有白费</description><pubDate>Thu, 05 Nov 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;/assets/uploads/2015/11/%E6%9C%AA%E5%91%BD%E5%90%8D.png&quot; alt=&quot;未命名&quot; /&gt;&lt;/p&gt;
&lt;p&gt;还是排在第一个，看来努力没有白费&lt;/p&gt;
</content:encoded></item><item><title>谷歌服务器回来了！！！！</title><link>https://zyyme.com/%E8%B0%B7%E6%AD%8C%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%9B%9E%E6%9D%A5%E4%BA%86.html</link><guid isPermaLink="true">https://zyyme.com/%E8%B0%B7%E6%AD%8C%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%9B%9E%E6%9D%A5%E4%BA%86.html</guid><description>谷歌地图已回归 www.google.cn/maps</description><pubDate>Thu, 05 Nov 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;谷歌地图已回归&lt;/p&gt;
&lt;p&gt;www.google.cn/maps&lt;/p&gt;
</content:encoded></item><item><title>刚刚想去那个棒棒糖来吃，结果里面连个糖都没有 ?</title><link>https://zyyme.com/%E5%88%9A%E5%88%9A%E6%83%B3%E5%8E%BB%E9%82%A3%E4%B8%AA%E6%A3%92%E6%A3%92%E7%B3%96%E6%9D%A5%E5%90%83-%E7%BB%93%E6%9E%9C%E9%87%8C%E9%9D%A2%E8%BF%9E%E4%B8%AA%E7%B3%96%E9%83%BD%E6%B2%A1%E6%9C%89.html</link><guid isPermaLink="true">https://zyyme.com/%E5%88%9A%E5%88%9A%E6%83%B3%E5%8E%BB%E9%82%A3%E4%B8%AA%E6%A3%92%E6%A3%92%E7%B3%96%E6%9D%A5%E5%90%83-%E7%BB%93%E6%9E%9C%E9%87%8C%E9%9D%A2%E8%BF%9E%E4%B8%AA%E7%B3%96%E9%83%BD%E6%B2%A1%E6%9C%89.html</guid><description>IMG20151031142329</description><pubDate>Sat, 31 Oct 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;/assets/uploads/2015/10/IMG_20151031_142329.jpg&quot; alt=&quot;IMG_20151031_142329&quot; /&gt;&lt;/p&gt;
</content:encoded></item><item><title>谷歌已收录本站</title><link>https://zyyme.com/%E8%B0%B7%E6%AD%8C%E5%B7%B2%E6%94%B6%E5%BD%95%E6%9C%AC%E7%AB%99.html</link><guid isPermaLink="true">https://zyyme.com/%E8%B0%B7%E6%AD%8C%E5%B7%B2%E6%94%B6%E5%BD%95%E6%9C%AC%E7%AB%99.html</guid><description>目前只有谷歌收录。。。。 Screenshot2015-10-11-00-29-45</description><pubDate>Sun, 11 Oct 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;目前只有谷歌收录。。。。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/assets/uploads/2015/10/Screenshot_2015-10-11-00-29-45.png&quot; alt=&quot;Screenshot_2015-10-11-00-29-45&quot; /&gt;&lt;/p&gt;
</content:encoded></item><item><title>大家一起来卖萌~</title><link>https://zyyme.com/%E5%A4%A7%E5%AE%B6%E4%B8%80%E8%B5%B7%E6%9D%A5%E5%8D%96%E8%90%8C.html</link><guid isPermaLink="true">https://zyyme.com/%E5%A4%A7%E5%AE%B6%E4%B8%80%E8%B5%B7%E6%9D%A5%E5%8D%96%E8%90%8C.html</guid><description>Screenshot2015-10-11-00-03-05我拿出已放在抽屉一个月的树莓派出来卖萌了?</description><pubDate>Sat, 10 Oct 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;/assets/uploads/2015/10/Screenshot_2015-10-11-00-03-05.png&quot; alt=&quot;Screenshot_2015-10-11-00-03-05&quot; /&gt;我拿出已放在抽屉一个月的树莓派出来卖萌了~?&lt;/p&gt;
</content:encoded></item><item><title>成功生成网易云音乐版权保护无法生成外链的歌单</title><link>https://zyyme.com/%E6%88%90%E5%8A%9F%E7%94%9F%E6%88%90%E7%BD%91%E6%98%93%E4%BA%91%E9%9F%B3%E4%B9%90%E7%89%88%E6%9D%83%E4%BF%9D%E6%8A%A4%E6%97%A0%E6%B3%95%E7%94%9F%E6%88%90%E5%A4%96%E9%93%BE%E7%9A%84%E6%AD%8C%E5%8D%95.html</link><guid isPermaLink="true">https://zyyme.com/%E6%88%90%E5%8A%9F%E7%94%9F%E6%88%90%E7%BD%91%E6%98%93%E4%BA%91%E9%9F%B3%E4%B9%90%E7%89%88%E6%9D%83%E4%BF%9D%E6%8A%A4%E6%97%A0%E6%B3%95%E7%94%9F%E6%88%90%E5%A4%96%E9%93%BE%E7%9A%84%E6%AD%8C%E5%8D%95.html</guid><description>成果看右边(oﾟvﾟ)ノ ---------- 教程： 找到你要生成的歌单，点击“ 生成外链播放器”显示“由于版权保护，无法生成外链。”可使用以下方法： 打开网页版云音乐，点开你要生成的歌单，链接是 类似 这样的： http://music.163.com//playlist?id= 21777546 然后 我们复制那串数字。。。。。把下面链接的 红字 换成</description><pubDate>Tue, 06 Oct 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&amp;lt;h1&amp;gt;成果看右边(oﾟvﾟ)ノ&amp;lt;/h1&amp;gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt; &lt;br /&gt;
&amp;lt;h2&amp;gt;教程：&amp;lt;/h2&amp;gt;
&amp;lt;h3&amp;gt;&amp;lt;span style=&quot;color: #ff0000;&quot;&amp;gt;找到你要生成的歌单，点击“&amp;lt;a class=&quot;des s-fc7&quot; style=&quot;color: #ff0000;&quot; data-action=&quot;outchain&quot; data-href=&quot;/outchain/0/21777546/&quot;&amp;gt;生成外链播放器”显示“由于版权保护，无法生成外链。”可使用以下方法：&amp;lt;/a&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/h3&amp;gt;
打开网页版云音乐，点开你要生成的歌单，链接是&amp;lt;span style=&quot;color: #ff0000;&quot;&amp;gt;类似&amp;lt;/span&amp;gt;这样的：&lt;br /&gt;
&amp;lt;h4 data-wpview-marker=&quot;http%3A%2F%2Fmusic.163.com%2F%23%2Fplaylist%3Fid%3D21777546&quot;&amp;gt; http://music.163.com/#/playlist?id=&amp;lt;span style=&quot;color: #ff0000;&quot;&amp;gt;21777546&amp;lt;/span&amp;gt;&amp;lt;/h4&amp;gt;
然后 我们复制那串数字。。。。。把下面链接的&amp;lt;span style=&quot;color: #ff0000;&quot;&amp;gt;红字&amp;lt;/span&amp;gt;换成你的那串数字。。。&lt;br /&gt;
&amp;lt;h4&amp;gt;http://music.163.com/#/outchain/0/&amp;lt;span style=&quot;color: #ff0000;&quot;&amp;gt;粘贴到这里&amp;lt;/span&amp;gt;/&amp;lt;/h4&amp;gt;
然后。。。。你就会看到美好的页面.。。。。。。。&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
</content:encoded></item><item><title>祝大家中秋节“慢”乐哦~</title><link>https://zyyme.com/%E7%A5%9D%E5%A4%A7%E5%AE%B6%E4%B8%AD%E7%A7%8B%E8%8A%82%E6%85%A2%E4%B9%90%E5%93%A6.html</link><guid isPermaLink="true">https://zyyme.com/%E7%A5%9D%E5%A4%A7%E5%AE%B6%E4%B8%AD%E7%A7%8B%E8%8A%82%E6%85%A2%E4%B9%90%E5%93%A6.html</guid><description>祝大家中秋节“慢”乐哦，漫长的快乐哦，学校本周周日也不用晚自习了，3天之后将是国庆，希望移动联通电信能如愿以偿的流量不清零，Facebook和Google回归中国吧</description><pubDate>Sun, 27 Sep 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;祝大家中秋节“慢”乐哦~，漫长的快乐哦，学校本周周日也不用晚自习了，3天之后将是国庆，希望移动联通电信能如愿以偿的流量不清零，Facebook和Google回归中国吧~&lt;/p&gt;
</content:encoded></item><item><title>你居然点进来了</title><link>https://zyyme.com/%E4%BD%A0%E5%B1%85%E7%84%B6%E7%82%B9%E8%BF%9B%E6%9D%A5%E4%BA%86.html</link><guid isPermaLink="true">https://zyyme.com/%E4%BD%A0%E5%B1%85%E7%84%B6%E7%82%B9%E8%BF%9B%E6%9D%A5%E4%BA%86.html</guid><description>你居然点进来了 点开标题进来评论吧</description><pubDate>Thu, 10 Sep 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;你居然点进来了&lt;br /&gt;
点开标题进来评论吧~&lt;/p&gt;
</content:encoded></item><item><title>打造Mini NAS &amp;amp; 物联网中心</title><link>https://zyyme.com/%E6%89%93%E9%80%A0mini-nas-%E7%89%A9%E8%81%94%E7%BD%91%E4%B8%AD%E5%BF%83.html</link><guid isPermaLink="true">https://zyyme.com/%E6%89%93%E9%80%A0mini-nas-%E7%89%A9%E8%81%94%E7%BD%91%E4%B8%AD%E5%BF%83.html</guid><description>材料:树莓派2b一套，hg255d路由一个 要求:有一定的动手能力和一定的Linux基础。 1.首先，把路由刷成OpenWrt，在sd卡上依据你的喜好写好Linux系统(什么？你不懂，找度娘吧)。 2.在路由里装好Shadowsocks代理配置好服务器以便翻越中国防火长城上谷歌等学术网站(恩，还是度娘)。 3.在树莓派上安装Aria2和Samba 打开终端输</description><pubDate>Sat, 08 Aug 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;材料:树莓派2b一套，hg255d路由一个&lt;/p&gt;
&lt;p&gt;要求:有一定的动手能力和一定的Linux基础。&lt;/p&gt;
&lt;p&gt;1.首先，把路由刷成OpenWrt，在sd卡上依据你的喜好写好Linux系统(什么？你不懂，找度娘吧)。&lt;/p&gt;
&lt;p&gt;2.在路由里装好Shadowsocks代理配置好服务器以便翻越中国防火长城上谷歌等学术网站(恩，还是度娘)。&lt;/p&gt;
&lt;p&gt;3.在树莓派上安装Aria2和Samba&lt;/p&gt;
&lt;p&gt;打开终端输入以下内容:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo apt-get update
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;sudo apt-get install aria2 samba
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;samba的配置文件在/etc/samba.conf&lt;/p&gt;
&lt;p&gt;aria2的配置文件在/etc/aria2.conf&lt;/p&gt;
&lt;p&gt;(什么？你不会配置？度娘吧！)&lt;/p&gt;
&lt;p&gt;设置好Samba共享和aria2下载器后，可以做nfs下载器了，也可以挂网站了，然后再装个kodi媒体中心吧！&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo apt-get install kodi
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;然后就可以看电影了(什么，看不懂英语？又不是不能用╮(╯▽╰)╭其实可以换语言的啦，问度娘吧)&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
</content:encoded></item><item><title>迅雷极速版破解本地会员</title><link>https://zyyme.com/%E8%BF%85%E9%9B%B7%E6%9E%81%E9%80%9F%E7%89%88%E7%A0%B4%E8%A7%A3%E6%9C%AC%E5%9C%B0%E4%BC%9A%E5%91%98.html</link><guid isPermaLink="true">https://zyyme.com/%E8%BF%85%E9%9B%B7%E6%9E%81%E9%80%9F%E7%89%88%E7%A0%B4%E8%A7%A3%E6%9C%AC%E5%9C%B0%E4%BC%9A%E5%91%98.html</guid><description>淘宝js卖的，易语言写的替换文件程序，破解了本地会员，可以高速通道，离线加速，妈妈再也不用担心服务器限速啦23333 下载请关闭杀毒软件，360啊瑞星腾讯毒霸什么的，微！软！堡！垒！也！要！关！！！ 报毒就是报毒了，反正我是做小白鼠了。。。试了没事。。。。 度娘盘下载: 点我下载</description><pubDate>Fri, 07 Aug 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;淘宝js卖的，易语言写的替换文件程序，破解了本地会员，可以高速通道，离线加速，妈妈再也不用担心服务器限速啦23333&lt;/p&gt;
&lt;p&gt;下载请关闭杀毒软件，360啊瑞星腾讯毒霸什么的，微！软！堡！垒！也！要！关！！！&lt;/p&gt;
&lt;p&gt;报毒就是报毒了，反正我是做小白鼠了。。。试了没事。。。。&lt;/p&gt;
&lt;p&gt;度娘盘下载:&amp;lt;a href=&quot;http://pan.baidu.com/share/link?shareid=3419750520&amp;amp;uk=2819372802&quot; target=&quot;_blank&quot;&amp;gt;点我下载&amp;lt;/a&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>网易云音乐你那么叼你家里人知道吗</title><link>https://zyyme.com/%E7%BD%91%E6%98%93%E4%BA%91%E9%9F%B3%E4%B9%90%E4%BD%A0%E9%82%A3%E4%B9%88%E5%8F%BC%E4%BD%A0%E5%AE%B6%E9%87%8C%E4%BA%BA%E7%9F%A5%E9%81%93%E5%90%97.html</link><guid isPermaLink="true">https://zyyme.com/%E7%BD%91%E6%98%93%E4%BA%91%E9%9F%B3%E4%B9%90%E4%BD%A0%E9%82%A3%E4%B9%88%E5%8F%BC%E4%BD%A0%E5%AE%B6%E9%87%8C%E4%BA%BA%E7%9F%A5%E9%81%93%E5%90%97.html</guid><description>我不说话，只发图: IMG20150804154928</description><pubDate>Tue, 04 Aug 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;我不说话，只发图:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/assets/uploads/2015/08/IMG_20150804_154928.jpg&quot; alt=&quot;IMG_20150804_154928&quot; /&gt;&lt;/p&gt;
</content:encoded></item><item><title>ubuntu mate</title><link>https://zyyme.com/ubuntu-mate.html</link><guid isPermaLink="true">https://zyyme.com/ubuntu-mate.html</guid><description>ubuntu mate树莓派2，flash的性能好像08年左右的双核机。。。。似乎gpu没有办法硬件加速，声音输出时有bug，gpio也有bug，时钟模块暂时用不了................. Screenshot</description><pubDate>Tue, 28 Jul 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt; &lt;/p&gt;
&lt;p&gt;ubuntu mate树莓派2，flash的性能好像08年左右的双核机。。。。似乎gpu没有办法硬件加速，声音输出时有bug，gpio也有bug，时钟模块暂时用不了.................&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/assets/uploads/2015/07/Screenshot&quot; alt=&quot;Screenshot&quot; /&gt;&lt;/p&gt;
</content:encoded></item><item><title>ubuntu arm软件源</title><link>https://zyyme.com/ubuntu-arm%E8%BD%AF%E4%BB%B6%E6%BA%90.html</link><guid isPermaLink="true">https://zyyme.com/ubuntu-arm%E8%BD%AF%E4%BB%B6%E6%BA%90.html</guid><description>deb http://ports.ubuntu.com/ vivid main restricted universe multiverse deb-src http://ports.ubuntu.com/ vivid main restricted universe multiverse deb http://ports.ubuntu.com/ vivid</description><pubDate>Thu, 23 Jul 2015 00:00:00 GMT</pubDate><content:encoded>&lt;pre&gt;&lt;code&gt;deb http://ports.ubuntu.com/ vivid main restricted universe multiverse
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;# deb-src http://ports.ubuntu.com/ vivid main restricted universe multiverse
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;deb http://ports.ubuntu.com/ vivid-updates main restricted universe multiverse
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;# deb-src http://ports.ubuntu.com/ vivid-updates main restricted universe multiverse
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;deb http://ports.ubuntu.com/ vivid-security main restricted universe multiverse
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;# deb-src http://ports.ubuntu.com/ vivid-security main restricted universe multiverse
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;deb http://ports.ubuntu.com/ vivid-backports main restricted universe multiverse
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;# deb-src http://ports.ubuntu.com/ vivid-backports main restricted universe multiverse
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>编译HG255D的OpenWrt Barrier Breaker固件方法</title><link>https://zyyme.com/%E7%BC%96%E8%AF%91hg255d%E7%9A%84openwrt-barrier-breaker%E5%9B%BA%E4%BB%B6%E6%96%B9%E6%B3%95.html</link><guid isPermaLink="true">https://zyyme.com/%E7%BC%96%E8%AF%91hg255d%E7%9A%84openwrt-barrier-breaker%E5%9B%BA%E4%BB%B6%E6%96%B9%E6%B3%95.html</guid><description>编译环境为Ubuntu 14.04 LTS 64-bit真机，当然也可以用虚拟机。 1、安装编译需要的软件包： sudo apt-get update sudo apt-get install build-essential subversion libncurses5-dev zlib1g-dev gawk gcc-multilib flex git-co</description><pubDate>Mon, 20 Jul 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;编译环境为Ubuntu 14.04 LTS 64-bit真机，当然也可以用虚拟机。&lt;/p&gt;
&lt;p&gt;1、安装编译需要的软件包：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo apt-get update
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;sudo apt-get install build-essential subversion libncurses5-dev zlib1g-dev gawk gcc-multilib flex git-core gettext
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;2、下载OpenWrt Barrier Breaker源码，我习惯用SVN：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;svn co svn://svn.openwrt.org/openwrt/branches/barrier_breaker
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;当然如果你喜欢，也可以用GIT：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;git clone git://git.openwrt.org/14.07/openwrt.git
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;3、更新源：(ps:如果使用git，第一行命令应该为: &lt;code&gt;cd openwrt&lt;/code&gt; )&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cd barrier_breaker  
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;./scripts/feeds update -a  
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;./scripts/feeds install -a  
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;4、打开对HG255D的支持(当然用vi啊gedit啊都是可以的)：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;vim target/linux/ramips/image/Makefile  
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;搜索HG255D，去掉前面的注释符#，至于官方为什么要注释掉这一行，有一种说法是官方的版本只在lintel u-boot上测试过，如果刷在带原厂u-boot的HG255D上会出问题，这也许是官方没有提供HG255D固件下载的原因吧。&lt;/p&gt;
&lt;p&gt;5、进行配置：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;make defconfig  
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;make prereq  
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;make menuconfig  
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;在弹出的图形界面中选择&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Target System (Ralink RT288x/RT3xxx)  
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;Subtarget (RT3x5x/RT5350 based boards)  
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;Target Profile (HuaWei HG255D)  
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;我喜欢纯净的系统，所以只安装默认选中的软件，这也是我自己编译固件的原因之一，网上别人编译的固件太臃肿，集成了太多我不想要的东西。你也可以根据自己的需要选择相应的软件包，私人定制专属于自己的固件。&lt;/p&gt;
&lt;p&gt;6、编译：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;make -j V=s  
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;编译的时间取决于你机器的配置和你的网络（编译过程中需要下载源码），反正渣机器和渣网络下可能要编译几个小时，编译好的固件保存在:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;bin/ramips/openwrt-ramips-rt305x-hg255d-squashfs-sysupgrade.bin  
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;编译好之后当然就是刷机了，你懂的。&lt;/p&gt;
</content:encoded></item><item><title>恩。。。。。。我又用回了这卡卡的多说评论框</title><link>https://zyyme.com/change-to-duoshuo.html</link><guid isPermaLink="true">https://zyyme.com/change-to-duoshuo.html</guid><description>First，一开始让我用多说评论框的时候我是拒绝的，因为不能叫我用我就用，我用起来是这么卡的，你们用起来也是这么卡的。。。。。。。。 ---------- 好啦言归正传。。。。只是为了让来评论区吐槽的人们回复可以得到提醒啦。。。。</description><pubDate>Sat, 18 Jul 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;First，一开始让我用多说评论框的时候我是拒绝的，因为不能叫我用我就用，我用起来是这么卡的，你们用起来也是这么卡的。。。。。。。。&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;好啦言归正传。。。。只是为了让来评论区吐槽的人们回复可以得到提醒啦。。。。&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
</content:encoded></item><item><title>Cortana出安卓版啦~</title><link>https://zyyme.com/cortana%E5%87%BA%E5%AE%89%E5%8D%93%E7%89%88%E5%95%A6.html</link><guid isPermaLink="true">https://zyyme.com/cortana%E5%87%BA%E5%AE%89%E5%8D%93%E7%89%88%E5%95%A6.html</guid><description>Screenshot2015-07-18-10-38-31 英文版： 百度网盘下载 中文版： 百度网盘下载</description><pubDate>Sat, 18 Jul 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;/assets/uploads/2015/07/Screenshot_2015-07-18-10-38-31.png&quot; alt=&quot;Screenshot_2015-07-18-10-38-31&quot; /&gt;&lt;/p&gt;
&lt;p&gt;英文版：&amp;lt;a href=&quot;http://pan.baidu.com/share/link?shareid=998629471&amp;amp;uk=2819372802&quot; target=&quot;_blank&quot;&amp;gt;百度网盘下载&amp;lt;/a&amp;gt;&lt;/p&gt;
&lt;p&gt;中文版：&amp;lt;a href=&quot;http://pan.baidu.com/share/link?shareid=3556894366&amp;amp;uk=2819372802&quot; target=&quot;_blank&quot;&amp;gt;百度网盘下载&amp;lt;/a&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>自己搜集的xposed插件</title><link>https://zyyme.com/%E8%87%AA%E5%B7%B1%E6%90%9C%E9%9B%86%E7%9A%84xposed%E6%8F%92%E4%BB%B6.html</link><guid isPermaLink="true">https://zyyme.com/%E8%87%AA%E5%B7%B1%E6%90%9C%E9%9B%86%E7%9A%84xposed%E6%8F%92%E4%BB%B6.html</guid><description>百度网盘下载</description><pubDate>Sat, 18 Jul 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&amp;lt;a href=&quot;http://pan.baidu.com/share/link?shareid=2004170209&amp;amp;uk=2819372802&quot; target=&quot;_blank&quot;&amp;gt;百度网盘下载&amp;lt;/a&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>超级无敌大更新！！！</title><link>https://zyyme.com/%E8%B6%85%E7%BA%A7%E6%97%A0%E6%95%8C%E5%A4%A7%E6%9B%B4%E6%96%B0.html</link><guid isPermaLink="true">https://zyyme.com/%E8%B6%85%E7%BA%A7%E6%97%A0%E6%95%8C%E5%A4%A7%E6%9B%B4%E6%96%B0.html</guid><description>注意到右下角了吗？</description><pubDate>Fri, 17 Jul 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&amp;lt;h1&amp;gt;注意到右下角了吗？&amp;lt;/h1&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>事实告诉我，千万不要用Windows画图工具画画.......</title><link>https://zyyme.com/%E4%BA%8B%E5%AE%9E%E5%91%8A%E8%AF%89%E6%88%91-%E5%8D%83%E4%B8%87%E4%B8%8D%E8%A6%81%E7%94%A8windows%E7%94%BB%E5%9B%BE%E5%B7%A5%E5%85%B7%E7%94%BB%E7%94%BB.html</link><guid isPermaLink="true">https://zyyme.com/%E4%BA%8B%E5%AE%9E%E5%91%8A%E8%AF%89%E6%88%91-%E5%8D%83%E4%B8%87%E4%B8%8D%E8%A6%81%E7%94%A8windows%E7%94%BB%E5%9B%BE%E5%B7%A5%E5%85%B7%E7%94%BB%E7%94%BB.html</guid><description>Windows画图工具</description><pubDate>Sun, 05 Jul 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;/assets/uploads/2015/07/Windows%E7%94%BB%E5%9B%BE%E5%B7%A5%E5%85%B7.png&quot; alt=&quot;Windows画图工具&quot; /&gt;&lt;/p&gt;
</content:encoded></item><item><title>恩。。。。这就是所谓的网易云音乐播放器插件</title><link>https://zyyme.com/%E6%81%A9-%E8%BF%99%E5%B0%B1%E6%98%AF%E6%89%80%E8%B0%93%E7%9A%84%E7%BD%91%E6%98%93%E4%BA%91%E9%9F%B3%E4%B9%90%E6%92%AD%E6%94%BE%E5%99%A8%E6%8F%92%E4%BB%B6.html</link><guid isPermaLink="true">https://zyyme.com/%E6%81%A9-%E8%BF%99%E5%B0%B1%E6%98%AF%E6%89%80%E8%B0%93%E7%9A%84%E7%BD%91%E6%98%93%E4%BA%91%E9%9F%B3%E4%B9%90%E6%92%AD%E6%94%BE%E5%99%A8%E6%8F%92%E4%BB%B6.html</guid><description>顺便吐槽一下云音乐。。。。。。 -287ad3f6cb5b53db</description><pubDate>Fri, 03 Jul 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&amp;lt;iframe src=&quot;http://music.163.com/outchain/player?type=0&amp;amp;id=80626298&amp;amp;auto=0&amp;amp;height=430&quot; width=&quot;530&quot; height=&quot;520&quot; frameborder=&quot;no&quot; marginwidth=&quot;0&quot; marginheight=&quot;0&quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;顺便吐槽一下云音乐。。。。。。&amp;lt;strong&amp;gt;&amp;lt;/strong&amp;gt;&lt;img src=&quot;/assets/uploads/2015/07/287ad3f6cb5b53db.jpg&quot; alt=&quot;-287ad3f6cb5b53db&quot; /&gt;&lt;/p&gt;
</content:encoded></item><item><title>更新了。。。。</title><link>https://zyyme.com/%E6%9B%B4%E6%96%B0%E4%BA%86.html</link><guid isPermaLink="true">https://zyyme.com/%E6%9B%B4%E6%96%B0%E4%BA%86.html</guid><description>添加了播放器 修改了图片 修改了登录界面</description><pubDate>Fri, 03 Jul 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;添加了播放器&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;修改了图片&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;修改了登录界面&amp;lt;/li&amp;gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;img src=&quot;http://ww3.sinaimg.cn/large/7eed024agw1etpl984c56j20ac0e7aaj.jpg&quot; alt=&quot;&quot; /&gt;&lt;br /&gt;
&lt;img src=&quot;http://ww3.sinaimg.cn/large/7eed024agw1etpl98syuwj20sg0h5wgv.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
</content:encoded></item><item><title>aria2恢复正常使用</title><link>https://zyyme.com/aria2%E6%81%A2%E5%A4%8D%E6%AD%A3%E5%B8%B8%E4%BD%BF%E7%94%A8.html</link><guid isPermaLink="true">https://zyyme.com/aria2%E6%81%A2%E5%A4%8D%E6%AD%A3%E5%B8%B8%E4%BD%BF%E7%94%A8.html</guid><description>屏幕截图(35)</description><pubDate>Thu, 02 Jul 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;/assets/uploads/2015/07/%E5%B1%8F%E5%B9%95%E6%88%AA%E5%9B%BE35.png&quot; alt=&quot;屏幕截图(35)&quot; /&gt;&lt;/p&gt;
</content:encoded></item><item><title>网站依旧不很稳定</title><link>https://zyyme.com/%E7%BD%91%E7%AB%99%E4%BE%9D%E6%97%A7%E4%B8%8D%E5%BE%88%E7%A8%B3%E5%AE%9A.html</link><guid isPermaLink="true">https://zyyme.com/%E7%BD%91%E7%AB%99%E4%BE%9D%E6%97%A7%E4%B8%8D%E5%BE%88%E7%A8%B3%E5%AE%9A.html</guid><description>..................</description><pubDate>Tue, 30 Jun 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;..................&lt;/p&gt;
</content:encoded></item><item><title>嗯。。。这是新头像。。。。。</title><link>https://zyyme.com/%E5%97%AF-%E8%BF%99%E6%98%AF%E6%96%B0%E5%A4%B4%E5%83%8F.html</link><guid isPermaLink="true">https://zyyme.com/%E5%97%AF-%E8%BF%99%E6%98%AF%E6%96%B0%E5%A4%B4%E5%83%8F.html</guid><description>头像（透明）</description><pubDate>Sat, 13 Jun 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;/assets/uploads/2015/06/%E5%A4%B4%E5%83%8F%EF%BC%88%E9%80%8F%E6%98%8E%EF%BC%89.png&quot; alt=&quot;头像（透明）&quot; /&gt;&lt;/p&gt;
</content:encoded></item><item><title>My Ubuntu</title><link>https://zyyme.com/my-ubuntu.html</link><guid isPermaLink="true">https://zyyme.com/my-ubuntu.html</guid><description>2015-06-06 23:11:41屏幕截图</description><pubDate>Sat, 06 Jun 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;/assets/uploads/2015/06/2015-06-06-231141%E5%B1%8F%E5%B9%95%E6%88%AA%E5%9B%BE.png&quot; alt=&quot;2015-06-06 23:11:41屏幕截图&quot; /&gt;&lt;/p&gt;
</content:encoded></item><item><title>恩，没错，搬家成功了</title><link>https://zyyme.com/%E6%81%A9-%E6%B2%A1%E9%94%99-%E6%90%AC%E5%AE%B6%E6%88%90%E5%8A%9F%E4%BA%86.html</link><guid isPermaLink="true">https://zyyme.com/%E6%81%A9-%E6%B2%A1%E9%94%99-%E6%90%AC%E5%AE%B6%E6%88%90%E5%8A%9F%E4%BA%86.html</guid><description>这个网站从 http://zanjie1999.esy.es 搬到这里 从英国服务器搬到美国服务器</description><pubDate>Sat, 16 May 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;这个网站从&amp;lt;a href=&quot;http://zanjie1999.esy.es&quot;&amp;gt;http://zanjie1999.esy.es &amp;lt;/a&amp;gt;搬到这里&lt;br /&gt;
从英国服务器搬到美国服务器&lt;/p&gt;
</content:encoded></item><item><title>OpenWrt软件源配置</title><link>https://zyyme.com/openwrt%E8%BD%AF%E4%BB%B6%E6%BA%90%E9%85%8D%E7%BD%AE.html</link><guid isPermaLink="true">https://zyyme.com/openwrt%E8%BD%AF%E4%BB%B6%E6%BA%90%E9%85%8D%E7%BD%AE.html</guid><description>刷完openwrt第一件事当然是换软件源啦，要不然怎么装软件啊。。。 这里我把官方源替换为 中国科技大学教育网官方主镜像 下面就让我来教大家如何换掉软件源: 登录路由器luci，这个我就不说了，想必大家都知道 来到“系统”☞“软件包”☞选择“配置”标签 把框里的 http://download.openwrt.org 替换为 http://openwrt.m</description><pubDate>Mon, 27 Apr 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&amp;lt;div&amp;gt;&amp;lt;/div&amp;gt;
刷完openwrt第一件事当然是换软件源啦，要不然怎么装软件啊。。。&lt;/p&gt;
&lt;p&gt;这里我把官方源替换为 &amp;lt;a href=&quot;http://mirrors.ustc.edu.cn/&quot;&amp;gt;中国科技大学教育网官方主镜像&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;!--more--&amp;gt;&lt;/p&gt;
&lt;p&gt;下面就让我来教大家如何换掉软件源:&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;登录路由器luci，这个我就不说了，想必大家都知道&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;来到“系统”☞“软件包”☞选择“配置”标签&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;把框里的&lt;code&gt;  http://download.openwrt.org  &lt;/code&gt;替换为```
http://openwrt.mirrors.ustc.edu.cn&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;/ol&amp;gt;  

----------  

这里提供一份适合HG255D openwrt barrier_breaker版本的软件源:  

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;dest root /
dest ram /tmp
lists_dir ext /var/opkg-lists
option overlay_root /overlay
src/gz barrier_breaker_base http://openwrt.mirrors.ustc.edu.cn/barrier_breaker/14.07/ramips/mt7620n/packages/base
src/gz barrier_breaker_luci http://openwrt.mirrors.ustc.edu.cn/barrier_breaker/14.07/ramips/mt7620n/packages/luci
src/gz barrier_breaker_management http://openwrt.mirrors.ustc.edu.cn/barrier_breaker/14.07/ramips/mt7620n/packages/management
src/gz barrier_breaker_oldpackages http://openwrt.mirrors.ustc.edu.cn/barrier_breaker/14.07/ramips/mt7620n/packages/oldpackages
src/gz barrier_breaker_packages http://openwrt.mirrors.ustc.edu.cn/barrier_breaker/14.07/ramips/mt7620n/packages/packages
src/gz barrier_breaker_routing http://openwrt.mirrors.ustc.edu.cn/barrier_breaker/14.07/ramips/mt7620n/packages/routing
src/gz barrier_breaker_telephony http://openwrt.mirrors.ustc.edu.cn/barrier_breaker/14.07/ramips/mt7620n/packages/telephony
src/gz barrier_breaker_wifischedule http://openwrt.mirrors.ustc.edu.cn/barrier_breaker/14.07/ramips/mt7620n/packages/wifischedule
#建议复制到这行保证文本完全&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
----------  

这里提供一份适合MT7620/7621 openwrt trunk版本的软件源:  

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;dest root /
dest ram /tmp
lists_dir ext /var/opkg-lists
option overlay_root /overlay
arch all 100
arch ralink 200
arch ramips 300
arch ramips_24kec 400
src/gz 14.09_base http://openwrt.mirrors.ustc.edu.cn/snapshots/trunk/ramips/mt7620/packages/base
src/gz 14.09_kernel http://openwrt.mirrors.ustc.edu.cn/snapshots/trunk/ramips/mt7620/packages/kernel
src/gz 14.09_luci http://openwrt.mirrors.ustc.edu.cn/snapshots/trunk/ramips/mt7620/packages/luci
src/gz 14.09_management http://openwrt.mirrors.ustc.edu.cn/snapshots/trunk/ramips/mt7620/packages/management
src/gz 14.09_packages http://openwrt.mirrors.ustc.edu.cn/snapshots/trunk/ramips/mt7620/packages/packages
src/gz 14.09_routing http://openwrt.mirrors.ustc.edu.cn/snapshots/trunk/ramips/mt7620/packages/routing
src/gz 14.09_targets http://openwrt.mirrors.ustc.edu.cn/snapshots/trunk/ramips/mt7620/packages/targets
src/gz 14.09_telephony http://openwrt.mirrors.ustc.edu.cn/snapshots/trunk/ramips/mt7620/packages/telephony
#建议复制到这行保证文本完全&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
----------  

这是mt7620/7621 trunk 的潘多拉旧版软件原，适合传家宝：  

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;dest root /
dest ram /tmp
lists_dir ext /var/opkg-lists
option overlay_root /overlay
arch all 100
arch ralink 200
arch ramips 300
arch ramips_24kec 400
src/gz r2_base http://downloads.openwrt.com.cn/PandoraBox/ralink/packages/base
src/gz r2_management http://downloads.openwrt.com.cn/PandoraBox/ralink/packages/management
src/gz r2_oldpackages http://downloads.openwrt.com.cn/PandoraBox/ralink/packages/oldpackages
src/gz r2_packages http://downloads.openwrt.com.cn/PandoraBox/ralink/packages/packages
src/gz r2_routing http://downloads.openwrt.com.cn/PandoraBox/ralink/packages/routing
src/gz r2_telephony http://downloads.openwrt.com.cn/PandoraBox/ralink/packages/telephony
#建议复制到这行保证文本完全&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
----------  

这里提供一份适合MT7620/7621 openwrt Chaos Calmer版本的软件源:  

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;dest root /
dest ram /tmp
lists_dir ext /var/opkg-lists
option overlay_root /overlay
src/gz chaos_calmer_base http://openwrt.mirrors.ustc.edu.cn/chaos_calmer/15.05/ramips/mt7620/packages/base
src/gz chaos_calmer_luci http://openwrt.mirrors.ustc.edu.cn/chaos_calmer/15.05/ramips/mt7620/packages/luci
src/gz chaos_calmer_packages http://openwrt.mirrors.ustc.edu.cn/chaos_calmer/15.05/ramips/mt7620/packages/packages
src/gz chaos_calmer_routing http://openwrt.mirrors.ustc.edu.cn/chaos_calmer/15.05/ramips/mt7620/packages/routing
src/gz chaos_calmer_telephony http://openwrt.mirrors.ustc.edu.cn/chaos_calmer/15.05/ramips/mt7620/packages/telephony
src/gz chaos_calmer_management http://openwrt.mirrors.ustc.edu.cn/chaos_calmer/15.05/ramips/mt7620/packages/management
option check_signature 1&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
----------  

(2017-4-17)潘多拉软件源:  

旧版15:  

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;src/gz pandorabox_base http://139.219.239.216/pandorabox/packages/mt7621/packages/base
/gz pandorabox_luci http://139.219.239.216/pandorabox/packages/mt7621/packages/luci
src/gz pandorabox_packages http://139.219.239.216/pandorabox/packages/mt7621/packages/packages&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
像我還用14.9那麼舊的用這個：  
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;dest root /
dest ram /tmp
lists_dir ext /var/opkg-lists
option overlay_root /overlay
arch all 100
arch ralink 200
arch ramips 300
arch ramips_24kec 400
src/gz pandorabox_base http://downloads.openwrt.org.cn/PandoraBox/ralink/packages/base
src/gz pandorabox_management http://downloads.openwrt.org.cn/PandoraBox/ralink/packages/management
src/gz pandorabox_oldpackages http://downloads.openwrt.org.cn/PandoraBox/ralink/packages/oldpackages
src/gz pandorabox_packages http://downloads.openwrt.org.cn/PandoraBox/ralink/packages/packages
src/gz pandorabox_routing http://downloads.openwrt.org.cn/PandoraBox/ralink/packages/routing
src/gz pandorabox_telephony http://downloads.openwrt.org.cn/PandoraBox/ralink/packages/telephony
#建议复制到这行保证文本完全&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
新版:  

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;src/gz 17.01_core http://139.219.239.216/pandorabox/targets/ralink/mt7621/packages
src/gz 17.01_base http://139.219.239.216/pandorabox/packages/mipsel_1004kc_dsp/base
src/gz 17.01_lafite http://139.219.239.216/pandorabox/packages/mipsel_1004kc_dsp/lafite
src/gz 17.01_luci http://139.219.239.216/pandorabox/packages/mipsel_1004kc_dsp/luci
src/gz 17.01_mtkdrv http://139.219.239.216/pandorabox/packages/mipsel_1004kc_dsp/mtkdrv
src/gz 17.01_packages http://139.219.239.216/pandorabox/packages/mipsel_1004kc_dsp/packages&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
----------  

LEDE的软件源:  

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;src/gz reboot_core http://downloads.lede-project.org/snapshots/targets/ramips/mt7621/packages
src/gz reboot_base http://downloads.lede-project.org/snapshots/packages/mipsel_24kc/base
src/gz reboot_luci http://downloads.lede-project.org/snapshots/packages/mipsel_24kc/luci
src/gz reboot_packages http://downloads.lede-project.org/snapshots/packages/mipsel_24kc/packages
src/gz reboot_routing http://downloads.lede-project.org/snapshots/packages/mipsel_24kc/routing
src/gz reboot_telephony http://downloads.lede-project.org/snapshots/packages/mipsel_24kc/telephony&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>对ubuntu的主题做了些修改</title><link>https://zyyme.com/%E5%AF%B9ubuntu%E7%9A%84%E4%B8%BB%E9%A2%98%E5%81%9A%E4%BA%86%E4%BA%9B%E4%BF%AE%E6%94%B9.html</link><guid isPermaLink="true">https://zyyme.com/%E5%AF%B9ubuntu%E7%9A%84%E4%B8%BB%E9%A2%98%E5%81%9A%E4%BA%86%E4%BA%9B%E4%BF%AE%E6%94%B9.html</guid><description>img-addf7589de048a6129b09b37acf1100d img-addf7589de048a6129b09b37acf1100d</description><pubDate>Sun, 26 Apr 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;http://ww2.sinaimg.cn/large/87717ff7gw1erirhf64lej21400p0tk4.jpg&quot; alt=&quot;img-addf7589de048a6129b09b37acf1100d&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://ww3.sinaimg.cn/large/87717ff7gw1erirhfxhlyj21400p013i.jpg&quot; alt=&quot;img-addf7589de048a6129b09b37acf1100d&quot; /&gt;&lt;/p&gt;
</content:encoded></item><item><title>觉得我的新头像如何</title><link>https://zyyme.com/%E8%A7%89%E5%BE%97%E6%88%91%E7%9A%84%E6%96%B0%E5%A4%B4%E5%83%8F%E5%A6%82%E4%BD%95.html</link><guid isPermaLink="true">https://zyyme.com/%E8%A7%89%E5%BE%97%E6%88%91%E7%9A%84%E6%96%B0%E5%A4%B4%E5%83%8F%E5%A6%82%E4%BD%95.html</guid><description>img-addf7589de048a6129b09b37acf1100d</description><pubDate>Mon, 20 Apr 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;/assets/uploads/2015/04/img-addf7589de048a6129b09b37acf1100d.jpg&quot; alt=&quot;img-addf7589de048a6129b09b37acf1100d&quot; /&gt;&lt;/p&gt;
</content:encoded></item><item><title>最近老要写作文</title><link>https://zyyme.com/%E6%9C%80%E8%BF%91%E8%80%81%E8%A6%81%E5%86%99%E4%BD%9C%E6%96%87.html</link><guid isPermaLink="true">https://zyyme.com/%E6%9C%80%E8%BF%91%E8%80%81%E8%A6%81%E5%86%99%E4%BD%9C%E6%96%87.html</guid><description>写作文。。。。写作文。。。。。哎。。。。下周一还要口语考试。。。。。</description><pubDate>Sun, 19 Apr 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;写作文。。。。写作文。。。。。哎。。。。下周一还要口语考试。。。。。&lt;/p&gt;
</content:encoded></item><item><title>突然发现貌似悲剧了</title><link>https://zyyme.com/%E7%AA%81%E7%84%B6%E5%8F%91%E7%8E%B0%E8%B2%8C%E4%BC%BC%E6%82%B2%E5%89%A7%E4%BA%86.html</link><guid isPermaLink="true">https://zyyme.com/%E7%AA%81%E7%84%B6%E5%8F%91%E7%8E%B0%E8%B2%8C%E4%BC%BC%E6%82%B2%E5%89%A7%E4%BA%86.html</guid><description>今天晚上一用电脑，突然发现纸飞机居然用不了了，这TM的我也是无语了啊。。。。。。。。所有服务器全部废掉，也不知道移不动在搞什么鬼。。。。。。。。</description><pubDate>Fri, 17 Apr 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;今天晚上一用电脑，突然发现纸飞机居然用不了了，这TM的我也是无语了啊。。。。。。。。所有服务器全部废掉，也不知道移不动在搞什么鬼。。。。。。。。&lt;/p&gt;
</content:encoded></item><item><title>渣画勿喷</title><link>https://zyyme.com/%E6%B8%A3%E7%94%BB%E5%8B%BF%E5%96%B7.html</link><guid isPermaLink="true">https://zyyme.com/%E6%B8%A3%E7%94%BB%E5%8B%BF%E5%96%B7.html</guid><pubDate>Mon, 30 Mar 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;http://ww3.sinaimg.cn/large/87717ff7jw1eqo0giolhdj216o1kwh28.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
</content:encoded></item><item><title>好吧，我终于找到卡首页的根源了</title><link>https://zyyme.com/%E5%A5%BD%E5%90%A7-%E6%88%91%E7%BB%88%E4%BA%8E%E6%89%BE%E5%88%B0%E5%8D%A1%E9%A6%96%E9%A1%B5%E7%9A%84%E6%A0%B9%E6%BA%90%E4%BA%86.html</link><guid isPermaLink="true">https://zyyme.com/%E5%A5%BD%E5%90%A7-%E6%88%91%E7%BB%88%E4%BA%8E%E6%89%BE%E5%88%B0%E5%8D%A1%E9%A6%96%E9%A1%B5%E7%9A%84%E6%A0%B9%E6%BA%90%E4%BA%86.html</guid><description>2015-03-23 21:56:54 的屏幕截图2015-03-23 21:57:19 的屏幕截图 两行代码卡死世界。。。。已经更正。</description><pubDate>Mon, 23 Mar 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/assets/uploads/2015/03/2015-03-23-215654-%E7%9A%84%E5%B1%8F%E5%B9%95%E6%88%AA%E5%9B%BE.png&quot; alt=&quot;2015-03-23 21:56:54 的屏幕截图&quot; /&gt;&lt;img src=&quot;/assets/uploads/2015/03/2015-03-23-215719-%E7%9A%84%E5%B1%8F%E5%B9%95%E6%88%AA%E5%9B%BE.png&quot; alt=&quot;2015-03-23 21:57:19 的屏幕截图&quot; /&gt;&lt;/p&gt;
&lt;p&gt;两行代码卡死世界。。。。已经更正。&lt;/p&gt;
</content:encoded></item><item><title>卡谷歌字体的问题基本解决了</title><link>https://zyyme.com/%E5%8D%A1%E8%B0%B7%E6%AD%8C%E5%AD%97%E4%BD%93%E7%9A%84%E9%97%AE%E9%A2%98%E5%9F%BA%E6%9C%AC%E8%A7%A3%E5%86%B3%E4%BA%86.html</link><guid isPermaLink="true">https://zyyme.com/%E5%8D%A1%E8%B0%B7%E6%AD%8C%E5%AD%97%E4%BD%93%E7%9A%84%E9%97%AE%E9%A2%98%E5%9F%BA%E6%9C%AC%E8%A7%A3%E5%86%B3%E4%BA%86.html</guid><description>如题，不过如果你使用的是火狐。。。。你就悲剧了。。。。。。暂时就是这样＠＠</description><pubDate>Sun, 15 Mar 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;如题，不过如果你使用的是火狐。。。。你就悲剧了。。。。。。暂时就是这样＠_＠&lt;/p&gt;
</content:encoded></item><item><title>谷歌字体卡。。。。。。</title><link>https://zyyme.com/%E8%B0%B7%E6%AD%8C%E5%AD%97%E4%BD%93%E5%8D%A1.html</link><guid isPermaLink="true">https://zyyme.com/%E8%B0%B7%E6%AD%8C%E5%AD%97%E4%BD%93%E5%8D%A1.html</guid><description>屏幕截图(3)</description><pubDate>Sat, 14 Mar 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;/assets/uploads/2015/03/%E5%B1%8F%E5%B9%95%E6%88%AA%E5%9B%BE3.png&quot; alt=&quot;屏幕截图(3)&quot; /&gt;&lt;/p&gt;
</content:encoded></item><item><title>已经安装了新的评论框</title><link>https://zyyme.com/%E5%B7%B2%E7%BB%8F%E5%AE%89%E8%A3%85%E4%BA%86%E6%96%B0%E7%9A%84%E8%AF%84%E8%AE%BA%E6%A1%86.html</link><guid isPermaLink="true">https://zyyme.com/%E5%B7%B2%E7%BB%8F%E5%AE%89%E8%A3%85%E4%BA%86%E6%96%B0%E7%9A%84%E8%AF%84%E8%AE%BA%E6%A1%86.html</guid><description>所有之前所有评论全部隐藏了，聊天工具已经可以正常运行，大家可以用社交账户来登陆了，也全部可以更换头像了未标题-9</description><pubDate>Sat, 07 Mar 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;所有之前所有评论全部隐藏了，聊天工具已经可以正常运行，大家可以用社交账户来登陆了，也全部可以更换头像了&lt;img src=&quot;/assets/uploads/2015/02/%E6%9C%AA%E6%A0%87%E9%A2%98-91.png&quot; alt=&quot;未标题-9&quot; /&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
</content:encoded></item><item><title>大家元宵快乐</title><link>https://zyyme.com/%E5%A4%A7%E5%AE%B6%E5%85%83%E5%AE%B5%E5%BF%AB%E4%B9%90.html</link><guid isPermaLink="true">https://zyyme.com/%E5%A4%A7%E5%AE%B6%E5%85%83%E5%AE%B5%E5%BF%AB%E4%B9%90.html</guid><description>如题，今天晚上没有时间，明天晚上将解决聊天的问题，到时就可以发私信聊天啦</description><pubDate>Thu, 05 Mar 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;如题，今天晚上没有时间，明天晚上将解决聊天的问题，到时就可以发私信聊天啦&lt;/p&gt;
</content:encoded></item><item><title>早上把速写本最后一页给填了</title><link>https://zyyme.com/%E6%97%A9%E4%B8%8A%E6%8A%8A%E9%80%9F%E5%86%99%E6%9C%AC%E6%9C%80%E5%90%8E%E4%B8%80%E9%A1%B5%E7%BB%99%E5%A1%AB%E4%BA%86.html</link><guid isPermaLink="true">https://zyyme.com/%E6%97%A9%E4%B8%8A%E6%8A%8A%E9%80%9F%E5%86%99%E6%9C%AC%E6%9C%80%E5%90%8E%E4%B8%80%E9%A1%B5%E7%BB%99%E5%A1%AB%E4%BA%86.html</guid><description>51688474</description><pubDate>Sat, 28 Feb 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;/assets/uploads/2015/02/51688474.jpg&quot; alt=&quot;51688474&quot; /&gt;&lt;/p&gt;
</content:encoded></item><item><title>欢迎~</title><link>https://zyyme.com/%E6%AC%A2%E8%BF%8E.html</link><guid isPermaLink="true">https://zyyme.com/%E6%AC%A2%E8%BF%8E.html</guid><description>从现在开始，郑羊羊咩的窝正式转移到 http://zanjie1999.16mb.com 欢迎围观，有应必回 留言板地址: http://zanjie1999.16mb.com/留言板/</description><pubDate>Sat, 28 Feb 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;从现在开始，郑羊羊咩的窝正式转移到 http://zanjie1999.16mb.com 欢迎围观，有应必回&lt;/p&gt;
&lt;p&gt;留言板地址:   &amp;lt;a title=&quot;http://zanjie1999.16mb.com/留言板/&quot; href=&quot;http://zanjie1999.16mb.com/留言板/&quot; target=&quot;_blank&quot;&amp;gt;http://zanjie1999.16mb.com/留言板/&amp;lt;/a&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>我的ubuntu</title><link>https://zyyme.com/%E6%88%91%E7%9A%84ubuntu.html</link><guid isPermaLink="true">https://zyyme.com/%E6%88%91%E7%9A%84ubuntu.html</guid><description>2015-02-22 20:35:04 的屏幕截图 2015-02-22 20:35:19 的屏幕截图</description><pubDate>Sun, 22 Feb 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;/assets/uploads/2015/02/2015-02-22-203504-%E7%9A%84%E5%B1%8F%E5%B9%95%E6%88%AA%E5%9B%BE.png&quot; alt=&quot;2015-02-22 20:35:04 的屏幕截图&quot; /&gt; &lt;img src=&quot;/assets/uploads/2015/02/2015-02-22-203519-%E7%9A%84%E5%B1%8F%E5%B9%95%E6%88%AA%E5%9B%BE.png&quot; alt=&quot;2015-02-22 20:35:19 的屏幕截图&quot; /&gt;&lt;/p&gt;
</content:encoded></item><item><title>祝大家新年快乐</title><link>https://zyyme.com/%E7%A5%9D%E5%A4%A7%E5%AE%B6%E6%96%B0%E5%B9%B4%E5%BF%AB%E4%B9%90.html</link><guid isPermaLink="true">https://zyyme.com/%E7%A5%9D%E5%A4%A7%E5%AE%B6%E6%96%B0%E5%B9%B4%E5%BF%AB%E4%B9%90.html</guid><description>如题</description><pubDate>Wed, 18 Feb 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;如题&lt;/p&gt;
</content:encoded></item><item><title>关于搜索引擎收录的问题</title><link>https://zyyme.com/%E5%85%B3%E4%BA%8E%E6%90%9C%E7%B4%A2%E5%BC%95%E6%93%8E%E6%94%B6%E5%BD%95%E7%9A%84%E9%97%AE%E9%A2%98.html</link><guid isPermaLink="true">https://zyyme.com/%E5%85%B3%E4%BA%8E%E6%90%9C%E7%B4%A2%E5%BC%95%E6%93%8E%E6%94%B6%E5%BD%95%E7%9A%84%E9%97%AE%E9%A2%98.html</guid><description>在2015/2/16下午2:22止 已经收录本站的迎请有：谷歌，必应，雅虎 已经提交但未收录的有：360，搜狗，百度 谷歌收录是我提交的，必应和雅虎是自动的，就不明白百度提交那么久还没收录。。。。。。。 ⊙︿⊙ (＞﹏＜)</description><pubDate>Mon, 16 Feb 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;在2015/2/16下午2:22止&lt;/p&gt;
&lt;p&gt;已经收录本站的迎请有：谷歌，必应，雅虎&lt;/p&gt;
&lt;p&gt;已经提交但未收录的有：360，搜狗，百度&lt;/p&gt;
&lt;p&gt;谷歌收录是我提交的，必应和雅虎是自动的，就不明白百度提交那么久还没收录。。。。。。。&lt;br /&gt;
&amp;lt;h1&amp;gt;⊙︿⊙   (＞﹏＜)&amp;lt;/h1&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>抱歉，谷歌的字体服务器还在卡速度</title><link>https://zyyme.com/%E6%8A%B1%E6%AD%89-%E8%B0%B7%E6%AD%8C%E7%9A%84%E5%AD%97%E4%BD%93%E6%9C%8D%E5%8A%A1%E5%99%A8%E8%BF%98%E5%9C%A8%E5%8D%A1%E9%80%9F%E5%BA%A6.html</link><guid isPermaLink="true">https://zyyme.com/%E6%8A%B1%E6%AD%89-%E8%B0%B7%E6%AD%8C%E7%9A%84%E5%AD%97%E4%BD%93%E6%9C%8D%E5%8A%A1%E5%99%A8%E8%BF%98%E5%9C%A8%E5%8D%A1%E9%80%9F%E5%BA%A6.html</guid><description>如题，谷歌在天朝上不了，目前进入网站自动链接谷歌字体服务器卡住的问题还是无法解决，在天朝真是上不了谷歌啊。。。。所有是字体服务器已经全部替换为360的，但是进入时还是会无缘无故链接谷歌的字体服务器导致卡访问速度。。。。≧﹏≦</description><pubDate>Sun, 15 Feb 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;如题，谷歌在天朝上不了，目前进入网站自动链接谷歌字体服务器卡住的问题还是无法解决，在天朝真是上不了谷歌啊。。。。所有是字体服务器已经全部替换为360的，但是进入时还是会无缘无故链接谷歌的字体服务器导致卡访问速度。。。。≧﹏≦&lt;/p&gt;
</content:encoded></item><item><title>欢迎大家到留言板留言</title><link>https://zyyme.com/%E6%AC%A2%E8%BF%8E%E5%A4%A7%E5%AE%B6%E5%88%B0%E7%95%99%E8%A8%80%E6%9D%BF%E7%95%99%E8%A8%80.html</link><guid isPermaLink="true">https://zyyme.com/%E6%AC%A2%E8%BF%8E%E5%A4%A7%E5%AE%B6%E5%88%B0%E7%95%99%E8%A8%80%E6%9D%BF%E7%95%99%E8%A8%80.html</guid><description>http://zanji1999.esy.es/wordpress/留言板/</description><pubDate>Sun, 15 Feb 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;http://zanji1999.esy.es/wordpress/留言板/&lt;/p&gt;
</content:encoded></item><item><title>我的个人主页已经更换了新的界面啦</title><link>https://zyyme.com/%E6%88%91%E7%9A%84%E4%B8%AA%E4%BA%BA%E4%B8%BB%E9%A1%B5%E5%B7%B2%E7%BB%8F%E6%9B%B4%E6%8D%A2%E4%BA%86%E6%96%B0%E7%9A%84%E7%95%8C%E9%9D%A2%E5%95%A6.html</link><guid isPermaLink="true">https://zyyme.com/%E6%88%91%E7%9A%84%E4%B8%AA%E4%BA%BA%E4%B8%BB%E9%A1%B5%E5%B7%B2%E7%BB%8F%E6%9B%B4%E6%8D%A2%E4%BA%86%E6%96%B0%E7%9A%84%E7%95%8C%E9%9D%A2%E5%95%A6.html</guid><description>新的界面目前已经调试完毕，360那边的危险提示也已经提交了申请，谷歌已经收录，百度还在等。目前就是这样啦</description><pubDate>Sat, 14 Feb 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;新的界面目前已经调试完毕，360那边的危险提示也已经提交了申请，谷歌已经收录，百度还在等。目前就是这样啦~&lt;/p&gt;
</content:encoded></item><item><title>《羊年喜羊羊》影评</title><link>https://zyyme.com/%E7%BE%8A%E5%B9%B4%E5%96%9C%E7%BE%8A%E7%BE%8A-%E5%BD%B1%E8%AF%84.html</link><guid isPermaLink="true">https://zyyme.com/%E7%BE%8A%E5%B9%B4%E5%96%9C%E7%BE%8A%E7%BE%8A-%E5%BD%B1%E8%AF%84.html</guid><description>之前我在官方的抽奖活动得到电影票一张，所以中午去看了这场电影，毕竟是十周年吧，肯定会有所不同的。按照惯例，英雄人物当然是喜羊羊担当的，但是这次有点出乎我的意料，懒羊羊成为了屠龙勇士。发现羊x3的配音是放在了片头曲和喜羊羊懒羊羊小时候，以至于懒羊羊小时候的声音和喜羊羊小时候的声音是一样的==，这属于bug么。。。。 ---------- 其实事情是这样发生的：</description><pubDate>Sun, 01 Feb 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;之前我在官方的抽奖活动得到电影票一张，所以中午去看了这场电影，毕竟是十周年吧，肯定会有所不同的。按照惯例，英雄人物当然是喜羊羊担当的，但是这次有点出乎我的意料，懒羊羊成为了屠龙勇士。发现羊x3的配音是放在了片头曲和喜羊羊懒羊羊小时候，以至于懒羊羊小时候的声音和喜羊羊小时候的声音是一样的=_=，这属于bug么。。。。&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;其实事情是这样发生的：&lt;/p&gt;
&lt;p&gt;在很久以前，喜羊羊和懒羊羊去玩，喜羊羊不小心掉下悬崖，这时，懒羊羊抓住了喜羊羊的手，然后喜羊羊就手拿了个盖子绑上草绳做了一个勇士奖牌给懒羊羊。随着时间的推移，这事情已经被喜羊羊忘却，但是喜羊羊当时不知道的盖子被懒羊羊收藏着，直到有一天掉出来被喜羊羊发现，懒羊羊觉得喜羊羊老是做英雄，老是抢他的功劳，于是他想证明给喜羊羊看。在这过程中，他们不小心穿越了远古时代，来到了一个有着恶龙的时代，由此打败恶龙的故事就开始了。。。。&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;PS：不写了，省的有人说我透剧。。。。。&lt;/p&gt;
</content:encoded></item><item><title>总算是开始放假了</title><link>https://zyyme.com/%E6%80%BB%E7%AE%97%E6%98%AF%E5%BC%80%E5%A7%8B%E6%94%BE%E5%81%87%E4%BA%86.html</link><guid isPermaLink="true">https://zyyme.com/%E6%80%BB%E7%AE%97%E6%98%AF%E5%BC%80%E5%A7%8B%E6%94%BE%E5%81%87%E4%BA%86.html</guid><description>从2月1日放到3月1日，其中作业无限。。。。。</description><pubDate>Sat, 31 Jan 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;从2月1日放到3月1日，其中作业无限。。。。。&lt;/p&gt;
</content:encoded></item><item><title>2月1号才放假啊</title><link>https://zyyme.com/2%E6%9C%881%E5%8F%B7%E6%89%8D%E6%94%BE%E5%81%87%E5%95%8A.html</link><guid isPermaLink="true">https://zyyme.com/2%E6%9C%881%E5%8F%B7%E6%89%8D%E6%94%BE%E5%81%87%E5%95%8A.html</guid><description>如题〒〒</description><pubDate>Tue, 27 Jan 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;如题〒_〒&lt;/p&gt;
</content:encoded></item><item><title>可怜的腊八节，没有腊八粥吃</title><link>https://zyyme.com/%E5%8F%AF%E6%80%9C%E7%9A%84%E8%85%8A%E5%85%AB%E8%8A%82-%E6%B2%A1%E6%9C%89%E8%85%8A%E5%85%AB%E7%B2%A5%E5%90%83.html</link><guid isPermaLink="true">https://zyyme.com/%E5%8F%AF%E6%80%9C%E7%9A%84%E8%85%8A%E5%85%AB%E8%8A%82-%E6%B2%A1%E6%9C%89%E8%85%8A%E5%85%AB%E7%B2%A5%E5%90%83.html</guid><description>腊八节已被无视，如果不是看到学校电脑360开机小助手←←。。。。还不知道原来今天是。。。。</description><pubDate>Tue, 27 Jan 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;腊八节已被无视，如果不是看到学校电脑360开机小助手←_←。。。。还不知道原来今天是。。。。&lt;/p&gt;
</content:encoded></item><item><title>欢迎新管理员zjxgjp加入</title><link>https://zyyme.com/%E6%AC%A2%E8%BF%8E%E6%96%B0%E7%AE%A1%E7%90%86%E5%91%98zjxgjp%E5%8A%A0%E5%85%A5.html</link><guid isPermaLink="true">https://zyyme.com/%E6%AC%A2%E8%BF%8E%E6%96%B0%E7%AE%A1%E7%90%86%E5%91%98zjxgjp%E5%8A%A0%E5%85%A5.html</guid><description>他是这个网站的第二个管理员</description><pubDate>Sun, 25 Jan 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;他是这个网站的第二个管理员&lt;/p&gt;
</content:encoded></item><item><title>BIOS自检喇叭诊断</title><link>https://zyyme.com/bios%E8%87%AA%E6%A3%80%E5%96%87%E5%8F%AD%E8%AF%8A%E6%96%AD.html</link><guid isPermaLink="true">https://zyyme.com/bios%E8%87%AA%E6%A3%80%E5%96%87%E5%8F%AD%E8%AF%8A%E6%96%AD.html</guid><description>一、AwardBIOS 1短：系统正常启动。恭喜，你的机器没有任何问题。 2短：常规错误，请进入CMOSSetup，重新设置不正确的选项。 1长1短：RAM或主板出错。换一条内存试试，若还是不行，只好更换主板。 1长2短：显示器或显示卡错误。 1长3短：键盘控制器错误。检查主板。 1长9短：主板FlashRAM或EPROM错误，BIOS损坏。换块FlashR</description><pubDate>Sat, 24 Jan 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&amp;lt;p style=&quot;text-align: justify;&quot;&amp;gt;一、AwardBIOS&lt;br /&gt;
1短：系统正常启动。恭喜，你的机器没有任何问题。&lt;br /&gt;
2短：常规错误，请进入CMOSSetup，重新设置不正确的选项。&lt;br /&gt;
1长1短：RAM或主板出错。换一条内存试试，若还是不行，只好更换主板。&lt;br /&gt;
1长2短：显示器或显示卡错误。&lt;br /&gt;
1长3短：键盘控制器错误。检查主板。&lt;br /&gt;
1长9短：主板FlashRAM或EPROM错误，BIOS损坏。换块FlashRAM试试。&lt;br /&gt;
不断地响（有间歇的长声）：内存条未插紧或损坏。重插内存条，若还是不行，只有更换一条内存。&lt;br /&gt;
不停地响：电源、显示器未和显示卡连接好。检查一下所有的插头。&lt;br /&gt;
重复短响：电源有问题。&lt;br /&gt;
无声音无显示：电源有问题。&lt;br /&gt;
二、AMIBIOS&lt;br /&gt;
1短：内存刷新失败。更换内存条。&lt;br /&gt;
2短：内存ECC校验错误。在CMOSSetup中将内存关于ECC校验的选项设为Disabled就可以解决，不过最根本的解决办法还是更换一条内存。&lt;br /&gt;
3短：系统基本内存（第1个64KB）检查失败。换内存。&lt;br /&gt;
4短：系统时钟出错。&lt;br /&gt;
5短：中央处理器（CPU）错误。&lt;br /&gt;
6短：键盘控制器错误。&lt;br /&gt;
7短：系统实模式错误，不能切换到保护模式。&lt;br /&gt;
8短：显示内存错误。显示内存有问题，更换显卡试试。&lt;br /&gt;
9短：ROMBIOS检验错误。&lt;br /&gt;
1长3短：内存错误。内存损坏，更换即可。&lt;br /&gt;
1长8短：显示测试错误。显示器数据线没插好或显示卡没插牢。&amp;lt;/p&amp;gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt; &lt;/p&gt;
</content:encoded></item><item><title>大家好~</title><link>https://zyyme.com/hello-world.html</link><guid isPermaLink="true">https://zyyme.com/hello-world.html</guid><description>欢迎大家来到这里，这是我的新窝，这是我第一次建站</description><pubDate>Sat, 24 Jan 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;欢迎大家来到这里，这是我的新窝，这是我第一次建站&lt;/p&gt;
</content:encoded></item><item><title>如何开启4.2以上安卓的U盘模式</title><link>https://zyyme.com/%E5%A6%82%E4%BD%95%E5%BC%80%E5%90%AF4-2%E4%BB%A5%E4%B8%8A%E5%AE%89%E5%8D%93%E7%9A%84u%E7%9B%98%E6%A8%A1%E5%BC%8F.html</link><guid isPermaLink="true">https://zyyme.com/%E5%A6%82%E4%BD%95%E5%BC%80%E5%90%AF4-2%E4%BB%A5%E4%B8%8A%E5%AE%89%E5%8D%93%E7%9A%84u%E7%9B%98%E6%A8%A1%E5%BC%8F.html</guid><description>在/data/poroperty中的persit.sys.usb.config文件中加入这样一行: massstorge</description><pubDate>Sat, 24 Jan 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&amp;lt;h3&amp;gt;在/data/poroperty中的persit.sys.usb.config文件中加入这样一行:&amp;lt;/h3&amp;gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;p style=&quot;padding-left: 30px;&quot;&amp;gt;mass_storge&amp;lt;/p&amp;gt;
&amp;lt;/blockquote&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>大家都来注册用户畅所欲言吧！</title><link>https://zyyme.com/%E5%A4%A7%E5%AE%B6%E9%83%BD%E6%9D%A5%E6%B3%A8%E5%86%8C%E7%94%A8%E6%88%B7%E7%95%85%E6%89%80%E6%AC%B2%E8%A8%80%E5%90%A7.html</link><guid isPermaLink="true">https://zyyme.com/%E5%A4%A7%E5%AE%B6%E9%83%BD%E6%9D%A5%E6%B3%A8%E5%86%8C%E7%94%A8%E6%88%B7%E7%95%85%E6%89%80%E6%AC%B2%E8%A8%80%E5%90%A7.html</guid><description>大家可以自行左下角注册，服务器比较慢，请大家耐心等待</description><pubDate>Sat, 24 Jan 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;大家可以自行左下角注册，服务器比较慢，请大家耐心等待&lt;/p&gt;
</content:encoded></item><item><title>咩咩的照片表盘</title><link>https://zyyme.com/meuiharu-miband7-watchface.html</link><guid isPermaLink="true">https://zyyme.com/meuiharu-miband7-watchface.html</guid><description>// 咩咩的初春饰利 b站郑羊羊 zyyme.com 20220613 v11.4 try { (() = { var e = $$hmAppManager$$.currentApp; var a = e.current, { px: } = (new DeviceRuntimeCore.WidgetFactory(new DeviceRuntimeCore</description><pubDate>Wed, 25 May 2005 00:00:00 GMT</pubDate><content:encoded>&lt;pre&gt;&lt;code&gt;// 咩咩的初春饰利 b站郑羊羊 zyyme.com 20220613 v11.4
try {
  (() =&amp;gt; {
    var e = __$$hmAppManager$$__.currentApp;
    var a = e.current, { px: _ } = (new DeviceRuntimeCore.WidgetFactory(new DeviceRuntimeCore.HmDomApi(e, a)), e.app.__globals__);
    try {
      (() =&amp;gt; {
        var e = __$$hmAppManager$$__.currentApp, a = e.current;
        new DeviceRuntimeCore.WidgetFactory(new DeviceRuntimeCore.HmDomApi(e, a), &quot;drink&quot;);
        console.log(&quot;-----\x3e&amp;gt;&amp;gt;current&quot;), console.log(__$$hmAppManager$$__.currentApp.pid), console.log(__$$hmAppManager$$__.currentApp.current);
        // const vibrate = hmSensor.createSensor(hmSensor.id.VIBRATE);
        const time = hmSensor.createSensor(hmSensor.id.TIME);
        const _ = [], t = [], m = [], s = [], h = [], n = [], o = [], aodt = [];
        for (i = 1; i &amp;lt; 8; i++) _.push(`images/weektc/${i}.png`), t.push(`images/weeksc/${i}.png`), m.push(`images/weeken/${i}.png`);
        for (i = 1; i &amp;lt;= 10; i++) o.push(`images/batlevel/${i}.png`);
        for (i = 0; i &amp;lt; 10; i++) s.push(`images/date/${i}.png`), h.push(`images/bat/${i}.png`), n.push(`images/time/${i}.png`), aodt.push(`images/aodt/${i}.png`);
        let dddd = {
          x: 132,
          y: 74,
          week_en: m,
          week_tc: _,
          week_sc: t,
          show_level: hmUI.show_level.ONLY_NORMAL
        },
        hhmmss = {
          hour_zero: true,
          hour_startX: 22,
          hour_startY: 74,
          hour_array: n,
          hour_space: 7,
          // hour_align: hmUI.align.CENTER_H,
          hour_align: hmUI.align.RIGHT,
          minute_zero: true,
          minute_startX: 22,
          minute_startY: 149,
          minute_array: n,
          minute_space: 7,
          minute_align: hmUI.align.LEFT,
          am_x: 132,
          am_y: 142,
          am_sc_path: &quot;images/ampm/amsc.png&quot;,
          am_tc_path: &quot;images/ampm/amsc.png&quot;,
          am_en_path: &quot;images/ampm/am.png&quot;,
          pm_x: 132,
          pm_y: 142,
          pm_sc_path: &quot;images/ampm/pmsc.png&quot;,
          pm_tc_path: &quot;images/ampm/pmsc.png&quot;,
          pm_en_path: &quot;images/ampm/pm.png&quot;,
          show_level: hmUI.show_level.ONLY_NORMAL,
          second_zero: true,
          second_startX: 132,
          second_startY: 187,
          second_array: s,
          second_space: 0,
          second_align: hmUI.align.LEFT
        },
        dd = {
          day_startX: 132,
          day_startY: 107,
          day_align: hmUI.align.LEFT,
          day_zero: 1,
          day_sc_array: s,
          day_tc_array: s,
          day_en_array: s,
          day_space: 2,
          show_level: hmUI.show_level.ONLY_NORMAL
        },
        c = {
          x: 64,
          y: 45,
          type: hmUI.system_status.LOCK,
          src: &quot;images/state/lock.png&quot;,
          show_level: hmUI.show_level.ONLY_NORMAL
        },
        I = {
          x: 40,
          y: 45,
          type: hmUI.system_status.DISTURB,
          src: &quot;images/state/disturb.png&quot;,
          show_level: hmUI.show_level.ONLY_NORMAL
        },
        bt = {
          x: 89,
          y: 45,
          type: hmUI.system_status.DISCONNECT,
          src: &quot;images/state/bluetooth.png&quot;,
          show_level: hmUI.show_level.ONLY_NORMAL
        },
        bs = {
          x: 25,
          y: 408,
          w: 140,
          type: hmUI.data_type.STEP,
          font_array: s,
          h_space: 2,
          align_h: hmUI.align.CENTER_H,
          show_level: hmUI.show_level.ONLY_NORMAL,
          icon: &quot;images/stepicon.png&quot;,
          invalid_image: &quot;images/datenull.png&quot;
        },
        xl = {
          x: 55,
          y: 446,
          w: 80,
          type: hmUI.data_type.HEART,
          font_array: s,
          h_space: 2,
          align_h: hmUI.align.CENTER_H,
          show_level: hmUI.show_level.ONLY_NORMAL,
          icon: &quot;images/hearticon.png&quot;,
          invalid_image: &quot;images/null.png&quot;
        },
        batlevel = {
          x: 89,
          y: 20,
          w: 35,
          type: hmUI.data_type.BATTERY,
          font_array: h,
          h_space: 1,
          align_h: hmUI.align.CENTER_H,
          unit_sc: &quot;images/symbol.png&quot;,
          unit_tc: &quot;images/symbol.png&quot;,
          unit_en: &quot;images/symbol.png&quot;,
          show_level: hmUI.show_level.ONLY_NORMAL
        },
        batlogo = {
          x: 70,
          y: 20,
          w: 16,
          h: 16,
          type: hmUI.data_type.BATTERY,
          image_array: o,
          image_length: o.length,
          show_level: hmUI.show_level.ONLY_NORMAL
        };

        var antiTouch, meCalTimeout = 0, meAuthTimeout = 0;
        DeviceRuntimeCore.HmLogger.getLogger(&quot;sparkle&quot;);
        a.module = DeviceRuntimeCore.WatchFace({
          init_view() {
          try {
            // hmUI.createWidget(hmUI.widget.IMG, {x: 0, y: 0, src: &quot;images/bg.png&quot;, show_level: hmUI.show_level.ONLY_NORMAL | hmUI.show_level.ONLY_AOD});
            hmUI.createWidget(hmUI.widget.IMG, {x: 0, y: 0, src: &quot;images/bg.png&quot;, show_level: hmUI.show_level.ONLY_NORMAL});
            hmUI.createWidget(hmUI.widget.CIRCLE, {
              center_x: 96,
              center_y: 245,
              radius: 255,
              color: 0x000000,
              alpha: 30,
              show_level: hmUI.show_level.ONLY_NORMAL
            });

            // 时间部分
            let meTime = hmUI.createWidget(hmUI.widget.GROUP, {
              x: 0,
              y: 0,
              w: 192,
              h: 490
            });
            meTime.createWidget(hmUI.widget.IMG_TIME, hhmmss);
            meTime.createWidget(hmUI.widget.IMG_WEEK, dddd);
            meTime.createWidget(hmUI.widget.IMG_DATE, dd);
            meTime.createWidget(hmUI.widget.IMG_LEVEL, batlogo);
            meTime.createWidget(hmUI.widget.TEXT_IMG, batlevel);
            meTime.createWidget(hmUI.widget.IMG_STATUS, c);
            meTime.createWidget(hmUI.widget.IMG_STATUS, bt);
            meTime.createWidget(hmUI.widget.IMG_STATUS, I);
            meTime.createWidget(hmUI.widget.TEXT_IMG, bs);
            meTime.createWidget(hmUI.widget.TEXT_IMG, xl);

            // aod 显示越少越省电
            meTime.createWidget(hmUI.widget.IMG_TIME, {
              hour_zero: 1,
              hour_startX: 15,
              hour_startY: 120,
              hour_array: aodt,
              hour_space: 15,
              hour_align: hmUI.align.LEFT,
              minute_zero: 1,
              minute_startX: 15,
              minute_startY: 280,
              minute_array: aodt,
              minute_space: 15,
              minute_align: hmUI.align.LEFT,
              show_level: hmUI.show_level.ONLY_AOD
          })

            // 为什么只有圆形才能半透明而矩形不行
            meTime.createWidget(hmUI.widget.CIRCLE, {
              center_x: 96,
              center_y: 245,
              radius: 264,
              color: 0x000000,
              alpha: 128,
              show_level: hmUI.show_level.ONLY_AOD
            });
            // -10亮度遮罩
            const mask10 = meTime.createWidget(hmUI.widget.CIRCLE, {
              center_x: 96,
              center_y: 245,
              radius: 264,
              color: 0x000000,
              alpha: 96,
              show_level: hmUI.show_level.ONLY_NORMAL
            });

            // 直接绑定控件点击总有奇奇怪怪的bug
            let calSw = meTime.createWidget(hmUI.widget.TEXT, {
              x: 132,
              y: 78,
              w: 40,
              h: 55,
            });
            let blP = meTime.createWidget(hmUI.widget.TEXT, {
              x: 58,
              y: 408,
              w: 80,
              h: 31,
            });
            let blC = meTime.createWidget(hmUI.widget.TEXT, {
              x: 58,
              y: 440,
              w: 80,
              h: 31,
            });
            let authSw = meTime.createWidget(hmUI.widget.TEXT, {
              x: 132,
              y: 162,
              w: 40,
              h: 55,
            });
            let randSw = meTime.createWidget(hmUI.widget.TEXT, {
              x: 48,
              y: 0,
              w: 96,
              h: 50,
            });
            let meImgSw = meTime.createWidget(hmUI.widget.TEXT, {
              x: 25,
              y: 240,
              w: 142,
              h: 142,
            });

            // 亮度调节监听
            var nowBl = hmFS.SysProGetInt(&apos;meNowBl&apos;), setBlH = hmFS.SysProGetInt(&apos;meSetBlH&apos;);
            if (isNaN(nowBl)) nowBl = hmSetting.getBrightness();
            if (nowBl &amp;gt; -1) mask10.setProperty(hmUI.prop.VISIBLE, false);
            function setBl(bl, t) {
              nowBl = bl, setBlH = time.hour;
              if (bl &amp;lt; 0) {
                hmSetting.setBrightness(0);
                mask10.setProperty(hmUI.prop.VISIBLE, true);
              } else {
                mask10.setProperty(hmUI.prop.VISIBLE, false);
                hmSetting.setBrightness(nowBl);
              }
              hmFS.SysProSetInt(&apos;meNowBl&apos;, nowBl);
              hmFS.SysProSetInt(&apos;meSetBlH&apos;, setBlH);
              if (t) hmUI.showToast({ text: &apos;亮度 &apos; + nowBl + &apos;%&apos; });
            }
            blP.addEventListener(hmUI.event.CLICK_UP, function (info) {
              if (antiTouch) return;
              setBl(nowBl + (nowBl &amp;gt; 39 ? 20 : 10) &amp;gt; 100 ? 100 : nowBl + (nowBl &amp;gt; 39 ? 20 : 10), true);
            });
            blC.addEventListener(hmUI.event.CLICK_UP, function (info) {
              if (antiTouch) return;
              setBl(nowBl - (nowBl &amp;gt; 40 ? 20 : 10) &amp;lt; -10 ? -10 : nowBl - (nowBl &amp;gt; 40 ? 20 : 10), true);
            });

            randSw.addEventListener(hmUI.event.CLICK_UP, function (info) {
              hmUI.showToast({ text: &apos;骰子 &apos; + Math.floor(Math.random() * 6 + 1) });
            });

            
            // 日历部分 6.0开始已重新改版
            var year, month, week, meCalStartSun;
            // assets/meCalStartSun 存在每周从周日开始
            meCalStartSun = !hmFS.stat_asset(&quot;meCalStartSun&quot;)[1];

            calSw.addEventListener(hmUI.event.CLICK_UP, function (info) {
              calSwitch(true);
              if (time.year != year || time.month != month) {
                year = time.year, month = time.month;
                week = new Date(year, month - 1, 1).getDay();
                renderCal();
              }
            });

            const mask = hmUI.createWidget(hmUI.widget.CIRCLE, {
              center_x: 96,
              center_y: 245,
              radius: 264,
              color: 0x000000,
              alpha: 128
            });

            let meCal = hmUI.createWidget(hmUI.widget.GROUP, {
              x: 0,
              y: 0,
              w: 192,
              h: 490
            });
            function calSwitch(b) {
              meTime.setProperty(hmUI.prop.VISIBLE, !b);
              meCal.setProperty(hmUI.prop.VISIBLE, b);
              mask.setProperty(hmUI.prop.VISIBLE, b);
              if (b) {
                hmSetting.setBrightScreen(15)
              } else {
                meCalTimeout = 0;
                hmSetting.setBrightScreenCancel()
              }
            };

            let meCalT = meCal.createWidget(hmUI.widget.TEXT, {
              x: 2,
              y: 70,
              w: 188,
              h: 350,
              color: &quot;0xffffff&quot;,
              text_size: 18,
              text_style: hmUI.text_style.WRAP,
              text: &apos;&apos;,
            });
            meCalT.addEventListener(hmUI.event.CLICK_UP, function (info) {
              if (antiTouch) return;
              calSwitch(false);
            });

            let meCalYmT = meCal.createWidget(hmUI.widget.TEXT, {
              x: 0,
              y: 90,
              w: 192,
              h: 40,
              color: &quot;0xffffff&quot;,
              text_size: 30,
              align_h: hmUI.align.CENTER_H,
            });
            meCalYmT.addEventListener(hmUI.event.CLICK_UP, function (info) {
              if (month &amp;lt; 0) {
                month = month * -1;
                renderCal();
              } else {
                month = month * -1;
                const diskInfo = hmSetting.getDiskInfo()
                meCalYmT.setProperty(hmUI.prop.MORE, { text: &apos;磁盘信息&apos; })
                let str = &apos;\
\
\
总空间：\
&apos; + (Math.round(diskInfo.total / 1024 / 1024 * 1000) / 1000).toFixed(3) +
                  &apos; MB\
可用空间：\
&apos; + (Math.round(diskInfo.free / 1024 / 1024 * 1000) / 1000).toFixed(3) +
                  &apos; MB\
JS应用已用空间：\
&apos; + (Math.round(diskInfo.app / 1024 / 1024 * 1000) / 1000).toFixed(3) +
                  &apos; MB\
表盘已用空间：\
&apos; + (Math.round(diskInfo.watchface / 1024 / 1024 * 1000) / 1000).toFixed(3) +
                  &apos; MB\
系统已用空间：\
&apos; + (Math.round(diskInfo.system / 1024 / 1024 * 1000) / 1000).toFixed(3)  +
                  &apos; MB&apos;
                meCalT.setProperty(hmUI.prop.MORE, { text: str })
                hmUI.showToast({ text: &apos;作者\
郑羊羊\
v11.4\
点击返回&apos; });
              }
            });

            // year, month, week 为全局变量
            function renderCal() {
              let str = &apos;\
\
\
  日  一  二 三  四 五  六\
  &apos;;
              if (!meCalStartSun) {
                str = &apos;\
\
\
  一  二  三 四  五 六  日\
  &apos;;
                week = week == 0 ? 7 : week;
              } else week++;
              for (let i = 1; i &amp;lt; week; i++) str += &apos;      &apos;;
              let dn = new Date(year, month, 0).getDate();
              for (let i = 1, w = week; i &amp;lt;= dn; i++, w++) {
                if (i &amp;lt; 10) str += w == 5 || w == 7  ? &apos;   &apos; : &apos;  &apos;;
                else if (w != 0 &amp;amp;&amp;amp; i==10) str += w &amp;gt; 4 ? &apos;  &apos; : &apos; &apos;;
                str += i + &apos; &apos;;
                if (w == 7) str += &apos;\
  &apos;, w = 0;
              }
              let ym = year + &apos;-&apos; + month
              if (time.year == year &amp;amp;&amp;amp; time.month == month) {
                ym += &apos;-&apos; + time.day;
                // 公历节日、中国农历节日、中国农历节气
                // str += &apos;\
&apos; + time.getShowFestival();
              }
              // console.log(&apos;renderCal&apos;, str);
              meCalT.setProperty(hmUI.prop.MORE, { text: str });
              meCalYmT.setProperty(hmUI.prop.MORE, { text: ym });
              meCalTimeout = time.utc + 120000;
            }
            
            meCal.createWidget(hmUI.widget.BUTTON, {
              x: 0,
              y: 0,
              w: 192,
              h: 80,
              text_size: 30,
              press_color: 2697513,
              normal_color: 1381653,
              text: &apos;上个月&apos;,
              click_func: function (info) {
                if (month &amp;lt; 0) month = month * -1;
                if (month == 1) year--, month = 12;
                else month--;
                week = new Date(year, month - 1, 1).getDay();
                renderCal();
              }
            });

            meCal.createWidget(hmUI.widget.BUTTON, {
              x: 0,
              y: 410,
              w: 192,
              h: 80,
              text_size: 30,
              press_color: 2697513,
              normal_color: 1381653,
              text: &apos;下个月&apos;,
              click_func: function (info) {
                if (month &amp;lt; 0) month = month * -1;
                if (month == 12) year++, month = 1;
                else month++;
                week = new Date(year, month - 1, 1).getDay();
                renderCal();
              }
            });


            // 咩Auth验证器部分
            var totpM, isMe = true;
            // 读auth配置 assets/meAuth.json
            try {
              let authFn = &quot;meAuthMe.json&quot;;
              let [fs_stat, err] = hmFS.stat_asset(authFn);
              if (err != 0) {
                isMe=false;
                authFn = &quot;meAuth.json&quot;;
                [fs_stat, err] = hmFS.stat_asset(authFn);
              }
              if (err == 0) {
                const f = hmFS.open_asset(authFn, hmFS.O_RDONLY);
                const buf = new Uint16Array(parseInt(fs_stat.size / 2) - 1);
                hmFS.seek(f, 2, hmFS.SEEK_SET);
                hmFS.read(f, buf.buffer, 0, 2 * buf.length);
                const jt = String.fromCharCode.apply(null, buf);
                totpM = JSON.parse(jt)
                hmFS.close(f)
              }
            } catch (n) {
              hmUI.showToast({ text: &quot;meAuth.json错误&quot; + n })
            }
            
            // 给不用的人省点ram
            if (totpM) {    
              var totpT = null, authPage = 0, authBtm = [], totpTimeout = 0, totpFoceUpdate = false;
              const totpKeys = Object.keys(totpM);
              function authSwitch(b) {
                meTime.setProperty(hmUI.prop.VISIBLE, !b);
                meAuth.setProperty(hmUI.prop.VISIBLE, b);
                mask.setProperty(hmUI.prop.VISIBLE, b);
                if (b) {
                  meAuthTimeout = time.utc + 30000; 
                  hmSetting.setBrightScreen(15)
                  if (authPage != 1) {
                    authPage = 0;
                    authNextPage();
                  }
                } else {
                  meAuthTimeout = 0;
                  hmSetting.setBrightScreenCancel()
                }
              };
              authSw.addEventListener(hmUI.event.CLICK_UP, function (info) {
                authSwitch(true);
              });

              // 显示验证码ui
              let meTotp = hmUI.createWidget(hmUI.widget.GROUP, { x: 0, y: 0, w: 192, h: 490 });
              let meAuth = hmUI.createWidget(hmUI.widget.GROUP, { x: 0, y: 0, w: 192, h: 490 });
              let tName = meTotp.createWidget(hmUI.widget.TEXT, {
                x: 0,
                y: 120,
                w: 192,
                h: 50,
                text: &quot;key&quot;,
                align_h: hmUI.align.CENTER_H,
                align_v: hmUI.align.CENTER_V,
                color: &quot;0xFFFFFF&quot;,
                text_size: 40
              }),
                tNum = meTotp.createWidget(hmUI.widget.TEXT, {
                  x: 0,
                  y: 145,
                  w: 192,
                  h: 200,
                  text: &quot;000000&quot;,
                  align_h: hmUI.align.CENTER_H,
                  align_v: hmUI.align.CENTER_V,
                  color: &quot;0xFFFFFF&quot;,
                  text_size: 50
                }),
                tSec = meTotp.createWidget(hmUI.widget.TEXT, {
                  x: 0,
                  y: 320,
                  w: 192,
                  h: 50,
                  text: &quot;30 s&quot;,
                  align_h: hmUI.align.CENTER_H,
                  align_v: hmUI.align.CENTER_V,
                  color: &quot;0xFFFFFF&quot;,
                  text_size: 40
                });
                meTotp.createWidget(hmUI.widget.BUTTON, {
                  x: 46,
                  y: 17,
                  w: 100,
                  h: 72,
                  press_color: 2697513,
                  normal_color: 1381653,
                  radius: 30,
                  text: &quot;退出&quot;,
                  text_size: 30,
                  color: 16777215,
                  click_func: function () {
                    meTotp.setProperty(hmUI.prop.VISIBLE, false);
                    totpT &amp;amp;&amp;amp; timer.stopTimer(totpT);
                    totpT = undefined;
                    authSwitch(false);
                  }
                });
                meTotp.createWidget(hmUI.widget.BUTTON, {
                  x: 46,
                  y: 401,
                  w: 100,
                  h: 72,
                  press_color: 2697513,
                  normal_color: 1381653,
                  radius: 30,
                  text: &quot;返回&quot;,
                  text_size: 30,
                  color: 16777215,
                  click_func: function () {
                    meAuth.setProperty(hmUI.prop.VISIBLE, true);
                    meTotp.setProperty(hmUI.prop.VISIBLE, false);
                    totpT &amp;amp;&amp;amp; timer.stopTimer(totpT);
                    totpT = undefined;
                    meAuthTimeout = time.utc + 30000;
                  }
                });

              // 显示auth列表ui
              const authBack = meAuth.createWidget(hmUI.widget.TEXT, {
                x: 0,
                y: 8,
                w: 192,
                h: 50,
                text: &quot;咩 Auth&quot;,
                align_h: hmUI.align.CENTER_H,
                align_v: hmUI.align.CENTER_V,
                color: &quot;0xFFFFFF&quot;,
                text_size: 20
              });
              authBack.addEventListener(hmUI.event.CLICK_UP, function (info) {
                authSwitch(false);
              });

              // 某个totp库
              function totpRun(n){function F(c,a,e){var d=0,b=[],f=0,g=!1,h=[],m=[],q=!1;e=e||{};var x=e.encoding||&quot;UTF8&quot;;var w=e.numRounds||1;var A=S(a,x);if(w!==parseInt(w,10)||1&amp;gt;w)throw Error(&quot;numRounds must a integer &amp;gt;= 1&quot;);if(&quot;SHA-1&quot;===c){var B=512;var O=T;var J=ka;var t=160;var U= function(k){return k.slice()}}else throw Error(&quot;Chosen SHA variant is not supported&quot;);var G=L(c);this.setHMACKey=function(k,l,r){if(!0===g)throw Error(&quot;HMAC key already set&quot;);if(!0===q)throw Error(&quot;Cannot set HMAC key after calling update&quot;);x=(r||{}).encoding||&quot;UTF8&quot;;l=S(l,x)(k);k=l.binLen;l=l.value;var u=B&amp;gt;&amp;gt;&amp;gt;3;r=u/4-1;if(u&amp;lt;k/8){for(l=J(l,k,0,L(c),t);l.length&amp;lt;=r;)l.push(0);l[r]&amp;amp;=4294967040}else if(u&amp;gt;k/8){for(;l.length&amp;lt;=r;)l.push(0);l[r]&amp;amp;=4294967040}for(k=0;k&amp;lt;=r;k+=1)h[k]=l[k]^909522486,m[k]=l[k]^ 1549556828;G=O(h,G);d=B;g=!0};this.update=function(k){var l,r=0,u=B&amp;gt;&amp;gt;&amp;gt;5;var p=A(k,b,f);k=p.binLen;var V=p.value;p=k&amp;gt;&amp;gt;&amp;gt;5;for(l=0;l&amp;lt;p;l+=u)r+B&amp;lt;=k&amp;amp;&amp;amp;(G=O(V.slice(l,l+u),G),r+=B);d+=r;b=V.slice(r&amp;gt;&amp;gt;&amp;gt;5);f=k%B;q=!0};this.getHash=function(k,l){if(!0===g)throw Error(&quot;Cannot call getHash after setting HMAC key&quot;);var r=W(l);switch(k){case &quot;HEX&quot;:k=function(p){return X(p,t,r)};break;case &quot;B64&quot;:k=function(p){return Y(p,t,r)};break;case &quot;BYTES&quot;:k=function(p){return Z(p,t)};break;case &quot;ARRAYBUFFER&quot;:try{l=new ArrayBuffer(0)}catch(p){throw Error(&quot;ARRAYBUFFER not supported by this environment&quot;);}k=function(p){return aa(p,t)};break;default:throw Error(&quot;format must be HEX, B64, BYTES, or ARRAYBUFFER&quot;);}var u=J(b.slice(),f,d,U(G),t);for(l=1;l&amp;lt;w;l+=1)u=J(u,t,0,L(c),t);return k(u)};this.getHMAC=function(k,l){if(!1===g)throw Error(&quot;Cannot call getHMAC without first setting HMAC key&quot;);var r=W(l);switch(k){case &quot;HEX&quot;:k=function(p){return X(p,t,r)};break;case &quot;B64&quot;:k=function(p){return Y(p,t,r)};break;case &quot;BYTES&quot;:k=function(p){return Z(p,t)};break;case &quot;ARRAYBUFFER&quot;:try{k=new ArrayBuffer(0)}catch(p){throw Error(&quot;ARRAYBUFFER not supported by this environment&quot;);}k=function(p){return aa(p,t)};break;default:throw Error(&quot;outputFormat must be HEX, B64, BYTES, or ARRAYBUFFER&quot;);}l=J(b.slice(),f,d,U(G),t);var u=O(m,L(c));u=J(l,t,B,u,t);return k(u)}}function la(c,a,e){var d=c.length,b,f;a=a||[0];e=e||0;var g=e&amp;gt;&amp;gt;&amp;gt;3;if(0!==d%2)throw Error(&quot;String of HEX type must be in byte increments&quot;);for(b=0;b&amp;lt;d;b+=2){var h=parseInt(c.substr(b,2),16);if(isNaN(h))throw Error(&quot;String of HEX type contains invalid characters&quot;);var m=(b&amp;gt;&amp;gt;&amp;gt;1)+g;for(f=m&amp;gt;&amp;gt;&amp;gt;2;a.length&amp;lt;=f;)a.push(0);a[f]|= h&amp;lt;&amp;lt;8*(3-m%4)}return{value:a,binLen:4*d+e}}function ma(c,a,e){var d;var b=a||[0];e=e||0;var f=e&amp;gt;&amp;gt;&amp;gt;3;for(d=0;d&amp;lt;c.length;d+=1){a=c.charCodeAt(d);var g=d+f;var h=g&amp;gt;&amp;gt;&amp;gt;2;b.length&amp;lt;=h&amp;amp;&amp;amp;b.push(0);b[h]|=a&amp;lt;&amp;lt;8*(3-g%4)}return{value:b,binLen:8*c.length+e}}function na(c,a,e){var d=0,b,f;var g=a||[0];e=e||0;a=e&amp;gt;&amp;gt;&amp;gt;3;if(-1===c.search(/^[a-zA-Z0-9=+\/]+$/))throw Error(&quot;Invalid character in base-64 string&quot;);var h=c.indexOf(&quot;=&quot;);c=c.replace(/=/g,&quot;&quot;);if(-1!==h&amp;amp;&amp;amp;h&amp;lt;c.length)throw Error(&quot;Invalid &apos;=&apos; found in base-64 string&quot;);for(h=0;h&amp;lt;c.length;h+=4){var m=c.substr(h,4);for(b=f=0;b&amp;lt;m.length;b+=1){var q=&quot;ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/&quot;.indexOf(m[b]);f|=q&amp;lt;&amp;lt;18-6*b}for(b=0;b&amp;lt;m.length-1;b+=1){var x=d+a;for(q=x&amp;gt;&amp;gt;&amp;gt;2;g.length&amp;lt;=q;)g.push(0);g[q]|=(f&amp;gt;&amp;gt;&amp;gt;16-8*b&amp;amp;255)&amp;lt;&amp;lt;8*(3-x%4);d+=1}}return{value:g,binLen:8*d+e}}function oa(c,a,e){var d=a||[0];e=e||0;var b=e&amp;gt;&amp;gt;&amp;gt;3;for(a=0;a&amp;lt;c.byteLength;a+=1){var f=a+b;var g=f&amp;gt;&amp;gt;&amp;gt;2;d.length&amp;lt;=g&amp;amp;&amp;amp;d.push(0);d[g]|=c[a]&amp;lt;&amp;lt;8*(3-f%4)}return{value:d,binLen:8*c.byteLength+e}}function X(c, a,e){var d=&quot;&quot;;a/=8;var b;for(b=0;b&amp;lt;a;b+=1){var f=c[b&amp;gt;&amp;gt;&amp;gt;2]&amp;gt;&amp;gt;&amp;gt;8*(3-b%4);d+=&quot;0123456789abcdef&quot;.charAt(f&amp;gt;&amp;gt;&amp;gt;4&amp;amp;15)+&quot;0123456789abcdef&quot;.charAt(f&amp;amp;15)}return e.outputUpper?d.toUpperCase():d}function Y(c,a,e){var d=&quot;&quot;,b=a/8,f;for(f=0;f&amp;lt;b;f+=3){var g=f+1&amp;lt;b?c[f+1&amp;gt;&amp;gt;&amp;gt;2]:0;var h=f+2&amp;lt;b?c[f+2&amp;gt;&amp;gt;&amp;gt;2]:0;h=(c[f&amp;gt;&amp;gt;&amp;gt;2]&amp;gt;&amp;gt;&amp;gt;8*(3-f%4)&amp;amp;255)&amp;lt;&amp;lt;16|(g&amp;gt;&amp;gt;&amp;gt;8*(3-(f+1)%4)&amp;amp;255)&amp;lt;&amp;lt;8|h&amp;gt;&amp;gt;&amp;gt;8*(3-(f+2)%4)&amp;amp;255;for(g=0;4&amp;gt;g;g+=1)8*f+6*g&amp;lt;=a?d+=&quot;ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/&quot;.charAt(h&amp;gt;&amp;gt;&amp;gt;6*(3-g)&amp;amp;63):d+=e.b64Pad}return d}function Z(c,a){var e=&quot;&quot;;a/=8;var d;for(d=0;d&amp;lt;a;d+=1){var b=c[d&amp;gt;&amp;gt;&amp;gt;2]&amp;gt;&amp;gt;&amp;gt;8*(3-d%4)&amp;amp;255;e+=String.fromCharCode(b)}return e}function aa(c,a){a/=8;var e,d=new ArrayBuffer(a);for(e=0;e&amp;lt;a;e+=1)d[e]=c[e&amp;gt;&amp;gt;&amp;gt;2]&amp;gt;&amp;gt;&amp;gt;8*(3-e%4)&amp;amp;255;return d}function W(c){var a={outputUpper:!1,b64Pad:&quot;=&quot;,shakeLen:-1};c=c||{};a.outputUpper=c.outputUpper||!1;!0===c.hasOwnProperty(&quot;b64Pad&quot;)&amp;amp;&amp;amp;(a.b64Pad=c.b64Pad);if(&quot;boolean&quot;!==typeof a.outputUpper)throw Error(&quot;Invalid outputUpper formatting option&quot;);if(&quot;string&quot;!==typeof a.b64Pad)throw Error(&quot;Invalid b64Pad formatting option&quot;);return a}function S(c,a){switch(a){case &quot;UTF8&quot;:case &quot;UTF16BE&quot;:case &quot;UTF16LE&quot;:break;default:throw Error(&quot;encoding must be UTF8, UTF16BE, or UTF16LE&quot;);}switch(c){case &quot;HEX&quot;:c=la;break;case &quot;TEXT&quot;:c=function(e,d,b){var f=0,g,h,m;var q=d||[0];d=b||0;var x=d&amp;gt;&amp;gt;&amp;gt;3;if(&quot;UTF8&quot;===a)for(g=0;g&amp;lt;e.length;g+=1){b=e.charCodeAt(g);var w=[];128&amp;gt;b?w.push(b):2048&amp;gt;b?(w.push(192|b&amp;gt;&amp;gt;&amp;gt;6),w.push(128|b&amp;amp;63)):55296&amp;gt;b||57344&amp;lt;=b?w.push(224|b&amp;gt;&amp;gt;&amp;gt;12,128|b&amp;gt;&amp;gt;&amp;gt;6&amp;amp;63,128|b&amp;amp;63):(g+=1,b=65536+((b&amp;amp;1023)&amp;lt;&amp;lt;10|e.charCodeAt(g)&amp;amp;1023),w.push(240| b&amp;gt;&amp;gt;&amp;gt;18,128|b&amp;gt;&amp;gt;&amp;gt;12&amp;amp;63,128|b&amp;gt;&amp;gt;&amp;gt;6&amp;amp;63,128|b&amp;amp;63));for(h=0;h&amp;lt;w.length;h+=1){var A=f+x;for(m=A&amp;gt;&amp;gt;&amp;gt;2;q.length&amp;lt;=m;)q.push(0);q[m]|=w[h]&amp;lt;&amp;lt;8*(3-A%4);f+=1}}else if(&quot;UTF16BE&quot;===a||&quot;UTF16LE&quot;===a)for(g=0;g&amp;lt;e.length;g+=1){b=e.charCodeAt(g);&quot;UTF16LE&quot;===a&amp;amp;&amp;amp;(h=b&amp;amp;255,b=h&amp;lt;&amp;lt;8|b&amp;gt;&amp;gt;&amp;gt;8);A=f+x;for(m=A&amp;gt;&amp;gt;&amp;gt;2;q.length&amp;lt;=m;)q.push(0);q[m]|=b&amp;lt;&amp;lt;8*(2-A%4);f+=2}return{value:q,binLen:8*f+d}};break;case &quot;B64&quot;:c=na;break;case &quot;BYTES&quot;:c=ma;break;case &quot;ARRAYBUFFER&quot;:try{c=new ArrayBuffer(0)}catch(e){throw Error(&quot;ARRAYBUFFER not supported by this environment&quot;);}c=oa;break;default:throw Error(&quot;format must be HEX, TEXT, B64, BYTES, or ARRAYBUFFER&quot;);}return c}function H(c,a){return c&amp;lt;&amp;lt;a|c&amp;gt;&amp;gt;&amp;gt;32-a}function K(c,a){var e=(c&amp;amp;65535)+(a&amp;amp;65535);return((c&amp;gt;&amp;gt;&amp;gt;16)+(a&amp;gt;&amp;gt;&amp;gt;16)+(e&amp;gt;&amp;gt;&amp;gt;16)&amp;amp;65535)&amp;lt;&amp;lt;16|e&amp;amp;65535}function M(c,a,e,d,b){var f=(c&amp;amp;65535)+(a&amp;amp;65535)+(e&amp;amp;65535)+(d&amp;amp;65535)+(b&amp;amp;65535);return((c&amp;gt;&amp;gt;&amp;gt;16)+(a&amp;gt;&amp;gt;&amp;gt;16)+(e&amp;gt;&amp;gt;&amp;gt;16)+(d&amp;gt;&amp;gt;&amp;gt;16)+(b&amp;gt;&amp;gt;&amp;gt;16)+(f&amp;gt;&amp;gt;&amp;gt;16)&amp;amp;65535)&amp;lt;&amp;lt;16|f&amp;amp;65535}function L(c){if(&quot;SHA-1&quot;===c)c=[1732584193,4023233417,2562383102,271733878,3285377520];else throw Error(&quot;No SHA variants supported&quot;);return c}function T(c,a){var e=[],d;var b=a[0];var f=a[1];var g=a[2];var h=a[3];var m=a[4];for(d=0;80&amp;gt;d;d+=1){e[d]=16&amp;gt;d?c[d]:H(e[d-3]^e[d-8]^e[d-14]^e[d-16],1);var q=20&amp;gt;d?M(H(b,5),f&amp;amp;g^~f&amp;amp;h,m,1518500249,e[d]):40&amp;gt;d?M(H(b,5),f^g^h,m,1859775393,e[d]):60&amp;gt;d?M(H(b,5),f&amp;amp;g^f&amp;amp;h^g&amp;amp;h,m,2400959708,e[d]):M(H(b,5),f^g^h,m,3395469782,e[d]);m=h;h=g;g=H(f,30);f=b;b=q}a[0]=K(b,a[0]);a[1]=K(f,a[1]);a[2]=K(g,a[2]);a[3]=K(h,a[3]);a[4]=K(m,a[4]);return a}function ka(c,a,e,d){var b;for(b=(a+65&amp;gt;&amp;gt;&amp;gt;9&amp;lt;&amp;lt;4)+15;c.length&amp;lt;=b;)c.push(0);c[a&amp;gt;&amp;gt;&amp;gt;5]|=128&amp;lt;&amp;lt;24-a%32;a+=e;c[b]=a&amp;amp;4294967295;c[b-1]=a/4294967296|0;a=c.length;for(b=0;b&amp;lt;a;b+=16)d=T(c.slice(b,b+16),d);return d}function ba(c,a,e){a+1&amp;gt;=c.length&amp;amp;&amp;amp;(c=Array(a+1-c.length).join(e)+c);return c}return function(c){for(var a,e=a=&quot;&quot;,d=0;d&amp;lt;c.length;d++){var b=&quot;ABCDEFGHIJKLMNOPQRSTUVWXYZ234567&quot;.indexOf(c.charAt(d).toUpperCase());a+=ba(b.toString(2),5,&quot;0&quot;)}for(d=0;d+4&amp;lt;=a.length;d+=4)c=a.substr(d,4),e+=parseInt(c,2).toString(16);a=e;e=Math.round((new Date).getTime()/1E3);e=Math.floor(e/30);e= (15.5&amp;gt;e?&quot;0&quot;:&quot;&quot;)+Math.round(e).toString(16);e=ba(e,16,&quot;0&quot;);d=new F(&quot;SHA-1&quot;,&quot;HEX&quot;);if(a.length%2!==0)a=a.substring(0,a.length-1);d.setHMACKey(a,&quot;HEX&quot;);d.update(e);a=d.getHMAC(&quot;HEX&quot;);e=parseInt(a.substring(a.length-1),16);a=(parseInt(a.substr(2*e,8),16)&amp;amp;2147483647)+&quot;&quot;;return a.substr(a.length-6,6)}(n)}

              function totpShow(name, key) {
                meAuth.setProperty(hmUI.prop.VISIBLE, false);
                meTotp.setProperty(hmUI.prop.VISIBLE, true);
                tName.setProperty(hmUI.prop.MORE, {text: name});
                tNum.setProperty(hmUI.prop.MORE, {text: totpRun(key)});
                meAuthTimeout = 0;
                totpTimeout = time.utc + 60000;
                totpFoceUpdate = false;
                totpT &amp;amp;&amp;amp; timer.stopTimer(totpT);
                totpT = timer.createTimer(0, 1000, function (ext) {
                  if (totpTimeout &amp;lt; time.utc) {
                    meTotp.setProperty(hmUI.prop.VISIBLE, false);
                    totpT &amp;amp;&amp;amp; timer.stopTimer(totpT);
                    totpT = undefined;
                    authSwitch(false);
                  }
                  let t = new Date().getSeconds();
                  let s = 30 &amp;gt; t ? 30 - t : 60 - t
                  tSec.setProperty(hmUI.prop.MORE, {text: s + &quot; s&quot;});
                  if (totpFoceUpdate || 30 == s) {
                    totpFoceUpdate = false;
                    tNum.setProperty(hmUI.prop.MORE, {text: totpRun(key)});
                  }
                }, {});
              }

              function authNextPage() {
                authPage = authPage &amp;lt; Math.ceil(totpKeys.length / 7) ? authPage +1 : 1;
                // 显示列表 7行
                let totpMnum = 0;
                try{
                  for (let i = 0; i &amp;lt; authBtm.length; i++) {
                    hmUI.deleteWidget(authBtm[i]);
                  }
                  authBtm = [];
                  for (let i = authPage * 7 - 7; i &amp;lt; ( totpKeys.length &amp;lt; authPage * 7 ? totpKeys.length : authPage * 7); i++) {
                    authBtm[totpMnum] = meAuth.createWidget(hmUI.widget.BUTTON, {
                      x: 5,
                      y: 60 + 53 * totpMnum,
                      w: 182,
                      h: 50,
                      press_color: 2697513,
                      normal_color: 1381653,
                      text: totpKeys[i],
                      text_size: 30,
                      color: 16777215,
                      radius: 15,
                      click_func: function () {
                        totpShow(totpKeys[i], totpM[totpKeys[i]]);
                      }
                    });
                    console.log(totpKeys[i], totpM[totpKeys[i]]);
                    totpMnum++;
                  }
                } catch (n) {
                  hmUI.showToast({ text: &quot;&quot; + n })
                }
              }

              meAuth.createWidget(hmUI.widget.BUTTON, {
                x: 0,
                y: 438,
                w: 192,
                h: 52,
                press_color: 2697513,
                normal_color: 1381653,
                text: &apos;下一页&apos;,
                text_size: 28,
                color: 16777215,
                click_func: authNextPage
              });

              // 初始化时隐藏 auth
              meAuth.setProperty(hmUI.prop.VISIBLE, false);
              meTotp.setProperty(hmUI.prop.VISIBLE, false);
            }

            // 咩Img图库部分
            // 米环7的 hmUI.widget.QRCODE 二维码生成不出来只能用图片

            // 读assets/meImg中的文件图片
            var meImgL, meImgTimeout = 0, meImgI = 0, meImgSwT = 0;
            try {
              // 试过相对路径写assets/meImg是找不到目录的
              let [fileNameArr, err] = hmFS.readdir(&apos;/storage/js_watchfaces/1DF25AEC/assets/meImg&apos;);
              if (err != -1) { // -2也有文件
                meImgL = fileNameArr.sort();
              }
            } catch (n) {
              hmUI.showToast({ text: &quot;meImg错误&quot; + n })
            }

            if (meImgL &amp;amp;&amp;amp; meImgL.length &amp;gt; 0) {
              let meImg = hmUI.createWidget(hmUI.widget.GROUP, { x: 0, y: 0, w: 192, h: 490 });
              const meImgPng = meImg.createWidget(hmUI.widget.IMG, { x: 0, y: 0 });
              function imgSet() {
                if (meImgL[meImgI].endsWith(&apos;..png&apos;)) {
                  hmUI.showToast({ text: meImgL[meImgI].substring(0, meImgL[meImgI].length - 5)})
                  meImgPng.setProperty(hmUI.prop.MORE, {y: 149, src: &apos;meImg/&apos; + meImgL[meImgI]});
                } else {
                  hmUI.showToast({ text: meImgL[meImgI].substring(0, meImgL[meImgI].length - 4)})
                  meImgPng.setProperty(hmUI.prop.MORE, {y: 0, src: &apos;meImg/&apos; + meImgL[meImgI]});
                }
              } 
              function imgSwitch(b) {
                meImgI = 0;
                meTime.setProperty(hmUI.prop.VISIBLE, !b);
                mask.setProperty(hmUI.prop.VISIBLE, b);
                meImg.setProperty(hmUI.prop.VISIBLE, b);
                if (b) {
                  nowBl = hmSetting.getBrightness();
                  if (nowBl &amp;lt; 50) hmSetting.setBrightness(50);
                  imgSet();
                  meImgTimeout = time.utc + 30000; 
                  hmSetting.setBrightScreen(15)
                } else {
                  meImgTimeout = 0;
                  hmSetting.setBrightScreenCancel()
                  hmSetting.setBrightness(nowBl);
                }
              }
              meImgSw.addEventListener(hmUI.event.CLICK_UP, function (info) {
                if (meImgSwT &amp;gt; time.utc) {
                  imgSwitch(true);
                } else {
                  meImgSwT = time.utc + 300;
                }
              });
              const meImgExit = meImg.createWidget(hmUI.widget.TEXT, {
                x: 0,
                y: 0,
                w: 192,
                h: 70
              });
              const meImgPrev = meImg.createWidget(hmUI.widget.TEXT, {
                x: 0,
                y: 74,
                w: 192,
                h: 190
              });
              meImgPrev.addEventListener(hmUI.event.CLICK_UP, function (info) {
                meImgI--;
                if (meImgI &amp;lt; 0) {
                  imgSwitch(false);
                } else {
                  imgSet();
                }
              });
              meImgExit.addEventListener(hmUI.event.CLICK_UP, function (info) {
                imgSwitch(false);
              });
              const meImgNext = meImg.createWidget(hmUI.widget.TEXT, {
                x: 0,
                y: 266,
                w: 192,
                h: 223
              });
              meImgNext.addEventListener(hmUI.event.CLICK_UP, function (info) {
                meImgI++;
                if (meImgI == meImgL.length) meImgI = 0;
                imgSet();
              });

              meImg.setProperty(hmUI.prop.VISIBLE, false);
            }

            // // 表盘设置
            // let meEdit = hmUI.createWidget(hmUI.widget.WATCHFACE_EDIT_GROUP, {
            //   x: 0,
            //   y: 0,
            //   w: 192,
            //   h: 490,
            //   show_level: hmUI.show_level.ONLY_EDIT
            // });

            // 初始化时隐藏
            meCal.setProperty(hmUI.prop.VISIBLE, false);
            mask.setProperty(hmUI.prop.VISIBLE, false);

            // 亮屏触发器
            hmUI.createWidget(hmUI.widget.WIDGET_DELEGATE, {
              resume_call: (function () {
                totpFoceUpdate = true;
                if (antiTouch) timer.stopTimer(antiTouch);
                antiTouch = timer.createTimer(700, 700, function (ext) {
                  timer.stopTimer(antiTouch);
                  antiTouch = undefined;
                }, {});
                if (meCalTimeout &amp;amp;&amp;amp; meCalTimeout &amp;lt; time.utc) {
                  calSwitch(false);
                } else if (meAuthTimeout &amp;amp;&amp;amp; meAuthTimeout &amp;lt; time.utc) {
                  authSwitch(false);
                } else if (meImgTimeout &amp;amp;&amp;amp; meImgTimeout &amp;lt; time.utc) {
                  imgSwitch(false);
                }
                // 自动亮度
                if (!meImgTimeout &amp;amp;&amp;amp; setBlH != time.hour) {
                  if (nowBl != -10 &amp;amp;&amp;amp; (time.hour == 0 &amp;amp;&amp;amp; time.minute &amp;gt;= 30 || time.hour &amp;gt; 0 &amp;amp;&amp;amp; time.hour &amp;lt; 7)) {
                    setBl(-10);
                  } else if (nowBl == -10 &amp;amp;&amp;amp; time.hour &amp;gt;= 7) {
                    setBl(0);
                  } else if (isMe &amp;amp;&amp;amp; time.week &amp;lt; 6) {
                    // 咩咩的
                    if (nowBl &amp;lt; 10 &amp;amp;&amp;amp; time.hour == 8 &amp;amp;&amp;amp; time.minute &amp;gt;= 40) {
                      setBl(10);
                    } else if (nowBl &amp;lt; 30 &amp;amp;&amp;amp; time.hour == 11 &amp;amp;&amp;amp; time.minute &amp;gt;= 45) {
                      setBl(30);
                    } else if (nowBl &amp;gt; 10 &amp;amp;&amp;amp; time.hour == 12 &amp;amp;&amp;amp; time.minute &amp;gt;= 30) {
                      setBl(10);
                    } else if (nowBl &amp;gt; 0 &amp;amp;&amp;amp; time.hour == 18 &amp;amp;&amp;amp; time.minute &amp;gt;= 0) {
                      setBl(0);
                    }
                  }
                }
                console.log(&apos;ui resume&apos;);
              }),
              pause_call: (function () {
                console.log(&apos;ui pause&apos;);
              }),
            });
          

          } catch (err) {
            hmUI.showToast({ text: &quot;出错了:\
&quot; + err.message });
          }
          }, onInit() {
            console.log(&quot;sparkle watchface init invoke&quot;),
              this.init_view();
          }, onReady() {
            console.log(&quot;sparkle watchface ready invoke&quot;);
          }, onShow() {
            console.log(&quot;sparkle watchface show invoke&quot;);
          }, onHide() {
            console.log(&quot;sparkle watchface hide invoke&quot;);
          }, onDestory() {
            vibrate &amp;amp;&amp;amp; vibrate.stop()
            console.log(&quot;sparkle watchface destory invoke&quot;);
          }
        });
      })();
    } catch (e) {
      console.log(e);
      hmUI.showToast({ text: &quot;出错了:\
&quot; + err.message });
    }
  })();
} catch (e) {
  console.log(e);
  hmUI.showToast({ text: &quot;出错了:\
&quot; + err.message });
} 
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item></channel></rss>