2022 年读书笔记

前两年对哲学,期权,投资等等分类下的书籍比较多,但是 2022 年看得书就比较杂,有一些是在书单中放了很久的书,正好有契机拿出来看看。

之前历年的记录:

传记

  • [[康德传]] 是一本康德的传记,康德是一位我越了解越敬佩的人,不仅在于他的思想,当我知道他可以数年如一日一样每天坚持在固定时间去散步,作息非常规律的时候,我知道他是那个言行一致的人
  • [[刷新]] 刷新 是微软现任 CEO [[萨提亚 纳德拉]] 的传记,在我的书评中我也曾提到过,微软近几年的变化,转型非常的亮眼,可以说全部归功于这一任新的领导人。
  • 活法,是 [[稻盛和夫]] 的一本人生哲学,乐观地设想,悲观地计划,坚定地执行。为了实现理想,只有主动追求的东西才能到手。
  • [[若为自由故 自由软件之父理查德 斯托曼传]] 若为自由故 是自由软件之父 [[Richard Stallman]] 的个人传记,先了解了[[自由软件]],然后又了解到了 [[自由会社]],进而知道了斯托曼的故事。虽然可能斯托曼的观点再一些人看来有些极端,但是尤其是在所有的软件设施都上云的今天,用户去掌握一个软件,去掌握自己的数据这件事情是变得如何重要不言而喻。斯托曼关于自由软件的定义至今未知都依然至关重要,运行,复制,分发,修改的自由。
  • [[富兰克林自传]] 我对富兰克林的最初印象就是那个下雨天放风筝找闪电的小孩,看过这一本书,他的形象才立体起来,我后来知道他是美国的建国元勋,但是没有做过总统,我也知道他是一个发明家,但是看过了这一本「自传」我才知道富兰克林的人生远比我想象的要「精彩」很多,他不仅是一个政治家,科学家,还是一个外交家,出版商人,作者,外交家,更甚至在心理学上也有建树。

金融

  • [[金融的本质]] 金融的本质 是美联储前主席 [[本 伯南克]] 的著作,是一部关于美联储历史,应对金融危机手段的一本科普读物,非常容易读,也是一本快速了解美联储的书。
  • [[原则]] 原则 是一本久仰其名的书,因为是 [[瑞 达利欧]] 的著作,在那个 30 分钟理解经济原理的视频里面,我已经对这个名字如雷贯耳,这本书实际上是达利欧自己桥水基金公司创建,以及公司内部采用的决策原则,如何有效决策,如何解决分歧,如何创意择优,

社科

  • [[自由软件 自由社会]] 自由软件 自由社会 这是自由软件之父斯托曼的一本著作,探讨了什么是自由软件, 什么是自由社会。什么是 Free software,这里的 Free 不是免费,而是和 free speech 中的 free 一个含义,自由。而自由社会,就是一个由法律来规范的社会,没有秘密法律。法律可以被监管,司法实践中,所有的诉状,判决意见都是公开的,论证过程也是公开的,所有的法官意见可以在之后的实践被引用,融合。美国的司法系统就是建立在「源代码」公开的基础和原则之上的,它对任何想使用它的人都是开放和自由的。
  • [[工作、消费主义和新穷人]] 工作、消费主义和新穷人 很偶然的一次机会在书店看到的,因为读过 [[齐格蒙 鲍曼]] 的 [[现代性与大屠杀]] 所以立马就拿起来读了。鲍曼认为是人创造了「工作理论」,用来解决工业会生产所需要的劳动力。工作理论的本质是对自由的摒弃,目的是为了把人们所做的事情,认为值得做得事情,有意义的事情分离开来,把工作本身和任何切实的,可理解的目的分开。
  • 法国大革命前夕的舆论和谣言 「谣言」两个字,在疫情期间是我非常厌恶的两个字,这一本书让我知道了什么是「谣言」,字面上谣言就是非官方的消息。谣言的诞生就是人民开始有了公民意识,了解政治的要求是合法的,对政治的知情权和批判权是必要的,更甚至说谣言也是必要的。因为在涉及公共事务时,只有人们不断地提出诉求,那么说活就不仅仅再是一个能力,而是一个权利,即使有可能说出来错误的言论,也要得到保护。
  • [[谣言:世界最古老的传媒]] ,因为对谣言这两个字感兴趣,所以又看了这一本书,这一本书更是精炼地让我知道,谣言是消除不了的,只有不受监控、约束和强迫的信息交流才是真实的交流,哪怕其可靠性会受到影响。
  • [[开放社会及其敌人]] 开放社会及其敌人 这本书非常「难读」,这是我很多次读,然后又放弃的一本,但是通过其他人慢慢对[[波普尔]]思想的论述,慢慢地可以知晓一二,这是波普尔在政治哲学领域的集大成之作。波普尔提出了开放社会的理念,也讨论了历史主义,极权主义,以及对柏拉图的批评,对黑格尔的批评等等,这是一本非常庞大复杂的著作。
  • 邻家的百万富翁 这是一本畅销书,所以非常好读,书中阐释的观点也非常有意思,这本书可以算是一个观察思考,作者通过观察,思考,百万富翁有什么特质,进而引发我们的思考。如何看待收入和财富的关系,如何累积财富,尊重金钱,什么是消费自由,如何守住财富,如何投资,读起来非常轻松,不妨在闲暇时刻随便挑一章感兴趣的读下去。
  • 现代性与大屠杀 这本书可以说是影响我最大的书,在阅读这一本书的过程中,我将所有通过关键字 [[现代性]] 检索出来的视频,播客全部听了一遍,虽然现代性一词并不是本书作者 [[齐格蒙 鲍曼]] 提出的,但是这本书将为什么会发生犹太人大屠杀,部分原因归咎于现代性,是让我思想转折的一个重要影响。
  • 大法官说了算-美国司法观察笔记 [[何帆]] 的著作,非常适合想要了解最高法院的人去阅读,是一本非常轻松易读的书。
  • [[法官能为民主做什么]] 法官能为民主做什么 是最高法院 [[斯蒂芬-布雷耶大法官]] 的最高法院观察记录,全书主要分成几个部分,第一个部分就是最高法院通过几个案件建立起了民众对其的信任,第二部分是布雷耶大法官的实用主义宪法解释方法,第三部分是解释了价值判断和比例原则。
  • [[纳瓦尔宝典]] 很早很早之前就知道了 [[Naval Ravikant]],尤其是他的 Twitter Storm [[How to Get Rich Without Getting lucky]],也看过一点英文原著,中文版本出版之后也拿起来读了一下。这也是一本对我影响非常大的著作,虽然这这本书只是对 Naval 只言片语观点的总和,但是却真实地改变了我的很多思考方法,和想法。金钱和财富的区别,资本杠杆。对技能的理解。
  • 天朝的崩溃:鸦片战争再研究 这是一本研究鸦片战争的集大成之作,还原了战争前后的相关人物,历史事件。作者用非常翔实的材料,描绘了一个非常精彩的故事。而在疫情政策反复的 2022 年阅读了这一本书,更是觉得 200 多年了,我们还是没有吸取教训

