Skip to content

Instantly share code, notes, and snippets.

@peinwag
Created June 4, 2012 11:04
Show Gist options
  • Save peinwag/2867750 to your computer and use it in GitHub Desktop.
Save peinwag/2867750 to your computer and use it in GitHub Desktop.
ipc notes
-----------------------------
Day 1 04.06.2012
-----------------------------
Profiling PHP Applications
-----------------------------
- don't do micro optimizing (echo is faster thant print etc..)
- find out what is slow
- benchmarking with siege (http://www.joedog.org/siege/index.php)
- vmstat (http://linuxwiki.de/vmstat)
- timing points (place them arround spefic events bootstrapping...)
- xdebug (http://xdebug.org/ - https://github.com/derickr/xdebug)
- tracefile analyser => statistics on tracefiles (showing most costly calls)
- ValaXdebugTools (https://github.com/technosophos/ValaXdebugTools)
- XHProf (http://php.net/manual/de/book.xhprof.php)
- XHGui
- Valgrind / Cachegrind
M-Payment - aus der Vision wird Wirklichkeit
-----------------------------
- people want to buy anywhere and any given time
- too many different payment methods...
- M-Payment 6 Mrd € vs. normal payment 24 Mrd €
- Travel very strong in M-Payment
- aim in m-payment ==> mobile payment with nfc
- bridging technologies
- square (iPhone iPad apps) - {square register}
- only possible in countries where credit cards are used more often
+ Paypal QR
- buy products via qr codes
- Mobile Wallets
- google wallet
- everyone is used to pay with cc or money
IPC Welcome Session (Thomas Wießeckel, Pierre-A. Joye)
-----------------------------
+ Php problems
- slow release
- unsecure
+ Rfc process very important => all about voting (https://wiki.php.net/rfc)
+ community has to contribute to enhance the language itself
+ faster progress with platforms like github
+ make more tests in order to reduce releases
Einführung in Symfony2
-----------------------------
+ it's a set of components (only few dependencies)
+ it's a full stack framework
+ doctrine as an orm is recomended but not a must
+ "web" folder => document root
+ "bundle:"
- actual code of the application
- compilation of features
- a bundle contains code (models, controller, templates, assets)
- symfony console
+ create a bundle: ./app/console generate:bundle
+ configuration formats (yml,xml,php,annotations)
+ the framework itself is also packed in bundles
+ Controller:
- symfony is a http framework
- Frontcontroller -> bootstraps the application
- it's possible to easysily change the environment
- routing:
- @Route("/hello/{name}", name="_demo_hello")
- templates:
- @Template("AcmeDemoBundle:Demo:index.html.twig") or via
return $this->render("AcmeDemoBundle:Demo:index.html.twig",
array('param')); in the action
- forms (http://symfony.com/doc/current/book/forms.html):
- forms are not validated => domain objects are validated
- validation via annotations
- preconfiguration via AbstractType
+ Error handling
- kicks ass
+ Profiler
- per default enbaled on dev env
- whole database behind the profiler, logs every request/mails and lots of other stuff
The Symfony CMF project
-----------------------------
+ cms framework (http://cmf.symfony.com/)
+ decoupled cms with clear defined apis
+ supports I18n
+ http://cmf.symfony.com/slides/why_symfony_cmf.html
+ no cms but a framework to build a cms
+ http://phpcr.github.com/slides.html#1
+ http://jackrabbit.apache.org/
wetter.com: A complex high traffic website with Symfony2 and Varnish
-----------------------------
+ 656 mio visits in 2011
+ 13,22 mio unique visitors per month
+ largest german weather portal
+ many cooperations (oem versions focus,n24)
+ the project:
- complete rewrite, new cms, search sf2 frontend
- TFT (CMS chameleon, search solr)
- integration of cms search and weather data wieth sf2 based system
- ===> in 100 days
- up to 5 mio visits per hour peak load, max possible cache hit rate, no php sessions
- Requirements:
- Search for location, display maps w. overlays and animations
- display weather data, inject advertising, page structure editable
- massive own content, self registration, different user levels
+ Caching
- browser cache, varnish page cache, varnish ESI Cache, TWIG template cache, cms cache
+ Varnish (https://www.varnish-cache.org/)
- reverse proxy with strong http caching abilities
+ Assetic
+ PHP 5.4 boosts performance by 10-30% for free
Concepts of Success: Choose Your Framework
-----------------------------
+ frameworks good points bad points
- ZF:
- abstraction
+ abstraction
- Flow3:
- waiting for autocompletion (generated)
+ less typing
- Symfony:
- complexity
+ flexibility
+ biggest challenge
general:
---------
- ZF: People want the framework to work in a different way, combining all wishes is hard
- Flow3: release early, release often doesnt work on frameworks
- Symfony: managing the amount of contributers
technical:
-------------
- ZF: Forms
- Flow3: AOP
- Symfony: Session refactoring
+ you learn a lot while writing your own framework
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-----------------------------
Day 2 05.06.2012
-----------------------------
This Way or the other Way?
-----------------------------
+ http://www.slideshare.net/spriebsch/this-way-or-the-other-way
+ A/B Testing
+ Experiment Driven Development (http://vanity.labnotes.org/)
+ run different code on different user bases
+ rate the feature
+ feature flags (ugly)
+ run experiments by switching classes (https://github.com/spriebsch/edd)
- create objects without specifying the exact class
- master child factory concept
+ session based expirements
+ mind the statistical significance
+ experiments can span a whole session but the descision is only made once
+ an experiment is run by swapping (potentially multiple) classes
Change is inevitable (except from a vending Machine)
-----------------------------
+ temporal patterns
+ http://www.slideshare.net/spriebsch/change-is-inevitable-except-from-a-vending-machine
+ https://github.com/spriebsch/temporal_patterns
+ audit log
- track and trace who has done what?
- A simple log of changes,intended to be easily writtenand non-intrusive
+ lots of code in this talk see github and slides
Technologies Beyond the Hype - Schein und Wirklichkeit der Mobilen Trends
-----------------------------
+ dont trust the hype (instagram)
+ context is missing why/where use it?
+ ux/ui not suitable
+ nfc (dr. florian resatsch)
+ Location based services
+ social (steanie hoffmann)
- digital layer over the rl
+ augmented reality (tobias tippmann)
+ Mobile Marketing (Haradl Neidhardt)
The five Dysfunctions of a Team
-----------------------------
+ Absence of trust
- in order to trust someone you need courage, because you'll get vulnerable
- methods of building trust
- personal histories
- behavorial profiling
+ Fear of conflict
- no one is willing to tell the truth
- artificial harmony is dangerous
- Performing => (Re-)Forming => Storming => Norming => (teambuilding process)
- Mastering conflicts
- conflict profiling
- conflict norming
- conflict mining (more a teamleader job)
+ lack of commitment
- clarity disagree and commit
- decide wether you are in the first or the second team
- write down what you agreed up on
- cascading communication
+ Avoidance of accountability
- not being repsonsible for your mistakes
- write down what every does right now
+ inattention to results
- focus on results
- celebrate results
- dont be a lemming
Continuous Deployment
-----------------------------
+ cancelled
CSS3 Produktiv nutzen
-----------------------------
23 Dinge, die Sie über Softwareentwicklung in Teams wissen sollten
23 things, you should know about softwaredevelopment in teams
-----------------------------
+ theorie vs. praxis
+ Tools and code
- establish collective code ownership
- the whole code belongs to every developer
- every developer is told to fix bugs or refactor code at all places in the source code
- reduce the "truck factor"
- introduce a VCS
- standardize the development environment for every developer
- introduce coding standards
- saves time
- just do it
- use default coding standards from your prefered framework
- enforce your standards
- integrate the standard in your build process (hooks)
- boyscout rule....?
- introduce code reviews
- code gets better more people on the same code
- every developer gets better (discussions about code)
- good for team building
- ensure your build process is reproduceable
- saves time and worries
- write tests!
- reduces fear
- integrate your builds!
- CI
- continuous delivery
- don't always use a tool
+ People and processes
- communication decides of fail and success
- do the developers understand the customer
- does the customer know what the developer is about to deliver
- do the developers understand each other
- do developers understand what qs needs
- make possiblities for communication
- meet face 2 face !
- video conference
- im
- micro blogging
- find creative ways to communicate
- eat together
- dont use the default/best/coolest process
- there's always more than one process
- official process
- the recognized process
- the real process
- agile != unplanned
- plan and estimate with the whole team
- playfully everythings easier
- gamification
- only teams which change will be successful
- requirements change
- technologies change
- accept changes
- who moved my cheese?
- question the status quo
- recognize changes
- launch changes
- prevent a "culture of fear"
Deployment == Annoyment?
-----------------------------
+ http://www.slideshare.net/TheSeer/osi-days-2011-deploymentannoyment
+ how to get the stuff to the production servers
+ possibilities
- sftp upload
- rsync
- directly from vcs
- via ide
+ cool but what about dependencies?
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-----------------------------
Day 3 06.06.2012
-----------------------------
Das beste Build-System der Welt
-----------------------------
+ build system = efficency
+ a buildsystem builds your components
+ lots of components in modern web applications (jquery, dojo, sass...)
+ nobody needs unit tests on live machines
+ generate config files which look different than the one on the dev system
+ how to rate build systems
- easy to learn
- customizable
- established
- platform independent
+ shell scripts
- pros: full availability of all unix tools
- cons: hard to read, not platform independent
+ make
- pros: powerful patterns, time checks not needed, platform independent
- cons: complex, different make tools, problems with recursion
+ rake
- pros: Ruby gems!, readability, platform independent
- cons: hard to learn, filesize, lots of manual effort
+ ant
- pros: readability, platform independent, lots of predefined tasks, build own tasks
- cons: filesize, java, hard to learn
+ and the winner is: ANT (http://ant.apache.org/)
+ https://github.com/newLoki/buildsystems
Why the cloud sucks
-----------------------------
+ webspace and computing power when you need it
+ private cloud services
- dropbox, icloud, gmail, flickr, instagram, skydrive ...
- problems:
- one password = all data
- burglary = access to all data
- unsufficient data encrpytion
- privacy not given
- no certainty that all data is deleted
- maybe it takes longer to upload data than the effort of it
- Availability:
- total dependency to the service
- bills not paid => data gone?
- service quits
- internent connection required (almost) every time
- Dropbox and security
- no double opt in
- data is encrypted on server side
- 2 serious security bugs
- public folder is available in default version (files searchable via google)
+ What should be saved in the cloud?
- published documents
- no neccessary data
- no personal data
- no privat/privacy data
+ cloud services for companies
- why everyone loves the cloud
- scalability
- flexibility
- no obligation
- cheap
- easy to use
- use cases
- handle load peaks
- backup
- diskspace
- content distribution
- dns services
- messaging services
- queing services
+ amazon aws
- first to provide cloud services
- lots of services: ec2, s3, sqs, ses...
- lots of service locations
+ privacy
- safe harbour (agreement eu => usa usa => eu)
- patriot act (lolz)
+ which service should be in located in the cloud?
- asynchronos services
- logfile analysis
- data aggregation
- video rendering
- image editing on service side
- only harmless data!
Qualitätssicherung bei Webprojekten
-----------------------------
+ more and more client logic
+ java script === quick & dirty
- in long term it's only dirty
+ what is qa?
- standards
- reliability
- stability
- extensibility
+ continuous inspection
+ continuous integration
- ci platforms (jenkins)
- fast response from your ci tool
+ tools
- jslinted (http://www.jslint.com/)
- cpd
- jasmine (http://pivotal.github.com/jasmine/)
- JsTestDriver (http://code.google.com/p/js-test-driver/)
- Selenium IDE
Deployment without the Chaos
-----------------------------
+ basicly a zend studio /server presentation :(
Immer am Optimum, Continuous Performance
-----------------------------
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment