ozirus’

diary of a computer alchemist
  • rss
  • Ana sayfa
  • Hakkımda
  • Linux
  • Kısa Filmler

Pardus Ağ Yöneticisine Ad-hoc Desteği Eklemek

08 July 2008

GİRİŞ

Staj sonuçları açıklandığında Pardus’ta staj yapacağım için gerçekten çok sevinmiştim. Hatta bu sevinç yurtta bilgisayar odasındaki ” ‘Yaşasın!’ diyerek sandalyeden fırlayan genç gören insan” ‘larca da bizzat tasdik edilip onaylanmıştı. Proje tercihimi her ne kadar “İnternet Bağlantısı Paylaşım Projesi” için kullanmış olsam ve bu proje GSoC‘cu bir arkadaşımız olan ve projesinin hakkını gayet güzel veren Cihangir‘e gitse de yine de “güzel ve eğlenceli” şeyler yaşayacağımı biliyordum Eskişehir’den staj için Gebze’ye gelirken. Herkes birbiriyle tanışıp iş projelerin dağıtılması aşamasına gelince eğlenceli olabileceğini düşündüğümden ‘ağ yöneticisine ad-hoc desteği eklenmesi’ projesini seçtim. Proje danışmanım ise Bahadır oldu. İşte, bu yazı buraya kadar yazdıklarımla tamamen alakasız olarak projeyi nasıl yaptığımla ilgili bir takım teknik şeylerle alakalı olacak. (Ayrıca umarım içeriğine bağlı olarak staj defteri doldurma sancımı da değerli kopyala ve yapıştır arkadaşların yardımıyla bir nebze olsun azaltacak.)

AĞ YÖNETİCİSİ ile ÇOMAR’I ANLAMAK

İşe nasıl başlayacağımı kestirebilmek adına çalışmalarımın ilk aşamasına ağ yöneticisinin kodlarını inceleyerek başladım. Epey vakit alan bu süreç sonunda işimi bitirdiğimde bu sürecin neyin-nerden-nasıl geldiği ile alakalı olarak bana epey birşey kattığını farkettim. Tabii olarak bu okuma ve inceleme aşaması süresince başta ÇOMAR olmak üzere kimi başka konulara da girdim.

…ve ÜZERLERİNDE OYNAMAK

Ağ yöneticisinin işleyişini anladığımı düşündüğümde normalde/her hangi bir GUI olmadan bilgisayarları ad-hoc bağlamak için gerekli olan; kablosuz ağ arayüzü modunu ad-hoc’a ayarlamak, arayüze ip vermek, isteniyorsa arayüze şifre vermek, kanal ayarı yapmak gibi işleri ağ yöneticisinden yapılabilir hale getirebilmek için ÇOMAR’a ait Net_Link_wireless_tools.py betiğini düzenlemeye başladım. Bu betiğin özellikle Dev sınıfına ait up metoduna bağlantı moduna göre değişen bir işlerlik kazandırmam gerekiyordu. Bu sebeple ağ yöneticisine ait connection.py dosyasından gelen mod bilgisine -ki kendileri Net_Link_wireless_tools.py betiğinde bir Python listesinin içinde ikamet ediyorlar- göre (bir erişim noktası ile internete çıkılan kablosuz bağlantılarda managed, ad-hoc bağlantılarda ad-hoc) up metodunda bir dallanma gerçekledim ve geriye sadece Wireless sınıfına ait metodlarla yada standart bir metodu yok ise eğer subprocess modülü yardımıyla up metodunun ad-hoc dallanmasının içini doldurmak kaldı.

Buraya kadar yaptıklarımla ve connection.py‘yi düzenleyerek yaptığım kimi GUI değişiklikleri ile ağ yöneticisini bilgisayarları ad-hoc bağlayabilir hale getirebildim. Fakat projenin buraya kadar yaptığım kadarı ad-hoc modda birbirlerine bağlanacak olan bilgisayarlara el ile ip verme zorunluluğu getiriyordu. Bu noktada bir takım RFC okuma çabalarına daldım ve bir-iki günümü bu hevese harcadım.

