PHP İLE CAPTCHA YAPIMI

<!--captcha.php -->
<?php
session_start();
$letters=array("a","b","c");
$randomselect=rand(0,2);
$random=rand(10000000,90000000);
$text=$letters[$randomselect].$random;
$_SESSION["captcha"]=$text;
$pic=imagecreatetruecolor(100,30);
$backgroucolor=imagecolorallocate($pic,55,55,55);
$fontcolor=imagecolorallocate($pic,35,255,155);
imagefill($pic,0,0,$backgroucolor);
imagestring($pic,5,5,5,$text,$fontcolor);
header("Cache-Control:no-cache");
header("Content-type:image/png");
imagepng($pic);
imagedestroy($pic);

?>
---------------------------------------------------------------------------
<!-- index.php -->
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<form action="dogrula.php" method="POST">
<table border="3">
<tr>
<td>
Please enter in the picture
</td>
<td>
<input type="text" name="captcha">
</td>
</tr>
<tr>
<td colpan="2">
<img src="captcha.php">
</td>
<td>
<input type="submit" name="submit" value="GIRIS">
</td>
</tr>
</table>
</body>
</html>
----------------------------------------------------------------------------------------------------
<!--dogrula.php-->
<?php 
session_start();
if(isset($_REQUEST["captcha"] && $_REQUEST["captcha"]!=""
&& $_SESSION["captcha"]=$_REQUEST["captcha"]){
echo "TRUE";
}
else 
echo "FALSE";
?>

MERKEZ BANKASINDAN ANLIK ALINAN DOLAR KURU İLE TL DÖNÜŞÜMÜ YAPAN PHP PROGRAMI

<!--cek.php -->

<!--Burada merkez bankasından sadece doları çekmek için bir dizi oluşturup o diziye foreach ile ayırdığımız dizinin ilk satırını atıp kullandık...-->

<?php

$linkdolar="http://www.tcmb.gov.tr/kurlar/today.xml";



$data = new SimpleXMLElement($linkdolar,0,true);

$dizi=array();

$dolaralis=array();

foreach ($data as $value)

 {

  array_push($dizi,$value->Isim);

  array_push($dolaralis,$value->ForexSelling);

 }

?>

--------------------------------------------------------------------------------------------------------

<!-- MerkezBankasi.php -->

<?php

function getir($key){

 if(isset($_POST[$key]) && strlen($_POST[$key])>0)



  return $_POST[$key];

   return false;

}

$dolartl = "";

$miktar = "";

$sonuc = "";

  if(count($_POST)==4)

  {

   $dolartl = getir("dolartl");

 

   $miktar = getir("miktar");

   $secim1 = getir("secim1");

   $secim2 = getir("secim2");

 

   if (!($dolartl  && $miktar && $secim1 && $secim2)) {

   $sonuc="veri girisi hatali";

   }

  else

    {

          if($secim1!=$secim2)

          {

              include "kur.php";

              $kur = new kur($dolartl);

              $tip=$secim1.$secim2;

              $deger=$kur->donustur($tip,$miktar);

              $sonuc=$miktar." ".$secim1."<br>";

              $sonuc.=$deger." ".$secim2;

          }

          else

              $sonuc="secimler ayni!";

    }

  }

?>

<html>

 <head>

  <meta charset="UTF-8">

 </head>

 <body>

  <form method="POST">

   <table border="3">

   <tr>

   <?php include "Cek.php"; ?>

    <td>Dolar</td>

    <td><input type="text" name="dolartl" value="<?php echo $dolaralis[0]; ?>"> </td>

   </tr>

   <tr><td colspan="2"><br></td></tr>

   <tr>

    <td>Miktar:</td>

    <td><input type="text" name="miktar" value="<?php echo $miktar; ?>"></td>

   </tr>

   <tr>

            <td>

                Seçim-1:

            </td>

            <td>

                <input type="radio" name="secim1" value="TL" checked>TL

                <input type="radio" name="secim1" value="$">USD

            </td>

        </tr>

        <tr>

            <td>

                Seçim-2:

            </td>

            <td>

                <input type="radio" name="secim2" value="TL" checked>TL

                <input type="radio" name="secim2" value="$">USD

            </td>

        </tr>

  <?php

        if (strlen($sonuc) > 0)

            echo "<tr><td colspan='2' style='text-align: center;  color: #ff6144;'>" . $sonuc . "</td></tr>";

        ?>

  <tr><td colspan="2" style=text-align:center><input type="submit" value="Cevir"></td></tr>

  </table>

  </form>

 </body>

</html>

---------------------------------------------------------------------------------------

<!-- kur.php -->



<?php

class kur

{

    public $dolartl;

    public function __construct($dolartl)

    {

        $this->dolartl=$dolartl;



    }

    public function donustur($tip,$miktar)

    {

        switch ($tip)

        {

            case "TL$": return $this->tl2dolar($miktar);

            case "\$TL": return $this->dolar2tl($miktar);

            default: return "Seçimler Uygun Değil!";

        }

    }

    public function tl2dolar($miktar)

    {

        $sonuc=$miktar/$this->dolartl;

        return round($sonuc,2);

    }



    public function dolar2tl($miktar)

    {

        $sonuc=$miktar*$this->dolartl;

        return round($sonuc,2);

    }

}

?>

İŞLETİM SİSTEMLERİ-ÖNEMLİ NOTLAR -1-

ÇOK DÜZEYLİ KUYRUKLAR

1-Bellek büyüklüğü önceliği ve proses türüne göre birbirinden farklı her işlem için ayrı bir hazır kuyruğu bulunmaktadır.

2-Prosesler bu bilgilere göre kalıcı olarak bir kuyruğa atanmaktadır.

3-Her kuyruğun kendine ait bir iş sıralama algoritması bulunur.

ÇOK DÜZEYLİ GERİ BESLEMELİ KUYRUKLAR

1-Prosesler işlemci kullanımlarına kuyruklara yerleşir

2-Her işlemci kullanımında diğre kuyruğa alınır

3-Çok düzeyli kuyrukta işlemler FIFO ile dönüşümlü sıralamanın hibrit yapısı gibidir.

PETRI NETLER

1-Bilgi akışında sistemlerin kontrollerinde ve aynı anda gerçekleşen aktivitelerin olduğu sistemlerin analizinde de ölümcül kilitlenmenin sezilmesi ve giderilmesi için uygulanana yöntemdir.

ÖLÜMCÜL KİLİTLENME

1-Çok prosesli ortamlarda prosesler bellek alanı cpu kullanımı dosyalar giriş çıkış birimlerigibi sonlu sayıdaki kaynaklar için yarışırlar.Bir proses kaynak alamadığında bekleme durumuna geçer.Kaynağı elinde bulunduran diğer proseste bekleme durumunda olabilir.Bu durumda kaynağı bırakamaz ve kaynağı bekleyen proses bekleme durumunda kalır.Yani ölümcül kilitlenme kaynakları paylaşan ve haberleşen proseslerin sonsuza kadar bekleme durumunda kalıp bloke olmasıdır.
Prosesler elindeki kaynakları bırakmadan başka kaynak isterlerse ölümcül kilitlenmeye neden olabilirler.

BİR İPLİK OLUŞTURUP 1 SN SONRA SIGKILL SİNYALİNİ GÖNDERECEK C++ PROGRAMI

#include <iostream>
#include <signal.h>
using namespace std;

void *iplik_islemi( )
{
    while(1)
         cout<<"BEN İPLİK"<<endl;

}
int main( ){
     pthread_t iplik;
     pthread_create(&iplik,NULL,iplik_islemi,NULL);
     sleep(1);
     pthread_kill(iplik,SIGKILL);
     pthread_join(iplik,NULL);



}

KENDİSİNE kill( ) SİSTEM ÇAĞRISIYLA SIGKILL KOMUTUNU GÖNDERİP SONLANAN C++ PROGRAMI

#include <iostream>
#include <signal.h>
using namespace std;

int main( ){
    kill(getpid( ),SIGKILL);
    cout<<"SİNYAL GÖNDERİLDİ..."<<endl;


}

SIGINT İLE CTRL+C KOMUTUNU YAKALAMAK (C++,İSLETİM SİSTEMLERİ)

#include <iostream>
#include <stdlib.h>
#include <signal.h>
#include <windows.h>
using namespace std;
void Sinyal_Yakala(){
    cout<<"Sinyal Yakalandi..."<<endl;
}

int main()
{
    while(true){
    if( signal(SIGINT,Sinyal_Yakala)==SIG_ERR)
cout<<"Sinyal Yakalanamadı..."<<endl;

}
}

BİR İPLİK OLUŞTURAN VE BU İPLİĞİN SONLANMASINI pthread_join( ) SİSTEM ÇAĞRISIYLA BEKLEYEN İPLİK(C++,İSLETİM SİSTEMLERİ)

#include <iostream>
#include <pthread.h>
using namespace std;
void *iplik_islemi(){
    Cout<<"Iplik"<<endl;
}
int main() {
    pthread_t iplik;
    pthread_create(&iplik,NULL,iplik_islemi,NULL);
    cout<<"İpliğin sonlanmasını bekle"<<endl;
    pthread_join(iplik,NULL);
    cout<<"İplik Sonlandı";

}

wait( ) Sistem Çağrısı İle Çocuk Prosesi Bekleme (C++,İSLETİM SİSTEMLERİ)

#include <iostream>
#include <sys/types.h>
#include <sys/wait.h>
using namespace std;

int main( ){
   pid_t pid;
   int statu; //Çocuk prosesin sonlanma değeri
   pid= fork( );
   if(pid==0)
      cout<<"Ben Cocuk Proses"<<endl;
   else
      {
       cout<<"Ben Anne Proses Bekledim..."<<endl;
       wait(&statu);
}


}

clone( ) Çağrısı İle Yeni Proses Oluşturma (C++,İSLETİM SİSTEMLERİ,LİNUX)

#include <sched.h>
#include <stdlib.h>
#include <stdio.h>
#include <malloc.h>

#define STACK_SIZE 1024

int new_process (){
    cout<<"My new process..."<<endl;
    return 1;
}
int main( )
{
    int pid;
    void *stack; //Cocuk prosesin yığın işaretçisi
    stack=malloc(STACK_SIZE); //Bellek alanı alma
    if(stack==0){
       cout<<"Bellek tahsis hatasi"<<endl;
       exit(1);
    }
pid=clone(&new_process,(char*) stack+STACK_SIZE,0,0);//clone-->>İle yeni proses oluşturuldu...
pid=waitpid(pid,NULL,0);//Wait a child process
cout<<"CHILD PROCESS ENDED..."<<endl;
free(stack); //Belleği Bırak

}

fork( ) Sistem Çağrısı ve Yeni İplik Oluşturma Çağrısı(C++,İŞLETİM SİSTEMLERİ)

#include <iostream>
#include <sys/types.h>
#include <unistd.h>
using namespace std;
int main(){
   pid_t pid;
   pid=fork();
   if(pid==0)
     cout<<"Merhaba ben cocuk proses"<<endl;
   else
     cout<<"Merhaba ben anne proses"; 

}

//Şimdide yukarıda oluşturduğumuz prosese bir iplik ekleyelim

#include <iostream>
#include <pthread.h>
using namespace std;

void *iplik_islemleri(void *i)
{
   cout<<"İplik çalışmaya başladı..."<<i<<endl;
}

int main(){
//İplik bilgilerini saklamak için pthread_t tipinde bir değişken
pthread_t iplik;

int iplik_no,i=1;

iplik_no=pthread_create(&iplik,NULL,iplik_islemleri,(void*)i);
//iplik oluşturuldu...
//ipliğin sonlanmasını bekliyoruz...
pthread_join(iplik,NULL);

}

SQL DİSTİNCT KOMUTU

DİSTİNCT KOMUTUMUZ TEKRARLI KAYITLARIMIZIN GÖSTERİLMEMESİNİ SAĞLIYOR.

ÖRNEĞİN VERİ TABLOMUZDA AHMET ADINDAN YÜZLERCE KİŞİ VAR VE BİZ SADECE

BİR TANESİNİN GÖSTERİLMESİNİ İSTİYORUZ O ZAMAN DİSTİNCT KOMUTUNU

KULLANMAMIZ GEREKECEKTİR.

SQL DELETE (SİLME) KOMUTU

SON DML KOMUTUMUZ OLAN DELETE...



SQL UPDATE KOMUTU

SQL UPDATE KOMUTU

KOMUTLARIMIZIN ANLATIMI BİTİNCE BİR SÜRÜ ÖRNEK ÇÖZECEĞİZ İYİ

ÇALIŞMALAR.

SİSTEM ÇAĞRILARI PROSES VE İPLİK YÖNETİM ÇAĞRILARI -4-

4-YÜRÜTME ÇAĞRILARI
   Yürütme işlemleri exec() grubu çağrıları ile gerçekleşir.<unistd> kütüphanesi gerekir.


ÖRNEK

   execl() sistem çağrısını kullanarak aynı dizideki kodu verilen merhaba.cpp programının çalıştırılabilir hali olan merhaba isimli dosyayı çalıştıracak kod parçasını yazalım.

#include <iostream>
using namespace std;
int main()

{

cout<<"Merhaba..."<<endl;
}
#include <iostream>
#include <unistd.h>
using namespace std;
int main()
{

execl("merhaba","meraba",NULL);
}
5-KONTROL GRUBU ÇAĞRILARI
  brk(void *veri_bolum_bitisi) ve setsid() çağrıları prosesler için özellik ayarlama çağrılarıdır.(<unistd.h>)

Proseslerin bellekleri 3 kısımdan oluşur.Bunlar işlemcinin temel bellek kesimleriyle aynı mantıkta bölümlü bir yapıdadır.

İlk kısım ---Program kodunun olduğu kod kesimi

İkinci kısım---Verilerin ve değişkenlerin yer aldığı veri kesimi

Üçüncü kısım---Yığının yer aldığı yığın kesimidir.

*******************************************************************************
ÖRNEK

setsid() sistem çağrısını kullanarak kendi SID sini belirleyen bir çocuk prosesin C++ kodunu yazalım.

#include <iostream>
#include <unistd.h>

int main (int argc,const char *argc[])
{

pid_t pid,sid;
pid=fork(); //Forklayarak ana prosesten ayrılıyoruz.
if(pid>0)
{
cout<<"Ana proses çıkar..."<<endl;
return 0; //ana prosesi sonlandırdık
}
sid=setsid(); //Kendi SID imizi oluşturup yetim proses olmaktan kurtuluyoruz.
sleep(5);
cout<<"BITIS..."<<endl;
return 0;

}



























SİSTEM ÇAĞRILARI PROSES VE İPLİK YÖNETİM ÇAĞRILARI -3-

exit(int statu) sistem çağrısı çalışan bir prosesin bitiminde kullanılır.Kütüphanesi <stdlib.h> tır.

Çıkış durumunu gösteren statu parametresi aynı zamanda waitpid() sistem çağrısına parametre olarak döner.

statu parametresinin düşük değerlikli baytı 0 ise normal sonlanma 0 dan farklı bir değer ise hata ile sonlanma anlamına gelir.Yüksek değerlikli ise çocuk prosesin çıkış durumudur.

ÖRNEK

#include <iostream>
#include <stdlib.h>
using namespace std;
int main()
 {
cout<<"CALISAN PRO..."<<endl;

exıt(EXIT_SUCCESS);

cout<<"Bu kod çalışmadı...";

}

pthread_join(pthread_t iplik,void **deger) çağrısı ,ilk parametrede belirtilen ipliğin sonlanmasını beklemek için kullanılmaktadır.<pthread.h> başlık dosyasında tanımlıdır.

ÖRNEK
#include <iostream>
#include <pthread.h>
using namespace std;
void *iplikislemi(){
cout<<"IPLIK"<<endl;



}
int main()
{
pthread_t iplik;

pthread_create(&iplik,NULL,iplikislemi,NULL);
cout<<"ipliğin sonlanmasın bekle !!! "<<endl;
cout<<"Iplik sonlandı..."<<endl;

}

pthread_exit(void *ptr) ise ipliğin sonlandırma çağrısıdır.,<pthread.h> başlık dosyasında tanımlıdr.


ÖRNEK :
Bir iplik oluşturup bu ipliğin pthread_exit() sistem çağrısıyla sonlandığı iplik ve ana program kodlarını yazalım.

#include <pthread.h>
#include<iostream>
using namespace std;
void *iplik_islem()
{
cout<<"Iplik islemi"<<endl;
pthread_exit(0);

}

int main()
{
pthread_t iplik;

pthread_create(&iplik,NULL,iplik_islemi,NULL);
pthread_join(iplik,NULL);


}

SİSTEM ÇAĞRILARI PROSES VE İPLİK YÖNETİM ÇAĞRILARI -2-

3-BEKLEME VE SONLANMA ÇAĞRILARI

   Proseslerin bekleme ve sonlanma çağrıları : wait(),waitpid() ve exit() tir
   İpliklerde ise pthread_join ve pthread_exit kullanılır.

wait(int *statu) ve waitpid(pid_t pid,int *statu,int secenekler) çağrıları için <sys/types.h> ve <sys/wait.h> kütüphaneleri gerekiyor.

waitpid() çağrısı kullanılarak istenen bir çocuk prosese özel veya çok çocuklu bir yapı için herhangi bir çocuk prosesin bitişi beklenebilir.

Eğer özel bir proses beklenecekse o prosesin proses tanımlayıcı numarası(pid) ilk parametre olarak girilir.Herhangi bir çocuk prosesin sonlanması beklenecekse -1 değeri girilir.

Proses sonlandığında waitpid() in ikinci parametresi olan ve adres değeri alan statü değişkeni sonlanan çocuk prosesin çıkış değerini alır.

waitpid() çağrısının son parametresi olan özellikler ise 0 veya OR larla değerler alabilir.

WNOHAN,WUNTRACED,WCONTINUED...

ÖRNEK

Bir anne ve çocuk proses oluşturup anne prosesin çocuk prosesin sonlanmasını wait çağrısı ile beklediği programı yazalım.

#include <iostream>
#include <sys/types.h>
#include <sys/wait.h>
using namespace std;
int main()

{
pid_t pid; //Fork çağrımızda geri dönüş değeri için

int statu; //Çocuk prosesin sonlanma değerinin alınması için

pid=fork(); //Çocuk prosesi oluşturduk.
if(pid==0)
cout<<"Merhaba la ben çocuk proses nasılsın"<<endl;
else{
cout<<"Selam ben anne proses"<<endl;
wait(&statu); //Prosesin bitmesini bekliyoruz.
}


}
ÖRNEK 2

Bir anne ve çocuk proses oluşturup anne prosesin çocuk prosesin çocuk prosesin sonlanmasını waitpid() çağrısı ile beklediği programı yazalım

#include <iostream>
#include <sys/types.h>
#include <sys/wait.h>
using namespace std;
int main()
{
pid_t  pid ,  pid_w ; //fork() ve waitpid() çağrıları için
int statu;
pid=fork();
if(pid==0)
cout<<"Ben Çocuk..."<<getpid()<<endl;
else
{
cout<<"Ben anne proses , çocuğumu beklicem tmm mı"<<endl;
pid_w=waitpid(pid,&statu,0);
//Çocuğun sonlanmasını bekliyor
cout<<"Sonlanan..."<<pid_w<<endl;  //Sonlanan prosesin PID si yazdırılıyor

}

}

PROCESSLER İLE THREADLER ARASINDAKİ FARKLAR

1-Threadler, onu oluşturan işlemin adres alanını paylaşır; processler kendi adres alanlarına sahiptir.


2-Threadler, işlemin veri bölümüne doğrudan erişime sahiptir; Processler üst işlemin veri bölümünün kendi kopyaları vardır.


3-Threadler, süreçlerinin diğer konuları ile doğrudan iletişim kurabilir; Processler kardeş süreçlerle 
iletişim kurmak için süreçlerarası iletişim kullanmalıdır.


4-Threadler neredeyse hiç yük taşımıyor; Processler hatırı sayılır bir yükü var.


5-Threadler kolayca oluşturulur; Yeni süreçler üst Processin çoğaltılmasını gerektirir.


6-Threadler, aynı işlemdeki iş parçacıkları üzerinde önemli denetime sahip olabilir; Processler yalnızca çocuk süreçleri üzerinde kontrol sahibi olabilirler.


7-Ana threadler değişiklikler (iptal, öncelik değişikliği, vb.) Işlemin diğer threadlerinin davranışını etkileyebilir; Üst processteki değişiklikler alt processleri etkilemez.

http://stackoverflow.com/questions/200469/what-is-the-difference-between-a-process-and-a-thread Sitesinden çevrilmiştir

SİSTEM ÇAĞRILARI PROSES VE İPLİK YÖNETİM ÇAĞRILARI -1-

   Bu çağrılar proses ve iplik oluşturma , bekleme ,sonlandırma , yürütme,ayarlama,bilgi alma ve hata ayıklamayı sağlayan çağrılardır.

Yeni proses oluşturma --->fork()

Yeni iplik oluşturma --->pthread_create(...)

İplik bekleme çağrısı--->pthread_join(...)

Proses bekleme çağrısı --->wait()

Proses sonlandırma çağrısı --->exit(int statu)

Prosesin ID --->getpid()

Anne prosesinin ID si --->getppid()

Kullanıcı ID si--->getuid()

1-YENİ PROSES OLUŞTURMA ÇAĞRILARI

   fork() sistem çağrısı yeni bir proses oluşturur ,kullanılabilmesi için <sys/types.h> ve <unistd.h>
başlık dosyaları program koduna eklenmelidir.Oluşan proses çocuk proses oluşturan ise annedir.

Bu çağrı kullanıldığını anne prosesin birebir kopyası olan bir çocuk proses oluşur.

Anne prosesteki tüm değişkenleri ve kod çocuk prosese kopyalanır her ikisi fork() çağrısından sonraki işlemi yapmaya çalışır.

Fakat ikisinin farklı islemler yapabilmesi için hangi prosesin anne hangi prosesin çocuk olduğu bilinmelidir.

fork() çağrısı çocuk prosese 0 ,anne prosese ise çocuk prosesin tanımlayıcı numarasıyla döner.

#include <iostream>
#include <sys/types.h>
#include <unistd.h>
using namespace std;
int main()

{
pid_t pid; //Dönüş tipimiz
pid=fork(); //Yeni proses oluşturuluyor.

if(pid==0)
   cout<<"Ben Cocuk"<<pid<<endl;
else
cout<<"Ben Anne"<<<pid<endl;

}
2-YENİ İPLİK OLUŞTURMA ÇAĞRISI
  pthread_create(pthread_t sınırlanan iplik,const pthread_attr_t sınırlanan ozellik,void*(*fonksiyon)(void*),void *restrict arg) çağrısı, yeni iplik oluşturmak için kullanılır.

Bu çağrı <pthread.h> kütüphanesi ile kullanılır.

İlk parametresi pthread_t tipinde bir iplik değişkeni

İkinci parametresi özellikleri ve NULL

Üçüncü parametre ipliğin çalıştıracağı fonksiyonu belirten işaretçidir.

Son parametre ise bu ipliğe gönderilecek parametrelerdir.

Derleme aşamasında lpthread opsiyonu belirtilmelidir.

Yukarıdaki proses örneğine iplik ekleyen C++ programını yazalım
  #include <iostream>
#include <pthread.h>
using namespace std;

//İpliğimizin 3.parametresi burada çalıştırmak istediğimizi foksiyonumuzu yazıyoruz
//Asal sayı hesabı olabilir,üslü sayısılarda işlemler olabilir,o sizin keyfinize kalmış artık :)
void *iplik_islemleri(void *i)
{
cout<<"Merhaba ben işaretçi fonksiyonunuzum"<<(int) i<<endl;
}
int main()
{
int iplik_no,i=1;
pthread_t iplik;  //İplik bilgilerimizi tutacak.

iplik_no=phtread_create(&iplik,NULL,iplik_islemleri(*i),(void*)i); //İpliğimizi oluşturuldu

pthread_join(iplik,NULL);
//İpliğimiz sonlanana kadar bekliyor
}

İŞLETİM SİSTEMLERİ SİSTEM ÇAĞRILARI 1

  Kullanıcı programları ile işletim sistemleri arasındaki arayüz işletim sistemleri tarafından desteklenen genişletilmiş komut setiyle sağlanır.Bu komut setine SİSTEM ÇAĞRILARI denir.

İşletim sistemlerinde komutların yürütüldüğü iki farklı uzay bulunur.Bunlardan ilki KULLANICI UZAYI,diğeri ise ÇEKİRDEK UZAYIDIR.

Sistem çağrıları veya bu çağrılara ulaşan komutlar dışındaki tüm komutlar kullanıcı uzayında yürütülür.

Kullanıcı,kullanıcı modunda bir komut işleyeceği zaman bu çekirdek modunda sistem çağrısıyla yapılır.

Sistem çağrısı yapan yazılım işletim sisteminin çekirdeğine yürütmek üzere çağrıda bulunur.

Sistem çağrısının yürütülmesinin ardından kullanıcı uzayına geri dönülür.
.
Çekirdekte bu yürütme işlemine tuzak(TRAP) adı verilir.

İşletim sistemine göre sistem çağrılarının yazım stilleri,kullanımları ve parametreleri değişebilir fakat özellikleri aynıdır.

Günümüzde UNIX,Linux,MINIX,Solaris ve BSD POSIX standardını destekleyen işletim sistemleridir

UYGULAMA--->SİSTEM ÇAĞRISI YAP
--->(SİSTEM ÇAĞRISI(ÇEKİRDEK UZAYINDA)) --->SİSTEM ÇAĞRISINDAN DÖNÜŞ
DİĞERLERİ KULLANICI UZAYINA AİTTİR.

Sistem Çağrılarının Sınıflandırılması

-PROSES VE İPLİK YÖNETİMİ

-SİNYALLEŞME

-DOSYA VE DİZİN YÖNTEMİ

-GÜVENLİK VE ZAMAN YÖNETİMİ

VİZE SORU TAHMİNİ (İSTE) :)

