Pull to refresh
0
0
Сергей @sergeygonin

Студент, web, Android, Java Developer

Send message

Консоль для маководов: Beyond the GUI

Reading time6 min
Views219K
Доброго дня, уважаемые хабравчане-маководы!

Сегодня я расскажу как увеличить эффективность работы в Mac OS X за счёт использования консоли.

Лирическое отступление


Думаю, ни для кого не секрет, что Mac OS является Unix-based системой, но переработанной почти до неузнаваемости. Даже консоль засунули куда подальше — не сразу и найдёшь. И вся система нацелена на использование GUI, при дефолтных настройках даже переключение между кнопками по Tab не работает — без мыши никуда. И тем не менее, Мак — это не только окошки, не только док и лаунчер. Мак это ещё и вся мощь shell скриптов и консоли!

Если Вы пришли из мира M$, то для начала неплохо бы поучить общие команды shell'а, например, по вот этому учебному пособию. Как минимум, нужно усвоить команды перехода по каталогам и способы запуска программ и скриптов.

Если Вы пришли в мир Mac OS из мира Linux'а и FreeBSD, то, скорее всего, знаете как минимум основы shell-скриптинга. Но и для вас в статье может оказаться кое-что интересное, ведь в маке есть уникальные консольные команды, которые так же полезно знать.

Вот о некоторых особенностях маковской консоли далее и пойдёт речь.
Поехали!
Total votes 104: ↑91 and ↓13+78
Comments126

Как улучшить ваши A/B-тесты: лайфхаки аналитиков Авито. Часть 1

Reading time29 min
Views59K

Всем привет! Я Дмитрий Лунин, работаю аналитиком в команде ценообразования Авито. Наш юнит отвечает за все платные услуги площадки. Наша основная задача — сделать цены на них оптимальными. 

Мы не только пытаемся максимизировать выручку Авито, но и думаем про счастье пользователей. Если установить слишком большие цены, то пользователи возмутятся и начнут уходить с площадки, а если сделать цены слишком маленькими, то мы недополучим часть оптимальной выручки. Низкие цены также увеличивают количество «спамовых» объявлений, которые портят поисковую выдачу пользователям. Поэтому нам очень важно уметь принимать математически обоснованные решения — любая наша ошибка напрямую отразится на выручке и имидже компании. 

Одним из инструментов для решения наших задач является A/B-тестирование.

Читать далее
Total votes 10: ↑8 and ↓2+7
Comments15

Как настраивать диплинки: инструкция для Firebase, AppsFlyer и Facebook

Reading time10 min
Views24K

На связи Алексей Поддубный, iOS-разработчик AGIMA. Я расскажу, как в iOS работают диплинки, и разберу тонкости настройки популярных сервисов: где создавать ссылки с динамическими параметрами, как настраивать конфигурацию приложений и что делать после настройки. Инструкции основаны на оригинальных туториалах, которые мы перевели и адаптировали.

Читать далее
Total votes 9: ↑9 and ↓0+9
Comments0

Делаем сервер из Android-телефона

Reading time8 min
Views118K

Некоторое время назад мне пришла в голову интересная идея — превратить свои старые телефоны (их скопилось немало за десять лет) в серверы, в качестве альтернативы покупке Raspberry Pi.


image


На то было несколько причин: во-первых, у телефонов есть батарея, что для сервера практически бесплатный мини-UPS, во-вторых, внутренняя память смартфона (UFS) работает быстрее и надёжнее, чем SD-карта. В-третьих, у телефонов имеется экран, по которому можно отслеживать состояние сервера.


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


TL;DR: в этом посте будут разобраны вопросы установки PostmarketOS на смартфон,
поднятия на нём в качестве примера Docker и веб-приложения в нём.

За длинной версией под кат
Total votes 99: ↑98 and ↓1+128
Comments97

«Бизнес с нуля. Метод Lean Startup». Книга за 15 минут

Reading time14 min
Views186K


Lean Startup — это концепция бережливого производства. Эта методика помогает использовать научный подход для построения растущего бизнеса и избегать лишних затрат.

Рекомендуем к прочтению краткое изложение бестселлера Эрика Риса предпринимателям и всем, чья деятельность связана с инновациями и запуском продуктов.
Читать дальше →
Total votes 9: ↑9 and ↓0+9
Comments1

Инициализация Rx цепочки

Reading time8 min
Views4.1K

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

