260×260

科学搜查官yuchanns

咖啡、代码与键盘
  • Shenzhen, China
  • 后端开发工程师
readme.md

嗨~我是@yuchanns,网友们通常叫我羽毛,我的常用中文网名是科学搜查官,取自《逆转裁判》中的女角色宝月茜的职业。

我的头像是一只喝着咖啡敲着代码的地鼠,姿势模仿了《崩坏3》的布洛尼娅的一个表情包,由我不愿透露姓名的朋友所绘。

readme

你现在所看到的博客是我使用gatsby编写的主题博客gatsby-theme-yuchanns,融合了github和reddit两者中我所喜爱的元素,目前还在完善中;等vuerpess-next功能完善后将会提供基于vuepress的版本。

我还编写过另一个主题vuepress-theme-hermit,这是一个hugo-hermit的vuepress实现。

到现在为止我谈到的都是前端相关的作品,但前端只是我的兴趣——实际上我是一名后端开发工程师,使用过php、python,目前的主力开发语言是go,并且我对自己的gopher身份而感到自豪。

Posted 16 hours ago

Rust语言精要

parts of ferris the crab

一文总结Rust语言精要,快速形成整体风格认知。

文章构成

  • 环境安装与工具链

    • 环境安装
    • 编译器与包管理器
    • 核心库与标准库
  • 语法和语义介绍

    • 语句与表达式
    • 变量声明语义
    • 函数与闭包
    • 流程控制
  • 类型系统

    • 基础类型
    • 复合类型
    • 标准库通用集合类型
    • 智能指针
    • 泛型
    • trait
  • 错误处理
  • 注释与打印

环境安装与工具链

Rust语言使用rustup作为安装器,它可以安装、更新和管理Rust的所有官方工具链。绝大多数情况下建议使用者使用该工具进行环境安装。

环境安装

对于*nix系统用户而言,执行:

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

对于Windows系统用户而言,下载安装rustup-init.exe

安装完毕后可以通过rustup show获取工具链安装地址,进一步查看有哪些工具链,例如在笔者的macOS上是:

❯ rustup show Default host: x86_64-apple-darwin rustup home: /Users/yuchanns/.rustup stable-x86_64-apple-darwin (default) rustc 1.49.0 (e1884a8e3 2020-12-29) ❯ ls /Users/yuchanns/.rustup settings.toml toolchains update-hashes ❯ ls /Users/yuchanns/.rustup/toolchains stable-x86_64-apple-darwin ❯ ls /Users/yuchanns/.rustup/toolchains/stable-x86_64-apple-darwin bin etc lib share ❯ ls /Users/yuchanns/.rustup/toolchains/stable-x86_64-apple-darwin/bin cargo cargo-clippy cargo-fmt clippy-driver rust-gdb rust-gdbgui rust-lldb rustc rustdoc rustfmt

通过rustup doc可以打开本地的Rust文档,而不用网络。

编译器与包管理器

rustc官方编译器,负责将源代码编译为可执行文件或库文件。经过分词和解析生成AST,然后处理为HIR(进行类型检查),接着编译为MIR(实现增量编译),最终翻译为LLVM IR

Posted 8 days ago

protobuf的使用

protobuf是谷歌开发的一款跨平台跨语言强扩展性的用于序列化数据的协议,就像人们常用的xml、json一样。它主要由C++编写,用户按照相应的接口描述语言(Interface description language, IDL)可以批量生成对应语言的代码模板,用于诸如微服务rpc交换数据之类的通信。

而grpc是使用protobuf协议实现的一个RPC框架,由谷歌开发。

本文通过一个小例子演示创建grpc的go服务端以及php和node的客户端进行通信,并为go服务端启用grpc gateway使之支持http访问。

注意:本文只适用于Linux或者macOS。

protobuf

环境安装

  • 安装protoc
  • 安装go插件
  • 安装php插件
  • 安装node插件

安装protoc

protoc是protobuf的编译器。就像其他编程语言,用户编写代码,编译器将其编译成其他后端语言,protoc…

Posted 15 days ago

自下而上的github actions使用笔记

github action 01

前言

笔者常常在github上使用一些XXexample的仓库记录使用某种语言的过程中对第三方包的试用或者验证一些思路和想法,时间一长,整个仓库就显得杂乱无比。

于是笔者打算采用Monorepo的方式对这些仓库进行管理,将各自的记录过程进行隔离,并且独立运行对应的单元测试。

调研过程一开始想到的是熟悉的CircleCI,遗憾的是这个工具官方不支持分割配置文件,所有的job都需要塞到同一个config.yml里,同样会显得冗长繁杂(民间是有通过makefile进行分割合并的解决方案,但是笔者觉得太过复杂);再者印象中曾看过别人使用github自带的CI/CD工具Actions似乎支持多个工作流,而且天然亲近github自身,于是决定新年的第一天就把它掌握了,用于接下来的Monorepo管理辅助。

注:在这篇文章中,笔者假定读者都已经掌握了yaml配置语法。

开始

  • 2021
  • 2020
  • 2019
  • 2017
  • 2016