Pull to refresh

Comments 59

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

Жму руку неизвестному гению!
У нас есть на выбор автомобили любого цвета, если этот цвет – чёрный?
Напомнило ЭнеКоКоРеш (после прочтения ТЗ можно промотать в самый конец к решению).
Напомнило байки от Крока, не думал, что можно написать еще веселее и про программирование. Зачет однозначно.
Это не production-код, здесь не место костылям

Пф-ф-ф-ф. Зачем же Вам люди, которые не умеют писать production-код?
Подразумевается, что, наоборот, production-код — это нечто, со временем превратившееся в трэш и угар с кучей legacy и технического долга во имя сокращения расходов на перетестирование, а требуются люди, умеющие писать не-production-код, а что-то более качественное и красивое, вроде того, чем этот production-код был в первых версиях.
Вы так серьёзно на эту подколку ответили, что мне за неё аж неловко стало.
Но костылизация же происходит по мере изменения ТЗ в процессе разработки без пересмотра сроков, а тут требования не менялись. Зачем просто код превращать в production-код, сразу? )
Самый правильный способ — выбросить все написанное и написать с нуля с учетом пропущенных требований.

А вот интересненько, неужели такая большая разница, что нельзя добиться своего рефакторингом + изменениями в нужных местах?

Я когда-то думал что библиотеки это фигня и начал делать игру на андроид на канвасе. Потом для следующих уже использовал фреймворк. А когда продолжал делать первую — приходилось доделывать старый, ужастный, костыльный код. Лучше бы я сразу его выбросил и переписал на фреймворк — заняло бы день, код уменьшилься раза в 2 точно. П.С. и писал я все в двух файлах, да, жесть.


Так вот, к чему я все это. Тут рефакторинг 100% невозможен.

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


И еще рефакторинг тоже надо уметь

Ну выбросить все и начать по новой, вроде тоже можно считать рефакторингом, вполне живой способ для не очень больших задач.
Раз такая пьянка пошла хочу спросить, никто не встречал качальщиков которые с ютуба звуковые дорожки могут качать с очередью? С сайтов качать каждый линк по отдельности долгое и не приятное дело.
Желательно так что стандартный ютюб HTTP линк(стопкой) и качает в mp3 формате.
Так выдавайте такое тестовое задания для кандидатов.
Типичненько:)
Ньюфаг:- Мне надо перевести книгу, как бы это сделать подешевле?
Олдфаг:- Повесь объяву о найме переводчиков, выдай каждому тестовое задание по 10 страниц, профит.

Не претендую на правильный ответ, но посмотрите документацию youtube-dl. Программа (ладно, скрипт) точно умеет качать отдельно аудио по ссылкам и точно позволяет создавать очередь, читая из файла.

youtube-dl скачать-то скачает, даже с выбором битрейта.
Но для конвертации в mp3 необходимо поставить ffmpeg с подключением lame
Все это настраивается буквально за минут 10.

В последний раз слушал фестиваль электронной музыки: в одном окне качал видео в best качестве, в другом записывал аудио напрямую в mp3.

Да, он скачает что есть, а не то что хочется. Потому что далеко не факт, что звуковая дорожка там в mp3. Поэтому конвертировать придётся любым удобным способом. Ну или продолжать искать программу skacahat-youtube-v-mp3-bez-sms.

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

youtube-dl не сайт, а программа. Среди прочих возможностей, к ней прилагается такой ключик


-a, --batch-file FILE File containing URLs to download ('-' for stdin)

Поскольку я много слушаю всяких бесед с ютуба, то использую немного другую последовательность: скачиваю Download Master'om от Westbyte, он, кстати, поддерживает плэйлисты и скачивание прямо звука, но звук я ему не доверяю, а использую Pazera Free Audio Extractor, выдирающий списком.
Как последний шаг, делю получившиеся звуковые файлы на 3-5 минутные куски с помощью mp3splt для упрощения навигации
Это не production-код, здесь не место костылям.

Унёс в мемориз =)
* А вот ещё, видимо, очень неглупый человек, который прислал один класс с пустой main-функцией (и больше ничего) и пояснил «Вот как-то в таком стиле я планирую делать это задание. Надеюсь, моя мысль уже ясна?».

IMHO это был сарказм — типа *вы издеваетесь?*
было бы весьма клево если бы еще было подписано на какую вакансию эти задания и, если, такое дали сеньору — то я, от части, даже его понимаю
А что сеньеору ( помидору ) никогда по работе не приходится писать простой код?
Имхо одна и та же, пусть и очень простая задача написанная разными людьми отлично покажет их уровень, да и вообще много чего покажет. Не понимаю если честно этого высокомерия, мол мы слишком круты для такого.
Просто интересно — а какого рода тестовых заданий вы ожидаете увидеть для серьоров?
Я потому и написал — «от части», всех исходных данных то я не знаю. Просто было бы странно получить такое задание, например, если тебя сами пригласили — они же наверно ознакомились с портфолио и гитхабом.
Вполне возможно и высокомерие, да — я же не оправдываю его :)
Это тестовые задания вот на эту вакансию.
Я никогда не прошу сделать что-то конкретное.

Мы поэтому и выложили задания на GitHub чтобы человек мог выбрать что ему больше нравится. Нравится ему делать консольный качальщик — ну прекрасно. Если пресловутый senior сам выбрал качальщик и сам отказался его делать — я даже не знаю что сказать :)

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

Ааа, вот теперь все прояснилось и стало на свои места :) Тогда действительно весьма забавный случай :)
Вариант «заснуть на n секунд» — лучший!!!
Прямо даже завидую, что это не я придумал 8-)
А какой примерно процент подобных решений по отношению к правильно выполненным?
Примерно половина работает совершенно неправильно, что, лично для меня, удивительно — ведь для проверки задания не нужно ничего, только интернет. Вот ты сделал задание, ну так запусти же его, скачай хотя бы один файл в один поток :)

Оставшаяся половина делится примерно так:
  • 40% — работает с недочетами «средней» тяжести
  • 10% — работает очень хорошо
Первой мыслью было spark/hadoop/amazon lambda. Нулевой, конечно, libcurl

Насколько я помню, в libcurl не так легко сделать огранчиение скорости.

UFO just landed and posted this here
Скорее, вэлком ту Ульяновск! =)
UFO just landed and posted this here
Интересно, а решения, которое таскает с собой wget/curl и вызывает его с ключами не встречалось?
Думаю если кто так делал, то их сразу на должность админов приглашали =)
UFO just landed and posted this here
Нет, такие не встречались.

Однако, если такой вариант грамотно «упаковать» и прислать — почему нет, посмотрю с интересом. Мне ведь, по большому счету, не нужен еще один качальщик, мне хочется посмотреть что человек знает и умеет, как он выражает свои мысли в виде кода

P.S. Я изначальный автор этого текста и тот, кто проверяет эти тестовые :)
> * А вот ещё, видимо, очень неглупый человек, который прислал один класс с пустой main-функцией (и больше ничего) и пояснил «Вот как-то в таком стиле я планирую делать это задание. Надеюсь, моя мысль уже ясна?».
Может там был код в стиле brainfuck с невидимыми utf-символами: пробелы, табуляция итп?)
UFO just landed and posted this here
Могу на C# шатальщик написать.
Возьмете на удаленку?
Раз такая пьянка идет — никто не подскажет, как закачивать файлы с сайта госзакупок? Сижу и мучаюсь, выбираю каждый по одному. Мало того, более 10-ти потоков скачивания не запускается, приходится ждать. Натравливал на сайт все известные качалки — они не видят ссылок на скачивание.
Скажите пожалуйста, какой оптимальный способ ограничения скорости скачивания? Просто пауза?
А вариант в лоб: читаем в цикле n байт, пока поток не кончится, но на каждой итерации задерживаемся под заданную скорость, которая рассчитывается как отношение n r затраченному на итерацию времени?

У кадого потока есть "бюджет". Мастер каждую секнду добавляет в "бюджет" заданную скорость. Данные вычитываются из сокета, если етсь положительный бюджет. При получении данных их объем вычитается из бюджета.

Лично у меня бы это сильно поубавило желание пытаться устроиться к вам работать :)
Что я увидел по ссылке из начала статьи
image

Интересно, если придет автор Reget, вы бы его взяли?

Sign up to leave a comment.