Rechner für die Umrechnung von mil, inch, dpi, pixel/mm und der Berechnung von Mehrwertsteuerbeträgen.
Die Benutzung erfolgt ohne Gewähr.
Zeitrechner für die Berechnung von Tagesdifferenzen und Wochentagen. Die Benutzung erfolgt ohne Gewähr.
Die folgende 'OpenOffice/StarBasic-Funktion' zeigt die Berechnung des ungefähren Alters einer Person ausgehend von einem gegebenen Geburtstag. Das Geburtstag steht jeweils in Spalte B.
StarBasic-Function =(DATWERT(TEXT(HEUTE();"TT.MM.JJJJ"))-DATWERT(TEXT($B1;"TT.MM.JJJJ")))/365,25
Achtung: Der Schaltungsvorschlag kollidiert mit I2C1.
Alternative Lösungen bei I2C1-Nutzung
Es kommt vor, daß sich ein iOS-Update (hier von iOS 11 nach iOS 14 auf einem iPhone SE)
trotz freiem Speichers (hier 1,9 GByte) nicht auf dem iPhone installieren lässt. Wenn man
das Update mittels iTunes durchführt, kann das Update mit dem "Unbekannten Fehler 14"
abbrechen und das iPhone funktionslos im Wartungsmodus hinterlassen.
Der Wiederherstellungsprozess mit iTunes kann das iPhone mit iOS 14 reaktivieren,
aber in meinem Fall lies sich das Backup mit den Benutzerdaten nicht mehr einspielen.
Es trat hierbei der "Fehler 0xE800000A" (Backup kann nicht gelesen oder nicht geschrieben werden) auf.
Zu den bekannten Lösungshinweisen kann folgende Prüfung und Lösung ergänzt werden: Zum Zeitpunkt X (vor ca. 3 Jahren bei der Erstinstallation) wurde mit der damaligen iTunes-Version ein lokales Backup in das Verzeichnis %appdata%\Apple Computer\MobileSync\Backup\<ID> erstellt. Zum Zeitpunkt Y (heute) wurde vor dem obigen Update wiederum ein Backup mit der heute aktuellen iTunes-Version erstellt. Dieses Backup wurde von iTunes aus unbekannten Gründen allerdings in das Backup-Verzeichnis vom Zeitpunkt X erstellt, erkennbar an den zwei verschiedenen Zeitstempeln der Dateien. Das eigentliche Problem liegt nun darin, daß iTunes beim Restore versucht, dieses "doppelte" Backup (ca. 8 GByte, also viel zu groß für das 16 GByte-iPhone SE in diesem Falle) auf das iPhone zurückzuspielen und es kommt obiger Fehler. Die Lösung ist einfach, indem aus dem "doppelten" Backup-Ordner die Dateien mit dem Zeitstempel X wegbewegt werden. Dazu kann im Dateiexplorer nach allen Dateien gesucht werden und die Suchergebnisse nach dem Datum sortiert werden. Die überzählichen Dateien werden markiert und wegbewegt oder gelöscht. Damit war ein Restore des Backups vom Zeitpunkt Y nun möglich.
Legt man ein iPhone Backup mit iTunes an, sind in diesem Backup auch alle Fotos enthalten. Mittels folgendem Python-Script werden diese nach dem Aufnahmetag sortiert in ein neues Verzeichnis extrahiert:
from exif import Image from shutil import copyfile import datetime, os src_dir_path = r'.\iPhone\48xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx28' dst_dir_path = r'.\Fotos' if not os.path.exists(dst_dir_path): try: os.mkdir(dst_dir_path) except OSError: print ("Creation of the directory %s failed" % dst_dir_path) for root, dirs, files in os.walk(src_dir_path): for file_name in files: src_path = os.path.join(root, file_name) with open(src_path, 'rb') as my_file: try: my_image = Image(my_file) except: pass else: if my_image.has_exif: try: my_date = datetime.datetime.strptime(my_image.datetime_original, '%Y:%m:%d %H:%M:%S') dst_path = dst_dir_path + '\\' + my_date.strftime('%Y_%m%d') if not os.path.exists(dst_path): try: os.mkdir(dst_path) except OSError: print ("Creation of the directory %s failed" % dst_path) dst_path = dst_path + '\\' + file_name + '.jpg' try: copyfile(src_path, dst_path) print(src_path + ' ' + dst_path + ' copied') except IOError as e: print("Unable to copy file. %s" % e) except: pass except: pass
Das folgende VBA for Excel-Script erzeugt aus einer Excel-Tabelle eine Wortworke als
HTML, welche direkt im Standardbrowser Firefox dargestellt wird. Hintergrund war die Aufgabe,
eine Wortwolke in kurzer Zeit aufzubereiten und zu präsentieren. Die seitenfüllende Volbild-Ansicht
erreicht man im Firefox mit F11. Eine korrekte Darstellung im InternetExplorer ist nicht realisiert.
Eine Skalierung erfolgt soweit möglich automatisch, indem der Nutzer im Excel-File ein Verhältnis
vorgibt, mit dem mehr oder weniger große Wörter generiert werden. Dies hat direkten Einfluß auf die
Anzahl der dargestellten Wörter. Überhängende Worte werden in einen bei der Präsentation nicht
sichtbaren Bereich gezwängt.
Als Hintergrund findet eine skalierbare SVG-Grafik Verwendung. Diese wurde mit InkScape erstellt
und muß, damit sie als Objekt skalierbar wird, mit einem viewBox-Element erweitert werden.
Das Script arbeitet folgendermaßen:
Und so sieht die generierte HTML-Seite aus
XLS-File (Excel-File mit VBA-Script)
SVG-Grafik
VBA-Script
Option Explicit ' DLL zum Ausführen von Programmen deklarieren Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _ (ByVal hwnd As Long, ByVal lpOperation As String, _ ByVal lpFile As String, ByVal lpParameters As String, _ ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long Sub ErzeugeWortwolke() 'Ein/Ausschalten der Tranzparenz der Verdränger für Layoutansicht, mögliche Werte 0/1 Const iTranzparenz = 1 Dim MyFile, MyFileNum Dim iCounter, iMaxHaeufigkeit, iMinHaeufigkeit, iHaeufigkeit, iHervorhebung, iSkalierung As Integer Dim strFontSize1, strFontSize2, strFontSize3, strFontSize4, strFontSize5 As String Dim strTranzparenz, strWort As String ' Erzeuge Wortliste als HTML-Datei MyFile = ThisWorkbook.Path & "\Wortwolke.html" ' Minimum und Maximum der Häufigkeit des Auftretens der Wortbausteine ermitteln iMaxHaeufigkeit = MaxHaeufigkeit() iMinHaeufigkeit = MinHaeufigkeit() ' Manuelle Skalierung berechnen If ((Cells(1, 5).Value = "") Or (Not IsNumeric(Cells(1, 5).Value))) Then MsgBox "Keine Skalierung in Zelle E1 angegeben", vbOKOnly, "Fehler" Else ' FontSize Dimensionierung aus Skalierung abschätzen strFontSize1 = Str(Round(1.5 * Cells(1, 5).Value / 100, 1)) strFontSize2 = Str(Round(1.8 * Cells(1, 5).Value / 100, 1)) strFontSize3 = Str(Round(2.4 * Cells(1, 5).Value / 100, 1)) strFontSize4 = Str(Round(2.9 * Cells(1, 5).Value / 100, 1)) strFontSize5 = Str(Round(3.5 * Cells(1, 5).Value / 100, 1)) ' HTML File anlegen MyFileNum = FreeFile() Open MyFile For Output As #MyFileNum ' HTML Kopf schreiben Print #MyFileNum, "<!DOCTYPE HTML PUBLIC ""-//W3C//DTD HTML 4.01 Transitional//EN"">" Print #MyFileNum, "<html>" Print #MyFileNum, " <head>" Print #MyFileNum, " <title>Wortwolke</title>" ' Stylesheets definieren -> 5 Elemente zur Zeit, 1280 pixel breit Print #MyFileNum, " <style type=""Text/css"">" Print #MyFileNum, " #tagcloud { text-align:top; width:100%; } " Print #MyFileNum, " .tag1 { font-size:" & strFontSize1 & "em; color:#C0C0C0; margin: 0.3em;}" Print #MyFileNum, " .tag2 { font-size:" & strFontSize2 & "em; color:#A0A0A0; margin: 0.3em; }" Print #MyFileNum, " .tag3 { font-size:" & strFontSize3 & "em; color:#808080; margin: 0.3em; }" Print #MyFileNum, " .tag4 { font-size:" & strFontSize4 & "em; color:#606060; margin: 0.3em; }" Print #MyFileNum, " .tag5 { font-size:" & strFontSize5 & "em; color:#404040; margin: 0.3em; }" Print #MyFileNum, " </style>" Print #MyFileNum, " </head>" ' HTML aufbauen Print #MyFileNum, " <body>" Print #MyFileNum, " <div id=""tagcloud"">" ' Verdränger aufbauen If iTranzparenz = 0 Then strTranzparenz = "background-color:#CCCCCC; border:solid; border-width:1px; " Else strTranzparenz = "background-color:transparent; " End If ' Hintergrund Grafix als SVG einbinden Print #MyFileNum, " <span style=""position:absolute; left:0px; float:left; height:100%; width:100%; z-index:-1;"">" Print #MyFileNum, " <object data=""Wortwolke.svg"" type=""image/svg+XML"" width=""100%"" height=""100% "">" Print #MyFileNum, " Ihr Browser kann SVG-Objekte leider nicht anzeigen. Nutzen Sie Firefox 3 oder höher!" Print #MyFileNum, " </object>" Print #MyFileNum, " </span>" ' Verdränger Horizontale Ebene 1 Print #MyFileNum, " <span style=""position:relative; left:0px; float:left; height:10%; width:100%; " & strTranzparenz & " ""></span>" ' Verdränger Horizontale Ebene 2 Print #MyFileNum, " <span style=""position:relative; left:0px; float:left; height:20%; width:20%; " & strTranzparenz & " clear:left;""></span>" Print #MyFileNum, " <span style=""position:relative; right:0px; float:right; height:20%; width:10%; " & strTranzparenz & " ""></span>" ' Verdränger Horizontale Ebene 3 Print #MyFileNum, " <span style=""position:relative; left:0px; float:left; height:15%; width:10%; " & strTranzparenz & " clear:left;""></span>" Print #MyFileNum, " <span style=""position:relative; right:0px; float:right; height:15%; width:5%; " & strTranzparenz & " ""></span>" ' Verdränger Horizontale Ebene 4 Print #MyFileNum, " <span style=""position:relative; left:0px; float:left; height:25%; width:5%; " & strTranzparenz & " clear:left;""></span>" Print #MyFileNum, " <span style=""position:relative; right:0px; float:right; height:25%; width:2%; " & strTranzparenz & " ""></span>" ' Verdränger Horizontale Ebene 5 Print #MyFileNum, " <span style=""position:relative; left:0px; float:left; height:10%; width:8%; " & strTranzparenz & " clear:left;""></span>" Print #MyFileNum, " <span style=""position:relative; right:0px; float:right; height:10%; width:18%; " & strTranzparenz & " ""></span>" ' Verdränger Horizontale Ebene 6 Print #MyFileNum, " <span style=""position:relative; left:0px; float:left; height:10%; width:10%; " & strTranzparenz & " clear:left;""></span>" Print #MyFileNum, " <span style=""position:relative; right:0px; float:right; height:10%; width:23%; " & strTranzparenz & " ""></span>" ' Verdränger Horizontale Ebene 7 Print #MyFileNum, " <span style=""position:relative; left:0px; float:left; height:400; width:100%; " & strTranzparenz & " ""></span>" ' Wortbausteine in Wortwolke schreiben iCounter = 1 While (Cells(iCounter, 1).Value <> "") ' Häufigkeit aus Zellen lesen strWort = Cells(iCounter, 1).Value iHaeufigkeit = Cells(iCounter, 2).Value ' Hervorhebung und Gruppierung der Häufigkeit bestimmen iHervorhebung = Int((iHaeufigkeit - iMinHaeufigkeit) / (iMaxHaeufigkeit - iMinHaeufigkeit) * 4) + 1 ' .. und als SPAN-Element ausgeben Print #MyFileNum, " <span class=""tag" & iHervorhebung & """>" & strWort & "</span>" iCounter = iCounter + 1 Wend ' HTML schließen Print #MyFileNum, " </div>" Print #MyFileNum, " </body>" Print #MyFileNum, "</html>" ' HTML File schließen Close #MyFileNum ' Erzeugtes HTML File im Browser öffnen ShellExecute Application.hwnd, "Open", MyFile, vbNullString, vbNullString, vbNormalFocus End If End Sub Function MinHaeufigkeit() Dim iCounter, iMinInt iMinInt = 0 iCounter = 1 iMinInt = Cells(iCounter, 2).Value iCounter = 1 While (Cells(iCounter, 1).Value <> "") If iMinInt > Cells(iCounter, 2).Value Then iMinInt = Cells(iCounter, 2).Value End If iCounter = iCounter + 1 Wend MinHaeufigkeit = iMinInt End Function Function MaxHaeufigkeit() Dim iCounter, iMaxInt iMaxInt = 0 iCounter = 1 While (Cells(iCounter, 1).Value <> "") If iMaxInt < Cells(iCounter, 2).Value Then iMaxInt = Cells(iCounter, 2).Value End If iCounter = iCounter + 1 Wend MaxHaeufigkeit = iMaxInt End Function
PCjs
Good Old Games
Richis Lab
Sinclair Spectrum
Visual6502
Bizzley
The 8-Bit Guy
Machinae Supremacy - Gianna Sisters
16-Bit Wave
C64 Music
C64 SID Collection
Nightwish - The Greatest Show on Earth
Dean Kopri - Weak Élan Fantasy (Tambura cover)
Dean Kopri - Last ride of the day (Tambura cover)
Kebu - Bladerunner End Theme
Carlos Trilha - Pulstar
Popcorn!
Space - Magic Fly
Marble Machine
The Motors - Airport
The Tornados - Telstar
Apache - The Shadows
Neil LeVang - Ghost Riders In The Sky
Spaghetti Western Orchestra
Spaghetti Western
Kranich Modelle
MDK-Verlag
Schreiber Modelle
Wilhelmshavener
Kartonmodellshop