Как стать автором
Обновить
23
Карма
0
Рейтинг
Андрей Зарембо-Годзяцкий @shadow_of_irbis

Руководитель партнерской платформы суперприложения

  • Публикации
  • Комментарии

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

PythonПрограммированиеАлгоритмыВизуализация данныхУчебный процесс в IT

Представьте человека, который изучает алгоритмы. Чтобы понять как они работают, приходится разбираться в их коде и представлять, как компьютер будет его выполнять. Это странно — почему мы должны учиться думать как компьютер, вместо того, чтобы заставить его помогать нам? Какая-то сильная технозависимость.

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

Читать далее
Всего голосов 102: ↑102 и ↓0 +102
Просмотры17.6K
Комментарии 46

Новости

Показать еще

Симуляция подъёмной силы Ньютона методом частиц на CUDA

ПрограммированиеC++GPGPUПараллельное программированиеФизика
Из песочницы

https://www.youtube.com/playlist?list=PLwr8DnSlIMg0KABru36pg4CvbfkhBofAi


Как-то на Хабре мне попалась довольно любопытная статья “Научно-технические мифы, часть 1. Почему летают самолёты?”. Статья довольно подробно описывает, какие проблемы возникают при попытке объяснить подъёмную силу крыльев через закон Бернулли или модель подъёмной силы Ньютона (Newtonian lift). И хотя статья предлагает другие объяснения, мне бы всё же хотелось остановиться на модели Ньютона подробнее. Да, модель Ньютона не полна и имеет допущения, но она даёт более точное и интуитивное описание явлений, чем закон Бернулли.


Основной недостаток этой модели — это отсутствие взаимодействия частиц газа друг с другом. Из-за этого при нормальных условиях она даёт некорректные результаты, хотя всё ещё может применяться для экстремальных условий, где взаимодействием можно пренебречь.


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


Перед тем как мы начнём, я бы хотел сразу обозначить, что это статься не о физике самой модели. Эта статья о GPGPU-программировании. Мы не будем рассматривать физические свойства самой модели, потому что она груба и не подходит для настоящих расчётов. И всё же, эта неточная модель даёт куда более интуитивное описание явления подъёмной силы, чем закон Бернулли.

Читать дальше →
Всего голосов 66: ↑65 и ↓1 +64
Просмотры10.7K
Комментарии 46

Ресурсное планирование. Часть 4.1. Прежде чем делать ресурсный план

Управление разработкойУправление проектамиУправление персоналом
Tutorial


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


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

Читать дальше →
Всего голосов 7: ↑7 и ↓0 +7
Просмотры7.9K
Комментарии 0

Swift UI — галопом по Европам

Блог компании TINKOFFРазработка под iOSРазработка мобильных приложенийSwift

image


22:35. Восторг


Просмотрел WWDC 2019 Key Notes. Ожидаемый декларативный UI действительно стал явью, и это воистину событие вселенского масштаба для мира iOS-разработки. «Надо написать об этом статью», — подумал я и еще тысячи iOS-разработчиков по всему миру, пребывающих в состоянии экзальтации.

Читать дальше →
Всего голосов 64: ↑62 и ↓2 +60
Просмотры44.6K
Комментарии 8

Шейдеры 3D-игр для начинающих: эффекты

Работа с 3D-графикойРазработка игрДизайн игр
Перевод
[Первая часть]

Разобравшись с основами, в этой части статьи мы реализуем такие эффекты, как контуры объектов, bloom, SSAO, размытие, глубина резкости, пикселизация и другие.

Контуры



Создание контуров вокруг геометрии сцены придаёт игре уникальный внешний вид, напоминающий комиксы или мультфильмы.

Diffuse материала


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

uniform struct
  { vec4 diffuse
  ;
  } p3d_Material;

out vec4 fragColor;

void main() {
  vec3 diffuseColor = p3d_Material.diffuse.rgb;
  fragColor = vec4(diffuseColor, 1);
}

Здесь показан небольшой фрагментный шейдер, который рендерит диффузный цвет материала геометрии в текстуру буфера кадров. Эта текстура диффузного цвета из буфера кадров будет входящей текстурой для шейдера контуров.
Читать дальше →
Всего голосов 43: ↑41 и ↓2 +39
Просмотры10.8K
Комментарии 4

