Как стать автором
Обновить
0
0

Пользователь

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

[По докам] Flutter. Часть 1. Для Android разработчиков

Время на прочтение25 мин
Количество просмотров41K
Про Flutter написано уже много статей. С каждым месяцем он становится всё популярнее. Поэтому я решил интерпретировать официальную документацию Flutter в лаконичный формат «вопрос — ответ». Думаю, многие, как и я, не имеют достаточно свободного времени для подробного изучения документации фреймворка, с которым они ещё не работают.

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


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

Синхронизация в Android приложениях. Часть первая

Время на прочтение6 мин
Количество просмотров63K
image
На дворе 2014 год, доля Android JellyBean перевалила за 60%, появились новые тренды в дизайне. В общем, случилось много всего интересного. Но синхронизация данных с сервером осталось неотъемлемой частью большинства приложений. Существует много способов реализации ее в приложении. Android предоставляет нам SyncAdapter Framework, который позволяет автоматизировать и координировать этот процесс и предоставляет множество плюшек в довесок.

Account


Для начала нам потребуется собственный аккаунт на устройстве. Сначала, я думаю, стоит ответить на вопрос, зачем? Действительно, зачем?

Краткое резюме преимуществ:
  • Поддержка фоновых механизмов вроде SyncAdapter
  • Стандартизация способа авторизации
  • Поддержка различных токенов (прав доступа)
  • Шаринг аккаунта с разграничением привилегий (возможность использовать один аккаунт для различных приложений, как это делает Google)

Шаги для получения плюшек:
1) Создание Authenticator'а
2) Создание Activity для логина
3) Создание сервиса для общения с нашим аккаунтом

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

Исследуем RxJava 2 для Android

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

enter image description here


Меня зовут Аркадий, я Android-разработчик в Badoo. В последнее время в нашем блоге много постов про Go, PHP, JS, QA, и я решил разбавить их темами по мобильной разработке. Как раз занимался портированием одного Android-проекта с RxJava 1 на RxJava 2 и читал всё, что можно найти на эту тему в интернете. В частности, доклад Джейка Вортона с конференции GOTO Copenhagen 2016. Мне показалось, что это достойный кандидат на перевод – думаю, многие Android-разработчики задумываются о переходе на RxJava 2, и им интересно, что изменилось по сравнению с первой версией.


Джейк сделал достаточно объёмное введение о реактивном программировании, так что знание RxJava 1 не требуется для понимания статьи. Доклад был подготовлен, когда RxJava2 ещё только готовилась к выпуску (на текущий момент уже выпущена версия 2.1.0).

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

Android Jetpack: превращаем приложения в ракеты

Время на прочтение11 мин
Количество просмотров14K
Война… Война никогда не меняется. Так, война за красивый и работающий код идет постоянно. И на каждую сложную задачу рождается свое оружие: кто-то делает его под себя, а кто-то пользуется готовыми инструментами. Разработка под Android не исключение. На нашей конференции AppsConf 2018 мы обсудим, как и чем сейчас интереснее всего пользоваться, где можно споткнуться и что интересного есть в огромном арсенале средств разработки, который Google наконец начал приводить в порядок. Основные темы докладов можно посмотреть на нашем сайте, а пока мы попросили рассказать Google Developer Expert Дениса Неклюдова и Александра Смирнова о новом инструментарии Android Jetpack, который был представлен в мае этого года.


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

Интересности и полезности python

Время на прочтение6 мин
Количество просмотров40K
Я уже несколько лет программирую на python, однако, недавно осознал, что множество полезных приёмов и интересных моментов прошли мимо меня, возможно, я не один такой, поэтому решил перечислить их здесь, надеюсь, данные приёмы пригодятся кому-то в работе или побудят познакомиться с этим языком поближе.
Читать дальше →
Всего голосов 53: ↑49 и ↓4+45
Комментарии44

Как подготовиться к собеседованию в Google и не пройти его. Дважды

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


Заголовок статьи звучит как epic fail, но на самом деле все не так однозначно. Да и в общем и целом эта история закончилась весьма позитивно, хоть и не в Google. Но это уже тема для другой статьи. В этой же статье я расскажу о трех вещах: каким образом проходил мой процесс подготовки, каким образом проходили интервью в Google и почему же на мой взгляд все не так однозначно, как может показаться.
Кому интересно, прошу под кат.
Всего голосов 178: ↑174 и ↓4+170
Комментарии457

Шпаргалка для технического собеседования

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


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

Читать дальше →
Всего голосов 81: ↑68 и ↓13+55
Комментарии85

Поиск работы в США: «Силиконовая Долина»

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


Решил обобщить свой более чем десятилетний опыт поиска работы в США на рынке ИТ. Так или иначе вопрос довольно злободневный и часто обсуждаемый в русском зарубежье.
Читать дальше →
Всего голосов 25: ↑22 и ↓3+19
Комментарии26

