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

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

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

CannyViewAnimator: переключаем состояния красиво

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

Всем привет! Мне очень нравится работать с анимациями — в каждом Android-приложении, в создании которого я участвую или на которое просто смотрю, я нашёл бы место парочке. В не таком ещё далёком апреле 2016 года с моей записи про тип классов Animation начал жить блог компании Лайв Тайпинг, а позже я выступил с докладом об анимациях на очередном омском IT-субботнике. В этой статье я хочу познакомить вас с нашей библиотекой CannyViewAnimator, а также погрузить вас в процесс её разработки. Она нужна для красивого переключения видимости View. Если вам интересна библиотека, или история её создания, ну или хотя бы интересны проблемы, с которыми я столкнулся, и их решения, то добро пожаловать в статью!


О чём вообще речь


Но сначала представим для наглядности ситуацию, банальную в Android-разработке. У вас есть экран, а на нём — список, который приходит от сервера. Пока прекрасные данные грузятся от прекрасного сервера, вы показываете лоадер; как только данные пришли, вы в них смотрите: если пусто — показываете заглушку, если нет — показываете, собственно, данные.
Как разрешить эту ситуацию на UI? Раньше, мы в Лайв Тайпинг пользовались следующим решением, которое когда-то подсмотрели в U2020, а затем перенесли в наш U2020 MVP — это BetterViewAnimator, View, который наследуется от ViewAnimator. Единственное, но важное отличие BetterViewAnimator от его предка — это умение работать с id ресурсов. Но он не идеален.


Что такое ViewAnimator?

ViewAnimator — это View, который наследуется от FrameLayout и у которого в конкретный момент времени виден только один из его child. Для переключения видимого child есть набор методов.


Важным минусом BetterViewAnimator является умение работать только с устаревшим AnimationFramework. И в этой ситуации приходит на помощь CannyViewAnimator. Он поддерживает работу с Animator и AppCompat Transition.
Ссылка на проект в Github


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

Безопасность Android-приложений. Лекция в Яндексе

Время на прочтение 10 мин
Количество просмотров 32K
Разработчик Дмитрий Лукьяненко, чью лекцию мы публикуем сегодня, не только является специалистом Яндекса, но и умеет проверять на прочность решения разработчиков других компаний. Это позволяет учиться на чужих ошибках — не исключая порой своих, конечно. В докладе Дмитрий поделится примерами Android-уязвимостей, в том числе найденных им собственноручно. Каждый пример сопровождается рекомендациями — как нужно и как не нужно писать приложения под Android.



Меня зовут Дмитрий, я работаю в компании Яндекс в минском офисе, занимаюсь разработкой аккаунт-менеджера. Это библиотека, которая отвечает за авторизацию пользователей. Поэтому мы поговорим о безопасности Android-приложений.
Всего голосов 68: ↑68 и ↓0 +68
Комментарии 14

Видео лучших докладов Java-конференции JPoint 2015 — Часть 2

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


Как многие из вас знают, в конце апреля в Москве JUG.ru проведет четвертую по счету конференцию JPoint. Любителей окунуться в океан Java-технологий ждут два увлекательных дня с морем общения и кучей докладов. Месяц назад я начал рассказывать о лучших докладах прошлогодней JPoint. Сегодня пришло время второй части.

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

Top 5 докладов JPoint 2015
Всего голосов 21: ↑20 и ↓1 +19
Комментарии 18

Material Design. Динамический Toolbar на живом примере

Время на прочтение 6 мин
Количество просмотров 151K
Уверен, что те, кто следят за изменениями в мире Android, заметили, что Toolbar начинает играть в приложениях всё более значимую роль. Например в последней версии Gmail клиента в Toolbar вынесен почти весь функционал по работе с почтой, а в новом Google Chrome Toolbar отвечает за работу с текстом страниц.

В данной статье я постараюсь рассказать о создании динамического Toolbar, который позволит пользователю работать с контентом четырьмя различными способами в рамках одного Activity. Мы рассмотрим весь процесс разработки Toolbar-a начиная с xml файлов стилей и заканчивая анимацией иконок, а в конце статьи я оставлю ссылку на GitHub репозиторий с примером полностью рабочего приложения.
Читать дальше →
Всего голосов 17: ↑17 и ↓0 +17
Комментарии 4

Десятое исследование Developer Economics

Время на прочтение 1 мин
Количество просмотров 5.7K
Developer Economics — это самое большое в мире исследование, посвященное мировым трендам в области экономики приложений и мобильной разработки. Основано оно на опросе разработчиков и компаний, который проводит британская компания VisionMobile раз в полгода.

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

Floating toolbar for text selection в Android Marshmallow: разбор нововведения

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

