image

Nalan Ulusoy

Merhaba,Kısaca kendimden biraz bahsedeyim.Çanankkale On Sekiz Mart Üniversitesi Bilgisayar Mühendisligi mezunuyum.Yazılm geliştirmek yeni teknoloji ve trendleri takip etmek bu noktada da ögrendiklerimi sizlerle paylaşmayı seviyorum.


EGİTİM
Çanakkale On Sekiz Mart Üniversitesi

Bilgisayar Mühendisligi

2015


PROJELER

YETENEKLER
Nesne Yönelimli Programlama
Java
Objective C
Git
Sql
YAZILARIM

YENİ MEZUN BİLGİSAYAR MÜHENDİSİ OLMAK


Bilgisayar mühendisliği okumak zordur arkadaşlar birbirimizi kandırmayalım öncelikle emek daha sonrada sabır ister. Bu yazıyı okuyan yeni mezun arkadaşlarımı bu zorlu süreci başarıyla atlatıkları için kutluyorum.Fakat işin en zor kısmı maalesef yeni başlıyor.Bu aşama tamamen sizin 4 seneyi nasıl geçirdiğinize bağlı ve buna ek olarakta bu süreçteki kararlılığınız  en önemlisi  sabrınızla  uzayıp kısalacaktır .
Hepiniz gibi bende mezun olana kadar benim iş bulacağımı değil işin beni bulacağını zannediyordum fakat işler hiçte öyle yürümüyor.Eğer çok parlak bir öğrenciyseniz zaten bu süreci yaşamadan iş hayatına adım atmışsınızdır.Benim yazım daha çok diğer kısmı ilgilendiriyor.
Okul hayatım sonrası tecrübe etiklerimden yola çıkarsam veri yapıları,algoritma ve nesne yönelimli programla ve veri tabanı dersleri yazılım geliştirici olarak devam etmek isteyenlere söylüyorum.Mezuniyet sonrası için büyük önem taşıyor.Bu noktalarda sıkıntılı olanlar mutlaka bu noktadaki eksiklikleri tamamlamalılar.
Mezuniyet sonrası yapılması gereken ilk şey ingilizce ve türkçe olmak üzere cv hazırlamak daha çok diliniz varsa o dillerde de olur .Cviniz iş tecrübeniz olmadığı için stajlarınızı ve okulda yaptığınız projelerden bahsedeceksiniz.Mümkün olduğunca dolu bir cv olması güzel olur .Çünkü karşınızdaki kişiler sizi tanımıyor onlara kendinizi en doğru şekilde anlatmalısınız.Yani bir nevi kendi reklamınızı yapmalısınız.Cv de olmalı diyebileceğim ilk şey  öğrendiğin  işleri anlatığın bir blogun  yada web siten varsa mutlaka ekle bu süreçte çok işine  yaradığını söyleyebilirim.Daha sonra github hesabı tabi biraz projelerin bulunduğu bir github hesabından bahsediyorum.Eger okul hayatında baştan sona kadar tüm süreçlerini kendin yönettigin bir projen yoksa mezuniyet sonrası mutlaka bu eksigi tamamlamalısın.Okul döneminde katıldığın kurs ve seminerler bunlarda önemli ,yaptığın projeler ve katıldığın organizasyonlar bu aşamada çok yardımcı oluyorlar.Ve en önemlisi satabileceğin en önemli şey bitirme projen o en önemli yeri alıyor.Belkide ballandırarak anlatabilecegimiz en önemli varlıgımızdır.Ama malesef üniversitede  bunun önemini pekte anlayamıyorsunuz.
 Yeni mezun bir kişinin karşı tarafa öğrenim hayatında yaptıklarını anlatmanın en güzel yolları bunlar diyebilirim .Cv ye bu bahsettiklerimide kattıktan sonra eğer bir linkedln hesabınız yoksa mutlaka açmalısınız.Linkedln hesabı olanlar bu bahsettiklerimi profillerinde de uygulayabilirler.Tüm bunların yanına  ek olarak bazı  tavsiyelerim var . Kendinizi  sadece belli teknolojileri kullanırım diye kısıtlamayın eğer bu kısıtlamaları yaparsanız bu süreç biraz  uzayabiliyor.Tabi arada idealist kişiler çıkmıyor da değil onları ayrıca tebrik ediyorum kararlılıklarından dolayı fakat bilgisayar mühendisliğinin oldukça geniş bir iş sahası olduğunu düşünürsek kendinizi kısıtlamanıza gerek olmadığını söyleyebilirim. Tutuculuk yazılım dünyasında çokta dogru bir yaklaşım değil.Tabiki kendinizi bir alana çok ait hissediyorsanız o yolda ilerleyebilirsiniz.Ama bir yerde işe başladınız diyelim bunu daha bir sene içinde bir çok arkadaşımda gördüm. İş değişikliği yaptığınızda başka bir şirkette bambaşka işler yapıyorsunuz hep aynı çizgide devam etme şartı yok.Size vereceğim en doğru tavsiye bir yerlerden başlayın bu çok büyük bir şirkette olabilir küçük bir firmada java  teknolojileriylede c # teknolojoleriylede windows tabanlı sistemlerlede linux unix tabanlı sistemlerlede  kendinize doğru parametreleri kattıktan sonra nereden başladığınızın çokta büyük bir önemi yok.En kötü tecrübe bile tecrübesizlikten iyidir.Bu evrede amacımız sadece öğrenmek bunu aklımızdan çıkarmayalım.