Шпаргалка по шаблонам проектирования

Время на прочтение2 мин
Количество просмотров1.4M

Перевод pdf файла с сайта http://www.mcdonaldland.info/ с описанием 23-х шаблонов проектирования GOF. Каждый пункт содержит [очень] короткое описание паттерна и UML-диаграмму. Сама шпаргалка доступна в pdf, в виде двух png файлов (как в оригинале), и в виде 23-х отдельных частей изображений. Для самых нетерпеливых — все файлы в конце статьи.

Под катом — много картинок.

Читать дальше →
Всего голосов 192: ↑179 и ↓13+166
Комментарии66

Ещё раз про семь основных методологий разработки

Время на прочтение8 мин
Количество просмотров975K
Разработка программного продукта знает много достойных методологий — иначе говоря, устоявшихся best practices. Выбор зависит от специфики проекта, системы бюджетирования, субъективных предпочтений и даже темперамента руководителя. В статье описаны методологии, с которыми мы регулярно сталкиваемся в Эдисоне.


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

Не путайте разработку ПО и программирование

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

Каждый разработчик ПО умеет программировать, но не каждый программист может разрабатывать ПО



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

Возможно, кому-то больше нравится говорить не «разработчик», а инженер-программист, ведь инженер — это звучит гордо! Или нет? К счастью, эта статья не о терминах. Если мой термин вам не нравится — подставьте свой: «автор ПО», «мастер ПО»… и даже «творец приложений»!

Говоря «разработчик ПО», я имею в виду человека, для которого написание качественного ПО — профессия. Человека, который использует в своей работе научные подходы и статистику и считает свое занятие чем-то большим, чем просто зарабатывание денег.

Чтобы стать разработчиком, уметь программировать недостаточно.

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

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

Хотите еще аналогий? Пожалуйста:

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

Главная задача этого текста — донести, что создание простых программ серьезно отличается от разработки ПО.

Переведено в Alconost
Читать дальше →
Всего голосов 58: ↑40 и ↓18+22
Комментарии107

Сохранение состояния фрагментов (Fragment)

Время на прочтение4 мин
Количество просмотров57K
Распространенной проблемой является некорректное поведение приложения при повороте девайса. Дело в том что при повороте Activity-host (Activity которое является родителем для фрагмента) уничтожается. В тот момент когда этот процесс происходит FragmentManager отвечает за уничтожение дочернего фрагмента. FragmentManager запускает методы угасающего жизненного цикла фрагмента: onPause(), onStop() и onDestroy().

В случае если в контроллере нашего дочернего фрагмента, к примеру, есть объект Media-Player, то в методе фрагмента Fragment.onDestroy() экземпляр нашего звонко играющего Media-Player-а прервет воспроизведение медиа данных. Первое, что приходит в голову, сохранить состояние объекта Media-Player вызвав Fragment.onSaveInstanceState(Bundle), что сохранит данные, а новое Activity загрузит их. Однако, сохранение состояния объекта MediaPlayer и его последующее восстановление, все равно, прерывает воспроизведение и заставляет акул ненависти сновать в головах пользователей.
Читать дальше →
Всего голосов 10: ↑10 и ↓0+10
Комментарии16

Добро пожаловать в эру глубокой нейроэволюции

Время на прочтение10 мин
Количество просмотров20K
image

От имени команды Uber AI Labs, которая также включает Joel Lehman, Jay Chen, Edoardo Conti, Vashisht Madhavan, Felipe Petroski Such и Xingwen Zhang.

В области обучения глубоких нейронных сетей (DNN) с большим количеством слоев и миллионами соединений, для тренировки, как правило, применяется стохастический градиентный спуск (SGD). Многие полагают, что способность SGD эффективно вычислять градиенты является исключительной особенностью. Однако мы публикуем набор из пяти статей в поддержку нейроэволюции, когда нейронные сети оптимизируются с помощью эволюционных алгоритмов. Данный метод также является эффективным при обучении глубоких нейронных сетей для задач обучения с подкреплением (RL). Uber имеет множество областей, где машинное обучение может улучшить его работу, а разработка широкого спектра мощных подходов к обучению (включая нейроэволюцию), поможет разработать более безопасные и надежные транспортные решения.
Читать дальше →
Всего голосов 33: ↑31 и ↓2+29
Комментарии3

Шпаргалка или Must have для андроид разработчика

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

Итак, начнем.

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 это делают немного по-другому. Смотрите здесь.

Как добавить к проекту?
Читать дальше →
Всего голосов 16: ↑12 и ↓4+8
Комментарии41

Пишем тактическую игру про цифры под Android

Время на прочтение21 мин
Количество просмотров24K
Когда я только взялся за программирование (3 месяца назад), я быстро понял, что лучше сразу начинать заниматься своими проектами. Невозможно с утра до вечера сидеть за книгами или курсами, но если вы начнете делать что-то свое, то запросто просидите за разработкой с утра до утра.

