Mittwoch, 11. November 2015

Mal wieder Zeit für Experimente

Da ich gerade eine Leistenbruch OP hinter mir habe, verwende ich die Krankphase nicht nur zur Rekonvaleszenz sondern auch zu Forschungszwecken.
Es steht gerade folgendes auf dem Programm:

  • jHipster
  • node.js 
  • angular.js
  • bootstrap
  • Spring boot
Und da ich diese Technologien ja nicht unzensiert verwenden will, gehe ich gerade in die Tiefe. Und was läuft mir da über den Weg:
LLVM und die entsprechenden Compiler. Ach, was tut sich da für eine nette Welt auf.
Da hat ja mal wieder ein Team wirklich gute Arbeit geleistet. So ein Meta-Compiler Set war auch schon immer mal in Gedanken da. Gepaart mit realen CPUs mit VLIW (Very Long Instruction Words) kann das zu einem Performance Boost werden. So far. worüber man immer mal wieder so stolpert..


Mittwoch, 18. Februar 2015

Texteditoren Teil 2

Mit den neuen Frameworks kommen auch die alten Editoren in Frage. Zur Zeit arbeite ich noch mit Eclipse, habe entsprechende Tools installiert und es ist OK.
Ist OK aber genug? Natürlich kann man in dieser Frage nicht genau antworten, doch so einige Editoren sind in den Ring geworfen worden:

  • Sublime Text hatten wir ja schon. Bislang habe ich aber nur gestestet. http://www.sublimetext.com/
  • Atom ist ähnlich, nur frei und völlig frei konfigurierbar. Erscheint mir sehr viel unterstützung aus der Community zu bekommen. https://atom.io/
  • Adobe hat dann auch noch etwas freies auf den Markt geworfen: Bracketshttp://brackets.io/
Ich werde diese Editoren/Entwicklungsumgebungen in den nächsten Wochen mal testen. Im Bereich von AngularJS bin ich auch schon weiter gekommen. Es ist wirklich sehr strukturiert, dort eine "Singel Page Application" (SPA) zu schreiben. 

Meine erste Applikation ist für die Arbeit, eine weitere für die Verwaltung meiner Kameraden aus der freiwilligen Feuerwehr.

Die Daten liegen in eine MySQL Datenbank. Dazu habe ich ein Interface in PHP geschrieben, welches die Daten bereitstellt und Änderungen vornehmen kann.

Die Angular Applikation besteht aus einer Basisseite mit Navigation und einer handvoll Views. Diese werden durch den Router an Controller gebunden. Der Controller ist in JavaScript geschrieben und kommuniziert mit dem DB Interface über http async calls (AJAX). 

Views--> Controller -> PHP/IF --> MySQL

den Code dazu werde ich im nächsten Post vorstellen. 

Dienstag, 6. Januar 2015

Mal wieder ein neuer Texteditor

So ist das Leben. Oft wiederholt sich etwas. Gerade mit den Texteditoren kann man da ganz schön Streit anfangen. So hatten wir schon während des Studiums (ja, Opa erzählz vom Krieg) den Spruch zu hören: 

Es gibt drei Dinge, über die sollte man als Mann nicht streiten: Fußball, Frauen und Texteditoren. 

Bitte die Reihenfolge beachten.
Was das folgende Bild soll, könnte Ihr am Ende des Textes nachlesen.


Aber trotzdem habe ich es mal wieder zu einem neuen Liebling geschafft. Normalerweise bin ich ja mt der Eclipse Umgebung verheiratet, auch wenn mich da hin und wieder so ein Zombie wie vi anfällt. Auch als puristischen Editor habe ich Notepad++ unter Windows in gern in Gebrauch. Da  muss ja nun schon einmal jemand kommen, um eine Erwähnung Wert zu sein.

Vor einigen Wochen ist mir da schon mal ein Editor über den Weg gelaufen, mit dem man mehrere Stellen gleichzeitig bearbeiten kann, hoffentlich nur, wenn man will.
Heute habe ich ein Youtube Video angeschaut und da ist dieser Editor wieder einmal verwendet worden. Und dann habe ich mich natürlich nicht sofort auf den Weg gemacht. Erst als ich unter Cygwin noch ein paar Scripte anpassen wollte, dachte ich mir, ich müsste noch einmal nach einem Linux/Unix Editor ausschau halten, damit ich "seamless" just aus dem Cygwin Shell Arbeitsverzeichnis eine entsprechende Datei zu editieren. Nano oder Pico währen ja schon OK. Auf VIM hatte ich keine Lust, den nehme ich ja nur, wenn nichts Anderes da ist. Und beim Betrachten der Alternativen ist er mir geradezu über den Weg gelaufen:

Sublime text. Shareware. Werde ich jetzt mal auf Herz und Nieren testen. Das Ergebnis kommt in einem der nächten Posts.

