Excelente ano: nossos resultados para 2020



Este ano foi ... incomum. Estamos muito contentes que finalmente esteja terminando e esperamos que o próximo seja mais feliz para todos. E de acordo com nossa pequena tradição, resumimos o blog com os posts mais gordos por mais. Além disso, publicamos campeões por comentários, acréscimos aos favoritos e visualizações para aqueles que não foram incluídos na primeira lista.



Campeões classificados



Arquivos zip: história, explicação e implementação (AloneCoder)



Há muito tempo que me pergunto como os dados são compactados, inclusive em arquivos Zip. Um dia resolvi satisfazer minha curiosidade: aprender como funciona a compressão e escrever meu próprio programa Zip. A implementação tornou-se um excitante exercício de programação. Você se diverte muito construindo uma máquina bem ajustada que pega dados, coloca seus bits em uma representação mais eficiente e, em seguida, os remonta. Espero que você também ache interessante ler sobre isso.



Gatos em caixas ou estruturas de dados compactas (Serine)



E se a árvore de pesquisa cresceu em toda a RAM e está prestes a arrancar racks vizinhos na sala do servidor? O que fazer com um índice ganancioso de recursos invertido? Quer vincular ao desenvolvimento para Android, se o usuário chegar "A memória do telefone está cheia" e o aplicativo mal estiver na metade do carregamento de um contêiner importante?



Em geral, é possível compactar uma estrutura de dados de modo que ocupe visivelmente menos espaço, mas não perca suas vantagens inerentes? Assim, o acesso à tabela hash permanece rápido e a árvore balanceada retém suas propriedades. Sim você pode! Para isso, surgiu a direção da informática "Estruturas de dados sucintas", que explora a representação compacta de estruturas de dados. Tem se desenvolvido desde o final dos anos 80 e agora está florescendo na glória do big data e da alta carga.



O que eu, como desenvolvedor, aprendi com acidentes no espaço (AloneCoder)



Andrey Sitnik, autor de PostCSS e Autoprefixer , compilou uma seleção de histórias relacionadas à exploração espacial da União Soviética. Você descobrirá as lições que Andrey aprendeu com eles para crescer como desenvolvedor e participante do movimento de código aberto. Falha de encaixe, reentrada dramática e transição única ao longo do corrimão entre as espaçonaves - o que tudo isso tem a ver com o desenvolvimento da web moderno? Leia sobre tudo isso no post!



Conversor Habr: para facilitar o layout (AloneCoder)



Certamente muitos de vocês já usaram o habraconverter pelo menos uma vez, o que é oficialmente recomendado pelo governo Habr - https://shirixae.github.io/habraconverter-v2/ . Vários anos atrás, foi criado pelo meta4 residente de Habrav , e depois modificada por Shirixae . O princípio é simples: abra o post do google com Ctrl-A, Ctrl-C e cole na janela do conversor. Pressione o botão "Converter" e você obterá um código de layout pronto que poderá inserir no editor Habr e publicar. Antes disso, você precisa caminhar e consertar algumas coisinhas.



E tudo ficaria bem se você não tivesse que escrever com muita frequência. Ou as postagens são pequenas, descomplicadas. Mas se você escreve muito e os posts contêm imagens, tabelas e pedaços de código, então de vez em quando você tem que fazer uma rotina: insira as linhas em branco necessárias e remova as desnecessárias, substitua as tags <surce> por <code> etc. etc. etc. Decidimos passar um dia para podermos voar uma hora depois e terminamos o conversor.



SHISHUA: o gerador de números pseudoaleatórios mais rápido do mundo (AloneCoder)



Meio ano atrás, eu queria criar o melhor gerador de números pseudo-aleatórios (PRNG) com alguma arquitetura incomum. Achei que o começo seria fácil e, à medida que você trabalha, a tarefa vai ficando cada vez mais difícil. E pensei se pudesse aprender tudo rápido o suficiente para lidar com as mais difíceis.



Como os pipelines são implementados no Unix (AloneCoder)



Este artigo descreve a implementação de pipelines no kernel Unix. Fiquei um tanto desapontado com um artigo recente intitulado Como funcionam os tubos no Unix? Não era sobre a estrutura interna. Fiquei curioso e cavei em fontes antigas para encontrar a resposta.



Cerca de uma vulnerabilidade em ... (z3apa3a)



Em 21 de março de 2019, um relatório de bug muito bom de maxarr chegou ao bug do programa de recompensas Mail.ru no HackerOne . Quando um byte zero (ASCII 0) foi incorporado ao parâmetro POST de uma das solicitações da API de webmail que retornou um redirecionamento HTTP, pedaços de memória não inicializada foram vistos nos dados de redirecionamento, nos quais fragmentos de parâmetros GET e cabeçalhos de outras solicitações para o mesmo servidor.



