Useful shortcuts for vi editor

Thursday 31 March 2011

2011 Mart ayı blog raporum


Her ay yapmayı planladığım blog raporunun ilk yazısını yazıyorum. Raporda genel olarak o ay ile ilgili yazılarım hakkında yorum ve blog istatistiklerini yazmaya çalışacağım.

Mart ayında bloğumu yeni açmama rağmen beklediğimin üzerinde yazılar yazdığımı söyleyebilirim. Zaman buldukça yazmayı sürdüreceğim ve bunu bir alışkanlık haline getirmeye çalışacağım.

Mart ayı istatistikleri:
Toplam blog yazısı: 16 (bu yazı dahil)
Toplam görünüm: 73
En fazla rağbet gören yazı: javascript gün bilgisi gösterme

Beni izlemeye devam edin, pişman olmayacaksınız. J

Javascript’de saat bilgisini gösterme

Javascript dilinde html kodların içine saat bilgisini gösterebiliriz. Basitçe şu şekilde yaparız;
Öncelikle bir notepad veya başka metin programı ile aşağıdaki kodları yazıp, yazdığımız dosyayı .js uzantılı olarak farklı kaydedelim.

//saat bilgisini periyodik olarak gösterme

var tarih = new Date();
var saat = tarih.getHours();
var dakika = tarih.getMinutes();

document.write("Saat -> ");

document.write(saat, ": ");

if (dakika < 10)
    document.write("0", dakika);
else
    document.write(dakika);

setTimeout("location.reload(true);", 500000); //500 snyede bir sayfa yenilensin

Son olarak yazdığımız js uzantılı javascript dosyasını html kodlarda nasıl uygulayacağımıza bakalım. (dosyanın isminin ornek.js olarak kaydedildiğini varsaydık.)

<!--html’de javascript dosyası çağırma-->
<html>
 <body>
  <p>Sayın ziyaretçi, <script type="text/javascript" src="ornek.js"></script></p> <!--javascript çağırma-->
 </body>
</html>

Bir diğer javascript hakkında olan bu yazımda, javascript ile saat bilgisinin nasıl web sitemizde göstereceğimizi inceledik. Hepinize sabırlı ve verimli kodlamalar dilerim! J

Wednesday 30 March 2011

Örüntü nedir?


Geometri derki; örüntü, çoğunlukla uzaysal ve geometrik karaktere sahip, iki veya üç boyutlu bir nesne olarak düşünülebilir. Diğer bir ifadeyle örüntü, ilgilenilen varlıkla ilgili gözlenebilir veya ölçülebilir bilgilere verilen isimdir.

Matematik derki; örüntü, olay veya nesnelerin düzenli bir biçimde birbirini takip ederek gelişmesidir. Örnek verecek olursak haftanın günleri bir örüntüdür.

Vikipedi’den alıntıdır.
J

Sezar şifreleme örneği

İlkel şifreleme yöntemleri arasında kendine yer bulan Sezar şifreleme bir kaydırma şifreleme yöntemidir. Yukarıdan bakıldığında işleyişi basittir; şifreyi gönderen kısım bir anahtar belirler ve bu anahtarı kullanarak mesajını şifreler, daha sonra karşı tarafa hem şifreli mesajını hem de anahtarını verir. Karşı taraf (şifreli mesajı ve anahtarı alan) anahtarı kullanarak şifreli mesajı açar.
            

Örnek olara A’dan B’ye bir şifreli mesaj gönderdiğimizi düşünelim. A’nın şifrelemek istediği mesaj “merhaba” olsun. A’nın seçtiği anahtarda 3 olsun. Yani;

Plain Text (Mesajın Aslı) = merhaba
Key (Anahtar) = 3 olur.

Bu parametrelere göre şifrelenen mesaj şu şekilde olur;
Sezar şifrelemede gönderilecek mesajdaki her bir karakter anahtar kadar ötelenir. Buradaki örneğimizdeki mesajın ilk karakteri olan ‘m’ 3 karakter ötelenerek, ‘p’ harfine denk olur. Kısacası şifreli mesajımız;

Cipher Text (Şifreli Mesaj) = phukded olur.

Bu yaptığımız işlemleri formülize edersek;

Ccipher text = Pplain text + Kkey diyebiliriz.

Daha sonra şifreyi alan kısım (B) anahtar kullanarak tersi işlem yaparak mesajın aslını elde eder.

Konunun pekişmesi amacıyla bunu bir de konsol (console) uygulamamızda bakalım.

