20 Temmuz 2014 Pazar

Multitasking ve Multithreading



Baktım da bu konu hakkında açıklayıcı ve anlaşılabilir yazı bulmak pek de kolay değil. Önceki bilgilerimi de katarak ufak bir araştırma yaptım ve bu yazıyı hazırladım.

Multitasking: Birden fazla işlemi(process) aynı anda yapabilmektir. Multitasking bir ihtiyaç olarak doğmuş. Çünkü bilgisayarda birden fazla programı çalıştıramamak kadar kötü ne olabilir? Yani webde gezinirken Visual Studio'yu açmak için illa internet tarayıcısını kapatmamız mı gerekir? Multitaskingden öncesinde evet kapatmamız şarttı ama multitaskinden sonra hayır. Programcılar bunu görüp işletim sistemlerini buna göre dizayn ettiler. Genel olarak birden fazla çekirdeğe sahip olan işlemciler veya birden fazla işlemciye sahip sistemlerde görülür. Peki tek çekirdekli işlemciler? Onlarda nasıl hem müzik dinleyip hem de webde gezinebiliyoruz? Bunu sağlayanda işletim sistemi. İşletim sistemi her bir işleme işlenmesi için bellir bir süre tanıyor sonra başka bir işleme süre tanıyor. Bu süre o kadar hızlıdır ki kullanıcı tarafından algılanamıyor, bir nevi sihirbazlık gibi. Kullanıcı aslında her şeyin aynı anda olduğunu zannediyor fakat aslında her zaman tek bir işlem çalışıyor. Yani aslında bilgisayar biraz müzik çalıp işlemi duraklatıyor sonra webde geziniyor sonra işlemi tekrar duraklatıp tekrar müzik çalıyor ve böylece sürüp gidiyor.  Mesela siz bu yazıyı okurken arkada Windows güncellemeleri kontrol ediyor, belki bir virüs sizin verilerinizi çalıyor.


Çok çekirdekli işlemcilerde ise gerçek anlamda multi tasking görülür. Herbir çekirdek birer mikro işlemci gibi davranır ve herbir işlem (çekirdek sayısı kadar) aynı zamanda işlenebilir. (Bir nevi çoklu işlemci gibi aslında ama çoklu işlemciye göre çekirdekler birbiriyle daha hızlı etkileşebilme avantajı var ama aynı veriyolunu kullanacağından performans düşüyor.)



Multithreading:  Thread; kelime anlamı olarak ipliktir, nasıl iplikleri birleştirince kıyafet oluşuyorsa threadleri birleştirince işlem(process) oluşur. Multithread da multitasking gibi ihtiyaçtan doğmuştur. İşletim sistemi işlemler arası geçiş yapabiliyor fakat ya bir işlem de farklı iki işi aynı anda yapmaya kalkarsa? İşte bu olunca programlarda hatalar oluşur. Bunun önüne geçmek için işlemler threadlere ayrılıyor. Örneğin oyun oynuyorsunuz ve oynamaya devam ederken oyun otomatik olarak sizin olduğunuz yeri kaydedecek. Bunun için oyun programlanırken kaydetme işi için ayrı bir thread oluşturulur böylece işlemler paralel olarak işletilebilir. 



Özetleyecek olursak multitasking birden fazla işlemin aynı anda işlenmesi, multithreading ise bir işlemdeki birden fazla iş parçacığının aynı anda işlenmesidir.


14 Temmuz 2014 Pazartesi

Butondan Yeni Bir Aktivite Oluşturmak



 Diyelim ki bir butona tıklayıp yeni bir aktivite oluşturmak istiyoruz. O zaman yapacağımız şeyler şöyle olmalı;

Öncelikle yeni bir sınıf oluşturuyoruz. Daha sonra sınıfımıza gerekli kodları yazıyoruz.



Sonra sınıfımızı manifest dosyasına activity olarak tanıtmamız lazım.

 Daha sonra ana aktivitemizin xml dosyasında tıklanınca yeni aktivite oluşturacak butonu tasarlıyoruz ve kaynak dosyasında kod olarak yazıyoruz.

 Bunu yazınca hata vermesi lazım çünkü parametre olarak ana sınıfın bir örneğini yolluyoruz ama ana sınıf bir OnClickListener sınıfı değil o yüzden ana sınıfta bu arayüzü implement ediyoruz.


 Implement ettikten sonra bizden override etmemiz gereken metodu veriyor. Biz de şu şekilde override ediyoruz;


 Hepsi bu kadar.


