Go 代码城市上云——KusionStack 实践

CodeCity:一个寓教于乐的社交编程环境 CodeCity项目源自于对传统编程学习方式的反思,我们渴望创造一个更为直观和社交性的编程环境,让代码与人之间的互动变得更加直接和生动。灵感来源自现实世界的模拟城市游戏,通过模拟一个由代码构成的虚拟城市,让用户能够在这个环境中学习、探索、协作和成长。 阅读详情

在这里插入图片描述

导语

KusionStack 是面向 Kubernetes 云原生场景的 IaC 配置代码化实践的开源一站式可编程协议栈。其基本思想是让「应用方+平台方」的同学能够共同基于 IaC 构建的 Konfig 模型库同一平面进行 DevOps 协同工作。今天我们和大家分享一个好玩的 Go 代码城市应用,以及 KusionStack 是如何一键将其部署到 K8s 云原生环境的。

KusionStack 项目主仓库:

https://github.com/KusionStack/kusion

PART. 1

什么是代码城市(CodeCity)

CodeCity 代码城市是瑞典工程师 Richard Wettel 开发的创意应用,可以通过类似数字城市的视觉形式展示和度量代码的复杂性。其效果如图:
在这里插入图片描述
在 3D 形式展示的代码城市中的中心地标非常直观——最大、最高的建筑总是容易追踪的焦点。因为这个极具特色的创意,CodeCity 获得了 2008 年的"Riconoscimento ated-ICT Ticino" 一等奖,同时也可以免费用于非商业的科研和学习用途。

今天要展示的 GoCity 是 Go 语言版本的代码城市,我们可以通过这种方式评估 KusionStack 等 Go 语言项目的代码复杂度。也可以通过在线的 GoCity 查看 KusionStack/kusion 仓库的展示效果。

PART. 2

本地执行 GO 代码城市

之前的 GoCity 还是在 2021 年 10 月更新的,在最新的 Docker 和 Go1.18 环境有一些小问题,还好 KusionStack 相关同学为其提交了补丁进行了修复(这也是开源项目的魅力所在,也希望开源社区小伙伴能够参与 KusionStack 的共建),现在可以执行以下命令安装:go install github.com/rodrigo-brito/gocity@latest。然后通过 gocity open 打开 Github 或本地仓库。

- 比如打开本地的 KusionStack/kusion 仓库
在这里插入图片描述
- 然后浏览器打开对应页面
在这里插入图片描述

本地执行一切正常!

PART. 3

Go 代码城市一键上云

作为一个类似数字城市的应用,在云原生、元宇宙等背景下,部署上云也是一个自然的需求。同时我们也希望通过 GoCity 展示下 KusionStack 的基本用法。在 GoCity 上云之前,我们先尝试如何本地执行该应用。

相应的容器镜像已经推送到 Docker Hubhttps://hub.docker.com/r/yuanhao1223/gocity,运行命令如下:

在这里插入图片描述

运行成功后,可打开本地地址http://localhost:4000/查看 Go 项目的数字城市 3D 效果。

容器化成功后,现在准备上云。从本地执行容器的方式可以看出,想要在 Kubernetes 部署,至少需要 Deployment 和 Service 两种资源。其中 Deployment 用来部署 Go 代码城市,Service 暴露端口,访问无状态应用。

首先参考安装文档https://kusionstack.io/docs/user_docs/getting-started/install/安装好本地 Kusion 命令,然后通过 kusion init 的在线仓库提供了相应的模板。Kusion 命令支持一键初始化配置:
在这里插入图片描述
输出类似以下信息:

在这里插入图片描述
为了方便展示,Kusion 模板已经内置了 CodeCity 的例子。其中 code-city 模板依赖 konfig 大库中抽象化的前/后端模型,code-city 模板无依赖,可以自闭环。我们选择后者:
在这里插入图片描述
初始化过程中,指定了容器镜像,并且容器端口和 Service 端口均为 4000,现在进入配置目录,目录结构如下:
在这里插入图片描述
- 完整的代码可以参考 :

https://github.com/KusionStack/kusion-templates/tree/main/code-city-demo

为了方便本地测试,可以通过 minikube start 本地启动 MiniKube 服务。然后命令行模式切换到 code-city-kcl 目录,然后执行 kusion apply 命令生效配置。到此,开始正式上云:
kusion apply main.k

