Hallo, Gast
Du musst dich registrieren bevor du auf unserer Seite Beiträge schreiben kannst.

Benutzername
  

Passwort
  





Durchsuche Foren

(Erweiterte Suche)

Foren-Statistiken
» Mitglieder: 1
» Neuestes Mitglied: Joopi
» Foren-Themen: 492
» Foren-Beiträge: 673

Komplettstatistiken

Benutzer Online
Momentan sind 9 Benutzer online
» 0 Mitglieder
» 5 Gäste
AhrefsBot, Bytespider, DotBot, bot

Aktive Themen
Saturday - 19:00 CST: Not...
Forum: Wetter in Little Rock
Letzter Beitrag: Joopi
Vor 1 Stunde
» Antworten: 0
» Ansichten: 0
Saturday - 13:00 CST: Not...
Forum: Wetter in Little Rock
Letzter Beitrag: Joopi
Vor 7 Stunden
» Antworten: 0
» Ansichten: 2
Saturday - 11:00 CST: Not...
Forum: Wetter in Little Rock
Letzter Beitrag: Joopi
Vor 9 Stunden
» Antworten: 0
» Ansichten: 3
Saturday - 04:00 CST: Not...
Forum: Wetter in Little Rock
Letzter Beitrag: Joopi
Gestern, 01:58
» Antworten: 0
» Ansichten: 6
Friday - 17:00 CST: Not a...
Forum: Wetter in Little Rock
Letzter Beitrag: Joopi
Gestern, 03:29
» Antworten: 0
» Ansichten: 11
Friday - 14:00 CST: Not a...
Forum: Wetter in Little Rock
Letzter Beitrag: Joopi
Gestern, 12:04
» Antworten: 0
» Ansichten: 7
Friday - 05:00 CST: Not a...
Forum: Wetter in Little Rock
Letzter Beitrag: Joopi
20-12-2024, 03:24
» Antworten: 0
» Ansichten: 9
Thursday - 18:00 CST: Not...
Forum: Wetter in Little Rock
Letzter Beitrag: Joopi
20-12-2024, 04:07
» Antworten: 0
» Ansichten: 16
Thursday - 12:00 CST: Not...
Forum: Wetter in Little Rock
Letzter Beitrag: Joopi
19-12-2024, 09:43
» Antworten: 0
» Ansichten: 16
Thursday - 04:00 CST: Not...
Forum: Wetter in Little Rock
Letzter Beitrag: Joopi
19-12-2024, 02:13
» Antworten: 0
» Ansichten: 23

 
  Bestimmte Anzahl von Zeichen ausgeben
Geschrieben von: Joopi - 07-01-2023, 09:44 - Forum: Programmieren - Keine Antworten

Eine Tabelle mit einem Fließtext als Feldinhalt ist nicht besonders schön. Sofern der Text nicht maßgeblich ist, sondern nur als Füllmenge gedacht ist, macht es Sinn, die Ausgabe des Textes auf eine gewisse Anzahl Zeichen zu begrenzen. In einem SQL-Statement könnte das wie folgt aussehen:

Code:
$erg = mysqli_query($db, "SELECT id, substring(mailtext,1,250) FROM tabelle ORDER BY id");

Damit werden ab Zeichen 1 entsprechend viele Zeichen des Textes, sofern vorhanden, ausgegeben. Der Rest wird nicht angezeigt.

Dieser Teil des Statements ist der wichtig Teil:

Zitat:substring(mailtext,1,250)

Somit kann man Tabellen auch mit dem Feld für Fließtext füllen, um dem Betrachter dieses zu zeigen.

Es macht Sinn, daraus einen Teaser zu generieren, sodass vielleicht ein Link angesetzt werden kann, um den gesamten Text anzeigen zu lassen.

Drucke diesen Beitrag

  Alle Zeichen in Kleinschreibung ändern
Geschrieben von: Joopi - 07-01-2023, 09:42 - Forum: Programmieren - Keine Antworten

Wenn in einer Spalte einer Tabelle String in Groß- und Kleinschreibung vorhanden sind, dann kann man diese in einem Schwung in Kleinbuchstaben konvertieren. Die Syntax dazu ist:

Code:
UPDATE tabelle SET katname = LOWER(katname);

