0%

最近突发奇想,想到自己有几台电脑,性能都不错但是经常闲置,包括实验室的服务器也不是每时每刻都在充分利用资源,因此完全可以跑一些别的程序来利用。我最先想到的就是以前做电脑压力测试的 Prime95 程序,然后一搜发现这里面还是有不少门道的。本文介绍一下如何利用你家电脑闲置的性能,将其贡献给科学事业,并且在冬天的夜晚让它的散热成为一大取暖来源~哈哈哈哈

GIMPS

我最先测试的程序是 Prime95,Prime95 是梅森素数搜索计划(Great Internet Mersenne Prime Search, GIMPS)的 Windows 客户端。这个计划旨在利用互联网的计算资源来寻找梅森素数。形如 $2^p-1$($p$ 为素数)的数被称为梅森数,如果这个梅森数也是素数那么就被称为梅森素数。梅森素数是目前寻找大素数最高效的目标,人类发现最大的质数前几名都来自于 GIMPS 发现的梅森素数。

如果你不想知道很多信息,只想直接开冲,那么你只需要从 GIMPS 官网下载 Prime95(Windows)/mprime(Linux),解压后双击直接开跑就可以了。如果你希望了解这个程序具体在干什么,或者想青史留名找到新的梅森素数,那么请接着往下读这一节~

阅读全文 »

Termux 是一款在 Android 上运行的终端模拟器,其中内含了一个非常轻量的 Linux 环境,并且使用 apt 做包管理器。最新的 Termux 已经不在 Play Store 上更新了,安装需要去 Github 或者官网。旧版本的 Termux 在使用 apt 的时候可能会碰到问题。

近来因为买了 Surface Duo,在手机上稍微折腾了一下 Termux,尝试是否能把手机变成 Linux 级别的生产力工具。结论当然是不可以,一方面性能不够,另一方面 Termux 上的包还是太少了,不过还是记录一下一些环境设置方法,供之后查阅。

另外,Termux 支持通过 proot 包来安装完整的 Linux 系统,最有名的是 TermuxArch。在安装完完整系统之后,理论上你的手机就已经变成完整的 Linux 电脑了!不过由于我并不需要那么多功能,我没有走这一条路线。

ssh 客户端

在手机上使用 ssh 客户端还是非常实用的,这样可以随时随地监控各个电脑的情况,并且不怎么耗流量。在 Termux 里面安装 ssh 非常简单,直接

1
pkg install openssh # or apt install openssh, pkg=apt in Termux
阅读全文 »

近些年一直有听闻 Rust 的发展,相比其他新语言(如 julia),我觉得 Rust 是切实解决了一些程序开发的痛点的,并且 Rust 比较适合作为底层软件开发的语言,我很感兴趣。Rust 官方有一本 Gitbook 教程,因此我就直接通过阅读它来上手 Rust 了。

本文记录一些我在看完这本书之后初步总结的一些 Rust 与我熟悉的 Python/C++/C# 之间的各方面的异同。如果你也有 Python/C++/C# 的编程经验,并且想上手 Rust,那么这篇文章应该能帮助你概括性地了解 Rust 的特性。本文也是我对 Python/C++/C# 之间特性的一个对比总结,但是我对这些语言的了解也没有那么深,因此如有谬误还请指教。

备注:

  • 本文中的代码仅为代码片段,对于 Python 之外的代码你可能需要将部分代码放在主函数中才能正确运行。
  • 本文的代码格式以精简为主,没有按照语言的标准格式编写。

语法

赋值

在变量进行赋值的时候,内容的传递有三种模式:传引用、复制、移动。其中最后一种指的是旧内容被复制到新对象中,然后旧对象中的内容变为不可用。

  • Python: 是传引用
  • C#: 引用类型是传引用、值类型是复制
  • C: 都是复制,但是是浅复制
  • C++: 默认是复制,但是可以通过 std::move 实现移动(需要 C++11)
  • Rust: 默认是移动。复制需要使用.clone()
阅读全文 »

