BOOTSTRAP UYGULAMA-1

<!DOCTYPE html>
<html lang="en">
   <head>
    <!-- Required meta tags -->
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
     

    <!-- Bootstrap CSS -->
       <link rel="stylesheet" type="text/css" href="css/fontawesome-all.min.css"/>
        <link rel="stylesheet" type="text/css" href="css/bootstrap.min.css"/>
        <link rel="stylesheet" type="text/css" href="css/main.css"/>
       <link href="https://fonts.googleapis.com/css?family=Indie+Flower" rel="stylesheet">
       <link href="https://fonts.googleapis.com/css?family=Caveat" rel="stylesheet">
       <title>CODINGISLIFE</title>

    </head>
<body>
   
    <section id="cover">
        <div class="container">
            <div class="row">
                <nav class="navbar navbar-toggleable-sm fixed-top navbar-expand-lg navbar-light bg-green">
                    <a class="navbar-brand" href="#"><img src="img/logo.png" alt="CODINGISLIFE"/></a>
              <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
                <span class="navbar-toggler-icon"></span>
              </button>
              <div class="collapse navbar-collapse justify-content-end" id="navbarNav">
                <ul class="navbar-nav">
                  <li class="nav-item">
                    <a class="nav-link" href="#">Home <span class="sr-only">(current)</span></a>
                  </li>
                  <li class="nav-item">
                    <a class="nav-link" href="#">Code</a>
                  </li>
                  <li class="nav-item">
                    <a class="nav-link" href="#">About</a>
                  </li>
                  <li class="nav-item">
                    <a class="nav-link " href="#">Contact</a>
                  </li>
                </ul>
              </div>
            </nav>
        </div>
            <div class="row text-center">
                <div class="col-sm-12">
                    <h1>CODINGISLIFE</h1>
                </div>
                <div class="col-sm-12">
                    <h2>HOW IS IT GOING ?</h2>
                </div>
                  <div class="col-sm-12">
                   <a href="#"><button type="buton" class="btn btn-secondary">GO TO CODE</button></a>
                </div>
            </div>
    </div>
</section>
   
     
      <script src="js/jquery-3.3.1.min.js"></script>
      <script src="js/bootstrap.min.js"></script>
      <script src="js/main.js"></script>
  </body>
</html>

-------------------------Main.css------------------------
html,
body,
#cover{
    height: 100%;
}
#cover{
    background:url('../img/sec.jpg') no-repeat center fixed;
    -webkit-background-size:cover;
}
.fixed-top{
    max-width: 1140px;
    margin:0px auto;
    margin-top: 30px;
}
h1{
    margin-top:15%;
    font-family: 'Indie Flower', cursive;
    font-size 45px;
    color:#ffffff;
    font-style:italic;
}
h2{
    font-family: 'Caveat', cursive;
    color:#ffffff;
}
.btn-secondary{
    background-color: yellow;
    color: red;
    font-size: 30px;
    padding:40x 40px;
}
a.nav-link{
    color:white !important;
   
}



Uygulamamızdaki önemli yerler değinelim.İlk olarak section ile başladık çünkü bu uygulamadaki amacımız bir web sitesinin üst kısmını tasarlamak.Daha sonra bunun için konteynır'ı kullandık nedeni belli bir bölge yaratmaktı.Oluşturduğumuz bölgeleri satırlara böldük.Ve en üst tarafta logo ve menü
kısmını tasarlamak için nav etiketini ve gerekli bootstrap.css class'larından faydalandık.Ve daha sonra menumuzu tasarlamak için <li> etiketlerinden faydalandık.Tabi ki burada da bootstraptan faydalandık.Bootstrapsız bu işi yapmaya çalışsaydık,boyutlarından renklerine,renklerinden liste özelliklerine herşeyi ayarlamamız gerekecekti.Size tavsiyem bir önceki yazımızdaki şekilde bootstrap'ı kurup paylaşacağım örnekleri satır satır deneyerek çalıştırıp öğrenmeniz.Giriş düzeyinde anlattım fakat sonraki örneklerde anlatma olmayacak.Önemli olan bu kodları uygulamak.Bootstrap'ı çok iyi bir şekilde öğrenmek istiyorsanız yapmanız gereken tek şey bol örnek.

İYİ ÇALIŞMALAR...

DURUM GEÇİŞ TABLOLARI

Bu yazımızda dün çözdüğümüz örneğin durum geçiş tablosuna göz atacağız.Örneği anlamadan direkt buraya atlamanızı tavsiye etmem.O örnekte durum geçiş şemasını oluşturmuştuk.Bu örnekte ise durum geçiş tablosunu oluşturacağız.



Tablomuzdan kısaca bahsedecek olursak Mevcut durumumuz A=0 B=0' dan başlayalım.Tıpkı bir önceki örnekte olduğu sonraki durumu buluyor.Sonraki durum önceki durum ile aynı idr o durum konumunu koruyordu.Sonraki durum A=0 B=0 konumunu korur.x=1 olduğunda A=0 B=1 01 durumuna geçer.Bu arada Y' değerimizide unutmuyoruz.Anlayacağınız durum geçiş şemasını çizerseniz.Bu tabloyu çıkartmak o kadar da zor değil.Şimdi tek tek A ve B flip flopu için bakalım.
Burada A' x=0'da hangi noktalarda "1" sorusuna cevap arayıp bunları lojik olarak yazacağız.Bunun amacı tabloyu terimler ile ifade edebilmektir.

Bir sonraki yazımızda durum indirgemelere bakmaya çalışacağız.İYİ ÇALIŞMALAR

ARDIŞIL DEVRE ANALİZİ-2

Bir örnek üzerinden devam edelim.

Örnek

    Aşağıda verilen mantık devresi ardışıl bir fonksiyon gerçekleştirmektedir.Devrenin girişi "x" çıkışı "y",durumlar ise "A-B" çiftidir.Durum geçiş şemasını oluşturunuz...

Sorumuzda bize verilen yerler...


Yazımdan dolayı özür diliyorum :) Amacımızın öğrenmek olduğunu düşününce yazının pek öneminin kaldığı söylenemez zaten :)

Çözüm



Öncelikle inceleyeceğimiz 4 durumumuz var.A=0,0,1,1 B=0,1,0,1 değerlerini tek tek incelememiz gerekiyor.Bununla birlikte A=0 B=0 X=0 ve A=0 B=0 X=1 için de ayrı ayrı hesaplamalıyız.Yukarıda yaptığımız tek şey A,B ve X değerlerini yerine koyarak Rb,Sb ve Ra,Sa yı bulmak.Burada bulduğumuz değerlere göre A ve B nin yeni değerlerini buluyoruz.Bu yeni değerlerden durum değişikli olup olmayacağını bulup  hangi X ve Y değerlerinde durum değişikliğinde olduğunuda durum dairemizin üzerine yazıyoruz.Örneğin A=0 B=1 Sa=1 Ra=0 ve Sb=0 Rb=1 değerlerini elde ettik.A'nın yeni değeri 1 olacaktır.Çünkü R-S flip flopta set'leme söz konusu.Diğer tarafta B=0 olacaktır.Çünkü bir resetleme söz konusudur.Yeni değerlerimi A=1 B=0 yani 10 durumumuza gideceğiz.Bu duruma hangi X ve Y değerleri ile gittiğimiz okumuzun üzerine yerleştiriyoruz..Birkaç soru çözdükten sonra işiniz gerçekten basit..Bir sonraki yazımızda bu sorunun Durum geçiş tablosunu tasarlayıp bazı işlemler yapacağız.

İYİ ÇALIŞMALAR...


ARDIŞIL DEVRE ANALİZİ-1

1-DURUM GEÇİŞ ŞEMASI YÖNTEMİ
2-DURUM GEÇİŞ TABLOSU YÖNTEMİ
3-DURUM DENKLEMLERİ

