§

Options

Tampilan
Granularitas
Preprocessing
§

Input

Tim rekayasa di Indonesia sering membandingkan teks di berbagai lapisan pekerjaan: tinjauan pull request di GitHub dan GitLab, pelacakan perubahan kontrak pengadaan pemerintah, alur peer review di Google Docs untuk tim konten. Pengembang yang bekerja di lingkungan yang mematuhi BSSN atau PDP 2022 sering perlu membandingkan file konfigurasi dan daftar kontrol akses sebelum melakukan perubahan pada lingkungan sensitif, dan menempelkan cuplikan tersebut ke layanan perbandingan SaaS publik biasanya merupakan pelanggaran kebijakan. Menjalankan perbandingan di tab browser — tanpa unggahan, tanpa akun, tanpa log pihak ketiga — membuat alur kerja tetap cepat bagi pengembang dan dapat diterima oleh tim yang menulis kebijakan penanganan data.

Cara kerja algoritma diff

Setiap tampilan diff di halaman ini dihasilkan oleh algoritma Myers — teknik tahun 1986 oleh Eugene W. Myers yang menemukan skrip pengeditan terpendek antara dua urutan token dalam waktu O((N+M)D), di mana D adalah jarak edit. Algoritma ini dibangun di sekitar masalah Longest Common Subsequence, dan mesinnya berjalan sepenuhnya di browser Anda menggunakan pustaka jsdiff open-source.

  1. Tokenisasi masukan — Sebelum membandingkan, algoritma membagi setiap masukan menjadi urutan token. Granularitas baris dibagi berdasarkan baris baru; granularitas kata dibagi berdasarkan batas spasi dan tanda baca; granularitas karakter memperlakukan setiap titik kode Unicode sebagai tokennya sendiri.
  2. Bangun grafik edit — Algoritma Myers memodelkan perbandingan sebagai jalur melalui kisi 2D di mana bergerak ke kanan berarti "hapus dari asli", bergerak ke bawah berarti "sisipkan dari yang diubah", dan bergerak diagonal berarti "token cocok di keduanya". Algoritma menemukan jalur diagonal terpendek.
  3. Ekstrak LCS — Gerakan diagonal dalam jalur terpendek menelusuri Longest Common Subsequence — token yang muncul di kedua masukan dalam urutan relatif yang sama. Setiap token dalam LCS adalah "tidak berubah"; semua yang lain adalah penambahan atau penghapusan.
  4. Terapkan opsi pra-pemrosesan — Jika Anda mengaktifkan "Abaikan huruf besar-kecil", kedua masukan menjadi huruf kecil sebelum pass LCS sehingga "HALO" dan "halo" dihitung sebagai identik. "Abaikan spasi" menggabungkan beberapa spasi menjadi satu. "Potong setiap baris" menghapus spasi awal dan akhir per baris sebelum perbandingan.
  5. Render tampilan yang dipilih — Keluarannya adalah hasil LCS yang sama ditampilkan dalam tiga cara: Berdampingan menampilkan yang asli di sebelah kiri dan yang diubah di sebelah kanan dalam kisi dua kolom dengan sorotan baris merah dan hijau. Terpadu menampilkan satu kolom dengan baris awalan − dan +, seperti keluaran git diff. Inline menampilkan penghapusan sebagai coret merah dan penambahan sebagai garis bawah hijau dalam aliran teks yang sama.
  6. Hitung strip ringkasan — Setelah dirender, alat menghitung berapa banyak token yang ditambahkan, dihapus, dan tidak berubah, kemudian menghitung kemiripan sebagai rasio token yang tidak berubah terhadap yang lebih besar dari dua panjang masukan. Kemiripan 100% berarti masukan identik setelah pra-pemrosesan.

Mengapa menggunakan pemeriksa diff

  • Code review tanpa klien Git — Tempel dua versi file konfigurasi, migrasi SQL, atau skrip shell dan lihat apa yang berubah tanpa harus meng-clone repositori, beralih cabang, atau menunggu pipeline CI. Alat ini berguna untuk tinjauan cepat selama pemrograman berpasangan, untuk penyerahan kontraktor di mana pihak lain tidak berbagi riwayat Git mereka, dan untuk basis kode lama yang ada sebelum kontrol versi.
  • Redline kontrak dan dokumen — Diff tingkat kata menampilkan istilah mana yang berubah antara draf kontrak lebih cepat dari panel Track Changes Word. Tempel klausul A dari draf pertama dan klausul B dari salinan yang telah ditandatangani dan substitusi menyala merah-di-hijau pada frasa yang tepat yang berubah. Tim hukum dan pengadaan menggunakan ini untuk memverifikasi redline menit-menit terakhir tidak lolos dari tinjauan sebelum kontrak ditandatangani.
  • Revisi esai dan draf — Penulis yang membandingkan draf pertama dengan versi yang telah diedit dapat beralih ke granularitas kata untuk melihat setiap substitusi, penyisipan, dan potongan tanpa membaca ulang kedua salinan. Alur kerja yang sama berfungsi untuk penerjemah yang mengaudit perubahan terhadap teks sumber, untuk editor yang memeriksa apakah suntingan copy mempertahankan suara penulis, dan untuk tim jurnalisme yang merekonsiliasi artikel yang diterbitkan dengan draf yang diajukan.
  • Perbandingan log dan konfigurasi — Sysadmin yang membandingkan dua snapshot konfigurasi server, dua jadwal cron, atau dua keluaran ps aux dapat menggunakan granularitas baris untuk menemukan parameter tunggal yang berubah dalam file 200 baris dalam hitungan detik. Pasangkan dengan opsi Abaikan-spasi dan diff khusus penyelarasan yang berisik menyusut menjadi perubahan parameter yang benar-benar penting.

