Unicode 编码的基础知识
Unicode 之前
大陆使用的是 GB2312(扩展的还有 GBK、GB18030)
台湾:Big5
美国:ASCII(ISO-8859-1)
拉丁语系:ISO/IEC 8859-1 ~ ISO/IEC 8859-15(中间废弃了 12)
上述这些标准在本地区使用当然没问题,但是如果要跨地区交流就会出现问题。因为同样的码值体系中对应的字是不同的。如果要在同一篇文档里显示不同的编码的文字,那是一个不可能的任务。
Unicode
Unicode 的发明就是为了解决上面的问题:
鼎鼎大名的国际标准化组织 ...
编译原理:用 Rust 编写一个简单的词法分析器
词法分析是编译器和解释器的第一个环节,相对而言也比较简单。词法分析器(有时也称为单元生成器(tokenizer)或者扫描器(scanner)) 将源代码转换为词法单元,这个过程称为词法分析。
本文代码设计复刻自《用Go语言自制解释器》词法分析器一章,文章结构、编码过程根据笔者理解重新阐述。
词法分析器
词法分析的过程会遍历输入的字符,然后逐个输出识别的词法单元。这个过程不需要缓冲区,也不需要保存词法单元,只需要不断地输出下一个 Token,我们可以考虑使用迭代器来完成这个设计。
定义词法单元
假设有这样 ...
Babylon.js 开发:基本环境配置
和之前 Svelte 下的 three.js 开发:基础框架 一样仍然使用 Svelte 作为项目脚手架,从而获得现代化的构建工具。
Svelte 项目初始化
大体步骤和 three.js 一样:
12345678npx degit sveltejs/template my-svelte-babyloncd my-svelte-project# 使用 typescriptnode scripts/setupTypeScript.jsyarnyarn dev
Babylon.js 安装
1yarn add b ...
Rust 使用宏与元编程
程序都是由数据和指令(代码)构成的。通常对于程序来讲,指令(代码)是不变的。然而,如果可以使用指令(代码)生成指令(代码),程序就可以获得更加高度的灵活性,而这就是 元编程。
元编程通常实现的方式有两种,根据代码生成的时机可以划分为「编译期」或者「运行期」。对于动态语言来讲,例如:Python、Lisp 或者 JavaScript,可以在运行期实现元编程。编译型的静态语言,例如:C/C++、Rust,是没有办法实现在运行时生成指令的,因此只有「编译期」的元编程。
最简单元编程是 C 语言的 #define, ...
Houdini 入门实例:程序化生成一个奶酪模型
基础模型
奶酪的基础模型是通过 Box 然后使用 fuse 合并顶点完成的。为了让 Box 始终出现在坐标系上方,使用了 matchsize 节点,设置 Justify 为 min。
将 box 的 size 的 z 设置为 2
选中顶点,使用 fuse 进行合并:
奶酪孔洞
奶酪上的孔洞使用 boolean 节点将模型与 sphere 进行相减得到的。为了让孔洞分布在表面上,使用了随机化生成。如果每个孔洞大小都一样,会显得非常不真实,因此使用 attribrandomize 对大小进行随机化。
...
Maya 第三方 C++ 插件开发
Visual Studio 环境配置
安装 Maya 和 Visual Studio 就不用说了。
创建一个 C++ 的空项目;
添加一个 .cpp 文件,例如:pluginMain.cpp 之类的,作为整个插件的入口;
(可选)移除构建 x86 平台。Maya 是 64 位的应用,可以移除掉 x86,避免出现一些意外情况;在项目点击右键「属性」
也可以将 x64 改成自己想要的名字,例如:maya2023_64bit 之类的。
「配置类型」修改为 .dll
配置 SDK、编程语言标准之类。
将生成 ...
Blender 入门:基础操作
视图操作基础
Blender 中,X 轴用于宽度,Y 轴用于深度,Z 轴用于高度。(右手系)
Maya 反转了 Y 轴和 Z 轴,所以在 Maya 中,Y 轴是高度,Z 轴用作深度。(也是右手系)
旋转:鼠标中键(滚轮)
缩放:Ctrl + 鼠标中键(滚轮)
移动:Shift + 鼠标中键(滚轮)
按 ~ 进入视图菜单,可以切换视图。
侧边栏开启/关闭:N(右边)
Camera to View 选项
工具栏开启/关闭:T(左边)
视图切换
三视图是奇数
前视图:1
右视图:3
顶视图:7 ...
使用 Rust 与 WebAssembly 进行图形开发
项目初始化
要求需要先安装好 Node.js,和 Rust 环境。
建一个新的文件夹,将工作目录切换到该目录下
1npm init rust-webpack
如果能看到下面的图案就是成功了:
1🦀 Rust + 🕸 WebAssembly + Webpack = ❤
安装依赖
1npm install
安装 wasm-pack
Linux 和 Mac OSX 的操作系统可以使用 cURL 进行安装:
1curl https://rustwasm.github.io/wasm-pack/ins ...
Excel 基础函数与编程
Excel 可以算是 office 三套件里真正有价值的(P.S. PowerPoint 属于祸害)。
常用快捷键
Ctrl + 1(Mac:⌘ + 1):单元格格式
Ctrl + h:查找和替换
Shift + 空格:活动单元格所在的整行
经典好用的工具
数据转置
粘贴时使用 Ctrl + Alt(⌥) + V 并选择“转置”
数据分列
在“数据”选项卡上,单击“分列”。请确保选择了“分隔符号”,然后单击“下一步”。
数据校验(下拉列表)
在“数据”选项卡上,单击“数据验证“。在“允许”下,单击“序 ...
米兰·昆德拉与《不能承受的生命之轻》
人物生平
出生:1929 年 4 月 1 日于捷克斯洛伐克的布尔诺市(现在叫捷克共和国)
布尔诺在捷克斯洛伐克算第二大城市,但人口不到 40 万
布尔诺音乐传统非常好
昆德拉的父亲就是著名的音乐专家
1975 年,米兰·昆德拉离开捷克斯洛伐克,到了法国。
1979 年,捷克斯洛伐克的政府取消昆德拉的国籍。
1981 年,法国总统密特朗专门下令特批,给了昆德拉法国国籍。
1979 年,昆德拉发表了《笑忘录》,标志着“法国时期”的开始。他开始写作《不能承受的生命之轻》,1982 年写完,1984 年出 ...