powered by simpleCommunicator - 2.0.38     © 2025 Programmizd 02
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / Задача с собеседования
15 сообщений из 15, страница 1 из 1
Задача с собеседования
    #39279365
mlelechka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Второй день гуглю, ничего не нагуглю:

На сервере хранится очень большое количество файлов. Список файлов (разделенных символом перевода строки) можно получить по следующему URL: http://host/files. Некоторые из них мы периодически кешируем к себе на диск, но время от времени возникает необходимость удалить закешированный файл, если его больше нет на сервере. Сейчас это делается командой

curl http://host/files | grep -q my-file || rm my-file
Все ли хорошо в этой команде? Если нет, то что не так, и как это исправить? Список файлов очень большой и желательно не сохранять его на диск и тем более не закачивать весь в память.

Есть у кого-нибудь идеи?
...
Рейтинг: 0 / 0
Задача с собеседования
    #39279371
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ога, файлы мы закачиваем (кешируем), а на список файлов места нет

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

Т.е. можно как-то так:
curl --head --fail --silent http://host/files && (curl http://host/files | grep -q my-file || rm my-file)
...
Рейтинг: 0 / 0
Задача с собеседования
    #39279448
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И на каждый файл в кэше получать полный список файлов с сервера. Это как-то нехорошо.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Задача с собеседования
    #39279535
на уровне командной строки не скажу, как решить. А для себя я в подобном случае скомпилил бы небольшую программку, которая сможет решать эту задачу с минимальными затратами ресурсов.
...
Рейтинг: 0 / 0
Задача с собеседования
    #39279770
mlelechka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Идущий лесомна уровне командной строки не скажу, как решить. А для себя я в подобном случае скомпилил бы небольшую программку, которая сможет решать эту задачу с минимальными затратами ресурсов.

А как бы она решала эту задачу?
...
Рейтинг: 0 / 0
Задача с собеседования
    #39279776
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mlelechkaА как бы она решала эту задачу?
1) Получить список файлов с сервера;
2) Получить список файлов на локальном диске;
3) Сравнить их и получить разницу;
4) Принять меры.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Задача с собеседования
    #39279812
Sergey Orlov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно еще поставить rsync или подобную утилиту с соответствующими настройками и запускать ее ручками когда надо...
...
Рейтинг: 0 / 0
Задача с собеседования
    #39279816
Гость 321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это похоже упражнение на Bloom фильтры
...
Рейтинг: 0 / 0
Задача с собеседования
    #39279828
Фотография volodin661
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mlelechkaСписок файлов очень большой и желательно не сохранять его на диск и тем более не закачивать весь в память.
Есть у кого-нибудь идеи?

Код: powershell
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
RANGES
 
  HTTP 1.1 introduced byte-ranges. Using this, a client can request
  to get only one or more subparts of a specified document. Curl supports
  this with the -r flag.
 
  Get the first 100 bytes of a document:
 
        curl -r 0-99 http://www.get.this/
 
  Get the last 500 bytes of a document:
 
        curl -r -500 http://www.get.this/
 
...
Рейтинг: 0 / 0
Задача с собеседования
    #39279933
mlelechka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovmlelechkaА как бы она решала эту задачу?
1) Получить список файлов с сервера;
2) Получить список файлов на локальном диске;
3) Сравнить их и получить разницу;
4) Принять меры.


Да, сравнивать и получать разницу круто, но по условию "список файлов очень большой и желательно не сохранять его на диск и тем более не закачивать весь в память".
...
Рейтинг: 0 / 0
Задача с собеседования
    #39279935
mlelechka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
volodin661mlelechkaСписок файлов очень большой и желательно не сохранять его на диск и тем более не закачивать весь в память.
Есть у кого-нибудь идеи?

Код: powershell
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
RANGES
 
  HTTP 1.1 introduced byte-ranges. Using this, a client can request
  to get only one or more subparts of a specified document. Curl supports
  this with the -r flag.
 
  Get the first 100 bytes of a document:
 
        curl -r 0-99 http://www.get.this/
 
  Get the last 500 bytes of a document:
 
        curl -r -500 http://www.get.this/
 




Не уверена, что это можно применить, придется каждый кусок сравнивать со списком того что на сервере и запоминать, что нашлось, а что нет...
...
Рейтинг: 0 / 0
Задача с собеседования
    #39279937
mlelechka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergey OrlovМожно еще поставить rsync или подобную утилиту с соответствующими настройками и запускать ее ручками когда надо...

Да вот я как раз и не нагуглила ничего подходящего(( rsync был первой идеей
...
Рейтинг: 0 / 0
Задача с собеседования
    #39279942
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mlelechkaсравнивать и получать разницу круто, но по условию "список файлов очень большой и
желательно не сохранять его на диск и тем более не закачивать весь в память".

Если оба списка отсортированы, то этого и не требуется. Достаточно одновременно получать
по одному элементу из каждого списка.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Задача с собеседования
    #39279961
Фотография volodin661
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mlelechkaпридется каждый кусок сравнивать

тебе не придётся ничего сравнивать,
сравнивать будет код на bash, который тебе предлагают написать при собеседовании,
но ты можешь с достоинством отказаться и от возни на bash, и от собеседования.
...
Рейтинг: 0 / 0
Задача с собеседования
    #39279962
MazoHist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если предположить что получение списка требует больше ресурсов, чем собственно проверка - то дешевле попытаться обратиться к самому файлу и если файл не найден - удалить
Код: sql
1.
for i in `ls -1`; do  curl -I -s -L -w "%{http_code}" http://host/$i -o dev/null|grep -qv 200 && rm $i; done
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / Задача с собеседования
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]