Aplikasi umum

Diff teks muncul di akhir setiap siklus pengeditan dalam pekerjaan penulisan, pengembangan, dan operasi.

  • Tinjauan pull request: tempel dua implementasi fungsi berdampingan untuk memahami perubahan logika sebelum menyetujui, tanpa overhead meng-checkout cabang.
  • QA internasionalisasi: bandingkan string sumber bahasa Inggris dengan padanannya yang diterjemahkan pada tingkat kata untuk mendeteksi penyisipan, penghilangan, atau pertukaran terminologi yang mungkin diperkenalkan penerjemah.
  • Analisis insiden: diff dua snapshot manifest Kubernetes atau dua keluaran "docker inspect" pada tingkat baris untuk mengisolasi perubahan konfigurasi yang mendahului pemadaman.

Contoh nyata

Ambil konfigurasi server lima baris. Asli: host=localhost, port=5432, dbname=app_db, user=app, password=secret. Diubah: host=db.prod.example.com, port=5432, dbname=app_db, user=app_prod, password=secret. Dengan granularitas baris dan tampilan Berdampingan, baris 1 menampilkan merah di kiri (host=localhost) dan hijau di kanan (host=db.prod.example.com), baris 4 menampilkan merah (user=app) dan hijau (user=app_prod), dan baris 2, 3, dan 5 tetap tidak berubah di kedua sisi. Strip ringkasan melaporkan 2 penambahan, 2 penghapusan, 3 tidak berubah, dan kemiripan 60%. Beralih ke granularitas kata dan diff semakin ketat: hanya nilai di sebelah kanan = pada baris 1 dan 4 yang menyala, kunci tetap tidak berubah, dan kemiripan naik menjadi sekitar 85%.

Apakah ini berjalan di browser saya?

Ya. Seluruh komputasi diff berjalan di sisi klien menggunakan pustaka open-source jsdiff yang dimuat bersama halaman. Tidak ada yang Anda ketik, tempel, atau bandingkan yang dikirim ke server mana pun. Anda dapat memverifikasinya sendiri: buka DevTools browser, beralih ke tab Jaringan, hapus log, klik Bandingkan, dan konfirmasi bahwa nol permintaan jaringan dieksekusi untuk langkah perbandingan.

Apa arti persentase kemiripan?

Kemiripan dihitung sebagai token yang tidak berubah / maks(total token di asli, total token di yang diubah). Skor 100% berarti kedua masukan identik setelah menerapkan opsi pra-pemrosesan Anda (pelipatan huruf, penggabungan spasi, pemotongan baris). Skor 0% berarti tidak ada token yang dibagikan antara masukan. Metrik ini adalah perkiraan kasar jarak edit — berguna sebagai tolok ukur cepat — bukan skor plagiarisme atau orisinalitas.

Bisakah saya membandingkan JSON / YAML / XML secara semantik?

Tidak dalam alat ini. Ini adalah diff tingkat teks, sehingga pemformatan ulang JSON atau XML yang hanya mengubah spasi masih menampilkan banyak perubahan meskipun datanya secara logis identik. Pengurutan ulang kunci objek di JSON juga ditampilkan sebagai perubahan meskipun sebagian besar parser memperlakukan urutan kunci sebagai tidak signifikan. Untuk diff semantik sejati yang membandingkan pohon objek yang diurai dan mengabaikan urutan kunci dan pemformatan, kami merencanakan alat JSON Diff khusus. Untuk saat ini, normalkan kedua masukan ke indentasi dan urutan kunci yang sama sebelum menempelkannya di sini.

Bagaimana tampilan terpadu vs berdampingan berbeda?

Berdampingan merender dua kolom: yang asli di sebelah kiri dan yang diubah di sebelah kanan, dengan baris yang dihapus disorot merah di sebelah kiri dan baris yang ditambahkan disorot hijau di sebelah kanan. Baris yang tidak berubah muncul di kedua kolom yang sejajar pada baris yang sama. Terpadu merender satu kolom dengan awalan dan latar belakang merah untuk baris yang dihapus dan awalan + serta latar belakang hijau untuk baris yang ditambahkan — tata letak yang sama seperti yang dicetak git diff ke terminal Anda. Gunakan terpadu ketika Anda ingin menyalin hasilnya sebagai file patch atau menempelkannya ke thread code review. Gunakan berdampingan ketika penyelarasan visual apa yang menggantikan apa lebih penting daripada teks patch mentah.

Tempel yang asli di sebelah kiri, yang diubah di sebelah kanan, pilih tampilan dan granularitas, dan perbandingan muncul dalam milidetik. Aktifkan Mode langsung dan diff dijalankan ulang pada setiap penekanan tombol saat Anda mengedit salah satu sisi. Unduh hasilnya sebagai file .patch terpadu standar yang langsung dikonsumsi oleh git apply. Tanpa unggahan, tanpa akun, tanpa kunci API vendor, tanpa kuota.