Inhaltsverzeichnis
Einführung
Änderungen
Zusammenfassung
Ticket-Link
Screenshots
Versionshinweis
QA-Testschritte
Heim Web-Frontend js-Tutorial Wiederbelebung eines veralteten Projekts

Wiederbelebung eines veralteten Projekts

Jan 22, 2025 am 06:30 AM

Diese Woche habe ich einige Wartungsarbeiten an Starchart durchgeführt. An dem Projekt wurde eine Weile nicht gearbeitet, daher versuchen wir, seine Abhängigkeiten zu aktualisieren.

GitHub logo DevelopingSpace / Sternendiagramm

Ein Self-Service-Tool zur Verwaltung benutzerdefinierter Domänen und Zertifikate

Sternenkarte License: MIT

Starchart macht es der Seneca-Entwicklergemeinschaft einfach, ihre eigenen benutzerdefinierten Subdomains und SSL-Zertifikate zu erstellen und zu verwalten, ohne dass Kosten anfallen oder persönliche Daten angegeben werden müssen.

Informationen zum Ausführen von Starchart finden Sie in unserem Bereitstellungsleitfaden. Informationen zur Entwicklung finden Sie in unserem Beitragsleitfaden. Weitere technische Hintergründe, Planungen und erste Entwürfe finden Sie im Wiki.

Einführung

Das Internet entwickelt sich weiter und was früher schwierig war, ist jetzt einfach. Beispielsweise erforderte das Hosten einer eigenen Website früher Kenntnisse in Serveradministration, Betriebssystemen, Netzwerken usw. Heutzutage hosten viele Entwickler ihre persönlichen Websites und Projektwebsites, ohne jemals einen Remote-Server zu berühren, und entscheiden sich für (kostenlose) Cloud-Dienste wie GitHub Pages. Vercel, Netlify oder AWS.

Auch das Sicherheitsmodell des Internets entwickelt sich weiter. Beispielsweise haben Browser-Anbieter überall HTTPS eingeführt. Dies ist gut für die Sicherheit, da es eine zertifikatbasierte Verschlüsselung zwischen Clients und Servern ermöglicht. Allerdings wie bei…

Auf GitHub ansehen

Der Plan bestand darin, den CI-Workflow zu reparieren, von dem wir letzte Woche herausfanden, dass er fehlerhaft war:

Image description

Aber bevor ich eine Lösung finden konnte, löste einer der vorherigen Entwickler, Eakam, das Problem – es stellte sich heraus, dass es nur daran lag, dass Playwright veraltet war.

Wiederbelebung eines veralteten Projekts Bringen Sie Dramatiker auf 1.49.1 #772

Wiederbelebung eines veralteten Projekts
Eakam1007 veröffentlicht am

Playwright-Installation schlägt in CI (E2E-Tests) fehl. Eine Aktualisierung der Dramatiker-Version sollte das beheben.

Ref: Installation error log

Auf GitHub ansehen

Ich hatte das Gefühl, ich sollte das wieder gut machen, indem ich mehr Dinge finde, an denen ich arbeiten kann, und dachte, die Aktualisierung weiterer Abhängigkeiten wäre ein guter Ausgangspunkt.

Da an dem Projekt zwei Jahre lang nicht gearbeitet wurde, gab es eine Reihe von Sicherheitslücken, die auf veraltete Pakete zurückzuführen waren. Die meisten davon konnte ich mit npm audit fix beheben.

Es gab noch ein paar weitere Korrekturen, die zu wichtigen Änderungen in @remix-run/eslint-config und @remix-run/react führten, also habe ich diese manuell geändert.

Eines der Updates (ich habe sie gleichzeitig aktualisiert, kann es also nicht mit Sicherheit sagen, aber meine Wette ist auf /react) führte zu einem Typprüfungsfehler, weil [@remix-run/react].useNavigation( ).formData kann jetzt vom Typ undefiniert sein. Ich habe es mit optionaler Verkettung behoben.

// 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;
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Die anderen Änderungen, die ich vorgenommen habe, hatten mit einigen aufgetauchten Lint-Fehlern zu tun (An diesem Punkt wurde mir klar, dass ich meine ESLint-Erweiterung deaktiviert hatte, aber ich bin mir sicher, dass diese Warnungen mit dem Update kamen, da es in CI nie passiert ist in der Vergangenheit).

  1. Fälle des mehrfachen Imports desselben Moduls in eine Datei:
