自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

陈戏猿

没有bug的程序就像不加糖的奶茶,是没有灵魂的。

  • 博客(196)
  • 资源 (8)
  • 收藏
  • 关注

原创 APM 仿真遥控指南

地面站开发了一段时间了,由于没有硬件,所以一直在 APM 模拟器中验证。我们已经实现了 MAVLink 消息接收和解析,显示无人机状态,给无人机发送消息,实现一键起飞,飞往指定地点,降落,返航等功能,本期我们来看看如何在模拟器中实现对无人机的遥控。

2025-03-22 23:11:59 918

原创 PostgREST 权限篇

PostgREST 本身并没有权限管理的功能,而是将权限验证下放到了数据库层,通过数据库的角色来控制用户访问数据的权限,而 PostgREST 唯一要做的事就是获取每个请求发起者的角色,然后切换到这个角色再去执行 SQL,成败就看这个角色所具备的权限了。为了安全的获取用户的角色,PostgREST 使用了 JWT 来传递角色信息。但是 PostREST 只能解析 JWT token,用户登录以及如何生成 jwt token 需要我们自己实现。在中,我们创建了todos。

2025-03-19 15:00:38 940

原创 PostgREST 入门篇

PostgREST 是一个为 PostgreSQL 数据库提供 REST API 的后端服务, 是用 Haskell 开发的开源软件,源代码非常值得学习。有了 PostgREST,搭配 PostgreSQL,只要建好表,加上一个简单的配置,就可以拥有一个 REST API 后端,简直不要太爽。

2025-03-14 13:04:47 600

原创 使用easytier远程内网电脑

最近换了个工作地,需要用自己的笔记本去远程另一台内网主机,因为我的笔记本和要远程的主机在不同的局域网内,无法直连,所以前一段时间一直用的向日葵远程桌面进行远程。用了一段时间实在受不了了,要强制登录,还到处弹广告,右下角浮窗也关不掉,加上最近连接也不是很稳定,加上工作的问题,搞得心情实在是很糟糕,一怒之下我决定自己搭建一个vpn连接,用Windows原生的远程桌面。顺便一提,之前写的这篇说的就是向*葵。搭建VPN需要一台公网电脑做为跳板,我没有可以公网访问的电脑。于是我找到了。

2025-03-12 10:45:07 891

原创 Go加spy++隐藏窗口

除了使用 spy++ 去获取句柄,还可以直接在 Go 中调用 Windows 的相关 API 获取窗口句柄,比如获取活动窗口句柄,获取当前鼠标下的窗口句柄等。更进一步,窗口句柄可能会变,这里的方法其实是一次性的。但是窗口的类名一般不会变,我们可以记录下要隐藏窗口的类名,然后定期检查,只要窗口出现就给它隐藏掉。思路很简单,用 spy++ 找到要隐藏的窗口的句柄,然后调用 Windows 的。最近发现有些软件的窗口就像狗皮膏药一样,关也关不掉,一点就要登录,属实是有点不爽了。啊,世界终于清净了。

2025-03-06 18:12:14 366

翻译 Elixir中的切片

Learn X By Example · Elixir 篇 · Slices in Elixir

2025-02-28 17:40:23 19

翻译 Elixir中的数组

Learn X By Example · Elixir 篇 · Array in Elixir

2025-02-28 17:02:28 30

翻译 Elixir中的Switch

Learn X By Example · Elixir 篇 · Switch in Elixir

2025-02-28 15:56:20 21

翻译 Elixir中的If Else

Learn X By Example · Elixir 篇 · If Else in Elixir

2025-02-28 15:40:03 21

翻译 Elixir中的For循环

Learn X By Example · Elixir 篇 · For in Elixir

2025-02-28 15:17:46 15

翻译 Elixir中的常量

Learn X By Example · Elixir 篇 · Constants in Elixir

2025-02-28 12:52:07 15

翻译 Elixir的变量

Learn X By Example · Elixir 篇 · Variables in Elixir

2025-02-28 12:46:17 15

翻译 Elixir的值类型