В этой статье я не буду описывать что такое Observable, Observer и все остальные сущности, которые используются в RxJava2. Если вы решили прочитать данную статью, то я предполагаю, что вы уже знакомы с этой информацией. А если вы всё же не знакомы с этими понятия, то я рекомендую перед началом чтения ознакомиться с ними.

Вот с чего можно начать:

Грокаем* RxJava

Исследуем RxJava 2 для Android

Давайте посмотрим, как работает простейшая цепочка.

Читать далее
Total votes 5: ↑5 and ↓0+5
Comments0

О дизайн-системе замолвите слово

Reading time10 min
Views6.2K

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

Мы поговорим о балансе между хаосом и системой, переиспользовании и дублировании, пройдемся по отношениям между дизайнерами и разработчиками, а также выясним, фронтенд – это только про покраску кнопок или нет?

Если вам удобнее не читать, а смотреть или слушать, то вы можете посмотреть выпуск о дизайн-системе в нашем видео-блоге “Охэхэнных историй”

Читать далее
Total votes 10: ↑10 and ↓0+10
Comments0

За что App Store может отклонить приложение: чек-лист

Reading time6 min
Views8.8K

App Store — самая строгая площадка для размещения приложений. Ревью проходит дольше и строже, чем у Google Play и Huawei App Gallery. В 2020 году AppStore отклонил миллион приложений, которые публиковались впервые, и миллион апдейтов.

С одной стороны, такая строгая политика — это хорошо: пользователям легче выбрать приложение и быть уверенным, что оно безопасно. Однако для разработчиков это настоящая головная боль.

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

Мы составили чек-лист очевидных и не очень очевидных причин, по которым AppStore отклоняет приложения. В статье раскроем подробнее каждый пункт.

Читать далее
Total votes 12: ↑12 and ↓0+12
Comments25

Проекты в Gradle 7: как не зависеть от зависимостей

Reading time4 min
Views14K

Привет! Меня зовут Ксения Кайшева, я пишу приложения под Android в компании 65apps. Сегодня расскажу о новой возможности, которая позволяет централизованно описывать зависимости на проектах с системой сборки Gradle.

Читать далее
Total votes 11: ↑8 and ↓3+9
Comments10

Как лояльные пользователи помогают тестировать любимый сервис. Бета-тест IVI — грани невозможного

Reading time10 min
Views3.3K

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

Познакомиться с бета-тестированием IVI
Total votes 11: ↑11 and ↓0+11
Comments4

Пишем комикс-приключение на Kotlin

Reading time6 min
Views7.4K

Всем привет! Сегодня вас ждет легкая статья, которая расскажет как написать простую мобильную игру-викторину на Kotlin. Здесь я расскажу и наглядно покажу как выглядит Kotlin для мобильной разработки и предложу свои идеи о том, как можно структурировать подобный проект. Что же, не буду томить вас графоманией, вперед! 

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

Читать далее
Total votes 7: ↑6 and ↓1+7
Comments2

Пишем свой профайлер для анализа производительности приложения на Android

Reading time6 min
Views3.1K

По мере развития приложения стоит проводить её аудит для выявления неявных деградаций в производительности. Недавно я проводил аудит раздела комментариев iFunny и написал собственный профайлер. Он не заменит имеющиеся на рынке инструменты Android Profile из Android Studio, Battery Historian и Systrace, но обладает рядом плюсов:

1. Негативное влияние профилировщика на производительность приложения сводится к минимуму.
2. Документация итераций оптимизации работы приложения.
3. Гибкость в сборе метрик.

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

Читать далее
Total votes 27: ↑26 and ↓1+31
Comments0

Простой вариант разношерстного recycler view на шаблоне Посетитель

Reading time13 min
Views6.5K

Прошло полгода, как я с паскаля перекатился на kotlin и влюбился в android-разработку, и вот уже разрешаю себе публично лезть со своими идеями в чужой монастырь. Но причина на то есть. Понаблюдав в профильных чатах за тем, какие чаще всего возникают вопросы у android-разработчиков, и не только у новичков, я понял, что в большинстве случаев, когда человек сталкивается с ошибкой, которую не может понять, как не может понять объяснение коллег из чата или их наводящие вопросы, причиной является бездумное использование готовых кусков кода или библиотек. Однако, полагаясь на готовые примеры кода, которые у них не работают (а в этой сфере код, написанный больше года назад, по умолчанию требует обновления или вообще переработки, и это касается кода со stack overflow, библиотечных гайдов и даже гайдов от самого Google), они не понимают причин возникающих ошибок или же отличающегося поведения, поскольку полагаются на библиотеку как китайскую комнату, не пытаясь разобраться в её архитектуре и принципах работы.

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

