Postgresql'de kullanıcı yönetimi

Bu yazıda Postgresql için, aklımızda mutlaka yer edinmesi gereken kullanıcı yönetim işlemlerini derledim. Kullanıcı oluşturmak Superuser kullanıcısı oluşturmak Superuser kullanıcıları Postgresql’de (bundan sonra Postgres diyeceğim), tüm yetkilere sahip kullanıcılardır. İlk metodda bunu Postgres ile birlikte gelen createuser programını kullanarak yapacağız. Bu program (veya komut da denebilir) Postgres için kullanıcılar açmak için kullanılmaktadır. Bence ismi fazla jenerik olduğu için Linux’taki adduser ile karıştırılabilmesi muhtemeldir. sudo -u postgres /bin/bash createuser --superuser --login --pwprompt dual Program hakkında daha fazla bilgi edinmek için man createuser komutunu kullanabilirsiniz....

10 Eylül 2022

Basit bir FastCGI uygulaması yapalım

Bu yazıda, C dilini kullanarak basit bir FastCGI web uygulaması yapacağız. Uygulamamız FastCGI kütüphanesini kullanarak, açtığımız socket üzerinden nginx web sunucusu ile haberleşerek çalışacak. FastCGI, CGI protokolündeki bazı eksikliklerden yola çıkılarak geliştirilmiş, açık standartlı bir CGI alternatifidir. Bu protokol, web sunucuları ile bilgisayar programları arasında bağlantı kurulabilmesi için tasarlanmıştır. Web sunucuları, bu protokol üzerinden programlara; istek methodu, istek adresi, sorgu parametreleri ve kullanıcı IP’si başta olmak üzere pek çok veriyi aktarabilirken, programlar da web sunucularına dönülecek yanıtları aktarmaktadır....

6 Haziran 2022

OpenSearch kurulumu

Bu yazıda OpenSearch’ten ve onun kurulumundan, ayrıca Elasticsearch ile arasındaki bağlantıdan söz edeceğim. Kullanımı hakkında daha fazla bilgi için Elasticsearch ile ilgili yazdığım bu yazıya göz atabilirsiniz. Öncelikle Elasticsearch neydi; kayıtların yüksek performanslı olarak aranabilmesini sağlayan NoSQL bir veritabanıydı. Elasticsearch, ücretsiz olmasının yanı sıra ücretli commercial çözümler de sunan bir şirkettir aynı zamanda ve şirketin ticari amaçlı olarak hizmet verdiğini de unutmamak gerekir. Elasticsearch tek başına ücretsiz de olsa, barındırdığı birçok plugin ve kendisine entegre edilebilecek diğer yazılımlar için lisans ücreti ödenmesi gerekmektedir....

11 Kasım 2021 · Son güncellenme: 30 Ocak 2023

Redis ile queue sistemi yapımı

Bu makalede Redis kullanarak first-in first-out (FIFO) mantığıyla çalışan, basit bir queue sistemi yapacağız. Queue sistemini sıralı olarak yapılmasını istediğimiz görevler için kullanırız. Bir görevi kuyruğa dahil ettikten sonra sırası geldiğinde kesin olarak çalışmasını bekleriz. Mesela uzun sürecek görevlerin mevcut yazılımın kontrol akışını bloke etmeden yapılabilmesini istiyorsak queue sistemini kesinlikle kullanmamız gerekir. Redis, queue sistemi için biçilmiş bir kaftandır. Bunun performans ve işlem yetenekleri konusundaki becerilerinden faydalanacağız. Queue sistemi basittir; ilk önce kuyruğa yapılması için yeni bir görev eklenir, daha sonra kuyruktan sırası gelen bir görev tamamlanır ve sıradaki göreve geçilir....

21 Eylül 2021

NFS (dosya sistemi) kurulumu

NFS yani Network File System, uzaktaki bir bilgisayara ait dosya sistemini kendi bilgisayarımızda mount edebilmemizi sağlayan bir standarttır. Bu yazıda, Ubuntu tabanlı bir sunucuya NFS sunucusu kuracağız ve birkaç farklı işletim sistemine sahip kişisel bilgisayarlardan bu dosya sistemine erişeceğiz. NFS bize neler vadeder? Merkezi bir depolama sistemi oluşturmak için standart bir çözüm sunar. Client’lar, uzaktaki dosya sistemine local’deki bir dosya sistemi gibi erişebilir. Client’ların hangi dosya sistemine sahip olduğu önemli değildir....

