Becomin' Charles

算法 | LNMP | Flutter | Mac

Becomin' Charles

最近 5 个月,我都在忙着构建我的第一开源项目 HexoPress,这个项目是使用 Electron + Vue 3 + TypeScript 等技术实现的,一方面,我真的很需要一款合自己心意的博客编辑器,另一方面,我也是真心想学习 Electron 和 Vue 3 的技术,当然还有 TypeScript。

现在,项目终于有了雏形,所以,这里我给出 0 基础学习 Vue 的第一个建议,找一个真实的项目做,在实现项目的过程中学习,这可能是学习某种技术的最佳方法。

阅读全文 »

缘起

昨天,我写了一篇文章,介绍如何使用项目模板,构建一个 Electron 项目的脚手架,我发现我自己在本地无法运行成功,出现了错误。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
✖ Failed to install modules: ["@electron-forge/plugin-vite@^7.2.0","@typescript-eslint/eslint-plugin@^5.0.0","@typescript-eslint/parser@^5.0.0","eslint@^8.0.1","…
With output: Command failed with a non-zero return code (1):
yarn add @electron-forge/plugin-vite@^7.2.0 @typescript-eslint/eslint-plugin@^5.0.0 @typescript-eslint/parser@^5.0.0 eslint@^8.0.1 eslint-plugin-import@^2.25.0…
yarn add v1.22.21
info No lockfile found.
[1/4] Resolving packages...
info Visit https://yarnpkg.com/en/docs/cli/add for documentation about this command.
(node:89705) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.
(Use `node --trace-deprecation ...` to show where the warning was created)
error Error: certificate has expired
at TLSSocket.onConnectSecure (node:_tls_wrap:1674:34)
at TLSSocket.emit (node:events:515:28)
at TLSSocket._finishInit (node:_tls_wrap:1085:8)
at ssl.onhandshakedone (node:_tls_wrap:871:12)
(node:89705) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.
(Use `node --trace-deprecation ...` to show where the warning was created)
error Error: certificate has expired
at TLSSocket.onConnectSecure (node:_tls_wrap:1674:34)
at TLSSocket.emit (node:events:515:28)
at TLSSocket._finishInit (node:_tls_wrap:1085:8)
at ssl.onhandshakedone (node:_tls_wrap:871:12)
⚠ Finalizing dependencies

错误内容如上,看着一大段,很吓人的样子,不过可以仔细阅读一下,真正的错误是在第 10 行,Error: certificate has expired,如果你去网上搜,遇到这个错误怎么办?

阅读全文 »

简介

Electron 是一个开源的跨平台桌面应用程序开发框架,它允许开发者使用 Web 技术(如 JavaScript、HTML 和 CSS)来构建桌面应用程序。Electron 嵌入了 Chromium(一个开源的 Web 浏览器引擎)和 Node.js(一个运行在服务器端的 JavaScript 运行时环境),使得开发者能够创建既具有现代 Web 应用的丰富交互性,又具备传统桌面应用的功能和性能的应用程序。

程序员每天离不开的 Visual Studio Code,以及团队协作软件 Slack,聊天社区 Discord 的客户端,都是用 Electron 开发的,可能打出来的包会比较大,但是框架周边成熟度,兼容性和开发体验是真的很棒。仍然是现在桌面端跨平台开发的首选技术之一。最近,我就利用 Electron 技术开发了一个博客客户端软件 HexoPress,开源在 GitHub。从 0 开始学习并完整体验了 Electron 开发的各个方面。

本文给大家分享,2024 年,如何从 0 开始创建一个 Electron 项目。

阅读全文 »

有人说,当你开始怀旧的时候,你可能就已经老了。我想,当你整天想着给自己的代码编写单元测试的时候,作为一个程序员,可能你也老了。

从业十多年了,多数情况下,我还是需要编写代码的,但是写了这么多年代码,我觉得,我硬是没有学会怎么写单元测试。至少无法做到在自己的项目里大规模的使用单元测试。

阅读全文 »

今天看到一篇很好的技术文章,从虚拟化技术的变迁过程,理解 K8S 技术的价值。为了理解现今 K8S 为什么出现,作者从最开始 Web 应用的典型架构开始,逐步介绍了一次次技术升级和变革的历程和原因,以及带来的变化。最后导出了 K8S 的出现和解释了 K8S 的价值。下面我们从头开始介绍。(注意这篇文章只是原文的一个复述,不是原文的翻译,不保证与原文严格一致,文末附有原文链接,请自行阅读英文原文。)

阅读全文 »

作为一个多年经验的 Web 后台开发程序员,我还有少数一些前端的经验(有 Bootstrap,jQuery 之类框架的使用经验),最近因为公司的项目,想要着手一款客户端软件的开发,这些年其实一直很想开发一款自己的手机 App,不过一直都执行力不足,之前尝试的是 iOS,始终没有成效,这回大家都一口推荐 Flutter,所以,我再做一次尝试。

阅读全文 »

最近,我完成了一个小项目,使用了当下比较时髦的 Vue 3 + TypeScript + Vite + Element Plus,采用前后端分离架构。为了减少对后端 API 的维护量,我将后端的 API 写在了主站的代码里。这样一来,前台网站的域名和后台网站的域名不同,就出现了跨域的问题。

阅读全文 »

最近在开发博客本地客户端 HexoPress,应用做好后,需要打包,如果不希望打包出来 App 的图标用的是 Electron 默认的星球环绕的图标,那么需要自己制作图标。

阅读全文 »