blattertech informatik Blog http://www.blattertech.ch/blog.htm Informationen und Snipplets zu CMS Made Simple, Typo3, PHP, MySQL, IT Support und weiteres blattertech informatik Sat, 24 Jun 2017 10:36:28 +0200 de-DE hourly 1 http://www.blattertech.ch/blog.htm blattertech informatik Blog https://www.blattertech.ch/uploads/CGFeedMaker/blattertech.png Warum wird meine Seite gehackt? https://www.blattertech.ch/blog/135/Warum-wird-meine-Seite-gehackt.htm https://www.blattertech.ch/blog/135/Warum-wird-meine-Seite-gehackt.htm#comments Vor kurzem habe ich einen interessanten Artikel zum Thema "Warum wird meine Seite gehackt?" gelesen. Marc Nilius trägt hier einige Fakten sehr anschaulich zusammen:

www.wp-wartung24.de/warum-wird-meine-seite-gehackt/

]]>
Vor kurzem habe ich einen interessanten Artikel zum Thema "Warum wird meine Seite gehackt?" gelesen. Marc Nilius trägt hier einige Fakten sehr anschaulich zusammen:

www.wp-wartung24.de/warum-wird-meine-seite-gehackt/

]]>
Wed, 15 Feb 2017 17:40:00 +0100 https://www.blattertech.ch/blog/135/Warum-wird-meine-Seite-gehackt.htm 0
Win10 - Lockscreen deaktivieren https://www.blattertech.ch/blog/134/Win10-Lockscreen-deaktivieren.htm https://www.blattertech.ch/blog/134/Win10-Lockscreen-deaktivieren.htm#comments Seit dem Anniversary Update Win10 Redstone lässt sich der Lockscreen nicht mehr so einfach deaktivieren. SemperVideo hat eine Anleitung veröffentlicht, wie dies dennoch einfach zu machen ist.

In der Registry gibt es einen Schlüssel, mit dem der Lockscreen deaktiviert werden kann. Dummerweise wird dieser bei jeder Anmeldung und jeder Sperre wieder aktiviert. Der "Trick" das zu umgehen ist einfach. Wir erstellen eine Aufgabe, welche bei der Anmeldung und der Sperre diesen Schlüssel wieder schreibt.

Das Argument der Aufgabe lautet

add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Authentication\LogonUI\SessionData /t REG_DWORD /v AllowLockScreen /d 0 /f

 

Anleitung 

Die Computerverwaltung öffnen. Dies geht am einfachen mit dem Kurzbefehl Windows+X resp. mit einem Klick mit der rechten Maustaste auf das Windows-Icon der Taskleiste. Im Kontextmenü die Computerverwaltung auswählen.

Nun auf die Aufgabenplanung wecheln:

Lockscreen deaktivieren - Bild 1 

Mit der rechten Maustaste auf "Aufgabenplanungsbibliothek" klicken und "Aufgabe erstellen..." wählen.

Lockscreen deaktivieren - Bild 2

Der Aufgabe einen Namen, z.B. "Sperrbildschirm" geben und die Aufgabe "Mit höchsten Privilegien ausführen"

Lockscreen deaktivieren - Bild 3

Einen neuen Trigger erstellen und als Aufgabe "Bei Anmeldung" wählen.

Lockscreen deaktivieren - Bild 4

Einen weiteren Trigger als Aufgabe "bei Arbeitsstationssperre" erstellen.

Lockscreen deaktivieren - Bild 5

Unter "Aktion" eine neue Aktion erstellen. Die Vorgabe "Programm starten" belassen und als Programm "reg.exe" eintragen. Als Argument folgenden Befehl einfügen:

add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Authentication\LogonUI\SessionData /t REG_DWORD /v AllowLockScreen /d 0 /f

Danach die Aufgabe speichern. Nun funktioniert diese wie gewünscht und der Sperrbildschirm wird nicht mehr angezeigt. Es kann nun jedesmal direkt das Passwort eingegegen werden.

]]>
Mon, 13 Feb 2017 09:20:00 +0100 https://www.blattertech.ch/blog/134/Win10-Lockscreen-deaktivieren.htm 0
CMSMS: Passwort in der DB ändern https://www.blattertech.ch/blog/133/CMSMS-Passwort-in-der-DB-aendern.htm https://www.blattertech.ch/blog/133/CMSMS-Passwort-in-der-DB-aendern.htm#comments Es kann mal vorkommen, dass das Passwort des Admins verloren / vergessen geht. Mit dieser Anleitung lässt sich das Passwort direkt im phpMyAdmin neu setzen:

update cms_users set password = (select md5(CONCAT(IFNULL((SELECT sitepref_value FROM cms_siteprefs WHERE sitepref_name = 'sitemask'),''),'NEW_PASSWORD'))) where username = 'USER_NAME'

NEW_PASSWORD = das neue Passwort
USER_NAME = der Benutzer bei welchem das Passwort geändert werden soll.

Hier als Beispiel mit einem definierten Passwort und einem definierten Benutzernamen. --> bitte die jeweiligen Werte anpassen:

update cms_users set password = (select md5(CONCAT(IFNULL((SELECT sitepref_value FROM cms_siteprefs WHERE sitepref_name = 'sitemask'),''),'chang3m3'))) where username = 'cmsmsadmin'

Quelle

]]>
Es kann mal vorkommen, dass das Passwort des Admins verloren / vergessen geht. Mit dieser Anleitung lässt sich das Passwort direkt im phpMyAdmin neu setzen:

update cms_users set password = (select md5(CONCAT(IFNULL((SELECT sitepref_value FROM cms_siteprefs WHERE sitepref_name = 'sitemask'),''),'NEW_PASSWORD'))) where username = 'USER_NAME'

NEW_PASSWORD = das neue Passwort
USER_NAME = der Benutzer bei welchem das Passwort geändert werden soll.

