Dolgo.polo Dev | Денис Долгополов
2.27K subscribers
88 photos
2 videos
120 links
Разбираемся в мобильной разработке (Android/iOS) и пытаемся выяснить, зачем оно так устроено

Статистика/цены: @dolgo_polo_dev_stats

По вопросам/рекламе: @dolgopolovdenis
Download Telegram
Ё

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

Но существует "ЗелЁная улица"

Выходит была такая цепочка ввода фичи:

1. разработчик забыл разработать автозамену E на Ё и написать юнит-тест с Ё
2. тестировщики не проверили Ё
3. продакт принял заказ, не попробав ввести Ё
4. бизнес потерял клиентов, живущих на Ё-ных улицах

а у кого такого не было, чо уж тут

но есть интересный вопрос — насколько эффективнее начнут работать алгоритмы сжатия текста, если убрать Ё из алфавита?
Please open Telegram to view this post
VIEW IN TELEGRAM
😁24🤡7👎3👍1
🔥🔥🔥

одна папка, а сколько контента

блоги с авторским контентом по Android собрались в одной папке добавить 😎

🥰🥰🥰
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8👍53👎3🤔1
пост капсула времени

к началу 2028 года:

мобильные разработчики перестанут верстать экраны вручную

верстка будет генерироваться автоматически, а разработчикам останется править баги / оптимизировать скорость


маятник качнется в сторону фулл-стек разработчиков

среднему мобильному разработчику придется больше шарить за смежную платформу iOS/Android, уметь верстать вебсайты и знать как работает бэк


Apple сначала потеряет монополию на магазин приложений, а потом вернет ее, выпустив Apple Store Lite

в нем не будет такой строгой модерации, но будет плашка "качайте на свой страх и риск"


ИИ рынок разделится между 2-3 основными игроками, которые будут поставлять полный набор ИИ в одной подписке


Android/iOS заберет заметный процент рынка ПК-систем. Часть офисных сотрудников начнут использовать мобилку с внешним монитором вместо ноута


на собесах перестанут спрашивать про MVI/MVVM, алгоритмы и прочие теоретические знания... останутся только практические задачи на проектирование и спортивное ориентирование в больших кодовых базах


пинганите в 2028, посмотрим, насколько обосрался
Please open Telegram to view this post
VIEW IN TELEGRAM
40🤡12👍94🔥2❤‍🔥1😱1
Google выпустил новый шрифт для кода — Google Sans Code

киллер-фича 🤩:
i, l и 1 начертаны нарочито по-разному, чтобы не путать

шрифт уже доступен в Android Studio

KRACUBOE?


а вы говорите в мобильной разработке ничего важного не происходит, как вам такое? 🚬
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥43😱17🤣17👎1
💻 Какая часть https-трафика не шифруется?

Небольшой факт, который многое объясняет

💡 Вопрос:
почему можно легко заблокировать доступ к сайту, если большая часть трафика в интернете зашифрована с помощью https/TLS?

откуда провайдер знает, с каким сайтом я общаюсь?

провайдер расшифровывает трафик?



Если вы ходили на курс по компьютерным сетям, то вопрос покажется наивным

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


Короткий ответ:
IP сервера палится:
🔵при обращении к DNS
🔵при отправке каждого пакета байтов на уровне TCP/UDP (то есть на один программный уровень ниже, чем https)


Разъяснялка:
Мы знаем имя хоста (ya.ru)

Чтобы обратиться к этому домену, нужно узнать IP, за которым он живет (часто за одним IP живет несколько доменов)

Для получения IP по домену клиент идет к DNS, который в открытом виде возвращает IP бэка

💥 первый раз IP бэка спалилось

Дальше клиент начинает слать на этот IP пакеты по UDP/TCP

🔵в http1, http2, WebSockets, gRPC с помощью TCP
🔵в http3 с помощью UDP

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

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

💥 IP палится во второй раз (с отправкой каждого пакета)


Итого:

🔵шифруется полезная нагрузка (заголовки, тело) — то что передается на уровне https, WebSockets, gRPC...

🔵не шифруется информация о получателе пакета


😎
Please open Telegram to view this post
VIEW IN TELEGRAM
👍34❤‍🔥9🔥6💯3
This media is not supported in your browser
VIEW IN TELEGRAM
📱 этот пост стоил мне 268 рублей


в приложении tutu можно купить билеты на электричку, и тогда кондукторы будут сканировать QR из приложения

после сканирования просят нажать на QR — это запускает анимацию

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

🧠

X5 Group, берите на заметку, может проблему со списанием чужих баллов в Пятерочке можно так законтрить