SORU : DÖRT ADET JK FF KULLANARAK DOĞRUDAN SIFIRLAMALI ASENKRON MOD-10 SAYICI TASARLAYINIZ.

ÇÖZÜM :




SQL İNSERT (EKLEME) KOMUTU



Verilen alanlardan herhangi birini doldurmak istemiyorsak,örneğin kitabın yazarını bilmiyoruz,onun yerine NULL değerini atayabiliriz.

SQL OPERATÖRLER (AND,İN,OR,LİKE)















AND OPERATÖRÜMÜZ



OR OPERATÖRÜMÜZ (veyalar arttırılabilir örneğin buna ek olarak or KitapFiyat>40 ta eklenirse
görüntülenecek veri sütunlarımız değişir.)




İN OPERATÖRÜMÜZ



BİR ÖRNEK DAHA...











SQL WHERE KOMUTU


Her zamanki gibi SQL1 veri tabanımızda kitaplik adında bir tablo oluşturup o tabloyu doldurduk.
Sonra select komutu ile tablomuzdaki verileri çağırdık en sonunda da where komutumuz ile işlemler yaptık.


























İYİ ÇALIŞMALAR

SQL SELECT KOMUTU

SQL DROP VE TRUNCATE KOMUTLARI

Drop komutumuzu tablo veya sütun silmede kullanıyoruz.
Truncate komutumuzu ise tablomuzda girdiğimiz verileri silmek için kullanıyoruz.































