AI已经会编程了,但是我们可以让它编的更好一点

AI编程工具常常表现的比我们直接去问AI问题要聪明的多,因为它们通常都不是简单的把问题和代码丢给大模型,而是针对问题场景设计相应的思维链(CoT)/思维树(ToT)等来充分发挥大模型的潜力。其实通过很简单的AI接口调用,我们也可以让AI针对我们的问题场景工作的更聪明更努力。

下面是用某个通用的demo修改成的一个通过不停的追问让AI不停的迭代更好的代码的例子,这个例子中使用的免费大模型是从 硅基流动 申请的API。因为只是一个简单的demo,很多异常情形并没有做处理。看看像不像一个黑心的包工头:

Read More

让kimi写个小工具

User: 写一个网页,在网页上播放一个指定的mp4视频,并通过播放进度与实际时间的差异来收集卡顿情况,同时我要搜集到网页连接到视频服务器的延迟情况在以便比较卡顿是否是由于网络丢包、拥堵导致的。

Kimi: 创建一个网页来播放视频并收集卡顿情况以及网络延迟情况,需要前端和后端的配合。下面是一个简单的示例,展示如何使用HTML、JavaScript和一些服务器端的逻辑来实现这个功能。

Read More

学写个gpu核函数

以前也跑过gpu.js的demo,每次搞来搞去都只是做个随机数的矩阵相乘,没试过真的自己写一个核函数。最近手术后眼睛恢复的不错,又想学点儿新东西了,就学写一个核函数吧,看看比起CPU是不是有优势。问题场景就设定为求一个大数列的移动平均数。

Read More

赌钱游戏

B站上刷到一个视频说,两个人丢硬币赌钱,一个有一百万本钱,一个只有一万,赌一把一百块,最后结果一定是一百万那个有一百零一万,一万那个一分钱也没有。

既在意料之外又在情理之中,还是实测一下,看看一万块在亏光前能玩几把吧:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

var a=10000,b=100,rounds=0;;
function test(){
rounds++;
if(Math.random()<0.5){
a++;
b--;
}else{
a--;
b++;
}
console.log("rounds=",rounds,"a=",a,"b=",b)
if(a>0 && b>0)setImmediate(test)
}
test();

结果在一万多把到30几万把之间。资产差两个数量级的“公平游戏”,钱少的一方亏光几乎是必然的。

跟AI结对编程

期待了几天跟AI结对编程的体验,没想到phind这么快就提供了这个功能。

自动分解问题,搜索答案,还是挺智能的。因为是跟人类学的编程,养成了人类喜欢偷懒的习惯,居然问我要用哪个第三方的转换服务,需要明确告诉它不要偷懒要自己写一个转换服务,他才能乖乖的写出来。

最后有一个多余的script标签没有去掉,是我的锅,不是AI的问题。

里德所罗门编码

云上做开发我们常常说要面向失败做设计,比如做Serverless应用的时候就常常需要在可能存在的丢包、并发写冲突、异常截断等情形下进行自我修复。

里德所罗门编码是一个典型的面试失败设计的编码,在这个时候就可以很方便的提供数据的冗余存储和自我修复能力

Read More

让live-templet真的live起来

众所周知Jetbrains的代码片段live-templet其实并不怎么live,编写完了以后就一直放在那儿,直到下次更新它。​

虽然官方说可以用“Add Read-Only source”功能让live-templet与远程的只读源同步,实际上只读源的功能一直都不稳定,官方论坛吐槽也很多,然后file-templet和live-templet的远程同步功能似乎也并不可用。

Read More

真 · serverless的SQL数据库

数据库服务天生就是带有非常强的server意味,和serverless服务站在两端,格格不入。市面上大多数所谓的serverless数据库也几乎都只是一个数据库server按照serverless的方式计费而已。那有没有可能实现真正的无服务器数据库,既提供标准的SQL服务,又实际上不启动任何服务器,也不带来附加的服务器成本呢?答案是有!

Read More

JS实现弱缓存

一个对象,如果要缓存它,就要让它占着内存不能释放,如果要释放它,就不能持有它的访问句柄。那有没有办法又让它尽可能的被缓存,在内存紧张的时候又允许被GC回收呢?答案是弱缓存。

Read More