Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

Тестовое задание

485  1 2 все
russki1 прохожий03.03.18 10:46
03.03.18 10:46 

работадатель дал мне следующее тестовое задание, может кто знае как его решить


Написать серверный просмотрщик файловой системы на PHP
* Использовать Bootstrap 4, Laravel фреймворк и JS фреймворк на выбор.
* Функционал:
* * Перемещение по файловой системе. Перемещение должно происходить без полной перезагрузки страницы.
* * Просмотр файлов.
* * Удаление файлов с подтверждением.
* Страница просмотра файловой системы должна содержать:
* * Имя файла, размер, расширение, время изменения, действия (просмотреть, удалить).
* Как пример можно посмотреть на Dropbox, Google Drive.

#1 
Murr_0002 знакомое лицо03.03.18 12:09
Murr_0002
NEW 03.03.18 12:09 
в ответ russki1 03.03.18 10:46

серверный просмотрщик

-----

Я так понимаю, что это серверный просмотрщик клиентской системы? :)


Функционал: просмотр файлов.

-----

Замечательная задачка. Уточняю - меня где-то лежит старый телефон Сименс 35А - с ограниченной поддержкой бровсинга. На нем надо будет просматривать бинарный файл, который породит дамп некоторой программы. Если осилишь - тебе путь в Силиконовую Долину...


Google Drive

------

Стоит посмотреть какими силами и в какие сроки это реализовывалось. А так же - сколько это стоило. А потом - серьезно подумать над имеющейся ситуацией...



Сама задача - показать файлы на стороне сервера - не сложная, но формулировка задачи дает пищу для размышлений...

#2 
russki1 прохожий03.03.18 12:12
NEW 03.03.18 12:12 
в ответ Murr_0002 03.03.18 12:09

Да у меня тоже подобные мысли вертелись)

#3 
AlexNek патриот03.03.18 13:15
AlexNek
NEW 03.03.18 13:15 
в ответ russki1 03.03.18 10:46
Перемещение должно происходить без полной перезагрузки страницы.

так как содержимое папок нужно перегружать, то остается дерево каталогов, вот его то и нужно "стащить"


Просмотр файлов

Это тоже нужно где то "стибрить"


Остальное вроде особых затруднений не должно вызвать


Надеюсь не за бесплатно усё?

#4 
MrSanders старожил03.03.18 15:19
NEW 03.03.18 15:19 
в ответ AlexNek 03.03.18 13:15, Последний раз изменено 03.03.18 15:24 (MrSanders)
Остальное вроде особых затруднений не должно вызвать

Точно? Если задача понята правильно и действительно надо просматривать в браузере файлы на клиентской машине... Удачи. Получать разрешения от пользователя и убеждать браузер что вашему скрипту все же можно разрешить доступ к файловой системе.

На всякий случай - яваскрипту не то что к файловой системе доступа нет, он даже системные переменные просто так считать не может.


ТС:

* Как пример можно посмотреть на Dropbox, Google Drive.

А где на дропбоксе и гугл драйве просмотр локальной файловой системы?

* Просмотр файлов.

Word, Excel, PowerPoint, PDF, PS, фотошоп, что ещё?Не забудьте для офисных файлов вьюеры с интерпретатором визуал васика прикручивать. "Работодатель" молодец, да.

#5 
AlexNek патриот03.03.18 15:31
AlexNek
NEW 03.03.18 15:31 
в ответ MrSanders 03.03.18 15:19

А причем здесь Ява скрипт, когда речь о PHP. Хотя там тоже можно поиметь проблемы с каталогами, но это уже другая песня

Для просмотра тоже пользуем PHP причем разбивка идет на три группы:текст, картинки и всё остальное (как Hex View)

#6 
MrSanders старожил03.03.18 19:32
NEW 03.03.18 19:32 
в ответ AlexNek 03.03.18 15:31, Последний раз изменено 03.03.18 19:33 (MrSanders)

Для меня задача звучала настолько знакомо, что я по умолчанию "дополнил" - надо сделать веб-приложение на пыхыпы и яскрипте. Т.е. клиент открывает страничку в браузере, пыхыпы исполняется на сервере, подготавливает страничку отдает ее клиенту и клиент радуется копии эксплорера, но в своем браузере.

Если надо лазить по файловой системе сервера, то задача становится проще, жаль ТС пока что прямо не ответил на вопрос, какую же файловую систему смотреть надо.

#7 
  moose старожил03.03.18 19:56
NEW 03.03.18 19:56 
в ответ MrSanders 03.03.18 19:32, Последний раз изменено 03.03.18 19:57 (moose)
какую же файловую систему смотреть надо.

