Как стать автором
Обновить
1
0
Красноголовец Михаил @Emigrate

Android dev

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

Тысяча и один UI-баг, или Как помочь разработчику избегать типовых ошибок в UI

Время на прочтение10 мин
Количество просмотров24K
Тестирование новых фич, казалось бы, очень творческий и интересный процесс. Но что делать, если ошибки в интерфейсах повторяются из фичи в фичу, а большая часть времени тратится на отлавливание мелких интерфейсных проблем? 



За четыре года работы в Badoo из более чем тысячи багов, которые я встретила, примерно 20% были связаны с UI и UX. Треть из них незначительны в масштабах продукта, но тем не менее требуют ресурсов на обработку, ведь они напрямую влияют на лояльность пользователя. Такие баги реально отловить только вручную. Плюс ко всему они часто встречаются только на определённых устройствах в определённых условиях.

Можно ли предотвратить эти баги ещё на этапе проектирования новой функциональности и избежать переработки интерфейсов после тестирования? Мой ответ — да! 

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

Зубы мудрости: удалить нельзя оставить

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

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

Издавна с восьмёрками (третьими молярами или «зубами мудрости») связано очень много анекдотов, суеверий, легенд и историй, в том числе весьма страшных. И распространена вся эта мифология не только среди обычных людей, но и в медицинском сообществе. Постепенно, в ходе обсуждения, я попробую их развенчать и показать, что зубы мудрости — не такая уж проблема, как в плане диагностики, так и в плане удаления. Тем более, если речь идёт о современном докторе и современной клинике.
Читать дальше →
Всего голосов 149: ↑142 и ↓7+135
Комментарии254

Фриланс или офис? Ответ фрилансера

Время на прочтение11 мин
Количество просмотров29K
Привет, я фрилансер по жизни. Меня часто спрашивают, почему я не реализовываю себя в офисе компании. Говорят, что удаленная работа в фирме — это некая золотая середина.



Сейчас я постараюсь ответить на все вопросы разом в виде некоего сравнения труда в офисе или как фрилансер. Ну что, вперед!
Всего голосов 36: ↑29 и ↓7+22
Комментарии117

Мой переезд в Норвегию

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


Я решил написать эту статью, потому что в интернете мало информации именно о переезде в Норвегию. Люди в основном описывают жизнь, процесс поиска работы и тому подобное. Ниже я постарался рассказать о подготовке документов, регистрации в стране, открытии банковского счёта, аренде квартиры и т.п. Надеюсь, это будет полезно.

Читать дальше →
Всего голосов 102: ↑95 и ↓7+88
Комментарии347

Лошадинная сила в Android или еще раз о RecyclerView.LayoutManager

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

По мнению автора, статья может быть полезна таким же как он начинающим Android-разработчикам, совершающим свои первые шаги в такой увлекательной области. История предмета этой заметки началась с идеи оснастить учебный проект так называемым “вау-эффектом”. Насколько это удалось, судить вам. Всех любопытствующих прошу под кат.
Читать дальше →
Всего голосов 14: ↑14 и ↓0+14
Комментарии0

Из Dribbble в Android Motion

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


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

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

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

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

ConstraintLayout


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


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

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

Использование отладчика Android Studio по максимуму

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

Использование отладчика Android Studio по максимуму


Это хитрость, о которой я узнал совсем недавно у Senior Android разработчика в моей компании, и теперь я чувствую себя несчастным, сожалея о времени, которое я провел в ожидании сборки Gradle, чтобы проверить свои изменения при написании Android приложений.

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

Как мы делали БелАЗ. Часть 3 – Пусконаладка на разрезе

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


Это третья статья из цикла о самосвале (первая, вторая). Теперь мы едем на карьер, устанавливать электрооборудование на машину и выезжать в первый рейс! Но, конечно же, так просто, с наскоку, ничего не ездит, и я расскажу про множество проблем с которыми мы столкнулись во время командировки. Хоть мы и испытали в прошлой статье все оборудование на лабораторном стенде, реальность бьет совсем с другой стороны. В этой статье будет много видео и фотографий!
Всего голосов 117: ↑117 и ↓0+117
Комментарии117

