<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Berkan Yıldırım</title>
    <description>The latest articles on DEV Community by Berkan Yıldırım (@berkanyldrim).</description>
    <link>https://dev.to/berkanyldrim</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F838198%2F046f25f8-b3b8-48f4-b0bc-0a0130934341.jpg</url>
      <title>DEV Community: Berkan Yıldırım</title>
      <link>https://dev.to/berkanyldrim</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/berkanyldrim"/>
    <language>en</language>
    <item>
      <title>Bilmeniz gereken HTTP Durum Kodları</title>
      <dc:creator>Berkan Yıldırım</dc:creator>
      <pubDate>Sat, 08 Apr 2023 15:42:44 +0000</pubDate>
      <link>https://dev.to/berkanyldrim/bilmeniz-gereken-http-durum-kodlari-1593</link>
      <guid>https://dev.to/berkanyldrim/bilmeniz-gereken-http-durum-kodlari-1593</guid>
      <description>&lt;p&gt;Merhaba,&lt;/p&gt;

&lt;p&gt;Bir istemci bir sunucuya istek gönderdiğinde, yanıt her zaman bir durum kodu içerir. Bunu her zaman göremeyebilirsiniz ama her işlemci-sunucu etkileşiminde bu durum kodları döndürülür. Bir programcı olmasak bile 404 Sayfa bulunamadı hatasını bir çoğumuz bilmektedir.&lt;/p&gt;

&lt;p&gt;Bu yazımda , HTTP ve durum kodları hakkında öğrendiklerimi ve araştırmalarımı sizinle paylaşacağım.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bu yazı neler anlatıyor.&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;ol&gt;
&lt;li&gt;HTTP nedir ?&lt;/li&gt;
&lt;li&gt;Durum kodu nedir ?&lt;/li&gt;
&lt;li&gt;1XX - Bilgilendirme yanıtları(Informational Response)&lt;/li&gt;
&lt;li&gt;2XX - Başarı işlem yanıtları(Success)&lt;/li&gt;
&lt;li&gt;3XX - Yönlendirme mesajları(Redirection)&lt;/li&gt;
&lt;li&gt;4XX - İşlemci hatası mesajları(Client errors)&lt;/li&gt;
&lt;li&gt;5XX - Sunucu hatası mesajları(Server errors)&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  HTTP nedir ?
&lt;/h2&gt;

&lt;p&gt;“Hyper Text Transfer Protocol” ifadesinin kısaltması olan HTTP, Türkçede kendine “Köprü Metni Aktarım Protokolü” ya da “Hiper Metin Transfer Protokolü” şeklinde karşılık bulur. Evrensel kullanımı HTTP şeklindedir ve web üzerindeki mesajların, biçim ve gönderim şeklini tanımlayan standart bir protokoldür.&lt;/p&gt;

&lt;h2&gt;
  
  
  Durum kodu nedir ?
&lt;/h2&gt;

&lt;p&gt;HTTP durum kodları, sunucuların istemcilere döndürdüğü yanıtların başarısını veya başarısızlığını belirleyen üç haneli sayısal kodlardır. Her durum kodu belirli bir anlam taşır ve belirli bir yanıt türünü ifade eder.&lt;/p&gt;

&lt;p&gt;Temel olarak beş standart grup vardır. Bunlar aşağıdaki gibidir:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;1XX - Bilgilendirme yanıtları(Informational Response)&lt;/li&gt;
&lt;li&gt;2XX - Başarı işlem yanıtları(Success)&lt;/li&gt;
&lt;li&gt;3XX - Yönlendirme mesajları(Redirection)&lt;/li&gt;
&lt;li&gt;4XX - İşlemci hatası mesajları(Client errors)&lt;/li&gt;
&lt;li&gt;5XX - Sunucu hatası mesajları(Server errors)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Her gruba kısaca bir göz atalım.&lt;/p&gt;

&lt;h2&gt;
  
  
  1XX — Informational Response
&lt;/h2&gt;

