Bir Proje Grubu Oluşturalım

Kaynak kodu kapatmak, seviyeye göre yazılımcı seçmek çok eskilerde kaldı. Artık büyük şirketler para kazandıkları yazılımları bile açık kaynak hale getiriyorlar (Gerekli istisnalar var tabii.). Tabii bunu hayrına yapmıyorlar. Böyle yaparak büyük bir topluluğun desteğiyle yazılımlarını çok daha iyi hale getiriyorlar. Tecrübeli ya da tecrübesiz, herkes bir yazılıma bir şeyler katabilir. Hele ki yeni birinin taze bakışı, projeye yeni bir soluk bile getirebilir.

Tabii sizin bileceğiniz iş…

6 Beğeni

demoralize oldum sağolun

@Tolgahan_Sarp
Hocam sizin aklınızda bir proje varsa ben destek vermek isterim. Bana göre bir dili öğrenmenin en iyi yolu bir projeye başlamak eksiklerimizi daha iyi görüp araştırabiliyoruz.

Moral bozacak bir durum yok. Giriş seviyesindeki beni hatırladım, sürekli basit sorular sorardım, buradaki bazı konulardaki terimleri anlamazdım. Ve yapabileceğim en zor program hesap makinesiydi. Şimdi bu projede “giriş seviyesindeki ben” çalışsa, herhalde sorularla ortalığı birbirine katar, sürekli saçma tavsiyelerde bulunurdu. Ayrıca benim de bazen moralim bozuldu, ama her defasında azmim daha da arttı ve daha çok çalıştım.

@hasser , en iyisi biz projeyi buradan yürütelim, şimdi düşündüm buradan yürütürsek projeye herkes birşeyler katabilir. Daha da geliştirebiliriz.

@hasser , ben pencere tasarımını okulda yaptım ama yazıları çok kötü yazdım. Düzeltip resmi buradan atarım.

1
Exe dosyasını detaylarıyla oluşturan bölüm.

2
İşini hızlı btitirmek isteyenler için fazla detayı olmayan basit sihirbaz.

3
Geliştiricilere geri bildirim göndermeye yarıyor.

4
İnternete yükleyeceğimiz basit bir kılavuz.

6
Geçmişte açılan dosyalar

7
Oraya ne koyacağıma karar veremedim.

NOT: Programın adını o an salladım. Onu değiştiririz.

Programın amacını ve neden kapalı kaynak kodlu olması gerektiğini anlamadım. Algoritmayı da biraz daha açarsanız daha iyi olur.

Aklımda bir proje var bakalım beraber

@Tolgahan_Sarp bakalım hocam.

Amaç: İnsanların bazı bilgisayar programlarını sürekli yanlarında taşıması gerekir. Nerede olursa olsun çalışan programlara portable programlar denir. Ve programın portable versiyonu bazen yapımcı tarafından yayınlanır, ancak buna az rastlanır. Projemiz, her programın portable halini çıkarmaya yarayacak.

Algoritma: Programımız kullanıcıdan portable olmasını istediği programın klasörünü, ve o programı çalıştırmaya yarayacak olan exe dosyasının adını isteyecek. Kullanıcıdan alınan dizini zipleyip onu base64 ile şifreleyecek, ve şifrelenmiş zip dosyası ile exe dosyasının adını sunucuya gönderecek. Sunucu, şifrelenmiş zip dosyasının şifresini çözüp onu çıkarttıktan sonra içindeki programı çalıştıran kodları .exe haline getirip linkini tekrar bizim programımıza gönderecek. Bizim programımız o exe dosyasını indirip kullanıcıya teslim edecek.

Ama internette Windows kullanan sunucu hizmeti var mıdır bilmiyorum.

Portable dan kastınız ne? Farklı platformlarda çalışabilir dosya mı?

Bu iş için neden sunucuya ihtiyacımız var? Bilgisayar üzerinde halledilemez mi?(Eğer asıl işi sunucu yapıyorsa programa neden ihtiyacımız var? Tamamen site üzerinde çalışsa olmaz mı?)

