Pull to refresh
29
0
Николай Матросов @nik_the_spirit

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

Send message

Вам никто не мешает сохранить ссылку на конец и начало. В таком случае вы всегда сможете вставить в эти места за O(1). Да, в вставка в произвольное место будет все еще O(n). Собственно об этом и сказано в таблице.

Стоит отметить, что сложность push — O(1), а для unshift — O(n). Так что использовать push и перевернуть один раз на очень больших инпутах, про которые идет речь в этой задаче, будет выгоднее.

Если после прочтения статьи у вас остался вопрос, как же использую goose работать с serverless базой, так как все примеры подключения в статье приведены для локальной базы данных, то вот решение.
Из строки подключения, которую вы можете скопировать из Web UI, вам нужно выкинуть фрагмент ?database=. Например:

goose ydb "grpcs://ydb.serverless.yandexcloud.net:2135/ru-central1/b1g***/etn***?token=$IAM_TOKEN&go_query_mode=scripting&go_fake_tx=scripting&go_query_bind=declare,numeric" up

Формально, шифрованный вариант называется JWE. Подробнее в RFC https://datatracker.ietf.org/doc/html/rfc7516 Некоторые могут назвать его шифрованным JWT, потому что для конечного разработчика работа с ним схожа с JWT и многие библиотеки реализуют оба варианта.

Можно начать с того, что в большом количестве камер Nikon стоят сенсоры Sony. https://www.digitalcameraworld.com/news/these-32-nikon-cameras-are-sonys-in-disguise
К тому же Sony лидер по технологиям сенсоров. Они выпустили первую full-frame камеру с глобальным затвором. https://electronics.sony.com/imaging/interchangeable-lens-cameras/all-interchangeable-lens-cameras/p/ilce9m3b

Загрузка готовых dll не «дыра в системе». Она вроде описана даже в документации в разделе Ручная поставка зависимостей.

Не на каждый. Есть возможность задать параметр concurrency — количество одновременно обрабатываемых контейнером запросов. От 1 до 16. Также serverless контейнеры будут горизонтально масштабироваться, если одновременно поступает много вызовов.

А клиенту в смете вы тоже 1 день выставите? А кушать на что будете оставшийся месяц? Нет в вас предпринимательской жилки.)

Есть видео, где эта тема раскрыта гораздо подробнее и нагляднее. https://www.youtube.com/watch?v=094y1Z2wpJg

Давайте по порядку. Во-первых, оригинальная статья была написана для блога на Medium. https://nikolaymatrosov.medium.com/yandex-cloud-cron-snapshot-bdee54c87541

Во-вторых, вы правы, архивация кода и всех зависимостей не самое удобное решение, особенно, учитывая что зависимости нужно паковать для целевой платформы, которая далеко не всегда будет совпадать с платформой, на которой происходит сборка. Поэтому уже давно существует более простое решение: указать на директорию с кодом при помощи ключа --source-path и убедиться, что там есть файл с описанием зависимостей (для NodeJS это package.json). Все остальное за вас сделает yc CLI — соберет zip-архив с кодом, а потом на сервере будет выполнена загрузка указанных зависимостей.

В-третьих, пример, указанный в статье, недавно был актуализирован и переписан с использованием новой версии SDK для NodeJS. Новая версия SDK v2 не является drop-in replacement'ом и еще находится в разработке, но именно на неё я бы рекомендовал ориентироваться в текущий момент. В основном потому что там поддержаны все сервисы Облака, а так же используются свежие версии сторонних зависимостей.

Ну еще одно замечание: долгое время NodeJS SDK был не самым качественным и активно поддерживаемым, поэтому появилась альтернативная реализация, подхода описанного в статье, переписанная на Go.

На сколько я знаю, ffmpeg умеет сам получать доступ к файлам по HTTP(S). Нам нужно лишь сформировать ссылку. Если речь идет про бакет без публичного доступа, то можно воспользоваться предподписанной ссылкой. Например, так из сомандной строки.

ffmpeg -i "$(aws s3 presign s3://MY_BUCKET/MY_FILE --expires 5)"

Ну или формировать ее при помощи SDK на вашем любимом языке программирования.

Говоря про второй пункт в «Проблемах и ограничениях», хотел бы узнать, не смотрели ли вы в сторону нового сервиса Yandex Data Streams. В нем есть возможность задать функцию, которая будет использоваться для трансформации данных. Также его можно использовать как источник в другом новом сервисе Yandex Data Transfer, а приёмником указать кластер ClickHouse. Возможно в этом случае запись в базу будет идти оптимальнее.

Вот про это хотелось рассказать в следующем посте. Сейчас в превью есть CDN https://cloud.yandex.ru/services/cdn, цены на трафик оттуда ниже чем непосредственно из Yandex Object Storage.

Степень «кусачасти» цен оценивать не берусь. Если сравнивать с публично доступными ценами конкурентов, которые я смог найти, то выглядит весьма привлекательно.

Вы правы, но сравнение их может потянуть на отдельный пост. Моя же цель была рассказать, что обычный MP4 одним файлом — не лучшая идея.
Одним из аргументов в пользу HLS может служить нативная поддержка этого формата браузерами: https://caniuse.com/?search=hls. В остальном это довольно схожие по функциональности и подходу форматы, имеющие примерно одинаковую поддержку сторонними плеерами.

Если вы про https://aws.amazon.com/elastictranscoder/, то да, к сожалению, в Яндекс Облаке пока нет аналогичного managed решения.

Все так. В вашем посте описывается решение для стримминга. А тут скорее описан подход для статики, начиная с основ технологии. Хотелось показать, что в HLS нет никакой магии, а сделать это проще на элементарном примере с ffmpeg.

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

Information

Rating
Does not participate
Date of birth
Registered
Activity

Specialization

Backend Developer, Frontend Developer
Senior