01 Ekim 2007

Web 3.0 Yazılımcısı Olmak

Web uygulamalarının yaygınlaştığı yıllarda yazılım geliştiriciler arasında yazılım geliştirici ve web yazılımcısı şeklinde iki kategori oluştu. 2. grupta yer alan kişiler genelde çok detaylı kod bilgisi ve tecrübesi olmayan, asp ve php gibi script dilleri kullanabilen, bunun yanında html, javascript, flash bilen ve hatta tasarım yapabilen kişiler durumuna geldiler. Ülkemiz web yazılım piyasası düşünülürse aslında bu tarz ihtiyaçlar için deneyimli ve mektepli yazılımcılar yerine kendisini bu alanda geliştirmiş farklı yerlerden gelen web yazılımcıları maaş olarak daha cazip olduğu için bu pozisyonlarda çalıştırıldı. Bu süreçte web yazılımcısı kavramı ortaya çıktı.

Ben web 3.0 ile birlikte bu 2. grubun işlevselliğinin azalacağını düşünüyorum. Çünkü servis odaklı mimarilerde web sayfaları sistemin merkezi değil bir parçası konumuna geliyor. Bu modelde işleyen yapıların görünmeyen kısmının görünen kısmından daha etkili olacağı düşünülürse web sayfalarının kullanım oranının düşmesi beklenen bir sonuç olacaktır.

Ülkemizde hala yükselmekte ve yaygınlaşması sürmekte olan bir konu olduğu için bu trendlerin işleyisi zamansal olarak biraz farklılık gösterecektir.

Artık bir web yazılımcısından çok iyi bir database tasarımı, performanslı ve güvenilir servisler ile bunların çerçevesinde ciddi altyapılar beklenecektir. Bu beklenti de sanırım birinci gruptaki yazılım odaklı kişilerin yöneleceği bir boşluk olacaktır.







Son günlerin trend sitesi Facebook'u web 3.0 ve bu geçiş süreci için örnek kabul edebiliriz. Facebook bir web sitesi, ama aynı zamanda bir uygulama geliştirme platform altyapısı sunuyor. web 3.0'ın programlanabilir web tanımlaması da aslında bunu gerektiriyor.

Web 3.0'ın bir diğer odağı semantic web için de durum aynı şekilde. Artık database işlemleri kayıt ekle, sorgula sürecinden çok fazla uzaklaşıyor. Geliştiriciden ihtiyaca çözüm olacak algortimaları öğrenmesi ve kullanması beklenecektir. Üzerinde biraz daha kafa yorulması bir gereklilik olacaktır.

Aslında burada bahsettiğimiz konu büyük web uygulamalarının gideceği bir yol gibi görünse de zamanla her web uygulamasından servis beklentisi olacaktır. Örneğin başka platformlara servis vermeyen bir e-ticaret sitesinden bahsedemeyeceğiz. Kişisel web sitelerinde dahi rss benzeri hizmetlerin olması kaçınılmaz. Bu durumda da tüm bu servislere uygun derli toplu altyapılar olacaktır. Aslında web sitelerinin veritabanlarına ve bunun etrafındaki servislere dönüşeceğini söyleyebiliriz.

Bir çoğumuzun programcılığı öğrendiği lokal uygulamaların artık büyük ölçüde değerlerini yitirmesi gibi web uygulama geliştirmenin de zamanla değerini yitireceğini söyleyebiliriz.

İşin ilginç yanı bunları hala web uygulamalarının daha yeni yeni oturduğu ve büyüyen bir trend izlediği bir ülkeden söylememiz. Web 2.0 'ın "geldi, yaşandı, bitiyor" veryansınları arasında hala anlaşılamaması ve hala yeni bir yaklaşım gibi sunulup insanları heyecanlandırması gibi.

Note:This picture has been taken from flickr.

28 Eylül 2007

Newid Ve Newsequentialid Arasındaki Fark

NEWSEQUENTIALID SQL Server 2005 ile gelen yeni bir fonksiyondur.
Database'in GUID üretmesi için kullandığımız NewId ile, default değeri artan sayı olan durumların birleşimi olarak düşünebiliriz. Yani sıralı Guid üreten bir fonksiyon.
Bu fonksiyon sadece default değer olarak kullanılabilir. Kullanımı aşağıdaki şekildedir.

create table test(
colA uniqueidentifier DEFAULT NEWSEQUENTIALID(),
colB varchar(20)
)

insert into test (ColB) values ('aa')
insert into test (ColB) values ('bb')
insert into test (ColB) values ('cc')
insert into test (ColB) values ('dd')

eklemeleri sonucunda ColA varsayılan değer olarak aşağıdaki şekilde oluştu.

