Ubuntu / Linux Mint - Screen Tearing mit Nvidia Grafikkarte

Problem : Beim anschauen von Videos oder Streams tritt Screen Tearing auf. Das ist ein zerreißen des Bildes meist in der Mitte.

Lösung : Verwendet man eine Nvidia Karte kann dies durch einen Aufruf im Terminal behoben werden. Dazu öffnen wir einen Terminal mit STRG+ALT+T und kopieren führen diese Zeile aus.
nvidia-settings --assign CurrentMetaMode="nvidia-auto-select +0+0 { ForceFullCompositionPipeline = On }"
dann erstmal testen ob das Screen Tearing verschwunden ist. Sollte es so sein muß das in der /etx/X11/xorg.conf noch permanent gemacht werden. Laut gängigen Foren können hier Geschwindigkeitseinbußen auftreten, ich konnte jedoch keine feststellen. Unter der Section screen fügen wir das hinzu
Option         "metamodes" "nvidia-auto-select +0+0 { ForceFullCompositionPipeline = On }"
Beispiel Auszug aus Screen :
Section "Screen"
    Identifier     "Screen0"
    Option         "metamodes" "nvidia-auto-select +0+0 { ForceFullCompositionPipeline = On }"
    Option         "AllowIndirectGLXProtocol" "off"
    Option         "TripleBuffer" "on"
EndSection

Quelle :
Was ist Screen Tearing ?
https://wiki.archlinux.org/index.php/NVIDIA/Troubleshooting#Avoid_screen_tearing

Hier noch für Intel und ATI
https://wiki.archlinux.org/index.php/intel_graphics#Tear-free_video
https://wiki.archlinux.org/index.php/ATI#Driver_options


Apache 2.4 - Unterverzeichnis auf anderen Server umleiten mit mod_proxy

Problem : Wenn man mehrere Anwendungen hat die nur über Port 80 kommunizieren, aber alle über eine Leitung verfügbar sein müssen, kann man dies mit dem Apache Modul mod_proxy realisieren. Dieses Modul fungiert als proxy und leitet eine Anfrage intern an einen anderen Server um.

Wenn man sich diese schematische Zeichnung anschaut sieht man besser was gemeint ist.

mod_proxy - Apache 2.4
rot = physische Netzwerkverbindung


Lösung :
Diese Anleitung wurde unter Debian Jessie erstellt. Bei anderen Linux-Distributionen sollte das vorgehen ähnlich sein.
Zum Anfang stellen wir sicher das alle Module installiert sind die wir benötigen, das können wir mit dem folgenden Befehl bewirken.
apache2ctl -M
im output sollten dann diese Einträge vorhanden sein :
.....
 proxy_module (shared)
 proxy_html_module (shared)
 proxy_http_module (shared)
.....
 remoteip_module (shared)
 xml2enc_module (shared)
vermutlich sind diese Einträge nicht vorhanden wenn es sich um ein frisch installiertes System handelt. Dann müssen wir die Library nachinstallieren.
Dazu geben wir den Befehl
apt-get install libapache2-mod-proxy-html
ein. Dann aktivieren wir die Module mit
a2enmod proxy proxy_html proxy_http xml2enc remoteip
nach einem Neustart des Apache Servers stehen diese Module zur Verfügung
service apache2 restart

Nun müssen wir uns um die Weiterleitung kümmern. Diese erledigen wir in der Konfiguration der virtual Host auf dem Apache.
Ich verwende hier die Default Konfiguration für die Anleitung.
 nano /etc/apache2/sites-available/000-default.conf
öffnet den Editor dort fügen wir nun unsere Umleitung ein.
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html 
RemoteIPHeader X-Forwarded-For

# Weiterleiten auf site1.int.test
    ProxyPass /site1/ http://site1.int.test/
    ProxyPassMatch ^/site1/(.*) http://apache.proxy.ext.test/site1/$1
    ProxyPassReverse /site1/ http://site1.int.test/
	ProxyHTMLURLMap http://site1.int.test /site1/