ARKADAŞLAR ŞİMDİYE KADAR GÖRDÜĞÜMÜZ KOMUTLAR DDL(DATA DEFİNİTİON LANGUAGE) YANİ SQL VERİ TANIMLAMA DİLİ.ÖNÜMÜZDEKİ YAYINLARIMIZDA DML(SQL VERİ İŞLEME DİLİ) KOMUTLARIMIZA GEÇECEĞİZ...

SQL (KODLAMA KISMINA GİRİŞ) CREATE (OLUŞTURMA) KOMUTU



Öncelikle New Query den boş bir sayfa açtık daha sonra create komutumuzla bir veri tabanı oluşturduk bir sonraki görselimizde de tablo oluşturup tablo başlıklarına isim verdikten sonra veri tiplerini belirleyeceğiz.iş,






C# TA VERİ TABANI GÖRÜNTÜLEME (SQL)





using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient; //SQL KÜTÜPHANEMİZİ EKLEDİK
namespace WindowsFormsApplication3
{
    public partial class Form1 : Form
    {

        public Form1()
        {
            InitializeComponent();
        }
       
        SqlConnection baglan = new SqlConnection("Buraya project kısmından new data source database next dataset next diyip orada connection yazan yerdeki + işaretindeki linki kopyalıyoruz");
        private void verilerimiGoster(){
            baglan.Open();
            SqlCommand komut = new SqlCommand("Select *from Bilgiler"); //Bilgiler tablomuzun ismi
            SqlDataReader oku = komut.ExecuteReader();
            while (oku.Read())
            {
//TABLOMUZU OKUYUP LİSTVİEW İMİZE AKTARIYORUZ
                ListViewItem ekle = new ListViewItem();
                ekle.Text = oku["AdSoyad"].ToString();
                ekle.SubItems.Add(oku["Sehir"].ToString());
                ekle.SubItems.Add(oku["Okul"].ToString());
                listView1.Items.Add(ekle);
            }

    }
        private void button1_Click(object sender, EventArgs e)
        {
            verilerimiGoster();
        }

SQL GİRİŞ (VERİ TİPLERİ-1)

1-bigint 8 byte uzunluktaki tam sayılar için ve büyük sayılar kullanılır.Ondalıklı sayılarda kullanımı uygun değildir.

2-binary(50) ikili sistemde kullanılır.8000 byte.

3-bit 0 veya 1 olarak düşünülebilir.Örneğin evli veya bekar gibi.

4-char sabit uzunlukta ve üzerinde aritmetik işlem yapılmayacak değerler için kullanılır.Burada dikkat edilmesi gereken konu char yerine varchar da kullanılabiliyor olmasıdır.bu ikisinin arasındaki farkı küçük bir örnekle pekiştirelim Mehmet diye bir verimiz olsun ve biz char(10) veri tipini kullanalım burada Mehmet in kaydı için 6 karakterlik bir alana ihtiyacımız var kalan 4 karakter de bellekte ayrılacak ve belleği boşu boşuna kullanmış olacağız işte böyle durumlarda varchar veri tipini kullanmamız daha uygun olacaktır.

5-date 3 byte lık bir alan kaplayan bir veri tipidir.GÜN AY VE YIL.

6-datetime 8 byte lık bir alan kaplayan bir veri tipidir.GÜN AY YIL SAAT DAKİKA VE SANİYE

7-datetime2(7) aynı şekilde gün ay yıl saat dakika saniye ve daha ileri zamanlar için kullanılır.Örneğin 100 metre veya daha kısa koşularda derece belirlemek için kullanılabilir.

8-datetimeoffset(buradaki değerler kullanıcı tarafında değiştirilebilir) farklı ülkelerdeki zaman dilimleri için kullanılan veri tipidir.

9-decimal ondalıklı değerler tutan veri türüdür 10 ^+-38


VERİTABANI OLUŞTURMA VE VERİ EKLEME (SQL E GİRİŞ)







SQL SERVER 2012 Yİ BURAYA TIKLAYARAK İNDİREBİLİRSİNİZ

SQL SERVER 2012 KURULUMU İÇİN BURADAN YARDIM ALABİLİRSİNİZ





SQL NEDİR ? 

VERİ TABANI OLUŞTURMA VE VERİ EKLEME


DATABASE KISMINDAN NEW DATABASE YE TIKLAYIP VERİ TABANIMIZA İSMİNİ VERDİK.









SONRA KURDUĞUMUZ VERİ TABANINA TIKLAYIP ORADAN YENİ BİR TABLO OLUŞTURDUK.BU TABLO VERİ TABANIMIZA GİRECEĞİMİZ BİLGİLERİ İÇİN GEREKLİ.
DAHA SONRA VERİ BAŞLIKLARIMIZI GİRDİK VERİ TİPLERİNİ BİR SONRAKİ YAYINLARDA GÖRECEĞİZ.






 
VE SON OLARAK TA VERİ EKLEMESİ YAPTIK BÖYLECE SQL İ KURUP KÜÇÜK BİR GİRİŞ YAPTIK DAHA SONRAKİ YAYINLARDA VERİ TİPLERİNİ VE KODLAR İLE VERİ TABANI OLUŞTURMA GİBİ YAYINLAR PAYLAŞACAĞIM...

İŞLETİM SİSTEMİ YAPILARI

-YAPILARINA GÖRE İŞLETİM SİSTEMLERİ
-GERÇEKLEŞTİRDİKLERİ İŞLEMLERE GÖRE İŞLETİM SİSTEMLERİ

1)YAPILARINA GÖRE İŞLETİM SİSTEMLERİ

A)BASİT (MONOLİTİK CEKİRDEK)

