795 字
4 分钟
这周看了什么[2]
2026-03-17

https://github.com/Majorfi/immich-places

部署了这个,装这个的主要原因是想修复一些照片的拍摄位置,Immich 本身也有大地图,但无法编辑,只能浏览,调整经纬度得在每张照片的小弹窗上编辑。

Immich Places 支持拖动编辑,左侧筛选出没有拍摄位置的图片,拖到地图上就能自动生成经纬度,然后同步到 Immich 上。

另外一提,Immich Places 的 UI 做的很好看,Immich 相较之下太保守了,纯纯的 Material Design。


https://www.therantydev.com/javascript-drms-are-stupid

DRM 是什么?DRM 是一种技术,用于保护数字媒体内容,防止未经授权的复制、分发和修改,DRM 通常用于音乐、视频、软件和其他数字媒体。

这篇文章主要就一个思路,不管你加密手段多高明,到浏览器上播放的时候,用的还得是解密后的数据。

除非用的是浏览器中自带的相关“加密”特性,让解密模块存在于浏览器内部,JS 碰不到,否则像 HotAudio 这种自己开发的毫无意义。

浏览器播放流媒体也是一样的道理,你可以把视频作为流的格式去传输,比如常见的 'm3u8',但大多浏览器本身的 video 元素还是无法直接支持流媒体,还得用 JS 去下载分片,然后依靠 Media Source Extensions 的相关 API 去组装数据,最后再让浏览器播放。


https://barvian.me/react-exit-animations

其实 exit animation 这块很多组件库都没好好处理,我是感觉这种东西组件库应该是得做好,而不是让开发者自己去处理。

Mantine 的 Modal 提供了 onAnimationEnd 回调,所以要实现可以在动画结束的清空表单,把关闭动作和动画动作分开,但自己处理总是有些麻烦。

就看这个文章提供的代码吧,先说 Suspense 组件,它是 React 自带的,用在异步组件的加载优化上的,功能大概是这样,他子组件“应该”是个 Promise 异步组件,如果子组件处在被挂起状态,那么它就会显示 fallback 中的内容,相反就表示异步组件加载完成,可以正常显示。

Suspense 有个特性,如果处在被挂起状态,那么子组件会被隐藏,但他的隐藏是通过 display none 实现的,换句话说,他只是不可见,但 DOM 结构还是存在的,并且还比较特殊,子组件状态依然会更新,但此时 React 不会去更新他的 DOM 结构。

这个正是我们需要的,组件正常更新(不影响应用),DOM 被冻结了。现在只差一个问题,子组件被隐藏起来了,所以这段代码的第二个功能就是想办法找到这个被隐藏的组件,然后将它的样式进行调整,把 display none 给去掉,展现一个快照,即便现在组件状态改变了,表单数据被清空了,在用户看来内容还是没变过。


https://www.canirun.ai/

一个检测电脑能跑哪些本地模型的工具。

这周看了什么[2]
https://blog.erio.work/posts/这周看了什么2/
作者
Dupfioire
发布于
2026-03-17
许可协议
CC BY-NC-SA 4.0