1 puan yazan GN⁺ 2025-03-17 | 1 yorum | WhatsApp'ta paylaş
  • 2006 yazında kişisel çizgi roman okuyucusu Fiew'i geliştirme deneyimi çıkış noktası oldu ve C++ ile Windows API kullanarak Photoshop benzeri görüntü düzenleyici Fedit bir bitirme tezi projesi olarak hayata geçirildi
  • Fedit; kurulum programı, sıkıştırılmış arşiv, kayıt defteri anahtarı veya ek runtime olmadan tek bir çalıştırılabilir dosya olarak çalışıyordu; bu sayede kısıtlı yetkili PC'lerde veya USB sürücülerde doğrudan açılabiliyordu
  • Arayüz, klasik Photoshop iş akışını andıracak şekilde tasarlandı; yüzen araç pencereleri, renk seçici, katman yönetimi, geri alma geçmişi, görüntü filtreleri ve özelleştirilebilir piksel kaydırma filtreleri içeriyordu
  • En büyük zorluk kullanıcı arayüzünü yeniden üretmekti; araç ayar panelinin dock/undock davranışı ile renk ve araç seçicilerin uygulanması çok zaman aldı
  • Proje, tezin başarıyla tamamlanmasına ve mühendislik lisans derecesinin alınmasına yol açtı; ardından GoldenLine CTO'sunda bıraktığı etki sayesinde toplu görsel yükleme için bir WinAPI uygulaması geliştirmeye yönelik bir C++ işi fırsatına dönüştü

Çizgi roman okuyucusu Fiew'den görüntü düzenleyici Fedit'e

  • 2006'nın yaz başında çıkış noktası, mevcut görüntü okuyucu uygulamalarını beğenmemekti
    • Özellikle okumayı yalnızca fareyle kontrol edememek ve sürekli klavyeye uzanmak zorunda kalmak rahatsız ediciydi
  • Üniversitede C++/Windows API dersini yeni tamamlamıştı ve yaz tatili boyunca kişisel olarak ideal çizgi roman okuyucusunu geliştirdi
  • Bu çizgi roman okuyucusunun adı Fiew idi
  • 2006'nın sonbahar başında bitirme tezi konusu seçilmeliydi ve görüntü görüntüleyici geliştirme deneyimi sorunsuz geçtiği için bir görüntü düzenleyici de yapılabileceğine karar verildi
  • O dönemde Adobe Photoshop yoğun kullanıldığı için hedef, Photoshop'a benzer bir düzenleyici yapmak oldu

Fedit'in uygulanışı ve dağıtım kısıtları

  • Fedit, C++ ile yazılmış bir Advanced Image Editor olup Windows API ve GDI+ grafik kütüphanesini kullanıyordu
  • Kullanıcı açısından avantajlı bir dağıtım biçimi için beş kurala uyuldu
    • Kurulum programı yok
    • Sıkıştırılmış arşiv yok
    • Kayıt defteri anahtarı yok
    • Ek runtime yok
    • Tek bir çalıştırılabilir dosya
  • Sonuç olarak kurulum gerektirmeden hemen çalışıyor, kısıtlı yetkili sistemlerde veya USB sürücülerde açılabiliyor ve az kaynak kullanan bir program haline geliyordu

Photoshop'a yakın arayüz ve özellikler

  • Arayüz, klasik Photoshop gibi görünecek şekilde özenle hazırlandı ve sık kullanılan işlevleri içeriyordu
  • Başlıca özellikler şunlardı
    • Serbestçe yüzen araç pencereleri
    • Renk seçici
    • Kolay katman yönetimi
    • Adım adım geri alınabilen geçmiş
    • Çeşitli görüntü filtreleri
    • Piksel kaydırma filtrelerini doğrudan kodlamaya imkân veren bir matris arayüzü
  • Ayrıca önceki proje Fiew'den alınan büyük ölçekli bir görüntü kütüphanesi görüntüleyicisi de yer alıyordu
    • Çok sayıda fotoğraf hızlı ve kolay şekilde kaydırılabiliyordu

Doğrudan debug edilmesi gereken geliştirme süreci

  • MSDN ve Experts Exchange'den çok yararlanıldı, ancak sorunlar fazla spesifik olduğundan çoğu zaman doğrudan analiz ve debug yapmak gerekti
  • Lisans tezi teslim tarihine yetişmek için son iki ay boyunca günde 14 saat çalışıldı
  • En zorlu alan kullanıcı arayüzüydü
    • Photoshop'a olabildiğince benzer bir iş akışı isteniyordu
    • Araç ayar panelinin serbestçe dock edilip dock'tan ayrılabilen davranışı özellikle zordu
    • Renk seçici ile araç seçiciyi yeniden üretmek de kolay değildi
  • Proje biterken ciddi bir yorgunluk oluştu ve WinAPI'ye karşı bir soğukluk gelişti

