Teil 3: MVC – Model-View-Controller, was ist das eigentlich?
Da sich Ruby on Rails an dem MVC-Muster orientiert kann es nicht schaden zuersteinmal zu klären was das MVC überhaupt ist.
MVC steht für Model-View-Controller, es beschreibt ein Architekturmuster in der Software-Entwicklung. Es teilt den Entwurf einer Software in drei Bereiche ein - die Datenschicht (engl. model), die Präsentation (view) und die Steuerung (controller). Der Ziel dieses Musters ist der flexible Programmentwurf, bei dem es möglich wird Änderungen oder Erweiterungen mit wenig Aufwand durchzuführen. Aber auch die Wiederverwendbarkeit von einzelnen Komponenten der Software spielt eine Rolle. Da Rails das DRY-Prinzip ("Don't repear yourself") verfolgt ist auch klar, wieso MVC die 1. Wahl für Rails ist.
Aber wie genau funktioniert das jetzt?
M - das Modell
Das Model ist unabhängig vom Controller und dem View, es verwaltet (lesen, ändern, speichern, löschen) quasi nur die Daten, die ihm vom Controller übergeben werden und überprüft die vom Controller bekommenen Daten auf Gültigkeit und verweigert oder lässt dann eine Speicherung zu. Das Model stellt das Backend dar und verwaltet die Daten in der Datenbank (oder je nach Implementierung auch ohne Datenbank) und kümmert sich um konsistente Datensätze.
V - die Präsentation
Die View nimmt die Daten des Models entgegen und erstellt daraus die geforderte Ansicht.
C - die Steuerung
Der Controller verwaltet die Koordination von Modell- und Präsentationsschicht. Er wertet Benutzeraktionen aus und agiert entsprechend. Daten werden nicht in der Steuerung manipuliert, sondern in der Modellschicht.
Beispiel - Mitarbeiterübersicht anzeigen
Wir gehen einmal davon aus, dass wir unsere Mitarbeiterverwaltung nun fertig implementiert haben. Nach dem MVC-Muster sollte es dann so aufgebaut sein, dass wir - wenn wir die Seite über den Browser (http://127.0.0.1:3000/mitarbeiterverwaltung) betreten - zuersteinmal eine Übersicht (als HTML-Dokument) aller Mitarbeiter erhalten. Alleine für diese Ansicht musste unser Webserver schon einiges tun: Unser Browser hat die Anfrage GET /mitarbeiterverwaltung an den Server gesendet. Dieser hat Sie an Rails weitergeleitet, Rails hat dann (gemäß Konvention wird / zu /index) unseren erstellten Controller index damit kontaktiert und führt nun den Code des Controllers index aus. Da unser Controller anweist, die Daten aus der Model-Schicht zu holen, weist er das Model index an alle Mitarbeiterdaten aus der Datenbank auszulesen. Nachdem das Model fertig ist, werden die Datensätze vom View index gerendert und in eine tabellarische Ansicht gebracht, dass diese für uns übersichtlich erscheinen. Anschließend schickt der Webserver die Ausgabe an unseren Browser und wir erhalten unsere angefragte Übersicht.
Weitere Informationen zum MVC sind unter http://de.wikipedia.org/wiki/Model_View_Controller zu finden.
Ruby on Rails – Erstes Projekt anlegen
Ich möchte zunächst mit einem einfachen, kleinen Projekt Mitarbeiterverwaltung beginnen. Ziel soll es sein, über den Browser Mitarbeiter anzulegen, zu editieren, zu ändern und zu löschen.
1. Um mit Rails ein neues Projekt anzufangen, startet man zunächst mit der Eingabeaufforderung und wechselt in das Verzeichnis, in das das neue Projekt abgelegt werden soll:
x:\>cd <InstantRails>\rails_apps
x:\<InstantRails>\rails_apps\>rails mitarbeiterverwaltung -d mysql
create
create app/controllers # hier werden später unsere Controller abgelegt
create app/helpers # hier kommen die jeweiligen >Helferlein< rein, die wir mehrmals brauchen
create app/models # die Model-Schicht, hier lagern die Daten und werden gespeichert/gehalten/gelesen
create app/views/layouts # hier kommt das Seitenlayout unserer Seite später rein
create config/environments
create config/initializers
create config/locales
create db
create doc
create lib
create lib/tasks
create log
create public/images # öffentlich zugängliches Verzeichnis für den Webserver, hier lagern die Bilddateien
create public/javascripts # öffentlich zugängliches Verzeichnis für den Webserver, hier lagern die JavaScripte
create public/stylesheets # öffentlich zugängliches Verzeichnis für den Webserver, hier lagern die CSS-Dateien
create script/performance
create test/fixtures # hier landen die fiktiven Daten für unsere Testfälle
create test/functional # funktionelle Tests lagern hier
create test/integration # integrelle Tests lagern hier
create test/performance # performance Tests lagern hier
create test/unit # unit Tests zum überprüfen der korrekten Arbeitsweise von Models
create vendor
create vendor/plugins
create tmp/sessions
create tmp/sockets
create tmp/cache
create tmp/pids
create Rakefile
create README
create app/controllers/application_controller.rb
create app/helpers/application_helper.rb
create config/database.yml # Konfigurationsdatei für Datenbank
create config/routes.rb # Routen, damit Rails weiss wie mit GET-Parametern umgegangen werden soll
create config/locales/en.yml # englische Sprachdatei
create db/seeds.rb
create config/initializers/backtrace_silencers.rb
create config/initializers/inflections.rb
create config/initializers/mime_types.rb
create config/initializers/new_rails_defaults.rb
create config/initializers/session_store.rb
create config/initializers/cookie_verification_secret.rb
create config/environment.rb # globale Konfigurationsdatei für das komplette Projekt, um z.B. Plugins einzubinden oder die richtige Railsversion vorzugeben
create config/boot.rb
create config/environments/production.rb
create config/environments/development.rb
create config/environments/test.rb
create script/about
create script/console
create script/dbconsole
create script/destroy
create script/generate
create script/runner
create script/server
create script/plugin
create script/performance/benchmarker
create script/performance/profiler
create test/test_helper.rb
create test/performance/browsing_test.rb
create public/404.html
create public/422.html
create public/500.html
create public/index.html
create public/favicon.ico
create public/robots.txt
create public/images/rails.png
create public/javascripts/prototype.js
create public/javascripts/effects.js
create public/javascripts/dragdrop.js
create public/javascripts/controls.js
create public/javascripts/application.js
create doc/README_FOR_APP
create log/server.log
create log/production.log
create log/development.log
create log/test.log
Die Datei x:\<InstantRails>\rails_apps\mitarbeiterverwaltung\config\database.yml enthält jetzt schon die richtigen Einstellungen (da wir mit der Anweisung -d mysql angeg. haben MySQL als Adapter zu nutzen) für den Zugriff auf eine MySQL-Datenbank. Den MySQL-Server haben wir ja bereits mit InstantRails zusammen installiert.
Unser "Skelett" wurde jetzt von Rails angelegt. Es beinhaltet alles (und meistens viel mehr) was wir für ein neues Projekt benötigen.
2. Nun wechseln wir in der Konsole mit cd mitarbeiterverwaltung in das soeben durch Rails erzeugte Verzeichnis. Dort führen wir nun rake db:create:all aus, um die drei Datenbanken mitarbeiterverwaltung_development, mitarbeiterverwaltung_production, mitarbeiterverwaltung_test anzulegen. Das können wir mit einem Besuch von http://127.0.0.1/mysql überprüfen. Innerhalb dieser Datenbanken sind allerdings noch keine Tabellen, die kommen später dazu. Die Datenbanken sind - wie der Name schon verät - für die drei Umgebungen Entwicklung (_development), Test (_test), Produktion (_production) für den späteren Praxisbetrieb.
3. Wir testen schonmal ob bis hierhin alles klappt. In der Konsole tippen wir dazu im Verzeichnis mitarbeiterverwaltung ruby script/server ein, damit veranlassen wir, dass Rails den (Mongrel-)Webserver für unser Projekt Mitarbeiterverwaltung (und nur für dieses!) startet. Das dauert einen kleinen Augenblick. Danach sollte der Server laufen und über die Adresse http://127.0.0.1:3000/ erreichbar sein. Dort findet sich die Standard-Rails Seite. Mit einem Klick auf About your application’s environment finden sich weitere Informationen zur Rails-Umgebung. Falls hier ein Fehler auftritt, so liegt meist ein Fehler in der Konfiguration des Datenbankservers. In Teil 1 habe ich erklärt, wie man vorgehen muss, wenn man einen MySQL-Server anstelle des SQLite 3 verwenden möchte.
4. Wohlgemerkt finden wir auf der geöffneten Seite außer der Standard-Seite von Rails keine weiteren Seiten. Das ist auch richtig, weil wir bisher nur ein Projekt angelegt haben, das beinhaltet nur den Rahmen der eigentlichen Funktionalität. Uns fehlen noch die eigentlichen Seiten (auch Views genannt, das V aus MVC was wiederum die Abkürzung für Model-View-Controller ist). Wie das genau funktioniert erkläre ich im dritten Teil.
Übrigens: Für Anregungen und Kritik darf man mir gerne Kommentare unter dem Artikel hinterlassen ![]()
InstantRails 2.0 unter Windows installieren
Es gibt prinzipiell mehrere Möglichkeiten Ruby on Rails aufzusetzen, ich erkläre es aber anhand von InstantRails, weil es meiner Meinung nach ein sehr komfortabler Weg und einen leichten Einstieg ermöglicht, ähnlich XAMPP.
- InstantRails: Komplettpaket aus Apache (inkl. PHP) + MySQL (inkl. phpMyAdmin zur Administration der DB), Ruby (inkl. Rails) und RubyGem
InstantRails stellt das Komplettpaket mit zwei Beispielprojekten zur Verfügung und kann mit nur wenig Aufwand auf einem Rechner ohne Installation (also ohne Veränderungen am Betriebssystem) aufgesetzt werden. Dazu muss man sich von http://rubyforge.org/projects/instantrails/ InstantRails 2.0 herunterladen. Nach dem Download ist nur ein Entpacken in ein beliebiges Verzeichnis auf der Festplatte notwendig (z.B. D:\InstantRails\). Danach einfach D:\InstantRails\InstantRails.exe starten und die Nachfrage nach dem geänderten Pfad bestätigen. Dabei wird die Umgebungsvariable PATH um den Ruby-/Railspfad (in meinem Beispiel also um D:\InstantRails\) erweitert und ist danach von jedem Ort aus über die Shell erreichbar. Das heisst, dass man nicht immer extra den kompletten Pfad zur ruby.exe angeben muss, sondern in jedem Verzeichnis direkt mit ruby <command> arbeiten kann. Sehr praktisch
Nach dem Starten sollte man gleich ein Update auf die aktuelle Version per Commandline durchführen, da das InstantRails 2.0 seit Dezember 2007 scheinbar nicht weiter gepflegt wird. Dazu gehen wir in unsere Eingabeaufforderung und geben folgenden Befehl ein:
gem update rails --include dependencies
Dieser Befehl updated Rails auf die aktuellste verfügbare Version. Der Parameter --include dependencies ist hier eigtl. überflüssig, er gibt einfach an, dass die Updates auch auf die Abhängigkeiten auf Gems innerhalb von Rails-Projekten beachtet werden sollen. Da wir aber noch kein Projekt angelegt haben, ist dieser Befehl an dieser Stelle nicht wichtig.
Wer wie ich lieber mit MySQL statt SQLite 3 arbeiten möchte, der sollte auch noch den Befehl
gem install mysql
ausführen lassen, damit auch die aktuellste MySQL-Gem installiert wird. Erst danach kann auch der MySQL-Adapter unter Rails verwendet werden. Standardmäßig arbeitet Ruby on Rails aber mit SQLite 3.
Den Apache brauchen wir übrigens nur für den Zugriff auf phpMyAdmin, der komfortablen Oberflächer zur Wartung von MySQL-Datenbanken. Da phpMyAdmin in PHP geschrieben wurde, ist hier natürlich auch das Modul PHP für den Apache konfiguriert. Zu erreichen ist die Datenbank dann über http://127.0.0.1/.
Das wars auch schon, die Entwicklungsumgebung ist geschaffen. Ab jetzt kann man damit beginnen ein eigenes Ruby on Rails Projekt zu starten. Als Editor kann ich Aptana RadRails empfehlen. Zu finden ist dieser auf Eclipse basierende Editor unter http://www.aptana.com/products/radrails. Er ist sehr mächtig im Umgang mit Rails-Projekten. Man behält einfach den besseren Überblick über die gesamte Projektstruktur. Es macht einfach Sinn diesen Editor zu nutzen, zumal er kostenlos ist!
Hinweise bei der Verwendung von MySQL: Um Probleme beim Starten des Mongrel vorzubeugen, muss die libmySQL.dll von <InstantRails>\mysql\bin\ nach <InstantRails>\ruby\bin\ kopiert werden.
Im nächsten Teil werde ich dann erklären wie man sein erstes Projekt unter Ruby on Rails beginnt und wie Ruby on Rails dabei vorgeht.
Was ist Ruby on Rails?
Es ist schon einige Zeit her, dass ich mich das letzte mal zu Wort gemeldet habe - Zeit genug um neues auszuprobieren.
Genauer gesagt 'Ruby on Rails'. Ich spiele schon eine ganze Zeit damit rum, wollte einfach mal testen wie es so ist, was es kann und überhaupt wie es denn funktioniert. Zuerst war mir nur der Begriff 'Ruby on Rails' bekannt, aber dass es eigtl. ein Framework für die Sprache Ruby ist, wusste ich nicht. Naja, und ein Umstieg auf Frameworks wollte ich sowieso schon lange in Erwägung ziehen. Kommt also sehr passend, dieses RoR.
Ja gut: gelesen und getan. Da gab es eigtl. nur ein Problem: meine bisherigen Arbeiten bezogen sich immer auf eine relativ 'geordnete' Apache-Umgebung, RoR bringt hier sehr viel neuen Wind ins Geschehen - Begriffe wie WEBRick, Mongrel, Rake, MVC, DRY, GEMs, ... sind hier anzutreffen. Naja okay, da musste ich durch. Nach einiger Einlesungszeit habe ich dann auch so langsam aber sicher verstehen können, wie der prinzipielle Aufbau von Rails funktioniert.
Am Anfang war der Rubin - Ruby
Es gibt die Sprache Ruby, diese wurde im Dezember 1995 von Yukihiro 'Matz' Matsumoto. Yukihiro stammt aus Japan, die Sprache wurde aber erst ab dem Jahr 2000 in anderen Ländern bekannt. Durch die Lizenzierung unter der GPL verbreitete sie sich aber relativ schnell und fand viele Anwedungen auch außerhalb von Japan. Die Sprache entstand hauptsächlich aus der Unzufriedenheit verfügbarer Skriptsprachen heraus. Sie lehnt an Perl und Python, sowie LISP, Ada, JavaScript und weiteren ähnl. Sprachen an.
David Heinemeier Hansson veröffentlichte im Juli 2004 erstmals das Webapplication Framework Ruby on Rails - das wie der Name schon sagt, auf Ruby aufbaut. Es wurde so entwickelt, dass ein ständiges Wiederholen von bereits geschriebenem Code verhindert wird, indem es das DRY-Prinzip ("Don't repeat yourself") verfolgt und "Konvention vor Konfiguration" gilt. Das ermöglicht agile Softwareentwicklung, indem eine schnelle Umsetzung der geforderten Spezifikationen einer Software möglich wird.
Zu dieser schnellen Umsetzung wird es erforderlich gewisse Richtlinien einzuhalten, damit das Framework auch weiß, wie es mit der relativ geringen Menge an Code umgehen soll - genau das ist "Konvention vor Konfiguration". Und durch die zwangsläufige Einhaltung des Model-View-Controller Musters (kurz MVC) ist für jeden Rails-Entwickler möglich, sich problemlos in anderen Rails-Projekten zurecht zu finden.
Wissenswertes zu Akkus
Akkus sind heutzutage meistens aus den chemischen Elementen Lithium-Ionen (LiIon) und NiMH (Nickel-Metallhydrid) zu finden. NiMH werden hauptsächlich für Zellen der Bauform Typ AA und Typ AAA, sowie allen gänigen Formaten für die meisten elektronisch betriebenen Utensilien gebaut. LiIon-Akkus für Geräte mit hohem Energiebedarf wie z.B. Laptops, Mobiltelefone und Co.
Da ich mich etwas intensiver mit dem Thema Akkus auseinandergesetzt habe, will ich hier einige Dinge erläutern die wahrscheinlich auch anderen Lesern behilflich sein werden. Zu diesem Zweck hab' ich einige Fragen zusammengestellt.
- Was bedeutet eigtl. mAh?
- mAh steht für Milliampere Stunden (engl. h = Stunden; 1000 mA = 1 Ampere)
- Für was steht mAh und was gibt mir dieses Maß an?
- Milliampere geben die Stromstärke einer Zelle an, je höher die angeg. Zahl ist, umso länger kann man mit dem Akku arbeiten
- Welches Ladegerät sollte ich benutzen, wenn ichs eilig habe?
- Es gibt Schnellladegeräte, diese können Akkus in wenigen Stunden aufladen. Der Vorteil ist natürlich, das die Akkus schnell voll geladen werden. Das Problem besteht aber darin, dass der Akku dabei mit einer - für diese Akkus - sehr großen Stromstärke (um ca. 1000-2000mAh) geladen werden, was dem Akku auf Dauer nicht gut tut. Ab und zu macht das natürlich nichts, man sollte aber in Zukunft Vorausplanen und Akkus etwa 24 Stunden mit einem geringen Stromfluss (bei etwa 120-400mAh) aufladen, das verhindert, dass der Akku zu heiß wird und damit nicht überhitzt.
- 24 Stunden aufladen? Geht das nicht schneller?
- Klar, es gibt Ladegeräte bei denen kann man die Stromstärke manuell regeln und es gibt auch Ladegeräte die regeln das automatisch. Die billigen aus dem Supermarkt haben meist nur eine Einstellung, bei diesen muss man die eingerichtete Stromstärke so hinnehmen. Ein Ladegerät das unterhalb von etwa 500mAh Akkus lädt sollte optimal sein und die Akkus am wenigsten belasten. Das kostet zwar Zeit, die lohnt sich aber! Bei einer Schnellaufladung sollte man niemals einen Ladestrom größer als 1/4 der Kapizität des Akkus anlegen, bei einem Akku mit 2400mAh enstpricht das dann 600mAh als Maximalwert.
- Wie berechne ich die Ladezeit eines Akkus?
- Für NiMH/NiCd: (Kapazität des Akkus in mAh) / (Ladestrom in mA) x 1,4 = benötigte Zeit in Stunden (der Multiplikator 1,4 kommt von der benötigten Arbeit (etwa 30-40% bei NiMH), die eine Zelle mehr braucht um vollständig aufgeladen zu werden)
- Wieso sind manche Ladegeräte so teuer, die laden doch auch nur, oder nicht?
- Nein! Es gibt sehr viele Unterschiede bei Ladegeräten. Die Hauptmerkmale liegen dabei auf Ladestrom (mA), automatischer Umschaltung in Erhaltungsladung, Überhitzungsschutz, Enladefunktion (nur für NiCd notwendig, werden aber - aufgrund der giftigen Inhaltsstoffe - nicht mehr verkauft) und Check-Test-Zyklen zum dyn. entladen/laden, falls notwendig. Ladegeräte für nur wenige Euro haben diese Funktionen definitiv nicht, außer es gibt irgendwo ein super Angebot dazu (dann möchte ich den Link haben!). Bei Ladegeräten ab etwa 30 Euro finden sich diese "Pflege-Lader". Man kann dann einfach selbst bestimmen, ob der Akku schnell geladen werden soll oder eben nicht. Die Funktion "Defekt", die es bei einigen Ladern gibt, gibt zusätzlich noch an, ob der Akku zum Sondermüll wandern kann. Die wichtigste Funktion ist aber die automatische Umschaltfunktion in Erhaltungsladung. Das bedeutet, dass das Ladegerät aufgrund eines Mikrocontrollers selbständig erkennt, wann ein Akku voll aufgeladen ist und diesen dann nicht weiter 'brät', sondern schön mit der Stromstärke runterfährt und den Akku auf diesem Lade-Niveau hält.
- Muss man NiMH Akkus entladen bevor man sie auflädt?
- NiMH Akkumulatoren haben eben genau diese Eigenschaft, dass sie in jedem Zustand aufgeladen werden können. Sie bußen dabei keine Leistung ein.
- Kann ich Akkus eine lange Zeit lagern, ohne dass ich sie dann vor der Verwendung laden muss?
- Generell sollte man Akkus erst dann komplett aufladen, wenn man sie unmittelbar danach verwenden möchte. Es gibt von einigen Herstellen aber weiterentwickelte Typen, die über eine geringere Selbstentladung verfügen.
- Was sind das für Akkus, die man so lange lagern kann?
- Diese haben durch ihre Superkristallgitter-Legierung der Kathode und durch die geänderte Nickelhydroxid-Legierung der Anode die Eigenschaft über die Zeit weniger Ladung zu verlieren als Akkus ohne diese Veränderungen. Der 'Trick' besteht im Grunde darin, dass ein chemischer Abbau verlangsamt wird und somit nur etwa 15% im ersten Monat und anschließend pro Jahr nur etwa 15% an Kapazität verloren gehen. Der eingesparte Platz innerhalb der Zelle nimmt Platz für mehr Grundkapazität. Aus diesem Grund gibt es die NiMH-Akkus mit geringerer Selbstentladung (englisch low self-discharge NiMH battery, LSD-NiMH) auch nur mit geringerer Kapizität als gewöhnliche NiMH-Akkus von rund 2000mAh. NiMH-Akkus bieten für Bauformen vom Typ AA eine Kapizität bis zu 3000mAh. Das ist aber nicht wirklich eine Einbuße, denn von der vorhanden Kapazität kann schließlich auch viel mehr genutzt werden. Zum Vergleich: herkömmliche NiMH-Akkus haben eine Selbstentladung von etwa 15%-50% pro Monat!
- Wie Lagere ich NiMH-Akkus, die ich lange Zeit nicht benutze?
- Akkus von denen man weiß, dass man sie in den nächsten Monaten nicht brauchen wird, sollte man etwa bis zur Hälfte entladen und an einem kühlen, trockenen Ort ab etwa o°C lagern. Am besten im Kühlschrank, allerdings auch so verpacken, dass Lebensmittel nicht damit in Berührung kommen können. Das ist die schonendste Variante für den Akku. Man muss aber ebenfalls darauf achten, dass Akkus einmal im Monat genutzt werden sollten, d.h. 'verbrauchen' und wieder aufladen, damit der Akku lange hält und zwar auch dann wenn man diesen Kühl lagert.
- Was ist für gewöhnlich die optimale 'Arbeitstemperatur' für einen Akku?
- Etwa 0°C bis 40°C sind optimal
- Was ist eigtl. dieser Memory Effekt (Lazy-Battery-Effekt)?
- Der Memory-Effekt tritt nur bei NiCd-Akkus auf und kann durch etwa fünf Lade-/Enladevorgänge behoben werden. Akkus sind immer dann davon betroffen, wenn sie vor dem laden nicht vollständig entladen wurden. Diese werden bei vielen elektronischen Geräten dann als "leer" angezeigt, obwohl noch Kapazität vorhanden ist. Das liegt daran, dass die Spannung dadurch etwas geringer ist, als sie eigtl. sein sollte.
- Sollte ich meinen Laptop-Akku bei Netzbetrieb rausnehmen?
- Diese Frage findet man häufig. Die elektronische Steuerung eines Laptops funktioniert so gut, dass sie einen vollen Akku erkennt und diesen nicht weiter auflädt, was zu einer Überhitzung führen könnte. Deshalb macht es keinen Unterschied, ob der Akku im Laptop ist oder nicht. Es ist sogar sehr vorteilhaft einen Akku ständig drin zu behalten. Man beachte den Fall eines Stromausfalls (der ist zwar relativ selten, aber möglich): hier würde sich ein Akku bezahlt machen, denn er überbrückt ähnlich einer USV (unterbrechungsfreien Stromversorgung) die Zeit, in der kein Strom aus der Netzsteckdose verfügbar ist. Zudem sollte der Akku sowieso monatlich 'arbeiten', damit er keinen Schaden erleidet und mindestens einmal geladen werden.
Ich muss sagen, ich habe wieder mal was dazu gelernt und habe mir im Kalender schonmal einen 'Battery-Day' eingetragen, um meine Akkus monatlich zu 'pflegen'. Allerdings mache ich das nur mit denen aus meiner Kamera, dem Laptop und dem passenden Zubehör, für alles andere ist mir das nicht allzu wichtig!
Zugriffsrechte in CMS managen
Ich bin gerade dabei eine Möglichkeit für das Rechtemanagement innerhalb eines CMS zu schaffen. Ziel soll es sein, Gruppenrechte zentral über alle Bereiche des CMS zu managen. Das ganze soll in ein bereits vorhandenes System eingearbeitet werden. Es soll sowohl die Navigationsstruktur, sowie die zuständigen Controller (zur Steuerung mit Request-Parametern innerhalb des Webportals) und das Modul, das diese Rechte verwaltet davon berüht werden.
Es gibt fünf Benutzergruppen. Die Konfiguration soll, je nachdem welcher Benutzer gerade mit dem System arbeitet, die jeweiligen Berechtigungen zur Laufzeit aus einer Konfigurationsdatei laden. Die Konfigurationsdatei ist bis jetzt händisch zu pflegen. Eine genaue Planung, ob die Berechtigungen später noch über eine Datenbank gepflegt werden soll, gibt es bis jetzt noch nicht. Evtl. werde ich mir da noch was überlegen. Da das ganze aber sowieso auf modulare Art und Weise aufgebaut ist, ist ein Austausch aber jederzeit unkompliziert möglich.
Canon EF-S 55-250mm Testbilder
Einige Testbilder mit der Canon EOS 1000D und dem Canon EF-S 55-250mm 4,0-5,6 (mit GeLi ET-60)
Die Bilder wurden nachträglich nicht bearbeitet!
Objektivvergleich Canon EF-S 18-55 / EF-S 55-250
Ich habe heute einen kleinen Test gestartet und das Canon EF-S 18-55mm 1:3,5-5,6 IS mit dem Canon EF-S 55-250mm 1:4-5,6 IS auf der Canon EOS 1000D verglichen.
Hardware:
- Canon EOS 1000D
- Velbon CX 560 Stativ
- Phottix Fernauslöser (kabelgebunden)
- HOYA Circular Polfilter (58mm)
- Canon EF-S 18-55mm 1:3,5-5,6 IS mit Canon EW-60C GeLi
- Canon EF-S 55-250mm 1:4-5,6 IS mit Canon ET-60 GeLi
Einstellungen:
- IS und AF war bei beiden Objektiven eingeschaltet
- kein Blitz
- ISO 800 voreingestellt
- Av-Modus für Blendenauswahl mit automatischer Wahl der Belichtungszeit
Persönliche Meinung: Das Motiv des Telezooms hat meiner Meinung nach schönere, sattere Farben. Allerdings sollte man bei der Einstellung Av berücksichtigen, dass die Belichtungszeit automatisch ermittelt wird. Da hier beide unterschiedlich sind werde ich den Test unter gleichen Bedingungen wiederholen.
Folgende Bilder ergaben sich beim direkten Vergleich der Objektive bei 55mm:
Canon EOS: Anzahl der Ausloesungen ermitteln!
Jeder der schon einmal eine gebrauchte digitale Spiegelreflexkamera verkaufen oder aber auch kaufen wollte/will weiß, dass die Anzahl der bisherigen Auslösungen beim Kauf eine zentrale Rolle spielt. Bei den Modellen der professionellen EOS 1x Reihe ist das ganze kein Problem, doch wie schaut es bei den semi-professionellen und Einsteigerkameras aus?
Dafür gibt es natürlich von Haus aus keine Lösung, aber aufgepasst, eine findige Person hat es doch hinbekommen diverse Einstellungen aus der Kamera auszulesen. Wie man dafür vorzugehen hat, erfahrt ihr natürlich hier.
Aber ACHTUNG: Das Programm läuft ausschließlich unter Microsoft Windows! Einen Link zu der MAC-Variante findet ihr jedoch ebenfalls unter dem nachfolgenden Link.
- Download der „setupeosinfo.exe“
- Installation dieser
- Anschließen der Kamera via USB-Kabel an den PC
- Starten von „EOS Info“
- „Shutter Count“ auslesen
- –fertig–
Unterstütze Kameras: 40D, 50D, 450D, 1000D
Ich hoffe sehr allen Leidgetragenen eine Hilfe gewesen zu sein









