Обновить
61
0
Artem Kalachian @Bringoff

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

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

Операционные системы с нуля; Уровень 0

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

Добрый день/вечер/ночь/утро! Есть один экспериментальный курс по операционным системам. Есть он в Стэнфордском университете. Но часть материалов доступно всем желающим. Помимо слайдов доступны полные описания практических занятий.


Чем этот курс отличается от прочих других? Большая часть кода пишется самостоятельно и выполняется на вполне реальном современном железе. В качестве целевой платформы выбран Raspberry Pi 3 model B. Т.е. достаточно актуальная архитектура AArch64. ARMv8 Cortex-A53, четыре ядра, 64-бита и вот это всё. В качестве основного языка программирования выбран Rust. Который безопасный, быстрый, без GC и так далее. Его, Rust, предполагается изучать во время курса.


Тут есть про диски, файловые системы, операции ввода-вывода, потоки /процессы, планирование, виртуальную память, защиту и безопасность, прерывания, параллелизм и синхронизацию. Как и в любом другом, уважающем себя курсе. Разница в актуальности материала и в количестве практики. Коддить придётся много.

Читать дальше →

Создание анимаций переходов между Activity в Android

Время на прочтение8 мин
Количество просмотров28K
Начиная с Android 4.4 в арсенале разработчиков появился дополнительный инструмент для создания анимаций — Transitions Framework. Изначально он предназначался для создания анимаций изменения состояния приложения путём манипулирования несколькими View. С выходом Android 5.0 набор доступных для использования анимаций был расширен, чтобы соответствовать представленной тогда же концепции Material Design.

Transitions Framework позволяет быстро и безболезненно создавать различные анимации. Поэтому в процессе работы над iFunny было невозможно пройти мимо этого инструментария. Вниманию читателей предлагается частный случай использования Transitions API — создание анимации перехода между Activity с эффектом «бесшовности».

image
Читать дальше →

Вопросы для собеседования бэкенд-разработчика

Время на прочтение16 мин
Количество просмотров204K
Этот список появился как личная памятка по темам, которые я обсуждал с коллегами и друзьями и в которых хотел разобраться поглубже…

Я не большой любитель задавать технические вопросы на собеседованиях: по мне так лучше посидеть с кандидатом (или кандидаткой) за клавиатурой над каким-то реальным кодом, реальной проблемой — и целый день заниматься парным программированием, желательно поочерёдно с остальными членами команды. Но я считаю, что некоторые технические вопросы могут быть хорошей отправной точкой для начала увлекательного и приятного разговора и позволят глубже узнать друг друга.

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

Чеклист фронтенд-разработчика

Время на прочтение12 мин
Количество просмотров71K
Глеб Летушов, редактор-фрилансер, адаптировал для блога Нетологии чеклист с Github от David Dias. Этот чеклист уже переводили, но так как на Хабре его нет, мы решили, что он пригодится. В чеклисте собран полный список элементов, которые необходимо проверить перед запуском и публикацией сайта.



Список основан на многолетнем опыте фронтенд-разработчиков, а дополнения собраны из общедоступных источников.
Читать дальше →

Шпаргалки Java программиста 9: Java SE — Шпаргалка для собеседований и повторений

Время на прочтение32 мин
Количество просмотров149K
Данная статья в первую очередь предназначена для подготовки к собеседованиям на позицию Java разработчика (на самом деле, это шпаргалка, которую я писал для себя в течении многих лет, и повторяю при каждом новом поиске работы).

Предполагается. что вы знакомы с многими функциями из Java SE, поэтому в основном информация дается кратко. Конечно, можно использовать эту статью и просто для обучения основам Java SE платформы (но в этом случае, после чтения статьи вам скорее всего придется обратиться к другим источникам).

image

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

Внимание: я не буду касаться вопросов по самому языку Java (вроде для чего нужно слово final или чем overriding отличается от overloading), это потребует отдельной статьи, это вопросы именно по Java SE (6-9) платформе.
Читать дальше →

Git снизу вверх

Время на прочтение27 мин
Количество просмотров133K
У этого перевода не совсем обычная история. Системы контроля версий далеки от моих профессиональных интересов. Для рабочих проектов они мне требовались нечасто, причем, разные, так что, каждый раз, когда возникала такая необходимость, я заново вспоминала, как в них делается та или иная операция. А для личных проектов мне хватало возможностей Dropbox, хранящей историю версий файлов.


