Android | Михаил Белый
309 subscribers
272 photos
32 videos
127 links
Авторская песочница о карьере в IT в роли Mobile Dev (Android, Kotlin, Multiplatform) и разных вещах, которые мне интересны.

Посты каждый день в 5 вечера.

Автор: @michaelbel

Забустить: t.me/boost/foundout

Задонатить: boosty.to/michaelbel
Download Telegram
Полный гайд по Telegra.ph

Телеграф – это альтернатива постам в Telegram с меньшими ограничениями. Позволяет создавать длинные статьи, вставлять изображения, видео и ссылки, а также использовать Instant View для быстрой загрузки. В отличие от обычных постов, где есть лимиты на размер и медиа, Телеграф даёт больше свободы для контента. В статье – все возможности сервиса.

🐗 telegra.ph/telegraph-11-02-27
Please open Telegram to view this post
VIEW IN TELEGRAM
52👍111
🤡 Проходим собес на софты

Четвертая статья о подготовке к Android-собеседованиям. Она основана на личном опыте прохождения 9 интервью с руководителями, где проверяли мотивацию, личные качества и соблюдение дедлайнов. Описал несколько процессов, какие вопросы задают и что ждут в ответ.

🐗 Читать на Boosty
Please open Telegram to view this post
VIEW IN TELEGRAM
1132111
🐗 Три месяца решаю литкод

За ноябрь решено 30 задач уровня изи. Двигаюсь по порядку. Пропустил 2 задачи про бинарные часы и матрицы. Остальные были как обычно – бинарный поиск, строки и массивы. Опустился в рейтинге на 1 086 811 место.

Power of Four
Reverse String
Reverse Vowels of a String
Intersection of Two Arrays
Intersection of Two Arrays II
Valid Perfect Square
Guess Number Higher or Lower
Ransom Note
First Unique Character in a String
Find the Difference
Is Subsequence
Sum of Left Leaves
Convert a Number to Hexadecimal
Longest Palindrome
Fizz Buzz
Third Maximum Number
Add Strings
Number of Segments in a String
Arranging Coins
Find All Numbers Disappeared in an Array
Assign Cookies
Repeated Substring Pattern
Hamming Distance
Number Complement
License Key Formatting
Max Consecutive Ones
Construct the Rectangle
Teemo Attacking
Next Greater Element I
Keyboard Row

#leetcode@foundout
Please open Telegram to view this post
VIEW IN TELEGRAM
5322
🐗🐗 Обновление карьерного роадмапа

• Отдельная страница Detekt.
• Отдельная страница Compose Canvas.
• Отдельная страница для Java Strings.
• Новая страница Getting Started.
• Новая страница Compose Modifier.
• Новая страница Regex.

🐗 Getting Started
Эта страница будет содержать материалы для начала обучения.
Добавлены курсы по Android, Kotlin, Java, Compose, Ktor, Алгоритмам, SQL, Git и AI.
Добавлены плейлисты школы мобильной разработки 2023 и 2024.
Добавлены примеры проектов по анимациям, архитектуре, камере, auto, compose, connectivity, идентификации, фитнесу, играм, графике, здоровью, медиа, NDK, производительности, поиску, датчикам, безопасности, хранилищу, тестировании, TV, UI, Gemini, виджетам и часам.

🐗 Screening
Обновлен список вопросов с собеседований.

🐗 Computer Science
Псевдопараллельность.
Шифрование.

🐗 Algorithms
Добавлены решения 30 задач с литкода.
Обновлено описание алгоритмов сортировки.

🐗 DevOps
Обновлено описание настройки анализатора кода Detekt.

🐗 Java
Добавлен список всех ключевых слов языка.
Serializable, transient и ручная сериализация.
Basic types и Type сasting.
Reference types.
Dynamic Proxy.
Лямбды: аннотация FunctionalInterface, оператор ::
I/O: InputStream, BufferedInputStream, OutputStream, BufferedOutputStream, Reader, BufferedReader, Writer, BufferedWriter.
Исключения: Throwable, Error, Exception, Checked, Unchecked, try, catch, finally, throw, throws.
Коллекции: Iterator, Queue, ArrayDeque, PriorityQueue.
Кейворды: package, record, enum, interface, default, static, final, native, instanceof, public, protected, private.

