23 Ekim 2013 Çarşamba

Bootstrap'a Giriş

Bootstrap, hızlı ve daha kolay web uygulaması ya da sitesi geliştirmek için çokça tercih edilen bir frameworktür. 
"Mark Otto" ve "Jacob Thornton" tarafından oluşturulmuş ve hala sürdürülüyor. Twitter, Bootstrap'ı  Apache 2 ile lisanslayarak açık kaynak yapmış.

İndirmek için 3 seçenek:

1. git clone git://github.com/twbs/bootstrap.git
2. bower install bootstrap
3. son sürüm için tıklayın.

İçerik:

bootstrap/
├── css/
│   ├── bootstrap.css
│   ├── bootstrap.min.css
│   ├── bootstrap-theme.css
│   └── bootstrap-theme.min.css
├── js/
│   ├── bootstrap.js
│   └── bootstrap.min.js
└── fonts/
    ├── glyphicons-halflings-regular.eot
    ├── glyphicons-halflings-regular.svg
    ├── glyphicons-halflings-regular.ttf
    └── glyphicons-halflings-regular.woff
 

Bu dosyalardan yararlanabilmek için oluşturmak istediğimiz HTML sayfasını bootstrap klasörünün içine taşımalıyız. 

Şimdik basit bir giriş sayfası tasarlayalım. 
Önce DOCTYPE'ı tanıtalım, html taglarımızı yazalım ve bootstrap'ı kullanabilmek için yolunu ekleyelim.


Head kısmına sayfa başlığını da ekleyelim.
    <title>Hello Bootstrap</title

Body kısmında bir form oluşturalım.  "well" sınıfı Bootstrap'ın içerisinde yer alıyor.
Sonra kullanıcı adı ve parolası etiketlerini oluşturuyoruz. Altına bir text alanı oluşturuyoruz. Son olarak da giriş butonu ekliyoruz. Burada "span3" text kutusunun 3 birim olacağını anlatıyor, "placeholder" ise text kutusunun içine kısa bir açıklama için kullanılabilir.
  
    <form class="well">
     <label>Username:</label>
     <br />
     <input type="text" class="span3" placeholder="Username" />
     <br />
     <label>Password:</label>
     <br />
     <input type="text" class="span3" placeholder="Password">
     <br />
     <br />
     <button class="btn btn-primary">Login</button>
     </form>

Son olarak sayfamız:



Bir de listeleri kullanalım.

<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="content-type" content="text/html;charset=utf-8" />
    <title>Hello Bootstrap</title>
    <link type="text/css" rel="stylesheet" href="css/bootstrap.css">
  </head>


  <body>
  <ul class="nav nav-list">
   <li><a href="#"> Home</a></li>
   <li><a href="#"> Profil</a></li>
   <li><a href="#"> Message</a></li>
   <li><a href="#"> Log Out</a></li>
  </ul>
  <script src="js/bootstrap.js"></script>
  </body>
</html>


Son olarak da ızgaralar ile küçük bir uygulama yapalım.

<!DOCTYPE html>
<html>
<head>
    <title>Hello Bootstrap</title>
    <link href="css/bootstrap.min.css" rel="stylesheet" />

    <style>
    .row > div {
        background-color: #dedef8;
        box-shadow: inset 1px -1px 1px #444, inset -1px 1px 1px #444;
    }
    </style>

</head>
<body>
    <div class="container">

        <h1>Hello Bootstrap</h1>

        <div class="row">

            <div class="col-md-3">
                <p>Part 1</p>
            </div>

            <div class="col-md-9">

                <div class="row">
                    <div class="col-md-6">
                        <p>Part 2</p>
                    </div>
                    <div class="col-md-6">
                        <p>Part 3</p>
                    </div>
                </div>

                <div class="row">
                    <div class="col-md-6">
                        <p>Part 4</p>
                    </div>
                    <div class="col-md-6">
                        <p>Part 5</p>
                    </div>
                </div>

            </div>

        </div>

    </div>
</body>
</html>
 
Burada farklı olarak style tagları içinde satırların özelliklerini yazdık.Daha sonra <div> tagları ile ızgaraları istediğimiz şekilde ekleyebiliriz. Çıktımız da aşağıdaki gibi olmalı.

 
 
 

20 Ekim 2013 Pazar

Qmail Hakkında


Merhabalar, bu yazımda sizlere Qmail'i tanıtmak istedim. Qmail Kitabı'nı bayramda okumaya başladım ancak yapılandırma kısmı bitmedi. Tam bitirdikten sonra ayrıntısıyla  kurulum ve yapılandırmasını da yazacağım.

E-posta servisinin sunucu-istemci mimarisinde çalışmasını sağlayan MTA, MUA, LDA gibi programlar vardır.

MTU(Mail User Agent): Kullanıcının bir e-posta sunucusu kullanarak e-posta alıp, göndermesini sağlayan yazılımlardır. Thunderbird, Outlook vs. e-posta istemcisidir.

MTA(Mail Transfer Agent): SMTP(Simple MaiI Transfer Protocol) kullanarak aldığı e-postayı diğerine ileten ya da  iletilen e-postayı teslim alan yazılımlardır. Qmail, Sendmail, Postfix örnek verilebilir.

LDA(Local Delivery Agent): Hedef e-posta adresi yerelde tanımlı olduğunda, LDA gelen e-postayı sistemde ilgili yere yazar.

Qmail, Dan Bernstein (D.J.B.) tarafından Sendmail'in yerine başka bir MTA kullanılsın diye Sendmail'deki güvenlik açıkları nedeni ile yazılmıştır. 

Yazarı güvenlik açığı bulan ilk kişiye 500$ ödül vereceğini söylemiş. Bildirisine buradan ulaşabilirsiniz. Henüz ödülü kazanan birileri çıkmamış.

Qmail; E-posta alma, gönderme, SMTP servisini çalıştırma gibi işler için ayrı programlar çalışmaktadır. Sendmail'de ise bu işi yapan tek bir program bulunmaktadır. Karmaşık ve uzun kodlarda hata olma olasılığı fazladır ve okunabilirliği zordur. Bu da Qmail'in güvenli ve basit olduğunu gösterir. 

Qmail Lisansı: Kodları istediğiniz şekilde kullanabilir ancak değişiklik yaptığınızda izinsiz dağıtamazsınız. 

Qmail'i altyapısında kullanan bazı e-posta sunucuları:

Yahoo! Mail
Mynet Mail
Superonline
Gmail
Network Solutions
PayPal/Confinity...





6 Ekim 2013 Pazar

Python-Haproxy-Tools ve Hapra(Haproxy Restful Api) Nedir?

Merhabalar,

Bu yazımda staj boyunca Kaan ile üzerinde çalıştığımız 2 projenin ne iş yaptığından bahsedeceğim.


İlk projemiz Python-Haproxy-Tools. Haproxy'nin yapılandırma dosyası için Python kullanarak yazdığımız bir yönetim kütüphanesi. Yapılandırma dosyasında değişiklikler yapabileceğimiz fonksiyonlardan oluşuyor. Böylece yapılandırma dosyasını her seferinde açıp ayarlamak yapmak yerine fonksiyonları kullanarak bu işi daha rahat yapabiliyoruz. Yapılan değişiklik sonucunda yapılandırma dosyası çalışır halde mi bunu da kontrol edebiliyoruz. 

Bu süreçte Python ile nesneye yönelik programlamayı, Haproxy'nin özelliklerini ve yapılandırma dosyasının  ne olduğunu ne işe yapadığını öğrendim.

İkinci projemiz Hapra ise bu kütüphane için yazılmış bir web api. Restful desteği olduğu ve framework'un yapısıyla ayrıca uğraşmak istemediğimiz için Flask diye bir microframework kullandık. Hapra sayesinde web api üzerinden de yapılandırma dosyası ayarı yapabiliyoruz. Çıktılarını da Json formatında yaptık nedeni ise, çıktısı tek türde olsun ki dileyen telefon, tablet vs. için de uygulama yazarsa rahatça  uyarlanabilsin.

Web api ile ilgilenirken de Flask'ı, Json'un nasıl kullanıldığını ve Restful'un özelliklerini  öğrendim.

Ayrıca github kullanımı, hata aratma gibi çalışırken hep lazım olan alışkanlıklar edindim. 

İleride başka projeler de anlatmak dileğiyle, iyi çalışmalar...