# Weiterleiten auf site2.int.test
    ProxyPass /site2/ http://site2.int.test/
    ProxyPassMatch ^/site2/(.*) http://apache.proxy.ext.test/site2/$1
    ProxyPassReverse /site2/ http://site2.int.test/
	ProxyHTMLURLMap http://site2.int.test /site2/
		
# LogFiles

ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Nachdem wir die Datei gespeichert haben überprüfen wir die Konfiguration mit dem Befehl
apache2ctl configtest
lautet der Output
Syntax OK
haben wir alles richtig gemacht. Jetzt starten wir noch den Apache Server durch damit die Konfiguration aktiv wird.
service apache2 restart


Quellen :
apache.org - Doku - proxypass
apache.org - Doku - proxypassmatch
apache.org - Doku - proxypassreverse
apache.org - Doku - proxyhtmlurlmap
apache ProxyPass: how to preserve original IP address

Debian - automatisches Aktualisieren des Systems

Ich bin normalerweise kein Fan von automatischen Updates auf Servern jedoch macht es z.B. Sinn die Sicherheits Updats Nachts automatisch zu installieren. Ein komplettes System (dist-upgrade) oder Packetupdate (upgrade) ist jedoch mit Vorsicht zu genießen. Da kann es schon mal vorkommen das man morgens kommt und der Apache oder der MySQL Server Mist baut, wenn man dann nicht sofort an das automatische Update denkt sucht man sich einen Wolf ;-) Ich gehe im der folgenden Anleitung davon aus das man unter root arbeitet sollte dies nicht der Fall sein kann man bei jedem Befehl ein sudo davor setzen, dies muss natürlich installiert & konfiguriert sein.

Zuerst installieren wir cron-apt auf dem Server der automatisch aktualisiert werden soll.

Das können wir mit dieser Zeile erledigen :
apt-get install cron-apt
Nach der Installation von cron-apt müssen wir dies noch konfigurieren. Dazu rufen wir die Konfigurationsdatei auf
nano /etc/cron-apt/action.d/3-download
dort sollten wir diesen Inhalt finden :
autoclean -y
dist-upgrade -d -y -o APT::Get::Show-Upgraded=true
Die Standardkonfiguration bedeutet das alle Packete die als Update verfügbar sind heruntergeladen ABER nicht installiert werden.
dist-upgrade -d -y -o APT::Get::Show-Upgraded=true
Möchte man sich gar nicht um die Updates kümmern kann man das -d aus der Zeile löschen.
z.B.
dist-upgrade -y -o APT::Get::Show-Upgraded=true
das Vorgehen sollte man aber meiner Meinung nicht machen siehe oben.

Damit die Sicherheits Updates automatisch installiert werden müssen wir eine neue Liste für apt anlegen.
nano /etc/apt/sources.list.d/00_Sicherheits_Updates.list
Dort fügen wir diesen Inhalt ein :
# Sicherheits Updates für Debian Jessie

deb http://security.debian.org/ jessie/updates main
deb-src http://security.debian.org/ jessie/updates main

Wer eine andere Version als Jessie verwendet muss das hier natürlich ändern.

Jetzt müssen wir die Zeilen die wir hier eingetragen haben aus der Datei /etc/apt/source.list auskommentieren wir möchten ja keinen Ärger mit doppelten Packetquellen haben.
 nano /etc/apt/sources.list
Der Inhalt sollte dann so in etwa aussehen, kommt drauf an ob eigene Quellen eingefügt wurden oder nicht.
#deb cdrom:[Debian GNU/Linux 8.2.0 _Jessie_ - Official amd64 NETINST Binary-1 20150906-11:09]/ jessie main

deb http://ftp.de.debian.org/debian/ jessie main
deb-src http://ftp.de.debian.org/debian/ jessie main

# In die Datei /etc/apt/sources.list.d/00_Sicherheits_Updates.list ausgelagert für cron-apt
#
# deb http://security.debian.org/ jessie/updates main
# deb-src http://security.debian.org/ jessie/updates main

# jessie-updates, previously known as 'volatile'
deb http://ftp.de.debian.org/debian/ jessie-updates main
deb-src http://ftp.de.debian.org/debian/ jessie-updates main

