Matecho: 一款现代的, 简单得简陋的, 基于Material Design 3的Typecho主题KawaiiZapic/Matecho - Github特性极度优化的资源加载策略, 首屏仅需100KB资源(不包括图片), 按需延迟加载非必要的组件.使用Prism高亮代码, 额外增加的Vue SFC支持.Fancybox图片灯箱, 具有较好的触控支持.KaTeX公式渲染, 支持LaTeX语法.良好的响应式支持, 移动端/大屏端相同体验.增强的编辑器注入, 支持在编辑器中渲染代码高亮和LaTeX公式.Links友链插件集成, 无需修改即可启用.ExSearch即时搜索集成, 无需修改即可启用.OpenGraph / TwitterCard 支持, 在支持的应用中以卡片形式展示.特性(开发)Vite主导的开发体验, PHP到Vite Dev Server集成 (我一定是疯了) , 支持基本HMR, 使用Vite构建打包, 生成优化后的HTML/JS/CSS代码.UnoCSS原子化CSS, 简单组件简单构建.完全由TypeScript构建, 精确的代码提示.自动侦测的按需加载组件, 根据代码内容自动确定每页需要加载的组件, 实现精确的自动分包与懒加载, 也是极小首屏资源的基础.技术栈MDUI 2 (Web Component+Lit)UnoCSSViteTypeScript
联想ThinkBook 2021(或者更早的型号以及其他机型的任意型号) 空闲时自动关闭键盘灯
需要电脑已经安装Lenovo Vantage, 如果按下Fn+空格能够切换键盘灯则已经安装. 仅在ThinkBook 15 2021款测试过, 其他机型可能略有不同甚至不受支持.较旧的机型使用其他方式控制键盘灯, 脚本并未做支持.base_path各个系统可能不同, 可以尝试自行寻找有IdeaNotebookPlugin.dll和Contract_Keyboard.dll的目录.timeout单位为秒.将代码保存为Powershell脚本(.ps1)并设置开机自动启动即可, 无需管理员特权.PowerShell脚本:$base_path = "C:\ProgramData\Lenovo\ImController\Plugins\IdeaNotebookPlugin\x64" $timeout = 15 Add-Type -Path ($base_path + "\IdeaNotebookPlugin.dll") Add-Type -Path ($base_path + "\Contract_Keyboard.dll") $assembly = [System.Reflection.Assembly]::LoadFrom($base_path + "\IdeaNotebookPlugin.dll") $agent = $assembly.GetTypes()[0].GetMethod("GetInstance").Invoke($null,$null) $list = New-Object -TypeName Lenovo.Modern.Contracts.Keyboard.SettingList $request = New-Object -TypeName Lenovo.Modern.Contracts.Keyboard.KeyboardSettingsRequest $request.List = $list $item = New-Object -TypeName Lenovo.Modern.Contracts.Keyboard.Setting $list.Items.Add($item) $item.key = "KeyboardBacklightStatus" Add-Type @' using System; using System.Diagnostics; using System.Runtime.InteropServices; namespace PInvoke.Win32 { public static class UserInput { [DllImport("user32.dll", SetLastError=false)] private static extern bool GetLastInputInfo(ref LASTINPUTINFO plii); [StructLayout(LayoutKind.Sequential)] private struct LASTINPUTINFO { public uint cbSize; public int dwTime; } public static DateTime LastInput { get { DateTime bootTime = DateTime.UtcNow.AddMilliseconds(-Environment.TickCount); DateTime lastInput = bootTime.AddMilliseconds(LastInputTicks); return lastInput; } } public static TimeSpan IdleTime { get { return DateTime.UtcNow.Subtract(LastInput); } } public static int LastInputTicks { get { LASTINPUTINFO lii = new LASTINPUTINFO(); lii.cbSize = (uint)Marshal.SizeOf(typeof(LASTINPUTINFO)); GetLastInputInfo(ref lii); return lii.dwTime; } } } } '@ function GetBacklightStatus { $level = $agent.GetBacklightStatus() return ($level.List.Items | where { $_.key -eq "KeyboardBacklightStatus" }).value; } $state = 1 $level = GetBacklightStatus while (1) { Start-Sleep -Milliseconds 500 $idle = [PInvoke.Win32.UserInput]::IdleTime.TotalSeconds if($idle -gt $timeout) { if ($state -eq 0) { continue } $state = 0 $level = GetBacklightStatus $item.value = "off" } else { if ($state -eq 1) { continue } $state = 1 if ((GetBacklightStatus) -ne "off") { continue } $item.value = $level } Write-Host "Dispatch" $agent.SetBacklightStatus($request) }
NXT Chip是一个仅$9的迷你开发板, 拥有46个GPIO和2.4G Wi-Fi和蓝牙4.0模块, 公司已经跑路, 板子闲鱼可能有售.PocketChip是Chip的带屏幕, 电池及键盘版本.Chip resource mirror: http://chip.jfpossibilities.com/调整电源芯片(AXP209)设置: i2cget 0 0x34 [addr] / i2cset 0 0x34 [addr] [value]解除电池充电电流限制: i2cset -y -f 0 0x34 0x33 0xcf && i2cset -y -f 0 0x34 0x30 0x63需要root, 可能会变得很烫参数文档: https://linux-sunxi.org/AXP209禁止状态灯闪烁: echo none | sudo tee /sys/class/leds/chip\:white\:status/trigger > /dev/null状态灯显示硬盘状态: echo nand-disk | sudo tee /sys/class/leds/chip\:white\:status/trigger > /dev/nullReferer: https://web.archive.org/web/20200125083731/tenuki.fr/nio101/?p=816升级到Debian 11:更新所有软件包: apt update && apt upgrade -y替换source.list为中科大源: 配置生成器apt update && apt full-upgrade -y从U盘启动系统:将系统的RootFS烧进U盘内使用串口线连接到CHIP, 在开机时打断autoboot编辑启动参数:editenv bootargs root={BOOT DEVICE} rootfstype={FILESYSTEM TYPE} rw earlyprintk ubi.mtd=4 saveenv bootBOOT DEVICE可以直接按/dev/sda1的格式写, FILESYSTEM TYPE按实际情况填写.
Android和iOS阵营都有给设备充电的提示音, 但是Windows没有, 感觉少了点仪式感. 所以就想着给Windows也加一个充电提示音.@2021/09/12 更新重新组织了一下代码, 修复了将充满识别成断开电源的问题.\#0 获取充电状态第一反应是通过Windows日志获取电源状态更改事件, 然后用计划任务去播放声音.结果实际测试下来这种方法延迟很高(约5秒), 体验不大行, 所以直接使用VBScript去实现查询.我也不知道为什么要这样实现, 四处搜刮得到的代码, 能用就行.pngSet WMI = GetObject("winmgmts:\\.\root\WMI") Dim LastState Function GetCharge Set Query = WMI.ExecQuery("Select PowerOnline From BatteryStatus") For Each Status In Query If Status.PowerOnline <> LastState Then GetCharge = Status.PowerOnline Exit Function End If Next GetCharge = LastState End Function LastState = GetCharge While True Current = GetCharge If Current <> LastState Then If Current Then PlaySound("charge") Else PlaySound("discharge") End If LastState = Current End If WScript.Sleep 500 Wend\#1 播放声音然后cv一个播放声音的代码:Set Fs = CreateObject("Scripting.FileSystemObject") Set Player = CreateObject("WMPlayer.OCX") Function PlaySound(name) Path = "./"+ name +".mp3" If (Not Fs.FileExists(Path)) Then Exit Function End If Player.URL = Path Player.Controls.play End Function\#2 找点音效素材从几个不知名的国外网站上面凑齐了一套MIUI的充电音效:连接充电器:草了, 2021年了, 你的浏览器怎么还不支持HTML5断开充电器:草了, 2021年了, 你的浏览器怎么还不支持HTML5\#3 拼接一下代码Set Fs = CreateObject("Scripting.FileSystemObject") Set Player = CreateObject("WMPlayer.OCX") Set WMI = GetObject("winmgmts:\\.\root\WMI") Dim LastState Function PlaySound(name) Path = "./"+ name +".mp3" If (Not Fs.FileExists(Path)) Then Exit Function End If Player.URL = Path Player.Controls.play End Function Function GetCharge Set Query = WMI.ExecQuery("Select PowerOnline From BatteryStatus") For Each Status In Query If Status.PowerOnline <> LastState Then GetCharge = Status.PowerOnline Exit Function End If Next GetCharge = LastState End Function LastState = GetCharge While True Current = GetCharge If Current <> LastState Then If Current Then PlaySound("charge") Else PlaySound("discharge") End If LastState = Current End If WScript.Sleep 500 Wend\#4 开机启动计划任务就行, 就像这样:<?xml version="1.0" encoding="UTF-16"?> 2021-09-09T11:35:11.9499057 Zapic Play notify sound when charger connected or discconected. \ChargeNotify true S-1-5-18 LeastPrivilege <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy> <DisallowStartIfOnBatteries>false</DisallowStartIfOnBatteries> <StopIfGoingOnBatteries>false</StopIfGoingOnBatteries> true true <RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable> true false true true false false false PT0S 7 C:\Windows\ChargeNotify\daemon.vbs C:\Windows\ChargeNotify\ \#5 试一下草了, 2021年了, 你的浏览器怎么还不支持HTML5所有结果都在这个压缩包里了：ChargeNotify.zip (36.6KiB)把整个文件夹放到C:\Windows\下, 然后把文件夹里的ChargeNotify.xml作为计划任务导入即可.
需求有些时候不得不用非标准端口来建站.这时又想用Cloudflare爽一下,挂着个端口在外面死难看了,那咋办嘛.将白嫖进行到底,立刻使用免费Worker,每天免费10w次请求.快速开始原理解析看一眼代码就看懂了,还解析个锤子哦(由于Worker的Fetch API不能修改请求头的Host,所以我们额外加了一个Header把真实的Host传到后端进行处理.后端再改写Header用传过来的Host覆盖掉原来的Host,再传给Web服务器,这事情就算完了.很简单.png
zapic@localhost:~$ apt uodate E: 无效的操作 uodateFUCK????安装thefuck来拯救你的手癌!现在安装thefuck,输错命令了还可以口嗨一句(只需要有python3就好了:sudo apt update sudo apt install python3 python3-pip sudo pip3 install thefuck然后打开~/.bashrc,在末尾追加一行eval "$(thefuck --alias fuck)"然后重新登录就好了(使用效果差不多像这样:当然,也可以说茄语:eval "$(thefuck --alias wdnmd)"但是放心,你在登录时是fuck不了的(
最近莫名其妙脑子抽了就想给本地来个SSL,然后各种搜索OpenSSL签证书教程方法.花式openssl xxxxxx终于签出来一本证书.但是然并卵,自己签出来的证书即使加入证书库也并不受信任.然后突然发现签证书神器MKCert,还在GitHub开源了.液!GitHub链接使用就很简单.下载对应系统版本的MKCert然后解压赋权运行,然后: \1. 安装本地CA:mkcert -install然后...就好了!就这么简单!就这样一行命令,你就安装好了本地的CA!如果你还想让别的机器也能信任你签的证书…使用mkcert -CAROOT查看CA证书所在的位置,复制出来并粘贴到其他机器上使那台机器信任就好了.这个CA的证书路径可以使用\2. 给对应域名/IP签证书:当然是...随便签啦~mkcert www.zapic.moe #单域名签证 mkcert *.zapic.moe #泛域名签证 mkcert *.zapic.moe zapic.moe #多域名签证 mkcert 127.0.0.1 ::1 #IP签证 mkcert *.zapic.moe zapic.moe 127.0.0.1 ::1 #乱签证想怎么签就怎么签,不需要验证域名所有权.然后...