Welcome to All of You Neo Guys

Merhaba. Ben Rumeysa. Bu da benim Bilgisayar Mühendisliği öğrencisiyken açtığım blog. Burada Bilgisayar Mühendisliği, Yazılım ve Programlama gibi alanlar hakkında öğrendiklerimi, unutmak istemediklerimi ve tekrar dönüp çalışmak isteyeceğim şeyleri paylaşmayı umuyorum. Paylaşarak daha iyi öğrendiğimi düşünüyorum, gelişmemi kayıt altına alarak gözlemleyebiliyorum ve kendime koca bir motivasyon kaynağı oluşturuyorum. Umarım, bu satırları okuyan herkese bir şeyler katar.💜

Wake up, Neo…

Follow the white rabbit.

SQL Notes | 2 – NULL, UPDATE, DELETE, FUNCTIONS

NULL

-Customers tablosundaki postalcode değerleri boş olan tüm kayıtları çekmek için şu ifadeyi kullanabiliriz:

Select * from customers where postalcode is null;

-Customers tablosundaki postalcode değerleri boş olmayan tüm kayıtları çekmek için şu ifadeyi kullanabiliriz:

Select * from customers where postalcode is not null;

UPDATE

-Customer tablosunda City alanındaki tüm değerleri ‘Konya’ olarak güncellemek için şu ifadeyi kullanabiliriz:

Update customers set city = 'Konya';

-Customer tablosunda Country değeri ‘Türkiye’ olan tüm kayıtların City değerini ‘Konya’ olarak güncellemek için şu ifadeyi kullanabiliriz:

Update customers set city = 'Konya' where country = 'Türkiye';

-Customer tablosundaki customerid değeri 47 olan tüm kayıtların Country değerini ‘Türkiye’ ve City değerini de ‘Konya’ olarak güncellemek için şu ifadeyi kullanabiliriz:

Update customers set city = 'Konya', country = 'Türkiye' where customerid = 47;

DELETE

-Customers tablosundaki Country değeri ‘Türkiye’ olan kayıtları silmek için şu ifadeyi kullanabiliriz:

Delete from customers where country = 'Türkiye';

-Delete tablosundaki tüm kayıtları silmek için şu ifadeyi kullanabiliriz:

Delete from customers;

FUNCTIONS

-Products tablosundaki price değerlerin en küçüğünü bulmak için şu ifadeyi kullanabiliriz:

Select min(price) from products

-Products tablosundaki price değerlerin en büyüğünü bulmak için şu ifadeyi kullanabiliriz:

Select max(price) from products

-Products tablosundaki price değeri 18 olan kayıtların sayısını döndüren sorgu için şu ifadeleri kullanabiliriz:

Select count(*) from products where price = 18;
Select count(1) from products where price = 18; -- bu kod daha performanslı olur. tüm sütunları döndürmez

-Products tablosundaki tüm price değerinin ortalamasını bulmak için şu ifadeyi kullanabiliriz:

Select avg(price) from products;

-Products tablosundaki tüm price değerinin toplamını bulmak için şu ifadeyi kullanabiliriz:

Select sum(price) from products;

SQL Notes | 1 – SELECT , WHERE, ORDER BY, INSERT

SELECT 

-Customer tablosundaki tüm verileri çekmek için aşağıdaki ifadeyi kullanırız.

Select * from customers;

-Customers tablosundan City sütunundaki verileri çekmek için aşağıdaki ifadeyi kullanırız:

Select city from customers;

-Customer tablosundaki tüm farklı Country verilerini çekmek için aşağıdaki ifadeyi kullanabiliriz:

Select distinct countyr from customers;

WHERE

-City sütunundaki veriler ‘ İstanbul’ lanları çekmek için şu ifadeyi kullanabiliriz:

Select * from customers where city = ' İstanbul';

-NOT anahtar kelimesini kullanarak City verisi ‘ İstanbul’ olmayanları şöyle seçebiliriz:

Select * from customers where not city = ' İstanbul';

-Customers tablosundaki customerid değeri 18 olanları şu şekilde çekebiliriz:

