zola 建站笔记
心路历程 从 wordpress 转到 static site generator 很长时间了。 各种 ssg 工具试用过不少。以前用过 jekyll,但觉得不太好用。react/angular/vue 都是用来做 SPA 合适,建站不是主要功能。gatsby 和 nuxt 偏重于前端 js 实现功能,而我需要的更偏重…
2022 年 07 月 18 日
心路历程 从 wordpress 转到 static site generator 很长时间了。 各种 ssg 工具试用过不少。以前用过 jekyll,但觉得不太好用。react/angular/vue 都是用来做 SPA 合适,建站不是主要功能。gatsby 和 nuxt 偏重于前端 js 实现功能,而我需要的更偏重…
2022 年 07 月 18 日
离职在家,最大的好处就是有了足够的空闲时间。不做点什么的话,真对不起自己。于是我做了几个自己需要的小工程。 一个简单的http服务器 首先是serva,一个简单的http服务器。说实话,这个题目都做滥了,随便哪种语言,找个web框架库,几行代码就可以撸一个。但市面上的现成的工具里面,很难同时满足我的几个需求: 简单+…
2022 年 07 月 10 日
这段时间离职在家,没什么具体事情好做,于是自己给自己写点工具玩。 时间来到七月,神兽们都回家了,要跟我抢我的日常用机来玩游戏。没办法,拿了台旧机器,开始研究如何远程连接到原来主机上的wsl2环境。 本质上,wsl2是一台虚拟机,其网络是通过NAT方式,连接到主机上的vEthernet (WSL)接口。因此直接的解决思路…
2022 年 07 月 04 日
在实现自己的网站的时候,我经常会感到混乱。这并非是因为我不知道某些效果在技术上如何实现。 真正的问题在于:我不知道应该如何设计。 页面应该如何布局?某个控件应该居中还是靠左?上下左右补白多少?某个按钮的样式应该是方的还是圆的?等等…… 这些问题在所有的页面上都困扰着我。有时拿到一些现成的模板页面,照着改起来的时候挺轻松…
2022 年 02 月 10 日
赶上封城,在家隔离了好多天。工作的项目没有任何 Bug 出现,实在是无聊。因此这段空闲时间,我终于下定决心把网站重构了一版。重构时试验了一些新的工具和框架,下面是一些值得总结的最佳实践。 静态网站生成器(SSG):Zola 说起来,我已经试验过好多种 SSG 了。不夸张地说,Jamstack 上面的 SSG,我至少试验…
2022 年 01 月 01 日
背景问题说明 将常用脚本放在一处是个方便的做法,实现方式也很多,但常见的实现方式有以下问题: bash 配置中使用 alias / function 等方式,如 .bashrc / .bash_profile 等;这种做法有以下几个问题: 脚本会跟已有的文件内容混合,显得混乱 修改脚本需要重新加载,调试起来比较麻烦…
2021 年 11 月 24 日
程序的创造,也就是程序的设计和实现,跟艺术创作是很相似的,都是将存在于人类大脑中的东西具象化。但跟艺术创作相比,程序的设计和实现所需要的顾及的因素可能会更多,而逻辑要求必须更精确。人们可以接受断臂的维纳斯,但不能接受一个有明显缺陷或者功能缺失的程序。 在一个实际的项目中,软件的设计者一定会面对诸多限制,例如: 工具库…
2021 年 04 月 28 日
前一段时间用Rust实现了一些功能,最近需要将这些实现搬到Android上来跑。这种问题,说简单也简单,就是用JNI(Java Native Interface)实现。但实际做起来,从来就没有那么简单。 工程相关问题 这里希望的是在Android App中使用Rust代码,因此Rust代码必须是library。虽然bi…
2021 年 02 月 08 日
过去以java为基础做web应用的时候,大家的习惯是用Spring搞定所有事情。前端部分并没有特别独立出来,一般都是用freemarker模板语言,做到Spring MVC里面。 现在,浏览器变得比以往更加强大;前端工程的独立开发,对界面的实现非常有帮助。因此在开发阶段,现代web应用通常会把前端独立出来做一个工程。这…
2020 年 09 月 28 日
做微服务的想法由来已久,之前也试验过REST,感觉Java做服务端也还算方便,不过还是略显折腾。 最近需要做一个demo,要将一个python服务放出来,由于涉及到文件流传输,不太想用REST,于是就想到了GRPC。 工程说起来倒是也没啥复杂的,客户端打算用web app来做,所以必然是用grpc-web。服务端虽然是…
2020 年 09 月 27 日
小米Wifi在公司用的时候,可能是发热太高,偶尔会出现无法使用的情况。但拔下来过一会再插上就OK了。 不想跟自己过不去,就申请了一个Wifi Dongle。不过公司有限制,大约就100块,多了不好批。 挑了一下,有两个选择,Edimax的EW-7811UN和TP-Link的WDN5200H。前者Ubuntu下免驱,不折…
2020 年 05 月 15 日
WSL就是Windows Subsystem for Linux,也就是Windows下的Linux子环境。 至于为什么要用WSL开发?实在是因为Windows环境太奇葩了。比如我有时候做前端,vue或ng的cli下作serve。在Linux下毫无问题,Windows下经常出现文件改动后,服务crash的情况。 WSL…
2019 年 11 月 06 日
随便写点side project的时候,遇到了一个问题。才发现原来我没真正理解Promise。 问题很简单,用nodejs做dns解析的时候,通常是callback模式,如下: var dns = require('dns'); var options = {all: true}; dns.look…
2019 年 09 月 26 日
网络出了点状况,虚拟机连不上了,碰巧手上有个小米随身Wifi可以当无线网卡,插上虚拟机一试,我擦,不能用?! 搜了一下,大概是这么个状况,这小东西用的是MTK MT7601芯片,驱动在Ubuntu 18.04里面已经有了,但是小米很机智(zei)的使用了不同的VID/PID,因此自然认不到了。 既然知道原因,那就要加上…
2019 年 09 月 18 日
上一篇只讲了基础概念,这一篇我来用lalrpop实际解析一些东西。 我们假设要解析这样的字符串:“a: str”,这是一个类似变量定义的字符串,冒号前是变量名,冒号后是类型。对于类型,我们定义一些基础类型,但我们也允许自定义类型。 首先我们分析一下这类字符串的BNF,应该是类似这样的形式(简化后): <vari…
2019 年 08 月 30 日
最近碰巧看到ThoughtWorks的技术雷达第20期,提到研发人员绩效度量的四个指标,即:前置时间、部署频率、平均修复时间 (MTTR) 和变更失败率。关于这四个指标的进一步解释,可以参考这篇文章:《软件交付效能度量——从吞吐量和稳定性开始》。 度量研发人员的绩效是个复杂的问题。很多直接可见的简单指标是无法直接用来做…
2019 年 08 月 13 日
从设计角度上讲,程序和数据是分离的。所以通常我们使用配置文件来调整程序的行为。配置文件通常用一些常用格式,例如Json或者Toml等等。 但有时,我们需要把一些复杂的定义或者行为放到配置文件中,用常用格式是没办法表达这些复杂的定义或者行为的。这时就需要自行解析配置文件。这样的解析的复杂度可能会高于程序本身的复杂度。对于…
2019 年 08 月 08 日
开发的Client有用到Push,之前一切都好好的,突然之间就不能收Push消息了,了解了一下,居然是Push Server临时加了VAPID验证,知道这个原因后我心里默默说了一句MMP。 说归说,事情还是得做。Server端声称已经做好了跟Push Server之间的交互,只需要Client端将Server端提供的K…
2019 年 03 月 13 日
生活中,老婆想要一个方便处理她的培训班数据的工具,所以打算写一个Web应用。用标准的前后端分离模式开发两个工程。前端用Angular,后端用Spring Boot把数据库放出HATEOAS也就是Restful接口。好处就是可以轻松跨平台运行。 工作中,要用Rust写一个工具库,并加以验证。因为涉及的交互比较复杂,所以打…
2019 年 03 月 03 日
最近在用Rust写程序,一开始很不适应ownership概念,感觉缚手缚脚。现在慢慢习惯之后,还是觉得很拘束。只能说这是一种门槛较高的语言,当然换来的是其强调的“安全”;也就是说,用Rust很难写出类似内存泄露的问题。Rust跟其他语言在某些概念上略有不同,在这里简单比较一下。 首先,所有的编程语言都可以用来进行结构化…
2019 年 02 月 21 日