Как стать автором
Обновить
12
0
Yauheni @wcoder

Мобильная разработка

Отправить сообщение

Вычисления на GPU – зачем, когда и как. Плюс немного тестов

Время на прочтение12 мин
Количество просмотров84K
Всем давно известно, что на видеокартах можно не только в игрушки играть, но и выполнять вещи, никак не связанные с играми, например, нейронную сеть обучить, криптовалюту помайнить или же научные расчеты выполнить. Как так получилось, можно прочитать тут, а я хотел затронуть тему того, почему GPU может быть вообще интересен рядовому программисту (не связанному с GameDev), как подступиться к разработке на GPU, не тратя на это много времени, принять решение, нужно ли вообще в эту сторону смотреть, и «прикинуть на пальцах», какой профит можно получить. 


Читать дальше →
Всего голосов 33: ↑33 и ↓0+33
Комментарии29

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

Время на прочтение24 мин
Количество просмотров68K


В предыдущей статье мы обсуждали, почему функциональное программирование это совсем не то, что распиарено, и что оно совершенно не противоречит ООП, так, что даже сам "Дядя Боб" пишет про хороший ФП дизайн порождающий хороший ООП дизайн программы (и наоборот).


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


Но ведь в интернете буквально сотни статей про ФП и монады, зачем писать еще одну?


Дело в том, что все их (по крайней мере те что я читал) можно поделить условно на две категории: с одной стороны это статьи где вам объяснят что монада это моноид в категории эндофункторов, и что если монада T над неким топосом имеет правый сопряжённый, то категория T-алгебр над этой монадой — топос. На другой стороне располагаются статьи, где вам рассказывают, что монады — это коробки, в которых живут собачки, кошечки, и вот они из одних коробок перепрыгивают в другие, размножаются, исчезают… В итоге за горой аналогий понять что-то содержательное решительно невозможно.


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


Я же хотел бы занять промежуточную позицию, и рассказать про монады без заумных терминов, но и без котиков, используя понятные ООП разработчикам термины: интерфейсы, паттерны, копипаста, инкапсуляция сложности, бойлерплейт, и так далее. В процессе работы над статьёй ни один термин теории категории использован не был.

Читать дальше →
Всего голосов 108: ↑104 и ↓4+100
Комментарии256

Как приручить Charles Proxy?

Время на прочтение10 мин
Количество просмотров306K
Привет! Многие из тех, кто приходит к нам на собеседование на должность тестировщика, с гордостью заверяют, что они могут пользоваться Charles Proxy. Но когда погружаешься в техническую часть, то становится очевидно, что кандидат только слышал об этом инструменте. Давайте уже наконец скорее приручим эту вазу!


Читать дальше →
Всего голосов 27: ↑27 и ↓0+27
Комментарии25

Создание архитектуры программы или как проектировать табуретку

Время на прочтение25 мин
Количество просмотров681K
Взявшись за написание небольшого, но реального и растущего проекта, мы «на собственной шкуре» убедились, насколько важно то, чтобы программа не только хорошо работала, но и была хорошо организована. Не верьте, что продуманная архитектура нужна только большим проектам (просто для больших проектов «смертельность» отсутствия архитектуры очевидна). Сложность, как правило, растет гораздо быстрее размеров программы. И если не позаботиться об этом заранее, то довольно быстро наступает момент, когда ты перестаешь ее контролировать. Правильная архитектура экономит очень много сил, времени и денег. А нередко вообще определяет то, выживет ваш проект или нет. И даже если речь идет всего лишь о «построении табуретки» все равно вначале очень полезно ее спроектировать.

К моему удивлению оказалось, что на вроде бы актуальный вопрос: «Как построить хорошую/красивую архитектуру ПО?» — не так легко найти ответ. Не смотря на то, что есть много книг и статей, посвященных и шаблонам проектирования и принципам проектирования, например, принципам SOLID (кратко описаны тут, подробно и с примерами можно посмотреть тут, тут и тут) и тому, как правильно оформлять код, все равно оставалось чувство, что чего-то важного не хватает. Это было похоже на то, как если бы вам дали множество замечательных и полезных инструментов, но забыли главное — объяснить, а как же «проектировать табуретку».

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

Данная статья является попыткой ответить на эти вопросы хотя бы в первом приближении.
Читать дальше →
Всего голосов 88: ↑85 и ↓3+82
Комментарии45

Нативно или нет? 4 мифа о кросс-платформенной разработке

Время на прочтение8 мин
Количество просмотров14K
Смартфоны продолжают отвоевывать все больше места под солнцем не только как инструмент потребления фотографий котиков, но и в качестве рабочего инструмента. Поэтому и спрос на мобильную разработку растет. Принято считать, что тру и кул — это Objective-C/Swift для iOS и Java/Kotlin для Android. Спору нет, тру и кул, но существует большое количество реальных сценариев, в которых использование кросс-платформенных фреймворков более предпочтительно в сравнении с нативными инструментами. Подробнее под катом!

Читать дальше →
Всего голосов 30: ↑27 и ↓3+24
Комментарии27

SwiftUI по полочкам

Время на прочтение24 мин
Количество просмотров85K
Каждый раз, когда в языке программирования появляется новый Фреймворк, рано или поздно, появляются люди, которые изучают язык именно с него. Вероятно так было и в IOS разработке во времена появления Swift: поначалу он рассматривался как дополнение к Objective-C — но я этого уже не застал. Сейчас, если начинаешь с нуля, выбор языка уже не стоит. Swift вне конкуренции.