Sırası ile bu işlemeleri gözden geçirelim...

1-DURUM GEÇİŞ ŞEMASI

     Devrenin her bir durumu devre ile durumlar arasındadır.Geçişler ise daireleri birbirine bağlayan yönlü oklar ile gösterilir.Her dairenin içinde ki 2'li sayi dairenin temsil ettiği durumu tanımlar.Geçişleri gösteren oklar üzerine ise söz konusu durum geçişinin hangi girdilerle gerçekleştiği ve çıktının ne olduğu yazılır.Bu gösterim için '/' işareti kullanılır.Kesme işaretinin soluna girdi sağına çıktı yazılır..

Şimdi bir tam toplayıcı devresi üzerinden bellirttiğimiz adımlardan faydalanarak devrenin geçiş şemasını çizelim..







Di eldemizin 0 olduğu,Dj eldemizin 1 olduğu durumdur.İlk satır ile başlayacak olursak bakın A=0,B=0,TOPLAM(SUM)=0 bu durumda elde değerimiz 0 olur.Bu durum Di=0'dan başladı öyle değil mi ? Peki şimdi ne oldu ?Değerimiz 0'dı 0 kaldı.Değerimiz değişmediği için ok'u kendi durumumuza(state) geri döndürüyoruz.Eldemizin 1 olduğu durumlarda da Dj durumumuza geçiyoruz.Yazım kuralımıza bakacak olursak örneğin 1,1/0 A=1 B=1 Toplam=0 Elde=1 olduğundan durum değiştirdik..Otomat dersi alan aslında bunun bir nevi mealy makinesi olduğunu görmüştür.Yukarıda da belirttiğimiz gibi ilk giriş/çıkış şeklinde yazılıyor.

Yazılarımda normal konuşma dilini kullandığımdan noktalama işaretlerini gözden kaçırıyor olabilirim.Bu gibi durumları iletişimden(footer bölümünden) bana bildirebilirseniz mutlu olurum.

İYİ ÇALIŞMALAR...

BOOTSTRAP NEDİR ? NASIL KULLANILIR ?


Twitter Bootstrap açık kaynak kodlu, web sayfaları veya uygulamaları geliştirmek için kullanılabilecek araçlar bütünü ve önyüz çatısı. Bootstrap, web sayfaları veya uygulamalarında kullanılabilecek, HTML ve CSS tabanlı tasarım şablonlarını içerir.Bootstrap ile çok basit şekilde profesyonel web sitesi şablonları hazırlayabilirsiniz..
Şimdi bootstrap framework'unu nasıl kullanırız ona değinelim öncelikle buradan bootstrap'ı indiriyoruz.


Daha sonra jquery'i indirip bootstrap'ı indirdiğimiz klasöre atıyoruz.Jquery'de bir javascript kütüphanesidir.Tasarımlarımızı yaparken bize yardımcı olacak.Onuda buradan indirebilirsiniz.



Şimdide bir editör gerekiyor.Ben size Brackets'i öneriyorum.Ve onuda buradan indirebilirsiniz.
Şimdide nasıl kullanacağımıza bir göz atalım.



Klasörümüz bu şekilde olacak bootstrap klasörünün içinde bir index.html ve css dosyasının içinde main.css adında iki dosyayıda bizim oluşturmamız gerekiyor.Projemizi index.html üzerine ve bootstrap'ın etkisiz olduğu yerde kendi yazdığımız css kodlarını barındıracak bir main.css dosyası..

Daha sonra bu dosyayı brackets'tan açıp kodlarımızı yazmaya başlayalım..



NOT ! ! ! BOOTSTRAP'I öğrenmek için temel bir html ve css bilgisi gerekmektedir.

Yukarıda dosyalarımızı açıp burada index.html sayfasına ilgili css ve script class'larını ekledik.Bildiğiniz üzere css ve script dosyalarımızı index.html sayfasına import etmez isek bu dosyaları kullanamayacağız..

Şimdilik kısa bir giriş yaptık.Merak etmeyin bootstrap'tı en ince ayrıntısına kadar öğreneceksiniz...

İYİ ÇALIŞMALAR...

PHP İLE HAVA DURUMU BOTU



<?php
$sehir=@file_get_contents("http://www.nkfu.com/turkiye-81-il-listesi/");
preg_match_all('@<td width="143">(.*?)</td>@si',$sehir,$sehirler);
function getir($key){
if(isset($_POST[$key]))
return $_POST[$key];
}
if(count($_POST)>0){
$sehirim=getir("sehirr");

$degisecek=["ğ","ı","ş","I","ö","Ç","ç","ü","Ş"];
$yeni=["g","i","s","i","o","C","c","u","S"];
$sehirim=str_replace($degisecek,$yeni,$sehirim);
$veri=@file_get_contents("http://www.mynet.com/havadurumu/asya/turkiye/".$sehirim."");
preg_match_all('@<span class="hvDeg1">(.*?)</span>@si',$veri,$enYuksek);
preg_match_all('@<span class="hvDeg2">(.*?)</span>@si',$veri,$enDusuk);
preg_match_all('@<span class="hvMood">(.*?)</span>@si',$veri,$hvMood);
preg_match_all('@<span class="hvDay">(.*?)</span>@si',$veri,$hvGun); }
?>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<form method="POST" >
<select name="sehirr" >
<?php for($i=0;$i<=81;$i++) echo "<option value='".$sehirler[0][$i] = strip_tags($sehirler[0][$i])."'>".$sehirler[0][$i]."</option>";?>

</select>
<input type="submit" value="Göster"></br></br>
</form>
<table border="4" style="margin-left:200px">
<tr><td colspan="6" style="text-align:center"><?php $s=strtoupper($sehirim); echo $s;?> 5 GÜNLÜK HAVA DURUMU</td>
<tr>
<td>GÜNLER</td>
<td><?php echo @$hvGun[0][0]?></td>
<td><?php echo @$hvGun[0][1]?></td>
<td><?php echo @$hvGun[0][2]?></td>
<td><?php echo @$hvGun[0][3]?></td>
<td><?php echo @$hvGun[0][4]?></td>
</tr>
<tr>
<td>DURUM</td>
<td><?php
$durum=strip_tags(str_replace($degisecek,$yeni,$hvMood[0][0]));
if($durum=="Yagisli") echo "<img src='rain.png'/>";
else if($durum=="Parcali Bulutlu") echo "<img src='parcali.png'/>";
else if ($durum=="Kar Yagisli") echo "<img src='kar.png'/>";
else if ($durum=="Hafif Kar Yagisli") echo "<img src='kar.png'/>";
else if ($durum=="Cok Bulutlu") echo "<img src='bulutlu.png'/>";
else if ($durum=="Gunesli") echo "<img src='gunesli.png'/>";

?></br>
<?php echo @$hvMood[0][0] ?>

</td>

<td><?php
$durum=strip_tags(str_replace($degisecek,$yeni,$hvMood[0][1]));
if($durum=="Yagisli") echo "<img src='rain.png'/>";
else if($durum=="Parcali Bulutlu") echo "<img src='parcali.png'/>";
else if ($durum=="Kar Yagisli") echo "<img src='kar.png'/>";
else if ($durum=="Hafif Kar Yagisli") echo "<img src='kar.png'/>";
else if ($durum=="Cok Bulutlu") echo "<img src='bulutlu.png'/>";
else if ($durum=="Gunesli") echo "<img src='gunesli.png'/>";