Das Konvertieren kann auch mit UPPER in Großbuchstaben erfolgen.

Drucke diesen Beitrag

  Wartezeit einsetzen
Geschrieben von: Joopi - 07-01-2023, 06:20 - Forum: Programmieren - Keine Antworten

Dann und wann, besonders beim Testen, kann es hilfreich sein, wenn die Ausführung des Skripts für einige Zeit ausgesetzt wird. Eine Wartezeit eben.

In Python lässt sich dieses wie folgt realisieren:


Code:
#!/usr/bin/env python3
import time

time.sleep(5)

Mit dieser Anweisung wird die Ausführung des Skripts für 5 Sekunden ausgesetzt.

Drucke diesen Beitrag

  Doku Git und GitHub
Geschrieben von: Joopi - 07-01-2023, 03:20 - Forum: Git - Keine Antworten

Die Nutzung von Git und GitHub kann in Projekten von Vorteil sein. Hier dokumentiere ich, wie Git zu nutzen ist. Die Nutzung von GitHub ist sekundär, denn dieses benötige ich nur, sollte ich meine Projekte im Internet öffentlich machen wollen.

Ich nutze zum Üben die Lehrgangsreihe von The Net Ninja.





Meine eigenen Vorbemerkungen:

Es macht im Grunde genommen Sinn, dass die Projekte, an denen gearbeitet wird, zentral auf dem lokalen Rechner abgelegt werden. Somit ist auch nur ein Oberprojektordner notwendig.  Dieser Oberprojektordner wird dann wiederum mit weiteren Ordnern je Einzelprojekt bestückt. Diese Ordner werden, sofern sie von Git zu nutzen sind, später durch die Initialisierung zu Repositories. Um nämlich Git in Gänze richtig zu nutzen, müssen Git-Repositories angelegt sein.

Das bedeutet, dass in dem Projektordner ein versteckter Ordner .git angelegt wird, in dem dann alle Veränderungen nachgehalten, also getrackt, werden.



Nachdem Git installiert wurde

Code:
git config --globel user.name Tuennes


Code:
git config --globel user.email tuennes@yahoo.de

Damit ist Git personalisiert.

Um festzustellen, welcher User für Git angelegt werde, ist folgender Befehl auf der Konsole abzusetzen.

Code:
git config user.name

Projekt initialisieren

Code:
git init

Mit diesem Befehl wird das Repository initiiert. Innerhalb des Ordner bzw. des Repositories können weitere Ordner erstellt werden. Auf der Konsole kann direkt mit dem Befehl ```touch``` eine leere Textdatei erzeugt werden, z.B. index.html.

Welche Dateien sind im Repo

Code:
git status

Dieser Befehl zeigt alle im Repo vorhandenen Dateien und deren aktuellen Status.

Ein Status ist z.B. untracked. Das bedeutet, die Datei ist da, aber noch nicht in der Staging-Area enthalten.

Dateien, die noch nicht in der Staging-Area sind, werden in der Farbe Rot dargestellt. Dateien, die bereits hinzugefügt wurden, werden in der Farbe Grün angezeigt.

Die textliche Beschreibung ist aber auch ausreichend, um zu erkennen, welche Dateien hinzuzufügen sind. Das muss nicht einzeln geschehen.

Datei in Staging-Area hinzufügen

Code:
git add index.html

Um eine Datei in die Staging-Area hinzuzufügen, bedarf es nur dem vorgenannten Befehl.

Datei aus Staging-Area löschen

Code:
git rm --cached index.html

Sofern eine Datei im Repo nicht mehr benötigt wird, kann sie mit dem vorgenannten Befehl aus der Staging-Area herausgelöscht werden. Das bedeutet nicht, dass die Datei physisch gelöscht wurde. Sie ist nur nicht mehr im Repo.

Alle Dateien hinzufügen

Code:
git add .

In einem großen Projekt wäre es sehr aufwendig, wenn jede einzelne Datei, die erstellt wurde, dem Repo hinzuzufügen wäre. Mit dem vorgenannten Befehl werden alle neuen Dateien, die noch nicht im Repo sind, hinzugefügt.





Wichtig ist, dass zu bestehenden Dateien, die geändert wurden, entsprechende Mitteilungen über den Grund der Änderung, vermerkt werden. Das ist das Kommittment, welches sehr wichtig ist.