&lt;p&gt;Bilgilendirici bir yanıt, isteğin alındığını ve anlaşıldığını gösterir. Talep işleme devam ederken geçici olarak verilir.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;100 Continue:&lt;/strong&gt; İstemci, isteğine devam edebilir. Sunucu, isteği kabul etti ve isteğin devamını bekliyor.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;101 Switching Protocols:&lt;/strong&gt; Sunucu, istemci talebi üzerine protokol değiştiriyor.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;102 — Processing:&lt;/strong&gt; Bu kod, sunucunun isteği aldığını ve işlemekte olduğunu ancak henüz yanıt alınamadığını gösterir.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;103 — Early Hints:&lt;/strong&gt; Son HTTP mesajından önce bazı yanıt başlıklarını döndürmek için kullanılır.&lt;/p&gt;

&lt;h2&gt;
  
  
  2XX — Success
&lt;/h2&gt;

&lt;p&gt;Sunucu, isteği başarıyla işledi.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;200 OK:&lt;/strong&gt; İstek başarılı, sunucu istenen kaynağı buldu ve yanıt verdi.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;201 Created:&lt;/strong&gt; İstek başarılı, sunucu yeni bir kaynak oluşturdu.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;202 Accepted:&lt;/strong&gt; Sunucu, isteği kabul etti ancak henüz işleme almadı.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;203 Non-Authoritative Information&lt;/strong&gt;: Sunucu, yanıt verirken kaynağı doğrudan almadı, başka bir kaynaktan alınan bilgiyi yanıt olarak döndürdü.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;204 No Content:&lt;/strong&gt; Sunucu, isteği başarılı bir şekilde işledi ancak yanıt olarak içerik döndürmedi.&lt;/p&gt;

&lt;h2&gt;
  
  
  3XX — Redirection
&lt;/h2&gt;

&lt;p&gt;İstemci, yeni bir konuma gitmesi gerekiyor.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;300 Multiple Choices&lt;/strong&gt;: İstemci, kaynağın birden fazla sürümü olduğu için bir seçim yapmak zorunda kalabilir.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;301 Moved Permanently:&lt;/strong&gt; Kaynağın önemli ölçüde yeniden tasarlandığını ve istemcinin istenen kaynağına yeni bir kalıcı URI’nin atandığını gösterir.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;302 Found:&lt;/strong&gt; İstek yapılan kaynak geçici olarak başka bir URI'da bulunduğu için, istemci isteği yeni yerine yönlendirir.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;303 See Other:&lt;/strong&gt; İstemci, başka bir URI'ye yönlendirilmelidir.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;304 Not Modified:&lt;/strong&gt; İstemci, kaynakta herhangi bir değişiklik olmadığı için önbellekteki veriyi kullanabilir.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;307 Temporary Redirect&lt;/strong&gt;: İstemci, kaynağın geçici olarak başka bir URI'da bulunduğunu belirten bir yanıt alır.&lt;/p&gt;

&lt;h2&gt;
  
  
  4XX — Client errors
&lt;/h2&gt;

&lt;p&gt;Sunucu, isteği işleyemez.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;400 Bad Request:&lt;/strong&gt;  Sunucunun geçersiz bir istek sebebiyle isteği anlayamadığını belirtir.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;401 Unauthorized:&lt;/strong&gt; Anlamsal olarak “kimliği doğrulanmamış” anlamına gelir. İstemci istenen yanıtı almak için kendini bir nevi doğrulamalıdır.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;403 Forbidden:&lt;/strong&gt; İstemcinin içeriğe erişim hakkı yoktur, yani yetkisizdir. 401’den farkı, istemcinin kimliği sunucu tarafından bilinir.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;404 Not Found:&lt;/strong&gt; Sunucu istenen kaynağı bulamıyor. Tarayıcı tarafında URL’nin tanınmadığı anlamına geliyor. API tarafında ise endpoint’in geçerli olduğunu fakat kaynağın kendisinin mevcut olmadığı anlamına gelir.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;405 Method Not Allowed:&lt;/strong&gt; İstek yapılan kaynak, istenen HTTP metoduyla uyumlu değil.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;406 Not Acceptable:&lt;/strong&gt; Sunucu, istemcinin kabul edilebilir içerik türlerini desteklemiyor.&lt;/p&gt;

