Articles

Kotlin and Spring Framework Tutorial

Recently I published a tutorial about the upcoming release of the popular Spring Frameworks. You can read the post here. I am very excited about the next release of Spring and the next release of Java. Past few days, I have been experimenting with the Kotlin language. I think it is a very well designed language and incredibly easy to adopt. First, we heard Google chose Kotlin as a first class citizen to the Android...

Continue Reading

10 Easy Ways to Become a Better Software Developer

1. Start Coding First thing is first. To get better, you need to fail often and early. To fail, you need to get your hands dirty. If you think that you are still incompetent, begin writing code now. The brain is just like your muscles. You want to get bigger muscles; you must work out. It’s that simple. As you code more, you will gain experience in abstract thinking, problem-solving, and debugging skills. You will...

Continue Reading

A Reactive To-Do Application with Spring Boot 2

Spring MVC is one of my favorite web frameworks. Next major release of the popular web framework brings some interesting features. Along with Spring MVC, Spring Web Flux is coming later this year and it is coming here to stay. Spring Web Flux will help us to build high throughput functional reactive microservices. What is reactive programming? Reactive programming is programming with asynchronous streams [1]. The magic two words here are asynchronous and stream. In...

Continue Reading

How to create a dynamic DNS server using CloudFlare

Some of us use dynamic IPs at home and want to serve a web server, a security cam or a VPN server at home. IP addresses keep changing on connection resets or power cuts. This is a big problem and we should update DNS records according to the changes. I personally use CloudFlare DNS services for almost anything related to my servers and I want the CF to keep protecting my home servers as well....

Continue Reading

How to recover files from a corrupted SD Card or USB device.

In this post, I am going to show you how to use OS X command line to recover corrupted jpg files from an SD card or a USB disk. Flash storage devices might be cheap. But they are not known for their reliability. Sometimes their file systems get corrupted. There is a jungle of small and paid recovery software across the internet. The problem is, I never trust them, I am never going to buy...

Continue Reading

Clojure'da Veri Yapıları

Bilgisayar bilimlerinin temel yapı taşlarından biri olan veri yapılarından bahsetmek istiyorum. Tanım olarak veri yapısı verilerin bilgisayarlar tarafından etkili bir şekilde kullanılanılabilmeleri için belirli yollarda saklanması anlamına gelir. Önceki yazımda veri yapılarına temel teşkil eden bazı basit veri türlerinden bahsetmiştim. Bu yazımda ise Clojure dilinde önceden tanımlanmış olan veri yapılarını tanıyor olacağız. Bu yazıyı okumadan önce serinin diğer yazılarından faydalanmak isteyebilirsiniz: Clojure ile JVM ve Lisp dünyasına ‘Merhaba Dünya’ Clojure’da Basit Veri Türleri Daha önce...

Continue Reading

JavaScript ile Lambda Calculus

Genelde blog yazılarımı yeni başlayanlara uygun olarak yazarım. Bu sefer bir değişiklik yapıp biraz bilgisayar bilimlerinin temellerine inmek ve bunu da JavaScript ile yapmak istiyorum. Daha önce Ruby ve Clojure ile Lambda Calculus implementasyonu yaptım ama JavaScript ile daha zevkli olacaktır. JavaScript ile fonksiyonel programlamanın nimetlerinden faydalanabiliriz. Özellikle high-order fonksiyonları ve closure‘lar ile fonksiyonel programlama konseptlerine uyumluluğu, deney yapmak için güzel bir araç haline getiriyor. Yazının bitiminde Lambda Calculus ile basit bir özyinelemeli(recursive) faktoriyel yazmış...

Continue Reading

JavaScript ile String'den <a> Etiketi Üretmek

JavaScript, string türünden nesneler için bir takım HTML yardımcıları içeriyor. MDN referanslarında gördüğümüz gibi çoğu fonksiyonun süresi geçmek üzere olarak işaretlenmiş. Ancak nedense ES6 öneri taslağında halen mevcutlar. Link yardımcısının bu fonksiyonların en önemlisi olduğunu düşündüğün için link yardımcısı ile ilgili birkaç örnek göstermek istiyorum. Kullanılışı: str.link(url) Burada parametre olarak girilen url <a href=”“… href kısmı ve string’in kendisi ise linkin yazı kısmı olacak. Daha iyi anlamak için örnek vermek gerekirse: "Google".link("http://www.google.com"); Döndüreceği Değer: <a...

Continue Reading

Git ile Panik Yönetimi

Uygulama geliştirirken bazen işler istediğimiz gibi gitmez ve bu durumda favori versiyon kontrol sistemine güveniriz. Yaptığımız değişiklikleri geri almamız ya da eski revizyonları kontrol etmemiz gerekebilir. Aklıma gelen muhtemel panik senaryoları ve kendimizi nasıl kurtarabileceğimize bakalım.. Başlangıç olarak: git init touch davet.md git add davet.md git commit -m "İlk commit" git log --oneline 8d123a1 İlk commit Şeklinde commit tarihimizi başlatalım. Yanlış dosyayı git add ile ekledim ne yapmalıyım? git add komutu yerel repomuzdaki değişiklikleri, sıradaki...

Continue Reading

Clojure'da Basit Veri Türleri

Clojure dilini anlamaya başlamak için öncelikle basit veri türlerini anlamaya başlamak gerek. Daha önce Clojure ile JVM ve Lisp dünyasına ‘Merhaba Dünya’ yazımda Leiningen isimli bir uygulamadan da bahsetmiştim. Şimdi bu yazımda leiningen yardımıyla Clojure ile JVM ve Lisp dünyalarına dalışa devam edeceğiz. Eğer o yazımı okumadıysanız buraya tıklayarak ulaşabilirsiniz. Clojure, bir LISP lehçesi olarak çekirdeği küçük tutulup makrolar ile genişletilmesi düşünülmüş bir dil olmasına rağmen, JVM tabanlı bir dil ve bu nedenle Java kütüphanelerine...

Continue Reading