Bitcoin, Blockchain Nedir ?

Bitcoin, belki de şu günler de pek çok kişinin duyduğu ve merak ettiği bir kelimedir. Bitcoin’nin çok fazla değerlenmesi ve bununla beraber diğer alt coinlerin de değerlenmesine yok açan boğa sezonda olmamızda buna bir artı sağlacaktır.

Boğa Sezonu Nedir?

Boğa sezonu, piyasanın yükseliş trendinde olduğunu ve ilerleyen zamanlar da daha yükseleceğine işarettir. Boğa sezonu denilmesi boğanın boynuzlarının aşağıdan yukarıya kaldırdığı söylenmektedir. Google trendlere baktığımızda herkes bitcoini konuştuğunu görebilirsiniz.

Bitcoin ve diğer coinler de korona olaylarının başlamasından sonra boğa sezonun da oldu diyebiliriz. Ama bu korona bittikten sonra biteceği anlamına gelmemektedir. Belki bir haber ile bütün piyasa alt üst olabilir.

Bu yazdığım günlerde bitcoin’nin fiyatı yaklaşık olarak 58 ile 60 bin dolar arasında gidip gelmektedir. Bu fiyatları şuan duyan birisi çok pahalı diyebilir fakat ben bitcoinin geleceğini 100 bin hatta 1 milyona kadar gidebileceğini bile düşünüyorum. (Yatırım Tavsiyesi Değildir 🙂 )

Bitcoin Nedir?

Bitcoin, ilk olarak 2008 yılında Satoshi Nakamoto isimli kim olduğu hala bilinmeyen birisi veya bir takım tarafından geliştirilmeye başlanmıştır. Bitcoin açık kaynaklı bir projedir. İsteyen Github’dan kodlarını tek tek inceleyebilir. Bitcoin geliştirenler bu proje de en fazla 21 milyon adet basılması ve daha fazla basılamayacağını kesinleştirmişlerdir. Bu da bitcoini değerli kılmaktadır. Yani bir nevi altın gibi düşünebilir çünkü altını isteseniz de üretemezsiniz ancak bir yerden çıkması lazımdır. Ama doları euro veya herhangi bir para birimini bir kişi ve otorite bunu istediğini kadar basabilir. Bitcoin de böyle bir durum yoktur. Tamamen merkeziyetsizdir kimse bitcoinin sahibi değildir. Belirli kişi bu teknoloji üretmiş ve kullanıma sunmuştur.

21 milyonu üretmek içinde anında üretilmemektedir. Belirli bir sınırı vardır. Her 10 dakika da bir blok üretilmektedir ve her blok içinde şuanlık 6.25 bitcoin madencilere verilmektedir. Madenciler kim diyebilirsiniz yazımın ilerisinde yazacağım. Bu verilen 6.25 bitcoin ilk başlangıçta 50 bitcoin olarak verildi ve yarılanma ile her blok için 25 bitcoine sonra 12.5 ve şuan günümüzde 6.25 bitcoin verilmektedir. Bu yarılanmaya da Halving denilmektedir. Bu halving her 4 yılda bir yarılanmaktadır. Böylelikle bitcoin üretimi yavaş yavaş artacaktır. Bitcoinin şuanki üretilen 18 milyon 600 bin civarıdır. Böylece bitcoinin 21 milyona ulaşması yaklaşık olarak 2140 yılında bitecektir ve daha fazla bitcoin basılmayacaktır. Her blok içinde 10 dakika olarak belirlenmiştir.

Blockchain Nedir?

Blockchain’i bir zincire benzerebilirsiniz. Zaten Türkçe’ye çevirdiğimizde blok zinciri olarak çevirebiliriz. Blokların tek tek birbirlerine bağlanarak oluşturulur. Bu blokların ilk zincirine Genesis Blok denilmektedir. İlk bloğun öncesi olmadığı için bilgilerin içerisine 00 olarak geçmektedir. Bu 00, 64 tane sıfırdır.Yani bilgisayar terimiyle 64 bit olarak geçer. Sonraki bloka ise öncesi ile bir ilişkisi olması lazım işte bu ilişki ise hash ile yapılır. Hash sha256 olarak geçer. Hash bir değerin mesela hash fonksiyonuna ben abcd yazarsam bana geri bir hash dönecektir => 88d4266fd4e6338d13b845fcf289579d209c897823b9217da3e161936f031589

İsterseniz sizde yapın deneyin abcd yazın ve üstteki benim yazdığım ile karşılaştırın veya alttaki fotoğrafa bakın aynıdır. Herkes de bu aynı sonucu vermekdir.

Peki tamamda bundan banane diyebilirsiniz fakat bu bir hashdir sadece bir blok için öncekinin hash’i yani adresi diyebiliriz.