Yazımın başından beri söylediğim gibi mühendislik sabır gerektiren bir iş  kariyerinizde emin adımlarla ilerlemek için en az beş sene gerekli bunu neye dayanarak söylediğimi  iş ilanlarına biraz göz gezdirerek rahatlıkla anlayabilirsiniz
Mezuniyet sonrası evresi biraz sanıcılı çünkü  iş başvurusu yaptığınızın ertesi günü kimse aramıyor. Ama aramıyor diye kimse dönmeyecek yada asla işe giremicem triplerine girmeyin çünkü  bu süreç sabır istiyor .Ben iş aramaya  ağustos ayında başlamıştım.Ve  ilk olarak büyük firmaların kapısını aşındırdım.İstanbul'dan bir çok büyük teknoloji firması ile görüştüm yapı kredi teknoloji ,ford,garanti teknoloji hatta amerikadan hindistandan bile bazı şirketlerle görüştüm.Bazılarından olumlu geri dönüş alamasamda kendime kazandırdığım ve farkına vardığım çok şey oldu.Her iş görüşmesi sonrası diğer görüşmeye kendimi biraz daha aşarak gidiyordum.Kendimi belirli bir alana şartlamış değilim.Ve her günümü kendime ne yapabilirim ne öğrenebilirim neyi yapamıyorum sorularıyla eğitmeye çalışıyorum.Ve şu kesinlikle  gerçek kendini eleştiren kendini sorgulayan eksiklerinin farkında bir insanın yapamayacağı hiç bir şey yok.Çevrenizdeki insanların olumsuz yorumlarına takılmayın.Bu kötü yorumlu kişileri hayatınız her döneminde her zaman her yerde göreceksiniz.Bu yüzden kendi motivasyonunuz olun.En basitinden olimpiyatlara katılan sporcular 4 sene hazırlanıyorlar ve tek birgün tek bir şansları oluyor.Ama asla mücadeleyi bırakmıyorlar pes etmiyorlar.
 Ben kendimi şu şekilde motive ediyorum. Linkedln de bir kaç kişiyi idol belirledim.Onların profillerine cvlerine bakarak motive oluyorum.Çünkü onlarda kolay bir yerlere gelmemişler.Sizde kendinizi motive etmeyi keşfedin.Ve en önemlisi hayal kurun.Hatta kurduğunuz hayali beyninizde yaşatın.



VMWARE İLE KALİ LİNUX KURULUMU

Çoğumuz Linux yada Windows tabanlı bazılarıda Unix tabanlı sistemler kullanıyor.Kullandığınız  sistemin ağ komutlarının yetersiz kaldığını düşünüyorsanız  yada bu konulara meraklınız varsa mutlaka bilgisayarınızda olması gereken şey  kali linux dur. Kali linux 2013 yılında pek çoğumuzunda bildiği backtrack sisteminin yapımcıları tarafından oluşturulmuş ağ güvenlik kontrol sistemidir.Kali linux işletim sistemini mevcut işletim sisteminin yanına yada live olarak kurabildiğiniz gibi sanallaştırma teknolojisinin  nimetlerinden faydalanarakta kurabilirsiniz.
Ben sizlere sanallaştırma yöntemiyle kurulumundan bahsedeceğim.
Sanallaştırma için İki methodumuz  var. Biri Vmvare player  diğeri ise Virtualbox kurarak kurulum yapmak.
Ben vmvare player ile kurulumu anlatacağım.
Öncelikli olarak verdiğim linkteki sistemlerden sizin sisteminiz  için uygun olanı seçip indiriyoruz.
https://my.vmware.com/web/vmware/free#desktop_end_user_computing/vmware_player/5_0|PLAYER-504|product_downloads
Daha sonra indirme işlemi tamamlanınca sırayla   ekran görüntülerini  takip ediyoruz.

Sanal Makine Oluşturma

vmware

Bu aşamada  ilk olarak yapmamız gereken 64 bit yada 32 bit kali linux iso disc indirmek  bu işlemi bu linkten https://www.kali.org/downloads/
yapıyoruz.








Burası çok önemli eğer işletim sistemine doğru versiyonu seçmezsek krulum esnasında siyah ekran hatası alıyoruz.O yüzden kali linux un debian tabanlı olmasını göz önüne alarak kurulum yaptığım iso ya uygun versiyonla ilerliyorum.

vmware















Bu kısımda çok önemli eğer kurulum yapacağımız yeri gösterme konusunda bir sıkıntı olur ise 2. ekran görüntüsündeki hatayı alabilirsiniz. Ve kurulumunuz yarıda kalabilir.



vmplayer











kali linux


İso diskimiz vmvare playera ekleme işleminden sonra kuruluma başlayabiliriz.Eklenen sanal makinayı açıyoruz.

kalilinux


