Année exceptionnelle: nos résultats pour 2020



Cette année a été ... inhabituelle. Nous sommes très heureux qu'il se termine enfin et nous espérons que le prochain sera plus heureux pour tout le monde. Et selon notre petite tradition, nous résumons le blog avec les plus gros posts par plus. De plus, nous publions des champions par des commentaires, des ajouts aux favoris et des vues pour ceux qui n'étaient pas inclus dans la première liste restreinte.



Champions classés



Fichiers Zip: historique, explication et implémentation (SeulCoder)



Je me demande depuis longtemps comment les données sont compressées, y compris dans les fichiers Zip. Un jour, j'ai décidé de satisfaire ma curiosité: apprendre comment fonctionne la compression et écrire mon propre programme Zip. La mise en œuvre est devenue un exercice de programmation passionnant. Vous vous amusez beaucoup à construire une machine bien réglée qui prend des données, met ses bits dans une représentation plus efficace, puis les réassemble. J'espère que vous trouverez également intéressant de lire à ce sujet.



Chats en boîtes ou structures de données compactes (Serine)



Que faire si l'arborescence de recherche s'est développée sur toute la RAM et est sur le point d'enraciner les racks voisins dans la salle des serveurs? Que faire avec un index inversé gourmand en ressources? Que ce soit pour lier avec le développement pour Android, si l'utilisateur arrive "La mémoire du téléphone est pleine", et l'application est à peine à mi-chemin de la charge d'un conteneur important?



En général, est-il possible de compresser une structure de données de manière à ce qu'elle occupe nettement moins de place, mais ne perde pas ses avantages inhérents? Ainsi, l'accès à la table de hachage reste rapide et l'arborescence équilibrée conserve ses propriétés. Oui, vous pouvez! Pour cela, la direction de l'informatique «Structures de données succinctes» est apparue, qui explore la représentation compacte des structures de données. Il se développe depuis la fin des années 80 et s'épanouit actuellement dans la gloire du big data et du highload.



Ce que j'ai appris, en tant que développeur, des accidents dans l'espace (SeulCoder)



Andrey Sitnik, auteur de PostCSS et Autoprefixer , a compilé une sélection d'histoires liées à l'exploration spatiale de l'Union soviétique. Vous découvrirez les leçons qu'Andrey en a tirées afin de grandir en tant que développeur et participant au mouvement open source. Échec de l'amarrage, rentrée spectaculaire et transition unique le long de la main courante entre les vaisseaux spatiaux - qu'est-ce que tout cela a à voir avec le développement Web moderne? Lisez tout cela dans le post!



Convertisseur Habr: pour faciliter la mise en page (SeulCoder)



Vous êtes sûrement nombreux à avoir utilisé le habraconverter au moins une fois, ce qui est officiellement recommandé par l'administration Habr - https://shirixae.github.io/habraconverter-v2/ . Il y a plusieurs années , il a été créé par le Meta4 résident de Khabrav , puis modifié par Shirixae . Le principe est simple: ouvrez un google avec un post, Ctrl-A, Ctrl-C et collez-le dans la fenêtre du convertisseur. Cliquez sur le bouton "Convertir" et vous obtenez un code de mise en page prêt à l'emploi qui peut être inséré dans l'éditeur Habr et publié. Juste avant cela, vous devez marcher et réparer quelques petites choses.



Et tout irait bien si vous n'avez pas à composer trop souvent. Ou les messages sont petits, simples. Mais si vous composez beaucoup et que les articles contiennent des images, des tableaux et des morceaux de code, vous devez de temps en temps faire une routine: insérez les lignes vides nécessaires et supprimez celles qui ne sont pas nécessaires, remplacez les balises <surce> par <code>, etc. etc. etc. Nous avons décidé de passer une journée pour pouvoir voler dans une heure plus tard, et avons terminé le convertisseur.



SHISHUA: le générateur de nombres pseudo-aléatoires le plus rapide au monde (SeulCoder)