🐗 RxJava
Flowable.
AndroidSchedulers.mainThread.
PublishSubject.

🐗 Kotlin
Добавлен список всех ключевых слов языка.
Delegates: ReadOnlyProperty, ReadWriteProperty, PropertyDelegateProvider.
Flow: обновилось описание SharedFlow и StateFlow.
Channels: capacity, методы receiveCatching, trySend, tryReceive, cancel. Обновлено описание методов receive, isClosedForSend, isClosedForReceive, send, close.
Regex: RegexOption, matches, containsMatchIn, find, findAll, replace, split, проверки.
Ключевое слово annotation.

🐗 Kotlin Multiplatform
JS: isMobileBrowser, getScreenWidth.

🐗 Android
Описание AOSP.
Manifest: Параметры Application: hardwareAccelerated и localeConfig. Атрибуты uses-feature, uses-permission, uses-permission-sdk-23, activity-alias, profileable и queries.
SDK: Аннотации RequiresApi, TargetApi и CallSuper.
Fragment: supportFragmentManager, parentFragmentManager, childFragmentManager, findFragmentByTag, findFragmentById.
Network: http-заголовки Authorization, Content-Type, Accept, User-Agent, Cache-Control. Обновлено описание OkHttp Interceptor. OkHttpClient. Cache.
Test: метод runTest.
Build: R8.
UI: Plurals. Level List. State List. Layer List. Bitmap.
HandlerThread.
StorageStatsManager.

🐗 Jetpack
Glance: appwidget-provider, GlanceAppWidget.

🐗 Compose
LocalIndication.
LocalRippleConfiguration.
BasicTextField.
Modifier: then, Size.
Canvas: drawLine, drawRect, drawRoundRect, drawCircle, drawOval, drawArc, drawPath, drawPoints, drawImage.
Аннотации DontMemoize и NonSkippableComposable.

🐗 Gradle
Файл gradle․properties.
Файл gradle-wrapper․properties.
Файл local․properties.
Файл settings.gradle.kts.
Файл build.gradle.kts (top level).
Файл build.gradle.kts (module level).
Файл libs.versions.toml.
Обновлено описание команд.

🐗 Studio
print.
println.
Обновлено описание настроек.
Добавлены настройки для логката.

🐗 Samples
Добавлено 2 Android-проекта.
Добавлено 2 KMP-проекта.

🐗 ОТКРЫТЬ В NOTION

#roadmap@foundout
Please open Telegram to view this post
VIEW IN TELEGRAM
9332
🐗 Обновление эмодзипака

Сайт оптимизирован для мобильных браузеров iOS и Android.
• На сайте теперь выбирается тема, установленная на устройстве.
• Сайт теперь запускается как мини-приложение внутри телеграма.

Добавлен новый пак с 168 эмодзи.

🐗 Android 16. Третий год с космическими мотивами.

🐗 Apple Numbers

🐗 Apple Pages

🐗 Samsung Pay

🐗 Yandex CodeRun

🐗 JetBrains Upsource

🐗 xAI

🐗 Bybit

🐗 IMDb

🐗 TMDB

🐗 Outline VPN

🐗 Doom

🐗 Cobol

🐗 ClojureScript

🐗 Bluesky

🐗 Flipboard

🐗 Foursquare

🐗 Datadog

🐗 Pastebin

🐗 1C

🐗 Robinhood

🐗 TechCrunch

🐗 Pocket

🐗 Mobius

🐗 OBS Studio

🐗 WinRAR

🐗 Logitech

🐗 Abbyy

🐗 Strava

🐗 Gravatar

В пак с текстами добавилась интеллигентная среда разработки:

🐗🐗🐗🐗

Другие паки:
первый
второй
третий

#emoji@foundout
Please open Telegram to view this post
VIEW IN TELEGRAM
522
🐗🐗🐗🐗
Please open Telegram to view this post
VIEW IN TELEGRAM
🐗
Please open Telegram to view this post
VIEW IN TELEGRAM
5
Типобезопасные зависимости

