- 博客(27)
- 资源 (11)
- 收藏
- 关注
原创 理解Rust引用及其生命周期标识(下)
本文在编写过程中也是断断续续,修修改改了有小半个月才完成,虽然文章已经编写了完成了,但是笔者还有很多内容想说,就放在后续的文章讲吧。
2025-03-30 22:08:04
990
2
原创 理解Rust引用及其生命周期标识(上)
作为Rust开发者,你是否还没有完全理解引用及其生命周期?是否处于教程一看就会,但在实际开发过程中不知所措?本文将由浅入深,手把手教你彻底理解Rust引用与生命周期。本文主要面向的是已经基本上了解过Rust这门语言,对引用以及生命周期(及其标识)有基本的了解,但对于包含生命周期标识的复杂场景理解吃力的Rust开发者。因此本文不会赘述讨论关于引用的语法形式,像是如果连下面的例子为什么会报错都不清楚原因的话,那么本篇就不太适合阅读了。
2025-02-28 23:35:47
1164
原创 CSharpEntityFramework与CodeFirst实践
当我们进行开发的时候,常常会用到数据库来对数据进行持久化的操作,有的时候,我们并不想要在进行代码开发的过程中,还去关注数据库的构建,表的构建等等。于是,就有了Code First模式。何为Code First模式呢?它思想就是先定义模型中的类,再通过这些类生成数据库。这种开发模式适合于全新的项目,它使得我们可以以代码为核心进行设计而不是先构造数据库。这样一来,使得我们更加关注代码的开发。在c#中,我们使用EntityFramework来实现Code First场景。more。
2025-02-20 10:29:35
774
原创 【掌握webpack】一张图让你明白webpack中output的filename、path、publicPath与主流插件的关系
webpack的核心概念,放到2022年相信很多的小伙伴都已经非常清楚了。但是,对于webpack配置中的output.path、output.filename以及output.publicPath,还有很多小伙伴还不理解。本文讲围绕output.filename、output.path与output.publicPath,讲解它们的功能,并分析这些配置与webpack中常使用到的MiniCssExtractPlugin、HtmlWebpackPlugin等插件的关系。more直接上总结图。
2025-02-19 10:48:47
1048
原创 一文详解如何在基于webpack5的react项目中使用svg
本文主要讨论基于webpack5+TypeScript的React项目(cra、craco底层本质都是使用webpack,所以同理)在2023年的今天是如何在项目中使用svg资源的。more。
2025-02-19 10:46:19
423
原创 浅谈React与SolidJS对于JSX的应用
实际上,JSX并不是合法有效的JS代码或HTML代码。目前为止也没有任何一家浏览器的引擎实现了对JSX的读取和解析。此外,JSX本身没有完全统一的规范,除了一些基本的规则以外,各种利用了JSX的JS库可以根据自身需求来设计JSX额外的特性。譬如,React中的元素会有className属性,而SolidJS中的元素会有classList属性。在FaceBook官方博文中也明确提到了:JSX是一种类似XML的语法扩展。它不打算由引擎或浏览器实现。它也不会作为某种提案被合并到ECMAScript规范中。
2025-02-19 10:44:01
374
原创 TypeScript必知三部曲(二)JSX的编译与类型检查
在介绍如何对JSX代码进行类型检查前,让我们花一点时间认识一下JSX,以及如何对其进行编译。注意:这块内容很多,如果读者已经熟悉这块的内容,可以直接从JSX(TSX)的类型检查开始阅读。实际上,JSX并不是合法有效的JS代码或HTML代码。目前为止也没有任何一家浏览器的引擎实现了对JSX的读取和解析。此外,JSX本身没有完全统一的规范,除了一些基本的规则以外,各种利用了JSX的JS库可以根据自身需求来设计JSX额外的特性。
2025-02-19 10:43:05
671
原创 TypeScript必知三部曲(一)TypeScript编译方案以及IDE对TS的类型检查
其实这篇文章并非是全新的文章,早在22年的8月份,我就写了一篇名为《TypeScript与Babel、webpack的关系以及IDE对TS的类型检查》的文章,里面的内容就包含了本文的内容,但迫于当时编写的匆忙,整个文章的结构安排的不好,脉络不清晰,东一块西一块想到哪里写到哪里,同时还想把webpack相关的也介绍了,所以最终内容比较多比较乱。有强迫症的我一直以来对当时的文章都不是很满意。
2025-02-19 10:42:38
587
原创 详解prettier使用以及与主流IDE的配合
本文主要介绍了prettier的使用以及在主流IDE中的使用,希望读者阅读本文以后,能够了解prettier与IDE如何进行配合。
2025-02-19 10:39:11
821
原创 从null-ls归档再看nvim的代码格式化与lint方案
总的来说,在没有null-ls这套体系的参与下,我们同样也能够很方便的配置格式化和lint。先说代码格式化,在nvim中,格式化有两种形式,一种是调用外部独立专用的格式化工具来完成代码格式化;另一种就是通过nvim提供的lsp模块的format来进行格式化,从本质上来讲,后者和前者是一样的,毕竟语言服务不过也是一种特殊的外部工具而已;再讲nvim工程调用lint工具,这里lspconfig讲lint工具也视为了一种特殊的语言服务,因为lint就支持等。
2025-02-19 10:36:38
801
原创 详解nvim内建LSP体系与基于nvim-cmp的代码补全体系
nvim-cmp是一款通过lua编写的,nvim中的代码补全引擎框架插件。代码补全,离不开snippet(片段),因为最终补全的时候,引擎会将一个又一个的代码片段提供出来让用户选择使用,进而补全当前的代码。当然,这些snippet不是平白无故出现的,它们一般从某些地方搜集而来,而这些搜集的来源,就是片段源。片段源可以有很多,比如代码语法树中的token,命令行支持的指令,各种git的指令,文件系统路径等。nvim-cmp以解耦思想进行设计,将各种不同的片段获取来源分离在了不同的插件中。
2025-02-19 10:34:20
857
翻译 【翻译转载】如果你想要构建一套基于ECS的GUI框架
尽管有翻译工具的帮助,但是为了读懂原作者的意思,还是需要结合Bevy这个库以及ECS概念。zhen.blog,欢迎小伙伴访问。
2025-02-18 10:09:47
35
原创 基于Rust的Tile-Based游戏开发杂记(02)ggez绘图实操
本文主要介绍了使用ggez的图形部分API进行一些基础图形、图片以及文本绘制。
2025-02-18 10:06:37
934
原创 基于Rust的Tile-Based游戏开发杂记(01)导入
Tile-based游戏是一种使用tile(译为:瓦片,瓷砖)作为基本构建单位来设计游戏关卡、地图或其他视觉元素的游戏类型。在这样的游戏中,游戏世界的背景、地形、环境等都是由一系列预先定义好的小图片(即tiles)拼接而成的网格状结构。每个tile通常代表一个固定的尺寸区域,可以是一块地表、一片水域、一堵墙、一棵树或者是任何构成游戏环境的一部分。
2025-02-18 10:06:01
902
原创 浅谈基于QT的截图工具的设计与实现
在介绍截图工具设计与实现前,让我们先通过介绍QT的绘图基础知识,让读者有一个比较感性的认识。本文理论上并非是完整的QT框架使用介绍,但是我们总是需要用一款支持绘图的GUI框架来介绍关于截图的知识,于是笔者就拿较为熟悉的QT框架来说明。但只要读者理解到了截图工具的本质,举一反三,其它的GUI框架也能完成截图的目的。对于绘图来说,我们通常遵循“数据驱动渲染的模型。具体一点,我们会围绕数据展开绘图,图像的绘制总是来源于数据的定义。那么如何实现动态图形呢?只需要通过某些操作改变数据即可。
2025-02-18 10:04:21
747
原创 C与CPP常见编译工具链与构建系统简介
其实本文的内容比较浅,主要对一些常见的编译工具链和构建系统进行了介绍。另外,需要补充一点的是,在Windows中其实也能使用GCC工具链,至于方式就是有的小伙伴经常看到的MinGW和MSYS2了。由于篇幅的原因就不在本文一一介绍了,读者可以从本文的出发,自己去探究关于MinGW、MSYS2是什么。,欢迎大家访问。
2025-02-18 10:02:29
946
原创 Rust winit 0.30.0版本简介
在本文中,笔者对winit的0.30.0版本的主要变动进行简单的介绍,更多的内容还需要读者自行阅读官方文档以及examples。当然,相信通过本篇文章,不难看出,新版的winit,对其运行模型架构进行了重构,使得其更加易于使用,更符合现代GUI框架的运行模型思路。但是,由于其架构升级,导致一些现阶段网络上一些经典的文章,可能无法在新版的winit下正确运行,例如《学习 Wgpu》就还是使用的0.29版本。
2025-02-18 09:58:43
703
原创 Rust工作空间(workspace)实践
本文简单介绍了rust的cargo workspace的使用方式。当然,本文主要是使用虚拟清单类型(virtual manifest)的工作空间,即,根目录下Cargo.toml不指定任何package。当然,还有一种场景则是:根目录下Cargo.toml可以指定当前目录也是一个package包(通常是bin类型的可执行package),然后将该可执行package依赖的各种二方库通过workspace来配置。本文就不再赘述这块的内容,读者可以自行尝试。
2025-02-18 09:58:11
860
原创 浅谈Rust数据所有权
本文简单的介绍了关于Rust的一个核心概念,数据所有权(ownership)以及它的相关机制。这块的概念完全不用死记,我们只需要从实际“内存高效”的角度出发:为了实现内存高效,我们考虑数据的产生尽可能是短暂的,而数据的使用尽可能是长期的。通过赋值操作传递数据(这里特指非基本类型的复杂数据)我们考虑不要真的复制一份,而是对这块数据建立一个标签,也就是所有权,并将所有权传递给另一个变量。
2025-02-18 09:57:31
843
原创 关于计算机图形学的一些介绍(01)基本要素与空间变换
本文就大致介绍关于图形学中的一些基本要素,以及空间变换。在后面的文章中,会逐步介绍计算机图形学中的一些内容,例如渲染管线等。
2025-02-18 09:48:03
779
原创 Wgpu图文详解(04)顶点索引及其缓冲区
实际上,无论是上一篇的顶点缓冲区还是本文的索引缓冲区。我们的核心思路都是创建一些能够表达信息的数据,再基于这些数据创建缓冲区实例。缓冲区通过类型来区分其作用。因此,后续的内容中如果出现了其他类型缓冲区,我相信读者能够理解对应的思路。读者如果看过的内容,会发现在《learn wgpu》中是将顶点缓冲区、顶点索引等内容放到了一篇。
2025-02-18 09:42:17
1022
原创 Wgpu图文详解(03)顶点及其缓冲区
本文的内容较多引申了不少额外的内容,读者可以慢慢阅读消化,希望能够对认识wgpu以及图形学工程有更进一步的理解和认识。在接下来的内容,我们将会认识wgpu中有关于以及图形学工程相关的更多的内容,敬请期待!
2025-02-18 09:41:27
589
原创 Wgpu图文详解(05)纹理与绑定组
纹理是图形渲染中用于增强几何图形视觉效果的一种资源。它是一个二维或三维的数据数组,通常包含颜色信息,但也可以包含其他类型的数据,如法线、高度、环境光遮蔽等。纹理的主要目的是为几何图形的表面提供详细的视觉效果,使其看起来更加真实和复杂。而我们常见的图片是一个二维的像素数组,每个像素包含颜色信息(通常是 RGB 或 RGBA)。图片可以是任何内容,如照片、图标、绘画等。图片的主要用途是显示和存储视觉信息,可以用于各种应用,如网页、文档、多媒体等。本章内容中,我们先创建了纹理以及采样器资源,并通过绑定组。
2025-02-18 09:40:23
849
原创 Wgpu图文详解(02)渲染管线与着色器
至此本章的内容就基本上接近尾声了,在本文中我们在第一章的基础上,进一步介绍了渲染管线以及着色器代码,并通过代码实践,希望让读者更加清晰了解整个过程。当然,目前为止我们仅仅在顶点着色器处理阶段消费了顶点的索引,以及在片元着色器处理阶段返回了固定的颜色值,而实际应用场景下远没有如此简单。因此在接下来的文章我们将介绍新的概念来实现如何更加动态的构建三角形。
2025-02-18 09:39:06
883
原创 Wgpu图文详解(01)窗口与基本渲染
对于代码方面,请读者不必担忧,本文的代码属于是Wgpu中比较固定的部分,后续的内容只会在本文的基础上进行局部增量的更新。
2025-02-18 09:38:07
919
BlendWPFSDK_For_Net4.0AndNet4.5.zip
2020-05-06
2017阿里技术年度精选(上下合集)
2018-03-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人