• Как я переехал в Лондон c Revolut

      Неделю назад в наших соцсетях выступал Дмитрий Михайлович. Дмитрий — продуктовый разработчик, он решает продуктовые задачи в Revolut, являясь при этом Senior Backend разработчиком. Полтора года назад он переехал в лондонский офис и поделился с нами историей, как это происходило, как проходит карантин в UK, а также несколькими инсайдами о том, как устроен один из самых интересных финтех проектов.

      Делимся с вами расшифровкой и записью интервью


      Меня зовут Дмитрий Михайлович, я работаю в Revolut. Формально – backend software engineer, неформально – я расскажу далее. Буду рассказывать немного про свою историю переезда, про Revolut, в целом про то, что такое банки, EMI, свою историю открытия банковских счетов в Лондоне, про то, что мне в Revolut нравится, и немного слов про продуктовую разработку – что это такое, и почему я хочу отдельно обратить на это внимание.
      Читать дальше →
    • Почему я не буду пользоваться онлайн-кинотеатрами

        Всем привет! Меня зовут Леонид, я — разработчик сайта Поиск VPS. Некоторое время назад ко мне в обратную связь писало немало пользователей, которые просили помощи в подборе виртуального сервера для организации онлайн-кинотеатра. Естественно, планировалось использовать VPS только под сайт без хранения контента, но набор требований был всегда примерно одинаковый: абузоустойчивость, оплата биткоинами, круглосуточная поддержка и размещение не в России. В последнее время число таких запросов снизилось почти до нуля, как мне кажется потому, что большую часть рынка поделили между собой легальные онлайн-кинотеатры. У меня оформлено некоторое количество подписок, и на мой взгляд у таких сервисов есть некоторые существенные недостатки, о которых я сегодня хочу рассказать.


        Чем же мне так не угодили онлайн-кинотеатры?
      • Как работать с джуниорами?

          Если попробовать ответить на вопрос в заголовке одним предложении, то получится — доверять, но проверять. Доверьте джуниорам какую-то работу, проверьте, помогите, повторите цикл. Но это грубое и упрощённое правило, потому что в работе с джунами возникает так много тонкостей, что об этом нужно рассказывать обстоятельно.



          Рассказывать будет Серёжа Попов, CEO Лига А. и директор по талантам в HTML Academy. В Лига А. работа с джуниорами поставлена на поток: половина фронтендеров компании — это выпускники HTML Academy. Выпускники приходят в компанию на стажировку, где им помогают развиваться, а 95% тех, кто после стажировки ищет другую работу — трудоустраивается.

          Серёжа уже больше 3 лет выполняет роль наставника для джуниор-фронтендеров и научился работать с ними так, чтобы новички быстро росли до крутых специалистов и приносили пользу компании. Нюансами, принципами, правилами и секретами работы, он поделился в докладе на TeamLead Conf 2020, а мы расшифровали.
          Читать дальше →
        • HighLoad vs HighExtensible — эффективность против антихрупкости

          Давайте поговорим о high-load, high-extensible, ООП, DDD & EDA.


          Речь пойдет о разнице между high load & high extensibility — это разные цели и задачи в разработке. Для которых нужны принципиально разные подходы. Которые часто вызывают когнитивный диссонанс среди программистов, предвещающий бурную полемику.


          На Хабре много статей про high-load, а вот тема high-extensible как-то упускается из внимания.


          Если попытаться примерно представить разность в понятиях и механиках, то вот табличка:


          image


          Давайте попробуем разобрать это все подробнее.

          Читать дальше →
        • Как SEO-оптимизация и алгоритмы Google уничтожили настоящий интернет

          • Перевод
          Примечание от переводчика: этот текст — перевод-компиляция двух небольших англоязычных заметок, которые автор почему-то разделил на два разных текста. Я уверен, что логически они связаны и представляют некоторую ретроспективную ценность. В первую очередь тем, что оспаривают устоявшееся мнение о том, что раньше интернет был похож на бурлящий котел, первичный бульон, а сейчас он — стройный, понятный и с каждым годом становится все лучше. Конечно, местами автор перегибает палку, но во многом с ним сложно не согласиться. Текст достаточно эмоционален, что я, конечно же, попытался максимально передать и адаптировать в ходе перевода. Приятного чтения.



          Как SEO-оптимизация уничтожила интернет


          В промежутке между 1998 и 2003 годом поиск в Google был просто волшебным. Я помню, как вводил какую-то смутную комбинацию, типа «oil mother's milk» и в итоге попал на страницу Wired с интервью Томаса Голда, астрофизика, который рассказывал о том, что залежи углеводородов (oil) пополняются за счет давления внутри геологических пластов.

          Если вы сегодня ищете что-то техническое, конкретное, академическое или вообще — некоммерческое, то удачи вам. Лучшая в мире информационно-поисковая система превратилась в нечто, напоминающее Digg эры 2006 года: индексы популярности контролируются небольшим количеством финансово мотивированных игроков. Они называют себя «оптимизаторами».
          Читать дальше →
        • Что в Белизне тебе моей или Справочное пособие по гипохлориту натрия («хлорке»)

          • Tutorial
          Не передать, насколько мне приятно это писать. Данная статья полностью профинансирована подписчиками канала LAB66. Ни один производитель описанных в тексте средств -  своего участия не проявил, так что никакой скрытой рекламы, чиcтый альтруизм и потребительский интерес :)

          Сегодня читаем о самом простом, самом доступном и самом действенном антисептике — про гипохлорит натрия (он же «Белизна»). Совместимость с различными материалами, техника безопасности, свойства и эффективность не только против коронавируса, но и против страшной плесени и ее микотоксинов. В качестве «вишенки» — контрольная закупка магазинных отбеливателей и оценка их состава. Чтобы узнать как в эпоху пандемии нас дурят производители бытовой химии и прочий «менеджерский брат» — идем под кат. И обязательно закидываем в закладки. Эта информация пригодится еще не раз ;)


          Даешь нормальную Белизну!
        • Коты в коробочках, или Компактные структуры данных

          image


          Как быть, если дерево поиска разрослось на всю оперативку и вот-вот подопрет корнями соседние стойки в серверной? Что делать с инвертированным индексом, жадным до ресурсов? Завязывать ли с разработкой под Android, если пользователю прилетает «Память телефона заполнена», а приложение едва на половине загрузки важного контейнера?


          В целом, можно ли сжать структуру данных, чтобы она занимала заметно меньше места, но не теряла присущих ей достоинств? Чтобы доступ к хэш-таблице оставался быстрым, а сбалансированное дерево сохраняло свои свойства. Да, можно! Для этого и появилось направление информатики «Succinct data structures», исследующее компактное представление структур данных. Оно развивается с конца 80-х годов и прямо сейчас переживает расцвет в лучах славы big data и highload.


          А тем временем на Хабре найдется ли герой, способный пересковоговорить три раза подряд
          [səkˈsɪŋkt]?

          Читать дальше →
        • Кросскомпиляция выполняемых файлов Rust для Windows из Linux

          Наверное не будет уж очень удивительным если я тут, на IT площадке Хабра, скажу что я иногда балую себя программированием.


          Основная OS у меня Linux, но иногда приходится собирать исполняемые файлы и для Windows. И естественно что перегружаться в Windows только для сборки exe не особо хочется. С языками C и C++ проблем нет, давно существует кросскомпилятор MinGW, который прекрасно с этим справляется. Про Python и Java даже упоминать не стоит, кроссплатформенность в них изначально. Но в прошлом году я решил попробовать такой пока что новомодный язык, как Rust. При сборке исполняемого файла при помощи включённого в дистрибутив Rust пакетного менеджера cargo вроде как достаточно задать ключ --target, при помощи которого указать результирующий процессор, архитектуру и ABI и при сборке из Linux в результате получить exe, который будет являться стандартным исполняемым файлом для Windows. Но пытаясь так сделать:


          cargo build --target x86_64-pc-windows-gnu

          я получил только сообщения об ошибках линкера:


          error: linking with `gcc` failed: exit code: 1
          
          [...]
          
            = note: /usr/bin/ld: unrecognized option '--nxcompat'
                    /usr/bin/ld: use the --help option for usage information
                    collect2: error: ld returned 1 exit status
          
          error: aborting due to previous error
          
          error: could not compile `foobar`.

          Если кому интересно как я это поборол и теперь спокойно могу кросскомпилировать программы на Rust для Windows, не покидая Linux, добро пожаловать под кат.

          Читать дальше →
        • «Hadoop. ZooKeeper» из серии Технострима Mail.Ru Group «Методы распределенной обработки больших объемов данных в Hadoop»

            Предлагаю ознакомиться с расшифровкой лекции "Hadoop. ZooKeeper" из серии "Методы распределенной обработки больших объемов данных в Hadoop"


            Что такое ZooKeeper, его место в экосистеме Hadoop. Неправда о распределённых вычислениях. Схема стандартной распределённой системы. Сложность координации распределённых систем. Типичные проблемы координации. Принципы, заложенные в дизайн ZooKeeper. Модель данных ZooKeeper. Флаги znode. Сессии. Клиентский API. Примитивы (configuration, group membership, simple locks, leader election, locking без herd effect). Архитектура ZooKeeper. ZooKeeper DB. ZAB. Обработчик запросов.


            Читать дальше →
          • Битва двух якодзун, или Cassandra vs HBase. Опыт команды Сбербанка

              Это даже не шутка, похоже, что именно эта картинка наиболее точно отражает суть этих БД, и в конце будет понятно почему:



              Согласно DB-Engines Ranking, две самых популярных NoSQL колоночных базы — это Cassandra (далее CS) и HBase (HB).



              Волею судеб наша команда управления загрузки данных в Сбербанке уже давно и плотно работает с HB. За это время мы достаточно хорошо изучили её сильные и слабые стороны и научились её готовить. Однако наличие альтернативы в виде CS все время заставляло немного терзать себя сомнениями: а правильный ли выбор мы сделали? Тем более, что результаты сравнения, выполненного DataStax, говорили, что CS легко побеждает HB практически с разгромным счетом. С другой стороны, DataStax — заинтересованное лицо, и верить на слово тут не стоит. Также смущало достаточно малое количество информации об условиях тестирования, поэтому мы решили выяснить самостоятельно, кто же является королем BigData NoSql, и полученные результаты оказались весьма интересны.
              Читать дальше →
            • Как выучить иностранный язык

                Я расскажу о том, как изучать иностранный язык и буду это делать на примере личного опыта изучения английского языка. Английский я начал учить в 36 лет, а уже сейчас у меня свободный английский язык (как письменный, так и устный), подтверждённый официальными сертификатами. Чтобы не быть голословным: у меня есть сертификат IELTS 7.5 баллов (это С1 level) и сертификат переводчика NAATI. Короче, я знаю о чем говорю.


                Оглавление:


                1. Отступление про умных людей и прочих полиглотов
                2. Первый шаг
                3. Какой преподаватель нужен (уровень преподавателя)
                4. Где искать преподавателя
                5. Развитие навыков: слушание
                6. Развитие навыков: чтение
                7. Развитие навыков: письмо
                8. Развитие навыков: разговор: произношение
                9. Развитие навыков: разговор: языковой барьер
                10. Словарный запас
                11. Самое главное


                Итак, вопрос: “Как выучить английский язык?”.

                Читать дальше →
              • Понимание брокеров сообщений. Изучение механики обмена сообщениями посредством ActiveMQ и Kafka. Глава 2. ActiveMQ

                • Перевод
                Продолжение перевода небольшой книги:
                «Understanding Message Brokers»,
                автор: Jakub Korab, издательство: O'Reilly Media, Inc., дата издания: June 2017, ISBN: 9781492049296.

                Перевод выполнен

                Предыдущая часть: Понимание брокеров сообщений. Изучение механики обмена сообщениями посредством ActiveMQ и Kafka. Глава 1. Введение
                Читать дальше →
              • Понимание брокеров сообщений. Изучение механики обмена сообщениями посредством ActiveMQ и Kafka. Глава 3. Kafka

                • Перевод
                Продолжение перевода небольшой книги:
                «Understanding Message Brokers»,
                автор: Jakub Korab, издательство: O'Reilly Media, Inc., дата издания: June 2017, ISBN: 9781492049296.

                Перевод выполнен: tele.gg/middle_java

                Предыдущая часть: Понимание брокеров сообщений. Изучение механики обмена сообщениями посредством ActiveMQ и Kafka. Глава 2. ActiveMQ
                Читать дальше →
                • +15
                • 26,1k
                • 5
              • Понимание брокеров сообщений. Изучение механики обмена сообщениями посредством ActiveMQ и Kafka. Глава 1

                • Перевод
                Всем привет!

                Начал перевод небольшой книги:
                "Understanding Message Brokers",
                автор: Jakub Korab, издательство: O'Reilly Media, Inc., дата издания: June 2017, ISBN: 9781492049296.

                Из введения к книге:
                "… Эта книга научит вас рассуждать о системах обмена сообщениями на брокерах, сравнивая и противопоставляя две популярные технологии брокеров: Apache ActiveMQ и Apache Kafka. Здесь будут изложены примеры использования и стимулы разработки, которые привели к тому, что их разработчики использовали совершенно разные подходы к одной и той же области — обмену сообщениями между системами с промежуточным брокером. Мы рассмотрим эти технологии с нуля и выделим влияние различных вариантов дизайна на этом пути. Вы получите глубокое понимание обоих продуктов, понимание того, как их следует и не следует использовать, и понимание того, на что следует обращать внимание при рассмотрении других технологий обмена сообщениями в будущем ..."

                Переведенные к настоящему моменту части:
                Глава 1. Введение
                Глава 2. ActiveMQ
                Глава 3. Kafka

                Перевод выполнен: tele.gg/middle_java

                Буду выкладывать законченные главы по мере перевода.
                Читать дальше →
              • Руководство по Docker Compose для начинающих

                • Перевод
                • Tutorial
                Автор статьи, перевод которой мы сегодня публикуем, говорит, что она предназначена для тех разработчиков, которые хотят изучить Docker Compose и идут к тому, чтобы создать своё первое клиент-серверное приложение с использованием Docker. Предполагается, что читатель этого материала знаком с основами Docker. Если это не так — можете взглянуть на эту серию материалов, на эту публикацию, где основы Docker рассмотрены вместе с основами Kubernetes, и на эту статью для начинающих.

                image
                Читать дальше →
              • Системы очистки воды обратным осмосом — здорово или не очень?



                  Всем привет.

                  Сегодня я хотел бы поделиться с Вами своим видением систем очистки воды.

                  Я не хочу обсуждать различные фильтры, неэффективность которых давно уже известна — поговорим мы про системы очистки обратным осмосом, которые активно используются как на производствах, выпускающих очищенную воду, так и в быту.

                  К сожалению, вокруг этих систем имеется достаточно много маркетингового шума, который призван к получению прибыли производителем систем, но зачастую никак не связан с качеством получаемого продукта.

                  Из-за отсутствия понимания того, как работает система и какую воду следует употреблять, пользователь часто покупает лишние узлы и расходные элементы, а производители воды — экономят на жизненно важных деталях, выпуская воду, которая нежелательна для употребления.

                  Давайте разберёмся.
                  Читать дальше →
                • 42 оператора расширенного поиска Google (полный список)

                  • Перевод
                  • Tutorial
                  Те, кто давно занимается поисковой оптимизацией, хорошо знают об операторах расширенного поиска Google. Например, почти все знают об операторе site:, который ограничивает поисковую выдачу одним сайтом.

                  Большинство операторов легко запомнить, это короткие команды. Но уметь эффективно их использовать — совсем другая история. Многие специалисты знают основы, но немногие по-настоящему овладели этими командами.

                  В этой статье я поделюсь советами, которые помогут освоить поисковые операторы для 15 конкретных задач.
                  Читать дальше →
                • Что не так с обучением с подкреплением (Reinforcement Learning)?

                  • Tutorial


                  Еще в начале 2018 года вышла статья Deep Reinforcement Learning Doesn't Work Yet ("Обучение с подкреплением пока не работает"). Основная претензия которой сводилась к тому, что современные алгоритмы обучения с подкреплением требуют для решения задачи примерно столько же времени, как и обычный случайный поиск.


                  Изменилось ли что-то с того времени? Нет.


                  Обучение с подкреплением считается одним из трех основных путей к созданию сильного ИИ. Но трудности, с которыми сталкивается эта область машинного обучения, и методы, которыми ученые пытаются бороться с этими трудностями, наводят на мысль что, возможно, с самим этим подходом имеются фундаментальные проблемы.

                  Читать дальше →
                • Субъективное видение идеального языка программирования

                    Дальнейший текст — моя точка зрения. Возможно, она позволит кому-то по-новому взглянуть на дизайн языков программирования или увидеть какие-то преимущества и недостатки конкретных фич. Я не буду лезть в частные подробности типа "в языке должна быть конструкция while", а просто опишу общие подходы. P.S. У меня когда-то была идея создать свой язык программирования, но это оказалось довольно сложным процессом, который я пока не осилил.


                    Влияние предыдущего опыта


                    На написание статьи меня вдохновила вот эта статья. Автор придумал свой язык программирования, и этот язык своим синтаксисом и особенностями оказался подозрительно похожим на Free Pascal, на котором и была написана реализация ВМ для языка. И это не совпадение. Языки программирования, на которых мы раньше писали, загоняют мышление в рамки языка. Мы сами можем не замечать этого, но сторонний наблюдатель с иным опытом может посоветовать что-то неожиданное или сам научиться чему-то новому.


                    Рамки мышления немного раздвигаются после освоения нескольких языков. Тогда в языке А вам может захотеться иметь фичу из Б и наоборот, а ещё появится осознание сильных и слабых стороны каждого языка.


                    Например, когда я пробовал придумать и создать свой язык, мои размышления кардинально отличались от тех, что были описаны в статье выше. Я думал о совершенно иных вещах в рамках совершенно иных терминов. Ниже я опишу фичи языка, которые я хотел бы видеть в "идеальном" языке программирования.


                    Мой опыт: когда-то я начинал с паскаля, впоследствии познакомился с Java, Kotlin, C++, Python, Scheme, а основными языком считаю Scala. Как и в вышеописанном случае, мой "идеальный" язык имеет много общего со Scala. По крайней мере, я отдаю себе отчёт в этом сходстве)

                    Читать дальше →