shadcn.io— binlerce hazır shadcn/ui bloğu
İçeriğe geç

Tarayıcıda görsel dönüştürme gerçekte nasıl işler (ve neden böyle kurdum)

Bu sitenin var olmasının sebebi, yıllar önce yaşadığım küçük, aptal bir tedirginlik anı. Tek bir HEIC fotoğrafı JPG'ye çevirmem gerekiyordu, arama çubuğuna akla gelen ilk şeyi yazdım ve fotoğrafımı sunucularına yüklememi isteyen bir dönüştürücüye düştüm. Yükledim de. Çalıştı. Sonra orada oturup düşündüm: o fotoğraf artık hiçbir şey bilmediğim bir makinede, hiç tanışmayacağım insanlarca işletiliyor, bana asla söylenmeyen bir süre boyunca saklanıyor. Rastgele bir ekran görüntüsü için, tamam. Ama o bir ekran görüntüsü değildi. Kişisel bir fotoğraftı ve otuz saniye kazanmak için onu yeni yabancılara vermiştim.

Artık yaşamamaya karar verdiğim sorun buydu. Cevabın, yüklemenin en baştan hiç gerekli olmadığı olduğu ortaya çıktı.

Eski yol: bir yabancının bilgisayarını kiralamak

Geleneksel bir çevrimiçi dönüştürücü, posta siparişi hizmeti gibi çalışır. Dosyanızı bir sunucuya yollarsınız. Sunucu, dönüşümü kendi makinesine kurulu yazılımla çalıştırır. Sonucu geri gönderir. Görseliniz, kontrol etmediğiniz donanımlar arasında gidip gelmiştir ve bir yerde, tam hâliyle, size ait olmayan bir diskte durmuştur.

Bu modele cıvatalanan her gizlilik sözü, davranışa dair bir sözdür — dosya bir saat sonra silinir, kimse bakmaz. Belki tutar. Belki tutar. Bunu doğrulamanın hiçbir yolu yok ve dosyanızın gerçek baytlarını buna emanet ediyorsunuz. Güven bütün mimarinin ta kendisidir ve güven, harcamak istemediğim şeyin tam olarak kendisiydi.

Yeni yol: tarayıcınızda bilgisayar zaten var

İşte değişen şey. Modern tarayıcılar, WebAssembly denen bir şey aracılığıyla — kısaca WASM — gerçek, derlenmiş programları neredeyse yerel hızda çalıştırabiliyor. Eskiden bir sunucuda yaşayan görsel codec'leri — bir PNG okuyan, bir WebP kodlayan, HEIC çözen kod — WASM'a derlenip zaten açık olan tarayıcı sekmenizin içinde çalıştırılabiliyor.

Yani bu şekilde kurulmuş bir sayfaya bir dosya bıraktığınızda, dönüştürme yazılımı, web sayfasının başka herhangi bir parçası gibi, bir kez makinenize iner. O andan itibaren asıl iş — görselinizi okumak, dönüştürmek, yeni dosyayı yazmak — kendi işlemcinizde, kendi belleğinizde olur. Sonuç, bir indirme olarak doğrudan size verilir. Dosyanız hiçbir yere gönderilmez, çünkü gönderilecek bir yer yoktur. Döngüde hiç sunucu yoktur.

Dosyalarınız cihazınızdan hiç çıkmaz dememi ve bunu bir politika değil bir olgu olarak söylememi sağlayan şey budur. Bakmayacağıma söz vermem değil. Görselinizin bana ulaşabileceği bir yol olmamasıdır. Bir mahkeme emretse bile fotoğrafınızı getiremezdim, çünkü o hiçbir zaman telin benim tarafımda olmadı. Gizlilik, üstüne eklediğim bir özellik değil. Kodun nerede çalıştığının bir sonucu.

Doğru olduğunu nasıl anlarsınız

Sözüme güvenmek zorunda değilsiniz ve en sevdiğim kısım bu. Tarayıcınızın geliştirici araçlarını açın, ağ sekmesini izleyin ve bir dosya çevirin. Sayfanın ve WASM codec'inin bir kez indiğini göreceksiniz. Görselinizin yukarı gittiğini görmeyeceksiniz. Daha da iyisi: sayfayı yükleyin, Wi-Fi'nizi kapatın ve yine de bir şey çevirin. Yine çalışır, çünkü ihtiyacı olan her şey zaten makinenizde. Dosyalarınızı yükleyen bir araç bunu yapamaz. Bu yapabilir.

Tek gerçek sınır

Dürüstlük sözü vermiştim, işte buyurun. Dönüşümü kendi cihazınızda çalıştırmak, onun kendi belleğinizi kullandığı anlamına gelir ve bir tarayıcı sekmesi oynamak için sonsuz bellek almaz.

Normal dosyalar için — fotoğraflar, ekran görüntüleri, logolar, insanların bütün gün çevirdiği şeyler — bu bir sorun değil. Ama ona gerçekten devasa bir şey atarsanız, aşırı çözünürlükte tek bir görsel ya da hepsi birden kocaman bir toplu iş, tavana çarpabilirsiniz. Bir görseli çözmek, onun sıkıştırılmamış piksellerini bellekte tutmak demektir, ki bu diskteki dosyadan çok daha büyüktür ve dev bir görsel, sekmeye izin verileni tüketebilir. Bu olduğunda dönüşüm sürünmeye başlar ya da sekme pes eder.

64 GB RAM'li bir sunucunun böyle bir sorunu hiç olmaz. İşte takas, düpedüz söylenmiş: sunucu tarafı bir dönüştürücü, cihazınızın asla kaldıramayacağı kadar büyük dosyaları çiğneyebilir. Bu yaklaşım kaldıramaz. Karşılığında size verdiği şey, dosyanızın elinizden hiç çıkmamasıdır. İnsanların gerçekte çevirdiği şeyin ezici çoğunluğu için bu, ikinci kez düşünmeden yapmaya değer bir takastır. Nadir bir canavar dosya için gerçek bir sınırdır ve yok saymaktansa size söylemeyi yeğlerim.

Yine de neden doğru varsayılan olduğunu düşünüyorum

Çoğu dönüşüm, en baştan bir sunucuya dokunması hiç gerekmemiş sıradan dosyalardır. Yükleme, tarayıcıların bu işi kendilerinin yapamadığı bir dönemden kalma bir artıktı hep. Artık yapabiliyorlar. Yani makul varsayılan tersine döndü: dosyayı makinenizde tutun, işi yerel yapın ve yalnızca kendi donanımınız gerçekten baş edemediği nadir durumda bir sunucuya uzanın.

Buradaki her şeyin arkasındaki bütün fikir bu. O tek tedirgin öğleden sonranın ardından kendim için kurduğum sitenin aynısı, ki bir dosya uzantısını değiştirmek için bir daha asla kişisel bir fotoğrafı bir yabancıya vermek zorunda kalmayayım. Meğer hiç zorunda değilmişim. Siz de değilsiniz.

İlgili yazılar


Tüm yazılar