Как стать автором
Обновить
-4
0

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

Отправить сообщение

Корутинная эволюция в Kotlin. Чем отличаются Channels, Broadcast channels, Shared flows, State flows

Время на прочтение5 мин
Количество просмотров41K
Эта публикация — перевод поста Романа Елизарова «Shared flows, broadcast channels». Опубликовано с одобрения автора оригинала. Примечания переводчика выделены курсивом.

Давным-давно в Kotlin были представлены корутины, одной из особенностей которых является легковесность (создание корутин дешевле, чем с запуск новых Threads). Мы можем запускать несколько корутин, и нам нужен способ взаимодействия между ними избегая “mutable shared state”
Читать дальше →
Всего голосов 13: ↑13 и ↓0+13
Комментарии40

Навигация для Android с использованием Navigation Architecture Component: пошаговое руководство

Время на прочтение6 мин
Количество просмотров40K
Попробуем, пользуясь официальным руководством и примерами кода, построить работающую систему навигации для будущего многоэкранного приложения в соответствии со стандартами Navigation Architecture Component. Статья включает следующие разделы:

Часть 1. Подготовительные работы
— 1.1. Создание проекта
— 1.2. Зависимости (Dependencies)
— 1.3. Страницы: создание фрагментов
— 1.4. Адреса: файл ресурсов типа «Navigation»
— 1.5. Фрейм: виджет NavHostFragment

Часть 2. Элементы навигации
— 2.1. Навигация с помощью кнопок
— 2.2. Боковое меню (Drawer)
— 2.3. Панель инструментов: Toolbar вместо ActionBar
— 2.4. Нижнее меню (Bottom Navigation)
— 2.5. Всплывающее меню (Overflow Menu)

Краткие выводы и ссылка на github
Читать дальше →
Всего голосов 8: ↑8 и ↓0+8
Комментарии5

Как я делал свой самолёт

Время на прочтение4 мин
Количество просмотров29K
image

Здравствуйте, дорогие Хабровчане!

Меня зовут Константин Томаревский. Я инженер компании Deutsche Telekom IT Sotutions. Хотел поделиться с Вами своей давней задумкой, которую пытаюсь воплотить в «железе».

По образованию я авиационный инженер. Когда я поступал в Университет СПбГПУ, я мечтал о том, что буду конструировать самолёты (ну или космические ракеты), буду работать в каком-нибудь конструкторском бюро и проводить рабочие дни за математическими расчётами, лабораторными стендами и полевыми испытаниями. Я закончил Университет, получив там очень много теоретических знаний, но ни разу не прикоснувшись к настоящей практике. Прошло уже много времени, но мысль о том, что мои знания так и остались знаниями, и не воплотились в практической плоскости, не покидала меня и я решил попробовать сделать пусть и совсем не большой, но реально функционирующий по всем правилам летательный аппарат.

image

Первоначальная идея


Мой университетский профиль – это системы управления летательными аппаратами. Мне всегда было интересно, как ведёт себя летательный аппарат (планер, самолёт) в зависимости от управления им, то есть от того, каким образом отклоняются его управляющие поверхности, как быстро и в какой конфигурации. Ещё один интересный момент – эффективность управляющих плоскостей. На разной скорости полёта их отклонение действует на летательный аппарат с разными усилиями. Если подобрать отклонения для разных скоростей, можно сделать мягкое управление летательным аппаратом.
Читать дальше →
Всего голосов 70: ↑70 и ↓0+70
Комментарии163

Хождение по рукам или грустные реалии рынка услуг восстановления данных

Время на прочтение9 мин
Количество просмотров41K
Для обычного пользователя отказ жесткого диска представляет из себя стрессовую ситуацию, так как в большинстве своем рядовой потребитель не задумывается о том, что все то, что для него представляет ценность, может быть легко утрачено от одного неловкого движения. Человек, который не является продвинутым пользователем или техническим специалистом, впервые столкнувшись с отказом диска, как правило, задумывается о том, как ему привести в чувство свой компьютер, и лишь когда узнает о неисправности накопителя, начинает думать о том, как бы это скопировать с него данные.

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

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

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

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


Рис. 1 Hitachi HTS547575A9E384 обычно выглядит так.
Читать дальше →
Всего голосов 64: ↑62 и ↓2+83
Комментарии141

HDD для Mac или заурядный случай для лаборатории восстановления данных