Daha sonra karşımıza aşağıdaki gibi bir seçim menüsü geliyor.Burda size tavsiyem Graphical ınstall seçeneğini seçmeniz grafif bir arayüzle kolayca kurulum yapabiliyoruz.Ve eklenecek yapılandırmaları daha iyi anlayabiliyoruz.

kali linux
















Gelen sorularda location kısmını işaretleyip dil ve klavye seçeneklerini belirliyoruz.Bizden bir root paralosı belirlememizi istiyor.Bizde belirlediğimiz root paralosını oluşturuyoruz.Root parolanız  unutmamanız gereken sisteminiz için önemli bir bilgidir.



kali linux













Daha sonra disk bölümlendirmeleri ve ağ yapılanması gibi bir kaç ayardan sonra sistem kur seçeneği geliyor.



kali linux












Kurulum tamamlanınca kullanıcı adı ve parolası belirleyip kali linux ile tanışabilirsiniz.



kali linux

SON DÖNEMLERDE ARTAN VİRÜSLÜ MAİLLER VE SİBER SALDIRILAR HAKKINDA

Bir kaç aydır yazı yazmadığımı farkettim son dönemlerde sık uğraştığım hepimizide korkutan bir konu hakkında yazmak istedim.
Bu yılın başlangıcından beri dünya çapında oldukça fazla siber saldırı yapılmaya başlandı.Bunlardan birkaç tanesini hatırlatayım.Bu yılın Şubat ayında FBI ve DHS çalışanlarının özel bilgilerinin bir kısmının internet üzerinden paylaşılması ve bu saldırının 16 yaşındaki bir çocuk tarafından yapıldığının ortaya çıkması baya yankı uyandırdı.Bunun yanı sıra şu sıralar gündemde olan her ne kadar yöneticiler tarafından kabul edilmese de yahoo gmail dropbox gibi hesaplarından milyon kıvamında hesap bilgisi çalındığı idda edilliyor.Tüm bu olaylara ek olarak Rusya ve Türkiye arasındaki gerginliğin geçtiğimiz aylarda gerçekleşen siber saldırı savaşına dönüşmesi ardından birçok bankanınn internet şubesine uzun süre erşilememesi diğer yandan milli savunma bakanlığı ve TSK gibi Kamu kurumlarının internet sitelerinin de çökmüş olduğunu hatırlarsınız. Tüm bu olanlar  Thomas Risenpart 'ın hiç bir sistem tamamen erişilemez değildir sözünü kanıtlar nitelikteydi.Ve böylece gerek kurumsal gerek bireysel herkes bu saldırıları yaşar hale geldi.
 Son zamanlarda ise  ptt,türktelekom,turkcell gibi firmaların adını kullanarak sanki fatura mailiymiş gibi mailler yada kargo teslimatı bilgi maili gibi görünen mailler aldık bir çoğumuz bu maillerin beraberinde içerik olarak linke tıklayın yada .exe,zip,mdoc,txt,rar vb uzantılı sanki fatura uzantısıymış gibi görünen ama tıklandığında bilgi hırsızlığı yapan fidye virüsleri kullanıcı hesap bilgileri çalan casus yazılımlar gizli oluyor. Bu virüslerden en tehlikelisi cryptologger virüsü açıldığında çözülmesi mümkün olmayacak  bitler bütüklüğünde şifrelerle bilgisayarınızdaki belgeleri şifreleyip uzantılarını değiştirerek kontrolü ele geçiriyor.Ve malesef şifreyi vermek içinde oldukça yüklü bir fidye istiyor. Bu tarz tehlikelerle karşılaşma ihtimalinide düşünerek önemli verilerimizi bilgisayarımızda tutmanın çokta akıllıca olduğunu söyleyemiyeceğim.Önemli verilirenizi mutlaka yedeklemelisiniz.
 Gelen maillerin virüslü mail olduğunu anlamak için ilk önce gelen mailin gönderici adresine bakmalıyız.Gönderici adresinden şüphelendikten sonra mailin içeriği şüphe uyandırıcı ve yukarıda bahsettiğim gibi sizi bir bağlantıya yada bir dosyayı açmaya itiyor ise maili kesinlikle açmayın yukarıda anlattığım yöntemlerle  emin olamıyorsanız  ise  ücretsiz bir servis olan https://www.virustotal.com/ da ilgi maili yükleyerek tarattığınızda size virüslü olup olamdığı bilgisini veriyor.Bu noktada maili silip bilgisayarınızı güvenilir bir virus programıyla taratmakta fayda var.
 Tüm bunların yanında  bazen kaynağı kendiniz olan yada arkadaş listenizden biriymiş yada  yukarıda bahsettiğim büyük firmaların adresinden de geliyormuş gibi görünen gönderici adresinin maskelendiği mailleri de gönderebiliyorlar.Tüm bu olası  durumların içinde anlayamadığınız bir maili açmış dahi olabilirsiniz böyle bir durumda virüs programlarının bile başarılı olmadığı görülmüştür bilgi güvenliğiniz için en doğru yol birden fazla antivirüs programıyla bilgisayarınızı taratıp temizlemek mail parolanızı güçlü bir parola ile değiştirmek  hatta bilgisayar telefon yada tabletinizi fabrika ayarlarına döndürmek en doğru yol olacaktır.