Okumaya çalıştığım RFC’lerden öğrendiğim şey yapmaya çalıştığım şeyin (ad-hoc bağlananan makinelere otomatik ip vermek ve ip çakışmasının önüne geçmek) makineler arası Link-Local bağlantı yapmak olduğunu öğrenmem oldu. Bu tipteki bir bağlantı (ki kendisi RFC 3927 ile efendi gibi anlatılmış) ad-hoc bağlı makinelere 169.254.0.0/16 aralığından bir ip tahsis ediyor ve çakışma olduğunda çakışmaya sebep olan makinelerden birine farklı bir ip atıyor.

Bu bağlantı şeklini projeme uygulayabilmek amacıyla birtakım kütüphane arayışlarına girdim. Arayışlarım sırasında avahi-autoipd adlı bir uygulamanın var olduğunu gördüm ve teknik ayrıntılar için freenode’un #avahi kanalında biraz vakit geçirdim. Daha sonra bunu yine up metodunun ilgili kısmına ekleyerek bağlanırken üzerinde mod, şifre vb… ayarları yaptığım ağ arayüzüne ip adresi vermede kullandım. Burda avahi-autoipd‘ye ip adresi verdirirken getirilecek sınırlandırma ve özelleştirmelerin ayarlandığı avahi-autoipd.action dosyası üzerinde de bir takım düzenlemeler yapmam gerekti. Bu işlemle birlikte artık ad-hoc bağlantı yapılan makinelere elle ip verme zorunluluğu ortadan kalkmış ve ağ yöneticisinin ad-hoc desteği projesi testler hariç tamamlanmış olmuştu.

TESTLER, CİHAZ UYUMSUZLUKLARI vs…

Proje bittikten sonra testleri yaparken karşılaştığım en büyük sorun kimi kablosuz cihazların geriye dönük uyumsuzlukları oldu. Intel PRO/Wireless 2200BG chipset’e sahip dizüstümde yazdığım ve düzgün çalışan bir kodun mod değiştirme kısmı Intel PRO/Wireless 3945ABG‘lı bir başka dizüstünde “Device is busy” hatası verebiliyordu örneğin. Bu sorun biraz vaktimi aldı ama olay sonuçta Ubuntu forumlarında gördüğüm ve “Neden daha önce aklıma gelmedi ki?” şaşkınlığıyla karşıladığım; arayüzü önce pasif et, değişiklikleri yap, sonra aktif et tandansında çözümlendi.

Yorumlar
Henüz yorum yok
Kategori
Gezegen, Pardus, Python, Staj, Öğrenelim
RSS Yorumlar RSS Yorumlar
Trackback Trackback

CentOS 5 üzerine Trac kurulumu

26 July 2007

Trac proje yönetim programını bilenler bilir. Kurulumu tam bir işkence olan ama kullanımı ve yaptığı işler son derece şahane olan python ile yazılmış güzel bir yazılımdır. Bu hafta staj yaptığım şirkette verilen görev gereği kurmam gerekti bu programı ve ben de oturup araştırıp epeyce saçımı kurban vererek kurulumu yaptım. Şu an sorunsuz çalışıyor. CentOS 5 kullanıp yeni kurulum yapacakların benim gibi işkence çekmemeleri için oturup güzelce de bir belge hazırladım.

Bu da linki

İyi eğlenceler.

Yorumlar
Henüz yorum yok
Kategori
Gnu/Linux, Python, Staj
RSS Yorumlar RSS Yorumlar
Trackback Trackback

Yazılımcı olmak zor zanaat olsa gerek

10 June 2007