новая рубрика #продуктоваяфича
Please open Telegram to view this post
VIEW IN TELEGRAM
115👍12🤣7🤔3🔥2
🐄 фермы

мне скинули статью про мобильные фермы физ девайсов


что интересного пишут:

🔵существуют open-source решения для поднятия своей фермы физических девайсов — Smartphone Test Farm (OpenSTF), VK DeviceHub...

🔵у Яндекса есть Колхоз — внутренний проект-ферма. Правда, последние упоминания о нем в интернете нашел от 2022 года. Жив ли он?

🔵прикинули цифры — чтобы собрать свою ферму из 30 устройств (если пытаться охватить все сегменты — флагманы, бюджет, разные версии ОС, разные производители и т.д), нужно 2млн рублей

🔵в ферме устройств Selectel довольно широкий набор доступных девайсов — Apple (и новые, и старые ОС), Huawei, Samsung, Realme, TECNO, Infinix, Google

🔵фермы умеют в интеграцию с GitLab, то есть можно наладить автозапуск тестов при появлении сборок


пробовали использовать удаленные фермы физ девайсов, как ощущения?
Please open Telegram to view this post
VIEW IN TELEGRAM
7😱6👍4
✈️ Как LLM шлет ответ?

Когда задаешь вопрос GPT, ответ начинает отрисовываться построчно

Не похоже на обычный http-запрос

Больше похоже не WebSocket, но оказывается и тут мимо


В ИИ-чатах используется SSE (Server-Sent Event) — односторонний сокет

Клиент шлет хэдер:

Accept: text/event-stream



Бэк отвечает хэдером:

Content-Type: text/event-stream



После чего клиент держит соединение открытым и ожидает данные чанками в формате:

data: ... \n\n


data: о,

data: это отличный

data:
вопрос 👍👍
Please open Telegram to view this post
VIEW IN TELEGRAM
👍37🔥10❤‍🔥6🤔2
в chatGPT добавили генерацию квиза

достаточно добавить quizgpt в конец запроса


качество контента поражает воображение 🧠
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣34👍4🤡3😱2
нарушаете, товарищ айфон

в перечне обязательных приложений RuStore предусмотрен для Android и HarmonyOS. откуда пошла информация про RuStore на iOS — непонятно

upd - понятно, был отдельный документ с добавлением iOS. тогда действительно нарушаете
🤣17❤‍🔥5🔥4💯3
💰 законный способ потерять всё

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

у меня так угнали телеграм

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

а t2 переодически шлет такие напоминалки — "дайте деняг, а то продадим ваши госуслуги". мило

рубрика #продуктоваяфича
Please open Telegram to view this post
VIEW IN TELEGRAM
17❤‍🔥8👍8
👜 Что в моей сумочке?

Список ежедневных программ:

🔵Charles / Proxyman — прокся. никогда не выключаю ее, чтобы всегда иметь историю запросов за последние часы

🔵Figma — смотрю макеты + рисую блок-схемы в Figma Jam — функционала там немного, зато эстетично

🔵Календарь с большими уведомлениями за 10 минут до встречи

🔵Mattermost — не понимаю копании, которые общаются в телеге. Если у вас больше 3 человек в команде и больше 1 задачи в разработке, нужна поддержка каналов и тредов

🔵Sublime Text — легковесный текстовый редактор с подсветкой синтаксиса

🔵настроенные alias для команд adb в терминале, чтобы управлять эмулем (быстрый сброс приложения, открытие диплинка...)

🔵снепшот эмуля с разрабатываемой версией приложения с фича-ветки + снепшот эмуля со стабильной версией приложения с мастер-ветки

какие еще тулзы полезно держать открытыми?
Please open Telegram to view this post
VIEW IN TELEGRAM
👍218🔥5😱1
в дороге послушал несколько подкастов с IT-специалистами

попросил chatGPT сделать выжимку основных тезисов гостей:

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

что сказать, это реально вдохновляет
🤣67💯6🔥4
🔥 мой топ adb алиасов


вкыл/выкл проксирование:
alias adbProxy="adb shell settings put global http_proxy"
alias adbProxySet="adbProxy `myIp`:8888"
alias adbProxyReset="adbProxy :0"


открыть диплинк:
alias adbDl="adb shell am start -a android.intent.action.VIEW -d"


ввод текста:
alias adbIn="adb shell input text"


сброс данных приложения:
alias adbResetApp="adb shell pm clear ru.app.package"



еще:
🔵(habr) прикладное adb для зумеров
🔵(пост) какая Activity открыта
🔵(пост) как тапать хомяка через adb
🔵(комменты) как удобно работать с несколькими девайсами
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍29🔥17❤‍🔥8🤡2
🎃🤖 Android AppLink / iOS Universal Link
рубрика #cross_post