Шейдеры 3D-игр для начинающих

Работа с 3D-графикойРазработка игрДизайн игр
Перевод
image

Хотите научиться добавлять в свою 3D-игру текстуры, освещение, тени, карты нормалей, светящиеся объекты, ambient occlusion и другие эффекты? Отлично! В этой статье представлен набор техник затенения, способных поднять уровень графики вашей игры на новые высоты. Я объясняю каждую технику таким образом, чтобы вы могли применить/портировать эту информацию в любом стеке инструментов, будь то Godot, Unity или что-то иное.

В качестве «клея» между шейдерами я решил использовать великолепный игровой движок Panda3D и OpenGL Shading Language (GLSL). Если вы пользуетесь таким же стеком, то получите дополнительное преимущество — узнаете, как использовать техники затенения конкретно в Panda3D и OpenGL.
Читать дальше →
Всего голосов 46: ↑46 и ↓0 +46
Просмотры18.5K
Комментарии 5

The New iOS Mobile Enterprise. Часть #1: Кодогенерация для ресурсов

Блог компании TINKOFFРазработка под iOSРазработка мобильных приложений

Всем привет!


Меня зовут Дмитрий. Так получилось, что я являюсь тим лидом в команде из 13 iOS разработчиков уже на протяжении двух лет. И вместе мы трудимся над приложением Тинькофф Бизнес.


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


Расскажу о практиках и подходах которые помогли команде заметно ускориться в разработке и тестировании и заметно сократить количество стресса, багов, проблем при внеплановом или срочном релизе. #MakeReleaseWithoutStress.


Поехали!

Читать дальше →
Всего голосов 15: ↑15 и ↓0 +15
Просмотры5.6K
Комментарии 8

AliceVision: фотограмметрия из командной строки

Работа с 3D-графикойРазработка игр
Перевод
Tutorial
Вам нужно автоматизировать огромное количество фотограмметрических сканов? Тогда у меня для вас хорошие новости.


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

Но меня интересует полная автоматизация. Если у вас есть сканирующая установка, на которой вы делаете по 100 и больше сканов в день, то необходимо полностью автоматизированное решение для пакетной обработки этих файлов. Данный пост является руководством и/или туториалом по решению этой задачи.
Читать дальше →
Всего голосов 24: ↑24 и ↓0 +24
Просмотры13.3K
Комментарии 3

Навигация в Android-приложении с помощью координаторов

Блог компании TINKOFFРазработка под Android
Перевод
За последние несколько лет мы выработали общие подходы создания Android-приложений. Чистая архитектура, архитектурные шаблоны (MVC, MVP, MVVM, MVI), шаблон “репозиторий” и другие. Однако до сих пор нет общепринятых подходов к организации навигации по приложению. Сегодня я хочу поговорить с вами о шаблоне “координатор” и возможностях его применении в разработке Android-приложений.
Шаблон “координатор” часто используется в iOS-приложениях и был представлен Сорушем Ханлоу (Soroush Khanlou) с целью упростить навигацию по приложению. Есть мнение, что работа Соруша основана на подходе Application Controller, описанном в книге Patterns of Enterprise Application Architecture Мартином Фаулером (Martin Fowler).
Шаблон “координатор” призван решить следующие задачи:

  • борьба с Massive View Controller проблемой (о проблеме уже писали на хабре — прим. переводчика), которая зачастую проявляется с появлением God-Activity (активити с большим количеством обязанностей).
  • выделение логики навигации в отдельную сущность
  • переиспользование экранов приложения (активити/фрагментов) благодаря слабой связи с логикой навигации

Но, прежде чем начать знакомство с шаблоном и попробовать его реализовать, давайте взглянем на используемые реализации навигации в Android-приложениях.
Читать дальше →
Всего голосов 20: ↑18 и ↓2 +16
Просмотры10.3K
Комментарии 6

Как писать, когда не умеешь и лень

Учебный процесс в ITЧитальный зал
Многие сравнивают писательство с каким-то творческим процессом. Это ошибка — мы все умеем писать по умолчанию. Сначала нас учили письму в школе, а потом пришли мессенджеры, и это дело превратилось в ежедневную привычку.
Читать дальше →
Всего голосов 31: ↑26 и ↓5 +21
Просмотры39.8K
Комментарии 56