Jetzt erzählen wir noch cron-apt das es diese Datei auch abarbeiten soll. Das machen wir indem wir eine neue Konfiguration für cron-apt anlegen.
 nano /etc/cron-apt/action.d/5-Sicherheits-Updates
mit diesem Inhalt :
upgrade -y -o APT::Get::Show-Upgraded=true
dann noch die Konfiguration dafür anlegen das auch nur Sicherheitsupdates installiert werden.
 nano /etc/cron-apt/config.d/5-Sicherheits-Updates
Inhalt :
OPTIONS="-q -o Dir::Etc::SourceList=/etc/apt/sources.list.d/00_Sicherheits_Updates.list -o Dir::Etc::SourceParts=\"/dev/null\""

Dann müssen wir noch einstellen wann das alles passieren soll. In der Default Einstellung läuft das ganze morgens um 4:00 Uhr der Syntax ist hier der gleich wie bei cron. Das kann in der Datei /etc/cron.d/cron-apt geändert werden. Da ich meine Backups früher erstelle ist für mich die Zeit ok, deswegen lass ich das auch auf Default ;-).Zum Abschluss können wir noch testen ob das ganze Zeugs jetzt auch funktioniert das erledigen wir mit
cron-apt -s
das Logfile zu cron-apt findet man unter /var/log/cron-apt/ dieses kann mit dem Befehl
cat /var/log/cron-apt/log | more
einfach durchgeblättert werden.

Wenn das alles funktioniert hat kann man sich zurücklehnen und einen Kaffee besorgen, ab jetzt werden jeden Morgen um 4:00 Uhr die Sicherheitsupdates automatisch installiert und die Packete die zum Update anstehen heruntergeladen um diese später definiert zu installieren.

Windows 10 - Feature Update 1607 - Das Betriebssystem ist momentan nicht zum Ausführen dieser Anwendung konfiguriert

Problem : Nach dem installieren des Feature Updates 1607 in Windows 10 (64Bit) erscheint diese Meldung "Das Betriebssystem ist momentan nicht zum Ausführen dieser Anwendung konfiguriert" nach der Anmeldung des Benutzers.

Lösung : Scheinbar tritt dieses Problem auf wenn Microsoft Office auf dem Client installiert ist. Eine Reparatur der Office Installation hat das Problem bei mir gefixt. In meinem Fall war ein Office 2016 (32Bit) installiert, der Fehler tritt aber scheinbar bei alle Office Versionen auf.

Windows 10 - Netzwerkprofil umstellen

Problem : Man hat für ein Netzwerk den falschen Typ es ist als "öffentliches Netzwerk" gekennzeichnet, man möchte aber "privates Netzwerk" als Profil haben.

Lösung : Über den Powershell Befehl
Get-NetConnectionProfile
die vorhandenen Netzwerk inkl. Profil anzeigen.

Mit dem Befehl
Set-NetConnectionProfile -InterfaceIndex 9 -NetworkCategory Private
den Typ des Netzwerkes ändern. Mögliche Profile sind Public | Private | DomainAuthenticated
Das Profil DomainAuthenticated wird automatisch gesetzt soblad ein Domain Controller verfügbar ist.

Netzwerkprofil mit Powershell ändern
Netzwerkprofil mit Powershell ändern


Quelle : Set-NetConnectionProfile bei Technet

VB.NET 2015 - Anzahl der Seiten in einer PDF ermitteln

Public Function GetPages(ByVal File As String)
      Dim PDFRD As PdfReader = New PdfReader(File)
      PDFPageCount = PDFRD.NumberOfPages
      Return PDFPageCount
End Function


Benötigt :
Imports iTextSharp.text.pdf
Imports iTextSharp.text
Imports System.Runtime.CompilerServices

Quellen :
iTextSharp - Library
http://developers.itextpdf.com/itextsharp-net
https://github.com/itext/itextsharp/releases
“Das einzig sichere System müsste ausgeschaltet, in einem versiegelten und von Stahlbeton ummantelten Raum und von bewaffneten Schutztruppen umstellt sein.”
Gene Spafford (Sicherheitsexperte)