Время на прочтение14 мин
Количество просмотров14K
К нам на диагностику поступил накопитель Seagate ST4000DM000 семейства Lombard. Со слов клиента можно было понять, что накопитель использовался на компьютере Apple Macintosh и был на нем отформатирован, и не один раз, за все время эксплуатации. Вопросы касательно состояния накопителя или типа файловой системы остаются без ответа. Клиентом дается лишь сбивчивое пояснение, что необходимо восстановление файлов с оригинальной структурой каталогов. Также клиент уточняет, что в одном из сервисов были получены файлы без оригинальных имен с помощью какой-то программы восстановления данных, но его такой результат не устраивает.


Читать дальше →
Всего голосов 34: ↑34 и ↓0+34
Комментарии45

Теперь я не могу сделать даже маленький сайт

Время на прочтение3 мин
Количество просмотров153K


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

Это был сайт про события моего родного города. На одной странице выводились все мероприятия на грядущую неделю.

Я сделал страничку с мероприятиями, и небольшую админку, где они редактировались. У меня была книжка по PHP, поэтому сайт я написал на PHP, подключил MySQL-базу, сверстал на HTML и CSS, и залил на виртуальный хостинг. Сайтом пользовались, а я усердно добавлял мероприятия каждое утро, пока не ушёл в армию, не оставив никого на поддержку. Так сайт и почил.

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

Я решил взяться за дело и стал думать.
Читать дальше →
Всего голосов 332: ↑301 и ↓31+339
Комментарии319

Как я решил сделать игру, вдохновившись Heroes of Might and Magic, и потерял деньги (часть 1, 2)

Время на прочтение12 мин
Количество просмотров66K
Данная история будет состоять из трёх частей, т.к. я выпустил три игры:

  • Beasts Battle
  • Necromancer Returns
  • Magicians Legacy

Часть‌ ‌1


Для тех кто предпочитает смотреть, а не читать, я подготовил видео этой статьи.


В каждом выпуске будут цифры по каждой игре, какой бюджет и доход принесли игры…

Сразу скажу, я – фанат серии Heroes of Might and Magic и King's Bounty. Играл почти во все части и аддоны, за исключением седьмой части, т.к. время идет, жизнь меняется и на игры времени не осталось.
Всего голосов 106: ↑105 и ↓1+137
Комментарии108

Android Fragment Result Listener

Время на прочтение5 мин
Количество просмотров33K


В Android передача данных между фрагментами может осуществляться разными способами: передача через родительскую Activity, используя ViewModel или даже Fragments API. Fragment Target API с недавних пор получил статус Deprecated и вместо него Google рекомендует использовать Fragment result API.


Что такое Fragment result API? Это новый инструмент от Google который позволяет передавать данные между фрагментами по ключу. Для этого используется FragmentManager, который в свою очередь реализует интерфейс FragmentResultOwner. FragmentResultOwner выступает в качестве центрального хранилища для данных, которые мы передаем между фрагментами.


Как это работает?


image

Как упоминалось выше, наш FragmentManager реализует интерфейс FragmentResultOwner, который хранит в себе ConcurrentHashMap<String, Bundle>. Эта HashMap хранит наши Bundle-ы по строковому ключу. Как только один из фрагментов подписывается (или уже подписан) то он получает результат по тому самому ключу.

Читать дальше →
Всего голосов 10: ↑10 и ↓0+10
Комментарии4

Как действуют хакеры, воруя ключи и пароли?

Время на прочтение14 мин
Количество просмотров32K
Я занимаюсь поиском уязвимостей в различных системах безопасности. В определённый момент мне стало понятно, что мои клиенты недостаточно хорошо знакомы (если вообще знакомы) с базовыми приёмами «хакинга». Ключи к API, пароли, SSH-ключи, сертификаты — всё это отличные механизмы защиты. Но это так до тех пор, пока их держат в секрете. После того, как подобные данные оказываются доступными тем, у кого доступа к ним быть не должно, оказывается, что сложность паролей и продвинутость алгоритмов хеширования уже значения не имеют. В этом материале я хочу рассказать о концепциях, методах и инструментах, применяемых исследователями систем безопасности для нахождения секретных данных. Такие данные используются для взлома систем. Я, кроме того, расскажу тут о простых последовательностях действий, которые помогут снизить риск успешной хакерской атаки.



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

Вот основные правила защиты систем, которые я собираюсь раскрыть в этом материале. Они просты, но это не значит, что о них можно безнаказанно забыть:
Читать дальше →
Всего голосов 33: ↑28 и ↓5+35
Комментарии9

Как я избавлялся от Google на Android

Время на прочтение5 мин
Количество просмотров126K

image