计算机

  • [[编码]] 编码 正如其名,就是讲述编码的历史,从编码的角度非常通俗易懂的方式来介绍计算机中的编码。
  • [[现代政治的正当性基础]],因为作者 [[周濂]] 而看了这一本书,作者在这本书中论证什么是国家,国家的正当性基础,我们为什么要国家。 最初知道周老师是因为他的哲学播客,也是非常通俗易懂,单这本书其事写的有一些深奥。

心理学

  • [[也许你该找个人聊聊]],这是一本挺有意思的书籍,作者 Gottlieb 是一位心理治疗师,而这一本书就是他的回忆录,几位来访者的故事。

2022-12-31 reading , notes , collection , book , reading-2022

.idea 文件夹的内容梳理

使用 JetBrains 旗下的 IDE 创建项目都会在项目的根目录中自带一个隐藏的 .idea 文件夹,每一次遇到这个文件夹的时候都会犹豫一下是否需要下面的内容全部放入到 .gitignore 文件中,大部分的时候就直接全部忽略了。现在想过来再了解一下这个文件夹下的每个文件都代表什么内容,因为有一些数据库配置,还有一些插件的临时信息都会存放在这个目录下。

.idea 文件夹存放的内容都是 JetBrains 旗下的 IDE,比如 IntelliJ 等等项目独有的配置文件。这些文件包括项目独有的 VCS mapping 或运行或调试的配置文件,还有一些用户操作相关的文件,比如用户当前打开的文件,浏览历史记录,当前的配置等。

文件夹:

  • codeStyles 文件夹,包含项目所使用的代码风格
  • dictionaries 文件夹包含用户自定义的词典,IDE 用来检查单词拼写的时候会引用,文件下的内容以用户分隔,不应该提交版本控制,除非明确知道自己想做什么
  • dataSources 文件夹,数据库连接信息,不应该提交版本控制
  • libraries 文件夹,包含一系列的 XML 文件,不应该提交到版本控制,这些文件会从项目中自动生成

文件:

  • dataSources.xml 包含 IDE 中使用 Database 的数据库连接信息
  • encodings.xml 项目编码
  • vcs.xml 文件用来记录 VCS 相关的内部信息,启用了哪一个 VCS
  • indexLayout.xml 该文件是用来记录项目外包括的文件夹的。这些文件夹可以通过 Attach Existing Folder... 来加入
  • modules.xml 基于 Gradle 或 Maven 的项目生成的信息,可以被排除,会在导入的时候自动生成
  • vcs.xml 文件用来记录 VCS 相关的内部信息,启用了哪一个 VCS
  • runConfigurations 文件夹是用来存储 shared run configurations 的。
  • indexLayout.xml 该文件是用来记录项目外包括的文件夹的。这些文件夹可以通过 Attach Existing Folder... 来加入

有一些文件应该被提交到版本控制中,而有一些是需要被排除的。个人的习惯是直接排除掉 .idea 整个目录,貌似到目前为止还没有产生任何问题。

gitignore

如果不知道要在 gitignore 中填写什么什么,我一般会用如下的方式自动产生 .gitignore:

  • 使用 IDE 自带的功能,在项目上右击,选择 New -> .ignore File ->.gitignore 文件,然后会弹出选框,选择自己的系统,语言,IDE 就会自动产生
  • https://www.gitignore.io/ 在网站中根据自己的需要,输入系统,编程语言,IDE 等等,然后会自动生成一段 .gitignore,复制粘贴即可

reference


2022-12-27 idea , jetbrain , dotfiles

Java 11 新特性学习

Java 11 在 2018 年 9 月 25 日发布。这是 Java 8 之后首个长期版本。

安装

因为我本地使用 asdf 来管理 Java 的多个版本,所以直接使用 asdf 来安装:

asdf install java adoptopenjdk-11.0.17+8
asdf global java adoptopenjdk-11.0.17+8
java -version

HTTP Client 升级

Http Client 几乎被重写,支持异步非阻塞。

包名从 jdk.incubator.http 改为 java.net.http,通过 CompleteableFutures 提供非阻塞请求。新的 HTTP Client 提供了对 HTTP/2 的支持,兼容 HTTP/1.1 ,与主流的开源库(Apache HttpClient,Jetty, OkHttp)性能相差无几。

Java 在 Reactive-Stream 的实践,广泛使用了 Java Flow API。

模拟 GET 请求:

HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
      .uri(URI.create("http://openjdk.java.net/"))
      .build();
client.sendAsync(request, BodyHandlers.ofString())
      .thenApply(HttpResponse::body)
      .thenAccept(System.out::println)
      .join();

Epsilon 低开销垃圾回收器

Epsilon 目标是开发一个内存控制器,不执行任何垃圾回收,提供完全消极的 GC 实现,最大限度降低内存占用和内存吞吐延迟时间。

通过 JVM 参数 -XX:+UseEpsilonGC 来开启。

为什么要开发一个不回收内存的垃圾回收器

