Zizheng's Blog

Zizheng's Blog

Thoughts, stories and ideas.

p进数与方程有理数解

https://www.bilibili.com/video/BV1MX4y1p7KA 开始摸鱼了。 感慨:数学问题的解决,几乎完全依赖数学工具的选择。选对了强大的工具,没有抓手的问题直接就能变成一个纯粹的技术问题。p进数正是这样一个强大的工具。 一个p进数没有小数部分,而是向左无限延伸。只要p是素数就能保证是整环,可以良定义负数和分数,并拥有加减乘运算。包含所有有理数。 更接近有理数的扩域方法,也因此更适合处理有理解/整数解问题。 比如在有理数域上求解x2+x4+x8=y2问题,不会p进理论想在实数域上解这东西完全没有思路,但学会了这个,用3进数很快就能解出,x只有以下三个解: ..000 ..111 ..112 将他们转回有理数可以得到0,-1/2,1/2,其中1/2就是原方程唯一的有理数解。 fun fact:怀尔斯在费马大定理的证明使用了5进系统,因为3进不work。每一个p都可能引入自己的神奇代数结构。 那么,组合优化问题的抓手在哪里?
1 min read
在2022届北大图灵班毕业典礼上的发言
Featured

在2022届北大图灵班毕业典礼上的发言

本文原无标题。杨老师问我该起一个标题时,我想起2018年清华北大联名毕业歌《少年游》的末句“愿心中宇宙,相融纷繁气候”,正如本文立意,故以之为题。 各位尊敬的老师和50多位优秀的同学们,大家好!我是郭资政。作为图灵班第三届毕业生之一,我感到非常荣幸,作为这个温暖团结集体的一员,与各位共度三年学习与研究的时光,我感到十分幸运。 三年来,无数回忆与瞬间让我们彼此连接。我们曾在离散、机器学习、计算理论的课上一起整理notes,组成小组攻关研究复杂问题,这种课程形式让我们在求真、批判与互助中共同进步,难能可贵的学习乐趣与同学情谊将我们联系在了一起。让这种联系更加紧密的,有前沿中心为我们提供的丰富的学术活动,有多彩的课余活动,有学生科研论坛和学术讲座,也有团建桌游和披萨大餐。疫情占据了三年时间里的两年半,但这没有消解我们的联系。图灵班带我们在计算与智能科学中探微,培养我们科学素养和能力,也让我们更好地认识了自己。 我在很多场合都介绍过图灵班,总会引用John的一句话,我们需要找到自己真正喜欢做的事情,并付出自己的全力,we need to find things we enjoy and
5 min read
在信息科学技术学院2022届毕业典礼上的发言
Featured

在信息科学技术学院2022届毕业典礼上的发言

关于本文的后续:北大超算队已经三次站在最高领奖台上了(ASC22-23总冠军, SC23 HPL冠军, ASC24总冠军)! 尊敬的各位老师,各位同学们: 大家好!我是来自信息科学技术学院的2022届本科生郭资政。我最近参加了很多活动和报告,上了很多推送和新闻,但是现在站在台上,面对北大最大的本科生院系的毕业典礼,面对与我度过四年朝夕的老师和同学们,这给了我最独特的感受。非常感谢大信科给我这次与大家分享故事的机会。 还记得大一刚刚入学的时候,我和在座各位同学们一样,刚告别高中的压力,来不及轻松就切换到了大学课程的压力。我经历了抽象复杂、飘忽不定、难以捉摸、不好把握[1]的数学基础课,在数分高代AI引论的习题里沉浮,思考自己要不要退课,退课要不要退群[2]。告别了数分高代,又迎来了ICS,没想到这种压力一直持续了四年。我一直在思考一个问题,这条道路有没有终点?我究竟走到多远才能够实现自我的价值? 怀揣这个疑问,大二的时候我加入了北京大学超算队,参加了ASC世界大学生超算竞赛。我们要在两天的时间里,在赛场上搭建计算集群,在3000瓦总功率的限制下最大化几个科学计算应用的性能。在比赛中
7 min read

基本再生数和群体免疫阈值

