Arama Sonuçları: 'Basit'

setTimeout vs. setInterval (JavaScript)

Web uygulamalarında istemci tarafında sıkça kullanılan işlemlerden biri ardışık fonksiyon çağırma işlemidir. İstemci tarafında bir alanı sürekli güncellemek, dinlemek veya sunucu tarafına periyodik olarak istek gönderip cevap almak vb. gibi işlemler örnek teşkil edebilir. Bu özelliği sağlamak için ise JavaScript tarafında 2 fonksiyon mevcuttur.

  • setInterval:

setInterval(function, milliseconds) şeklinde bir imzası vardır. Aşağıdaki gibi fonksiyonu inline tanımlayarak örnekledim.

    var setIntervalId = setInterval(function sampleFunc() {
        var r = confirm('Save?');
        if (r) {
           $("form").submit();        
        }    
    }, 30 * 1000);

Yukarıdaki örnek, 30 saniyede bir kullanıcıdan onay alarak formu sunucuya iletmektedir. İçerisindeki fonksiyonun tamamlanmasını beklemeden 30 saniyede bir sürekli bu işlemi tetikleyecektir. setInterval fonksiyonu bir id dönmektedir. bu id değerini kullanarak scriptinizin başka bir bölmesinde clearInterval(id) fonksiyonunu çağırarak bu tekrarlama işlemini sonlandırabilirsiniz. Yukarıdaki örnek için clearInterval(setIntervalId) şeklinde bir çağırım yaptığımız anda tekrarlama işlemi son bulacaktır.
devamı için tıklayınız...


Veri Yapıları - Bağlı Liste (LinkedList)

Bağlı listeler, dizilerden farklı olarak limitsiz eleman saklamaya yarar. Bağlı listenin başlıca temel özelliklerini aşağıdaki ara yüzde olduğu gibi liste sonuna eleman eklemek, herhangi bir sıradaki elemanı silmek, herhangi bir sıradaki elemanı okuyabilmek, herhangi bir indekse eleman eklemek olarak sayabiliriz. Aşağıdaki gibi bir ara yüzle belirttim:

    public interface ILinkedList<T>
    {
        void Add(T item);
        void Remove(int index);
        T Get(int index);
        void Insert(int index, T item);
        int GetCount();
    }

Bu ara yüzü aşağıdaki gibi Node sınıfını da kullanarak gerçekleştirdim.
devamı için tıklayınız...


Veri Yapıları - Yığın (Stack)

Veri yapılarındaki temel öğelerden biri de yığınlardır. Yığınları, tıpkı altı kapalı koliler gibi düşünebiliriz. İlk eklediğiniz nesneyi çıkarabilmek için daha sonra eklediğiniz nesnelerin hepsini önce çıkarmanız gerekir. Özetle, ilk giren son çıkar, son giren ilk çıkar. Yığın için gerçekleştirmemiz gereken ara yüz aşağıdaki gibidir.

    public interface IStack<T>
    {
        void Push(T value);
        T Pop();
    }

Bu arayüzü iki farklı şekilde gerçekleştirebildim.
devamı için tıklayınız...


Veri Yapıları - Kuyruk (Queue)

Veri yapılarının temel elementlerinden kuyruk (queue) elementini C# ile gerçekleştirmek istiyorum. Kuyruk, kuyruğa yeni bir eleman ekleme ve kuyruktan eleman çıkarma gibi 2 temel işleve sahip ve gerçek hayatta olduğu gibi kuyruğa ilk giren eleman ilk, son giren eleman son çıkmalı. Aşağıdaki gibi genel bir ara yüz (generic interface) yazıp gerçekleştirmeye çalıştım.

    public interface IQueue<T>
    {
        T Dequeue();
        void Enqueue(T value);
    }

Bu ara yüzü 2 farklı yaklaşımla gerçekleştirebiliriz:
devamı için tıklayınız...


MemoryStream Kullanarak Zip Dosyası Oluşturmak

