(更多…)最近女友送我一台 iPhone,所以就有了如此逆向的操作,估计也就只有中国大陆的玩机用户需要这样吧。
Google photo to iCloud 美区可以直接使用 Google Takeout 一键转移
分类: 技术
-
迁移 Google Photo 到云上贵州 iCloud Photo
-
Azure Custom Vision: Use managed identity or other Azure Identity
Refer to: Custom Vision: Azure role-based access control, Custom Vision: azure.identity credentials aren’t supported
C# Code
First of all, the C# Code. you can also translate to other language, like Python.
(更多…) -
WebM/WebP to GIF with semi-transparency
Preface
Due to Add support of animated sticker #78
There is currently no direct way to convert WebM to GIF this on the Internet.
My idea is: WebM -> WebP -> GIF (due each steps have existing tools)
Here are the difficulties we need to overcome:
- Remove vp8/9 from WebM to let we more easy to do next (Refer How can I convert WebM file to WebP file with transparency?)
- Convert WebP to GIF (Refer How to Convert WebP image to Gif with Python?) and handling semi-transparent pixels (here is what we need to face)
-
Cut and move Runs via python-docx
I want to cut and paste a run in one same document, but python-docx(1.1.0) don’t have the function.
Here are some related page, but it doesn’t solve the problem:
How do I copy the contents of a word document?
Copy paragraphs elements from one document to another -
代码即操作系统(UpgradeAll 2 开发计划)
随着我使用的电子产品越来越多,跨度涉及 Linux 桌面/服务器,Android。我发现,备份还原的操作系统配置是有极限的,极限在于它未曾理解,也无法理解数据的意义。
DNS hosts 与软件数据库缓存,在它眼里看来,都是一样的“文件”。过去
这带来一个想法,就是代码即架构,也就是 Ansible、Terraform 等,但是它们在“代码”,这个概念的理解上,却出了大差错。软件代码,在软件停止运行后,软件的大部分副作用会消失,而那一小部分副作用也可以以测试代码的形式覆盖。
现状
操作系统,并不会随着 Ansible 或者 Terraform 停止运行而关机,其副作用,也不会因为我删除了 Ansible 里的一行代码并重新运行就会消失,于是这时候,便产生了所谓的“配置偏移”,这些传统的代码即架构的软件以“幂等性”来“自欺欺人”式的解决了这个问题,确实“幂等性”很重要,它会避免重复配置或者不必要的重复导致的错误,但是并不能解决这个回滚问题。
然而,大部分操作都是可以回滚的,甚至配置得当,文件删除也是可以回滚的。现代操作系统已经为我们提供了很多回滚工具,git、文件系统快照、甚至最简单的文件回收站。但是,因为从运维角度编码,可复现与回滚,直接萎缩成了一次性快照,也就是 OCI 与 NixOS 之流。
未来
我在这里提出一个新的构建系统,也就是从程序员的角度运维。为一切可以回滚的操作添加支持,如果你在配置代码中删除了一个操作,那么在下次运行时将会对那一个特定操作进行自动回滚。
此外,我也认为安装软件,维护系统这种经验,应该作为群体智慧被编程的方式保留下来,而不是让人们一次又一次的去重复学习简单的劳动。
运维的未来应当像 NixOS,面向功能,而绝非面向软件与包。
这个系统应当满足以下特性:
- 面对终端的普通用户
- 面对目标,也就是面对一些“单元测试”,因为操作系统应当为功能服务,而不是软件这个概念
- 可回滚
- 单机应用,可以远程运行,但是应当首要支持单机运行
- 与现有的运维技术兼容,并尽量使用现有的运维技术进行配置(初版暂定使用 Ansible),我们的世界不需要更多轮子了
- 可自动检查一个现有的,已经配置的操作系统,并生成配置代码
- 逻辑代码应当灵活,这个项目提出的一部分原因就是希望推进 Gentoo 的发展。(源码的自由是选择的自由,也是保证自由的基石)
对于 Android
而这个系统在 Android 上的体现会是 UpgradeAll
因为我希望 UpgradeAll 可以拥有这些特性:
- 从源码编译(你可以随意使用开发者没有合并的分支与功能)
- 面对开发者友好(你可以编程你的更新流程)
- 面对用户友好(你可以只考虑需要什么功能,而不是寻找应用,这应该让开发者来做,参考 quickenergy)
- 促进 Android 应用开放化(Android 应用的封闭性在我看来有很大部分是因为深刻骨髓的二进制分发,tui)
-
手动线刷任意 Android ROM
通过 Fastboot 与 payload_dumper,我们可以在任意时刻刷入任意我们需要的 ROM。
(更多…) -
exa 仅显示点文件
exa 是一个 ls 程序的替代品,旨在提供更加友好与多彩的用户界面,其期望与 bat 相似。
背景
在简单尝试 exa 后,我决定 alias 替换 ls 来体验一段时间,然后发现
ls -al --ignore="[^.]*"
命令无法被直接替换,因为 exa 没有 ignore 接口。测试命令
在查找文档后,发现 exa 拥有基于 glob 语法的过滤(文档的 Filtering 节)。
所以仅显示点文件的命令应该是
exa -la --ignore-glob="[!.]*"
其中,
!
意指不包括。添加 alias
最后,我修改后的 rc 文件为(color 只是为了方便之后切换回 ls,exa 默认开启)
alias ls='exa' alias l.='exa -la --ignore-glob="[!.]*"' alias ll='ls --color=auto -l' alias la='ls --color=auto -la'
-
Pipewire 多设备输出
今天想和朋友一起听歌,把ta的蓝牙耳机连到电脑上后发现 KDE 界面只能设置一个音频输出端口。想起来上次 Steam Link 的经验,决定使用 Pipewire 实现这个功能。
参考资料:
https://xzos.net/steam-for-linux-no-sound-when-streaming/
https://bbs.archlinux.org/viewtopic.php?pid=1986792#p1986792- 查找音频设备
$ pw-link -o Midi-Bridge:Midi Through:(capture_0) Midi Through Port-0 v4l2_input.pci-0000_00_14.0-usb-0_6_1.0:out_0 alsa_output.pci-0000_00_1f.3.analog-stereo:monitor_FL alsa_output.pci-0000_00_1f.3.analog-stereo:monitor_FR alsa_input.pci-0000_00_1f.3.analog-stereo:capture_FL alsa_input.pci-0000_00_1f.3.analog-stereo:capture_FR easyeffects_sink:monitor_FL easyeffects_sink:monitor_FR easyeffects_source:capture_FL $ pw-link -o Midi-Bridge:Midi Through:(capture_0) Midi Through Port-0 v4l2_input.pci-0000_00_14.0-usb-0_6_1.0:out_0 alsa_output.pci-0000_00_1f.3.analog-stereo:monitor_FL alsa_output.pci-0000_00_1f.3.analog-stereo:monitor_FR alsa_input.pci-0000_00_1f.3.analog-stereo:capture_FL alsa_input.pci-0000_00_1f.3.analog-stereo:capture_FR easyeffects_sink:monitor_FL easyeffects_sink:monitor_FR easyeffects_source:capture_FL easyeffects_source:capture_FR ee_soe_output_level:output_FL ee_soe_output_level:output_FR ee_soe_spectrum:output_FL ee_soe_spectrum:output_FR ee_soe_equalizer:output_FL ee_soe_equalizer:output_FR ee_soe_convolver:output_FL ee_soe_convolver:output_FR ee_sie_output_level:output_FL ee_sie_output_level:output_FR ee_sie_spectrum:output_FL ee_sie_spectrum:output_FR Audacious:output_FL Audacious:output_FR steam:output_FL steam:output_FR bluez_output.84_AB_26_A6_8A_6A.a2dp-sink:monitor_FL bluez_output.84_AB_26_A6_8A_6A.a2dp-sink:monitor_FReasyeffects_source:capture_FR ee_soe_output_level:output_FL ee_soe_output_level:output_FR ee_soe_spectrum:output_FL ee_soe_spectrum:output_FR ee_soe_equalizer:output_FL ee_soe_equalizer:output_FR ee_soe_convolver:output_FL ee_soe_convolver:output_FR ee_sie_output_level:output_FL ee_sie_output_level:output_FR ee_sie_spectrum:output_FL ee_sie_spectrum:output_FR Audacious:output_FL Audacious:output_FR steam:output_FL steam:output_FR bluez_output.84_AB_26_A6_8A_6A.a2dp-sink:monitor_FL bluez_output.84_AB_26_A6_8A_6A.a2dp-sink:monitor_FR
确认希望使用的音频设备为
alsa_output.pci-0000_00_1f.3.analog-stereo
与bluez_output.84_AB_26_A6_8A_6A.a2dp-sink
2. 连接创建虚拟设备
$ pactl load-module module-null-sink media.class=Audio/Sink sink_name=Simultaneous channel_map=stereo 536870913 # 模块 ID,不用记
3. 连接设备
# 顺序不影响结果 $ pw-link Simultaneous:monitor_FL bluez_output.84_AB_26_A6_8A_6A.a2dp-sink:playback_FL $ pw-link Simultaneous:monitor_FR bluez_output.84_AB_26_A6_8A_6A.a2dp-sink:playback_FR $ pw-link Simultaneous:monitor_FL alsa_output.pci-0000_00_1f.3.analog-stereo:playback_FL $ pw-link Simultaneous:monitor_FR alsa_output.pci-0000_00_1f.3.analog-stereo:playback_FR
4. 去 KDE 设置里选择
KDE 音频设置界面 5. 卸载模块
用完后可以卸载模块
$ pactl unload-module module-null-sink
-
DP-3T 保护隐私的“健康码”
人们总是选择并相信符合直觉的解释与方案,这导致了平庸
DP-3T,一个保护隐私的接触者追踪软件,就好象健康码
健康码,从全知全能的视角出发来“保护”每个人,这几乎可以预测一定会发生老大哥事件。
而另一方面,从最小知识出发,基于随机 ID 与地理位置的 P2P(蓝牙)则避免了这些。
这不符合人类作为个体的直觉,但加密货币的出现证明了这种实现的基础。
更进一步的,参考加密货币的“价值网络”与“行为创造价值”的“权益证明”。我认为,我们可以引入加密货币的代币奖励机制,避免用户重置 ID。同时,用区块记录的方式计时与发放时间积分,保证用户手机尽力在线(除不可抗力导致的断网)与14天的检测期。