10 Eylül 2021

Golang ile .NET Core karşılaştırması

Bu makalede bu iki dilin performans karşılaştırmasını yaptım. Golang benim halihazırda kullandığım favori dilimdi; kendisiyle pek çok kez API servisi yazdım. .NET Core ise Golang ile performans karşılaştırması yapmak için kullandığım bir framework. Golang, malum çıktığı dönemde çok popüler olmuş ve ben dahil pek çok kişinin yeni oyuncağı olmuştu. Golang şu anda Docker, Kubernetes, Mattermost ve Minio gibi pek çok büyük projede kullanılmakta. Diğer yandan .NET Core ise 2016 yılında Microsoft tarafından açık kaynak olarak yayınlanmıştı....

25 Ağustos 2021

Oturum yönetimi yöntemleri

Oturum yönetimi veya session management; tasarladığınız bir uygulamadaki kullanıcıları yetkilendirmek istediğinizde mutlaka uygulamamız gereken bir sistemdir. Oturum yönetimi için birçok farklı yöntem mevcuttur ve uygulamamız için en uygununu seçmek istiyorsak acaba hangisini seçmeliyiz? Her bir kullanıcıya özel servis sunulabilmesi için, her kullanıcının kendisine özel bir kimliği olmalıdır. Bunu genelde kullanıcı adı/şifre, e-posta/şifre, veya üçüncü bir servis tarafından sağlanan benzersiz bir ID ile yapıyoruz. Her bir kullanıcıya özel sunulan servislere ise “oturum” veya “session” ismini veriyoruz....

8 Ağustos 2021

Modemin WAN şifresini bulmak

Bazı internet servis sağlayıcıları (ISP), dağıttığı router’ların dışında başka bir router kullanılmaması için PPPoE şifresini veya yaygın olarak bilinen diğer adıyla WAN şifresini kullanıcılarından gizleyebiliyor. Hizmet aldığım bir ISP, router’ın admin arayüzünde ONT cihazı ile yetkilendirme için gerekli olan PPPoE şifresini kullanıcılardan gizlemekte. Bu sebeple şifresini bilmeden farklı bir router kullanmak mümkün olmuyor. Bir gün farklı bir modem kullanmak durumunda kalınca PPPoE şifresini öğrenmek zorunda kaldım. Fakat nasıl yapıldığını göstermeden önce neyin ne olduğunu anlatmak istiyorum....

24 Haziran 2021

Android emülatörünü mitmproxy ile çalıştırmak

mitmproxy, HTTP bağlantılarını debug etmek için kullanılan bir çeşit açık kaynak araçtır. Bu araç bize, debug edilecek bağlantının arasına sokabileceğimiz bir proxy oluşturur ve proxy ettiği bağlantıya ait HTTP isteklerini bize sunar. Bu yazıda bir Android emülatörü ile mitmproxy’i nasıl birlikte kullanabileceğimizi göstereceğim. Buradan önce mitmproxy’nin son sürümünü indiriyoruz. Linux ve macOS için binary’lerini indirelim ve uygun bir yere çıkartalım. sudo tar -xzf mitmproxy-x.x.x-xxxxxx.tar.gz -C /usr/local/bin Konsoldan mitmweb -p 8080 komutunu gönderdiğiniz zaman 8080 portunda bir proxy servisi başlatılacaktır....

23 Nisan 2021

Yemeksepeti'ne yapılan siber saldırı

Yemeksepeti’ne yapılan saldırıdan 27 Mart günü haberim oldu. Yaklaşık 21.5 milyon kişinin ad-soyad, doğum tarihi, telefon numarası, adres bilgileri, e-posta ve şifreler artık olmaması gereken bir yerlerde! Yemeksepeti’nin açıklamasına göre saldırı 18 Mart 2021 tarihinde, yetkisiz kişiler tarafından sunucularından veri çalınması şeklinde gerçekleşmiş. Bu veriler arasında ad-soyad, doğum tarihi, telefon numarası, adres bilgileri, e-posta ve şifreler bulunuyormuş. Daha önce Anonymous’un yayınladığı 46.8 milyon kişinin bilgileri yanında bu, çok daha güncel bilgiler içeriyor ve TC kimlik olmasa da telefon numarası içeriyor....