Il y a six mois, je voulais créer le meilleur générateur de nombres pseudo-aléatoires (PRNG) avec une architecture inhabituelle. Je pensais que le début serait facile, et à mesure que vous travaillez, la tâche deviendra lentement plus difficile. Et j'ai pensé que si je pouvais tout apprendre assez rapidement pour faire face aux plus difficiles.



Comment les pipelines sont implémentés sous Unix (SeulCoder)



Cet article décrit l'implémentation des pipelines dans le noyau Unix. J'ai été quelque peu déçu qu'un article récent intitulé Comment fonctionnent les tuyaux sous Unix? "Il ne s'agissait pas de la structure interne. Je suis devenu curieux et fouillé dans de vieilles sources pour trouver la réponse.



À propos d'une vulnérabilité en ... (z3apa3a)



Le 21 mars 2019, un très bon rapport de bogue de maxarr est arrivé au bogue du programme de primes Mail.ru sur HackerOne . Lorsqu'un octet de zéro (ASCII 0) était intégré dans le paramètre POST de l'une des requêtes API de messagerie Web qui renvoyait une redirection HTTP, des fragments de mémoire non initialisée étaient visibles dans les données de redirection, dans lesquels des fragments des paramètres GET et des en-têtes d'autres requêtes à le même serveur.



C'est une vulnérabilité critique. les demandes incluent les cookies de session. Quelques heures plus tard, un correctif temporaire a été fait qui a filtré l'octet zéro (comme il s'est avéré plus tard, ce n'était pas suffisant, car il y avait encore la possibilité d'une injection CRLF / ASCII 13, 10, qui permet de manipuler les en-têtes et les données de la réponse HTTP, c'est moins critique, mais toujours désagréable). Dans le même temps, le problème a été transféré aux analystes de sécurité et aux développeurs pour trouver et éliminer les causes du bogue. 



ZFS: architecture, fonctionnalités et différences par rapport aux autres systèmes de fichiers (Gmelikov)



Moi, Georgiy Melikov, je contribue aux projets OpenZFS et ZFS sur Linux. Je travaille également sur le développement IaaS au sein de l'équipe Mail.ru Cloud Solutions . Bien que nous n'utilisions pas ZFS dans la production de notre division, les animateurs du podcast SDCast m'ont invité à en parler. Cet article est né du problème, et ici vous pouvez écouter la version audio .



Donc, aujourd'hui, je parle de ZFS. Comment fonctionne le système de fichiers ZFS, de quels composants il se compose et comment il fonctionne, ainsi que les nouvelles fonctionnalités qui sont apparues ou qui apparaîtront bientôt dans les versions récentes.



Pourquoi nous avons choisi MobX plutôt que Redux, et comment l'utiliser plus efficacement (ngOo)



Je m'appelle Nazim Gafarov, je suis développeur d'interfaces chez Mail.ru Cloud Solutions . Nous sommes en 2020 et nous continuons à discuter des «innovations» de la syntaxe ES6 et des avantages de MobX par rapport à Redux. Il y a de nombreuses raisons d'utiliser Redux dans votre projet, mais comme je n'en connais pas, je vais vous expliquer pourquoi nous avons choisi MobX.



Comment les UUID (SeulCoder)



Vous avez probablement déjà utilisé des UUID dans vos projets et pensiez qu'ils étaient uniques. Jetons un coup d'œil aux principaux aspects de l'implémentation et voyons pourquoi les UUID sont pratiquement uniques, car il existe une infime possibilité que les mêmes valeurs se produisent.



L'implémentation moderne des UUID remonte à la RFC 4122, qui décrit cinq approches différentes pour générer ces identifiants. Nous allons passer en revue chacun d'eux et parcourir l'implémentation des versions 1 et 4.



Commentaires Champions



Les mathématiques de l'ascension de l'échelle de richesse (Randall)



Du point de vue d'un programmeur, le salaire mensuel moyen en Russie est de 44 mille roubles. - en dessous de toutes les attentes de richesse et de réussite. Mais d'où viennent les idées sur le succès, la prospérité financière et les méthodes pour y parvenir?