Bu blok içerisinde verilen bazı bilgiler vardır. Gönderen kişinin bitcoin adresi, alan kişinin bitcoin adresi, ne kadarlık bir bitcoin gönderecek, zamanı, önceki hash ve Nonce değeri vardır. Bu nonce değeri bitcoin için belirli bir kuralı vardır. Bu hash kodunu üretirken ilk 2 değerinin 00 ile başlaması gibi eğer 00 ile başlamaz ise nonce değeri arttırılır ve tekrar hash fonksiyonundan geçirilir.

Bu işlem bulunana kadar nonce arttırılır. Çok fazla makine mining yaparsa hash fonksiyonun bulması kolay olacağı için 10 dakikanın altında blok oluşturulamayacağı için bu 00 değerler daha da arttırılarak ağın zorluğu arttırılıyor. Alttaki fotoğrafta ağ zorluğunu grafiksel olarak görebilirsiniz.

Blockchain anlamamız için andersbrownworth.com da Block chain demo isimli bir site var oradan anlayabilirsiniz.

Bitcoin merkeziyetsiz olduğu için blockchain de olan bilgilerin bilgilerin tek bir merkezde tutulmasındansa bütün kullanıcılar bilgileri bulunuyor. Yani bir değişiklik olduğundan bütün kullanıcılar bu bilgiyi biliyor. Yani bir adrese ne kadar bitcoin girdiğini, çıktığını, ne zaman çıktığını ve kime gönderdiğini tutuyor. Bütün kullanıcıların elinde bu bilgiler bulunduğundan hata olması en aza indiriyor.

Bitcoin Madenci Kimdir?

Bitcoin madencileri üst tarafta kendilerine gelen datanın istenilen hash kuralında olmasını sağlayarak (İlk 00 olması gibi) nonce değerini buluyor. Eğer bitcoin üretimi biterse madencilik yine bitmeyecektir çünkü bitcoin transferlerinden belirli bir komisyon alınmaktadır. Bu komisyon direk bitcoin madencilerine gidecektir.

Aşağıdaki fotoğrafta bir blockchain’in nasıl çalıştığını görebilirsiz. Bloklar tek tek mine ederek nonce değeri bulunuyor ve hash değeri sonraki blok’a aktarılıyor.

Mesela bir hata yapılsın ve 2.blokta veriler yanlış geldi. Yanlış gelen yerden itibaren diğerleri de hatalı olacaktır. Aşağıdaki fotoğrafta görebilirsiniz.

Bu teknolojide şöyle bir ayırım vardır. Birisi mining yapacaklar yani nonce değerini bulacaklar ve diğeri ise doğrulayanlar bu doğrulayanlar gelen bilgilerin alacaklar aynı zamanda madencilerin bulduğu nonce değerini alacaklar ve hash doğru kural da olup olmadığını kontrol edecekler. Eğer hata olursa hata oynama mantığına gidilecektir. Doğruluk oranı yüksek olursa doğru olarak veya ağın yapısına göre bu blok çöpe gitsin denilebilir.

Eğer şuana kadar hiçbir şey anlamadıysanız normaldir ilk önce bende hiçbir şey anlamadım 🙂 Benim severek takip ettiğim Özgür DEMİRTAŞ hocamızın blockchain ve kripto paralar serisine bakabilirsiniz.

Uluslararası Bitcoin Satılan Borsalar

  • Binance
  • Kucoin
  • Gate.io
  • Huobi

Türkiyedeki Bitcoin Satılan Borsalar

  • TR Binance
  • BtcTürk
  • Thodex
  • Paribu

Kripto Paralar İçin Kullanılan Siteler

  • CoinMarketCap – Coin Fiyatları, Grafikleri, Coinlerin Borsadaki Fiyatları, Borsalar, Portfolye oluşturma
  • Tradingview – Coin Fiyatları, Coin Grafikleri, Fikirler,
  • Icodrops – Coin ICO tarihleri

Bu kripto paralar çok riskli olduğu için maddi olarak zorlanmayacağınız paralar, yatırdığınız para gitse dahi hayatınızı devam ettirebileceğiniz para ile girmenizi tavsiye ederim. Kredi çekme veya evi köyü arabayı sattım bitcoine bastım gibi bişey yaparsanız bitcoinin çok fazla düşmesi ile eviniz arabanız elinizden gider.

Bugünki bitcoin fiyatı: (10.04.2021 – 23:49)

İyi günler

Kaynaklar:

https://tr.wikipedia.org/wiki/Bitcoin https://trends.google.com/trends/explore?date=all&q=bitcoin https://tr.tradingview.com/symbols/BTCUSDT/?exchange=BINANCE https://andersbrownworth.com/blockchain/ https://www.blockchain.com/charts/difficulty

Videolar:

YATIRIM TAVSİYESİ DEĞİLDİR!!

Canlı Döviz Piyasası Durumu NodeJS, VueJS Websocket Eklenmesi

