Pull to refresh
0
0
Виталий @BlackStream

User

Send message

Откуда растут ноги у Java Memory Model

Reading time19 min
Views75K
Современное железо и компиляторы готовы перевернуть с ног на голову наш код, лишь бы он работал быстрее. А их производители тщательно скрывают свою внутреннюю кухню. И все прекрасно, пока код выполняется в одном потоке.

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

Но все уже осознали, ведь жить с этим как-то надо. А Java программисты даже неплохо живут. Потому что в Java есть модель памяти — Java Memory Model (JMM), которая предоставляет достаточно простые правила для написания корректного многопоточного кода.

И правил этих достаточно для большинства программ. Если вы их не знаете, но пишите или хотите писать многопоточные программы на Java, то лучше как можно скорее ознакомиться с ними. А если знаете, но вам не хватает контекста или интересно узнать откуда растут ноги у JMM, тогда статья может вам помочь.
Читать дальше →
Total votes 55: ↑53 and ↓2+51
Comments10

Эволюция планировщиков задач

Reading time12 min
Views19K


Приложение iFunny, над которым мы работаем, доступно в сторах уже более пяти лет. За это время мобильной команде пришлось пережить множество разных подходов и миграций между инструментами, а год назад появилось время перейти с самописного решения и посмотреть в сторону чего-то более «модного» и распространённого. Эта статья — небольшая выжимка о том, что было изучено, на какие решения смотрели и к чему в итоге пришли.
Читать дальше →
Total votes 23: ↑23 and ↓0+23
Comments11

Анимация подчёркивания ссылок на чистом CSS

Reading time2 min
Views39K
Одно из преимуществ создания моего личного сайта с нуля вместо использования готовой темы заключается в том, что я начинаю с настроек браузера по умолчанию и постепенно добавляю собственные расцветки. Я стараюсь удержать сайт от раздувания, но и персонализация — важное дело. Нужно найти некий компромисс между спартанскими страницами Hacker News и Craigslist с одной стороны и перегруженностью старого MySpace с другой.

Как-то мне попался сайт с причудливыми анимированными подчёркиваниями для ссылок, и я захотел реализовать эффект. Но мне важно использовать чистый CSS, потому что ради таких легкомысленных вещей негоже добавлять JavaScript, который может вызвать проблемы с производительностью или удобством интерфейса (см. угон полосы прокрутки).
Total votes 14: ↑11 and ↓3+8
Comments10

Практический пример создания собственного View-компонента

Reading time5 min
Views8.5K

Практический пример создания собственного View-компонента


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


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

Читать дальше →
Total votes 8: ↑8 and ↓0+8
Comments5

7 библиотек для Android разработки на Kotlin

Reading time3 min
Views13K

7 библиотек для Android разработки на Kotlin


Недавно я начал изучать Kotlin для Android-разработки, и мне это очень понравилось. Kotlin по синтаксису очень похож на Swift, и это удобно. Я всего лишь новичок в Android-разработке, поэтому скорее всего есть ещё много полезных библиотек, которые у меня ещё не было возможности изучить, но этот список — это некоторые из тех, которые я уже успешно использовал или планирую сделать это в скором времени.

Читать дальше →
Total votes 12: ↑10 and ↓2+8
Comments3

Лицензия на вождение болида, или почему приложения должны быть Single-Activity

Reading time14 min
Views59K

image


На AppsConf 2018, которая прошла 8-9 октября, я выступил с докладом про создание андроид-приложений целиком в одном Activity. Хотя тема известная, существует много предубеждений относительно такого выбора — переполненный зал и количество вопросов после выступления тому подтверждение. Чтобы не ждать видеозаписи, я решил сделать статью с расшифровкой выступления.



О чем я расскажу


  1. Почему и зачем надо переходить на Single-Activity
  2. Универсальный подход для решения задач, которые вы привыкли решать на нескольких Activity
  3. Примеры стандартных бизнес задач
  4. Узкие места, где обычно подпирают код, а не делают все честно
Читать дальше →
Total votes 43: ↑40 and ↓3+37
Comments81

Видео докладов с MOSDROID #13 Aluminium

Reading time1 min
Views3.2K


В субботу 10-го ноября на площадке FunCorp прошёл MOSDROID #13 Aluminium. На митапе было 5 докладов от спикеров из Яндекс.Такси, Lamoda, FunCorp, Joom и Сбертеха, видео которых уже доступны к просмотру.

«Эволюция планировщиков задач», Алексей Макаров, FunCorp



Total votes 19: ↑19 and ↓0+19
Comments1