Дайджест интересных материалов для мобильного разработчика #210 (26 июня — 02 июля)

Блог компании Productivity InsideРазработка под iOSРазработка мобильных приложенийРазработка игрРазработка под Android
В этом выпуске постмортем Ubuntu, приложение из сериала, AR и VR, пуши, тимлиды и разработчики. А еще 6 триллионов долларов для индустрии приложений к 2021 году!

Читать дальше →
Всего голосов 17: ↑15 и ↓2 +13
Просмотры12.3K
Комментарии 0

Эффективная DI библиотека на Swift в 200 строк кода

Разработка под iOSSwift
Библиотека EasyDi содержит контейнер зависимостей для Swift. Синтаксис этой библиотеки был специально разработан для быстрого освоения и эффективного использования. Она умещается в 200 строк, при этом умеет все, что нужно взрослой Di библиотеке:

— Создание объектов и внедрение зависимостей в существующие
— Разделение на контейнеры — Assemblies
— Типы разрешения зависимостей: граф объектов, синглетон, прототип
— Разрешение циклических зависимостей
— Подмена объектов и конктесты зависимостей для тестов

В EasyDi нет разделения на register/resolve. Вместо этого зависимости описываются вот так:

var apiClient: IAPIClient {
  return define(init: APIClient()) {
    $0.baseURl = self.baseURL
  }
}

Cocoapods / EasyDi
Github / EasyDi

Под катом очень краткое описание «Зачем DI и что это», также примеры использования библиотеки:

  • Как использовать и типы зависимостей
  • Как тестировать c подменой объектов
  • Как можно это использовать для A/B тестов
  • Как собрать VIPER-модуль
Читать дальше →
Всего голосов 9: ↑8 и ↓1 +7
Просмотры9.2K
Комментарии 7

Парадокс Симпсона и немного Pandas

PythonМатематика

О чем статья?


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

Парадокс Симпсона — контринтуитивное явление в Статистике, когда мы видим в каждой из групп данных определенную зависимость, но при объеденении этих групп зависимость исчезает или становится противоположной. Например, если смотреть изменение среднего заработка женщин 25 лет и старше, работающих полный день, между 2000 и 2012 годами с различным уровнем образования, то мы получим следующие цифры (все расчеты проводились с поправкой на инфляцию):

  • Less than 9th grade -3.7%
  • 9th-12th but didn’t finish -6.7%
  • High school graduate -3.3%
  • Some college but no degree -3.7%
  • Associate’s degree -10.0%
  • Bachelor’s degree or more -2.7%

По этим цифрам можно сделать вывод, что заработок женщин за 12 лет снизился. Однако, на самом деле, средний заработок женщин с полной занятостью вырос на 2.8% (подробнее про этот пример можно почитать тут).

Одним из наиболее известных примеров парадокса Симпсона является случай половой дискриминации при поступлении в Калифорнийский унивеситет Berkeley. Его и будем рассматривать далее.
Читать дальше →
Всего голосов 49: ↑46 и ↓3 +43
Просмотры27.8K
Комментарии 7

VIPER или то, о чем все говорят, но никто не рассказывает

Блог компании e-LegionРазработка под iOSРазработка мобильных приложенийРазработка под Android
Recovery mode
Каждый разработчик хочет писать чистый и модульный код. Конечно же, результирующее приложение не должно крэшиться ни при каких обстоятельствах, и все должно быть реализовано быстро и качественно. Звучит как утопия, не так ли?
Читать дальше →
Всего голосов 16: ↑12 и ↓4 +8
Просмотры12K
Комментарии 0

Обзор алгоритмов сегментации

Блог компании IntelАлгоритмыОбработка изображенийМатематика

Этим летом мне посчастливилось попасть на летнюю стажировку в компанию Itseez. Мне было предложено исследовать современные методы, которые позволили бы выделить местоположения объектов на изображении. В основном такие методы опираются на сегментацию, поэтому я начала свою работу со знакомства с этой областью компьютерного зрения.
Сегментация изображения — это разбиение изображения на множество покрывающих его областей. Сегментация применяется во многих областях, например, в производстве для индикации дефектов при сборке деталей, в медицине для первичной обработки снимков, также для составления карт местности по снимкам со спутников. Для тех, кому интересно разобраться, как работают такие алгоритмы, добро пожаловать под кат. Мы рассмотрим несколько методов из библиотеки компьютерного зрения OpenCV.
Читать дальше →
Всего голосов 27: ↑27 и ↓0 +27
Просмотры58.3K
Комментарии 15

