Logo

site icon102no | 把酒诗代码

记录作者从学生时代到成为PHP开发者的成长历程,分享技术与生活感悟。
请复制 RSS 到你的阅读器,或快速订阅到 :

Inoreader Feedly Follow Feedbin Local Reader

102no | 把酒诗代码 RSS 预览

热干面🍜

2024-11-20 00:00:00

好像整个湖北省算得上全国闻名的面食也就「热干面」这一款了,以前在武汉上学的时候,对于热干面的态度是不冷不热,不主动吃也不拒绝吃。虽然小时候在老家也有卖这个的,但是吃的频次也不算太高,只记得楼下有五毛钱一两,那时候早上上学,爹妈说早上可以吃二两热干面去,是的,那时候热干面不是用碗来计算,是用「两」这个单位。

热干面虽然没在我本人的面食排行榜靠前的位置,但是属于特别时不时的还是想吃上那么一碗,再加持上老家滤镜,写一篇文章还是没问题滴。

这第一个词儿的来源就是已经烫好的面,其实面已经是熟了的,一般的小店在头天晚上就把碱面煮好,一般放在一张大桌子上面,一边用筷子挑起来,一边撒油,一方面是可以快速降温,一方面是可以防止面粘在一起,有时候还会架上电风扇降温降的更快。这个过程称之为「掸面」,在油和这种力气活的作用下,掸出来的面一定是根根分离的。待面都晾凉之后,就可以等待出餐使用了。

直接徒手抓上个二两头天准备好的碱面到笊篱中,在沸水中来回搅动几下,上下荡一荡,整个过程也就那么个十几秒,最后控一控水,把笊篱中的面抖的稍微干一些,就可以放到碗里面了。

早餐摊点上装热干面的碗,一般都是一次性的纸碗,上班上学的很多也没空坐在位置上细嚼慢咽。飞奔,对就是这个词,在武汉上班上学的时候我就这么干过,左手端着热干面,右手拿着筷子,一边脚下不停,赶着上班上学,一边把热干面搅拌开,搅拌开之后直接大快朵颐,走到半路基本一碗热干面也干光了,擦擦嘴上的芝麻酱,遇到垃圾桶直接连同纸巾一起丢进去,继续赶路,整个过程行云流水。我依稀好记得更厉害的大大神,可以一边骑自行车一边吃热干面,属实是登封造极了。

热干面最开始发明的时候就是属于码头文化,码头上做气力活的工人们,在干活的间隙,快速便捷的进食一大碗碳水,这种没有汤水的冒热气的挂着芝麻酱的干爽面条无疑真的就是最好的选择。

黄色的碱面一直都是不可动摇的,后面也有做成热干粉、宽粉之类的其他主料,但是碱面总是不可替代,在老家我从小到大吃过的碱面差不多有三种,一种是细一点的圆面,一种是粗一点的圆面,还有一种是扁面,扁面通常拿来做汤面。热干面大都是粗一点的那种圆面,我个人是偏爱细一点的那种。

面里面的配料最最基本的就是辣萝卜丁+芝麻酱,有时候小店里有自助的酸菜沫和小葱,也都可以加上几勺子,有爱吃辣椒的加上点辣椒油。现在也有卤水搞上几锅在旁边,也算是多了几种配菜,卤水干子、香肠、卤蛋什么的,也可以让老板把里面的卤水搞一些到热干面里,加一些复合的味道。

也许真就应证了我同学说那句话:热干面是连着多吃几次就会腻,但长时间不吃就会想一下子的那种面。

Kong 3.7重磅上线!Kong AI Gateway 正式 GA!

2024-08-27 00:00:00

Kong Gateway 3.7 版本已经重磅上线,我们给 AI Gateway 带来了一系列升级,下面是 AI Gateway 的更新亮点一览。
文转载自 Kong Inc 公众号,原文查看 https://mp.weixin.qq.com/s/zMZpuEA1tI0UNlD7X7PP8A

AI Gateway 正式 GA

在 Kong Gateway 的最新版本 3.7 中,我们正式宣布 Kong AI Gateway 达到了通用可用性(GA)阶段。

