Archive for the ‘Allgemein’ Category.

VHS Videos digitalisieren, ein Erfahrungsbericht

Ich bin vor einigen Tagen gefragt worden, ob ich nicht das passende Equipment hätte, um eine VHS Kassette zu digitalisieren. Recht blauäugig hab ich sofort „klar“ gesagt, denn einiges habe ich in der Tat:

  • eine AverMedia HDMI Capture Karte für den PC
  • zwei Elgato HDMI-Grabber für USB
  • ein Kaico Edition OSSC Konverter, der aus SCART HDMI zaubert

Theoretisch war also alles vorhanden, doch grau ist alle Theorie!

Versuch Nummer 1

Meine Idee war, einfach den geborgten Video-Recorder an den OSSC anzuschließen, um von dort das Bild mit der Capture-Karte und OBS aufzunehmen. Es tat sich genau nichts, es gab kein Bild. Des Rätsels Lösung war, dass der Video-Recorder ein Composite-Videosignal ausgibt, mit dem der OSSC Konverter leider nichts anfangen kann. Das Ding ist nur für alte Konsolen und Heim-PCs gemacht, aber nicht für VHS.

Versuch Nummer 2

Weg mit dem Kaico, her mit einem SCART-auf-HDMI Adapter vom großen A, Kostenpunkt knapp 7 (!) Euro. Audio kam an, aber das Bild war meist kaputt: „No Signal“. Des Rätsels Lösung war, dass das Video-Signal leider zu schlecht war und immer wieder zusammenbrach. Damit kam der günstige Adapter leider nicht klar.

Versuch Nummer 3

Versuch Nummer 3 brachte dann den Erfolg. Zusammen mit dem Video-Recorder hatte ich auch noch einen „Canopus ADVC-300 Advanced Digital Video Converter“ in die Hand gedrückt bekommen, den ich erst komplett ignoriert hatte. Damit lassen sich analoge Videos per FireWire auf den Rechner sichern. FireWire Hardware hab ich zwar vielleicht noch rumliegen, aber nicht mehr aktiv im Einsatz. Jedoch ist FireWire nicht die einzige Schnittstelle, das Ding nimmt analoge Videos nicht nur an sondern kann diese auch wieder analog ausgeben. Dabei wird das Videosignal so weit stabilisiert, dass der Scart-auf-HDMI Adapter nichts zu nörgeln hatte.

Der finale Prozess sah daher so aus:

  • VHS Videorecorder
  • mit drei CINCH-Kabeln dann in den Canopus
  • mit drei CINCH-Kabeln dann vom Canopus in einen 3-Cinch auf SCART-Adapter
  • mit dem SCART-Adapter dann in den sehr preiswerten SCART-auf-HDMI Adapter
  • vom SCART-auf-HDMI Adapter per HDMI in den HDMI Grabber (AverMedia LiveGamer 2)
  • in OBS dann dann von der Grabber-Karte aufnehmen, vorher Leinwand auf 4:3 anpassen
  • als Ausgabeformat wird MKV empfohlen, alle Audioquellen außer die Grabber-Karte wurden aktiv deaktiviert (mute)

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

TikZ Diagramm

Hier ein kleiner Schnipsel TikZ, den ich für die Beantwortung einer LaTeX-Frage geschrieben habe.

\documentclass[fontsize=12pt]{scrartcl}
\usepackage{wasysym}
\usepackage{tikz}
\usepackage[right]{showlabels}
\usetikzlibrary{positioning}
\usepackage{graphicx} 
 
\newcommand{\half}{\rotatebox{-45}{\Huge\RIGHTcircle}}
\newcommand{\full}{\Huge\CIRCLE}
 
\begin{document}  
\begin{center}
\begin{tikzpicture}[x=20mm,y=20mm]
 
\node at (0,0) (a1)  {\half};
\node at (1,0)  (a2) {\half};
\node at (2,0) (a3) {\half};
\node at (3,0) (a4) {\half};
 
\node at (0,-1) (b1)  {\half};
\node at (1,-1) (b2){\full};
\node at (2,-1) (b3)  {\half};
\node at (3,-1) (b4) {\full};
 
