Pull to refresh
0
0

Пользователь

Send message

Введение в программирование шейдеров для верстальщиков

Reading time18 min
Views33K


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


Все это побудило создать введение в те аспекты работы с шейдерами, которые наиболее вероятно пригодятся в работе именно верстальщику для создания различных 2d-эффектов с картинками на сайте. Конечно с поправкой на то, что сами по себе в дизайне интерфейсов они у нас применяются относительно редко. Мы сделаем стартовый шаблон на чистом JS без сторонних библиотек и рассмотрим идеи создания некоторых популярных эффектов, основанных на сдвиге пикселей, которые сложно сделать на SVG, но при этом они легко реализуются с помощью шейдеров.

Простой фильтр для автоматического удаления фона с изображений

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

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



Реализация стала возможной благодаря OpenCV и C# обертке OpenCVSharp.
Читать дальше →

Ансамблевые методы. Отрывок из книги

Reading time10 min
Views4.2K
image

Привет, Хаброжители, мы сдали в типографию новую книгу «Машинное обучение: алгоритмы для бизнеса». Здесь приводим отрывок про ансамблевые методы, его цель — объяснить, что делает их эффективными, а также как избежать распространенных ошибок, приводящих к неправильному использованию их в финансах.
Читать дальше →

Другой Github 2: машинное обучение, датасеты и Jupyter Notebooks

Reading time6 min
Views19K


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

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

Архитектура слоя исполнения асинхронных задач

Reading time17 min
Views7.1K
В мобильных приложениях соцсетей пользователь ставит лайк, пишет комментарий, потом листает ленту, запускает видео и опять ставит лайк. Всё это быстро и почти одновременно. Если реализация бизнес-логики приложения полностью блокирующая, то пользователь не сможет перейти к ленте, пока не подгрузится лайк к записи с котиками. Но пользователь ждать не будет, поэтому в большинстве мобильных приложениях работают асинхронные задачи, которые запускаются и завершаются независимо друг от друга. Пользователь выполняет несколько задач одновременно и они не блокируют друг друга. Одна асинхронная задача стартует и выполняется, пока пользователь запускает следующую.



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

«Latency numbers» на iPhone

Reading time10 min
Views12K
Latency Numbers Every Programmer Should Know — таблица «задержек, которые должен знать каждый программист». Там собраны средние значения времени для выполнения базовых операций компьютера в 2012-м году. Для этой таблицы есть несколько альтернативных представлений и вот одно из них.


Ссылка на источник схемы

Но какая польза мобильным разработчикам от этой информации в 2019? Кажется, что никакой, но Дмитрий Куркин (SClown) из команды Яндекс.Навигатора задумался: «А как бы таблица выглядела для современного iPhone?». Что из этого получилось, в переработанной текстовой версии доклада Дмитрия на AppsConf.


Для чего это нужно?


Почему же программисты должны знать эти числа? И актуальны ли они для мобильных разработчиков? Можно выделить две основные задачи, которые можно решать при помощи этих чисел.

Математика для Data Scientist: необходимые разделы

Reading time3 min
Views97K
Математика — это краеугольный камень Data Science. Хотя некоторые теоремы, аксиомы и формулы кажутся слишком абстрактными и далекими от практики, на самом деле без них невозможно по-настоящему глубоко анализировать и систематизировать огромные массивы данных.

Для специалиста Data Science важны следующие направления математики:

  • статистика;
  • теория вероятностей;
  • математический анализ;
  • линейная алгебра.

В предыдущей статье «Data Science: книги для начального уровня» специалисты Plarium Krasnodar рекомендовали литературу по программированию на Python, а также по визуализации результатов и machine learning. В этой статье они предлагают подборку материалов и книг по математике, полезных в Data Science.


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

Впервые пробуем App Center и рассказываем о своем опыте

Reading time8 min
Views31K

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


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

Устройство компилятора Swift. Часть 4

Reading time9 min
Views6.6K

Это последняя часть моего обзора компилятора Swift. Я покажу, как можно осуществить генерацию LLVM IR из AST и что выдаёт настоящий фронтенд. Если вы не читали предыдущие части, то переходите по ссылкам:


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

Знакомство с простейшей нейронной сетью и ее пошаговая реализация

Reading time5 min
Views42K
Однажды я наткнулся на книгу под названием «Создай свою нейросеть», под авторством Тарика Рашида. В отличие от многих других книг по нейронным сетям, в этой все подавалось простым языком, c достаточным количеством примеров и советов

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

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

Julia, Градиентный спуск и симплекс метод

Reading time10 min
Views15K


Продолжаем знакомство с методами многомерной оптимизации.


Далее предложена реализация метода наискорейшего спуска с анализом скорости выполнения, а также имплементация метода Нелдера-Мида средствами языка Julia и C++.

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

Устройство компилятора Swift. Часть 3

Reading time6 min
Views7.7K

Продолжаем изучать компилятор Swift. Эта часть посвящена Swift Intermediate Language.


Если вы не видели предыдущие, рекомендую перейти по ссылке и прочитать:


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

Комбинирование Signed Distance Fields в 2D

