Google Analytics İzleme

15 Temmuz 2010

Her Yazılımcının Bilmesi Gereken Konseptler

Genelde olduğu üzere, şurada okuduğum bir yazıdan esinlenerek (çevirisini deburada gördüm daha sonra) bu işe kendi bakışımdan bir değinmek istedim.

İlk olarak ben her yazılımcının bunları bilmesi gerekir mi bilemiyorum. Ama genel olarak bilinmesi gerektiğine katılıyorum. Bir diğer nokta, uygulama geliştirilen platform farkı. Temel olarak iki çeşit uygulama türünden bahsedebiliriz:Stateless(durağan) ve UnStateles(durağan olmayan) uygulamalar. Gerçi günümüzde gitgide bu fark ortadan kalkıyor gibi ama daha çok var. Web uygulamaları durağandır. Yani yazılan kod belirli işlemlerden sonra render edilerek HTML’e dönüştürülür. Hafızada tutulmaz (bazı durumlar hariç). Durağan olmayan yapıda ise, uygulama bellekte çalışır halde bulunur ve işlemler oradan halledilir. Bu iki çeşit arasında bilinmesi gereken şeylerin büyük farklılık göstereceğini tahmin edebilirsiniz.

Neyse, konumuza dönersek :

1 ) İlişkisel Veritabanları (Relational Databases)

Günümüzde birçok veritabanı sistemi bulunmaktadır. Bunlardan en sık kullanılanı hiç kuşkusuz ilişkisel veritabanı sistemleridir. Örnek olarak, Microsoft SQL Server,Oracle , Mysql vs verilebilir. Buradaki mantık, tablolar arasında ilişkiler kurarak veri bütünlüğü, sınıflandırılabilirliği, kısıtlamaları gibi olayları sağlamaktır. Bu şekilde indekslenmiş yapılar kurulabilir, veritabanlarının yönetimi ve programlaması kolaylıkla gerçekleştirilebilir. Günümüzde hemen her veritabanı uygulamasında (özellikle ülkemizde) bu sistemler kullanılmaktadır. Bu sebeple kesin bilinmesi gerekenler listesine yazılabilir.

2) ORM (Object Relational Mapping)

Veritabanına erişim konusunda ortaya atılmış bir kavram ORM. Hafızada veritabanı tablolarının şemalarını oluşturarak (bunları sınıflara çevirerek), tam manasıyla nesneye yönelimli bir yapıda veritabanı işlemlerinin gerçekleştirilmesini sağlar. Burada SQL sorguları yerine direkt hafızadaki nesnelerle çalışılıp, oluşan data son safhada veritabanına gönderilir. ORM sistemleri kriter denilen parametreler alarak, filtreleme ve ilişkisel yapıları kullanma olanağı sunalarlar. En bilinen ORM sistemleri; HibernateLinqToSQL (aslında bunun bir ORM sistemi olup olmadığıyla ilgili çok tartışma var.), EntityFrameworkXPO dur. Bunların haricinde de çok ciddi ORM sistemleri vardır. Bu yapının en büyük dezavantajı, verileri tamamen hafızada tuttuğu için, büyük çaplı verilerde yavaş olmasıdır. (bkz)

3 ) Güvenlik

Gerek desktop, gerek web uygulamalarında güvenlik artık çok önemli bir hale geldi. İnsanlar günlük hayatlarında ve çalışma hayatlarında bilgisayarları kullanmaya başladıklarından beri, üzerinde çalıştıkları ya da depoladıkları verinin önemi her geçen gün arttı. Büyük bir kamu kurumunun sayısal ortamda tutulan bir yıllık muhasebe kayıtlarının silindiğini bir düşünün. Bu ve bunun gibi birçok senaryo günümüzde pek olasılık dışı değil. Bu sebeple uygulama güvenliği çok önemlidir. Her yazılımcı en azından temel düzeyde de olsa, yazılım geliştirdiği ortamla ilgili güvenlik kurallarını bilmelidir. Yoksa sonuçları çok kötü olabilir. Hiçbir yazılımcının yazdığı uygulamanın lamerlar tarafından ele geçirildiğini görmek isteyeceğini sanmam. Ayrıca Authorization ve Authentication ında önemi unutulmamalı.

