<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:media="http://search.yahoo.com/mrss/"><channel><title><![CDATA[Selçuk Ermaya]]></title><description><![CDATA[A developer has no name]]></description><link>https://www.selcukermaya.com/tr/</link><image><url>https://www.selcukermaya.com/tr/favicon.png</url><title>Selçuk Ermaya</title><link>https://www.selcukermaya.com/tr/</link></image><generator>Ghost 5.2</generator><lastBuildDate>Tue, 07 Apr 2026 04:14:18 GMT</lastBuildDate><atom:link href="https://www.selcukermaya.com/tr/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[Durum Sorgusu]]></title><description><![CDATA[Son doğaya kaçışımızın ardından uzun bir zaman geçti. Çetin yayla yollarının ardından Sülüklügöl’ün -en azından benim için yeni keşfedilmiş- ...]]></description><link>https://www.selcukermaya.com/tr/durum-sorgusu/</link><guid isPermaLink="false">5f200e798f12d9167f954f44</guid><dc:creator><![CDATA[Selçuk Ermaya]]></dc:creator><pubDate>Tue, 28 Jul 2020 19:11:06 GMT</pubDate><media:content url="https://www.selcukermaya.com/tr/content/images/2020/07/W_IMG_4891.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://www.selcukermaya.com/tr/content/images/2020/07/W_IMG_4891.jpg" alt="Durum Sorgusu"><p>Son do&#x11F;aya ka&#xE7;&#x131;&#x15F;&#x131;m&#x131;z&#x131;n ard&#x131;ndan uzun bir zaman ge&#xE7;ti. &#xC7;etin yayla yollar&#x131;n&#x131;n ard&#x131;ndan S&#xFC;l&#xFC;kl&#xFC;g&#xF6;l&#x2019;&#xFC;n -en az&#x131;ndan benim i&#xE7;in yeni ke&#x15F;fedilmi&#x15F;- sakin ortam&#x131;nda ba&#x15F;lad&#x131; maceram&#x131;z.</p><p>S&#xFC;l&#xFC;kl&#xFC;g&#xF6;l&apos;e yakla&#x15F;&#x131;k 8-10 km &#xF6;nce, i&#xE7;inde ya&#x15F;ad&#x131;&#x11F;&#x131;m&#x131;z &#x201C;yeni d&#xFC;nya&#x201D; olan internet ile ba&#x11F;lar&#x131;n&#x131;z kopmaya ba&#x15F;l&#x131;yor yava&#x15F; yava&#x15F;. Birka&#xE7; belirli nokta d&#x131;&#x15F;&#x131;nda hi&#xE7;bir &#x15F;ekilde ba&#x11F;lant&#x131;n&#x131;z yok bu d&#xFC;nyaya. Belki biraz tan&#x131;d&#x131;k gelmi&#x15F;tir? &#x15E;imdilerde bir par&#xE7;am&#x131;z olan ak&#x131;ll&#x131; telefon k&#x131;sm&#x131;n&#x131;n en az&#x131;ndan &#x201C;telefon&#x201D; k&#x131;sm&#x131;.</p><p>Bir zamanlar sadece belirli noktalarda kullanabildi&#x11F;imiz, &#xE7;o&#x11F;u zaman sadece ihtiya&#xE7; halinde ba&#x15F;&#x131;na oturdu&#x11F;umuz &#x15F;eyden bahsediyorum.</p><p>Konu &#xE7;ok fazla da&#x11F;&#x131;lmadan belirteyim, bu konuda ara&#x15F;t&#x131;rma yapan veya uzman biri olmad&#x131;&#x11F;&#x131;m gibi, bir gezi blogger&#x131; da de&#x11F;ilim. Sadece bu g&#xF6;l&#xFC;n, do&#x11F;ada bulunmam&#x131;n, i&#x15F;lerden uzakla&#x15F;mam&#x131;n, teknoloji detoksuna bir nebze de olsa girmemin beni &#x201C;bana&#x201D; daha fazla yak&#x131;nla&#x15F;t&#x131;rd&#x131;&#x11F;&#x131;n&#x131; ve akl&#x131;mdaki baz&#x131; d&#xFC;&#x15F;&#xFC;nceleri daha net g&#xF6;rebildi&#x11F;imi fark ettim. Bunlardan biraz bahsetmek istiyorum.</p><h2 id="ama-">Ama&#xE7;</h2><p>&#x130;nsan&#x131;n y&#xFC;r&#xFC;d&#xFC;&#x11F;&#xFC; yol ne olursa olsun, hem bu yolu, hem de kendisini tan&#x131;mas&#x131; gerekti&#x11F;ini d&#xFC;&#x15F;&#xFC;n&#xFC;r&#xFC;m hep. Ayn&#x131; zamanda &#x201C;ama&#xE7;&#x201D; dedi&#x11F;imiz o birincil &#x15F;eyin kendisini. Bize &#xE7;o&#x11F;u zaman etraf&#x131; &#xE7;ok net olmasa da hedef &#xE7;izdiren, att&#x131;&#x11F;&#x131;m&#x131;z ad&#x131;mlar&#x131;, uzunlu&#x11F;unu k&#x131;sal&#x131;&#x11F;&#x131;n&#x131; belirleyen, ne kadar fedakarl&#x131;k yap&#x131;p, ne kadar&#x131;n&#x131; kald&#x131;rabilece&#x11F;imizi bize az &#xE7;ok hissettiren &#x15F;eyden bahsediyorum.</p><p>&#x130;lk yola &#xE7;&#x131;kt&#x131;&#x11F;&#x131;m&#x131;zda asl&#x131;nda s&#xF6;zel olarak net hedefler koysak da, bazen ald&#x131;&#x11F;&#x131;m&#x131;z aksiyonlardaki eksiklerimizden, bazen hedefin tutars&#x131;zl&#x131;&#x11F;&#x131;ndan, bazen de bizim elimizde olmayan nedenlerden dolay&#x131;, bu yay&#x131;ndan &#xE7;&#x131;kan ok &#xE7;o&#x11F;u zaman hedefi tam 12&#x2019;den vurmaz. &#xA0;Hedef noktas&#x131;n&#x131;n sa&#x11F;&#x131;na-soluna isabet eder veya hedef tahtas&#x131;n&#x131; hi&#xE7; g&#xF6;rmez bile.</p><p>Bu arada ger&#xE7;ekten ben kimim?</p><h2 id="kendini-tan-mak">Kendini tan&#x131;mak</h2><p>D&#xFC;nya n&#xFC;fusuna oranla bakt&#x131;&#x11F;&#x131;m&#x131;zda insan&#x131;n &#xF6;ng&#xF6;r&#xFC; yetene&#x11F;i ileri olan bir canl&#x131; olmad&#x131;&#x11F;&#x131;n&#x131; s&#xF6;ylemek yanl&#x131;&#x15F; olmaz san&#x131;r&#x131;m. Bunun -en az&#x131;ndan b&#xFC;y&#xFC;k bir b&#xF6;l&#xFC;m&#xFC;n&#xFC;n- insan&#x131;n kendini tan&#x131;ma, sonras&#x131;nda da &#xE7;evresini tan&#x131;madaki eksikli&#x11F;inden kaynakland&#x131;&#x11F;&#x131;n&#x131; d&#xFC;&#x15F;&#xFC;n&#xFC;yorum.</p><p>Ger&#xE7;ekten kendimize &#x201C;G&#xFC;&#xE7;l&#xFC; ve zay&#x131;f y&#xF6;nlerim neler?&#x201D; diye sordu&#x11F;umuzda verdi&#x11F;imiz cevaplar neler? Ger&#xE7;ekleri duymaya ne kadar haz&#x131;r&#x131;z? Duydu&#x11F;umuz bu ger&#xE7;ekler kar&#x15F;&#x131;s&#x131;nda kendimizi geli&#x15F;tirmeli veya de&#x11F;i&#x15F;tirmeli miyiz? E&#x11F;er evetse, bu de&#x11F;i&#x15F;im ve geli&#x15F;ime ne kadar a&#xE7;&#x131;k, ne kadar haz&#x131;r&#x131;z?</p><p>Peki bu g&#xFC;&#xE7;l&#xFC; ve zay&#x131;f y&#xF6;nlerinizi ba&#x15F;kalar&#x131; taraf&#x131;ndan duymaya ne kadar haz&#x131;rs&#x131;n&#x131;z? Sinirden k&#xFC;plere mi binersiniz, yoksa bunu g&#xFC;zel bir ele&#x15F;tiri olarak kabul edip biraz &#xF6;nceki sorulara yine ayn&#x131; kararl&#x131;l&#x131;k ve d&#xFC;r&#xFC;stl&#xFC;kle cevap verir, gereken aksiyonlar&#x131; al&#x131;r m&#x131;s&#x131;n&#x131;z?</p><p>Peki bunlar&#x131; ba&#x15F;kalar&#x131;na s&#xF6;ylemeye?</p><h2 id="kararl-l-k">Kararl&#x131;l&#x131;k</h2><p>Bir &#x15F;eyi az da olsa s&#x131;kl&#x131;kla ger&#xE7;ekle&#x15F;tirmek. Veya bir &#x15F;eyi &#xE7;ok ve s&#x131;kl&#x131;kla ger&#xE7;ekle&#x15F;tirmek de olabilir. &#xA0;Burada as&#x131;l vurgulanmak istenen olay tam olarak s&#xFC;reklilik asl&#x131;nda.</p><p>Son zamanlarda &#x201C;&#xE7;ok &#xE7;al&#x131;&#x15F;mak&#x201D; ve &#x201C;efektif &#xE7;al&#x131;&#x15F;mak&#x201D; konusu s&#x131;k s&#x131;k g&#xFC;ndeme geliyor. Bu olay&#x131;n biraz insan&#x131;n ne istedi&#x11F;i ile alakal&#x131; oldu&#x11F;unu d&#xFC;&#x15F;&#xFC;n&#xFC;yorum. Ger&#xE7;ekten ne istiyoruz? E&#x11F;er kriterimiz &#x201C;ba&#x15F;ar&#x131;&#x201D; ise soraca&#x11F;&#x131;m&#x131;z sorular farkl&#x131;, &#x201C;para&#x201D; ise farkl&#x131;, &#x201C;ego tatmini&#x201D; ise farkl&#x131; olacakt&#x131;r. Buraya ekstra kavramlar ekleyebiliriz ama ana noktay&#x131; anlad&#x131;&#x11F;&#x131;n&#x131;z&#x131; d&#xFC;&#x15F;&#xFC;n&#xFC;yorum. Bu arada bu kavramlar&#x131;n azl&#x131;&#x11F;&#x131; ve &#xE7;oklu&#x11F;u ile de de&#x11F;i&#x15F;iyor yapmam&#x131;z gerekenler.</p><p>Ba&#x15F;ar&#x131;l&#x131; olarak tarihin sayfalar&#x131;nda yer alm&#x131;&#x15F;, &#xE7;a&#x11F; a&#xE7;m&#x131;&#x15F; &#xE7;a&#x11F; kapatm&#x131;&#x15F;, b&#xFC;t&#xFC;n insanl&#x131;&#x11F;&#x131;n gelece&#x11F;ine bir &#x15F;ekilde &#x131;&#x15F;&#x131;k tutmu&#x15F; insanlar&#x131;n ge&#xE7;mi&#x15F;ine, izledi&#x11F;i yollara bakarsan&#x131;z, hepsinin ortak, temel bir &#xF6;zelli&#x11F;ini g&#xF6;receksiniz, &#x201C;&#xE7;ok &#xE7;al&#x131;&#x15F;mak&#x201D;. Aksini hen&#xFC;z g&#xF6;rmedim. Bunu o kararl&#x131;&#x11F;&#x131;n bir par&#xE7;as&#x131; olarak d&#xFC;&#x15F;&#xFC;n&#xFC;n.</p><h2 id="batarken-ard-ndan-tepelerin-">Batarken ard&#x131;ndan tepelerin...</h2><p>Uzun zaman oldu blog yazmayal&#x131;.</p><p>&#x130;&#x15F;in &#xF6;z&#xFC;;</p><ul><li>Amac&#x131;n&#x131;z&#x131; iyi belirleyin</li><li>Kendinizi tan&#x131;y&#x131;n</li><li>Yapt&#x131;&#x11F;&#x131;n&#x131;z i&#x15F;te kararl&#x131; olun</li><li>Hatalardan ders almay&#x131; &#xF6;&#x11F;renin</li></ul><p>&#xD6;zellikle &#x15F;unu belirtmek isterim; hatalardan ders almak o hatay&#x131; bir daha tekrarlamayarak de&#x11F;il, fark&#x131;nda olmak ve hatalardaki davran&#x131;&#x15F;sal bozukluklar&#x131; d&#xFC;zeltmekle olur. Emin olun fark&#x131;nda olmad&#x131;&#x11F;&#x131;n&#x131;z ve d&#xFC;zeltmedi&#x11F;iniz o davran&#x131;&#x15F;lar, kendinize veya bir ba&#x15F;kas&#x131;na ne kadar s&#xF6;z verseniz de tekrarlanacak ve sizi k&#x131;s&#x131;r bir d&#xF6;ng&#xFC;ye sokacakt&#x131;r.</p><p>Amac&#x131;n&#x131;z her zaman d&#xF6;ng&#xFC;den &#xE7;&#x131;kmak olsun...</p><figure class="kg-card kg-image-card"><img src="https://www.selcukermaya.com/tr/content/images/2020/07/W_IMG_4880.jpg" class="kg-image" alt="Durum Sorgusu" loading="lazy"></figure><p>Selametle.</p>]]></content:encoded></item><item><title><![CDATA[PowerPoint sunumu mu? Push Notification'a ne dersin?]]></title><description><![CDATA[<!--kg-card-begin: markdown--><p>TL;DR: Bize mail &#xFC;zerinden PowerPoint sunumu olarak gelen yemek men&#xFC;s&#xFC;n&#xFC; maili a&#xE7;&#x131;p okumak zor geldi&#x11F;i i&#xE7;in olaya daha fantastik bir hava katt&#x131;k.</p>
<h2 id="yineiinhikayesiilebalayalm">Yine i&#x15F;in hikayesi ile ba&#x15F;layal&#x131;m...</h2>
<p>S&</p>]]></description><link>https://www.selcukermaya.com/tr/powerpoint-sunumu-mu-push-notificationa-ne-dersin/</link><guid isPermaLink="false">5b35ea847058c26cc33003a6</guid><dc:creator><![CDATA[Selçuk Ermaya]]></dc:creator><pubDate>Tue, 10 Jul 2018 19:25:57 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1522946603609-bd2c6ab8c476?ixlib=rb-0.3.5&amp;q=80&amp;fm=jpg&amp;crop=entropy&amp;cs=tinysrgb&amp;w=1080&amp;fit=max&amp;ixid=eyJhcHBfaWQiOjExNzczfQ&amp;s=5c4231081098b544ebf721c899f99a1b" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: markdown--><img src="https://images.unsplash.com/photo-1522946603609-bd2c6ab8c476?ixlib=rb-0.3.5&amp;q=80&amp;fm=jpg&amp;crop=entropy&amp;cs=tinysrgb&amp;w=1080&amp;fit=max&amp;ixid=eyJhcHBfaWQiOjExNzczfQ&amp;s=5c4231081098b544ebf721c899f99a1b" alt="PowerPoint sunumu mu? Push Notification&apos;a ne dersin?"><p>TL;DR: Bize mail &#xFC;zerinden PowerPoint sunumu olarak gelen yemek men&#xFC;s&#xFC;n&#xFC; maili a&#xE7;&#x131;p okumak zor geldi&#x11F;i i&#xE7;in olaya daha fantastik bir hava katt&#x131;k.</p>
<h2 id="yineiinhikayesiilebalayalm">Yine i&#x15F;in hikayesi ile ba&#x15F;layal&#x131;m...</h2>
<p>S&#xFC;rekli gitti&#x11F;imiz bir yemek firmas&#x131;n&#x131;n &quot;abi mail adresinizi verin, yemek men&#xFC;s&#xFC;n&#xFC; her g&#xFC;n oraya atal&#x131;m.&quot; demesi ile ba&#x15F;lad&#x131; her &#x15F;ey.</p>
<p>&quot;SPAM teredd&#xFC;t&#xFC;&quot; i&#xE7;erisinde verdik mail adresimizi. Buraya kadar her &#x15F;ey g&#xFC;zel. Mailleri almaya da ba&#x15F;lad&#x131;k. Ama bir m&#xFC;ddet sonra bu gelen mailleri okumak s&#x131;kmaya ba&#x15F;lad&#x131;. Maili a&#xE7;, PowerPoint sunumuna t&#x131;kla, yaz&#x131;l&#x131;m a&#xE7;&#x131;ls&#x131;n ... S&#x131;k&#x131;ld&#x131;k.</p>
<h2 id="engelik">&#xDC;&#x15F;enge&#xE7;lik?</h2>
<p><img src="https://www.selcukermaya.com/tr/content/images/2020/09/emoji-for-karikatur.jpg" alt="PowerPoint sunumu mu? Push Notification&apos;a ne dersin?" loading="lazy"></p>
<p>Abi sen de abart&#x131;yorsun diyenleri <strong>duyamaz!</strong> gibiyim. Herkes bir i&#x15F;i yapmak i&#xE7;in daha efektif y&#xF6;ntemler kullanmay&#x131; elbet ister. Biz de bize en efektif olan y&#xF6;ntemi se&#xE7;elim dedik.</p>
<p>Hani Bill Gates;</p>
<p>&quot;Zor bir i&#x15F;i yapmas&#x131; i&#xE7;in her zaman tembel bir insan&#x131; se&#xE7;erim. &#xC7;&#xFC;nk&#xFC; o i&#x15F;i yapman&#x131;n kolay yolunu bulur.&quot;</p>
<p>diyormu&#x15F; ya...</p>
<p>Kendime tembel mi demi&#x15F; oluyorum bu durumda &#x1F635;</p>
<h2 id="durumunvehameti">Durumun vehameti</h2>
<p>Bize gelen dosyan&#x131;n i&#xE7;eri&#x11F;ini a&#x15F;a&#x11F;&#x131;da payla&#x15F;&#x131;yorum. Bu bir PowerPoint dosyas&#x131;.</p>
<p><img src="https://www.selcukermaya.com/tr/content/images/2018/07/sos-cafe-menu-listesi.png" alt="PowerPoint sunumu mu? Push Notification&apos;a ne dersin?" loading="lazy"></p>
<p>Ne kadar fakir oldu&#x11F;umuz anla&#x15F;&#x131;lmas&#x131;n diye fiyatlar&#x131; gizleyecektim ama o fiyatlar &#xFC;zerinden de i&#x15F;lem yapaca&#x11F;&#x131;m&#x131;z i&#xE7;in kalmas&#x131;na karar verdim &#x1F611;</p>
<p>Neyse devam edelim.</p>
<h2 id="doruaralardoruyerlerdekullanmak">Do&#x11F;ru ara&#xE7;lar&#x131; do&#x11F;ru yerlerde kullanmak</h2>
<p>Bir&#xE7;ok i&#x15F;i otomatik hale getirmek i&#xE7;in baz&#x131; online ara&#xE7;lardan faydalan&#x131;r&#x131;m. &#x130;htiyac&#x131;ma y&#xF6;nelik bir &#x15F;ey bulamad&#x131;&#x11F;&#x131;mda ise kendim ufak scriptler yazarak bu i&#x15F;lemi ger&#xE7;ekle&#x15F;tiririm. Onu da bana deployment maliyeti &#xE7;&#x131;karmayan bir yerde yay&#x131;nlar&#x131;m.</p>
<p>Burada da durum &#xE7;ok farkl&#x131; de&#x11F;il. Yine otomatize etmek istedi&#x11F;im bir &#x15F;eyler ve yine kullanmak istedi&#x11F;im ara&#xE7;lar.</p>
<h2 id="hadibalayalm">Hadi ba&#x15F;layal&#x131;m!</h2>
<h4 id="zapier">Zapier</h4>
<p>Zapier m&#xFC;kemmel bir ara&#xE7;. Ayn&#x131; IFTTT&apos;ye benzer bir yap&#x131;s&#x131; var ama biraz daha profesyonel. &quot;&#x15E;u &#x15F;&#xF6;yle olursa &#x15F;unu &#x15F;unu yap&quot;&apos;tan daha ziyade bu sizi bir ad&#x131;m &#xF6;teye ta&#x15F;&#x131;yarak ilgili datalar &#xFC;zerinde manip&#xFC;lasyonlar yapabilmenize de olanak sa&#x11F;l&#x131;yor. Hatta bir ad&#x131;m daha &#xF6;teye giderseniz gelen datay&#x131; bir &quot;NodeJS&quot; ortam&#x131;na ak&#x131;t&#x131;p, kendi kodunuzu dahi i&#x15F;letebilirsiniz.</p>
<p>Neyse &#xE7;ok fazla &#xF6;vmeyelim. Biz Zapier&apos;i a&#x15F;a&#x11F;&#x131;daki 2 ama&#xE7; i&#xE7;in kulland&#x131;k;</p>
<h5 id="ama1">Ama&#xE7; - 1</h5>
<ol>
<li>Trigger: New Attachment</li>
<li>Action: Upload File</li>
</ol>
<p><strong>T&#xFC;rk&#xE7;e meali;</strong></p>
<p>Bana, &quot;...@...com&quot; adresinden i&#xE7;erisinde &quot;attachment&quot; (dosya) olan bir email gelirse, bu attachment&apos;&#x131; Google Drive&apos;&#x131;ma &quot;...&quot; klas&#xF6;r&#xFC;ne kaydet. (Niye mi Google Drive? Biraz sonra g&#xF6;rece&#x11F;iz.)</p>
<h5 id="ama2">Ama&#xE7; - 2</h5>
<ol>
<li>Trigger: New File in Google Drive Folder</li>
<li>Action: Send a Web Request</li>
</ol>
<p><strong>T&#xFC;rk&#xE7;e meali;</strong></p>
<p>E&#x11F;er &quot;Spesifik&quot; bir Google Drive klas&#xF6;r&#xFC;me, bir dosya y&#xFC;klenirse, bu y&#xFC;klenen dosyan&#x131;n i&#xE7;eri&#x11F;ini <code>https://soscafe.herokuapp.com/hook</code> adresine g&#xF6;nder.</p>
<p>Odak da&#x11F;&#x131;lmas&#x131;n. Yeni bir web adresimiz var. NodeJS b&#xF6;l&#xFC;m&#xFC;nde g&#xF6;rece&#x11F;iz.</p>
<h4 id="googledrive">Google Drive</h4>
<p>Burada Google Drive&apos;&#x131; se&#xE7;memizin &#xF6;zel bir sebebi var. Google Drive, bir klas&#xF6;re att&#x131;&#x11F;&#x131;n&#x131;z bir dosyan&#x131;n text i&#xE7;eri&#x11F;ini size verebiliyor. Bu dosya bir PowerPoint sunumu dahi olsa bunu yap&#x131;yor. Haliyle yukar&#x131;daki gibi bir PowerPoint sunumundan bize kalan a&#x15F;a&#x11F;&#x131;daki gibi bir i&#xE7;erik oluyor.</p>
<pre><code>EZOGEL&#x130;N &#xC7;ORBASI
   5,00 TL
ARNAVUT C&#x130;&#x11E;ER&#x130;
(YANINDA P&#x130;LAV+YO&#x11E;URT+SU)
 17,00TL
IZGARA K&#xD6;FTE
(YANINDA P&#x130;LAV+YO&#x11E;URT+SU)
16,00 TL
FIRINDA TAVUK P&#x130;RZOLA
 (YANINDA P&#x130;LAV+YO&#x11E;URT+SU)
15,00 TL
K&#xD6;R&#x130; SOSLU TAVUK
(YANINDA+P&#x130;LAV+YO&#x11E;URT+SU)
15,00 TL
...
</code></pre>
<h4 id="nodejs">NodeJS</h4>
<p>Zapier &#xFC;zerinden bir adrese Request at&#x131;yorduk ya hani, i&#x15F;te o Request&apos;i kar&#x15F;&#x131;layan arkada&#x15F;&#x131; NodeJS ile kodlad&#x131;k. Neden mi? H&#x131;p&#x131;zl&#x131; bir &#x15F;eyler &#xE7;&#x131;ks&#x131;n diye.</p>
<p>Kodlar&#x131; uzun uzad&#x131;ya buraya yazmayaca&#x11F;&#x131;m. O y&#xFC;zden sizi <a href="https://github.com/se/soscafe">buradaki</a> Github Reposuna y&#xF6;nlendiriyorum.</p>
<p>E&#x11F;er anla&#x15F;&#x131;lmayan bir yer olursa kodlarda yorumlara yazarsan&#x131;z h&#x131;zl&#x131;ca cevap d&#xF6;nerim.</p>
<p><a href="https://github.com/se/soscafe">https://github.com/se/soscafe</a></p>
<h4 id="heroku">Heroku</h4>
<p>Bu k&#x131;s&#x131;m ise deployment&apos;&#x131; &#xFC;cretsiz yapt&#x131;&#x11F;&#x131;m ara&#xE7; ile alakal&#x131;.  Yazm&#x131;&#x15F; oldu&#x11F;um baz&#x131; projeleri Heroku &#xFC;zerindeki &#xFC;cretsiz hesab&#x131;mda bar&#x131;nd&#x131;r&#x131;yorum. Heroku sa&#x11F;olsun 5 projeye kadar &#xFC;cretsiz bir &#x15F;ekilde bir &#xE7;ok projeyi yay&#x131;nlayabilmeme olanak sa&#x11F;l&#x131;yor. (NodeJS, Asp.Net Core, Php ... bunlardan baz&#x131;lar&#x131;. Hem app hem de webapp se&#xE7;enekleri mevcut.)</p>
<p>Haliyle Heroku&apos;yu da yazm&#x131;&#x15F; oldu&#x11F;um Webhook projesini (Gelen i&#xE7;eri&#x11F;in kar&#x15F;&#x131;land&#x131;&#x11F;&#x131; ve i&#x15F;lendi&#x11F;i adres) yay&#x131;nlamak i&#xE7;in kulland&#x131;m.</p>
<h4 id="monopush">MonoPush</h4>
<p>MonoPush&apos;u hat&#x131;rlayanlar&#x131;n&#x131;z vard&#x131;r. <a href="https://www.selcukermaya.com/tr/bir-problem-45-dk-bir-proje-bir-makale/">Buradaki makalede</a> bahsetmi&#x15F;tim kendisinden ve nas&#x131;l ortaya &#xE7;&#x131;kt&#x131;&#x11F;&#x131;ndan.</p>
<p>K&#x131;sacas&#x131; <a href="http://telegram.org">Telegram</a> &#xFC;zerinden size bir Url sa&#x11F;layarak Push Notification arac&#x131; gibi kullanman&#x131;za olanak sa&#x11F;l&#x131;yor. E&#x11F;er projedeki kodlar&#x131;n bir b&#xF6;l&#xFC;m&#xFC;ne dikkat ederseniz bir Push Url&apos;e request att&#x131;&#x11F;&#x131;m&#x131;z&#x131; g&#xF6;receksiniz. &#x130;&#x15F;te oradaki adresi MonoPush &#xFC;zerinden alm&#x131;&#x15F; olduk.</p>
<h2 id="sonu">Sonu&#xE7;?</h2>
<p><img src="https://www.selcukermaya.com/tr/content/images/2018/07/sos-cafe-push.png" alt="PowerPoint sunumu mu? Push Notification&apos;a ne dersin?" loading="lazy"></p>
<h2 id="huh">Huh...</h2>
<p>Makalelerde &#xE7;ok fazla konuya de&#x11F;inmem gerekiyor (&#x130;&#x15F;in a&#xE7;&#x131;k&#xE7;as&#x131; istiyorum da). &#xC7;&#xFC;nk&#xFC; de&#x11F;inmedi&#x11F;imizde bir &#xE7;ok konu eksik kal&#x131;yor. Neyse &#xFC;mit ediyorum g&#xFC;zel ve ufuk a&#xE7;&#x131;c&#x131; bir makale olmu&#x15F;tur. Sorular&#x131;n&#x131;z varsa sormaktan &#xE7;ekinmeyin &#x1F609;</p>
<p><img src="https://www.selcukermaya.com/tr/content/images/2020/09/emoji-for-karikatur.jpg" alt="PowerPoint sunumu mu? Push Notification&apos;a ne dersin?" loading="lazy"></p>
<h2 id="teekkreksiketmeyelim">Te&#x15F;ekk&#xFC;r&#xFC; eksik etmeyelim</h2>
<p>Projenin fikir babas&#x131;, talebi yapan <a href="https://twitter.com/tarikcayir">@tarikcayir</a> &#x1F609; Projeyi yaparken ben &#xE7;ok e&#x11F;lendim. O y&#xFC;zden ona bolca te&#x15F;ekk&#xFC;r.</p>
<p>&#x15E;imdilik, Selametle...</p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[1 problem, 45 dk, 1 proje, 1 makale]]></title><description><![CDATA[<!--kg-card-begin: markdown--><p>TL;DR: &#x15E;imdi 45 dakikal&#x131;k projeyi balland&#x131;ra balland&#x131;ra sanki &#xE7;ok da bi&#x15F;ey yapm&#x131;&#x15F;&#x131;m gibi anlataca&#x11F;&#x131;m. Kod felan da var.</p>
<h3 id="inhikayesi">&#x130;&#x15F;in hikayesi</h3>
<p>Her &#x15F;ey PoC (Proof of Concept) &#xE7;al&#x131;</p>]]></description><link>https://www.selcukermaya.com/tr/bir-problem-45-dk-bir-proje-bir-makale/</link><guid isPermaLink="false">5b0dbadf7058c26cc3300395</guid><dc:creator><![CDATA[Selçuk Ermaya]]></dc:creator><pubDate>Wed, 30 May 2018 11:00:16 GMT</pubDate><media:content url="https://www.selcukermaya.com/tr/content/images/2018/05/monosay-telegraf-telegram-bot-monopush.png" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: markdown--><img src="https://www.selcukermaya.com/tr/content/images/2018/05/monosay-telegraf-telegram-bot-monopush.png" alt="1 problem, 45 dk, 1 proje, 1 makale"><p>TL;DR: &#x15E;imdi 45 dakikal&#x131;k projeyi balland&#x131;ra balland&#x131;ra sanki &#xE7;ok da bi&#x15F;ey yapm&#x131;&#x15F;&#x131;m gibi anlataca&#x11F;&#x131;m. Kod felan da var.</p>
<h3 id="inhikayesi">&#x130;&#x15F;in hikayesi</h3>
<p>Her &#x15F;ey PoC (Proof of Concept) &#xE7;al&#x131;&#x15F;mas&#x131; yapt&#x131;&#x11F;&#x131;m&#x131;z bir firman&#x131;n bize a&#xE7;m&#x131;&#x15F; oldu&#x11F;u tek kullan&#x131;c&#x131;l&#x131; bir VPN (Virtual Private Network) hesab&#x131; ile ba&#x15F;lad&#x131;.</p>
<p>Tek VPN hesab&#x131;, proje ile ilgilenen 3-4 ki&#x15F;i ve 2FA (Two Factor Authentication).</p>
<p><img src="https://www.selcukermaya.com/tr/content/images/2020/09/emoji-for-karikatur.jpg" alt="1 problem, 45 dk, 1 proje, 1 makale" loading="lazy"></p>
<h3 id="nevarkiimdibunda">Ne var ki &#x15F;imdi bunda?</h3>
<p>&#x15E;imdi bir VPN hesab&#x131;n&#x131; birden fazla ki&#x15F;inin payla&#x15F;mas&#x131; asl&#x131;nda &#xE7;ok da problem de&#x11F;il (yok yok, asl&#x131;nda problem, bilenler bilir, s&#x131;k&#xE7;a ya&#x15F;anan bir &#x15F;eydir &#x1F916;) fakat 2FA k&#x131;sm&#x131; i&#xE7;in tan&#x131;mlanm&#x131;&#x15F; olan cevap telefonuna gelen mesaj s&#x131;k&#x131;nt&#x131;. G&#xFC;venli&#x11F;i art&#x131;rmak i&#xE7;in kullan&#x131;lan, SMS&apos;in gitmesi gereken o telefon s&#x131;k&#x131;nt&#x131;l&#x131; i&#x15F;te. &#xC7;&#xFC;nk&#xFC; o benim &#x15F;ahsi telefonum. &#x130;&#xE7;imizden birisi o VPN hesab&#x131;n&#x131; kullanmak istedi&#x11F;inde benim telefon numarama bir SMS geliyor ve o gelen do&#x11F;rulama kodunu VPN yaz&#x131;l&#x131;m&#x131;na girmemiz gerekiyor. Yoksa i&#xE7;eri giremiyoruz. Bir de girmemiz gereken &quot;s&#xFC;re&quot; k&#x131;s&#x131;t&#x131; var ki ona hi&#xE7; girmiyorum.</p>
<p>Neyse...</p>
<p>K&#x131;saca o telefona gelen SMS&apos;in h&#x131;zl&#x131; bir &#x15F;ekilde ilgili arkada&#x15F; grubuna iletilmesi gerekiyor ki girmek isteyen ki&#x15F;i o SMS kodunu h&#x131;zl&#x131;ca girebilsin.</p>
<h3 id="pekineyapacaz">Peki ne yapaca&#x11F;&#x131;z?</h3>
<p>Bu i&#x15F;i bir &#x15F;ekilde otomatize etmemiz gerekiyor. Akl&#x131;n yolu bir. Ama nas&#x131;l?</p>
<p>Birden fazla y&#xF6;ntem var tabii ki. Olas&#x131; birka&#xE7; y&#xF6;ntemi s&#x131;ralayal&#x131;m.</p>
<ol>
<li>Mobile Push Notification deste&#x11F;i bulunan bir yaz&#x131;l&#x131;m&#x131; (ki bunlar &#xFC;cretli) kullanal&#x131;m ve gelen mesaj&#x131; Push Notification ile g&#xF6;nderelim.</li>
<li>Halihaz&#x131;rda kulland&#x131;&#x11F;&#x131;m&#x131;z mesajla&#x15F;ma yaz&#x131;l&#x131;mlar&#x131;n&#x131;n bot servisini kullanarak mesaj&#x131; bunlar &#xFC;zerinden g&#xF6;nderelim.</li>
<li>O mobile push &#x15F;eysinin deste&#x11F;i olan bir mobil yaz&#x131;l&#x131;m biz geli&#x15F;tirelim (ki ak&#x131;l k&#xE2;r&#x131; de&#x11F;il &#x15F;u durumda) back-end, front-end All&#xE2;h ne verdiyse bizim elimizden &#xE7;&#x131;ks&#x131;n.</li>
</ol>
<p>&#x15E;imdi bu a&#x15F;amada sorgulama k&#x131;sm&#x131; devreye giriyor.</p>
<ul>
<li>&#x130;htiyac&#x131;m&#x131;z ne?</li>
<li>Yap&#x131;lm&#x131;&#x15F;&#x131; var m&#x131;? // Var sa kullan.</li>
<li>Ne kadar zaman harcamak istiyoruz? // Yok mu?</li>
<li>Peki ya mesajlar&#x131;n handle edilip ilgili servise iletilmesi k&#x131;sm&#x131;?</li>
<li>Biz mi geli&#x15F;tircez? Yap&#x131;lm&#x131;&#x15F;&#x131; var m&#x131;?</li>
</ul>
<p>Neyse sorular bol.</p>
<h3 id="sorucevap">Soru-Cevap</h3>
<p><strong>Soru:</strong> &#x130;htiyac&#x131;m&#x131;z?<br>
<strong>Cevap:</strong> Cep telefonuna gelen mesaj&#x131; belirli kriterlere g&#xF6;re yakalay&#x131;p h&#x131;zl&#x131; bir &#x15F;ekilde ba&#x15F;ka bir cep telefonuna g&#xF6;ndermek.</p>
<p><strong>Soru:</strong> Cep telefonuna gelen mesaj&#x131; ba&#x15F;ka servislere nas&#x131;l iletirim?<br>
<strong>Cevap:</strong> IFTTT ve ya benzer bir servis kullanarak ilgili mesaj&#x131; farkl&#x131; kanallara aktarabilirim.</p>
<p><strong>Soru:</strong> Aktarabilece&#x11F;im kanallar aras&#x131;nda kullanabilece&#x11F;im bir push servisi/IM var m&#x131;?<br>
<strong>Cevap:</strong> Var, &#xFC;cretli. Mesela IM (Instant Messaging: Whatsapp, Telegram, Facebook Messenger gibi) uygulamalar&#x131; da var ama yaln&#x131;zca kendine g&#xF6;nderebiliyorsun. Biz ba&#x15F;kas&#x131;na da g&#xF6;ndermek istiyoruz. (Bunun a&#x15F;mak i&#xE7;in belki Zapier tarz&#x131; &#x15F;eyler de kullan&#x131;labilir ama her seferinde konfig&#xFC;rasyon art&#x131;yor.)</p>
<p><strong>Soru:</strong> Daha kolay bir &#x15F;ey mi olmal&#x131; yani?<br>
<strong>Cevap:</strong> E yani!</p>
<p><strong>Soru:</strong> Biz geli&#x15F;tircez yani zorluyosun?<br>
<strong>Cevap:</strong> &#x1F608;</p>
<h3 id="hayaledelim">Hayal edelim</h3>
<p>Bir url olsa ve biz o url&apos;ye POST ile bir body g&#xF6;ndersek ve back-end de onu alsa ve bir IM &#xFC;zerinden url&apos;nin sahibine g&#xF6;nderse.</p>
<p>Karma&#x15F;&#x131;k m&#x131; oldu?</p>
<p>Hayali biraz daha a&#xE7;al&#x131;m.</p>
<p>Senin bir web adresin var (&#xF6;rne&#x11F;in; selcukermaya.com/mesaj) ve bu adres sadece sana &#xF6;zel. Sadece bunu bilenler, sana do&#x11F;rudan bu adres &#xFC;zerinden, basit bir http request ile do&#x11F;rudan mesaj g&#xF6;nderebiliyor. Yani t&#x131;pk&#x131; telefon numaras&#x131; gibi &quot;05XX XXX XX XX&quot; numaras&#x131;na bir mesaj geldi&#x11F;inde senin alabilmen gibi. Ve bu arada bu mesaj sana bir IM arac&#x131; &#xFC;zerinden geliyor olsun.</p>
<p>Hmmm. Olabilir gibi.</p>
<p>Bunu basitle&#x15F;tirmemiz laz&#x131;m ama. O kadar basit kullan&#x131;m&#x131; olmal&#x131; ki, hem back-end&apos;i kolay kodlans&#x131;n, hem de front-end&apos;i basit bir &#x15F;ekilde geli&#x15F;tirilebilip kullan&#x131;labilsin. Hatta front-end hi&#xE7; olmas&#x131;n. UI olarak ba&#x15F;ka bir &#x15F;ey kullanabilelim.</p>
<h3 id="naslyaparz">Nas&#x131;l yapar&#x131;z?</h3>
<p>Bu bahsetti&#x11F;imiz &#x15F;eyleri yapabilmek i&#xE7;in;</p>
<p>Bir back-end&apos;e, kullan&#x131;c&#x131;n&#x131;n bu url&apos;yi olu&#x15F;turabilmesi i&#xE7;in bir front-end&apos;e, mesajlar&#x131; alabilmek i&#xE7;in ise bir IM arac&#x131;na ihtiyac&#x131;m&#x131;z var.</p>
<p>Birka&#xE7; ekstra bilgi edinelim. Mesela IM ara&#xE7;lar&#x131; &#xFC;zerinden mesaj g&#xF6;nderip alabilmek, bir &#x15F;eyleri programlayabilmek i&#xE7;in o IM arac&#x131;n&#x131;n &quot;bot&quot; geli&#x15F;tirmeye olanak vermesi gerekiyor.</p>
<p>Peki development stack (Geli&#x15F;tirme Ara&#xE7;lar&#x131;)&apos;imiz ne olucak? H&#x131;zl&#x131; olmam&#x131;z gerekiyor ya. Performans &#x15F;u anda en son d&#xFC;&#x15F;&#xFC;nece&#x11F;imiz &#x15F;ey.</p>
<p><strong>Programlama dili i&#xE7;in</strong> <em>(asl&#x131;nda scripting dili de neyse)</em> : Javascript / Nodejs (Express Framework)<br>
<strong>IM i&#xE7;in</strong>: Telegram (Bilenler bilir &#xE7;ok severim)<br>
<strong>Bot Framework i&#xE7;in</strong>: Telegraf - <a href="https://telegraf.js.org/">https://telegraf.js.org/</a> (H&#x131;zl&#x131; bir &#x15F;ekilde Telegram botlar&#x131; olu&#x15F;turabiliyoruz)<br>
<strong>Analitik veri ve data i&#xE7;in</strong> : MonoSay - <a href="https://monosay.com">https://monosay.com</a></p>
<p>Peki kullan&#x131;c&#x131; aray&#xFC;z&#xFC;? Onunla alakal&#x131; bir &#x15F;ey demedim. &#x1F60A;</p>
<p>Bunun i&#xE7;in de yazm&#x131;&#x15F; oldu&#x11F;umuz &quot;bot&quot;&apos;u kullanaca&#x11F;&#x131;z. Yani bir kullan&#x131;c&#x131; kendisi i&#xE7;in bir url olu&#x15F;turmak istedi&#x11F;inde bot &#xFC;zerinden &quot;/new&quot; yazmas&#x131; yeterli olacak. B&#xF6;ylelikle geli&#x15F;tirme s&#xFC;remizi de h&#x131;zland&#x131;raca&#x11F;&#x131;z.</p>
<p>Ne kadar konu&#x15F;tum arkada&#x15F;. Hadi kodlamaya ge&#xE7;elim...</p>
<h3 id="kodlama">Kodlama</h3>
<p><img src="https://www.selcukermaya.com/tr/content/images/2020/09/emoji-for-karikatur.jpg" alt="1 problem, 45 dk, 1 proje, 1 makale" loading="lazy"></p>
<p>Botumuzu ve back-end&apos;imizi ayn&#x131; proje i&#xE7;erisinde kodlayaca&#x11F;&#x131;z. Siz bunu ay&#x131;rabilirsiniz. Fakat ben ay&#x131;rmadan ayn&#x131; repo &#xFC;zerinde kodlad&#x131;m ve sonras&#x131;nda bunlar&#x131; ayr&#x131; ayr&#x131; Dockerize ettim (Docker nedir? Dockerize etmek nedir gibi &#x15F;eyler i&#xE7;in <a href="https://www.gokhansengun.com/docker-nedir-nasil-calisir-nerede-kullanilir/" target="_blank">&#x15F;uraya alal&#x131;m</a>.) .</p>
<h4 id="npmadmlar">npm Ad&#x131;mlar&#x131;</h4>
<pre><code class="language-bash"># // node kullanaca&#x11F;&#x131;m&#x131;z&#x131; belirtmek ile ba&#x15F;layal&#x131;m. 
# // Sonraki ad&#x131;mlarda projenizin ismini cismini isteyecek sizden.
npm init

# // Telegraf k&#xFC;t&#xFC;phanesi
npm install telegraf

# // MonoSay k&#xFC;t&#xFC;phanesi
npm install monosay

# // Web Framework
npm install express
# // JSON body&apos;leri do&#x11F;rudan javascript obje olarak alabilmemiz i&#xE7;in var
npm install body-parser
</code></pre>
<h4 id="klasraac">Klas&#xF6;r a&#x11F;ac&#x131;</h4>
<p>Ben t&#xFC;m source kodlar, d&#xF6;k&#xFC;mantasyon vb &#x15F;eyleri ay&#x131;rmak i&#xE7;in proje a&#x11F;ac&#x131;m&#x131; olu&#x15F;turur olu&#x15F;turmaz &quot;src&quot; klas&#xF6;r&#xFC;n&#xFC; olu&#x15F;turarak ba&#x15F;l&#x131;yorum. Ayn&#x131; &#x15F;ekilde ilerleyece&#x11F;im.</p>
<p>A&#x15F;a&#x11F;&#x131;daki klas&#xF6;r a&#x11F;ac&#x131;n&#x131; ve ihtiyac&#x131;m&#x131;z olan iki javascript dosyas&#x131;n&#x131; ekliyorum. Di&#x11F;er dosyalar&#x131;n detaylar&#x131;na girmeyece&#x11F;im. Belki kaynak kodlar&#x131; bir repoda yay&#x131;nlarsam do&#x11F;rudan orada bulabilirsiniz.</p>
<pre><code class="language-bash">src/
&#x251C;&#x2500;&#x2500; bot.js
&#x2514;&#x2500;&#x2500; hook.js
bot.Dockerfile
hook.Dockerfile
.gitignore
.dockerignore
package.json
</code></pre>
<h4 id="botjs">bot.js</h4>
<p>&#x130;lk olarak botumuzu geli&#x15F;tirece&#x11F;iz dedik. Bu arada ben b&#xFC;t&#xFC;n ayarlar&#x131; &quot;Environment Variable&quot; olarak alaca&#x11F;&#x131;m. Haliyle biyere g&#xF6;m&#xFC;l&#xFC; bir &#x15F;ekilde ayar, token bilgisi, &#x15F;ifre vs. felan g&#xF6;remeyeceksiniz. Ayn&#x131; &#x15F;ekilde ilerlemeniz tavsiyemdir.</p>
<p>Ara bilgi;<br>
Telegraf&apos;&#x131;n kullan&#x131;m&#x131; i&#xE7;in: <a href="http://telegraf.js.org/">http://telegraf.js.org/</a><br>
MonoSay&apos;in kullan&#x131;m&#x131; i&#xE7;in (Telegraf ile birlikte): <a href="https://docs.monosay.com/docs/telegraf-nodejs-implementation.html">https://docs.monosay.com/docs/telegraf-nodejs-implementation.html</a></p>
<p>Telegram i&#xE7;in bot olu&#x15F;turma k&#x131;sm&#x131;n&#x131; uzun uzun anlatmak istemiyorum. K&#x131;sa ad&#x131;mlar &#x15F;u &#x15F;ekilde;</p>
<p>Telegram&apos;&#x131; kur<br>
Yeni mesaj -&gt; botfather&apos;&#x131; bul.<br>
/newbot yaz ve gereken ad&#x131;mlar&#x131; uygula.<br>
Sana bir token vericek. O token&apos;&#x131; burada kullanaca&#x11F;&#x131;z. Biyere not al.</p>
<p>T&#xFC;m kodlar&#x131; a&#xE7;&#x131;klaya a&#xE7;&#x131;klaya yaz&#x131;yorum.</p>
<p>Ad&#x131;m ad&#x131;m ilerleyelim;</p>
<pre><code class="language-js">// Telegraf&#x131; ve MonoSay&apos;i kullanaca&#x11F;&#x131;m&#x131;z&#x131; belirtelim.
const Telegraf = require(&quot;telegraf&quot;);
// Burada usetelegraf metodumuza bir token ge&#xE7;mi&#x15F;iz.
// Bu token&apos;&#x131; platform.monosay.com adresine girerek 
// botunuza &quot;channel&quot; olu&#x15F;turduktan sonra al&#x131;yorsunuz.
const monosay = require(&quot;monosay&quot;).usetelegraf(&quot;MONOSAY-TOKEN&quot;);

// Bot tan&#x131;m&#x131;m&#x131;z&#x131; yap&#x131;yoruz.
const bot = new Telegraf(&quot;TELEGRAM-TOKEN&quot;);
// Sonras&#x131;nda tan&#x131;m&#x131;n&#x131; yapt&#x131;&#x11F;&#x131;m&#x131;z bot i&#xE7;in monosay&apos;i initialize ediyoruz.
// Yani bizim botumuz bu diyoruz monosay&apos;e ki 
// o da analitik toplamaya ve bize datay&#x131; kulland&#x131;rmaya ba&#x15F;las&#x131;n.
monosay.init(bot);
</code></pre>
<p>Birisi bot&apos;u kullanmaya ba&#x15F;lad&#x131;&#x11F;&#x131;nda ona bilgilendirici bir mesaj verelim.</p>
<pre><code class="language-js">// &#xD6;ncelikle bir ka&#xE7; yerde kullanabilece&#x11F;imiz bir help mesaj&#x131; tan&#x131;mlayal&#x131;m.
// Birisi ilk defa konu&#x15F;maya ba&#x15F;larsa ya da /help yard&#x131;m isterse bu mesaj&#x131; g&#xF6;nderece&#x11F;iz.
const help = &quot;Start typing `/new hook-name` and it will give you a webhook to send a message to directly to your Telegram via {mono}push.&quot;;

// Bir ki&#x15F;i Telegram&apos;da botumuz ile konu&#x15F;maya ba&#x15F;larsa;
bot.start(ctx =&gt; {
    // Bu k&#x131;s&#x131;mda monosay&apos;e diyoruz ki botu kullanan arkada&#x15F; bu kullan&#x131;c&#x131;
    // Bunun profil datas&#x131;n&#x131; bu bilgiler ile g&#xFC;ncelle.
	monosay.user(
		{
			channelUserId: ctx.from.id,
			name: ctx.from.first_name,
			surname: ctx.from.last_name,
			userName: ctx.from.username
		},
		/*success callback*/ null,
		/*error callback*/ null
	);
    // Ho&#x15F;geldin karde&#x15F; diyoruz, ismiyle kar&#x15F;&#x131;l&#x131;yoruz. &#xC7;ok tatl&#x131;y&#x131;z.
    // Ne yapabilece&#x11F;ini de s&#xF6;ylemekten &#xE7;ekinmiyoruz.
	return ctx.reply(`Hi, and welcome ${ctx.from.first_name}! \n${help}`);
});

// Adam bizden /help &#x15F;eklinde yard&#x131;m isterse. 
// Yard&#x131;m metnimizi g&#xF6;nderiyoruz.
bot.help(ctx =&gt; ctx.reply(help));
</code></pre>
<p>D&#xFC;zenli gitmeyi ihmal etmeyelim. Kullanabilece&#x11F;imiz birka&#xE7; de&#x11F;i&#x15F;ken tan&#x131;m&#x131;m&#x131;z&#x131; yapal&#x131;m.</p>
<pre><code class="language-js">// Komut isimlerini tekrar tekrar kullanabilmek i&#xE7;in
const commands = {
	SUBSCRIBE: &quot;new&quot;
};
// monosay &#xFC;zerinden kullanaca&#x11F;&#x131;m&#x131;z data collection name&apos;imizi 
// yine tekrar tekrar kullanabilmek i&#xE7;in
// buraya daha sonra tekrar gelece&#x11F;iz.
const collections = {
	SUBSCRIPTION: &quot;subscription&quot;
};
</code></pre>
<p>&#x15E;imdi de kullanal&#x131;m.</p>
<pre><code class="language-js">// Telegram&apos;da bir bot&apos;a yaz&#x131;lan /komut ifadelerini yakalayabilmek i&#xE7;in
// bot.command&apos;&#x131; kullan&#x131;yoruz. &#x130;lk parametremiz komutun ismi oluyor.
// &#x130;kinci parametremizde ise bize o mesajla&#x15F;man&#x131;n context&apos;ini veriyor.
// Biz onu ctx i&#xE7;inde ald&#x131;k.
// commands.SUBSCRIBE&apos;&#x131;m&#x131;z&#x131;n &quot;new&quot;&apos;e e&#x15F;it oldu&#x11F;unu unutmayal&#x131;m.
bot.command(commands.SUBSCRIBE, ctx =&gt; {
    // Kullan&#x131;c&#x131;lar&#x131;n olu&#x15F;turulan webhook url&apos;lerine isim verebilmeleri i&#xE7;in
    // /new hook-name yazmalar&#x131; yeterli. &#xD6;rne&#x11F;in ben bir url olu&#x15F;turacaksam
    // /new Benim Kanal&#x131;m
    // yaz&#x131;p ge&#xE7;iyorum.
    // Kullan&#x131;c&#x131;n&#x131;n /new &apos;den sonra yazm&#x131;&#x15F; oldu&#x11F;u &#x15F;eyi al&#x131;yoruz.
	var name = ctx.message.text.substring(commands.SUBSCRIBE.length + 1);
    // E&#x11F;er isim girmemi&#x15F;se kibar bir dil ile &quot;ihtiyac&#x131;m&#x131;z var karde&#x15F;im&quot; diyoruz.
	if (!name.length) {
        // Dikkat ettiyseniz ctx.reply bizim kullan&#x131;c&#x131;ya mesaj g&#xF6;nderme metodumuz.
        // Bize mesaj yazan kullan&#x131;c&#x131;ya do&#x11F;rudan geri d&#xF6;n&#xFC;yoruz.
		ctx.reply(`You have to send subscription name too. Like \`/${commands.SUBSCRIBE} name\``);
		return;
	}
    // E&#x11F;er her &#x15F;ey yolundaysa url olu&#x15F;turma i&#x15F;lemimizi ba&#x15F;lat&#x131;yoruz. 
    // Asl&#x131;nda bir veri kayna&#x11F;&#x131;na kay&#x131;t at&#x131;yoruz &#x1F60A;
    // Sonradan bunu kullanaca&#x11F;&#x131;z.
    // Burada subscribe isimli metodumuzu &#xE7;a&#x11F;&#x131;rd&#x131;k. &#x130;lk parametre ctx&apos;imizi verdik
    // &#x130;kincisi ise url&apos;mizin ismi.
	subscribe(ctx, name);
    // Son olarak da i&#x15F;leme ba&#x15F;lad&#x131;&#x11F;&#x131;m&#x131;z&#x131; kullan&#x131;c&#x131;ya s&#xF6;yl&#xFC;yoruz.
	return ctx.reply(&quot;Subscribing...&quot;);
});

// Bu da bizim subscribe metodumuz. Asl&#x131;nda b&#xFC;t&#xFC;n kay&#x131;t i&#x15F;lemi sadece buras&#x131;.
// Hadi inceleyelim.

function subscribe(ctx, name) {
    // &#x130;lk olarak monosay&apos;e kaydedece&#x11F;imiz datay&#x131; olu&#x15F;turuyoruz.
    // userid (string) : Kullan&#x131;c&#x131;n&#x131;n Telegram User Id&apos;si
    // name (string) : url&apos;ye verdi&#x11F;i isim - bu ismi sonradan mesaj g&#xF6;nderen olarak kullanaca&#x11F;&#x131;z.
    // date (date) : olu&#x15F;turdu&#x11F;u tarihi kaydediyoruz.
    // username (string) : son olarak kullan&#x131;c&#x131;n&#x131;n ad&#x131;&apos;n&#x131; kaydediyoruz. 
	var data = {
		userid: `${ctx.from.id}`,
		name: name,
		date: new Date(),
		username: ctx.from.first_name
	};
    // Bu k&#x131;s&#x131;m ile alakal&#x131; detayl&#x131; bir a&#xE7;&#x131;klama yapmayaca&#x11F;&#x131;m.
    // docs.monosay.com adresinde kullan&#x131;m &#xF6;rneklerini bulabilirsiniz.
    // Do&#x11F;rudan ilgili adres: https://docs.monosay.com/docs/telegraf-nodejs-data.html
    // collections.SUBSCRIPTION : &quot;subscription&quot;
    // monosay&apos;de olu&#x15F;turmu&#x15F; oldu&#x11F;umuz data collection ad&#x131;n&#x131; yaz&#x131;yoruz buraya
    // yukar&#x131;da istemi&#x15F; oldu&#x11F;umuz datalar&#x131; da field olarak eklemeyi unutmuyoruz. Hepsinin tiplerini yanlar&#x131;na yazd&#x131;m.
    // monosay schema validation yapt&#x131;&#x11F;&#x131; i&#xE7;in tipler &#xF6;nemli.
	monosay.data(collections.SUBSCRIPTION).save(
		data,
		result =&gt; {
			// &#x130;&#x15F;lem ba&#x15F;ar&#x131;l&#x131; ise monosay bize result.success&apos;i true olarak d&#xF6;n&#xFC;yor.
            // E&#x11F;er hatal&#x131; bir durum s&#xF6;z konusu ise bizi error k&#x131;sm&#x131;na d&#xFC;&#x15F;&#xFC;r&#xFC;yor ki onu a&#x15F;a&#x11F;&#x131;da yazd&#x131;k.
            if (result.success) {
                // Kullan&#x131;c&#x131;ya g&#xF6;nderece&#x11F;imiz mesaj&#x131; olu&#x15F;turuyoruz.
				var message = `Your webhook is ready for sending message. Use;`;
                // Burada process.env.HOOK_URL k&#x131;sm&#x131;na siz webhook projenizi 
                // (hook.js - biraz sonra yazaca&#x11F;&#x131;z)
                // hangi adres &#xFC;zerinden yay&#x131;nlad&#x131;ysan&#x131;z onu yaz&#x131;yorsunuz.
                // Biz olu&#x15F;turaca&#x11F;&#x131;m&#x131;z url&apos;ye monosay&apos;in bize olu&#x15F;turdu&#x11F;umuz data i&#xE7;in 
                // g&#xF6;ndermi&#x15F; oldu&#x11F;u unique id &apos;yi sonuna ekliyoruz.
                // Yani &#x15F;&#xF6;yle bir &#x15F;ey olmu&#x15F; oluyor;
                // https://webhook.monopush.io/telegram/6b0db11a3d3b522151b241ca
                // Tahmin edece&#x11F;iniz &#xFC;zere bizim yay&#x131;nlad&#x131;&#x11F;&#x131;m&#x131;z adres 
                // webhook.monopush.io uzant&#x131;s&#x131; &#xFC;zerinde.
				message += `\n${process.env.HOOK_URL}/${result.data.id}`;
				message += `\n\nBody (application/json);\n\n`;
				message += &quot;```\n&quot;;
				message += JSON.stringify(
					{
						message: &quot;Hi there!&quot;
					},
					null,
					2
				);
				message += &quot;\n```&quot;;
                // Kullan&#x131;c&#x131;ya kullan&#x131;m &#xF6;rne&#x11F;i ile birlikte mesaj&#x131; g&#xF6;nderiyoruz.
                // replyWithMarkdown dememizin sebebi Telegram markdown mesaj g&#xF6;ndermeyi destekliyor.
                // Haliyle markdown formating&apos;i alg&#x131;lamas&#x131; i&#xE7;in bunu kullan&#x131;yoruz.
				ctx.replyWithMarkdown(message);
			} else {
                // Ne olur ne olmaz hata olursa consola yazd&#x131;rs&#x131;n.
				console.error(result);
			}
		},
		err =&gt; {
			console.error(err);
            // Ne olur ne olmaz hata olursa consola yazd&#x131;rs&#x131;n.
            // Adama da desin ki karde&#x15F; bir s&#x131;k&#x131;nt&#x131; var.
			ctx.reply(&quot;Something is wrong with your request.&quot;);
		}
	);
}
</code></pre>
<p>Ve mutlu son botumuz kullan&#x131;c&#x131;dan mesajlar&#x131; dinlemeye ba&#x15F;las&#x131;n. Bunun i&#xE7;in;</p>
<pre><code class="language-js">bot.startPolling();
</code></pre>
<p>Son sat&#x131;ra bunu yazd&#x131;ktan sonra botumuz haz&#x131;r hale gelmi&#x15F; oluyor. Test edebilmek i&#xE7;in a&#x15F;a&#x11F;&#x131;daki ana klas&#xF6;rdeyken a&#x15F;a&#x11F;&#x131;daki sat&#x131;r&#x131; &#xE7;al&#x131;&#x15F;t&#x131;rman&#x131;z yeterli;</p>
<pre><code class="language-js">node src/bot.js
</code></pre>
<p>A&#x15F;a&#x11F;&#x131;daki &#x15F;ekilde bir mesaj alacaks&#x131;n&#x131;z ve botunuz &#xE7;al&#x131;&#x15F;&#x131;yor olacak.</p>
<pre><code>MonoSay Initialized for Telegraf.
MonoSay API Url is https://api.monosay.com/v1/
</code></pre>
<p>&#x15E;imdi webhook taraf&#x131;na (ki&#x15F;iye &#xF6;zel url k&#x131;sm&#x131;m&#x131;za) ge&#xE7;elim.</p>
<h4 id="hookjs">hook.js</h4>
<p>En kolay k&#x131;sma geldik.</p>
<pre><code class="language-js">// Buralar biliyorsunuz art&#x131;k.
const Telegraf = require(&quot;telegraf&quot;);
const monosay = require(&quot;monosay&quot;).usetelegraf(process.env.MONOSAY_TOKEN);

// Burada ekstra kullanaca&#x11F;&#x131;m&#x131;z web framework tan&#x131;m&#x131;n&#x131; yap&#x131;yoruz.
const express = require(&quot;express&quot;);
const app = express();
// Gelen json body&apos;i parse edip bize object olarak verecek.
const bodyParser = require(&quot;body-parser&quot;);
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());

// Buralar&#x131; da biliyorsunuz &#x1F60A;
const bot = new Telegraf(process.env.BOT_TOKEN);
monosay.init(bot);

const collections = {
	SUBSCRIPTION: &quot;subscription&quot;
};
</code></pre>
<p>&#x15E;imdi s&#x131;ra geldi son k&#x131;sma. Url&apos;yi dinleyece&#x11F;imiz b&#xF6;l&#xFC;me.</p>
<pre><code class="language-js">// E&#x11F;er birisi a&#x15F;a&#x11F;&#x131;daki tan&#x131;ma uyan bir adrese
// POST iste&#x11F;i yaparsa
// Bu metod da onu i&#x15F;liyoruz.
// Burada kullanm&#x131;&#x15F; oldu&#x11F;umuz :id k&#x131;sm&#x131; parametre oldu&#x11F;unu belirtmemiz i&#xE7;in
// Haliyle biz /telegram/blabla yazd&#x131;&#x11F;&#x131;m&#x131;z yeri
// req.params.id olarak alabiliyoruz.
// Bu &#x15F;ablona uymayan her &#x15F;eye 404 d&#xF6;necek.
app.post(&quot;/telegram/:id&quot;, (req, res) =&gt; {
	var id = req.params.id;
    // Ger&#xE7;ekten id g&#xF6;ndermi&#x15F; mi? Ne olur ne olmaz kontrol edelim.
	if (!id) {
        // E&#x11F;er g&#xF6;ndermediyse s&#xF6;yleyelim.
		return res.send(&quot;id is not found.&quot;);
	}

    // Evet en &#xF6;nemli k&#x131;s&#x131;m.
    // Ne demi&#x15F;tik. Adam&#x131;n url&apos;sinin sonuna
    // monosay&apos;den alm&#x131;&#x15F; oldu&#x11F;umuz data &apos;n&#x131;n id sini yazm&#x131;&#x15F;t&#x131;k asl&#x131;nda.
    // &#x15E;imdi bu ald&#x131;&#x11F;&#x131;m&#x131;z id&apos;yi monosay de ki data collection&apos;&#x131;m&#x131;zda var m&#x131;
    // diye kontrol edelim. Yoksa hata g&#xF6;nderelim.
    // Varsa da i&#x15F;lemlerimizi yapal&#x131;m.
    // monosay.data(&quot;collection&quot;).get(&quot;id&quot;) k&#x131;sm&#x131; bize
    // bir id ye g&#xF6;re tekil data &#xE7;ekmemizi sa&#x11F;l&#x131;yor.
    // e&#x11F;er data varsa result.success &apos;imiz true oluyor
    // ve data result.data i&#xE7;inde bize geliyor.
	monosay.data(collections.SUBSCRIPTION).get(
		id,
		result =&gt; {
			if (result.success) {
                // &#x15E;imdi burada bilmemiz gereken bir k&#x131;s&#x131;m daha var ki
                // Biz adamdan datay&#x131;
                // application/json i&#xE7;erik tipinde
                // { &quot;message&quot; : &quot;Mesaj&#x131;n kendisi&quot; }
                // &#x15E;eklinde bekliyoruz.
                // Ve g&#xF6;ndermek istedi&#x11F;i mesaj&#x131; da req.body.message dan al&#x131;yoruz.
                // E&#x11F;er mesaj varsa kullan&#x131;c&#x131;n&#x131;n id sine do&#x11F;rudan o mesaj&#x131; g&#xF6;nderiyoruz.
                // Fark&#x131;ndaysan&#x131;z bunu;
                // bot.telegram.sendMessage ile yap&#x131;yoruz.
                // &#x130;lk parametre mesaj&#x131;n g&#xF6;nderilece&#x11F;i kullan&#x131;c&#x131;n&#x131;n id si
                // &#x130;kinci parametre ise mesaj&#x131;n kendisi.
                // E&#x11F;er bir mesaj g&#xF6;nderilmezse kullan&#x131;c&#x131;y&#x131; yine bilgilendiriyoruz.
				if (!req.body || !req.body.message) {
					bot.telegram.sendMessage(result.data.userid, &quot;You must send your body or message.&quot;);
				} else {
                    // Mesaj gelirse de ilgili mesaj&#x131;
                    // Dikkat ederseniz url&apos;sine verdi&#x11F;i isimi de ba&#x15F;&#x131;na ekleyerek
                    // g&#xF6;nderiyoruz &#x1F44F;
                    // Bu kadar
					bot.telegram.sendMessage(result.data.userid, `${result.data.name}:\n${req.body.message}`);
				}
                // Success mesaj&#x131;m&#x131;z (200)
				res.send();
			} else {
				res.send(result);
			}
		},
		err =&gt; res.send(err)
	);
});

// Son olarak uygulamam&#x131;z http request lerini 3000 portundan dinlemeye ba&#x15F;l&#x131;yor
// Portu kafan&#x131;za g&#xF6;re de&#x11F;i&#x15F;tirebilirsiniz.
app.listen(3000, () =&gt; {
	console.log(`App is running on port ${port}!`);
});
</code></pre>
<p>&#xC7;al&#x131;&#x15F;t&#x131;rmak i&#xE7;in;</p>
<pre><code class="language-bash">node src/hook.js
</code></pre>
<p>Yeterli. A&#x15F;a&#x131;&#x11F;dakini g&#xF6;rd&#xFC;yseniz olay tamam demektir.</p>
<pre><code>App is running on port 3000!
</code></pre>
<p>Yorum sat&#x131;rlar&#x131; olmasa toplasan 100-150 sat&#x131;r kod yok iki projede.</p>
<p>&#x15E;imdi gelelim Docker&apos;ize k&#x131;sm&#x131;na. Buradaki kodlar&#x131; tek tek a&#xE7;&#x131;lamayaca&#x11F;&#x131;m. &#x130;&#x15F;i uzman&#x131;na b&#x131;rakt&#x131;m zaten. Sadece komutlar&#x131; verip ge&#xE7;ece&#x11F;im.</p>
<p>&#x15E;imdi buradan sonraki k&#x131;s&#x131;mlar dockerize etme ve dockerize edilmi&#x15F; &#x15F;eyi local docker&apos;da &#xE7;al&#x131;&#x15F;t&#x131;rmak &#xFC;zerine olan i&#x15F;ler. E&#x11F;er ilgi ve alakan&#x131;z yoksa kullanmak istemiyorsan&#x131;z (ki &#x15F;iddetle tavsiye edilir) atlayabilirsiniz. Zaten proje bitti &#x1F60A;</p>
<h4 id="hookdockerfile">hook.Dockerfile</h4>
<pre><code class="language-dockerfile">FROM node:alpine
WORKDIR /src
EXPOSE 3978/tcp
ENTRYPOINT [&quot;node&quot;, &quot;src/hook.js&quot;]
COPY . /src
RUN npm install
</code></pre>
<p>Nas&#x131;l build ederiz?</p>
<pre><code class="language-bash">docker build -t monopush/telegram-webhook -f hook.Dockerfile .
</code></pre>
<p>Nas&#x131;l run ederiz?</p>
<pre><code class="language-bash">docker run --name telegram-webhook -p 3000:3000 monopush/telegram-webhook
</code></pre>
<h4 id="botdockerfile">bot.Dockerfile</h4>
<pre><code class="language-dockerfile">FROM node:alpine
WORKDIR /src
EXPOSE 3978/tcp
ENTRYPOINT [&quot;node&quot;, &quot;src/hook.js&quot;]
COPY . /src
RUN npm install
</code></pre>
<p>Nas&#x131;l build ederiz?</p>
<pre><code class="language-bash">docker build -t monopush/telegram-bot -f bot.Dockerfile .
</code></pre>
<p>Nas&#x131;l run ederiz?</p>
<pre><code class="language-bash">docker run --name telegram-bot monopush/telegram-bot 
</code></pre>
<p>Docker i&#x15F;lemleri de bu kadar. Huh. Ne yazd&#x131;k arkada&#x15F;.</p>
<h4 id="ifttt">IFTTT</h4>
<p><img src="https://www.selcukermaya.com/tr/content/images/2018/05/Make-an-Applet-IFTTT-2018-05-30-02-28-31.png" alt="1 problem, 45 dk, 1 proje, 1 makale" loading="lazy"></p>
<p>Eveeet. Buraya kadar her &#x15F;ey g&#xFC;ll&#xFC;k g&#xFC;listanl&#x131;k &#x1F60E; Ama as&#x131;l e&#x11F;lence &#x15F;imdi. Hemen testimizi yapal&#x131;m. IFTTT&apos;yi telefonuma kurdum. Sonras&#x131;nda sitesine girdim. Yeni bir Applet olu&#x15F;turdum.</p>
<p>If +this k&#x131;sm&#x131;na Android SMS&apos;i se&#xE7;tim, +that k&#x131;sm&#x131;na ise Webhook&apos;u se&#xE7;tim. Olu&#x15F;turdu&#x11F;umuz Url&apos;yi yazd&#x131;m, Http Method olarak POST se&#xE7;tim, Body olarak ise {&quot;message&quot;:&quot;{{Text}}&quot;} yazd&#x131;m. Burada {{Text}} yazan yeri otomatik olarak gelen SMS&apos;in i&#xE7;eri&#x11F;i ile de&#x11F;i&#x15F;tiriyor IFTTT.</p>
<p>Bir mesaj g&#xF6;ndererek test i&#x15F;lemimi yapt&#x131;m ve gelen mesaj do&#x11F;rudan Telegram Bot&apos;u &#xFC;zerinden bana geldi.</p>
<p>G&#xF6;rev tamam!</p>
<p>Bu arada illa da IFTTT yi kullanmak zorunda de&#x11F;ilsiniz. Basit bir http &#xE7;a&#x11F;r&#x131;s&#x131; ile a&#x15F;a&#x11F;&#x131;daki body&apos;i ekleyerek kendinize yazd&#x131;&#x11F;&#x131;n&#x131;z bot &#xFC;zerinden (ve ya arkada&#x15F;&#x131;n&#x131;zdan ald&#x131;&#x11F;&#x131;n&#x131;z url &#xFC;zerinden) mesaj g&#xF6;nderebilirsiniz.</p>
<p>&#xD6;rnek sorgu;</p>
<pre><code class="language-curl">curl -X POST \
  https://webhook.monopush.io/telegram/5b0de3d054fcef0001345edef \
  -H &apos;Content-Type: application/json&apos; \
  -d &apos;{
	&quot;message&quot; : &quot;Hey Dostum! Ba&#x15F;ard&#x131;k anl&#x131;yo musun?!&quot;
}&apos;
</code></pre>
<p><img src="https://www.selcukermaya.com/tr/content/images/2018/05/telegram-monopush-2018-05-30-02-41-56.gif" alt="1 problem, 45 dk, 1 proje, 1 makale" loading="lazy"></p>
<h4 id="pekibunaslrnednd">Peki bu nas&#x131;l &#xFC;r&#xFC;ne d&#xF6;nd&#xFC;?</h4>
<p>Bu bizim i&#xE7;in problemlerin yaln&#x131;zca biriydi. Fakat biz bunu genel kullan&#x131;ma uygun yapt&#x131;k.</p>
<p>&#xDC;r&#xFC;n&#xFC;n ad&#x131; {mono}push. &#x15E;u anda yapt&#x131;&#x11F;&#x131; i&#x15F;lem sadece bu olsa da ilerde kapsam&#x131; az&#x131;c&#x131;k daha geni&#x15F;leyecek. &#xD6;zellikleri artacak. Ayaklar&#x131; yere daha sa&#x11F;lam basan bir &#x15F;ey olacak.</p>
<p>&#x15E;u anda istedi&#x11F;iniz herhangi bir s&#xFC;rece t&#x131;pk&#x131; Slack channel&apos;lar&#x131;n&#x131;za g&#xF6;nderdi&#x11F;iniz mesajlar&#x131;n&#x131;z gibi Telegram kanallar&#x131;na, Botlar&#x131;na mesajlar g&#xF6;ndererek (ya da kendinize) bu i&#x15F;lemi ger&#xE7;ekle&#x15F;tirebilirsiniz.</p>
<p>Do&#x11F;rudan test i&#x15F;lemi yapmak istiyorsan&#x131;z e&#x11F;er;</p>
<p><img src="https://www.selcukermaya.com/tr/content/images/2018/05/telegram-monopushbot-2018-05-30-02-31-50.png" alt="1 problem, 45 dk, 1 proje, 1 makale" loading="lazy"></p>
<p><a href="http://telegram.me/monopushbot" target="_blank">http://telegram.me/monopushbot</a> adresinden kullanmaya ba&#x15F;layabilirsiniz. Bu servis herkesin kullan&#x131;m&#x131;na a&#xE7;&#x131;k halde olacak. Sizlerin de kullanabilece&#x11F;i bir &#xFC;r&#xFC;n yani &#x1F60A;</p>
<p><code>/new Urlnizin ad&#x131;</code> komutu ile url&apos;nizi alabilir, sonras&#x131;nda s&#xFC;re&#xE7;lerinize dahil edebilirsiniz.</p>
<p>&#x15E;u anda {mono}push sadece Telegram&apos;a destek veriyor olsa da yak&#x131;nda Facebook Messenger, Skype ve benzeri bot platformlar&#x131;na destek veren IM&apos;ler &#xFC;zerinden de kullanabiliyor halde olacaks&#x131;n&#x131;z.</p>
<p><img src="https://www.selcukermaya.com/tr/content/images/2020/09/emoji-for-karikatur.jpg" alt="1 problem, 45 dk, 1 proje, 1 makale" loading="lazy"></p>
<p>&#x15E;imdilik, Selametle...</p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[Kendi Ayağına Sıkma!]]></title><description><![CDATA[Bu yazıda vereceğim örnek(ler) bir "Yazılım Geliştiricisi"nin perspektifinden olacak. Fakat siz bunu istediğiniz meslek grubuna çok rahat uyarlayabilirsiniz.]]></description><link>https://www.selcukermaya.com/tr/kendi-ayagina-sikma/</link><guid isPermaLink="false">59bc4b31aa01b87eb83ab18a</guid><category><![CDATA[ayağına sıkmak]]></category><category><![CDATA[ayağına sıkma]]></category><category><![CDATA[kendi ayağına sıkmak]]></category><category><![CDATA[kendi ayağına sıkma]]></category><category><![CDATA[blog]]></category><category><![CDATA[kişisel]]></category><dc:creator><![CDATA[Selçuk Ermaya]]></dc:creator><pubDate>Wed, 04 Oct 2017 15:29:15 GMT</pubDate><media:content url="https://www.selcukermaya.com/tr/content/images/2017/10/code-it-build-it-do-it.jpg" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: markdown--><img src="https://www.selcukermaya.com/tr/content/images/2017/10/code-it-build-it-do-it.jpg" alt="Kendi Aya&#x11F;&#x131;na S&#x131;kma!"><p>Anlatmak istedi&#x11F;im o kadar &#xE7;ok &#x15F;ey var ki, neresinden ba&#x15F;lamam gerekti&#x11F;ini bilmiyorum.</p>
<p>TL;DR: <strong>Ba&#x15F;l&#x131;&#x11F;a bak!</strong></p>
<h2 id="neleroldu">Neler oldu?</h2>
<p>Kendi aya&#x11F;&#x131;na s&#x131;kmak...<br>
Belki &quot;Bindi&#x11F;in dal&#x131; kesmek.&quot; ...</p>
<blockquote>
<p>Bu yaz&#x131;da verece&#x11F;im &#xF6;rnek(ler) bir &quot;Yaz&#x131;l&#x131;m Geli&#x15F;tiricisi&quot;nin perspektifinden olacak. Fakat siz bunu istedi&#x11F;iniz meslek grubuna &#xE7;ok rahat uyarlayabilirsiniz.</p>
</blockquote>
<p>13 y&#x131;ll&#x131;k &#xE7;al&#x131;&#x15F;ma hayat&#x131;m&#x131;n b&#xFC;y&#xFC;k bir b&#xF6;l&#xFC;m&#xFC; &quot;Yaz&#x131;l&#x131;m Evi&quot; olarak nitelendirilen;</p>
<ul>
<li>Ayn&#x131; anda birden fazla i&#x15F; ile u&#x11F;ra&#x15F;t&#x131;&#x11F;&#x131;n</li>
<li>Yeri geldi&#x11F;inde ayn&#x131; g&#xFC;n i&#xE7;erisinde birden &#xE7;ok m&#xFC;&#x15F;teriyi ziyaret etmenin zorunlu oldu&#x11F;u</li>
<li>Gecenin g&#xFC;nd&#xFC;zden &#xE7;ok da farkl&#x131; olmad&#x131;&#x11F;&#x131;</li>
<li>Zaman zaman &quot;asl&#x131;nda ben fena da kazanm&#x131;yorum yhaaa&quot; diye d&#xFC;&#x15F;&#xFC;nd&#xFC;&#x11F;&#xFC;m (kuyruklu yalan)</li>
<li>&#xC7;o&#x11F;unda en fazla 2 bilemedin 3 yaz&#x131;l&#x131;mc&#x131;n&#x131;n &#xE7;al&#x131;&#x15F;t&#x131;&#x11F;&#x131;</li>
<li>Eleman sirk&#xFC;lasyonunun &#xE7;ok oldu&#x11F;u</li>
<li>Sanki <strong>politikac&#x131; gibi</strong> yalan s&#xF6;ylemenin neredeyse! farz oldu&#x11F;u</li>
</ul>
<p>yerlerde &#xE7;al&#x131;&#x15F;maktan ge&#xE7;ti.</p>
<p><em>Evet ben de <strong>bir kere</strong> yalan s&#xF6;yledim</em>. S&#x131;rf patron(lar&#x131;m) &quot;&#x15F;&#xF6;yle-&#x15F;&#xF6;yle de&quot; dedi diye, kendime prensip edindi&#x11F;imi <strong>d&#xFC;&#x15F;&#xFC;nd&#xFC;&#x11F;&#xFC;m</strong> &quot;i&#x15F; d&#xFC;r&#xFC;stl&#xFC;&#x11F;&#xFC;n&#xFC;&quot; bir kenara b&#x131;rakt&#x131;m ve s&#xF6;yledim. Yalan&#x131;m ortaya &#xE7;&#x131;kt&#x131;ktan sonra, &quot;Dilimi e&#x15F;&#x15F;ek ar&#x131;s&#x131; soksayd&#x131; da, dilsiz kalsayd&#x131;m da ...&quot; gibi devam eden bir&#xE7;ok beddua ge&#xE7;ti i&#xE7;imden. &#x130;yi ki de yalan&#x131;m &#xE7;&#x131;km&#x131;&#x15F; ortaya. Her hat&#x131;rlad&#x131;&#x11F;&#x131;mda i&#xE7;imi s&#x131;zlat&#x131;r, nasihat/ders niteli&#x11F;inde orada bekler.</p>
<p><strong>Kendi aya&#x11F;&#x131;ma s&#x131;kt&#x131;m!</strong></p>
<p>G&#xFC;nah &#xE7;&#x131;kartmam bitti&#x11F;ine g&#xF6;re art&#x131;k devam edebiliriz.</p>
<h2 id="farkndalk">Fark&#x131;ndal&#x131;k</h2>
<p>Her girdi&#x11F;im <strong>yaz&#x131;l&#x131;m evinde</strong> yapt&#x131;&#x11F;&#x131;m&#x131;z i&#x15F; <strong>hemen hemen ayn&#x131;yd&#x131;</strong>.</p>
<p>Her m&#xFC;&#x15F;teriye ayn&#x131; &#x15F;eyleri tekrar tekrar yap&#x131;p duruyorduk. &#x130;htiya&#xE7;lar ayn&#x131;, sorular ayn&#x131;, cevaplar ayn&#x131;. Benzerlik oran&#x131;n&#x131;n %80 oldu&#x11F;unu s&#xF6;ylesem yalan konu&#x15F;mu&#x15F; olmam herhalde.</p>
<p>Genelde ilk m&#xFC;&#x15F;teriye yap&#x131;lan i&#x15F;ten sonra, bir ba&#x15F;ka m&#xFC;&#x15F;teriye de ayn&#x131; i&#x15F;i yapmaya kalkt&#x131;&#x11F;&#x131;m&#x131;zda kendime sordu&#x11F;um sorular da hep ayn&#x131; olmaya ba&#x15F;lad&#x131;;</p>
<ul>
<li>&#x15E;uras&#x131;n&#x131; parametrik mi yapsam?</li>
<li>&#x15E;uras&#x131; da m&#x131; dinamik olsa?</li>
<li>&#x15E;u ayar&#x131; konfig dosyas&#x131;ndan okutsam daha m&#x131; iyi olur?</li>
<li>Bu burada sabit olmasa daha m&#x131; iyi olur?</li>
</ul>
<p>Ve as&#x131;l soru!</p>
<p><strong>- Bunu bir &#xFC;r&#xFC;n haline getiremez miyiz?</strong></p>
<p><img src="https://www.selcukermaya.com/tr/content/images/2020/09/emoji-for-karikatur.jpg" alt="Kendi Aya&#x11F;&#x131;na S&#x131;kma!" loading="lazy"></p>
<h2 id="sorgulamak">Sorgulamak</h2>
<p>Bu soru sonras&#x131; genelde patron/larla olan muhabbet ayn&#x131;...</p>
<ul>
<li><strong>Emek&#xE7;i:</strong> Abi <em>(genelde ailevi terimler kullan&#x131;l&#x131;r)</em> bak her m&#xFC;&#x15F;teri i&#xE7;in ayn&#x131; &#x15F;eyleri yap&#x131;yoruz. Bunu bir &#xFC;r&#xFC;n haline getirelim daha az u&#x11F;ra&#x15F;&#x131;p paket haline getirip &#xF6;yle satal&#x131;m. Deste&#x11F;i de ay&#x131;ral&#x131;m...</li>
<li><strong>Patron:</strong> Olur yhaaa! &#xC7;ok g&#xFC;zel fikir. Hakl&#x131;s&#x131;n valla. Asl&#x131;nda yapmam&#x131;z gereken &#x15F;ey bu!</li>
<li><strong>Emek&#xE7;i:</strong> Kesinlikle a&#x11F;&#x11F;&#x11F;bi!</li>
<li><strong>Patron:</strong> Nas&#x131;l yapcaz peki?</li>
<li><strong>Emek&#xE7;i:</strong> &#x15E;uras&#x131;n&#x131; &#x15F;&#xF6;yle yapcaz, buras&#x131; &#x15F;&#xF6;yle olcak, oras&#x131; da &#x15F;u &#x15F;ekilde, biraz da &#x15F;uraya &#x15F;unu yap&#x131;caz, hooop paket &#xFC;r&#xFC;n ortaya &#xE7;&#x131;kt&#x131;. Markalamay&#x131; da yap&#x131;p &#x15F;uralar&#x131;n&#x131; da &#x15F;&#xF6;yle yaparsaaaak oldu bu i&#x15F;.</li>
<li><strong>Patron:</strong> Hmmm. Peki ne kadar s&#xFC;rer?</li>
<li><strong>Emek&#xE7;i:</strong> Abi <strong>&#x15F;u kadar s&#xFC;rede</strong> biter.</li>
</ul>
<p><strong>&#x15E;u kadar s&#xFC;re</strong> genelde bir projenin bitece&#x11F;i vaktin ortalama iki en fazla &#xFC;&#xE7; kat&#x131;d&#x131;r.</p>
<p>Enteresand&#x131;r ki patron(lar&#x131;n) verdi&#x11F;i cevaplar / tepkiler hep ayn&#x131;...</p>
<ul>
<li><strong>Patron:</strong> Hadi yaaa... O kadar s&#xFC;rer mi?</li>
<li><strong>Emek&#xE7;i:</strong> S&#xFC;rer a&#x11F;bi...</li>
<li><strong>Patron:</strong> Peki diyelim ki bunu yapmaya ba&#x15F;lad&#x131;k, di&#x11F;er i&#x15F;ler, onlar, bunlar, &#x15F;unlar ne olacak?</li>
</ul>
<p>Devam&#x131;n&#x131; anlad&#x131;n&#x131;z siz &#x1F609; ...</p>
<h2 id="ertelemek">Ertelemek</h2>
<p>Bu fikir ho&#x15F;una gider elbet &#xE7;o&#x11F;unun. Kimisinin r&#xFC;yas&#x131;na bile girer belki &#x1F60C;</p>
<p>&#xC7;&#xFC;nk&#xFC; g&#xFC;zel para vard&#x131;r sonunda. <strong>Bir yap&#x131;p</strong> h&#x131;zl&#x131;ca <strong>on kazanmak</strong>, satmak, daha &#xE7;ok satmak, daha daha &#xE7;ok...</p>
<p>Ama sonra fark&#x131;na var&#x131;rlar. G&#xFC;n&#xFC; kurtarmalar&#x131; gerekmektedir. &#xC7;&#xFC;nk&#xFC; ald&#x131;klar&#x131; i&#x15F; ve ondan bir &#xF6;nceki ald&#x131;klar&#x131; i&#x15F; ve ondan daha da &#xF6;nceki ald&#x131;klar&#x131; i&#x15F;lerin hepsi ayn&#x131; zamanda bitmeli, kesinlikle aksamamal&#x131;d&#x131;r. B&#xFC;t&#xFC;n i&#x15F;lerin &#xF6;ncelikleri de ayn&#x131;d&#x131;r bu arada. Hemen bitmelidir onlar. Bundan dolay&#x131; da bu ve ya bunun gibi fikirler bekleyebilir.</p>
<p><img src="https://www.selcukermaya.com/tr/content/images/2020/09/emoji-for-karikatur.jpg" alt="Kendi Aya&#x11F;&#x131;na S&#x131;kma!" loading="lazy"></p>
<p><strong>Bir kur&#x15F;un daha!</strong></p>
<h2 id="eneatmak">&#x130;&#xE7;ene Atmak</h2>
<p>Buraya kadar gelebildiyseniz (ki ula&#x15F;mak &#xE7;ok da kolay de&#x11F;ildir) hala i&#xE7;inizde sizi canl&#x131; tutan bir&#x15F;eyler vard&#x131;r muhakkak.</p>
<p>Mesela ortaya &#xFC;r&#xFC;n &#xE7;&#x131;karma heyecan&#x131;d&#x131;r... Olabilir.<br>
Ya da patronunuz(lar&#x131;n&#x131;z) &#xE7;ok cana yak&#x131;nd&#x131;r, d&#xFC;r&#xFC;stt&#xFC;r felan... Olabilir.</p>
<p>Ama bir&#x15F;eyler yolunda de&#x11F;ildir art&#x131;k. Fark&#x131;ndal&#x131;k evresini ge&#xE7;mi&#x15F;, erteleme evresindesiniz.</p>
<p>Projelere odaklan&#x131;rs&#x131;n&#x131;z. Yeni bir motivasyonunuz vard&#x131;r. Onlar&#x131; bitirip &#xFC;r&#xFC;ne odaklanmak istersiniz. Fakat ertesi g&#xFC;n sizden bir ba&#x15F;ka m&#xFC;&#x15F;terinin, bir ba&#x15F;ka ama di&#x11F;erleri ile hemen hemen ayn&#x131; olan bir i&#x15F; i&#xE7;in demo &#xE7;al&#x131;&#x15F;mas&#x131; istenir.</p>
<p>Yapars&#x131;n&#x131;z. &#x130;&#x15F; al&#x131;n&#x131;r. Ve bir yenisi daha... Ve bir yenisi daha... Bitmez o i&#x15F;ler &#x1F60C;</p>
<p>Muhtemelen hala yanl&#x131;&#x15F; yerde yanl&#x131;&#x15F; &#x15F;eyler yap&#x131;yor oldu&#x11F;unuzun fark&#x131;na da varmazs&#x131;n&#x131;z.</p>
<p>Hataya d&#xFC;&#x15F;t&#xFC;&#x11F;&#xFC;m bir ba&#x15F;ka nokta daha, i&#xE7;ine atmak, kabullenmek. <strong>Aya&#x11F;&#x131;ma s&#x131;kt&#x131;m.</strong></p>
<h2 id="dng">D&#xF6;ng&#xFC;</h2>
<p>Yaz&#x131;l&#x131;mc&#x131; arkada&#x15F;lar&#x131;m <strong>sonsuz</strong> d&#xF6;ng&#xFC;lere a&#x15F;inad&#x131;rlar...</p>
<p>S&#xFC;rekli ayn&#x131; &#x15F;eyler, ayn&#x131; m&#xFC;&#x15F;teriler, ayn&#x131; projeler...</p>
<p>Ortada hep bir proje vard&#x131;r ama <strong>&#xFC;r&#xFC;n</strong> hi&#xE7; olmaz...</p>
<p>Buraya kadar ya&#x15F;am&#x131;&#x15F; oldu&#x11F;umuz her &#x15F;ey bir m&#xFC;ddet sonra sonsuz bir d&#xF6;ng&#xFC;ye girer. Bu d&#xF6;ng&#xFC;den &#xE7;&#x131;kabilece&#x11F;iniz anlarda i&#xE7;inde kald&#x131;&#x11F;&#x131;n&#x131;z her ad&#x131;mda tekrar <strong>aya&#x11F;&#x131;n&#x131;za s&#x131;kars&#x131;n&#x131;z</strong>.</p>
<h2 id="neyapmal">Ne yapmal&#x131;?</h2>
<p>Size, &quot;&#x15F;unu yap&#x131;n&quot;, &quot;bunu yap&#x131;n&quot;, &quot;&#x15F;&#xF6;yle yaparsan&#x131;z &#x15F;&#xF6;yle olur&quot;, &quot;b&#xF6;yle yaparsan&#x131;z da &#x15F;&#xF6;yle olur&quot; demekten daha ziyade, fark&#x131;ndal&#x131;klar&#x131;mdan birini payla&#x15F;maya &#xE7;al&#x131;&#x15F;t&#x131;m.</p>
<p>Ne yapt&#x131;m demek daha do&#x11F;ru...</p>
<p><img src="https://www.selcukermaya.com/tr/content/images/2020/09/emoji-for-karikatur.jpg" alt="Kendi Aya&#x11F;&#x131;na S&#x131;kma!" loading="lazy"></p>
<h2 id="neyaptm">Ne yapt&#x131;m?</h2>
<ul>
<li>&#x130;lk yapt&#x131;&#x11F;&#x131;m &#x15F;ey d&#xF6;ng&#xFC;den &#xE7;&#x131;kmak oldu.</li>
<li>Ufkumu geni&#x15F;letebilece&#x11F;im ortamlarda bulunmaya, kaynaklar izlemeye/okumaya ba&#x15F;lad&#x131;m.</li>
<li>Etraf&#x131;mda bulunan ve beni demotive eden bir&#xE7;ok &#x15F;eyden uzakla&#x15F;t&#x131;m. Bunun yerine fayda sa&#x11F;layabilece&#x11F;im ve faydalanabilece&#x11F;im pozitif insanlarla ileti&#x15F;im kurmaya ba&#x15F;lad&#x131;m.</li>
<li>Kendimi geli&#x15F;tirebilece&#x11F;im ve daha faydal&#x131; olabilece&#x11F;im fikirlere odakland&#x131;m.</li>
<li>&#xDC;retmeye ba&#x15F;lad&#x131;m. Yaln&#x131;zca kendim i&#xE7;in de&#x11F;il!</li>
<li>Daha &#xE7;ok payla&#x15F;t&#x131;m. &#xD6;&#x11F;rendi&#x11F;im, faydal&#x131; oldu&#x11F;unu d&#xFC;&#x15F;&#xFC;nd&#xFC;&#x11F;&#xFC;m her &#x15F;eyi payla&#x15F;maya &#xE7;al&#x131;&#x15F;t&#x131;m. &#xC7;&#x131;kar g&#xF6;zetmeksizin.</li>
<li>Hemen hemen her projeyi/fikri bir &#xFC;r&#xFC;n gibi tasarlamaya ba&#x15F;lad&#x131;m. Bu sayede bug&#xFC;n geli&#x15F;tirmi&#x15F; oldu&#x11F;umuz bir&#xE7;ok projeyi/fikri h&#x131;zl&#x131; bir &#x15F;ekilde &#xFC;r&#xFC;n haline getirip satabiliyoruz.</li>
</ul>
<p>Art&#x131;k kendi &#xFC;r&#xFC;nlerimizi &#xFC;retip pazarlad&#x131;&#x11F;&#x131;m&#x131;z, Amerika&apos;da bir firmam&#x131;z var. Bu yaz&#x131;y&#x131; da size oradan yaz&#x131;yorum.</p>
<h2 id="retim">&#xDC;retim</h2>
<p>Biliyorum &#xE7;ok zor gibi geliyor... &#xDC;retmek, bir yerinden ba&#x15F;lamak ve en &#xF6;nemlisi de tamamlamak.</p>
<p>Motivasyon, &#xF6;zveri, emek, insan... Parametre &#xE7;ok...</p>
<p>&#xDC;retimin tad&#x131;n&#x131; bir kez al&#x131;rsan&#x131;z, t&#xFC;ketmekten &#xE7;ok &#xE7;ok daha de&#x11F;erli bir&#x15F;ey oldu&#x11F;unun fark&#x131;na var&#x131;rs&#x131;n&#x131;z.</p>
<p>&#xDC;retin...</p>
<p><img src="https://www.selcukermaya.com/tr/content/images/2020/09/emoji-for-karikatur.jpg" alt="Kendi Aya&#x11F;&#x131;na S&#x131;kma!" loading="lazy"></p>
<h2 id="faydapaylamzveridemiken">Fayda, Payla&#x15F;&#x131;m, &#xD6;zveri demi&#x15F;ken</h2>
<p>&#x130;lerleyen zamanlarda sizlerle u&#xE7;tan uca bir &#xFC;r&#xFC;n geli&#x15F;tirmenin nas&#x131;l oldu&#x11F;unu <strong>ger&#xE7;ekten</strong> anlatan, i&#xE7;inde kaynak kodunun oldu&#x11F;u, live-codingli, sorulu-cevapl&#x131; bol payla&#x15F;&#x131;ml&#x131; bir makale sersine ba&#x15F;layaca&#x11F;&#x131;m.</p>
<p>&#xDC;mit ediyorum ki bir&#xE7;o&#x11F;unuz bundan ciddi &#x15F;ekilde faylan&#x131;p kendi &#xFC;r&#xFC;nlerini &#xE7;&#x131;kartacak, kendi i&#x15F;lerini kuracaklar.</p>
<h4 id="gncelleme020320192000">G&#xFC;ncelleme - 02.03.2019 20:00</h4>
<p>Yay&#x131;n serisi ba&#x15F;lad&#x131;. Hatta bug&#xFC;n 21:00&apos;da 14&apos;&#xFC;nc&#xFC; yay&#x131;n&#x131; yap&#x131;yoruz.<br>
Kanala <a href="https://youtube.com/selcukermaya">buradan</a>, oynatma listesine <a href="https://www.youtube.com/playlist?list=PLRzPYaWqHTfEaXqbmH8RI1zhRfGIyX9-E">buradan</a> ula&#x15F;abilirsin.</p>
<p>00&apos;dan ba&#x15F;layarak izlemeyi unutma &#x1F610;</p>
<h2 id="son">Son</h2>
<p><img src="https://www.selcukermaya.com/tr/content/images/2020/09/emoji-for-karikatur.jpg" alt="Kendi Aya&#x11F;&#x131;na S&#x131;kma!" loading="lazy"></p>
<p>&#x15E;imdilik benden bu kadar. Kal&#x131;n sa&#x11F;l&#x131;cakla.</p>
<p>Selametle...</p>
<!--kg-card-end: markdown--><figure class="kg-card kg-embed-card"><iframe width="480" height="270" src="https://www.youtube.com/embed/videoseries?list=PLRzPYaWqHTfEaXqbmH8RI1zhRfGIyX9-E" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></figure>]]></content:encoded></item><item><title><![CDATA[6 $ 'a yedekli Task & Project Management Tool'a Sahip Olmak]]></title><description><![CDATA[<!--kg-card-begin: markdown--><p>Normalde do&#x11F;rudan konuya girmeye seven biriyim fakat bu yaz&#x131;da i&#x15F;leri biraz de&#x11F;i&#x15F;tirelim.</p>
<p><strong>Neden Task &amp; Project Y&#xF6;netim Arac&#x131;na &#x130;htiyac&#x131;m var?</strong></p>
<ul>
<li>E&#x11F;er bir &#x15F;irketiniz varsa / olacaksa</li>
<li>Bireysel olarak projelerinizi / i&#x15F;</li></ul>]]></description><link>https://www.selcukermaya.com/tr/6-dolara-a-limitsiz-yedekli-task-ve-project-management-tool/</link><guid isPermaLink="false">596d119dc7877d27cc4c5632</guid><dc:creator><![CDATA[Selçuk Ermaya]]></dc:creator><pubDate>Sun, 16 Jul 2017 19:25:24 GMT</pubDate><media:content url="https://www.selcukermaya.com/tr/content/images/2017/07/6-dolara-a-limitsiz-yedekli-task-ve-project-management-tool-header-1.jpg" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: markdown--><img src="https://www.selcukermaya.com/tr/content/images/2017/07/6-dolara-a-limitsiz-yedekli-task-ve-project-management-tool-header-1.jpg" alt="6 $ &apos;a yedekli Task &amp; Project Management Tool&apos;a Sahip Olmak"><p>Normalde do&#x11F;rudan konuya girmeye seven biriyim fakat bu yaz&#x131;da i&#x15F;leri biraz de&#x11F;i&#x15F;tirelim.</p>
<p><strong>Neden Task &amp; Project Y&#xF6;netim Arac&#x131;na &#x130;htiyac&#x131;m var?</strong></p>
<ul>
<li>E&#x11F;er bir &#x15F;irketiniz varsa / olacaksa</li>
<li>Bireysel olarak projelerinizi / i&#x15F;lerinizi y&#xF6;netece&#x11F;iniz bir ortama ihtiyac&#x131;n&#x131;z varsa</li>
<li>Yapt&#x131;&#x11F;&#x131;n&#x131;z i&#x15F;ler ile alakal&#x131; i&#x15F;in tipi, &#xF6;nceli&#x11F;i, harcad&#x131;&#x11F;&#x131;n&#x131;z zaman gibi bilgileri kay&#x131;t alt&#x131;nda tutmak istiyorsan&#x131;z</li>
<li>M&#xFC;&#x15F;terileriniz veya Tak&#x131;m Arkada&#x15F;lar&#x131;n&#x131;z da i&#x15F;in i&#xE7;indeyse</li>
<li>Raporlar vb &#x15F;eylere ihtiyac&#x131;n&#x131;z varsa</li>
<li>B&#xFC;t&#xFC;n bunlarla birlikte bir de g&#xF6;r&#xFC;n&#xFC;rl&#xFC;k olu&#x15F;turmak istiyorsan&#x131;z</li>
</ul>
<p>... muhtemelen <strong>&quot;Neden?&quot;</strong> sorusuna yan&#x131;t&#x131;n&#x131;z&#x131; alm&#x131;&#x15F;s&#x131;n&#x131;zd&#x131;r.</p>
<p><strong>Benim neden ihtiyac&#x131;m var?</strong></p>
<p>Yakla&#x15F;&#x131;k 2 ay &#xF6;nce &#x15F;irket kurulumu ile u&#x11F;ra&#x15F;&#x131;rken bir yandan m&#xFC;&#x15F;terilere destek, project ve task management i&#x15F;ini yapabilece&#x11F;im bir yer aray&#x131;&#x15F;&#x131; i&#xE7;erisindeydim. &#x130;lk &#xF6;nce &quot;bana mail gelsin gelen mail direk g&#xF6;revlere d&#xFC;&#x15F;s&#xFC;n&quot; gibi fantazilerim vard&#x131;. &#x130;&#x15F;in a&#xE7;&#x131;k&#xE7;as&#x131; fantaziden ziyade otomatize etmek istiyordum bir&#xE7;ok &#x15F;eyi ve bunu yapan ba&#x15F;ar&#x131;l&#x131; web uygulamalar&#x131; da vard&#x131; (<a href="https://www.helpscout.net/">Help Scout</a>, <a href="https://www.groovehq.com/">Groovehq</a>, <a href="https://freshdesk.com/">Freshdesk</a> gibi).</p>
<p>Hepsi de kendi alanlar&#x131;nda ba&#x15F;ar&#x131;l&#x131; olan ara&#xE7;lar olmalar&#x131;n&#x131;n yan&#x131;nda hepsinin ortak bir &#xF6;zelli&#x11F;i vard&#x131; ki &quot;<strong>b&#xFC;t&#xE7;e</strong>&quot;. Bana g&#xF6;re pahal&#x131;lard&#x131; (Bana g&#xF6;re diyorum &#xE7;&#xFC;nk&#xFC; yapt&#x131;klar&#x131; i&#x15F;e g&#xF6;re hepsi de fiyatlar&#x131;n&#x131; hakeden yaz&#x131;l&#x131;mlar.).</p>
<p><strong>Ben ne yapt&#x131;m?</strong></p>
<p>&#xD6;ncelikle ihtiyac&#x131;m olan ara&#xE7;lar i&#xE7;in birka&#xE7; ara&#x15F;t&#x131;rma yapt&#x131;m. Daha &#xF6;nceden denemi&#x15F; oldu&#x11F;um Cloud (bulut) ortamlar&#x131;n&#x131; gezindim (AWS, Google Cloud, Azure, Vultr, DigitalOcean).</p>
<p>Bunun yan&#x131;nda kullanabilece&#x11F;im (tercihen open source) task &amp; project management toollar&#x131;n&#x131; ara&#x15F;t&#x131;rmaya ba&#x15F;lad&#x131;m.</p>
<p>Sonras&#x131;nda karar&#x131;m&#x131; verdim.</p>
<ul>
<li>Cloud ortam i&#xE7;in Digital Ocean.</li>
<li>Task &amp; Project Management i&#xE7;in Redmine.</li>
</ul>
<p>&#x15E;imdi sebeplerine ge&#xE7;elim.</p>
<p><strong>Digital Ocean</strong> - <a href="https://m.do.co/c/bc3af869fe5c">buradan buyrun</a>.</p>
<p>Digital Ocean size yaz&#x131;l&#x131;mc&#x131; dostu gayet ho&#x15F; bir ortam sunuyor. Droplet olarak adland&#x131;rd&#x131;&#x11F;&#x131;n&#x131;z sanal makineler ile kendi ortam&#x131;n&#x131;z&#x131; saniyeler (&#x15F;aka yapm&#x131;yorum) i&#xE7;erisinde kurup keyfinize bakabilirsiniz.</p>
<p>API, Load Balancing&apos;i, SSD Diskleri tad&#x131;na doyum olmayacak bir ortam.</p>
<p><mark><strong>Tercih sebebi:</strong> One Click Install Redmine, SSD Disk ve Backup.</mark></p>
<p><strong>Redmine</strong> - <a href="https://redmine.org">buradan buyrun</a></p>
<p>Redmine i&#xE7;in uzun uzun a&#xE7;&#x131;klamalar yapmayaca&#x11F;&#x131;m. Fakat birka&#xE7; &#x15F;ey de s&#xF6;ylememek olmaz.</p>
<p>Aray&#xFC;z olarak bir &#xE7;o&#x11F;unuzun ho&#x15F;una gitmeyece&#x11F;ini d&#xFC;&#x15F;&#xFC;nd&#xFC;&#x11F;&#xFC;m, fakat d&#xFC;nyas&#x131;na girince &quot;Vay bea!&quot; diyece&#x11F;iniz &#x15F;irin bir Open Source Task &amp; Project Management toolu kendisi.</p>
<p>Eklenti ve Tema konusunda ger&#xE7;ekten &#xE7;ok g&#xFC;zel eklentiler mevcut. &quot;Acaba &#x15F;unu yapm&#x131;&#x15F;lar m&#x131;d&#x131;r?&quot; sorular&#x131;n&#x131;n yan&#x131;t&#x131; genelde evet oluyor.</p>
<p>Mesela email adresinize gelen bir &#x15F;eyi otomatik g&#xF6;reve &#xE7;evirilmesini istediniz eklentisi var.</p>
<p><mark><strong>Tercih Sebebi:</strong> Eklentileri ve Tema se&#xE7;enekleri</mark></p>
<p><strong>Nas&#x131;l yapt&#x131;m?</strong></p>
<ol>
<li>
<p>&#xD6;ncelikle Digital Ocean&apos;dan bir <a href="https://m.do.co/c/bc3af869fe5c">kullan&#x131;c&#x131; a&#xE7;&#x131;yoruz</a>.</p>
</li>
<li>
<p>Onaylam i&#x15F;leminin ard&#x131;ndan kullan&#x131;c&#x131; giri&#x15F;i yapt&#x131;ktan sonra Digital Ocean size 5$&apos;l&#x131;k bir kredi vericek. (Yanl&#x131;&#x15F; hat&#x131;rl&#x131;yorsam ba&#x11F;&#x131;&#x15F;lay&#x131;n.)</p>
</li>
<li>
<p>Profil resminizin sol taraf&#x131;nda bulunan <strong>Create</strong> butonuna t&#x131;klay&#x131;n. Ard&#x131;ndan <strong>Droplet</strong>&apos;i se&#xE7;in. <img src="https://www.selcukermaya.com/tr/content/images/2017/07/6-dolara-a-limitsiz-yedekli-task-ve-project-management-tool-create-droplet.png" alt="6 $ &apos;a yedekli Task &amp; Project Management Tool&apos;a Sahip Olmak" loading="lazy"></p>
</li>
<li>
<p><strong>Choose an image</strong> b&#xF6;l&#xFC;m&#xFC;nden &#xF6;nce <strong><mark>One-click Apps</mark></strong>&apos;a t&#x131;klay&#x131;n. Ad&#x131;ndan Redmine on 14.04 &apos;e t&#x131;klay&#x131;n. (Benim kulland&#x131;&#x11F;&#x131;m zamanda Ubuntu 14.04 s&#xFC;r&#xFC;m&#xFC; vard&#x131;. G&#xFC;ncelleme yapt&#x131;larsa &#x15F;ans&#x131;n&#x131;za ^^) <img src="https://www.selcukermaya.com/tr/content/images/2017/07/6-dolara-a-limitsiz-yedekli-task-ve-project-management-tool-choose-an-image.png" alt="6 $ &apos;a yedekli Task &amp; Project Management Tool&apos;a Sahip Olmak" loading="lazy"></p>
</li>
<li>
<p><strong>Choose a size</strong> b&#xF6;l&#xFC;m&#xFC;nden size uygun olan disk ve ayl&#x131;k transfer miktar&#x131;n&#x131;z&#x131; g&#xF6;z &#xF6;n&#xFC;nde bulundurarak se&#xE7;iminizi yap&#x131;n. Benim i&#xE7;in en uygunu ve masrafs&#x131;z&#x131; <mark>20 GB disk 512 RAM ve 1 TB (<strong>5$</strong>)</mark>  transfer olan&#x131;yd&#x131;. M&#xFC;thi&#x15F; yetiyor. &#x15E;irketinizin boyutuna ya da yapaca&#x11F;&#x131;n&#x131;z i&#x15F;in boyutuna g&#xF6;re daha fazla da se&#xE7;ebilirsiniz. <img src="https://www.selcukermaya.com/tr/content/images/2017/07/6-dolara-a-limitsiz-yedekli-task-ve-project-management-tool-choose-size.png" alt="6 $ &apos;a yedekli Task &amp; Project Management Tool&apos;a Sahip Olmak" loading="lazy"></p>
</li>
<li>
<p><strong>Choose a datacenter</strong> b&#xF6;l&#xFC;m&#xFC;nden size / m&#xFC;&#x15F;terilerinize en yak&#x131;n datacenter / region (b&#xF6;lge) se&#xE7;iminde bulunun. Ben genelde sorunsuz ve merkezi bir yer oldu&#x11F;u i&#xE7;in <mark>Amsterdam</mark>&apos;&#x131; tercih ediyorum. (T&#xFC;rkiye &apos;yi baz alarak d&#xFC;&#x15F;&#xFC;n&#xFC;rseniz Amsterdam ve ya Frankfurt en uygunu.) <img src="https://www.selcukermaya.com/tr/content/images/2017/07/6-dolara-a-limitsiz-yedekli-task-ve-project-management-tool-choose-a-datacenter.png" alt="6 $ &apos;a yedekli Task &amp; Project Management Tool&apos;a Sahip Olmak" loading="lazy"></p>
</li>
<li>
<p><strong>Select additional options</strong> b&#xF6;l&#xFC;m&#xFC;nden sizin i&#x15F;inize yarayacak olanlar&#x131; se&#xE7;in. Ba&#x15F;l&#x131;ktan da anla&#x15F;&#x131;laca&#x11F;&#x131; gibi biz Backup (Yedekleme) istedi&#x11F;imiz i&#xE7;in sadece <mark><strong>Backups</strong></mark>&apos;&#x131; se&#xE7;tik. <img src="https://www.selcukermaya.com/tr/content/images/2017/07/6-dolara-a-limitsiz-yedekli-task-ve-project-management-tool-select-additional.png" alt="6 $ &apos;a yedekli Task &amp; Project Management Tool&apos;a Sahip Olmak" loading="lazy"></p>
</li>
<li>
<p><strong>Add your SSH Keys</strong> ad&#x131;m&#x131; sizin SSH Key&apos;inizi kullanarak sunucunuza uzaktan ba&#x11F;lanman&#x131;z i&#xE7;in var. Bu ba&#x15F;ka bir makale konusu fakat sizin i&#xE7;in bir kaynak link payla&#x15F;ay&#x131;m.<br>
<a href="https://www.digitalocean.com/community/tutorials/how-to-use-ssh-keys-with-digitalocean-droplets">Kaynak - Digital Ocean</a> (&#x130;ngilizce) <img src="https://www.selcukermaya.com/tr/content/images/2017/07/6-dolara-a-limitsiz-yedekli-task-ve-project-management-tool-add-your-ssh-key.png" alt="6 $ &apos;a yedekli Task &amp; Project Management Tool&apos;a Sahip Olmak" loading="lazy"><br>
SSH Kullanmak istemiyorsan&#x131;z zaten kurulum sonras&#x131; kullan&#x131;c&#x131; ad&#x131; ve parolay&#x131; <mark><strong>Digital Ocean</strong></mark> sizinle mail yoluyla payla&#x15F;m&#x131;&#x15F; olacak. &#x130;lk giri&#x15F;te de parolan&#x131;z&#x131; de&#x11F;i&#x15F;tirmenizi isteyecek.</p>
</li>
<li>
<p><strong>Finalize and Create</strong> ad&#x131;m&#x131; art&#x131;k son ad&#x131;m&#x131;n&#x131;z. Burada <strong>ka&#xE7; makineye</strong> bu kurulumu yapaca&#x11F;&#x131;n&#x131;z (Load balancing yapacak m&#x131;s&#x131;n&#x131;z? -Ba&#x15F;ka makale konusu-) ve <strong>droplet</strong> (VM - Virtual Machine - Sanal Makine) ad&#x131;n&#x131;z. <img src="https://www.selcukermaya.com/tr/content/images/2017/07/6-dolara-a-limitsiz-yedekli-task-ve-project-management-tool-finalize-and-create.png" alt="6 $ &apos;a yedekli Task &amp; Project Management Tool&apos;a Sahip Olmak" loading="lazy"></p>
</li>
</ol>
<p><strong>Sonunda!</strong></p>
<p>Buraya kadar t&#xFC;m i&#x15F;lemleri sorunsuz yapt&#x131;ysan&#x131;z makineniz haz&#x131;rlanmaya ba&#x15F;lam&#x131;&#x15F;t&#x131;r. Ortalama 1-2 dk i&#xE7;erisinde;</p>
<ul>
<li>Ubuntu 14.04</li>
<li>Redmine (Gerekli b&#xFC;t&#xFC;n paketleri ile birlikte)</li>
</ul>
<p>kurulumu tamamlanacak ve mail yoluyla da bilgilendirileceksiniz ^^</p>
<p><img src="https://www.selcukermaya.com/tr/content/images/2017/07/6-dolara-a-limitsiz-yedekli-task-ve-project-management-tool-progressing.png" alt="6 $ &apos;a yedekli Task &amp; Project Management Tool&apos;a Sahip Olmak" loading="lazy"></p>
<p>Ve kurulum tamam!</p>
<p><img src="https://www.selcukermaya.com/tr/content/images/2017/07/6-dolara-a-limitsiz-yedekli-task-ve-project-management-tool-completed.png" alt="6 $ &apos;a yedekli Task &amp; Project Management Tool&apos;a Sahip Olmak" loading="lazy"></p>
<p>Dikkat ettiyseniz IP Addresses b&#xF6;l&#xFC;m&#xFC;nde sizin d&#x131;&#x15F;ar&#x131;dan eri&#x15F;ebilece&#x11F;iniz ayn&#x131; zamanda makineye ba&#x11F;lan&#x131;rken de kullanabilece&#x11F;iniz bir IP adresiniz var. Hemen &#xFC;zerine t&#x131;klay&#x131;p kopyalay&#x131;n ve browser&apos;&#x131;n&#x131;za yap&#x131;&#x15F;t&#x131;r&#x131;n bakal&#x131;m ne g&#xF6;receksiniz :-)</p>
<p><img src="https://www.selcukermaya.com/tr/content/images/2017/07/6-dolara-a-limitsiz-yedekli-task-ve-project-management-tool-redmine.png" alt="6 $ &apos;a yedekli Task &amp; Project Management Tool&apos;a Sahip Olmak" loading="lazy"></p>
<p>Ve giri&#x15F; ekran&#x131;m&#x131;z.</p>
<p><img src="https://www.selcukermaya.com/tr/content/images/2017/07/6-dolara-a-limitsiz-yedekli-task-ve-project-management-tool-redmine-giris.png" alt="6 $ &apos;a yedekli Task &amp; Project Management Tool&apos;a Sahip Olmak" loading="lazy"></p>
<p><strong>Peki kullan&#x131;c&#x131; ad&#x131; ve parola ne?</strong></p>
<p>admin - admin de&#x11F;il tabii ki :-)</p>
<p>&#x130;lk olarak ssh ile sunucumuza ba&#x11F;lan&#x131;yoruz.</p>
<p>Veee kullan&#x131;c&#x131; ad&#x131; ve parola kar&#x15F;&#x131;m&#x131;zda!</p>
<p><img src="https://www.selcukermaya.com/tr/content/images/2017/07/6-dolara-a-limitsiz-yedekli-task-ve-project-management-tool-user-pass.png" alt="6 $ &apos;a yedekli Task &amp; Project Management Tool&apos;a Sahip Olmak" loading="lazy"></p>
<p>Ve i&#xE7;erdeyiz!</p>
<p><img src="https://www.selcukermaya.com/tr/content/images/2017/07/6-dolara-a-limitsiz-yedekli-task-ve-project-management-tool-administration.png" alt="6 $ &apos;a yedekli Task &amp; Project Management Tool&apos;a Sahip Olmak" loading="lazy"></p>
<p>Kar&#x15F;&#x131;n&#x131;za gelen ekrandan da farketmi&#x15F;sinizdir Redmine &#xFC;zerinde &#xE7;oklu dil deste&#x11F;i var. Art&#x131;k kar&#x131;&#x15F;t&#x131;r&#x131;p g&#xFC;zel &#x15F;eyler &#xE7;&#x131;karmak sizlerin elinde.</p>
<p>Tak&#x131;ld&#x131;&#x11F;&#x131;n&#x131;z yer olursa yorumlarda belirtirseniz yard&#x131;mc&#x131; olmaya &#xE7;al&#x131;&#x15F;ay&#x131;m.</p>
<p>Bu arada &quot;Hani backuplar!&quot; sorusu gelir kesin. Backuplar&#x131;n&#x131;z &#x15F;urada haftal&#x131;k yedekleniyor.</p>
<p><img src="https://www.selcukermaya.com/tr/content/images/2017/07/6-dolara-a-limitsiz-yedekli-task-ve-project-management-tool-backups.png" alt="6 $ &apos;a yedekli Task &amp; Project Management Tool&apos;a Sahip Olmak" loading="lazy"></p>
<p>Hadi kal&#x131;n sa&#x11F;l&#x131;cakla!<br>
Selametle...</p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[[Kısa Bilgi] 13: nginx Permisssion denied hatası]]></title><description><![CDATA[<!--kg-card-begin: markdown--><p>Kullanm&#x131;&#x15F; oldu&#x11F;unuz Linux da&#x11F;&#x131;t&#x131;mlar&#x131;nda nginx kurulumu sonras&#x131; a&#x15F;a&#x11F;&#x131;daki hatay&#x131; alman&#x131;z muhtemel (&#xF6;zellikle Cloud sunucularda).</p>
<pre><code class="language-text">connect() to 127.0.0.1:8080 failed (13: Permission denied) while connecting to upstream,</code></pre>]]></description><link>https://www.selcukermaya.com/tr/linux-dagitim-nginx-permisssion-denied-hatasi/</link><guid isPermaLink="false">596d119dc7877d27cc4c5630</guid><dc:creator><![CDATA[Selçuk Ermaya]]></dc:creator><pubDate>Tue, 04 Jul 2017 08:09:15 GMT</pubDate><media:content url="https://www.selcukermaya.com/tr/content/images/2017/07/nginx.png" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: markdown--><img src="https://www.selcukermaya.com/tr/content/images/2017/07/nginx.png" alt="[K&#x131;sa Bilgi] 13: nginx Permisssion denied hatas&#x131;"><p>Kullanm&#x131;&#x15F; oldu&#x11F;unuz Linux da&#x11F;&#x131;t&#x131;mlar&#x131;nda nginx kurulumu sonras&#x131; a&#x15F;a&#x11F;&#x131;daki hatay&#x131; alman&#x131;z muhtemel (&#xF6;zellikle Cloud sunucularda).</p>
<pre><code class="language-text">connect() to 127.0.0.1:8080 failed (13: Permission denied) while connecting to upstream, client: IP_ADDRESS
</code></pre>
<p>Hatan&#x131;n &#xE7;&#xF6;z&#xFC;m&#xFC; i&#xE7;in a&#x15F;a&#x11F;&#x131;daki komutu su (sudo) ile &#xE7;al&#x131;&#x15F;t&#x131;rman&#x131;z yeterli.</p>
<pre><code class="language-sh">setsebool -P httpd_can_network_connect 1
</code></pre>
<p>Bu kadar &#x1F609;</p>
<p>Selametle...</p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[[Kısa Bilgi] Bash on Ubuntu on Windows Dil Ayarı]]></title><description><![CDATA[<!--kg-card-begin: markdown--><p>E&#x11F;er Locale se&#xE7;ene&#x11F;i Turkey olan bir Windows 10&apos;a Bash on Ubuntu yu kuruyorsan&#x131;z Ubuntu&apos;nun T&#xFC;rk&#xE7;e y&#xFC;klendi&#x11F;ine &#x15F;ahitlik etmi&#x15F;sinizdir.</p>
<p>Ben sistemlerde kar&#x15F;&#x131;la&#x15F;&#x131;lan</p>]]></description><link>https://www.selcukermaya.com/tr/kisa-bilgi-bash-on-ubuntu-on-windows-dil-ayari/</link><guid isPermaLink="false">596d119dc7877d27cc4c5631</guid><dc:creator><![CDATA[Selçuk Ermaya]]></dc:creator><pubDate>Fri, 14 Apr 2017 04:36:46 GMT</pubDate><media:content url="https://www.selcukermaya.com/tr/content/images/2017/04/bashonubuntuonwindows.png" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: markdown--><img src="https://www.selcukermaya.com/tr/content/images/2017/04/bashonubuntuonwindows.png" alt="[K&#x131;sa Bilgi] Bash on Ubuntu on Windows Dil Ayar&#x131;"><p>E&#x11F;er Locale se&#xE7;ene&#x11F;i Turkey olan bir Windows 10&apos;a Bash on Ubuntu yu kuruyorsan&#x131;z Ubuntu&apos;nun T&#xFC;rk&#xE7;e y&#xFC;klendi&#x11F;ine &#x15F;ahitlik etmi&#x15F;sinizdir.</p>
<p>Ben sistemlerde kar&#x15F;&#x131;la&#x15F;&#x131;lan hatalara h&#x131;zl&#x131; &#xE7;&#xF6;z&#xFC;m bulabilmek ad&#x131;na ve bir &#xE7;ok kayna&#x11F;&#x131;n da &#x130;ngilizce olmas&#x131;ndan dolay&#x131; dil tercihlerim hep &#x130;ngilizce oluyor.</p>
<p>Uzun laf&#x131;n k&#x131;sas&#x131; dil ayar&#x131;n&#x131;z&#x131; &#x130;ngilizce ye &#xE7;evirebilmek i&#xE7;in <strong>bash</strong> ekran&#x131;n&#x131;za a&#x15F;a&#x11F;&#x131;daki komutu yaz&#x131;p Enter&apos;a basman&#x131;z yeterli.</p>
<pre><code class="language-bash">sudo update-locale LANG=en_US.UTF8
</code></pre>
<p>Bu kadar. &#x15E;imdi bash ekran&#x131;n&#x131;z&#x131; kapat&#x131;p a&#xE7;&#x131;n.</p>
<p>Selametle.</p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[OpenSSL ile Uygulamalarınız için SSL Sertifikası oluşturmak]]></title><description><![CDATA[<!--kg-card-begin: markdown--><p>Hi&#xE7; uzatmadan direk nas&#x131;l yap&#x131;laca&#x11F;&#x131;na ge&#xE7;iyorum.</p>
<p>B&#xFC;t&#xFC;n bunlar&#x131; CLI da yap&#x131;yoruz. (Windows: Command Line, macOS | Linux : sh, Bash, zh)</p>
<p>A&#x15F;a&#x11F;&#x131;daki komutlar&#x131; &#xE7;al&#x131;&#x15F;t&#x131;</p>]]></description><link>https://www.selcukermaya.com/tr/openssl-ile-uygulamalariniz-icin-ssl-sertifikasi-olusturmak/</link><guid isPermaLink="false">596d119dc7877d27cc4c562f</guid><category><![CDATA[web sitesi için ssl sertifikası]]></category><category><![CDATA[ssl sertifikaları]]></category><category><![CDATA[openssl]]></category><category><![CDATA[how to create a certificate for IIS]]></category><category><![CDATA[IIS ssl]]></category><category><![CDATA[ssl sertifikası]]></category><dc:creator><![CDATA[Selçuk Ermaya]]></dc:creator><pubDate>Fri, 24 Mar 2017 11:39:47 GMT</pubDate><media:content url="https://www.selcukermaya.com/tr/content/images/2017/03/open-ssl-commands.png" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: markdown--><img src="https://www.selcukermaya.com/tr/content/images/2017/03/open-ssl-commands.png" alt="OpenSSL ile Uygulamalar&#x131;n&#x131;z i&#xE7;in SSL Sertifikas&#x131; olu&#x15F;turmak"><p>Hi&#xE7; uzatmadan direk nas&#x131;l yap&#x131;laca&#x11F;&#x131;na ge&#xE7;iyorum.</p>
<p>B&#xFC;t&#xFC;n bunlar&#x131; CLI da yap&#x131;yoruz. (Windows: Command Line, macOS | Linux : sh, Bash, zh)</p>
<p>A&#x15F;a&#x11F;&#x131;daki komutlar&#x131; &#xE7;al&#x131;&#x15F;t&#x131;rabilmemiz i&#xE7;in ihtiyac&#x131;m&#x131;z olan &#x15F;ey <strong>openssl</strong>. K&#xFC;&#xE7;&#xFC;k bir Google aramas&#x131; ile istedi&#x11F;iniz i&#x15F;letim sistemine kurabilirsiniz.</p>
<p>Olu&#x15F;turdu&#x11F;unuz sertifikalar&#x131; istedi&#x11F;iniz her yerde &#xE7;al&#x131;&#x15F;abilece&#x11F;iniz gibi <strong>Trusted</strong> (Do&#x11F;rulanm&#x131;&#x15F;) olmad&#x131;&#x11F;&#x131;n&#x131; unutmay&#x131;n. Bu sertifika Self Signed bir sertifika.</p>
<p><strong>1. &#xD6;ncelikle olu&#x15F;turaca&#x11F;&#x131;m&#x131;z sertifika i&#xE7;in talep olu&#x15F;turuyoruz</strong> (<em>Create Certification Request</em>)</p>
<pre><code class="language-bash">$ openssl genrsa -des3 -passout pass:x -out server.pass.key 2048
# // &#x15E;ifrelenmi&#x15F; olan Key&apos;i d&#x131;&#x15F;ar&#x131; &#xE7;&#x131;kar&#x131;yoruz.
$ openssl rsa -passin pass:x -in server.pass.key -out server.key
# // &quot;writing RSA key&quot; yaz&#x131;s&#x131;n&#x131; g&#xF6;receksiniz.
</code></pre>
<pre><code class="language-bash"># // Private Key&apos;imizi siliyoruz. Yanl&#x131;&#x15F; ellere ge&#xE7;mesin :)
$ rm server.pass.key

# // Key &apos;i CSR (Certification Request) olarak d&#x131;&#x15F;ar&#x131; &#xE7;&#x131;kar&#x131;yoruz.
$ openssl req -new -key server.key -out server.csr

# // Burada sizden istenen bilgileri dolduruyorsunuz.
# // &#xD6;rnek vermek gerekirse;
# // Country Code : TR, State : Uskudar, City : Istanbul 
# // gibi...
# // Country Name (2 letter code) [AU]:US
# // State or Province Name (full name) [Some-State]:California
</code></pre>
<p><strong>2. SSL Sertifikam&#x131;z&#x131; olu&#x15F;turuyoruz</strong> (<em>Generate SSL certificate</em>)</p>
<pre><code class="language-bash">$ openssl x509 -req -sha256 -days 365 -in server.csr -signkey server.key -out server.crt
</code></pre>
<p><strong>Bu k&#x131;s&#x131;m zorunlu de&#x11F;il e&#x11F;er ihtiyac&#x131;n&#x131;z varsa yapabilirsiniz.</strong></p>
<p>Benim IIS &#xFC;zerinde ihtiyac&#x131;m oldu&#x11F;u i&#xE7;in bu ad&#x131;m&#x131; da ekledim.</p>
<pre><code class="language-bash"># // Size parola soracakt&#x131;r ne olmas&#x131;n&#x131; istiyorsan&#x131;z onu girin. 
# // Parola vermek istemiyorsan&#x131;z direk Enter&apos;a bas&#x131;n.
$ openssl pkcs12 -export -out certificate.pfx -inkey server.key -in server.crt
</code></pre>
<p>Selametle...</p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[[Kısa Bilgi] Perl Local Settings Warning]]></title><description><![CDATA[<!--kg-card-begin: markdown--><p>A&#x15F;a&#x11F;&#x131;daki hatalardan herhangi birini al&#x131;yorsan&#x131;z;</p>
<pre><code>perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LANGUAGE = (unset),
    LC_ALL = (unset),
    LANG = &quot;en_US.UTF-8&quot;
are supported and installed on your system.
perl: warning: Falling back to</code></pre>]]></description><link>https://www.selcukermaya.com/tr/perl-local-settings-warning/</link><guid isPermaLink="false">596d119dc7877d27cc4c562c</guid><dc:creator><![CDATA[Selçuk Ermaya]]></dc:creator><pubDate>Mon, 23 Jan 2017 21:20:03 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><p>A&#x15F;a&#x11F;&#x131;daki hatalardan herhangi birini al&#x131;yorsan&#x131;z;</p>
<pre><code>perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LANGUAGE = (unset),
    LC_ALL = (unset),
    LANG = &quot;en_US.UTF-8&quot;
are supported and installed on your system.
perl: warning: Falling back to the standard locale (&quot;C&quot;).
</code></pre>
<p>A&#x15F;a&#x11F;&#x131;daki komutu yazman&#x131;z probleminizi giderecektir.</p>
<pre><code class="language-bash">export LC_CTYPE=en_US.UTF-8
export LC_ALL=en_US.UTF-8
</code></pre>
<p>Selametle.</p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[RedHat üzerine Cassandra 3 Kurulumu]]></title><description><![CDATA[<!--kg-card-begin: markdown--><p>Ben b&#xFC;t&#xFC;n kurulumlar&#x131; root user ile yapt&#x131;&#x11F;&#x131;m i&#xE7;in hi&#xE7;bir komutun ba&#x15F;&#x131;na <code>sudo</code> yazmad&#x131;m. E&#x11F;er siz farkl&#x131; bir kullan&#x131;c&#x131; ile yapacaksan&#x131;z her komut sat&#x131;</p>]]></description><link>https://www.selcukermaya.com/tr/redhat-uzerine-cassandra-3-kurulumu/</link><guid isPermaLink="false">596d119dc7877d27cc4c562b</guid><category><![CDATA[redhat]]></category><category><![CDATA[cassandra]]></category><category><![CDATA[cassandra 3.0]]></category><category><![CDATA[redhat 7.3]]></category><category><![CDATA[redhat 7]]></category><category><![CDATA[redhat enterprise]]></category><dc:creator><![CDATA[Selçuk Ermaya]]></dc:creator><pubDate>Mon, 23 Jan 2017 18:59:17 GMT</pubDate><media:content url="https://www.selcukermaya.com/tr/content/images/2017/01/redhat.png" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: markdown--><img src="https://www.selcukermaya.com/tr/content/images/2017/01/redhat.png" alt="RedHat &#xFC;zerine Cassandra 3 Kurulumu"><p>Ben b&#xFC;t&#xFC;n kurulumlar&#x131; root user ile yapt&#x131;&#x11F;&#x131;m i&#xE7;in hi&#xE7;bir komutun ba&#x15F;&#x131;na <code>sudo</code> yazmad&#x131;m. E&#x11F;er siz farkl&#x131; bir kullan&#x131;c&#x131; ile yapacaksan&#x131;z her komut sat&#x131;r&#x131;n&#x131;n ba&#x15F;&#x131;na <code>sudo</code> eklemeyi unutmay&#x131;n.</p>
<ol>
<li>
<p>Java&apos;n&#x131;n kurulmas&#x131;<br>
<strong>root</strong> user ile <code>yum install java</code><br>
<strong>normal</strong> user ile <code>sudo yum install java</code></p>
</li>
<li>
<p>nano Text Edit&#xF6;r&apos;&#xFC;n kurulmas&#x131; (Ben nano kullan&#x131;yorum diye bu ad&#x131;m&#x131; ekledim. Siz vim kullan&#x131;yorsan&#x131;z bu ad&#x131;m&#x131; atlayarak nano yazd&#x131;&#x11F;&#x131;m k&#x131;s&#x131;mlara vi yazarak devam edebilirsiniz.)<br>
<code>yum install nano</code></p>
</li>
<li>
<p>Datastax Repository&apos;sinin ayarlanmas&#x131;<br>
<code>nano \etc\yum.repos.d\datax.repo</code> &#xE7;al&#x131;&#x15F;t&#x131;r&#x131;yoruz ve &#x15F;unlar&#x131; yaz&#x131;yoruz;</p>
</li>
</ol>
<pre><code class="language-bash">[datastax] 
name = DataStax Repo for Apache Cassandra
baseurl = http://rpm.datastax.com/community
enabled = 1
gpgcheck = 0
</code></pre>
<p><em><strong>[K&#x131;sa Bilgi]</strong></em> <em>Linux sisteminde bulunan b&#xFC;t&#xFC;n Package Manager&apos;lar (Paket Y&#xFC;kleryicileri) bu paketleri bar&#x131;nd&#x131;ran repository&apos;ler &#xFC;zerinden paket y&#xFC;kleme i&#x15F;lemini yaparlar.</em></p>
<ol start="3">
<li>
<p>Cassandra 3 Kurulumu<br>
<code>yum install dsc30</code></p>
</li>
<li>
<p>Cassandra Tools kurulmas&#x131;<br>
<code>yum install cassandra30-tools</code></p>
</li>
</ol>
<p>Cassandra&apos;n&#x131;n kendisi yaln&#x131;zca Start, Stop ve komutlar&#x131;n&#x131; &#xE7;al&#x131;&#x15F;t&#x131;rabilece&#x11F;iniz &#x15F;ekilde geliyor. Ekstra &#x15F;eyler i&#xE7;in (Status, Join, Cluster vs.) Cassandra Tools&apos;u kurman&#x131;z gerekiyor.</p>
<p>Kurulum i&#x15F;lemleri tamamland&#x131;ktan sonra;</p>
<p><code>service cassandra start</code></p>
<p>Komut sat&#x131;r&#x131; ile Cassandra servisinizi &#xE7;al&#x131;&#x15F;t&#x131;rabilirsiniz. E&#x11F;er &#xE7;al&#x131;&#x15F;t&#x131;r&#x131;rken detay g&#xF6;rmek / log g&#xF6;rmek istiyorsan&#x131;z yaln&#x131;zca <code>cassandra -f</code> komut sat&#x131;r&#x131;n&#x131; e&#x11F;er background job olarak &#xE7;al&#x131;&#x15F;t&#x131;r&#x131;p i&#x15F;lemlerinize devam etmek istiyorsan&#x131;z <code>cassandra -f &amp;</code> komut sat&#x131;r&#x131;n&#x131; kullanabilirsiniz.</p>
<p>Cassandra&apos;n&#x131;z&#x131;n ne durumda oldu&#x11F;unu g&#xF6;rmek i&#xE7;in</p>
<p><code>nodetool status</code></p>
<p>Komut sat&#x131;r&#x131;n&#x131; kullanabilirsiniz.</p>
<p>Yaz&#x131;y&#x131; not tutmak i&#xE7;in yaz&#x131;yordum, sizlerle de payla&#x15F;mak istedim. Ben Cassandra&apos;y&#x131; Cluster olarak kurmak istedi&#x11F;im i&#xE7;in bir&#xE7;ok &#x15F;eyi de tecr&#xFC;be edinmi&#x15F; oldum. &#xD6;yle ha deyip Cluster kurulumu maalesef yapam&#x131;yorsunuz. Kar&#x15F;&#x131;la&#x15F;t&#x131;&#x11F;&#x131;m hatalar&#x131;, &#xE7;&#xF6;z&#xFC;mleri ve tecr&#xFC;beleri yine sizlerle payla&#x15F;maya &#xE7;al&#x131;&#x15F;aca&#x11F;&#x131;m.</p>
<p>Bu yaz&#x131;y&#x131; da g&#xFC;ncelleme notlar&#x131; ile birlikte g&#xFC;ncel tutmaya &#xE7;al&#x131;&#x15F;aca&#x11F;&#x131;m.</p>
<p>Eklememi istedi&#x11F;iniz &#x15F;eyler varsa ve ya ekstra sormak istedi&#x11F;iniz sorular varsa yorum b&#xF6;l&#xFC;m&#xFC;nden sorabilirsiniz.</p>
<p>Selametle.</p>
<pre><code>v1.0 - 23.01.2017 21:55
</code></pre>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[[Kısa Bilgi] bower Proxy Ayarları]]></title><description><![CDATA[<!--kg-card-begin: markdown--><p>E&#x11F;er proxy ayarlar&#x131; mecburiyeti olan bir bilgisayar &#xFC;zerinde &#xE7;al&#x131;&#x15F;&#x131;yorsan&#x131;z bower / npm vb paketleri y&#xFC;klerken bir tak&#x131;m hatalar alm&#x131;&#x15F;sn&#x131;zd&#x131;r. A&#x15F;a&#x11F;&#x131;da bir ka&#xE7;&#x131;</p>]]></description><link>https://www.selcukermaya.com/tr/bower-proxy-ayarlari-kisa-bilgi/</link><guid isPermaLink="false">596d119dc7877d27cc4c562a</guid><dc:creator><![CDATA[Selçuk Ermaya]]></dc:creator><pubDate>Thu, 08 Dec 2016 13:19:49 GMT</pubDate><media:content url="https://www.selcukermaya.com/tr/content/images/2016/12/bower.png" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: markdown--><img src="https://www.selcukermaya.com/tr/content/images/2016/12/bower.png" alt="[K&#x131;sa Bilgi] bower Proxy Ayarlar&#x131;"><p>E&#x11F;er proxy ayarlar&#x131; mecburiyeti olan bir bilgisayar &#xFC;zerinde &#xE7;al&#x131;&#x15F;&#x131;yorsan&#x131;z bower / npm vb paketleri y&#xFC;klerken bir tak&#x131;m hatalar alm&#x131;&#x15F;sn&#x131;zd&#x131;r. A&#x15F;a&#x11F;&#x131;da bir ka&#xE7;&#x131;n&#x131; &#xF6;rnekledim.</p>
<blockquote>
<p>retry Request to <a href="https://bower.herokuapp.com/packages/%5BPACKAGE_NAME%5D">https://bower.herokuapp.com/packages/[PACKAGE_NAME]</a> failed with ETIMEDOUT, retrying</p>
</blockquote>
<blockquote>
<p>bower UNABLE_TO_GET_ISSUER_CERT_LOCALLY Request to <a href="https://bower.herokuapp.com/packages/%5BPACKAGE_NAME%5D">https://bower.herokuapp.com/packages/[PACKAGE_NAME]</a> failed: unable to get local issuer certificate</p>
</blockquote>
<p>Gibi gibi...</p>
<p>Bu hatalar&#x131; k&#xF6;k&#xFC;nden &#xE7;&#xF6;zmenin birinci yolu proxy &#xFC;zerinden gerekli download i&#x15F;lemlerini yapt&#x131;rtmak. Bunun i&#xE7;in uygulayaca&#x11F;&#x131;n&#x131;z ad&#x131;malar&#x131; size yaz&#x131;yorum.</p>
<ol>
<li>
<p>&#xD6;ncelikle Win+R (Run) kominasyonunu kullan&#x131;n ve kar&#x15F;&#x131;n&#x131;za &#xE7;&#x131;kan pencereye <mark>%userprofile%</mark> yaz&#x131;p Enter&apos;a bas&#x131;n.</p>
</li>
<li>
<p>Bulundu&#x11F;unuz klas&#xF6;re <code>.bowerrc</code> isimli bir dosya olu&#x15F;turun. Bu dosyay&#x131; olu&#x15F;turmak i&#xE7;in <strong>Administrator</strong> yetkisine sahip bir edit&#xF6;rde olu&#x15F;turman&#x131;z gerekiyor. Ben <mark>Notepad++</mark> kulland&#x131;&#x11F;&#x131;m i&#xE7;in i&#x15F;imi kolayca halledebildim. Sizde yoksa e&#x11F;er <a href="https://notepad-plus-plus.org/download">buradan</a> indirebilir ve ya ben bu tarz &#x15F;eylerle hi&#xE7; u&#x11F;ra&#x15F;mayay&#x131;m diyorsan&#x131;z da <a href="https://gist.githubusercontent.com/se/62e4c58606d1b68feea28a07a116daac/raw/e3c227e85fe580b2964bff7d05154744a226f8ef/.bowerrc">buradan</a> olu&#x15F;turmu&#x15F; oldu&#x11F;um dosyay&#x131; indirebilir, i&#xE7;eri&#x11F;ini bir text edit&#xF6;r ile (Notepad bile olur) de&#x11F;i&#x15F;tirebilir 1. ad&#x131;mdaki klas&#xF6;re kopyalayabilirsiniz.<br>
ref: <a href="https://bower.io/docs/config/#bowerrc-specification">https://bower.io/docs/config/#bowerrc-specification</a></p>
</li>
</ol>
<h6 id="bowerrcdosyaierii">.bowerrc dosya i&#xE7;eri&#x11F;i</h6>
<pre><code class="language-json">{
	&quot;proxy&quot;: &quot;http://DOMAIN%5CKULLANICI_ADI:PAROLA@HOSTveyaIP:PORT/&quot;,
	&quot;https-proxy&quot;: &quot;http://DOMAIN%5CKULLANICI_ADI:PAROLA@HOSTveyaIP:PORT/&quot;,
	&quot;strict-ssl&quot;: false
}
</code></pre>
<p>Bu kadar ;)</p>
<blockquote>
<p>Not: Bu ayarlar&#x131; normalde uygulama klas&#xF6;r&#xFC;n&#xFC;z&#xFC;n i&#xE7;erisine .bowerrc olu&#x15F;turarak da yapabilirsiniz. Fakat yazm&#x131;&#x15F; oldu&#x11F;unuz kullan&#x131;c&#x131; ad&#x131; ve parolalar kod repo servislerinize gidece&#x11F;i i&#xE7;in yaln&#x131;zca profiliniz &#xF6;zelinde tutmakta fayda var.</p>
</blockquote>
<p><strong>Ayarlar genel ayarlard&#x131;r.</strong></p>
<p>Visual Studio<br>
Visual Studio Code<br>
Rider<br>
Command-Line<br>
Bash</p>
<p>vs her ortam ayn&#x131; ayar dosyas&#x131;n&#x131; kullanacakt&#x131;r.</p>
<p>Proxy&apos;e tak&#x131;lmayan kafan&#x131;z rahat g&#xFC;zel dinler diliyorum :)</p>
<p>Selametle.</p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[0x80070666 - Another version of this product is already installed. Installation of this version cannot continue.]]></title><description><![CDATA[<!--kg-card-begin: markdown--><pre><code>0x80070666 - Another version of this product is already installed. Installation of this version cannot continue. To configure or remove the existing version of the product, use Add/Remove Programs on the Control Panel.
</code></pre>
<p>.Net Core&apos;un yeni versiyonunu ya da Visual Studio 2017 RC&apos;nin Update&apos;</p>]]></description><link>https://www.selcukermaya.com/tr/visual-studio-2017-another-version-of-this-product-is-already-installed/</link><guid isPermaLink="false">596d119dc7877d27cc4c5629</guid><dc:creator><![CDATA[Selçuk Ermaya]]></dc:creator><pubDate>Wed, 30 Nov 2016 12:08:00 GMT</pubDate><media:content url="https://www.selcukermaya.com/tr/content/images/2016/11/New-Visual-Studio-Installer.png" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: markdown--><pre><code>0x80070666 - Another version of this product is already installed. Installation of this version cannot continue. To configure or remove the existing version of the product, use Add/Remove Programs on the Control Panel.
</code></pre>
<img src="https://www.selcukermaya.com/tr/content/images/2016/11/New-Visual-Studio-Installer.png" alt="0x80070666 - Another version of this product is already installed. Installation of this version cannot continue."><p>.Net Core&apos;un yeni versiyonunu ya da Visual Studio 2017 RC&apos;nin Update&apos;ini bilgisayar&#x131;n&#x131;za kuruyorsan&#x131;z bu hatay&#x131; alman&#x131;z &#xE7;ok muhtemel.</p>
<p>Yapman&#x131;z gereken &#x15F;ey sadece Visual C++ Redistributable ile alakal&#x131; (Visual C++ Redistributable 2010&apos;un &#xFC;zeri) kurulumlar&#x131; kald&#x131;rmak.</p>
<p>Sonras&#x131;nda Installer&apos;&#x131;n&#x131;z kurulumu yapacakt&#x131;r.</p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[[Kısa Bilgi] Visual Studio Code Proxy Ayarları nasıl yapılır?]]></title><description><![CDATA[<!--kg-card-begin: markdown--><p>Visual Studio Code&apos;u a&#xE7;t&#x131;&#x11F;&#x131;n&#x131;zda;</p>
<p><img src="https://www.selcukermaya.com/tr/content/images/2016/11/VS-CODE-PROXY-SETTINGS-1.png" alt loading="lazy"></p>
<ol>
<li><mark>F1 (veya Ctrl+Shift+P)</mark> bas&#x131;n ve <strong>Open User Settings</strong> &apos;i se&#xE7;in.</li>
<li>Ekran&#x131;n sa&#x11F; taraf&#x131;nda a&#xE7;&#x131;lan pencerye;</li>
</ol>
<pre><code class="language-js">{
    &quot;http.proxyStrictSSL&quot;: false,
    &quot;</code></pre>]]></description><link>https://www.selcukermaya.com/tr/kisa-bilgi-visual-studio-code-proxy-ayarlari-nasil-yapilir/</link><guid isPermaLink="false">596d119dc7877d27cc4c5628</guid><dc:creator><![CDATA[Selçuk Ermaya]]></dc:creator><pubDate>Thu, 24 Nov 2016 07:27:55 GMT</pubDate><media:content url="https://www.selcukermaya.com/tr/content/images/2016/11/VS-CODE-1.png" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: markdown--><img src="https://www.selcukermaya.com/tr/content/images/2016/11/VS-CODE-1.png" alt="[K&#x131;sa Bilgi] Visual Studio Code Proxy Ayarlar&#x131; nas&#x131;l yap&#x131;l&#x131;r?"><p>Visual Studio Code&apos;u a&#xE7;t&#x131;&#x11F;&#x131;n&#x131;zda;</p>
<p><img src="https://www.selcukermaya.com/tr/content/images/2016/11/VS-CODE-PROXY-SETTINGS-1.png" alt="[K&#x131;sa Bilgi] Visual Studio Code Proxy Ayarlar&#x131; nas&#x131;l yap&#x131;l&#x131;r?" loading="lazy"></p>
<ol>
<li><mark>F1 (veya Ctrl+Shift+P)</mark> bas&#x131;n ve <strong>Open User Settings</strong> &apos;i se&#xE7;in.</li>
<li>Ekran&#x131;n sa&#x11F; taraf&#x131;nda a&#xE7;&#x131;lan pencerye;</li>
</ol>
<pre><code class="language-js">{
    &quot;http.proxyStrictSSL&quot;: false,
    &quot;http.proxy&quot;: &quot;http://kullaniciAdi:Parola@proxyAdresiVeyaIp:Port/&quot;
}
</code></pre>
<p>Bilgilerini yaz&#x131;n ve kendinize g&#xF6;re d&#xFC;zenleyin.</p>
<p>Kaydedin.</p>
<p>Bu kadar &#x1F609;&#x1F642;</p>
<p>Selametle.</p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[Amerika 3. Gün]]></title><description><![CDATA[<!--kg-card-begin: markdown--><p>Seminerin 2. g&#xFC;n&#xFC;.</p>
<p>Bize g&#xF6;re orta belki de onlara g&#xF6;re &#xE7;ok g&#xFC;zel bir kahvalt&#x131; ile ba&#x15F;lad&#x131;k g&#xFC;ne... &#x130;lk g&#xFC;n bahsetmedim. Hel&#xE2;l - Haram durumlar&#x131;na g&#xFC;</p>]]></description><link>https://www.selcukermaya.com/tr/amerika-3ncu-gun/</link><guid isPermaLink="false">596d119cc7877d27cc4c561d</guid><category><![CDATA[amerika seyahati]]></category><category><![CDATA[microsoft]]></category><category><![CDATA[amerika]]></category><category><![CDATA[seyahat]]></category><dc:creator><![CDATA[Selçuk Ermaya]]></dc:creator><pubDate>Fri, 27 May 2016 17:35:59 GMT</pubDate><media:content url="https://www.selcukermaya.com/tr/content/images/2017/07/space-needle-usa-min.jpg" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: markdown--><img src="https://www.selcukermaya.com/tr/content/images/2017/07/space-needle-usa-min.jpg" alt="Amerika 3. G&#xFC;n"><p>Seminerin 2. g&#xFC;n&#xFC;.</p>
<p>Bize g&#xF6;re orta belki de onlara g&#xF6;re &#xE7;ok g&#xFC;zel bir kahvalt&#x131; ile ba&#x15F;lad&#x131;k g&#xFC;ne... &#x130;lk g&#xFC;n bahsetmedim. Hel&#xE2;l - Haram durumlar&#x131;na g&#xFC;c&#xFC;m yetti&#x11F;ince dikkat etmeye &#xE7;al&#x131;&#x15F;t&#x131;m. &#x130;n&#x15F;allah da ba&#x15F;ar&#x131;l&#x131; olmu&#x15F;umdur.</p>
<p>Hal &#xF6;yle olunca sabah kahvalt&#x131;s&#x131;nda et ve benzeri &#x15F;eylerden uzak durdum. Yumurtay&#x131; g&#xF6;r&#xFC;nce en &#xE7;o&#x11F;undan doldurdum taba&#x11F;a. Kahvalt&#x131; k&#xFC;lt&#xFC;rleri bana g&#xF6;re &#xE7;ok enteresan. Kahvalt&#x131;da tatl&#x131; &#x15F;eyler a&#x11F;&#x131;rl&#x131;kl&#x131; g&#xF6;rebiliyorsunuz. Muffin ler &#xE7;ilekli kekler vs g&#xF6;rmek &#xE7;ok&#xE7;a m&#xFC;mk&#xFC;n. Bir de patates ald&#x131;m g&#xFC;ya bize en yak&#x131;n diye ama patates &#x15F;ekerli &#xE7;&#x131;kt&#x131;... O kadar abart&#x131;yorlar yani... Fakat tat.... Neyse s&#xF6;ylemeyeyim siz anlay&#x131;n... Yumurta enfesti ama. Tuz bulamad&#x131;m bu arada... Az kals&#x131;n unutuyordum. Ve bolca meyve... Ve bu meyveler cidden taze ve &#xE7;ok leziz. Meyve seven de bir insan oldu&#x11F;um i&#xE7;in ondan da ald&#x131;m haliyle. Bir &#x15F;ekilde karn&#x131;m&#x131; doyurdum a&#xE7; kalmad&#x131;m &#xE7;ok &#x15F;&#xFC;k&#xFC;r. Zaten a&#xE7; kalsayd&#x131;m k&#x131;zarlard&#x131; bana.</p>
<p>Kahvalt&#x131;y&#x131; bu kadar uzatmam dan yeme&#x11F;i &#xE7;ok sevdi&#x11F;imi anlam&#x131;&#x15F;s&#x131;n&#x131;zd&#x131;r.</p>
<p>Kahvalt&#x131;dan sonraki oturumlarda yine sa&#x11F;olsun buradaki Microsoft ekibi bolca bilgi bombard&#x131;man&#x131;na tuttu. Konuya ger&#xE7;ekten &#xE7;ok hakim olmal&#x131;lar ki anlat&#x131;mda verdikleri &#xF6;rneklerde &#xE7;ok iyiler.</p>
<p>G&#xFC;zel oturumlar&#x131;n ard&#x131;ndan &#xF6;&#x11F;le yeme&#x11F;inden h&#xFC;k&#xFC;metin sat&#x131;n al&#x131;mlar&#x131;ndan ilgilenen bir firmadan gelen (h&#xFC;k&#xFC;mete ba&#x11F;l&#x131;) bir zenci (&#x131;rk&#xE7;&#x131;l&#x131;k yok kendilerini &#xE7;ok severim) bir de asia l&#x131; g&#xF6;r&#xFC;n&#xFC;ml&#xFC; bir abimiz ile tan&#x131;&#x15F;t&#x131;k. Abi dediysem de benim ya&#x15F;lar&#x131;mda... Onlarla bolca muhabbet ettik. Gayet g&#xFC;zel bir kayna&#x15F;mayd&#x131;. Yoksa bu muhabbeti sabah m&#x131; yapm&#x131;&#x15F;t&#x131;k? Emin olamad&#x131;m :)</p>
<p>Ayn&#x131; zamanda yine g&#xFC;n i&#xE7;erisinde Filistinli, M&#x131;s&#x131;r da b&#xFC;y&#xFC;m&#xFC;&#x15F; 20 y&#x131;ld&#x131;r da Amerika da ya&#x15F;ayan bir abimiz ile tan&#x131;&#x15F;t&#x131;k. 2 evlilik yapm&#x131;&#x15F; bu abimizin ilk e&#x15F;inden bir &#xE7;ocu&#x11F;u, ikinci e&#x15F;inden de 2 &#xE7;ocu&#x11F;u var. Evli. M&#xFC;sl&#xFC;man bir abimiz. Ya&#x15F; olarak ve ya&#x15F;am&#x131;&#x15F;l&#x131;k olarak bizden baya&#x11F;&#x131; tecr&#xFC;beli olan bu abimizden epeyi bir&#x15F;eyler &#xF6;&#x11F;rendik do&#x11F;rusu. Sa&#x11F;olsun.</p>
<p>Belki ba&#x15F;ka bir g&#xFC;nl&#xFC;k konusunda de&#x11F;inirim bunlara.</p>
<p>Neyse bir &#x15F;ekilde ak&#x15F;am ettik. Bu ikinci g&#xFC;n&#xFC;n ak&#x15F;am&#x131;n&#x131;n bir &#xF6;zelli&#x11F;i var... O da <a href="https://en.wikipedia.org/wiki/Space_Needle">Space Needle</a>. (merakl&#x131;lar&#x131; hemen google las&#x131;n) 184 metre kadar y&#xFC;ksekli&#x11F;inde olan bu binan&#x131;n tepesinde bir restoran var. Bizi oraya yeme&#x11F;e g&#xF6;t&#xFC;rd&#xFC;ler.</p>
<p>Yemek &#xF6;ncesi Thomas isminde temiz g&#xF6;r&#xFC;n&#xFC;ml&#xFC; Alman bir abimiz ile tan&#x131;&#x15F;&#x131;p g&#xFC;zel muhabbetler ettik. San&#x131;yorum ki bizim masa ak&#x15F;am&#x131;n en komik insanlar&#x131;n&#x131; a&#x11F;&#x131;rl&#x131;yordu. Yeme&#x11F;in ba&#x15F;&#x131;ndan sonuna ilk tan&#x131;&#x15F;ma an&#x131;ndan ba&#x15F;layarak bolca kahkahal&#x131; bir yemekti. Bazen konu&#x15F;ulan konular m&#xFC;sl&#xFC;man bir T&#xFC;rk ailesine g&#xF6;re m&#xFC;stehcene &#xE7;alan konulard&#x131;. Rahats&#x131;zl&#x131;k duydum biraz. De&#x11F;iniyor olmam&#x131;n sebebi ise m&#xFC;stehcen konular&#x131; muhabbet i&#xE7;inde kullanmaktan rahats&#x131;zl&#x131;k duymamalar&#x131;.</p>
<p>Yeme&#x11F;i &#xF6;zetleyecek olursak bol lezzetli bol kahkahal&#x131; ve ger&#xE7;ekten g&#xFC;zeldi.</p>
<p>Yemek sonras&#x131; da masadaki ba&#x15F;rol&#xFC; oynatan abimiz ile &#x15F;akala&#x15F;maktan da geri durmad&#x131;m ve ak&#x15F;am&#x131; b&#xF6;ylelikle sonland&#x131;rm&#x131;&#x15F; olduk.</p>
<p>Sonras&#x131;n&#x131; s&#xF6;ylememe gerek yok san&#x131;r&#x131;m pestilim &#xE7;&#x131;km&#x131;&#x15F; bir &#x15F;ekilde yata&#x11F;a g&#xF6;m&#xFC;ld&#xFC;m. :)</p>
<p><img src="https://www.selcukermaya.com/tr/content/images/2020/09/emoji-for-karikatur.jpg" alt="Amerika 3. G&#xFC;n" loading="lazy"></p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[Amerika 2.Gün]]></title><description><![CDATA[<!--kg-card-begin: markdown--><p>Seminerin ilk g&#xFC;n&#xFC;. Washington Convention Center&apos;day&#x131;z. Konu&#x15F;mac&#x131; konuya &#xE7;ok hakim konu&#x15F;uyor. Konu&#x15F;urken espriler yap&#x131;yor. Ki&#x15F;ileri aya&#x11F;a kald&#x131;r&#x131;p bir ka&#xE7; hareket yapt&#x131;r&#x131;</p>]]></description><link>https://www.selcukermaya.com/tr/amerika-2nci-gun/</link><guid isPermaLink="false">596d119cc7877d27cc4c561c</guid><category><![CDATA[amerika]]></category><category><![CDATA[united states]]></category><category><![CDATA[seyahat]]></category><category><![CDATA[seminer]]></category><category><![CDATA[microsoft.net]]></category><dc:creator><![CDATA[Selçuk Ermaya]]></dc:creator><pubDate>Tue, 24 May 2016 21:51:40 GMT</pubDate><media:content url="https://www.selcukermaya.com/tr/content/images/2017/07/seattle.jpg" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: markdown--><img src="https://www.selcukermaya.com/tr/content/images/2017/07/seattle.jpg" alt="Amerika 2.G&#xFC;n"><p>Seminerin ilk g&#xFC;n&#xFC;. Washington Convention Center&apos;day&#x131;z. Konu&#x15F;mac&#x131; konuya &#xE7;ok hakim konu&#x15F;uyor. Konu&#x15F;urken espriler yap&#x131;yor. Ki&#x15F;ileri aya&#x11F;a kald&#x131;r&#x131;p bir ka&#xE7; hareket yapt&#x131;r&#x131;p yerine oturtmas&#x131; ayr&#x131;ca komikti. :)  E&#x11F;lenceli ba&#x15F;lad&#x131;.</p>
<p>&#x130;lk konu&#x15F;man&#x131;n konusu daha &#xE7;ok neyi nap&#x131;yoruz nas&#x131;l yap&#x131;caz arkada&#x15F;lar size nas&#x131;l yard&#x131;mc&#x131; olacak &#x15F;eklinde genel bir bilgilendirme konu&#x15F;mas&#x131;yd&#x131;.</p>
<p>Ayn&#x131; zamanda Azure ML &#xFC;zerinde k&#xFC;&#xE7;&#xFC;k bir demo yapt&#x131; ve Cloud &#xFC;zerinde i&#x15F;lerin nas&#x131;l kolay oldu&#x11F;undan felan bahsetti.</p>
<p>&#x130;kinci konu&#x15F;mac&#x131;lar (biri daha &#xF6;nce 7 y&#x131;l Oracle da &#xE7;al&#x131;&#x15F;m&#x131;&#x15F;) migration&apos;&#x131;n nas&#x131;l olmas&#x131; gerekti&#x11F;inden s&#xFC;re&#xE7;lerin nas&#x131;l i&#x15F;lemesi gerekti&#x11F;inden felan bahsettiler.</p>
<p>Arada hemen bizim oralardan gelen t&#xFC;rk&#xFC; buldum :) Ka&#xE7;&#x131;r&#x131;r m&#x131;y&#x131;m? Hemen belli ediyorsun abi kendini dedim. Kahkahala&#x15F;t&#x131;k. &quot;O kadar m&#x131; belli oluyor?&quot; sorusu geldi ard&#x131;ndan :) yine g&#xFC;l&#xFC;&#x15F;meler.</p>
<p>Zaman zaman bulu&#x15F;tuk ve birlikte yemek ve kahve aralar&#x131; vermi&#x15F; olduk. Bu arada m&#xFC;thi&#x15F; Latte ve Kahve tatlar&#x131; var. Ger&#xE7;ekten takdire &#x15F;ayan.</p>
<p>Sonras&#x131;nda SQL Tiger Team ile tan&#x131;&#x15F;t&#x131;k. Bir&#xE7;ok olay&#x131; bu arkada&#x15F;lar gerekti&#x11F;inde yerinde dahi inceleme yap&#x131;yorlarm&#x131;&#x15F;. &#xD6;yle s&#xF6;ylediler :) Onlar&#x131;n yalanc&#x131;s&#x131;y&#x131;m.</p>
<p>2.Session da maalesef benim kat&#x131;lmam&#x131; gerektiren bir Session de&#x11F;ildi. Bende kendime bir oda bulup &#xE7;al&#x131;&#x15F;may&#x131; uygun g&#xF6;rd&#xFC;m.</p>
<p>Bu s&#x131;ralarda bir&#xE7;ok ki&#x15F;i ile bir&#xE7;ok farkl&#x131; muhabbet etme imkan&#x131;m oldu. Bunlar &#xE7;ok g&#xFC;zel tecr&#xFC;belerdi. &#x130;ngilizce pratik yapm&#x131;&#x15F; olman&#x131;n yan&#x131;nda bir&#x15F;eylerde &#xF6;&#x11F;rendim.</p>
<p>G&#xFC;n&#xFC;n son etkinli&#x11F;i &quot;Hands on Labs&quot; isimli oturumdu.</p>
<p>En fazla &#x15F;eyi &#x15F;imdilik bu e&#x11F;itimde &#xF6;&#x11F;renmi&#x15F; oldum san&#x131;r&#x131;m. High Availability ve Always On &#xFC;zerine bir oturumdu. Do&#x11F;rudan teknolojiyi geli&#x15F;tiren ekipten insanlar oradayd&#x131;. Bir&#xE7;ok konuda sorular sorup bir&#xE7;ok konuda yan&#x131;tlar alm&#x131;&#x15F; oldum ^^ En be&#x11F;endi&#x11F;im oturum bu oturum oldu.</p>
<p>Sonras&#x131;nda &#x15F;ehiri biraz turlaman&#x131;n vakti gelmi&#x15F;ti.</p>
<p>&#xD6;ncelikle karde&#x15F;imin &quot;Abi muhakkak oraya gidince telefon hatt&#x131; al en az&#x131;ndan kafan rahat olur.&quot; tavsiyesine uyup (&#x15E;ehrin her yerinde &#xFC;cretsiz internet olmas&#x131;na ra&#x11F;men, ba&#x11F;lant&#x131; problemi &#xE7;ekti&#x11F;im zamanlar oluyordu ger&#xE7;ekten.) hat almak i&#xE7;in AT&amp;T veya T-Mobile arad&#x131;m.</p>
<p>Otob&#xFC;s dura&#x11F;&#x131;nda duran 2 k&#x131;za nereden alabilece&#x11F;imi sordum. Sa&#x11F;olsunlar &#xE7;ok yard&#x131;msever insanlar, hemen bak&#x131;nmaya ba&#x15F;lad&#x131;lar. Buldular da, bulamad&#x131;klar&#x131; i&#xE7;in de bir&#xE7;ok &#xF6;z&#xFC;rler dilediler :) Yard&#x131;mc&#x131; olma zorunlu&#x11F;u hissetmeleri ger&#xE7;ekten g&#xFC;zel. ^^ Sa&#x11F;olsunlar. Beni y&#xF6;nlendirdikten sonra yanlar&#x131;ndan ayr&#x131;ld&#x131;m.</p>
<p>AT&amp;T hat almak i&#xE7;in g&#xF6;rm&#xFC;&#x15F; oldu&#x11F;um ilk yerdi. Bende hi&#xE7; vakit kaybetmeden girdim i&#xE7;eri. Hemen 2 tane k&#x131;z kar&#x15F;&#x131;lad&#x131; beni ve ad&#x131;m&#x131; sordular. Tablet &#xFC;zerinden ad&#x131;m&#x131; girdiler. Kocaman bir yer. &#x130;&#xE7;eride bir ka&#xE7; tane bizim s&#x131;ra ald&#x131;&#x11F;&#x131;m&#x131;zda numaralar&#x131;m&#x131;z&#x131;n belirlenmesi i&#xE7;in konulan ekranlar gibi ekranlar var. &#x130;sminiz ve bir nevi s&#x131;ran&#x131;z orada g&#xF6;r&#xFC;n&#xFC;yor.</p>
<p>5-10 dk i&#xE7;nde i&#x15F;lemlerimi yapmak i&#xE7;in g&#xF6;revlendirilen ki&#x15F;i geldi. &#xC7;ok uzatmadan i&#x15F;lemlerimi halletti ve kart&#x131;m&#x131; alm&#x131;&#x15F; oldum. 1 ay boyunca kullanabilece&#x11F;im s&#x131;n&#x131;rs&#x131;z arama, s&#x131;n&#x131;rs&#x131;z mesaj ve s&#x131;n&#x131;rs&#x131;z interneti 45 $ (52$ d&#x131; san&#x131;r&#x131;m vergiler dahil) &apos;a alm&#x131;&#x15F; oldum. T&#xFC;rkiye ye g&#xF6;re &#xE7;ok ucuz oldu&#x11F;unu s&#xF6;ylemek m&#xFC;mk&#xFC;n. (Sak&#x131;n 3 ile &#xE7;arpmay&#x131;n :))</p>
<p>Teknolojiyi &#xE7;ok efektif kulland&#x131;klar&#x131;n&#x131; s&#xF6;ylemek san&#x131;r&#x131;m do&#x11F;ru olur. Bir &#x15F;ekilde g&#xFC;nl&#xFC;k ya&#x15F;amlar&#x131;n&#x131;n her taraf&#x131;na eklemi&#x15F;ler.</p>
<p>Hatt&#x131; ald&#x131;ktan sonra kongre merkezinden g&#xF6;r&#xFC;nen deniz g&#xF6;r&#xFC;nt&#xFC;s&#xFC;ne kap&#x131;l&#x131;p, g&#xF6;rd&#xFC;&#x11F;&#xFC;m g&#xF6;r&#xFC;nt&#xFC; istikametinde y&#xFC;r&#xFC;meye ba&#x15F;lad&#x131;m. Bir m&#xFC;ddet sonra bal&#x131;k&#xE7;&#x131;lar &#xE7;ar&#x15F;&#x131;s&#x131; olarak adland&#x131;rabilece&#x11F;imiz bir mekana geldim. M&#xFC;thi&#x15F; a&#x11F;&#x131;r kokan bir yerdi. &#xC7;inli, daha do&#x11F;rusu Asyal&#x131; diyelim abi ve ablalar&#x131;m&#x131;z&#x131; orada bolca g&#xF6;rmek m&#xFC;mk&#xFC;n.</p>
<p>Unutmadan s&#xF6;yleyeyim, ben bu yolu y&#xFC;r&#xFC;rken s&#xFC;rekli her k&#xF6;&#x15F;e ba&#x15F;&#x131;nda hemen hemen bir evsiz g&#xF6;rd&#xFC;&#x11F;&#xFC;m&#xFC; s&#xF6;ylesem yalan konu&#x15F;mu&#x15F; olmam. Ciddi manada evsiz var.</p>
<p>As&#x131;l vard&#x131;&#x11F;&#x131;m yer ise tamamen evsizlerin mekan&#x131;yd&#x131;. &#xDC;zerine battaniyesini alan gelmi&#x15F;. Bir m&#xFC;ddet oray&#x131; izledikten sonra tekrar y&#xFC;r&#xFC;meye ba&#x15F;lad&#x131;m. Seattle sokaklar&#x131; insan&#x131;n i&#xE7;ini a&#xE7;&#x131;yor. Y&#xFC;r&#xFC;mek istiyor insan s&#xFC;rekli. Ben de o ak&#x15F;am baya&#x11F;&#x131; y&#xFC;r&#xFC;d&#xFC;m san&#x131;r&#x131;m.</p>
<p>En &#xE7;ok dikkatimi &#xE7;eken &#x15F;eylerden birisi ise insanlar&#x131;n g&#xFC;ler y&#xFC;zl&#xFC;l&#xFC;&#x11F;&#xFC;yd&#xFC;. Kafan&#x131;z&#x131; &#xE7;evirmeniz esnas&#x131;nda biriyle y&#xFC;z y&#xFC;ze geldi&#x11F;iniz zaman insanlar size g&#xFC;l&#xFC;ms&#xFC;yor ve &quot;Hi&quot; diyor :) Hatta &#x131;&#x15F;&#x131;kta beklerken birden kendinizi hi&#xE7; tan&#x131;mad&#x131;&#x11F;&#x131;n&#x131;z biri ile sanki daha &#xF6;nceden tan&#x131;&#x15F;&#x131;yormu&#x15F; gibi bir muhabbet i&#xE7;inde bulabilirsiniz.</p>
<p>Kimileri ile &#xE7;ok&#xE7;a kimileri ile azca muhabbet etme f&#x131;rsat&#x131; buldum. Az&#x131;yla da &#xE7;o&#x11F;uyla da fikirlerinizin ve d&#xFC;&#x15F;&#xFC;ncelerinizin &#xF6;nemsendi&#x11F;ini hissettiriyor buradaki insanlar size.</p>
<p>Otele do&#x11F;ru y&#xFC;r&#xFC;rken kar&#x15F;&#x131;dan kar&#x15F;&#x131;ya ge&#xE7;ece&#x11F;im bir s&#x131;rada yine &quot;homeless&quot; olarak tabir edilen insanlardan birini g&#xF6;rd&#xFC;m. Bu sefer bir anne. Foto&#x11F;raf&#x131;n&#x131; &#xE7;ekmek isterdim sizlere. Elinde bir karton; &#x130;ki &#xE7;ocu&#x11F;una bakmak zorunda oldu&#x11F;unu, k&#x131;sacas&#x131; meram&#x131;n&#x131; belirten bir ka&#xE7; kelime. Hani dilenciler mahzun olur ya. Bu da mahzun fakat g&#xFC;l&#xFC;yor :) &#xC7;ok ilgimi &#xE7;ekti. Birilerinin g&#xF6;zlerinde bir umut &#x131;&#x15F;&#x131;&#x11F;&#x131; g&#xF6;rd&#xFC;&#x11F;&#xFC;n&#xFC;zde anlars&#x131;n&#x131;z. Umutlu homelesslardan i&#x15F;te :) Kar&#x131;nca karar&#x131;nca yard&#x131;m etmek istedim bende ondaki umutlu g&#xF6;zlerin inanc&#x131; ve insanlar&#x131;n bu &#x15F;ekilde olmalar&#x131;n&#x131;n mah&#xE7;uplu&#x11F;uyla.</p>
<p>Saat 7:30 s&#x131;ralar&#x131;yd&#x131;. Otelde ad&#x131;m&#x131;za d&#xFC;zenlenen bir yemek vard&#x131;. Fakat o kadar yorulmu&#x15F;um ki, bir de saat fark&#x131; tabii, yata&#x11F;a kafam&#x131; koyar koymaz uyumu&#x15F;um :)</p>
<p>Sonra da gece 2:30 da da uyand&#x131;m tabi :)</p>
<p>Sonras&#x131; sabaha kadar ayaktay&#x131;m :)</p>
<p><img src="https://www.selcukermaya.com/tr/content/images/2020/09/emoji-for-karikatur.jpg" alt="Amerika 2.G&#xFC;n" loading="lazy"></p>
<p>Diyebilmeyi &#xE7;ok isterdim tabii :)</p>
<!--kg-card-end: markdown-->]]></content:encoded></item></channel></rss>