轶哥

📚 Having fun with AI Agent. Always learning.

SSL证书过期监测
  •   更新:2022-02-08 16:52:00
  •   首发:2022-01-28 23:46:00
  •   JavaScript
  •   2866

部分程序配置了免费 SSL 证书更新程序,但是更新程序更新证书失败并不会通知到管理员,可能导致业务异常。通过针对域名的 SSL 证书过期监测小程序,作为二道防火墙,避免事故发生。

需求

  1. 以 cron 风格定时监测 SSL 证书过期和可用状态。
  2. 提前 2 天发送短信通知管理员(需要支持多手机号)。
  3. 可以在线维护通知列表(域名+手机号)。
  4. 程序要尽量简单,尽量降低后续维护成本。
  5. 开发要尽可能快。
开源MySQL定时备份系统
  •   更新:2021-08-25 14:58:16
  •   首发:2020-02-15 13:10:41
  •   JavaScript
  •   5074

自动获取 MySQL 数据库备份文件并将其上传到对象存储。

Features

  1. 支持加密后压缩上传(默认上传到私密存储的“归档存储”类型,文件需解冻后方可下载)。
  2. 定时自动执行任务。
  3. Web 可视化动态添加配置,支持同时管理多个数据库,可以设置需要备份的表或不需要备份的表。
  4. 支持生成单个 PHP 文件,用于仅内网可访问数据库或虚拟主机数据库的备份。
  5. 支持生成 Shell 文件,用于仅内网可访问数据库的备份。(由于 Docker 部署已非常方便,这个功能不再开发)
  6. 支持 Swagger UI 查看 API,方便与其它系统整合。
  7. 支持超级管理员添加多个普通管理员超级管理员可以管理所有数据库,普通管理员之间内容互不可见,适合普通开发团队的使用场景。
  8. 由于此系统仅为灾备设计,仅支持全量备份,默认备份数据+结构(包含视图、触发器等),不支持增量备份。如果您的数据非常重要,请勿将此作为唯一备份系统,可配合服务商提供的备份功能使用。
  9. 兼容支持手机端访问。
关于JavaScript作用域与函数提升的一道思考题
  •   更新:2021-05-12 08:36:53
  •   首发:2021-05-12 01:37:23
  •   JavaScript
  •   3679

在某个JavaScript前端群里面,网友深圳-resolve发的一道关于JavaScript作用域与函数提升的思考题引发了众位大佬的讨论。

题目

console.log(a)
if (true) {
    a = 2
    function a () {}
    a = 3
    console.log('内部', a)
}
console.log('外部', a)

执行结果:

image.png

打印a在所有位置的值:

image.png

自助设备广告屏自动播放视频功能实现
  •   更新:2021-04-06 18:28:01
  •   首发:2021-04-06 18:28:01
  •   JavaScript
  •   4167

接到一个需求,基于Electron开发Windows下的自助设备广告屏(上屏)自动播放视频的功能。设备下屏是带触控功能的屏幕,可以进行业务咨询、业务办理、视频咨询,上屏是不带触控功能的1080P屏幕。

%E8%87%AA%E5%8A%A9%E8%AE%BE%E5%A4%87.jpg 两个屏幕接入了同一个主机,下屏是主屏幕,上屏是分屏(扩展屏)。为了避免下屏进行视频咨询的时候,上屏播放视频的声音影响到对话,因此上屏播放视频功能需要开放相应的API接口,在下屏播放视频或进行音视频咨询的时候,相关的开发者能够通过API对上屏视频禁音。

由于我们已经开发了Android平台的同款设备,因此Electron平台需要和Android平台保持一致的API。

Apple M1 编译原生Electron应用程序
  •   更新:2021-03-18 12:34:43
  •   首发:2021-03-18 10:48:56
  •   JavaScript
  •   4038

Apple Silicon M1芯片可谓是性能爆炸,开发体验极佳,生态中适配速度也算得上势如破竹。借助Rosetta 2平稳过渡ARM64,实在是高明。在MacOS 11+系统中通过 Apple M1 编译原生M1 Electron应用程序也算得上轻松容易。

理论兼容M1芯片的Electron版本是11.2.3,实测兼容较好的版本是13.0.0-beta.5+

electron-builder需升级至20.10+,建议版本22.10.5+

本地Node.js版本请安装v15.5.0+

MacOS建议升级到11.2.3+

通过electron-builder编译Electron ARM64应用程序,需调整package.json配置文件。

Electron 12+ 出现 require is not defined 报错解决
  •   更新:2021-03-18 09:52:18
  •   首发:2021-03-18 09:44:46
  •   JavaScript
  •   5401

在 Electron 12 及更高版本,设置了nodeIntegration: truenodeIntegrationInWorker: truenodeIntegrationInSubframes: true,渲染进程仍然可能出现require is not defined的报错。

这个报错还跟随有module is not definedexports is not defined

同样的报错在Electron 5+曾出现过,原因是发布v5.0.0的时候,官方将nodeIntegration默认值设置为了false(与此同时还将webviewTag设置为了false)。

近期,Electron 12.0.0 发布。修复了诸多异常。同时也将contextIsolation的默认值更改为true(详见:https://github.com/electron/electron/pull/27949)。

【视频教程】Electron自动编译及自动更新、分发
  •   更新:2021-03-14 21:43:10
  •   首发:2021-03-11 17:32:24
  •   JavaScript
  •   3544

为了实现Electron的自动更新,曾撰文《Electron 应用分发系统(Electron自动更新)》,不少小伙伴反应说不知道正确的操作姿势。仔细想来,这个部署确实不简单,因此特意录制此视频。

视频从头开始讲解了如何搭建一个Electron官方示例,配置并实现push到git仓库后服务器端自动编译、自动上传编译后的文件到七牛对象存储、客户端捕获更新信息并且后台静默更新的配置全过程。

需要特别留意的是,每次发布新版本之前都需要修改package.json里面的version版本号,否则自动更新分发会失效。

  上一页 下一页