12 Ekim 2010 Salı

ÇOMAK:)

Bitirme projemizin adını önce kdetognome koymuştuk ancak daha sonra alınan kararla masaüstünü sadece gnome değilde diğer masaüstlerini de destekleyecek şekilde olsun diye değiştirdik. buna bağlı olarak projenin adı önce kdetoall oldu ama dahice bir fikirle son olarak projenin adının ÇOMAK olmasına karar verildi. Bu projeye nasıl dahil olduğumu bitirme projesi başlığında anlatmıştım.
Benim projedeki görevimde belli oldu ben yalı'da yaptığım işe devam edeceğim.Ayrıca user-manager üzerine de çalışacağım. Öncelikle YALI işe kaldığım yerden devam ediyorum.
SrcInstall.py Yali'nın paket kurulumu yaptığı ekrandır. Burada PkgInstaller() sınıfının run() metodunun içerisinde deponun nerede olduğu kontrolü yapılıyor. Deponun adresi repoAddr değişkeninde tutuluyor. Bu değişken installData.py'nin içerisinde bulunuyor. Ön tanımlı olarak none atanmış. O yüzden yükleme sırasında direk Cd'deki depodan yüklemeye başlıyor. Eğer repoAddr değişkeninin var olduğunu düşünürsek şöyle bir kod çalıştırılıyor.

yali.pisiiface.addRemoteRepo(ctx.installData.repoName,ctx.installData.repoAddr)

addRemoteRepo() fonksiyonu yali dizininin pisiiface.py dosyasında tanımlanmakta ancak pisiiface.py 'e baktığımda şunu gördüm

def addRemoteRepo(name, uri):
....if not repodb.has_repo(name):
........addRepo(name, uri)
........updateRepo(name)

addRepo() yine pisiiface.py içerisinde tanımlanmakta

def addRepo(name=None, uri=None):
....if name and uri:
........pisi.api.add_repo(name, uri)

Buradan anladığım kadarıyla pisiiface.py pisi içerisinde olan metodların bir arayüzünü oluşturuyor.

pisi dizini içerisinde api.py ye baktığımda add_repo() fonksiyonunun burada gerçekleştirildiğini umuyordum. Ki evet burada gerçekleştiriliyor. Paketler üzerindeki diğer işlemlerde buraya bağlanarak gerçekleştirildiğini öğrendim.

11 Ekim 2010 Pazartesi

Pardus'a, katkıcı başvurusu yapma

Pardus geliştiricilerinin bildiğim kadarıyla yüzde yüzü Türk olmasına rağmen neden kılavuzların İngilizce yazıldığına anlam verebilmiş değilim. Bugün Pardus'a katkıcı başvurusunda bulundum. Bununla ilgili Türkçe kaynak olması amacıyla gerçekleştirdiğim adımları buraya yazıyorum.

1.Bu adımları "How to be a Contributor?" adlı yazıyı okuyarak öğrendim.
2.Bir bugzilla hesabı almak. Tabi benim vardı bu adımı pas geçtim:)
3.Daha sonra yeni bir hata raporla kısmında dağıtım süreçleri konusunu seçtim.
4.Orada da görüldüğü gibi yeni katkıcı başvurusu kısmı var. Oradan karşıma bir form çıktı.
Bileşen kısmında geliştiriciyi işaretliyoruz.
5.Özet kısmında "Geliştirici adaylık Özge Barbaros" yazdım.
6. Ayrıntılar kısmında ise şu soruların yanıtları olmalı:
  • Hangi dağıtımı düzgün bir şekilde kullanıyorsunuz?
  • Ne zamanda ve hangi dağıtımdan beri Pardus kullanıyorsunuz?
  • Özgür yazılım projesine katkıda bulunmak sizin için ne ifade ediyor?
  • Daha önce bir özgür yazılım projesinde bulundunuz mu? Evetse , hangi proje, nasıl ,ne kadar süre bu projede yer aldınız?
  • Neden Pardus'a katkıda bulunmak istiyorsunuz?
  • Pardus için ne kadar zaman harcadınız?
  • Öz geçmişinizi ekleyin ya da link verin
  • Başvuru geliştiricilik içinse , aşağıda belirtilen daha önce yapmış olduğunuz şeyleri ekleyiniz:
Pardus deposu için hazırladığınız paketleri veya Pardusta yaptığınız düzenlemeler.
bugs.pardus.org.tr de düzelttiğiniz hatalar.
Diğer dağıtımlar için yaptığınız katkılar.
Ve hatayı raporluyoruz. Bir de CV ekliyoruz tabi ki:)

2 Ekim 2010 Cumartesi

user-manager

Bitirme projesinde kodları okumaya başladık. Pazartesiye kadar user-manager kodlarına bakıp anladıklarımı "svn://svn.comu.edu.tr/gpardus" adresine göndermem gerekiyor.
Dün kullanıcı adı ve parolalarımızı aldık.

Daemon: Unix ve diğer multitasking işletim sistemlerinde, daemon, kullanıcının bire bir kontrolünde değilde arka planda yürütülen programlardır. Daemonlar tipik olarak "d" ile biten isimlere sahip olurlar.
Unix'te bir daemonun ebeveyn süreci sıklıkla "init" sürecidir. Süreçler bir çocuk süreç oluşturduğunda (forking: kendisinin bir kopyasını oluşturmak) daemon olurlar.
Sistem daemonları boot zamanında oluşturmaya başlar.Bunlar genelde network isteklerine, donanım aktivitelerine cevap veren veya başka görevleri yerine getiren programlardır.

D-bus: D-bus yazılım uygulamalarının birbirleriyle haberleşmesi için basit bir thread haberleşme (bir veya daha fazla süreç arasında) sistemidir.
D-bus işlevselliği daemon gibi çalışır; genellikle dbus-daemon. Kullanıcılar bunun birçok örneğini oluşturabilir. Bu örneklere kanal adı verilir. Birçok sistem,her kullanıcı için özel bir örnekle ayrıcalıklı bir sistem kanalı gerçekleştirir. Bu özel örneklere gerek duyulmasının sebebi
sistem kanallarının erişim kısıtlamalarına sahip olmasıdır.
Sistem kanalı HAL (donanım-soyutlama katmanı) daemonından sinyal alan süreçlere yoğunlaşır. Özel örneklerin görevi kullanıcı uygulamaları arasındaki sınırsız iletişimi önlemektir.

Python'un D-bus modülü:
dbus modülünü kullanabilmek için öncelikle bus nesnesi oluşturmak gerekir. Bu nesne iki amaçla oluşturulabilir:

1.si Session bus:her kullanıcı için farklı oturum bu oturum masaüstü uygulamalarının haberleşmesinde kullanılır.
import dbus

session_bus=dbus.SessionBus()

2.si System bus: genellikle boot anında başaltılır. Sistem servislerinin haberleşmesi için kullanılır.Örneğin udev, networkmanager, HAL

import dbus

session_bus=dbus.SessionBus()

Bu ikisi aynı uygulama içerisinde kullanılabilir.