Приходит поручик Ржевский устраиваться мобильным разработчиком в крупную ИТ компанию. HR ему говорит:
- Вы готовы до конца жизни писать на Java в одном файле на 150 тысяч строк?
- Как можно, вы с ума сошли! Есть же MVVM, MVI, Clean architecture...!
- Зарплата — $1M / year after tax🧻
- А можно весь код в onCreate?
- Вы готовы до конца жизни писать на Java в одном файле на 150 тысяч строк?
- Как можно, вы с ума сошли! Есть же MVVM, MVI, Clean architecture...!
- Зарплата — $1M / year after tax
- А можно весь код в onCreate?
Please open Telegram to view this post
VIEW IN TELEGRAM
2🤣76🔥30❤10😁10🤡5
Если не хочется ждать реализации бэка
Программы-снифферы, которые позволяют перехватывать и модифицировать трафик через UI-кнопочки
код писать не надо, но придется разобраться куда тыкать
а также не очень удобно проверять сложные сценарии, когда важно замокать несколько запросов подряд
Можно быстро (за 20 строк кода и 2 запроса к нейронке) набросать свой локальный сервер, который позволит на определенные запросы получать определенные ответы
получаем почти реальный сервер с полной свободой действий
embeddedServer(Netty, port = 8080) {
routing {
get("/shop/{category}/{id}") {
val category = call.parameters["category"]
val id = call.parameters["id"]
call.respondText("Категория: $category, ID товара: $id")
}
}
}.start(wait = true)Это самая легкая штука. По сути класс, в который можно накидать респонсов, а потом по-очереди их забрать
// псевдокод
val server = MockWebServer()
server.enqueue("1")
server.enqueue("2")
api.load() // "1"
api.load() // "2"
из плюсов:
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥27👍10⚡4✍3❤2
попался прикольный сайт, который умеет в реальном времени компилировать Kotlin в байт-код через kotlinc и в машинный код через ART
зачем такое надо не знаю, но можно поиграться вечерком и посмотреть, как наш высокоуровневый сахарный смузи-вайб код превращается в настоящий мужской построчный трушный набор инструкций
зачем такое надо не знаю, но можно поиграться вечерком и посмотреть, как наш высокоуровневый сахарный смузи-вайб код превращается в настоящий мужской построчный трушный набор инструкций
👍22😁18✍3
Узнали? Это Java сегодня
кто теперь шугар daddy, пора ли переписывать все с умирающего kotlin🤮 на красивую современную java 🌈 ?
sealed interface Payment permits CreditCard, Crypto {
BigDecimal amount();
}
record CreditCard(String number, BigDecimal amount) implements Payment {}
try (var executor = Executors.newVirtualThreadPerTaskExecutor()) {
var futures = IntStream.range(1, 4)
.mapToObj(i -> executor.submit(() -> STR."Running"))
.map(Product::name)
.toList();
for (var f : futures) {
System.out.println(f.get());
}
}
record Customer(String name, int age, List<Product> products) {
public Customer {
products = List.copyOf(products);
}
}
String productType = switch (obj) {
case Product p -> p.name().contains("1") ? "2" : "3";
case null -> "null";
default -> "def";
};
cheapProduct.ifPresentOrElse(
p -> "p",
() -> "else"
);
ScopedValue<String> USER = ScopedValue.newInstance();
ScopedValue.where(USER, "superadmin").run(() -> {
System.out.println(STR."\{USER.get()}");
});кто теперь шугар daddy, пора ли переписывать все с умирающего kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
😁37🔥9👍4🤡3❤1👏1
Альтернативный способ замера перфа
Попался интересный доклад — идея заключается в том, чтобы отслеживать как много зарядки тратит приложение + мониторить нагрузку на процессор
Если приложение начинает тратить больше энергии и сильнее грузить процессор, то возможно кто-то ушатал перф
➡ тезисы:
🔵 мерить энергопотребление можно как программно через API системы, так и через прямое подключение ваттметром к плате
🔵 темная тема и понижение частоты кадров заметно снижает энергопотребление экрана
🔵 передача данных по сети (особенно по мобильному интернету) хавает много энергии
Также приводятся доказательства того, что стоит группировать сетевые запросы и отправлять их одной пачкой, чтобы как можно реже переводить модем в "активный" режим. Это же говорит и официальная дока андроида
Но к реальности, кажется, это мало применимо, так как всегда приоритетнее отправить запрос как можно раньше и показать контент пользователю, чем сэкономить несколько микроватт. Хотя у экоактивистов может быть другое мнение
Ведь еще стоит учитывать, сколько энергии и времени тратится на сжатие/разжатие данных, когда система фактически решит отправить запрос, как долго живет кэш, сколько потоков отведено под сетевые запросы, сколько живет соединение, размер запроса и ответа... слишком много параметров, чтобы можно было сделать однозначный вывод
Попался интересный доклад — идея заключается в том, чтобы отслеживать как много зарядки тратит приложение + мониторить нагрузку на процессор
Если приложение начинает тратить больше энергии и сильнее грузить процессор, то возможно кто-то ушатал перф
Также приводятся доказательства того, что стоит группировать сетевые запросы и отправлять их одной пачкой, чтобы как можно реже переводить модем в "активный" режим. Это же говорит и официальная дока андроида
Но к реальности, кажется, это мало применимо, так как всегда приоритетнее отправить запрос как можно раньше и показать контент пользователю, чем сэкономить несколько микроватт. Хотя у экоактивистов может быть другое мнение
Ведь еще стоит учитывать, сколько энергии и времени тратится на сжатие/разжатие данных, когда система фактически решит отправить запрос, как долго живет кэш, сколько потоков отведено под сетевые запросы, сколько живет соединение, размер запроса и ответа... слишком много параметров, чтобы можно было сделать однозначный вывод
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12❤6⚡6✍1
а го хайпить идею, что мобильная разработка умирает?
отпугнем новичков, обеспечим себе стабильную пенсию из-за дефицита кадров уже сегодня
отпугнем новичков, обеспечим себе стабильную пенсию из-за дефицита кадров уже сегодня
😁91🔥20👍9😱3
По умолчанию кэш http-запросов сохраняется по url:
https://g.com?timestamp=123
Если идем на тот же url, то можем попасть в кэш
Но есть нюанс
А некоторые query-параметры не влияют на респонс. Например, в них может быть зашит timestamp, аналитический маркер или прочая ерунда
Соответственно, чтобы повысить процент попадания в кэш, достаточно при записи и чтении из кэша вырезать из url незначащие query-параметры:
g.com?timestamp=123&b=1
Более того, на OkHttp реализован так, что даже порядок query-параметров играет роль. Соответственно, если всегда сортировать их в алфавитном порядке, то попадание в кэш еще вырастет
g.com?b=1&a=1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16❤6🔥5🤔2
Ё
Пробовал оформить заявку на подключение домашнего интернета по адресу "Зеленая улица", а такой улицы не существует, хотя я вроде существую и нахожусь прямо на ней
Но существует "ЗелЁная улица"
Выходит была такая цепочка ввода фичи:
1. разработчик забыл разработать автозамену E на Ё и написать юнит-тест с Ё✅
2. тестировщики не проверили Ё✅
3. продакт принял заказ, не попробав ввести Ё✅
4. бизнес потерял клиентов, живущих на Ё-ных улицах✅
а у кого такого не было, чо уж тут
но есть интересный вопрос — насколько эффективнее начнут работать алгоритмы сжатия текста, если убрать Ё из алфавита?
Пробовал оформить заявку на подключение домашнего интернета по адресу "Зеленая улица", а такой улицы не существует, хотя я вроде существую и нахожусь прямо на ней
Но существует "ЗелЁная улица"
Выходит была такая цепочка ввода фичи:
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👍5❤3👎3🤔1
к началу 2028 года:
верстка будет генерироваться автоматически, а разработчикам останется править баги / оптимизировать скорость
среднему мобильному разработчику придется больше шарить за смежную платформу iOS/Android, уметь верстать вебсайты и знать как работает бэк
в нем не будет такой строгой модерации, но будет плашка "качайте на свой страх и риск"
пинганите в 2028, посмотрим, насколько обосрался
Please open Telegram to view this post
VIEW IN TELEGRAM
✍40🤡12👍9❤4🔥2❤🔥1😱1
Google выпустил новый шрифт для кода — Google Sans Code
киллер-фича🤩 :
i, l и 1 начертаны нарочито по-разному, чтобы не путать
шрифт уже доступен в Android Studio
KRACUBOE?
а вы говорите в мобильной разработке ничего важного не происходит, как вам такое? 🚬
киллер-фича
i, l и 1 начертаны нарочито по-разному, чтобы не путать
шрифт уже доступен в Android Studio
KRACUBOE?
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥43😱17🤣17👎1
Небольшой факт, который многое объясняет
почему можно легко заблокировать доступ к сайту, если большая часть трафика в интернете зашифрована с помощью https/TLS?
откуда провайдер знает, с каким сайтом я общаюсь?
провайдер расшифровывает трафик?
Если вы ходили на курс по компьютерным сетям, то вопрос покажется наивным
Но если вы вовремя выбрали быть счастливым и прогуливали курс в ближайшем парке с подружкой и пивом, то ниже короткий обзор на то, как работает сеть Интернет
IP сервера палится:
Мы знаем имя хоста (ya.ru)
Чтобы обратиться к этому домену, нужно узнать IP, за которым он живет (часто за одним IP живет несколько доменов)
Для получения IP по домену клиент идет к DNS, который в открытом виде возвращает IP бэка
Дальше клиент начинает слать на этот IP пакеты по UDP/TCP
Сначала внутри пакетов передается информация о клиенте, происходит обмен публичными сертификатами для TLS-шифрования, и только потом начинает передаваться зашифрованные с помощью TLS заголовки/тело
Но несмотря на то что содержимое (полезная нагрузка) пакета зашифровано, к каждому пакету нужно приложить IP получателя в открытом виде — иначе никто не узнает, куда отправлять этот пакет
Итого:
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
в приложении tutu можно купить билеты на электричку, и тогда кондукторы будут сканировать QR из приложения
после сканирования просят нажать на QR — это запускает анимацию
анимация позволяет убедиться, что QR открыт в настоящем приложении, а не отправлен скриншотом от друга из соседнего вагона
новая рубрика #продуктоваяфича
Please open Telegram to view this post
VIEW IN TELEGRAM
1✍15👍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
Когда задаешь вопрос 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 в конец запроса
качество контента поражает воображение🧠
достаточно добавить 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
Список ежедневных программ:
какие еще тулзы полезно держать открытыми?
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21✍8🔥5😱1
в дороге послушал несколько подкастов с IT-специалистами
попросил chatGPT сделать выжимку основных тезисов гостей:
что сказать, это реально вдохновляет
попросил chatGPT сделать выжимку основных тезисов гостей:
У меня широкий круг нетворкинга, много знакомых, с которыми я общаюсь, и у меня много друзей. Недавно мы запустили очень крутой проект — это сильный кейс, настоящий инсайт и очень важная история. Это прям про рост, масштабирование и новые точки входа. Для меня это ещё и про энергию, синергию и окружение, которое реально двигает вперёд
что сказать, это реально вдохновляет
🤣67💯6🔥4
вкыл/выкл проксирование:
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"
еще:
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍29🔥17❤🔥8🤡2