если клиентскую, то не требуется ни пыхыпы, ни жаваскрипта. в файерфоксе, например, в меню File->Open file, и смотрите файловую систему сколько влезет. и как это пыхыпы сумеет дотянуться до файловой системы клиента? жаваскрипт можно выполнить на сервере, но чтобы пыхыпы на клиенте - не слыхал.


#8 
MrSanders старожил03.03.18 21:21
NEW 03.03.18 21:21 
в ответ moose 03.03.18 19:56

Кстати, решение, удовлетворяющее всем требованиям, да.

Сделать страничку на которой (даже с помощью пыхыпы!) написать - "Нажмите File->Open". Ну или чтобы сразить наповал - автоматически при загрузке страницы открыть скриптом диалог для загрузки файла.
Через контекстное меню хочешь - удаляешь, хочешь - открываешь. Еще и просмотрщик выбрать можно!

#9 
Программист коренной житель05.03.18 09:41
NEW 05.03.18 09:41 
в ответ russki1 03.03.18 10:46

Я так понимаю, что просто веб сервис с фукциями:

- скопировать/переместить файл

- удалить файл

- да, точно удалить :) (ну или подтверждение на JS сделать)

- загрузить (download) файл

- показать список файлов в каталоге (список файлов передавать в виде JSON)


Ну и к этому запилить простенький фронт-энд на JS.

#10 
Программист коренной житель05.03.18 09:43
NEW 05.03.18 09:43 
в ответ MrSanders 03.03.18 15:19
просматривать в браузере файлы на клиентской машине...

Почему на клинской? "серверный просмотрщик файловой системы" - я так понимаю, что имеется в виду файловая система сервера.

#11 
Murr_0002 знакомое лицо05.03.18 09:49
Murr_0002
NEW 05.03.18 09:49 
в ответ Программист 05.03.18 09:43

я так понимаю

-----

Не надо понимать - надо читать задание и если там нет четкого указания что именно требуется,

то предполагать самый проблемный в реализации вариант.

Бо, это тестовое задание - проверка на понимание ситуации в него входит на 100%...

Ну а у "рабобрателя" всегда есть вариант - неее, йа не то хотел...

#12 
Программист коренной житель05.03.18 09:52
NEW 05.03.18 09:52 
в ответ Murr_0002 03.03.18 12:09
Я так понимаю, что это серверный просмотрщик клиентской системы? :)

Ну про "не надо понимать" - чья бы корова мычала :)

#13 
Murr_0002 знакомое лицо05.03.18 10:50
Murr_0002
NEW 05.03.18 10:50 
в ответ Программист 05.03.18 09:52

"предполагать самый проблемный в реализации вариант."

Да, было использовано неправильное слово. бывает...

#14 
Программист коренной житель05.03.18 11:02
NEW 05.03.18 11:02 
в ответ Murr_0002 05.03.18 10:50

А задание почитать не канает?


Там же написано черным по желтому "Написать серверный просмотрщик файловой системы на PHP". На PHP, Карл! Какое нахрен PHP на клиенте?


самый проблемный в реализации вариант

Ну так ты бы туда еще аутентификацию, шифрование и нейронную сеть предположил бы присобачить :) А что? Это еще проблемнее.


Я уж не говорю, что последним пунктом (для непонятливых) указано "Как пример можно посмотреть на Dropbox, Google Drive".

#15 
Murr_0002 знакомое лицо05.03.18 11:22
Murr_0002
NEW 05.03.18 11:22 
в ответ Программист 05.03.18 11:02

Там же написано черным по желтому "Написать серверный просмотрщик файловой системы на PHP".

-----

Именно это и читается - написать на ПХП, работающим на сервере, просмотрщик файловой системы.

Какая именно система - сервера, клиента или виртуальная - не специфицировано.

Потому берется прямой, но самый заморочный вариант - читать клиентскую ФС, обрабатывать на сервере результат с отображением/навигацией "дерева" на клиенте...


По варианту просмотра серверной ФС тоже есть проблемы - виндовый ИИС, по дефаулту, работает только с определенной частью ФС.

Остальное - надо специально конфигурить. Так что даже если считать что упомянута серверная ФС, то надо уточнять ограничения.


"Как пример можно посмотреть на Dropbox, Google Drive".

-----

Хммм...

Ты можешь себе представить ситуацию, когда у чела нет аккаунтов на этих сервисах?

Ну у меня, например, нет - не могу позволить себе 1-2 гига синхронизирующего трафика.

