轶哥

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

Win11设置默认浏览器的方法
  •   Oct 10, 2021 2:31 AM
  •   WEB
  •   236

在win11正式版中,设置默认浏览器的方法被微软修改了,更加精细,以至于一开始我竟没有找到在哪里设置。

以前在win10中,设置默认浏览器只需要进入设置-应用-默认应用,对Web浏览器进行选择即可调整默认应用程序。但是在win11中居然开了个倒车,没有提供这样的默认选项,取而代之的是精细化的默认应用设置。

虽然精细化的设置能够最大程度的把管理权交给用户,但是win10的快捷设置方式也不失为一个值得保留的选项。两者完全可以共存。摒弃简单方案提高了用户切换默认浏览器的难度,在第一次启动Edge的时候不小心点了介绍界面的确定按钮,win11就把默认浏览器设置一键为Edge了,还不晓得杂个改回去,就这实在是有点流氓。

Win10中通过WSL2开发基于Electron的Ubuntu应用程序
  •   Apr 12, 2021 7:12 AM
  •   WEB
  •   1013

本文将介绍如何在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自动编译及自动更新、分发,可以参阅此视频教程

CryptoJS PBKDF2 AES对称加密
  •   Oct 19, 2020 7:50 AM
  •   WEB
  •   1093

CryptoJS提供了和OpenSSL加密命令一致的AES对称加密方法,此方法基于EvpKDFSecret Passphrase 进行计算(This key derivation function is meant to conform with EVP_BytesToKey.),确保进行AES加密计算的key符合长度标准并提升AES加密的安全性。CryptoJS没有直接提供基于PBKDF2的AES加密方法,但在OpenSSL中提供了-pbkdf2参数并将该参数作为AES加密的推荐选项。

将新网址推送到百度、谷歌、Bing搜索引擎
  •   Aug 5, 2020 7:44 AM
  •   WEB
  •   1398

为了方便大家快速集成,我将推送URL到百度、谷歌、Bing搜索引擎的功能整合至submit-url模块中。

模块支持两种方式调用,如果您使用的是海外服务器,且使用Node.js作为服务器端,可以通过npm install submit-url的方式安装该模块。否则,请运行模块作为HTTP服务,您的程序通过调用此HTTP API来提交网址,确保推送到谷歌和Bing搜索引擎的稳定。

PHP实现Github头像缓存
  •   Jul 21, 2020 10:56 PM
  •   WEB
  •   1461

在开发博客Github登录功能,缓存Github头像的时候,发现下载头像是个很费劲的事情。

利用位于HK的PHP虚拟主机,可以轻松解决这个问题。

伪静态依赖Apache的Rewrite模块。

Electron 预加载远程页面提升用户体验
  •   Jan 24, 2019 4:44 AM
  •   WEB
  •   6420

使用场景

Electron 内置 ChromiumNode.js,为了提升用户体验,通常 Electron 封装的前端静态文件存储在客户端本地。但总有一些特殊情况,会使用到部分远程页面。

比如微信扫码登录,需要远程访问微信的登录站点,获得扫码结果后跳转到我们自己的服务器,然后通知到主进程来关闭对应的渲染进程。目前这个问题有更高效的解决方案,详见博文《无刷新微信扫码登陆解决方案》

再比如,部分页面还没有实现前后端分离,为了产品尽快上线,也需要嵌入远程URL。

直接在Electron中访问远程地址是有风险的,控制远程地址切回本地页面也是较为繁琐的。

以上需求可以使用webview标签实现。这是Electron为我们提供的一个特殊组件,类似于iframe但跟iframe不同,确保了应用的安全性。类似于AndroidioswebviewCrosswalk,Electron中的webview也支持和渲染进程相互通讯。

Nginx 解决API跨域问题
  •   Nov 15, 2018 12:27 AM
  •   WEB
  •   4869

利用Nginx可以最简单且高效解决跨域问题。

跨域是前后端分离开发中非常常见的问题。这个问题网上已经有非常多的答案,但大部分是编程框架里面添加CORS头。但无论用什么Web框架,现已很难离开Nginx。因此直接在Nginx中处理跨域问题有得天独厚的优势,可以将OPTIONS请求拦截在API服务之前,节约服务器开销。

简单说,跨域分为简单跨域复杂跨域

简单跨域不会发送OPTIONS请求。

复杂跨域会发送一个预检查OPTIONS请求。

复杂跨域的条件是:

  1. 非GET、HEAD、POST请求。
  2. POST请求的Content-Type不是application/x-www-form-urlencoded, multipart/form-data, 或text/plain
  3. 添加了自定义header,例如Token

跨域请求浏览器会在Headers中添加Origin,通常情况下不允许用户修改其值。

  上一页 下一页