openlaszlo etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
openlaszlo etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

26 Temmuz 2010 Pazartesi

Openlaszlo'da debug ya da non-debug modda çalışmanın sınıf metot erişimine etkileri

Geçen günlerde yaşadığım bir problem sayesinde Openlaszlo derleyicisinin bir davranışı hakkında bildi sahibi oldum. Sorun şu şekilde idi:
Uygulama geliştirme ortamında debug modda çalışmalar yapıyordum. Bu şekilde uygulamanın çalışma anındaki gidişatını takip edebiliyordum. Uzunca bir süre bu şekilde çalıştığım için varolan bir problemi de farketmem mümkün olmadı. Uygulamayı non-debug(debug kapalı) modda çalıştırdığım zaman paylaşılan nesne ve rtmp bağlantı sınıfları üzerindeki metotların flash sunucusu tarafından tetiklenmediğini farkettim. Sorunu Openlaszlo kullanıcı listesine sorduğum zaman ise; geliştiricilerden şu şekilde bir yanıt aldım: "debug modda çalışırken OL sınıfları public, non-debug modda ise public değildir. Bu sorunu giderebilmek için ise; metotlarına başvurulacak sınıfları, bir script içerisinde public tanımlayıcısı şeklinde belirtmek gereklidir."
Sınıfların public tanımlayıcısı ile gerçekleştirimlerinde ise, temsil edilecek olan sınıfın metotlarının çağırımı, yeni oluşturulan ara sınıf metodu içerisinde yapılıyor.


public class SharedObjectChatMediator {
var client;
public function SharedObjectChatMediator (client) {
this.client = client;
}
public function writeMessage(username, msg) {
this.client.writeMessage(username, msg);
}
}


Yukarıda shared object sınıfının (parametre olan client) public olarak gerçekleştirimi bulunmaktadır. Örneğin writeMessage metodu çağrıldığında aslında parametre olarak gelen shared object'in (client) writeMessage metodu çağrılıyor.

28 Şubat 2010 Pazar

Red5 Uygulamaları İçin Birkaç İpucu

1-) Shared Object Servisini kullanma
Temel Application sınıfı(ApplicationAdapter sınıfından türetilmiş) dışında, herhangi bir sınıf gerçekleştiriminde SharedObject işlemi yapabilmek için Shared Object servisinin kullanımı şu şekildedir :

Application sınıfında direk olarak çağırılabilien getSharedObject metodu başka bir sınıfta


ISharedObjectService service = (ISharedObjectService) ScopeUtils
.getScopeService(scope,
ISharedObjectService.class,
false);
service.getSharedObject(...);

şeklinde kullanılabilir

2-) red5-web.xml içerisinde tanımlı bir bean'i herhangi bir sınıf içerisinde kullanma

singleton="true" />


şeklindeki bir bean, başka bir sınıf tanımı içerisinde şu şekilde kullanılabilir :

IScope scope = Red5.getConnectionLocal().getScope();
SampleClass sc= (SampleClass)scope.getContext().getBean("myBean");

3-) Shared Object sendMessage kullanımı
Mevcut bir shared object için, Sunucu Tarafından(Red5) istemci tarafındaki bir methoda(openlaszlo, flex vs..) parametre şu şekilde gönderilebilir :

Red5
---------

ISharedObject sharedObject= this.getSharedObject(scope, "mySharedObject");
List list= new Arraylist();
sharedObject.sendMessage("clientMethod",list);


Openlaszlo
---------------


Debug.write("param %w Red5'ten geliyor",param);

19 Aralık 2009 Cumartesi

Actionscript 2134 : Cannot create SharedObject. hatası

Openlaszlo platformunda lzx etiketleri dışında, script olarak da işlemler yapmak mümkün. Bu script işlemleride actionscript kodu yazabiliriz(elbette ilgili flash kütüphanesini uygulamamıza eklediğimiz taktirde). Örneğin var conn= new NetConnection(); gibi bir ifadeyi openlaszlo'da kullanabiliyoruz. Doğal olarak herhangi bir hata durumunda actionscript'e ait runtime error alabiliyorsunuz.

Actionscript 2134 : Cannot create SharedObject hatası genellikle NetConnection nesnesi olmadığında ya da flash sunucusuna henüz bağlanmadığı durumlarda shared object oluşturma sırasında fırlatılan bir hatadır.

Yapmamız gereken :
- NetConnection'a listener eklemek
- NetConnection.Connect.Success durumunda shared object'i oluşturmak. Ya da daha önceden tanımlanmış (mesela "allowCreate" gibi) bir özellik tanımlayıp, bu durum oluştuğunda değerini "true" yapmak. Daha sonra shared object oluşturmak istediğinde bu özelliğin değerlendirmesini yapıp ona göre shared object'i oluşturmak.

Bağlantılar :
Flash Runtime Errors
Flash Compiler Errors