В Andriod при выделении текста появляется меню с действиями, которые можно выполнить: «Вырезать», «Скопировать», «Отправить». В Android Marshmallow (SDK 23) появилась возможность расширять это меню и давать пользователю легкий доступ к дополнительным возможностям при работе с текстом: «Перевести», «Прокомментировать», «Процитировать».

В процессе подготовке к выступлению на конференции GDG в Нижнем Новгороде я обнаружил, что эта новая возможность крайне плохо документирована, единственная доступная статья не во всем соответствует действительности, и в сети находится исчезающе мало примеров использования этой возможности. Пришлось разбираться самому. Результатами проведенного исследования и хочу поделиться. Это может сэкономить вам достаточно много времени.
Читать дальше →
Всего голосов 12: ↑12 и ↓0 +12
Комментарии 2

Разработка собственного решения: риски и ответственность

Время на прочтение 11 мин
Количество просмотров 15K
Привет, Хабр! В этой статье речь пойдет о том, как мы в компании Mail.Ru Group подходим к написанию кода; когда использовать готовые решения, а когда лучше писать самим; ну, а самое главное — какие шаги нужно сделать, чтобы ваша работа не оказалась безрезультатной и принесла пользу окружающим. Все эти нюансы будут рассмотрены на примере задачи создания нашей внутренней JSSDK, которая возникла из-за необходимости объединения кодовой базы двух проектов.


Иллюстрация Michael Parkes
Продолжить
Всего голосов 39: ↑38 и ↓1 +37
Комментарии 22

Достаточно Git-а, чтобы быть (менее) опасным

Время на прочтение 23 мин
Количество просмотров 131K
imageТы просто-напросто ненавидишь Git? Ты абсолютно счастлив с Mercurial (или, фу, с Subversion), но раз в месяц тебе приходится отважно сталкиваться с Git, потому что каждый, даже его чертова собака, теперь использует GitHub? Тебя терзают смутные подозрения, что половина всех команд Git на самом деле удалят всю твою работу навсегда, но ты не знаешь какие именно и не хочешь проводить три недели, углубляясь в документацию?

Хорошие новости! Я написал тебе этот изумительный Интернет-пост. Я надеюсь, что смогу размазать достаточно Git-а по твоему лицу, чтобы понизить вероятность сделать что-то непоправимое, а так же уменьшить твой страх что-то сломать. Этого должно быть также достаточно, чтобы сделать документацию Git немного более понятной; она крайне тщательно и глубоко проработана и очень глупо, если ты все еще не прочитал половину.

Я постараюсь излагать коротко, но также, чтобы это было потенциально полезно тем людям, кто вообще никогда не сталкивался с контролем версий, поэтому повсюду будет разбросан 101 совет. Не бойся! Я не думаю, что пользователи Mercurial понятия не имеют, что такое патч.
Но подожди! Там еще...
Всего голосов 131: ↑103 и ↓28 +75
Комментарии 365

Рецепты под Андроид: Selectable соус для LayoutManager'a

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



Нас тоже не обошла стороной эта тема, и в одном из приложений нам пришлось потрудиться, чтобы сделать как можно более удобную функцию выделения и копирования текста. Секретом этого рецепта мы и хотим поделиться с общественностью.
Читать дальше →
Всего голосов 20: ↑20 и ↓0 +20
Комментарии 1

Обучаем сотрудников английскому: опыт Edison

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

«Moving from the one-room schoolhouse to the one-world schoolhouse is now a reality» (Cisco Systems)


«One-room schoolhouse» — это американская сельская школа времен Марка Твена; в такой учился ещё Том Сойер — формат обучения, который до сих пор знаком каждому, кто ходил на какие-либо курсы, включая обучение английскому. Не слишком-то прогрессивно для мира облачных сервисов и глобальных видеоконференций?


Мы учились английскому у этого парня
Читать дальше →
Всего голосов 31: ↑23 и ↓8 +15
Комментарии 21

Ваш успех как программиста зависит только от вас

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

Этот парень не имел в виду ничего плохого, но всё же вывел меня из себя. Во-первых, если программист старше по возрасту, это еще не значит, что он пользуется устаревшими программами (и если кто-то молодой, это не значит, что он пользуется новейшими продуктами в области программирования). Вот что я вынес из этого комментария: заниматься своим образованием и изучать новейшие подходы является вашей ответственностью, и никак не вашего работодателя.
Читать дальше →
Всего голосов 65: ↑57 и ↓8 +49
Комментарии 27

Рецепты под Android: Как вкусно приготовить LayoutManager

Время на прочтение 16 мин
Количество просмотров 48K
Привет хабр!

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


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

