Blog: Latest Entries (15):



RXTXComm in Eclipse

Um RXTXComm für Java in Eclipse verwenden zu können muss man auch die DLLs Eclipse bekannt machen.
Im Buildpath muss man die JAR finden und dann ausklappen. Bei der Native Library Location muss man Edit wählen.

bbcode-image


Ich hatte die DLLs einfach mit im lib-Folder abgelegt.

bbcode-image


Danach lief auch die Suche von SMSlib.

bbcode-image


Leider funktioniert mein alter Huawei E1750 unter Windows 10 wohl nicht mehr so einfach. Ich habe mir mal den 4G Systems XS Stick P10 bestellt und hoffe, dass dieser gleich und ohne Probleme funktioniert.

Und dann mal die Beispiele zum SMS-Empfang von SMSlib testen.

Rewrite meines PHP-Frameworks

Zum 10. Geburtstag meines PHP-Frameworks wird sich da viel ändern und es damit dann wieder etwas mehr zu anderen Frameworks aufschließen können.

Mein eigener Class-Loader fliegt raus und es wird noch der ClassLoader vom Composer verwendet. Meiner kann zwar auch mit PSR4 umgehen, aber nach dem Umstieg muss ich dann auch alles darauf umstellen und habe keine Ausrede mehr, weil die Kompatibilität weg fällt.

Es gibt nun ein public-Verzeichnis so dass alle Config-Dateien und Classes außerhalb des Bereiches liegen, auf dem Benutzer zugreifen können. Das sorgt für mehr Sicherheit, macht das Laden von CSS und Bildern aus dem Theme-Verzeichnis aber komplizierter. Ich überlege hier auf Assetic umzusteigen. Momentan läuft meine Lösung aber sehr gut.

Und das Beste und wichtigste was aber auch am meisten Arbeit machen wird (darum habe ich ganz viele alte Module erst einmal gelöscht und lasse auch die alten PHP-Pages drin) ist, dass Module-Pages nun wirklich mit Controller und Twig-Template gerendert werden. Die Twig-Templates könenn vom Theme und von eigenes Templates in der Instance überschrieben werden und so kann man nun endlich das Aussehen der Module leicht und schnell anpassen.
Smarty war schon länger drin, wurde aber nie benutzt und ist jetzt raus geflogen.

bbcode-image


Mein erstes Projekt damit wird sein, die Zeiterfassung für Kunden-Projekte neu zu schreiben und für alle brauchbar zu machen. Das wird wohl am Ende nur 1-2 Tage dauern. Also nichts im Vergleich zum Umbau des Frameworks.

King Pigeon RTU5023 Anleitung

Das King Pigeon RTU5023 ist ein Gerät zum Messen von Temperatur und Luftfeuchtigkeit. Der Vorteil ist, dass das Gerät diese Messungen dann auch über das Handy-Netz (Quad-Band) per SMS verschicken kann. Mit dem sehr stabilen Gehäuse und dem Anschluss für den Senor kann man damit also ohne Probleme Transporte mit LKWs oder Zügen von einem Standort aus überwachen. Mit einer SMS-Flat entstehen auch kaum zusätzliche Kosten. Die SIM-Karte darf keinen PIN haben, da man an dem Gerät keine PIN eingeben kann und die Programmierung rein über Commands erfolgt, die man dem Gerät per SMS schickt. Antworten tut das Gerät auch über SMS.

bbcode-image


Ich habe das Gerät von der Switch GmbH bekommen, um mal heraus zu finden wie es funktioniert und wie man es in vorhandene Systeme integrieren kann.

Das Problem ist, erst einmal etwas über das Gerät heraus zu finden. Bei chinesischen Geräten ist das ja immer das Problem, dass man zwar viele Seiten findet wo man das Gerät kaufen kann, aber kaum Seiten vom Hersteller oder mit Anleitungen. Das ist auch hier so. Die Infos zu den SMS Commands ist schwer zu finden und auch nicht gerade übersichtlich oder gut erklärt.

