目录
简介
变化
总结
门票链接
截图
发行说明
QA 测试步骤
首页 web前端 js教程 恢复过时的项目

恢复过时的项目

Jan 22, 2025 am 06:30 AM

这周,我对 Starchart 做了一些维护工作。该项目已经有一段时间没有工作了,所以我们正在尝试更新它的依赖项。

GitHub logo 发展空间 / 淀粉艺术

用于管理自定义域和证书的自助服务工具

星图License: MIT

Starchart 使 Seneca 开发者社区可以轻松创建和管理自己的自定义子域和 SSL 证书,无需付费或无需提供个人信息。

有关运行 Starchart 的信息,请参阅我们的部署指南。有关开发信息,请参阅我们的贡献指南。有关更多技术背景、规划和初始设计,请参阅 wiki。

简介

互联网正在不断发展,曾经困难的事情变得简单。例如,托管自己的网站过去需要服务器管理、操作系统、网络等方面的知识。如今,许多开发人员托管他们的个人和项目网站而无需接触远程服务器,而是选择(免费)云服务,例如 GitHub Pages、 Vercel、Netlify 或 AWS。

互联网的安全模型也在不断发展。例如,浏览器供应商已在各地采用 HTTPS。这对于安全性很有好处,因为它可以在客户端和服务器之间实现基于证书的加密。然而,就像……

在 GitHub 上查看

计划是修复 CI 工作流程,我们上周发现该工作流程已被破坏:

Image description

但在我找到解决方案之前,之前的开发人员之一 Eakam 解决了这个问题 - 事实证明这只是因为 Playwright 已经过时了。

恢复过时的项目 将剧作家提升至 1.49.1 第772章

恢复过时的项目
埃卡姆1007 发布于

Playwright 安装在 CI(E2E 测试)中失败。修改剧作家版本应该可以解决这个问题。

参考: Installation error log

在 GitHub 上查看

我觉得我应该通过寻找更多的东西来弥补它,并认为更新更多的依赖项将是一个很好的起点。

由于该项目已经两年没有投入使用,因此存在大量由过时的软件包引起的安全漏洞。我能够通过 npm 审核修复修复大部分问题。

还有一些修复导致了 @remix-run/eslint-config 和 @remix-run/react 中的重大更改,所以我手动修改了它们。

其中一个更新(我同时更新了它们,所以我不能肯定地说,但我的赌注是 /react)导致了类型检查错误,因为 [@remix-run/react].useNavigation( ).formData 现在可能是未定义的类型。我用可选链修复了它。

// Before
const isLoading =
  navigation.state === 'submitting' &&
  Number(navigation.formData.get('id')) === dnsRecord.id;

// After
const isLoading =
  navigation.state === 'submitting' &&
  Number(navigation.formData?.get('id')) === dnsRecord.id;
登录后复制
登录后复制
登录后复制

我所做的其他更改与弹出的一些 lint 错误有关(此时我意识到我已经关闭了 ESLint 扩展,但我确信这些警告会随更新一起出现,因为它在 CI 中从未发生过)过去)。

  1. 在一个文件中多次导入同一模块的实例:
// Before
import { getCertificateByUsername } from '~/models/certificate.server';
import { deleteCertificateById } from '~/models/certificate.server';
import { isAdmin } from '~/models/user.server';
import { getUserByUsername } from '~/models/user.server';

// After
import { getCertificateByUsername, deleteCertificateById } from '~/models/certificate.server';
import { isAdmin, getUserByUsername } from '~/models/user.server';
登录后复制
  1. 当首选 const 时使用 let:
