• «Как ставить сети на начинающих аналитиков» или обзор на онлайн курс «Старт в Data Science»

      Вот уже «тысячу лет» ничего не писал, но вдруг неожиданно появился повод сдуть пыль с мини-цикла публикаций по «обучению Data Science с нуля». В контекстной рекламе одной из соцсетей, а также на любимом «Хабре», я наткнулся на информацию о курсе «Старт в Data Science». Стоил он сущие копейки, описание курса было красочное и многообещающее. «Почему бы не восстановить, запылившиеся от ненадобности навыки пройдя очередной курс?» — подумал я. Также свою роль сыграло любопытство, давно хотелось посмотреть, как устроена организация обучения у этой конторы.

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


      Читать дальше →
    • Топ-65 вопросов по SQL с собеседований, к которым вы должны подготовиться в 2019 году. Часть I

      • Translation


      Перевод статьи подготовлен для студентов курса «MS SQL Server разработчик»




      Реляционные базы данных являются одними из наиболее часто используемых баз данных по сей день, и поэтому навыки работы с SQL для большинства должностей являются обязательными. В этой статье с вопросами по SQL с собеседований я познакомлю вас с наиболее часто задаваемыми вопросами по SQL (Structured Query Language — язык структурированных запросов). Эта статья является идеальным руководством для изучения всех концепций, связанных с SQL, Oracle, MS SQL Server и базой данных MySQL.

      Читать дальше →
    • Три года автотестов: как повысить скорость и не только


        Привет, я Алексей, full-stack разработчик платформы Vimbox. Когда я пришел в Skyeng, здесь решали, стоит ли тратить время на систему автотестов и попросили меня поделиться опытом с предыдущей работы. А такой опыт у меня был: к моменту ухода с предыдущего места мы написали на php и крутили больше 3 тысяч тестов. В итоге я сделал небольшую внутреннюю презентацию, рассказывающую о граблях, на которые успел наступить за несколько лет разработки этих автотестов, борьбы за их скорость, читабельность кода и общую эффективность. Презентация показалась коллегам полезной, поэтому я переложил ее в текст, чтобы оказаться полезным также и более широкой аудитории.


        Для начала – термины, о которых пойдет речь в статье:


        • Приемочный тест – end-to-end тест: здесь браузер или эмулятор браузера исполняет сценарий
        • Модульный тест (юнит тест) – тест метода
        • Функциональный тест – тест контроллера или компонента, если речь о фронтенде
        • Фикстура – состояние тестового окружения, необходимое для работы теста (глобальные переменные, данные в БД и прочие участники сценария теста)
        Читать дальше →
      • Как попасть на стажировку в Google

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


          В первой статье я расскажу, как успешно пройти все этапы собеседований и попасть на стажировку в Google.


          Читать дальше →
        • Ландшафт сервисов облачного машинного перевода. Лекция в Яндексе

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


            — Меня зовут Григорий Сапунов, я расскажу про ландшафт сервисов облачного машинного перевода. Мы измеряем этот ландшафт уже больше года, он очень динамичен и интересен.
            Читать дальше →
          • Курс MIT «Безопасность компьютерных систем». Лекция 10: «Символьное выполнение», часть 1

            • Translation
            • Tutorial

            Массачусетский Технологический институт. Курс лекций #6.858. «Безопасность компьютерных систем». Николай Зельдович, Джеймс Микенс. 2014 год


            Computer Systems Security — это курс о разработке и внедрении защищенных компьютерных систем. Лекции охватывают модели угроз, атаки, которые ставят под угрозу безопасность, и методы обеспечения безопасности на основе последних научных работ. Темы включают в себя безопасность операционной системы (ОС), возможности, управление потоками информации, языковую безопасность, сетевые протоколы, аппаратную защиту и безопасность в веб-приложениях.

            Лекция 1: «Вступление: модели угроз» Часть 1 / Часть 2 / Часть 3
            Лекция 2: «Контроль хакерских атак» Часть 1 / Часть 2 / Часть 3
            Лекция 3: «Переполнение буфера: эксплойты и защита» Часть 1 / Часть 2 / Часть 3
            Лекция 4: «Разделение привилегий» Часть 1 / Часть 2 / Часть 3
            Лекция 5: «Откуда берутся ошибки систем безопасности» Часть 1 / Часть 2
            Лекция 6: «Возможности» Часть 1 / Часть 2 / Часть 3
            Лекция 7: «Песочница Native Client» Часть 1 / Часть 2 / Часть 3
            Лекция 8: «Модель сетевой безопасности» Часть 1 / Часть 2 / Часть 3
            Лекция 9: «Безопасность Web-приложений» Часть 1 / Часть 2 / Часть 3
            Лекция 10: «Символьное выполнение» Часть 1 / Часть 2 / Часть 3
            Читать дальше →
          • Топ 8 лучших ресурсов для практики программирования в 2018

              Привет, Хабр! Представляю вашему вниманию перевод статьи Top Coding Challenge Websites of 2018 автора Trey Huffine.

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

              На чем бы вы не кодили: Python, Ruby, JavaScript, Golang, TypeScript, или еще какой-то язык, вы найдете здесь ресурс под ваши потребности. Чтобы научиться программировать — нужно программировать.
              Читать дальше →
            • Простой фильтр для автоматического удаления фона с изображений

                Существует множество способов удалить фон с изображения какого-либо объекта, сделав его прозрачным (в графических редакторах, специальных сервисах). Но иногда может возникнуть необходимость удаления фона у множества фотографий с минимальным участием человека.

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



                Реализация стала возможной благодаря OpenCV и C# обертке OpenCVSharp.
                Читать дальше →
              • Руководство по фоновой работе в Android. Часть 3: Executors и EventBus

                • Translation


                Приветствую, коллеги. Рад видеть вас снова в третьей части «Руководства по фоновой работе в Android». Если не видели предыдущие части, вот они:


                В прошлый раз мы разобрались, как работают Loaders, а сразу после этого Google взял и сообщил, что они полностью переписали LoaderManager. Видимо, мне надо позже вернуться к этой теме, но пока что буду следовать плану и делиться подробностями того, как организовать фоновую работу в Android исключительно с помощью джавовых thread pool executors, а также как EventBus может помочь в этом, и как всё это работает под капотом.
                Читать дальше →
                • +29
                • 14k
                • 8
              • Анимации в Android по полочкам (Часть 1. Базовые анимации)

                  Всем привет!

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

                  Сегодня мы поговорим об инструментах для создания анимации. К сожалению, так получилось, что в Android достаточно много способов что либо анимировать, и по началу в них очень легко запутаться. Я постараюсь привести максимально общую классификацию и оставлю ссылки исключительно на документацию, т.к. туториалов можно найти предостаточно. Надеюсь эта статья поможет уложить в голове всё по полочками и, при необходимости создать анимацию, выбрать наиболее подходящий способ.
                  Читать дальше →
                • TamTam: как мы делали новый мессенджер


                    Привет, Хабр! Меня зовут Юрий Буянов, я разработчик мессенджера TamTam. Сегодня я хочу рассказать вам немного о том, как он создавался и как устроен изнутри. TamTam — это новый мессенджер Mail.Ru Group, который был разработан на базе приложения «ОК Сообщения». В 2016 году мы сделали отдельный мессенджер в Одноклассниках для тех, кто часто переписывается в соцсети и кому удобнее это делать с помощью отдельного приложения.


                    Эксперимент получился удачным, поэтому в начале года мы решили развивать «ОК Сообщения» как отдельный от соцсети мессенджер под собственным брендом TamTam, но уже с набранной стартовой аудиторией. Уже за первые недели после запуска в TamTam появились десятки тысяч каналов, а аудитория продолжила общаться так же активно, как и в «ОК Сообщениях». Это стало возможным в том числе благодаря быстрой работе приложения и нескольким техническим фишкам. О них я расскажу подробнее.

                    Читать дальше →
                  • Черты великого продакт-менеджера



                      Почему у одних людей ничего не получается, а другие доводят любое дело до конца? В чем разница между хорошими и выдающимися профессионалами? Где грань между деспотизмом и верой в результат? Ну и что объединяет прекрасных продакт-менеджеров в клуб настоящих профессионалов? Под катом прекрасный рассказ Лоуренса Рипшера.
                      Читать дальше →
                      • +30
                      • 20.3k
                      • 9
                    • Структуры данных: бинарные деревья. Часть 2: обзор сбалансированных деревьев

                        Первая статья цикла

                        Интро


                        Во второй статье я приведу обзор характеристик различных сбалансированных деревьев. Под характеристикой я подразумеваю основной принцип работы (без описания реализации операций), скорость работы и дополнительный расход памяти по сравнению с несбаланчированным деревом, различные интересные факты, а так же ссылки на дополнительные материалы.
                        Читать дальше →
                      • FizzBuzz, или почему программисты не умеют программировать

                          [Автор этой статьи — Джеф Этвуд (Jeff Atwood), один из основателей stackoverflow.com. Сама же статья, несмотря на довольно приличный возраст (она написана в 2007 году) до сих пор популярна, а введенный в ней термин «FizzBuzz question» стал общеупотребительным. Оригинал можно найти здесь.]

                          Я весьма скептически отнесся к следующему наблюдению Реджинальда Брейтвайта (Reginald Braithwaite):

                          «Меня немного удручает тот факт, что 199 из 200 соискателей программистских вакансий не умеют программировать. Повторю: они не умеют писать код. Вообще.»

                          Читать дальше →
                        • Производительность приложений под Android

                            Производительность мобильных приложений — краеугольный вопрос, вне зависимости от рассматриваемой платформы. О том, какую специфику эта проблема имеет под Android, в том числе в ракурсе перехода с виртуальной машины Dalvik на ART, мы поговорили с Александром Ефременковым.


                            Читать дальше →
                            • +17
                            • 8.3k
                            • 6
                          • Структуры данных в картинках. ArrayList

                              Приветствую вас, хабралюди!

                              Взбрело мне в голову написать несколько статей, о том как реализованы некоторые структуры данных в Java. Надеюсь, статьи будут полезны визуалам (картинки наше всё), начинающим java-визуалам а также тем кто уже умеет писать new ArrayList(), но слабо представляет что же происходит внутри.



                              Сегодня поговорим о ArrayList-ах

                              ArrayList — реализует интерфейс List. Как известно, в Java массивы имеют фиксированную длину, и после того как массив создан, он не может расти или уменьшаться. ArrayList может менять свой размер во время исполнения программы, при этом не обязательно указывать размерность при создании объекта. Элементы ArrayList могут быть абсолютно любых типов в том числе и null.

                              Поверить на слово
                            • Наша Service и опасна и трудна или некоторые аспекты выживания служб в Android

                              Вместо введения


                              Во многих практических задачах требуется выполнение различных фоновых действий, будь то проигрывание музыки, обмен данными с сервером или просто слежение за действиями пользователя дабы похитить у него реквизиты кредитных карт. Ну а если не получится, то по крайней мере завалить его целевой рекламой, используя полученные сведения. Как уже давным-давно все знают, в Android такие вещи оформляются в виде службы (Service).

                              Официальная документация гласит, что ОС Android останавливает службу только в случае нехватки памяти. Тем не менее, существует и другие случаи. Пользователь может сам остановить службу, используя предоставляемые ему средства меню Settings/Apps, там же он может сделать и полную остановку приложения. Но для этого ему надо напрягаться и, в общем-то осознавать свои действия и их последствия. К сожалению, для уничтожения службы у него есть и другие возможности, которыми он может пользоваться бессознательно. В частности, если в нашем приложении ранее была запущена хоть одна Activity, видимая в истории, то пользователь буквально одним движением пальца сможет вынести соответствующую задачу. Как ни парадоксально, попутно Android вышибет и весь процесс вместе со службой.

                              Лично мне такое поведение Android логичным не кажется. Пользователь зачастую просто чистит Recent Apps от давно забытого хлама, совсем не обязательно он при этом желает отказаться от тех благ, которые ему предоставляла выполняющаяся служба. Однако разработчики Google мыслили немного по-другому. По-другому, так по-другому, их право, но в конце концов нам с вами тоже надо как-то жить.
                              Читать дальше →
                            • Как в Twitch проводят A/B тестирование

                              • Translation

                              Эксперименты — одна из центральных функций научного подразделения сайта потокового видео Twitch. Мы работаем в тесном контакте с менеджерами по продукции, чтобы тестировать новые идеи и функции. В прошлом мы использовали собственные инструменты для проведения А/В-экспериментов в сети и на наших мобильных приложениях. Недавно мы попробовали новый подход для проведения экспериментов на нашем приложении для Android, используя функцию поэтапного развёртывания из Google Play.
                              Читать дальше →
                              • +12
                              • 8.8k
                              • 2
                            • Ревью кода в распределенной команде

                              • Translation


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

                              Если не подходить к делу всерьёз, то асинхронная и письменная ревизия кода может стать причиной катастрофы в команде, приведя к ухудшению взаимодействия и сотрудничества. Но если все участники будут стараться делать всё хорошо, то такой подход может работать очень эффективно.
                              Читать дальше →
                            • Разработки Университета ИТМО: Управление дронами на основе блокчейн

                                Сфера применения технологии блокчейн сегодня расширяется, выходя за пределы экономики. Самый известный пример ее использования — сеть bitcoin. Однако в ней доступна ограниченная информация — отправитель «монет», их количество и адрес получателя.

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

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