Типобезопасность сейчас везде: навигация, вьюбайдинг, парселизация. Это надежно, согласованно и снимает когнитивную нагрузку. Зависимости между модулями тоже можно подключать безопасно. Такая возможность появилась в Gradle 7.0 и до сих пор является экспериментальной. Поэтому не видно ее массового использования.

Раньше модули подключались через строковые нотации. У этого подхода сразу несколько проблем: надо помнить путь к каждому модулю, полагаться на поиск и замену, если его переместить или переименовать. Ошибка выскочит только при сборке приложения.

С типобезопасным подключением ошибка видна сразу в файле. Не надо лишний раз собирать. Также IDE поддерживает автодополнение. Дефисы и подчеркивания в имени модуля преобразуются в верхний регистр.

Включи фичу в своем settings.gradle.kts, чтобы заработало.
6321
Как произносить термины из Android

О вы не из Англии?
Сейчас исправим. Зазвучишь на валютной удаленке как глориус нейтив спикер.

Gradle – Грéйдл
ProGuard – Прóгард
R8 – Ар-Э́йт

Ktor – Кé‎йтор
OkHttp – Окéй-Эйч-ти-ти-пи
GraphQL – Граф-Кью-Эл
gRPC – джи-Ар-Пи-Си

Drawable – Дрóуэбл
9-Patch – Найн-Пэтч
Choreographer – Кореóграфер
LruCache – Эль-ар-ю Кэш
RecyclerView – Рисáйклер Вью
onMeasure – он Мéжур
Lifecycle – Лáйфсайкл
Database – Дéйтабэйс
ForeignKey – Фóрин Ки
Qualifier – Куóлифайер

Composable
– Компóузэбл
Immutable – Иммъю́тэбл
derivedStateOf – дера́йвд Стейт Оф

Null Safety – Нáлл Сéйфти
Nothing – Нáсинг
Generics – Дженéрикс
CharSequence – Чар Си́куэнс
Deferred – Дефё́д
SharedFlow – Шéрд Флоу
SupervisorJob – Сюпервáйзор Джоб
NonCancellable – Нон Кáнселэбл
Dispatcher – Диспáтчер
Unconfined – Анконфáйнд
yield – и́илд
flatMap – флэт Мэп
distinctUntilChanged – дистúнкт Антúл Чéйнджд
lazy – лéйзи
vetoable – вúтоэбл
associateBy – ассóшиэйт Бай
require – риквáйр
return – ретё́н
expect – экспéкт
actual – áкчюал
sealed – си́лд
default – дефóлт
private – прáйвэт
external – экстё́рнал
typealias – тáйпэлиас
reified – рэ́ифайд
companion object – компéнион óбжект

Parcelable – Пáрселэйбл
Serializable – Сериалáйзэбл
transient – трáнзиент

Concurrent – Конкáрент
Runnable – Рáнабл
synchronized – синхронáйзд
volatile – вóлэтайл
ReentrantLock – Ри́энтрант Лок
CountDownLatch – Каунтдáун Лэч
CyclicBarrier – Сáйклик Бáрьер
Iterable – И́тербл
Queue – Кю́у
Observable – Обсéрвабл
Completable – Камплúтабл
Thread – Срéд
ThreadPool – Срéд Пул
Scheduler – Скéджулер
ScheduledThreadPoolExecutor – Скéджулд Срéд Пул Экзéкьютор
Throwable – Сро́убл
throw – сроу
finalize – фáйналайз

Espresso – Эспрéссо
Mockito – Мокúто

Clean Architecture – Клин А́ркитекче
Structures Concurrency – Стрáкчед Конкáренси
Unidirectional Data Flow – Юнидирéкшнл Дéйта Флоу

Single Responsibility – Cи́нгл Респонсиби́лити
Open-Closed – Óупен-Клóузд
Liskov Substitution – Ли́сков Сабститю́шн
Interface Segregation – И́нтерфейс Сегрегéйшн
Dependency Inversion – Депéнденси Инвё́ржен