механизм, который позволяет по https-ссылке открывать не браузер, а приложение


на iOS и Android заводится абсолютно одинаково:

🔵в (Android) Manifest / (iOS) Info.plist объявляем, какие домены приложение хочет открывать

🔵берем (Android) SHA256-подпись / (iOS) Apple Developer Team ID и кладем в json-файл

🔵на домене хостим этот json-файл c именем (Android) assetlinks / (iOS) apple-app-site-association

система при клике на https-ссылку ищет приложение на устройстве, которое хочет открывать этот домен
система сверяет json-файлик на домене и подпись/id приложения
система открывает приложение


например,
🤖 https://www.ya.ru/.well-known/assetlinks.json
🎃 https://www.ya.ru/.well-known/apple-app-site-association
Please open Telegram to view this post
VIEW IN TELEGRAM
👍26❤‍🔥6🔥4
интересно наблюдать, как с каждый годом программа митапов становится все сложнее

в этот раз позвали на конференцию-коллабу (aka bigtechnight) Яндекса со Сбер/x5/Lamoda/T-Банк


что было (помимо технических докладов):

🔵IT-стендап

смешнее ли это концерта Луи Си Кея? конечно нет
интереснее ли это очередного доклада про SDUI? конечно да
послевкусие и атфосфера? определенно располагающие к нетворкингу

шутить про IT тяжелее, чем про жену/ребенка + выступают не комики, а технические специалистыпоэтому результат поражает. всем кто был на сцене респект


🔵трансфер между офисами

собрал все носки и наклейки в одной локации?можно за 20 минут доехать до офиса следующей компании


🔵куча спецов из разных областей — было с кем обсудить систему охлаждения Алисы, разобраться в компановке серверов, поиграть в проектировщика бэкенд-кластера

в общем модный System Design в чистом виде на свежем воздухе


p.s. на фото — идеальный программист глазами HR-отдела

@yandex, уже в вашем внутреннем дворике
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7🤣6💯3
обидно, только плюс-минус научился понимать язык бэкендеров, и слова
микросервис, ку восемь эс, джиэрписи, релоад под, энжинкс, лоад балансер
начали обретать какой-то смысл

и тут сходил на конфу для ИИ-разработчиков

снова почувствовал себя чужим среди своих — раг, претрейн, предикт, ансамблирование, тичинг форсинг рнн
🤣27💯10❤‍🔥4😱1
Сколько времени занимает измерение времени?

Обычно для замеров перфа используются:

🔵System.currentTimeMillis() — отдает количество мс, прошедших с 1970 года
🔵System.nanoTime() — отдает количество нс от запуска JVM

🔵(coroutine) measureTimeMillis() — под капотом дергает System.currentTimeMillis()
🔵(coroutine) measureTimeNanos() — под капотом дергает System.nanoTime()


два фан факта:

💡 выражение System.currentTimeMillis() * 1_000L - System.nanoTime() некорректно, так как функции отсчитывают время от разных точек

💡 обе функции возвращают время не моментально, им на это нужно около 10-100нс (смотря на каком железе и ОС запускать, оч длинная статья с пруфами)

погонял локально тест со скрина, получил результаты около 10-30нс
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10👍8❤‍🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
#продуктоваяфича

хотел посмотреть пост в вк

-> половину экрана закрыла шторка "открыть в приложении?"

-> через 3 секунды поверх нее вылезла еще одна плашка "ОТКРЫТЬ В ПРИЛОЖЕНИИ"

ладно, убедили

-> открывается приложение и меня встречает:

-> сплешскрин с горизонтальным лоадером

-> потом загрузочный экран с круглым лоадером в диалоге

-> потом скелетон с анимацией загружаемой страницы

-> потом начала прогружаться видеошапка сообщества

-> забыл, зачем заходил

парадокс, ведь каждая фича по отдельности сделана идеально
Please open Telegram to view this post
VIEW IN TELEGRAM
1🤣40🤡13🔥8
💵 как кэшировать

в комментариях скинули годный доклад с базовой базой от 2019г (видео, преза)


tldr:

в приложении можно наладить 3 вида кэша:

☑️ в тупую — сохраняем в файлик все, скаченное из долгого интернета

☑️ с проверкой актуальности — перед чтением кэша делаем легкий запрос на бэк с вопросом "есть более свежие данные?"

☑️ с мержингом — обновляем не всю единицу контента, а скачиваем с бэка только обновленную часть, и мержим на клиенте

во всех случаях желательно не забывать очищать кэш — по времени, размеру или LRU
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16🔥5