Эта статья — небольшой туториал по тому, как сделать логическую игру с ботом. Игра будет выглядеть вот так:


*Подробно опишу правила еще раз в разделе про ИИ.

Читателей статьи условно разделяю на три группы.
  1. Начали программировать несколько часов назад.
    Вам будет сложно, лучше предварительно пройдите какой-нибудь небольшой курс по введению в Android-разработку, разберитесь с двумерными массивами и интерфейсами. А потом загрузите проект с гитхаба. Комментарии и эта статья помогут вам разобраться, что и как работает.
  2. Уже умеете программировать, но еще не можете назвать себя опытными.
    Вам будет интересно, потому что вы очень быстро сможете сделать свою игру. Я взял на себя грязную работенку по построению логики игры и ui-составляющей, вам же оставляю творческую часть. Вы можете сделать другой режим игры (2 на 2, онлайн и т.п.), изменить алгоритмы бота, создать уровни и т.д.
  3. Опытные.
    Вам может быть интересно подумать над ИИ — написать его не так легко, как кажется на первый взгляд. Так же я был бы очень рад получить от вас замечания по коду — уверен, далеко не все я сделал оптимально.

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

Delegate Adapter — зачем и как

Время на прочтение11 мин
Количество просмотров33K
Практически во всех проектах, которыми я занимался, приходилось отображать список элементов (ленту), и эти элементы были разного типа. Часто задача решалась внутри главного адаптера, определяя тип элемента через instanceOf в getItemViewType(). Когда в ленте 2 или 3 типа, кажется, что такой подход себя оправдывает… Или нет? Что, если завтра придет требование ввести еще несколько типов да еще и по какой-то замысловатой логике?



В статье хочу показать, как паттерн DelegateAdapter позволяет решить эту проблему. Знакомым с паттерном может быть интересно посмотреть реализацию на Kotlin с использованием LayoutContainer.
Читать дальше →
Всего голосов 7: ↑7 и ↓0+7
Комментарии5

Гибкая методология для мобильной разработки

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

Agile development is especially useful for mobile app development. The agile methodology provides our clients with a continuous feedback loop. Sourcebits mobile app design and development clients see milestones every 2-3 weeks. They aren’t left to wait until the very end of the project. Agile development for mobile apps means clients provide feedback every step of the way to ensure the success of the project. – Joe Chen, CTO, Sourcebits
Читать дальше →
Всего голосов 16: ↑11 и ↓5+6
Комментарии0

Разработка мобильных приложений: с чего начать

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


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

Читать дальше →
Всего голосов 89: ↑72 и ↓17+55
Комментарии31

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

Время на прочтение7 мин
Количество просмотров15K
В этой статье мы хотим представить вам конспект с выступления Джоржа Фэна — создателя Plants vs Zombies, любителя стейков сильной прожарки и редких карт Magic: The Gathering.

Джордж весело и конструктивно описывает процесс создания и интеграции туториала для своей игры. А универсальность и простоту обучения подтверждает рассказом о том, как его мама, до этого не сталкивавшаяся с видеоиграми, прошла всю Plants vs. Zombies и победила последнего босса. Основной посыл Джорджа таков: люди любят учиться, но не всегда об этом знают. А при первом знакомстве с игрой именно туториал является определяющим фактором того, станет ли пользователь играть и получать удовольствие от геймплея, или в ужасе закроет игру и с воплями убежит в горизонт.


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

Моя небольшая история разработки и публикации мобильных игр

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

Отступление


Приблизительно полтора года назад, просматривая очередной выпуск «Видеомании», я услышал о движке Unity3D. До этого никогда глубоко не интересовался подобными вещами и считал процесс разработки для меня сложным. В тоже время детская мечта создавать игры, как и любовь к ним, ещё не угасла. Я нажал на паузу и загуглил «unity3d»… Установив Unity и поняв основные принципы работы движка, я очень обрадовался сразу нескольким вещам: простота в освоении, мульти-платформенность, подробная и понятная документация и живой форум (с английским благо всё в порядке), наличие магазина дополнений и free лицензии. В дальнейшем я пробовал и другие движки, но предпочтение моё всё же не поменялось. Выбирая платформы, я остановился на мобильных и, в частности, на Android. Ничего яблочного у меня не было. К тому моменту лицензия для Android стоила 400 долларов. Но, пока я спешно проходил видео курс по основам ООП программирования и Java (небольшой опыт в php был), ребята из Unity решили дать возможность разработчикам делать игры для Android и iOS совершенно бесплатно, за что им большое спасибо.

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

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

Далее рассказ продолжается в хронологическом порядке выхода игр и разбит на одноимённые главы, с приведением статистики, методах продвижения и прочего.
Читать дальше →
Всего голосов 48: ↑45 и ↓3+42
Комментарии10

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность