텍스트 Diff 비교기
두 텍스트를 라인별로 비교하여 차이점을 하이라이트합니다.
텍스트 Diff 비교기는 두 텍스트를 라인 단위로 비교하여 추가/삭제/변경된 부분을 시각적으로 하이라이트합니다. LCS(Longest Common Subsequence) 알고리즘을 사용하여 정확한 차이를 감지합니다. 코드 리뷰, 문서 수정 확인, 번역본 비교 등에서 두 텍스트의 차이점을 빠르게 파악할 수 있습니다.
원본 텍스트 (A)
4줄비교 텍스트 (B)
4줄Diff 결과
principle
계산 원리
텍스트 Diff의 핵심은 LCS(Longest Common Subsequence, 최장 공통 부분수열) 알고리즘입니다. 두 수열 X(길이 m)와 Y(길이 n)가 주어졌을 때, 양쪽에 공통으로 포함되면서 순서가 유지되는 가장 긴 부분수열을 찾습니다. 이 문제는 동적 프로그래밍(DP)으로 O(mn) 시간과 공간에 해결됩니다.
DP 테이블 L[i][j]는 X의 처음 i개 원소와 Y의 처음 j개 원소의 LCS 길이를 저장합니다. X[i]=Y[j]이면 L[i][j] = L[i-1][j-1] + 1, 다르면 L[i][j] = max(L[i-1][j], L[i][j-1])입니다. 테이블을 역추적하여 실제 LCS를 복원하고, LCS에 포함되지 않는 원소를 추가(+) 또는 삭제(-)로 분류합니다.
Myers의 diff 알고리즘(1986)은 편집 거리(edit distance)를 최소화하는 최단 편집 스크립트를 O(ND) 시간에 찾습니다. N은 두 텍스트의 총 길이, D는 차이(편집 거리)입니다. 대부분의 실제 텍스트는 차이가 적으므로(D << N), 이 알고리즘은 실무에서 매우 빠르게 동작합니다. Git의 diff도 이 알고리즘을 기반으로 합니다.
faq
자주 묻는 질문
cases
실생활 예시
코드 변경사항 확인
기존 코드와 수정된 코드를 비교하여 어떤 줄이 추가/삭제되었는지 확인합니다.
Diff 비교기로 변경사항을 시각적으로 파악하여 코드 리뷰 효율을 높일 수 있습니다.
문서 버전 비교
계약서나 정책 문서의 이전 버전과 최신 버전을 비교하여 수정된 조항을 빠르게 파악합니다. 수백 줄의 문서에서 변경된 부분만 하이라이트로 확인합니다.
문서 전체를 다시 읽지 않아도 변경된 부분만 집중적으로 검토할 수 있습니다.
번역 텍스트 비교
같은 원문의 두 가지 번역본을 비교하여 표현 차이를 분석합니다. 어떤 문장이 다르게 번역되었는지 줄 단위로 확인합니다.
번역 품질 검수 시 두 번역본의 차이점을 빠르게 파악하여 최적의 번역을 선택할 수 있습니다.
설정 파일 변경 추적
서버 설정 파일(nginx.conf, .env 등)의 변경 전후를 비교하여 어떤 설정값이 추가/변경/삭제되었는지 확인합니다.
설정 변경으로 인한 장애 원인을 빠르게 파악하고 복구할 수 있습니다.
SQL 쿼리 변경 확인
최적화 전후의 SQL 쿼리를 비교하여 JOIN 조건, WHERE 절, 인덱스 힌트 등의 변경사항을 확인합니다.
쿼리 최적화 과정에서 변경 사항을 명확히 추적하여 성능 개선 효과를 분석할 수 있습니다.
glossary
용어 사전
- Diff
- 두 텍스트의 차이점을 감지하고 표시하는 것으로, 추가/삭제/변경된 부분을 시각적으로 구분합니다.
- LCS (Longest Common Subsequence)
- 두 수열에서 공통으로 포함되고 순서가 유지되는 가장 긴 부분수열로, diff 알고리즘의 핵심 개념입니다.
- 편집 거리 (Edit Distance)
- 한 텍스트를 다른 텍스트로 변환하기 위해 필요한 최소 연산(삽입, 삭제, 치환) 횟수입니다.
- 동적 프로그래밍 (Dynamic Programming)
- 큰 문제를 작은 하위 문제로 나누어 결과를 저장하면서 풀어나가는 알고리즘 설계 기법입니다.
- Unified Diff
- 변경 전후의 컨텍스트를 함께 보여주는 diff 출력 형식으로, +/- 기호로 추가/삭제 줄을 표시합니다.
- 컨텍스트 라인 (Context Line)
- diff 출력에서 변경되지 않은 줄로, 변경 위치의 주변 맥락을 보여줘 변경 사항을 쉽게 이해하도록 돕습니다.
- 패치 (Patch)
- diff 결과를 파일에 적용하여 원본을 수정본으로 변환하는 것으로, 코드 배포와 협업에서 사용됩니다.
next tools