4 ) Veri Yapıları (Data Structures) ve Algoritma

Veri yapıları programlamanın temel taşıdır. Bu konuyu kesinlikle her yazılımcının sular seller gibi bilmesi ve kullanması gerekir. Verileri sınıflandırmak ve onları düzenli bir şekilde kullanmak çok önemlidir. Bana göre gerçekten iyi programcılar, veri yapılarını çok iyi kullanabilen programcılardır. Burada veri yapıları derken sadece çoğu dilde size hazır olarak sunulmuş veri yapıları kalıplarının kullanımından bahsetmiyorum. Konu olarak veri yapılarını kavramalı ve gerekirse kendi veri yapılarınızı tasarlayabilmelisiniz. Özellikle hafızaya çok yüklenecek yazılımlar üzerinde çalışırken (oyunlar gibi) veri yapıları daha bir önem kazanır. Algoritma konusunda ise söylecek pek birşey yok. Bütün programcılarda bulunması gereken bir yetenek olmalı.

5 ) Katmanlı Mimari

Katmanlı mimaride temel amaç, uygulamanın belli başlı alanlarını birbirinden ayırarak aşağıdaki avantajları sağlamaktır :

  • Kolay geliştirme,
  • Kolayca değiştirme ve yeni eklemeler yapma
  • Kod içerisinde hakimiyet
  • Tekrarlardan kaçınma
  • Birbirinden bağımsızlık sayesinde biçok yerde kullanabilme

Veritabanı uygulamalarında genelde 3 katman üzerinde durulur. Tabiiki programcının kurduğu yapıya göre bu farklılık gösterebilir. Bunlar :

  1. DAL (Database Accsess Layer – Veritabanı Erişim Katmanı)
  2. Bussiness Logic (İş katmanı)
  3. UI – (User Interface ya da GUI – Kullanıcı Arabirimi)

6 ) Test

Yazılım geliştirmeyle test elbetteki ayrı işlerdir. Aslına bakılırsa ayrı uzmanlık alanları gerektirir (Tıpkı kalite mühendisliği ya da analistlik gibi). Fakat her yazılımcı testten anlamak zorundadır. Nasıl test yapılmalı veya test yaparken nelere dikkat edilmelidir? gibi soruların cevabını verebilmelidir. Özellikle ülkemizde test mühendisi pek yaygın bir kavram olmadığından bu gereklidir. Unit test, fonksiyonel test, sistem testi gibi birçok test şekli vardır. Bunların en azından ne oldukları konusunda bir fikir sahibi olunmalıdır. Test yapmak için belirli otomatik araçlarda kullanılabilir (örn: JUnit , NUnitMbUnitZaneBugTestDriven.NetVisual Studio Team Test Edition) (ayrıca bkz. Unit Testing vs Functional TestingOtomatik Test Araçları ve Portalı )

7 ) Programlama Yaklaşımları, Desenler ve Yazılım Mühendisliği

Bu başlıkları sanırım aynı yerde ele alabiliriz. Programlama yaklaşımları, bir yazılımın geliştirme süreçlerinin otomatize edilmiş halleridir. Daha önceden birçok kişi tarafından denenmiş ve uygulanmakta olan süreç tasarımlarıdır. Örnek olarak :Agile Software DevelopmentExtreme ProgramingCollaborative software development model verilebilir. Bunun gibi yazılım mühendisliği konularını kesinlikle her yazılımcının bilmesi gerekir. Tasarım desenleri (Design Patterns) ise yazılımların geliştirmesi için daha önceden denenmiş belirli kalıplardır. Hemen her duruma uygun bir tasarım deseni vardır. Bunlar birçok kullanıcı tarafından kullanılıp test edilerek optimize edilmiş olduklarından, kullanmak kesinlikle çok faydalıdır. Belirli bir kalıp kullanılarak tasarlanmış yazılımlar, hem geliştirilmeye açık hem karışıklıktan ve kod kalabalığından uzak, hem de okunabilirliği yüksek olabilirler (en azından bu atılacak ilk adımlardan birisidir). (Bu konuyla ilgili şurası harika bir kaynak)

8 ) Nesneye Yönelimli Programlama

En önemlisini en sona sakladım.