6EAF72CF-E96D-DC11-BD20-0011D8A6F316
6FAF72CF-E96D-DC11-BD20-0011D8A6F316
F0D309E7-E96D-DC11-BD20-0011D8A6F316
F817F4F1-E96D-DC11-BD20-0011D8A6F316

Fakat bu fonksiyon güvenlik gerektiren bir uygulamada kullanılamamalıdır. Çünkü değerler sıralı olduğu için kolayca tahmin edilebilir. Bu durumda NewId daha doğru bir tercih olacaktır.

24 Eylül 2007

And Operatörü ile Sorgulama

Veritabanı sorgulamalarında and ifadelerine sahip cümle grubunda 1. şartın sağlanmaması durumunda diğer şartlar kontrol edilmez. Bu durumda and ifadesi öğelerinde en hızlı çalışacak koşulu önce yazmak bize performans kazancı sağlayacaktır.

Örnek verecek olursak;

Bazı durumlarda bir değerin bulunan kayıta göre iki farklı alandan alındığı durumlar olabilmekte. Örneğin müşteri tablomuzda name,surname ve firmname isimli alanlar olsun.
Name ve surname alanları boşsa müşteri ismi firmname kolonundan alınsın.

Eğer biz A ile başlayan müşterileri sorgulamak istersek;

(name like 'A%' and firmname is null) or (firmname like 'A%' and name is null)

şeklinde yazabildiğimiz sorguyu ;

(firmname is null and name like 'A%' ) or (name is null and firmname like 'A%')

şeklinde yazarsak daha performanslı çalışır. Performans kazancı koşulların çok olduğu cümlelerde artacaktır.

19 Eylül 2007

Web 3.0 ve Servis Odaklı Mimari

Web 2.0. ın Ajax dışında kayda değer bir yazılım yeniliği getirmediğini, tasarım ve kullanıcı odaklı yeni yaklaşımlar olduğunu söyleyebiliriz. Web 3.0 da ise roller tamamen değişiyor. Web uygulama mimarisinin değiştiğini söylemek yanlış olmaz . Bir kaç yıldan beri sıkça duyduğumuz SOA (Servis odaklı mimari) kavramı Web 3.0 ın temeline yerleşiyor. Aslında Web 3.0 bir çok otorite tarafından bir web versiyonu olarak görülmüyor. Web sayfaları artık sistemin sadece bir arayüzü haline geliyor. Sistem tamamen servislerden oluşuyor. Amazon ve ebay canlı örneklerini verebiliriz. Şu anki yapıda, siz aynı altyapının sağladığı api veya web servisleri kullanarak kendi sitenizden satış yapabiliyorsunuz. Bunu mobil uygulamalara veya televizyondan satış gibi farklı ortamlara taşımak mümkün olacaktır. Bu süreç içerisinde amazon.com web sitesi de arayüzlerden biri haline geliyor. Yemeksepeti'nin Digiturk kanalından sipariş alma uygulamasını örnek verebiliriz. Uçuk örnek verecek olursak bir gıda perakendecisinin servislerini kullanarak buzdolabınızdan alışveriş yaptırması mümkün olabilir. Tabii ki kış aylarında pek tercih edilecek bir durum olmasa gerek :)

Burada bir parantez açmak gerekirse bunlar zaten hepimizin bir şekilde uyguladığı ve kullandığı yapılar. Web 2.0, Web 3.0 veya herhangi bir yaklaşımı sıfırdan oluşan şeyler olarak düşünmemek gerekiyor. Sadece benzer özelliklerin bir grupta toplanıp ortak standartların yakalanması olarak düşünebiliriz. Yoksa siz zaten web 2.0, web 3.0 veya herhangi bir standart özelliğini kullanıyor olabilirsiniz. Ayrıca uygulamanın sadece bir standart özellikleri de taşıması şart değil.

.net ve java web servisleri de aslında benzer bir ihtiyaç için çıkmıştı. Bir .net geliştiricisinin uygulamasının bir parçasını başka platformda uygulama geliştiren bir partiyle paylaşmasını sağlıyordu.


SOA kavramı ile beraber ikinci büyük yeniliğin semantic web olduğunu söyleyebiliriz. Semantic web, Hakia arama motoru ile bilinirlik kazanan mantıksal arama yaklaşımı. İçeriğin anlamını anlamaya odaklı bir yöntem. Klasik indeksleme ile bir web sayfası içerdiği kelimelere göre indekslenirken, bu yaklaşımda web dökümanının tümü düşünülerek bir indeksleme yapılmaktadır. Yani herhangi bir kelime, sadece gerçek anlamıyla değil bulunduğu konum itibariyle de anlamlandırılımaktadır. Semantic web için temel veri modeli olarak RDF (Resource Description Framework) kullanılabilir.