4 Aralık 2009 Cuma

openlaszlo (view) november edition

openlaszlo platformu gelişticilerinin, o ay içerisinde ne gibi özellikleri platforma kazandırdığından ve neler yaptıklarından bahsettiği aylık bir pdf sayısı yayınlıyorlar. Takip etmekte fayda var.
İşte karşınızda
Kasım sayısı : http://openlaszlo.org/misc/OpenLaszloView113009.pdf
Ekim sayısı : http://openlaszlo.org/misc/OpenLaszloView103109.pdf

2 Aralık 2009 Çarşamba

derleme anında laszlo compilerın hafızasına harici sınıfları eklemesi

Openlaszlo derleme zamanında tüm lzx dosyalarındaki şeklindeki tanımlamaları araştırır ve bunları hafızaya alır. Daha sonra "blabla.lzx"'in sınıfını baska bir lzx'den etiketini kullanmaksızın kullanabiliriz. Yani nasıl window etiketini kullanıyorsak blabla sınıfınıda aynı sekilde kullanabiliriz.
Yapmamız gereken:
library.lzx gibi bir dosya oluşturup ve bu dosyanın içerisine tüm include'ları eklemeliyiz.

17 Kasım 2009 Salı

Openlaszlo as3 compilation error : "ReferenceError: Error #1056: Cannot create property..."

1-2 gündür çözümünü bulmaya çalıştığım hatayı, swf8 için hatasız derlenen ancak swf9 ve swf10'da kod için alıyordum. Örneğin swf8 için
this.so.send("writeMessage","aaa"); çağırıp

this.so.writeMessage= function (msg) {
Debug.debug(msg);
}

şeklindeki bir fonksiyonu dinamik olarak yükleyebiliyorduk uygulamamıza. Ancak swf9 için shared object'te değişiklik yapmak istiyorsak, shared object sınıfına ait bir instance'ı dinamik olarak oluşturmalıyız ve çağıracağımız writeMessage fonksiyonunu da public method şeklinde yazmamız gerekiyor.

Yapmamız gereken :

1-) this.so.client=this; (burada this, örneğini oluşturacağımız sınıf oluyor)

2-) sfw8 için dynamik olarak oluşturduğumuz metodu sınıfımıza da method name="writeMessage" args="msg"> şeklinde eklemek

16 Kasım 2009 Pazartesi

OpenLaszlo - Error: Initialization error: no request type: media

Lps sunucusunu başlattıktan sonra, lzx dosyalarını tarayıcıdan çalıştırmak istediğimizde
"Error: Initialization error: no request type: media" şeklinde bir hata mesajı geliyor. Bunun sebebi locale settings ile alakalıdır. tr_TR.UTF-8 olduğunda problem çıkarıyor.
Yapmamız gereken :
LC_ALL=en_EN.UTF-8

15 Temmuz 2009 Çarşamba

Openlaszlo ve Spket ile basit bir uygulama

Daha önce openlaszlo'dan kısaca bahsetmiştim. Bu yazıda ise basit bir laszlo uygulaması yapacağız ve bu uygulamayı oluştururken hangi aracı kullanabiliriz, bunlardan bahsedeceğiz.

Laszlo uygulamalarımızı geliştirmek için kullanacağımız büyülü araç Spket'tir. Benim için büyülü, çünkü uzun bir süre openlaszlo için kullanabileceğim eclipse veya netbeans plugin'i denemekle uğraşmama rağmen, hiçbirini kullanışlı bulmadım. Bunun dışında bağımsız işe yarar bir editör de göremedim (Spket dışında). Openlaszlo'ya yeni başlayanlara Spket'i öneririm, en azından benim boşa harcadığım vakti siz de harcamış olmazsınız;) Kurulum için buradaki spket türlerinden size uygun olanını indirip kurulumunu yapabilirsiniz. Eclipse plugin'i olarak, standalone ya da update site şeklinde kurulumları mevcuttur. Standalone kurulumu sayfanın altında da belirtildiği gibi oldukça basittir : java -jar spket-1.6.16.jar . (Bu komutu terminalden yazarken root değil de ev-kullanıcısı olarak verin. Grafik ekranda kurulumu bu şekilde görebilirsiniz.)

Spket kurulumunu yaptıktan sonra gelelim şimdi bir proje oluşturmaya. spket'in açılışında default workspace soruyor. Bu ekrana "tamam" demeden önce bir önceki yazıda belirtmiş olduğum yerde (benim için : /opt/lps-4.4.0/Server/lps-4.4.0/) bu yolu gösterin ve "tamam" deyin. Neden öntanımlı olan /home/workspace dizinini kullanmıyoruz diye soracak olusanız; daha sonra uygulamamıza tarayıcıdan erişeceğimiz için herseferinde gerekli olan bu dizine çalışma dizinimizi taşımayın diye burada oluşturuyoruz.