?></br><?php echo @$hvMood[0][1]?></td>
<td><?php
$durum=strip_tags(str_replace($degisecek,$yeni,$hvMood[0][2]));
if($durum=="Yagisli") echo "<img src='rain.png'/>";
else if($durum=="Parcali Bulutlu") echo "<img src='parcali.png'/>";
else if ($durum=="Kar Yagisli") echo "<img src='kar.png'/>";
else if ($durum=="Hafif Kar Yagisli") echo "<img src='kar.png'/>";
else if ($durum=="Cok Bulutlu") echo "<img src='bulutlu.png'/>";
else if ($durum=="Gunesli") echo "<img src='gunesli.png'/>";

?></br><?php echo @$hvMood[0][2]?></td>
<td><?php
$durum=strip_tags(str_replace($degisecek,$yeni,$hvMood[0][3]));
if($durum=="Yagisli") echo "<img src='rain.png'/>";
else if($durum=="Parcali Bulutlu") echo "<img src='parcali.png'/>";
else if ($durum=="Kar Yagisli") echo "<img src='kar.png'/>";
else if ($durum=="Hafif Kar Yagisli") echo "<img src='kar.png'/>";
else if ($durum=="Cok Bulutlu") echo "<img src='bulutlu.png'/>";
else if ($durum=="Gunesli") echo "<img src='gunesli.png'/>";

?></br><?php echo @$hvMood[0][3]?></td>
<td><?php
$durum=strip_tags(str_replace($degisecek,$yeni,$hvMood[0][4]));
if($durum=="Yagisli") echo "<img src='rain.png'/>";
else if($durum=="Parcali Bulutlu") echo "<img src='parcali.png'/>";
else if ($durum=="Kar Yagisli") echo "<img src='kar.png'/>";
else if ($durum=="Hafif Kar Yagisli") echo "<img src='kar.png'/>";
else if ($durum=="Cok Bulutlu") echo "<img src='bulutlu.png'/>";
else if ($durum=="Gunesli") echo "<img src='gunesli.png'/>";

?></br><?php echo @$hvMood[0][4]?></td>

</tr>
<tr>
<td>EN YÜKSEK SICAKLIK</td>
<td><?php echo @$enYuksek[0][0]?></td>
<td><?php echo @$enYuksek[0][1]?></td>
<td><?php echo @$enYuksek[0][2]?></td>
<td><?php echo @$enYuksek[0][3]?></td>
<td><?php echo @$enYuksek[0][4]?></td>
</tr>
<tr>
<td>EN DÜŞÜK SICAKLIK
<td><?php echo @$enDusuk[0][0]?></td>
<td><?php echo @$enDusuk[0][1]?></td>
<td><?php echo @$enDusuk[0][2]?></td>
<td><?php echo @$enDusuk[0][3]?></td>
<td><?php echo @$enDusuk[0][4]?></td>
</tr>
</table>
</body>
</html>

BELLEK ÇEŞİTLERİ (SALT-OKU BELLEKLER)

1)SALT OKU BELLEKLER

   1.1)Salt Oku Bellek (ROM)

        Bu bellek tür bellek türene bilgi yazılması, sadece üretim sırasında yapılabilir.Yarı iletken malzemeden bellek yapılırken kullanılan maskeler,belleğin içermesi gereken bilgileri oluşturacak şekilde hazırlanır.

  1.2)Programlanabilir Salt Oku Bellek (PROM)

       Üretildikleri an bütün gözeleri 0 veya 1 ile yüklü belleklerdir.Her bellek gözesi içinde bir sigorta bulunmaktadır.Bu sigortalar özel bir yöntem ve aygıt aracılığı ile arttırılabilir.Bir gözenin sigortasının atmış olması o gözenin konumunun değişmesi demektir.

 1.3)Silinebilir Programlanabilir Salt Oku Bellek

        Defalarca okunup silinebilen bu bellekler 3' e ayrılır.Şimdi bunları gözden geçirelim..


              1.3.1)EPROM

                        EPROM'lar üretildiklerinde tüm bellek gözeleri 1 konumundadır.1 konumunda olan gözelerden istenenler,özel yöntemler ve aygıtlarla 0 konumuna geçebilir.Mor ötesi ışığın yarı iletken üzerine belli bir süre tutulması sonunda,tüm gözeler 1 konumuna gelir.Böylece EPROM silinmiş olur.Bu silinme tek bir göze yapılamaz.Tüm bellek silinmiş olur.Tekrar programlanma yeteneği olduğundan ROM'dan pahalıdır.
             
            1.3.2)EEPROM
                          
                     Silinebilir ve programlanabilir belleklerin en gelişmiş olanı,elektriksel olarak silinebilen salt oku belleklerdir.Bu belleklerde,bellek gözlerine istenen bir değer yazılabilir ve yazılan bu bilgi yeni bir yazmaya kadar kalır.Bellek gözesine yazılan bilgi 0 ve 1'lerden oluşabilir.EEPROM'un silinmesi tüm gözelerin 0'a bağlı olmasıdır.

            1.3.3)FLASH

                     EEPROM'un özel bir biçimidir.Flash belleğe yazmadan önce,veri yazılacak bellek bölgesinin silinmesi gerekir.Daha sonra, yazılacak veriler küme halinde yazılır...




       

BELLEK

       Bilgisayarın çalışmasına yön verecek programı ve programın üzerinde çalışacağı verileri saklamak için bellek kullanılmaktardır.
 Eskiden kullanılan bir sürü bellek çeşidi yerini şimdiki zamanlarda kullanılan yarıiletken belleklere bıraktı.Yarı iletken bellekler eskiden kullanılan çekirdek belleklere göre çok daha ucuz ve kullanışlıdır.Yarı iletken bellekler kullanılırken enerjiye ihtiyaç duyarlar ve enerjileri kesilirse çalışmazlar.Bu nedenle yani bilgileri tutmak amacıyla iki tür bellek geliştirilmiştir.

1-Salt Oku Bellekler
2-Oku/Yaz Bellekler

1-Salt Oku Bellekler
    
     Bilgisayarda sürekli kalması istenen bilgilerin saklanması için kullanılan bellek türleridir.Özel amaçlı ve sabit programla çalışan bilgisayarların programları ile bilgisayar açıldığında kullanıcıya hizmet verecek yol verme programları bu tür belleklere yazılmalıdır.Şimdi diyeceksiniz ki madem bu bellekler salt oku bellek biz bunlara nasıl program yazabiliyoruz.Bunlar üretilirken bu programlar özel araçlarla yazılıyor.Anlayacağınız bilgisayarınızın açılması görüntünün ekrana gelmesi klavye tuşlarının algılanması bunlar bedavadan olan şeyler değil.İşte bu gibi programları bilgisayar üreticisi bu bellekleri üretirken ayarlıyor.
2-Oku/Yaz Bellekler

   Bilgisayar içindeki kullanıcı programının yazılacağı veya verilerin yazılacağı bellek türü oku/yaz bellektir.İşte bu bellekler biz kullanıcılara hitap ediyor..

Bir sonraki post'umuzda bu belleklerin çeşitlerini inceleyeceğiz.

İYİ ÇALIŞMALAR...




BUYRUKLAR

Bilgisayarın nasıl çalıştığını anlatmak üzere verilen örnekten de anlaşıldığı gibi,belli işlemleri bilgisayara yaptırabilmek için,işlemler adımlara ayrıştırılmaktadır.Bilgisayara neyi nasıl yapacağını yani nasıl çalışacağını anlatan adımlara buyruk diyoruz.Buyrukların tarihsel gelişimi üzerinde fazla durmak istemiyorum.Kısaca deyinelim...

Buyruklar başlangıçta 5 bölümden oluşyordu.Bu bölümler Komut-1.İşlenen adresi-2.işlenen adresi-Sonucun adresi ve bir sonraki buyruğun adresi.Bir önceki örneğimizi hatırlayacak olursak X ile Y yi toplamıştık.Bakın yukarıdaki 5 bölümde adımlar şu şekilde ilerliyor.X ve Y toplanıyor sonuc başka bir yere yazılıyor.Daha sonra kalınan buyruk adresinde yola devam ediliyor.Şimdi biz bu işlemleri sadeleştirebildiğimiz kadar sadeleştirip en yalın buyruk tanımını bulalım...

