Turun normaalikoulun kielten viikko esittelee myös oppilaiden omia kielia. 9ab:n oppilaat esittelevät omansa. Työt on tehty S2-kielen kurssilla syyskuussa 2009.
Turun normaalikoulun kielten viikko esittelee myös oppilaiden omia kielia. 9ab:n oppilaat esittelevät omansa. Työt on tehty S2-kielen kurssilla syyskuussa 2009.
Turun normaalikoulun kielten viikko esittelee myös oppilaiden omia kielia. 9ab:n oppilaat esittelevät omansa. Työt on tehty S2-kielen kurssilla syyskuussa 2009.
Turun normaalikoulun kielten viikko esittelee myös oppilaiden omia kielia. 9ab:n oppilaat esittelevät omansa. Työt on tehty S2-kielen kurssilla syyskuussa 2009.
"BDD is a second-generation, outside-in, pull-based, multiple-stakeholder, multiple-scale, high-automation, agile methodology. It describes a cycle of interactions with well-defined outputs, resulting in the delivery of working, tested software that matters." Zitat: Dan North
Was dieser eher schwer verdauliche Satz von Dan North, einem der Initiatoren des Behavior Driven Development, beschreibt, soll ein kurzer Überblick über die Prinzipien von BDD beleuchten. An Hand von Beispielen soll das BDD Framework für PHP "Behat" vorgestellt werden. E
Jeder kennt Aussagen wie: Haben wir es schneller gemacht? Bringt uns das
neue Feature mehr Geld oder Besucher? Haben wir es kaputt gemacht und wann?
All diese Fragen können mittels Monitoring, implementiert durch nur
wenigen Zeilen Code, einfach beantwortet werden.
Anhand von Beispielen soll in dem Vortrag aufgezeigt werden, wie einfach
man mit Graphite, StatsD, gDash und weiteren Tools ein Monitoring
aufbauen kann das den kompletten Stack der Applikation abdeckt.
Der Vortrag "Zend Framework meets Doctrine 2" von Paul Seiffert erklärt die Verwendung von Doctrine 2 in Projekten, die auf Zend Framework (ZF) basieren. Zuerst wird Paul dabei auf das Doctrine 2 ORM und dessen
grundsätzliche Verwendung eingehen (es wird also kein Doctrine 2 - Wissen vorausgesetzt), im weiteren Verlauf wird er die Einbindung des ORMs in ZF-Projekte erklären. Zum Schluss zeigt Paul ein kleines Beispiel-Projekt, in dem ZF und Doctrine 2 gemeinsam zum Einsatz kommen.
In diesem Vortrag wird beschrieben, wie man mit Cross-Plattform-SDKs eine App für mehrere Plattformen schreiben kann.Auch auf die verschiedenen mobilen Plattformen (Android, Symbian, iPhone OS usw.) wird eingegangen.
2016 Streaming Media West: Transitioning from Flash to HTML5Erica Beavers
As Flash continues to decline, HTML5 video technologies increasingly bring the promise of heightened performance and better QOE. This workshop provides an in-depth look at HTML5 players, their features and strengths, as well as the open-source media engine frameworks available on the market today. We begin by examining the main components in a video player, then discuss how to choose a player adapted to one’s use case, examining how several open-source solutions compare. Finally, we use an interactive example to build features and demonstrate several optimizations, offering tips and best practices and pointing out potential production issues as we go along.
"BDD is a second-generation, outside-in, pull-based, multiple-stakeholder, multiple-scale, high-automation, agile methodology. It describes a cycle of interactions with well-defined outputs, resulting in the delivery of working, tested software that matters." Zitat: Dan North
Was dieser eher schwer verdauliche Satz von Dan North, einem der Initiatoren des Behavior Driven Development, beschreibt, soll ein kurzer Überblick über die Prinzipien von BDD beleuchten. An Hand von Beispielen soll das BDD Framework für PHP "Behat" vorgestellt werden. E
Jeder kennt Aussagen wie: Haben wir es schneller gemacht? Bringt uns das
neue Feature mehr Geld oder Besucher? Haben wir es kaputt gemacht und wann?
All diese Fragen können mittels Monitoring, implementiert durch nur
wenigen Zeilen Code, einfach beantwortet werden.
Anhand von Beispielen soll in dem Vortrag aufgezeigt werden, wie einfach
man mit Graphite, StatsD, gDash und weiteren Tools ein Monitoring
aufbauen kann das den kompletten Stack der Applikation abdeckt.
Der Vortrag "Zend Framework meets Doctrine 2" von Paul Seiffert erklärt die Verwendung von Doctrine 2 in Projekten, die auf Zend Framework (ZF) basieren. Zuerst wird Paul dabei auf das Doctrine 2 ORM und dessen
grundsätzliche Verwendung eingehen (es wird also kein Doctrine 2 - Wissen vorausgesetzt), im weiteren Verlauf wird er die Einbindung des ORMs in ZF-Projekte erklären. Zum Schluss zeigt Paul ein kleines Beispiel-Projekt, in dem ZF und Doctrine 2 gemeinsam zum Einsatz kommen.
In diesem Vortrag wird beschrieben, wie man mit Cross-Plattform-SDKs eine App für mehrere Plattformen schreiben kann.Auch auf die verschiedenen mobilen Plattformen (Android, Symbian, iPhone OS usw.) wird eingegangen.
2016 Streaming Media West: Transitioning from Flash to HTML5Erica Beavers
As Flash continues to decline, HTML5 video technologies increasingly bring the promise of heightened performance and better QOE. This workshop provides an in-depth look at HTML5 players, their features and strengths, as well as the open-source media engine frameworks available on the market today. We begin by examining the main components in a video player, then discuss how to choose a player adapted to one’s use case, examining how several open-source solutions compare. Finally, we use an interactive example to build features and demonstrate several optimizations, offering tips and best practices and pointing out potential production issues as we go along.
Flash-based audio and video communicationKundan Singh
Modern multimedia communication systems have roots in several different technologies: transporting video over phone lines, using multicast on Internet2's Mbone, adding video session to VoIP or instant messaging, or adding interactive mode in existing streaming systems. Adobe's Flash Player has emerged as the most popular web platform for video content and used by almost all web users. More recently, several companies have attempted Flash-based interactive video communication. The high level abstractions offered by Flash Player and Flex framework significantly eases the development of video applications.
This talk will present the differences in video communication technologies, how it is being deployed in practice using the Flash platform, shedding some light on many confusions about what works and what does not, and how can Flash video work with standards such as SIP and HTML 5. This developer focused presentation will walk you through what it takes to build a Flash-based video communication system using example code.
Streaming Media West 2017 - HTML5 WorkshopErica Beavers
This 3-hour workshop, given at Streaming Media West, describes in detail the HTML5 video workflow. We cover device support, formats, encoding options, digital rights management, server-side ad insertion, and delivery, with a special emphasis on how HTML5 players work and what to look for when choosing a video player.
Everything That You Need To Know About HTML5KaneJordy1
Undoubtedly, we have seen a substantial evolution of websites from their inception utilizing HTML and CSS. During those times, developers had to be contented with plain text and images on their sites and had to rely on third-party plugins such as Flash to add interactivity.
The e-commerce is one of the main points of modern software. The e-commerce sector is growing about 15% annually, which is why it deserves special attention from software engineers. Speaking of e-commerce and open source at once is not easy. For many years we have identified the concept with pain and despair, so we must work urgently to change the way we understand it should be. What are the important points to consider? Where do we find the line between architecture and pragmatism? Are we walking in the right direction? How can Symfony help in this?
Kurzpräsentation auf der Frankfurter Buchmesse 2012 von unseren indischen Kollegen
A short presentation at the Frankfurt Book Fair 2012 by our Indian colleagues
Mit Maintenance umgehen können- Fixt du noch Bugs oder lieferst du schon neue...Mayflower GmbH
Nach dem erfolgreichen Launch einer Software gibt es immer das gleiche Dilemma: Neue Features konkurrieren mit Bugs und Anpassungen an der bestehenden Software, die aus dem operativen Betrieb kommen. Und die Gretchenfrage nach dem dringenden und dem wichtigsten stellt sich kontinuierlich und es braucht einen Mechanismus um diese zu Balancieren. Ich möchte die Auswirkungen von Maintenance parallel zur Produktentwicklung aufzeigen, die Folgeprobleme benennen und Strategien vorstellen um dieses Dilemma zu umgehen.
Unsere Anti-Pattern Karten sind aus unserer jahrelangen Arbeit mit Kunden, und den daraus gewonnenen Erfahrungen entstanden. Sie sollen euch dabei helfen, selbst Fettnäpfchen zu erkennen, die wir schon von außen erlebt haben, oder in die wir sogar teilweise selbst schon getreten sind. Wenn ihr noch andere Anti-Patterns kennt, dann schickt sie uns unter https://mayflower.de/agile-antipattern.
Wenn der größte Teil der Logik in JavaScript stattfindet, dann findet auch der größere Teil der Sicherheitsrisiken dort sein Zuhause. Und auch Angreifer finden mit JavaScript eine interessante neue Spielwiese, denn die Sprache selbst und auch Ihre Heimat in Browser und Node.js bringen neue Probleme.
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 bis hin zu speziellen Problemen wie mXSS, ReDOS und HTML5-Security.
Warum gilt Management bei Entwicklern als notorisch schlecht? Wie kann es kommen, dass ein Entwickler der eben noch auf die Leitung schimpfte sich selbst identisch verhält, sobald er in die Funktion rückt? Wie würde gutes Management in der IT denn aussehen? Wir berichten über unserer naiven Fehler am Anfang, unsere Erfahren auf der agilen Reise und über das, bei dem wir heute angekommen sind. Und wir haben wirklich viel falsch gemacht.
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.
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 im 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.
50 mal produktiver - oder warum ich gute Teams brauche und nicht gute Entwick...Mayflower GmbH
Soll ich Entwickler pro Stunde einkaufen? Lohnt es sich für mich, spontan ein Team zu staffen? Brauche ich einen Rockstar-Developer im Team, um die Deadline zu retten?
Woher kommt die Performance von Development-Teams? Ist es wirklich eine magische Eigenschaft von bestimmten Entwicklern, die Produkte erfolgreich macht? Oder kommt herausragende Performance von einer ganz anderer Seite?
Was Responsive Webdesign meint, ist klar: Ein Layout, das sich flexibel an die Bildschirmgröße des Clients anpasst. Für einen perfekten Auftritt auf dem Smartphone ebenso wie dem UltraHD-TV.
Was so schön klingt, birgt aber auch viele Fallstricke. Der Vortrag wird einige von ihnen Vorstellen: Von extravaganten Kundenwünschen, überraschender Browser-Inkompatibilität und der Verwendung von iFrames bis hin zu responsiven HTML-Newslettern. Abgerundet wird der Talk durch verschiedene Beispiele für den Workflow, Testing-Strategien und dem Thema SEO im Zusammenhang mit Responsive Webdesign.
Native Cross-Platform-Apps mit Titanium Mobile und AlloyMayflower GmbH
Dank der Webtechnologien stehen Ihnen viele Möglichkeiten bereit, auf dem mobilen Markt präsent zu sein. Da sind unter anderem W3C Widgets, mobile Webseiten, Webapplikationen und als native App verpackte Webapplikationen. Eine weitere Möglichkeit stellt das Titanium-Mobile-SDK dar. Das Besondere: Mit Titanium erstellte Apps sind nativ. Aus nur einer Codebasis können Sie eine native Anwendung für iOS, Android, BlackBerry und Tizen generieren, sowie eine Webapplikation. Nativ bedeutet, die Apps werden nicht nur sehr schnell ausgeführt, sondern es stehen Ihnen für eine optimale Usability auch native UI Widgets zur Verfügung. Interessant ist das SDK daher nicht nur für Webentwickler, sondern auch für Entwickler, die ihre Apps bisher aufwändig individuell nativ entwickelt haben. Mit Titanium benötigen Sie lediglich JavaScript-Kenntnisse.
Aussagen wie "Pair Programming ist langsam", "Pair Programming ist nur was für Junior Entwickler zum Übertragen von Domainwissen", "Pair Programming verbrennt zu viele Resourcen und ist nichts für mein Projekt", "Meine Tasks sind zu komplex fürs Pair Programming" oder "Im Moment haben wir keine Zeit fürs Pair Programming, wir müssen liefern (fertig werden)" werden oft als Argumente gegen Pair Programming vorgebracht.
Mit diesem Talk/Webinar möchte Martin Ruprecht den Aussagen entgegentreten und seine Erfahrungen aus den letzten Kundenprojekten weitergeben und zeigen, wann Pair Programming sinnvoll eingesetzt werden kann und warum in jedem Projekt im Pair programmiert werden sollte.
Zielgruppe:
Wenn Sie Entwickler oder Projektverantwortlicher sind, dann ist dieser Talk/dieses Webinar genau richtig für Sie.
Über Martin Ruprecht:
Martin Ruprecht arbeitet seit mehreren Jahren bei Mayflower und ist JavaScript und PHP-Entwickler. Zuvor studierte er erfolgreich Medientechnik/Medieninformatik an der FH Deggendorf. Neben seiner Tätigkeit als Entwickler bei Mayflower organisiert Martin regelmäßig Coding Dojos in München, tritt auf Konferenzen auf und hält Vorträge und Workshops zum Thema JavaScript, Testing und Qualitätssicherung in Webprojekten.
Vorstellung der Technologiedemo www.shoeism.de mit unserem LSH Algorithmus zur Ähnlichkeitssuche von hochdimensionalen Daten am Beispiel von E-Commerce Produktbildern.
Kennen Sie das? Während Sie noch fleißig wochen- und monatelang an Ihrer mobilen App konzipieren/konzipieren lassen, stehen schon die Mitbewerber auf dem Plan und haben eine ähnliche App herausgebracht. Besonders mobile Apps müssen zügig auf den Markt kommen, um Wettbewerbsvorteile in einer neuen, sich immer schneller drehenden Welt für sich entscheiden zu können. Doch welches Handwerkzeug braucht es hierzu?
Der Vortrag möchte Sie entführen in die agile Welt, in der in regelmäßigen, kurzen Zyklen neue Teilabschnitte Ihres Gesamtprojekts für Ihre Nutzerschaft veröffentlicht werden. Richtig angewendet bekommen Sie so einen Nutzersog, der Ihre Mitbewerber in den Schatten stellen wird. Warum warten, bis alle Funktionen komplett fertig sind, wenn Sie zunächst auch mit dem "Minimum Viable Product" starten können, um gleichzeitig wertvolle automatisierte Marktforschung über Nutzerfeedback für die nächsten Versionen zu erhalten? Wir stellen Ihnen hier das konzeptionelle Rüstzeug vor, das Sie hierfür benötigen.
Mit weit über 1 Million Downloads hat sich die quelloffene Piwik-Suite als zuverlässige und beliebte Alternative zu Traffic-Analysewerkzeugen wie Google Analytics etabliert. Heute lassen sich mit Piwik nahezu beliebige Statistiken zur Nutzung von Webseiten erfassen, auch das Monitoring komplexer Marketing-Kampagnen ist möglich. Das besondere an der Software: Ihr Funktionsumfang lässt sich über ein Plug-in-System nahezu beliebig erweitern.
Im Webinar zeigt Ihnen Thomas Steur, selbst Core-Mitglied im Piwik-Projektteam und Lead Developer für Piwik Mobile, wie Entwickler Piwik richtig nutzen können, was es mit der Plug-in-Entwicklung auf sich hat und worauf man im Umgang mit Echtzeit-Traffic-Daten (Stichwort: Skalierung) achten muss.
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...UiPathCommunity
💥 Speed, accuracy, and scaling – discover the superpowers of GenAI in action with UiPath Document Understanding and Communications Mining™:
See how to accelerate model training and optimize model performance with active learning
Learn about the latest enhancements to out-of-the-box document processing – with little to no training required
Get an exclusive demo of the new family of UiPath LLMs – GenAI models specialized for processing different types of documents and messages
This is a hands-on session specifically designed for automation developers and AI enthusiasts seeking to enhance their knowledge in leveraging the latest intelligent document processing capabilities offered by UiPath.
Speakers:
👨🏫 Andras Palfi, Senior Product Manager, UiPath
👩🏫 Lenka Dulovicova, Product Program Manager, UiPath
Accelerate your Kubernetes clusters with Varnish CachingThijs Feryn
A presentation about the usage and availability of Varnish on Kubernetes. This talk explores the capabilities of Varnish caching and shows how to use the Varnish Helm chart to deploy it to Kubernetes.
This presentation was delivered at K8SUG Singapore. See https://feryn.eu/presentations/accelerate-your-kubernetes-clusters-with-varnish-caching-k8sug-singapore-28-2024 for more details.
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualityInflectra
In this insightful webinar, Inflectra explores how artificial intelligence (AI) is transforming software development and testing. Discover how AI-powered tools are revolutionizing every stage of the software development lifecycle (SDLC), from design and prototyping to testing, deployment, and monitoring.
Learn about:
• The Future of Testing: How AI is shifting testing towards verification, analysis, and higher-level skills, while reducing repetitive tasks.
• Test Automation: How AI-powered test case generation, optimization, and self-healing tests are making testing more efficient and effective.
• Visual Testing: Explore the emerging capabilities of AI in visual testing and how it's set to revolutionize UI verification.
• Inflectra's AI Solutions: See demonstrations of Inflectra's cutting-edge AI tools like the ChatGPT plugin and Azure Open AI platform, designed to streamline your testing process.
Whether you're a developer, tester, or QA professional, this webinar will give you valuable insights into how AI is shaping the future of software delivery.
Connector Corner: Automate dynamic content and events by pushing a buttonDianaGray10
Here is something new! In our next Connector Corner webinar, we will demonstrate how you can use a single workflow to:
Create a campaign using Mailchimp with merge tags/fields
Send an interactive Slack channel message (using buttons)
Have the message received by managers and peers along with a test email for review
But there’s more:
In a second workflow supporting the same use case, you’ll see:
Your campaign sent to target colleagues for approval
If the “Approve” button is clicked, a Jira/Zendesk ticket is created for the marketing design team
But—if the “Reject” button is pushed, colleagues will be alerted via Slack message
Join us to learn more about this new, human-in-the-loop capability, brought to you by Integration Service connectors.
And...
Speakers:
Akshay Agnihotri, Product Manager
Charlie Greenberg, Host
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Albert Hoitingh
In this session I delve into the encryption technology used in Microsoft 365 and Microsoft Purview. Including the concepts of Customer Key and Double Key Encryption.
DevOps and Testing slides at DASA ConnectKari Kakkonen
My and Rik Marselis slides at 30.5.2024 DASA Connect conference. We discuss about what is testing, then what is agile testing and finally what is Testing in DevOps. Finally we had lovely workshop with the participants trying to find out different ways to think about quality and testing in different parts of the DevOps infinity loop.
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
6. I won‘t talk about
<video> and <audio>
HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 5
7. Yes,
Youporn is using
HTML5 video!
HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 6
8. Who‘s already using
HTML5?
HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 7
9. HTML5 in one sentence?
HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 8
10. „HTML5 is about moving
from documents to
applications and from
hacks to solutions.“
Christian Heilmann on Twitter
HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 9
11. HTML5 for developers?
HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 10
12. HTML5 ~= HTML + CSS + JS
HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 11
13. 1999:
PHP 3.0 - MySQL 3.22
Apache 1.3
HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 12
14. 1999:
Internet Explorer 5.0
XMLHttpRequest Object
HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 13
15. As time goes by ...
HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 14
16. since 5.0 (1999)
since 1.0 (2004)
since 1.2 (2004)
since 7.6 (2004)
HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 15
17. 2005:
Ajax: A New Approach
to Web Applications
Jesse James Garrett: http://www.adaptivepath.com/ideas/essays/archives/000385.php
HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 16
18. HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 17
19. Google Suggest
Google Mail
Google Maps
HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 18
20. 2006:
Comet
Jesse James Garrett: http://www.adaptivepath.com/ideas/essays/archives/000385.php
HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 19
21. HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 20
22. HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 21
23. Push
HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 21
24. Push Ajax
HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 21
25. Push Ajax
Push
HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 21
31. Applications?
HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 27
32. Apps!
HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 28
33. HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 29
34. online == offline == online
HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 30
35. Is this the new web?
HTML5 for PHP Developers I Mayflower GmbH I 10. September 2010 I 31
36. The future is a web app!
HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 32
37. The mobile browser ...
I ... is identical to the desktop browser
I ... speaks HTML5
•Geolocation support
•Websockets support
•Offline apps
I Faster update cycles than on the desktop
I it‘s a
cross plattform realtime runtime
HTML5 for PHP Developers I Mayflower GmbH I 10. September 2010 I 33
38. But what about HTML5?
And what about PHP?
HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 34
39. 2000: PHP chat style polling
Client Server
HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 35
40. 2000: PHP chat style polling
Hey, Wazzup?
Client Server
HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 35
41. 2000: PHP chat style polling
Um,
nothing,
actually.
Hey, Wazzup?
Client Server
HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 35
42. 2000: PHP chat style polling
Um,
nothing,
actually.
Hey, Wazzup?
1 sec ...
Client Server
HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 35
43. 2000: PHP chat style polling
Client Server
HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 35
44. 2000: PHP chat style polling
Hey, Wazzup?
Client Server
HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 35
45. 2000: PHP chat style polling
Um,
nothing,
actually.
Hey, Wazzup?
Client Server
HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 35
46. 2000: PHP chat style polling
Um,
nothing,
actually.
Hey, Wazzup?
1 sec ...
Client Server
HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 35
47. 2000: PHP chat style polling
Client Server
HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 35
48. 2000: PHP chat style polling
Hey, Wazzup?
Client Server
HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 35
49. 2000: PHP chat style polling
Um,
nothing,
actually.
Hey, Wazzup?
Client Server
HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 35
50. 2000: PHP chat style polling
Um,
nothing,
actually.
Hey, Wazzup?
1 sec ...
Client Server
HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 35
51. 2000: PHP chat style polling
Client Server
HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 35
52. 2000: PHP chat style polling
WTF ?!
Client Server
HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 35
53. 1 User = 1 req / sec
CPU #FAIL
HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 36
54. 2006: COMET style long poll
Client Server
HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 37
55. 2006: COMET style long poll
Hey, Wazzup?
Client Server
HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 37
56. 2006: COMET style long poll
Um, nothing,
actually ...
Hey, Wazzup?
Client Server
HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 37
57. 2006: COMET style long poll
well ...
Hey, Wazzup?
Client Server
HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 37
58. 2006: COMET style long poll
wait ...
Hey, Wazzup?
Client Server
HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 37
59. 2006: COMET style long poll
Uh, there is
something ...
Hey, Wazzup?
Client Server
HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 37
60. 2006: COMET style long poll
No, nothing.
Hey, Wazzup?
Client Server
HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 37
61. 2006: COMET style long poll
WTF ?!
Client Server
HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 37
62. 1 User = 1 Apache child
MEMORY #FAIL
HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 38
63. HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 39
64. MEMORY: WIN
CPU: 1/2 WIN
HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 40
65. Client PHP-
Server
Client
Client
HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 41
66. WebSockets to the rescue!
var ws = new WebSocket("ws://example.com/service");
ws.onopen = function() {
ws.send("message to send"); ....
};
ws.onmessage = function (event) {
var received_msg = event.data; ...
};
ws.onclose = function() {
// websocket is closed.
};
HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 42
67. WebSockets & PHP
I http://code.google.com/p/phpwebsocket/
I Currently an ugly hack
I But quite easy:
list($resource,$host,$origin) = getheaders($buffer);
$upgrade = "HTTP/1.1 101 Web Socket Protocol Handshakern" .
"Upgrade: WebSocketrn" .
"Connection: Upgradern" .
"WebSocket-Origin: " . $origin . "rn" .
"WebSocket-Location: ws://" . $host . $resource .
"rnrn";
$handshake = true;
socket_write($socket,$upgrade.chr(0),strlen($upgrade.chr(0)));
HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 43
68. More logic will move to the
client... the browser!
HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 44
69. Web Worker
I Multi-threaded JavaScript
I Easy example:
main.js:
var worker = new Worker('backgroundtask.js');
worker.onmessage = function(event) { alert(event.data); };
backgroundtask.js:
self.onmessage = function(event) {
// Do some tough work...
self.postMessage(some_data);
}
HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 45
70. Offline Application Cache
index.html:
<html manifest="cache.manifest">
window.applicationCache.addEventListener('checking',
updateCacheStatus,
false);
cache.manifest:
CACHE MANIFEST
CACHE:
/html5/demo/index.html
/html5/demo/style.css
/html5/demo/background.png
HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 46
71. Web Messaging
<iframe src="http://www.example.org/message/" id="iframe">
</iframe>
<form id="form">
<input type="text" id="msg" value="Message to send"/>
<input type="submit"/>
</form>
<script>
window.onload = function() {
var win = document.getElementById("iframe").contentWindow;
document.getElementById("form").onsubmit = function(e) {
win.postMessage(document.getElementById("msg").value);
e.preventDefault();
};
};
</script>
HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 47
72. Web Messaging
<strong>This iframe is located on www.example.com</strong>
<div id="test">Hello, World!</div>
<script>
document.addEventListener("message", function(e){
document.getElementById("test").textContent =
e.domain + " said: " + e.data;
}, false);
</script>
HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 48
73. WebStorage
I Short living data
I sessionStorage object
I will be deleted after closing the browser
I Long living data
I localStorage object
I will not be deleted after closing the browser
HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 49
74. WebStorage
if (!sessionStorage['counter']) {
sessionStorage['counter'] = 0;
} else {
sessionStorage['counter']++;
}
document.querySelector('#content').innerHTML =
'<p>This sample has been run ' +
sessionStorage.getItem('counter') +
' times</p>' +
'<p>(The value will be available until ' +
we close the tab)</p>';
HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 50
75. Web SQL Database
var db = window.openDatabase("Database Name",
"Database Version");
db.transaction(function(tx) {
tx.executeSql("SELECT * FROM test",
[],
successCallback,
errorCallback);
});
HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 51
76. Geolocation
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(position) {
var lat = position.coords.latitude;
var lng = position.coords.longitude;
var options = {
position: new google.maps.LatLng(lat, lng) }
var marker = new google.maps.Marker(options);
marker.setMap(map);
});
}
HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 52
77. Drag and Drop API
<li draggable="true" id="pic1" ondragstart="drag(this, event)">
<span>foobar.png</span>
</li>
<div id="trash" ondrop="drop(this, event)" ondragenter="return
false" ondragover="return false"></div>
function drag(target, e) {
e.dataTransfer.setData('Text', target.id);
}
function drop(target, e) {
var id = e.dataTransfer.getData('Text');
target.appendChild(document.getElementById(id));
e.preventDefault();
}
HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 53
78. Using the File API (I)
var reader = new FileReader();
reader.onload = function(e) {
var bin = e.target.result;
// „bin“ is the binary string
};
reader.readAsBinaryString(file);
HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 54
79. Using the File API (II)
var xhr = new XMLHttpRequest();
xhr.open("POST", "upload.php");
xhr.overrideMimeType('text/plain;
charset=x-user-defined-binary');
xhr.sendAsBinary(bin);
HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 55
80. Using the File API (II)
var xhr = new XMLHttpRequest();
xhr.open("POST", "upload.php");
xhr.overrideMimeType('text/plain;
charset=x-user-defined-binary');
xhr.sendAsBinary(bin);
xhr.upload.addEventListener("progress", function(e) {
if (e.lengthComputable) {
var percentage = Math.round((e.loaded * 100) / e.total);
// do something
}
}, false);
HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 55
81. This was just the JavaScript
beginning...
HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 56
82. What‘s left for us
PHP developers?
HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 57
83. HTML5 is part of an
application framework!
HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 58
84. The LAMP stack gets a
bust of Janus
real time web component
web application component
HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 59
85. PHP developers have to
learn JavaScript as well!
HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 60
86. Modern PHP applications
use both:
JavaScript PHP
50% 50%
HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 61
87. HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 62
88. <!DOCTYPE html>
HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 63
89. <!DOCTYPE html>
HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 63
90. HTML5 page structure
<header>
<hgroup>
<nav>
<article>
<footer>
HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 64
91. HTML5 article structure
<section>
<aside>
HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 65
92. New semantic tags
<time>
<details>
<figure>
<figcaption>
<mark>
HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 66
93. New link relations
<link rel="alternate" type="application/rss+xml" href="http://www.php.net/feed">
<link rel="icon" href="/favicon.ico">
<link rel="pingback" href="http://www.phpmyfaq.de/xmlrpc.php">
<link rel="prefetch" href="http://www.phpmyfaq.de/main.php">
...
<a rel="archives" href="http://www.phpmyfaq.de/archives">Old posts</a>
<a rel="external" href="http://www.php.net">PHP Homepage</a>
<a rel="license" href="http://www.apache.org/licenses/LICENSE-2.0">License</a>
<a rel="nofollow" href="http://www.ruby-lang.org/">Ruby Homepage</a>
<a rel="tag" href="http://devblog.phpmyfaq/category/PHP">PHP tagged postes</a>
HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 67
95. WebForms
<input maxlength="256" name="q" value="" autofocus>
<input maxlength="256" name="q" value="" required="true">
HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 69
96. WebForms
<input type="tel"> for telephone numbers
<input type="url"> for web addresses
<input type="email"> for email addresses
HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 70
102. <canvas>
<canvas id="canvas" width="838" height="220"></canvas>
<script>
var canvasContext = $("#canvas").getContext("2d");
canvasContext.fillRect(250, 25, 150, 100);
canvasContext.beginPath();
canvasContext.arc(450, 110, 100,
Math.PI * 1/2, Math.PI * 3/2);
canvasContext.lineWidth = 15;
canvasContext.lineCap = 'round';
canvasContext.strokeStyle = 'rgba(255, 127, 0, 0.5)';
canvasContext.stroke();
</script>
HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 76
103. <canvas>
HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 77
104. WebGL
HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 78
105. Have fun with HTML5!
HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 79
106. And what about CSS3?
HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 80
107. New selectors
.row:nth-child(even) { background: #cccccc; }
.row:nth-child(odd) { background: #ffffff; }
row 1
row 2
row 3
row 4
HTML5 for PHP Developers I Mayflower GmbH I 10. September 2010 I 81
108. The state of WebFonts...
@font-face {
font-family: 'FuturaNew';
src: url(FuturaNew.otf);
}
header {
font-family: 'LeagueGothic';
colour: red;
}
No font replacement! :-)
HTML5 for PHP Developers I Mayflower GmbH I 10. September 2010 I 82
109. More new CSS3 features...
I better font support
I better text wrapping
I columns
I opacity
I Hue/saturation/luminance color model
I Rounded corners, finally! ;-)
I Gradients
I Shadows
I better backgrounds
I transitions
I animations
HTML5 for PHP Developers I Mayflower GmbH I 10. September 2010 I 83
110. HTML5 readiness
HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 84
111. HTML5 readiness
86 %
77 % 79 %
72 %
26 %
IE8 Firefox 3.6 Chrome 5.0
Safari 5.0
Opera 10.5
HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 85
112. HTML5 readiness
2010
HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 86
113. HTML5 readiness
Cross- content New
getElementsBy
document semantic <video> <audio>
editable ClassName()
messaging tags
IE 8.0
FF 3.6
Chrome 5
Safari 5
Opera 10.5
HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 87
114. HTML5 readiness
Basic Text API for Offline Web HTML5
<canvas> Drag n Drop Inline SVG
<canvas> Applications WebForms
support
IE 8.0
FF 3.6
Chrome 5
Safari 5
Opera 10.5
HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 88
115. HTML5 readiness
201 1
HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 89
116. HTML5 readiness
Cross- content New
getElementsBy
document semantic <video> <audio>
editable ClassName()
messaging tags
IE 9.0
FF 4.0
Chrome 6
Safari
Opera
HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 90
117. HTML5 readiness
Basic Text API for Offline Web HTML5
<canvas> Drag n Drop Inline SVG
<canvas> Applications WebForms
support
IE 9.0
FF 4.0
Chrome 6
Safari
Opera
HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 91
118. But...
HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 92
119. Browser stats 2010
IE 8.0 29,0 %
Firefox 3.6 24,0 %
IE 7.0 13,0 %
IE 6.0 7,5 %
Chrome 6.0 6,4 %
Chrome 5.0 4,5 %
Firefox 3.5 4,4 %
Safari 5.0 2,9 %
Firefox 3.0 2,4 %
Opera 10.6 1,4 %
Safari 4.0 0,8 %
Firefox 2.0 0,4 %
Other 2,9 %
StatCounter Global Stats
HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 93
120. What‘s already safe for
using?
HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 94