Hier als Beispiel mit einem definierten Passwort und einem definierten Benutzernamen. --> bitte die jeweiligen Werte anpassen:

update cms_users set password = (select md5(CONCAT(IFNULL((SELECT sitepref_value FROM cms_siteprefs WHERE sitepref_name = 'sitemask'),''),'chang3m3'))) where username = 'cmsmsadmin'

Quelle

]]>
Fri, 03 Feb 2017 22:03:00 +0100 https://www.blattertech.ch/blog/133/CMSMS-Passwort-in-der-DB-aendern.htm 0
Spiegel-Mining - oder wie man Vorratsdatenspeicherung und BigData erklären kann https://www.blattertech.ch/blog/132/Spiegel-Mining-oder-wie-man-Vorratsdatenspeicherung-und-BigData-erklaeren-kann.htm https://www.blattertech.ch/blog/132/Spiegel-Mining-oder-wie-man-Vorratsdatenspeicherung-und-BigData-erklaeren-kann.htm#comments Am letzten 33C3, der Ende 2016 in Hamburg stattfand, gab es einen sehr interessanten Vortrag über Data-Mining. David Kriesel hatte zwei Jahre lang jeden Artikel von Spiegel Online gespeichert (echte Vorratsdatenspeicherung!), um die Daten dann am Ende zu analysieren und Beziehungen herauszuziehen.

Mit seinem Vortrag „SpiegelMining – Reverse Engineering von Spiegel-Online“ zeigte Kriesel nicht nur, welche Analysen man so generell vornehmen kann, sondern welche Schlüsse man ziehen kann. Eine der beeindruckendsten Analysen lies darauf schliessen, dass es persönliche Beziehungen zwischen einzelnen Redakteuren gibt, waren diese doch immer zu gleichen Zeiten in Urlaub. Den Urlaub schloss Kriesel aus dem Umstand von Veröffentlichungslücken. Ein spannender Schluss, den er zog und der jeden zum Nachdenken bringen soll, der sich beruhigen lässt, weil bei der Vorratsdatenspeicherung schliesslich „nur“ Metadaten gespeichert werde würden.

Ingo Dachwitz fasst bei netzpolitik.org die wichtigsten Punkte des Vortrags zusammen. David Kriesel hat auf seinem Blog auch mehrere Artikel zu seinem Vortrag veröffentlicht. Wenn ihr kaum Zeit für die Vorträge des 33C3 einplanen könnt, solltet ihr diesen einen dennoch schauen.

]]>
Sat, 28 Jan 2017 21:07:00 +0100 https://www.blattertech.ch/blog/132/Spiegel-Mining-oder-wie-man-Vorratsdatenspeicherung-und-BigData-erklaeren-kann.htm 0
Smarty: Systempfad https://www.blattertech.ch/blog/131/Smarty-Systempfad.htm https://www.blattertech.ch/blog/131/Smarty-Systempfad.htm#comments Für diverse Operationen mit Dateien benötigt es den Systempfad und nicht die URL. Wenn aber nur die URL zur Verfügung steht, muss dies zuvor in den Systempfad umgewandelt werden.

Dies lässt sich mit Smarty3-Bordmitteln schnell und effizient erledigen, und bedarf keines eigenen Plugins. Die URL sei dabei in der Variable $iurl enthalten (z.Bsp. https://www.domain.net/uploads/images/logo1.gif)

{$ipath = "{$smarty.server.DOCUMENT_ROOT}{$iurl|parse_url:$smarty.const.PHP_URL_PATH}"}

Ausgabe der Variable mit {$ipath}

/users/w1234567/www/uploads/images/logo1.gif

Quelle forum.cmsmadesimple.de

]]>
Für diverse Operationen mit Dateien benötigt es den Systempfad und nicht die URL. Wenn aber nur die URL zur Verfügung steht, muss dies zuvor in den Systempfad umgewandelt werden.

Dies lässt sich mit Smarty3-Bordmitteln schnell und effizient erledigen, und bedarf keines eigenen Plugins. Die URL sei dabei in der Variable $iurl enthalten (z.Bsp. https://www.domain.net/uploads/images/logo1.gif)

{$ipath = "{$smarty.server.DOCUMENT_ROOT}{$iurl|parse_url:$smarty.const.PHP_URL_PATH}"}

Ausgabe der Variable mit {$ipath}

/users/w1234567/www/uploads/images/logo1.gif

Quelle forum.cmsmadesimple.de

]]>
Mon, 23 Jan 2017 21:03:00 +0100 https://www.blattertech.ch/blog/131/Smarty-Systempfad.htm 0
Smarty: Exif-Daten von Bildern auslesen und anzeigen https://www.blattertech.ch/blog/130/Smarty-Exif-Daten-von-Bildern-auslesen-und-anzeigen.htm https://www.blattertech.ch/blog/130/Smarty-Exif-Daten-von-Bildern-auslesen-und-anzeigen.htm#comments Will man zu einer Gallery Detaildaten zu den Bilder wie Auflösung, Brennweite und Belichtungsdauer bis hin zu den GPS-Koordinaten uvm. anzeigen, so kann dies mit der PHP Funktion exif_read_data() umgesetzt werden. Diese Funktion liest sämtliche vorhandenen Exif-Daten eines Bildes aus und liefert sie in einem Array zurück. Die Exif-Daten sind die Meta-Daten der Bilder.

In CMS Made Simple wird dies wie folgt eingebaut

{$exif = exif_read_data({$ipath}, 'IFD0')}

Hinter $ipath verbirgt sich der Systempfad des Bildes, NICHT die URL. Wie eine URL in den Systempfad konvertiert werden kann, ist hier beschrieben: https://www.cmsmadesimple.de/forum/view … hp?id=4963

