Andrii
Опять же, ты хочешь переплюнуть все алгоритмы?
Andrii
экономия памяти
Ну... буфера могут быть попроизводительнее, но опять же, зачем в это внимать?
Bogdan
у меня ещё такой вопрос есть где лучше всего хранить старую версию файла ведь допустим если файл изменили то он нигде не бэкапится кроме памяти
Bogdan
можно ли как-то его сжать
Bogdan
что бы он много памяти не занимал
Bogdan
у меня дифф не 2 файлов, а файла до и файла после
Andrii
Если у тебя есть версионность, да разверни ты git, он сделает всё за тебя
Bogdan
у меня ивенты
Bogdan
вот тут и будет алгоритм дифа
Bogdan
он будет сравнивать файл к которому привязан трекинг с его старой версией
Сергей
@mustitz ты чего не спишь?
Andrii
Не знаю, я бы просто запустил diff и сохранил бы патч
Andrii
@mustitz ты чего не спишь?
Да так, смотрел гран-при, Нака удержался, Раппорт выиграл, я вот рад и счастлив
Bogdan
Не знаю, я бы просто запустил diff и сохранил бы патч
а олд версию хранить в виде обычной строки?
Andrii
а олд версию хранить в виде обычной строки?
Зачем тебе old-версия, если можно хранить patch, а ещё лучше разверни git, как только у тебя изменяется файл — коммить его!
Bogdan
Зачем тебе old-версия, если можно хранить patch, а ещё лучше разверни git, как только у тебя изменяется файл — коммить его!
да не могу я уже говорил мне надо собственный трекинг делать в этом суть задания
Bogdan
никаких гитов использовать нельзя
Andrii
да не могу я уже говорил мне надо собственный трекинг делать в этом суть задания
Ну... велосипед... Но в целом тебе полюбовно надо делать копии всех файлов в каталоге.
Bogdan
Ну... велосипед... Но в целом тебе полюбовно надо делать копии всех файлов в каталоге.
не мне все упростили, следить надо отдельно за файлами и папками
Andrii
Как насчёт скидывать старые файлы в zip?
Ну... архивация много жрёт проца. зачем zip?
Bogdan
то-есть дифф чисто за 1 файлом следит
EXTRA
Ну... архивация много жрёт проца. зачем zip?
Он хотел, чтобы места меньше кушало
Andrii
не мне все упростили, следить надо отдельно за файлами и папками
Тогда вначале надо сделать копии всех файов. Как только файл изменился, посчитали diff, сохранили его, заменили старый файл новой копией
Andrii
Он хотел, чтобы места меньше кушало
Это такое задание или самодеятельность?
Bogdan
что бы не хранить в памяти
Andrii
ну то-есть в любом случае придётся физически хранить старую версию
Ну а как ты получишь старую версию? Её надо где-то хранить. Опять же я не уверен, что задача вообще имеет приемлемое решение. Потому что если ты получил уведомление об изменении файла, то возникают проблемы. Если ті откроешь файл эксклюзивно, то если приложение захочет снова дописать что-то в файл, то оно потерпит крах. А если неэксклюзивно, то пока ты его читаешь, в него могут писать
Andrii
Меня это больше смущает.
Bogdan
то-есть как раз по сохранению файла
Andrii
Ну там есть хуки в винде. Проблема не в том, чтобы определить, что файл поменялся. В а том, что делать дальше.
Bogdan
проблема ещё в том в какой момент копировать файл
Bogdan
откуда взять историю если оно реагирует на сохранение
Andrii
https://docs.microsoft.com/en-us/windows/win32/fileio/obtaining-directory-change-notifications
Bogdan
ну filesystemwatcher это и есть обертка над винапи
Andrii
проблема ещё в том в какой момент копировать файл
А тут решения нету. Тут квантовая механика, ты не можешь быть внешним наблюдателем, и не влиять на события. Если ты не драйвер
Bogdan
и откуда тогда старую версию брать если ты не можешь её достать
Andrii
При старте можно сделать копию. Если будут права. Просто проблема в том, что делать когда ты определил, что файл изменился. Если залочить запись всем, то другие приложения могут заглючить. Если не залочить, то файл могут перезаписать в процессе чтения
Bogdan
Ну я думаю обёртка потокобезопасная
Andrii
Причём тут потокобезопаность? Файл то другие процессы меняют, которые ты не контролишь
Andrii
При старте чего
Твого демона
Bogdan
Ну смотри сервер то нонстопом работает следовательно он должен и мониторить нонстопом
Andrii
Ну смотри сервер то нонстопом работает следовательно он должен и мониторить нонстопом
Ну когда-то же он запускается? Хотя бы первый раз... Или накрылся
Andrii
Или пользователь остановил
Bogdan
Ну когда-то же он запускается? Хотя бы первый раз... Или накрылся
То-есть получается у нас копируется файл и каждое изменение после дифа мы меняем файл-копию в папке?
Andrii
Сохраняем diff и обновляем копию. И молимся, чтобы в это время не произошла нвая записись, пока мы читаем и сравниваем
Andrii
Вообще, это тебя ломом плац заставляют подметать или есть реальное применение?
Rainard
Можно на момент чтения хэш посчитать. После вычисления diff тоже
Rainard
По приколу убедиться в целостности файла
Andrii
Это тестовое задание
Ну... много вопросов к такой постановке, ИМХО... НА практике я бы смотреть на https://docs.microsoft.com/en-us/windows/win32/projfs/projected-file-system ибо там полный контроль, и никакие дифы не надо
Andrii
По приколу убедиться в целостности файла
А смысл, если мы и так знаем, что файл изменён
Rainard
А смысл, если мы и так знаем, что файл изменён
Вы не поняли к чему я, домой доползу уточню если не забуду
denz1l
ioannes
Npc
ioannes
Дефолтный тип
ioannes
О помею твою аву ты тут давно сидишь
EXTRA
Потому что чел начал изучать Java, потому что перепутал её с java script
EXTRA
Блин, как же я обожаю эффект, название которого я не знаю. У тебя человек что-то спрашивает - ты отвечаешь что-то очевидное или какой-то правдоподобный бред и спросивший уже сам додумывается до шедевра реализации
Алексей
Ребята, которую неделю пытаюсь настроить qt creator. Пишу на с++, настроил desktop, gbc, gcc, a qt не могу, хотя установка начиналась с него а не с креатора
Алексей
Да, забыл, ставлю на дебиан 11
m700
Алексей
Кто такое чудо ставил и настраивал на линукс подскажите
Andrii
https://maps.org/news-letters/v18n1/v18n1-MAPS_24.pdf
Алексей
Так а в чем проблема?
В разделе qt профили пусто и не могу найти куда послать систему, чтобы подцепить
EXTRA
Смысл вопроса?
EXTRA
Ты не уважаешь время собравшихся тут людей.
m700
даже так не проще
m700
херачиш как синьор а платят все равно по зп джуна...не просто же