1-İlk olarak belleğimizdeki buyrukların sırayla çalıştığını var sayalım.Böylece bir sonraki buyruğun adresini tutmak zorunda kalmayacağız.

2-X ve Y 'yi toplayıp Z'ye yazdık.Öyle değil mi? peki ya X+Y işlemini x veya y register'ına yazamaz mıyız ?Böylece Sonucun adresine de gerek kalmadı...

3-Bu adımda devreye karşımıza  ACC (akümülatör) çıkıyor.Bu X ve Y sayılarının bir tanesini orada depolayabiliriz o halde.Elimizde komut satırımız ACC ve X kaldı.Buyruğumuzun son hali budur.

KOMUT-KÜTÜK ADI-İŞLENEN ADRESİ

Günümüzde de sıfır,bir ve iki adresli buyruklar birlikte kullanılmaktadır...


JSP-JAVABEANS

Şimdi yapacağımız örnekte bir java sınıfı oluşturacağız.Sonrada JSP sayfamızda bulundan formda bu verileri çekip java class yardımı ile başka bir JSP sayfasında göstereceğiz.Yani OOP nimetlerinden faydalanacağız...Örneğimizde basit bir HTML form'u,Set ve Get metodları bulunduran bir java class'ı ve çıktıyı JavaBeans ile görüntüleyecek bir JSP sayfası..Şimdi Java class'ımızdan başlayalım...

package paket;

public class beansClass{
String ad;
String soyad;
String telefon;
int yas;
String cinsiyet;
String ulke;
String tecrube;
String meslek;
String adres;
        public void setAdres(String deger){
            adres=deger;
        }
public void setAdi(String deger){
ad=deger;
}
public void setSoyadi(String deger){
soyad=deger;
}
public void setTelefon(String deger){
telefon=deger;

}
public void setCinsiyet(String deger){
cinsiyet=deger;

}
public void setUlke(String deger){
ulke=deger;

}
public void setTecrube(String deger){
tecrube=deger;
}
public void setYas(int deger){
yas=deger;

}
public String getAdi(){ return ad;}
public String getSoyadi(){ return soyad;}
public String getTelefon(){ return telefon;}
public String getCinsiyet(){ return cinsiyet;}
public String getUlke() {return  ulke;}
public int getYas(){ return yas;}
public String getTecrube(){ return tecrube;}
        public String getAdres() {return adres;}
}

Bahsettiğimiz üzere classmızda set ve get fonksiyonları bulunuyor.Bu fonksiyonlar ile nesnelerimize istediğimiz işlemlerden sonra bir başka JSP sayfasına aktarabilir.Bu gerçekten harika bir özellik öyle değil mi?Neyse devam edelim.Şimdi HTML formumuzu oluşturalım..


<%--
    Document   : beansJsp
    Created on : 21.Şub.2018, 13:54:32
    Author     : Gökhan
--%>

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>JSP Page</title>
</head>
<body>
<form method="post" action="formuAlan.jsp">
<table border="2">
<tr>
<td>Adı : </td>
<td><input type="text" name="adi"/></td>
</tr>
<tr>
<td>Soyadı : </td>
<td><input type="text" name="soyadi"/></td>
</tr>
<tr>
<td>Adresi : </td>
<td><textarea name="adres" cols="20" rows="2" id="adres"></textarea></td>
</tr>
<tr>
<td>Telefon : </td>
<td><input type="text" name="telefon"/></td>
</tr>
<tr>
<td>Cinsiyet : </td>
<td>
<input type="radio" name="cinsiyet" value="Erkek" checked/>ERKEK
<input type="radio" name="cinsiyet" value="Bayan"/>BAYAN
</td>
</tr>
<tr>
<td>Ülke : </td>
<td>
<select name="ulke">
<option value="" selected>Lütfen ülkenizi seçiniz...</option>
<option value="Turkiye">TÜRKİYE</option>
<option value="ABD">ABD</option>
<option value="Peru">PERU</option>
<option value="Şili">ŞİLİ</option>
</td>
</select>
</tr>
<tr>
<td>Tecrübe Yılı</td>
<td>
<select name="tecrube"/>
<option value="">Lütfen tecrübe yılınızı seçiniz...</option>
<option value="0-2 YIL">0-2 YIL</option>
<option value="2-5 YIL">2-5 YIL</option>
<option value="5-7 YIL">5-7 YIL</option>
<option value="7+ YIL">7+ YIL</option>
</select>
</td>
</tr>
<tr>
<td>
<input type ="submit" name="gonder" value="DEĞERLERİ GÖNDER"/>
<input type ="reset" name="sil" value="DEĞERLERİ TEMİZLE"/>

</td>
</tr>
</table>

</form>

</body>
</html>



Daha sonra bizi çıktıya yönlendirecek olan bir JSP sayfasını kodlayalım..İşte JavaBeans'in nimetlerinden burada yararlanıyoruz.

<%--
    Document   : formuAlan
    Created on : 21.Şub.2018, 13:55:52
    Author     : Gökhan
--%>

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<jsp:useBean id="paket" type="paket.beansClass" class="paket.beansClass" scope="session" />
<jsp:setProperty name="paket" property="*"/>

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>JSP Page</title>
</head>
<body>
    Formu göstermek için tıklayın-->
    <a href="beansFormu.jsp">Beans Formunu Göster </a>     
</body>
</html>









Kodumuza dikkatli bakacak olursak 
useBean ve setProperty bunları kesinlikle java sayfamıza eklememiz gerekiyor.Bunlar bize bean'imizi kullanmamızı sağlıyor..useBean java classımızın yerini setPropert fonksiyonları kullanmamızı sağlıyor..

Ve şimdide son aşama çıktıları görüntüleme aşaması

<%-- 
    Document   : beansFormu
    Created on : 21.Şub.2018, 14:01:18
    Author     : Gökhan
--%>

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<jsp:useBean id="paket" type="paket.beansClass" class="paket.beansClass" scope="session"/>

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>JSP Page</title>
</head>
<body>
    <table border="2">
<tr>
<td>Adı : </td>
                                <td><%= paket.getAdi() %> </td>
</tr>
<tr>
<td>Soyadı : </td>
<td><%= paket.getSoyadi() %> </td>
</tr>
<tr>
<td>Adresi : </td>
<td><%= paket.getAdres() %> </textarea></td>
</tr>
<tr>
<td>Telefon : </td>
<td><%= paket.getTelefon() %> </td>
</tr>
<tr>
<td>Cinsiyet : </td>
<td>
<%= paket.getCinsiyet() %> 
</td>
</tr>
<tr>
<td>Ülke : </td>
<td>
<%= paket.getUlke() %> 
</td>
</select>
</tr>
<tr>
<td>Tecrübe Yılı</td>
<td>
<%= paket.getTecrube() %>
</td>
</tr>
</table>
</body>
</html>


Benim en sevdiğim aşama.Burada en güzel kod parçası istisnasız <%=paket.getAd() %>
Yani nesnelerimizi çağırdığımız kod parçası bunu seviyorum.Sizlerde seveceksiniz çünkü ileride gerçekten hayatınızı bile kurtarabilecek bir fonksiyon.


İYİ ÇALIŞMALAR


E-R(ENTITY RELATIONSHIP MODEL) MODELİ

Veritabanı tasarımında kullanılan ilişkisel veritabanı yönetim sistemlerinin (RDBMS) temelini oluşturur.

E-R Modelinin temel yapıları

1-Varlık (Entity) = Veritabanında oluşturulacak nesneleri temsil eden yapılardır. Veritabanı üzerinde bulunan tablolar ER diyagramlar için Varlık olarak kabul edilir.