Vor dem praktischen Einsatz solltet ihr allerdings eure Bilder prüfen, welche EXIF-Daten vorhanden sind. Diese sind zwar grundsätzlich standardisiert, aber da hat jeder Kamera-Hersteller so seine eigenen Vorstellungen, was geschrieben wird.

Funktioniert in CMSMS so (nach vorstehendem Befehl einfügen)

<pre>{$exif|print_r}</pre>

Der Output sieht in menem Fall so aus:

Array
(
    [FileName] => _DSC7200.JPG
    [FileDateTime] => 1466331900
    [FileSize] => 9866716
    [FileType] => 2
    [MimeType] => image/jpeg
    [SectionsFound] => ANY_TAG, IFD0, THUMBNAIL, EXIF, GPS, INTEROP
    [COMPUTED] => Array
        (
            [html] => width="4288" height="2848"
            [Height] => 2848
            [Width] => 4288
            [IsColor] => 1
            [ByteOrderMotorola] => 1
            [ApertureFNumber] => f/11.0
            [UserComment] => Copyright by Lukas Blatter
            [UserCommentEncoding] => ASCII
            [Copyright] => Lukas BIatter                                         
            [Thumbnail.FileType] => 2
            [Thumbnail.MimeType] => image/jpeg
        )

    [Make] => NIKON CORPORATION
    [Model] => NIKON D300
    [Orientation] => 1
    [XResolution] => 300/1
    [YResolution] => 300/1
    [ResolutionUnit] => 2
    [Software] => Ver.1.10 
    [DateTime] => 2016:06:19 11:24:58
    [Artist] => Lukas Blatter                       
    [WhitePoint] => Array
        (
            [0] => 313/1000
            [1] => 329/1000
        )

    [PrimaryChromaticities] => Array
        (
            [0] => 64/100
            [1] => 33/100
            [2] => 21/100
            [3] => 71/100
            [4] => 15/100
            [5] => 6/100
        )

    [YCbCrCoefficients] => Array
        (
            [0] => 299/1000
            [1] => 587/1000
            [2] => 114/1000
        )

    [YCbCrPositioning] => 2
    [Copyright] => Lukas BIatter                                         
    [Exif_IFD_Pointer] => 472
    [GPS_IFD_Pointer] => 33888
    [THUMBNAIL] => Array
        (
            [Compression] => 6
            [XResolution] => 300/1
            [YResolution] => 300/1
            [ResolutionUnit] => 2
            [JPEGInterchangeFormat] => 34016
            [JPEGInterchangeFormatLength] => 8742
            [YCbCrPositioning] => 2
        )

    [ExposureTime] => 10/5000
    [FNumber] => 110/10
    [ExposureProgram] => 2
    [ISOSpeedRatings] => 1000
    [ExifVersion] => 0221
    [DateTimeOriginal] => 2016:06:19 11:24:58
    [DateTimeDigitized] => 2016:06:19 11:24:58
    [CompressedBitsPerPixel] => 4/1
    [ExposureBiasValue] => 0/6
    [MaxApertureValue] => 36/10
    [MeteringMode] => 5
    [LightSource] => 0
    [Flash] => 0
    [FocalLength] => 180/10
    [MakerNote] => Nikon
    [SubSecTime] => 08
    [SubSecTimeOriginal] => 08
    [SubSecTimeDigitized] => 08
    [FlashPixVersion] => 0100
    [ColorSpace] => 65535
    [ExifImageWidth] => 4288
    [ExifImageLength] => 2848
    [InteroperabilityOffset] => 33858
    [SensingMethod] => 2
    [CustomRendered] => 0
    [ExposureMode] => 0
    [WhiteBalance] => 0
    [DigitalZoomRatio] => 1/1
    [FocalLengthIn35mmFilm] => 27
    [SceneCaptureType] => 0
    [GainControl] => 2
    [Contrast] => 0
    [Saturation] => 0
    [Sharpness] => 0
    [SubjectDistanceRange] => 0
    [UndefinedTag:0xA500] => 22/10
    [InterOperabilityIndex] => R03
    [InterOperabilityVersion] => 0100
) 

 

Praktisch an dieser Ausgabe, dass man bereits hier erkennen kann, wie man die Elemente des generierten $exif Arrays zur Anzeige bringt. So findet sich z.Bsp. für das Kamera-Modell dieser Eintrag

[Model] => Nikon D300

Angezeigt werden kann dies mit

{$exif.Model}

Manche Werte wie zum Beispiel der Zeitstempel oder die Dateigröße liegen aber als unformatierte Rohdaten vor, weshalb sie für die Anzeige noch etwas überarbeitet werden müssen.

[FileDateTime] => 1419676580
    [FileSize] => 237278

Der Zeitstempel ist ein Unix Zeitstempel und kann so über den in CMSMS mitgelieferten Modifikator cms_date_format formatiert werden.

{$exif.FileDateTime|cms_date_format:'%d. %B %Y'}

Um die Bytezahl der Dateigrösse in ein lesbares Format zu bringen, kann folgender Modifier (modifier.formatsize.php) genutzt werden

https://www.cmsmadesimple.de/forum/view … hp?id=4770

{$exif.FileSize|formatsize}

Zusammengefasst in einem erweiterungsfähigen Basis-Script sieht das dann so aus

{$ipath = "{$smarty.server.DOCUMENT_ROOT}{$iurl|parse_url:$smarty.const.PHP_URL_PATH}"}
{$exif = exif_read_data({$ipath}, 'IFD0')}
Erstellt: {$exif.FileDateTime|cms_date_format:'%d. %B %Y'}
Auflösung: {$exif.COMPUTED.Width} x {$exif.COMPUTED.Height}
Dateigröße: {$exif.FileSize|formatsize}
Kamera: {$exif.Make} {$exif.Model}

Ausgegeben wird folgendes

