Bir yazılımcının muhasebe defteri — 1

Bayılıyorum devamını getirmekte zorlandığım, bazen getiremediğim seri yazıları yazmaya :) Bu sefer durum biraz daha farklı o yüzden devam edebileceğimi umuyorum.

Kişisel bütçemi kontrol etmek amacıyla Kemal Ogün Işık’ın tavsiyesiyle bir program kullanıyorum son iki senedir. Kişisel harcamalarım konusunda inanılmaz rahatlatıyor kafamı. En temelde yapmamı sağladığı şey, aylık gelirimi belki kalemler üzerine kapalı zarf usülü bütçelendirmek.

sen çok yaşa Hilmi Reis :)

Temel seviyedeki işlemlerde fazlasıyla hakkını veren bu program karmaşık ihtiyaçlarıma pek yanıt veremez hale geldi. E bi de malum veri güvenliği, ne biliyim hesaplarımın dökümünün birinin elinde olma hissiyatı vb sebepler de işin bahanesi oldu, benzer iş modelini ihtiyaçlarıma göre şekillendirerek yazmak, yazarken de daha önce dokunma fırsatı bulmadığım alanlara dokunmak istedim.

Burada kendime şöyle bir mimari oluşturdum, veritabanı olarak PostgreSQL, back end katmanı olarak Node.js® ve ön tarafta da henüz karar veremediğim ama gönlümden Vue.js geçen bir yapı ile ilerleyeceğim. Daha keyifli çalışma ortamı oluşturacak mimari önerilerinizi ya da benimkini baltalayan yorumlarınızı ısrarla bekliyorum :)

Neden PostgreSQL dediğinizi duyar gibiyim :)

Öncelikle DB tipine karar vermem gerekiyordu. Tablosal verilerimin çokluğu, hatta tamamının öyle olması diyebilirim, beni ilişkisel bir veritabanı kullanmaya götürdü. Vaktinde WordPress ile uğraşırken, sıkça MySQL ile işim olmuştu. Amatör seviyede de olsa bu tanışıklığım beni başka arayışlara, başka tadlara da bakmaya sürükledi. Bazı kıyaslama sitelerinden okuduğum bilgiler, bilgili arkadaşlarla yaptığım görüşmeler MySQL alternatifi olarak PostgreSQL seçmem konusunda karar vermemi sağladı.


Yazının devam kısmını PostgreSQL’e çok basit şekilde giriş olarak tutacağım, hem bende bilgiler tam otursun hem de biraz vakit kazanayım istiyorum :)

PostgreSQL nedir?

Wiki’deki ufak tanımı aslında tüm olayı özetliyor;

PostgreSQL, veritabanları için ilişkisel modeli kullanan ve SQL standart sorgu dilini destekleyen bir veritabanı yönetim sistemidir. PostgreSQL aynı zamanda iyi performans veren, güvenli ve geniş özellikleri olan bir Veri Tabanı Yönetim Sistemi’dir. …PostgreSQL ücretsiz ve açık kodludur.”

Aslında tüm soru & cevaplarına Devrim Gündüz ve arkadaşlarının oluşturduğu şu dökümandan bakabilirsiniz, benim çok işime yaradı/yarıyor :

PostgreSQL kurulumu nasıl yapılır?

Araştırma yaparken gıcık olduğum bir konuyu maalesef ben de burada yapacağım, tek işletim sistemi üzerinden kurulumu anlatacağım :)

macOs x server versiyonu 10.7'den yüksek olanlarda default olarak yüklü geldiği sitesinde belirtilen bu alete dair detaylı kurulum adımlarına ilgili siteden ulaşabilirsiniz. Benim tavsiyem direkt olarak postgress.app indirmeniz yönünde olur. Bütün süreci sizin yerinize kolaylaştırıyor.

PostgreSQL yönetimi nasıl yapılır?

Kendi sitesi dahil bir çok yerde pgAdmin öneriliyor. Yalan yok ben de en başta cahildim, insanların yönlendirmelerine kandım. Sonra sonra kullanmaya devam edince, arayüzünün bana yeterince kolay gelmediğini, muhakkak daha iyisi olabileceğini düşündüm. Gün sonunda karar verdiğim ve pek keyif aldığım IDE yine JetBrains ailesinden gelen, DataGrip oldu. Benim gibi db ile ilişkisini arayüzlerden yürütecek niyetteyseniz, bence çok keyifli bir nimet. Tabii ki daha keşfetmemi bekleyen nice özelliği vardır ama yine de keşfettiğim kadarı bile beni mest etti :)

Uygulamanın db yapısı nasıl oldu?

Bu şemaya koymadığım bazı tablolar dışında, içime sinen, kabul edilebilir feedback’i aldığım şema şu şekilde oldu :

ay-yıl tablosuna ne gerek var, on the fly üret diye düşünebilirsiniz ancak, bütçeleri oluştururken ve yansıtırken bu bilgi benim için çok önemli ve hızlı olması gerekiyor. Bu sebeple ayrı tutmaya karar verdim.


Şimdiye kadar okuduğum, araştırdığım, öğrenmeye çalıştığım bilgiler ışığında bu yazıyı bu kadarla sınırlı tutacağım, bundan sonraki yazım app’e dair olumlu ilerleyiş olması durumunda devam edecek. Devam ettiğim takdirde bir sonraki yazım, biraz PostgreSQL bolca da Node.js® içerecektir.

Belirtmemde fayda var; bu yazı serim asla ben oldum, doğrusu bu tarzında bir seri değildir. Ben bir serüvene çıktım, yolda bunları öğrendim ve uyguluyorum, olur ya yanlış yoldan ilerliyorsam “hop hemşerim, burası ters yön!” diyesiniz diye yazıyorum.

Teşekkür ederim,

Murat