Beitrag mit Beiträgen: Unsere Ergebnisse für 2019


© Ralph McQuarrie

Wir sind dabei, Champagner zu öffnen, Berge von Salaten zu werfen und Mandarinen zu schälen. In der Zwischenzeit haben all diese angenehmen Aufgaben noch nicht begonnen. Fassen wir den Blog des vergangenen Jahres zusammen. Unser jährlicher Beitrag mit den Beiträgen, die die meisten Pluspunkte erzielt haben, sowie Kommentare werden zu Favoriten und Ansichten hinzugefügt - für diejenigen, die nicht in der ersten Kurzliste enthalten sind.

Champions nach Bewertung


Was ich aus meiner bitteren Erfahrung (über 30 Jahre in der Softwareentwicklung) gelernt habe ( AloneCoder )


Dies ist eine zynische, klinische Sammlung dessen, was ich über 30 Jahre in der Softwareentwicklung gelernt habe. Ich wiederhole, einige Dinge sind sehr zynisch, und der Rest ist das Ergebnis langer Beobachtungen an verschiedenen Arbeitsorten.

Wie wir SMS aus der Höhle geschickt haben ( Qubique )


Einmal schlug mein Kollege Peter vor, an einem interessanten Projekt teilzunehmen - der Schaffung eines „Höhlentelefons für Höhlenforscher“, da er sich für Höhlenforschung interessiert. Höhlenforscher haben ein solches Problem: Die drahtlose Kommunikation im Untergrund funktioniert in der Praxis nicht. Akzeptabler Radioempfang ist nur in Sichtweite möglich, aber es lohnt sich, ein paar Runden zu drehen - und es besteht keine Verbindung. Und Sie müssen in der gesamten Höhle kommunizieren, deren Länge mehrere Kilometer betragen kann. Natürlich fängt die mobile Kommunikation dort nicht an, was bedeutet, dass für Gruppen, die mehrere Wochen autonom in der Höhle arbeiten, keine Verbindungen zur Außenwelt bestehen.

Im August 2018 sollte Peter an einer Expedition zu einer recht komplexen und gefährlichen Höhle teilnehmen. Für diese Expedition haben wir uns entschieden, ein neues Gerät zu entwickeln, das das Problem der Verbindung von autonom arbeitenden Gruppen mit der Außenwelt löst.

Schreiner-Workshop zum Selbermachen : Erwartungen und Realität ( zipp3r )


Warum überhaupt eine Tischlerei? Ich habe keine definitive Antwort. Wenn Sie nur etwas mit Ihren Händen von einem Baum aus machen wollen, also Werkstätten, in denen Sie kommen können, Geld für die Miete von Maschinen und einem Arbeitsplatz bezahlen und alles dort tun können. Es ist nicht erforderlich, ein eigenes Gebäude und eine eigene Ausrüstung zu haben. Wenn Sie sich als Unternehmen der Holzbearbeitung widmen möchten, ist die Konkurrenz hoch und es ist schwierig, Ihre Nische zu finden.

Die beschämendsten Fehler in meiner Programmierkarriere (derzeit) ( AloneCoder )


Wie das Sprichwort sagt, wenn Sie sich für Ihren alten Code nicht schämen, dann wachsen Sie nicht als Programmierer auf - und ich stimme dieser Meinung zu. Ich habe vor über 40 Jahren und vor 30 Jahren beruflich angefangen, für Unterhaltung zu programmieren, also habe ich viele Fehler gemacht. Als Professor für Informatik bringe ich meinen Schülern bei, wie man aus Fehlern lernt - ihren, meinen, Fremden. Ich denke, es ist Zeit, über meine Fehler zu sprechen, um die Bescheidenheit nicht zu verlieren. Ich hoffe, jemand wird es nützlich finden.

Fotos mit neuronalen Netzen wiederherstellen ( kitashov )


Ich arbeite als Forschungsprogrammierer im Computer Vision Team der Mail.ru Group. Für den diesjährigen Tag des Sieges haben wir beschlossen, ein Projekt zur Restaurierung von Militärfotografien durchzuführen. Was ist Fotorestaurierung? Es besteht aus drei Stufen:

  • Wir finden alle Bildfehler: Brüche, Kratzer, Löcher;
  • Übermalen Sie die gefundenen Fehler anhand der umliegenden Pixelwerte.
  • Färbe das Bild ein.

