27 Haziran 2025 Cuma

Türksat Uydularının Kronolojik Hikayesi

Merhaba Webkolog okuyucuları! Uzun yıllardır uzay teknolojileri ve özellikle de uydularla ilgili gelişmeleri büyük bir ilgiyle takip ediyorum. Türkiye'nin uzaydaki serüveni, ilk denemelerden günümüzdeki gelişmiş uydulara kadar oldukça heyecan verici bir yolculuk. Bugün sizlere, bu yolculuğun en önemli kilometre taşlarından olan Türksat uydularını kronolojik sırayla anlatmak istiyorum. Kim bilir, belki de bir gün hep birlikte uzayın derinliklerine daha da ilerleriz!

Ülkemizin uzaydaki sesi ve yüzü olan Türksat uyduları, yıllar içinde gelişen teknolojiyle birlikte bize çok daha geniş kapsama alanları ve yüksek hızlı iletişim imkanları sundu. Gelin, bu uyduların her birine yakından bakalım.


Ömrünü Tamamlamış Uydularımız

Öncelikle uzaydaki görevlerini tamamlamış ancak Türkiye'nin uzay tarihinde önemli bir yere sahip olan uydularımıza değinelim:

Türksat 1A: Talihsiz İlk Adım

Takvimler 24 Ocak 1994'ü gösterdiğinde, TSİ 23.37'de Fransız Guyanası'ndaki Kourou'dan Ariane 4 roketiyle uzaya fırlatılan ilk göz ağrımız Türksat 1A'nın heyecanını hepimiz hissetmiştik. Ancak ne yazık ki, fırlatıcı roketin üçüncü katındaki bir arıza nedeniyle uydu, fırlatıldıktan sadece 12 dakika 12 saniye sonra Atlas Okyanusu'na düştü. Büyük bir üzüntü yaşamamıza rağmen, sigortalı olması sayesinde yapım maliyeti sigorta şirketinden karşılandı ve yerine hızla Türksat 1B'nin yapımına başlandı. Bu talihsiz olay, bizi yıldırmadı, aksine daha da kenetledi.

Türksat 1B: Türkiye'nin İlk Başarısı

İşte bu, benim için gerçek bir dönüm noktasıydı! Türksat 1B, Türkiye'nin uzaya başarıyla fırlatılan ve yörüngeye oturan ilk uydusu oldu. 10 Ağustos 1994 tarihinde fırlatılan bu yapay iletişim uydusu, TÜRKSAT A.Ş. tarafından işletilerek 1994-2006 yılları arasında tam 12 yıl boyunca aktif hizmet verdi. Alcatel Alenia Space Industries tarafından üretilen Türksat 1B, 16 Ku transponder (6 geniş bant 72 MHz ve 10 dar bant 36 MHz) kapasitesiyle Türkiye, Avrupa ve Orta Asya'yı kapsama alanına alarak bizlere önemli bir iletişim köprüsü kurdu. 2006 yılında, 31.3° Doğu boylamındaki görevi sona erdiğinde, uzaydaki ilk gerçek başarımızı kutluyorduk.

Türksat 1C: Görev Değişiklikleri ve Veda

Türkiye'ye ait bir diğer önemli uydu olan Türksat 1C, 10 Temmuz 1996 tarihinde yine Fransız Guyanası'ndan Ariane 4 ticari roketi ile uzaya fırlatıldı. 42.0 Doğu boylamında görevine başlayan bu uydu, TÜRKSAT tarafından işletildi. 16 Temmuz 2008 akşam saatlerinde tüm sinyal trafiği Türksat 3A uydusuna aktarıldı ve Türksat 1C'nin yeni görev yeri 31.0° Doğu boylamı olarak belirlendi. 9 adet dar bant 36 MHz, 2 adet orta bant 54 MHz ve 5 adet geniş bant 72 MHz'lik transponder kapasitesiyle Batı'da Türkiye ve Avrupa'yı, Doğu'da ise Türkiye ve Orta Asya bölgelerini kapsıyordu. Ne yazık ki, 27 Ekim 2008 saat 02:00'da tüm televizyon ve internet yayıncılığına son verildi ve 23 Eylül 2010 tarihinde de tüm görevi resmen sona erdi.

Türksat 2A (Eurasiasat 1): Uzun Süreli Bir Misafir

Türksat 2A, bilinen diğer adıyla Eurasiasat 1, 42 derece doğu boylamında görev yapmış önemli uydularımızdan biriydi. Türkiye'ye ait olan ve Türksat 3A ile aynı boylamda yer alan bu uydu, 10 Ocak 2001 tarihinde fırlatıldı ve 1 Şubat 2001 itibarıyla göreve başladı. Yerli ve yabancı televizyon kanalları ile diğer uydu hizmetlerini başarıyla sunan Türksat 2A'nın görev süresi 27 Eylül 2016 tarihinde tamamlandı. Uzun yıllar bizlere kesintisiz hizmet veren bu uyduyu da her zaman minnetle anacağım.


Aktif Haberleşme Uydularımız: Geleceğe Uzanan Ellerimiz

Şimdi gelelim, günümüzde bizlere kesintisiz iletişim imkanı sunan aktif uydularımıza. Bu uydular, Türkiye'nin uzaydaki gücünü ve teknolojik kapasitesini gözler önüne seriyor.

Türksat 3A: Yeni Neslin Başlangıcı

Türksat 3A, Türkiye'nin 13 Haziran 2008 tarihinde uzaya gönderdiği yeni nesil haberleşme uydusudur. 42 derece doğu yörüngesinde görev yapan bu uydunun yapımını Thales Alenia Space şirketi üstlendi. Tam 24 adet Ku band transponder kapasitesine sahip olan Türksat 3A'nın yapımında 22 Türk mühendisi görev alması, beni ayrıca gururlandırmıştı. Fransız Guyanası'ndaki Kourou Guyana Uzay Merkezi'nden İngiliz Skynet 5C uydusu ile birlikte 13 Haziran 01:05'te Ariane 5 roketince uzaya gönderilen bu uydu, 3 çıkış (Doğu, Batı, Türkiye) ve 2 iniş (Doğu, Batı) kapsama alanına sahip. Operasyonel ömrü 20 yıl olarak tasarlanan ve diğer Türksat uydularından %25 daha uzun ömürlü olması beklenen Türksat 3A, 16 Temmuz 2008 akşam saatlerinde Türksat 1C uydusundaki tüm sinyal trafiğini devralarak göreve başladı. 27 Ekim 2008 tarihinde ise Türksat 2A üzerinden yayın yapan kanalların frekansları da bu uyduya taşındı ve böylece birçok yayın tek bir uydu üzerinden bize ulaşmaya başladı.

Türksat 4A: Teknolojik Atılım

Türksat 4A, yapımında Türk teknik elemanlarının da yer aldığı, 14 Şubat 2014 tarihinde saat 23.09'da fırlatılan önemli bir haberleşme uydumuzdur. Japon Mitsubishi Electric firmasının geliştirdiği DS2000 platformu üzerinde inşa edilen bu uydu, Kazakistan'da bulunan Baykonur Uzay Üssü'nden Proton taşıyıcı roketiyle uzaya gönderildi. Yaklaşık 4 ay boyunca 50° doğu yörüngesinde test işlemleri yapıldıktan sonra, 9 Haziran 2014 tarihinde test yörüngesinden ayrılıp görev yapması planlanan 42° doğu yörüngesine yerleşti. Haziran 2014 sonu itibarıyla hizmet vermeye başlayan Türksat 4A'ya geçiş yapacak olan televizyon ve radyo yayınlarının frekans değişiklikleri, 17 Eylül 2014 tarihini 18 Eylül 2014 tarihine bağlayan gece yarısı gerçekleştirildi. Bu geçiş, yayıncılık sektöründe büyük bir değişimi beraberinde getirdi.

Türksat 4B: Hızlı İnternetin Anahtarı

Türksat 4B de yapımında Türk teknik elemanlarının yer aldığı bir diğer önemli haberleşme uydumuz. Üretim ve testleri Japon Mitsubishi Electric (MELCO) firmasının Kamakura'daki uydu üretim merkezinde yapılan bu uydunun yapımı 30 Haziran 2014 tarihinde tamamlandı. Başlangıçta 2015 yılının son çeyreğinde fırlatılması öngörülen uydu, proton roketinde yaşanan sorunlar nedeniyle 16 Ekim 2015 günü TSİ 23:40'ta Kazakistan'ın Baykonur Uzay Üssü'nden fırlatıldı. Yine DS2000 platformu üzerinde inşa edilen Türksat 4B, haberleşme, radyo ve TV yayınlarıyla birlikte özellikle hızlı genel ağ erişimi sağlamasıyla öne çıkıyor. İnternet hızımızın artmasında bu uydunun payı büyük.

Türksat 5A: Yeni Nesil Elektrikli İtki Sistemi

8 Ocak 2021 tarihinde Türkiye saati ile 05.15'te SpaceX firmasının Falcon 9 roketiyle ABD'deki Cape Canaveral Üssü'nden uzaya gönderilen Türksat 5A, benim için heyecan verici bir gelişmeydi. AIRBUS D&S (Defence and Space) firması tarafından üretilen ve 31˚ Doğu yörüngesinde hizmet verecek bu uyduyla Türkiye'nin aktif haberleşme uydu sayısı dörde, toplam uydu sayısı yediye çıktı. Tamamen 12 kilowatt elektrik güç birimi ile çalışan Eurostar-3000EOR platformu üstüne kurulan, yeni nesil elektrikli itki sistemine sahip ve 3,5 ton ağırlığındaki bu uydu, 30 yıl boyunca yörüngedeki frekans ve yörünge haklarımızı güvence altına almayı hedefliyor. Türkiye, Avrupa, Orta Doğu, Kuzey Afrika, Orta Batı Afrika, Güney Afrika, Akdeniz, Ege Denizi ve Karadeniz'i kapsayan bir coğrafyada 1728 MHz kapasiteyle TV yayıncılığı ve veri haberleşmesi hizmetleri sunuyor. Bu uydunun fırlatılmasıyla, uzaydaki varlığımız daha da güçlendi.

Türksat 5B: En Güçlü Halkamız

Türksat 5B, 19 Aralık 2021'de yine SpaceX firmasına ait Falcon 9 roketi ile Cape Canaveral/ABD'den uzaya gönderilen ticari bir haberleşme uydusu. AIRBUS D&S (Defence and Space) tarafından üretilen ve 42˚ Doğu yörüngesinde hizmet veren bu uyduyla Türkiye'nin aktif haberleşme uydu sayısı beşe, toplam uydu sayısı ise sekize çıktı. Sabit Uydu Servisi (FSS) sınıf uydulara göre en az 20 kat fazla kapasite verimliliği bulunan Yüksek Verimli Uydu (High Throughput Satellite- HTS) sınıfı kategorisinde olan ve faydalı yük kapasitesi ile Türksat uydu filosunun en güçlüsü olan Türksat 5B, Orta Doğu’nun tamamı, Basra Körfezi, Kızıldeniz, Akdeniz, Kuzey ve Doğu Afrika, Nijerya, Güney Afrika ve yakın komşu ülkelerini içeren geniş bir kapsama alanında hizmet verecek. Ka-Bant faydalı yükü ile toplamda 55 Gbps’den daha fazla veri iletim kapasitesi sağlanması ve hâlihazırdaki mevcut Ka-bant veri iletim kapasitesinin 15 kattan fazla artması, özellikle havacılık ve denizcilik sektörlerinde uzaydaki kapasitenin etkin bir şekilde kullanılmasına olanak sağlayacak. Ayrıca, bu uydu sayesinde Türkiye'nin karasal altyapıyla erişilemeyen yerlere de internet altyapısı kurulabilecek. 35 yıldan fazla manevra ömrüne sahip olan ve yaklaşık 4,5 ton fırlatma ağırlığı ile 15 kW güç kapasitesindeki bu uydu, yeni nesil elektrikli itki sistemi barındırıyor. Türksat 5B Uydu Projesi'nde yerli uydu endüstrisinin geliştirilmesi ve desteklenmesi amacıyla hayata geçirilen Yerli Endüstri Katkı Programı kapsamında ASELSAN A.Ş. tarafından tasarlanan iki adet haberleşme ekipmanının Türkiye'de üretilerek Türksat 5B'de kullanılması, bana göre yerli üretimdeki en önemli adımlardan biriydi.

Türksat 6A: Tamamen Milli Gururumuz

Türksat 6A, SpaceX işbirliğiyle 2024 yılında fırlatılan, tamamen milli imkanlarla geliştirilen haberleşme uydumuz olması sebebiyle benim için çok özel bir anlam taşıyor. TÜBİTAK UZAY, RASAT ve GÖKTÜRK-2 projelerinde kazanılan uzay alanındaki tecrübelerden de faydalanarak, proje ortakları TUSAŞ, ASELSAN ve CTech firmaları ile birlikte geliştirilen bu milli haberleşme uydu platformu, 15 Aralık 2014 tarihinde başlayan ve toplam süresi 60 ay olarak planlanan bir projenin ürünü. Yörüngede görev yapacak olan uçuş modelinin yanı sıra yer testlerinde kullanılmak üzere sistem seviyesinde ilave modeller de geliştiriliyor. TÜRKSAT 6A Projesine, TÜBİTAK ve “Ulaştırma, Denizcilik ve Haberleşme Bakanlığı” tarafından fon sağlanıyor ve yörüngede devreye alma işlemlerinin başarı ile tamamlanmasından sonra uydunun işleticisi ve sahibi TÜRKSAT A.Ş. olacak. Montaj, entegrasyon ve test faaliyetleri TUSAŞ'da kurulu bulunan Uzay Sistemleri Entegrasyon ve Test Merkezi'nde gerçekleştirilen bu uydu, 42° doğu jeostatik yörüngeye yerleştirilecek ve kütlesi 4 tondan fazla olacak. Ku-Bant, Ku-BSS Bant, Ka-Bant ve Q/V Bant frekans bantlarında uplink ve downlink haberleşme kanallarını barındıracak olan TÜRKSAT 6A'nın, teknolojik yetkinliği ile Türkiye'ye güvenli veri iletişimi alanında önemli oranda kapasite artırımı ve kritik avantajlar getirmesi hedefleniyor. Bu uydu, 2024 yılı Aralık ayı sonunda kalıcı yörüngesine ulaştı ve uzaydaki milli bağımsızlığımızın en büyük kanıtı oldu.


Türksat Uyduları Genel Bakış Tablosu

Bu kadar bilginin ardından, Türksat uydularını daha rahat karşılaştırmanız için önemli bilgileri bir araya getirdiğim bir liste hazırladım:


Ömrünü Tamamlamış Uydular
  • Türksat 1A
    • Fırlatma Tarihi: 24 Ocak 1994
    • Hizmet Süresi: Başarısız fırlatma (12 dakika 12 saniye sonra düştü)
    • Durumu: Başarısız oldu ve görevi tamamlayamadı.
    • Üreten Firma: Alcatel Alenia Space Industries
    • Fırlatma Yeri: Kourou, Fransız Guyanası
    • Fırlatan Roket: Ariane 4
    • Özellikler: Fırlatıcı roketin üçüncü katındaki arıza nedeniyle Atlas Okyanusu'na düştü. Sigortalı olduğu için yapım maliyeti sigorta şirketinden alındı ve yerine Türksat 1B yapıldı.
  • Türksat 1B
    • Fırlatma Tarihi: 10 Ağustos 1994
    • Hizmet Süresi: 1994-2006 (12 yıl aktif hizmet)
    • Durumu: Pasif, görevi sona ermiştir.
    • Üreten Firma: Alcatel Alenia Space Industries
    • Fırlatma Yeri: Kourou, Fransız Guyanası
    • Fırlatan Roket: Ariane 4
    • Yörünge: 31.3° Doğu boylamı
    • Frekans Bantları: 16 Ku transponder (6 geniş bant 72 MHz, 10 dar bant 36 MHz)
    • Kapsama Alanı: Türkiye, Avrupa, Orta Asya
    • Ek Bilgi: Türkiye'nin ilk başarılı fırlatılmış ve yörüngeye oturmuş uydusudur.
  • Türksat 1C
    • Fırlatma Tarihi: 10 Temmuz 1996
    • Hizmet Süresi: 1996-2010 (14 yıl görevde)
    • Durumu: Pasif, görevi sona ermiştir.
    • Üreten Firma: Alcatel Alenia Space Industries
    • Fırlatma Yeri: Kourou, Fransız Guyanası
    • Fırlatan Roket: Ariane 4
    • Yörünge: İlk olarak 42.0° Doğu, daha sonra 31.0° Doğu boylamı
    • Frekans Bantları: 9 adet dar bant 36 MHz, 2 adet orta bant 54 MHz, 5 adet geniş bant 72 MHz transponder
    • Kapsama Alanı: Batı'da Türkiye ve Avrupa, Doğu'da Türkiye ve Orta Asya
    • Ek Bilgi: 16 Temmuz 2008'de tüm sinyal trafiği Türksat 3A'ya aktarıldı. 27 Ekim 2008'de tüm TV ve internet yayıncılığına son verildi.
  • Türksat 2A (Eurasiasat 1)
    • Fırlatma Tarihi: 10 Ocak 2001
    • Hizmet Süresi: 2001-2016 (15 yıl aktif hizmet)
    • Durumu: Pasif, görevi sona ermiştir.
    • Üreten Firma: Thales Alenia Space
    • Fırlatma Yeri: Kourou, Fransız Guyanası
    • Fırlatan Roket: Ariane 4
    • Yörünge: 42.0° Doğu boylamı (Türksat 3A ile aynı boylamda)
    • Özellikler: Yerli ve yabancı televizyon kanalları ile diğer uydu hizmetlerini sağlamıştır.

Aktif Haberleşme Uyduları
  • Türksat 3A
    • Fırlatma Tarihi: 13 Haziran 2008
    • Hizmet Süresi: 2008-Aktif (Operasyonel ömrü 20 yıl olarak tasarlanmıştır)
    • Durumu: Aktif
    • Üreten Firma: Thales Alenia Space (22 Türk mühendisi görev almıştır)
    • Fırlatma Yeri: Kourou Guyana Uzay Merkezi, Fransız Guyanası
    • Fırlatan Roket: Ariane 5 (İngiliz Skynet 5C ile birlikte fırlatıldı)
    • Yörünge: 42.0° Doğu boylamı
    • Frekans Bantları: 24 adet Ku band transponder
    • Kapsama Alanı: 3 çıkış (Doğu, Batı, Türkiye) ve 2 iniş (Doğu, Batı)
    • Ek Bilgi: Türksat 1C ve Türksat 2A'daki sinyal trafiğini devralmıştır. Diğer Türksat uydularından %25 daha uzun ömürlüdür.
  • Türksat 4A
    • Fırlatma Tarihi: 14 Şubat 2014
    • Hizmet Süresi: 2014-Aktif
    • Durumu: Aktif
    • Üreten Firma: Japon Mitsubishi Electric (DS2000 platformu üzerinde inşa edildi)
    • Fırlatma Yeri: Baykonur Uzay Üssü, Kazakistan
    • Fırlatan Roket: Proton
    • Yörünge: 42.0° Doğu boylamı (Yaklaşık 4 ay boyunca 50° doğu yörüngesinde test edilmiştir.)
    • Özellikler: Yapımında Türk teknik elemanları da yer almıştır. 17 Eylül 2014 tarihinde frekans geçişleri yapılmıştır.
  • Türksat 4B
    • Fırlatma Tarihi: 16 Ekim 2015
    • Hizmet Süresi: 2015-Aktif
    • Durumu: Aktif
    • Üreten Firma: Japon Mitsubishi Electric (MELCO) (DS2000 platformu üzerinde inşa edildi)
    • Fırlatma Yeri: Baykonur Uzay Üssü, Kazakistan
    • Fırlatan Roket: Proton
    • Özellikler: Haberleşme, radyo ve TV yayınlarıyla birlikte hızlı genel ağ erişimi sağlamaktadır.
  • Türksat 5A
    • Fırlatma Tarihi: 8 Ocak 2021
    • Hizmet Süresi: 2021-Aktif (30 yıl yörünge haklarını güvence altına alması bekleniyor)
    • Durumu: Aktif
    • Üreten Firma: AIRBUS D&S (Defence and Space)
    • Fırlatma Yeri: Cape Canaveral Üssü, ABD
    • Fırlatan Roket: SpaceX Falcon 9
    • Yörünge: 31.0° Doğu boylamı
    • Frekans Bantları: Ku-Band (1728 MHz kapasite)
    • Özellikler: Yeni nesil elektrikli itki sistemine ve 3,5 ton ağırlığa sahiptir. Türkiye, Avrupa, Orta Doğu, Kuzey Afrika, Orta Batı Afrika, Güney Afrika, Akdeniz, Ege Denizi ve Karadeniz'i kapsayan bir coğrafyada TV yayıncılığı ve veri haberleşmesi hizmetleri sunmaktadır.
  • Türksat 5B
    • Fırlatma Tarihi: 19 Aralık 2021
    • Hizmet Süresi: 2021-Aktif
    • Durumu: Aktif
    • Üreten Firma: AIRBUS D&S (Defence and Space)
    • Fırlatma Yeri: Cape Canaveral, ABD
    • Fırlatan Roket: SpaceX Falcon 9
    • Yörünge: 42.0° Doğu boylamı
    • Frekans Bantları: Ka-Bant (HTS), Ku-Band (Toplamda 55 Gbps’den fazla veri iletim kapasitesi)
    • Özellikler: Sabit Uydu Servisi (FSS) sınıf uydulara göre en az 20 kat fazla kapasite verimliliği olan Yüksek Verimli Uydu (HTS) sınıfıdır. Orta Doğu’nun tamamı, Basra Körfezi, Kızıldeniz, Akdeniz, Kuzey ve Doğu Afrika, Nijerya, Güney Afrika ve yakın komşu ülkelerini kapsar. Havacılık ve denizcilik sektörlerinde kullanılacak kapasiteye sahiptir. Yerli Endüstri Katkı Programı kapsamında ASELSAN A.Ş. tarafından üretilen iki adet haberleşme ekipmanı kullanılmıştır. Yaklaşık 4,5 ton fırlatma ağırlığı ve 15 kW güç kapasitesine sahiptir.
  • Türksat 6A
    • Fırlatma Tarihi: 2024 (Aralık ayı sonunda yörüngesine ulaştı)
    • Hizmet Süresi: 2024-Aktif
    • Durumu: Aktif
    • Üreten Firma: TÜBİTAK UZAY, TUSAŞ, ASELSAN, CTech (Tamamen milli imkanlarla geliştirilmiştir)
    • Fırlatma Yeri: Cape Canaveral, ABD
    • Fırlatan Roket: SpaceX
    • Yörünge: 42.0° Doğu jeostatik yörünge
    • Frekans Bantları: Ku-Bant, Ku-BSS Bant, Ka-Bant ve Q/V Bant
    • Özellikler: Milli haberleşme uydu platformudur. Montaj, entegrasyon ve test faaliyetleri TUSAŞ'da yapılmıştır. Kütlesi 4 tondan fazladır. Türkiye'ye güvenli veri iletişimi alanında önemli oranda kapasite artırımı ve kritik avantajlar getirmesi hedeflenmektedir.

Gördüğünüz gibi, Türkiye'nin uzaydaki yolculuğu oldukça ilerledi ve her geçen gün yeni başarılara imza atılıyor. Uzay teknolojileri, sadece iletişim için değil, aynı zamanda savunma, gözlem ve bilimsel araştırmalar için de büyük önem taşıyor. Ülkemizin bu alandaki gelişimini takip etmek gerçekten heyecan verici.

Bu makalede sizlere Türksat uydularının kronolojik hikayesini ve teknik detaylarını elimden geldiğince aktarmaya çalıştım. Umarım ufkunuzu açan ve keyifli bir okuma olmuştur.

Webkolog'u takipte kalın!

Hepinize bol iletişimli günler dilerim!

21 Haziran 2025 Cumartesi

CSS'e Gelen Yeni Özellikler

Merhaba Webkolog dostlarım!

CSS dünyası sürekli gelişiyor ve biz web geliştiricileri için hayatı kolaylaştıran, daha güçlü ve esnek araçlar sunan yeni özellikler gelmeye devam ediyor. Bugün sizlere son zamanlarda dikkatimi çeken ve bence kodlama deneyiminizi çok daha keyifli hale getirecek bazı yeniliklerden bahsetmek istiyorum. Hazırsanız, bu yeniliklere birlikte göz atalım!


1. İç İçe CSS (Nesting): Daha Okunabilir ve Modüler Kodlar

Sass gibi pre-processor'lardan aşina olduğumuz iç içe yazım (nesting) özelliği, artık saf CSS'e de geldi! Bu sayede, ilgili CSS kurallarını birbirinin içine yazarak kodunuzu daha düzenli, okunabilir ve modüler hale getirebilirsiniz. Bu özellik, özellikle büyük projelerde stil yönetimi açısından harika bir kolaylık sağlıyor.

Eskiden:

button {
    background-color: black;
}
button:hover {
    background: white;
}

Yerine şimdi iç içe yazarak:

button {
    background-color: black;
    &:hover {
        background: white;
    }
}

Gördüğünüz gibi, :hover pseudo-class'ını doğrudan button kuralının içine yazabildik. Bu sadece stilin hangi elemente ait olduğunu görsel olarak netleştirmekle kalmıyor, aynı zamanda kod tekrarını da azaltıyor.


2. Daha Basit Medya Sorguları: Okunabilirlik ve Esneklik

Duyarlı tasarımlar için olmazsa olmaz medya sorguları da yeni ve daha sezgisel bir sözdizimine kavuştu. Artık min-width, max-width gibi ifadeler yerine matematiksel operatörleri kullanarak medya sorgularını daha kısa ve anlaşılır bir şekilde yazabiliyoruz. Bu yenilik, özellikle karmaşık medya sorguları yazarken hayat kurtarıcı olabilir.

Eskiden:

@media (min-width: 400px) { /* Kodlar buraya */ }
@media (max-width: 600px) { /* Kodlar buraya */ }
@media (min-width: 400px) and (max-width: 600px) { /* Kodlar buraya */ }
@media (width: 500px) { /* Kodlar buraya */ }

Yerine şimdi yeni sözdizimi ile:

@media (width >= 400px) { /* Kodlar buraya */ }
@media (width <= 600px) { /* Kodlar buraya */ }
@media (400px <= width <= 600px) { /* Kodlar buraya */ }
@media (width = 500px) { /* Kodlar buraya */ }

Bu yeni syntax, sorgularınızı çok daha akıcı ve okunabilir hale getiriyor, değil mi?


3. color-scheme ve light-dark(): Koyu Mod Yönetimi Artık Çok Kolay!

Koyu mod (dark mode) desteği günümüz web siteleri için neredeyse bir standart haline geldi. CSS'e gelen color-scheme özelliği ve light-dark() fonksiyonu sayesinde, kullanıcıların tercih ettiği renk şemasına göre stil tanımlamak artık çok daha basit ve doğrudan CSS üzerinden yapılabiliyor. Bu, JavaScript'e bağımlılığı azaltarak performansı da artırıyor.

Eskiden:

body {
    background-color: white;
    color: black;
}
@media (prefers-color-scheme: dark) {
    body {
        background-color: black;
        color: white;
    }
}

Yerine şimdi color-scheme ve light-dark() kullanarak:

:root {
    color-scheme: light dark; /* Hem açık hem de koyu modu destekler */
}
body {
    background-color: light-dark(white, black); /* Açık modda beyaz, koyu modda siyah */
    color: light-dark(black, white); /* Açık modda siyah, koyu modda beyaz */
}

Bu yöntemle, tek bir satırda hem açık hem de koyu mod için renklerinizi tanımlayabiliyorsunuz. Muhteşem bir kolaylık!

Gördüğünüz gibi, CSS her geçen gün daha da güçleniyor ve biz geliştiricilere daha fazla esneklik sunuyor. Bu yeni özellikler, kodlarımızı daha temiz, daha verimli ve daha bakımı kolay hale getirmemize yardımcı oluyor. Bu yenilikleri projelerinizde denemekten çekinmeyin, eminim çok seveceksiniz.

Webkolog'u takipte kalın!

Hepinize bol kodlu ve keyifli öğrenme süreçleri dilerim!

15 Haziran 2025 Pazar

En İyi CSS Kısayolları

Merhaba Webkolog takipçileri!

Bugün sizlere CSS kodlama süreçlerinizi hızlandıracak, daha temiz ve okunabilir kodlar yazmanızı sağlayacak harika kısayollardan bahsetmek istiyorum. Emin olun, bu kısayollar hem zamandan tasarruf etmenizi sağlayacak hem de kod kalitenizi artıracak. Hazırsanız başlayalım!


1. min() ve max() ile Duyarlı Boyutlandırma

Elementlerin genişliğini veya yüksekliğini belirli sınırlar içinde tutmak istediğinizde min-width, max-width gibi özellikleri sıklıkla kullanırız. Ancak min() ve max() fonksiyonları, bu işi çok daha kısa ve dinamik bir şekilde yapmanızı sağlar.

Eskiden:

.bolum {
    width: 100px;
    min-width: 50px;
}

Yerine şimdi min() kullanarak:

.bolum {
    width: min(100px, 50px); /* Hangisi daha küçükse onu kullanır */
}

Burada min(100px, 50px), genişliğin 50px'ten küçük olmamasını sağlar. Benzer şekilde max() ile de belirli bir değerin altına düşmemesini sağlayabilirsiniz.


2. clamp() ile Font Boyutlarında Tam Kontrol

Font boyutlarını duyarlı hale getirirken minimum, optimum ve maksimum değerler belirlemek oldukça yaygındır. clamp() fonksiyonu, bu üç değeri tek bir satırda tanımlamanıza olanak tanır ve böylece daha esnek ve yönetilebilir tipografi elde edersiniz.

Eskiden:

.bolum {
    font-size: 16px;
    max-font-size: 20px;
    min-font-size: 12px;
}

Yerine şimdi clamp() kullanarak:

.bolum {
    font-size: clamp(12px, 1rem, 20px); /* min, ideal, max */
}

Bu örnekte, font boyutu 12px ile 20px arasında değişecek ve ideal olarak 1rem olacaktır. Ekran boyutuna göre otomatik olarak ayarlanır.


3. repeat() ile Arka Plan Desenlerini Tekrar Etme

Arka plan resimlerini belirli bir düzende tekrarlamak istediğimizde background-repeat özelliğini kullanırız. Ancak repeat() fonksiyonu, bu işlemi daha spesifik ve fonksiyonel bir şekilde yapmanızı sağlar, özellikle Grid ve Flexbox düzenlerinde daha fazla kontrol sunar.

Eskiden:

.bolum {
    background-image: url('image.png');
    background-repeat: repeat-x;
}

Yerine şimdi repeat() kullanarak (genellikle grid-template-columns veya grid-template-rows ile kullanılır):

.container {
    display: grid;
    grid-template-columns: repeat(3, 1fr); /* 3 eşit genişlikte sütun oluşturur */
}

Verdiğiniz örnekteki gibi bir background-image kullanımı doğrudan repeat() ile yapılamasa da, repeat() fonksiyonunun gücü genellikle Grid veya benzeri layout sistemlerinde kendini gösterir. Burada repeat(3, 1fr), 3 adet eşit genişlikte sütun oluşturmak için kullanılır. Arka plan resimleri için hala background-repeat özelliklerini kullanmaya devam ederiz. Belki de buradaki örnek, CSS Grid veya benzeri bir bağlamda ele alınmıştır.


4. calc() ile Dinamik Hesaplamalar

Bir elementin boyutunu veya konumunu farklı birimlerle hesaplamak istediğimizde calc() fonksiyonu imdadımıza yetişir. Farklı birimleri karıştırarak dinamik ve esnek değerler oluşturmanızı sağlar.

Eskiden:

.bolum {
    width: 100%;
    padding: 20px;
}
/* Bu durumda genişlik 100% + 40px (sağdan ve soldan 20px padding) olur */

Yerine şimdi calc() kullanarak (box-sizing: border-box kullanmıyorsanız bu daha doğru bir yaklaşımdır):

.bolum {
    width: calc(100% - 40px); /* 100% genişlikten 40px (sağdan ve soldan padding) çıkar */
}

Bu örnekte, elementin genişliği %100'den sağ ve sol padding değerlerinin toplamı olan 40px çıkarılarak hesaplanır. Bu, özellikle responsive tasarımlarda çok işinize yarayacaktır.

Umarım bu CSS kısayolları, kodlama deneyiminizi daha verimli ve keyifli hale getirir. Bu yöntemleri projelerinizde uyguladıkça ne kadar zaman kazandığınızı fark edeceksiniz. Her zaman olduğu gibi, denemekten ve yeni şeyler öğrenmekten çekinmeyin!

Webkolog'u takipte kalın!

Hepinize bol kodlu ve başarılı projeler dilerim!

5 Mayıs 2025 Pazartesi

Skype'ın Veda Zamanı

Merhaba Webkolog okurları,

Bugün, birçoğumuzun hayatında önemli bir yer tutan bir dönemin sonuna geliyoruz: Skype, kapılarını tamamen kapatıyor.

 

Skype'a Veda

2003 yılında hayatımıza giren ve internet üzerinden sesli ve görüntülü iletişimi kökten değiştiren Skype, Microsoft'un aldığı kararla bugün itibarıyla artık hizmet vermeyecek. Bu karar, kullanıcıların iletişim alışkanlıklarının değişmesi ve alternatif platformların hızla yükselmesiyle kaçınılmaz hale geldi. WhatsApp, Zoom ve Google Meet gibi uygulamalar, sundukları özellikler ve kullanım kolaylığıyla Skype'ın yerini aldı ve bu süreçte bir dönemin sembolü olan bu platform, sessizce tarihe karıştı.

 

Veri Geçişi ve Yeni Dönem

Skype kullanıcıları için önemli bir bilgi de verilerin akıbeti. Microsoft, kullanıcıların kişi listeleri, sohbet geçmişleri ve hesap bilgileri gibi önemli verilerini, herhangi bir ek işlem yapmalarına gerek kalmadan otomatik olarak Microsoft Teams'e aktarılacağını duyurdu. Bu, kullanıcıların eski iletişimlerine sorunsuz bir şekilde devam edebilmesi için önemli bir adım. Ancak, bu geçişle birlikte bazı özelliklerin kullanımdan kalkacağını da belirtmek gerekiyor. Örneğin, Skype kredisiyle yapılan aramalar ve SMS gönderme özelliği artık Teams üzerinden sunulmayacak. Ayrıca, grup görüşmelerinde de 60 dakikalık bir sınırlama getirildi.

Microsoft, bu geçiş sürecinde Teams'i bireysel kullanıcılar için daha cazip hale getirmeyi amaçlıyor. Bu doğrultuda, uygulamanın ücretsiz sürümünü daha erişilebilir ve kullanıcı dostu bir arayüzle sunmayı planlıyorlar. Ancak, Teams'in asıl olarak kurumsal kullanıma yönelik bir platform olması, bireysel kullanıcılar için başlangıçta biraz karmaşık olabilir. Microsoft, bu durumu öngörerek, kullanıcıların geçiş sürecini kolaylaştırmak için çeşitli destek sayfaları ve yardım içerikleri hazırlamış durumda. Veri taşıma işleminin ise tamamen güvenli ve şifreli bir şekilde gerçekleştirileceği de verilen bilgiler arasında.

Skype'ta kalan verilerini farklı bir yere aktarmak isteyen kullanıcılar için ise bir süre tanınıyor. Kullanıcılar, 2026 yılının Ocak ayına kadar verilerini dışa aktarabilecekler. Bu tarihten sonra, sistemde kalan tüm kullanıcı verileri Microsoft tarafından silinecek. Microsoft, bu sürecin kullanıcı gizliliğine büyük önem verilerek yürütüleceğini özellikle vurguluyor. Skype'ın kapanışı, dijital iletişim alanında yaşanan hızlı değişim ve dönüşümün en somut örneklerinden biri olarak tarihe geçiyor. İnternet çağında, platformların ömrü artık kullanıcıların değişen beklentileri ve ihtiyaçlarıyla doğru orantılı hale geldi.

Bu veda, bir dönemin kapanışı anlamına gelse de, dijital iletişimdeki yenilikler ve gelişmelerle dolu bir geleceğe doğru yol alıyoruz.

 

Webkolog'u takipte kalın!

 

Hepinize bol iletişimli günler dilerim!

  

2 Mayıs 2025 Cuma

Web Tarayıcıları için Console Komutları

Merhaba Webkolog okurları! Bugün web uygulamalarımızın hata ayıklama sürecini kolaylaştırmak ve tarayıcı konsolunu kullanarak bilgi, uyarı ve hata mesajları görüntülemek için kullanabileceğimiz yöntemleri inceleyeceğiz. Tarayıcı konsolu, JavaScript kodumuzun yanı sıra sunucu taraflı dillerden (örneğin C#) gelen bilgileri de görüntüleyebileceğimiz güçlü bir araçtır.

Tarayıcı Konsoluna Erişim

Her tarayıcının kendine özgü bir konsol açma kısayolu vardır:

  • Chrome: Ctrl + Shift + J veya Command + Option + J (Mac)
  • Opera: Ctrl + Shift + C
  • Firefox: Ctrl + Alt + K veya Cmd + Alt + K (Mac)
  • Edge: Ctrl + Shift + J
  • Safari: Cmd + Option + C

Bazen, konsola kod yapıştırmaya izin verilmez. Bu durumda, konsola allow pasting yazıp Enter'a basarak bu özelliği etkinleştirebilirsiniz.

Temel Konsol Komutları

Tarayıcı konsolu, çeşitli amaçlar için kullanabileceğimiz bir dizi komut sunar. İşte en yaygın olanları:

  • console.log(mesaj): Genel bir günlük mesajı yazdırır.
  • console.warn(mesaj): Bir uyarı mesajı yazdırır.
  • console.error(mesaj): Bir hata mesajı yazdırır.
  • console.info(mesaj): Bilgimesajı yazdırır.
  • console.table(veri): Bir tablo şeklinde veri yazdırır. Özellikle nesne dizilerini görselleştirmek için kullanışlıdır.
  • console.clear(): Konsolu temizler.
  • console.group(grupAdı) / console.groupEnd(): İlgili konsol çıktılarını bir grup içinde toplar. console.groupCollapsed(grupAdı) ise grubu varsayılan olarak kapalı tutar.
  • console.count(etiket): Belirtilen etiketin kaç kez yazdırıldığını sayar.
  • console.time(etiket) / console.timeLog(etiket) / console.timeEnd(etiket): Bir kod bloğunun çalışma süresini ölçer.
  • console.assert(koşul, mesaj): Belirtilen koşul yanlışsa bir hata mesajı yazdırır.
  • console.trace(mesaj): Bir fonksiyonun çağrı zincirini (stack trace) yazdırır.
  • console.dir(nesne): Bir nesnenin tüm özelliklerini ve metotlarını hiyerarşik bir yapıda yazdırır.

Örnek Kullanım

Aşağıdaki örnekte, tarayıcı konsolunun farklı komutlarını kullanarak çeşitli mesajlar ve veriler yazdırmayı gösteriyorum:

<!DOCTYPE html>
<html>
<head>
    <title>Tarayıcı Konsolu Örnekleri</title>
    <script>
        // Log mesajı
        console.log("Log Mesajı!");
// Uyarı mesajı
        console.warn("Uyarı Mesajı!");
// Hata mesajı
        console.error("Hata Mesajı!");
// Bilgi mesajı
        console.info("Bilgi Mesajı!");
// Tablo örneği
        console.table([
            { name: "Ali Candan", country: "Türkiye", city: "İstanbul" },
            { name: "Veli Şamdan", country: "Almanya", city: "Berlin" }
        ]);
// Konsolu temizle
        console.clear();
// Grup örneği
        console.group("A Grubu");
        console.log("Real Madrid");
        console.log("Galatasaray");
        console.log("Dortmund");
        console.log("Inter");
        console.groupEnd();
console.groupCollapsed("B Grubu");
        console.log("Barcelona");
        console.log("Fenerbahçe");
        console.log("Leverkusen");
        console.log("Milan");
        console.groupEnd();
// Sayma örneği
        console.count("Webkolog");
        console.count("Webkolog");
        console.count("Webkolog");
// Zaman ölçme örneği
        console.time("Timer");
        for (let i = 0; i < 1000; i++) {
            // İşlemler
        }
        console.timeLog("Timer");
        for (let i = 0; i < 5000; i++) {
           // İşlemler
        }
        console.timeEnd("Timer");
// Assert örneği
        console.assert("Ali" == "Veli", "Bir Ali asla Veli olamaz!");
// Trace örneği
        function ornek() {
            console.trace("Trace Örneği");
        }
        ornek();
// Dir örneği
        console.dir(document.body);
    </script>
</head>
<body>
    <h1>Tarayıcı Konsolu Örnekleri</h1>
    <p>Bu sayfayı tarayıcı konsolunu açarak görüntüleyebilirsiniz.</p>
</body>
</html>

Bu HTML dosyası, tarayıcı konsolunda çeşitli komutların çıktılarını gösterir. console.log, console.warn, ve console.error gibi temel komutların yanı sıra, daha karmaşık yapılar için console.table, gruplama, sayma ve zaman ölçme gibi özellikleri de kullanır. console.assert ile koşullu hata ayıklama yapabilir, console.trace ile fonksiyon çağrılarını takip edebilir ve console.dir ile DOM nesnelerini inceleyebilirsiniz.

Sevgili Webkolog okurları, bu makalede tarayıcı konsolunun temel komutlarını ve kullanımını inceledik. Bu araç, web geliştirme sürecinde hataları ayıklamamıza, kodumuzun davranışını anlamamıza ve uygulamalarımızı daha verimli bir şekilde geliştirmemize yardımcı olur.

Webkolog'u takipte kalın!

Hepinize bol konsollu ve başarılı projeler dilerim!

 

30 Nisan 2025 Çarşamba

Visual Studio Code Kısayolları

Merhaba değerli Webkolog.net takipçileri, bugünkü yazımızda modern web geliştirmenin ve birçok programlama dilinin vazgeçilmezi haline gelen Microsoft Visual Studio Code'da (VS Code) kod yazma hızınızı ve verimliliğinizi katlayacak birbirinden kullanışlı kısayolları keşfedeceğiz. VS Code, sunduğu zengin özelliklerin yanı sıra klavye odaklı bir iş akışı sunarak, fareye olan ihtiyacınızı minimuma indirmenize ve kodunuzla daha bütünleşik bir deneyim yaşamanıza olanak tanır. Gelin, bu sihirli kısayollara yakından bakalım!

Seçim ve Düzenleme Kısayolları ile Hızlı Değişimler

Kod üzerinde yapacağımız değişikliklerde hız kazanmak için bu kısayollar adeta birer cankurtaran:

  • Ctrl + Shift + L (Windows/Linux) / Cmd + Shift + L (macOS): Aynı İfadeyi Seçme Sihiri: Bu kısayol, mevcut seçili ifadeyle eşleşen tüm örnekleri anında çoklu seçim haline getirir. Örneğin, bir değişken adını seçip bu kısayolu kullandığınızda, projenizdeki tüm aynı adlı değişkenler seçilir ve tek bir hamleyle hepsini düzenleyebilirsiniz.
  • Ctrl + Shift + Alt + Yukarı/Aşağı Ok Tuşu (Windows/Linux) / Cmd + Shift + Option + Yukarı/Aşağı Ok Tuşu (macOS): Çoklu İmleç Gücü: Bu kombinasyon, imlecinizin bulunduğu satıra yukarı veya aşağı yönde yeni imleçler eklemenizi sağlar. Böylece birden fazla satırı aynı anda düzenleyebilir, örneğin benzer satırların başına veya sonuna aynı anda metin ekleyebilirsiniz.
  • Shift + Alt + Yukarı/Aşağı Ok Tuşu (Windows/Linux) / Shift + Option + Yukarı/Aşağı Ok Tuşu (macOS): Satırları Kopyalama: Mevcut satırı veya seçili satırları yukarı veya aşağı yönde hızlıca çoğaltmak için bu kısayolu kullanın. Özellikle tekrar eden kod blokları oluştururken büyük zaman tasarrufu sağlar.
  • Alt + Yukarı/Aşağı Ok Tuşu (Windows/Linux) / Option + Yukarı/Aşağı Ok Tuşu (macOS): Satırları Taşıma: İmlecinizin bulunduğu satırı veya seçili satırları yukarı veya aşağı doğru kolayca hareket ettirebilirsiniz. Kodunuzun akışını düzenlerken satırları kesip yapıştırmak yerine bu kısayolu kullanmak çok daha pratiktir.
  • Shift + Alt + F (Windows/Linux) / Shift + Option + F (macOS): Kodunuzu Güzelleştirin: Bu kısayol, açık olan dosyadaki kodunuzu otomatik olarak biçimlendirir. Dilinize özgü kurallara göre girintileri düzenler, boşlukları ayarlar ve kodunuzun çok daha okunaklı hale gelmesini sağlar. Özellikle karmaşık veya düzensiz kodlarla uğraşırken hayat kurtarıcıdır.

Temel Düzenleme Kısayolları: Vazgeçilmez Araçlar

Günlük kod yazma rutininizin olmazsa olmazları:

  • Ctrl + S (Windows/Linux) / Cmd + S (macOS): Kaydet: Dosyanızdaki değişiklikleri kaydeder.
  • Ctrl + Z (Windows/Linux) / Cmd + Z (macOS): Geri Al (Undo): Yaptığınız son değişikliği geri alır.
  • Ctrl + Y (Windows/Linux) / Cmd + Shift + Z (macOS): Yinele (Redo): Geri aldığınız son değişikliği tekrar uygular.
  • Ctrl + X (Windows/Linux) / Cmd + X (macOS): Satırı Kes: İmlecin bulunduğu satırı keser (panoya kopyalar ve satırı siler).
  • Ctrl + C (Windows/Linux) / Cmd + C (macOS): Satırı Kopyala: İmlecin bulunduğu satırı panoya kopyalar.
  • Ctrl + V (Windows/Linux) / Cmd + V (macOS): Yapıştır: Panodaki içeriği imlecin bulunduğu yere yapıştırır.

Navigasyon Kısayolları: Kod Denizinde Yolculuk

Büyük projelerde dosya ve satırlar arasında hızlıca gezinmek için:

  • Ctrl + P (Windows/Linux) / Cmd + P (macOS): Hızlı Aç: Projenizdeki herhangi bir dosyayı adını yazmaya başlayarak hızla açmanızı sağlar.
  • Ctrl + Tab (Windows/Linux) / Cmd + Tab (macOS): Açık Dosyalar Arasında Geçiş: Açık olan dosyalar arasında kolayca geçiş yapmanızı sağlar.
  • Ctrl + G (Windows/Linux) / Cmd + G (macOS): Satıra Git: Belirli bir satır numarasına hızlıca gitmenizi sağlar.
  • Ctrl + Shift + E (Windows/Linux) / Cmd + Shift + E (macOS): Gezgin Kenar Çubuğu: Proje dosyalarınızı görüntülediğiniz gezgin (explorer) kenar çubuğunu açıp kapatır.
  • Ctrl + Shift + F (Windows/Linux) / Cmd + Shift + F (macOS): Dosyalarda Ara: Projenizdeki tüm dosyalarda belirli bir metni aramanızı sağlar.

Kod Düzenleme Kısayolları: Akıllı Tamamlama ve İpuçları

Kod yazarken size yardımcı olacak akıllı özelliklere hızlı erişim:

  • Ctrl + Space (Windows/Linux) / Cmd + Space (macOS): IntelliSense'i Tetikle: Kod tamamlama, öneriler ve metot imzalarını içeren IntelliSense özelliğini manuel olarak tetikler.
  • Ctrl + Shift + Space (Windows/Linux) / Cmd + Shift + Space (macOS): Parametre İpuçlarını Tetikle: Bir metodu çağırırken beklenen parametreleri ve türlerini gösteren ipuçlarını tetikler.
  • Ctrl + / (Windows/Linux) / Cmd + / (macOS): Satır Yorumunu Aç/Kapat: Seçili satırları veya imlecin bulunduğu satırı tek satırlık yorum haline getirir veya yorumu kaldırır.

Pencere Yönetimi Kısayolları: Çalışma Alanınızı Kontrol Edin

VS Code pencerelerini yönetmek için:

  • Ctrl + Shift + N (Windows/Linux) / Cmd + Shift + N (macOS): Yeni Pencere: Yeni bir VS Code penceresi açar.
  • Ctrl + Shift + W (Windows/Linux) / Cmd + Shift + W (macOS): Pencereyi Kapat: Mevcut VS Code penceresini kapatır.
  • Ctrl + \`` (Windows/Linux) /Ctrl + `` (macOS): Terminali Aç/Kapat: Tümleşik terminali açıp kapatır.
  • Ctrl + B (Windows/Linux) / Cmd + B (macOS): Kenar Çubuğunu Aç/Kapat: Sol taraftaki kenar çubuğunu (gezgin, arama vb.) açıp kapatır.

Hata Ayıklama Kısayolları: Sorunları Hızla Çözün

Kodunuzdaki hataları ayıklarken size yardımcı olacak temel kısayollar:

  • F5: Hata ayıklamayı başlatır.
  • F9: Kesme noktası (breakpoint) ekler veya kaldırır.
  • F10: Üzerinden atla (step over): Bir sonraki satıra geçer, fonksiyonların içine girmez.
  • F11: İçine adımla (step into): Bir sonraki satıra geçer, fonksiyon çağrısı varsa içine girer.
  • Shift + F5: Hata ayıklamayı durdurur.

Ek Navigasyon Kısayolları: Dosya Yönetimi

Dosya oluşturma ve yönetme konusunda pratik kısayollar:

  • Ctrl + N (Windows/Linux) / Cmd + N (macOS): Yeni Dosya Oluştur: Yeni bir boş dosya oluşturur.
  • Ctrl + Shift + T (Windows/Linux) / Cmd + Shift + T (macOS): Son Kapatılan Dosyayı Yeniden Aç: Yanlışlıkla kapattığınız son dosyayı tekrar açar.
  • Ctrl + Shift + S (Windows/Linux) / Cmd + Shift + S (macOS): Tüm Açık Dosyaları Kaydet: Açık olan tüm dosyaları kaydeder.
  • Ctrl + O (Windows/Linux) / Cmd + O (macOS): Dosya Aç: Mevcut bir dosyayı açmanızı sağlar.
  • Ctrl + W (Windows/Linux) / Cmd + W (macOS): Mevcut Dosyayı Kapat: Aktif olan dosyayı kapatır.

Evet sevgili Webkolog.net okurları, bu yazımızda Microsoft Visual Studio Code'da kod yazma deneyiminizi önemli ölçüde iyileştirecek ve sizi daha üretken bir geliştirici haline getirecek birçok kullanışlı kısayolu sizlerle paylaştım. Unutmayın ki bu kısayolları zamanla ve pratik yaparak içselleştirebilirsiniz. Başlangıçta birkaç tanesini düzenli olarak kullanmaya başlayarak zamanla diğerlerine de geçiş yapabilirsiniz. Klavyeinizi bir uzantınız gibi kullanarak kod yazmanın keyfini çıkarın! Bir sonraki yazımızda, VS Code'un daha gelişmiş özelliklerini ve uzantılarını keşfetmeye devam edeceğiz.

Webkolog'u takipte kalın!

Hepinize kısayollarla dolu ve verimli kodlama saatleri dilerim!

 

26 Temmuz 2019 Cuma

PHP ile PDO Kullanımı

Merhaba Webkolog takipçileri!

Bugün sizlere PHP dünyasında veritabanı işlemlerini daha güvenli, esnek ve modern bir şekilde yapmamızı sağlayan PDO (PHP Data Objects) hakkında detaylı bir makale hazırladım. Artık MySql uzantısı gibi eskide kalmış yöntemler yerine, PDO kullanarak farklı veritabanı sistemleriyle kolayca iletişim kurabilir, uygulamalarınızı SQL enjeksiyon saldırılarına karşı çok daha güçlü hale getirebilirsiniz.

PDO Neden Önemli?

PDO, PHP'nin bir veritabanı soyutlama katmanıdır. Bu, temelde şu anlama gelir:

  • Veritabanı Bağımsızlığı: Kodunuzu farklı bir veritabanına taşımak istediğinizde (örneğin MySQL'den PostgreSQL'e), PDO sayesinde çok daha az kod değişikliğiyle bu geçişi yapabilirsiniz. Çünkü PDO, her veritabanı için aynı arayüzü sunar.
  • Güvenlik (SQL Enjeksiyonuna Karşı Koruma): PDO'nun en büyük avantajlarından biri, hazırlanmış deyimler (prepared statements) ve parametre bağlama (parameter binding) yetenekleridir. Bu özellikler, kullanıcıdan gelen verileri doğrudan SQL sorgusuna eklemek yerine, güvenli bir şekilde işleyerek SQL enjeksiyonu gibi ciddi güvenlik açıklarının önüne geçer.
  • Hata Yönetimi: PDO, veritabanı işlemlerinde oluşan hataları daha tutarlı ve anlaşılır bir şekilde yönetmek için istisnaları (exceptions) kullanır. Bu da hata ayıklama süreçlerini kolaylaştırır.

Veritabanı Bağlantısı

PDO ile bir veritabanına bağlanmak oldukça basittir. Genellikle bir try-catch bloğu içinde yapılır ki olası bağlantı hataları yakalanabilsin:


try {
    // MySQL veritabanına bağlantı örneği
    $db = new PDO("mysql:host=localhost;dbname=denedb", "root", "123456");

    // Hata modunu ayarlama (isteğe bağlı ama önerilir)
    // PDO::ERRMODE_EXCEPTION: Hatalar istisna olarak fırlatılır (önerilen)
    // PDO::ERRMODE_WARNING: Hatalar PHP uyarısı olarak gösterilir
    // PDO::ERRMODE_SILENT: Hatalar sessizce geçiştirilir (genellikle istenmez)
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    echo "Veritabanı bağlantısı başarıyla kuruldu!";

} catch (PDOException $e) {
    // Bağlantı hatası oluşursa mesajı yazdır
    echo "Bağlantı Hatası: " . $e->getMessage();
}

Karakter setini ayarlamak, özellikle Türkçe karakterlerin doğru gösterilmesi için önemlidir. Bunu DSN (Data Source Name) içinde veya bağlantıdan sonra exec() metodu ile yapabilirsiniz:


// DSN içinde karakter setini ayarlama (önerilen yol)
$db = new PDO("mysql:host=localhost;dbname=test;charset=utf8", "root", "123456");

// Veya bağlantıdan sonra exec() ile ayarlama (DSN ile beraber kullanmaya gerek yoktur)
$db->exec("set names utf8");
// Daha spesifik bir sıralama için
$db->exec("set names utf8 COLLATE utf8_turkish_ci");

Veritabanı bağlantısını sonlandırmak için, PDO nesnesini null olarak atamanız yeterlidir:


$db = null; // Veritabanı bağlantısı kapatılır

Sorgu Yöntemleri: query() ve prepare()

PDO'da sorgu çalıştırmanın iki temel yolu vardır: query() ve prepare().

query() Yöntemi (Güvenli Parametre Geliyorsa Kullanın)

query() metodu, genellikle parametre içermeyen veya güvenliğinden emin olduğunuz statik SQL sorguları için kullanılır. PDOStatement nesnesi döndürür.


// Tüm kullanıcıları seçen basit bir sorgu
$sth = $db->query("SELECT id, ad, soyad FROM kullanicilar", PDO::FETCH_ASSOC); // PDOStatement döndürür

// Tek sütun ve satır almak
$kullanici_sayisi = $db->query("SELECT COUNT(*) FROM kullanicilar")->fetchColumn();
echo "Toplam kullanıcı sayısı: " . $kullanici_sayisi . "<br>";

// Tek bir satır almak (dizi olarak)
$ilk_kullanici = $sth->fetch(PDO::FETCH_NUM); // Sütun numaralarına göre indisli dizi
echo "İlk kullanıcı ID: " . $ilk_kullanici[0] . ", Ad: " . $ilk_kullanici[1] . "<br>";

// Tüm satırları almak (çok boyutlu dizi olarak)
$tum_kullanicilar = $sth->fetchAll(PDO::FETCH_ASSOC); // Sütun isimlerine göre indisli dizi
foreach ($tum_kullanicilar as $kullanici) {
    echo $kullanici['ad'] . " " . $kullanici['soyad'] . "<br>";
}
prepare() Yöntemi (Parametre Koruması İçin Şiddetle Tavsiye Edilir)

Kullanıcıdan gelen veri içeren dinamik sorgularda mutlaka prepare() metodunu kullanmalısınız. Bu yöntem, SQL enjeksiyonuna karşı en etkili korumadır. Sorgunuzu hazırlarsınız ve daha sonra parametreleri bağlarsınız.

Parametre Bağlama Yöntemleri:

1. İsimlendirilmiş Parametreler (:parametre_adı):


$yas = 30;
$cins = 'Erkek';

$sth = $db->prepare("SELECT * FROM kullanicilar WHERE yas = :yas AND cinsiyet = :cins");

// bindParam(): Değişken referansını bağlar
$sth->bindParam(':yas', $yas, PDO::PARAM_INT); // PDO::PARAM_INT, verinin integer olduğunu belirtir
$sth->bindParam(':cins', $cins, PDO::PARAM_STR, 12); // Son parametre isteğe bağlıdır (maksimum uzunluk)
$sth->execute();

$sonuclar = $sth->fetchAll(PDO::FETCH_ASSOC);
print_r($sonuclar);

2. Soru İşaretli Parametreler (?):


$yas = 25;
$cins = 'Kadın';

$sth = $db->prepare("SELECT * FROM kullanicilar WHERE yas = ? AND cinsiyet = ?");

// bindParam(): Parametre indeksini kullanarak değişken referansını bağlar
$sth->bindParam(1, $yas); // İlk soru işaretine $yas değişkeni
$sth->bindParam(2, $cins); // İkinci soru işaretine $cins değişkeni
$sth->execute();

$sonuclar = $sth->fetchAll(PDO::FETCH_ASSOC);
print_r($sonuclar);

3. bindValue() ile Parametre Bağlama:

bindValue(), değişkenin anlık değerini bağlar, bindParam() ise değişkenin referansını bağlar. Genellikle bindValue() daha sık kullanılır.


$yas_degeri = 40;
$cinsiyet_degeri = 'Erkek';

// İsimlendirilmiş parametreler ile
$sth = $db->prepare("SELECT * FROM kullanicilar WHERE yas = :yas AND cinsiyet = :cins");
$sth->bindValue(':yas', $yas_degeri, PDO::PARAM_INT);
$sth->bindValue(':cins', $cinsiyet_degeri, PDO::PARAM_STR);
$sth->execute();

// Soru işaretli parametreler ile
$sth = $db->prepare("SELECT * FROM kullanicilar WHERE yas = ? AND cinsiyet = ?");
$sth->bindValue(1, $yas_degeri);
$sth->bindValue(2, $cinsiyet_degeri);
$sth->execute();

4. execute() içinde Parametreleri Geçme (En Pratik Yöntem):

Bu, genellikle en pratik ve en çok tercih edilen yöntemdir. execute() metoduna bir dizi olarak parametreleri geçersiniz.


// İsimlendirilmiş parametreler ile
$sth = $db->prepare("SELECT * FROM kullanicilar WHERE yas = :yas AND cinsiyet = :cins");
$sth->execute(array('yas' => 30, 'cins' => 'Erkek'));

// Soru işaretli parametreler ile
$sth = $db->prepare("SELECT * FROM kullanicilar WHERE yas = ? AND cinsiyet = ?");
$sth->execute(array(30, 'Erkek'));

$sonuclar = $sth->fetchAll(PDO::FETCH_ASSOC);
print_r($sonuclar);

Sonuçları İşleme (fetch, fetchAll, fetchColumn)

Sorgunuzu çalıştırdıktan sonra sonuçları almak için çeşitli yöntemler kullanabilirsiniz:

  • fetch(): Sonuç kümesindeki bir sonraki satırı döndürür. Döndürülen satırın formatını (dizi, nesne vb.) belirtebilirsiniz.
  • fetchAll(): Sonuç kümesindeki tüm satırları bir dizi olarak döndürür.
  • fetchColumn(): Sonuç kümesindeki tek bir sütunu (ve tek bir satırı) döndürür. Hangi sütunu istediğinizi indeks numarası ile belirtebilirsiniz (varsayılan 0).

Döndürme Tarzları (PDO::FETCH_* Sabitleri):

  • PDO::FETCH_ASSOC: Sütun isimlerine göre indisli bir dizi döner. (Örn: $row['kullanici_adi'])
  • PDO::FETCH_NUM: Sütun numaralarına göre indisli bir dizi döner. İlk sütunun indisi 0'dır. (Örn: $row[0])
  • PDO::FETCH_BOTH (varsayılan): Hem sütun isimlerine hem de sütun numaralarına göre indislenmiş bir dizi döner.
  • PDO::FETCH_OBJ: Özellik isimlerinin sütun isimlerine denk düştüğü anonim bir nesne örneği döndürür. (Örn: $row->kullanici_adi)
  • PDO::FETCH_CLASS: Belirtilen sınıfın bir örneğini döndürür ve sütun değerlerini sınıfın özelliklerine eşler. Bu, özellikle veri modeli sınıflarınız varsa çok kullanışlıdır.

Örnek Kullanım (FETCH_CLASS):


class Uye {
    public $ad;
    public $soyad;

    public function adSoyadGetir() {
        return $this->ad . " " . $this->soyad;
    }
}

$sth = $db->prepare("SELECT ad, soyad FROM kullanicilar");
$sth->execute();

// Sonuçları Uye sınıfının örnekleri olarak al
$sth->setFetchMode(PDO::FETCH_CLASS, "Uye");

foreach ($sth as $uye) {
    echo $uye->adSoyadGetir() . "<br>";
}

Diğer Faydalı PDO Metotları
  • $db->lastInsertId(): Son eklenen kaydın ID'sini döndürür.
  • $sth->errorInfo(): Son çalıştırılan sorguyla ilgili hata bilgilerini içeren bir dizi döndürür.
  • $sth->execute(): Bir prepared statement'ı çalıştırır ve başarılı ise true, değilse false döndürür.

PDO::PARAM_* Sabitleri:

bindParam() ve bindValue() gibi metotlarda kullanabileceğiniz veri tipi sabitleridir:

  • PDO::PARAM_BOOL: Boolean veri tipi.
  • PDO::PARAM_NULL: SQL NULL veri tipi.
  • PDO::PARAM_INT: SQL INTEGER veri tipi.
  • PDO::PARAM_STR: SQL CHAR, VARCHAR veya diğer string veri tipi.
  • PDO::PARAM_LOB: SQL büyük obje (binary large object) veri tipi.

PDO, PHP ile veritabanı etkileşimlerinizde size büyük bir esneklik ve güvenlik sağlar. Modern web uygulamaları geliştirirken PDO'yu kullanmak, hem sizin hem de kullanıcılarınızın güvenliği için kritik öneme sahiptir.

Umarım bu makale, PDO'nun temellerini anlamanıza ve projelerinizde güvenle kullanmaya başlamanıza yardımcı olmuştur. Unutmayın, güvenlik ve temiz kod her zaman önceliğimiz olmalı!

Webkolog'u takipte kalın!

Hepinize bol kodlu ve başarılı projeler dilerim!

25 Temmuz 2019 Perşembe

PHP ile Memcache Kullanımı

Merhaba Webkolog takipçileri!

Bugün sizlere web uygulamalarınızın performansını artırmak ve veritabanı yükünü azaltmak için harika bir araçtan bahsedeceğim: Memcache. Özellikle yoğun trafiğe sahip sitelerde veritabanından sürekli veri çekmek, hem sunucu kaynaklarını tüketir hem de sayfa yükleme sürelerini uzatır. İşte tam bu noktada Memcache, veritabanı sonuçlarını önbelleğe alarak imdadımıza yetişiyor.

Neden Memcache Kullanmalıyız?

En temel sebebi hız ve veritabanı trafiğini azaltmaktır. Sıkça erişilen verileri bellekte tutarak, her seferinde veritabanına sorgu göndermek yerine çok daha hızlı bir şekilde bu verilere ulaşabiliriz. Memcache, varsayılan olarak en fazla 1MB veriyi önbelleğe alır. Daha büyük veriler otomatik olarak kırpılır. Önbelleğe alınan her veri için bir takma isim tanımlanır ve bu takma isim en fazla 250 karakterden oluşabilir.


Memcache Kurulumu
Linux İçin Kurulum

Linux tabanlı sistemlerde Memcached kurulumu oldukça basittir. Kullandığınız dağıtıma göre aşağıdaki komutları kullanabilirsiniz:

  • Ubuntu için: sudo apt-get install memcached
  • Gentoo için: sudo emerge install memcached
  • Redhat için: sudo yum install memcached

Memcached sunucusunu kurduktan sonra PHP için Memcache eklentisini aktif etmemiz gerekiyor:

sudo apt-get install php5-memcache
Windows İçin Kurulum

Windows üzerinde Memcache kurulumu biraz daha farklıdır:

  1. Öncelikle Memcache'in PHP eklentisini indirmeniz gerekiyor. Güncel sürümleri pecl.php.net/package/memcache adresinden bulabilirsiniz.
  2. İndirdiğiniz zip dosyasından php_memcache.dll dosyasını PHP kurulumunuzdaki ext dizinine (örneğin C:/AppServ/php5/ext) kopyalayın.
  3. Modülü etkinleştirmek için php.ini dosyanızı açın ve aşağıdaki satırı ekleyin:
    extension = php_memcache.dll
    
  4. Ardından Memcached sunucusunu indirmeniz gerekiyor. Bu adresten indirebilirsiniz.
  5. İndirdiğiniz dosyaları C:/memcached gibi bir dizine çıkartın.
  6. Komut İstemi'ni (CMD) yönetici olarak açın ve aşağıdaki komutları sırasıyla girin:
    c:/memcached/memcached.exe -d install
    C:/memcached/memcached.exe -d start
    
    Bu komutlar Memcached servisini kurup başlatacaktır.
  7. Son olarak Apache veya kullandığınız web sunucusunu yeniden başlatmanız gerekiyor.

PHP ile Memcache Kullanımı

Memcache'i PHP uygulamalarınızda kullanmak için temel fonksiyonları bilmeniz yeterli. İşte sıkça kullanılan Memcache fonksiyonları ve parametreleri:

Temel Fonksiyonlar
  • bool Memcache::set ( string $key , mixed $var [, int $flag [, int $expire ]] ): Yeni bir veriyi önbelleğe eklemek veya mevcut bir veriyi güncellemek için kullanılır.
  • bool Memcache::add ( string $key , mixed $var [, int $flag [, int $expire ]] ): Belirtilen anahtara sahip bir veri yoksa ekler. Eğer varsa false döner.
  • bool Memcache::replace ( string $key , mixed $var [, int $flag [, int $expire ]] ): Mevcut bir veriyi güncellemek için kullanılır. Belirtilen anahtara sahip bir veri yoksa false döner.
  • string Memcache::get ( string $key [, int &$flags ] ) veya array Memcache::get ( array $keys [, array &$flags ] ): Önbellekten veri okumak için kullanılır.
  • bool Memcache::delete ( string $key [, int $timeout = 0 ] ): Önbellekteki belirli bir veriyi silmek için kullanılır.
Parametrelerin Anlamları
  • $key: Verinin önbellekte hangi isimle saklanacağını belirtir.
  • $var: Önbelleğe alınacak veriyi (string, array, object vb.) temsil eder.
  • $flag: Sıkıştırma kullanılacaksa MEMCACHE_COMPRESSED veya 1 kullanılır. Varsayılan olarak 0'dır. Sıkıştırmayı Zlib kütüphanesi ile yapar.
  • $expire: Verinin önbellekte ne kadar süreyle kalacağını saniye cinsinden belirtir. Varsayılan olarak 0'dır, bu da verinin manuel olarak silinene kadar önbellekte kalacağı anlamına gelir. En fazla 2592000 (30 gün) değeri girilebilir.
Örnek Kullanım (Nesne Yönelimli API)

İşte Memcache'i bir sınıf olarak nasıl kullanabileceğimize dair basit bir örnek:


$memcache = new Memcache;
$memcache->connect("127.0.0.1","11211") or die("Memcache'ye bağlanılamıyor!");

$isim = "Ali";
// "isim" anahtarıyla "Ali" değerini 100 saniye süreyle önbelleğe ekle
$memcache->set("isim", $isim, false, 100); 

// "isim" anahtarına sahip veriyi oku
$okunan_isim = $memcache->get("isim");
echo "Önbellekten okunan isim: " . $okunan_isim . "
"; // Çıktı: Önbellekten okunan isim: Ali // "isim" anahtarına sahip veriyi "Veli" olarak güncelle ve 30 saniye süreyle tut $memcache->replace("isim", "Veli", false, 30); $guncel_isim = $memcache->get("isim"); echo "Güncellenen isim: " . $guncel_isim . "
"; // Çıktı: Güncellenen isim: Veli // "isim" anahtarıyla tekrar veri eklemeye çalış (zaten var olduğu için false döner) $ekleme_sonuc = $memcache->add("isim", "Ayşe", false, 100); if (!$ekleme_sonuc) { echo "Hata: 'isim' anahtarı zaten mevcut olduğu için eklenemedi.
"; } // "isim" anahtarına sahip veriyi sil $silme_sonuc = $memcache->delete("isim"); if ($silme_sonuc) { echo "'isim' anahtarı başarıyla silindi.
"; } // Tüm verileri kalıcı olarak temizle // $memcache->flush(); // Memcache sunucusu ile bağlantıyı kapat $memcache->close();
Örnek Kullanım (Prosedürel API)

Memcache'i prosedürel olarak da kullanabilirsiniz:


$memcache = memcache_connect('127.0.0.1', 11211);

// "anahtar" anahtarıyla "değer" değerini 30 saniye süreyle önbelleğe ekle
memcache_set($memcache, 'anahtar', 'değer', 0, 30);

// "anahtar" anahtarına sahip veriyi oku
$degisken = memcache_get($memcache, 'anahtar');
echo "Okunan değer: " . $degisken . "
"; // "anahtar" anahtarına sahip veri yoksa ekle $ekleme_durumu = memcache_add($memcache, 'yeni_anahtar', 'yeni_değer', 0, 60); // "anahtar" anahtarına sahip veriyi güncelle memcache_replace($memcache, 'anahtar', 'yeni_güncel_değer', 0, 30); // Memcache sunucusu ile bağlantıyı kapat memcache_close($memcache);

Gördüğünüz gibi, Memcache sayesinde veritabanı sorgularınızı önemli ölçüde azaltabilir, böylece web uygulamanızın daha hızlı ve daha verimli çalışmasını sağlayabilirsiniz. Özellikle dinamik içerikli, sık güncellenmeyen verileri önbelleğe alarak büyük bir performans artışı elde edersiniz.

Umarım bu makale Memcache'i anlamanıza ve projelerinizde kullanmaya başlamanıza yardımcı olmuştur. Unutmayın, performansı optimize etmek her zaman üzerinde durulması gereken önemli bir konudur.

Webkolog'u takipte kalın!

Hepinize bol kodlu ve başarılı projeler dilerim!