Shay günü
Ne yapardiniz? Karari siz verin.
Komik bir cümle beklemeyin, çünkü yok.
Yine de okuyun.
Sorum şu: Aynı kararı siz verir miydiniz?
Okuma ve öğrenme zorluğu çeken çocuklara özel eğitim veren bir okul icin bağıs toplama yemeğinde, çocuklardan birisinin babası katılımcılar tarafından asla unutulmayacak bir konuşma yaptı.
Okula kendini adamış öğretmenleri kutladıktan sonra şöyle bir soru sordu:
‘Dışardaki etkenler tarafından etkilenmedikçe doğa herşeyi mükemmel bir şekil ve sırada yapıyor. Ama yine de oğlum Shay, diğer çocukların öğrendikleri gibi öğrenemiyor. Diğer çocukların anlayabildikleri gibi anlayamıyor.
Oğlumda doğal olması gereken şeyler nerede?’
Bu soru karşısında dinleyiciler sessiz kaldılar.
Baba devam etti. ‘Ben inanıyorum ki, dünyaya fiziksel ve zeka engelli Shay gibi bir çocuk geldiğinde, gerçek insan doğası kendini gösterme fırsatını buluyor ve bu da insanların o çocuğa davranış şekillerinde kendini gösteriyor.’
Ve sonra aşağıdaki hikayeyi anlatmaya başladı:
Shay ve babası bir gün parkta Shayin tanıdığı birkaç çocuğun baseball oynadıklarını gördüler.
Shay sordu, ‘Acaba oynamama izin verirler mi?’
Shay’in babası çoğu çocuğun Shay gibi bir çocuğun takımlarında oynamasını istemeyeceklerini ama aynı zamanda eğer oğluna izin verirlerse oğlunun o çok ihtiyacını duyduğu, engellerine rağmen başkaları tarafından kabul edilmenin özgüveni ve sahiplenme duygusunu vereceğini de biliyordu.
Shay’in babası çocuklardan birinin yanına yaklaştı ve (fazla birşey
beklemeyerek) Shay in oynayıp oynayamayacağını sordu. Çocuk şöyle danışabileceği birilerine baktı ve sonra ‘Şu anda 6 sayı gerideyiz ve oyun sekizinci turunda. Herhalde takıma girebilir ben de onu dokuzuncu turda vurucu olarak sokmaya çalışırım’ dedi.
Shay büyük bir gayretle takımın yanına gitti ve yüzünde kocaman bir gülümseme ile takım t-shirtini giydi. Babası gözünde yaş, kalbi sıcak duygularla dolu onu izledi. Çocuklar oğlunun kabul edilmesinden dolayı babanın mutluluğunu gördüler. Sekizinci turun sonunda Shay’in takımı birkaç puan kazandı ama hala 3 sayı gerideydi. Dokuzuncu turun başında Shay eldiveni eline geçirdi ve sağ açık sahaya çıktı. Ona doğru hiç top isabet etmemesine rağmen oyunda olmaktan son derece mutluydu ve babasının ona tribünlerden el salladığını gördüğünde yüzünde kocaman bir gülümseme vardı.
Dokuzuncu turun sonunda Shay’in takımı yine puan kazandı. Şimdi bütün kaleler doluydu, oyunu kazanma şansı ortaya çıkmıştı ve topa vurma sırası Shay’e gelmişti.
Bu noktada Shay’in vurucu olmasına izin vererek oyunu kaybetme riskini mi almalıydılar? Şaşırtıcı bir hamleyle Shay’e sopayı verdiler. Herkes topa isabet ettirme şansının sıfır olduğunu biliyorlardı çünkü bırakın topa vurmayı Shay sopayı bile elinde tutmasını bilmiyordu.
Ama Shay sahaya çıktığında top atıcı, diğer takımın kazanma şanslarını bir kenara bırakarak Shay’e bu fırsatı tanıdıklarını görünce birkaç adım öne giderek yumuşak bir şekilde topu Shay’e doğru fırlattı. İlk topa Shay zorlukla sopayı savurdu ama ıskaladı. Atıcı tekrar birkaç adım öne doğru geldi ve topu yine yumuşak bir şekilde Shay’e doğru attı. Shay sopayı savurdu ve hafifçe topa dokunarak yere atıcıya doğru vurdu.
Oyun şimdi bitecekti. Atıcı topu yerden aldı ve ilk kaledeki adamına
kolaylıkla atabilecek ve Shay’i sobeleyerek oyunu bitirebilecekti.
Ama atıcı topu aldı ve ilk kaledeki adamının başının üzerinden diğer takım arkadaşlarının erişemeyeceği yere fırlattı.
Tribünlerdeki herkes ve iki takımda bağırmaya başladılar, ‘Shay, ilk kaleye koş, ilk kaleye koş!’ Shay hayatında hiç bu kadar uzağa koşmamıştı ama ilk kaleye gidebildi. Şaskınlıktan büyümüş gözleriyle yere çöktü.
Herkes bağırmaya devam etti, ‘İkinci kaleye koş, ikinci kaleye koş’ Nefes nefese Shay zorlukla ikinci kaleye koşabildi. Shay ikinci kaleye geldiği sırada açık sahada diğer takımdan biri topu almıştı … takımın en küçüğü olan bu çocuk kahraman olma şansını elinde tutuyordu. Topu ikinci kaledeki adamına atabilirdi ama top atıcısının niyetini anladığından o da kasıtlı olarak topu üçüncü kaledeki arkadaşının başının üzerinden attı.
Herkes bağırıyordu, ‘Shay, Shay, Shay, bütün yolu koş Shay’
Karşı takımdan birinin yardım ederek onu üçüncü kaleye doğru döndürmesiyle Shay üçüncü kaleye koşabildi, ‘Üçüncüye koş! Shay, üçüncüye koş!’
Shay üçüncüye gelirken diğer takımdakı çocuklar ve seyirciler ayağa
kalkmışlardı ve bağırıyorlardı, ‘Shay, hepsini koş! Hepsini koş!’ Shay
hepsini koştu ve oyunu takımı için kazanan bir kahraman olarak herkes tarafından alkışlandı.
‘O gün’, dedi babası, gözlerinden yaşlar aşağıya doğru süzülerek,
‘iki takımdaki çocuklar da dünyaya bir parça sevgi ve insanlık getirmeyi başardılar’.
Shay bir sonraki yaza yetişemedi. O kış öldü. Bir kahraman olduğunu ve babasını mutlu ettiğini ve eve geldiğinde annesinin de gözyaşları içinde onu kucakladığını asla unutmadı.
Son NOKTA: E-mail ile hiç düşünmeden binlerce fıkra yolluyoruz, ama hayattaki seçimler konusunda mesaj olduğunda insanlar tereddüt ediyorlar.
Bunu size yollayan kişi hepimizin bir farklılık yapabileceği inancını taşıyor. Hepimizin her gün binlerce fırsatı olabiliyor ‘doğal olan şeyleri’ gerçekleştirmek için.
Bilgin bir adam bir zamanlar demişki: Her toplum, kendilerinden daha az şanslı olanlara nasıl davrandığıyla değerlendirilir.
Şimdi iki seçeneğiniz var:
1. Delete (Sil)
2. Forward (İlet)
Gününüz bir Shay günü olsun!
Gmail SMTP Ayarları
Gmail üzerinden email göndermek için web.config veya app.config dosyalarında yapmanız gereken değişiklik aşağıdadır.
<system.net>
<mailSettings>
<smtp from="[E-mail adresiniz]@gmail.com" deliveryMethod="Network">
<network host="smtp.gmail.com"
enableSsl="true"
userName="[E-mail adresiniz]@gmail.com"
password="[Şifreniz]"
port="587"/>
</smtp>
</mailSettings>
</system.net>
Ancak bu şekilde gmail üzerinden email gönderebiliyorsunuz.
Hobbit Geliyor.
Ben filmler hakkında çok yorum yapmam, zaten bu aralar film de izleyemiyorum. Ama Hobbit’in Peter Jackson tarafından çekildiğini duyunca çok sevinmiştim. Belki kızımla da izleyebiliriz dedim ama benim 100 izlememde ancak kızımla izleyebileceğiz sanıyorum
Neyse Hobbit artık çekimi başlayan bir proje haline geldi. 2 bölüm halinde yayınlanacak. Yüzüklerin Efendisinde olduğu gibi 2 bölüm aynı zamanda çekilecek. İlk bölümün yayın tarihi ise 12.12.2012 olacak.
Bugün itibariyle internete trailer’ı da düştü. aşağıda bu adresi paylaşmak istiyorum.
Normalde belgesel türündeki film eklentilerin filmlerden sonra çıkardı ama film öncesinde çekimlerle ilgili çıkmış ilk videoda aşağıda :
NHibernate’te Char tipleri ile çalışmak
NHibernate string olarak tanımladığımız özellikleri veri tabanında nvarchar veya varchar2 gibi tiplerde oluşturuyor veya arıyor. ama benim bir projemde denk geldiği şekilde char türündeki bir tablo alanı ile çalışmak gerektiğinde ne yapabiliriz diye bir araştırma yaptığımda açıkçası biraz hayal kırıklığına uğradım. Nesnesel olarak olayı çözemiyoruz gibi. bunun yerine sql düzeyinde bir çalışma yapmak lazım. Şöyle ki:
public virtual string TelephoneNumber {get; set; }
şeklinde tanımlanmış alanım için,
Map(x=> x.TelephoneNumber)
.Length(4)
.CustomSqlType(“CHAR(10)”)
.Nullable();
şeklinde bir mapping satırı yazmam gerekmekte. allahtan char tipi bütün veri tabanı sistemlerinde aynı kullanıma sahipte herhangi bir problem çıkarmadan çapraz platform çalışabiliyor.
NHibernate Fluent ile tek tablodan birden fazla nesne
Diyelim ki bir sınıftan türemiş birden fazla sınıfınız var. Ve bunları fluent arayüzünü kullanarak NHibernate içinde kullanmak istiyorsunuz. Bunun için öncelikle http://wiki.fluentnhibernate.org/Fluent_mapping adresini ziyaret edip, buradan bilgi edinebilirsiniz. Ancak maalesef yetersiz bir bilgiye sahip olacaksınız. burada olay çok kısa ve yüzeysel olarak verilmiş. ben konuyu biraz daha ileri götürmek istiyorum. Öncelikle sınıflarımınızı tanımlayalım.
Önce temel sınıfımız. NHibernate bu sınıf için bir tablo üretecek.
public abstract class EKayit
{
public virtual int KayitID { get; set; }public virtual KayitTipi KayitTipi { get; set; }
public virtual string DosyaAdi { get; set; }
public virtual byte[] Icerik { get; set; }
public virtual string MimeType { get; set; }
}
Şimdide alt sınıflarımızı tanımlayalım.
public class ESesKayit : EKayit { }
public class EVideoKayit : EKayit { }
public class EDigerKayit : EKayit { }
birde dikkat ettiyseniz alt sınıfın tiplerini tutan bir enum tipimiz var. buda :
public enum KayitTipi : byte
{
Ses = 1,
Video = 2,
Diger = 4
}
şeklinde tanımlanmış olsun. Şimdi gelelim mapping sınıflarımıza. Önce EKayit ile başlıyoruz :
public class EKayitMap : ClassMap<EKayit>
{
public EKayitMap()
{
Table("TKayit");Id(x => x.KayitID)
.Not.Nullable()
.GeneratedBy.Native();DiscriminateSubClassesOnColumn<byte>("KayitTipi", (byte)KayitTipi.Ses)
.CustomType<KayitTipi>()
.Not.Nullable();Map(x => x.DosyaAdi)
.Length(100)
.Not.Nullable();Map(x => x.Icerik)
.Not.Nullable()
.Length(int.MaxValue)
.LazyLoad();Map(x => x.MimeType)
.Length(50)
.Not.Nullable();
}
}
Dikkat edilmesi gereken en önemli yer DiscriminateSubClassOnColumn tanımı. Burada yanlış tanımlama yaptığınızda şu türde hata mesajları alabiliyorsunuz :
[ArgumentException: Requested value 'CD.DataLayer.Entities.EKayit' was not found.]
[MappingException: Could not format discriminator value to SQL string of entity CD.DataLayer.Entities.EKayit]
Bu hataları alınca internette arayışa geçtim. sonunda http://stackoverflow.com/questions/326174/nhibernate-mapping-with-a-class-hierarchy-whose-base-class-is-abstract-and-the-d adresi aradığımı bulmamı sağladı.
Önce problemi anlatayım : Entity sınıfından da gördüğünüz gibi, KayitTipi alanını KayitTipi enum türünden tanımlamışım. Bu özel bir tip olduğu için burada nhibernate’e bu tipin neye karşılık geleceğini bildirmek gerekiyor. bunun için 2 yöntem var esasında. 1. yöntem DiscriminateSubClassOnColumn metodunun jenerik halini kullanmak DiscriminateSubClassOnColumn<byte> şeklinde. böylece sisteme bu elemanın tipini bildiriyorsunuz. 2. yöntem ise DiscriminateSubClassOnColumn metoduna 2. parametreyi atamak. bu parametre yine jenerik metodun tipini belirlediği için esasında 1. yönteme çıkıyor olay. Ben yukarıda bunun ikisini bir arada kullandım.
Şimdi gelelim alt sınıfların mappinglerine.
public class ESesKayitMap : SubclassMap<ESesKayit>
{
public ESesKayitMap()
{
DiscriminatorValue((byte)KayitTipi.Ses);
}
}public class EVideoKayitMap : SubclassMap<EVideoKayit>
{
public EVideoKayitMap()
{
DiscriminatorValue((byte)KayitTipi.Video);
}
}public class EDigerKayitMap : SubclassMap<EDigerKayit>
{
public EDigerKayitMap()
{
DiscriminatorValue((byte)KayitTipi.Diger);
}
}
Burada önemli olan kısım ise alt sınıfların ClassMap’ sınıfından değilde, SubclassMap sınıfından türetilmeleri. Ayrıca ayırıcı alanda hangi değerin olması gerektiği bu sınıfların yapıcılarında da verilmiş durumda. Tiplerin yine çevirildiğine dikkat edelim.
Böylece işlemi bitirmiş olduk.