Learn X By Example · Elixir 篇 · Values in Elixir

2025-02-28 11:21:11 11

翻译 Elixir的 Hello World

Learn X By Example · Elixir 篇 · Hello World in Elixir

2025-02-28 11:11:10 15

原创 关于 mavproxy 中消息签名的补充

在的最后一节中,我介绍了如何在 mavproxy 中启用消息签名,因为我在开发一个地面站的项目,在没有硬件的情况下,只能先用模拟器来测试。但是当我在 mavproxy 中设置了签名密钥之后,地面站这边解析消息签名时却出现了问题,经过一番斗智斗勇,发现问题并不简单,所以在此扒一扒其中的细节,作为前面文章的补充,因为那篇文章也修改好几次了,因此还是决定单开一篇,专门讲讲关于消息签名的问题。

2025-02-24 18:46:26 624

原创 解决 ** (Mix.Error) Can‘t continue due to errors on dependencies

这个问题在最新版的 ElixirLS 插件中任然存在,只要我修改了依赖库版本就会出现。好在并不影响运行,如果不觉得它碍眼的话,其实也可以不用管它。最新在 VSCode 中开发 elixir 程序遇到了这个问题,当我修改依赖库版本的时候它就会出现,但是程序本身是可以正常编译运行的。,号称是下一代 Elixir 语言服务器,这是一个社区开源项目,大家可以尝试或者参与贡献一下。这其实是 ElixirLS 插件的问题,可以参考这个。按照 issues 里的讨论,删掉。之后确实能解决这个问题。

2025-02-18 11:49:26 128

原创 Ardupilot模拟器配置与使用基础

我们介绍了无人机模拟环境的搭建,并在 MAVProxy 控制台通过命令让无人机飞了起来。这一篇让我们来继续探索 MAVProxy 的功能。

2025-02-18 11:00:03 923

原创 在Windows环境下搭建无人机模拟器

最近要开发无人机地面站,但是没有无人机,开发无人机对我来说也是大姑娘坐花轿——头一回。我们要用 MAVLink 和无人机之间通信,看了几天 MAVLink,还是不得劲儿,没有实物实在是不好弄,所以想先装一个无人机模拟器来试试。

2025-01-10 20:39:53 1001

原创 Elixir+MAVLink=玄学

首先是有很多警告,都是由于我的 elixir 版本过高,一些被弃用的语法和函数导致的,找到发出警告的代码,一一改过来就可以了,其实也不是很多。我用的是 elixir 1.17.3,导入这个库之后,不出意外的报错了。目前还没有回复,MAVLink已经不重要了,我现在比较好奇这个错误是怎么个事儿,希望有高人指点,等问题解决来再来写后续吧。不知道什么原因这里始终报错说找不到这个库,我试了导出 erlang 的其他库的头文件中的记录,比如。是 erlang 的 xml 库的头文件,它在 erlang 安装目录的。

2025-01-08 15:39:44 406

原创 Phoenix升级到1.7.18报错问题解决

一不留神,没想到已经是2025年的第二天了,没有时间感慨岁月如梭了,今年的第一篇博客是要解决去年的一个问题。说是依赖错误,但就是愣看不出来哪个依赖有问题,而且项目也能正常运行,真是见了鬼了。不得不说这方面资料是真的少,这个问题网上压根查不到,AI都不好使,不过好在问题是解决了。之后,后面生成的项目都是用的最新版本的库了,不过并不影响已经用低版本的。在各种调整依赖版本,装了清,清了装,一通折腾之后,还是报错。其实已经不算兼容了,导致旧的项目都会出问题。的版本,旧的项目就没问题了。生成页面时,坏了,报错了。

2025-01-02 15:30:48 332

原创 在Phoenix中使用daisyUI

phoenix 的视图使用的是 tailwind CSS,写原生的 tailwind CSS 对于前端小菜鸡来说还是挺有挑战性的。提供的组件来构建UI,这样我们可以统一在组件库中去处理 CSS 样式。当然,在组件中我们也可以使用 daisyUI 来简化样式编写。是一个纯 CSS 库,就像一个基于 tailwind CSS 的 bootstrap,但是它不包含 js。默认的 tailwind 的表单可能会和 daisyUI 的表单冲突,我们可以将。中还有更多命令别名,我们可以添加自己的命令别名,非常方便。