Ein Kommitment absetzen

Code:
git commit -m "added index and styles files"

Dieser Befehl ist relativ global und bezieht sich nicht auf einzelne Dateien, sondern auf die Dateien, die neu sind bzw. geändert wurden.

Die Option **-m** bedeutet, dass eine Mail erzeugt und an die Projektteilnehmer gesendet wird.

Der notwendige und wichtige Kommentar zum Kommitment wird hinter der Option in Hochkommata gesetzt und sollte die Situation erklären.

Mit diesem Kommitment wird eine eindeutige ID erzeugt, die im Repo abgespeichert wird.

Es wird eine Info ausgegeben, die u.a. enthält, wieviele Zeilen insgesamt hinzugefügt (vielleicht auch gelöscht) wurden. Werden zum Projektbeginn mehrere Dateien mit einem Kommitment belegt, so sind alle vorhandenen Zeilen in Summe dann in der Info zu sehen.

Logfiles der Kommitments ansehen

Code:
git log

Sobald z.B. bestehende Dateien verändert werden, müssen diese irgendwann wieder der Staging-Area mitgeteilt werden. Das geht über den "add"-Befehl und es wird angezeigt, welche Dateien geändert (modifiziert) wurden.

Sobald das passiert ist, sollte wieder ein Kommitment erfolgen, welches wieder geloggt wird.

Mit dem obigen Befehl, können alle abgesetzten Kommitments betrachtet werden. Allerdings werden hierbei alle Einträge im Logfile, also in der Historie, angezeigt. Das kann sehr unübersichtlich sein, wenn das Projekt groß ist.

Code:
git log --oneline

Um nicht erschlagen zu werden, wird bei der Ausführung des obigen Befehls je Kommitment nur eine Zeile ausgegeben, die eine Zusammenfassung der Veränderungen beinhaltet.



Das einfache Hinzufügen und Betrachten der Dateien bzw. der Einträge in der Log-Datei ist nicht alles, denn es werden oftmals auch Fehler gemacht, die wieder zu beheben sind.

Hier sind zum Kommitment 3 Befehle vorhanden:
  • Checkout commit
  • Revert commit
  • Reset commit

Ein Kommitment zurücknehmen

Code:
git checkout af6b84c

Sofern etwas falsch war oder zu verändern ist, kann ein Kommitment wieder zurückgenommen werden. Dazu ist über die Loghistorie die entsprechende ID zu erkunden und kann dann mit dem obigen Befehl wieder aus den Kommittments herausgenommen werden.

Die Befehle für Revert und Reset kann ich aus der englischen Erklärung heraus nicht gut verstehen. Reset ist auf jeden Fall eine eher extreme Maßnahme. Beide Befehle benötigen immer die ID des Kommitments.



Die Erstellung von Branches (Zweige oder Äste eine Baumes) ist die wohl wichtigste Eigenschaft von Git.

Neben dem Master-Branch (Info: Master wurde zu Main auf GitHub umbenannt) können beliebig viele Branches angelegt werden.

Branches sind notwendig, um neuen Code erst zu testen. Sollte er dem Projekt und den Anforderungen genügen, kann der Branch mit dem Master-Branch zusammengeführt (gemerged) werden.

Einen neuen Branch erstellen

Code:
git branch neuerbranch

Mit dem vorgenannten Befehl wurde ein Branch erstellt.

Code:
git branch -a

Um feststellen zu können, welche Branches vorhanden sind, muss obiger Befehl abgesetzt werden.

Wenn dieser Befehl abgesetzt wird, werden alle Branches gezeigt, auch der Master-Branch. Durch ein vorangestelltes Sternchen ist zu erkennen, welcher Branch gerade der aktive ist, zu dem etwas in die Staging-Area eingestellt werden kann.

Es ist wichtig, dass man sich nicht vertut und den falschen Branch bearbeitet.

Code:
git checkout neuerbranch

Damit wechselt (switcht) Git vom derzeitigen aktiven Branch zum neu ausgewählten Branch.

In diesem Branch kann all das gemacht werden, was oben beschrieben ist. Allerdings ist zu beachten, dass dieser Branch isoliert ist, da er mit dem Master-Branch nicht in Verbindung steht.

Man kann auch einen neuen Branch anlegen und diesen direkt als aktiven Branch kennzeichnen.

Code:
git checkout -b ganzneuerbranch

Damit wird der Branch angelegt und direkt aktiviert.

Einen Branch löschen

Code:
git branch -D neuerbranch

Sollte es sein, dass ein Branch bzw. dessen Dateien, nicht mit dem Master-Branch zusammengeführt werden sollen, dann dieser Branch mit der Option "-D" gelöscht werden. Wichtig ist das **große D**.



Das Zusammenführen von Branches ist wichtig, um die Arbeit anderer in den Master-Branch einzufügen.

Das sollte natürlich nur geschehen, wenn der Code richtig ist.

Um Branches in den Master-Branch bzw. den Branch, der die anderen Branches aufnehmen soll, einzufügen, muss der aufnehmende Branch aktiv sein.

Code:
git merge ganzneuerbranch

Damit wird der Branch in den Master-Branch gemerged, da der Master-Branch der aktive Branch ist.



Anmerkung:

Der Begriff Master wurde mittlerweile auf Github mit dem Begriff Main ersetzt.

Drucke diesen Beitrag

  Git Submodul clonen
Geschrieben von: Joopi - 07-01-2023, 03:03 - Forum: Git - Keine Antworten

Heute wollte ich das Submodule eines Hugothemes in eine neue Hugoseite (Testzentrum) hinzufügen. Also flott den Befehl kopiert und nicht schlecht gestaunt:

Zitat:fatal: Kein Git-Repository (oder irgendein Elternverzeichnis bis zum Einhängepunkt /media/django)
Stoppe bei Dateisystemgrenze (GIT_DISCOVERY_ACROSS_FILESYSTEM nicht gesetzt).

Es hat dann tatsächlich drei, vier Sekunden gedauert bis mir klar geworden war, dass ich noch kein Git-Repository für die neue Hugotestseite erstellt hatte.

Mit

Code:
git init
git add .
git commit -m "blablabla"

wurde das Repository erstellt und schon funktionierte der Befehl im root-Verzeichnis der Hugoseite, um ein Submodule hinzuzufügen:

Code:
git submodule add https://github.com/hugo-toha/toha.git themes/toha
git submodule init
git submodule update

Dann ist mir eingefallen, dass bei der Nutzung von Submodulen, direkt Updates vom Theme heruntergeladen werden können:

Code:
git submodule update --remote themes/toha

Es muss aber einen Grund geben, warum der Themeautor die Info herausgegeben hat, dass das Theme als Submodule zu installieren ist und der normale Clone-Befehl das Theme nicht gut unterstützt.

Wichtig ist für mich zu wissen, und ich sollte es auch behalten, dass bei der Nutzung von Submodulen ein Git-Repository vonnöten ist. :-)

Drucke diesen Beitrag

  submodul Repository
Geschrieben von: Joopi - 07-01-2023, 03:00 - Forum: Git - Keine Antworten

Über Git in Verbindung mit GitHub lassen sich Dateien, gepackte Ordner und auch Submodule für Hugo und alles andere downloaden.

Am besten wechselt man direkt in den Ordner der Hugo-Seite und setzt dann den entsprechenden Befehl ab.

Die Syntax für den Download eines Submoduls ist wie folgt:

Code:
git init
git submodule add https://github.com/budparr/gohugo-theme-ananke.git ./themes/ananke

Danach ist das Theme in Hugo bzw. in der Datei config.toml einzubinden:

Code:
echo ‘theme = “ananke”’ >> config.toml

Drucke diesen Beitrag

  clone Repository
Geschrieben von: Joopi - 07-01-2023, 02:59 - Forum: Git - Keine Antworten

Die wohl einfachst Art, ein GitHub-Repository auf dem lokalen Rechner zu installieren, geht über den Clonebefehl.

Bezogen auf ein zu clonendes Theme für Hugo könnte man wie folgt vorgehen, indem man sich im Ordner der Hugoseite befindet und dann folgenden Befehl absetzt:

Code:
git clone URL-des-Repositorys ./themes/Themename

Es ist in diesem Falle notwendig, dass der versteckte Ordner .git, der versteckt ist, gelöscht wird.


Ansonsten, sollte der Clone mit Git organisiert werden, muss der versteckte Ordner natürlich bestehen bleiben.

