<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title></title>
    <link>https://mesuutt.com/</link>
    <description>Recent content on </description>
    <generator>Hugo -- gohugo.io</generator>
    <language>tr-tr</language>
    <lastBuildDate>Thu, 02 Apr 2020 10:59:25 +0300</lastBuildDate>
    
	<atom:link href="https://mesuutt.com/index.xml" rel="self" type="application/rss+xml" />
    
    
    <item>
      <title>Rust - crate ve moduller</title>
      <link>https://mesuutt.com/2020/04/rust-crate-ve-moduller/</link>
      <pubDate>Thu, 02 Apr 2020 10:59:25 +0300</pubDate>
      
      <guid>https://mesuutt.com/2020/04/rust-crate-ve-moduller/</guid>
      <description>Bir proje yazmaya basladigimizda ilk dusundugumuz seylerden birisi projenin tahmini buyuklugune gore projenin dosya ve dizin yapisi oluyor.
Rust ogrenmeye basladigimda modul yapisi nasil calisiyor, kodu farkli dosya ve dizinlere nasil boluyoruz anlamakda biraz zorlanmistim. Tam olarak nasil calisiyor ogrendikten sonra da bu blog yazisini hazirladim. Umarim faydali bir yazi olmustur.
Crate Crate diger dillerdeki paket veya kutuphane karsilik gelen sey. Crateler duruma gore kutuphane veya executable dosya olusturmaya yariyor.</description>
    </item>
    
    <item>
      <title>Go&#39;da panic - recover</title>
      <link>https://mesuutt.com/2019/12/go-panic-recover/</link>
      <pubDate>Sat, 28 Dec 2019 13:50:25 +0300</pubDate>
      
      <guid>https://mesuutt.com/2019/12/go-panic-recover/</guid>
      <description>Her goroutine icerisinde olusacak panic&amp;rsquo;leri yakalayabilmesi icin kendi recover()&amp;lsquo;i olmasi gerekmektedir. Goroutine&amp;rsquo;in disinda olan bir recover() goroutine icerisinde olusucak panicleri yakalayamaz. Yakalanmayan her panic uygulamanin crash olmasina sebep olur.  Asagidaki ornegi incelediginizde main fonksiyonu icerisine panic&amp;rsquo;leri recover etmek icin defer myRecover() eklenmis lakin Go Playground uzerinden calistirdiginizda uygulamanin crash oldugunu goreceksiniz.
package main import ( &amp;quot;fmt&amp;quot; &amp;quot;time&amp;quot; ) func myRecover() { if r := recover(); r != nil { fmt.</description>
    </item>
    
    <item>
      <title>Django select_for_update</title>
      <link>https://mesuutt.com/2019/05/django-select-for-update/</link>
      <pubDate>Sun, 05 May 2019 22:59:25 +0300</pubDate>
      
      <guid>https://mesuutt.com/2019/05/django-select-for-update/</guid>
      <description>select_for_update queryset&amp;rsquo;de donen rowlar uzerinde ayni anda birden fazla update/delete querysi calismasini engeller.
Asagidaki kodu inceledigimizde ayni anda ayni bayi(Dealer)&amp;lsquo;in bakiyesi guncellenmesini engelliyoruz. Bu acilan DB transactioni bitene kadar ikinci request Dealer&amp;lsquo;in cekildigi satirda bekler.
@transaction.atomic def post(self, request, **kwargs): d = Dealer.objects.select_for_update().get(pk=self.kwargs[&#39;pk&#39;]) d.balance -= 100 d.save() ...  select_for_update kullanmadigimiz durumda ayni anda ayni bayi icin bu query calistiginda(bayinin bakiyesinin 1000 oldugunu varsayarsak) ayni anda calistiklari icin islem sonucunda bakiye 800 kalmasi gerekirken 900 kalacaktir.</description>
    </item>
    
    <item>
      <title>Django Coalesce ile sorgularda default value</title>
      <link>https://mesuutt.com/2019/02/django-coalesce-kullanimi/</link>
      <pubDate>Fri, 01 Feb 2019 22:59:25 +0300</pubDate>
      
      <guid>https://mesuutt.com/2019/02/django-coalesce-kullanimi/</guid>
      <description>Annotation ve aggregation yaparken calistirilan sorgu sonucunda DB&amp;rsquo;den herhangi bir kayit donmez ise sonuc olarak None doner. Biz bu donen degeri uzerinde sayisal bir islem yapmak istedigimizda hata aliriz.
total_price = Product.objects.filter(category_id=1).aggregate( total_price=Sum(&#39;price&#39;) )[&#39;total_price&#39;] mytotal += total_price // TypeError: unsupported operand type(s) for +: &#39;int&#39; and &#39;NoneType&#39;  Sorgudan deger donmedigi durumda None yerine 0 donmesini istersek Coalesce kullanabiliriz.
from django.db.models.functions import Coalesce total = Product.objects.filter(category_id=1).aggregate( total_price=Coalesce(Sum(&#39;price&#39;), 0) )[&#39;total_price&#39;]  Mesela iki fieldi F ile toplama yapiyorsak ve fieldin birinin sonucu None donerse toplama da yapamaz.</description>
    </item>
    
    <item>
      <title>Django annotation ve aggregation</title>
      <link>https://mesuutt.com/2018/09/django-annotate-aggregate/</link>
      <pubDate>Thu, 20 Sep 2018 22:59:25 +0300</pubDate>
      
      <guid>https://mesuutt.com/2018/09/django-annotate-aggregate/</guid>
      <description>Django&amp;rsquo;da annotate ve aggregate kullanarak, veritabanı tablosundaki satırların toplamı, ortalaması gibi, birden çok satırdan veya ilgili diğer tablolardaki değerler üzerinden database seviyesinde hesaplama yapıp tek sorguda sonucu alabiliriz.
Aşağıdaki gibi Flat ve FlatDebit adında iki modelimiz olduğunu varsayalım. Yazıyı bu modeller üzerinden örnekler vererek anlatmaya çalışacağım.
class Flat(models.Model): name = models.CharField(max_length=30) class FlatDebit(models.Model): flat = models.ForeignKey(&#39;myapp.Flat&#39;, related_name=&#39;flat_debits&#39;) amount = models.DecimalField(decimal_places=2, max_digits=9)  Aggregation Aggregate result olarak tek satır veri döndürür.</description>
    </item>
    
    <item>
      <title>Django&#39;da select_related ve prefetch_related kullanımı</title>
      <link>https://mesuutt.com/2018/08/django-select-related-ve-prefetch-related-kullanimi/</link>
      <pubDate>Fri, 31 Aug 2018 14:59:25 +0300</pubDate>
      
      <guid>https://mesuutt.com/2018/08/django-select-related-ve-prefetch-related-kullanimi/</guid>
      <description>Bir proje geliştirirken dikkat ettiğimiz konulardan birtanesi de kuşkusuz sistemin olabildiğince performanslı çalışmasını sağlamaktır.
Performansı artırmanın birden fazla yöntemi olduğu gibi bir yöntemi de ihtiyacımız olan veriyi DB&amp;rsquo;den olabildiğince az sorgu ile çekmektir. [1]
Şu şekilde modellerimiz olduğunu varsayalım.
class Category(models.Model): name = models.CharField(max_length=30) class Product(models.Model): name = models.CharField(max_length=100) category = models.ForeignKey(Category, related_name=&#39;products&#39;)  Şimdi ise bu modeller üzerinden hangi kod nekadar db sorgusu attığını ve nasıl daha optimize edebiliriz göstermeye çalışacağım.</description>
    </item>
    
    <item>
      <title>Celery notları</title>
      <link>https://mesuutt.com/2018/07/celery-notlari/</link>
      <pubDate>Fri, 20 Jul 2018 22:59:25 +0300</pubDate>
      
      <guid>https://mesuutt.com/2018/07/celery-notlari/</guid>
      <description>task_acks_late  Suan çalışan bir task varken herhangi bir sebepten ötürü(restart vs) celery worker kapanırsa ne olacak?
 Celery&amp;rsquo;de default olarak bir task işleme alındığı anda kuyruktan çıkartılır. Eğer task bitmeden celery worker kapanırsa task kuyruktan çıkartıldığı için worker tekrar çalıştırıldığında task tekrardan işleme alınmayacaktır.
Celery workerlarda çalışan kod worker restartlanmadığı sürece değişmez. Bu yüzden her deployment yaptığımızda celery workerları kapatıp açmamız gerekir. Fakat deployment yaptığımız anda çalışan bir task varsa celery workeri kapattığımız an task yarıda kalacaktır ve celery workeri tekrar başlattığımızda task tekrar işleme alınmayacaktır çünkü yukarıda da belirttiğim gibi default olarak celery taskı işleme aldığı an kuyruktan çıkartır.</description>
    </item>
    
    <item>
      <title>Django best practiceler</title>
      <link>https://mesuutt.com/2018/05/django-best-practices/</link>
      <pubDate>Sat, 19 May 2018 00:00:00 +0000</pubDate>
      
      <guid>https://mesuutt.com/2018/05/django-best-practices/</guid>
      <description>Configler  Django environ kullanılmalı. Her ortam için ayrı requirements dosyası olmalı(prod, staging, dev) Her ortam için ayrı settings dosyası olmalı.  Modeller  Birtane BaseModel yapıp, bütün modelleri bu modelden extend etmek lazım. Bu sayede butun modelleri etkileyecek bir degisiklik yapmak istedigimizde sadece olusturdugumuz base modelde degisiklik yapmamiz yeterli olacaktir. Mesela butun objelerimizin olusturulma ve en son update edilme tarihlerini tutmak istiyoruz. Bunun icin butun modellere field eklemek yerine sadece base modele gerekli fieldlari eklememiz yeterli olacaktir.</description>
    </item>
    
    <item>
      <title>PgBouncer kullanımı</title>
      <link>https://mesuutt.com/2018/03/pgbouncer/</link>
      <pubDate>Sun, 18 Mar 2018 11:43:17 +0300</pubDate>
      
      <guid>https://mesuutt.com/2018/03/pgbouncer/</guid>
      <description>Connection Pooling Nedir? Connection Pooling kısaca DB bağlantılarını cacheleyip, gelen yeni bağlantılarda varolan DB bağlantısını kullananmaktır diyebiliriz. Bu sayede her seferinde yeni bir bağlantı açmaktan ötürü doğan zaman ve memory kaybınını azaltabiliriz.
Normal bir web uygulamasında kullanıcı sisteme bir istek gönderdiğinde bir DB connection açılır ve response kullanıcıya gönderilene kadar DB connection açık kalır. Eğer DBnin connection limitinin 100 olduğunu varsayarsak anlık aynı anda sadece 100 kullanıcı DB connection kurabilir.</description>
    </item>
    
    <item>
      <title>Django data migrationlar</title>
      <link>https://mesuutt.com/2017/09/django-custom-migrationlar/</link>
      <pubDate>Sat, 09 Sep 2017 14:59:25 +0300</pubDate>
      
      <guid>https://mesuutt.com/2017/09/django-custom-migrationlar/</guid>
      <description>Django migrationlar Django&amp;rsquo;nun beni kendine hayran bırakan özelliklerinden biri olduğunu çok rahat söyleyebilirim. Bir satır bile SQL yazmadan database tablolarında değişikliklik yapabiliyorum. Henüz DB migrationlarını Django kadar zahmetsiz ve temiz yöneten herhangi bir dille yazılmış bir framework göremedim. Cansın Django :)
Bazı zamanlar oluyorki modellerde yaptığımız değişikliklerden ötürü bir migration oluşturduğumuzda bu migrationa yeni eklemeler yapmamız veyada bu migrationdan ötürü eski data üzerinde işlemler yapmamız gerekebiliyor.
Şimdi örnek bir senaryo üzerinden custom migration nasıl yazılır ondan bahsetmeye çalışacağım.</description>
    </item>
    
    <item>
      <title>Python&#39;da pdb ile debugging</title>
      <link>https://mesuutt.com/2017/03/python-pdb-ile-debugging/</link>
      <pubDate>Sat, 18 Mar 2017 10:13:48 +0300</pubDate>
      
      <guid>https://mesuutt.com/2017/03/python-pdb-ile-debugging/</guid>
      <description>Yazdigimiz kodun beklenenden farkli bir davranis sergilediginde kodun nasil calistigini incelemek istedigimizde kuskusuz debuggerlar en cok isimize yarayan aractirlardir.
Bu yazimda Python ile yazdigimiz kodlari pdb ile nasil debug edebilecegimizi ve pdb komutlarindan bahsedecegim.
Python standart kutuphanesiyle beraber pdb debuggeri kurulu gelir. Debug etmek istediginiz satira import pdb; pdb.set_trace() ile breakpoint koyup kodu calistirdigimizda o satira geldiginde interaktif bir shell acilir ve bu shellden kodumuzu debug edebiliriz.
ipdb ipdb pdb&amp;rsquo;nin sundugu butun ozelliklere ek olarak IPython&amp;rsquo;un sundugu kod tamamlama, kod renklendirme, magic fonksiyonlar gibi bircok ek ozellik sunar.</description>
    </item>
    
    <item>
      <title>Django Migrationlar ve Takım Çalışması</title>
      <link>https://mesuutt.com/2017/02/django-migrationlar/</link>
      <pubDate>Sat, 18 Feb 2017 11:43:17 +0300</pubDate>
      
      <guid>https://mesuutt.com/2017/02/django-migrationlar/</guid>
      <description>Bir proje uzerinde calisan birden fazla kisi oldugunda takim uyelerinin olusturdugu migrationlarinin cakismasi kacinilmaz olabiliyor. Bu yazimda bu problemi ve nasil cozdugumuzu dilim dondugunce anlatmaya calisacagim.
Mesela Erdem arkadasimla ayni proje uzerinde calisiyoruz. Erdem calistigi branch&amp;rsquo;de Profile isimli bir model olusturdu, daha sonra migration dosyasini olusturdu(migration dosyasinin isminin 0011 oldugunu varsayalim) ve developa(ortak branch) merge etti diyelim. Sonrada ben Erdem&amp;rsquo;in develop brancindeki degisiklikleri kendi branchime merge edip, Profile modeline yeni bir field ekledim diyelim.</description>
    </item>
    
    <item>
      <title>Django ve browser cache invalidation</title>
      <link>https://mesuutt.com/2016/12/django-ve-browser-cache-invalidation/</link>
      <pubDate>Sun, 25 Dec 2016 17:09:35 +0300</pubDate>
      
      <guid>https://mesuutt.com/2016/12/django-ve-browser-cache-invalidation/</guid>
      <description>Onceki yazimda HTTP caching mekanizmasinin nasil calistigindan birazcik deginmistim. Bu yazimda ise asagidaki sorunu nasil cozdugumu anlatmaya calisacagim.
 Hem statik dosyalarimizin client-side&amp;rsquo;da en uzun sure cachelenebilmesini, hemde statik dosyalarimizda degisiklik olunca clientlarin dosyanin yeni veriyonunu indirmelerini nasil saglayabiliriz?
 Ben bu sorunun cevabini Django uzerinden anlatacagim ama siz hangi programlama dili/framework kullaniyorsaniz onda da ayni sekil yapabilirsiniz.
Sunucumuzda style.css adinda bir css dosyamiz oldugu varsayalim. Biz bu dosyanin kullanicinin tarayicisinin cachinde maximum sure durmasini, dosyamizin degismesi durumunda da tarayicinin dosyamizin yeni versiyonunu indirmesini ve kullanmasini su sekilde sagalayabiliriz:</description>
    </item>
    
    <item>
      <title>HTTP cachleme mekanizması nasıl çalışır</title>
      <link>https://mesuutt.com/2016/12/http-cacheleme-mekanizmasi-nasil-calisir/</link>
      <pubDate>Sun, 18 Dec 2016 12:13:38 +0200</pubDate>
      
      <guid>https://mesuutt.com/2016/12/http-cacheleme-mekanizmasi-nasil-calisir/</guid>
      <description>Bir websitesi gelistirirken en cok onem verdigimiz seylerden bir taneside performans. Bunun icin web sayfalarimiza yapilan her istekte yuklenen resim, css ve js dosyalarida dahil olmak uzere sunucudan clienta gelen butun cevaplarin olabildigince uzun sure cachelenmesini istiyoruz.
BU yazimda sizlerle HTTP cacheleme mekanizmasi nasil calistigindan biraz bahsedecegim daha sonrada browserlarin websitemizi daha uzun sure cachelemesini saglayip, statik dosyalarimiz degistiginde de yeni versiyonu indirmelerini nasil saglayabiliriz ondan bahsedecegim.
HTTP cacheleme mekanizmasi nasil calisir?</description>
    </item>
    
    <item>
      <title>Sistem Saatini İnternetten Güncelleme</title>
      <link>https://mesuutt.com/2016/11/linux-ta-npt-ile-saati-internetten-guncelleme/</link>
      <pubDate>Sat, 26 Nov 2016 22:28:55 +0200</pubDate>
      
      <guid>https://mesuutt.com/2016/11/linux-ta-npt-ile-saati-internetten-guncelleme/</guid>
      <description>Laptopumun bios pili bitince bilgisayari her kapatip acmamda saat geride kaliyordu. Sistem saatini her defasinda date komutuyla guncellemekde baya zahmetli bir is. Terminali acicaksinda, root olucaksinda, telefonu cebinden cikarip saate bakip date komutuyla saati guncelleyeceksin. Yazarken bile yoruldum.
Bilgisayarin saatini internetten guncellemek bir laptobun bios pilini degistirmekten cok daha kolay. Tek dez avantaji var oda bilgisayar internete baglanmadigi surece saat guncellenmez. Nezamanki makina internete baglandi ozaman saat guncellenir.
Ilk is ntp paketini kurmak.</description>
    </item>
    
    <item>
      <title>Docker ile Örnek Django Uygulaması</title>
      <link>https://mesuutt.com/2016/07/docker-nginx-ve-django-ile-ornek-uygulama/</link>
      <pubDate>Thu, 21 Jul 2016 03:14:15 +0300</pubDate>
      
      <guid>https://mesuutt.com/2016/07/docker-nginx-ve-django-ile-ornek-uygulama/</guid>
      <description>Bu yazimda sizlerle docker ile ayni fiziksel makina uzerinde calisan bir django uygulamasi alt yapisi nasil hazirlanir onu paylasacagim. Bu alt yapi ile birlikte gerektiginde sisteme ilave uzerinde django uygulamamizin calistigi containerlar ekleyip sitemizin performansini {artira/koruya}bilecegiz.
Sistemin yapisi su sekilde olacak:
 Nginx gelen trafigi django containerlar arasinda dagitacak. Nginx olusturulan mystatic isimli volume uzerinden static dosyalari sunacak. Django containerlar DB containeri ile haberlesecek. Django containerlar mystatic isimli volume uzerindeki dizinlere erisebilecek.</description>
    </item>
    
    <item>
      <title>git rebase --interactive</title>
      <link>https://mesuutt.com/2016/07/git-rebase-interactive/</link>
      <pubDate>Wed, 06 Jul 2016 06:29:46 +0300</pubDate>
      
      <guid>https://mesuutt.com/2016/07/git-rebase-interactive/</guid>
      <description>Git&amp;rsquo;in guzel ozelliklerinden biride git rebase. Bu yazimda sizlere interactif rebase&amp;rsquo;den bahsedecegim(git rebase --interactive).
Peki ne yapabiliyoruz bu interaktif rebase ile:
Interaktif rebase ile; deponun commit historysinde(gecmisinde) degisiklik yapabilir, commitleri birlestirebilir, commitleri silebilir veya commitlerin sirasini degistirebilirsiniz.
Not: Eger commitleri depoya push ettiyseniz ve depo uzerinde sizden baskalarida calisiyorsa commit history uzerinde degisiklik yapmak hicde iyi olmayacaktir.
Simdi interaktif rebase ile neler yapabilecegimiz hakkinda biraz daha detayli sekilde anlatayim.</description>
    </item>
    
    <item>
      <title>Sublime Text Kısayolları</title>
      <link>https://mesuutt.com/2014/03/sublime-text-kisayollar/</link>
      <pubDate>Sat, 08 Mar 2014 04:53:17 +0300</pubDate>
      
      <guid>https://mesuutt.com/2014/03/sublime-text-kisayollar/</guid>
      <description>Hızlı yazılım geliştirmeyi etkileyen en önemli unsurlardan bir tanesi de kullandığımız editörun bize sunduğu kisayollar.
Sublime fuzzy search ile dosyalar arasi hizli gecis saglamasi, kisa yollari, az kaynak tuketmesi ve hızlı olmasıyla benim bir numarali tercihim.
Sublime açık kaynak bir yazılım değil malesef. Acık kaynak alternatifini yazmislar ama daha denemek nasip olmadi. Eger denediyseniz deneyimlerinizi bizlede paylasirsaniz sevinirim.
Sublime&amp;rsquo;ı ilk kullanmaya başladığım zamanlarda github üzerinde bir gist buldum ve hoşuma gidince forklamıştım ve üzerine birazda ben ekleme yapmıştım.</description>
    </item>
    
    <item>
      <title>Git İpuçları</title>
      <link>https://mesuutt.com/2013/07/git-ipuclari/</link>
      <pubDate>Tue, 02 Jul 2013 04:36:45 +0300</pubDate>
      
      <guid>https://mesuutt.com/2013/07/git-ipuclari/</guid>
      <description>6 ay kadar çalıştığım Butigo&amp;lsquo;da en iyi öğrendiğim şey git kullanımı olduğunu söyleyebilirim. git&amp;rsquo;i yeni yeni öğrenmeye başladığım zamanlarda git-cola kullanıyordum. Git&amp;rsquo;in inceliklerini bilmediğim için SVN&amp;lsquo;den fazla bir farkı yoktu benim için. Butigo&amp;rsquo;da çalışmaya başladıktan sonra git&amp;rsquo;i her zaman konsoldan kullanmaya başladım, inceliklerini öğrendikçe git&amp;rsquo;in bir developer için vazgeçilmez bir nimet olduğunu gördüm.
Uzun zamandır yeni yazı yazmadığım bloğumda paylaşırım diye git hakkında not tutuyordum. Biraz boş zamanım varken aldığım notları paylaşayım dedim.</description>
    </item>
    
    <item>
      <title>Kullanışlı linux komutları</title>
      <link>https://mesuutt.com/2013/04/kullanisli-linux-komutlari/</link>
      <pubDate>Wed, 03 Apr 2013 05:07:05 +0300</pubDate>
      
      <guid>https://mesuutt.com/2013/04/kullanisli-linux-komutlari/</guid>
      <description>Linux&amp;rsquo;un en güçlü yanlarından biri komut satırıdır. Linux da çoğu işlem görsel arayüzden yapılabilir fakat komut satırından yapmak herzaman daha iyidir hemde zevklidir. Komut satırına bir alıştınızmı emin olun daha bırakamazsınız, aşırı derecede bağımlılık yapar :) Zengin komut parametreleri, pipe ve çıktı yönlendirmeleriyle konsoldan yapamayacağınız hiçbirşey yoktur. Gui de bu olanaklar sınırlıdır.
Şimdi sizlerle birkaç kullanışlı komut paylaşmak istiyorum.
- En son çalıştırılan komutu kullanmak En son çalıtışrılan komutu tekrardan yazmak veyada düzenlemek yerine !</description>
    </item>
    
    <item>
      <title>Linux ile alakalı takip ettiğim birkaç site</title>
      <link>https://mesuutt.com/2013/01/linux-ile-alakali-birkac-site/</link>
      <pubDate>Wed, 16 Jan 2013 05:28:12 +0300</pubDate>
      
      <guid>https://mesuutt.com/2013/01/linux-ile-alakali-birkac-site/</guid>
      <description>Geçte olsa 2013 yılının ilk yazısıyla sizleri selamlıyorum.
Bu yazımda sizlere linuxcu ruhunuzu genç tutacak birkaç site paylaşmak istiyorum. Bu siteleri takip etmenizi şiddetle öneririm.
En çok beğendiğim güncel haber ve makale yayınlanan bir kaç link :
 hackerne.ws reddit.com/r/linux reddit.com/r/unix reddit.com/r/commandline quora.com/Linux quora.com/System-Administration quora.com/Bash-shell quora.com/Unix-Commands lxer.com commandlinefu.com unix.stackexchange.com  Alttakiler de karışık tips, tricks, news and tutorial bulabileceğiniz linklerden bazıları :
 gezegen.linux.org.tr howtoforge.com cyberciti.biz linuxjournal.com linuxandlife.com linux.com thegeekstuff.com linuxuser.</description>
    </item>
    
    <item>
      <title>Linux&#39;a yeni başlayanlar için ipuçları</title>
      <link>https://mesuutt.com/2012/12/linuxa-yeni-baslayanlar-icin-ipuclari/</link>
      <pubDate>Sun, 30 Dec 2012 05:58:01 +0300</pubDate>
      
      <guid>https://mesuutt.com/2012/12/linuxa-yeni-baslayanlar-icin-ipuclari/</guid>
      <description>Bloğumda birşiler yazmayalı baya uzun zaman olmuş.İş güç derken bir türlü zaman bulamıyor insan. Bazen aklıma güzel bir şey geliyor, &amp;ldquo;Lan bu konu hakkında bloğumda bişiler yazmalıyım&amp;rdquo; diyorum ama sadece o aklıma gelen şeyi zamanım olmadığı için google drive&amp;rsquo;a not alıp bırakıyorum. O bloğumda yazmayı planladığım şeyler baya birikti. Keşke her hafta bir yazı yazabilsem. Umarım o günler uzakta değildir :)
Programcılık hayatıma ilk başladığım günlerde çok sevdiğim bir abim olan Onur Güzel bilgisayarıma Debian lenny kurmuştu.</description>
    </item>
    
    <item>
      <title>Chrome developer tools ipuçları</title>
      <link>https://mesuutt.com/2012/09/chrome-developer-tools-ipuclari/</link>
      <pubDate>Thu, 06 Sep 2012 06:09:20 +0300</pubDate>
      
      <guid>https://mesuutt.com/2012/09/chrome-developer-tools-ipuclari/</guid>
      <description>Her web developer chrome developer tools&amp;rsquo;a en azından bir göz atmıştır.Açık söyleyeyim ben onsuz yapamıyorum :) Şimdi sizlerle işinize yarayacak birkaç ipucu göstermek istiyorum.
Konsol Sekmesi $0,$1,$2&amp;hellip; değişkenleri
$0 Elements sekmesinde seçili olan nesneyi işaret eder.$1 bir önceki seçili olan nesneyi işaret eder.$3, $4 diyede sonsuza kadar gidebilirsiniz :) Bazen üzerinde çalışmak istediğiniz elemanın id veya class&amp;rsquo;ı olmadığında $0 vb ile o nesneye kolaylıkla erişebilirsiniz.
$x değişkeni
XPath selektör. Şuana kadar web projelerimde XPath kullanma ihtiyacı duymadım fakat örneğin crawler yazarken(scrapy ile mesela) XPath kullanıyorsanız önce developer toolsda test edip daha sonra crawler&amp;rsquo;a ekliyebilirsiniz.</description>
    </item>
    
    <item>
      <title>libpq.so.5 bulunamadı hatası ve çözümü</title>
      <link>https://mesuutt.com/2012/07/python-psycopg2-libpqso5-bulunamadi-hatasi/</link>
      <pubDate>Wed, 11 Jul 2012 01:35:43 +0300</pubDate>
      
      <guid>https://mesuutt.com/2012/07/python-psycopg2-libpqso5-bulunamadi-hatasi/</guid>
      <description>Bilindiği üzere python&amp;rsquo;da postgresql ile çalışabilmek için psycopg2 kütüphanesinden yararlanılır.Eğer psycopg2 kütüphanesini kurduğunuz halde ImportError: libpq.so.5: cannot open shared object file: No such file or directory hatası ile karşılaşıyorsanız LD_LIBRARY_PATH environment variableınıza postgresql&amp;rsquo;in libpq.so.5 dosyasının bulunduğu dizini eklemediğinizden kaynaklanıyor olabilir.
LD_LIBRARY_PATH değişkeni echo ederek tuttuğu değeri görebilirsiniz.
$ echo $LD_LIBRARY_PATH  LD_LIBRARY_PATH değişkeni herhangi bir dizin pathi tutuyor olsa bile, tuttuğu dizin libpq.so.5 dosyasının olduğu dizin olmayabilir.Bunu anlamak için libpq.so.5 dosyasının nerede olduğunu bulalım ve bulunduğu dizini LD_LIBRARY_PATH environment variable&amp;rsquo;ına ekleyelim.</description>
    </item>
    
    <item>
      <title>Slackware Google Chrome kurulumu</title>
      <link>https://mesuutt.com/2012/07/slackware-13-37-google-chrome-kurulumu/</link>
      <pubDate>Tue, 03 Jul 2012 01:43:48 +0300</pubDate>
      
      <guid>https://mesuutt.com/2012/07/slackware-13-37-google-chrome-kurulumu/</guid>
      <description>Google&amp;rsquo;da aradim ama Slackware 14 surumunun bile ChangeLog&amp;rsquo;da gorunmeye basladigi gunlerde olmamiza ragmen Slackware 13.37 de google-chrome kurulumunun nasil yapildigini anlatan bir yazi bulamadim, bende google-chrome kurmak isteyen slacker&amp;rsquo;lara yardimi dokunur diyerek Slackware 13.37 surumunde google-chrome&amp;rsquo;un nasil kuruldugunu, cikabilecek hatalar ve cozumlerini elimden geldigince anlatmaya calisacagim.
Ben kurulumu 64 bit bir sistem uzerinde anlatacagim ama eger 32 bit bir sistem kullaniyorsanizda rahat olun kurulum pek farkli degil :)
Oncelikle www.google.com/chrome adresinden 32 bit veya 64 bit .</description>
    </item>
    
    <item>
      <title>Linux Samba Server Kurulumu</title>
      <link>https://mesuutt.com/2012/04/linux-samba-server-kurulumu-ve-konfigurasyonu/</link>
      <pubDate>Sun, 15 Apr 2012 01:51:51 +0300</pubDate>
      
      <guid>https://mesuutt.com/2012/04/linux-samba-server-kurulumu-ve-konfigurasyonu/</guid>
      <description>Samba linux üzerinde dosya paylaşımı yapmamızı sağlar.Samba ile istediğiniz dizinleri paylaşabilir,parola korumalı paylaşımlar yapabilirsiniz.Ben bu yazımda en basit şekliyle samba yapılandırması nasıl olur onu anlatmaya çalışacağım.Ben slackware üzerinde Samba 3.5.10 kurulumu yapacağım ama bilindiği gibi bütün linux dağıtımlarında yapılandırma neredeyse aynıdır(versiyon farklılıkları olabilir). Sadece kurulumda küçük farklılıklar olabilir oda sizin ellerinizden öper :)
Not: Kurulum yapabilmek için önce root olmanız gerekmektedir.
İlk önce slackware&amp;rsquo;in in deposunda samba yı indiriyoruz.
$ wget http://slackware.</description>
    </item>
    
    <item>
      <title>Linux sshfs kullanımı</title>
      <link>https://mesuutt.com/2012/02/linux-sshfs-kurulum-ve-kullanim/</link>
      <pubDate>Tue, 14 Feb 2012 02:02:53 +0300</pubDate>
      
      <guid>https://mesuutt.com/2012/02/linux-sshfs-kurulum-ve-kullanim/</guid>
      <description>&lt;p&gt;Sshfs(Secure SHell FileSystem) ssh üzerinden uzak bir pc(local ağda veya dünyanın herhangi bir yerinde olan herhangi bir pc) deki dizinleri local makinanıza bağlayarak sanki harddiskinizin bir bölümüne(partition) bağlanır gibi kolaylıkla bağlanmanıza ve kolaylıkla işlemler yapmanıza olanak sağlar. Örnek vermek gerekirse :
Bir web programcısıysanız ve uzak bir pc üzerinden yayın yapıyorsanız Filezilla vb gibi ftp client programlarıyla FTP server a bağlanıp doysa trasnferi yapmışınızdır.Dosya alışverişi yaparken insan biraz da olsa bunalabiliyor çünkü ftp bize normal dizinlerde gezer gibi kolay bir şekilde gezebilmemizi sağlayamıyor,arada bir bağlantı zaman aşımından kapanabiliyor vb. İşte tam burda sshfs ile uzak pc nizdeki dizinlerinizi local pc nize bağlayarak hiç ftp ile ugraşmadan bütün işlemlerinizi&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>linux ssh portu degistirme</title>
      <link>https://mesuutt.com/2012/02/linux-ssh-portu-degistirme/</link>
      <pubDate>Wed, 01 Feb 2012 02:16:13 +0300</pubDate>
      
      <guid>https://mesuutt.com/2012/02/linux-ssh-portu-degistirme/</guid>
      <description>Ssh güvenliğini birkaç yöntem ile sağlamlaştırabilirsiniz.Bunlardan biride default portu değiştirmektir.Ssh portunu değiştirmek dışarıdan gelebilecek saldırıları azaltır çünkü ssh&amp;rsquo;dan girmeye çalışan bir kişi ilk olarak ssh&amp;rsquo;ın default poru olan 22 nolu portu deneyecektir.
Ssh&amp;rsquo;ın portunu değiştirmek için /etc/ssh/sshd_config dosyasınını açıp port 22 yazan yere istediğimiz bir port yazıp ssh&amp;rsquo;ı restartlamanız yeterli. Ssh dan giriş yaparken ise:
$ ssh kullaniciadi@uzak_pc -p &amp;lt;yeni-port&amp;gt;  Örnek vermek gerekirse:
$ ssh mesuutt@mesuutt.com -p 3131  </description>
    </item>
    
    <item>
      <title>HDD/Partition yedekleme &amp; geri yükleme</title>
      <link>https://mesuutt.com/2012/01/linux-dd-komutu-kullanimi/</link>
      <pubDate>Tue, 31 Jan 2012 10:00:23 +0300</pubDate>
      
      <guid>https://mesuutt.com/2012/01/linux-dd-komutu-kullanimi/</guid>
      <description>Çeşitli nedenlerden dolayı (yedek, harddisk kopyalama vb) harddiskinizin tamamımı veya hardiskin bir bölümünü yedeklemek isteyebilirsiniz. Linux da harddiskin tamamını veya istediğiniz herhangi bir partition(bölümü) yedeklemek için programlar bulabilirsiniz.Bunlardan biride kullanışını anlaşılır ve kolay bulduğum dd programıdır ve bildiğim kadarıyla bütün linux dağıtımlarıyla birlikte otomatik olarak gelir.Yedekleme yaparken hangi bölümü nereye ne şekilde yedeklediğnize dikkat etmeniz gerekmektedir. İki farklı yedekleme şekli vardır. Dosya olarak yedekleme ve direk yedekleme (bir nevi kopyalama olarak düşünebilrisiniz).</description>
    </item>
    
    <item>
      <title>Sistem açılışında komut çalıştırma</title>
      <link>https://mesuutt.com/2012/01/linux-sistem-acilisinda-komut-calistirma/</link>
      <pubDate>Tue, 31 Jan 2012 03:38:27 +0300</pubDate>
      
      <guid>https://mesuutt.com/2012/01/linux-sistem-acilisinda-komut-calistirma/</guid>
      <description>Linux da sistem açılırken script çalıştırmak için /etc/rc.local dosyası kullanılır.Bu dosyaya eklenen her komut sistem açılışında root kullanıcısıyla otomatik olarak çalışır.
Örnek vermek gerekirse : Mesela postgresql database yedeği alan bir script yazdınız ve bu scripti bilgisayar her açıldığında çalıştırmak istiyorsunuz, işte ozaman scriptinizi çalıştıran kodu /etc/rc.local dosyasına ekliyorsunuz ve herşey halloluyor :) Scriptimizin /home/mesuutt/backuper.sh olduğunu varsayarsak eger /etc/rc.local dosyasına aşağıdaki kodu eklemeniz yeterli olacaktir.
$ echo &#39;/home/mesuutt/./backuper.sh&#39; &amp;gt;&amp;gt; /etc/rc.local  Eger scriptinizi root olarak değilde başka bir kullanıcı(ör: postgres) ile çalıştırmak isterseniz:</description>
    </item>
    
    <item>
      <title>Parolasız ssh bağlantısı</title>
      <link>https://mesuutt.com/2012/01/linux-guvenli-ssh-baglantisi/</link>
      <pubDate>Sun, 15 Jan 2012 03:45:39 +0300</pubDate>
      
      <guid>https://mesuutt.com/2012/01/linux-guvenli-ssh-baglantisi/</guid>
      <description>Eger paronayak biriyseniz parolalarınızı özel karakterler kullanarak, her hesap için farklı parolalar kullanarak o hesapları güvenli hale getirmeye çalışırsınız ama her seferinde bu parolaları hatırlamak ve yazmak zorunda kalırsınız ve birde bu işi sık sık yapıyorsanız uzun parolalar ölüm gelmeye başlar. Şimdi ssh ile uzak bilgisayarınıza parola gerekmeden nasıl bağlanabilirsiniz onu görelim :)
SSH bağlantılarında ya bağlantı için ya bir kullanıcı ve parola gerekir yada parola yerine asimetrik anahtar çiftleri kullanılabilir.</description>
    </item>
    
  </channel>
</rss>