I'm Kcat

I'm Kcat

Fancy life, fancy mind

Moving Meditations / World CG Challenge Submission
CG Challenge

Moving Meditations / World CG Challenge Submission

Moving Meditations Challenge 大赛今儿终于截止作品提交了,奋斗了大半个月,因为在最后关头硬件产能不足(没钱买显卡)的情况下,在最后关头把这个有 bug 的一版极限遗憾的提交了上去,即遗憾,也无奈。 八月是多灾多难难熬的一个月,事故连连,身心受创,在这样的情况下能做出来,我都忍不住随手给自己一个👍
1 min read
Podman Registry Configuration  / Podman 镜像配置
随笔小记

Podman Registry Configuration / Podman 镜像配置

注意:下面的内容为 Linux 环境下的操作! 1. 打开并编辑 /etc/containers/registries.conf 文件 * 一般情况下需要 sudo 权限 * 如果是使用诸如 apt 包管理器安装 podman 的话,会生成一个默认文件 2. 添加下面的内容或在默认文件基础上修改 下面的例子为用阿里云容器加速镜像来加速 Docker Hub 的镜像 unqualified-search-registries = ["docker.io"] [[registry]] prefix = "docker.io" location = "docker.io" [[registry.mirror]] location = "xxxx.mirror.aliyuncs.com&
1 min read
Getting Started with Kubernetes / 快速上手 Kubernetes

Getting Started with Kubernetes / 快速上手 Kubernetes

什么是 Kubernetes? Kubernetes 是一个可移植的、可扩展的开源平台,用于管理容器化的工作负载和服务,可促进声明式配置和自动化 Kubernetes 源于希腊语,意为 舵手 或 飞行员。Google 在 2014 年开源了 Kubernetes 项目 为什么需要 Kubernetes? 部署方式的演变 让我们回到过去,下图是部署方式的一个演变过程 传统部署时代: 早期,组织在物理服务器上运行应用程序。无法为物理服务器中的应用程序定义资源边界,这会导致资源分配问题。例如,如果在物理服务器上运行多个应用程序,则可能会出现一个应用程序占用大部分资源的情况,结果可能导致其他应用程序的性能下降。一种解决方案是在不同的物理服务器上运行每个应用程序,但是由于资源利用不足而无法扩展,并且组织维护许多物理服务器的成本很高。 虚拟化部署时代: 作为解决方案,引入了虚拟化功能,它允许您在单个物理服务器的 CPU 上运行多个虚拟机(VM)。虚拟化功能允许应用程序在 VM 之间隔离,并提供安全级别,因为一个应用程序的信息不能被另一应用程序自由地访问。 因为虚拟化可以轻松地添加或
14 min read
World Creator 2 & Unreal Engine 4

World Creator 2 & Unreal Engine 4

> World Creator 2 是个非常强大的 Landscape 制作工具,而且在 GUI 和可视化方面还是要比 World Machine 要现代化太多了(虽然 World Machine 也有 GeoGlyph),再加上对 Game Engine 的友好度,就是它了 基础 Unreal 的 Landscape 有两个基本要素,Component 和 Section Component Landscape 由若干个 Component 组成,Component 作为虚幻中 Landscape 的基本 渲染单元、可视性计算单元和碰撞单元 Section 一个 Component 可以由 1(1 * 1) 或
3 min read
GraphQL Spec / GraphQL 标准概览
GraphQL

GraphQL Spec / GraphQL 标准概览

本篇基于 2018 六月份 发布的版本 简介 Overview GraphQL 来自于 Facebook,Facebook 从 2012 年开始构思,在 2015 年正式发布开源 GraphQL 由两部分组成: (GraphQL) Query Language 和 (GraphQL) Engine,就如 SQL 和 Database 一样的关系,只不过 GraphQL 在 API 架构上表达了这种设计模式 客户端方一样需要发送请求至后端方,方式可以是 HTTP 亦或 WebSocket,只不过请求体本身的介质是 Query Language 后端方定义了整个 Engine 的所有类型和数据操作方式,而这个整体的表达称为 Schema 类型系统 Type System
4 min read
SafeArea / Flutter Widget
Flutter

SafeArea / Flutter Widget