Esta é uma vulnerabilidade crítica. as solicitações incluem cookies de sessão. Poucas horas depois, foi feita uma correção temporária que filtrou o byte zero (como se viu, isso não foi suficiente, pois ainda havia a possibilidade de injeção CRLF / ASCII 13, 10, que permite manipular os cabeçalhos e dados da resposta HTTP, isso é menos crítico, mas ainda desagradável). Ao mesmo tempo, o problema foi transferido para analistas de segurança e desenvolvedores para encontrar e eliminar as causas do bug. 



ZFS: arquitetura, recursos e diferenças de outros sistemas de arquivos (Gmelikov)



Eu, Georgiy Melikov, sou um contribuidor dos projetos OpenZFS e ZFS em Linux. Também estou desenvolvendo IaaS na equipe Mail.ru Cloud Solutions . Embora não usemos ZFS na produção de nossa unidade, os anfitriões do podcast SDCast me convidaram para falar sobre isso. Este artigo nasceu dessa edição, e aqui você poderá ouvir a versão em áudio .



Então, hoje estou falando sobre ZFS. Como o sistema de arquivos ZFS funciona, em que componentes ele consiste e como funciona, bem como sobre os novos recursos que apareceram ou aparecerão em breve em versões recentes.



Por que escolhemos MobX em vez de Redux e como usá-lo de forma mais eficiente (ngOo)



Meu nome é Nazim Gafarov, sou desenvolvedor de interface na Mail.ru Cloud Solutions . O ano é 2020 e continuamos a discutir as "inovações" da sintaxe ES6 e as vantagens do MobX sobre o Redux. Existem muitos motivos para usar Redux em seu projeto, mas como não conheço nenhum, direi porque escolhemos o MobX.



Como UUIDs (AloneCoder)



Você provavelmente já usou UUIDs em seus projetos e os considerou únicos. Vamos dar uma olhada nos principais aspectos da implementação e ver por que os UUIDs são praticamente únicos, já que há uma pequena possibilidade de ocorrência dos mesmos valores.



A implementação moderna de UUIDs pode ser rastreada até a RFC 4122, que descreve cinco abordagens diferentes para gerar esses identificadores. Examinaremos cada um deles e acompanharemos a implementação da versão 1 e da versão 4.



Campeões de comentários



A matemática de subir a escada da riqueza (Randall)



Do ponto de vista de um programador, o salário médio mensal na Rússia é de 44 mil rublos. - abaixo de todas as expectativas de riqueza e sucesso. Mas de onde vêm as idéias sobre sucesso, prosperidade financeira e métodos para alcançá-los?



Como sua vida mudará se você der 10 mil rublos? Que tal RUB 1 milhão? Ou 100 milhões de rublos? A resposta a esta pergunta não é tão simples quanto parece e depende de sua idade, estado civil e economias atuais. Mais importante ainda, as mudanças que ocorrem em seu comportamento depois que você obtém essa quantia podem dizer muito sobre sua situação financeira atual.



Stuart Butterfield, criador do Flickr e Slack, desenvolveu esse pensamento em um conceito distinto de “pirâmide de riqueza” que leva à conclusão paradoxal de que mesmo muito dinheiro não melhora necessariamente sua vida de nenhuma maneira mensurável.



Cyberbullying: porque as pessoas se tornam observadores (Kseniaegorova)



Fizemos um estudo em larga escala e estudamos o comportamento de pessoas que, ao se depararem com a agressão dirigida a outrem, assumem uma postura de observador. Os resultados do estudo de 2019 mostraram que existem 60% deles no RuNet. E este ano aprendemos por que os observadores estão inativos, o que os faz ajudar as vítimas de agressões e se há diferença entre suas ações na Internet e na vida real.



A pesquisa foi realizada em setembro-outubro de 2020 em colaboração com Research.me, o laboratório de UX do Mail.ru Group e UXSSR. Aquivocê pode baixar os resultados completos da pesquisa. Alguns deles são muito tristes por nossa sociedade. A segunda quarentena, a crise econômica, a véspera do inverno - tudo isso não ajuda as pessoas a serem mais gentis e tolerantes umas com as outras. Isso é confirmado pela pesquisa: metade dos entrevistados acredita que o nível de agressão na sociedade aumentou durante a pandemia. Além disso, essa agressão na Internet muitas vezes não se justifica. É curioso que as pessoas considerem grosserias e insultos na Internet inaceitáveis ​​- mas estão prontas para usá-los para autodefesa. A analogia com o ataque físico é direta.



Que linguagem de programação aprender para que o RH de grandes empresas busque por você (DmtrKzmn)



Dez anos atrás, a linguagem de programação PHP estava no topo das classificações e agora os projetos na web são cada vez mais escritos em JavaScript e Python. É uma pena passar um ou dois anos aprendendo um idioma e depois ficar desempregado.



Na Mail.ru Cloud Solutions, estudamos análises, pesquisas, opiniões de desenvolvedores e grandes empregadores sobre quais linguagens de programação estarão em demanda nos próximos anos. E nós dizemos a você no que se concentrar ao escolher.



Adicione aos favoritos campeões



Como tornar sua vida mais fácil usando Git (e Deep Dive Kit) (pxeno)