NYP’nin başlıca özelliği, yazılımda birimselliği (İngilizce – modularity) benimsemesidir. NYP’nın altında yatan birimselliğin ana fikri, her bilgisayar programının (izlence), etkileşim içerisinde olan birimler veya nesneler kümesinden oluştuğu varsayımıdır. Bu nesnelerin her biri, kendi içerisinde veri işleyebilir, ve diğer nesneler ile çift yönlü veri alışverişinde bulunabilir.

(Kaynak Vikipedi). Tartışmasız olarak her programcının bilmesi ve etkin bir şekilde kullanabilmesi gereken bir konseptir.


Aslında daha birçok şey söylenebilir. Yeni ve yeni sayılabilecek teknolojier (Ajax, Cloud Computing, Grid Systems, MultiProcessor Programming vs) üzerinde de düşünmek iyi olur. Bu konseptler daha ne kadar geçerliliğini korur bilemem.

 

Ne de olsa değişmeyen tek şey değişimin kendisidir.

Alıntı: http://kaan.basesistem.com/?p=32


ExtJs dokümanları

What is a panel? What's the functionality? How do you create one?

Build Ajax applications with Ext JS

14 Temmuz 2010

Bir CEO'nun zorunlu istifasının ardından...

General Motors CEO’su Fritz Henderson’ın zorunlu istifası, insan kaynakları yönetiminin stratejik boyutunun önemini ve etkilerini bir kez daha vurguluyor.

2008 yılı küresel ekonomik krizinin ardından, son derece gerçekçi bir biçimde yapılan senato sorgulamaları ile kendisine 4 aylık son bir şans verilen General Motors CEO’su Rick Wagoner’in son başarısızlığının ardından Fritz Henderson, CEO’luk görevine getirildiğinde, TVlerde ağzı kulaklarında bir menuniyetle gelecek başarılarından söz edip, 1 ay sonrasında da ortalama bir Amerikan vatandaşının içine sığamayacağı küçüklükte ve asla tercih etmeyeceği konforsuzlukta bir yeni araba modeli ile şirketin geleceğini kurtaracağını basına açıklamıştı, ancak göreve gelişinden 8 ay sonra istifa etmek zorunda kaldı.
 
Harvard Business School MBA diplaması ile iş yaşamına General Motors’da başlayan, yükselme basamaklarını tırmanıp, 25 yılda CEO olan Fritz Henderson acaba ne zaman yeteneksizlik sınırına gelmişti? Son görevi ile mi, yoksa daha önce mi? Görünen her başarı gerçek başarı mı, yoksa uzun vadede ve gerçekçi bir biçimde değerlendirilerek ortaya çıkan mı?
Bu zorunlu istifa ve General Motors’un içine düştüğü durum, insan kaynakları yönetiminin stratejik boyutunun önemini ve etkilerini bir kez daha vurguluyor.
 
İlk göze çarpan aksamanın, performans yönetiminde oluştuğunu söyleyebiliriz. Performans Yönetimi modellerinin temel taşı, organizasyonların stratejik hedef ve planlarıdır. Bunlardan kopuk olarak hazırlanacak ve kısa-orta-uzun vadeli stratejik planların gerçekleştirilmesine hizmet etmeyecek bir performans yönetimi ve değerlendirme modeli daima bir şirketin sonunu hazırlar. Performans yönetimi ve değerlendirmesi modellerinde en sık yapılan hata, kısa-orta-uzun vadeli stratejik hedef ve planlarının, KPI olarak anılan temel performans belirleyicileri tanımlanırken dengeli bir biçimde kombine edilemeyişidir. Performans ödemelerinin kısa vade olarak tanımlanan 1 yıl için yapılması, performansın sürdürülebilirliğini sağlayacak olan orta ve uzun vadeli hedefleri ve etkilerini genellikle gözardı etmektedir.
 
Son beş yıldır zarar eden bir dünya devi şirket, CEO’suna bu beş yıl boyunca her yıl yüklü bonuslar ödemeye devam edebilmiş ve 5 yıl boyunca CEO’luk görevini devam ettirmesine onay vermiştir. Yani performans değerlendirmeye temel alınacak olan kriterler ile şirketin kısa-orta-uzun vadeli hedefleri arasında bir uyum oluşturul(a)mamıştır. Ya da orta-uzun vadeli hedef, şirketin zarar etmesi mi idi!
 