B)MİKRO CEKİRDEK (MİCROKERNEL)

C)HİBRİT CEKİRDEK

D)MODÜLER

E)SANAL MAKİNELER (VİRTUAL MACHİNES)

F)DIŞ CEKİRDEK (EXOKERNEL)

G)KATMANLI YAPI

H)SUNUCU-İSTEMCİ YAPISI

2)GERÇEKLEŞTİRDİKLERİ İŞLEMLERE GÖRE İŞLETİM SİSTEMLERİ

A)ANAÇATI (MAİNFRAME) SİSTEMLER

B)SUNUCU SİSTEMLERİ

C)ÇOK İŞLEMCİLİ SİSTEMLER
   
    C-1)ASİMETRİK ÇOKLU İŞLEMCİLİ SİSTEMLER
    C-2)SİMETRİK ÇOKLU İŞLEMCİLİ SİSTEMLER

D)KİŞİSEL BİLGİSAYAR İŞLETİM SİSTEMİ
 
    D-1)TEK KULLANICILI TEK İŞLEMLİ SİSTEMLER
    D-2)TEK KULLANICILI ÇOK İŞLEMLİ SİSTEMLER
    D-3)ÇOK KULLANICILI SİSTEMLER

E)GERÇEK ZAMANLI SİSTEMLER
 
    E-1)KATI GERÇEK ZAMANLI SİSTEMLER
    E-2)ESNEK GERÇEK ZAMANLI SİSTEMLER