Из Dribbble в Android Motion

Reading time4 min
Views5K


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

В этой статье мы поробуем реализовать пользовательский интерфейс, разработанный дизайнером Иваном Парфеновым для студии PLATES.
Читать дальше →
Total votes 21: ↑21 and ↓0+21
Comments1

На поводу у трендов, или движение навстречу RxJava и LiveData

Reading time6 min
Views8.6K


На дворе 2018 год. Всё чаще встречаются слова RxJava и LiveData. Но если вдруг так случилось, что в вашем приложении до сих пор балом правят старомодные решения вроде библиотеки android-priority-jobqueue или AsyncTask (да, бывает и так), то эта статья специально для вас. Я разделяю эти подходы, исходя из заложенной в них философии. Первый предполагает некоторую зависимость выполнения работы от отображения, второй — выполнение задачи, при котором View слушает её и она не прерывается в зависимости от событий жизненного цикла (например, при повороте экрана). Под катом я предлагаю рассмотреть миграцию на связку RxJava и LiveData для обоих подходов.
Читать дальше →
Total votes 22: ↑19 and ↓3+16
Comments4

Kotlin: копаем глубже. Конструкторы и инициализаторы

Reading time12 min
Views27K


В уже далёком мае 2017 года Google объявила о том, что Kotlin стал официальным языком для разработки под Android. Кто-то тогда впервые услышал название этого языка, кто-то на нём уже продолжительное время писал, но с того момента стало понятно, что все, кто близок к Android-разработке, теперь просто обязаны познакомиться с ним. Далее последовали как восторженные отклики «Наконец-то!», так и жуткое негодование «Зачем нам нам новый язык? Чем Java не угодила?» и т.д. и т.п.

С тех пор прошло достаточно времени, и хоть споры о том, хороший Kotlin или плохой, до сих пор не утихли, всё больше кода под Android пишется именно на нём. И даже вполне консервативные разработчики тоже переходят на него. Кроме того, в сети можно наткнуться на информацию, что скорость разработки после освоения этого языка увеличивается на 30% по сравнению с Java.

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

И вот на этой волне мне пришла в голову идея подробно разобрать отдельные элементы молодого, но популярного языка. Обратить внимание на сложные моменты и сравнить их с Java для наглядности и лучшего понимания. Разобраться в вопросе несколько глубже, чем это можно сделать, прочитав документацию. Если эта статья вызовет интерес, то, скорее всего, она положит начало целому циклу статей. А пока начну с довольно базовых вещей, которые, тем не менее, скрывают массу подводных камней. Поговорим о конструкторах и инициализаторах в Kotlin.
Читать дальше →
Total votes 33: ↑31 and ↓2+29
Comments19

Как декларативно описать коллапсирующий тулбар

Reading time8 min
Views9.9K


Хочу представить решение того, как можно описать CollapsingToolbar, с акцентом на читаемости кода. В статье не будет объясняться, что такое и как написать свой CoordinatorLayout.Behavior. Если читателю интересно в этом разобраться, есть много статей, в том числе на хабре. Если разбираться не хочется — ничего страшного: я постарался вынести написание CollapsingToolbar так, чтобы можно было абстрагироваться от CoordinatorLayout.Behavior и OnOffsetChangedListener.
Читать дальше →
Total votes 12: ↑12 and ↓0+12
Comments1

10 отличных книг на английском для новичков

Reading time5 min
Views32K
Чтение книг в оригинале — один из лучших способов тренировать понимание и восприятие английского языка.

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

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

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

Забирайте и читайте!
Читать дальше →
Total votes 19: ↑8 and ↓11-3
Comments23

Тринадцать вещей, которые предвидел Лем

Reading time9 min
Views46K

Привет, Хабр! Представляю вашему вниманию перевод статьи "Тринадцять речей, які передбачив Лем" автора Mikołaj Gliński.


Электронные книги, планшеты и смартфоны, Гугл и даже "Матрица" описаны еще в середине ХХ века автором «Соляриса». Вот так Станислав Лем предсказал будущее, в котором мы сейчас живем.


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


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

Читать дальше →
Total votes 61: ↑58 and ↓3+55
Comments355

KotlinConf 2018 Live — мы в эфире

Reading time1 min
Views1.4K
UPD
Трансляция сегодняшних сессий KotlinConf 2018:

Вы всё еще можете задавать нам свои вопросы в Twitter с хештегом #kc18ask. Сегодня на заключительной сессии вопросов-ответов мы на них ответим. Не пропустите, начало в 18:15 по Москве.
Читать дальше →
Total votes 7: ↑6 and ↓1+5
Comments0

