14.08.2024

NestJS: Dinamik Modüller

NestJS uygulamalarına kendi modüllerimi yazarken pek çok durumda statik modüllerden faydalanıyorum. Daha önceki yazımda modüllerden bahsederken de sadece statik modül kullanımından bahsetmiştim. NestJS dokümanlarının pek çok yerinde de yine statik kullanım örneği ile karşılaşmanız mümkün. Dinamik modüller ile ilgili detaylı bilgiye ise doküman içindeki bu sayfadan ulaşabilirsiniz. 

Daha önceki yazımda da bahsettiğim statik modüllerin, import ve export edilerek ilişkilendirilmesine "Static Module Binding" (Statik Modül Bağlaması) deniyor. Statik bir modül import edildiğinde, olduğu gibi kullanılabiliyor olmakla birlikte, import edilen modülün yapılandırmasına etki etmek mümkün olmuyor. Ancak genel amaçlı bir modül geliştirdiğinizde ve bu modülün farklı yerlerde import edildiğinde farklı davranışlar sergilemesi gerekebiliyor. Nest'in Configuration modülünü ele alalım. Ortam değişkenlerini saklamak için kullandığımız .env dosyası tüm projelerimizde aynı yerdeyse statik bir Configuration modülü yeterli olacaktır. Ancak dosya farklı projelerde farklı yollarda yer alıyorsa bu dosya yolunu Configuration modülünü import ederken parametre olarak geçme ihtiyacı doğar. İşte dinamik modüller burada devreye giriyor.

Aşağıda ConfigModule modülünün, AppModule'e nasıl import edildiğini görebilirsiniz:

import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { ConfigModule } from './config/config.module';

@Module({
  imports: [ConfigModule.register({ folder: './config' })],
  controllers: [AppController],
  providers: [AppService],
})
export class AppModule {}

7.08.2024

DNS Nedir?


DNS (Domain Name System) internetin telefon defteri olarak düşünülebilir. Günümüzde telefon numaralarını cep telefonlarımız dışında bir yerde saklamak ya da ezberlemek (!) durumunda değiliz. Geçmişte durum böyle değildi. Küçük defterlerimize telefon numaralarını yazar ve hata çok kullandığımız telefon numaralarını ezberimizde tutardık. O zamanlardan ezberlediğim bazı numaralar hala aklımdadır.

 

Elbette bir kişiye ulaşmak için bir çok sayıyı aklında tutmak ve her ihtiyaç duyulduğunda bu numaraları doğru sırada bir cihaza girmek çok pratik değil. Aynı şey internet için de geçerli. Daha önce bu yazıda bahsettiğim gibi, internete bağlı cihazlar bir IP adresine sahiptir. 212.154.234.45 gibi bir sayı dizisinden ya da IPv6 kullanan cihazlar için 2400:cb00:2048:1::c629:d7a2 gibi bir alfanümerik diziden oluşan bu IP adreslerini, ziyaret etmek istediğimiz her web sitesi ya da sunucu için ezberlemek zorunda olsak hiç pratik olmazdı. Bir bilgisayar başında olduğumuz için ilk çözüm arayışı da bu sayı dizisini daha sonra anlayacağımız bir isimle birlikte bilgisayarımızda saklamak olurdu. Örneğin aşağıdaki gibi bir tablo hazırlayabilirdik.