BLCL的博客小馆

归档 · 全部

首页

关于

归档

范围请求(Http Range Request)

Http Range Request允许服务器仅将 HTTP 消息的一部分发送回客户端。范围请求对于支持随机访问的媒体播放器、知道它们只需要大文件的一部分的数据工具以及允许用户暂停和恢复下载的下载管理器等客户端非常有用。下面是一个实现例子:import { createServer } from 'node:http'; import { createReadStream } from 'node:fs'; import { stat } from 'node:fs/promises'; const server = createServer(async (req, res) => { const filePath = 'test.mp4'; const range = req.head..

更多
loading..
Ubuntu

Ubuntu Xrdp

Foreword Ubuntu 使用window的rdp协议进行远程 Xrdp Ubuntu 使用 18.04版本 先更新一下,否则可能拉不到包 sudo apt update sudo apt-get upgrade 安装 安装xrdp sudo apt install xrdp -y sudo apt install xfce4 xfce4-goodies xorg dbus-x11 x11-xserver-utils -y 打开xrdp sudo systemctl enable xrdp sudo systemctl start xrdp 防火墙放行3389远程端口 sudo ufw enable sudo ufw allow 3389 sudo ufw re..

更多
stdout

1900年居然不是闰年?

看HN讨论 昨天2024-02-29有哪些闰年的bug,有一个吃惊了 >>> datetime.datetime.strptime('Feb 29', '%b %d') ValueError: day is out of range for month python的 datetime() 默认 year=1900。但是心里想 1900 不应该也是闰年吗? 查了下还真不是。囧。一年有 365.242374 天: 近似看成 365.25 天就是4年一润; 剩余的精度 365.25-365.242374 == 0.0076 天 而且,0.0076 ✖️ 400 == 3.0504,也就是每400年要润3天 结论就是每100年一润,但是每400年又不润 比如 1700, 1800, 190..

更多
stdout

穷人的supervisor OOM killer

厂里的docker上跑了个supervisord,用来把挂掉的进程拉起来。最近的问题不是进程挂掉,而是内存泄漏 跑着跑着内存爆了,然后宿主机OOM随机杀掉一个进程,结果占用内存最大的那个还活着,正常的进程反而gg,该漏的继续漏,然后反复OOM。想看下哪里漏了,--cap-add=SYS_PTRACE 也不给加,OOM策略也不给调,思来想去只能自己做防水补漏了。做起来也简单,supervisor再跑一套bash脚本即可: while true; do p=`ps --no-headers -xo rss,pid --sort=-rss | awk '{ if($1 > 1000000){ print $2 } }'` kill $p 2>/dev/null || echo ..

更多
loading..
stdin

Windows 任务管理器(taskmgr.exe) 作者讲趣闻

下文出自 Windows 任务管理器(taskmgr.exe) 作者 Dave W Plummer Windows 任务管理器(taskmgr.exe)趣闻:“保持简洁” 当你按下 Ctrl+Shift+Esc 时,winlogon 会启动 taskmgr.exe,并且它首先会寻找一个正在运行的进程实例,如果它通过了某些运行时检查,则激活该实例。这意味着激活任务管理器所需的时间,至少与读取exe文件的时间一样长,因此我想要保持它文件体积足够小。 故事是这样的,为了将整个东西保持在100KB以下(我记得它发布时是86KB),我无法负担得起链接CRT,但仍然想要使用C++。C++编译器假定CRT将被链接,以执行类似调用全局对象构造器之类的基本操作。因此,我最终做的是预先定义链接器需要从CRT中获取的部分,然..

更多
loading..
Keyboard

HTPC客厅多媒体键盘大盘点

Foreword 客厅增加一个键盘,可以在扩展后的电视上直接操作电脑,最适配这个需求的就是多媒体客厅键盘了,不过由于这个领域过于小众,实际上匹配合适的键盘非常难找,这里总结一下我找到的各种适配的键盘 HTPC,Home Theater PC,家庭影院电脑、客厅电脑,家庭媒体中心,我这里就是以PC构建的多媒体设备,类似的键盘都会有一个HTPC的标志,不够这么多年过去了,基本都被各种盒子接管了,HTPC这个概念反而式微了。 可是盒子被广电(主锅)和各大运营商、厂商强行霸占,本来不大的蛋糕硬是被分的支离破碎,最后留给客厅多媒体设备一地狼藉,无论是电视直播、还是各个视频网站都被限制,电视版和PC版本竟然不一样,很多功能也做了恶心人的限制,不得不让文艺复兴,回到HTPC时代突破封锁。 键盘 核心需求有几..

更多
loading..
stderr

LLM, RAG 和 Groq

最近跟朋友聊起LLM,RAG 究竟有没有用,能不能拿来做成产品或者服务。由于我对AI的了解也很肤浅,所以没太敢下结论。 但是今天突然想起一个趣事,相传 账单·大门 院士有一句名言「640KB ought to be enough for anybody」 这句话是不是他老人家说的不重要了,重要的是 IBM PC 的这个 640KB内存 的梗是绕不过去了。 后来发现 640KB 不够了怎么办?屎山上接着hack呗。于是发明了 EMM386 ,在CONFIG.SYS 里吟唱一句 DEVICE=C:\DOS\HIMEM.SYS 可以保平安。 如果人人都能用 Gemini 1.5 Pro 那个 1M context tokens, 那么 RAG 技术也没啥用了吧。猜想能用 RAG 卖钱的,估计跟定制 HIME..

更多
loading..
stdin

[ZZ]西周灭亡的根本原因是什么?

只想archive一下,原作者禁止转载,但是这样的好东西估计很容易消失。所以就无耻的复制粘贴了。 作者:于朝阳 签名:不读书,不求甚解。 发表:2024-02-21 16:09 IP属地:陕西 根本原因是——诸侯国向周天子要主权。 按照傅斯年的大东小东说,西周建立时,初封的齐国不是山东的齐国,而是河南南阳西的吕国。吕望那个吕。初封的鲁国也不是山东的鲁国,而是河南鲁山的鲁国。初封的燕国也不是北京那个燕国,而是河南的郾城县。这是周武王的初封。但后来平定三监之乱后,周王朝进一步向东夷区域深入,才将这些原本只是拱卫王畿的诸侯进一步远封到夷人区域。 比如山东的齐国原本是东夷的蒲姑国,鲁国原本是东夷的奄国,都是被周公和周成王相继平定的。但由于周初夷人区域仍然有大量的夷人,所以周初建立的更类似于一种殖民统治。即统治贵..

更多
loading..
Python

一日一技:Python工具脚本如何调用外层模块

我三年前写过一篇文章:《小问题大隐患:如何正确设置 Python 项目的入口文件?》。讲到Python项目应该如何正确组织代码结构。入口文件应该在最外面,调用关系应该是从外向内调用。而不要学Java,从一个很深层的文件夹里面往外调用。不过我在这篇文章的最后,也提到了一种例外情况,那就是工具脚本不受这个规则的限制。如下图所示。今天有同学在问我,这种情况应该怎么调用,才能让remove_outdated_data.py正确导入models里面的模块。我们今天就来说明一下。首先,我们来创建一个示例程序,结构如下图所示:其中,aa.py文件的内容为:12def i_am_func(): print('我是一个函数')test.py文件的内容为:1234from models.aa import i_am_f..

更多
GitFormat

代码格式化工具

Foreword 测试一下目前常用的一些代码格式化的工具,后续将其引入到CI流程中 Format Artistic Style Astyle,一个经典代码格式化的工具,在一些比较老的编译器或者是嵌入式中用的比较多 https://astyle.sourceforge.net/ 本身支持命令行直接调用,所以很适合集成到一些CI流程中 Usage: ------ astyle [OPTIONS] File1 File2 File3 [...] astyle [OPTIONS] < Original > Beautified When indenting a specific file, the resulting i..

更多
15678975