Изображение из твиттера @girlie_mac

Но вот однажды я на три незабываемых дня попала в роддом — это иногда случается с женщинами. Из развлечений у меня были новорожденная дочь и телефон с большим экраном. Дочь поначалу развлекала плохо (дома она быстро исправилась), а на телефоне помимо книг и фильмов обнаружился текст «Git from the bottom up», который оказался более чем годным… С тех пор прошло почти 3 года, подросшей дочке уже пора самой начинать использовать Git Git стал мейнстримом, если не сказать стандартом в современной разработке, а я с удивлением обнаружила, что перевода на русский этого чуда, полезного не только начинающим, но и продвинутым пользователям Git, до сих пор нет. Исправляю эту ситуацию.
Читать дальше →

Как мы контролируем качество кода в Браузере для Android. Лекция Яндекса

Время на прочтение11 мин
Количество просмотров14K
Автор этой лекции — Константин Заикин kzaikin, руководитель группы разработки Яндекс.Браузера для Android в Санкт-Петербурге. Он рассказал об инструментах Android-разработчика и всей команды, а также о том, как справляться с legacy-кодом, публиковать большой проект вовремя и улучшать качество кода.


— Друзья, привет. Я очень рад, что вас так много сегодня пришло. Я приехал из Питера, в Яндексе работаю около шести лет. Успел засветиться в Картах, Такси, Метрике и Поиске. Уже два года я работаю над Яндекс.Браузером для Android.

Использование SVG в качестве Placeholder’a

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

Генерация SVG из изображений может использоваться для Placeholder’ов.

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

В последние дни я сталкивался с некоторыми методами загрузки, которые используют SVG, и я хотел бы описать их в этом посте.

В этом посте мы рассмотрим следующие темы:

  • Обзор различных типов Placeholder’ов
  • Placeholder на основе SVG (контуры, фигуры и силуэты)
  • Автоматизация процесса.

Читать дальше →

Заблуждения Clean Architecture

Время на прочтение15 мин
Количество просмотров454K
Превращаем круги в блоки

­­ 


На первый взгляд, Clean Architecture – довольно простой набор рекомендаций к построению приложений. Но и я, и многие мои коллеги, сильные разработчики, осознали эту архитектуру не сразу. А в последнее время в чатах и интернете я вижу всё больше ошибочных представлений, связанных с ней. Этой статьёй я хочу помочь сообществу лучше понять Clean Architecture и избавиться от распространенных заблуждений.

Читать дальше →

Тестирование глазами разработчика: инструменты, мифы, ситуации

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


Евгений Сафронов, Senior Developer, DataArt

«Тестирование можно использовать для того, чтобы доказать наличие ошибок в программе, и никогда — для того чтобы доказать их отсутствие!»
Эдсгер Дейкстра


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

Тестирование — это проверка работоспособности программы, предмета или любой промышленной разработки. Как и в любом деле, здесь есть свои тонкости и своя философия. Она, наверное, ближе тестировщикам, которые на произведенные нами вещи смотрят деструктивно — они с самого начала думают о том, как сломать предложенный разработчиками продукт. Это не очень типично для пользователей, которые более предсказуемы и обычно находят ошибки, случайно пытаясь сделать с нашей программой что-то нетипичное. У разработчиков подход к программам в принципе другой, но мы должны помнить: тестировщики должны ломать то, что мы создали — это их хлеб.
Читать дальше →

Правила английского, которые нарушают ваши иностранные коллеги

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


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

Двойное отрицание


Вы же помните, что в предложении на английском достаточно одного отрицания? А потом вдруг слушаем песню Rolling Stones и слышим “I can’t get no satisfaction”. Все дело в том, что это песня, тут можно, скажите вы. И это верно. Но еще стоит упомянуть, что двойное отрицание делает фразу эмоциональнее. Поэтому такие фразы и стали популярны. Но это неформальный способ, так что не увлекайтесь с двойными отрицаниями.
Читать дальше →

Объясняем современный JavaScript динозавру

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


Если вы не изучали JavaScript с самого начала, то осваивать его современную версию сложно. Экосистема быстро растёт и меняется, так что трудно разобраться с проблемами, для решения которых придуманы разные инструменты. Я начал программировать в 1998-м, но начал понимать JavaScript только в 2014-м. Помню, как просматривал Browserify и смотрел на его слоган:


Browserify позволяет делать require («модули») в браузере, объединяя все ваши зависимости