输出类似于:
在这里插入图片描述

检查 Deployment 的状态:
在这里插入图片描述
输出类似于:
在这里插入图片描述
使用 kubectl 端口转发:
在这里插入图片描述
访问本地地址https://localhost:4000/),点击 Example 处的链接 “KusionStack/kusion”,可以看到和本地执行一样的效果:
在这里插入图片描述
至此,完成了 Go 代码城市的一键上云。有兴趣的读者,可以基于模型库 Konfig,选择其他模板,探索 KusionStack 支持的其它运维场景,下面我们将探索代码城市内部的原理。

PART. 4

认识数字城市中的建筑含义

说实话代码城市第一眼看上去更像一个电路板,要理解其中的含义需要了解几个基本的参数映射关系,如预览页面的右下角图所示:
在这里插入图片描述
以上的对应关系在其官方文档中也说明,如下图所示:
在这里插入图片描述
其中地面的粉红色表示 Go 包对应的目录(因为包的依赖关系可能再产生叠加),灰色表示目录内部的文件,而蓝色表示结构体。其中表示文件的灰色建筑物的大小即文件的大小,表示结构体的蓝色建筑物的高度即方法的数量,建筑物的长宽表示结构体中属性的数量,蓝色颜色的深度表示相关代码行数。

我们可以选择 DiffOptions 结构体对应建筑物查看其相关的属性参数:
在这里插入图片描述
可以看到该结构体中有 15 个属性、3 个方法、共 156 行代码。通过点击其中的 “Github 链接” 按钮可以跳转到对应的位置:
在这里插入图片描述
因此通过这种方式我们可以很容易查看全局有无特别高大的建筑,从而判断是否存在某些文件和结构体的代码需要改进。可以说 GoCity 是一个很有趣的代码分析工具,甚至可以集成到 Github PR 代码评审流程中。

PART. 5

分析 GoCity 的代码架构

GoCity 代码架构主要分为代码数据提取和前端模型展示两块,如图所示:
在这里插入图片描述
首先 Codebase 表示要展示的代码,通过 Git Service 被拉取,然后通过 Parser 和 Position 服务提取得到对应的参数信息,然后通过前端展示。Go 语言代码主要集中在模型数据提取部分,而前端展示主要为 JS 等实现。前端展示资源文件通过 embed.FS 内嵌到程序中,GoCity 命令启动 Web 服务展示页面。代码架构比较清晰,也是一个比较理想可用于 Go 语言学习的开源项目。

PART. 6

展望

我们通过 KusionStack 的方式,配合少量的 KCL 配置代码,完成了 Go 代码城市一键上云的操作。虽然云上的 Go 代码城市和本地的版本看不出什么区别,但是云上程序的整个生命周期管理将大为不同。在后面的例子中我们将展示如何通过 KusionStack 结合 KCL 配置语言进行 IaC 方式的云原生应用的运维操作。感谢关注🙏

参考链接

● https://github.com/KusionStack/kusion

● https://github.com/KusionStack/examples

● https://github.com/rodrigo-brito/gocity

● https://wettel.github.io/codecity.html

了解更多…

KusionStack Star 一下✨:

https://github.com/KusionStack/Kusion

本周推荐阅读

KusionStack 在蚂蚁集团的探索实践 (上)

Kusion 模型库和工具链的探索实践

精彩回顾|KusionStack

历时两年,打破“隔行如隔山”困境

欢迎扫码关注我们的公众号

CodeCity:Google的代码城是一个社交编程环境。 它提供了漫画书启发的虚拟世界,程序员可以在其中协作编写代码 码城 Google的Code City是一个主要用于教育的社交程序环境。 它提供了漫画书启发的虚拟世界,程序员可以在其中协作编写代码。 可以在上找到正在运行的Code City实例的列表。 立即下载

相关推荐

中国各城市code码对照表

各城市code码对照表,包含全国所有城市及部分海外国家或地区code码对照

探索编程新世界:Code City 开源项目推荐

探索编程新世界:Code City 开源项目推荐 项目介绍 Code City 是由 Google 开发的一款面向教育的社交编程环境。它以漫画书为灵感,构建了一个虚拟世界,让程序员们可以在这个充满创意的空间中进行代码的协作编写。Code City 不仅仅是一个代码编辑器,它更是一个集学习、交流和创新于一体的编程社区。 项目技术分析 Code City 的技术架构基于现代 Web 技术栈,采用了前端...

gitblog_01197的博客 755

告别校准烦恼:用ADS1220和松下ERA3电阻实现±0.05℃精度的Pt100测温方案(附完整电路图)

本文详细介绍了如何利用TI的ADS1220 24位ΔΣ ADC与松下ERA3系列精密电阻构建±0.05℃精度的免校准Pt100测温系统。通过比例测量法架构和关键器件选型,解决了传统方案中的校准繁琐和长期稳定性问题,特别适用于工业控制、医疗设备等高精度温度测量场景。

weixin_30740581的博客 613

探索编程的奇幻世界——Code City

探索编程的奇幻世界——Code City 1、项目介绍 走进Code City,一个由Google倾力打造的创新型社交编程环境,这里将编程学习与漫画书式的虚拟世界完美融合。 Code City 不仅仅是一个代码编辑器,它更是一个互动和协作的乐园,旨在为教育领域带来全新的编程教学体验。通过访问https://codecity.world/,你可以找到正在运行的Code City实例,立即开启你的编程...

gitblog_00006的博客 436

使用Intel编译器编译OpenFOAM

本文总结了使用INTEL编译器编译OpenFOAM的过程

姜蜉蝣的博客 1547

为什么你的单细胞数据总有问题?可能是忽略了scDblFinder这个神器

本文深入剖析了单细胞数据分析中异质性双细胞这一常见但易被忽视的痛点,并重点介绍了scDblFinder这一神器。scDblFinder通过机器学习模型,能精准识别并过滤同一样本内的异质性双细胞,有效解决其导致的聚类模糊、信号混淆等问题,从而显著提升数据洁净度与下游分析结果的可靠性。

brandy的博客 453

探索编程的梦幻岛屿:Code City开源项目深度解析

探索编程的梦幻岛屿:Code City开源项目深度解析 项目介绍 欢迎来到Code City——一个由谷歌匠心打造的教育社交编程平台,它将编码学习变成了一场漫画书般的冒险旅程。在这个虚拟世界中,编程不再是孤灯下的独行侠行为,而是变成了一个充满趣味和合作的探索过程。想象一下,在这个色彩斑斓的城市里,每一行代码都是建造建筑的砖瓦,每一次协作都像是城市规划者之间的头脑风暴。想要体验编程的乐趣吗?跟随我...

gitblog_00022的博客 1003

【Cadence软件技巧集萃】从Capture到Allergo——分布演示从原理符号导出到网络表

Cadence软件功能多样、性能强大,但是使用起来颇费步骤,尤其是从原理图到网络表的导入步骤,没有经过上手实践还真不一定一次就能搞定哩。本文笔者用将分步演示:1、在Capture软件上绘制原理图;2、将原理图导出网络表;3、在Allergo软件上更新网络表;希望给予使用Cadence的读者有效的帮助1、本文简述了建立Capture项目的步骤,演示了调用元件符号库的方法,并绘制了电气原理图;2、针对加载元件封装库可能遇到的问题,做了排查步骤建议;

qq_33175704的博客 2537

云上的硅基文明——GoCity上云实践

|导语|KusionStack 是面向 Kubernetes 云原生场景的 IaC 配置代码化实践的开源一站式可编程协议栈。其基本思想是让「应用方+平台方」的同学能够共同基于 IaC 构建的 Konfig 模型库同一平面进行 DevOps 协同工作。今天我们和大家分享一个好玩的 Go 代码城市应用,以及 KusionStack 是如何一键将其部署到 K8s 云原生环境的。KusionStack 项...

光谷码农 497

从宁德新能源面试官视角,拆解Halcon/OpenCV图像处理工程师的硬核技能树(附避坑指南)

本文从宁德新能源面试官视角出发,详细拆解Halcon/OpenCV图像处理工程师的核心技能树,涵盖硬件选型、算法实现和系统工程思维三大能力维度。文章提供工业视觉工程师面试的实战避坑指南,包括硬件配置要点、算法优化技巧及职业发展路径,助力求职者系统提升图像处理专业技能。

weixin_28732953的博客 129

基于STM32与HRTIM的四开关Buck-Boost双向DC-DC电源设计实战(附源码、仿真与设计解析)