12 Nisan 2021

Kodumun kalitesini nasıl buluyorum?

Bu soruyu hiç kendinize sordunuz mu? Yazdığınız kodun kalitesinden memnun kalmadığınız oldu mu? Ben bu soruyu kendime defalarca sordum. Kodun okunabilirliği ve belirli standartlara bağlı kalınması kodun kalitesini arttıran en önemli faktörlerden birisidir. Eğer kodunuz başkaları tarafından kolayca anlaşılamıyorsa veya geliştirme yaparken sürekli bir şeyleri kopyalamak zorunda kalıyorsanız, kodunuzda ciddi sorunlar var demektir. Kodu tasarlamak, kodu geliştirmekten çok daha zordur; bir yapıyı oluşturduğunuz zaman bu yapıyı değiştirmek, her şeyi en baştan yazmak kadar uğraştıracaktır....

8 Nisan 2021

Türkiye'de sosyal medya yasası

İlk olarak 4 Mayıs 2007’de kabul edilen 5651 sayılı kanuna, 29 Temmuz 2020’de getirilen 7253/6 sayılı ek maddeler 1 Ekim 2020 itibarıyla yürürlülüğe girdi. Yeni ek maddelerle birlikte, Türkiye’den günlük erişimi bir milyonu geçen yurtdışı menşeili sosyal ağ sağlayıcılarına yeni yükümlülükler getiriliyor. Buna göre idari makamlarca sosyal ağ sağlayıcılarına gönderilen taleplerin yerine getirilmesi ve cevaplandırılması için en az bir temsilci bulundurma zorunluluğu getirildi. Kanuna göre temsilcinin kimlik ve iletişim bilgileri kolayca görülebilecek ve doğrudan erişilebilecek şekilde internet sitesinde yer almalı ve ayrıca temsilcinin Türk vatandaşı olma zorunluluğu bulunacak....

6 Ekim 2020

Dosya türleri nasıl çalışır?

Bilgisayar sistemlerinde her dosya türü farklı amaçlarla kullanılır. Genelde mov ve avi gibi dosya türleri video’larda kullanılırken, png, jpg ve gif ise görseller için kullanılmakta. Fakat dosya türlerinin farklılıkları sadece isimleriyle kalmıyor. Her dosya türünün kendine özel specification’ları bulunur; yani ilgili dosya türünün nasıl encode ve decode edileceğini belirten bir dökümantasyona sahiptir. İnsanlara göre dosya türleri text ve binary olarak ikiye ayrılırken bilgisayar tarafından hepsi bit’lerden oluşan birer dosya olarak görülür....

2 Haziran 2020

Wireguard kurulumu ve kullanımı

Wireguard son günlerde popüler hale gelen bir VPN yazılımıdır. OpenVPN’e göre çok daha performanslıdır ve kurulumu daha kolaydır. Wireguard ile iki farklı ağı birbirine sanal olarak bağlayabilirsiniz. Çok uzatmadan kuruluma geçelim. Wireguard’ın kendi sitesinden kendi platformunuza uygun olanı kurun: https://www.wireguard.com/install/ Örnek olarak sunucumuz Ubuntu ise, dökümanlarda anlatılan kuruluma göre yapalım: sudo add-apt-repository ppa:wireguard/wireguard sudo apt-get update sudo apt-get install wireguard Bu arada Linux header modülleri yüklü değilse bunu da kurmayı unutmayın....

2 Nisan 2020

Google, User-Agent'ı bitiriyor

Google yakın zamanda kendi web tarayıcısı Chrome’da, User-Agent’ı devre dışı bırakıp yerine ilk olarak Kasım 2015’te IETF’ye gönderdiği taslaktaki gibi “Client Hints” sistemine geçerek köklü bir değişiklik yapmayı planlıyor. Kendi savundukları iddialara göre User-Agent’lar kullanıcıları tanımlamak için yetersiz, cihazları tanımlamak için harici veritabanı gerektiriyor ve önbellek dostu değil. Ayrıca passive fingerprinting denilen, sabit bir veriye bağımlı kalınmaktaymış. Bu da kullanıcıların gizliliğini ihlal edebilirmiş. Şu anda kullanılmakta olan geleneksel yöntemler, uygulama ve sunucular için taşınabilir olmadığını, yapımı masraflı hale getirdiğini, ayrıca istekleri şişirdiği için performansı da düşürdüğünü belirtmişler....