// 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';
Nach dem Login kopieren
  1. Verwenden von let, wenn const bevorzugt wird:
// Before
let date = val.toLocaleDateString('en-US', {

// After
const date = val.toLocaleDateString('en-US', {
Nach dem Login kopieren

Überrascht, dass es diese nicht schon früher erwischt hat.

Außerdem war ich etwas verblüfft, als ich die ESLint-Erweiterung aktivierte, weil es etwa 900 Linter-Fehler gab. Es stellte sich heraus, dass es daran lag, dass ESLint die von Playwright generierte Ausgabe verfälschte. Also habe ich /playwright-report zu .eslintignore hinzugefügt.

Und das war die Summe meiner Wartungsarbeiten für diesen Sprint. Am Ende wurden 30 schwerwiegende Sicherheitsprobleme behoben, also nicht schlecht.

Wiederbelebung eines veralteten Projekts Abhängigkeiten aktualisieren #775

Wiederbelebung eines veralteten Projekts
uday-rana veröffentlicht am

Sollte eine Reihe von Sicherheitslücken beheben.

Änderungen

  • [x] Bump-Abhängigkeiten
  • [x] /playwright-report zu .eslintignore hinzufügen
  • [x] Behebung von Typprüfungs- und Linter-Fehlern
Auf GitHub ansehen

Ich habe auch Dependabot erneut aktiviert, wodurch vitest einige Nebenversionen beeinträchtigt hat. Es ist schön, Sicherheitslücken nicht manuell untersuchen und beheben zu müssen.

Zu den weiteren Neuigkeiten gehört, dass einer meiner Pull-Requests an Mattermost endlich zusammengeführt wurde!

Wiederbelebung eines veralteten Projekts [GH-29548] Vermeiden Sie SELECT * in „tokens_store.go“. #29558

Wiederbelebung eines veralteten Projekts
uday-rana veröffentlicht am

Zusammenfassung

Diese PR:

  • Stellt SQL-Abfragen in token_store.go um, um SQLBuilder zu verwenden
  • Definiert explizit Spalten in SELECT-Abfragen an TokenStore.
  • Berücksichtigt häufige Abfragen im Konstruktor.

Behebt #29548

Screenshots

Versionshinweis

// 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;
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Auf GitHub ansehen

Es wurde vor einiger Zeit genehmigt, aber es dauerte ein paar Wochen, bis es in die Hauptversion integriert wurde.

In der Zwischenzeit habe ich an meiner anderen PR gearbeitet. Ich wurde gebeten, einige Änderungen vorzunehmen und warte auf eine erneute Überprüfung.

Wiederbelebung eines veralteten Projekts [MM-53650] Einstellung zum Deaktivieren des Emoticon-Renderings zur Webanwendung hinzugefügt #29414

Wiederbelebung eines veralteten Projekts
uday-rana veröffentlicht am

Zusammenfassung

Diese Pull-Anfrage fügt der Webanwendung eine Benutzereinstellung hinzu, um die Darstellung von Emoticons (:D) als Emojis (?) umzuschalten.

Die Einstellung wird als Komponente in Components/user_settings/display/render_emoticons_as_emoji/ hinzugefügt, die in Components/user_settings/display/user_settings_display.tsx importiert wird.

Ich habe user_settings_display.tsx eine renderOnOffLabel()-Funktion hinzugefügt, die aus Components/user_settings/advanced/user_settings_advanced.tsx übernommen wurde, um beim Rendern der neuen Komponente zu helfen.

Die Einstellung wird mit der Aktion savePreferences() als Benutzereinstellung gespeichert.

Ich habe Konstanten für die Präferenz zu utils/constants.tsx und webapp/channels/src/packages/mattermost-redux/src/constants/preferences.ts hinzugefügt.

Um die Einstellung tatsächlich zu verwenden, habe ich „components/post_markdown“ geändert, um seinen Wert als Requisite zu erhalten, wofür ich getBool() verwendet und der Konfiguration einen Standardwert hinzugefügt habe. post_markdown übergibt diesen Wert an Markdown für das Optionsobjekt, das ihn dann an utils/text_formatting.tsx weitergibt, das den Wert schließlich als neu hinzugefügten Parameter an emoticons.tsx übergibt. emoticons.tsx prüft, ob der Wert wahr ist und wenn ja, wandelt es die Emoticons in Emojis um.

Ich habe betroffene Tests aktualisiert und Komponententests für die neue Komponente erstellt. Ich habe auch die englische Übersetzungsdatei aktualisiert.

QA-Testschritte
  1. Navigieren Sie zu Benutzereinstellungen.
  2. Gehen Sie zur Kategorie „Anzeige“.
  3. Suchen Sie den Abschnitt mit der Bezeichnung „Emoticons automatisch als Emoji rendern“ und klicken Sie auf „Bearbeiten“.
  4. Schalten Sie die Einstellung um und klicken Sie auf „Speichern“.
  5. Emoticon-Rendering für Nachrichten, die vom aktuellen Benutzer und anderen Benutzern gesendet werden, sollte mit der Einstellung clientseitig umgeschaltet werden.

Korrekturen (teilweise) https://github.com/mattermost/mattermost/issues/26504 Jira https://mattermost.atlassian.net/browse/MM-53650

Hinweis Das Problem und das Ticket beschreiben das Hinzufügen dieser Funktion auch zur mobilen App, was in dieser PR nicht der Fall ist.

Screenshots

before after
Wiederbelebung eines veralteten Projekts Wiederbelebung eines veralteten Projekts

Versionshinweis

// 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;
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Auf GitHub ansehen

Die Arbeit an dieser PR war interessant, denn als ich sie zum ersten Mal einreichte, verstand ich meine Änderungen noch nicht einmal ganz. Als ich nach einer langen Zeit wieder darauf zurückkam und das Feedback aus den Rezensionen mir dabei half, es aus einer neuen Perspektive zu betrachten und es besser zu verstehen.

Die Mattermost-App erhält den Status der Benutzereinstellungen sowohl aus „Einstellungen“ als auch aus einer „Konfiguration“. Ich habe meine Einstellung zu beiden hinzugefügt und eine der vorhandenen Einstellungen nachgeahmt, auf die ich verweisen sollte, aber es stellte sich heraus, dass die „config“ für Einstellungen auf Serverebene gedacht ist, während diese neue Einstellung als clientseitige Option gedacht war. Die Bewertungen haben mir geholfen zu verstehen, wo ich einen Fehler gemacht habe, und am Ende war es tatsächlich eine kleinere Änderung, als ich für nötig gehalten hätte.

Insgesamt würde ich sagen, dass es eine ziemlich produktive Woche war.

Das obige ist der detaillierte Inhalt vonWiederbelebung eines veralteten Projekts. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Ersetzen Sie Stringzeichen in JavaScript Ersetzen Sie Stringzeichen in JavaScript Mar 11, 2025 am 12:07 AM

Ersetzen Sie Stringzeichen in JavaScript

JQuery überprüfen, ob das Datum gültig ist JQuery überprüfen, ob das Datum gültig ist Mar 01, 2025 am 08:51 AM

JQuery überprüfen, ob das Datum gültig ist

JQuery Get Element Polsterung/Rand JQuery Get Element Polsterung/Rand Mar 01, 2025 am 08:53 AM

JQuery Get Element Polsterung/Rand

10 JQuery Accords Registerkarten 10 JQuery Accords Registerkarten Mar 01, 2025 am 01:34 AM

10 JQuery Accords Registerkarten

10 lohnt 10 lohnt Mar 01, 2025 am 01:29 AM

10 lohnt

HTTP-Debugging mit Knoten und HTTP-Konsole HTTP-Debugging mit Knoten und HTTP-Konsole Mar 01, 2025 am 01:37 AM

HTTP-Debugging mit Knoten und HTTP-Konsole

Benutzerdefinierte Google -Search -API -Setup -Tutorial Benutzerdefinierte Google -Search -API -Setup -Tutorial Mar 04, 2025 am 01:06 AM

Benutzerdefinierte Google -Search -API -Setup -Tutorial

JQuery fügen Sie Scrollbar zu Div hinzu JQuery fügen Sie Scrollbar zu Div hinzu Mar 01, 2025 am 01:30 AM

JQuery fügen Sie Scrollbar zu Div hinzu

See all articles