Секреты алгоритма ценообразования Airbnb

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


Какую бы вы назначили цену за проживание незнакомцев в вашем доме? Или сколько вы сами заплатили бы за то, чтобы пожить у кого–то? Вы заплатили бы больше или меньше, будь это спланированный отпуск или спонтанная поездка?
Не так просто ответить на все эти вопросы. В своё время мы столкнулись с тем, что заставляя арендодателей и пользователей отвечать на них, мы тем самым уменьшали активную базу данных жилья. Собирая фокус–группы мы наблюдали за тем, как люди вносят своё жильё в список доступных для аренды мест на нашем портале. И большинство застревали, когда нужно было назначить стоимость. Многие начинали смотреть, какие цены установлены на жильё поблизости, открывая в браузере кучу вкладок и пытаясь сравнивать своё предложение с аналогичными. Кто–то уже приходил, имея определённую цель, может быть, чтобы немного заработать на оплату ипотеки или оплату отпуска. Такие люди устанавливали цену исходя из своих заранее обдуманных целей, без учёта реальной ситуации на рынке. А некоторые, к сожалению, просто сдавались и не указывали стоимость аренды их жилья.

Мы пришли к выводу, что нужно предложить арендодателям удобный автоматизированный сервис, помогающий принять решение при назначении стоимости аренды. Разработка началась в 2012 году, и мы до сих пор его периодически дорабатываем. Этим летом мы внедрили динамическое ценообразование: ориентировочные цены пересчитываются ежедневно, исходя из текущей рыночной ситуации. Мы настроили алгоритм так, чтобы он учитывал наличие необычных, даже удивительных свойств выставляемого жилья. Также мы внедрили, уникальный, как мы считаем, механизм машинного обучения, позволяющий системе не только обучаться на своём опыте, но и, при необходимости, использовать небольшую толику «человеческой» интуиции.
Читать дальше →
Всего голосов 29: ↑27 и ↓2 +25
Комментарии 15

Обзор Intent Sender плагина к Android Studio и отдельных особенностей его разработки

Время на прочтение 7 мин
Количество просмотров 8.7K
При разработке Android приложений зачастую приходится прибегать к помощи adb для оптимизации своей работы и экономии времени. Adb является единственным инструментом, позволяющим, к примеру, миновать длинную цепочку activity и запустить сразу нужную или отправить broadcast сообщение без ожидания выполнения каких-либо внешних условий. Использование adb влечет за собой все неудобства применения терминала для формирования длинных команд, что и привело меня к написанию плагина для ускорения и упрощения работы с adb при отправке intent на устройства.
Читать дальше →
Всего голосов 18: ↑18 и ↓0 +18
Комментарии 0

По стопам Meteor, или велосипедируем реактивность

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

Доброе время суток, хабраюзер! Сегодня мы попытаемся немного разобрать реактивность, которая лежит в основе одного из самых хипстерских фреймворков — Meteor.

Для начала приведем немного сухой теории из Википедии:
Реактивное программирование — парадигма программирования, ориентированная на потоки данных и распространение изменений. Это означает, что должна существовать возможность легко выражать статические и динамические потоки данных, а также то, что выполняемая модель должна автоматически распространять изменения сквозь поток данных.

К примеру, в императивном программировании присваивание a = b + c будет означать, что переменной a будет присвоен результат выполнения операции b + c, используя текущие (на момент вычисления) значения переменных. Позже значения переменных b и c могут быть изменены без какого-либо влияния на значение переменной a.

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

* велосипедируем — пишем свой велосипед, подглядывая на уже готовую реализацию.
Читать дальше →
Всего голосов 15: ↑12 и ↓3 +9
Комментарии 19

Самый простой и самый сложный Builder на Java

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


Один из часто рассматриваемых паттернов — паттерн Builder. В основном рассматриваются варианты реализации «классического» варианта этого паттерна:

MyClass my = MyClass.builder().first(1).second(2.0).third("3").build();

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

Итак, расссмотрим их:
Читать дальше →
Всего голосов 21: ↑20 и ↓1 +19
Комментарии 47

Игра на чистой Java от новичка, для новичков

Время на прочтение 9 мин
Количество просмотров 63K
Я начинающий программист на Java, и путь мой пройден тысячами.



Сначала идет долгий и мучительный выбор Самой Правильной Книги, затем первый восторг от работы перепечатанных из нее листингов программ. Затем осознание растущей крутости и профессионализма. Падение в яму собственного ничтожества, при попытке написать что-то самостоятельно. И долгий путь наверх.