Erstellt: 19. Juni 2016
Auflösung: 4288 x 2848 Pixel
Dateigröße: 9.6MB
Kamera: Nikon D300

Ergänzen könnte man das Script um eine Prüfung, ob die EXIF Erweiterung aktuell auf eurem Host bzw. Server geladen ist. Dies lässt sich über eine Prüfung der Existenz der genutzten Funktion erledigen

{if function_exists('exif_read_data')}
...
{/if}

Zudem sollte man bei kritischen EXIF-Daten (also Daten, die nicht in jedem Bild vorhanden sind), vorher dessen Existenz prüfen

{if $exif.Make && $exif.Model}
  <p>Kamera: {$exif.Make} {$exif.Model}</p>
{/if}

Das komplette Script sähe in diesem Fall so aus

{if function_exists('exif_read_data')}
  {$ipath = "{$smarty.server.DOCUMENT_ROOT}{$iurl|parse_url:$smarty.const.PHP_URL_PATH}"}
  {$exif = exif_read_data({$ipath}, 'IFD0')}
  <p>Erstellt: {$exif.FileDateTime|cms_date_format:'%d. %B %Y'}</p>
  <p>Auflösung: {$exif.COMPUTED.Width} x {$exif.COMPUTED.Height}</p>
  <p>Dateigröße: {$exif.FileSize|formatsize}</p>
  {if $exif.Make && $exif.Model}
    <p>Kamera: {$exif.Make} {$exif.Model}</p>
  {/if}
{/if}


Falls das Script an mehreren Stellen eingesetzt werden soll, bietet sich natürlich auch der Einsatz dieses Tricks an

https://www.cmsmadesimple.de/forum/viewtopic.php?id=572

So muss der Block nicht jedes Mal neu eingefügt werden. Anpassungen können so auch an zentraler Stelle vorgenommen werden.

1. Falls nicht vorhanden, Verzeichnis /tmp/templates anlegen
2. Snippet in einer Datei als exif.tpl speichern
3. exif.tpl nach /tmp/templates hochladen
4. Aufruf an den gewünschten Stellen mittels

{include file='exif.tpl'}

Quelle des Artikel forum.cmsmadesimple.de

]]>
Thu, 19 Jan 2017 20:30:00 +0100 https://www.blattertech.ch/blog/130/Smarty-Exif-Daten-von-Bildern-auslesen-und-anzeigen.htm 0
target=_blank - eine unterschätzte Sicherheitslücke bei sozialen Medien https://www.blattertech.ch/blog/128/target-_blank-eine-unterschaetzte-Sicherheitsluecke-bei-sozialen-Medien.htm https://www.blattertech.ch/blog/128/target-_blank-eine-unterschaetzte-Sicherheitsluecke-bei-sozialen-Medien.htm#comments T3N hat einen interessanten Artikel zu target=_blank veröffentlicht.
Wird ein Link mit target=_blank geöffnet, öffnet sich ein neues Browserfenster. Durch den dabei ausgeführten Befehl window.opener erhält die sich neu öffenende Seite Zugriff auf das bisherige Browserfenster. So ist es möglich via Javascript möglich den Inhalt der Ursprungsseite zu verändern. Gefährdet sind hier vor allem soziale Medien wie Facebook.

Klickt man z.B. bei Facebook auf einen Link, so kann die Zielseite die noch offene Facebookseite manipulieren, so dass man z.B. das Passwort eingeben muss, welches direkt bei den bösen Buben landet.

Als Webseitenbetreiber mit Kundenlogin welcher target=_blank verwendet, kann man seine Benutzer wie folgt schützen:

<a href="http://www.seite.com" target="_blank" rel="noopener noreferrer">Neue Seite</a>

Mit dem rel="noopener noreferrer" setzt man den window.opener auf Null. Somit erhält die neue Seite keinen Zugriff mehr auf die bisherige Seite.

Ob man als User von diesem Problem betroffen ist, kann man auf dieser Seite testen:
https://mathiasbynens.github.io/rel-noopener/

Beim Cross-Origin Beispiel warnt mich Firefox, dass die Ursprungsseite Seite plötzlich umleiten will. Dazu gibt es einerseits eine Einstellung: "Erweitert" › "Allgemein" die Option "Warnen, wenn Webseiten versuchen umzuleiten oder neuzuladen"
Außerdem gibt es noch das AddOn RequestPolicy. RequestPolicy warnt unabhängig von dieser Einstellung.

]]>
Fri, 02 Sep 2016 10:50:00 +0200 https://www.blattertech.ch/blog/128/target-_blank-eine-unterschaetzte-Sicherheitsluecke-bei-sozialen-Medien.htm 0
Windows Version ermitteln https://www.blattertech.ch/blog/127/Windows-Version-ermitteln.htm https://www.blattertech.ch/blog/127/Windows-Version-ermitteln.htm#comments Die schnellste Möglichkeit die auf dem PC installierte Windows Version zu ermitteln ist folgende:

Windows+R (Ausführen), Befehl "winver" eingeben:

Windows Version ermitteln

Windows Version ermitteln

]]>
Die schnellste Möglichkeit die auf dem PC installierte Windows Version zu ermitteln ist folgende:

Windows+R (Ausführen), Befehl "winver" eingeben:

Windows Version ermitteln

Windows Version ermitteln

]]>
Mon, 22 Aug 2016 06:05:00 +0200 https://www.blattertech.ch/blog/127/Windows-Version-ermitteln.htm 0
Einfacher Slider mit jQuery https://www.blattertech.ch/blog/126/Einfacher-Slider-mit-jQuery.htm https://www.blattertech.ch/blog/126/Einfacher-Slider-mit-jQuery.htm#comments Auf Stack Overflow habe ich vor kurzem einen einfachen Slider entdeckt. Der Slider nutzt jQuery ohne weitere Plugins.