Geçen haftalar da paylaşmış olduğum projeye yeni bir ekleme yaparak Websocket projeme ekledim.

Peki neden bir Websocket ekledim ?

Önce ki App baktığımız da dövizlerin yeni durumlarını almak için devamlı API istek atıyordum. Devamlı istek atmak yerine Web Socket kullanarak herhangi bir değişiklik olduğunda bana geri verecektir. Böylelikle en güncel piyasayı alabiliyoruz.

Websocket kullanmak istemez isek yine aynı API mantığından /api/altin istek attığımızda veriler gelecektir.

Websocket Nedir ?

Websocket basit anlatmak gerekirse bir isteği yapan kişi ile sunucu arasında bir bağlantı kuruluyor ve sunucuda herhangi bir değişiklik olduğunda bunu isteği yapan kişiye bildiriyor. Bunu chat uygulamaların da benim yaptığım gibi canlı döviz, forex gibi siteler de kullanılıyor. Web socket design pattern biliyorsanız bir observer pattern de diyebiliriz. Birisi size abone oluyor herhangi bir değişiklikte abone olanlara bildiriyorsunuz.

Websocket ile HTTP/REST arasındaki farklı ise REST API da client sunucuya bir istek atar ve bir response sonuç döndürür ve işlem bitmiş olur. Aşağıdaki fotoğrafta da görebilirsiniz.

HTTP Request (İstek) – Client(İstek Atan) – Server(Sunucu)

Websocket de ise TCP bağlantısı üzerinden çift taraflı bir iletişim vardır. 2011 yılında IETF tarafından RFC 6455 ile standart haline gelmiştir. Alt kısım da Websocket ile HTTP isteği arasındaki farkı görebilirsiniz.

Websocket Kullanırken Yaşadığım Sıkıntılar

Websocket ile bilgileri alırken birçok bilgi olduğundan (Altın,Borsa, Kripto vb.) ilk aklıma gelen bütün bunları bir array atarak gönderebilirim diye düşündüm fakat biraz araştırma yaparak bunun yerine dizinin ilk indisine bilginin hangisini gönderdiğimi yazdım diğer indisine ise objeyi verdim. Böylelikle büyük bir bilgi gitmektense tek tek bilgileri göndererek karmaşıklığı çözdüğümü düşünüyorum.

Eğer dövizlerin Websocket kullanmak istiyorsanız: wss://dovizapi.herokuapp.com/ buraya bir Websocket bağlantısı açarak kullanabilirsiniz. Eğer projenizde kullanmak istiyorsanız projeyi indirip kendi sunucunuza kurmanız daha iyi olacaktır. Çünkü herokudaki ücretsiz kullanma hakkı bitmiş olursa yanıt alamayabilirsiniz.

APP: https://currency-and-crypto.vercel.app/

API: https://dovizapi.herokuapp.com/api

APP Github Repo : https://github.com/eraykisabacak/Currency-and-Crypto

API Github Repo : https://github.com/eraykisabacak/Doviz-API

NodeJS ve VueJS ile Döviz Kripto Altın Gümüş Canlı Değerleri

NodeJS ile bir API oluşturdum. Web scrapping yaparak milliyet ve coinmarketcap’dan bilgileri çektim.

API da döviz, altın, gümüş, borsa ve kripto paraların değerlerini ve ne kadar artış olduğunu bize vermektedir.

/api/GETBist100,Dolar,Euro,Altın,Petrol,Bono
/api/altinGETAltın, Altın Ons, Bilezik, Cumhuriyet Altın, Tam Altın, Yarım Altın, Çeyrek Altın
/api/gumusGETGumus Gram, Gumus, Gumus Euro, Gumus Dolar, Gumus TRY
/api/borsaGETBist 100 Hisseler
/api/kriptoparaGETİlk 100 Kripto Para

API Repo: https://github.com/eraykisabacak/Doviz-API

API: https://dovizapi.herokuapp.com/api

VueJS Front End Repo: https://github.com/eraykisabacak/Currency-and-Crypto

VueJS Front End : https://currency-and-crypto.vercel.app/

GulpJS “ReferenceError: primordials is not defined” Çözümü

GulpJS bilgisayarım da çalıştırırken primordianls is not defined isimli bir hata ile karşılaştım ve çözümünü paylaşmak istedim.

ReferenceError: primordials is not defined
    at fs.js:36:5
    at req_ (C:\Users\{user}\Desktop\fe\node_modules\natives\index.js:143:24)
    at Object.req [as require] (C:\Users{user}\Desktop\fe\node_modules\natives\index.js:55:10)
    at Object.<anonymous> (C:\Users{user}\Desktop\fe\node_modules\vinyl-fs\node_modules\graceful-fs\fs.js:1:37)
    at Module._compile (internal/modules/cjs/loader.js:1137:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1157:10)
    at Module.load (internal/modules/cjs/loader.js:985:32)
    at Function.Module._load (internal/modules/cjs/loader.js:878:14)
    at Module.require (internal/modules/cjs/loader.js:1025:19)
    at require (internal/modules/cjs/helpers.js:72:18)

