Как стать автором
Обновить
19
0
Василий Малеев @keymusicman

Разработчик

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

Решительность в IT: решает тот, кто делает

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

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

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

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

Читать далее
Всего голосов 48: ↑42 и ↓6+36
Комментарии32

Как применять Branch by Abstraction в проекте на примере Android-разработки

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

Представим простую историю. Вы заканчиваете делать рефакторинг, которым занимались последние 2 недели. Вы хорошо над ним поработали, сделали несколько ключевых изменений в проекте. Делаете долгожданный pull request, и ... 12 конфликтов.

Или другой вариант. Вы работали и постоянно подливали себе основную ветку, так чтобы код сильно не расходился. Делаете pull request, он висит несколько дней, после этого вы получаете approve и ... 15 конфликтов. Кто-то слил свой большой pull request раньше.

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

В этой статье поговорим про технику Branch by Abstraction. Как она может помочь не копить большие изменения в нашей ветке, избегать merge hell и прокачать ваш CI.

Я буду описывать примеры из Android-разработки, но они также справедливы для большинства типов проектов и платформ.

Читать далее
Всего голосов 17: ↑16 и ↓1+15
Комментарии14

Zettelkasten: как один немецкий учёный стал невероятно продуктивным

Время на прочтение18 мин
Количество просмотров367K
Изображение предоставлено автором. Основано на фотографии Патрика Томаса с Ансплэша

Это перевод статьи Дэвида Клира о методе ведения заметок Zettelkasten, благодаря которому немецкий социолог Никлас Луман написал более 70 книг и 400 научных статей. Стоит читать, если вы хотите создать собственную базу знаний, систематизировать идеи и перестать забывать важные мысли.

Статья бережно перенесена из блога бегущего редактора. Кстати, следить за анонсами новых статей можно в моём телеграм-канале. Подписывайтесь, чтобы ничего не пропустить!
Читать дальше →
Всего голосов 52: ↑48 и ↓4+44
Комментарии82

Edge-to-edge в Android: делаем правильно

Время на прочтение8 мин
Количество просмотров14K
Прошедший Google I/O 2019 принёс массу нашумевших новинок, многие из которых будут влиять на индустрию мобильной разработки в ближайшие годы. Не менее интересно было следить за зарождающимися трендами. Сначала в историю ушли механические клавиши управления, экраны смартфонов становились всё больше, а боковые рамки всё незаметнее. На смену экранным системным кнопкам пришли жесты, оставляя всё больше пространства для потребления контента. Приложения отображаются на всей видимой поверхности дисплея, от нижней до верхней рамки, не стесняя себя условными границами статус-бара и навигационной панели. Мы на пороге эры Edge-to-Edge.


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

ViewPager 2 — новая функциональность в старой обертке

Время на прочтение9 мин
Количество просмотров29K
ViewPager — один из самых известных и широко используемых компонентов Android Support Library. Все простейшие карусели, онбординги и слайдеры в мобильных приложениях для Android выполнены именно на нем. В феврале 2019 года команда разработки AndroidX выпустила ViewPager2. Давайте разберемся, какие у этого были предпосылки и какими преимуществами обладает обновленная версия компонента.


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

Забудьте о DAO, используйте Repository

Время на прочтение6 мин
Количество просмотров175K
Недавно задумался о том, чем отличаются паттерны, позволяющие абстрагироваться от работы с хранилищем данных. Много раз поверхностно читал описания и различные реализации DAO и Repository, даже применял их в своих проектах, видимо, до конца не понимая концептуальных отличий. Решил разобраться, закопался в Google и нашел статью, которая для меня разъяснила все. Подумал, что неплохо было бы перевести ее на русский. Оригинал для англочитающих здесь. Остальным интересующимся добро пожаловать под кат.
Читать дальше →
Всего голосов 28: ↑23 и ↓5+18
Комментарии14

Быстрорастворимое проектирование