Comment votre vie changera-t-elle si vous vous donnez 10 mille roubles? Et 1 million de RUB? Ou 100 millions de roubles? La réponse à cette question n'est pas aussi simple qu'il y paraît et dépend de votre âge, de votre état matrimonial et de votre épargne actuelle. Plus important encore, les changements qui se produiront dans votre comportement après avoir obtenu ce montant peuvent en dire long sur votre situation financière actuelle.



Stuart Butterfield, créateur de Flickr et Slack, a développé cette pensée en un concept distinctif de «pyramide de la richesse» qui mène à la conclusion paradoxale que même les gros sous n'améliorent pas nécessairement votre vie de manière mesurable.



Cyberintimidation: pourquoi les gens deviennent des observateurs (kseniaegorova)



Nous avons mené une étude à grande échelle et étudié le comportement des personnes qui, face à une agression dirigée contre autrui, adoptent une position observatrice. Les résultats de l'étude de 2019 ont montré qu'il y en a 60% dans RuNet. Et cette année, nous avons appris pourquoi les observateurs sont inactifs, ce qui les pousse à aider les victimes d'agression, et s'il existe une différence entre leurs actions sur Internet et dans la vie réelle.



La recherche a été réalisée en septembre-octobre 2020 en collaboration avec Research.me, le laboratoire UX du groupe Mail.ru et UXSSR. Icivous pouvez télécharger les résultats complets de la recherche. Certains d'entre eux sont très tristes pour notre société. La deuxième quarantaine, la crise économique, la veille de l'hiver - tout cela n'aide pas les gens à être plus gentils et plus tolérants les uns envers les autres. Ceci est confirmé par l'enquête: la moitié des répondants estiment que le niveau d'agression dans la société a augmenté pendant la pandémie. De plus, cette agression sur Internet n'est souvent pas justifiée. Il est curieux que les gens jugent inacceptables les insultes et les insultes sur Internet - mais ils sont prêts à les utiliser pour se défendre. L'analogie avec une attaque physique est simple.



Quel langage de programmation apprendre pour que les RH des grandes entreprises chassent pour vous (DmtrKzmn)



Il y a dix ans, le langage de programmation PHP était en tête du classement, et maintenant les projets sur le web sont de plus en plus écrits en JavaScript et Python. C'est dommage de passer un an ou deux à apprendre une langue et d'être ensuite au chômage.



Chez Mail.ru Cloud Solutions, nous avons étudié l'analyse, la recherche, les opinions des développeurs et des grands employeurs sur les langages de programmation qui seront en demande dans les années à venir. Et nous vous disons sur quoi vous concentrer lors du choix.



Ajouter aux favoris champions



Comment vous simplifier la vie en utilisant Git (et Deep Dive Kit) (pxeno)



Pour ceux qui utilisent Git tous les jours mais ne se sentent pas en sécurité, l'équipe Mail.ru Cloud Solutions a traduit un article du développeur front-end Shane Hudson . Vous trouverez ici quelques trucs et astuces qui peuvent faciliter un peu l'utilisation de Git, ainsi qu'une sélection d'articles et de didacticiels plus avancés. Git est sorti il ​​y a presque 15 ans. Pendant ce temps, il est passé d'outsider à champion invaincu. Les nouveaux projets d'aujourd'hui commencent souvent par la commande git init. Sans aucun doute, c'est un outil important que beaucoup d'entre nous utilisent quotidiennement, mais il ressemble souvent à de la magie - brillant mais dangereux. De nombreux articles ont été publiés sur Habré sur la façon de démarrer avec Git, comment Git fonctionne sous le capot







, décrivant les meilleures stratégies de branchement. Ici, l'auteur se concentre sur la façon de faciliter le travail avec Git.



Développement personnel: comment je ne me suis pas assis sur deux chaises et en ai trouvé une troisième (EDT)



Je dirige l'équipe anti-spam du groupe Mail.ru, ainsi que plusieurs équipes d'apprentissage automatique. Le sujet de cet article est l'auto-développement pour les chefs d'équipe / chefs d'équipe, mais en fait, de nombreuses techniques et recettes sont complètement indépendantes du rôle. Pour moi, cette question est très pertinente, car l'apprentissage automatique se développe extrêmement rapidement, et pour au moins être dans le sujet, il faut passer beaucoup de temps. Par conséquent, la question de savoir comment et sur quoi consacrer du temps au développement est assez aiguë.



