Обновить
1422.58

Программирование *

Искусство создания компьютерных программ

Сначала показывать
Порог рейтинга
Уровень сложности

Распознавание лиц. Создаем и примеряем маски

Время на прочтение8 мин
Охват и читатели30K


Пока сообщество iOS-разработчиков спорит, как писать проекты, пока пытается решить, использовать ли MVVM или VIPER, пока пытается подSOLIDить проект или добавить туда реактивную турбину, я попытаюсь оторваться от этого и рассмотреть, как работает под капотом еще одна технология с графика Hype-Driven-Development.


В 2017 году на вершине графика хайпа — машинное обучение. И понятно почему:


  • Появилось больше открытых наборов данных.
  • Появились соответствующее аппаратные средства. В том числе облачные решения.
  • Технологии из этой области стали применяться в production-проектах.

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

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

Selenium: Накачиваем Мышцы

Время на прочтение6 мин
Охват и читатели15K

Прошло довольно много времени с момента нашей последней статьи об эффективной Selenium-инфраструктуре. Если вы находитесь в самом начале непростого пути Selenium — советую ознакомиться с нашими статьями про масштабируемый Selenium (часть I, часть II), Selenoid — универсальный инструмент для автоматизации тестов в браузерах (раз, два), Selenium под Windows (ссылка). Если вам больше нравятся мотивирующие рассказы — посмотрите видео моего доклада про масштабируемый Selenium на SeleniumConf Berlin 2017.


Не правда ли, я мастер Фотошопа?


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

Дебаты об отличном сервере приложений Java c Tomcat, Jboss, GlassFish, Jetty и Liberty Profile. Часть вторая

Время на прочтение9 мин
Охват и читатели11K
Всем доброго! Как и обещали, вторая часть перевода статьи по теме Java EE. Первую часть можно увидеть тут.

ОПЕРАЦИЯ ПОД ПРИКРЫТИЕМ

Надеемся, вы не только сейчас поняли, что бюджет равен 0, и вообще вас покорил WebLogic ;) До сих пор, мы рассматривали темы, значимые на начальных этапах, во время изучения серверов приложений. Теперь же посмотрим чуть глубже на каждый сервер, чтобы понять, отвечает ли он реальным задачам разработчика:

  • Настоящие показатели производительности;
  • Функционал и Соответствие Open Standards;
  • Администрирование и Управление/UI;
  • Стоимость $$$/Лицензия.

Читайте дальше, уже скоро мы определим, какой сервер приложений лучший из лучших!

Настоящие показатели производительности

Знали ли вы, что Lamborghini Gallardo LP570-4 Superleggra 2011 г. выпуска разгоняется от 0 до 60 км/ч всего за 2.8 с, а Dodge Viper Hennessey Venom GT делает это за целых 2.9 с? Думаю, водителям Viper ооочень скучно ждать, пока их машина разгоняется до 60!


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

Митап BugBusters: Все о Selenium, эффективных автоматизаторах и буднях нагрузочных тестировщиков

Время на прочтение1 мин
Охват и читатели4.5K


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


Для всех, кто не смог присоединиться, предлагаю записи докладов.

Как и зачем определять голосовую почту

Время на прочтение5 мин
Охват и читатели9.7K

«Абонент не абонент — пожалуйста, оставьте ваше сообщение после звукового сигнала!» — мы слышим этот автоматический ответ множество раз и уже привыкли вешать трубку, точно зная, что никто и никогда не проверяет «голосовую почту». Я, как и все опрошенные знакомые, без гугла даже не смогу ее проверить! Зачем операторам эта странная штука? А чтобы брать деньги за звонки, которые иначе будут бесплатными. Причем не только с обычных абонентов, но и с компаний, которые используют автоматику для звонков. Представьте себе магазин, который подтверждает заказы не колл-центром через полчаса, а роботом через десять секунд. И часть этих звонков «уходит» в голосовую почту, тратя деньги компании и ломая статистику. Под катом — детективная история про early media, big data, machine learning и TensorFlow.

