Как стать автором
Обновить
55
0
Николай @nicolausYes

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

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

Погружение в Robolectric

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

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


Под катом расскажу о внутреннем устройстве фреймворка для unit-тестирования Android-приложений — Robolectric.



Всего голосов 15: ↑15 и ↓0+15
Комментарии3

Визуализация данных в браузере с помощью D3.js

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


Михаил Дунаев ( war_hol )


С визуализацией данных и с различными диаграммами мы сталкиваемся каждый день, это какие-то Google Analitics, Интернет-банки, это Excel и т.д.



На самом деле графики преследуют человечество всю нашу историю. Одна из первых визуализаций данных — это Х век н.э. Неизвестный астроном изобразил с помощью диаграмм движение небесных тел:
Всего голосов 41: ↑38 и ↓3+35
Комментарии11

Спасут ли нас вирусы от супербактерий?

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

Когда серьёзно больному пациенту не помогли антибиотики, его спас вирус из местного пруда

[не рекомендуется читать текст за едой, а также впечатлительным людям и беременным женщинам – прим. перев.]

image

Годами Али Ходадуст [Ali Khodadoust] существовал с буквально открытым сердцем. В 2012 году хирурги заменили ему дугу аорты и ненамеренно подсадили бактерию. Бактерия образовала колонии в виде биоплёнок и пробурила туннель через его грудную клетку, вышедший в результате наружу.

Это была опасная близость. Антибиотики для борьбы с инфекцией, которые старик ежедневно покорно проглатывал, не убивали бактерию. Тогда доктора вставили ему в плечо пластиковую трубку, и подавали антибиотики напрямую в кровоток. Но антибиотики проваливались один за другим. Спустя три года Ходадуста, офтальмолога из Нью Хэйвена, штат Коннектикут, отправили на лечение в Госпиталь Йеля-Нью Хэйвена. Рыжевато-коричневый гной сочился из отверстия диаметром с карандаш у него на груди. Иногда он окрашивался полосками яркой крови. В любой момент бактерия могла попасть в кровоток, вызвать септический шок и убить его.
Читать дальше →
Всего голосов 57: ↑54 и ↓3+51
Комментарии96

Обучаемся самостоятельно: подборка видеокурсов по Computer Science

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

Содержание


  1. Введение в Computer Science
  2. Структуры данных и Алгоритмы
  3. Системное программирование
  4. Распределенные системы
  5. Базы данных
  6. Объектно-ориентированный дизайн и разработка софта
  7. Искусственный интеллект
  8. Машинное обучение
  9. Веб-разработка и интернет-технологии
  10. Concurrency
  11. Компьютерные сети
  12. Разработка мобильных приложений
  13. Математика для программистов
  14. Теория информатики и языки программирования
  15. Архитектура компьютера
  16. Безопасность
  17. Компьютерная графика
  18. Работа с изображениями и компьютерное зрение
  19. Интерфейс Человек-Компьютер
  20. Вычислительная биология
  21. Прочее

Всего голосов 78: ↑64 и ↓14+50
Комментарии23

Bobby. Рюкзак особого назначения

Время на прочтение8 мин
Количество просмотров151K
В мире существует довольно много компаний, производящих такой класс вещей, как рюкзаки. Ещё больше существует самих рюкзаков: для ноутбуков, для фотоаппаратов, для фотоаппаратов и ноутбуков, для дронов, для активного отдыха, для лежания овощем и т.д — только у нас на сайте отобрано более 50 моделей (и это именно в наличии). Казалось бы, рассказывать о них на Geektimes нет никакого смысла, рюкзаки и рюкзаки. Но сегодня про один всё же расскажем, так как внимания гиков он заслуживает совершенно точно: это новый Bobby от голландской компании XD-Design.

Всего голосов 48: ↑43 и ↓5+38
Комментарии136

Как перестать использовать MVVM

Время на прочтение10 мин
Количество просмотров48K
Двухголовый MVVM

На недавнем DroidCon Moscow 2016 был доклад о MVVM c Databinding Library и доклад о библиотеке Moxy, помогающей работать с MVP. Дело в том, что за последние полгода мы успели опробовать оба подхода на живых проектах. И я хочу рассказать о своём пути от освоения Databinding Library и выпуска в продакшн проекта на MVVM до осознания, почему я больше не хочу использовать этот паттерн.

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

Мужчина, который живёт без 90% мозга, озадачил учёных

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

Магнитно-резонансная томограмма пациента с практически отсутствующим мозгом, но ведущим нормальную социальную жизнь. Фото: Feuillet et al./The Lancet

Французский мужчина, живущий относительно нормальной и здоровой жизнью, несмотря на отсутствие 90% мозга, заставляет учёных пересмотреть теории о биологической сущности сознания.

Несмотря на десятилетия исследований, специалисты до сих пор не могут объяснить феномен сознания — фундаментального способа, каким человек соотносится с миром. Нам известно, что это нечто формируется в головном мозге, на базе нейронов. Но каким образом сохраняется сознание, если отсутствует подавляющее большинство нейронов?
Читать дальше →
Всего голосов 70: ↑62 и ↓8+54
Комментарии670

Сайты для онлайн-обучения веб-разработчиков и веб-дизайнеров

Время на прочтение2 мин
Количество просмотров128K
В заметке собраны сайты с обучающими материалами для веб-дизайнеров и веб-разработчиков. Старался не повторяться с постом 27+ ресурсов для онлайн-обучения хабраюзера nicolausYes.

Academic Earth


Множество бесплатных лекций, в том числе от известных университетов (Гарвард, MIT, Стенфорд и др.).

Читать дальше →
Всего голосов 63: ↑57 и ↓6+51
Комментарии16

Как победить на собеседовании. Несколько крайне полезных советов для разработчиков

Время на прочтение8 мин
Количество просмотров68K
От автора: я разработал и провёл десятки собеседований по программированию. Здесь я расскажу, как меня обыграть



Будем честными, большинство программистов не любят писать код на собеседовании. Некоторые даже угрожают уйти из профессии по этой причине. Но в ближайшее время ничего не изменится. Так что если вы действительно хотите получить работу, то придётся понять, как можно добиться успеха на этих собеседованиях. Я помогу вам. Мы изучим процесс, и я объясню, что именно я хочу добиться от собеседования, так что у вас сложится довольно чёткое представление, как его пройти.
Читать дальше →
Всего голосов 54: ↑39 и ↓15+24
Комментарии116

Оптимизация Java-кода в Android Marshmallow

Время на прочтение8 мин
Количество просмотров13K
Повышение производительности системы, улучшение впечатлений пользователей от работы с приложениями: вот направления, в которых развивается Android. В Android Marshmallow можно обнаружить множество новых функций и возможностей. В частности, речь идёт о серьёзных усовершенствованиях Android Runtime (ART). Они направлены на производительность, потребление памяти и многозадачность.

Вышел новый релиз платформы? Изменилась виртуальная машина Android? Любое из этих событий означает, что разработчику нужно срочно понять суть новшеств. А именно, надо разобраться с тем, какие методы, позволявшие достичь высокой производительности решений в прошлом, теперь уже не так эффективны. Нужно найти новые подходы к разработке приложений, способные дать наилучшие результаты. О подобных тонкостях почти не пишут, поэтому разработчикам приходится выяснять всё это методом проб и ошибок.
Читать дальше →
Всего голосов 20: ↑18 и ↓2+16
Комментарии4

Что делает центральный процессор, когда ему нечего делать

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

Мужик приходит устраиваться работать на стройку. Его спрашивает мастер:
— Что делать умеешь?
— Могу копать…
— А что еще?
— Могу не копать…

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


Неактивным процессор может быть не только для экономии энергии, но и в результате возникновения особых ситуаций, в процессе выполнения протоколов инициализации или как итог намеренных действий системных программ. Почему это интересно? При написании программных моделей (в том числе виртуальных машин) компьютерных систем, необходимо корректно моделировать переходы между состояниями виртуальных процессоров. В работе системных программ регулярно возникают ситуации, когда по тем или иным причинам ЦПУ должен «притормозить». Умение корректно использовать и моделировать эти ситуации зависит от знания и понимания спецификаций.