现在,AI 开发者们可以专注于开发 AI 定制应用,比如利用大型语言模型(LLM)和检索增强生成(RAG)技术打造的聊天机器人,或者其他 AI 集成方案。他们无需再从零开始搭建底层架构,去构建保证 AI 应用在生产环境中安全、可监控的基础设施。Kong Konnect 和 Kong Gateway Enterprise 平台将提供所需的扩展性支持。

此外,Kong AI Gateway 现在也可以作为一个软件即服务(SaaS)解决方案完全部署在云端。同时,Kong 还推出了新的 Konnect Dedicated Cloud Gateways 选项,供用户进行云端部署。

Kong AI Gateway 可以用于广泛的场景,帮助加速新的人工智能应用程序在生产环境中的落地。

对现有的 OpenAI SDK 提供支持

Kong AI Gateway 允许让用户通过 OpenAI API 规范作为统一标准,访问其支持的所有 LLM。

使用开发人员熟悉的 OpenAI API 规范将大大简化大家上手的难度。

并且, Kong AI Gateway 原生支持了 OpenAI SDK 客户端库,进一步简化了构建 AI 代理和应用程序的过程。您只需将请求重定向到指向 AI Gateway 路由的 URL,即可通过 AI Gateway 使用LLM。

如果您已经使用 OpenAI SDK 编写了现有的业务逻辑,则可以重用它来使用 Kong AI Gateway 支持的每个 LLM,无需修改代码,因为它是100%兼容的。

引入流式 AI 消息支持

Kong AI Gateway 已在”ai-proxy” 插件中,对所有LLM引擎加入了对AI的流式交互能力的原生支持。这将解锁更多实时体验,而不用等待 LLM 完成处理后再发送回客户端。

在流式模式下,响应将以词元(token)为单位通过 HTTP 响应块(SSE)逐个发送。用户可以通过设置“ ai-proxy” 的以下属性来启用该功能:

1
2
3
4
config:
model:
options:
response_streaming: "allow"

功能启用后,客户端便可在请求体中显式地进行流式请求,例如:

1
2
3
4
{
"prompt": "What is 1 + 1?",
"stream": true
}

凭借这项新功能,Kong AI Gateway 的用户将能够打造更具吸引力和互动性的人工智能体验。

基于 Token 的高级限流能力 (企业版)

我们正在引入一项基于 token 请求量进行限流的企业级功能。通过启用新的“ai-rate-limiting-advanced” 插件,客户可以更好地管理组织中不同团队的 token 消耗水平,从而更好地控制整体 AI 开销。对于自托管 LLM 提供商,当应用程序中的 AI 流量增加时,客户将能够更好地调整其在 AI 基础设施上的流量。

Kong 已经提供了基于发送到 API 的请求数量进行速率限制的 API 速率限制功能。而新版“ai-rate-limiting-advanced” 插件则专注于所请求 AI token 的数量,并不考虑发送给它们原始 HTTP 请求的数量。如果客户希望同时对原始请求和特定AI Token进行速率限制,则“ai-rate-limiting-advanced” 插件可以与标准 Kong 速率限制插件结合使用。

ai-rate-limiting-advanced 插件是目前市面上唯一可以用于 AI 的速率限制插件。

基于 Azure 的内容安全能力 (企业版)

新的企业插件“ai-azure-content-safety”允许客户与包括“Azure AI”在内的多个内容安全服务无缝集成,以验证每个通过AI网关的prompt请求。这项功能也被所有ai-proxy插件的所有LLM引擎所支持。

例如:凭借该功能,客户可以使用 Azure 的原生安全服务策略,在 Kong AI Gateway 中检测和过滤所有不和谐的内容,并将该策略应用于所有 LLM 提供商的prompt请求,以实现内容安全的统一管理。

基于 URL 动态选择 LLM

该特性使用户可以通过客户端请求的 URL 路径动态调用所需的模型。同时,用户可以通过在插件配置中硬编码其名称来使用模型。通过启用此功能,Kong AI Gateway 便可以更容易地扩展到希望尝试各种模型的团队,而无需预先在 “ai-proxy” 插件中进行配置。

该功能可以通过 “ai-proxy” 的新 “config.route_source” 配置参数进行配置。并且,用户只需配置一次,便可使所有模型均通过识别URL路径的方式来动态地、灵活地调用。

