4 Mayıs 2008 Pazar

Red5 uygulaması ama nasıl ?

Kaç gündür red5 uygulamasından bahsediyoruz, ama bir red5 uygulaması nasıldır, neye benzer, bu konuda hicbir açıklama yapmadık. Şimdi temel bir red5 uygulamasının yapısı nasıldır, hangi dosya ve dizinlerden oluşur ve bunlar ne işe yarar vs. bunlardan bahsedeceğim.

SUNUCU TARAFI
-----------------------------
Öncelikle daha önceki yazıda bahsettiğim red5 kurulumunu yaptığınızı varsayıyorum. Örnek bir red5 uygulaması "/usr/local/red5-trunk2/doc/templates/myapp/" de WEB-INF dizininde bulunuyor. Şimdilik sadece bu dosyaların içerisindeki bazı yerleri değiştireceğiz ve uygun yere koyacağız. Yaratacağımız yeni uygulamamızın adı "uygulama" olsun."/usr/local/red5-trunk2/dist/weapps/uygulama" dizini içine, bulunduğumuz .../myapp/ içindeki WEB-INF dizinini kopyalayın. Dosyalardaki değişiklikleri /usr/local/red5-trunk2/dist/weapps/uygulama/WEB-INF içinde yapacağız.

1-) log4j.properties : Bu dosya, uygulamadaki log4j kütüphanelerinin kullanacağı ayar dosyasıdır.
Örneğin : "log4j.appender.FLOG2.Threshold=DEBUG" buna benzer satırlardan oluşur. Şu an bu dosya bizi çok ilgilendirmiyor.

2-) red5-web.properties : Uygulama dizini ve sanal host ile ilgili ayarlamalar bu dosyada yapılır. Buradaki contextPath virtualHosts değişkenleri red5-web.xml dosyasından okunuyor.
webapp.contextPath=/myapp olan kısmı
webapp.contextPath=/uygulama yapın ve kaydedin.

3-) web.xml : Jetty/Tomcat Servlet makinasının ilk olarak okuyacağı dosyadır. Bu dosyadaki "webpprootkey" değişkeni uygulamamızın yapısını tanımlar.

webAppRootKey
/myapp
olan kısmı

webAppRootKey
/uygulama
yapın ve kaydedin.

4-) red5-web.xml : Yazmış olduğumuz Java sınıfların yolları ile ilgili ayarlar, sanal-host ve uygulamaya özel servislerin ayarları bu dosyada yapılır.

(< id="web.handler">class="the.path.to.my.Application"
singleton="true" />

(< id="myhandler.service">class="the.path.to.my.Application"
singleton="true" /> )
olan kısmı

(< id="web.handler">class="org.uygulama"

singleton="true" />
< id="myhandler.service">class="org.uygulama"

singleton="true" /> )yapın ve kaydedin.

Yaptığımız bu değişikliğe göre; "yazacağımız Java sınıfının yolu org.uygulama şeklindedir" demiş olduk. Sınıfı yazarken de bu hiyerarşiye göre oluşturacağız.

Şimdi eclipse, netbeans vs. hangi editörü kullanıyorsak, uygulama adında bir Java projesi oluşturuyoruz. Sonra bu projede de org paketi ve bunun içinde de uygulama isimli java sınıfımızı oluşturuyoruz. Yazacağımız kodun hatasız derlenebilmesi için, yazacağımız sınıfta kullanacağımız Red5 sınıflarını barındıran Red5.jar' ın projemize eklenmesi gerekiyor. Kullandığınız editöre göre Red5.jar'ı red5 dizininden projemize ekliyoruz (bendeki yeri : /usr/local/red5-trunk2). "uygulama.java" dosyamıza şunu yapıştırıyoruz :

package org;

import org.red5.server.adapter.ApplicationAdapter;

public class uygulama extends ApplicationAdapter {
public String mesaj (String mesaj)
{
return mesaj;
}
}
Şu anda bilmemiz gereken ilk şey; bir red5 sınıfı ApplicationAdapter sınıfından türetilir, metoda bakınca ne yaptığını sanırım herkes anlamıştır :) Şimdi uygulama.java dosyamızı derliyoruz(Netbeans' da F9 ile). Projemiz nerede oluşturuldu ise build vs. dizini içinde classes isimli bir dizini bulup, bu dizini red5 dizinimizdeki projemiz içine kopyalıyoruz (/usr/local/red5-trunk2/dist/weapps/uygulama/WEB-INF). Projemizdeki son yapı şu şekilde olmalı :

  • uygulama
    • WEB-INF
      • classes (dizin)
      • log4j.properties
      • red5-web.properties
      • red5-web.xml
      • web.xml

İSTEMCİ TARAFI
------------------------------
Tamam uygulamamızı red5 sunucusuna ekledik ama oluşturduğumuz Java dosyasına yapması gereken işi nasıl yaptıracağız? Bunu da Flash ile yapıyoruz. Flash dökümanları oluşturabileceğimiz Macromedia Flash 8 Wine ile pek güzel kurulup çalıştırılabiliyor. MF 8' i kurduğununuzu varsayarak bir flash dökümanı oluşturuyoruz ve şunu yapıştırıyoruz :

nc = new NetConnection();
nc.connect("rtmp://127.0.0.1/uygulama");
nc.onResult = function (obj) {
trace("Mesaj = " + obj) ;
};
nc.call("mesaj", nc, "Bu bizim ilk Red5 uygulamamız") ;

sonra ctrl+enter a basıyoruz ve mesajımız karşımıza geliyor. Tut ki gelmedi, o zaman Red5' i başlatmamışsınızdır :)./usr/local/red5-trunk2/dist içinde "./red5.sh" deyip red5' i çalıştırıyoruz. Şimdi tekrar deneyelim, çalışmış olmalı. İlk basit Red5 uygulamımız hazırdır :)