Reading time15 min
Views3.7K
В предыдущем туториале мы научились создавать и перемещать простые фигуры с помощью функций расстояний со знаком. В этой статье мы научимся комбинировать несколько фигур для создания более сложных полей расстояний. Большинству описанных здесь техник я научился из библиотеки функций расстояний со знаком на glsl, которую можно найти здесь. Также существует несколько способов комбинирования фигур, которые я здесь не рассматриваю.


Подготовка


Для визуализации полей расстояний со знаком (signed distance fields, SDF) мы будем использовать одну простую конфигурацию, а затем применим к ней операторы. Для отображения полей расстояний в ней будет использоваться визуализация линий расстояний из первого туториала. Ради упрощения мы будем задавать все параметры за исключением параметров визуализации в коде, но вы можете заменить любое значение свойством, чтобы сделать его настраиваемым.
Читать дальше →

Устройство компилятора Swift. Часть 2

Reading time11 min
Views8.4K

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

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

Что такое логическое программирование и зачем оно нам нужно

Reading time17 min
Views47K

У того, кто в детстве не писал на Прологе — нет сердца, а у того, кто пишет на нём сегодня — нет мозгов. (оригинал)

Если вас всегда терзали мучительные сомнения — что за фигня это Логическое Программирование (ЛП) и вообще зачем оно нужно? То это статья для вас.


Можно по-разному разделить языки программирования на группы (часто их называют парадигмами программирования), например, вот так:


  • структурное: программа разбивается на блоки — подпрограммы (изолированные друг от друга), а основными элементами управления являются последовательность команд, ветвление и цикл.
  • объектно-ориентированное: задача моделируется в виде объектов, которые отправляют друг другу сообщения. Объекты обладают свойствами и методами. Абстракция. Инкапсуляция. Полиморфизм. Ну в общем, все в курсе.
  • функциональное: базовым элементом является функция и сама задача моделируется в виде функции, а, точнее, чаще всего в виде их композиции, если f(.) и g(.) — это функции, то f(g(.)) — это их композиция.
  • логическое: вот тут, как правило, начинается феерия — если про первые три написаны сотни статей, книг, обзоров, презентаций и учебников, то здесь мы в лучшем случае видим что-то про Prolog и разработки времён Pink Floyd и Procol Harum (ну хоть с музыкой им тогда повезло) и на этом история заканчивается.

Вот эту оплошность я и собираюсь сегодня исправить.


Важнейший тезис этой статьи:


Логическое программирование != Prolog.

И вообще последний вам скорее всего не нужен. А вот первое вполне может быть.


Структура статьи:


  • Что такое Пролог и почему он вам скорее всего не нужен
  • Зачем оно надо, или краткое введение в Answer Set Programming
  • Решаем задачи на ASP
  • Комбинаторная оптимизация
  • Вероятностное ЛП: ProbLog
  • ЛП на классической логике FO(.) и IDP
  • Sketched Answer Set Programming
  • Экспериментальный анализ
  • Тестирование и корректность программ
  • Заключение
Читать дальше →

Устройство компилятора Swift. Часть 1

Reading time4 min
Views20K

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

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

Другой GitHub: репозитории по Data Science, визуализации данных и глубокому обучению

Reading time6 min
Views35K

(с)

Гитхаб — это не просто площадка для хостинга и совместной разработки IT-проектов, но и огромная база знаний, составленная сотнями экспертов. К счастью, сервис предоставляет не просто инструменты для работы с открытым исходным кодом, но и качественные материалы для обучения. Мы выбрали некоторые популярные репозитории и отсортировали их по количеству звезд в порядке убывания.

Эта подборка поможет разобраться, на какие именно репозитории стоит обратить внимание, если вас интересует работа с данными и сфера глубокого обучения.
Читать дальше →

42 оператора расширенного поиска Google (полный список)

Reading time15 min
Views317K
Те, кто давно занимается поисковой оптимизацией, хорошо знают об операторах расширенного поиска Google. Например, почти все знают об операторе site:, который ограничивает поисковую выдачу одним сайтом.

Большинство операторов легко запомнить, это короткие команды. Но уметь эффективно их использовать — совсем другая история. Многие специалисты знают основы, но немногие по-настоящему овладели этими командами.

В этой статье я поделюсь советами, которые помогут освоить поисковые операторы для 15 конкретных задач.
Читать дальше →

Введение в архитектуры нейронных сетей

Reading time31 min
Views209K


Григорий Сапунов (Intento)


Меня зовут Григорий Сапунов, я СТО компании Intento. Занимаюсь я нейросетями довольно давно и machine learning’ом, в частности, занимался построением нейросетевых распознавателей дорожных знаков и номеров. Участвую в проекте по нейросетевой стилизации изображений, помогаю многим компаниям.

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

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

Дальше я расскажу про важные тренды, что происходит в этой области. Затем мы углубимся в архитектуру нейросетей, рассмотрим 3 основных их класса. Это будет самая содержательная часть.

После этого рассмотрим 2 сравнительно продвинутых темы и закончим небольшим обзором фреймворков и библиотек для работы с нейросетями.
Читать дальше →

Information

Rating
Does not participate
Registered
Activity