From fa8f588492e6264d0df06454751e980cacf3722d Mon Sep 17 00:00:00 2001 From: Josha von Gizycki Date: Tue, 18 Dec 2018 20:26:36 +0100 Subject: [PATCH] real page files --- .../page/blogs/blag/entries/01-yottabyte.md | 36 ++++++++++++++ .../page/blogs/blag/entries/02-perlis.md | 45 ++++++++++++++++++ .../blogs/blag/entries/03-solid-vs-stable.md | 47 +++++++++++++++++++ resources/page/blogs/blag/index.md | 3 ++ .../page/blogs/datblag/entries/01-entry.md | 7 --- .../page/blogs/datblag/entries/02-entry.md | 11 ----- .../page/blogs/datblag/entries/03-entry.md | 7 --- resources/page/blogs/datblag/index.md | 0 resources/page/blogs/datblag/index.md~ | 4 -- resources/page/index.html | 6 +-- resources/page/resources/style.css | 21 +++------ resources/page/sites/impressum.md | 7 ++- resources/page/sites/index.md | 6 +-- 13 files changed, 147 insertions(+), 53 deletions(-) create mode 100644 resources/page/blogs/blag/entries/01-yottabyte.md create mode 100644 resources/page/blogs/blag/entries/02-perlis.md create mode 100644 resources/page/blogs/blag/entries/03-solid-vs-stable.md create mode 100644 resources/page/blogs/blag/index.md delete mode 100644 resources/page/blogs/datblag/entries/01-entry.md delete mode 100644 resources/page/blogs/datblag/entries/02-entry.md delete mode 100644 resources/page/blogs/datblag/entries/03-entry.md delete mode 100644 resources/page/blogs/datblag/index.md delete mode 100644 resources/page/blogs/datblag/index.md~ diff --git a/resources/page/blogs/blag/entries/01-yottabyte.md b/resources/page/blogs/blag/entries/01-yottabyte.md new file mode 100644 index 0000000..a03aa0e --- /dev/null +++ b/resources/page/blogs/blag/entries/01-yottabyte.md @@ -0,0 +1,36 @@ +--- +{:title "Yottabyte"} +--- + +# Was ist ein Yottabyte? + +Wieviel ist das? Wie kann man sich so eine Zahl vor Augen halten? + +Zur Verdeutlichung, die Reihenfolge der Binärpräfixe ist: + +- Kilo +- Mega +- Giga +- Tera +- Peta +- Exa +- Zetta +- Yotta + + + +Wie kann man so eine gigantische Menge von Bytes nachstellen? Die Überlegung stammt von Anfang 2011, da waren Terabytefestplatten so langsam üblich. Also nimmt man eine entsprechend große Menge solcher Datenträger und vergleicht diese mit bekannten Größen. + +Die nachfolgende Liste an Rechnungen und Beispielen haben keinerlei Anspruch auf Korrektheit, Praxisnähe oder Machbarkeit. Als Berechnungsgrundlage dient meine alte eigene 1TB-Festplatte - Typ Samsung HD 103 SJ. + +- 10 hoch 15 (1.000.000.000.000.000 oder 1 Billiarde) Festplatten zu je 1 Terabyte entsprechen 1 Yottabyte, oder einer Trilliarde Megabyte +- Bei einem Cache von 32 Megabyte pro Festplatte haben wir 32 Zettabyte oder 32 Tausend Exabyte Cache +- Bei einem Stromverbrauch von 7,2 Watt pro Festplatte ergibt sich bei 10 hoch 15 Festplatten ein Gesamtstromverbrauch von 7,2 Billionen Kilowatt oder 7,2 Milliarden Megawatt + - Dies entspricht der Leistung von 4.500.000 Atomkraftwerken +- Die Masse einer Festplatte beträgt 625g - bei einer Billiarde Festplatten ergeben das 625.000.000 Kilotonnen Masse + - Die Masse der Titanic betrug zu "Lebzeiten" 53.147 Tonnen + - Die Masse einer Billiarde Samsung HD 103 SJ entspricht der Masse von 11.759.835,92 Titanicen (Pluralbildung korrekt?) +- Eine Samsung HD 103 SJ kann mit einer Geschwindigkeit von bis zu 96,582 Megabyte pro Sekunde beschrieben werden + - Eine Billiarde Samsung HD 103 SJ nacheinander komplett zu beschreiben dauert 1,035389 mal 10 hoch 19 Sekunden. Diese unscheinbare Sekundenanzahl entspricht 32.800.000.000.000 (32,8 Billionen) Jahren +- Eine Samsung HD 103 SJ hat folgende Maße: Höhe 26,1mm, Breite 101,5mm, Länge 147,0mm + - Die Fläche von 1 Billarde dieser Festplatten beträgt 14.838.680.000.000.000.000.000 - also rund 14 Trilliarden Quadratkilometern. Wenn man davon ausgeht, dass die Erde eine Fläche von 510 Millionen Quadratkilometern aufweist, braucht man ungefähr 29.095.450.980.392,15 (rund 29 Billionen) Erden, um alle Platten nebeneinander auslegen zu können. Naja, im Universum gibt es ja genug Sterne... diff --git a/resources/page/blogs/blag/entries/02-perlis.md b/resources/page/blogs/blag/entries/02-perlis.md new file mode 100644 index 0000000..b35507f --- /dev/null +++ b/resources/page/blogs/blag/entries/02-perlis.md @@ -0,0 +1,45 @@ +--- +{:title "Epigramme von Alan J. Perlis"} +--- + +# Epigramme von Alan J. Perlis + +1982 verfasste der US-amerikanische Informatiker Alan J. Perlis etwas über 100 Epigramme über das Programmieren. Meine Quelle hierfür ist ein Eintrag bei [archive.org](http://web.archive.org/web/19990117034445/http://www-pu.informatik.uni-tuebingen.de/users/klaeren/epigrams.html). Hier einige ins Deutsche übersetzt: + +> 1: One man's constant is another man's variable. + +Was für den einen eine Konstante ist, ist für den anderen eine Variable. + + + +> 5: If a program manipulates a large amount of data, it does so in a small number of ways. + +Verändert ein Programm große Mengen an Daten, tut es dies in einer geringen Menge an unterschiedlichen Schritten. + +> 6: Symmetry is a complexity reducing concept; seek it everywhere. + +Symmetrie ist ein Konzept, das Komplexität verringert. Strebe danach. + +> 7: It is easier to write an incorrect program than understand a correct one. + +Es ist einfacher, ein falsches Programm zu schreiben, als ein falsches zu verstehen. + +> 40: There are two ways to write error-free programs; only the third one works. + +Es gibt zwei Möglichkeiten, ein fehlerfreies Programm zu schreiben. Nur die dritte funktioniert. + +> 63: When we write programs that "learn", it turns out we do and they don't. + +Wenn wir Programme schreiben, die "lernen", stellt sich heraus, dass wir diejenigen sind, die lernen. + +> 79: A year spent in artificial intelligence is enough to make one believe in God. + +Ein Jahr im Bereich Künstliche Intelligenz zu verbringen, ist genug, einen an Gott glauben zu lassen. + +> 104: The proof of a system's value is its existence. + +Der Beweis für den Wert eines Systems ist dessen Existenz + +> 114: Within a computer natural language is unnatural. + +Innerhalb eines Computers sind natürliche Sprachen unnatürlich. diff --git a/resources/page/blogs/blag/entries/03-solid-vs-stable.md b/resources/page/blogs/blag/entries/03-solid-vs-stable.md new file mode 100644 index 0000000..39935a7 --- /dev/null +++ b/resources/page/blogs/blag/entries/03-solid-vs-stable.md @@ -0,0 +1,47 @@ +--- +{:title "Solid vs Stable"} +--- + +# Über die Wartung von Code: S.O.L.I.D. oder S.T.A.B.L.E. + +Erklärtes Ziel der objektorientierten Programmierung ist bekanntermaßen, die reale Welt mit Objekten nachzustellen. Objekte stellen dabei meist Sammlungen von Eigenschaften dar, die Fähigkeiten besitzen. Dass, und warum, bei der Umsetzung eines solchen Objektmodells einiges schiefgehen kann, muss man sicherlich niemandem erklären. + + + +Um dieser Tendenz entgegenzuarbeiten, es wird an der Stelle auch gerne von Erosion gesprochen, wurden von Robert C. Martin fünf Prinzipien für ein gutes objektorientiertes Design entwickelt, die jeder Programmierer kennen sollte. Zusammengefasst werden sie als `SOLID`: + +1. **S**ingle responsibility principle + Eine Komponente sollte genau eine Zuständigkeit besitzen. +2. **O**pen closed principle + Komponenten sollten offen für Erweiterungen, aber geschlossen für Veränderungen sein. +3. **L**iskov substitution principle + Objekte sollten durch Instanzen ihrer Kinder ersetzbar sein, ohne die Korrektheit des Programms zu beeinflussen. Benannt nach Barbara Liskov. +4. **I**nterface segregation principle + Ein Objekt sollte nicht gezwungen sein, Schnittstellen zu besitzen, die es nicht benötigt. +5. **D**ependency inversion principle + Abstrakte Objekte sollten nicht von konkreten abhängig sein. + +Diese fünf Prinzipien, so man sie denn korrekt befolgt, führen zu einem prinzipiell wartbaren und gut verständlichem Softwareprojekt. Nun ist es allerdings so, dass es einen weiteren Grundsatz gibt: + +> Software wird öfter gelesen als ausgeführt. + +Das bedeutet, dass in die Wartung großer Projekte sehr viel Zeit reinfießt; und weil Wartung viel Geld kostet und die User sich an ihre Software gewöhnt haben und, und, und... starten Projekte selten auf der sprichwörtlichen grünen Wiese, fangen also selten bei 0 an. Das beudetet, man findet oftamls über Jahre gewachsene Strukturen vor, die unter den verschiedensten Faktoren entwickelt wurden und von Entwicklern verschiedensten Könnens gewartet werden. + +Was das mit `SOLID` zu tun hat? Die oben genannten Prinzipien sind sehr grundlegende, tiefgreifende architektonische Richtlinien. Es bedeutet viel Aufwand sowohl in Sachen Programmierung als auch Testen, ein `Dependency inversion principle` in ein Projekt einzubauen, das bereits seit fünf Jahren prima ohne auskommt. Wie schon an der Formulierung zu erkennen ist, ist der Mehrwert oftmals auch zweifelhalt gering. Woran soll man sich nun also halten, was ist die Mao-Bibel des Legacy-Entwicklers? + +Die Softwareentwicklerin Sarah Mei aus den USA schlug für die Wartung von bestehender Software eine andere Abkürzung vor, `STABLE`: + +1. **S**mell your code + Wie man an einem Wein zuerst riecht, soll man sich mit der Codebasis, an er man arbeiten soll, vorher vertraut machen. Was sind bekannte Probleme, was kann man schnell verbessern? +2. **T**iny problems first + In gewachsenen Projekten gibt es viele Probleme, vieles *riecht*. Statt den großen Umbau, mit dem man erst Tage später vielleicht fertig ist, zu starten, sollte man die kleinen Probleme zuerst angehen. Erst wenn man die ganzen kleinen Ärgernisse beseitigt hat, kann man das große Ganze korrekt einschätzen. +3. **A**ugment tests + Bevor man große Komponenten anfasst und von Problemen bereinigt, muss man das korrekte Verhalten definieren und mit automatischen Tests validieren. Erst dann kann man sicher Korrekturen vornehmen. +4. **B**ack up + Sind Objekte zu abstrakt und Funktionen zu verkapselt, sollte die Codebasis erstmal in eine einfachere Form, beispielsweise prozedural, gebracht werden. Danach kann man sich um all die Duplikationen und Kapselungen kümmern und so ein neues Design entwerfen. +5. **L**eave it better than you found it + Auch unter dem Namen *Pfadfinderregel* bekannt. Code, den man verwüstet vorfindet, aber an dem man nicht unbedingt Änderungen vornehmen muss, sollte man trotzdem aufräumen und so für den nächsten Entwickler, vielleicht man selbst, besser hinterlassen. +6. **E**xpect good reasons + Man sollte immer davon ausgehen, dass Entwickler gute Gründe für das haben, was sie tun. Vielleicht steckt hinter abstrusen Konstruktionen ein tieferer Sinn oder eine Funktion, die man so nicht erahnt hätte. Außerdem ist es gut für die Teammoral, wenn man nicht sofort seinen Kollegen anschimpft, warum Code aussieht, wie er es tut. + +Vielleicht können mehr Entwicklerteams diese Prinzipien beachten, wenn sie es mal wieder mit urtümlichen Code nach alter Väter Sitte zu tun haben. Die Folien, inklusive Transkript, des hervorragenden Vortrags, von dem ich diese Informationen habe, sind hier zu finden: [Speakerdeck](https://speakerdeck.com/sarahmei/is-your-code-too-solid-with-transcript). diff --git a/resources/page/blogs/blag/index.md b/resources/page/blogs/blag/index.md new file mode 100644 index 0000000..a982e52 --- /dev/null +++ b/resources/page/blogs/blag/index.md @@ -0,0 +1,3 @@ +--- +{:title "Blog"} +--- diff --git a/resources/page/blogs/datblag/entries/01-entry.md b/resources/page/blogs/datblag/entries/01-entry.md deleted file mode 100644 index 0604a61..0000000 --- a/resources/page/blogs/datblag/entries/01-entry.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -{:title "first entry"} ---- - -# FIRST - -hallo welt diff --git a/resources/page/blogs/datblag/entries/02-entry.md b/resources/page/blogs/datblag/entries/02-entry.md deleted file mode 100644 index af73ed1..0000000 --- a/resources/page/blogs/datblag/entries/02-entry.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -{:title "second entry"} ---- - -# SECOND - -Inhalt und so - - - -hallo welt wieder diff --git a/resources/page/blogs/datblag/entries/03-entry.md b/resources/page/blogs/datblag/entries/03-entry.md deleted file mode 100644 index fa0e8af..0000000 --- a/resources/page/blogs/datblag/entries/03-entry.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -{:title "third entry"} ---- - -# THIRD - -hallo welt wieder wieder diff --git a/resources/page/blogs/datblag/index.md b/resources/page/blogs/datblag/index.md deleted file mode 100644 index e69de29..0000000 diff --git a/resources/page/blogs/datblag/index.md~ b/resources/page/blogs/datblag/index.md~ deleted file mode 100644 index 185ef3c..0000000 --- a/resources/page/blogs/datblag/index.md~ +++ /dev/null @@ -1,4 +0,0 @@ ---- -{:title "datblag"} ---- - diff --git a/resources/page/index.html b/resources/page/index.html index e6e04d6..2c23037 100644 --- a/resources/page/index.html +++ b/resources/page/index.html @@ -10,9 +10,9 @@
diff --git a/resources/page/resources/style.css b/resources/page/resources/style.css index c16cf51..d4f1eac 100644 --- a/resources/page/resources/style.css +++ b/resources/page/resources/style.css @@ -19,11 +19,11 @@ header h1 { } main h1 { - font-size: 1.7em; + font-size: 1.5em; } main h2 { - font-size: 1.4em; + font-size: 1.3em; } main h3 { @@ -42,27 +42,18 @@ article { padding-left: 1em; } -#content .article-title { - margin-left: -.5em; - margin-bottom: .3em; +article h1:before { + content: "▻ "; } -#content .article-title:before { - content: "â–» "; -} - -#content > .article-title~time { - margin-bottom: 1em; -} - -#content blockquote { +blockquote { background-color: #f5f5f5; padding: .3em; padding-left: .6em; margin-left: 0; } -#content blockquote p { +blockquote p { margin: 0; } diff --git a/resources/page/sites/impressum.md b/resources/page/sites/impressum.md index 23d0611..35fb831 100644 --- a/resources/page/sites/impressum.md +++ b/resources/page/sites/impressum.md @@ -1,7 +1,10 @@ +--- +{:title "Impressum"} +--- # Impressum - auch Pflichtangaben genannt -Josha von Gizycki -Beckmannweg 13 +Josha von Gizycki +Beckmannweg 13 38642 Goslar

mawollololil@jotüdelshapress alt+f4 to get handgrenadesvg.meropde

diff --git a/resources/page/sites/index.md b/resources/page/sites/index.md index 3e49697..9fd4723 100644 --- a/resources/page/sites/index.md +++ b/resources/page/sites/index.md @@ -1,6 +1,4 @@ --- -{:title "Home"} +{:title "Startseite"} --- -# Sweet home - -&:last-blog-sites:datblag +&:last-blog-sites:blag