12 Mayıs 2016 Perşembe

Go Git Services (Gogs) Kurulumu

Herkese merhaba,
Bu yazımda Gogs'un ne olduğundan ve nasıl yapılandırılıp kullanılabileceğinden bahsedeceğim.


Gogs'u Halil'in Github'da yıldızlaması ile gördüm. Ne iş yapıyormuş diye bakınca "vay be gavur da güzel proje yapmış" dedim ve projenin Go ile yazıldığını görünce aşırı sevindim. "Bu projeyi bir kurup deneyeyim, katkı versem çokii olur" diye düşündüm. Çünkü yaklaşık bir aydır boş kaldıkça Go'yu öğrenmeye vakit ayırıyorum ve bu da baya güzel denk geldi :)


Gogs özetle kendi git servisinizi kurmanızı, kullanmanızı, yönetmenizi sağlıyor. Belgelendirmesi de oldukça güzel yapılmış. Ben kaynak koddan hangi adımları uygulayarak kurduğumu anlatacağım.


İlk olarak servis vereceğimiz sunucunuza Go kurmalıyız. Ssh'a açık olacağı için bir kullanıcıyı yetkilendirmek gerekiyor. Bu yüzden yeni bir kullanıcı oluşturmalıyız.

#Kullanıcı oluşturup home dizinine geçelim.
$ sudo adduser --disabled-login --gecos 'Gogs' git
$ sudo su - git
$ cd ~

#Go'yu local diye bir dizin oluşturup yükleyelim.
$ mkdir local
$ wget https://storage.googleapis.com/golang/go$VERSION.$OS-$ARCH.tar.gz

# tar.gz uzantısını açalım.
$ tar -C /home/git/local -xzf go$VERSION.$OS-$ARCH.tar.gz

# Çevresel değişkenleri de ~/.bashrc altına ekleyelim.
$ sudo su - git
$ cd ~
$ echo 'export GOROOT=$HOME/local/go' >> $HOME/.bashrc
$ echo 'export GOPATH=$HOME/go' >> $HOME/.bashrc
$ echo 'export PATH=$PATH:$GOROOT/bin' >> $HOME/.bashrc
$ source $HOME/.bashrc

# Gogs'un kaynak kodunu kendi yerelimize çekelim ve derleyelim.
$ go get -u github.com/gogits/gogs (bağımlılıklar için)
$ cd $GOPATH/src/github.com/gogits/gogs
$ go build

# Şimdi "$ ./gogs web" dediğimizde çıktı aşağıdaki gibi olmalı: (varsayılan port 3000)

Bu çıktıda da dediği gibi ilk kez çalıştırdığımız için [w] uyarısını görmezden gelebiliriz.

Çıktıda bu uyarı dışında sorun yoksa şimdi app.ini dosyasını oluşturmalıyız. Bu kendi git servisimizin yapılandırmasını içeren dosya. (/custom/conf/app.ini

Benim yapılandırma dosyam şu şekilde:

APP_NAME = Gogs: Go Git Service
RUN_USER = git
RUN_MODE = prod

[database]
DB_TYPE  = mysql
HOST     = 127.0.0.1:3306
NAME     = gogs
USER     =root
PASSWD   =*********
SSL_MODE = disable
PATH     = data/gogs.db

[repository]
ROOT = /home/git/gogs-repositories

[server]
DOMAIN       =foo.bar.baz
HTTP_PORT    = 3000
ROOT_URL     = http://foo.bar.baz/
DISABLE_SSH  = false
SSH_PORT     = 22
OFFLINE_MODE = false

[mailer]
ENABLED = false

[service]
REGISTER_EMAIL_CONFIRM = false
ENABLE_NOTIFY_MAIL     = false
DISABLE_REGISTRATION   = false
ENABLE_CAPTCHA         = true
REQUIRE_SIGNIN_VIEW    = false

[picture]
DISABLE_GRAVATAR = false

[session]
PROVIDER = file

[log]
MODE      = file
LEVEL     = Info
ROOT_PATH = /home/git/go/src/github.com/gogits/gogs/log

[security]
INSTALL_LOCK = true
SECRET_KEY   =*************

# Son olarak konsol dışında 80.porttan erişip Github gibi arayüzü kullanmak istiyorsak, Nginx ya da Apache yapılandırmasını yapmalıyız.

Nginx yapılandırması için git kullanıcısından exit diyerek çıkalım.

$ vim /etc/nginx/sites-available/gogs

server {
    listen 80;
    server_name foo.bar.baz;
    location / {
        proxy_set_header    X-Real-IP $remote_addr;
        proxy_set_header    Host        $ http_host;
        proxy_pass              http://127.0.0.1:3000;
    }
}

Yeniden servisi çalıştıralım:

$ cd $GOPATH/src/github.com/gogits/gogs
$ ./gogs web


Şimdi tarayıcımıza "foo.bar.baz" dediğimizde bu sayfa ile karşılaşıyor olmalıyız.


Görüşmek üzere o/

5 Mayıs 2016 Perşembe

Mozilla Çalışmalarım 2

Herkese merhaba,

Bu yazımda öncelikle Mozilla'nın ürünü olan İnstantbird için düzelttiğim bir hata kaydından, sonrasında da neden birtakım projelere katkı verip durduğumdan bahsetmek istiyorum.

İnstantbird'ün ne olduğunu öğrendikten sonra severek kullanmaya başladım. Ürün mesajlaşma servislerinizi kullanabileceğiniz bir mesajlaşma servisi aslında. IRC, Slack, Twitter, Yahoo, Google Talk gibi servisleri kullabiliyorusunuz. Derleyip kurmak isterseniz de buraya bakabilirsiniz. 

Çözdüğüm hata kaydı ise burada ve yine arayüz ile ilgili bir iyileştirme. İnstantbird'ün üstte bulunan menüsünden "Tools">"Preferences">"Advanced"> "Manage Search Engines" yolunu izledikten sonra yeni bir pencere açılıyor. Bu pencerede geliştiricilerin gereksiz gördükleri Keyword bölümünü kaldırdım.

Öncesi:
Sonrası:

Peki neden böyle şeyler yapıyorum?

İkinci dönem başladığından beri hiç bilmediğim projelerin ne iş yaptıklarını öğrenip, kaynak kodundan kurup, hata kayıtlarını kapatmaya çalışıyorum. Katkılarım alındıkça da blogumda yazıyorum ve vakit ayırıp düzenli çalışan herkesin de ilgilendikleri projelere katkı verebileceğini düşünüyorum.

Bu katkılardan bazıları, bazı kişilerin gözünde küçük görüyor. Herkesin fikrine de saygım var elbette. Ama 21.yyda  kimsenin elini bağlayan yoktur diye tahmin ediyorum. Böyle kişilere "siz de katkı yapın, siz de yazın" demek isterim :)

