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

User

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

“Строка бога”/идеальный промт, часть 3, продолжение про ИИ-генераторы музыки

Уровень сложностиПростой
Время на прочтение11 мин
Количество просмотров4.5K

“Человек создан для счастья, как птица для полета” В. Г. Короленко из его рассказа “Парадокс”

Здравствуйте, уважаемые читатели!

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

Сегодняшняя статья будет состоять из двух частей:

1.      Практическая часть. Описание процесса генерации музыки “от А до Я”.

Идеальный запрос - Как создать музыку, которую можно будет слушать месяцами?

2.      Серьезный вывод о текущем состоянии и перспективах развития отрасли и не только.

Читать далее
Всего голосов 10: ↑6 и ↓4+8
Комментарии19

Атаки на JSON Web Tokens

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


Содержание:


  • Что такое JWT?
    • Заголовок
    • Полезная нагрузка
    • Подпись
    • Что такое SECRET_KEY?
  • Атаки на JWT:
    • Базовые атаки:
      1. Нет алгоритма
      2. Изменяем алгоритм с RS256 на HS256
      3. Без проверки подписи
      4. Взлом секретного ключа
      5. Использование произвольных файлов для проверки
    • Продвинутые атаки:
      1. SQL-инъекция
      2. Параметр поддельного заголовка
      3. Внедрение заголовка ответа HTTP
      4. Прочие уязвимости

Что такое JSON Web Token?


Веб-токен JSON обычно используется для авторизации в клиент-серверных приложениях. JWT состоит из трех элементов:


  • Заголовок
  • Полезная нагрузка
  • Подпись

Заголовок


Это объект JSON, который представляет собой метаданные токена. Чаще всего состоит из двух полей:


  • Тип токена
  • Алгоритм хэширования

Официальный сайт предлагает два алгоритма хэширования:


  • «HS256»
  • «RS256»
Читать дальше →
Всего голосов 14: ↑6 и ↓8+4
Комментарии25

Принципы SOLID, только понятно

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров77K

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

Изучить принципы
Всего голосов 80: ↑66 и ↓14+59
Комментарии94

Как мы в 4 раза ускорили мобильную версию ВКонтакте

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров6.1K

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

Меня зовут Тарас Иванов, уже семь лет я развиваю фронтенд ВКонтакте, а сейчас руковожу командой, которая занимается производительностью и инфраструктурой. В статье я расскажу, как мы с командой ускорили загрузку m.vk.com в 4 раза, на какие метрики обращали внимание и какие сервисы использовали для оценки эффективности. Описанные способы и инструменты помогут повысить производительность в любом проекте: от многостраничных платформ с большим количеством legacy до свежих лаконичных лендингов. Актуально как для мобильной, так и десктопной версий.  

Читать далее
Всего голосов 13: ↑12 и ↓1+20
Комментарии12

Новые коллекции в Android

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров8.3K

В 2018 году в androidx появился новый пакет collection, который содержал несколько специфичных структур данных, переписанных на Kotlin, таких как LongSparseArray, SimpleArrayMap и SparseArrayCompat.

На тот период Kotlin только начинал набирать обороты в Android разработке и добавление новых более эффективных коллекций, полностью написанных на нём было одним из шагов по внедрению языка.

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

Читать далее
Всего голосов 12: ↑11 и ↓1+12
Комментарии7

Как не свихнуться с кучей модулей в проекте

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров2.7K

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

Добро пожаловать :)
Всего голосов 7: ↑5 и ↓2+8
Комментарии10

Рекомпозиция в Compose: что не видно разработчику невооруженным глазом

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров5.7K

Всем привет! Меня зовут Данила, я Android-разработчик в команде, которая занимается созданием супераппа WorksPad и почтового клиента RuPost Desktop.

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

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

Большинство поддержало меня в том, чтобы я переложил нашу встречу в формат статьи. Все что вы увидите ниже — и есть тот самый гайд. В нем я постарался простыми словами объяснить, как устроен процесс построения UI на Compose.

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

Эволюция разработки под Android

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров2.8K

Отправной точкой истории разработки Android считается начало 2000-х, когда Энди Рубин, Рич Майнер, Ник Сирс, Крис Уайт основывают Android Inc. Уже в 2005 Google выкупает их, а в 2008 запускает свою ОС — Android. Первым смартфоном на её базе стал HTC Dream. Так началась история самой популярной ОС. Возможность реализовывать приложения на Java сделало данную ОС очень популярным среди разработчиков. Но сегодня приоритетным языком программирования для Android-разработки является Kotlin. Это лишь малая часть того, что поменялось с 2008. В данной статье представлена история разработки под Android. Остановлюсь на знаковых технологиях, библиотеках, архитектурах и т.д.

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

Безопасность android-приложений. Реверсим OWASP MASTG Crackme 1

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров1.2K

Всем привет! Меня зовут Максим и я занимаюсь исследованиями источников данных. В своей работе периодически приходится сталкиваться с исследованием android-приложений. В этой статье я хочу показать базовые методы реверс-инжиниринга и исследования android-приложений на примере Crackme из проекта OWASP MASTG.

Читать далее
Всего голосов 5: ↑5 и ↓0+7
Комментарии0

Опыт внедрения компонентной разработки

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров1.7K

Привет! Меня зовут Александр Омельяненко, я работаю тимлидом Flutter-команды в AGIMA. Расскажу, как и почему на одном из наших проектов мы внедрили компонентный подход к разработке и какие плоды нам это дало. В статье покажу основные плюсы и минусы нашего решения. А еще затрону прикладные моменты: на какие позиции мы поделили участников команды, какие обязанности им поручили и как документировали работу.

Читать далее
Всего голосов 11: ↑10 и ↓1+9
Комментарии6

Kodein DI для Android. Целостность графа и тесты на DI

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров2.1K

DI фреймворки бывают двух видов: те, что строят свой граф зависимостей во время компиляции (compile time фреймворки), и те, которые делают это уже при выполнении кода (runtime фреймворки).

Kodein — типичный представитель runtime фреймворков. Это значит, что о пропущенной зависимости вы узнаете непосредственно в процессе работы приложения, что может стать неприятным сюрпризом. Только представьте себе: вы пропустили на регрессе какой-то кейс, и у вас краш в продакшене из-за DI! Это же настоящий кошмар!

Однако отказываться от Kodein ID и других runtime фреймворков не стоит. О том, почему мы продолжаем ими пользоваться, и как их сделать более надёжными, я расскажу в третьей статье из цикла материалов про Kodein DI для Android.

Погнали.

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

Apple Vision Pro: обзор платформы и создание первого мобильного приложения

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров1.9K

Привет! Меня зовут Андрей Груненков, я iOS - разработчик в агентстве InstaDev. Делаем мобильные приложения, которые помогают бизнесу расти. В этой статье я расскажу о том, как разработать первое мобильное приложение для платформы Apple Vision Pro.

Для начала надо сказать пару слов о самой платформе. Apple Vision Pro это компьютер Apple, который предоставляет пользователю новый опыт пространственного взаимодействия с интерфейсом. По сути представляет из себя гарнитуру смешанной реальности (AR/VR).

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

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

Apple Vision Pro помогает решать следующие задачи:

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

Accessibility Scanner в Android

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров1.3K

Я — Денис, Middle Android-разработчик в «Лайв Тайпинге». В этой статье я расскажу об инструменте тестирования accessibility в Android приложениях.

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

SwiftUI: архитектура State-Model-View

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров4.1K

В документации по UIKit компании Apple можно найти объяснение, что “структура приложений основана на шаблоне проектирования Model-View-Controller (MVC)”.

В материалах Apple по SwiftUI объяснений и даже просто ссылок на паттерны проектирования, похоже, нет. Попробуем сначала разобраться почему. Далее рассмотрим логичные и простые решения для построения как отдельных компонентов, так и уровень приложения с использованием состояний и property wrappers; подход, который логично обозначить как State-Model-View.

Читать далее
Всего голосов 7: ↑7 и ↓0+7
Комментарии3

Как протестировать Android-приложение, которому требуются разрешения

Уровень сложностиСредний
Время на прочтение19 мин
Количество просмотров3.3K
Часто для корректной работы приложению нужен доступ к определенным функциям мобильного устройства: к камере, записи голоса, совершению звонков, отправке SMS-сообщений и т. д. Приложение может получить доступ к ним и использовать только в том случае, если пользователь даст на это разрешение.

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