История бренда Sennheiser: свобода и визионерство

Время на прочтение5 мин
Количество просмотров15K
Sennheiser electronic GmbH & Co. KG — одна из самых известных компаний-производителей оборудования для записи, воспроизведения и трансляции звука.

«Перу» компании Sennheiser (которая, несмотря на изменившиеся рыночные условия, остается семейной) принадлежит множество технологий, которые мы сейчас считаем естественной составляющей нашей жизни. И речь не только о наушниках, по которым многие знают бренд сегодня — в свои ранние годы компания занималась разработкой измерительных приборов, микрофонов и систем для записи звука. Именно микрофоны Sennheiser мы сейчас видим, например, на многих архивных фотографиях мировых лидеров 60-70-х годов.

В истории Sennheiser было немало интересных и ярких моментов — сегодня мы вспоминаем их.

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

Делаем симпатичный виджет регулировки яркости

Время на прочтение6 мин
Количество просмотров9.7K
Давным давно у моей мамы на телефоне было приложение, которое позволяло изменить яркость экрана проведя пальцем по его левому краю. Мама к нему привыкла, а потом перешла на новый телефон и там уже то приложение из магазина исчезло. Собственно, не найдя аналогов, я решил написать его сам и подарить ей на день рождения. Пошаговое руководство по созданию и результат — в этой статье.
Читать дальше →
Всего голосов 17: ↑17 и ↓0+17
Комментарии32

Сравнение Google TPUv2 и Nvidia V100 на ResNet-50

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


Недавно Google добавила к списку облачных услуг Tensor Processing Unit v2 (TPUv2) — процессор, специально разработанный для ускорения глубокого обучения. Это второе поколение первого в мире общедоступного ускорителя глубокого обучения, который претендует на альтернативу графическим процессорам Nvidia. Недавно мы рассказывали о первых впечатлениях. Многие просили провести более детальное сравнение с графическими процессорами Nvidia V100.

Объективно и осмысленно сравнить ускорители глубокого обучения — нетривиальная задача. Но из-за будущей важности этой категории продуктов и отсутствия подробных сравнений мы чувствовали необходимость провести самостоятельные тесты. Сюда входит и учёт мнений потенциально противоположных сторон. Вот почему мы связались с инженерами Google и Nvidia — и предложили им прокомментировать черновик этой статьи. Чтобы гарантировать отсутствие предвзятости, мы пригласили также независимых экспертов. Благодаря этому получилось, насколько нам известно, самое полное на сегодняшний день сравнение TPUv2 и V100.
Читать дальше →
Всего голосов 35: ↑33 и ↓2+31
Комментарии5

Управление проектами машинного обучения с высокой ценой ошибки. Лекция в Яндексе

Время на прочтение13 мин
Количество просмотров16K
Модели машинного обучения нужно уметь не только разрабатывать, но и «продавать» заказчику. Если у него не будет понимания, почему предлагается именно такое решение, то всё закончится статьёй в журнале и выступлением на конференции. Директор компании Loginom Алексей Арустамов обращает внимание на ключевые моменты, которые важно отразить в описании модели. Это выступление прошло пару недель назад на конференции Яндекса из серии «Data & Science».


Если у вас цена ошибки маленькая, то вообще все равно, что там интерпретировать. Дали вы не ту рекомендацию — ну и бог с ней. В поиске что-то вывели — ну и ничего страшного. Но все меняется, когда речь идет о вещах, связанных с большими издержками, где цена ошибки очень большая. И тогда люди не очень любят доверять черному ящику. Это просто здравый смысл.
Всего голосов 41: ↑41 и ↓0+41
Комментарии4

Android-приложение поверх других приложений