ABER es gibt einen Vorteil und dieser ist die Android-App im Google Play-Store. Diese macht an sich nichts andere als Eingaben in die App per SMS zu verschicken. Antworten kommen per SMS und werden dort wieder eingetragen.

bbcode-image


Also einfach das Gerät anschließen und die App installieren. Als erstes muss man das Gerät anmelden. Nummer eingeben, das default Passwort ist 1234 und den Rest nach belieben ausfüllen und speichern.

bbcode-image


Ich wurde erst einmal mit SMS voll gespamt. Meistens dass die Report-Time auf 999 stehen würde. Also diese erst einmal auf 1h gestellt und schon hörte es auf. Man kann sich stündlich Reports der Messungen zusenden lassen oder Alarm SMS, falls die Tempartur- oder Luftfeuchtigkeit-Range über oder unter schritten wird.

bbcode-image


Das Tolle ist, dass die SMS natürlich auch einfach im Handy vorliegen. Da kann man dann anhand der Zuordnungen von Befehl und Antwort sich die meistens Commands einfach so erarbeiten.


1234DT001


Das setzt die Report-Time auf 1h.

bbcode-image


Als nächstes geht es nun darum SMS zu empfangen und deren Inhalt auszuwerten. Davon ist wohl das Empfangen das Problem, wobei ich noch einen UMTS-Stick rumliegen habe und es da wohl entsprechende Java-Libs gibt.
Damit kann man sich dann ein SMS-Gate bauen und die eingehenden SMS parsen und weiterleiten. Aber das kommt dann nächste Woche.

Microsoft Surface und Micro SD Karte

Eine der Eigenschaften des Microsoft Surface Pro 4 mit Core m3 CPU ist der doch sehr geringe Speicher in Form einer 128GB SSD. Im Vergleich zu den Speichergrößen von Android Tablet ist 128GB schon wirklich groß und scheint erst einmal ausreichend.
Der Unterschied zu einem Android-Tablet ist aber, dass man mit dem Surface richtig arbeitet und entsprechend viele und auch komplexe Programme installiert. Allein die Grundaustattung mit XAMP, Java, IDE, GITKraken und vielen kleinen Tools spreng leicht den Rahmen an dem was auf einem Android Tablet vom Benutzer an Daten und Apps zu finden ist. Beim Surface kommen dann noch die Daten des Benutzers hinzu.

Mit paar Bildern in RAW+JPEG und paar MP4s in FullHD von der DSLR wäre der noch freie Speicher der 128GB sehr schnell voll. Musik, Videos, ISOs oder VMs sind zu viel für die 128GB.

bbcode-image


Zum Glück kann man eine Micro SD-Karte nachrüsten. Die Geschwindigkeit einer normalen SD-Karte ist natürlich nicht vergleichbar mit der SSD, aber für einfaches ablegen von Daten reicht eine einfache SD-Karte. Für etwas über 10 Euro bekommt man 64GB. Für mehr Geld würde man auch eine schnelle 128GB Karte bekommen, die dann auch schnell genug sind, um mal ein portables Programm darauf ablegen zu können ohne ewig lange Ladezeiten riskieren zu müssen.

bbcode-image

Der Surface Pen

Ich hatte den Surface Pen als etwas Bezeichnet was ein nettes Gimmick wäre, aber auch nicht so viel mehr.
Nun habe ich ihn zusammen mit FreshPaint doch einige Stunden verwendet und muss sagen, dass er für Zeichnungen doch ganz gut geeignet ist. Nicht wirklich zum Malen, aber für einfache kleine Skizzen-Zeichnungen ist es ein tollen Gerät.

Kann man damit ultra genau zeichnen? Nein. Sind die Druckstufen gut zu kontrollieren und genau zu verwenden? Nein.
Es gibt verschiedene Spitzen, aber die habe ich genau wie bei meinem alten Wacom Intuos 3 nicht ausprobiert.

bbcode-image


Also revidiere ich ich meine Ausgabe zum Pen etwas: Für schnelle Skizzen mit den richtigen Programmen ist der Pen wirklich toll. Aber man sollte trotzdem nicht zu viel erwarten.

