Skip to content

Instantly share code, notes, and snippets.

@tankxu
tankxu / VoHive-Deploy.md
Last active September 1, 2026 03:10
VoHive 仓库 / 固件 / 部署 / 升级 完全手册

VoHive 仓库 / 固件 / 部署 / 升级 完全手册

记录 vohive 的来源、二进制获取、在网心云 OES Plus(arm64)上的部署与升级方法。 整理时间:2026-07。当前 OES Plus 上运行 v1.5.15 原生 arm64/opt/vohive,systemd 服务,端口 7575)。


一、仓库现状(重要:官方已跑路)

  • 官方iniwex5/vohive(Go 源码)+ iniwex5/vohive-release(发布)
@tankxu
tankxu / export-zalo-group-mesasge.js
Created January 4, 2026 10:27
open a zalo chat web in browser, and run this script in conosle
// zalo_parser.js
(function () {
console.log("Zalo Parser extension loaded (Raw Data Mode).");
/**
* Parses the DOM to extract chat messages.
*/
function parseMessages() {
const messages = [];
const messageNodes = document.querySelectorAll('.chat-message[id^="bb_msg_id_"]');
messageNodes.forEach(node => {
@tankxu
tankxu / nanoid-mini.js
Created July 14, 2025 16:49
A nanoid function that can be directly copied and used
function nanoid(size = 21) {
const scopedUrlAlphabet = 'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict'
const POOL_SIZE_MULTIPLIER = 128
let pool, poolOffset
function fillPool(bytes) {
if (!pool || pool.length < bytes) {
pool = Buffer.allocUnsafe(bytes * POOL_SIZE_MULTIPLIER)
crypto.getRandomValues(pool)
@tankxu
tankxu / figma-reverse-layer-position.js
Last active July 1, 2025 19:41
Figma 脚本 - 颠倒排列选中图层位置
// 代码由 Figma Script Generator | PopLab AI App 生成
// https://poplab.ai/apps/tankXWAJ2nEm6h4bZWZFI
// 获取选中的图层
const nodes = figma.currentPage.selection;
if (nodes.length < 2) {
figma.notify("请至少选择两个图层");
} else {
// 保存原始位置
const positions = nodes.map(node => ({ x: node.x, y: node.y }));
// 获取当前选中的图层
const selection = figma.currentPage.selection;
// 过滤不可见或锁定图层
const visibleNodes = selection.filter(node => node.visible && !node.locked);
// 获取每个图层的左上角坐标
function getTopLeft(node) {
// 如果有绝对位置属性,优先使用
if ('absoluteTransform' in node) {
@tankxu
tankxu / copy-figma-team.js
Created July 18, 2022 08:59
Copy Figma team's projects and files to a new team
// Please input the srouceTeam id, targetTeam id, token, cookie
// Create a node project and install node-fetch
// Add `"type": "module",` to package.json
import fetch from "node-fetch";
// Id can be copied from team url
let sourceTeam = {
name: "source",
id: "",
@tankxu
tankxu / bulk-create-projects-in-figma.js
Last active July 14, 2022 02:56
Bulk create projects in Figma
// Create a node project and install node-fetch
// Add `"type": "module",` to package.json
import fetch from "node-fetch";
let folders = [
"folder1",
"folder2",
];
@tankxu
tankxu / README.md
Created March 17, 2022 09:27 — forked from pdanford/README.md
Launching iTerm2 from macOS Finder

Launching iTerm2 from macOS Finder

(Based on info from Peter Downs' gitub but with modified behavior to open a new terminal window for each invocation instead of reusing an already open window.)

The following three ways to launch an iTerm2 window from Finder have been tested on iTerm2 version 3+ running on macOS Mojave+.

pdanford - April 2020


//Open the branch by abstract app
let branchUrl = `abstract://app/share?branchId=${branchId}&commitSha=${commitSha}&kind=branch&projectId=${projectId}&sha=${projectSha}`
//Open the file by asbtract app
let fileUrl = `abstract://app/share?branchId=${branchId}&commitSha=${commitSha}&fileId=${fileId}&kind=file&open=true&projectId=${projectId}&sha=${projectSha}`
@tankxu
tankxu / huobi-btcusdt.10s.sh
Last active February 7, 2021 07:29
A plugin for bitbar
#!/bin/bash
icon='iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAQAAADZc7J/AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAAmJLR0QA/4ePzL8AAAAJcEhZcwAAFiUAABYlAUlSJPAAAAAHdElNRQflAgcGOAqejWIfAAABvUlEQVRIx8XVMWtaURQH8F+DGigUpNi4PMlmQShZW+rQJV8gEMiWqR9ASelWsVuw36BTN8nUj9DBgGuGxpItJEt8Uly6NIMd1Jf3fJooBvq/y7nn3nPu//7vufcyi0099ajX1o7sup6cBxEYOYl6V64i+8RIMDt94+GM9yMTs597Z1seZbWJ7xmRXcZ7Q5d++J1OtSs0WrKFdqdhT6LVLzx17HwJ1hUf/fEyyWLPSGPpjTeM7CVF3Gap1cc4n0QgY9ML5FOTirKx3q2bmfG8AH16kTT7pqyO5ggaOor47kfeXsZXr1G2E+Wuaxn47ja2XlZVC18iz5kLdKfdWoxBKLSV2tKWUBhjUEuKGN97QUc/5e/rKCjOutMJsiTIx4WUEHZBghWR0fbWuOZXQ0Mdp2sz2HCgpKS5cmRTScnBIzCYxVytseB80gluDFTnFlLVIHUjZNQnpXyHYy0/dVKlXPAh5jn0Bt21LxM5gUAzlmCMoiDWkiW8b6QpEMhl/HWN4Rwt7sfQdVzES1SWPrvKJMIjPqprP+tjFuOP5ZMz3ya+BlGZH9rxefHHMsX//BvHCP26eyqdxka6XqWfun8Asb8C/wJwfAAAADhlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAAqACAAQAAAABAAAAIKADAAQAAAABAAAAIAAAAACPTkDJAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDIxLTAyLTA3VDA2OjU0OjE5KzAwOjAwE5JqHgAAACV0RVh0ZGF0ZTptb2RpZnkAMjAyMS0wMi0wN1QwNj