Pull to refresh
63
0
Artem Kalachian @Bringoff

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

Send message

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

Reading time11 min
Views134K

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


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


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

Читать дальше →
Total votes 80: ↑78 and ↓2+76
Comments55

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

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

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

image
Читать дальше →
Total votes 34: ↑34 and ↓0+34
Comments0

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

Reading time16 min
Views194K
Этот список появился как личная памятка по темам, которые я обсуждал с коллегами и друзьями и в которых хотел разобраться поглубже…

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

В этом репозитории собран ряд вопросов, связанных с серверной частью, которые можно использовать при проверке потенциальных кандидатов. Ни в коем случае не рекомендуется задавать все вопросы одному кандидату: это займет несколько часов и вообще не имеет смысла, потому что они охватывают слишком широкий спектр тем. Никто не может знать всего. Выберите наиболее актуальный раздел и самые интересные вопросы, чтобы развернуть беседу.
Читать дальше →
Total votes 83: ↑61 and ↓22+39
Comments274

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

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



Список основан на многолетнем опыте фронтенд-разработчиков, а дополнения собраны из общедоступных источников.
Читать дальше →
Total votes 30: ↑24 and ↓6+18
Comments21

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

Reading time32 min
Views140K
Данная статья в первую очередь предназначена для подготовки к собеседованиям на позицию Java разработчика (на самом деле, это шпаргалка, которую я писал для себя в течении многих лет, и повторяю при каждом новом поиске работы).

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

image

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

Внимание: я не буду касаться вопросов по самому языку Java (вроде для чего нужно слово final или чем overriding отличается от overloading), это потребует отдельной статьи, это вопросы именно по Java SE (6-9) платформе.
Читать дальше →
Total votes 30: ↑28 and ↓2+26
Comments10

Git снизу вверх

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


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

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

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

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


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

Total votes 48: ↑43 and ↓5+38
Comments23

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

Reading time7 min
Views38K
image

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

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

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

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

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

Читать дальше →
Total votes 117: ↑117 and ↓0+117
Comments53

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

Reading time15 min
Views426K
Превращаем круги в блоки

­­ 


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

Читать дальше →
Total votes 58: ↑56 and ↓2+54
Comments203

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

Reading time10 min
Views21K


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

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


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

Тестирование — это проверка работоспособности программы, предмета или любой промышленной разработки. Как и в любом деле, здесь есть свои тонкости и своя философия. Она, наверное, ближе тестировщикам, которые на произведенные нами вещи смотрят деструктивно — они с самого начала думают о том, как сломать предложенный разработчиками продукт. Это не очень типично для пользователей, которые более предсказуемы и обычно находят ошибки, случайно пытаясь сделать с нашей программой что-то нетипичное. У разработчиков подход к программам в принципе другой, но мы должны помнить: тестировщики должны ломать то, что мы создали — это их хлеб.
Читать дальше →
Total votes 16: ↑13 and ↓3+10
Comments1

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

Reading time4 min
Views62K


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

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


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

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

Reading time15 min
Views266K


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


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


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


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

Total votes 174: ↑171 and ↓3+168
Comments505

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

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

На Хабре, да и не только на нем, есть множество инструкций, как обойти блокировки с помощью VPN, в частности, с помощью OpenVPN, есть и прекрасные пошаговые консольные скрипты установки OpenVPN. Однако чаше всего подобные инструкции подразумевают, что в результате весь интернет-трафик будет идти через VPN-соединение, что может быть неудобным по ряду причин. И в этом коротком посте я хотел рассказать, как настроить OpenVPN Access Server и обычный OpenVPN для обслуживания только заблокированных ресурсов.
Читать дальше →
Total votes 39: ↑36 and ↓3+33
Comments52

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

Reading time3 min
Views34K

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

Читать дальше →
Total votes 35: ↑32 and ↓3+29
Comments24

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

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

Читать дальше →
Total votes 161: ↑151 and ↓10+141
Comments133

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

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

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

image
Читать дальше →
Total votes 39: ↑37 and ↓2+35
Comments119

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

Reading time7 min
Views21K

image alt text


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


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

Читать дальше →
Total votes 34: ↑29 and ↓5+24
Comments33

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

Reading time4 min
Views28K
image Книга специально предназначена для обучения начинающих сотрудников работе с Linux. Основные достоинства книги:

• содержит тематически сгруппированные уроки, что быстро поможет вам найти самое нужное и перейти к конкретной главе, где эта тема подробно рассматривается;
• описывает основы операционной системы Linux, в том числе ее дистрибутивы, типы приложений с открытым исходным кодом, свободное ПО, лицензирование, навигацию и многое другое;
• исследует работу с командной строкой, в том числе навигацию в ней, превращение команд в сценарии и т. п.;
• учит создавать типы пользователей и пользовательские группы.
Читать дальше →
Total votes 13: ↑11 and ↓2+9
Comments8

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

Reading time10 min
Views27K


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

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

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

Reading time14 min
Views41K


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

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

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

Начнём.
Total votes 65: ↑61 and ↓4+57
Comments46

Information

Rating
Does not participate
Location
Warszawa, Mazowieckie, Польша
Registered
Activity

Specialization

Mobile Application Developer
Senior