Основные структуры данных. Матчасть. Азы

Reading time5 min
Views226K
Все чаще замечаю, что современным самоучкам очень не хватает матчасти. Все знают языки, но мало основы, такие как типы данных или алгоритмы. Немного про типы данных.

Еще в далеком 1976 швейцарский ученый Никлаус Вирт написал книгу Алгоритмы + структуры данных = программы.

40+ лет спустя это уравнение все еще верно. И если вы самоучка и надолго в программировании пробегитесь по статье, можно по диагонали. Можно код кофе.


Читать дальше →
Total votes 24: ↑14 and ↓10+4
Comments38

Что нового в ConstraintLayout 1.1

Reading time4 min
Views9.9K

ConstraintLayout


ConstraintLayout упрощает создание сложных макетов в Android, позволяя создавать большую часть вашего пользовательского интерфейса с помощью визуального редактора в Android Studio. Его часто называют более мощным RelativeLayout. С помощью ConstraintLayout вы можете избегать множества уровней вложенности при вёрстке сложных экранов.


Недавно была выпущена стабильная версия ConstraintLayout 1.1, и теперь он выглядит очень зрело. Полная его оптимизация ещё больше увеличивает его быстродействие, а новые элементы, такие как барьеры и группы, превращают создание по-настоящему крутого дизайна в достаточно тривиальную задачу.

Читать дальше →
Total votes 18: ↑18 and ↓0+18
Comments0

Непрерывные переходы между общими элементами: из RecyclerView во ViewPager

Reading time9 min
Views14K

Использование переходов в Material Design дает приложению визуальную непрерывность. Пока пользователь ходит по приложению, элементы интерфейса в нем меняют состояние. Анимации переходов соответствующих элементов от одного экрана к другому подчеркивают идею о том, что интерфейсы осязаемы.


Целью этой статьи является предоставление гайдлайнов и реализации для определенных непрерывных переходов между фрагментами ОС Android. Мы продемострируем, как реализовать переход из картинки в RecyclerView в картинку внутри ViewPager и обратно, используя "общие элементы" (shared elements) чтобы определить, как и какие элементы участвуют в переходе. Мы также обработаем сложный случай перехода обратно в сетку после листания на странице к элементу, который в сетке изначально был за пределами экрана.


Вот результат, которого мы хотим добиться (анимированная версия под катом).



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


От переводчика. Далее будет довольно много кода и гифок (по прикидкам, мегабайт на 20).

Читать дальше →
Total votes 30: ↑27 and ↓3+24
Comments0

Использование buildSrc для внедрения дополнительной логики в Gradle

Reading time4 min
Views24K

Интересная заметка от Madis Pink в блоге ZeroTurnaround RebelLabs. Если кто-то вас разбудит посреди ночи и спросит: «какую фичу в Gradle должен знать каждый?» — с уверенностью отвечай, что это buildSrc. Это особый магический Gradle-проект внутри твоего репозитория, доступный всем файлам build.gradle в виде библиотеки.


Описанный далее подход позволяет писать код на удобном тебе JVM-языке, и результат использовать прямо в своих сборочных скриптах. Как бонус, можно покрыть юнит-тестами особо хитрые моменты в этих скриптах. Добро пожаловать под кат!

Читать дальше →
Total votes 24: ↑22 and ↓2+20
Comments5

Как работает Android, часть 1

Reading time8 min
Views217K


В этой серии статей я расскажу о внутреннем устройстве Android  —  о процессе загрузки, о содержимом файловой системы, о Binder и Android Runtime, о том, из чего состоят, как устанавливаются, запускаются, работают и взаимодействуют между собой приложения, об Android Framework, и о том, как в Android обеспечивается безопасность.

Читать дальше →
Total votes 92: ↑91 and ↓1+90
Comments51

Избавляемся от рутины RecyclerView.Adapter с помощью DataBinding

Reading time5 min
Views22K


RecyclerView — основной UI элемент практически любого приложения. Написание адаптеров и ViewHolder'ов зачастую слишком рутинная работа и содержит достаточно boilerplate кода. В этой статье я хочу показать как с использованием DataBinding и паттерна MVVM можно написать абстрактный адаптер и напрочь забыть про ViewHolder'ы, inflate, ручной биндинг и прочую рутину.

Читать дальше →
Total votes 6: ↑6 and ↓0+6
Comments4
1
23 ...

Information

Rating
Does not participate
Location
Украина
Date of birth
Registered
Activity