APK – Эй-Пи-Кей
AAB – Эй-Эй-Би
IDE – Ай-Ди-И
JVM – Джéй-Ви-Эм
KSP – Кéй-Эс-Пи
SDK – Эс-Ди-Кей
AIDL – Эй-Ай-Ди-Эл
XML – Экс-Эм-Эл
84321
🔝 Топ-100 вопросов с Android-собеседований

Пятая статья о подготовке к собеседованиям. Без лишних слов – сотня самых часто задаваемых вопросов на технических интервью.

🐗 Читать на Boosty
Please open Telegram to view this post
VIEW IN TELEGRAM
1133221
Уходим в отпуск выгодно в 2025

Самый просматриваемый пост в моем рабоче-крестьянском канале – про отпуск. Сегодня его годовщина. Значит пора планировать выгодный отпуск в новом 2025 году.

Открываем производственный календарь на 2025 год и видим:
• в январе отдыхаем 1-8.
• гендерные праздники в феврале и марте выпадают на выходные.
• в мае отдыхаем 1-4 и 8-11.
• в июне 12-13.
• в ноябре 3-4.
• в декабре 31.

Рабочих дней в 2025 году будет 247.
январь – 17 раб. дней
февраль – 20 раб. дней
март – 21 раб. день
апрель – 22 раб. дня
май – 18 раб. дней
июнь – 19 раб. дней
июль – 23 раб. дня
август – 21 раб. день
сентябрь – 22 раб. дня
октябрь – 23 раб. дня
ноябрь – 19 раб. дней
декабрь – 22 раб. дня

Выгоднее всего уходить в отпуск – в апреле (сакура цветет), июле, сентябре, октябре и декабре (приклеить к каникулам).
Невыгоднее всего – в январе, мае, июне и ноябре.

Если с зарплатой 300k взять отпуск на 2 недели 17-30 декабря, то доход за месяц составит 306 968₽ (зарплата 163 636₽ + отпускные 143 332₽). Если взять 16-29 июня – 285 437₽ (зарплата 142 105₽ + отпускные 143 332₽).

Многие (как и я раньше) хранят свои сбережения в неиспользуемых днях отпуска. Радуются котлетке, которая падает на карту после увольнения. Это ошибочная практика. Отпускные выплатят в любом случае – сходил ты в отпуск или нет. Лучше сходить.

#rest@foundout
643321
🤫 Как готовиться к собесу по мнению компаний

Корпоративную плотину прорвало и в мои загребущие руки утекла ценнейшая инсайдерская информация. Наконец понятно, что именно учить для успешного прохождения собеса. Больше никакого распыления на роадмапы. Сейчас посмотрим, что сами компании рекомендуют изучить для прохождения своих технических этапов. Под лупой – Озон, Яндекс, Альфа, Т-Банк и Авито.

🐗 Читать на Boosty
Please open Telegram to view this post
VIEW IN TELEGRAM
6321
🐗 Хоткеи Android Studio

Пришло время обновить пост про хоткеи. Теперь и для винды.

🐗 Double Shift

🐗 Double Shift

Поиск по всем названиям классов и файлов в проекте.

🐗 Command + Shift + F

🐗 Ctrl + Shift + F

Поиск по коду внутри классов и файлов.

🐗 Command + Shift + K

🐗 Ctrl + Shift + K

Открыть окно пушинга коммитов в удаленный репозиторий.

🐗 Command + Shift + Minus

🐗 Ctrl + Shift + Minus

Свернуть класс.

🐗 Command + Shift + Plus

🐗 Ctrl + Shift + Plus

Развернуть класс.

🐗 Command + Option + L

🐗 Ctrl + Alt + L

Форматировать отступы по табуляции.

🐗 Command + Shift + /

🐗 Ctrl + Shift + /

Закомментить/разкомментить блок кода.

🐗 Command + D

🐗 Ctrl + D

Дублировать строку.

🐗 Fn + Control + Space

🐗 Ctrl + Space

Вывалить список доступных операторов.

🐗 Fn + F2

🐗 F2

Перенести курсор на следующую ошибку в файле.

🐗 Fn + F4

🐗 Shift + F4

