İçindekiler :

Android Kursu Database Back-End Kursu HTML & CSS Kursu Java Enterprise Kursu Java Kursu JavaScript Kursu NoSQL Kursu Python Kursu SQL Kursu Veri Bilimi Kursu Web Front-End Kursu Yapay Zeka Kursu

Bu Sayfayı Paylaş:

Bilgi/Açıklama

Python Kursu

Python kursunda programlamanın temel konuları dışında veri bilimi (data science) ve yapay us (yapay zeka - artificial intelligence) konuları için gerekli temel konular anlatılır. Ancak bu kurs belirtilen konular dışında da Python programlama ile ilgili alanları da kapsar.
Python kursunda programlamanın temel konuları dışında veri bilimi (data science) ve yapay us (yapay zeka - artificial intelligence) konuları için gerekli temel konular anlatılır. Ancak bu kurs belirtilen konular dışında da Python programlama ile ilgili alanları da kapsar. Başka bir deyişle, Python dili ile geliştirme yapmak isteyen kişilerin bilmesi gereken hemen her şeyi içermektedir.

Python İle Programlama

Temel Konular

Python dili ile betim (script) yazmak için gereken söz dizimi (syntax) öğeleri bilinmelidir. Her dilde olan, ekrana basma (echo) ve ekrandan girdi okuma (read input) işlemleri öğrenilmelidir. Temel konular arasında değişken (variable) kavramı ve veri türleri (data types) iyi anlaşılmalıdır. Özellikle sicim (string) ve sayı (number) türleri en çok bilinmesi gereken veri türleri arasındadır. Python diliyle işlenen verilerin çoğu sicim ve sayı türündedir.

Her yazılım geliştirme dilinde olduğu gibi Python dilinde de akış denetimi (flow control) adı verilen yapılar kullanılır. Örneğin koşul (condition) yapıları için if-else (ise-değilse) ve açkı (switch) yapısı kullanılır. Dilde döngü (loop) yapılarından için (for) ve sürece (while) bilinmelidir. Bu yapılar, verileri satır satır alıp okumak ve işlemekte kullanılır.

Gelişmiş Yapılar

Python dilinde temel yazılım geliştirme özellikleri dışında gelişmiş yapılar da bulunur. Bunlardan işlev (function), sık sık yapılan işlerin bir kez yapılıp sürekli kullanılmasını sağlar. Bir çok işlevden oluşan ve modül (module) adı verilen, ayrı dosyalarda tutulan kod parçaları da yazılabilir. Yazılan kodda bir modülü kullanmak için içe alma (import) işlemi yapılır. Söz konusu araçlar temelin ötesinde gelişmiş uygulamalar yazmak gereklidir ancak bir çok kişi bu biçimde yazdığı için öğrenilmeleri çoğu durumda koşuldur.

Birden çok veriyi tutmak için dizi (array) adı verilen yapılar bulunur. Python dilinde dizilerin kullanımı oldukça kolaydır ve bir çok gelişmiş özellik içerir. Ancak kimi zaman sağladığı çok sayıda kolaylığı öğrenciler karıştırabilmektedirler. Dizi dışında daha gelişmiş veri tutma özelleri barındıran dizelge (list), sözcük (dictionary) ya da kimi dillerde bilinen adıyla eşlem (map), küme (set) gibi biriktiri (collection) yapıları da bulunmaktadır. Birbiriyle ilintili veriler, örneğin kayıtları tutmak için demet (tuple) adı verilen bir yapı bulunur. Bunlar verilerin toplu bir biçimde işlenmesi için gereklidir. Çoğu sorunu çözmek için yukarıdaki veri yapılarından biri veya bir kaçı birlikte kullanılır.

Nesne-Yönelimli İzlendirme (Object-Oriented Programming)

Python dili işlevsel izlendirme (functional programing) adı verilen, kod yazımını bir takım işlev (function) yapılarıyla gerçekleştirmek ve gerektiğinde bunları çağrımak biçiminde yapılan tekniği desteklediği gibi nesne-yönelimli izlendirme (object-oriented programming) adı verilen tekniği de destekler. Buna göre belli bir konuyla ilgili değişken (variable) ve işlev (function) birimleri bir arada sınıf (class) adı verilen karmaşık tür bildirimleri yapılır ve bunlardan nesne (object) ve örnek (instance) adlı karmaşık veri tutan yapılan üretilir.

Uygulama ve Örnekler

Eğitimlerde temel konularda uzun uzun örnekler yapılması yerine, daha ileri konularda bunları yerinde kullarak anlatılması yoluna gidilmektedir. Özellikle daha önce başka bir programlama dilinde çok temel yapıları genel olarak da olsa bilenler için giriş konularında takılmak yerine ileri konular çabuk geçiş sağlanması konuların iyi anlaşılmasını sağlayabilir. Örnekler bir tablonun ve onun satırlarının üzerinde çalışma, verileri sicimden sayıya ya da sayıdan sicime dönüştürme ve sicimler üzerinde kimi değişiklikler yapma biçiminde gerçekleştirilmektedir. Bu işlem de veri bilimi gibi veriler üzerinde işlem yapan konular için öğrenilmesi koşul olan konulardır. Başka bir deyişle, örnekler kuramsal değil gerçek yaşamdaki uygulamalara göre belirlenmektedir.

Veri Dosyaları, İşleme ve Görselleştirme

Dosyalar

Python dilinde sırtlı (dosya - file) işlemleri için bir çok destek bulunur. XML, JSON ve CSV gibi bir çok veri saklama biçimlenmesinde yazılmış dosya Python dilinde kolayca okunabilir veya bunlara yazma yapılabilir. Öte yandan örün (web) ve veritabanı (database) işlemleri için kullanılan sunucuya göre bir betiklik (library) yüklemek gerekebilir. Bu yolla HTML, SQL ve NoSQL gibi konularda destek sağlanmış olur. Python dilinde veriler çoğunlukla dosyalar biçiminde girdi olarak alınır ve sonuçlar da dosya biçiminde çıktı olarak verilir. Bunun en önemli nedeni işlenecek verilerin veritabanı gibi kaynaklardan gelmesi ve bu kaynaklara doğrudan bağlanmak yerine onlardan dışa alma (export) ile edinilmiş dosyalarda çalılmasıdır. Bu biçimde Python geliştiricisi veritabanlarıyla doğrudan uğraşmak durumunda kalmaz. Öte yandan, sonuçların dosya olarak üretilmesi de bunları işlenmek üzere OpenOffice veya Microsoft Office gibi uygulamaların kullanabilmesini sağlar. Bu nedenler bir çok veri işleme süreci dosyadan ana verileri alıp sonuçları dosyalara üretir.

Çizitler (Charts) ve Graphics (Çizgeleme)

Python dili için matplotlib gibi bir çok betiklik (library) çizim yapmaya olanak verir. Desteklenen işlemler histogram ve pasta gibi çizit (chart) yapıları ve analitik geometri gibi konular için çizgeleme (graphics) yapma gibi işlemler sayılabilir. Söz konusu betiklik Python dilindeki dizi (array) ve demet (tuple) benzeri yapıları doğrudan destekler. Örneğin bir demet dizisini parametre olarak verip, hangi sütunlarda hangi işlemler yapılacağı söylenirse ona göre bir çizit oluşturulabilir. Python gibi diller verilerin işlenmesi dışında görselleştirme (visualization) için de kullanıldığı için çizgeleme araçları önemli bir işlev görürler. Dahası, bir çok kişi Python dilini, başka araçlarında eklenmesiyle birlikte R veya MATLAB gibi bir matematik uygulaması gibi kullanır. Bu nedenler görselleştirme bilinmesi gereken önemli bir konu durumundadır.

Örnekler ve Uygulama

Eğitim boyunca gerçekte kullanılan veri türlerinden olşturulmuş dosya türleriyle çalışılmaktadır. Özellikle veri bilimi (data science) için veritabanlarından dışa alma (export) ile edinilmiş dosyaların okunması üzerinde durulur. Verilerin okunduktan sona sayımbilim (statistics) özetlerinin çıkarılması ve çizgeleme (graphics) ile kullanıcıya gösterilmesi biçiminde örnekler yapılmaktadır. Bu örnekler Python ile yapılan; matematik, bilim (fen), teknoloji ve iş dünyasında gerçekten kullanılan yöntemlere bir taban oluşturmaktadır. Buradaki örnekleri anlayarak yapabilenler için sonraki konuları anlamak daha kolay olacaktır.

Yararlı Betiklikler

İşletim Düzeni (Operating System)

Python dili ile işletim düzeni (operating system) ile ilgili bir çok işlev bulunmaktadır. Bunlar arasında kütükleme (logging), süreçler (processes), yivler (threads) gibi konular sayılabilir. Bunların dışında güvenlik (security) ilgili destek ileri düzeydedir. Python dili, ilk başlarda veri bilimi gibi bir alan için kullanılması için değil, işletim düzenlerinde bir çok işlemi kolay yapmak için yazılmıştır. Dolayısıyla düzen destek (system support), yığın görevleri (batch jobs) ya da güvenlik (security) gibi konularda işlem yapanlar için çok geniş destekler bulunmaktadır. Bu yönüyle işletim düzenin bir kabuk (shell) üzerinden kullanmaya göre son derece gelişmiş bir altyapı sağlar.

Ağ (Network)

Python dili TCP/IP düzeyinde hem TCP hem de UDP ile priz programlama (socket programming) gibi düşük düzeyli ağ (network) işlemlerini desteklemektedir. Bunun dışında POP3, SMTP, IMAP, FTP, HTTP gibi çok sayıda iletişim kuralı (protocol) desteklenmektedir. Söz konusunu konular tek başlarına çok yararlı gibi görünmese de gelişmiş bir uygulama bu konulardan birini ya da bir kaçını kesinlikle içerir. Öte yandan buradaki betiklik (library) seçenekleri doğrudan kullanılmak yerine, bunların üzerine geliştirilmiş daha ileri düzeyde betiklikler de yeğlenebilir. Ancak ileri modülleri kullanmak için de temelleri, doğrudan kullanılmasa bile bilmek gereklidir.

Çizelemeli Kullanıcı Arayüzü (Graphical User Interface - GUI)

Python dilinin kendisinde bir kullanıcı çizelemeli kullanıcı arayüzü (graphical user interface - GUI) bulunmaz. Ancak Qt ve Tkinter gibi, C/C++ tabanlı gelişmiş ve işletim düzeninden bağımsız betiklikleri destekler. Bir çok kişi için Python arka-uç (back-end) yakasında kullanılan bir dil olsa da ön-üç (front-end) için de desteği bulunmaktadır. Ancak bu destek çoğunlukla sıradan kullanıcıların kullandığı masaüstü uygulamaları yapmaktan çok, işi verilerle ya da işletim düzeniyle çalışmak olan kişilere görsel bir arayüz sağlayan uygulamalar yapmak için kullanılır.

Örnekler ve Uygulama

Eğitim kapsamında örnek olarak bir sohbet (chat) uygulaması yapılmaktadır. Örnekte çok yivli (multi-threaded) bir sunucu (server) ve birden çok istemci (client) arasında ileti alışverişinde bulunulmaktadır. Qt ya da Tkinter ile görsel bir arayüz yapılarak sunucu ve istemci sınanmaktadır. Buradaki örnek, anlatılan konuların daha iyi anlaşılmasını sağladığı gibi daha gelişmiş ve karmaşık uygulamaların nasıl geliştirilebileceği konusunda da bir taban oluşturması açsından işletim düzeni, ağ ya da görsel arayüz gibi konularla ilgilenmeyen kişilere de önerilmektedir.

DJango Çatısı

DJango Çatısına Giriş