最近几年一直有新的编程语言变火,也不断的有新概念的出现。我一直有打算了解各种新的编程语言,并且如果有前景的话多学一门语言也是挺好的。因此本文总结我在了解一些流行的现代语言的过程中,记下来他们的各种特点。如果你也有兴趣尝试新的语言,那么希望这个文章可以帮到你~

关于语言的流行度可以参考 TIOBE 排名Github 排名Stack Overflow 排名。本文也不会详细介绍每个语言的特性,因为每种语言都用非常多的特性,而且很多也都还在不断开发中。正因如此,本文的评价也仅限用与写下本博客的时候。

本文主要关注通用程序语言,对于一些领域专用语言(Domain-Specific Language)如 SQL 就不比较了,因为他们是你需要的时候你就会用,你不需要的话也不需要学。

关于编程语言的演变,下面是一个很精炼的图(来源点我),如果想要更完整的演变关系的话可以参考维基的程序语言编年表(按年代按年份,推荐后面那个!),或者参考这个网站

阅读全文 »

在我的收藏里面,音乐是占大头的。我非常喜欢尝试各种风格的音乐,也非常喜欢日本音乐圈的多样性,因此收集了很多。在这过程中也了解到了一些音频格式的内容~我也自己做过一个 benchmark,比较不同音频编码的性能区别,如果有兴趣的话可以自己尝试一下~。

我个人喜欢收藏无损音乐,目的不仅仅是因为高音质,而是无损意味着 “无损”,音质与 CD 或者其他音源是完全一致的(当然,这个一致性音频编码本身并不能保证音源的完整性,但是如果有其他的辅助信息如 EAC log,或者 AccurateRip 测试结果就完全可以保证了)。在这个情况下我把无损压成有损,就能保证这个有损是达到了预期的音质。如果是网上直接下载有损的话,一是很难确定这个有损有没有经过二次压缩,造成额外音质损失,二是有损也最好不要再转换格式了,同样是因为音质损失,这就造成了额外的不便。

本文就介绍一下我了解的与音频编码相关的知识,以及各种常用音频编码格式的比较。更全面的格式对比可以参考 Wikipedia 页面。另外需要指明的是,本文的介绍基于音乐收藏和本地播放的目的,与流媒体的需求不同,后者追求稳定的码率、低延迟甚至是低能耗。

阅读全文 »

这篇博客也是拖了很久了,简直是蹭热度都蹭不到热的。。。去年年底有一帮数学家和喜欢数学的人(Numberphile)发起了一个 Youtube 系列,叫#MegaFavNumbers,也就是介绍自己最喜欢的大于一百万的数字。虽然没有要求这个数字是整数,但是 Numberphile 一般只关注整数(甚至仅自然数)。如果没有这个限制的话,那物理化学上就有很多常数了,例如某视频评论区有人提到阿伏伽德罗常数 23333

如果让我来选的话我还真想不太出来,毕竟没学多少数学,顶多会选 $2^{32}$ 这种程序员知道的数字,或者已知最大的质数、孪生质数云云。这个题目真的是很有意思了,很多有特殊性质的数字或者是某数列的第一个数都会比较小,很少会有一个非常大并且独一无二的数字,因此看了 3Blue1Brown 的视频之后我顿时就来了兴趣,准备写下这篇博客介绍以下各博主选择的数字,又了解一些平常不知道的冷知识~哈哈。我大致将这些数字分了个类,不过不是很严格。

阅读全文 »

对于 ACGN 收藏来说,文件管理是一个基础任务,毕竟收藏的文件内容多种多样,例如光盘镜像、压制后的音频视频、小册子扫描、字幕甚至小游戏等。把文件按一定结构整理是必要的,我也专门为整理音乐写了一些小工具,不过整理文件的格式因人而异,也没有特别的难度,因此不需要特别描述我是怎么做的。我觉得值得一提的内容是如何对文件进行定期存档和备份,这也是我在硬盘被偷之后立马开始对收藏的文件进行的操作。备份有一个 3-2-1 的原则:3 份备份,2 份本地,1 份云端,下面会介绍一些本地的备份和云端备份的方法以及我的选择。