F)KÜMELENMİŞ SİSTEMLER
 
    F-1)ASİMETRİK KÜMELENMİŞ
    F-2)SİMETRİK KÜMELENMİŞ

G)DAĞINIK SİSTEMLER

H)GÖMÜLÜ SİSTEMLER

I)AKILLI KART SİSTEMLERİ

İŞLETİM SİSTEMLERİNE GİRİŞ

1)LİNUX İŞLETİM SİSTEMİ

    Linux işletim sistemi çekirdek ve sistem çağrıları olmak üzere ikiye ayrılır.İşletim sisteminin uygulama yazılımları , bazı sistem yazılımları ve kabuk ile olan arayüzüne sistem çağrıları denir.Sistem yazılımlarının uygulama yazımlımlarından farklı olarak çekirdek aracılığıyla donanıma erişimi aşağıdaki şekilde gösterilmiştir.


2)WİNDOWS İŞLETİM SİSTEMİ

    Aşağıdaki şekilde yer alan Windows işletim sistemi çekirdek, NT sistem servisleri ve
API(Application Programming Interface - Uygulama Programlama Arayüzü) kısımlarından oluşmaktadır.


    Windows işletim sisteminde kabuk, bazı sistem programları ve uygulama yazılımları API aracılığıyla işletim sistemine ulaşır.Windows ortamında sistem çağrılarına karşılık gelen kavram NT sistem servisleridir.Bu servislere ancak windows sürücü geliştirme kitleri(WDDK) ile doğrudan ulaşılabilir.Bu konumda geliştirilen yazılımlar, Sistem yazılımları kategorisindedir.Son olarak çekirdek aracılığıyla yine sistem yazılımı olan fiziksel donanıma ulaşmak mümkündür.Bir çok veri tabanı geliştirme yazılımı veri ortamının yönetilmesi ve güvenliğini doğrudan çekirdeğe ulaşım ile kendisi sağlamaktadır.




