Blog
Joeson Huang's Tech Space Working on Go and React mostly. Into all kinds of devop and infra stuff as well!
Latest posts Intro For years in Go, I’ve used many different logging libraries, from logrus to zap . After the release of slog into Go standard library, I immediately embraced it. It’s clever design made it so versatile and easy to use, and has already accumulated an enormous amount of libraries in the ecosystem. Trick 1 Try have a dedicate package in your project for logging attributes. you have broad view of…
May 28, 2025 This assumes you upgrades are at the same level. (cutting and stackgins at 1/4 belt speed) 90 degree rotator, buttons for toggle clockwise/counter-clockwise, and output to straight or side Show Code…
Nov 17, 2024 硬件选择 具体的智能硬件方面目前是 Aqara (绝大部分) 和 Tuya, 可以完美的通过 Zigbee 配对, 离线控制. 而且 Zigbee2MQTT 里面可以直接 OTA 升级硬件官方固件. 下面介绍的都是一些周边的硬件. Uunifi Dream Machine PRO Special Edition, UDM-PRO-SE 核心网络设备, 因为有各个房间ap面板(目前还没安装), 和自己托管的监控方案的需求. 直接一步到位购入了 UDM-PRO-SE, 其中 SE 是升级版, 多了POE和POE+供电, 正好适用于摄像头和AP. 不用再买一台POE的交换机(如果设备不多的话) Unifi 的产品最方便的是可以无缝接入 Home Assistant, 包括客户端信息 (是否联网, 所在AP). Unifi Protect 也可以无缝接入, 不仅仅是有视频源,…
Jul 17, 2022 先上个全家福 序 在此之前, 我已经在租来的房间中尝试了多种智能家居以及网关系统. 此次借搬入新买的房子的之机, 我将从头打造一个全屋智能的智慧家庭. 然后也记录下来, 与君共享. 一个是分享当中一些误区, 坑点. 二是以后改进时有据可循. 内容规划 网关平台/协议选择 软件选择 硬件选择 实操 电路改造? 待续 网关平台/协议选择 平台 目前市面上每个厂商都有自己的智能家居平台, 米家 , 涂鸦 , 博联 , HomeKit , Google Home , Alexa 等一众平台厂商可供选择. 协议 通讯协议分别又有 Wif , 蓝牙 , Zigbee, Z-wave 等各类协议. 其中 Z-wave 因为使用的 865-926 MHz 波段在国内不属于公共领域, 使用起来是违法的, 所以我们不能考虑. Wifi 和 蓝牙 的大部分设备都不支持完全离线运行,…
Jul 4, 2022
1. 如何获取interface的reflect.Type type Duck interface { Quack () } var reflectTypeOfDuck = reflect . TypeOf ( struct { Duck }) . Field ( 0 ) . Type () func IsDuck ( val reflect . Value ) bool { return val . Type () . Implements ( reflectTypeOfDuck ) } 2. 不要用map[string]interface{}来Unmarshal 避免下面的用法 m := map [ string ] interface {}{} json . Unmarshal ( data , & m ) println ( m [ "message" ] . ( string…
Dec 21, 2020 Why 最近在写一个小项目, 需要在 Go 执行 JS. 看过了otto, goja 甚至 go-ducktype. 但是出于性能角度的考虑, 还是想用 V8. 社区有不少 Golang +V8 项目. 但是绝大部分早已停止了维护. 最终看下来 只有 augustoroman/v8 这个 V8 的 Go wrapper 和 Node.js 的作者 Ry Dahl 的 v8worker2 . 其中 v8worker2 . 并未暴露 V8 的API, 而是在其基础上包装了一个基于 ArrayBuffer <-> []byte 的接口, 而且也停止了维护. 而 augustoroman/v8 却不能直接 go get 使用, 与 GO111MODULE 不兼容等问题. 于是便有了 joesonw/js8 这个库. 在把已经编译好的 V8 文件打包进来, 并加上对 Bazel 的支持. What…
Oct 19, 2019 介绍一个新开源的一个小项目. 用来在前端项目上, 缓存请求结果在内存中. 适用于比较大型的应用, 存在多个地方可能重复请求同一个ID, 或者批量中会包含重复的ID. 为了节省资源以及时间, 写了这么一个小小的工具. 安装 npm i bulkcache 实例 import { Cache, FilterFunction } from 'bulkcache'; interface User { id: number; name: string; email: string; } function idGetter(user: User) { return user.id; } async function fetch(id: number) { return await YourAPI.fetchUser(id); } async function bulkFetch(ids:…
Jan 12, 2019 白鹭引擎在升级到5.1的同时, 迎来了一个重大功能的更新. 引擎和编译彻底分开, 同时, 对于编译功能引入的插件机制. 极大的方便了定制工作流. 1 插件机制 首先来介绍一下5.1之后的机制. 当使用新创建一个基于5.1的项目之后. 会发现与之前不同, 会多出一个 scripts 文件夹. 这个文件夹里面就是编译相关的类型, 其中 config.ts 便是编译的入口文件了, 类似于 webpack.config.js . 由于自动生成的里面有很多 ‘无效’ 的代码, 所以我们先来精简一下配置(关键代码). const config: ResourceManagerConfig = { configPath: '', resourceRoot: () => 'resource', buildConfig: (params) => { const { target, command,…
Apr 14, 2018 刚刚加入一个创业公司, 开始负责技术方面的事情. 首先呢, 肯定是先搭建服务器和内网环境. 在这里就过一遍阿里云搭建内网的一个过程. 作为一个自己的记录, 也给有同样需求的朋友们一个分享. 首先是阿里云机器的配置: 首先创建一个专有网络 创建一个交换机(子网) 然后前往 VPC路由器 界面, 添加一条路由, 目标网段 填写 0.0.0.0/0 , 表示此网络下所有机器, 下一跳 选择你的堡垒机, 这样内网的出口流量都会导到堡垒机上 登入堡垒机, 运行 iptables -t nat -A POSTROUTING -s 10.0.0.0/8 -o eth0 -j MASQUERADE , 其中 10.0.0.0/8 根据实际情况填入你的交换机网段, 这样内网流量都使用了堡垒机ip 配置内网dns解析(堡垒机) 以 centos 为例, 安装dnsmasq, yum install -y…
Nov 14, 2017 The environment is Ubuntu 14.04 LTS NFS Server-side setup Let’s say your NFS shared directory is /shared/local , and it maps to local(NFS server) directory /usr/local First, we need to clone nvm, git clone https://github.com:creationix/nvm.git /usr/local/src/nvm Then let’s make two directories for storing nvm stff. mkdir /usr/local/nvm mkdir /usr/local/node And we then create /etc/profile.d/nvm.sh…
Jul 21, 2015
← Prev ✦ Random Next → Visit ↗ Feed Kagi ↗