1 分•作者: olusmith•24 天前
返回首页
最新
1 分•作者: sshh12•24 天前
1 分•作者: hhs•24 天前
1 分•作者: thelastgallon•24 天前
1 分•作者: paulpauper•24 天前
2 分•作者: oleksg•24 天前
最近,我不得不阅读《C++ Primer》这本书,但我就是看不下去。也许是因为现在有了 Claude 和 Codex,我的注意力变得不集中了,也许是我太懒了……但我就是无法集中精力。
在阅读时,我需要做点什么。我想与文本互动,我想留下笔记,我想用键盘快速翻页。
在 Mac 上唯一可行的好选择是“预览”,它还可以,但绝对不够理想。所以我主要为自己构建了 Quincy。
有了它,你可以:
- 与你正在阅读的页面进行“对话”,创建关于该页面的测验,并获得一份不错的摘要。
- 让页面“朗读”。让你的 Mac 读给你听,同时你跟着阅读。这有助于理解。
- 复制文本(粘贴到 LLM 中)、留下笔记、书签等。
- 以及一个优秀的 PDF 阅读器应有的其他功能。
它是完全本地化的。目前还没有云同步。所有 LLM 调用都基于你的密钥。说实话,即使不使用 AI 功能,它也很有用。
试试看吧。告诉我你们的想法。这是一个快速的项目,所以还有很多粗糙的地方。我计划继续维护它(我还没读完我的书),并可能在未来开源。
1 分•作者: worik•24 天前
1 分•作者: ksec•24 天前
1 分•作者: conchaestrada•24 天前
10 分•作者: ColinWright•24 天前
2 分•作者: tcp_handshaker•24 天前
1 分•作者: cwwc•24 天前
1 分•作者: ksec•24 天前
2 分•作者: mhb•24 天前
1 分•作者: ColinWright•24 天前
1 分•作者: kaycebasques•24 天前
几年前,我向美国的一个主要政党捐款。我可能留下了我的电子邮件和电话号码,或者他们找到了它们。这是一个巨大的错误。现在,我收到了数百封来自随机政治候选人的电子邮件和短信,我从未明确表示支持他们中的任何一个,也不知道他们中的任何一个。所以,看起来这个政党把我的电子邮件和电话号码放在某个中央名单里,然后分发给他们所有的候选人使用。是这样吗?我能做些什么来把我的联系方式从这个糟糕透顶的名单上移除吗?
3 分•作者: YesJustWolf•24 天前
我编写代码已有四十多年,使用过多种语言,参与过许多项目(如果您还记得的话,包括 Firefox、Final Cut Pro、Newton 和 Fullwrite Professional;所有这些都使用了我的“旧名字”)。
我写了一个小而简单的东西来解决一个痛点。这就是 UNIX 的哲学:小巧的“一招鲜”工具,每个工具都*非常*擅长它唯一的功能,然后用户可以将它们连接起来解决实际问题。我是一个命令行(CLI)用户,对于几乎所有事情,我已经实现了这一点。但调试不行。我解决的痛点是那个能够实现调试这一哲学理念的连接器。那个东西就是 dap-mux。一个 DAP 多路复用器,将一个一对一的协议转换成一个协作的会话,其中包含您完成工作所需的任意数量的工具!
它的起源:对我而言是 Helix 和 Python(有时是 IPython),而我的团队其他成员使用 PyCharm(我一直很喜欢!)。我团队的问题是他们想要 PyCharm 的调试器,因此必须满足于 JetBrains 编辑器。*我的*问题是我可以拥有一个功能齐全的调试器*或者*我可以拥有 IPython*或者*我可以拥有 Helix(有时是 Helix 和调试器的不令人满意组合)。这就是我的“痛点”。
DAP(Debug Adapter Protocol,调试适配器协议)是诱人的答案,但又不是。DAP 是编辑器(那些不想编写自己的调试器)开始采用的标准。DAP 的问题在于它是一对一的。一个编辑器连接到一个调试器。就这么简单。这并不是我问题的解决方案。然后突然间,它*就*成了解决方案。我意识到一个 DAP 多路复用器可以让你将任何支持 DAP 的编辑器连接到任何语言的任何调试器,同时还可以连接到一个 REPL,或者编辑器的另一个会话(或者另一个编辑器)!附带的好处是,现在,就像 screen 或 tmux 一样,由于每个进程都是独立的:会话是持久的。只需重启崩溃的任何东西,你就能回到原来的状态!
其中有一些困难的部分:序列化、延迟加入者、状态管理。不同的端点以不同的顺序处理不同的操作,但使用相同的消息 ID。我通过类似 NAT 的方式解决了这些问题。不过,我不是在翻译网络地址,而是在将每个客户端的序列号转换为全局有序的内容,然后将回复正确地路由回等待它们的端点,同时将这些回复的序列号映射回该端点的空间。了解调试器的当前状态,并将其作为消息序列重放给延迟加入者,可以让你以任意顺序启动/连接客户端。我选择了 Python:asyncio 非常适合 I/O 路由模式,并且它允许 IPython 扩展在进程内运行,而不是通过 IPC。
还有一些问题尚未解决:例如,我认为客户端中的配置和/或启动序列过于复杂。但它能正常工作!我得到了我想要的!
我每天使用的组合:Python + debugpy + Helix + IPython,所有这些同时连接。使用 `%n` 或 `%s` 进行单步调试,使用 `%eval` 评估表达式,观察 Helix 实时跟踪当前行。Rust 与 codelldb 是第二个已确认的组合——我使用 Helix 和一个第三方 DAP 观察工具调试了一个 Dijkstra 实现,这两个工具都连接到同一个 codelldb 会话。一位社区成员 Sean Perry 已经构建了 [dap-observer](https://github.com/shaleh/dap-observer),它可以将当前帧的变量渲染成一个可导航的终端树。*这*正是我的梦想!小巧、专注、可连接的工具协同工作!
还有很多可以尝试的:其他编辑器、其他调试适配器、Windows、其他语言。这些都还没有涉及。现在最有帮助的是人们用他们自己的设置进行测试,并报告他们发现的问题。是时候玩起来了!
对于 Python + IPython,请使用 `uv tool install 'dap-mux[ipython]'`。对于任何语言和适配器的无头使用,请使用 `uv tool install dap-mux`。无需 Python 生态系统的任何部分。
https://github.com/dap-mux/dap-mux
1 分•作者: s-macke•24 天前
1 分•作者: open_source_new•24 天前
一个代理。所有模型。零限制。
2 分•作者: vietthan•24 天前