Takip et

sed ile İki Desen Arasındaki Dizeleri Değiştirme

# sed ile İki Desen Arasındaki Dizeleri Değiştirme: Tam Bir Rehber

Karmaşık metin dosyalarında belirli bölümleri düzenlemek, yazılım geliştiriciler ve sistem yöneticileri için sık karşılaşılan bir görevdir. İşte tam bu noktada sed (stream editor) devreye giriyor. Bu güçlü komut satırı aracı, iki desen arasında kalan metinleri hızlı ve etkili bir şekilde değiştirmenizi sağlar. Bu makale, sed kullanarak iki desen arasını değiştirmeyi adım adım, gerçek dünya örnekleriyle ve performans optimizasyonuyla ele alıyor. sed‘in gücünü keşfetmeye hazır olun!

Sed’i Anlamak: Temel Kavramlar

sed, akış düzenleyici anlamına gelen bir komut satırı aracıdır. Metin dosyalarını satır satır işler ve belirtilen düzenlemeleri uygular. sed‘in en güçlü özelliklerinden biri, düzenli ifadeleri (regex) desteklemesidir. Bu sayede karmaşık desenleri tanımlayabilir ve bunlara göre işlemler gerçekleştirebilirsiniz. sed‘i kullanarak metin dosyalarında arama, değiştirme, ekleme ve silme gibi işlemleri yapabilirsiniz. Bu makalede özellikle iki desen arasında kalan metinleri değiştirme işlemine odaklanacağız. Örneğin, bir HTML dosyasındaki </code> etiketleri arasına dinamik olarak tarih eklemek veya bir log dosyasından belirli bir zaman aralığındaki girişleri ayıklamak gibi görevlerde <code class="language-">sed</code> büyük kolaylık sağlar. <code class="language-">sed</code> komutlarının temel yapısı genellikle şu şekildedir: <code class="language-">sed 'komut' dosya_adi</code>. Komut, gerçekleştirilecek işlemi tanımlar ve dosya_adi ise işlem uygulanacak dosyadır. Daha detaylı bilgi için [Fatih Soysal’ın web sitesini](https://fatihsoysal.com) ziyaret edebilirsiniz.</p> <p><strong>Nasıl Yapılır? Sed ile İki Desen Arasını Değiştirme: Yeni Başlayanlar İçin</strong></p> <p><code class="language-">sed</code>‘i kullanarak iki desen arasında kalan metni değiştirmenin en temel yolu, <code class="language-">sed</code>‘in <code class="language-">s</code> (değiştirme) komutunu ve düzenli ifadeleri birleştirmektir. Bu yöntem, iki desen arasında kalan metni yakalamak için bir gruplama (capturing group) kullanır. Aşağıdaki örnekte, “BAŞLANGIC” ve “SON” desenleri arasında kalan metnin “YENİ METİN” ile değiştirilmesi gösterilmektedir:</p> <pre class="language-bash"><code>sed 's/BAŞLANGIC\(.*\)SON/BAŞLANGICYENİ METINSON/g' dosya.txt</code></pre> <p>Bu komutta:</p> <p>* <code class="language-">/BAŞLANGIC\(.*\)SON/</code>: Bu, düzenli ifadedir. <code class="language-">BAŞLANGIC</code> ve <code class="language-">SON</code> desenleri arasında kalan her şeyi yakalayan <code class="language-">\(.*\)</code> grubu dikkat çekicidir.<br /> * <code class="language-">g</code>: Bu bayrak, her satırdaki tüm eşleşmeleri değiştirir. Eğer sadece ilk eşleşmeyi değiştirmek istiyorsanız, <code class="language-">g</code> bayrağını kullanmayın.<br /> * <code class="language-">BAŞLANGICYENİ METINSON</code>: Bu, değiştirilmiş metindir. Önceki desenlerin yerine bu metin yerleştirilecektir.</p> <p><strong>Örnek:</strong> <code class="language-">dosya.txt</code> dosyası şu içeriğe sahip olsun:</p> <pre class="language-"><code>BAŞLANGIC Bu metin değiştirilecek SON BAŞLANGIC Başka bir metin SON</code></pre> <p>Yukarıdaki <code class="language-">sed</code> komutu uygulandıktan sonra <code class="language-">dosya.txt</code> dosyasının içeriği şöyle olacaktır:</p> <pre class="language-"><code>BAŞLANGICYENİ METINSON BAŞLANGICYENİ METINSON</code></pre> <p>Bu basit örnek, yeni başlayanlar için <code class="language-">sed</code>‘in temel kullanımını göstermektedir. Daha karmaşık senaryolar için, düzenli ifadelerin gücünden daha fazla yararlanmanız gerekecektir.</p> <p><strong>Gerçek Hayat Örneği: Log Dosyası İşleme</strong></p> <p>Bir web sunucusunun log dosyasında, belirli bir zaman aralığında oluşan hataları bulup değiştirmek istediğimizi düşünelim. Log dosyası şu şekilde olsun:</p> <pre class="language-"><code>2023-10-27 10:00:00 Hata: Bağlantı hatası 2023-10-27 10:05:00 Bilgi: Sistem başlatıldı 2023-10-27 10:15:00 Hata: Dosya bulunamadı 2023-10-27 11:00:00 Bilgi: İşlem başarılı</code></pre> <p>10:00 ile 11:00 arasında oluşan hataları “Hata: Düzeltildi” ile değiştirmek için aşağıdaki komutu kullanabiliriz:</p> <pre class="language-bash"><code>sed '/2023-10-27 10:00:00/,/2023-10-27 11:00:00/{/Hata:/s/Hata:.*$/Hata: Düzeltildi/}' log.txt</code></pre> <p>Bu komut, <code class="language-">2023-10-27 10:00:00</code> ve <code class="language-">2023-10-27 11:00:00</code> tarihleri arasında kalan satırlarda (“/”) sadece “Hata:” ile başlayan satırlarda (“/”) “Hata:” dan sonraki kısmı “Hata: Düzeltildi” ile değiştirir.</p> <p><strong>Sed’de Performans Optimizasyonu İpuçları</strong></p> <p>Büyük dosyalarda <code class="language-">sed</code> komutlarının performansını artırmak için bazı ipuçları şunlardır:</p> <p>* <strong>Gereksiz işlemleri azaltın:</strong> Sadece gerekli satırlarda işlem yapacak şekilde komutlarınızı optimize edin. Örneğin, gereksiz arama işlemlerinden kaçının.<br /> * <strong><code class="language-">-i</code> seçeneğini kullanın:</strong> <code class="language-">sed -i</code> seçeneği, dosyayı doğrudan değiştirir. Bu, geçici bir dosya oluşturma ve kopyalama işlemlerinden kaçınarak performansı artırır. Ancak, bu seçeneği kullanırken dikkatli olun ve yedekleme yapmayı unutmayın.<br /> * <strong>Düzenli ifadeleri optimize edin:</strong> Karmaşık düzenli ifadeler performansı düşürebilir. Mümkün olduğunca basit ve etkili düzenli ifadeler kullanmaya çalışın.<br /> * <strong><code class="language-">sed</code> yerine <code class="language-">awk</code> kullanmayı düşünün:</strong> Bazı durumlarda, <code class="language-">awk</code> daha uygun ve performanslı olabilir. Özellikle karmaşık metin işleme görevlerinde <code class="language-">awk</code> daha esnek ve güçlüdür.</p> <p><strong>İleri Düzey Kullanım: Edge Case’ler ve Karmaşık Senaryolar</strong></p> <p>İki desen arasında kalan metnin değiştirilmesi, bazı durumlarda beklenmedik sonuçlar doğurabilir. Örneğin, desenlerden biri diğerinin içinde bulunuyorsa veya desenler birden fazla kez geçiyorsa, beklenmedik sonuçlar elde edilebilir. Bu tür durumlarda, daha karmaşık düzenli ifadeler kullanmanız veya alternatif yaklaşımlar denemeniz gerekebilir. Örneğin, eğer desenlerden biri diğerini içeriyorsa, <code class="language-">sed</code>‘in davranışı tahmin edilemez olabilir. Bu durumda, daha kesin bir eşleşme için daha karmaşık düzenli ifadeler kullanmanız gerekebilir veya <code class="language-">awk</code> gibi daha güçlü bir araç kullanmayı düşünebilirsiniz. Ayrıca, çok büyük dosyalarda işlem yaparken, performans sorunları yaşayabilirsiniz. Bu gibi durumlarda, dosyayı parçalara ayırıp <code class="language-">sed</code> komutunu her parçaya ayrı ayrı uygulamak daha verimli olabilir.</p> <p><strong>Uygulamalı Kılavuz: Adım Adım Örnekler</strong></p> <p>Bu bölümde, farklı karmaşıklık seviyelerinde birkaç örnek sunacağız.</p> <p><strong>Örnek 1 (Basit):</strong> Bir metin dosyasındaki tüm “elma” kelimelerini “armut” ile değiştirmek:</p> <pre class="language-bash"><code>sed 's/elma/armut/g' dosya.txt</code></pre> <p><strong>Örnek 2 (Orta):</strong> Bir HTML dosyasındaki <code class="language-"><title></code> etiketleri arasına tarih eklemek:</p> <pre class="language-bash"><code>sed -i 's/<title>\(.*\)<\/title>/<title>\1 - $(date +"%Y-%m-%d")<\/title>/g' index.html</code></pre> <p><strong>Örnek 3 (İleri):</strong> Bir log dosyasında belirli bir hata koduyla başlayan satırları bulmak ve hata kodunu değiştirmek:</p> <pre class="language-bash"><code>sed '/Error Code: 404/{s/Error Code: 404/Error Code: 404 - Düzeltildi/}' log.txt</code></pre> <p><strong>Sonuç: Sed ile Etkili Metin İşleme</strong></p> <p>Bu makalede, <code class="language-">sed</code> kullanarak iki desen arasında kalan metinleri değiştirmenin çeşitli yöntemlerini ele aldık. Yeni başlayanlardan ileri seviye kullanıcılara kadar her seviye için uygulamalı örnekler ve ipuçları sunduk. <code class="language-">sed</code>, metin dosyalarını işlemek için son derece güçlü bir araçtır ve doğru kullanıldığında zaman kazandırabilir ve işleri kolaylaştırabilir. Ancak, karmaşık senaryolarda beklenmedik sonuçlar doğurabileceğini unutmamak önemlidir. Bu nedenle, komutlarınızı dikkatlice test etmeniz ve gerektiğinde yedekleme yapmanız önerilir.</p> <p><strong>Sıkça Sorulan Sorular:</strong></p> <p>1. <strong><code class="language-">sed</code>‘in <code class="language-">-i</code> seçeneği ne işe yarar?</strong> <code class="language-">-i</code> seçeneği, dosyayı doğrudan değiştirir. Bu, geçici dosya oluşturma ve kopyalama işlemlerinden kaçınarak performansı artırır.<br /> 2. <strong><code class="language-">sed</code> komutlarında düzenli ifadeler nasıl kullanılır?</strong> <code class="language-">sed</code> komutlarında düzenli ifadeler, <code class="language-">/</code> karakterleri arasında yazılır.<br /> 3. <strong><code class="language-">sed</code> ile çok büyük dosyaları nasıl işleyebilirim?</strong> Çok büyük dosyalarda, dosyayı parçalara ayırıp <code class="language-">sed</code> komutunu her parçaya ayrı ayrı uygulamanız daha verimli olabilir.<br /> 4. <strong><code class="language-">sed</code>‘in alternatifleri nelerdir?</strong> <code class="language-">awk</code>, <code class="language-">perl</code> ve <code class="language-">python</code> gibi diğer komut satırı araçları veya programlama dilleri de metin işleme için kullanılabilir.<br /> 5. <strong><code class="language-">sed</code>‘de hata ayıklama nasıl yapılır?</strong> <code class="language-">sed</code> komutunu adım adım çalıştırmak ve çıktıyı incelemek, hataları bulmanıza yardımcı olabilir.</p> <p>Yazar: Fatih Soysal</p> </div> <div class="cs-entry__footer"> <div class="cs-entry__footer-left"> <div class="cs-entry__post-meta" ><div class="cs-meta-author"><a class="cs-meta-author-link url fn n" href="https://fatihsoysal.com/blog/author/fatihsoysal/"><span class="cs-meta-author-by">by</span><span class="cs-meta-author-name">Fatih Soysal</span></a></div><div class="cs-meta-comments"><a href="https://fatihsoysal.com/blog/sed-ile-iki-desen-arasindaki-dizeleri-degistirme/#respond" class="comments-link" >0</a></div></div> </div> <div class="cs-entry__footer-right"> <div class="cs-share"> <a class="cs-share__link" target="_blank" href="https://www.facebook.com/sharer.php?text=sed%20ile%20%C4%B0ki%20Desen%20Aras%C4%B1ndaki%20Dizeleri%20De%C4%9Fi%C5%9Ftirme&u=https://fatihsoysal.com/blog/sed-ile-iki-desen-arasindaki-dizeleri-degistirme/"> <i class="cs-icon cs-icon-facebook"></i> </a> <a class="cs-share__link" target="_blank" href="https://twitter.com/share?t=sed%20ile%20%C4%B0ki%20Desen%20Aras%C4%B1ndaki%20Dizeleri%20De%C4%9Fi%C5%9Ftirme&url=https://fatihsoysal.com/blog/sed-ile-iki-desen-arasindaki-dizeleri-degistirme/"> <i class="cs-icon cs-icon-twitter-x"></i> </a> <a class="cs-share__link" target="_blank" href="https://t.me/share/url?url=%5BURL%5D&text=https://fatihsoysal.com/blog/sed-ile-iki-desen-arasindaki-dizeleri-degistirme/"> <i class="cs-icon cs-icon-telegram"></i> </a> <a class="cs-share__link cs-share__copy-link" target="_blank" href="https://fatihsoysal.com/blog/sed-ile-iki-desen-arasindaki-dizeleri-degistirme/"> <i class="cs-icon cs-icon-link"></i> </a> </div> </div> </div> <div class="cs-entry__comments" id="comments"> <div class="cs-entry__comments-header"> <div class="cs-entry__comments-left"> <div class="cs-entry__comments-heading">Yorumlar</div> <div class="cs-entry__comments-description h2">İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.</div> </div> <div class="cs-entry__comments-right"> <div class="cs-entry__comments-toggle"> <span class="cs-button" role="button" aria-label="Yorumlar"> <span>Yorum Yaz</span> </span> </div> </div> </div> <div class="cs-entry__comments-inner"> <div id="respond" class="comment-respond"> <h2 id="reply-title" class="comment-reply-title">Bir yanıt yazın <small><a rel="nofollow" id="cancel-comment-reply-link" href="/blog/sed-ile-iki-desen-arasindaki-dizeleri-degistirme/#respond" style="display:none;">Yanıtı iptal et</a></small></h2><form action="https://fatihsoysal.com/blog/wp-comments-post.php" method="post" id="commentform" class="comment-form" novalidate><p class="comment-notes"><span id="email-notes">E-posta adresiniz yayınlanmayacak.</span> <span class="required-field-message">Gerekli alanlar <span class="required">*</span> ile işaretlenmişlerdir</span></p><p class="comment-form-comment"><textarea id="comment" name="comment" cols="45" rows="8" maxlength="65525" required="required" aria-required="true" placeholder="Your Comment *"></textarea></p><p class="comment-form-author"><input id="author" name="author" type="text" value="" size="30" aria-required='true' placeholder="Your Name *" /></p> <p class="comment-form-email"><input id="email" name="email" type="email" value="" size="30" aria-required='true' placeholder="Your E-mail *" /></p> <p class="comment-form-cookies-consent"><input id="wp-comment-cookies-consent" name="wp-comment-cookies-consent" type="checkbox" value="yes"><label for="wp-comment-cookies-consent">Save my name and email in this browser for the next time I comment.</label></p> <p class="form-submit"><button name="submit" type="submit" id="submit" class="submit" value="Yorum gönder" />Gönder </button> <input type='hidden' name='comment_post_ID' value='27606' id='comment_post_ID' /> <input type='hidden' name='comment_parent' id='comment_parent' value='0' /> </p><p style="display: none;"><input type="hidden" id="akismet_comment_nonce" name="akismet_comment_nonce" value="82dc0bdaad" /></p><p style="display: none !important;" class="akismet-fields-container" data-prefix="ak_"><label>Δ<textarea name="ak_hp_textarea" cols="45" rows="8" maxlength="100"></textarea></label><input type="hidden" id="ak_js_1" name="ak_js" value="29"/><script> document.getElementById( "ak_js_1" ).setAttribute( "value", ( new Date() ).getTime() ); </script> </p></form> </div><!-- #respond --> </div> </div> </div> </div> </div> </div> </div> <section class="cs-read-next"> <h2 class="cs-read-next__heading"> Aşağıdaki içerikler de ilgilinizi çekebilir: </h2> <div class="cs-read-next__list cs-posts-area__archive"> <article class="cs-read-next__item post-27660 post type-post status-publish format-standard category-sed cs-entry cs-video-wrap"> <div class="cs-entry__outer"> <div class="cs-entry__inner cs-entry__content"> <div class="cs-entry__info"> <h2 class="cs-entry__title"><a href="https://fatihsoysal.com/blog/sed-ile-birden-fazla-boslugu-tek-boslukla-degistirme/">sed ile Birden Fazla Boşluğu Tek Boşlukla Değiştirme<div class="cs-entry__post-meta" ><div class="cs-meta-date">17 Ağustos 2025</div></div></a></h2> </div> </div> </div> </article> <article class="cs-read-next__item post-27669 post type-post status-publish format-standard category-sed cs-entry cs-video-wrap"> <div class="cs-entry__outer"> <div class="cs-entry__inner cs-entry__content"> <div class="cs-entry__info"> <h2 class="cs-entry__title"><a href="https://fatihsoysal.com/blog/sed-ile-coklu-metin-degistirme-orneklerle/">sed ile Çoklu Metin Değiştirme (Örneklerle)<div class="cs-entry__post-meta" ><div class="cs-meta-date">17 Ağustos 2025</div></div></a></h2> </div> </div> </div> </article> <article class="cs-read-next__item post-27759 post type-post status-publish format-standard category-sed cs-entry cs-video-wrap"> <div class="cs-entry__outer"> <div class="cs-entry__inner cs-entry__content"> <div class="cs-entry__info"> <h2 class="cs-entry__title"><a href="https://fatihsoysal.com/blog/sed-ile-dosyanin-her-satirinin-sonuna-virgul-ekleme/">sed ile Dosyanın Her Satırının Sonuna Virgül Ekleme<div class="cs-entry__post-meta" ><div class="cs-meta-date">18 Ağustos 2025</div></div></a></h2> </div> </div> </div> </article> <article class="cs-read-next__item post-27768 post type-post status-publish format-standard category-sed cs-entry cs-video-wrap"> <div class="cs-entry__outer"> <div class="cs-entry__inner cs-entry__content"> <div class="cs-entry__info"> <h2 class="cs-entry__title"><a href="https://fatihsoysal.com/blog/sed-ile-dosyada-her-bir-diger-satiri-silme/">sed ile Dosyada Her Bir Diğer Satırı Silme<div class="cs-entry__post-meta" ><div class="cs-meta-date">18 Ağustos 2025</div></div></a></h2> </div> </div> </div> </article> </div> </section> <div class="cs-subscribe"> <div class="cs-subscribe__content"> <div class="cs-subscribe__header"> <div class="cs-subscribe__heading h2"> E-posta Bülteni </div> <div class="cs-subscribe__subheading h2"> Yazılım Topluluğuna Katılın </div> <div class="cs-subscribe__description"> En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim. </div> </div> <form class="cs-subscribe__form" action="https://codesupply.us13.list-manage.com/subscribe/post?u=41845cb8908fb4302a4df512f&id=b5a5e9c757" method="post" target="_blank" novalidate> <div class="cs-form-group cs-subscribe__form-group"> <input type="email" placeholder="Your E-mail" name="EMAIL" required> <button type="submit" value="Abone Ol" aria-label="Abone Ol" name="subscribe"> <span>Abone Ol</span> </button> </div> </form> </div> </div> </div> </div> </main> </div> </div> <footer class="cs-footer" data-scheme="auto" data-l="light" data-d="dark"> <div class="cs-footer__item cs-footer__item-top-bar"> <div class="cs-container"> <div class="cs-footer__item-inner"> <div class="cs-footer__col cs-col-left"> <div class="cs-footer-columns__nav-menu"> <ul id="menu-menu-5" class="cs-footer-columns__nav "><li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-19194 csco-menu-item-style-none"><a href="https://fatihsoysal.com/"><span>Anasayfa</span></a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-11 csco-menu-item-style-none"><a href="https://fatihsoysal.com/blog/hakkimda/"><span>Hakkımda</span></a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-25363 csco-menu-item-style-none"><a href="#"><span>Eğitimler</span></a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-30019 csco-menu-item-style-none"><a href="#"><span>Makaleler</span></a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-home menu-item-69 csco-menu-item-style-none"><a href="https://fatihsoysal.com/blog"><span>Blog</span></a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-35075 csco-menu-item-style-none"><a href="#"><span>Kategoriler</span></a></li> <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-257 csco-menu-item-style-none"><a href="https://fatihsoysal.com/blog/iletisim/"><span>Bana Ulaşın</span></a></li> </ul> </div> </div> <div class="cs-footer__col cs-col-right"> <div class="cs-social"> <a class="cs-social__link" href="https://www.linkedin.com/in/fatihsoysal/" target="_blank" title="Linkedin"> <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20"><path d="M16.8169 2.00011H3.1831C3.02984 1.998 2.87767 2.02591 2.73526 2.08226C2.59286 2.13861 2.46302 2.22229 2.35316 2.32852C2.24329 2.43475 2.15556 2.56145 2.09496 2.70139C2.03437 2.84133 2.0021 2.99176 2 3.1441V16.8559C2.0021 17.0082 2.03437 17.1587 2.09496 17.2986C2.15556 17.4385 2.24329 17.5653 2.35316 17.6715C2.46302 17.7777 2.59286 17.8614 2.73526 17.9177C2.87767 17.9741 3.02984 18.002 3.1831 17.9999H16.8169C16.9702 18.002 17.1223 17.9741 17.2647 17.9177C17.4071 17.8614 17.537 17.7777 17.6468 17.6715C17.7567 17.5653 17.8444 17.4385 17.905 17.2986C17.9656 17.1587 17.9979 17.0082 18 16.8559V3.1441C17.9979 2.99176 17.9656 2.84133 17.905 2.70139C17.8444 2.56145 17.7567 2.43475 17.6468 2.32852C17.537 2.22229 17.4071 2.13861 17.2647 2.08226C17.1223 2.02591 16.9702 1.998 16.8169 2.00011ZM6.85312 15.3919H4.43863V8.19203H6.85312V15.3919ZM5.64588 7.18404C5.31289 7.18404 4.99354 7.05256 4.75808 6.81851C4.52262 6.58447 4.39034 6.26704 4.39034 5.93606C4.39034 5.60507 4.52262 5.28764 4.75808 5.0536C4.99354 4.81956 5.31289 4.68807 5.64588 4.68807C5.82269 4.66814 6.00175 4.68556 6.17133 4.73918C6.3409 4.7928 6.49717 4.88142 6.6299 4.99924C6.76264 5.11706 6.86883 5.26141 6.94155 5.42285C7.01426 5.58429 7.05185 5.75918 7.05185 5.93606C7.05185 6.11294 7.01426 6.28782 6.94155 6.44926C6.86883 6.6107 6.76264 6.75506 6.6299 6.87287C6.49717 6.99069 6.3409 7.07931 6.17133 7.13293C6.00175 7.18656 5.82269 7.20397 5.64588 7.18404ZM15.5614 15.3919H13.1469V11.528C13.1469 10.56 12.8008 9.928 11.9235 9.928C11.652 9.92998 11.3877 10.0146 11.1661 10.1705C10.9445 10.3264 10.7762 10.5461 10.6841 10.8C10.6211 10.988 10.5938 11.186 10.6036 11.384V15.3839H8.18913V8.18402H10.6036V9.20001C10.823 8.8217 11.142 8.51004 11.5263 8.29859C11.9106 8.08713 12.3457 7.98391 12.7847 8.00003C14.3944 8.00003 15.5614 9.03201 15.5614 11.248V15.3919Z"/></svg> </a> </div> </div> </div> </div> </div> <div class="cs-footer__item cs-footer__item-bottom-bar"> <div class="cs-container"> <div class="cs-footer__item-inner"> <div class="cs-footer__col cs-col-left"> <div class="cs-footer__nav-menu"> <ul id="menu-footer" class="cs-footer__nav "><li id="menu-item-39737" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-39737"><a href="https://fatihsoysal.com/blog/category/ai/"><span>AI</span></a></li> <li id="menu-item-39739" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-39739"><a href="https://fatihsoysal.com/blog/category/akademik-ve-bilimsel/"><span>Akademik ve Bilimsel</span></a></li> <li id="menu-item-39740" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-39740"><a href="https://fatihsoysal.com/blog/category/angular/"><span>Angular</span></a></li> <li id="menu-item-39741" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-39741"><a href="https://fatihsoysal.com/blog/category/aws/"><span>AWS</span></a></li> <li id="menu-item-39742" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-39742"><a href="https://fatihsoysal.com/blog/category/azure/"><span>Azure</span></a></li> <li id="menu-item-39743" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-39743"><a href="https://fatihsoysal.com/blog/category/bash/"><span>Bash</span></a></li> <li id="menu-item-39745" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-39745"><a href="https://fatihsoysal.com/blog/category/c-2/"><span>C++</span></a></li> <li id="menu-item-39746" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-39746"><a href="https://fatihsoysal.com/blog/category/cloud/"><span>Cloud</span></a></li> <li id="menu-item-39748" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-39748"><a href="https://fatihsoysal.com/blog/category/devops/"><span>Devops</span></a></li> <li id="menu-item-39749" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-39749"><a href="https://fatihsoysal.com/blog/category/docker/"><span>Docker</span></a></li> <li id="menu-item-39750" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-39750"><a href="https://fatihsoysal.com/blog/category/dusunsel-ve-kisisel/"><span>Düşünsel ve Kişisel</span></a></li> <li id="menu-item-39751" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-39751"><a href="https://fatihsoysal.com/blog/category/egitim/"><span>Eğitim</span></a></li> <li id="menu-item-39752" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-39752"><a href="https://fatihsoysal.com/blog/category/flutter/"><span>Flutter</span></a></li> <li id="menu-item-39754" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-39754"><a href="https://fatihsoysal.com/blog/category/genel/"><span>Genel</span></a></li> <li id="menu-item-39755" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-39755"><a href="https://fatihsoysal.com/blog/category/git/"><span>Git</span></a></li> <li id="menu-item-39758" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-39758"><a href="https://fatihsoysal.com/blog/category/is-dunyasi/"><span>İş Dünyası</span></a></li> <li id="menu-item-39759" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-39759"><a href="https://fatihsoysal.com/blog/category/java/"><span>Java</span></a></li> <li id="menu-item-39760" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-39760"><a href="https://fatihsoysal.com/blog/category/kubernetes/"><span>Kubernetes</span></a></li> <li id="menu-item-39761" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-39761"><a href="https://fatihsoysal.com/blog/category/mobile/"><span>Mobile</span></a></li> <li id="menu-item-39762" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-39762"><a href="https://fatihsoysal.com/blog/category/mongodb/"><span>MongoDB</span></a></li> <li id="menu-item-39763" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-39763"><a href="https://fatihsoysal.com/blog/category/mvc/"><span>MVC</span></a></li> <li id="menu-item-39764" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-39764"><a href="https://fatihsoysal.com/blog/category/nextjs/"><span>NextJS</span></a></li> <li id="menu-item-39765" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-39765"><a href="https://fatihsoysal.com/blog/category/nginx/"><span>Nginx</span></a></li> <li id="menu-item-39766" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-39766"><a href="https://fatihsoysal.com/blog/category/powershell/"><span>PowerShell</span></a></li> <li id="menu-item-39767" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-39767"><a href="https://fatihsoysal.com/blog/category/programming-patterns/"><span>Programming Patterns</span></a></li> <li id="menu-item-39768" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-39768"><a href="https://fatihsoysal.com/blog/category/python/"><span>Python</span></a></li> <li id="menu-item-39769" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-39769"><a href="https://fatihsoysal.com/blog/category/redis/"><span>Redis</span></a></li> <li id="menu-item-39770" class="menu-item menu-item-type-taxonomy menu-item-object-category current-post-ancestor current-menu-parent current-post-parent menu-item-39770"><a href="https://fatihsoysal.com/blog/category/sed/"><span>Sed</span></a></li> <li id="menu-item-39771" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-39771"><a href="https://fatihsoysal.com/blog/category/server/"><span>Server</span></a></li> <li id="menu-item-39772" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-39772"><a href="https://fatihsoysal.com/blog/category/yazilim/net/"><span>.NET</span></a></li> <li id="menu-item-39773" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-39773"><a href="https://fatihsoysal.com/blog/category/yazilim/ajax/"><span>AJAX</span></a></li> <li id="menu-item-39774" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-39774"><a href="https://fatihsoysal.com/blog/category/yazilim/asp-net/"><span>ASP.NET</span></a></li> <li id="menu-item-39775" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-39775"><a href="https://fatihsoysal.com/blog/category/yazilim/c/"><span>C#</span></a></li> <li id="menu-item-39776" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-39776"><a href="https://fatihsoysal.com/blog/category/yazilim/css3-html5/"><span>CSS3 – HTML5</span></a></li> <li id="menu-item-39777" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-39777"><a href="https://fatihsoysal.com/blog/category/yazilim/java-android-development/"><span>JAVA – Android</span></a></li> <li id="menu-item-39778" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-39778"><a href="https://fatihsoysal.com/blog/category/yazilim/javascript/"><span>Javascript</span></a></li> <li id="menu-item-39779" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-39779"><a href="https://fatihsoysal.com/blog/category/yazilim/linux/"><span>Linux</span></a></li> <li id="menu-item-39780" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-39780"><a href="https://fatihsoysal.com/blog/category/yazilim/php/"><span>PHP</span></a></li> <li id="menu-item-39781" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-39781"><a href="https://fatihsoysal.com/blog/category/yazilim/javascript/jquery/"><span>jQuery</span></a></li> <li id="menu-item-39782" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-39782"><a href="https://fatihsoysal.com/blog/category/yazilim/javascript/node-js/"><span>Node.js</span></a></li> <li id="menu-item-39783" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-39783"><a href="https://fatihsoysal.com/blog/category/yazilim/javascript/react/"><span>React</span></a></li> <li id="menu-item-39784" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-39784"><a href="https://fatihsoysal.com/blog/category/yazilim/sql/ms-sql-server/"><span>MS SQL Server</span></a></li> <li id="menu-item-39785" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-39785"><a href="https://fatihsoysal.com/blog/category/yazilim/sql/mysql/"><span>MySQL</span></a></li> <li id="menu-item-39786" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-39786"><a href="https://fatihsoysal.com/blog/category/yazilim/sql/postgresql/"><span>PostgreSQL</span></a></li> </ul> </div> </div> <div class="cs-footer__col cs-col-right"> <div class="cs-footer__copyright"> © 2026 Fatih Soysal 💻🚀 All rights reserved. Built with passion & caffeine ☕ </div> </div> </div> </div> </div> </footer> <button class="cs-scroll-top" role="button" aria-label="Scroll to top button"> <i class="cs-icon cs-icon-chevron-up"></i> <div class="cs-scroll-top-border"> <svg width="52" height="52" viewBox="0 0 52 52"> <path d="M26,2 a24,24 0 0,1 0,48 a24,24 0 0,1 0,-48" style="stroke-width: 2; fill: none;"></path> </svg> </div> <div class="cs-scroll-top-progress"> <svg width="52" height="52" viewBox="0 0 52 52"> <path d="M26,2 a24,24 0 0,1 0,48 a24,24 0 0,1 0,-48" style="stroke-width: 2; fill: none;"></path> </svg> </div> </button> <script type="text/javascript"> var CF7AppsLoadhCaptcha = function() { var hcaptcha = document.querySelectorAll( '.h-captcha' ); for (var i = 0; i < hcaptcha.length; i++) { hcaptcha[i].setAttribute( 'data-sitekey', '' ); hcaptcha[i].setAttribute( 'data-callback', 'cf7apps_hcaptcha_callback' ); } }; </script> <script src="https://js.hcaptcha.com/1/api.js?onload=CF7AppsLoadhCaptcha" async defer ></script> <script> const lazyloadRunObserver = () => { const lazyloadBackgrounds = document.querySelectorAll( `.e-con.e-parent:not(.e-lazyloaded)` ); const lazyloadBackgroundObserver = new IntersectionObserver( ( entries ) => { entries.forEach( ( entry ) => { if ( entry.isIntersecting ) { let lazyloadBackground = entry.target; if( lazyloadBackground ) { lazyloadBackground.classList.add( 'e-lazyloaded' ); } lazyloadBackgroundObserver.unobserve( entry.target ); } }); }, { rootMargin: '200px 0px 200px 0px' } ); lazyloadBackgrounds.forEach( ( lazyloadBackground ) => { lazyloadBackgroundObserver.observe( lazyloadBackground ); } ); }; const events = [ 'DOMContentLoaded', 'elementor/lazyload/observe', ]; events.forEach( ( event ) => { document.addEventListener( event, lazyloadRunObserver ); } ); </script> <script src="https://fatihsoysal.com/blog/wp-content/plugins/embed-any-document/js/pdfobject.min.js?ver=2.7.12" id="awsm-ead-pdf-object-js"></script> <script id="awsm-ead-public-js-extra"> var eadPublic = []; </script> <script src="https://fatihsoysal.com/blog/wp-content/plugins/embed-any-document/js/embed-public.min.js?ver=2.7.12" id="awsm-ead-public-js"></script> <script src="https://fatihsoysal.com/blog/wp-includes/js/dist/hooks.min.js?ver=4d63a3d491d11ffd8ac6" id="wp-hooks-js"></script> <script src="https://fatihsoysal.com/blog/wp-includes/js/dist/i18n.min.js?ver=5e580eb46a90c2b997e6" id="wp-i18n-js"></script> <script id="wp-i18n-js-after"> wp.i18n.setLocaleData( { 'text direction\u0004ltr': [ 'ltr' ] } ); </script> <script src="https://fatihsoysal.com/blog/wp-content/plugins/contact-form-7/includes/swv/js/index.js?ver=6.1.5" id="swv-js"></script> <script id="contact-form-7-js-translations"> ( function( domain, translations ) { var localeData = translations.locale_data[ domain ] || translations.locale_data.messages; localeData[""].domain = domain; wp.i18n.setLocaleData( localeData, domain ); } )( "contact-form-7", {"translation-revision-date":"2026-01-19 21:19:08+0000","generator":"GlotPress\/4.0.3","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=2; plural=n > 1;","lang":"tr"},"This contact form is placed in the wrong place.":["Bu ileti\u015fim formu yanl\u0131\u015f yere yerle\u015ftirilmi\u015f."],"Error:":["Hata:"]}},"comment":{"reference":"includes\/js\/index.js"}} ); </script> <script id="contact-form-7-js-before"> var wpcf7 = { "api": { "root": "https:\/\/fatihsoysal.com\/blog\/wp-json\/", "namespace": "contact-form-7\/v1" } }; </script> <script src="https://fatihsoysal.com/blog/wp-content/plugins/contact-form-7/includes/js/index.js?ver=6.1.5" id="contact-form-7-js"></script> <script src="https://fatihsoysal.com/blog/wp-includes/js/imagesloaded.min.js?ver=5.0.0" id="imagesloaded-js"></script> <script src="https://fatihsoysal.com/blog/wp-content/plugins/sight/render/js/jquery.magnific-popup.min.js?ver=1777452259" id="magnific-popup-js"></script> <script id="sight-block-script-js-extra"> var sight_lightbox_localize = {"text_previous":"Previous","text_next":"Next","text_close":"Close","text_loading":"Loading","text_counter":"of"}; </script> <script src="https://fatihsoysal.com/blog/wp-content/plugins/sight/render/js/sight.js?ver=1777452259" id="sight-block-script-js"></script> <script src="https://fatihsoysal.com/blog/wp-content/plugins/easy-syntax-highlighter/assets/js/highlight.min.js?ver=11.9.0" id="esh-highlight-js-js"></script> <script id="esh-highlight-js-js-after"> document.addEventListener("DOMContentLoaded", () => { hljs.highlightAll(); }); </script> <script id="esh-frontend-js-extra"> var esh_i18n = {"copied":"\u5df2\u590d\u5236\uff01","copy_failed":"\u590d\u5236\u5931\u8d25"}; </script> <script src="https://fatihsoysal.com/blog/wp-content/plugins/easy-syntax-highlighter/assets/js/frontend.js?ver=2.0.0" id="esh-frontend-js"></script> <script src="https://www.google.com/recaptcha/api.js?render=6Lfq6JMsAAAAAFwFocaWCzv-A3znzOaIyo9ACOYg&ver=3.0" id="google-recaptcha-js"></script> <script src="https://fatihsoysal.com/blog/wp-includes/js/dist/vendor/wp-polyfill.min.js?ver=3.15.0" id="wp-polyfill-js"></script> <script id="wpcf7-recaptcha-js-before"> var wpcf7_recaptcha = { "sitekey": "6Lfq6JMsAAAAAFwFocaWCzv-A3znzOaIyo9ACOYg", "actions": { "homepage": "homepage", "contactform": "contactform" } }; </script> <script src="https://fatihsoysal.com/blog/wp-content/plugins/contact-form-7/modules/recaptcha/index.js?ver=6.1.5" id="wpcf7-recaptcha-js"></script> <script id="csco-scripts-js-extra"> var csLocalize = {"siteSchemeMode":"system","siteSchemeToogle":"1","shareCopiedText":"URL copied","subscribeProcess":"Processing your subscription...","subscribeSuccess":"Thank you for subscribing!","subscribeError":"Form submission error"}; </script> <script src="https://fatihsoysal.com/blog/wp-content/themes/intro/assets/js/scripts.js?ver=6.7.6" id="csco-scripts-js"></script> <script src="https://fatihsoysal.com/blog/wp-content/themes/intro/assets/static/js/comment-reply.js?ver=6.7.6" id="csco-comment-reply-js"></script> <script defer src="https://fatihsoysal.com/blog/wp-content/plugins/akismet/_inc/akismet-frontend.js?ver=1777452205" id="akismet-frontend-js"></script> </div> </body> </html>