Я не понял ни слова из предложения и стал разбираться, как это может помочь мне как разработчику.


Цель статьи — рассказать о контексте, в котором инструменты в JavaScript развивались вплоть до 2017-го. Начнём с самого начала и будем делать сайт, как это делали бы динозавры — безо всяких инструментов, на чистом HTML и JavaScript. Постепенно станем вводить разные инструменты, поочерёдно рассматривая решаемые ими проблемы. Благодаря историческому контексту вы сможете адаптироваться к постоянно меняющемуся ландшафту JavaScript и понять его.

Как обойти блокировки сайтов, не направляя весь трафик через VPN

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

На Хабре, да и не только на нем, есть множество инструкций, как обойти блокировки с помощью VPN, в частности, с помощью OpenVPN, есть и прекрасные пошаговые консольные скрипты установки OpenVPN. Однако чаше всего подобные инструкции подразумевают, что в результате весь интернет-трафик будет идти через VPN-соединение, что может быть неудобным по ряду причин. И в этом коротком посте я хотел рассказать, как настроить OpenVPN Access Server и обычный OpenVPN для обслуживания только заблокированных ресурсов.
Читать дальше →

Что почитать программисту на досуге

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

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

Читать дальше →

10 способов хранить свои проводки

Время на прочтение2 мин
Количество просмотров67K
wires
Уверен, у каждого хабрачеловека со временем количество различных проводов и шнуров от телефонов, КПК и прочих девайсов начинает превышать все разумные пределы. Стол-то не резиновый. Но не отказываться же в конце концов из-за этого от любимых гаджетов. В этой статье я хочу привести несколько изящных дизайнерских решений, чтобы вы могли «хранить свои проводки» в порядке и радости для глаз. Как и советовал профессор Губерт Фарнсворт.

Читать дальше →

Как отучить соседского кота гадить на газон: используем машинное зрение и глубокое обучение

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

Чтобы отвадить кота от привычки оставлять "подарки" на газоне, можно использовать разные способы: силки для мелких животных, самодельные ловушки из ящиков с кирпичом на крышке и приманкой внутри, народные методы вроде обмазанных чесноком корок цитрусовых. Наконец, можно сидеть весь день с тапком в руке.


Инженер Nvidia считает, что поступать так с соседскими животными — как-то не по-соседски. К тому же он хотел попробовать нейросети на практике. Поэтому он использовал более продвинутый метод: он взял плату Nvidia Jetson TX1, IP-камеру Foscam, плату для разработки Particle Photon, подсоединённую к реле, и домашнюю систему полива газона. Коты мокрые — но живые и здоровые.


image
Читать дальше →

Зачем в команде мобильной разработки появился сейф под управлением Windows 10

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

image alt text


Привет! Я хочу рассказать, как мы сделали автоматическую выдачу 70 мобильных тестовых устройств, и перестали задаваться вопросом «у кого тот розовый iPhone 6».


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

Читать дальше →

Книга «Linux на практике»

Время на прочтение4 мин
Количество просмотров28K
image Книга специально предназначена для обучения начинающих сотрудников работе с Linux. Основные достоинства книги:

• содержит тематически сгруппированные уроки, что быстро поможет вам найти самое нужное и перейти к конкретной главе, где эта тема подробно рассматривается;
• описывает основы операционной системы Linux, в том числе ее дистрибутивы, типы приложений с открытым исходным кодом, свободное ПО, лицензирование, навигацию и многое другое;
• исследует работу с командной строкой, в том числе навигацию в ней, превращение команд в сценарии и т. п.;
• учит создавать типы пользователей и пользовательские группы.
Читать дальше →

Все «радости» CallKit или как мы делали определитель номера на iOS 10

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


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

В июне мы ездили на WWDC 2016, и на одной из сессий ребята из Apple обмолвились, что наконец-то можно делать «gorgeous astonishment» — определитель номеров под iOS 10. Радости нашей не было предела, но до поры до времени: как Apple любит, фичу она предоставила с рядом ограничений.
Скорее подробности

Архитектура растущего проекта на примере ВКонтакте

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


Алексей Акулович объясняет жизненный путь высоконагруженного проекта на PHP. Это — расшифровка Highload ++ 2016.

Меня зовут Лёша, я пишу на PHP.

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

Начнём.

Информация

В рейтинге
Не участвует
Откуда
Warszawa, Mazowieckie, Польша
Зарегистрирован
Активность

Специализация

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