\draw (a1) -- (b1);
\draw (a2) -- (b2);
\draw (a3) -- (b4);
\draw (a4) -- (b3);
 
 
\end{tikzpicture}
\end{center}
 
\end{document}

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Verbinden und Trennen von Netzlaufwerken unter Windows

Mit dem folgenden Befehl kann man in Windows Netzlaufwerke (z.B. Freigaben auf einem Synology NAS) mounten

net use s: \\Diskstation4\Bilder /user:uwe passwort

Mittels net use * /delete lassen sich alle verbundenen Freigaben beenden.

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Getting jitsi into retirement homes

Together with friends from Dingfabrik Koeln (Thanks for the idea, Marian!) I am currently developing an solution for retirement homes to allow simple access to jitsi video sessions.

We know that many old people currently cannot receive visitors due to Corona. So our idea is to give them access to a simple Linux-based notebook and allow them to easily create a jitsi video session. Based on a predefined list of servers (that is to be updated from remote) and a text file with names, that can be edited by a nurse with a text editor, we simply create a url that can be shared among relatives.

The application was made using Python and tkinter, all code was pretty much copied from SO and other sources, I just had to put it together. (Thank you giants, that I could „stand on your shoulders“)

Using a Linux laptop with installed Python (and additional python3-tk package), Chrome/Chromium and git we have the tool run on startup. On the first start a text file with names is created, that can be edited easily.

If you find it useful, see the code in my github: https://github.com/UweZiegenhagen/pyJitsiopen.

Future updates shall include:

  • Automated updates
  • Logging for error tracking
  • Using local server lists that are not overwritten during updates

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Ein Jahreskalender mit LaTeX und Excel

This entry is part 2 of 3 in the series Kalender mit tikz-kalender

Anbei ein Jahreskalender für 2020, erstellt mit LaTeX und Excel. Excel deshalb, weil die Datumsfunktionen recht praktisch sind und mein LaTeX-Programmierkünste dafür nicht ausreichen.

Die Formel für die einzelnen Tage lautet:

=WENNFEHLER("\node at (" & C$2-1 &"," & -1* $B3 & ") [" & WENN(LINKS(TEXT(DATWERT($B3&"."&C$2&"."&$B$2);"TTT");1)="S";"weekend";"workday") & "] {\hspace*{-0.9em}{"  & TEXT(DATWERT($B3&"."&C$2&"."&$B$2);"TTT")   & "}};";"")

Inhaltlich geschieht dabei folgendes, am 1.1.2020 (Zelle C3)erklärt:

  1. Ich baue ein Datum aus dem Jahr in B2, dem Monat in C2 und dem Tag in B3
  2. Dieses Datum wird mittels TEXT() Funktion in den Tagesnamen umgewandelt
  3. Fängt dieser Tagesname mit „S“ an, handelt es sich um einen Wochenendtag, dann wird „weekend“ genutzt, sonst „workday“
  4. Dann setze ich den Tagesnamen in jeden einzelnen Node und verschiebe den Text dabei um -0.9em nach links (gibt sicher auch was in TikZ, was das macht, so ging es schneller)
  5. Wenn die Formel für den entsprechenden Tag einen Fehler bringt, weil der Tag (31.2.2020) nicht existiert, so wird nichts ausgegeben.
  6. Alle Node-Infos werden dann per copy paste in die TeX-Datei eingefügt und kompiliert

Hier die Dateien:

kalender.pdf

Kalendermacher_blog.xlsx

Hier der LaTeX-Code:

\documentclass{scrartcl}
\usepackage[a4paper,landscape,left=0.25cm,right=0.25cm,top=0.5cm,bottom=0.5cm]{geometry}
 
\usepackage[]{ifdraft}
\usepackage[]{attachfile}
\usepackage[]{eso-pic}
 
\usepackage[english]{babel}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
 
\renewcommand{\familydefault}{\sfdefault}
\RequirePackage[scaled=0.9]{helvet}
\usepackage{tikz}
\usepackage[right]{showlabels}
\usetikzlibrary{positioning}
\pagestyle{empty}
 
\usepackage{xcolor}
 
