Este año fue ... inusual. Estamos muy contentos de que finalmente termine y esperamos que el próximo sea más feliz para todos. Y según nuestra pequeña tradición, resumimos el blog con las publicaciones más gordas por plus. Además, publicamos campeones por comentarios, adiciones a favoritos y vistas para aquellos que no fueron incluidos en la primera lista corta.
Campeones clasificados
Archivos zip: historial, explicación e implementación (AloneCoder)
Me he estado preguntando durante mucho tiempo cómo se comprimen los datos, incluso en archivos Zip. Un día decidí satisfacer mi curiosidad: aprender cómo funciona la compresión y escribir mi propio programa Zip. La implementación se ha convertido en un emocionante ejercicio de programación. Se divierte mucho construyendo una máquina ajustada que toma datos, pone sus bits en una representación más eficiente y luego los vuelve a armar. Espero que también le resulte interesante leer sobre esto.
Gatos en cajas o estructuras de datos compactas (Serina)
¿Qué pasa si el árbol de búsqueda ha crecido en toda la RAM y está a punto de rootear los racks vecinos en la sala de servidores? ¿Qué hacer con un índice codicioso de recursos invertido? Ya sea para ligar con el desarrollo para Android, si el usuario llega "La memoria del teléfono está llena", y la aplicación está apenas a la mitad de la carga de un contenedor importante?
En general, ¿es posible comprimir una estructura de datos para que ocupe notablemente menos espacio, pero no pierda sus ventajas inherentes? Para que el acceso a la tabla hash sea rápido y el árbol equilibrado conserve sus propiedades. ¡Sí tu puedes! Para ello, apareció la dirección de informática "Estructuras de datos sucintas", que explora la representación compacta de estructuras de datos. Se ha estado desarrollando desde finales de los 80 y ahora mismo está floreciendo en la gloria del big data y la alta carga.
Lo que yo, como desarrollador, aprendí de los accidentes en el espacio (AloneCoder)
Andrey Sitnik, autor de PostCSS y Auto Prefixer , compiló una selección de historias relacionadas con la exploración espacial de la Unión Soviética. Descubrirás qué lecciones aprendió Andrey de ellos para crecer como desarrollador y participante en el movimiento de código abierto. Acoplamiento fallido, reentrada espectacular y transición única a lo largo del pasamanos entre naves espaciales: ¿qué tiene que ver todo esto con el desarrollo web moderno? ¡Lea sobre todo esto en la publicación!
Habr Converter: para facilitar el diseño (AloneCoder)
Seguramente muchos de ustedes han usado el habraconverter al menos una vez, que es recomendado oficialmente por la administración de Habr: https://shirixae.github.io/habraconverter-v2/ . Hace varios años, se ha creado por la Meta4 residente de Habrav , y luego modificado por Shirixae . El principio es simple: abre un google con una publicación, Ctrl-A, Ctrl-C y pégalo en la ventana del convertidor. Haga clic en el botón "Convertir" y obtendrá un código de diseño listo para usar que se puede insertar en el editor de Habr y publicar. Justo antes de eso, debes caminar y arreglar algunas pequeñas cosas.
Y todo estaría bien si no tiene que escribir con demasiada frecuencia. O las publicaciones son pequeñas y sencillas. Pero si escribes mucho, y las publicaciones contienen imágenes, tablas y fragmentos de código, entonces de vez en cuando tienes que hacer una rutina: inserta las líneas en blanco necesarias y elimina las innecesarias, reemplaza las etiquetas <surce> por <code>, etc. etc. etc. Decidimos pasar un día para poder volar una hora más tarde y terminamos el convertidor.
SHISHUA: el generador de números pseudoaleatorios más rápido del mundo (AloneCoder)
Hace medio año quería crear el mejor generador de números pseudoaleatorios (PRNG) con una arquitectura inusual. Pensé que el comienzo sería fácil y, a medida que trabajes, la tarea se hará más difícil. Y pensé que si podía aprender todo lo suficientemente rápido para hacer frente a lo más difícil.
Cómo se implementan las canalizaciones en Unix (AloneCoder)
Este artículo describe la implementación de pipelines en el kernel de Unix. Me decepcionó un poco que se publicara un artículo reciente titulado ¿Cómo funcionan las tuberías en Unix? " No se trataba de la estructura interna. Sentí curiosidad y busqué en fuentes antiguas para encontrar la respuesta.
Acerca de una vulnerabilidad en ... (z3apa3a)
El 21 de marzo de 2019, un muy buen informe de error de maxarr llegó al error del programa de recompensas Mail.ru en HackerOne . Cuando se incrustó un byte cero (ASCII 0) en el parámetro POST de una de las solicitudes de la API de correo web que devolvió un redireccionamiento HTTP, se vieron fragmentos de memoria no inicializada en los datos de redireccionamiento, en los que fragmentos de parámetros GET y encabezados de otras solicitudes el mismo servidor.
Ésta es una vulnerabilidad crítica. las solicitudes incluyen cookies de sesión. Unas horas después se hizo un arreglo temporal que filtraba el byte cero (como resultó, esto no fue suficiente, ya que aún existía la posibilidad de inyección CRLF / ASCII 13, 10, que permite manipular los encabezados y datos de la respuesta HTTP, esto es menos crítico, pero todavía desagradable). Al mismo tiempo, el problema se transfirió a analistas de seguridad y desarrolladores para encontrar y eliminar las causas del error.
ZFS: arquitectura, características y diferencias con otros sistemas de archivos (gmelikov)
Yo, Georgiy Melikov, soy colaborador de los proyectos OpenZFS y ZFS en Linux. También trabajo en el desarrollo de IaaS en el equipo de Mail.ru Cloud Solutions . Aunque no utilizamos ZFS en la producción de nuestra unidad, los anfitriones del podcast SDCast me invitaron a hablar sobre ello. Este artículo nació del tema, y aquí puedes escuchar la versión en audio .
Entonces, hoy estoy hablando de ZFS. Cómo funciona el sistema de archivos ZFS, en qué componentes consta y cómo funciona, así como sobre las nuevas funciones que han aparecido o aparecerán pronto en versiones recientes.
Por qué elegimos MobX en lugar de Redux y cómo usarlo de manera más eficiente (ngOo)
Mi nombre es Nazim Gafarov, soy un desarrollador de interfaz en Mail.ru Cloud Solutions . Es el año 2020 y continuamos discutiendo las "innovaciones" de la sintaxis de ES6 y las ventajas de MobX sobre Redux. Hay muchas razones para usar Redux en su proyecto, pero como no conozco ninguna, le diré por qué elegimos MobX.
¿Cómo los UUID (AloneCoder)
Probablemente ya haya utilizado UUID en sus proyectos y pensó que eran únicos. Echemos un vistazo a los aspectos principales de la implementación y veamos por qué los UUID son prácticamente únicos, ya que existe una pequeña posibilidad de que ocurran los mismos valores.
La implementación moderna de UUID se remonta a RFC 4122, que describe cinco enfoques diferentes para generar estos identificadores. Repasaremos cada uno de ellos y veremos la implementación de la versión 1 y la versión 4.
Campeones de comentarios
Las matemáticas de subir la escalera de la riqueza (randall)
Desde el punto de vista de un programador, el salario mensual promedio en Rusia es de 44 mil rublos. - por debajo de todas las expectativas de riqueza y éxito. Pero, ¿de dónde provienen las ideas sobre el éxito, la prosperidad financiera y los métodos para lograrlos?
¿Cómo cambiará tu vida si te das 10 mil rublos? ¿Qué hay de RUB 1 millón? ¿O 100 millones de rublos? La respuesta a esta pregunta no es tan simple como parece y depende de su edad, estado civil y ahorros actuales. Más importante aún, los cambios que ocurren en su comportamiento después de tener esa cantidad pueden decir mucho sobre su situación financiera actual.
Stuart Butterfield, creador de Flickr y Slack, ha desarrollado esta idea en un concepto distintivo de "pirámide de riqueza" que lleva a la conclusión paradójica de que incluso las grandes cantidades de dinero no necesariamente mejoran su vida de ninguna manera mensurable.
Cyberbullying: por qué las personas se convierten en observadores (kseniaegorova)
Realizamos un estudio a gran escala y estudiamos el comportamiento de personas que, ante la agresión dirigida a otros, adoptan una posición de observación. Los resultados del estudio de 2019 mostraron que hay un 60% de tales en RuNet. Y este año aprendimos por qué los observadores están inactivos, qué los hace ayudar a las víctimas de agresiones y si existe una diferencia entre sus acciones en Internet y en la vida real.
La investigación se llevó a cabo en septiembre-octubre de 2020 en colaboración con Research.me, el laboratorio de UX del Grupo Mail.ru y UXSSR. aquípuede descargar los resultados completos de la investigación. Algunos de ellos están muy tristes por nuestra sociedad. La segunda cuarentena, la crisis económica, la víspera del invierno, todo esto no ayuda a las personas a ser más amables y tolerantes entre sí. Así lo confirma la encuesta: la mitad de los encuestados cree que el nivel de agresión en la sociedad ha aumentado durante la pandemia. Además, esta agresión en Internet a menudo no está justificada. Es curioso que la gente considere inaceptables las groserías y los insultos en Internet, pero están dispuestos a usarlos en defensa propia. La analogía con un ataque físico es sencilla.
Qué lenguaje de programación aprender para que RRHH de las grandes empresas te busquen (DmtrKzmn)
Hace diez años, el lenguaje de programación PHP estaba en la cima de las clasificaciones, y ahora los proyectos en la web se escriben cada vez más en JavaScript y Python. Es una pena pasar un año o dos aprendiendo un idioma y luego estar desempleado.
En Mail.ru Cloud Solutions, estudiamos análisis, investigaciones, opiniones de desarrolladores y grandes empleadores sobre qué lenguajes de programación tendrán demanda en los próximos años. Y te contamos en qué centrarte a la hora de elegir.
Añadir a favoritos campeones
Cómo hacer su vida más fácil con Git (y el kit de inmersión profunda) (pxeno)
Para aquellos que usan Git todos los días pero se sienten inseguros, el equipo de Mail.ru Cloud Solutions ha traducido un artículo del desarrollador front-end Shane Hudson . Aquí encontrará algunos trucos y consejos que pueden facilitar el trabajo con Git, así como una selección de artículos y tutoriales más avanzados. Git salió hace casi 15 años. Durante este tiempo, pasó de desvalido a campeón invicto. Los nuevos proyectos de hoy a menudo comienzan con el comando git init. Sin lugar a dudas, esta es una herramienta importante que muchos de nosotros usamos a diario, pero a menudo se parece a la magia: brillante pero peligrosa. Se han publicado muchos artículos en Habré sobre cómo empezar con Git, cómo funciona Git bajo el capó
, describiendo las mejores estrategias de ramificación. Aquí, el autor se centra en cómo facilitar el trabajo con Git.
Autodesarrollo: cómo no me senté en dos sillas y encontré una tercera (EDT)
Dirijo el equipo anti-spam en Mail.ru Group, así como varios equipos de aprendizaje automático. El tema de este artículo es el autodesarrollo de los líderes / líderes de equipo, pero de hecho, muchas técnicas y recetas son completamente independientes del rol. Para mí, esta pregunta es muy relevante, ya que el aprendizaje automático se está desarrollando extremadamente rápido, y para al menos estar en el tema, es necesario dedicar mucho tiempo. Por tanto, la cuestión de cómo y en qué dedicar tiempo al desarrollo es bastante aguda.
El contenido del artículo, por supuesto, no es la verdad última, sino solo una descripción de los resultados de mi búsqueda en curso, que describe los enfoques que me han funcionado, basados en libros y capacitación, en prueba y error. Estaré encantado de hablar contigo en los comentarios.
Python - (pxeno)
Sucede que una empresa está buscando un científico de datos, pero de hecho necesita un desarrollador de Python. Por lo tanto, al prepararse para una entrevista, tiene sentido repasar la información de Python y no solo estudiar los algoritmos.
El equipo de Mail.ru Cloud Solutions tradujo un artículo de un desarrollador que se ha encontrado repetidamente en tal situación y, basándose en su experiencia, compiló una lista de 53 preguntas y respuestas para prepararse para una entrevista. La mayoría de los científicos de datos escriben mucho código, por lo que esta lista es útil tanto para los científicos de datos como para los ingenieros. Será útil para quienes buscan trabajo, entrevistadores y aquellos que recién están aprendiendo Python.
Ver campeones
Contemplación de la gran similitud fractal (randall)
Los fractales no son solo un hermoso fenómeno natural. Según nuestra investigación , ver las estructuras fractales en un 60% aumenta el estrés, medido sobre la base de parámetros fisiológicos. Al contemplar los fractales en la corteza frontal del cerebro, la actividad de las ondas alfa aumenta en solo un minuto, como durante la meditación o cuando se siente una leve somnolencia.
No es sorprendente que el biodiseño fractal tenga un efecto calmante en los humanos. Nos gusta mirar las nubes, las llamas de la chimenea, el follaje del parque ... ¿Cómo funciona? Los científicos sugieren que el curso natural de los movimientos de búsqueda de nuestros ojos es fractal. Cuando coinciden las dimensiones de la trayectoria del movimiento ocular y el objeto fractal, caemos en un estado de resonancia fisiológica, por lo que se activa la actividad de determinadas partes del cerebro.
Pero no todos los fractales son iguales. En este artículo hablaremos sobre la dimensión fractal y su impacto en la salud.
Determinación de COVID-19 en rayos X con Keras, TensorFlow y Deep Learning (AloneCoder)
En este tutorial, usaremos Keras, TensorFlow y el aprendizaje profundo para detectar automáticamente COVID-19 a partir de un conjunto de datos seleccionados a mano de rayos X.
Mnemónicos: exploración de métodos para aumentar la memoria cerebral (randall)
Una buena memoria suele ser inherente a algunas personas. Y, por lo tanto, no tiene sentido competir con los "mutantes" genéticos, agotarte con el entrenamiento, que incluye memorizar poemas y crear historias asociativas. Como todo está escrito en el genoma, no puedes saltar por encima de tu cabeza.
De hecho, no todo el mundo está dispuesto a construir, como Sherlock, palacios de la memoria y visualizar cualquier secuencia de información. Si probó las técnicas básicas enumeradas en el artículo sobre mnemotécnicos en Wikipedia y no tuvo éxito, entonces no hay nada de malo en eso: las técnicas de memorización para un cerebro con exceso de trabajo se convierten en una súper tarea.
Sin embargo, no todo está mal. Muestras de investigación científica [ 1 ]que algunos mnemónicos pueden literalmente cambiar físicamente la estructura del cerebro y mejorar la habilidad de manejo de la memoria. Muchos de los mnemonistas más exitosos del mundo que compiten en competencias profesionales de memoria comenzaron a aprender en la edad adulta y pudieron mejorar enormemente su capacidad cerebral.
Gracias a todos los que lo leyeron. ¡Y feliz Año Nuevo!