My Profile Photo

Mehmet Cem Yücel


En yalın haliyle paylaşım platformu
Java Cloud Mikroservis Spring Boot NoSQL Kafka Dağıtık Sistemler Big Data ve Blockchain hakkında karalamalarım


  1. Simetrik Şifreleme ve Blockchain

    https://cdn-images-1.medium.com/max/150/1*kQJWhkNIuQ-kWnV1LGUm6w.jpeg

    Bir şifreleme algoritması ortaya konduğunda whitepaperlarında matematiksel olarak ne kadar hızlı şekilde anahtar aracılığıyla şifrelenebilip şifresinin geri açılabildiğinin yanı sıra şifrenin kırılabilmesinin zorluğu da matematiksel fonksiyonlarla ifade edilir. Çünkü şifrelemede temel amaç hashlemenin tersine verinin eski haline döndürülebilmesidir. Simetrik ve asimetrik anahtarlama konuları oldukça matematiksel konular olmakla beraber biz bu derinliğe inmeyeceğiz. Konunun daha çok blockchain yaklaşımlarında nerelerde hangi amaçlarla kullanıldığı konularına değinmeye çalışacağız. Farklı blockchain örneklerinde farklı algoritmalar tercih edilse de tüm örneklerde temel amacın ağın güvenliğinin sağlanması olduğunu söyleyebiliriz. …


  2. Blockchain as a Service-BaaS

    https://cdn-images-1.medium.com/max/150/1*CZ8sloO2sJRL8hbgI992fQ.png

    Blockchain kavramı Bitcoin ile birlikte dünyanın gündeminde yerini bulsa da aslında Distributed Ledger kavramı uzunca bir süredir akademik çevrelerde de konuşulan bir konu. Crypto currency konusu ilgileri şu anda üzerinde tutuyor ancak asıl değerli konu büyümekte olan blockchain ekosistemi herhangi bir değer algısının dağıtık olarak saklanabileceği konusunda hemfikir olunması. Bu da blockchaini gelecek günlerde çok farklı örnek uygulamalarla … …


  3. Bitcoin Futures ile Bitcoin 2.0

    https://cdn-images-1.medium.com/max/150/1*nd56s97FhQYI_5l4uJYb1A.jpeg

    Blockchain dünyası ve bu dünyadaki örnekler çok hızlı değişiyor.Buradaki yazımızda Blockchain 1.0 olarak tanımladığımız currency aktarımı sağlayan Bitcoin’e CME Group BTC borsasında yeni bir özellik hayata geçti. Aslında hayata geçen bir smart contract örneğinin chainin kendi döngüsü dışında hayata geçirilmiş versiyonu da denebilir, bu özellik gelecek bir tarihte belirlenen bir tutardan Bitcoin alım ve satım yapma anlaşmasını yapabilmeye olanak sağlıyor. …


  4. Asimetrik Şifreleme ve Blockchain

    https://cdn-images-1.medium.com/max/150/1*pUyqVMAKs2GknumbLB9K7w.jpeg

    Simetrik Şifremele (Symmetric Encryption) konusuna burada değinmiştik. Bugün ise konunun devamı niteliğinde asimetrik şifreleme algoritmaları ve örnek bir blockchain kurgusu üzerindeki kullanım noktaları ve amaçlarını ortaya koymaya çalışacağız. ### Asimetrik Anahtarlar Simetrik şifrelemenin aksine asimetrik şifrelemede 2 farklı anahtar vardır ki zaten adını da buradan almıştır. Bu anahtarlar public yani herkese açık ve private yani sadece kişiye özel olmak üzere isimlendirilirler. Public anahtarlar networkteki (tüm katılımcıların oluşturduğu ağ) herkese dağıtılırlar, ancak private anahtarlar sadece ve sadece kişinin kendisi tarafından bilinmelidir. Asimetrik şifreleme 2 farklı şekilde kullanılırlar: …


  5. Unspent Transaction Output UTXO

    https://cdn-images-1.medium.com/max/150/1*xFpHRPhxSWbQZoLTxRk8og.png

    Birçok blockchain örneğinin temelinde yatan bir konuyla yazı dizisine devam ediyoruz. Bugünün konusu Unspent Transaction Output (UTXO). “Ödenmemiş İşlem Çıktısı” diye çevirmek tam içime sinmese de yine en iyi çeviri bu olur sanırım. …


  6. Blockchain Evrimi ve Blockchain 3.0

    https://cdn-images-1.medium.com/max/150/1*ITEGfqVQIwkwrYALodhjIA.jpeg

    Aslında bu konu Web 1.0’a kadar dayanıyor. Kullanıcıların statik web sitelerinden ihtiyacı olan bilgileri alıp gittiği, kullanıcı etkileşiminin hiç olmadığı zamanlardan şu anda Web 3.0 ile kullanıcıya özel deneyimin ve etkileşimin sağlandığı dönemdeyiz. Nasıl mı, bir alışveriş sitesinde bir ürünü incelediğinizde 1 hafta boyunca bütün sitelerde o ürünün reklamlarını görüyorsanız siz de o kervanın bir yolcusu oldunuz demektir. …


  7. Bitcoin, Blockchain, Distributed Ledger Technology

    https://cdn-images-1.medium.com/max/150/1*JBV7VVSxXvoZ97b0-FAMFA.png

    Bitcoin uzun sayılabilecek bir süredir hayatımızda. Ancak son birkaç aydır yaşanan gelişmelerle birlikte artık sokakta yürürken 7den 70e birçok kişiden duyabileceğimiz bir konu haline geldi. O kadar ki duyduğumuz bazı hikayeler şehir efsanelerine varacak seviyelere ulaştı. …


  8. DMA Direct Access Memory Nedir

    DMA( Direct Access Memory), bellek ile diğer aygıtlar arasındaki veri iletişimi için kullanılan bir yapıdır. Avantajı, bu veri iletişimini sağlarken merkezi işlem birimini kısmen devre dışı bırakarak veri akışını hızlandırmak ve merkezi işlem birimini daha az meşgul etmektir. Böylece merkezi işlem birimi veri akışında temel unsur olmaktan çıkıp diğer süreçlere fırsat tanıyabilecek, öbür taraftan veri akışı da daha kısa bir yol dolaşmış olacağından dolayı hızlanmış olacaktır. Bir örnekle açıklamak gerekirse, örneğin oyun oynarken bilgisayarımız görüntü aygıtlarını donanımsal olarak kullanacaktır. Oyun çalışma zamanında bellekten çalışacak ve görüntülerin ekranda oluşması için sürekli ekran kartıyla iletişim içerisinde olması gerekecektir. Böyle bir durumda bellek ile ekran kartı arasında veri paylaşımı, sürekli giden ve gelen paketler sistemi yoracaktır. Bellek bir veriye ihtiyacı olduğu anda merkezi işlem birimi aracılığıyla bunu ekran kartına iletmeli, ekran kartımız da cevabını aynı yolla belleğe göndermelidir. Bu durumda merkezi işlem biriminin fazlasıyla meşgul olacağı aşikârdır. Meşgul olan merkezi işlem birimi diğer süreçlere fırsat tanıyamayacağı için süreçler beklemede kalacak, bu işlerin gecikmesine ve sistemin şişmesine sebep olacaktır. Tabii ki bu da istenen bir durum değildir. İşte bu durumu engellemek için DMA yaklaşımı öne sürülmüştür. Bu yaklaşımda temel amaç veri transferi sırasında merkezi işlem birimini aradan çıkartmaktır. Normal bir veri akışında veride hiçbir işlem yapılmayacak olsa bile merkezi işlem birimine uğrayan veriler bu yaklaşımda doğrudan bellek ile aygıt arasında kurulan bir yolda ilerleyeceklerdir. Peki, bu yoldan merkezi işlem biriminin haberi olmayacak mı? İşlemin gerçekleşişi şöyledir; -Bellekten veya belleğe veri transferi isteği doğar. -Bu transfer isteği veri akış bilgileriyle birlikte(veri uzunluğu, nereden nereye gittiği, hangi hızda transfer edileceği gibi) merkezi işlem birimine iletilir. -Merkezi işlem birimi aldığı istek ve isteğin verileri doğrultusunda DMA’ya veri akışının başlatılması için emir verir. -Veri akışı bittiğinde akışı sonlandıran aygıt merkezi işlem birimine bir kesme ile bunu haber verir. -Merkezi işlem birimi bu kesme doğrultusunda DMA’yı ya sonlandırır ya da ona başka bir işlem emri verir. Yukarıda da görüldüğü gibi merkezi işlem birimi DMA’yı yarattıktan sonra başka süreçlerle ilgilenebilmiş, böylece sistem işleyişine devam edebilmiştir. Bilgisayarlarımızda 8 adet DMA kanalı bulunmaktadır. İlk 4ü 8 bitlik, diğer 16 bitlik veriyi taşıyabilmektedir. Merkezi işlem birimi aynı anda birden fazla DMA yaratamaz çünkü böyle bir durumda verilerin transfer edileceği adreslerde çakışmalar olacaktır. Bu sebeple DMA’yı kullanacak olan işlemler birbirlerini beklemek zorundadır. …


  9. Eclipse Formatter On Off

    Eclipse’in formatter özelliği developerlar için tartışmasız bir nimet. O kadar ki kodlama yaparken iki satır kod yazdıktan sonraki ilk refleksim CTRL+A CTRL+Shift+F CTRL+S . Yani tüm kodu seç, formatla ve kaydet. Window > Preferences > Java > Code Style > Formatter altında yer alan menüden farklı formatlama profilleri yaratabilirsiniz, güncelleyebilirsiniz. Formatter her ne kadar kullanışlı bir araç olsa da kimi zaman kodumuzun bazı parçalarının formatlanMAmasını isteriz. Özellikle de DAO’lar içerisinde yer alan SQL stringleri formatlandığında SQL’in kendi formatına değil, Eclipse’in diğer kodlarımız için oluşturduğu her satır için atanan karakter adedine göre formatladığı için SQL’i okumak söz konusu olduğunda çileden çıkaran bir durumla karşılaşabiliyoruz. En basitinden bir örnek verelim; …


  10. JVM Memory Usage OutOfMemoryError

    Önce bazı temel bilgiler :) Java programlarını çalıştırırken JVM kendisine belirli bir miktar bellek alokasyonu yapar. Bir java programını çalıştırırken JVM’e …