27 Nisan 2017 Perşembe

Agile Sistemler

Agile sistemler klasik methodlara duyulan eleştiriler nedeniyle ortaya çıkmıştır.

Klasik Metotlara Olan Eleştiriler

Sürüm yani çalışan program çok geç ortaya çıkıyor.
Sürüm çok geç çıktığı için hatalar çok geç anlaşılıyor.
Verimli değil.
Esnek değil, yeni gelen isterler doğrultusunda kendi yapısını değiştiremediği için yeni isterleri karşılayamıyor.
Değişiklik geç ve zor yapılıyor.




Agile Metodolojiler

Extreme Programing
Scrum
Crystal Family
Rup

17 Nisan 2017 Pazartesi

Milli İmkanlarla Üretilen Bilişim Sistemleri

1-)Linux Tabanlı İşletim Sistemi Pardus



2-) Mini Bilgisayar Poyraz



3-) Virüs Programı Chomar



Web Sayfası: https://www.chomar.com.tr/en/page.aspx


4-) Mount & Blade 2




10 Nisan 2017 Pazartesi

GitHub Kodları & GitHub Kullanımı



Git bir versiyon kontrol programıdır. Git sayesinde proje içerisinde bulunan dosyaların gelişimi takip edilebileceği gibi aynı zamanda eski versiyonlara kolayca erişilip o versiyonlar üzerinden değişiklikler yapılabilir.

---- Git Kurulum----
Git Kurulumu oldukça basittir.Kullandığınız Windows yada Linux işletim sistemine göre https://git-scm.com/downloads sitesinden ücretsiz olarak bilgisayarınıza Git programını indirebilirsiniz.
Kurulum sırasında sadece "Use Git from Git Bash only" seçeneğinin seçili olduğunu kontrol edin.



----Git ilk Kullanım----
Git programı MS Dosta bulunan CMD ekranına benzeyen ve Git Bash adı verilen bir konsol ekranına sahiptir. Git Bash programını kullanmak için aşağıdaki temel komutları bilmemiz gerekmektedir.




