轶哥

妄图改变世界的全栈程序员。

Linux/Win/OMV5 安装WebDAV服务

此安装方法通用于所有*unix系统、Windows系统。

在OMV5(openmediavault)中安装WebDAV服务器端的方法不同于旧版本。在OMV5之前的版本,可以直接在管理界面的“插件”中安装并启用WebDAV服务,但是新版本去除了此插件,需要手工进行安装。目前相关资料较为匮乏,网上的WebDAV镜像质量也参差不齐。

通过对比目前较为受欢迎的WebDAV服务器端软件,https://github.com/hacdias/webdav 较为稳定(唯一遗憾的是,此仓库作者提供的Docker镜像竟然在Docker Hub中排名非常靠后,以至于完全搜不到)。

此开源项目是使用GoLang开发的,因此兼容性非常强悍,仅作者预编译针对不同操作系统和CPU架构的二进制文件就有34种,可以说涵盖了几乎所有运行环境。

作者默认使用此软件的都是专业选手,因此没有手把手的文档可以参考。这对于非程序员甚至非GoLang程序员不太友好。

关于JavaScript作用域与函数提升的一道思考题

在某个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

Win10中通过WSL2开发基于Electron的Ubuntu应用程序

本文将介绍如何在Windows 10操作系统中借助WSL2开发基于Electron的Ubuntu窗口应用程序,可以实现在win10中编写代码并查看linux应用的运行效果。

借助此方法,仅需一台MacOS设备和一台Win10的设备,即可通过Electron开发和测试主流操作系统(Windows、Linux、MacOS)下桌面应用程序并可以有差异化的调用操作系统的原生API。

通过MacOS系统可以编译几乎所有平台的应用程序,例如可以在MacOS中编译Win10 x64Linux ARM64等平台的应用程序。但是在win10ubuntu中无法编译MacOS应用程序(可以借助虚拟机或者带有MacOS系统的Docker镜像实现MacOS平台应用程序的编译,但是可能无法正常进行签名)。关于Electron自动编译及自动更新、分发,可以参阅此视频教程

自助设备广告屏自动播放视频功能实现

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

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

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

记一次Intel AX201网卡卡顿问题解决

使用一台全新的联想yoga14s(intel版)设备连接了wifi6网络,在安装Symless(一款多设备协同软件)后,发现鼠标移动卡顿,ping内网网关,发现延迟高达60ms,还伴随有断流现象。出现高延迟、断流的同时,蓝牙也会变得卡顿,断开无线网络后,蓝牙功能恢复正常。

网卡设备工作在160MHZ,显示协商网速在1200M附近。使用MacBook和IOS、Android设备测试到网关的延迟是正常的,说明路由器在工作。

win10共享文件无法访问,保存了错误密码

在win10中,访问网络中的计算机共享文件,有些计算机配置需要使用账户和密码才能访问其共享的文件。

image.png

然而,如果勾选了记住我的凭据,但是记住了一个错误的凭据(特别是当这个凭据用户名为guest或者某个被禁用的用户)。那么将会出现下面的报错,无法进入共享文件夹且无法切换用户。

image.png 报错内容: \DESKTOP-XX 无法访问。你可能没有权限使用网络资源。请与这台服务器的管理员联系以查明你是否有访问权限。此用户无法登录,因为该帐户当前已被禁用。

解决此问题需要删除在系统中已保存的有异常的用户信息。

Apple M1 编译原生Electron应用程序

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 报错解决

在 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)。

  上一页下一页