Wiederbelebung eines veralteten Projekts
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.
DevelopingSpace
/
Sternendiagramm
Ein Self-Service-Tool zur Verwaltung benutzerdefinierter Domänen und Zertifikate
Sternenkarte
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…
Der Plan bestand darin, den CI-Workflow zu reparieren, von dem wir letzte Woche herausfanden, dass er fehlerhaft war:
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.
Bringen Sie Dramatiker auf 1.49.1
#772

Playwright-Installation schlägt in CI (E2E-Tests) fehl. Eine Aktualisierung der Dramatiker-Version sollte das beheben.
Ref:
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;
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).
- 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';
- Verwenden von let, wenn const bevorzugt wird:
// Before let date = val.toLocaleDateString('en-US', { // After const date = val.toLocaleDateString('en-US', {
Ü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.
Abhängigkeiten aktualisieren
#775

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
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!
[GH-29548] Vermeiden Sie SELECT * in „tokens_store.go“.
#29558

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.
Ticket-Link
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;
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.
[MM-53650] Einstellung zum Deaktivieren des Emoticon-Renderings zur Webanwendung hinzugefügt
#29414

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
- Navigieren Sie zu Benutzereinstellungen.
- Gehen Sie zur Kategorie „Anzeige“.
- Suchen Sie den Abschnitt mit der Bezeichnung „Emoticons automatisch als Emoji rendern“ und klicken Sie auf „Bearbeiten“.
- Schalten Sie die Einstellung um und klicken Sie auf „Speichern“.
- Emoticon-Rendering für Nachrichten, die vom aktuellen Benutzer und anderen Benutzern gesendet werden, sollte mit der Einstellung clientseitig umgeschaltet werden.
Ticket-Link
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 |
---|---|
![]() |
![]() |
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;
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!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Ersetzen Sie Stringzeichen in JavaScript

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

HTTP-Debugging mit Knoten und HTTP-Konsole

Benutzerdefinierte Google -Search -API -Setup -Tutorial

JQuery fügen Sie Scrollbar zu Div hinzu
