2025-05-29 13:00:00
在如今 AI 时代,个人开发者和企业都想要高效,经济,且容易部署的 AI 模型,尤其是 DeepSeek 横空出世之后使得个人在部署使用私有 AI 模型方面变得异常简单,但问题随之出现,普通人的电脑无法带动 DeepSeek 发布的更消耗内存更消耗计算能力的模型,普通用户也很难去给自己的每台电脑都配上英伟达 4090,更不用说去管理 GPU 集群,而普通开发者如果想要将自己的模型部署到云服务上也非常棘手,而这就是今天我要介绍的 Novita.AI 要解决的问题。
Novita.AI 是一个专为开发者设计的 AI 云平台,用户可以通过简单易用的 API 以及按需付费的 GPU 租赁,轻松地部署和扩展 AI 模型。无论是经验丰富的 AI 工程师,还是 AI 领域的门外汉,Novita.AI 都希望开发者将精力集中在创新,而非繁琐的云基础设施运维。
所以 Novita 提供了一整套面向 AI 开发者的解决方案,涵盖了包括模型部署,GPU 实例租赁,无服务 GPU,模型 API 等等核心服务,满足了从初创企业到大型机构在 LLM,文字生成图片,生成音频,生成视频等等方面多样化的需求。
Novita 作为一家初创公司正在以「为每个人,每个地方提供 AI Cloud」的景愿努力。
Novita 提供了超过 200 个 AI 模型的库,开发者可以通过简单的 API 调用,快速部署和集成这些模型到自己的应用中,这些模型涵盖了当前 AI 领域大部分应用场景,包括
这些模型都经过优化,具备生产环境所需的扩展性,可以让开发者更专注于 AI 功能的开发。
对于有特定需求的企业用户,Novita 提供了企业级的自定义模型部署服务,开发者无需关注底层 DevOps 工作,可以快速将定制模型部署到 Novita 云平台上,平台提供了性能保证,扩展能力,以及全天候的监控。
Novita 提供 GPU 实例租赁,提供 4090,A100,H100,L40 等 GPU 按需访问,这些 GPU 资源可以根据工作负载定制,也会根据用户的需求扩展到全球多个节点,将 GPU 实例部署在距离用户最近的位置,从而提升访问速度以及低延迟访问。
Novita 也推出了无服务 GPU 平台,进一步简化了 AI 模型的扩展和使用成本,用户只需要为实际消耗的资源付费,在空闲时期可以显著地缩减成本,但同时保证了高峰期的可用性。
使用我的邀请链接 注册 Novita 可以获得 10 美元的初始账户奖励,或者在注册时填写邀请码 07HIQH
,注册时完成如下的三个步骤
创建帐号,并且关联 GitHub 帐号,就可以获得 10 美元账户余额。
然后访问 Novita console 控制台页面。
在控制台中可以非常明显的看到 Novita 提供的三个核心功能
对于我而言,目前最实用的就是可以快速体验最新发布的模型,而不用我每次都下载到我本地来跑。
直接点击页面中的 DeepSeek 就可以快速进行提问,也可以在右侧对模型参数进行微调。
如果想在自己的应用内集成调用,可以参考 API ,Novita 提供了 OpenAI 兼容的调用模式。
这样就可以快速集成到自己的服务中了。
2025-05-23 13:00:00
在 Linux 上我使用 [[Guake]],到后来换成 macOS 之后使用 Kitty,直到前段时间更换成 Warp,但是没想到这几天又发现一款不错的终端 Ghostty。没查不知道,但是一查之后才发现 Ghostty 背后的作者的故事是多么精彩,并且 Ghostty 使用的 Zig 语言也是我第一次听说。
Ghostty 由著名的开发者 Mitchell Hashimoto(HashiCorp 联合创始人)使用 Zig 语言编写的一款终端模拟器,在速度,功能性方面都有不错的优势。
Ghostty 目标是成为一个更快,功能更丰富的下一代终端应用,它不仅支持 GPU 加速,macOS 上使用 SwiftUI 构建,Linux 基于 GTK 构建,还内置了很多现代化的功能,在性能和易用性之间找到了一个平衡点。
再进一步介绍 Ghostty 之前,我想先隆重介绍一下其作者 Mitchell Hashimoto。如果你在 DevOps,云计算以及软件开发领域工作,那么你一定对 Vagrant,Terraform,Packer 等等工具非常熟悉,而 Mitchell Hashimoto 就是这些作者背后的核心贡献者,他很早就热衷于编程,并且利用自己对这些技术的使用创办了 HashiCorp,极大地推动了云计算和基础设施自动化发展,深刻地改变了现代基础设施管理的构建和管理。
Mitchell Hashimoto 曾担任公司 CEO 和 CTO,但最终选择回归代码,宣布了 Ghostty 终端的诞生。
简单来说,Ghostty 是一个跨平台的、使用 GPU 加速的现代化终端模拟器。它的核心优势在于:
Ghostty 的目标是解决现有终端模拟器在性能,功能,稳定性和跨平台一致性方面的痛点,虽然 Ghostty 目前还在快速迭代和开发过程中,但是从 Mitchell 分享的内容和项目目标中可以看到 Ghostty 的一些核心特性和设计哲学。
macOS 上可以使用如下的命令
brew install --cask ghostty
Ghostty 主要通过一个纯文本配置文件来自定义,这对于熟悉 Linux 环境喜欢通过文本编辑器来配置的用户来说(比如说)非常友好,并且可以通过 dotfiles 来管理我的配置。
首次启动之后配置文件会在如下的位置。
$HOME/.config/ghostty/config
$HOME/Library/Application\ Support/com.mitchellh.ghostty/config
配置文件使用键值对格式。
font-family = "Monaco"
记得编辑配置文件之后,在 Ghostty 中重新加载一下配置。在 Ghostty 菜单中「Reload Configuration」。
背景和前景色
background = #ff66cc
foreground = #000000
Ghostty 内置了上百个主题。你可以使用 ghostty +list-themes
命令列出所有可用主题,这个命令会给出每个主题外观的预览
theme = GruvboxDark
Ghostty 提供了丰富的字体配置选项。
font-family
:设置首选字体系列。可以多次指定,用于字符回退font-family-bold
, font-family-italic
, font-family-bold-italic
:分别设置粗体、斜体和粗斜体的字体系列font-style
, font-style-bold
, font-style-italic
, font-style-bold-italic
:指定用于终端字体样式的命名字体样式,例如 “Iosevka Heavy” 的样式为 “Heavy”。可以将值设为 false
来禁用特定样式font-synthetic-style
:控制是否合成字体样式(粗体、斜体、粗斜体)。可以设为 true
或 false
,或使用 “no-bold”, “no-italic” 等禁用特定合成样式font-feature
:应用字体特性,例如 ss20
或 -ss20
(禁用)。要禁用编程连字 (ligatures),可以使用 -calt
font-size
:设置字体大小(以磅为单位),支持非整数值font-variation
, font-variation-bold
, font-variation-italic
, font-variation-bold-italic
:为可变字体设置字体变体值,格式为 id=value
,例如 wght=700
要列出系统上可用的字体,可以使用命令 ghostty +list-fonts
可以自定义键盘快捷键来执行特定操作。例如,创建一个快捷键 Ctrl+d
将当前 Ghostty 窗口向右分割成两个窗格
keybind = ctrl+d=new_split:right
Ghostty 还支持许多其他配置,涵盖鼠标和剪贴板行为、终端行为、启动会话等。例如,可以通过创建会话文件并使用 --session
命令行标志来控制启动时的标签页、窗口布局、工作目录和启动程序。
完整的配置选项列表可以在 Ghostty 的官方文档或相关配置指南中找到。
配置快捷键 Ctrl+D 分割窗口
keybind = ctrl+d=new_split:right
列出主题
ghostty +list-themes
在配置文件中使用
theme = Unikitty
可以配置将 Ghostty 窗口和内容使用相同的主题色
window-theme = ghostty
Ghostty 的出现,为我们这些追求极致效率的开发者提供了又一个新的选择。它不仅仅是一个简单的终端模拟器,更像是一个现代化的开发工作台。它融合了 Alacritty 的速度和 Kitty 的功能,并在此基础上进行了创新和优化。
虽然 Ghostty 还很年轻,但凭借其出色的设计理念、强大的性能和活跃的社区,我相信它有潜力成为未来终端模拟器领域的有力竞争者。如果你正在寻找一款新的终端工具,不妨给 Ghostty 一个机会,或许它会给你带来意想不到的惊喜。
2025-05-23 13:00:00
这两天遇到一个和 Docker 运行相关的问题,我们使用 Azure App Service 来运行服务,但是每次重启服务的时候,发现不会出发 Javalin 的 stop,感觉 Java 进程没有接受到 Docker 容器停机的信号,然后就被系统杀死了,所以就这个问题,仔细地研究了一下 Docker 运行以及如何优雅地关闭 Docker 容器中的 Java 进程。
信号是操作系统用于向正在运行的进程发送消息,使其以特定方式运行的一种方式,常见的情况是操作系统会向进程 ID 发送 SIGTERM 信号来终止进程,当我们执行 kill PID 的时候,也是发送 SIGTERM 信号。
使用 docker stop
命令时,Docker 会向容器内 PID 1 的进程发送 SIGTERM 信号,如果 Java 应用不是 PID 1 的进程,而是 Shell 的子进程,那么 SIGTERM 信号可能无法正确传递到 Java 应用。
当使用 Shell 脚本启动 Java 应用时,Shell 进程称为 PID,而 Java 进程成为子进程,Shell 进程不会将 SIGTERM 信号转发给子进程,导致 Java 应用永远不会收到关闭信号。
Azure App Service在容器关闭时会发送SIGTERM信号给容器内的PID 1进程。如果应用在默认的30秒超时时间内没有响应,系统会强制发送SIGKILL信号终止进程。
在 Dockerfile 中直接使用 exec 格式
# 推荐的CMD格式
CMD ["java", "-jar", "application.jar"]
# 而不是
CMD java -jar application.jar
Java 进程代替 Shell 进程,成为 PID 1.
对于 Javalin 应用,需要配置服务器的优雅关闭机制
Javalin app = Javalin.create(config -> {
// 配置优雅关闭超时时间
config.jetty.modifyServer(server ->
server.setStopTimeout(5000) // 等待5秒让现有请求完成
);
});
// 添加关闭钩子
Runtime.getRuntime().addShutdownHook(new Thread(() -> {
app.stop();
}));
// 配置服务器事件监听
app.events(event -> {
event.serverStopping(() -> {
System.out.println("服务器正在停止...");
// 在这里执行清理工作
});
event.serverStopped(() -> {
System.out.println("服务器已停止");
});
});
2025-05-22 13:00:00
这两天在 IBKR 上买了一点按月分红的 ETF,然后在邮箱中就收到了 IBKR 发过来的建议邮件,说 IB 还提供了一个共同基金的工具可以来寻找类似表现,但是费用更低的其他 ETF,这就是一款 ETF 发掘工具。
所以收到邮件之后,我就立即定了一个计划,晚上回来就登录 IBKR 的后台,下载 Trader Workstation(TWS),然后在其中找到了这一款工具。
Mutual Fund/ETF Replicator 是一个非常使用的分析工具,可以帮助用户找到相似业绩的共同基金和 ETF,通过比较可以找到管理费用更低的组合。
Mutual Fund/ETF Replicator 工具在 Trader Workstation(TWS)中
在 Mutual Fund/ETF Replicator 工具界面的“共同基金输入框”(Mutual Fund/ETF Entry) 面板中,您需要输入您想要分析的共同基金或 ETF 的代码 (Symbol)。
![[Pasted image 20250522230723.png]]
在 Browse Mutual Funds 中也可以通过基金家族来查找比选择特定的基金。
您可以根据自己的计划修改“投资金额”(Investment Amount),该金额将用于计算,如果要达到与原始基金相似的投资规模,需要购买多少推荐的 ETF。默认情况下,1 万美元的投资额,分别需要改买的股数。
流动性
在勾选「搜索时考虑流动性(Consider Liquidity During Search)选项,如果勾选此项,工具在筛选 ETF 时会优先考虑那些不仅管理费较低,而且流动性也较好的 ETF。流动性是指在不显著影响价格的情况下买卖证券的容易程度 这在市场波动较大的时候尤其重要 。
完成所有信息的入入之后,复制器会扫描市场并展示结果,通常会显示一个高度相关的单一 ETF 和一个可能高度相关的复合型 ETF。
你会在界面中看到如下的关键信息,包括了 ETF 代码、建议股数、投资百分比、基金全称、基金规模、基金类型、ETF 概览等等。
此外,该工具还会显示原始基金的基金家族,规模,所属行业,前端收费,后端收费,赎回费用等。
2025-05-21 13:00:00
去年黑五以及今年年初逛论坛的时候偶然间发现一款邮件托管服务 NameCrane,我自己一直都有发邮件的需求,我自己也有维护邮件服务器,但是看到有合理的邮件托管服务还是会忍不住多看一下,于是我就被 NameCrane 提供的终身套餐吸引住了。
NameCrane 的 CraneMail 是一个专业的商业邮件套件,集成了云存储、网页邮件客户端、垃圾邮件过滤等多种功能。它被定位为 Google Workspace 和 Office 365 的替代品,但价格更为亲民。NameCrane 是 BuyVM 旗下独立公司。
在黑五促销期间,NameCrane 推出了几个特别优惠的套餐,其中最吸引我的是 250GB 的终身套餐,只需一次性支付 69.42 美元。考虑到这个价格可以获得永久使用权,我毫不犹豫地购买了这个套餐。
目前,CraneMail 在美国(拉斯维加斯)数据中心提供服务,另外最近还推出了阿姆斯特丹数据中心。
使用 CraneMail 几个月后,我发现它的功能远超我的预期:
NameCrane 还给每个客户提供了 3 个免费的 eM Client Pro 许可证。
除了基本的邮件功能外,CraneMail 还提供:
NameCrane 内置了邮件迁移工具,可以轻松从现有邮件提供商迁移到 NameCrane 邮箱。只需要输入 Gmail,Outlook 等服务提供商,通过标准 IMAP 可以完成批量迁移。但是对于 iCloud 邮件迁移成功率比较低。
每个 CraneMail 账户都搭配 SpamExperts 的垃圾邮件过滤服务。过滤通过我们的本地 SpamExperts 节点进行。您可以访问控制面板来调整垃圾邮件过滤设置、释放/训练邮件等。
NameCrane 因为刚刚推出不就,还在不断更新新的功能:
FTPS信息
主机:us1.workspace.org
端口:8221
用户名:您的电子邮件
密码:您的密码
SFTP信息
主机:us1.workspace.org
端口:8222
用户名:您的电子邮件
密码:您的密码
这些新功能提升了在移动设备上使用的便捷性,用户可以获得实时邮件通知。
CraneMail BF 100G
100GB邮件+存储服务(100GB Combined Mail & File Storage)
可绑定15个域名
无限域名转发
无限Mailboxes
SpamExperts Premium Spam Filtering
600 Sent Emails/hour per Domain
$10 / 年, $20 / 3 年
CraneMail LIFETIME 250G
250GB邮件+存储服务(250GB Combined Mail & File Storage)
可绑定15个域名
无限域名转发
无限Mailboxes
SpamExperts Premium Spam Filtering
600 Sent Emails/hour per Domain
$69.42 / 永久
价格变动
值得注意的是,NameCrane 已经宣布从 2025 年 4 月 1 日起,CraneMail 终身计划的价格将上调。如果你对这项服务感兴趣,现在购买可能是最经济的选择。
使用 NameCrane 的 CraneMail 服务几个月后,我对其稳定性和功能非常满意。作为一个经常需要管理多个域名邮箱的用户,我特别欣赏它的无限邮箱功能和直观的管理界面。
邮件送达率一直保持良好,垃圾邮件过滤效果也很出色。云存储功能让我可以轻松分享大文件,而不必依赖第三方服务。最重要的是,一次性支付 69.42 美元获得终身使用权,让我不必担心未来的订阅费用增加,这在当今订阅模式盛行的时代显得尤为珍贵。
CraneMail 250GB 终身套餐提供:
这对于个人用户来说非常慷慨,尤其是可以添加多个域名的功能,让我可以为不同的项目或用途设置专门的邮箱。
如果你正在寻找一个功能全面、价格合理的邮件托管服务,特别是如果你需要管理多个域名和邮箱,NameCrane 的 CraneMail 值得考虑。虽然它可能不像 Google Workspace 或 Office 365 那样知名,但它提供了这些服务的大部分功能,而价格却低得多,尤其是考虑到终身套餐的长期价值。对于那些重视邮件服务稳定性和长期成本效益的用户来说,NameCrane 的 CraneMail 终身套餐是一个值得认真考虑的选择。
2025-05-21 13:00:00
在昨天 2025 年的 Google I/O 大会上 Google 一口气发布了超多的 AI 工具集,其中包括了一款叫做 Stitch 的 AI 工具,它可以快速帮助设计师和开发者将 UI 设计理念变成可实际使用的设计稿,生成设计稿之后可以直接导入到 Figma,或者直接导出成前端代码。所以本文就具体来介绍一下 Stitch。
Stitch 是 Google Labs 推出的一个实验性项目,它利用 Gemini 2.5 Pro 的多模态能力,帮助用户将简单的文本提示或图像输入转换成复杂的 UI 设计和前端代码。这个工具的核心理念是解决设计与开发之间的鸿沟,让两者之间的工作流更加流畅和集成。
传统上,将设计理念转化为实际代码需要大量的手动工作和反复沟通。Stitch 正是为解决这个问题而生,它能在几分钟内生成完整的 UI 设计和对应的前端代码。
设计师还可以让 AI 根据设计理念从既存的设计稿中修改元素或者整体修改,让设计师不用再大幅调整画面来验证想法。
Stitch 还可以根据用户的提示词来反复迭代修改给出的设计,微调或者大幅修改。
Stitch 支持两种主要的输入方式:
Stitch 由 Google 的 Gemini 2.5 Pro 和 Gemini 2.5 Flash AI 模型提供支持。用户可以选择这两种模型中的任何一种来为 Stitch 的代码生成和界面构思提供动力。
设计本质上是一个迭代过程,Stitch 通过允许生成多个界面变体来促进这一过程。用户可以尝试不同的布局、组件和样式,以实现所需的外观和感觉。
一旦对设计满意,Stitch 提供了关键的桥梁连接到开发工作流程:
Stitch 允许用户微调它生成的任何应用程序设计元素。用户可以通过交互式聊天、主题选择器和粘贴到 Figma 的功能,真正专注于他们的创意设计和开发需求。
在 Google I/O 大会的演示中,Google 产品经理 Kathy Korevec 展示了使用 Stitch 创建的两个项目:一个为书籍相关应用设计的响应式移动 UI 设计,以及一个用于养蜂的网络仪表板。
Korevec 将 Stitch 描述为”你可以来完成初始迭代,然后从那里继续前进的地方”。她强调,目标是使设计过程高度可访问和用户友好,特别是对于那些希望提升设计思维或软件开发的个人。
Korevec 也指出,虽然 Stitch 非常强大,但它并不是要成为像 Figma 或 Adobe XD 那样的全功能设计平台。
虽然之前已经有不少的平台发布了根据自然语言生成 UI 的功能,比如说 V0,Bolt.new 等等,但这些平台重点在于生成可直接使用的网页代码,在设计理念上并没有一个统一的方案,需要用户根据自己的需求调整提示词,而我自己的使用体验来说,我任意给了一些提示词,比如让其设计一个语言学习的应用,让其设计一个人事管理系统,都可以给出相对比较稳定的设计风格。
如果你脑袋中有很多想法,不妨先让 Stitch 来给你具象化,然后基于具体的设计稿再实现你的需求。