Beim Surface Pro 4 kann es auch mal passieren, dass man wenn man die Handfläche auf dem Display beim Zeichnen ablegt, damit doch mal einen diagonalen Strich auf das Canvas damit zeichnet. Aber mit Undo ist das Problem dann schnell wieder gelöst.


Falsches Zertifikat bei https auf eine Domain

Ich hatte eben das Problem, dass das Zertifikat auf https://www.superseriousllama.de/ ungültig sein und eigentlich für https://www.mp4togif.com ausgestellt wurde.


SSL_ERROR_BAD_CERT_DOMAIN


Das Problem war nach längerer Suche, dass ich einfach vergessen hatte die llama-ssl.conf mit


sudo a2ensite llama-ssl


zu aktivieren.

bbcode-image


Da muss man erst einmal drauf kommen, dass dann das Zertifikat einer anderen Seite verwendet wird.

Bastelzeit mit 1366 Kühlern

Bald ist mal wieder Bastelzeit. CPU, Mainboard, RAM, Festplatte und Netzteil liegen breit. Heute kamen dann die Kühler an. Kühler für Socket 1366 Server-/Workstation-Mainboards zu bekommen ist nicht ganz so günstig wie für Desktop-PCs. Aber sie sind katzen-geprüft und von Supermicro. Es kann also nicht so viel schief gehen und mit BeQuiet-Lüftern drauf kühlen die dann auch gut.

bbcode-image


Nur ein gutes und günstiges Gehäuse fehlt mir noch. Ich hätte gern ein Intergraph TDZ Gehäuse, aber die scheint es seit Jahren nicht mehr zu geben.

Automatisch Farb-Array erzeugen

Wählt möglichst weit aus einander liegende Farben aus der Auswahl aller Farben, wobei die Enden (Schwarz und Weiß) ausgelassen werden. Da bei wenigen Farben nur Grautöne heraus kommen, werden bei weniger als 8 Farben die Abstände zwischen den Farben geringer als möglich gewählt.


function ColorGeneratorService(){
this.generateColorList = function(neededColorCount){
var minColorsfactor = 1;
if(neededColorCount < 8){
minColorsfactor = 3;
}
var result = [];
var end = parseInt(0xFFFFFF);
var step = Math.round(end / ((neededColorCount * minColorsfactor) + 1));
for(var i = 1; i <= neededColorCount; i++){
result[result.length] = "#"+(step * (i * minColorsfactor)).toString(16);
}
return result;
};
}

Database und User schnell in MySQL

Das hier ist jetzt nicht wirklich neues oder besonderes, aber da ich es in den letzten Tagen sehr oft eingeben musste, hier mal nieder geschrieben.

bbcode-image


Eine Datenbank in MySQL erstellen, einen User anlegen und dann dem alle Rechte auf die DB geben.


CREATE DATABASE example;
CREATE USER 'exam'@'localhost' IDENTIFIED BY '3x4m';
GRANT ALL ON example.* TO 'exam'@'localhost';

https mit Let's Encrypt ganz einfach

Ich bin jetzt auch mit MP4toGIF.com auf meinen Server bei netcup umgezogen. Einer der Hauptgründe von dem Hostingpacket von 1&1 auf einen eigenen Server umzuziehen war neben den günstigeren Betriebskosten für Server und Domains auch die Möglichkeit SSL-Zertifikate von Let's Encrypt verwenden zu können. Also keine 2,99 mehr pro Domain, um https nutzen zu können.

Let's Encrypt ist auch sehr einfach zu verwenden. Hier ist eine Anleitung für Ubuntu 16.04 LTS.

Zu erst, um nicht erst in kryptische Fehler zu laufen, aktivieren wir SSL für den Apache.


sudo a2enmod ssl


bbcode-image


Dann wird der Let's Encrypt Client installiert.


sudo apt-get update
sudo apt-get install python-letsencrypt-apache


bbcode-image


Nun steht der Client zur Verfügung und wir können uns ein Zertifikat erstellen. Das geht auch mit nur einem Befehl.