Para aqueles que usam Git todos os dias, mas se sentem inseguros, a equipe Mail.ru Cloud Solutions traduziu um artigo do desenvolvedor de front-end Shane Hudson . Aqui você encontrará alguns truques e dicas que podem tornar o trabalho com o Git um pouco mais fácil, bem como uma seleção de artigos e tutoriais mais avançados. Git foi lançado há quase 15 anos. Durante esse tempo, ele passou de azarão a campeão invicto. Novos projetos hoje geralmente começam com o comando git init. Sem dúvida, esta é uma ferramenta importante que muitos de nós usamos diariamente, mas muitas vezes ela se parece com mágica - brilhante, mas perigosa. Muitos artigos foram publicados no Habré sobre como começar a usar o Git, como o Git funciona nos bastidores







, descrevendo as melhores estratégias de ramificação. Aqui, o autor se concentra em como tornar o trabalho com o Git mais fácil.



Autodesenvolvimento: como não sentei em duas cadeiras e encontrei uma terceira (Edt)



Eu lidero a equipe de anti-spam do Mail.ru Group, bem como várias equipes de aprendizado de máquina. O tópico deste artigo é o autodesenvolvimento para líderes / líderes de equipe, mas, na verdade, muitas técnicas e receitas são completamente independentes da função. Para mim, essa questão é muito relevante, já que o aprendizado de máquina está se desenvolvendo extremamente rápido e, para pelo menos estar no assunto, é preciso gastar muito tempo. Portanto, a questão de como e sobre o que gastar tempo para o desenvolvimento é bastante aguda.



O conteúdo do artigo, é claro, não é a verdade suprema, mas apenas uma descrição dos resultados de minha busca contínua, que descreve as abordagens que funcionaram para mim, com base em livros e treinamento, por tentativa e erro. Terei o maior prazer em discutir com você nos comentários.



Python - (pxeno)



Acontece que uma empresa está procurando um cientista de dados, mas na verdade ela precisa de um desenvolvedor Python. Portanto, ao se preparar para uma entrevista, faz sentido relembrar as informações do Python, e não apenas estudar os algoritmos.



A equipe da Mail.ru Cloud Solutions traduziu um artigo de um desenvolvedor que se viu repetidamente em tal situação e, com base em sua experiência, compilou uma lista de 53 perguntas e respostas para se preparar para uma entrevista. A maioria dos cientistas de dados escreve muito código, portanto, esta lista é útil tanto para cientistas de dados quanto para engenheiros. Será útil para quem procura emprego, entrevistadores e aqueles que estão aprendendo Python.



Ver campeões



Contemplação da grande semelhança fractal (Randall)



Fractais não são apenas um belo fenômeno natural. De acordo com nossa pesquisa , visualizar as estruturas fractais em 60% aumenta o estresse, medido com base em parâmetros fisiológicos. Ao contemplar fractais no córtex frontal do cérebro, em apenas um minuto, a atividade das ondas alfa aumenta - como durante a meditação ou ao sentir uma leve sonolência.



Não surpreendentemente, o biodesign fractal tem um efeito calmante em humanos. Gostamos de olhar para as nuvens, para as chamas da lareira, para a folhagem do parque ... Como funciona? Os cientistas sugerem que o curso natural dos movimentos de busca de nossos olhos é fractal. Quando as dimensões da trajetória do movimento ocular e do objeto fractal coincidem, caímos em um estado de ressonância fisiológica, devido ao qual a atividade de certas partes do cérebro é ativada.



Mas nem todos os fractais são criados iguais. Neste artigo, vamos falar sobre a dimensão fractal e seu impacto na saúde. 



Determinando COVID-19 em raios-X com Keras, TensorFlow e Deep Learning (AloneCoder)



Com este tutorial, usaremos Keras, TensorFlow e aprendizado profundo para detectar automaticamente o COVID-19 a partir de um conjunto de dados montado manualmente a partir de raios-X.



Mnemônicos: explorando métodos para aumentar a memória do cérebro (Randall)



Uma boa memória costuma ser inata em algumas pessoas. E, portanto, não adianta competir com "mutantes" genéticos, esgotar-se com treinar, inclusive memorizar poemas e inventar histórias associativas. Como tudo está escrito no genoma, você não pode pular sobre sua cabeça.



Na verdade, nem todo mundo é dado a construir, como Sherlock, palácios de memória e visualizar qualquer sequência de informações. Se você tentou as técnicas básicas listadas no artigo sobre mnemônicos na Wikipedia, e não teve sucesso, então não há nada de errado com isso - técnicas de memorização para um cérebro sobrecarregado tornam-se uma supertarefa.



No entanto, nem tudo é ruim. A pesquisa científica mostra [ 1 ]que alguns mnemônicos podem literalmente mudar fisicamente a estrutura do cérebro e melhorar a habilidade de gerenciamento da memória. Muitos dos mnemonistas mais bem-sucedidos do mundo, competindo em competições profissionais de memória, começaram a aprender na idade adulta e foram capazes de aumentar muito seu poder cerebral.






Obrigado a todos que o leram. E feliz Ano Novo!



All Articles