То же самое, но в меньшем масштабе, происходит и с фреймворками. Появление SwiftUI — не исключение. Вероятно, я — представитель первого поколения разработчиков, кто стартовал с изучения SwiftUI, проигнорировав UIKit. У этого есть своя цена — обучающих материалов и примеров работающего кода пока очень мало. Да, в сети уже есть некоторое количество статей, рассказывающих о той или иной особенности, том или ином инструменте. На том же www.hackingwithswift.com уже довольно много примеров кода с объяснениями. Однако, они слабо помогают тем, кто решил изучать SwiftUI с нуля, как я. Большинство материалов в сети — это ответы на конкретные, сформулированные вопросы. Опытный разработчик легко разберется, как все устроено, почему именно так, и зачем это нужно применять. Новичку же, сначала нужно понять, какой вопрос задать, и только тогда он сможет добраться до этих статей.



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

Надеюсь статья поможет вам сэкономить некоторое время, когда вы тоже захотите ощутить немного магии.
Читать дальше →
Всего голосов 19: ↑19 и ↓0+19
Комментарии30

Сложные отображения коллекций в iOS: проблемы и решения на примере ленты ВКонтакте

Время на прочтение17 мин
Количество просмотров21K

Привет! Меня зовут Саша, я iOS-разработчик в команде, которая делает ленту ВКонтакте. Сейчас расскажу, как мы оптимизируем отображение интерфейса и обходим связанные с этим проблемы.
Думаю, вы представляете, что такое лента VK. Это экран, где можно просматривать разнообразный контент: тексты, статичные картинки, анимированные гифки, встраиваемые элементы (видео и музыку). Всё это должно отображаться плавно, отсюда высокие требования к производительности решений.


Теперь посмотрим, какие существуют стандартные подходы к работе с отображениями и какие ограничения или преимущества следует учитывать.


Если вы больше любите слушать, чем читать, видеозапись доклада есть вот тут.


Читать дальше →
Всего голосов 25: ↑25 и ↓0+25
Комментарии11

Отображение текста в Android

Время на прочтение17 мин
Количество просмотров48K

Отображение текстовой информации — наверное, самая базовая и важная часть многих Android-приложений. В данной статье пойдет речь о TextView. Каждый разработчик, начиная с «Hello World», постоянно сталкивается с этим элементом пользовательского интерфейса. Периодически в работе с текстом приходится задумываться о реализации различных дизайнерских решений или улучшении производительности при отрисовке экрана.


Я расскажу об устройстве TextView и некоторых тонкостях работы с ним. Основные советы были взяты из докладов прошедших Google I/O.

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

Темное программирование

Время на прочтение7 мин
Количество просмотров139K
imageПредлагаю перейти на сторону зла, на темную сторону программирования. Ситхи сильнее джедаев. И печенек хватит на всех. Предупреждаю, прежде чем начнете читать далее. Характер при переходе на темную сторону портится.
Прошу под кат
Читать дальше →
Всего голосов 257: ↑203 и ↓54+149
Комментарии212

Заземление. Что это такое и как его сделать (часть 1)

Время на прочтение12 мин
Количество просмотров579K


Мой рассказ будет состоять из трёх частей.

1 часть. Заземление
(общая информация, термины и определения)


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


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


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

Если читатель обладает теоретическими знаниями и интересуется только практической реализацией — ему лучше пропустить первую часть и начать чтение со второй части.

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

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

Некоторая часть текста является компромиссом между точностью и желанием объяснить “человеческим языком”, поэтому допущены упрощения, могущие “резать слух” технически подкованного читателя.

Читать дальше →
Всего голосов 199: ↑183 и ↓16+167
Комментарии217

Очень быстрый и эффективный способ расслабления глаз

Время на прочтение4 мин
Количество просмотров412K

Предисловие


imageНе знаю, все ли программисты всесторонне любознательные люди, но я всегда пытаюсь получить фундаментальные знания во всех областях, которые могут быть практически полезны. В то время, когда мне в голову пришла эта идея я изучал анатомию и физиологию по журналам «Тело человека. Снаружи и внутри», ну а по работе я занимался стерео-варио фотографиями (для тех кто не знает — были такие советские календарики с ребристой поверхностью, где картинка либо казалась объемной, либо менялась). Так вот, в один из вечеров мне пришла в голову замечательная идея, которую я на протяжении уже 4х лет использую для поддержания своего зрения.
Обещаю, что эффект почувствуете сразу!
Читать дальше →
Всего голосов 246: ↑238 и ↓8+230
Комментарии207

Домашний сервер. WiFi роутер

Время на прочтение6 мин
Количество просмотров32K
Домашний сервер это просто… компьютер, работающий 24 часа, 7 дней в неделю, 365 дней в году. Что он делает?
«Раздает» интернет по проводу и по воздуху.
Является складом с круглосуточном доступом для всех ваших коллекций фильмов, музыки, игр, программ, backup'ов важной информации, сюда же можно добавить, что это ваше файловое хранилище доступное внутри сети, а если постараться, то и из любого уголка мира можно попасть в него. Понравилось? Хотите «завести» подобное у себя дома?
Тут вспоминается фраза из анекдота — «Главное, мужики, не бояться!».
Читать дальше →
Всего голосов 25: ↑15 и ↓10+5
Комментарии17

Информация

В рейтинге
Не участвует
Откуда
Минск, Минская обл., Беларусь
Зарегистрирован
Активность