Читать далее
Total votes 1: ↑1 and ↓0+1
Comments0

Как научиться проходить собеседование в Google

Reading time14 min
Views14K

На этой неделе у нас выступала Ава Катушка — тренер в Verbetcetera.

Verbetcetera — буткамп для тех, кто хочет подготовиться к интервью в Большой пятерке — Google, Amazon, Facebook, Apple и Microsoft. Менторы Verbetcetera распределены по 5 странам, уже работают в компаниях-таргетах, знают все про специфику работы и требования к кандидатам на разных рынках.

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




Меня зовут Ава Катушка. Я училась в МФТИ, на факультете computer science, который называется ФИВТ. Мой третий курс был довольно сложным, у меня было много стресса, экзамены, навалились проблемы со здоровьем, семейные проблемы.

Я помню, я зашла в книжный магазин и увидела книгу «О чем мечтать». Мне стало интересно; я помнила, что когда-то о чем-то мечтала, но не помнила, о чем. Я раскрыла эту книгу, и прямо там, в «Библио-Глобусе», начала выполнять упражнения из этой книги. И оказалось, что я выполняла ожидания всех людей вокруг – моей семьи, учителей, кого угодно, кроме своих собственных. Я тогда сильно разозлилась. Мне стало интересно – чего же я, собственно, сама хочу. Позже я сидела в Парке Горького и думала об этом. Я поняла, что хочу путешествовать, хочу завести друзей – у меня была с этим проблема – и хочу с нуля написать свой вебсайт. И у меня, как по волшебству, в том году все начало сбываться.
Total votes 30: ↑21 and ↓9+30
Comments35

Как выучить иностранный язык: алгоритм

Reading time13 min
Views158K

Если вы хоть немного пересекались с Machine Learning, то понимаете, что человеческий мозг — это, по сути, большая нейросеть. А раз так, то и работу с ним можно строить по известным в ML алгоритмам. Так я нашел универсальный способ выучить любой иностранный язык до нормального уровня в разумные сроки. И на себе проверил его эффективность.

Читать далее
Total votes 56: ↑50 and ↓6+62
Comments123

Delegate Adapter — зачем и как

Reading time11 min
Views33K
Практически во всех проектах, которыми я занимался, приходилось отображать список элементов (ленту), и эти элементы были разного типа. Часто задача решалась внутри главного адаптера, определяя тип элемента через instanceOf в getItemViewType(). Когда в ленте 2 или 3 типа, кажется, что такой подход себя оправдывает… Или нет? Что, если завтра придет требование ввести еще несколько типов да еще и по какой-то замысловатой логике?



В статье хочу показать, как паттерн DelegateAdapter позволяет решить эту проблему. Знакомым с паттерном может быть интересно посмотреть реализацию на Kotlin с использованием LayoutContainer.
Читать дальше →
Total votes 7: ↑7 and ↓0+7
Comments5

Как объяснить бабушке, что такое Agile за 15 минут с картинками

Reading time7 min
Views1.2M
«Любое дело всегда длится дольше, чем ожидается, даже если учесть закон Хофштадтера.»
— закон Хофштадтера

image

Самый просматриваемый ролик на YouTube по теме agile. 744 625 просмотров на момент публикации данной статьи. Легкий стиль изложения, картинки и всего 15 минут — лучшее что я видел. TED отдыхает.
Total votes 72: ↑63 and ↓9+54
Comments36

Реактивные приложения с Model-View-Intent. Часть 1: Модель

Reading time9 min
Views32K
При работе с платформой Android я столкнулся со множеством проблем, потому что проектировал свои Модели неправильно. Мои приложения были недостаточно реактивными. Теперь используя RxJava и Model-View-Intent (MVI) я, наконец, добился нужного уровня реактивности. Об этом я пишу цикл статей. В первой части расскажу о модели и объясню, чем она важна.
Total votes 16: ↑16 and ↓0+16
Comments8

Самодельный рекуператор для загородного дома с КПД 80%

Reading time2 min
Views108K

image


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

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

Information

Rating
Does not participate
Location
Пермь, Пермский край, Россия
Date of birth
Registered
Activity