In diesem Artikel werde ich jede Phase der Wiederherstellung im Detail durchgehen und Ihnen erklären, wie und wo wir Daten aufgenommen haben, welche Netzwerke wir gelernt haben, was wir getan haben, auf welche Rechen wir getreten sind.

Generische und Metaprogrammierungsmodelle: Go, Rust, Swift, D und andere ( AloneCoder )


In einigen Bereichen der Programmierung ist es normal, eine Datenstruktur oder einen Algorithmus schreiben zu wollen, die bzw. der mit Elementen unterschiedlicher Typen arbeiten kann. Zum Beispiel eine Liste von Generika oder ein Sortieralgorithmus, der nur eine Vergleichsfunktion benötigt. In verschiedenen Sprachen werden verschiedene Möglichkeiten zur Lösung dieses Problems angeboten: vom einfachen Aufzeigen der entsprechenden allgemeinen Funktionen (C, Go) für Programmierer bis hin zu so leistungsfähigen generischen Systemen, dass sie Turing vollständig werden (Rust, C ++). In diesem Artikel werde ich über generische Systeme aus verschiedenen Sprachen und deren Implementierung sprechen. Ich beginne mit der Lösung des Problems in Sprachen ohne ein ähnliches System (wie C) und zeige dann, wie das schrittweise Hinzufügen von Erweiterungen zu Systemen aus anderen Sprachen führt.

Ich halte Generika für eine interessante Option, da es sich um einen einfachen Spezialfall des allgemeinen Metaprogrammierungsproblems handelt: das Schreiben von Programmen, mit denen Klassen anderer Programme generiert werden können. Als Beweis werde ich zeigen, wie drei verschiedene und vollständig allgemeine Metaprogrammierungsmethoden als multidirektionale Erweiterungen im Raum generischer Systeme angesehen werden können: dynamische Sprachen wie Python, prozedurale Makrosysteme wie Template Haskel und Phased Compilation wie Zig und Terra.

Warum beschleunigt const den C / C ++ - Code nicht? ( AloneCoder )


Vor ein paar Monaten erwähnte ich in einem Beitrag, dass dies ein Mythos ist, als ob const hilft, Compiler-Optimierungen in C und C ++ zu ermöglichen. Ich entschied, dass diese Aussage erklärt werden sollte, vor allem, weil ich selbst zuvor an diesen Mythos geglaubt hatte. Ich beginne mit Theorie und künstlichen Beispielen und gehe dann zu Experimenten und Benchmarks über, die auf einer echten Codebasis basieren - SQLite.

HTTP-Header für verantwortliche Entwickler ( AloneCoder )


Heutzutage ist es für viele Menschen eine häufige Bedingung, online zu sein. Wir alle kaufen, kommunizieren, lesen Artikel, suchen nach Informationen zu verschiedenen Themen. Das Netzwerk verbindet uns mit der ganzen Welt, vor allem aber mit Menschen. Ich benutze das Internet selbst seit 20 Jahren und meine Beziehung dazu hat sich vor acht Jahren geändert, als ich Webentwickler wurde.

Entwickler verbinden Menschen.
Entwickler helfen Menschen.
Entwickler geben Menschen Möglichkeiten.

Entwickler können ein Netzwerk für alle erstellen, aber diese Fähigkeit muss verantwortungsbewusst eingesetzt werden. Letztendlich ist es wichtig, Dinge zu schaffen, die den Menschen helfen und sie stärken. In diesem Artikel möchte ich darüber sprechen, wie HTTP-Header Ihnen helfen können, bessere Produkte für die beste Arbeit aller Benutzer im Internet zu erstellen.

Superinfektion, Antibiotika und Zombie-Apokalypse-Modelle ( Randall )


Bakterien, nicht Krebs, Terroristen und Katastrophen forderten das Leben einer großen Anzahl von Menschen. Allein bei Yersinia pestis (Peststab) starben 150 Millionen Menschen. Die Einnahme von Antibiotika ist die Hauptmethode zur Bekämpfung von bakteriellen Infektionen. Aber was ist, wenn die Medikamente nicht mehr wirken?

