Hallo, Gast |
Du musst dich registrieren bevor du auf unserer Seite Beiträge schreiben kannst.
|
Foren-Statistiken |
» Mitglieder: 1
» Neuestes Mitglied: Joopi
» Foren-Themen: 513
» Foren-Beiträge: 726
Komplettstatistiken
|
Benutzer Online |
Momentan sind 10 Benutzer online » 0 Mitglieder » 6 Gäste AhrefsBot, Bing, DotBot, bot
|
|
|
Desktopnotification zeigt sich - und dann? |
Geschrieben von: Joopi - 11-01-2023, 11:30 - Forum: Linux
- Keine Antworten
|
 |
Anwendungen, die mittel Snap zur Verfügung gestellt werden, sind für mich relativ neu. Die Handhabung ist mir nicht immer ganz klar, was nichts mit dem Programm selber zu tun hat.
Letztens wunderte mich, dass immer wieder Desktopnotifications auftauchten. Irgendwie fingen die an zu nerven und ich war bemüht, diese abzustellen. Ohne Erfolg.
Nun habe ich herausgefunden, warum diese Meldungen auf dem Bildschirm immer wieder auftauchen. Und zwar ist das ein Hinweis darauf, dass es eine neue Version des Snaps gibt. Scheinbar sind Snaps relativ empfindlich, wenn diese im laufenden Betrieb aktualisiert werden. Zu lesen ist das hier: refresch awareness - Desktopnotifications
Derzeit nutze ich zwei Snap-Programme intensiv:
- Visual Studio Code (name => code)
- PyCharm-Community (name => pycharm-community)
Der permanente Hinweis auf eine Aktualisierung nervte, denn es wurde ein Zeitraum ab 13 Tage angegeben. Ich war bislang der Meinung, dass in 13 Tagen das Update kommen würde. Das tut es auch, aber eben mit "Gewalt".
Besser ist es, sobald die Meldung kommt, das Programm tatsächlich zu beenden und die Aktualisierung selber vorzunehmen. Dafür ist, im Falle von Visual Studio Code, folgender Befehl notwendig:
Code: sudo snap refresh code
Um überhaupt zu wissen, welche Snaps installiert sind, ist folgender Befehl geeigent:
Code: sudo snap list --all
Dazu muss man wissen, das Snap im Standard immer zwei Version vorrätig hält. Sofern man den Standard nicht ändert, ist die aktuelle Version aktiviert und die vorherige Version deaktiviert:
Zitat:code 97dec172 117 latest/stable vscode✓ classic
code e8a3071e 116 latest/stable vscode✓ deaktiviert,classic
Nun hat die Nerverei mit den Desktopnotifications endlich ein Ende und ich Trottel weiß nun auch, wie ich mit Snaps umzugehen habe.
|
|
|
Aktuelles Verzeichnis ermitteln |
Geschrieben von: Joopi - 09-01-2023, 03:27 - Forum: Programmieren
- Keine Antworten
|
 |
Für weitere Arbeiten mit PHP muss ich in der Lage sein, das aktuelle Verzeichnis zu ermitteln. Das geht relativ einfach mit folgendem Befehl, der das Verzeichnis auch direkt ausgibt:
PHP-Code: echo "<p>Das ist das aktuelle Verzeichnis: " . getcwd() . "</p>";
Oder, wenn das aktuelle Verzeichnis in einem HTML-Code eingebettet werden soll:
PHP-Code: <p>Das ist das aktuelle Verzeichnis: " . <?php echo getcwd(); ?> . "</p>;
|
|
|
Javascript online einbinden |
Geschrieben von: Joopi - 09-01-2023, 03:26 - Forum: Programmieren
- Keine Antworten
|
 |
Der Eintrag im HEAD-Tag einer Webseite, um Jquery alias JavaScript einzubinden, kann auch mit einer Online-Variante gefüllt werden. Das hat den Vorteil, dass man direkt auf eine neuere Version umstellen kann. Der Nachteil ist, dass, wenn man auf localhost arbeitet, bei fehlender Internetverbindung keine Einbindung hat.
PHP-Code: <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"\></script>
Ich muss nur auf dem laufenden bleiben, ab wann sich die Version ändert und ab wann eine Übernahme der neuen Version sinnvoll ist.
|
|
|
CSV im Array nutzen |
Geschrieben von: Joopi - 09-01-2023, 03:14 - Forum: Programmieren
- Keine Antworten
|
 |
