Regular Func && Arrow Func

 

Kategori Featured
30.01.2024
34 Okunma

JS – Variable Environment

 

Kategori Featured
30.01.2024
30 Okunma

Js Falsy, Mantıksal OR, AND , Nullish Birleşme Operatörü, Optional Chaining

Boolean() fonksiyonu, içine verilen değeri boolean türüne dönüştürür. Ancak JavaScript’te bazı değerler “falsy” olarak kabul edilir ve 0 da bu değerlerden biridir. Falsy değerler şunlardır:

  1. false

  2. 0

  3. “”(boş string), ”

  4. null

  5. undefined

  6. NaN (Not a Number)

Falsy değerler, mantıksal ifadelerde false olarak değerlendirilir. Örneğin:

 

Bu örnekte, num değişkeninin değeri 0’dır. 0, falsy bir değerdir. Bu nedenle, if bloğu çalışmaz ve else bloğu çalışır.

Bu değerlerden herhangi biri Boolean() fonksiyonu içine verildiğinde false dönecektir. Dolayısıyla, Boolean(0) ifadesi 0 değeri falsy olduğu için false dönecektir.

Örnek:

Bu durum, bir if koşulunda veya bir değerin truthy veya falsy olup olmadığını kontrol etmek amacıyla sıklıkla kullanılır.

NaN JavaScript’te “Not a Number”ın kısaltmasıdır. Bu değer, matematiksel bir işlem sonucunda sayı olmayan bir değeri temsil eder. NaN, sayısal bir operasyonun başarısız olduğu veya tanımsız bir sonuç ürettiği durumlar için kullanılır.

Örneğin, 0 / 0 veya ‘abc’ * 2 gibi işlemler sonucunda NaN elde edilir. NaN ‘ın ilginç bir özelliği, kendisiyle yapılan her türlü aritmetik işlemin de NaN üreteceğidir.

Bu tür durumlarda, JavaScript NaN‘yi sayısal bir değer olmayan bir durumu temsil etmek için kullanır. Ancak, NaN her zaman falsy olarak değerlendirilir. Bu nedenle, Boolean(NaN) ifadesi false döner, çünkü NaN falsy bir değerdir.

  1. == Operatörü:
    • Tip dönüşümü yaparak karşılaştırma yapar. İki operandın tipi farklıysa, JavaScript bir tür dönüşümü gerçekleştirerek karşılaştırma yapmaya çalışır.
    • Örneğin, 1 == '1' ifadesi true döner, çünkü JavaScript otomatik olarak string’i sayıya çevirir ve eşit olduklarını kabul eder.
  2. === Operatörü:
    • Tip dönüşümü yapmadan sadece değer ve tip kontrolü yapar. Eğer iki operandın tipi farklıysa, === operatörü false döner.
    • Örneğin, 1 === '1' ifadesi false döner, çünkü değerler eşit olsa da tipler farklıdır.

Genel olarak, === operatörü kullanımı, beklenmedik tip dönüşümlerini önlemek ve daha güvenli karşılaştırmalar yapmak için önerilir.

Optional Chaining Nedir?

Optional chaining, JavaScript ve TypeScript gibi dillerde kullanılan yeni bir özelliktir. Bu özellik, isteğe bağlı (optional) değerlere güvenli bir şekilde erişmenizi sağlar. İsteğe bağlı değerler, null veya undefined olabilen değerlerdir.

Optional chaining, bir nokta (.) operatörü ile soru işareti (?) kombinasyonundan oluşur. Bu sembolün kullanımı, bir sonraki operandın yok olma ihtimalinden kaynaklanan olası hataları önler.

Nasıl Çalışır:

Optional chaining, bir zincir halinde birden fazla isteğe bağlı değere erişmek için kullanılabilir. Zincirdeki herhangi bir noktada null veya undefined değeriyle karşılaşıldığında, zincirleme durdurulur ve null veya undefined değeri döndürülür. Bu sayede hata oluşumu önlenir.

 

Kategori Featured, JS
30.01.2024
43 Okunma

Js Scope

 

Kategori Featured
30.01.2024
35 Okunma

JS DOM işlemleri

Arka Plan Rengini Değiştirme:

Body elementinin arka plan rengini ‘lightblue’ olarak değiştirir.

Metin Ekleme:

Body içine yeni bir paragraf ekler ve içine “Merhaba, Dünya!” metnini ekler.

CSS Sınıfı Ekleyip Çıkarma:

Body elementine ‘acik-tema’ sınıfını ekler ve ‘koyu-tema’ sınıfını kaldırır.

Stil Özelliklerini Değiştirme:

Body elementinin yazı boyutunu 18 piksel olarak değiştirir ve metin rengini yeşil yapar.

Alt Element Eklemek:

Body içine yeni bir <div> ekler ve içine “Yeni bir div!” metnini ekler.

İçerik Silme:

Body elementinin içeriğini tamamen siler.

Attribute Ekleme ve Değiştirme:

Body elementine ‘data-theme’ ve ‘id’ attribute’larını ekler veya değiştirir.

Click Olayına Olay Dinleyici Ekleme:

Body elementine tıklandığında bir uyarı gösteren bir click olay dinleyicisi ekler.

Gizleme ve Gösterme:


Body elementini gizler veya tekrar gösterir.

Scroll İşlemleri:

Body elementinin scroll pozisyonunu en üstüne ayarlar.

Input Değerini Almak ve Konsola Yazdırmak:

Aynı Sınıfa Sahip Tüm Elemanlara Stil Uygulama:

Çocuk Ekleme:

Checkbox Durumunu Kontrol Etme:

Form Gönderme:

Mouse Over Olayına Olay Dinleyici Ekleme:

Bağlantıya Yeni Bir Tab’da Link Açma:

HTML Elementi Kaldırma:

Sayfa Yüksekliğini Alma:

CSS Animasyonunu Tetikleme:

Giriş Doğrulama İşlemi:

Drag and Drop İşlemleri:

 

Kategori Featured
26.01.2024
33 Okunma

Python’da Sınıfların Dünyası: Kapsamlı Bir Bakış

Python, nesne yönelimli bir programlama dilidir ve sınıflar bu dilin temel yapı taşlarından biridir. Nesne yönelimli programlama (OOP), verileri ve işlevleri bir araya getirerek daha organize, modüler ve yeniden kullanılabilir bir kod yazımı sağlar. Python’daki sınıflar, bu paradigmaya uygun olarak objelerin oluşturulmasına ve yönetilmesine olanak tanır.

Sınıf Nedir?

Sınıflar, benzer niteliklere sahip nesneleri temsil etmek için kullanılan bir kalıptır. Bir sınıf, veri öğelerini (nitelikler/özellikler) ve bu veriler üzerinde çalışan işlevleri (metodlar) içeren bir yapıdır.

Yukarıdaki örnekte, Araba adında bir sınıf tanımladık. __init__ metodu bir sınıf örneği oluşturulduğunda otomatik olarak çağrılır ve marka, model ve yil niteliklerini atanır. Ayrıca, bilgi metodu, araba nesnesinin bilgilerini döndürmek için kullanılabilir.

Sınıfın Kullanımı

Sınıfları kullanarak nesneler oluşturabilir ve bunları programınızdaki farklı yerlerde kullanabilirsiniz.

Yukarıdaki örnekte, Araba sınıfından iki farklı araba örneği oluşturduk ve her birinin bilgilerini çağırdık.

Kalıtım (Inheritance)

Python’da bir sınıfın başka bir sınıftan miras alabilmesi mümkündür. Bu özellik, kodun tekrar kullanılabilirliğini artırır.

ElektrikliAraba, Araba sınıfından miras alarak batarya niteliğini ekler ve tam_bilgi metodunu tanımlar.


ElektrikliAraba sınıfı, Araba sınıfının özelliklerini ve metodlarını kullanırken kendi özel niteliklerini ve metodlarını da içerir.

Özel Metodlar (Dunder Methods)

Python’da çeşitli özel metodlar (çift alt çizgi ile başlayan ve biten metodlar) bulunur. Bu metodlar, özel davranışlar eklemek için kullanılır.

__str__ metodu bir nesne metni (string) olarak temsil edilmesini sağlarken, __len__ metodu nesnenin uzunluğunu belirtir.

Pass Nedir  ?

pass, Python’da bir ifade veya bloğun hiçbir şey yapmamasını sağlayan bir ifade olarak kullanılır. Genellikle bir yerhalinde bir şey yapılması gerektiği, ancak programın çalışması için şu an için bir şey yapılmasının gerekmediği durumlarda kullanılır.

Örneğin, bir fonksiyon, sınıf veya döngü tanımlarken içeriği daha sonra doldurulacaksa ve geçici olarak bir şey yapılmasına gerek yoksa pass kullanılabilir. Bu durumda Python, programın bozulmadan çalışmasını sağlar.

pass aynı zamanda bir sınıf veya fonksiyon tanımlarken de kullanılabilir:

pass kullanımı, sözdizimi açısından gereklilik olsa da işlevsel bir şey yapılmayacağı zamanlarda kullanılır. Bu durumlar, kod geliştirilirken veya yapı henüz tamamlanmadığında oldukça yaygın olabilir.

Sonuç

Python’da sınıflar, nesne yönelimli programlamanın temel taşlarından biridir. Sınıflar, kodunuzu düzenli hale getirmenize, kod tekrarını azaltmanıza ve daha modüler bir yapı oluşturmanıza yardımcı olabilir. Bu yapı, programınızı daha anlaşılır, bakımı kolay ve genişletmeye uygun hale getirir. İyi tasarlanmış sınıflar, Python programlamada güçlü bir araçtır ve kodunuzu daha etkili hale getirmenize olanak tanır.

Kategori Python
24.12.2023
38 Okunma

FastAPI Uygulamasını Heroku’ya Deploy Etmek

FastAPI’ye Giriş

FastAPI, tüm endpointler noktaları için otomatik OpenAPI (Swagger) ve ReDoc belge oluşturma özelliklerine sahip Python tabanlı bir Yüksek Performanslı Web API Çerçevesidir. REST API’lerinin veya Mikro Hizmetlerin hızlı bir şekilde geliştirilmesi için son derece uygundur.

FastAPI, Starlette (Starlette, yüksek performanslı asenkron hizmetler oluşturmak için ideal olan hafif bir ASGI çerçevesi/araç setidir) ve Pydantic (Python türü açıklamaları kullanan bir çalışma zamanı veri doğrulama ve ayar yönetimi) ile tam uyumludur. Starlette’in gücünden yararlanan FastAPI, WebSockets ve GraphQL için tam destek alır.

Ön Gereksinimler

Devam etmeden önce, bu yazıyla ilgileniyorsanız, aşağıdaki listedekilere sahip olmanız/karşılamanız önerilir.

  • Ücretsiz bir GitHub hesabı
  • Ücretsiz bir Heroku hesabı
  • Visual Studio Code IDE (Veya Python programlamayı destekleyen tercih ettiğiniz herhangi bir Programlama IDE’si)
  • Python 3.6 veya en son sürümü yüklü bir bilgisayar

Bu öğreticide Visual Studio Code (VS Code) kullandığınız varsayılır ve bu nedenle adımlarda bu öğreticinin gözden geçirilmesi sırasında VS Code hakkında bilgi verilir.

Ek olarak, bu FastAPI yazısı, programlamaya yeni başlayanları da hedeflemektedir. Bu nedenle, programcı olmayanların da bu öğreticiyi uygulamalarına yardımcı olan adımları mümkün olduğunca ayrıntılı olarak açıklamaya çalışıyorum.

Basit Bir FastAPI Uygulaması Oluşturun

Tek bir endpoint ile çok basit bir FastAPI uygulaması oluşturacağız ve ardından FastAPI uygulamasını Heroku platformuna deploy edeceğiz.

Bu makalenin tam kaynak kodu GitHub’da barındırılmaktadır. Endpointimiz JSON (JavaScript Object Notation) biçiminde bir yanıt döndürecektir.Komut istemini açın ve yeni bir uygulama oluşturmak istediğiniz konuma gidin. fastapi-demo adında bir dizin oluşturun ve aşağıdaki komutları çalıştırarak geçerli dizini bu dizinin üzerine ayarlayın.

Şimdi komut isteminden VS Code’u yazarak başlatın kod . ve enter tuşuna basın. Ya da klasörü vs codeu açtıktan sonra vs code içerisine ekleyebilirsiniz.

code .

PC’de yüklü olan Python Sürümünü kontrol edin

Terminalde aşağıdaki komutu çalıştırarak PC’nizde yüklü olan Python sürümünü kontrol edin.

Python sürüm 3.6 veya sonraki bir sürümünün yüklü olduğundan emin olun. Bilgisayarımda Python 3.8.0 yüklü.

Sanal Ortam Oluşturma

Uygulamaya geçmeden önce,  projemiz üzerinde çalışmak için bir Python Sanal Ortamı oluşturacağız.

Python Sanal Ortamı Windows İşletim Sistemi oluşturma komutu

Windows işletim sisteminden, aşağıdaki komutu yazarak env veya istediğiniz herhangi bir ad adlı bir Sanal Ortam oluşturun

Python Sanal Ortamı Unix tabanlı işletim sistemi oluşturma komutu

Unix tabanlı işletim sisteminden,  aşağıdaki komutu yazarak komut terminalinden env adında bir Sanal Ortam oluşturunuz

Sanal Ortamı Etkinleştirin

Sanal ortamı etkinleştirmek için işletim sisteminize bağlı olarak aşağıdaki komutu yazın.

Windows işletim sistemi için Python Sanal Ortamını etkinleştirme komutu

Unix tabanlı işletim sistemi için Python Sanal Ortamını etkinleştirme komutu

Sanal ortamın başarılı bir şekilde etkinleştirilmesinden sonra, oluşturulan ortamın adının komut satırı terminaline önek olarak ekleneceğini göreceksiniz.

Pip’i Güncelle

pip, Python’da bir modül yükleyicisidir. Basitçe söylemek gerekirse, bizim durumumuzda pip, uygulamamızda kullanabilmemiz için FastAPI modülünü kurmamıza yardımcı olacaktır. pip kendi içinde Python kurulumu ile varsayılan olarak gelen bir modüldür. Pip için sık sık yükseltmeler vardır. Bu nedenle, projemiz için her zaman en son bağımlılıkları alması için pip’i yükseltmek en iyi uygulamadır. pip’i yükseltmek için aşağıdaki komutu çalıştırın.

FastAPI modülünü kurun

FastAPI kullanarak bir Restful API oluşturmak için yalnızca FastAPI ve uygulamaya özel bağımlılıkları yüklemek için aşağıdaki komutu çalıştırın.

Yaklaşım 1: FastAPI İsteğe Bağlı Kurulum

Bu yaklaşımda FastAPI’yi ve ardından Uvicorn’u ayrı ayrı kuruyoruz.

Bu durumda, aşağıdaki komutla uvicorn’u ayrı olarak kurmanız gerekir. Uvicorn, FastAPI uygulamanızı çalıştırmak için altyapı sağlayan bir ASGI (Asenkron Sunucu Ağ Geçidi Arayüzü) sunucusudur.

Bu, FastAPI’nin uygulama geliştirme çerçevesinin çalıştırdığı sunucudan tamamen ayrıldığı anlamına gelir. Bu, FastAPI’nin WSGI (Web Sunucusu Ağ Geçidi Arayüzü) sunucusunda da çalışmasını kolaylaştırır. FastAPI’nin güzelliği budur.

Yaklaşım 2: FastAPI Tam Kurulum

FastAPI’yi Uvicorn ile birlikte kurmak istiyorsanız aşağıdaki komutu çalıştırınız.

Tam kurulumla ilgili zorluklar, bir Windows 10 PC’deyseniz ve Microsoft Visual C++ 14.0’ı yüklemediyseniz, pip’in FastAPI’yi yükleyememesidir. Bu nedenle, başarılı bir kuruluma sahip olmanız için çok büyük bir yazılım olan Microsoft Visual C++ 14.0’ı indirmeniz gerekir. Bu yazılımın yüklü olması gerekli değildir. Bu nedenle, FastAPI’nin İsteğe bağlı kurulumunun Yaklaşım 1’i ile gitmeniz önerilir.

Gunicorn Kurulumu

Heroku’daki uygulamamızı sunmak için Gunicorn kullanıyoruz. Gunicorn’u yüklemek için aşağıdaki komutu çalıştırın.

Tüm proje bağımlılıklarını bir dosyaya kaydetme

Şimdiye kadar, tüm bağımlılıkları kurabiliyoruz. Ancak, gerekli bağımlılıkların yüklenmesini otomatikleştirmek de önemlidir. Bunun nedeni, bu depo diğer geliştiriciler tarafından farklı bir bilgisayarda kullanılıyorsa veya çeşitli başka ortamlara dağıtırsak, kendi başlarına yüklediklerinde modüllerin uygun olmayan sürümleriyle ilgili sorunlarla karşılaşmamaları gerektiğidir. Bu yüzden proje ile ilgili bağımlılıkları donduracağız ve projenin kök dizininden cmd terminalinde aşağıdaki komutu çalıştırarak bir dosyada saklayacağız.

Yukarıdaki komut tüm modüllerin sürümlerini yakalayacak ve bunları projenin kök dizinindeki requirements adlı bir metin dosyasına yazacaktır. Dosyanın adı sizin seçiminizdir, ancak requirements.txt en yaygın olarak Python topluluğu tarafından kullanılır.requirements.txt dosyasında belirtilen bağımlılıkları kurmak için tek yapmanız gereken aşağıdaki komutu çalıştırmaktır.

Yukarıdaki komut, requirements.txt dosyasını satır satır okuyacak ve dosyada belirtilen belirli sürümlere sahip tüm paketleri yükleyecektir.

FastAPI’de Basit Bir Uç Nokta Oluşturun

Basit bir JSON döndüren bir GET endpoint’i oluşturacağız. Bunun için  fastapi-demo projemizin kök dizininde main.py isminde bir dosya oluşturun.

FastAPI modülünü içe aktarın ve başlatın

main.py aşağıdaki satırı ekleyin, böylece fastapi modülü tarafından sunulan FastAPI adlı sınıf yardımıyla endpoint’imizi oluşturmaya başlayabiliriz.

 

Şimdi aşağıdaki gibi basit bir JSON nesnesi döndürmek için bir endpoint oluşturacağız.

 

GET Uç Noktasını Uygulama

Main.py dosyası aşağıdaki gibi olacaktır.

Yukarıdaki kodda def anahtar kelimesi ile hello isminde  bir metot tanımladık. Bu yöntemin yaptığı tek şey,  Python’da sözlük türünde bir nesne döndürmektir.

#1 çizgisi, tüm sihrin gerçekleştiği yerdir. @app.get(“/”) hello yöntemimizin dekoratörüdür  ve bu yöntemi GET HTTP yöntemi isteklerini kabul eden bir uç noktaya dönüştürür. Bizim  durumumuzda uygulamaya atanan FastAPI örneği  , sözlük türünün dönüş değerini otomatik olarak  JSON biçimi.

FastAPI uygulamasını yerel PC’de çalıştırın

Oluşturduğumuz Python ortamının aktif olduğu komut istemine aşağıdaki komutu yazıp enter tuşuna basın.

  • Yukarıdaki komut ile aşağıdaki altyapı ayarları ile Uvicorn ASGI sunucusuna çağrı çağırıyoruz.
  • host 127.0.0.1, uvicorn’u uygulamamızı PC’nin localhost’unda çalıştıracak şekilde yapılandırdığımız anlamına gelir. host parametresi için diğer olası değerler 0.0.0  veya localhost’tur.  FastAPI’yi üretim ortamlarına dağıtırken 0.0.0.0 önerilir.
  • 5000 numaralı port, uygulamamızın çalışmasını istediğimiz porttur. Bu bağlantı noktasında zaten çalışan başka bir uygulamanız veya hizmetiniz varsa, yukarıdaki komut yürütülemez. Böyle bir durumda, uygulamanın kullanması için ücretsiz olarak kullanılabilir olduğu tespit edilen seçtiğiniz başka bir dört basamaklı sayıyla değiştirmeyi deneyin.
  • yeniden yükle Bu bayrağın yalnızca geliştirme amacıyla ayarlanması önerilir. Bu bayrağın etkinleştirilmesi, geliştirme sırasında kodunuzda yaptığınız değişikliklerle uvicorn sunucusunu otomatik olarak yeniden başlatır. Herhangi bir çalışma zamanı hatası olması durumunda, uvicorn sunucusunun yeniden başlatılamamasına neden olan hata izinden bu değişiklikleri hızlı bir şekilde tanımlayacağınız açıktır.
  • reload bayrağı, modern JavaScript kitaplıklarıyla birlikte gelen sıcak kod yeniden yükleme özelliği ile karıştırılmamalıdır. React ve Vue tarafından sağlanan uvicorn’un yeniden yüklemesi ile sıcak kod yeniden yüklemesi arasındaki temel fark, uvicorn’un yeniden yüklemesinin sunucuyu yeniden başlatması ve sıcak kod yeniden yüklemesinin hem sunucuyu yeniden başlatması hem de kullanıcı arayüzünü yeniden yüklemesidir.
  • main:app Bu, aşağıda ayrıntılı olarak açıklandığı gibi bir model izler.
    • main, FastAPI’nin başlatıldığı modüldür. Bizim durumumuzda, sahip olduğumuz tek şey kök düzeyinde main.py. FastAPI değişkenini diğer dizinlerin altında bir yerde başlatıyorsanız, uvicorn’un yapılandırmayı doğru bir şekilde tanımlayabilmesi için bir __init__.py dosyası eklemeniz ve bu modülü kullanıma sunmanız gerekir. Bizim durumumuzda ana modül olur.
    • app, FastAPI örneğiyle atanan değişkenin adıdır. Bu adları değiştirmekte özgürsünüz, ancak module-name:fastapi-initialization-variable desenini izleyen aynı sözdizimini yansıtıyorsunuz.

Seçtiğiniz bir tarayıcıda aşağıdaki uç noktaya giderek uygulamaya erişin ve uygulamayı görün.

FastAPI kullanarak bir Web API’si uygularken, isteği Postman veya Postwoman gibi herhangi bir API geliştirme aracı aracılığıyla bu uç noktaya göndermeniz önerilir. Postman, API geliştirme ve test etme için bir yazılımdır. Bir API’ye gönderilen istekleri özelleştirmenize olanak tanır. İstekte GET, PUT, POST, DELETE gibi özel HTTP Fiilleri gönderme ve yetkilendirme veya içerik anlaşması gibi özel başlıklar ekleme gibi özellikler. Ancak basit uç noktamız için tarayıcı aracılığıyla bir GET isteği göndermekte sorun yok.

Tarayıcıda, Merhaba Tutlinks.com mesajını içeren JSON yanıtını göreceksiniz. Başarılı, örnek yanıtla basit bir Web API’si oluşturma konusunda uzmanlaştınız.  Bunu, ücretsiz hesaplarla sınırlı dinozorlar sunan Heroku gibi üretim ortamlarına nasıl dağıtacağınızı anlamanız her zaman önerilir. Bu yetenek, çalışmalarınızı arkadaşlarınıza, iş arkadaşlarınıza göstermenize veya teknik becerilerinizle övünmek için çalışmalarınızı LinkedIn gibi profesyonel ağ sitelerinde paylaşmanıza yardımcı olacaktır.

Heroku için Dağıtım Yapılandırması Procfile Oluşturma

Procfile, Heroku’ya özgü bir dosyadır ve Heroku’da gerçekleşen etkin bir dağıtım sırasında dağıtım yapılandırmaları tarafından okunur. Heroku otomatik olarak Procfile’ın varlığını arar ve içinde bulunan komutları yürütür.

FastAPI uygulamasını Heroku’ya Dağıtma Komutu

Herhangi bir uzantı olmadan Procfile adlı bir dosya oluşturun  . FastAPI uygulamanızı Procfile’daki Heroku’da çalıştırmak için aşağıdaki komutu yerleştirin.

  • web: yanındaki komutla bir web uygulamasını başlatmak için Heroku dağıtım işlemini tanımlamaya yardımcı olacak Procfile komut kuralına özgüdür.
  • gunicorn, uygulamamızı aşağıdaki yapılandırmayla çalışacak şekilde yapılandırdığımız WSGI sunucusudur.
  • -w 4 uygulamamızın gunicorn üzerinde 4 worker process ile çalışmasına ihtiyacımız olduğunu belirtir.
  • -k uvicorn.workers.UvicornWorker, gunicorn’a uygulamayı workers.UvicornWorker worker worker sınıfını kullanarak çalıştırmasını söyler.
  • main:app, FastAPI() uygulamamızın başlatıldığı ana modülümüzdür.

Ana bilgisayarı ve bağlantı noktasını da belirtebilirsiniz. Ancak Heroku bunları otomatik olarak çözecek ve bu demo için ekstra bir yapılandırmaya gerek yok.

Deponuzu GitHub’a gönderme

GitHub, yazılımla ilgili kod dosyalarınızı barındırmak için açık bir platformdur. Kodunuzu herkese açık olacak şekilde yapılandırabilir veya ihtiyacınıza göre özel hale getirebilirsiniz. GitHub’da yeniyseniz, bunun için gidin ve ücretsiz kaydolun. Mevcut projenizi GitHub’a eklemek için bu ayrıntılı öğreticiyi izleyin.

Heroku’da FastAPI Dağıtımını Yapılandırma

Henüz sahip değilseniz ücretsiz bir Heroku hesabı için kaydolun. Heroku, geliştiricilerin uygulamaları tamamen bulutta oluşturmasına, çalıştırmasına ve çalıştırmasına olanak tanıyan bir hizmet olarak platformdur (PaaS). Doğrulanmış bir e-posta hesabıyla kaydolduktan sonra, bir uygulama oluşturmaya devam edin.

Heroku’da uygulama oluşturma ve yapılandırma

Heroku’da Uygulama Oluştur

  • Kayıtlı e-posta ile doğrulanmış Heroku hesabınıza giriş yapın.
  • Kontrol panelinde Yeni uygulama oluştur düğmesine tıklayın. Zaten uygulamalarınız varsa, Yeni’ye tıklayın ve Yeni uygulama oluştur’u seçin.
  • Kullanılabilir bir Uygulama adı verin . Uygulama adının, kendisine kayıtlı tüm kullanıcılardaki diğer tüm Heroku uygulamalarında benzersiz olması gerektiğinden emin olmalısınız. Aksi takdirde Heroku, uygulamayı oluşturmanıza izin vermez.
  • Bir bölge seçin veya Amerika Birleşik Devletleri olarak seçilen varsayılan bölgeye bırakın
  • Dağıtım işlem hattı yapılandırmak istemiyorsanız İşlem hattına ekle seçeneğini yoksayın.
  • Uygulama oluştur düğmesine tıklayın.
  • Ardından Vscode üzerinden aşağıdaki adımları takip ediniz.

Install the Heroku CLI

Download and install the Heroku CLI.

If you haven’t already, log in to your Heroku account and follow the prompts to create a new SSH public key.

Clone the repository

Use Git to clone fastapi-demo1’s source code to your local machine.

Deploy your changes

Make some changes to the code you just cloned and deploy them to Heroku using Git.

GitHub’a bağlanma

  • Dağıtım yöntemi altında GitHub seçeneğini belirleyin ve GitHub’a bağlanın.
  • İlk kez kullanıcıların, deponun gönderildiği hesapta oturum açarak GitHub hesabını bağlaması gerekir. Mevcut kullanıcılar, bir depoda arama yapma seçeneğini otomatik olarak görecektir.
  • Bağlandıktan sonra, bağlanmak için bir depo arayın. GitHub’da yeni bir depo oluştururken verdiğiniz ada göre depoyu arayın.
  • Arama sonuçlarında FastAPI uygulamamızın bulunduğu depoyu bulun ve bağlanın.

GitHub’dan Heroku’da Otomatik Dağıtımı Yapılandırma

Depoya başarıyla bağlandıktan sonra Otomatik Dağıtımları Yapılandır seçeneğini görürsünüz. Ana dağıtıma dağıtılacak bir dal seçin  seçeneğini bırakın ve Otomatik Dağıtımları Etkinleştir’e tıklayın. Bu ayar, yeni kod değişikliklerini ana dala her gönderdiğinizde en son değişiklikleri derleyen ve yayımlayan dağıtımı otomatik olarak tetikler. El ile dağıtma bölümünden, ana olarak dağıtılacak dalın adını girin ve Dalı Dağıt’a tıklayın.

Dağıtım işleminin tamamlanmasını bekleyin. İşiniz bittiğinde, Uygulamanız başarıyla dağıtıldı ifadesini görmeniz gerekir.Heroku’ya dağıtılan ilk Python tabanlı FastAPI uygulamanızı görmek için Görüntüle  düğmesine
tıklayın.????

Video öğretici

FastAPI’nin temellerine aşina olmanız durumunda, FastAPI uygulamasını Heroku’ya nasıl dağıtacağınızı anlamak isteyebilirsiniz. Aşağıdaki eğitim videosu, bunu sadece 6 dakika içinde yapmanız için size rehberlik edecektir.

Source : https://tutlinks.com/create-and-deploy-fastapi-app-to-heroku/#introduction-to-fastapi

Kategori Python
12.12.2023
60 Okunma

Github Uygulama Yükleme Adımları

Github Uygulama Yükleme Adımları

  • GitHub’da Repository (Depo) Oluşturma: İlk olarak, GitHub hesabınıza gidin ve sağ üst köşede bulunan “New” veya “Yeni” butonuna tıklayarak yeni bir repository oluşturun. Repository adını ve isteğe bağlı açıklamayı ekleyin.
  • Git Yükleme: Eğer bilgisayarınızda Git yüklü değilse, Git resmi sitesinden indirip kurun ve bilgisayarınıza yükleyin.
  • Komut Satırını Açma: Git Bash (Windows) veya Terminal (Mac/Linux) gibi bir komut istemcisini açın.
  • Yerel Bir Klasör Oluşturma ve İlgili Yapılandırma: İlgili proje dosyalarını içerecek bir klasör oluşturun ve içine gidin.
  • Git’i Başlatma: Bu klasörü Git ile izlemeye başlatın.
  • Dosyaları Ekleyin: Proje dosyalarını oluşturun veya kopyalayın ve ardından Git’e ekleyin.
  • Commit Yapın: Değişiklikleri onaylayın ve bir commit (işlem) yapın.

  • GitHub Repository’sini Belirleyin: GitHub’daki repository’nin URL’sini belirtin.

    Burada <repository_url> kısmına GitHub’da oluşturduğunuz repository’nin URL’sini eklemeniz gerekiyor. Ayrıca, main yerine kullandığınız ana dal ismini kullanmalısınız; GitHub’da varsayılan olarak genellikle main veya master olarak adlandırılır.

  • Değişiklikleri Yükleyin: Yerelde yaptığınız değişiklikleri GitHub’a yükleyin.

Evet, tabii ki! git push -u origin main komutu, yerelde yaptığınız commitleri uzaktaki bir depoya (genellikle GitHub gibi) göndermek için kullanılır. Bu komutun detayları şu şekildedir:

  • git push: Yereldeki değişiklikleri uzak bir depoya göndermek için kullanılan temel git komutudur.
  • -u origin main: Bu bölümde kullanılan bayraklar ve ifadeler şunlardır:
    • -u: “upstream” anlamına gelir. Bu, yereldeki branch’i uzaktaki bir branch ile eşleştirmek için kullanılır. Ayrıca, bir sonraki git push komutlarında sadece git push şeklinde kullanmanıza olanak tanır.
    • origin: Uzaktaki depoya atıfta bulunulan bir kısaltmadır. Genellikle, projenin orijinal halini saklayan uzak depoya atıfta bulunmak için “origin” kullanılır. Bu ismi projeyi klonlarken varsayılan olarak alırsınız.
    • main: Yereldeki branch’in adıdır. Eğer kullandığınız Git sürümü 2.28 ve üzeriyse, “main” adı genellikle varsayılan ana dal adıdır. Daha eski sürümlerde ise “master” adı daha yaygındır.

Bu komut, yereldeki değişiklikleri “main” adlı yerel dalınızı takip eden uzak depodaki “main” dala gönderir. İlk kez git push -u origin main komutunu kullanıyorsanız, Git sizden kullanıcı adı ve şifrenizi girmenizi isteyebilir.

Yeni bir dosya ekleme işleminden sonra ne yapmalıyım. ?

Yeni bir dosya ekledikten sonra, bu dosyayı Git’e ekleyerek ve bir commit yaparak değişiklikleri kaydetmeniz gerekiyor. Ardından, bu değişiklikleri uzak depoya (örneğin, GitHub’a) göndermek için git push komutunu kullanabilirsiniz. İşte adım adım yapmanız gerekenler:

  • Yeni Dosyayı Ekleyin: Önce, yeni oluşturduğunuz dosyayı Git’e ekleyin. Eğer sadece bu yeni dosyayı ekleyecekseniz:

Eğer tüm dosyaları eklemek istiyorsanız:

  • Commit Yapın: Eklediğiniz dosyayı bir commit yaparak kaydedin. Commit mesajınız, yaptığınız değişikliği açıklamalıdır:

  • GitHub Repo’ya Push Edin: Yaptığınız commit’i uzak depoya göndermek için:

Eğer daha önce -u origin main ile branch’i uzak depoya takip ettiyseniz, sonraki push’larınızda sadece git push komutunu kullanabilirsiniz.

Eğer mevcut bir Git depo klasörünüzdeki tüm geçmişi ve değişiklikleri temizlemek istiyorsanız, aşağıdaki adımları takip edebilirsiniz:

Mevcut Değişiklikleri İptal Etme: Eğer mevcut çalışma dizinizde değişiklikler varsa, bunları iptal edin.


Bu komut, mevcut branch’teki son commit’e geri döner ve tüm değişiklikleri iptal eder.

Mevcut Geçmişi Temizleme:

Uzaktaki Bağlantıyı Kaldırma (Opsiyonel):

Bu komut, uzak depo bağlantısını kaldırır.

Git ile İlgili Dosyaları Silme:

Klasörün içindeki tüm Git ile ilişkili dosyaları silebilirsiniz. Aşağıdaki komutlarla bu işlemi gerçekleştirebilirsiniz:

Eğer uzaktaki sunucudaki bir değişikliği locale çekmek istersek:

 

Kategori Github
11.12.2023
56 Okunma

Docker ile PostgreSQL ve pgAdmin Kurulumu

Docker üzerinde PostgreSQL kurulumu için aşağıdaki komutları çalıştırmamız gereklidir.

Artık 5432 nolu port üzerinden PostgreSQL sunucusuna bağlantı yapabilirsiniz.

pgAdmin kurulumu şu şekilde olacaktır.

Bu işlemlerden sonra hem PostgreSQL hem de pg Admin kurulumu tamamlanmış olacaktır. http://localhost:5050/ adresi üzerinden pgAdmin uygulamasına erişebilirsiniz. Kullanıcı adı ve şifre bilgilerini kullanarak pgAdmin’de oturum açabilirsiniz.

Yeni postgres bağlantısı için docker postgres containerın ip adresine ihtiyacımız vardır. Bunun için aşağıdaki komut ile ip adresine ulaşabilirsiniz.

Eğer aynı ağda oluşturmak istiyorsak;

Durdurduktan sonra çaluşmasını istiyorsak;

pgadmin ile giriş yaptıkran sonra server oluştur, açılan ekrandan name kısmına bir server name belirliyoruz. Yan taba geçip host ismini “localhost” yerine “mypostgres-sanjeev” veriyoruz. Yukarda oluşturduğumuz postgress imaj ismi. Kolay gelsin. Syn. Osman Buran’a teşekkürler.

Kaynak:  https://osmanburan.com/docker-ile-postgresql-kurulumu/

Kategori Docker
21.11.2023
23 Okunma

LOF (Local Outlier Factor)

LOF (Local Outlier Factor), yerel aykırı değer faktörü anlamına gelir. LOF algoritması, veri kümesindeki her bir veri noktasının yerel yoğunluk profiline dayanarak aykırı değerleri tespit etmek için kullanılan bir aykırı değer tespit algoritmasıdır.

LOF algoritması, bir veri noktasının çevresel komşuluk yapısını değerlendirir ve bu noktanın yerel yoğunluk seviyesini hesaplar. Bir veri noktasının yerel yoğunluğu, çevresindeki diğer noktalara olan yakınlığına göre belirlenir. Eğer bir veri noktası çevresindeki diğer noktalara göre beklenenden uzak bir şekilde izole ise, bu nokta bir aykırı değer olarak etiketlenir.

LOF algoritmasının temel prensibi şu adımlarla çalışır:

  • Her veri noktası için, belirli bir komşuluk yarıçapı içindeki diğer noktaların sayısı belirlenir. Bu komşuluk yarıçapı, kullanıcı tarafından belirlenir veya otomatik olarak belirlenir.
  • Her bir veri noktasının LOF değeri hesaplanır. LOF değeri, bir veri noktasının çevresel komşularının yoğunluğu ile kendi yoğunluğu arasındaki oranı ifade eder. Daha yüksek LOF değerleri, o veri noktasının aykırı olduğunu gösterir.
  • LOF değerleri incelenir ve kullanıcının belirlediği bir eşik değere göre aykırı değerler tespit edilir.

LOF algoritması, veri madenciliği ve aykırı değer tespiti gibi alanlarda yaygın olarak kullanılan bir algoritmadır. Aykırı değerlerin tespiti ve analizi, dolaylı olarak hile tespiti, dolandırıcılık analizi, ağ güvenliği, sağlık analizi ve daha pek çok uygulama alanında kullanılabilir.

 

“Diamonds” veri setinde LOF algoritması ile aykırı değerleri tespit edelim. “diamonds” veri seti, seaborn kütüphanesinde yer alan örnek bir veri setidir ve içinde elmasların özelliklerini içeren bilgiler bulunmaktadır.

Öncelikle, “diamonds” veri setini yükleyip inceleyelim ve LOF algoritması ile aykırı değerleri tespit edelim.

Bu kod örneğinde, “carat” (kütle) ve “price” (fiyat) sütunlarını kullanarak LOF algoritması ile aykırı değerleri tespit ediyoruz ve scatter plot ile görselleştiriyoruz. Aykırı değerler, kırmızı renkle işaretlenmiştir. Aykırı değerlerin tespiti için kullanılan LOF parametrelerini (örneğin, n_neighbors ve contamination) değiştirerek sonuçları gözlemleyebilirsiniz.

Kategori Python
18.10.2023
68 Okunma