Öncelikle package.json dosyası ile aynı klasördeyken npm-shrinkwrap.json isimli bir dosya oluşturalım ve dosya içerisine alttaki kodu ekleyelim.

{
      "dependencies": {
        "graceful-fs": {
            "version": "4.2.2"
         }
      }
 }

Daha sonra npm install diyerek npm-shrinkwrap.json dosyamızda bir güncelleme gelecektir ve gulp diyerek sorunumuz çözülmüş olacaktır.

Node.js ile Discord COVID-19 Botu Geliştirme

Node.js kullanarak bir discord botu geliştirmeye çalıştım.

Bilgileri sağlık bakanlığı API’den aldım. Bu bot !korona yazıldığında günlük raporu bize geri döndürmektedir.

Eğer detaylı olarak toplam vaka sayısı, toplam test sayısı gibi bilgilerin ve günlük tablonun gelmesi için !koronadetayli yazılarak bize detaylı olarak geri dönüş vermektedir.

Proje de request paketini kullanarak Sağlık Bakanlığına bir istek atılıyor ve gelen istek JSON data dönüştürüyor. Sonra en son gelen bilgiler ile bot cevap veriyor.

Discord botu için discord tarafından oluşturulmuş bir paket discord.js paketini kullandım.

Ve bir de Cron job kullanılmıştır. Cron API saniyelik olarak istek atmaktadır ve eski veri ile cron tarafından atılmış istekler karşılaştırılarak eğer birbirlerinden farklı veriler ise bot son dakika olarak mesaj atmakta ve yeni veriler detaylı bir şekilde gösterilmedir. ( TEST EDİLMEMİŞTİR )

Eğer sizde bu botu kullanmak isterseniz yapacağınız tek şey en altta bulunan token yerine sunucu tokeninizi girmeniz yeterlidir. Botun devamlı açık kalması içinde Heroku kullandım.

Github Repo : https://github.com/eraykisabacak/TRKoronaDiscord

Laravel 8 Routing Değişimi

Laravel 8 de yeni gelen güncelleme ile birlikte routing yapısında bir değişikliğe gitmektedir.

Basit bir tane Home Controller oluşturdum ve routes klasöründen web.php dosyasına girdiğimde bir get istediği oluşturdum.

Önceki versiyonlar da gelmesi gereken sayfa yerine bir hata ile karşılaşıyoruz.

Laravel 8 de biraz farklılık göstererek controller import ediyoruz ve farklı bir sytax da yazıyoruz.

Başka bir kullanım şekil ise tam controller yazarakta kullanabiliyoruz.

Eski Syntax ile Yazmak İçin Ayarlar

Eğer hiç bu şekilde yazmak istemezseniz ise önceki versiyonlardaki gibi kullanmak istersek. Providers klasörü altındaki RouteServiceProvider.php dosyasına giderek.

Namespace yerine controllers olduğu klasörü vermeliyiz ve boot fonksiyonu içerisine de namespace ekleyerek eski veriyonlar gibi kullanabiliriz.

C# ile A* (Star) Algoritması kullanarak 8 Taş Bulmacasını Çözmek | Yapay Zeka – Solving 8 Stone Puzzles using A * (Star) Algorithm with C# Artificial Intelligence

A star algoritması sezgisel bilgileri kullanarak bir durumdan bir amaca ulaşmaktır. Bu amaç duruma ulaşmak için minimum yolun bulunmasında daha az tarama yapmaya olanak tanımalıdır.

İyi seçilmiş bir sezgisel fonksiyon ile çok az dallanma yaparak hedefe yaklaşabiliriz.

Bu görselde yeşil kutudan kırmızı kutuya gitmeye çalışalım. Ancak kutuların ortasında bir duvar olsun.

Öncelikle yeşil kutudan başlayarak çevre alanları taramaya başlayacağız. Daha sonra taradığımız alanları açık bir listeye ekleyeceğiz.

Eğer karenin çevresinde duvar var ise bunu listeye eklemeyeceğiz.

Daha sonra ise başlangıç karesini kapalı bir listeye ekleyeceğiz.

Yukarıdaki görsel gibi çevresini tarayacağız.

Daha sonra açık listeye eklediğimiz kareleri her birisini F = G + H denklemi ile en küçük F değerini seçeceğiz.

G = Başlangıç noktasına göre yoldur.

H = Amacımıza ulaşmak için tahmini bir değerdir. (Heuristic) Tahmin

F değerinin en küçüğünü seçeceğiz çünkü o yol bizi kısadan amacımıza ulaştıracaktır.

Her kare hareketi için 10’ar puan diyelim. Köşegen üzerinde yapılan çaprak hareket 14 puandır (10*kök(2))

Yani ilk kutumuzu ele alırsak üstteki gibi bir sonuç çıkacaktır. Sol üst F değeri Sol alt G değeri sağ alt H değeridir.

Bu değerlere baktığımızda F değerinin en küçüğüne gideceği için kutumuz sağa gitmelidir.

Daha sonra aşağı aşağı gidecektir. Fakat bir kısa yolumuz daha vardır. Direk F 40 olan yere gitmek yerine çaprazdaki 54 değerine sahip olan kutuya gitmek bizi daha kısadan götürecektir.

Şu şekilde bir soru olabilir. Öncelikle F 54’e gidiyoruz daha sonra aşağı 74 gidiyoruz ama çapraz gitsek daha kısa olabilir denilebilir fakat duvar buna engel olacaktır. Kutu şeklinde hareket edeceği için önce aşağı sonra sağa gitmeliyiz.

A Star Algoritması Mantığı Özeti

Başlangıç karesini açık listeye ekle.

Çevresini dolaş en küçük F değerli kareyi bul. Seçilen kareyi kapalıya ekle.

Seçili kare için aynı şekilde yap. Duvar gibi engellere bakma.

Eğer amacımız gerçekleşirse yol bulunmuştur.

8 Taş Bulmacası

8 Taş bulmacasını da A* algoritması ile çözebiliriz.

Buradaki maliyetimiz her hareket için 1’dir.

Üstteki gibi bir başlangıcımız var ve bir amacımız var.

Boş olan kareyi hareket ettirmemiz gerekiyor.

Sadece yukarı, aşağı, sağa , sola hareket ettirebiliriz.

Üstteki fotoğraftaki gibi hareketler yaparak sonuca ulaşabiliriz.

C# ile yapmış olduğum programda başlangıç durumu ve amaç durumu 2 tane kullanıcının girmesi için beklenen yer vardır ve ‘,’ ile ayrılmalıdır.

Çöz denildiğinde çözdükten sonra animasyonlu olarak ‘0’ yer değiştirecektir. Yer değiştirmeler sağda gösterilir. Yaptığı işlemler en altta yazmaktadır.

Kodlar: https://github.com/eraykisabacak/A-Star-Algorimasi-8-Bulmacasi

C# ile Sağlık Ocağı Hasta Takip Sistemi – Health Center Patient Tracking System – HBYS

C# ile Sağlık Ocağı Hastane Hasta Takip Sistemi hazırladım. Projemde MSSQL veri tabanını kullandım. Bazı yanlışlarım hatalarım olabilir.

Saglik-Ocagi-Hasta-Takip-Sistemi

Sağlık Ocağı Hasta Takip Sistemi – Health Center Patient Tracking System – HBYS

Sağlık Ocağı Hasta Takip Sistemi Sağlık ocaklarında hastaların poliklinik giriş ve çıkışlarının takibi ve raporlanması amacıyla detaylı bir otomasyon geliştirmeniz istenmektedir.

Kurulum

Projede Entity Framework kullanılmıştır. script.sql dosyasından Microsoft Management Studio’ya giderek New Query’ye tıkladıkdan sonra script.sql dosyasının içindeki kodu alıp Execute ettiğinizde tablolar ve veriler gelmiş olacaktır.

Uygulama İçi Fotoğraflar

Login

Login Uyarısı

Hasta İşlemleri

Taburcu Formu

Taburcu Formu

Poliklinik Tanıtma

Kullanıcı Tanıtma

Hasta Bulma

Detaylı Bilgiler

txtDosyaNo: Hasta ya ait unique numara dosya no metin kutusunun key press eventi enter tuşunu döndürürse hasta bilgileri formdaki alanlara doldurulur.

btnBul: Dosya numarası bilinmeyen hasta geldiğinde bul butonu ile acılan Dosya Arama Yardımı penceresinde hastaya ait bilgiler den biri seçilip sorgulanarak hastanın dosya numarasına erişilir, Gridden seçilen hasta dosya numarası ve bütün bilgileri formda ilgili alanlara doldurulur.

txtSevkTarihi: Muayeneye gelen hasta için her gelişinde sevk açılmaz, Sevk tarihi ile dosya numarası birlikte hastanın bir kez gelişini birlikte primary key olarak ifade eder.

btnHastaBilgileri: Hastanın Gerekli bilgilerinin düzenlendiği bir form açar. Burada hastaya ait kişisel, kurumsal, kimlik ve iletişim bilgileri bulunur.

cbPoliklinik: hastanın o sevkinde hangi poliklinikte muayene olacağı seçilir.

txtSıraNo: Hastanın poliklinikte muayene için bekleyeceği sıra numarası otomatik olarak verilir.

txtKayitSaati: hasta kaydının yapıldığı saati sistem saatinden çekip bu alana yazdırılır.

btnKaydet: hastanın bu sevkini kaydeder ve bu sevke tahlil ve işlem girilebilir. Groupbox Yapılan tahlil ve işlemler: bu groupbox içinde yer alan alanlar yapılan her bir işlem için doldurulup Ekle butonu ile alttaki gride eklenir. Dr. Kodu her bir doktorun sahip olduğu kod yazılır. Tarih ve saat sistemden çekilir.

btnKaydet: hastanın bu sevkini yapılan işlemler ile birlikte kaydeder (Gride eklenen kayıtlar direk veritabanına işlenirse bu butona gerek kalmayabilir).

btnSeçSil: Hastanın hesabında silinmek istenen işlem veya tahlil grid satır baslığından seçilerek bu buton ile silinir.

btnYeni: Formu temizleyerek yeni bir hastaya işlem yapabilmeye hazır hale getirir.

btnTaburcu: Hastanın gerekli işlemleri (Örneğin ücret tahsil edilmesi) bittikten sonra taburcu edilir. Yani veri tabanına çıkış saati yazılır.

btnYazdır: Hastanın bu sevkine ait bilgileri yazdırılır.

Toplam Tutar: Gridde hasta ya işlenen işlemlerin miktarları ve birim fiyatları çarpılarak işlem tutarı hanesinde görülecek, bu işlem tutarları toplamı toplam tutarda gösterilir,

Poliklinik Tanıtma: Sağlık ocağındaki polikliniklerin insert, update, delete edildiği form, dbPoliklinik te burada kayıtlı ve geçerli poliklinikler görüntülenecek. Poliklinik adı girilip textbox üzerinde entere basıldığında kayıt varsa form doldurulur, yoksa böyle bir kayıt bulunamadı açayım mı diye msgbox uyarısı verir, evet seçilirse alttaki komponente geçer aksi halde formu temizler.

Kullanıcı tanıtma: Kullanıcı adı yazılıp enterlandıgında bilgileri gelir, yetkili kullanıcılar haricindekilere Referanslar ana menüsü görünmez.

Doktor tanıtma: kodu girildiğinde bilgiler gelir ya da mesajla bu kaydı açayım mı diye sorar, doktor kodları hasta işlemleri formunda işlem eklemede ve raporlarda imza olarak kullanılır.

Sağlık Personeli tanıtma: hemşireler vb. personel tanıtılır doktor tanıtmanın benzeri işlemler yapılır.

Demo: https://www.youtube.com/watch?v=ydSiWok7wN8&t=95s&ab_channel=ErayK%C4%B1sabacak

Github : https://github.com/eraykisabacak/Saglik-Ocagi-Hasta-Takip-Sistemi

C# ile Sayı Bulma Oyunu Find the Numbers Game

Sayı Bulma Oyunu

✓ Basamak sayısı kullanıcı tanımlı olmalı ve rasgele üretilmelidir.

✓ Sayının rakamları için tekrarlı ve tekrarsız seçeneği olmalıdır.

✓ Kullanıcı sayıyı bulmasına yardımcı olmak için yerinde olanlara mavi renk; yerinde olmayıp içinde geçen sayılara kırmızı renk ile işaretlenmelidir.

✓ Hak sayısı ise kullanıcı tarafından belirlenebilmelidir.

✓ Her hak için belirli bir süre tanınmalıdır.

✓ Skor listesi tutulmalı ve gerekli bilgiler bir dosyada tutulmalıdır.

Github: https://github.com/eraykisabacak/Say-Bulma-Oyunu-Find-the-Numbers-Game

C# ile Emlak Otomasyonu – Real Estate Automation

Bu yazımda sadece emlak otomasyonunda istenilenler vardır. Bazı yanlışlarım veya kod tekrarlarım olabilir.

Kurumsal bir emlak ofisi için istenen otomasyonun çekirdeğini oluşturacak bir yazılım geliştirmeniz istenmektedir. Bu nedenle nesneye yönelik programlama ilkelerine bağlı kalarak gerekli sınıfları bir sınıf kütüphanesi içinde kodlamanız istenmektedir. Oluşturacağınız Solution içinde iki ayrı proje açmalısınız. Birincisi ClassLibrary projesi, ikincisi otomasyonun arayüzünü oluşturacak Windows Forms Application projesi olmalıdır. Tasarlayacağınız sınıfları; windows uygulamasına kütüphane projesini import ederek veya derleme sonucu elde edeceğiniz dll dosyasını import ederek kullanmalısınız.

CLASS LIBRARY PROJESİ

Ev Sınıfı Alanlar ( Fields ) OdaSayısı, KatNumarası, Semti, Alanı, Yapım Tarihi, Türü, aktif, emlak numarası, vb. Kiralık ev için Depozitosu, Kirası Satılık ev için Fiyatı Türü bilgisini enum olarak tanımlayın: Daire, Bahçeli, Dubleks, Müstakil, vb. Emlak numarası alanı her ev nesnesi için farklı olmalıdır. aktif alanı evin işlem sürecini göstermek için kullanılacaktır. Yani ev için halen müşteri aranıp aranmadığını gösterir.

Özellikler ( Properties ) Tüm alanlar için uygun olarak property tanımlamalarını yazın. Set ve Get blokları içinde gerekli kontrolleri yazın.

Örneğin: Oda Sayısı alanı için negatif değer girilmemelidir. Böyle bir kullanım durumunda oda sayısı sıfır olarak atanmalı ve işlemin yapıldığı zaman ve girilmek istenen negatif değer LOG kaydı olarak bir metin dosyasına kaydedilsin. Pozitif geçerli bir değer ataması için de aynı loglama işlemi yapılsın.

Yapım Tarihi bilgisini kullanarak evin yaşını hesaplayan bir property tanımlayın.

Kurucu Metot ( Constructor ) Oda Sayısı, Kat Numarası, Semti, Alanı alanlarına ilk değer atamalarını yaparak Ev nesnesini oluşturan kurucu metot tanımlaması ekleyin. Ayrıca Kurucu metodu aşırı yükleyin ve farklı versiyonlarını da yazmalısınız.

Metotlar EvBilgileri


Ev sınıfından türetilen bir nesneye ait olan bilgileri görüntüleyecek şekilde biçimlendirip geri döndürmelidir. Biçimlendirme işlemi için string.Format() metodunu kullanın.

FiyatHesapla room_cost.txt isimli dosyadan okunacak katsayı ile oda sayısını çarparak evin olası kira fiyatını hesaplayıp geri döndüren bir metot yazın. Eğer room_cost dosyası yoksa kullanılacak katsayı sabit 200 olarak kullanılsın.

Kiralık Ev Sınıfı Kiralık Ev ve Ev sınıfları arasında yani ilişkisi vardır. Dolayısıyla Ev nesnesinin sahip olduğu tüm özelliklere Kiralık Ev nesnesi de sahip olmalıdır.

EvBilgileri Metodunu override edin ve kiralık ev bilgilerini geri döndürecek şekilde güncelleyin. Uygun kurucu metot tanımlamalarını yapın.

Satılık Ev Sınıfı Satılık Ev ve Ev sınıfları arasında yani ilişkisi vardır. Dolayısıyla Ev nesnesinin sahip olduğu tüm özelliklere Satılık Ev nesnesi de sahip olmalıdır.

EvBilgileri Metodunu override edin ve satılık ev bilgilerini geri döndürecek şekilde güncelleyin. Uygun kurucu metot tanımlamalarını yapın.

WINDOWS FORMS APPLICATION PROJESİ

Emlakçının • Yeni ev ekleme, • Silme, • Düzenleme ve • Sorgulama-listeleme (en önemlisi) işlemlerinin yapılacağı ara-yüzleri içermelidir. Form tasarımları sizin yaratıcılığınıza bırakılmış olup özgün tasarımlar olmak zorundadır.

Program çalıştırıldığında ilk olarak Login Penceresi gelecek ve Kullanıcı Adı – Şifre eşleşmelerini “users.txt” dosyasından kontrol edilecektir. Yetkili bilinen bir kullanıcı ise Login formu kapatılarak; Ana Form açılacaktır.

Kayıt Ekranı: Yeni eklenecek evle ilgili bilgiler bu form üzerinden gerekli kontroller yapılarak alınmalıdır. Burada kullanılacak kontroller ve tasarım olabildiğince kullanıcının işini kolaylaştırıcı şekilde ve hatayı en aza indirgeyecek şekilde seçilmelidir.
Örneğin semt bilgisi seçilecek ile göre ilgili bir metin dosyasından okunarak doldurulacak bir combobox-tan seçilmelidir. Böylece kullanıcının manuel girişinde yapılacak hatalar önlenmiş olur. Kayıtlar 1000 sabit boyutlu ve türü Ev olan bir dizi içinde tutulmalıdır. Aynı zamanda sizin belirleyeceğiniz bir formatta kayıtlar “satilik.txt” ve “kiralik.txt” olmak üzere iki dosyada saklanmalı ve program kapatılıp yeniden açıldıktan sonra kayıtlara ulaşılabilmelidir. Format sizin tarafınızdan belirleneceği için başka projelerle benzerlik gösteremez.

Sorgulama Ekranı: Emlakçının işini kolaylaştıran en önemli arayüzdür. Müşterinin isteklerine göre sorgulama yaparak; kayıtlar arasında uygun evleri arayıp bulan formdur. Sonuçlar bu form üzerinde listelenecek ve detaylarına ulaşmak için Kayıt Ekranına benzer bir form üzerinde kolay bir şekilde görüntülenebilmesi sağlanacaktır. Sorgulama esnasında sadece aktif durumda olan evler varsayılan olarak taranacaktır. Ancak opsiyonel olarak daha önce emlakçının elinde olan ama işlemi tamamlanmış evler de taranabilmelidir.

Sorgulama Ekranından bulunan bir evin detaylarının görüntüleneceği Listeleme formu üzerinden düzenleme, silme ve arşivleme işlemeleri yapılabilmedir. Arşivleme işlemi ev nesnesini tamamen silmek yerine değişkenin değerini true-dan false-a çekmek demektir. Tersi de mümkün olmalıdır.

Listeleme Ekranından evin görüntülerine de ulaşılabilir olmalıdır. İlgili eve ait görüntülerin bulunduğu Windows klasörü, program içinden bir buton ile açılabilmelidir.

Github: https://github.com/eraykisabacak/Emlak-Otomasyonu

English

You are required to develop a software that will form the core of automation for a corporate real estate office. You are therefore required to code the required classes in a class library, adhering to object-oriented programming principles. You must open two separate projects in the Solution you create. The first should be the ClassLibrary project and the second should be the Windows Forms Application project, which will interface with automation. The classes you will design; You should use it by importing the library project into windows application or by importing the dll file that you will get as a result of compilation.
 
CLASS LIBRARY PROJECT
 
House Class Areas Number of rooms, floor number, district, area, construction date, type, active, real estate number, etc. Deposit for rent, Rent For sale house Define Price Type as enum: Apartment, Garden, Duplex, Detached, etc. The property number field must be different for each home object. The active area will be used to show the process of processing the house. That means whether the customer is still looking for the house.
 
Properties Type the property descriptions as appropriate for all fields. Type the necessary controls in the Set and Get blocks.
 
For example: Negative value should not be entered for the Number of Rooms field. In such a case, the number of rooms must be set to zero and the negative value to be entered at the time of the operation is saved as a LOG file in a text file. The same logging process should be performed for a positive valid value assignment.
 
Define a property that calculates the age of the house using the Construction Date information.
 
Constructor Method Add the constructor method definition that creates the Home object by assigning the first value to the Number of Rooms, Floor Number, Neighborhood, Area fields. You should also overload the Installer method and write different versions.
 
 Methods HomeInformation

It must format and return information that belongs to an object derived from the home class. Use the string.Format () method for formatting.
 
PriceCalculate Write a method that calculates and returns the possible rental price of the house by multiplying the coefficient to be read from the file named room_cost.txt. If the room_cost file does not exist, the coefficient to be used is set to constant 200.
 
The Rent House Class has a relationship between the Rent House and the House classes, ie . Therefore, the Rent House object must have all the properties of the House object.
 
Override the HomeInformation Method and update it to return rental information. Make appropriate constituent method definitions.
 
House for Sale Class There is a relationship between the House for Sale and the House classes for <, ie . Therefore, the Sale object must have all the properties of the House object.
 
Override the HomeInformation Method and update it to return home information for sale. Make appropriate constituent method definitions.
 
 
WINDOWS FORMS APPLICATION PROJECT
 
The realtor should include interfaces for • Adding new houses, • Deleting, • Editing, and • Inquiry-listing (most importantly). Form designs are left to your creativity and must be original designs.
 
When the program is started, the Login Window will be displayed first and the User – Password mappings will be checked from the “users.txt” file. If the authorized user is a known user, close the Login form; The Main Form will open.
 
Registration Screen: Information about the house to be added should be obtained by making necessary checks on this form. The controls and design to be used here should be selected to facilitate the user’s work as much as possible and to minimize the error.

For example, a combobox must be selected to be filled in by reading from a relevant text file, depending on the region to be selected. This prevents errors in the user’s manual entry. Records should be kept within a range of 1000 fixed sizes and type Home. At the same time, the records in a format you specify should be stored in two files “satilik.txt” and “kiralik.txt ve and the records should be accessible after the program is closed and reopened. Since the format is determined by you, it cannot be similar to other projects.
 
Inquiry Screen: It is the most important interface that facilitates the real estate agent’s work. By making inquiry according to customer’s requests; is a form that searches for suitable houses between records. The results will be listed on this form and will be easily displayed on a form similar to the Registration Screen for details. Only active homes will be scanned by default during the query. However, the houses that were previously owned by the real estate agent but completed, should be able to be searched.
 

Editing, deleting and archiving operations can be done on the Listing form where the details of a house located on the Inquiry Screen will be displayed. Archiving means changing the value of the variable from true to false instead of completely deleting the home object. The opposite should also be possible.
 
The images of the house should also be accessible from the Listing Screen. The Windows folder containing the images of the respective house should be opened with a button in the program.

Github: https://github.com/eraykisabacak/Emlak-Otomasyonu