Kariyer Geliştirme ve Yedekleme açısından durumu analiz ettiğimizde; tüm iş yaşamını GM’de geçirmiş ve tüm CEO’luk süresince GM’in zarar ettiği Rick Wagooner ancak Obama Yönetiminin talebi ile işi bırakmış ancak yerine, kendisinden 5 yıl sonra GM’de iş hayatına başlayıp, aynı kariyer basamaklarından geçen COO Fritz Henderson getirilmiştir. Bir başka deyiş ile başarısız bir CEO’nun yedeği, kendisinin prototipi bir olmuş ve 8 ayda CEO’luk görevini yerine getiremeyeceği görülerek zorunlu istifa gündeme gelmiştir. Bu durum, sadece GM için değil, tüm şirketler için, yedekleme planlarını ne kadar sağlıklı yaptıkları, kariyer gelişimi konusunda ne kadar gerçekçi olduklarını tekrar sorgulamalarını gerekli kılıyor. Pozisyon gerekliliklerinin gerçekçi saptanması ve pozisyonları dolduracak kişilerin sahip olması gereken özelliklerin doğru ölçümlenmesinin yanı sıra gerçekçi bir biçimde yorumlanarak karar verilmesi, şirketler için hayati önem taşıyor. Şirketlerin bu konuda işletme körlüğünü kabul ederek, taze kan gereksinimine önem vermeleri, sırça köşklerin rehaveti ile mevcut kişilerin özelliklerine uygun pozisyon gereklilikleri saptamak yerine, pazarda mevcut her rakibi ve tüm müşteri beklentilerini ciddiye alarak yeni gereksinimleri saptamaları ve gelişim planlarını bunların üzerine kurmaları gerekiyor. 
 
Sadece yedekleme değil, şirketlerin büyümeleri ile artan istihdam için de, pozisyon gerekliliklerinin pazar gereksinimleri ile uyumlu olarak değiştirilmesi ve geliştiştirilmesi, bir yandan buna uygun seçme ve yerleştirme yapılırken diğer yandan mevcut insan kaynağının pazar gereksinimlerine uygun olarak geliştirilmesi, şirketlerin yaşamlarını devam ettirebilmelerinin en temel koşulu.
 
Son söz olarak; bu zorunlu istifa aşamasına gelinene kadar, şirketin tüm paydaşlarının (çalışanlar, yöneticiler, sendikalar, hissedarlar, kreditörler, ..) bu duruma ne kadar katkısı oldu, etik olarak nasıl sorgulanmalı gibi sorular da bir başka yazı konusu.

Gül Akçasoy
Alıntı: Yenibiriş

13 Temmuz 2010

İçinde coolite ext:combobox bulunan coolite ext:panel'i hide() show() yapma esnasında yaşanan görüntüleme problemi

İçinde coolite ext:combobox bulunan coolite ext:panel'i önce hide() sonra show() metodunu kullanarak gizleme ve görüntüleme yaptığımzda içerdeki combobox'ın item'leri hatalı gösterilmektedir, genişliği küçülmektedir. Bunu engellemek için combobox item'lerinin sayfa oluşturulduğu esnada oluşturulması sağlanmalıdır, normalde ext'de combobox'ın item'leri, kullanıcı tıkladığı esnada oluşturulmaktadır. Bunu LazyInit parametresi veya property'si ile yaparız. LazyInit="false" olduğu zaman combobox item'leri sayfa oluşturulduğu esnada oluşturulmaktadır.

<ext:Panel ID="extpnlRequestDetails" runat="server" Border="false" Hidden="true" HideMode="Display" HideParent="true" >
<Body>

<ext:ComboBox ID="cbJobType" runat="server" Width="210px" AllowBlank="false"  AutoShow="true" LazyInit="false"   >
                                                                <Items>
                                                                    <ext:ListItem Value="YENI RAPOR GELISTIRME" Text="Yeni Rapor Geliştirme" />
                                                                    <ext:ListItem Value="MEVCUT RAPOR GUNCELLEME" Text="Mevcut Rapor Güncelleme" />
                                                                </Items>
                                                            </ext:ComboBox>
</Body>
</ext:Panel>


js kodu ile paneli görüntüleme:

