• [Археология Live] Стыдный разговор о синглтонах

      Аудитория: Java Junior, любители холиворов, профессиональные написатели синглтонов



      Любые замечания и предложения — очень приветствуются. Это мое первое видео, и не совсем понятно, нужен ли тут вообще такой контент. Считайте это закрытым альфа-тестом, только для посетителей хаба Java :)


      Ниже дана полная текстовая расшифровка, кому не хочется тратить время на просмотр.

      Читать дальше →
    • Качество и тестирование: Руководство Gov.uk

      • Перевод
      Тестирование программ с помощью agile-методов.



      Основные подходы любой другой системы тестирования ПО также применимы в условиях создания приложений с использованием гибких agile-методологий, однако цель тестирования может несколько отличаться.
      Читать дальше →
    • Анонс конференции HolyJS 2017 Moscow: Два дня чистого JS

        В этом году JavaScript обошел PHP в рейтинге TIOBE. Важно это или нет? Наверное, не очень. Более важно то, что язык продолжает активно расти и развиваться, несмотря на то, что кому-то вектор развития может не нравиться.

        Вообще, делать HolyJS всегда приятно. Пока в мире Java мы уже на протяжении четырех конференций (два Joker и две JPoint) ждем релиза новой версии, JS продолжает обрастать новыми фичами и хайповыми фреймворками, да так быстро, что наш программный комитет с трудом поспевает. Хорошо, что программа конференции строится не столько вокруг хайповых продуктов, сколько вокруг вещей, полезных в жизни, а их выходит существенно меньше.



        Прошедшая в этом году HolyJS в Питере разрослась до полутысячи участников и двух дней, а о том, что будет с HolyJS 2017 Moscow, которая пройдет 10-11 декабря в Radisson Славянская, читайте под катом.
        Читать дальше →
        • +22
        • 4,3k
        • 8
      • Два в одном: как пользоваться Vim и Nano?

        Upd. 9.7.2017: обновлён раздел про vim. Спасибо вимерам за ценные дополнения.

        Вступительное слово


        Зачем нужна ещё одна, 1001я публикация на эту тему? Статей про vim и nano написано огромное количество, но как правило они касаются только одного из редакторов, либо представляют из себя общий обзор. Чтобы в одной были сжато описаны оба редактора, но при этом без углубления в дебри приведены все основные клавиши управления для полноценной работы, я не не нашёл. Поэтому, почитав найденные материалы, я начал их конспектировать, так и родилась эта статья.


        Любой текстовый редактор можно освоить «методом тыка». Но только не vim.
        Чем nano лучше vim?
        Из nano можно выйти без reset'а! (с) Интернет


        Изначально я не планировал писать об обоих редакторах, а хотел сделать краткую справку только по nano, но в процессе сбора информации накопились данные и по vim тоже. Тут я обнаружил, что Vim не так уж и страшен, если знать команды и концепцию его использования.

        Читать дальше →
      • Рефакторинг кода в обеденный перерыв: знакомство с сodemod-скриптами

        • Перевод


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


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


        За последние годы JavaScript изменился до неузнаваемости. Развитие этого языка привело к тому, что была изменена даже простейшая задача по объявлению переменных. В ES6 появились let и const, стрелочные функции и множество других новшеств, каждое из которых приносит пользу разработчикам.


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

        Читать дальше →
        • +62
        • 14,4k
        • 5
      • Moby/Docker в продакшене. История провала

        • Перевод

        Примечание переводчика: в предыдущей статье о подготовке к девопс-конференциям, Gryphon88 задал резонный вопрос: как отличить cutting-edge и хайп? Нижеследующая статья наполнена сочной незамутненной истерикой, которую так приятно читать с утра, попивая чашечку кофе. Минус в том, что она написана в ноябре 2016, но нетленка не стареет. Если после прочтения захочется добавки, есть комментарии на Hacker News. А у тебя, юзернейм, такой же ад? Пиши в комментариях. Итак, начнем.


        В первый раз я встретился с Докером в начале 2015. Мы экспериментировали с ним, чтобы понять, для чего бы его можно употребить. В то время нельзя было запустить контейнер в фоне, не было команд чтобы посмотреть что запущено, зайти под дебагом или SSH внутрь контейнера. Эксперимент оказался быстрым, Докер был признан бесполезным и более похожим на альфу или прототип, чем на релиз.


        Промотаем нашу историю до 2016. Новая работа, новая компания, и хайп вокруг докера поднялся безумный. Разработчики уже выкатили докер в продакшен, так что сбежать с него не удастся. Хорошая новость в том, что команда run наконец-то заработала, мы можем запускать и останавливать контейнеры. Оно шевелится!


        У нас 12 докеризованных приложений, бегающих на проде прямо в момент написания этой заметки, размазанные на 31 хост на AWS (по одному приложению на хост, дальше объясню — почему).


        Эта заметка рассказывает, как мы путешествовали вместе с Докером — путешествие полное опасностей и неожиданных поворотов.

        Читать дальше →
      • Классификация текста с помощью нейронной сети на Java

        • Tutorial
        – Наша Лена уходит в декрет, – сообщил начальник, – поэтому нам надо искать замену на время ее отсутствия. Часть задач мы распределим, а вот как быть с задачей перенаправления обращений пользователей?

        Лена – это наш сотрудник технической поддержки. Одна из ее обязанностей – распределение поступающих на электронную почту обращений между специалистами. Она анализирует обращение и определяет ряд характеристик. Например, «Тип обращения»: ошибка системы, пользователю просто нужна консультация, пользователь хочет какую-то новую функциональность. Определяет «Функциональный модуль системы»: модуль бухгалтерии, модуль паспортизации оборудования и т.д. Проставив все эти характеристики, она перенаправляет обращение соответствующему специалисту.

        – Давай я напишу программу, которая это будет делать автоматически! – ответил я.

        На этом увлекательный роман заканчиваем и переходим к технической части.

        Читать дальше →
      • Посещение конференции — чеклист

          Это статья появилась за распитием пива с друзьями в Академгородке — стало понятно, что лучше её перенести в текстовый вид, дабы не повторять сто раз.

          Существуют легенды на тему того, что единственный смысл конференции — это найти себе работу покруче за деньги текущего работодателя. Несмотря на внешнюю неэтичность, в этом хотя бы есть смысл. В реальности бывает куда хуже: люди приходят на конфу, и потом не знают, чем заняться, кроме как хавать булочки в переходе (особенно если они бесплатные). Давайте я расскажу, что делать, чтобы не тратить свои и чужие ресурсы зазря.
          Читать дальше →
          • +47
          • 11,5k
          • 8
        • Ставим Selenium Grid на колеса Apache Mesos

            Привет, Хабр! Меня зовут Настя, и я не люблю очереди. Поэтому я расскажу вам, на примере Альфа-Лаборатории и наших исследований, каким образом можно организовать инфраструктуру и архитектуру для прогона тестов, чтобы получать результат в разы быстрее. Например, нам удалось добиться такой цифры, как 5 минут суммарного времени прохождения тестов на приложение. Для этого нам пришлось поменять подход к запуску Selenium Grid.



            Прежде чем начну рассказывать про сам selenium grid и все, что связано с ним, я хочу пояснить суть проблемы, которую мы пытались решить.

            В прошлом году мы внедряли DevOps как процесс. И в один момент, автоматизируя все и вся, мы поняли, что time to market для каждого артефакта на этапе тестирования не должен превышать 30 минут. Концептуально мы хотели, чтобы некоторые релизы проходили автоверификацию, если приемочное тестирование им не нужно. Для тех артефактов, которые нужно проверять руками, 30 минут — это время, за которое тестировщик получает результаты прогона автотестов, анализирует их, а также делает приемочное тестирование. При этом автотесты должны автоматически запускаться в рамках нашего pipeline.
            Читать дальше →
          • DevOops 2017 Piter: Новая конференция от JUG.ru Group, поговорим про DevOps

              Известный факт: мы в JUG.ru Group не делаем конференции просто так, обычно за идеей каждого нового проекта лежит какая-то проблема. Такая нашлась и у нас.

              Когда мы были молоды и веселы и использовали генераторы статичных сайтов на Node.js (по секрету скажу, что мы продолжаем их использовать), с нами приключилась вот такая история. Мы только переехали на AWS и взяли самый простой EC2-инстанс, наивно полагая, что 10 Gb пространства на десяток статичных сайтов нам хватит. Однако, в один прекрасный день мы начали ловить ошибки от сервера о том, что место на диске… кончилось. 10 сайтов на 10 Gb пространства. Конечно, мы не поверили вражьим сообщениям и достаточно быстро установили, что на самом деле кончились inode.

              Беглый поиск выявил мерзкого виновника — это был JavaScript Node.js, а именно папка node_modules. Посчитали inode, и поняли, что их там добрая сотня тысяч. Оокей, подумали мы и прикрутили еще 100 гигов. И сейчас все хорошо: 630k inode занято, зато есть еще 6kk сверху под зависимости Node.js. Надеюсь, нам хватит этого на ближайшие полгода… А к тому времени, когда они начнут заканчиваться, на новой конференции мы узнаем, как элегантно решить эту проблему.

              А если серьезно, то 20 октября мы проведем DevOps-конференцию DevOops 2017 Piter. Один день, три трека, все как вы любите. Кто будет выступать, что будем обсуждать и другие подробности — под катом.


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