看了一些有关covid19的推送,有的涉及到群体免疫是否有效的相关问题,他们指出存在一个理论上的阈值,当具有免疫力的人数比例超过这个阈值时,就可以实现群体免疫,而这个阈值又和基本再生数$R_0$有一些联系。于是突然很感兴趣这个比例到底是怎么计算出来的。下面就是查资料获得的详情,主要参考了这个Wikipedia。 基本再生数$R_0$给出每个病患平均让多少人被感染。假设没有人对这种疾病免疫,那么当$R_0 > 1$时,疾病患病人数将呈指数增长,此时我们说疾病处于失控的状态。当$R_0 < 1$时则疾病将会收敛到一定的人群并停止继续感染,此时我们说疾病得到了控制。 而当人群中有$p$比例的人具有了对这个疾病的免疫力时,我们应当假设在每个病患感染的$R_0$人中,同样有$p$比例的人对这种病免疫,因此只有$R_0(1-p)$人真正患病,我们定义这个数字为$R_e$,即有效再生数。 当人群中免疫的比例逐渐增大时,
2 min read

一亩三分地自动签到:识别Discuz验证码

每日签到领大米,这种东西最适合自动化完成了,不过一亩三分地签到有验证码,似乎没人做过这个,得自己造个轮子了2333 一亩三分地是Discuz论坛,可以自己搭一个,搭出来在后台看是这样子的: Discuz支持验证码样式的灵活配置,我们照着一亩三分地的验证码自己调整一下,调整出这样的配置: 宽150高60 随机图片背景 随机背景图形 随机颜色 文字阴影 GIF动画 选择了这些选项以后效果如下。 然后我们可以用我们的测试站批量造验证码数据,方法是在验证码生成的php逻辑里加一个输出后门,如下: 然后就可以在HTTP响应头中得到验证码的结果: 一口气造了60000张,50000做训练集,10000做测试集。 接下来去炼个丹,网上有现成的项目可以直接拿来改,如我用了这个: https://github.com/ice-tong/pytorch-captcha 需要把CNN模型稍微改一下,匹配我们的图片大小。 训练效果还是不错的。最后炼成的丹大小大概2.3M,使用的时候占用内存70M左右。 顺便一提,Discuz这种GIF动画其实
3 min read
基于Pose Studio 3D建模的花毽动作重现、保存与演示

基于Pose Studio 3D建模的花毽动作重现、保存与演示

在中华毽暑期体育课中,笔者叹服于踢毽子作为一门传统体育项目的博大精深,极高的入门标准以外,还有百余花样动作,每个都是花样翻新,既是对身体灵活性和反应程度的测试,有的也是对体能的考验,有如一位网络友人所作《七绝·咏毽》所言:司晨尾采四根翎,化作蝴蝶飞半空。不在花前相互戏,凭君踢打去西东。[1] 在“花毽天地”网站上[2],记录了北京部分传统花样动作,包括26门近百种,每种动作依郭七正老师《踢毽子》一书中的资料,整理成文字描述和简笔绘图。我认为此项工作十分有意义,因为踢毽的花样动作与文学作品不同,后者由于具备以纸为媒介的保存方式,很容易将它一代一代传承下去,而艺术动作本身缺乏这样的自然形式,因而必将其编辑成说明才能传与后人。在记谱法诞生以前,所有的古代音乐已悉数失传,只有将音乐以乐谱的形式保存以后,我们才能欣赏到千百年前的天籁之音,花毽动作同样如此。 然而,花毽动作本身较为精致复杂,暂时没有对应的“记谱法”。值得一提的是,同样属于花样动作的西方运动——杂耍,却具有一套用数字序列表示杂耍动作的记谱法,叫做“位换记号法”,相关介绍可以参见[3],由于与花毽动作的性质不同,
6 min read
Featured

乐律与数学

