4 Aralık 2009 Cuma

Java FX Unknown Profile : Mobile

Eğer Java FX kodlarken mobile profile seçiliyken emülatörleriniz devreye girmiyor ve
unknown profile: mobile tarzında bir uyarı veriyorsa, sebebi dil ayarlarınızın Türkçe olmasıdır. Bölgesel ayarlardan dili İngilizce(Amerika) yaparsanız probleminiz çözülür.
Bu nasıl bir hataysa neredeyse bütün yazılımlarda karşımıza çıkıyor ve hep en son aklımıza geliyor. Sadece biz türkler yaşadığımız için, internette hatayla ilgili bir bilgi de olmuyor.


Neyse hatasız günler...:p

24 Kasım 2009 Salı

Siz hala annenizin internetini mi kullanıyorsunuz?

Gün itibariyle 10 mb/s lik yeni internet bağlantım aktif edildi. Ben de hali hazırda hem TTNET Adsl hizmetine hem de Superonline Fiber İnternet hizmetine sahipken ufak bir test yapayım dedim. Aslında test yapmaya gerek yok TTNET 1 mb/s Superonline 10mb/s yani teorik olarak 10 katı daha hızlı. Aslında burada en büyük fark fiyat. Çünkü ikisi için de aynı ücret ödenmekte.:):) Şansı olupta superonline'a geçmeyenler için yararlı olabilir diye düşünüyorum.

Öncelikle Superonline Fiber İnternet için binanıza fiber kablonun gelmiş olması gerekiyor. Kablo geldikten sonra talebiniz doğrultusunda en fazla 2 gün içinde yeni bağlantınıza kavuşuyorsunuz.



HHHHIIIIZZZZZ


Aslında bir internet bağlantısını ölçmek için 2 önemli kriterimiz olduğunu düşünüyorum. Birisi uptime (bağlı kalabildiğimiz süre) ki buna yorum yapacak kadar superonline kullanıcısı değilim. İkincisi ise hız!! İşte bunu ölçebilecek durumdayım. hemen www.speedtest.net adresine girelim ve sonuçlarını görelim.








TTNET testi için söylenebilecek çok şey yok :) Download 0.88 Mb/s

















Superonline ise 10.23 Mb/s download hızı sunuyor :) Yirim...




Speedtest sitesine güvenmeyip aynı serverdan iki bağlantıyla da dosya indirmeyi dedim. Bunlar da o sonuçlar...

(Download Manager Kullanılmadan)








TTNET üzerinden House indirirklen görebileceğiniz hız 76.4 KB/sn :)



Superonline farkı 302 KB/s




TTNET ile Download manager kullanarak (10 parça yaratılmıştır) 106 kb/sn download hızına ulaşılıyor.




Ve işte fark, 1160 kb/s :o)




Sonuç olarak aynı fiyata (ayda 29 TL) 10 kata kadar daha hızlı internet. Cooll :)


Bu arada yanında verilen Pirelli marka modem de çok fonksiyonel. Hem telefon, hem de data aktarımı işlerinizi çözmenin yanında, üzerindeki usb portuna flash disklerinizi takarak dosyaları wireless bir şekilde paylaşmanıza da olanak sağlıyor.

Yaşasın download :) Saygılar....

2 Ekim 2009 Cuma

Materialized View

Eveet ilk bilgilendirme yazımıza materialized view larla başlayalım.


Nedir
??
Update edilebilen, tablolaşmış view'lardır diyebiliriz sanırsam.

Ha tablo, ha MV...

Basit anlamda MV'lar bir sorgunun tablolaşmış halidir diyebiliriz. E o zaman bu tablodur derseniz, ben de size "e tablodur" diye yanıt vermekte geri kalmam. Peki bu işin sırrı nerede? MV'lar siz refresh dediğiniz anda seçtiğiniz yönteme göre sorguyu yeniden çalıştırıp sizi bir sürü zahmetten kurtarır.

Ne Gibi?
  • Farklı lokasyondaki tablolardan topladığınız verileri tek komutla veya tanımlanmış bir iş sayesinde periyodik olarak özet tablonuzda toplayabilirsiniz.
  • MV'lar üzerine indeks tanımlayabileceğiniz için, sorgularınız çok çok hızlı çalışır. Bu indeksleri bir kere yaratırsın biter.
  • Üzerinde değişiklik yapılabilen MV'ler tanımlayabilirsiniz ama ben burada sadece Read-Only Mv'lardan bahsedicem.
  • Fast Refresh özelliği sayesinde sadece değişen kayıtlar güncellenir.

E ne zaman kullanıcaz?

  • Kayıt sayınız artıp, rapor sorgularınız çok geciktiğinde.
  • Birden fazla tablodan sorgu almak sizi zorladığında. (join olaylarını abarttığınızda)
  • Özet tablolarınızı periyodik olarak doldurmak istediğinizde.
  • En önemlisi (tabi bence yoksa Oracle illa böyle olacak demiyor.) Anlık olmayan raporlarınızda, yani 1 gün gecikmeli ya da ayda bir verdiğiniz raporlarda veya periyodik güncellenmesi gereken verilerde.
Asıl Sorun Nasıl Kullanıcaz?

Bunun için örnek verilerimizi hazırlayalım.


İki adet tablo oluşturulalım bunlardan birisi çalışanları diğeri de maaşları tutsun.
Yanlız ikinci tabloda maaşlar ay ay bulunsun.

