Screego 浏览器屏幕共享

GitHub地址: https://github.com/screego/server 开发人员的屏幕共享,直接用浏览器 docker部署 https://screego.net/#/install?id=docker 获取公网 ip curl 'https://api.ipify.org' curl ipinfo.io docker启动,替换EXTERNALIP为公网 ip docker run -d --name screego -p 3478:3478 -p 5050:5050 -e SCREEGO_EXTERNAL_IP=EXTERNALIP ghcr.io/screego/server:1.12.0 http://EXTERNALIP:5050 是不能屏幕共享,需要用 https 访问 自签名证书配置 https 生成自签名证书 mkdir -p certs cd certs # 生成私钥 openssl genrsa -out screego.key 2048 # 生成证书请求 openssl req -new -key screego.key -out screego.csr # 用自己的 key 签发证书(有效期 1 年) openssl x509 -req -days 365 -in screego.csr -signkey screego.key -out screego.crt 执行后会有 screego.crt 公钥 和 screego.key 私钥 两个文件 ...

August 15, 2025 · 1 min · zhangxiaofeng05

Google Analytics

Google Analytics 打开 Google Search Console: https://search.google.com/search-console ,登录 添加网址前缀: eg: https://zhangxiaofeng05.github.io 选择 HTML 标记,将一行代码添加到网站的 head 中,完成后点击 验证 选择 编制索引 -> 站点地图 -> 添加新的站点地图。一般是 网址前缀+ /sitemap.xml。eg: https://zhangxiaofeng05.github.io/sitemap.xml 点击 提交。 替代品-umami https://github.com/umami-software/umami 使用官方网站: 有免费计划,最多3个网站,6个月数据,每月最多10万次获取 私有化部署: 无限制 hugo网站配置 主题一般默认支持 Google Analytics,增加配置即可 主题仓库不支持 umami,可自定义 在自己项目的 layouts 目录里创建一个同路径文件,覆盖主题里的同名文件,不需要直接改 submodule 假设我的主题目录是: themes/PaperMod/layouts/partials/extend_head.html 只需要在项目根目录创建同样的路径: layouts/partials/extend_head.html 执行命令,复制出来 mkdir -p layouts/partials cp themes/PaperMod/layouts/partials/extend_head.html layouts/partials/extend_head.html 在最下边增加以下内容 {{ if site.Params.analytics.umami }} <script defer src="{{ site.Params.analytics.umami.url }}" data-website-id="{{ site.Params.analytics.umami.id }}"></script> {{ end }} 和 Google Analytics 一样,在配置文件增加配置信息。

August 12, 2025 · 1 min · zhangxiaofeng05

scrcpy

github: https://github.com/Genymobile/scrcpy 不仅投屏,电脑还能控制手机 安装scrcpy https://github.com/Genymobile/scrcpy?tab=readme-ov-file#get-the-app mac https://github.com/Genymobile/scrcpy/blob/master/doc/macos.md brew install scrcpy brew install --cask android-platform-tools 手机只需要打开 USB 调试 红米 K60 PRO为例: 打开开发者模式 设置 - 我的设备 - 全部参数与信息 - 连续点击 OS 版本。直到打开开发者模式 打开 USB 调试 设置 - 更多设置 - 开发者选项 - USB 调试 用数据线连接手机和电脑 运行 scrcpy scrcpy 结束连接,直接退出 无线连接电脑和手机 处于同一 wifi ,电脑安装 scrcpy ,手机打开 USB 调试,用数据线连接手机和电脑 adb devices # 确保手机和电脑连接成功 查看手机 ip adb shell ifconfig wlan0 | grep "inet " | awk '{print $2}' 设置手机调试端口 adb tcpip 5555 连接手机 ...

July 28, 2025 · 1 min · zhangxiaofeng05

windows系统