Открыть выделенный файл из вкладки Commit в редакторе (если просто 2 раза тапнуть мышью – откроется commit diff).

🐗 Fn + Shift + F6

🐗 Shift + F6

Переименовать выделенное название сигнатуры везде.

🐗 Option + Enter

🐗 Alt + Enter

Импортировать сигнатуру на которой сейчас курсор.

🐗 Option + I

🐗 Ctrl + I

Имплементировать методы в текущий класс.

🐗 Option + O

🐗 Ctrl + O

Переопределить методы в класс.

🐗 Option + →

🐗 Ctrl + →

Перенести курсор к следующему слову в строке.

🐗 Option + Cursor

🐗 Alt + Cursor

Активировать мультикурсор (чтобы редактировать сразу несколько строк).
Please open Telegram to view this post
VIEW IN TELEGRAM
6222111
✏️ Сам себе фидбек

Цель собеседования – получить работу. Цель провального собеседования – получить обратную связь, чтобы подготовиться к следующему. Как получить обратную связь? – посмотреть на себя со стороны.

Существует фидбек, с которым к тебе возвращается рекрутер. Давай посмотрим, как он обычно выглядит 🐗.
Как видим, фидбек довольно пассивный. Ожидаю список конкретных вопросов, лайвкодингов и алгоритмов, в которых плаваю. Получаю осознание, что давать фидбек не любят, не умеют и не хотят. Если очень попросить – дадут размытые рекомендации: «порешай литкод» и «почитай статьи Елизарова на медиуме».

Теперь о более эффективном способе получения обратной связи – записи собеседования на видео и его последующем анализе лично или с ментором.

Продуктовые менеджеры, СEO и прочие специалисты, меняющие работу по знакомству, любят разводить демагогию на тему, что запись собеса – это «дилемма», «холивар» и «нарушение деловой этики». Терзают их моральные принципы и сделки с совестью: писать собес втихую или спросить разрешение у собеседующего?

По правде говоря, не вижу здесь пространства для дискуссии. Тем более, когда делаешь запись для себя, без последующего распространения. Спрашивать разрешение – получить 100% отказ и предвзятость.

Что даёт запись
1. Работа над уверенностью. Видео поможет выявить затыки в речи, паразиты и брань через слово, а также покажет, как ты выглядишь и звучишь. Это ценный инсайт для корректировки невербального поведения, манеры общения и работы над уверенностью.
2. Вопросы и задачи. Иногда на собеседовании задают по 90 вопросов, и к последнему уже не помнишь, на какие из первых ответил. С задачами и алгоритмами еще интереснее: на первом собесе сыпешься, потом находишь решение, на следующем уже не впадаешь в тильт. Такой утилитарный подход доказал свою эффективность.
3. Контекст компании. Когда собеседования идут потоком, полезно просто помнить, что это за люди, как кого звали, о чем вы договорились. Помогает накапливать материал для следующих этапов.

Как записывать
Наша цель – получить запись, на которой видно всё, что происходит на экране, и слышно как тебя, так и собеседующую сторону. Записывать только аудио недостаточно – это не даст полной картины. Вместо того чтобы разбираться с настройками OBS (лень), поделюсь способом, которым записал 30 собесов просто на ноутбуке. Перед подключением на звонок включаю запись экрана стандартной записывалкой. Звук идёт из встроенных динамиков, голос записывается встроенным микрофоном. Наушники не использую, чтобы избежать ситуации, когда аудио отваливается. Получается идеальный материал – все видно, всех слышно. Дополнительного софта не требуется. Подходит любой формат звонков – зум, гуглмитс, контурталк и так далее. Главное следить за памятью на харде. Никто не жалуется, что слышит свое эхо в моих динамиках. Никто не просит пошарить экран. Обнаружить что ведется запись нельзя.
Please open Telegram to view this post
VIEW IN TELEGRAM
103221
Список всех постов о личном опыте прохождения собеседований в 2024 году, опубликованных за последние два месяца.

🐗 Вышел на рынок
Как выглядит поиск работы – ожидания и реальность, статистика, этапы и процессы.

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

