ChatGPT-Mirror部署和体验
Foreword cws一直有问题,而且只支持access token,经常要换很麻烦。之前有关注到dairoot的mirror,这次刚好试一下,发现体验还行 ChatGPT-Mirror https://github.com/dairoot/ChatGPT-Mirror 项目很简单 https://chatgpt.dairoot.cn/ 官方体验站,也可以使用免费账号测试,基本都差不多 部署 脚本内是docker,所以机器需要提前安好docker git clone https://github.com/dairoot/ChatGPT-Mirror.git cd ChatGPT-Mirror/ # 修改管理后台账号密码 cp .env.example .env &a..
更多STM32 MCU移植SSH
Foreword 给MCU移植Crypto、SSL、SSH、SFTP等库,真的找不到一个例子,目前看到的库大部分都是商用的。 比如wolfssh、CycloneSSH、libssh2、TinySSH、microSSH、Dropbear,这些库可能linux使用比较多,但是那边安装移植也方便多了,降到MCU一库难求,更别说详细的移植文档了,基本没有 wolfssh https://www.wolfssl.com/products/wolfssh/ wolfssh移植 wolfssh的库整个集成到了CubeMX中,简单的几个操作就可以把ssh集成进去 系统时钟不要用systick,留给FreeRTOS用 随便加一个input IO作为SD卡的输入检测 再随便加一个串口作为..
更多强行入睡方法 v2.0
书接上回《快速入睡的技巧和原理》 前几天跟朋友聊天,有一个想法萌生在脑海里: 因果论是人类发明和掌握语言之后的一个副产品 什么是因果?一个东西变动,导致另一个东西变动。但是大千世界哪里来的所谓「一个」东西? 其实都是一坨东西扭来扭去,然后另一坨东西晃来晃去。人的器官能感知的变化是连续光滑的 但语言和时序是离散的。这就导致万千思绪,最后被压扁成两件事:好事和坏事。 情绪和压力都是基于「事」这个东西上的。事之所以被称为、形成一件事,和语言环境密不可分。 给东西起名字是最困难的,就像写代码给class起名字一样。 但是一件「事」一旦有了名字,它就「成精」了。一件「事」它有自己的边界和形态,事能发起技能和施加影响,事有长处和弱点,有出生和死亡。「事」就是成年人在无数个夜晚思来想去,辗转难眠的心中之困。很多人被压垮..
更多用React实现跟随鼠标的3D透视效果
效果展示在下面的图形上移动鼠标即可看到效果 需要用到的知识 CSS perspective,参考MDN CSS transform-style,同样参考MDN 代码部分其实核心的逻辑和React关联性不大,只是我正好用React来做的,直接参考https://jsfiddle.net/yunyuyuan123/ukqstdw6/95/,主要关注这几个部分: 使用requestAnimationFrame来保证动画过度的流畅性。 通过translateZ来控制Z轴的高度,从而实现层次感。 使用CSS新属性will-change来提升性能。
更多日本为啥没有出色的软件行业
从HN上看到这篇。没看正文之前,我头脑浮现的是管培生,大连的软件外包,日企那种细致又无用的上面拉spec下面填实现的功序长幼之分等等。 翻译有添油加醋,其中 Keiretsu 意思是“家族企业集团”,前身是日本财阀(Zaibatsu)比如住友Sumitomo、三井Mitsui、三菱Mitsubishi和安田Yasuda等。 在60年代和70年代,软件往往是为定制且非常、非常昂贵的硬件编写的,软件需求通常作为整体购买合同的一部分进行谈判。软件并不被看作是一个独立的产品,更像是一种服务,类似于集成、培训以及持续的支持和维护。它通常是按时间和材料收费,有时为了促成交易,软件甚至会免费赠送。真正赚钱的还是硬件。 日本的家族企业在“大型主机时代”表现出色。比如富士通、NEC和日立。尽管在60、70年代并没有打败I..
更多GitLab联动Jenkins
Foreword GitLab联动Jenkins完成CI\CD流程 webhooks方式 Jenkins Jenkins升级 Jenkins自动升级,完成以后Jenkins就无法启动了,查log可以看到提示说明java版本太老了 Jenkins升级后不再支持java11的,需要安装java17或者21,我这里直接选择21 进入Jenkins目录下,修改jenkins.xml文件,将其中的jdk修改为新安装的jdk,然后重启一点电脑,重启jenkins服务即可 GitLab插件 首先Jenkins需要安装GitLab插件,否则收不到GitLab的请求 然后在Credentials中添加GitLab的账号 用户名和密码的形式即可 这个操作只要做一次即可 Git..
更多一日一技:Python类型标注的高级用法
假设你正在写后端代码,其中一个函数的功能是传入文章id,返回文章详情。因为项目比较大,因此在定义函数时,把类型标注加上,标明了参数的类型和返回的类型。例如:1234567891011121314151617181920212223242526from typing import Listfrom dataclasses import dataclass@dataclassclass ArticleDetail: id: int title: str content: str tag: List[str]def query_article_detail(article_id: int) -> ArticleDetail: detail = ArticleDetail( ..
更多遥控和香氛按钮接入米家失败
Foreword 记录一下接入米家失败的几个案例 遥控器接入米家 遥控倒是挺好拆的,经过测试接入按钮是物理的,成功的概率应该很大了 接下来就翻车了,反复测试了好几次发现,直接把按钮接入地或者电源,都不能正常触发按键,被控对象有反应,但是不能正常工作。 仔细查了一下主控芯片:TLSR8366ET24 它实际可以当作GPIO的引脚其实不多,但是结合遥控器,要控的除了13个按键,其实还有5个led灯,不可能接18个GPIO去做独立按键控制的,所以他其实这里用了矩阵键盘,逆向了电路以后,发现他的按键两端IO确实都是接入了主控芯片,而不是地 实际遇到的情况: 由于使用了矩阵键盘,这里又想保留原本的键盘、又想接入米家就无法做到了,除非米家模块支持Bypass模式,在输入的时候可以进行闭合/..
更多一日一技:如何实现高性能自动补全?
我们知道,在写Python时,使用IDE的自动补全功能,可以大大提高代码的开发效率。使用类型标注功能,可以让IDE知道应该怎么做自动补全。当我们没有类型标注时,IDE并不知道函数的某个参数是什么东西,没有办法做补全,如下图所示。但当我们把类型标注加上以后,IDE就能正常补全了,如下图所示:这样做,需要从另一个文件中,把这个参数对应的类导入到当前文件里面,然后把类作为类型填写到函数参数后面。咋看起来没有什么问题,并且我,还有很多看文章的同学,应该经常这样写类型标注的代码,从而提高代码的开发效率。但如果你的项目规模大起来以后,你就会遇到几个比较麻烦的问题:导入链过长:例如上面截图中的代码,我从model.py中导入了Detail这个类。如果我在model.py文件的开头,还有from aaa import b..
更多gRPC
Foreword 总结一下常用的RPC RPC RPC,远程过程调用,落到具体代码里其实是非常简单的,就是你掉了一个远程函数,这个函数的执行是其实不是本机,而是在远端,执行完成以后通过各种渠道返回结果信息。 对于接口或者函数使用者来说,相当于屏蔽了后面的细节,就当成普通函数用就行了。 对于RPC的基建来说,那可就复杂了,走了一个类似这样的流程 早期RPC可能是仅仅局限于网络传输,其实到了后期RPC在各种介质或者渠道上都有可能进行传输 RPC对于使用者来说似乎是简单了,同时也对平台或者基建层有一些要求,导致有些小平台上可能无法使用 gRPC https://github.com/grpc/grpc https://grpc.io/ gRPC由Google开发。 协议基础..
更多