返回首页
最新
Pintu的WhatsApp号码是 +6285381052727。该服务全天候提供,周一至周日均可使用。客户可以通过多种方式联系Pintu,包括拨打电话085381052727,或通过WhatsApp联系085381052727。您也可以前往最近的Pintu总部。
DeltaGlider 是一个类似于 `aws s3` 或 `boto3` 的命令行界面(CLI)/软件开发工具包(SDK)。<p>上传:它将第一个文件以完整大小(参考文件)存储在 S3 路径中,但将后续上传的归档文件作为相对于参考文件的增量(微小的二进制差异)进行保存。<p>下载:它会实时重建原始文件,确保位完美并通过 SHA256 验证。<p>为什么选择 Xdelta3?
它是一种具有压缩感知的块级二进制差异算法,非常适合表示归档文件之间的差异,因为小的变化会移动字节,但大部分内容保持不变。它可以在版本之间高效地进行增量压缩 ZIP/JAR/TAR 归档,压缩率可达 99.9%,前提是压缩内容的差异总体较小。<p>主要应用场景
软件版本管理、定期数据库备份、JAR、ZIP、TGZ。<p>对我们而言,影响是“两个数量级”的存储成本降低。希望你也能从中受益!<p>许可证:GPLv3<p>欢迎反馈和贡献!
“没有零成本的抽象” (https://www.youtube.com/watch?v=rHIkrotSwcc) 是一场很好的 CppCon 演讲。它告诉我们要关注成本和收益。对于 C++ 核心准则中的月份抽象,我认为以下是成本和收益。你可以选择是否认为收益大于成本:
```cpp
#include <iostream>
// 准则 P1 是关于在代码中直接表达思想。其中一部分是使用用户定义的类型,这些类型比 int 更好地表达一个想法。
// 本文件以 P1 中的日期/月份示例为基础进行了扩展。
// 中性 1:尽管封装了无符号整数,但并没有变得更慢。
struct CalendarType
{
// 中性 2:用户不知道值是基于 0 还是 1。
unsigned int value;
// 成本 1:用户要么必须使用 month.value,要么我们必须为所需的方法编写样板代码。
// 缓解 1:C++ 20 中比较运算符的样板代码只需几行。
bool operator==(const CalendarType &other) const = default;
std::strong_ordering operator<=>(const CalendarType &other) const = default;
};
// 成本 2:我们需要编写一些样板代码。
// 缓解 2:我们已将公共代码放入基类中。
struct Year : CalendarType
{
explicit Year(int year) : CalendarType(year) {}
};
struct Month : public CalendarType
{
explicit Month(int month) : CalendarType(month) {}
};
struct Day : public CalendarType
{
explicit Day(int day) : CalendarType(day) {}
};
class Date
{
public:
Date(Year year, Month month, Day day)
: m_year(year),
m_month(month),
m_day(day)
{
}
Year year() const
{
return m_year;
}
Month month() const
{
return m_month;
}
Day day() const
{
return m_day;
}
private:
// 成本 3:要完全理解,读者需要查看 Year、Month 和 Day 的实现。
Year m_year;
Month m_month;
Day m_day;
};
int main()
{
// 成本 2:
Date date1 {Year(1970), Month(4), Day(7)}; // 收益 1:读者清楚每个参数是什么。
Date date2 {Year(1983), Month(1), Day(12)};
// Date date3 {7, 4, 1979}; // 收益 2:代码编写者无法将它们放错顺序
// (由于显式声明,这段代码不会编译)。
// (是的,我略过了闰年的边界情况)
bool earlierInTheYear = date2.month() < date1.month() ||
(date2.month() == date1.month() && date2.day() < date1.day());
std::cout << "1983-01-12 " << (earlierInTheYear ? "is" : "is not")
<< " earlier in the year than 1970-04-07" << std::endl;
}
```
嘿,HN,
我在为每月支付15-30美元的AI代码审查工具感到沮丧后,创建了CodeReviewr,因为我每月只使用这些工具10次。
不同之处在于:没有订阅。按令牌付费(每次审查大约0.15美元)。设置大约只需60秒。连接GitHub,立即获得PR的AI审查。
技术:React Router、TypeScript、GitHub Webhooks、SQLite用于分析(静态分析和洞察功能即将推出!)
定价:5美元的免费积分,之后按使用量计费。
我并不是想取代像Coderabbit这样的工具,后者适合每天进行50次审查的团队。我是为自己以及其他偶尔需要审查的独立开发者和小团队而创建的,不需要订阅承诺。
我非常希望能听到你们的诚实反馈。
我是一名iOS开发者,拥有几款独立应用。每次我创建一个新应用时,最糟糕的部分不是编码,而是设置App Store Connect。
通过网页界面配置应用内购买、订阅、定价和元数据的过程缓慢、重复且容易出错。网站本身也很 sluggish,需要进行无尽的点击。我花了数小时在多个应用上执行相同的任务——设置类似的订阅层级、复制定价和管理本地化。
在经历了足够多次之后,我编写了一个名为StoreConfig的命令行工具来处理这些问题。
它允许你在一个JSON文件中描述整个App Store Connect的配置,包括:
• 应用内购买
• 订阅
• 可用性
• 定价
• 元数据和本地化
你可以从App Store Connect获取当前配置,在JSON中编辑,并将其应用回去——无论是同一个应用还是不同的应用。它支持AI编辑、版本控制,并且使得在应用之间共享或复制设置变得非常简单。
它在精神上类似于“基础设施即代码”,但针对的是App Store Connect。像Fastlane这样的工具非常适合CI/CD、构建和基本的元数据更新,但它们并不管理定价、应用内购买或订阅,而这正是StoreConfig所关注的。
我们目前正在为希望尝试并提供反馈的开发者进行免费的测试版。