Yapay zekadan makale özeti
- Kısa
- Ayrıntılı
- Bu video, bir eğitmen ve öğrenciler arasında geçen interaktif bir eğitim dersidir. Eğitmen, Python projelerinde "clean structure" kavramını ve doğru proje yapısını anlatmaktadır.
- Video, Python projelerinde temel proje yapısından başlayarak CLI uygulamaları, web projeleri (Flask ve Django) için doğru klasör ve dosya yapılarını detaylı şekilde ele almaktadır. İçerikte .gitignore, LICENSE, README, requirements.txt gibi temel dosyaların kullanımı, test dosyalarının yönetimi, template ve statik dosya yapılandırması gibi konular adım adım açıklanmaktadır.
- Eğitim, farklı Python proje tipleri için best practice'leri sunmakta, Flask ve Django framework'lerinin karşılaştırmasını yapmakta ve Git versiyon kontrol sistemi ile GitHub kullanımı hakkında temel bilgiler vermektedir. Ayrıca, test dosyalarının nasıl yazılacağı ve mobil uygulamalar için test stratejileri hakkında da bilgiler içermektedir.
- 00:54Clean Structure Kavramı
- Clean structure, yazılım projelerinde temiz ve mantıklı bir yapı oluşturmayı amaçlayan bir kavramdır.
- Clean structure, best practice'lerden oluşur ve farklı programlama dilleri ve proje tipleri için farklı standartlar vardır.
- Clean structure, klasör yapısı, py dosyaları, ayar dosyaları ve test dosyalarının mantıklı bir şekilde düzenlenmesini sağlar.
- 05:39Clean Structure'nin Önemi
- Büyük projelerde milyonlarca satır kodun hiyerarşik ve mantıklı bir şekilde yönetilmesi için clean structure gereklidir.
- Clean structure, yazılımcıların deneyimlerinden ve standartlaşmış kurallardan oluşan bir mimari yapısıdır.
- Her proje tipi ve programlama dili için farklı clean structure best practice'leri vardır.
- 11:07Proje Türlerine Göre Clean Structure
- Python ile desktop application geliştirmek için web uygulama odaklı bir clean structure kullanmak doğru değildir.
- Farklı programlama dilleri için (C, Go, Python) ve framework'ler için (Flask, Django) farklı clean structure örnekleri vardır.
- Flask ve Django gibi farklı framework'lerin dosya yapısı ve çalışma mantığı farklı olduğu için birbirlerinin modelini uygulamak zordur.
- 17:36Command Line Uygulaması Geliştirme
- Sıfırdan bir command line uygulaması geliştirilecek ve bunun için bir klasör oluşturulacak.
- Klasör içinde "v1" ve "v2" adında iki farklı klasör oluşturulacak.
- Bu yapılar bir makaleden alınmış olup, makale de gösterilecek.
- 18:22CLI Uygulaması İçin Klasör Yapısı
- CLI uygulaması geliştirirken "hello world" adında bir klasör açılmalı ve içinde "gitignore", "hello_world.py", "LICENSE", "README.md", "requirements.txt" ve "test.py" dosyaları olmalı.
- "LICENSE" dosyası, projenin açık kaynak olması durumunda lisans bilgilerini içerir.
- "README.md" dosyası, proje hakkında bilgi ve kullanım kılavuzunu içerir.
- 20:01Gitignore Dosyası
- "gitignore" dosyası, Git versiyon kontrol sisteminde belirli dosyaların veya klasörlerin gitlendiğinde göz ardı edilmesini sağlar.
- Lokal yapılandırma dosyaları gibi özel bilgiler içeren dosyaları göndermemek için "gitignore" dosyasında belirtmek gerekir.
- GitHub'un kendisi de çeşitli "gitignore" örnekleri sunmaktadır.
- 21:48Proje Dosyaları ve Önemi
- "hello_world.py" dosyası, uygulamanın temel işlevselliğini sağlayan ana Python dosyasıdır.
- "LICENSE" dosyası, proje için kullanılan lisans türünü belirtir ve lisans seçimi için "choosealicense.com" sitesi önerilmektedir.
- "README.md" dosyası, proje hakkında bilgi ve kullanım kılavuzunu Markdown formatında içerir.
- 23:35Requirements.txt Dosyası
- "requirements.txt" dosyası, uygulamanın gerekli olan kütüphanelerin ve versiyonlarının bilgilerini tutar.
- Bu dosya, kütüphanelerin adı ve versiyon bilgilerini içerir ve bu bilgileri okuyarak kütüphaneleri otomatik olarak kurmak mümkündür.
- Projede kullanılan 50 farklı kütüphane ve versiyon bilgilerini "requirements.txt" dosyası oluşturarak yönetebilirsiniz.
- 24:59Python Projelerinde Bağımlılıklar ve Yapılandırma Dosyaları
- Python projelerinde bağımlılıklar (library'ler) virtual environment içerisinde download edilir ve bunları tekrar tekrar göndermek yerine sadece isimleri ve versiyonları belirten bir txt dosyası (requirements.txt) oluşturulur.
- requirements.txt dosyası, projenin hangi library'leri kullandığını ve versiyonlarını içerir, böylece karşı tarafta bu dosyayı çalıştırarak gerekli paketleri otomatik olarak indirebilir.
- setup.py dosyası, uygulamanın kurulum aşaması ile ilgili bilgileri içerir ve test dosyaları ise projenin testlerini içeren bir klasördür.
- 27:50Python Proje Hiyerarşisi
- Bir Python projesinde ana klasör, projenin tüm dokümanlarını ve klasörlerini içeren kapsayıcıdır.
- Projede modüller, init.py dosyası içeren klasörlerdir ve bu dosya modülü tanımlar.
- Test dosyaları genellikle ayrı bir klasörde tutulur ve helpers klasörü, ana işleri parçalara bölüp function'lara dönüştürdüğümüz yardımcı kodları içerir.
- 35:34Paket ve Modül Yapısı
- Python projelerinde namespace hiyerarşisi oluşturmak için klasörler içinde klasörler kullanılabilir.
- Veri dosyaları (csv, excel, xml, json) genellikle data klasörüne, belge dosyaları ise documents klasörüne atılır.
- Test dosyaları, her modül ve yardımcı fonksiyon için ayrı ayrı testler içeren klasörlerde tutulur.
- 39:40Proje Yapılandırma ve Dokümantasyon
- Proje yapılandırması için README.md gibi markdown dosyaları kullanılır.
- Open source projeler için mimari ve yapılandırma bilgilerini belirtmek önemlidir, ancak çok büyük projelerde bu yapılandırma sayfalarca olabilir.
- Eğitim odaklı projelerde yapılandırma dosyaları faydalı olabilir, ancak production ortamında bu dosyaların olmaması gerekir.
- 40:22Python Proje Yapısı ve Çalıştırılabilir Dosyalar
- "Execute çalıştırılabilir dosyalar" klasöründe çalıştırılabilir dosyalar tutulur.
- Runner script'te import ve ana fonksiyon bulunur, bu scriptten diğer dosyalar çağrılır.
- Eğer çalıştırılabilir dosya yoksa bu klasör kullanılmaz, ancak PDF işlemleri gibi özel durumlarda binary dosyaları "bin" klasörüne konulabilir.
- 42:29Flask Projesi Yapısı
- Flask projesi yapısı daha hafif ve temiz bir yapıya sahiptir.
- Proje klasöründe "db" klasörü veritabanı işlemlerinin temellerinin bulunduğu alan, "schema.sql" veritabanı yapısını, "data.sql" ise verileri içeren scriptleri içerir.
- "templates" klasörü web uygulaması için HTML dosyalarını, "static" klasörü ise CSS, JavaScript ve resim gibi statik dosyaları içerir.
- 51:35Django Projesi Yapısı
- Django projesi yapısı anlatılacak, ancak Flask'a göre daha karmaşık bir yapıya sahiptir.
- Django projesinde ayrı ayrı test klasörleri oluşturulur ve her bileşen için ayrı testler yapılır.
- "requirements.txt" dosyası projede kullanılan kütüphaneleri içerir ve "README.md" dosyası proje hakkında bilgi verir.
- 51:39Django Proje Yapısı
- Django'da proje yapısı iki adımdan oluşur ve "project" adında kapsayıcı bir klasör içerir.
- Proje klasöründe "manage.py" dosyası bulunur ve bu dosya üzerinden Django komutları çalıştırılır.
- Proje içinde "init", "settings.py" ve "urls.py" gibi temel dosyalar otomatik olarak oluşturulur.
- 53:22Django'da Proje ve Uygulamalar
- Django'da "proje" ve "uygulama" kavramları vardır; bir proje içinde birden fazla uygulama bulunabilir.
- Her uygulama mantıksal olarak ayrılmış birimdir ve projenin içinde yer alır.
- Genel proje ayarları "settings.py" dosyasında, uygulama özel URL'leri ise her uygulamanın kendi "urls.py" dosyasında tanımlanır.
- 55:03URL Yapılandırması
- Her uygulama içinde "urls.py" dosyası oluşturulur ve burada uygulama özel URL patternleri tanımlanır.
- Projenin ana "urls.py" dosyasında, tüm uygulamaların URL yapılandırması birleştirilir.
- "settings.py" dosyasında tüm uygulamaların isimleri "INSTALLED_APPS" listesine eklenir, böylece proje uygulamalarla iletişim kurabilir.
- 59:56Statik Dosyalar ve Template Yapısı
- Statik dosyalar "static" klasöründe düzenlenir; CSS dosyaları "css" klasöründe, JavaScript dosyaları "js" klasöründe tutulur.
- "vendor" klasörü hazır Bootstrap gibi kütüphaneleri tutar, "custom" klasörü ise özel CSS ve JavaScript dosyaları için kullanılır.
- Template dosyaları "templates" klasöründe düzenlenir ve hiyerarşik bir yapıya sahiptir.
- 1:04:14Dosya Yönetimi ve Clean Architecture
- Clean architecture mantığını anlamak geliştiriciler için önemlidir, böylece kod daha yönetilebilir hale gelir.
- Dosya yükleme işlemleri için "uploads" veya "files" klasörleri kullanılabilir.
- Projeler büyüdükçe, dosyalar mantıksal olarak kategorize edilerek (örneğin "profile" veya "products") düzenlenmelidir.
- 1:08:00Flask ve Django Karşılaştırması
- Flask bir mikro framework olup çekirdeği küçük ve genişletilebilir, Django ise "battery included" (tüm özellikler dahil) yaklaşımı benimsemiştir.
- Flask'ta sadece temel yapılar dahil olup, ek özellikler için harici paketler kullanılabilirken, Django'da ihtiyacınız olsun olmasın tüm özellikler dahil gelir.
- Django daha karmaşık ve öğrenmesi zor olsa da, tüm özelliklerin dahil olması sayesinde sonradan geliştirme daha kolay olabilir.
- 1:12:43Performans ve Güvenlik
- Flask daha hafif tasarlanmış olduğu için Django'dan daha performanslı olabilir, ancak bu durum projeye göre değişebilir.
- Her iki frameworkte de güvenlik açısından gerekli eklentiler ve paketler mevcuttur, Flask'ta harici olarak, Django'da ise dahili olarak.
- Eğitimde önce Flask'tan başlanıyor çünkü yapısı daha basit ve açık, Django'ya geçince kafa karışıklığı yaşanabilir.
- 1:19:30Web Uygulaması Geliştirme Yaklaşımları
- React, Flask veya Django ile web uygulaması geliştirmek için zorunlu değildir, bootstrap, javascript, css ve html ile de yapılabilir.
- React'te server ve client'ı birbirinden ayırırken, Flask ve Django'da template engine kullanılarak web uygulaması geliştirilebilir.
- Django ve Flask hem API geliştirme hem de template engine ile web uygulaması geliştirme imkanı sunar.
- 1:23:03Test Dosyaları Hakkında Soru
- Konuşmacı, test dosyaları yazma konusunda soru sormaktadır.
- Web sitesi test etmek için test dosyası yazma süreci hakkında bilgi istenmektedir.
- Mobil uygulama kodlarında da görülen test dosyası yazma ve uygulama geliştirme sırası konusu ele alınmaktadır.
- 1:23:34Test Konusunun Gelecekte İnceleneceği
- Test konusu daha sonra inceleneceği belirtilmektedir.
- Web odaklı test ve normal Python testleri arasında ufak farklılıklar olduğu ifade edilmektedir.
- Derste bugünlük bu noktaya kadar gideceği ve yarın görüşüleceği söylenmektedir.