(sorguları istediğiniz bir kullanıcı adı altında çalıştırabilirsiniz)


CREATE TABLE SCOTT.Personel
(
PersonelKimlikNo INTEGER,
PersonelAdi VARCHAR2(40),
PersonelSoyadi VARCHAR2(40)
);

CREATE TABLE SCOTT.MAAS
(
MAASID NUMBER,
PERSONELKIMLIKNO NUMBER,
MAAS NUMBER(10,2)
);

CREATE UNIQUE INDEX SCOTT.PK_MAASID ON SCOTT.MAAS
(MAASID);


ALTER TABLE SCOTT.MAAS ADD (
CONSTRAINT PK_MAASID
PRIMARY KEY
(MAASID);






İçlerine biraz da veri ekleyelim

SET DEFINE OFF;
Insert into SCOTT.PERSONEL
(PERSONELKIMLIKNO, PERSONELADI, PERSONELSOYADI)
Values
(1, 'Neşe', 'Oya');
Insert into SCOTT.PERSONEL
(PERSONELKIMLIKNO, PERSONELADI, PERSONELSOYADI)
Values
(2, 'Sevinç', 'Kaya');
COMMIT;



SET DEFINE OFF;
Insert into SCOTT.MAAS
(MAASID, PERSONELKIMLIKNO, MAAS)
Values
(1, 1, 50);
Insert into SCOTT.MAAS
(MAASID, PERSONELKIMLIKNO, MAAS)
Values
(2, 1, 70);
Insert into SCOTT.MAAS
(MAASID, PERSONELKIMLIKNO, MAAS)
Values
(3, 2, 50);
Insert into SCOTT.MAAS
(MAASID, PERSONELKIMLIKNO, MAAS)
Values
(4, 2, 60);
COMMIT;


Senaryo olarak da bu insanların çalışarak, hakederek :p bizden ne kadar (toplamda) maaş aldıklarını görmek isteyelim ve bunları da bir mv yaparak ayda bir güncelleyelim...


Şimdi sorgumuzun cevabı şu şekilde olacak


Personel Adı / Personel Soyadı / Bugüne kadar aldığı toplam maaş

sql de şu şekilde :

SELECT
M.PERSONELKIMLIKNO, sum(M.MAAS)
FROM SCOTT.MAAS M group by M.PERSONELKIMLIKNO;

Bu sql sayesinde personel bizden bu güne kadar toplam ne kadar maaş almış görebileceğiz.

Şimdi karar vermemiz gereken başka bir konu var. MV miz güncellenecek ama hangi yöntemle güncellenecek. Ben burada en sık kullanılan ya da bence kullanmamız gereken (basit mv ler için) Fast REFRESH metodu. Bu metodu kullanabilmek için, tablolarımızın loglanması gerekecek, böylece biz mv mizi yenileyeceğimiz zaman sadece değişen kayıtları güncelleyeceğiz.

Şimdi gelelim log tablo oluşturmaya

maaş tablosu için


CREATE MATERIALIZED VIEW LOG ON SCOTT.MAAS
NOCACHE
NOLOGGING
NOPARALLEL
WITH ROWID, SEQUENCE,
(MAASID,PERSONELKIMLIKNO,MAAS);

Log tablosu oluşturmak göründüğü gibi gayet kolay.


Artık Mv mizi create edip test edebiliriz.

İşte beklenen mv create sql'i.



CREATE MATERIALIZED VIEW SCOTT.PERMAAS
NOCACHE
NOLOGGING
NOCOMPRESS
NOPARALLEL
BUILD IMMEDIATE
USING INDEX
REFRESH FAST ON DEMAND
NEXT trunc(sysdate) + 1
AS
SELECT
M.PERSONELKIMLIKNO, sum(M.MAAS) TOPLAMMAAS
FROM SCOTT.MAAS M group by M.PERSONELKIMLIKNO;



NEXT trunc(sysdate) + 1 komutu sayesinde mv'miz hergün gece yarısında kendini yenileyecek.

Elle güncelleme için,


BEGIN
DBMS_SNAPSHOT.REFRESH(
LIST => 'SCOTT.PERMAAS'
,METHOD => 'F'
,PUSH_DEFERRED_RPC => TRUE
,REFRESH_AFTER_ERRORS => FALSE
,PURGE_OPTION => 1
,PARALLELISM => 0
,ATOMIC_REFRESH => TRUE
,NESTED => FALSE);
END;
/


kodunu kullanabilirsiniz.


Sorgulama Nasıl Olacak?

Herhangi bir tablodan sorgulamadan farksız. Üzerine index yaratıp sorgulamalarınızı hızlandırabilirsiniz. Örnek bir sorgulama sql'i de ekleyip bitirelim mv nasıl yaratılır konusunu.



SELECT
P.PERSONELKIMLIKNO, P.PERSONELADI, P.PERSONELSOYADI,M.TOPLAMMAAS
FROM SCOTT.PERSONEL P,SCOTT.PERMAAS M where m.PERSONELKIMLIKNO = P.PERSONELKIMLIKNO ;





Faydalı olması dileğiyle sevgiler, saygılar...

Yazacak çok şey yok

Eski bir kızılderili atasözü "Karnım tok diyenden korkacaksın, en çok onlar yer,içer, mutluluk çubuğuna bile sarkar" der.

Ben de böyle başlıyorum blog sayfama.;)