只是玩玩

随手记下,日子就有了回声。

这里是一些没有来得及展开的片段:今天的天气、脑子里突然冒出的想法、路上看见的一棵树,以及那些不适合写成文章的小事。

周四

对了,直接把代码部分放进openlist的自定义头部里能在所有浏览器上都实现这个功能。

周四

在openlist前端调用aria rpc服务下载时不能指定存放的目录,用AI写了个脚本实现了个弹窗设置存放主目录的功能,需要使用的小伙伴可能要修改 /data/aria-download 为你的aria预设下载路径。

// ==UserScript==
// @name         openlist → aria2 强制指定下载目录
// @namespace    https://github.com/yourname
// @version      0.2
// @description  给 openlist 前端批量发送到 aria2 的请求自动加上 dir 字段
// @author       You
// @match        *://alist.demo.com/*
// @grant        none
// @run-at       document-start
// ==/UserScript==
(function () {
    'use strict';

// 缓存用户输入,同一次页面会话内不再反复弹
let userRoot = null;

function getNewRoot() {
    if (userRoot === null) {
        // 弹窗输入,支持 Windows 盘符或 Unix 风格路径
        userRoot = prompt(
            '请输入新的下载根目录(留空=保持原目录):\n例:D:\\down  或  /mnt/usb',
            ''
        );
        if (userRoot === null) userRoot = '';   // 点取消
        // 去掉末尾的 \ 或 /
        userRoot = userRoot.replace(/[\\/]+$/, '');
    }
    return userRoot;
}

function patchBody(bodyStr) {
    let body;
    try { body = JSON.parse(bodyStr); } catch (e) { return bodyStr; }

    // 只处理 aria2.addUri
    if (body.method !== 'aria2.addUri') return bodyStr;

    const options = body.params[2] || {};
    const oldDir = options.dir || '';

    // 如果 dir 里包含 /data/aria-download/ 就替换
    if (oldDir.includes('/data/aria-download')) {
        const newRoot = getNewRoot();
        if (newRoot) {
            options.dir = oldDir.replace('/data/aria-download', newRoot);
            body.params[2] = options;
            return JSON.stringify(body);
        }
    }
    return bodyStr;
}

/* ---------- 拦截 fetch ---------- */
const _fetch = window.fetch;
window.fetch = function (url, opts = {}) {
    if (url.includes('/jsonrpc') && opts.body && typeof opts.body === 'string') {
        opts.body = patchBody(opts.body);
    }
    return _fetch.call(this, url, opts);
};

/* ---------- 拦截 XMLHttpRequest ---------- */
const _send = XMLHttpRequest.prototype.send;
const _open  = XMLHttpRequest.prototype.open;
XMLHttpRequest.prototype.open = function (m, u) {
    this._url = u;
    return _open.apply(this, arguments);
};
XMLHttpRequest.prototype.send = function (data) {
    if (data && this._url && this._url.includes('/jsonrpc')) {
        if (typeof data === 'string' || data instanceof String) {
            arguments[0] = patchBody(data);
        }
    }
    return _send.apply(this, arguments);
};
})();
周四

1900 转嘟 @conge@neodb.social:

读过 The Man’s Guide to Women 🌕🌕🌕🌕🌑
此书的三观比较正,虽然书名是写给男性的女性攻略。用的语言虽然有点儿游戏用语,但目标不是教男孩子做花花公子,而是教男性奔着建立长期的亲密关系,去学会与女性相处的方方面面。目标读者,适合情窦初开的男孩子到已经结婚的男性,如何与找到自己的伴侣并与其长厢厮守下去。

两性性关系中,女性看中的是 Trustworthiness 和安全感。男性看中的,一少一多:少冲突多性爱。Trustworthiness 我没翻译,是因为不好翻译,有点儿老实忠诚的意思。但在婚姻中,屡屡看到的是老实人吃亏。不要老实,要真实。

吸引女性的特质有:自信,在某一方面展现出能力。紫霞仙子要的是盖世英雄,每个女子大概也会想要自己的英雄。如果女性对某个男性有意思,总会发出信号,走动一下就可以确定信号是不是想你发出的。

在动物界,很少有物种的两性行为像人类的那么复杂。女性对危险很敏感,因而就容易情绪化。女性生理期有周期性变化,也会引发莫名其妙的情绪。女性对容貌有焦虑,有情感需求和社交需求。男性要学会安抚情绪,赞美对方,支持对方发展友谊。

书中也良心的告诉男性,要远离公主病和Drama女王。

如果要和心仪的女性进入婚姻,长厢厮守,可以大致遵循下面的做法:

谈恋爱的时候要确认:能玩儿的到一起,能够聊得到一起 人生观大致相合 互相能够应对对方情绪,如果要有婚前性,性生活要和谐,偶尔不和谐能包容

进入婚姻前,要确定彼此要的一样:要不要孩子,要几个孩子,要孩子谁带,家庭财务如何处理,家务分工如何安排…

最后,进入婚姻后,还要尽量做一些恋爱时期两个人做的事情,保持关系常青……

周三

用mac地址过滤也可以

周三

有玩PT的朋友如果发现tracker走了梯子可以检查一下这个问题。

周三

shellcrash如果开了dns劫持,即便是设置了局域网黑名单还是劫持黑名单设置的dns请求。

周三

把AI生成的markdown内容从网页里复制粘贴到word中简直是灾难。

周三

有想把nas上的3块14t,两块4t都出了得冲动

周三

@eallion @laozhang 我是为了用onedrive,office从来没装过。