2024-12-30 10:05:23 429

原创 Elixir日志详解

Elixir 的日志功能由 Logger 模块提供,它基本上是 Erlang 的:logger的封装。:emergency:alert:critical:error:warning:notice:info:debug当然常用的还是:error到:info之间的几个。每个级别都有对应的函数用来记录日志,支持和,以及返回结构化或非结构化数据的。所谓结构化数据就是 keyword list 和 map,Elixir 也称之为“report”。非结构化数据就是字符串或字符串列表。

2024-12-17 15:56:02 1004

原创 Elixir Registry

关于 Elixir 的 Registry,官方文档写的不太容易理解,因此这里我们采取意会的方式来介绍它。Registry 这里还是翻译为“注册表”,也比较贴合它的实际功能。我们知道在 Elixir 中,可以为进程注册一个名称,这样就可以通过这个名称向进程发送消息了,而需要 PID。这就跟域名和 DNS 很像,同理,Elixir 也需要一个地方来记录名称和 PID 的对应关系。像 GenServer 等这些在start_link函数中可以直接指定进程名称,对于多个节点的分布式环境,Erlang 也提供了。

2024-12-13 11:38:02 886

原创 Mix.Project

定义和操作 Mix 项目。Mix 项目是通过在模块中调用 来定义的,通常放置在 文件中:配置为了配置 Mix,使用 的模块需要导出一个 函数,该函数返回一个关键字列表,代表项目的配置。这个配置可以通过 读取。注意,如果没有定义项目, 也不会失败;这使得许多 Mix 任务在没有项目的情况下也能工作。如果一个任务需要项目被定义,或者需要访问项目中的特定函数,可以调用 ,如果项目没有定义,它会抛出 异常。 返回的选项列表并不固定,因为许多 Mix 任务都会从这个配置列表中读取自定义的选项。以

2024-12-11 17:15:53 497

原创 Elixir修改Hex镜像源及相关配置

在 Elixir 项目中,我们通过运行获取依赖,如果使用默认的国外镜像源,下载依赖时可能会遇到网络问题。这里我已经配置成国内镜像源了。要修改 Hex 镜像源,既可以通过命令,也可以通过命令行配置。环境变量是HEX_MIRROR。其实在的“修改镜像源”一节我也介绍了如何配置 Elixir 的镜像源。除了mirror_url,Hex 还有许多其他配置,我们可以通过以上是 Hex 2.0.6 版本的配置。

2024-12-09 14:34:27 616

原创 Elixir GenServer

GenServer是一个用来实现客户端-服务器模式中服务器的行为模块。GenServer是一个普通的 Elixir 进程,同其他 Elixir 进程一样,它可以用来保存状态、异步执行代码等。使用这个模块来实现通用服务器进程(GenServer)的优势在于,它有一套标准的接口函数,并提供用于跟踪和错误报告的功能。同时它也可以用到一个监督树中。fill:#333;color:#333;color:#333;fill:none;

2024-12-07 19:03:34 689

原创 Elixir Task.Supervisor

是一个任务监督者。该模块定义了一个监督者,可以用来动态监督任务。子进程描述支持的选项参见的文档。更多示例请参见Task模块。

2024-12-06 10:38:42 303

原创 Elixir DynamicSupervisor

一个被优化为仅动态启动子进程的监督者。Supervisor模块被设计用来处理静态子进程,它们在监督者启动时按给定顺序启动。启动时没有子进程。相反,子进程是通过按需启动的,且子进程之间没有顺序。这使得能通过使用高效的数据结构管理数百万子进程以及并发执行某些操作(如关闭)。

2024-12-06 10:13:34 679

原创 Elixir PartitionSupervisor