C# (FORMLAR ARASI VERİ AKTARIMI 2)
















/*PROGRAMIMIZ 2.FORUMDAN COMBOBOX IMIZA YEMEKHANE FİYATLARINI EKLİYOR ÖRNEĞİN ÖĞRENCİ 10 TL BİLGİSİNİ FORM 1 E GÖNDERİP ORADA GEREKLİ HESAPLAR YAPILIYOR */
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApplication8
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            ctur.Text = "Seciniz";

        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void bekle_Click(object sender, EventArgs e)
        {
            int adet;
            bool k = Int32.TryParse(tadet.Text, out adet);
            if (k && ctur.SelectedIndex > -1)
            {
                ltur.Items.Add(ctur.Text);
                ladet.Items.Add(adet);
                double birimfiyat = (double)lf.Items[ctur.SelectedIndex];
                double tutar = adet * birimfiyat;
                ltutar.Items.Add(tutar);
                ctur.Text = "Seçiniz";
                tadet.Clear();
                guncelle();
            }

        }
        private void guncelle()
        {
            double tutar = 0;
            int adet = 0;
            for (int i = 0; i < ltur.Items.Count; i++)
            {
                tutar += (double)ltutar.Items[i];
                adet += (int)ladet.Items[i];
            }

            latoplam.Text = "Toplam: " + tutar;
            laadet.Text = "Adet: " + adet;
        }

        ListBox lt = new ListBox();
        ListBox lf = new ListBox();
        private void bsil_Click(object sender, EventArgs e)
        {
            int secilen = ltur.SelectedIndex;
            if (secilen > -1)
            {
                ltur.Items.RemoveAt(secilen);
                ladet.Items.RemoveAt(secilen);
                ltutar.Items.RemoveAt(secilen);
                guncelle();
            }
        }

        private void btanımla_Click(object sender, EventArgs e)
        {
            Form2 frm = new Form2(lt, lf);
            frm.ShowDialog();

            ctur.Items.Clear();
            for (int i = 0; i < lt.Items.Count; i++)
                ctur.Items.Add(lt.Items[i]);

            ctur.Text = "Seçiniz";
        }

    }
}
//FORM-2
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApplication8
{
    public partial class Form2 : Form
    {
        ListBox lf, lt;
        public Form2(ListBox _lt,ListBox _lf)
        {
            InitializeComponent();
            lt = _lt;
            lf = _lf;
            for (int i = 0; i < lt.Items.Count; i++)
            {
                ltur.Items.Add(lt.Items[i]);
                lfiyat.Items.Add(lf.Items[i]);
            }
        }

        private void bekle_Click(object sender, EventArgs e)
        {
            double fiyat;
            bool kontrol = Double.TryParse(tfiyat.Text, out fiyat);
            if (kontrol && ttur.Text.Length > 0)
            {
                ltur.Items.Add(ttur.Text);
                lfiyat.Items.Add(fiyat);

                lt.Items.Add(ttur.Text);
                lf.Items.Add(fiyat);
                ttur.Clear();
                tfiyat.Clear();
            }
        }

        private void bkapat_Click(object sender, EventArgs e)
        {
            this.Close();
        }
    }
}

