详情

全站展示位

Make a TODO robot with Github Actions方寸之间

What's Github Actions Github Actions is a CI(continuous integration) and CD(continuous deployment) service that help you automate your software dev...。。。

推荐

分类目录归档:ENglISh |

技術文章及人生思考

心灵鸡汤

  苏东坡是我国北宋时期的一位著名诗人。他在担任徐州知府时,以为官清廉、刚正不阿、不畏权势,执法严明著称,受到徐州百姓的称道和传颂。至今徐州城乡还流传着他不少的佳话。

  苏东坡五十岁的时候,家人要为其祝寿,苏东坡一再制止,并嘱咐家人不准宣扬。谁料,寿辰这一天,来了一个送礼人,双手抱着一盆盛开的月季花,家人便问:“请问尊姓大名,有何事”来者说:“我叫赵钱孙李,来祝寿的。”家人听罢,奇怪地笑道:“那有这样的名字呢”来者说:“我本姓赵,右邻姓钱,左邻姓孙,对门姓李,知府大人今年五十大寿,大家推荐我送一盆月月红,给知府大人做寿礼。”家人听后,知是百姓心意,本想收下,但大人从不收礼,只好叫来者说出理由,那人思忖片刻,道出:“花开花落无间断,春去春来不相关。但愿大人常康健,勤为百姓除赃官。”家人把诗写在纸上,叫仆人把诗送给苏东坡看,让他来处理此事。不一会苏东坡出来,亲自收下那盆月季花,笑着咏诗道:“赵钱孙李张王陈,好花一盆黎民情。一日三餐抚心问,丹心要学月月红。”

  后苏东坡虽赋闲回家,但他一生清正廉明、惩贪除恶的好名声却在民间永远流传。

列表展示

主站展示位

Arch Linux 如何切换内核方寸之间

Notice切换内核不是一件容易的事。我建议你有一个实际的理由这样做,而不仅仅是实验/为了好玩。虽然这本身并不是一个困难的过程。因为 linux 发行版通常设置为与特定内核配合使用。虽然有些不像其他发行版那样与内核紧密相连,但许多发行版维护者选择特…

Arch Linux 升级系统提示签名无效方寸之间

今天升级系统的时候,竟然升级失败了,提示:error: PackageName: signature from

PGP工作原理方寸之间

前言最近在浏览博客的时候发现博主的PGP Key页面,虽然之前知道是用于邮件通信加密的,但是具体原理及使用却不太清楚,所以找了时间查阅了相关资料,整理一下PGP加密的一些内容。定义Pretty Good Privacy(PGP)是一个加密程序,为数据通信提…

C++中的智能指针是什么方寸之间

引言C++是一种广泛使用的编程语言,它允许程序员使用动态分配的内存。然而,手动管理内存可能会导致一些严重的问题,如内存泄漏和悬空指针。为了解决这些问题,C++引入了智能指针的概念。智能指针是一种特殊的指针类型,它可以自动管理内存并确保在不需…

How to prettify git log output方寸之间

4 formats git log --color --date=format:'%Y-%m-%d %H:%M:%S' --pretty=format:'%C(cyan)%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cd) %C(bold blue)<%an>%Creset' --abbrev-commit git log --color --date=format:'%Y-%m-%d %H:%M:%S' --pretty=format:'%C(cyan)%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit git log --color --stat --date=format:'%Y-%m-%d %H:%M:%S' --pretty=format:'%C(cyan)%h%Creset -%C(yellow)%d%Cblue %s %Cgreen(%cd) %C(bold blue)<%an>%Creset' --abbrev-commit git log --graph --date=format:'%Y-%m-%d %H:%M:%S' --pretty=format:'%C(cyan)%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cd) %C(bold blue)<%an>%Creset' --abbrev-commit Config with alias For example: use 4th format. git config --global alias.logs

CRLF与LF的差异方寸之间