Select * from customers where customerid = 18;

-Customers tablosundaki City değeri ‘İstanbul’ olan ve postalcode değeri 32200 olan kayıtları şu şekilde çekebilirz:

Select * from customers where city = ' İstanbul' and  postalcode = 32200;

-Customers tablosundaki City sütunundaki veriler ‘ İstanbul’ veya ‘Balıkesir’ olanlanları çekmek için şu ifadeyi kullanabiliriz:

Select * from customers where city = ' İstanbul' or city = 'Balıkesir' ;

ORDER BY

-Customers tablosundaki City sütunundaki verileri alfabetik olarak sıralı çekmek için şu ifadeyi kullanabiliriz:

Select * from customers where order by city;

-Customers tablosundaki Country ve City sütunundaki verileri, önce Country sonra da City için alfabetik olarak sıralı çekmek için şu ifadeyi kullanabiliriz:

Select * from customers where order by country, city;

INSERT

-Customer tablosuna yeni bir kayıt eklemeyi şu ifadeyle yapabiliriz:

Insert into Customers
(CustomerName,
Address,
City,
PostalCode,
Country)
values
('Ahmet Gürsoy',
'Beyoğlu',
'İstanbul',
'32000',
'Türkiye');

PL-SQL Notes | 2

%type özelliğini inceleyelim

Örnek

DECLARE

    v_adi varchar2(20);               -- 1* Açıklanacak
    v_adi employees.firstname%type;   -- 2* Açıklanacak
    v_kullanici varchar2(50);
    v_kayit_zamani date;

BEGIN

    SELECT user, sysdate INTO v_kullanici, v_kayit_zamani FROM dual;    -- 3* Açıklanacak

    SELECT t.firstname INTO v_adi FROM employees t WHERE t.employeeid = 12;

    INSERT INTO employees (firstname) VALUES (v_adi);    -- 4* Açıklanacak

dbms_output.put_line('Adı: ' || v_adi || 'Sistem Kullanıcı Adı: ' || v_kullanici);

END;

Açıklamalar:

  • SELECT INTO: Select sonucu değer veya değerleri, değişkenlere atamak için kullanılır.
  • 1* varchar2(20) , varchar türünde maksimum 20 karakterlik bir değişken.
  • 2* employees.firstname%type , employees tablosundaki, firstname sütununun veri tipi neyse onu alır. Veri tipini bilmediğimiz durumlarda bunu kullanırız.
  • 3* v_kullanici, v_kayit_zamani buradaki sıralama önemlidir. user, sysdate ile eşdeğer olacak şekilde aynı sırada olmalıdır.
  • 4* employees = tablo adı , (firstname) = sütun adı , (v_adi) = değişken.

PL-SQL Notes | 1

PL-SQL öğrenmeye çalıştığım bu süreçte tuttuğum notları paylaşacağım. Umarım devamlılığı olur.


⭐ func, proc, views, table, index –> veri tabanı boyutunda yer alır.


Kodlar Bu İfadelerin Arasına Yazılır:

DECLARE    (zorunlu değil)

BEGIN    (zorulu)

    -- executing, buraya çalışacak kodlar yazılır.

    EXCEPTION    (zorunlu değil)

    -- hata oluşması durumunda çalışır.

END;

Yorum satırı

Tek satır:    --          Çok satır:    /* */

Değişken Tanımlama

DECLARE

    değişken_adı değişken_tipi;
    değişken_adı değişken_tipi := değeri;

BEGIN

    -- burada en az bir işlem parçacığı yazılmalı.

END;

Örnek

DECLARE

    v_adi varchar2(20);            -- 1* Açıklanacak
    v_soyadi varchar(30);
    v_yasi number := 25;
    v_dtarihi date;
    v_boyu number(3,2) := 1,756;   -- 2* Açıklanacak
    v_kilo float := 0;
    v_maas number(5.2) := 0;
    v_vergi_tutari number := 0;

BEGIN

    v_adi := 'Rumeysa';
    v_soyadi := 'Aydoğdu';
    v_dtarihi := to_date('10.12.2021','dd.MM.yyyy');
    v_kilo := 59.50;
    v_maas := 123.55;
    v_vergi_tutari := round(v_maas * 15/100, 2);

    dbms_output.put_line('Personelin Adı: ' || v_adi);    -- 3* Açıklanacak

END;

Açıklamalar:

  • 1* VARCHAR2, Oracle veritabanındaki VARCHAR ile aynıdır. Temel fark, VARCHAR’ın ANSI Standardı ve VARCHAR2’nin Oracle standardı olmasıdır. VarChar2 veri türü, karakter değerlerini depolamak için kullanılır. Değişken uzunluklu bir veri türüdür, yani yürütme zamanında karakter değişkeninin boyutunu değiştirebiliriz.
  • 2* number(x,y) değeri olan sayıyı yuvarlayıp alır. Yani v_boyu number(3,2) := 1.756; doğrudur. Çıktısı 1.75 olur. number(x,y) ifadesinde x, virgülden önceki ve sonraki tüm sayıların kaç adet olacağını ifade eder. y ise virgülden sonra kaç adet sayı olacağını. Dolayısıyla x-y = virgülden önceki sayı adedine denk gelir. Bir örnek vermek gerekirse, v_boyu number(3,2) := 12.6; ifadesi HATALIDIR. Virgülden önce 1 adet sayı olmalı (3-2=1)
  • 3* || yani OR operatörü burada (+) gibi, sağındaki ve solundaki iki ifadeyi birleştirmek için kullanılıyor.
  • dbms_output.put_line() ile çıktı verebiliyoruz

JavaScript Tips | Day 9 #30DaysOfJavaScript


9thDayOf30DaysJavaScript


Default Değeri Kullanma

let student = {id:1, name:"Rumeysa"}

function save(puan = 10, ogrenci){ // default varsa onu sona yazmak önerilir yani (ogrenci, puan =10) şeklinde
    console.log(ogrenci.name + " : " + puan)
}

save(undefined, student);

default değeri olan bir değişkeni fonksiyona önce gönderdik. Bu default değeri kullanmak, çekmek istiyoruz fakat save(student) şeklinde çağırırsak student bilgisini puan değişkenine atamaya çalışır. ogrenci.name ‘ i çekemez. Bunun için default kullanacağımız değer yerine undefined yazıyoruz.


Position: absolute ‘ u anlamak ve position: absolute ile position: relative arasındaki fark

Bu konu için harika açıklayıcı bir kaynak buldum. 🥳 Teşekkürler Fehmi Uyar.

MVC Proje Kampı || 2

Bu kısımda View, Controller ve Layout kavramlarını öğreneceğiz.

Kendimiz layout ve Controller oluşturacağız. Controller içerisinde oluşturacağımız metod için bir View oluşturacağız.

Her bir menü alanı Controller olarak tutulacak. Bu kamp projesinden örnek verirsek ekşi sözlük tarzı bir web projesi geliştirleceği için başlıklar, kullanıcılar, yazılar, admin vb. birer Controller olacak.


Controller üzerinde sağ tıklayıp Add (Ekle) > Controller(Denetleyici) ile boş bir Controller (MVC 5 Controller – Empty) ekliyoruz.

İsmini TestController yapıyoruz.


Burada Index ActionResult’ı hazır olarak geliyor. Bunu bir View oluşturmak için kullanacağız.

Bunlardan önce bir layout oluşturacağız. Layout, web sitelerinde sayfalar değişse bile sabit kalan alanlardır. View içerisindeki Shared isimli klasörün içinde layout’u tanımlıyoruz.

_Deneme isimli oluşturulan layout

Shared üzerinde sağ tıklayıp Add (Ekle) > View (Görünüm) ile View ekleyip “Use a layout page (Bir düzen sayfası kullanın)” seçeneğini işaretlemezsek bu View’ın (Görünüm’ün) kendisi bir layout haline gelecektir.


  • Proje bu adımda View üzerinden çalıştırılamaz. Projenin buradan çalıştırılabilmesi için bu sayfanın bir Controller’ı olması gerekiyor.

TestController içerisindeki Index üxerine sağ tıklayıp Add View ile Index isimli bir View oluşturuyoruz. Bu View, Shared klasörü içindeki _Deneme isimli layout’u kullanacak şekilde işaretliyoruz.

Views > Test altında Index.cshtml oluşuyor.


Sayfalar yüklenirken sayfaların layout’un içerisinde nereye yükleneceğini belirtmezsek hata alırız.

Örenğin Index isimli sayfamızı tarayıcıda çalıştırırsak _Deneme isimli layout sayfası için RenderBody isimli metodun çağrılmadığı hatasıyla karşılaşırız.

Sayfaların yerini layout’da gösterirken bunu Render metodu ile yapacağız. Bunun için de Razor Syntax’ını kullanacağız. Razor Syntax, HTML tarafında C# komutlarını kullanmamızı sağlayacak. Bunu yapmak için C# kodlarının başına @ sembolünü ekliyoruz.

Bu değişiklikleri yaptıktan sonra sayfayı yenilememiz yeterli olacaktır.Projeyi yeniden derlemeye gerek yoktur. Bunun sebebi yapılan değişikliklerin Front-end tarafında olmasıdır.

Layout içerisinde oluşturduğumuz div içerisinde sayfaımızda görünecek olan layout kısmını da tanımlayabiliriz.

Değişiklikleri görüntülerken bu değişiklikler View kısmında olduğu için derleme yapmadan sayfayı kaydederek tarayıcıda yenilememiz yeterli olacaktır.


Şimdi 2. bir sayfa oluşturacağız.

TestController’da Test2 adlı bir ActionResult metodu oluşturuyoruz.

Üzerine sağ tıklayıp View oluşturuyoruz ve bu View’ı _Deneme isimli layout’a bağlıyoruz.

Derleyip tarayıcıda çalıştırıyoruz. Derleme sebebimiz Controller tarafında değişiklikler yapmış olmamız.

Test içerisinde hangi sayfayı görüntülemek istediğimizi arama kısmından değiştirebiliriz.

Sayfanın daha önce _Deneme olan başlığını (title’ını) layout içerisinden değiştirebiliriz.


Ders videolarına ulaşmak isterseniz: https://www.youtube.com/watch?v=VnfpRjs7j7E

MVC Proje Kampı || 1

Bu serimizde Murat Yücedağ ile birlikte 3 ay sürecek olan bu MVC projesini geliştirmeye ve öğrendiklerimi aktarmaya çalışacağım. Sonunu güzel bir şekilde getirebileceğim bir proje olması dileğiyle🌸


C# programlama dili altında çalışacağız bu nedenle Visual Basic değil, C# altında bulunan Asp .NET projesini seçiyoruz. Burada Controller dosyalarımız .cs uzantılı olacak. Visual basic ile açsaydık .vb uzantılı olacaktı. Ayrıca .NET Framework ile çalışacağız. .NET Core ile değil.


Boş bir şablon seçince klasör ve çekirdek başvuruları seçilmemiş oluyor.
  • Empty: Boş bir ASP projesi oluşturup bütün yapıyı kendimiz dizayn edebiliriz.
  • Web Forms: Microsoft artık destek vermiyor. Bu nedenle artık çok fazla tercih edilmiyor.
  • MVC: Aktif bir şekilde kullanılmaya devam ediliyor. Yerini her geçen gün .NET Core’a (.NET 5) doğru bırakarak ilerliyor.

Web forms şablonunu seçince klasör ve çekirdek başvuruları kısmında Web Forms seçilmiş oluyor.

MVC şablonunu seçince klasör ve çekirdek başvuruları kısmında MVC seçilmiş oluyor.

Web API şablonunu seçince klasör ve çekirdek başvuruları kısmında MVC ve Web API seçilmiş oluyor.

Tek SAyfalı Uygulama şablonunu seçince klasör ve çekirdek başvuruları kısmında MVC ve Web API seçilmiş oluyor.

Biz ilk aşama olarak MVC yapısını tanımak amacıyla MVC şablonunu seçerek bunun üzerinde ilerleyeceğiz.


Solution Explorer (Çözüm Gezgini) kısmından projemizin katmanlarına ulaşabileceğiz.

MVC şablonu üzerinde bir proje oluşturduk. Bu proje şu an bir katmanlı (katman ismi: MvcProjeKampi). Bu katmanın ismi bazıları tarafından “User Interface (Kullanıcı Ara Yüzü)”, bazıları tarafından ise “Presentation (Sunum)” katmanı olarak adlandırılıyor. Bu katman içerisinde klasörler bulunuyor.

MVC 3 temel yapıya dayanıyor:

  1. Model: Veri tabanına ait, entity adı verilen kavramların tanımlandığı kısım.
  2. View: Tasarım (Front-end) kısmı.
  3. Controller: Back-end (C# kodlama) kısmı.

HomeController içerisinde Index, About ve Contact gibi ActionResult türünde (integer, string, json gibi türler de tanımlanabilir) bazı metodlar bulunuyor.

Metodların içerisinde return View() ile görüntülenmek üzere sayfa döndürülüyor.

Index metodu genellikle listeleme işi için kullanılıyor. Veriler listelenirken Index isimli bir isimle adlandırılıyor.

HomeController içerisinde tanımlanan metodlar varsa bu metodların mutlaka View tarafında karşılığı olmalı.

View > Home içerisinde ifadeler alfabetik olarak sıralanıyor. Bu sayfalar içerisinde HTML (Front-end) tarafı yazılıyor.


Projeyi derleyip istediğimiz tarayıcı üzerinde çalıştırıyoruz.

Projemiz alan adı almadığımız ve sunucu kiralamadığımız için localhost (yerel sunucu) üzerinde yükleniyor. Burada benim için 44370 şeklinde bir port numarası tanımlamış.

Bu çalışan proje içerisinde Application name (Uygulama adı) ve Home (Giriş Sayfası) kısımları aynı linklere gidiyor.

Sayfalar değişse bile sabit kalan bir alan var. Content (içerik) alanı değişken, Layout (eski adıyla Master Page) sabit kalıyor. HTML tarafında burası (üstteki alan) Navbar (Navigation Bar) şeklinde adlandırılıyor. Footer ise altta kalan değişmeyen alandır (2021 – ASP.NET Uygulamam yazan kısım).


Controller kısmında ActionResult türünde Test adında yeni bir metod tanımlayıp içerisinde sayfa döndürüyoruz.

Test metodunun üstüne gelip sağ tıklayarak Add View (Görünüm Ekle) kısmına tıklıyoruz.

Önümüze çıkan pencerede “Use a layout page (Bir düzen sayfası kullan)” seçeneğini işaretleyerek Test ismindeki sayfayı bir layout ile bağlı şekilde çalıştıracağımızı belirtiyoruz.

Layout dosyasını Views > Shared altında Layout.cshtml seçerek ekliyoruz.

Bu işlemin ardından Test sayfamız Views > Home altına eklenmiş oluyor.


Test sayfasını görüntülemek için tarayıcıda açık olan sayfamızı yenilemek yetmez. Controller veya sınıflar (Views) kısmında bir değişiklik gerçekleştirirsek projeyi yeniden. derlememiz gerekir. Derledikten sonra projeyi tarayıcıda görüntülersek (çalıştırırsak) Test sayfası gelmiş olacaktır.


Ders videolarına ulaşmak isterseniz: https://www.youtube.com/watch?v=yFToRUL6h8A

C# Öğreniyoruz | Engin Demiroğ Fan Club

C# Temelleri

Referans Tipler

Class

Kapsülleme (Encapsulation)

Arayüz (Interface)

Kalıtım (Inheritance)

Interface ile Kalıtım Inheritance Arasındaki Fark

Interface ve Abstract

Yapıcı (Constructor)

Linq

C# || Kapsülleme (Encapsulation) – get ve set Anahtar Sözcükleri

Kapsülleme (Encapsulation)

Sınıf içerisinde erişilmesi istenmeyen özellikler olabilir. Bunlar için kapsülleme uygulayabiliriz. Bu özellikler private anahtar değişkeni ile tanımlanır. Erişimi sınırlandırılmış olan bu özelliklere erişmek için metotları kullanırız.

namespace Pastane
{
   class Personel
       {
            public string ad, soyad, kat, bolum;
            string kurum = Asude Pastanesi;   //private kabul edilir. (Erişim belirteci)  istenilirse private yazılabilir
            public void personelBilgi(){
                Console.WriteLine(kurum);
                Console.WriteLine("{0} {1} {2} {3}", kat, bolum, ad, soyad);
            }
       }

   class AnaProgram
       {
            string void Main(string[] args)
            {
                Personel kisi = new Personel();  
                kisi.ad = "Lale";
                kisi.soyad = "Aygün";
                kisi.kat = "1. Kat";
                kisi.bolum = "Kasa";
                kisi.personelBilgi();
                Console.ReadKey();
            }
       }
}

ÇIKTI

Asude Pastanesi
1. Kat Kasa Leyla Aygün

get ve set Anahtar Sözcükleri

private anahtar sözcüğü ile ait oldukları sınıf dışından erişim kapatılan özelliklere get ve set anahtar sözcükleri ile erişim sağlanabilir. Bu anahtar sözcükler özelliklerden değer okumak veya özelliklere değer atamak için kullanılırlar. get ya da set sözcüklerinin ikisi de kullanılmak zorunda değildir. Değer atamak istendiğinde set, değer okumak istendiğinde get kullanılabilir.

class Ucgen
    {
         private state int x, y, z, toplam;

         public int kenarX
         {
             get { return x;}
             set { x = value;}
         }

         public int kenarY
         {
             get { return y;}
             set { y = value;}
         }

         public int kenarZ
         {
             get { return z;}
             set { z = value;}
         }

         public int topla()
         {
             toplam = x + y + z;
             return toplam;
         }

    }  

class AnaProgram
    {
         string void Main(string[] args)
         {
             Ucgen ucgen = new Ucgen();  
             ucgen.kenarX = 3;
             ucgen.kenarY = 4;
             ucgen.kenarZ = 5;
             Console.WriteLine("{0} + {1} + {2} = {3}", ucgen.kenarX, ucgen.kenarY, ucgen.kenarZ, ucgen.topla());
             Console.ReadKey();
         }
    }

Kaynak

  • Örneklerle Algoritma ve C# Programlama – Erhan Arı

JavaScript | Day 8 #30DaysOfJavaScript

8thDayOf30DaysJavaScript

Nesneye Yeni Özellik Ekleme

Mevcut JavaScript nesnelerine, onları değiştirdiğiniz şekilde yeni özellikler ekleyebilirsiniz.

var myDog = {
  "name": "Happy Coder",
  "legs": 4,
  "tails": 1,
  "friends": ["Bolt"]
};

myDog.bark = "woof";

Nesneden Özellik Silme

delete object.property; şeklinde silme işlemini gerçekleştirebiliriz.

var ourDog = {
  "name": "Camper",
  "legs": 4,
  "tails": 1,
  "friends": ["everything!"],
  "bark": "bow-wow"
};

delete ourDog.bark;



NESNENİN SON HALİ:


{
  "name": "Camper",
  "legs": 4,
  "tails": 1,
  "friends": ["everything!"]
}

Nesne Özelliklerini Test Etme

Bazen belirli bir nesnenin özelliğinin var olup olmadığını kontrol etmek yararlıdır. Nesnelerin .hasOwnProperty (propname) yöntemini, o nesnenin verilen özellik adına sahip olup olmadığını belirlemek için kullanabiliriz. .hasOwnProperty (), özelliklerin bulunup bulunmama durumuna göre true veya false döndürür.

var myObj = {
  top: "hat",
  bottom: "pants"
};
myObj.hasOwnProperty("top");    // true
myObj.hasOwnProperty("middle"); // false

“Knowing is not enough; we must apply. Wishing is not enough; we must do.”

Johann Wolfgang von Goethe