26 Mart 2020

Bilgisayarlar nasıl rastgele sayı üretebilir?

Bilgisayarlar, aritmetik işlemleri bir insandan çok daha hızlı şekilde hesaplayabilmesi amacıyla tasarlanmıştır. Bilinen ilk bilgisayar milattan önce Çin’de, bizim “abaküs” olarak bildiğimiz basit bir makine olarak icad edilmişti. Gün geçtikçe daha gelişmiş makinelere ihtiyaç duyuldu. Mekanik hesap makinesi denilen, içerisinde çarklar dolu bir makine kullanılmaya başlandı. The Imitation Game filminde anlatılan ortaya çıkış hikayesinde olduğu gibi, zamanın mevcut imkanlarıyla yapılan hesaplamaların da artık yetersiz kalmasıyla, yeni çözümler aranmaya başlandı. İşte modern bilgisayarlar bundan sonra ortaya çıktı....

14 Mart 2020

Telnet neden var?

Telnet bize, karşıdaki bir sunucunun portuna bağlanıp klavyenizdeki tuşlar ile istekler gönderebileceğimiz bir arayüz sunar. Telnet TCP kullanarak istekleri gönderir ve karşı tarafa düz metin halinde giderler. Bu yüzden network’ü gözetleyen birisi varsa mesajınız bu kişilere de görünür olacaktır. İsteklerin karşıya şifrelenip gönderilmesi için TLS var ancak bu yazıda yalnızca Telnet’ten bahsedeceğim. Telnet’in geçmişi bilgisayarların ağ bağlantılarının yeni yapılmaya başlandığı yıllara dayanır. Günümüzde çok sık kullanılan bir yazılım değildir ama bizlere TCP ve metin tabanlı tüm protkolleri, başka bir program gerekmeksizin kullanabilmemize imkan sağlar....

2 Şubat 2020

Vi'den nasıl çıkılır?

Bu yılın ilk blog yazısını Vi ile yazmak istedim. Vi gerçekten, sanıldığı kadar zor mu? Bu yazıda, bu metin editörü hakkındaki önyargıları kırabileceğimizi umuyorum. Linux’a yeni başlayanlar için Vi ya da Vim sanırım bir çıkmaz sokak. Öyle ki Stack Overflow’da “Vim’den nasıl çıkılır?” sorusu 2 milyondan fazla görüntülenmiş. Vi’yi araba öğrenmek gibi düşünebiliriz. Öğrenmek için bir kaynak şart ve bir süre kullanıp pratik yapmanız gerekiyor. Vi ve Vim birbirine benzeyen temel komutları aynı, iki ayrı yazılımdır....

4 Ocak 2020

Linux'ta servis oluşturmak

Linux’ta servisler, uygulamaların arkaplanda asenkron biçimde çalışmalarını sağlar. Web uygulama veya yazdığınız herhangi bir sistem yazılımı, servisler sayesinde sistemle birlikte otomatik olarak açılıp, arkaplanda çalışır hale getirilebilirler. Servisleri pratikliğinden dolayı genelde “systemd” isimli bir program kullanarak oluşturmaktayız. Ubuntu, Debian, Fedora, Arch Linux, Gentoo, RHEL/CentOS gibi birçok platformlarda varsayılan olarak yüklü gelmektedir. systemd yalnızca servis değil; soket, aygıt, mounting ve swapping gibi pek çok farklı kaynak türleri için kullanılabilmektedir, fakat bu yazıda sadece servis özelliğinden bahsedeceğiz....

10 Temmuz 2019 · Son güncellenme: 12 Ekim 2021

PHP 8.0 nelerle geliyor?

Bu yazıda PHP 8.0 hakkında kesinleşen ve tartışılan yeni özellikler hakkında bilgiler vereceğim. PHP 7.0’ın çıkışı özellikle performans iyileştirmeleriyle dikkatleri üzerine çekmiş, ve hatta Facebook’un yayınladığı performans odaklı HHVM isimli PHP motoruna olan talebi de azaltmıştı. PHP 8.0 da en az PHP 7.0 kadar konuşulacak yeni özelliklerle geliyor. PHP8’de beklenen en büyük yenilik JIT derlemesi. Yaklaşık iki ay önce, PHP’nin JIT taslağı, PHP geliştiricileri tarafından oylandı ve kabul edildi. Buna göre PHP8’e JIT’in uygulanacak olması kesinleşti....

27 Mayıs 2019

Raspberry Pi'yi IP kamera yapmak

Bugün uğraşmayı çok sevdiğim Raspberry Pi ile yaptığım bir başka proje daha; RaspiCam. Raspberry Pi kullanarak hobi amaçlı ya da gizli güvenlik kamerası yapabilirsiniz. Bunun için bize Raspberry Pi ve kamera modülü gerekiyor. İlk önce yayın sunucumuzu ayarlayalım. Bu sunucu Raspberry Pi’nizin kendisi de olabilir, uzak bir sunucu da. Yayına yerel ağ dışından erişecekseniz, bağlantı problemleri yaşamamak için uzak bir sunucu kullanmanızı öneririm. Aksi taktirde Raspberry Pi’niz yeterli olacaktır. Yayınları RTMP protokolü kullanarak yapacağız....

18 Mayıs 2019

Elasticsearch nedir?

İlişkisel veritabanları (RDBMS), indexlenmiş veriler dışındaki aramalarda oldukça yavaş bir arama performansı sağlar. Bu da e-ticaret ya da büyük ölçekli bir proje için istenmeyen bir durum oluşturmaktadır. Elasticsearch, büyük veriler arasında hız kaybı yaşanmadan arama yapılmasını sağlayan döküman tabanlı, NoSQL bir veritabanıdır. Elasticsearch’ın yapılma amacı aramalardaki bu kritik sorunun çözümünü sağlamaktır. Elasticsearch ilk olarak, Apache Software Foundation’ın Lucene isimli belge arama kütüphanesi kullanılarak yapılmaya başlanmış ve 2010 yılında ortaya çıkmış. Java diliyle yazıldığı için her platformda çalışabilecek şekilde ölçeklenebilmektedir....

9 Mayıs 2019

Wikipedia engelinin gerçek sebebi

29 Nisan 2017’de Wikipedia’nın engellenmesinin ardından tam iki sene geçti. Engel, BTK’nın anayasadaki internet ortamında yapılan yayınlar hakkında düzenlemeleri içeren 5651 sayılı kanuna göre aldığı kararla başladı. Wikipedia’nın “özgür ansiklopedi” mottosu bilginin kaynaksız olarak eklenmesini değil, ansiklopediye ücretsiz olarak erişilebilmesinden gelmektedir. Yani “güvenilir” bir kaynak olmadıktan sonra herhangi bir bilgi eklentisi yapamıyorsunuz. Wikipedia’nın engellenme gerekçesi olarak “Türkiye’nin terör örgütlerine yardımda bulunması"nı konu alan haber kaynaklarının, Suriye İç Savaşı’na yabancı müdahalesi ve Devlet destekli terörizm maddelerine eklenmesi olarak gösteriliyor....

29 Nisan 2019

Basitçe anlatımla 2038 problemi

Bugün biraz gelecekten bahsedelim. 2038 yılı, Unix’in integer tipindeki (epoch ya da timestamp olarak da bilinen) zaman formatını kullanan tüm bilgisayar sistemlerini ilgilendiren bir yıl. Öyle ki bu yıla kadar, donanımsal veya yazılımsal güncelleme yapılmayan çok sayıda sistem ya kullanılamaz hale gelecek ya da bir şeyleri yanlış çalışacak. Peki nedir 2038 yılı problemi? 32-bit bilgisayar sistemlerinde ortaya çıkacak bu sorun, Unix zaman formatını kullanan tüm bilgisayar sistemlerini etkileyecek. Unix zamanını kısaca özetlemek gerekirse, 1 Ocak 1970’den itibaren bir numerik sayacın her saniye arttırılmasıyla çalışmaktadır....

18 Kasım 2018

Olmazsa olmaz Linux programları