var _extpnlRequestDetails = Ext.getCmp('extpnlRequestDetails');

            if (pSelectedValue == '3') {
                _extpnlRequestDetails.show();
            }
            else {
                _extpnlRequestDetails.hide();
            }


05 Temmuz 2010

Sap Gui'de RFC görünüyor ama .net Add Adapter Service Reference penceresinde görünmeme problemi

Bir RFC, Sap Gui'de görünüyor ama .net Adapter Service Reference penceresinde görünmüyorsa, bunun nedeni bu rfc'nin remote-enabled module yapılmamasından dolayıdır.
Örneğin Sap'de zhr_birlink_sat_f003 rfc'si görünüyor ama .net add adapter service reference penceresinde görünmüyor.


24 Haziran 2010

Toshiba Satellite laptop'da Scroll Lock tuşu

Normalde Toshiba Satellite laptop'da Scroll Lock tuşu bulunmamaktadır. Bu tuşu Fn + F12 kombinasyonu ile sağlanmaktaymış. Buna ihtiyacım Teamviewer programını kullanırken karşı bilgisayarda ekran görüntüsü tuşuna(printscreen) basmayı etkin kılmak için oldu. Yani Fn+F12+PrintScreen üçlü kombinasyonu ile Teamviewer içinde karşı bilgisayarda ekran görüntüsü özelliği çalıştırılmış olmaktadır.

