8 Haziran 2015 Pazartesi

Kısa Kısa: Kapalı Döngü Kontrol Nedir ?

Kapalı döngü kontrol, bir sistemin çıkış değerlerinin istenilen (referans) değerde olup olmadığını çıkışı ölçüp girişle karşılaştırarak karar veren ve eğer aynı değilse giriş ve çıkışı aynı seviye getirmeyi amaçlayan yönteme verilen isimdir. Çıkışı tekrar girişe götürerek bir geri besleme döngüsü oluşturduğu için bu ismi almıştır. Açık döngü kontrole göre sistemlerin sürekli kararlı ve istenilen noktada çalışmasını sağladığı için kontrol mühendisliğinde oldukça popülerdir.


Çevremizdeki çoğu sistem bu kontrol yöntemi ile çalışır. Klimaların ve kombilerin sıcaklık sabitleme üniteleri, arabalardaki hız sabitleme (cruise control) sistemleri, füze ve roketlerdeki hedefe kitlenme mekanizmaları ve çok daha karmaşık çoğu sistemde kapalı döngü kontrol kullanılır. Değişen tek şey ölçülen ve karşılaştırılan verilerin türüdür. Sıcaklık, hız, kimyasal miktar, ışık, basınç, kuvvet gibi fiziksel büyüklükler genelde elektriksel büyüklüklere çevrilerek döngü içerisinde gerekli işlemleri yapmak için bir mikro denetleyici (controller) ile işlenir. İşlenmiş verilerse tekrar fiziksel dönüştürücülerle (actuators) dış ortalama verilerek döngünün tamamlanması sağlanır.


Kapalı döngü elle yapılan manuel kontrolün bilgisayarlarla otomatik bir şekilde yapılmasıyla da açıklanabilir. Bu durum işlem odasının sıcaklığını gözlemleyip ısı üretecinin vanasını gerektiğinde açıp kapayarak sıcaklığı bir seviyede tutmaya çalışan bir operatöre benzetilebilir. Burada operatör hem çıkıştan(oda sıcaklığı) veri alan hem de bu veriyi işleyip kontrol eden(vana açıp kapama işlemi) bilgisayar olarak düşünülebilir.




Kısa Kısa: Örnekleme(Sampling) Nedir ?

Örnekleme, bir sürekli sinyal olan analog işaretin belli aralıklarda kaydedilerek sayısal sinyale dönüştürülme işlemidir. Analog işaretin kaydedilme sıklığı örnekleme frekansını gösterir. Sinyalin kayıpsız bir şekilde analog dünyaya tekrar dönüştürülmesi için örnekleme hızının sinyalin değişim hızından iki kat yüksek olması gerekir. Buna Nyquist oranı denir.

Örnekleme zaman ekseninde bir niceleme (quantization) olarak düşünülebilir. Bir akustik dalga olan ses, mikrofonda elektik gerilimi varyasyonlarına dönüştürüldükten sonra arayüz cihazları (ses kartları vs) tarafından örneklenir. Örneğin CD’lerde kullanılan örnekleme, insanın duyma ses frekansı sınırı olan 20,000 Hz’ün yaklaşık  iki katı 44,100 örnek/saniyede ve 16 bit kelime uzunluğunda yapılır. Bu değer analog sinyalden saniye 44,100 örnek alınması ve her örneğin dijital ortamda 16 bit ile gösterilmesi anlamına gelir.


Örnekleme, yapılan dijital kaydın kalitesini belirler. Daha yüksek frekansta yapılan örneklemeler analogtan dijitale daha kaliteli bir dönüşüm sunarken veri boyutu bakımından ise oldukça fazla yer kaplayacaklardır. Ayrıca bir sinyal tekrar analog ortama verilerin (D/A) yine örneklendiği frekanstan verilmelidir. Aksi takdirde kendi frekansından daha düşük bir frekansta çalınırsa (ses için) yavaşlama, yüksek bir frekansta çalınırsa seste hızlanma görülür.