Dies ist keine rhetorische und keine einleitende Frage zur Modellierung einer Hypothese, sondern eine reale Situation in absehbarer Zukunft vor dem Hintergrund einer Zunahme der Bakterienresistenz. Die Weltgesundheitsorganisation (WHO) und die nationalen Dienste haben einen gemeinsamen Aktionsplan, aber kein Staat verfügt über einen detaillierten Algorithmus zur Verhinderung einer bakteriellen Pandemie.

Wir werden über die Ursachen der bevorstehenden Katastrophe sowie über Versuche sprechen, mit Hilfe verwandter Disziplinen - Genomik, Mathematik und Virologie - einen Ausweg aus der medizinischen Sackgasse zu finden.

Arbeiten mit Zeitzonen in JavaScript ( Randall )


Kürzlich habe ich daran gearbeitet, der von meinem Team verwalteten JS-Kalenderbibliothek Zeitzonen hinzuzufügen. Ich war mir der nutzlosen Zeitzonenunterstützung in JavaScript durchaus bewusst, hoffte jedoch, dass die Zusammenfassung vorhandener Datenobjekte die Lösung der meisten Probleme erleichtern würde.

Meine Träume gingen jedoch zu Staub. Als ich mich mit der Aufgabe befasste, wurde mir klar, dass es wirklich schwierig ist, mit Zeitzonen in dieser Sprache zu arbeiten. Es war äußerst schwierig, etwas Komplizierteres zu implementieren, als einfach die Zeitanzeige zu formatieren und das Datum mit komplexen Operationen (Kalenderfunktionen) zu berechnen. Ich habe wertvolle Erfahrungen bei der Lösung dieses Problems gesammelt, was neue Schwierigkeiten mit sich brachte.

In diesem Artikel möchte ich diskutieren, worauf ich gestoßen bin und wie es gelöst wurde. Während ich den Text schrieb, wurde mir klar, dass der Grund für all die Schwierigkeiten mein schlechtes Verständnis des Themas Zeitzonen war. Angesichts dieses Bewusstseins schlage ich vor, zunächst detailliert über die Definition und die Standards zu sprechen und dann erst mit JavaScript fortzufahren.

Champions durch Kommentare


EDC eines gesunden IT-Spezialisten: Ich trage alles mit mir ( Barrayar )


Wir haben einige nützliche Dinge dabei, die wir verwenden, wenn nicht jeden Tag, dann ziemlich oft. All dies ist Junk namens EDC - Everyday Carry. Und heute, mit der unglaublichen Fülle und Zugänglichkeit aller Arten von Werkzeugen, Geräten, Geräten, Streunern und kleinen Nishtyachki, finden Sie in unseren Taschen und Beuteln die interessantesten Kombinationen von Dingen. Auf everydaycarry.com können Sie Fotos Ihres EDC hochladen und jeden Artikel signieren. Von dort haben wir die interessantesten Gruppen von IT-Spezialisten zusammengetragen. Sie baten uns auch zu zeigen, was in den Taschen und Rucksäcken unserer Mitarbeiter steckt.

Warum brauchen wir Generika in Go? ( AloneCoder )


In diesem Artikel wird erläutert, was das Hinzufügen von Generika zu Go bedeutet und warum wir dies meiner Meinung nach tun sollten. Ich werde auch auf eine mögliche Änderung in der Architektur der Sprache eingehen, um Generika hinzuzufügen.

Go wurde am 10. November 2009 veröffentlicht. Weniger als einen Tag später erschien der erste Kommentar zu Generika. Es werden auch Ausnahmen erwähnt, die wir zu Beginn des Jahres 2010 in Form von Panik und Erholung zur Sprache hinzugefügt haben.

Seit drei Jahren ist das Fehlen von Generika eine Liste von drei Hauptproblemen, die in der Sprache behoben werden müssen.

Was es zu lesen und zu sehen gibt: Mars, Cyborgs und rebellische KI ( Barrayar )


Es ist Frühlingsfreitag draußen und ich möchte wirklich von Codierung, Tests und anderen Arbeitsaufgaben ablenken. Wir haben für Sie eine Auswahl Ihrer Lieblings-Science-Fiction-Bücher und -Filme zusammengestellt, die etwa im letzten Jahr erschienen sind.

Champions zu Favoriten hinzufügen