Hayır. Bilgisayarınıza kurulu olan programı tek dosya haline getirerek başka bilgisayarlarda da çalışmasına olanak sağlamak.

Pyinstaller ile olmuyor. cx_freeze olabilir onu araştıracağım.

Başka bilgisayarlarda çalışmasından kastınız nedir? Örneğin Windows’ta çalışan bir programı Linux’da da çalıştırmak mı? Ya da sadece Windows üzerinde çalışan programları diğer Windows sürümlerindede mi çalıştırmak istiyorsunuz? Sanırım ikinci dediğimi yapmak istiyorsunuz.

O zaman bakmamız gereken birkaç parametre var. Mesela bir tanesi, programın bağımlı olduğu kütüphaneler. Sizin tek paket haline getirmek istediğiniz program Windows’un yeni bir sürümündeki kütüphaneye ihtiyaç duyarsa, eski sistemlerde nasıl çalıştırmayı düşünüyorsunuz?
Ya da kütüphaneler varsa bile, sürümü geçtiği için veya artık tavsiye edilmediği için, programın kullanılması sırasında güvenlik açığına sebep olursa?

Bazı programlar, kullanıcıların ana dizinlerinde (C:\users\root gibi) bazı konfigürasyon dosyaları oluşturur veya registry içerisinde bazı kayıtlar oluşturur. Program açılışında da bu konfigürasyon dosyalarına ve kayıtlara bakarak gerekli hazırlıkları yapar. Yani kısaca her programın dosyaları bir klasör içerisinde olmayabilir. Programın işleyişini engeller mi peki? Aslında bazen evet bazen hayır. Eğer program lisanslı ise kayıt defterine bakabilir açılışta. Bu durumda başka bilgisayarda gerekli kaydı göremeyen program açılmakta inatçılık edecektir :slight_smile:

Ve son olarak şunu da söylemek isterim. Bazı programlar kurulurken kendisiyle beraber gerekli olan bazı bileşenleri de sisteme kurar. Bu bileşenler bazen program bazen de sürücü olabilir. Bu durumda tek paket haline getirmeye çalıştığınız programın 3. parti bağımlılıkları olabilir.

Bu ve bunun gibi durumları da göz önüne almak lazım.

1 Beğeni

Evet.

Algoritmayı değiştiriyoruz;

Portable yapılacak programın setup dosyasını çalışırken izleyeceğiz. Ne yapmış, ne etmiş hepsini kayıt altına aldıktan sonra bunları da sunucuya göndereceğiz. Sunucu portable programa bunları gömecek. Portable program her açlışında bu değişiklikler yapılmış mı kontrol edecek. Yapılmamışsa yapacak, programı sonra çalıştıracak. Ayrıca portable olacak program çalışmak için başka programlara ihtiyaç duyuyorsa (örneğin oyunsa DirectX gibi) onları da geçici olarak kuracak. Farklı windows sürümlerindeki farklı kütüphanelere bir çözüm üretemedim henüz.

Peki programın her ihtiyacını biz karşılıyorsak, neden orijinal setup dosyasının yerine tercih edelim? O zaman portable olmaktan çıkmıyor mu?

Yanlış anlama bunları bir ihtimal olarak sunuyorum. Ve anlatmak istedigim şey eğer bir program portable değilse bunun nedenleri vardır. Bunları konuşmak lazım.

1 Beğeni

Portable sürümün amacı kurulum gerektirmeyen tıkla çalıştır mantığı değil mi? Sizin yapacağınız portable sürümler sürücü yükleyecek kütüphane yükleyecek vs. @coderistan nın dediği gibi bunları zaten yapacaksa niye setup dosyasını tercih etmeyelim.

docker'ın bu konuda yardımı dokunabilir.” diye düşündüm okurken…

Onu daha önce de demiştiniz, bakmayı unutmuşum hocam hatırlattığınız iyi oldu. Bugün bakarım.

Anladığım kadarıyla docker, konteynerleşme ile alakalı. anlaşılan bayağı emek var. Ama bunun bize ne yararı olacak anlamadım.

evet bende yeni basladim bence güzel olabilir.