大多数人应该对这两个并不陌生,但是你有深入了解过这两个概念吗?今天我们通过这篇来深入探讨一下,希望你读完这篇文章之后不会再感到困扰。 CRLF 与 LF:换行到底是什么? 要真正理解 CRLF 与 LF 换行的问题,我们需要复习一些排版历史。 人们使用字母、数字和符号来相互交流。但是计算机只能理解和处理数字。由于计算机上的文件由人类可读的字符串组成,因此我们需要一个允许我们在这两种格式之间来回转换的系统。 ASCII 标准就是这样的系统——它将 A 和 z 等字符映射到数字,弥合了人类语言和计算机语言之间的鸿沟。 有趣的是,ASCII 标准不仅仅适用于字母和数字等可见字符。某个子集是控制字符,也称为非打印字符。它们不用于渲染可见字符;相反,它们用于执行独特的操作,例如删除前一个字符或插入换行符。 LF 和 CR 就是两个这样的控制字符,它们都与文件中的行尾有关。它们的历史可以追溯到打字机时代,因此我将简要介绍其工作原理,以便了解为什么我们有两个不同的控制字符而不是一个。然后,我们将看看这如何影响开发人员的体验。 LF:换行 LF(Line Feed)代表“换行”,但你可能更熟悉术语换行符(转义序列 \n)。简单地说,这个字符代表一行文本的结束。在 Linux 和 Mac 上,这相当于新文本行的开始。这种区别很重要,因为 Windows 不遵循此约定。我们了解回车之后再讨论为什么不同。 CR:回车 CR(Carriage Return)代表回车(转义序列\r),将光标移动到当前行的开头。终端上的下载进度条就是通过CR实现的,通过使用回车符,你的终端可以通过将光标返回到当前行的开头并覆盖任何先前呈现的文本来将文本动画化。 打字机和回车(CR) 将一张纸固定在称为托架的机械卷上,为设备送入一张纸。每次击键时,打字机都会使用墨水在您的纸张上打印字母,将笔架向左移动以确保键入的下一个字母会出现在前一个字母的右侧。 当然,一旦当前行的空间用完,打字员就需要向下移动到纸张上的下一行。这是通过旋转滑架将纸张相对于打字机的“笔”向上移动一定距离来完成的。但是还需要重置托架(carriage),以便键入的下一个字符将与纸张的左侧边距对齐。换句话说,打字员需要某种方式将托架返回到其起始位置。而这正是回车的工作:一个金属杆连接到托架的左侧,当推动时,将托架返回到其起始位置。 电传打字机和回车换行(CRLF) 进入 20 世纪初,出现了电传打字机。基本上,它的工作方式与手动打字机相同,除了不是打印到物理纸上,而是通过传输器通过物理电线或无线电波将消息发送给接收方。 虽然打印方式不同,但是同样需要使用换行符 (LF) 和回车符 (CR),而且这些设备需要同时使用换行符 (LF) 和回车符 (CR) 以允许打字员从下一行文本的开头输入。毕竟手动打字机就是这样工作的,只是它没有任何“字符”的概念,因为它是一种机械操作的设备。 我们可以将 LF 和 CR 视为代表水平或垂直方向上的独立运动,而不是同时代表两者,这样更容易将其形象化。为了实现这个功能,电传打字机在一些最早的操作系统中设定了 CRLF 行尾的标准,比如流行的 MS-DOS。将CR 代表“回车”——CR 控制字符将打印头(“回车”)返回到第 0 列,而无需推进纸张。 LF 代表“换行”——LF 控制字符在不移动打印头的情况下将纸张前进一行。因此,如果您想将打印头返回到第 0 列(准备打印下一行)并推进纸张(以便在新纸上打印),则需要 CR 和 LF。 MS-DOS 使用 CRLF 的两个字符组合来表示文件中的行尾,现代 Windows 计算机一直使用 CRLF 作为行尾。同时,从一开始,Unix 就使用 LF 来表示行尾,为了一致性和简单性而放弃了 CRLF。 Apple 最初仅在 Mac Classic 上使用 CR,但最终在 OS X 上改用了 LF,与 Unix 一致。 虽然这似乎是操作系统之间的差异,但 CRLF 与 LF 的这个问题已经引起人们很长时间的头痛。其实按照今天的标准 CRLF 是多余的——同时使用回车和换行是假设你受到打字机的物理限制,你必须明确地向上移动你的纸,然后重置移动到左边距。但是对于电子文件,将换行符定义为隐式完成换行和回车的工作就足够了。换句话说,只要操作系统定义换行符表示下一行从开头开始而不是从某个任意的列偏移处开始,那么除了换行之外,我们不需要显式回车——一个符号可以完成两者的工作。 现在我们知道CRLF和CR是如何起源的,接下来我们来学习以下怎么处理相关的问题。 检查和转换行尾(在 Bash 中) 在 bash中,你可以使用带有 A 标志的 cat 查看特定文件的行尾: 如果文件使用 CRLF,您将在每行末尾看到字符串 ^M$,其中 ^M 表示回车,$ 表示换行。下面是一个示例: line one^M$ line two^M$ line three^M$ 如果文件使用 LF,那么您只会看到美元符号: line one$ line two$ line three$ ps: 你可以使用dos2unix命令行程序将文件从CRLF转换为LF。 Git中的行尾 诚然,这需要很多背景知识!但这是值得的,因为我们终于准备好讨论与 git 相关的行尾(以及如何在任何给定的代码库中解决 CRLF 与 LF 的问题)。 我们从前面可以知道CRLF和LF是不同的字符表示,因此缺少通用行结尾为 git 等版本控制软件带来了麻烦,这类软件依赖于非常精确的字符比较来确定文件自上次签入以来是否发生了变化。如果开发人员使用 Windows 并且另一个使用 Mac...

Build site with Franklin.jl方寸之间

Forward Franklin.jl is a simple, customisable static site generator oriented towards technical blogging and light, fast-loading pages. At first, I want to learning Julia with a small open source project, smaller and better. Then I search on github with topic#julia, and I find this tool. As I learned about it on its site, I think I can use this for my massively personal site(maybe it is beautiful, but too complex), and learning Julia when rebuilding my site. Therefore, I write this tutorial as my beginning. Last but not least, Franklin.jl has many features: Augmented markdown allowing definition of LaTeX-like commands, Easy inclusion of user-defined div-blocks, Maths rendered via KaTeX, code via highlight.js both can be pre-rendered, Can live-evaluate Julia code blocks, Live preview of modifications, Simple optimisation step to compress and pre-render the website, Simple publication step to deploy the website, Straightforward integration with Literate.jl. Setup Environment...

Git中的一个特殊hash方寸之间

最近了解了一点Git的内部原理,看到了一个特殊的hash,所以写了这一篇文章来分享自己的看法。 ============== 既然你读这篇文章,那就意味着你应该比较熟悉Git的一系列操作,不过,在你使用 Git 的时候,你有没有遇到以下hash: 4b825dc642cb6eb9a060e54bf8d69288fbee4904 可能你会觉得git中的每个对象都有一个hash值,谁会注意hash的数值。确实,没有人会注意。 但是上面的这个hash确实是一个很特别的hash,接下来就来说明为什么这个hash是一个特殊的存在。 git中hash从哪里来? 每个 git 存储库,即使是空存储库也将包含这段hash。这可以通过 git show 验证: $ git show 4b825dc642cb6eb9a060e54bf8d69288fbee4904 tree 4b825dc642cb6eb9a060e54bf8d69288fbee4904 那么这个hash是从哪里来的呢?在这之前我们需要了解一点Git的知识:Git 的核心部分是一个简单的键值对数据库(key-value data store)。 你可以向 Git 仓库中插入任意类型的内容,它会返回一个唯一的键,通过该键可以在任意时刻再次取回该内容。 我们可以使用git hash-object命令来存储一个对象并获取该对象的键。 $ echo 'test' | git hash-object -w --stdin 9daeafb9864cf43055ae93beb0afd6c7d144bfa4 Git 内部存储的数据类似下面这样,其中每个对象都有其对应的hash值: ps:如果你仍然好奇,Pro Git 的 Git Internals 章节有更多详细介绍。 那么接下来说正题,这个特殊hash是如何产生的呢?它实际上是一棵空树的哈希值。可以通过为空字符串的/dev/null创建对象哈希来验证: $ git hash-object -t tree /dev/null 4b825dc642cb6eb9a060e54bf8d69288fbee4904 //或者 $ echo -n '' | git hash-object -t tree --stdin 4b825dc642cb6eb9a060e54bf8d69288fbee4904 空树hash的特殊用处 空树hash可以与git diff一起使用。例如,如果你想检查目录中的空白错误,您可以使用 --check 选项并将 HEAD 与空树进行比较: $ echo

