背景

我最近在开发一个中转网盘程序,网盘自身仅维护目录结构,内容的存储则由第三方块存储提供。

这样的设计下,上传文件的端点需要同时接受参数和内容:

请求参数

阅读全文

本博客使用Hexo已经7年了。博文和内容增多后,hexo的生成速度越来越难以满足需求啦。我的个人博客迁移到Hugo近一年了,生成的速度飞快,也没有遇到什么坑,是时候迁移了。顺便还能水一篇文章

前期准备

安装Hugo

我打算使用的主题Stack需要使用到Hugo的扩展版hugo-extended,如果你的主题没有额外的要求,按照普通版即可

Before you start, make sure you have installed Hugo extended version. For more information, see Hugo’s documentation.
This theme uses SCSS and TypeScript, that’s why Hugo extended version is required

choco install hugo-extended

新建网站

hugo new site-example
cd site-example

安装主题

我比较old-fashion,喜欢用sub module

阅读全文

直接左递归消除

针对左递归的上下文无关语法$A$,存在一种能够消除左递归的改写方式。 本文将不严谨(?)地证明这一点。

左递归语法

考虑如下语法

$$ A \rarr A\alpha_1|A\alpha_2|A\alpha_3|\dots|A\alpha_m|\beta_1|\beta_2|\beta_3|\dots|\beta_n $$

令$\alpha = \alpha_{1\dots m}$,$\beta = \beta_{1 \dots n}$,则可简写为

阅读全文

今天天气不错,我打开自己的小网站,准备欣赏下花了N久魔改的主题。敲好URL,提示500。套的Cloudflare提示我,SSL证书过期了。我用的是StartSSL提供的证书,默认有效期90天。而服务器的Linux版本又比较老,无法使用certbot的自动续期功能,所以我啥时候想起来了就手动更新下证书。我这人比较佛系,证书过期也在所难免。所幸更新证书比较简单,certbot --certonly renew就搞定了。 出乎意料的是,这次更新完证书后nginx报错nginx: configuration file /etc/nginx/nginx.conf test failed。真奇怪,certbot仅仅是生成公私钥对,并不会更改nginx的配置;而我自己也好几年没动过nginx了,到底是怎么回事?

阅读全文

「一杯茶一包烟,一个BUG调一天」—— 题记

最近在做MIT 6.S081的Lab Locks的Buffer cache,大致要求是实现一个LRU缓存队列,用于文件系统的块缓存(block cache),在保证线程安全的前提下尽可能的实现高吞吐量。
实验给原始代码是基于双向链表的LRU队列,用了一个自旋锁保护链表和其中所有元素的值,可想而知这个自旋锁的竞争非常激烈 实验给了很多提示,比如将缓存改成哈希表,用链地址解决冲突;给每个bucket配一个锁,不同bucket里的元素互不影响,可以并发执行;用时间戳记录访问时间,避免反向遍历;

阅读全文

没啥用的前言

我的电脑自从买来就故障不断,无故卡死、无故蓝屏、自动重启。好在频率都不高,忍一忍凑合用。最近一段时间蓝屏的频率激增到了忍无可忍的地步,作为一个Geek,我自然要想办法排查一下原因。蓝屏最常见的错误码是KMODE_EXCEPTION_NOT_HANDLED,IRQL_LESS_OR_NOT_EQUAL,PAGE_FAULT_IN_NONPAGED_AREA,这将凶手指向了驱动。然而「Windows Debugger」却分析不到可疑的驱动,有几次分析甚至将故障原因指向硬件。这让找真凶的过程异常艰难。好在微软提供了一个自带工具「Driver Verifier」,它可以检测驱动程序在运行过程中存在的问题,这给“查案”带来了一丝转机。

阅读全文

没用的前言

最近做了一个AI安全会议的倒计时网站,核心思想类似MVVM:开发者维护一份人类可读的yml,网站则根据这些yml生成对应HTML。开发和维护都比较友好,构建也有脚本自动化

$dest_dir = './public'
$dest_dir = Join-Path $dest_dir 'conference' 
New-Item -Type dir $dest_dir -Force
Copy-Item -Path './conference/types.yml' -Destination (Join-Path $dest_dir 'types.yml') -Force
$all_yml = Get-Content './conference/*/*.yml' -Encoding UTF8
Set-Content -Path (Join-Path $dest_dir 'allconf.yml') $all_yml -Encoding UTF8 -Force
$updated_by = git config user.name
$updated_by = $updated_by.trim()
$last_updated = Get-ChildItem -Path(Join-Path $dest_dir 'allconf.yml') | select LastWriteTimeUtc
$content = "$($last_updated.LastWriteTimeUtc),$($updated_by)"
Set-Content -Path (Join-Path $dest_dir 'last_updated.json') $content -Encoding UTF8 -Force

Write-Host $content

唯一剩下的麻烦只有下部署了:

阅读全文

作为Python的一个依赖管理工具,Anaconda实现了Pip「全局安装」和virtualenv「本地安装」的折衷,它使用「按名访问」的方式实现环境的隔离,使使用者能够灵活的隔离和共享环境。

阅读全文

清华的Anaconda镜像在华东地区是好是坏,好的时候一切顺利,坏的时候一个24K的包下5分钟;Anaconda的官方源则更惨,连repo.json都下不下来;
今天又是清华的源大姨妈的一天:Pytorch下载到100MB就超时,折腾了三个小时也装不上。而同在华东的SJTU的镜像就很稳定,这次全线换成SJTU啦。

首先执行

conda config --set show_channel_urls yes

在/usr下生成.condarc文件,然后将其内容替换为

阅读全文

前言

本文的是台湾大学2020机器学习Semi-supervised leraning的笔记。奉行Lazy evaluation策略,对这些知识更深层次的探究只在绝对必要时完成。

现在是所谓的大数据时代,每人每天产生的数据成千上万。对商业公司来说,数据的收集已经不是问题,但给数据添加标记的工作因为其所需要消耗的人力物力成为老大难问题;而在机器学习中,带标记数据的不足会给模型引入bias。一个很自然的想法是,能不能用这些不带标记的数据来提高模型的泛化性能呢?答案是肯定的。这就是半监督学习。

阅读全文