// Before
let date = val.toLocaleDateString('en-US', {

// After
const date = val.toLocaleDateString('en-US', {
登录后复制

很惊讶它之前没有捕捉到这些。

此外,当我打开 ESLint 扩展时,我有点吃惊,因为有大约 900 个 linter 错误。事实证明,这是因为 ESLint 对 Playwright 生成的输出进行了 linting。所以我将 /playwright-report 添加到 .eslintignore。

这就是我本次冲刺的维护工作的总和。最终修复了 30 个严重的安全问题,所以还不错。

恢复过时的项目 更新依赖项 第775章

恢复过时的项目
乌代拉纳 发布于

应该修复一堆安全漏洞。

变化

  • [x] 凹凸​​依赖项
  • [x] 将 /playwright-report 添加到 .eslintignore
  • [x] 修复类型检查和 linter 错误
在 GitHub 上查看

我还重新激活了 Dependabot,它更新了几个小版本。如果不必手动调查和修补安全漏洞,那就太好了。

在其他新闻中,我向 Mattermost 发出的一个拉取请求终于被合并了!

恢复过时的项目 [GH-29548] 避免在 `tokens_store.go` 中使用 SELECT * #29558

恢复过时的项目
乌代拉纳 发布于

总结

此公关:

  • 将 token_store.go 中的 SQL 查询切换为使用 SQLBuilder
  • 在 TokenStore 的 SELECT 查询中显式定义列。
  • 将常见查询分解到构造函数中。

门票链接

修复#29548

截图

发行说明

// Before
const isLoading =
  navigation.state === 'submitting' &&
  Number(navigation.formData.get('id')) === dnsRecord.id;

// After
const isLoading =
  navigation.state === 'submitting' &&
  Number(navigation.formData?.get('id')) === dnsRecord.id;
登录后复制
登录后复制
登录后复制
在 GitHub 上查看

不久前就已获得批准,但花了几周时间才合并到 main 中。

与此同时,我一直在致力于我的其他公关工作。我被要求进行一些更改,正在等待重新审核。

恢复过时的项目 [MM-53650] 为 webapp 添加禁用表情渲染设置 #29414

恢复过时的项目
乌代拉纳 发布于

总结

此拉取请求向 Web 应用程序添加了一个用户设置,以将渲染表情符号 (:D) 切换为表情符号 (?)。

该设置作为组件添加到 Components/user_settings/display/render_emoticons_as_emoji/ 中,并在 Components/user_settings/display/user_settings_display.tsx 中导入。

我在 user_settings_display.tsx 中添加了一个 renderOnOffLabel() 函数,该函数从 Components/user_settings/advanced/user_settings_advanced.tsx 中提取,以帮助渲染新组件。

使用 savePreferences() 操作将设置存储为用户首选项。

我已经为 utils/constants.tsx 和 webapp/channels/src/packages/mattermost-redux/src/constants/preferences.ts 添加了偏好常量。

为了实际使用该设置,我修改了 Components/post_markdown 以接收它的值作为道具,为此我使用了 getBool() 并向配置添加了默认值。 post_markdown 将此值传递给选项对象上的 Markdown,然后将其传递给 utils/text_formatting.tsx,最后将该值作为新添加的参数传递给 emoticons.tsx。 emoticons.tsx 检查该值是否为 true,如果是,则将表情符号转换为表情符号。

我已经更新了受影响的测试并为新组件创建了单元测试。我还更新了英文翻译文件。

QA 测试步骤
  1. 导航至用户设置。
  2. 转到显示类别。
  3. 找到标有“自动将表情符号渲染为表情符号”的部分,然后单击“编辑”。
  4. 切换设置并单击“保存”。
  5. 应使用该设置在客户端切换当前用户和其他用户发送的消息上的表情符号渲染。

门票链接

修复(部分)https://github.com/mattermost/mattermost/issues/26504 Jira https://mattermost.atlassian.net/browse/MM-53650

注意问题和票证也描述了将此功能添加到移动应用程序中,但此 PR 没有。

截图

before after
恢复过时的项目 恢复过时的项目

发行说明

// Before
const isLoading =
  navigation.state === 'submitting' &&
  Number(navigation.formData.get('id')) === dnsRecord.id;

// After
const isLoading =
  navigation.state === 'submitting' &&
  Number(navigation.formData?.get('id')) === dnsRecord.id;
登录后复制
登录后复制
登录后复制
在 GitHub 上查看

处理这个 PR 很有趣,因为当我第一次提交它时,我什至不完全理解我的更改。离开很长一段时间后重新回到它并得到评论的反馈帮助我从一个新的角度看待它并更好地理解它。

Mattermost 应用程序从“首选项”和“配置”获取用户设置状态。我将我的设置添加到两者中,模仿建议我参考的现有设置之一,但事实证明“配置”用于服务器级设置,而这个新设置旨在成为客户端选项。这些评论帮助我了解了我哪里出错了,而且实际上最终的改变比我认为必要的要小。

总的来说,我想说这是相当富有成效的一周。

以上是恢复过时的项目的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

<🎜>:泡泡胶模拟器无穷大 - 如何获取和使用皇家钥匙
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆树的耳语 - 如何解锁抓钩
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系统,解释
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1668
14
CakePHP 教程
1428
52
Laravel 教程
1329
25
PHP教程
1273
29
C# 教程
1256
24
JavaScript引擎:比较实施 JavaScript引擎:比较实施 Apr 13, 2025 am 12:05 AM

不同JavaScript引擎在解析和执行JavaScript代码时,效果会有所不同,因为每个引擎的实现原理和优化策略各有差异。1.词法分析:将源码转换为词法单元。2.语法分析:生成抽象语法树。3.优化和编译:通过JIT编译器生成机器码。4.执行:运行机器码。V8引擎通过即时编译和隐藏类优化,SpiderMonkey使用类型推断系统,导致在相同代码上的性能表现不同。

Python vs. JavaScript:学习曲线和易用性 Python vs. JavaScript:学习曲线和易用性 Apr 16, 2025 am 12:12 AM

Python更适合初学者,学习曲线平缓,语法简洁;JavaScript适合前端开发,学习曲线较陡,语法灵活。1.Python语法直观,适用于数据科学和后端开发。2.JavaScript灵活,广泛用于前端和服务器端编程。

从C/C到JavaScript:所有工作方式 从C/C到JavaScript:所有工作方式 Apr 14, 2025 am 12:05 AM

从C/C 转向JavaScript需要适应动态类型、垃圾回收和异步编程等特点。1)C/C 是静态类型语言,需手动管理内存,而JavaScript是动态类型,垃圾回收自动处理。2)C/C 需编译成机器码,JavaScript则为解释型语言。3)JavaScript引入闭包、原型链和Promise等概念,增强了灵活性和异步编程能力。

JavaScript和Web:核心功能和用例 JavaScript和Web:核心功能和用例 Apr 18, 2025 am 12:19 AM

JavaScript在Web开发中的主要用途包括客户端交互、表单验证和异步通信。1)通过DOM操作实现动态内容更新和用户交互;2)在用户提交数据前进行客户端验证,提高用户体验;3)通过AJAX技术实现与服务器的无刷新通信。

