2024-12-27 Hacker News Top Stories #
- Blackcandy 是一个自托管的音乐流媒体服务器,旨在成为个人音乐中心。
- Portspoof 是一款旨在增强操作系统安全性的程序,它通过模拟所有 TCP 端口上的有效服务来迷惑扫描工具。
- Server-Sent Events(SSE)是一种从服务器向客户端发送事件的技术,允许服务器向客户端推送更新,而无需客户端请求。
- Egui 是一个易于使用的即时模式 GUI 库,使用 Rust 编程语言编写,支持 Web 和本地应用程序。
- CobolCraft 是一个用 COBOL 编写的 Minecraft 服务器,支持 Minecraft 1.21.4(当前最新版本)。
- 秒数与时区:POSIX 时间不是从 1970 年 1 月 1 日 00:00:00 开始算起的秒数,而是从协调世界时(UTC)开始算起的秒数。
- Sherlock 项目是一款用于搜索和识别社交媒体账户的工具,支持超过 400 个社交网络平台。
- Siyuan 是一个以隐私为首要考虑的个人知识管理系统,支持细粒度的块级引用和 Markdown WYSIWYG 编辑。
- Differential Growth Addon for Blender 是一个开源、免费的 Blender 插件,用于生成有机形状和模式。
- 阿塞拜疆航空公司的一架 Embraer 190 型飞机坠毁事件可能是由于一枚空中防御导弹意外击中飞机。
Blackcandy: Self hosted music streaming server #
https://github.com/blackcandy-org/blackcandy
Black Candy 是一个自托管的音乐流媒体服务器,旨在成为个人音乐中心。用户可以通过访问 https://demo.blackcandy.org 来尝试演示版,使用 demo 用户(邮箱:admin@admin.com,密码:foobar)登录。不过,演示用户没有管理员权限,因此无法体验所有功能,演示中使用的音乐均来自自由音乐档案(Free Music Archive),用户需注意相关许可。
** 安装 **
Black Candy 使用 Docker 镜像进行安装,用户可以通过以下命令快速运行 Black Candy:
docker run -p 3000:3000 ghcr.io/blackcandy-org/blackcandy:latest
或从 Docker Hub 拉取:
docker run -p 3000:3000 blackcandy/blackcandy:latest
安装完成后,用户可以通过浏览器访问 http://localhost:3000
或 http://host-ip:3000
,并使用初始管理员账户登录(邮箱:admin@admin.com,密码:foobar)。
** 升级 **
在进行重大版本升级时,用户需仔细阅读升级指南,因为可能会有一些破坏性更改。具体的升级步骤包括拉取新镜像、停止并删除旧容器,然后创建新容器。命令如下:
docker pull ghcr.io/blackcandy-org/blackcandy:latest
docker stop <your_blackcandy_container>
docker rm <your_blackcandy_container>
docker run <OPTIONS> ghcr.io/blackcandy-org/blackcandy:latest
如果使用 Docker Compose,升级命令如下:
docker pull ghcr.io/blackcandy-org/blackcandy:latest
docker-compose down
docker-compose up
** 移动应用 **
Black Candy 的移动应用可在各大应用商店下载,Android 用户也可以从 GitHub Release 下载 APK 文件。
** 配置 **
- ** 端口映射 **:Black Candy 默认使用 3000 端口,用户可以通过
-p
选项进行端口映射。 - ** 媒体文件挂载 **:用户可以将主机上的媒体文件挂载到容器中,并使用
MEDIA_PATH
环境变量设置媒体路径。 - ** 使用 PostgreSQL 作为数据库 **:默认情况下,Black Candy 使用 SQLite 数据库。对于需要更高性能或在云服务(如 Heroku)上托管的用户,可以使用 PostgreSQL。
- ** 数据持久化 **:所有需要持久化的数据都存储在
/app/storage
目录中,用户可以将此目录挂载到主机上以保持数据持久性。 - ** 使用 Nginx 传输文件 **:Black Candy 支持使用 Nginx 传递音频文件,这种方式比通过 Black Candy 后端处理更高效。用户可以使用 Docker Compose 设置 Nginx 和 Black Candy 的服务。
** 日志管理 **
Black Candy 默认将日志输出到标准输出,用户可以利用 Docker 提供的多种日志管理选项进行控制。
** 环境变量 **
Black Candy 支持多种环境变量配置,包括数据库 URL、媒体路径、数据库适配器、Nginx sendfile 设置等。关键环境变量包括:
DB_URL
:PostgreSQL 数据库的 URL。MEDIA_PATH
:设置 Black Candy 的媒体路径。DB_ADAPTER
:支持 SQLite 和 PostgreSQL。NGINX_SENDFILE
:控制 Nginx sendfile 的启用。SECRET_KEY_BASE
:设置应用的密钥,以避免旧会话失效。FORCE_SSL
:强制应用通过 SSL 访问。
** 开发 **
Black Candy 的开发环境要求安装 Ruby、Node.js、libvips 和 FFmpeg。安装依赖后,用户需要配置数据库,并可以通过运行 ./bin/dev
启动开发服务,随后访问 http://localhost:3000
进行登录。
** 集成 **
Black Candy 支持通过 Discogs API 获取艺术家和专辑的图像,用户需在设置页面中配置 API 令牌以启用此功能。
** 赞助 **
该项目得到了赞助支持。
HN 热度 590 points | 评论 252 comments | 作者:nateb2022 | 21 hours ago #
https://news.ycombinator.com/item?id=42512896
- 自建主机音乐流媒体服务器 Blackcandy
- Jellyfin 服务器和家庭助手很棒
- Jellyfin 适合备份物理媒体
- 可以使用 selfh.st 找到更多自建应用
- nginx-proxy 可以帮助记住域名而不是端口号
- Traefik 和 nginx-proxy 都可以用来反向代理和自动化证书
- Tailscale 和 Cloudflare Tunnels 可以用来保护访问
- 自建服务可以使用域名和 TLS 证书
- 有些服务不支持路径访问,只支持子域名
- 自建服务需要保护主页不被他人访问
- Home Assistant 可以用来构建家庭安全系统
- Frigate 适合用于 RTSP 相机的安全解决方案
- Konnected 可以用来复用已有的家庭安全系统
- 创建播放列表并将其拖放到手机上仍然是最佳体验
- Syncthing 可以用来自动同步音乐文件
- 手机存储成本降低,直接存储音乐文件成为可能
Portspoof: Emulate a valid service on all 65535 TCP ports #
https://github.com/drk1wi/portspoof
**Portspoof 概述 **
Portspoof 是一款旨在增强操作系统安全性的程序,它通过以下几种技术实现其目标:
- ** 所有 TCP 端口始终处于开放状态 **:无论攻击者尝试连接哪个端口,Portspoof 都会返回 SYN+ACK 信号,而不是告诉攻击者某个端口处于关闭或过滤状态。这样,攻击者无法通过常规的端口扫描(如 SYN 扫描)来确定系统上真实开放的端口,因为所有端口看起来都是开放的。
- ** 每个开放的 TCP 端口模拟服务 **:Portspoof 拥有一个庞大的动态服务签名数据库,用于生成虚假的服务横幅,从而迷惑扫描工具。扫描软件通常试图确定某个开放端口上运行的服务版本,而 Portspoof 会根据服务签名正则表达式数据库,动态生成有效的服务签名响应。
- ** 降低攻击者的侦察效率 **:结合以上两种技术,攻击者很难识别出系统的真实服务,唯一能够判断服务是否被模拟的方法是通过协议探测(想象一下要对 65,000 个开放端口进行协议探测的困难)。进行这一阶段的侦察需要耗费超过 8 小时的时间和 200MB 的数据流量。
** 主动防御的艺术 **
Portspoof 可以用作 “利用框架前端”,使您的系统变成一个响应迅速且具有攻击性的机器。实际上,这意味着利用攻击者的工具和漏洞来反击他们。目前在配置文件(portspoof.conf)中有一些示例利用。
Portspoof 的主要特点包括:
- ** 增加攻击者的侦察难度 **:大大延长攻击者侦察阶段的时间。
- ** 用户空间软件 **:不需要 root 权限。
- ** 每个运行实例仅绑定一个 TCP 端口 **:简化了管理和配置。
- ** 易于通过 iptables 规则进行自定义 **:提供灵活性。
- ** 低 CPU 和内存占用 **:采用多线程设计,资源占用极少。
- ** 拥有超过 9000 种动态服务签名 **:使攻击者扫描软件获取虚假信息。
** 作者与商业用途 **
Portspoof 的作者是 Piotr Duszyński(@drk1wi)。该软件遵循 GPL-2.0 许可协议。对于商业和合法应用,用户需要联系作者以获得适当的许可安排。
总之,Portspoof 作为一款轻量级、快速、便携且安全的程序,是任何防火墙或安全系统的重要补充,旨在让攻击者的侦察过程变得繁琐和耗时。
HN 热度 363 points | 评论 135 comments | 作者:nateb2022 | 1 day ago #
https://news.ycombinator.com/item?id=42509953
- 计算机安全将继续朝着"主动防御"的方向发展,类似于 Portspoof 这样的方法。
- MariaDB 默认设置使数据库监听端口 0 以禁用 Internet 访问,但这并不总是有效。
- 可以使用防火墙规则将端口 0 的流量重定向到其他端口。
- 端口 0 可以在某些 Linux 版本上绑定。
- Portspoof 可以用作"利用框架前端",使系统成为响应迅速且具攻击性的机器。
- 主动防御可能包括返回 zip 炸弹或使用诱饵来迷惑攻击者。
- 免疫系统是一个复杂而精妙的系统,但它并不完美,时常会出现错误。
- 人们对免疫系统的描述可能会暗示有一种"指导手",但这实际上是演化的结果。
- AI 可以用于创建高质量的诱饵来迷惑攻击者。
- 自然界中存在一些模仿的例子,例如蝴蝶翅膀模仿捕食者的眼睛。
Server-Sent Events (SSE) Are Underrated #
https://igorstechnoclub.com/server-sent-events-sse-are-underrated/
Server-Sent Events(SSE)是一种从服务器向客户端发送事件的技术,允许服务器向客户端推送更新,而无需客户端请求。SSE 是一种简单、轻量级的技术,适用于实时更新的应用场景。
SSE 的工作原理是,客户端向服务器发送一个 HTTP 请求,服务器保持连接打开,并向客户端发送事件。客户端可以使用 EventSource API 来接收和处理这些事件。
SSE 的优势包括:
- 简单易用:SSE 使用标准的 HTTP 协议,易于实现和集成。
- 低延迟:SSE 允许服务器实时向客户端推送更新,减少延迟。
- 低资源消耗:SSE 只需要保持一个 HTTP 连接,资源消耗较低。
SSE 的应用场景包括:
- 实时更新:SSE 适用于实时更新的应用场景,例如实时新闻、股票价格、聊天室等。
- 游戏:SSE 可以用于游戏中的实时更新,例如游戏状态、玩家位置等。
- IoT:SSE 可以用于物联网设备的实时更新,例如传感器数据、设备状态等。
SSE 的实现包括:
- 服务器端:服务器需要保持连接打开,并向客户端发送事件。
- 客户端:客户端需要使用 EventSource API 来接收和处理事件。
SSE 的注意事项包括:
- 浏览器支持:SSE 需要浏览器支持,目前大多数现代浏览器都支持 SSE。
- 事件格式:SSE 事件需要遵循特定的格式,包括事件类型、数据等。
- 错误处理:SSE 需要处理错误和异常,例如连接断开、事件格式错误等。
总之,SSE 是一种简单、轻量级的技术,适用于实时更新的应用场景。它的优势包括简单易用、低延迟、低资源消耗等。然而,SSE 也需要注意浏览器支持、事件格式、错误处理等问题。
HN 热度 302 points | 评论 134 comments | 作者:Igor_Wiwi | 1 day ago #
https://news.ycombinator.com/item?id=42511318
- SSE(Server-Sent Events)是一种被低估的技术,具有许多优点,包括实时更新、低延迟和高效率。
- SSE 可以用于替代 WebSocket,尤其是在需要实时更新和低延迟的场景中。
- SSE 有一些缺点,例如浏览器连接数限制和缺乏授权头支持。
- 可以使用 Broadcast Channel API 来检测浏览器标签页打开和关闭,以解决 SSE 连接数限制的问题。
- 服务工作线程(Service Worker)也可以用来解决 SSE 连接数限制的问题。
- SSE 和 WebSocket 都有自己的优缺点,选择哪种技术取决于具体的应用场景和需求。
- SSE 在实时更新和低延迟方面有优势,但在连接数限制和授权头支持方面有一些缺点。
- WebSocket 在连接数限制和授权头支持方面有优势,但在实时更新和低延迟方面有一些缺点。
Egui – An immediate mode GUI written in Rust #
egui 是一个易于使用的即时模式 GUI 库,使用 Rust 编程语言编写,支持 Web 和本地应用程序。它的目标是成为最简单、最快速且高度可移植的 Rust GUI 库,适合任何可以绘制纹理三角形的环境,如游戏引擎。egui 的官方框架是 eframe,支持在 Web、Linux、Mac、Windows 和 Android 上编写应用程序。
主要特点 #
- ** 易用性 **:egui 旨在成为最容易使用的 GUI 库,用户无需担心复杂的状态管理和回调。
- ** 即时模式 **:egui 采用即时模式,意味着用户每帧都需重绘界面,简化了应用程序代码结构。
- ** 跨平台 **:同一代码可以在 Web 和本地应用中运行。
- ** 简单的 2D 图形 API**:支持自定义绘制(epaint)。
- ** 无回调机制 **:在 egui 中,组件的状态和行为在每一帧中直接更新,而不需要保留状态。
使用场景 #
egui 适合需要简单 GUI 的 Rust 项目,尤其是游戏引擎中的 GUI。它不适用于希望创建本地外观界面的应用或对稳定性有高要求的项目。
集成 #
egui 可以轻松集成到现有的游戏引擎或平台。集成主要包括:
- ** 输入处理 **:收集鼠标、键盘等输入信息。
- ** 调用 GUI 代码 **:执行用户定义的 GUI 逻辑。
- ** 输出处理 **:处理 egui 的输出,如光标变化和纹理分配。
- ** 渲染 **:绘制 egui 生成的三角形网格。
目标与非目标 #
-
** 目标 **:
- 提供最易用的 GUI 库。
- 60Hz 的响应速度。
- 友好,容易上手。
- 纯粹的即时模式,避免复杂性。
- 可扩展性强,允许用户编写自定义控件。
-
** 非目标 **:
- 追求成为最强大的 GUI 库。
- 提供原生界面的外观。
状态与功能 #
egui 仍在积极开发中,功能不断更新。当前提供的功能包括:
- 各种控件:标签、按钮、复选框、滑块等。
- 图像支持。
- 布局管理:支持水平、垂直和列布局。
- 文本编辑功能。
- 窗口管理:可以移动、调整大小和关闭窗口。
- 渲染功能:抗锯齿的线条、圆形和文本渲染。
- 访问性支持。
FAQ #
- ** 非拉丁字符支持 **:可以通过加载自定义字体实现。
- ** 外观定制 **:支持通过 Context::set_style 自定义颜色、间距和字体。
- ** 异步支持 **:需保持 GUI 线程非阻塞,使用消息通道或共享内存来进行线程间通信。
- ** 文件对话框 **:支持原生和 Web 的异步文件对话框。
- ** 无障碍支持 **:通过 AccessKit 支持屏幕阅读器功能,当前在 Windows 和 macOS 上可用。
开始使用 #
用户可以从 egui 的示例文件夹获取简单示例,并通过相关文档和社区讨论获取更多信息。对于想要集成 egui 的开发者,提供了详细的集成指南和第三方集成的资源。
总的来说,egui 是一个轻量级且易于使用的 Rust GUI 库,适合希望快速开发简单交互界面的开发者。
HN 热度 273 points | 评论 134 comments | 作者:josephcsible | 23 hours ago #
https://news.ycombinator.com/item?id=42512636
- Rust 编译时间较长,可能需要使用 lld 或 mold 链接器来加速编译。
- Modules 不会解决编译时间问题,热重载可能是更好的解决方案。
- 低像素密度设备上,基于 canvas 的 UI 渲染库可能会有字体渲染问题。
- 即使在高像素密度设备上,子像素渲染仍然是必要的。
- egui 不适合用于普通的桌面应用程序,仅适合用于 2D 游戏或图形程序的叠加层。
- egui 需要一个对话框生成工具来减少重复代码。
- egui 仅在必要时重绘 UI,例如当有动画或输入事件时。
- egui 不适合用于大型文本框或滚动文本。
- Bevy 引擎支持 egui,用于游戏 UI 的开发。
A Minecraft server written in COBOL #
https://github.com/meyfa/CobolCraft
CobolCraft 是一个用 COBOL 编写的 Minecraft 服务器。它支持 Minecraft 1.21.4(当前最新版本)。该项目的特点包括:
- 无限地形生成和动态区块加载
- 持久化世界和玩家数据到磁盘
- 支持 Minecraft 的文件格式(导入现有世界)
- 多人游戏(最多 10 名玩家)
- 服务器状态(显示在线状态)
- 破坏和放置方块
- 方块交互(右键点击,例如打开门)
- 玩家物品栏(仅限创造模式)
- 聊天
- 命令(游戏内和交互式控制台)
- 通过 server.properties 配置
- 白名单(持久化,存储在 whitelist.json 中)
注意:具有多种状态、方向或交互式方块的方块需要大量专门的代码才能正常工作,这超出了本项目的范围。然而,一些方块是支持的,例如:
- 火把(所有变种)
- 石板(所有变种)
- 楼梯(非连接)
- 旋转柱,如原木或玄武岩
- 按钮(非交互式)
- 门(包括交互)
- 陷阱门(包括交互)
- 床
使用方法:
CobolCraft 使用 GnuCOBOL 开发,适用于 Linux。其他操作系统(如 Windows)的支持尚未测试。但是,可以使用 Docker 进行平台无关的部署。
要在 Linux 上部署,需要安装以下软件包:
- cobc(例如,来自 Debian 的 gnucobol APT 包)
- make
- g++
- zlib(例如,zlib1g-dev 在 Debian 上)
- curl(需要下载官方服务器 .jar 文件)
- 最新版本的 Java(需要从服务器 .jar 文件中提取数据)
然后执行 make 命令编译,接着执行 make run 命令启动服务器,监听端口 25565。
或者,使用 Docker:
- 拉取 Docker 镜像:docker pull meyfa/cobolcraft:latest
- 或者自己构建:git clone https://github.com/meyfa/CobolCraft.git cobolcraft && cd cobolcraft
- 构建 Docker 镜像:docker build –tag meyfa/cobolcraft .
- 运行 Docker 容器:docker run –rm –interactive –tty –publish 25565:25565 –volume “$(pwd)/server.properties:/app/server.properties” –volume “$(pwd)/whitelist.json:/app/whitelist.json” –volume “$(pwd)/save:/app/save” meyfa/cobolcraft
配置服务器:
编辑 server.properties 文件,该文件在第一次运行时自动生成,包含所有支持选项的默认值:
- 服务器端口(默认:25565)
- 白名单(默认:false)
- 服务器状态(默认:“CobolCraft”)
注意:默认情况下,服务器仅可通过 localhost 访问(即仅在本地系统上通过 localhost:25565 访问)。要使其可从外部访问(本地网络、VPN、端口转发、租赁服务器等),可以使用以下命令启动 Docker 容器:
docker run –rm -it -p 0.0.0.0:25565:25565 meyfa/cobolcraft
为什么:
COBOL 有很多谣言和耻辱。作者想了解更多关于这个语言的信息,最好的方法是通过一个项目。作者没有任何 COBOL 经验,但决定写一个 Minecraft 服务器。虽然 COBOL 不适合低级数据操作,但作者仍然实现了一个功能齐全的服务器。
HN 热度 258 points | 评论 81 comments | 作者:notamy | 21 hours ago #
https://news.ycombinator.com/item?id=42513022
- COBOL 语言虽然有很多负面传闻,但实际上它仍然可以用来做一些有趣的事情。
- COBOL 语言的面向对象编程风格很别扭。
- 用 FORTRAN 语言写程序可能会因为忽略空格而导致一些意想不到的错误。
- 现代语言可能会因为强调代码的可维护性和可读性而导致项目进展缓慢。
- 简单的语言可能更适合快速实现一个项目的原型。
- Rust 语言可能不太适合写游戏,因为它不擅长处理复杂的对象图。
- 代码的质量和语言的选择没有直接关系,取决于程序员的经验和态度。
- Bevy 引擎可能过度注重市场营销而忽略了实际功能的开发。
- Fyrox 引擎可能是 Rust 中一个更好的选择,尽管它不如 Bevy 引擎那么有名。
- 代码的质量和语言的选择没有直接关系,取决于程序员的经验和态度。
Seconds Since the Epoch #
https://aphyr.com/posts/378-seconds-since-the-epoch
这个网页是一篇博客文章,讨论了 POSIX 时间(也称为 Unix 时间)的概念。文章指出,POSIX 时间不是从 1970 年 1 月 1 日 00:00:00 开始算起的秒数,而是从协调世界时(UTC)开始算起的秒数。由于 UTC 时间会有闰秒的调整,POSIX 时间会随之变化。
文章解释了 IEEE 1003.1 标准中关于 POSIX 时间的定义,指出标准假设每天都是 86,400 秒长,但实际上 UTC 时间会有闰秒的调整。文章还提到,POSIX 时间的计算公式忽略了闰秒的影响,这导致了 POSIX 时间和实际时间之间的差异。
文章讨论了闰秒对 POSIX 时间的影响,指出闰秒会导致 POSIX 时间跳跃式变化,可能会导致软件 bug。文章还提到,有一些替代方法可以避免闰秒问题,例如使用 CLOCK_MONOTONIC 或 TAI 时间。
最后,文章提到,目前有一个努力正在进行中,旨在 2035 年之前取消闰秒,这将使得时间计算更加简单。文章还呼吁读者在 2035 年之前积累更多的闰秒,以便于将来进行时间转换。
HN 热度 246 points | 评论 172 comments | 作者:zdw | 24 hours ago #
https://news.ycombinator.com/item?id=42512371
-Leap 秒的存在使得时间戳的计算变得复杂,尤其是在跨越时区和日光节约时。 -有些人认为,Leap 秒的存在是必要的,因为它可以确保时间戳的准确性,但也有人认为它是不必要的,甚至是有害的。 -Unix 时间戳不考虑 Leap 秒,这意味着在 1970 年和 1971 年,Unix 时间戳与 UTC 时间戳不一致。 -有些人认为,UTC 时间戳应该与 TAI 时间戳保持一致,而不是考虑 Leap 秒。 -Leap 秒的累积可能导致时间戳的偏差,尤其是在长时间的计算中。 -有些人认为,应该使用 TAI 时间戳作为标准,而不是 UTC 时间戳。 -日光节约时的变化可能导致时间戳的计算变得复杂。 -有些人认为,时间戳的计算应该考虑到时区和日光节约时的变化。 -Leap 秒的存在使得时间戳的比较变得复杂,尤其是在不同系统之间。 -有些人认为,应该使用一个统一的时间戳标准,以避免时间戳的计算和比较中的复杂性。
Sherlock: Hunt down social media accounts by username across 400 social networks #
Sherlock 项目是用于搜索和识别社交媒体账户的工具。它支持超过 400 个社交网络平台,包括 Facebook、Twitter、Instagram 等。用户可以通过输入用户名来搜索相关的社交媒体账户。Sherlock 项目提供了详细的使用指南和支持文档,方便用户快速上手。同时,项目也开放了贡献渠道,鼓励开发者参与添加新的社交媒体平台支持。
HN 热度 245 points | 评论 147 comments | 作者:leonry | 1 day ago #
https://news.ycombinator.com/item?id=42509809
- 使用唯一的用户名可以防止被跟踪
- 使用相同的用户名可以避免被冒充
- 不要重复使用电子邮件账号
- 使用电子邮件子地址可以区分不同的账号
- 部分邮箱服务商支持使用"+“号作为标签来区分邮箱
- 部分邮箱服务商支持使用”.“号作为标签来区分邮箱
- 使用 OAuth/OIDC 协议的身份提供者可以使用”+“号作为标签来区分账号
- 部分邮箱服务商不允许创建多个账号绑定同一个手机号码
- 有些邮箱服务商提供了廉价的邮箱服务,允许创建唯一的邮箱地址用于注册网站
- 苹果的 iCloud 订阅服务提供了抛弃式的苹果邮箱地址功能
- 使用手机号码进行验证可能需要维护手机号码的独占访问权
- 市场上存在提供手机号码验证服务的需求,但成本相对较高
Siyuan: Privacy-first, self-hosted personal knowledge management software #
https://github.com/siyuan-note/siyuan
SiYuan 是一个以隐私为首要考虑的个人知识管理系统,支持细粒度的块级引用和 Markdown WYSIWYG 编辑。SiYuan 的主要特点包括:
- 内容块:支持块级引用和双向链接,自定义属性,SQL 查询嵌入,协议 siyuan:// 等。
- 编辑器:支持块级编辑,Markdown WYSIWYG,列表大纲,块级缩放,大型文档编辑,数学公式,图表,流程图,甘特图,时间轴,员工等。
- 数据库:支持表格视图,闪存卡,AI 写作和 Q/A 聊天等。
- Android/iOS/HarmonyOS App:支持移动端应用。
- Docker 部署:支持 Docker 部署。
- API:支持 API 接口。
- 社区市场:支持社区市场。
SiYuan 的架构和生态包括:
- 项目:SiYuan 的开发计划和进展。
- star 历史:SiYuan 的 star 历史。
- 路线图:SiYuan 的开发路线图。
SiYuan 的下载和安装包括:
- 应用市场:支持应用市场安装。
- 安装包:支持安装包安装。
- Docker 部署:支持 Docker 部署。
- Unraid 主机:支持 Unraid 主机安装。
SiYuan 的社区和开发指南包括:
- 社区:SiYuan 的社区论坛。
- 开发指南:SiYuan 的开发指南。
SiYuan 的常见问题包括:
- SiYuan 如何存储数据?
- 是否支持数据同步?
- SiYuan 是否开源?
- 如何升级到新版本?
- 如果某些块(如列表项中的段落块)找不到块图标怎么办?
- 如果数据存储库密钥丢失怎么办?
- 是否需要付费?
HN 热度 243 points | 评论 115 comments | 作者:thunderbong | 22 hours ago #
https://news.ycombinator.com/item?id=42512713
- 知识管理应该遵循"文件优先于应用程序"的 Unix 方式,使用目录结构、文件名、纯文本、列表和 Markdown 等工具进行管理。
- 使用通用概念对内容进行分类,如位置、事物、人物、事件、度量、方法等。
- 不要试图通过 Web 来解决问题,因为这会导致你花更多的时间解决 Web 本身的问题,而不是知识管理和生产力问题。
- 智能手机/触摸屏是一个主要问题,但也不要试图通过 Web 来解决它,应该使用文件管理器或 fzf 等工具来适应触摸屏。
- 标签功能是非常有用的,可以链接不同笔记之间的关系。
- 标签系统比层次结构更强大,因为一个项目可以有多个标签,但只能属于一个目录。
- 层次结构可以帮助创建一个更有条理的系统,促进思考和创造力。
- 标签系统容易变成一个"黑洞”,让内容难以被检索和利用。
- 使用纯文本文件和 fzf 等工具可以实现高效的任务管理和笔记系统。
- 同步和移动设备的支持是当前系统的痛点,需要找到合适的解决方案。
- Flutter Flow 等工具可以用来构建移动应用程序,但可能不适合所有人的需求。
Differential Growth Addon for Blender #
https://boris.okunskiy.name/posts/blender-differential-growth
本文介绍了 Differential Growth Addon for Blender,这是一款开源、免费的 Blender 插件,用于生成有机形状和模式。插件的作者认为,自然界的形状和模式一直以来都对人类产生着深远的影响和吸引力,人们总是试图模仿和反映自然界的过程。
插件的作者分享了一些使用 Differential Growth Addon for Blender 生成的有机形状和模式的例子,包括类似莴苣的形状、类似地衣的形状和类似藻类的形状。这些形状都是通过调整插件的参数和设置来生成的。
插件的作者还邀请读者下载最新版本的插件,并加入讨论社区,分享自己的作品和经验。同时,作者也希望读者能够享受使用插件的过程,并创造出更多的美丽的有机形状和模式。
HN 热度 240 points | 评论 27 comments | 作者:kelseyfrog | 20 hours ago #
https://news.ycombinator.com/item?id=42513157
- Blender 是一个令人难以置信的软件,几年前我问自己为什么要花数百个小时玩游戏,而不花同样的时间学习 Blender。
- 我最近才有了这样的顿悟,我是一个全职软件开发人员,多年来一直在研究游戏开发,但我一直放弃了我的想法,因为我无法制作“好的”艺术/资产。
- 我同意,一些软件你无法相信是免费的,我也做了一些非常糟糕的建模,甚至我的甜甜圈也不好看。
- 令人难以置信的是,一种细胞可以不断分裂,甚至血管在每个人身上都差不多。
- Houdini 是一个快速发展的目标,但看起来像 Blender 和 Unreal Engine 这样的软件——甚至在核心功能上,而不仅仅是插件——正在赶上它。
- 我很好奇,你的用例是什么,Blender 不是最合适的选择?
- 如果你足够聪明,你甚至可以使用所有这些来驱动你的几何图形、音频和着色器,在没有(文本)代码的情况下同时进行。
- 但是,对于真正的深度过程和模拟,任何涉及体积的东西,以及适应复杂的管道,我们谈论的是 etch-a-sketch 和油画之间的区别。
- 我想,如果 Blender 从一开始就是一个纯粹的程序化工具,并且只专注于该用例,那么差异将远远超出功能列表所示的内容。
- 我认为与其他建模专注的 DCC(如 Maya、Max 和 C4D)之间的差异要小得多。
- 但这个插件是基于 L 系统还是其他系统?为什么既网页也没有 GitHub 上的数学解释?
Air missile accident emerges as probable cause of Azerbaijan E190tragedy #
https://www.euronews.com/2024/12/25/azerbaijani-passenger-plane-crashes-near-kazakh-city-of-aktau
阿塞拜疆航空的一架 Embraer 190 型飞机于周三早晨在哈萨克斯坦的阿克套市坠毁,机上 67 人中有 38 人遇难。根据阿塞拜疆航空公司提供的信息遇难者中包括 37 名阿塞拜疆公民、名俄罗斯公民、6 名哈萨克斯坦公民和 3 名吉尔吉斯斯坦公民。
在飞往俄罗斯格罗兹尼的过程中,幸存乘客听到了一声巨响,随之感觉到飞机受到碎片的撞击,机身受损。相关调查的消息来源表示,这一事件可能与一枚空中防御导弹意外击中飞机有关。格罗兹尼因受到保护,成为乌克兰无人机的潜在目标,因此该地区的防空系统十分严密。
哈萨克斯坦的紧急事务部最初报告称,坠毁事件中有 25 人幸存,但随着搜救工作的进行,幸存者人数不断修正,最终确认有 29 人幸存。所有幸存者,包括两名儿童,已被送往医院接受治疗。
根据航班追踪数据,飞机在接近阿克套机场时出现了不寻常的飞行轨迹,似乎做出了一个数字八字形的飞行,并在最后几分钟内高度波动。此外,FlightRadar24 表示,该飞机在飞行过程中遭遇了强烈的 GPS 干扰,导致其传输错误的数据。
阿塞拜疆总统伊尔哈姆・阿利耶夫在新闻发布会上表示,目前尚不宜对坠毁原因进行推测,但确认由于天气恶劣,飞机改变了原定航线,前往阿克套机场,并最终在降落时坠毁。阿塞拜疆航空公司表示,将持续更新公众信息,并已在社交媒体上将其横幅更改为黑色,以表达哀悼。
HN 热度 213 points | 评论 145 comments | 作者:bratao | 1 day ago #
https://news.ycombinator.com/item?id=42511267
- 对于飞机尾部的损伤,许多人认为这可能是由于弹片造成的,生还者也证实了飞机内的爆炸声。
- 有人推测,可能是俄罗斯的防空系统误击了这架民航飞机,因为该地区正在进行无人机攻击,俄罗斯防空部队的反应非常敏感。
- 讨论中提到,民航飞机通常会使用应答器,能够识别为民用航空器,而无人机可能无法被正确识别,尤其在防空系统的操作中。
- 质疑为什么在活跃的战争区域仍然允许民航飞机飞行,认为应该停止这种做法。
- 有观点认为,飞行员在被击中后选择了远离战争区域的航线,尽管这样可能会增加飞行的复杂性和风险。
- 讨论了飞机失事后为何选择飞往哈萨克斯坦而不是靠近的机场,认为可能是由于对战区的避让。
- 有评论指出,当前的空域控制和通讯系统可能无法有效区分敌我目标,增加了误击的风险。
- 一些评论者提到,当前地区的多条机场关闭,导致飞行选择有限。
- 有人关注到,网络上对相关讨论的干扰,怀疑是否受到外部影响,试图引发争议。
- 对于此事件的外交解决方案持怀疑态度,认为过去的谈判未能成功,未来的前景并不乐观。
- 评论中提到,美国在欧洲安全上的战略失误,使得局势变得更加复杂,可能会引发更大的冲突。
- 许多人认为,民航和军用飞机的应答器系统存在本质区别,导致了民航飞机在战争中被误识别的风险。
- 一些人对飞机的结构表示惊讶,认为这次事故中幸存者的生存能力体现了飞机设计的坚固性。