Pull to refresh
3
0
Дмитрий @MaNaXname

Пользователь

Send message

Работа с асинхронными операциями с помощью Kotlin Coroutines

Level of difficultyMedium
Reading time20 min
Views26K

Всем привет! Меня зовут Сергей, я Android-разработчик Студии Олега Чулакова на проектах Сбера. Недавно я написал статью Многопоточность в мобильной разработке. В ней был затронут один из наиболее популярных инструментов для работы с асинхронными операциями — Kotlin Coroutines. 

Сегодня я хочу углубиться в Kotlin Coroutines и разобрать их основные компоненты. Мы рассмотрим Kotlin Coroutines, предполагая, что у вас уже есть базовое понимание языка Kotlin и некоторый опыт разработки Android-приложений. Мы изучим основные концепции Kotlin Coroutines, способы работы с асинхронными операциями, управление потоком выполнения, обработку ошибок и исключений, а также многое другое.

Моя цель — помочь вам овладеть Kotlin Coroutines и научиться использовать их для упрощения и оптимизации вашего кода, обеспечения более гладкого пользовательского опыта и более эффективного управления асинхронными операциями. Приятного прочтения, мы начинаем!

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

Авторизация по биометрии — Kotlin

Level of difficultyEasy
Reading time6 min
Views3.8K

Возможно вы знаете, что есть такая штука, как «менеджер паролей», где хранятся абсолютно все ваши логины, пароли и сайты, к которым они прикреплены. Удобная штука, чтобы не запоминать пароли и уж тем более не писать их вручную. Кому такое надо common. Поэтому многие и пользуются такими штуками по типу KeePass. А теперь смоделируем ситуацию:

Вы решили сходить в магазин и купить какой‑нибудь чешский нефильтрованный напиток, посмотрели на время и увидели, что сейчас 21:45, и совсем скоро магазины закроются. Поэтому вам пришла гениальная идея — побежать, пока магазин не закрылся, но по пути вы уронили телефон и даже этого не заметили. Когда вы возвращались домой с напитком, вы обнаружили, что вашего телефона нет, а каким‑то чудом вы пообещали себе 2 дня назад, что поставите пароль на телефон «на следующий день», что, конечно же, не сделали. Через пару минут вы заходите через ноутбук или компьютер, нажимаете на кнопку «выйти со всех устройств» и думаете, что всё — никаких проблем не будет, но тут вы заходите в вашу любимую социальную сеть и видите, что вашим друзьям или коллегам было отправлено сообщение о займе 1000 рублей. В этот момент вы понимаете, что у вас был включен тот самый менеджер паролей, в который мог зайти абсолютно любой, получив ваш телефон в руки.

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

Читать далее
Total votes 3: ↑2 and ↓1+3
Comments6

Признаюсь: я писал поддельный экран загрузки

Reading time13 min
Views26K

На выходных посмотрел видео Алексея Макаренкова с заголовком “Полоса загрузки - не то, чем кажется…”, где он рассказывает как разработчики игр мухлюют с полосой загрузки. Если кратко: это всё обман!

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

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

Чтобы разрушить стену молчания, готов рассказать как это было, и подтвердить то, о чём все догадывались.

Приподнимем завесу...
Total votes 29: ↑28 and ↓1+37
Comments108

VirtualBox: виртуальная локальная сеть, доступ в интернет через Linux-сервер

Level of difficultyMedium
Reading time4 min
Views14K

Представляю вашему вниманию продолжение своей предыдущей статьи https://habr.com/ru/articles/743950/. Здесь мы рассмотрим, как выпустить хосты в интернет через сервер с помощью утилиты iptables, фильтровать входящие, исходящие или проходящие соединения, а также подключение к виртуальной машине по HTTP или SSH.

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

Читать далее
Total votes 9: ↑6 and ↓3+6
Comments16

Пример настройки Linux для высоконагруженных кластеров Kubernetes

Reading time5 min
Views9.6K

Довольно часто можно встретить примеры настройки (тюнинга) сетевого стека Linux для высоконагруженных систем, однако некоторые из этих гайдов сильно устарели и не используют рекомендованные подходы к конфигурированию системы. В этом обзоре мы рассмотрим подготовку Linux, для использования в качестве узла плоскости управления Kubernetes.

Читать далее
Total votes 9: ↑7 and ↓2+5
Comments1

Как я делал руку с картами для своей карточной игры

