Es ist nicht dokumentiert, ob Programmiersprachen-Gurus wie Stroustrup oder Wirth tatsächlich zu manischen Anfällen neigen, wenn Sie die Sprachkonstrukte von JavaScript sehen. Das laute Lachen der Security-Gurus, das erst Stunden später in einem Kichern versickert, ist währenddessen häufiger zu hören. Trotzdem wird diese Sprache inzwischen in alles eingebaut was elektrisch ist, vom eingebetteten Arduino über den Fernseher bis zur hochskalierbaren Enterprise-Anwendung. Warum ist das passiert, und was haben wir noch zu erwarten?
DevOps is mainstream - at least the tools, the automation and the metrics. But what happened to DevOps Culture? Does it still matter? If yes - how do we achieve it?
Wenn der größte Teil der Logik in JavaScript stattfindet, dann findet auch der größere Teil der Sicherheitsrisiken dort seine Heimat. Und Angreifer finden mit JavaScript eine interessante neue Umwelt, denn die Sprache selbst und auch ihre Heimat in Browser und Node.js bringen viele neue Probleme. Und genau da setzt der Vortrag an: die verblüffenden Unterschiede von JavaScript zu anderen Sprachen, wenn es um Security geht. Die Risiken und auch die Besonderheiten von Browsern und anderen JavaScript-Engines wie Node.js. Die Securityimplikationen von JavaScript-Frameworks bishin zu speziellen Problemen wie mXSS, ReDOS und HTML5-Security.
Von flachen Hierarchien zur Networked Company, von losen Netzwerken zur Holacracy, von Managern zur Bossless Organization: IT-Unternehmen diskutieren zurzeit viele Begriffe aus dem NewWork-Umfeld. Warum springt gerade unsere Branche auf diese Konzepte an? Dreht sich alles um den Arbeitsmarkt und die Generation Y, oder reagieren wir auf steigende Komplexität und Dynamik? Welche Folgen hat das auf das Unternehmen und unsere Arbeit? Ein Bericht aus Theorie und Praxis, von Hypes, offensichtlichen und nicht offensichtlichen Fehlern.
Die wichtigste Komponente bei der Entwicklung von Software besteht zu 70 Prozent aus Wasser: den beteiligten Personen. Während wir bei den Komponenten Hard- und speziell Software sehr genau über die Fehler, Probleme und Defekte Bescheid wissen, stehen wir bei der Wetware noch am Anfang – dabei haben wir im Alltag die ganze Zeit mit seltsamen Argumenten, Fehlschlüssen, kognitiven Verzerrungen und seltsamen Effekten in Teams zu tun. Der Talk stellt die häufigsten Streiche vor, die unser Gehirn uns spielt und wie man damit umgehen kann.
Die Diskussion über New Work findet meist entlang der Perks und der Autonomie der Kollegen statt. Aber lässt sich damit alleine Effizienz, Effektivität, Innovation und Adaptionsfähigkeit verbessern? Wie aligne ich die Firma, wenn die Kollegen und ihre Teams autonom arbeiten? Muss ich meine Organisationsform ändern? Scheitere ich an meiner Firmenkultur oder meinen Managern? Ein Bericht aus zehn Jahren Theorie und eigener Praxis.
Wer als Entwickler Führungskraft werden möchte - oder noch schlimmer - von anderen dazu erklärt wird, hat einen langen und schmerzhaften Weg vor sich. Und die Erfolgsquote, das belegen die eigenen Vorgesetzten jeden Tag, ist nicht hoch. Viele gute Pläne und logische Schlussfolgerungen funktionieren in der Praxis nicht mehr, und die kollegiale Unterstützung wird durch Politik ersetzt. Wir erzählen nicht nur unsere Geschichte, sondern auch darüber was heute als gute Führung gilt.
Liquide Rollen statt fixer Positionen
- Warum klassische Positionen –inklusive Führungspositionen – Schaden anrichten
- Wie eine liquide Rollenverteilung in der Praxis aussieht
- Welche Vorrausetzungen braucht es, wie organisiert man Führung und Karriere
Von der Governance-getriebenen Architektur der IT-Entscheider und Architecture Boards kamen wir zur emergenten, teambestimmten Architektur, und von dort über Strategien wie MicroServices zu Organisationsformen, die wir frei anhand unserer Wunscharchitektur definieren. Im Gegensatz zu den sich immer weiter beschleunigenden Architektur- und Technologietrends bewegen sich Team- und Abteilungsstrukturen mit ihrer eigenen Geschwindigkeit - und manchmal auch gar nicht. Ein Bericht aus der Praxis, vom Planen, Scheitern, Lernen und demütiger Architektur.
DevOps is mainstream - at least the tools, the automation and the metrics. But what happened to DevOps Culture? Does it still matter? If yes - how do we achieve it?
Wenn der größte Teil der Logik in JavaScript stattfindet, dann findet auch der größere Teil der Sicherheitsrisiken dort seine Heimat. Und Angreifer finden mit JavaScript eine interessante neue Umwelt, denn die Sprache selbst und auch ihre Heimat in Browser und Node.js bringen viele neue Probleme. Und genau da setzt der Vortrag an: die verblüffenden Unterschiede von JavaScript zu anderen Sprachen, wenn es um Security geht. Die Risiken und auch die Besonderheiten von Browsern und anderen JavaScript-Engines wie Node.js. Die Securityimplikationen von JavaScript-Frameworks bishin zu speziellen Problemen wie mXSS, ReDOS und HTML5-Security.
Von flachen Hierarchien zur Networked Company, von losen Netzwerken zur Holacracy, von Managern zur Bossless Organization: IT-Unternehmen diskutieren zurzeit viele Begriffe aus dem NewWork-Umfeld. Warum springt gerade unsere Branche auf diese Konzepte an? Dreht sich alles um den Arbeitsmarkt und die Generation Y, oder reagieren wir auf steigende Komplexität und Dynamik? Welche Folgen hat das auf das Unternehmen und unsere Arbeit? Ein Bericht aus Theorie und Praxis, von Hypes, offensichtlichen und nicht offensichtlichen Fehlern.
Die wichtigste Komponente bei der Entwicklung von Software besteht zu 70 Prozent aus Wasser: den beteiligten Personen. Während wir bei den Komponenten Hard- und speziell Software sehr genau über die Fehler, Probleme und Defekte Bescheid wissen, stehen wir bei der Wetware noch am Anfang – dabei haben wir im Alltag die ganze Zeit mit seltsamen Argumenten, Fehlschlüssen, kognitiven Verzerrungen und seltsamen Effekten in Teams zu tun. Der Talk stellt die häufigsten Streiche vor, die unser Gehirn uns spielt und wie man damit umgehen kann.
Die Diskussion über New Work findet meist entlang der Perks und der Autonomie der Kollegen statt. Aber lässt sich damit alleine Effizienz, Effektivität, Innovation und Adaptionsfähigkeit verbessern? Wie aligne ich die Firma, wenn die Kollegen und ihre Teams autonom arbeiten? Muss ich meine Organisationsform ändern? Scheitere ich an meiner Firmenkultur oder meinen Managern? Ein Bericht aus zehn Jahren Theorie und eigener Praxis.
Wer als Entwickler Führungskraft werden möchte - oder noch schlimmer - von anderen dazu erklärt wird, hat einen langen und schmerzhaften Weg vor sich. Und die Erfolgsquote, das belegen die eigenen Vorgesetzten jeden Tag, ist nicht hoch. Viele gute Pläne und logische Schlussfolgerungen funktionieren in der Praxis nicht mehr, und die kollegiale Unterstützung wird durch Politik ersetzt. Wir erzählen nicht nur unsere Geschichte, sondern auch darüber was heute als gute Führung gilt.
Liquide Rollen statt fixer Positionen
- Warum klassische Positionen –inklusive Führungspositionen – Schaden anrichten
- Wie eine liquide Rollenverteilung in der Praxis aussieht
- Welche Vorrausetzungen braucht es, wie organisiert man Führung und Karriere
Von der Governance-getriebenen Architektur der IT-Entscheider und Architecture Boards kamen wir zur emergenten, teambestimmten Architektur, und von dort über Strategien wie MicroServices zu Organisationsformen, die wir frei anhand unserer Wunscharchitektur definieren. Im Gegensatz zu den sich immer weiter beschleunigenden Architektur- und Technologietrends bewegen sich Team- und Abteilungsstrukturen mit ihrer eigenen Geschwindigkeit - und manchmal auch gar nicht. Ein Bericht aus der Praxis, vom Planen, Scheitern, Lernen und demütiger Architektur.
Wenn ITler Verträge machen steht der Schutz des eigenen Hinterteils im Vordergrund, und in Wahrheit versteht keiner die Konsequenzen des geschriebenen. Am Ende wird er ohnehin nichtig und durch einen Vergleich ersetzt, bei dem Anwälte das Bauchgefühl der Mandanten verhandeln, um nicht bei einem vollständig sachfremden Richter ein blaues Wunder zu erleben. Aber was hilft dann, wenn der Inhalt eines Projektes erst am Ende wirklich feststeht, und die meisten schwierigen Fragen sich erst im Verlauf ergeben?
It's time to deprecate JavaScript. It's security model and the language itself are appalling.
As data moves into the cloud the JavaScript threat is increasing and I believe the only way to fix this is to start all over again. The 14 year old language and security model aren't up to today's threats.
Die modernisierte Fassung der "Management Brainfucks": Warum wehren sich Manager gegen agile Methoden, obwohl diese zu ihrem Vorteil wären? Warum behindern sie uns Entwickler bei der Arbeit mit Formalien, Blaming, naiven Lösungsvorschlägen und Kontrollillusion? Der Talk zeigt die Wurzeln dieses Missverständnisses und wie man sich darausbewegt.
Viele PHP-Applikationen sind über Jahre erfolgreich, haben jede Änderung mitgemacht und sind inzwischen weder wartbar noch entsprechen sie aktuellen Standards. Doch um am Markt zu bestehen braucht man neue Features, und damit einen Rewrite auf ein modernes Framework wie Zend Framework 2, Laravel 4 oder Symfony 2. Aber Rewrites schlagen häufig durch jede Deadline oder ganz fehl, und währenddessen übernimmt die Konkurrenz den Markt. Wie man aus der Rewrite-Falle kommt und verlässlich eine wartbare Version der Software herstellt – das erklärt dieser Talk mit Methoden, Beispielen und Praxiswissen.
In der Softwareentwicklung sind wir schon lange agil, und die Operations-Leute arbeiten mit uns in DevOps-Manier zusammen. Eventuell ist das Product Development nach Lean Startup mit uns verzahnt, und mit viel Glück hat mein Chef eine Management 3.0-Schulung besucht. Trotzdem gibt es noch immer Politik im Unternehmen. Manche Kollegen übernehmen keine Verantwortung. Es gibt Teams oder Abteilungen, die nur eigene Ziele verfolgen und nicht mit anderen kooperieren. Und, ganz ehrlich, eigentlich sollten wir manche Dinge ganz anders machen, aber niemand kümmert sich so richtig darum. Aber wie repariere ich meine Firmenkultur? Wie sorge ich dafür, dass endlich alle mitarbeiten und Verantwortung übernehmen?
Keiner glaubt mehr an die Versprechen aus der IT, weder Druck, Motivation noch ein grösseres Team bringen auch nur etwas Performance. Es gibt viele Fehler in der Software und die Fluktuation geht nach oben. Wie fängt man so ein Projekt ein? Eine Geschichte von den offensichtlichen und nicht so offensichtlichen Dingen, die man dabei berücksichtigen muss - aus dem echten Leben erzählt.
Jeder von uns kennt sie – die alten PHP-Projekte, die vor vielen Jahren entstanden und heute noch eine wichtige Funktion im Unternehmen erfüllen. Und es gibt ebenso viele Ratschläge, mit diesen Applikationen umzugehen: Tests und Continuous Deployment einführen. Kompatibel zu Symfony2 machen oder gleich dahin portieren – oder doch lieber Laravel? Domain-driven Design und Microservices nutzen, durch Node.js, Go, Rust ersetzen. Der Talk zeigt, welche Optionen man hat, welche Probleme sie jeweils mit sich bringen und wie man sich entscheiden kann.
Die großen Consultancies nennen es "Digitale Transformation", Marc Andreessen nennt es "Software eats the World". Eher aus Versehen haben wir IT-ler mit Unix und Internet etwas angestoßen, dass die ganze Wirtschaft - von Handel über Organisationsdesign bis zum Management - durch den Wolf dreht. Mit den Unternehmen schlägt das jetzt wieder auf die Systemadministratoren zurück, und stellt deren Rollen und Positionen in Frage. Im Gegensatz zu den Managern wird es aber vermutlich auch in Zukunft noch relevante Aufgaben für Administratoren geben.
Seit 2009 ist DevOps ein wichtiges Thema auf den IT-Konferenzen, und inzwischen empfehlen auch die großen Beratungshäuser eine DevOps-Strategie. Doch während sich die Tools hoher Popularität erfreuen und Quasistandard wurden, sind Kultur und Organisationsdesign auf der Strecke geblieben. Die Tools alleine realisieren nur einen kleinen Teil des Benefits von DevOps, der große Vorteil entsteht erst mit der Integration von DevOps-Struktur, Organisation und Kultur im Unternehmen zu bekommen. Wie breche ich Silos jenseits von Dev und Ops auf? Wie schaffe ich gemeinsame Ziele über die Abteilungsgrenzen hinaus? Wie mache ich eine verlässliche Testphase bei einem Deploy am Tag? Welche Strukturen von heute stehen DevOps im Weg?
Zappos uses Holacracy with elected team representatives instead of team leads. Netflix says "Hard work is not relevant" and discourages process adherence. Teams at Facebook have every freedom to do whatever they want as long as they have "impact" with their work. Things like management by objectives, strategic goals, matrix or line organisations are discarded.
Why are they doing that? What does that mean for your startup when it reaches the magic upper limit of "it just works" at 35-50 people? Is there a blueprint for a better way? And if you already ended up in a line organisation with management by objectives etc, what would be the benefit of change?
Als JavaScript als Sprache designed wurde stand einfache Objektorientierung, Flexibilität und Mächtigkeit im Vordergrund - der Scope war allerdings, mit der Bearbeitung von HTML-Formularen im Browser, eher beschränkt. Heute gibt es Codebasen mit mehreren Millionen Zeilen Code in JavaScript, und praktisch jedes Problem einer Enterprise-Applikation kann mit JavaScript gelöst werden. Der Talk zeigt welche Wirkung Sprachdesign und Engine von JavaScript auf die Anwendungsfelder von heute hat, welche eigenen Fehlerklassen dadurch entstehen und wie man sie in der praktischen Arbeit umgeht.
Wie erkläre ich einem klassischen Manager, warum Programmierer effizienter werden, wenn sie mit zwei Leuten an der gleichen Aufgabe sitzen? Warum ein Programmierer in 14 Stunden täglich nicht mehr schafft als in 8, warum ein Team schneller wird, wenn man das Programmiergenie entfernt. Warum man effizienter wird, wenn man Low-Prio-Tasks vor High-Prio-Tasks macht und nur 6 von 8 Stunden planen will.
What's the problem with current organisations and complex,dynamic markets? What happens if they stay with static structures when the world moves faster?
Migriert man noch mit dem Spotify-Modell den Monolithen zu MicroServices oder bedient die serverlose Architektur schon das IoT? Wieviele Inverse Conway-Maneuvres braucht man eigentlich, um die papiergetriebene Marketing-Abteilung crossfunktional zum Security-neurotischen Betriebsteam zu bekommen? Gute Ratschläge für die zukünftigen Anforderungen und E-Commerce-Architekturen gibt es viele - aber welche ergibt im eigenen Fall Sinn? Ein Versuch, etwas Klarheit und Übersicht zu schaffen, die konkurrierenden Strategien und ihre Voraussetzungen und Rahmenbedingungen vorzustellen und Wege aufzuzeigen, die passende Architektur zu finden.
Wer als Entwickler Führungskraft werden möchte - oder noch schlimmer - von anderen zu erklärt wird, hat einen langen und schmerzhaften Weg vor sich. Und die Erfolgsquote, das belegen die eigenen Vorgesetzten jeden Tag, ist nicht hoch. Viele gute Pläne und logische Schlussfolgerungen funktionieren in der Praxis nicht mehr, und die kollegiale Unterstützung wird durch Politik ersetzt. Die schönsten instinktiven Fehler, die besten Katastrophen nach Lehrbuch und Methode werden von jemanden vorgestellt, der sie schon alle gemacht hat.
iele Applikationen sind über Jahre erfolgreich gewesen und haben jede Änderung mitgemacht - und sind in Folge unwartbar geworden, und entsprechen längst nicht mehr aktuellen Standards. Doch um weiter am Markt zu bestehen muss man schnell agieren können, also braucht es einen Rewrite auf ein modernes Framework. Aber Rewrites schlagen häufig durch jede Deadline oder ganz fehl, und während des Rewrites muss man auf die Konkurrenz reagieren können. Die Lösung ist ein Continuous Rewrite, der mit der alten Lösung beginnt und bei kontinuierlicher Nutzung mit der neuen Lösung endet. Wir stellen Methoden und Praxiserfahrungen vor.
IT und Management geht wenig bis gar nicht. Und schuld ist Komplexität. Denn IT lebt Komplexität, und klassisches, tayloristisch geprägtes Management weiss nicht, wie es damit umgehen soll. Also wird man sich nicht einig, und die offizielle Welt löst sich völlig von der inoffiziellen, die die Arbeit macht. Warum ist das so?
Wenn der größte Teil der Logik in JavaScript stattfinden, dann findet auch der größere Teil der Sicherheitsrisiken dort seine Heimat. Und Angreifer finden mit JavaScript eine interessante neue Heimat, denn die Sprache selbst und auch Ihre Heimat in Browser und node.js bringen viele neue Probleme. Und genau da setzt der Vortrag an: die verblüffenden Unterschiede von JavaScript zu anderen Sprachen, wenn es um Security geht. Die Risiken und auch die Besonderheiten von Browsern und anderen JavaScript-Engines wie node.js. Die Security-Implikationen von JavaScript Frameworks bishin zu speziellen Problemen wie mXSS, ReDOS und HTML5-Security.
Tools wie JMeter, ab2, WebLOAD oder httperf kennt und nutzt jeder, aber man will nicht die Hand dafür ins Feuer halten, dass es dann auch mit den angestrebten Nutzern produktiv so funktioniert. Mit ein paar Tricks, clever gewählten Use Cases, etwas JMeter und etwas Excel kann man nicht nur eine Aussage über die Performance liefern, sondern auch dafür garantieren, dass es zu 99,99 Prozent so passieren wird.
If you profile your applications, symfonys builtin profiler, the web debug bar and the xhprof bundle provide a lot of service to introspect your application. But what happens if you can't optimize your php code anymore? If there is no clear bottleneck inside the database or in the php code? If the system only slows down under certain, "phase of the moon" circumstances? This talk shows profiling solutions beyond sql-logs, xdebug and xhprof. It demonstrates how to get an overview of everything that happens inside your webserver or database nodes. Tools like cachegrind, callgrind, sysprof, mytop and perf are shown.
Wenn ITler Verträge machen steht der Schutz des eigenen Hinterteils im Vordergrund, und in Wahrheit versteht keiner die Konsequenzen des geschriebenen. Am Ende wird er ohnehin nichtig und durch einen Vergleich ersetzt, bei dem Anwälte das Bauchgefühl der Mandanten verhandeln, um nicht bei einem vollständig sachfremden Richter ein blaues Wunder zu erleben. Aber was hilft dann, wenn der Inhalt eines Projektes erst am Ende wirklich feststeht, und die meisten schwierigen Fragen sich erst im Verlauf ergeben?
It's time to deprecate JavaScript. It's security model and the language itself are appalling.
As data moves into the cloud the JavaScript threat is increasing and I believe the only way to fix this is to start all over again. The 14 year old language and security model aren't up to today's threats.
Die modernisierte Fassung der "Management Brainfucks": Warum wehren sich Manager gegen agile Methoden, obwohl diese zu ihrem Vorteil wären? Warum behindern sie uns Entwickler bei der Arbeit mit Formalien, Blaming, naiven Lösungsvorschlägen und Kontrollillusion? Der Talk zeigt die Wurzeln dieses Missverständnisses und wie man sich darausbewegt.
Viele PHP-Applikationen sind über Jahre erfolgreich, haben jede Änderung mitgemacht und sind inzwischen weder wartbar noch entsprechen sie aktuellen Standards. Doch um am Markt zu bestehen braucht man neue Features, und damit einen Rewrite auf ein modernes Framework wie Zend Framework 2, Laravel 4 oder Symfony 2. Aber Rewrites schlagen häufig durch jede Deadline oder ganz fehl, und währenddessen übernimmt die Konkurrenz den Markt. Wie man aus der Rewrite-Falle kommt und verlässlich eine wartbare Version der Software herstellt – das erklärt dieser Talk mit Methoden, Beispielen und Praxiswissen.
In der Softwareentwicklung sind wir schon lange agil, und die Operations-Leute arbeiten mit uns in DevOps-Manier zusammen. Eventuell ist das Product Development nach Lean Startup mit uns verzahnt, und mit viel Glück hat mein Chef eine Management 3.0-Schulung besucht. Trotzdem gibt es noch immer Politik im Unternehmen. Manche Kollegen übernehmen keine Verantwortung. Es gibt Teams oder Abteilungen, die nur eigene Ziele verfolgen und nicht mit anderen kooperieren. Und, ganz ehrlich, eigentlich sollten wir manche Dinge ganz anders machen, aber niemand kümmert sich so richtig darum. Aber wie repariere ich meine Firmenkultur? Wie sorge ich dafür, dass endlich alle mitarbeiten und Verantwortung übernehmen?
Keiner glaubt mehr an die Versprechen aus der IT, weder Druck, Motivation noch ein grösseres Team bringen auch nur etwas Performance. Es gibt viele Fehler in der Software und die Fluktuation geht nach oben. Wie fängt man so ein Projekt ein? Eine Geschichte von den offensichtlichen und nicht so offensichtlichen Dingen, die man dabei berücksichtigen muss - aus dem echten Leben erzählt.
Jeder von uns kennt sie – die alten PHP-Projekte, die vor vielen Jahren entstanden und heute noch eine wichtige Funktion im Unternehmen erfüllen. Und es gibt ebenso viele Ratschläge, mit diesen Applikationen umzugehen: Tests und Continuous Deployment einführen. Kompatibel zu Symfony2 machen oder gleich dahin portieren – oder doch lieber Laravel? Domain-driven Design und Microservices nutzen, durch Node.js, Go, Rust ersetzen. Der Talk zeigt, welche Optionen man hat, welche Probleme sie jeweils mit sich bringen und wie man sich entscheiden kann.
Die großen Consultancies nennen es "Digitale Transformation", Marc Andreessen nennt es "Software eats the World". Eher aus Versehen haben wir IT-ler mit Unix und Internet etwas angestoßen, dass die ganze Wirtschaft - von Handel über Organisationsdesign bis zum Management - durch den Wolf dreht. Mit den Unternehmen schlägt das jetzt wieder auf die Systemadministratoren zurück, und stellt deren Rollen und Positionen in Frage. Im Gegensatz zu den Managern wird es aber vermutlich auch in Zukunft noch relevante Aufgaben für Administratoren geben.
Seit 2009 ist DevOps ein wichtiges Thema auf den IT-Konferenzen, und inzwischen empfehlen auch die großen Beratungshäuser eine DevOps-Strategie. Doch während sich die Tools hoher Popularität erfreuen und Quasistandard wurden, sind Kultur und Organisationsdesign auf der Strecke geblieben. Die Tools alleine realisieren nur einen kleinen Teil des Benefits von DevOps, der große Vorteil entsteht erst mit der Integration von DevOps-Struktur, Organisation und Kultur im Unternehmen zu bekommen. Wie breche ich Silos jenseits von Dev und Ops auf? Wie schaffe ich gemeinsame Ziele über die Abteilungsgrenzen hinaus? Wie mache ich eine verlässliche Testphase bei einem Deploy am Tag? Welche Strukturen von heute stehen DevOps im Weg?
Zappos uses Holacracy with elected team representatives instead of team leads. Netflix says "Hard work is not relevant" and discourages process adherence. Teams at Facebook have every freedom to do whatever they want as long as they have "impact" with their work. Things like management by objectives, strategic goals, matrix or line organisations are discarded.
Why are they doing that? What does that mean for your startup when it reaches the magic upper limit of "it just works" at 35-50 people? Is there a blueprint for a better way? And if you already ended up in a line organisation with management by objectives etc, what would be the benefit of change?
Als JavaScript als Sprache designed wurde stand einfache Objektorientierung, Flexibilität und Mächtigkeit im Vordergrund - der Scope war allerdings, mit der Bearbeitung von HTML-Formularen im Browser, eher beschränkt. Heute gibt es Codebasen mit mehreren Millionen Zeilen Code in JavaScript, und praktisch jedes Problem einer Enterprise-Applikation kann mit JavaScript gelöst werden. Der Talk zeigt welche Wirkung Sprachdesign und Engine von JavaScript auf die Anwendungsfelder von heute hat, welche eigenen Fehlerklassen dadurch entstehen und wie man sie in der praktischen Arbeit umgeht.
Wie erkläre ich einem klassischen Manager, warum Programmierer effizienter werden, wenn sie mit zwei Leuten an der gleichen Aufgabe sitzen? Warum ein Programmierer in 14 Stunden täglich nicht mehr schafft als in 8, warum ein Team schneller wird, wenn man das Programmiergenie entfernt. Warum man effizienter wird, wenn man Low-Prio-Tasks vor High-Prio-Tasks macht und nur 6 von 8 Stunden planen will.
What's the problem with current organisations and complex,dynamic markets? What happens if they stay with static structures when the world moves faster?
Migriert man noch mit dem Spotify-Modell den Monolithen zu MicroServices oder bedient die serverlose Architektur schon das IoT? Wieviele Inverse Conway-Maneuvres braucht man eigentlich, um die papiergetriebene Marketing-Abteilung crossfunktional zum Security-neurotischen Betriebsteam zu bekommen? Gute Ratschläge für die zukünftigen Anforderungen und E-Commerce-Architekturen gibt es viele - aber welche ergibt im eigenen Fall Sinn? Ein Versuch, etwas Klarheit und Übersicht zu schaffen, die konkurrierenden Strategien und ihre Voraussetzungen und Rahmenbedingungen vorzustellen und Wege aufzuzeigen, die passende Architektur zu finden.
Wer als Entwickler Führungskraft werden möchte - oder noch schlimmer - von anderen zu erklärt wird, hat einen langen und schmerzhaften Weg vor sich. Und die Erfolgsquote, das belegen die eigenen Vorgesetzten jeden Tag, ist nicht hoch. Viele gute Pläne und logische Schlussfolgerungen funktionieren in der Praxis nicht mehr, und die kollegiale Unterstützung wird durch Politik ersetzt. Die schönsten instinktiven Fehler, die besten Katastrophen nach Lehrbuch und Methode werden von jemanden vorgestellt, der sie schon alle gemacht hat.
iele Applikationen sind über Jahre erfolgreich gewesen und haben jede Änderung mitgemacht - und sind in Folge unwartbar geworden, und entsprechen längst nicht mehr aktuellen Standards. Doch um weiter am Markt zu bestehen muss man schnell agieren können, also braucht es einen Rewrite auf ein modernes Framework. Aber Rewrites schlagen häufig durch jede Deadline oder ganz fehl, und während des Rewrites muss man auf die Konkurrenz reagieren können. Die Lösung ist ein Continuous Rewrite, der mit der alten Lösung beginnt und bei kontinuierlicher Nutzung mit der neuen Lösung endet. Wir stellen Methoden und Praxiserfahrungen vor.
IT und Management geht wenig bis gar nicht. Und schuld ist Komplexität. Denn IT lebt Komplexität, und klassisches, tayloristisch geprägtes Management weiss nicht, wie es damit umgehen soll. Also wird man sich nicht einig, und die offizielle Welt löst sich völlig von der inoffiziellen, die die Arbeit macht. Warum ist das so?
Wenn der größte Teil der Logik in JavaScript stattfinden, dann findet auch der größere Teil der Sicherheitsrisiken dort seine Heimat. Und Angreifer finden mit JavaScript eine interessante neue Heimat, denn die Sprache selbst und auch Ihre Heimat in Browser und node.js bringen viele neue Probleme. Und genau da setzt der Vortrag an: die verblüffenden Unterschiede von JavaScript zu anderen Sprachen, wenn es um Security geht. Die Risiken und auch die Besonderheiten von Browsern und anderen JavaScript-Engines wie node.js. Die Security-Implikationen von JavaScript Frameworks bishin zu speziellen Problemen wie mXSS, ReDOS und HTML5-Security.
Tools wie JMeter, ab2, WebLOAD oder httperf kennt und nutzt jeder, aber man will nicht die Hand dafür ins Feuer halten, dass es dann auch mit den angestrebten Nutzern produktiv so funktioniert. Mit ein paar Tricks, clever gewählten Use Cases, etwas JMeter und etwas Excel kann man nicht nur eine Aussage über die Performance liefern, sondern auch dafür garantieren, dass es zu 99,99 Prozent so passieren wird.
If you profile your applications, symfonys builtin profiler, the web debug bar and the xhprof bundle provide a lot of service to introspect your application. But what happens if you can't optimize your php code anymore? If there is no clear bottleneck inside the database or in the php code? If the system only slows down under certain, "phase of the moon" circumstances? This talk shows profiling solutions beyond sql-logs, xdebug and xhprof. It demonstrates how to get an overview of everything that happens inside your webserver or database nodes. Tools like cachegrind, callgrind, sysprof, mytop and perf are shown.
JavaScriptDays: vom 10 Tage Hack zur ersten Universalsprache?
1. 10-Tage-Hack
oder
U!"v#r$%&$pr%'(#?
Mittwoch, 13. März 13
Hallo Zusammen!
2. Er$)#r T%&* !%'(
+#r M"))%,$p%-$# ...
Mittwoch, 13. März 13
Tja, da habe ich den ersten Talk nach der Mittagspause, das ist immer so mittelsuper.
3. Mittwoch, 13. März 13
Die Leute kommen erholt, entspannt wieder in den Talk .
Mal ehrlich, wer wäre jetzt lieber im Biergarten?
Ja, genau. Wollen wir los? Wir haben noch 30 Minuten. Wer ist alles aus Bayern? Ok, das heist
Zeit für 2 Mass. Wer ist aus Norddeutschland? Es gibt auch Halblitergläser, und ja, das
nennen die hier tatsächlich „kleines Bier“.
4. K#.!/)#:
w#!",#r (%r)#r C/!)#!)
Mittwoch, 13. März 13
Ok, das würde aber der Verlag nicht mögen. Aber das macht nichts, deshalb ist es ja eine
keynote. Es erwartet also keiner, dass toller neuer Content kommt.
5. K#.!/)#:
0#(r $'(&#'()# M-$"*
Mittwoch, 13. März 13
Man könnte zum Beispiel einfach mehr schlechte Musik in seinen Vortrag einbauen. Check.
6. JavaScript
D#r z-rü'*,#b&"#b#!#
*&#"!# Br-+#r
v/! J%v%
Mittwoch, 13. März 13
Eigentlich sollte der Talk anders heissen ...
7. #aufschrei
Mittwoch, 13. März 13
nach der Aufschrei-Debatte, und insbesondere nach dem PHPness-Skandal des Verlages hier
habe ich davon abstand genommen, und mich um political correctness bemüht. Also, zweiter
versuch ...
8. JavaScript
D"# z-rü'*,#b&"#b#!#
*&#"!# S'(w#$)#r
v/! J%v%
Mittwoch, 13. März 13
Daraufhin korrekt die feminine Form gewählt ...
10. JavaScript
W%r-0 +#r +//f#
*&#"!# Br-+#r v/! J%v%
%0 E!+# +/'( $"#,)#
Mittwoch, 13. März 13
Also, eigentlich erzähle ich hier auch, warum der kleine Bruder von Java am Ende doch siegte.
Damit die Dramaturgie stimmt werden ich ihn also vorher massiv schlecht machen.
11. W%$ ,"b) +#0 +#!!
üb#r(%-p) +%$ R#'()
+%$ z- b#-r)#"&#!?
Mittwoch, 13. März 13
Da stellt sich natürlich die frage, ob ich das überhaupt darf? Ist der mann da vorne überhaupt
qualifiziert? Was bildet der sich ein?
12. Johann-Peter Hartmann
Grü!+#r & CTO
Mittwoch, 13. März 13
Ich bin CTO bei Mayflower, aber eigentlich der klassische Hacker-Become-Manager-der-
aber-eigentlich-lieber-wieder-Hacker-wäre. Kennt ihr bestimmt welche von. Ich bin da auch
derjenige, der vor ein paar Jahren das Javascript mit in den Claim wollte.
13. Mittwoch, 13. März 13
Wirklich Ahnung habe ich nur von PHP. Da war ich schon vor 13 Jahren als Speaker unterwegs.
Wer hat ebenfalls einen Migrationshintergrund in dieser Beziehung?
14. W%$ ,"b) +#0 +#!!
üb#r(%-p) +%$ R#'()
+%$ z- b#-r)#"&#!?
Mittwoch, 13. März 13
Faktisch kann man die Frage nach dem Recht also klar beantworten. Nein, dem gibt eigentlich
keiner das Recht.
15. W%$ ,"b) +#0 +#!!
üb#r(%-p) +%$ R#'()
+%$ z- b#-r)#"&#!?
Mittwoch, 13. März 13
eher wenig.
Faktisch kann man die Frage nach dem Recht also klar beantworten. Nein, dem gibt eigentlich
keiner das Recht.
16. JavaScript
2003 Rich Internet Applications.
IE only.
2005
Mittwoch, 13. März 13
Web 2.0 Security
BrowserSecurity
So ein bischen JavaScript habe ich allerdings gemacht - zB 2002 einen javaScript WYSIWYG-
Editor (ie only) geschrieben, und 2004 auch Rich Internet Applications, damals für die
HypoVereinsbank. Richtig auf den Radar kam JavaScript dann im Rahmen von Web 2.0 Security
und SektionEins. Da kannte ich mich wieder gut aus, werdet Ihr später merken. Ich bin also
alt, aber nicht nur ich, sondern auch JavaScript. Wie am ersten Beispiel gut zu erkennen.
17. Mittwoch, 13. März 13
JavaScript hat einen langen Weg hinter sich, und auf der Strecke hat sich viel getan.
Ich weiss nicht wie es Euch geht, aber ich kann mich nicht an das Jahr erinnern, wenn ich nur
die Jahreszahl höre. Aber spiel mir ein Lied aus dem Jahr vor, und ich weiß wieder, was zu
dem Zeitpunkt los war. Also gibt es die Geschichte von JavaScript eingeordnet in schlechte
Musik.
18. 1995
Hey, Brendan! Willst Du für uns
Scheme für Browser entwickeln?
Mittwoch, 13. März 13
Das war 1995. Da spielte Techno, in diesem Fall Kirmestechno, noch eine echte Rolle.
Wer kennt den jungen Herrn unten rechts?
19. 1995 W/-(%,
'//&, $'(#0#!
(define (sum-with x)
(lambda (y) (+ y
x)))
Mittwoch, 13. März 13
Brendan Euch war hingegen eine coole Sau, und hat deshalb funktional entwickelt - in
Scheme, das ist ein Lisp-Dialekt.
20. 1995
Mittwoch, 13. März 13
Und genau das war auch der Grund, warum sich beide handelseinig wurden ...
21. 1995
Uhm, Brendan...
Scheme ... also ... wir haben wen
neues kennengelernt ...
Mittwoch, 13. März 13
In der Zwischenzeit hatte allerdings Netscape jemand anders kennengelernt ..
22. 1995
.. wäre Java-Syntax möglich?
Mittwoch, 13. März 13
Und er musste den Syntax einmal komplett durch die Mangel nehmen.
23. 1995
Hr0pf.
com.sun.awt.getFactoryFactoryFactory()
Mittwoch, 13. März 13
So richtig super fand er das nicht, und er hat viele der grundlegenden Konzepte - etwa die
einfache Objektorientierung, die von Self geerbt wurde - beibehalten. Nur eben weniger
klammern. Dafür bleibt Prototypenbasierte Vererbung.
24. 1995
10 DAYS
Mittwoch, 13. März 13
Apropos Prototypenbasierte Vererbung. Er bekam genau 10 Tage Zeit, die Welt - in diesem
Fall unsere - als Prototyp zu bauen.
25. 1995
• Y#%r 2000 B-,$
• $)r"!, = pr"0")"v#
• S)r"!, = /b1#')
Mittwoch, 13. März 13
Aber die neue Bekanntschaft von Netscape - auf den Namen Sun hörend - setzte sich durch,
und sowohl Javaesquer Syntax als auch Name setzte sich durch. Und ein paar lustige Java-
Eigenheiten, wie parallele Primitive und Objekt-Typen für die gleiche Aufgabe wurden
übernommen, mit impliziter Konvertierung immerhin - wie auch der Jahr-2000-Bug. Siehe
das Logo oben, man wollte es tatsächlich als Java-Ableger vermarkten.
26. 1995
[TM]
Mittwoch, 13. März 13
Ein weiterer Effekt: Bis heute gehört die Trademark JavaScript Oracle.
27. 1995
Pr/)/)2 === Pr/+-*)
Mittwoch, 13. März 13
Aber wir hätten es ihm sagen können - wenn die Demo funktioniert ist sie das Produkt.
Da stand er jetzt. Eigentlich wollte er Scheme machen, und eigentlich war es nur ein Prototyp
28. 1995
Mittwoch, 13. März 13
Durch das Timing konnte Sun unmittelbar in den zweiten Release von Netscape springen. Die
erste Beta vom Netscape Navigator hatte die Sprache noch als Livescript drin. Erst mit Beta 4
hiess es JavaScript, und dort war auch Java mit dabei. Ich habe das damals miterlebt, war aber
eigentlich wegen einer ganz anderen Neuerung nervös - es wurden auch Frames eingeführt,
das klang damals tatsächlich wie ein brillianter Plan.
29. J%v% J%v%S'r"p)
K/0p/!#!)#! S'r"p)#
A!w#!+-!,#! H%'*$
Pr/f#$$"/!#&&# H/bb.%!w#!+#r-
S/3w%r# S/3w%r#
Mittwoch, 13. März 13
Sun und Netscape hatten aber durchaus einen Plan, als sie beide Sprachen gleichzeitig
einführten. Java sollte das Profi-Tool werden, mit dem Schwerpunkt auf Applikationen und
Komponenten, und Javascript das kleine Hackertool für den Feierabendentwickler.
30. E"!f%'( F&4"b#&
Mä'()", S'(!#&&
Mittwoch, 13. März 13
Und genau daher kamen auch die Anforderungen, die Marc Andresen und co an Brendan
stellten. Mach es nicht zu kompliziert. Weil klassische - also klassenbasierte - OO so
kompliziert ist wurde zB auf das Modell von Self gegangen.
31. 1996
Mittwoch, 13. März 13
1996 brachte einen neuen Spieler mit an bord, an dem das Internet vorher - zugunsten von
MSN, AOL und Compuserv - vorbeigezogen war. Der hatte schon vorher einen Browser, aber
der konnte noch kein JavaScript. Der neue auch nicht, weil der Name wie gesagt Sun gehörte
- er konnte deshalb JScript.
32. K/0p%)"b#& "! +#! */0"$'(#! D"!,#!,
"!*&. B-,$...
... %b#r !"'() +"# ,&#"'(#! F#%)-r#$
Mittwoch, 13. März 13
Da wurde der Grundstein für die IE6-Hölle gelegt, das konzept war schon damals klar -
eigentlich schon kompatibel, aber nicht soweit, dass es nützlich wäre.
33. 1996
ANSI
JavaScript ISO
JScript IETF
EcmaScript ECMA
Mittwoch, 13. März 13
In der zwischenzeit hatte man spitzbekommen, dass die Sache mit dem Web eine grössere ist
- und deshalb mit der w3c spontan eine eigene Standardisierungsorganisation gegründet. zu
diesem Zeitpunkt wollte die sich aber nur drum kümmern, dass der Standard etabliert wird,
nicht vom wem.
34. Browser
War
Mittwoch, 13. März 13
Nachdem man sich so schön auf einen Standard geeinigt hatte, konnte man sich ja wieder
streiten - der Browserwar begann. IE jagte mit allen möglichen Tricks, die noch Jahrzehnte
später Gerichte beschäftigen, Netscape den Markt ab. Und am Ende war IE der neue Standard.
35. 1999
Mittwoch, 13. März 13
Und Microsoft war wieder in der gewohnten Umgebung. Wenn man der Standard ist, kann man auch welche setzen.
Und genau das passierte. Outlook-Developer wollen im IE 5.0 einen Background-Request im Hintergrund machen
können, weil sie es für Outlook Web Access brauchten.
36. 1999
XMLHttpRequest
Mittwoch, 13. März 13
Also erschufen sie ein Wunderwerk aus der Höllentechnologie ActiveX und einem Interface
der MSXML2, mit dem man im Hintergrund XML-Requests machen konnte. Und weil es eine
typische Windows-API war, hatte die open-Methode auch gleich 4 unterschiedliche
Signaturen.
37. 2000
XMLHttpRequest
Mittwoch, 13. März 13
Aber trotzdem - es war eine gute idee, eigentlich. Deshalb legte Mozilla im Jahr drauf nach
und implementierte auch eine eigene Variante - analog, aber als JavaScript-Objekt, nicht als
ActiveX, denn das gab es in diesem Browser ja glücklicherweise nicht.
38. Mittwoch, 13. März 13
Leider war es nicht ganz perfekt, deshalb musste man noch ein bischen repariere ...
41. 2004
Mittwoch, 13. März 13
Dass passte ganz gut, denn in diesem Jahr redete Tim O‘Reilly über das Web 2.0 - eigentlich als Beschreibung
für dynamische Internetapplikationen. Mit begriffen wie RIA und SPA spielte aber javascript schnell eine grosse
rolle
42. 2005
Mittwoch, 13. März 13
Noch mehr Rückenwind gab es ein Jahr später: Jesse James Garret denkt sich AJAX als Bezeichnung aus
- für etwas, was schon 6 Jahre vorher möglich war. Deshalb haben wir Developer auch alle gesagt „Das
machen wir doch ohnehin schon“
Wer hat das auch gesagt?
43. 2006
A,# /f L"br%r"#$
Mittwoch, 13. März 13
Trotzdem war das wegen der unterschiedlichen xmlhttprequest-Interfaces noch eine PITA.
also wurden libraries dafür erfunden. Framework-basierte Entwicklung (extjs, jquery, ... ) wird
mainstream
44. 2009
Mittwoch, 13. März 13
2009 wird node.s veröffentlich, und auf einmal ist Javascript nicht nur sinnvoll serverfähig -
das war schon zu netscapes livescript-zeiten so - sondern beantwortet mit events auch ein
akutes problem: wie werde ich responsiv?
45. 2011
A,# /f Fr%0#w/r*$
Mittwoch, 13. März 13
2011 begann dann das Age of Frameworks. Natürlich gab es die auch schon vorher, aber
jetzt sollte die ganze Applikation aus Javascript kommen, und nicht nur ein Teil.
46. Mittwoch, 13. März 13
Und wo sind wir heute? Da fragen wir doch mal die Jungs von Redmonk, die Statistik auf Basis
von echten Diskussionen und echte Commits - konkret Stackoverflow und Github machen.
Die Statistik ist vom Januar. In welcher Ecke vermutet Ihr Javacript?
47. Mittwoch, 13. März 13
Genau, offensichtliche Frae - ganz rechts oben, weniger Fragen als Java auf Stackoverflow,
dafür mehr Lösungen auf Github. Das ist ja mal ein gutes Verhältnis
49. E!)#rpr"$# J%v%S'r"p)
Mittwoch, 13. März 13
JavaScript ist endlich im Enterprise angekommen! Dann kann ja nichts mehr schiefgehen.
Also fast nichts. Fragen wir doch mal die Jungs aus der Enterprise direkt.
51. Mittwoch, 13. März 13
Warum ist das so? weil alle Zahlen float sind, und float tickt eben so, wie auch in jeder
anderen sprache. Es gibt eben kein Integer. Was es aber gibt sind Bitoperatoren. Das heisst
intern gibt es wieder, für einen kurzen Moment, integers - es wird nur jeweils gewechselt.
Und auch schleifenvariablen, Iteratoren etc sind immer Floats als werte.
52. Mittwoch, 13. März 13
Also Leerstring ist nicht 0 als String, aber 0 als Zahl identisch mit beidem?
54. Mittwoch, 13. März 13
Und die Reise geht weiter ... null ist ein objekt, aber gleichzeitig äquivalent undefined.
Mit NaN gibt es sogar eine Entität, die niemals identisch zu sich selbst ist ...
55. E!)#rpr"$# J%v%S'r"p)??
Mittwoch, 13. März 13
Man merkt der Sprache also an, dass sie in 10 Tagen geschaffen wurde. Es gibt noch viele
andere beispiele - zum Beispiel die Verwendung von with oder eben dem == vergleich.
Wurde das eigentlich hier auf der Konferenz schon erzählt? Wenn noch nicht: das kommt
bestimmt noch :-)
56. Mittwoch, 13. März 13
DOM
Ausserdem hat JavaScript Browser die schlechteste API der Welt.
Ebenfalls als spontaner Hack im Rahmen von Netscape 2 entstanden,
dann zu intermediate DOM aufgebohrt, dann von Microsoft erweitert,
dann vom w3c standardisiert.
57. J#+#r Br/w$#r $-pp/r)#+ -!)#r$'("#+&"'( v"#&
A-'( ,#r!# 0%& b-,,. ...
... /+#r %bwär)$*/0p%)"b#& b-,,..
S)%!+%r+"$"#r-!, *%0 #r$) $pä)
S/ -0f%!,r#"'(, +%$$ S#'-r"). *%p-)) ,#,%!,#! "$).
Mittwoch, 13. März 13
Das hat zur Folge, dass DOM nicht nur mit jede Browsertypen, sondern auch nach Version
unterschiedlich supported wird. Gerne mit Fehlern, die dann aber für Kompabilität
dringelassen werden. Die Standardisierung auf einen gemeinsamen Level gab es erst mit der
dritten version. Die APIs sind inzwische so komplex, dass jede Änderung an DOM praktisch
neue Security-Probleme impliziert.
58. S#'-r").?!
Mittwoch, 13. März 13
Security: Fuzzer (Das sind scanner, die nach crashes suchen) finden mit jedem Algorithmus
neue Bugs in allen Browsern. Security und JavaScript ist eh ein eigenes Thema.
59. Sp#"'(#r
== C/+#
== D%)#!
von Neumann-Architektur
Mittwoch, 13. März 13
1945 hat John von Neumann die von Neumann-Architektur entwickelt. Das heisst im
wesentlichen, dass es eine CPU gibt, einen Datenbuss und einen Speicher - und in diesem
Speicher liegen Daten und der ausführbare code.
60. Ursache für ...
•B-ff#r Ov#r6/w$
•I!)#,#r Ov#r6/w$
80%
Mittwoch, 13. März 13
•F/r0%) S)r"!, B-,$
•U$# %3#r Fr##
Dieses Konstrukt sorgt bei Programmiersprachen, bei denen man selbst den Speicher
managen muss für einen grossen Teil der Bugs - 80% der Security-Bugs von 1990 bis 2000
gehen auf diese Konstruktion - Bugs wie oben, bei denen Daten zu Code werden, weil es für
die CPU das gleiche ist.
61. JavaScript
Größte Attack Surface ever:
•2.5 Milliarden Clients
•1 Milliarde Smartphones
•Private Daten im Browser
•Bankdaten im Browser
•Milliardenunternehmen
Mittwoch, 13. März 13
Mit JavaScript haben die die Programmiersprache mit der größten Angriffsfläche der Welt. Es
gibt Milliarden von Clients, und inzwischen gehen alle wichtigen persönlichen Daten über ihn.
Und nicht nur die persönlichen - auch viele Firmendaten sind inzwischen zum Teil
ausschliesslich im Web zu finden. Wer nutzt Google Calendar?
62. D/*-0#!)
== C/+#
== D%)#!
Mittwoch, 13. März 13
Jetzt hätte man erwartet, dass man aus dem C-Problem gelernt hat, und Daten und Code
nicht vermischt. Aber nein - es wird noch schlimmer. Darstellung ist Code und Daten
zugleich. Es wurde einfach in die Dokumentenbeschreibungssprache hineingefriemelt.
63. Ursache für ...
•S#$$"/! R"+"!,
•XSS
•CSRF
•J%v%S'r"p) H7%'*"!,
80%
Mittwoch, 13. März 13
•C&"'*1%'*"!,
Und da sind wir bei der Ursache für die meisten Bugs der letzten 10 Jahre. Nur wegen dieses
Umstandes gibt es nämlich Attacken wie Session Riding, XSS, CSRF, JavaScript Hijacking,
Clickjacking etc.
64. JavaScript
„H#., "'( 4#'-)# +%$ üb#r%&& für D"'(!“
•"! #"!#0 #",#!#! T%, <$'r"p)>!
•0") 4)#r!#0 S/-r'#-8&#$!
•"! Ur&$ 0") 1%v%$'r"p)!
•I! S).&#$(##)$ 0") 4pr#$$"/!()!
•"! A))r"b-)#! %&$ Ev#!)!
Mittwoch, 13. März 13
Die Vermischung ist ja schon schlimm genug, aber JavaScript geht noch einen Schritt weiter.
•
Es will nämlich code überall im Dokument ausführen können.
65. JavaScript
„E$ 0%'() %-'( !"'()$ w#!! D- D"'(
v#r)"pp$), "'( 4#'-)# +%$ )r/9+#0!“
<IMG SRC="jav	ascript:alert('XSS');">
<BODY onload!#$%&()*~+-_.,:;?@[/|]^`=alert("XSS")>
<<SCRIPT>alert("XSS");//<</SCRIPT>
<STYLE>@import'javascript:alert("XSS")';</STYLE>
Mittwoch, 13. März 13
Und es ist noch entgegenkommend - wenn man es mal anders schreibt, hey, kein Problem,
es wird trotzdem ausgeführt. Beispiele ...
Warum ist das so? Bei Dokumenten will man das. Auch wenn das Dokument nicht sauber oder
syntaktisch korrekt ist, trotzdem will man etwas sinnvolles darstellen. Nur passiert das dann
eben auch bei JavaScript.
66. JavaScript
„Fü(& D"'( #"!f%'(
w"# z-(%-$#, r"'()# #$
D"r #"! w"# #$ D"r
p%$$).“
[
Mittwoch, 13. März 13
Und damit man mit dem Code alles machen kann, gib JavaScript einem gleich die entsicherte
Waffe in die Hand - man darf alles überschreiben, auch Systemfunktionen - im Beispiel alert
- bishin zu [ - aka Array.prototype.constructor
67. JavaScript
„W#!! D"r w%$ f#(&) -
"'( (%b +% !/'( w%$“
•A')"v#X
•F&%$(
•PDF
•J%v%
•+ JS "! +#! P&-,"!$ $#&:)
Mittwoch, 13. März 13
Damit aber nicht genug - wenn einem dies nicht reicht, dann hat man gleich auch Zugriff auf
•
den Rest der Browserwelt. ActiveX, Flash, PDF, Java können über JavaScript gesteuert werden,
und die ersten drei implementieren sogar noch ein eigenes Javascript.
68. JavaScript
„A(, +"# %&)#! B-,$ $)#(#! +% %-'( !/'(
r-0, w#!! D- +"# br%-'($)“
•P&-,"!-b%$"#r)# Cr%$(#$
•D/0-b%$"#r)# Cr%$(#$
•U$# %3#r fr## ;p&/")$
•H#%p Spr%."!,
•H#%p F#!, S(-"
Mittwoch, 13. März 13
Und natürlich ist der Browser in C geschrieben, das heisst, die alten Turing-Bugs sind auch
noch alle da. Und hier sind wir an genau der Stelle, warum die NSA und Konsorten heute
6stellige Zahlen für Browserbugs zahlen - an dieser Stelle habe ich das System unter
kontrolle.
69. JavaScript
„W#!! D- H"&f# br%-'($) - D- <!+#$) 0"'(
üb#r%&&“
•S*2#
•A+"-0
•L/*%&# HTML-8&#$
•B#"$p"#&: D#$*)/p-8&#*&%-
•B#"$p"#&: S*2#-W-r0
Mittwoch, 13. März 13
Mit dem Browser hört die Reise aber noch nicht auf. Inzwischen findet sich JavaScript überall,
zum Beispiel auch in Chats wie Skype oder Adium. Und das ist JavaScript-Code, der im
Lokalen Scope läuft, und wie lokale Files ganz andere Rechte hat. Man kann damit direkt Files
aus dem Desktop auslesen, auch die letzten Skype-Würmer und Bugs basierten auf HTML/
JavaScript.
70. JavaScript
„U!+ "'( f%!,# ,#r%+# #r$) %! ...“
•8&#-API
•G#/&/'%)"/!
•H.br"+-M/b"&#
•C%0#r%
•C/!)%')$
•...
Mittwoch, 13. März 13
Und was macht man mit so einer fahrlässigen Infrastruktur? Man entsichert die Waffe, und
gibt ihr über verschiedene APIs zugriff auf Dateien, die Geo-Location - und inzwischen über
Hybrid-Mobile Applications aus Phonegap etc auch Zugriff auf die Kamera und die Kontakte.
71. W"&& w"r*&"'( 1#0%!+ #"!# Spr%'(#,
0") +#r 0%! $/ &#"'() -!+ $/ $'(!#&&
$/ v"#& f%&$'( 0%'(#! *%!!?
Mittwoch, 13. März 13
Und da stellt sich die Frage, warum sollte jemand so eine sprache wollen. Eine Sprache, mit
der man so schnell so dermassen viel kaputt machen kann.
72. J%, ,#!%- +%$ "$)
+#r P-!*).
Mittwoch, 13. März 13
Und genau darum geht es bei JavaScript. Die Nachteile bei Security sind die Vorteile von
heute. Die Reichweite, die Flexibilität, die Mächtigkeit - deshalb ist es so erfolgreich.
73. =0# )/ M%r*#)
1994: 5 Jahre
2004: 3 Monate
Mittwoch, 13. März 13
Es hat sich in der Welt draussen nämlich etwas geändert - sie ist schneller geworden. Die
Mittlere Time to Market ist um Faktor 12 schneller geworden, durch Ursachen wie :
Globalisierung, Computer und Automatisierung. (Zahlen von Agile42, mir fehlen welche für
Software, aber die sollten aktuell noch schärfer aussehen)
74. S'r-0
C/!)"!-/-$ D#p&/.0#!)
L#%! S)%r)-p
10 D#p&/.$ % D%.
30 F#%)-r#$/W/'(#
Mittwoch, 13. März 13
Und diese Beschleunigung ist auch genau der grund, warum es in unserer Welt nicht mehr
nur agile Methoden mit zweiwöchentlichen Releases gibt, sondern auch permanente
Weiterentwicklung, Initiale Produkte aus Learn Startup die nach einem Wochenende
gelaunched werden, Firmen die 30 Deploys an einem Tag oder 30 Features in der Woche in
Produktion bringen.
75. JavaScript wurde als
Einsteigersprache für
schnelle und einfache
Lösungen geschaffen
Mittwoch, 13. März 13
Und genau für solche Anforderungen wurde JavaScript geschaffen. Zu dem Zeitpunkt zwar um
Einsteiger zu adressieren, aber genau heute zahlen sich diese Entscheidungen aus.
76. E"!f%'( F&4"b#&
Mä'()", S'(!#&&
Mittwoch, 13. März 13
Genau eine Sprache mit diesen Eigenschaften braucht es.
77. F#%)-r#$
•sehr mächtige Sprache
(JSON)
•einfache Objektorientierung
•Script-Sprache!
•compiliert sehr schnell
Mittwoch, 13. März 13
Beispiele: Einfache Objektorientierung, sehr mächtige Sprache mit mächtigen Konstrukten -
siehe JSON! - direkt ausführbare Scriptsprache mit extrem schnellen Compile
78. D#p&/.0#!)
•Browser-Umgebung
•Distribution über Web
und Appstore
•minimale Release-Kosten
Mittwoch, 13. März 13
Aber nicht nur die Sprache selbst ist preiswert beim Fortschritt. Auch das Environment macht
alles preiswert. Die Browser-Technologie ist überall vorhanden, die Distributionswege über
Web oder Appstores sind schnell, einfach und preiswert.
79. R#"'(w#")#
S0%r)p(/!#$
Br/w$#r$
T%b&#)$ TV$
OS E0b#++#+ D#v"'#$
W#b%pp&"*%)"/!#!
Mittwoch, 13. März 13
Wenn ich auf JavaScript setze limitiere ich mich nicht. Kein CEO der Welt braucht mehr eine strategische
Entscheidung zum Einsatz von HTML und Javascript treffen, weil es schon überall läuft.
Windows 8 setzt strategisch auf html5/js, HBBTV: faktisch HTML5-Apps, die in einem Opera ablaufen - auch
SetTop-Boxen, Browser-only-OSs wie Firefox OS oder ChromeOS, Arduino itself (espresso)
80. F-! F%'):
J%v%S'r"p) "$) +%, w/ J%v% ("! w/&&)#
1991 als Sprache für
Consumer Electronics
entwickelt ...
TVs
Mobiltelefone
Videorekorder
Waschmaschinen
Mittwoch, 13. März 13
JavaScript ist heute da, wo Java einmal hinwollte.
81. JavaScript is moving outside of the browser, emerging as an
important technology for
cross-platform development.
...
Along with the recent proliferation of other languages that
compile to JavaScript, this makes us wonder if we should
start to consider JavaScript as a platform and not
just a language.
Thoughtworks Technology Radar 10/12
Mittwoch, 13. März 13
Und ich beende das ganze mit einem Zitat aus dem letzten Technology Radar von
Thoughtworks. JavaScript ist die kommende Cross-Platform-Entwicklungswelt, und JavaScript
wird selbst zu einer Platform. JavaScript ist mein neues Betriebssystem.