Python dili çoğunlukla işletim düzeni (operation system) üzerinde işleri kolaylaştıracak bir betim (script) dili ya da veri bilimi (data science) veya yapay zeka (artificial intelligence) gibi uzbilim (mathematics) ve bilgisayım bilimi (computing science) gibi konuları içeren alanlarda yaygın olarak kullanılır. Ancak örün (web) ve veritabanı (database) gibi alanlarda; Java, C#.NET ve PHP gibi dillerdekine benzer biçimde de kullanılabilir. Bu amaçla geliştirilen çatı (framework) ürünlerinden en yaygın kullanılanlarından birisi de DJango adını taşır. Bu çatıda olağan örün ve veritabanı konuları dışında ORM ve MVC gibi gelişmiş teknikler de desteklenir.

Örnek bir Örün Veritabanı Uygulaması


Eğitim sırasında örnek olarak bir veritabanı (database) ile çalışan örün uygulaması (web application) yapılamaktadır. ORM ve MVC tekniği ile CRUD adı verilen, tablolarda temel işlemleri içeren bir uygulama yapılamaktadır. Buradaki örnekle Python ile içerik (content), e-ticaret (e-commerce) gibi sitelerin nasıl yapıldığı da öğrenilmiş olur. Bu biçimde Java, C#.NET ve PHP gibi konulara da girmek isteyenler için öğrenme kolaylığı sağlar.
Bu konularda ayrıntılı bilgi, kurs, özel ders, uzaktan eğitim, ödev ve proje destek, kitap ve video için tıklayın : Python Business Intelligence, Data Science ve Machine Learning

Bilgi/Açıklama

Veri Bilimi Kursu

Bu eğitim, veri bilimi (data science) konularını Python diliyle anlatmaktadır
Bu eğitim, veri bilimi (data science) ve yapay us (yapay zeka - artificial intelligence) konularını Python diliyle anlatmaktadır. Her ne denli dil olarak Python seçildiyse de anlatılanların çoğu öteki diller için de geçerlidir. Dahası, öteki dillerde veri bilimi ve yapay us konularında çalışmak isteyenler için de Python ile başlamak, bu dilin göreli olarak daha kolay olması nedeniyle iyi bir başlangıç noktası olabilir.

Numpy ve Matplotlib ile Sayısal İşlemler ve Görselleştirme

Gerek veri bilimi gerek yapay us, sayılarla çalışmayı gerekli kıldığı için Pyhton dilindeki Numpy kütüphanesi öğrenilmelidir. Bu betiklikte(kütüphanede) olağan uzbilim (matematik) konuları için gereken sayısal işlemler bulunmaktadır. Numpy, yalnızca sayı ilgili değil, sayı dışındaki temel türlerle ilgili işlemleri içermektedir. Verilerle çalışmanın temellerini içerir.

Yapılan işlemleri daha anlaşılır biçimde inceleyebilmek için de matplotlib adı verilen görselleştirme (visualization) kütüphanesi kullanılır. Bu biçimde öğrencinin üzerinde çalıştığı veriyi daha iyi anlaması ve ona hakim olması sağlanır. Bu kütüphane aynı zamanda sonuçlarını sunulması ve yazanak (report) oluşturmak için gereklidir. Veri bilimiyle üretilen sonuçların bir biçimde akademik ya da iş dünyasına sonuç olarak sunulması gerekir.

Eğitimde Requests adı verilen HTTP iletişim kuralı üzerinden örün (web) içeriğini edinmeye yarayan bir betiklikte (kütüphanede) anlatılmaktadır. Bununla örün(web) üzerindeki içerikleri indirip üzerinde işlemler yapılabilmesi sağlanmaktadır. Var olan, hazır olarak sağlanan verilerle çalışmak yerine gerçek ve diri veri toplamanın yolları anlatılmaktadır.

Eğitim boyunca, düzenek öğrenmesi (machine learning) ve sayımbilim (statisitics) gibi konularda işlenecek verilerin dosyalardan okunması, üzerinde işlem yapılması ve görselleştirilmesine ilişkin örnekler yapılmaktadır.

Scipy ve Pandas ile Bilimsel İşlemler ve Veri İşleme

Temel matematik konularının ötesinde bilimsel konularda bir çok işlev içeren Scipy betikliğinin (kütüphanesinin) de bilinmesi gerekir. Burada science (bilim) ile denmek istenen doğal bilimler (natural sciences) olarak anlaşılmalıdır. Çünkü science sözcüğü tek başına kullanıldığında 'fen' anlamına gelmektedir. Scipy kütüphanesi Numpy kütüphanesini kullanır. Özel işlemler, türev (derivative) ve bütünlev (integral), içucaylama (interpolation), hızlı Fourier dönüşümü (fast Fourier transform), uzaysal yapılar ve algoritmalar (spatial structures & algorithms), sayımbilim (statistics) gibi konuları içerir. Bunlar hemen her yerde kullanılan matematik içeren yöntemlerdir.

Bilimsel konuların daha iyi anlaşılması için lisans düzeyinde matematik konuları gerekmektedir. Yer yer yetersiz kalındığı yerlerde yüksek matematik konularında da girilmektedir.

Eğitimde veri kümeleri edinilerek üzerinde türlü bilimsel işlem uygulanmakta ve sonuçlar görsel olarak incelenmektedir. Bu bölümde herhangi bir algoritmaya girmeden, birden çok algoritmada kullanılan temel bilimsel işlevlere yönelik uygulamalar yapılmaktadır.

Örnek Proje

Eğitim tümüyle uygulamalı yapılmaktadır. Her bölümde bir proje geliştirme için gerekli konular uygulamalı olarak örnek üzerinde anlatılmaktadır. Ancak eğitimin sonunda de her katılımcıya, anlatılanları içerdiği gibi kursun ötesinde de konulara girebileceği örnek bir proje verilmekte ve bu konuda öğrenciye destek olunmaktadır.

Bu konularda ayrıntılı bilgi, kurs, özel ders, uzaktan eğitim, ödev ve proje destek, kitap ve video için tıklayın :
Python Business Intelligence, Data Science ve Machine Learning

Bilgi/Açıklama

Yapay Zeka Kursu

Bu eğitim, yapay zeka (artificial intelligence) konularını Python diliyle anlatmaktadır
Bu eğitim, veri bilimi (data science) ve yapay us (yapay zeka - artificial intelligence) konularını Python diliyle anlatmaktadır. Her ne denli dil olarak Python seçildiyse de anlatılanların çoğu öteki diller için de geçerlidir. Dahası, öteki dillerde veri bilimi ve yapay us konularında çalışmak isteyenler için de Python ile başlamak, bu dilin göreli olarak daha kolay olması nedeniyle iyi bir başlangıç noktası olabilir.

Skit-learn ile Düzenek Öğrenmesi (Machine Learning)

Skit-learn betikliği (kütüphanesi) düzenek öğrenmesi (machine learning) gibi konularda bir çok algoritma içermektedir. Bu yönüyle yapay zeka (machine learning) alanının en önemli konularından birisi olan düzenek öğrenmesi ilgili çok sayıda destek bulunmaktadır. Bu betiklikte desteklenenler arasında sınıflandırma (classification), gerileme (regression), salkımalama (clustering), model seçimi (model selection), boyutsallık indirgeme (dimensionality reduction), derin öğrenme (deep learnning) ve yapay sinir ağları (artificial neural network), genetik algorimalar (genetik algorithms) gibi konular sayılabilir.

Her ne denli düzenek öğrenmesi ile ilgili çok sayıda alan olsa da çoğu, bir kaç temel konunun öğrenmesine dayalıdır. Çünkü Python geliştiricisi için yukarıdaki konuların gerçekleştirilmesi değil kullanılması söz konusudurur. Başka bir deyişle veri bilimi gibi alanlardaki algoritmalarının içerde nasıl çalıştıkları değil dışarıdan nasıl değerler aldıkları ve sonuç olarak ne döndürdükleri bilinmelidir. Çoğunlukla yapılan işlem bir sınıfı, bir kaç parametre ile oluşturma ve bir kaç yöntemini çağırmaktan oluştur. Söz konusu algoritmaları kullanacak düzeyde anlamak gereklidir. Öte yandan, kod olarak gösterilmese de algoritmaların nasıl çalıştığı açıklanmaktadır.

Eğitim boyunca düzenek öğrenmesi (machine learning) ile ilgili her konuda en az bir örnek yapılmaktadır. Her birinin nasıl girdiler aldığı ve nasıl çıktılar ürettiği örnek üzerinde açıklanmaktadır.

Makine Öğrenmesi Konuları

Makine öğrenmesi kapsamında aşağıdaki konulara ilişkin geniş bir anlatım yapılmaktadır:
  • Yapay Sinir Ağı (Artificial Neural Network)
  • En Yakın Komşu (K-Nearest Neighbour)
  • İlkesel Bileşen Çözümleme (Principal Component Analysis)
  • Destek Yöney Düzenekleri (Suppor Vector Machines)
  • Toy Bayes'çi Sınıflayıcı (Naive Bayesian Classifier)
  • K-Bayağılar Salkımlama (K-Means Clustering)
  • Genetik Algoritmalar (Genetic Algorithms)

Yapay Us (Artificial Intelligence) Konuları

Eğitimlerde düzenek öğrenmesi (machine learning) dışında kalan yapay us (artificial intelligence) konuları da anlatılmaktadır. Örneğin bilgisayar görümü (computer vision), örüntü tanıma (pattern recognition), doğal dil işleme (natural language processing) gibi başlıklar da eğitim kapsamındandır. Söz konusu alanlar, veri bilimi dışında bir çok akademik alanda yaygın olarak işlenen başlıklardan olduğu için eğitim kapsamına alınmıştır.

Örnek Proje

Eğitim tümüyle uygulamalı yapılmaktadır. Her bölümde bir proje geliştirme için gerekli konular uygulamalı olarak örnek üzerinde anlatılmaktadır. Ancak eğitimin sonunda de her katılımcıya, anlatılanları içerdiği gibi kursun ötesinde de konulara girebileceği örnek bir proje verilmekte ve bu konuda öğrenciye destek olunmaktadır.

Bu konularda ayrıntılı bilgi, kurs, özel ders, uzaktan eğitim, ödev ve proje destek, kitap ve video için tıklayın :
Python Business Intelligence, Data Science ve Machine Learning

Bilgi/Açıklama

Java Kursu

Godoro Java kursunun konuları ve açıklaması

Java Nedir?

Java, en ya çok kullanılan izlendirme dili (programming language) veya yazılım geliştirme dili (software development language) adı verilen seçeneklerinden birisidir. Java ile geliştirilen uygulamalar neredeyse her işletim düzeni (operating system) üzerinde çalışmaktadır. Bir başka özelliği de bütünüyle nesne yönelimli izlendirme (object-oriented programming)yöntemiyle geliştirme yapılmasını sağlamasıdır.
Java dili masaüstü (desktop), gezici (mobile) ve örün (web) ortamlarında kullanılabilmektedir. Ancak girişim (enterpise) uygulamlarda, başka bir deyişle büyük kurumlarda kullanımı çok yaygındır. Bunun dışında Android işletim düzeninin de temel geliştirme dili Java olarak belirlenmiştir. Öte yandan masaüstü alanında kullanımı öteki çevrelere göre azdır.

Uygulamaları

Java Girişim (Java Enteprise)