<html>
<head>
<style>
html,
body {
  margin: 0;
  padding: 0;
  width: 100%;
  height: 100%;
  font-family: sans;
}
.track {
  position: relative;
  height: 400px;
  width: 100%;
}
.slide {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background-position: center center;
  -webkit-background-size: cover;
  -moz-background-size: cover;
  -o-background-size: cover;
  background-size: cover;
}
.ipsum {
  display: inline-block;
  padding: 10px;
  background-color: rgba(255, 255, 255, .75);
}
</style>

</html>
<body>
<div class="jCaroFade track">
  <!-- Slides -->
  <div class="slide" style="background-image:url('https://c1.staticflickr.com/1/550/20180902929_88c507f552_h.jpg');">
    <p class="ipsum">SLIDE ONE</p>
  </div>
  <div class="slide" style="background-image:url('https://c1.staticflickr.com/1/277/19726574813_cf2aa22221_b.jpg');">
    <p class="ipsum">SLIDE TWO</p>
  </div>
  <div class="slide" style="background-image:url('https://c1.staticflickr.com/1/488/20178281609_c1e34be0b2_b.jpg');">
    <p class="ipsum">SLIDE THREE</p>
  </div>
  <div class="slide" style="background-image:url('https://c1.staticflickr.com/1/414/19744665244_c099ce816c_h.jpg');">
    <p class="ipsum">SLIDE FOUR</p>
  </div>
</div>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script>$('.jCaroFade').each(createFader);

function createFader(i, elem) {
  var track = $(elem);
  var firstSlide = track.find('.slide').eq(0);
  var loop = 0;

  firstSlide.nextAll().hide();
  setInterval(function() {
    loop++;
    firstSlide = firstSlide.fadeOut(500, function() {
        $(this).appendTo(track);
      })
      .next()
      .fadeIn(500);
  }, 3000);

}
</script>
</body>
</html>


Eine Demo des Sliders kann auf jsFiddle angeschaut werden.

]]>
Mon, 15 Aug 2016 20:47:00 +0200 https://www.blattertech.ch/blog/126/Einfacher-Slider-mit-jQuery.htm 2
HTML5Shiv - neue URL https://www.blattertech.ch/blog/125/HTML5Shiv-neue-URL.htm https://www.blattertech.ch/blog/125/HTML5Shiv-neue-URL.htm#comments Diverse Templates verwenden um die Kompatibilität von HTML5 mit IE9 oder älter zu ermöglichen, die JavaScript Bibliothek HTML5Shiv. Diese wurde zu Beginn auf GoogleCode gehostet.

<!--[if IE]><script src="https://html5shiv.googlecode.com/svn/trunk/html5.js"></script><![endif]-->

Das Projekt wird mittlerweile auf Github gehostet. Um HTML5Shiv wieder zum laufen zu bringen, muss die URL angepasst werden. Eine Möglichkeit dazu ist die Verwendung des CDN von Cloudflare. Auf CDNJS.com findet man dazu den Link.

Somit ist der Code neu:

<!--[if IE]><script src="https://cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv.js"></script><![endif]-->

Ein weiterer Vorteil ist die Einbindung via SSL. Mittlerweile werden viele Seiten mit SSL betrieben was die Einbindung von externen Scripten per SSL erfordert.

]]>
Diverse Templates verwenden um die Kompatibilität von HTML5 mit IE9 oder älter zu ermöglichen, die JavaScript Bibliothek HTML5Shiv. Diese wurde zu Beginn auf GoogleCode gehostet.

<!--[if IE]><script src="https://html5shiv.googlecode.com/svn/trunk/html5.js"></script><![endif]-->

Das Projekt wird mittlerweile auf Github gehostet. Um HTML5Shiv wieder zum laufen zu bringen, muss die URL angepasst werden. Eine Möglichkeit dazu ist die Verwendung des CDN von Cloudflare. Auf CDNJS.com findet man dazu den Link.

Somit ist der Code neu:

<!--[if IE]><script src="https://cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv.js"></script><![endif]-->

Ein weiterer Vorteil ist die Einbindung via SSL. Mittlerweile werden viele Seiten mit SSL betrieben was die Einbindung von externen Scripten per SSL erfordert.

]]>
Sun, 03 Jul 2016 17:38:00 +0200 https://www.blattertech.ch/blog/125/HTML5Shiv-neue-URL.htm 0
TYPO3 7.6 - Inkonsistenter Inhalt in Sprache "Français" gefunden https://www.blattertech.ch/blog/124/TYPO3-7-6-Inkonsistenter-Inhalt-in-Sprache-Francais-gefunden.htm https://www.blattertech.ch/blog/124/TYPO3-7-6-Inkonsistenter-Inhalt-in-Sprache-Francais-gefunden.htm#comments Vor kurzem habe ich mit einer TYPO3 Seite welche von 6.0 auf 7.6 aktualilsiert wurde, das Problem, dass bei verschiedenen Seiten die Warnung "Inkonsistenter Inhalt in Sprache "Français" gefunden" angezeigt. Auf diesen Seiten war das sortieren oder neu einfügen von französischen Inhalten nicht mehr möglich. Bisher wurden auf dieser Seite teils Seiten identisch übersetzt, teils mit differierenden Inhalten in den beiden Sprachen Deutsch und Französisch gefüllt.

Folgende Zeile im pageTS deaktiviert das Handling der inkonsistenten Sprachen deaktivieren:

mod.web_layout.allowInconsistentLanguageHandling = 1

 

]]>
Vor kurzem habe ich mit einer TYPO3 Seite welche von 6.0 auf 7.6 aktualilsiert wurde, das Problem, dass bei verschiedenen Seiten die Warnung "Inkonsistenter Inhalt in Sprache "Français" gefunden" angezeigt. Auf diesen Seiten war das sortieren oder neu einfügen von französischen Inhalten nicht mehr möglich. Bisher wurden auf dieser Seite teils Seiten identisch übersetzt, teils mit differierenden Inhalten in den beiden Sprachen Deutsch und Französisch gefüllt.

