[{"content":"成为 Obsidian 的重度使用者之后，突然意识到它和我写博客的需求完美契合，以下是我配合 Hugo 的使用经验。\n引言 为什么选择 Obsidian 作为 Hugo 博客的编辑器呢？主要有三点理由\nObsidian 和 Hugo 都采用 markdown 语法，操作都非常熟悉 Obsidian 有丰富的插件生态，可以契合 Hugo 博客的一些痛点，如 shortcode 的输入等 利用 Obsidian 自带的统计功能，能有效追踪自己的博客进度（变相催自己更新 插件 核心的插件一共四个\n预览：Hugo preview 快速添加模板：QuickAdd 显示更改的文件：Git 写作统计：Dataview 还有几个用于辅助的，例如 Quiet Outline，看各自的使用习惯\n工作流 我目前给博客单独开了个 vault 用于存储，没有和自己的笔记放在一起，尽量降低一点复杂度，有需要引用的地方还是使用粘贴复制的方式，使用预处理脚本让 Hugo 来处理 Obsidian 的双链引用太过复杂了。\n文件夹结构 . ├── archetypes // 文章模板 ├── assets ├── build.sh // 用于 cf pages 的编译脚本 ├── config // 模块化配置文件 ├── content // 所有的博文内容 ├── data ├── .git ├── .gitignore // 注意去除部分路径不加入 git ├── .gitmodules ├── home.md // 用于博客统计数据 ├── i18n ├── layouts ├── .obsidian // Obsidian 配置文件 ├── public ├── resources ├── static └── themes 大部分都是 hugo 的标准目录，其中我保留了 archetypes 作为博文的模板目录，方便不同类型的文章快速应用 front matter 内容。\n另外我采用的是 cloudflare pages 来托管域名和网站，相较于 GitHub Action，它只 git clone 一层，所以会使 Hugo 的 GitInfo 功能失效，建议自己单独实现 build 脚本\n#!/bin/sh # clone all commits git fetch --unshallow # build hugo site hugo 我会单独做配置备份，所以 .gitignore 除了 public 和 lock 之外，排除了 obsidian 自己的配置路径\n# the build output resources public # the build lock flag .hugo_build.lock # obsidian configurations .obsidian/ # exclude obsidian home page home.md 编辑 我的个人习惯是新建博文到特定目录，然后将附件放在相同目录下，如果图片很多，我会使用 imagemagick 将它转成 webp 的格式，避免本地存储库过大。\n注：喜欢贴图必备插件 Paste image rename\n比较喜欢使用 Admonition 的同学一定很能领会时常忘记 shortcode 该怎么写的痛苦，当然 Obsidian 自己能实现这样的补全，但是我更习惯使用 QuickAdd 来添加模板，有的 Hugo 主题也会提供一些独有的短代码，可以一并加上快速选取。\n在同时写多篇文章，但跨度很大常常忘记，并且文件夹目录较长难以查找到怎么办，Git 插件能够帮你可视化找到，点击第一个按钮就可以快速定位到文件位置。\n预览 有很多人喜欢 Typora 的核心原因就是所见即所得，当然在写作的时候能直接预览到最终效果当然很舒服。Hugo 自己就能做到，但是它默认是在浏览器渲染的，没有外接屏幕的时候还需要不断的切换窗口来查看，这不太舒服。\n似乎和 vscode 也没什么特殊的地方，但是 Obsidian 有实现保存 workspace 布局的功能，那就非常方便了，通常写文的时候左右两边侧栏是需要打开的，预览的时候就能通过工作区布局切换快速选取预览布局，关闭侧栏。\n发布 我目前没有采用 Git 插件来自动提交，因为有很多写到一半的欠稿想先留在本地，不想上传到 git 上面，如果是每次都能写完并提交的话可以开启定时提交的功能。\n统计 在上面的文件夹结构处可以看到我单独留了一个 home.md 来统计数据，这涉及到 Obsidian 用户的核心插件之一 Dataview，我们可以通过类似于 SQL 的语法来统计一些有用的数据，甚至是使用 dataviewjs 来搞一些华丽花哨的主页装饰。\n例如我下面用来统计 draft 的文章列表\n```dataview list without id link(title) from \u0026quot;content\u0026quot; where draft = true ``` ","permalink":"https://blog.zjuyk.site/posts/use-obsidian-with-hugo/","title":"使用 Obsidian 来写 Hugo 博客"},{"content":"在读完本书的时候有两个疑问在我的脑海里回荡\n如果明知道法律制度不完善，该如何司法与执法？ 程序正义的前提是立法合理，法律制度一直处于发展之中，难免会有滞后性和漏洞。单纯从民众的角度，一定追求的是实质正义，而对于执法者和司法机关而言，维护法律的尊严又是他们的本职工作。这两个诉求在时空上会产生矛盾，例如药神里面是否要按照当时的法律来判处程勇，在正当防卫新法条未实施的时候该如何量刑。\n法律条文是冰冷的，但在职的人是有心的。为了防止权力钻空子，似乎一切都应该按既定规矩办。在以往，经常有违背程序正义的情境发生，例如诱供逼问和非法取证，当然，在公开宣扬或者影视剧里这种手段对象通常是「脑门上印着罪犯」的反派。在这本书里，我的道德感亲和于严良这个角色，但理智又在告诉我坚持程序正义才能保护大多数人。\n有点像是在法律界的电车难题，坚持程序正义当事人受到煎熬，法外留情又可能留下了权力漏洞未来伤害更多人。\n利用罪犯的良心来揪出他在法律上是允许的吗？ 判决罪犯通常需要人证，物证和口供，很多时候客观的物证难以保留，犯罪地点隐蔽没有人证，罪犯心理素质很高抵死不招，形成种种悬案。人是很复杂的生物，善和恶共生。骆闻的恶在于为了找到妻女直接杀害了很多人，善心又驱使他帮助朱惠如和郭羽掩盖杀人的真相。厉害的刑侦高手是可以在逻辑上直接锁定罪犯的，所欠缺的就是证据。\n以前看过一个短片《老江湖》，范伟饰演的，印象里他是一个盗窃犯，为了救人去开保险箱，结果发现是个陷阱，当时的热评是「以善为饵，比恶更恶」，感触颇深。在当前或未来的法律里，是否会允许这种比钓鱼执法还要受诟病的取证方式呢？\n","permalink":"https://blog.zjuyk.site/notes/read/%E6%97%A0%E8%AF%81%E4%B9%8B%E7%BD%AA/","title":"无证之罪"},{"content":"最近粗读了蒋文华教授的博弈论，书中的几个在长久的博弈策略观点很有意思\n带剑的契约才有效 宽恕带来更多的背叛 占尽优势的时候要更保守 除了第一点中肯外，其他两点缺失了先决条件，不是那么令人信服。但综合现实的残酷来看，也有一定的道理。宽恕和原谅是强者的特权，对大多数人而言，宽恕意味着对自己的背叛，但当对方对既定局面已经没有任何影响，不妨展示宽仁，避免鱼死网破。占尽优势时的保守是根据对方实力来灵活判断的，是陷阱还是真虚弱要求有多方面的佐证，空城计抑或宜将剩勇追穷寇需要临机决定。\n查了一些其他的资料，感觉普通人在博弈方面最需要注意的一点就是：沉没成本不纳入重大决策！\n","permalink":"https://blog.zjuyk.site/memos/%E7%A4%BE%E4%BC%9A%E5%8D%9A%E5%BC%88/","title":"社会博弈"},{"content":"这本书不像是一本童话，我更喜欢把他当作寓言故事。我中午西西弗书店粗读了一遍，感想没有那么深，看了一下豆瓣，似乎大家都着眼于「驯养」这个词。\n与玫瑰和狐狸之间建立关系的讨论很多，但实际上并没有触发我关于感情方面的思考。可能我觉得理当如此，或许感情方面坎坷的读者才能领会。\n我更喜欢商人的那个故事，每个星期吞一粒解渴丸来节约时间，但其实节约的时间已经足够不慌不忙的找到泉水了。现在的社会很焦虑，包括我自己也是这样，总是想挤出时间来做些什么更有意义的事情。但做事情本身就是有意义的，我总是容易忽略这一点。做一个纯粹的人应该是幸福的，找到目标，为目标努力，心无旁骛，耐得住寂寞，也许才是生活的要旨。\n","permalink":"https://blog.zjuyk.site/notes/read/%E5%B0%8F%E7%8E%8B%E5%AD%90/","title":"小王子"},{"content":"新时代，新青年，90 后已经在工作岗位上大放异彩，第一届 00 后已经走 在毕业打工的路上。之江实验室智能超算研究中心团队，35 岁以下成员占比近九成，这一点值得我们深思。\n年轻人，后浪奔涌。年轻人没有负担，可以将全部的青春与热血奉献给最伟大的事业。他们精力充沛，能熬最晚的夜，加最久的班。年轻人，掌握先 进生产力。他们普遍有着更高的学历，学习能力强，掌握行业先进技术。最关键的是，年轻人肯吃苦，充满理想。他们只要最低的工资，就可以为社会贡献最多的价值。 正是一群年轻人，为中国梦添砖加瓦。许多伟大的事业，都是由年轻人为主的团队成就的。比如中国航天团队，就以年轻人为主，大部分职工在 35 周岁以下，今年已经要建成空间站了。\n是啊，年轻人作为劳动力，性价比可比职场老油条，不知高到哪里去了。 中国最具代表性的民营企业，如华为腾讯阿里，都致力于团队的年轻化。 问渠哪得清如许，唯有源头活水来。要想实现团队的年轻化，就需要吐故纳新，在这方面各行各业都做出了表率。例如，高校的科研团队就实行非升即走制度，这为我国的一流大学建设做出了卓越的贡献。腾讯、阿里、华为等 代表性的民营企业，长期进行针对高年龄员工的裁员，从而保障大多数职工是年轻人。这样，企业的利润就会节节攀升。除了裁员，还有各种方法让 35 岁以上的高龄员工自己离开。正所谓，他体面就让他自己体面，他不体面就帮他体面。在多种措施的共同作用下，许多企业都实现了员工的年轻化。很多企业在招聘的时候都会表示：我们的团队非常年轻，都是九零后。\n在企业努力进行员工年轻化的时候，作为劳动者，我们能做什么呢？正所谓世界潮流，浩浩荡荡，顺之者昌，逆之者亡。在 35 岁之前，我们要做努力的打工人，将自己的青春与热血，奉献给祖国最需要的事业。而 35 岁之后 呢？既然企业都喜欢年轻的员工，身为老同志，就应该高风亮节，到站下车，把机会留给年轻人。在应届生就业如此困难的 2022 年，各位老同志更应该拿出舍我其谁的大无畏奉献精神，把有限的工作岗位留给那些期盼工作的年轻人。 不要等着企业来裁员，请自己体面，自己辞职。自己辞职，有诸多好处。 首先，让企业节省了 N+1 的裁员成本，在实体经济如此困难的当下，这是非常有益的。另一方面，被企业裁员着实是一件，非常跌份难堪的事情。与其被体面，不如自己体面。\n综上所述，35 岁以上的职场人，请自己辞职！\n","permalink":"https://blog.zjuyk.site/notes/35%E8%AF%B7%E8%87%AA%E5%B7%B1%E8%BE%9E%E8%81%8C/","title":"35，请自己辞职"},{"content":"为了避免用户使用代理黑别人服务器和 DDOS，部分机场可能会禁用 22 端口，导致 GITHUB 无法通过代理 SSH 连接，如果确实如此一般会收到以下报错\n$ ssh -T git@github.com ssh: connect to host github.com port 22: Connection timed out 不过幸运的是 GITHUB 提供了另外一种连接方式，可以走 443 端口\n$ ssh -T -p 443 git@ssh.github.com Hi xxxx! You've successfully authenticated, but GitHub does not provide shell access. 所以只需要在 SSH 配置里指定即可规避代理 22 端口被禁用的问题\n$ vim ~/.ssh/config Host github.com Hostname ssh.github.com Port 443 ","permalink":"https://blog.zjuyk.site/notes/%E8%A7%A3%E5%86%B3%E6%9C%BA%E5%9C%BA%E7%A6%81%E7%94%A8-22-%E7%AB%AF%E5%8F%A3%E5%AF%BC%E8%87%B4-github-%E6%97%A0%E6%B3%95-ssh-%E9%97%AE%E9%A2%98/","title":"解决机场禁用 22 端口导致 github 无法 ssh 问题"},{"content":"这本书的不是传统的鬼怪灵异，拥有自己独特的设定。鬼不再是人死后产生，而如同代码规则的产物。鬼无法被杀死；只有鬼能对付鬼；洞察鬼的规则。这三条贯穿全文，草蛇灰线，伏笔众多。这本书受到唐家三少的举报，大纲做过修改，部分大纲自行上网搜索，设定比目前更精彩合理。\n如果鬼能沟通和被杀死，那么这个世界不算绝望，但作者的设定尤为残酷，但让故事的发展也更加恐怖，没有英叔这样的人来帮你，只有被诅咒的逐渐变成鬼的可怜人。作者的脑洞极大，各种离奇的鬼和灵异产物在作者笔下出现，而且利用他们的逻辑碰撞（卡 bug）给人留下了一线生机，这样的设定极为吸引人，而不是像其他小说一样战力崩坏严重。其中敲门鬼，饿死鬼事件、古宅老人和白水镇等几个副本设定令人啧啧称奇，看完之后大呼还能这样，期间塑造的恐怖感也十分浓郁，我那段时间听敲门声和照镜子都有点心虚。\n可能是为了冲淡恐怖的氛围，也或者是作者写人的水平实在有点难以言表，部分描写实在让人出戏。鬼的规则设定圆融，人的智商性格极为混乱，又或者太过极端，缺乏立体感。其中尤其明显的是几乎所有的女角色，感觉都戴上了降智光环，设定本身第三条是最重要的，鬼的规律全靠主角来洞察，其他人充当炮灰这样的剧情很难让人接受。里面政府的作用也被大幅削弱了，总部领导以及国家的决策都令人费解，可能只是为了单纯突出主角的个人英雄主义吧。\n","permalink":"https://blog.zjuyk.site/notes/read/%E7%A5%9E%E7%A7%98%E5%A4%8D%E8%8B%8F/","title":"神秘复苏"},{"content":"这本书是我在读完金古的武侠小说后找到的，在读开窍期的章节时，我的脑海里不断地回荡贺铸的《六州歌头·少年侠气》，那段游历江湖的日子就是我向往的武侠生活。有着生死伙伴，少年意气，重情重义重诺，逐步脱去青涩，红尘炼心，开悟寻道。\n书中的人物性格刻画的尤为生动。至今还记得江芷微的剑道之心：平生唯爱七尺剑，斩吾见我我非我！还有琴心天成的小吃货阮玉书，以及外表冷漠内心柔和的齐师兄，生死相依的张师兄和符真真师妹…在他们身上看到了珍贵的友谊，可惜现实生活中这样的知己难求。还有那些前辈们：“冲和者，淡泊平和，谦冲守正”的冲和道人；“极于情者极于剑，一生一世一心人”的陆大先生等等。女主顾小桑古灵精怪的行为下藏着宿命的苦苦挣扎，最后的那句「我挣扎过，我输了」让我记了很久。那段时间正好初读道德经，对文中“天意自古高难问”的主线思想感触颇深，这是化用了杜甫的“天意高难问，人情老易悲。”彼岸者的意志就是天意，让其下的人都沉沦宿命之中，难以挣脱。\n本书的主旨和设定，容易让人感受到一种深深的无奈，我命由我不由天只是空谈。只有同为规则的制定者才能抗衡规则，主角的成功源于三清的青睐，令人沮丧，或许作者是想表达「欲得天助，必先自助」吧。一个小缺憾，那就是出招方面颇得古龙遗风，一种我一出剑，对手应声而倒的意味，其间的具体过程是几乎没有的，哈哈，全靠读者想象补足。另外乌贼安排男女主感情的时候有点简单粗暴，回忆会美化一个人，内疚和感怀来发酵感情。好吧，我承认有一定的道理，但不能接受这样的设定，有感情才有美化的空间，内疚和感怀发酵的是补偿的心理不是感情。前期其实看不出男女主之间的感情，几乎是凭空产生的，没有埋足够的感情线较为可惜。\n注：安利一个电影向视频 https://www.bilibili.com/video/BV1Kh411J7a8\n","permalink":"https://blog.zjuyk.site/notes/read/%E4%B8%80%E4%B8%96%E4%B9%8B%E5%B0%8A/","title":"一世之尊"},{"content":"这本书的特质在于刻画了一个世人向往的真仙形象。仙者，逍遥耳！其他的玄幻文没有这种闲适，打怪升级怎么比得了自己创造和领悟神通。友情提示：本书烂尾，看到中间苗头不对建议弃书，尤其是读过聊斋和酉阳杂俎的朋友可能观感会比较差。\n这本书立足于山海经和诸多的神话传说，看得出来作者选取了其中逼格很高的部分汇聚在主角身上。苍目，仙剑，三昧真火，无垢之身，天倾剑势，敕令，黄巾力士，捆仙绳，游梦法等等令得整本书仙气飘飘。这些都是很帅又威力强大的神通或者法宝。当然体现逍遥二字的还是主角本身的行事，他是游历于红尘之中又脱离于世俗的。没错，我第一想到的就是济公游记，这种游戏人间的感觉才令人向往修仙，人们求的是长生逍遥，而不只是长生。\n但显然这本书是比不上济公游记的，主要是作者矫揉造作而不自知，与天地对弈的气魄我没有看到，终究还是刻画了一个神通广大的仙人皮囊。在这样平和的修仙世界里，不可能所有人都是主角装逼的工具的，古典修仙，成仙必先得道，显然主角没有这种对道的坚持，或者说主角根本没有对道的诠释。一概用神通和法宝压服敌人和身边的人，最后也只是爽文流水账而已。\n","permalink":"https://blog.zjuyk.site/notes/read/%E7%83%82%E6%9F%AF%E6%A3%8B%E7%BC%98/","title":"烂柯棋缘"},{"content":"注意，这是一本因为宋江后人投诉而导致太监的书。同人文的出现大多数出于意难平，我在看水浒传的时候最为可惜的就是那些逼上梁山的英雄人物最后的无奈结局，于是找到了这本，虽然没有完本，但的确给了我喜爱的角色一个体面的结局。\n梁山一隅之地确实养不了太多的军民，所以后世大多是称之为寇，大的黑社会头子而已。宋江的愿景是招安，但为什么要招安，自己打下地盘施政岂不是可以兼顾义气和前途？开辟海外基地济州岛和攻高丽真的是一步活棋。好汉之所以被称为好汉，侠义精神是其核心，不光是对自己兄弟义气，还要有自己的道德坚守。就这一点而言，这本书完美满足了我的需求。\n不过也正是因为侠义的纯粹，书中的世界就像是一个乌托邦，正的过正，邪的过邪。作者不大擅长刻画优秀的反派人物，直接把宋江和吴用刻画成丑角，爽快是爽快了，但也太小看原著中操弄人心的手段了。尽收天下英雄人物只是一个美好的愿景，有些人是天然站在对立面的，体面退场是对他们的尊重，不必丑化反派从而让英雄归心。如果这样写，也不至于被投诉太监了吧，哈哈。\n","permalink":"https://blog.zjuyk.site/notes/read/%E6%B0%B4%E6%B5%92%E6%B1%82%E7%94%9F%E8%AE%B0/","title":"水浒求生记"},{"content":"三痴道兄本质上是个文人，他的书有一种特质，那就是风雅。即便本书的主人公是现代重生，但写作的核心还是展示东晋时期的文人风貌及社会习俗，在读《东晋门阀政治》的朋友可能更能理解当时的社会大环境（世胄摄高位，英俊沉下僚）。另外我个人认为，这本书去掉魂穿这个设定对情节基本没有影响，因为在科技层面和现代思想方面的描写实际上很少。\n这本书在穿越文中极为特殊，主角不像个穿越者，作者的情节演绎让主角更像是土生土长的人物，所采用的计谋手段基本契合当时的社会风气。主人公名气的来源之一，就是谈玄辩论，没错打嘴仗在当时很有用。给读者的感受就仿佛是在那个时代游历，交友、求学、谈玄、任事等等等。里面的配角描写与历史上的形象大致吻合，顾恺之，谢安，桓温，谢玄等人的塑造符合了我对魏晋风流的大部分想象，剧情里穿插的典故落到实处，推动了剧情的发展，每次读到王子猷剡溪访戴不见戴，都惊叹魏晋人物的洒脱不羁。与女主之间的感情描写也非常生动，喜欢言情部分的一定不要错过主角与花痴陆葳蕤之间的恋爱章节。\n不过成也文也，败也文也！作者实在不适合权斗与征战，所幸及时结尾，虽然太匆忙但继续写下去这本书的缺点也会暴露得更明显。我很喜欢对社会背景及人物风俗的描写，但我不喜欢作者笔下的格局，其一在于感情的处理，咏絮谢道韫真的是个能接受双娶的人物吗？我的印象里「宁可枝头抱香死，不曾吹落北风中。」才能配得上这位千古才女，即便主角陈操之刻画得那么完美，但终生为友未尝不可。其二在于幻想意味太浓，主角只是九品中正制幸运的漏网之鱼，他的崛起之路无可复制，门阀制度的大网牢牢锁住了所有人。越读越能体会到主角根基之浅，空谈和依附不能作为实力的来源，文人总容易高估自己的实力，但老实说他没有能力在那样的世界里保护自己和家人。文中王献之和郗道茂因公主司马道福的压力离婚就是例证，这样的士族都无法反抗，何况是主角这个寒门。\n","permalink":"https://blog.zjuyk.site/notes/read/%E4%B8%8A%E5%93%81%E5%AF%92%E5%A3%AB/","title":"上品寒士"},{"content":"这是一本写的极慢，写作时间跨度非常大的小说，所以其中你可以看到网文在各个时期的典型风格，误以为和在它之后写的小说有重合之处。另外前期的很多章节的景色描写是散文级别，就凭这些文字就能撑起本书的名气。\n穿越必备的抄诗词是俗套写法原本并不出奇，然而作者费了极大的心思让诗词的出现契合了当时的场景，而不是令人突兀的炫技，书友笑称没有烟火气的装逼。家、国、天下的大纲线中，家这一部分写的很平淡，为之后的风雨埋下了伏笔，其中彰显主角性格的一些笔墨非常老练，我很怀疑作者当时是不是大量得研读了鲁迅的作品，其中我最喜欢心有猛虎这一章节。蒙太奇分镜的描写手法使得画面感十足，这也是为什么有声书的体验甚至比读原文更好，但由于更新进度太慢，我想当时追更的读者估计气得要骂人。当然重要的还是故事性和人物的塑造，作为群像小说，作者大量的塑造了许多贤者形象，这里的贤不是单指智慧，统一指代有着自己底线和行事风格的人物，之后在国和天下阶段毁灭这些值得尊敬的人就更会让人惋惜，例如秦相。\n作者钟情于讲大道理，在意识形态方面有大段大段的输出，在我的认知里这是写小说的大忌，且不说观点正不正确，反正一定让人厌烦。更要命的是作者在尝试在封建时代演绎社会主义，这样空中楼阁有极大的概率导致草草结尾，不然这些构想落到实处就只能大量的开启金手指了，当然主角在文中不断催化民众觉醒的过程，但目前来说还远远不够，最后圆不上了让主角修仙续命我也能勉强理解。在我个人而言，还有一个比较大的缺点，作者没有圆回来早期往后宫文发展的写法，导致主角在处理感情的时候非常拧巴。我无法想象一个开后宫的人还尝试立深情的人设，作者引入社会主义我以为是弥补这个过失，看到楼舒婉我也以为会这样，但实际上在国和天下层面已经没有个人感情的容身之处了，能看到女相的风采也够了，即便是之后的剧情里那些鲜活的女子通通淡化冷藏。\n","permalink":"https://blog.zjuyk.site/notes/read/%E8%B5%98%E5%A9%BF/","title":"赘婿"},{"content":" Competition considered as the main thing in life is too grim, too tenacious, too much a matter of taut muscles and intent will, to make a possible basis of life for more than one or two generations at most. After that length of time it must produce nervous fatigue, various phenomena of escape, a pursuit of pleasures as tense and as difficult as work (since relaxing has become impossible), and in the end a disappearance of the stock through sterility.\n想起高中的课文《旅鼠之谜》，生存环境资源的竞争过于激烈，旅鼠们会选择集体自杀。类比人类自己，如果因为竞争过于激烈，一直得不到情绪和生理上的放松，选择不再生育是必然的选择。\n","permalink":"https://blog.zjuyk.site/memos/%E7%AB%9E%E4%BA%89%E4%B8%8E%E5%B9%B8%E7%A6%8F/","title":"竞争与幸福"},{"content":"冲着沈腾和马丽去的，说实话，效果是远不如夏洛特烦恼和西虹市首富的。\n笑点有很多，一贯的开心麻花风格，但没有那种让人记忆深刻的台词或场景，喜剧的内核是悲剧，我深刻体会到了这一点，男主角小的时候是很有灵性的，但是大了的那个演员很阴郁，不大像是这样教育出的孩子。\n与现实脱钩的是穷养出现的后遗症没有充分的体现出来，那就是自卑，这是穷人的孩子最普遍的特点。早熟实际上是晚熟，懂事听话包裹着受创的心灵，这一点或许编剧们自己没穷过，所以没有领会。\n这部片子可以归于魔幻现实主义，楚门的世界需要巨额的金钱来维系，那些知识侵染的手段其实很值得借鉴，这也是富养为什么会带来眼界的提升，耳濡目染之下能学到课本上没有的东西。\n我觉得没必要非要吃苦，问题在于姥姥姥爷的溺爱，百依百顺才会养废，优越的生活条件从来不该是拖累，只是无病呻吟而已。\n","permalink":"https://blog.zjuyk.site/notes/movie/%E6%8A%93%E5%A8%83%E5%A8%83/","title":"抓娃娃"},{"content":"时空的交际与闭环，很有意思，每个人物在不同的章节中有着奇妙的联系。我刚开始没理解书名的含义，后来看完后三章才慢慢理解。主旨应该是雄治的这段话：\n解忧的意义所在 别的信也都是这样，几乎都很感谢我的回答，这当然是值得欣慰的事情，不过从我读到的内容来看，我的回答之所以发挥了作用，原因不是别的，是因为他们自己很努力，如果自己不想积极认真的生活，不管得到什么样的回答都没用。 让我想起那句佛偈，唯有自渡方是真渡！\n回答在牛奶箱里 这一章太无奈了，爱情和梦想的纠结，这已经超越了解忧的范畴，这是人生的重要决策。我一直秉持的理性思维在这一刻也动摇了，我在想，要是他们不知道运动会会被抵制那又会怎样？要是月兔能参选又怎样？这样也许有人劝她追求梦想抛弃患病男友？这个自私而冷酷的念头从我的脑海中浮现，旋即掐灭，太不当人了！\n从博弈论的角度，既然心不静无心训练，和男友一起度过最后的时光是最佳的决策，主角三人提出的假装怀孕的主意太糟了，无论什么时候欺骗永远是最糟糕的，没有什么善意恶意之分。\n深夜的口琴声 理想条件下，爱好和事业重合是美好的，现实中，爱好被事业搅扰是悲哀的。我通常都会给自己的爱好加上个定语，业余，因为真的变成了事业，兴趣很难不被消磨。\n艺术是很看天份的，我很尊敬艺术家，无论成功与否，贫富与否，他们无一例外是狂热者，理想主义者。梦想与生活，我希望能找到办法实现两全，这个故事里的主角太任性了，我不能理解他的逃避，无法面对自己的父母亲人，无法面对缺乏天赋的评价。\n为什么呢，为什么要钻牛角尖？即便不想继承父母的鱼店，即便是想全力追求自己的梦想，为什么没有勇气广而告之？被指责的时候的无能狂怒我实在是同情不起来。我不知道他是否真的有天赋，但他确实没有百折不挠的志气。故事末尾是对他这几年坚持的安慰，但他的父母恐怕没有这样的安慰。\n","permalink":"https://blog.zjuyk.site/notes/read/%E8%A7%A3%E5%BF%A7%E6%9D%82%E8%B4%A7%E9%93%BA/","title":"解忧杂货铺"},{"content":"中国目前处于一个很奇怪的处境，理论上来说我们是社会主义国家，遵循集体主义，主张集体的功劳，弱化个人的作用，但我们又大力的发展市场经济，奖励个人的奋斗和竞争，这样造成了极大的割裂。\n优绩主义开始源自于美国，主张社会与经济的奖赏应当依据才能、努力和成就这些优绩来决定。我其实觉得这是一个强行造出来的词汇，属于完美主义和功利主义的集合体，总而言之，是内卷及恶竞的核心出发点。\n这样的熏染下，出现了好多嘴上说的不要卷了，但实际上还是不断在卷的人，在做任何事都这样，根本躺不平。\n","permalink":"https://blog.zjuyk.site/memos/%E4%BC%98%E7%BB%A9%E4%B8%BB%E4%B9%89/","title":"优绩主义"},{"content":"这部书是三言中的第二部，主题大部分是婚姻爱情相关，有些故事很有意思，挑出来记录一下感想\n第一卷：俞伯牙摔琴谢知音 钟子期和俞伯牙的故事早有耳闻，一直以为是史实，现在才发现是冯公的杜撰。其中的定场诗句很有意思，尤爱「势利交怀势利心」这一句，小的时候父母总说要多和别人搞好关系，然后别人未来能帮到你，能理解父母的拳拳之心，但不认可这种交朋友的态度。\n第二卷：庄子休鼓盆成大道 这个故事属于纯杜撰了，《庄子-至乐》里确实有鼓盆而歌的记载，但是「我今死，则谁先？更百年生，则谁后？先不得免， 何贪于须臾？」中勘破生死的大气魄不是这篇故事中可比的，束缚妻子不得改嫁也不符合清静无为之道。\n不过确实是我感触最深的故事之一，夫妻本是同林鸟，大难临头各自飞，难说夫妻之间是否会有这种情状，死后也难以管束，但我认为这种试探是明显不对的。\n以往总是听到在爱情中会有考验的环节，我认为这种试探包含着不信任的意味，是否相爱真的那么难以分辨吗？是患得患失还是自己没那么喜欢对方？都已经是夫妻了，信任是婚姻的基石，提防和准备后路真的是可以的吗？也许会被辜负，但选择不信任的试探指向的肯定不是幸福。\n第五卷：吕大郎还金完骨肉 这两个故事根本在于善有善报，恶有恶报，员外下毒害人反害自己亲子，不过他的妻子佞佛也是固执，悭吝只是惹人嫌，有意害人遭报应也是天理昭彰。不过第二个故事值得商榷，害人的是丈夫，怎么遭到报应的却是妻子杨氏，虽说夫妻一体，但吕宝的结局不够大快人心啊。\n第八卷 崔待诏生死冤家 勇敢和懦弱是不相配的，秀秀勇敢的追求爱情，但是崔待诏却不能坚持如一，遇到郡王的逼问便将自己的责任一推二五六，这也是为什么他知道秀秀是鬼马上求饶，最后一起带去阴间也是死得其所。不过这个故事的细节缺失太多，这个郡王指婚到底是不是真心？秀秀在郡王府里到底生活的如何？为什么要趁火灾卷银子私奔？如果丰满了这些内容，情节发展就会合理的多。\n第十卷 钱舍人题诗燕子楼 儿童不识冲天物，漫把青泥汗雪毫。白居易也脱不开封建礼教的影响，要知道关盼盼已经守节超过了十年，谁能否认这种心志呢？不肯徇死纯属小男人的臆测，真是可惜。\n第十二卷 范鳅儿双镜重圆 我更感兴趣前面的铺垫小故事，普通人在战乱面前是没有办法思考那么多伦理的。或许现在大家会取笑这种换妻的行为，但是战事纷乱，谁又能两全。在抗战期间，这样的错乱夫妻也不在少数，唯有挣扎求存而已。\n","permalink":"https://blog.zjuyk.site/notes/read/%E8%AD%A6%E4%B8%96%E9%80%9A%E8%A8%80/","title":"警世通言"},{"content":" 法律的起源有其客观因素，普遍论点便是法的基本要求是“尽情适理”，尽乎人情又适用于客观道理，是对人类行为的约束和权利的保护。我认为现在的法律就是在具体事例中权衡情与理的比重出现的。\n什么是“情”，我认为就是社会的主观道德认知，一如《自然法》得到的道德学说。古希腊哲学认为一部非正义的法律就不是法律，而判断法律是否正义就是通过道德来衡量。更朴素的归纳就是孔子的“己所不欲，勿施于人。”，由大家普遍的判断来界定能做和不能做的事情，这就是初始的法律。但这是很粗糙的做法，合乎大家的判断并不代表就是合理的，例如为报父仇，愤而杀人，按情来说，杀父之仇不共戴天，报仇不应该有罪，但按理来说杀人必须是要偿命。这就是情与理的矛盾，法律的存在也有调和这种矛盾的作用，根据具体事例来具体量刑，例如从轻处罚等等。\n那什么是“理”，我认为就是客观道理，例如人生来就会遇见各种不平等的事，这是客观事实。由于出身等不同，某些人总是会受到不同的对待，《罗马法》等早期法律中贵族和平民的处理标准是不同的，这就是基于客观事实的决定。但这很明显和“人生而平等”的普遍诉求相违背，也就是说合理但是不合情。随着民主的思想深入人心，法律中享有特权的人越来越少，除了部分对国家有重要贡献的人外，没有任何人可以轻易的获得特权，这也是现代法律完善的体现。\n综上，法以一种类似于“中庸”的态度来处理情和理，人的普遍认知和事物的客观道理是法律的土壤，不能事事由人们的认知来决断，也不能刻板的遵循客观道理。从人治到法治，法律不断的修订就是为了避免这种一刀切的现象出现，令每条法令都合情合理是法治的最终诉求。\n","permalink":"https://blog.zjuyk.site/memos/%E6%83%85%E6%B3%95%E7%90%86%E7%9A%84%E8%81%94%E7%B3%BB%E4%B8%8E%E5%8C%BA%E5%88%AB/","title":"情法理的联系与区别"},{"content":"年会不能停主要的笑点在与大鹏的阴差阳错，但我觉得既然是打工人的年会那就应该侧重于打工人，白客饰演的马杰克才真的应该多费笔墨。他的艰辛更能引发共鸣，让电影不同于童话。\n中国人似乎非常喜欢青天大老爷的戏码，哪怕是共产主义的中国，我们想让百姓站起来是非常困难的，不被别人欺负但也不要奢求于让别人来做主。世界上真的有救世主吗？在让子弹飞中，姜文饰演的县长就一度想让百姓自己站起来拿回自己的东西。毛主席说过「他走后，人民不要时时怀念他，也不要指望他回来，因为，人民就是他。」我们应该时刻想着依赖自己的力量解决问题。\n电影远远没有结束，因为问题还在，公司为什么裁员？效益不好，现在不裁了就能让公司好起来吗？并没有，所以不解决根本问题，广进计划只是一个开始。\n","permalink":"https://blog.zjuyk.site/notes/movie/%E5%B9%B4%E4%BC%9A%E4%B8%8D%E8%83%BD%E5%81%9C/","title":"年会不能停"},{"content":" 讲政治无非两点，制度和人事，制度总是跟随人事而调整，所以归根结底政治就是人事。\n不能单凭时代意见来评价历史上发生的事情，虽然时代意见并不都是错的。切记唯物史观，使用历史意见来客观地看待历史上发生的事情和制度。 政治制度的根本在于选拔人才，其次才是职权分配，通俗一点，用什么人和怎么用人。 汉代 graph LR A[皇帝] --\u003e B[宰相] B --\u003e C[御史大夫] B --\u003e D[九卿] B --\u003e E[太尉] C --\u003e F[御史中丞] F --\u003e G[刺史] 汉代政府组织 Q：为什么中国古代的领袖（皇帝）是世袭的？\nA：中国是一个大国，不像希腊这样的零散城邦，无法满足集合几千万的国民一起投票选举自己的领袖，这是生产力决定的，即便是现在我们也是人大代表制度，由选举的代表参与民主政治。不过这也不是说中国就没有民主的制度，例如汉代察举制，百姓口中的贤人往往能被推举做官（当然崩坏严重，因为推举权在地方长官手里，不在民众手中）。而且除了皇室，其他的政府官职均不能世袭，不像春秋战国时期的诸侯大夫都能父死子替，这也算是制度的一大进步。\n皇室与政府之间的职权分配 一个奇妙的发现：法曹在汉代原来是管交通驿馆的，相当于现在的交通部。而词曹才是管诉讼。\n汉代的相权非常强大，下属的十三曹囊盖了国家的几乎所有政务，也就是说丞相才是政府的「真」领袖，拥有着实际上的事权。\n这一段没有叙述汉代皇权与相权的对立与区分，比较可惜，这个应该讲的，可以让读者体会到权力向中央集中的过程。\n中央与地方之间的职权分配 中央政府的组织架构 三公：丞相（行政）、太尉（军事）、御史大夫（监察）\n御史大夫相当于副丞相，先做御史大夫才能升任丞相是不成文的规定。\n丞，副贰也。相，副也。都是「副官」的意思，而古人讲究化家为国，在春秋时代公卿士大夫的管家就叫宰。\n汉代凡是带「中」的官职，基本都是驻在皇宫，为皇帝直接工作，例如御史中丞（御史大夫的副职）。 graph LR A[皇帝] --交代事情--\u003e B[御史中丞] B --汇报--\u003e C[御史大夫] C --汇报--\u003e D[丞相] D --交代事情--\u003e C C --交代事情--\u003e B B --汇报--\u003e A 九卿（中二千石）：太常（皇家祭祀）、光禄勋（皇帝本人及皇宫核心区域的安保）、卫尉（整个皇宫及都城守军的安保）、太仆（管理皇帝的车马，甚至全国的车马）、廷尉（皇帝的执法人，皇家警察.jpg）、大鸿胪（外交部长）、宗正（管理皇亲国戚，皇家事务）、大司农（皇帝的财政）、少府（国家的财政，汉代最特殊的机构）\n光禄勋和卫尉的职责看起来有点重叠，但实际有很大的不同。尉专指武官，卫尉可以掌握军队（南军），而光禄勋掌管皇宫内的侍卫与郎官，在秦代相当于郎中令。\n郎官制度非常特殊，当然通常也是举孝廉才能充任郎官（常有高官子弟走后门），汉代有「想要做官，先当郎官」的说法，也就是进宫给皇帝当侍从，脸刷熟了就大几率能派出去当官，类比现在的官制，相当于中央选调，属于国家的储备干部。\n为什么说少府是汉代最特殊的机构，因为这个机构后来（从武帝开始）演变的极为庞大，财政、生产、供应链一条龙，尤其是盐铁专卖和铸币，一家巨型的国企诞生了。\n地方政府的组织架构 地方政府分两级：郡与县。\n在汉代共有一百多个郡，一个郡下辖十到二十个县。所以地方政府其实没有那么臃肿。\n此处没讲封国制，比较可惜，而且钱穆先生认为汉代行政区划优于当时，或许应该加上一段注解，讲述民国时期的省县区划（为什么一省下辖一二百个县在当时不好），当然我们可以猜到大概率是生产力原因。\n中央与地方的关系 上计：地方政府向中央上报每年的政务情况，主要是各种册簿\n刺史：中央派到地方调查的专员，之后的朝代权责和官制类似于御史，都是「小官干大事」，但后来权责扩大，州牧就成了地方行政长官\n侍御史：劾奏中央和皇宫的一切事务\ngraph LR A[御史大夫] --\u003e B[御史中丞] A --\u003e C[侍御史] B --\u003e C B --\u003e D[刺史] 汉代选举制度 太学甲等为郎官，乙等回家乡应聘属吏，属吏也可以举孝廉重新当郎官，类比现在就是地方遴选。\n汉代经济制度 汉代田税很低，一般是什一税，汉文帝时期还十几年没收过田税。但是要注意这个税是向田主收的，佃农是得不了一点的好处。没有田地的农甚至要交一般的收成给地主当田租。\n山川河泽的税起先是没有的，都属于各个封建主所有，但架不住百姓私入牟利，索性就开始收税，但是这个税是交给封建主不是国家的。后来盐铁专政把这个税交给了少府，用以支撑武帝时期的庞大军费。\n这章其实主要讲了武帝时期的政策，不过盐铁论确实有名也无可厚非。可以加入货币的内容，例如统一货币铸五铢钱，还有晁错提出的贵粟政策等等。\n汉代兵役制度 兵役分三种： 卫兵：二十三岁授田后，到中央卫戍部队，南军（皇宫卫队）和北军（首都卫戍部队） 戍兵：成年授田后，按朝廷需要，每年三天，不过可以交钱，一百钱一天 家乡服役：二十岁就开始\n力役是每年一个月\n人口税是生下来就收的，不管你就不就业，交不起的会罚为官奴强迫劳动，所以很多交不起的就卖身给封建主当奴隶，国家对奴隶收两倍的人口税，但由奴隶主交。\n良家子自愿从军，不是国家征召，打仗的时候自带干粮和武器投军，希望建功立业，多为边郡富户。\n汉代得失检讨 没有有效的抑制土地兼并 全民皆兵但常备兵不足（这点值得商榷，常备兵的多寡在于敌人的强大与否，敌人弱小还扩军实属穷兵黩武） 政府官位权责划分不明，多有变化，且做事依赖于既成制度 察举制崩坏，有察举权的官员垄断上升通道 唐代 graph TB A[皇帝] --\u003e B[中书令] B --\u003e C[中书侍郎] A --\u003e D[侍中] D --\u003e E[门下侍郎] A --\u003e F[尚书令] F --\u003e G[尚书仆射] C --\u003e H[中书舍人] E --\u003e I[给事中] G --\u003e J[六部] A --\u003e K[御史台] K --\u003e L[左右御史] L --\u003e M[观察史] M --持节，获得军政大权--\u003e N[节度使] 唐代中央政府 汉唐相权比较 唐代将相权分割到三省，不再如汉代一样由一个人大权独揽。\n三省：中书省（中书令）、门下省（侍中）、尚书省（尚书令，尚书仆射）\n唐代宰相的标志是能否参与政事堂会议\n三省职权划分 中书：定旨出命，负责拟发诏令 门下：审查诏令，给事中有权封驳诏命 尚书：执行诏命，只有加「同中书门下平章事」或者「参知政事」才算真宰相，可以参与政事堂会议 尚书省六部 吏部：提名五品以上官员，自主任命五品以下的官员 户部：民政和户口 礼部：宗教和教育 兵部：主管军事 刑部：司法诉讼 工部：营造工建 graph TB A[尚书左仆射] --\u003e B[吏部] A --\u003e C[户部] A --\u003e D[礼部] E[尚书右仆射] --\u003e F[兵部] E --\u003e G[刑部] E --\u003e H[工部] 因为尚书令虚设，所以左仆射实际上是尚书省一把手，右仆射是二把手\n唐代地方政府 唐代刺史不再只有监察权，而是地方行政长官\n唐代地方官由中央指派，不再由地方长官自行任用\n唐代按照户口多寡划分上、中、下三个等级的州县，所以下县县长升迁为州刺史至少要跨三级，而且下级官员其实很难得到升迁。\n观察使与节度使 在唐代，御史台是几个独立的监察机构，不归三省的宰相管理\n左御史负责监察中央，右御史负责地方\n观察使持节，授予军事、财政和用人的权力，那就是节度使\n这个地方或者上个章节其实可以添加转运使相关的内容，作为掌握地方财赋的官职，还是有必要说上一说的\n唐代科举制度 唐代科举贫穷子弟也可以应考，不作门第限制，但脱产读书难，饭后钟的典故由此而来\n饭后钟[唐]王播 上堂已了各西东，\n惭愧阇黎饭后钟。\n二十年来尘扑面，\n如今始得碧纱笼。 这一章节钱老有点想讽谏他所处时代的选官制度，但显得啰嗦，不断重复「传统政治不只是专制、黑暗和无法度」，恐怕当时有很多人秉持着无脑反对传统文化的观念才让他多次感慨。\n唐代科举分常举和制举，前者有固定时间，后者为选拔特定领域或满足特殊情况需要的人才的临时科举，后者往往升迁迅速。而且两个考试可以同时参加，例如上面的王播就是同年同时考中进士和贤良方正科（他后来当过宰相）。\n唐代经济制度 租庸调制度 租：政府授田给百姓，百姓交田税给政府，年老了归还，税率仅为四十税一 庸：每年服役二十天 调：土产上贡，例如丝绸苎麻等等 这样的税收制度比汉代减轻了不少，百姓易于负担\n帐籍制度 帐：壮丁册 籍：户口册\n账籍制度是租庸调的基础，但数据势必非常庞大，管理者懈怠导致制度崩坏是可以预见的（明末的黄册更为庞杂，甚至要求永久备份保留）\n两税制 政府不再授田收田租，而是春秋两季各收一次税\n户无主客，以见居为簿：收税的时候你在哪就给哪个地方政府纳税（讲道理要是有时差，一个季度两个地方跑岂不是要收两次税，哈哈） 人无丁中，以贫富为差：不管你年龄和身体强壮程度，按照家庭财富收税和服役 两税制代替租庸调制度，简化了收税的流程，但同时不再统一税率，给地方随意摊派提供了操作空间。\n两税制在实施的时候非常粗暴，例如你家以前有 100 亩田，现在只有 10 亩，但两税制规定固定的收税额度为标准，就得交上之前那么多！量出为入，按照指标收税。\n汉唐经济制度比较 租庸调制度力求保障底层百姓不至于太穷，汉代盐铁专营和陵邑制度（这个书里没讲，但我觉得可以提一嘴，迁徙豪强到皇陵周边，保证他们无法长久扎根乡间野蛮发展）保证民间豪强不至于过富。\n唐代兵役制度 府兵：百姓当兵政府在军队驻地单独划行政单位叫府，独立于州县，没有军饷但是可以全家免税免劳役。\n府兵制的崩坏其实和明代卫所很像，军士受到压迫，充当权贵军官的奴仆苦工，这样势必造成大量逃亡的。\n这里钱穆先生将招募胡人从军视为失着，我不以为然，胡人不可靠，要提防。这本身就是民粹主义，我们要做的是建立制度提放别有用心的人，而不是单纯的提防某个民族的人。一竿子打死不可取，而且胡人将领忠心唐朝的也不在少数。\n宋代 宋代和唐代的政治制度没有什么大的改变，不过建立了很多新的部门来分割原有的权利，官员手中的权力愈发分散和重叠，这也为冗官埋下了伏笔。\n宋代中央政府 相权的进一步分割 建立枢密院掌管军事，现在宰相没有军事上的管辖权\n新建考课院和三班院负责文武官员选拔，宰相人事权也受到侵占\n财政三司独立性增加，不再由宰相直辖，宰相财政大权受到削弱\n君权的提升 宋代的宰相上朝时不再拥有坐的权利\n经过战乱的五代十国，皇帝忌惮长期掌握大权的宰相，不再使宰相长久在相位上\n宰相呈递皇帝的拟旨不再是最终定稿，而是草稿，最后的决定权归于皇帝\n这里钱穆先生归结于宋代帝王的自卑，我觉得不恰当，说见惯了背叛战乱之后内心的猜忌更合适\n谏垣台阁 唐代的谏官相当于宰相的唇舌，不方便直接对皇帝讲的，由他们来说，避免宰相和皇帝的直接冲突。\n宋代的谏官不再属于门下省，独立了起来，不允许由宰相任用，而是由皇帝选拔有学问声望的年轻士子充任。这样一来谏官的职责从劝谏皇帝变成了纠绳宰相，当时称为清议。\n这一个改动其实极大的加强了皇帝的权利，如唐代的魏征，可以直接劝谏皇帝，但是宋代的谏官却没有了这样的职责，皇帝不再有专门的人来监督劝谏，而宰相不但要应付皇帝，还要应付台阁，太平时还好，但想要改革积弊如范仲淹的庆历新政，王安石的熙宁变法，那么与宰相如同水火的台谏官将成为巨大的阻碍。\n台谏制度在宋代发展过度的原因在于台谏官可以风闻奏事，即便说错也没有任何责任，但是作为纠绳的对象却要为自己辩驳，而且按照制度，需要主动谢罪求去，皇帝挽留才能继续留在宰相的位置上。不然就会被认为是恋栈权位，更加会受到清议的攻击。\n那么问题来了，如果皇帝不挽留宰相的辞职呢？也就是说如果有识趣的台谏官迎合皇帝的心意，扳倒政府首脑的宰相是完全可能，而且合乎制度，任何人都无法指责。发展到后来即便皇帝和宰相一条心（神宗与王安石），也无法抵抗朝野台谏官的压力。\n宋代地方政府 宋代地方政府因为中央过于集权，导致地方行政极差\ngraph LR A[路] --\u003e B[府、州、军、监] B --\u003e C[县] 路级地方长官称为监司官，总共有四类\n安抚使 安抚使的职责主要是负责地方的军事和治安，确保地方的稳定和安全。 处理地方上的紧急事务，包括叛乱、盗匪和其他突发事件。 负责地方上的行政和司法事务，有时也涉及地方上的财政管理。 转运使 负责地方财政、赋税的征收和物资的转运。 监督各州府的财政事务，确保赋税及时上缴中央。 管理粮食、物资的储备和运输，保障地方经济的稳定。 提举常平使 负责管理和监督常平仓，确保粮食储备的充足和稳定。 在丰年购粮入仓，灾年赈济灾民，平抑粮价，调节市场供需。 监督地方粮食的储备和分配，防止因天灾人祸造成的粮食危机。 提刑按察使 提刑按察使的主要职责是监察和督导地方司法事务，确保地方的法治和公正。 审查和处理地方上的重大刑事案件，防止冤假错案的发生。 巡视各地监狱，监督地方官员的司法活动。 其中最重要的是转运使，凭借漕运，将财富、兵力和物资都集中到中央，强干弱枝的政策下，遇到危机，地方不可能像唐代一样可以各自为战。\n宋代考试制度 除了少数的世家，门第传统几乎消失了。普通的贫穷农民子弟也可以中式，但是相比唐朝，这样的进士不免在政治方面缺少常识。\n没有了公卷制度，减少了考生和考官之间的私下串联，开始了糊名制度，防作弊。\n及第就能授官，而不像唐代那样到幕府先做僚吏（实习），缺少了足够的历练。\n宋代尝试过两种对考试制度的改革：\n以学校教育来代替考试，类似于汉代的太学 变更考试内容，不考诗词，只考经义（王安石的主张，但反而起到了反效果「本欲变学究为秀才，不料变秀才为学究」） 宋代税赋制度 大体承袭唐代的两税制和租庸调制度，但也承袭了五代十国混乱时期的积弊，那就是军队的花销直接向百姓征收。理论上军队的物资需要由政府拿百姓的税收出钱来购买，但实际上军队到哪里都是直接向百姓索要的，相当于百姓们重复在缴税。\n王安石的免役钱就是为了减轻百姓的负担，可以将力役均摊到所有人身上，避免一家一户承担不起直接破产，但执行上又变成了摊派。\n宋代兵役制度与国防弱点 承袭五代十国时期，当兵是贱业，脸上还要刺青，防止他们逃跑。\n禁军：按照身体素质挑选出来的精兵， 厢军：挑剩下的不满足要求的兵，平常在地方当苦力用 国都开封其实无险可守，但是靠隋炀帝京杭大运河可以方便的补充粮食，洛阳和长安当时已经是废墟，刚开国无法承担重建和运输上的损耗，宋太祖想等国家太平之后迁都，当然他并没有等到。\n宋代陷入了困局，宋太宗北伐失利，打不过辽国，不得不多养兵来防御，但是为了扭转五代十国武将的跋扈，提倡文治，武将士卒的地位不断受到打压，导致了养的兵越来越多（开国时禁军只有二十万，到了仁宗时期已经一百二十五万了），但战斗力却乏善可陈。\n要命的是宋代没有退伍这个说法，而且因为国策不是进攻而不消极防御，也就是说一个兵实际上是要在军队里老死的。但想想也知道，一个精兵有战力的年纪也就是那几年，其余时间不过是白耗国家钱粮而已。\n为了防止陈桥兵变再现，宋代中央不允许出现将领在士卒中间有太高的威信，不断的提防这种行为。将将领和普通士兵分开，军队年年调防，将领则呆在原址不动，使得难以出现拥兵自重的现象。\n宋朝缺少养马地，热察和河套分别在西夏和辽国手中，使得宋军一直缺少强大的骑兵部队。\n在这样的形势下，宋代唯一的出路就是主动出击，这样的消极防御只能使得国力空耗。\n明代 graph TD A[皇帝] --\u003e B[六部] A --\u003e C[都察院] A --\u003e D[通政司] A --\u003e E[大理院] 明代政府组织 明代中央政府 胡惟庸案之后，宰相被废除，君主专制大大增强。\n废除在宰相制度之后，六部与都察院（御史台演变而来）统称七卿，另外还有通政司（奏章传递与文书出纳）和大理院（刑法案件的最终裁判机构，相当于最高法院）。三法司指的就是都察院、通政司和大理院。\n五大都督府只负责出征时统兵，调兵、后勤和动员工作都由兵部负责。\n廷推：高级官员由七卿、九卿或再加上地方巡抚负责推举 廷议：各部不能单独决断的事情由七卿或九卿共同商议 廷鞫：三法司不能决断的刑狱案件，需要由七卿或九卿共同判决 六科给事中：相当于懂六部政务的言官，他们拥有科参的权力，审核皇帝下给六部的诏书，可以封驳。注意给事中虽然前面有各部的前缀，但是他们实际上是没有直属领导的，六部尚书不能直接指挥他们。\n明代内阁制度 内阁实际上就是皇帝的私人秘书处，通常在中极、建极、文华、武英、文渊和东阁办公，他们的头衔就是大学士，但是他们的品级不高，是在六部尚书（二品）之下的，只有五品，所以通常大学士都由尚书或经筵讲官（帝师）兼任。\n要知道皇帝的精力有限，难以一个人处理所有的国家大事，内阁作为秘书可以帮忙票拟，但也只是帮忙提建议，旨意还是要亲自下的。由于懒政或者与臣子的矛盾，明代不少皇帝拒绝上朝与臣子会面，于是和大臣之间又多了一个中间人：司礼监。\n明太祖废宰相继承了下来，禁止内官干政却没有被遵守，批红的权力被太监掌握，乃至于后来的太监刘瑾有立皇帝之称。\n在这种情况下，如果内阁与司礼监串联，票拟和批红的权力结合，就可以酝酿最大的权力集团，张居正和冯保就是这样的联合。不过他们的权力无疑都是皇权让渡出来的，如果皇帝打算抢夺，在大明皇权专制的制度下，这种联合也脆弱的可怜。崇祯上位后可以轻易罢黜家奴魏忠贤，阁臣的升降只在于皇帝的一封公开的诏命。事权由低品级官员或政治地位低下的太监家奴掌握，本身就是皇权对这种专权现象的防备。\n明代地方政府 黄梨洲的《明夷待访录》认为应当重立宰相，不由皇帝独揽大权。顾亭林的《日知录》认为天下太平必须大官少小官多，地方政治做好天下才能太平。\n钱穆先生对于地方行政效率着重于通讯上，认为汉代最佳，唐代其次。\n元明的省区制度 金代就有行省的说法，正式确定为制度在元代。\n现在的省都是地域的称谓，但古代是衙门的名字，例如三省，都省也是宰相的别称。\n元代行省长官实际上就是中央中书省分派的宰相，属于直接侵占地方政府的权力。\n行省会特意割裂军事重镇，将外围区域和军事城市分在不同的行省，使地方难以形成统一的反抗力量。\n明代没有了中书省，就设立了十三个承宣布政使司，实际上负责省级地方政务。\n地方监司官及督抚 藩司：承宣布政使司，分司称分守道 臬司：提刑按察使司，分司称分巡道 这种分司的监司官实在是太多，导致亲民官县令反而比上司少，管官的多，做事的少。这是一件怪事，也是常事，现在的体制单位或国企，多多少少有这种情况，注意那些走下坡路的国企，行政员工数量常超过技术员工。\n总督和巡抚不是常设官，属于临时由中央派驻，例如负责剿灭倭寇的胡宗宪就是浙直总督，他们通常带着都御史的职衔，属于都察院的御史编制。\n但是到了清代，总督和巡抚就变成了常设，地方行政又多了一级官员。\n明清的胥吏制度 官和吏在制度上的严格区分从元代开始，因为当时蒙古人为官，但不懂政务和文字，需要读书的汉人充当吏员处理政务，四等人制开始蔓延到官吏制度上。\n明代刚开始缺乏人才，官吏并没有严格的制度限制，但是成祖开始，就有了胥吏不能担任御史和考进士，这样一来就有了出身的枷锁，胥吏和官员严格分开，胥吏不入流的观念开始深入人心。\n钱穆先生在这段认为西方有阶级无流品，中国有流品无阶级，我觉得不妥，太绝对。诚然西方一向把血统认为是阶级，但往下到封爵领主，有很多都是在不断变化的，流品反映了实际的社会地位，有血统但破落的贵族不在少数。而中国不可能没有阶级，世家门阀以及皇家就是典型，世袭制度导致的权力固化在中国这样庞大的国家随处可见。\n明清官员选拔八股定制，选出的人才有很多只知道死读书，对政务一窍不通，所以极大依赖胥吏，绍兴师爷也就是在这种背景下出现的。\n政务代掌就意味着权力下放，清浊分流，胥吏没有出身即上升空间，这一群体上下其手为自己牟利可想而知，类比来说他们和太监相比除了没有净身，处境和心态在某种意义上出奇的相似。\n明代考试制度 进士与翰林院 明代由于考生众多，考试便分为好几次，县府试-\u0026gt;院试-\u0026gt;乡试-\u0026gt;会试-\u0026gt;殿试，前四级分别对应童生、秀才、举人和进士。要注意这里乡试不是我们现在的乡镇的意思，属于省级考试。\n翰林院刚开始是进士三年散馆读书才能进入，后来成为了惯例，只有进入翰林院才能当大官。考不上进士，没进入翰林院，任你本事再大也当不了大官。\n不过翰林院制度也不只是坏处，因为升迁前景明显，三年的散馆可以让官员在中央了解很多的政治知识，外放做主考官期间也可以见识地方的政治生态，对后期担任侍郎尚书等官员有较大的好处。\n八股文 应考的人多了就需要有制度来筛选人才，这样的筛选规矩本身出发点是好的，但渐渐的就会僵化。现在的高考也在于此，国家不是不想把所有的人才筛选出来，但这样某些特殊的人才必须要开特例，给走后门留下了空档，所以只能优先保证最根本的一点，公平！\n明代赋税制度 黄册：记录户口，每十年更正一次，一份给户部，三份给布政司、府和县 鱼鳞册：记录田亩，买卖一年一更 两种册籍制度都是为了抑制兼并和方便国家税收，但是可想而知这样需要极大的投入去维护，而且还需要不断防备和应对民间的舞弊方法。即便是现在大数据时代，维护全国的数据也不是一个简单的事情。\n这里没有叙述明代的户籍制度，是个失着，因为固定军户匠户，不得转移等制度极大影响赋税上缴情况。\n明代兵制 graph LR A[兵部] --调兵--\u003e B[军队] C[五军都督府] --统兵--\u003e B 明代卫所制度是唐代府兵制度的衍生，不需要缴纳赋税，平常自己屯田。这样的制度出发点是好的，因为这样看上去减少了军队对地方的侵扰，但是坏处也是极大的。这样的卫所只能应付太平时期的需要，久不演兵，军田被侵占，军户逃散，兵力分散，集合困难等等都会逐渐导致军力的崩坏。后来遇到紧急情况通常朝廷只能招募和训练新军，卫所军队不可靠已经是公认了。\n清代 制度与法术 这里的法术不是我们以为的玄幻概念，指的是具体的事情对应的处理手段。\n钱穆先生认为清代除了继承明代的一些政治制度外，其他的都是出于私心而制订的法术，体现了部族政权的局限性。\n清代部族政权 中国人将政治，着重在职责，政府应该干些什么，责任有哪些，尽责了没有等等，不像西方着重于主权的概念。这一点我没有办法理解，姑且把这里的主权认定为权利吧。\n中国的传统实际上是士人政权，因为皇帝不可能真的一个人治理国家，而清代将部族凌驾于士人之上，天然的掌握政治权利，使用、提防、打压士人，充满着矛盾性。\n清代部族政权下的政府 清代中央政府 清代政治，制度的意义少，法术的意义多，因为必须要出于私心偏袒满洲人。\n军机处 军机处属于皇帝的私人秘书，可以秘密商议政事，都是从内阁大臣中挑选，军机处可以直接向六部及其它机构下令，加强了皇帝的专制。\n明发上谕是历代的惯例，诏命层层公开下达。而清代通过军机处创造了寄信上谕，可以直接将皇帝的命令下发到官员个人，各级无权查阅，原本涉及军事机密才使用的方法，成为了专用的权术。\n六部尚书 清代六部长官共三十六人，满汉人数受到严格控制，必须对等或者维持满人的数量优势，主副长官都可以直接向皇帝上书，而皇帝的回复也是直接回复给个人，其他人都不清楚，完全不公开，这样一来权力分散且完全集中于皇帝本人。\n清代是没有给事中的，没有人有权力拒绝皇帝的诏命。\n清代明伦堂里的卧碑有三条铭文：\n生员不得言事 \u0026ndash; 言论自由 不得结盟结社 \u0026ndash; 结社自由 不得刊刻文字 \u0026ndash; 出版自由 简而言之，清代不许人讲话。\n清代地方政府 清代不允许地方官有真正的权柄，即便有了常设的总督和巡抚，一旦有军事行动，仍然需要中央派出经略大臣或者参赞大臣掌权。\n封疆大吏一般也不会由汉人出任，各个军事要地都有八旗军驻防，由满人节制，即便是汉人绿营，统领也得是满洲人。这充分体现了清代军事部族政权的内质。\n清代的各禁区 清代一直留存着一个退路，那就是东三省，关外作为禁地，禁止汉人出关。还有两个就是台湾和靠近蒙古的察哈尔和绥远，前者是因为郑成功的反抗力量，后者是隔绝蒙古和汉人的接触。最后一个是新疆，因为这个地方土地肥沃，清代政府出于私心，想作为满洲人的衣食之地，但实际上没有做有效的开发。\n清代考试制度 清代科举不在于选材，因为部族政权必须防范汉人夺权，但不给上升通道也不行，所以对于那些考中进士的人来说，补缺变得极为困难，无法获得重要的官位，拿出一角蛋糕作为安抚而已。\n清代统治策略 清代对蒙古人刻意拉拢，对西藏也非常重视，有趣的是因为朝鲜对明朝的忠心，受到了歧视。为了有效的羁縻蒙古和西藏，清代统治者信奉喇嘛教，蒙古人可以获封亲王。\n清代在羁縻汉人知识份子的同时，着重于讨好底层民众，永不加赋的口号以及雍正时期的改革政策，摊丁入亩实为一大创举，这里钱穆先生说清代制度无可称道，但是在雍正朝短暂的改革实在是一个亮点，不过乾隆朝又改回去了，时间短暂被忽略实属正常。\n民众的反抗运动 太平天国运动虽被称为民族革命，但根基在与宗教上，粗浅的社会主义没有孕生成熟的政治制度，官制混乱，大肆封王，内部斗争激烈。不过太平天国运动极大的打击了满清政权，迫使后者不得不让渡权力给汉人官员，为后期的变法运动提供了先决条件。\n变法与革命 康有为梁启超的戊戌变法是理想化的，没有注意到皇帝虽然专制，但满清权力的根基在与部族政权和八旗军。这不是改良主义可以打破的，如果要真正进行制度上的革新，就必须革命打破满人部族的武力钳制。孙中山先生看到了这一点，认为必须革命然后变法实现制度上的革新。\n钱穆先生在这里提到了革命不能矫枉过正，空喊着打倒一切的口号，必须要慎重考量，取其精华去其糟粕并经过时间的考验才能建立起合适的政治制度。\n","permalink":"https://blog.zjuyk.site/notes/read/%E4%B8%AD%E5%9B%BD%E5%8E%86%E4%BB%A3%E6%94%BF%E6%B2%BB%E5%BE%97%E5%A4%B1/","title":"中国历代政治得失"},{"content":" 换源\n不建议手动更改源列表，可以采用 termux-change-repo 这个官方工具 添加额外按键\n~/.termux/termux.properties # 设置文件 extra-keys = [['ESC','/','-','HOME','UP','END','PGUP'],['TAB','CTRL','ALT','LEFT','DOWN','RIGHT','PGDN']] # 加入这行 安装 Arch\nproot-distro 这个官方包非常好用 proot-distro install archlinux # 安装 proot-distro login archlinux # 进入 个性化\n主要是终端配色和命令提示符 直接 fish 一把梭，注意 fish_config 的 webui 依赖 python，所以需要先安装 python SSH\n注意 termux ssh 的监听端口默认为 8022 而不是 22 后台运行\n注意安卓会杀掉长期不活动的后台应用，小心滚到一半安卓把 termux 杀掉了，一定要后台锁定！！！ ","permalink":"https://blog.zjuyk.site/notes/termux-%E4%BD%BF%E7%94%A8%E8%AE%B0%E5%BD%95/","title":"Termux 使用记录"},{"content":" 四则运算 使用 $(()) 来计算，注意涉及到不同进制的四则运算可以这样\n# 5+0xa+0b1010 echo $((5+16#a+2#1010)) 判断参数是否为空 if [ -z \u0026quot;$1\u0026quot; ] \u0026amp;\u0026amp; [ -z \u0026quot;$2\u0026quot; ]; then echo \u0026quot;Usage: $0 \u0026lt;parameter1\u0026gt; \u0026lt;parameter2\u0026gt;\u0026quot; fi 生成数字列表 注意终点的数字是包含的\nfor i in $(seq 1 $END); do echo $i; done 判断文件不存在 注意这里 ] 前面的空格是不能省略的\nif [ ! -f \u0026quot;somefile\u0026quot; ]; then curl ... fi ","permalink":"https://blog.zjuyk.site/notes/bash/","title":"Bash 小技巧"},{"content":"之前在阅读书籍时常常发现这样的设计，一直不理解为什么要用这样的情节来推动剧情发展，不理智而且属于同归于尽的最后手段，可以说是自损一千伤敌八百。从对方的角度来看，如果对方完全不在乎你，他们甚至完全没有损伤，相反如果他们在乎你，这样的方式就是在伤害对你有感情的人。后来读了一些相关的心理学报告，发现这其实是一种心理上的疾病，学术上叫自虐型人格，伤害自己的目的是吸引对方的关注，威胁对方以便掌控双方的关系。\n","permalink":"https://blog.zjuyk.site/memos/%E4%B8%BA%E4%BB%80%E4%B9%88%E8%A6%81%E4%BC%A4%E5%AE%B3%E8%87%AA%E5%B7%B1%E6%9D%A5%E6%83%A9%E7%BD%9A%E5%88%AB%E4%BA%BA/","title":"为什么要伤害自己来惩罚别人？"},{"content":"美国的选举制度是赢家通吃，也就是说支持人数多的直接拿到一州的选票，即便全国的选票总人数是多于对方的，也不一定能获胜。联邦制国家的弊病，州与州之间相互独立，甚至可以拥有不同的法律，容易出现分裂的局面。\n","permalink":"https://blog.zjuyk.site/memos/%E7%BE%8E%E5%9B%BD%E9%80%89%E4%B8%BE%E5%88%B6%E5%BA%A6/","title":"美国选举制度"},{"content":"这是一部很特殊的改编作品，以前的电影都尝试塑造出一个反派角色，而徐克的这部电影里完全就没出现过马文才。\n如何让观众体会到不妥协的可贵呢？那就是塑造一个妥协后的角色，通过两个角色的对比让人仔细感知。\n是否应该向时代屈服，是否应该向现实妥协，这是个问题。\n如果我们发现无论如何也无法改变这个时代，那该怎么做？\n台词 你以为愤怒，就可以改变你和英台的命运？你以为不满，胡人就会忍让南边的汉人？要怨就怨你生错了地方，生在我们汉室没落的时候，人人都是那么的虚伪、迂腐和势利，要怨就怨你们太多想法，年少无知，以为你们不喜欢就可以改变周围的人，以为你们两个就可以改变这个时代。\n和尚：祝夫人，这个池里的鱼，我看你应该放生。 祝夫人：放他们出去，外面环境恶劣，适应不了，它们会死的。 和尚：变得不适应，因为它们原本来自江河大海，世间根本不应该有池塘。 祝夫人：说得挺潇洒，放得下就不应该出家做和尚了。 和尚：我身无一物，有什么放不下呢？你什么都有，还什么都想要，贪心到连人家的东西都想要，要的东西实在太多了。你关着他们，他们就像鱼一样，不敢见人。能放就放了吧，网开一面，功德无量。 ","permalink":"https://blog.zjuyk.site/notes/movie/%E6%A2%81%E7%A5%9D/","title":"梁祝"},{"content":"实在难说什么是真正的田园女权，她们或许算不上女权，只是自私者披上了一层政治外衣。\n在我看来真正的女权在于法国革命期间如圣女贞德，在于苏联社会主义建设期间如英雄女狙击手，她们积极投身与社会的生产活动中。\n田园女权是典型的权责不统一，她们实际上是在抢占两性所有人的利益。\n","permalink":"https://blog.zjuyk.site/memos/%E7%94%B0%E5%9B%AD%E5%A5%B3%E6%9D%83/","title":"田园女权与真女权"},{"content":"可惜之处是没有用德文，而使用英文，没有历史上希特勒歇斯底里的煽动性，这让人无法体会当时人们的狂热。当然主演本身演技非常好，把那种疯狂和野心勃勃的表现的淋漓尽致。\n这部影片不像其他的希特勒片子，讲述了希特勒政治理念的起源与当时的德国背景，不通过参考当时的资料，其实大家很难理解是什么让德国人选择了希特勒？当时的战争赔款以及犹太人的欺压，整个德国就是一个火药桶，差的就剩一根引线，而希特勒的纳粹种族主义就是这根引线。\n","permalink":"https://blog.zjuyk.site/notes/movie/%E6%81%B6%E9%AD%94%E5%B4%9B%E8%B5%B7/","title":"恶魔崛起"},{"content":"如果是对我有所关注的小伙伴，会发现我之前曾经写过一份 mpv 配置，这一份是在我速成了 lua 后的升级版，其中包含对 mpv 0.33 版本大改的对应修正。\n成果展示 配置目录结构如下：\n. ├── input.conf ├── mpv.conf ├── script-modules │ ├── file-browser-addons │ │ ├── addons.md │ │ ├── apache-browser.lua │ │ ├── favourites.lua │ │ ├── ftp-browser.lua │ │ ├── home-label.lua │ │ ├── ls.lua │ │ ├── m3u-browser.lua │ │ ├── powershell.lua │ │ └── README.md │ └── user-input-module.lua ├── script-opts │ ├── file_browser.conf │ ├── file-browser-keybinds.json │ ├── mpv_crop_script.conf │ └── osc.conf └── scripts ├── assrt.lua ├── autoload.lua ├── file-browser.lua ├── morden.lua ├── mpv_crop_script.lua ├── recent.lua └── user-input.lua 基本配置 这一部分在 ~/.config/mpv/mpv.conf 中设置\n硬件加速 在 archwiki 有很详细的介绍，这里就不赘叙了。配好 vaapi 之后在配置文件中加入\n# Hardware video acceleration vo=gpu hwdec=vaapi 截图设置 我有时候需要给视频快速截图，这是 mpv 内置的功能\n# Screenshot config screenshot-directory=\u0026quot;~/Pictures\u0026quot; screenshot-format=png screenshot-tag-colorspace=yes screenshot-high-bit-depth=yes screenshot-template=\u0026quot;%F-%{estimated-frame-number:%P}\u0026quot; 其他设置 mpv 的参数之多是出了名的，我只挑选了一些常用的设置，详细参考 官方文档\n# save last position save-position-on-quit # keep open when video ends keep-open # remove osd and border no-osd-bar no-border # remove osc for morden.lua osc=no # autoload subtitle with the same name (builtin) sub-auto=fuzzy 额外插件 播放历史 recent.lua\n注意默认触发按键是 \u0026ldquo;`\u0026rdquo; ，这和 console 冲突，我目前是使用 TAB 来触发\n文件列表 file-browser\n建议使用 user-input.lua 快速打开文件夹，你只需要按 alt+o 输入路径就能打开一个文件列表了！默认 autoload 是关闭的，这非常合理，毕竟我单独打开文件夹就不是想播放所有的文件\n更现代的播放栏 morden.lua\n链接里是我的修改版，我还有一些新的想法或许未来会去调整。你说它到底现代在哪？它使用了更现代的 material design 符号字体（x\n区域截图 mpv_crop_script.lua\n这个脚本使用了预计要被移除的 tick 事件，我会在之后改写。我虽然设置了全局截图，但那只能截取整个界面，有时候我想截取某个区域，这个脚本就派上了用场\n字幕搜索加载 assrt.lua\n这个脚本目前是从 assrt.net 来获取字幕的，电影相关的字幕很多，但是美剧之类的会差一些，我目前没什么需求，以后或许会考虑加点其他的源\n总结 这份配置需要记忆一定的快捷键，如果你更喜欢点点点，那可能不大适合你。\n参考链接 dotfiles mpv userscripts ","permalink":"https://blog.zjuyk.site/posts/mpv-config/","title":"配置一个顺手的 mpv 播放器"},{"content":"前些日子看到 firefox 流失近 5000 万用户量的新闻时悚然一惊，我之前也因为之前火狐长期不活动会卡死的 bug 跑到了 chrome 避难，没成想火狐已经到了这个地步。在长期不活动卡死的问题修复后我又回到了火狐，但正好遇上 90 版本 UI 大改，新的界面设计确实有点劝退人，好在火狐优点之一就是定制化，花了点心思弄了个合用的界面，下面就介绍一下我的具体操作步骤并附上我的插件配置。\n实现效果 没图没真相，还是先来张效果图\n注：我是平铺用户，没有最大化和最小化这样的操作习惯，如果你有的话不建议完全照搬我的配置\n实现流程 移除标题栏 标题栏是个可有可无的东西，作为平铺用户我并不愿意它挤占屏幕高度。\n在 kde 上你可以通过 window rules 匹配火狐的 window class 将窗口边框去除，如下添加 No titlebar and frame 属性：\n不过注意这样移除边框后就没窗口阴影了（我并不需要这个\n如果你和我一样是使用平铺窗口管理器的话，直接在对应的配置文件设置去除边框就行。另外还有使用平铺脚本的用户可以在对应的脚本管理界面勾选去除窗口边框，以 kwin-tiling 这个脚本举例：\n引用外部样式 众所周知，firefox 允许加载外部 css 来进行定制化。如果你自己 css 能力比较强而且时间充裕可以按照官方文档来自己定制。我并没有自己花太多时间去具体设计，而是选择在 Firefox-Elegant-NordTheme 基础上进行修改，我认为他的调色很符合我的审美。\n先在 about:config 允许火狐加载外部样式。\n将 toolkit.legacyUserProfileCustomizations.stylesheets 设为 true，然后按照上面那个项目的说明在火狐配置目录下新建 chrome 文件夹并放入 css 文件，目录树如下：\nchrome/ |- userChrome.css |- userContent.css |- userColors.css 自定义调整 移除标签栏 虽然我对那份配置的调色已算满意，但是默认的效果如下：\n可以明显发现标签栏的高度实在是有点过了，而且右边的留空极其难看，我本身是 treestyletab 用户，于是准备直接采用垂直标签栏。\n#titlebar #TabsToolbar { padding: 6px 0px 2px 6px !important; background: var(--base_color1) !important; visibility: collapse; } 在 #TabsToolbar 下加上 visibility: collapse; 便可以关掉水平标签。\n定制垂直标签栏 对于 treestyletab 推荐采用 proton 主题，然后建议采用和火狐主题对应的颜色，我的 css 如下：\n:root { --theme-colors-button_active: rgb(0, 221, 255); } #background { background: #2e3440 !important; } tab-item-substance { border: solid 1px #00000012; } tab-item.active .background { background-color: steelblue; } tab-item.active .label-content { font-weight: bold; font-size: 14px; } tab-item.active tab-twisty, tab-item.active .label-content, tab-item.active tab-counter { color: #fff; } tab-item:not(.active) .background { background-color: #3b4252; } tab-item:not(.active) .label { color: #ffff !important; } tab-item tab-item-substance:hover { background: #5A89B7 !important; } .newtab-button { background: #2e3440 !important; } 你可以根据 官方文档 来进一步定制\n额外小技巧 移除 treestyletab Header，也就是侧边栏上面那个切换头\n在 userChrome.css 加上\n/* only remove TST headers */ #sidebar-box[sidebarcommand=\u0026quot;treestyletab_piro_sakura_ne_jp-sidebar-action\u0026quot;] #sidebar-header { display: none; /* remove sidebar header */ border-color: var(--base_color2) !important; } 设置垂直标签栏悬浮显示，也就是默认贴边变小，鼠标悬浮弹出\n在 userChrome.css 加上\n/* The default sidebar width. */ #sidebar-box { overflow: hidden!important; position: relative!important; transition: all 100ms!important; min-width: 40px !important; max-width: 300px !important; } /* The sidebar width when hovered. */ #sidebar-box #sidebar,#sidebar-box:hover { transition: all 100ms!important; min-width: 300px !important; max-width: 300px !important; } 设置侧边栏分隔线宽度\n在 userChrome.css 加上\n.sidebar-splitter { /* display: none; remove sidebar split line */ min-width: 1px !important; max-width: 1px !important; border-color: var(--base_color2) !important; } 我的扩展 SwitchyOmega\n代理扩展，懂的都懂\nsaladict\n划词翻译插件，支持 PDF，读论文的福音\nPlasma Integration\n可以和 KDE 良好的整合在一起， 播放和下载通知与 KDE 嵌合\nTampermonkey\n不可或缺的浏览器插件，不管是用其他人的脚本还是自己写用处都极大\nEndless Google\n搜索引擎不再只有第一页，不用再手动点击下一页了\nGoogle Images direct link\n获取谷歌搜索的图片直链\nOctotree\n在侧边栏显示 github 仓库目录 QR Code\n生成和识别二维码\nOneTab\n暂时保存标签组，适合干活干到一半临时有事的情况\nMidnight Lizard\n网页配色调整插件，我习惯给网页调配上统一的 nord 配色 Tabliss\n用来提供新标签页的插件，在我上面的截图有体现\nUser-Agent Switcher and Manager\n有时候网站会限制 UA，所以需要用这个插件来切换\nTree Style Tab\n这个上面已经重点介绍过了，用来展示树形标签页的\nuBlock Origin\n广告拦截插件，就我的体验上来说还行\n特殊设置 硬件加速 具体参见 Arch wiki\n使用 QT 文件对话框 先在 about:config 将 widget.use-xdg-desktop-portal 调成 true，再安装 xdg-desktop-portal{,-kde} 这两个包即可，但注意这会导致火狐一直认为自己不是默认浏览器，所以自己决定。\n注意点 目前网页截图在 wayland 下还无法复制\n目前 91.02 stable 版本全局菜单还不支持，需要打 patch，可以安装 firefox-appmenu 来临时解决该问题\n火狐没有传递当前输入光标位置给 fcitx5 所以开启单行模式会停留在预编辑区首部\n而 chrome 是支持的\n参考和我的配置 我的配置 Firefox-Elegant-NordTheme TreeStyleTab wiki Arch wiki ","permalink":"https://blog.zjuyk.site/posts/custom-firefox/","title":"我的 firefox 配置"},{"content":"在 wps-office 因为分发许可的原因移出 archlinuxcn 源之后，自建一个 arch repo 的需求就越来越强烈，我之前也搞过 github action 来打 archlinux 的包，但并不能完全满足我的需求，于是我准备大刀阔斧改上一波，并写点脚本辅助自动化打包流程。\n这篇文章可能会有点长，因为我打算把我的踩坑过程也写进去，没时间看的可以直接到文末我的仓库链接查看具体实现。\n1 需求分析 需求 预计解决方案 定时打包 github action cron 打完的时候通知 telegram bot api 能够打有依赖在 AUR 的包 aur helper yay 打自己修改过的 PKGBUILD 保证目录形式以兼容 aurpublish，以文件夹的形式上传 有一个 web 页面提供单独的下载，因为用户不一定都愿意导入你的 key 目前选用 keybase 2 具体思路 首先想到的当然是依云写的 lilac 啦，但我看了看，貌似远远高于我的需求，我只是想打几个类似于 wps-office 这样的包应该用 github action 就能搞定，不过完全可以借鉴思路。\n这里顺便提一下两位群友的方案：GitHub Actions 打造 AUR 打包下载一条龙服务 和 利用 GitHub Actions 编译 AUR 包并建立自己的软件源，我接下来的操作和他们有很大的相似之处，只有一些具体细节并不相同。\n2.1 解决 docker 权限问题 makepkg 和 yay 因为安全原因不允许在 root 下运行。这是有点糟心的，docker 默认不就是 root 么，群友 DuckSoft 提供了一个 dirty hack 来让 makepkg 在 root 下运行\nsed -i '/E_ROOT/d' /usr/bin/makepkg 这下好了，可以打没有依赖在 AUR 的包了，就像下面三行就完事了\n# entrypoint.sh git clone \u0026quot;https://aur.archlinux.org/$1.git\u0026quot; cd \u0026quot;$1\u0026quot; makepkg -sf --noconfirm 但是 yay 还是不能在 root 下运行，于是乎想到新建一个没有密码的普通用户然后通过解析 .SRCINFO 来递归安装依赖，这是 edlanglois/pkgbuild-action 的做法。\n# Extract dependencies from .SRCINFO (depends or depends_x86_64) and install mapfile -t PKGDEPS \u0026lt; \\ \u0026lt;(sed -n -e 's/^[[:space:]]*\\(make\\)\\?depends\\(_x86_64\\)\\? = \\([[:alnum:][:punct:]]*\\)[[:space:]]*$/\\3/p' .SRCINFO) sudo -H -u builder yay --sync --noconfirm \u0026quot;${PKGDEPS[@]}\u0026quot; 我具体看了看他的实现，感觉做法过于复杂了，而且在 root 下采用 sudo -u 还要额外考虑传递环境变量的问题。难道就没有一个内置 yay 并默认是普通用户的 docker 上游吗？\n嗯，终于等到你 martynas/archlinux，它内置了 yay 用来构建 AUR 包并且有个默认的名为 build 的 passwordless 用户，事情瞬间变得简单多了，这里是我写的 pkgbuild-aur。\n2.2 同时管理自己修改过的 PKGBUILD 和 AUR 为了能够同时方便的使用 aurpublish 来管理我自己手里的 AUR 包，我采用了以下的目录要求\n# there should be a subdirectory with the same name of pkgname to satisfy `aurpublish` if [[ ! -d $pkgbuild_dir ]]; then echo \u0026quot;$pkgbuild_dir should be a directory.\u0026quot; exit 1 fi if [[ ! -e $pkgbuild_dir/PKGBUILD ]]; then echo \u0026quot;$pkgbuild_dir does not contain a PKGBUILD file.\u0026quot; exit 1 fi if [[ ! -e $pkgbuild_dir/.SRCINFO ]]; then echo \u0026quot;$pkgbuild_dir does not contain a .SRCINFO file.\u0026quot; exit 1 fi 需要在项目根目录下放置与包同名的文件夹，同时里面要包含 PKGBUILD 和 .SRCINFO，后者是 AUR web 的必须要求同时也用来解析依赖，可以通过 makepkg --printsrcinfo \u0026gt; .SRCINFO 来生成。\n同时要注意最好先改一下目录权限，据说 /github/workspace 默认 owner 是 root，所以推荐如下改动。\n# fix directory permissions sudo chown -R build \u0026quot;$pkgbuild_dir\u0026quot; sudo chown -R build /github/home 2.3 定时打包以及完成之后通知我 首先 github action 就支持 cron 定时，详见文档，作为一名良心资本家，我允许它周末休息，遵循 996 每天只干两次活。\non: push: branches: - master schedule: - cron: '0 9,21 * * 1-6' # build pkgs via 996 rules (；′⌒`) workflow_dispatch: # allow manual trigger 当然我开启了每次 push 运行和手动开启运行 CI 以便随时压榨（\ngithub action 失败的话会有邮件提醒，但为了维护自己的个人源在 build 成功的时候我也需要提醒。这时候 oldherl 提醒了我，为什么不试试 telegram bot api 呢？这着实是个好主意，我翻查了一下文档，究极简单，以后提醒不用邮件了，全改用 telegram，顺便推荐比较完善的 telegram-action。\n2.4 打包之后的存放位置 首选当然是 github release 啦，我预想是将 github release 当成一个 archive repo，里面存放着前几个版本的包。Arch 是滚动更新的，自己的个人源自然只放最新的版本包，我目前选用的是 keybase，因为它提供 250 G 免费直链网盘和一个免费二级域名（这不就巧了么，正好符合需求），于是我写了个 repo-helper 方便使用\n#!/usr/bin/bash # Usage: # ./repo-helper add \u0026lt;pkg_file_name\u0026gt; # add package # ./repo-helper remove \u0026lt;pkgname\u0026gt; # remove package # ./repo-helper list # list packages in repo # ./repo-helper pull # download packages from personal github release repo_name=\u0026quot;zjuyk\u0026quot; repo_ext=\u0026quot;.db.tar.gz\u0026quot; repo_dir=\u0026quot;/run/user/1000/keybase/kbfs/public/$repo_name/x86_64/\u0026quot; github_release_url=\u0026quot;https://api.github.com/repos/zjuyk/repo/releases/latest\u0026quot; db_path=$repo_dir$repo_name$repo_ext case $1 in pull) echo \u0026quot;Pull update from github release...\u0026quot; curl -s $github_release_url | \\ grep browser_download_url | \\ cut -d : -f 2,3 | \\ tr -d \\\u0026quot; | \\ xargs -n 1 curl -O -sSL -o $repo_dir -C - repo-add $db_path $repo_dir/*.zst --remove --sign --quiet index-generator --human $repo_dir echo \u0026quot;Done!\u0026quot; ;; add) echo \u0026quot;Add $2 to $repo_name...\u0026quot; mv -n ./$2 $repo_dir repo-add $db_path $repo_dir/$2 --remove --sign --quiet index-generator --human $repo_dir echo \u0026quot;Done!\u0026quot; ;; remove) echo \u0026quot;Remove $2 from $repo_name...\u0026quot; repo-remove $db_path $2 index-generator --human $repo_dir echo \u0026quot;Done!\u0026quot; ;; list) ls $repo_dir/*.zst | sed 's/-x86_64.pkg.tar.zst//g' | awk -F \u0026quot;/\u0026quot; '{print $NF}' ;; *) echo \u0026quot;args should be one of 'pull', 'add', 'remove' and 'list'!\u0026quot; esac 脚本中的 index-generator 是 兔兔 他们在几年前用 Jinja 写的，我打算有时间的话用 rust 的 tera 库重构一个。\n2.5 维护更新 说到检查版本首先想到的就是依云的 nvchecker 写个配置文件跑一跑，然后改一下包信息就完事了\n# bump pkg version in PKGBUILD # update checksums $ updpkgsums # update .SRCINFO $ makepkg --printsrcinfo \u0026gt; .SRCINFO 3 不足与改进计划 因为 keybase 非常注重安全性，所以我没办法直接从 github 将产物推到 keybase 上（也许可以，但也会十分复杂，需要专用的工具）。这导致我目前只能半自动化，需要手动 pull release 到运行着 keybase 的机器上同步。虽然可以定时运行，但 keybase 本身的运行会占用一定的资源，我正在考虑是否直接塞到 github repo 里然后开 github pages（属于对 github 的究极滥用，实际上我不会考虑这么做）\nArchLinux 除了 x86_64 架构外还额外划分了 any，这个我目前没有考虑，因为目前我并没有维护 any 的包，或许以后会加入\n同步是需要消耗流量的，出于未来保留若干版本包用于回滚的考虑，我目前是用 api 把所有的 release 全下下来了，没有做筛选，如果代理流量不够的话建议开一个 cloudflare worker 做反代\n4 链接 repo keybase pkgbuild-aur ","permalink":"https://blog.zjuyk.site/posts/personal-archlinux-repo/","title":"自建 Arch Linux 个人源"},{"content":"一直觉得 mac 的截图效果非常好看，之前在 ArchLinux 上用 imagemagick 撸了一个类似的，最近在体验 windows 11，顺便也移植了一份。\n1 实现效果 添加阴影 添加圆角 添加水印 添加边框 2 实现流程 2.1 剪切板操作 想要对剪切板图片进行修改首先就要能获取剪切板的图片和向剪切板发送图片，在运行 Xorg 的 Linux 上可以很方便地使用 xclip 来操作\n# get image from clipboard xclip -selection clipboard -t image/png -o \u0026gt; /tmp/src.webp # send image to clipboard xclip -selection clipboard -t image/png -i /tmp/des.webp 但在 windows 11 上该如何获取呢？我先是查询了 powershell 的相关 API，然后我发现有现成的 Get-Clipboard 和 Set-Clipboard 两个模块函数可用\n# get image from clipboard $img = Get-Clipboard -Format Image 但很可惜我发现 Get-Content path/to/file | Set-Clipboard 对文本是可以的，但是对图片却会乱码，在网上查询也没找到相关解释，于是我换了一种设置剪切板的方法\n# send result to clipboard Add-Type -Assembly System.Windows.Forms Add-Type -Assembly System.Drawing $img = [Drawing.Image]::FromFile($result_image) [Windows.Forms.Clipboard]::SetImage($img) 我也查询了一下 python 基于 PIL 和 win32clipboard 的操作方法\nfrom PIL import ImageGrab from io import BytesIO import win32clipboard # get image from clipboard image = ImageGrab.grabclipboard() # send image to clipboard output = BytesIO() border_image.convert('RGB').save(output, 'BMP') data = output.getvalue()[14:] output.close() win32clipboard.OpenClipboard() win32clipboard.EmptyClipboard() win32clipboard.SetClipboardData(win32clipboard.CF_DIB, data) win32clipboard.CloseClipboard() 2.2 图片处理 2.2.1 imagemagick 对于图片的处理首先想到的就是 imagemagick 这个工具了，在 Linux 使用非常简单\n先加圆角，我这里使用的圆角弧度为 8\nconvert /tmp/src.webp \\ \\( +clone -alpha extract \\ -draw 'fill black polygon 0,0 0,8 8,0 fill white circle 8,8 8,0' \\ \\( +clone -flip \\) -compose Multiply -composite \\ \\( +clone -flop \\) -compose Multiply -composite \\ \\) -alpha off -compose CopyOpacity -composite /tmp/output.webp 再加阴影和边框，我设置的边框为 20px，这是为了配合我的水印图片\nconvert /tmp/output.webp -bordercolor none -border 20 \\( +clone -background black -shadow 100x15+0+0 \\) \\ +swap -background transparent -layers merge +repage /tmp/des.webp 再加上自己的水印\ncomposite -gravity SouthEast ~/.local/bin/watermark.webp /tmp/des.webp /tmp/des.webp 但我在 powershell 上尝试使用 imagemagick 的时候发现参数识别出现了问题，+clone 没认出来，还好 win 11 窗口自带阴影和圆角，那我只要打一下水印就好了\n$cmd = \u0026quot;composite -gravity SouthEast $watermark $source_image $result_image\u0026quot; Invoke-Expression $cmd 在 scoop 安装 imagemagick 的时候我发现还引入了 ffmpeg 这个依赖包，我虽然也经常用它，但毕竟还是有点大，于是我尝试用 PIL 来处理图片。\n先加一下边框，我是 nord 配色的忠实用户，所以选用了 \u0026ldquo;#2E3440\u0026rdquo; 同时也是我桌面壁纸的主要颜色，这是我用 k-means 算法写的一个提取图片主要颜色的脚本。\n# add border border = 20 # border size border_color = \u0026quot;#2E3440\u0026quot; # border color border_image = Image.new(\u0026quot;RGBA\u0026quot;, (image.width + border, image.height + border), border_color) align = int(border / 2) border_image.paste(image, (align, align)) 然后添加水印\n# add watermark watermark = Image.open(r\u0026quot;C:\\Users\\zjuyk\\Desktop\\watermark.webp\u0026quot;) watermark = watermark.convert(\u0026quot;RGBA\u0026quot;) border_image.paste(watermark, (border_image.width - watermark.width, border_image.height - watermark.height), watermark) 在尝试添加圆角的时候我发现，锯齿非常严重，严重影响美观度，所以没有放进脚本里，阴影也是一样，我打算全用 windows 11 自带的窗口阴影和圆角。如果非要自己实现的话，我建议准备几张 mask image 来做图片遮罩。\n3 实现效果 imagemagick - Linux #!/bin/bash -e # Get the picture from flameshot flameshot gui -r \u0026gt; /tmp/src.webp wait $! # Get the picture from scrot # scrot --select \u0026quot;/tmp/src.webp\u0026quot; # wait $! # xclip -selection clipboard -t image/png -o \u0026gt; /tmp/src.webp # add shadow, round corner, border and watermark convert /tmp/src.webp \\ \\( +clone -alpha extract \\ -draw 'fill black polygon 0,0 0,8 8,0 fill white circle 8,8 8,0' \\ \\( +clone -flip \\) -compose Multiply -composite \\ \\( +clone -flop \\) -compose Multiply -composite \\ \\) -alpha off -compose CopyOpacity -composite /tmp/output.webp convert /tmp/output.webp -bordercolor none -border 20 \\( +clone -background black -shadow 100x15+0+0 \\) \\ +swap -background transparent -layers merge +repage /tmp/des.webp composite -gravity SouthEast ~/.local/bin/watermark.webp /tmp/des.webp /tmp/des.webp # Send the picture to clipboard xclip -selection clipboard -t image/png -i /tmp/des.webp # remove the left pictures rm /tmp/src.webp /tmp/des.webp /tmp/output.webp imagemagick - PowerShell # Please add execution policy # Set-ExecutionPolicy Unrestricted # get image from clipboard $img = Get-Clipboard -Format Image if ($img -eq $null) { Write-Host \u0026quot;Clipboard contains no image.\u0026quot; Exit } # save it to desktop $img.Save(\u0026quot;C:\\Users\\zjuyk\\Desktop\\src.webp\u0026quot;) # add watermark $watermark = \u0026quot;C:\\Users\\zjuyk\\Desktop\\watermark.webp\u0026quot; $source_image = \u0026quot;C:\\Users\\zjuyk\\Desktop\\src.webp\u0026quot; $result_image = \u0026quot;C:\\Users\\zjuyk\\Desktop\\res.webp\u0026quot; $cmd = \u0026quot;composite -gravity SouthEast $watermark $source_image $result_image\u0026quot; Invoke-Expression $cmd # send result to clipboard Add-Type -Assembly System.Windows.Forms Add-Type -Assembly System.Drawing $img = [Drawing.Image]::FromFile($result_image) [Windows.Forms.Clipboard]::SetImage($img) # remove temp files (do it manually) Remove-Item \u0026quot;C:\\Users\\zjuyk\\Desktop\\src.webp\u0026quot; -Force # Remove-Item \u0026quot;C:\\Users\\zjuyk\\Desktop\\res.webp\u0026quot; -Force PIL - Python from PIL import ImageGrab, Image from io import BytesIO import win32clipboard if __name__ == \u0026quot;__main__\u0026quot;: # get image from clipboard image = ImageGrab.grabclipboard() # add border border = 20 # border size border_color = \u0026quot;#2E3440\u0026quot; # border color border_image = Image.new(\u0026quot;RGBA\u0026quot;, (image.width + border, image.height + border), border_color) align = int(border / 2) border_image.paste(image, (align, align)) # add watermark watermark = Image.open(r\u0026quot;C:\\Users\\zjuyk\\Desktop\\watermark.webp\u0026quot;) watermark = watermark.convert(\u0026quot;RGBA\u0026quot;) border_image.paste(watermark, (border_image.width - watermark.width, border_image.height - watermark.height), watermark) # send image to clipboard output = BytesIO() border_image.convert('RGB').save(output, 'BMP') data = output.getvalue()[14:] output.close() win32clipboard.OpenClipboard() win32clipboard.EmptyClipboard() win32clipboard.SetClipboardData(win32clipboard.CF_DIB, data) win32clipboard.CloseClipboard() 4 参考 PowerShell API win32clipboard Imagemagick PIL ","permalink":"https://blog.zjuyk.site/posts/clipboard-image-customize/","title":"对剪切板图片添加额外效果"},{"content":" pip pip 是 python 的包管理器，属于勉强能用的水平，如果你在 Linux 上，不建议用它，尤其是不要做 sudo pip 这样的操作，容易和本身的包管理器打架。\n设置国内镜像 临时使用，以阿里云举例\npip install -i https://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com 永久配置\n# Linux mkdir -p ~/.pip echo \u0026quot;\u0026quot;\u0026quot; [global] index-url = http://mirrors.aliyun.com/pypi/simple/ [install] trusted-host=mirrors.aliyun.com \u0026quot;\u0026quot;\u0026quot; \u0026gt; ~/.pip/pip.conf # Windows: C:\\Users\\username\\pip\\pip.ini [global] index-url = http://mirrors.aliyun.com/pypi/simple/ [install] trusted-host=mirrors.aliyun.com venv 写大工程要隔离这是必须要注意的操作，虚拟环境保证了版本的正常维护\npython -m venv /path/to/new/virtual/environment 注意点 in 如果涉及的数据很多，一定要用 set，因为 set 的 in 操作是 O(1) 的，用 list 是 O(n) 速度太慢\npow 注意内置的 pow 和 math 库里的 pow 接收的参数是不一样的，前者可以接受 3 个参数\n小片段功能代码 生成固定长度随机字符串密码\nimport random import string def random_str(length=8): return \u0026quot;\u0026quot;.join(random.sample(string.ascii_letters, length)) from random import Random def random_str(randomlength=8): str = '' chars = 'AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz0123456789' length = len(chars) - 1 random = Random() for i in range(randomlength): str+=chars[random.randint(0, length)] return str 二进制字符串转普通字符串\n每 8 个分成一组，用 int 转 10 进制，再用 chr 转为 ascii 字符\ns=\u0026quot;0110001101111001\u0026quot; ans=\u0026quot;\u0026quot; for i in range(0,len(s)//8): x = s[i*8:i*8+8] ans+=chr(int(x,2)) 利用 binascii，先用 int 转为 10 进制，然后转为 16 进制字符串，调用 unhexlify 执行翻译\nimport binascii s=\u0026quot;0110001101111001\u0026quot; ans=binascii.unhexlify('%x'%int(s,2)).decode() 符号数与无符号数转换\n无符号 -\u0026gt; 有符号\nimport ctypes ctypes.c_int64(17039472050328044269).value 有符号 -\u0026gt; 无符号\nimport ctypes ctypes.c_uint64(-1407272023381507347).value 捕捉输入的 Ctrl+C\n很邪恶的屏蔽用户输入 Ctrl+C 的做法\nimport signal def signal_handler(signum,data): if signum == signal.SIGINT: print(\u0026quot;Ctrl+C is pressed!\u0026quot;) # raise KeyboardInterrupt if __name__ == '__main__': signal.signal(signal.SIGINT, signal_handler) sleep(666) AES 加密字符串\n加密\nplaintext = \u0026quot;hello world\u0026quot; import pyaes,base64 aes = pyaes.AESModeOfOperationCTR(b\u0026quot;This_key_for_demo_purposes_only!\u0026quot;) encrypted_text = base64.b64encode(aes.encrypt(plaintext.encode(\u0026quot;utf-8\u0026quot;))) print(encrypted_text) # ipkEJevbnsfbEm4= 解密\nencrypted_text = \u0026quot;ipkEJevbnsfbEm4=\u0026quot; import pyaes, base64 aes = pyaes.AESModeOfOperationCTR(b\u0026quot;This_key_for_demo_purposes_only!\u0026quot;) plaintext = aes.decrypt(base64.b64decode(encrypted_text)).decode() print(plaintext) # hello world ","permalink":"https://blog.zjuyk.site/notes/python/","title":"Python 杂记"},{"content":"之前看到了一份 i3wm nord 配色的主题展示图，瞬间激起我重新捏一套 i3 配置的欲望，本文主要阐述我在 gentoo 上配置一份基于 nord 配色的 i3 主题的思路和流程。\n1 我的环境 Gentoo linux\ni3-gaps\nrofi\npolybar\nalacritty\nfeh\ni3lock-color\npicom\n我的配置环境是 gentoo linux，所以会增加一些开启 use 的额外操作，其他发行版可忽略。\n2 具体配置 2.1 安装基本软件 $ sudo emerge -aq i3-gaps i3-gaps 可以在窗口间提供间隔，虽然会挤占一部分屏幕空间，但是非常美观。\n$ sudo emerge -aq feh feh 是一个简单的图片查看器和壁纸设置软件。\n$ sudo emerge -aq polybar polybar 是一个优秀的 bar 组件，支持 font awesome、nerd font 和 weather icons 等多种字体，但注意它不支持图片，所以无法提供任务栏这样的 module。\n它最突出的优点就是将显示内容模块化，例如显示网速和显示时间等模块，还支持鼠标点击和滚轮操作，这是 i3bar 等没有的。\n建议开启以下 use\nalsa 或者 pulseaudio\n提供声音模块支持，以便显示和切换当前音量\ni3wm\n提供 i3wm 模块支持，以便显示 i3wm 的 workspace 并支持切换\nipc\n提供 polybar 内建的命令支持，包括显示和隐藏 polybar\nnetwork\n提供网络模块支持，用来显示网速\nmpd\n这个和 ncmpcpp 配套，用来显示和切换当前音乐\n$ sudo emerge -aq rofi rofi 是一个很优秀的应用选择器，比 dmenu 多出不少功能，例如 ssh 和切换当前活动窗口等。\n建议开启 drun 和 windowmode 这两个 use，前者可以支持显示拥有 desktop 文件的应用，后者能让 rofi 像个正常窗口一样运行，这对于后面利用 rofi 做一个 powermenu 什么的很有用。\n$ sudo emerge -aq alacritty tilda alacritty 支持 GPU 加速渲染，轻量且配置简洁，配置文件支持 live reload。tilda 是一款纯 gtk 下拉终端，不会引入过多依赖。\n$ sudo emerge -aq i3lock-color i3lock-color 是 i3lock 的一个 fork，它增加了诸如显示时间和模糊背景的支持。\n$ sudo emerge -aq picom picom 是混成器，用来提供透明、阴影和窗口圆角等特效，我没有选择带有模糊特效的分支，因为 kawase blur 性能有些差，想再等等看。\n2.2 具体配置 以下主要提供几个选择方案或者直接叙述我的方案\n2.2.1 如何进入 i3wm 进入 i3 一般有两种方案，其一是 startx，其二是使用 dm。\n我推荐后者，startx 需要额外考虑一些环境变量问题。例如 export XDG_SESSION_TYPE=\u0026quot;x11\u0026quot; 来告诉某些应用这是 xorg 会话。\n针对于 gentoo 用户还可能需要考虑 eval \u0026quot;$(dbus-launch --sh-syntax --exit-with-session)\u0026quot; 来正常启动 dbus。\n$ sudo emerge -aq sddm $ systemctl enable sddm 推荐使用 sddm-theme-chili 效果如下图\n2.2.2 修改 i3 配置文件 注: Arch linux 的默认配置文件 dmenu 那行有两个示例，所以会冲突，自己修改一下就好了，gentoo 的默认示例是正常的。\n配置文件在 ~/.config/i3/config 先设置一下 mod 键，我这里 Mod4 是指 meta，也就是键盘上有 windows logo 的那个键\nset $mod Mod4 再设置一下窗口标题栏的字体，我无所谓，保持默认，因为我会把标题栏都去掉\nfont pango:monospace 8 把 nm-applet 开起来，用于显示网络托盘图标，需要安装 gnome-extra/nm-applet\nexec --no-startup-id nm-applet 我使用的是 pulseaudio，所以我使用 pactl 来调节音量\nbindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +5% bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -5% bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle bindsym XF86AudioMicMute exec --no-startup-id pactl set-source-mute @DEFAULT_SOURCE@ toggle 我使用 xbacklight 来调节亮度，你也可以选择安装其他的\nbindsym XF86MonBrightnessUp exec xbacklight -inc 5 bindsym XF86MonBrightnessDown exec xbacklight -dec 5 设置快捷键开启 alacritty\nbindsym $mod+Return exec alacritty 设置快捷键开启 rofi\nbindsym $mod+d exec --no-startup-id rofi -show drun 设置一下颜色主题，这个比较重要，建议根据自己的配色来微调。 依次是边框颜色、背景色、文本颜色、焦点指示顔色和子窗口的边框颜色。\n# Theme colors # \u0026lt;colorclass\u0026gt; \u0026lt;border\u0026gt; \u0026lt;background\u0026gt; \u0026lt;text\u0026gt; \u0026lt;indicator\u0026gt; \u0026lt;child_border\u0026gt; client.focused #84FFFF #5E81AC #E5E9F0 #E5E9F0 #ECECEC client.focused_inactive #4C556A #84FFFF #2E3440 #ECECEC #ECECEC client.unfocused #84FFFF #84FFFF #171717 #ECECEC #ECECEC client.urgent #BF616A #BF616A #ffffff #268BD2 client.placeholder #84FFFF #909090 #FFFFFF #268BD2 Hint： 可以采用在线的编辑预览 i3-configurator\n把 bar 那几行注释掉，因为它是启用 i3bar，而我是使用 polybar 的。\n#bar { # status_command i3status #} 设置窗口参数\nfor_window [class=\u0026quot;^.*\u0026quot;] border pixel 2 # 把所有的窗口边框设为 2 像素 new_window 1pixel # 去掉标题栏 设置 gaps，参数根据自己屏幕尺寸微调就行\ngaps inner 6 gaps outer 4 设置一些需要自启的软件，下面是我的示例\nexec --no-startup-id picom --experimental-backends -b # 启动 picom exec_always --no-startup-id numlockx on # 开启小键盘 exec_always feh --bg-scale \u0026quot;path_to_wallpaper\u0026quot; # 设置壁纸 exec --no-startup-id dunst \u0026amp; # 桌面通知 exec --no-startup-id copyq \u0026amp; # 剪切板管理器 exec --no-startup-id fcitx5 \u0026amp; # fcitx5 输入法 exec_always --no-startup-id $HOME/.config/polybar/launch.sh # 开启 polybar 额外设置一些快捷键\nbindsym $mod+Shift+s exec --no-startup-id flameshot gui # 设置火焰截图 bindsym $mod+p exec --no-startup-id polybar-msg cmd toggle # 设置快捷键来显示隐藏 polybar bindsym $mod+q exec --no-startup-id \u0026quot;$HOME/.config/rofi/powermenu.sh\u0026quot; # 启用基于 rofi 的 powermenu 其他没有提到的设置我都是默认\n2.2.3 配置其他的组件 dunst\n桌面通知管理器，用到它的时候其实很少，我就简单的配置了一下 ~/.config/dunst/dunstrc\n[global] monitor = 0 follow = mouse geometry = \u0026quot;320x6-30+60\u0026quot; indicate_hidden = yes shrink = no notification_height = 15 separator_height = 1 padding = 10 horizontal_padding = 10 frame_width = 2 frame_color = \u0026quot;#aaaaaa\u0026quot; separator_color = frame sort = yes idle_threshold = 120 font = Noto Sans Mono SC 14 line_height = 0 markup = full format = \u0026quot;\u0026lt;span\u0026gt;\u0026lt;b\u0026gt;%s %p\u0026lt;/b\u0026gt;\u0026lt;/span\u0026gt;\\n%b\u0026quot; alignment = left show_age_threshold = 60 word_wrap = yes ellipsize = middle ignore_newline = no stack_duplicates = true hide_duplicate_count = false show_indicators = yes icon_position = left max_icon_size = 48 icon_path = /usr/share/icons/Arc/status/48/:/usr/share/icons/Arc/devices/48/:/usr/share/icons/Papirus/48x48/apps/ sticky_history = yes history_length = 20 always_run_script = true startup_notification = false verbosity = mesg corner_radius = 5 force_xinerama = false mouse_left_click = do_action mouse_middle_click = close_all mouse_right_click = close_current [shortcuts] #close = ctrl+space #history = ctrl+shift+space #context = ctrl+shift+period [urgency_low] # IMPORTANT: colors have to be defined in quotation marks. # Otherwise the '#' and following would be interpreted as a comment. background=\u0026quot;#2B2F36\u0026quot; foreground=\u0026quot;#b6a49b\u0026quot; timeout = 5 [urgency_normal] background=\u0026quot;#2B2F36\u0026quot; foreground=\u0026quot;#b6a49b\u0026quot; timeout = 10 [urgency_critical] background=\u0026quot;#2B2F36\u0026quot; foreground=\u0026quot;#b6a49b\u0026quot; timeout = 0 效果如下 picom\n混成器是美化 i3 的重要组件，~/.config/picom/picom.conf\n首先我们把一些基本参数设置好\nexperimental-backends = true; # 实验特性打开，如果你下一行选了 glx 的话(在 i3 config 里依然要加上) backend = \u0026quot;glx\u0026quot;; glx-no-stencil = true; glx-no-rebind-pixmap = true; glx-copy-from-front = false; use-damage = false; # 解决息屏再亮屏，屏幕闪烁问题，会增加功耗 vsync = true; # 垂直同步 其次我们设置阴影(虽然我现在没有打开) 注: 圆角矩形窗口不建议开黑色阴影，会出现毛刺\nshadow = false; shadow-exclude = [ \u0026quot;name = 'Notification'\u0026quot;, \u0026quot;name = 'MPV'\u0026quot;, \u0026quot;name *= 'Telegram'\u0026quot;, \u0026quot;name *= 'picom'\u0026quot;, \u0026quot;name *= 'firefox'\u0026quot;, \u0026quot;name = 'polybar-main_eDP1'\u0026quot;, \u0026quot;name *= 'pcmanfm'\u0026quot;, \u0026quot;name *= 'feeluown'\u0026quot;, \u0026quot;name *= 'VirtualBox Machine'\u0026quot; ]; shadow-radius = 12; shadow-offset-x = -5; shadow-offset-y = -5; shadow-opacity = 0.5; 再然后设置窗口透明\nopacity = 1; inactive-opacity = 1.0; # 这里可以设置不活动窗口的透明度，辅助显示窗口焦点 frame-opacity = 1.0; inactive-opacity-override = false; opacity-rule = [ # \u0026quot;80:class_g = 'Alacritty'\u0026quot;, # \u0026quot;80:class_g *?= 'rofi'\u0026quot; \u0026quot;95:class_g = 'Code'\u0026quot;, \u0026quot;90:class_g = 'FeelUOwn'\u0026quot;, \u0026quot;95:class_g = 'dunst'\u0026quot;, \u0026quot;90:class_g = 'Tilda'\u0026quot; ]; 设置一下淡入淡出效果\nfading = true; fade-delta = 3; fade-in-step = 0.03; fade-out-step = 0.03; 最后把一些焦点检测和圆角检测设置好\ninactive-dim = 0.0; mark-wmwin-focused = true; mark-ovredir-focused = true; detect-rounded-corners = true; detect-client-opacity = true; rofi\n这里就不细讲了，我直接捏了几个组件，大家可以直接看文末的配置链接\n其一，rofi 主窗口，采用官仓的 material 主题，支持 ssh, window, run, drun 四个模式\n├── config.rasi └── material.rasi 其二，结合 polybar 的一个应用启动器，用鼠标控制，基于 nord 配色\n├── colors.rasi └── launcher.rasi 其三，基于 nordic 配色的一个 powermenu，支持关机、锁屏和注销\n├── nordic.rasi ├── powermenu.rasi └── powermenu.sh polybar\n从别人那里学到的配置结构，感觉清爽多了\n├── colors.ini ├── config.ini ├── fonts.ini ├── include-modules.ini ├── launch.sh ├── modules └── scripts 示意图不贴了，上面几张图里有，依次的 modules 是：\n1. gentoo logo：显示 gentoo logo 并鼠标左键点击唤出 rofi launcher 2. i3 workspace：显示 i3 的工作区，鼠标点击或者滚轮可以切换 3. wlan：显示 wifi 下载速度 4. cpu：显示 cpu占用 5. memory：显示内存占用 6. pulseaudio：显示音量，点击静音，滚轮调节 7. xbacklight：显示亮度，滚轮调节 8. battery：电池，充电时显示动画 9. time：显示时间，鼠标单击显示日期 10. tray：自带的托盘图标区域 i3lock-color\n如果喜欢简单素雅，可以直接抄文末链接中的配置，示例如下 也可以简单的用 imagemagick 加一点二次元，比如我比较喜欢的小巫女 或者选用某些组图来轮换显示，比如我喜欢的 touhou 2.3 协调统一应用主题 针对 gtk 应用，选用 nordic-darker 主题，利用 lxapparance 来设置\n例如 lutris\n针对 qt 应用，选用 nordic-darker 应用样式，利用 kvantum 来设置\n例如 qbittorrent\n那不吃系统主题的应用怎么办呢？那只有单独设置了，均选用相同配色主题，具体不详述\n例如火狐\n例如 telegram\n2.4 一些 tips videowallpaper 每次鬼刀交新货会玩玩视频壁纸，利用 xwinwrap 调用 mpv 来硬解视频做壁纸\nneofetch 按照惯例需要交一份 neofetch，从某位群友那边学的配置 3 总结 其实大体上的思路就是基于某个配色捏出一整套配置出来，我现在这份还并不算协调，某些配色还有瑕疵。大家可以作为参考，从而捏合出属于自己的配置。\n4 参考和我的配置 我的配置 i3 User\u0026rsquo;s Guide 一位优秀的 rofi + polybar 设计师 Archcraft 设计师 ","permalink":"https://blog.zjuyk.site/posts/i3wm-config/","title":"I3wm 配置思路"},{"content":"互联网是个大宝库，但同时也是个垃圾场，如何能更便捷的搜索到自己想要得到的东西呢？我在这里捋一捋我搜索东西的思路和方法\n1 思路图 2 具体搜索思路 2.1 搜索语法 \u0026quot;-keyword\u0026quot; 来剔除不需要的内容：例如 \u0026ldquo;-CSDN\u0026rdquo; \u0026quot;+keyword\u0026quot; 来指定需要的关键词：例如 \u0026ldquo;+Github\u0026rdquo; \u0026ldquo;filetype search items\u0026rdquo; 来指定需要的文件格式：例如 \u0026ldquo;PDF docker security\u0026rdquo; \u0026ldquo;keyword\u0026rdquo; 双引号关键词表示精确匹配，就是搜索结果必须包含这个关键词 \u0026ldquo;intitle keyword\u0026rdquo; 表示搜索标题包含关键词的页面 \u0026ldquo;inurl keyword\u0026rdquo; 表示搜索链接包含关键词的页面 \u0026ldquo;site:siteurl keyword\u0026rdquo; 表示在某个网站搜索该关键词 2.2 搜索技巧 搜索引擎\n选用合适的搜索引擎是搜索的第一步，现在最知名的应该就是谷歌搜索了，如果注重隐私性，也可以考虑选用 DuckDuckGo。我之前也发现一款叫 Magi 的搜索引擎，他最大的优点就是可以清晰的把搜索结果的组织脉络勾画出来，比较看好这种呈现模式。\n浏览器插件\n搜索的结果无法避免的会出现一些广告，有些是搜索引擎加的，有些是广告 SEO 做得太好了。这都会严重影响我们的搜索体验，启用像 adblock 这样的浏览器插件是非常有必要的。\n特定的网站\n在特定的网站搜索内容是非常有必要的，这样的信息密度更大，也更有可能搜索到我们需要的内容。例如我常在 stackoverflow 搜索电脑问题的解决方案，在 github 上寻找一些现成的轮子。\n2.3 搜索拓展 有时候我们需要的内容已经聚合到了某些资源平台上，那我们完全可以到这些平台上搜索到我们想要的资源。例如某些网盘，或者磁力站等等，如果有需要也尽可以订阅这些平台，定期推送资源消息，这样不需要你搜索，也有可能直接推送到你恰好需要的资源。\n3 参考 Goku\u0026rsquo;s blog 知乎 ","permalink":"https://blog.zjuyk.site/posts/how-to-search/","title":"如何增强自己搜索的能力"},{"content":"经常在 Github 和其他一些地方看到开源协议的身影，但对这些协议还是不太清楚具体含义是什么，于是花时间了解了一下。\n1 开源协议（许可证） 1.1 什么是许可协议？ 什么是许可，当你为你的产品签发许可，你是在出让自己的权利，不过，你仍然拥有版权和专利（如果申请了的话），许可的目的是，向使用你产品的人提供一定的权限。\n不管产品是免费向公众分发，还是出售，制定一份许可协议非常有用，否则，对于前者，你相当于放弃了自己所有的权利，任何人都没有义务表明你的原始作者身份，对于后者，你将不得不花费比开发更多的精力用来逐个处理用户的授权问题。\n而开源许可协议使这些事情变得简单，开发者很容易向一个项目贡献自己的代码，它还可以保护你原始作者的身份，使你至少获得认可，开源许可协议还可以阻止其它人将某个产品据为己有。越来越多的开发者与设计者希望将自己的产品开源，以便其他人可以在他们的代码基础上做更多事，开源社区也因此充满生机。在我们所能想到的应用领域，都有开源软件存在。\n1.2 常见的开源协议 2 具体介绍 2.1 BSD 协议 BSD 开源协议是一个给于使用者很大自由的协议。基本上使用者可以”为所欲为”,可以自由的使用，修改源代码，也可以将修改后的代码作为开源或者专有软件再发布。\n但”为所欲为”的前提当你发布使用了 BSD 协议的代码，或者以 BSD 协议代码为基础做二次开发自己的产品时，需要满足三个条件：\n如果再发布的产品中包含源代码，则在源代码中必须带有原来代码中的 BSD 协议。 如果再发布的只是二进制类库/软件，则需要在类库/软件的文档和版权声明中包含原来代码中的 BSD 协议。 不可以用开源代码的作者/机构名字和原来产品的名字做市场推广。 BSD 代码鼓励代码共享，但需要尊重代码作者的著作权。BSD 由于允许使用者修改和重新发布代码，也允许使用或在 BSD 代码上开发商业软件发布和销售，因此是对商业集成很友好的协议。而很多的公司企业在选用开源产品的时候都首选 BSD 协议，因为可以完全控制这些第三方的代码，在必要的时候可以修改或者二次开发。\nBSD 协议还分为一下几个版本\n4-clause license (original \u0026ldquo;BSD License\u0026rdquo;)\n顾名思义，这个是原始版本，现在没人用了，最主要是因为它包含一个广告条款，允许用你的名义来为再分发的软件打广告。\n3-clause license (\u0026ldquo;BSD License 2.0\u0026rdquo;, \u0026ldquo;Revised BSD License\u0026rdquo;, \u0026ldquo;New BSD License\u0026rdquo;, or \u0026ldquo;Modified BSD License\u0026rdquo;)\n是现在主要的版本，也就是我上面介绍的版本，移除了广告条款。\n2-clause license (\u0026ldquo;Simplified BSD License\u0026rdquo; or \u0026ldquo;FreeBSD License\u0026rdquo;)\n这就是大名鼎鼎的 FreeBSD 了，忽略了对再分发软件的认可条款，并增加了对软件本身表达的观点的免责声明。\n0-clause license (\u0026ldquo;Zero Clause BSD\u0026rdquo;)\n允许去掉版权声明、认可条款和免责条款，更自由了\n2.2 Apache 协议 2.0 Apache Licence 是著名的非盈利开源组织 Apache 采用的协议。该协议和 BSD 类似，同样鼓励代码共享和尊重原作者的著作权，同样允许代码修改，再发布（作为开源或商业软件）。需要满足的条件也和 BSD 类似：\n需要给代码的用户一份 Apache Licence 如果你修改了代码，需要再被修改的文件中说明。 在延伸的代码中（修改和有源代码衍生的代码中）需要带有原来代码中的协议，商标，专利声明和其他原来作者规定需要包含的说明。 如果再发布的产品中包含一个 Notice 文件，则在 Notice 文件中需要带有 Apache Licence。你可以在 Notice 中增加自己的许可，但不可以表现为对 Apache Licence 构成更改。 Apache Licence 也是对商业应用友好的许可。使用者也可以在需要的时候修改代码来满足需要并作为开源或商业产品发布/销售。\n2.3 GUN/GPL 协议 我们很熟悉的 Linux 就是采用了 GPL。GPL 协议和 BSD，Apache Licence 等鼓励代码重用的许可很不一样。GPL 的出发点是代码的开源/免费使用和引用/修改/衍生代码的开源/免费使用，但不允许修改后和衍生的代码做为闭源的商业软件发布和销售。这也就是为什么我们能用免费的各种 Linux，包括商业公司的 Linux 和 Linux 上各种各样的由个人，组织，以及商业软件公司开发的免费软件了。\nGPL 协议的主要内容是只要在一个软件中使用(”使用”指类库引用，修改后的代码或者衍生代码) GPL 协议的产品，则该软件产品必须也采用GPL 协议，既必须也是开源和免费。这就是所谓的”传染性”。GPL 协议的产品作为一个单独的产品使用没有任何问题，还可以享受免费的优势。\n由于 GPL 严格要求使用了 GPL 类库的软件产品必须使用 GPL 协议，对于使用 GPL 协议的开源代码，商业软件或者对代码有保密要求的部门就不适合集成/采用作为类库和二次开发的基础。\nGPLv2 vs GPLv3\nGPLv2 使用了很多专用于美国或某系统的术语词汇，故而引入仅适用于某系统的法律假设。例如 GPLv2 协议中的“分发”和“衍生作品”术语就曾造成分析困惑。于是 FSF 及其律师们决定避免使用专用于某系统的表述，以免产生许可证理解方面的困惑，这就是 GPLv3 协议。\n协议中慎重使用了两个非国际版权法律语言的术语:\n传播\n“传播”许可证所涉作品指需要根据本地法律体系从版权持有人处获得许可才可进行的任一活动。出于个人原因使用或修改作品被明确排除在“传播”范围之外（无论各国版权法如何规定），以防止各国版权法影响如前所述的第 0 至 2 项自由权利。另一项好处是，由于“传播”包含任何特定版权制度下所授予的全部专有权利，因此自然而然地合规要求有效许可才能获得专有权的所有制度。\n发布\n任何使他人能够接收或复制作品的传播活动都称为“发布”。在一般情况下，发布会产生 Copyleft 义务。“通过计算机网络与用户交流，而不涉及副本传送”被明确排除在“发布”范围之外。\n除此之外，GPLv3 还增加了关于版权和专利的条目，防止随意更改 GPL 软件，而且按照专利许可规定：按照 GPL 协议对程序进行许可的人们必须使用他们所许可的代码，同时包括版权和专利。新的专利条款试图保护用户免受专利持有人与 GPL 的被许可人之间的协议的影响，该协议仅使某些被许可人受益，要求被许可方确保每个用户都享有这种权利或者没有人可以从中获利。\n值得一提的还有 AGPL，这里的 A 指的是 GNU Affero 通用公共许可证，社区对是否将 Copyleft 概念延伸至网络上自由软件所交付的服务讨论了很久。\n2.4 GUN/LGPL 协议 LGPL 是 GPL 的一个为主要为类库使用设计的开源协议。和 GPL 要求任何使用/修改/衍生之 GPL 类库的的软件必须采用 GPL 协议不同。LGPL 允许商业软件通过类库引用 (link) 方式使用 LGPL 类库而不需要开源商业软件的代码。这使得采用 LGPL 协议的开源代码可以被商业软件作为类库引用并发布和销售。\n但是如果修改 LGPL 协议的代码或者衍生，则所有修改的代码，涉及修改部分的额外代码和衍生的代码都必须采用 LGPL 协议。因此 LGPL 协议的开源代码很适合作为第三方类库被商业软件引用，但不适合希望以 LGPL 协议代码为基础，通过修改和衍生的方式做二次开发的商业软件采用。\nGPL/LGPL 都保障原作者的知识产权，避免有人利用开源代码复制并开发类似的产品。\n2.5 MIT协议 MIT 是和 BSD 一样宽范的许可协议，作者只想保留版权，而无任何其他了限制。也就是说，你必须在你的发行版里包含原许可协议的声明，无论你是以二进制发布的还是以源代码发布的。\n2.6 Mozilla Public 协议（MPL） MPL 是 The Mozilla Public License 的简写，是 1998 年初 Netscape 的 Mozilla 小组为其开源软件项目设计的软件许可证。MPL 许可证出现的最重要原因就是，Netscape 公司认为 GPL 许可证没有很好地平衡开发者对源代码的需求和他们利用源代码获得的利益。同著名的 GPL 许可证和 BSD 许可证相比，MPL 在许多权利与义务的约定方面与它们相同（因为都是符合 OSIA 认定的开源软件许可证）。但是，相比而言 MPL 还有以下几个显著的不同之处:\nMPL 虽然要求对于经 MPL 许可证发布的源代码的修改也要以 MPL 许可证的方式再许可出来，以保证其他人可以在 MPL 的条款下共享源代码。但是，在 MPL 许可证中对“发布”的定义是“以源代码方式发布的文件”，这就意味着 MPL 允许一个企业在自己已有的源代码库上加一个接口，除了接口程序的源代码以 MPL 许可证的形式对外许可外，源代码库中的源代码就可以不用 MPL 许可证的方式强制对外许可。这些，就为借鉴别人的源代码用做自己商业软件开发的行为留了一个豁口。 MPL 许可证第三条第 7 款中允许被许可人将经过 MPL 许可证获得的源代码同自己其他类型的代码混合得到自己的软件程序。 对软件专利的态度，MPL 许可证不像 GPL 许可证那样明确表示反对软件专利，但是却明确要求源代码的提供者不能提供已经受专利保护的源代码（除非他本人是专利权人，并书面向公众免费许可这些源代码），也不能在将这些源代码以开放源代码许可证形式许可后再去申请与这些源代码有关的专利。 而在 MPL（ 1.1 版本）许可证中，对源代码的定义是:“源代码指的是对作品进行修改最优先择取的形式，它包括:所有模块的所有源程序，加上有关的接口的定义，加上控制可执行作品的安装和编译的‘原本’（原文为 Script ），或者不是与初始源代码显著不同的源代码就是被源代码贡献者选择的从公共领域可以得到的程序代码。” MPL 许可证第 3 条有专门的一款是关于对源代码修改进行描述的规定，就是要求所有再发布者都得有一个专门的文件就对源代码程序修改的时间和修改的方式有描述。 3 补充一些有意思的协议 3.1 WTFPL 协议 中文翻译过来就是 你他妈的想干嘛就干嘛公共许可证，是一种不太常用的、极度放任的自由软件许可证。它允许根据任何条款修改和再发布软件 —— 许可证鼓励他们“想干嘛就干嘛”，是真正 “自由” 的开源协议。\n3.2 GLWTPL 协议 因为有官方中文版，我就直接搬过来了，究极有趣\nGLWT（Good Luck With That，祝你好运）公共许可证 版权所有© 每个人，除了作者 任何人都被允许复制、分发、修改、合并、销售、出版、再授权或 任何其它操作，但风险自负。 作者对这个项目中的代码一无所知。 代码处于可用或不可用状态，没有第三种情况。 祝你好运公共许可证 复制、分发和修改的条款和条件 0 ：在不导致作者被指责或承担责任的情况下，你可以做任何你想 要做的事情。 无论是在合同行为、侵权行为或其它因使用本软件产生的情形，作 者不对任何索赔、损害承担责任。 祖宗保佑。 4 参考来源 协议详解 BSD 协议 WTFPL 协议 GLWTPL 协议 ","permalink":"https://blog.zjuyk.site/posts/open-source-licenses/","title":"开源协议介绍"},{"content":" 人生如白驹过隙，相逢即是有缘！\nLiolok 快乐的小皓奇，拥有非常多的卡哇伊贴纸，也很羡慕他的手办，同时还是 next 主题开发组成员 Axionl 艾老师，笔名艾雨寒，ArchLinuxCN 打包者之一，会很有耐心的帮助新人解决问题 Losses Don 优秀的前端设计师（拥有心理学背景），很擅长制作 PPT，而且博客的布局和控件设计很有参考价值 Lilydjwg 依云，昵称百合仙子，lilac 的作者和维护者，拥有非常多的厉害脚本和工具，CN 社区的狐狸之一 🦊 Farseerfc FC 教授，不是尊称，他真的曾经是日本一所大学的教授，Arch Linux TU 之一，据说是能够背下 Arch Wiki 的男人，Btrfs 维修专精.jpg BruceZhang 一只坏兔子，因为是电子包维护最多的人也被叫做电子兔，这只兔子满嘴骚话 AlynxZhou 周老师，很喜欢吹口琴，同时也是群里少数的 gnome 用户（受迫害 Vifly 群里著名炼丹师，当初 github action 打 arch 包还是向他学的 Oldherl 老海尔是群里 400\u0026#43; 岁的老人了，同时还是人肉字体识别机，文泉驿的好几个字体他都有参与贡献 菠菜眾長 优秀的前端工程师，在我攒博客期间在 QQ 群回答了我很多问题，借鉴了很多他关于 hugo 的实现代码 Weearc 相离相惜莫相忘，且行且歌且珍惜。什么？是 Arch 群里的 openSUSE 内鬼（ 友链必要信息 name: 昵称，中英文皆可 url: 提供网站链接 logo: 提供头像地址，默认我会采用 github 头像 word: 评价词，一般我自己写，有需要定制也可以放在这 ","permalink":"https://blog.zjuyk.site/friends/","title":"友链"},{"content":" 自我简述 生长于江西这个道教福地，从小有着对于道教的孺慕之情，于是乎中二少年时期给自己取了个道号 “千玄子”，没成想一直沿用到了今天。\n非常喜欢历史，由于时间原因也没有去找文言文原本去啃，大多是央视《中华通史》这种系列视频，当然一些有趣的野史会去翻原本考据。有兴趣的话可以一起探讨！当初为什么不选历史这个专业呢？还是要恰饭的嘛。\n被动型人格拥有者，面对主动来和自己交谈的人会非常热情，但是对主动交谈常常会畏首畏尾，踌躇不前。\n坚定的 ArchLinux 使用者，自接触到 Linux 世界，陪伴我最长时间的还是 ArchLinux，这个优雅的发行版就是有着这样神奇的魔力，仿佛包含一切的 wiki 为我彻底打开了新世界的大门。\n专业是计算机，喜欢折腾各种电子设备，遇上新应用总是要在第一时间捏成自己喜欢的形状，尤其是 DE/WM（这算是强迫症吗？）\n喜欢轻音乐，以燃向和哀伤的调子为主，喜欢古风，西方的音乐较少听。\n欢迎来找我玩耍 GPG: B3A9 251F BEA2 1298 B80B 7F9E F84D 36A7 3BF3 9DC8 Telegram: @zjuyk Email: Gmail | Edu ","permalink":"https://blog.zjuyk.site/about/","title":"关于"},{"content":" 基础模板 \\documentclass[UTF8]{ctexart} \\begin{document} 你好，世界！ \\end{document} 撰写标题 \\title{Title} \\author{Author} \\date{} \\begin{document} \\maketitle % 显示标题 \\end{document} % 想要设置标题格式可以这样做，设置字体大小 \\usepackage{titling} \\pretitle{\\begin{center}\\fontsize{30pt}{30pt}\\selectfont} \\posttitle{\\end{center}} 插入目录 % \\maketitle \\tableofcontents % Set the TOC 设置页边距 \\usepackage{geometry} \\geometry{left=1in,right=1in,top=1in,bottom=1in} % 单位是英寸 显示分页 \\newpage 撰写注释 % comment 单行注释 % 方法一 \\usepackage{verbatim} \\begin{comment} comments \\end{comment} % 方法二 \\iffalse comments \\fi 层次结构 % latex一共五级标题 \\section{第一} \\subsection{第二} \\subsubsection{第三} \\paragraph{第四} \\subparagraph{第五} 插入公式 \\usepackage{amsmath} % use AMS-LaTex % 行内公式 $ ... $ \\[ ... \\] % 编号 \\begin{equation} ... \\end{equation} % 不编号 \\begin{equation*} ... \\end{equation*} \\begin{displaymath} ... \\end{displaymath} Hint: 详细介绍见官网\n原样输出 % 单行 \\verb|text| % 多行 \\begin{verbatim} \\begin{test} \\end{verbatim} 脚注、引言和超链接 % 脚注 \\footnote{something} % 引言 \\begin{quote} something \\end{quote} % 超链接 \\usepackage[colorlinks,linkcolor=blue]{hyperref} % 设置链接颜色 \\url{http://www.baidu.com} % 显示超链接 \\href{http://www.baidu.com}{百度} % 隐藏超链接 撰写表格 % 基本格式 \\begin{tabular}{cc} % 几个c代表几列,同时也代表了居中，l代表左对齐，r右对齐 1\u0026amp;2\\\\ % \u0026quot;\u0026amp;\u0026quot;符号用来分隔列 3\u0026amp;4\\\\ \\end{tabular} % 添加竖线和横线 \\begin{tabular}{|c|c|} % 加|表示竖线 \\hline 1\u0026amp;2\\\\ % \u0026quot;\u0026amp;\u0026quot;符号用来分隔列 \\hline 3\u0026amp;4\\\\ \\hline \\end{tabular} % 横线加粗 \\usepackage{booktabs} \\begin{tabular}{|c|c|} % 加|表示竖线 \\toprule 1\u0026amp;2\\\\ % \u0026quot;\u0026amp;\u0026quot;符号用来分隔列 \\midrule 3\u0026amp;4\\\\ \\bottomrule \\end{tabular} % 添加表标题和标签 % 放在table里面 \\begin{table}[!htb] % 表参数，一般默认加就行 \\centering \\caption{表标题}\\label{tab:aStrangeTable}%添加标题 设置标签 \\begin{tabular}{cc} ... \\end{tabular} \\end{table} % !表示忽略美观，按后面参数顺序依次尝试排版表格 % h表示表格放在当前位置 % t表示表格放在下一页顶部 % b表示表格放在本页底部 % 单元格合并 \\multicolumn{3}{|c|}{something} % 横向合并3列，居中显示文本 \\multirow{4}*{something}\u0026amp;1\u0026amp;2\u0026amp;3\u0026amp;4\u0026amp;5\u0026amp;6\\\\ % 纵向合并四行 \\cline{2-7} %为2-7列添加横线 % 斜线表头 \\usepackage{diagbox} \\diagbox{甲}{乙}{丙}...\\\\ % 添加斜线表头，参数个数自己调整，一般是两、三个 \\diagbox[innerwidth=2cm] % 调整列宽度以适应嵌套表格 插入图片 \\documentclass{article} \\usepackage{graphicx} \\begin{document} \\includegraphics{a.jpg} \\end{document} 强调 \\underline{\\textbf{something}} % 加黑加下划线 \\emph{something} % 斜体 伪代码 \\usepackage{algorithm} \\usepackage{algorithmic} % 命令全大写 % \\usepackage{algorithmicx} % 命令首字母大写 \\begin{algorithm}[!h] \\caption{PARTITION$(A,p,r)$} \\begin{algorithmic}[1] % 以下一行一个标行号 \\STATE $i=p-1$ \\FOR{$j=p$ to $r$} \\IF{$A[j]\u0026lt;=0$} \\STATE $swap(A[i],A[j])$ \\STATE $i=i+1$ \\ENDIF \\ENDFOR \\end{algorithmic} \\end{algorithm} % algorithmic命令 \\STAT \u0026lt;text\u0026gt; % 普通赋值语句 \\IF{\u0026lt;condition\u0026gt;} \\STATE{\u0026lt;text\u0026gt;} \\ENDIF % if分支 \\FOR{\u0026lt;condition\u0026gt;} \\STATE{\u0026lt;text\u0026gt;} \\ENDFOR % for循环 \\FOR{\u0026lt;condition\u0026gt; \\TO \u0026lt;condition\u0026gt; } \\STATE{\u0026lt;text\u0026gt;} \\ENDFOR \\FORALL{\u0026lt;condition\u0026gt;} \\STATE{\u0026lt;text\u0026gt;} \\ENDFOR \\WHILE{\u0026lt;condition\u0026gt;} \\STATE{\u0026lt;text\u0026gt;} \\ENDWHILE % while循环 \\REPEAT \\STATE{\u0026lt;text\u0026gt;} \\UNTIL{\u0026lt;condition\u0026gt;} \\LOOP \\STATE{\u0026lt;text\u0026gt;} \\ENDLOOP \\REQUIRE \u0026lt;text\u0026gt; \\ENSURE \u0026lt;text\u0026gt; \\RETURN \u0026lt;text\u0026gt; % 返回 \\PRINT \u0026lt;text\u0026gt; % 打印 \\COMMENT{\u0026lt;text\u0026gt;} % 注释 \\AND, \\OR, \\XOR, \\NOT, \\TO, \\TRUE, \\FALSE ","permalink":"https://blog.zjuyk.site/notes/latex/","title":"Latex 语法"},{"content":" Admonition 这里的类型目前支持 note、tip、warning 和 danger，因为我只为这四类配了 css 图标\n{{\u0026lt; admonition 类型 \u0026quot;标题\u0026quot; \u0026gt;}} 内容 {{\u0026lt; /admonition \u0026gt;}} 标题 内容 标题 内容 标题 内容 标题 内容 Detail {{\u0026lt; details \u0026quot;点击展开\u0026quot; \u0026gt;}} 内容 {{\u0026lt; /details \u0026gt;}} 点击展开 内容 Mermaid 首先需要在 front-matter 里将 mermaid 设置成 true 加载 js\n{{\u0026lt; mermaid \u0026gt;}} 内容 {{\u0026lt; /mermaid \u0026gt;}} Github Card {{\u0026lt; github title=\u0026quot;username/reponame\u0026quot; detail=\u0026quot;\u0026quot; \u0026gt;}} ","permalink":"https://blog.zjuyk.site/notes/shortcodes/","title":"本博客中的 shortcode 用法记录"}]