24 Nisan 2008 Perşembe

Pardus' a Red5 ve Openmeetings Kurulumu

Daha once bahsettiğim gibi vidyokonferans yazılımı olarak Openmeetings' e donmuştuk. Openmeetings aslında bir Red5 uygulaması. Red5' le biraz ilgilendiğiniz zaman ne kadar faydalı bir eser olduğunu göreceksiniz :) Şimdi Pardus' a (aslında çoğu linux türevi işletim sistemlerine) Red5 ve Openmeetings kurulumu nasıl olur, ondan bahsedeyim biraz.

RED5 KURULUMU
______________

1-) Red5 kurumunda Java inşa aracı Ant kullanılıyor. Bunun için elbette jdk yüklü olması gerekir. Minimum jdk1.5 kurulu olması gerekir sistemde ( "java -version" ile öğrenilebilir). Eğer kurulu değilse pisi paket yöneticisinden "sun-jdk" paketi kurulmalı.
2-) Konsolda "wget http://apache.mirror.transip.nl/ant/binaries/apache-ant-1.7.0-bin.tar.gz" ile Ant 1.7 ' i indiriyoruz ve /usr/local/ant şeklinde açıyoruz. Daha sonra "export ANT_HOME = /usr/local/ant" diyoruz ve ANT_HOME değişkenine indirdiğimiz dizinin yolunu veriyoruz.
3-) Tekrar konsolda "svn co http://svn1.cvsdude.com/osflash/red5/java/server/trunk red5-trunk" ile red5' in 0.6.3 sürümünü svn' den çekiyoruz (red5' in 0.7.0 sürümü de var ancak ona openmeetings kurulamıyor)
4-) Konsolda indirdiğimiz red5-trunk dizini içine geliyoruz ve "/usr/local/ant/bin/ant" komutu ile bir süre red5' in derlenmesini bekliyoruz.
5-) Derleme sonucunda red5-trunk dizini içinde "dist" diye bir dizin oluşacak. Bu dizini "cp -R red5-trunk/dist /usr/local/red5 " yazarak /usr/local içine atıyoruz. Sonra sırayla "cd /usr/local/red5" "chmod 755 red5.sh" ve "./red5.sh" komutlarını veriyoruz.
6-) Eğer bir problem yoksa "http://127.0.0.1:5080 ' de red5 test sayfası sorunsuz bir şekilde karşımıza çıkacaktır.

OPENMEETİNGS KURULUMU
______________________

Şimdi gelelim Openmeetings kurulumuna. Openmeetings kurulumu oldukça basit. Kullanıcı bilgilerinin tutulması için bir veritabanı sunucusu gerekli. mysql-server veya postgresql-server paketi yeterli. "http://code.google.com/p/openmeetings/wiki/InstallationOfRelease05" bu adreste kurulum yönergelerini sırayla yaparsanız adres satırında "http://127.0.0.1:5080/openmeetings/install" da openmeetings kurulum sayfasını göreceksiniz.
Hepsi bu :) Bir süre red5 kurulumu ile uğraştığımdan dolayı, böyle bir yazının ilgilenenler için faydalı olacağını düşündüm.