Внедрение зависимостей в .Net Марка Симана 2 — Внедрение конструктора, время жизни

Время на прочтение3 мин
Охват и читатели7.7K
Зависимости между слоями приложения | Внедрение конструктора, время жизни | Сквозные аспекты приложения, перехват, декоратор

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

Агрегация, внедрение конструктора


Объекты/классы системы, как и слои, взаимодействуют друг с другом. Между классами тоже есть зависимости.

Например, в листинге 1 MyService использует MyDataContext (EF) – имеет зависимость MyDataContext.

class MyService
{
    public void DoSomething()
    { 
        using(var dbCtx = new MyDataContext())
        {
            // используем dbCtx
        }
    }
}

Листинг 1. Сильная зависимость MyService от MyDataContext

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

Почему дизайн Go плох для умных программистов

Время на прочтение7 мин
Охват и читатели77K

На протяжении последних месяцев я использую Go для имплементаций Proof of Concept (прим.пер.: код для проверки работоспособности идеи) в свободное время, отчасти для изучения самого языка программирования. Программы сами по себе очень просты и не являются целью написания статьи, но сам опыт использования Go заслуживает того, чтобы сказать о нем пару слов. Go обещает быть (прим.пер.: статья написана в 2015) массовым языком для серьезного масштабируемого кода. Язык создан в Google, в котором активно им пользуются. Подведя черту, я искренне считаю, что дизайн языка Go плох для умных программистов.

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

Как читать техническую литературу: советы резидентов Quora, Reddit и Hacker News

Время на прочтение6 мин
Охват и читатели54K
Техническая литература бывает разная: от небольших тематических статей до серьезных справочников с подробным описанием функций и атрибутов. И каждый из этих типов решает разные задачи — развлекает, обучает, позволяет освежить какую-либо тему.

Сегодня мы расскажем, к каким источникам рекомендуют обращаться программисты, инженеры и резиденты тематических платформ (Stack Exchange, Stack Overflow и др.), если вам нужно изучить новый язык или углубить знания в какой-то отдельной области. Также приведем несколько их рекомендаций о том, как с такой литературой «работать».

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

Мульти-арные функции в Java

Время на прочтение3 мин
Охват и читатели16K

Напомню: арность (англ. arity) — это количество параметров функции. Соответсвенно мульти-арные (это слово можно писать вместе или раздельно) функции — это функции с несколькими параметрами. В Java 8 были введены функции с одним и двумя входными параметрами. А как быть если параметров больше?
Читать дальше →

Websockets. Возможный подход по использованию

Время на прочтение7 мин
Охват и читатели19K
Коллеги, приветствую. Хочу вынести на публичное обсуждение свои мысли и некоторые моменты реализации своего проекта. Websockets — тема пожалуй уже избитая, но меня простимулировала на этот шаг работа “WebRTC Cookbook” под авторством Andrii Sergiienko, в которой технология Websockets используется в качестве сигнального сервиса для управления потоковыми данными.

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

Learn OpenGL. Урок 4.3 — Смешивание цветов

Время на прочтение11 мин
Охват и читатели35K
OGL3

Смешивание цветов


Смешивание в OpenGL (да и других графических API, прим. пер.) является той техникой, которую обычно связывают с реализацией прозрачности объектов. Полупрозрачность объекта подразумевает, что он не залит одним сплошным цветом, а сочетает в себе в различных пропорциях оттенок своего материала с цветами объектов, находящихся позади. Как пример, можно взять цветное стекло в окне: у стекла есть свой оттенок, но в итоге мы наблюдаем смешение оттенка стекла и всего того, что видно за стеклом. Собственно, из этого поведения и возникает термин смешивание, поскольку мы наблюдаем итоговый цвет, являющийся смешением цветов отдельных объектов. Благодаря этому, мы можем видеть сквозь полупрозрачные объекты.
Читать дальше →

Об итогах конкурса MERC-2017: интервью с победителями