Folgende Zeile im pageTS deaktiviert das Handling der inkonsistenten Sprachen deaktivieren:

mod.web_layout.allowInconsistentLanguageHandling = 1

 

]]>
Wed, 01 Jun 2016 21:12:00 +0200 https://www.blattertech.ch/blog/124/TYPO3-7-6-Inkonsistenter-Inhalt-in-Sprache-Francais-gefunden.htm 3
KeeWeb - Keepass Selfhosted als Webseite https://www.blattertech.ch/blog/123/KeeWeb-Keepass-Selfhosted-als-Webseite.htm https://www.blattertech.ch/blog/123/KeeWeb-Keepass-Selfhosted-als-Webseite.htm#comments Gestern habe ich bei Cashy einen Beitrag über KeeWeb gelesen. KeeWeb ist eine WebApp welche lokal eine Keepass Datei öffnen und bearbeiten kann. Es ist auch möglich auf eine Keepass-Datei zuzugreifen, welche in der Dropbox abgelegt ist.

Die Installation bei cyon ist denkbar einfach.

  1. neue Subdomain, z.B. keeweb.domain.ch erstellen
  2. die Subdomain per SSL absichern. Bei einer unverschlüsselten Verbindung warnt KeeWeb
  3. Verzeichnis Passwort schützen
  4. von der KeeWeb Seite die notwendigen 2 Dateien herunterladen
  5. Die beiden Dateien index.html und manifest.appcache auf den Webserver laden

Wenn nun auch Dropbox eingebunden werden soll, muss im Developer Bereich von Dropbox eine App erstellt werden. Als Return-Path muss die URL von keeweb.domain.ch angegeben werden.

  1. App-Key kopieren
  2. sich per SSH mit dem Server verbinden (bei cyon in jedem Hostingpaket inklusive) und in das Verzeichnis von KeeWeb wechseln
  3. den Befehl "sed -i.bak s/qp7ctun6qt5n9d6/your_app_key/g index.html" ausführen (ohne Anführungszeichen)

Danach kann auch von Dropbox eine Datei geöffnet werden.

Spannender Ansatz. Ob dies nun perfekt sicher ist, darüber lässt sich streiten. Die Daten werden lokal im Browsercache abgelegt (abgesehen von Dropbox). Es ist auf jedenfall eine gute Möglichkeit unterwegs oder auch von einem eingeschränkten Firmen-PC aus auf einen Keepass-Conteiner zugreifen zu können.

]]>
Mon, 21 Mar 2016 19:57:00 +0100 https://www.blattertech.ch/blog/123/KeeWeb-Keepass-Selfhosted-als-Webseite.htm 2
CMSMS: Smarty Code aus einem String entfernen https://www.blattertech.ch/blog/122/CMSMS-Smarty-Code-aus-einem-String-entfernen.htm https://www.blattertech.ch/blog/122/CMSMS-Smarty-Code-aus-einem-String-entfernen.htm#comments Vor kurzem musste ich aus einem Text den allenfalls enthaltenen Smartycode entfernen. Dies geht mit folgendem Regex Snippet:

{$entry->content|regex_replace:"/\{[^\]]*\}/":''|tbTruncateBetter:500:' ...'}

In diesem Beispiel kürze ich mit tbTruncateBetter (ein Plugin des ToolBox Moduls) einen Text auf 500 Zeichen. Nun kann in diesem Text ein Smarty-Tag wie z.B. {Gallery dir ="/irgend/eine/gallery"}  vorkommen. Diese möchte ich in der gekürzten Übersicht natürlich nicht laden. Deshalb habe ich vor den Aufruf von tbTruncateBetter das Regex eingefügt, welches den Smarty-Tag entfernt.

Nochmals kurz:

{$variable|regex_replace:"/\{[^\]]*\}/":''}

 

]]>
Vor kurzem musste ich aus einem Text den allenfalls enthaltenen Smartycode entfernen. Dies geht mit folgendem Regex Snippet:

{$entry->content|regex_replace:"/\{[^\]]*\}/":''|tbTruncateBetter:500:' ...'}

In diesem Beispiel kürze ich mit tbTruncateBetter (ein Plugin des ToolBox Moduls) einen Text auf 500 Zeichen. Nun kann in diesem Text ein Smarty-Tag wie z.B. {Gallery dir ="/irgend/eine/gallery"}  vorkommen. Diese möchte ich in der gekürzten Übersicht natürlich nicht laden. Deshalb habe ich vor den Aufruf von tbTruncateBetter das Regex eingefügt, welches den Smarty-Tag entfernt.

Nochmals kurz:

{$variable|regex_replace:"/\{[^\]]*\}/":''}

 

]]>
Sun, 06 Oct 2013 22:10:00 +0200 https://www.blattertech.ch/blog/122/CMSMS-Smarty-Code-aus-einem-String-entfernen.htm 0
CMSMS: ToolBox 1.3.7 veröffentlicht https://www.blattertech.ch/blog/121/CMSMS-ToolBox-1-3-7-veroeffentlicht.htm https://www.blattertech.ch/blog/121/CMSMS-ToolBox-1-3-7-veroeffentlicht.htm#comments Eben habe ich die Version 1.3.7 des Moduls ToolBox veröffentlicht. Folgendes hat geändert:

  • oAuth Bug in der Twitterfeed Funktion:
    --> Achtung, die oAuth muss neu eingerichtet werden
  • die Funktion {tbConsoleLog} ergänzt, um Meldungen direkt in der Browserkonsole auszugeben
  • tbimage Bug behoben
  • Kleinere Bugfixes