一个负载均衡监督者。在大型系统中,某些进程可能会成为瓶颈。如果这些进程是无状态的,或者它的状态在不同实例之间没有yi’lai可以被轻易地分区,并且它们之间没有依赖关系,那么它们可以使用 PartitionSupervisor 来创建多个隔离且独立的分区。

2024-12-06 10:12:01 511

原创 Elixir Supervisor

Supervisor是一个用于实现监督者的模块。监督者是一个监督其他进程的进程,被监督的进程我们称为子进程。监督者用来构建一个进程层级结构,称为监督树。监督树提供了容错性,并封装了应用的启动和停止。有两种方式启动监督者,一是通过,二是定义一个监督者模块并实现所需的回调。以下大部分示例都是使用前者,但也有使用后者的。

2024-12-05 19:24:18 1474

原创 Elixir Application

是用于处理应用和定义应用回调的模块。应用是 Erlang/OTP 中打包软件的惯用方式。为了理解这个概念,它类似于其他编程语言中常见的“库”的概念,但又有一些额外的特性。应用是一个实现特定功能的组件,具有标准化的目录结构、配置和生命周期。应用程序可以被加载、启动和停止。每个应用程序还有自己的环境,它提供了一个统一的API来配置每个应用。开发人员通常与应用环境及其回调模块打交道。因此,我们首先讨论它们,然后再深入应用资源文件和生命周期的细节。

2024-12-05 00:01:43 1143

原创 Elixir Task

用于方便的派生和等待异步任务。任务是一个执行一个特定动作的进程,期间几乎不与其他进程通信。任务的常用场景是通过异步计算将顺序代码转化成并发代码。通过async派生的任务可以(也只能)由调用进程等待结果,如上例所示。其原理是派生进程会在计算完成时向调用者发送一个消息。相比于通过spawn/1派生的进程,任务包含了监控和日志。除了async/1和await/2,任务也可以做为监控树的一部分启动,以及动态在远程节点派生。稍后我们会介绍。

2024-12-04 16:42:48 1139

原创 Elixir Agent

代理是一个围绕状态的简单抽象。在 Elixir 中,通常需要共享或存储状态,这些状态必须从不同的进程访问,或者由同一进程在不同时间点访问。Agent模块提供了一个简单的服务实现,允许通过简单的API访问和更新状态。

2024-12-04 16:39:42 430

原创 Elixir Config

一个简单的基于关键字的配置API。

2024-12-04 16:33:52 274

原创 如何快速接纳 Emacs

之前一直使用 vscode 做为编辑器,但是后来我发现这家伙实在太费电了,即便我的笔记本有80瓦时的容量,也能明显感觉电量飞快流失。这让我非常不爽,于是我决定转向 Emacs,其实我接触 Emacs 也有较长一段时间了,但是一直没有完全投入它的怀抱,因为实在是不怎么习惯,用上 Emacs 就像突然瞎了一样,工作效率太低。所以我决定重新思考这个问题,为什么觉得不习惯,怎样才能快速习惯?

2024-11-01 16:17:24 1056

原创 Programming Elixir笔记

💡 等号代表模式匹配,当匹配成功时,就会发生绑定。其中表达式的值会做为模式匹配的结果。绑定只会发生在等号左边的变量,等号两边都没有变量或者变量出现在等号右边都只会做匹配。等号左边的变量可以重复绑定,也就是说绑定其实是可变的,所以做为函数式语言,elixir并不纯粹,不像Erlang,变量只能绑定一次。要让等号左边的变量只做匹配,不做绑定,可以使用,如^a=1,此时如果a的值不是1,匹配就会失败,因为不做绑定,所以a要提前绑定一个值。操作符称为 pin。此外,在同一次模式匹配中,变量是不变的,不可重复绑定。

2024-10-28 16:49:25 741 1

原创 如何在本地运行threejs官方示例

