Month: 11月 2022

在初创公司使用 Rust:一个警示故事

在某些方面,Rust 很棒。但是,在为需要快速行动的初创公司选择它之前请三思。

我在写这篇文章时犹豫不决,因为我不想开始或卷入一场关于编程语言的圣战。(只是为了摆脱火焰诱饵,Visual Basic 是有史以来最好的语言!)但是我有很多人问我关于 Rust 的经验以及他们是否应该为他们的项目选择 Rust。因此,我想分享一些我在创业环境中使用 Rust 的利弊,在这种环境中快速移动和扩展团队非常重要。

我想明确一点,我在某些方面是 Rust 的粉丝。这篇文章不是关于 Rust 作为一种语言或任何类似的语言有多糟糕。然而,我确实想谈的是,使用 Rust 几乎肯定会对生产力造成重大影响,如果你想快速行动,这可能是一个主要因素。仔细权衡速度影响是否值得您的公司和产品使用该语言带来的好处。

就在前面,我应该说Rust 非常擅长它的设计目的,如果你的项目需要 Rust 的特定好处(一种具有高性能、超强类型、不需要垃圾收集等的系统语言)那么 Rust 是一个不错的选择。但我认为 Rust 通常用于不太适合的情况,团队付出了 Rust 的复杂性和开销的代价,却没有获得太多好处。

我对 Rust 的主要体验来自于在之前的一家初创公司使用它工作了 2 年多一点。这个项目是一个基于云的 SaaS 产品,或多或少是一个传统的 CRUD

TypeScript 这十年

今天是 TypeScript 的生日!但是这个生日很特别——10 年前的今天,2012 年 10 月 1 日,TypeScript 首次公开亮相。

 

早期的情况

当 TypeScript 首次亮相时,有很多人持怀疑态度,这也是可以理解的。对于一些 JavaScript 用户来说,一个试图将静态类型引入 JavaScript 的团队可能听起来像是一个邪恶的组织,甚至可视为一个阴谋或笑话。

但是这些功能是有价值的,对吗?类型检查,在你保存文件之前捕捉 Bug,并获得丰富的编辑器功能,如代码完成、导航和重构?我们知道公司内外部的团队在处理复杂的 JavaScript 代码库时遇到了巨大的挑战,而且我们知道 JavaScript 将被广泛使用。因此,谁不希望有强大的工具来帮助编写它呢?对于团队来说,TypeScript 初心未变,一如最初在发布 TypeScript 时所述的那样,“在大型应用开发中使用 JavaScript 开发!"。…

在 Progressive Web Apps 中添加自定义安装按钮

前几天,我正在寻找一种在我的记事本应用程序中添加自定义“安装”按钮的方法,该应用程序本质上是一个渐进式 Web 应用程序 (PWA)

介绍

为了给你一个入门,当你打开一个 PWA 时,一个beforeinstallprompt事件会在支持的浏览器中被触发。触发此事件时,浏览器会像这样向用户显示安装弹出窗口。

原生 PWA 弹窗

然后,用户可以通过点击“安装”按钮或关闭弹出窗口来选择安装应用程序。那么,如果您想在用户关闭安装弹出窗口后再次提醒他们安装您的 PWA 怎么办?

为了解决这个问题,你可以做的是在你的应用程序本身的某个地方显示一个自定义的“安装”按钮,这将触发用户安装你的 PWA。

这也正是我在记事本PWA 中所做的。我是如何做到这一点的?继续阅读以了解如何操作。

您可能喜欢:检查 PWA 是否作为独立应用程序打开

JavaScript 中内存泄漏的原因以及如何避免它们

当涉及到“老式”网页时,对内存管理的关注不足通常不会产生戏剧性的后果。当用户浏览链接并加载新页面时,每次加载都会从内存中删除页面信息。

SPA(单页应用程序)的兴起促使我们更加关注与内存相关的 JavaScript 编码实践。如果应用程序开始逐渐使用越来越多的内存,那会严重影响性能甚至导致浏览器的选项卡崩溃。

在本文中,我们将探讨导致 JavaScript 内存泄漏的编程模式,并解释如何改进内存管理。

H264编码profile & level控制

背景知识

