<?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: Emre Emanet</title>
    <description>The latest articles on DEV Community by Emre Emanet (@emanetemre).</description>
    <link>https://dev.to/emanetemre</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%2F630241%2F9a1ffb2a-f7ad-4e27-a5bc-ea6a2c36cb4d.jpeg</url>
      <title>DEV Community: Emre Emanet</title>
      <link>https://dev.to/emanetemre</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/emanetemre"/>
    <language>en</language>
    <item>
      <title>Python Programlamaya Giriş</title>
      <dc:creator>Emre Emanet</dc:creator>
      <pubDate>Mon, 10 Oct 2022 21:20:14 +0000</pubDate>
      <link>https://dev.to/emanetemre/python-programlamaya-giris-418j</link>
      <guid>https://dev.to/emanetemre/python-programlamaya-giris-418j</guid>
      <description>&lt;p&gt;Python, Guido Van Rossum tarafından 1990 yılında geliştirilmeye başlanan nesne yönelimli, yorumlanabilen ve yüksek seviyeli bir programlama dilidir. İlk ortaya çıkışından bu yana yazılım ve özellikle veri bilimi uygulamalarında en fazla kullanılan popüler programlama dillerinden biri haline geldi. Bu dili bu kadar popüler yapan etmenlerin başında Numpy, Pandas ve Scikit-learn gibi sahip olduğu birçok geliştirme aracı kütüphanelerin açık kaynak kodlu olarak ücretsiz bir şekilde indirilebilmesidir. Bu yapısı Python’u genel amaçlı yazılım mühendisliği ve veri uygulamaları geliştirmek için öğrenilmesi gereken en önemli dillerden biri haline getirmiştir. Yayınlanan sürümler düzenli olarak&lt;br&gt;
&lt;a href="https://www.python.org/"&gt;https://www.python.org/&lt;/a&gt; sitesinde ilan edilmekte ve eklenen yenilikler açıklanmaktadır. Bu dokümanın yazılma sürecinde en son sürüm olarak October 5th,2020 tarihinde Python 3.9 yayınlanmıştır. Python 3’ün önceki sürümlerinde yazılan kodlar Python 3.9’da çalışmaktadır.&lt;/p&gt;

&lt;p&gt;Python programlarını iki şekilde yazabilirsiniz. Birincisi etkileşimli olarak diğeri bir dosyaya yazarak bu dosyanın Python tarafından yorumlanmasını sağlayabilirsiniz. Etkileşimli kullanmak çoğu zaman bir anlam ifade etmez. Ancak kısa programlar yazacaksanız unuttuğunuz bir fonksiyonu denemek istiyorsanız. hemen Python kabuğunda istediğinizi yapabilirsiniz. Windows kullananlar için üç kabuk vardır.&lt;/p&gt;

&lt;p&gt;Sayı değişkenleri üzerinde tüm aritmetik işlemleri yapabilirsiniz, sonucuda daha sonra kullanmak üzere sayı değişkenlere atayabilirsiniz. Atama işlemi &lt;code&gt;=&lt;/code&gt; ile yapılır.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;
&lt;span class="o"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;7&lt;/span&gt;
&lt;span class="o"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="n"&gt;b&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Yazdığımız değişkenleri Python ekrana yazdırmadı. Çünkü sonucu bir değişkene atadık. Herhangi bir atama işlemi yapılmıyorsa etkileşimli ekranda sonuç standart çıktıya yazdırılır. İmleçte iken &lt;code&gt;c&lt;/code&gt; yazıp enter tuşuna basarsanız işlem sonucunu görürsünüz.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt;
&lt;span class="mi"&gt;12&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Şimdi hemen şu işlemi yapalım.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="n"&gt;d&lt;/span&gt;
&lt;span class="nc"&gt;Traceback &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;most&lt;/span&gt; &lt;span class="n"&gt;recent&lt;/span&gt; &lt;span class="n"&gt;call&lt;/span&gt; &lt;span class="n"&gt;last&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
  &lt;span class="n"&gt;File&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;&amp;lt;stdin&amp;gt;&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;line&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;module&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nb"&gt;NameError&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;d&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt; &lt;span class="ow"&gt;is&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="n"&gt;defined&lt;/span&gt;
&lt;span class="o"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Programın çıktısının 12 olmasını bekliyorduk değil mi? Python'a yeni başlayanlar bu hataya düşebilirler. Python'da bir değişken bir işlem içerisinde kullanılmadan önce mutlaka tanımlanmalıdır. Ön tanımlı değerler sıfır yada boş olamaz.&lt;/p&gt;