8 Nisan 2008 Salı

Centos' a Dimdim Kurulumu

Vidyokonferans yazılımı için Dimdim' i inceleyeceğimizi söylemiştim ve ilk olarak bilgi işlemdeki bir makinaya Dimdim' i kuralım dedik. Çok nazlı bir yazılım; ilk olarak Centos sürümünü kontrol ediyor, ondan sonra /usr de yeterli yer yok diye bir yazı geliyor (ne kadar yerin olursa olsun bu hata hic sekmeden karsınıza çıkar), bir de bizde ek olarak lighttp paketinde problem çıkardı ve defalarca yeniden centos ve Dimdim kurulumuyla uğraştık. Bahsetmis oldugum problemleri aşmak için /usr/local/dimdiminstalltemp/dimdim..online.run ve /usr/local/dimdiminstalltemp/scripts/dimdim..pl dosyalarında değişiklikler yapmak gerekiyor. centos sürümü için sürüm no' sunun sorgulandığı yeri commentout yapabilirsiniz. "/usr ' de yeterli yer yok" dediği kısmı ise aynı sekilde belli satırları commentout yaparak aşabilirsiniz (sourceforge.net' de dimdim forumunda hatalardan bir hayli bahsedilmiş).
Neyse sonunda Dimdim' i kurduk ve denemeler yapalım dedik. Görüntü konusunda bir problem yok, ancak ses iletimi çok kötü, hiç anlaşılmıyor ve bayağı geç geliyor. Bağlantı konusunda olur olmaz zamanlarda problem çıkarması da tuzu biberi oldu ve Openmeetings' i incelemeye karar verdik. Dimdim' in tamamen açık kaynak olmadığı zaten çok açık :) Ayrıca kodu da çok karmaşık. Baştan beri ben Openmeetings' le ilgilenmiştim, ama red5' in source koddan kurulması sırasında sorun çıkmıştı. Java' da yazılmış, işletim sistemi konusunda bir sınırlama yok. Bu arada Dimdim i.e. çalışmıyor(Bunda ticari bir amaç güdüldüğünü düşünüyorum)

2 Nisan 2008 Çarşamba

Mevcut Vidyokonferans Yazılımlarına Bakış

Üzerinde duracağımız ve kodunu incelemeye başlayacağımız vidyokonferans yazılımını belirlemek için, mevcut vidyokonferans yazılımlarında biraz araştırma yaptık. Hangi programlama dillerini ve teknolojilerini kullanacağı hakkında bilgi sahibi olduk.
Bazı Vidyokonferans Yazılımları :
- Microsoft Netmeeting*
- Camfrog*
(* Bu iki yazılım açık kaynak kodlu değil !)
- Dimdim (Açık kaynak kodlu)
- Openmeetings (Açık kaynak kodlu)
vs.
Bu yazılımlar içerisinden elbette ilk 2 seçeneği araştırmaya bile kalkışmadık.
Dimdim'de kullanılan programlama dilleri : ActionScript, C++, Java, JavaScript
ActionScript :ActionScript, Flash geliştiricilerinin sunum seviyesi mantığını tasarlamak için kullandıkları bir betik dilidir.
Openmeetings'de kullanılan programlama dilleri : Java

- Her iki yazılımda tarayıcıda çalışıyor
- Dimdim, linux türevi işletim sistemlerinden Centos 4.5 de çalışıyor.
- Open meetings veritabanı olarak mysql ve postgresql seçeneklerine sahip. Flash sunucusu olarak Red5 kullanıyor.

Bu iki yazılım içerisinden Dimdim'in kodunu incelemeye karar verdik. Openmeetings'e göre daha sağlam adımlarla geliştiriliyormuş gibi görünüyor. Zaten hemen hemen hepsinde kullanılan teknolojiler az çok aynıdır diye düşündük.

26 Mart 2008 Çarşamba

Vidyokonferans Yazılımlarında Kullanılan Teknolojiler

Vidyokonferans Yazılımlarında Kullanılan Teknolojiler
H323
Sesli ve görüntülü iletişimde kullanılan protokolleri kapsayan bir ITU standartıdır. Eski bir protokoldür. Bunun yerini son zamanlarda SIP protokolü almıştır.

