• [Екатеринбург, анонс] Botters of the Galaxy CodingHub в офисе Контура

      Пора отвлечься от рабочих задач и попрограммировать что-нибудь необычное.
      3 марта, в субботу, с 12:00 до 16:00 будем вместе писать ботов для игры.


      Что случилось?


      В ночь на 3 марта на платформе CodinGame.com стартует 10-дневное соревнование по созданию ботов для мультиплеерной игры. Какой именно игры — пока секрет, узнаем после начала соревнования. Пока известно только название — Botters of the galaxy — и тематика оформления:



      Похоже, Звёздный Лорд пользуется Linux.

      Что ещё за CodinGame?!
    • «Календарь тестировщика» за февраль. Узнай своего клиента

        Мы продолжаем цикл статей «Календарь тестировщика», где каждый месяц тестировщики Контура делятся опытом и рабочими секретами. В предыдущей статье Максим Захаров рассказал как разобрать бэклог.

        В этот раз Илария Тарасова и Максим Колодкин из Контур.Эльбы, расскажут, почему тестировщику нужно общаться с клиентом и какие инструменты для этого есть в Контуре. Чтобы не пропустить новую статью, подписывайтесь на телеграм-канал.

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




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


        За 8 лет число пользователей сильно выросло, поэтому увеличилось и число консультантов. Сейчас их 70, они работают по жестким правилам и регламентам ради эффективности. С одной стороны, это помогает выстроить работу большой команды, а с другой, делает процесс очень негибким. Консультант может решить конкретную проблему, но у него не хватает времени, чтобы подумать шире и найти её истинную причину (например, в интерфейсе). В итоге такие проблемы не всплывают в ежемесячной статистике, а так и лежат на дне, пока не накопится критическая масса недовольных пользователей.

        Читать дальше →
      • Вакансии компании Контур

      • «Календарь тестировщика». Разбери бэклог

          В Контуре работают 100 тестировщиков. В конце прошлого года они придумали «Календарь тестировщика» — цикл из 12 ежемесячных статей с практиками, секретами и лайфхаками о тестировании.

          Первая статья была опубликована в январе на сайте «Сообщества тестировщиков Екатеринбурга». Мы переносим её на Хабр, чтобы её прочло больше тестировщиков. Следующая статья — за февраль — выйдет завтра, а её анонс будет в телеграм-канале.

          Открывает цикл Максим Захаров, руководитель всех тестировщиков Контура и один из тестировщиков Ритейла. Он расскажет, почему копятся баги, как разобрать бэклог и уничтожить 80 багов с помощью пиццы :)

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




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


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

          Читать дальше →
          • +18
          • 3,7k
          • 1
        • Как мы перевернули календарь и сделали из него арт-объект

            В Контуре работает 54 дизайнера, которые проектируют интерфейсы продуктов для каждой четвёртой компании в России. А ещё наши дизайнеры пишут Гайды, где делятся своим опытом. И вот уже больше года ребята создают календари, которые наделали шума в компании.


            Что такое проект «Календарь» и как к нему отнеслись контуровцы, расскажет Юлия Красильникова, куратор проекта и проектировщик Контур.Маркета.


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


            Заглянуть в мастерскую художника...
            • +20
            • 5,2k
            • 9
          • Видео с митапа UralJS #6 — избавляемся от this, типизируем Redux-приложение и пишем на Реакте без тормозов

              image


              На прошлой неделе в Екатеринбурге прошла встреча UralJS. Мы снова собрали сотню разработчиков и порвали коворкинг — пришлось ставить дополнительный монитор на кухне и дублировать экран проектора, чтобы снять нагрузку на основной зал.


              По традиции было три спикера — фрилансер, контуровец и злой марсианин. Вот что мы обсуждали:

              Читать дальше →
            • Экспресс-оценка сложности алгоритма (+разбор задачи c Joker 2017 и DotNext 2017 Moscow)

                Для любого практического применения log(n) можно считать константой. Просто в некоторых компаниях эта константа больше, чем у вас. © народная мудрость

                Половину жизни я учу программировать. В том числе учу разработчиков делать быструю оценку вычислительной сложности алгоритма. Зачем?!


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


                Сначала разберёмся, как делать оценку сложности, на примере короткой, но нетривиальной задачи. Потом я расскажу, как научится делать экспресс-оценку, и покажу статистику о том, как решали задачу-пример участники конференций Joker и DotNext.


                Читать дальше →
              • Интересные сюрпризы ConcurrentDictionary (+разбор задачи с DotNext 2017 Moscow)

                  Привет всем, кто пишет код для .NET, особенно многопоточный. Редко встретишь потокобезопасный код без потокобезопасных коллекций, а значит, нужно уметь ими пользоваться. Я расскажу о самой популярной из них — ConcurrentDictionary. В ней спрятано на удивление много интересных сюрпризов: как приятных, так и не очень.


                  Сначала разберём устройство ConcurrentDictionary и вычислительную сложность операций с ним, а затем поговорим об удобных трюках и подводных камнях, связанных с memory traffic и сборкой мусора.


                  Читать дальше →
                • Неслучайная случайность, или Атака на ГПСЧ в .NET

                    Random numbers should not be generated with a method chosen at random.
                    — Donald Knuth

                    Копаясь как-то в исходниках одного сервиса в поисках уязвимостей, я наткнулся на генерацию одноразового кода для аутентификации через SMS. Обработчик запросов на отправку кода упрощённо выглядел так:


                    class AuthenticateByPhoneHandler
                    {
                        /* ... */
                    
                        static string GenerateCode() => rnd.Next(100000, 1000000).ToString();
                    
                        readonly static Random rnd = new Random();
                    }

                    Проблема видна невооруженным глазом: для генерации 6-тизначного кода используется класс Random — простой некриптографический генератор псевдослучайных чисел (ГПСЧ). Займёмся им вплотную: научимся предсказывать последовательность случайных чисел и прикинем возможный сценарий атаки на сервис.


                    Потокобезопасность


                    Кстати, заметим, что в приведённом фрагменте кода доступ к статическому экземпляру rnd класса Random из нескольких потоков не синхронизирован. Это может привести к неприятному казусу, который можно часто встретить в вопросах и ответах на StackOverflow:


                    Читать дальше →
                  • [Екатеринбург, анонс] UralJS #6 — три доклада о типизации, проблемах this и оптимизации React-приложения

                      image


                      В четверг 8 февраля в 19:00 в коворкинге «Соль» пройдет первая в 2018 году встреча UralJS. Разберемся, почему в Контуре TypeScript победил Flow, послушаем рецепты оптимизации от Лёши Иванова — злого марсианина и члена программного комитета Fronttalks, и поспорим, что круче: функциональщина или ООП.


                      UralJS появился как эксперимент — группе коллег не хватало профессиональной движухи, и мы решили ее организовать. В первый раз собралось 70 разработчиков, а теперь мы закрываем регистрацию на сотне участников, потому что площадки не резиновые. Расширяется география — к нам в Екатеринбург приезжали гости из Тюмени, Челябинска и Перми.


                      За 2017 год мы провели 5 митапов. Обсуждали, что делать, если маленький пет-проект привлечет миллион пользователей, рассказывали, какой классный Vue и тут же бомбили по этому поводу, разбирались с интернационализацией и восхищались потокам в JS. Летом мы попробовали другие форматы. Андрей Старовойт из JetBrains сделал большой доклад о том, как разработчики WebStorm выбирают технологии для поддержки. Вместе кодили на выходных — щупали Ангуляр и решали одну и ту же задачу пять раз с разными партнерами и ограничениями.


                      Что будет на этот раз:

                      Читать дальше →
                      • +10
                      • 2,2k
                      • 3
                    • Классненькая стажировка

                        Мы продолжаем серию публикаций о стажировке в СКБ Контур. Сегодня познакомимся с Анной Шляк, которая расскажет как прошла ее стажировка в Питере и поделится советами.




                        Тестовое задание


                        Об СКБ Контур я узнала от одногруппницы: «У них есть классненькие стажировки на C#». В феврале 2017 я дождалась начала стажировки, но была дико расстроена: тестовое задание показалось мне просто непосильным. Нужно было написать сервер статистики для игры-шутера. «Классненько», — подумала я и начала стараться. К концу февраля всё-таки смогла сделать первоначальный вариант и отправить на проверку.


                        Отбор по тестовым шел в две волны: сначала рассматривали тех, кто отправил ответы до 1 марта, потом — до 19 марта. Я хотела попасть в первую волну, и, как оказалось, не зря. На тестовое мне ответили: «Вы справились хорошо, но немного не дотянули до нашего ТОПа. До 19-го марта есть время, чтобы улучшить ваши ответы». Так я и сделала. Пока я писала код, появлялись новые уточнения и требования по заданию. В одном из уточнений был запрет использовать базу данных MS SQL Server. Если эта база не подходит, то как выбрать нужную? Наугад я выбрала SQLite и с тревогой отправила тестовое на проверку. И прошла дальше.


                        Следующим этапом был креш-курс на базе отдыха под Екатеринбургом. В апреле я вылетела из Санкт-Петербурга в столицу Урала ради лекций и развлечений. Я была счастлива, что попала на креш-курс: интересные и полезные лекции, парное программирование, куча разных игр, вкусняшки.



                        Читать дальше →
                      Самое читаемое