音乐与数学课程中一个我认为十分有趣的理论。 为什么一个八度被分为12音? 答:因为我们想要在八度(2:1)的分割中取出若干份来近似好听的纯五度(3:2)。那么一个八度里面有多少纯五度呢?应该就是这个数: $\log_2\frac{2}{3}$ 如果这是个有理数$p/q$那就好了,我们可以把一个八度分成$q$份然后让$p$份是一个纯五度。可惜这并不是一个有理数。因此我们做不到同时划分完美的纯五度和纯八度。 那么,我们要退而求其次找一个近似的划分,能让纯五度更像是纯五度。即,我们想找到一个有理数和上面这个对数尽量接近。 这是用有理数逼近无理数的问题,已经有解了,最优的方法是用连分数逼近,我们只展示结果: 序列里面出现了$\frac 7 {12}$,也就是分成12份,然后让7份近似是一个纯五度,是一个比较好的近似方案。 从下面一行逼近的比值(逼近效果)大概可以发现$3/5$和$7/
2 min read
国产软件优劣势分析(ICS作业)

国产软件优劣势分析(ICS作业)

思考题:考察和调研目前流行的软件,也可以选择特定领域或者特定功能的软件进行考察,根据考察结果,对国产软件进行优劣势分析。 我选择的主题是办公软件。这是一个很大的话题。说到办公软件,处于垄断地位的MS Office显然不必介绍了。而国产办公软件,虽然我们接触到的不多,但实际上有很多。办公软件从几十年前到现在,一直是非常重要的应用软件,甚至可能是好多计算机中最重要的软件了。目前有名的国产软件是WPS,而其实还包括很多其他不是很知名的软件,如永中office,基于openoffice的红旗office、中标普华office等。 先说说红旗office和中标普华。它们都基于apache openoffice,跟基本上所有国产浏览器一样,属于套壳产品,换了个名字,换一套皮肤就成了新软件。(还喜欢起一些暗示自己是中国知识产权的名字,这个这里就不说了。)它们早就销声匿迹了。我挖出来了它们的安装包,在win7的虚拟机上安装了一下,大概还能正常使用,可以看出他们的界面基本上是一样的,虽然一个原因是它们都仿office2003,不过同时它们两个在按钮布局等特点上雷同,这是
8 min read
DIY硬件番茄钟
硬件 Featured

DIY硬件番茄钟

多图预警,约需流量10M。 起因 番茄工作法曾经在我搞信息学竞赛的过程中极大地增加了我的时间利用效率。 在大一下学期开始的一段时间里,我逐渐发现自己的工作效率在降低。同时而来的还有因为时间利用不充分带来的焦虑感。我也曾经尝试使用之前的番茄工作法,后来发现效果并没有那么显著了,一个重要的原因是,之前的OI需要使用电脑,使用电脑的过程正是工作的过程,于是在电脑上运行的计时软件就成为了控制工作和休息的助手,在这个过程中没有distraction。但大学的工作在电脑上做的其实属于少数,很多事情要静心地用纸笔来做,如果摆一个电脑放在面前,只运行一个计时器,实际上是一个很分心的事情。 那放在手机上可以吗?这样的手机APP也有,我也尝试过很多款,但都没有之前那种效果了。经过分析,我认为原因在于手机APP虽然能计时,但都没能实现将实时的计时信息(还剩几分钟)展示在屏幕上——这对于提醒专注是很重要的。如果要做到展示在屏幕上,就需要阻止手机休眠,保持屏幕常亮,亮三四个小时手机就没电了。 所以一个实体的番茄钟似乎是一个必然的选择。 如果是这样的呢? 如图,一个秒表。事实上这个挂在淘宝
11 min read
思辨

人工智能能否超越人类智能?