支持 Anthropic Claude 2.1 Messages API

Kong AI Gateway 提供一个 API 接口,使用户可以随意调用部署在云端的或自托管提供商提供的模型。该接口在新版本中得到了扩展,以支持 Anthropic Claude 2.1 Messages 这样的通常用于创建聊天机器人或虚拟助手应用程序的API,用于管理用户与 Anthropic Claude 模型(助手)之间的对话交流。

基于用户需求, Kong AI Gateway 将持续增加对更多 LLM 的支持。

更新 AI 用量统计的格式

随着 Kong AI Gateway 进入 GA 阶段,我们已经更新了所有由 Kong 处理的 AI 请求的分析日志格式。

通过这种新的日志格式,用户可以测量 “ai-proxy”,“ai-request-transformer”和“ai-response-transformer” 所请求的每个模型的消耗情况。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
"ai": {
"ai-proxy": {
"meta": {
"request_model": "gpt-35-turbo",
"provider_name": "azure",
"response_model": "gpt-35-turbo",
"plugin_id": "5df193be-47a3-4f1b-8c37-37e31af0568b"
},
"payload": {},
"usage": {
"prompt_token": 89,
"completion_token": 56,
"total_tokens": 145
}
},
… more AI Plugins

这种新的分析日志格式取代了旧的格式,以便企业用户实现更精细化的用量管理。

豆角蒸面🍜

2024-05-27 00:00:00

「蒸面」、「卤面」、「焖面」,听上去都是河南特色的面食,可能是由于我的老家跟河南离得非常近,所以我从小到大也吃这个,家里也是经常做这个。不过我也不太能分得清这三者的区别,在我看来就是同一种面,而且在我家,「蒸面」和「卤面」的叫法会更多一些,做法也很简单。河南当地、陕西、山西好像都有这种面,有的是需要先整一下,有的是直接连锅焖,大同小异。

来深圳之后我也经常自己做着吃,稍微还原一下小时候的味道,也算是我第二喜欢的面食,自我排名应该是在《襄阳牛肉面》之后。

豆角

豆角蒸面顾名思义,豆角就是这个面食的主角,豆角可以用四季豆,或者是长的那种豇豆都可以,需要长时间的蒸煮,四季豆豇豆这种耐蒸耐煮的蔬菜就成了做蒸面最黄金的搭档。配料就是五花肉、或者加一些黄豆芽,但我本人又不喜欢吃黄豆芽,不喜欢黄豆芽里「豆」的那个口感,我自己做的时候就不放黄豆芽。也有其他地方加一些其他配料,比如茄子、番茄、土豆,我媳妇儿就喜欢里面加一些土豆。

从摘菜开始说起,豆角一般直接用手掰成段就可以,掰的时候顺便把两边的筋扯掉,要是特别嫩的豆角直接用刀切就行,我的习惯是掰。五花肉先放进去煸炒一下,我喜欢煸的干一些,多出一些猪油出来,蒸面这样的面多加上一些猪油会更香,感觉有点金黄色快要偏向褐色的时候,把提前准备好的葱姜蒜一股脑直接丢进锅里,滋啦一声香味和油烟一起迅速在厨房弥漫,要是锅里的火开的比较大,可能还会有「锅里着火」的盛景,不过这时候也不用着急,让调料和猪油热烈交织一会,也可以加一些八角桂皮之类的大料。葱姜蒜有点微微焦黄的时候可以下沥干水的豆角了,还是多煸炒一会,豆角有点皱皱的感觉,就可以放生抽老抽翻几下子,之后加上水盖上锅盖,锅开之后咕嘟上一会儿尝尝咸淡,我有时候比较懒的调味了,就丢一点火锅底料感觉也不错。

重要的一步来了,咕嘟的差不多了,感觉锅里的豆角大差不差的熟了,用勺子盛一碗汤起来,放到一边,就可以把面拿起来抖一抖,一边抖开一边往锅里丢,一定要丢的散散的开开的,这样蒸汽才方便照顾到每一根面条,面条盖住整个锅面之后盖上锅盖,中小火静候佳音。趁这时候的空挡,就把刚才的盛的那碗汤再放一点香油,或者根据喜好加点什么其他的调味料都可以。再切一点蒜末葱末一起备用。

根据面的多少,大约过个几分钟十几分钟不等的时间,厨房基本都是弥漫蒸面的香味了,就可以进行最后的一步操作:把那碗加了香油和调料的汤均匀撒到面上,撒的标准 是锅里的面条没有一根白色的最好,紧接着迅速的两手各执筷子,把面和下面垫着的配菜都抖散开,撒上蒜末葱末,再用铲子或者什么顺手的工具翻版均匀。整个操作行云流水一点,不要拖泥带水,趁着锅里的热气还有相当一部分热气的时候,盖锅、关火、焖!什么时候开始吃、什么时候开锅,这样一锅「我本人做的版本」的蒸面就大功告成。

蒸面用的面条最好是湿面条,主要有蒸的过程在,湿面条就更容易蒸熟,而且口感会更好一些、蒸的也会更均匀。如果用挂面就会太干,做出来比较容易干一块湿一块,调料也都不太容易入味、做的时间也得更久。

小时候吃妈妈做的蒸面的时候,就经常去楼下街对面的专门做面条的小店买一点湿面条,通常是宽面,但也没有特别宽,有时候是细面,我自己更爱细面一些。要是楼下的做面条的小店没开门,或者懒得跑出去买了,也会用挂面,就是得需要多加一点水、再多蒸一会儿,不然就很容易干的喇嗓子。

Kong Gateway 3.6.x 正式发布,较大改变!🦍

2024-03-02 00:00:00

原文地址:https://docs.konghq.com/gateway/latest/breaking-changes/
在升级之前,请审查此版本和之前版本中的任何配置或重大更改,这些更改可能会影响
当前的安装。

重大更改和弃用项

通用项

如果您在自定义代码中使用 ngx.var.http_* 来访问 HTTP 头,那么当同一个头部在单个请求中多次使用时,该变量的行为稍有变化。以前,它只会返回第一个值;现在它会返回所有值,以逗号分隔。Kong Gateway PDK header 获取和设置工作方式保持不变。

Wasm

为了避免与其他与Wasm相关的nginx.conf指令产生歧义,Wasm shm_kv nginx.conf指令的前缀已从 nginx_wasm_shm_ 更改为nginx_wasm_shm_kv_ 。Kong/kong/pull/11919

Admin API

对于consumer groups(/consumer_groups)和consumers(/consumers)的接口,现在它们会返回分页结果。列表的 JSON 的 key 已经从 consumer_groupsconsumers 更改为 data

配置更改

dns_no_sync 选项的默认值已经更改为关闭off

TLS 变更

3.6.0

最近的 OpenResty 升级包括 TLS 1.3,并弃用了 TLS 1.1。如果您仍需要支持 TLS 1.1,请将 ssl_cipher_suite 设置为 old

在 OpenSSL 3.2 中,默认的 SSL/TLS 安全级别已从 1 更改为 2。这意味着安全级别被设置为 112 位安全。因此,以下操作被禁止:

  • RSA、DSA 和 DH 密钥长度小于 2048 bits
  • ECC 密钥长度小于 224 bits
  • 任何使用 RC4 的密码套件
  • SSL 版本 3 此外,压缩已被禁用。

3.6.1

现在在OpenSSL 3.x中默认禁用 TLSv1.1 和更低版本。

插件变更

  • ACME (acme), Rate Limiting (rate-limiting), Response Rate Limiting (response-ratelimiting)插件:跨插件标准化的 Redis 配置。Redis 配置现在遵循一个通用的模式,该模式在其他插件之间共享。
  • Azure Functions (azure-functions):Azure Functions 插件现在删除了 upstream/request URI,并且仅在请求 Azure API 时使用 routeprefix 配置字段来构造请求路径。
  • OAS Validation (oas-validation):在内容类型不是 application/json 时绕过模式验证。
  • Proxy Cache Advanced (proxy-cache-advanced):已删除 proxy-cache-advanced/migrations/001_035_to_050.lua 文件,该文件阻止了从 OSS 到 Enterprise 的迁移。这是一个重大更改,仅当您从 Kong Gateway 版本 0.3.5 到 0.5.0 之间升级时才会生效。
  • SAML (saml):调整了 SAML 插件的优先级为 1010,以纠正 SAML 插件与其他基于customer的插件之间的集成。

已知问题

以下是可能在未来版本中修复的已知问题列表。

操作系统要求

Kong Gateway 3.6.0.0 需要更高的 ulimit 才能正常运行。如果 ulimit 设置为 1024 或更低,它将无法正确启动。我们建议将您的操作系统的 ulimit 设置至少为 4096。

在3.6.1.0中修复的问题

虽然通常建议为 Kong Gateway 设置更高的 ulimit,但您可以升级到 3.6.1.0,再次从默认值 1024 开始启动。

HTTP/2 对于读取 request body 的插件需要 Content-Length

Kong 3.6.x 引入了一个对于读取传入请求主体的插件的回归。Clients 必须指定一个表示请求主体长度的 Content-Length 头部。如果不包含此头部,或者依赖 Transfer-Encoding: chunked,将导致 HTTP 响应的错误代码为 500。

影响如下插件:

  • jq
  • Request Size Limiting
  • Request Validator
  • AI Request Transformer
  • Request Transformer
  • Request Transformer Advanced

Kong官方正在寻找解决方案。

襄阳牛肉面🍜

2024-02-07 00:00:00

在之前的《岂因福祸避趋之,跑完还得继续吃》里面有提到过襄阳牛肉面,但是鉴于我真的好久没吃过了,势必是要单独为襄阳牛肉面写一篇。这个面也真的算是比较有特色的了,比如使用的面条是碱面,碗底垫着的是绿豆芽,除了这个面,我去过这么地方还没碰到第二个这么加的。要说口味的话「火锅面」算是跟它比较接近,而且火锅还得必须是麻辣的牛油火锅,就是放冷了会有橙红色的固体油脂封在锅口的那种。

襄阳

我长大的地方算是个三省交界的地方,也没有什么享誉全国的美食特产什么的,但是我一直都挺喜欢隔壁市的这个牛肉面 – 襄阳牛肉面,虽然我并不是襄阳人。其实我一直叫它襄樊牛肉面,没别的,因为从小就这么叫的,那时候知道襄樊这个名字的来源是因为城区是分了襄城和樊城,后来这个牛肉面名字也随着城市的改名也一起改名了。

牛肉

牛肉面里面最有味道的辣卤一般都是在店门头放一口陶锅,两口三口的都有,一口放辣卤的牛肉,一口放卤过的海带豆腐,还有放肥肠的,迎客的硬招牌就从这些陶锅的味道里蔓延开来。小时候吃的更多的是海带豆腐面因为它更便宜,海带也是卤过一遍的,豆腐呢,有些店是直接就用豆腐过卤,我更喜欢的一种是切成豆腐丁之后,过油炸过一道的,每一颗油炸豆腐丁都吸满了辣卤汤汁,顺着碱面一口下去毫不留情,一干到底。

说到底辣卤的卤,精髓还是飘在最外面的那层红油上,红油除了牛油熬制的香味,通常也还会有一些碾碎的辣椒面,比较细的那种,吃完了面,有时候在碗边上还能看到点点斑驳的辣椒面,升华的辣味就是从这里来的。吃完还依旧会回味一下子,吃不惯这个麻味的也挺多的。

牛肉面的用料是碱面,跟热干面是一样的,而且我特别喜欢细一点的那种碱面,出了湖北之后真的就没有吃过细的碱面了,太粗的减免咀嚼起来没有那种爽脆感,蔫蔫的黏糊。碱面吃起来的口感更加劲道有嚼劲,刚好我个人也不喜欢那种煮的软塌塌的面。襄阳牛肉面的面一般都是提前煮熟了之后放在那,点单之后用笊篱盛面在沸水中来回浸烫数次,待熟透滚热后迅速盛入碗中即可。通常做襄阳牛肉面的小馆子也会做热干面、汤面之类的,面可以通用嘛。

垫在碗底的豆芽才是一绝,必须是使用的绿豆芽,不需要二次汆烫,直接垫在碗底,面煮好之后直接盖在上面,浇上热汤、辣卤,靠着这些余温直接把绿豆芽烫到将脆不脆。我特别喜欢这个绿豆芽的口感,每次去点的时候我都会嘱咐一下,多放一些豆芽。