Die ToolBox kann hier heruntergeladen werden.

]]>
Eben habe ich die Version 1.3.7 des Moduls ToolBox veröffentlicht. Folgendes hat geändert:

  • oAuth Bug in der Twitterfeed Funktion:
    --> Achtung, die oAuth muss neu eingerichtet werden
  • die Funktion {tbConsoleLog} ergänzt, um Meldungen direkt in der Browserkonsole auszugeben
  • tbimage Bug behoben
  • Kleinere Bugfixes

Die ToolBox kann hier heruntergeladen werden.

]]>
Fri, 20 Sep 2013 06:49:00 +0200 https://www.blattertech.ch/blog/121/CMSMS-ToolBox-1-3-7-veroeffentlicht.htm 3
Philipp Maloney "Auf der Flucht" als Lego-Stop-Motion Film https://www.blattertech.ch/blog/120/Philipp-Maloney-Auf-der-Flucht-als-Lego-Stop-Motion-Film.htm https://www.blattertech.ch/blog/120/Philipp-Maloney-Auf-der-Flucht-als-Lego-Stop-Motion-Film.htm#comments Vor ein paar Tagen habe ich via Leumund.ch den Lego-Stop-Motion Film der Maloney-Folge "Auf der Flucht" gesehen. Laut dem Erschöpfer des Films, Joel Richard, hat er dafür über 1500 Stunden aufgewendet. Für eine Sekunde im Film hat er im Schnitt ca 1 Stunde aufgewendet. 

Philip Maloney - Auf der Flucht, Teil 1

Philip Maloney - Auf der Flucht, Teil 2

Philip Maloney - Auf der Flucht, Teil 3

Beitrag der Tageschau

Das Schweizer Fernsehen hat in der Tageschau zur Fertigstellung des letzten Teils die Arbeit von Joel Richard dokumentiert und vorgestellt:

Tagesschau Beitrag

]]>
Vor ein paar Tagen habe ich via Leumund.ch den Lego-Stop-Motion Film der Maloney-Folge "Auf der Flucht" gesehen. Laut dem Erschöpfer des Films, Joel Richard, hat er dafür über 1500 Stunden aufgewendet. Für eine Sekunde im Film hat er im Schnitt ca 1 Stunde aufgewendet. 

Philip Maloney - Auf der Flucht, Teil 1

Philip Maloney - Auf der Flucht, Teil 2

Philip Maloney - Auf der Flucht, Teil 3

Beitrag der Tageschau

Das Schweizer Fernsehen hat in der Tageschau zur Fertigstellung des letzten Teils die Arbeit von Joel Richard dokumentiert und vorgestellt:

Tagesschau Beitrag

]]>
Thu, 08 Aug 2013 10:10:00 +0200 https://www.blattertech.ch/blog/120/Philipp-Maloney-Auf-der-Flucht-als-Lego-Stop-Motion-Film.htm 0
btAdminer 1.6.0 veröffentlicht https://www.blattertech.ch/blog/119/btAdminer-1-6-0-veroeffentlicht.htm https://www.blattertech.ch/blog/119/btAdminer-1-6-0-veroeffentlicht.htm#comments Gerade eben habe ich die Version 1.6.0 von btAdminer im Forge veröffentlicht.

Changelog:[more]

  • Update auf Adminer 3.7.1
    Adminer 3.7.1 (released 2013-06-29):
    Increase click target for checkboxes
    Use shadow for highlighting default button
    Don't use LIMIT 1 if inline updating unique row
    Don't check previous checkbox on added column in create table (bug #3614245)
    Order table list by name
    Verify UTF-8 encoding of CSV import
    Notify user about expired master password for permanent login
    Highlight table being altered in navigation
    Send 404 for invalid database and schema
    Fix title and links on invalid table pages
    Display error on invalid alter table and view pages
    MySQL: Speed up updating rows without numeric or UTF-8 primary key
    Non-MySQL: Descending indexes
    Add Korean translation

Der btAdminer kann wie gewohnt hier heruntergeladen werden:
http://dev.cmsmadesimple.org/project/files/1023

]]>
Gerade eben habe ich die Version 1.6.0 von btAdminer im Forge veröffentlicht.

Changelog:

  • Update auf Adminer 3.7.1
    Adminer 3.7.1 (released 2013-06-29):
    Increase click target for checkboxes
    Use shadow for highlighting default button
    Don't use LIMIT 1 if inline updating unique row
    Don't check previous checkbox on added column in create table (bug #3614245)
    Order table list by name
    Verify UTF-8 encoding of CSV import
    Notify user about expired master password for permanent login
    Highlight table being altered in navigation
    Send 404 for invalid database and schema
    Fix title and links on invalid table pages
    Display error on invalid alter table and view pages
    MySQL: Speed up updating rows without numeric or UTF-8 primary key
    Non-MySQL: Descending indexes
    Add Korean translation

Der btAdminer kann wie gewohnt hier heruntergeladen werden:
http://dev.cmsmadesimple.org/project/files/1023

]]>
Sat, 03 Aug 2013 12:41:00 +0200 https://www.blattertech.ch/blog/119/btAdminer-1-6-0-veroeffentlicht.htm 0
Ich habe ja nichts zu verbergen https://www.blattertech.ch/blog/118/Ich-habe-ja-nichts-zu-verbergen.htm https://www.blattertech.ch/blog/118/Ich-habe-ja-nichts-zu-verbergen.htm#comments

Man hört ja oft wenn es um Überwachung geht: "Ich habe ja nichts zu verbergen". Ist dem wirklich so? Das obige Video zeigt auf, was Überwachung bedeutet und gibt jedem die Möglichkeit seine eigene Antwort darauf geben zu können.

Denn: Wer sagt denn was richtig und falsch ist? Wer fälschlicher Weise in die Mühlen der Überwachung gerät, kann noch lange sagen: "Ich habe nichts zu verbergen". Wenn dadurch eine Verhaftung erfolgt, eine Einreise verweigert wird, oder eine Stelle gekündet wird, so ist derjenige wohl der Erste der dagegen Protestieren wird.