JavaScript在行动中:现实世界中的示例和项目 JavaScript在行动中:现实世界中的示例和项目 Apr 19, 2025 am 12:13 AM

JavaScript在现实世界中的应用包括前端和后端开发。1)通过构建TODO列表应用展示前端应用,涉及DOM操作和事件处理。2)通过Node.js和Express构建RESTfulAPI展示后端应用。

了解JavaScript引擎:实施详细信息 了解JavaScript引擎:实施详细信息 Apr 17, 2025 am 12:05 AM

理解JavaScript引擎内部工作原理对开发者重要,因为它能帮助编写更高效的代码并理解性能瓶颈和优化策略。1)引擎的工作流程包括解析、编译和执行三个阶段;2)执行过程中,引擎会进行动态优化,如内联缓存和隐藏类;3)最佳实践包括避免全局变量、优化循环、使用const和let,以及避免过度使用闭包。

Python vs. JavaScript:社区,图书馆和资源 Python vs. JavaScript:社区,图书馆和资源 Apr 15, 2025 am 12:16 AM

Python和JavaScript在社区、库和资源方面的对比各有优劣。1)Python社区友好,适合初学者,但前端开发资源不如JavaScript丰富。2)Python在数据科学和机器学习库方面强大,JavaScript则在前端开发库和框架上更胜一筹。3)两者的学习资源都丰富,但Python适合从官方文档开始,JavaScript则以MDNWebDocs为佳。选择应基于项目需求和个人兴趣。

Python vs. JavaScript:开发环境和工具 Python vs. JavaScript:开发环境和工具 Apr 26, 2025 am 12:09 AM

Python和JavaScript在开发环境上的选择都很重要。1)Python的开发环境包括PyCharm、JupyterNotebook和Anaconda,适合数据科学和快速原型开发。2)JavaScript的开发环境包括Node.js、VSCode和Webpack,适用于前端和后端开发。根据项目需求选择合适的工具可以提高开发效率和项目成功率。

See all articles