• Протокольно ориентированное программирование, часть 3

      Завершающая статья на тему протокольно ориентированного программирования.


      В этой части мы рассмотрим как переменные обобщенного типа хранятся и копируются и как с ними работает метод dispatch.

      Читать дальше →
    • Как проводить код-ревью

      • Translation
      Из документации Google's Engineering Practices

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


      См. также Руководство автора CL, в котором даются подробные советы разработчикам, чьи коммиты проходят ревью.
      Читать дальше →
    • All you need is URL

        image

        Ежедневно пользователи ВКонтакте обмениваются 10 млрд сообщений. Они отправляют друг другу фотографии, комиксы, мемы и другие вложения. Расскажем, как в iOS-приложении мы придумали загружать картинки с помощью URLProtocol, и пошагово разберём, как реализовать свой.
        Читать дальше →
        • +14
        • 6.4k
        • 4
      • Попугай приземлился. Анонс книги «Генеративное глубокое обучение»

        • Translation
        Здравствуйте, коллеги!

        С удовольствием сообщаем, что в наших издательских планах на начало будущего года — превосходная новая книга по глубокому обучению «Generative Deep Learning» от Дэвида Фостера



        Автор, сравнивающий эту работу ни много ни мало с высадкой «Аполлона» на Луну, опубликовал на «Медиуме» подробный обзор своего шедевра, который предлагаем считать близким к реальности тизером.

        Приятного чтения, следите за анонсом!
        Читать дальше →
      • Многоязычный синтез речи с клонированием

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


        Например, пару месяцев назад появилась реализация синтеза речи с голосовым клонированием Real-Time-Voice-Cloning. Давайте попробуем разобраться из чего она состоит и реализуем свою многоязычную (русско-английскую) фонемную модель.


        Строение



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

        Читать дальше →
        • +29
        • 4.7k
        • 5
      • Очень много YouTube-каналов для прокачки английского языка для программистов

        • Tutorial
        Привет, Хабр!

        С помощью YouTube можно ощутимо и сравнительно быстро улучшить английский.
        Понимание на слух как минимум. Истина не нова, но мало кто смотрит английский YouTube, потому что легко потеряться в бесконечности каналов. Но для вас я собрал самые стоящие каналы!

        Добавляйте в закладки и подписывайтесь на меня!
        Дальше вас ждет много крутых статей.

        Поучить английский


        AJ Hoge. На его канале есть всё: от базовых слов до размышлений о важности языка тела в общении. Чувак пилит видосы уже много лет, материальчик накопился.

        EngVid. Если бы можно было выбрать что-то одно для улучшения английского, то это оно. Разные преподы и тематики, постоянное обновление, бездонный ресурс. Ещё сайт одноимённый крутой, с удобной навигацией — можно найти очень узкую тему по интересам.
        Читать дальше →
      • Чего ждать, если хочешь стать iOS-разработчиком



          Со стороны iOS разработка может казаться закрытым клубом. Для работы обязательно нужен компьютер от Apple, экосистему пристально контролирует одна компания. Изнутри тоже иногда слышны противоречия — кто-то говорит, что язык Objective-C старый и неповоротливый, а кто-то, что новый язык Swift слишком сырой.

          Тем не менее, разработчики идут в эту сферу и попав туда, остаются довольны.

          В этот раз о своем опыте нам рассказали Марат Нургалиев и Борис Павлов — как они учились профессии, как проходили первые собеседования, почему получали отказы. А экспертом выступил Андрей Антропов — декан факультета iOS-разработки в GeekBrains.
          Читать дальше →
          • +21
          • 11.9k
          • 4
        • Запускаем инструментальные тесты в Firebase Test Lab. Часть 1: iOS проект

          • Tutorial
          image

          Меня зовут Дмитрий, я работаю тестировщиком в компании MEL Science. Совсем недавно я закончил разбираться со сравнительно свежей фичей от Firebase Test Lab — а именно, с инструментальным тестированием iOS приложений с использованием нативного фреймворка тестирования XCUITest.

          До этого я уже распробовал Firebase Test Lab для Android и мне все очень понравилось, так что я решил попробовать поставить тестовую инфраструктуру iOS проекта на те же рельсы. Приходилось очень много гуглить и не все получалось с первого раза, поэтому я решил написать статью-туториал для тех, кому все еще это предстоит.

          Итак, если у вас есть UI тесты на iOS проекте, вы сможете уже сегодня попробовать запустить их на реальных девайсах, любезно предоставленных Корпорацией Добра. Заинтересованным — добро пожаловать под кат.
          Читать дальше →
        • Технологии микроэлектроники на пальцах: «закона Мура», маркетинговые ходы и почему нанометры нынче не те. Часть 1

          • Translation
          image
          Возможное фото 10 нм IceLake. Источник

          Странные вещи творятся на процессорном рынке. Мировой лидер в лице фирмы Intel пятый год бьется в попытках перейти на 10 нм техпроцесс. Изначально заявляли о переходе на 10 нм в 2015-м году, потом в 2016-м, 2017-м… На дворе 2019-й, а 10-нм от Intel в серии так и нет. Ну как нет, есть отдельные опытные/инженерные образцы, но высокий выход годных — проблема. Реальный переход ожидается не раньше 2022 года уже.

          Собственно, это и стало причиной дефицита процессоров Intel на рынке. Для его преодоления компания расширяет производство модифицированных 14 нм процессоров (те же Lake только в профиль) и даже возвращается к 22 нм. Казалось бы, регресс налицо. А в это время корейский Samsung, тайваньский TSMC и примкнувший к ним AMD с платформой ZEN 2 рапортуют о вводе в серию аж 7 нм и вот-вот перейдут на 5 нм. Достали из пыльного шкафа «закон Мура» и объявили его живее всех живых. Скоро будет и 3 нм, и 2 нм, и даже 1 нм (sic!) — pourquoi pas?!

          Что же произошло? Неужто ушлые азиаты обошли клятых пендосов в ключевой отрасли? Можно открывать шампанское?

          Disclaimer: Данную статью я нашёл совершенно случайно и был крайне поражён, насколько грамотно и подробно в ней раскрываются проблемы современной микроэлектроники, в частности, смерть закона Мура и маркетинг. Когда-то давно и сам баловался написанием статей про изготовление чипов, а в серии статей «Взгляд Изнутри» даже заглядывал внутрь оных, т.е. тема мне крайне интересна. Естественно, я бы хотел, чтобы сам автор оригинальной статьи опубликовал её на Хабре, но в связи с занятостью он разрешил мне перенести её сюда. К сожалению, правила Хабра не разрешают прямую копи-пасту, поэтому я добавил ссылки на источники, картинки и немножко отсебятины и постарался чуть-чуть выправить текст. Да, и статьи (1 и 2) по данной теме от amartology знаю и уважаю.
          Скандалы, интриги и закон Мура
        • Анализ сишного Hello World

          • Translation
          Hello World — одна из первых программ, которые мы пишем на любом языке программирования.

          Для C hello world выглядит просто и коротко:

          #include <stdio.h>
          
          void main() {
            printf("Hello World!\n");
          }

          Поскольку программа такая короткая, должно быть элементарно объяснить, что происходит «под капотом».
          Читать дальше →
        • К чему приложить прикладного лингвиста?

            “Что за дело? Это многих славных путь.”
            Н.А. Некрасов

            Всем привет!

            Меня зовут Карина, и я “совместитель” — совмещаю учёбу в магистратуре и работу технического писателя в Veeam Software. О том, как у меня это вышло, я и хочу рассказать. Заодно кто-то узнает, как можно прийти в эту профессию, и какие я вижу для себя плюсы и минусы в работе во время учебы.

            Я работаю в Veeam без году неделю полгода с небольшим, и это были самые насыщенные полгода моей жизни. Я пишу техническую документацию (и учусь её писать) — сейчас я занимаюсь руководством по Veeam ONE Reporter (вот оно) и гайдами по Veeam Availability Console (про нее была статья на Хабре) для конечных пользователей и реселлеров. Еще я из тех, кому сложно парой слов ответить на вопрос «Откуда ты приехала?». Вопрос «Как ты проводишь свободное время?» тоже не из простых.

            image

            Взгляд работающего студента, когда ему жалуются на недостаток свободного времени
            Читать дальше →
            • +21
            • 2.7k
            • 2
          • Осторожный переезд в Нидерланды с женой. Часть 3: работа, коллеги и прочая жизнь

              В 2017-2018 годах я искал работу в Европе и нашел в Нидерландах (про это можно прочитать здесь). Летом 2018-го мы с женой постепенно перебрались из Подмосковья в пригород Эйндховена и более-менее обустроились там (это описано здесь).



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

              Ружье Бондарчука Ипотека все еще есть, но я про нее ничего не расскажу :)
              Читать дальше →
            • WWDC 2019 :: что посмотреть

                На WWDC 2019 Apple показала одну из лучших Keynote-презентаций за последние несколько лет. Но это только начало. Нас ждёт более 100 сессий от инженеров Apple. Я собрал в списке доклады, которые, как мне кажется, будут полезны большинству iOS-разработчиков. Если не знаете, за что браться, то попробуйте начать с них.


                Читать дальше →
                • +18
                • 5.5k
                • 3
              • Асинхронное программирование (полный курс)

                • Tutorial

                Методы асинхронного программирования


                Асинхронное программирование за последнее время стало не менее развитым направлением, чем классическое параллельное программирование, а в мире JavaSript, как в браузерах, так и в Node.js, понимание его приемов заняло одно из центральных мест в формировании мировоззрения разработчиков. Предлагаю вашему вниманию целостный и наиболее полный курс с объяснением всех широко распространенных методов асинхронного программирования, адаптеров между ними и вспомогательных проемов. Сейчас он состоит из 23 лекций, 3 докладов и 28 репозиториев с множеством примеров кода на github. Всего около 17 часов видео: ссылка на плейлист.

                Читать дальше →
              • HTTP-заголовки для ответственного разработчика

                • Translation

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

                Разработчики соединяют людей.
                Разработчики помогают людям.
                Разработчики дают людям возможности.

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

                • Translation
                image

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

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

                image

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

                Поэтому давайте немного развлечёмся и напишем точную систему уведомлений о свободной парковке с помощью Python и глубокого обучения
                Читать дальше →
              • Гнев на код: программисты и негатив

                • Translation


                Я смотрю на кусок кода. Возможно, это худший код, что мне когда-либо встречался. Чтобы обновить всего одну запись в базе данных, он извлекает все записи в коллекции, а затем отправляет запрос на обновление каждой записи в базе, даже тех, которые обновлять не требуется. Тут есть map-функция, которая просто возвращает переданное ей значение. Есть условные проверки переменных с очевидно одинаковым значением, просто поименованных в разных стилях (firstName и first_name). Для каждого UPDATE’а код отправляет сообщение в другую очередь, которая обрабатывается другой serverless-функцией, но которая выполняет всю работу для другой коллекции в той же базе данных. Я не упомянул, что эта serverless-функция из облачной «сервис-ориентированной архитектуры», содержащей более 100 функций в окружении?

                Как вообще можно было такое сделать? Я закрываю лицо и явственно всхлипываю сквозь смех. Мои коллеги спрашивают, что случилось, и я в красках пересказываю Worst Hits Of BulkDataImporter.js 2018. Все сочувственно кивают мне и соглашаются: как они могли так с нами поступить?
                Читать дальше →
              • Custom instruments: когда signpost недостаточно

                  Instruments для Xcode компании Apple — это инструменты для анализа производительности iOS-приложения. Их используют для сбора и отображения данных, которые необходимы в отладке кода. В прошлом году Apple презентовала Custom Instruments. Это возможность расширить стандартный набор инструментов для профилирования приложений. Когда существующих инструментов недостаточно, вы сможете самостоятельно создать новые — они соберут, проанализируют и отобразят данные так, как вам потребуется.

                  Прошел год, а новых публичных инструментов и информации по их созданию в сети почти нет. Так что мы решили исправить ситуацию и поделиться тем, как создавали собственный Custom Instrument, который определяет причину слабой изоляции unit-тестов. Он базируется на технологии signpost (мы писали о ней в предыдущей статье) и позволяет быстро и точно определять место возникновения мигания теста.


                  Читать дальше →
                • Система частиц в Core Animation. Рождественская история

                  • Translation


                  Всем привет!

                  Рождество давно прошло, но после него у нас осталась занимательная история о том, как при помощи нечасто используемой возможности Core Animation можно создать пользователям праздничное настроение. Делюсь переводом статьи моего лондонского коллеги Алексиса.

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

                  Я родился и вырос в Испании, на Тенерифе — солнечном острове посреди Атлантического океана недалеко от побережья Африки. И, поверьте мне, Рождество на Тенерифе сильно отличается от Рождества в Лондоне, где я встречал его последние два года (с тех пор как начал работать в Badoo).

                  Одним из преимуществ жизни в Лондоне для меня стало созерцание снежинок. Здесь я увидел их впервые в жизни, это было просто невероятно!

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

                  Так уж случилось, что мне поручили одну необычную задачу со следующим описанием:
                  Читать дальше →
                  • +33
                  • 3.9k
                  • 3
                • Как встроить С-библиотеку в Swift-фреймворк

                  • Translation


                  В 2014 году был представлен Swift, новый язык для разработки приложений экосистемы Apple. Новинка принесла не только новые возможности и функции, но и проблемы — тем, кто хотел пользоваться старыми добрыми C-библиотеками. В этой статье я рассмотрю одну из них — бандлинг C-библиотеки в Swift-фреймворк. Существует несколько способов её решения; в данном случае я объясню, как сделать это при помощи clang explicit-модулей.

                  Для примера мы возьмём внешнюю C-библиотеку libgif и встроим её в наш Swift-фреймворк GifSwift. Если вы хотите сразу увидеть результат, полностью проект можно посмотреть здесь.
                  Читать дальше →