- Presentations: http://qafoo.com/resources/presentations/presentations.html
- AngularJS Best Practices: Directory Structure
- Digest: AngularJs variable not updating
- Overview of main features and how it's better than backbone (see this).
Controller as
syntax described here- Let's code a calculater using AngularJS.
- What to explain:
- arguments are passed to controllers by using dependency injection, always use the long version as minifiers will break the application since minified variable names no longer correspond the right service providers.
- data should be stored in services unless they should be bound to a scope. Services are singletons, controllers are not. Inject a data service to share the same data across multiple controllers.
- Prefer
{{user.name}}
```
over
```
{{user.name}}s
{{user}}
```
if you intend to update the user name in both directives. See `8 Scoping $scope's`.
* Pay attention when handling large collections with `ng-repeat` with filtering. See [this](http://www.reddit.com/r/angularjs/comments/2i5mvv/a_simple_trick_ive_used_to_improve_responsiveness/)
* Use Batarang
* use `ng-annotate` (btford/ngmin#93) if `ng-min` doesn't perform well or if it's not doing the job correctly.
* definition minification: (show minified and non-minified code side-by-side) it's not about obfuscation, though the minified code is not really readable. On the other hand minified code can easily be unminified and IDEs such as PhpStorm have great support on following references.
* Readings
* [The Top 10 Mistakes AngularJS Developers Make](http://www.airpair.com/angularjs/posts/top-10-mistakes-angularjs-developers-make)
* [Things I Wish I Were Told About Angular.js](http://ruoyusun.com/2013/05/25/things-i-wish-i-were-told-about-angular-js.html)
Node.js & Express
-----------------
{{user}}
Youtube:
- phpsessid Session hijacking ~ Hack user account
- Cross site scripting attacks (XSS), cookie session ID stealing -Part 2
- Behat
- Integration with PHPUnit (old post)
- Codeception
- PHPUnit
- Assertions
- Expect exceptions
- Data providers (1 dot per test)
- Mocking
- AngularJS
- Behaviour Driven Development with Javascript
- Vier Wege in den Docker Container
- Guidance for Docker Image Authors
- 14 great tutorials on Docker
- Dockerfile Reference
- Managing Data in Containers
- Use the array notation for the
RUN
command to make use of the cache. See this - This explains well the difference between container and VM images.
- Where to get an image?
- Build the images yourself: https://github.com/dockerfile, http://dockerfile.github.io/
- How to run your first docker container?
- How to create a full-fledged docker image?
- How do I get inside my containers?
- How to control docker containers in PHP?
- How to sniff the traffic
- Wireshark display filter:
tcp.port eq 9999 and http
(works only if tcp socket is used) - socat proxy when using unix domain socket
... socat -t100 -x -vv unix-listen:/tmp/docker.sock,mode=777,reuseaddr,fork unix-connect:/tmp/docker.sock.orig ...
- Wireshark display filter:
* Docker can be controlled in PHP by using Docklet.
* [Docker & Ansible](http://docs.ansible.com/docker_module.html)
* Commands
* `docker rm -f $(docker ps -a -q)`
* `docker rmi $(docker images -q)`
* you can specify container name/id (id can be partial, name also?)
* [Provision with Vagrant](https://docs.vagrantup.com/v2/provisioning/docker.html)
* [Wikipedia: Docker](http://de.wikipedia.org/wiki/Docker_%28Software%29)
* [Renaissance der Container-Virtualisierung mit Docker](http://www.admin-magazin.de/Das-Heft/2014/02/Renaissance-der-Container-Virtualisierung-mit-Docker)
* [Run metrics](https://docs.docker.com/articles/runmetrics/)
Orchestration/Packaging
-----------------------
* Vagrant
* Chef/Puppet
* [Ansible](http://www.ansible.com/application-deployment)
* [Integration with Vagrant](http://docs.ansible.com/guide_vagrant.html)
* The DevOps Security Handbook: Building Security in With Chef
* [Part I](http://www.markerbench.com/blog/2013/10/01/chef-starter/)
* [Part II](http://www.markerbench.com/blog/2013/10/03/chef-2nd-course/)
* [Part III](http://www.markerbench.com/blog/2013/10/06/chef-3rd-course/)
* [Puppet SSL Explained](http://www.masterzen.fr/2010/11/14/puppet-ssl-explained/)
Continuous Integration
----------------------
* http://phpundercontrol.org/
* [Jenkins]()
* [Continuous Delivery Using Build Pipelines With Jenkins and Ant](http://www.methodsandtools.com/archive/archive.php?id=121)
* [How to run multiple jobs in parallel more than 1 level deep?](http://stackoverflow.com/questions/13366167/jenkins-hudson-how-to-run-multiple-jobs-in-parallel-more-than-1-level-deep)
* [Template for Jenkins Jobs for PHP Projects](http://jenkins-php.org/)
* [CruiseControl](http://cruisecontrol.sourceforge.net/gettingstartedbindist.html)
* [CodeShip](https://codeship.com)
* [ContinuousPHP](http://continuousphp.com/)
Monitoring Tools
----------------
* Uptime
* [Remonit](http://zef.io/remonit/)
* Munin
* Icinga
* https://github.com/Icinga/
* https://github.com/Icinga/icinga-vagrant
* https://www.icinga.org/
Some others listed [here](http://serverfault.com/questions/44/what-tool-do-you-use-to-monitor-your-servers).
Build Tools and Dependency Managers
-----------------------------------
* Composer
* [In-Depth with Composer](http://slides.seld.be/?file=2012-09-14+In-Depth+with+Composer.html#1)
* Grunt
* Phing
* [Building and deploying PHP applications with Phing](http://de.slideshare.net/michieltcs/building-and-deploying-php-applications-with-phing)
* [Idiot-Proof Deployment with Phing](http://www.lornajane.net/posts/2011/idiot-proof-deployment-with-phing)
* Bower
* NPM
* http://djebbz.github.io/npm-paris-js/#/
* http://qafoo.com/services/tools.html
Quality Assurance
-----------------
* [PHPQAtools](http://phpqatools.org/)