Solution for _CRT_SECURE_NO_WARNINGS方寸之间

platform: VS2019os: win10 Problem:An error about _CRT_SECURE_NO_WARNINGS when I use the std::localtime() function for getting the current systime. Solution: Use an alternative feature function in C++. add this line at the first line. #define _CRT_SECURE_NO_WARNINGS add _CRT_SECURE_NO_WARNINGS on the pre-processor(project>properties>C/C++>preprocessor)

友情链接方寸之间

欢迎交流联系,互换友链!

Auto emailing TODO list with Github Actions方寸之间

What's Github Actions Github Actions is a CI(continuous integration) and CD(continuous deployment) service that help you automate your software development workflows in the same place you store code and collaborate on pull requests and issues. It was launched in October 2018 and was officially available to all users in November 2019. With Github Actions you can write individual tasks, called actions, and combine them to create a custom workflow. Workflows are custom automated processes that you can set up in your repository to build, test, package, release, or deploy any code project on GitHub. You can create workflows using actions defined in your repository, open source actions in a public repository on GitHub, or a published Docker container image. But workflows in forked repositories don't run by default. If you don't want to create your actions by yourself, you can discover actions in the GitHub Marketplace, also...

Linux挂起和休眠的区别方寸之间

linux的挂起和休眠之间的区别到底是什么? Linux有三种挂起方式:挂起至RAM(通常称为suspend),挂起至磁盘(通常称为hibernate)和混合挂起(hybrid suspend) 挂起至RAM(Suspend,译为睡眠) 该模式通过将系统状态保存在RAM 中使计算机进入睡眠状态。在这种状态下,计算机进入低功耗模式,但是系统仍然需要电源才能将数据保留在RAM中。 需要明确的是,挂起不会关闭计算机。 挂起至磁盘(Hibernate,译为休眠) 该模式将内存的当前内容移入[SWAP]空间。在这种状态下,计算机不需要电源。当你启动计算机时,所有内容都会复制回RAM,然后从上次中断的地方继续。 需要明确的是,计算机已完全关闭了Hibernate的电源。 混合挂起(Hybrid Suspend) 该模式结合了以上两种模式的特点,将计算机的状态保存到交换空间中,但不关闭计算机电源,而是是调用suspend模式。因此,如果电池没有耗尽,则系统可以从RAM恢复。如果电池电量耗尽,则可以从磁盘恢复系统,这比从RAM恢复速度要慢得多,但是计算机的状态并未丢失。 对于ArchLinux,默认的管理接口是systemd,如果你没有安装其他的电源管理软件的话,你需要手动设置才可以正常使用休眠功能。当然,前提是你有设置SWAP分区。

深入理解数据库事务方寸之间

