Coding 的痕迹

一位互联网奔跑者的网上日记

0%

在被 rust-postgresql 折磨之后,选择了 diesel 库,这才了解到对象关系映射(Object Relational Mapping, ORM) ,可以像使用本地变量和函数一样操作关系型数据库。这有点像非关系型数据库(如MongoDB)操作方式的意味,不过不知道孰先孰后。

初步认识

diesel 提供了一个叫 diesel_cli 的工具,用来将 MySQL、PostgreSQL 或 Sqlite 上的数据表结构转换成代码,类似于 (schema.rs),或代为执行一些 SQL 语句:

1
2
3
4
5
6
7
8
9
10
// A simple schema.rs
table! {
verifications (id) {
id -> Int4,
uid -> Int4,
login_type -> Int4,
account -> Varchar,
credential -> Nullable<Varchar>,
}
}
阅读全文 »

本来标题是“惨痛的经历”,想想去掉了。 ——题记

(2021.2.16 更新:建议使用 sqlx 库,而不要直接使用 tokio-postgrespostgres

在项目中打算使用 PostgresSQL 做主力数据库,发现 Rust 下有个叫 postgres 的库,正好直接拿来用。 Rust 版本为 1.41,postgres 库版本 0.17。库官方给了 example,照着改了下,写了一小段业务代码做测试,然后一晚上就没了

阅读全文 »

树的遍历有一个应用,便是目录的枚举。本程序实现了一个类似 tree 命令的功能,便于日后编程时参考。

阅读全文 »

运输层概述

运输层位于应用层之下,它为应用程序的编写者提供了一套逻辑上“连接”的服务。对于开发者来说,他们只需要知晓一点点网络知识,(一般地)处理完程序逻辑之后便可将数据发送出去,然后等待对方的响应。运输层协议会自动处理连接中遇到的问题,并把无法处理的错误上报给调用者知晓。

网络层提供了主机之间的逻辑通信,而运输层为运行在不同主机上的进程之间提供了逻辑通信。

我个人觉得运输层协议的内容比往下的几层更复杂,这一层通常在操作系统内核中实现(书中用了端系统一词)。常见的运输层协议有TCPTransmission Control Protocol)和UDPUser Datagram Protocol)。

我们先谈谈IP和端口,然后讲讲UDP,最后再说TCP吧。

阅读全文 »

近段时间趁着寒假的功夫,打开了尘封了一段时间的《计算机网络:自顶向下方法(原书第七版)》( Computer Networking: A Top-Down Approach (Seventh Edition ))。在学习的时候,深感计算机网络相关的内容繁多而有趣。于是打算归纳整理书中所学相关知识,结合曾经的开发经验,写一系列计算机网络相关的文章,为日后考研复习使用,也与网上诸位分享,共同探讨这里面的问题。

阅读全文 »

不知道标题描述得是否准确。社团里布置好了两个海康威视的监控摄像头,但是没有录像相关的设备,想到了之前二百元在闲鱼上淘到的小主机,于是申请买了一块500G的硬盘。

这个闲鱼上买的小主机,买来的时候是打算做软路由的。性能较差,买来的时候预装的是 Windows XP,我用了不到十分钟,就点了关机,换成了 Debian。原先想用海康威视的 SDK 来写这个工具,毕竟能锻炼下自己C++能力,考虑到录像这玩意催的比较紧,就改用Python写了。

阅读全文 »

导语

因为 Ankiweb 的服务器实在太慢,另外有网友指出,Anki 可能是一个个人项目,指不定哪天就不见了。稳妥起见,打算趁着寒假的空闲自建一个 Anki 服务器(这样就能好好背单词了)。然而事实证明建这个 Server 的时间能做不少东西……在此记录遇到的坑,想到的一些解决方案,作为纪念,也供将来折腾的人参考。

由于网上自建服务器的教程很多,重复之处不再赘述。我的目的是补充现有教程很多过时(out of date)的地方。考虑到一部分自建 Anki 的同学在技术操作上存在困难,先说结论:

阅读全文 »

这真是一次让我觉得着了魔的经历。
为了得到安全教育考试的题库,事先爬取了几十次模拟考试的网页源代码存着。耽搁了几天,才翻出来打算整理一下。整理的代码中有这么一段:

1
2
3
4
5
# extract_questions.py
for html_file in glob.glob('*.html'):
fp = open(html_file, encoding = 'UTF-8')
page = BeautifulSoup(fp.read(), 'html5lib')
fp.close()

由于程序正常执行时后续解析的代码有些错误,便在开头的for循环处下断点调试。发现每次在 BeautifulSoup 那一行时会抛出 ExitException 异常。在“表达式”窗口查看 fp.read() 返回了正常的网页内容。但是再向下执行一行时 fp.read() 的值为 ‘’。
后来在Python交互式解释器中进行验证,没有出现这样的问题。
(调试一度陷入僵局)

后来才注意到,Visual Code 中,在初次“表达式”窗口查看 fp.read() 返回了正常的网页内容。但是再向下执行一行时 fp.read() 的值为 ''。查看 fp.read() 的值会使文件指针指向文件尾…调试工具真的执行了一次 read()
em…

在学习二维数组的动态分配,写出了以下代码,怎么捣鼓也不对,总算想通了。写于此,分享一下。答案在后面,白底白字(已修改)。在不上机调试的情况下,能找出来吗?

阅读全文 »