🐗 Будь готов к техническому интервью
Что происходит на техсобесе – теория, лайвкодинги, алгоритмические задачи и систем дизайн.

🐗 Проходим собес на софты
Что происходит на собесе с руководителем – описание процесса, какие личные качества важны и что спрашивают про мотивацию.

🐗 Топ-100 вопросов с Android-собеседований
Самый свежий список популярных технических вопросов с ответами.

🐗 Как готовиться к собесу по мнению компаний
Материалы для подготовки, которые компании прислали в лс.

🐗 Сам себе фидбек
Как обратная связь и запись собеса на видео помогают стать лучше.
Please open Telegram to view this post
VIEW IN TELEGRAM
125321
Подарки коллегам

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

Я познакомился с этой практикой на первой офисной работе. Разгребаю почту – письмо от начальницы: «У мистера Х в этом месяце днюха, со всех 500₽ мне на сбер». У меня было 6 коллег и за 9 месяцев работы в компании я отправил 3k на подарки. На свой др получил в конверте те же 3k. Через 2 недели меня уволили. Что это, если не бесполезное нагревание атмосферы?

На следующей работе, во времена ковидной удалёнки, у компании была коллаба с Flowwow. В отделе кадров поинтересовались моим адресом и оформили доставку подарка от компании. Оказался замиокулькас 🐗. Три года я его растил и радовался.

Проходят годы, меняются рабочие места, и вот я устраиваюсь в Магнит – бигтех с тысячами сотрудников. Получаю доступы, добавляюсь в чатики. Команда – 50 человек. Через неделю меня и 48 коллег (всех, кроме именинника) добавляют в чат для сбора на его день рождения. На следующий день добавляют ещё в один. Через неделю в команду приходит новый тимлид. Он организует созвон и дробит команду на юниты – нас становится 20 человек. Ёбает кулаком по столу и сносит все чаты со сборами. «Хотите поздравить – делайте это лично. Не выносите на уровень команды». И вдруг оказывается, что это – идеальное решение. Единственно верный подход. И работали мы долго и счастливо: удаленщиков поздравляли на дейли, офисные работяги ходили вместе в паб.

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

Тема: Днюхи в декабре
Кому: Всем
Декабрь у нас месяц знаменательный, целых 10 именинников, вот они слева направо: Ноунейм1, Ноунейм2, Ноунейм3, ... Переводим мне по номеру телефона на всех.


Письмо-напоминание повторяется раз в несколько дней. Количество получателей постепенно сокращается. Представь, что ты устроился в новую компанию с зарплатой 250k. Команда – 50 человек. 25k в год теперь нужно отчехлять на конверты. Людям, с которыми ты вообще не взаимодействуешь. С удалёнкой. Высокой текучкой. Когда работу меняют раз в год. Когда сокращают целыми отделами. Когда на рынок выходит поколение с ценностной парадигмой не смешивать рабочую и личную жизнь.

У меня нет объяснения почему эта омерзительная возня со сборами до сих пор существует, кроме как удержать тебя от увольнения хоть на какое-то время (до днюхи). Ну или имитировать бурную деятельность отдела кадров. Сборщики уходят в отпуск, заболевают, забывают кого-то поздравить. Тот перестает скидываться. Третий переводится в другую команду. Четвертый – в твою. Когнитивная нагрузка растет, и вся пирамида рушится.

Поэтому:

Если ты работник
Скипай этот буллщит.
Письмо – в спам.
Поздравь коллегу лично.

Если ты руководитель команды
Разорви спираль молчания и вежливо пресеки микроменеджмент с подарками. Он отвлекает твою команду от слаженной работы.

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

Что угодно лучше, чем бабки в конверте или переводом на карту. Например, подарок от лица компании. К деньгам сотрудников лучше вообще не прикасаться. У этой совковой привычки один путь – отмереть. Не стоит этому мешать.
Please open Telegram to view this post
VIEW IN TELEGRAM
115322
🐗 Установить KMP-приложение на айфон