Но даже это не отменяет того момента, что что именно надо просматривать в задании не специфицировано - т.е. по выполнении задачи всегда есть возможность сказать что запрашивалось другое.


#16 
Программист коренной житель05.03.18 11:59
NEW 05.03.18 11:59 
в ответ Murr_0002 05.03.18 11:22

Это тестовое задание, никто не ожидает какого-то готового продукта.


Какая именно система - сервера, клиента или виртуальная - не специфицировано.
Потому берется прямой, но самый заморочный вариант - читать клиентскую ФС

На зло бабушке отморожу себе уши :)

Если задание не специфицировано, то просто либо спрашиваем, у того, что придумал это задание, либо выступаем в роли заказчика самостоятельно и додумываем спецификацию, при этом не забываем описывать ограничения. Однако в данном случае, все предельно ясно. ИМХО :) Ну и не забываем, что это тестовое задание.

Так что даже если считать что упомянута серверная ФС, то надо уточнять ограничения.

Вот только с ума сходить не надо :) Опять же, если ТС увидит, что в данном случае ИИС (кстати, почему именно ИИС, нигде в задании не сказано, что это все для винды :D да и под винду не только ИИС использовать можно) накладывает ограничения, то это просто описывается одной строчкой текста.

Так что тут явно не хватает еще полноценного инсталлятора, который бы включал установку и настройку веб сервера и php при этом для каждой известной миру операционной системы :D (ну если уж идти по "самому замороченному варианту")


Ты можешь себе представить ситуацию, когда у чела нет аккаунтов на этих сервисах?

Могу представить, что нет аккаунтов. Но не могу себе представить, чтобы человек из мира ИТ не имел представление о том, что такое Dropbox или Google Drive.


т.е. по выполнении задачи всегда есть возможность сказать что запрашивалось другое.

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

#17 
Murr_0002 знакомое лицо05.03.18 12:45
Murr_0002
NEW 05.03.18 12:45 
в ответ Программист 05.03.18 11:59

просто либо спрашиваем

-----

Для осознания необходимости вопроса, собственно, и написан самый глупый вариант прочтения. смущ


самостоятельно и додумываем

------

Ты можешь додумать все что хочешь - "рабобратель" будет интерпретировать как ему нужно.



не забываем, что это тестовое задание.

-----

Именно.

Оцени временные затраты - описанная задача несколько великовата для тестового задания.

При этом, даже имея работающее решение, остается пространство для маневра/отказа.



не имел представление

-----

Имею, но не знаю как там выглядит интерфейс.

Создавать лишний аккаунт чтобы посмотреть как сделано мне лениво.



стоит задача

-----

Я не предполагаю какая задача стоит в данном случае.

Но Я оцениваю время выполнения задачи как >15 минут, т.е. не тест, а кусок работы.

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

100 кандидатов, 30-40 решений, 3-5 более-менее приличных - можно выбрать более-менее подходящее, обработать напильником по месту и втиснуть заказчику.

В данном случае для меня задание выглядит именно так - поэтому Я показал возможные проблемы и рекомендовал обдумать.

#18 
Программист коренной житель05.03.18 13:31
NEW 05.03.18 13:31 
в ответ Murr_0002 05.03.18 12:45
Оцени временные затраты - описанная задача несколько великовата для тестового задания.

Если не придумывать всякие сложности, то показать список файлов в браузере и скопировать файлы на сервере - вполне себе нормальное тестовое задание. Можно конечно, чтобы этот сервис при помощи нейронной сети и биг дата сам угадывал, какой файл и куда скопировать, но это никому не надо.


С другой стороны, если при виде задания, человек начинает додумывать и реализовывать самый сложный вариант, то это отличный повод не брать такого умника на работу :)


Имею, но не знаю как там выглядит интерфейс.

Зачем там смотреть интерфейс? Имеется в виду пример функционала, а не интерфейса. Функционал этих сервисов понятен и без регистрации. Особенно, в свете описанного выше задания.

#19 
Murr_0002 знакомое лицо05.03.18 15:45
Murr_0002
NEW 05.03.18 15:45 
в ответ Программист 05.03.18 13:31

начинает додумывать и реализовывать

------

У меня где-то есть предложение что-то как-то реализовать?

Повторюсь - "подсвечены" потенциальные проблемы. Как с ними поступать - это уже к ТС.


в свете описанного выше задания.

-----

Опять за рыбу деньги.



вполне себе нормальное тестовое задание.

-----

Время реализации?


У меня есть на 90% аналогичная задача. Даже более определенная и простая.


