tailscale比较好用,而且免费用户福利也没有什么大幅度缩水,由于国内网络和国外不互通,所以官方的DERP服务并不好用,有必要自建一个国内的私有DERP给自己用,几年前我就建过一个,最近整理服务器迁移事宜,所以写了一个更详尽的文档记录一下
阅读全文我偶尔会写一些方便操作的小脚本,统一放置到/usr/local/script/目录,为了防止忘记,该目录还有一个readme文件,记录了每个脚本的源码位置和简短描述
几乎每个脚本都是在命令行里面执行的,今天心血来潮,是否能很方便的将脚本移植到文件管理器的右键点击菜单栏那里。摸索了一番还挺简单。记录一下,主要是使用Automator完成。
阅读全文我是一个Sqlite爱好者,作为世界上最广泛使用的数据库,它着实有很多优势,特别是对于小型项目来说。SQL语法兼容、项目成熟、每个语言毫无疑问都支持、速度也不慢、不需要运维。我有好几个小项目都用了Sqlite替代postgresql。但是在有些场景,因为它是嵌入式数据库,也影响了它的发挥
比如我有一个小项目,需要同时在多台电脑上运行,它们都需要数据库。按照数据量大小,新建一个postgresql是不合适的,但是sqlite又不能被多台电脑共用,就很遗憾。直到今天看了https://turso.tech/libsql ,觉得颇有新意,仔细读了一下它的文档,并把一个小项目迁移到了上面,完美符合我的需求…… 关键是免费, 成本极低。所以…. 我决定安利一下
创新点
很简单,将sqlite改成了允许CS架构,并增强了它的WAL能力。让它可以多副本同步,主要应用在serverless场景,用来给边缘计算提供快速的数据库访问,降低全球用户访问延迟。改成CS架构后,原有的编程语言SDK后就得适配。当前提供了TypeScript、Rust、Python、Go SDK。而且TypeScript的支持是最完善的。也可以看出对serverless的支持是它们的核心目标
有了多副本能力,它的推荐架构就有了读写分离这种套路,本地时刻保留了一个可用的副本(理想情况下延迟几秒钟)。写的时候写到主数据库,再同步到本地,这样就能更快的返回数据
看计划好像还有直接写到本地数据库,本地自动写到primary(不知道它的冲突问题准备怎么解决)
我这种使用它避免数据库运维的用法大概率是异类……
迁移已有Sqlite数据库超简单
1 | turso db create --from-file olddb_file newdb |
其他
该数据库当前的计费方案也可谓是相当的良心,你只需要为你的存储和对数据的读写付费。这基本就是运行sqlite所需要的东西了,没有扣多余的费用。你所写的查询效率越高,触发的数据库查询读越少,成本越低。相对于RDS那种强制按月付费的服务,可谓是大善人…. 免费用户有9GB存储空间,每个月10亿读(并不是查询10亿次,而是查询触发对硬盘块读操作),对于个人小项目基本是够用了….. 只希望别被羊毛党薅光了…..且用且珍惜
其次,该项目服务端、SDK、CLI代码都是开源的。意味着可以自己部署,自己改进,还是挺友好的
就当前,免费的serverless不少,搭配这种免费的serverless 数据库。意味着CPU资源+存储资源都有了。个人写点小项目想部署到serverless上面是没什么问题的,可谓是十分有想象空间了
当然,缺点也不是完全没有的,因为该项目运营才半年时间。SDK未必有那么完善。没什么GUI(比如Datagrip)支持对它查询,只能自己使用typescript SDK sync api同步完整的数据库到本地(当前CLI不支持下载数据库),再使用当前工作流的工具对数据库进行操作
总之~~~ 我觉得这个服务很不错,特别是它当前的收费计划👍
参考
Introducing Embedded Replicas: Deploy Turso anywhere
昨天高考结束了,最近这半年AI实在太过火热,我也每天都在使用AI工具。高考过后肯定会有人尝试使用AI解答高考题目,我就自我先测试一下,看看ChatGPT能力如何,我个人只测试了2023年全国新高考一卷的8个选择题,将题目转换成latex,分别测试了ChatGPT4+Wolfalpha plugin和Google Bard
结果就是ChatGPT4一次交互回答答对6题,有两题回答无法解决,有一个回答存在明显错误(2倍根号2小于根号5),在指出它的错误后,就给出了正确答案,还有一题三角函数我也无法给出提示,所以实在是解答不出来,所以综合来看可以认为它8道题对了7道,还有一道也不能判它错(它明确说了它不会,而不是直接胡说八道给了错误答案)
针对Bard,由于它不支持中文,所以我用GPT4将中文转成英文让Bard解答,Bard的结果就是8对4,每个回答都充满了自信
ChatGPT4+Wolfalpha的准确率确实是让我震惊了一上午,已经预料到它准确率会挺高,没想到能这么高。但是也可以看到它虽然给出了正确答案,但很多时候和正常做题的思维方式不一样,能计算的就直接暴力计算求解,不会和真正的考生一样,主要靠换算推理
另外也能直观的感受到,AI有它擅长的地方,也有不擅长的地方,作为用户应该学会如何扬长避短,至少要有一定的review能力,判断AI给出的方案是否合理,这样才能和AI友好合作发挥出它最大的能力
点击全文查看和AI的交互全过程
阅读全文有没有像我一样的,英语渣,翻源码看大段大段的注释有点慢,又必须得看,有时候会不得不把注释使用翻译引擎翻译一下,今天我就遇到了,后来我转念想了下,是否可以使用AI进行翻译呢!然后我直接把当前代码发给网页版GPT4,直接让它翻译注释,不能说效果不好,只能说响应很慢,另外配合上网页版GPT4那个4k版本的上下文,输出一点点内容就直接中断了,让它继续也接不上,总结而言就是能很好的处理将注释翻译成中文的任务,但是有诸多限制
因此ChatGPT确实可以很好的理解代码,也能很好的翻译,那如果我自己把代码的注释提取出来让ChatGPT翻译是不是也行,在网页版测试了下,也行~~~,所以只需要提取出注释部分,再发给ChatGPT让它翻译,它就能得到不错的结果,又快,又省了上下文开销
花了一点时间,使用tree_sitter解析得到注释,用GPT翻译,再替换原代码注释部分就可以了,以下是效果
可以看到效果还行
阅读全文访问外网的时候为了避免被风控,所以长久以来,我是用了一台廉价的vps作为固定出口ip的,有多廉价呢,每月1T流量,192M内存,单核,OpenVZ,每年15刀。因为是几年前买的,现在甚至都停售了。但是日前使用上出了问题,表现为网速过快的时候会断网几分钟,遇到后还觉得挺神奇,后来登陆上去用wget下载文件测试了下,稳定复现,下载热门资源,速度很容易跑到50M/s+,最后询问客服得知,对外部进入的流量做了限制,说是防止DDOS攻击…. 但是说真的,明眼人都能看得出来,是觉得价格太低,所以服务降级,不允许大流量下载
因为贫穷,加上它这个网络质量+ip质量还可以,我就琢磨着自我限速得了,一开始打算用tc之类的,后来发现openvz对这方面有很大限制,后来,就直接改一下代理源码得了
得益于ss的源码质量挺高,也挺好改,直接在对外部进行read的时候限速就好,在令牌桶和漏桶之间选择了漏桶,因为令牌桶允许瞬时流量超过阈值,漏桶没有这个情况,添加代码如下
1 |
|
以上限制下载速度为25M/s
最后,在tcpRemote
函数内部defer rc.Close()
下面添加rc = NewRateLimitedConn(rc)
就OK了
最近开始看起了Java,选择了《On Java8》这本教材作为了学习材料,看了几章感觉讲解的还是挺好的,然后下载了随书代码进行学习
1 | git clone https://github.com/BruceEckel/OnJava8-Examples.git --depth=1 |
不得不说,异常顺利
然后用IDEA打开项目,几乎没有文件是不报红的,代码补全等功能近乎瘫痪。讽刺的是作者在书中和Readme中鼓励大家使用IDEA,在issue中有人报告IDE打开有问题,作者的回复也都是该代码是IDE无关的,反正能跑就行。也不知道作者有没有用IDEA编辑过它这个学习代码。吐槽也没啥用,该教程推荐的人很多,但是我居然很神奇的没有搜到有人和我同样的问题(IDEA打开该项目尽量不报红),随后我就开始了零基础两天多的折腾,最终效果尚可
阅读全文虽然现在离线OCR工具包也挺多的,但是苹果系统自带的OCR还是有一点点优势,毕竟每个M1 mbp都带上了独立的AI加速单元,系统自带的OCR识别服务在识别率和速度上相对开源方案有可取之处,也出了V1,V2,V3在不断优化。本文使用swift调用自带的VNRecognizeTextRequest服务,并导出C API, 然后使用python的ctypes调用该动态链接库。按照此原理,其他语言也可以使用此方案调用该C API
如果你是苹果用户,并且想试试系统自带的OCR功能,本文可能对你有一点点用
阅读全文