Время на прочтение3 мин
Количество просмотров45K
В 2013-году Facebook выпустил функцию Chat Heads для своего мессенджера, который позволяет вести переписку, не открывая сам мессенджер путем нажатия на маленькое круглое окошко, которое всегда висит на дисплее даже поверх других приложений:

image

Facebook одним из первых продемонстрировал реализацию «Drawing over other apps». Данную возможность разработчики сейчас используют в различных типах приложений — от боковых смарт-меню до записи экрана. В этой статье, хочу продеменстрировать процесс написания приложения-поверх-других-приложений на примере «анти-шпионской» программы Khameleon.
Читать дальше →
Всего голосов 18: ↑14 и ↓4+10
Комментарии3

Замыкание в Java Script для непосвященных

Время на прочтение2 мин
Количество просмотров3.3K
У моих программистов была задача: в фото галерее при активном изображении подсвечивать thumbnail показываемого изображения. Задача вроде тривиальная, но вызвала у них некоторый затык при решении. Хочу сказать сразу, что владение JS было у них не на высоте.
Вообще мало людей по настоящему знающих этот язык и не путующий его с принципами работы DOM документа.

В чем же была проблема…
1. В том, что сначала они решали её рекурсией :)
2. Вторая попытка решить привела к введению глобальной переменной, что я не считаю хорошим тоном
3. Загрязнение общего кода подобными маленькими функциями вместо использования объектного подхода

В бытности будучи программистом я написал маленький каркас для демонстрации. Вот он:

<script type=«text/javascript»>
          
          
function MainMenu(){
            
            var OldImage;

            this.getOldImage = function(){ return OldImage; }
            this.setOldImage = function( img ){ OldImage = img;}
            this.chgImage = function( obj, newImage){
              if(newImage != null){
                this.setOldImage(obj.src);
                obj.src = '/images/'+newImage;
              } else {
                obj.src = this.getOldImage();
              }
            }

}

var Menu = new MainMenu();

</script>
* This source code was highlighted with Source Code Highlighter.


Вызывать следует так:

<img src="/images/home.gif" width=«88» height=«23» alt="" onmouseover=«Menu.chgImage(this, 'home_over.gif')» onmouseout=«Menu.chgImage(this)»>* This source code was highlighted with Source Code Highlighter.


Что это нам дало:

1. Мы не используем рекурсию. Этим мы бережем ресурсы компьютера. У клиентских машин они же не резиновые вопреки обратным утверждениям
2. Мы не ввели глобальную переменную, которая в больших системах неудобна по объективням причинам
3. В третьих мы сделали универсальный объект. У него инкапсулированы данные!

Новичкам просьба разобраться и понять. Этот вариант сделан специально проще, чем мы реализовывали.

Мы создаем в теле функции локальную переменную. Затем захватываем эту переменную методом этой функции (это класс, точнее прототип). В итоге получаем хитрый трюк. При выходе из самой функции данные в ней запомнились.

Вообще-то по этому вопросу материала достаточно в сети. Этот трюк далеко не новый. Но о нем нужно напоминать «отцам» и учить новичков.
Всего голосов 37: ↑20 и ↓17+3
Комментарии41

VulnHub: Разбираем самый короткий квест DC416 Fortress

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


Продолжаем разбор CTF с конференции DefCon Toronto's. Задания предоставлены командой VulnHub, за что им огромное спасибо. На этот раз остановимся на небольшом DC416 Fortress, тут всего 3 флага. Так что будет не сложно.

Ниже, вы можете ознакомиться с предыдущими разборами:

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

Атака на оракула. Подробный гайд по векторам атак на Oracle DB

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


Сегодня я бы хотел поговорить о векторах атак на СУБД Oracle на разных стадиях: как прощупать слабые места базы снаружи, проникнуть и закрепиться внутри плюс как все это дело автоматизировать с помощью специализированного софта. Архитектура и возможности базы данных весьма интересны, занимательных моментов немало, а значит, немало и способов все испортить. Однако не забывай: ломать — не строить, поэтому вся дальнейшая информация предоставлена исключительно с целью выявить недочеты в защищенности тестируемых систем и повысить безопасность.
Читать дальше →
Всего голосов 21: ↑20 и ↓1+19
Комментарии5