Was ich sonst noch so am Wickel habe? 

Webentwicklung mit JavaScript Frameworks. Die schießen ja gerade nur so aus dem Boden. Da muss man schon sehr umsichtig sein um die richtigen zu erwischen.

Alles zusammen als MVC hier auf der Windows Schlure unter XAMPP.

Ergebnisse stelle ich Euch bald zur Verfügung.

Dann wünsche ich noch frohes Schaffen im neuen Jahr und geht mal an die frische Luft.
Das hat noch niemandem so ernsthaft geschadet. Übrigens passt mit Euren Projekten auf. Nicht dass er Euch geht, wie den Kollegen von Hochtief bei der Elbphilharmonie. Sieht zwar schön aus (wenigstens von außen), ist aber unbezahlbar. Ihr habt dann aber das problem nicht. Denn so weit kein kein privater Auftraggeber. Da wird das Projekt vermutlich einfach gestoppt.

So nun für die Nachleser auch noch zu den Themen die kleine Linksammlung

Editoren
http://www.sublimetext.com/
http://notepad-plus-plus.org/

JavaScript Frameworks
https://angularjs.org/
http://getbootstrap.com/
http://d3js.org/







Dienstag, 30. Dezember 2014

Scalable Vecor Graphics in Browser HTML - a short Introduction

SVG - Teil 1

Da gibt es doch für LaTex immer diese "not so short Introduction". Eigentlich habe ich mal so etwas für SVG gesucht. Nicht gefunden. Da machen wir uns das einfach mal selber:

Zeichenbereich

Aussen muss erst mal ein Rahmen definiert werden. Damit der Browser dann auch den Rest interpretieren kann:

<svg>...</svg>

na, das ist vielleicht ein bißchen wenig, also noch die Größe angeben...

<svg width="420" height="120">...</svg>

Das ist dann der eingeräumte Platz im Browser. Wir können dann natürlich auch noch angeben, wie da ein Koordinatensystem drin abgebildet ist, die viewBox:

<svg width="420" height="120" viewBox="0 0 500 500" >...</svg>

Da sind zwar nur 420 x 120 Pixel im Browser reserviert, aber auf diese wird ein Koordinatensystem 0,0 bis 500,500 gelegt.

Elemente

In diesem SVG Bereich können wir nun Grafiken erzeugen wie wir wollen.
Zeichenelemente

Rechteck

<rect x="210" y="10" width="90" height="40" rx="5" ry="10"
    fill="none" stroke="black" />

Hier haben wir ein Rechteck an der Position x,y in der Größe width und height mit abgerundeten Ecken (unterschiedlich) ohne Füllung und mit schwarzem Rand.
Man kann auch noch die Stärke des Randes mit dem Parameter stroke-width angeben.

Kreis

<circle cx="230" cy="67" r="14" fill="white" stroke="black" />

Ellipse

<ellipse cx="200" cy="50" rx="20" ry="40" style="fill:green;" />

Linien

 <line x1="90" y1="150" x2="310" y2="150"
style="stroke:black; stroke-width:2px;" 

Polylinien

<polyline fill="lightgray" stroke="red" stroke-width="5px"
    points="400 10, 120 10, 200 80, 280 20, 300 20
            220 100, 300 180, 280 180, 200 120, 120 180, 100 180
            180 100, 80 10, 10 10, 10 200, 400 200" />

Polygone

<polygon fill="yellow" stroke="none"
    points="350 75, 379 161, 469 161, 397 215,
            423 301, 350 250, 277 301, 303 215,
            231 161, 321 161" 
    transform="scale(.5)"

Hier wird zusätzlich noch ein transform Parameter mit angegeben.

Formattierung

Style

<rect x="50" y="50" width="125" height="100"
    style="fill:yellow; stroke:black; stroke-width:.1cm;" />
  <rect x="225" y="50" width="125" height="100"
    style="fill:yellow; stroke:black; stroke-width:.1cm;" />

  <!-- ein überlappender Kreis mit Transparenz -->
  <circle cx="200" cy="100" r="95"
    style="fill:blue; stroke:black; opacity:.4;" />

Styles können direkt im Element angegeben werden.

Globale Formattierung

<STYLE>
rect {fill:yellow; stroke:black; stroke-width:.1cm;}
.blauTransparent {fill:blue; stroke:black; opacity:.4;}
</STYLE>
...
<!-- zwei gleich angemalte Rechtecke -->
  <rect x="50" y="50" width="125" height="100" />
  <rect x="225" y="50" width="125" height="100" />

<!-- ein überlappender Kreis mit Transparenz -->
  <circle cx="200" cy="100" r="95" class="blauTransparent" />

Hyperlinks

<a xlink:href="webseite.html"
     xlink:title="Verweis zu einer HTML-Seite">
    <rect x="10" y="10" ry="5" width="40" height="40"
    style="fill:limegreen; stroke:black;" />
  </a>