&lt;p&gt;Karmaşık sayılarda değişkenlere atanabilir.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mf"&gt;3j&lt;/span&gt;
&lt;span class="o"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;17&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;9j&lt;/span&gt;
&lt;span class="o"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="n"&gt;b&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;22&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;6j&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="o"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;b&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;112&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mf"&gt;6j&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Üs Alma Operatörü **
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="o"&gt;**&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;
&lt;span class="mi"&gt;8&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Modülüs/Kalan Operatörü %
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;22&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="mi"&gt;8&lt;/span&gt;
&lt;span class="mi"&gt;6&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Tam Değer Bölüm Operatörü //
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;22&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="mi"&gt;6&lt;/span&gt;
&lt;span class="mi"&gt;3&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Bölme Operatörü /
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;22&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;6&lt;/span&gt;
&lt;span class="mf"&gt;3.6666666666666665&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Çarpma Operatörü *
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;6&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;
&lt;span class="mi"&gt;30&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Çıkarma Operatörü -
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;
&lt;span class="mi"&gt;25&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Toplama Operatörü +
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;65&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;28&lt;/span&gt;
&lt;span class="mi"&gt;93&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Veri Tipleri
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Tam Sayılar: -2, -1, 0, 1, 2 gibi&lt;/li&gt;
&lt;li&gt;Kayan Noktalı Sayılar: 3.14, -1.0 0.5 gibi&lt;/li&gt;
&lt;li&gt;Dizgiler: 'a', 'kelime', 'Merhaba'
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;tam_sayi&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;
&lt;span class="n"&gt;pi_sayisi&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;3.14&lt;/span&gt;
&lt;span class="n"&gt;kelime&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Pi&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;

&lt;span class="nf"&gt;print &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;tam_sayi&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;pi_sayisi&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;kelime&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Bir kelimeyi ve integer bir değeri birleştirmek istersek aşağıdaki hatayı alacağız. Sebebi ise str sadece str değişken tipi ile birleştirilebilir.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;17:15 ~ $ python
Python 3.9.5 (default, May 27 2021, 19:45:35)                                                                                        
[GCC 9.3.0] on linux                                                                                                                 
Type "help", "copyright", "credits" or "license" for more information.                                                               
&amp;gt;&amp;gt;&amp;gt; 'Alice' + 42
Traceback (most recent call last):                                                                                                   
  File "&amp;lt;stdin&amp;gt;", line 1, in &amp;lt;module&amp;gt;                                                                                                
TypeError: can only concatenate str (not "int") to str                                                                               
&amp;gt;&amp;gt;&amp;gt;  
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Alice kelimesini 5 defa yazdırmak için&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Alice&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;
&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;AliceAliceAliceAliceAlice&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  print ()
&lt;/h2&gt;

&lt;p&gt;Ekrana kelime yazdırmak için kullanılır.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="nf"&gt;print &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Merhaba&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  input ()
&lt;/h2&gt;

&lt;p&gt;Klavye'den veri almak için kullanılır.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="nf"&gt;print &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;İsminiz nedir?&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;isim&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;input&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="nf"&gt;print &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Merhaba &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;isim&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  len ()
&lt;/h2&gt;

&lt;p&gt;Bir dizgideki karakter sayının tam sayı değeri olarak değrlendirir. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Boşlukları da karakter olarak saymaktadır.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="nf"&gt;len &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;yaz dostum say dostum&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="mi"&gt;21&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>python</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Docker HAProxy ile Round Robin Loadbalancing</title>
      <dc:creator>Emre Emanet</dc:creator>
      <pubDate>Mon, 24 Jan 2022 06:37:09 +0000</pubDate>
      <link>https://dev.to/emanetemre/docker-haproxy-ile-round-robin-loadbalancing-2afm</link>
      <guid>https://dev.to/emanetemre/docker-haproxy-ile-round-robin-loadbalancing-2afm</guid>
      <description>&lt;p&gt;Bu proje hızlı olarak HAProxy ile config test edilmesi için tasarlanmıştır. Ortam kurulumları ve config basit tutulmuştur.&lt;br&gt;
Projede 3 adet CentOS 7 container'ı kullandım. 1 tanesi HAProxy için 2 tanesi de Apache Web Server için.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--qm3v3baB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/udsq6i7sovib1lspjcol.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--qm3v3baB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/udsq6i7sovib1lspjcol.png" alt="Image description" width="504" height="630"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Round Robin Loadbalancing:
&lt;/h3&gt;

&lt;p&gt;Round Robin, varsayılan ve muhtemelen en yaygın olarak kullanılan loadbalancing yöntemidir. Gelen isteklerin eşit olarak ayaktaki sunuculara dağıtılması prensibiyle çalışır.&lt;/p&gt;

&lt;p&gt;3 tane container ayağa kaldırıyorum.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;docker run -d --name haproxy --hostname haproxy -it --privileged 72c478e5833d /usr/sbin/init
docker run -d --name webserver1 --hostname webserver1 -it --privileged 72c478e5833d /usr/sbin/init
docker run -d --name webserver2 --hostname webserver2 -it --privileged 72c478e5833d /usr/sbin/init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Container'larda hiç bir şey yüklü olmadığı için sırayla aşağıdaki komutları tüm containerlarda çalıştırıyorum. Net-tools paketiyle makinelerin IP adresini görebilirim.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;yum update -y
yum install net-tools -y
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Haproxy'yi loadbalancer olarak konumlandıracağım.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;yum install haproxy -y
systemctl start haproxy
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Web Server 1'e Apache Web Server kurup start ediyorum ve basit bir dosya içerisine HTML oluşturuyorum.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;yum install httpd -y
echo "bu sunucu webserver1" &amp;gt; /var/www/html/index.html
systemctl start httpd
curl localhost
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Web Server 2'e Apache Web Server kurup start ediyorum ve basit bir dosya içerisine HTML oluşturuyorum.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;yum install httpd -y
echo "bu sunucu webserver2" &amp;gt; /var/www/html/index.html
systemctl start httpd
curl localhost
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;vi yada nano gibi bir editörle /etc/haproxy/haproxy.conf dosyası aşağıdaki gibi edilenir.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;global
    log         127.0.0.1 local2&lt;span class="sb"&gt;

    chroot      /var/lib/haproxy
    pidfile     /var/run/haproxy.pid
    maxconn     4000
    user        haproxy
    group       haproxy
    daemon

    # turn on stats unix socket
    stats socket /var/lib/haproxy/stats

&lt;/span&gt;defaults
    mode                    http
    log                     global
    option                  httplog
    option                  dontlognull
    option http-server-close
    option forwardfor       except 127.0.0.0/8
    option                  redispatch
    retries                 3
    timeout http-request    10s
    timeout queue           1m
    timeout connect         10s
    timeout client          1m
    timeout server          1m
    timeout http-keep-alive 10s
    timeout check           10s
    maxconn                 3000

frontend web_server &lt;span class="err"&gt;*&lt;/span&gt;:80
 default_backend webservers

backend webservers
   balance      roundrobin
   server   webserver1 172.17.0.4:80 check
   server   webserver2 172.17.0.5:80 check
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Test için bir döngüye curl isteğimizi yazıyoruz.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;[root@centos ~]# for a in {1..10};do curl localhost;done
bu sunucu webserver1
bu sunucu webserver2
bu sunucu webserver1
bu sunucu webserver2
bu sunucu webserver1
bu sunucu webserver2
bu sunucu webserver1
bu sunucu webserver2
bu sunucu webserver1
bu sunucu webserver2
[root@centos ~]#
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>docker</category>
      <category>haproxy</category>
      <category>linux</category>
      <category>loadbalancer</category>
    </item>
    <item>
      <title>MinIO Client Kullanımı</title>
      <dc:creator>Emre Emanet</dc:creator>
      <pubDate>Sun, 24 Oct 2021 22:01:04 +0000</pubDate>
      <link>https://dev.to/emanetemre/minio-client-kullanimi-1jem</link>
      <guid>https://dev.to/emanetemre/minio-client-kullanimi-1jem</guid>
      <description>&lt;p&gt;MinIO, Amazon S3 uyumlu bir bulut depolama sunucusudur. Bu, Amazon S3 ile konuşacak şekilde yapılandırılabilen uygulamaların MinIo ile konuşacak şekilde de yapılandırılabileceği anlamına gelir. MinIo  fotoğraflar, videolar, günlük dosyaları, yedeklemeler ve container/VM imajları gibi yapılandırılmamış verileri depolamak içinde  kullanılabilir. MinIO Client, adından da anlaşılabileceği gibi MinIO sunucusundaki depolama hizmetine ulaşarak işlemler yapmak için geliştirilmiş bir yazılımdır. Komut satırından çalışmaktadır. Bu yazı nasıl kullanılacağını örneklerle anlatmaktadır.&lt;/p&gt;

&lt;p&gt;Öncelikle dosyayı indiriyoruz.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-O&lt;/span&gt; https://dl.min.io/client/mc/release/linux-amd64/mc
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;veya&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;wget https://dl.min.io/client/mc/release/linux-amd64/mc
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ardından dosyaya çalıştırma izini veriyoruz.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;chmod&lt;/span&gt; +x mc
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;MinIO server için çalışabildiği gibi diğer bulut tabanlı sistemlerle(Amazon S3, GCS) de çalışabilmektedir.&lt;/p&gt;

&lt;p&gt;Amazon S3 için kaynak ekleme&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;mc &lt;span class="nb"&gt;alias set &lt;/span&gt;s3 https://s3.amazonaws.com BKIKJAA5BMMU2RHO6IBB V7f1CwQqAcwo80UEIJEjc5gVQUSSx5ohQ9GSrr12 &lt;span class="nt"&gt;--api&lt;/span&gt; S3v4
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;MinIO için kaynak ekleme&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;mc &lt;span class="nb"&gt;alias set &lt;/span&gt;minio http://192.168.1.51 BKIKJAA5BMMU2RHO6IBB V7f1CwQqAcwo80UEIJEjc5gVQUSSx5ohQ9GSrr12 &lt;span class="nt"&gt;--api&lt;/span&gt; S3v4
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Google  Cloud Storage&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mc alias set gcs  https://storage.googleapis.com BKIKJAA5BMMU2RHO6IBB V8f1CwQqAcwo80UEIJEjc5gVQUSSx5ohQ9GSrr12
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Hangi sistemi yapılandıracak isek yapılandırıp ardından aşağıdaki gibi çalıştırmaya başlıyoruz.&lt;/p&gt;

&lt;h2&gt;
  
  
  Amazon S3 içerisindeki dosyaları listeleme
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;./mc &lt;span class="nb"&gt;ls &lt;/span&gt;s3
&lt;span class="o"&gt;[&lt;/span&gt;2021-04-15 01:05:56 +03]     0B deneme/ 
&lt;span class="o"&gt;[&lt;/span&gt;2021-10-19 10:42:12 +03]     0B emre/ 
&lt;span class="o"&gt;[&lt;/span&gt;2021-04-15 12:08:37 +03]     0B kova/ 
&lt;span class="o"&gt;[&lt;/span&gt;2021-03-13 17:35:06 +03]     0B &lt;span class="nb"&gt;test&lt;/span&gt;/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Amazon S3 bucket oluşturma
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;./mc mb s3/emre 
Bucket created successfully &lt;span class="sb"&gt;`&lt;/span&gt;s3/emre&lt;span class="sb"&gt;`&lt;/span&gt;&lt;span class="nb"&gt;.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Amazon S3 bucket silme
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;mc rb s3/mybucket &lt;span class="nt"&gt;--force&lt;/span&gt;
Bucket removed successfully ‘s3/mybucket’.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  AmazonS3 içerisine dosya upload
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;./mc &lt;span class="nb"&gt;cp &lt;/span&gt;debian.iso s3/test
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Daha fazlası için:&lt;br&gt;
&lt;a href="https://docs.min.io/docs/minio-client-complete-guide.html"&gt;https://docs.min.io/docs/minio-client-complete-guide.html&lt;/a&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>minio</category>
      <category>s3</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Windows Server'da RDP Bağlantısını VPN arkasına almak</title>
      <dc:creator>Emre Emanet</dc:creator>
      <pubDate>Tue, 25 May 2021 09:46:51 +0000</pubDate>
      <link>https://dev.to/emanetemre/windows-server-da-rdp-baglantisini-vpn-arkasina-almak-329o</link>
      <guid>https://dev.to/emanetemre/windows-server-da-rdp-baglantisini-vpn-arkasina-almak-329o</guid>
      <description>&lt;p&gt;Windows Server'larınızın RDP bağlantısını VPN arkasına almak istemez miydiniz? Bu sayede VPN bağlantısı olmayan kimse sunucuya erişememiş olur ve siber güvenlikteki saldırı yüzeyinin küçültülmesi ilkesi de gerçekleşmiş olur.&lt;/p&gt;

&lt;p&gt;Arama kısmına Windows Firewall with Advanced Security yazarak çıkan sonuca tıklayarak gelişmiş Firewall ayarlarına ulaşıyoruz.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--E4FmPbJj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lq4k4cduicm4mlzjs1f4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--E4FmPbJj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lq4k4cduicm4mlzjs1f4.png" alt="image" width="800" height="418"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Açılan ekrandan Inbound Rules seçeneğine basıyoruz.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--xyeOAc6y--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1ue7svjowdzrkvm7kkus.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--xyeOAc6y--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1ue7svjowdzrkvm7kkus.png" alt="image" width="800" height="440"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Aşağıdaki yazan modlara kuralları uygulamamız gerekmekte.&lt;/p&gt;

&lt;p&gt;Remote Desktop - User Mode (TCP-In)&lt;/p&gt;

&lt;p&gt;Remote Desktop - User Mode (TCP-In)&lt;/p&gt;

&lt;p&gt;Remote Desktop - User Mode (UDP-In)&lt;/p&gt;

&lt;p&gt;Remote Desktop - User Mode (UDP-In)  &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--5CRtcrHC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/59swwmlcg7fdghhogwtz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--5CRtcrHC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/59swwmlcg7fdghhogwtz.png" alt="image" width="548" height="265"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Açılan pencereden Scope sekmesine basıyoruz. Remote IP address seçeğindeki Any IP address seçeneğini These IP address olarak değiştirip Add.. butonuna basıyoruz.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--KOnqAckm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jqvqgz1tjac849a9goys.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--KOnqAckm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jqvqgz1tjac849a9goys.png" alt="image" width="448" height="587"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Açılan pencereye VPN IP bloklarımızı ekliyoruz.&lt;/p&gt;

</description>
      <category>systems</category>
      <category>windows</category>
    </item>
    <item>
      <title>Wowza REST API Kullanımı</title>
      <dc:creator>Emre Emanet</dc:creator>
      <pubDate>Fri, 21 May 2021 13:42:29 +0000</pubDate>
      <link>https://dev.to/emanetemre/wowza-rest-api-kullanimi-dfl</link>
      <guid>https://dev.to/emanetemre/wowza-rest-api-kullanimi-dfl</guid>
      <description>&lt;p&gt;Wowza Streaming Engine REST API ile kolaylıkla yönetilebilir. Sunucu güvenliği düşünülerek REST API'yi sunucu içerisinde kullanmanızı öneriyorum.&lt;/p&gt;

&lt;p&gt;Yetkilendirme için aşağıdaki komutu curl ile kullanabilirsiniz.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nt"&gt;--digest&lt;/span&gt; &lt;span class="nt"&gt;-u&lt;/span&gt; &lt;span class="s2"&gt;"user:passwd"&lt;/span&gt;  &lt;span class="se"&gt;\&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Stream file'larını listelemek için:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-X&lt;/span&gt; GET &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Accept:application/json; charset=utf-8"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type:application/json; charset=utf-8"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
http://localhost:8087/v2/servers/_defaultServer_/vhosts/_defaultVHost_/applications/live/streamfiles
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Bir stream file bağlamak için:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-X&lt;/span&gt; PUT &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s1"&gt;'Accept:application/json; charset=utf-8'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s1"&gt;'Content-type:application/json; charset=utf-8'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="s2"&gt;"http://localhost:8087/v2/servers/_defaultServer_/vhosts/_defaultVHost_/applications/live/streamfiles/creedence/actions/connect?connectAppName=live&amp;amp;appInstance=_definst_&amp;amp;mediaCasterType=rtp"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Bir stream'i disconnect etmek için:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-X&lt;/span&gt; PUT &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s1"&gt;'Accept:application/json; charset=utf-8'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s1"&gt;'Content-Type:application/json; charset=utf-8'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
http://localhost:8087/v2/servers/_defaultServer_/vhosts/_defaultVHost_/applications/live/instances/_definst_/incomingstreams/creedence.stream/actions/disconnectStream
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Bir stream file'ı silmek için:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-X&lt;/span&gt; DELETE &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s1"&gt;'Accept:application/json; charset=utf-8'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
http://localhost:8087/v2/servers/_defaultServer_/vhosts/_defaultVHost_/applications/live/streamfiles/creedence
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Daha fazla REST API örnekleri için:&lt;br&gt;
&lt;a href="https://www.wowza.com/docs/wowza-streaming-engine-rest-api"&gt;https://www.wowza.com/docs/wowza-streaming-engine-rest-api&lt;/a&gt;&lt;/p&gt;

</description>
      <category>wowza</category>
      <category>api</category>
      <category>linux</category>
    </item>
  </channel>
</rss>