string.format metodunda { (süslü parantez) kullanmak

string.form metodu .net yazılımcıları için string türündeki verileri daha temiz bir şekilde biçimlendirmeleri için oldukça işe yarayan bir metod.ancak bu metodu kullanırken biçimlendirmek istediğiniz string ifadesinde { (süslü parantez) karakteri geçiyorsa muhtemelen "Input string was not in a correct format Error" hatası alırsınız.bu sorunu çözmek için de, yapılması gereken { ve } karakterini çift olarak kullanmak.örneğin:

_field = string.Format("public {0} {1} {{ get; set; }}", TurDondur(dc.DataType.Name), dc.ColumnName);


Kaynak:http://www.maxiasp.net/post/2008/12/30/stringformat-metodunda-7b-(suslu-parantez)-kullanmak.aspx

21 Haziran 2010

Coolite v0.8 ie8 görüntüleme sorunu, uyumsuzluk sorunu

Bu sorunu yaşamamak için:

protected void Page_Load(object sender, EventArgs e)
        {

            // ie 8'de ie 7 gibi çalışmasını sağlama
            // 21.06.2010 ishak
            Response.AppendHeader("X-UA-Compatible", "IE=EmulateIE7");
            ....
        }

kodunu sayfaya eklemek gerekmektedir.
Direkt aspx sayfasına head etiketi altına <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" /> eklemesi işe yaramaktadır, bu etkietin üstüne sürekli Ext css tanımları atanmaktadır, bundan dolayı da ie7 çalıştırma özelliği çalışmamaktadır. Code-behind tarafında kodla eklenmelidir.

Başka bir çözüm:

Coolite, by default will "break" any page that has the <meta http-equiv="X-UA-Compatible" content="IE=7" /> tag in  it, as IE requires the tag to be pretty much the first one in the <head> tag

Any page that has Coolite components loaded will thus have the Coolite script/CSS tags inserted right at the top of the <head> element. Fear not though, the Coolite ScriptContainer comes to the rescue! By adding this into the <head> element in your page/master page, you can tell Coolite where to insert its tags which thus stops it from breaking the X-UA-Compatible meta-tag.

---


16 Haziran 2010

sap gui'de bir yazıyı (text) seçme, geçeci belleğe kopyalama (copy & paste at sap gui)

sap gui'de herhangi bir yazıyı seçmek için klasik windows Ctrl+C tuş seçeneği işe yaramamaktadır. 
Seçim yapabilmek için önce Ctrl + Y sonra Ctrl + C yapmalıyız, Ctrl + V ile de istediğimiz yere yapıştırma yapabiliriz.

14 Haziran 2010

Coolite Ext Textfield kontrolünde arkaplan rengini değiştirme

Normal görünüm:

<ext:TextField ID="TextField1" runat="server" Width="280px"  >
                                </ext:TextField>
ext_textfield_normal_gorunum.png

Coolite Ext:Textfield kontrolünün arkaplan rengini değiştirmek için 
StyleSpec="background-color:yellow; background-image:none; " şeklinde atama yapılmalıdır.
Bu atama sonucunda aşağıdaki gibi görünmektedir:
ext_textfield_renkli_gorunum.png



08 Haziran 2010

Usb Bellek veya Flash Bellek'de klasörler Gizli niteliği donmuş veya pasif olmuş

Usb Bellek veya Flash Bellek'de klasörler Gizli niteliği donmuş veya pasif olmuş, bundan dolayı klasör ve dosyalarımı göremiyordum. Antivirüs taraması yaptım herhangi bir virüs bulmadı. Ben de bu nitelik bilgilerini değiştirmek için aşağıdaki dos komutunu dos ismtemcisinde çalıştırdım ve sorun düzeldi.

Bellek kartı pc'de H ile bağlıydı, dosda H: yazarak , bu sürücüye geçtim.

H:\>attrib -r -a -s -h /s /d *.*

Bu komut öznitelikleri kaldırmaya yaramaktadır. 

Yardım aldığım kaynak:

06 Haziran 2010

NoSQL Giriş ve MongoDB

NoSQL, isminden de anlaşılabileceği gibi SQL kullanılmadığı veritabanlarına verilen genel bir isimdir. Genelde ORM ile karıştırılmaktadır. NoSQL, işişkisel veritabanlarına (RDMS) alternatif bir tekniktir.

ilişkisel bir veritabanında (RDMS), tablolar oluşturur, tabloları birbirleriyle ilişki kurarak, join, kartezyen gibi SQL cümlecikleriyle kullanırız. Bunun birçok faydası vardır. Hatta yazılım geliştirirken, SQL den kaçınmak maksadıyla, ORM aracları geliştirilmiştir. Bu sayede, veritabanında yer alan tablolara, nesne gözüyle bakılabilmiş, OOP mantığıyla üzerinde işlem yapılabilmiştir.

NoSQL ise böyle birşey değildir. ORM araçları, sizin bir nesneye set ettiğiniz değerleri, SQL cevirerek, sizin SQL ile uğraşmanızı engellemiş olurlar. NoSQL veritabanları dağıtık bir mimari ile oluşturulmuş olup, yarının teknolojisi olarak görülmektedirler. Google’ın BigTable, Amazon’un Dynamo, Facebook’un Cassandrabu tür birer veritabanlarıdır.Bu üç veritabanı da PB boyutunda veri tutmak için geliştirilmiştir. Ben bunlardan konfigurasyon acısından daha kolay yapılan döküman tabanlı bir veritabanı hakkında bilgi vereceğim: MongoDB.

MongoDB, 10gen tarafından geliştirilmiş, döküman tabanlı bir NoSQL veritabanıdır. Bubağlantıdan işletim sisteminize göre indirebilrisiniz. Eğer Ubuntu/Debian kullanıyorsanız, bu adresten nasıl kurabileceğinizi bakabilirsiniz.

Alıntı: http://rayyildiz.com/2010/05/nosql-giris-ve-mongodb/


04 Haziran 2010

Coolite Ext Textfield kontrolünde 0-9 arasındaki karakterleri doğrulama metodu yazma

Örnek:

js fonsksiyonu:

/* 04.06.2010 ishak, 0-9 arasındaki rakamları giriş kontrolü yapan metod */
        function validatorNumber(strValue)
        {
                //debugger; 
                // \s=boşluk karakteri
                var objRegExp = /([^0-9])+/;
                if(objRegExp.test(strValue))
                {
                    return false;
                }
                else
                {
                    return true;    
                }
        }


Coolite ext kontrolü:

<ext:TextField runat="server" ID="tfCallNumber"
                                        MaxLength="10" MaxLengthText="Bu alan 10 karakter olmalı!" 
                                        MinLength="10" MinLengthText="Bu alan 10 karakter olmalı!"                                        
                                        AllowBlank="true"
                                        Width="150px"
                                        MaskRe="[0-9]" Validator="validatorNumber"
                                         >                                        
                                    </ext:TextField>



Ext.form.VTypes doğrulama yöntemlerine (custom)size özgü özel doğrulama metodu ekleme

Ext.form.VTypes doğrulama yöntemlerine (custom)size özgü özel doğrulama seçenekleri ekleyeceğiz.

Örneğimiz:

js kodu:


// custom Vtype for vtype:'time'
var timeTest = /^([1-9]|1[0-9]):([0-5][0-9])(\s[a|p]m)$/i;
Ext.apply(Ext.form.VTypes, {
    //  vtype validation function
    time: function(val, field) {
        return timeTest.test(val);
    },
    // vtype Text property: The error text to display when the validation function returns false
    timeText: 'Not a valid time.  Must be in the format "12:34 PM".',
    // vtype Mask property: The keystroke filter mask
    timeMask: /[\d\s:amp]/i
});

Başka bir örnek:



// custom Vtype for vtype:'IPAddress'
Ext.apply(Ext.form.VTypes, {
    IPAddress:  function(v) {
        return /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/.test(v);
    },
    IPAddressText: 'Must be a numeric IP address',
    IPAddressMask: /[\d\.]/i
});


Coolite ext kontrolünde kullanımı:


<ext:TextField runat="server" FieldLabel="IP Adresi" Vtype="IPAddress" />


<ext:TextField runat="server" FieldLabel="Ders Saati" Vtype="time"  />


Yukarıdaki js doğrulama metodu eklemelerinden time doğrulaması içinde:
  timeText ile doğrulama sonucunda kullanıcıya hata bilgisi verilir,
  timeMask ile de istemci tarafında kullanıcının klavyeden tuşa basarken kullanılacak regex tanımlanmaktadır.

Coolite Ext Textfield kontrolünde türkçe alfa karakterleri doğrulama metodu yazma

Örneğimiz:

js fonksiyonu:

<script type="text/javascript" language="javascript">
/* 04.06.2010 ishak, türkçe karakter girişi kontrolü yapan metod */
        function validatorTurkishAlphaWithSpace(strValue)
        {
                //debugger; 
                // \s=boşluk karakteri
                var objRegExp = /([^a-zA-ZçÇğĞıIiİöÖşŞüÜ\s])+/;
                if(objRegExp.test(strValue))
                {
                    return false;
                }
                else
                {
                    return true;    
                }
        }
        
</script>

Coolte kontrolümüz:

<ext:TextField runat="server" ID="tfSurname" 
                                        AllowBlank="false" BlankText="Bu alanı doldurmanız gerekiyor!" 
                                        MaxLength="40" MaxLengthText="Bu alan 40 karakteri geçemez!"
                                        Width="150px"
                                        Validator="validatorTurkishAlphaWithSpace" MaskRe="[a-zA-ZçÇğĞıIiİöÖşŞüÜ\s]" >
                                        <Listeners>
                                            <Change Handler=" upperCase(this.id);" />
                                        </Listeners>
                                    </ext:TextField>


Coolite Ext Textfield kontrolünde isteğinize göre farklı doğrulama metodu yazma

Coolite Ext Textfield kontrolünde isteğinize göre farklı doğrulama metodunu istemci tarafında javascript ile yazacağız.
0-9 arasındaki rakamların ve /(slash) karakterlerine izin verilecek şekilde örnek yaptım. Burada bu doğrulama için regular expression yöntemini kullandım.
Örnek şu şekildedir:

<script type="text/javascript" language="javascript">

/* 03.06.2010 ishak, karakter ve slash girişi kontrolü yapan metod */
            function NumberWithSlashCheck(strValue)
            {
                //debugger;
                var objRegExp = /([^0-9/])+/;
                if(objRegExp.test(strValue))
                {
                    return false;
                }
                else
                {
                    return true;    
                }
            }            
</script>

Doğrulama js metodu yazdığımız coolite kontrolü ile ise şudur:

<ext:TextField runat="server" ID="tfVolumeNo" MaxLength="10"  
                                        MaxLengthText="Bu alan 10 karakteri geçemez!"
                                         Width="150px" MaskRe="[0-9/]" Validator="NumberWithSlashCheck" >
                                    </ext:TextField>


Bu kontrolün MaskRe="[0-9/]" özelliğine yapılan atama ile de istemci tarafında klavye tuşuna basma esnasında kontrol edilmelip engelleme yapılmaktadır. Yazdığımız js fonksiyonu  da Validator="NumberWithSlashCheck" özelliğine atanmaktadır.