В статье фокус делается на программной стороне вопроса состояний процессора. Я не буду концентрироваться на деталях реализации (напряжения, пины, частоты и т.д.), так как 1) они существенно различаются между поколениями и моделями процессоров даже одной архитектуры, тогда как программный интерфейс остаётся обратно совместимым; 2) они не видны напрямую программам и ОС. Это попытка просуммировать информацию, разбросанную по многим страницам справочника Intel IA-32 and Intel 64 Software Developer Manual.


Начнём с простой и всем знакомой ситуации — процессор включён, бодр и весел.

Читать дальше →
Всего голосов 67: ↑65 и ↓2+63
Комментарии24

Google I/O 2016 в подробностях: перспективы и технологии

Время на прочтение7 мин
Количество просмотров21K
Привет, Хабр! 18 мая в Калифорнии, в Маунтин-Вью, прошла наша ежегодная конференция для разработчиков. На случай, если вы пропустили живую трансляцию (или просто любите текстовый формат) мы подготовили специальный пост со всем самым-самым важным и интересным, что было показано на I/O 2016.


Поехали!
Всего голосов 27: ↑26 и ↓1+25
Комментарии13

Как отслеживать новости в мире C++

Время на прочтение4 мин
Количество просмотров18K
Стараясь непрерывно пополнять свои знания о С++ я определил для себя несколько каналов получения информации, на которых можно сконцентрироваться. Они, возможно, могут быть применимы и к другим областям знаний, но я попробую сфокусироваться на С++. Давайте я расскажу о них чуть подробнее.

  1. Вдумчивое чтение — чтение фундаментальных книг, структурированных и информативных. Это требует длительной концентрации, причём нельзя читать в состоянии усталости, поскольку вы попросту уснёте и ничего не запомните. Если у вас ещё нет электронной читалки — обязательно купите.
  2. Лёгкое чтение — чтение менее серьёзной литературы вроде книг о мотивации, продуктивности, Soft Skills. Всё это зря недооценивается некоторыми программистами. Эти книги не требуют большой концентрации внимания. Да, это совершенно не о языке С++, но это о том, как вообще что-то делать и всё-таки сделать. Хорошо читается перед сном.
  3. Подкасты — хорошо идут, когда нужно переключиться с чего-то одного на другое, или во время шоппинга. Помогают взглянуть на что-то неожиданное. Тренируют умение слушать и понимать услышанное, что может быть полезным умением (например, для участия в совещаниях). Если английский язык для вас не родной — вы можете услышать как произносятся термины и имена. Я рекомендую послушать CppCast или Software Engineering Radio — я был приятно удивлён широким охватом их тем. Первый эпизод вышел в 2006-ом году, подкаст наполовину состоит из истории программной инженерии и наполовину из теории (паттерны, проблемы, решения и т.д.)
  4. Видео и лекцииCppCon, CppNow, Meeting C++, ACCU Conference для начала. Там просто ошеломляющее количество интересных докладов. В отличии от подкастов это требует визуального внимания и концентрации, но и выучить в результате можно больше. Я думаю просмотр 2-5 видео в неделю вполне достижимо.
    Совет: увеличивайте скорость аудио/видео — мозг быстро привыкает к этой скорости и вы сможете услышать больше за меньшее время.
  5. Обсуждения, форумы, твиттер — этот канал обмена информацией требует меньше всего концентрации. Вы можете быстренько просмотреть дискуссии, ленту твиттера в поисках чего-то интересного — просто убивая время. Если что-то нашлось — можно добавить это в список для чтения позже. Чем это всё полезно — огромным разнообразием людей, мнений, подходов, задач и решений. Хороший способ разогнать свой мозг весьма случайной информацией.

    Вот, например, мой список Core C++ чтобы следить за значимыми в мире С++ разработчиками. А ещё есть несколько страниц и групп в Facebook и неплохие обзоры от Jens Weller.

    Для дискуссий о С++ есть раздел на Реддите (прим. переводчика: а ещё есть хаб на Хабрахабре). Ну и, конечно, группы комитета по стандартизации C++
  6. Блоги и статьи — обычно занимает 5-10 минут чтобы прочитать среднюю статью. Если встречается более глубокая статья — можно пометить её для чтения «когда я буду сконцентрирован». По моим наблюдениям выходит 5-10 хороших статей в неделю и не так сложно прочесть их все.