Управляем зависимостями в iOS-приложениях правильно: Typhoon Tips & Tricks

Блог компании Rambler&CoРазработка под iOSПроектирование и рефакторингCocoaObjective C


В предыдущих частях цикла мы рассмотрели основные аспекты работы Typhoon и подготовились к полноценному применению его на практике. Тем не менее, помимо затронутых тем, фреймворк предоставляет большое количество других функций.
Читать дальше →
Всего голосов 15: ↑12 и ↓3 +9
Просмотры7.9K
Комментарии 1

Разработка через тестирование в iOS

Блог компании Rambler&CoРазработка под iOSTDDCocoaObjective C

Содержание:


  • Разработка через тестирование – что это?
  • Три закона TDD
  • Примеры применения
  • Преимущества и недостатки
  • Литература и ссылки


Разработка через тестирование – что это?


Разработка через тестирование (Test-driven development) — техника разработки программного обеспечения, которая определяет разработку через написание тестов. В сущности вам нужно выполнять три простых повторяющихся шага:
— Написать тест для новой функциональности, которую необходимо добавить;
— Написать код, который пройдет тест;
— Провести рефакторинг нового и старого кода.

Мартин Фаулер



Читать дальше →
Всего голосов 18: ↑12 и ↓6 +6
Просмотры24.7K
Комментарии 10

Управляем зависимостями в iOS-приложениях правильно: Модульность Typhoon

Блог компании Rambler&CoРазработка под iOSПроектирование и рефакторингCocoaObjective C


В предыдущей статье цикла мы кратко рассмотрели основные принципы устройства и функционирования Typhoon Framework — Dependency Injection контейнера для iOS. Тем не менее, мало понимать, как устроен инструмент — важнее всего правильно его использовать. В первой части мы рассматривали различные примеры настройки конфигураций создаваемых зависимостей, то теперь разберемся с более высоким уровнем — разбитием на модули самих TyphoonAssembly и их тестированием.
Читать дальше →
Всего голосов 10: ↑9 и ↓1 +8
Просмотры9.9K
Комментарии 0

Управляем зависимостями в iOS-приложениях правильно: Устройство Typhoon

Блог компании Rambler&CoРазработка под iOSПроектирование и рефакторингCocoaObjective C


В прошлой части цикла мы познакомились с Dependency Injection фреймворком для iOS — Typhoon, и рассмотрели базовые примеры его использования в проекте Рамблер.Почта. В этот раз мы углубимся в изучение его внутреннего устройства.
Читать дальше →
Всего голосов 12: ↑11 и ↓1 +10
Просмотры11.8K
Комментарии 0

Управляем зависимостями в iOS-приложениях правильно: Знакомство с Typhoon

Блог компании Rambler&CoРазработка под iOSПроектирование и рефакторингCocoaObjective C
«Any magic, sufficiently analyzed is indistinguishable from technology.»

Артур Кларк
(эпиграф в официальной wiki проекта Typhoon Framework)




Цикл «Управляем зависимостями в iOS-приложениях правильно»



Введение


В рамках этого цикла статей я не буду углубляться в теорию, рассматривать Dependency Inversion Principle или паттерны Dependency Injection — примем за данность, что читатель уже достаточно подготовлен к тому, чтобы познать дзен, и перейдем сразу к практике (ссылки для знакомства с теорией даны в самом конце поста).

Typhoon Framework — это самая известная и популярная реализация DI-контейнера для Objective-C и Swift приложений. Проект достаточно молодой — первый коммит был сделан в самом конце 2012 года, но уже обзавелся большим количеством поклонников. Отдельного упоминания заслуживает активная поддержка проекта его создателями (один из которых, между прочим, живет и работает в Омске) — на большинство создаваемых Issue отвечают в течение десяти минут, а уже через несколько часов к обсуждению присоединяется вся команда.
Читать дальше →
Всего голосов 18: ↑18 и ↓0 +18
Просмотры34.7K
Комментарии 7
1

Информация

В рейтинге
5,832-й
Откуда
Россия
Работает в
Дата рождения
Зарегистрирован
Активность