\usepackage{hyperref}
\usepackage{url}
 
\definecolor{weekendday}{RGB}{240,240,240}
\newcommand{\file}[1]{\textattachfile{#1}{\textcolor{blue}{\LaTeX\ Sourcecode}}}
 
\begin{document}  
 
\AddToShipoutPictureFG*{
  \put(35,10){\footnotesize Uwe Ziegenhagen, ziegenhagen@gmail.com %, \file{\jobname.tex}	
}
}
 
\begin{center}
\begin{tikzpicture}
[
    x=23mm,y=6mm,
    mybox/.style={rectangle,rounded corners,minimum width=23mm, minimum height=6mm,align=left},
	month/.style={mybox,align=center,draw=black,align=left,fill=white,thick,font=\bfseries\large},
    date/.style={mybox,draw=gray,fill=white,align=left,thick,minimum width=5mm,font=\bfseries\large},
    workday/.style={mybox,draw=black,text width=1.5cm,font=\bfseries\tiny},
    weekend/.style={mybox,draw=black,text width=1.5cm,fill=weekendday,font=\bfseries\tiny}
]
\node at (0,0) [month] {Januar};
\node at (1,0) [month] {Februar};
\node at (2,0) [month] {März};
\node at (3,0) [month] {April};
\node at (4,0) [month] {Mai};
\node at (5,0) [month] {Juni};
\node at (6,0) [month] {Juli};
\node at (7,0) [month] {August};
\node at (8,0) [month] {September};
\node at (9,0) [month] {Oktober};
\node at (10,0) [month] {November};
\node at (11,0) [month] {Dezember};
 
\node at (-0.7,-1) [date] {01};
\node at (-0.7,-2) [date] {02};
\node at (-0.7,-3) [date] {03};
\node at (-0.7,-4) [date] {04};
\node at (-0.7,-5) [date] {05};
\node at (-0.7,-6) [date] {06};
\node at (-0.7,-7) [date] {07};
\node at (-0.7,-8) [date] {08};
\node at (-0.7,-9) [date] {09};
\node at (-0.7,-10) [date] {10};
\node at (-0.7,-11) [date] {11};
\node at (-0.7,-12) [date] {12};
\node at (-0.7,-13) [date] {13};
\node at (-0.7,-14) [date] {14};
\node at (-0.7,-15) [date] {15};
\node at (-0.7,-16) [date] {16};
\node at (-0.7,-17) [date] {17};
\node at (-0.7,-18) [date] {18};
\node at (-0.7,-19) [date] {19};
\node at (-0.7,-20) [date] {20};
\node at (-0.7,-21) [date] {21};
\node at (-0.7,-22) [date] {22};
\node at (-0.7,-23) [date] {23};
\node at (-0.7,-24) [date] {24};
\node at (-0.7,-25) [date] {25};
\node at (-0.7,-26) [date] {26};
\node at (-0.7,-27) [date] {27};
\node at (-0.7,-28) [date] {28};
\node at (-0.7,-29) [date] {29};
\node at (-0.7,-30) [date] {30};
\node at (-0.7,-31) [date] {31};
 
\node at (11.7,-1) [date] {01};
\node at (11.7,-2) [date] {02};
\node at (11.7,-3) [date] {03};
\node at (11.7,-4) [date] {04};
\node at (11.7,-5) [date] {05};
\node at (11.7,-6) [date] {06};
\node at (11.7,-7) [date] {07};
\node at (11.7,-8) [date] {08};
\node at (11.7,-9) [date] {09};
\node at (11.7,-10) [date] {10};
\node at (11.7,-11) [date] {11};
\node at (11.7,-12) [date] {12};
\node at (11.7,-13) [date] {13};
\node at (11.7,-14) [date] {14};
\node at (11.7,-15) [date] {15};
\node at (11.7,-16) [date] {16};
\node at (11.7,-17) [date] {17};
\node at (11.7,-18) [date] {18};
\node at (11.7,-19) [date] {19};
\node at (11.7,-20) [date] {20};
\node at (11.7,-21) [date] {21};
\node at (11.7,-22) [date] {22};
\node at (11.7,-23) [date] {23};
\node at (11.7,-24) [date] {24};
\node at (11.7,-25) [date] {25};
\node at (11.7,-26) [date] {26};
\node at (11.7,-27) [date] {27};
\node at (11.7,-28) [date] {28};
\node at (11.7,-29) [date] {29};
\node at (11.7,-30) [date] {30};
\node at (11.7,-31) [date] {31};
 
 
% hier kommen die Sachen aus Excel rein
 
\end{tikzpicture}
\end{center}
\end{document}

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Kalender mit tikz-calendar erstellen

This entry is part 3 of 3 in the series Kalender mit tikz-kalender

Hier ein Beispiel, wie man mit tikz-calendar Jahreskalender erstellen kann. Kalenderereignisse müssen in einer externen Datei abgelegt werden, im Beispiel ist das die meineevents.events.

Die Farbnamen für die einzelnen Elemente lassen sich in https://www.sciencetronics.com/greenphotons/wp-content/uploads/2016/10/xcolor_names.pdf nachlesen.

\documentclass{tikz-kalender}
 
\setup{%
lang=german,
year=2020,
showweeknumbers=true,
title={Urlaub},
xcoloroptions={x11names},
titleColor=cyan, 
eventColor=brown,
periodColor=lime,
monthBGcolor=red,
monthColor=Purple0,
workdayColor=yellow,
saturdayColor=magenta,
sundayColor=orange,
events={meineevents} % Einbinden der events-Datei
}
 
\begin{document}
\makeKalender
\end{document}

Hier der Inhalt der meineevents.events:

\event{\year-10-09}{John Lennon (1940)}
\event{2020-10-03}{Tag d. dt. Einheit}
\event*{2020-04-12}{Ostersonntag}
\period{2020-02-01}{2020-02-06}[color=Gray0,name={Urlaub}]; 

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Ubuntu/Debian/Raspian Cheat-Sheet

Hier mein persönliches Cheat-Sheet für die Arbeit mit den verschiedenen Linux-Derivaten. Es wird im Laufe der Zeit erweitert.

Ubuntu

lsb_release -a
Ermittelt die Ubuntu Version
cat /proc/cpuinfo
CPU-Informationen ausgeben
cat /proc/meminfo
Memory-Informationen ausgeben
ip address show
IP-Adressen der Interfaces anzeigen

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Netzwerkverbindung unter Windows reparieren

Wenn unter Windows die Netzwerkverbindung nicht mehr verfügbar ist, können die folgenden Befehle von Deskmodder helfen, die auf einer Admin-Konsole einzugeben sind:

  1. netsh winsock reset
  2. netsh int ip reset
  3. ipconfig /release
  4. ipconfig /renew
  5. ipconfig /flushdns

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Spam-Löschen mit UIPath

Vor ein paar Tagen habe ich begonnen, mich etwas intensiver mit RPA (Robotic Process Automation) zu beschäftigen. Nachdem ich mit Katalan Studio schon recht einfach das Spam-Löschen in den von mir betreuten Mailing-Listen automatisieren konnte, wollte ich dieses Mal mit einer dedizierten RPA-Software arbeiten. Ich habe mich dabei für UIPath entschieden, da wir a) auch im Büro damit arbeiten und b) diese Software der Marktführer für RPA-Tools ist.