VRVS (Virtual Room Videoconferencing System)
Web tabanlı vidyokonferans sistemidir.
VRVS' de 2 yapı vardır :
1.Virtual Room
Aynı yerde olmayan kullanıcıların biraraya geldikleri sanal sınıflara denir.
2.Reflector
Kullanıcıları sanal sınıflara sürekli bir IP tünel vasıtasyla yönlendiren birimdir. Herhangi bir kullanıcı bir işlem yapmak istediği zaman kendisine en yakın reflector ile iletişime gecer. Kullanıcılar birbirleriyle farklı noktalarda bulunan refector' ler yardımıyla iletişim kurarlar.

MPEG (Moving Pictures Experts Group)
Vidyokonferans sırasında, ses ve goruntuyu sıkıştırmak için kullanılan standarttır.
Mpeg-1
Mpeg-2
Mpeg-4 : En yeni sıkıştırma standardıdır. Daha düşük bant genişliğini kullanırlar.
Mpeg-7
Mpeg-21

MJPEG (Motion JPEG)
Görüntünün iletiminden önce, vidyodaki her karenin tek tek sıkıştırılmasına dayanan bir kodlama tekniğidir.

Access Grid
Web Clients
SIP (Session Initiation Protocol)

IETF tarafından sunulan, bir veya birden fazla kullanıcının oturum yaratması, değişiklik yapması, sonlandırma vs. işlemler için kullanılan ve uygulama katmanında çalışan sinyal protokolüdür. H323' ün gelişmiş halidir. IP telefon çağrıları, multimedya sunumlar veya konferanslarda kullanılabilir. Http protokolüne benzerdir.
1-)SIP User Agent
Oturum isteklerine yanıt veren bir sunucu gibi çalışır. Burada temel sunucu/istemci yapısı kullanılır.
2-)SIP Servers
SIP Proxy Server
SIP Redirect Server
3-)SIP Registrar
*SIP'te özel görevleri olan metodlar vardır. "Register" bunların en önemlisidir. "Register" komutunu kabul eden ve kullanıcı kayıtlarını tutan sunuculara registrar denir. Konuşmak isteyen uçlar bir registrar'a kayıt olur. "Register" iki uç arasında bağlantı kurar. "Invite" metodu, diyalog başlatmak için tek yoldur.(wikipedi SIP tanımından alıntı)*

25 Mart 2008 Salı

Vidyokonferans ve ipv6

Bilindiği gibi, günümüzde ağdaki çoğu cihaz birbirini tanımak, birbirleriyle iletişim kurmak ve veri alışverişinde bulunmak için IPv4 protokolünü kullanıyor. Ancak, IP adreslerinin bloklar halinde tahsis edilmesi nedeniyle, birçok IP adres aralığı kullanılamamaktadır. Artan ağ kullanıcısı sayısına bağlı olarak, daha büyük bir IP adresi sayısına ihtiyaç duyulmaktadır. Bu nedenle daha çok IP adresi imkanı sağlayan IPv6 protokolüne ihtiyaç duyulmuştur. Boş IP adresi sayısının hızla azalmasından dolayı da, en kısa sürede IPv6 protokolünün kullanımına geçilecektir.

Video telekonferans olarak da bilinen, iki veya daha farklı noktanın birbiriyle eşzamanlı olarak sesli ve görüntülü olarak etkileşimini sağlayan bir telekomünikasyon teknolojisidir. Bir video konferans sisteminde temel olarak kullanılan teknoloji; ses ve görüntü akımlarının gerçek zamanda dijital olarak sıkıştırılmasıdır. Donanımın ya da yazılımın yapmış olduğu bu sıkıştırmaya ise codec (code/decoder) denir. Ortaya çıkan bu dijital akımlar da paketlere bölünür ve ISDN veya IP hatları üzerinden karşı tarafa gönderilir. ISDN üzerinden gönderimde, kişinin Telekom santrallerinden almış olduğu ISDN numarası çevirilerek, kişi ile gerçek zamanlı olarak video konferans yapabiliriz. ISDN hattı, görüntü,ses ve veri taşıyabilmesi sebebi ile, veri alışverişi için hem bilgisayarınıza bağlayabiliyor, hem telefon olarak kullanabiliyor hem de görüntü taşıyabiliyorsunuz. ISDN hatlarla yapılan görüşmelerde ücretlendirme kontör hesabına göre yapılmaktadır. IP üzerinden haberleşmede ise, kullanıcılar arasında görüşmeler IP protokolü kullanılarak yapılır. IP hatları kullanmanın avantajı ise, bu hatların kiralık olması sebebiyle ücretlendirmesi genellikle sabit ve aylık olduğundan, hat ne kadar kullanılırsa kullanılsın ücretlendirme sabittir.