Время на прочтение9 мин
Охват и читатели2.1K
Победители и финалисты конкурса MERC-2017 от Neurodata Lab на площадке Datacombats — это не просто обезличенные строки лидерборда. Это молодые специалисты, с разными профессиональными и исследовательскими интересами, бэкграундом и компетенциями. В качестве завершающего штриха в истории нашего самого первого конкурса мы решили взять у них интервью. Надеемся, что для читателей блога этот материал станет источником для размышлений, каким он явился и для нас как организаторов конкурса.
image
Читать дальше →

Learn OpenGL. Часть 4.2. — Тест трафарета

Время на прочтение9 мин
Охват и читатели25K

image


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


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

Ближайшие события

Учим машину разбираться в генах человека

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


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

DevDay на функционале

Время на прочтение2 мин
Охват и читатели2.7K


Планов на декабрь много: и завалы на проекте разгрести, и новогодние праздники распланировать. Если среди всей этой предновогодней беготни захотелось пищи для ума, айда к нам — 15 декабря обсудим функциональное программирование. Мы поделимся секретами написания быстрого бекенда, вместе разрушим десяток мифов о ФП и устроим холивар про будущее ФП/ООП.
Хочу пищи для ума

Исследование внутренних дефектов ПЛИС: ищем черную кошку в темной комнате

Время на прочтение2 мин
Охват и читатели6.5K
Сезон 1. Проект на Virtex5 не работает, хотя на другой партии кристаллов все в порядке.

Однажды случилось так, что плата с кристаллом XC5VSX95T не заработала. Было известно, что это новая партия кристаллов. Для проверки проблемы был написан тест, тестирующий подряд все слайсы FPGA. Тестирование кристаллов показало наличие неисправных модулей LUT, входящих по 4 элемента в состав одного слайса. Оказалось, что триггеры в этих слайсах в порядке, и тогда был создан блок памяти на триггерах, которые в свою очередь созданы на LUT. См. рис. 1. Здесь показан пример триггера на LUT4. Каждая ячейка(бит) в тесте отвечает за один слайс. Триггерная ячейка задействует все четыре LUT слайса. Кристалл был разбит на 5 областей (и в другом тесте 9 областей), которые тестировались отдельно, каждый своей прошивкой. Правильное размещение используемых слайсов регламентировалось атрибутами LOC. Неисправность характеризуется невозможностью изменить состояние тестируемого триггера. Выход такого триггера может читаться 0 или 1, но всегда одинаково. Поэтому сначала память заполнялась 1, и проверялась, потом 0, и проверялась. Полный диапазон слайсов такой: X0Y0 – X91Y159. (14720 слайсов)


Рис.1
Читать дальше →

Слои, Луковицы, Гексогоны, Порты и Адаптеры — всё это об одном

Время на прочтение4 мин
Охват и читатели66K
Перевод статьи Mark Seemann о популярных архитектурах разработки ПО и о том, что между ними общего.

Один из моих читателей спросил меня:
Вернон, в своей книге «Implementing DDD» много говорит об архитектуре Порты и Адаптеры, как о более продвинутом уровне Слоистой Архитектуры. Хотелось бы услышать ваше мнение на этот счёт.
Если не вдаваться в детали, то в своей книге я описываю именно этот архитектурный паттерн, хотя никогда не называю его этим именем.

TL;DR Если применить принцип инверсии зависимостей к слоистой архитектуре, то в конечном счете получим Порты и Адаптеры.
Читать дальше →

Как Фейсбук приобрел Инстаграм и почему это привело к открытию исходного кода React.js

Время на прочтение23 мин
Охват и читатели17K

История фреймворка React: как Фейсбук приобрел Инстаграм и почему это привело к открытию исходного кода React.js




Сегодня React — одна из самых популярных в мире библиотек JavaScript для пользовательского интерфейса: более 70 тыс. «звезд» на Гитхабе, не менее 1100 авторов и миллионы скачиваний каждый месяц — кроме того, этот фреймворк используется более чем в 4 тыс. компаний. Но когда Фейсбук впервые показал React миру, это мало кого обрадовало.

