Тестовое задание
работадатель дал мне следующее тестовое задание, может кто знае как его решить
Написать серверный просмотрщик файловой системы на PHP
* Использовать Bootstrap 4, Laravel фреймворк и JS фреймворк на выбор.
* Функционал:
* * Перемещение по файловой системе. Перемещение должно происходить без полной перезагрузки страницы.
* * Просмотр файлов.
* * Удаление файлов с подтверждением.
* Страница просмотра файловой системы должна содержать:
* * Имя файла, размер, расширение, время изменения, действия (просмотреть, удалить).
* Как пример можно посмотреть на Dropbox, Google Drive.
серверный просмотрщик
-----
Я так понимаю, что это серверный просмотрщик клиентской системы? :)
Функционал: просмотр файлов.
-----
Замечательная задачка. Уточняю - меня где-то лежит старый телефон Сименс 35А - с ограниченной поддержкой бровсинга. На нем надо будет просматривать бинарный файл, который породит дамп некоторой программы. Если осилишь - тебе путь в Силиконовую Долину...
Google Drive
------
Стоит посмотреть какими силами и в какие сроки это реализовывалось. А так же - сколько это стоило. А потом - серьезно подумать над имеющейся ситуацией...
Сама задача - показать файлы на стороне сервера - не сложная, но формулировка задачи дает пищу для размышлений...
Перемещение должно происходить без полной перезагрузки страницы.
так как содержимое папок нужно перегружать, то остается дерево каталогов, вот его то и нужно "стащить"
Просмотр файлов
Это тоже нужно где то "стибрить"
Остальное вроде особых затруднений не должно вызвать
Надеюсь не за бесплатно усё?
Остальное вроде особых затруднений не должно вызвать
Точно? Если задача понята правильно и действительно надо просматривать в браузере файлы на клиентской машине... Удачи. Получать разрешения от пользователя и убеждать браузер что вашему скрипту все же можно разрешить доступ к файловой системе.
На всякий случай - яваскрипту не то что к файловой системе доступа нет, он даже системные переменные просто так считать не может.
ТС:
* Как пример можно посмотреть на Dropbox, Google Drive.
А где на дропбоксе и гугл драйве просмотр локальной файловой системы?
* Просмотр файлов.
Word, Excel, PowerPoint, PDF, PS, фотошоп, что ещё?Не забудьте для офисных файлов вьюеры с интерпретатором визуал васика прикручивать. "Работодатель" молодец, да.
Для меня задача звучала настолько знакомо, что я по умолчанию "дополнил" - надо сделать веб-приложение на пыхыпы и яскрипте. Т.е. клиент открывает страничку в браузере, пыхыпы исполняется на сервере, подготавливает страничку отдает ее клиенту и клиент радуется копии эксплорера, но в своем браузере.
Если надо лазить по файловой системе сервера, то задача становится проще, жаль ТС пока что прямо не ответил на вопрос, какую же файловую систему смотреть надо.
какую же файловую систему смотреть надо.
если клиентскую, то не требуется ни пыхыпы, ни жаваскрипта. в файерфоксе, например, в меню File->Open file, и смотрите файловую систему сколько влезет. и как это пыхыпы сумеет дотянуться до файловой системы клиента? жаваскрипт можно выполнить на сервере, но чтобы пыхыпы на клиенте - не слыхал.
Кстати, решение, удовлетворяющее всем требованиям, да.
Сделать страничку на которой (даже с помощью пыхыпы!) написать - "Нажмите File->Open". Ну или чтобы сразить наповал - автоматически при загрузке страницы открыть скриптом диалог для загрузки файла.
Через контекстное меню хочешь - удаляешь, хочешь - открываешь. Еще и просмотрщик выбрать можно!
Я так понимаю, что просто веб сервис с фукциями:
- скопировать/переместить файл
- удалить файл
- да, точно удалить :) (ну или подтверждение на JS сделать)
- загрузить (download) файл
- показать список файлов в каталоге (список файлов передавать в виде JSON)
Ну и к этому запилить простенький фронт-энд на JS.
я так понимаю
-----
Не надо понимать - надо читать задание и если там нет четкого указания что именно требуется,
то предполагать самый проблемный в реализации вариант.
Бо, это тестовое задание - проверка на понимание ситуации в него входит на 100%...
Ну а у "рабобрателя" всегда есть вариант - неее, йа не то хотел...
А задание почитать не канает?
Там же написано черным по желтому "Написать серверный просмотрщик файловой системы на PHP". На PHP, Карл! Какое нахрен PHP на клиенте?
самый проблемный в реализации вариант
Ну так ты бы туда еще аутентификацию, шифрование и нейронную сеть предположил бы присобачить :) А что? Это еще проблемнее.
Я уж не говорю, что последним пунктом (для непонятливых) указано "Как пример можно посмотреть на Dropbox, Google Drive".
Там же написано черным по желтому "Написать серверный просмотрщик файловой системы на PHP".
-----
Именно это и читается - написать на ПХП, работающим на сервере, просмотрщик файловой системы.
Какая именно система - сервера, клиента или виртуальная - не специфицировано.
Потому берется прямой, но самый заморочный вариант - читать клиентскую ФС, обрабатывать на сервере результат с отображением/навигацией "дерева" на клиенте...
По варианту просмотра серверной ФС тоже есть проблемы - виндовый ИИС, по дефаулту, работает только с определенной частью ФС.
Остальное - надо специально конфигурить. Так что даже если считать что упомянута серверная ФС, то надо уточнять ограничения.
"Как пример можно посмотреть на Dropbox, Google Drive".
-----
Хммм...
Ты можешь себе представить ситуацию, когда у чела нет аккаунтов на этих сервисах?
Ну у меня, например, нет - не могу позволить себе 1-2 гига синхронизирующего трафика.
Но даже это не отменяет того момента, что что именно надо просматривать в задании не специфицировано - т.е. по выполнении задачи всегда есть возможность сказать что запрашивалось другое.
Это тестовое задание, никто не ожидает какого-то готового продукта.
Какая именно система - сервера, клиента или виртуальная - не специфицировано.
Потому берется прямой, но самый заморочный вариант - читать клиентскую ФС
На зло бабушке отморожу себе уши :)
Если задание не специфицировано, то просто либо спрашиваем, у того, что придумал это задание, либо выступаем в роли заказчика самостоятельно и додумываем спецификацию, при этом не забываем описывать ограничения. Однако в данном случае, все предельно ясно. ИМХО :) Ну и не забываем, что это тестовое задание.
Так что даже если считать что упомянута серверная ФС, то надо уточнять ограничения.
Вот только с ума сходить не надо :) Опять же, если ТС увидит, что в данном случае ИИС (кстати, почему именно ИИС, нигде в
задании не сказано, что это все для винды :D да и под винду не только ИИС использовать можно) накладывает ограничения, то это просто описывается одной строчкой текста.
Так что тут явно не хватает еще полноценного инсталлятора, который бы включал установку и настройку веб сервера и php при этом для каждой известной миру операционной системы :D (ну если уж идти по "самому замороченному варианту")
Ты можешь себе представить ситуацию, когда у чела нет аккаунтов на этих сервисах?
Могу представить, что нет аккаунтов. Но не могу себе представить, чтобы человек из мира ИТ не имел представление о том, что такое Dropbox или Google Drive.
т.е. по выполнении задачи всегда есть возможность сказать что запрашивалось другое.
Ты полагаешь, что
у фирмы, которая нанимает на работу стоит задача отказать как можно большему количеству претендентов?
просто либо спрашиваем
-----
Для осознания необходимости вопроса, собственно, и написан самый глупый вариант прочтения.
самостоятельно и додумываем
------
Ты можешь додумать все что хочешь - "рабобратель" будет интерпретировать как ему нужно.
не забываем, что это тестовое задание.
-----
Именно.
Оцени временные затраты - описанная задача несколько великовата для тестового задания.
При этом, даже имея работающее решение, остается пространство для маневра/отказа.
не имел представление
-----
Имею, но не знаю как там выглядит интерфейс.
Создавать лишний аккаунт чтобы посмотреть как сделано мне лениво.
стоит задача
-----
Я не предполагаю какая задача стоит в данном случае.
Но Я оцениваю время выполнения задачи как >15 минут, т.е. не тест, а кусок работы.
Как показывает практика, есть куча шараг, которые под видом тестовых заданий дают кандидатам куски реальной работы на несколько дней и... на их выполнении все заканчивается.
100 кандидатов, 30-40 решений, 3-5 более-менее приличных - можно выбрать более-менее подходящее, обработать напильником по месту и втиснуть заказчику.
В данном случае для меня задание выглядит именно так - поэтому Я показал возможные проблемы и рекомендовал обдумать.
Оцени временные затраты - описанная задача несколько великовата для тестового задания.
Если не придумывать всякие сложности, то показать список файлов в браузере и скопировать файлы на сервере - вполне себе нормальное тестовое задание. Можно конечно, чтобы этот сервис при помощи нейронной сети и биг дата сам угадывал, какой файл и куда скопировать, но это никому не надо.
С другой стороны, если при виде задания, человек начинает додумывать и реализовывать самый сложный вариант, то это отличный повод не брать такого умника на работу :)
Имею, но не знаю как там выглядит интерфейс.
Зачем там смотреть интерфейс? Имеется в виду пример функционала, а не интерфейса. Функционал этих сервисов понятен и без регистрации. Особенно, в свете описанного выше задания.
начинает додумывать и реализовывать
------
У меня где-то есть предложение что-то как-то реализовать?
Повторюсь - "подсвечены" потенциальные проблемы. Как с ними поступать - это уже к ТС.
в свете описанного выше задания.
-----
Опять за рыбу деньги.
вполне себе нормальное тестовое задание.
-----
Время реализации?
У меня есть на 90% аналогичная задача. Даже более определенная и простая.
На сервер закидывается файл, Сервер на его основе генерит, распределенно по времени, кучу файлов.
Готовые файлы надо в несколько потоков загрузить на клиента.
Из ограничений - нельзя делать поолинг - слишком много придется таскать, нельзя делать отдельный процесс для
отслеживания окончания, перекачка должна начинаться максимально быстро после окончания генерации файла.
Из проблем - нет способа узнать закончил сервер генерацию или нет, количество паралельных клиентов - 5-10 тыс.
Модификация - специфицируется закидываемый файл - хмл-дифф.
На сервере делается мерге с текущим файлом исходных данных и дальше по плану.
Изменения - в любой момент времени надо иметь возможность быстро оценить изменеия в произвольной версии
и вернуться к ней, создать бранч и т.п... гита/свн нет, полные файлы исходных данных хранить нельзя,
ФС пользовать нельзя...
СШарп, .НЕТ, ИИС 7+, презентационный уровень не требуется - хватит настраиваемого клиента.
Желающие могут приступить к реализации "тестовой" задачи - объем несколько меньше, чем у ТС,
но моя оценка первой части где-то 30-40 часов, по второй - неопределенно.