Клиент ненадежного сервера фрагментов изображений.
"Вчера я был дурак, за неделю до этого - идиот, а месяц назад - дебил. Не показывай мне код, который я мог бы написать вчера. Покажи мне код, который я напишу завтра".
Эволюция, The Codeless Code :: Koans for the Software Engineer
Вы потратили пару дней на изучение Node API, сели реализовывать тестовое задание и через несколько часов добились результата. Я сэкономлю вам время и сделаю это за вас, ожидая, что ваше решение будет выглядеть примерно так, как оно выглядит.
Найдите слабые места в этом коде. Усильте их. Сделайте так, чтобы скорость скачивания файлов зависела не от прихотей сервера, а только от скорости сети. Относитесь бережно к уже скачанным фрагментам файлов - не давайте им бесследно пропасть только потому, что пользователь решил бесцеремонно завершить ваш процесс. Не повторяйте уже сделанную работу. Изучите поведение сервера. Будьте готовыми к тому, что он может решить прислать вам некорректные данные.
Покажите пользователю, что вы его любите. Рассчитайте ожидаемое время скачивания и продемонстрируйте появление новых фрагментов. Оповестите его, когда файлы будут готовы. Спросите его, какой программой открывать готовые файлы и используйте эту информацию. Консольный интерфейс понятен далеко не всем - покажите ход скачивания через браузер.
Дайте возможность использовать свой код другим программистам. Сделайте из плохой программы хороший модуль. Теперь ваш код запускает не человек, а другая программа - представьте, каким образом она хочет его использовать: как она должна передать вашему коду необходимые параметры и на какие события хочет реагировать? Что, если другой программист хотел бы регулировать ширину канала, которую он хотел бы доверить вашему модулю, чтобы его собственный код тоже мог пользоваться сетью? Что, если он хочет складывать фрагменты файлов не на диск, а в базу данных? Что, если он пишет приложение, которое работает целиком в браузере и хочет воспользоваться вашим модулем?
Напишите тесты. Хорошие тесты лучше хорошей документации.
Не повторяйте уже сделанную работу - повторяю вам еще раз. Изучите коллекцию готовых модулей и решите, какие из них могут вам помочь сделать ваш код лучше. Подсказка: browserify, ansi, dreamopt, mocha (читается "мокка"), growl и многие другие.
Удачи!