User
Русское издание книги Programming Interviews Exposed
Сегодня мы представляем одну из последних новинок нашего издательства — книгу «Работа мечты для программиста. Тестовые задачи и вопросы при собеседовании в ведущих IT-компаниях». Русское название, возможно, оказалось слишком «маркетинговым», но содержание от этого не страдает — книга переиздается на Западе уже более 10 лет и заслуженно все эти годы возглавляет рейтинги IT-литературы.
Предлагаем вашему вниманию информацию о книге, а также тестовое задание, которое вы можете попробовать решить самостоятельно.
Процесс найма глазами разработчиков: результаты опроса «Моего круга»
Мы решили разобраться, как сейчас происходит найм разработчиков и каким он должен быть в идеале. Провели опрос на эту тему среди пользователей «Моего круга» и «Хабра», получили более 1100 ответов и теперь публикуем полученные результаты.
Процесс найма всегда проходит по одному более или менее общему сценарию: поиск специалиста, приглашение его на вакансию, выполнение тестового задания, собеседование. В нашем опросе мы прошлись по всем этим этапам и постарались увидеть каждый из них глазами разработчика.
Надеемся, наше небольшое исследование пригодится рекрутерам, которые сегодня бьются за разработчиков, в их нелёгком, но благородном деле!
30 новых ресурсов для android-разработчика (лето 2017)
Компания EDISON Software профессионально занимается разработкой Android-приложений. Вот некоторые крупные проекты:
- Мобильные приложения виртуального сотового оператора
- Бронирование билетов на мероприятия
- Сервис доставки банковских уведомлений на смартфоны
- Приложение Vivaldi для работы с электронной библиотекой
Полезные статьи на Хабре по Android:
- Разработка быстрых мобильных приложений на Android. Часть первая
- Разработка быстрых мобильных приложений на Android. Часть вторая
- Шишки и грабли Android-разработчика за 2 года
(Пост из серии «просмотреть и добавить в избранное»)
Библиотека Reamp: обезболивающее для ваших Android-приложений
Однажды мы в компании EastBanc Technologies устали бороться с теми архитектурными проблемами, которые возникают в Android-разработке и решили все исправить:). Мы хотели найти решение, которое удовлетворит всем нашим требованиям.
И, как это часто бывает, готового решения тогда не нашлось и нам пришлось сделать собственную библиотеку, которая уже приносит счастье нам, и может помочь и вам.
Какие проблемы решали:
- Уйти от жизненного цикла экранов, будь то Activity, Fragment или View
- Уйти от необходимости писать код для сохранения и восстановления состояния для каждого экрана
- Повысить стабильность: защититься от досадных крешей и утечек памяти
- Повысить переиспользуемость кода между телефонным UI и планшетным UI
Разработка прибыльной Android игры двумя школьниками
Как объяснить бабушке, что такое Agile за 15 минут с картинками
— закон Хофштадтера
Самый просматриваемый ролик на YouTube по теме agile. 744 625 просмотров на момент публикации данной статьи. Легкий стиль изложения, картинки и всего 15 минут — лучшее что я видел. TED отдыхает.
PUSH-авторизация в сервисах с помощью мобильного приложения
Мы рады представить сообществу сервис PushAuth, который позволяет Вашим клиентам авторизироваться с помощью PUSH-сообщений на мобильном устройстве!
Эта идея не новая и многие компании в своих приложениях уже используют эту технологию. Всё выглядит достаточно просто, пока не рассматриваешь вопросы: безопасности, менеджмента устройств и клиентов, совместимости и комфортной работы.
Dagger2 и архитектурный компонент «ViewModel»
ViewModel — это компонент из набора библиотек под названием Android Architecture Components, которые были представлены на Google I/O 2017. ViewModel — предназначена для хранения и управления данными связанных с представлением, а также с возможностью “пережить” пересоздание активити (например переворот экрана).
На Хабре уже была хорошая статья посвящена ViewModel, где можно ознакомится с данной темой более детально.
В данной статье будет рассмотрены варианты инжекта(предоставление) зависимостей в компонент ViewModel
с использованием Dagger 2. Проблема заключается в том, что получение ViewModel должно осуществляться специальным образом, что в свою очередь накладывает некоторые ограничения, которые связанные с предоставлением зависимостей в сам класс ViewModel
, а также предоставление ViewModel
в качестве зависимости. Данная статья также возможно будет интересна тем, кто интересуется практическим применением такой функциональности Dagger, как multibinding.
Избавляемся от рутины RecyclerView.Adapter с помощью DataBinding
RecyclerView — основной UI элемент практически любого приложения. Написание адаптеров и ViewHolder'ов зачастую слишком рутинная работа и содержит достаточно boilerplate кода. В этой статье я хочу показать как с использованием DataBinding и паттерна MVVM можно написать абстрактный адаптер и напрочь забыть про ViewHolder'ы, inflate, ручной биндинг и прочую рутину.
Избавляемся от библиотек сохранения состояния фрагмента с помощью чистого kotlin
Android библиотеки вспомогательной кодогенерации, такие как Android Annotations или мой любимый Icepick, которые разработчики привыкли использовать для упрощения написания, не готовы были сразу подружиться с Kotlin-кодом, так как большинство из них требует держать поля с модификатором package private. Конечно, ничего страшного писать
@JvmField @State
internal var carName: String? = null
вместо
@State String carName;
Но лучше вспомнить, что Kotlin к нам пришёл для упрощением кода, а не наоборот.
ReactiveX 2.0 с примерами, или грокаем реактивное программирование 2.0. Часть 1: Observable vs Flowable, Backpressure
Привет, меня зовут Алексей. Я пишу Backend'ы на Kotlin, а также занимаюсь разработкой Android приложений. Продолжительное время я страдал: мучался с CallBack Hell'ом, императивным стилем, синхронизацией потоков и прочими классическими проблемами Java на Android. Это была огромная боль. И я начал искать какое-то решение, чтобы как-то избавится от этой боли. И приходит счастливый случай — я встречаю нарастающий хайп по RxJava. Попробовав, не могу остановиться по сей день. На момент написания данной статьи, релизнулась RxJava 2.0 и появилось стойкое желание разобраться в нововведениях. На официальном источнике, в Github Wiki, появилась глава RxJava 2.0: What's different in 2.0. Но, к сожалению, я не обладатель "беглого" английского, и чтение настолько важной доки заняло время. Накопились некоторые заметки, появился концепт, которым я хочу поделиться. Но чтобы не стать "Арт-директором Арт-пространства" и не принести банальный перевод, а какой-то профит, данная статья будет смесь туториала и перевода вики, приправленное реальными примерами юзкейсов на RxKotlin.
Так как подходы к разработке Web и Android приложений отличаются, как соответственно и контекст использования Rx, разговор буду вести в контексте Android разработки. Кого заинтересовал, прошу под кат.
Android string.xml — несколько вещей, которые стоит помнить
Доброго времени суток! Представляю вашему вниманию вольный перевод статьи от GDE (Google developer expert) Dmytro Danylyk. Собственно, вот оригинал. Статья описывает правильные подходы для работы со strings.xml и особенно полезно это будет разработчикам, которые разрабатывают мультиязыковые приложения. Прошу под кат.
Dagger 2.11 & Android
В данной статье рассматривается использование специализированного модуля Dagger 2 под android и подразумевается, что у вас есть наличие базовых знаний по Dagger 2.
В Dagger 2.10 был представлен новый модуль специально для Android. Данный модуль поставляется как дополнение, состоящий из дополнительной библиотеки и компилятора.
В версии 2.11 были некоторые небольшие изменения, в частности некоторые классы, были переименованы, поэтому будет использоваться именно эта версия.
Шпаргалка или Must have для андроид разработчика
Итак, начнем.
Butterknife
Библиотека была разработана компанией Square и сразу же прижилась у разработчиков. ButterKnife был создан на замену
findViewById
для того чтобы уменьшить и без того раздутые activity
: View someView = (View) findViewById(R.id.someView)
Вы только посмотрите какая длинная строка! А если это поле класса — то это целых две строки:
View someView; //Первая строка
...
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
someView = (View) findViewById(R.id.someView); //Вторая строка
}
А теперь перейдем к ButterKnife. Вот простой пример кода с ButterKnife:
@BindView(R.id.someView1) View view1;
@BindView(R.id.someView2) View view2;
@BindView(R.id.someView3) View view3;
...
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.bind(this); //Важная строка
}
Все очень просто: с помощью аннотации
@BindView
мы говорим какая вьюха нам нужна, и потом главное не забыть про ButterKnife.bind(this);
(Так делать нужно в активити, для других мест вроде holder или fragment это делают немного по-другому. Смотрите здесь. Как добавить к проекту?
Dagger 2.11 & Android. Часть 2
В предыдущей статье мы рассмотрели, как мы можем использовать специальный модуль dagger-android для предоставления зависимостей в активити и фрагменты, а также организацию разных скоупов.
В данной статье мы рассмотрим составляющие модуля, рассмотрим предоставление зависимостей в другие базовые компоненты андроида, а также рассмотрим варианты предоставления зависимостей с динамическими параметрами.
Модуль dagger-android позволяет заинжектить зависимости в следующие базовые компоненты андроида:
Activity, Fragment, Service, DaggerIntentService, BroadcastReceiver, ContentProvider.
Если мы используем классы из библиотеки поддержки (например AppCompatActivity, android.support.v4.app.Fragment
), то нам надо использовать соответствующие классы из дополнительной даггер библиотеки поддержки (dagger-android-support).
Итоги отбора в школу Android-разработчиков в Казани
Больше чем два месяца назад мы анонсировали отбор в школу Android-разработчиков в Казани. За это время мы получили 575 заявок на участие и 70 выполненных тестовых заданий (невероятная цифра с учетом того, что задание было непростым, а почти 40% из тех, кто подавал заявку, вообще не имели опыта в разработке для Android).
К сожалению, у этой популярности есть и обратная сторона — мы не смогли взять многих участников, которые выполнили тестовое задание на хорошем уровне и справились бы с обучением в школе. Конкуренция оказалась очень высока, и мы с большим удовольствием поздравляем тех, кто
Переезд IT-шника в Германию: от А до Я
В этом посте я хочу подробно рассказать о моём опыте переезда на работу PHP-разработчиком в Германию — от момента, когда есть просто желание переехать, но не знаешь что и как делать, до момента, когда уже переехал, вселился в квартиру и получил вид на жительство. Кроме того, в конце поста я приведу немного полезной информации и ссылок по переезду в некоторые другие страны.
Ещё с универа я понимал, что в Украине ловить нечего и надо валить. В течение нескольких лет я исследовал вопрос эмиграции: читал блоги, форумы, сообщества, общался с друзьями и знакомыми, которые могли мне рассказать что-то новое и, естественно, за это время, учитывая и сам переезд, у меня накопился определённый багаж информации, которым и хочется поделиться.
Итак, если вы имеете IT-шное образование и вам интересна идея сваливания из печальной пост-совковой реальности, прошу под кат.
Room: Хранение данных на Android для всех и каждого
Room — это новый способ сохранить данные приложений в Android-приложении, представленный в этом году на Google I/O. Это часть новойAndroid Architecture, группа библиотек от Google, которые поддерживают уместную архитектуру приложений. Room предлагается в качестве альтернативы Realm, ORMLite, GreenDao и многим другим.
Room — это высокоуровневый интерфейс для низкоуровневых привязок SQLite, встроенных в Android, о которых вы можете узнать больше в документации. Он выполняет большую часть своей работы во время компиляции, создавая API-интерфейс поверх встроенного SQLite API, поэтому вам не нужно работать с Cursor или ContentResolver.
Планирование задач в Андроид
Привет Хабр! Предлагаю вашему вниманию свободный перевод статьи «Schedule tasks and jobs intelligently in Android» от Ankit Sinhal.
В современной разработке приложений очень часто выполняются задачи асинхронно, и их объем выходит за пределы жизненного цикла приложения. В некоторых ситуациях мы также должны выполнять некоторые работы, но это не обязательно делать прямо сейчас. Чтобы запланировать фоновые работы, Android представила несколько API, которые мы можем грамотно использовать в наших приложениях.
Information
- Rating
- Does not participate
- Registered
- Activity