Недавно на работе получил задачу от руководителя: сделай так чтобы телефон android не сливал данные гуглу.  Можете представить мой восторг (и предвкушение) ибо спустя 2 недели тестов я вполне уже чувствовал себя человеком который прошивает телефоны на радиорынке (ничего личного, просто не мой профиль). Прочел отличную статью и понабравшись опыта решил немного дополнить. Статья кстати отличная, рекомендую к прочтению.

Давайте рассмотрим несколько альтернативных операционных систем якобы без сервисов гугла, и выясним действительно ли они не общаются с гуглом. Подготовился я к слову основательно, для тестов даже приобрел девайс "pixel 3", так как GrapheneOS работает только с устройствами от google.

Читать дальше →
Всего голосов 78: ↑74 и ↓4+100
Комментарии136

Я посредственный разраб, плохой муж и ужасный отец — нет никакого баланса и выбора

Время на прочтение5 мин
Количество просмотров63K


Мне нравятся пост-ковидные правила игры. Добрая половина вакансий — удаленка. Мы больше не ищем в описании слова «гибкий график» — это теперь само собой разумеется. Никому не придет в голову заставить программиста строго сидеть за компом от 9 утра до шести вечера. Боссы теперь уважают наше время и личное пространство. И нам все еще очень хорошо платят.

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

Когда я первый раз получил оффер на ремоут, я так и подумал. В том, как офис пожирает лишнее время очень простая арифметика — конкретно на работу тратишь часа четыре, еще четыре ты страдаешь фигней, два тратишь на дорогу и час вычеркиваешь из каждого утра — он хоть и свободный, но бесполезный. Около восьми часов ты должен спать. У тебя остается всего пять часов на свои дела по дому и общение с семьей. Это ничтожно мало — ведь ты ещё обычно и зверски устал, когда вернулся.
Читать дальше →
Всего голосов 155: ↑82 и ↓73+36
Комментарии591

Стивен Вольфрам: кажется, мы близки к пониманию фундаментальной теории физики, и она прекрасна

Время на прочтение70 мин
Количество просмотров382K
В продолжение моего поста про вычислимую Вселенную я хочу представить вам свой перевод статьи Стивена Вольфрама, созданной в рамках его проекта The Wolfram Physics Project.


Неожиданное открытие


За прошедшие несколько веков произошел настоящий прорыв в наших знаниях о принципах работы окружающего нас мира. Но несмотря на это, у нас все еще нет фундаментальной теории физики, и мы все так же не имеем ответа на вопрос о том, как именно работает наша Вселенная. Я занимаюсь этой темой уже порядка 50-и лет, но только в последние несколько месяцев все кусочки пазла наконец-то начали складываться вместе. И получающаяся картина оказалась гораздо прекрасней, чем все, что я только мог себе представить.
Читать дальше →
Всего голосов 243: ↑238 и ↓5+307
Комментарии459

Организация простой архитектуры в андроид-приложении со связкой ViewModel+LiveData, Retrofit+Coroutines

Время на прочтение6 мин
Количество просмотров20K
Без долгих вступлений расскажу, как можно быстро и просто организовать удобную архитекруту вашего приложения. Материал будет полезен тем, кто не очень хорошо знаком с mvvm-паттерном и котлиновскими корутинами.

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

Наши действия: из активити (фрагмента) вызываем нужный метод ViewModel -> ViewModel обращается к ретрофитовской ручке, выполняя запрос через корутины -> ответ сетится в лайвдату в виде ивента -> в активити получая ивент передаём данные во вью.
Читать дальше →
Всего голосов 9: ↑6 и ↓3+3
Комментарии24

Чем опасен postDelayed

Время на прочтение5 мин
Количество просмотров7.9K

Часто из-за особенностей работы android системы и sdk, нам необходимо подождать, когда определённая часть системы будет сконфигурирована или произойдёт какое-то необходимое нам событие. Зачастую это является костылём, но иногда без них никак, особенно в условиях дедлайнов. Поэтому во многих проектах для этого использовался postDelayed. Под катом рассмотрим, чем же он так опасен и что с этим делать.

Читать дальше →
Всего голосов 6: ↑5 и ↓1+7
Комментарии4

Зона доступа: 30 способов, которые позволят разблокировать любой смартфон. Часть 1

Время на прочтение16 мин
Количество просмотров373K


В своей работе компьютерные криминалисты регулярно сталкиваются с кейсами, когда надо оперативно разблокировать смартфон. Например, данные из телефона нужны следствию, чтобы понять причины суицида подростка. В другом случае — помогут выйти на след преступной группы, нападающей на водителей-дальнобойщиков. Бывают, конечно, и милые истории — родители забыли пароль от гаджета, а на нем осталось видео с первыми шагами их малыша, но таких, к сожалению, единицы. Но и они требуют профессионального подхода к вопросу. В этой статье Игорь Михайлов, специалист Лаборатории компьютерной криминалистики Group-IB, рассказывает о способах, которые позволяют экспертам-криминалистам обойти блокировку смартфона.
Читать дальше →
Всего голосов 23: ↑20 и ↓3+24
Комментарии22