Le contenu de l'article, bien sûr, n'est pas la vérité ultime, mais juste une description des résultats de ma quête en cours, qui décrit les approches qui ont fonctionné pour moi, sur la base de livres et de formations, par essais et erreurs. Je serai heureux de discuter avec vous dans les commentaires.



Python - (pxeno)



Il arrive qu'une entreprise recherche un data scientist, mais en fait elle a besoin d'un développeur Python. Par conséquent, lors de la préparation d'une interview, il est logique de rafraîchir les informations Python, et pas seulement d'étudier les algorithmes.



L'équipe de Mail.ru Cloud Solutions a traduit un article d'un développeur qui s'est retrouvé à plusieurs reprises dans une telle situation et, sur la base de son expérience, a compilé une liste de 53 questions et réponses pour se préparer à un entretien. La plupart des data scientists écrivent beaucoup de code, cette liste est donc utile pour les data scientists et les ingénieurs. Il sera utile pour les demandeurs d'emploi, les enquêteurs et ceux qui apprennent juste Python.



Voir les champions



Contemplation de la grande similitude fractale (Randall)



Les fractales ne sont pas seulement un beau phénomène naturel. Selon nos recherches , la visualisation des structures fractales de 60% augmente le stress, mesuré sur la base de paramètres physiologiques. Lorsque vous envisagez des fractales dans le cortex frontal du cerveau, l'activité des ondes alpha augmente en une minute seulement - comme pendant la méditation ou lorsque vous ressentez une légère somnolence.



Sans surprise, la bioconception fractale a un effet calmant sur les humains. Nous aimons regarder les nuages, les flammes dans la cheminée, les feuillages du parc ... Comment ça marche? Les scientifiques suggèrent que le cours naturel des mouvements de recherche de nos yeux est fractal. Lorsque les dimensions de la trajectoire du mouvement oculaire et de l'objet fractal coïncident, nous tombons dans un état de résonance physiologique, grâce auquel l'activité de certaines parties du cerveau est activée.



Mais toutes les fractales ne sont pas créées égales. Dans cet article, nous parlerons de la dimension fractale et de son impact sur la santé 



Détermination du COVID-19 sur les rayons X avec Keras, TensorFlow et Deep Learning (SeulCoder)



Avec ce tutoriel, nous utiliserons Keras, TensorFlow et l'apprentissage en profondeur pour détecter automatiquement COVID-19 à partir d'un ensemble de données assemblé à la main à partir de rayons X.



Mnémoniques: explorer des méthodes pour augmenter la mémoire cérébrale (Randall)



Une bonne mémoire est souvent innée chez certaines personnes. Et donc il ne sert à rien de rivaliser avec des «mutants» génétiques, de s'épuiser avec la formation, y compris la mémorisation de poèmes et la création d'histoires associatives. Puisque tout est écrit dans le génome, vous ne pouvez pas sauter par-dessus votre tête.



En effet, tout le monde n'est pas donné pour construire, comme Sherlock, des palais de la mémoire et visualiser n'importe quelle séquence d'informations. Si vous avez essayé les techniques de base énumérées dans l'article sur les mnémoniques sur Wikipédia, et que vous n'avez pas réussi, alors il n'y a rien de mal à cela - les techniques de mémorisation pour un cerveau surmené deviennent une super tâche.



Cependant, tout n'est pas mauvais. La recherche scientifique montre [ 1 ]que certains mnémoniques peuvent littéralement modifier physiquement la structure du cerveau et améliorer les compétences de gestion de la mémoire. Bon nombre des mnémonistes les plus réussis au monde participant à des concours de mémoire professionnelle ont commencé à apprendre à l'âge adulte et ont pu considérablement améliorer leur puissance cérébrale.






Merci à tous ceux qui l'ont lu. Et bonne année!



All Articles