Читать дальше →
Всего голосов 31: ↑26 и ↓5+21
Комментарии7

LLVM для исследователей

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

Что такое LLVM?


LLVM — это по-настоящему удобный для разборки и сборки «ранний» компилятор для таких традиционных языков программирования, как C и C++.

LLVM настолько хорош, что считается «больше, чем просто компилятором» (это динамический компилятор, он работает с языками, не относящимися к семейству C, он представляет собой новый формат доставки для App Store и т. д. и т. п.). Все перечисленное верно, но для нашей статьи важно лишь приведенное выше определение.

LLVM имеет несколько ключевых отличий от других компиляторов:

  • Главное новшество — промежуточное представление (ПП). LLVM работает с ПП, которое действительно можно прочитать (если вы умеете читать ассемблерный код). Возможно, кому-то это не покажется столь уж большим откровением, однако это свойство очень важно. ПП других компиляторов обычно имеют настолько сложную структуру, что их невозможно записать вручную, трудно понять и использовать.
Читать дальше →
Всего голосов 72: ↑68 и ↓4+64
Комментарии6

Каково это — быть разработчиком, когда тебе сорок

Время на прочтение18 мин
Количество просмотров229K
Примечание от переводчика:

Этот пост был написан и опубликован на Medium разработчиком приложений Адрианом Космачевским из Швейцарии. Кроме подготовки перевода его публикации, я также пригласил и самого автора, Адриана ( akosma ), на Хабр, для того, чтобы он смог лично ответить на любые вопросы участников сообщества, если таковые возникнут. Думаю, для общего удобства при общении в комментариях с ним стоит использовать английский (и, при желании, дублировать на русском).



Привет всем, я — сорокадвухлетний программист-самоучка, а это моя история.

Пару недель назад я наткнулся на твит, в котором была картинка, прикрепленная ниже, и он заставил меня задуматься о моей карьере.

image

Эти размышления привели меня туда, откуда все начиналось.

Я дебютировал в роли разработчика программного обеспечения в 10 часов утра 6 октября 1997 года, в городе Оливос, к северу от Буэнос-Айреса, в Аргентине. Был понедельник. Не так давно я праздновал свой 24-й день рождения.

Мир в 1997 году


Тогда он был немного другим. На веб-сайтах не было предупреждений об использовании cookie. Новаторскими в сети были сайты вида Excite.com, а моим любимым поисковиком был AltaVista.

Мой электронный ящик имел вид kosmacze@sc2a.unige.ch и был расположен на личном веб-сайте, который размещался по адресу http://sc2a.unige.ch/~kosmacze. Тогда мы еще оплакивали принцессу Диану, а Стив Джобс только-только вернулся на роль CEO и убедил Microsoft «вбросить» в Apple Computer 150 миллионов долларов. Digital Equipment Corporation подала в суд на Dell, останки Че Гевары вернули на Кубу, только начался четвертый (!) сезон «Друзей». Был убит Джанни Версаче, скончались Мать Тереза, Рой Лихтенштейн и Жанна Кальман. Люди зависали за Final Fantasy 7 на PlayStation, будто бы были наркоманами, Би-Би-2 начал вещание телепузиков, а Кэмерон только собирался показать миру свой «Титаник».
Читать дальше →
Всего голосов 200: ↑194 и ↓6+188
Комментарии321

Какую библиотеку работы с HTTP в Android выбрать?

Время на прочтение6 мин
Количество просмотров68K
Представляю вашему вниманию перевод статьи «Which Android HTTP library to use?».

Для чего это вообще?


Сегодня почти все приложения используют HTTP/HTTPS запросы как своеобразный транспорт для своих данных. Даже если вы напрямую не используете эти протоколы, множество SDK, которые вы, скорее всего, уже включили в свои приложения (например, метрика, статистика падений, реклама), используют HTTP/HTTPS для работы с сетью. На сегодняшний день совсем немного существует библиотек, которые разработчик мог бы свободно использовать в своем проекте. И я постараюсь рассказать об основных из них в этом посте.
У Android-разработчиков есть много причин, чтобы сделать выбор в пользу сторонних библиотек, заместо уже встроенных API, таких как HttpURLConnection или Apache Client. Например:
Узнать зачем
Всего голосов 17: ↑15 и ↓2+13
Комментарии13

