Shawn's Blog

究竟什么是加密

0X00 什么不是加密 首先要先明确一个问题:我们日常使用非常多的 md5、SHA-1、SHA-256 这些 通通都不是加密 ,这些叫做摘要算法 。一串明文经过加密算法加密之后,是可以再次解密成明文的,但是摘要算法就不行了。 拿最常见的摘要算法 md5 举例:针对任何一个合法输入,md5 都会给出一个固定长度为 128 bit(32 byte)的输出,例如 md5("hello, world") -> e4d7f1b4ed2e42d15898f4b27b019da4。准确来说你是不能通过后面这串摘要值来反推之前的原文是什么的。因为严格来说这一串摘要值可以对应无限个不同的原文。那么摘要算法一般是拿来做什么用的呢?比较常见的是用来校验数据一致性,比如鸡太美同学编写了一个程序放到网上给大家下载使用,但是我们都知道文件传输过程中理论上可能会出错,所以他在上传之前就计算了程序的 md5 并且在传到服务器上之后再次计算…

Python 标准库之 collections

0X00 Header 相信各位肯定都对 Python 中的基础、常见数据类型和数据结构比较熟悉了吧,不管是 int、float、string、bool 还是 list、tuple、set 用起来应该也都是手到擒来了吧。下面我们就来简单了解一下相对高级一些的 Python 内置数据结构,这些数据结构全都在 collections 的标准库中。 掌握这些数据结构虽然并不能让你「精通 Python」,但起码可以让你的代码更加 Pythonic,也能让你少写几行冗余的代码。 0X01 ChainMap 首先是 ChainMap,光是看名字大概都能猜到这东西的用途了:把 Map 组装为 Chain 嘛。在 Python 中最常见的也就是字典了,所以这个数据结构的主要功能就是将多个字典加在一起。 如果你手上有 100 个字典,现在你需要将他们加在一起,在没有 ChainMap 的时候大概率会写出这样的代码:先整一个 result 作为最终结果的容器,然后遍历这 100 个字典,一遍遍 update 现在有了 ChainMap 之后可以写成这样:将所有的 dict 都作为 ChainMap…

2023 年度总结

片头胡诌 要说 2023 年跟前几年比起来有什么最大的变化,那应该就是防疫了吧。连续了三年的疫情或者说防疫,终于在 2023 年到来的时候结束了。本以为到了新的一年能报复性娱乐 一把,但是低头看了看兜里的钱,抬头看了看当前的经济形势,一怒之下就...在床上翻了个身 😮‍💨 不过话虽这么说,毕竟防控还是没有了,今年出行便利程度直接拉满(其实只是回到了应该有的样子而已)。不然按照之前的操作,根本不敢想今年这几次出行得有多费劲。 去年定下的「2023 年度计划」也在这篇博客完成之际到了 Deadline,怎么说呢,俩字形容基本就是「稀碎 」,具体的就打散了放在这个年度总结里说一说吧。离谱的是往前看了两年的总结,好像每年都挺稀碎的,所以这次 2024 年的计划我打算换个形式来设计,争取一年后再次总结的时候不这么稀碎。 那么圆规正转,直接就开始吧 🎉 生活变化 今年生活上的一些变化很多都涉及到了个人隐私,确实不太方便写出来,简单来说就是又有了一个里程碑式的前进吧。硬要选一个来说的话可能就是今年八月份回了一趟家,说起来已经五年没有感受过唐山的八月了,更是已经快要十年没有感受过北方的春天了。…

写给 git 新手的 6 个小技巧

