Now 🚩
1900
纵使生活有千般不如意,也不要自暴自弃!
  • 心情 😢
  • 玩Switch,主要玩 小丑牌、绝对魔权。
  • 这几天玩游戏太上头,书没看几本,得干净找补找补了。
  • 已经七八个月没出去爬山了,26年想去冈仁波齐转山….。

之前一对joycon有个壳摔坏了,闲鱼上捡漏了一对这种渐变透明壳,只要10元,要啥自行车。顺便把原来的漂移摇杆换成了tmr电磁摇杆,又能爽玩了。小丑牌启动!

Frp打洞后内网Nginx反代
https://1900.live/frpda-dong-hou-nei-wang-nginxfan-dai

from 1900’Blog.

#博客

家里这台NAS从24年10月开组,系统用的飞牛OS,最开始用无线网卡出过几次问题,后来换成有限网卡后趋于稳定。不过官方最近报了个0day漏洞出来炸了锅,不过我情绪还算比较稳定,在期初系统选型时就在黑裙、OMV、truenas、飞牛之间犹豫了很久,最后还是选择了拿安全换方便。

机器从最开始的3D打印机箱+闲置硬盘上手,到后面的疾风知N52机箱+两块4T硬盘上手,后续为了「一步到位」换了10盘位的机箱+陆续上到了7块硬盘,那时的我还不知道短短一年多时间,当时买的这些硬盘能翻上好几倍变成了理财产品。

因为电信不给申请公网服务,所以选择了Frp+中继服务器打洞,当时图方便直接使用了Frp自带的转发服务,但随着玩机的深入,部署的容器服务也从此前的几个增长到了几十个,Frp转发服务的一些问题逐渐暴露出来,如:

  1. 个别服务需要用到WebSocket服务,但是Frp转发服务没法自定义这些配置,
  2. 不能对域名下的不同路径转发做处理
  3. 性能较差,我的体验是看影视资源经常要等个四五秒才能开始播放
  4. 每个服务一个配置项,管理不方便

所以昨天花了一两个小时从原来的Frp转发服务切…

我失业后能干啥
https://1900.live/what-can-i-do-after-losing-my-job

from 1900’Blog.

#博客

可能是因为行业持续低落我始终忍不住把一切往最坏的方面靠拢。

所以最近忽然开始思考,如果有一天我失去了目前的一切之后我还能依靠哪些技能继续找到足以糊口养家的体面工作?我感兴趣的又是那些方面呢?

广告制作

因为门店平时经常做活动,需要设计活动对应的广告传单、宣传物料等。最开始我们全是找外面广告公司来做的,但是感觉沟通成本太高了,效率、质量都不太让我满意。

所以在看了对方制作了几次之后我开始在自己电脑上安装CorelDraw,这是一个用起来有点类似Photoshop的设计工具,它更偏向矢量设计,但是没Adobe Illustrator 那么强大,不过排版功能很强大。

后来学会在nipic这种素材站上下素材,再做对应修改后做出更漂亮的成品,后续几次和广告公司老板沟通后发现我这水平在他们那里找一份5到6k的工作没有问题。

或者自己开个广告公司,其实接触这么多年下来,发现很多广告公司其实根本没有打印设备,都是找同城代打、印刷,如果本地没有还能联系成都的同行进行处理,所以理论上有人和电脑就行了,当然这方面最重要的当然是客户,我目前接触过这么多产品代理,零售店,真要去做资源这块应该还是没问…

花了一两个小时把nas服务原来用frpc自带的代理功能改成了由nginx处理。
感觉速度快了不少,以前用emby看视频经常要等上好一会,现在都是秒加载了。

tinfoil的黑商店现在大多数都专向收费了,而且质量参差不齐。
所以用 https://github.com/a1ex4/ownfoil 自建了一个tinfoil游戏库,通过夸克网盘下载游戏进行更新,感觉还算比较方便。

GitHub - a1ex4/ownfoil: Switch library manager, with a self-hosted Tinfoil Shop.

GitHub - a1ex4/ownfoil: Switch library manager, with a self-hosted Tinfoil Shop.

Switch library manager, with a self-hosted Tinfoil Shop. - a1ex4/ownfoil

GitHub

对了,直接把代码部分放进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:

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

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

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

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

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

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

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

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

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

The Man's Guide to Women

The Man's Guide to Women

Results from world-renowned relationship expert John Gottman’s famous Love Lab have proven an incredible truth: Men make or break relationships. Based on 4

无评分 · NeoDB 图书

用mac地址过滤也可以

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

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