Upgrade to Pro — share decks privately, control downloads, hide ads and more …

XPages Workshop, May 2012 [Turkish]

XPages Workshop, May 2012 [Turkish]

sbasegmez

May 08, 2012
Tweet

More Decks by sbasegmez

Other Decks in Programming

Transcript

  1. Ben kimim? Serdar Başeğmez Developi Bilgi Sistemleri IBM Collaboration Solutions

    Champion (2011) LUGTR Kurucu/Eşbaşkan Blog Yazarı (LotusNotus.com) OpenNTF üyesi Lotus Notes/Domino Design Partner XPages Geliştiricisi Twitter: @sbasegmez E-posta: [email protected] Blog: http://lotusnotus.com
  2. Gündem Nereden öğrenebiliriz (tekrar) Domino Designer’a farklı bir bakış Geliştirme

    ve Test platformu Yeni uygulama için planlama Acemiler için yararlı bilgiler Extension Library
  3. Hatırlatma (2) Bazı konularda, IBM'in yol haritasına göre atıp tutuyor

    olacağız... 'Planlananlar' ya da 'Üzerinde Çalışılanlar' bazen her zaman değişebilir...
  4. Eğitim şart! Sınıf eğitimleri Online Eğitimler: LUGTR üyelerine %33 indirim...

    Sibnet http://www.sibnet.com.tr XPages101 http://xpages101.net The Learning Continuum Company http://www.tlcc.com LUGTR üyelerine %20 indirim...
  5. Kısaca yol haritası... JavaScript öğrenin!!! CSS ve HTML ile ilgili

    bilgilerinizi tazeleyin. http://www.w3schools.com/ Dojo örneklerini inceleyin. http://dojotoolkit.org http://dojocampus.com/explorer/ XPages ile ilgili temel bilgileri öğrenin. Jumpstart video’ları Ücretsiz eğitimler (tlcc.com, IBM Virtual Innovation Center...) Beginner düzeyindeki video’lar Wiki makaleleri
  6. Kısaca yol haritası... OpenNTF’den örnek uygulamalar indirin. Custom Control’ler, Layout’lar

    ve temalar nasıl kullanılmış? SSJS ve CSJS library’lerin eski tip Script Library’lerden ne farkı var? Extension Library’yi indirin. Kurun, demo veritabanıyla oynayın. Discussion, Teamroom gibi uygulamaları inceleyin. Extension Library’nin nasıl kullanıldığını inceleyin. İleri düzey kontrolleri anlamaya çalışın Küçük bir proje seçin ve deneyin. Soru sorun! LUGTR Forumu, Stackoverflow...
  7. Designer 8.5.3... Eclipse 3.4 tabanlı Bu versiyonu destekleyen Eclipse plugin’leri

    destekler. (!) Türkçe problemleri var Lotusscript Script Library’ler Extension Library hataları Windows 7 problemleri Internal HTTP viewer Port’u değiştirilebilir Source Control desteği (SVN, Mercurial)
  8. Designer – Pratik Bilgiler Performans – Hafıza kullanımı: Designer, Eclipse

    için belirli bir Java hafızası kullanır. Varsayılan olarak 48 mb ile başlar ve 256 mb’ı geçmez. Eğer 2 gb üstü RAM’iniz varsa 768 mb – 1024 mb’a kadar hafıza kullanabilirsiniz. Başlangıç seviyesini ise 256 mb üstü bir değere çekerek açılışı hızlandırırsınız.
  9. Designer – Pratik Bilgiler Performans – Hafıza Kullanımı (2) Ayarları

    değiştirmek için şu dosyayı bulun: <Notes Program klasörü>\framework\rcp\deploy\jvm.properties vmarg.Xmx=-Xmx256m vmarg.Xms=-Xms48m Bu değişikliği her versiyon değişikliğinde yapmalısınız (fix pack’ler dahil) Kaynak: http://www.tlcc.com/admin/tips.nsf/tipurlref/20120217
  10. Designer – Pratik Bilgiler Working Set kullanıyor musunuz? Çok fazla

    veritabanı kullanıyorsanız Applications listesi uzadıkça uzar. Birden fazla veritabanı içeren projeler için ya da mantıksal ayrım olan veritabanları için gruplamalar yapabilirsiniz (Xpages Projeleri, Satınalma uygulaması gibi...)
  11. Source Control... Source Control, NSF design içeriğini Designer dışında bir

    yere kaydetmemizi sağlar. Bu sayede birden fazla geliştirici, geliştirdiklerini ortak bir alana taşıyabilir. Versiyonlama, branch oluşturma gibi yararlar da sağladığı için tek başına bir geliştirici için de faydalı bir araçtır. Designer 8.5.3 itibariyle Source Control desteği geldi. SVN, Mercurial ve GitHub desteği var. Detaylar: Declan Sciolla-Lynch’in LS12-AD102 sunumu
  12. Geliştirme ve Test Platformu Özellikle Xpages geliştirme yaparken Designer’ın Web

    Preview özelliği çok yetersiz kalıyor. Authentication yok, log’lara bakmak zor, hata ayıklamak işkence, HTTP’yi kapatıp açmak uğraştırıcı vs. Bilgisayarınızda en az bir domino sonucu çalıştırmak işinizi çok kolaylaştıracaktır. Alternatif olarak, iki partitioned sunucu ile hem geliştirme hem de test platformunu kendi bilgisayarınızda kurabilirsiniz. Örnek: Bir sunucu Extension Library, diğer sunucu Upgrade pack çalıştırabilir. Sanal makineler (VMWare Player ya da Microsoft Virtual PC) ile versiyon ve browser testlerinizi yapabilirsiniz. Test kullanıcıları ve özel login sayfası da işinizi kolaylaştıracaktır.
  13. Geliştirme ve Test Platformu Geliştirme ve Test Platformu Yerel sunucu:

    Hızlı geliştirme (ağ haberleşmesinden kaynaklanan yavaşlık), anında konsolu (Alt- Tab) ve log’ları görebilmek, hızlıca konfigürasyon değiştirebilmek, rahatlıkla kapatıp açmak ve güvenliği gevşek tutabilmek. Geliştirme sunucusu: Birden fazla geliştirici için mutlaka gereklidir. Test sunucusu: Gerçek platformla (production) birebir aynı kuruluma sahip olmalı. Performans kontrolleri, UA testleri ve sürüm demoları için hazır tutulmalı. Lisanslamaya Dikkat! Bu üç tip sunucu da lisans gerektirir...
  14. Masaüstü Malzemeleri Javascript Language Reference ECMA262 için offline kaynak bulmak

    biraz zor olabilir. Java Language ve Class Reference (Java 6 SE ve EE) Mozilla Browser FireBug, Stylish, Web Developer Toolbar
  15. Uygulama Geliştirmeye Başlamak Önce planlayın! Kullanıcı Arabirimi nasıl olacak? Ekranlar,

    Görüntüler, Formlar (!) Navigasyon? (dikey/yatay) Parametreler, Güvenlik (roller/ACL/vs.) Veri modellemesi? Business Logic nasıl işleyecek?
  16. Model Masraf Formu Yönetici Onayı Muhasebe İşlemleri Masraf Merkezleri Döviz

    Kurları Bu arada, Lotus hesabı olmayanlar için de form doldurulacak... Unutmadan, müdürlerimiz sekreterlerinin kendi adlarına form doldurabilmesini istiyor. LOGO tcmb.gov.tr Bu formu avans için de kullanabiliriz sanırım... Yöneticileri SAP’den alalım Olmadı, yöneticileri biz girelim. İki gün içinde onay vermezse üst yöneticiye gitsin... CEO formlarını CFO onaylasın Formları limitlerine göre ayıralım blah blah blah... vs. vs. vs.
  17. Acemiler için... Log’a yazmak... SSJS: print(XXX) > Domino Console/Log.nsf Java:

    System.our.println(XXX) > Domino Console/Log.nsf (veya Java Console) CSJS: console.log(XXX) > Firebug veya türevleri Hata Logları Server üzerinde: [Domino Data Klasörü]\domino\workspace\logs Designer üzerinde: [Notes Data Klasörü]\workspace\logs Ayrıca [Data Klasörü]\IBM_TECHNICAL_SUPPORT\xpages_exc*.log Her zaman: try {...} catch(e) {...}
  18. Acemiler için Server-side JavaScript SSJS != Lotusscript Büyük küçük harf

    duyarlı (Özellikle formula’lar: @DbLookup(...)) Context sorunsalı (Scope Variable kullanın!) Java kullanılabilir Java – JavaScript notasyonları farklıdır! Deklarasyon ve casting yok. SSJS, derlenen bir dil değildir. Performansı düşüktür, Designer yalnızca notasyon ve gramer hatalarına karşı uyarır. SSJS, Lotusscript yerine Formula diline bir alternatif olarak düşünülmeli.
  19. Acemiler için Scope değişkenleri Doğru scope’u kullanmak önemli (boşuna hafıza

    harcamayın). Notes objeleri depolamayın Yalnızca ‘Serializable’ objeler için kullanın! Scope Detay applicationScope Her nsf için bir tane yaratılır. HTTP kapatılır ve açılırsa temizlenir. sessionScope Her session için bir tane yaratılır. Belli bir time-out sonrası temizlenir. *** session != authentication *** viewScope Her page için yaratılır. (Aynı sayfada olduğunuz sürece korunur) requestScope Her request için yaratılır. (Sayfa yüklendikten sonra temizlenir)
  20. Acemiler için Lotusscript kullanımı Agent’larla mümkün (tercih edilmese de). Data

    source tanımlarken WebQuerySave agent çalıştırılabilir. Eski Lotusscript kodları? Çok karmaşık olanları agent’lara aktarabilirsiniz. Ama basit olanları tekrar yazmanız yerinde olur.
  21. Acemiler için Client-side vs. Server-side XPages geliştirmeye yeni başlayanların en

    büyük sorunu. Geleneksel geliştirmeden farklı olarak XPage‘lerde bazen sunucu tarafında bazen browser tarafında çalışırsınız. İki taraf arasında bilgi alışverişi yapmanız gerektiğinde işler karışır. Alternatifler Pasif veri alışverişi (yükleme sırasında server-side > client-side) Aktif veri alışverişi (partial-refresh ile server-side > client-side) Aktif çift taraflı (RPC ile server-side < > client-side)