Diskte yer almayan, diskten okuyamadığımız ya da çalışma sırasında üretilmiş doküman içeriklerini kullanarak sıkıştırılmış doküman oluşturma ihtiyacımız olduğunu varsayıyorum. .Net Core platformunda yer alan System.IO.Compression kütüphanesindeki klasik ZipArchive sınıfını kullanarak ikili veriden (binary data) aşağıdaki gibi bir metod yardımı ile sıkıştırılmış doküman verisi elde edebiliriz. Daha sonra bu veriyi diske yazdırarak diskte zip dokümanı elde edeceğiz.

/// <summary>
/// Compresses file binaries with names and returns zip file binary.
/// </summary>
/// <param name="files">File name and content</param>
/// <returns>Zip binary content</returns>
public static byte[] CompressFiles(Dictionary<string, byte[]> files)
{
  using (var zipArchiveMemoryStream = new MemoryStream())
  {
    using (var zipArchive = new ZipArchive(zipArchiveMemoryStream, ZipArchiveMode.Create, true))
    {
      foreach (var file in files)
      {
        var fileContent = file.Value;
        var fileName = file.Key;
        var zipArchiveEntry = zipArchive.CreateEntry(fileName);
        
        using (var zipArchiveEntryStream = zipArchiveEntry.Open())
        using (var binaryWriter = new BinaryWriter(zipArchiveEntryStream))
        {
          binaryWriter.Write(fileContent);
        }
      }
    }
    
    return zipArchiveMemoryStream.ToArray();
  }
}

Metot basitçe aşağıdaki gibi kullanılabilir. Çalışma zamanı (runtime) esnasında rastgele txt doküman içerikleri oluşturarak ziplenecek dosyalara ekledim.
devamı için tıklayınız...


Statik Sınıf Nedir? Ne için Kullanılır?

Statik sınıflar, kabaca tüm elemanları statik olan ama kendisi statik olmayan sınıflara denktir. Eğer tüm üyeleri statik olan bir sınıf tanımlamışsak, o sınıfın da statik tanımlanması önünde herhangi bir engel yoktur. 

Statik sınıfları normal sınıflarla aşağıdaki gibi kıyaslayabiliriz:

Statik sınıf
Statik olmayan sınıf
  • Sadece statik üyeler içerebilir.
  • Nesne örneği (instance) oluşturulamaz. Abstract sınıf özelliği gösterir.
  • Miras alınamaz. Sealed sınıf özelliği gösterir.
  • Statik olmayan yapıcı (constructor) bulunduramaz.
  • Statik ve statik olmayan üyeleri bir arada barındırabilir.
  • Nesne örnekleri oluşturulabilir.
  • Miras alınabilir.
  • Statik ve statik olmayan yapıcı bulundurabilir.


devamı için tıklayınız...


Nesne Yönelimli Programlama Nedir?

Yazılım için oluşturulan sanal yapının gerçek hayatla kolay ilişkilendirilebilmesi için C, SQL, Cobol gibi prosedürel dillere alternatif olarak C++, Java, C# gibi nesne yönelimli programlama amacı taşıyan diller ortaya çıkmıştır. Bu diller ile birlikte, yazılımcılar gerçek dünyadaki nesneleri yazılım dünyasına kolaylıkla yerleştirebilecek, geliştirmeden ziyade tasarıma odaklanacaktır.

En iyi kod hiç yazılmamış koddur felsefesine de hizmet eden nesne yönelimli programlama dilleri, prosedürel dillere kıyasla aynı işi daha az kod satır sayısı ile yapabilmektedir. Bununla birlikte sürdürülebilirlik, taşınabilirlik, kullanılabilirlik vb. gibi nitelikleri konu alan yazılım tasarım kalitesi gibi bir alanı da ortaya çıkarmıştır. Nesne yönelimli diller ile yazılan yazılımlar tasarım kalite unsurları açısından da sınanmakta ve birbirleri ile kıyaslanmaktadır.
devamı için tıklayınız...


00:00:00
Saturday 15 Jan 2017
Altın Sözler
“Cahillik hiç ayıplanacak bir şey değildir hatta cahil tutarlıdır kendi içinde. Kötü olan yarı cahillerdir.”
Web hosting by Somee.com