&lt;h2&gt;
  
  
  5XX — Server Errors
&lt;/h2&gt;

&lt;p&gt;Sunucu, isteği işleyemedi ve istemciye yanıt veremedi. 500 durum kodu, bir sunucu hatası olduğunu ve isteğin başarısız olduğunu belirtir.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;500 Internal Server Error:&lt;/strong&gt; Sunucu, isteği işleyemedi ve beklenmeyen bir hata meydana geldi.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;501 Not Implemented:&lt;/strong&gt; Sunucu, istemcinin istediği işlemi gerçekleştirecek yeteneğe sahip değil.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;502 Bad Gateway:&lt;/strong&gt; Sunucu, istemcinin talebini yerine getirebilmek için, bir proxy sunucu veya başka bir aracı sunucuya ihtiyaç duyduğunda ve bu aracı sunucudan beklenen yanıt alınamadığında gönderilir.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;503 Service Unavailable:&lt;/strong&gt; Sunucu, isteği karşılamak için geçici olarak kullanılamaz durumda.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;504 Gateway Timeout:&lt;/strong&gt; Sunucu, istemcinin talebini yerine getirebilmek için, bir proxy sunucu veya başka bir aracı sunucuya ihtiyaç duyduğunda ve bu aracı sunucudan beklenen yanıt süresi aşıldığında gönderilir.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;505 HTTP Version Not Supported:&lt;/strong&gt; Sunucu, istemcinin talep ettiği HTTP sürümünü desteklemiyor.&lt;/p&gt;

&lt;p&gt;Bu yazımda anlatacaklarım umarım sizin içinde faydalı olmuştur. Okuyup zaman ayırdığınız için teşekkür ederim.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Kaynakça:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Chatgpt&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Status"&gt;https://developer.mozilla.org/en-US/docs/Web/HTTP/Status&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>webdev</category>
      <category>frontend</category>
      <category>beginners</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Formik ve Yup ile React Form Validasyonu</title>
      <dc:creator>Berkan Yıldırım</dc:creator>
      <pubDate>Sun, 21 Aug 2022 12:40:32 +0000</pubDate>
      <link>https://dev.to/berkanyldrim/formik-ve-yup-ile-react-form-validasyonu-206o</link>
      <guid>https://dev.to/berkanyldrim/formik-ve-yup-ile-react-form-validasyonu-206o</guid>
      <description>&lt;p&gt;Bir çoğumuz projelerimizde ve gündelik çalışmalarımızda formlar ile çalıştık ve çalışıyoruz. Peki oluşturduğumuz bu form yapılarımıza valisdasyonlarımızı yani doğrulamalarımızı koyuyor muyuz ? &lt;/p&gt;

&lt;p&gt;İstemci tarafı form doğrulamasını yerleştirmeliyiz. Bunun nedeni, kullanıcı deneyimini ve web sitesi performansını iyileştirmesi ve arka uç sunucusuna geçersiz veri gönderilmesini engeller.&lt;/p&gt;