2-Nitelik (Attiribute) = ER varlıklarının sahip olduğu her bir alana verilen yapılardır. Veritabanı alanında örnek olarak tablo sütünları verilebilir.


3-İlişki (Relationship) = Varlıklar arasında kurulan fiziksel ve mantıksal bağlantıları temsil eden yapılara denir.

E-R DİYAGRAMLARI

Bu diyagramlara bir örnek üzerinde göz atalım.E-R diyagramı ile tasarlanmış bir veritabanını yorumlayalım...



Yukarıda Hasta Kartı ve Sağlık verileri bizim tablolarımız yani varlıklarımız..Yanda görülen hastaKartiID primary key niteliği diğerleri nitelik.Ortadaki ilişkimiz 1'e 1 ilişki yani okuyacak olursak.Bir hasta kartı,bir sağlık verisi barındırır.Diyelim ki sizin hasta kartınızın id'si 15.Bu id Primary key olduğundan diğer tüm niteliklerinize erişim sağlanacaktır.15 Nolu hasta Gökhan hasta Id'si 123123 diye...Şimdi biraz daha karışık bir örneğe bakalım...


Bakın bir önceki örneğimizin neredeyse aynısı burada kitaplar ile ilgili bilgiler verilmiş.N-N (Çoğa çok) ilişkilerden birkaç tanesini okuyup bir diğer örneğe geçelim.Örneğin N kitabın 1 yazarı olabilir.Yani bir yazarın birkaç kitabı olabilir.Uyeler birden fazla kitabı sepete ekleyebilir.1 yayınevi birden fazla kitap yayınlayabilir gibi gördüğünüz gibi yapı çok basit.Sizlerde böyle örnekleri çizip anlamaya çalışırsanız bu modeli veritabanlarınızın giriş aşamalarında kullanabilirsiniz.



   E-R model örnekleri ile ilgili görsel sonucu

İşte gerçek bir örnek.Belki de bunun çok daha büyüklerine iş hayatınızda rastlayacak.Veya sizde böyle bir modeli tasarlamanız istenecektir.Göz korkutucu olduğunun farkındayım fakat gerçekten göründüğü kadar zor değil.Şu ISA bağlantısına bir göz atalım.ISA bağlantısı varlıklara Primary Key atamak için kullanılır Primary Key'i olmayan tablolar PK'yi olan tabloya bu şekilde bağlanır.İlişkiler de köşeli oklar ile gösterilmiş.Yani N-N değil de I<= şeklinde.Size tavsiyem bir sürü örnek çözmeniz.Anlattığı konular hakkında bir sürü örnek çözün.Kendi kafanızdan örnekler uydurun.Böylece bunları 10 yıl sonra bile görseniz kolaylıkla hatırlarsınız.


İYİ ÇALIŞMALAR...

FLİP FLOPLARDA DURUM GEÇİŞ TABLOLARI

Flip-Flop doğruluk tabloları girişlerin durumuna bağlı olarak çıkışların ne olması gerektiğini anlatan tablolardır. Kısaca bir doğruluk tablosu Flip-Flop'un çalışma şeklini ve özelliklerini tanımlar.Şimdi görseller üzerinden tek tek inceleyelim.

1-R-S TİPİ FF


R-S tipi FF'a bakarken doğruluk tablosuna bakmıştır.Şimdi de durum geçiş tablosuna bir göz atalım.Burada yapmamız gereken tek şey tersten düşünmek örnek verecek olursak;
 Qn=0 Qn+1=1 yani durumumuz 0 iken 1 durumuna geçmiş.Bunun anlamı FF'umuzun set'lenmiş olmasıdır.Yani S=1 R=0.Olur.Mantık hepsi için aynıdır..

2-D TİPİ FF



 Burada da aynı şekilde bakın Qn=0'dan Qn=1'e geldiği durumda D=1 olmuş ki aynı çıktıyı versin.Aynı şekilde 1'den 0'a geçmiş D=0 olmuş ki 0'a geçebilmiş.Qn=1 Qn+=1'de "1"  ve Qn=0 Qn+1=0'da "0" oluyor.Data tipi FF ne girerse o çıkar mantığı bu yüzden önceki değerin hiçbir anlamı yoktur.Bizi ilgilendiren Qn+1 yani bir sonraki değerdir.

3-J-K TİPİ FF




J-K tipi FF'u inceleyelim.Gözünüz korkmasın çünkü mantığımız aynı.Qn=0 Qn+1=0 burada 0 dan 0 a geçilmiş.Ne olmuş olabilir ? Son değerimiz 0 olduğuna göre resetleme olmuş olabilir değil mi ?Veya J ve K ayrı ayrı 0 olmuş olabilir.O halde J her türlü 0,K=0 veya 1 dir.Bu K yüzden belirsizdir.Qn=1 Qn+1=0 durumuna bakalım.Bakın son durumumuz 0 o halde bir resetleme yani K=1 değeri için aktif, J=0 (resetlemede) ve J=1 olabilir çünkü 1'den 0'a bir geçiş söz konusu olduğudan tersleme söz konusudur.Tersleme durumu sadece J=1 K=1 olduğundan J'nin 2 değeri vardır.Lütfen yazdıklarımı tek tek takip ederek anlamaya çalışın.Anlamağınız yer olursa bana iletişimden ulaşabilirsiniz...

4-T TİPİ FF



Bakın aynı Qn=0 Qn+1=1 burada da 0'dan 1'e geçiş olduğu için tümleme yapılmış yani T=1 aynı kaldığında ise T=0'dır

İYİ ÇALIŞMALAR :)







SENKRON VE ASENKRON GİRİŞLER

Filp-Flop’larda tetikleme sinyali ile senkron (eş zamanlı) çalışan girişler olduğu gibi tetikleme sinyalinden bağımsız asenkron (eş zamanlı olmayan) girişlere sahiptirler. Bu girişler Flip-Flop çıkışı ‘1’ yapan kurma (Set) ve çıkış ‘0’ yapan silme (Reset) adını alırlar.Bu girişleri clok sinyalinden güçlüdür.Eğer bu girişlerden bir tanesi aktif ise (ikisi birden aktif olamıyor) set veya resetleme yapılır.Burada clok sinyaline bakılmaz.Şayet bu girişler(S-R) pasif olursa clok sinyali ve senkron girişlere bakılır(J-K).



Tablomuzdan biraz bahsedecek olursak,şekilde gördüğümüz lojik devre Set ve Reset asenkron girişli yükselen kenar tetiklemeli J-K Flip-Flop..Dikkatlice tek tek bakalım.S=0 R=1 olduğunda bildiğiniz üzere Resetleme(silme) işlemi yapılacaktır.Yukarıda da belirttiğimiz üzere set veya reset aktif ise senkron ve clok sinyalinin önemi yoktur.İlk iki satırımız bu durumdadır.3 ve daha sonraki satırlardan J-K tipi FF'ta bahsetmiştik.Yine bakalım.3.Satırda hem Asenkron girişlerimiz aktif değil hem de clok sinyalimiz yok.Sonuç olarak J-K çalışmayacağından (tetiklemeli J-K tipinde bahsettik) bir önceki halini korur.Diğer satırlarda set,reset ve tümleme işlemleri yapılır.Clok aktifdir.Asenkron girişler pasif.Asenkron girişler aktif olduğunda clok'a ve senkron (J-K) girişlere bakılmaz..

İYİ ÇALIŞMALAR :)

ANA-UYDU(MASTER-SALVE) FLİP-FLOP