C# (FORMLAR ARASI VERİ AKTARIMI)
















using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApplication6
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
     
        private void button1_Click(object sender, EventArgs e)
        {
            Form2 frm=new Form2(listBox1);
            frm.ShowDialog();
        }

        private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        private void button2_Click(object sender, EventArgs e)
        {
            int secilen = listBox1.SelectedIndex;
            if (secilen > -1)
                listBox1.Items.RemoveAt(secilen);
            }
    }
}
//FORM2
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApplication6
{
    public partial class Form2 : Form
    {
        ListBox lx;
        public Form2(ListBox lb)
        {
            InitializeComponent();
            lx = lb;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (textBox1.Text.Length > 0)
            {
                lx.Items.Add(textBox1.Text);
                textBox1.Clear();
               
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            this.Close();
        }
    }
}

C# (KULLANICI ADI VE ŞİFRE İLE FORMLAR ARASI GEÇİŞ)




using System; //FORM-1
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApplication4
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }
       
            Form2 dgrfrm = new Form2();
        private void button1_Click(object sender, EventArgs e)
        {
            if(textBox1.Text=="Admin" && textBox2.Text=="gkhan496")
            {
                dgrfrm.Show();  
            }
        }
    }
}
FORM-2
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApplication4
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
           
        }

        private void Form2_Load(object sender, EventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {
            Form1 frm1 = new Form1();
            frm1.Show();
        }
    }
}

C# (RANDOM KOMUTUYLA YAPILAN 2 OYUN)



using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApplication4
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();


        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {
            int sayac = 1;
            Random rastgele = new Random();
            int deger;
            for (int i = 0; i < 6; i++)
            {
                deger = rastgele.Next(1, 49);
                if (sayac == 1)
                    label1.Text = deger.ToString();
                if (sayac == 2)
                    label2.Text = deger.ToString();
                if (sayac == 3)
                    label3.Text = deger.ToString();
                if (sayac == 4)
                    label4.Text = deger.ToString();
                if (sayac == 5)
                    label5.Text = deger.ToString();
                if (sayac == 6)
                    label6.Text = deger.ToString();
                sayac++;

            }
        }
        int tur = 0;
        int sayac = 1;
        int o1 = 0;
        int o2 = 0;
        private void button2_Click(object sender, EventArgs e)
        {
            int tursayisi;
            tur++;
            Random zarsayi = new Random();
            int zar;
            label14.Text = tur.ToString();
            bool t = Int32.TryParse(textBox1.Text, out tursayisi);

            if (t)
            {

                if (sayac == 1)
                {
                    zar = zarsayi.Next(1, 7);
                    o1 += zar;
                    label10.Text = o1.ToString();
                    sayac++;
                    label13.Text = "OYUNCU-2";
                }
                if (sayac == 2)
                {
                    zar = zarsayi.Next(1, 7);
                    o2 += zar;
                    label11.Text = o2.ToString();
                    sayac--;
                    label13.Text = "OYUNCU-1";
                }
            }
            if (tur == tursayisi)
            {
                if (o1 > o2)
                    MessageBox.Show("1.OYUNCU KAZANDI");
                else
                    MessageBox.Show("2.OYUNCU KAZANDI");
                button2.Visible = false;
            }
        }

        private void button3_Click(object sender, EventArgs e)
        {
            button2.Visible = true;
            label10.Text = "0";
            label11.Text = "0";
            tur = 0;
            textBox1.Text=" ";
            label14.Text = "0";
            o1 = 0;
            o2 = 0;
           
        }

    }
}
KODTA ANLAMADIĞINIZ YERİ İLETİŞİM BÖLÜMÜNDEN SORABİLİRİSİNİZ EN KISA ZAMANDA YANIT GELİR YETER Kİ DOĞRU MAİL OLSUN...