sudo letsencrypt --apache -d mp4togif.com -d www.mp4togif.com


Dann startet der Client und man muss den Anweisungen folgen. Bei mir brach er mitten drin ab weil 'sudo apache2ctl configtest'
einen Fehler meldete, der wohl auf das bei mir noch nicht aktive SSL-Module zurück zu führen war.

ABER es ist sehr einfach den Rest per Hand einzurichten.

Zuerst die conf-Datei in sites-available mit dem Zusatz "-ssl" doppeln. Also zum Beispiel mp4togif.conf in mp4togif-ssl.conf doppel.
Dann in der neuen Datei den Port von 80 auf 443 ändern und dies hier einfügen.


Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/mp4togif.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/mp4togif.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/mp4togif.com/fullchain.pem


Nun nur die site aktivieren mit


sudo a2ensite mp4togif-ssl


und den Apache neuladen


sudo service apache2 reload


und schon sind wir fertig und https sollte funktionieren.

bbcode-image

Eine einfache Zählervariable in AngularJS


<div ng-reapeat="item in items">
{{$index}} - {{item.name}}
</div>


Wenn man mit Sub-Items arbeitet.


<ul>
<li ng-reapeat="item in items" ng-init="mainIndex=$index">
{{mainIndex}}. - {{item.name}}
<ul ng-if="item.subs && item.subs.length>0">
<li ng-repeat="sub in item.subs" ng-init="subIndex=$index">
{{mainIndex}}.{{subIndex}}. {{sub.name}}
</li>
</ul>
</li>
</ul>


Und komplett rekursiv.


<script type="text/ng-template" id="subs.html">
<li ng-repeat="item in parent.subs">
{{prefixIndex}}{{$index}}. {{item.name}}
<ul ng-if="item.subs && item.subs.length>0" ng-include="subs.html" ng-init="prefixIndex=prefixIndex+$index+'.'; parent=item">
</ul>
</li>
</scipt>
<ul ng-if="theRealParentItem.items && theRealParentItem.items.length>0" ng-include="subs.html" ng-init="prefixIndex=''; parent=theRealParentItem">
<ul>


Diese Übergabe an Werten ist auch im Zusammenspiel mit SVG sehr praktisch, weil man so Koordinaten nicht in den Objekten oder im Controller hinterlegen muss, sondern sie immer weiter durch reichen kann, um für jedes Level einen eigenen Ursprung definieren zu können.

CSS3 Animationen


<html>
<head>
<style type="text/css">
div.slider{
width:100%;
height: 300px;
overflow-x:hidden;
overflow-y:hidden;
border-bottom:1px solid #000000;
}

div.slider-item{
background-color:#44AAAA;
width:100%;
height:100%;
animation-name: slide-in;
animation-duration: 4s;
}

@-moz-keyframes slide-in{
0%{opacity: 0;margin-left:100%;}
20%{margin-left:0%;}
100%{opactiy:1;}
}
</style>
</head>
<body>
<div class="slider">
<div class="slider-item"></div>
</div>
</body>
</html>


einblenden: opacity 0 auf 1
von links: margin-left 100% auf 0%
von-rechts: margin-right 100% auf 0%
wachsen lassen: scale(0) auf scale(1)
schrumpfen lassen: scale(2) auf scale(1)

Ein Snap-In Effekt:

@-moz-keyframes snap-in{
0%{transform:scale(1.2);opacity:0;}
50%{opacity:0.2;}
95%{transform:scale(0.9);opacity:1;}
100%{transform:scale(1)}
}

AngularJS und URL-Parameter

Wenn man die URL-Parameter mit AngularJS auslesen möchte, kann man dies
sehr einfach mit dem $location-Service machen. Wichtig ist nur, dass man vorher den HTML5-Modus aktiviert.


$locationProvider.html5Mode({
enabled: true,
requireBase: false
});


Danach bekommt man über $location.search() ein Array mit allen
Parametern.


var test = $location.search()['test'];

Older posts:

Möchtest Du AdSense-Werbung erlauben und mir damit helfen die laufenden Kosten des Blogs tragen zu können?