/*Alper Özsöyler*/
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int main()
{
int boyut=5;
char *dizi;
int temp;

printf("Sezar Sifreleme - Kaydirma Sifrelemesi (Ceasar's Cipher - Shift Cipher)");
printf("\nYalnizca kucuk harfler icin tasarlanmistir!");

dizi = (char *) malloc (boyut * sizeof(char)); //Char tipinde pointer dizisi tanımlandı ve yer ayrıldı.

printf("\n\nSifrelenecek metini giriniz: (Cikis icin 0)\n-> ");

for(int i=0; i<boyut; i++)
{
char harf;
harf = getch();
printf("%c",harf);

if(harf == '0')
{
dizi[i]='C';
break;
}

dizi[i] = harf;

if( i == boyut - 1 )
{
    dizi = (char *) realloc (dizi, (boyut+5) * sizeof(char)); //Dizinin boyutu 5 artırıldı.
   
    boyut = boyut + 5;
}

}
putchar('\n');
for ( int k=0 ; k<boyut; k++)
{  
    if(dizi[k] == 'C')
    temp=k;
}   
     
dizi = (char *) realloc (dizi, temp * sizeof(char));

printf("\nPlain Text (ASIL MESAJ): ");
for(int bas=0; bas<temp; bas++)
printf("%c",dizi[bas]);

int key;
printf("\nAnahtarinizi giriniz: ");
scanf("%d",&key);
if(key >26)
key = key % 26;

printf("\nChipher Text (SIFRELI MESAJ): ");
for(int i=0 ; i<temp ; i++)
{
char gndrilen=dizi[i];;
if(dizi[i] != ' ')
{
gndrilen = (dizi[i] + key );

if( gndrilen >122) // z harfinden büyükse başa dön
gndrilen = gndrilen - 26;
}

printf("%c",gndrilen);
}
printf("\n\nThis program is written by Alper Ozsoyler.");
getch();
free(dizi);
return (0);

}

Yazdığımız kod yalnızca şifreleme kısmının (A) yaptığı işlemi yapmaktadır. Dikkat edilecek olunursa Latin alfabesinde bulunan 26 harfi aşan bir öteleme olursa, örneğin ‘z’ karakterini anahtarı 2 olan ile ötelersek bunun sonucunun ‘b’ karakteri olacak şekilde olmasını sağladık.

if( gndrilen >122) // z harfinden büyükse başa dön
gndrilen = gndrilen - 26;

Son olarak bir de şifreyi alan kısmını (B) inceleyelim.

/*Alper Özsöyler*/

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

int main()
{   char *dizi;
    int boyut = 5;
    int temp;
    dizi = (char *) malloc (boyut * sizeof(char));
    printf("Sezar Sifreleme - Kaydirma Sifrelemesi Cozumu\n(Ceasar's Cipher - Shift Cipher)");
    printf("\nYalnizca kucuk harfler icin tasarlanmistir!");
    printf("\n\nSifrelenmis mesaji giriniz (Bitis icin 0) :\n<-- ");
    for(int i=0 ; i<boyut ; i++)
    {
    char harf;
    harf = getch();
    printf("%c",harf);
   
                      if(harf == '0')
                      {
                      dizi[i]='C';
                      break;
                      }

    dizi[i] = harf;
     
            if( i == boyut - 1 )
            {
            dizi = (char *) realloc (dizi, (boyut+5) * sizeof(char)); //Dizinin boyutu 5 artırıldı.
   
            boyut = boyut + 5;
            }
   
    }
   
    for ( int k=0 ; k<boyut; k++)
    {  
    if(dizi[k] == 'C')
    temp=k;
    }   
     
      dizi = (char *) realloc (dizi, temp * sizeof(char));
   
    printf("\n\nChipher Text (SIFRELI MESAJ): ");
    for(int bas=0; bas<temp; bas++)
    printf("%c",dizi[bas]);

    int key;
    printf("\nAnahtarinizi giriniz: ");
    scanf("%d",&key);
    if(key >26)
    key = key % 26;
   
    printf("\nPlain Text (ASIL MESAJ): ");
    for(int i=0 ; i<temp ; i++)
    {
    char gndrilen=dizi[i];;
    if(dizi[i] != ' ')
    {
    gndrilen = (dizi[i] - key );

    if( gndrilen <97)
    gndrilen = gndrilen + 26;
    }

    printf("%c",gndrilen);
    }
printf("\n\nThis program is written by Alper Ozsoyler.");
getch();
free(dizi);
   
    return 0;
}

Bu yazımızda Sezar şifrelemeyi inceledik. Bunun gibi şifreleme yöntemleri, algoritmalarının çok daha fazlasını www.bilgisayarkavramlari.com da bulabilirsiniz. Herkesle şifresiz iletişim kurmanız dileğiyle, hoşçakalın J

Bilgi: Örnek için standart 26 harfli Latin alfabesi kullanılmıştır.