7 Haziran 2015 Pazar

Kısa Kısa: CSS Nedir ?

Cascading Style Sheets (Basamaklı Stil Şablonları), HTML sayfalarının toplu ve organize bir şekilde stillendirilmesi için geliştirilmiş bir web teknolojisidir. CSS sayesinden web sayfaları için toplu stil şablonları oluşturmak veya bağımsız olarak nesnelerin font, renk, boyut vs gibi özelliklerini html kodundan ayrı  ve bağımsız düzenleyebilmek mümkün hale gelmiştir.


CSS, web tasarımının HTML ile birlikte kullanılan önemli bir ögesidir. Üçüncü sürümü ile birlikte eskiden web tasarımcılarının flash ve photoshop kullanarak hazırladıkları çoğu grafik, stil, animasyon, hareket ve dinamizmi Javascript ve Jquery diğer gibi web teknolojileri ile birlikte kolay ve çok daha hızlı bir şekilde sadece kod ile hazırlanmasına imkan sağlamıştır.

CSS, HTML taglarını genel ve özel tanımlamalarla stillendirerek web tasarımcılarına istenilen zamanda web sayfasının içeriğinden bağımsız olarak tasarımını değiştirme imkanı sunar. Böylece aynı şablonun binlerce farklı tasarımla kullanılmasını sağlayarak daha hızlı, ekonomik ve göze hoş gelen web sayfalarının oluşturulmasını kolaylaştırmıştır.




Kısa Kısa: HTML Nedir ?

HTML, web sayfalarındaki içeriklerin (yazı, resim, link, form vs) sayfa açıldığında nasıl gösterileceğini düzenleyen bir biçimlendirme dilidir.  Bir html sayfası, “tag” denilen ve sayfa içerisindeki nesneler ve sayfa özellikleri için belirlenmiş özel etiketlerden oluşur. HTML, bir programlama dili değildir, istemci tarafında web tarayıcı tarafından yorumlanır. Bu nedenle web tasarımdan kastedilen web programlamadan farklı olarak genelde sayfanın HTML içeriğidir.


İlk web sunucusu 1989 yılında World Wide Web’in yaratıcısı Tim Berners Lee tarafından CERN’de NeXT marka bir bilgisayarda kurulmuştur. İnternetteki ilk web sayfası olarak bilinen site ise şu an da http://info.cern.ch/hypertext/WWW/TheProject.html adresinden tekrar görülebilir.


Günümüzde HTML standartları W3C tarafından belirlenmektedir. İstemci ve sunucu tabanlı diğer web teknolojileriyle daha uyumlu çalışması ve daha dinamik web sayfalarının oluşturulması için sürekli geliştirilen HTML’in son sürümü ise HTML5’tir.




30 Mart 2015 Pazartesi

Bilgisayar Grafikleri ve Rendering

İlk bilgisayarlardan günümüze şüphesiz gözle görülebilen en büyük değişim bilgisayar grafiklerinde yaşanmıştır. Görüntülerin, ilk yıllarda sadece hesap yapma ve veri yönetimi gibi görevler için geliştirilen basit metin tabanlı grafiklerden zamanla göz dolduran ve çoğu zaman gerçekle ayırt edilemeyen 3 boyutlu grafiklere evrilmesi benim gibi çoğu kişinin de merakını cezbetmiş bir süreçtir. Bu sürecin arkasında her yıl giderek artan bilgisayar hızları ve işlemci kabiliyetleri yanında görüntü motorlarının beyni olan matematik modellerinin de büyük payı vardır. Gerçekçi, kaliteli ve ayrıntılı görüntülerin hızlı bir şekilde üretilmesi (bilgisayar oyunları, animasyonlar ve görsel efektler) için bu modellere ait denklemlerin hızlı bir şekilde çözülmesi ve uygun verilerle işlenmesi gerekir. Sanıldığının aksine bir tek görüntü için bile birçok hesap (ışık kaynağına göre parlaklık, gölgeleme, yansıma, iz düşüm vs) yapılır ki bu da birçok görüntünün iç içe girdiği ve anlık üretilmesi gereken uygulamalarda çok yüksek bir işlem gücüne ihtiyaç olduğunun kanıtıdır.



