Dieses Jahr war ... ungewöhnlich. Wir freuen uns sehr, dass es endlich zu Ende geht und wir hoffen, dass der nächste für alle glücklicher sein wird. Und nach unserer kleinen Tradition fassen wir den Blog mit den fettesten Beiträgen von plus zusammen. Darüber hinaus veröffentlichen wir Champions anhand von Kommentaren, Ergänzungen zu Favoriten und Ansichten für diejenigen, die nicht in der ersten Auswahlliste enthalten waren.
Ranglisten-Champions
Zip-Dateien: Verlauf, Erklärung und Implementierung (AloneCoder)
Ich habe mich lange gefragt, wie Daten komprimiert werden, auch in Zip-Dateien. Eines Tages beschloss ich, meine Neugier zu befriedigen: zu lernen, wie Komprimierung funktioniert, und mein eigenes Zip-Programm zu schreiben. Die Implementierung ist zu einer aufregenden Programmierübung geworden. Es macht Ihnen viel Spaß, eine fein abgestimmte Maschine zu erstellen, die Daten aufnimmt, ihre Bits effizienter darstellt und sie dann wieder zusammensetzt. Ich hoffe, Sie finden es interessant, auch darüber zu lesen.
Katzen in Kisten oder kompakte Datenstrukturen (Serine)
Was ist, wenn der Suchbaum über den gesamten Arbeitsspeicher gewachsen ist und benachbarte Racks im Serverraum verwurzeln soll? Was tun mit einem invertierten ressourcenintensiven Index? Ob mit der Entwicklung für Android verbunden werden soll, wenn der Benutzer ankommt "Telefonspeicher ist voll" und die Anwendung kaum die Hälfte der Ladung eines wichtigen Containers erreicht hat?
Ist es im Allgemeinen möglich, eine Datenstruktur so zu komprimieren, dass sie deutlich weniger Speicherplatz beansprucht, aber ihre inhärenten Vorteile nicht verliert? Damit bleibt der Zugriff auf die Hash-Tabelle schnell und der ausgeglichene Baum behält seine Eigenschaften. Ja, du kannst! Hierzu erschien die Richtung der Informatik "Prägnante Datenstrukturen", die die kompakte Darstellung von Datenstrukturen untersucht. Es hat sich seit den späten 80ern entwickelt und blüht derzeit im Ruhm von Big Data und Highload.
Was ich als Entwickler aus Unfällen im Weltraum gelernt habe (AloneCoder)
Andrey Sitnik, Autor von PostCSS und Auto Prefixer , hat eine Auswahl von Geschichten zusammengestellt, die sich auf die Weltraumforschung der Sowjetunion beziehen. Sie werden herausfinden, welche Lehren Andrey daraus gezogen hat, um als Entwickler und Teilnehmer an der Open Source-Bewegung zu wachsen. Fehlgeschlagenes Andocken, dramatischer Wiedereintritt und einzigartiger Übergang entlang des Handlaufs zwischen Raumschiffen - was hat das alles mit moderner Webentwicklung zu tun? Lesen Sie darüber alles in der Post!
Habr Converter: um das Layout zu vereinfachen (AloneCoder)
Sicherlich haben viele von Ihnen den Habraconverter mindestens einmal verwendet, was von der Habr-Administration offiziell empfohlen wird - https://shirixae.github.io/habraconverter-v2/ . Vor einigen Jahren wurde es von dem in Chabrav ansässigen Meta4 erstellt und dann von Shirixae modifiziert . Das Prinzip ist einfach: Öffnen Sie ein Google mit einem Beitrag, Strg-A, Strg-C und fügen Sie es in das Konverterfenster ein. Klicken Sie auf die Schaltfläche "Konvertieren" und Sie erhalten einen vorgefertigten Layoutcode, der in den Habr-Editor eingefügt und veröffentlicht werden kann. Kurz zuvor müssen Sie gehen und einige kleine Dinge reparieren .
Und alles wäre in Ordnung, wenn Sie nicht zu oft setzen müssen. Oder Beiträge sind klein, unkompliziert. Wenn Sie jedoch viel setzen und die Beiträge Bilder, Tabellen und Codeteile enthalten, müssen Sie von Zeit zu Zeit eine Routine ausführen: Fügen Sie die erforderlichen Leerzeilen ein und entfernen Sie unnötige, ersetzen Sie die <souce> -Tags durch <code> usw. usw. usw. Wir beschlossen, einen Tag zu verbringen, damit wir eine Stunde später fliegen konnten, und beendeten den Konverter.
SHISHUA: der schnellste Pseudozufallszahlengenerator der Welt (AloneCoder)
Vor einem halben Jahr wollte ich den besten Pseudozufallszahlengenerator (PRNG) mit einer ungewöhnlichen Architektur erstellen. Ich dachte, der Anfang wäre einfach, und während Sie arbeiten, wird die Aufgabe langsam schwieriger. Und ich dachte, wenn ich alles schnell genug lernen könnte, um mit den schwierigsten fertig zu werden.
Wie Pipelines in Unix implementiert werden (AloneCoder)
Dieser Artikel beschreibt die Implementierung von Pipelines im Unix-Kernel. Ich war etwas enttäuscht, dass ein kürzlich veröffentlichter Artikel mit dem Titel Wie funktionieren Pipes unter Unix? "Ging nicht um die interne Struktur. Ich wurde neugierig und suchte in alten Quellen, um die Antwort zu finden.
Über eine Sicherheitslücke in ... (z3apa3a)
Am 21. März 2019 kam ein sehr guter Fehlerbericht von maxarr zum Mail.ru-Kopfgeldprogrammfehler auf HackerOne . Wenn ein Null-Byte (ASCII 0) in den POST-Parameter einer der Webmail-API-Anforderungen eingebettet wurde, die eine HTTP-Umleitung zurückgaben, wurden Teile des nicht initialisierten Speichers in den Umleitungsdaten angezeigt, in denen Fragmente aus GET-Parametern und Header anderer Anforderungen an der gleiche Server.
Dies ist eine kritische Sicherheitsanfälligkeit. Anfragen beinhalten Sitzungscookies. Einige Stunden später wurde eine vorübergehende Korrektur vorgenommen, die das Null-Byte filterte (wie sich herausstellte, war dies nicht ausreichend, da immer noch die Möglichkeit einer CRLF / ASCII 13, 10-Injektion bestand, mit der die Header und Daten der HTTP-Antwort manipuliert werden können. Dies ist jedoch weniger kritisch immer noch unangenehm). Gleichzeitig wurde das Problem an Sicherheitsanalysten und Entwickler übertragen, um die Ursachen des Fehlers zu finden und zu beseitigen.
ZFS: Architektur, Funktionen und Unterschiede zu anderen Dateisystemen (gmelikov)
Ich, Georgiy Melikov, bin ein Mitarbeiter von OpenZFS und ZFS für Linux-Projekte. Ich arbeite auch an der IaaS-Entwicklung im Team von Mail.ru Cloud Solutions . Obwohl wir ZFS nicht für die Produktion unserer Abteilung verwenden, haben mich die Moderatoren des SDCast- Podcasts eingeladen, darüber zu sprechen. Dieser Artikel wurde aus der Ausgabe geboren, und hier können Sie die Audioversion anhören .
Heute spreche ich also über ZFS. Wie das ZFS-Dateisystem funktioniert, aus welchen Komponenten es besteht und wie es funktioniert, sowie über neue Funktionen, die in neueren Versionen erschienen sind oder bald erscheinen werden.
Warum wir MobX gegenüber Redux gewählt haben und wie wir es effizienter nutzen können (ngOo)
Mein Name ist Nazim Gafarov, ich bin ein Schnittstellenentwickler bei Mail.ru Cloud Solutions . Es ist 2020 und wir diskutieren weiterhin die "Innovationen" der ES6-Syntax und die Vorteile von MobX gegenüber Redux. Es gibt viele Gründe, Redux in Ihrem Projekt zu verwenden, aber da ich keine kenne, erkläre ich Ihnen, warum wir uns für MobX entschieden haben.
Wie UUIDs (AloneCoder)
Sie haben wahrscheinlich bereits UUIDs in Ihren Projekten verwendet und dachten, sie seien einzigartig. Werfen wir einen Blick auf die Hauptaspekte der Implementierung und sehen, warum UUIDs praktisch einzigartig sind, da es nur eine winzige Möglichkeit gibt, dass dieselben Werte auftreten.
Die moderne Implementierung von UUIDs lässt sich auf RFC 4122 zurückführen, in dem fünf verschiedene Ansätze zur Generierung dieser Kennungen beschrieben werden. Wir werden jeden einzelnen von ihnen durchgehen und die Implementierung von Version 1 und Version 4 durchgehen.
Kommentar Champions
Die Mathematik des Aufstiegs auf die Vermögensleiter (Randall)
Aus Sicht eines Programmierers beträgt das durchschnittliche Monatsgehalt in Russland 44 Tausend Rubel. - unter allen Erwartungen an Wohlstand und Erfolg. Aber woher kommen die Ideen über Erfolg, finanziellen Wohlstand und Methoden, um sie zu erreichen?
Wie wird sich Ihr Leben verändern, wenn Sie Ihnen 10 Tausend Rubel geben? Was ist mit 1 Million Rubel? Oder 100 Millionen Rubel? Die Antwort auf diese Frage ist nicht so einfach wie es scheint und hängt von Ihrem Alter, Ihrem Familienstand und den aktuellen Ersparnissen ab. Noch wichtiger ist, dass die Änderungen, die an Ihrem Verhalten auftreten, nachdem Sie diesen Betrag erhalten haben, viel über Ihre aktuelle finanzielle Situation aussagen können.
Stuart Butterfield, Schöpfer von Flickr und Slack, hat diesen Gedanken zu einem unverwechselbaren Konzept der „Pyramide des Reichtums“ entwickelt, das zu der paradoxen Schlussfolgerung führt, dass selbst großes Geld Ihr Leben nicht unbedingt auf messbare Weise verbessert.
Cybermobbing: Warum Menschen zu Beobachtern werden (kseniaegorova)
Wir haben eine groß angelegte Studie durchgeführt und das Verhalten von Menschen untersucht, die angesichts von Aggressionen gegen andere eine beobachtende Position einnehmen. Die Ergebnisse der Studie von 2019 zeigten, dass 60% davon in RuNet vorhanden sind. Und dieses Jahr haben wir erfahren, warum Beobachter inaktiv sind, warum sie Opfern von Aggressionen helfen und ob es einen Unterschied zwischen ihren Aktionen im Internet und im wirklichen Leben gibt.
Die Forschung wurde von September bis Oktober 2020 in Zusammenarbeit mit Research.me, dem UX-Labor der Mail.ru Group und UXSSR durchgeführt. HierSie können die vollständigen Forschungsergebnisse herunterladen. Einige von ihnen sind sehr traurig für unsere Gesellschaft. Die zweite Quarantäne, die Wirtschaftskrise, der Vorabend des Winters - all dies hilft den Menschen nicht, freundlicher und toleranter miteinander umzugehen. Dies wird durch die Umfrage bestätigt: Die Hälfte der Befragten glaubt, dass der Grad der Aggression in der Gesellschaft während der Pandemie zugenommen hat. Darüber hinaus ist diese Aggression im Internet oft nicht gerechtfertigt. Es ist merkwürdig, dass Menschen Unhöflichkeit und Beleidigungen im Internet für inakzeptabel halten - aber sie sind bereit, sie zur Selbstverteidigung einzusetzen. Die Analogie zum physischen Angriff ist unkompliziert.
Welche Programmiersprache soll man lernen, damit die Personalabteilung großer Unternehmen nach Ihnen sucht (DmtrKzmn)
Vor zehn Jahren stand die Programmiersprache PHP ganz oben auf der Rangliste, und jetzt werden Projekte im Web zunehmend in JavaScript und Python geschrieben. Es ist eine Schande, ein oder zwei Jahre damit zu verbringen, eine Sprache zu lernen und dann arbeitslos zu sein.
Bei Mail.ru Cloud Solutions haben wir Analysen, Forschungsergebnisse, Meinungen von Entwicklern und großen Arbeitgebern untersucht, welche Programmiersprachen in den kommenden Jahren gefragt sein werden. Und wir sagen Ihnen, worauf Sie sich bei der Auswahl konzentrieren müssen.
Zu den Favoriten hinzufügen Champions
Wie Sie Ihr Leben mit Git (und Deep Dive Kit) einfacher machen können (pxeno)
Für diejenigen, die Git jeden Tag verwenden, sich aber unsicher fühlen, hat das Mail.ru Cloud Solutions- Team einen Artikel des Front-End-Entwicklers Shane Hudson übersetzt . Hier finden Sie einige Tricks und Tipps, die die Arbeit mit Git etwas erleichtern können, sowie eine Auswahl fortgeschrittener Artikel und Tutorials. Git kam vor fast 15 Jahren heraus. In dieser Zeit wurde er vom Außenseiter zum ungeschlagenen Champion. Neue Projekte beginnen heute oft mit dem Befehl git init. Zweifellos ist dies ein wichtiges Werkzeug, das viele von uns täglich benutzen, aber es ähnelt oft der Magie - hell, aber gefährlich. Auf Habré wurden viele Artikel darüber veröffentlicht, wie man mit Git anfängt und wie Git unter der Haube funktioniert
, beschreibt die besten Verzweigungsstrategien. Hier konzentriert sich der Autor darauf, wie die Arbeit mit Git erleichtert werden kann.
Selbstentwicklung: wie ich nicht auf zwei Stühlen saß und einen dritten fand (Sommerzeit)
Ich leite das Anti-Spam-Team der Mail.ru Group sowie mehrere Teams für maschinelles Lernen. Das Thema dieses Artikels ist die Selbstentwicklung für Teamleiter / -leiter, aber tatsächlich sind viele Techniken und Rezepte völlig unabhängig von der Rolle. Für mich ist diese Frage sehr relevant, da sich das maschinelle Lernen extrem schnell entwickelt und Sie viel Zeit aufwenden müssen, um zumindest im Fach zu sein. Daher ist die Frage, wie und wofür Zeit für die Entwicklung aufgewendet werden soll, ziemlich akut.
Der Inhalt des Artikels ist natürlich nicht die ultimative Wahrheit, sondern nur eine Beschreibung der Ergebnisse meiner laufenden Suche, in der Ansätze beschrieben werden, die für mich funktioniert haben, basierend auf Büchern und Schulungen, auf Versuch und Irrtum. Ich werde gerne mit Ihnen in den Kommentaren diskutieren.
Python - (pxeno)
Es kommt vor, dass ein Unternehmen einen Datenwissenschaftler sucht, aber tatsächlich einen Python-Entwickler benötigt. Daher ist es bei der Vorbereitung eines Interviews sinnvoll, Python-Informationen aufzufrischen und nicht nur Algorithmen zu studieren.
Das Mail.ru Cloud Solutions- Team übersetzte einen Artikel eines Entwicklers, der sich mehr als einmal in einer solchen Situation befunden hatte, und stellte auf der Grundlage seiner Erfahrung eine Liste mit 53 Fragen und Antworten zusammen , um sich auf ein Interview vorzubereiten. Die meisten Datenwissenschaftler schreiben viel Code, daher ist diese Liste sowohl für Datenwissenschaftler als auch für Ingenieure nützlich. Es ist nützlich für Arbeitssuchende, Interviewer und diejenigen, die gerade Python lernen.
Champions anzeigen
Betrachtung der großen fraktalen Ähnlichkeit (Randall)
Fraktale sind nicht nur ein schönes Naturphänomen. Nach unseren Untersuchungen erhöht die Betrachtung der fraktalen Strukturen um 60% den Stress, gemessen anhand physiologischer Parameter. Bei der Betrachtung von Fraktalen in der Frontalrinde des Gehirns nimmt die Aktivität der Alphawellen in nur einer Minute zu - wie bei der Meditation oder bei leichter Schläfrigkeit.
Es überrascht nicht, dass fraktales Biodesign eine beruhigende Wirkung auf den Menschen hat. Wir schauen uns gerne die Wolken an, die Flammen im Kamin, das Laub im Park ... Wie funktioniert das? Wissenschaftler vermuten, dass der natürliche Verlauf der Suchbewegungen unserer Augen fraktal ist. Wenn die Dimensionen der Flugbahn der Augenbewegung und des fraktalen Objekts zusammenfallen, geraten wir in einen Zustand physiologischer Resonanz, durch den die Aktivität bestimmter Teile des Gehirns aktiviert wird.
Aber nicht alle Fraktale sind gleich. In diesem Artikel werden wir über die fraktale Dimension und ihre Auswirkungen auf die Gesundheit sprechen.
Bestimmung von COVID-19 auf Röntgenstrahlen mit Keras, TensorFlow und Deep Learning (AloneCoder)
Mithilfe dieses Tutorials verwenden wir Keras, TensorFlow und Deep Learning, um COVID-19 automatisch aus einem handverlesenen Datensatz aus Röntgenstrahlen zu erkennen.
Mnemonik: Erforschung von Methoden zur Steigerung des Gehirngedächtnisses (Randall)
Ein gutes Gedächtnis ist manchen Menschen oft angeboren. Und deshalb macht es keinen Sinn, mit genetischen "Mutanten" zu konkurrieren und sich mit Training zu erschöpfen, das das Auswendiglernen von Gedichten und das Entwickeln assoziativer Geschichten umfasst. Da alles im Genom geschrieben ist, können Sie nicht über den Kopf springen.
In der Tat ist nicht jeder die Aufgabe, wie Sherlock Paläste der Erinnerung zu bauen und jede Folge von Informationen zu visualisieren. Wenn Sie die grundlegenden Techniken ausprobiert haben, die im Artikel über Mnemonik auf Wikipedia aufgeführt sind, und es Ihnen nicht gelungen ist, dann ist daran nichts auszusetzen - Memorisierungstechniken für ein überarbeitetes Gehirn werden zu einer Superaufgabe.
Es ist jedoch nicht alles schlecht. Wissenschaftliche Forschung zeigt [ 1 ]dass einige Mnemoniken die Struktur des Gehirns buchstäblich physisch verändern und die Fähigkeiten des Gedächtnismanagements verbessern können. Viele der erfolgreichsten Mnemonisten der Welt, die an professionellen Gedächtniswettbewerben teilnahmen, begannen im Erwachsenenalter zu lernen und konnten ihre Gehirnleistung erheblich steigern.
Vielen Dank an alle, die es gelesen haben. Und ein frohes neues Jahr!