不是必须的,但是如果你的 js 文件中有中文,在浏览器打开查看的时候可能会看到乱码。像 gin 这样的框架,静态文件服务底层也是用的 go 原生库,所以也是加上上面的代码就可以了,如果不是用的 go 原生库封装的静态文件服务,就需要去看看对应的文档了。当然新版浏览器也支持这样的语法了,兼容性可以去网上查看,最新的 Edge 和 Google 应该都没问题。另外一个要注意的地方是,如果要自己编写 threejs demo,在引入 threejs 库的时候,可以。亲测不行,倍感崩溃。,这不就齐活了吗,然鹅。

2024-10-23 14:38:37 555

原创 数组中超过一半的元素

还有一种叫 Boyer-Moore 投票算法,时间复杂度 O(n),空间复杂度 O(1)。它的思路类似于消消乐,我们将超过一半的数叫做众数,先将数组分成众数和其他数两个阵营,然后一一相消,剩下的就是众数了。这个问题要解起来不难,暴力计数,转为 map,排序都能解决。但是他们的空间复杂度都不低,即便排序能做到 O(1) 的空间复杂度,但最低的时间复杂度也是 O(nlogn)。在 elixir 中我们可以用 reduce 来实现这个迭代过程。有一个数组,找出其中数量超过的元素是谁。

2024-10-18 15:32:43 245 2

原创 Elixir 工具篇

学习一门新的语言之前,有必要先了解下它提供的工具。通过这些工具我们才能编译和运行代码,这俗话说的好,纸上得来终觉浅,绝知此事,它要躬行呐!实践永远是学习的不二法门。相比于 erlang,elixir 提供的工具要更加现代化。安装完 elixir 之后,你会得到四个工具,它们都在 elixir 安装目录的bin目录下,分别是elixirelixirciex和mix。打开看一下你就会发现它们其实都是脚本。没错,都是脚本!这些文件中,不带扩展名的是 Linux 脚本,.batWindows 命令行脚本,

2024-10-18 10:07:31 1228

原创 生成 Excel 表列名称

一开始以为就是一个简单的26进制转换,到底还是大意了,这里的每一位都是没有0的,而且能取到进制的最大值。正常26进制每一位都是0到25,但是这里却是1到26。只不过和正常的 n 进制转换不同,我们不能直接用 n 去取模和取余,而是应该用 n-1。Excel 大家都用过,它的列名是用字母编号的,A 表示第一列,B 表示第二列,AA 表示第27列,AB 表示第28列等等。实际上每次都多加了1,所以在计算每一位的值时要将它减出来。来构造每一位的值,连递归都不用写了,可以说是十分优雅了。的范围是1到26,我们将。

2024-10-16 14:11:25 1752

adb(免安装).zip

adb命令免安装版本,解压即可使用。

2023-08-09

redis-gui-Setup-1.1.2.exe

一个免费的,有界面的redis客户端

2021-03-28

graSSHopper Setup 1.1.6.exe

一款免费的SSH工具,界面美观,功能丰富。

2021-03-28

Beekeeper-Studio-Setup-1.10.2.exe

一款不错的开源SQL客户端,支持常用数据库和各大平台,界面美观。

2021-03-28

WindowsTerminal配置文档.pdf

WindowsTerminal官方配置文档,安装方式:microsoft Store搜索WindowsTerminal即可下载

2020-11-17

ColorBlack.css

ColoeBlack是一个非常漂亮的Typra黑色主题,由NightYuxl经过了一点自定义,比如不同颜色的标题,行内代码高亮,漂亮的字体等。整个主题只有一个css文件,非常简单,你也可以再进行个性化的修改,不满足于Typora官方主题的可以试试。

2020-05-14

为Windows的右键->新建菜单添加新建Markdown文件选项

在Windows的右键->新建菜单项中添加【新建Markdown文件选项】,前提是已安装Typora编辑器。

2019-12-05

Geany暗黑主题文件

Geany暗黑主题文件,下载后放到Geany安装目录\share\themes\MS-Windows\gtk-2.0\下替换掉原来的gtkrc文件,建议备份原来的文件。

2019-11-09

Geany美化配置文件

Geany配置文件,用于美化你的Geany。解压后替换掉你电脑上C:\Users\用户名\AppData\Roaming下的geany文件夹,重启Geany生效。

2019-11-09

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除