10 Kasım 2016 Perşembe

LibreOffice'e Nasıl Katkı Verilir ?

Bu sene son sınıf öğrencisi olarak bitirme projemde LibreOffice'e katkıda bulunacağım. Daha önce süperli bir grup bunun üzerine güzel şeyler yaptılar. Buradan ulaşabilirsiniz.
Bu yazımda LibreOffice'e katkı vermeyi düşünenler için başlangıçta yapmaları gerekenleri anlatacağım.

  • İlk adım olarak Geliştirici listesine üye olmamız gerekiyor.
          Geliştirici Listesi
  • LibreOffice ekibi hata takip sistemi için bugzilla kullanmaktadır. Hataları görebilmek ve hata kaydı girebilmek için bugzilla'ya üye olmamız gerekiyor.
          Bugzilla
  • Bunları yaptıktan sonra artık bilgisayarımıza LibreOffice'in kaynak kodunu indirip, derleme aşamasına geçebiliriz.
        ~Bağımlılıkların Kurulması
          
          $ sudo apt-get build-dep libreoffice

        ~Kaynak Kodun İndirilmesi

          $ git clone git://anongit.freedesktop.org/libreoffice/core libreoffice
       
          $ cd libreoffice

       ~Betik dosyamız hatasız çalışıyor mu ?

           $ ./autogen.sh

        ~Derleme işlemi

          $ make -j(çekirdek_sayisi)
        
    NOT : Derleme işlemi uzun sürüyor, benim bilgisayarımda iki buçuk saat sürdü ama altı, yedi saat süren derlemelerde olabiliyor.
      
       ~Derlemeden sonra Writer'ı ya da Calc'ı çalıştırıp LibreOffice5'in düzgün çalıştıp, çalışmadığına bakalım
          $ instdir/program/soffice --writer
          $ instdir/program/soffice --calc

  • Derleme işlemimizde bittikten sonra ilk kez yama gönderenler için öncelikle bir Feragatname göndermemiz gerekiyor. Bu Feragatname için 
      libreoffice@lists.freedesktop.org adresine :

      Konu :
      <your name> license statement
     
     İçerik :

       " All of my past & future contributions to LibreOffice may be licensed under the     MPLv2/LGPLv3+ dual license."

   olacak şekilde bir mail atmamız gerekiyor.
  • Yamalarımızı Gerrit üzerinden yolluyoruz. Öncelikle üye olmalıyız. 
          Gerrit
  • Gerrit kullanmak için
        $ ./logerrit setup

       Bu komuttan sonra /home/(username)/.ssh/id_rsa.pub olarak oluşan dosyamızı Gerritte Ayarlar(Settings) kısmından SSH Public Keys alanına ekliyoruz.
        
        $ ./logerrit test 
    Bu komut sorunsuz çalışıyor ise Gerrit aracını kullanarak yama gönderebiliriz.

            YAMA GÖNDERİRKEN
      
        $ git checkout -b <newbranchname>
        $ git add <filename>
        $ git commit -m "tdf#<bug_id>"

     ~Burada yama gönderirken yeni bir dal oluşturduk. Değişiklik yaptığımız dosyayı ekledik ve commitlerken bug numarasını da commitimize ekledik.

     ~Son olarak commit'imizi Gerrit'e göndereceğiz

       $ ./logerrit submit master
  • Geliştirici listesine isim eklemek son aşamamız.

**Linux makinelerde derleme yaparken hangi aşamaları izleyeceğimiz şu sayfada ayrıntılı olarak anlatılmış. Buraya bırakıyorum.

**Gerrit aracınında nasıl kullanılacağı şu sayfada ayrıntılı olarak anlatılmış. Onuda buraya bırakıyorum.

Öncelikle öğrenme aşamasında olduğum için bana sonrada size şimdiden kolay gelsin. :))





1 Kasım 2016 Salı

Ubuntu'da DNS Server Kurulumu

Öncelikle DNS(Domain Name Server): Alan adlarının hangi IP adresine bağlı olduğunu öğrenmemize yarayan harikalı bir sistem.

Bugün girdiğimiz bir sitenin, görüntüleneceği IP adresini değiştirerek nasıl müthişli yerlere yönlendirilebileceğimizi açıklayacağım. (Sonu müthişli bitiyor.)

Ben bu uygulamada kendi bilgisayarımı DNS Server olarak kullanıcam, yönlendirmek istediğim adresleri kendi bilgisayarımda yapılandıracağım. Ve Sanal Makineye kurduğum Ubuntu(14.04 LTS)yuda client(istemci) olarak kullanıp, kendi DNS Server'mdaki siteye bağlanmaya çalışacağım. 





Kendi Bilgisayarımda

1.ADIM : DNS Server Kurmak 

# apt-get install bind9 bind9utils rblcheck

Yapılandırma:

# vim /etc/bind/named.conf.default-zones dosyasına 

zone "yazilimyazari.com" IN {
        type master;
        file "/etc/bind/yazilimyazari.zone";
        allow-update { none ; };
};

yazarak kayıt ediyoruz.








       2.ADIM: DNS Server'a Domainleri ve IPlerini Kaydetmek 

# vim yazilimyazari.zone dosyası oluşturuyoruz.

$TTL 86400
@   IN  SOA     ns1.yazilimyazari.com. root.yazilimyazari.com. (
        2016110111 ;Serial  (yil/ay/gün/seriNo yazılmalı)
        3600            ;Refresh
        1800            ;Retry
        604800        ;Expire
        86400         ;Minimum TTL
)

; NS sunucularini belirtiyoruz:
                IN      NS              ns1.yazilimyazari.com.

; NS'lere ait kayitlar. (bu domain ayni zamanda ana zone oldugundan ns1 ve ns2'yi de tanimliyoruz.):
ns1             IN      A               192.168.56.1 ;(Web Server IP'si)

; ve diger tum kayitlar.
@               IN      A               192.168.56.1 ;(Web Server IP'si)
www           IN      CNAME       @




                          3.ADIM : DNS Server'ı Yeniden Başlatmak

$ sudo service bind9 restart

-- DNS Server Kurulumu Bitti ---

4.ADIM :  Web Server Kurulumu Yapmak

**Domainleri localimize yönlendireceksek web server kurulumu yaparız.

Apache ya da nginx kurulumu :)

# apt-get install nginx
#service nginx restart

VEYA

# apt-get install apache2
#/etc/init.d/apache2 restart

-- Web Server Oluşturduk --


Sanal Makinemde

$ sudo vim /etc/resolv.conf dosyasına giderek DNS Server'n adresini yazıyoruz.

nameserver 192.168.56.1

$ sudo vim /etc/dhcp/dhclient.conf
...

#prepend domain-name-servers 127.0.0.1;

....


                           Yukarıdaki yorum satırını açıp 127.0.0.1 yerine 192.168.56.1 yazıyoruz. Böylelikle DNS Server olarak 192.168.56.1 IPsi kullanılsın diyoruz. 

**NOT : Bu ayarlardan sonra DNS önbelleği(cache) temizlenmezse, ayar değişikliklerinden önce girilen siteler için alınmış dns cevapları cache'de saklanır ve tekrar erişilmek istenildiğinde yeni yapılandırdığımız ayarlardaki dns server'daki değilde, önceden kullanılan dns server'daki ip adresleri geçerli olur. Bu yüzden yeni dns yapılandırmalarından sonra:

$ sudo /etc/init.d/dns-clean restart 

komutu ile dns cache'ini temizliyoruz.

Daha sonra ağımızın yeni ayarlarla çalışabilmesi için :

$ sudo /etc/init.d/networking restart

komutunu kullanıyoruz.
Bunları yapmazsak modemdeki DHCP ayarlarındaki DNS sunucu IPsi kullanılır.

Şimdi client(sanal makineyi ben client olarak kullandım)da gerçekleşen olaylar :

1 - Kullanıcı tarayıcıya domain girer.
2 - Tarayıcı domainin IPsini sorgulamak için DNS Server Kontrolü yapar.
3 - Bu kontrolde hangi DNS Server adresinden sorgulanacağına bakar,
EĞER Client bilgisayarında Özel DHCP ayarları mevcutsa bunları kullanır,
DEĞİLSE Modem üzerindeki DHCP ayarları geçerli olur.
Ve iki yöntemden birisiyle bulduğu DNS Server Adresinde domaini sorgular.
4 - DNS Sunucusu yanıt üretir ve domain'e ait IP adresi bulunuyorsa IP'yi geri döndürür, bulunmuyorsa hata döndürür. (SERVFAIL vb.)
Döndürdüğü IP adresi domaine tanımlı web serverın ip adresidir. 
5 - Browser DNS Sunucusundan aldığı IP adresine Request(İstek) oluşturarak web server'dan response(cevap) alır. Bu isteği client(istemci) için render eder.

Ve son olarak client'da(sanal makinemde) browsera yazilimyazari.com yazınca:



Sanal makinemde yazilimyazari.com yazdığımda süperli şeylerle karşılaşmamızın sebebi localhostumda bulunan index.html dosyam. :)
İçeriğini buraya bırakıyorum :

<!DOCTYPE html>
<html lang="tr">

<head>
        <meta charset="UTF-8">
        <title>DNS Ayarları</title>
        <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
        <style type="text/css">
                body
                {
                        margin: 0 auto;
                        text-align: center;
                }
        </style>
</head>
<body>
        <p><img src="http://i.hizliresim.com/40BM1A.jpg" alt="Nereye Yönlenecekler?"></p>
        <p class="lead">#dnsolusturmakeyfisi #ablandnsbeybisi #nereyeyonlenecekler #icliklergiyilsin</p>

</body></html>

"DNS nasıl çalışır?" burada çok güzel anlatılmış. :)