21 Aralık 2012 Cuma

Shell Geliştirmeye Giriş

Shell,terminal üzerinde yazdığınızı işlemleri(bu bir ekrana bastırma işlemi de olabilir,klasörün içindeki dosyaları harf sırasına göre sıralamakta olabilir) gerçekleştiren kod parçasıdır.
Sheller fiziksel olarak .sh uzantılı dosyalardır.Unixin kendi shell dili olduğu gibi,C,Perl gibi dillerde de shell yazılabilmektedir.

Terminal açılır.
gedit <dosyanızınadı>.sh 
olacak şekilde metin düzenleyicisi açılır.


Açılan metin düzenleyicisinde shellimizde yaptırmak istediğimiz kodlar yazılır.İlk shell kodumuz olduğundan kullanıcıdan iki giriş alan ve ekrana çıktı bastıran shell yazdıracağız.
echo "Merhaba Dünya"
echo "Ad:"
read ilkAd
echo "Soyad:"
read soyAd
echo "Benim adım $ilkAd $soyAd"
echo,ekrana yazdırmak istediğimiz metni gönderen bir komuttur.
read,kullanıcıdan aldığı veriyi bir değişkene atan bir komuttur.
echo komutunda read komutundan aldığımız parametreyi yazdırmak için yazdırmak istediğimiz değişkenin başına $ işareti getirilir.
Gördüğümüz gibi echo ve read komutuyla shell dosyamızı hazırlamış olduk.Şimdi nasıl çalıştıracağız ona bakalım

Düzenleyici(gedit) kapatıldıktan sonra terminale dönelim ve
sh shell01.sh
komutunu yazalım

Entera bastıktan hemen sonra kodumuzdaki ilk iki echo komutu vazifesi gereği aldığı stringleri ekrana bastırmakta ve read komutu sizden giriş yapmanızı beklemektedir.


9 Aralık 2012 Pazar

Windows 8 "Windows" Dosyalarında Değişiklik İzni Alma

Windows 8 ' de karşılaşacağımız sorunlardan biri de Windows dosyalarında değişiklik yapmasına izin vermemesidir.Aslında normal kullanıcılar için güvenlik açısından faydalı olsa da geliştiriciler açısından ister istemez sıkıntı yaratan bir durum olmaktadır.

Örnek olarak Windows\System32\drivers\hosts dosyasını kullanalım

"hosts" dosyasına sağ tık Özellikler menüsü açılır ve bu menüden Güvenlik sekmesine tıklanır.


Güvenlik sekmesinden Gelişmiş tıklanır ve kullanıcı adının yazdığı seçenek seçilir "İzinleri Değiştir" e tıklanır.


Öncekinde olduğu gibi profil ismi belirtilecek şeklinde seçilir ve "Ekle" düğmesine basılır.İsterseniz erişim izni engellemek dosya da değişikliğin yapılmasına izin vermemek için "Kaldır" veya "Düzenle" düğmelerine tıklayabilirsiniz.


Buradan "Sorumlu seçin" yazısı tıklanır.


Sırayla Gelişmiş ---> Şimdi Bul tıklanır. Arama sonuçlarında çıkan listede bilgisayarınızın kullanıcı adı seçilir ve tamam a basılır.



Bu işlemden sonra iki işlem öncede aktif olmayan "Temel İzinler" aktifleşir ve buradan istediğiniz izni verebilirsiniz.


6 Aralık 2012 Perşembe

Java Thread

Thread,bir programı oluşturan iş parçacıklarıdır.Bildiğimiz gibi programlar küçük küçük iş parçacıkları(thread) tarafından oluşturulmaktadır.Gerçek hayata örnek verirsek yolda yürümek bir thread,yolda yürüken müzik dinlemek ayrı bir thread,yolda yürüyüp müzik dinlerken etrafı izlemek ise başka bir thread dir.
Burada size giriş olarak en basit anlamda bir thread JAVA platformunda nasıl oluşturulur,oluşturulan thread nasıl geçici bir süreliğine durdurulur -ki biz buna literatürde uyku(sleep) diyoruz- onu anlatacağım.

import java.util.Random;                              
public class Olay implements Runnable {
String isim;
int zaman;
Random r = new Random();            
public Deneme(String i){
isim=s;
zaman=r.nextInt(10);
}
public void run(){
try{
System.out.printf("%s uyudu %d ms \n", isim,zaman);
Thread.sleep(zaman);
System.out.printf("%s tamamlandı\n", isim);
}
catch(Exception e){
}
}

}
Threadlerimizin çalışması için Runnable arayüzünü oluşturduğumuz Olay sınıfına ekliyoruz.
java.util.Random: Random,rastgele bir değer üreten bir sınıftır.
zaman=r.nextInt(10) : Buradaki "r" Random sınıfının bir objesi olup nextInt(10) metodu,zaman türündeki bir değeri giriş olarak zaman değişkenine atmaktadır.
public void run() : Fonksiyon başlığından belli olduğu gibi run() metodu threadimizi çalıştırdığımız fonksiyondur.Bu fonksiyonun içine biz hangi kodları yazarsak threadimiz ona göre çalışacaktır.Biz basit anlamda threadlerin rahat anlaşılması için ekrana çıktı veren fonksiyonları yazdık.
Thread.sleep() : Sleep metoduyla giriş değeri olarak "zaman" değişkeninden aldığımız değeri milisaniye cinsinden aktarır.Alınan değer oluşturduğumuz thread i uykuya geçirir.Örneğin Thread.sleep(1000) demek, 1000 milisaniye boyunca thread uykuya geçecek demektir.


public class anaFonksiyon{
public static void main(String[] args){
Thread t1 = new Thread(new Deneme("Bir"));
Thread t2 = new Thread(new Deneme("İki"));
Thread t3 = new Thread(new Deneme("Üç"));
t1.start();
t2.start();
t3.start();
}

}

Main kodumuzda Olay.java oluşturduğumuz sınıfları tek tek çağırıyoruz. 

Konsol ekranımız Şöyle olur:

İki uyudu 5 ms 
Üç uyudu 4 ms 
Bir uyudu 8 ms 
Üç tamamlandı
İki tamamlandı
Bir tamamlandı

Gördüğümüz gibi "Bir" 8 ms boyunca durdurulduktan sonra tamamlanmıştır.Aynı şekilde "İki" 5 ms, "Üç" 4 ms boyunca.En kısa "Üç" uyuduğu için "Üç" işini en erken sonlandırmıştır.Ondan sonra "İki" ve en son "Bir" işini sonlandırmıştır