Category - Tech

  1. 基于字体字符码点的文字异常检测

    📁 Tech

    📌 python

    0

    本文以《新世纪日汉双解大辞典》为例,介绍一种辞典文本错字的检测方法。

    1

    近日找寻日文辞典,下载《新世纪日汉双解大辞典》后,自行改写CSS样式,变更日文字体为教科书体(UD デジタル 教科書体 N-R,Windows 10 自带字体),然而后续检查中发现个别文字字体样式有异,如图中「边」字。

    font fallback

    原因何在?首先需要了解字体显示的回退机制(fallback):在网页中,如果某个字符在CSS指定的字体中不存在,那么排版引擎将根据内置的预设字体作为后备显示方案。

    此处,CSS样式指定的日文字体仅包含日文汉字,无法显示作为中文简体的「边」字,由于回退机制,排版引擎便以衬线字体展示,而 …

  2. 在 Windows 中使用 rsync 备份文件

    📁 Tech

    📌 rsync

    笔记本使用的是固态硬盘,有掉盘风险,尽管已用 OneDrive 备份了重要文件,但仍有很多文件属于“虽然没那么重要,但如果丢失了也很心痛”的情况。于是决定使用移动固态硬盘做冷备份。

    在 Windows 中,rsync 可通过 Cygwin 安装。

    执行以下命令可进行测试备份:

    rsync -gloptrn --delete $srcdir $dstdir
    

    参数解析:

    g - 保留所属组信息
    l - 保留软链接
    o - 保留所属人信息
    p - 保留权限信息
    t - 保留修改时间
    r - 递归子目录
    n - 测试执行,不进行实际文件复制操作
    delete - 删除目标目录($dstdir)下无关的文件
    

    建议开始时先使用文件数较少的目录进行测试,确认无 …

  3. 利用树莓派进行挂机下载

    一直有买 NAS 做下载姬的想法,但见过太多人买回家吃灰的例子,而且我的松鼠症并不严重,所以犹豫着。直到听闻树莓派4代发售,价格比 NAS 便宜,正好家里也有闲置 U 盘,思来想去,果然还是树莓派比较适合老子.jpg

    1. 准备工作

    在淘宝找到相关店家,根据自己的需要选择相应套餐,因为需要预订,大概一周后到货。

    树莓派到手后,先将 Raspbian 系统镜像写入 micro SD 卡,推荐使用 官方教程 提到的 balenaEtcher,十分方便。

    balenaEtcher

    之后配置远程 SSH 和 wifi(如果选择直接在树莓派上外接显示器和键盘就不用进行这一步),简单来说就是 …

  4. phpMyAdmin Docker 简单配置

    phpMyAdmin(以下简称 PMA )的数据字典(Data Dictionary)对我来说是一个比较有用的功能(实际上我只用这个功能...),可以以网页形式浏览所有表、视图、字段、索引、注释等,在一个有数百张表的数据库中可以快速检索所需信息。

    image

    利用 Docker 可以方便快速地在本地部署 PMA。

    下载

    docker pull phpmyadmin/phpmyadmin

    运行

    docker run --name PMA -d -p 8080:80 --restart=always -e PMA_ARBITRARY=1 -v /path/to/phpmyadmin/config.user.inc.php:/etc/phpmyadmin/config.user.inc.php -v /path/to/phpmyadmin/php.ini:/usr/local/etc/php/conf.d/php.ini phpmyadmin/phpmyadmin

    -e PMA_ARBITRARY=1 表示默认可连接任意数据库。

    同时我挂载了两个文件到容器中,一个是 PMA 的配置文件,另一个是 PHP 的配置文件。原因是 PMA …

  5. 数据抓取实践:对加密参数及压缩混淆JS的逆向分析

    之前在 V 站上看到一个帖子,内容是楼主想抓取数据的网站做了参数加密,不知如何解密。刚好最近有点空闲时间,可以尝试解密一下网页参数,而且很久没练手了。

    文中会介绍几种分析技巧,需要一点前端知识(总感觉在前端做防爬没什么意义,因为源码都是公开的)。文末附上爬虫 Demo 验证,虽然对于这个案例来说使用 Selenium 可能才是合适的解决方法,但暴力破解才是男人的浪漫! ...嗯本文的重点只是在于分析解密的过程。有些图片因代码过长未包含在内,意会即可。

    1. 一夫当关 - XHR Breakpoints

    网站是七 …

  6. Scrapy 暗坑之 start_requests

    众所周知,Scrapy 默认会过滤重复的 URL,不会重复抓取相同的 URL,除非显式指定。

    于是随便写了一个爬图片地址的小虫,然而不知道为什么总会爬两次 baidu 首页,你能看出错在哪里吗?

    class ImageSpider(scrapy.Spider):
        name = "images"
        allowed_domains = ["www.baidu.com"]
        start_urls = ['https://www.baidu.com/']
    
        def parse(self, response):
            images = response.xpath('//img/@src').extract()
            for image in images:
                image_item = ImageItem()
                image_item['img_url'] = response.urljoin(image.strip())
                yield image_item
    
            urls = response.xpath('//a/@href').extract()
            for url in urls:
                next_url = response.urljoin(url.strip())
                yield Request(next_url)
    

    我想了半天都不明白为什么,以为是过滤器的问题,查了半天资料仍没解决。 后来偶然看了 Spider 源码,才发现坑爹之处。

    原来源码的 start_requests 是这样写的(已忽略无关代码)

    def start_requests(self):
        for url in self …