На сервер закидывается файл, Сервер на его основе генерит, распределенно по времени, кучу файлов.

Готовые файлы надо в несколько потоков загрузить на клиента.

Из ограничений - нельзя делать поолинг - слишком много придется таскать, нельзя делать отдельный процесс для

отслеживания окончания, перекачка должна начинаться максимально быстро после окончания генерации файла.

Из проблем - нет способа узнать закончил сервер генерацию или нет, количество паралельных клиентов - 5-10 тыс.


Модификация - специфицируется закидываемый файл - хмл-дифф.

На сервере делается мерге с текущим файлом исходных данных и дальше по плану.

Изменения - в любой момент времени надо иметь возможность быстро оценить изменеия в произвольной версии

и вернуться к ней, создать бранч и т.п... гита/свн нет, полные файлы исходных данных хранить нельзя,

ФС пользовать нельзя...


СШарп, .НЕТ, ИИС 7+, презентационный уровень не требуется - хватит настраиваемого клиента.


Желающие могут приступить к реализации "тестовой" задачи - объем несколько меньше, чем у ТС,

но моя оценка первой части где-то 30-40 часов, по второй - неопределенно.

#20 
Программист коренной житель05.03.18 16:31
NEW 05.03.18 16:31 
в ответ Murr_0002 05.03.18 15:45
Повторюсь - "подсвечены" потенциальные проблемы.

Фактически ты провалил это тестовое задание :) Т.к. в задании все вполне нормально написано, ты же докопался до ерунды в результате чего выполнение задания стало невозможным ;)


Время реализации?

Если человек хочет работать в web-разработке, то это тестовое задание минут 15-30.


У меня есть на 90% аналогичная задача. Даже более определенная и простая.

Сравни ту хрень, которую описал ты и то, что ожидается от ТС:


Если ты считаешь, что то, что ты описал - это хоть как-то напоминает задание ТС, то ты просто не понимаешь, что требовалось от ТС.


Объясняю для невежд (с) :)

1) надо написать на PHP простенький веб-сервис (я не силен с синтаксисе PHP, поэтому сигнатуру пишу условно):

  • moveFile (string from, string to)
  • deleteFile (string path)
  • downloadFile (string path)
  • list<JSONData> getFolderContent (string path) // тут надо вернуть массив данных в JSON (тут можно даже не учитывать подпапки, но имея JSON отличить папку от файла - вообще не проблема)

2) над этим веб-сервисом сделать простенький GUI, чтобы можно было дернуть каждую из этих функций. Тут единственное ограничение - нельзя перегружать страницу целиком.


Собственно говоря, если посмотреть на это задание, то

  • moveFile - 1 строчка кода
  • deleteFile - 1 строчка
  • downloadFile - хз сколько строчек, но тоже врядли больше 5
  • getFolderContent - тут строчек 15-20 наверно
  • GUI - 2 одинаковых div'а (слева и справа), в каждом div'е сверху строка, в которой указан путь, снизу еще один div с списком файлов. Каждый див состоит из имени, расширения, размера, времени действия и 2-х кнопок - посмотреть и удалить.
  • при нажатии на "удалить" сначала спросить юзера, уверен ли он, и если да, то дернуть соответствующую функцию


Все.


Ты правда думаешь, что это аналогичные задания?


PS: а вообще, очень часто вспоминаю своего препода по физике, который говорил "если решение задачи сложное, значит оно неправильное" :)


#21 
Murr_0002 знакомое лицо05.03.18 17:29
Murr_0002
NEW 05.03.18 17:29 
в ответ Программист 05.03.18 16:31

ты просто не понимаешь, что требовалось от ТС

-----

Ты в этом уверен?


Все.

-----

Ты таки кое-что выкинул...

С васиком выше было сказано MrSanders - Ворд, Ехсел, ПоверПоинт с макросами.

Если есть желание - детачнутый файл мсскл-базы из под винды перекинули под луня - надо просмотр таблиц и реляций...

На все про все - заявленные 30 минут - время пошло, ждем решения как в GOOGLE DRIVE... там ведь пустяки...


Ты правда думаешь, что это аналогичные задания?

------

Да, вполне.

Мое даже чуточку проще - нет заморочек с возможными прочтениями требований,

хотя кое-что Я не указал, чтобы иметь возможность маневра.


Реализация - сервер пишет лог сгенерированных файлов.

Лог читается по ФТП любым клиентом, синхронизируется с внутренним списком файлов с отметками статуса.

Тем же ФТП клиентом по списку тянутся файлы нужным количеством потоков, отмечается статус.

