Skip to content

web - The Ocean Is Broken

Ein australischer Seemann berichtet aus der See vor Japan.
What was missing was the cries of the seabirds which, on all previous similar voyages, had surrounded the boat.
The birds were missing because the fish were missing.

Wir reden hier von einer Distanz von 3000 nautischen Meilen. Und das ist nicht mal der Teil der Reise ab Japan, das ist bei Neuguinea. Der Grund ist, dass riesige Fischerboote da alles absaugen und wegtöten, was sie kriegen können. Ab Japan wurde es eher noch schlimmer.
"After we left Japan, it felt as if the ocean itself was dead," Macfadyen said.
"We hardly saw any living things. We saw one whale, sort of rolling helplessly on the surface with what looked like a big tumour on its head. It was pretty sickening.

Statt der Fische berichtet er von einem immensen Müllberg, der im Meer schwimmt.
Immerhin gibt es auch mal eine Antwort darauf, wieso niemand den Müll aus dem Meer fischt. Achtung, festhalten!

"But they said they'd calculated that the environmental damage from burning the fuel to do that job would be worse than just leaving the debris there."


quelle

Wenn man sich den ganzen Artikel durchliest, und das sollte man, wird man arg depressiv. Noch ein paar Beweise?

But they weren't pirates, not in the conventional sense, at least. The speedboat came alongside and the Melanesian men aboard offered gifts of fruit and jars of jam and preserves.
[...]
"They told us that his was just a small fraction of one day's by-catch. That they were only interested in tuna and to them, everything else was rubbish. It was all killed, all dumped. They just trawled that reef day and night and stripped it of every living thing."
Ivan's brother, Glenn, who boarded at Hawaii for the run into the United States, marvelled at the "thousands on thousands" of yellow plastic buoys. The huge tangles of synthetic rope, fishing lines and nets. Pieces of polystyrene foam by the million. And slicks of oil and petrol, everywhere.

"On the bow, in the waters above Hawaii, you could see right down into the depths. I could see that the debris isn't just on the surface, it's all the way down. And it's all sizes, from a soft-drink bottle to pieces the size of a big car or truck.
And something else. The boat's vivid yellow paint job, never faded by sun or sea in years gone past, reacted with something in the water off Japan, losing its sheen in a strange and unprecedented way.

Da kommt einen Muttis verrückter Plan zur Versklavung Südeuropas auf einmal so unwichtig vor :-(.

zend framework 2 (zf2) - where to find the default manager config key names

For exampe, you want to add your own controller plugin in the module.config, do you know the key name out of the box? Me neither, but i know where to look.
Open the ModuleManagerFactory and serch for view_helpers to get the spot where and how the configuration array key names are defined.
After this, the adding of your controller plugin is a solveable task :-).

Next Level DevOps And Softwarearchitecture Of A Modern Onlinegame - PHPUserGroup Meetup

Mindworks
Jarrestraße 42A
Hamburg

Next Level DevOps By Ole Michaelis

Preliminary Consideration

  • infrastructure is created by feature (but without clean up or cleaning things up)
  • did a practical training round in admin team for half a year

What Is DevOps?

  • you build it, you run it (until it goes offline)
  • monitor it, automate it, measure/metering it
  • build small tools and services to form an api

How Became A DevOp?

  • extend your development skills
  • learn and do refactoring
  • learn the shell
  • learn the operation system
  • pull deployment with deployment hooks

Softwarearchitecture Of A Modern Onlinegame By Tobias Rojahn

Preliminary Consideration/Requirements

  • crossplattform (mobile and web)
  • realtime game (fast information about status changes)
  • multiplayer (user can influence each other)

Architecture

  • user (request websocket from web server)
  • NodeJS (handles websocket connection to redis and global redis)
  • redis (message queue with push and pull)
  • php worker (long living php process, asks webservices or database, are forkable by using php forking mechanism)
  • if something is calculated by the php worker, the message is pushed in the global redis

The PHP Worker

  • long living workers
  • worker is observing the queue (and event handling) and is pushing the message to the dispatcher
  • each message has a type to push to the right controller
  • dispatcher is using the right controller (with a bunch of internal to external mapping and nearly zero logic)
  • controller is pushing the message to the right domain service (using the right domain objects and/or repositories)
  • controller is working with multiple db views
  • domain service can also call the event dispatcher to trigger other systems (not core systems)

Deamon

  • only creates messages
  • just time controlled game events

Cronjob

  • only creates messages

NodeJS

  • socket (via socket io) replaces session
  • add additional data (with indexes to gain speed) to the socket (via message queues from php)
  • node to php: send all data
  • php to node: a combination of data to all connected sockets
  • forwarding of fitting messages (with removing of internal datas)

Testing

  • API-Tests
    • description
    • ingoing message (test data)
    • outgoing message (expectations)
  • based on fitrues
  • only php layer
  • rollback on each test

Reusability Of Symfony Component - Mindworks

By Oliver
Mindworks
Jarrestraße 42A
Take a look to knpbundles.

Hurdles

  • 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

Anti-Pattern

Reuseage by copy and paste.

  • decreases maintainability
  • decreases testability
  • violates dry principle

Scenario

  • 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)
  • Use JavaScript and CSS via "composer component" (see web/bundles, RobLoach/component-installer)

Live Demo

Available on github