一些特殊的场景可以不开启垃圾回收以方便进行比如性能测试,内存压力测试等等。

简化单个源代码文件的启动方法

Java 11 可以直接运行一个单一的源码文件,Java 解释器可以直接在内存中编译,然后执行。所有的类都必须定义在同一个 Java 文件中。

这个功能特别适合想要简单了解一下 Java,写一些脚本文件的时候非常有用。

本地变量类型推断

Lambda 参数的局部变量语法

Java 10 开始就引入了 var 关键字,允许局部变量推断。

但在 Java 10 中有几个限制:

  • 只能用于局部变量
  • 声明时必须初始化
  • 不能用于方法参数
  • 不能在 Lambda 表达式中

Java 11 中允许开发者直接在 Lambda 表达式中使用 var 进行参数声明。

低开销的 Heap Profiling

Java 11 中提供了一种低开销的 Java 堆分配采样方法,能够得到堆分配的 Java 对象信息,并能够通过 JVMTI 访问堆信息。

  • 低开销,可以默认开启
  • 定义好的程序接口访问
  • 堆所有堆分配区域进行采样
  • 给出正在和未被使用的 Java 对象信息

ZGC 可伸缩低延迟垃圾收集器

ZGC 是 Z Garbage Collector ,GC 停顿时间短,不超过 10ms,能处理 T 级别堆大小。

实验阶段,只在 Linux/x64 上可用,在编译时加入参数才可以启用,并且使用时需要增加 JVM 参数。

飞行记录器

低开销的事件信息收集框架。

启用参数:

-XX:StartFlightRecording

reference


2022-12-20 java , java-11 , jdk , openjdk

项目管理工具 Backlog 使用介绍

Backlog 是一个在日本非常流行的项目管理工具,用于追踪项目进度,查看甘特图,查看进度消费图。

Backlog 的英文原意指的是积压的工作,一系列的任务,或者待完成的事情。这个词通常被用在项目管理,软件开发中。

相关的术语

Backlog 上有一系列的术语

  • スペース(Space),空间,为每一个 Backlog 组织提供的 URL 划分的共享空间。一个空间由多个项目组成。
  • プロジェクト(Project)项目,包含每个组的任务、文件、团队成员等
  • プロジェクトの例(工程实例)
  • 課題,Backlog 中需要负责人处理的事项、任务,被称为「課題」,課題 可以设置开始时间、结束时间、负责人、内容、主题等等信息

每一个任务都有四种状态:

  • 未対応,还没有开始
  • 処理中,进行中
  • 処理済み,工作完成,等待确认
  • 完了,确认并完成

这个任务状态也可以通过后台的设置进行自定义。

技术栈

  • [[Phaser]]
  • [[Linear]]
  • [[Trello]]
  • [[ClickUp]]
  • [[Asana]]
  • [[Hive]]
  • [[Jira]]

2022-12-19 project , project-management , backlog , software , software-development

《天朝的崩溃:鸦片战争再研究》读书笔记

《天朝的崩溃:鸦片战争再研究》 是茅海建教授对于鸦片战争研究的集大成之作,是系统研究鸦片战争十余年所得的成果。在阅读之前,我本以为是一部非常学术的类似论文一样的著作,然而我只阅读了一章就改变了我的观点,作者以人物为核心,将历史事件以人物为核心串联,并收集各方面的文献材料,去还原历史的本来面貌,去摆正对一个历史人物的是非判断。并且作者的笔法流畅通顺,非常易读。

怎么知道的这一本书

这本书很早就在待看列表中,不断地有人在不同的场合曾经提到过,在豆瓣的时间线看到过,在 Twitter 上看到过有人推荐。鸦片战争几乎是中国人尽皆知的近代耻辱的开始,1840 年就像是一个烙印,相信很多人都记得。但唯独很多人不知道的是鸦片战争究竟是如何爆发的,又是如何一步步战败的。我们的教科书只是让我们对鸦片战争有了一个大概的印象,但每一个细节都缺失了。这也是让我对这一本副标题为「鸦片战争再研究」的书产生兴趣的一个原因。

关于作者

[[茅海建]],我还是第一次读这位教授的书,同样看介绍,这一本《天朝的崩溃》也是茅海建教授的成名之作。茅海建是华东师范大学历史系教授、北京大学历史学系兼职教授,师从陈旭麓教授。

几句话总结书的内容

这是一本还原鸦片战争前后相关人物、相关事件的历史著作,作者以翔实的文献材料,理性中立的评价,使得鸦片战争中的道光帝、林则徐、琦善、奕山等等人物形象跃然纸上。每次读到中途放下,就像是看电视剧中途休息,意犹未尽。

启发或想法

这本是一本讲述近 200 年前清王朝和英国的战争前因后果的历史著作,却不时的让我回想起过去三年的新冠疫情,主「剿」和主「抚」和如今的清零和开放;道光皇帝的优柔寡断,坚信祖宗留下来的制度尽善尽美只是朝廷存在诸多腐败的问题和如今左右摇摆的政策变化,动辄就以腐败问题查处高官,却从来似乎不曾真正解决问题;各地大臣欺瞒,克扣军饷和如今各地防疫政策,防疫数据以及通过疫情大赚核酸检测的钱。这一系列已经发生了近 200 年的事情再一次因为病毒而重新在这片大地上演,虽然因为科技发展,生活的变化,大多数事情的发生已经改变了其面貌,以前从广州到北京的一封奏折需要一个月,现在的通信技术发展只需要几毫秒,但欺瞒的手法却如此相同,知情不报,顾左右而言他。

另外一个让我非常敬佩的是作者在文献、参考资料上的引用数量,往往看完一个章节才意识到作者的脚注竟然会多达上百个。如此翔实,具体的,从这个方面收集的材料也使得这本历史著作在学术和可信度上更加可靠。

谁应该看这本书

所有想要更进一步了解鸦片战争的人。

印象深刻的句子

  • 这里绝无意为伊里布的谎言辩护,而是指出,对促发这种谎言的体制和君主也也应当批判。
  • 道德的批判最是无情。而批判一旦上升至道德的层面,事情的细节便失去了原有的意义,至于细节之中所包含的各种信息、教训更是成了毫无用处的废物。
  • 战争的现实就是这么冷酷,丝毫也不照顾正义的一方。
  • 战争的权威性,就在于强迫对方顺从。
  • 知识给人以力量,愚昧也给人以力量,有时甚至是更大的力量。

2022-12-16 reading , reading-2022 , reading-2022q4 , 读书笔记 , 鸦片战争

editorconfig 配置文件说明

在一些开源项目的根目录中会有一些 .editorconfig 文件,看名字也能大致猜出来是编辑器的配置文件,这个文件的主要内容就是编辑器编码、缩进等等配置。

editorconfig 可以跨不同编辑器,为不同的 IDE 维护一份一直的编码风格配置文件。

  • 使用 Tab 还是空格进行缩进
  • 缩进多少格

样式定义举例:

[*]
end_of_line = lf
insert_final_newline = true

第一行为通配符。

文件通配符

editorconfig 中可以使用正则来匹配文件,对匹配的文件使用之后定义的配置。

比如例子中的 [*] 就表示的是匹配所有的文件。

这个通配符类似正则表达式。

  • * 匹配除 / 之外的任意
  • ** 匹配任意字符
  • ? 匹配单个字符
  • [name] 匹配指定字符
  • [!name] 匹配非指定字符
  • {s1, s2, s3} 匹配多个字符
  • {num1..num2} 匹配 num1 和 num2 之间的任意字符。

指定文件

如果要指定为 Markfile 文件设定格式:

[Makefile]
indent_style = tab

也可以指定多个文件,使用 , 分隔:

[{package.json,.travis.yml}]

指定文件类型生效

如果要匹配所有的 Python 源文件和 JavaScript 源文件可以使用:

[*.{js,py}]

指定路径

指定路径下的所有文件:

