|
Задача с собеседования
|
|||
---|---|---|---|
#18+
Второй день гуглю, ничего не нагуглю: На сервере хранится очень большое количество файлов. Список файлов (разделенных символом перевода строки) можно получить по следующему URL: http://host/files. Некоторые из них мы периодически кешируем к себе на диск, но время от времени возникает необходимость удалить закешированный файл, если его больше нет на сервере. Сейчас это делается командой curl http://host/files | grep -q my-file || rm my-file Все ли хорошо в этой команде? Если нет, то что не так, и как это исправить? Список файлов очень большой и желательно не сохранять его на диск и тем более не закачивать весь в память. Есть у кого-нибудь идеи? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 02:04 |
|
Задача с собеседования
|
|||
---|---|---|---|
#18+
Ога, файлы мы закачиваем (кешируем), а на список файлов места нет Не делается разница между "список не получен" и "имя не найдено в списке" Если по каким-нибудь причинам список файлов не отдастся (сервер недоступен, файл удален), кешированный файл будет удален, что, очевидно, не то, что задумывалось. Т.е. можно как-то так: curl --head --fail --silent http://host/files && (curl http://host/files | grep -q my-file || rm my-file) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 04:30 |
|
Задача с собеседования
|
|||
---|---|---|---|
#18+
И на каждый файл в кэше получать полный список файлов с сервера. Это как-то нехорошо. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 10:55 |
|
Задача с собеседования
|
|||
---|---|---|---|
#18+
на уровне командной строки не скажу, как решить. А для себя я в подобном случае скомпилил бы небольшую программку, которая сможет решать эту задачу с минимальными затратами ресурсов. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 12:15 |
|
Задача с собеседования
|
|||
---|---|---|---|
#18+
Идущий лесомна уровне командной строки не скажу, как решить. А для себя я в подобном случае скомпилил бы небольшую программку, которая сможет решать эту задачу с минимальными затратами ресурсов. А как бы она решала эту задачу? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 15:31 |
|
Задача с собеседования
|
|||
---|---|---|---|
#18+
mlelechkaА как бы она решала эту задачу? 1) Получить список файлов с сервера; 2) Получить список файлов на локальном диске; 3) Сравнить их и получить разницу; 4) Принять меры. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 15:46 |
|
Задача с собеседования
|
|||
---|---|---|---|
#18+
Можно еще поставить rsync или подобную утилиту с соответствующими настройками и запускать ее ручками когда надо... ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 16:43 |
|
Задача с собеседования
|
|||
---|---|---|---|
#18+
Это похоже упражнение на Bloom фильтры ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 16:47 |
|
Задача с собеседования
|
|||
---|---|---|---|
#18+
mlelechkaСписок файлов очень большой и желательно не сохранять его на диск и тем более не закачивать весь в память. Есть у кого-нибудь идеи? Код: powershell 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 17:12 |
|
Задача с собеседования
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovmlelechkaА как бы она решала эту задачу? 1) Получить список файлов с сервера; 2) Получить список файлов на локальном диске; 3) Сравнить их и получить разницу; 4) Принять меры. Да, сравнивать и получать разницу круто, но по условию "список файлов очень большой и желательно не сохранять его на диск и тем более не закачивать весь в память". ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 21:03 |
|
Задача с собеседования
|
|||
---|---|---|---|
#18+
volodin661mlelechkaСписок файлов очень большой и желательно не сохранять его на диск и тем более не закачивать весь в память. Есть у кого-нибудь идеи? Код: powershell 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
Не уверена, что это можно применить, придется каждый кусок сравнивать со списком того что на сервере и запоминать, что нашлось, а что нет... ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 21:05 |
|
Задача с собеседования
|
|||
---|---|---|---|
#18+
Sergey OrlovМожно еще поставить rsync или подобную утилиту с соответствующими настройками и запускать ее ручками когда надо... Да вот я как раз и не нагуглила ничего подходящего(( rsync был первой идеей ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 21:10 |
|
Задача с собеседования
|
|||
---|---|---|---|
#18+
mlelechkaсравнивать и получать разницу круто, но по условию "список файлов очень большой и желательно не сохранять его на диск и тем более не закачивать весь в память". Если оба списка отсортированы, то этого и не требуется. Достаточно одновременно получать по одному элементу из каждого списка. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 21:19 |
|
Задача с собеседования
|
|||
---|---|---|---|
#18+
mlelechkaпридется каждый кусок сравнивать тебе не придётся ничего сравнивать, сравнивать будет код на bash, который тебе предлагают написать при собеседовании, но ты можешь с достоинством отказаться и от возни на bash, и от собеседования. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 22:02 |
|
Задача с собеседования
|
|||
---|---|---|---|
#18+
Если предположить что получение списка требует больше ресурсов, чем собственно проверка - то дешевле попытаться обратиться к самому файлу и если файл не найден - удалить Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 22:04 |
|
|
start [/forum/topic.php?fid=25&fpage=21&tid=1481705]: |
0ms |
get settings: |
12ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
56ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
61ms |
get tp. blocked users: |
2ms |
others: | 272ms |
total: | 444ms |
0 / 0 |