C# (AT YARIŞI OYUNU)

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApplication3
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        int birinciatsolauzaklik, ikinciatsolauzaklik, ucuncuatsolauzaklik;
        Random rastgele = new Random();
        private void Form1_Load(object sender, EventArgs e)
        {
            birinciatsolauzaklik = pictureBox1.Left;
            ikinciatsolauzaklik = pictureBox2.Left;
            ucuncuatsolauzaklik = pictureBox3.Left;

        }
        private void button1_Click(object sender, EventArgs e)
        {
            timer1.Enabled = true;
        }

        private void button2_Click(object sender, EventArgs e)
        {
            pictureBox1.Location = new Point(12, 49);
            pictureBox2.Location = new Point(12, 177);
            pictureBox3.Location = new Point(12, 319);

        }


        private void timer1_Tick(object sender, EventArgs e)
        {
            int birinciatingenisligi = pictureBox1.Width;
            int ikinciatingenisligi = pictureBox2.Width;
            int ucuncuatingenisligi = pictureBox3.Width;
            pictureBox1.Left += rastgele.Next(5, 16);
            pictureBox2.Left += rastgele.Next(5, 16);
            pictureBox3.Left += rastgele.Next(5, 16);
            int bitisuzakligi = label5.Left;
            if (birinciatingenisligi + pictureBox1.Left >= bitisuzakligi)
            {
                timer1.Enabled = false;
                MessageBox.Show("1.AT KAZANDI");
            }
            if (ucuncuatingenisligi + pictureBox3.Left >= bitisuzakligi)
            {
                timer1.Enabled = false;
                MessageBox.Show("3.AT KAZANDI");
            }
            if (ikinciatingenisligi + pictureBox2.Left >= bitisuzakligi)
            {
                timer1.Enabled = false;
                MessageBox.Show("2.AT KAZANDI");
            }
        }
    }
}
Gerekli açıklamaları yapayım...
Öncelikle 3 tane atımız var bu atlar birer hareketli gif bunları http://www.hareketligifler.net/ bulabilirsiniz...Yarışımızı sınırlamak için label lar kullandık Labelın autosize değerini false ten true ya getirdik böylece boyutunu ayarlayıp rengini değiştiridik.
Bu atları birer picture box kullanarak formumuza ekliyoruz.
Daha sonra uzaklık ve genişlik değişkenlerini belirliyoruz bu kazanan atın hangisi olduğunu ve atları hareket ettirmek için gerekli.
Bunun için timer kullanıyoruz ve kodlarımızı timerin içine yazıyoruz
Timer bize sürekli aynı kodu çalıştırıcak.
Ve sonrada picture box umuzu hareket ettirmek için rastgele adında random değer alacağımız bir değişken tanımlayıp random değer aldırdık 5 ile 16 arasında böylece ilk at 7 ikinci at 8 değerini alırsa 2. at önde olacaktır bu olay finish çizgisine yani label5 e yetişene kadar sürecek.
Tekrar oyna butonuna ise picture boxların ilk konumlarını yazdık böylece herşey baştan başlayacak
Sağlıcakla kalın...

C# (MEDİA PLAYER KULLANIMI VE RADYO YAPIMI)
















ÖNCELİKLE BOŞ BİR FORM AÇIYORUZ SONRA TOOLBOXA GELİP SAĞ TIKLIYORUZ ORDAN CHOOSE ITEMS A TIKLIYORUZ VE SONRA COM COMPONENTS TEN WİNDOWS MEDİAPLAYER İ SECİYORUZ...

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Media_Player
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void axWindowsMediaPlayer1_Enter(object sender, EventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {
            axWindowsMediaPlayer1.URL = "C:\\Users\\k\\Desktop\\model.mp3";
            /*Media playerda oynatmak istediklerinizi bu şekilde ekleyebilirsiniz
            dikkat edilmesi gereken yerler url nin uzantısı ve slash işaretleri
            */
           
        }

        private void button2_Click(object sender, EventArgs e)
        {
            axWindowsMediaPlayer1.URL = "http://kralpopwmp.radyotvonline.com:80 ";
            //mms adresini url kısmına yapıştırırsanız o radyo veya televizyon kanalına gider
            //Bu şekilde kendinize beğenidiğiniz radyo kanallarını ekleyebilirsiniz
            //Güncel radyo frekansları için http://radyodelisi.blogspot.com.tr/ ziyaret edebilrisiniz.
        }
    }
}

C# (TİMER KULLANIMI)
















using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Timer
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {
            timer1.Enabled = true; //Timer ı butondan başlattık isterseniz properties tende true olarak seçebilirsiniz
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            label1.Text = DateTime.Now.Second.ToString(); //Bu fonksiyonları kullanabilirsiniz
            //Veya kendinizin belirlediği bir sayi ile de çalıştırabilirisinz
        }

        private void button2_Click(object sender, EventArgs e)
        {
            timer2.Enabled = true;
        }
        int sayi = 0; //bu tip değişkenleri fonksiyon dışında tanımlamımız gerekir başlangıç değerleri döngü içinde yazılmaz.
        private void timer2_Tick(object sender, EventArgs e)
        {
         
            label2.Text = sayi.ToString(); //labela integer yazdıramayız...
            sayi++ //İnterval bölümünden hızını ayarlayabilirsiniz...

        }


    }

}

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 ...