Bu arada .net versiyonlarının versiyon numarası ve özellik olarak web versiyonlarıyla beraber gitmesiyle Microsoft'un bu standartları kabul ettiği ve önem verdiği sonucunu çıkarabiliriz.

Başka bir açıdan bakarsak Web 2.0 aslında bir sosyal ağ patlaması yaratmıştı. Birbirine çok benzeyen ama kurgu olarak farklılık gösteren çok sayıda site geliştirildi. Web 3.0 'ın Web 2.0'ın içerik nimetlerinden faydalanıp veri analizi konusunda odaklanması muhtemel. Diğer taraftan SOA mimarisiyle daha çok iş ihtiyaçlarını karşılayacağını ve bu tarafta yeni açılımlar yaratacağını düşünüyorum.
Note:This picture has been taken from http://www.instamedia.org/ web site.

17 Eylül 2007

Oracle'da Triggerlar

Sql Server'da triggerlar sadece işlem yapıldıktan sonra çalışır.

Oracle'da BEFORE ve AFTER ek komutlarıyla triggerların tetikleme işleminden önce veya sonra olmasına karar verebiliriz.



Bu ek komutlar da iki durumda kullanılabilir.
İşlem bazında BEFORE ve AFTER ek komutları uygulanabilir.
Satır bazında BEFORE ve AFTER ek komutları uygulanabilir.

CREATE TRIGGER trigger_ismi
BEFORE DELETE OR INSERT OR UPDATE
ON tablo_ismi
{pl/sql kod bloğu}

15 Eylül 2007

Microsoft Terminolojisi

Microsoft'un işletim sistemleri ve özel uygulamalarında kullandığı stringlerin 28 dildeki karşılıklarını buradan indirebilirsiniz.

Bir kısmı sadece Microsoft'a özel kelime grupları olmakla beraber büyük bir kısmı uluslararası yazılım geliştiren firmalar için faydalı olacaktır. Aslında her yazılım üreten firma için en azından bir kaç dilde bir terminoloji hazırlamak uygulama kalitesini arttıracaktır. Özellikle sektör spesifik yazılım üreten firmalar için bu çok daha önemli.

14 Eylül 2007

Tafiti Arama Motoru


Microsoft Tafiti adıyla Silverlight teknolojisinin kullanımını göstermek amacıyla live search ile entegre çalışan bir arama motoru geliştirdi. Microsoft klasik bilinirlik arttırma yaklaşımıyla görsel öğeleri ön plana çıkarmış. Ayrıca sonuçların ağaç yapısı ile gelmesi ilginç bir özellik olmuş. Silverlight ile uygulama geliştirmenin .net geliştiricileri için bir avantaj olduğundan daha önce bahsemiştim. Bunlar iyi tarafları.

Fakat kullanıcı olarak bu arama motorununun Google'a alternatif olabileceğini zannetmiyorum.

Nedenleri;
* Arama motoru için görsellik ne kadar önemlidir?
* Live Search arama motoru ve Google ile arasında ciddi performans farkları var.
* 1 sn nin altı sonuçlar getiren bir uygulama için ilk sayfa açılışının bir kaç sn sürmesi ne kadar uygun.

Son olarak da eğer Google böyle bir siteyle çıksaydı acaba bu kadar yaygın kullanılabilir miydi?

Ben Microsoft'un bu girişiminin sadece Silverlight bilinirliğini arttırmaya yönelik olduğu kanısındayım.

28 Ağustos 2007

Bir Servis Olarak Business Intelligence

DM Review Magazine'in Ağustos sayısında yayınlanan bir makalede On-Demand Business Intelligence kavramından bahsedilmiş. Değinilen en önemli konu Business Intelligence uygulamalarının SaaS (Software as a Service) mimarisinde çalışması.

Günümüz BI uygulamalarına baktığımızda çoğunlukla canlı olmayan ve işlenmiş verilerden raporlama yapılıyor. Gerçek zamanlı BI mimarisindeki hedef verilerin canlı olarak gelmesi.
Aşağıdaki şekilde şu anki BI uygulamaları ile SaaS mimarisindeki uygulamaların farkları belirtilmiş.


Aslında klasik BI çözümlerine bir alternatif olarak sunulması pek de olanaklı değil. Belki uygulamalarının bir kısmının SaaS olarak sunulması düşünülebilir.

Tasarım ve uygulama aşamasının ay mertebesinden günler mertebesine inmesi sektör ve kurum bazlı özel analiz süreci dolayısıyla yine sıkıntı yaratacaktır.