----Gitte Kullanılan Temel Komutlar----
pwd  (Bulunan dizinin pathini listeler)
ls   (list kelimesinden üretilmiştir. Hangi dosyaların çalıştırılan klasörde olduğunu gösterir.)
ls -la  (klasördeki gizli dosyalarıda gösterir.)
cd Deneme  (Deneme isimli klasörün içerisine girilmesi için kullanılır.(örnek cd Deneme) Bu komutun doğru çalışması için bulunan dizinde Deneme diye bir klasörün bulunması gerekmektedir. (Ms Dos taki aynı komut cd .. diyerek üst klasöre geçilebilir.))
git --version (Kullanılan Git'in versiyonu öğrenilir.)
git init (Seçilen dosyada Git'in kullanılacağı söylenmiş olunur.)
git add . (Seçilen klasörün içerisindeki her şeyi Git kullanımına ekle)
git commit -m "ilk mesajı ekle" (ilk mesajı ekle yazısı git içerisine kim tarafından oluşturulmuşsa o kişi ile ilgili bir log olarak Git'e eklenir. Bu komut sayesinde zamanda bir kayıt oluşturmuş olunur bu sayede eğer projede geri dönmek istersek kolay bir şekilde o noktaya geri dönebiliriz.)
git diff (Dosyanın içerisindeki farklı kısmı gösterir. Listelerde çıkan kırmızı olan yazılar silinen yeşil olan yazılar ise mevcut yada yeni eklenen yazıları göstermektedir. Özetle git diff çalışan sürüm ile represorory arasındaki farktır.)
git diff --staged (represorory ile staged arasındaki farklı gösterir.)
git rm dosyaadi.uzantisi (örnek rm deneme.txt) (deneme.txt isimli dosyayı diskten siler.)
git mv home.txt first.txt (home.txt adını first.txt olarak değiştirir.)
git mv home.txt deneme/first.txt (home.txt dosyasını deneme isimli klasörün içerisine first.txt olarak kayıt eder.)
exit (Ekrandan çıkış.)
clear (Ekranı temizleme)
git log (Daha önceden kayıt edilen mesajları listeler)
git log --authour="Murat" (Murat adı ile yapılan mesajları listeler)
gir status (Mevcut durum hakkında bilgi verir.)
git checkout --Dosya.uzantısı (Çalışan dosyayı en son kayıtlı haline getirir. Yeni yapılanları siler.)
git commit -am "Veriler kurtarıldı" (Mesajı dierk olarak çalışan dosyaya ve repository ye mesaj kaydı olarak ekler.)
git reset HEAD dosya.txt  (Dosyayı eski çalışan haline resetleyererk geri getirir.)
Eski versiyonları geri getirmek
git log (Eski alınan kayıtlara bakmak için git komutu kullanılarak komutlar listelenir. Listelenen komutlardan git checkout komut mumarasının ilk 5-6 hanesi yazılarak (Örnek checkout e292939) o zamanki hali tekrardan yüklenmiş olur.
Dosyaları Github'a yüklemek
Github üzerinden açacağınız bir hesaba dosya eklemek için hesap açıldıktan sonra bir repository oluşturmanız gerekmektedir. Oluşturulan repositoryye dosya eklemek için
git remote add githubsf (githubsf sizin tarafınızdan oluşturulacak isim) https://github.com/sizin hesabınız/sizin repositoryniz.git
(Örnek $ git remote add githubsf https://github.com/Yazilimcilardunyasi/SF.git)
Oluşturulan repositoryye uzaktan bağlantı için
git remote sizin repositori adınız
(Örnek $ git remote githubs)
Dosyalar göndermek için
git push -u sizin reporisotory isminiz master
(Örnek $ git push -u githubsf master)
Enter dedikten sonra kullanıcı adınızı ve şifrenizi girmeniz için bir ekran çıkacaktır. Şifre bilgileri doğru olarak girildikten sonra dosyalarınız githubın sistemine yüklenmeye başlayacaktır.
Bu işlemin sonucunda StreetFigther isimli oyunun kodları github sitesine eklenmiş olacaktır.
Eklenen kodların bulunduğu repository https://github.com/Yazilimcilardunyasi/SF

--------Github-GUI-------
Github Bash haricinde Github GUI programı kullanılarakta Githuba dosya yüklenebilir.


----www.github.com Kullanımı----
İstenirse www.github.com sitesinde yüklenen repository üzerinde kopyalar oluşturulabilir. Proje ile ilgili web adresi varsa o adrese link verilebilir. Başka kullanıcıdan gelen değişiklikler yada güncellemeler sisteme eklenebilir.




Bir ekip halinde aynı proje üzerinde çalışılabilir. Görevler eklenip kişilere ataması yapılabilir.Başkalarının geliştirdiği github projelerine katkı yapılabilir yada önerilerde bulunulabilir.Projeyi geliştiren kişilerle karşılıklı mesajlaşılabilir.

-----Git Eğitimi-----

25 video videoların uzunluğu 5-10 dk (Eğitim dili İngilizce)



 23 video (Eğitim dili Türkçe)


---Git Türkiye İstatistikleri---

Programlama Dillerine Göre İl Bazlı Dağılım


Detaylı Bilgi https://alpcanaydin.github.io/github-stats-for-turkey/#/





3 Nisan 2017 Pazartesi

Youtube Kanallarının Gelirlerini Öğrenin

Youtube kanallarının ne kadar gelir elde ettiğini merak ediyorsanız; Socialblade sitesi bu sorunun cevabı tahmini  bir değer aralığı ile gösteren güzel bir site (sitenin adresi: https://socialblade.com). Sitenin kullanımı için tek yapmanız gereken, aranan Youtube kanalını sitenin sağ üst köşesinde bulunan kısma yazıp aratmak. Çıkan listeden aranan kanalın bulunduğu linke tıklandığında sitenin aylık ve yıllık kazancı ekranın alt kısmında (Estimated Earnings olarak) gösterilmektedir. Buradaki aralık değeri çok büyük olduğu için genellikle az olan tutarın dikkate alınması daha doğru bir bilgi verecektir. (2.4K nın anlamı 2400$). Sitede ayrıca aranan kanal hakkında detaylı bilgilere erişilebilmektedir. (izleme sayısı, kanılın sınıfı, derecesi, vb)


27 Mart 2017 Pazartesi

VR Teknolojileri için Yazılım Geliştirin

Günümüzde pekçok farklı ürün ile kendisini sürekli olarak geliştiren VR (Virtual Realisation - Sanal Gerçeklik) teknolojileri; her bütçeye uygun birbirinden farklı araçlara sahiptir. Bu gelişen teknolojinin imkanlarını ve geliştirilen başlıca ürünlere baktığımızda temel olarak VR gözlüklerini ve VR platformlarını görmekteyiz.

VR Gözlükleri

Google Cardboard, oldukça basit bir kuruluma sahip ve ekonomik bir çözümdür Cardboard 5TL ila 20TL gibi bir fiyatla alınabilmektedir. Google Cardboard'un üzerinde bulunan barkod okutularak sanal gerçeklik deneyimine giriş yapılabilir. 6" telefonların bile takılabildiği Google Cardboard için geliştirici olarak (https://developers.google.com/vr/) uygulamalar oluşturabilir. Ürünün dezavantajları Motion sickness (baş dönmesi ve mide bulantısı) yapma riski yüksektir.


Case 4u vr box 3.0 Türkiye'de ençok satan ve Çin'den ithal edilen bir sanal gerçeklik gözlüğüdür. Yanında bulunan ufak kumanda ile temel haraketler gerçekleştirilebilir. 25TL ila 35TL gibi bir fiyata internetten temin edilebilir Ürünün dezavantajları Motion sickness (baş dönmesi ve mide bulantısı) yapma riski yüksektir.



Samsung cep telefonu kullananlar için uygun bir alternatif olan Samsung VR 119TL gibi bir fiyattan satın alınabilir. Daha önceki ürünlere göre daha profesyonel bir üründür. Ürünün dezavantajlarına baktığımızda, uygulamaların ve araçların oldukça pahalı ve içerik sayısının yetersiz olduğu görülmektedir. Motion sickness dediğimiz baş dönmesi ve mide bulantısı yapma riski diğer araçlara göre daha az olsada yinede 10 dakika ve üzeri kullanımlarda bu sorunlar oluşabilmektedir.


Microsoft Hololens oldukça gelişmiş bir VR gözlüğüdür. 3000$ gibi bir fiyattan yurt dışında satışı başlamıştır. Pek çok alanda kullanıma uygun bir yapıya sahiptir. Ürün ile ilgili uygulamalar geliştirmek için detaylı bilgi https://www.microsoft.com/microsoft-hololens/  sitesinde bulunmaktadır.





VR Platformları


HTC vive tarafından üretilen bir teknolojidir. Sistemin kullanımı için güçlü bir oyun bilgisayarına ve boş bir odaya ihtiyaç duyulmaktadır. 3000$ gibi bir fiyata satın alınan bir ürünün internet adresi https://www.vive.com/eu/




Virtuix Omni gerçek bir VR platformudur. Omni sanal gerçeklik için geliştirdiği pek çok ürünle rakiplerinden farklı bir yerde konumlanmaktadır. Türkiye'de 10.000$ gibi bir fiyatla satılan platform için uygulamalar geliştirilebilir (http://www.virtuix.com/resource-center/)




Bulanık Mantık

Tarihsel Geçmişi:
Bulanık küme teorisi türetilen
1965 yılında University of California, Berkeley Prof Lotfi Zadeh tarafından geliştirilmiştir.
Bulanık küme teorisi geleneksel ("net") küme teorisininden farklıdır.
Geleneksel küme teorisi: Bir nesne ya bir dizi ya da aittir.
Bulanık küme teorisi: bir nesne bir dizi "kısmen ait" olabilir
Örnek: Uzun ve Kısa: iki takım insanları sınıflandırmak için
Orta uzunlukta olan biri kısmen o gruba ait olarak sayilır.


Bulanık Küme Üyeleri

Geleneksel Küme Teorisi: Bir nesne dizi üyesidir.
Bulanık Küme Teorisi: Bir nesne kısmen bir dizi üyesidir.


Üyelik Fonksiyonu

Örneğin, Kısa, Orta ve Uzun üç grup için üyelik fonksiyonları tanımlayabilir. Kişinin boyuna göre hangi grupta olacağı belirlenir.
Kimi oyunlarda anlık yapılan yer tespiti gibi.



Mantıksal Operatörler

Programlar içerisinde sürekli olarak kullanılan mantıksal operatörlerin doğru ve yerinde kullanılması. Ara değer ve eşittlik değerlerine bakılarak sistemin test edilmesi önemlidir.

 Bulanık Mantık Operatörleri

Gelen veriye göre program içerisinde kullanılan mantıksal operatörlerin kullanımları farklı olabilir.
NOT:
AND:
OR:


Kurallar

Örnek olarak mavi olarak tanımlanan bir grupta bulunan bir nesne diğer mavi nesnelerine saldırmaması gerekmektedir.
Diğer nesnelerden biri kırmızıya döndüğünde saldırı yapılacak şekilde kuralın tekrardan tanımlanması gerekmektedir.
Anlık olarak durum kendi ile tutarsız olarak görünsede kendi içinde belli bir bulanık mantık sorusu olarak karşımıza çıkmaktadır.
Burada anlık duruma göre karar değişecektir. Bunun kolay bir şekilde yapılması için bir karar tablosu içeriinde bu kuralların yazıldığı bir tablo oluşturmak yararlı olacaktır.


Bulanık Mantığın Bir Oyuna Uygulanması
Kullanılan Bulanık Mantık Yöntemi ile oyuncunun yapacağı hareketleri belirleyip ona karşı bir karşı duruşun tanımlanması gerkmektedir.
Yanda Hareket İle İlgili Tablo örneği verilmiştir.
Eğer ilk hareket yumruk,İkinci Hareket yumruksa üçüncü hareketin aşağıdan gelen bir tekme  olma ihtimali daha çoktur.

Kullanıcıların Hareketlerinin Tahmini


Nasıl Karar Tablosu Oluşuturulacak
İlk ve ikinci Tablo sutununa olası bütün sonuçlar yazılır.
Kullanıcı oyun sırasında yaptığı hareketler kaydedilir.
Örnek olarak kullanıcı yumruk, yüksek tekme hareketlerini yaptıktan sonra yumruk atma ihtimali ve yüksek tekme ihtimali daha fazladır.
Daha önce yaptığı hareketlere bakılarak.

Kullanıcının Hareketini Tahmin Et!

3. Hamlede hangi hareketi yapacaktır?



Olasılık

Eğer gelecek hareketi bilsek okuncu kanaza bilirmi?
Peki olasılı nasıl belirleyeceğiz!
Örnek: 100 hareketten 30 hareket yumruksa yumruk yani punch yüzdesi P(punch) = 0.3
Matematik Nerelerde ?

P(AuB) = P(A) + P(B) – P(AnB)
Son 100 günün; 70 günü hava kapalı ve 35 günü yağmurlu oldu başka hava koşulun da bir günde olmadı!
Kaç gün hem kapalı hemde yağmurlu oldu?



AI nedir?

Oyun programlamadaki yapay zeka; oyun içierisindeki kullanıcı dışındaki bütün objelerin insana özgü bazı davranışları oluşturmasını sağlamaktır.
Örnek Olaraak
Araba oyunundaki diğer arabalar.
Ateş ettiğiniz canavarlar
RTS oyunlarındaki rakip nişancı

AI Kullanımı

Yapay Zeka Kullanıcının Herbir yeni hareketine göre tekrar kendini çalıştırarak yeni bir konum belirlemelidir.
Her Yerde Kullanılmalımıdır?


Yapay Zekanın Amacı
Amaç Temelli Ne Yapacağı sıkı kurallarla verilmiş. Bu hareketi yap şu hareketi yapma.
Hemen değişen durumlara yanıt verme.
Knowledge intensive - the AI knows a lot about the world and how it behaves, and embodies knowledge in its own behavior
Karakteristik olarak sadece bazı olaylara yanıt verme.
Ayrıca AI sayesinde
AI hızlı ve kolay geliştirmeye yardımcı olur.
CPU ve RAM kullanımını azaltır.


Yapay Zekaların Video Oyunlarında Kullanımı

5-10% CPU Gerçek Zamanlı
25-50% CPU for Durum Temelli

Takip /Kaçış davranışları
Grup davranışları
Sonlu durum makineleri
Adaptasyon / Öğrenme


Takip Kaçma

En kısa yol algoritması bu durumlar için kullanınıla bilir. Canavarın oyuncuyu en kısa yoldan yakalaması. Araba yarışında diğer arabanın oyuncuyu en kısa yolu bularak geçmesi.


Örnek Kod

Oyunu oynayan ile Oyundaki canavarın konumlarının alınıp
en kısa yoldan canavarın kullannıcı üzerine saldırması

Predator is at coordinates (predatorX,predatorY).

Prey is at coordinates (preyX,preyY).

if (predatorX > preyX) {
   predatorX--;
} else if (predatorX == preyX) {
   // do nothing
} else {
   predatorX++;
}

if (predatorY > preyY) {
   predatorY--;
} else if (predatorY == preyY) {
   // do nothing
} else {
   predatorY++;
}

Algoritmayı Geliştirmek

En Kısa Yolun Bulunması

Algoritmayı Geliştirmek

Bresenham’s algoritması ile En Kısa yolun farklı bir şekilde bulunması


Ekran ile Bu işin bulunması

Ekrandaki Pixel ilede bu işler gerçekleştirilebilir.

 Örnek Bir Kaçma Algoritması


Terimleri Tanımlama:

Closing velocity, Vc = Vprey – Vpredator

Range to close, Sc = Pprey – Ppredator

Time to close, Tc = | Sc | / | Vc |


Intercept position hesaplaması

Intercept position = Pprey + Vprey x Tc