PHP Truth Table für die Vergleichsoperatoren == und ===

Man möchte in PHP wo immer es geht den strikten Vergleichsoperator === bzw. seinen Gegenpart !== nutzen. Warum? Die beiden folgenden Tabellen erklären es (grün bedeutet, dass der Vergleich true ergibt):

Vergleich mit == oder != („equal“)

Wenigstens ist die Matrix symmentrisch ;-)

Vergleich mit === oder !== („identical“)

Die Idee habe ich hierher: JS Comparison Table

Update: SplBool::true und SplBool::false eingefügt (Danke @bueltge)

Rennradtour „Dahme-Spreewald Essential: Straße” und BRouter

Wie drüben bei Strava versprochen, gibt’s hier ein paar Stichpunkte zur Planung meiner Rennrad-Runde zu Himmelfahrt 2020.

Die Idee war, zum Kraftwerk Jänschwalde zu fahren – die Wasserdampfwolken aus den Kühltürmen sieht man bei hervoragender Sicht manchmal hier vom vom Marienhofer Berg aus (Luftlinie 75 km) und ich habe schon oft gedacht: „da könntest du eigentlich auch mal hinfahren”.

BRouter

Mit BRouter war die Sache jetzt ganz einfach. Zuerstmal nach Peitz (Nähe Kraftwerk): Startpunkt in Bestensee, Ziel Peitz, Profil „fastbike-lowtraffic-tertiaries“: BRouter berechnet eine Route, die sehr gut aussieht. Ich setze noch einen Zwischenpunkt, da ich auf Hin- und Rückweg nicht zu viele Kilometer auf den selben Straßen fahren will. So ziehe ich den ersten Teil der Strecke etwas nach Nordosten raus. Das war’s auch schon.

Erster Teil der Strecke: Bestensee – Peitz.
Karte und Kartendaten © OpenStreetMap Contributors

Ich muss das glaube ich noch mal herausstellen: BRouter hat eine Strecke von gut 100 Kilometern mit nur einem Zwischenpunkt geplant! Die ersten zwei Drittel kenne ich relativ gut und wäre sie auch exakt so gefahren – das ließ mich davon ausgehen, dass der Rest der Strecke ebenfalls passt.

Für den Rückweg hatte ich die Stadt Luckau im Pflichtenheft – sie befindet sich zwar in unserem Landkreis aber ich habe es in meinen ganzen Leben noch nicht geschafft das Ortsschild zu sehen.

Ich habe dann einen Punkt in Calau gesetzt (Tankstelle zum Auffüllen der Trinkflaschen), BRouter legte die Strecke dann schon automatisch über Luckau, sodass hier kein weiterer Eingriff notwendig war. Die nächste Station war dann schon wieder das Ziel in Bestensee. Den letzten Teil habe ich mit zwei weiteren Zwischenpunkten minimal nach Westen gezogen, auch wieder um eine Streckendopplung zu vermeiden.

Komplette Strecke
Karte und Kartendaten © OpenStreetMap Contributors

Mit nur fünf Zwischenpunkten (notwendig wären genaugenommen aber nur zwei gewesen) hatte ich jetzt eine Rennrad-Tour von 240 Kilometern Länge komplett geplant. Ich war einmal mehr beeindruckt von der Leistungsfähigkeit des BRouter und der großartigen Routing-Profile.

Die Strecke war dann tatsächlich auch perfekt. Einzig in Waldow/Brand gab es ein paar hundert Meter Kopfsteinpflaster, abgesehen davon war der Belag ausnahmslos super mit dem Rennrad fahrbar. Der Teil in Waldow/Brand war aber in den OpenStreetMap-Daten falsch ausgezeichnet, BRouter trifft hier also keine Schuld. Bis eben war dort von Asphalt die Rede, jetzt ist das Kopfsteinpflaster korrekt vermerkt.

Overpass Turbo

