我有一个Rust项目,需要发送kafka消息,容器化运行。我使用的是Rust 1.70版本,kafka类库使用的是rdkafka,但最近遇到一个非常奇怪的问题,我发现在没有修改任何依赖与Carogo.lock的场景下重新构建出来的镜像竟然无法发送消息。到生产后一直报错
Failed to produce kafka message: Message production error: MessageTimedOut (Local: Message timed out)
...
我有一个Rust项目,需要发送kafka消息,容器化运行。我使用的是Rust 1.70版本,kafka类库使用的是rdkafka,但最近遇到一个非常奇怪的问题,我发现在没有修改任何依赖与Carogo.lock的场景下重新构建出来的镜像竟然无法发送消息。到生产后一直报错
Failed to produce kafka message: Message production error: MessageTimedOut (Local: Message timed out)
...
前两天逛httpie的Github仓库,发现README写了一段有意思的内容
We lost 54k GitHub stars
有点好奇,就点进去看了一下,总的来说这是发生在2022年因为一次误操作把仓库从public改到private导致Github系统把原仓库5.4万的stars清零的悲惨事件。
到现在有一年时间也不属于什么新鲜新闻了,甚至可能看到这篇文章的很多读者都已经知道了这件事,接下来我就摘抄文章里的一些有意思的片段
...
背景环境信息
kubeadm init初始化集群很顺利,按照教程配置.kube目录,拷贝配置文件,安装网络插件,部署nginx也能访 问,但就是在启动Nginx时发现配置转发的集群内主机名找不到,这还是同一个Namespace下的。
初步判断可能是集群DNS问题,启动busybox进入命令行模式,看了一下/etc/resolv.conf没问题,直接ping其它pod IP发现ping不通,ping互联网IP发现也ping不通,这完全就是无网的状态啊~
...
如果你是一名程序员,那么配置一个语法高亮,支持在命令行显示时间、显示Git分支、推送拉取状态等等就显得非常有助于日常工作。
在Mac电脑上通常都是基于zsh配置,而如果你想懒省事的话,也有人家配好的profile,你直接用就好,它就是powerlevel10k。其中有一个功能我认为是比较常用的,就是当你敲入的命令存在系统的时候,它就会变成绿色,当你敲入一个命令系统中检测不存在时,就会变红色,这个校验可以让我们在执行前就能校验命令是否正确,极大提升工作效率,它也是zsh的一个插件,叫zsh-syntax-highlighting,点击链接到它的Github的主页提供了安装文档入口,支持很多包管理安装
...
邮件发送这个在Rust中总是有点问题,之前用lettre低版本测试没问题,后来腾讯企业邮箱升级做了一些限制调整,我调了好长时间,终于调通了。
Cargo.toml
[dependencies]
lettre = "0.10"
目前lettre最新版本就是0.10版本了。
sample.rs
use lettre::message::header::ContentType;
use lettre::transport::smtp::authentication::{Credentials, Mechanism};
use lettre::transport::smtp::client::{TlsParameters, Tls};
use lettre::{Message, SmtpTransport, Transport};
use log::{info, warn};
use crate::router;
fn send_mail(to_addr: &str, subject: &str, body: String) -> anyhow::Result<()> {
let email: Message = Message::builder()
.from("Qttc <blog@qttc.net>".parse()?)
.reply_to("Qttc <blog@qttc.net>".parse()?)
.to(to_addr.parse()?)
.subject(subject)
.header(ContentType::TEXT_HTML)
.body(body)?;
let creds: Credentials = Credentials::new(
"[Account]".to_string(),
"[Password]".to_string(),
);
let smtp_host: &str = "smtp.exmail.qq.com";
let tls_params: TlsParameters = TlsParameters::new("exmail.qq.com".to_string())?;
let tls: Tls = Tls::Wrapper(tls_params);
let mailer: SmtpTransport = SmtpTransport::relay(smtp_host)?
.port(465)
.credentials(creds)
.authentication(vec![Mechanism::Login])
.tls(tls)
.build();
match mailer.send(&email) {
Ok(_) => info!("Email sent {} successfully!", &to_addr),
Err(e) => warn!("Error sending email {} was error: {}", &to_addr, e),
};
Ok(())
}
...
前两天我就介绍过Github的Copilot X系列,到现在VSCode扩展Copilot Chat已经stable了,可以运行在正常稳定蓝色版本的VSCode里了。
如果你没有开通Copilot相关的服务的话,需要先到这里开通https://github.com/features/preview/copilot-x,其中Chat服务需要额外申请人工审批,有些人通过的快,有些人通过的慢,快的隔天就收到开通邮件,慢的比如我快两周。总之得收到开通的邮件之后才能在VSCode里安装Github Copilot Chat扩展使用。
...
GPT-4大火让很多人恨不得赶紧订阅试一试,即使20美元一个月也无所谓。如果你今天还没买,并且看到这篇文章,那么我劝你别买了~
首先第一个就是BitoAI的ChatGPT-4
因为OpenAI的ChatGPT-4并不适合研发,相比之下有比它更合适的工具,第一个是BitoAI的VSCode扩展ChatGPT GPT-4,引用一下它家的宣语
...
今年,完全没有元宇宙了,两年前火的不行,而今年由OpenAI的ChatGPT把GPT推到了人尽皆知的地步。连我日常一些不在科技领域的朋友甚至会主动问我GPT各种问题,加上媒体为了流量火上浇油更是不得了,为了能回答也为了赶上潮流,我特意买了Plus用了一阵,以下说说感受和体会。
对话的模式,以及能联系上下文的方式是干翻传统搜索引擎的核心能力,而要达到对话模式对语义的理解非常重要,首先要能从聊天室的文字中读出诉求,这一点我在测试GPT-3.5或者GPT-4感觉整体非常强大,基本上你正常文字表达与它沟通都没问题。
...
前段时间,有个朋友由于各种原因工作不顺利,36岁的他面临养家压力,他要重回深圳学习编程,问我意见。
我和他年纪差不多,25岁入这行,做了12年的开发,自然是希望能给这位朋友一点有建设性的建议而不是空虚的客套话,于是我给他说年纪是大了一些,即使跟班学几个月出来投简历时会面临比他小更多的应届毕业生竞争压力,甚至大多数公司愿意招进来一个经验少,基础知识差的重新培养,也不会招一个年纪大的,有管理成本。但这个行业不挑剔,如果本着先就业再慢慢提升的目的,也还是存在机会的,需要比应届生付出更多倍的学习时间拉开与应届毕业生的差距,提升自己的竞争力。
其实,换做是我,也未必有这么大勇气在36岁转行!
...
2021年Rust发布了新的edition,叫做2021。此前的edition是2018年发布的,将近三年才更新了edition,但是如果在往前看的话,是2015,似乎都是三年一更新。
如果现在项目是一个2018年或者更早的edition,推荐升级到最新的,升级的方法也很简单,先在项目下,执行以下语句
cargo fix --edition
如果不出错,就打开你的Cargo.toml文件,修改edition的值到2021
Cargo.toml
[package]
name = "qttc"
version = "1.0.3"
authors = ["Nicholas Lee"]
edition = "2021"
...