Подсчитываем коллективный интеллект Хабра (и любой другой организованности людей)

Время на прочтение17 мин
Количество просмотров6.6K
Питер Хинченс (Pieter Hintjens), автор книги «Социальная Архитектура», на основе многолетнего опыта управлением open source сообществом предлагает свою систему оценки организованности.

image

Коллективный Индекс Интеллекта или КИИ (CII)


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

Для его демонстрации я ранжирую несколько сетей, организаций, сайтов и онлайн-сообществ. Это не наука, просто творческая и небрежная прикидка. Как всем известно, 87% статистики изобретается на месте, и 91% людей принимают это без вопросов. Я выбрал следующие жертвы:

  1. Википедия
  2. Твиттер
  3. Реддит
  4. Фейсбук
  5. Индустрия моды
  6. Нигерийский кинематограф, т.н. Нолливуд (Nollywood)
  7. Адвокаты как профессия
  8. Киноиндустрия Голливуда
  9. Сеть The Fox News
  10. Военные (в какой-то случайной восточной стране)

Я не буду судить о ценности отдельно взятого сообщества. Это невозможно, и будет обманчиво. Миссия Твиттера — «набрать больше подписчиков» — звучит слабее, чем у Википедии «собираем знания всего мира». Однажды сформированная, умная и гибкая толпа может запросто создавать новые миссии, например «свергнуть диктатора». Онлайн-сообщество, возможно, ценно (для человечества) не благодаря своей продукции, а само по себе. В случае Википедии или ZeroMQ сложно отделить толпу от контента. А в случае Твиттера это очевидно. Контент — явление преходящее и зачастую бесполезное, а толпа — нет.
Читать дальше →
Всего голосов 22: ↑20 и ↓2+18
Комментарии16

Грокаем* RxJava, часть первая: основы

Время на прочтение7 мин
Количество просмотров179K
* от переводчика: я долго думал над тем, как перевести на русский язык глагол «to grok». С одной стороны, это слово переводится как «понять» или «осознать», а с другой стороны, при переводе романа Роберта Хайнлайна «Чужак в чужой стране» (в котором это слово впервые и появилось на свет), переводчики сделали из него русское «грокать». Роман я не читал, поэтому счёл, что есть у этого слова какие-то смысловые оттенки, которые русскими аналогами не передавались, а посему в своём переводе использовал ту же самую кальку с английского.

RxJava — это, сейчас, одна из самых горячих тем для обсуждения у Android-программистов. Единственная проблема состоит в том, что понять самые её основы, если вы не сталкивались ни с чем подобным, может быть довольно затруднительно. Функциональное реактивное программирование довольно сложно понять, если вы пришли из императивного мира, но, как только вы разберётесь с ним, вы поймёте, насколько же это круто!
Я постараюсь дать вам некое общее представление об RxJava. Задача этого цикла статей состоит не в том, чтобы объяснить всё вплоть до последней запятой (вряд ли я смог бы это сделать), но, скорее в том, чтобы заинтересовать вас RxJava, и тем, как она работает.
Читать дальше →
Всего голосов 27: ↑24 и ↓3+21
Комментарии28

Майнера из Нью-Йорка заставили отключить оборудование из-за интерференции с сетью T-Mobile

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


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

Речь идет об интерференции в диапазоне 700 МГц. Пока что подобное произошло лишь в Бруклине, Нью-Йорк. Но прецедент создан и, вероятно, вскоре мы услышим о других подобных случаях. Оборудование, которое использовал майнер, не самодельное, это система Antminer S5 Bitcoin Miner. Она находится в свободной продаже, и если интерференция действительно имеет место быть, то кажется странным, что власти не обнаружили этого раньше.
Всего голосов 22: ↑17 и ↓5+12
Комментарии53

Информация

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