//注:本文为人工智能引论课程作业,不小心写的太长了,于是贴在了这里。这是一个太常见的问题了,连解答都很常见,不过这篇文章里还是有少量自己认为别人没有提出过的想法的~ 人工智能能否超越人类智能?这个问题并不容易回答。2017年12月,在乌镇开幕的第四届世界互联网大会上,库克、马化腾、马云、李彦宏等互联网公司管理者,在谈及对人工智能能否超越人类智能的看法时,都给出了“不可能”的答案,言不必担心人工智能给人类带来的威胁[1]。而另一个由牛津大学和耶鲁大学联合进行,针对350多名人工智能专家的调查却显示,这些专家普遍认为人工智能将在50年内超过人类[2]。互联网上同时充斥着“为什么人工智能会超过人类”和“为什么人工智能永远不会超过人类”的论述文章。笔者认为,想要搞清楚人工智能到底能不能超越人类智能,必须搞清楚什么是智能,什么不是智能。 人工智能会让人失业吗?会的,而且这样的事情离我们并不远。根据李开复[3]的观点,金融行业首当其冲,翻译也正在被效果越来越好的机器翻译取代,部分新闻的撰稿已经可以由机器代理,还有更多的专业职业比如司机、放射科医生都可能会在不久的未来由于人工智能的冲击而失
7 min read
javascript

一次误用Promise后的体会

Promise的嵌套需要注意,一个返回Promise的Promise可能不会以你想象的方式运行。 最近有需求处理海量的并发任务(其实就是抓wikipedia的文章跳转关系),需要让所有的任务存在数据库中,而不是在内存里,否则像我的第一个版本一样,内存占用巨大,cpu爆表,还得关心断点续传(定时保存)。 写了一个叫做promiseWorker的工具函数,类似Promise.map,支持并发控制地处理一组Promise。不同之处在于,并不需要把Promise塞进去,而是传一个函数getWork,用来获取下一个要执行的Promise,如果没有下一个任务了,就返回null。 还是不难实现的,写了一个版本后,用之前发现一个问题,getWork里需要取数据库信息,这个也是异步的。所以我需要接受一个异步函数,返回一个Promise,这个Promise的结果是null或者是另一个Promise。 写了之后测,发现遇到诡异的情况,只取了一个任务,且执行完第一个任务后就停止了。 然后发现,await getWork() 得到的不是任务Promise,而是任务Promise的执行结果。它
2 min read
折腾

Ghost密码重置记录

登不上ghost了,几个常用的密码都不行,根本不知道发生了啥。 然后点Forget,半天没反应,一分钟后告诉我说“504 gateway timeout” 然后陷入了小小的恐慌 急中生智,临时改了下ghost的源码,直接把密码重置链接拿到手,解决问题。 chrome是这样的: ghost的log(可以在根目录下> ghost log查看)说这样: ??? 到现在还是不知道为什么。 估计是邮箱发送设置配置的不对。但是以前搭在别处的用本地mailer好好的。 好在ghost的源码目录结构很清晰。 根据url,很容易就猜到密码重置的逻辑在[ghost]/core/server/api/authentication.js。 然后,里面有个generateResetToken就是我们要改的地方了。 里面有个地方是生成resetToken,再转成resetUrl,再使用一个密码恢复邮件的模板发送邮件。 于是我在resetUrl的地方console.log一下试图把url输出出来。 然后发现并没输出。 可能log的并不是直接输到stdout的。不
2 min read
基于KeeWeb的个人密码管理系统
javascript

基于KeeWeb的个人密码管理系统

前一阵子bzoj发来邮件说我的账户在多个位置登录。顿时感觉之前的密码不是很可靠了。不过我也记不住那么多密码。于是思考能否有一个个人的密码数据库,每个网站的密码独立不同,全部随机生成。 然后看起来已经有大量解决方案了。 商业的解决方案有很多。如1Password,LastPass,Enpass等。不开源,解锁限制要花钱,没有网页端,不能自己搭这点违背了我们折腾的本质啊。。 不过没法否认他们做得很好。 开源的选择就少了。padlock有点简陋,passbolt好像侧重团队使用(功能也少)。 比较成熟的是Keepass。 keepass包含一个桌面端,也蕴含一个存密码的数据库文件(kdbx)的标准。好多开源的第三方客户端。有个keepass2android还是比较好看,不过感觉好多功能还没支持。 keepass2web也是个web端,不过长久没人维护了,而且是perl写的,不会改。 最棒的就是keeweb了。 keeweb是一个基于js的静态html网站,通过文件读写、webdav等api和localstorage等科技,做得和本地应用一样了。可以自己host一份
3 min read
记一次web-ide安装经历
折腾

记一次web-ide安装经历