Drucke diesen Beitrag

  Autostart einrichten
Geschrieben von: Joopi - 06-01-2023, 11:45 - Forum: Linux - Keine Antworten

Das Thema Autostart beschäftigt mich schon einige Zeit. Ich würde gerne ein Script erstellen wollen, welches die jeweiligen Programme, die ich immer während der Arbeit am Desktop-PC geöffnet habe, beim Hochfahren des System automatisch startet.

Unter /home/user/.config/ gibt es den Ordner autostart. In diesem Ordner liegen Dateien, die die Endung desktop haben.

Diese Dateien haben Inhalte. Hier das Beispiel für Nextcloud:

Zitat:\[Desktop Entry\] Name=Nextcloud GenericName=File Synchronizer Exec=/usr/bin/nextcloud Terminal=false Icon=nextcloud Categories=Network Type=Application StartupNotify=false X-GNOME-Autostart-enabled=true

Ich kann mich daran erinnern, dass ich mal was gesehen habe, wie man an diese desktop-Dateien kommt. Leider weiß ich nicht mehr, wo ich das gesehen habe und in welchem Zusammenhang dieses stand.

In meinem persönlichen Bereich im Homeverzeichnis habe ich 3.561 Dateien mit der Endung desktop gefunden. Die sind nicht alle aktiv, weil viele noch von den zwischengelagerten alten Plattensicherungen kommen. Leider sind das fast nur solche Dateien. Die anderen kann ich bis auf shutter, Nextcloud und dropbox nicht wirklich zuordnen.

Ich suche jetzt noch im Basissystem.

Auf dem Gesamtsytem finde ich einiges an desktop-Dateien. Reicht es denn wirklich, wenn ich diese Dateien der Programme, die automatisch starten sollen, einfach so ins eigene Autostartverzeichnis, wie oben beschrieben, lege?






Die Ablage einer desktop-Datei im Ordner Schreibtisch bewirkt zunächst mal nichts. Ich müsste mal prüfen, was mit diesem Ordner überhaupt gemeint ist und ob ich ihn auf dem Desktop anzeigen lassen kann. Das ersetzt zwar nicht den Autostart, könnte aber für vielbenutzte Programme und insbesondere Dateien, die nicht im Browser bearbeitet und angezeigt werden, von Vorteil sein. Vielleicht ist auch ein Link zur Datei die richtige Lösung in einem Sammelordner.

Jedenfalls lässt sich die desktop-Datei vom neuen Programm Brackets anstandslos starten. Dafür ist also die desktop-Datei schonmal zu nutzen. Die Suche nach dieser Datei-Endung ist nun mit 6.723 Dateien abgeschlossen. Natürlich incl. der vielen Dateien aus der Sicherung der alten Debian-8-Platte.

Desktop-Dateien liegen in rauhen Mengen im Ordner /usr/share/appplications/






In der VirtualBox habe ich keine aktuelle Debian-Installation, daher versuche ich den Autostart mit Ubuntu 18.04 LTS zu bewerkstelligen. Dafür habe ich die desktop-Datei von Bluefish in deu Autostartordner des Home-Verzeichnisses gelegt und die Dateirechte für User, der den Desktop startet, vergeben.

In der VirtualBox für Ubuntu 18.04. LTS wurde der Editor bluefish automatisch gestartet und steht zur Verfügung. Als zweites habe ich den Chrome-Browser in den Autostartordner kopiert und auch dieses Programm wird beim Start von Ubuntu sofort ausgeführt und steht zur Verfügung.

Drucke diesen Beitrag

  Evolution Filterdatei bearbeiten
Geschrieben von: Joopi - 06-01-2023, 11:41 - Forum: Linux - Keine Antworten

In Evolution kann man die Nachrichtenfilter manuell bearbeiten, da die Filterdaten und -bestandteile in einer xml-Datei vorgehalten werden.

In meinem aktuellen System liegt die Datei hier:

Zitat:/home/username/.config/evolution/mail/filters.xml

Der Aufbau ist, wie es eben bei xml-Dateien der Fall ist, relativ klar und sieht im Allgemeinen so aus:

[Bild: Pasted-image-20220106101449.png]