定义 事务(Transaction)在计算机术语中是数据库管理系统执行过程中的一个由一个有限的数据库操作序列构成的逻辑单位。 在数据库中以一致模式完成的任何逻辑计算都称为事务。 性质 数据库事务通常包含了一个序列的对数据库的读/写操作。包含有以下两个目的: 提供可靠的工作单元,可以从故障中正确恢复并保持数据库一致,即使在系统故障的情况下(执行停止(完全或部分)并且对数据库的许多操作仍未完成且状态不明时)。 提供并发访问数据库的程序之间的隔离,以防止彼此的操作互相干扰。如果没有提供这种隔离,程序的结果可能是错误的。 当事务被提交给了数据库管理系统(DBMS),则DBMS需要确保该事务中的所有操作都成功完成且其结果被永久保存在数据库中,如果事务中有的操作没有成功完成,则事务中的所有操作都需要回滚,回到事务执行前的状态;同时,该事务对数据库或者其他事务的执行无影响,所有的事务都好像在独立的运行。  ACID特性 根据定义,数据库事务必须是原子的(它必须是完整的或没有任何影响)、一致的(它必须符合数据库中现有的约束)、隔离的(它不能影响其他事务)和持久的(它必须写入持久存储)。数据库从业者经常使用首字母缩写词 ACID 来指代数据库事务的这些属性。 原子性(Atomicity):事务作为一个整体被执行,包含在其中的对数据库的操作要么全部被执行,要么都不执行。 一致性(Consistency):事务应确保数据库的状态从一个一致状态转变为另一个一致状态。一致状态的含义是数据库中的数据应满足完整性约束,即系统获得有效的新状态或保持在先前状态。 隔离性(Isolation):处理过程中事务与其他事务分开,一个事务的执行不应影响其他事务的执行。 持久性(Durability):已被提交的事务对数据库的修改应该永久保存在数据库中,即使在系统出现故障后系统仍保持有效状态。 示例 张三要在商店购买100元的东西,当中至少包括两个操作: 张三账户减少100元 商店账户增加100元 原子性: 数据库管理系统就要确保以上两个操作(整个“事务”)都能完成,或一起取消;否则就会出现100元平白消失或出现的情况。  一致性: 交易完成,张三账户减少100元,商店账户增加100元 交易失败,张三账户和商店账户不变 隔离性: 如果张三在支付的同时,李四也在支付(是50元),那么即使李四取消支付,只要张三支付成功,商店账户也会增加100元,即不会影响张三的支付。 持久性: 交易完成,二者账户变化生效(写入数据库) 参考

黑科技:使用GitHub搭建自己的短链接服务方寸之间

前两天偶然在GitHub发现一个挺有意思的项目,可以不依赖自己的服务器、数据库来构建一个短链接服务。自己尝试了一下,还挺简单的。这里记录一下自己的构建流程,感兴趣的小伙伴可以自己尝试一下。 Prerequisites 新建两个GitHub仓库,一个用来做服务器存储源码、提供服务(url_shortener),一个用来做数据库存储链接(url_shortener_db) 注册一个域名(可选),如果没有的话,可以直接使用GitHub pages的域名(username.github.io)。不过我是用了自己注册的域名:blog.johan.zone 获取及配置源码 首先,你需要获取这个服务的源代码,你可以直接fork这个源码仓库,当然也欢迎fork我的代码仓库。 然后,克隆自己的仓库到本地(当然,你也可以直接在GitHub网页上操作),修改404.html文件的GITHUB_ISSUES_LINK字段,指向自己的url_shortener_db仓库,这个仓库的issues就是作为存储你的链接的数据库: var GITHUB_ISSUES_LINK =

Linux挂起和休眠的区别方寸之间

linux的挂起和休眠之间的区别到底是什么? Linux有三种挂起方式:挂起至RAM(通常称为suspend)

Linux创建systemd服务方寸之间

创建自定义systemd Service 创建一个脚本或者使用可执行文件,本文以一个test.bash脚本为例

iwd命令浅析方寸之间

介绍 iNet Wireless Daemon(iwd) 项目旨在为基于 Linux 的设备提供全面的Wi-F

博客寄语:

    There are two wolves who are always fighting. One is darkness and despair. The other is light and hope. The question is... which wolf wins?

实时播报:

博客号-学习成长

相信每一分耕耘都有每一分收获,致力帮助博客主所创作的博客能更快的被收录! 如果有其它需求,可联系下方邮箱。