Peki nedir bu grafik işlemleri ? Tabi ki hepsinden bahsetmek imkansız (eğer ilginiz varsa "Bilgisayar Grafikleri" ile ilgili dersler almanızı veya "Fundamentals of Computer Graphics - P. Shirley, S. Marschner" kitabını okumanızı tavsiye ederim), bu yüzden bu yazıda sadece rendering'den bahsedeceğim.

Rendering, bilgisayar litaretüründe 3D bir modelin 2D görüntüsünün (resminin) elde edilmesine denir. 3D bir modeli niye 2D'ye çeviriyoruz diyebilirsiniz, dikkat edin 3D bir görüntüyü değil bir modeli görüntüye çeviriyoruz. Bunu bir ressamın veya sanatçının gördüğü bir nesneyi tuvaline resmetmesi gibi düşünebilirsiniz. Nesneler 3 boyutludurlar ama görüntüleri her zaman (hologramlar istisna) 2 boyutlu düzlemlerde veya yüzeylerde görüntülenir. Aynı şey bilgisayarlarda da gerçekleşir. Nesneler 3 boyutlu uzayda matematik vektörleri ve yüzeyleri ile ifade edilerek modellenir. Pekala bu nesnenin herhangi bir gözlem noktasından bakıldığında gözde oluşacak 2 boyutlu görüntüsü nasıl oluşur ? İşte rendering böyle bir soruya cevap veren bilgisayar algoritmasıdır.



Eğer rendering'i bir fonksiyon gibi düşünürsek belki de şu şekilde tasvir edebiliriz;

"Uzaydaki herhangi bir nokta ve o noktadan çıkan bir yön vektörünü, bir görüntü matrisine (resim) götüren işleme denir."

Bu tanım benim tamamen kendi kafamda basitleştirdiğim bir anlama karşılık gelir. Gerçekte böyle bir işlem için yukarıda da bahsettiğim gibi ışık, yansıma, konum, hareket gibi bir çok parametrenin de dahil olduğu daha karmaşık fonksiyonlarla icra edilir.



Uzayda kırmızı renkli bir küp düşünün. Tabi bu küpü görebilmek için ise bir ışık kaynağı hayal edin, bu kaynağı dilediğiniz yere yerleştirebilirsiniz. Bu küpü zihniniz hemen iki boyutlu bir görüntüye çevirecektir. Çünkü tüm yönlerini bir anda görmeniz imkansızdır. Şimdi küpe farklı açılardan, yerlerden ve uzaklıklardan bakın. Her hareketinizde görüntünün değiştiğini görürsünüz. Bazı yerlerde tek kenarını, bazen iki, bezense üç kenarını birden göreceksiniz. Yine bulunduğunuz yere ve küpün ışık kaynağına göre konumundan dolayı farklı kenarlar farklı derecelerde gölgeli görünecektir. Ayrıca radyal hareketlerde görüntünün boyutu sabit kalırken küpten uzaklaşırken veya ona yaklaşırken yapacağınız doğrusal hareketler gözünüzde oluşan küpün boyutunu da değiştirecektir. Şimdi aynı uzaya bir de küre ekleyelim. Kürenin kendine has geometrisi, yüzeyi, ışık tepkisi gibi bir çok farklı parametresinden dolayı tüm bu hareketlerde farklı görüntüler elde edeceksiniz. Mesela kenarları olmadığı için uzaydan hep daire şeklinde görülecek veya ışığa maruz kaldığında bir yarı küresi karanlıkta kalacaktır. İşin zor tarafı ise bundan sonra başlayacaktır. Uzaya koyduğunuz her nesne diğer tüm nesnelerin görüntülerini etkileyecek, bazen yansımalarla bir ışık kaynağı gibi davranırken bazen de ışığı önleyen bir engel görevi görecektir. Ayrıca bu nesnelerin olası hareketleri de yine tüm değer kümesinin elemanlarını değiştirecek, görüntülerin tekrar hesaplanıp üretilmesine neden olacaktır. Zihninizin anlık yaptığı tüm bu işlemleri bilgisayarlara yaptırmak ise azim, tecrübe, akıl ve kurursuz bir mühendislik gerektirir.