Kurulum takımının son kullanıcı olarak oluşması yine son kullanıcıların gelişimiyle alakalı. Şu anki Türkiye şartlarında bunu son kullanıcıdan beklemek pek de olabilir gelmiyor.

Özet olarak şahsi görüşüm SaaS mimarisindeki BI çözümlerden önce raporlanan datanın tam zamanlıya çok yaklaşması aşaması doğru bir geçiş olacaktır.

Gelişmeleri bekleyip göreceğiz.

25 Ağustos 2007

Veritabanı Tarafında Sayfalama (Paging)

Raporlama modüllerinde eğer sayfalamayı grid tarzı bir kontrole bırakmıyorsak aşağıdaki sorguları kullanarak verdiğimiz aralıktaki kayıtları çekebiliriz.Oracle'da daha önce var olan yapı Sql Server 2005 birlikte Sql server kullanıcıları için de eklendi.

Oracle için;

select * from (
select rownum rnum from (
select * from table
) t1
) where rnum between 101 and 200


Sql Server 2005 için (AdwentureWorks veritabanını kullandık)

select AddressLine1,City, ModifiedDate
from (select AddressLine1,City,ModifiedDate,row_number() over (order by
ModifiedDate desc)
as rnum from Person.Address) as RnumAdress
where rnum >= 101 and rnum <= 200

Fakat bu yapıların tek dezavantajı raporlama anında kayıt değişiklikleridir.
Örnek verecek olursak;
Sitede bir panelde online 100 kişi 10'arlı sayfalar halinde siteye giriş sırasına göre gösteriliyor. Eğer bu gezinme esnasında siteye yeni kişiler girerse bu kayıtlarda kaymalar olacaktır. Sayfalarda ilerlemeye devam ettikçe bir önceki sayfanın sonundaki kayıtların bir sonraki sayfanın ilk kayıtları olarak eklendiğini görürüz. Genellikle bu çok da zararlı olmayan durum performansı etkileyecek diğer yöntemlere tercih edilmektedir.

21 Ağustos 2007

Saas (Software as a Servıce)

Büyük iki S harfi arasına sıkıştırılmış 2 küçük a dan oluşan simetrik kısaltma; Software as a Service. Aslında direk yeni olmayan bazı yazılım davranışlarının bir jargon altında toplanması olarak tanımlayabiliriz. Müşterinin donanım ve yazılım ücreti ödemeden sadece üyelik ve düzenli servis ücretiyle hizmet aldığı bir model. SaaS modelinin yaygın kullanım alanları daha çok CRM,ERP, İnsan Kaynakları, B2B, B2C, İçerik Yönetim Sistemleri.

SaaS mimarideki CRM hizmeti konusunda pazar lideri durumunda Salesforce firmasının demosu size gerçek uygulamalar için bir fikir verecektir.

Gartner verilerine göre 2006 yılında 6.3 milyar $ olan SaaS pazarının 2011 yılında 19.3 milyar $'a çıkacağı varsayılıyor.

Microsoft'un bu mimari ile ilgili olarak .net 3.0 ve Sql Server 2005 teknolojilerinde geliştirdiği LitwareHR isimli bir örnek İnsan Kaynakları uygulaması mevcut.

Müşteri açısından değerlendirildiğinde SaaS mimarisinin klasik yazılım uygulamalarına bir kaç avantajını aşağıdaki şekilde sıralayabiliriz;

  • Kurulum süresi
  • Kurulum maliyeti
  • Genel bir uygulama olması nedeniyle kendilerini etkileyecek bir problemin muhtemelen genel bir problem olması.
  • Lokal uygulamalardaki teknik destek için müşteri ofisindeki destek gereksiniminin kalmaması.
  • Versiyon değişikliklerinin müşteriden bağımsız gerçekleşmesi

Daha önce büyük ölçüde SaaS mimarisinde değerlendirebileceğimiz email marketing ve mobil marketing uygulamalarının analiz ve yazılım geliştirme aşamalarında bulunmuştum. Yazılım üreten ve sağlayıcı konumundaki firmamız açısından yaşanan en büyük sorunun müşterinin kendi verilerini sağlayıcı server ında tutmak istememesiydi. Data güvenliği ve datanın sağlayıcı tarafındaki teknik kişiler tarafından bile görülemeyeceği bir model mutlaka sağlanmak durumunda. Bu nedenle özellikle CRM ve bu çerçevedeki Müşteri Veritabanı Yönetim projelerinin SaaS mimarisinde uygulanması bir miktar daha zorlaşmakta.

Daha detaylı bilgi için SaaS'in farklı açılardan ele alındığı SaaSblog u incelemenizi tavsiye ederim.

Note : This picture has been taken from http://www.tistory.com/ web site.