正则表达式 For Beginner

简介 正则表达式(英语:Regular Expression,常简写为regex、regexp或RE),又称正则表示式、正则表示法、规则表达式、常规表示法,是计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些匹配某个模式的文本。 许多程序设计语言都支持利用正则表达式进行字符串操作。例如,在Perl中就内建了一个功能强大的正则表达式引擎。正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开的。 语法总结 需要转义的特殊字符: .[{()\^$|?*+ 就像在其它任何语言中那样,转义需要在符号前加上\。 匹配规则: . - 除了新行外的任何字符 \d - 数字 (0-9) \D - 非数字 (0-9) \w - 单词字母 (a-z, A-Z, 0-9, _) \W - 非单词字母 \s - 空字符 (space, tab, newline) \S - 非空字符 (space, tab, newline) \b - 单词边界 \B - 非单词边界 ^ - 字符串开头(默认将一行看作一整个字符串) $ - 字符串结尾(默认将一行看作一整个字符串) [] - 匹配字符集 [^ ] - 匹配除了字符集外的字符 | - 或者 ( ) - Group Quantifiers: * - 0 or More + - 1 or More ?...

February 3, 2022 · zeroy

Flask学习1 TallyApp beta 0.9

功能描述 支持注册和登录 支持简单的分类记账 支持以饼图的形式展现各个分类占总体收支的数目 支持增删改数据 支持以一定的xlsx格式导入导出数据 基本结构 Demo 项目地址 技术路线 后端:python-Flask 前端:BootStrap 踩过的坑 程序开始时数据库需要已经初始化完毕db.create_all() 使用get方法传参会出未知问题,故全部改为使用url传参 浮点误差会让数据很奇怪,注意保留两位小数 不同的数据类型(pandas与string)可能会让数据显示异常(空数据显示为’None') Docker应用部署细节 Flask本身不带服务器,使用gunicorn来使得web应用能够在服务器上被访问。 使用阿里云作为Docker Hub。 #注册完阿里云的镜像服务之后 #登录 docker login --username={{your username}} registry.cn-hangzhou.aliyuncs.com/ #命名并上传本地docker镜像 docker tag tallyapp registry.cn-hangzhou.aliyuncs.com/tally_app/tallyapp:{{version}} docker push tallyapp registry.cn-hangzhou.aliyuncs.com/tally_app/tallyapp:{{version}} #拉取镜像 docker pull tallyapp registry.cn-hangzhou.aliyuncs.com/tally_app/tallyapp:{{version}} 将本地数据库挂载到Docker容器中,并运行容器。 docker run -d -p 8080:8080 -v /database:/soft/TallyApp/database {{images_id}}

February 1, 2022 · zeroy

使用PySimpleGUI库构建简单的图形界面

前言 python构建本地GUI程序有很多方式,比如Tkinter,wxPython,或是PyQT。但是对于学生而言,并不需要多么华丽的用户界面,只需要“能用”就行了,开发环节越省力越好。 于是我找到了PySimpleGUI这个库。 A introduction to PySimpleGUI 这个库提供了一种近乎傻瓜化的方式,采用List来描述一个GUI界面,同时支持一个简单程序需要的全部特性,并且支持Win/Mac/Linux三大平台,十分适合拿来封装代码。 安装 pip install PySimpleGUI 在文件开头加上库引用: import PySimpleGUI as sg 元素 PySimpleGUI有着丰富的控件支持。 文本框(Text) sg.Text('文本框',size=(12,1),key='output') '文本框'为框体显示的文字,size为框体的大小,key为框体标识,用于之后对文本框的定位。 输入框(Input) sg.Input(key='input') 按钮(Button) sg.Button('Go') 'Go'为按钮的名字。也可以另外设置key值。 下拉框(Comobo) [ sg.Text("City", size = (20, 1)), sg.Combo(("北京", "上海", "深圳"), size=(10, 1), default_value="上海", key = "-CITY-")] 弹窗(Popup) sg.Popup('弹窗1','This is the first one') sg.Popup('弹窗2','This is the second one') sg.Popup('弹窗3','This is the third one') 弹出一个窗口包含标题和内容。 选择文件(FileBrowse) sg.FileBrowse() 选择文件路径(FolderBrowse) sg....

January 26, 2022 · zeroy

Bilibili直播弹幕收发小程序

项目地址 需求分析 在Linux下直播看不到弹幕,无法与观众互动。 实现过程 第一阶段 问题可拆分为收与发。 可行性分析 B站有API能够返回一个直播间最近的10条弹幕,可以依赖这个API接收弹幕。 抓包可知一次发送弹幕的行为即为一次POST请求,可以使用python脚本实现发送信息。 分别编写发送和接收弹幕的程序。开两个终端使用。 第二阶段 开两个终端切换较为麻烦,于是萌生了把两个程序整合成一个的想法,想实现类似网页的上方是弹幕下方是输入框的效果。 可行性分析 弹幕的动态捕捉依赖间隔固定时间地获取最近10条弹幕,提取出新的弹幕,显示在终端上,但是如果整合进输入程序,输入方法会阻塞进程,如果一直不输入就没有办法获取新的弹幕,所以需要为输入设定超时。 查阅资料得知,为输入方法设定超时需要使用多线程,或者异步异常信息处理,刚学py,不会这些。。。 查阅英文资料和pypi得知,python有个inputimeout库可以处理超时输入的问题,所以就整上了。 但是在现在这一流程中,每次输入超时都需要清屏,这样每次更新弹幕的时候都会闪一下,体验非常不好。 第三阶段 有没有办法实现一个terminal中分屏显示都个session呢? 可行性分析 结合我个人的Linux使用经验,可以使用tmux这个工具实现分屏操作,所以第二阶段的工作就白做了。。。 最终效果 不足与提升空间 冷启动时需要较多的步骤,不够优雅。 未来可以尝试使用GUI框架封装代码,实现一个输出框一个输入框收发代码。 1/25 Update 采用PysimpleGUI这个最简单的GUI库封装了代码,现在很好用()

January 18, 2022 · zeroy

怪罪于爱的孤独 《霍乱时期的爱情》书评

引言 我是不配谈“爱”的,因为我只是个18岁的“小孩”,并没有情感经历。 但是这本在标题就明目张胆地写着爱情的书,写书评又绕不过对”爱情“的讨论,我只能边抄原文边说说我不成熟的感想。 故事梗概相当简单:穷小子弗洛伦蒂诺·阿里萨在十八岁时对费尔明娜·达萨一见钟情,双方突破重重阻碍(主要是费尔明娜的父亲的反对)互通了几百封情书,最后见面时,费尔明娜看着眼前这个可怜人,与她心目中的那个人相距甚远,意识到他们之间不过是一场幻觉,便拒绝了弗洛伦蒂诺的求婚。之后费尔明娜嫁给了权贵,一个真正的绅士胡维纳尔·阿尔比诺医生,过了几十年的还算恩爱的夫妻生活,而弗洛伦蒂诺则一直把对费尔明娜的爱藏在心里,几十年间在社会上摸爬滚打,最后当上了航运公司的董事长。胡维纳尔·阿尔比诺医生去世那天,弗洛伦蒂诺第一时间找到费尔明娜,重申了自己对她矢志不渝的爱情,经过一段时间的磨合之后,两个老人终于完成了这场长达51年的爱情长跑。 看看简介: 《霍乱时期的爱情》是加西亚•马尔克斯获得诺贝尔文学奖之后完成的第一部小说。讲述了一段跨越半个多世纪的爱情史诗,穷尽了所有爱情的可能性:忠贞的、隐秘的、粗暴的、羞怯的、柏拉图式的、放荡的、转瞬即逝的、生死相依的……再现了时光的无情流逝,被誉为“人类有史以来最伟大的爱情小说”,是20世纪最重要的经典文学巨著之一。 但粗看这个故事情节其实相当毁三观,弗洛伦蒂诺在与622个女人发生过肉体关系的情况下,仍对费尔明娜说了那句著名的“我为你保留了童真”,形容这场爱情为“一生一世”。看起来非常的魔幻现实。 这究竟是不是又一个“盖茨比”式的故事,是不是又一个穷小子逆袭抱得美人归的滥俗套路?马尔克斯当然不可能这么肤浅,但在这里强行上升到人生的高度也大可不必,马尔克斯认为的爱情的本质是什么呢?先看看我在书中的一些摘抄。 句子摘抄 “见到你我才发现,我们之间不过是一场幻觉。”(费尔明娜·达萨) 这是费尔明娜对弗洛伦蒂诺说的话,费尔明娜在见到弗洛伦蒂诺可怜的境遇后,瞬间明白了自己对他的感情不过是一种“同情心”,她称呼他为“可怜人”,对他的一切美好的幻想都烟消云散,摧毁爱情的有时不是拒绝,而是怜悯,“兴味索然,自欺欺人”,即使在这之前她还被一封一封文辞真挚隽永的情书所打动,就在这一刻,费尔明娜决心在记忆中抹去关于弗洛伦蒂诺的记忆,之后不久,她就嫁给了胡维纳尔·阿尔比诺医生。 书信是思想最好的载体。文字能窥见一个人的灵魂,却因留下了过大的想象空间而容易无限放大对对方的固有印象。这里还有一句: 他只要看到那个女孩就感到心满意足了。渐渐地,他把她理想化了,把一些不可能的美德和想象出来的情感都安在她的身上。 陷入爱情的男女往往容易给他人加上不切实际的各种幻想(俗称“恋爱滤镜”),他们爱的已经不是具体的人,而是一种符号化的理想,所谓“距离产生美”可能也是这种原理吧。追求一个理想化的对象随之自身也收获了一种崇高感并乐在其中,这是大部分世俗化的爱情的普遍心理,这当然是伟大的,是浪漫的,是让追求者和被追求者都能产生价值感的,但是在马尔克斯笔下,费尔明娜亲口拒绝了这段感情。她认为自己是不爱弗洛伦蒂诺的。 如果两人能及时明白,比起婚姻中的巨大灾难,日常的琐碎烦恼更加难以躲避,或许他们的生活完全会是另一副样子。而如果说,他们在共同的生活中也多少学到了点什么,那就是智慧往往在已无用武之地时才来到我们身边。 婚姻或恋爱中的巨大灾难,反而能使双方建立起一种“革命友谊”。而日常碎屑的烦恼则会一点点磨碎理想化爱情的棱角,这既是互相加深了解的过程,也是理想化的对方跌落神坛的过程,如果在深入了解之后,依然能够常驻这份爱意,那这就会是一段相当幸福的感情。但大部分形成已久的羁绊,最后形成的也不过是一种共同生活的“默契”,早已缺乏了当年的激情。 她在儿子身体康复期间,训斥了他被动等候回音的消极状态。她提醒他,弱者永远无法进入爱情的王国,因为那是一个严酷、吝啬的国度,女人只会对意志坚强的男人俯首称臣,因为只有这样的男人才能带给她们安全感,她们渴望那种安全感,以面对生活的挑战。 弗洛伦蒂诺的母亲对弗洛伦蒂诺的告诫。男人应该意志坚强,坚定不移地追求所爱,弗洛伦蒂诺也许听懂了这份告诫,甚至做得有些过了头,他用了51年的时间确认了自己对费尔明娜的感情。 他原本不是她会选择的那种人,但他那过时的眼镜、神甫似的长袍,以及举手投足间的神秘感激起了她难以抵抗的好奇心,而她却从来没有想过,好奇心也是爱情的种种伪装之一。 对一个人产生好奇心,想要深入了解某个人,这也许是爱情产生的前奏。 她辩解说,爱情,首先是一种本能,“要么生下来就会,要么永远都不会”。 不知道该怎么评价这段话。。。有点扎心。 只有她们自己知道,她们曾经疯狂爱着的那个男人—尽管他或许也爱着她们—给她们带来的负担有多么沉重,她们不得不照顾他们直到最后一口气,喂他们吃喝,给他们换下脏兮兮的尿布,用母亲式的巧妙花招哄他们开心,以减轻他们清晨走出家门去直面现实的恐惧。可当看到他们受自己的鼓动离开家门,准备一口去吞掉整个世界时,她们又开始害怕男人会一去不复返。这就是生活。而爱,如果真的存在,则是另一回事:另一种生活。 爱情的负担同样无比沉重,也许为了抽象意义下的“生活”,双方都不得不放弃个人最初的理想(当然也有可能相互扶持着共同完成各自的理想,这是最优情况,这里谈普遍意义下的“妥协”),正如《个人的体验》中的鸟一样,接受了家庭的责任就意味着失去了实现自我理想的机会,就意味着晚年有可能带来的后悔。再来看下一句: “回答他说你愿意,”她对侄女说,“即便你害怕得要死,即便你以后可能后悔。因为如果你说不,无论如何你都会后悔一辈子。” 这是费尔明娜收到弗洛伦蒂诺求婚时,姑妈做出的建议。未做之事或是未答应之事往往带给人的后悔感比答应之事更强。去做一件事,意味着已经穷尽了这件事的可能性,而拒绝一件事,则意味着失去了一种可能的未来。每每想起只会不断自问:“如果我去做了,那么现在会怎样。”但时间对每个人都是公平的,如果去做了某事,也就意味着那时的你放弃了成为现在的你的机会,有可能会在失败中更加潦倒,但困住一个人的,从来都不是穷困潦倒,而是不甘心,是那句“我本可以”。 而如果她真的问了—依照着那无数条仪式性的家庭礼节中的一条—他就会看着报纸,连眼皮也不抬地回答说:“随便什么都行。”他说的是真心话,而且和颜悦色,自认为没有哪个丈夫比他更好商量了。可到了吃饭的时候,“随便什么”就不行了,必须符合他的喜好,不能有半点瑕疵:肉不能有肉味儿,鱼不能有鱼味儿,猪肉不能吃出疥疮似的腥味,鸡肉不能吃出鸡毛的味道。即便不是吃芦笋的季节,也得不惜代价地为他找来,为的是让他能在自己尿液的芬芳气息中怡然自得。她不怨他,只怨生活。但他是生活中难以安抚的主角。只要稍有怀疑,他就会把桌上的盘子一推,说:“这顿饭没有用爱来做。” 胡维纳尔·阿尔比诺医生与费尔明娜的婚姻生活。 胡维纳尔医生是个真正的绅士,言行举止高雅上流,但是费尔明娜却在与他共同生活的过程中处处感到“心累”。因为医生的高高在上且从不尊重她的劳动成果,认为“家务事”是简单的活,这种婚姻关系中双方地位的不对等让费尔明娜对这段感情的本质感到绝望。可以说结婚这么多年,费尔明娜虽然为医生做了一辈子家务,抚养了几个儿女,但他们的感情绝对不是马尔克斯心目中“真正的爱情”。这段话同样让我想起了我自己,因为我也很喜欢说“随便”。。。在与人相处的过程中也要保持真诚,衷心说出自己的真实想法。 事实上,胡维纳尔·乌尔比诺的追求从来不是用爱的语言表达的,而且奇怪的是—至少可以说是奇怪—像他那样一个天主教的卫士,向她提供的竟然仅限于世俗的好处:**安全感、和谐和幸福,这些东西一旦相加,或许看似爱情,也几乎等于爱情。但它们终究不是爱情。**这些疑虑增加了她的彷徨,因为她也并不坚信爱情当真就是她生活中最需要的东西。 。。。 作品内核分析 再来看看作品的介绍“讲述了一段跨越半个多世纪的爱情史诗,穷尽了所有爱情的可能性”。 爱情是什么?为什么弗洛伦蒂诺在与622个女人发生过肉体关系的情况下,仍能对费尔明娜说出“我为你保留了童真”? 因为两人长达52年的小心翼翼的互相确认。 费尔明娜在看似“幸福美满”的婚姻中意识到了弗洛伦蒂诺这个”幽灵“在她的脑海之中挥之不去,意识到了物质的富足并不等于爱情,意识到了这种看似已经被升华成亲情的爱情背后渗透着女人对物质满足感的本质的误判。**她享受着与胡维纳尔在人前扮演恩爱夫妻的满足感,享受着医生为她带来的安定生活,享受着抚养孩子的成就感,这种安心感被她误认为爱情。**可她却没有意识到,这一切与胡维纳尔医生本人并没有多大关系,任何一个同样物质条件的男人,都能给她这一切。 弗洛伦蒂诺则更是在一次又一次地确认着自己对费尔明娜的感情,他不断地与各种女人开启新的感情,只为了把费尔明娜”忘掉“,但一次又一次地试图遗忘,一次又一次地确认感情,一次又一次地失败,”忘不了“,更说明了弗洛伦蒂诺对费尔明娜的痴情。弗洛伦蒂诺一开始地疯狂写情书是他精神世界的一场幼稚的狂欢,是对理想化的神话的费尔明娜的追求,但是当费尔明娜真正嫁人之后,试图忘掉她也好,证明也罢,**弗洛伦蒂诺所经历的一切都在不断擦亮这场狂欢,不断为当年的幼稚加上成熟的注脚。他一次又一次开启新的感情,一次又一次意识到费尔明娜在他内心中的特殊地位,一次又一次迷失了自我。**这也使得最后弗洛伦蒂诺时隔51年的表白如此震撼人心。 那么,爱情是这本书的全部吗? 很显然不是的,弗洛伦蒂诺为什么无法爱人,在他疯狂的寻花问柳的过程中,有不少女人爱上了他,他也有过多次的爱上她人的错觉。那又是什么让弗洛伦蒂诺无法达到结婚的现实呢? 是孤独。 怪罪于“爱”的孤独 上文中有意隐去了社会背景,纯粹讨论了这本书中两人漫长爱情的基本历程。让我们回到书名《霍乱时期的爱情》。 这是一个什么样的社会呢? 在同一天,他看见河上漂过三具膨胀发绿的尸体,上面还站着几只兀鹫。最先是两具男尸,其中一具没了头,而后漂过一具只有几岁的女童的尸体,她那美杜莎般的头发在船尾的航迹中上下漂浮。他永远也不会知道,因为根本没人知道,他们到底是霍乱还是战争的牺牲品,但那令人恶心的强烈气味污染了他心中对费尔明娜·达萨的思念。 是霍乱还有战争肆虐的社会,是一个饱受殖民者压迫的社会,是一个人类所有的光荣与尊严都被肆意践踏的社会。在这里,发生着无数不被后世之人相信的现实,是一种不断循环的,历史性的孤独。 是的,这本“爱情小说”,可能自始至终都不存在“爱情”。在一个生存意义已经被大致消解的世界,“爱情”成了个人活着的最后的被普遍接受的理由。...

January 18, 2022 · zeroy

分享一些看过的书

前言 今天与人聊起看过的书,发现多年来虽然阅读量不少,却从没做过系统的整理,所以就有了这篇文章。初高中因为客观条件的限制,只能阅读纸质书,只记得总数很多,经过一个下午的回想,也没想起来多少,所以在这篇文章中出现的初高中读的作品都是印象很深刻的,很经典的作品,也算是变相筛掉了一些层次不高的消遣类读物吧。 评价标准 我不止一次问自己,一本书打动我的究竟是什么,经过思考,我觉得可以大抵分为两类:“历史沧桑感”与“个人意识感染力”。在第一类书中,你能够感觉到作者表现出来的,某个时代,某个地区的人民的某种特殊的生存状态,能够感受到遥远的时空那端的人们与屏幕前的你的“精神共振”,看这种书的时候,你脑海里的想象画面是带着一层灰色滤镜的,因为作者时时刻刻都在传递着**“这不仅仅是小说,这反映的是那个时代的历史”**。在第二类书中,作者想要传递的是一种精神层面的震撼,一种个人意志的表达,这种小说的背景无关紧要,往往主角贯穿始终或者直接采用第一人称进行写作,甚至故事设置的时空背景与作者本人生活的时空背景相距甚远。但这不是重点,作者想要通过主角的经历,引发读者对某种精神困境的思考,越现代的小说往往越追求这种超时空的表达。任何一本书只要在以上两点中有任何一点打动我,在我这里它就是一本好书,这两点本身也没有高下之分。还有一类书无法归类到这两点中,这之后再说。 再来说说文风。文风上每个作家都各有特色,就我个人而言,我更偏好强剧情推动性的文字搭配简短的,想象空间高的环境描写。因为现代社会媒介已经很发达了,客观来讲,大段大段的环境描写已经对现代人失去了吸引力(尤其是翻译作品,连这种描写的韵味也在翻译的过程中丧失了)。我最喜欢什么样的文风呢,这里举个例子: 海滩上也是火热的阳光。大海在急速而憋闷地喘息着,层层细浪拍击着沙岸。我漫步走向那片岩石,感到脑袋在太阳照射下膨胀起来了。周围的酷热都聚焦在我的身上,叫我举步维艰。每一阵热风扑面而来,我就要咬紧牙关,攥紧裤口袋里的拳头,全身绷紧,为的是能战胜太阳与它倾泻给我的那种昏昏然的迷幻感。从沙砾上、从白色贝壳上、从玻璃碎片上,投射出来的反光像一道道利剑,刺得我睁不开眼,不得不牙关紧缩。就这样我走了好久。《局外人》阿尔贝·加缪 短促明快并且清晰地展现了默尔索先生在“行凶”前后所感受到的“荒诞感”,陀思妥耶夫斯基也是这种文风,如果不是因为俄国人的名字太长太难记,这里引用的就是他的书。如果给我的喜好做几个特征抽象的话,就是: 视角相对集中,最好使用第一人称 环境描写主观性要强,要对当前描写的对象的精神产生显著影响,并引导其之后的行为 说人话,翻译作品不应有太明显的翻译痕迹 再摘一段我很喜欢的描写: “刚才,在那边,有为子给宪兵抓走了。我们一起去看看吧!” 我趿拉着木屐跑去。月夜清明,收割后的稻田里随处能看到稻架清晰的影子。 小树林的树荫里聚集着黑压压的一群人,不停地蠕动着。有为子穿着黑制服,坐在地面上,面色煞白。身边站着四五个宪兵和她的父母。一个宪兵拿出饭盒般的东西,对她吼叫着。她父亲向宪兵百般示好,反复求情,不住责骂女儿。母亲在一旁痛哭流涕。 我们站在田畦上,隔着一块稻田眺望。看热闹的人越来越多,彼此肩膀挨着肩膀,默默无语。月亮也仿佛被压挤得缩小了,挂在我们头顶上。 同学对着我的耳朵叙说着。 有为子是在带着饭盒走出家门、打算到邻村去的当儿,被埋伏的宪兵抓到的。那饭盒显然是送给逃兵的。逃兵和有为子在海军医院亲近,后来,怀孕的有为子被医院赶出来了。宪兵问她那个逃兵躲在哪里,有为子坐着一动不动,顽固地一声不吭。…… 我呢,眼睛一眨不眨凝视着有为子的脸,她像一个被抓到的女疯子,月光之下,面孔毫无表情。我以前从未见过死不认罪的面孔,我想到了自己遭到世界拒绝的面孔。然而,有为子的面孔却是拒绝世界的。月光一个劲儿流泻在她的额头、眼睛、鼻梁和面颊上,那副纹丝不动的容颜只是被月光洗涤着。她只要眼睛倏忽一亮,稍稍扭动一下嘴角,她所拒绝的世界似乎就会顺势从那里涌流进去。 《金阁寺》三岛由纪夫 大概就是这样,我这个人很容易被带节奏,只要感情上能打动我,就是好文风! 下面开始讲书(排名不分先后,已过滤课内必读书目) 推书!(文学性较强) 《活着》 【中】余华 实在太刀了,富贵一家最后已经惨的丧失真实性了(太惨了反而丧失了感染力),但是确确实实能感受到祖辈们在历史的潮流下身不由己地那种无奈。 《1984》 【英】乔治·奥威尔 “栗树荫下,我出卖你,你出卖我。” 这个是初中时候看的,描述了一个极端集权的社会。“公知圣经”,虽然从社会学角度,奥威尔设想的制度毫无可行性,但是生活在任何国家任何社会制度下的人都能在这本书中找到本国政府的影子。 《动物庄园》 【英】乔治·奥威尔 “动物生而平等,但有的动物更平等一些。” 一个预言故事,非常讽刺,一场革命的变质。 《黄金时代》《黑铁时代》《王仙客寻无双记》等等 【中】王小波 这两本书是王小波小说中我认为最有韵味的。前者讲了那个逻辑混乱充满激情的十年岁月,后者具有象征性的情节细品很有味道(虽然现在也一知半解)。 我个人非常非常非常喜欢。 《三体系列》 【中】刘慈欣 格局实在太大,时间线纵贯古今,给人带来强烈的震撼并开始思考自我的时代定位。看出了史诗的感觉。 《看不见的城市》 【意大利】伊塔洛·卡尔维诺 几百字的迷你短篇拼成的一本合集,描述了一个个存在于概念中的城市,具象化了作者的哲学思考。 城市是个很有意思的尺度,不大不小,与日常生活息息相关但又很难整体把握。想象站在某个城市第一高楼向下俯瞰的情景,这本身就令人心旷神怡。 《倾城之恋》 【中】张爱玲 张爱玲一直是我心目中的女小说家top1,无论是文笔还是情节构思都是极高水平,背景多为民国上海和香港,前文中说的两点兼而有之,非常厉害。 《人生的智慧》 【德】叔本华 这是随笔,解决的是实用问题,就这一点就比那些全是概念的哲学书可读多了,(我虽然看完了,但现在还是啥也想不起来。...

January 18, 2022 · zeroy

KKLEEEE(Unity入门项目总结)

项目构思与简介 套壳飞机大战加上模拟网络条件不佳的情况下产生的延迟(XDU校园网直呼内行)。 把飞机大战的壳换成了可莉发射蹦蹦炸弹打丘丘人(? 因为担心太简单所以另外开了个极限模式把延迟调到了1000ms,给喜欢操作的人留了很高的操作空间。 项目说明 W:向上移动 A:向左移动 S:向下移动 D:向右移动 按下鼠标:丢出炸弹 游戏实机截图 项目技术路线 一个正常的Unity入门项目,运用到了一些Unity的基本知识。 物体之间的碰撞需要用到刚体的技术,在此项目中为Rigidbody 2D和Box Collider 2D元件。 刚体碰撞的代码的具体实现如下: private void OnTriggerEnter2D(Collider2D collision) { if (collision.tag.Equals("Monster")) { Destroy(collision.gameObject); Destroy(this.gameObject); GameObject Fa = GameObject.Find("Empty"); Fa.SendMessage("AddScore", 1); } } 总结 总而言之是个非常基础的项目,了解了一下Unity2D的基本工作流。 链接:https://pan.baidu.com/s/18Is4HDqZL97i-scP0-b-Xg 提取码:yliq –来自百度网盘超级会员V3的分享 链接:https://pan.baidu.com/s/1GXPYW85KffQoRN20MWjCtg 提取码:xqra –来自百度网盘超级会员V3的分享

January 18, 2022 · zeroy

攻防世界web前11题WP

baby_web 进去之后发现是/1.php,根据提示“初始页面”,用burpsuite截获index.php,获得flag。 知识点:网页初始页面的文件名一般为index。 warmup 进去之后发现一个滑稽表情,用burpsuite截获数据包后发现有个source.php,打开之后发现页面源代码。 <?php highlight_file(__FILE__); class emmm { public static function checkFile(&$page) { $whitelist = ["source"=>"source.php","hint"=>"hint.php"]; if (! isset($page) || !is_string($page)) {//page必须被设置且page必须是字符串,否则将被过滤 echo "you can't see it"; return false; } if (in_array($page, $whitelist)) {//如果page在白名单内则合法 return true; } $_page = mb_substr(//mb_substr(str,start,length)截取字符串中的一段 $page, 0, mb_strpos($page . '?', '?')//查找'?'在page中首次出现的位置 );//将page问号之后的内容截掉 if (in_array($_page, $whitelist)) {//若此时的page在白名单内则合法 return true; } $_page = urldecode($page); $_page = mb_substr( $_page, 0, mb_strpos($_page ....

January 18, 2022 · zeroy

HelloWorld

$$ Hello World! $$

January 18, 2022 · zeroy

前置知识:欧拉定理 进阶知识:Miller Rabin算法(用于生成大素数),蒙哥马利算法(用于加快大数相乘再取模运算) 引入 历史上常规的密码加解密算法的流程如下: 假设甲要给乙发送数据,则需要甲通过一定的加密规则将数据加密,传送给乙,乙再通过一定的解密规则进行解密。 由于可靠性高的密码算法都要公开自己的加解密算法,因此,在数据传输的过程中,密钥的传输成了一个大难题。 因此RSA算法将密钥分为公钥和私钥两个部分,公钥任何人都可以获取到,而私钥只有数据接收方知道,接下来我们看看RSA加解密算法的运作流程。 算法流程 选定两个素数\(p\),\(q\),令\(n=pq,\phi{(n)}=(p-1)(q-1)\) 选取一个公钥\(e\),满足\(1<e<\phi{(n)}\),且\(e\)与\(\phi{(n)}\)互质 生成私钥 \(d\),满足\(ed\equiv1(mod\ \phi{(n)})\) 假设要发送的信息为\(m\),则加解密规则成立: $$ m^e\equiv c\pmod{n}\ c^d\equiv m\pmod{n} $$ 可靠性分析 考虑甲向乙发送一串数据,乙只需要向甲传送\(n\)和\(e\),甲就可以将加密完成的\(c\)发还给乙,由乙来进行解密操作。 考虑第三方攻击者,只可能截获\(n\),\(e\),\(c\),若要获取私钥\(d\),则必须计算得\(n\)分解成的\(p\),\(q\)两数。 而大质数的因式分解所需要的运算量是非常恐怖的。因此,当选定的\(n\)很大时,RSA算法几乎不可能被破解。 总而言之:RSA利用的是,大数容易相乘,难以分解的特性,使得算法可靠。 代码实现 #RSA加解密算法实现 @copyright zeroy p=1000000007 q=998244353 n=p*q phi_n=(p-1)*(q-1) E=65537 def qkpow(a,b): ans=1 while b>0: if b%2==1: ans=ans*a%n a=a*a%n b=b//2 return ans def exgcd(a,b): if b==0: return 1,0,a else: x,y,q=exgcd(b,a%b) x,y=y,(x-(a//b)*y) return x,y,q # E**D=1(mod phi_n) def calcD(): x,y,q=exgcd(E,phi_n) return x+phi_n D=calcD() # C=m**E%n def encode(m): c=qkpow(m,E) return c # ans=c**D%n def decode(c): return qkpow(c,D) def main(): c=encode(234234) ans=decode(c) print(ans) main() 正确性证明 RSA算法过程以及正确性证明 - 简书 (jianshu....

zeroy