web ide还是个很不错的功能,如果条件允许,安装一个在自己的vps上,就可以随时随地写代码,而不用考虑代码同步、环境配置之类的问题了。从csdn c-ide离奇消失后,准备自己安一个用。最近尝试了一些这方面的开源系统,被折腾得很愉悦。 结论列表 coding.net web-ide 是个国产的开源ide。 优点: 支持中文文件名和中文终端输入。 还在有人维护。 缺点: 连apt都没有是什么鬼。这样配环境很不方便。 功能太少了。基本上只有一个编辑器和一个terminal。 cloud9 老牌的国外ide。 优点: 功能丰富。 支持多人协作。 静态文件在线预览。貌似还支持服务器测试。 关闭工作空间再次打开,东西都是原样,连终端环境都是一样的。 缺点: 差不多是个死了的项目了。(无人维护) 不支持中文文件名。终端没法输入中文。 (codebox) 试了试。结果也是比较简陋,而且基本功能都有问题。 本来是为了找找能支持中文的ide,结果这个不仅不支持,连代码编辑器里输入中文都有问题。 (koding)
4 min read
javascript

给Ghost博客增加Latex支持

测试: $ x=\frac {-b\pm\sqrt{b^2-4ac}} {2a} $ $ x_1+x_2=-\frac b a, x_1x_2=\frac c a $ 网上显然是有把Mathjax直接放进Code injection里的做法。但是 1. 写的公式里的特殊字符会先被Markdown渲染,再传给Mathjax。所以写的时候还得处理这种问题。 2. 评论里的latex。 3. 编辑博客的时候无法预览效果。 于是... 为了摆脱特殊字符的麻烦,我把语法改了一下。一般都是$$包围,这样和普通字符一样会被处理,还有空格这样的麻烦。所以我改成了inline-code里面的$$。如图: 然后因为mathjax太过臃肿所以用了katex。速度很快。 再然后解决什么时候渲染的问题。 1. 页面加载完成后 2. 每隔500ms
2 min read
javascript

给Markdown编辑器HyperMD添加新功能

HyperMD是一个独特的Markdown编辑器。 和其他的编辑器不同,它的特色在于编辑和预览一体,在输入Markdown语法后自动在原位置渲染,当编辑指针指向/鼠标点击被渲染后的元素时,将自动展开Markdown编码以供编辑。 在这里可以在线尝试。 可是,虽然这是个很棒的idea,但这是一个已经被抛弃的项目,它的作者laobubu已经不再维护它,转而维护他的新作品MarkdownIME。后者我认为只能胜任简单的书写,而不是频繁地用Markdown编辑较长的内容——无法修改已经渲染的标签,而且想要修改格式简直是噩梦一般。做个评论框和普通的WYSIWYG编辑器配合还是可以的。 而HyperMD已经较难使用了。原因在于它有一些bug。我着手修复了其中的一部分。 基本功能修复 开始从github上pull的版本根本不能用。很多bug比如 控制台频频弹出错误(每次点击都会)、 公式不能正常显示/折叠、 代码区字体不是等宽的。 然后搞了一个东西可以按目录结构完整地保存远端网页。 用到的东西: 1. phantomjs,访问一下网页并延时一段时间,记录所有
6 min read
来到新博客

来到新博客

不知道时隔多久的重新安装... 基于ghost博客的1.18.4. 关于本博客 这个博客写些什么呢...就写一些自己瞎做的东西吧。 从现在开始的一些想法、工程和令我惊讶的东西写在这里。 在不远的一段时间内,主要就是(计算机)工程方面的奇怪文章了233 也学着某位神犇写一个博客历史 之前的几个平台上,基本上都是信息学竞赛题解。 wordpress的有百度网盘上的自动备份。但是ghost的备份找不到了。何其悲哉。大概丢掉了几十篇认真写的题解。 CSDN http://blog.csdn.net/guozizheng001 Wordpress 某免费php空间 http://guozz.cn/blog (已不可访问) Ghost Openshift http://blog.guozz.cn (已不可访问) Ghost Vultr https://blog.guozz.cn
1 min read