Tez sonrası sonuçlar ve açık kaynaklar

  • Tez başarıyla tamamlandı ve Warsaw University of Technology'den Bachelor of Science in Engineering derecesi alındı
  • Fedit internette bazı olumlu incelemeler aldı, ancak aktif biçimde tanıtılmadı
  • Daha sonra Fiew ve Fedit, GoldenLine CTO'sunda güçlü bir izlenim bıraktı ve Flickr klonu için toplu görsel yüklemeye yönelik yüksek verimli bir WinAPI uygulaması geliştirmeye odaklı bir C++ işine kapı açtı
  • Açık kaynaklar

1 yorum

 
GN⁺ 2025-03-17
Hacker News yorumları
  • “Kullanıcıya fayda sağlayan beş kural: kurulum aracı yok, sıkıştırılmış dosya yok, kayıt defteri anahtarı yok, ek çalışma zamanı yok, tek bir çalıştırılabilir dosya” cümlesini okuyunca içim ısındı ve mutlu oldum
    Kayıt defterinin neden var olduğunu ve günümüz Windows yazılım ekosisteminin neden böyle işlediğini anlıyorum, ama eskiden masaüstü yazılımlarının çoğunun basit olduğu dönemleri gerçekten özlüyorum
    Bu günlerde mümkün oldukça taşınabilir kurulum kullanıyorum ve keşke bu yaklaşım daha yaygın olsa. Ayarları tamamen geri getirebilecek miyim bilmemenin getirdiği zaman, zahmet ve belirsizlik yüzünden Windows’u yeniden kurmaktan özellikle kaçınır oldum

    • Kurulum araçlarının yaptığı pek çok yararlı iş var ve son kullanıcıların önemli bir kısmı bunları gerçekten istiyor. Örneğin bulunabilmesi ya da aranabilmesi için Başlat menüsüne kısayol eklemek, dosya türlerini ilişkilendirmek ve Windows program listesine kaydetmek gibi
      Eskiden taşınabilir yazılımları çok severdim, ama bugünlerde ikisi de sunuluyorsa daha çok kurulum aracını tercih ediyorum. Aksi halde aranabilir olmasını istiyorsam Başlat menüsüne kendim eklemem gerekiyor
      Yine de kayıt defteri anahtarlarından nefret ediyorum. İşletim sistemini yeniden kurunca sık sık kayboluyorlar. Ayarların sadece %appdata% içinde saklanmasını isterdim
    • Bu yüzden Go’yu seviyorum. Tek bir çalıştırılabilir dosya olduğu için başkalarının aracı kullanması kolaylaşıyor
      Alternatif olarak, NSIS ile tek bir çalıştırılabilir dosya paketleyip çalıştırmadan önce her şeyi geçici bir dizine açma yöntemini de kullanıyorum
      Windows kayıt defterini tutarsız ve kötü tasarlanmış bir ıvır zıvır yığınına daha yakın görüyorum. Karşılaştırmak gerekirse Gnome’un kayıt defteri iyi tasarlanmış. Anahtar açıklamaları, sınırlı değer seçenekleri, varsayılan değerlerin gösterilmesi gibi şeyler iyi kullanıcı arayüzü tasarımıdır
      Windows Grup İlkesi ile kayıt defteri eşlemesine bakmak bile aynı mantıksal yapının ne kadar dağınık olduğunu ve anahtarlara çift olumsuzlamaların bile karıştığını gösteriyor
    • Kayıt defterinin asıl amacı, COM’un GUID’ye bakarak DLL dosyasının konumunu bulmasını sağlamaktı. Böylece COM nesne örnekleri oluşturabiliyordu
      Bugün de HKEY_CLASSES_ROOT içinde bunun izlerini görebilirsiniz
      Teknik olarak kayıt defteri olmadan da nesne oluşturmak mümkün. DLL’i yükledikten sonra dışa aktarılan fonksiyonu çağırarak bir Factory nesnesi oluşturur, ardından o Factory nesnesiyle örneği yaratırsınız. COM’un kendi yaptığı iş de bu yöntemdir
    • Böyle basit ve hafif tasarım bana da hitap etti
      Yazı da gerçekten harika bir geriye dönük değerlendirmeydi. Yalnız başlarda yazarın hafifçe ima ettiği zorlukları daha derin ele alsaydı iyi olurdu. Yine de bu küçük bir kusur arama sadece; yazı çok iyi ve yapılan iş gerçekten epey etkileyici görünüyor
    • Kütüphaneleri statik derlemeyle içine katmadan tek ikili dosyalı uygulama yapmanın en iyi yolu nedir, emin değilim. Lisanslar yüzünden genelde altından kalkması zorlaşıyor
  • Photoshop’ta gerçekten çok fazla özellik var; sadece birkaç görüntü filtresiyle buna yeniden yaratım demek zor

    • Ama kullanıcı arayüzünü doğru tutturmak çok zor ve çok önemli
      2006’daki GIMP’in de inanılmaz çok özelliği vardı, ama Photoshop’un arayüzüyle karşılaştırınca gerçekten berbattı
    • Yine de bir lisans çalışması için çok, çok etkileyici
    • Burada “yeniden yaratım” ifadesini kelimesi kelimesine almamız gerektiğini sanmıyorum
    • Evet. Photopea’nın en yakın klonlama girişimi olduğunu düşünüyorum, ama onda da birçok özellik eksik
    • “Temel bir görüntü düzenleyici yaptım” deseydi elbette bu kadar etkileyici duyulmazdı. Yazının böyle başlamasına bakınca şaşırtıcı da değil

      As I’m getting older I look back on all the things I’ve done as a creative developer, and I see so many cool projects!
      Ne kadar da mütevazı…

  • Bu harika projeye doğrudan bir bağlantı da olmalı
    https://github.com/f055/fedit-image-editor

  • “Tanıtım yapmadım. Birkaç ay sonra C++ işi buldum. Sonuçta tüm o emekler karşılığını vermiş oldu” kısmı ilginç
    İçgüdüsel olarak zor yapılan işlerin karşılığının olması gerektiğini biliriz, ama açık kaynak geliştiricilerinin özellikle prodüksiyonda yaygın kullanılan koda çok emek verip buna rağmen neredeyse hiç gerçek karşılık alamaması çok sık yaşanıyor, bu üzücü
    Bu yüzden itibar kazancı arandığını ya da NPM’in “Bu kütüphanenin yazarına bağış yapmayı düşünür müsünüz?” gibi özellikler eklediğini, GitHub’ın da Patreon entegrasyonu yaptığını düşünüyorum
    Saf ama çalışkan genç üreticileri sömürmeyen, bugünkünden daha iyi bir modele ihtiyacımız var

  • 2000’lerin başında pixel32, daha sonra da Pixel Studio Pro adında bir proje vardı. Gerçekten iyi görünüyordu ve erken erişim olarak satılmıştı
    Ama sonunda vaporware’e dönüştü; para ödeyenler çok öfkelendi ve yapımcısı hızla kahramandan kötü adama dönüştü
    https://discuss.haiku-os.org/t/pixel-studio-pro-in-past-call...

  • Yazar Warsaw University of Technology mezunu olduğunu söylemiş; burası burada her zaman oldukça iyi okullardan biri sayılmıştır
    Bunun yanında o dönemin bitirme tezlerinin bugünkülerden ne kadar farklı olduğu da göze çarpıyor. Yakın zamanda başka bir büyük şehirdeki teknik üniversitede tez yazdım; mühendislik lisans tezlerimizin %90’ı oldukça düşük seviyedeydi, benimki de dahil

    • Bugün çok farklı olduğunu sanmıyorum. Bildiğim kadarıyla amaç alanı ilerletmek değil, lisans ya da yüksek lisans derecesi verecek kişilere tez biçiminde bir çıktı üretebildiğini kanıtlamak
      Öne çıkan tezler de olacaktır, ama çoğu muhtemelen epey sıkıcıdır
  • Windows’u bu yüzden seviyorum. Belirli nişleri iyi dolduran küçük ve açık kaynaklı yazılımlardan inanılmaz fazla var
    Eskiden sourceforge.net ve freshmeat — adı sanırım buydu — gibi yerlerde dolaşıp bir şeyler arardım

  • Phonegap’te çalışan bir arkadaşım, yaklaşık 10 yıl önce Adobe tarafından satın alındıktan sonra eğlencesine hemen Photoshop’u JavaScript’e port etmişti

    • Eksilere şikâyet edecek değilim, ama bunun Hacker News’in hoşlanmayacağı türden bir hikâye gibi görünmesi epey tuhaf
      Bir yazılım mühendisinin şirket içi hack projesi hikâyesinin ilginç olacağını sanmıştım, neyse artık
  • İnsanların yapıp da dünyaya duyurmadığı şeyler oluyor. GitHub’da duruyor olması iyi olmuş; gerçekten etkileyici