Как Google в Лондоне тренинг по Android N устраивала

Время на прочтение3 мин
Количество просмотров6.5K
Привет, Хабр!

Недавно компания Google устраивала двухдневный тренинг по новой версии системы Android (под литерой N) для разработчиков приложений. И я хочу вам рассказать, какими секретными и не очень знаниями с нами поделились.

Читать дальше →
Всего голосов 17: ↑14 и ↓3+11
Комментарии2

Чего нам не хватает в Java

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


В этой статье мы рассмотрим некоторые «отсутствующие» в Java возможности. Но нужно сразу подчеркнуть, что будут умышленно опущены некоторые вещи, которые либо и так активно обсуждаются, либо требуют слишком большого объёма работ на уровне виртуальной машины. Например:

Отсутствуют материализованные дженерики (reified generics). Об этом не писал только ленивый, причём большинство комментариев свидетельствуют о непонимании сути затирания типов. Если Java-разработчик говорит: «Я не люблю затирание типов», то в большинстве случаев это означает «Мне нужен List int». Вопрос примитивной специализации дженериков лишь косвенно связан с затиранием, а польза от дженериков, видимых в ходе исполнения, сильно преувеличена молвой.

Беззнаковые вычисления (unsigned arithmetic) на уровне виртуальной машины. Отсутствие в Java поддержки беззнаковых арифметических типов вызывает недовольство разработчиков уже многие годы. Но это является обдуманным решением создателей языка. Наличие лишь знаковых вычислений существенно упрощает язык. Если сегодня начать внедрять беззнаковые типы, то это повлечёт за собой очень серьёзную переработку Java, что чревато массой больших и маленьких багов, которые будет трудно вылавливать. Заодно сильно возрастает риск дестабилизации всей платформы.

Длинные указатели для массивов. Опять же, внедрение этой функциональности потребует слишком глубокой переработки JVM с возможными неприятными последствиями, причём далеко не только с точки зрения поведения и семантики сборщиков мусора. Хотя нужно отметить, что Oracle ищет пути внедрения подобной функциональности с помощью проекта VarHandles.

Здесь мы не будем вдаваться в подробности возможного Java-синтаксиса для обсуждаемой функциональности. К сожалению, подобные обсуждения вообще часто скатываются к спорам на тему синтаксиса, хотя куда важнее семантика.
Читать дальше →
Всего голосов 21: ↑17 и ↓4+13
Комментарии42

Кюветы Android, Часть 2: SDK и Libraries

Время на прочтение10 мин
Количество просмотров23K
Разрабатывая под Android, всегда нужно быть начеку. Шаг влево / шаг вправо — и вот прошел ещё один час за дебагом. Кюветы могут быть какие угодно: начиная от обычных багов в SDK и заканчивая неочевидными именами методов с контекстно зависимым результатом (да-да, Fragment.getFragmentManager(), это я о тебе).

В предыдущей статье были описаны кюветы «на поверхности» SDK, в которые угодить очень легко. На этот же раз кюветы будут поглубже, помудрёнее и поспецифичнее. Также будет несколько моментов, связанных с Retrofit 2 & Gson.
image
Читать дальше →
Всего голосов 24: ↑23 и ↓1+22
Комментарии23

Архитектурные паттерны в iOS

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

Введение в MVP, MVC, MVVM и VIPER. Что между ними общего и в чем разница.



Делаете все по MVC, а получается некрасиво? Сомневаетесь, переходить ли на MVVM? Слышали о VIPER, но не уверены, стоит ли оно того?

В этой статье я кратко рассмотрю некоторые популярные архитектурные паттерны в среде iOS и сравню их в теории и на практике. Больше информации вы найдете при переходе по ссылкам, указанным в тексте.
Читать дальше →
Всего голосов 28: ↑28 и ↓0+28
Комментарии18
1
23 ...

Информация

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