Знакомство с App Gallery. Создаем аккаунт разработчика

Время на прочтение4 мин
Количество просмотров18K


Что происходит, кто виноват и что делать


Недавно Google прекратил сотрудничество с Huawei. Это привело к тому, что Huawei на своих новых девайсах уже не может использовать сервисы Google (магазин приложений, геолокация, карты, пуши, аналитика etc), что для пользователя превращает девайс в кирпич. Если бы это не была китайская компания, то, скорее всего, на этом её бизнес, связанный с Android, просто бы прекратился. Но компания китайская, большая и они пошли по пути импортозамещения, в кратчайшие сроки реализовав функционал, аналогичный Google сервисам.


В этой серии статей мы хотим поделиться своим опытом использования Huawei Mobile Services в уже готовом приложении, использующем Google Mobile Services для аналитики (Firebase Analytics), карт и геолокации. Текста получилось довольно много и о сильно разных сервисах, засим статей будет несколько. Начнём мы с основ — регистрации аккаунта разработчика и базовых вещей в коде.


  1. Создаём аккаунт разработчика, подключаем зависимости, подготавливаем код к внедрению. ← вы тут
  2. Встраиваем Huawei Analytics. тык
  3. Используем геолокацию от Huawei.
  4. Huawei maps. Используем вместо Google maps для AppGallery.

Если вам интересно узнать технических подробностей, посмотреть код и узнать про подводные камни — добро пожаловать под кат!

Читать дальше →
Всего голосов 9: ↑9 и ↓0+9
Комментарии2

История разработки The Light Remake. Часть 2

Время на прочтение11 мин
Количество просмотров4.6K


Приветствую, читатель! В первой части статьи, посвященной разработке The Light Remake в общих чертах был рассмотрен процесс переноса игры на новую версию Unity. Я немного рассказал об используемых шейдерах и эффектах, о том, какие решения были реализованы в работе со светом, какой дополнительный контент был создан, какой контент из старой версии был переработан и т.д. Во второй части речь пойдет о других аспектах разработки, о постэффектах, структуре проекта, работе со звуком, оптимизации и прочих нюансах.
Читать дальше →
Всего голосов 10: ↑9 и ↓1+13
Комментарии4

Мы тратим годы на то, что делается неделю — потому что все ларьки заигрались в IT-гигантов

Время на прочтение5 мин
Количество просмотров128K


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

Если бы меня кто-то спросил, за сколько можно сделать такое приложение в одиночку — я бы сказал: «два месяца на разработку, один на тестирование». Но нас было много, поэтому мы работали больше двух лет.
Читать дальше →
Всего голосов 208: ↑166 и ↓42+178
Комментарии257

Мои десять лет в геймдеве

Время на прочтение27 мин
Количество просмотров12K
Привет! Меня зовут Нико Туасон, я разработчик инди-игр из Филиппин. В этом году исполняется десять лет с того момента, как я начал свой путь в геймдеве. Я хотел бы поделиться с вами историей всей моей карьеры – провалами, триумфами, важными жизненными событиями. Надеюсь, вы не пожалеете, что потратили время на чтение.

2010 год: прыжок в неизвестность


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

Я азиат (да, филиппинцы тоже азиаты) и для моих родителей было бы неприемлемо, если бы я не был занят ни учёбой, ни работой, поэтому я подал документы в магистратуру по специальности «Мультимедиа» в Сингапуре. Они и понятия не имели, что вскоре после этого мне пришло письмо с отказом. Я всё говорил им, что моя заявка, мол, в процессе рассмотрения, а сам втайне работал над проектом «для себя» — своей первой игрой.
Читать дальше →
Всего голосов 39: ↑39 и ↓0+39
Комментарии12

Дайджест IT-событий сентября (часть вторая)

Время на прочтение4 мин
Количество просмотров787


В завершающем сентябрьском выпуске IT-сообщество возвращается к докарантинному многообразию форматов и тематик (хотя по-прежнему частично остаётся в онлайне): пробуждаются к жизни камерные митапы, активизируются хакатоны, наряду со стабильно процветающими ИБ, фронтендом и машинным обучением появляются и более узкие тематики вроде мобильной криминалистики и DevOps.
Читать дальше →
Рейтинг0
Комментарии2

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность