Index #7221 29 сентября 2019 А если N = 10?O(n) = O(2n) ?O(N*n) в худшем случае. И O(N) по памяти. Я не знаю как правильно считается сложность в таких вещах, обычно простые числа отбрасывают и прям дотошно сложность не считают. Поделиться сообщением Ссылка на сообщение
E1azor #7222 29 сентября 2019 использую символ и не знаю что он значит, собеседую челиков sonac понравилось это всё что пишу -- шизофренический бред Поделиться сообщением Ссылка на сообщение
dfgrd #7223 29 сентября 2019 А если N = 10?O(n) = O(2n) ?Оно не может быть 10 в такой записи Поделиться сообщением Ссылка на сообщение
suez #7224 29 сентября 2019 (изменено) Я тут пилю то тестовое что мне дали. Заливка видосов на сервер. Я решил сделать выбор Thumbnail'а в стиле ютуба, то есть загрузил видос и он автоматом тебе генерит на выбор 3 тамбнейла. Логика автоматической выборки тамбнейлов: с 1 секунды, с секунды с конца и все что между (подразумевая что в конфиге выбрано 3 и более на выбор). Дак вот - ЭТО ТАКОЙ ПИЗДЕЦ. Я не знаю проблемы ли это с самим API видео и браузером, или это реактовская обертка синтетик ивентов поверх. Скорее всего все сразу. Все работает через жопу. В общем тамбнейл надо делать с помощью невидимого канваса. Ну фишка простая, создал контекст2д в канвасе, заюзал "drawImage" указывая на <video /> и у тебя отрисовалась картинка. Ага блядь. Если бы все было так просто. Есть ивент onMetadataLoad, срабатывает только 1 раз на загрузке видео в элементе <video />. По идее надо юзать его для всего, но он срабатывает до того как видос отрендерится и будет доступен для воспроизведения. В итоге пытаешься сделать что-то тут - хуй тебе, пустой скриншот. Есть ивент onCanPlayThrough, по официальным докам срабатывает когда видос полностью доступен для воспроизведения и перемотки куда угодно, это самая последняя стадия. Казалось бы, ОНО. Дак вот, снова нихуя:1) По каким-то непонятным причинам этот ивент срабатывает снова и снова в реакте прю любом изменении state/props.2) Даже если пофиксить первый пункт костылем, КАНВАС ВСЕ РАВНО ВЫДАЕТ ПУСТОЙ СКРИНШОТ. То есть браузер сказал что все заебись, но на самом деле картиночка превью видео нихуя не отрендерилась. Видимо так нынче работают все хитровыебанные браузерные оптимизации или там просто API через жопу. В общем забиваю на второй вариант, возвращаюсь к metadataLoad. Вешаю костыльный setTimeout (других способов не нашел), наконец-то картинка рендерится. Теперь время второго челленджа - сделать N скриншотов с разных моментов видео. Казалось бы теперь, ну поменял ты "currentTime" у видео и сделал новый скрин. Ну и как всегда хуй. Прыжок по времени (в плане рендера) асинхронный. В итоге иду пилить асинхронный sequential reduce. Вот такая ебота получилась Давно не ел такого говна от браузеров. Боюсь даже представить что происходит в более старых браузерах или если грузить большие видосы и так далее, где всякие таймауты скорее всего не будут работать. Решил чекнуть как это сделано у ютуба - а там по виду все грузится на специальный сервак, где видос анализируется (доджить дубликаты, порнуху и так далее) и там же генерируются тамбнейлы. Но нет сука, я этим пидорам пошлю православный ФРОНТЕНД-СОЛЮШЕН, пусть нахуй ахуевают с той еботы что я понаписал Изменено 29 сентября 2019 пользователем suez http://codepen.io/suez/ - they see me bydlocoding, they hatin. Поделиться сообщением Ссылка на сообщение
Index #7225 29 сентября 2019 использую символ и не знаю что он значит, собеседую челиков Сам себе придумываю домыслы и делаю удобные мне выводы coolstorybob Я где-то писал например, что я кого-то собеседую? И почему ты решил, что я не знаю что значит символ? Поделиться сообщением Ссылка на сообщение
dfgrd #7226 29 сентября 2019 Я тут пилю то тестовое что мне дали. Заливка видосов на сервер. Я решил сделать выбор Thumbnail'а в стиле ютуба, то есть загрузил видос и он автоматом тебе генерит на выбор 3 тамбнейла. Логика автоматической выборки тамбнейлов: с 1 секунды, с секунды с конца и все что между (подразумевая что в конфиге выбрано 3 и более на выбор). Дак вот - ЭТО ТАКОЙ ПИЗДЕЦ. Я не знаю проблемы ли это с самим API видео и браузером, или это реактовская обертка синтетик ивентов поверх. Скорее всего все сразу. Все работает через жопу. В общем тамбнейл надо делать с помощью невидимого канваса. Ну фишка простая, создал контекст2д в канвасе, заюзал "drawImage" указывая на <video /> и у тебя отрисовалась картинка. Ага блядь. Если бы все было так просто. Есть ивент onMetadataLoad, срабатывает только 1 раз на загрузке видео в элементе <video />. По идее надо юзать его для всего, но он срабатывает до того как видос отрендерится и будет доступен для воспроизведения. В итоге пытаешься сделать что-то тут - хуй тебе, пустой скриншот. Есть ивент onCanPlayThrough, по официальным докам срабатывает когда видос полностью доступен для воспроизведения и перемотки куда угодно, это самая последняя стадия. Казалось бы, ОНО. Дак вот, снова нихуя:1) По каким-то непонятным причинам этот ивент срабатывает снова и снова в реакте прю любом изменении state/props.2) Даже если пофиксить первый пункт костылем, КАНВАС ВСЕ РАВНО ВЫДАЕТ ПУСТОЙ СКРИНШОТ. То есть браузер сказал что все заебись, но на самом деле картиночка превью видео нихуя не отрендерилась. Видимо так нынче работают все хитровыебанные браузерные оптимизации или там просто API через жопу. В общем забиваю на второй вариант, возвращаюсь к metadataLoad. Вешаю костыльный setTimeout (других способов не нашел), наконец-то картинка рендерится. Теперь время второго челленджа - сделать N скриншотов с разных моментов видео. Казалось бы теперь, ну поменял ты "currentTime" у видео и сделал новый скрин. Ну и как всегда хуй. Прыжок по времени (в плане рендера) асинхронный. В итоге иду пилить асинхронный sequential reduce. Вот такая ебота получилась Давно не ел такого говна от браузеров. Боюсь даже представить что происходит в более старых браузерах или если грузить большие видосы и так далее, где всякие таймауты скорее всего не будут работать. Решил чекнуть как это сделано у ютуба - а там по виду все грузится на специальный сервак, где видос анализируется (доджить дубликаты, порнуху и так далее) и там же генерируются тамбнейлы. Но нет сука, я этим пидорам пошлю православный ФРОНТЕНД-СОЛЮШЕН, пусть нахуй ахуевают с той еботы что я понаписал Минвайл бэкендеры генерят тамбнейлы одной командой в ffmpeg Поделиться сообщением Ссылка на сообщение
Kant #7227 29 сентября 2019 (изменено) генерь их ффмпегом на сервере и не знай проблем да ебаны в рот Изменено 29 сентября 2019 пользователем Kant Торжество разума в том, чтобы уживаться с теми, у кого этого разума нет. Вольтер.Чтобы хорошо высыпаться, нужно спать 8 часов в день. И еще столько же ночью. Поделиться сообщением Ссылка на сообщение
Rooster #7228 29 сентября 2019 they see me bydlocoding, they hatin. Kant и suez понравилось это Поделиться сообщением Ссылка на сообщение
Just.Doit #7229 29 сентября 2019 "там по виду все грузится на специальный сервак, где видос анализируется"как будто с самого начала не очевидно что это было сделано именно так PS: как-то дико похуй на ковыряния в либах/апиPSS: не понял в чем проблема в асинхронной обработке очень крутые котейкиКому-то пизды дал - нужно сделать скрин обязательно. (с) Solo Поделиться сообщением Ссылка на сообщение
suez #7230 29 сентября 2019 (изменено) Я тут пилю то тестовое что мне дали. Заливка видосов на сервер. Я решил сделать выбор Thumbnail'а в стиле ютуба, то есть загрузил видос и он автоматом тебе генерит на выбор 3 тамбнейла. Логика автоматической выборки тамбнейлов: с 1 секунды, с секунды с конца и все что между (подразумевая что в конфиге выбрано 3 и более на выбор). Дак вот - ЭТО ТАКОЙ ПИЗДЕЦ. Я не знаю проблемы ли это с самим API видео и браузером, или это реактовская обертка синтетик ивентов поверх. Скорее всего все сразу. Все работает через жопу. В общем тамбнейл надо делать с помощью невидимого канваса. Ну фишка простая, создал контекст2д в канвасе, заюзал "drawImage" указывая на <video /> и у тебя отрисовалась картинка. Ага блядь. Если бы все было так просто. Есть ивент onMetadataLoad, срабатывает только 1 раз на загрузке видео в элементе <video />. По идее надо юзать его для всего, но он срабатывает до того как видос отрендерится и будет доступен для воспроизведения. В итоге пытаешься сделать что-то тут - хуй тебе, пустой скриншот. Есть ивент onCanPlayThrough, по официальным докам срабатывает когда видос полностью доступен для воспроизведения и перемотки куда угодно, это самая последняя стадия. Казалось бы, ОНО. Дак вот, снова нихуя:1) По каким-то непонятным причинам этот ивент срабатывает снова и снова в реакте прю любом изменении state/props.2) Даже если пофиксить первый пункт костылем, КАНВАС ВСЕ РАВНО ВЫДАЕТ ПУСТОЙ СКРИНШОТ. То есть браузер сказал что все заебись, но на самом деле картиночка превью видео нихуя не отрендерилась. Видимо так нынче работают все хитровыебанные браузерные оптимизации или там просто API через жопу. В общем забиваю на второй вариант, возвращаюсь к metadataLoad. Вешаю костыльный setTimeout (других способов не нашел), наконец-то картинка рендерится. Теперь время второго челленджа - сделать N скриншотов с разных моментов видео. Казалось бы теперь, ну поменял ты "currentTime" у видео и сделал новый скрин. Ну и как всегда хуй. Прыжок по времени (в плане рендера) асинхронный. В итоге иду пилить асинхронный sequential reduce. Вот такая ебота получилась Давно не ел такого говна от браузеров. Боюсь даже представить что происходит в более старых браузерах или если грузить большие видосы и так далее, где всякие таймауты скорее всего не будут работать. Решил чекнуть как это сделано у ютуба - а там по виду все грузится на специальный сервак, где видос анализируется (доджить дубликаты, порнуху и так далее) и там же генерируются тамбнейлы. Но нет сука, я этим пидорам пошлю православный ФРОНТЕНД-СОЛЮШЕН, пусть нахуй ахуевают с той еботы что я понаписал Минвайл бэкендеры генерят тамбнейлы одной командой в ffmpeg Ну тут на самом деле еще суть в том, что в теории юзеру можно предлагать где именно сгенерировать тамбнейл, если юзер сам перемотал, кликнул "вот это давай" и получил. Офк все можно через бэк, но браузерное решение по идее самое юзер-френдли (и самое девелопер-анфрендли).PSS: не понял в чем проблема в асинхронной обработкеВ асинхронщине проблем нет, проблема в том что она реализована на основе костыльного setTimeout. По идее у этого <video /> элемента должны быть адекватные callback ивенты, на которые можно было бы подписаться и все как следует обновлять. Конкретно в этом случае мне не хватало что-то из разряда onRender для начального рендера картинки видоса и onTimeUpdate, когда юзер поменял время и отрендерилась новая картинка. Точнее ontimeupdate имеется, но он синхронный, срабатывает сразу после смены времени, когда картинка еще не обновилась. Я кстати чекнул немного код всяких плееров на реакте и мини-компонентов для получения тамбнейлов. Там либо миллионы строк кода, либо какой-то адовый говнокод, на фоне которого мое решение это просто вершина развития программирования. Изменено 29 сентября 2019 пользователем suez http://codepen.io/suez/ - they see me bydlocoding, they hatin. Поделиться сообщением Ссылка на сообщение
Just.Doit #7231 29 сентября 2019 "Там либо миллионы строк кода, либо какой-то адовый говнокод, на фоне которого мое решение это просто вершина развития программирования." очень крутые котейкиКому-то пизды дал - нужно сделать скрин обязательно. (с) Solo Поделиться сообщением Ссылка на сообщение
E1azor #7232 29 сентября 2019 Оно не может быть 10 в такой записи это 2 разных вопроса1) Если нужно найти N-й максимумэто ясно из контекста А N-й уже выраждается в простую сортировку. если N-количество элементов то ни в какую сортировку это не вырождается zatrolka_tupostu2) O(n) = O(2n)?это вопрос про символ O Я где-то писал например, что я кого-то собеседую? И почему ты решил, что я не знаю что значит символ?Показалось, значит я брежу если не собеседуешь.Потому что пишешь O(2n). Можно написать "2n операций деления" или даже O(15), что почти общепринято для удобства. А O(2n) пишут наверно те которые не понимают шо это за значёк. всё что пишу -- шизофренический бред Поделиться сообщением Ссылка на сообщение
hira88 #7233 29 сентября 2019 Дак вот - ЭТО ТАКОЙ ПИЗДЕЦ. Я не знаю проблемы ли это с самим API видео и браузером, или это реактовская обертка синтетик ивентов поверх. Скорее всего все сразу. Все работает через жопу. твой пост можно на мемы разбирать :lol: ФРОНТЕНД-СОЛЮШЕН, пусть нахуй ахуевают с той еботы что я понаписал тумбайлы для презагрузки, типо смотри как будет, генерят на фронтенде тыщу лет как (пожирая гигабайты оперативки) генерь их ффмпегом на сервере и не знай проблем ютуб фиксит фиксит ffmpeg и все никак не пофикситу ютуба ffmpeg по прежнему падает на некоторых видео(массово, не какоето спец-уникальное видео), в твиторах даже медиа-челики уровня пьюдипая переодически пишут что "их 10гб видос опять зафейлился на обработке, теперь опять час перезагружать, а если не загрузится то перекодировать"когда я грузил,ютуб не может в объедененные видео в контейнере, типо взял пару видосов и объеденил(самимже ffmpeg-ом) без перекодировки, контейнер поддерживает...и ютуб крашиться кароче, как мне кажется, головной боли от ffmpeg на сервере явно больше чем от фронтенд решения (можно даже посадить человека-робота на фильтр картинок, пусть вкрчную подтверждает контент, будет скорее всего дешевле чем десяток кодеров для обслуживания ffmpeg) Поделиться сообщением Ссылка на сообщение
Rooster #7234 29 сентября 2019 onCanPlayThrough срабатывает на каждом рендере наверное потому что соус мог измениться Поделиться сообщением Ссылка на сообщение
hira88 #7235 29 сентября 2019 Я кстати чекнул немного код всяких плееров на реакте и мини-компонентов для получения тамбнейлов. Там либо миллионы строк кода, либо какой-то адовый говнокод, на фоне которого мое решение это просто вершина развития программирования. код плееров на всех языках и фреймворках-полный пиздец в браузере самое сложное и кривое это прокрутка видео, браузер ведь грузит видео файл линейно, а если тебе надо проматывать большое видео(от 5 минут), логика зугрузки кусков видео с учетом кейфреймов-такой лютый аддаже добавленное локально видео(до загрузки на сервер), таие лаги начинаются и браузер потечет памятью, для этого и пишут тыщи строк кода для обхода классных особенностей браузераеще тыщи строк кода на восстановление потерянного контекста, во время перемотки все лагает и теряется синхрнизация рендера-движка джаваскрипта, в браузере, и все... я всего два проекта делал с видео для веба, даже готовые плееры не спасают, страдания те еще это все делать рабочим(и оно всеравно отваливается через пару обновлений браузера) Поделиться сообщением Ссылка на сообщение
Zellar #7236 29 сентября 2019 @@Index я тебя спрашивал где это используется, а не где в теории это может использоваться Жиза для любопытныхЧекнул = пидор Поделиться сообщением Ссылка на сообщение
moonfangtopich #7237 29 сентября 2019 Индекс высрал хуйню мимо абсолютно, насколько я вижу с телефона Это должна быть такая вот мета-строка сама о себе, а не анализ моего поста, чудило Ну и я вообще не уверен, что такое возможно сделать, мб я вас всех затроллил и там будет бесконечный лупя понял точно также https://scastie.scala-lang.org/N702huNhRdODM8Vz2zhTgQ ты видимо имел ввиду что строка сама в себя отображается по этому правилуНу раз два человека одинаково неправильно поняли, значит это я хуево объяснил. Наверное, стоило написать "эта строка содержит...", а не "пост" Поделиться сообщением Ссылка на сообщение
suez #7238 29 сентября 2019 (изменено) https://drive.google.com/file/d/1eT1MnIDwMzrL3LSkr1EbVLUHKJ5E8xMo/view вот первая топорная версия. Осталось послать на сервак, сохранить и получить на главной странице видосики. Не знаю буду ли пытаться запиливать стриминг видео, чет больше по кайфу в Surge 2 поиграть. Изменено 29 сентября 2019 пользователем suez Kant понравилось это http://codepen.io/suez/ - they see me bydlocoding, they hatin. Поделиться сообщением Ссылка на сообщение
Hulster #7239 29 сентября 2019 есть же ивент loadeddata, юзал его для кастомного плеера - всё работало Поделиться сообщением Ссылка на сообщение
suez #7240 29 сентября 2019 есть же ивент loadeddata, юзал его для кастомного плеера - всё работалоРаботает почти так же как и метадатаЛоад, срабатывает, но картинка на самом деле еще не готова. http://codepen.io/suez/ - they see me bydlocoding, they hatin. Поделиться сообщением Ссылка на сообщение