Die Struktur ist einfach und man kann, wenn man es will, die Einträge manuell vornehmen bzw. durch ein Script einfügen lassen. Denn, je größer diese Datei ist, desto langwieriger ist es, neue Filter oder Filterbestandteile hinzuzufügen.

Im obigen Beispiel lasse ich die Mails, über eine gewisse Domain reinkommen, direkt löschen. Das hat mal in einer älteren Version von Evolution nicht wirklich funktioniert. Ich bin nun gespannt, ob es dieses Mal mit der neueren Version funktionieren wird.

Drucke diesen Beitrag

  Exim4 und die frozen message
Geschrieben von: Joopi - 06-01-2023, 11:34 - Forum: Linux - Keine Antworten

Regelmäßig erhalte ich Systemnachrichten, die etwas von frozen messages berichten. Diese Systemnachrichten werden durch Exim4 (Mail Transfer Agent und Mailserver) versendet und mit einem eher kryptischen Text versehen.

Das ist dann so aus:

Zitat:Message 1mfJKT-005rG3-Tm has been frozen (delivery error message).
The sender is <>.

The following address(es) have yet to be delivered:
mailadresse@mail.pu: Mailing to remote domains not supported

Mir war lange Zeit nicht klar, wie ich mit diesen Mails umzugehen habe. Ich weiß, dass sie nicht wichtig für mich sind. Aber es nervt eben, wenn immer diese Mails kommen und wenn ich nicht weiß, was sie bedeuten. Das schreit nach Aufklärung.

Im Grunde genommen sagen die Mails aus, dass eine Mail nicht zugestellt werden konnte. Das ist derzeit auch sehr gut so. Dieser Vorgang wird in der Log-Datei eingetragen:

Zitat:/var/log/exim4/mainlog

Darin werden zu den Mails, die in der Queue liegen, verschiedene Infos geschrieben.

Die Queue der noch nicht zugestellten Mails ist hier zu finden:

Zitat:/var/spool/exim4/msglog

Gleichzeitig existiert noch ein weitere Verzeichnis, in dem die Mail bzw. die Datei (die auch die Mail-ID ist) nochmals in zweifacher Form liegt, aber mit den Endung -H und -D.

Zitat:/var/spool/exim4/input

Wird eine Mail-ID gelöscht, verschwinden die Maildateien in den beiden Ordnern, also insgesamt 3 Dateien.

Um eine Aufstellung zu erhalten, welche Mails in der Queue liegen, ist mit root-Rechten folgender Befehl auszuführen:

Code:
sudo exim4 -bp

Das Ergebnis der Befehlsausführung sieht dann z.B. so aus:

Zitat:6h  2.1K 1mfGrj-005mBf-Fm <> *** frozen ***
          noreply@pixelberry.hu

5h  2.6K 1mfHFR-005moc-Sy <> *** frozen ***
          export1@utensilcentro.it

4h  2.1K 1mfHwO-005o2u-04 <> *** frozen ***
          accueil@rafting-castellane.com

3h  2.7K 1mfIkx-005qKp-9O <> *** frozen ***
          info@eyefordetailphotos.com

3h  2.7K 1mfItY-005qcu-0h <> *** frozen ***
          directorejecutivo@asatransporte.com

Aus z.B. der letzten Zeile der Auflistung ist die Mail-ID 1mfItY-005qcu-0h zu sehen. Die korrespondierenden Dateien, wie oben beschrieben, lauten dann 1mfItY-005qcu-0h-D und 1mfItY-005qcu-0h-H.

Um eine einzelne Mail zu löschen, kann folgender Befehl eingesetzt werden:

Code:
sudo exim4 -Mrm 1mfItY-005qcu-0h

Damit werden alle 3 existierenden Dateien gelöscht.

Um alle in der Queue befindlichen Mails zu löschen, ist folgender Befehl einzugeben:

Code:
sudo exim4 -bp|grep frozen|awk '{print $3}'|xargs sudo exim4 -Mrm

Wichtig dabei ist, dass beide exim4-Befehle am Anfang und am Ende mit einem führenden sudo versehen sind. Ansonsten werden Berechtigungsfehler ausgegeben (Permission denied).

Nun endlich kann ich diese blöden Systemnachrichten wegen der eingefrorenen Mails verstehen und weiß, was ich damit zu tun habe.

Drucke diesen Beitrag