先科普一下profile&level。(这里讨论最常用的H264)
H.264有四种画质级别,分别是baseline, extended, main, high:
1、Baseline Profile:基本画质。支持I/P 帧,只支持无交错(Progressive)和CAVLC;
2、Extended profile:进阶画质。支持I/P/B/SP/SI 帧,只支持无交错(Progressive)和CAVLC;(用的少)
3、Main profile:主流画质。提供I/P/B 帧,支持无交错(Progressive)和交错(Interlaced), …

10 个最好的 WordPress 缓存插件来加速网站

如果加载时间超过三秒,57% 的访问者将离开您的网站——显然,网站速度对于用户体验至关重要。

安装 WordPress 缓存插件的站点所有者

有几种简单的方法可以加速您的 WordPress 站点,例如优化图像、购买CDN 服务以及本文的主题,即 WordPress 缓存插件。

如果你想要一种简单快捷的方法来优化你的 WordPress 网站的速度,数据缓存是首先要看的地方之一。首先,让我们定义什么是缓存及其重要性。然后,我们将探索一些可以为您简化甚至自动化该过程的插件。

缓慢的 WordPress 管理后台?为什么会发生,以及如何修复它

处理缓慢的 WordPress 管理仪表板?

当您尝试管理您的 WordPress 网站时,感觉自己在泥泞中跋涉从来都不是一件有趣的事情,因此我们将帮助您摆脱困境并进入加载速度更快的 WordPress 管理仪表板。

为实现这一点,我们将快速分析您的 WordPress 管理仪表板可能运行缓慢的一些原因。然后,我们通过提示来帮助您解决问题并让您的 WordPress 管理员再次快速加载。

尝试使用 WebTransport

WebTransport 是一种新的 API,提供低延迟、双向、客户端-服务器消息传递。了解有关其用例的更多信息,以及如何就实施的未来提供反馈。

 

Javascript垃圾收集以及内存泄漏

这几天在写代码的时候一直想到一个问题,内存的问题,这个问题解决不了,始终不能安安心心写代码(我这里又又又定义了一个变量,闭包能访问到它,但是我在闭包函数中并没有访问他,闭包一直存在,不占内存吗?之前也一直有一个问题,不解决也是寝食难安,见事件处理函数中this的指向以及函数上下文的继承),以前写c,c++的时候,似乎每次全局作用域有数组我不用了,我就手动给它删除了(局部变量出了作用域就自行销毁),而写javascript的时候意识到,虽然避免使用了全局变量,可是因为闭包的存在难道不会导致内存的泄漏(只要闭包函数存在,就始终拥有对外部函数的作用域的访问权限)?
之前第一次看《javascript高级程序设计》的时候,记得有一节是说垃圾回收机制,当时连对象,应用,原型什么的都没有搞清楚,那章基本上也就跳过了,现在回想起来,似乎我很少在js中对其内存进行管理,除了我不想要某个属性了,会delete一下,别的都没有进行管理,那么Js不需要内存管理吗?不会发生内存泄漏?

js垃圾回收机制

Js有自己的垃圾回收机制,会帮助开发者管理内存。回收机制会查找应用无法到达的内存。这其实跟我们的初衷是有一些细微但是很重要的差别,该机制是寻找无法到达的内存,而我们想要的其实是寻找我不会再使用的内存。一块内存(一个变量,引用),只有开发者我们自己才知道会不会再用到,而检测机制,只能检测到程序中别的地方不会再调用的内存(也正常,要是检测机制能检测到那个变量我不用了才奇怪了)。所以,如果我们不使用某个变量了,让程序别的地方都引用不到它,垃圾回收机制就能够发现并处理它,而内存泄漏的根本原因就是我们不打算继续使用的内存还存在着引用,从程序别的地方可以访问到它,就不会对其进行释放。
综上可以这么说:js的回收机制的关键是理解可到达的概念。从根(window)出发,能够到达的变量都会留在内存中,只有无法到达的节点(变量,函数)才会被回收机制回收。从而完成内存的释放。而引起内存泄漏的根本原因就是存在不想要的引用,使得不需要的内存能够从根节点到达,从而无法释放该内存。

js回收机制示例

普通对象回收机制

如下代码:

function Menu(title) {
  this.title = title
  this.elem = document.getElementById('id')
}
 
var menu = new Menu('My