Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Open Source - eine Alternative zu FileMaker?

qutic
October 13, 2017

Open Source - eine Alternative zu FileMaker?

Vortrag auf der FileMaker-Konferenz 2017 in Salzburg

qutic

October 13, 2017
Tweet

More Decks by qutic

Other Decks in Technology

Transcript

  1. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017 www.filemaker-konferenz.com

    Mit Open Source Software eine Webapplikation erstellen Stefan Husch [email protected] qutic development Consulting, Development, Hosting Open Source - eine FileMaker Alternative?
  2. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017 Open

    Source - eine FileMaker Alternative? | Stefan Husch Wahl des richtigen Tools
  3. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017 Open

    Source - eine FileMaker Alternative? | Stefan Husch Wahl des richtigen Tools
  4. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017 Open

    Source - eine FileMaker Alternative? | Stefan Husch FileMaker: Vor- & Nachteile + Graphische Oberfläche + Geringe Lernkurve + Schnelles Prototyping + Das FileMaker Magazin Forum - Graphische Oberfläche - Maus-Arm - Lizenzkosten - Keine Entwickler-Leitlinien - Schwer zu erweitern (Plugins) - Schlecht zu skalieren - Schlecht zu dokumentieren (SourceCode) - Keine automatisierten Tests
  5. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017 Open

    Source - eine FileMaker Alternative? | Stefan Husch Wahl des richtigen Tools
  6. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017 Open

    Source - eine FileMaker Alternative? | Stefan Husch Rails: Vor- & Nachteile + Open Source + Textbasierte Entwicklung + Versionskontrolle + Schnelle App-Entwicklung + Entwickler-Leitlinien + Flexibel + Beliebig zu skalieren + Gut zu dokumentieren + Automatisierte Tests + Endlose Möglichkeiten - Steilere Lernkurve - Endlose Möglichkeiten - Dokumentation in Englisch
  7. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017 Open

    Source - eine FileMaker Alternative? | Stefan Husch Entwicklungskosten Web == FMP * *große Projekte: Web < FMP
  8. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017 Open

    Source - eine FileMaker Alternative? | Stefan Husch Warum ein Webframework? • Datenbankzugriff (Object-relational mapping, ORM) • Templatesysteme (View) • Scaffolding (Gerüstbau für Controller, Model, View) • Routing (URL-Struktur) • Role Based User Authentification (Wer darf was) • Lokalisierung (Mehrsprachigkeit) • Sicherheitsfunktionen (SQL-Injection, XSS, etc.)
  9. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017 Open

    Source - eine FileMaker Alternative? | Stefan Husch Warum Rails? • Ausgereiftes Webframework (seit 2005, Vorbild für Andere) • Objektorientiert • Don’t repeat yourself • Konvention vor Konfiguration • Einfach zu lernen • Sehr große Community • Vielfalt an vorhandenen Bibliotheken (gems)
  10. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017 Open

    Source - eine FileMaker Alternative? | Stefan Husch Endlose Möglichkeiten • Welche Datenbank wähle ich? PostgreSQL, MySQL, SQLite, MonoDB, Oracle, etc. • Welche Template-Engine wähle ich? Haml, ERB, etc. • Welches CSS-Framework wähle ich? Sass, SCSS, Less, Stylus, etc. • Welche Background-Queue wähle ich? Sidekiq, DelayedJob, Resque, RabbitMQ, etc.
  11. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017 Open

    Source - eine FileMaker Alternative? | Stefan Husch FileMaker Starter Solutions
  12. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017 Open

    Source - eine FileMaker Alternative? | Stefan Husch
  13. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017 Open

    Source - eine FileMaker Alternative? | Stefan Husch Keep it simple • Ziel: Intranet-Applikation für maximal 250 Benutzer • Datenbank: SQLite • Template-Engine: - • CSS-Framework: - • Background-Queue: -
  14. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017 Open

    Source - eine FileMaker Alternative? | Stefan Husch Entwicklungs-Umgebung • Ruby (Programmiersprache) • Rails (Webframework) • bundler (Installations-Automatisierung für Ruby Bibliotheken) • rvm (Ruby Version Manager) • git (Versionskontrollsystem) • TextMate (Textverarbeitung, macOS) • SQLite
  15. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017 Open

    Source - eine FileMaker Alternative? | Stefan Husch „Textbasierte Entwicklung“ $ $ $ $ $ $ # Das Terminal ist Dein Freund :) $ $ $ $ $
  16. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017 Open

    Source - eine FileMaker Alternative? | Stefan Husch Ruby und Rails installieren $ \curl -sSL https://get.rvm.io | bash -s head $ rvm install ruby-2.4.2 $ gem install bundler $ echo "rvm use ruby-2.4.2@contacts --create" \ > .rvmrc $ source .rvmrc $ gem install rails
  17. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017 Open

    Source - eine FileMaker Alternative? | Stefan Husch Rails Projekt erstellen $ rails new contacts -d sqlite3
  18. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017 Open

    Source - eine FileMaker Alternative? | Stefan Husch Rails Projekt ansehen $ cd contacts $ m . # öffnet das Projekt in TextMate
  19. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017 Open

    Source - eine FileMaker Alternative? | Stefan Husch Rails Überblick • Model-View-Controller Architektur (MVC) • active_record (ORM) • Klare Projekt-Struktur • Konfiguration • Initializers • Routes • Datenbank-Schema • Datenbank-Migration • Gemfile • Log
  20. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017 Open

    Source - eine FileMaker Alternative? | Stefan Husch
  21. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017 Open

    Source - eine FileMaker Alternative? | Stefan Husch Was ist ActiveAdmin? • Rails-Erweiterung (Engine) • Keine Controller und Views nötig (aber möglich) • Domain-specific language (DSL) • Einfache Entwicklung
  22. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017 Open

    Source - eine FileMaker Alternative? | Stefan Husch Und los geht es $ cat <<EOF >> Gemfile gem 'activeadmin' gem 'devise' EOF $ $ bundle $ rails generate active_admin:install $ rails db:migrate $ rails db:seed $ $ git init . $ git add . $ git commit -m "initial commit" $ $ rails server
  23. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017 Open

    Source - eine FileMaker Alternative? | Stefan Husch Browser-Ansicht
  24. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017 Open

    Source - eine FileMaker Alternative? | Stefan Husch
  25. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017 Open

    Source - eine FileMaker Alternative? | Stefan Husch Datenbank-Model FileMaker
  26. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017 Open

    Source - eine FileMaker Alternative? | Stefan Husch Datenbank-Model Rails persons id group_id title first_name last_name company job_title notes addresses id person_id type street street_addition city zip groups id name contact_types id name contacts id person_id contact_type_id contact
  27. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017 Open

    Source - eine FileMaker Alternative? | Stefan Husch Modell erstellen $ rails generate model group \ name:string $ $ rails generate model contact_type \ name:string $ $ rails generate model contact \ person:belongs_to \ contact_type:belongs_to \ contact:string
  28. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017 Open

    Source - eine FileMaker Alternative? | Stefan Husch Modell erstellen $ rails generate model person \ group:belongs_to \ title:string \ first_name:string \ last_name:string \ company:string \ job_title:string \ notes:text
  29. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017 Open

    Source - eine FileMaker Alternative? | Stefan Husch Modell erstellen $ rails generate model address \ person:belongs_to \ mode:string \ street:string \ street_addition:string \ city:string \ zip:string
  30. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017 Open

    Source - eine FileMaker Alternative? | Stefan Husch ActiveAdmin-Ressourcen erstellen $ rails generate active_admin:resource Person $ rails generate active_admin:resource Address $ rails generate active_admin:resource Group $ rails generate active_admin:resource ContactType $ rails generate active_admin:resource Contact
  31. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017 Open

    Source - eine FileMaker Alternative? | Stefan Husch Select-Menu Daten erstellen $ cat <<EOF >> db/seeds.rb Group.create!(name: 'Personal') Group.create!(name: 'Professional') Group.create!(name: 'Family') Group.create!(name: 'Friend') ContactType.create!(name: 'Office Phone') ContactType.create!(name: 'Mobile Phone') ContactType.create!(name: 'Personal Phone') ContactType.create!(name: 'Fax') ContactType.create!(name: 'Office Email') ContactType.create!(name: 'Personal Email') ContactType.create!(name: 'FaceTime') ContactType.create!(name: 'Twitter') EOF
  32. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017 Open

    Source - eine FileMaker Alternative? | Stefan Husch Datenbank-Migration $ rails db:drop $ rails db:create $ rails db:migrate $ rails db:seed $ $ git add . $ git commit -m "integrate ActiveAdmin"
  33. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017 Open

    Source - eine FileMaker Alternative? | Stefan Husch Browser-Ansicht
  34. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017 Open

    Source - eine FileMaker Alternative? | Stefan Husch Todo • Comments deaktivieren • permit_params in allen ActiveAdmin-Resources setzen • routes.rb: root to: redirect('/admin') • Addresses und Contacts aus Menü entfernen (menu false) • Model-Relations erweitern • ActiveAdmin-Ressourcen anpassen
  35. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017 Open

    Source - eine FileMaker Alternative? | Stefan Husch ActiveAdmin-Ressourcen anpassen # app/admin/address.rb ActiveAdmin.register Address do menu false permit_params :person_id, :type, :street, :street_addition, :city, :zip end # app/admin/contact_type.rb ActiveAdmin.register ContactType do permit_params :name end # app/admin/contact.rb ActiveAdmin.register Contact do menu false permit_params :person_id, :contact_type_id, :contact end # app/admin/group.rb ActiveAdmin.register Group do permit_params :name end
  36. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017 Open

    Source - eine FileMaker Alternative? | Stefan Husch ActiveAdmin-Ressourcen anpassen # app/admin/person.rb ActiveAdmin.register Person do permit_params :group_id, :title, :first_name, :last_name, :company, :job_title, :notes, contacts_attributes: [:id, :contact_type_id, :contact], addresses_attributes: [:id, :person_id, :mode, :street, :street_addition, :city, :zip] show do attributes_table_for person do Person.column_names.each do |c| row c.to_sym end end table_for person.contacts do column "Type", :contact_type column "Contact", :contact end table_for person.addresses do column "Mode", :mode column "Street", :street column "Addition", :street_addition column "City", :city column "Zip", :zip end end
  37. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017 Open

    Source - eine FileMaker Alternative? | Stefan Husch ActiveAdmin-Ressourcen anpassen form :html => {:multipart => true} do |f| f.inputs 'Person' do f.input :group f.input :title f.input :first_name f.input :last_name f.input :company f.input :job_title f.input :notes f.input :image, as: :file end f.inputs do f.has_many :contacts, allow_destroy: true do |c| c.input :contact_type c.input :contact end end
  38. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017 Open

    Source - eine FileMaker Alternative? | Stefan Husch ActiveAdmin-Ressourcen anpassen f.inputs do f.has_many :addresses, allow_destroy: true do |a| a.input :mode, :as => :select, :collection => [ ['Work','Work'], ['Personal','Personal'] ] a.input :street a.input :street_addition a.input :city a.input :zip end end f.actions end end
  39. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017 Open

    Source - eine FileMaker Alternative? | Stefan Husch Model erweitern # app/model/person.rb class Person < ApplicationRecord belongs_to :group has_many :contacts has_many :addresses accepts_nested_attributes_for :contacts, reject_if: :all_blank, allow_destroy: true accepts_nested_attributes_for :addresses, reject_if: :all_blank, allow_destroy: true def name [title, first_name, last_name].join(" ").strip end end
  40. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017 Open

    Source - eine FileMaker Alternative? | Stefan Husch Browser-Ansicht
  41. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017 Open

    Source - eine FileMaker Alternative? | Stefan Husch Bild-Upload $ cat <<EOF >> Gemfile gem 'paperclip' EOF $ $ bundle $ rails generate paperclip person image $ $ # fix migration file $ sed -i '' -e "s#ActiveRecord::Migration#ActiveRecord::Migration[5.1]#g" \ db/migrate/*_add_attachment_image_to_people.rb $ $ rails db:migrate
  42. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017 Open

    Source - eine FileMaker Alternative? | Stefan Husch Image-Referenz hinzufügen # app/admin/person.rb ActiveAdmin.register Person do permit_params :group_id, :title, :first_name, :last_name, :company, :job_title, :notes, :image, contacts_attributes: [:id, :contact_type_id, :contact], addresses_attributes: [:id, :person_id, :mode, :street, :street_addition, :city, :zip] # app/model/person.rb class Person < ApplicationRecord has_attached_file :image, styles: { medium: "300x300>", thumbnail: "100x100>" } validates_attachment_content_type :image, :content_type => [ "image/jpg", "image/jpeg", "image/png", "image/gif" ]
  43. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017 Open

    Source - eine FileMaker Alternative? | Stefan Husch Browser-Ansicht
  44. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017 Open

    Source - eine FileMaker Alternative? | Stefan Husch ?
  45. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017 Open

    Source - eine FileMaker Alternative? | Stefan Husch Links zum Vortrag • https://speakerdeck.com/qutic • https://de.wikipedia.org/wiki/Webframework • http://rubyonrails.org • https://www.ruby-lang.org/en/ • https://rvm.io • https://stackoverflow.com/questions/15691977/why-start-a-shell-command- with-a-backslash • http://bundler.io • https://gorails.com/setup/windows/10 • http://macromates.com/download • https://activeadmin.info • https://activeadmin.info/documentation.html
  46. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017 Open

    Source - eine FileMaker Alternative? | Stefan Husch Weiter lernen • https://github.com/activeadmin/activeadmin/wiki • https://gorails.com/episodes/using-activeadmin-to-build-an-admin-ui • https://spin.atomicobject.com/2016/07/23/file-upload-active-admin-paperclip/ • https://pragprog.com/book/ruby4/programming-ruby-1-9-2-0 • https://pragprog.com/book/rails51/agile-web-development-with-rails-5-1 • http://railscasts.com
  47. 8. FileMaker Konferenz | Salzburg | 12.-14. Oktober 2017 Vortrag

    und Sprecher Vielen Dank unseren Sponsoren