Skip to content

Instantly share code, notes, and snippets.

View viko16's full-sized avatar
🎯
Focusing

viko16 viko16

🎯
Focusing
View GitHub Profile
@viko16
viko16 / SKILL.md
Created February 5, 2026 16:26
gitcd skill 版
name description compatibility allowed-tools
git-clone
Clones a git repository into a structured directory tree (Host/User/Repo) following git conventions. Handles URL parsing and idempotency (skips if exists) purely via instruction.
Requires 'git' installed in the environment.
Bash

Git Structured Clone

This skill enables you to clone git repositories into a canonical directory structure: ~/Code/<Host>/<User>/<Repo>.

@viko16
viko16 / git-commit-command.md
Last active January 15, 2026 15:18
Git Commit Prompt 精简版

Read only staged files (git add) and ignore unstaged changes. Generate a Conventional Commits–compliant commit message based on the staged diff.

Format:

<type>(optional scope): <summary>
- <bullet 1>
- <bullet 2>
- 
@viko16
viko16 / add-jp-proxy-groups.js
Created September 18, 2025 14:01
根据节点名字添加一个 JP 分组
// https://mihomo.party/docs/guide/override/javascript
function main(config) {
// 创建一个新的代理组
const jpProxies = [];
const regx = /(||||||||JP|Japan)/i;
// 遍历所有代理,检查名称是否以 "Japan-" 开头
config.proxies.forEach(proxy => {
if (proxy.name && regx.test(proxy.name)) {
jpProxies.push(proxy.name); // 将符合条件的代理加入 JP 组
@viko16
viko16 / getDecimal.ts
Created June 20, 2019 13:04
获取一个数字的小数部分
/**
* 获取一个数字的小数部分,如果是整数则返回 0
*/
function getDecimal(num: number): number {
// 原理是先将数字乘以一定倍速,作为整数来计算
// 具体乘多大视乎小数点后有多少位 (10为基数的 x 次幂)
const BASE = Math.pow(10, (num.toString().split('.')[1] || '').length);
return num * BASE % BASE / BASE;
}
@viko16
viko16 / export.js
Last active May 13, 2019 06:41
兼容数组、对象解构的方法
// 比如 API 暴露
function useApi () {
const a = 'a'
const b = 'b'
const c = 'c'
return Object.assign([ a, b, c ], { a, b, c }) // 务必数组在前,否则无法维护下标
}
// 使用时既可以
const [ a, b, c ] = useApi() // react hook 风格的数组解构
@viko16
viko16 / appendLink.js
Created July 11, 2018 06:30
插入链接的写法
@viko16
viko16 / Redirector.json
Last active May 30, 2018 05:26
Chrome 扩展 redirector 我的配置导出
{
"createdBy": "Redirector v3.1.0",
"createdAt": "2018-05-30T05:26:18.152Z",
"redirects": [
{
"description": "cdnjs.cloudflare.com",
"exampleUrl": "https://cdnjs.cloudflare.com/foo",
"exampleResult": "https://cdnjs.loli.net/foo",
"error": null,
"includePattern": "*//cdnjs.cloudflare.com/*",
@viko16
viko16 / sync.md
Created March 13, 2018 01:52
同步上游代码

同步上游代码

# 配置 remote 指向上游仓库
git remote add upstream https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git
# 从上游获取
git fetch upstream
# 切回去自己的分支
@viko16
viko16 / pangujs-bookmarklet.js
Created October 14, 2016 03:06
召唤空格之神的小 bookmarklet
javascript:void(function(url, script) {
script = document.body.appendChild(document.createElement('script'));
script.src = url;
script.onload = function() {pangu.spacingPage()};
}('//cdn.bootcss.com/pangu/3.2.1/pangu.min.js'))
@viko16
viko16 / ip-notation.js
Created September 8, 2016 05:54
IP 地址的多种玩法
var ipStr = '180.97.33.107'
var arr = ipStr.split('.').map((el => parseInt(el, 10)))
// 十进制
var ten = arr[0] * Math.pow(2, 24) + arr[1] * Math.pow(2, 16) + arr[2] * Math.pow(2, 8) + arr[3]
console.log('http://' + ten)
// 十六进制
var sixteen = ten.toString(16)