windows镜像 微软官方镜像 英文: https://www.microsoft.com/en-us/software-download/windows11 简体中文: https://www.microsoft.com/zh-cn/software-download/windows11 不要选家庭版,选 适用于 x64 设备的多版本 ISO 建议安装专业版 创建 USB 启动盘 软碟通 https://www.ultraiso.net/ Rufus[推荐] https://rufus.ie/zh/ Etcher https://etcher.balena.io/ Ventoy https://www.ventoy.net/cn/index.html 安装windows时,选择【针对个人使用设置】会强制登录微软账户。选择另一个【注册工作或学校账户】- 登录选项 - 改为域加入。跳过登录微软账户。 PE 镜像 https://www.hirensbootcd.org/ 可重置 Windows 密码 激活windows/office http://www.yishimei.cn/network/319.html 各个版本系统和 office 都能激活,激活时需要关闭防火墙 https://kms.cx/ 【推荐】 安全,官方支持的kms激活方式,激活半年,无限续 https://github.com/massgravel/Microsoft-Activation-Scripts 开源激活脚本 windows KMS 客户端激活和产品密钥【官方激活密钥】,官方支持使用 KMS 激活,公开的激活密钥 https://learn.microsoft.com/zh-cn/windows-server/get-started/kms-client-activation-keys 查询激活状态 slmgr /xpr 查询激活详细信息 slmgr /dlv office 基于 KMS的 GVLK https://learn.microsoft.com/zh-cn/office/volume-license-activation/gvlks 查看 office激活状态 cd C:\Program Files\Microsoft Office\Office16 cscript ospp.vbs /dstatus 安装office 官方镜像 office部署工具 https://www.microsoft.com/en-us/download/details.aspx?id=49117 office自定义工具 https://config.office.com/deploymentsettings 下载office部署工具 在office自定义工具页面,选择批量许可证的office【例如:Office 专业增强版 2019 - 批量许可证】导出配置,重命名为config,文件中包含官方激活密钥 新建文件夹office,运行office部署工具,安装到此文件夹,将config.xml 也放到此文件夹下 下载命令 setup /download config.xml 安装命令 setup /configure config.xml 使用kms.cx激活系统安装批量许可证的office安装完就是激活的。 ...

July 21, 2025 · 1 min · zhangxiaofeng05

RustDesk

开源远程控制软件,客户端是开源的。 https://github.com/rustdesk/rustdesk 可直接使用 rustdesk 默认中继服务器连接其它客户端。 自托管 搭建自托管服务器 官方文档: https://rustdesk.com/docs/zh-cn/self-host/rustdesk-server-oss/ 推荐直接使用 Docker Compose 部署 https://rustdesk.com/docs/zh-cn/self-host/rustdesk-server-oss/docker/ 客户端配置 官方文档: https://rustdesk.com/docs/zh-cn/self-host/client-configuration/ ID 服务器: IP:21116 中继服务器: IP:21117 API服务器: http://IP:21118 Key: ed25519公钥(自托管服务器,docker compose运行路径的相对路径 data/id_ed25519.pub) 配置一个服务器配置,可导出配置,导入到其它客户端。 局域网 可通过 IP 直接访问

July 21, 2025 · 1 min · zhangxiaofeng05

mysql 全部数据导出导入

导出导入数据库 导出所有数据库 mysqldump -u root -p --host=127.0.0.1 --all-databases > all_dump.sql 导入所有数据库 mysql -u root -p --host=127.0.0.1 < all_dump.sql 数据库免费软件 dbeaver-community brew install --cask dbeaver-community https://formulae.brew.sh/cask/dbeaver-community navicat-premium-lite brew install --cask navicat-premium-lite https://formulae.brew.sh/cask/navicat-premium-lite

May 17, 2025 · 1 min · zhangxiaofeng05

ssh免密码登录

配置SSH无密码登录涉及使用SSH密钥对进行身份验证。以下是步骤: 1. 生成SSH密钥对 在客户端机器上(即你要登录的机器),使用以下命令生成SSH密钥对: ssh-keygen -t rsa 你会被提示输入文件保存位置(默认是~/.ssh/id_rsa)和密码短语(可以留空以便无密码登录)。 2. 复制公钥到远程主机 使用ssh-copy-id命令将公钥复制到远程主机上: ssh-copy-id username@remote_host 替换username为远程主机上的用户名,remote_host为远程主机的IP地址或域名。此命令会将公钥添加到远程主机上的~/.ssh/authorized_keys文件中。 如果没有ssh-copy-id,可以手动复制公钥: cat ~/.ssh/id_rsa.pub | ssh username@remote_host 'mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys' 也可以将~/.ssh/id_rsa.pub内容复制到服务器上的~/.ssh/authorized_keys 3. 确保权限设置正确 确保远程主机上的~/.ssh目录和~/.ssh/authorized_keys文件的权限设置正确: ssh username@remote_host chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys 4. 测试无密码登录 现在你可以测试无密码登录: ssh username@remote_host 如果一切正常,你应该能够无密码登录到远程主机。 5. 其他配置(可选) 为了更好地管理SSH连接,可以在~/.ssh/config文件中添加配置: Host remote_host HostName remote_host User username IdentityFile ~/.ssh/id_rsa 这样你可以通过以下命令登录: ssh remote_host 替换 remote_host 为远程主机的别名。这样可以避免每次都输入完整的用户名和主机名。

July 26, 2024 · 1 min · zhangxiaofeng05