Bu yazıda sizlere hızla büyüyen Linux dünyası için küçük bir katkı yapmak istedim. Linux kullanıcılarının mutlaka denemesi gereken programları derledim. Blog okurlarının büyük çoğunluğu da bu kitleden oluştuğu için biraz developer’lara yönelik bir liste olacak. Programların çoğunu halen Debian tabanlı bir işletim sisteminde kullanıyorum. Sıralamanın herhangi bir önemi bulunmamaktadır. Haydi, başlayalım. 1) Visual Studio Code Microsoft’un açık kaynak dünyasına kazandırdığı en büyük programlardan bir tanesi. Visual Studio ile uzaktan yakından alakası olmasa da, sahip olduğu eklenti ve temaları bir çok programcıyı kendisine çekiyor....

31 Ekim 2018 · Son güncellenme: 24 Ağustos 2021

Minio ile Amazon S3 sunucusu oluşturmak

Amazon AWS’deki popüler servislerden birisi olan S3, projelerimizin statik dosya barındırmasına büyük yardımı dokunan bir servistir. AWS S3’te dosyalara yapılan sorgu sayısına ve kapladığı alana göre fiyatlandırma uygulanmaktadır. Neredeyse her dil için kütüphanesi bulunduğundan, her yere kolaylıkla entegre edilebiliyor. Minio ise, S3’ün protokolünü kullanarak tıpkı S3 gibi davranan bir yazılımdır. Bu yüzden entegre etmek için herhangi bir S3 kütüphanesini kullanabiliyorsunuz. Böylece AWS’ye gerek kalmadan S3 protokolü ile geliştirme yapabilirsiniz veya dosya barındırma sistemini kendi altyapınız üzerinden canlı ortamda kullanabilirsiniz....

19 Aralık 2016 · Son güncellenme: 9 Ekim 2021

Telegram botu yapımı

Botlara son zamanlarda internette sıkça rastladığımızı söyleyebiliriz. Telegram ve Facebook’un geliştiriciler için Bot API’leri oluşturduğunu duyurmasını, şirketlerin ve uygulamaların kendi botlarını oluşturmasını, geleceğin yapay zeka dünyasına adım atmak olarak yorumluyorum. Telegram botunu yapmaya, Telegram’a girerek başlayalım. Kişi arama bölümüne “botfather” yazalım. Bu bot, Telegram’ın geliştiricilere sunduğu resmi bottur. Kişiyi ekledikten sonra konuşma açıp /start diyoruz. Bu esnada bize gönderebileceğimiz komutları listeleyecektir. Yeni bir bot oluşturacağımız için ilk olarak /newbot komutunu gönderiyoruz....

27 Temmuz 2016

SQLCipher kullanımı

SQLCipher, SQLite veritabanlarımız için bir şifreleme yazılımıdır. SQLCipher genellikle, dağıttığımız uygulamalardaki SQLite veritabanlarını başkalarının okuyup değiştirebilmesini engellemek amacıyla şifrelemek için kullanılır. Örneğin bir Android uygulaması yaptınız ve uygulamadaki SQLite veritabanınında başkalarının okumasını istemediğiniz veriler var ya da oyununuzun verilerinin başkaları tarafından değiştirilip hile yapılmasını engellemek istiyorsunuz. O zaman SQLCipher tam size göre. OpenSSL kuruyoruz (OS X’e göre): curl -o openssl-1.0.2g.tar.gz https://www.openssl.org/source/openssl-1.0.2g.tar.gz tar xzf openssl-1.0.2g.tar.gz cd openssl-1.0.2g /Configure darwin64-x86_64-cc make make install brew link openssl --force </code></pre> Şimdi SQLCipher kuralım:...

27 Haziran 2016

Sızdırılan kimlik bilgilerinin perde arkası

15 Şubat 2016 tarihinde Anonymous’un Twitter hesabından atılan bir tweet ile başladı. Milyonlarca kişinin kimlik bilgilerinin bulunduğu veritabanı gün yüzüne çıkartıldı. Yıllardır el altından satılan bu veritabanı bu günlere nasıl geldi? Yaptığım bu küçük araştırmanın sonuçlarını sizlerle paylaşacağım. İlk olarak 2009 yılında bir hukuk forumunda açılan bu konuya bakalım. Konuyu açan bir avukat yanına gelen şahısların önceki yazıda incelediğimiz bu programı kendisine satmak istediğini söylemiş ve suç olduğunu düşünüp satın almamış....

5 Nisan 2016 · Son güncellenme: 1 Ocak 2020