Für diejenigen, die es genau wissen: Podcasts für Entwickler ( Barrayar )


Wer hat gesagt, dass Entwickler neue Dinge nur durch Bücher, Videos und die Analyse des Codes anderer Leute lernen können? Schließlich haben wir auch andere Kanäle, um Informationen von der Außenwelt zu erhalten. Natürlich geht es nicht darum, Wissen zu schmecken, zu schmecken oder zu riechen. Aber zuhören - das ist es. Wir haben für Sie eine Sammlung aktueller russischsprachiger Podcasts für Entwickler zusammengestellt. Eine gute Möglichkeit, Ihren Augen eine Pause zu gönnen oder sich auf Staus einzulassen.

Wie erstelle ich eine Bewerbung von der Website und stelle sie in wenigen Stunden bei Google Play ein? Teil 1/2: Progressive Web App ( Paket )


Wahrscheinlich haben alle Webentwickler bereits von der Progressive Web App gehört. Ich wünschte du könntest! Diese Technologie weist hinsichtlich Produktverteilung und Benutzereingriff ein nahezu ausgewogenes Verhältnis zwischen Web- und mobiler Entwicklung auf. Ja, ein modernes Frontend, das zum Beispiel in React geschrieben wurde, funktioniert als Anwendung. Diese Anwendung wird jedoch nur in den Browser heruntergeladen und von dort aus gestartet. Dies ist das große Handicap, das die mobile Entwicklung immer hatte. Nehmen wir an, aus der Sicht des normalen Benutzers unterscheidet sich die "Anwendung" von der "Website". Es fällt sofort ein, dass die Anwendung auf dem Telefon und die Site auf dem Computer ist. Da es jedoch einen mobilen Browser gibt, ist die Site auch auf dem Handy verfügbar. Dann gibt es 3 signifikante Unterschiede:

  1. Das Anwendungssymbol befindet sich auf dem Hauptbildschirm des Smartphones.
  2. Die Anwendung wird in einem separaten Fenster geöffnet.
  3. Die Anwendung sendet Push-Benachrichtigungen.

Alle 3 Punkte werden dank der Progressive Web App oder PWA entfernt. Wenn Sie jetzt über einen mobilen Browser auf die Website zugreifen, können Sie sie „herunterladen“. Anschließend wird das Symbol auf dem Hauptbildschirm angezeigt. Außerdem wird beim Start ein Begrüßungsbildschirm angezeigt, wie in mobilen Anwendungen, und Sie können bei Bedarf das Senden von Push-Benachrichtigungen konfigurieren.

Und es scheint, dass alles in Ordnung ist! Leider sind Nutzer seit mehr als 10 Jahren im mobilen Zeitalter zu gewohnt, nach Anwendungen im Google Play und App Store zu suchen. Benutzergewohnheiten zu brechen ist eine undankbare Aufgabe, und daher haben die Jungs von Google (übrigens Google ist der Entwickler von PWA) entschieden, dass, wenn der Berg nicht zu Magomed geht, ... Im Allgemeinen haben sie zuletzt am 6. Februar 2019 die Verwendung von vertrauenswürdigen Webaktivitäten für bereitgestellt Webanwendungsberechnungen bei Google Play.

In dem zweiteiligen Artikel erfahren Sie, wie Sie innerhalb weniger Stunden den vollständigen Pfad von einer regulären Website zu einer Anwendung bei Google Play finden. All dies wird am Beispiel eines echten Dienstes - Skorochtets - gezeigt.

JavaScript-Engines: Wie funktionieren sie? Von Callstacks bis zu Versprechungen (fast) alles, was Sie wissen müssen ( AloneCoder )


Haben Sie sich jemals gefragt, wie Browser JavaScript-Code lesen und ausführen? Es sieht mysteriös aus, aber in diesem Beitrag können Sie eine Vorstellung davon bekommen, was unter der Haube passiert. Wir beginnen unsere Reise in die Sprache mit einem Ausflug in die wunderbare Welt der JavaScript-Engines.

Champions anzeigen


Ärger über Code: Programmierer und Negativität ( AloneCoder )