离线备份

离线备份就是把文件资料整理并存储到另一个设备上,需要考虑的功能有加密、压缩、增量更新、去重、冗余等。如果是最基本的备份,如果只想直接备份,不考虑加密压缩等的话,著名的 rsync 是个不错的选择,它可以同步两个目录(可以是挂载 FTP 的目录),并且有算法来进行去重以减少二进制的传输。

阅读全文 »

很久没写博客了,这次想总结一下自己在 ACGN 收藏这条道路上越走越远,到底都走了哪些弯路哈哈哈哈 (博客画风突变)。这一篇算是一个开篇稿吧,想写的内容有挺多的,一些比较短的内容会放在这一篇底下。

阅读全文 »

最近买了一些新的耳机,但是买完总感觉自己被收智商税了,于是就查查查了好多资料。这篇文章介绍我理解下音频发烧友的一些词汇是什么意思,如果你不烧耳机音响,但是想了解这个群体的,这个文章也能作为一个入门参考~Hifi 领域有很多词汇我也没懂的,我也写在文章里了,如果有老烧路过请指教一二。我尝试用我学过的知识来客观解释音频领域的知识,我没上过信号处理,相关课程只上过自动控制和离散控制。

发烧到底追求的是什么

刚好今天有看到一个 Youtube 视频讲到,为什么音乐人并不 care 那些高端的音频设备。视频内容本身的观点是:一方面音乐人更关注的是音乐本身能不能打动人,另一方面是音乐人很多也没有那么多闲钱哈哈哈。以及底下的评论有很多人说自己是 pro musician,然后疯狂喷 audiophile 追求的东西是虚无飘渺的。我承认烧音频领域有很多玄学都是脑放(脑补出来的),但是做耳机解码之类的厂家也是有很多 pro audo engineer,不能否认这里面也是有很多技术门道的。根据这一帮自称 pro musician 的发言,我估计他们也没有多牛,他们的观点也有幸存者偏差在里面,并且本身不同级别不同类型的音乐也有不同的需求,因此这些评论也就看看就好。不过有一点我是同意的,听音乐最重要的还是音乐本身,对音质的追求不应放于对音乐本身的追求之上。

再打个比方,对音质的追求和对画质的追求其实是相似的,好的(照片)画质能让我们看清楚世界更多的细节,好的音质能让我们更真切地感受到被乐器包围的感觉。音频处理和视频处理也有很多相似的地方,因为他们都经常被看作信号来处理,后文我也会经常拿画质来打比方。

阅读全文 »

进来给实验室的服务器上装了个 Minecraft 服务器,给大家闲来无事上来种种菜,顺便体验一下新版本的特性。之前最高只玩过 1.8,现在虽然更新到 1.16 了,但是听说很多 Mod 都还是只支持到 1.12,所以就搭了 1.12 的服务器。基岩版的 MC(Win10 自带的那个)虽然性能很好,但是由于不购买就没法玩,所以考虑到大家肯定最开始都不想买,以及那个开服好像很麻烦,就还是搭了 Java 的服务器。

一分钟上手 Minecraft 开服

以前玩 Minecraft 的时候都觉得开服务器好麻烦,要知道各种各样的配置方法,因此很佩服服主管理这些东西。直到有一天我搜到了这个:docker-minecraft-server,瞬间感觉一键开服不是梦了!这个 repo 把 Minecraft 的服务器版本以及 Bukkit/Spigot 服务器端 Mod 框架(可以理解成服务器上的 Forge)都嵌进去了,简直不要太方便。数据也是从 host 的硬盘里 mount 进去的,因此如果你的服务器要转移或者备份也很方便。有了这个,开服只需要一行命令(假设你服务器上有 docker)

1
docker run -d -p 25565:25565 --name mc -e EULA=TRUE itzg/minecraft-server
阅读全文 »