Nachtrag: Im Spiegel ist ein interessanter Bericht über Michael Blume erschienen. Michale Blume wurde 2003 (!) vom Verfassungsschutzt verdächtigt ein Islamsympatisant zu sein. Nachwirklungen davon spürt er noch heute.

]]>
Mon, 29 Jul 2013 14:58:00 +0200 https://www.blattertech.ch/blog/118/Ich-habe-ja-nichts-zu-verbergen.htm 0
Linktipp 18 https://www.blattertech.ch/blog/111/Linktipp-18.htm https://www.blattertech.ch/blog/111/Linktipp-18.htm#comments Unter Linktipp veröffentliche ich in unregelmässigen Abständen einige interessante Links welche mir über den Weg gelaufen sind:

RedBeanPHP - Datenbankzugriff ohne SQL Statements
Stefan Wienströer hat ein ausführliches Tutorial zu RedBeanPHP veröffentlicht. RedBeanPHP legt automatisch eine Datenbankstruktur zu Objekten an oder erweitert diese.
Der Einsatz gestaltet sich sehr einfach. Mehr dazu in verlinkten Tutorial.

Windows Developer System – Der Webserver
Um Webseiten zu entwickeln gibt es verschiedene Möglichkeiten. Optimal setzt man dabei auf einen eigenen Webserver auf dem PC / Mac. Eine Möglichkeit dafür ist der ZendServer. Sascha Presnac stellt das System in seinem Blog vor:

Create modern CSS3 hover effects
Sehr gutes Tutorial welches zeigt, wie Hover Effekte in CSS3 aufgebaut sind und welche Auswirkungen die einzelnen Parameter haben.

Praktische jQuery Snippets
Auf catswhocode.com hat Jean-Baptiste Jung einige sehr praktische jQuery Snippets zusammengetragen:

  • Smooth Anchor Scrooling
  • Bildgrössen Anpassung
  • Inhalt beim Scrollen automatisch laden
  • Höhe eines Div Elements ermitteln
  • JSON Parsing
  • und einige weitere

Fontastic - Webapp zum Zusammenstellen von Icon-Fonts
Mit Fontastic lassen sich angepasste Icon-Fonts erstellen. Seit längerem haben Icon-Fonts anstelle von Grafischen Icons Konjuktur. Statt jedoch eine Icon-Font mit 300 Zeichen zu laden, lässt sich mit Fontastic eine Font zusammenstellen welche nur die 3-4 Zeichen die man benötigt beinhaltet.

PowerPoint 2007 - Vorschau während der Präsentation aktivieren
Wird eine Präsentation via Beamer an die Wand projeziert, so kann der sogenante Moderationsmodus genutzt werden. Damit können neben den Folienkommentaren auch eine mitlaufende Uhr und die nächsten bzw. vorangegangenen Folien angezeigt werden.
Aktiviert wird das ganze wie folgt: 2. Monitor / Beamer anschliessen. Danach in PowerPoint in die Registerkarte "Bildschirmpräsentation" gehen, dort "Bildschirmpräsentation einrichten". In den Einstellungen "mehrere Bildschirme" aktivieren und den Haken beim Präsentationsmodus setzen.

jQuery Unveil
Laut t3n das kleine Lazy-Load Plugin für jQuery. Für Responsives Webdesign lässt sich damit einfach das Laden von verschiedenen Bildauflösungen umsetzen

Regelmässig poste ich interessante Links auf Twitter: @lukasblatter

]]>
Wed, 17 Jul 2013 07:00:00 +0200 https://www.blattertech.ch/blog/111/Linktipp-18.htm 0
PHP - Array mit Key und Value in einen String umwandeln https://www.blattertech.ch/blog/117/PHP-Array-mit-Key-und-Value-in-einen-String-umwandeln.htm https://www.blattertech.ch/blog/117/PHP-Array-mit-Key-und-Value-in-einen-String-umwandeln.htm#comments Mit folgendem Snippet lässt sich ein Array mit Key und Value einfach in einen String umwandeln:

$input = array('item1' => 'value1', 'item2' => 'value2', 'item3' => 'value3');
$output = implode(', ', array_map(function ($v, $k) { return $k . ':' . $v; }, $input, array_keys($input)));

Das Resutlat ist nun:

item1:value1, item2:value2, item3:value3

 

 

]]>
Mit folgendem Snippet lässt sich ein Array mit Key und Value einfach in einen String umwandeln:

$input = array('item1' => 'value1', 'item2' => 'value2', 'item3' => 'value3');
$output = implode(', ', array_map(function ($v, $k) { return $k . ':' . $v; }, $input, array_keys($input)));

Das Resutlat ist nun:

item1:value1, item2:value2, item3:value3

 

 

]]>
Mon, 08 Jul 2013 21:31:00 +0200 https://www.blattertech.ch/blog/117/PHP-Array-mit-Key-und-Value-in-einen-String-umwandeln.htm 0
Papa Papillon https://www.blattertech.ch/blog/116/Papa-Papillon.htm https://www.blattertech.ch/blog/116/Papa-Papillon.htm#comments Radio SRF1 hat in der Sendung "Menschen und Horizonte" Marc de Roche, bekannt als Papa Papillon interviewt.


copyright Bild: SRF1

Absolut empfehlenswerte Sendung.

]]>
Radio SRF1 hat in der Sendung "Menschen und Horizonte" Marc de Roche, bekannt als Papa Papillon interviewt.


copyright Bild: SRF1

Absolut empfehlenswerte Sendung.

]]>
Tue, 21 May 2013 12:58:00 +0200 https://www.blattertech.ch/blog/116/Papa-Papillon.htm 0