<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[笨鸟的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/glfxml</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; glfxml]]></copyright><item><title><![CDATA[批量文件重命名工具 ]]></title><link>https://blog.youkuaiyun.com/glfxml/article/details/148266432</link><guid>https://blog.youkuaiyun.com/glfxml/article/details/148266432</guid><author>glfxml</author><pubDate>Tue, 27 May 2025 22:32:12 +0800</pubDate><description><![CDATA[分享一个自己使用 python 开发的小软件，批量文件重命名工具，主要功能有批量中文转拼音，简繁体转换，大小写转换，替换文件名，删除指定字符，批量添加编号，添加前缀/后缀。同时还有文件时间属性修改。]]></description><category></category></item><item><title><![CDATA[鼠标连点器升级啦]]></title><link>https://blog.youkuaiyun.com/glfxml/article/details/146210907</link><guid>https://blog.youkuaiyun.com/glfxml/article/details/146210907</guid><author>glfxml</author><pubDate>Wed, 12 Mar 2025 17:52:50 +0800</pubDate><description><![CDATA[链接: https://pan.baidu.com/s/17YCZX0GEWeBWFVEqQZnFIg?pwd=n4e7 提取码: n4e7。本工具由本人使用 Python 开发，免费提供给大家使用。（Windows 版）]]></description><category></category></item><item><title><![CDATA[pc端鼠标连点器]]></title><link>https://blog.youkuaiyun.com/glfxml/article/details/142880089</link><guid>https://blog.youkuaiyun.com/glfxml/article/details/142880089</guid><author>glfxml</author><pubDate>Sat, 12 Oct 2024 15:55:42 +0800</pubDate><description><![CDATA[鼠标连点器，又称为鼠标点击器或自动点击器，是一种能够模拟鼠标点击操作的计算机软件。这个是我个人使用python 开发的，大家可以免费下载使用。]]></description><category></category></item><item><title><![CDATA[Python 音频添加水印]]></title><link>https://blog.youkuaiyun.com/glfxml/article/details/134860038</link><guid>https://blog.youkuaiyun.com/glfxml/article/details/134860038</guid><author>glfxml</author><pubDate>Thu, 07 Dec 2023 17:03:01 +0800</pubDate><description><![CDATA[【代码】Python 音频添加水印。]]></description><category></category></item><item><title><![CDATA[解决npm安装electron失败的问题]]></title><link>https://blog.youkuaiyun.com/glfxml/article/details/132397075</link><guid>https://blog.youkuaiyun.com/glfxml/article/details/132397075</guid><author>glfxml</author><pubDate>Sun, 20 Aug 2023 22:13:30 +0800</pubDate><description><![CDATA[在网上百度、谷歌，我甚至使用 chatgpt 提问，得到的回答都是没有用的。就要放弃的时候，看到一解决方案，试了一下可用。]]></description><category></category></item><item><title><![CDATA[使用go 开发桌面应用，做了一个md编辑器]]></title><link>https://blog.youkuaiyun.com/glfxml/article/details/132381184</link><guid>https://blog.youkuaiyun.com/glfxml/article/details/132381184</guid><author>glfxml</author><pubDate>Sat, 19 Aug 2023 16:18:08 +0800</pubDate><description><![CDATA[【代码】使用go 开发桌面应用，做了一个md编辑器。]]></description><category></category></item><item><title><![CDATA[golang 命令行生成样机图片]]></title><link>https://blog.youkuaiyun.com/glfxml/article/details/129686982</link><guid>https://blog.youkuaiyun.com/glfxml/article/details/129686982</guid><author>glfxml</author><pubDate>Tue, 21 Mar 2023 13:52:38 +0800</pubDate><description><![CDATA[因为工作需要把一批图片按照样机处理成固定的样子，就用 golang 写了一个小脚本来处理。]]></description><category></category></item><item><title><![CDATA[go操作elasticsearch 如何打印query log]]></title><link>https://blog.youkuaiyun.com/glfxml/article/details/125695023</link><guid>https://blog.youkuaiyun.com/glfxml/article/details/125695023</guid><author>glfxml</author><pubDate>Sat, 09 Jul 2022 16:11:00 +0800</pubDate><description><![CDATA[我们在写代码调试的时候，有时候需要打印es的query log 看下请求json到底长什么样。在new的时候我们需要传一个 实现了 elasticsearch 这个包Logger 接口的结构体进来。]]></description><category></category></item><item><title><![CDATA[Prettier 前端代码格式化工具]]></title><link>https://blog.youkuaiyun.com/glfxml/article/details/120293402</link><guid>https://blog.youkuaiyun.com/glfxml/article/details/120293402</guid><author>glfxml</author><pubDate>Tue, 14 Sep 2021 18:13:14 +0800</pubDate><description><![CDATA[### Prettier
* * *
是一个流行的代码格式化工具。

##### 优点：
* * *

