Articles

An ultimate guide on how to ask questions in Slack

Slack has become the number 1 tool for workplace communications. It is very rich in features, super easy to use and we can reach any teammate directly. But all the goodness comes with a cost. That cost is all the distractions we receive during the day. Sometimes we fail on finishing very simple tasks due to the mentions and direct messages we receive all day. It does not have to be in that way. We...

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

Ruby ve Shell ile kolay yoldan web server

Ruby ve Python gibi betik dilleri hayatımızı kolaylaştıran çok önemli yardımcılarımız. Özellikle Ruby dili mutluluğumuzu daim eden sevdiceğimiz. Şimdi size Ruby dili ve küçük bir shell komutu yardımıyla 1 saniyeden kısa sürede aktif olan yerel bir web sunucusu nasıl yapılır onu gösteriyorum. Tabiki bunu yapabilmek için Linux, BSD ya da OS X gibi *nix tabanlı bir işletim sistemi kullanmalısınız. # Komut satırından bu kodu girdiğimizde bize hangi shell programını kullandığımızı söyleyecek echo $SHELL # Bendeki...

Continue Reading