Ana-Uydu flip flopumuz iki R-S ve bir not kapısı ile oluşturulur.Tetikleme girişi düşen kenar (↓) olduğu zaman DEĞİL kapısı çıkışı uydu flip flop tetikleme girişini, yükselen kenar (↑) yapacağından uydu Flip-Flop yetkilenir ve R-S girişlerinde ana flip-flop’un çıkışları olan Y ve Y’ görülecektir.



Daha öncede R-S tipi FF'tan bahsettik.Eğer düşen kenar tetiklemeli olursa bir önceki flip-flopumuzun bir önceki değeri korunacaktır.Anlayacağınız bu flip-flopumuz dalga üretiyor.Düzgün dalgalar.Örneğin bir butona basıp elimizi kaldırırsak,orada buton bir sinyal üretir.Bu sinyalleri algılamak için bu tip flip-flop kullanılabilir.O butona basılı kalırsak bu sinyali sürekli üretir.Bu sinyal 1 veya 0 olabilir.Programımız o dalgalanmayı görmeden harekete geçmeyeceği için eliniz sürekli basılı kalsa da o sinyali tek bir basım olarak algılayacaktır..

JSP VE JAVABEANS GİRİŞ

JavaBeans özel tipli sınıflara ve metotlara sahiptir.JSP sayfalarının yazılımda uzun ve zahmetli işleri kolaylaştıran kodlar topluluğu diyebiliriz.JavaBean'ler tekrar tekrar kullanılabilirler.

JavaBeanler'ler JSP sayfamızdan mail göndermede ve almada,sayfalar arasında bilgi denetimleri ve onların kontrollerine oradan bilgilerin daha sağlıklı bir şekilde organize edilmesini sağlar.En temel metodları get ve set metotlarıdır.

Özellikleri

1-Javabeans için kullanılacak class public ve bu class'ın parametresiz bir contructor(yapılandırıcı)'ı olmalı..

2-Javabeans properties tipi private olmalı..

3-Javabeans'in properties'ine dışarıdan sadece getXxx() ve setXxx() metotlarıyla erişim sağlanabilecek..

4-Javabeans'imiz serializable (dosyaya veya başka bir stream yazılıp okunabilmesi)

JSP SAYFALARINDA 3 TEMEL JAVABEANS TAG'I BULUNUR

1-<jsp:useBean>
2-<jsp:setProperty>
3-<jsp:getProperty>

<jsp:useBean id="bean_adi" class="bean_sinifi" scope="page|request|session|application"/>
<jsp:setProperty name="bean_adi" property="ozellik" value="deger" />
<jsp:getProperty name="bean_adi" property="ozellik" />

page:bean örnek nesnesiyle JSP sayfalarımız yüklenirken bilgi giriş çıkışlarının denetlenmesi.

request:bean örnek nesnesiyle istemncinin isteklerini cevaplar

session:bean örnej nesnesiyle oturum nesnesi yöneltir.

Bir sonraki yazımızda JavaBeans'in nasıl kullanılacağına değineceğiz...

JSP İLE FORM VERİLERİNİ ALMA

<%--
    Document   : index
    Created on : 19.Şub.2018, 20:48:10
    Author     : Gökhan
--%>

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>JSP Page</title>
</head>
<body>
    <form method="post" action="goster.jsp">
        <table border="2" id="ornek">
            <tr >
                <td> Isim : </td> <td><input type="text" name="ad"></td>
            </tr>
            <tr>
                <td> Soyisim : </td> <td><input type="text" name="soy"</td>
            </tr>
            <tr>
                <td> Sifre : </td> <td><input type="password" name="sifre"></td>
            </tr>
            <tr>
                <td><input type="submit" name="gonder" value="DeğerleriGönder"></td>
                <td><input type="reset" value="Formu temizle" name="sil"></td>
            </tr>
            </table>
    </form>
</body>
</html>

<%-- 
    Document   : goster
    Created on : 19.Şub.2018, 21:00:26
    Author     : Gökhan
--%>

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>JSP Page</title>
</head>
<body>
    <table border="2">
        <tr><td><%= request.getParameter("ad") %></td></tr>
        <tr><td><%= request.getParameter("soy") %></td></tr>
        <tr><td><%= request.getParameter("sifre") %></td></tr>
    </table>
</body>
</html>

IMPLICIT OBJECT-SESSION

JSP sayfalarının hepsinde herbir istemci için global nesneler gezdirmek için session nesnesinden yararlanıyoruz.Web sitemizde gezen kullanıcının birden fazla sayfada güvenle,emniyetle gezinebilmesi için çok kullanışlıdır.Ziyaretçilerin her birine ayrı ayrı session id'si verilmektedir.Şimdi kodlarımıza bakalım.

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
</head>
<body>
    <form method="post" action="sessionOlustur.jsp">
        KULLANICI ADI :
        <input type="text" name="kullaniciadi" size=25>
        <p><input type="submit" value="Kullanici adini goruntule">
    </form>
</body>
</html>



<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
<body>
     <% String kullaniciAdi=request.getParameter("kullaniciadi");
        session.setAttribute("oturumdakiKullanici",kullaniciAdi);
     %>
     Session hazır !
     <a href="sessionGoster.jsp">Diğer JSP sayfasında görmek için tıklayın...</a>
</body>
</html>




<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>JSP Page</title>
</head>
<body>
    Hosgeldiniz Sayın : <% session.getAttribute("oturumdakiKullanici"); %>
</body>
</html>






IMPLICIT OBJECT-RESPONSE

          Response nesnesi kullanıcı tarafına bilgi göndermek için bu bilgilerin hazır bulundurulmasında kullanılır.Cookies(Çerezler) gönderilmesinde respornse kullanılır.

Örneğimize göz atalım.

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>JSP Page</title>
</head>
<body>
      <% Cookie cerezNesnesi=new Cookie("Test","Gkhan");
         cerezNesnesi.setMaxAge(365*24*60*60);
         //ÇEREZİMİZİN ÖMRÜ
         response.addCookie(cerezNesnesi);
         response.sendRedirect("cerez.jsp");
         //cerezimizi cerez.jsp ye gönderdik
      %>
</body>
</html>
--------------------------------------------Cookie'mizi cerez.jsp yollayıp oradan görüntüledik
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>JSP Page</title>
</head>
<body>
    <%
        Cookie [] cerezim=request.getCookies();
        //gelen cerez alındı
        for(int i=0;i<cerezim.length;i++){
            if(cerezim[i].getName().equalsIgnoreCase("Test"))
            {
                out.println("Gelen cookie degerimiz:"+cerezim[i].getValue());
            }
        }
    %>  
</body>
</html>




IMPLICIT OBJECT-REQUEST

Bu yazımızda implicit nesnelerimize biraz daha yakından bakacağız..

REQUEST

     Request nesnesinin kullanımı çok yaygındır.HTTP istekleri,kullanıcıdan parametreler veya form aracılığı ile alır.Request mevcut istekleri kapsülleyip sunucuya gönderir.Buna karşılık sunucudan response(cevap mesajı) gelir.Bilgi aktarımı server'dan client'e gönderilmiş olur.Bu işlem bittiğinde request nesneleri yok edilir.Şimdi kodlarımıza göz atalım..


<%--
    Document   : request
    Created on : 16.Şub.2018, 16:58:28
    Author     : Gökhan
--%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>JSP Page</title>
</head>
<body>
    Request method : <%= request.getMethod() %>
    Request URI :    <%= request.getRequestURI() %><hr/>
    Request PROTOKOL :    <%= request.getProtocol() %><hr/>
    Path Info(Yol Bilgisi) :    <%= request.getPathInfo() %><hr/>
    Query String(Sorgu Katarı) :   <%= request.getQueryString() %><hr/>
    Content Length(İçerik Uzunluğu) :   <%= request.getContentLength() %><hr/>
    Content Type :    <%= request.getContentType() %><hr/>
    Server Name :   <%= request.getServerName() %><hr/>
    Server port :    <%= request.getServerPort() %><hr/>
    Remote (uzak) user :   <%= request.getRemoteUser() %><hr/>
    Remote (uzak) Address :   <%= request.getRemoteAddr() %><hr/>
    Remote Host :   <%= request.getRemoteHost() %><hr/>
    Authorization scheme (Yetkilendirme Tasarısı) :   <%= request.getAuthType() %><hr/>
 