0X00 header 首先,git 是没有 header 这个命令的:) 平时经常会用到一些 git 的用法,也有遇到过别人来问怎么实现某某操作,但是都太零散了并不成体系,所以这里就简单整理一下不做分类了。希望对不小心通过 Google 搜到该文章的你有所帮助(不会的有人能搜到吧🤣) 0X01 pull 与 pull --rebase 首先是搞清楚 git pull 和 git pull --rebase 的区别,我们学 git 第一天肯定就学了 git push 是推代码,git pull 是拉代码,那么这个 git pull --rebase 又是个什么东西呢? git pull 本质上是 git fetch 加上 git merge 的功能,也就是说把代码拉到本地来再和本地代码进行一次 merge。这就意味着,如果出现冲突的话 git 会创建一个 Merge commit 来解决这个问题。 git pull --rebase 则是 git fetch 和 git rebase 的组合。使用的时候会先将本地比远端多出来的 commit…

Shell 中的文本处理【简】

0X00 前言 在这里介绍 Shell 脚本编程和日常的命令行操作中最常用的 9 个命令,希望对读到这篇文章的你有所帮助~ 这是一篇基础得不能再基础的内容,如果你看完还能有两三个收获的话,那就一起来恶补 Linux 知识吧🤣 0X01 cat cat 命令应该是学习 Linux 命令时候最早接触到的命令之一了,自然不用多说什么,这里只提一个用法:如何 cat 命令创建一个文件。例如在脚本中我们需要创建一个配置文件,当然可以把配置文件跟脚本文件放一起,然后 cp 过去,但是如果你想用一个文件搞定的话(这样在看脚本的时候就知道配置文件是什么内容了,看着舒服改起来也方便)就可以这么操作 这段命令写在 shell 脚本中就意味着会把两个 EOF 中间行的内容作为文件 cat 一下,再接上后面的重定向,就把它写入到 xxx.conf 中了。不仅可以在脚本中,直接写在命令行中也是可以的。当然也可以不带重定向使用。 这里有一篇阮一峰的文章在相对详细的介绍什么是 EOF。 需要注意的是 EOF 只是我们约定俗成的 Enf Of File 的缩写,你非要用别的表示也是可以的(比如你的文本中包含…

关于 sudo 命令也许你需要知道的

0X00 介绍 不管对 sudo 的了解具体有多少,至少应该都用过 sudo 命令来临时将自己的非 root 用户提权至 root 了吧。不过 sudo 当然不只是将用户变成 root 的这么一个简单工具了,虽然它确实是将用户临时变更为 root ,但是页还是有不少其他更加细致的配置与选项。 sudo 是 Linux 中的一个命令,用于以管理员身份执行命令。它允许普通用户在不切换到 root 用户的情况下执行需要特权的操作,从而提高了系统的安全性和可管理性。sudo 可以通过配置文件进行自定义,以控制哪些用户可以以何种方式执行哪些命令。同时,sudo 还可以记录用户的操作日志,以便系统管理员进行审计和监控。 还有一个需要注意的就是,sudo 本质上是一个应用,并非最基础系统的一部分,它比 Unix 晚诞生了有近 10 年。这也就意味着并不是所有的 Linux 发行版本都会自带这个程序(比如 minimal 模式安装的 Ubuntu Server 就是没有的),如果遇到这种情况还是需要自己手动安装一下,不过这种多人共用的操作系统中没有 sudo 的情况还是很罕见的。 0X01 修改配置…

你为什么需要会用 tmux

0X00 简单介绍 想必看到这篇博客的各位肯定会经常工作在 Terminal 中吧,而且对自己稍微好一些的人应该也都会配置一下自己的终端环境,比较常见的就是 Linux 下装个 terminator 或者 macOS 下装一个 iTerm2 这种软件,然后再用 zsh 配合不同的主题和插件完善自己的体验。而且真正用过一段时间终端的人肯定都会有那种一个窗口不够用的情况,那么你可能要用到终端模拟器(terminator/iTerm2)的 tab 功能了,每次都额外开一个新 tab 出来,或者上下左右开始分屏了。 一切都很顺利,直到你开始频繁的连接到远端的服务器上去,然后发现自己习以为常的分屏和 tab 全都没有了,每次想再开一个远端的 shell 时都需要在本地开一个分屏然后重新 ssh 重新输密码,需要 sudo 的话还可能需要再重复一下密码。一次两次还好,次数多了肯定就麻了,这时候就是 tmux 大展身手的时候了~ tmux 本身是一个终端复用器,可以做到的功能包括终端横向纵向的分屏、多 tab 切换等等。 0X01 基本用法 要用 tmux 首先要有 tmux…

关于端口你需要知道的-迷你版

0X00 基本内容 你应该听人跟你说过类似于「你看 2333 这个端口在没在监听」这句话吧,也应该听过「我可以 ping 通所以肯定不是网络的问题」这种话吧。虽然听的多了,但实际上它漏洞百出。 首先我们都知道端口号是一个数字,从 0 到 65535 其中 0~2013 叫 well-known ports 知名端口,也就是说通常某个端口就固定给某个服务使用,比如你见到 22 就第一反应该是 ssh 而非 MySQL,见到 80 就知道是 HTTP 而非 smtp。也正是如此,在 Linux 中你自己开发的程序平时监听 8080 没啥问题,但是想监听 80 的时候就要校验你的 root 权限了。 其次要知道端口是 IP 地址上的,并非电脑上的。也就是说当你电脑同时拥有 192.168.2.123 和 192.168.2.234 两个 IP 的时候,你可以启动两个 Nginx 分别监听他们的 80 端口。 最后要知道端口也是分类型的,即使是同一地址的统一端口也可以 tcp 和 udp 分开监听,也就是说你可以同时监听: 0X01 如何检查…

人生奖杯系统

0X00 介绍 奖杯系统这东西是从 PlayStation 上借鉴过来的,PlayStation 上每个游戏均会设置一些奖杯,当玩家达成奖杯对应条件的时候就会解锁该奖杯,从而给玩家的游玩过程以正反馈。XBox 上也有类似的成就系统,都是用来给玩家正反馈的。 我作为一个游戏玩家就很喜欢拿到奖杯的感觉,尤其是拿到了一个金杯、白金杯(虽然我还从来没拿过白金杯)然后看到只有百分之一的玩家得到了这个奖杯的时候。既然游戏制作人可以为游戏设置将被,那我们为什么不考虑把自己的人生作为一个游戏来给它设置一些奖杯呢~ 在开始之前要说明一下人生奖杯系统是什么又不是什么: * 奖杯系统是成就系统,不是代办清单 * 奖杯系统是自我激励和正向反馈的,不是用来给自己压力的 * 奖杯系统是非常个人化的,不是有最佳实践的 0X01 我的奖杯系统 先来给大家介绍一下我自己的奖杯系统,它是用 Notion 的数据库功能制作的。细心的朋友可以看出来我整个 Notion…

2022 年度总结

~~年度总结:今年摆烂,完了。~~ 0X00 开篇 不开玩笑,又到了一个年尾巴。本以今年会是轻松的一年,结果却是异常的艰辛😮‍💨 千算万算肯定是算不到 2022 年对生活影响最大的仍是疫情。本以为今年就彻底解决疫情了,但奈何天不遂人愿,一直到今天疫情仍然与你我密切相关。今年我核酸做了一两百次、居家办公一轮又一轮、收集了两个省的黄码、喜提了两周的铁皮围栏隔离,最后几天还是没顶住,至今仍在干咳。 接下来就简单整理一下今年发生过的值得记录下来的一些事情吧🎉 写完发现长度有点离谱,又尽力缩减了一些,有些实在是觉得写了不舍得删就继续留下了,这可能是我最长的一篇年终总结甚至是最长的一篇博客了。 0X01 生活 今年的生活过的比较普通,依旧没有发生什么惊天地泣鬼神的大事。不过人的一生又能经历几次大事呢?这些零零散散的小事情一件一件拼起来才是绝大多数人的生活吧。 智齿…