Java dilinin en çok kullanıldığı konu girişim yazılımı(enterprise software) alanıdır. Bu tür yazılımlar genelde örün (web) altyapısıyla çalışsa da daha çok Genelağ (Internet) üzerinde değil İçağ (Intranet) üzerinde kullanılır. Örün geliştirmenin olağan biçimleri dışında bir çok çatı (framework) bulunmaktadır. Bir çok kişi için Java dilinin yeğlenmesinin nedeni dilin kendisindeki özelliklerden çok, geniş bir alanda bir çok betiklik (library) ve çatı (framework) içermesidir. Java diliyle girişim izlendirmede Java Girişim Eğrimi (Java Enterprise Edition) adı verilen bir ölçün (standard) bulunmaktadır. Çok kullanılan betiklik ve çatılar bu eğrimin bir parçası durumundadır.

Java İstemci (Client)

Java İstemci (Client) teknolojileri masaüstü (desktop) ve gezici (mobile) çevreleri için kullanılır. Java, her ne denli masaüstü (desktop) ortamlarda ilişkin olarak az kullanılsa da, gelişmiş masaüstü araçlarına sahiptir. Görsel kullanıcı arayüzü araçları her işletim düzeninde çalışmaktadır. Ancak, teknoloji dışı nedenlerle, masaüstü alanlarda kullanımı düşük düzeyde kalmıştır. Öte yandan, gezici (mobile) akıllı telefonlardan önce çok yaygın bir kullanıma ulaşmıştır. Neredeyse her cep telefonunda C/C++ dilinin yanında Java uygulamaları geliştirilmiştir. C/C++ diline göre daha yavaş olsa da çok daha kolay geliştirme yapılabiliyor olması gezici aygıtlar için Java dilinin yeğlenmesini sağlamıştır. Ancak zamanla akıllı telefonlar ortaya çıkınca Java gezici uygulamlarının kullanımı azalmıştır. Ancak akıllı telefonlarda en yaygın kullanılan Android işletim düzeninde de, Java Gezici adı verilen sürümle ilişkili olmasa da Java diliyle geliştirme yapılmaktadır.
İstemci yakasındaki betiklikler hem görsel (visual) konular hem de veritabanı gibi sunuculara bağlanmak için gerekli bütünleşme (integration) özelliklerini içerir. Bu teknolojilerin tümüne birden Java Ölçün Eğrimi (Java Standard Edition) adı verilir. Öte yandan gezici (mobile) uygulamalar için gelitirilen teknolojilerin oluşturduğu bütün de Java Gezici Eğrimi (Java Mobile Edition) diye adlandırılır. İki eğrim de Java dilindeki ortak yapıları içerir. Temel ayrılık içerdikleri betikliklerde ve kullanım alanlarındadır.

Android Java

Java dili Android işletim düzeninin temel geliştirme dilidir. Ancak Kotlin adı verilen, kimine göre Java dilinden daha kolay olan dillerle geliştirme yapmak da, pek yaygın olmasa da, olanaklıdır. Android, Java dilini kullansa da uygulama geliştirme için çizgeli kullanıcı arayüzü (graphical user interface) için ayrı bir betiklik (library) kullanmaktadır. Bunun dışında veri (data) ile ilgili konularda da, kimi durumda ölçün (standard) Java betikliklerini kullanmakta, kimi durumda da kendine özgü betiklikler içerebilmektedir.

Java Konuları

Temeller (Fundementals)

Bir Java geliştiricisinin temel bilgiler ve nesneye-yönelik izlendirme (object-oriented programming) gibi konuları bilmesi gerekir. Öncelikle nesne (object) kavramı, kapçıklama (encapulation) ve çekirdek (bean) özellikleri ile birlikte öğrenilmelidir. Bundan sonra nesnelerin bir arada, etkileşimli kullanımı için bileşim (composition) konusu kavranmalıdır. En karmaşık konulardan olan kalıtım (inheritance), soyut sınıf (abstact class) ve arayüz (interface), çokbiçimlilik (polymorphism) konuları anlaşılmalıdır. Bunların dışında Java ortamındaki bir çok temel betliklik (library) öğrenilmelidir. Bunlara örnek olarak sicim (string) işlemleri, konsol (console), akım (stream) ve giriş-çıkış (input/output), çok yivli izlendirme (multi-threaded programming) verilebilir.

İstemci (Client)

Java masaüstü (desktop) konuları da, gerek istemci uygulamları geliştirmeyi öğrenmek için gerekse Java ile nesne yönelimli izlendirme yapmayı kavramak için öğrenilebilir. Masaüstünde AWT (Soyut Pencereleme Takımı), Swing ve JavaFX teknolojileri bulunmaktadır. Özellikle yeni başlayanlar için görsel uygulamalar geliştirilmesi öğrenme sürecini daha kolay kılabilmektedir.
İstemci uygulamaları çizgeleme (graphics), diriltme (animation) ve oyun (game) geliştirme için de bir giriş oluşturmaktadır. Java dili bu ortamlarda az kullanılsa da geliştirme kolaylığı ve her aygıtta çalışma özelliği nedeniyle görsel gelişirme için oldukça çekici bir seçenek olarak ortaya çıkmaktadır.

Java ile Birlikte Bilinmesi Gerekenler

Java dili genellikle tek başına kullanılmaz. Bu yüzden örün ön-uç (web front-end) ve veritabanı arka-uç (database back-end) dillerini de bilmek gerekir.

Örün Ön-Uç (Web Front-End)

Java dilinde örün geliştirme Servlet/JSP teknolojileri Java Girişim alanına girse de genelde temel olarak görüldüğünden Java konusu sayılmaktadır. bir örün yerliği (web site) gelişirmek için gerekli teknolojiler bunlardır. HTML, CSS, JavaScript gibi örün (web) dilleri bilinmesi gerekenler arasındadır. Olağan gelişirme betiklikleri yanında MVC tekniğiyle geliştirme için JSF ve benzeri çatılar da bulunmaktadır.

Veritabanı Arka-Uç (Back-End)

Java ile birlikte SQL, XML ve JSON gibi data (veri), veritabanı (database) ve iletileme (messaging) dillerinin bilinmesi gerekir. SQL veritabanlarına bağlanmak için JDBC betikliği öğrenilmesi gereklidir. Bunun dışında XML için JAXP, JSON için de JSONP betikliklerini bilmek gereklidir. Bu teknolojileri hem Java bilmek hem de ön-uç geliştirme (front-end development geliştirme) ve arka-uç (back-end development) için bir giriş oluşturmak için öğrenmek gereklidir. Olağan geliştirme betiklikleri yanında ORM tekniğiyle geliştirme için JPA ve benzeri çatılar bulunmaktadır.
Detaylı bilgi için: Tıklayınız

Bilgi/Açıklama

Java Enterprise Kursu

Genel Bilgiler

Java Girişim (Java Enterprise) üzerinde geliştirme yapmak için Java dilinin temel kavramlarını bilmek gereklidir ancak yeterli değildir. Java ile birlikte SQL, XML, JSON, HTML, CSS, JavaScript gibi diller de girişim izlendirme (enterprise programming) alanının koşul durumundaki konularıdır. Java dili, sözü edilen konularda bir çok betiklik içerdiği gibi işleri kolaylaştırmak için çok sayıda çatı da içermektedir. Ancak çok sayıda olması, aynı iş için bir çok seçenek bulunması nedeniyle bir çok kişi için karmaşıklık ortaya çıkarmaktadır. Öteki dillerde bir veya bir kaç ile sınırlı olan seçenek sayısı Java için onlarca, kimi durumda yüzlerce seçeneğe ulaşabilmektedir.

İyelikli Ürünler (Proprietary Products) & Açık Kaynak (Open Source)

Java Girişim için geleneksel olarak iki tür geliştirme türü bulunmaktadır. Bunlardan birisi iyelikli yazılım (proprietary software) ötekisi de açık kaynaklı yazılım (open source software) biçimindedir. İyelikli yazılımlar ücretli olarak satılır ve buna uygun olarak yoğun destek sağlanır. Bu yüzden de büyük kurumlarca yeğlendir. Öte yandan açık kaynaklı yazılımlar ücretsizdir. Yalnızca destek almak için ücret ödenir. İyelikli yazılımları yeğleyenler genelde olası sorunlarda gecikmeye hoşgörüsü olmayan kurumlardır. Ancak kimi kurumlar açık kaynaklı geliştirmeyi başarıyla özümsedikleri için herhangi bir sorun olmadan çalışmayı sürdürebilmektedir. Özellikle kamu kurumlarında açık kaynak kullanımı geçerli bir seçenek olarak düşünülebilir.
Geçmişte Java Girişim için iyelikli ürünlerle açık kaynaklı ürünler arasında çok önemli ayrımlar bulunmaktaydı. İki ayrı geliştirme yöntemini gerekli kılmaktaydılar. Ancak zamanla iki yakadaki ürünler birbirlerinden özellik almaya, kimi işlevleri birlikte gerçekleştirmeye başladılar. Bu yüzden günümüzde aralarındaki ayrım çok az düzeyine inmiştir. Kimi durumlarda tek ayrım ürünlerin ücretli olup olmamaları ve destek alınıp alınmamasıdır.
İyelikli ürünlerden Oracle WebLogic ve IBM Sphere gibi kurumlar öne çıkmaktadır. Açık kaynaklı sunuculara örnek JBoss Wilfly ve Spring verilebilir. İki yaka ile de ortak çalışma yürüten Apache kurumun Tomcat ürünü bulunmaktadır. Söz konusu ürünlerin çoğu Tomcat sunucusunun bir taban olarak almaktadır. Öte yandan hiç bir girişim sunucusu (enterprise server) ya da uygulama sunucusu (application server) kullanmadan, Apache Tomcat ürününü, üzerine bir takım betiklik (library) ve çatı (library) ürünleri ekleyerek bir uygulama sunucu olarak kullananlar da bulunmaktadır.

Java Girişim Eğrimi (Java Enterprise Edition)

Java ile girişim (enterprise) alanında geliştirme yapan kurum ve örgütlerin ortak bir ölçün (standart) üzerinde anlaşmak için Java Topluluk Süreci (Java Community Process) adlı bir yapı oluşturulmuştur. Buna Java dilindeki betiklik (library) ve framework (çatı) gibi konularda ortak kararlar almaktadırlar. Büyük kurumlar için geliştirilen ölçünlerin bütününe Java Girişim Eğrimi (Java Enterprise Edition) adı verilir. Her kurum, bu eğrimdeki özellikleri gerçekleştirir. Ancak onun ötesinde bir çok araç sunar. Eğrim dışındaki araçlarda başlangıçta ölçün aranmaz. Anca onlar da gelecekte sürece sokularak eğrimin bir parçası olabilir.
Java Girişim Eğrimi kimi kez Java EE, JEE ya da kısaca EE olarak adlandırılabilir. Eskiden J2EE biçiminde bir ad da kullanılırdı ancak artık bundan vazgeçilmiştir.Girişim alanında kullanılan, ancak istemciler için de geçerli olan betiklikler zaman içinde Java Ölçün Eğrimi (Java Standard Edition)
Bu eğrimin içine giren betiklik ya da çatılardan kimileri aşağıdaki yer almaktadır. Bunlardan Java Ölçün Eğrimi (Java Standard Edition) içinde olanları da içlerinde yer almaktadır. Yeri geldike ilgili konulara ilişkin sözcükler de konmuştur
  • Servlet, JSP, JSF, MVC
  • JDBC, JPA, ORM
  • JAXP, JAX-WS, SOAP
  • JSONP, JAX-RS, REST
  • EJB, JMS, JTA
  • CDI, IoC

Ölçün Dışı Ürünler

Java EE içerisinde bulunmayan ürünler de bulunmaktadır. Bunlardan bir kesimi girişim basımında bulunların ötesinde, onlara ek özellikler içermektedir. Kimisi ölçünde bulunanlara bir almaşık oluşturmaktadır. Aşağıda bunlardan önemli olanlar sayılmaktadır:
  • PrimeFaces, IceFaces, RichFaces, MyFaces
  • Hibernate, EclipseLink, TopLink
  • Spring

Girişim Sunucuları (Enerprise Servers)

Java Girişim Eğrimi destekleyen uygulama sunucu (application server), ya da kimi durumlarda kullanılan adıyla girişim sunucusu (enterprise server) adı verilen ürünler bulunmaktadır. Bunların bir kesimi iyelikli (proprietary) bir kesimi de açık kaynaklı (open source) ürünlerdir.

Açık-Kaynaklı Sunucular:
  • Apache Tomcat & TomEE
  • JBoss Wildfly
  • Spring & Tomcat
  • Eclipse (Sun) Glassfish
  • Apache Geronimo
İyelikli Sunucular:
  • Oracle (BEA) WebLogic
  • IBM WebSphere

Bilgi/Açıklama

Android Kursu

Android Nedir?

Android, başta akıllı telefonlar olmak üzere gezici (mobile) aygıtlar için geliştirilmiş bir işletim düzeni (operating system) yazılımıdır. Çekirdeğinde C/C++ dilleriye geliştirilmiş Linux işletim düzeni yer alır. Üzerinde de Java ile geliştirilmiş bir arayüz bulunmaktadır. Android işletim düzeninde C/C++ ile geliştirme yapmak olanaklı da olsa çok özel durumlarda kullanılan bir yoldur. Android'in temel geliştirme dili Java'dır. Son dönemlerde Kotlin adında, göreli olarak kolay bir dil ortaya çıkmıştır. Ancak hâlâ yazılım çoğu Java diliyle gerçekleştirilmektedir.

Temel Android Konuları

Etkinlik (Activity)

Android ile geliştirme yapmanın temel birimi Etkinlik (Activity) adı verilen sınıflar yapmaktır. Bir etkinliğin görsel bileşenelerine Görünüm (View) adı verilir. Birden çok görünümden oluşan yerleşim yapmaya yarayan yapıya Serim (Layout) denir. Birbiriyle ilişkili bileşenlerin oluşturduğu, bir ekranın belli bir bölümünü kapsayan birime Kırıntı (Fragment) adı verilir. Android işletim düzeninde geliştirme için Java kullanılırken arayüz için XML kullanılır.

Görsel Bileşenler

Android işletim düzenindeki görsel bileşenler oldukça varlıklıdır. Bunlardan dizelge (list), ızgara (grid) gibi yapılar kullanarak gelişmiş biçim (form) etkileşimi yapmak olanaklıdır. Temel düzeydeki bileşenler dışında Android ileri düzey bileşenler de içermektedir. Tüm görsel bileşenlerde diriltme (animation) özellikleri bulunmaktadır. Tüm bunlar kullanarak gelişmiş arayüzler yapılabildiği gibi doğrudan çizgeleme (graphics) kullanarak oyun (game) yapmak da seçenekler arasındadır.

Duyaç (Sensor) ve Dinleyici (Listener)

Android uygulamaları çok sayıda duyaç (sensor) içerirler. Bulundukları ortamdaki ses, ışık, manyetik alan gibi bilgilere ulaştıkları gibi aygıtın devinimi, ötelemesi ve dönmesi gibi konuları da algılayabilirler. Bunun dışında aygıtın bulunduğu konum (location) bilgisine erişip, eşlem (map) / harita üzerinde gösterebilirler. Gezici aygıtın içinde bildirimler ve iletilerle çalışabilirler.

Ağ (Network) ve Akım (Stream)

Android uygulamaları ağ (network) üzerinden sunucu (server) ile iletişim kurabilirler. Özellikle HTTP iletişim kuralı üzerinde REST tekniğiyle JSON biçimlendirmesinde veri alış verişi sağlanmaktadır. Bunun da ötesinde güvenli iletişim sağlayan HTTPS de desteklenmektedir. Android, her işletim düzeni gibi sırtlı düzeni (file system) ile dosya ve dizinlerle ilgili işlevler barındırırlar.

Veritabanı : SQLite

Android işletim düzenlerinde SQLite adı verilen küçük bir veritabanı bulunmaktadır. Buna göre veriler bunun içinde veritabanı (database) üzerinde tablolar olarak saklanabilir ve SQL ile sorgulabilir. Bunun dışında aygıtın üzerinde bulunan verilere yine SQL ile erişim sağlanabilir. Örneğin değme (contact) bilgilerine ulaşmak olanaklıdır.

Uygulama Geliştirme

Android üzerinde geliştirebilmek için Java dilini bilmek ve ilgili betiklik (library) biçimindeki araçlara erişmek yeterli olmaz. Bunun dışında gezici (mobile) uygulamaların geliştirme mantığını da anlamak gerekir. Özellikle istemci-sunucu (client-server) iletişimin sağlanması, verinin bir ölçüde istemcide bir ölçüde de sunucuda tutulması gibi durumlar söz konusudur. Sıradan kullanıcı görsel bileşenleri kullansa da arka yakada sunucuyla bir çok yolla iletişim kurularak işlemler gerçekleştirilmektedir.
Android geliştirme eğitimlerinde ileri bir arayüz geliştirilmesi, aygıtın tüm özelliklerine erişilmesi ve istemci-sunucu veri iletişimi sağlanmasına yönelik projeler yapılır. En sık yapılan uygulama projesi, kullanıcının konumuna göre sunucudan sorgu yapılıp yakınındaki bir takım yerler veya kişilerin gösterilmesidir. Bu tür bir uygulama hem kullanıcıyla etkileşimi hem aygıtın durumuna erişimi hem de sunucuyla iletişimi içerdiğinden tipik bir yazılım geliştirme sürecindeki temel öğelerin üzerinden geçilmesi sağlanmış olmaktadır.

Android Geliştirme İle Bilinmesi Gerekenler

Çizgelemeli Tasarım (Graphical Design)

Her ne denli Android üzerinde Java ile gelişirme yapmanın öz alanına girmese de çoğunlukla Android uygulamaları görsel bir tasarım içerirler. Bunun için çizgelemeli tasarım (graphical design) bilinmeli ya da bilen kişi ve kurumlardan yardım alınmalıdır. Android eğitimine ek olarak gelişmiş bir tasarım eğitimi kuru bulunmaktadır. Ancak Android dışındaki alanlar için de yararlıdır.

Oyun İzlendirme (Game Programming)

Doğrudan Android geliştirme olarak görülmese de Android işletim düzeninde çalışan aygıtlar aynı zamanda bir oyun bilgisayarı olduklarında oyun izlendirme (game programming) alanında da eğitim verilmektedir. Ancak, Java yerine yazılım pazarında daha çok yeğlendiği biçimiyle, Unity kullanılarak C# diliyle bu eğitim verilmektedir. Unity ile yazılan uyulamalara Android üzerinde de çalışmaktadır.

Android Geliştiriciler İçin Gerekli Bilgiler

Java İzlendirme

Android eğitimlerinde geliştirme için gerekli Java anlatılmaktadır. Ancak bir çok geliştirici için temel bilgilerin ötesinde Java eğitimi almaları gerekli olabilmektedir. Bunun da ötesinde, istemci yakasından Android olan düzenler sunucu yakasında C#.NET, PHP ya da Java kullanmaktadır. Sunucu yakasında Java kullanmak, istemci yakasında Java kullananlar için yeğlenebilecek bir yoldur. Böyle bir durumda Java eğitimi almak da gerekli olmaktadır.

Örün Ön-Uç (Web Front-End) ve Veritabanı Arka-Uç (Database Back-End)

Android kursu kapsamında olmasa da her geliştiricinin bilmesi gereken konular bulunmaktadır. Bunlardan örün dilleri (web languages) ise HTML, CSS ve JavaScript içermektedir. Buna ön-uç (front-end) adı verilmektedir. Bunun tümüyle tersi, arka-uç (back end) geliştirme ise SQL, JSON ve XML konularını içermektedir.
Detaylı bilgi için: Tıklayınız

Bilgi/Açıklama

Web Front-End Kursu

Temel Bilgiler

Genellikle örün (web) ortamında geliştirilen uygulamaların kullanıcıyla etkileşim içinde çalışan bölümüne ön-uç (front-end) adı verilir. HTML, CSS ve JavaScript dilleriyle geliştirme yapan kişiler de ön-uç geliştirici (front-end developer) adı verilir

HTTP

Bilgisayarların birbirleriyle bağlanmasıyla oluşan Genelağ (Internet) üzerinde en çok kullanılan iletişim kuralı HTTP olarak adlandırılır. HTTP ile kurulan yapıya genenllikle Örün (Web) denir.

HTML

Örünün en yaygın kullanılan dili HTML olarak adlandırılır. Bununla örün yerliği (web site) yapmak olanaklı olur. Buna göre, genellike gözatıcı (browser) olarak adlandırılan bir istemci (client) uygulamsı sunucu (server) üzerindeki içeriği bir adres üzerinden alır ve kullanıcıya gösterir.

CSS

HTML dilinin biçem (style) özellikleri için CSS dili kullanılır. Buna göre görsel tasarım (visual design) tek bir yerde yapılabilir ve tüm örün beti (web page) birimleri bunu kullanarak aynı biçemle gösterilebilir. Başka bir deyişle bir örün yerliğindeki betlerin tüm görsel tasarımı CSS ile bildirilir.

JavaScript

Bir gözatıcı (browser) içinde izlendirme (programlama) yapabilmek için JavaScript adı verilen dil kullanılır. Başlangıçta Java ile birlikte çalışmak üzere düşünüldüğü için bu adı almıştır ancak şu an için JavaScript ile Java çok ayrı bir dildir.
JavaScript dilinin ilk kullanım amacı örün betlerinden çok yalın çok kolay işlemler yapmaktı. Ancak varlıklı bileşenler (rich components) ile çok gelişmiş arayüzler yapılması ve AJAX tekniğiyle XML ve JSON üzerinden sunucudan veri çekilerek işlem yapılması amacıyla giderek gelişmiş ve karmaşık bir duruma gelmiştir.

HTML5, CSS3 & ECMAScript

Örün betleri giderek gelişmiş, başlangıçta durağan bir içerik gösterme dili olarak kullanılan HTML, giderek bir geliştirme (development) gerektiren bir dil durumuna gelmiştir. Bu nedenle bir çok ek özellik HTML, CSS ve JavaScript dillerine eklenmiştir.

HTML5

HTML diline son yapılan eklemelerin ölçün (standard) olmuş biçimine HTML5 adı verilir. Gelen özelliker arasında anlambilimsel öğeler (semantic elements), görüntü (video) ve işiti (audio), tuval (kanvas) ve SVG ile çizgeleme (graphics), konum (location), yerel saklatım (local storage) gibi konular sayılabilir.

CSS3

HTML5'e benzer bir biçimde CSS diline yapılan eklemeler de CSS3 adını almıştır. Gelen özellikler arasında yuvarlak bucaklar (round corners), gölgeler (shadows) ve bayırlık (gradient), ortam sorgusu (media query), dönüştürüm (transformation), geçişim (tansition) ve diriltim (animation) gibi konular sayılabilir.

ECMAScript

JavaScript dili sürekli gelişme içine girmiştir. ECMA adı verilen bir kurum yeni özellikler ekleyerek JavaScript dilini çok yalın bir dil olmaktan çıkarıp oldukça karmaşık bir duruma getirmiştir. JavaScript adını JScript, ActionScript gibi türevleri benimesemek istemedikleri için dilin adına ECMAScript denmesi istenmiştir. Ancak geliştiriciler bu adı benimsemeyip yinede JavaScript adını kullanmaktadır.

Çeviri Dilleri, Betiklikler ve Çatılar

HTML, CSS ve JavaScript dillerinin son sürümleriyle oldukça gelişmiş bir duruma gelmiştir. Ancak ileri özellikleri kavramak çetin olabilmekte, anlaşılsalar da uygulanmaları uzun süre alabilmektedir. Geliştirme sürecini hızlandırmak için bir çok çalışma yapılmaktadır. Bunlar birbiriyle kimi durumda uyumlu kimi durumda uyumsuz olabilmektedir. Temelde aynı işi yapan bir çok almaşık bulunduğundan çok sayıda seçenek arasında yitip gitmek olanaklıdır.
CSS ve CSS3 dillerine herhangi bir izlendirme dili (programming language) içinde olan özellikleri eklemek için SASS ve LESS gibi diller bulunmaktadır. JavaScript ile geliştirmeyi kolaylaştırmak, HTML ve CSS ile ilişkilerini kolay kurmak için JQuery adlı bir betiklik (library) bulunmaktadır. AJAX tekniğiyle geliştirme yapmak için Angular, bileşenler oluştururak örün beti (web page) yaratmak için React gibi çatı (framework) ürünleri çıkmıştır.

Çizgelemeli Tasarım (Graphics Design)

Doğrudan ön-uç geliştirme (front-end) alanında olmasa de kullanıcıyla iletişim alanında çalışan herkes gibi bu alandaki geliştiriciler de çizgeleme (graphics) konusunda bilgili olmalıdır. Bir örün yerliği (web site) belli bir tasarım (design) içerir. Bunlar çizgeleme tasarımcısı (graphics designer) adı verilen kişilerce gerçekleştirilir. Ancak kimi durumlarda bu görev ön-uç geliştiriciye kalabilmektedir. Doğrudan o işlevi üstlenmese de çizgeleme ve tasarım konusunda bilgi sahibi olması gerekmektedir.
Çizgelemeli Tasarım ya da Görsel Geliştirme (Visual Development) alanı imge (image), görüntü (video), işiti (audio) gibi ortamlar içerir. Bunların üretilmesi dışında herhangi bir uygulamada kullanılması da bu işlemin bir parçasıdır. Özellikle CSS konusu ile imgeler arasında renk açısından uyum gereklidir.

Kullanıcı Arayüzü (User Interface) ve Kullanıcı Deneyimi (User Experience)

Bir uygulama ile kullanıcı arasında etkileşim (interaction) gerçekleştiren birimlere kullanıcı arayüzü (user interface) adı verilir. Çoğunlukla görsel araçlarla etkileşim yapıldığı için, kimi durumlarda çizgelemeli kullanıcı arayüzü (graphical user interface - GUI) olarak da adlandırılır. Öte yandan, kullanıcı etkileşimi yalnızca görsel bileşenlerden oluşmaz. Kullanıcın bir uygulamayı kolay kullanması, aradağını çabuk bulabilmesi, sonuçları daha rahat anlayabilmesi için çalışma yapılması gereklidir. Görsel işlemler dışında kullanıcı etkileşimi tüm bu öğeleriyle birlikte el alınınca kullanıcı deneyimi (user experience) kavramı ortaya çıkar. Buna göre yalnızca görüntü değil kullanım kolaylığı da önemli duruma gelir.
Detaylı bilgi için: Tıklayınız

Bilgi/Açıklama

HTML & CSS Kursu

HTML ve CSS Üzerine

HTML

HTML dili, örün üzerinden içerik tanımlamak için kullanılır. Buna göre bir istemci (client) uygulaması HTTP adı verilen iletişim kuralı (protocol) ile sunucu (server) bilgisayarına bağlanır; oradaki içeriği alır ve kullanıcının anlayabileceği biçimde gösterir. İnsanlara hizmet veren istemci uygulamasına gözatıcı (browser) adı verilir. HTML belgeleriyle HTTP iletişim kuralı ile oluşturulan birimlere yerlik (site) adı verilir.
Buna göre bir yerlik bir çok HTML belgesinden oluşur. HTTP her ne denli başlangıçta yalnızca HTML ve ona yardımcı bileşenleri sunmak için yapıldıysa da örün sunumu (web service) adı verilen yöntemle gözatıcı dışında kullanımı da bulunmaktadır. Bu nedenle HTML, HTTP iletişim kuralı ile iletilen içerik türü (content type) seçeneklerinden birisidir.

CSS Üzerine

CSS dili, HTML belgelerinin biçem (style) özelliklerini tanımlamak için kullanılır. Buna göre renk, biçim ve uzunluk gibi değerler bir kez tanımlanır ve HTML belgesinin bir çok yerinde birden çok kez kullanılır. Aynı CSS tanımlamalarını birden çok HTML belgesi için, dahası tüm bir yerlik (site) için tanımlamak da olanaklıdır.

HTML5 ve CSS3

HTML ve CSS dilleri zaman içinde oldukça gelişmiş özellikler edinmişlerdir. Bunların en son sürümlerindeki değişiklikler o denli kökten olmuştur ki ayrı bir adla anılmaya başlanmıştır. Buna göre HTML5, HTML dilinin ötesinde; CSS3 de CSS dilinin bir dil olarak adlandırılmaktadır. Öte yandan HTML5 ve CSS3 dilleri, HTML ve CSS dillerindeki neredeyse tüm özelliklerini, kimi durumlarda bir kaç küçük düzeltme ile kapsarlar. Bu nedenle HTML5 ve CSS3 anlatan belgeler HTML ve CSS dillerinin bilindiğini varsayarak üzerine eklenen gelişmeleri anlatırlar.

HTML5

HTML5 ile gelen özelliklerden en önemlileri aşağıda yer almaktadır
- Anlambilim (Semantics) : Daha önce HTML dili, içinde bulundurduğu içeriğin anlamına ilişkin bir öğe içermezdi. HTML5 ile içerikte başlık (header), ayaklık (footer), gezinme (navigation) ve tanımlık (article) adında, içeriği tanımlayan öğeler bulunmaktadır. Bu biçimde arama motoru gibi, belgeleri işleyen uygulamaların içeriğin hangi kesiminde ne tür bir bilgi bulunduğunu anlaması olanaklı duruma gelmiştir.
- Biçim Öğeleri (Form Elements) : HTML5 dilinde biçim (form) içinde kullanılan öğelerde gelişmiş özellikler bulunmaktadır. Örneğin veri türü (data type) için destek gelmiştir. Buna göre girdileri sayı, günay / tarih (date), eposta gibi türlerini belirlenebilmekte, bunların geçerleme (validation) işlemleri gözatıcı yakasında yapılabilmektedir. Bunun dışında kendinden tümleme (autocompletion) özelliklere destek gelmiştir. Buna göre kullanıcı bir kaç özyapı (character) girince buna uygun seçilebilecek bir veri dizelgesi (data list) görünür.
- Çizgeleme (Graphics) : HTML5 üzerinde diri (live) olarak çizim yapmak olanaklı duruma gelmiştir. Bunun için tuval (canvas) desteği eklenmiştir. Buna göre geliştirici JavaScript kullanarak belgede çizim yapabilir. Buna bir almaşık olarak da SVG adı verilen, XML ile yöneyli (vectoral) çizgeleme üretilmesini sağlayan bir destek de var olan özelliklere eklenmiştir.
- Görüntü (Video) ve İşiti (Audio) : Daha önce JavaScript diliyle bir çok ek betiklik kullanılarak yapılan görüntü ve işiti oynatma işlemleri HTML5 ile tek bir öğe ile ölçün bir biçimde yapılabilmektedir.
- Aygıtla Etkileşim : HTML5 ile yerel saklatım (local storage) gözacıda veri saklamak olanaklıdır. Bunun dışında HTML belgesinin çalıştığı aygıtını konum (location) durumu edinilebilmektedir.

CSS3

CSS3 ile gelen en önemli özellikler aşağıdaki gibidir:
- Gölge (Shadows), Yuvarlak Bucak (Rounded Corner), Artalan İmgesi (Backround Image): Daha önce CSS ile yapılması olanaklı olmayan ya da çok güç olan işlemler için destek gelmiştir. Öğeler gölge (shadow) vermek köşeleri yumuşak yapmak için yuvarlak bucak (rounded corner), herhangi bir öğeye artalan imgesi (background image) atamak bunlar arasında sayılabilir.
- İlerlemiş Seçiciler (Improved Selectors) : CSS biçemlerinin hangi HTML öğelerine uygulanacağını belirleyen seçici (selector) yapısı kökten bir biçimde değişmiştir. Artık bir öğe (atrribute), nitelik (attribute) özelliklerine göre seçilebilmektedir.
- Dönüşüm (Transform), Geçişim (Transition) ve Diriltme (Animation): Bir öğenin konumunu değiştirmek için dönüşüm (transformation), bir renkten ötekine geçildiği bir görünüm sağlamak için geçişişm (transition) ve öğeleri oynatmak için diriltme (animation) özellikleri gelmiştir.
- Ortam Sorgusu (Media Query) : Belgenin küçük-büyük, dar-geniş bir çok ekranda düzgün görünmesini sağlayan, yanıtlı tasarım (responsive design) özelliğini sağlayan ortam sorgusu (media query) adında bir destek CSS3 diline gelmiştir.

CSS Çatıları ve Dilleri

CSS3 diliyle bir çok gelişmiş özellik gelse de bir çok geliştirici için yeterli bulunmamaktadır. Çoğu kez, gelişmiş özellikleri kullanmak çok karmaşık olabilmektedir. Bir başka sorun da CSS dilinde izlendirme dillerinde olan değişken (variable), işlev (function), koşul (condition) ya da döngü (loop) türü yapıların olmamasıdır. Bu gibi nedenlerde bir çok dil (language) ve çatı (framework) geliştirilmiştir.

Bootstrap ve Yanıtlı Tasarım (Responsive Design)

CSS3 ile gelen gelişmiş özelliklerden birisi de yanıtlı tasarım (responsive design) konusudur. Buna göre aynı HTML içeriği hem büyük ekranlı bilgisayarlar hem de küçük ekranlı telefonlar için çalışabilmektedir. Tek bir tasarım değişik boyutlarda aynı olmasa da düzgün gözükmektedir. Ancak CSS3 ölçünündeki özelliklerin kullanımı çok çetin olabilmektedir. Bunu kolaylaştırmak, yanıtlı tasarımı kolay kılabilmek için Bootstrap gibi çatılar ortaya çıkmıştır. Bunlar CSS3 yanında JavaScript de kullanarak geliştiricinin bir kaç bilgi vererek yanıtlı tasarımı gerçekleştirmelerini sağlar.

SASS & LESS

CSS, bildirimli (declarative) bir dildir. Yazılım geliştirme dillerinde olan değişken (variable), işlev (function), koşul (condition) ya da döngü (loop) türü yapılarını içermez. Bu nedenle, elle geliştirme yapmak oldukça güç olabilmektedir. SASS ve LESS gibi diller ise, geliştiricinin gelişmiş yapıları kullanarak biçemleri belirlemesini sağlar. Ancak SASS ve LESS dillerinde yazılmış düzgü (code) parçaların istemci (client) yakasındaki gözatıcı (browser) uygulaması tanımaz. Bu nedenle sunucuda CSS diline (örneği CSS3 sürümüne) çevrilmesi gerekir. Buna derleme (compiler) adı verilse daha çok öteleme (translator) adı da verilir.
Detaylı bilgi için: Tıklayınız

Bilgi/Açıklama

JavaScript Kursu

JavaScript Üzerine

JavaScript, bir gözatıcı (browser) içinde HTML ve CSS ile oluşturulan örün betlerinde geliştirme (development) yapmak için kullanılan bir izlendirme dili (programming language) olarak kullanılır. Tüm gözatıcılar bu dili desteklediği için başka bir almaşık yoktur. Öte yandan JavaScript diliye sunucu (server) yakasında geliştirme yapmak da olanakdır.
JavaScript adının Java diliyle ilişkisi, ilk çıktıklarında uyumlu bir işbirliği içinde çalışmaları için verilmiştir. Ancak Java dili sunucu yakasında yaygın kullanılırken JavaScript istemci yakasında kullanılmaktadır. Onun dışında, söz dizimi benzerliğinden başka bir ilgileri yoktur.

JavaScript İleri KOnular

ECMAScript

JavaScript dilinin ilerlemesiyle birlikte ECMAScript ölçününe bir çok gelişmiş yapı eklenmiştir. Örneğin nesne yönelimli izlendirme (object-oriented programming) tekniği tüm özellikle dilde bulunmaktadır. Bunun dışında, olağan koşullarda bir çatı (framework) ile gerçekleştirilen, AJAX gibi işlemler için bulunan işlevler dilin kendisine içerilmiştir. ECMAScript dilin son sürümleri gözatıcı (browser) uygulamalarınca tanınmaktadır.

TypeScript

ECMAScript dili son derece gelişmiş özellikleri desteklese de kimilerince eksik bulunur. En önemli eksiği tür güvenli (type-safe) olmamasıdır. Ancak bu eksiklik kimilerine göre olumsuz değil, kolaylaştırıcı bir niteliktir. ECMAScript diline tür (type) desteği eklenmesiyle TypeScript adı verilen bir dil oluşur. Doğallıkla başka bir takım eklemeler de bulunmaktadır ama en belirleyici ayrım tür konusudur. Bununla birlikte, istemci yakasındaki gözatıcılar bu dili tanımaz. Bu nedenle sunucuda TypeScript dilinden JavaScript (daha doğru bir deyişle, ECMAScript) diline dönüştürmek gerekir.

Node.js ve NPM

Node.js, sunucu yakasında JavaScript ile geliştirme yapmak için tasarlanmış bir çevredir. Olağan durumlarda istemci yakasında kullanılan JavaScript dilinin sunucu yakasına aktarılmış biçimidir. Bunda amaç Java, C#.NET ve PHP gibi dillere yarışmacı olabilmektir. Ancak bu biçimde kullanımı oldukça sınırlı kalmış, ancak belli bir kullanım alanı da bulmuştır.
Öte yandan sunucu yakasında geliştirme için kullanılan Node.js, ECMAScript desteği dışında NPM (Node Package Manager - Düğüm Bohça Yöneticisi) adı verilen, geliştirici için gerekli bohça (package) yüklemeye yarayan bir araç içermektedir. Bu araç, Node.js ile geliştirme için değil, sunucu yakasında işlem yapılmasını gerekli kılan TypeScript, SASS ve LESS, Angular ve React gibi araçlarca kullanılmaktadır. Bu biçimiyle Node.js ve NPM, istemci yakasında çalışan ancak sunucu yakasında üretilen dil, betiklik ve çatıların geliştirme takımı olarak işlev görmektedir. Bu nedenle, bir örün çatısını kurmak için öncelikle Node.js kurmak ve NPM kullanmak gerekli olmaktadır.

JavaScript Betiklik (Library) & Çatı (Framework) Seçenekleri

JavaScript ya da onun son sürümlerinin ölçünü ECMAScript dilinde ileri özellikler bulunsa da çoğu kez geliştirme yapmak oldukça çetin olabilmektedir. Bu amaçla, işleri kolaylaştıracak JQuery, Angular ve React gibi betiklik (library) ve çatı (framework) ürünleri kullanılır.

JQuery

JavaScript diliyle HTML öğe (element) ve CSS seçici (selector) birimlerine kolay erişmek için JQuery (JavaScript Sorgusu) adlı bir betiklik yapılmıştır. Temel amacı JavaScript, HTML ve CSS dillerinin ayrı yapılarını tek bir biçime getirmektir. Doğrudan kendisini kullanılmasa da bir çok çatı bu betikliğin üzerine kurulmuştur.

Angular

AJAX türü gelişirmeyi kolaylaştırmak için Angular adlı bir çatı üretilmiştir. Temel mantığına MVVM (Model View View Model - Taslam Görünüm Görünüm Taslam) adı verilen bir yapıdır. Buna göre amaç JavaScript ile tanımlan veri (data) için taslam (model) sözcüğü kullanılır ve HTML için görsel öğeler de görünüm (view) adını alır. Angular çatısı JavaScript diliyle taslamda yapılan değişikliği kendiliğinden görünüme yansıtır. Görünümde HTML ile yapılan kullanıcı değişikliğini de kendiliğinden JavaScript ile tanımlı taslama geçirir. Başka bir deyişle AngularJS, JavaScript ile HTML arasındaki etkileşimiş herhangi bir geliştirme yapmadan, kendiliğinden sağlar.

React

Karmaşık örün beti (web page) geliştirmek için kullanılan çatılardan birisi de React adını taşır. Burada bileşen (component) mantığı bulunur. Buna göre bir örün betindeki herhangi bir bölüme ilişkin HTML, CSS ve JavaScript tek bir bileşen olarak görülür ve aralarındaki iletişim kendiliğinden yapılır. React, JavaScript ile HTML üretilmesini sağlar. JavaScript içinde HTML yazmayı kolaylaştırmak için de JSX adlı bir dil bulunmaktadır.

AJAX, XML, JSON, REST

HTTP iletişim kuralında HTML ile yapılmış bet (page) adı verilen belgelerle çalışılır. Kullanıcı bağ (link) adı verilen bileşenlere tıklayarak başka bir bete geçebilir. Ancak AJAX tekniğinde, bet değiştirilmeden, yalnızca gösterilecek içeriği sunucudan alınarak ve ekranda kullanıcının önüne getirilerek çalışılır. Kullanıcı bekletmemek için bu eşzamansız (asynchronized) olarak gerçekleşir. Sunucudan veri başlangıçta XML olarak alınmaktaydı. Daha sonra JSON biçimlendirmesi daha yaygın kullanılır duruma gelmiştir.
Sunucu yakasında AJAX tekiğiyle çalışan örün betlerine veri sağlama işlemine REST adı verilir. Buna göre sunucuda Java, C# ya da PHP gibi bir dilde bir sunum (service) yapılır. Bu istemciye JSON ya da başka bir dille veriyi HTTP üzerinden veriri. İstemci de bunu alıp örün yerliğinde gösterir. REST, her ne denli AJAX için kullanılsa da REST kullanmadan AJAX ile çalışmak olanaklı olabildiği gibi, bunun tümüyle tersi, REST yöntemini AJAX dışında da kullanmak olanaklıdır.
Detaylı bilgi için: Tıklayınız

Bilgi/Açıklama

Database Back-End Kursu

Temel Bilgiler

Uygulamanın kullandığı verilerin saklandığı yere veritabanı (database) adı verilir. Veritabanları, verilerin kalıcı olarak tutulmasını sağlarlar. Bunlar içinde en bilinen türü ilişkisel veritabanı (relational database) adını alır. Erişim için kullanılan dil SQL olduğu için kimi durumlarda SQL veritabanı olarak da adlandırlır. Ancak bunun dışında verilerin düz dosyalarda tutulduğu sırtlı-tabanlı veritabanı (file-based database); nesnelerin doğrudan saklandığı nesne veritabanı (object-database) türleri de bulunur. Bunların dışına yeni ortaya çıkan veritabanı türlerine de NoSQL adı verilir.

İlişkisel Veritabanı (Relational Database) & SQL

En çok kullanılan ve bilinen veritabanı türüne ilişkisel veritabanı (relational database) adı verilir. Bunlar verileri çizelge (tablo) olarak saklarlar. Her kayıt bir satır / yataç (row) olarak tutulur ve o kayıttaki bilgi parçaları da sütun / dikeç (column) adıyla anılır. Veri birimlerine varlık (entity) ve varlıkların birbirlerin göre bağlantılarını belirleyen özelliğe de ikişki (relation) adı verilir.
İlişkisel veritabanlarına erişmek için SQL adı verilen bir dil kullanılır. Veritabanını içeren sunucu (server) uygulamasına SQL diliyle sorgu (query) adı verilen bir istekte bulunulurlar ve bu sorgudan bir sonuç (result) üretilerek istemci (client) birimine gönderilir. SQL dili doğrudan veritabanı üzerinde işlem yapmak için kullanılsa da çoğu kez Java, C# ve PHP gibi dillerle uygulamalardan erişim yapılır. Başka bir deyişle veritabanları, uygulamaların arkasında kalır ve doğrudan kullanıcı erişimi yapılmaz.
SQL veritabanı ürünleri arasında açık kaynaklı olanları arasında MySQL/MariaDB ve PosgreSQL sayılabilir. Ücretli yazılımlardan Oracle, IBM DB2 ve Microsoft SQL Server adlı ürünler sayılabilir. Kimi kurumlar eleştirilik (critical) uygulamalarda ücretli yazılımları kullanırken, ötekilerde açık kaynaklı veritabanları yeğlemektedir. Öte yandan, ücretli hizmet vermeyen ve çok veritabanı gereksinimi olan kurumlar açık kaynaklı yazılımları yeğlemek durumundadır.

NoSQL (SQL Yok - Yalnızca SQL Değil)

SQL ile çalışan ilişkisel veritabanlarına almaşık olarak bir çok veritabanı türü bulunmaktadır. Bunlar başlangıçta SQL Yok (No SQL) anlamında NoSQL denmeye başlanmıştır. Ancak SQL dilin tümüyle yerine geçeceği düşünülen bu yeni yapılar beklendiği düzeyde SQL karşısında etkli olamadılar. Öte yandan bir çok yerde kullanım alanı bulmuş, geçici bir akım olmadıklarını da kantılamışlardır. Şu anda NoSQL sözcüğü No SQL (SQL Yok) sözcüğünün yerine Not Only SQL (Yalnızca SQL Değil) anlamına gelmektedir. Bu yaklaşımda NoSQL veritabanları SQL veritabanlarının yanında kullanılan ürünler olarak anılmaktadır.
Tek bir başlık altında toplansalar da aslında NoSQL veritabanları birbirinden çok ayrıdır. Dahası, bir birine çok ters yönde ilerlemişlerdir. Ancak kimi durumlarda birden çok yaklaşım birleştirilerek aynı anda desteklenebilmektedir. Onun da ötesinde SQL dilini de destekleme ya da SQL gibi görünecek bir sözdizimi kullanma yoluna da gidilmiştir. NoSQL veritabanları çoğunlukla JSON ve XML gibi biçimlendirmeler kullanırlar. Kimisi erişim için SQL benzeri diller kullanırken kimisi de JavaScript gibi betim (script) dilleriyle erişim sağlarlar.

Çözümlemeci (Analyst), Geliştirici (Developer) ve Yönetici (Administator)

Veritabanları bir çok uygulama için gerekli yazılımlardır. Bu nedenle geliştiriciler veritabanlarıyla çalışmayı bilmek durumundadır. Ancak veritabanı sunucularının bakımı oldukça güçtür. Çoğunlukla işletim düzeni (operating system), sunucu donanımı (server hardware), ağ ve iletişim (network & communication), düzen güvenliği (system security) bilgisi gerektirir. Bu yüzden çoğunlukla düzenler yöneticisi (systems administrator) ya da veritabanı yöneticisi (database administrator) orunundaki kişiler bu tür işlerle ilgilenir. Bunlar veritabanı enyileme (optimization) gibi konularda da geliştiriciye yardımcı olurlar.
Veritabanlarıyla çalışmak durumunda olan başka çalışan öbeği da iş çözümlemeci (business analyst) görevi üstelenen kişilerdir. Bunlar verinin üzerinde çalıştıkları için çoğunlukla veritabanının yapısının oluşturulması sürecine katkıda bulunurlar ve veritabanından aldıkları veriler üzerinde çalışma yaparlar. Bu nedenler temel bir SQL bilgisi onlar için de gerekli olmaktadır.

Büyük Veri (Big Data), Veri Bilimi (Data Science), Yapay Us (Artificial Intelligence)

Uygulamalar verileri veritabanında saklar. Daha sonra bu verilere yazanak (report) adı verilen çıktılarla erişilip sonuçlar incelenebilir. Ancak çoğu kurum bunun ötesinde veri kullanımına gitmektedir. Bunun için büyük veri (big data), veri bilimi (data science), yapay us (artificial intelligence) gibi konular da veritabanlarıyla ilgili alanlar durumuna gelmektedir.
Büyük Veri, bir çok veritabanından oluşan veriler bütününe verilen genel addır. Ancak burada veri, işletmelerin kendi kullandığı verinin ötesinde tüm yeryüzünden elde edilebilmekte ve çok iri ölçülerde olabilmektedir. Bu yüzen büyük veri (big data), üzerinde çalışmayı çok çetin kılacak düzeyde büyük veri anlamına gelir. Bu amaçla bir çok bilgisayardan oluşan karmaşık bir yapı kurulması gerekebilmektedir. Var olan bilgisayarları göreli olarak boş oldukları zaman kullanma durumu ortaya çıkmaktadır.
Veri Bilimi (Data Science) ise var olan verilerden özet bilgiler çıkarmak ve geleceğe yönelik kestirim ve öngörülerde bulunmak anlamına gelmektedir. Genelde sayımbilim (statistics) alanının yazılım geliştirme alanında kullanılması olarak algılanabilir. Ancak veri bilimciler, istatistik konuları dışında bilgisayım bilimi (computing science) alanındaki teknikleri de bilmek durumundadır. Veri bilimci daha çok bir yazılım geliştirici (software developer) gibi çalışabilmektedir. Öte yandan, belli bir kurumda çalışan sayımbilimciler de temelde bu işlevi gerçekleştirdikleri için veribilimi ile istatistik arasındaki ayrımın az olduğunu düşünenler de bulunmaktadır. Veri bilimi çoğunlukla büyük veri ile çalışmak durumundadır. Ancak bu koşul değildir, küçük bir veri kümesiyle de veri bilimi yapılabilabilir.
Yapay Us (Artificial Intelligence) alanı, çok karmaşık verilerden anlamlı sonuçlar çıkarılmasını sağlanmasıdır. Bir insan nasıl gördüklerini yorumluyor ve ondan sonuç çıkarıyorsa, bilgisayarlar da bunu yapabilme yolunda ilerlemektedir. Ancak, yaygın kanının tersine, yapay us yalnızca robotlar ve sibernetik alanda kullanılmaz. Yazılımcılar için çoğunlukla geliştirme etkinliğinin yeni bir aşamasıdır. Yapay usla birlikte gündeme gelen iş usu (business intelligence) alanı, iş dünyasındaki verilerde işletme için kullanılabilecek sonuçlar alınması anlamına gelmektedir.
Detaylı bilgi için: Tıklayınız

Bilgi/Açıklama

SQL Kursu

İlişkisel Veritabanı (Relational Database)

Bir uygulamanın kullandığı verilerin tümüne veritabanı (database) adı verilir. Bu tür yazılımlar uygulama çalışırken geçici (transient) olan verileri değil, uzun süreli saklanması gereken, direyici (persistent) verilerle çalışırlar. Veritabanlarına yerel (local) ya da uzak (remote) bilgisayarlardan erişilmesini sağlayan uygulamalara veritabanı sunucusu (database server) adı verilir. Bir sunucu birden çok veritabanını içerebilir. Kimi zaman veritabanı denince sunucunun denmek istediği de olur.
Verilerin varlık (entity) olarak tutulduğu ve bunlar arasındaki ilişki (relation) kurulduğu veritabanı türüne ilişkisel veritabanı (relational database) adı verilir. Bu tür yazılımlara dayalı yapılara ilişkisel veritabanı yönetim düzeni (relational database management system) ya da kısaca İVTYD (RDBMS) adı verilir.
Veritabanı yazılımları ortaya çıkmadan önce veriler dosya / sırtlı (file) adı verilen birimlerde tutulurdu. Verileri bunlara yazmak ve bunlardan okumak geliştirici (developer) ya da izlendirici (programmer) orununda çalışan kişilerin göreviydi. Ancak bu işlem çok yorucu ve rutin bir iş olarak görülürdü. Veritabanı yazılımları bu görevi geliştiricilerden almıştır. Öte yandan veriye erişmek için gereken işlemlerin yapılması gibi bir gereklilik doğmuştur.
İlişkisel veritabanlarına almaşık olarak sırtlı-tabanlı veritabanı (file-based database), nesne veritabanı (object database) ve NoSQL (SQL Yok ya da Yalnızca SQL Değil) biçiminde ürünler bulunmaktadır. Ancak bunlarla çalışılması için de veritabanı kavramlarını öğrenmek için SQL bilinmelidir. Sayılan ürünlere ilişkin belgelemeler ve betikler çoğunlukla SQL konusunun bilindiğini varsayarak bilgilendirme yaparlar.

SQL

SQL dili ilişkisel veritabanlarına erişim için kullanılır. Çok yalın bir sözdizimi olduğu için başlangıçta öğrenimi çok kolaydır. Temelde bir kaç buyruk (command) kullanımı önemli işlemleri yapmak için yeterli olur Ancak yalın dil özellikleri, karmaşık işlemleri için oldukça uzun düzgü (code) yazılmasını gerekli kılar. Bu nedenle karmaşık işlemler için yüzlerce çizgiden oluşan bir geliştirme yapılır.
SQL için temel buyruklar sokma (insert), güncelleme (update), silme (delete) ve seçme (select) olarak sayılabilir. Bir çizelge (table) üzerinde yapılacak temel işlemler bunlardır. Seçme işlemleri için bir kaç alt birimden söz edilebilir. Tüm kayıtları seçmek, tek bir çizgiyi seçmek, verilerden bir kesimini seçmek ya da toplam, sayı, ortalama, en küçük ve en büyük gibi değerleri bulan yığışım (aggregate) işlemleri sayılabilir.
SQL veritabanında tablo / çizelge (table) içerisinde sütun / dikeç (column) biçiminde tarla (field) öğeleri tanımlanır. Belli bir nesneyle ilgili her bilgi bir satır / yataç (row) olarak belirlenir. Her dikeç için bir veri türü (data type) belirlenir ve verilerin ona göre girilmesi denetlenir. Örneğin bütün sayı (integer number) türündeki bir tarlaya sicim (string) değerleri girilemez.

SQL Aytışları (SQL Dialects)

SQL dili tek bir dil değil, bir çok dilin ortak özelliklerini içeren bir ölçün (standard) olarak anlaşılmalıdır. Gerçekte her bir veritabanı üreticisi kendine özgü bir SQL dili üretir. Bu yüzden bunlara lehçe / aytış (dialect) adı verilir. SQL ölçünü de sürekli geliştirilmektedir. Belli aralıklarla özellikler eklenir ve böylece bir aytıştaki gelişmiş özellikler ötekilerde de aynı biçimde kullanılabilir.
Kimi SQL dilleri verilerle temel işlemler yapmanın ötesinde, bir izlendirme dili (programming language) özellikleri içerecek düzeyde gelişmiş bir yapı sunabilir. Buna göre döngü (loop), yordam (procedure) ve (işlev) gibi konuları içeren SQL aytışları bulunur. Örneğin PL/SQL dili Oracle veritabanının kullandığı dildir. Öteki veritabanları da, örneğin Microsoft SQL Server ve IBM DB2 da benzer dilleri içerirler. Kimisinin özel bir adı vardır. Örneğin Microsoft kurumunun gelişmiş SQL dili T-SQL adını alır. Kimisi özel bir ad vermez ve SQL olarak adlandırmayı sürdürür.

İleri SQL Konuları

SQL dilinde temel tablo / çizelge (table) yapısı dışında görünüm (view), tetik (triger) gibi gelişmiş yapılar da bulunur. Ayrıca kısıt (constraint), dizin (index), birincil açar (primary key) ve yadırgı açar (forign key) ile ilgili bir çok konu bulunmaktadır. Bunların bir kesimi ölçün bir biçimde, her veritabanında aynı biçimde çalışırken kimisinde küçük ayrımlar olabilir.
Gelişimiş SQL özellikle herkesçe bilinmek durumunda değildir. Özellikle bir izlendirme diliyle çalışan geliştiriciler karmaşık işlemleri kendi dillerinde gerçekleştirir. Başka bir deyişle kimi kişiler veritabanlarını yalnızca veri sakalamak ve erişmek için kullanılırken kimi kişiler de bir geliştirme ortamı olarak kullanmaktadır.

Nesne-İlişkisel Eşleme (Object-Relational Mapping - ORM)

Kimi durumlarda SQL dilini doğrudan kullanmadan ilişkisel veritabanlarıyla çalışmak olanaklıdır. Bu amaçla bir çok izlendirme dili (programming language) nesneler için doğrudan veritabanına yazma ve okuma desteği içermektedir. Bunların genel adı nesne-İlişkisel eşleme (object-relational mapping - ORM) olarak verilmiştir. Buna göre geliştirici her nesne (object), daha doğru bir deyişle sınıf (class) için veritabanına saklamak için gerekli bilgileri verir. Buna eşleme adı verilir. Ve kullanılan çatı (framework) bu verilen eşlemeye göre nesnelere yönelik işlemleri SQL diline çevirerek veritabanıyla çalışır. Geliştiricinin SQL kullanmasına gerek kalmaz. Öte yandan eşleme (mapping) yapmak için de veritabanının temel kavramlarını bilmek gerektiği için SQL, doğrudan kullanılmasa da bilinmelidir. Bunun dışında, ORM tekniğinin geçerli olmadığı bir çok durumda, örneğin yazanaklama (reporting) konularında SQL kullanmak gereklidir.

Veritabanı Çözümleme (Analysis), Tasarım (Design), Taslamlama (Modelling)

İlişkisel veritabanlarının temel çalışma biçimlerini öğrendikten sonra kullanılabilir uygulamalar geliştirmek için gerçek yaşamdaki verilerin veritabanında nasıl tutlacağının belirlenmesi gerekir. Bir kurumun ya da bir kişiler öbeğinin nasıl çalıştığının anlaşılması işlemine iş çözümleme (business analysis) adı verilir. Bu işlemin veritabanıyla ilgili olan kesimine de veritabanı çözümleme (database analysis) denir. Bu sözcükten veritabanı için çözümleme anlamı çıkarılması gerekir. Çünkü var olan veritabanın çözümlenmesi değil veritabanı oluşturmak için çözümleme anlamı taşır. Ancak çoğu kez, daha önce yapılmış durumda olan veritabanlarının çözümlemesi de bu kapsamda değerlendirilir.
Çözümleme süreci bittikten sonra veritabanının nasıl oluşturulacağının belirlenmesine veritabanı tasarımı (database design) adı verilir. Buna göre tablo /çizelge (table) birimlerinin ne olacağı, bunlarda hangi adda ve türde sütun / dikeç (column) olacağının belirlenmesi sürecedir. Bu işlem varlık (entity) ve ilişki (relation) yapısının belirlenmesini içerdiğinden genellikle entity-varlık çizeneği (entity-relation diagram) adı verilen görsel araçlarla belirlenir. UML adı verilen yazılım tasarımı yapısının veritabanı ile ilgili olan kesimleri de bu anlamda veritabanı tasarımı olarak kullanılır. Net olarak veritabanının belirlenmesi sürecine veritanı taslamlama (database modelling) adı verilmektedir. Buna göre veritabanı tasarımı tüm süreci anlatırken, veritabanı taslamlama varlık ve ilişkilerin net olarak ortaya konduğu son aşama olarak görülür.
Detaylı bilgi için: Tıklayınız

Bilgi/Açıklama

NoSQL Kursu

NoSQL

NoSQL, SQL veritabanları dışındakilere verilen genel bir addır. Çoğunlukla veritabanı yerine depo (store) sözcüğü kullanılır. Çoğunun temel mantığı, belli bir işlemler ilgili tüm bilgileri içeren belgelere bir bütün olarak erişmek, SQL veritabanlarındaki gibi belli bir işle ilgili olan verileri parçalamak zorunda kalmamaktır. Bir başka özellikleri de verilerin içeriğini ve türünü belirleyen şema (schema) konusunda katı davranmamalarıdır. SQL veritabanlarında bir tabloda olabilecek sütunlar uygulama kullanılmaya başlamadan belirlenmelidir. Sonradan değiştirilmesi çoğu kez sunucunun, geçici olarak da olsa, durdurulmasını gerektirir. Veya değişiklikler önemli ölçüde yavaşlamaya neden olur. Oysa NoSQL veritabanları daha esnektir. Verilerde neler tutulduğunun baştan belirlenmesini istemez ve sonradan ekleme-çıkarma yaplabilir.
NoSQL veritabanları dört öbeğe ayrılabilir:
  • Belge Tabanlı Veritabanı (Document-Based Database)
  • Açar-Değer Veritabanı (Key-Value Database)
  • Sütun / Dikeçli Veritabanı (Columnar Database)
  • Çizge Veritabanı(Graph Database)

NoSQL Türleri

Belge Tabanlı Veritabanı(Document-Based Database)

NoSQL seçeneklerinden belge-tabanlı veritabanı (document-based database), ya da belge-yönelimli veritabanı (document-oriented database) JSON ya da XML gibi, içinde belli bir konuyla ilgili verileri tutan belgeleri saklamaya yarar. Örneğin bir satış (sales) işlemi için satışın kendisi, satılan ürünler, alımcı, vergi, bulunak (address) gibi bir çok varlık bulunabilir. Bunlar belge tabanlı veritabanlarında tek bir belge olarak saklanmakta ve gerektiğinde tek bir belge olarak geri alınmaktadır. Oysa ilişkisel veritabanları birbiriyle ilişkili de olsa her veri türünü ayrı bir tabloda sakladığı için öncelikle veriyi ayrıştırmayı gerekli kılar. Örneğin satışın kendisi ayrı bir tabloda, satıştaki ürünler ayrı bir tabloda tutulur. Söz gelimi, üç ürün içeren bir satış için satış tablosuna bir satır, satış ürünü tablosuna ise üç kayıt olmak üzere 4 kayıt atılır. Oysa belge veritabanları için tüm içerik tek bir kayıt olarak saklanır. Yazma işleminin tersi, okuma işleminde de SQL veritabanların her kayıtı kendi tablosundan katma (join) işlemiyle toplamak durumundadır. Oysa belge-tabanlı veritabanları bunu tek bir işlemde çözer.

Belge veritabanlarına örnek olarak MongoDB ve Couchbase verilebilir. Bunlardan NoSQL JavaScript kullanarak JSON belgeleri saklar. Ancak Couchbase ise N1QL adı verilen (Nickel - Nikel okunan), SQL benzeri bir sorgulama dili içerir. Her ikisi için de Java, C# ve PHP gibi dillerden erişim için betiklik (library) seçenekleri bulunmaktadır.
Belge saklamaya yarayan bir çok ürün de belge-tabanlı veritabanı olarak kullanılabilir. Örneğin özünde dolu yazı arama (full-text search) yapmak için kullanılan ElasticSearch belgeleri tuttuğu ve gerektiğinde üzerinde arama yapılmasına olanak verdiği için bir veritabanı olarak kullanılabilmektedir.

Açar-Değer Veritabanı (Key-Value Database)

NoSQL adı altında toplanan ürünlerden açar-değer veritabanı (key-value database) adı verilen tür, verileri bir açar (key) ve ona karşılık gelen bir değer (value) olarak tutar. Örneğin Türkiye üzerine bilgiler tutan bir nesne tr biçiminde bir açar ile saklanabilir, daha sonra yine tr açarı ile erişilebilir. Bu biçimiyle açar-değer veritabanı bir veritabanı olmaktan çok geçici bir veri tutma birimi olarak yaygın olarak kullanılmaktadır. Dolayısıyla oturum (session) gibi, belli bir süreç içinde tümlenip biten işlemleri için uygun bir seçenek olarak görülebilmektedir. Özlelikle dağıtık (distributed) uygulamalar için yeğlenebilmektedir.
Açar-Key veritabanlarının bir özelliği de bellekte veritabanı (in-memeory database) olarak çalışabilmeleridir. Bunun anlamı, verinin teker (disk) adı verilen, manyetik olarak ve yavaş biçimde çalışan aygıtlarda tutulması yerine doğrudan bellekte tutulmasıdır. Buna göre teker yalnızca yedekleme (back-up) için kullanılır ve işlemler hep bellekten yürütülür. Bellek aygıtları elektrikle çalıştıkları için disklere göre çok daha hızlıdır.

Açar-Değer veritabanlarından en çok bilinenlerinden biri Redis adını taşımaktadır. Bu veritabanı açar-değer ikililerini bellekte tutmaktadır. Çok kullanılan dizelge (list), küme (set) ve çırpı çizelgesi (hastable) / sözlük (dictionary) biçimindeki veri yapılarını desteklemektedir. Bu göre ülkeler biçimindeki bir açara karşılık bir dizelge verilebilir ve bunun içine ülkeler konabilir.

Dikeçli Veritabanı (Columnar Database)

NoSQL seçeneklerinden dikeçli veritabanı (columnar database) verileri sütun olarak tutar. SQL veritabanında her kayıt bir tabloya bir satır / yataç (row) olarak eklenir. Örneğin satış tablosunda her bir satışın bilgileri birer kayıt olarak eklenir. SQL veritabanları kayıtlara bütün olarak bakar. Ancak bilgiye bütün olarak erişmek istemeyen, yalnızca belli değerlerle çalışma isteyen uygulamalar için süreç çok yavaş çalışır. Örneğin satışların toplam tutarıyla işlem yapmak isteyen bir uygulama satışın kime yapıldığını kime gönderildiğiyle ilgilenmez. Ancak çok sayıda satış içinde tek bir sütun değerinin alınması ilişkisel veritabanları için tüm tabloyu ilgilendiren uzun bir işlemdir. Öte yandan dikeç veritabanları satış tutarı gibi sütunları ayı olarak saklar. Buna tüm satışlar için satış tutarları bir yerde, kime gönderileceği başka bir yerde tutulur. Dolayısıyla tek bir dikece erişim gerektiğinde işler çabuk sonuçlandırılır.

Dikeç veritabanlarına örnek olarak Apache kurumunun Cassandra adlı ürünü sayılabilir. Bu veritabanında CQL (Cassandra Query Language - Cassanda Sorgu Dili) adı verilen bir dil kullanılır. Bu dil olabildiğince SQL diline benzetilmiştir. Ayrıca CQLSH (CQL Shell - CQL Kabuğu) adlı buyruk çizgisi (command-line) uygulamasıyla erişim sağlanır.

Çizge Veritabanı (Graph Database)

Olağan ilişkili veritabanları için varlık (entity) birimleri veriyi tutar ve onların arasında ilişki (relation) bulunur. Ancak bu ilişiler baştan bellidir uygulama çalışmaya başlamadan önce bildirilmelidir. Bu yüzden, veriden çok ilişkinin bulunduğu, aynı türdeki verilerin başka verilerle ayrı ilişkiler kurabildiği, ilişkilerin sürekli değiştiği ve çalışma sırasında yeni ilişkilerin eklenebildiği durumlarda ilişkisel veritabanları yetersiz kalmaktadır. Bu durumlar için çizge veritabanı (graph database) adı verilen ürünler geliştirilmiştir. Buna göre her veri bir düğüm (node) olarak düşünülür. İki düğüm arasında ilişki (relation) kurulabilir. Örneğin bir kişi bir düğümdür onun yazdığı bir betik / kitap bir başka düğümdür. İkisi arasında yazmıştır biçiminde bir ilişki kurularak bir kitabın yazarı belirlenebilir. Ancak bir kişinin bir betikle yazmıştır ilişkisi dışında eğirmiştir (edited) ya da tasarlamıştır (designed) gibi çok sayıda ilişkisi olabilir. Çizge veritabanları bu tür işlemleri kolayca gerçekleştirir.

Çizge veritabanlarına örnek olarak Neo4J verilebilir. Bir çok NoSQL veritabanı gibi Java ile yazılmış bu ürüne bir çok dilden erişim olanaklıdır. Bu veritabanı CQL (Cypher Query Language - Şifre Sorgu Dili) adlında bir dil ile erişim sağlamaktadır. Öncelikle düğüm (node) yaratma ile işlemler yapılır. Sonrasında düğümler arasında ilişki (relation) kurulur. Gerek düğümler gerekse ilişkiler üzerinde sorgulama yapılarak sonuçlar alınabilir. Örneğin hangi kişiler bir kitap yazmış ya da bu kişi neler yapmış gibi sorgular yapılabilir.

Büyük Veri (Big Data)

Doğrudan ilişkili olmasa da büyük veri (big data) çoğu kez NoSQL ile birlikte anılmaktadır. Çünkü büyük veri düzenleri veritabanı olarak genellikle NoSQL ürünlerini kullanmaktadır. Bunun tümüyle tersi olarak, NoSQL ürünleri de verileri ayrı ayrı sakladıkları için bütüncül işlemler için büyük veri ürünlerinin kullanımını gerekli kılmaktadır.
Büyük veri uygulamalarının en bilinenleri arasında Hadoop sayılabilir. Java ile geliştirilmiş bu düzene öteki dillerden de erişim sağlanabilmektedir. Hadoop, tüm büyük veri ürünleri gibi eşle-indirge (map-reduce) işlemini gerçekleştirir. Buna göre ilk aşamada tüm veriler içinden belli bir kesimi kullanılacak verilere eşlenir. Sonrasında veriler daha özet verilere indirgenir. Örneğin tüm satışlara ilişkin veriden satış tutarları alınacak biçiminde eşleme yapılır sonrasında da satış tutarları toplanır ya da belli bir özelliğe göre öbeklenir. Hadoop çok bilgisayarla çalışmayı sağlamak için özkaynak oylaşması (resource negotiation) uygulaması içerir. Buna göre hangi bilgisayarın ne ölçüde boşta olduğu diri olarak gerçek zamanda belirlenir ve işlemler daha az yoğun makinelerde gerçekleştirilir. Hadoop, birden çok diske erişmek için dağıtık sırtlı / dosya düzeni (distributed file system) adı verilen bir özellik içerir. Bununla bir çok depolama birimi tek bir dizinin altındaymış gibi görünür ve ağdaki bir çok bilgisayardan aynı içimde erişilir.
Detaylı bilgi için: Tıklayınız



Bu Sayfayı Paylaş:

İletişim/Bize Yazın   mh@fibiler.com   Google+   Facebook   Twitter   fibiler@googlegroups.com
Her Hakkı Saklıdır
Bu sitede yayınlanan tüm bilgi ve fikirlerin kullanımından fibiler.com sorumlu değildir.
Bu sitede üretilmiş , derlenmiş içerikleri, fibiler.com'u kaynak göstermek koşuluyla kendi sitenizde kullanılabilirsiniz. Ancak telif hakkı olan içeriklerin hakları sahiplerine aittir