• Docker搭建MQTT服务器

    MQTT简介

    MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的”轻量级”通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布。MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。

    MQTT是一个基于客户端-服务器的消息发布/订阅传输协议。MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛。在很多情况下,包括受限的环境中,如:机器与机器(M2M)通信和物联网(IoT)。其在,通过卫星链路通信传感器、偶尔拨号的医疗设备、智能家居、及一些小型化设备中已广泛使用。

  • Python 识别验证码图片

    之前对图片进行文字识别,用过百度的文字识别API,笔记:Python 对图片进行文字识别

    但是发现,用这个来识别图片验证码,错误率就高多了。因为验证码图片有时候经常有一些处理,不是简单的没有干扰的文字。

    然后发现用ddddocr这个库精确多了。推荐用这个库试一下。

  • Python使用ddddocr报错ImportError

    安装好ddddocr后,使用的时候一直报错:

    1
    2
    3
    ...
    from .onnxruntime_pybind11_state import * # noqa
    ImportError: DLL load failed: 找不到指定的模块。
  • Docker搭建codecombat本地服务

    这是个游戏编程网站,可以一边游戏一边学编程(Python),感觉挺有意思,就去官网玩了下。

    然后玩了4-5关后,都不能玩了,订阅需要99/月。遂作罢。

    偶然看到网上有教程,可以用Docker直接搭这个本地服务的,然后就试了下,还真成功了!就在Win10的电脑上直接搭建成功了!用Docker挺简单的。

  • Python Selenium本地debugger模式

    为了跳过selenium的webdriver检测,有很多种方法,这里介绍使用本地debugger调试模式登录。

  • pip升级命令

    1.查看当前安装的pip版本

    1
    2
    3
    4
    # 查看到pip完整信息
    pip show pip
    # 下面这个经常用来查版本的也可以查询到
    pip --version
  • 群晖NAS frp内网穿透教程

    群晖的系统管理页面,一般默认访问就是:192.168.1.122:5000 类似这样的局域网地址,端口号5000,ip是自己的路由器可以绑的一个ip地址。

    那要在外面访问,不在局域网内的话,就需要内网穿透。

    群晖本身也是自带了内网穿透的,当在【控制面板】开启QuickConnect后,这个就提供了内网穿透。设置一下QuickConnect ID后,就可以通过:http://QuickConnect.cn/quickconnect_id 来访问了。(有时候连接比较慢一点,只要打开了,能登录,一般简单操作好像没啥问题的)

  • Joplin 更改默认存储路径

    Joplin默认的存储路径在【工具】->【通用选项】中能看到,就是没法直接更改。
    Windows上版本默认的路径是:C:\Users\[username]\.config\joplin-desktop

  • Python pip安装包时报错ERROR Could not install packages due to an OSError

    Python用的是虚拟环境virtualenv,然后又是放在同步盘。这样我两台电脑都是装的同一个Python版本,就共用了同一个虚拟环境(放在了同步盘,直接同步的)。

    一台电脑上正常,在另一台电脑上用pip安装的时候报了以下错误:

    1
    ERROR: Could not install packages due to an OSError: [Errno 2] No such file or directory:
  • Python pandas读取Excel时空单元格读取为nan

    当用pandas读取excel的时候,用到的是read_excel函数。

    比如以下代码,read_excel函数中(除了第1个参数,后面是可选的):

    • 第1个参数是excel文件
    • 第2个参数是sheet名字
    • 第3个参数为指定的列名
      1
      2
      usecols = ['序号','姓名','座位号']
      df = pd.read_excel(excel_file, sheet_name, usecols=usecols)