• Отчёт с Java Virtual Machine Language Summit 2019


      Сегодня закончился двенадцатый саммит JVM LS. Как обычно, это было хардкорное мероприятие с техническими докладами, посвящёнными виртуальным машинам и языкам, которые на них работают. Как обычно, саммит проходил в Санта-Кларе, в кампусе компании Оракл. Как обычно, желающих попасть сюда существенно больше, чем мест: количество участников не превышает 120. Как обычно, не было никакого маркетинга, только потроха.


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


      Если вы не попали на саммит, не беда. Большинство докладов выкладывают на YouTube практически сразу послед саммита. Собственно они уже доступны. Чтобы было проще сориентироваться, я опишу здесь вкратце все доклады и воркшопы, на которых удалось поприсутствовать.

      Читать дальше →
      • +40
      • 5.4k
      • 5
    • Как проходят алгоритмические секции на собеседованиях в Яндекс

        Алгоритмическая секция с написанием кода на доске или бумаге — один из важнейших этапов собеседования разработчиков для получения работы в Яндексе. Мы решили подробнее рассказать о том, как устроены эти секции, чтобы помочь будущим кандидатам в подготовке. Кроме того, надеюсь, многие из тех, кто не решается прийти в Яндекс на собеседование, опасаясь слишком сложных испытаний, после этого рассказа поймут, что в действительности всё не так уж и страшно!


        Так что мы подготовили для вас следующие материалы:


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


        Читать дальше →
      • Собеседование по TypeScript: 20 вопросов и ответов

        • Translation
        Язык TypeScript основан на том же синтаксисе и семантике, которые хорошо знакомы миллионам JavaScript-разработчиков. TypeScript даёт возможность работать с самыми свежими и ещё только появляющимися возможностями JS, включая те, которые имеются в ECMAScript 2015, и те, которые пока существуют лишь в виде предложений. Среди таких возможностей, например, асинхронные функции и декораторы. Всё это направлено на то, чтобы помочь разработчику в создании надёжных и современных приложений.

        TypeScript-программа компилируется в обычный JavaScript-код, который может выполняться в любом браузере или в среде Node.js. Этот код будет понятен любому JS-движку, который поддерживает стандарт ECMAScript 3 или более новый.



        Материал, перевод которого мы сегодня публикуем, содержит разбор двадцати вопросов, которые вполне могут задать тому, кто собирается пройти собеседование, претендуя на позицию TypeScript-программиста.
        Читать дальше →
      • 25 ошибок начинающего программиста

        • Translation

        Научитесь выявлять их. Выработайте привычки избегать их.


        Цель этой статьи не загнобить новичков за типичные ошибки, а научить выявлять их и избегать. Порядок перечисления – случайный.

        От переводчика


        Иногда бывает трудно объяснить простыми словами казалось бы банальные вещи: зачем использовать гит, в чем фишка инкапсуляции, зачем писать тесты, как планировать свой код, рефакторить чужой и т.д. Мне показалось, что в этой статье компактно собраны важные «гуманитарные» аспекты программирования. Что-то вроде морального кодекса, ориентира и мотиватора в принятии решений, связанных с написанием кода.

        Как бы это смешно не звучало, я работал над этим текстом с середины марта, стараясь подобрать подходящие формулировки и упростить для восприятия. Ещё пару дней воевал с хабра-редактором. Поэтому, если вы найдёте недочёты, прошу не винить меня в нерадении, а оповестить, я их сразу же исправлю. Я думал украсить статью картинками, но решил, что это только раздует её до совсем неприличных размеров. Приятного чтения.
        Читать дальше →
      • Где и как изучать машинное обучение?

        • Tutorial

        Всем привет!


        Ни для кого не секрет, что интерес к машинному обучению и искусственному интеллекту растет в лучшем случае по экспоненте. Тем временем мой Яндекс Диск превратился в огромную свалку пейперс, а закладки в Google Chrome превратились в список, длина которого стремится к бесконечности с каждым днем. Таким образом, дабы упростить жизнь себе и вам, решил структурировать информацию и дать множество ссылок на интересные ресурсы, которые изучал я и которые рекомендую изучать вам, если вы только вначале пути (буду пополнять список постоянно).

        Путь для развития новичка я вижу примерно так:

        Untitled_presentation
        Читать дальше →
      • Разбор основных концепций параллелизма

        • Translation
        Всем кофе!

        Завтра у нас плавненько стартует практически юбилейный поток курс «Разработчик Java» — уже шестой по счёту начиная с апреля прошлого года. А это значит, что мы снова подобрали, перевели интереснейший материал, которым делимся с вами.

        Поехали!

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

        РАЗДЕЛ 1

        Вступление

        С момента своего создания Java поддерживает ключевые концепции параллелизма, такие как потоки и блокировки. Эта памятка поможет Java-разработчикам, работающим с многопоточными программами, понять основные концепции параллелизма и способы их применения.

        РАЗДЕЛ 2

        Концепции

        Концепция Описание
        Atomicity (атомарность) Атомарная операция — это операция, которая выполняется полностью или не выполняется совсем, частичное выполнение невозможно.
        Visibility (видимость) Условия, при которых один поток видит изменения, сделанные другим потоком

        Таблица 1: Концепции параллелизма

        Читать дальше →
      • 9 лучших книг про IT и программирование, которые вы могли пропустить

          image

          Помните, Льюис Кэрролл писал: «Здесь приходится бежать со всех ног, чтобы только остаться на том же месте, а чтобы попасть в другое место, нужно бежать вдвое быстрее»? Это фраза прекрасно подходит для IT-мира: технологии быстро развиваются, и каждый день нужно осваивать что-то новое, чтобы оставаться востребованным специалистом. У каждого программиста наверняка есть 5-6 бумажных книг, ставших классикой. О некоторых таких книгах мы уже писали. Но чтобы оставаться востребованным кодером, надо постоянно обновлять библиотеку. В прошлом году портал DevMountain сделал подборку из семи не слишком популярных книг для начинающих программистов. Учитывалась не только оценка портала, но и отзывы на Amazon, а также рекомендации популярных блогов. Автор GeekBrains Илья Бубнов внимательно изучил этот список, а также дополнил подборку парой свежайших экземпляров.
          Читать дальше →
          • +22
          • 80.4k
          • 3
        • Расскажите о себе. Как правильно это сделать во время собеседования

            Всем привет!
            В продолжение статей о поиске работы в США («HR позвонит, или Как составить американское резюме», «Шпаргалка по заполнению LinkedIn-профиля», «Сопроводительное письмо. Что стоит писать?») решила разобрать вопрос, с которого обычно начинаются интервью с американскими рекрутерами и HR-менеджерами. Хотя, пожалуй, этот вопрос популярен у специалистов по найму независимо от страны и национальности. При написании данного материала я руководствовалась советами американского эксперта в области карьеры Alison Doyle («How to Answer Tell Me About Yourself at an Interview»).

            Иногда интервьюеры начинают разговор с открытых вопросов, и один из самых популярных – «Расскажите о себе». Такой вопрос призван положить начало разговору, растопить лед и задать тон всему собеседованию. Кроме того, таким образом специалист по найму сможет составить представление о Вашей личности и понять, хороши ли Вы для той или иной работы.
            Читать дальше →
          • Шпаргалки Java программиста 9: Java SE — Шпаргалка для собеседований и повторений

            • Tutorial
            Данная статья в первую очередь предназначена для подготовки к собеседованиям на позицию Java разработчика (на самом деле, это шпаргалка, которую я писал для себя в течении многих лет, и повторяю при каждом новом поиске работы).

            Предполагается. что вы знакомы с многими функциями из Java SE, поэтому в основном информация дается кратко. Конечно, можно использовать эту статью и просто для обучения основам Java SE платформы (но в этом случае, после чтения статьи вам скорее всего придется обратиться к другим источникам).

            image

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

            Внимание: я не буду касаться вопросов по самому языку Java (вроде для чего нужно слово final или чем overriding отличается от overloading), это потребует отдельной статьи, это вопросы именно по Java SE (6-9) платформе.
            Читать дальше →
          • SQL Server 2017 JSON



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

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

              Такое пафосное вступление имеет определенные на то основания, поскольку долгое время на Microsoft Connect поддержка работы с JSON на SQL Server была одной из самых востребованных фич. Шли годы и неожиданно данный функционал реализовали вместе с релизом SQL Server 2016. Забегая вперед скажу, что вышло очень даже хорошо, но Microsoft не остановилась на этом и в SQL Server 2017 существенно улучшили производительность и без того быстрого JSON парсера.
              Подробнее
            • Строго о новой системе единиц СИ

              Недавно вышла статья Пересмотр системы единиц СИ: новые определения ампера, килограмма, кельвина и моля от юзера alizar. В комментариях возникла дискуссия. Я понял, что эта статья alizar'а некачественная, а также заметил, что многие комментаторы ошибаются в известных вещах. Поэтому я пишу эту статью.

              Статья будет посвящена разъяснению базовых вещей. В качестве источников я использовал знания по физике и химии, полученные в школе, статьи из Википедии, действующий СИ (8-е издание) и черновик нового СИ (9-е издание), который собираются принять. Я постараюсь быть объективным, я просто объясню то, что физики уже знают.

              Не используйте упомянутую статью от alizar в качестве источника информации. В ней неверно первое же предложение (точнее, подпись к первой картинке: «Сфера из кремния-28 с чистотой 99,9998% может быть принята как эталон единицы измерения количества вещества»), к нему мы ещё вернёмся (UPD от 2017-11-05 19:30: исправлено). В качестве хороших источников информации предлагаю статью в английской Википедии о новом СИ, оригинальную статью Nature, старый СИ, черновик нового СИ, FAQ о новом СИ.
              Читать дальше →
            • Взлом визуальной системы: 11 оптических иллюзий в графическом дизайне

              • Translation
              Глубока ли кроличья нора?

              image

              Сколько минут вам потребуется, чтобы понять в чем фишка?

              Фрэнсис Бэкон в 1620 году разделил источники человеческих ошибок, стоящих на пути познания, на четыре группы, которые он назвал «призраками» или «идолами» (лат. idola).

              • «Призраки рода» проистекают из самой человеческой природы, они не зависят ни от культуры, ни от индивидуальности человека. «Ум человека уподобляется неровному зеркалу, которое, примешивая к природе вещей свою природу, отражает вещи в искривлённом и обезображенном виде».
              • «Призраки пещеры» — это индивидуальные ошибки восприятия, как врождённые, так и приобретённые. «Ведь у каждого, помимо ошибок, свойственных роду человеческому, есть своя особая пещера, которая ослабляет и искажает свет природы».
              • «Призраки площади (рынка)» — следствие общественной природы человека, — общения и использования в общении языка. «Люди объединяются речью. Слова же устанавливаются сообразно разумению толпы. Поэтому плохое и нелепое установление слов удивительным образом осаждает разум».
              • «Призраки театра» — это усваиваемые человеком от других людей ложные представления об устройстве действительности. «При этом мы разумеем здесь не только общие философские учения, но и многочисленные начала и аксиомы наук, которые получили силу вследствие предания, веры и беззаботности». [Wikipedia]

              Под катом — наглядная демонстрация уязвимости нашего мозга к атакам через визуальный ввод. Представляю вам перевод статьи продуктового дизайнера и фронтэнд-разработчика Balraj Chana, про то как можно использовать/нейтрализовать эффект оптических иллюзий.
              Читать дальше →
            • За счет чего Tarantool такой оптимальный

                Денис Аникин

                Аникин Денис ( danikin, Mail.Ru)


                Доклад будет посвящен Tarantool. Я всегда рассказывал про use case, про что-то такое, что видит пользователь. Сегодня буду больше рассказывать про внутренности.

                Когда я первый раз увидел Tarantool, когда я узнал его бенчмарки, какая у него производительность, то мне это не то, чтобы показалось подозрительным, потому что все-таки я уже до этого программировал больше чем 10 лет и примерно понимал, что можно выжать из железа при оптимальном программировании, при оптимальном коде. Но все равно мне это показалось подозрительным — как так получается, что он такой быстрый? Т.е., условно, если все базы данных могут работать со скоростью в лучшем случае в десятки тысяч запросов в секунду, а Tarantool — до сотен тысяч и вплоть до миллиона.

                Поэтому, прежде чем начать применять его в продакшне, в Почте mail.ru и в Облаке, я все очень внимательно изучил и выяснил, как Tarantool устроен внутри, и что его делает таким оптимальным. И я подозреваю, что, наверное, у других пользователей Tarantool тоже есть такое же подозрение — что-то он какой-то слишком быстрый, и как-то это подозрительно…
                Читать дальше →
              • Чтение на выходных: 17 независимых блогов по математике, алгоритмам и языкам программирования

                  Сегодня мы подготовили очередную [наш IaaS-дайджест и материалы по структурированию кода] подборку полезных источников. На этот раз мы решили изучить тематическую ветку на Hacker News и рассказали о блогах, которые могут хорошо дополнить чтение «Хабра».

                  Авторы данных блогов готовят как материалы для новичков с туториалами и разъяснениями основ, так и более углубленные статьи и исследования. Всех заинтересовавшихся приглашаем под кат.

                  Disclaimer: мы решили разбить подборку на несколько частей в соответствии с тематическими потоками и хабами. Начнем с блогов по математике, алгоритмам и языкам программирования, а в следующих выпусках перейдем к веб-разработке и дизайну.

                  Читать дальше →
                  • +17
                  • 55.2k
                  • 1
                • Перформанс: что в имени тебе моём? — Алексей Шипилёв об оптимизации в крупных проектах

                    Оптимизация производительности издавна не даёт покоя разработчикам, представляясь своеобразным «золотым ключиком» к интересным решениям и хорошему послужном списку. Большую обзорную экскурсию по ключевым вехам оптимизации больших проектов  – от общих принципов до ловушек и противоречий —  на прошедшем JPoint 2017 провёл Алексей Шипилёв, эксперт по производительности.



                    Под катом — расшифровка его доклада.
                    Читать дальше →
                  • Тьюринг-полнота Generic типов Java

                      Периодически на хабре можно встретить статьи о том, какие невероятные вещи можно сделать на шаблонах C++: конечные автоматы, лямбда-исчисление, машина Тьюринга и многое другое.


                      Параметризованные типы в Java традиционно считаются лишь пародией на шаблоны C++ (несмотря на то, что их даже сравнивать как-то некорректно), и причины этого несложно понять. Тем не менее не всё так плохо, и компилятор Java можно заставить производить во время проверки типов любые вычисления, лишь бы хватило оперативной памяти. Конкретный способ это сделать был описан в ноябре 2016-го года в этой прекрасной публикации. Его я и хотел бы объяснить.


                      Для затравки приведу следующий код. Корректен ли он? Предлагаю скомпилировать и проверить, угадали ли вы результат.


                      class Sample {
                      
                          interface BadList<T> extends List<List<? super BadList<? super T>>> {}
                      
                          public static void main(String[] args) {
                              BadList<? super String> badList = null;
                              List<? super BadList<? super String>> list = badList;
                          }
                      }

                      Узнать ответ

                      Компилятор выбросит java.lang.StackOverflowError независимо от размера стэка.


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

                      Читать дальше →
                    • Генерация Галактики и обучение начальным знаниям астрономии

                        Введение


                        Некоторое время назад я дома решил посмотреть, что нового появилось на тему космоса за последнее время. За этим делом меня застал мой 7 летний сын, проявив большой интерес к этой тематике. Пока я ломал голову, как просто и доходчиво, а также в каком именно объеме дать ребенку информацию по космосу, я наткнулся на статью, где написано, что принято решение вернуть в российские школы предмет «Астрономия» в 2017-2018 учебном году, но только с 11 класса. Это и стало тем событием, которое подвигло меня написать эту статью, чтобы помочь ознакомить с азами астрономии детей до 11 класса.

                        По сути 7 летний ребенок является представителем определенной выборки пользователей, которая либо интересуется астрономией уже сейчас, либо заинтересуется ей в будущем. Именно для них, а также для тех, кто будет давать знания о звездах я предлагаю попробовать приведенных ниже способ. Основной идей является генерация Галактики с использованием реальных данных (эту часть я беру на себя), и последующее использование результата генерации либо в играх, либо в качестве учебного пособия теми, кто хотел бы сделать изучение астрономии более интересным…


                        Читать дальше →
                        • +10
                        • 4.6k
                        • 4
                      • Удивительный Юпитер глазами «Юноны»: первые научные результаты

                          Похоже, наша Солнечная система — очень интересное место. Регулярно ученые предполагают, что поверхность или строение небесного тела будут однородными и скучными. Но в реальности на месте унылого пейзажа оказывается сложный рельеф или структура, живущая по своим пока неизвестным законам. Так ошиблись с Титаном и Плутоном. И первые научные данные с зонда Juno показывают, что эту же ошибку ученые совершили с Юпитером — он оказался гораздо сложней и интересней, чем они думали.


                          По словам ученых команды Juno их работа похожа на этот коллаж. Автор: Kisala-78
                          Читать дальше →
                        • Почему я отказался от нескольких мониторов

                          • Translation

                          Да здравствует единственный монитор



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

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

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

                          И сейчас я расскажу, почему.

                          Переведено в Alconost
                          Читать дальше →
                        • Кто есть кто на рынке патентных услуг

                            В жизненном цикле каждой компании рано или поздно возникает вопрос, так или иначе связанный с интеллектуальной собственностью (ИС) – будь то патентование изобретения, регистрация товарного знака, депонирование программы, спор, связанный с использованием доменного имени или нарушением исключительных прав, патентные исследования в связи с госконтрактом, независимая оценка патентов и т.п. Для решения такого рода вопросов необходимы соответствующие специалисты. Мой опыт общения с клиентами показывает, что руководство компаний не всегда имеет четкое представление о том, какие специалисты им нужны в подобных случаях. Далее – краткий обзор «функционала» специалистов по ИС, помогающий сделать правильный выбор исполнителя для каждой конкретной задачи.

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