Hyperlinks können verschiedene Graphikelemente inkludieren.

Gruppierungen

<g stroke="red">
    <rect x="140" y="20" width="120" height="110"
      rx="10" ry="5"
      fill="none" stroke-width="1.5" />
    <rect x="270" y="20" width="120" height="110"
      style="fill:#efefef;" />
  </g>

Elemente können gruppiert werden und in de Gruppe "lokale" Attribute erhalten.



Mal wieder aktiv

Da hat man doch so viele Plätze, wo man Informationen abladen kann und da will ich diesen Platz nutzen um meine aktuellen Umtriebe darzustellen.
Zur Zeit verwende ich viel zeit u mich in ein Thema herein zu arbeiten, was ich für wichtig halte.
In den letzten Jahren hat sich die dynamische  Webseiten Generierung per JavaScript (js) als quasi Standard durchgesetzt. Hier gibt es verschiedene Frameworks, um die Infrastrukturen zu beherrschen:

  • GWT - Google Web Toolkit - wohl eins der am weitesten verbreiteten Framworks. Ist auch oft eine Basis für weitere Aufsätze
  • Vaadin - die Rentierkuh - hier ist die Idee die Client Seite programmierechnisch vollständig in den Server hereinzuziehen und mit modernen Unterbau Frameworks anzreichern (Spring).
    Weitere Elemente dafür sind Maven als Bild-Maschine und Hibernate für die Datenbank Abstraktion.
  • Angular.js - ein reines clientseitiges Framework, hochdynamisch und ebenfalls von Google gesponsort.
  • Bootstrap - Eher eine CSS Sammlung zur flexiblen Darstellung der Inhalte zwischen PC Bildschirm, Tablet und Handy. Basis von Responsive
  • node.js - ein Webserver hoher Parallelität. Geschrieben wird hier ebenfalls in js
  • D3.js - ein Graphikframework zur Visualisierung der Daten. Ein Bild sagt mehr als tausend Worte und so ist es nun mal. Sehr wichtig.
  • Mongo.db - parallelisierbase objektorientierte NOSQL Datenbank.
Daher baue ich mir gerade eine Applikation auf, in der ich an diese neuen Strukturen herantaste um sie zu durchdringen.

Entwickelt wird übrigens zur Zeit mit Aptana als Entwicklungsumgebung und einer XAMPP Umgebung als Webserver. Die Daten liegen (noch) in einer MySQL Datenbank.
Die Anwendung wird nach streng View Controller Paradigma aufgebaut. 


Hier sehen wir eine Ausgabe von D3.js

Die Daten werden erst vom Script geladen. Hierbei bedienen wir uns der Parametrierung im Aufruf um die entsprechenden Daten herauszuselektieren.



Montag, 19. Februar 2007

Akkugeräte ohne Memory Effekt

Nun stellen wir uns vor, wie schön das wäre, wenn wir unsere allseits beliebten schnurlosen Geräte nun ohne Memory effekt betreiben könnten. Ist das möglich?
JA!
Hier ein Beispiel:
Schnurloses Telefon - liegt eigentlich immer auf der Ladeschale. Memory effekt vorprogrammiert.
Deshalb legen es viele Benutzer einfach daneben. Aber damit muss man sich ja nun um eine Technik kümmern, wie man es eigentlich gar nicht will.
Wenn man aber nun 3 Akkus verwenden würde und diese nur dann wieder lädt, wenn sie unter einem bestimmten Schwellwert sind, dann würde das gehen. Es wird zur Zeit immer nur ein Akku für das Gerät verwendet. Ist dieser leer, dann wird auf den nächsten umgeschaltet. Ist dieser leer auf den nächsten. Beim Laden ist das ähnlich. Es werden die akkus nacheinander geladen. Aber immer nur der, der leer ist. Hat ein Akku noch z.B. 50% dann wird er nicht geladen, sondern das Telefon noch aus diesem gespeist. Damit werden die Akkus immer erst dann geladen, wenn sie leer sind. Und die anderen Akkus bleiben voll (Ladungserhaltungsschaltung). So hat man bei 3 Akkus mindestens 66% Ladezustand und bei 4 Akkus 75%. (Hinzuzurechnen ist ja auch noch der Inhalt des gerade aktiven Akkus).

Freitag, 26. Januar 2007

Dynamische Hyperlinks

Hat nicht fast jeder Internet Publischer das Problem gebhabt, dass er externen Content eingebunden hat (! Haftung !) und dann war dieser weg, und der Link war damit taub.

Wie wäre es denn, wenn man ein Content Register einführen würde, über welches diese Links geroutet würden. Denn mit einer entsprechenden Suchmaschine sind die Inhalte ja immer wieder zu finden. Technik (Hash-Werte) stehen ja auch zur Verfügung.