Golang 解析带命名空间的 XML

遇到的问题 在写业余项目时遇到一个xml无法解析的问题,情景如下。使用以下 Golang 解析 YouTube 的 RSS 返回的 XML ,无法获得 XML 内<media:thumbnail> 内的数据。 type YoutubeRSS struct { XMLName xml.Name `xml:"feed"` Entry []struct { Title string `xml:"title"` Link struct { Href string `xml:"href,attr"` } `xml:"link"` Updated time.Time `xml:"updated"` MediaGrop struct { MediaThumbnail struct { Url string `xml:"url,attr"` } `xml:"media:thumbnail"` } `xml:"media:group"` } `xml:"entry"` } <?xml version="1.0" encoding="UTF-8"?> <feed xmlns:yt="http://www.youtube.com/xml/schemas/2015" xmlns:media="http://search.yahoo.com/mrss/" xmlns="http://www.w3.org/2005/Atom"> <link rel="self" href="http://www.youtube.com/feeds/videos.xml?channel_id=UCSI11yVCM5x45_iiL5YcQZw"/> <id>yt:channel:UCSI11yVCM5x45_iiL5YcQZw</id> <yt:channelId>UCSI11yVCM5x45_iiL5YcQZw</yt:channelId> <title>Priscilla Abby 蔡恩雨</title> <link rel="alternate" href="https://www....

July 21, 2022 · 1 min · 张某

在Dracut使用GPG解密硬盘

配置加密 将配置写入 /etc/crypttab ,将$name $uuid $keyfile 替换为自己的配置, keyfile 为.gpg 结尾时,会启用 crypt-gpg. /etc/crypttab ----- $name UUID=$uuid $keyfile 设置公钥 将公钥放入 /etc/dracut.conf.d/crypt-public-key.gpg 设置 dracut.conf 需要手动加入 crypt-gpg 模块,将 $keyfile 替换为自己的密钥 /etc/dracut.conf ----- hostonly="no" install_items+=" /etc/crypttab $keyfile " add_dracutmodules=" crypt-gpg "

June 25, 2022 · 1 min · 张某

将密钥封存至 TPM  [draft]

创建主键 tpm2_createprimary -Q -C o -c ~/tpm/primary.context 创建当前 TPM 的签名 (可选) pcr_bank 可选 sha1 sha256 pcr_id 功能如下表,一般来说 “0,1,3,7” 即可 PCR USE NOTES PCR0 核心系统固件可执行代码(又名固件) 如果您升级 UEFI,可能会发生变化 PCR1 核心系统固件数据(又名 UEFI 设置) PCR2 扩展或可插入的可执行代码 PCR3 扩展或可插拔固件数据 在 Boot Device Select UEFI 引导阶段设置 PCR4 引导管理器代码和引导尝试 测量引导管理器和固件尝试从中引导的设备 PCR5 引导管理器配置和数据 可以测量引导加载程序的配置;包括 GPT 分区表 PCR6 从 S4 和 S5 电源状态事件恢复 PCR7 安全启动状态 包含 PK/KEK/db 的全部内容,以及用于验证每个启动应用程序的特定证书 PCR8 内核命令行的哈希 由grub和systemd-boot支持 PCR9 initrd 的哈希 预定 linux v5.17 PCR10 保留供将来使用 PCR11 BitLocker 访问控制 PCR12 数据事件和高波动事件 PCR13 引导模块详细信息 PCR14 引导权限 PCR15-23 保留供将来使用 tpm2_pcrread -Q "sha256":"0,1,2,3,7" -o "$TMP"/pcr....

June 25, 2022 · 1 min · 张某

使用 Grub 构建统一内核映像

统一内核映像是单个可执行文件,可以直接从 UEFI 固件启动,或者由引导加载程序自动获取,只需很少或没有配置。 准备 Grub 配置文件 此配置文件和普通 Grub 配置文件一样,一下只是适配我电脑的配置,默认情况下 Grub 的 root 为 (memdisk). ~/SecureBoot/grub.cfg ----- menuentry 'Gentoo' --class gentoo --class gnu-linux --class gnu --class os{ insmod all_video linux /vmlinuz root=/dev/sda1 initrd /initramfs.img } 构建 EFI 文件 使用 grub-mkstandalone 构建单一的内核映像, 将命令中的 vmlinuz-5.15.41-gentoo 以及 iniramfs-5.14.41-gentoo 替换为自己的内核及 initramfs. grub-mkstandalone --direcotry /usr/lib/grub/x86_64-efi --format x86_64-efi --disable-shim-lock --output grub.efi /vmlinuz=/boot/vmlinuz-5.15.41-gentoo /initramfs.img=/boot/initramfs-5.14.41-gentoo /boot/grub/grub.cfg=~/SecureBoot/grub.cfg 签名 EFI 文件 (可选) 如果使用了安全启动,可以对 EFI 文件进行签名. sbsign --key ~/keys/db.key --cert ~/keys/db.crt --output grub....

June 25, 2022 · 1 min · 张某

在 Windows 下安装 go-oci8

安装 TDM-GCC-64 从 TDM-GCC 的项目地址下载最新版的 TDM-GCC 64位版本安装。 设置 TDM-GCC-64 的环境变量 在 PATH 中加入 (TDM-GCC 安装目录)/bin 例如 C:\TDM-GCC-64\bin . 下载 instantclient-basic 及 instantclient-sdk 在 Oracle 官网 下载 basic 及 SDK.并将两者解压,例如 C:\installclient. 设置 instantclient-basic 的环境变量 在 PATH 中加入 instantclient-basic目录 例如 C:\installclient . 安装 pkg-config-lite 从 pkg-config-lite 官网 下载最新版将bin和share内文件解压到 TDM-GCC 对应目录下. 设置 pkg-config-lite 创建新文件夹用于储存 *.pc 文件,本例子中位C:\pkg_config_path. 并将环境变量中加入 PKG_CONFIG_PATH 并指向刚刚创建的文件. 创建 oci8.pc 在刚刚创建的文件夹内创建 oci.pc 文件,并将 C:/instantclient/sdk 替换为 instantclient-sdk 的安装目录 C:\pkg_config_path\oci.pc ---------- Name: oci8 Description: Oracle Instant Client Version: 12....

June 24, 2022 · 1 min · 张某