mac m芯片在/根目录下创建文件报Read-only file system

关闭SIP以后还是有问题 没有效果 1. 重启 Mac 并在启动时按住 Command (⌘) + R 进入恢复模式。 2. 在恢复模式中打开终端(从菜单栏选择 Utilities > Terminal)。 3. 在终端中输入以下命令并按回车键: csrutil disable 4. 重新启动 Mac。 解决方法 本质:配置一个文件或文件夹软链到根目录 nvim /etc/synthetic.conf 在文件中添加以下内容 mydata /Users/firefly/mydata 中间是 tab 键 千万不要用空格,如果误用,可能需要进入恢复模式删除此文件 赋权命令:sudo chmod 777 synthetic.conf 重启电脑后,在/根目录就能看到新建的文件或文件夹了 参考: https://blog.csdn.net/weixin_50016308/article/details/118757508 https://stackoverflow.com/questions/58396821/what-is-the-proper-way-to-create-a-root-sym-link-in-catalina

June 11, 2024 · 1 min · zhangxiaofeng05

golang的json中的byte数组编码

golang的中json,marshal byte数组会默认对byte数组进行base64编码,编码成string,重写MarshalJSON方法保留原始数据 package main import ( "encoding/base64" "encoding/json" "fmt" "log" "strings" ) type JSONableSlice []byte func (u JSONableSlice) MarshalJSON() ([]byte, error) { var result string if u == nil { result = "null" } else { result = strings.Join(strings.Fields(fmt.Sprintf("%d", u)), ",") } return []byte(result), nil } type Param1 struct { Content []byte `json:"content"` Public string `json:"public"` Sig string `json:"sig"` } type Param2 struct { Content JSONableSlice `json:"content"` Public string `json:"public"` Sig string `json:"sig"` } func init() { // init log log.SetFlags(log.Lshortfile) } func main() { content := []byte("firefly") public := "pp" sig := "ss" log.Printf("content: %v", content) log.Printf("public: %v", public) log.Printf("sig: %v", sig) log.Println(strings.Repeat("-", 50)) p1 := Param1{ Content: content, Public: public, Sig: sig, } rr1, err := json.Marshal(p1) if err != nil { log.Fatal(err) } log.Println("json中的byte数组 默认json编码") log.Printf("rr1: %s", string(rr1)) //content 因为是byte数组,默认用base64编码成string contentBase64 := base64.StdEncoding.EncodeToString(content) log.Printf("contentBase64: %s", contentBase64) log.Println("json中的byte数组 默认json解码") var r1Decode Param1 err = json.Unmarshal(rr1, &r1Decode) if err != nil { log.Fatal(err) } log.Printf("r1Decode: %+v", r1Decode) log.Printf(string(r1Decode.Content)) log.Println(strings.Repeat("-", 50)) log.Println("json中的byte数组 自定义byte数组编码的json编码,保留byte数组原始数据") p2 := Param2{ Content: content, Public: public, Sig: sig, } rr2, err := json.Marshal(p2) if err != nil { log.Fatal(err) } log.Printf("rr2: %s", string(rr2)) log.Printf("json中的byte数组 自定义byte数组编码解码的json解码,使用byte数组原始数据赋值到结构体") var r2Decode Param2 err = json.Unmarshal(rr2, &r2Decode) if err != nil { log.Fatal(err) } log.Printf("r2Decode: %+v", r2Decode) log.Printf(string(r2Decode.Content)) } 输出 ...

March 9, 2024 · 2 min · zhangxiaofeng05

Connect Mysql8 Error

服务以前连接mysql5.7,现在连接mysql8报错 code: 'ER_NOT_SUPPORTED_AUTH_MODE', errno: 1251, sqlState: '08004', sqlMessage: 'Client does not support authentication protocol requested by server; consider upgrading MySQL client' 原因: mysql5.7 认证默认是mysql_native_password,mysql8默认是caching_sha2_password 解决方式: 创建数据库时,指明mysql_native_password docker run -d --name mysql8 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -v mysql8:/var/lib/mysql mysql:8.0 --default-authentication-plugin=mysql_native_password 修改数据库,将用户认证的caching_sha2_password改为mysql_native_password # $ mysql -u root -p use mysql; select host,user,plugin,authentication_string from mysql.user; ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'; # ... 如果还有其他USER,把其他USER(mysql.sys,mysql.session,mysql.infoschema)也替换 flush privileges; 升级客户端,支持最新的认证 reference: https://stackoverflow.com/questions/50093144/mysql-8-0-client-does-not-support-authentication-protocol-requested-by-server

May 31, 2023 · 1 min · zhangxiaofeng05