SafeArea[1] 是用于适配不规则尺寸设备的一个 Widget,如 iPhone X 这类设备 我们就在默认 Flutter 项目 - 计数器,在 iPhone Xs 基础上测试 SafeArea 这是未修改前的布局代码部分: @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text(widget.title), ), body: Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: <Widget>[ Text( 'You have pushed the button
2 min read
Nvidia Driver in Ubuntu / 在 Ubuntu 下快速安装 Nvidia 驱动
随笔小记

Nvidia Driver in Ubuntu / 在 Ubuntu 下快速安装 Nvidia 驱动

在 Ubuntu 下,如果下载了 Nvidia 官方的驱动,然后按照 Nvidia 官方繁琐的 安装方法 [https://us.download.nvidia.com/XFree86/Linux-x86_64/410.66/README/index.html] 安装真的是一种折磨,而且在其中也会遇到非常多的问题 有没有一键安装的方法? 答案是有的! 多谢 Graphics Drivers [https://launchpad.net/~graphics-drivers] 团队的辛勤付出,把繁琐的安装过程进行封装,只需 apt 安装即可 我们只需要添加此 PPA[1] 仓库地址然后进行安装即可: sudo add-apt-repository ppa:graphics-drivers/ppa sudo apt-get
1 min read
Unlock Phabricator Restricted Project / 解锁 Phabricator 的 Restricted Project
随笔小记

Unlock Phabricator Restricted Project / 解锁 Phabricator 的 Restricted Project

这是一个很无奈的问题,项目变成这样的状态:无法查询到项目,也无法编辑或者进入项目,解决了许久,最后其实发现自己只是想复杂了... 问题重现 1. 当项目只有自己的时候 2. 离开这个项目 3. 接着项目就变成了 Restricted Project 的状态 解决方案 其实只需要知道项目的 PHID 即可,但是通过 Phabricator 的 Web 端是无法查询到的,但是其实很简单,只需要进入 Phabricator 的数据库便可以查询到,一般为 MySQL,这里以它为例 1. 进入 MySQL 2. 选择 phabricator_project 数据库 3. 查询 project 表 4. 便可以通过 name 找到对应名字的项目数据列,phid 列便是它的
1 min read
Insomnia
开发工具推荐

Insomnia

Insomnia 是一款支持 GraphQL 的 REST API 调试工具,促使我使用它的最大原因也是它对于 GraphQL 有着良好的支持,当然也让我慢慢舍弃了 Postman Insomnia 官网 [https://insomnia.rest] 上描述的特性有一个大列表,如下: GraphQL editor 我当然就不一个一个叙说了,最需要重点说的就是 GraphQL editor,使用它可以编写你的 GraphQL Query Language [http://facebook.github.io/graphql/October2016/],它有着和 GraphiQL 一样的代码提示,比 GraphiQL 更方便的是它也和 Postman 一样可以自定 HTTP 请求,例如 Header 等 免费开源 Insomnia
1 min read
Swift & C
Swift

Swift & C

因为 Swift 是建立在 LLVM 之上的,所以 Swift 是支持与 C 交互的。但是在 Swift 中,让其与 C 混编是一件说起来有点麻烦又不太麻烦的事儿,麻烦就是要实现混编可能需要一些零碎的步骤,不麻烦就是 Swift 也提供了和 C 对应的等价类型来进行转换使用 让 Swift 可调用 C 创建 Module Map 文件 Swift 是建立在 LLVM[1] 之上的,并且两者都是 Chris Lattner 的杰作,所以当然也就支持 LLVM 的 Module[2] 模块,而我们需要使用的是此模块中的 Module Map Language[3]
3 min read
RESEful API Documentation by API Blueprint  / 使用 API Blueprint 来编写 RESTful API 文档
API Blueprint

RESEful API Documentation by API Blueprint / 使用 API Blueprint 来编写 RESTful API 文档

可能在很多地方,编写文档或许是非常敷衍或潦草的事情,一个可能连排版都没有的 Word 文档可能就充当了文档的重要地位,但是这对于开发协作和后期的未知问题,仅仅只是时间的问题。在开发 RESTful API 中,随着时间的增长,API 的数量越来越多,查阅维护整理也就变得更加需要,文档需求的地位就越来越高。而编写 RESTful API 文档的方式有很多,例如:RAML、Swagger、apiDoc... 而我选择的是 API Blueprint,为啥呢?因为是用 Markdown 来进行编写,而且能够利用一些工具通过语法渲染成文档网页,何乐而不为呢? I. 语法 之前我们讲了,API Blueprint 虽然是以 Markdown 为基础语法,但后缀名规范保存为 .apib 而不是 .md ,想入坑也是要记住一些 API Blueprint 规范的指定语法的,语法方面我认为只需要讲比较重要的要点而不需要详细来讲,
4 min read
2017 秋季 Apple Special Event 回顾
Apple Special Event

2017 秋季 Apple Special Event 回顾

一年一度Apple的秋季新品发布会首次在 史蒂夫∙乔布斯剧院 于北京时间 2017年9月13日凌晨1:00 举行。Apple在发布会上发布了五款新品:iPhone X、iPhone 8、iPhone 8 Plus、Apple Watch Series 3 和 Apple TV 4K 下面我们就来回顾一下每款新品的新特性 iPhone X iPhone X 是本次发布会的最大亮点,X 为罗马数字 10 的含义[1],致敬着自从乔帮主发布第一代 iPhone 到现在已经过了十年 全面屏 iPhone X 使用了一块 5.8 英寸 OLED 的全面屏幕,支持 Super Retian Display[
4 min read
Logic Pro X 中使用 AUPitch 做高质的自动化曲线
Logic Pro

Logic Pro X 中使用 AUPitch 做高质的自动化曲线

我想可能许多人都会使用到 Pitch Shifter 或者 Vocal Transformer 这两个效果器来处理音高效果 Pitch Shifter Pitch Shifter 提供了一种结合音高转换后版本的信号与原始信号的简单方法。使用音调移动获得最佳结果。 Vocal Transformer Vocal Transformer 可用来移调声乐线的音高,增加或减少旋律的范围,或甚至将其减少到单个音符,以映射旋律的音高。无论您怎么改变旋律的音高,信号(共振峰)的组成部分都保持不变 自动化曲线的问题 但是当处理自动化曲线音高效果的时候,可能上面两个使用上就会出现一些问题,我们一起来看一下 Pitch Shifter Pitch Shifter 需要调整的属性为 Semi Tones,但是由于单位量级的问题,就会出现下面这样的自动化曲线(已经不能称为曲线了,哈哈): Vocal Transformer Vocal Transformer 需要调整的属性为 Pitch,而且是可以画出两个目标音高之间的自动化曲线: 但是,问题就在当 Mix
3 min read
使用 Flask-Migrate 来迁移数据库
随笔小记

使用 Flask-Migrate 来迁移数据库

使用 Flask-SQLAlchemy[1] 的童靴,可能会经常改动某些数据模型的属性,当然有更好的选择,那就是 Flask-Migrate[2] 安装 安装我觉得其实可以忽略这一步;),肯定用 pip 啦 pip install Flask-Migrate 使用 有两个方式可以使用 Flask-Migrate ,我一一介绍 使用 Flask 下面是官方例子 from flask import Flask from flask_sqlalchemy import SQLAlchemy from flask_migrate import Migrate app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:
2 min read
解决 macOS 上 Docker.qcow2 文件无限增长大小的问题
Docker

解决 macOS 上 Docker.qcow2 文件无限增长大小的问题

在 macOS 上使用 Docker 会发现一个问题,尤其是少于 256G SSD 的 MacBook Pro,这个问题可能会更加明显,那就是发现磁盘的可用空间会随着使用 Docker 而越来越少,当你去删除所有的 image 或者 container ,发现磁盘可用大小基本没什么变化,所以想要急切恢复可用的空间的童靴,就用下面的办法来解决 Docker.qcow2 磁盘可用空间越来越少的罪魁祸首就是这个 Docker.qcow2 文件,这个文件 Docker 使用的一个 qcow[1] 格式的镜像文件,它会随着使用而增长 解决方法 在网上有许多解决方法,使用脚本或者 qemu-img 命令来解决,我推荐使用Docker自带的清理办法 1. 打开 Docker 的 Preferences 偏好设置 2. 点击 Reset
1 min read
在 UINavigationController 的 Push 过渡动画中 Title 的错误位移
Bugs report

在 UINavigationController 的 Push 过渡动画中 Title 的错误位移

Bug 描述 在 UINavigationController 处理 Push 方式的过渡动画中,父级 UIViewController 的 Title 在少于 3个英文字符 或 2个中文字符 的时候,会出现过渡的偏差 Bug 复现步骤 1. 需要两个 UIViewController 并且被一个 UINavigationController 管理 2. 父级 UIViewController 的 Title 必须少于 3个英文字符 或 2个中文字符 3. Push 到下一级 UIViewController 4. 在屏幕左侧拖拉当前 UIViewController Bug 截图 字符数量截图表现情况一个英文字符偏差最大两个英文字符略有偏差三个英文字符基本正常Bug 处理 * 已提交至 Apple Bug Reporter * 在
1 min read
粤ICP备2022080316号-1
粤公网安备 44030902003469号