由于之前疏于对公司电脑上面的 C 盘的管理,它的存储空间不出意外地炸了.
于是就开始了繁琐的清理工作.首先通过 设置 -> 存储 找到 C 盘占用空间的大头.也就是微信文件和 miniconda,微信由于日常的工作联系等积压了大约 5G 左右,miniconda…emmm…8G = =
看了一下,pytorch、tensorflow 等一系列的包、环境,这个手术动起来还是挺麻烦的,牵连太多了.
不过随着工作任务的固定,有些包和环境确实也不需要了,于是就有了接下来的一些迷惑操作.
由于之前疏于对公司电脑上面的 C 盘的管理,它的存储空间不出意外地炸了.
于是就开始了繁琐的清理工作.首先通过 设置 -> 存储 找到 C 盘占用空间的大头.也就是微信文件和 miniconda,微信由于日常的工作联系等积压了大约 5G 左右,miniconda…emmm…8G = =
看了一下,pytorch、tensorflow 等一系列的包、环境,这个手术动起来还是挺麻烦的,牵连太多了.
不过随着工作任务的固定,有些包和环境确实也不需要了,于是就有了接下来的一些迷惑操作.
最近在寻找一些毕设要用到的数据,医药相关的,恰好在某个网站上面找到了备份数据库(手段不太光彩,这里就不细说了),省去了写爬虫的麻烦。
不过这些备份文件是 .MYD / .MYI / .frm 这样的后缀,emmmmm,对于用惯了 .sql 的我来说,还是很头大的。
本篇的主要内容就是如何使用 .frm / .MYI / .MYD 文件来恢复数据库,同时,做了一些关联的延申。
初级的字体反爬虫可以参照字体反爬的解决方案——突破抖音反爬虫机制这边文章.
类似的文章教程不胜枚举,所以这里对于 字体反爬虫基础 就不做赘述.本篇要讨论的是如何处理在多大数百、数千个自定义字体的复杂情况下完成从字体文件生成映射字典的工作.
上面提到的文章,采用的是人工映射,这在只有 0~10 这样的简单情况下自然是最方便的处理办法,但是对于大量字体的情况,就捉襟见肘了.并且,即使花了半天时间将这些字体一一映射,万一网站的字体库发生变化,或者网站本身就采用动态字体库,就很麻瓜了.
本着”花半天时间做重复性的苦力工作,不如花一天时间做创造性工作”的原则(预估的开发时间比较充裕,才有时间来实践这些突发的灵感),决定搞一些懒人方法.
上周在外网搭建了一个服务,主要是用来对 Mori 的各种处理状态做测试.
今天在看网站统计的时候,发现请求的次数不太正常,主要表现就是出现了下面这种画风的请求.
INFO: 174.49.25.36:51271 - "GET / HTTP/1.1" 200 OK
INFO: 14.139.155.142:41680 - "GET /currentsetting.htm HTTP/1.1" 404 Not Found
INFO: 91.241.19.84:58868 - "GET /wp-content/plugins/wp-file-manager/readme.txt HTTP/1.1" 404 Not Found
INFO: 91.241.19.84:58844 - "GET /?XDEBUG_SESSION_START=phpstorm HTTP/1.1" 200 OK
INFO: 91.241.19.84:42642 - "GET /console/ HTTP/1.1" 404 Not Found
INFO: 91.241.19.84:36206 - "POST /api/jsonws/invoke HTTP/1.1" 404 Not Found
INFO: 91.241.19.84:55124 - "POST /vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php HTTP/1.1" 404 Not Found
INFO: 91.241.19.84:36174 - "GET /vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php HTTP/1.1" 404 Not Found
INFO: 91.241.19.84:42156 - "GET /index.php?s=/Index/\think\app/invokefunction&function=call_user_func_array&vars[0]=md5&vars[1][]=HelloThinkPHP21 HTTP/1.1" 404 Not Found
INFO: 91.241.19.84:52646 - "GET /?a=fetch&content=<php>die(@md5(HelloThinkCMF))</php> HTTP/1.1" 200 OK
INFO: 91.241.19.84:53606 - "GET /solr/admin/info/system?wt=json HTTP/1.1" 404 Not Found
INFO: 203.205.34.139:47518 - "GET / HTTP/1.1" 200 OK
INFO: 182.185.14.56:62446 - "GET /currentsetting.htm HTTP/1.1" 404 Not Found
随手摘了一个 ip (219.149.212.74) 查询了一下,竟然是国内的 = =|||
又想到从大二下接触 web 开发,到现在两年多,部署了几个服务,但是却没有好好分析过网站的日志文件,正好就趁着这个机会看看吧.
距离 Mori v0.1 成形已经过了一周.这一周里面对这个代码进行了进一步的优化.
在 Mori Kokoro 开发记录 中已经对上个阶段开发中遇到的问题进行了一次汇总.本篇是对本阶段的问题的汇总.
另外.将一些实用的代码摘出.并进行注释说明.
在爬虫实习中遇到了这样一个情境:对一个给定的队列进行数据爬取(比如说是一个公司名称的队列,爬取对应的公司信息),当然不是开发结束就算是完成了,代码无法保证能够应对所有的突发情况,而且我们也需要一个半透明的,甚至是透明的爬虫监控系统,了解爬虫的任务进度,以及过程中遇到的一些问题。
这个监控系统并不难实现,使用 flask 写了一个服务平台,不过是几个小时的事情,但是我在实现过程中遇到一个很有趣的问题:用什么样的数据库来保存这些数据?
笔者写爬虫时常用的数据有 MySQL、mongoDB、Redis,这三个各有长处,用来针对不同的业务需求;而在写 web 服务时,则常用 MySQL、SQLite。
这些数据库在不同的情境下各有优劣,正巧最近有些闲工夫,就在这个问题上做了一些发散。
Factory Function for Tuples with Named Fields
Python 除了大家熟知的,可以直接使用的 list、dictionary、tuple 等容器,还有一些放在 collections 包中的容器,这些容器的泛用性不及普通容器,但是在特殊的场景下,有着超过普通容器的性能与便利性。
本篇就在官方文档的基础上,结合笔者的学习工作经验,于管中窥得 nametuple 之一斑。
在 Mac 上面安装了 iTerm2 之后,逐渐难以忍受 Windows 上面简陋的终端界面,CMD 就不谈了,即使了 Windows10 加入的 PowerShell ,也依旧差强人意。
PowerShell 强化了 Windows 命令,并且能够让电脑使用部分的 Linux 命令,这是一个重大的进步。其缺点依旧明显,Linux 命令并不完整,对于习惯了使用 Linux 命令行来实现一些骚操作的人来说,难免有点束手束脚。其次,PowerShell 的界面也不太令人满意。
所以这次按照 Windows Terminal Docs , DIY 一个美观的 Terminal。