Время на прочтение25 мин
Количество просмотров41K
Люди учатся архитектуре по старым книжкам, которые писались для Java. Книжки хорошие, но дают решение задач того времени инструментами того времени. Время поменялось, C# уже больше похож на лайтовую Scala, чем Java, а новых хороших книжек мало.

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

Эта статья является расшифровкой моего доклада с конференции DotNext 2018 Moscow. Кроме текста, под катом есть видеозапись и ссылка на слайды.


Читать дальше →
Всего голосов 48: ↑47 и ↓1+46
Комментарии34

Использование Retrofit 2.x в качестве REST клиента — Tutorial

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

1. Retrofit


1.1. Что такое Retrofit


Retrofit — это REST клиент для Java и Android. Он позволяет легко получить и загрузить JSON (или другие структурированные данные) через веб-сервис на основе REST. В Retrofit вы настраиваете, какой конвертер используется для сериализации данных. Обычно для JSON используется GSon, но вы можете добавлять собственные конвертеры для обработки XML или других протоколов. В Retrofit используется библиотека OkHttp для HTTP-запросов.
Читать дальше →
Всего голосов 24: ↑20 и ↓4+16
Комментарии12

EntityFramework: (анти)паттерн Repository

Время на прочтение15 мин
Количество просмотров110K
Repository Pattern
Репозиторий является посредником между слоем доступа к данным и доменным слоем,
работая как in-memory коллекция доменных обектов. Клиенты создают декларативные
описания запросов и передают их в репозиторий для выполнения.
  — свободный перевод Мартина Фаулера

EntityFraemwork предоставляет нам готовую реализацию паттернов Repository: DbSet<T> и UnitOfWork: DbContext. Но мне часто приходится видеть, как коллеги используют в своих проектах собственную реализацию репозиториев поверх существующих в EntityFraemwork.


Чаще всего используется один из двух подходов:


  1. Generic Repository как попытка абстрагироваться от конкретного ORM.
  2. Repository как набор запросов к выбранной таблице БД (паттерн DAO).

И каждый из этих подходов содержит недостатки.

Читать дальше →
Всего голосов 47: ↑45 и ↓2+43
Комментарии159

Влюбляемся в F#: Доза 0: Зачем нужен ещё один язык программирования?

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

Дорогие Хабраколлеги!



Хочу предложить вашему вниманию возможность приобщиться еще к одному языку программирования: F#. Идея писать такого рода заметки возникла из жизни — по роду своей деятельности мне приходится рассказывать про F#, и когда меня спрашивают, где можно попродробнее прочитать об этом языке — приходится ссылаться на англоязычные ресурсы. Поэтому я решил потихоньку рассказывать про F# в своем блоге, а теперь еще и на хабре, увидев замечательное сообщество стартап-программист. Поскольку F# — очень красивый язык, который никого не оставит равнодушным — я решил озаглавить цикл статей "влюбляемся в F#", а каждую из статей называть "дозой": по окончании их употребления вы должны будете подсесть на F#, а я буду мучительно эксплуатировать ваше терпение, делая вынужденные (из-за недостатка времени) перерывы между дозами.


Читать дальше →
Всего голосов 69: ↑60 и ↓9+51
Комментарии93

Ресурсы, о которых должен знать каждый Android-разработчик

Время на прочтение6 мин
Количество просмотров189K
Сегодня я хочу поделиться с вами моим вольным переводом статьи, написанной Сергеем Повзнером (Sergey Povzner). Сергей ведёт блог bongizmo.com и занимается разработкой туристических гидов под общим названием Citybot.

В то время как Android продолжает свой невероятный рост, всё больше и больше программистов начинают разрабатывать приложения на этой платформе. Если ты начинаешь свой путь сегодня, то ты определенно — счастливчик. За последние годы Android значительно повзрослел и избавился от множества детских болезней. Информации по платформе более чем достаточно. Я же расскажу о самых важных ресурсах.

Статья будет полезна как новичкам, так и опытным разработчикам. Это гид по миру Android-разработки.
Читать дальше →
Всего голосов 133: ↑128 и ↓5+123
Комментарии33

Информация

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