1. 可配置化
2. 支持多种语言
3. 集成多数的编辑器
4. 简洁的配置项
##### 安装
* * *
yarn add prettier --dev --exact
npm install --save-dev --save-exact prettier
##### 配置文件
* * *
echo {}&gt; .prettierrc.json
##### 配置忽略文件
* * *
新建一个文件.]]></description><category></category></item><item><title><![CDATA[Thinkphp 5.0.24反序列化漏洞修复方案]]></title><link>https://blog.youkuaiyun.com/glfxml/article/details/110086839</link><guid>https://blog.youkuaiyun.com/glfxml/article/details/110086839</guid><author>glfxml</author><pubDate>Tue, 24 Nov 2020 17:10:47 +0800</pubDate><description><![CDATA[Thinkphp 5.0.24存在反序化漏洞，入口点在thinkphp/library/think/process/pipes/Windows.php中__destruct魔术方法。

网上有很多讲解如何利用这个漏洞进行攻击，百度Thinkphp 5.0.24反序化漏洞会出来一堆。

但是如何修复这个漏洞没有讲解，我去Thinkphp 官网上也没有查到，我的建议一个是升级Thinkphp版本。

下面是我的修复方案：

第1种方案：修改removeFiles方法如下：


    /**
     * 删除]]></description><category></category></item><item><title><![CDATA[所有Yii2 版本 反序例化漏洞修复]]></title><link>https://blog.youkuaiyun.com/glfxml/article/details/110086299</link><guid>https://blog.youkuaiyun.com/glfxml/article/details/110086299</guid><author>glfxml</author><pubDate>Tue, 24 Nov 2020 16:40:59 +0800</pubDate><description><![CDATA[什么是反序列化漏洞

   也叫PHP对象注入，漏洞形成的根本原因是程序没有对用户输入的反序列化字符串进行检测，导致反序列化过程可以被恶意控制，进而造成代码执行、getshell等一系列不可控的后果。这个漏洞并不是PHP特有，在Java、Python其他语言也存在，原理基本相通。



比较典型的PHP反序化漏洞可能会用到的魔术方法

  1.void __wakeup(void)

  2.void __construct ([ mixed $args [, $... ]])

 ...]]></description><category></category></item><item><title><![CDATA[Windows 安装与使用splash]]></title><link>https://blog.youkuaiyun.com/glfxml/article/details/108756267</link><guid>https://blog.youkuaiyun.com/glfxml/article/details/108756267</guid><author>glfxml</author><pubDate>Wed, 23 Sep 2020 16:47:58 +0800</pubDate><description><![CDATA[什么是Splash
Splash是一个JavaScript渲染服务，带有HTTP API 的轻量级Web浏览器。能够并行地处理多个页面请求。
Splash与Selenium对比
Selenium在单台机器上运行Spider，如果是分布式Spider就要每台机器上都要安装Selenium，不支持异步，效率低
Splash支持异步，分布式Spider可以使用一台Splash就可以了，效率高。
安装Splash
#安装docker
##从这个页面下载 https://hub.docker.com/editions]]></description><category></category></item><item><title><![CDATA[《Lua程序设计（第4版）》面向对象（Object-Oriented）编程]]></title><link>https://blog.youkuaiyun.com/glfxml/article/details/108755537</link><guid>https://blog.youkuaiyun.com/glfxml/article/details/108755537</guid><author>glfxml</author><pubDate>Wed, 23 Sep 2020 16:39:27 +0800</pubDate><description><![CDATA[面向对象（Object-Oriented）编程
Lua语言中的一张表就是一个对象，表与对象一样，可以拥有状态。
表与对象一样，拥有一个与其值无关的的标识（self）
两个具有相同值的对象（表）是两个不同的对象，而一个对象可以具有多个不同的值；
最后，表与对象一样，具有与创建者和被创建位置无关的生命周期。
参数self是所有面向对象语言的核心点。大多数面向对象语言都向程序员隐藏了这个机制。Lua语言同样可以使用冒号操作符隐藏该参数。
例：
	Account = {
            balance = ]]></description><category></category></item><item><title><![CDATA[《Lua程序设计第4版》读书笔记--闭包、模式匹配、日期和时间]]></title><link>https://blog.youkuaiyun.com/glfxml/article/details/108639258</link><guid>https://blog.youkuaiyun.com/glfxml/article/details/108639258</guid><author>glfxml</author><pubDate>Thu, 17 Sep 2020 11:37:15 +0800</pubDate><description><![CDATA[第一类值

   可以将某个函数保存到变量中（全局变量和局部变量）或表中

   也可以将某个函数作为参数传递给其他函数

   还可以将某个函数作为其他函数的返回值返回

   例：

    a = {p = print}  -- 'a.p'指向'print'函数

    a.p("Hello World") --&gt;Hello World   



非全局函数

   loca...]]></description><category></category></item><item><title><![CDATA[《Lua程序设计第4版》读书笔记--Lua基本语法]]></title><link>https://blog.youkuaiyun.com/glfxml/article/details/108621629</link><guid>https://blog.youkuaiyun.com/glfxml/article/details/108621629</guid><author>glfxml</author><pubDate>Wed, 16 Sep 2020 14:32:58 +0800</pubDate><description><![CDATA[注释

 单行注释，--

  多行注释

 --[[

  多行注释

  多行注释

 --]]



标示符

 标示符以一个字母 A 到 Z 或 a 到 z 或下划线 _ 开头后加上0个或多个字母，下划线，数字（0到9）

  大小写敏感



Lua数据类型

  Lua是一种动态类型语言

  nil    表示一个无效值(在条件表达式中相当于false)

  boolean  包含两个值: false和true
...]]></description><category></category></item><item><title><![CDATA[Xpath的高级使用]]></title><link>https://blog.youkuaiyun.com/glfxml/article/details/108105808</link><guid>https://blog.youkuaiyun.com/glfxml/article/details/108105808</guid><author>glfxml</author><pubDate>Wed, 19 Aug 2020 17:23:47 +0800</pubDate><description><![CDATA[@xpath相邻元素定位

  #前一位

  preceding-sibling::div[1]

  #后一位：

  following-sibling::div[1]

  #前N位：

  preceding-sibling::div[N]

  #后N位：

  following-sibling::div[N]



@xpath最后一个元素

  #例：div[last()]



@最后第二个元素

  #例：di...]]></description><category></category></item><item><title><![CDATA[Scrapyd  ScrapydWeb 简单高效地部署和监控分布式爬虫项目]]></title><link>https://blog.youkuaiyun.com/glfxml/article/details/107843705</link><guid>https://blog.youkuaiyun.com/glfxml/article/details/107843705</guid><author>glfxml</author><pubDate>Thu, 06 Aug 2020 16:36:23 +0800</pubDate><description><![CDATA[@安装和配置
#先确保所有主机都已经安装和启动Scrapyd,需要将Scrapyd配置文件中的bind_address修改为bind_address=0.0.0.0,然后重启Scrapyd  service
@安装scrapydweb
#pip install scrapyweb
@启动scrapydweb
#/usr/local/python3/bin/scrapydweb
@配置scrapydweb
#scrapyweb启动之后，会在本地目录生成一个配置文件
#启用 HTTP 基本认证
##ENABLE]]></description><category></category></item><item><title><![CDATA[Scrapyd的学习笔记]]></title><link>https://blog.youkuaiyun.com/glfxml/article/details/107843152</link><guid>https://blog.youkuaiyun.com/glfxml/article/details/107843152</guid><author>glfxml</author><pubDate>Thu, 06 Aug 2020 16:20:32 +0800</pubDate><description><![CDATA[@Scrapyd
#是一个应用程序的部署和运行scrapy，它使您能问部署项目和控制他们蜘蛛使用JSON API
@安装
#pip install scrapyd
#配置文件
##/etc/scrapyd/scrapyd.conf (Unix)
##/etc/scrapyd/conf.d/* (in alphabetical order, Unix)
##scrapyd.conf
##~/.scrapyd.conf (users home directory)
@启动scrpayd
#/usr/local/]]></description><category></category></item><item><title><![CDATA[Scrapy启动和退出时触发一个函数]]></title><link>https://blog.youkuaiyun.com/glfxml/article/details/107842988</link><guid>https://blog.youkuaiyun.com/glfxml/article/details/107842988</guid><author>glfxml</author><pubDate>Thu, 06 Aug 2020 16:18:11 +0800</pubDate><description><![CDATA[我们在写scrapy时经常会遇到这要样的需求，在scrapy启动和退出时，想触发一个函数。
只要这样写就可以了。
#!/usr/bin/env python
# -*- coding: utf-8 -*-

from scrapy import signals
from pydispatch import dispatcher
from scrapy.signalmanager import SignalManager

class DemoSpider(scrapy.Spider):
    name =]]></description><category></category></item><item><title><![CDATA[python 3  读取redis带有‘b’的问题]]></title><link>https://blog.youkuaiyun.com/glfxml/article/details/103280347</link><guid>https://blog.youkuaiyun.com/glfxml/article/details/103280347</guid><author>glfxml</author><pubDate>Wed, 27 Nov 2019 17:44:55 +0800</pubDate><description><![CDATA[这里我们存进去的是字符串类型的数据，取出来却是字节类型的，这是由于python3的与redis交互的驱动的问题，Python2取出来的就是字符串类型的。

为了得到字符串类型的数据，你可以每次取出来decode一下，但是太繁琐了，可以这样设置：



 sr = StrictRedis(host='localhost', port=6379, db=0,decode_responses=Tru...]]></description><category></category></item></channel></rss>