本文详细介绍了基于STM32F334的HRTIM高分辨率定时器实现四开关Buck-Boost双向DC-DC电源的设计实战。通过精准的PWM控制、双环PID算法和智能模式切换逻辑,解决了电压震荡与效率优化等关键问题,并提供了完整的源码、PSIM仿真及参数计算,为高性能电源设计提供了实用参考。

7z8x2c4v6b9的博客 299

KusionStack GAIDC2023 活动回顾

2023年 2月25日至26日,由上海市经济和信息化委员会、中国(上海)自由贸易试验区临港新片区管理委员会、临港集团指导,上海市人工智能行业协会(SAIA)举办的GAIDC(全球人工智能开发者先锋大会)圆满落幕。在活动期间,KusionStack 也与广大参会者展开了一系列丰富多彩的交流互动。活动当天的精彩瞬间活动当天,KusionStack为参加开源集市的小伙伴们准备了精美的礼物。活动开始,前...

光谷码农 177

RC电路(一):微分|积分

的取值不同,会导致输出波形和输入波形之间的关系也不同,由此也会产生不同的应用。输出为0,随着电容充满电,运放-输入端得到的分压为正最大值,可等效成一个电压源,且电压不可突变,此时电流反向为最大值,开始充电时的容抗为0,电压不可突变则电压差为0,运放。开始充电时的容抗为0,电压不可突变则电压差为0,运放。输入端得到的分压也不可突变,随着电容放完电,于是。,因电容上电压不能突变(来不及充电,相当于短路,由上分析可得积分运算电路中,输出为运放的负最大峰值,随着电容充满电,输出为运放的正最大峰值,随着电容放完电,

既有随处可栖的江湖,也有追风逐梦的骁勇! 1万+

KusionStack DevJoy 开发者游园会活动回顾

2022 年 11 月 13 日至 29 日,由 Bytebase,WeWork,语雀联合主办的主题为「开发者生活方式」 的 DevJoy 游园会圆满落幕。在为期两天的活动内,KusionStack 也与上海的小伙伴进行了友好的线下交流,带领小伙伴们感受了一波丝滑的运维体验。活动当天的精彩瞬间我们为参加游戏的小伙伴们准备了丰富的奖品。活动开始,前来参与体验 KusionStack 的小伙伴们。参...

光谷码农 230

面向口齿不清者的语音识别新突破:用大模型拯救“听不懂”的声音

面向构音障碍患者的语音识别新突破:大语言模型显著提升识别准确率 国际语音研究团队在Interspeech 2025发表最新成果,通过将大语言模型(LLM)融入语音识别系统,显著改善了对构音障碍(dysarthria)患者语音的识别效果。研究表明: 传统语音识别(如CTC模型)对构音障碍语音的词错误率(WER)高达50-54%,Whisper模型降至38-40%。 引入LLM解码器后,BART模型将WER降至30-32%,而Whisper-Vicuna组合更将WER降低至21-26%。 关键优势:LLM能有效

帅小柏的博客 270

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

SOFA Weeekly | 开源人 、本周贡献 & issue 精选

SOFA WEEKLY | 每周精选筛选每周精华问答,同步开源进展欢迎留言互动~SOFAStack (ScalableOpenFinancialArchitecture Stack)是蚂蚁集团自主研发的金融级云原生架构,包含了构建金融级云原生架构所需的各个组件,包括微服务研发框架,RPC 框架,服务注册中心,分布式定时任务,限流/熔断框架,动态配置推送,分布式链路追踪,Metrics 监...

金融级分布式架构 284

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Google的CodeCity开源项目指南

Google的CodeCity开源项目指南 Google的CodeCity是一个面向教育的社交编程环境,它以漫画书风格的虚拟世界为特色,让程序员能够协同编写代码。本指南旨在帮助您了解项目的基本结构、启动关键文件以及配置详情,以便更有效地探索和贡献于这个独特的开源平台。 1. 项目目录结构及介绍 CodeCity的项目结构精心组织,以支持其复杂的功能和教育目标。以下是主要的目录及其简介: bin:...

gitblog_00653的博客 1103

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Google CodeCity 项目常见问题解决方案

Google CodeCity 项目常见问题解决方案 一、项目基础介绍 Google CodeCity 是一个由 Google 开发的开源项目,主要面向编程教育和协作。该项目构建了一个以漫画风格为灵感的虚拟世界,程序员可以在这个世界中协作编写代码。它的设计宗旨是提供一个更具吸引力的编程学习环境,通过可视化的方式来展示代码和项目结构。该项目主要使用的编程语言是 JavaScript,同时也包含了一些...

gitblog_00348的博客 391

GoCity:用代码构建城市,以三维视角探索Go语言源码

GoCity 是一个开源项目,采用 Go 语言作为主要编程语言,同时结合了 HTML 和其他技术进行前端构建。该项目是基于“代码城市”这一隐喻,将 Go 语言源代码以三维城市的形式进行可视化展现。用户可以通过直观的视觉元素,如建筑的高度、大小和颜色,来理解代码的结构和复杂性。 ## 核心功能 GoCity 的核心功能是将 Go 程序的各个组成部分映射到城市的不同元素上: - **文件夹**:...

gitblog_00816的博客 430

KusionStack 是什么?

KusionStack 是蚂蚁开源的云原生可编程技术栈!一、KusionStack 的目标愿景KusionStack 是一个可编程、高灵活性的应用交付及运维技术栈,灵感源于融合(Fusion)一词,旨在帮助企业构建的应用运维配置管理平面及 DevOps 生态。融合专有云,混合云,多云混合场景融合以云原生技术为主,同时采用多种平台技术的混合平台技术选型融合多项目、多团队、多角色、多租户、多环境的企业...

光谷码农 949

foobox 两步安装教程:免配置 foobar2000 中文界面皮肤装完即用

foobox 是一款为 foobar2000 汉化版准备的 DUI 界面皮肤配置,把多播放列表、星级评分、同步歌词、频谱分析等组件全部预装预配好。你不必再逐个找插件、调参数。适合想用最少步骤拿到一套完整中文播放界面的新手。 ## 安装前:环境检查 先核对系统环境,装完才能正常显示。 | 项目 | 要求 | | --- | --- | | 系统 | Windows 10 1607 及以上 |

gitblog_00033的博客 345

KusionStack 开源有感|历时两年,打破 “隔行如隔山” 困境

本文撰写于 KusionStack 开源前夕,作者有感而发,回顾了团队从 Kusion 项目开发之初到现今成功走上开源之路的艰辛历程。当中既描述了作者及其团队做 Kusion 项目的初心和项目发展至今的成果,也表达了作者自身对团队的由衷感激,字里行间都散发着真情实感。...

金融级分布式架构 462

KusionStack使用文档

如果想自定义默认安装版本,可以运行下述命令(将最后的 open@latest 替换为你想要默认安装的版本号就就行): 该脚本执行后会创建 $HOME/.kusionup 目录,该目录下会包含:执行完安装脚本后,默认已经安装好了 kusionup 和一个默认的 kusion 版本,你可以通过执行 kusionup 查看已安装的所有版本: 执行 kusionup ls-ver 列出来自内置安装源中的所有可安装的 **kusion** 版本: 执行 kusionup install $VERSION

王大雏的博客 417

KusionStack 加入 CNCF Sandbox!

我们很高兴地宣布,KusionStack 项目在 2024 年第四季度通过了全球顶级开源基金会云原生计算基金会(CNCF)技术监督委员会(TOC)的评定,正式成为 CNCF 沙箱(Sandbox)项目。我们衷心地感谢所有参与整个过程的 CNCF 成员,感谢他们的宝贵指导,同时也感谢社区和团队的热情支持,让这一切成为可能。项目地址:https://github.com/KusionStack项目官网...

金融级分布式架构 280

Rust源码剖析:Lint - CombinedLintPass

摘要:前一篇文章 介绍了关于 Lint 和 LintPass 的一些概念和实现。基于这些结构,提供了一个简易的 Lint 检查的实现方式。本文主要介绍 CombinedLintPass 这一结构的实现,并基于 CombinedLintPass 进一步优化 Lint 的实现。背景在 KusionStack 技术栈中, KCL 配置策略语言是重要的组成部分之一。为了帮助用户更好的编写 KCL 代码,我...

光谷码农 1237
上一篇: HAVE FUN | SOFA 飞船——Layotto 星球登陆计划
下一篇: HAVE FUN | SOFA 飞船——Layotto 星球登陆计划
SOFAStack
博客等级 码龄7年 747粉丝 389原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值