</body>
</html>

BİLGİSAYARIN ÇALIŞMA DÜZENİ

Bilgisayarın çalışma düzenini aşağıdaki örnek üzerinden inceleyelim.


Örneğimizde iki sayının toplanıp bir bellek gözüne yazılması istenmiş.Yukarı da adım adım çözülen örneğimizde dikkat edilmesi gereken yerler var.Bunlar da ilki ve en önemlisi Akümülatörün Data Register'ina atılmasıdır.Sonraki dikkat edilecek konu işlem yapmak istediğimiz AR'ını işlemi yapacağımız gözü ayarlamak ve daha sonra denetçinin vereceği komular ile veri yolu veya adres yolundan işlemi sonlandırmak...

BİLGİSAYARIN TEMEL BİRİMLERİ

  Bilgisayar 3 temel birimden oluşur.Ve bu birimler bir birleri içerisinde sürekli bir iletişim halindedir.


1)Merkezi İşlem Birimi

       MİB,bilgisayardan beklenen hesap yapma ve karar verme işlemlerinin gerçeklendiği birimdir.Bu birim aynı zamanda,tüm bilgisayarların çalışmasını da yönetir.Bu nedenle çoğu kez MİB'e bilgisayarın beyni olarak bakılır.

2-Bellek

      Bellek,veri ve programların saklanması amacıyla kullanlmaktadır.Bazı bilgisayarlarda,veri ve program aynı bellek içinde saklanırken,bazılarında veriler için ayrı programlar için ayrı bellek tasarlanır.Veri ve programın aynı bellekte olmasını Von Neumann yapısındaki bilgisayarlar sağlar.

3-Giriş-Çıkış 

      Giriş-çıkış arabirimi bilgisayarın,çevre birimlerle bağlantı kurmasını sağlar.Bilgisayarın çevre birimler arasında veri iletişimi için önemli rol oynar.

Bilgisayarların bu bölümleri arasındaki bağlantıyı sağlamak için tasarlanmış çok sayıda yol bulunur.Bunlar Veri Yolu ,Adres Yolu ve Denetim Yolu'dur.

Şimdi biraz daha ayrıntılı bakalım..
.
      Merkezi İşlem Birimi

               5 alt birimi vardır.Bu alt birimler;

 1-Bellek Adres Register'ı
2-Bellek Veri Registeri'i
3-Akümülatör
4-Aritmelik Lojik Birim (ALU)


     Bellek Adres Register'i MİB'ten ve  G/Ç tan gelen adresin nereye gideceğini belirler.Bellekten okuma veya yazma yapacağımızda AR'yi kullanmamız gerekir.AR adres yoluna bağlıdır.

     Bellek Veri Register'i MİB'den belleğe veya giriş-çıkış arabirimine giden veya buralardan MİB'e gelen verilen alınıp verildiği bir iskele olarak görev yapar.DR üzerinden MİB'e gelen veriler ACC (Akümülatöre) alınır.ALU tarafında da yürütülür.

  Denetçi,tüm bilgisayarların yönetimi ile ilgili bilgileri toplamak ve üretmekle görevlidir.

     Bellek

         Bellek birbirinin aynı ve çok sayıda bellek birimlerinin üst üste yığılması ile oluşmaktadır.
Bellek birimlerine bellek gözü her bellek gözüne ise göze adı verilen birimler bulunur.Veri yolundaki hat sayısı bir bellek gözündeki göze sayısı kadardır.Bu gözelere erişmek için ise adres yolu kullanır.Giriş-çıkış elemanlarıda birer bellek gözü gibi düşünülebilir.Aralarındaki fark,bu gözlerin birer ucunun bilgisayarın dış dünyasına açılmasıdır.

8 bitlik mikroişlemcilerin çoğunda veri yolu 8,adres yolu 16 hattan oluşur.Denetim yolundaki hatların sayısı MİB'in yapısına göre değişmektedir.16 bitlik mikroişlemcilerde veri yolu 8 ya da 16 bit olabilir.







     















MİKROİŞLEMCİLERE GİRİŞ

   Günümüzde mikroişlemciler iki alanda kullanılmaktadır.Birinci kullanım alanı,genel amaçlı bilgisayar üretimi ikinci alanı ise atanmış bilgisayar uygulamalarıdır.Günümüzde,yaygın olarak kullanılan bireysel bilgisayarların temel taşı mikroişlemcilerdir.Bireysel bilgisayarlara göre daha yetenekli olan iş istasyonları sunucular ve orta boy bilgisayarların teme öğereleri de  mikroişlemcilerdir.

Bilgisayar Yapısı

     Bellek Yetenegi
     
          Veri ve programlar,bellekte saklanabilmelidir.Saklanan veri ve programlar istediğinde geri alınabilmeli veya yeniden saklanabilmelidir.

     Hesaplama Yeteneği

          Bilgisayar kendisine verilen veriler üzerinde,yine kendisine verilen programa uygun olarak aritmetik ve mantıksal işlemler yapabilmelidir.

      Karar Verme Yeteneği

          İşlemler sonunda veya kendisine verilen verilere bakarak programın akışı ve/veya verilen değerlendirilmesi konusunda karar verebilmelidir.Yüksek seviyeli dillerdeki if else yapısı bu duruma örnek olarak verilebilir.

      Giriş-Çıkış Yeteneği

           Bilgisayara dışarıdan veri ve program verilebilmeli ve sonuçlar bilgisayardan dışarı alınabilmelidir.Kısaca,bilgisayar ile çevresi arasında veri iletişimi olmalıdır.

IMPLICIT OBJECTS

1-out (javax.servlet.jsp.JspWriter) nesnesidir.JSP'de ekrana yazı basmak için kullanılır..

2-request (javax.servlet.http.HttpServletRequest) nesnesidir.İstemcinin istekleri yapılır.

3-response (javax.servlet.http.HttpServlet.Response) nesnesidir.İstemcinin isteklerine yanıt verir.

4-session (javax.servlet.HttpSession) nesnesidir.Nesneleri global olarak gezidirmek için kullanılır.

5-application (javax.servlet.ServletContext) Servletteki uygulamaların metotları arayüzler ile yapılır.

6-pageContext (javax.servlet.jsp.PageContext) nesnesidir.JSP sayfaları hakkında bilgi verir.

7-config (javax.servlet.ServletConfig) nesnesidir.Servletin ayar işlemleri buradadır.

8-exception (java.lang.Throwable) nesnesidir.JSP'de oluşan hatalar için kullanılır.

JSP İLE FONKSİYON YAZIP ÇAĞIRMAK



















<%--

    Document   : Ornek
    Created on : 15.Şub.2018, 23:00:03
    Author     : Gökhan
--%>

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>JSP Page</title>
</head>
<body>
    <%!
        String ex="";
        public String TerstenYaz(){
            for(int i=6;i>0;i--)
                ex=ex+"<h" +i+ ">" +"CODINGISLIFE"+ "</h" +i+ ">";
        return ex;
    }
%>
<%= TerstenYaz() %>
</body>
</html>

SCRIPTLET TAG & ACTION TAG

4-SCRIPTLET TAG(Bilinen kodlama)

    Bu tag'lar <% %> arasına yazılır.Bir değişken tanımlayıp onu jsp sayfamızda yazdırmak isteseydik.
<%
      String sehir="Hatay";
      out.println("sehir");
      int yas=21;
      out.println(yas);