8 Temmuz 2014 Salı

Jar Dosyasına İçerik Ekleme


Bu yazımda jar dosyasına içerik eklemeden bahsedeceğim. Önceleri belli bir konumda bulunan içerikleri jar dosyama ekleyebiliyordum veya direk jar dosyasının yanına koyuyordum ama her dosyayı böyle taşımak zor oluyordu. Daha sonra araştırınca direk jar dosyasına gömebilmeyi öğrendim. Şu şekilde içeriklerimizi jar dosyasına gömebiliyoruz;

Öncelikle dosyalarımız için kaynak klasörü oluşturmalıyız. Resimler için ayrı ses dosyaları için ayrı dosyalar oluşturabiliriz. Ben bu örneğimde sadece resim dosyaları kullanacağım için bir tane klasör oluşturacağım. Bu açıklamalardan sonra gelelim nasıl yapılacağına;

İlk olarak projemize sağ tıklayarak yeni bir kaynak klasörü (source folder) oluşturuyoruz


 


Daha sonra klasör oluşturma penceresi çıkacak;


Ben images isimi verdim. Siz herhangi bir ad verebilirsiniz. Daha sonra finish butonuna tıklayalım.

Klasörümüz geldi. Şimdi resimlerimizi sürükleyerek images klasörünün üstüne getiriyoruz.


Böyle bir pencere geliyor bir şeyi değiştirmeden tamam diyoruz ve dosyalarımız eklenmiş oluyor. Artık sıra geldi dosyaları nasıl kullanacağımıza.

Resimlerimizi direkt olarak kullanamıyoruz. Kullanmak için ClassLoader objesine ihtiyacımız var.  


Buradan sonra istediğiniz yerde direkt image/icon vs.  obje adı vererek kullanabilirsiniz.

3 Temmuz 2014 Perşembe

Gözleriniz Artık Yorulmasın



    Uzun zamandır kullandığım bir uygulamayı tanıtmak istiyorum, özellikle de sahura kadar bilgisayar başında kaldığımız ramazan günlerinde hepimize iyi gelecek.

    Uzun süre bilgisayar karşısında oturunca gözlerimiz ağrıyor özellikle de geceleri çok yoruyor gözlerimizi. Hatta uyku düzenimiz bile şaşıyor, fazladan uyumak istiyoruz çok yorulmuşuz gibi. Bilim insanları araştırıp nedeninin mavi ışık olduğunu bulmuşlar. Mavi ışık gözü rahatsız edip uyumayı zorlaştırıyormuş.(İlgili kaynağa buradan ulaşabilirsiniz)

   Burada imdada f.lux yetişiyor. Uygulama ekranın renk sıcaklığını ayarlayarak mavi rengi azaltıyor ve ekran daha sarımsı-turuncumsu bir hâl alıyor.  

   Kendi sitelerindeki açıklama şöyle;
Geceleri cep telefonu ile mesaj yazan kişilerin yüzlerindeki hafif ürkütücü mavimsi parlaklığı fark ettiniz mi?
Ya da sabah kalktığınızda aklınıza gelen parlak fikri yazmak için bilgisayarınızı açtığınızda ekranınızdan dolayı rahatsız olduğunuz mu?
Gün içerisinde bilgisayarınızın ekranı iyi görünür. Çünkü ekranlar “güneş gibi” görülebilmesi için tasarlanmıştır. Ancak geceleri ise “güneş gibi” görünen bir şeye bakmamalısınız.                                                                                                          
 Peki renk sıcaklığı nedir?
      Fazla detaya inmeden açıklayacak olursak; renk sıcaklığı, kaynağına yakın bir renk tonu üreten    kara cismin sıcaklığıdır ve birimi Kelvindir.



  Daha fazla bilgi için buraya bakabilirsiniz. Ya da Türkçe kaynak için buraya bakabilirsiniz.

 F.lux öncesinde;




  F.lux sonrasında;

 


    Bana kalırsa uygulama çok iyi. Özellikle lens kullananlar kullanırsa aradaki farkı daha iyi anlar. Geceleri ekrana bakmak artık o kadar yormuyor ve zorlamıyor beni.


Programın sitesi: https://justgetflux.com/