Level of difficultyEasy
Reading time4 min
Views6.6K

Зона, с которой игрок чаще всего взаимодействует в карточной игре — это его рука (не путать с рукой в играх с 18+ контентом). Рука — это набор карт, которые игрок может разыграть в текущий ход. И раз это одно из самых важных мест, я решил уже на этапе прототипа сделать руку приятной и красивой.

Дисклеймер: я тут описываю свой говнокод. Программировать я совсем не умею, так что не советую использовать как инструкцию.

Вот как раз во время работы с рукой (не путать с «во время работы рукой») я понял отличие качественной игры от поделки на уровне прототипа для тестирования геймплея. Все дело в мелочах и деталях. Посмотрите, как ведут себя карты в руке в Slay the Spire:

Читать далее
Total votes 8: ↑6 and ↓2+5
Comments25

C# Linq для GraphQL-запросов

Level of difficultyEasy
Reading time7 min
Views5.9K

Транслятор Expression'ов в GraphQL-запрос.

Реализация библиотеки для трансляции Выражений в GraphQL-запрос с использованием Linq-подобного api.

Обзор и сравнение существующих решений. Создание собственного инструмента.

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

Система сохранения на Unity для начинающих

Level of difficultyEasy
Reading time6 min
Views8.1K

Привет, Хабр! Меня зовут Игорь, и я Unity Developer. В этой статье попытаюсь максимально просто рассказать и показать, как написать систему сохранения в игре в Unity. Скажу сразу, статья ориентирована для тех, кто только начинает свой путь в освоении разработки игр. Поэтому некоторые архитектурные принципы будут нарушены с целью упрощения кода. Ближе к концу статьи покажу как сохранять миссии, про которые писал ранее. Ну что ж, поехали...

Читать далее
Total votes 12: ↑7 and ↓5+3
Comments3

Пройди свой путь в ширину: библиотеки для графов из инди-игры TESTAMENT

Level of difficultyEasy
Reading time11 min
Views2.4K

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

Когда я начал работать над своим пет-проектом TESTAMENT, мне нужно было генерировать и отображать произвольные графы. Я хотел, чтобы локации были в виде простых шагов-событий, соединенных между собой. Примерами могут послужить проекты Slay The Spire, Cult of the Lamb, Darkest Dungeon и другие. Исследовав вопрос, я увидел, что существующие библиотеки слишком тяжелые и сложные для моих нужд.

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

Реализация миссий в игре на Unity (Ч2)

Level of difficultyEasy
Reading time8 min
Views2.6K

Привет, Хабр 👋

Меня зовут Игорь, и я Unity Developer. В этой статье хотел бы рассказать, как можно сделать миссии в игре на Unity. Статья будет состоять из трех частей. В первой части реализовали систему для миссий. В этой части будем реализовывать интерфейс. А в следующей — сохранение. Ну что ж, поехали!

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

Моя дорога в Арч

Level of difficultyMedium
Reading time10 min
Views8.5K

Что ж. Я таки запишу это.

Всё началось с того, что я уже около двадцати лет пользуюсь такими ништяками, как Total Commander с заточенными плагинами, настройками, выученными хот-кеями и прочим фаршем, AIMP с лаконичным, но наглядным скином, кастомными PotPlayer, IrfanView, Notepad++, Process Explorer... И всё это приправлено ...

Так, мне нужен хот-кей для сохранения снимка активного монитора.

И это всё было приправлено вымученной Виндой: панель управления в стиле Windows 10; файервол в стиле Windows 10; антивирус в стиле Windows 10; произвольное включение сразу после перехода в спящий режим (даже с запретом на подобные таймеры) и т.д. Не исключаю, однако, что я излишне придираюсь.

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

Реализация миссий в игре на Unity (Ч1)

Level of difficultyEasy
Reading time10 min
Views7.2K

Привет, Хабр 👋

Меня зовут Игорь, и я Unity Developer. В этой статье хотел бы рассказать, как можно сделать миссии в игры на Unity. Статья будет состоять из трех частей. В первой части напишем систему для миссий, во второй — интерфейс, а в третьей — сохранение. Ну что ж, поехали!

Читать далее
Total votes 11: ↑9 and ↓2+11
Comments5

Как я сделал самый быстрый в мире файловый сервер

Reading time16 min
Views22K

Задача — среди множества файлов найти на диске конкретный и отдать его по HTTP с заголовками «content-encoding», «mime-type» и «content-lenght». И сделать это как можно быстрее — на локальном хосте, чтобы не уткнуться в физические барьеры. Нас интересует скорость ради скорости.

В качестве веб-сервера будем использоваться Kestrel, .NET 7 RC 1, minimal API и F#. Финальная, оптимизированная версия есть и для C#.
Читать дальше →
Total votes 59: ↑50 and ↓9+56
Comments18

Разработка быстрых и современных сайтов на базе Next.js, с использованием GraphQL & WordPress

Level of difficultyMedium
Reading time11 min
Views14K

Next.js - современный фреймворк на базе ReactJS, который значительно набирает обороты среди разработчиков и предоставляет инструменты для разных видов рендеринга страниц.

WordPress - популярная headless CMS, применяемая для различных проектов - от простых блогов до сложных приложений.

У нас был готовый сайт на WordPress, шило в коде и непреодолимое желание поэксперементировать с Next.js.

Получилось достаточно быстрое приложение с примерно небольшими трудозатратами.

Читать далее
Total votes 9: ↑8 and ↓1+8
Comments4

А не сделать ли мне игру? #0

Level of difficultyEasy
Reading time6 min
Views3K

TL;DR: автор джва года ждал хотел делать игры и вот наконец-то решился.

В чём суть игры? С чего начать её создание? Какие элементы нужно учесть? Все эти вопросы уже неоднократно разжёваны, так что мы осветим их ещё раз!

Читать далее
Total votes 4: ↑3 and ↓1+2
Comments7

Как на самом деле работает Async/Await в C# (Часть 7)

Level of difficultyHard
Reading time13 min
Views12K

Несколько недель назад в блоге «.NET Blog» появилась статья «Что такое .NET, и почему вы должны выбрать его?». В нем был представлен высокоуровневый обзор платформы, кратко описаны различные компоненты и архитектурные решения, а также обещаны более подробные посты по затронутым темам. Этот пост является первым таким продолжением, в котором подробно рассматривается история создания, архитектурные решения и детали реализации async/await в C# и .NET.

Disclaimer: Я не являюсь профессиональным переводчиком, перевод подготовлен скорее для себя и коллег. Я буду благодарен за любые исправления и помощь в переводе, статья очень интересная давайте сделаем её доступной на русском языке.

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

Бенчмаркая строки и циклы: Replace, Split и Substring

Level of difficultyEasy
Reading time9 min
Views4.6K

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

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

Все тесты сделаны с использованием BenchmarkDotNet, так что каждый может проверить результаты и сделать свои выводы.

Хочется начать с string.Replace, который проверяется разными вариантами, начиная с базового.

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

Поднимаем Kubernetes с нуля

Level of difficultyMedium
Reading time10 min
Views51K

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

Читать далее
Total votes 30: ↑27 and ↓3+30
Comments55

ThreadPool. async/await

Level of difficultyEasy
Reading time13 min
Views8.4K

А вы никогда не задумывались, что async и await выглядят как-то инородно среди прочего C# кода? Больше нигде не встречается такого странного синтаксиса и таких модификаторов, кроме как в методах, работающих с Task и Task<T>.

А ещё интересно, сколько вообще стоит пользоваться async/await? И когда можно (нужно?) обходиться без них?

Читать далее
Total votes 9: ↑8 and ↓1+8
Comments15

Способы создания авторизации на сайте. Руководство с примерами. Безопасность в браузере

Level of difficultyMedium
Reading time14 min
Views38K

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

1.Сторонние сервисы авторизации (такие как Google)

2.Авторизация с использованием токенов

3.Авторизация с помощью номера телефона

4.Логин + Пароль

Статья даст вам конкретный алгоритм реализации каждого способа. Необходимые библиотеки, а также примеры кода. Я постараюсь приводить в пример реализацию на чистейшем JavaScript, для того чтобы вы смогли внедрить функционал в свое проект, не зависимо от используемого фреймворка, однако также будут примеры для тандема Angular + Asp .Net Core. Мы обсудим как защитить ваш сайт от взлома. На сколько это сложно и возможно ли в принципе гарантировать 100% защиту. Итак, давайте приступим.

Читать далее
Total votes 6: ↑1 and ↓5-4
Comments23

Information

Rating
4,758-th
Location
Biała, Tarnow, Польша
Date of birth
Registered
Activity