[lib/**.js]
indent_style = space
indent_size = 2

配置语法

缩进风格:

indent_stype

可选值:

  • space 空格
  • tab Tab 制表符

缩进大小:

indent_size

通常会设定 2 字符或 4 字符。

换行符号类型:

end_of_line

可以是:

  • lf 换行,Unix 和 Linux 下的换行
  • cr 回车,macOS 下的
  • crlf 回车换行,Windows 和 Dos 下

编码格式:

charset

通常会:

  • utf-8
  • utf-8-bom
  • utf-16be
  • utf-16le

文件末尾是否插入空行:

insert_final_newline

如果配置 true 则在文件末尾插入空行。

常用的例子:

# top-most EditorConfig file
root = true

# all files
[*]
indent_style = tab
indent_size = 4
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true

# .md file
[*.md]
trim_trailing_whitespace = false

所有其他的配置可以见 官方 Wiki

IDEA 配置 editorconfig

JetBrains 的 IDEA 可以安装 editorconfig 插件。

Vim 配置 editorconfig 插件

在 Vim 下使用 vim-plug 插件管理器,添加 editorconfig-vim 插件

Plug 'editorconfig/editorconfig-vim'

source .vimrc ,然后 : PlugInstall 即可。

其他编辑器可以查看 官网

reference


2022-12-10 editorconfig , editor , ide , vscode , indent , code-format

发布和制作 torrent 文件

本文主要总结和记录一下制作和发布 torrent 的过程。

制作种子文件

制作一个种子文件的方式有很多,熟悉命令行的朋友可以直接使用命令行制作,如果在 Windows,或 macOS 下的朋友也可以使用 UI 界面,或相关的工具来制作。

种子文件是用来维护和协调文件下载和分享的一种文件格式。这种文件通常包含了文件的哈希值(即校验和)、文件名和文件大小等信息,以及用于协调文件下载的若干个服务器的地址。这些服务器的地址被称为 trackers。

在 BitTorrent 协议中,trackers 用于协调客户端之间的文件分享。当一个用户想要下载文件时,他可以打开种子文件并把其中的 tracker 服务器地址提交给客户端。客户端会向这些 tracker 服务器发送请求,然后 tracker 服务器会返回一组已经下载了文件的客户端地址。客户端可以通过这些地址找到其他已经下载了文件的用户,并从他们那里获取文件。

在制作种子文件的过程中有几个概念需要提前了解一下:

  • Trackers,协调客户端之间的文件分享
  • Private,种子文件中有一个 Private 标志,文件 Private 设置为 True 则表示文件的下载和分享只能在特定的 tracker 服务器或客户端之间进行

命令行制作种子

通过命令行制作种子,可以参考 这篇文章

主要借助的命令行工具是:

  • mktorrent
  • transmission-cli 中的 transmission-create

通过界面制作种子

通过 UI 界面制作种子一般需要本地安装一个 客户端 ,比如常用的 Transmission,或 qBittorrent,等等。

这里以 Transmission 客户端为例,来演示如何制作种子文件。首先准备需要分享的文件内容,记住其所在的位置。

首先打开 Transmission,点击左上角的 + 号,创建一个 torrent 文件。

create torrent in transmission

这个时候 Transmission 会要求你选择一个文件,或者选择一个文件夹,此时选择需要分享的文件(或文件夹)。

然后 Transmission 会弹出如下的弹窗。

transmission torrent

  • Trackers 中填入服务器提供的地址。
  • Comment 中可以任意填写
  • 勾选 Private
  • 选择 Torrent File 的位置

最后点击 Create 创建。

对于另外一些客户端,可能会要求用户选择区块的大小,如果文件大小比较适中,选择 4M 或 8M 即可,如果分享的文件内容超过 TB 级别,可以适当选择 16M 或更多。

上传种子文件

制作好种子文件,下一步就是将种子文件分享出去。登录一个 PT 站点, 比如 GTK ,然后访问 发布 页面。

编写标题

按照要求,一般在标题中填写资源的英文名称。

副标题中填写中文译名。

pt title rule

获取简介

PT-Gen

pt introduction

油猴脚本:豆瓣资源下载大师

可以通过在浏览器中安装 油猴脚本:豆瓣资源下载大师 ,然后在设置中开启「电影简介生成」。

douban userscript pt gen

刷新页面,就能在词条页面中看到 movieinfo

douban movie info

复制该信息即可。

如果怕豆瓣图片的防盗链机制,可以将海报封面重新上传到稳定的图床。[[电影海报网站]]

MovieInfoGen

电影信息查询脚本 是一个专注与通过豆瓣页面生成 PT 简介信息的用户脚本。

其他

获取 mediainfo

mediainfo 的内容一般会用 quote 代码框起来,比较美观

  • 使用 ffprobe 查看 Media Info
  • 使用 MediaInfo 软件生成
  • 一般在你源文件所在的 pt 站的种子页面会有
  • 可以用 ruTorrent 获取
  • PotPlayer 仅限 Windows

使用 ruTorrent 获取 mediainfo

  • 可以用 ruTorrent 获取
    • 点击种子,然后选择文件(Files)
    • 在文件上右击获取媒体信息(Media Info)

rutorrent media info

本地 PotPlayer 获取

仅限于 Windows。本地用 PotPlayer 打开媒体文件,右击,选择属性(Ctrl+F1),然后在文件信息中,将信息复制到粘贴板。

如果发布的是原盘,可以使用 bdinfo 软件获取。

[quote] Mediainfo/BDinfo [/quote]

发布种子

完成所有信息的填写,之后,点击发布。PT 站会自动重新下载一个新的种子,该种子包含了用户的个人信息,然后重载在客户端添加此种子,即可开始做种。

种子信息编辑

  • [[BEncode Editor]] Windows only
  • [[Torrent File Editor]] Windows, macOS

2022-12-09 torrent , mktorrent , tracker , private-tracker , transmission , rtorrent

动态规划问题梳理

很久以来一直没有好好地梳理一下 Dynamic Programming 的问题,虽然 DP (动态规划)的问题一直出现,但每次遇到总是会卡壳一下。既然前人已经将这一类问题总结成一个专有名词了,那就证明这一类的问题已经可以用一套现成的模式来解决,这篇文章就整理一下 DP 问题的常见模式。下面的部分内容是看了 MIT Dynamic Programming 的公开课之后总结得出,教授用一个 Fibonacci 的问题,自顶向下,自底向上,去系统的讲了什么是 DP。 DP 就是递归问题再加上把求解的子问题结果存储「记忆」。这个教授将什么是 DP 问题一下子就解释清楚了。

动态规划是一种分阶段求解问题的思想。用简单的话归纳动态规划就是 递推+记忆。通过子问题递推出原始问题,通过额外的空间来存储子问题解。

Simplifying a complicated problem by breaking it down into simpler sub-problems ( in a recursive manner)

类似递归问题,没有本质区别,但是动态规划的区别在于,只需要存最优的状态,推导出全局最优。

DP 算法最初由 Richard Bellman 发明。DP 就是 recursion(递归) + memorization (子问题结果记忆)

DP 问题如果从子问题开始往上推导,那么就可以将递归的写法变成循环的写法。这也就是为什么在讲斐波那契数列的递推的时候,通常会有两种写法。如果已经求解了子问题,那么从下往上递推,就可以使用循环(而非递归)来求解问题了。

Fibonacci

先来看看最经典的 Fibonacci 数列的求解方法。

如果使用递归,指数级复杂度 O(2^n)。

public int fib(int n) {
    if (n == 0 || n == 1) {
        return n;
    }
    return fib(n - 1) + fib(n - 2);
}

但是如果引入一个数组来存储以及计算过的结果,可以进一步降低时间复杂度,从指数级降到 O(n) 的复杂度。

更进一步可以将空间复杂度也从 O(n) 降到 O(1)

    public int fib(int n) {
        if (n == 0 || n == 1) return n;
        int[] dp = new int[2];
        dp[0] = 0;
        dp[1] = 1;
        for (int i = 2; i <= n; i++) {
            int temp = dp[0] + dp[1];
            dp[0] = dp[1];
            dp[1] = temp;
        }
        return dp[1];
    }

如果我们在脑海里模拟 Fib(n) 的原始求解步骤,自顶向下会发现是一棵向下的二叉树,求解 Fib(n) 首先要求解 Fib(n-1) 和 Fib(n-2),而与此同时又需要进一步求解 Fib(n-2), Fib(n-3) …….等等,并且向下求解的过程中我们会发现很多重复的计算过程。这个时候就需要看到 DP 问题的第二个特征,memorization(子问题的记忆化)。如果能够将子问题的结果保存下来,那就可以避免很多的重复计算过程。

Climbing Stairs

再来看一个相似的简单爬楼梯问题,假设有一个 n 阶的楼梯,每次可以爬 1 阶或 2 阶,问有几种方式可以爬到顶。

同样如果 n 是 2,那么可以是 1+1,或者 2。如果是 n 是 3,那就可以是在 n = 2 的时候往上爬 1 阶,加上 n = 1 的时候往上爬 2 阶。

Count the paths

再来看看延伸一些的问题,如果在一个 m * n 的棋盘上从左上角走到右下角,每次只能走右或下,请问有多少种走法。

将原始的问题拆分为子问题:

count path solution

编写伪代码:

int countPaths(boolean[][] grid, int row, int col) {
    if(!validSquare[grid, row, col]) return 0;
    if(isAtEnd(grid, row, col)) return 1;
    return countPaths(grid, row+1, col) + countPaths(grid, row, col+1);
}

状态转移方程:

opt[i, j] = opt[i+1, j] + opt[i, j+1];

if a[i,j] is 空地:
    opt[i,j] = opt[i+1, j]+opt[i,j+1]
else:
    opt[i,j] = 0

解决动态规划问题的一般思路

5 个步骤:

  • define subproblems 定义子问题,分治思想
  • guess (part of solution) 递推方程
  • relate subproblem solutions 子问题的解合并
  • recursive & memoize or build DP table bottom-up 递归和记忆,DP 状态表(存储中间状态),自底向上递推
  • 解决原始问题

如果要去学习和理解 DP 问题就必须打破原有的思维习惯,去理解机器思维,因为机器只能执行 if, while, for,条件,循环,递归等等。也必须要去锻炼拆分复杂问题的能力。


2022-12-09 dp , dynamic-programming , algorithm , computer-science

我们的尊严来自于自由

「自由」这一个词是一个非常抽象的词汇,最近这个词出现的频率越来越多,新闻自由,言论自由,信仰自由,政治自由,人们走向街头不断地呼喊自己所理解的「自由」。我们只有更好的理解我们所说的「自由」才能更有自信地去争取自由。

用英文去表达自由有两个词,freedom 和 liberty。

  • liberty
    • 在牛津词典中的解释是
      • freedom to live as you choose without too many restrictions from government or authority
      • the legal right and freedom to to something
    • 在 Longman 字典中的解释是
      • the freedom and the right to do whatever you want without asking permission or being afraid of authority
      • legal right
    • 在 American Heritage English 词典中:
      • Freedom from unjust or undue governmental control
  • freedom,再来看看字典上对 freedom 的解释
    • 牛津词典:
      • the right to do or say what you want without anyone stopping you
      • the state of being able to do what you want, without anything stopping you
      • 与之相对的就是 prisoner 或 slave
    • Longman 词典:
      • the right to do what you want without being controlled or restricted by anyone
    • American Heritage English 词典中进一步补充到:
      • Exemption from an unpleasant or onerous condition,免于不愉快,麻烦的状况
      • the capacity to exercise choice; free will,选择的能力

从这个英英的解释中我能够提取出来几个关键字,without restrictions from authoritythe capacity to exercise choice,自由意味着免于「任何人」,「任何组织」,「任何政府」的控制,自由的人可以根据自己的意愿选择做什么,说什么。在牛津字典中给出了两个自由的反例,恰好也回答了我们为什么要争取自由,不自由的两个例子就是 prisoner 或 slave。

但上面的解释都是字面的含义,真正的自由当然不是想做什么就做什么。

什么是自由

  • [[黑格尔]] 说,为了纯粹的明誉甘愿冒死决斗,才是人之为人的东西,这是自由的基础。
  • [[密尔]] 说,公民自由是社会所能合法施用于个人的权力的性质和限度。自由是对于政治统治者暴虐的防御。
    • 密尔在[[论自由]]一书中讨论的不是自由意志,而是「公民自由和社会自由」,即社会可以合法地施加于个人的权利之性质和界限。
  • [[卢梭]] 在 [[社会契约论]] 中说,只有服从了社会为自己所设之规定,谓之法律的,才叫做自由。
  • [[波普尔]] 在 [[通过知识获得解放]] 说,自由不单是观念形态,而是使生活更美好、更值得度过的一种生活方式。
  • [[康德]] 说,自由不是想干什么就干什么,而是想不干什么就不干什么。
    • 自律即自由
  • [[勒尼德·汉德]] 说,自由就是对「何为正确」不那么确定的精神。
  • [[罗斯福]] 总统提出过「四大自由」,[[言论自由]],信仰自由,免于匮乏的自由,免于恐惧的自由。
    • 每一个人对自己生命和公权力之前的关系,有稳定的、正当的预期。
  • [[赛亚 伯林 伯林]] 说,「自由的根本意义是摆脱枷锁、摆脱囚禁、摆脱他人奴役的自由。」
  • [[哈耶克]] 说,「愿意放弃自由来换取保障的人,他最终既得不到自由,也得不到保障。」
  • [[赛亚 伯林]] 更进一步将自由分成 [[消极自由]] 和 [[积极自由]],对应着英文的「free from」和 「free to」。消极自由指的是免于「干涉」的自由,我不想做什么就可以不做什么;而积极自由指的是我想做什么就可以做什么,实现目标的自由,成为自己的的主人。

言论自由、思想自由、出版自由

密尔在《论自由》中沿袭了密尔顿、洛克等英国自由主义传统,广泛的出版自由。密尔将人类获得真理视为绝对的善,因为获得真理可以使人进步,思想言论自由的价值并不在于它是个人的权利,而在于它能够有助于人类获得真理。

每个时代都曾持有很多被后代认为不仅错误而且荒谬的看法,可以确定的是,现在流行的很多看法将会被未来的时代所抛弃。只有经过讨论,错误的意见和行为才会逐渐屈服于事实和论证,这更一步地反证了只有思想自由才能促进社会进步。

即使我们认为我们已经掌握了真理,也要坚持言论自由,如果禁止对真理的挑战,真理就会僵化,变成死板的教条,最后丧失为自己辩护的能力。真理只有在谬误公开的冲突中得到考验,才能使真理充满活力,使大众对真理的认识更加全面、深刻。

[[霍姆斯大法官]] 为言论自由辩护,人们所希望的最终的善,最好通过思想的自由交流实现,对真理的最佳检验,在于思想在市场竞争中获得的力量。

霍姆斯认为政府没有必要,也没有能力,干预不同思想的之间的自由竞争,因为政府或者任何人都无法实现对真理的垄断。

霍姆斯甚至认为美国制度就是一场自由探索的实验,一种制度并不一直提供一劳永逸的乌托邦的思想,但可以为制度之下的人们走向真善美提供自由的机会。也只有不断的自由交流和公共讨论的过程中,这种制度才会修正错误,赢得稳定和活力。

真理自由观的问题在于,通过思想市场的自由探索是不是一定能够获得真理,或者实现真理战胜谬误。

言论在某种意义上是更好被操纵的,[[罗尔斯]]在政治自由主义中看到的那样,不能指望具有理性力量的人们,即使在自由讨论之后都达到同样的结论。

那这样真理自由的意义何在,我想最大的意义并非是能够找到某种确定的答案,而在于思想竞争和自由交流的过程本身,它们使得一个社会成为了开放的社会,使得一个人成为了开放的人,无论开放的社会有多少的问题,生活在开放的社会,总比生活在封闭的社会,对人的发展而言总要更加值得。

政治自由

政治自由,通常指的是公民有权利参与到公共事务,包括选举和被选举,对权力发表不同的意见,广义的政治自由还包括上面提及的出版自由,集会自由,结社自由,游行示威自由,无罪推论。1

自由的原则成为了民主的重要途径,公共事务必须交给公众决定,这并不是因为公众的意见本身是对的,或者有见地的,而是因为公众的意见不可忽视。

民主的决策很多时候无关专业科学的判断,而只关乎利益,立场的决择,所以让每个人都发出声音,这在进行民主决策时非常重要,这样依赖, 自由本身就蕴含着平等,甚至深化了民主的平等。

自由不仅意味着随心所欲,而且意味着公共责任,民主的自由观,之所以相信自由在民主生活中的价值,还有更深刻的理由,人的天赋,条件,能力,千差万别,只有通过自由的言说,自由的实践,才能为人的才能的发挥提供最大化的机会,才能使人们更理性,更明智,更有判断力,从而减少被统治者欺骗的可能。正确的看待政府与人民的关系,并且把人们从非理性的恐惧中解脱出来,人们曾经因为害怕巫婆就烧死女人,人民曾经因为激情盲目而选择了纳粹,正如美国 [[布兰代斯大法官]] 所言,对自由的最大威胁,在于人的惰性,不鼓励思想、希望和想象是危险的,恐惧会产生镇压,镇压会产生仇恨,仇恨会威胁政府的稳定,言论自由是有风险,但是压制言论自由的风险更大。

自由对理性责任精神的强调则蕴含着民主的有限政府理念。自由的重要性不仅在于不受政府和他人的干预,更在于通过积极的行动来推进公共政策,实现利益的妥协和社会的正义。

西方社会已经认识到,词语比刀剑更有影响力。完美的社会是不可能的,但是一些秩序要胜过一些秩序。立法的任务是允许每个个人的最大自由和其他人的最大自由并存。自由必须受到法律的限制。秩序是自由的必要平衡。

当社会本身就是暴君时,当社会集体凌驾于组成它的个体之上时,暴政的实施就不限于借助政治机构之手而行的各种措施。社会如果执行了错误而非正确的命令,或者对它根本不应干涉的事务发号施令,那么它便实行了一种比其他各种政治迫害更为可怕的社会暴政,不以严厉的惩罚为支撑,但却由于更深入地渗透到人们生活的细节,束缚了人的身心,从而使人们更加无法逃脱。

为什么要争取自由

从伯林对自由的分类正好可以总结出两点:

  • 免于被奴役,被控制
  • 追求自己的理想和目标

上至苏格拉底,到集大成者的康德,都强调自由代表了人的尊严和美德。人必须过一种神圣的、善的生活,没有这种内外统一的实践,人就不能称其为人,自由意志合乎道德的意志,「人是目的,而非手段」,人要理性自律,不能屈从他律。

reference

  • [[论自由]]
  • [[言论的边界 美国宪法第一修正案简史]]

2022-11-30 freedom , free , pree-freedom , political-liberty , liberty , freedom-of-speech , free-speech

在日本生活必备的应用收集整理

在上一篇梳理了一下如何 注册日区的 Apple ID ,其实主要是为了这一篇整理做准备,有很多的应用,如果不是日区就安装不了,并且如果要在日本生活有一些应用还是非常重要的,所以就提前梳理一下需要用到的应用。

免责声明,因为本人此刻并没有在日本长期生活过,下面的所有内容都是我个人在搜集资料的过程中,或因本人需要,或因为其他人推荐,才收集整理得出,可能会有一些偏差,如果有读者发现任何问题,可以随时留言告诉我,我会立即修正。 另外如果有朋友长期居住在日本,平时有用到一些不错的本土应用也欢迎留言告诉我,待我尝试之后我也会补充到文章中。 希望本文可以给想要去日本旅游,或者想要去日本常居的朋友一些帮助。

租房

  • SUUMO,日本最大的租房网站

交通

要加深对日本的印象就首先从地理位置上开始认识,而城市规划,尤其是公共交通的设计,在没有用乗換案内之前我都只能在网页版的 Google Maps 上一点点得搜站点的名字,然后查看其相对的位置。

我在出门旅行也好生活也好,通常都会提前看一个这个城市的轮廓,以及集中重点的景点的位置,在 Google Maps 上用 Star 标记一下,有时间了还会用 My Maps 规划一个最优的路线,以免在陌生的地方来回重复的走回头路。

  • 「Yahoo!乗換案内」,日本的电车非常发达,下载了一张东京都的地铁线路图得放大好几倍才能找到我想要查的站点,乘换案内解决了电车换乘的问题,当然用 Google Maps 也可以,但这个应用在换乘,列车到站时间等方面给的信息更多
    • 千万要注意,这个应用的图表是下图所示,中国区和美国区都有一些假冒的应用
    • yahoo transit
    • 在日区乘换案内名字的应用还挺多的,还有一个推荐较多的是一个红色 Logo 的,Jorudan Co. Ltd 出品的,我两个都下载试用了之后,还是果断推荐 Yahoo 的这个,界面设计好,并且 Yahoo 的还能提供地图线路,路线可以按照时间优先,换乘次数,以及金额排序
    • 还有一个叫做「乗換 NAVITIME」的应用,Logo 是一辆绿色的电车,使用起来体验也不错
  • Suica,电车票
  • DIDI,出行打车

翻译

  • VoiceTra,日本的情报通信研究机构开发的一款翻译应用,我之后也写了一篇文章介绍,最主要是的符合日本的国情,翻译的日语内容比较符合日本人使用习惯。我去区役所的时候工作人员也是用的这一款应用。
  • Google Translate,这就不用多说了,之前就常用
  • Papago,去韩国的时候偶然间发现的一款翻译应用,多年用来感觉比 Google Translate 还顺手,主要是界面比较简洁,并且 Papago 不仅有语音翻译,我还常用的一个功能就是拍照翻译,个人感觉比 Google 的要快一些
  • Felo 实时翻译,这是一个非常简洁的应用,设置好语言之后,只有一个按钮,就是开启实时翻译,如果设置中文和日语,在界面上马上就能识别出当前说话的内容。

Ufd3

美食

外卖

  • Uber Eats,点外卖
  • HAYA,订外卖,注册送 3000 元券,3 KM 内免费配送,支持支付宝,微信,信用卡

美食排行

  • 食べログ,美食点评,一款类似于大众点评的应用,听朋友说这上面的打分超过 3.2 的就可以尝试一下了,日本人打分可能比较严格吧。
  • ホットペッパーグルメ,Hot Pepper,可以在上面发现新餐厅,预约餐厅
  • ぐるなび,也是一款发现餐厅的应用,但是相较于上面两个信息没有那么全面

UXwL

其他

  • クックパッド,学习做菜,以及学习食材的日语
  • クラシル
搜索 {予約 よやく}{可 か} 可以筛选可以预约的餐厅。

日常生活

  • Yahoo!防災速報,第一时间通知这种自然灾害,或人为犯罪危害
    • NHK ニュース 防災 (ぼうさい) ,灾情相关通知以及新闻直播,可以用来学习日语
  • マルチコピー,打印,将文件上传到应用内,到便利店打印即可
  • SpaceMarket,租借场地,空间租赁,过生日,聚会,吃火锅比较合适
  • 楽天チケット Web 演唱会、音乐会购票
  • イープラス,演唱会门票
  • チケジャム, Web ,二手门票
  • SHEIN,衣服
  • アインズトルペ,AINZ TULPE,药妆店

理发

  • ホットペッパー ビューティー(Hotpepper Beauty),美容美发美甲等等预约,男生也可以在这上面预约理发
  • ミニモ,minimo,一个可以获得免费理发机会的应用,理发师见习,练手,所以有一定的机会可以获得免费的理发,当然你不建议被理坏的话。

    旅行

  • じゃらん 官网 日本本土最大的旅游预订网站,汇集了日本各地景点,可以用来订酒店,订机票。因为 Jalan 会和众多的民宿、酒店合作,在上面搜索说不定能找到价廉物美的温泉酒店。
    • 週刊じゃらん,一个注重周末旅行的应用,可以在上面预约啤酒厂见习,温泉旅行等等周末活动。
  • アソビュー,アソビュー是一款由日本 NTT DOCOMO 开发的应用,旨在为用户提供各种娱乐活动的信息和预订服务。该应用提供了包括餐厅、旅游、演出、运动等在内的各种娱乐活动的信息和预订服务,并且可以根据用户的兴趣和位置推荐相应的活动。用户可以通过该应用轻松地查找并预订各种娱乐活动,享受丰富多彩的生活。
  • YAMAP,一个为登山爱好者定制的地图,可以查看登山路线
  • アソビュー! ,一个集合了游乐园,水族馆,博物馆,展望台,美术馆的应用,可以在里面预约,买票等等

    网购

  • Amazon JP
  • メルカリ,日本的二手物品交易市场,虽然日本的线下二手店市场已经非常发达,但是在线的市场还是得用它。
    • 同类型的还有:
    • ヤフオク,Yahoo 旗下的二手拍卖网站 Web
    • ラクマ,乐天旗下 Web
  • 楽天市場, Web
  • [[PayPay]],移动支付,使用之前需要注册账户,绑定银行或电子钱包。

其他

  • Lemon8,日本的小红书
  • iMuseum,不知道看什么展,可以在这个 App 上查看
  • チラシミュージアム,展览的海报,培养自己的美感
  • LUUP,一个电动滑板车的租赁应用,类似于国内的共享电动车。
  • くらしのマーケット,预约维修,除虫,除草等等

2022-11-28 japan , applications , daily-life , japanese , japan-life

电子书

本站提供服务

最近文章

  • Dinox 又一款 AI 语音实时转录工具 前两天介绍过 [[Voicenotes]],也是一款 AI 转录文字的笔记软件,之前在调查 Voicenotes 的时候就留意到了 Dinox,因为是在小红书留意到的,所以猜测应该是国内的某位独立开发者的作品,整个应用使用起来也比较舒服,但相较于 Voicenotes,Dinox 更偏向于一个手机端的笔记软件,因为他整体的设计中没有将语音作为首选,用户也可以添加文字的笔记,反而在 Voicenotes 中,语音作为了所有笔记的首选,当然 Voicenotes 也可以自己编辑笔记,但是语音是它的核心。
  • 音流:一款支持 Navidrom 兼容 Subsonic 的跨平台音乐播放器 之前一篇文章介绍了Navidrome,搭建了一个自己在线音乐流媒体库,把我本地通过 [[Syncthing]] 同步的 80 G 音乐导入了。自己也尝试了 Navidrome 官网列出的 Subsonic 兼容客户端 [[substreamer]],以及 macOS 上面的 [[Sonixd]],体验都还不错。但是在了解的过程中又发现了一款中文名叫做「音流」(英文 Stream Music)的应用,初步体验了一下感觉还不错,所以分享出来。
  • 泰国 DTV 数字游民签证 泰国一直是 [[Digital Nomad]] 数字游民青睐的选择地,尤其是清迈以其优美的自然环境、低廉的生活成本和友好的社区氛围而闻名。许多数字游民选择在泰国清迈定居,可以在清迈租用廉价的公寓或民宿,享受美食和文化,并与其他数字游民分享经验和资源。
  • VoceChat 一款可以自托管的在线聊天室 VoceChat 是一款使用 Rust(后端),React(前端),Flutter(移动端)开发的,开源,支持独立部署的在线聊天服务。VoceChat 非常轻量,后端服务只有 15MB 的大小,打包的 Docker 镜像文件也只有 61 MB,VoceChat 可部署在任何的服务器上。
  • 结合了 Google 和 AI 的对话搜索引擎:Perplexity AI 在日本,因为 SoftBank 和 Perplexity AI 开展了合作 ,所以最近大量的使用 Perplexity ,这一篇文章就总结一下 Perplexity 的优势和使用技巧。