Gördüğünüz gibi sadece iki nesneli ve bir ışık kaynağı olan uzay modelinin farklı noktalardan 2 boyutlu resmedilmesinin altında bile çok ince, hassas ve ileri seviyede hesaplama ve işlem gücü yatar. Bu durum bilgisayar oyunları gibi (ki bu oyunlarda değişen, hareket eden, ortaya çıkan/kaybolan binlerce nesne vardır), bu türden işlemlerin her saniye başına 30-40 (fps) kere yapılması gereken uygulamalarda özelleşmiş grafik işlemcilerin (ekran kartları) kullanılmasını gerektirmiştir. Böylece tüm bu işlemler merkezi işlem birimini meşgul etmeden, bu iş için özel tasarlanıp üretilmiş, çok çekirdekli matematik işlemcilerinde paralel bir biçimde icra edilirler.



Rendering, 3 boyutlu modellemelerin kullanıldığı hemen hemen her program tarafından yapılan bir işlemdir. Bilgisayar oyunları ve bilgisayar destekli çizim programları, özel film efektleri, animasyon filmler ve daha nice uygulamarlarda tasarlanan her 3D model ekrana bir takım rendering işlemlerinden geçirilerek (bkz:perspektif) 2 boyutlu olarak yansıtılır. Yani her zaman dediğim gibi işin mutfağında büyük bir emek vardır.

Bu konuda araştırma yaparsanız özellikle animasyon şirketlerinin, oyun ve film üreticilerinin oldukça keyif alarak izleyebileceğiniz videolarına rastlayabilirsiniz. Çoğu film için "sahne arkası" çekimleri, oyun motoru tasarımları, animasyon hazırlama kursları ilginizi çekebilir. Ayrıca bu iş için matematik bilginizi de canlı tutmanız ve doğrusal cebir ve analitik geometri gibi konulardan da keyif almanız gerekebilir.




Eğer programlama kısmına kendinizi yakın hissediyorsanız, OpenGL öğrenmeniz ve kendi 2 boyutlu oyunlarınızı kodlamanız oldukça eğleneceğiniz ve tecrübe kazanacağınız aktiviteler olacaktır.

Aşağıda fikir edinmek ve motivasyon kazanmak için izleyebileceğiniz videoları paylaşıyorum.

Hepinize iyi eğlenceler ve iyi çalışmalar.

@Emin_Ucer












22 Mart 2015 Pazar

Bilgisayar Ağlarında Latency Nedir ?

Latency, bilgisayar ağlarında bir mesajın bir bağlantı üzerinden iletilmesinde oluşan toplam gecikme anlamına gelir. Siz tarayıcınızda bir linke dokunduğunuzda yada tıkladığınızda bir takım veri transferi gerçekleşir. Sonuçta verilerin bir noktadan diğerine fiziksel olarak gitmesi ve geri gelmesi gerekir. Bu geliş ve gidişler belli süreler içerisinde olurlar ve buda anlık cevaplar yerine gecikmeli cevaplar demektir. Verinin iletimini tamamlayıp istenildiği yere ulaşma süresi internet bağlantınızın hızını belirleyen önemli bir değişkendir. Bir internet sayfasının yüklenme süresinin bir kaç saniye alması çok büyük bir sorun olmazken online bir oyundaki bir kaç yüz mili saniyelik bir gecikme keyfinizi kaçırabilir. Peki bu gecikmeye neden olan şey nedir ? Nasıl tanımlanır ve hesaplanır ? 


 Latency'i belirleyen iki temel gecikme vardır. Bunlar;

