Take a look to knpbundles.
- problem is solved in other language
- problem is solved in other licence
- can be solved by design patterns (abstract solution)
- write a good bundle/component that is general enough takes much more time
Reuseage by copy and paste.
- decreases maintainability
- decreases testability
- violates dry principle
- community web application
- users seek other users by interests
- how to input data to easy up matching?
What Do We Need?
- form widget (js and css based)
- data transformer (converts format from storage to human readable presentation and back)
- form type (provides name for form widget, called in FormTypes, gets TagManager injected and defines DataTransformer)
- Entity Trait (avoid copy and paste)
- Taggable Subscriber
- Make it reusable (dedicated bundle, created composer project)
Available on github
This talk contains information about architecture.
When have done this for quite a while.
This works best in the past.
General solution was to add more hardware and that leads to more errors.
- monolithic architecture
- normalized data (in database)
- pull-principle (browser is build per request)
- full page cache is bad
- edge site include (for varnish/ESI) is also not the best solution
We are fast when:
- no real workload per request
- everything from memory
- denomalized data
How Often Does Data Change (From Rare To Often)?
Based on the example of a shop system.
- product information
Who Changes Data?
- product manager
- receipt of goods / outgoing goods
- images and static content is deliverd by static content webserver
- only dynamic part is done by php
- snippets are deliverd, not full pages
Benefit of key-value-store (for example redis) is, that the database itself can die and the only thing that happens is, that the entries are becoming obsolete.
But What About Filternavigation?
Use a searchengine that returns simple a collection of product keys. Use this product keys and ask the key value store to fetch product data.
But What About Personalization?
- use snippets with variables and default values
- fetch this snippet in the key value store
- thanks to "time to death" feature provided by many key-value-stores, you can easily define "special offers" per day and so on
Nice meetup, incredible how many people are attending already.
2013-09-10 Hamburg, Otto, Loft 06
Define The Unspeakable
moral concepts (negotiable)
- freaked out / nerdic
- cutting edge
They are teached/ already at school level (errors are bad, don't do something wrong).
- what can i do
- who am i able to add critic to
- fellow men
From the school already, we get trained to:
- it is bad to say "that was my fault"
- shift the know error to others
- there is one majority out there who decides if this is a bad error
- be perfect
- always have a fallback (not to lose the face)
Define A Good Error Culture
This goals can be achived by exemplify the following steps (best by upper management but important for all).
- "good" is enough
- no fear of mistakes
- many/fast update cycles (don't try to do big jumps, doing small steps results in small mistakes)
- to take the blame is not important
- do not repeat your mistakes
- do small and usefull steps (validate if your change contains a "only if")
- use and understand the Twelve Principles of Agile Software
- celebrate reached goals
Slides are available on judiths page. Again a nice talk and incredible what kind of easy mistakes we are doing in our regular live.