Javascript Demo-Sourcecode anzeigen
Zu einer Javascript Klasse habe ich Beispiel-Dateien erstellt.
Den Javascript Schnipsel, der für die jeweilige Demo verwende, wollte ich aber nicht duplizieren und als HTML in der Sektion mit den Erläuterungen nochmal wiederholen. Copy & Paste Fehler … wenn man das Demo anpasst … Fehlerquellen gibt es einige. Und wenn jemand den Democode aus einem Beispiel kopiert, dann soll es ja auch funktionieren.
Abhilfe ist recht einfach, um nicht zu sagen banal: das Script-Tag des Demos bekommt eine ID:
<script id="source"> var oPwCheck = new ahpwcheck(); oPwCheck.watch('ePassword', 'outpwcheck'); </script>
Und man erstellt einen Ausgabecontainer mit einem PRE Tag.
<p>So wurde es gemacht:</p> <pre id="viewsource"></pre>
Bei den Erläuterungen greift man den Content mit document.getElementById(”source”).innerHTML ab und schreibt ihn in den PRE-Tag hinein.
<script> document.getElementById('viewsource').innerHTML=document.getElementById("source").innerHTML.replace(/</g, '<'); </script>
Das replace am Ende wandelt die öffnenden Tags “<” (resp. Kleiner-Zeichen für Vergleiche) in dessen HTML Entity um.
Pimped Apache Status Beta
Ich bin dabei, eine Version 2 meines Monitoring Tools Pimped Apache Status bereitzustellen.
Die bestehenden Analyse-Werkzeuge bleiben 1:1 erhalten. Wichtigste Neuheit ist das Admin-Backend: Hier kann man künftig seine Server und Servergruppen für loadbalancte Webseiten per Webbrowser konfigurieren. Bisher musste man dazu eine Config-Datei bearbeiten.
Die Konfigurationsdateien wurden dazu von PHP-Arrays in reine JSON Dateien überführt. Anm.: zur Umwandlung einer 1.x Konfiguration gibt es eine upgrade.php
Aber einmal in Bildern…
Screenshot 1:
- Das Default-Skin wird ein wenig farbiger: im Menü oben die Icons und die Tabs in der ersten Sub-Navigation
- In den Kacheln sind wurde eine Kreisgrafik hinzugefügt. Diese hilft beim Bewerten des aktuell angezeigten Wertes: visualisiert ist er im Vergleich zum Maximum der letzten n Werte. Genaueres sieht man dann beim Mouseover über eine Kachel…
- In der Subnavigation in rot: hier geht es zum Setup
Screenshot 2:
- Im ersten Tab ist die Konfiguration der Server. Man legt zunächst eine Gruppe an und kann in dieser beliebige Server hinzufügen.
- in weiteren Tabs kann man die bestehende Konfiguration einsehen: die Default-Einstellungen und die Custom-Settings.
Der Sourcecode der Beta ist in einem Branch auf Github verfügbar. Längerfristig wird der Sourcecode in Github verwaltet werden. Sourceforge wird dann nur noch als Lese-Instanz von Github am Leben erhalten.
Wenn jemand die Beta testen mag, so freue ich mich über euer Feedback.
weiterführende Links:
- Github: Pimped Apache Status (Anm.: Seit Veröffentlichung von Version 2 gibt es keinen Beta-Branch mehr)
Objekt mit boolean Attribute per $.ajax senden
Ich habe eine kleine PHP-Applikation, die liest Metadaten aus einem JSON-File.
Diese Daten schreibt PHP-Code in ein Html-Dokument als Javascript-Objekt, damit diese in der Seite verfügbar sind.
echo 'var aMetadata=' . json_encode($o->aMetadata, JSON_PRETTY_PRINT) .';';
Wenn ich im Formular die Daten bearbeite und mein aktualisiertes Javascript ans PHP zurücksende, dann in der Form:
var aMetadata={'title': 'Hello world' } $.ajax({ type: "POST", url: sSaveUrl, data: { function: "setMetadata", value: aMetadata, // <<<<< meine Metadaten } }).done(function () { // ... });
Auf Seite PHP wurde $_POST[”value”] der Methode setMetadata() übergeben:
public function setMetadata($aNewMetadata) { if(!is_array($aNewMetadata)){ echo "ERROR: not an array"; return false; } $this->aMetadata=$aNewMetadata; return $this->saveMetadata(); }
Das klappt soweit, bis … ja bis einmal ein boolean Wert übergeben werden soll. Es werden true/ false Werte als Strings in Form von “true”/ “false” vom $.ajax data-Wert gesendet, wenn man das Objekt direkt übergibt. Dann kann schonmal fies werden, wenn lauter korrupte Datensätze entstehen.
anclock auf Platz 1 der Wochendownloads
Weil ich ein paar PHP-Klassen auf phpclasses.org hinterlegt habe, habe ich nur mal mal vesuchsweise eine Javascript-Klasse in der Partnerseite jsclasses.org hinterlegt: meine Analog-Uhr.
Tja, und nun ist sie dort auf Platz 1. Unerwartet, aber trotzdem schön!
weiterführende Links:
Pretty print eines JS Objektes
Das hier fällt unter die Kategorie: ein Codesnippet als Merker im Blog hinterlegt.
Ich brauchte für eine Doku die Ausgabe eines Konfigurations-Objektes als auch den Dump einer Rückgabe als Objekt.
Um ein Javascript Objekt schön formatiert (pretty print) auszugeben, hilft dieser Codeschnipsel:
<script>document.write('<pre>'+JSON.stringify(myObject, null, '\t')+'</pre>');</script>
Der Trick besteht darin, in der Methode JSON.stringify als 3. Parameter einen Abstand-Halter zu definieren (hier ein Tab-Zeichen) und in ein pre-Tag zu schieben.
ahMaphelper (PHP-Klasse) - votet auf phpclasses.org
Ich habe da eine PHP-Klasse, die parst aus einer URL von Karten-Anbietern die Position. Und kann mit einer bekannten Position die URLs zu alternativen Anbietern generieren lassen, die zur selben Position zeigen. Das klappt derzeit mit Google Maps (mit div. Länder-TLDs), Yandex.ru und OpenStreetMap.
Man kann die Klasse also zum Extrahieren einer Position nutzen oder aber zum Konvertieren beim gewünschten Wechsel des Karten-Anbieters.
Die Klasse wurde nominiert für einen Innovation Award auf phpclasses.org.
Wer kann und mag, der vote doch bitte für mich!
Beispiel:
require_once 'ahmaphelper.class.php'; $oMaphelper = new ahmaphelper(); print_r($oMaphelper->getPos("https://www.google.ch/maps/@46.9465944,7.4439426,17z"));
… gibt ein zurück Array (und behält es auch intern):
Array ( [source] => https://www.google.ch/maps/@46.9465944,7.4439426,17z [provider] => google [lat] => 46.9465944 [lon] => 7.4439426 [zoom] => 17 )
… und nun zu den anderen Anbietern:
print_r($oMaphelper->getUrls());
zeigt dieses Array:
Array ( [google] => https://www.google.com/maps/@46.9465944,7.4439426,17z [osm] => https://www.openstreetmap.org/#map=17/46.9465944/7.4439426 [yandex] => https://yandex.ru/maps/?ll=7.4439426%2C46.9465944&z=17 )
weiterführende Links:
Chocolatey - veraltete Programm-Einträge löschen
Problem:
Ich habe mit Chocolatey Programme deinstalliert, z.B.
C:\Users\Axel>choco uninstall Quicktime
Aber dennoch verbleiben einige in der Liste der lokalen Anwendungen:
C:\Users\Axel>choco list -lo 7zip.commandline 16.01 7zip.install 16.01 AdobeAIR 20.0.0.233 autohotkey.portable 1.1.23.07 avirafreeantivirus 14.0.6.552 chocolatey 0.9.9.12 ChocolateyGUI 0.13.2 ConEmu 16.5.15.0 Far 3.0.4242 ffmpeg 3.0.1 flashplayeractivex 21.0.0.242 flashplayerplugin 14.0.0.179 javaruntime 8.0.73 jre8 8.0.91 netbeans-php 8.0 PDFXChangeViewer 2.5.317 Pencil 2.0.3 PowerShell 5.0.10586.20151218 Quicktime 7.7.5 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<< SwissFileKnife 1.6.9 sysinternals 2016.04.28 virtualbox 5.0.20.106931 VirtualBox.ExtensionPack 5.0.20.106931 23 packages installed.
Lösung
Man gehe in das Lib Verzeichnis von Chocolatey
C:\Users\Axel>cd "C:\ProgramData\chocolatey\lib" C:\Program\Data\chocolatey\lib>dir Datenträger in Laufwerk C: ist A Volumeseriennummer: 4C76-01F1 Verzeichnis von C:\ProgramData\chocolatey\lib 23.05.2016 21:11 <DIR> . 23.05.2016 21:11 <DIR> .. 21.05.2016 13:14 <DIR> 7zip.commandline 21.05.2016 14:30 <DIR> 7zip.install 31.03.2016 23:40 <DIR> AdobeAIR 21.05.2016 13:15 <DIR> autohotkey.portable 13.08.2014 20:33 <DIR> avirafreeantivirus.14.0.6.552 31.03.2016 23:48 <DIR> chocolatey 17.11.2014 00:21 <DIR> chocolatey.0.9.8.28 23.05.2016 21:08 <DIR> ChocolateyGUI 21.05.2016 13:15 <DIR> ConEmu 16.05.2015 10:32 <DIR> Far 21.05.2016 13:16 <DIR> ffmpeg 21.05.2016 13:17 <DIR> flashplayeractivex 23.05.2016 21:11 <DIR> flashplayerplugin 21.05.2016 13:20 <DIR> javaruntime 21.05.2016 14:38 <DIR> jre8 13.08.2014 21:08 <DIR> netbeans-php.8.0 21.05.2016 13:20 <DIR> PDFXChangeViewer 21.05.2016 14:34 <DIR> Pencil 23.05.2016 21:08 <DIR> PowerShell 21.05.2016 15:14 <DIR> Quicktime <<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 16.05.2015 11:06 <DIR> SwissFileKnife 21.05.2016 13:21 <DIR> sysinternals 21.05.2016 14:27 <DIR> virtualbox 21.05.2016 14:29 <DIR> VirtualBox.ExtensionPack 0 Datei(en), 0 Bytes 26 Verzeichnis(se), 337'768'534'016 Bytes frei
Hier habe ich das gleichnamige Verzeichnis gelöscht
C:\ProgramData\chocolatey\lib>del /S Quicktime Möchten Sie "C:\ProgramData\chocolatey\lib\Quicktime*" löschen (J/N)? J Datei wurde gelöscht - C:\ProgramData\chocolatey\lib\Quicktime\Quicktime.7.7.5.nupkg
Anm:
ohne Garantie … ggf. in ein anderes Verzeichnis Verschieben, statt zu löschen.
… aber dann ist Quicktime bei mir auch weg gewesen:
C:\ProgramData\chocolatey\lib>choco list -lo 7zip.commandline 16.01 7zip.install 16.01 AdobeAIR 20.0.0.233 autohotkey.portable 1.1.23.07 avirafreeantivirus 14.0.6.552 chocolatey 0.9.9.12 ChocolateyGUI 0.13.2 ConEmu 16.5.15.0 Far 3.0.4242 ffmpeg 3.0.1 flashplayeractivex 21.0.0.242 flashplayerplugin 14.0.0.179 javaruntime 8.0.73 jre8 8.0.91 netbeans-php 8.0 PDFXChangeViewer 2.5.317 Pencil 2.0.3 PowerShell 5.0.10586.20151218 SwissFileKnife 1.6.9 sysinternals 2016.04.28 virtualbox 5.0.20.106931 VirtualBox.ExtensionPack 5.0.20.106931 22 packages installed.
weiterführende Links:
Sicherheitswarnung bei Programmverknüpfungen nach Win10 Update
Irgendwie nervt es. Es gibt diese Symbolleiste “Links” wo man Favouriten als Programmverknüpfungen ablegen kann.
Mit IE-Update, mit Windows 10 Upgrade und jetzt wieder mit einem Windows10 Update kommen die Sicherheitsdialoge immer wieder aufs Neue und fragen höflich “Datei öffnen - Sicherheitswarnung … Möchten Sie diese Datei öffnen? …”
Das, was ich zu einer früheren Windows einmal erfolgreich praktizierte (icacls-Aufruf), funktioniert seit Windows 10 scheinbar nicht mehr. Dass der Order mal Links oder aber Favouriten heisst, ist an der Stelle nicht einmal das Problem. Die Methode geht einfach nicht mehr.
Schnelle Lösungen, die ich gefunden habe …
Für eine einzelne Verknüpfung die nachfolgende Variante:
(1)
Icon aus der Links Leiste einfach mit gedrückter linker Maustaste auf den Desktop ziehen und dort fallenlassen.
(3)
Das Icon auf dem Desktop dann zurück in die Links-Leiste mit gedrückter linker Maustaste plus Shift-Taste ziehen.
Icon nun aus der Link-Symbolleiste anklicken, um das Programm zu starten - der Sicherheitsdialog ist weg. Freu :-)
Um es für alle Verknüpfungen gleichzeitig zu machen, hab ich eine andere Lösung.
Man findet jenen Ordner für die Links im Explorer (Windows-Taste + E), wenn man %USERPROFILE%\Favorites\Links in die Adresszeile eingibt:
Wenn man
- einen neuen Ordner irgendwo anlegt
- die Dateien aus \Favorites\Links in den Zwischen-Ordner verschiebt
- dann zurück-kopiert
… ist der Sicherheitsdialog ebenfalls weg.
Ach ja, den Zwischenordner kann man dann löschen.
Ja und sowas wiederum kann man automatisieren und eine Bat-Datei schreiben - quick and dirty einmal so:
set linkdir=%USERPROFILE%\Favorites%\Links set tmpdir=%TEMP%\Links mkdir "%tmpdir%" move "%linkdir%*.*" "%tmpdir%" dir "%linkdir%" "%tmpdir%" pause copy "%tmpdir%*.*" "%linkdir%" dir "%linkdir%" "%tmpdir%" pause rmdir /s /q "%tmpdir%"
Update vom 12.08.2017
Und mal wieder funktionierte der Trick nicht mehr … aber ich habe etwas gefunden (s.a. Screenshots unten):
- Im Explorer zu C:\Users\[Benutzername]\ navigieren und auf “Favoriten” die rechte Maustaste und Eigenschaften wählen.
- Im Tab Sicherheit waren “komische” unbekannte User (mit einer SID Nummer). Mit [erweitert] den Editor für die Berechtigungen wählen.
- Hier die falschen Benutzer entfernen. Und [Übernehmen] … und [OK]. Durch die aktive Vererbung werden sie in den Unterelementen, zu denen auch der Links-Ordner gehört, ebenfalls entfernt
- Das Skript starten, das Links temporär wegschiebt und dann zurückkopiert (entspricht der Beschreibung oben)
- Falls die Icons nach dem Zurückkopieren nicht da sind: Die Symbolleiste “Links” ausblenden (rechte Maustaste in der Taskbar -> Symbolleisten -> Links anklicken) … und dann wieder einblenden.
Viel Glück!
weiterführende Links:
PHP7-Module unter XAMPP aktivieren
Ich habe ein aktuelles XAMPP heruntergeladen, um mit PHP7 zu prüfen, ob “mein” CMS und meine eigenen Klassen noch laufen.
Auf Sourceforge war der Download gar eine Minorversion neuer, als bei apachefriends.org.
Das Aktivieren der PHP-Module erfolgt durch Auskommentieren (Entfernen der Semikolon am Zeilenanfang) der jeweiligen Module in der C:\xampp\php\php.ini.
(...) ; extension=php_bz2.dll extension=php_curl.dll ; extension=php_fileinfo.dll (...)
Plus Restart des Apache. Dachte ich.
Mit phpinfo() wurde schnell klar, das Modul ist dennoch nicht aktiv. Die DLLs sind auch im C:\xampp\php\ext\ vorhanden.
Ursache:
Sie wurden nicht per Default gefunden. Es benötigte noch explizit den per Default auskommentierten Wert
extension_dir = "c:/xampp/php/ext/"
Dann ein Restart des Apache. Schon war das Modul da.
weiterführende Links:
Diashow: Herbst in Bern
> Diashow starten (für Smartphone-User: Vorsicht Datenmenge!)
Ich habe nach einer Diashow gesucht, um mehr meiner Fotos ins Netz zu stellen.
Eine der Möglichkeiten: Fotos im Vollbild.
Die Überblendung rein mit CSS Mitteln fand ich auf tympanus.net. Auf Basis dessen entstand ein erster Prototyp mit Bildern dieses Hersbstes.
Eine PHP-Klasse liest Verzeichnisse, Dateien und Metadaten. Enstpr. Anzahl der Bilder werden HTML-Code und CSS erzeugt. Die Bildreihenfolge ist zufällig und bei jedem Neuladen anders.
Nachteil der Vollbild-Methode:
Meine Bilder sind im Verhälnis 4:3. Je nach Grösse des Browsers, werden Bereiche links+rechts bzw. oben+unten abgeschnitten. Nicht alle Fotos eignen sich dafür.
Ich brauche noch andere Skins, um andere Darstellungen zu ermöglichen, wo man stets das gesamte Foto sieht.
Und noch fehlen mir ein paar Funktionen, die ich noch nachrüsten möchte…
Weiterführende Links:
- Axels Webseite: Diashow starten
- tympanus.net: CSS3 Fullscreen Slideshow Blog-Eintrag (en)
- tympanus.net: CSS3 Fullscreen Slideshow Demo
- Jamendo: EXIT project - And the Dream Fades (2013) die Hintergrundmusik dieser Diashow