20241228bootable container试玩

介绍

有完整独立内核的容器,可部署到物理机 支持ISO, raw or qcow2 https://containers.github.io/bootc/intro.html

https://docs.fedoraproject.org/en-US/bootc/getting-started

镜像准备

用podman

打镜像

转ISO

镜像需要转成iSO才能安装到物理机和虚机

配置文件准备

config.json

需要的镜像准备

windows

安装podman desktop后可用UI插件,需要root

对应的命令行

linux

执行镜像转换

ubuntu 24.04上有bug

转镜像报错1

/etc/containers/storage.conf

命令行修改/etc/containers/storage.conf

转镜像报错2

安装到虚机/物理机

安装

同其他系统,略

升级系统

参考

20241221国内minikube初始化

安装minikube

启动minikube

10g有点多电脑内存不够改成4g

查看日志

获取pods

安装插件

查看ingress默认镜像

google_containers/controller->google_containers/nginx-ingress-controller

国内的镜像没这个ingress-nginx/kube-webhook-certgen:v1.4.3@sha256:a320a50cc91bd15fd2d6fa6de58bd98c1bd64b9a6f926ce23a600d87043455a3

替换镜像后开启ingress

查看dashborad默认镜像

替换镜像后开启dashboard

demo

创建deployment

手动加载镜像-方法1

手动加载镜像-方法2

暴露服务并测试

20241207jdk23下springboot+lombok无法运行的问题

背景

群友反馈lombok编译不正常

解决方案

第一个坑

注意到lombok在1.18.36刚支持jdk23

注意到jdk23开始默认关闭了annotation process

https://www.oracle.com/java/technologies/javase/23-relnote-issues.html#:~:text=annotation%20processing%20is%20only%20run%20with%20some%20explicit%20configuration%20of%20annotation%20processing%20or%20with%20an%20explicit%20request%20to%20run%20annotation%20processing%20on%20the%20javac%20command%20line.

所以在pom.xml中的properties需要增加

间接让javac参数包含 -proc:full

如果还不行可增加

手动控制插件版本

第二个坑

注意到 pom.xml=>plugins=>plugin=>artifactId=maven-compiler-plugin=>annotationProcessorPaths 必须指定版本<version>${lombok.version}</version>,否则IDEA生成的.idea/compiler.xml中lombok.jar是unknwon

参考https://youtrack.jetbrains.com/issue/IDEA-342187

若已经出错了,建议修改pom.xml后删除.idea文件夹后重新导入项目

参考

lombok的changelog

https://projectlombok.org/changelog

lombok的issue

https://github.com/projectlombok/lombok/issues/3722

spring官方的修改方式

https://github.com/arnosthavelka/spring-advanced-training/commit/29e47231f94556ff08173d992da9a4384c855816?diff=split&w=0#diff-49d7e9283623afcbf89d5cc8019b80174f5dd3379d51f01764713f5f5e69a992R20

 

20241024copilot workspace试玩

今天得到了copilot workspace的试用权限。。。体验下来发现ai从之前的光标上下文补全进化成了项目级的文件检索、理解、修改能力,甚至有对整个任务的全局规划能力。

基于自然语言的任务规划和修改

基于RAG的文件检索

基于任务规划的执行

基于自然语言的命令生成

联动的是背后的云端IDE提供信息以及文件修改能力,因此看来未来云端IDE大概率会成为主流,由IDE核心提供的上下文信息量要远多于源码。AI作为任务的规划者和执行者。

也许不久的将来人只需要负责纠正计划、review代码,然后用自然语言描述需求就好了?

20241005projector新feature

背景

20241003kasm idea web workspace

20220615自行编译projector-client

拖了好久都没修这两个问题

打包内置静态资源

分离projector中使用的静态资源地址,改成本地打包解决网络加载js、css的速度问题

支持输入框修改token

edge的PWA正常不会记录query string,让projector支持从url鉴权需要动的东西有点多,所以加个输入框支持手动输入重连即可
坑的是kotlin输出$需要用${‘$’}
client版本v1.8.1.12
server版本v1.8.1.12

TODO 动态生成PWA的manifest

org.jetbrains.projector.server.core.websocket.HttpWsServer.Companion#getResourceName
当前实现的是纯静态的服务器,加载一个kotlin编译成的js文件
入口是projector-client-web/src/main/kotlin/org/jetbrains/projector/client/web/Main.kt
org.jetbrains.projector.client.web.Application#start
入口是启动一个状态机做死循环,初始状态是
private var currentState: ClientState = ClientState.UninitializedPage
第一个队列事件是
projector-client-web/src/main/kotlin/org/jetbrains/projector/client/web/state/ClientAction.kt
org.jetbrains.projector.client.web.state.ClientAction.Start
因此处理过程是
org.jetbrains.projector.client.web.state.ClientState.UninitializedPage#consume
下一个状态是WaitingOpening
想让index.html的内容变成ssr,需要从HttpWsServer开始修改成ssr。或者从更前面做拦截把GET请求内置资源的部分转到独立服务器 ,
官方之前给过electron的客户端,说明分离客户端的网页是可行的,只需要把客户端尝试独立部署即可完成各种自定义开发。且无需修改服务器代码,服务器的内置代码仅作为兜底使用即可
TODO 让projector支持从urlpath鉴权规避PWA的限制

TODO

TODO 待继续研究 考虑实现通用的jcef webview显示转发成canvas方案
TODO 再写一个server,接受所有projector client的上报,提供个网页支持动态从服务器获取完成的url并完成本地的端口转发

20241003kasm idea web workspace

背景

在解决continue加载的时候,重新构建的idea web workspace

20241002continue在projector环境下的加载和相关问题

其实是个副产物,之前做飞连镜像的时候也用过

这次是升级了操作系统版本,构建成功了,在22.04的ubuntu上重新打包了workspcae,当开启jcef后可在vnc环境下正常运行浏览器、JCEF App

代码和说明参考 https://github.com/dev-assistant/skykoma-workspace/tree/main/workspace-ubuntu

注意默认带了个idea干净纯净的ubuntu是base的那个镜像

实现细节

TODO 后面有时间再详细补充,难点是跳过idea默认的各种弹框

后续

TODO 找出https://github.com/kasmtech/KasmVNC/issues/207 的原因:https://issues.chromium.org/issues/40418163 修掉这个快十年的老bug感觉没戏
TODO 支持人工指定证书 or  强制使用http 避开浏览器的bug
TODO 基于22.04重做一个飞连的镜像,同时升级到最新的飞连
TODO 是否可能用 https://github.com/gojue/ecapture抓到wg的配置后弃用飞连客户端?
https://github.com/PinkD/corplink-rs/blob/master/src/client.rs#L652
https://github.com/PinkD/corplink-rs/blob/master/src/api.rs#L21