Как протестировать iOS-приложение на реальном устройстве? С эмуляторами все понятно – если он установлен, то запустится прямо из Android Studio. Главное следить чтобы версия iOS на эмуляторе совпадала с Execution target в конфигурации сборки. Че делать, если нет аккаунта разработчика Apple, но есть айфон?

🐗 В KMP-проекте добавить поддержку таргета iosArm64.

🐗 Открыть iOS-модуль в Xcode, перейти SettingsAccounts и войти в свой Apple ID. Там же в разделе Team
выбрать свой аккаунт (Personal Team).

🐗 Подключить айфон к маку через кабель.

🐗 На айфоне включить режим разработчика SettingsPrivacy & SecurityDeveloper Mode🐗 (перезагрузится).

🐗 Теперь в Xcode можно выбрать свое устройство вместо эмулятора и собрать приложение.

🐗 На айфон установится сертификат. Его нужно включить: SettingsGeneralVPN & Device ManagementDeveloper App → нажать Trust.

🐗 Готово. Можно тестировать апп (кроме пушей и платежей).

🐗 В дальнейшем можно собирать iOS-таргет прямо из Android Studio, подключив айфон к маку.
Please open Telegram to view this post
VIEW IN TELEGRAM
732111
Иконка запуска

Если minSdk в твоем проекте перешагнул уровень 26 – поздравляю! Меньше страданий, больше порядка. Пора немного прибраться. Старые форматы .webp или .png больше не нужны, смело удаляем. Файл ic_laucher_round.xml и папки mipmap тоже можно снести.

Современная иконка приложения – это адаптивный вектор из двух слоев:
• background – фон 108x108 с какой-нибудь заливкой.
• foreground – сама иконка, размером от 48x48 до 66x66, вписанная в квадрат 108x108. Если иконка цветная, добавляем ещё и монохромную версию.

Форма больше не наша забота. Android сам делает иконки круглыми, квадратными или скруглёнными. От нас требуется только прописать ic_launcher в манифесте в полях icon и roundIcon.
831111
🎁 Под ёлочкой

Распаковал подарки, которые буду читать на каникулах.

Питер Абрахамс – Анатомия человека
Узнал про нее из треда Назима Гафарова, в котором собираются книги для восстановления цивилизации после ядерной войны. Как разводить пчёл и кроликов мне не интересно, а вот как работают наши тела очень даже.

Мартин Клеппман – Высоконагруженные приложения
Первая книга про харды у меня дома. Мне просто нравятся кабанчики.

Максим Ильяхов – Ясно, понятно
Когда-то проникся Пиши, сокращай Ильяхова. Теперь как истинный сектант читаю все его новые книги.
Please open Telegram to view this post
VIEW IN TELEGRAM
7311
🐗 Четыре месяца решаю литкод

За декабрь решены 32 задачи уровня изи. Всего 127. Осталось каких-то 3 279 задач. Пал в рейтинге на 864 357 место.

5 декабря количество решенных задач перевалило за сотку. 10 декабря стик дней достиг сотки и мне выдали второй почетный бейдж 100 Days Badge 2024. Я думал слутать третий (250 дней) уже в апреле, но судя по всему их выдают каждый год и 1 января прогресс поделится на ноль.

Find Mode in Binary Search Tree
Base 7
Relative Ranks
Perfect Number
Fibonacci Number
Detect Capital
Longest Uncommon Subsequence I
Minimum Absolute Difference in BST
Reverse String II
Diameter of Binary Tree
Student Attendance Record I
Reverse Words in a String III
Maximum Depth of N-ary Tree
Array Partition
Binary Tree Tilt
Subtree of Another Tree
Distribute Candies
N-ary Tree Preorder Traversal
N-ary Tree Postorder Traversal
Longest Harmonious Subsequence
Minimum Index Sum of Two Lists
Can Place Flowers
Merge Two Binary Trees
Maximum Product of Three Numbers
Average of Levels in Binary Tree
Maximum Average Subarray I
Set Mismatch
Two Sum IV - Input is a BST
Robot Return to Origin
Second Minimum Node in a Binary Tree
Longest Continuous Increasing Subsequence
Baseball Game

#leetcode@foundout
Please open Telegram to view this post
VIEW IN TELEGRAM
941