Ich sehe mir einen Code an. Vielleicht ist dies der schlechteste Code, den ich jemals getroffen habe. Um nur einen Datensatz in der Datenbank zu aktualisieren, werden alle Datensätze in der Auflistung extrahiert und anschließend eine Anforderung zum Aktualisieren aller Datensätze in der Datenbank gesendet, auch derjenigen, die nicht aktualisiert werden müssen. Es gibt eine Kartenfunktion, die einfach den übergebenen Wert zurückgibt. Es gibt bedingte Prüfungen von Variablen mit offensichtlich demselben Wert, die nur in verschiedenen Stilen (firstName und first_name) benannt wurden. Bei jedem UPDATE sendet der Code eine Nachricht an eine andere Warteschlange, die von einer anderen serverlosen Funktion verarbeitet wird, die jedoch die gesamte Arbeit für eine andere Sammlung in derselben Datenbank erledigt. Ich habe nicht erwähnt, dass diese serverlose Funktion von einer cloudbasierten "serviceorientierten Architektur" stammt, die mehr als 100 Funktionen in der Umgebung enthält.

Wie könnte so etwas gemacht werden? Ich bedecke mein Gesicht und schluchze durch das Lachen. Meine Kollegen fragen, was passiert ist, und ich erzähle Worst Hits Of BulkDataImporter.js 2018 in Farben. Alle nicken mir mitfühlend zu und stimmen zu: Wie könnten sie uns das antun?

Funktionen von modernem JavaScript, die Sie vielleicht nicht kennen ( AloneCoder )


Trotz der Tatsache, dass ich in den letzten sieben Jahren fast jeden Arbeitstag in JavaScript schreibe, muss ich zugeben, dass ich den Neuigkeiten über Innovationen von ES wenig Beachtung schenke. Die Hauptmerkmale wie async / await und Proxies sind eine Sache, aber jedes Jahr gibt es eine Reihe kleiner, stufenweiser Änderungen, die nicht in mein Sichtfeld fallen, da es immer etwas Wichtigeres zu studieren gibt.

In diesem Artikel habe ich die Fähigkeiten des modernen JS zusammengefasst, über die bei ihrem Erscheinen nicht viel geredet wurde. Einige von ihnen verbessern nur die Benutzerfreundlichkeit, andere sind unglaublich praktisch und ersparen Ihnen das Schreiben einer Menge Code.

XML wird fast immer missbraucht ( AloneCoder )


Die XML-Sprache wurde 1996 erfunden. Er war kaum erschienen, bevor die Möglichkeiten seiner Anwendung bereits missverstanden worden waren, und für die Zwecke, für die sie versuchten, ihn anzupassen, war er nicht die beste Wahl.

Es wäre nicht übertrieben zu sagen, dass die überwiegende Mehrheit der XML-Schemata, die ich gesehen habe, unangemessen oder missbräuchlich für XML ist. Darüber hinaus zeugt diese Verwendung von XML von einem fundamentalen Missverständnis dessen, worum es in erster Linie bei XML geht.

XML ist eine Auszeichnungssprache. Dies ist kein Datenformat. In den meisten XML-Schemata wurde diese Unterscheidung nicht explizit berücksichtigt, wodurch XML mit dem Datenformat verwechselt wurde, was letztendlich einen Fehler bei der Auswahl von XML bedeutete, da tatsächlich das Datenformat benötigt wurde.

XML eignet sich am besten zum Kommentieren von Textblöcken mit Struktur und Metadaten, ohne auf Details einzugehen. Wenn Ihre Hauptaufgabe nicht darin besteht, mit einem Textblock zu arbeiten, ist die Auswahl von XML wahrscheinlich nicht gerechtfertigt.

Unter diesem Gesichtspunkt kann auf einfache Weise überprüft werden, wie gut das XML-Schema erstellt wurde. Nehmen Sie zum Beispiel das Dokument im vorgeschlagenen Schema und entfernen Sie alle Tags und Attribute daraus. Wenn es keinen Sinn mehr gibt, was übrig bleibt (oder wenn eine leere Zeichenfolge übrig bleibt), ist Ihr Schema entweder nicht richtig erstellt, oder Sie hätten XML einfach nicht verwenden sollen.

Im Folgenden werde ich einige der häufigsten Beispiele für falsch aufgebaute Schaltungen geben.

* * *
Vielen Dank an alle, die es gelesen haben. Und mit dem Kommen!

Source: https://habr.com/ru/post/de482504/


All Articles