@Kurisu https://kuricat.com/ Recent content on @Kurisu en-us Mon, 02 Jan 2023 00:00:00 +0000 2022 Summary -> 2023 https://kuricat.com/article/life/2022-summary-2023-qx7yi/ Mon, 02 Jan 2023 00:00:00 +0000 https://kuricat.com/article/life/2022-summary-2023-qx7yi/ 2022 Summary -> 2023 [TOC] 毕业多年后, 感觉慢慢没有当初刚毕业时候的勇者心态, 有点不太想写 每年的 年终总结, 感觉是个不太好的变化, 还是要 勇敢面对自己的内心和失败才行, 毕竟我的路还很长很长. 想了很多种方式来回顾这过去的一年, 最后还是用三个词来总结吧. 器量 知识 勇气 器量 笔者不是一个喜欢热闹的人, 因为价值观, 或者 单纯只是喜欢安静, 比较喜欢一个人呆着. 很幸运的, 从高中毕业之后, 就基本可以按照自己的想法度过时间. 即便失败, 即便各种各样的负面情绪, 只需要和自己发脾气就行. 是一种所有的一切都在自己掌握的感觉, 自己想怎样努力, 用怎样的价值观去看人和事, 怎样看待未来. 但也正因如此, 随着时间的推移, 自身解决问题的能力和知识逐步成长, 当需要和公司的 上司/同期/同级/下属 更多的一起工作的时候, 就能感受到自己在这一场景的无力和无能. 上司还好说, 毕竟无法改变, 找个笔者认可的上司就行. 同期之间的价值观有时无法赞同, 同级的工作方式有时令人焦虑, 对问题的理解无法传达给下属, 导致各种令人沮丧的情况发生, 而在 … The difference between genericity in Golang 1.17 and genericity in others PL https://kuricat.com/gist/the-difference-between-genericity-in-golang-117-and-genericity-in-others-pl-lilc6/ Sat, 21 Aug 2021 00:00:00 +0000 https://kuricat.com/gist/the-difference-between-genericity-in-golang-117-and-genericity-in-others-pl-lilc6/ 泛型编程(Generic Programing)是 程序设计语言 的一种风格 或者 范式, 允许开发者在 强类型语言 中 编写一些 运行时才决定的类型. 这将提升在 强类型语言 中 代码的灵活度, 并让开发者写出更加简洁的代码. 各个语言中都有各种对 泛型 的支持 : C#, Java, .Net, Rust, Swift, TypeScript, Golang 中称为 泛型 Scala, Jiula, Haskell 中称为 参数多态 C++ 中称为 模板 下面对各个语言中的泛型来做一些介绍 C++ 模板 泛型在 C++ 中称为模板, C++ 有两种模板, 函数模板 和 类模板 , 函数模板很好理解, 就函数里支持泛型, 举个例子, 一个比大小的函数, 同时支持 int / float / string 类型 #include <iostream> #include <string> // from https://www.runoob.com/cplusplus/cpp-templates.html using namespace std; // … Artwork? Or tools? https://kuricat.com/article/life/artwork-or-tools/ Wed, 04 Aug 2021 00:00:00 +0000 https://kuricat.com/article/life/artwork-or-tools/ Artwork? Or tools? 这是一篇主观的文章 在实习和刚毕业的那一两年, 由于在写业务, 然后又想刷经验, 所以很容易就写出一些匪夷所思的代码, 虽然有部分设计是合理的, 但是很多都有过度设计和过早优化的味道. 那个时候也因为代码怎么写, 和 同事争吵过很多次. 但其实里面的很多写法, 只不过是 城里的人想出去, 城外的人想进来, 从一座城 去到另一座城 而已. 所以 工程师是在做艺术品吗? 呵, 当然不是啦. 那我们在写代码的时候纠结什么呢? 去追求的那些是幻灭 还是 真实存在的梦想? 很现实的是, 代码是会腐烂的, 架构是会腐烂的, 我们所开发的一切都在腐烂, 我们所做的都只是在给它续命, 然后等待下一次重构. 工程师所做的工程 和 艺术品 不一样, 艺术品做完 作者 可以不存在了, 比如 拉斐尔 的《雅典学院》, 距今 五百年过去了, 我们依旧可以在 梵蒂冈看到他的画. 但工程不一样, 工程是有目的性的, 比方说 做一个 社区买菜软件, 去追当下短暂的风口. 它可能生命周期就 3-5 年, 难道我们要在这一个又一个的 3-5 年生命的项目里一次又一次去追求所谓的 “艺 … Owner? or Observer? https://kuricat.com/article/life/owner-or-observer/ Tue, 03 Aug 2021 00:00:00 +0000 https://kuricat.com/article/life/owner-or-observer/ Owner? or Observer? 我们常说 要有 owner 精神, 有些公司也叫做 主人翁意识, 简单来讲, 通常指 对一个产品, 或者一个项目有那种拥有的感觉(有的公司会发散出更多内容, 但大体是这个意思). 而不是像一个旁观者来看这个产品或者项目, 觉得任何事情都无所谓, 反正跟我都没关系 :) . 但 owner 精神 也容易陷入一种状态, 认为对于 产品 或者 项目的批评或者意见是对自己的否定, 会转化成一种情绪(如果没有当然更好 :D ). 这样反而会阻碍产品或者项目的优化. 这种例子在 年轻的工程师身上(比如笔者 :))会比较容易见到, 比方说 自己写的 某某框架, 某某 SDK, 这也难免, 毕竟工程师每天做出来的东西就是不断被修改, 被提意见 XD 这种情绪(羞愧/恼怒) 容易诱导产生一些辩护动作, 并上升到自我辩护的层面. 而由于问题本身就是存在的, 这里的辩护大多数都是无理并且无力的, 只会让状态更加恶化. 但事实上接受批评的需求又是存在的, 让自己 owner 的东西变得更好的需求也是存在的. 如果无法接受反馈, 那么 owner‘s thing 就不会变 … flannel https://kuricat.com/article/tech/flannel-whhdp/ Sat, 31 Jul 2021 00:00:00 +0000 https://kuricat.com/article/tech/flannel-whhdp/ flannel 因为笔者对 计算机网络 认识浅薄, 加上很多的部分都是现学现卖,所以下述内容可能存在与具体事实相悖的内容, 所以如果发现请劳烦指正或讨论! 不胜感激. 下文中如下词汇表达同一个意思: 数据帧,数据包 [TOC] 背景 和 flannel 要解决的问题 从 flannel 的角度看, Kubernetes 只提供了 CNI 接口, 而 flannel 要完成下层网络的连通和构建. flannel 要解决基于 CNI 的问题包括如下: 分配每个 Pods 的网络地址 (知道每个 Pods 在哪) 设置虚拟网络设备, 来负责虚拟网络连通 (让数据包到达 指定 Pods 的位置) 除此之外, 它还要解决 Kubernetes 环境下对 网络方案的要求: 所有的 Pods 都需要有 独立的 IP 地址 所有的 Pods 都需要可以对外发包并接收到响应 合理划分子网, 避免 ARP 泛洪问题. 可以动态的分配 IP 地址, 而不是静态的地址分配 节点上的 Pod 可以不通过 NAT 和其他任何节点上的 Pod 通信 节点上的代理(比如:系统守护进程、kubelet)可以和节点上的所 … Kubernetes network scheme https://kuricat.com/article/tech/kubernetes-network-scheme-jrbsj/ Sat, 31 Jul 2021 00:00:00 +0000 https://kuricat.com/article/tech/kubernetes-network-scheme-jrbsj/ 因为笔者对 计算机网络 认识浅薄, 加上很多的部分都是现学现卖,所以下述内容可能存在与具体事实相悖的内容, 所以如果发现请劳烦指正或讨论! 不胜感激. 下文中如下词汇表达同一个意思: 数据帧,数据包 [TOC] SDN SDN 全称 (software-defined networking), 直译为 软件定义网络. 在云计算风靡的今天, 已经无法在 虚拟化的计算集群 中使用硬件的网络资源来灵活的划分子网. 于是 SDN 的概念应运而生, 除了本地的 虚拟化网络外, 跨主机的 虚拟化网络也是 SDN 讨论的内容. 虚拟网络究竟要解决什么问题 在提出解决方案之前,务必需要清楚需求。在 Kubernetes 场景下,对 网络有什么需求 所有的 Pods 都需要有 独立的 IP 地址 所有的 Pods 都需要可以对外发包并接收到响应 提供多个后端服务的负载均衡器(Service) 使用 DNS 来服务发现 使用 Network Policy (网络策略) 来区分网络 简单的讲就是希望是一个大内网环境, 基于 CNI 插件完成一个 大交换机的角色. CNI 跨节点组网 之前的文章里介绍的 虚拟 … Virtual Network - basic https://kuricat.com/article/tech/virtual-network-basic-7yoiq/ Sat, 31 Jul 2021 00:00:00 +0000 https://kuricat.com/article/tech/virtual-network-basic-7yoiq/ 因为笔者对 计算机网络 认识浅薄, 加上很多的部分都是现学现卖,所以下述内容可能存在与具体事实相悖的内容, 所以如果发现请劳烦指正或讨论! 不胜感激. 下文中如下词汇表达同一个意思: 数据帧,数据包 网络虚拟化是 虚拟化技术的子集。在 计算资源 和 存储资源 虚拟化的同时,也希望多台机器上的网络在逻辑上能够变成简单的网络结构,并且提供若干的管理能力。 当笔者第一次看到 flannel (常用的 Kubernetes 组网组件) 的结构图的时候, 是懵的…WTF….. 为什么网络能弄得这么复杂… 这又是 网桥(bridge), 又是 veth pair , 还有什么逻辑 以太网设备 (physical eth dev), 和什么 VXLAN? WTH? 怎么感觉和 大学教的计算机网络课程一点关系都没有….老师只讲过 TCP/IP , OSI 七层网络…. 容器网络 解决 什么问题, 为什么会有这些问题? 但每一个技术方案的出现, 都是为了解决一个或多个问题, 容器网络要解决的问题(或需求)包括如下: 每个 Pod 都有 … (zh-CN) Cryptonote whitepaper https://kuricat.com/gist/-zh-cn-cryptonote-whitepaper-qhijf/ Sat, 08 May 2021 00:00:00 +0000 https://kuricat.com/gist/-zh-cn-cryptonote-whitepaper-qhijf/ 点击下方链接, 阅读 PDF link: zh_cn_cryptonote_whitepaper (zh-CN) Mixin Network WhitePaper https://kuricat.com/gist/zh-cn-mixin-network-whitepaper-e2dc0/ Sat, 08 May 2021 00:00:00 +0000 https://kuricat.com/gist/zh-cn-mixin-network-whitepaper-e2dc0/ 点击下方链接, 阅读 link: zh_cn_mixin_network_whitepaper [zh-CN] Cryptonote whitepaper https://kuricat.com/article/tech/zh-cn-cryptonote-whitepaper-qhijf/ Sat, 08 May 2021 00:00:00 +0000 https://kuricat.com/article/tech/zh-cn-cryptonote-whitepaper-qhijf/ 目前仅仅包括部分内容, 有翻译不准确或者错误的地方欢迎到 这里提 Issue 指正 4.2 Definitions (定义) 4.2.1 Elliptic curve parameters (椭圆曲线参数) As our base signature algorithm we chose to use the fast scheme EdDSA, which is developed and implemented by D.J. Bernstein et al. [18]. Like Bitcoin’s ECDSA it is based on the elliptic curve discrete logarithm problem, so our scheme could also be applied to Bitcoin in future. 作为基础签名算法, 我们选择使用 EdDSA(Edwards-curve Digital Signature Algorithm 爱德华兹曲线数字签名算法) 和 Bitcoin 的 ECDSA (椭圆曲线数字签名算法)一样, EdDSA …