Мы решили погрузиться в историю рождения одной из самых популярных технологий в мире разработки ПО — React, и пригласили Пита Ханта (Pete Hunt), стоявшего у истоков этой библиотеки (сейчас он генеральный директор компании Smyte), чтобы он наконец-то рассказал о том, для чего создавали React, почему эта технология стала популярной в Фейсбуке после приобретения Инстаграма, и как она в итоге вышла в люди.

Основные моменты


От приложения Facebook Camera к приобретению Инстаграма


Марк (Цукерберг) собрал всех и говорит: «Мобильные устройства «выстрелят», поэтому срочно бросаем всё и переводим ресурсы на мобильные разработки». Мне казалось, это какая-то сумасшедшая идея: мы не могли поддерживать работу самого большого фотосайта в сети, имея горстку людей в команде. Совершенно бессмысленно переводить людей на разработку приложений для iOS и Android, которые составляют совсем небольшую долю нашего трафика. Но оказалось, что Марк был на 100% прав — поэтому я и не генеральный директор Фейсбука…

Мы разработали приложение Facebook Camera, и даже гордились тем, что получилось… Но пришел Инстаграм — и наш проект канул в Лету…

Ребятам из Инстаграма дали гараж на территории Фейсбука, где можно было сидеть и спокойно пилить свою идею. Они пользовались надежными системами безопасности Фейсбука, но кроме того продолжали использовать AWS, а еще — разрабатывали собственную стратегию продукта, насколько я могу судить… И я был первым сотрудником из Фейсбука, которого перевели в Инстаграм…

Переведено в Alconost
Читать дальше →

Что я узнал после 1000 code review

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

Вот мои 3 (+1 бонусная) наиболее распространенные рекомендации по код-ревью.

image

Рекомендация 1: Выбрасывайте исключения, если что то идет не так


Зачастую паттерн выглядит так:

List<String> getSearchResults(...) {
  try {
    List<String> results = // make REST call to search service
    return results;
  } catch (RemoteInvocationException e) {
    return Collections.emptyList();
  }
}


Этот паттерн вызвал перебои в одном из мобильных приложений, над которыми я работал. Поиск на стороне сервера, который мы использовали, начал выбрасывать исключения. Оказалось, на серверном API приложения был некоторый код, похожий на приведенный выше. Поэтому приложение получало 200 ответ сервера и с радостью показывало пустой список для каждого поискового запроса.
Читать дальше →

Релиз CLion 2017.3: существенные улучшения поддержки C++, интеграция с Valgrind Memcheck и Boost.Test и многое другое

Время на прочтение6 мин
Охват и читатели9.5K
Привет, Хабр!

Наша команда приготовила всем разработчикам на C и C++ новогодний подарок под елку – новый релиз CLion 2017.3! В этом посте постараемся рассказать, чем он хорош, прикинуть дальнейшие направления для развития продукта и, конечно, ответить на все интересующие вас вопросы в комментариях.

image


Коротко об основных улучшениях для тех, кто не хочет много читать:

  • Поддержка языка C++

    • Улучшения в таких подсистемах парсера, как list initialization и name lookup
    • Поддержка расширений специфичных для компилятора Microsoft Visual C++
    • Поддержка макроса __COUNTER__
    • И не только!
  • Новые инструменты и фреймворки

    • Valgrind Memcheck
    • Boost.Test
    • CMake 3.9, GDB 8.0, LLDB 5.0
  • Существенные переработки и расширение возможностей в настройке компилятора, окружения, CMake, отладчика, и пр.
  • Возможность запуска почти произвольной функции main, иконки для запуска функций main и тестов
  • Возможность разрабатывать на Kotlin/Native в CLion

Можно прямо сейчас скачать бесплатную 30-дневную версию с нашего сайта и попробовать новые возможности (для этого мы даже подготовили специальный небольшой демо-проект). А ниже мы поговорим об улучшениях более подробно.
Читать дальше →

Вклад авторов