Hallo, Gast |
Du musst dich registrieren bevor du auf unserer Seite Beiträge schreiben kannst.
|
Foren-Statistiken |
» Mitglieder: 1
» Neuestes Mitglied: Joopi
» Foren-Themen: 462
» Foren-Beiträge: 639
Komplettstatistiken
|
Benutzer Online |
Momentan sind 9 Benutzer online » 0 Mitglieder » 5 Gäste AhrefsBot, Bytespider, DotBot, bot
|
|
|
Links und Bilder von Webseiten auslesen |
Geschrieben von: Joopi - 07-01-2023, 11:53 - Forum: Programmieren
- Keine Antworten
|
|
Via PHP erstelle ich Skripte, die ich für das Sammeln von Links und Bildern benutze.
1 - Webseite abspeichern
Gefällt mir eine Webseite und sind darauf Links und/oder Bilder, die mich interessieren, speichere ich diese Webseite als html-Datei ab.
Zitat:Wenn die Webseite via Google als html-Datei gespeichert wird, wird lediglich diese Datei angelegt.
Sofern aber die Webseite via FireFox gespeichert wird, wird gleichzeitig alles, was mit der Webseite zusammenhängt, gespeichert. Also auch Bilder, JavaScript-Dateien, CSS-Dateien usw.
Die html-Datei liegt in einem Verzeichnis.
2 - gefundene Links in Datei schreiben
In einem zweiten Schritt wird mit dem Skript php_http_link_auslesen.php diese Datei nach Links abgesucht.
Der Suchstring ist: https://
Dieser Suchstring mit mit REGEX wie folgt gefunden:
Code: $suche = '/"https:\/\/(.+)\s*"/isU';
Jeder einzelne Fund wird dann in eine txt-Datei geschrieben, die alle Links aufnimmt.
3 - verlinkte Webseiten herunterladen
In der in Schritt 2 erstellen txt-Datei enthalten Links werden nun mit dem Skript php_http_linkdatei_auslesen.php abgefragt. Die Webseiten, die mit den Links gefunden werden, werden wiederum abgespeichert. Die Speicherung erfolgt mit einem Standarddateinamen sowie einer hochzuzählenden Nummer.
4 - gespeicherten html-Dateien nach Bilderlinks durchsuchen
Sofern die hmtl-Dateien gespeichert wurden, um z.B. Bilder daraus herunterzuladen, wird dies mit dem Skript php_img_src_auslesen_2.php erledigt. Sofern die Webseiten nicht geschützt sind, ist das Herunterladen der Bilder und deren Verwendung für mich - also ohne weitere Veröffentlichung meinerseits - erlaubt. Ich begehe damit keine Urheberschutzverletzungen.
Die Bilder erhalten ebenfalls einen Standardnamen und eine Zufallszahl. Die Echtnamen sind oftmals doppelt und würden nur Ärger machen. Mit der Zufallszahl und dem Standardnamen geht es einigermaßen gut.
Der Suchbegriff nach dem Bildlink ist nicht eindeutig. Es gibt die verschiedensten Möglichkeiten, wie ein Bild in den html-Seiten eingebracht und/oder verlinkt sein kann. Hier muss über eine Liste von Möglickheiten nach der richtigen gesucht werden. Das ist aber noch nicht eingebaut (Stand: 22.12.2021).
Die Liste der Möglichkeiten ist lang und wird noch zu ergänzen sein.
5 - Zufallsdateiname
Anstelle der Zufallsnummer, kann auch ein Zufallsstring erzeugt werden. Dazu könnte man aus dem ASCII-Zeichensatz Zahlen und Buchstaben nutzen:
- Zahlen 0 - 9 = Position in der ASCII-Tabelle 48 - 57
- Buchstaben a - z = Position in der ASCII-Tabelle 97 - 122
- Buchstaben A - Z = Position in der ASCII-Tabelle 65 - 90
Ein fünfstelliger Zufallsdateiname nur aus Kleinbuchstaben könnte wie folgt erzeugt werden:
PHP-Code: <?php $dateineu = chr(rand(97,122)) . chr(rand(97,122)) . chr(rand(97,122)) . chr(rand(97,122)) . chr(rand(97,122)).".txt"; ?>
Damit wäre die Datei, die die Links aufnimmt mit einem Standard-Dateinamen ausgestattet und die neu erzeugte Datei wird in ein Verzeichnis verschoben und mit dem Zufallsdateinamen abgespeichert. Das könnte im Skript wie folgt aussehen:
PHP-Code: <?php copy($linkdatei, $pfadlinks.$dateineu);
?>
|
|
|
Autobatterie aufladen |
Geschrieben von: Joopi - 07-01-2023, 11:46 - Forum: Für den Technikheld
- Keine Antworten
|
|
Die Batterie im Panda ist, obwohl sie noch relativ neu ist, wieder mal leer. Bedingt durch die hohen Spritpreise wird das Auto kaum noch bewegt. Und wenn es bewegt wird, dann wird es nur auf Kurzstrecke bewegt. Auf Dauer geht das zu Lasten der Batterie, denn sie hat keine Möglichkeit, sich durch die Lichtmaschine wieder aufladen zu lassen.
Vor Jahren habe ich ein Batterieladegerät gekauft. Bei der Nutzung dieses Geräts ist zu beachten, dass die Batterie vom Bordnetz abgeklemmt werden muss. Sodann ist wie folgt vorzugehen:
- Batterie abklemmen (Zuerst Minus (-) dann Pluspol (+) abklemmen)
- Ladegerät Pluspol anklemmen, Minuspol anklemmen
- Ladegerät auf ON stellen
Sobald die Batterie voll ist, ist wie folgt vorzugehen:
- Ladegerät auf OFF stellen
- Ladegerät Minuspol abklemmen, Pluspol abklemmen
- Batterie anklemmen (Pluspol (+), dann Minuspol (-) anklemmen)
Eigentlich sollte das Auto dann starten. Damit die Batterie sich nochmals mit eigenem Strom füllen kann, sollte man eine längere Strecke fahren.
Jopii, am 19.04.2022
Update
Nach ca. 1 Stunde Ladezeit ist die Batterie scheinbar zu einem Viertel aufgeladen.
Es ist jetzt 13.00 Uhr. Ich werde nun mindestens eine halbe Stunde warten, um dann zu prüfen, ob sich der Ladezustand verändert hat.
Update 2
Die Ladeanzeige während des Ladens stand auch nach einer halben Stunde immer noch auf 25 % Kapazität. Das war schade. Scheinbar aber wird während des Ladens der tatsächliche Ladezustand nicht angezeigt. Das ist ähnlich wie vorhin, als die Anzeige immer noch auf 0 % stand.
Nach dem Ausschalten sprang die Nadel auf fast 50 %. Somit kann man davon ausgehen, dass das Aufladen läuft, aber nicht in realtime angezeigt wird. Ich gehe nun davon aus, dass ca. um 15.00 Uhr die Batterie wieder aufgeladen sein wird. Das sind jetzt noch ca. 90 Minuten.
|
|
|
PhpMyAdmin Datenbank importieren |
Geschrieben von: Joopi - 07-01-2023, 11:34 - Forum: Linux
- Keine Antworten
|
|
Um normalerweise in PHPMyAdmin eine Datenbank zu importieren, muss die Datenbank bekannt sein.
Man kann aber in der sql-Datei nach dem Eintrag -- Datenbank: `dbname` einfach die Datenbank erstellen (create) und in Benutzung (use)nehmen:
Zitat:-- Datenbank: `testdb`
--
CREATE DATABASE `testdb2`;
use `testdb2`;
|
|
|
PhpMyAdmin - Fehlermeldungen |
Geschrieben von: Joopi - 07-01-2023, 11:32 - Forum: Linux
- Keine Antworten
|
|
Code: cd /var/lib
sudo chmod -R 775 phpmyadmin/` this set read and write file permission.
Die Fehlermeldung mit dem blowfish-secret konnte ich durch die Berechtigungsänderung und die config.inc.php in /usr/share/phpmyadmin lösen.
Der Fehler mit dem TempDir konnte ich insofern lösen, dass die Eigentumszuordnung falsch war:
Code: user@rechner:/var/lib$ cd phpmyadmin/
user@rechner:/var/lib/phpmyadmin$ ls -l
insgesamt 8
-rwxrwxr-x 1 root www-data 68 Nov 19 19:23 blowfish_secret.inc.php
drwxrwxr-x 2 www-data www-data 4096 Mär 31 2020 tmp
user@rechner:/var/lib/phpmyadmin$ sudo chown user:user tmp/
user@rechner:/var/lib/phpmyadmin$ ls -l
insgesamt 8
-rwxrwxr-x 1 root www-data 68 Nov 19 19:23 blowfish_secret.inc.php
drwxrwxr-x 3 user user 4096 Nov 19 19:44 tmp
user@rechner:/var/lib/phpmyadmin$ sudo chown root:user blowfish_secret.inc.php
user@rechner:/var/lib/phpmyadmin$ ls -l
insgesamt 8
-rwxrwxr-x 1 root user 68 Nov 19 19:23 blowfish_secret.inc.php
drwxrwxr-x 3 user user 4096 Nov 19 19:44 tmp
|
|
|
Zufallszahl nutzen |
Geschrieben von: Joopi - 07-01-2023, 11:25 - Forum: Programmieren
- Keine Antworten
|
|
Heute hatte ich mal wieder eine Sache, bei der ich Dateinamen erstellen musste. Zur Differenzierung konnte ich keine abstrakten Dateinamen erstellen, sondern hatte eine feste Vorgabe. Damit dennoch individuelle Dateinamen erstellt werden konnten, habe ich die Möglichkeit der Zufallszahl genutzt.
Mit folgendem Befehl wird eine Zufallszahl im Bereich von 10000 bis 99999 ermittelt und in eine Variable geschrieben:
PHP-Code: <?php $zufallszahl = rand(10000, 99999); ?>
Diese Variable kann dann im weiteren Code verwendet werden.
|
|
|
Zeitstempel erstellen |
Geschrieben von: Joopi - 07-01-2023, 11:25 - Forum: Programmieren
- Keine Antworten
|
|
Um in PHP einen Zeitstempel zu erstellen, der im Frontmatter eine MarkDown-Datei in Hugo genutzt werden kann, ist folgende Syntax notwendig:
PHP-Code: <?php // setlocale(LC_ALL,'de'); echo strftime('%Y-%m-%dT%H:%M:%S%z'); ?>
Der Aufruf dieses sehr kurzes Scripts, erzeugt folgende Ausgabe:
Zitat:2021-10-12T20:37:11+0200
Diese Formatierung wird eben in MarkDown-Dateien benötigt, aus denen später in Hugo statischen HTML-Seiten erstellt werden. Das Datum dient der Sortierung.
Die Vorgabe aus dem Theme bzw. von Hugo ist eigentlich diese Schreibweise:
Zitat:2021-10-12T20:37:11+02:00
Nach einigen Tests und Betrachtung der HTML-Quelltexte kann ich nicht feststellen, dass es Unterschiede in der Verarbeitung gibt.
|
|
|
Zeilenumbruch entfernen |
Geschrieben von: Joopi - 07-01-2023, 11:23 - Forum: Programmieren
- Keine Antworten
|
|
Es gibt verschiedene Methoden, um unerwünschte Zeilenumbrüche aus einem Text zu entfernen. Ein für mich sehr gutes Vorgehen ist es, die möglichen Zeilenbrüche in einem Array aufzuführen und damit dann einen Ersetzen-Code zu formulieren:
PHP-Code: <?php $stringtext = str_replace(array("\r\n","\n","\r"),"",$stringtext); ?>
Die Zeilenumbrüche sind meist unsichtbar, daher kann durchaus alles bekannten Steuerzeichen in das Array aufgenommen werden.
|
|
|
vardump() auswerten |
Geschrieben von: Joopi - 07-01-2023, 11:22 - Forum: Programmieren
- Keine Antworten
|
|
Das Debuggen von Programmcode habe ich nie richtig wahrgenommen und gelernt. In VBA kann ich das mittlerweile einsetzen, bei PHP habe ich wieder mal so meine Probleme. Nun weiß ich aber, dass ich mit var_dump() durchaus gute Erkenntnisse erzielen kann, wenn mal wieder etwas nicht funktioniert.
Insbesondere bei der Nutzung von Arrays und deren Inhalte kann ich überprüfen, ob ich die richtigen Ergebnisse erwarten kann.
Bei der Ermittlung der Breite eine Videos, welches über ein Array via GET als Link aufzurufen wurde, hatte ich Probleme, dass Ergebnis der Shell-EXEC in eine Variable zu bekommen. Durch var_dump() erst habe ich geschnallt, dass ich es mit einem Array zu tun hatte.
Und zwar habe ich den Inhalt von $_GET mittels var_dump() ausgewertet:
Das Ergebnis war:
PHP-Code: <?php array(1) { ["video"]=> string(72) "/TM2_1/serien/wilsberg/wilsberg_24_interne_affaeren_2008-zp7ayygia5q.mp4" } ?>
Damit war klar, dass ich ein Array als Ergebnis erhalten hatte. Wie aber nun das Ergebnis für meine Zwecke nutzen. Der komplette String aus Ordner und Dateiname sollte in dem Shell-EXEC-Statement als Variable genutzt werden, um die Breite zu ermitteln.
Eher durch Zufall wurde mir klar, dass in dem Array nur ein Element enthalten war - nämlich video.
Und wie ich gesehen konnte, wurde video in dem Tag für den HTML-Player als Variable für den source-Tag genutzt:
PHP-Code: <?php <source src=<?php echo $video; ?> type="video/mp4"> ?>
Und damit war dann klar, dass ich für den absouten Dateinamen nun eine Variable $video würde nutzen können:
PHP-Code: <?php $breite = shell_exec("ffprobe -v error -select_streams v:0 -show_entries stream=width -of csv=s=x:p=0 " . $video); ?>
Der Inhalt der Variablen $video war in diesem Falle:
PHP-Code: <?php /TM2_1/serien/wilsberg/wilsberg_24_interne_affaeren_2008-zp7ayygia5q.mp4 ?>
Damit konnte ich die Breite nun in den HTML-Tag für den Player bei width einsetzen.
Der in den eckigen Klammern eines Arrays stehende Wert, ist die zu nutzenden Variable für die weitere Verwendung im Programmcode.
|
|
|
Datenbanken sichern |
Geschrieben von: Joopi - 07-01-2023, 11:16 - Forum: Programmieren
- Keine Antworten
|
|
Die Sicherung von Datenbank, MyIsam und/oder InnoDB, ist wichtig. MyIsam-Datenbanken können über deren Dateien gesichert werden, die (unter Debian) in /var/lib/mysql abgelegt werden. Das gilt nicht für InnoDB-Datenbanken.
Darum ist es sehr wichtig, dass von den Datenbanken sogannte Dumps gemacht werden. Dumps sind im Prinzip Sicherungen als Textdatei im sql-Format. Diese können bei Bedarf genauso wieder eingelesen werden.
Es gibt verschiedene Möglichkeiten der Sicherungsstrategie. Man kann einen Gesamtdump machen oder vielleicht eine Gruppe von Datenbanken zusammenfassen oder eben nur einzelne Datenbanken sichern. Die Befehle dazu, die über die Konsole abgesetzt oder in einem Script hinterlegt werden, sind nachfolgend beschrieben.
Sicherung einer einzelnen Datenbank mit Mitgabe des Passwortes:
Code: user@rechner:~$ mysqldump -u user -h localhost --password="pwd" datenbank > one_database.sql
Sicherung mehrerer Datenbanken mit Mitgabe des Passwortes:
Code: user@rechner:~$ mysqldump -u user -h localhost --password="pwd" --databases datenbank1 datenbank2 datenbank3 > several_databases.sql
Sicherung aller Datenbanken mit Mitgabe des Passwortes:
Code: user@rechner:~$ mysqldump -u user -h localhost --password="pwd" --all-databases --events > all_databases.sql
Ich lasse jeden Abend über einen Cronjob von jeder Datenbank einen Dump erstellen, der dann als ZIP-Datei auf die Backup-Festplatte mit Datumsangabe im Dateinamen verschoben wird. Eine Sicherung in meiner Cloud werde ich mir noch überlegen, da ich auch eine Methode finden muss, wie ich ältere Sicherungen automatisiert löschen kann. Ansonsten mülle ich mir nach und nach die Cloud mit unnötigen Dateien voll.
|
|
|
Shellscript aufrufen |
Geschrieben von: Joopi - 07-01-2023, 11:13 - Forum: Programmieren
- Keine Antworten
|
|
Innerhalb eines PHP-Codes kann ein ausführbares Shellscript ausgeführt werden. Das geht mit shell_exec.
PHP-Code: <?php $user = shell_exec("id"); echo "$user"; $berechtigung = shell_exec("ls -l mache_irgendwas.script"); //funktioniert nur so (ohne ls -l): $berechtigung = shell_exec("mache_irgendwas.script"); echo "$berechtigung"; ?>
In einem Shellscript habe ich Funktionen eingebaut, die Bilder renamen und resizen. Zwar bestehen diese Möglichkeiten auch innerhalb von PHP, aber ich benötige das Shellscript auch zu anderen Gelegenheiten. Daher wollte ich das Rad nicht neu erfinden.
Es mag sein, dass der geneigte PHP-Coder kurz vor einem Herzklabaster steht. Ich nutze das aber ausschließlich auf dem lokalen Rechner. Mir genügt es so und ich bin froh zu wissen, dass man überhaupt Shellscripte im PHP-Code integrieren kann.
|
|
|
|