Ingenieurbüro Edelmann

Softwareentwicklung • Softwarearchitektur • Beratung


Responsive Design

Unter Responsive Design (Responsive Webdesign) wird ein dynamische Webdesign verstanden. Durch das dynamische Design ist es möglich, auf die unterschiedlichen Displaygrößen der mobilen Devices reagieren. Wichtigste Voraussetzung dafür sind Media Queries, welche Art und Eigenschaften des betrachtenden Gerätes abfragen und somit die Webseite auf einem großen Display anders darstellen, als auf einem Tablet-Computer/Tablet-PC oder Smartphone.

Responsive Web Design.png
Responsive Web Design von Muhammad Rafizeldi (Google+" target="_blank" rel="noopener">https://plus.google.com/116896518900524729976/?rel=author"">Google+) - INCRIdea" target="_blank" rel="noopener">http://incridea.com"">INCRIdea Indonesia Source site: http://incridea.com/galeri/responsive-web-design/" target="_blank" rel="noopener">http://incridea.com/galeri/responsive-web-design/"">http://incridea.com/galeri/responsive-web-design/ Source URL: http://incridea.com/images/Responsive-Web-Design-INCRIdea-Indonesia.png" target="_blank" rel="noopener">http://incridea.com/images/Responsive-Web-Design-INCRIdea-Indonesia.png"">http://incridea.com/images/Responsive-Web-Design-INCRIdea-Indonesia.png. Lizenziert unter http://creativecommons.org/licenses/by-sa/3.0"" title=””Creative Commons Attribution-Share Alike 3.0””>CC BY-SA 3.0 über Wikimedia Commons.

node.js listening only on localhost

Bei einem Portscan mit nmap bei einem meiner Server ist mir gerade aufgefallen, daß der Port auf dem node.js läuft nach aussen offen war.


PORT     STATE    SERVICE
22/tcp   open     ssh
53/tcp   open     domain
80/tcp   open     http
443/tcp  open     https
445/tcp  filtered microsoft-ds
3737/tcp open


Das muss so nicht sein! ;) (…und sollte es natürlich auch nicht.)

vorher:


app.listen(3737, function() {                                      
  console.log(""... port %d in %s mode"", app.address().port, app.settings.env);  
});

nachher:


app.listen(3737, 'localhost', function() {                                      
  console.log(""... port %d in %s mode"", app.address().port, app.settings.env);  
});

Und schon hört der Server nur noch am localhost.

iOS8 Share Extensions

Mit iOS8 zieht Apple endlich nach und spendiert seinem iOS etwas ähnliches wie bei Androids als Share Intents längst gang und gebe sind -> die Share Extension bzw. Extensions allgemein.

Damit kann man endlich Erweiterung programmieren, die z.B. die im WebBrowser geöffnete Seite (die URL) an einen eigenen Bookmark Dienst (Favoridium ) schickt. Es mag ja nicht jeder delicious, dropbox, evernote und co. benutzen.

[UPDATE 2014-06-18]

… und mit der iOS8 Beta2 kann man sie auch benutzen ;) …

Ubuntu 14.04: I want my menus back

Wer, so wie ich, seine Menüleiste lieber am zugehörigen Fenster mag, dem kann jetzt wieder ohne größerem Hack geholfen werden. In Ubuntu 14.04 gibt es eine Einstellungsmöglichkeit unter System Settings -> Appearance -> Behavior.

Einstelloption für Menüs

Danke! ;)

Google geht unter die Autobauer

Google macht weiter Ernst mit seinem Engagement bzgl. selbstfahrender Autos.

Auch wenn der erste Entwurf ein bisschen nach Toystory, o.ä. aussieht.

“Sie werden kein Lenkrad, kein Gaspedal und kein Bremsbedal haben - weil sie sie nicht brauchen”, meint Google selbstbewusst in der Ankündigung. Darüber wird sicherlich noch diskutiert, zumindest in DE ;)

Maximal sollen die Fahrzeuge mit 25 mph (ca. 40 km/h) unterwegs sein.

Die passende Google Plus Seite dazu.

UPDATE: Gerne nicht nur als Stadtfahrzeug, sondern auch Pendler und Langstrecken geeignet.

Und noch das Video dazu:

SQLite 4 ist unterwegs

aus dem Designdokument zu SQLite 4

SQLite4 is a compact, self-contained, zero-adminstration, ACID database engine in a library, just like SQLite3, but with an improved interface and file format. The run-time environment is encapsulated in an object. A greatly simplified Key/Value storage engine is used: A single large key space - not separate key spaces for each table and index as in SQLite3. Keys sort in lexicographical order. Multiple storage engines, interchangeable at run-time. Default on-disk storage engine uses a log-structured merge database. The PRIMARY KEY of a table really is used as the key to the storage engine. Decimal arithmetic is used. Foreign key constraints and recursive triggers are on by default. Covering indices can be declared explicitly.

Der wichtigste Satz:

SQLite4 is an alternative, not a replacement, for SQLite3. SQLite3 is not going away. SQLite3 and SQLite4 will be supported in parallel. The SQLite3 legacy will not be abandoned. SQLite3 will continue to be maintained and improved. But designers of new systems will now have the option to select SQLite4 instead of SQLite3 if desired.

SQLite 3 wird also parallel weiter entwickelt bzw. werden Änderungen wohl nachgezogen.

Eine wichtige Neuerung in SQLite 4 ist der “echte” Primary Key, da ja in SQLite 3 die RowID als Primary Key hergenommen wurde. Das sollte einiges an Performance-Zuwachs bringen.

Mal sehen wann sich die Neuerungen auch auf den Mobil-Plattformen Android und iOS wiederfinden werden.