红外IR协议
Foreword 很久之前记过,但是笔记找不到了,只好重写一遍 红外协议 红外协议多种多样,NEC、RC5、ITT等等 RC-5 RC-5基础是PPM脉冲编码,载波频率大概是38KHz左右,载波占空比一般是1/4 我这里的是1/3 协议主要是下面5个部分 起始位,一般固定是1,出现一个下降沿,方便中断等接收发现 字段位,如果是原始协议,默认是1,最多64条命令,如果是拓展协议,默认是0,就可以用128条命令 切换位,用来识别按键是一直按下,还是重复按,默认一般都是0 地址位,控制设备的地址 命令位,具体的命令 IR图像 正常的一段红外载波信号 调制以后 红外接收器经过解析以后输出给MCU的波形 一般波形会被取反输出,取反以后才是实际..
更多使用Drone+docker配置本地轻量化CI/CD
前几天完成了nuxt /server的迁移工作,以后本站的部署不再仅限于vercel,而是可以用任何工具(见nitro deploy)。 发现一个比较轻量的CI/CD工具:Drone,成功给本站安排上了,但是只安排了一点(下面会说明),地址是https://blog-cf.yunyuyuan.net/,运行在我家里的linux服务器上,使用cloudflared tunnel做内网穿透,关于cloudflared tunnel详见之前的文章。 之前我写过一篇jenkins+github配置CI/CD的文章,主要是入门Jenkins,当时觉得Jeninks太吃资源,而且各种配置混杂,管理页也很丑,所以后面没有学下去了。 安装drone 准备 ..
更多hdfs 实时 Decommissioned 节点
前置工作在hfds-site.xml 中确保 dfs.hosts, dfs.hosts.exclude 都存在.假设为 /tmp/includes ,/tmp/excludes上下线节点只需要修改 Namenode 的 /tmp/includes ,/tmp/excludes 文件, 也可以同步修改所有NN, DN节点下线节点假设要移除的节点为 dn1, dn1 需要同时存在于 /tmp/includes ,/tmp/excludes执行 hdfs dfsadmin -refreshNodes 即可不重启 hdfs, 将 DN节点下线检查 hdfs web ui, 即可看到节点变为 Decomission 或者 Decomissioning 状态重新上线节点将 dn1 从 /tmp/excludes 中移..
更多自己动手实现一个可以运行在JVM上的编程语言
众所周知,JVM虚拟机被设计为可以执行栈式指令的机器。因此任何一个语言只要编译之后得到的字节码符合JVM的标准,就可以在JVM上执行,例如Kotlin、Groovy、Scala、Clojure。我们自己设计一款语言,并命名为Jinx,它支持类定义、变量定义、变量打印。它的语法解析逻辑如下12345678910111213141516171819202122232425grammar Jinx;@header {package com.nosuchfield.jinx.code;}jinx: CLASS ID LEFT_BR classBody RIGHT_BR EOF;classBody: (variable | print)*;variable: VARIABLE ID EQUALS value;pri..
更多一日一技:从Pandas DataFrame两个小技巧
今天我从网上下载了一批数据。这些数据是Excel格式,我需要把他们转移到MySQL中。这是一个非常简单的需求。正常情况下,我们只需要5行代码就能解决问题:1234567import pandas as pdfrom sqlalchemy import create_engineengine = create_engine('数据库链接URI', echo=False)df = pd.read_excel('Excel文件路径')df.to_sql(name='表名', con=engine)但我发现,这个下载的文件有两个工作簿(Sheet),第一个Sheet叫做Overall,第二个Sheet叫做Result。我们需要的数据在Result这个工作簿中。那么,在使用Pandas读取时,需要这样写代码:1df..
更多一日一技:如何同时使用多个GPT的API Key?
相信很多同学或多或少都在Python中使用过GPT API,通过Python安装openai库,来调用GPT模型。OpenAI官方文档中给出了一个示例,如下图所示:如果你只有一个API账号,那么你可能不觉得这样写有什么问题。但如果你想同时使用两个账号怎么办?有些同学可能知道,微软的Azure也提供GPT接口,在Python中也需要通过openai库来调用,它的调用示例为:当你全局设置了openai.api_type = 'azure'以后,你怎么同时使用OpenAI的GPT接口?这两个文档中给出的示例写法,都是全局写法,一但设定以后,在整个运行时中,所有调用GPT接口的地方,都会使用这里设置的参数:123import openaiopenai.xx = yy有些同学不知道怎么在Python SDK中同时使..
更多一日一技:从PDF完美提取表格
在之前很长一段时间,从PDF文件中提取表格都是一个老大难的问题。无论你使用的是PyPDF2还是其他什么第三方库,提取出来的表格都会变成纯文本,难以二次利用。但现在好消息来了,专业处理PDF的第三方库PyMuPDF升级到了1.23.0,已经支持完美提取PDF中的表格了。还可以把表格转换为Pandas的DataFrame供你分析。PyMuPDF的使用非常简单,首先我们来安装:1pip install pymupdf pandas openpyxl其中安装pandas是为了能让它转成DataFrame,安装openpyxl是为了能把结果导出为Excel。我们来看一个测试的PDF文件,如下图所示:其中表格在第5页,那么我们编写如下代码,读取第五页的表格:1234567import fitzdoc = fitz.o..
更多群晖6.2.4 安装GitLab
Foreword 折腾一下群晖,上一次折腾已经是2020年了。 硬件升级 硬盘扩容 最初没考虑那么多,使用的是RAID1,两个4T盘,实际可用比4T小一点,一直也没用满。 由于后续有大量视频素材存储,所以这点内容完全不够看了,需要扩容。组了4张8T盘,打算切换成RAID5。 DS918+只有4盘位,所以实际操作是先插入2个8T盘,进行扩容。 群晖本身早就考虑到了扩容和各种替换盘的情况,自带的帮助中都有各种情况的说明,第一步就是插入2个8T,扩容,然后将当前的盘从RAID0转换到RAID5。 这个大概花了一两个小时就完成了。 接着就是抽掉一个4T盘,插入一个新8T,进系统以后会提示修复,修复即可。这个时间非常长,大概要2天的样子,如果数据多估计就要更久了。 最后就是再抽掉一个4T..
更多使用ANTLR4格式化JSON
JSON由对象和数组组成,对象是一个Key和Value的关系映射,数组则是由多个value组成。对象使用大括号{}表示,数组则使用中括号[]表示。因此我们可以得到对象和数组的表达式object: '{' '}' | '{' kv (',' kv)* '}';array: '[' ']' | '[' v (',' v)* ']';其中kv表示一个KeyValue的关系映射,多个KeyValue中间使用逗号,分割,一个对象可以不包含元素,或者包含一个或多个元素。v表示一个元素,数组的多个元素中间同样使用,分割,数组可以没有元素,也可以包含一个或多个元素。kv由key和value组成,key只需要是一个字符串就可以,而对象的value和数组的value一样,支持以下多种元素对象数组文本数字truefalsenu..
更多黑苹果 AMD GPU 功耗一直很高
通过注入 DeviceProperties 实现Notice不需要 Whatevergreen而且当机型为 iMacPro1,1 或 MacPro7,1 时, DRM 也可以正常工作备份现有 OC 配置文件查找 PCIe 路径打开 Hackintool点击 PCIe 页找到显卡对应的 PCIe 路径, 复制(也可以直接在 OCC 里面手动选择对应的路径)编辑 plistNavi 架构的卡还需要添加 SSDT-NAVI.aml 到 EFI/OC/ACPI 和 plist 中 修改 model 的值, 可以给显卡改名称 禁用 Whatevergreen.kext删除 boot-arg agdpmod=pikeraDeviceProperties -> 显卡 PCIe 路径 -> 添加 ->..
更多