LİNUX KULLANICILARI İÇİN BAZI SORUNLARIN ÇÖZÜMÜ

Öncelikle merhaba yazı yazmayalı baya olduğunu farkettim.Geri dönüşüde not defterime kaydettiğim başıma gelen bazı olabilitesi yüksek sorunlarla yapmak istedim.

1.sudo apt-get update komutunu terminalde çalıştırdığımda aldığım bir sorun ve çözümü
sudo apt-get update komutunu terminalde çalıştırdığımda update yapmıyordu http hataları alıyordum ve komut tamamlanınca çıktıda verdiği hata
E:Bazı indeks dosyaları indirilemedi.Bu dosyalar yok sayıldılar ya da önceki sürümleri kullanıldı.
Siz siz olun komut satırınıza sonucunu tahmin edemediğiniz komutlar çalıştırmayın diyip uyarımı yaptıktan sonra bu sorunu çok basit birşekilde aşabilirsiniz.İşletim sisteminin update ve upgrade yaptığı depoların serverlarını değiştirmekle halledebiriz.Ayarlardaki yazılım güncelleştirmeleri kısmındaki serverı  kendinize uygun server olarak ayarlamanız bu hatanın çözümün ulaştırıyor.
ubuntu









2.Linux işletim sistemini yükledikten sonra karşılaşacağınız bir hata ekran driver problemi
Linuxta yükleme yaptığınızda driver yüklemeyle uğraşmanıza gerek kalmaz normal standartlarda ama bazı alternatif durumlar hariç kurulumu yaptıktan sonra fare imlecinizin titrediğini yada yanıp söndüğünü farkederseniz ozaman ekran driverınızla ilgili ayarlarda sorun vardır.Peki bu sorunu nasıl aşarız.
İlk olarak lspci komutunu komut satırında çalıştırıp driverlarımızla ilgili bilgilere bakalım.Bu komut çıktısını doğru analiz etmek çok önemli 
$lspci | grep VGA


linux

 Daha sonra ekran driverımıza uygun güncelleme ve yüklemeleri sürüm ve modeline göre indirebiliriz.
Ekran kartı nvdia olanlar için;
$sudo apt-get purge nvdia*
$sudo apt-get install nvidia-331-updates-dev
Diğer ekran kartı modelleri için bu adresten yararlanabilirsiniz.
 https://help.ubuntu.com/community/BinaryDriverHowto/Nvidia

3.Linux işletim sisteminizi yeni kurdunuz ve localhostu çalıştımak ve onunla ilgili bazı işler yapmak istediniz diyelim ozaman sisteminize apache web sunucusu kurmalısın yoksa tarayıcnızdan localhost yazmanız anlamsız olucaktır.
$sudo apt-get install apache2

apache








Yazıp çalıştırınca yukarıdaki ekran görüntüsünü elde etmeliyiz.


Web ile ilgili işlem yapıcak arkadaşlara son tavsiyem php ve mysql de kurmalarıda gerekli.
$sudo apt-get install php5 php5-mysql mysql-server burdada mysql parolası belirlemek dışında başka bir geri dönüş almadan işlemleri tamamlarsınız.

apache








ANDROİD DOSYA OLUŞTURMA VE DOSYAYA YAZI YAZMA İŞLEMLERİ