Ich habe ein neues Projekt begonnen und starte mit einer Sequenz. In Schritt 1 wird der IE geöffnet (nicht Edge, wird anscheinend noch nicht unterstützt) und die URL der Mailingliste geladen.

Öffnen des Browsers in UIPath (URL muss in Anführungszeichen)

Innerhalb des Browser-Scope nutze ich ich dann den „Type Into“ Befehl, um das Passwort einzugeben. Das anschließend notwendige „Return“ bzw. „Enter“ kann man definieren, in dem man rechts vom Eingabefeld das Plus-Zeichen anklickt und den entsprechenden Befehl selektiert, hier „Enter“.

Eingabe des Passworts

Der nächste Punkt ist entscheidend, denn es gibt zwei mögliche Szenarien: entweder sind Spam-Nachrichten vorhanden oder auch nicht. Ich nutze zu Identifikation des Szenarios die „Alle mit Entscheidung ‚aufschieben“ Inputbox mit der Name-Property „discardalldefersp“. (Alternativ könnte man sicher auch den Senden-Button dafür nutzen.)

Ist diese vorhanden, dann soll sie und anschließend der Senden-Button „Alle Daten senden“ angeklickt werden. Ist sie nicht vorhanden, dann soll der Bot sich nur ausloggen (da er dies auch tun muss, wenn Spam-Nachrichten gelöscht wurden, muss dies nicht innerhalb der Bedingung geschehen.)