В логе ожидается запись об завершении генерации и докачиваются оставшиеся файлы.


Тут действительно ВСЕ.

Ну и по крайней мере оно пишется весьма средненьким прогером за то время которое Я указал.

Объем реализации - 100-400 строк (8-32 часа) - зависит от способа реализации синхронизации списка и управления потоками.


Вот для модификации уже будет нужен веб-сервис - мерге по ФТП не пройдет, если не мониторить ФС.

Ну так оно в отдельную задачу выделено.

#22 
Murr_0002 знакомое лицо05.03.18 17:34
Murr_0002
NEW 05.03.18 17:34 
в ответ Программист 05.03.18 16:31, Последний раз изменено 05.03.18 17:37 (Murr_0002)

"если решение задачи сложное, значит оно неправильное" :)

-----

Математик нам говорил - если решение сложное - вероятно задача сформулирована неправильно.

Это не значит, что есть простое решение - это значит что имеющийся уровень понимания/способ формулировки задачи не позволяет понять существует ли простое решение.

#23 
Программист коренной житель05.03.18 17:49
NEW 05.03.18 17:49 
в ответ Murr_0002 05.03.18 17:29
Ты в этом уверен?

Уверен :)


Ты таки кое-что выкинул...

Да? Что я выкинул? :) Цитату из 1-ого поста приведи :)


С васиком выше было сказано MrSanders - Ворд, Ехсел, ПоверПоинт с макросами.

Ну MrSanders пошел по твоим стопам и довел тестовое задание до абсурда. И что? И странно, что никто из вас не предложил отклывать sln, при этом так, чтобы подтягивались все исходники и компилировались на клиенте в написанном на JS компиляторе, после чего запускались бы :) Ну а фигли? Это же тоже файлы :D :D :D

Да и вообще много разных форматов данных. Можно еще чертеж самолета открыть. А почему нет? :)


Задание, которое привел ТС делается максимум за 30 минут... ну за час. Не больше.

#24 
Murr_0002 знакомое лицо05.03.18 18:02
Murr_0002
NEW 05.03.18 18:02 
в ответ Программист 05.03.18 17:49

Цитату из 1-ого поста

-----

* Функционал:
* * Просмотр файлов.
* * kak Google Drive.


довел тестовое задание до абсурда

-----

Тестовое задание не может быть сформулировано так, чтобы его интерпретация приводила к абсурду.

Если такое возможно - надо очень серьезно думать об работе с такой шараге...

Именно об этом и было мною написано.



за 30 минут... ну за час

------

Свое таки Я тоже напишу где-то за час - с ФТП клиентом работал недавно. Правда без документации.

Ну а от тебя ожидается просмотрщик детачнутой базы - не тяни, время идет... смущ

#25 
Программист коренной житель05.03.18 18:16
NEW 05.03.18 18:16 
в ответ Murr_0002 05.03.18 18:02
* Функционал:
* * Просмотр файлов.
* * kak Google Drive.

Там не так написано. Пойди-ка и внимательно прочитай описание. И там не написано, что надо повторить функционал Google Drive. Это уже твоя фантазия.


Тестовое задание не может быть сформулировано так, чтобы его интерпретация приводила к абсурду.

Ну если ищут исполнителя, задача которого будет "копать от сюда и до обеда", то конечно не может :)

Если же нужен адекватный сотрудник, то приведенное выше задание показывает сразу две вещи:

1) насколько кандидат соответствует требованиям (знание php, JS итд)

2) насколько кандидат способен понимать задания, которые пишутся простыми смертными.


Если такое возможно - надо очень серьезно думать об работе с такой шараге...

Ну-ну :)


Ну а от тебя ожидается просмотрщик детачнутой базы - не тяни, время идет...

Ну так пусть идет ;) Мне не жалко, у меня свои дела есть. Твои проблемы я решать не буду и не работу к тебе я тоже не устраиваюсь :)

#26 
Murr_0002 знакомое лицо05.03.18 18:21
Murr_0002
NEW 05.03.18 18:21 
в ответ Программист 05.03.18 18:16

я решать не буду

-----

Слив защитан. хаха

#27 
Программист коренной житель05.03.18 18:27
NEW 05.03.18 18:27 
в ответ Murr_0002 05.03.18 18:21

Слив чего? :)

Ты, батенька, бредишь :) Я нигде не говорил, что собираюсь решать твою задачу :)


Это ты с чего-то решил, что твоя задача и задача ТС идентичные. Ну так это исключительно твои проблемы :)


А вот ты со своим видением тестового задания плотно сидишь в луже :)

#28 
1 2 все