&lt;p&gt;Bu yazıda React'a Formik ve Yup kullanarak &lt;strong&gt;email , şifre ve şifre kontrol&lt;/strong&gt; alanlarına nasıl doğrulama ekleyeceğimizi anlatacağım.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Adım 1 :&lt;/strong&gt; Yeni bir React projesi oluşturalım.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npx create-react-app form-validation
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Adım 2 :&lt;/strong&gt; Ardından uygulamaya formik kütüphanesini kuralım&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cd form-validation
npm install formik --save
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Adım 3 :&lt;/strong&gt; Ardından uygulamamıza Yup'u dahil edelim&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install yup --save
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Adım 4 :&lt;/strong&gt; Uygulama klasörlerimiz içerisinde &lt;strong&gt;components&lt;/strong&gt; isimli bir klasör daha açalım ve bunun içerisine &lt;strong&gt;Signup.js&lt;/strong&gt; isimli dosya oluşturalım. Daha sonra &lt;strong&gt;validations.js&lt;/strong&gt; isimli bir dosya daha oluşturalım burada form'umuz için gerekli olan validasyonları tanımlayıp  &lt;strong&gt;Signup.js&lt;/strong&gt; sayfamızda import edeceğiz.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Adım 5 :&lt;/strong&gt; Signup.js dosyamızda gerekli importları yapalım.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import React from "react";
import { useFormik } from "formik";
import validationSchema from "./validations";
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Adım 6 :&lt;/strong&gt; Daha sonra useFormik ile initialValues , handleSubmit,validationSchema özelliklerini ekleyin.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const { handleChange, handleSubmit, values, handleBlur, errors, touched } =
    useFormik({
      initialValues: {
        email: "",
        password: "",
        passwordConfirm: "",
      },
      onSubmit: (values) =&amp;gt; {
        console.log(values);
      },
      validationSchema,
    });
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Burada gördüğümüz : &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;handleChange:&lt;/strong&gt; form yapısında inputlar içerisindeki değişimleri yakalamak için.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;handleSubmit:&lt;/strong&gt; form submit olduğunda kullanacağımız özellik.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;values:&lt;/strong&gt; Form inputlarında girilen değerleri yakalamak için kullandığımız özellik&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;handleBlur:&lt;/strong&gt; İnputa tıklandı ve daha sonra tıklanan inputtan çıktığınız an çalışan özellik.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;errors:&lt;/strong&gt; Yup'un formikle uyumlu çalıştığını gösteren özellik ismindende anlaşılacağı gibi inputlardaki error mesajları için kullanılır.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;touched:&lt;/strong&gt; İnputa daha önce touch olmuşmu yani focus yapılmışmı.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;validations.js import ettiğimiz isimi fark ettiyseniz useFormik içerisinde kullandığımız &lt;strong&gt;&lt;em&gt;validationSchema&lt;/em&gt;&lt;/strong&gt; ile aynı bunun nedeni eğer farklı bir isimle(validations) import etseydik useFormik içerisinde &lt;strong&gt;&lt;em&gt;validationSchema=validations&lt;/em&gt;&lt;/strong&gt; şeklinde kullanmamız gerekecekti.&lt;/p&gt;

&lt;p&gt;Daha kolay ve pratik olması için ben böyle bir kullanıma gittim bu sizin tercihinize göre değişebilir.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Adım 7 :&lt;/strong&gt; validations.js dosyamızda artık gerekli kontrolleri yazabiliriz.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const validations = yup.object().shape({
  email: yup
    .string()
    .email("Geçerli Bir Email Giriniz !!")
    .required("Zorunlu Alan"), 
  password: yup.string().min(5, "En az 5 karakter giriniz !!").required(),
  passwordConfirm: yup
    .string()
    .oneOf([yup.ref("password")])
    .required(),
});
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Burada &lt;strong&gt;email&lt;/strong&gt; için strgin olduğunu ve geçerli bir email olup olmadığının kontrolü için yup'un email() fonk. kullanıyoruz ve son olarak zorunlu alan olduğu içinde required() kullanıyoruz.&lt;/p&gt;

&lt;p&gt;Aynı şekilde password ve passwordConfirm için string olduğunu passwordun minimum 5 karakter olacağını ve passwordConfirm'ün password ile aynı olup olmadığını anlamak içinde oneOf() özelliği içinde password'u referans veriyoruz.&lt;/p&gt;

&lt;p&gt;Burada parantez içerisinde yazdığım türkçe uyarılar ise yup'un bize sağladığı default errorlar haricinde kendi görmek istediğiniz errorları oluşturmanız için kullanılan alan olarak düşünebilirz.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Adım 8 :&lt;/strong&gt; Son olarak form yapımızı oluşturalım ve inputların her birine onChange eklemeyi unutmayalım.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;form onSubmit={handleSubmit}&amp;gt;
        &amp;lt;label&amp;gt;Email&amp;lt;/label&amp;gt;
        &amp;lt;input
          name="email"
          value={values.email}
          onChange={handleChange}
          onBlur={handleBlur}
        /&amp;gt;
        {errors.email &amp;amp;&amp;amp; touched.email &amp;amp;&amp;amp; (
          &amp;lt;div className="errors"&amp;gt;{errors.email}&amp;lt;/div&amp;gt;
        )}
        &amp;lt;br /&amp;gt;
        &amp;lt;br /&amp;gt;
        &amp;lt;label&amp;gt;Password&amp;lt;/label&amp;gt;
        &amp;lt;input
          name="password"
          value={values.password}
          onChange={handleChange}
          onBlur={handleBlur}
        /&amp;gt;
        {errors.password &amp;amp;&amp;amp; touched.password &amp;amp;&amp;amp; (
          &amp;lt;div className="errors"&amp;gt;{errors.password}&amp;lt;/div&amp;gt;
        )}

        &amp;lt;br /&amp;gt;
        &amp;lt;br /&amp;gt;
        &amp;lt;label&amp;gt;Password Confirm&amp;lt;/label&amp;gt;
        &amp;lt;input
          name="passwordConfirm"
          value={values.passwordConfirm}
          onChange={handleChange}
          onBlur={handleBlur}
        /&amp;gt;
        {errors.passwordConfirm &amp;amp;&amp;amp; touched.passwordConfirm &amp;amp;&amp;amp; (
          &amp;lt;div className="errors"&amp;gt;{errors.passwordConfirm}&amp;lt;/div&amp;gt;
        )}

        &amp;lt;br /&amp;gt;
        &amp;lt;br /&amp;gt;
        &amp;lt;button type="submit"&amp;gt;Submit&amp;lt;/button&amp;gt;
      &amp;lt;/form&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Uygulamamızda errorlar şu şekilde gözükecektir.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--0S6SJDPP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/x2cqhp9e5frdybkskbug.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--0S6SJDPP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/x2cqhp9e5frdybkskbug.PNG" alt="Image description" width="645" height="516"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Uygulama Kodları:&lt;/strong&gt; &lt;a href="https://github.com/berkanyldrim/react-apps/tree/main/formik"&gt;formik-yup-app&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Vaktinizi ayırıp yazımı okuduğunuz için teşekkür ederim. Daha fazla bilgi için iletişime geçebilirsiniz.&lt;/p&gt;

</description>
      <category>react</category>
      <category>javascript</category>
      <category>webdev</category>
      <category>formik</category>
    </item>
    <item>
      <title>Javascript Nesnelere Metod Nasıl Eklenir ?</title>
      <dc:creator>Berkan Yıldırım</dc:creator>
      <pubDate>Sat, 09 Apr 2022 09:43:43 +0000</pubDate>
      <link>https://dev.to/berkanyldrim/javascript-nesnelere-metod-nasil-eklenir--2p0g</link>
      <guid>https://dev.to/berkanyldrim/javascript-nesnelere-metod-nasil-eklenir--2p0g</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--900n2gCi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3yoitmpxhdg0wpwagpjs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--900n2gCi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3yoitmpxhdg0wpwagpjs.png" alt="Image description" width="512" height="512"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Metot Nedir?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;JavaScript'in referans veri tiplerinden biri olan ve Türkçede "nesne" anlamına gelen object key-value (anahtar-değer) yapı mantığına sahip bir veri tipidir. Yani bir nesne oluştururken bu nesnemiz için bir veya birden fazla property (özellik) tanımlanabilir ve key-value mantığındaki gibi nesnemizin sahip olduğu özellikler için değerler verilmelidir. &lt;/p&gt;

&lt;p&gt;Özelliklerin sahip olduğu değerler farklı veri tiplerinde olabileceği gibi bir fonksiyonu da işaret edebilir. Bir özellik eğer bir fonksiyonu işaret ediyorsa bu özelliğe metot denir.&lt;/p&gt;

&lt;p&gt;Bir nesneye metot 2 şekilde eklenebilir. Bunlardan biri yukarda bahsedildiği üzere nesneye property olarak eklemek, bir diğeri ise prototype (prototip) fonksiyonu üzerinden eklemektir.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Metotu Özellik Olarak Eklemek&lt;/strong&gt;&lt;br&gt;
Metot, bir nesnenin oluşturulduğu sırada özellik olarak eklenip tanımlanabileceği gibi, önceden tanımlanmış bir nesneye sonradan da eklenebilir. Biz bu yazımızda  ilk durumu ele alıp aşağıdaki örneği ona göre inceleyelim.&lt;/p&gt;

&lt;p&gt;Örneğin; "cat" adında bir nesne oluşturalım ve bu nesnemiz "name", "age" özelliklerine, bu kedinin ismini ,yaşını ve çıkardığı sesi  bize getirecek bir "introduce" metoduna sahip olsun.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;var cat = {
  name: "Mr. Puff",
  age: 8,
  introduce: function(){
    return(`My name is ${this.name} ,I'm ${this.age} yo. And my sound meow  meow `);
  }
}
console.log(cat.introduce())
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Yukarıdaki gibi, metot tanımlanırken function() anahtar kelimesi kullanılarak yapılabileceği gibi EcmaScript6'nın arrow function yönteminin söz diziminden yararlanarak yapmak da mümkündür. &lt;/p&gt;

&lt;p&gt;Fakat burada dikkat edilmesi gereken noktalardan biri arrow functionlar this erişimine sahip değildir. Yani aşağıdaki gibi bir kullanımda introduce fonksiyonu çalıştırıldığında çıktıda özellikler undefined (tanımlanmamış) olarak gözükecektir.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;var cat = {
  name: "Mr. Puff",
  age: 8,
  introduce: () =&amp;gt; {
    return(`My name is ${this.name} ,I'm ${this.age} yo. And my sound meow  meow `);
  }
}
console.log(cat.introduce())
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;My name is  ,I'm undefined yo. And my sound meow  meow &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Yukarıdaki kodumuzun çıktısı bu şekilde olacaktır.Yani bir metodun arrow function söz dizimi kullanılarak yapılmak istendiği bir durumda özelliklere nesnenin ismiyle erişilebilir. Buna göre yukarda arrow function kullanarak oluşturduğumuz metot içerisinde özelliklere erişim şu şekilde olacaktır;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;var cat = {
  name: "Mr. Puff",
  age: 8,
  introduce: () =&amp;gt; {
    return(`My name is ${cat.name} ,I'm ${cat.age} yo. And my sound meow  meow `);
  }
}
console.log(cat.introduce())
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Bu şekilde kullanımımızda undefined (tanımlanmamış) gözükmelerin önüne geçmiş olacağız.&lt;/p&gt;

&lt;p&gt;Bu yazımda metotların ne olduğunu ve JavaScript nesnesi oluştururken bu nesneye property yöntemi ile nasıl metot ekleyeceğimizi anlattım.Bir sonraki yazımda görüşmek üzere.&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>beginners</category>
      <category>programming</category>
    </item>
    <item>
      <title>Node.js Nedir ?</title>
      <dc:creator>Berkan Yıldırım</dc:creator>
      <pubDate>Mon, 04 Apr 2022 08:07:37 +0000</pubDate>
      <link>https://dev.to/berkanyldrim/nodejs-nedir--3pp1</link>
      <guid>https://dev.to/berkanyldrim/nodejs-nedir--3pp1</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--p6t_yT1k--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/g52uzkwps8wx135jk6bd.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--p6t_yT1k--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/g52uzkwps8wx135jk6bd.jpeg" alt="Image description" width="880" height="414"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Arkadaşlar bu yazımda sizlere patika.dev üzerindeki Node.js eğitimlerini tamamlarken öğrendiklerimi sizler ile paylaşarak hem kendi bilgilerimi tekrar ederek daha iyi öğrenmeyi , hem de bu konu hakkında bilgi almak isteyen arkadaşlara yardımcı olmayı hedefliyorum. &lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;O zaman hemen başlayalım nedir bu Node.js  ?&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Javascript programlama dili bildiğiniz üzere eskiden sadece istemci tarafında (client-side) çalışan bir dildi. Tarayıcıda çalıştırdığımız Chrome V8 Engine kullanıma sunuldu ve artık sunucu tarafında da (server-side) Javascript dilini kullanabiliyoruz. İşte Javascript dilini sunucu tarafında kullanmamıza olanak sağlayan Chrome V8 Engine, Node.js olarak adlandırılmaktadır.&lt;/p&gt;

&lt;p&gt;V8 Javascript motoru hakkında daha detaylı bilgi almak için aşağıdaki linki tıklayabilirsiniz.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://v8.dev"&gt;V8.dev&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Node.js temel olarak sunucu tarafında çalışan javascripttir. Javascript temelli olması sebebiyle çok dinamik ve hızlı yapısı vardır.&lt;/p&gt;

&lt;p&gt;Javascript dilinin Node.js vasıtasıyla Back-end’e taşınmasıyla artık sadece bir dil bilerek full-stack uygulama geliştirebilirsiniz.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Peki Javascript ve Node.js Neden bu kadar son dönemde popüler oldu?&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Node.js’in en önemli özelliği asenkron yapıda çalışması ve non-blocking olması. Peki nedir bu asenkron çalışma ve non-blocking?&lt;/p&gt;

&lt;p&gt;Node.js tarafına bir işlem için istek gönderildiğinde node.js onu alıp hemen işleme koyuyor ama diğer işlemi almak için bu işlemin bitmesini beklemiyor. Sırayla istekleri alıyor ve sonuçları beklemeden devam ediyor. Sonuçlar geldikçe iletiyor.&lt;/p&gt;

&lt;p&gt;Bu durumda bir istek diğer isteğin bitmesini beklemediği için diğer isteği engellememiş oluyor. Hangisi önce biterse o isteğin cevabı geliyor. İşte bu mantığa asenkron çalışma mantığı deniyor ve bir işlem diğer işlemi engellemediği içinde non-blocking oluyor.&lt;/p&gt;

&lt;p&gt;Aynı zamanda birden çok kullanıcıya hızlı cevap verebildiği için ölçeklenebilirlik sorununa çözüm sunuyor. Bu da aslında onun popüler olmasının temel nedenlerinde biri. Aynı anda binlerce insanın kullandığı bir sistem geliştiriyorsak node.js çok iyi bir tercih olacaktır.&lt;/p&gt;

&lt;p&gt;Nodejs’in en büyük avantajlarından bir tanesi de modüler yapısı ve bu yapıyı destekleyen paket yönetim sistemi olan npm (nodejs package manager). Npm’i Node.js projelerinde kullanılmak üzere içerisinde bir çok modül barındıran bir depo gibi düşünebiliriz.&lt;/p&gt;

&lt;p&gt;Bu modüller open-source geliştiricileri tarafından yazılarak &lt;a href="https://www.npmjs.com"&gt;npmjs.com&lt;/a&gt; üzerine yüklenmektedir. Npm içerisinde şu an 1 milyondan fazla paket, modül eklenmiş durumda. Bu da aslında popülaritesini gerçekten net olarak gösteriyor.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Node.js Kullanan Bazı Teknoloji Şirketleri&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Apple&lt;/li&gt;
&lt;li&gt;Google&lt;/li&gt;
&lt;li&gt;IBM&lt;/li&gt;
&lt;li&gt;Linkedin&lt;/li&gt;
&lt;li&gt;Pinterest&lt;/li&gt;
&lt;li&gt;Paypal&lt;/li&gt;
&lt;li&gt;Netfilix&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Bu yazımda araştırmalarım ve patika.dev üzerinde aldığım Node.js dersleri ile öğrendiklerimi ve araştırmalarımı sizlerle paylaşmaya çalıştım. &lt;/p&gt;

&lt;p&gt;Zaman ayırıp okuduğunuz için teşekkürler. Bir sonraki yazımda görüşmek üzere...&lt;/p&gt;

</description>
      <category>node</category>
      <category>javascript</category>
      <category>webdev</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