Mit der Box wird entschieden, ob Spam-Nachrichten vorhanden sind oder nicht.

Ich nutze jetzt den „Element exists“ Befehl, um nach der Input-Box zu suchen.“WaitforReady“ sollte man auf None setzen, da sonst der Bot eventuell ewig darauf wartet, dass die Input-Box erscheint (TBD). Ich nutze noch eine boolean Variable, um den Status „Inputbox gefunden“ für meine folgende IF-Bedingung zu speichern. Dazu geht man in das „Exists“ Feld unter Output, drückt Strg-K und vergibt einen möglichst sprechenden Namen, ich habe „vBoolDiscard“ gewählt.

WaitForReady setze ich auf „None“, eine Output-Variable setze ich mit Strg-K => „NameDerVariablen“

Als nächste folgt die IF-Bedingung, die den Wert der eben gesetzten boolean Variablen prüft. Wenn der Wert TRUE ist, dann ist die Checkbox vorhanden und  soll angeklickt werden. Wenn sie nicht vorhanden ist, ist kein Spam vorhanden, der Bot kann sich ausloggen und den Tab schließen.

Rest der Sequenz: wenn die Inputbox vorhanden ist, dann wird sie angeklickt und mit Senden bestätigt. Ist sie nicht vorhanden, geschieht nichts. 

Fazit: Wenn man die Kniffe kennt (Erstelle eine Variable, warte nicht auf Input-Elemente), dann ist der Einstieg in RPA mit UIPath recht einfach. Ohne sie muss man schon die vorhandenen Tutorials recht intensiv lesen.


Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Ordner beschriften mit LaTeX, Teil 2: Schmale Ordner

Hier noch eine Erweiterung zum Beitrag von gestern, angepasst auf schmale Ordner und mit der Möglichkeit, das jeweilige Label individuell zu skalieren. Dazu wurde der \mylabel Befehl einfach um einen Parameter erweitert, der den übergebenen Labeltext mittels \scalebox aus dem graphicx Paket skaliert.

\documentclass[a4paper,12pt]{scrartcl}
\usepackage[total={210mm,297mm},top=0mm,left=0mm,bottom=0mm,includefoot]{geometry}
\usepackage[schmal]{ticket}
\usepackage{graphicx}
\usepackage{filecontents}
 
\IfFileExists{plex-sans.sty}{%
\usepackage[sfdefault]{plex-sans}%
}{
\usepackage{palatino}%
}
 
\begin{filecontents*}{schmal.tdf}
\unitlength=1mm
\hoffset=-13mm
\voffset=-15mm
\ticketNumbers{1}{10}
\ticketSize{185}{32} % Breite und Höhe der Labels in mm
\ticketDistance{0}{0} % Abstand der Labels
\end{filecontents*}
 
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage{xcolor}
 
\renewcommand{\ticketdefault}{}%
\makeatletter
\@boxedtrue % Rahmen um Ticket
\@emptycrossmarkfalse % Falzmarken
\@cutmarktrue % Schnittmarken
\makeatother
 
\newcommand{\mylabel}[2]{
\ticket{%
\put(5,6){\scalebox{#1}{\bfseries #2}}
}}
 
\begin{document}
\mylabel{6}{Versicherung}
\mylabel{6}{Versicherung}
\mylabel{6}{Versicherung}
\mylabel{6}{Versicherung}
\mylabel{6}{Versicherung}
\mylabel{6}{Versicherung}
\mylabel{6}{Versicherung}
\mylabel{6}{Versicherung}
\end{document}

Abbildung Ordner-Label

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined.

Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website