Ein weiteres sehr praktisches Tool war dann noch mal Overpass Turbo. Hiermit kann man Abfragen gegen die OpenStreetMap-Daten ausführen. Ich habe diese genutzt, um mir eine Liste der Tankstellen in der Region anzeigen zu lassen. Unterwegs sind Tankstellen (vor allem an Feiertagen) die einfachste Möglichkeit, die Trinkflaschen wieder aufzufüllen. Die Abfrage bei Overpass Turbo und das Ergebnis auf der Karte ansehen (die Punkte sind auch anklickbar).

Tankstellen in der Region
Karte und Kartendaten © OpenStreetMap Contributors

Die Route im BRouter zum Herumspielen.

Die Tour bei Strava.

Bilder

Tips For Using BRouter-Web

(Die deutsche Version der Tipps findest du hier)

  • The link in the browser’s address bar always describes to the currently planned route – you can simply save it as a bookmark or share it.
  • In the upper left corner you can select different profiles (trekking, mountain bike, racing bike etc.). Furthermore, three alternatives are planned for each route, which can also be selected in this menu.
  • Round trips can be planned by placing the final point a little bit next to the startpoint (watch out: if you click exactly on the startpoint, it will be deleted).
  • The profiles can be adjusted directly in BRouter-Web (change priorities for certain street types etc.) – after clicking on „Upload“ they are used for routing immediately. Attention: the modified profiles are not permanently available. You should copy and save them if necessary. You can paste them into the edit field next time.
  • In the upper right corner of the map you can select different map views (OpenStreetMap Mapnik style, OpenTopoMap and many more)
  • Also in the upper right corner there is a button with a table icon, which shows details about the road conditions etc. for each individual route section.
  • The pie chart icon opens a statistical breakdown of road types, pavement and way conditions. This function is only available on the BRouter instance at https://brouter.m11n.de/ currently (May 2020), but will hopefully be included in the official BRouter-Web source code soon.

Statistical evaluation of route types and conditions; map and map data © OpenStreetMap Contributors

  • At the bottom right there is a button to display the elevation profile. If you move the mouse pointer over the elevation profile, you can see the corresponding position at the top of the map view.
  • You can load GPX tracks into BRouter-Web via the “Load” button.
  • VeloViewer Explorer Max Square fans watch out: The VeloViewer KML file can be easily imported into the BRouter using the „Load“ function – it couldn’t be easier to plan new routes for “ticking of the tiles” (described here: BRouter and the Explorer Max Square)
  • “Export” creates the route in various formats, which can then be imported into e.g. Garmin Connect, to load it onto a GPS device.
  • If you want to exclude certain areas for a route (e.g. a road with a bad surface), you can define so-called „no-go areas“. These are circles through which the BRouter will not lay a route. These areas are also stored in the link in the address bar – so you can create no-go areas in the vicinity once and then save a bookmark and always start the routing with a predefined list of blocked areas.

„No-Go-Area“: BRouter finds a route around the excluded area (in this example: cobblestones); map and map data © OpenStreetMap Contributors

  • Currently (June 2020), the data for route calculation is taken directly from the latest OpenStreetMap raw data four times a day – so changes to OpenStreetMap arrive are available in BRouter very quickly.
  • If you want to view the map directly under the route, you can set the opacity of the route with the slider on the left side of the screen. Tap and hold the M key for a quick view: As long as the M key is pressed, the route is invisible; if the button is released, the route reappears immediately.

ANSI Escape Sequences

Rundumschlag zu allem, was es über Farben im Terminal zu wissen gibt.

The ANSI escape sequences you’re looking for are the Select Graphic Rendition subset. All of these have the form

\033[XXXm

where XXX is a series of semicolon-separated parameters.

Antwort auf Stackoverflow

Haustiere 2020: Rotfuchs – 6. Update

Drei Beobachtungen:

  1. Die Füchse waren ca. eine Woche ausgeflogen und kamen letzten Freitag wieder zurück.
  2. Spielen und Herumtollen ist jetzt nicht mehr die primäre Beschäftigung – das Jagen von Mäusen steht mittlerweile weit oben auf der Prioritätenliste.
  3. Die Welpen sehen mittlerweile wie richtige Füchse aus :-)