В этой статье мы покажем, как данные проблемы решает библиотека Kaspresso — популярный (1,7 тысячи звезд на Github) open-source-фреймворк для автотестов.
Читать дальше →
Всего голосов 22: ↑22 и ↓0+23
Комментарии3

Игра в безопасность Android-приложений

Уровень сложностиСредний
Время на прочтение20 мин
Количество просмотров7.9K

Давайте в общих чертах рассмотрим вопросы взлома и защиты Android-приложений. 

В рамках статьи нас интересуют сами процессы взлома и защиты, а не конкретные методики работы с конкретными инструментами. Поэтому разберёмся с этими процессами и постараемся сделать выводы. Чтобы читать было интереснее, я решил попеременно ставить себя и на место нападающего, и на место защищающего приложение человека. Что-то вроде шахмат: сначала ход делает нападающий, а затем защищающийся. Пока кто-то не победит. Пройдём путь, постепенно наращивая сложность, от простого вроде HTTPS — к более сложному, вроде обфускации и деобфускации, изменению поведения. И под конец перейдём к C++ и просмотру его Assembler кода.

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

Сборка приложения для AppStore. Используем Jenkins, Fastlane, TestFlight

Уровень сложностиСложный
Время на прочтение17 мин
Количество просмотров2.9K

Большой туториал настройки CI/CD пайплайна с использованием Jenkins и Fastlane.

Внедрение CI/CD в процесс создания iOS-приложений  позволяет разработчикам сосредоточиться на инновациях и улучшении функциональности приложений, в то время как рутинные процессы выполняются автоматически. Jenkins и Fastlane способны обеспечивать необходимую автоматизацию и гибкость в разработке. Помогают поддерживать высокий стандарт качества при более быстром цикле, что в конечном итоге приводит к созданию лучшего продукта для пользователей.

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

Зачем в мобильной разработке использовать Flow, если есть мощный ChannelFlow?

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


Я знаю, что существует множество статей о flow и channelFlow, в которых часто подчёркивается, что channelFlow по сути использует Channel. Но что это на самом деле значит для мобильных разработчиков? Когда это различие действительно имеет значение? Можно ли добиться такого же поведения с помощью flow без использования Channel, и какие уникальные возможности предлагает ChannelFlow, которых нельзя достичь с помощью обычного Flow?

Ключ к этому вопросу лежит в понимании основной концепции Channel. Концептуально Channel и Flow служат разным целям. Каналы (Channels) облегчают взаимодействие между корутинами, в то время как потоки (Flows) больше направлены на эффективное производство и распределение данных.

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

Рассмотрим реальный сценарий, в котором приложения образуют связанную сеть, обнаруживая близлежащие приложения (устройства) через Bluetooth или локальную сеть и одновременно получая информацию о близлежащих устройствах с удалённого сервера. В этом случае каждому приложению может потребоваться отправить данные из трёх различных источников, которые работают независимо и непрерывно.
Читать дальше →
Всего голосов 9: ↑7 и ↓2+7
Комментарии0

Fastlane для Android разработчиков

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров1.6K

Рост команды требует большего вовлечения в процессы и договорённости, которые, в свою очередь, требуют автоматизации и инспекции. Можно взять bash‑скрипты и закрыть ими эту потребность, но насколько это будет удобно? Тут нужен инструмент, который упростит разработку и будет поддерживать команду в будущем. Сегодня расскажу про один из таких инструментов — Fastlane — и его возможности.

Статья будет полезна для ознакомления с Fastlane, тем, кто ищет решения для разработки автоматизации или рассматривает альтернативные решения по автоматизации сборок и процессов внутри компании. Для наглядности все примеры запускаются локально, это же решение можно перенести на CI/CD (Gitlab, Jenkins, Github Actions и тп).

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

Проводим и проходим собеседование по системному дизайну

Уровень сложностиСредний
Время на прочтение14 мин
Количество просмотров4.6K

Привет Хабр, меня зовут Вячеслав Таранников, я старший Android-разработчик в команде монетизации RuStore, и сегодня хочу поделиться взглядом, из каких ингредиентов можно собрать полезное и эффективное техническое интервью.

В предыдущей статье я рассказал, как мы пришли к системному дизайну как основному этапу собеседования в RuStore.

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

Читать далее
Всего голосов 24: ↑20 и ↓4+16
Комментарии0

Информация

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