1) İletim Gecikmesi (Transmisson Delay)
2) Yayılma Gecikmesi (Propagation Delay)

İletim gecikmesi M bitlik verinin iletim kanalına konulmasında geçen süredir. 

T = M (bits) / R (bits / saniye)

bu denklemde R veri transfer (data rate) hızını temsil eder ve iletimin bant genişliğini gösterir. Basitçe 1 Mbps'lık bir bağlantı 56 kbps'lık bir bağlantıdan aynı miktar veri için çok daha az bir gecikme oluşturacaktır.

Yayılma gecikmesi ise iletim kanalındaki verilerin hedef noktasına ulaşması için geçen süredir. Aradaki mesafenin, elektromanyetik dalganın hızına bölünmesiyle bulunur.

D = Uzunluk (m) / sinyalin kanaldaki hızı (m/saniye)

bu gecikme iletim ortamının fiziksel özelliklerince belirlenir. Örneğin kablosuz yada fiber optik bir iletimde, iletim hızı ışık hızındayken kablolu bir bağlantıda bu hız ışık hızının yarısı kadardır. Böyle olunca kablosuz ve fiber optik iletimlerde gecikme daha az gerçekleşir. Yalnız özellikle kablosuz iletimde hata olasılığı oldukça yüksek olduğunda hata algılama ve düzeltme işlemleride gecikmelere neden olacaktır.

Bu iki gecikme toplam Latency'i verecektir.

L = T + D



Örnek olarak bir dial-up bağlantıyı düşünelim. Bu tür bir bağlantının veri hızı R = 56 kbps'dır. Eğer M=1250 Byte'lık bir mesajı yayılma gecikmesi D=5 ms olan bir kanal üzerinden yollarsak;

L = 5 ms + 1250 x 8 bits / 56 x 1000 bits / saniye
L = 5 ms + 179 ms = 184 ms

184 ms'lik bir gecikme sonunda hedefine ulaşacaktır. 

Görüldüğü gibi gecikmenin önemli bir kısmı iletim gecikmesinden kaynaklanmaktadır. Bunu azaltmak için iletim hızı yüksek bir bağlantı deneyelim.

Örneğin bu kez geniş bant bir bağlantı düşünün. Veri hızı R = 10 Mbps olan bu bağlantının yayılma süresi ise D = 50 ms olsun. Yine aynı mesajı (M=1250 Byte) göndönderdiğimizi varsayarsak;

L = 50 ms + 1250 x 8 bits / 10 x 10e6
L = 50 ms + 1 ms = 51 ms

51 ms'lik bir gecikme ile iletim gerçekleşecektir.

Bu kez de gecikmenin büyük bir kısmı yayılma gecikmesinden kaynaklanmıştır.

Sonuç olarak gecikmenin başlıca nedenleri uzun bağlantılar ve düşük veri hızı olarak söylenebilir.

Bunlarla birlikte kullanılan diğer bir kavram da Bant Genişliği - Gecikme çarpımıdır. Bu kavram iletim hattının depoladığı yada taşıdığı veri miktarını gösterir.

BD = R x D

olarak hesaplanır. R yine veri hızını (data rate), D ise yayılma gecikmesini temsil eder.

Örnek olarak, R = 40 Mbps ve D = 50 ms olduğu bir iletimin taşıma kapasitesi;

BD = (40x10e6 Bits /saniye) x (50x10e-3 /saniye) =  250 KByte'tır. 

Yani bu kanal, iletim yaparken içerisinden 250 KB'lik bir veriyi fiziksel olarak tıpkı bir depolama aygıtı gibi saklayabilmektedir.

Latency'nin, internet bağlantınızın hızını nasıl etkilediğini öğrenmiş oldunuz :)

Hepinize İyi Çalışmalar

@Emin_Ucer