Kurz gesagt: Google hat vor wenigen Tagen die Bildersuche überarbeitet und dabei vor allem eine größere Änderung vorgenommen: Der bisher existierende „Bild ansehen“ Button wurde entfernt, der direkt das gefundene Bild aufrufen konnte. Jetzt muss der Suchende über „Besuchen“ auf die Webseite gehen und das Bild selbst suchen und die Bild-URL kopieren. Das hat Vorteile für Bild(rechte)inhaber und die Fairness, jedoch Nachteile für die Usability und unerfahrene Benutzer. Hintergrund ist die Einigung mit Getty Images in einem Rechtsstreit. Die Einschätzung, ob man das jetzt so lässt, obliegt jedem selbst.
(Chrome) Bessere Empfehlung: Ich habe soeben eine neue Extension namens „Make Google Images Great Again“ (Chrome) gefunden, dass nicht nur den „Bild ansehen“ Button wiederherstellt, sondern auch ein „Ähnliche Bilder“ Button ergänzt. Somit lassen sich leicht identische oder ähnliche Bilder mit der Google Bilderssuche finden:
Digitale Kunst/Bildbearbeitung hat sich im Laufe der Zeit schon etwas verändert… was damals noch beeindruckende digitale Bildmanipulation mit Peter Lustig war…
… wird heute bestenfalls mit einem nostalgischen Lächeln geehrt – von Personen über einem gewissen Alter zumindest.
In den letzten zwei Jahrzenten ist die Spanne der Möglichkeiten unendlich größer geworden, auch dank Technik und Tools wie Photoshop. Welten erschaffen in Minuten, egal wie verrückt und surreal. Und nein, ich rede jetzt nicht vom bekannten Model-Pizza-Retouching Video, sondern von etwas mehr Kunst und Qualität.
Zum Beispiel Photoshop Speed Art von Alex Koshelkov, der seine meist recht extremen Photoshop Szenerien größtenteils aus echten Fototeilen zusammensetzt und somit einen gruselig realen Touch mit reinbringt: Weiterlesen
In meinem Blog kann man es an vielen Posts erkennen: Ich bin eigentlich Fan vom Webhoster All-Inklusive und dort seit über einem Jahrzehnt sehr zufrieden. Man muss aber dazusagen, dass sich an den Features, dem Design, dem Backend und auch allgemein wenig verändert hat – All-Inklusive fährt wohl das „never change a running system“ Prinzip. In der heutigen Zeit, in der Konkurrenz in Massen aus dem Boden sprießt und binnen kürzester Zeit stark aufblühen kann, ein riskantes Unterfangen. Vor All-Inklusive hatte ich auch mal ein 1und1 Webspace, damals (so um 2009 rum) noch für ganz statische HTML Seiten, fancy erstellt mit Microsoft Frontpage … das waren Zeiten 😀 Das 1und1 Webhosting war damals schon recht funktional und modern vom Design her:
Damals waren Stabilität und Support allerdings mein Grund zu wechseln. Ich wollte mal schauen, was 1und1 in der Zeit so gemacht hat, wie sich das Webhosting dort entwickelt hat und wie es meinen aktuellen Needs entsprechen würde.
Linus Sebastian ist ein – und er freut sich bestimmt über dieses Lob – Vorzeige-Nerd der Extraklasse! In mehreren Youtube Kanälen vermittelt er technische Themen unterschiedlicher Art.
In Techquickie werden kurze IT-Erklärbär-Videos über Grundlagen-Wissen/-Begriffe oder Vergleiche von Technologien und Technik gepostet:
Mit Linus Tech Tips deckt er mit seiner Crew der Linus Media Group eine große Bandbreite verschiedenster technischer Themen ab, da findet jeder Nerd was zu Gucken:
Nachdem ich Ende 2016 noch das Deployment von Adobe Reader DC mit der alten AIP-Methode beschrieben hatte, gibt es jetzt ein Update, eine neue Deployment-Methode, die super schnell und einfach ist und viel weniger Schritte benötigt. Statt wie bisher das gewünschte Adobe Update direkt in die primäre Installation zu slipstreamen (einzubinden), wird der Patch jetzt per Befehl an die msiexec Installation übergeben und mitinstalliert. Damit entfällt die komplette AIP-Erstellung, was Zeit und CMD-Getippe spart.
Download & Vorbereitung
Ihr benötigt natürlich immernoch die aktuellste Reader DC Version als .exe Download von der Adobe Download Seite. Die .exe Datei dann einfach in einen Ordner entpacken und ihr erhaltet die typischen MSI-Deployment Daten.
Anpassung
Wenn ihr zusätzlich die Sprache der Verteilung festlegen wollt, öffnet die setup.ini und ergänzt dort einige Zeilen:
Ändert hier und in der setup.msi den Namen der .mst in eure .mst Datei und passt auch wieder die Pfade am Anfang des Deployment-Skripts an. Für das Cleanup braucht ihr auch ein paar zusätzliche Cleanup-Tools von Adobe, die ihr ggf. noch herunterladen und im Ordner ablegen müsst.
@echo on & Color 9f & setlocal
set wd=\\server\Deployment\Software\Reader
set log=%wd%\reader-log.txt
set tools=\\server\Deployment\Sonstiges\tools
set readerEL=999
set retry=0
set forcecleanup=yes
:: set deactivateToolsSidebar=yes
set exepath=none
set instversion=0.0
REM:: ******************
set version=18.009
REM:: ******************
REM:: Clientfilter: nur die Computer aus der allowedPCs.txt dürfen installieren
::for /f %%f in (%wd%\allowedPCs.txt) do if "%computername%"=="%%f" goto start
::goto end
REM:: Clientfilter: die Computer aus der deniedPCs.txt dürfen nicht installieren
for /f %%f in (%wd%\deniedPCs.txt) do if "%computername%"=="%%f" goto end
:start
if exist "c:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe" set exepath="c:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe"
if exist "c:\Program Files\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe" set exepath="c:\Program Files\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe"
if %exepath%==none goto install
goto checkversion
:checkversion
for /f "tokens=1-3" %%i in ('%tools%\sigcheck %exepath%') do ( if "%%i %%j"=="File version:" set instversion=%%k )
%tools%\VersionCompare.exe %instversion% %version%
set versionEL=%errorlevel%
if "%versionEL%"=="-1" goto beforeinstall
if "%versionEL%"=="0" echo %date% %time:~0,8% - %computername% hat bereits %instversion% installiert >> %log%
if "%versionEL%"=="1" echo %date% %time:~0,8% - %computername% hat bereits %instversion% (neuer) installiert >> %log%
goto end
:beforeinstall
if "%forcecleanup%"=="yes" goto cleanup
goto install
:cleanup
echo %date% %time:~0,8% - %computername% deinstalliert alle Reader Versionen... >> %log%
REM:: uninstall all reader versions
taskkill /im acrord32.exe /t /f
taskkill /im acrord64.exe /t /f
ping localhost -n 3
::start /w %wd%\cleaner\reader-cleaner-9.exe /silent /product=1
::start /w %wd%\cleaner\reader-cleaner-10.exe /silent /product=1
start /w %wd%\cleaner\reader-cleaner-dc.exe /silent /product=1
echo %date% %time:~0,8% - %computername% hat alle Reader Versionen deinstalliert... >> %log%
goto install
:install
echo %date% %time:~0,8% - %computername% (%instversion%) startet die Installation... >> %log%
::start /w "" "%wd%\deploy\%version%\setup.exe"
msiexec /i "%wd%\deploy\%version%\AcroRead.msi" PATCH="%wd%\deploy\%version%\AcroRdrDCUpd1800920044.msp" TRANSFORMS="LEAP.mst" /qb
set readerEL=%errorlevel%
if %readerEL%==1618 goto retry REM:: msiexec process in use, installation already in progress
if %readerEL%==1602 goto retry REM:: user canceled installation
if %readerEL%==1603 goto retry REM:: fatal error, some use it for "already installed" (eg. java)
echo %date% %time:~0,8% - %computername% hat die Installation abgeschlossen, Errorlevel: %readerEL%... >> %log%
if %readerEL%==0 md %wd%\deploy\%version%\complete\%computername%
goto end
:retry
if %retry%==1 goto retryfailed
echo %date% %time:~0,8% - %computername% hat die Installation abgeschlossen, Errorlevel: %readerEL%, retry in 5min... >> %log%
set retry=1
ping localhost -n 300 > nul
goto beforeinstall
:retryfailed
echo %date% %time:~0,8% - %computername% hat die Installation abgeschlossen, Errorlevel: %readerEL%, retry failed, end >> %log%
goto end
:end
endlocal
exit
Zeitmanagement ist ein oft benutztes Buzzword. Wir haben generell immer zu wenig Zeit, immer in Hektik, immer etwas zu tun. Richtige Priorisierung und Einschätzung von Aufgaben ist hilfreich bei dessen Bearbeitung und damit ein wichtiger Baustein im Zeitmanagement.
Die Anweundung von Active Directory Gruppenrichtlinien lässt eine Filterung und Steuerung über verschiedene Techniken zu:
Verknüpfung mit OUs (die Voraussetzung ist gewissermaßen die erste Filterebene), Verknüpfungen aktivieren/deaktivieren
Sicherheitsfilterung mit Gruppen und Rechten
WMI-Filterung
Die ersten beiden sind gewissermaßen schon die Voraussetzung für das Erstellen und Anwenden einer Gruppenrichtlinie. Mit einer guten OU- und Gruppenstrukturen lassen sich bereits viele „Filter“ realisieren. Allerdings sind Rechte, Gruppen und OUs oftmals auch aufwändig in der Pflege.
Negativbeispiel: Mit einer „Windows10Clients“-Gruppe kann eine Filterung auf Sicherheitsebene vollzogen werden. Dazu muss die „Windows10Clients“-Gruppe jedoch händisch von den Admins gepflegt werden – neue Clients rein, alte Clients raus. Ebenso eine „SalesPCs“-Gruppe. In größeren Strukturen ist das nicht umsetzbar und geht auch einfacher.
Erweiterte Gruppenrichtlinienfilterung mit WMI
Hier kommen WMI-Filter ins Spiel. WMI, Windows Management Instrumentation, ist praktisch eine Schnittstelle zum Windows System, welches über Abfragen in einer Art SQL (WQL genannt) bedient wird und Informationen über das abgefragte System liefert. Solche Abfragen können ebenfalls für die Filterung von GPOs verwendet werden.
Beispiel: Wenn eine GPO nun also nur für Windows 10 Clients oder nur für Clients älter als Windows 10 übernommen werden soll, lassen sich die Clients super easy über WMI herausfiltern. Keine OU, keine Gruppen, nur 1 WMI-Objekt, im Endeffekt nur eine Zeile Code.
Mit Google oder Tools wie dem WMI Code Creator von Microsoft lassen sich somit schnell die benötigten Abfragen erstellen:
Codebeispiele
Die Möglichkeiten sind vielseitig, hier ein paar Beispiele:
/* 32bit / 64bit */
SELECT * FROM Win32_OperatingSystem WHERE OSArchitecture = '32-Bit'
SELECT * FROM Win32_OperatingSystem WHERE OSArchitecture = '64-Bit'
/* Computername beginnt mit "vpc-" */
SELECT * FROM Win32_ComputerSystem WHERE Name LIKE 'vpc-%'
/* Sprache des Betriebssystems ist Deutsch */
SELECT * FROM Win32_OperatingSystem WHERE CountryCode = '49'
/* Internetexplorer ist in Version 8 installiert */
SELECT * FROM CIM_DataFile WHERE Filename = 'iexplore' AND version > '8.0' AND (path = '\\programme\\Internet Explorer\\' OR path = '\\program files\\Internet Explorer\\' )
Zum Erkennen des Betriebssystems eignen sich einige Variablen; von BuildNumber über Caption bis zu Version. Letztere ist einfach zu benutzen, da Microsoft für jede Betriebssystemversion plus dazu passende Servervariante die gleiche Version benutzt, weitere Infos dazu auf dieser Microsoft Seite.
/* Wählt alle Clients mit Windows Vista/7/8/8.1 (Nicht-Windows-10) */
SELECT * FROM Win32_OperatingSystem where Version like '6.%' and ProductType='1'
/* Windows 10 Clients only */
SELECT * FROM Win32_OperatingSystem where Version like '10.%' and ProductType='1'
Vorsicht: BuildNumber
Etwas nerviger ist die Abfrage der Windows Version anhand der BuildNumber, da diese nicht als Zahl sondern als String im System steht und somit einfache BuildNumber >= X Abfragen nicht funktionieren. Microsoft thematisiert das hier und wählt den Regex-ähnlichen Ansatz über die Anzahl der Ziffern in Kombination mit der BuildNumber. Auch Marc von gruppenrichtlinien.de verwendet WHERE BuildNumber > '5000' – das alles lief bei mir nicht zuverlässig. BuildNumber scheint mir ein schlechtes Werkzeug zu sein und ich gehe daher über die Betriebssystem Caption, die sehr standardisiert ist:
/* Windows 10 Clients */
SELECT * FROM Win32_OperatingSystem WHERE Caption LIKE '%10%' AND BuildNumber LIKE '[123456789][0123456789][0123456789][0123456789][0123456789]'
/* Alle Clients vor Windows 10 */
SELECT * FROM Win32_OperatingSystem WHERE NOT Caption LIKE '%10%' AND BuildNumber LIKE '[123456789][0123456789][0123456789][0123456789]'
Das hat bei Win7 und Win10 funktioniert wie erwünscht.