Spket açıldıktan sonra project explorer kısmına sağ tıklayıp yeni bir proje oluşturuyoruz( General->Project seçiyoruz). Sonra projeye sağ tık ve yeni dosya diyoruz. Dosya adı için ise "herneyse.lzx"(gerçekten herneyse :)) yazıyoruz.
Sonra dosyaya buradaki kodu yapıştırıyoruz :


Kaydediyoruz ve önceki yazıda belirtmiş olduğum şekilde laszlo sunucusu başlatmış olacak şekilde uygulamaya tarayıcıdan erişiyoruz("http://localhost:8080/lps-4.4.0/deneme" deneme->benim yukarıda belirtmis olduğum gibi spket'de oluşturduğum proje adı). Herşey yolunda ise projenizdeki dosyaları görüyor olacaksınız. Burada "herneyse.lzx"'e tıkladığınızda uygulama çalışıyor olacaktır.

14 Haziran 2009 Pazar

Zengin Internet Uygulamaları (Rich Internet Applications) için OpenLaszlo

Mevcut vidyokonferans yazılımlarına daha önce göz atmıştık. Bunlar içerisinden kullanılabiliirliği yüksek, hızla gelişen ve açık kaynak kodlu olması bizi kendine çeken en önemli etken olması dolayısıyla Openmeetings' in yapısına biraz göz attık.
Daha önce de belirttiğim gibi vidyokonferans yazılımında iki taraf bulunuyor: Sunucu ve istemci tarafı. Openmeetings, flash sunucusu olarak Red5 Flash Server'i kullanıyor. İstemci tarafında ise, RIA denilen zengin internet uygulamaları oluşturmak için kullanılan OpenLaszlo platformu kullanılmıştır. Şimdi biraz OpenLaszlo hakkında konuşalım.

OpenLaszlo, pek çoğumuzun duymuş olduğu Adobe Flex'in muadili olan, Common Public License lisansına sahip, RIA geliştirilmesinde kullanılan, açık kaynak bir platformdur. Openlaszlo platformu OpenLaszlo sunucusundan (lps - Laszlo Presentation Server) ve LZX programlama dilinden oluşur. OpenLaszo sunucusu LZX dilinde yazılmış olan kodları derleyerek, SWF ya da DHTML olarak çalıştırılabilir hale dönüştürür. OpenLaszlo sunucusu aslında bir Java Servlet'tir.
LZX ise XML ve Javascript'den oluşan bir dildir. HTML ve Javascript'e aşina olanların LZX'in yapısını anlamakta bir sıkıntı yaşamayacağını düşünüyorum.

OpenLaszlo Kurulumu (Linux kurulumu esas alınarak):
__________________________________________________
Kendi sitesinde burada anlatılıyor ama birkaç önemli noktayı gene de belirteyim
- Bu adresten ilgili arşivi indiriyoruz ve istenilen bir yere açıyoruz.
- Lps'yi çalıştırabilmek için JDK 1.5 ve üstü kurulu olması gerekiyor. Kurulumdan sonra JAVA_HOME ortam değişkenini "export $JAVA_HOME=/opt/jdk1.6.0_12/" komutu ile belirlemek gerekiyor (/opt/jdk1.6.0_12/ -> jdk'nin bulunduğu yer).
- "/opt/lps-4.2.0.2/Server/tomcat-5.0.24/bin/startup.sh" komutu ile lps'yi çalıştırıyoruz. (Burada lps arşivinin /opt/ 'ye açıldığını ve lps 4.2.0.2 sürümünü indirdiğimizi varsayıyorum).
Lps kurulumu bu kadar. Şimdi düzgün çalışıp çalışmadığını bir kontrol edelim :

Tarayıcıda adres satırına http://localhost:8080/lps-4.2.0.2/examples/ yazıyoruz ve örnek uygulamalarını görüyoruz. Şimdi bu örnekleri deneyebilir ve sayfanın altında bulunan "developer console" dan çeşitli işlemleri yapabiliriz. (adres satırında bulunan lps-4.2.0.2 kısmı, /opt/lps-4.2.0.2/Server/lps-4.2.0.2/'yi temsil ediyor.) Eğer 4.2 den sonraki sürümünü kurduysanız belirtilen yerdeki isimi kullanarak adres satırından çağırıyoruz. Daha sonradan oluşturacağımız kendi laszlo projelerimizi bu dizinin (/opt/lps-4.2.0.2/Server/lps-4.2.0.2/) altında oluşturuyoruz ve tarayıcıdan biraz önceki "examples" yerine projemizin ismini yazarak çağırıyoruz.

Daha sonraki girdilerde ise örnek bir laszlo projesi nasıl oluşturulur, hangi araçlar kullanılabilir ve bir lzx kod örneği konularından bahsedeceğim.