Android de dosya oluşturmak ile ilgili oldukça fazla alternatif var ve hiçbir sıkıntı çekmiyoruz.Ama şu noktada bir sıkıntı oluşabiliyor.Eğer dosya ismimiz her dosya oluşturduğımuzda farklı olsun istiyorsanız yada dosya adımız oluşturduğumuz saat ve tarih bilgilerinden oluşsun ve daha anlaşılır olur diye bir düşünceniz varsa ve dosyaya yazı yazdırma işlemlerindeki  ile ilgili uzun kod satırlarından kaçmak istiyorsanız.Bu yazımda aradığınızı bulabileceğinize inanıyorum.
İlk olarak sistem zaman bilgimizi tarih saat formatına göre simledateformat sınıfına ait format () metodu yardımıyla alıp dosya asını tutan filename değişkenine atıyoruz.Daha sonra string tipinde oluşturduğumuz dosya adını file sınıfının kullanıldığı File_create metodunu göndererek oluşturuyorum.Burada hem dosya  oluşturdum hedme yazma işlemini gerçekleştirdim.
Artık oluşturduğum dosyanın içerisinde Merhaba Dünya ! yazıyor.Kodlar aşağıdaki şekilde;
String dosyaadı=new SimpleDateFormat("yyyy-MM-DD hh-mm-ss'.txt"").format((new Date));
//Dosya adını o anki sistem saatine göre oluşturuyorum.
public void File_create(String dosyaadı){
File dosya =File(Envoriment.getExternalStorageDirectory().this.dosyaadı;
//Buarada dosyamızı oluşturuyoruz.
String yazı ="Merhaba Dünya !";
try{
fos=new FileOutputStream(dosya);
fos.write(veri);
//Burada oluşturduğumuz dosyaya yazı yazıyoruz.
fos.flush();
fos.close();
}
catch(FileNotFoundException e){
catch(IOException e){}
catch(FileNotFoundException e){}
catch(IOException e){}
}
Küçük bir hatırlatma Android uygulaması yaparken en çok dikkat edilmesi gereken şey kuşkususz izinler dosyalara yazma işlemi yapabilmemiz için dosya yazma okuma iznine sahip olmak lazım Android Manifest içerisine aşağıdaki izinleri eklemelisiniz.Yada izinler yerine aşağıdaki kod blokları ekleyebilirsiniz.
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
public boolean isExternalStorageWritable(){
String state=Environment.getExternalStorageState();
if(Environment.MEDIA_MOUNTED.equals(state)){
return true;
}
return false;
}public boolean isExternalStorageReadable(){String state=Enviroment.getExternalStrorageState();
if(Environment.MEDIA_MOUNTED.equals(state) || Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)){
return true;
}
return false;
}

                                                 

LİNUX KULLANICILARI İÇİN GİTHUB KULLANIMI






  Yazımda linux kullanıcıları için github kullanımından bahsedicem.Bu yazıda githuba nasıl kayıt olunur kısmının anlatmıcam github hesabınız olduğunu düşünüyorum ,eğer yoksada o kısmı anlatımını beğendim başka bir adrese http://ecylmz.com/107/github-kullanimi/yönlendiriyorum .Ben Githubın yazılımcıların twitterı olduğunu düşünüyorum sizde bu bakış açısıyla bakarsanız kavrama açısından daha güzel olur .Githubta herkesin bir profili var.Bu profilleri takip edebiliyor paylaşımlarını yıldızlayabiliyor hatta yorum bile yapabiliyorusunuz.Bu profilde birden çok kavram söz konusu ilk olarak depo kavramına değineceğim.Depoda github üzerinde proje geliştirmemiz yada bitmiş bir projenizle de olabilir isimlendirerek ortak bir çalışma alanı yapıyorsunuz.Bu depo sayesinde hemde bilgisayarınızda geliştirdiğiniz projenizi korumuş oluyorsunuz Allah korusun bilgisayarınız çökse yada herhangi bir sıkıntı yaşasanız kodlarınızın peşinden yas tutmaya gerek kalmaz.


github













 Depoyu github üzerinden oluşturduktan sonra bilgisayarımızada uzak depodan çekiyoruz.




github













 Çekerken terminalde resimdeki  komutları tek tek çalıştırmak yeterli.Eğer deponuzu silmek isterseniz ise
Github arayüzünde ayarlar bölümü var oradan rahatça silebilirsiniz.

Şimdi depo kavramını anladıysak üzerinde yapıcağımız işlemler nasıl ve neden olucak onu anlatayım.Deponuza projenizin eklemek istiyorsunuz işte buna github ağzıyla commit diyoruz.Terminal de şu komutları çalıştırıyorsunuz.

$git clone uzak sunucu adresi
 Bu komutla deponuzu bilgisyarınıza çekiyorsunuz.

$git add göndericeğiniz dosya adı 
Bu komutla uzak depoya dosya ekliyoruz.

$git commit -m "tırnak içerisine açıklama yazıyoruz dosya ile ilgili olabilir yada siz ne isterseniz" Gönderdiğimiz dosyaya açıklama ekliyoruz.

$git push -u origin branchadı
Burda ise branch  üzerinden dosya üzerinde yapılan değişiklikleri  gönderiyoruz.

Branch bahsetmek istediğim diğer bir kavram.Branch ile projemizi birden çok dalla yada isterseniz tek dal üzerinden de yapabilirsiniz yönetiyoruz.Böylelikle proje dallara ayrılıyor yani depoyu ağaca benzetirsek   branch ağacı dalları gibi düşünebilirsiniz projeye eklediğimiz dosyalar veya değişiklikler bu dal üzerinde oluyor.
Ana brancımız masterdır.Master branchı depoyu oluşturduğumuzda varsayılan olarak bulunuyor.Yeni brach eklemek isterseniz ise bu komutla depomuza ekleyebiliyoruz.
$git branch branch adı  

Eğer oluşturduğunuz yeni branca geçmek istiyorsanız.

$git checkout yenidal ismi

Birden fazla  branchım oldu bu değişiklileri birleştirmek istersem 
$git merge branchadı

Brancı silmek içinde
$git branch -D branchadı

 Peki projemdeki bir dosyayı silmek istiyorum.O zaman bu komutu çalıştırıyorum;

GİTHUB $git rm -r dosya adı

Ve yaptığımız bu silme değişikliğinide uzak depoya göndermek için
$git push -u origin branchadı

$git status 
 Şuanda github da ne konumda olduğunuza bakmak istiyorsanız.Bu komut ile localiniz de ki klasörünüz de değişen,eklenen ve silinen dosyaları görürsünüz.


 Bu komut ile de nerde değişiklik yaptıysanız satır satır gösterir.
$git diff dosyaadı

$ git pull
Son olarak bu komut ilede projede yapılan değişiklileri kendi bilgisayarınıza çekebiliyorsunuz.Yani arkadaşlarınızın proje üzerinde yaptığı değişiklerden haberdar oluyorsunuz.

BEN ROBOT FİLMİ FARKIYLA:YAPAY ZEKA VE GELECEKTE BİZİ NELER BEKLİYOR

Yapay zeka, bir bilgisayarın veya bilgisayar kontrolündeki bir robotun çeşitli faaliyetleri zeki canlılara benzer şekilde yerine getirme kabiliyeti.Yapay zekanın sözlükteki karşılığı bu nitelikte, piyasada bu konuyu işleyen birden çok film var ama  I,robot gerçekten kafanızdaki soruların bir nebzede olsa da cevap bulabilmesi açısından oldukça doğru bir tercih olacağını söyleyebilirim.
   Birçoğumuzun aklında sürekli bizi farklı düşüncelere iten sorular sorduran bir gelecek merakı var. Ve çoğumuz teknolojiyi takip edip en son çıkan ürünleri kullanmak istiyoruz.Peki hepimize ait birer robot olsa ve günlük hayatımızda bize birçok konuda yardımcı olsa işte bu tamda bir çoğumuzun isteyeceği şey değil mi ? Teknoloji okadar çok ilerlediki  uzay çağı bile yaklaştı denirken herkese bir robot düşebileceği yıllar ve hatta yapay zeka içeren robotlar artık aklımızın alamıyacağı şeylerden değil.Filmde tamda bundan bahsedilmiş.2004 filmi olmasına rağmen oldukça iyi bir görselliği var şimdiki filmlere kafa tutar nitelikte.

 Filmimizdeki olay örgüsü 2035 yılında gerçekleşiyor. Başrollerinde Will Smith, James Cromwell  ve Susan Calvin  yönetmen koltuğunda Alex Proyası görüyoruz.Filmde üç ana karakter var dedektif spooner (Will Smith) robotları sevmeyen kuşkucu ve zeki biri ,yapay zeka alanında uzman ve başarılı bir doktor Allfered Lanning(James cromwell),ve onun yardımcısı  bridget  maynohan(susan calvin). Olaylar doktorun esrarengiz ölümüyle başlıyor. Bu gizem ardında da birden çok  ipucu bırakıyor ,kuşkucu ve robotlardan hoşlanmayan dedektifimiz ile  doktorun yardımcısı  ve doktorun icad ettiği Sonny adlı robotun yardımlarıyla gizem yavaş yavaş çözülüyor. Sonny yapay zeka ile çalışan bir robot ve doktor Allfered Lanning tarafından tasarlanmış diğer robotlardan oldukça farklı Cpu ve onu filmdeki diğer robotlardan üstün kılan farklı özelliklere sahip.Filmde verilmek istenen bir çok mesaj var bu mesajlara geçmeden önce,filmde sıksık vurgulanan üç robot yasasından bahsediceğim.Tüm teknoloji nerdeyse bu temel üzerine kurulmuş gibi de gösteriliyor.

Kural 1: Bir robot asla bir insana zarar vermez ya da bir insanın zarar görmesine izin vermez. 
Kural 2: Bir robot insanlara mutlaka ve her koşulda itaat etmelidir. 
Kural 3: Bir robot birinci ve ikinci kurala karşı gelmemek kaydı ile varlığını muhafaza etmekten sorumludur.
Ayrıca filmde ısrarla durulan başka bir konu ise bu üç kuralın asla birbiriyle çelişemeyeceğiydi.Bu kurallarla  insanların emrinden çıkmayan robotların üretildiğini kanıtlamaya çalışıyorlar.

 Bunun dışında filmde yapay zeka kullanılmış robotlar, sistemlerin kontrolünü sağlayan sensörlü kameralar ,hologram adında bir donanım var benim çok ilgimi çekti içerisinde bir  yazılım yüklü ve de bu cihaz geçmişten kayıtlar içeriyor hatta sorulan sorulara sanki kişinin  kendisiymiş gibi cevaplar bile veriyor ,yapay organ nakli ,oluşabilecek trafik kazalarını önlemek için tasarlanmış mekanizmalı arabalar,arabaların içerisinde yapay zeka kullanılmış bilgisayar ve akıl almayacak veritabanları  tamam 2035 yılındayız  diyebiliyoruz.

 Teknoloji o kadar yerleşmiş ve savunuluyor ki ikna ediyor sizi ve bende filmde yaşayan insanların bu ikna edici düşüncelerini çok haklı buluyorum.Bugün çıkıp biri dese ki akıllı telefonlar insanlığı tehdit ediyor kaçımız telefonumuzu iade ederiz  gülmekten ölürüz herhalde ,şaka bir yana  bu duyguyu gerçekten hisettirmişler.Aklıma da şu soru geliyor olur olmaz cep telefonumuz,akıllı saatlerimiz,tabletimiz yada bilgisayarımız olmadan kaç saat yokluklarını hissetmeden yaşayabiliriz? Yoksa teknolojiye bağımlı mı yaşıyoruz?

İşte filmde bir çok soru ve aynı zamanda birçok cevap var  ;yapay zeka ile oluşturulmuş bilgisayarlar yada robotlar bizim yerimizi de alır mı korkusu yada robotlar insan duyguları hissetse ve insanlar gibi karar verebilseler durum nereye kadar gider bunlar hepimizin aklını kurcalıyor.Robotların çok kullanıldığı bir dünyada yaşasak sanki onlar yinede insanoğluna muhtaç olurlarmış diye düşünüyoruz birçoğumuz ya onlarda gelecekte bizim sahip olduğumuz özelliklere sahip olslar bu mümkün olabilir mi ?Bu kısım hepimiz için düşündürücü değil mi sanki?

 Filmde insani duyguların robotlara kazandırılmasını ve teknolojinin nekadar ilerleme kaydediceğini hissediyorsunuz.Kendinize çokça soru soran biriyseniz en azından fikir edinebileceğiniz güzel bir film tavsiye ederim.Hepinize iyi seyirler.

FİLM KAHRAMANIMIZ SONNY FARKIYLA :AGENT KAVRAMI 

 Yapay zeka dersinde hocamızın bu hafta anlattığı bazı kavramlardan bahsediceğim ve bu kavramlar aracılığıyla filmimizdeki yapay zeka kullanılmış robotumuz Sonny üzerinde bu kavramları açıklayacağım.
Agent: Akıllı yazılımlara denir.Dahada açarsam sensörleri yardımıyla çevreyi algılayan efectorlerı (gövde,kol vs) yardımıyla da hareket eden araçlara verilen genel isim.Yani yapay zeka dili ile konuşursak Sonny bir agentdır.Agentları 4 bileşende tarif edebiliriz;

1.Performence measure:Performans ölçümü
2.Prior knowledge and enviroment:Agent o andaki çevre ile ilgili bildiği değerler
3.Actions :sensör hangi hareketleri yapıyor
4.Sensors: Algılama işlemini gerçekleştirir.

Task envoriment: (ortam değişkenleri)Ve yine Agentları tanımlarken yardımcı bir diğer kavram ;

1.Observable:Agent gözlem kabiliyetini derecelendiriyoruz.(Fullyobservable(tamamını gözlemleyebilen),partional(herşeyi gözlemleyemeyen belirli bir kısmı görebilen))
2.Agents:Single agent(ortamda bir tane varsa),Multiple agent(birden fazla ise)
3.Deterministic,stochastic:Deterministic ortamdaki bir sonraki durum şuandaki durum üzerinden belirleniyorsa(Bulutlu bir hava varken yağmur yağıcağı düşüncesi),Stochastic (taxi driving)
4.Episodic,Sequential:Episotic yaptığı bir hareketinden ilerideki durumları etkilemezse,Sequential sürekli bir durum söz konusu
5.Static,Dinamic:Static agent görevlerini yaparken ortam değişmiyorsa,Dinamik değişiyorsa(taxi driving)
6.Discreate,Continus:discreate sınırlı sayıda belirtilmiş durum varsa(keyboard entry of finding),Continus(taxi driving)


Action Type Performence measure Prior Knowledge and
Envoriement
Actuators Sensörs
İnsan duygularının bir kısmını öğrenmiş ve gözlemlediği davranışları öğrenebilen,karar verebilen,kendisini koruma içgüdüsü bulunan insan taklidi robot insan davranışlanış ve duygularını öğrenme Öğrenmesi için daha önce öğreneceği bilgileri yada davranışları gözlemlemiş olmalı gözlemleyerek öğreniyor görme hissetme ve konuşma diyebiliriz Ekran,sorular,temas Görme ,hissetme ve ses algılamayı sağlayan sensörle
Task enviroment Observable Agents Deterministic Episodic Static Discreate
İnsan duygularının bir kısmını öğrenmiş ve gözlemlediği davranışları öğrenebilen,karar verebilen,kendisini koruma içgüdüsü bulunan insan taklidi robot Fully observable Single stochastic sequential dynamic continus


ANDROİD PROJESİNDEKİ DOSYA YAPISI



Yeni bir Android projesi yarattığımızda standart bir Java projesinden farklı olarak birtakım yeni klasör ve xml dosyası görürüz.Bu dosya yapısını kavramak projeyi geliştirmeden önceki en önemli adımdır.Temelleri iyi oturtup neyi neden ve hangi dosyadan yaptıgımızı anlamak çok önemli.



android



















src klasörü: Kaynak dosyaları burada yer alır. Bu klasörün içinde Java dosyalarını tutacağız.src nin altında MyActivity dosyası var burda uygulama ile ilgili kodları yazıyorum.Ve yine Android Manifest.xml dosyası var burda uygulama ile ilgili her türlü bilgiyi barındırır.Android programı çalışırken kendisini oluşturan elemanlar arası iletişimi bu dosya üzerinden sağlar.
AndroidManifest.xml dosyası üzerinden uygulamanın cihaz üzerinde erişebileceği kaynaklar(internet erişimi, konum bilgisi ve klasörlere erişim gibi) belirlenir.

gen klasörü: Android tarafından otomatik oluşturulan dosyalar burada bulunur. Biz uygulamaya yeni kaynaklar ekledikçe bu sınıf da ADT tarafından otomatik olarak güncelleniyor. Bu sınıf, appt(Android Asset Packing Tool) tarafından oluşturuluyorBuradaki R.java dosyası projede kullandığınız her türlü tasarım, resim ve metin dosyasının tanımlayıcılarına (ID) referans içerir. Bu dosya otomatik olarak oluşturulur ve dışarıdan müdahale edilmemesi önerilir. 

assets klasörü: Uygulamada kullanacağımız destekleyici dosyaları burada tutabiliriz. Örneğin, sqlite veritabanı oluşturduysak ve uygulamayla beraber sqlite dosyasını da göndermek istiyorsak, dosyanın bu klasör içinde bulunması gerekir. Yada uygulamamız ile birlikte paketlenmesini istediğimiz dosyalar varsa(tar.gz gibi) bunları koymamız gereken klasördür.

bin klasörü: Uygulamanın derlenmiş hali bu klasörde tutulur. 

libs klasörü: Eğer uygulamamızda Android SDK içinde yer almayan bir Java kütüphanesi (örneğin AdMob) kullanıyorsak, ilgili jar dosyalarını bu klasöre atmamız gerekir. Ancak bir jar dosyası ekledikten sonra dosyaya sağ tuşla tıklayıp Add To Build Path seçeneğini seçmeyi unutmamalıyız. Aksi takdirde derleyici jar dosyasını göremez. 

res klasörü: Uygulamayla ilgili her türlü kaynak bu klasörde tutulur. Burada tutulan dosya tipleri resim dosyaları, ekran tasarımları ve metin dosyaları olabilir. Şimdi bu klasörü biraz daha detaylı inceleyelim;

drawable klasörleri: Bu klasörler uygulamada kullanılan resim dosyalarını içerir. Bu dosyalar PNG ya da JPEG formatında olabilir. Klasörün yanındaki hdpi (high dpi), ldpi (low dpi), mdpi (medium dpi) ve xhpi (extra hight dpi) cihaza özel ekran çözünürlüklerine göre dosya çağırmamızı sağlar. Örneğin uygulamanın çalıştığı cihaz eski modelse ve ekranı düşük çözünürlük destekliyorsa ldpi klasörü içindeki resim dosyaları kullanılacaktır. Ama uygulama yeni nesil geniş ekran bir cihazda çalışıyorsa ona uygun olarak yüksek çözünürlüklü bir klasörde bulunan dosyalar kullanılır. Eğer uygulamanızda düzgün bir tasarım varsa ve geniş yelpazede cihazlar destekliyorsanız tasarımcınızdan uygun formatlarda dosyalar istemenizi öneririz. 

layout klasörü: Burada ekranlara dair tasarım dosyaları bulunur. xml formatındaki bu dosyalar her ekrana ait tasarımları barındırır. Bir ekran Activity ile oluşturulduğunda onCreate metodu içinde ilgili layout çağırılır ve ekranda yer alacak öğeler oluşturulur. Ve içerisindeki main.xml dosyasını bulundurur main.xml dosyası design kısmı ve bu objelere id ve name gibi özeliklerinin verildigi text kısmı bulunuyor.bu dosya bize uygulamamızda kullanıcagım  button , textview radiobutton ,textbox gibi tasarım objelerini sunar.


android











values klasörü: Uygulamada kullanılan sabit değişkenler burada saklanabilir. strings.xml dosyası uygulamada kullanılan ve ekranlarda kullanıcıya gösterilen her türlü metni saklar. Anahtar – veri mantığıyla saklanan bu değerler kod içinde ya da layout dosyalarında çağırılır. Aynı zamanda bu değerler R.java dosyasında işaretlenir. Bunun dışında colors.xml dosyası layout dosyalarında kullanılacak önceden tanımlanmış renkleri içerir. styles.xml dosyası ise ekranlarda kullanılan ve yine layout dosyalarından çağrılan stilleri içerir. values klasörünün bir başka özelliği de cihazın ayarlanmış ana diline göre yerelleşebilmesidir.Ve cihaza çoklu dil seçenegi eklerkende yine bu dosyadan yararlanıcagız.   
 


AndroidManifest.xml dosyası: Bu dosya uygulamanın kalbidir. AndroidManifest.xml dosyası android uygulamalarının hepsinde bulunması zorunlu olan çok önemli bir dosyadır. Bu dosya android uygulamasının root klasöründe bulunur ve uygulamanın çalışabilmesi için mutlaka dosya adının "AndroidManifest.xml" şeklinde olması gerekir.Uygulamayla ilgili her türlü özellik ve uygulamanın işletim sisteminden talep edeceği bütün izinler burada tanımlanır. Aynı zamanda uygulama içinde kullanılan her ekran burada kaydedilip tanımlanmak zorundadır.Ve burda sdknın versiyon bilgileri var cihaz ile ilgili biruyumsuzluk söz konusu oldugunda bu dosyadan bu versiyonu düşürebiliriz.


Proguard-project.txt:Uygulama kodlarına bir dizi performans optimizasyonu yapar.Kodun şifrelenmesini ve lisanslanmasını da sağlar.

.properties uzantılı dosyalar: Uygulamanın derlenip cihaza gönderilmesi sırasında çalışan ‘Ant’ scripti tarafından kullanılan özellik dosyasıdır.Burada uygulamanın hangi SDK versiyonu ile çalışacağı tutulur. Yazdığımız uygulamanın cihaza gönderilip çalışması sırasında arka planda kullanılan dosyadır. Elle değiştirilmesi genelde tavsiye edilmez.