Mikhail
а не конкретное слово выделяет
Гугли “Longest common substring problem”.
Andrii
А диэтиламид d-лизергиновой кислоты?
Timofey
Я разбирался, но не стал углубляться
Bogdan
почему у diff checker-а нет исходников
Andrii
Зачем, если тебе это неинтересно? Опять же, сложно назвать «пытаешься изучать си», скорее пытаешься сдать зачёт и забыть ;)
Andrii
Отлаживать, либо в тетради (привет молодость), либо в отладчике, либо с логами. Можешь показать свой код
Bogdan
почему у diff checker-а нет исходников
@timofeyOpal мне типо вот такую же штуку надо сделать как на этом сайте
Bogdan
а есть идеи как можно подобное написать?
Mikhail
а есть идеи как можно подобное написать?
Я же тебе выше уже написал, гугли longest common substring.
Bogdan
Я же тебе выше уже написал, гугли longest common substring.
но я не понял зачем алгоритм поиска наибольшей подстроки
Andrii
и нафиг я в дотнет тогда поперся если на руби досих пор такие высокие зп
Просто .NET более популярен, больше разрабов. Ruby... Ну... попробуй найти, особенно на легаси какое-нить :)
Mikhail
но я не понял зачем алгоритм поиска наибольшей подстроки
Потому что все, что не есть общая подстркока - и есть дифф.
Timofey
А библиотеку заюзать не вар
Timofey
Так понимаю
Bogdan
А библиотеку заюзать не вар
нет надо самому написать алгоритм
Bogdan
Потому что все, что не есть общая подстркока - и есть дифф.
а я понял надо сначало найти что изменилось в структуре, а потом найти подстроку которая изменилась ?
Mikhail
@timofeyOpal мне типо вот такую же штуку надо сделать как на этом сайте
На диффчекере еще проще валидация сделана - они разбивают на токены по пробелу и ищут соответствующие токены.
Andrii
Я написал свою систему контроля версий
Первую версию git выкатили за 10 дней MVP :)
В
привет всем) чекая чат, заметил, что самые одни из популярных ютуб каналов по программированию для начинающих, большинству не заходят и Вы говорите, что они бредовые, а есть реально ютуб каналы/книги/сайты которые лично Вам помогли и помогают сейчас в этой сфере?
Andrii
почему у diff checker-а нет исходников
У diff есть исходники и доки, чем тебя не устраивает?
Bogdan
У diff есть исходники и доки, чем тебя не устраивает?
я не нашел ничего толкового по шарпу
Bogdan
ну разве что у гугла видел но там очень замудренный алгоритм
Andrii
А зачем C#, если `diff `написан на православных сях?
Andrii
Не говоря о том, что можно скомпилировать и запускать как внешнюю программу
Bogdan
ну у меня прога то на шарпе я ж не буду инджектить
Mikhail
я не нашел ничего толкового по шарпу
https://neil.fraser.name/software/diff_match_patch/demos/diff.html не устраивает?
Timofey
У Гугла
Andrii
Можно пошаманить и скомпилировать в DLL
Mikhail
ну разве что у гугла видел но там очень замудренный алгоритм
А какая тебе разница, какой там алгоритм, если тебе нужно использовать библиотеку как black box?
Bogdan
у них там этот диф на 2к строк
Mikhail
у них там этот диф на 2к строк
На мой взгляд, ты сам себе проблемы придумываешь.
Andrii
у них там этот диф на 2к строк
Ну... а что ты хочешь? Там скорее всего будет динамическое программирование под капотом. Задача примерно в оптимизации количества изменённых строк в результате. НУ а так нашёл реализацию, что нормально работает. Используешь Меня вот стандартный diff вполне устраивает, я не понимаю зачем надо писать свой велосипед
Bogdan
а я понял у них сборная солянка у них не только там диф но и матч
Bogdan
а дифф полюбому что бы сделать это же надо весь файл считывать в память
Bogdan
я просто думал сделать так что бы можно было не загружать весь файл в память а считывать потоково
Bogdan
Пайпы потоково работают :) diff -u <(lspci) <(lsusb)
но в пайпах же передаются только изменения
Alex
Знакомый ещё один вкатился, сразу на 80
Ну это не 100, но тоже сойдёт для начала
Andrii
но в пайпах же передаются только изменения
В первом пайпе первый файл, во втором файле второй файл, в третьем файле результат сравнения
Bogdan
для чего
Bogdan
и почему именно пайпы
Andrii
Как вариант использовать `diff `как внешнее приложение. А пайпы чтобы не сохдавать файлы
Bogdan
так там и не надо создавать
m700
+
вот дом2 популярный так и с ними такая же штука...смотрях их тонну но чтото кодеров как было мало так и осталось
Bogdan
оно готовый файл уже считывает просто я думал есть способ сделать так что бы можно было не забивать память лишними стрингами
Bogdan
просто я представил как будет дифф такой работать при 1 гб файле
Bogdan
дифф ещё и сожрет гига 3 оперативки ибо ему надо в памти файл сравнить с файлом считанным в память и ещё отдельно хранить изменения
m700
а ну экстрим код обязательно сейчас там в целом б айти
EXTRA
а ну экстрим код обязательно сейчас там в целом б айти
До сих пор ору с курса "C# для маленьких и тупых"
Andrii
m700
До сих пор ору с курса "C# для маленьких и тупых"
у меня коллега по нему готовился на собес))))
Bogdan
Стандартный diff будет работать нормально
так он же строки сравнивает
Andrii
так он же строки сравнивает
И что? Прочитал кусок первого файла/пайпа, прочитал кусок второго файла/пайпа, выплюнул результат
m700
а так имхо стоит потрахаться пару месяцев с литкодом/кодеваром читая общую книгу по пайтону... будет норм база заложена
Bogdan
И что? Прочитал кусок первого файла/пайпа, прочитал кусок второго файла/пайпа, выплюнул результат
как вообще подобный дифф работает вот оно прочитало куски а там оп энтер добавился оно его пометило новым и оп текст обрезался а в следующем фрагменте текст не отличается и как оно тогда понимает что это просто обрезанный текст, а не измененный
Bogdan
путем обьединения?
m700
Надеюсь не укус питона?
я в пайтоне не разбираюсь, не стоит на него
Andrii
как вообще подобный дифф работает вот оно прочитало куски а там оп энтер добавился оно его пометило новым и оп текст обрезался а в следующем фрагменте текст не отличается и как оно тогда понимает что это просто обрезанный текст, а не измененный
Скорее ищет наибольшую общую последователнось. Скажем, прочитали 100 строк, наибольшую общую последоваельность, её оставили, нашли diff части до. М в нижней части дочитали ещё ввод
Bogdan
а как после обьединения оно понимает что текст на самом деле не изменился
Bogdan
я думал оно чанками читает
Andrii
Или как-то ещё... В целом разобраться можно, наверное даже интересно, но... есть вещи и поинтереснее ИМХО, чем решать задачу, которую уже испахали во всех направлениях
Andrii
ааа строк
НУ да, можно даже для строк какой-нить хеш быстрый считать, типа мур-мур три. И сравнивать дальше числа
Bogdan
а построчно читать плохая идея?
Andrii
Можно и построчно, какая разница?