В моем случае Самой Правильной Книгой стал двухтомник «Java. Библиотека профессионала.» за авторством Кея Хорстманна и Гари Корнелла, а самой первой книгой, которая открыла дверь в мир Java – Яков Файн «Программирование на Java для детей, родителей, дедушек и бабушек».

Чтобы закрепить пытающиеся разбежаться знания, которые упорно пытались остаться на страницах Умных Книжек, а не в голове, я решил написать простую игру. Основная задача была в том, чтобы писать без применения сторонних библиотек.
Читать дальше →
Всего голосов 28: ↑23 и ↓5 +18
Комментарии 17

Akka, акторы и реактивное программирование

Время на прочтение 10 мин
Количество просмотров 64K
Здравствуйте, уважаемые читатели.

Сегодня мы хотели поговорить с вами на тему «все новое — это хорошо забытое старое» и вспомнить об акторах, описанных Карлом Хьюиттом еще в начале 70-х. А все дело в том, что недавно вышла вот такая книга:



Она довольно объемная — в переводе должна получиться более 500 страниц.

Несмотря на подчеркнутую элитарность книги (Akka и Scala), ее автор Вон Вернон (крупнейший специалист по DDD) уверен, что архитектурные паттерны, описанные в этой работе, вполне реализуемы на .NET и C#, о чем рассказывает в приложении. Мы же размещаем под катом перевод статьи, автор которой допускает перенос акторной парадигмы на язык Java. Поскольку рейтинг книги на Amazon стабильно высок, а тема универсальна, просим поделиться вашими мнениями как о ней, так и об акторной архитектуре в принципе.
Читать дальше →
Всего голосов 14: ↑13 и ↓1 +12
Комментарии 23

Подпольный рынок кардеров. Перевод книги «KingPIN». Глава 9. «Возможности»

Время на прочтение 13 мин
Количество просмотров 17K
Кевин Поулсен, редактор журнала WIRED, а в детстве blackhat хакер Dark Dante, написал книгу про «одного своего знакомого».

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

Начало и план перевода тут: «Шкворень: школьники переводят книгу про хакеров».
Пролог
Глава 1. «The Key»
Глава 3. «The Hungry Programmers»
Глава 5. «Cyberwar!»
Глава 6. «I miss crime»
Глава 8. «Welcome to America»
Глава 34. DarkMarket
(публикуем по мере готовности переводов)

Логика выбора книги для работы со школьниками у меня следующая:
  • книг про хакеров на русском языке мало (полторы)
  • книг про кардинг на русском нет вообще (UPD нашлась одна)
  • Кевин Поулсен — редактор WIRED, не глупый товарищ, авторитетный
  • приобщить молодежь к переводу и творчеству на Хабре и получить обратную связь от старших
  • работать в спайке школьники-студенты-специалисты очень эффективно для обучения и показывает значимость работы
  • текст не сильно хардкорный и доступен широкому кругу, но затрагивает вопросы информационной безопасности, уязвимости платежных систем, структуру кардингового подполья, базовые понятия инфраструктуры интернет
  • книга иллюстрирует, что «кормиться» на подпольных форумах — плохо заканчивается

Кто хочет помочь с переводом других глав пишите в личку magisterludi.

Глава 9. Возможности

(за перевод спасибо jellyprol)

Макс надел блейзер и помятые карго брюки на вынесение приговора и молча наблюдал как юристы начали судебные прения по его делу. Дженнифер Граник, адвокат защиты, сказала судье Джеймсу Вэру что Макс заслуживает смягчения приговора за свою работу в качестве эквалайзера. Прокурор выбрал противоположную точку зрения. Макс, как он утверждал, сделал вид будто он стал информатор ФБР, пока втайне совершал преступления против правительства США. Это было хуже чем если бы он никогда не сотрудничал с ними.
Читать дальше →
Всего голосов 15: ↑14 и ↓1 +13
Комментарии 2

Конкурс «Признайся в любви или напиши поэму на Ruby on Rails»

Время на прочтение 2 мин
Количество просмотров 5.8K
Привет!

В ближайшее время произойдёт сразу два события: 14 сентября в #tceh стартует образовательный курс «Врубаемся в Ruby» для тех, кто хочет научиться кодить с нуля, а 26 сентября все, кто уже знает и любит Ruby соберутся на главной российской RoR конференции RailsClub.

Чтобы это счастье подогреть, #tceh совместно с RailsClub предлагает поучаствовать в конкурсе. Цель — показать дивную красоту Ruby-кода. От участника требуется соединить своё поэтическое и кодерское «Я» — написать на Ruby признание в любви или поэму, воспевающую женскую красоту.

image

Победитель получит билеты на конференцию и бесплатное участие в образовательном курсе!

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

Информация

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