İki hafta olmuş tatilin başladığından bugüne. İnsanın ister istemez “Zaman ne de çabuk geçiyor Roza…” diyesi geliyor. Dönüp baktığımda bu iki haftalık süre zarfında epeyce bir şeye el attığımı görüyorum. Java ve Python ile hayat çok güzel…. Java demişken bir ara oturup adam akıllı GWT çalışmam gerektiğini anladım. “Şok şahane bi’şey.” İnsan 2-3 örnek uygulama yapıp tadını alınca daha bir gaza geliyor… Oturup uzun zamandır sağlam bir Ajax okuması yapmayı düşünüyordum Java Script ile, iyi ki hiç başlamamışım… Mis gibi Java yazarak da aslanlar gibi Ajax yapılabiliyormuş(bkz. ajax yapmak). Üstelik Eclipse de cabası… Üstelik aman IE’de çalıştı da Firefox’ta çalışmadı derdi yok. Tam “browser compatible” kod üretiyor GWT çıktı olarak.

Öte yandan Python ile de Qt programlamaya sardırdım biraz. Örnek bir uygulama yapımını adım adım anlattığım basit bir de belge hazırladım , yakında onu da siteye koymayı düşünüyorum.

Tabii bir de madalyonun öteki yüzü var. Hani bir bilgisayar mühendisi olarak yazılım konusunda bilmem gereken Uml, proje appumlyönetimi, sürüm yönetimi, tasarım kalıpları (design patterns), nesneye dayalı tasarım gibi konular. Onlar hakkında da bildiklerimin üstüne ufaktan okumalar yapmaya başladım. Sürüm yönetimi konusunda svn hakkında bildiklerimin yanında öğrenmem gereken daha epeyce bir şey varmış, dün Pardus ile denemeler yaparken onu anladım. Uml, tasarım kalıpları ve oop’in birlikte kullanımı konusunda ise resimde de görülen şu kitap oldukça cazip geldi bana ve bir şekilde kitabı temin ettim, açıp okumaya başlamam lazım bir an önce. Bir an önce diyorum çünkü 2 temmuz’da stajım başlıyor ve büyük ihtimalle uml bilmeden gideceğim işyerinde pek verimli bir staj geçiremeyeceğim.

Türkiyede mezun olan her bilgisayar mühendisinin hakkında en az iki-üç uygulama yazılarak elde edilen bilgi birikimi kadar bilmesi gereken kutsal konu veri tabanları hakkında ise inadım devam ediyor. “MySql ve PostgreSql yeter herkese” diyorum ben hala. Yine stajım gereği Oracle’a bulaşacağım fakat M$ veritabanlarına bulaşmama konusunda hala eskisi ile aynı derecede inatçıyım. Hele o Sql Server 2005′e… Piyasaya “Microsoft mühendisleri” yetiştiren Sakarya Üniversitesi Bilgisayar Mühendisliği bölümünün bir Open Source’cu öğrencisi olarak bakalım bu inadımda ne kadar kararlı davranabileceğim. (Seneyeki veritabanı yönetim sistemleri dersi finalinden sonra yazarım belki tekrar bu konu hakkında :) ]. Şimdilik bu kadar. Hayat, sendeyiz…


Technorati : books, design, design patterns, java, mysql, object oriented, oracle, postgre sql, programming, python, software engineering, uml

Yorumlar
1 yorum var
Kategori
Efkar, Kişisel düşünceler, Python
RSS Yorumlar RSS Yorumlar
Trackback Trackback

Kategori

  • .Net
  • Asabiyet
  • Aşk
  • Çok dertliyim be blog
  • Özgür yazılım
  • Öğrenelim
  • CentOS
  • Debian / Ubuntu
  • Dizi
  • Django
  • Efkar
  • Eğlencelik
  • Fotoğraf
  • Gezegen
  • Gnu/Linux
  • Kategorilenmemiş
  • Kendime not
  • Kitap İnceleme
  • Kişisel düşünceler
  • Komiklik içerebilir
  • Makaleler
  • Müzik
  • Okul falan
  • Pardus
  • Php
  • Python
  • Seratonin
  • Sinema
  • Siyaset
  • Staj
  • Tutunamayanlar
  • Windows
  • Yazılım mühendisliği
  • Şiir

Twitter


follow ozirus at http://twitter.com

Son okuduklarım


Reklamlar


Ohloh

Ohloh profile for Furkan ÇALIŞKAN
rss RSS Yorumlar valid xhtml 1.1 design by jide powered by Wordpress get firefox