• Пять пугающих трендов современной разработки

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

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

      Егор Бугаенко знает, что нужно делать уже сейчас, чтобы и через 5–10 лет оставаться востребованным программистом. Его идеи, как и всегда, могут показаться спорными. Вам и не нужно безоговорочно с ними соглашаться, но задуматься, например, о pet project лишний раз не повредит. Да и в том, что программисту необходим английский язык, вряд ли могут быть разные мнения. А вот по остальным пунктам будет интересно узнать мнение сообщества в комментариях.



      Дальше идет текстовая версия доклада Егора на AppsConf, но относится он не только и не столько к мобильной разработке, сколько к отрасли в целом. Егор Бугаенко основатель Zerocracy, разработчик Cactoos, Takes Framework, JCabi и других open source проектов. Написал серию книг «Elegant Objects», ведет провокационный блог и выступает с докладами, заставляющими задуматься, такими как этот.
      Читать дальше →
    • Блокировки в PostgreSQL: 4. Блокировки в памяти

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

        Сегодня я заканчиваю этот цикл статьей про блокировки в оперативной памяти. Мы поговорим о спин-блокировках, легких блокировках и закреплении буфера, а также про средства мониторинга ожиданий и семплирование.


        Читать дальше →
        • +31
        • 4,4k
        • 8
      • Мегапакет: как разработчикам Factorio удалось решить проблему с мультиплеером на 200 игроков

        • Перевод
        image

        В мае этого года я участвовал в качестве игрока в MMO-мероприятии KatherineOfSky. Я заметил, что когда количество игроков достигает определённого числа, через каждые несколько минут часть из них «отваливается». К счастью для вас (но не для меня), я был одним из тех игроков, которые отключались каждый раз, даже при наличии хорошего подключения. Я воспринял это как личный вызов и начал искать причины проблемы. Спустя три недели отладки, тестирования и исправлений ошибка наконец устранена, но это путешествие было не таким уж простым.

        Проблемы многопользовательских игр очень трудно отследить. Обычно они возникают в очень конкретных условиях параметров сетей и при очень специфичных состояниях игры (в данном случае — наличие более 200 игроков). И даже когда удаётся воспроизвести проблему, её невозможно должным образом отлаживать, потому что вставка контрольных точек останавливает игру, путает таймеры и обычно приводит к завершению соединения из-за превышения срока ожидания. Но благодаря упорности и замечательному инструменту под названием clumsy мне удалось выяснить, что же происходит.

        Если вкратце: из-за ошибки и неполной реализации симуляции состояния задержки клиент иногда оказывался в ситуации, когда ему приходится за один такт отправлять сетевой пакет, состоящий из вводимых игроком действий выбора примерно 400 игровых сущностей (мы называем его «мегапакетом»). После этого сервер не только должен правильно получить все эти действия ввода, но и отправить их всем остальным клиентам. Если у тебя 200 клиентов, это быстро становится проблемой. Канал к серверу быстро забивается, что приводит к утере пакетов и каскаду повторно запрошенных пакетов. Откладывание действий ввода затем приводит к тому, что ещё больше клиентов начинает отправлять мегапакеты, и их лавина становится ещё сильнее. Удачливым клиентам удаётся восстановиться, все остальные «отваливаются».
        Читать дальше →
      • Третье сентября

          Третье Сентября, а также события и явления, описанные в этом посте — локальный мем подкаста Разбор Полётов. Вдохновлено этим постом Олега. Олсо, вас предупреждали.

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


          Песня начинается со строчек:


          «Все не то, все не так
          Ты мой друг, я твой враг
          Как же так все у нас с тобою»

          Читать дальше →
        • Обзор программы С++ Russia 2019 Piter: асинхронность, модули, библиотеки… и такси


            Что общего у этих людей, помимо того, что все они известны в мире C++?


            • Sean Parent
            • Eric Niebler
            • Marshall Clow
            • Bryce Adelstein Lelbach
            • Антон Полухин
            • Андрей Давыдов

            Ответ: все они приедут на C++ Russia. Теперь, когда лето кончилось и все вернулись из отпусков, пора ждать следующую большую C++-конференцию: C++ Russia 2019 Piter. На ней выступят не только люди из этого списка, но и многие другие международные докладчики. 30 докладов, 2 полных дня с 10 утра до 7 вечера, никаких вводных историй и чтения документации по слогам — сразу сплошной хардкор.


            Это оказалась одна из самых быстро и качественно организованных наших конференций, половина программы стала известна уже летом: спикеры чётко знают, какие вещи хотят рассказать на C++ Russia. Сейчас программа почти стабилизировалась, и настало время приоткрыть завесу тайны.

            Читать дальше →
          • 15 книг по машинному обучению для начинающих

              Сделал подборку книг по Machine Learning для тех, кто хочет разобраться, что да как.
              Добавляйте в закладки и делитесь с коллегами!

              Книги по машинному обучению на русском


              1. «Математические основы машинного обучения и прогнозирования» Владимир Вьюгин.

              О чем

              Сначала изучите азы статистической теории машинного обучения, игр с предсказаниями и прогнозирования с применением экспертной стратегии. Их основы прекрасно объясняет автор книги, доктор физико-математических наук Владимир Вьюгин. Пособие рассчитано на студентов и аспирантов и в доступной форме излагает математические основы, необходимые для дальнейшей работы с машинным обучением.

              2. «Верховный алгоритм» Педро Домингос.

              О чем

              Книга, благодаря которой даже ничего не смыслящие в математике и статистике люди поймут, что такое алгоритмы машинного обучения и каково их применение в жизни. Профессор Педро Домингос рассказывает о пяти основных школах Machine Learning и о том, как они используют идеи из различных областей научного знания — нейробиологии, физики, статистики, биологии, — чтобы помогать людям решать сложные задачи и упрощать рутину с помощью алгоритмов.
              Читать дальше →
            • [Питер] Встреча JUG.ru с Себастианом Дашнером — Make writing enterprise tests more joyful


                Во вторник, 27 августа, через два дня после фестиваля TechTrain, состоится встреча JUG.ru с Себастианом Дашнером (Sebastian Daschner), ведущим Java Developer Advocate в IBM, Java-чемпионом, экспертом в области Enterprise Java, известным спикером и консультантом.


                Участие бесплатное, регистрация обязательная. Зарегистрироваться можно тут. Подробная информация о теме встречи и спикере — под катом.


                Доклад будет читаться на английском языке.

                Читать дальше →
              • Библиотека генератора ассемблерного кода для микроконтроллеров AVR. Часть 4

                  ← Часть 3. Косвенная адресация и управление потоком исполнения
                  Часть 5. Проектирование многопоточных приложений. →


                  Библиотека генератора ассемблерного кода для микроконтроллеров AVR


                  Часть 4. Программирование периферийных устройств и обработка прерываний


                  В этой части поста мы, как и обещали, займемся одним из самых востребованных аспектов программирования микроконтроллеров — а именно работой с периферийными устройствами. Существует два наиболее распространенных подхода к программированию периферии. Первый — система программирования ничего не знает о периферийных устройствах и предоставляет только средства доступа к портам управления устройствами. Этот подход практически не отличается от работы c устройствами на уровне ассемблера и требует досконального изучения назначения всех портов, связанных с работой конкретного периферийного устройства. Для облегчения работы программистов существуют специальные программы, но их помощь, как правило, заканчивается генерацией последовательности начальной инициализации устройств. Достоинством этого подхода является полный доступ ко всем возможностям периферии, а недостатком — сложность программирования и большой объем программного кода.


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


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

                  Читать дальше →
                • Тысячи вещей, которые в Java стоило бы поправить с первой версии: большое интервью с Сергеем Куксенко из Oracle


                    Сергей Куксенко — перформанс-инженер, видевший Java еще версии 1.0. За это время успел поучаствовать в разработке мобильных, клиентских, серверных приложений и виртуальных машин. Производительностью Java занимается c 2005 года и в данный момент в Oracle работает над улучшением производительности JDK. Один из самых популярных докладчиков на Joker и JPoint.


                    Этот хабрапост — большое интервью с Сергеем, посвященное следующим темам:


                    • Культ Производительности;
                    • Когда и что нужно оптимизировать, изначальный дизайн языка и библиотеки;
                    • Перспективные направления для дальнейшей оптимизации;
                    • Как можно поучаствовать в разработке и что можно сломать оптимизациями;
                    • Компиляторные трюки, размещение регистров;
                    • Можно ли собрать кошку из фарша;
                    • Когда тесты работают пять дней подряд и прочая бытовуха;
                    • Как стать перформанс-инженером;
                    • Подготовка доклада на следующий Joker.
                    Читать дальше →
                    • +43
                    • 13,1k
                    • 6
                  • Десятка лучших докладов C++ Russia и плейлист конференции в открытом доступе

                      Этот хабрапост объединяет десять лучших докладов от таких спикеров, как Nicolai Josuttis, Timur Doumler, Андрей Давыдов и многих других.


                      C++17/20/23, concepts, immutable data structures, concurrency, parallelism, metaprogramming — всё это темы конференции C++ Russia 2019, прошедшей этой весной в Москве. Более шести сотен участников, известные международные спикеры, глубокие доклады. Обратите внимание — доклады такие, что устареют очень нескоро, а применить полученные знания можно хоть сейчас.



                      Формат таков:


                      • Обязательное видео на YouTube
                      • Подробное описание доклада на русском языке (со слайдами, если они есть)
                      • Краткая биография докладчика

                      Не стесняйтесь писать комментарии! Кстати, в плейлисте, опубликованном под катом, есть не только топ-10. И мы выключили рекламу на YouTube, так что никто не будет мешать.

                      Читать дальше →
                    • Blameless environment: никто не должен писать качественный код

                        На РИТ++ Никита Соболев (sobolevn) выступил, как он сам назвал это, с проповедью на тему качества кода и процессов в компании. Особо впечатлительных просим налить себе ромашкового чаю, но отойти от экранов не предлагаем. Вы можете не соглашаться ни с одним из тезисов, настаивать, что трёп о сериалах — залог здоровой атмосферы в коллективе, и утверждать, что вам не нужны строгие рамки линтера и CI, чтобы писать хороший код. Но если вы хоть раз винили окружающих в неудачах на работе, вам стоит прочитать или посмотреть рассказ Никиты.

                        Работали ли вы когда-нибудь на плохой работе?

                        Я работал и долго. Моя компания была ужасна. Все было очень плохо, за что ни возьмись — все из рук вон. У нас были отвратительные процессы, ненавистные клиенты и неумелые разработчики. С этим ничего нельзя было поделать. Когда все так плохо, просто не знаешь, за что взяться, с чего начать. Чувствуешь себя жалким винтиком, который не может ни на что влиять.



                        Когда я говорю, все плохо, я имею в виду, что у нас был:

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

                        Да, это была аутсорс-разработка, но не это делало её плохой. Люди сделали ее такой.
                        Читать дальше →
                      • Как готовят пентестеров? Разбор вступительных испытаний для стажеров «Digital Security»

                          Summer of Hack 2019 в Digital Security уже идёт полным ходом, а значит самое время рассказать, как мы набирали людей.



                          Под катом объемный и интересный материал о том, как мы отбираем молодых специалистов к нам на стажировку «Summer of Hack 2019», а конкретно — в департамент аудита защищенности.

                          Рассмотрим, что должен, на наш взгляд, знать пентестер, чтобы успешно делать свою работу.

                          Разберём ряд непростых задачек, которыми мы мучали ребят, в том числе и от лица одного из них.
                          Читать дальше →
                          • +33
                          • 9,3k
                          • 8
                        • Справочник начинающего подкастера

                          Эта статья — краткое руководство для тех, кто хочет запустить свой собственный подкаст. Когда я вместе с моим нынешним соведущим год назад запускал подкаст “В бесконечность и далее”, я не смог найти ни одной по-настоящему всеобъемлющей статьи. Поэтому я решил попытаться заполнить этот пробел и написать руководство для себя из прошлого.


                          Немного о структуре — это руководство содержит 4 статьи:


                          1. Общая философия
                            1.1. Зачем делать подкаст?
                            1.2. Целевая аудитория
                            1.3. Выбор жанра
                            1.4. Формат
                          2. Технический базис
                            2.1. Что такое подкаст с технической точки зрения
                            2.2. Аудио-формат
                            2.3. Про динамики, наушники и ламповый звук
                            2.4. Про тихое помещение
                          3. Делаем покупки
                            3.1. Покупаем микрофон
                            3.2. Выбираем аудиоредактор
                            3.3. Выбираем программу для записи звука
                            3.4. Выбираем хостинг подкаста
                            3.5. Сайт-визитка
                          4. Записываем и выпускаем
                            4.1. Запись выпуска
                            4.2. Редактирование выпуска
                            4.3. Про джинглы и звуковые схемы
                            4.4. Про фоновый шум
                            4.5. Про фильтры
                            4.6. Про Show Notes, а также про то, зачем слушать свой подкаст
                            4.7. Публикация подкаста
                            4.8. Монетизация
                            4.9. Темы, которые есть, но о которых мы не говорили

                          Каждый раздел статьи содержит три блока


                          • Суть раздела — основная мысль, изложенная тезисно
                          • Детальное описание “что, зачем и почему”. Обычно — много букв, которые поясняют основную мысль, и находятся они в скрытой секции “Дополнительная информация”
                          • Ответ, который нашли мы

                          Интересно — читайте все. Нет времени — читайте первый и последний абзац.



                          1. Общая философия


                          1.1. Зачем делать подкаст?


                          Ответ может быть любым, но только не “потом посмотрим”, ”ещё не думал” или “не знаю”. Если ответа нет, весьма высока вероятность что

                          Читать дальше →
                        • О столе для работы стоя, здоровье позвоночника и личной эффективности

                            С недавних пор я снова перешёл на 100% работу из дома и стал использовать стол для работы стоя. Хочу поделиться дампом своего опыта на тему здоровья, призвать закончить прокрастинировать и начать работать стоя.



                            Сначала, о том, почему стол для работы стоя — не панацея...

                            Читать дальше →
                          • Три лауреата премии Дейкстры: как прошли Hydra 2019 и SPTDC 2019


                              Совсем недавно, с 8 по 12 июля, одновременно проходило два знаковых события — конференция Hydra и школа SPTDC. В этом посте хочется отметить несколько особенностей, которые мы заметили по ходу проведения конференции.


                              Самая большая гордость Гидры и Школы — это докладчики.


                              • Три лауреата премии Дейкстры: Leslie Lamport, Maurice Herlihy и Michael Scott. Причём Морис получил её целых два раза. Лесли Лэмпорт получил еще и премию Тьюринга — самую престижную премию ACM в информатике;
                              • Создатель JIT-компилятора Java — Cliff Click;
                              • Разработчики корутин — Роман Елизаров (elizarov) и Никита Коваль (ndkoval) для Kotlin, и Дмитрий Вьюков для Go;
                              • Контрибьюторы в Cassandra (Алекс Петров), CosmosDB (Денис Рысцов), Yandex Database (Семен Чечеринда и Владислав Кузнецов);
                              • И множество других известных людей: Martin Kleppmann (CRDT), Heidi Howard (Paxos), Ori Lahav (C++ memory model), Pedro Ramalhete (wait-free data structures), Алексей Зиновьев (ML), Дмитрий Бугайченко (анализ графов).
                              Читать дальше →
                              • +35
                              • 2,4k
                              • 5
                            • Быстрый старт с WebComponents

                              • Tutorial
                              Веб-компоненты это набор стандартов определяющих программные интерфейсы для организации компонентной архитектуры. Все они реализованы в современных версиях браузеров, т.е. не требуют подключения библиотек или транспиляторов кода, однако, если нужна совместимость например с Internet Explorer 11, то и библиотеки и транспиляторы использовать видимо все-таки придется.

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

                              Все эксперименты приводимые далее проверялись в Chrome и Firefox может быть даже не самых новых версий.
                              Читать дальше →
                            • В Россию приезжает отец Free Software, Ричард Столлман. Ищем того, кто готов на пару дней его приютить

                                Есть интересная проблема, помочь решить которую можете только вы. Вкратце: в августе в Санкт-Петербург на TechTrain приезжает Ричард Столлман, и он не любит жить в гостиницах. У вас появляется уникальная возможность приютить у себя дома на пару дней отца всего Free Software, и под катом мы расскажем — как.


                                Небольшая историческая справка. Доктор Ричард Мэттью Столлман создал движение свободного ПО в 1983 году и начал разработку операционной системы GNU в 1984. GNU действительно свободна: любой имеет право копировать и распространять её, внося изменения, если пожелает. Система GNU/Linux — в основном, операционная система GNU с ядром Linux Линуса Торвальдса — сейчас используется на десятках миллионов компьютеров, их количество сложно точно подсчитать. Столлман получил множество престижных премий: ACM Grace Hopper Award, ACM Software and Systems Award, EFF Pioneer Award, MacArthur Foundation Fellowship и так далее и тому подобное. Ну и конечно, Internet Hall of Fame.


                                Кажется невероятным, что такой человек не хочет жить в отличной гостинице (которую мы ему, конечно, предложили). Тут есть и чисто человеческие аспекты, и рациональное зерно.


                                Читать дальше →
                              • Promise.allSettled

                                • Перевод


                                На 71-м митинге Ecma TC39 будет рассматриваться проект и эталонная реализация Promise.allSettled — третьего из четырех основных комбинаторов промисов.


                                Авторы: Джейсон Вильямс (BBC), Роберт Памли (Bloomberg), Матиас Байненс (Google)
                                Чемпион: Матиас Байненс (Google)
                                Этап: 3


                                Для любителей подкастов, продублировано на YouTube.

                                Читать дальше →
                              • Дорогой Agile, мне надоело притворяться

                                • Перевод


                                «Agile мёртв». Люди всё время так говорят. Но обязательно добавляют: «Мы просто шутим». Они типа имели в виду, что это у тебя такие неправильные и глупые практики, что это для тебя Agile мёртв. Но «настоящий» Agile не мёртв. Просто все его делают неправильно. Так что я понял: настоящий Agile — это, знаете ли, Agile в теории. Даже я его внедрял. И знаете что? Мне надоело.

                                Недавно я видел в статьях ту же самую старую защиту: «Но-но-но, проблема в водопаде, скраме и неправильной реализации Agile, несоблюдении Манифеста… бла-бла-бла». Тогда Боб Маршалл сказал мне правду. Он сказал: «Заткнись, Чарльз. Манифест Agile — это кувшин, который мы наполняем». Он сделал несколько замечаний, с которыми мне пришлось согласиться. Я задумался. Результатом стала эта статья.
                                Читать дальше →
                              • «Эмпирические результаты лишь для публикации, реальные мотивы работ — эстетические». Большое интервью с Майклом Скоттом

                                  Майкл Скоттуже 34 года как профессор Computer Science в Рочестерском университетe, а в родном универститете Wisconsin–Madison был деканом в течение пяти лет. Он занимается исследованиям в области параллельного и распределённого программирования и дизайна языков и обучает этому студентов.


                                  Мир знает Майкла по учебнику «Programming Language Pragmatics», а работа «Algorithms for scalable synchronization on shared-memory multiprocessors» получила премию Дейкстры как одна из наиболее известных в области распределённых вычислений. Также вы можете знать его как автора того самого алгоритма Майкла-Скотта.


                                  Вместе с Дагом Ли разработал те неблокирующие алгоритмы и синхронные очереди, на которых работают библиотеки Java. Внедрение «dual data structures» в JavaSE 6 позволило в 10 раз улучшить производительность ThreadPoolExecutor.


                                  Содержание:


                                  • Начало карьеры, Рочестерский университет. Проект Charlotte, язык Lynx;
                                  • IEEE Scalable Coherent Interface, блокировка MCS;
                                  • Выживание в постоянно меняющемся мире;
                                  • Становятся ли студенты глупее? Глобальные тренды, интернационализация;
                                  • Эффективная работа со студентами;
                                  • Как не отстать при подготовке новых курсов и книг;
                                  • Связь между бизнесом и академией;
                                  • Практическая реализация идей. MCS, MS, CLH, JSR 166, работа с Дагом Ли и многое другое;
                                  • Транзакционная память;
                                  • Новые архитектуры. Близкая победа транзакционной памяти;
                                  • Энергонезависимая память, Optane DIMM, сверхбыстрые устройства;
                                  • Следующий большой тренд. Dual data structures. Hydra.
                                  Читать дальше →