Django ist ein in Python programmiertes Framework, dass die schnelle Entwicklung von Web-Applikationen ermöglicht. Dabei wird Wert auf sauberen Code und die Wiederverwendbarkeit von einzelnen Komponenten gelegt.
Der Vortrag wurde beim Webmontag Leipzig im März 2010 gehalten.
der aktuelle Stand Perl 5.20 an features und Kultur: beeinflusst von Perl 6 wird an den wesentlichen Stellen aufgeräumt: dies war das Update für den Linuxtag in Chemnitz März 2015
Einführung in Rack und Rack-Middleware
Vortrag wurde am 24.11.2009 an der
Heinrich-Heine-Universität Düsseldorf im Rahmen der Rails User Group Düsseldorf von Hussein Morsy gehalten
Ob ASP.net MVC, NuGet oder die codebasierten Migrationen bei EF – immer mehr Konzepte und Ideen schwappen von Ruby in die .Net Welt. Wieso aber gerade von Ruby? Und was macht Rails so beliebt bei Webentwicklern?
Ruby ist wie C# eine objektorientierte Programmiersprache. Damit enden die Gemeinsamkeiten aber schon fast. Die vielen fremden Konzepte und Ansätze machen einen Einstieg in Ruby und Rails nicht gerade einfach. Aber genau in diesen Unterschieden liegen die Stärken und machen Ruby so interessant.
Dieser Vortrag gibt einen Überblick über Ruby und Rails und hilft einem sich in dieser ungewohnten Umgebung zu Recht zu finden.
Im Kontext von APIs kommt derzeit keiner an REST (Representational State Transfer) vorbei. REST gilt als leichtgewichtige, skalierbare und schnell erlernbare Alternative zu SOAP, die sich die vorhandene Infrastruktur des WWW zunutze macht. In der Praxis hat aber auch REST seine Schwächen. So ist gutes API-Design häufig eine Herausforderung. Für mobile Anwendungen ist REST zu starr und geht nicht effizient genug mit Bandbreite um.
Im Vortrag werden Stärken und Schwächen von REST aufgezeigt und mit GraphQL eine Alternative speziell für den mobilen Kontext vorgestellt.
Vorlesung Semantic Web Technologien, HTWG Konstanz WS 2009/2010.
Veranstaltung #6
Nach den theoretischen Grundlagen vom letzten Mal, wenden wir uns nun wieder den eher praktischen Gefielden zu. In der aktuellen Vorlesung beschäftigen wir uns mit RDF(S)-Frameworks aus der Java Welt.
Zunächst wird mit Sesame eines der bekanntesten Frameworks vorgestellt. Durch sein Storage and Inference Layer (SAIL) kann es semantische Daten mit praktisch beliebigen Mechanismen persistieren.
Der Mulgara Semantic Store ist ein Triple Store, der nativ in Java als Triple Store implementiert ist und nicht auf relationale Datenbanken angewiesen ist. Als wichtigstes Feature gibt es bei Mulgara das Resolver-SPI, mit dem es möglich ist, entfernten Content zu integrieren.
Mit dem Topaz Projekt existiert eine Erweiterung zu Mulgara, die die Idee eines Objekt Relational Mappers ala Hibernate in die Semantic Web Welt transferiert.
Abschließend beschäftigen wir uns mit Jena, dem marktführenden Semantic Web Framework, dass ursprünglich von Hewlett Packard als Open Source entwickelt wurde und seit kurzem als OpenJena verfügbar ist. Viele Beispiele demonstrieren, wie man mit dem Jena API die wichtigsten Aufgaben erledigt.
The Lotus Code Cookbook - Ulrich Krause
Tipps, Tipps, Tipps ... Die Session behandelt kein zentrales Thema. In loser Folge werden Tipps und Tricks aus allen Bereichen der Programmierung in Lotus Notes / Domino vorgestellt. @Formula, LotusScript, Java, JavaScript, LS2CApi.
Zielgruppe sind Alle, die sich mit Applikationsentwicklung beschäftigen. Anfänger und "alte Hasen"; es ist für jeden etwas dabei.
Ob ASP.net MVC, NuGet oder die codebasierten Migrationen bei EF – immer mehr Konzepte und Ideen schwappen von Ruby in die .Net Welt. Wieso aber gerade von Ruby? Und was macht Rails so beliebt bei Webentwicklern?
Ruby ist wie C# eine objektorientierte Programmiersprache. Damit enden die Gemeinsamkeiten aber schon fast. Die vielen fremden Konzepte und Ansätze machen einen Einstieg in Ruby und Rails nicht gerade einfach. Aber genau in diesen Unterschieden liegen die Stärken und machen Ruby so interessant.
Dieser Vortrag gibt einen Überblick über Ruby und Rails und hilft einem sich in dieser ungewohnten Umgebung zu Recht zu finden.
Im Kontext von APIs kommt derzeit keiner an REST (Representational State Transfer) vorbei. REST gilt als leichtgewichtige, skalierbare und schnell erlernbare Alternative zu SOAP, die sich die vorhandene Infrastruktur des WWW zunutze macht. In der Praxis hat aber auch REST seine Schwächen. So ist gutes API-Design häufig eine Herausforderung. Für mobile Anwendungen ist REST zu starr und geht nicht effizient genug mit Bandbreite um.
Im Vortrag werden Stärken und Schwächen von REST aufgezeigt und mit GraphQL eine Alternative speziell für den mobilen Kontext vorgestellt.
Vorlesung Semantic Web Technologien, HTWG Konstanz WS 2009/2010.
Veranstaltung #6
Nach den theoretischen Grundlagen vom letzten Mal, wenden wir uns nun wieder den eher praktischen Gefielden zu. In der aktuellen Vorlesung beschäftigen wir uns mit RDF(S)-Frameworks aus der Java Welt.
Zunächst wird mit Sesame eines der bekanntesten Frameworks vorgestellt. Durch sein Storage and Inference Layer (SAIL) kann es semantische Daten mit praktisch beliebigen Mechanismen persistieren.
Der Mulgara Semantic Store ist ein Triple Store, der nativ in Java als Triple Store implementiert ist und nicht auf relationale Datenbanken angewiesen ist. Als wichtigstes Feature gibt es bei Mulgara das Resolver-SPI, mit dem es möglich ist, entfernten Content zu integrieren.
Mit dem Topaz Projekt existiert eine Erweiterung zu Mulgara, die die Idee eines Objekt Relational Mappers ala Hibernate in die Semantic Web Welt transferiert.
Abschließend beschäftigen wir uns mit Jena, dem marktführenden Semantic Web Framework, dass ursprünglich von Hewlett Packard als Open Source entwickelt wurde und seit kurzem als OpenJena verfügbar ist. Viele Beispiele demonstrieren, wie man mit dem Jena API die wichtigsten Aufgaben erledigt.
The Lotus Code Cookbook - Ulrich Krause
Tipps, Tipps, Tipps ... Die Session behandelt kein zentrales Thema. In loser Folge werden Tipps und Tricks aus allen Bereichen der Programmierung in Lotus Notes / Domino vorgestellt. @Formula, LotusScript, Java, JavaScript, LS2CApi.
Zielgruppe sind Alle, die sich mit Applikationsentwicklung beschäftigen. Anfänger und "alte Hasen"; es ist für jeden etwas dabei.
4. Ruby on Rails „ Makes Php look like Assembler “ Ruby IRC Channel
5. Ruby on Rails „ Nachahmung ist die höchste Form der Anerkennung “
6. Ruby on Rails Rails Nachbildungen in PHP solar Seagull Zend Framework symfony CakePHP Prado ZooP WACT CodeIgniter
7. Ruby on Rails Library Modul, das eine bestimmte Funktionalität anbietet eZComponents / PEAR Plattform, auf der man seine Anwendung aufbauen kann Ruby on Rails / CakePHP / .NET / Django Framework
9. Ruby on Rails Ruby eine dynamische, freie Programmiersprache, die sich einfach anwenden und produktiv einsetzen lässt. Sie hat eine elegante Syntax , die man leicht lesen und schreiben kann.
10. Ruby on Rails Ruby - Japan 1995, Yukihiro Matsumoto - Open Source - Mischung aus Perl, Smalltalk, Eiffel, Ada und Lisp - Hohe Qualität der Bibliotheken - Wenige aber hochwertige Literatur
12. Ruby on Rails Ruby - Generisch, interpretiert, reflektiert, mit Garbage Collector - Eher auf Menschen als auf Computer optimiert - Mächtiger als Perl, objektorientierter als Python - Alles ist ein Objekt, keine primitiven Datentypen - Starke dynamische Typisierung
13. Ruby on Rails Alles ist ein Objekt String = String.new 5.times do puts „Hello World“ end Hello World Hello World Hello World Hello World Hello World => 5
14. Ruby on Rails Alles ist ein Objekt 1.upto(100) { |i| puts i } 3.141.ceil 2.718.floor 1 2 3 … 100 => 1 => 4 => 2
15. Ruby on Rails Alles ist ein Objekt rand.to_s [2..10] validates_each :href, :on => :create do |record, attr, value| begin uri = URI.parse(value) if uri.class != URI::HTTP record.errors.add(attr, 'Only HTTP protocol addresses can be used') end rescue URI::InvalidURIError record.errors.add(attr, 'The format of the url is not valid.') end end 8digit long random number
16. Ruby on Rails Alles ist ein Objekt class Auto def beschleunigen puts 'Brumm' end end auto1 = Auto.new auto1.beschleunigen Brumm => nil
17. Ruby on Rails Alles ist ein Objekt class GutesAuto < Auto def bremsen puts 'Quietsch' end end auto2 = GutesAuto.new auto2.beschleunigen auto2.bremsen Brumm Quietsch => nil
19. Ruby on Rails PHP Ruby Gemeinsamkeiten + auch dynamisch typisiert + es gibt Klassen und Zugriffsmodifizierer (public, protected, private) + heredoc Syntax - Exceptions wie in PHP 5
20. Ruby on Rails PHP Ruby Gemeinsamkeiten + große Standardbibliothek + true und false wie in PHP, null = nil + einige Variablen beginnen mit $ + String Interpolation „ $foo is a $bar” --- ”#{foo} is a #{bar}”
21. Ruby on Rails PHP Ruby Unterschiede - hat strenge Typisierung to_s, to_i - Strings, Zahlen, Arrays und Hashes sind Objekte Statt abs(-1) hier -1.abs - Klammern in Methodenaufrufen sind optional - keine abstract oder interface Klassen
22. Ruby on Rails Java Ruby Gemeinsamkeiten + Speicher wird von einem Garbage-Collector verwaltet + Werkzeuge zur Dokumentation: RDoc + Objekte sind stark getypt + es gibt Klassen und Zugriffsmodifizierer (public, protected, private)
23. Ruby on Rails Java Ruby Unterschiede - muss nicht kompiliert werden - verschiedene GUI Toolkits z.B. WxRuby - require statt import - Klammern in Methodenaufrufen optional get_books
24. Ruby on Rails Java Ruby Unterschiede - Alle Instanzvariablen sind privat, Zugriff nur über Methoden - Keine statische Typprüfung - keine Typdeklarationen notwendig a = [1,2,3] statt int[] a = [1,2,3]; - keine Typumwandlung (Typecasting)
25. Ruby on Rails Java Ruby Unterschiede - Konstruktor heißt immer initialize anstatt Klassenname - Mixins anstelle von Interfaces - self anstatt this - Unit-Testing noch einfacher
26. Ruby on Rails Rails - Dänemark 2004, David Heinemeier Hansson - Open Source MIT Lizenz - 15 Core Entwickler - Fullstack MVC WebFramework - Wurde aus bestehender Anwendung extrahiert
28. Ruby on Rails Ruby on Rails Die 1. Regel im Rails Club lautet: Don‘t repeat yourself
29. Ruby on Rails Ruby on Rails Die 2. Regel im Rails Club lautet: Don‘t repeat yourself
30. Ruby on Rails DRY "Don't repeat yourself"- Prinzip (DRY): Bsp: In Rails ist kein explizites Datenbankschema nötig, um mit der Datenbank zu kommunizieren, da die Datenbank direkt ausgewertet wird.
31. Ruby on Rails MVC Best practices REST Convention over configuration DRY OOP Active Record CRUD
32. Ruby on Rails MVC Rails verwendet das Modell-View-Controller-Muster (MVC), welches die Schichten der Anwendung sauber in Verantwortungsbereiche aufteilt
33. Ruby on Rails MVC Das Model bildet die zugrundeliegende Datenstruktur Die View ist die Darstellung der Datenstruktur Der Controller enthält die eigentliche Programmlogik
34. Ruby on Rails MVC Model Controller Browser View Database
35. Ruby on Rails M VC - Model Das Model bildet die zugrundeliegende Datenstruktur Die View ist die Darstellung der Datenstruktur Der Controller enthält die eigentliche Programmlogik
36. Ruby on Rails Active Record ein Object-Relational Mapper (ORM) Klasse Datenbanktabelle Methoden Datenbankfelder Objekt Datensatz
37. Ruby on Rails Active Record Patient +name +email +date_of_birth +age +gender Datenbank
38. Ruby on Rails Active Record::Base#Find class Patient< ActiveRecord::Base end Patient.find(1) SELECT * FROM patients WHERE id = 1 Patient.count SELECT COUNT(*) AS count Patient.find_by_name ‘Reinhold Weber‘ SELECT * FROM patients WHERE name = ‚Reinhold Weber‘ Patient.find_by_date_of_birth ‘1985-07-08‘ SELECT * FROM patients WHERE date_of_birth = ‚1985-07-08‘
39. Ruby on Rails Models class Patient< ActiveRecord::Base end class Encounter< ActiveRecord::Base end class Physician< ActiveRecord::Base end
40. Ruby on Rails Associations class Patient< ActiveRecord::Base has_many :encounters has_many :physicians, :through => :encounters end class Encounter< ActiveRecord::Base belongs_to :patient belongs_to :physician end class Physician< ActiveRecord::Base has_many :encounters has_many :patients, :through => :encounters end
41. Ruby on Rails Sensible Defaults class Patient < ActiveRecord::Base has_many :encounters, :class_name => 'Encounter', :foreign_key => 'patient_id' has_many :physicians, :through => encounters, :class_name => 'Physician', :foreign_key => 'physician_id' end
42. Ruby on Rails Sensible Defaults class Encounter < ActiveRecord::Base belongs_to :patient, :class_name => 'Patient', :foreign_key => 'patient_id' belongs_to :physician, :class_name => 'Physician', :foreign_key => 'physician_id' end
43. Ruby on Rails Sensible Defaults class Physician < ActiveRecord::Base has_many :encounters, :class_name => 'Encounter', :foreign_key => 'patient_id' has_many :patients, :through :encounters :class_name => 'Patient', :foreign_key => 'patient_id' end
44. Ruby on Rails M V C - View Das Model bildet die zugrundeliegende Datenstruktur Die View ist die Darstellung der Datenstruktur Der Controller enthält die eigentliche Programmlogik
45. Ruby on Rails View Modul aus der ActionPack Bibliothek welches eine Antwort für den Client rendert entscheidet, welches Template und/oder Partial und Layout benutzt wird Templates benutzen helper Methoden um Links, Formulare und JavaScript zu generieren und Text zu formatiieren
46. Ruby on Rails Templates Vorlagen befinden sich in app/view/controller_name, . Z.B. die Vorlagen für start::PatientController befinden sich unter app/views/start/patient Vorlagen, die von mehreren Controllern benutzt werden befinden sich in app/views/shared
47. Ruby on Rails Templates rhtml - die am häufigsten vorkommende Variante für HTML. HTML Dateien mit eingebettetem Ruby, die die ERb Bibliothek benutzen rxml - Dateien mit Ruby code, die die Builder Bibliothek benutzen um XML zu generieren, wird normalerweise für RSS/Atom benutzt rjs - Ruby Code mit einer Rails spezifischen API, die JavaScript generiert. Wird benutzt für AJAX
48. Ruby on Rails Partials Partials sind Templates, die nur einen Teil einer Seite generieren wie z.B. einen Header oder Footer Partials helfen dabei Seitenelemente wiederzuverwenden funktionieren genauso wie Page Templates (views), laufen in derselben Umgebung und sind im selben Verzeichnis Dateinamen beginnen mit einem underscore _header
49. Ruby on Rails Helpers Helpers sind Ruby Module mit Methoden, die in den Templates verfügbar sind Helpers können Duplikate verhindern und minimieren den Code in den Templates Jeder Controller hat per default einen korrespondierenden helper unter app/helpers/controller_name_helper.rb
51. Ruby on Rails MV C - Controller Das Model bildet die zugrundeliegende Datenstruktur Die View ist die Darstellung der Datenstruktur Der Controller enthält die eigentliche Programmlogik
52. Ruby on Rails Action Controller Trennung von Business Logik & Präsentation Idealerweise sollte keinerlei Logik in der Präsentationsschicht sein Controller sind Ruby Klassen und befinden sich in app/controllers
53. Ruby on Rails Action Controller class PatientController < ApplicationController def index @patient = Patient.find :first @title = 'Patient Detail' @homepage_title = "Patient: #{@patient.name}" end end
54. Ruby on Rails Intelligente Architektur Jede Rails-Anwendung hat eine identische Dateistruktur, es sind kaum Konfigurationsanpassungen nötig.
55. Ruby on Rails Struktur app/ components/ config/ db/ doc/ lib/ log/ public/ script/ test/ tmp/ vendor/ ruby projekt1
56. Ruby on Rails Scaffolding Mit wenigen Befehlen kann eine komplette Administrationsoberfläche zum Erstellen, Bearbeiten und Löschen von Datenbankeinträgen erstellt werden. Rails erzeugt automatisch den Programm- und HTML-Code, der sukzessive um individuelle Funktionalität erweitert werden kann.
57. Ruby on Rails Scaffolding Klasse Datenbanktabelle Methoden Datenbankfelder Objekt Datensatz
58. Ruby on Rails Konvention über Konfiguration DB Tabelle ‚entries‘ Klasse ‚Entry‘
59. Ruby on Rails Migrations Ein Weg das Datenbankschema zu entwickeln Migrations benutzen eine datenbankunabhängige Ruby API Migration Klassen erben von ActiveRecord::Migration script/generate migration
60. Ruby on Rails CRUD Create: create, new Read: find, find_by_<attr> Update: save, update_attributes Delete: destroy
61. Ruby on Rails Schnelles Feedback Ruby-Code wird zur Laufzeit interpretiert, Live-Änderungen an der Datenbankstruktur sind während der Entwicklung ohne Server-Neustart möglich.
62. Ruby on Rails Web 2.0 inklusive Techniken wie AJAX und visuelle Effekte sind von Haus aus mit wenigen Zeilen nutzbar.. Ajax Eye Candy
64. Ruby on Rails Installation Instant Rails/ Locomotive Windows MacPorts/ Quellen Mac Quellen Linux
65. Ruby on Rails Installation Ruby rubyonrails.org/down Windows Installer runterladen, welcher Ruby und einige Extensions enthält - Alle Komponenten installieren
66. Ruby on Rails Installation Rails Installierte Ruby Version ausgeben ruby -v Über RubyGem, das Paketverwaltungssystem von Ruby, Rails installieren gem install rails --include-dependencies
67. Ruby on Rails Projekt anlegen Neues Projekt erzeugen ruby> rails cookbook Server (WEBrick) starten ruby\cookbook> ruby script/server http://localhost:3000/
68. Ruby on Rails Projekt konfigurieren Datenbank Konfiguration cookbook/config/database.yml Server (WEBrick) neustarten ruby script/server http://localhost:3000/
69. Ruby on Rails Projekt konfigurieren Datenbank anlegen DB: cookbook Tb: recipes Model generieren ruby\cookbook> ruby script/generate model Recipe
70. Ruby on Rails Projekt konfigurieren Datenbank anlegen DB: cookbook Tb: recipes Conroller generieren ruby\cookbook> ruby script/generate controller Recipe
71. Ruby on Rails RoR Editoren SciTE 3rdRail Aptana jEdit Eclipse vim emacs RadRails
72. Ruby on Rails ROR Vorteile + Sehr schnelle Ergebnisse v.a bei CRUD Applikationen + nimmt Entwicklern Routinearbeiten ab + Automatische Verwendung von Best Practices
73. Ruby on Rails ROR Vorteile + Organisierte Struktur der Anwendung + Viel Unterstützung durch freiwillige Supporter und Programmierer + Code läuft auf verschiedenen Plattformen mit minimalen Anpassungen
74. Ruby on Rails ROR Vorteile + 10-mal schnellere Ergebnisse als vergleichbare Java Framworks + Source-Code bleibt schlank – ca. 50% kleiner als ein vergleichbares PHP-Programm + Wartung der Software wird durch MVC, DRY, OOP viel einfacher, speziell bei großen Projekten
75. Ruby on Rails ROR Vorteile + Integriertes Test-Framework unterstützt automatisiertes Testen der Applikation. Dadurch können Fehlfunktionen von Anfang an minimiert werden + Web-Sicherheit ist integraler Bestandteil von Ruby on Rails + Web-2.0 (Ajax) fähig
76. Ruby on Rails ROR Nachteile - Völlige Abhängigkeit vom Framework - Je spezieller die Applikation, je weniger Vorteile - Teilweise erheblicher Erstaufwand - (noch) nicht sehr weit verbreitet (Hosting)
77. Ruby on Rails ROR Nachteile - Deployment ist kompliziert - Größtes Problem: Performance & Skalierbarkeit - Teilweise erheblicher Erstaufwand - (noch) nicht sehr weit verbreitet (Hosting)
78. Ruby on Rails Lernen von Rails Entwickeln nach Code Standards und Best Practices Convention over Configuration - MVC, DRY Ansatz für Webanwendungen - Test Driven Development - Einsatz von OOP
80. Ruby on Rails WWW - rubyonrails.com/ - wiki.rubyonrails.org/rails - api.rubyonrails.org/ - (noch) nicht sehr weit verbreitet (Hosting)
81. Ruby on Rails Bücher Agile Web Development with Rails – DHH - Rails Recipes – Chad Fowler - why's (poignant) guide to Ruby - http://poignantguide.net/ruby/