Neden böyle yaptığıma gelelim, mezun olup yazılımcı olarak çalışacak olursam, işe başladığımda yüksek ihtimalle hali hazırda devam eden bir projeye dahil olacağım. Yani, şimdi irc üzerinden konuştuğum geliştiriciler yerine işyerindeki takım arkadaşlarım olacak, bunun dışında şimdi yaptığım katkılara benzer katkılar yapacağım. Hatta bir miktar daha küçük boyutlu hali bile olabilir. Çünkü Linux Kernel olsun, LibreOffice ya da Mozilla depoları, içi oldukça kalabalık olan projeler.

Bu projelere katkı vermeyi Jenga oynamaya benzetiyorum. Blokların hiçbirini yıkmadan eklemeler, çıkarmalar yapmak göründüğünden zor. Binlerce hatta milyonlarca dosya içindeki milyonlarca satır içinden doğru yerlere doğru kodlar eklemek ya da doğru yerdeki kodları çıkartmak iyi kod okuyup anlayarak oluyor.

Böyle projelere katkı vererek hem düşüncesini savunduğum özgür yazılım için hem de kendim için birşeyler yapıyorum. Yeni bir projeye dahil olduğumda hızlıca adapte olacağımı düşünüyorum.

Katkı vermek çok zevkli siz de gelsenize :)

LibreOffice Crash Projesi

Herkese merhaba,

Bir önceki yazımda Ankara'da gerçekleşen Hackfest'te Crash projesi için çalışmaya başladığımdan bahsetmiştim.

Crash projesinde Django kullanılıyor, LibreOffice sunucularındaki çökme raporlamaları için kullanılacak. Marcus'un bana ilk verdiği iş arayüzde bir düzenleme idi.

Eklenmiş olan her LibreOffice versiyonu için günlük çökme miktarı giriliyor ve özet bir grafik oluşturuluyor. Alt kısımda da versiyon ve ayrıntıların olduğu yeni sayfa için bir link vardı. Bu kısmı değiştirip dropdown butona çevirdim. Artık ne kadar versiyon eklenirse eklensin tablo genişleyip sayfayı aşmayacak :)

Before:


















After:
İlk Pull-Request'im alındı. Yeni şeyler ekledikçe yazacağım. Hoş kalın o/

2 Mayıs 2016 Pazartesi

LibreOffice Hackfest in Ankara 2016

Hi everyone,

LibreOffice Hackfest event occurred last weekend and it was hosted by TUBITAK-ULAKBIM. See here for details of the event.

We attended the event all together as Çanakkale team. (with/+Gülşah Köse, +Berk Güreken, +yeliz taneroğlu, +Ayşe Melike Yurtoğlu, +Burçin Akalın, +Kader Tarlan, +Faruk Uzun, +Özcan Esen, +Feyza Yavuz, +merttumer, +Kerem Hallaç +İrem Şendur)

We met LibreOffice developers Michael Meeks, Marcus Mohrhard and Jan-Marek Glogowski who came from abroad on friday. Then we listened to their presentations.


Michael Meeks's presentation began as introductory speech. This was about how the relationship between mentor and contributor should be maintained efficiently and how the development process should be.

Then, Marcus Mohrhard talked about the beneficial links and contents while contributing LibreOffice.

I had conversation with the developers at lunch break and I had a chance to meet them a lot. I had fun about the conversation and loved them all :)

Michael Meeks's was the first presentation in the afternoon. He told us about LibreOffice code base, LibreOffice components of the lowest level to the highest one and these components's communicate with each other. It was a enlightening presentation for me :)

Afterwards, Marcus explained the recent major changes in LibreOffice Calc's code. He talked about the difference in performance.

Before closing the day, Michael told the tools that used to debug in LibreOffice and we have been experimenting with small examples.

When Hackfest started, all the team members went on the tasks that they work on before and members who have questions about these tasks asked to the mentors.

As for what I'm doing is that I decided to contribute to the project that Marcus mentioned in his presentation Friday and I worked on the project installation and reviewed codes. I'm going to finish what we talk with Marcus and I will write about it in a few days:)

I didn't attend the second day of Hackfest. I spent time with my family in Bolu :)
I had fun, learned new things and made new friends. It was a great weekend for me. Also, I was glad to see Nurhak and Erdem, who I met their at AB2016.

Thank you very much, firstly my teacher +Necdet Yücel, event hosts TUBITAK-ULAKBİM and Muhammet Kara, Gökhan Gurbetoğlu and far away from Michael Meeks, Marcus Mohrhard and Jan-Marek Glogowski. I hope we meet again :)

LibreOffice Ankara Hackfest 2016

Herkese merhaba,

Geçtiğimiz haftasonu TÜBİTAK-ULAKBİM ev sahipliğinde LibreOffice Hackfest etkinliği gerçekleşti. Etkinlik ayrıntıları için buraya bakabilirsiniz.


Cuma günü yurtdışından gelen LibreOffice geliştiricileri Michael Meeks, Marcus Mohrhard ve Jan-Marek Glogowski ile tanıştık ve sunumlarını dinledik.

Sunum Michael Meeks'in giriş konuşması ile başladı. Bu konuşma daha çok  mentör ve katkıcı arasındaki iletişimin en faydalı şekilde nasıl yürütüleceği ve geliştirme işinin nasıl olması gerektiğiyle ilgiliydi.

Ardından Marcus Mohrhard, LibreOffice katkısı yaparken oldukça yararlı olacak linkleri ve içeriklerini anlattı.

Öğle arasında geliştiricilerle sohbet ederek onları daha çok tanıma fırsatı buldum. Sohbetleri çok keyifliydi ve hepsini çok sevdim :)
Öğleden sonraki ilk sunum Michael Meeks'indi. Bize LibreOffice'in kod tabanını anlattı. En alt seviyeden en üste kadar LibreOffice'in hangi bileşenlerden oluştuğunu bu bileşenlerin birbirleri ile nasıl iletişimde bulunduklarını anlattı. Benim için oldukça ufuk açıcı bir sunum oldu :)

Sonrasında Marcus, LibreOffice'in Calc bileşeni kodlarında son zamanlarda yapılan büyük değişiklikleri anlattı. Performans farklarından bahsetti.

Günü kapatmadan önce Michael, LibreOffice'de debug yapmak için kullanılan araçları anlattı ve küçük örnekler ile denemeler yaptık.

Hackfest'in başladığında ise tüm ekip, gelmeden önce üzerinde çalıştığı işlerle ile çalışmaya devam etti, soruları olanlar sorularını sordu.

Benim ne yaptığıma gelirsek, cuma günü Marcus'un sunumda bahsettiği projeye katkı vermeye karar verdim ve Hackfest'te kurulum işleri ile ilgilenip kodları inceledim. Birkaç gün içinde Marcus ile konuştuğumuz işi bitirip bununla ilgili de yazacağım :)

Hackfest'in 2. gününe katılmayıp Bolu'da ailemle vakit geçirdim. Yine dopdolu geçen çok eğlendiğim, yeni şeyler öğrendiğim ve yeni arkadaşlar edindiğim harika bir haftasonuydu. Ayrıca akademik bilişimde tanıştığım Nurhak ve Erdem'i de görmek çok güzeldi.

Başta +Necdet hocama, etkinliğe ev sahipliği yapan TÜBİTAK-ULAKBİM'e ve Muhammet Kara, Gökhan Gurbetoğlu'na, çok uzaklardan gelen Michael Meeks, Marcus Mohrhard ve Jan-Marek Glogowski'ye çok teşekkür ederim. Umarım yine görüşürüz :)