Die Nutzung von CSV-Datei beim Aufbau meines Mediencenters könnte eine große Rolle spielen.
CSV-Dateien können über bestimmte Funktionen in PHP entweder als ganze Datei ausgeben oder in Arrays gespeichert werden.
Hier sind die Codes für beide Varianten.
CSV-Datei insgesamt einlesen und ausgeben
PHP-Code: <h1 class="w3-text-teal">Eine CSV-Datei komplett einelesen</h1> <!-- Das ist der Haupteintrag -->
<?php $row = 1; if (($handle = fopen("csv_test.csv", "r")) !== FALSE) { while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { $num = count($data); echo "<p> $num Felder in Zeile $row: <br /></p>\n"; $row++; for ($c=0; $c < $num; $c++) { //echo $data[$c] . "<br />\n"; echo $data[$c] . " | "; } } fclose($handle);
} ?>
CSV-Datei in ein Array einlesen und dann über die Felder ausgeben
PHP-Code: <p>Die CSV-Datei wird in ein Array eingelesen. Die Ausgabe kann über die einzelnen Felder erfolgen. Das ist genau das, was ich brauche, um ggfs. das Script für die Videoplaylisten so umzustellen, dass ich nur ein Script für das aufbereiten der Playlisten und das Abspielen der verlinken Videos benötige. Wichtig ist die Datenvorhaltung.</p>
<?php $handle = fopen("csv_test.csv", "r"); while (($data = fgetcsv($handle)) !== FALSE) { //var_dump($data); echo $data[0] . "<br>"; echo $data[1] . "<br>"; echo $data[2] . "<br>"; echo $data[3] . "<br>"; echo $data[4] . "<br>"; } ?>
Das Einsatzgebiet der CSV-Datei, gleiches wird vielleicht auch für die XML-Datei gelten, ist bei meiner datenbanklosen Idee von großer Weite. Hier kann ich vielleicht sehr viele Einzeldateien sparen, wenn ich mein Vorhaben umsetzen kann.
|
|
|
XML-Dump in eine Datenbank einfügen |
Geschrieben von: Joopi - 08-01-2023, 11:27 - Forum: Programmieren
- Keine Antworten
|
 |
Ich habe mich gefragt, ob es möglich ist, dass man einen XML-Dump (anstelle SQL-Dump) macht und diesen dann in MySQL wieder einfügen kann. Das geht!
Es gibt zwei Varianten, die ich ausprobiert habe:
- Bestehende Tabelle löschen und alles neu erfassen
- Daten an bestehende Tabelle anfügen (ID muss durchgängig sein)
Wenn die bestehende Tabelle gelöscht werden soll, dann muss in der xml-Datei folgendes enthalten sein:
Code: <?xml version="1.0" encoding="utf-8"?>
<pma_xml_export version="1.0" xmlns:pma="https://www.phpmyadmin.net/some_doc_url/">
<!--
- Structure schemas
-->
<pma:structure_schemas>
<pma:database name="testdb" collation="utf8_general_ci" charset="utf8">
<pma:table name="jagd_transfersum">
DROP TABLE IF EXISTS `jagd_transfersum`;
</pma:table>
<pma:table name="jagd_transfersum">
CREATE TABLE `jagd_transfersum` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`id_vorgang` int(11) DEFAULT NULL,
`betrag` float DEFAULT NULL,
`waehrung` char(10) DEFAULT NULL,
`erfassung` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=2891 DEFAULT CHARSET=utf8;
</pma:table>
</pma:database>
</pma:structure_schemas>
<!--
- Datenbank: 'testdb'
-->
<database name="testdb">
<!-- Tabelle jagd_transfersum -->
<table name="jagd_transfersum">
<column name="id">1</column>
<column name="id_vorgang">2163</column>
<column name="betrag">3800000</column>
<column name="waehrung">Dollar</column>
<column name="erfassung">2012-12-08 20:02:30</column>
</table>
Wenn die Daten zusätzlich in eine bestehende Tabelle erfasst werden sollen, dann muss der Part mit dem Lösch- bzw. Create-Befehl vorher herausgenommen werden:
Code: <?xml version="1.0" encoding="utf-8"?>
<pma_xml_export version="1.0" xmlns:pma="https://www.phpmyadmin.net/some_doc_url/">
<!--
- Datenbank: 'testdb'
-->
<database name="testdb">
<!-- Tabelle jagd_transfersum -->
<table name="jagd_transfersum">
<column name="id">1</column>
<column name="id_vorgang">2163</column>
<column name="betrag">3800000</column>
<column name="waehrung">Dollar</column>
<column name="erfassung">2012-12-08 20:02:30</column>
</table>
<table name="jagd_transfersum">
<column name="id">2</column>
<column name="id_vorgang">2433</column>
<column name="betrag">7500000</column>
<column name="waehrung">Dollar</column>
<column name="erfassung">2012-12-08 22:29:48</column>
</table>
<table name="jagd_transfersum">
<column name="id">3</column>
<column name="id_vorgang">1474</column>
<column name="betrag">7500000</column>
<column name="waehrung">Dollar</column>
<column name="erfassung">2012-12-09 09:43:14</column>
</table>
Bei dieser Variante muss man die ID, die ein Autowert ist, natürlich durchgängig halten.
|
|
|
XML-Daten in Datenbank erfassen |
Geschrieben von: Joopi - 08-01-2023, 11:25 - Forum: Programmieren
- Keine Antworten
|
 |
Ich habe ein Script gefunden, welches in der Lage ist, eine xml-Datei zu öffnen und den Inhalt in eine MySQL-Datenbank bzw. -Tabelle zu erfassen.
Die xml-Datei sieht so aus:
Code: <?xml version="1.0" encoding="utf-8"?>
<Artikelstamm xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Artikel id="1" artnummer="1000" bezeichnung="Testprodukt1" />
<Artikel id="2" artnummer="11000" bezeichnung="Testprodukt2" />
<Artikel id="3" artnummer="11001" bezeichnung="Testprodukt3" />
<Artikel id="4" artnummer="11002" bezeichnung="Testprodukt4" />
<Artikel id="5" artnummer="11003" bezeichnung="Testprodukt5" />
</Artikelstamm>
Das PHP-Script sieht so aus:
PHP-Code: <?php
$filename = './itrunde/Artikel.xml';
if(file_exists($filename)) { $xml = simplexml_load_file($filename); if($xml) { foreach($xml->Artikel AS $article) { $abfrage = "INSERT INTO xml_itrunde (id, artikelnummer, bezeichnung) VALUES ('".$article['id']."', '".$article['artnummer']."', '".$article['bezeichnung']."')"; $ergebnis = mysql_query($abfrage); } } }
?>
Gefunden habe ich das Ganze hier:
XML-Datei in MySQL-Datenbank schreiben
|
|
|
Programmcode beginnen |
Geschrieben von: Joopi - 08-01-2023, 11:21 - Forum: Programmieren
- Keine Antworten
|
 |
Ich hege einige Gedanken zu XML und möchte versuchen, über XML meine Datenbanken zu minimieren bzw. abzulösen.
Langsam, aber sicher, schaffe ich es, dass ich mich an XML gewöhne. Ich habe es lange nicht verstanden, habe am aber vergangenen Wochenende sehr viel dazu gelernt. Dazu zählte auch, wie ich XML-Dateien auslesen und darstellen sowie erstellen kann.
Alle XML-Dateien sollten mit folgender Zeile, die Prolog genannt wird, (w3schools) beginnen, muss aber nicht:
Code: <?xml version="1.0" encoding="UTF-8"?>
Damit beginnen alle XML-Dateien und direkt im Anschluss kann man mit der Hierarchie bzw. der Struktur der Dateninhalte beginnen.
___
Prüfung:
Ein Test mit JavaScript hat nicht funktioniert. Ein analoger Programmcode von w3schools.com mit dem XMLHttpRequest auf dem Linux-Notebook hat funktioniert. Also muss ich das nochmal prüfen.
Hier ist ein analoger Code zu finden und für den Test bereit auf der lokalen Maschine:
https://www.w3schools.com/xml/xml_parser.asp
|
|
|
Der Umgang mit dem Datum |
Geschrieben von: Joopi - 08-01-2023, 11:15 - Forum: Excel und LibreOffice Calc
- Keine Antworten
|
 |
Code: Sub datum_erkennen_1()
'
Dim LstrDate As String
Dim LDate As Date
'
'LstrDate = "12.08.2019"
'
LstrDate = Range("C6").Value
LDate = CDate(LstrDate)
'
'MsgBox LDate
Debug.Print LDate
'
End Sub
Code: Sub datum_erkennen_2()
'
Dim tag As Date
'
tag = CDate(Range("C6").Value)
'
'MsgBox tag
Debug.Print tag
'
End Sub
Code: Sub datum_erkennen_3()
'
Dim tag1 As String
Dim tag2 As String
Dim tag3 As String
'
tag1 = Year(CDate(Range("C6").Value))
tag2 = Month(CDate(Range("C6").Value))
tag3 = Day(CDate(Range("C6").Value))
'
Debug.Print tag1
Debug.Print tag2
Debug.Print tag3
'
End Sub
Code: Sub tagesdatum()
'
Debug.Print Date
Debug.Print Time
Debug.Print WeekdayName(Weekday("14.08.2019"), False, vbSunday)
Debug.Print Format("14.08.2019", "DDDD")
Debug.Print Choose(Weekday("14.08.2019"), "Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag")
'
End Sub
Code: Sub kw_ermitteln()
'
Dim kw As Integer
'
'Aufruf der Funktion (siehe unten) mit Parameter
kw = DINKw("14.08.2019")
'
'kw = DINKw(Range("A1").value)
'
'MsgBox kw
'
Debug.Print "Kalenderwoche: " & kw
'
End Sub
Code: Function DINKw(dat As Date) As Integer
'
Dim kw As Integer
'
kw = Int((dat - DateSerial(Year(dat), 1, 1) + ((Weekday(DateSerial(Year(dat), 1, 1)) + 1) Mod 7) - 3) / 7) + 1
'
If kw = 0 Then
'
kw = DINKw(DateSerial(Year(dat) - 1, 12, 31))
'
ElseIf kw = 53 And (Weekday(DateSerial(Year(dat), 12, 31)) - 1) Mod 7 <= 3 Then
'
kw = 1
'
End If
'
DINKw = kw
'
End Function
|
|
|
Outlook-Mail über VBA-Code versenden |
Geschrieben von: Joopi - 08-01-2023, 11:12 - Forum: Excel und LibreOffice Calc
- Keine Antworten
|
 |
Mit einem VBA-Code ist es möglich eine Mail über Outlook abzusenden. Dabei unterscheidet man den Direktversand oder eben die Anzeige in Outlook, um noch Änderungen vorzunehmen. Im nachfolgenden Code sind alle üblichen Funktionen dargestellt, teils auskommentiert.
Code: Sub EmailAbsenden_bunker()
Dim objOutlook As Object
Dim objMail As Object
Set objOutlook = CreateObject("Outlook.Application")
Set objMail = objOutlook.CreateItem(0)
With objMail
.To = "deinname@deinedomain.de"
'.CC = "deinname@deinedomain.de"
'.BCC = "deinname@deinedomain.de"
'Versand an mehrere Empfänger
'.To = "deinname@deinedomain.de; zweiteEmailadresse@domain.de"
.Subject = "Betreff"
.Body = "Ihre Nachricht."
'Versand über Outlookanzeige
.Display 'Erstellt die Email und öffnet diese. Der Versand erfolgt anschließend manuell vom User!
'Versand direkt aus dem VBA-Code heraus
.Send 'Sendet die Email automatisch
'.Attachments.Add "C:/Beispiel.xlsx"
'Versand mehrerer Anhänge in einer Mail
'.Attachments.Add "C:/Beispiel_1.xlsx"
'.Attachments.Add "C:/Beispiel_2.xlsx"
End With
End Sub
Im VB-Editor muss die Objektbibliothek Microsoft Outlook 16.0 Object Library gesetzt sein.
Das Beispiel habe ich hier gefunden:
https://www.makro-excel.de/2017/03/06/pe...versenden/
|
|
|
Zellbezug dynamisieren |
Geschrieben von: Joopi - 08-01-2023, 11:09 - Forum: Excel und LibreOffice Calc
- Keine Antworten
|
 |
Es gibt dann und wann Gründe, einen Zellbezug zu dynamisieren. Das bedeutet, die Zelladresse ist nicht eindeutig, sondern abhängig von einem Ergebnis.
Über INDIREKT kann so ein dynamischer Zellbezug erstellt werden. Hier ein Beispiel:
Code: =ZÄHLENWENN(INDIREKT("K12:K"&ZEILE()+SUMME(A8+3));"")
Zusammensetzung der Formel mit einem dynamischen Zellbezug.
Der dynamische Teil der Zählenwennformel setzt sich zusammen aus der Anzahl der Datensätze (also aus A8) und der Position der Formel (K8 in dem Falle).
Wenn also bis zum Ende der Tabelle Leerfelder gezählt werden sollen, dann darf das Zählen nicht über das Tabellenende hinausgehen, weil sonst die überschüssigen Zellen, die leer sind, auch gezählt werden. Der Wert von 3 wird hier hinzugerechnet, da meine Tabellen generell ab Zeile 12 beginnen, die Formel in Zeile 8 steht und somit zur Anzahl nur noch 3 hinzuzurechnen sind, um bis ans Tabellenende zu kommen.
Gefunden habe ich die Lösung hier:
https://supportnet.de/fresh/2006/8/id1393952.asp
|
|
|
|