Bir video telekonferans sisteminde gerekli olan bileşenler :

  • Video Girişi : Video kamera veya webcam

  • Video Çıkışı : Bilgisayar, televizyon veya projeksiyon cihazı

  • Ses Girişi : Mikrofon

  • Ses Çıkışı : Genellikle görüntü cihazı ile bütünleşik olan hoparlör ya da telefon

  • Veri Alışverişi : Analog ya da dijital telefon ağı, LAN ya da internet

Avantajları

  • Farklı noktalarda bulunan kişilerin yolculuk vb. masraflarından kaçınılarak yüzyüze iletişim kurması
  • İş ve eğitim görüşmeleri, sağlık konferansları gibi alanlarda oldukça kullanışlı bir teknoloji
  • Uzaklık sorunu yaşamadan ev, işyeri ya da herhangi bir yerin durumunu sesli ve görüntülü olarak öğrenme fırsatı sunar
Vs .

IPv6 Nedir ? Avantajları Nelerdir ?
Bilindiği gibi ağdaki cihazların büyük bir kısmı IPv4 protokolünü kullanarak internete çıkıyor. Zamanla internetin büyüme hızı oldukça arttı ve ileride adreseme sıkıntısı ortaya çıkacağı aşikardır. Bu nedenle
IPv4 protokolünün yerini alması için 90’lı yılların başından itibaren IETF (Internet Engineering Task Force) tarafından ilk çalışmalarına başlatılmış olan IPv6 Internet Protocol Version 6 protokolü geliştirildi. IPv6 protokolüne ihtiyaç duymamızın tek sebebi adres aralığının azalması değildir. IPv6 ile güvenlik, servis kalitesi, mobillik, çoklu gönderim, ağ yönetimi gibi problemlere de çözüm sunulmuştur.

Avantajları

Daha Büyük Adres Uzayı

IPv6’ ya ihtiyaç duyulmasının başlıca sebeplerinden birisidir.IPv4 adreslemesinde kullanılan 32 bitlik aralık IPv6’ da 128 bite çıkarıldı. Böylece 2^32 olan adres aralığı 2^128’ e çıktı. Bu da hiç de hafife alınacak bir adres aralığı değidir.

Otomatik Yapılandırma - Stateless Address Autoconiguration (SLAAC)

SLAAC sayesinde, istemcilerin ağ ayarları otomatik olarak yapılabiliyor. Eğer IPv6 otomatik yapılandırması yoksa istemciler ağ ayarlarını DHCPv6 dan veya elle yapabilirler.

Çoklu Gönderim (Multicast)

IPv6'da broadcast paketleri yerine multicast kullanılmıştır. Bundan dolayı broadcast'in yaptığı tüm işleri multicast üstlenmiştir. Böylece CPU'dan tasarruf sağlanır.

Güvenlik

IPv4'e sonradan eklenen güvenlik tedbirlerini arttırıcı şifreleme (IPsec) kimlik denetimi (authentication) vb mekanizmalar IPv6 ile gelmiştir.

Mobilite

IPv4’ de olmayan aynı IP adreslerinin farklı ağlarda kullanımı IPv6 ile mümkün hale getirilmiştir

Hız

IPv6' da olan trafik işgal edici paket başlıkları kaldırılarak bir hız arttırımına gidilmiştir


Diploma Projesi

Son sınıfta olduğumdan dolayı almış olduğum diploma projesinin konusu : ipv6 destekli vidyo konferans yazılımının yapılması. Projenin akademik danışmanı Necdet Hocam. Son 1-2 haftadır proje üzerinde ciddi bir şekilde çalışmaya başladık. Ayrıca bana yardımcı olacak bir diğer kişi ise Kemal Ökmen hocam. Proje ile ilgili tüm araştırmaları ve yapılan çalışmalara buraya yazacağım. Umarım güzel şeyler ortaya çıkacaktır.