%>

5-ACTION TAG
 
    Bu tag'ımızı 3 ayrı şekilde kullanabiliriz..

1-Sunucu tarafında Javabeans kullanımına olanak sağlar
2-JSP sayfaları arasındaki bilgi aktarımını denetler
3-Appletler için hangi web tarayıcı olursa olsun fark etmez.Sağlıklı çalışır ve destekler..

Sonraki yazımızda bu tagları uygulamalı bir şekilde kodlar ile göreceğiz

DIRECTIVE TAG (2)Include Directive & (3)Tag Library Directive

2-INCLUDE DIRECTIVE

   JSP sayfalarında dışarıdan başka dosya,kod parçası veya herhangi bir JSP sayfasının bir başka JSP sayfasında kullanılmasını istediğimizde kullanırız.

 <%@ include file="footer.html" %>

 <%@ include file="takim/Galatasaray.jsp"%>

3-TAG LIBRARY DIRECTIVE

   Eğer ki koleksiyondan bir Taglib kullabacak isek oba istediğimiz bir ön isimle veya lakapla çağırmalarda bulunabiliriz.Ön isim veya lakap kullanım tekniği JSP sayfalarında Taglib kodların kullanımını kolaylaştırır..


  <%@ taglib uri="tag library URI" prefix="tagimiz" %>
  <%@ taglib uri="http://java.sun.com/jsp/jstl/core" %>
  <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" %>

Bir sonraki yazımızda Tag'larımıza devam edeceğiz.Bir sonraki tag çeşidimiz 4-Scriptlet tag---

DIRECTIVE TAG (1)Page Directive

3-DIRECTIVE TAG

    Bu taglar sayfaya özel bilgiler ekler.3'ayrı directive tag'ı vardır.Bunlar çok önemli taglardır.Bu örnekleri çözdükçe kendi kendinize küçük küçük uygulamalar yazmaya çalışın.Ben toplama kısmını yazarsam siz çıkarma kısmını yazın.Unutmayın bir dili geliştirmek için o dilde sürekli kod yazmanız gerekiyor.Biraz sabır ile daha zor daha eğlenceli konulara geleceğiz..

3.1)Page Directive

       Çalışan JSP  sayfasında işlenecek bilgileri tanımlar.

3.2)Include Directive

       Dışarıdan harici dosya,web sayfalarını ve kod parçalarını JSP sayfalarımıza dahil etmede kullanılır.Aynı yapı PHP'de de bulunur.2 veya daha fazla PHP sayfasını birleştirmeye yarar.Bu kod kalabalığını önler.Şöyle ki bir web sitesi tasarlıyorsunuz ve bu web sitesinin header footer gibi parçaları var.Ve her pakette ayrı ayrı bu kodları yazdığınızı düşünün.Header'da yaptığınız bir değişikliği tüm sayfalarda yapmak zorundasınızdır.Fakat header.jsp'yi include ederseniz,yaptığınız değişikliği tek seferde tüm jsp sayfalarına aktarabilirsiniz...

3.3)Tag Library Directive

      Özel tag kütüphaneleri kullanırken yazılır..

Şimdi de taglarımız tek tek ayrıntılı inceleyelim..

-Page Directive-

  1)Language
   
       Sayfamızda kullandığımı dili yazmak için kullanılır..
  <%@ page language="java"%>
 
   2)Extends

        Java SE'dan da bildiğiniz gibi kalıtım özelliğini kullanmak için kullanırız.

    <%@page extends="guzelkokar496.blogspot.com"; %>
 
   3)Import

          Java'da yararlanacağımız sınıf ve paketleri import page ile yaparız..

     <%@page import="java.swing.*,java.awt.*,java.awt.event.*" %> gibi kütüphaneleri import ettik

   4)Session

      JSP sayfaları arasında eğer oturum nesnelerinden yararlanacaksak page session'u yardımımıza
koşacaktır.

   Session çok önemlidir.Büyük projelerin vazgeçilmezidir.

Session iç nesnesi kullanılarak scriptlerler aracılığı ile erişirler.Session kullanıcılar tarafından tekrar tekrar kullanılan Java Beans bazı nesneleri saklamak için gayet elverişlidir..

     <%
           String nesne=request.getParameter("KullaniciAdi");
           session.setAttribute("MerhabaNesne",ortamNesnesi);
      %>
    
    5)Buffer

         Buffer (tampon) kontolünü sağlamak amacıyla kullanılıyor..Varsayılan deger 8kb.
     
      <%@  page buffer="16kb" %>

     6)AutoFlush
    
           JSP sayfalarındaki bufferlar dolduklarında otomatik boşaltılmaları için kullanılır.

      <%@page autoFlush="true" %>

     7)isThreadSafe

             JSP'de çok kanallı çalışan bir uygulama geliştirdiğimizde Servlet tarafında bu çoklu istekleri
tutup eş zamanlı yönetmek için bu tagımızı kullanırız.

      <%@page isThreadSafe="true" %>

     8)Info

          Geliştirilen JSP sayfasının hakkında programcı,versiyon,sahiplik hakkı gibi bilgiler yazılır..

       <%@page info="guzelkokar496.blogspot.com,copyright 2018" %>

      9)ErrorPage

          Herhangi bir hata anından sayfasının bulunduğu URL adresine yönlendirme yapar.Bu tag gerçekten kullanışlıdır.

       <%@page errorPage ="/hata/hataBuyuk.jsp"%>

      10)IsErrorPage

            Bu tag hata sayfasının kendisinde kullanılarak hata meydana geldiğinde gereken bilgileri web tarayıcısında gösterecektir.

       <%@ page isErrorPage="true" %>

     11)ContentType

            Bu tag'ta ülkelerin karakter kodlarını içeriyor..
     Bunları ezberlemeye gerek yoktur.Sadece ne yapabileceklerinizi öğrenseniz yeter..

       <%@ page contenType="text/html" pageEncoding="UTF-8" %>

Bir sonraki yazımızda 2.Directivi'miz Include 'ye bakacağız...Görüşmek üzere..
   








JSP-EXPRESSION TAG

2-EXPRESSION TAG

     Bu tagımız JSP'de java kodları yazmamızı sağlıyor.<% %> veya <%= %> şeklinde yazılıyor..
"=" olanında yazarsak sonuna noktalı virgül koymamıza gerek kalmaz..Düz şekilde yazarsak sonuna noktalı virgül eklememiz gerekiyor.Kodumuza göz atalım.

<%--
    Document   : JspTags
    Created on : 15.Şub.2018, 14:04:49
    Author     : Gökhan
--%>

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>JSP Page</title>
</head>
<body>
    <%--DECLARATION TAG--%>
        <%!
            public double sayi=10;
            public String Takim="Galatasaray";
        %>

    <%-- EXPRESSION TAG --%>
    <% out.println("Merhaba"); %>
    <%= out.println("Merhaba..") %>
    <%= new java.util.Date() %>

</body>
</html>



JSP-DECLARATION TAG

1-DECLARATION TAG

        Declaration tag'lar değişken ve metotları tanımlarken kullanılır.."<%! %>" arasına yazılır.
Bildiğiniz java kodları işte.Yani int sayi; String yazi; Örneğimize bakalım..

<%--
    Document   : JspTags
    Created on : 15.Şub.2018, 14:04:49
    Author     : Gökhan
--%>

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>JSP Page</title>
</head>
<body>
    <%--Declaration Tag--%>
        <%!
            public double sayi=10;
            public int a=4;
            public String Takim="Galatasaray";
        %>
</body>
</html>

Spring Boot Uygulamasını Heroku üzerinde Deploy Etme

Bu yazımızda sizlere spring boot ile yazılmış basit bir Rest api'nin heroku üzerinde nasıl deploy edebileceğimizi göstereceğim. Önce ...