26 Haziran 2010 Cumartesi

Captcha ve KittenAuth Nedir ?

Captcha ve KittenAuth zaman geçtikçe gelişen teknolojilere bir nebze güvenlik katmak için geliştirilen yapılardır. Hepinizin bildiği ve günlük hayatta sürekli karşısına çıkan (yorum yazarken vs) değişik harf ve sayılardan oluşan resimleri ekrana girmeniz istenir. Buna Captcha denir.

Paragrafın başında dediğim gibi sürekli gelişen bir teknolojiyle bu güvenlik ayarınıda geçmeyi başardılar. (Değişik yazılımlarla grafikleri okuma programları yaygınlaştı.) Buna karşıda Captcha gelişti ve KittenAuth adında bir güvenlik mekanizması ortaya çıktı. Bunun anlamıda karşımıza çeşitli görseller çıkıyor ve aynı olanlarını seçmemizi istiyor.

22 Haziran 2010 Salı

CSS İle Yazıya Takla Attırma

Arkadaşlar HTML yazıyı aşağıdan yukarıya doğru yazdırırken hep "mso-rotate:90;" css kodunu kullanıyordum. Ama yukarıdan aşağıya doğru bu kod işe yaramıyordu . Gel zaman git zaman aşağıdaki css kodunu buldum. Rotation=3 değerini değiştirtikçe istediğiniz yönü verebiliyorsunuz.

"float:left; filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);"

18 Haziran 2010 Cuma

C# NULL Kontrolü

Bazı değişkenleri kontol ederken null olup olmadıklarına göre işlem yaparız. Bunun içinde ben sürekli eğer bu değişken null'sa bunu yap gibi bir kod kullanıyordum. Bunun yerine yeni öğrendiğim bir kodu sizinle paylaşıyorum.

Yalnış:
var i = null;
var k = null;
if (i==null)
{
k=değer;
}

Doğru:
var i = null;
var k = null;
k = i ?? değer;

i değişkeni null'sa k değişkeninin içine değeri atama yapıyor. Değilse i değişkenini atıyor.
Ayrıca aynı javascriptteki gibi değişkenleri tanımlarken var k gibi tanımlama yapabiliyoruz. Bu sayede ileriki aşamalarda bu değikenimizin tipini belirleyebiliyoruz.

Linq To Sql Left Outer Join

İki tabloyu birlikte sorgulamak için inner join kullanırız. Bunu Linq To Sql ile yaparken aşağıdaki gibi bir Linq Query yazarak çözüyoruz
(Kisi, Telefon ve Adres tablolarımız olduğunu, bir kişinin de birden çok adresi ve telefonu olduğunu düşünüyoruz )
Bu sorgu sonucunda bana kişiler tablosundaki isimler ve bunlara ait telefon numaraları gelecektir.

from kisi in Kisis
join tlf in Telefons
on kisi.ID equals tlf.KisiID
select new
{
Ad = kisi.Ad,
Tlf = tlf.Numara
}

T-Sql çıktısı
SELECT [t0].[Ad], [t1].[Numara] AS [Tlf]
FROM [Kisi] AS [t0]
INNER JOIN [Telefon] AS [t1] ON [t0].[ID] = [t1].[KisiID]

Lambda Expression
Kisis.Join ( Telefons, kisi => kisi.ID, tlf => tlf.KisiID, (kisi, tlf) => new { Ad = kisi.Ad, Tlf = tlf.Numara } )



Senaryomuzu değiştirelim ;
Kişiler tablosundaki tüm kayıtlat gelsin, telefon numarası olmayanlar da gelsin telefonu yoksa null değer gelsin. Bunun içinde Left Outer Join ile çözeriz. Linq sorugumuzu şu şekilde değiştirmemiz yeterli olacaktır.

from kisi in Kisis
join tlf in Telefons
on kisi.ID equals tlf.KisiID into data
from x in data.DefaultIfEmpty()
select new
{
Ad = kisi.Ad,
Tlf = x.Numara
}

T-SQL çıktısı

SELECT [t0].[Ad], [t1].[Numara] AS [Tlf]
FROM [Kisi] AS [t0]
LEFT OUTER JOIN [Telefon] AS [t1] ON [t0].[ID] = [t1].[KisiID]

Lambda Expression
Kisis
.GroupJoin (
Telefons,
kisi => kisi.ID,
tlf => tlf.KisiID,
(kisi, data) =>
new
{
kisi = kisi,
data = data
}
)
.SelectMany (
temp0 => temp0.data.DefaultIfEmpty (),
(temp0, x) =>
new
{
Ad = temp0.kisi.Ad,
Tlf = x.Numara
}
)



Kaynak: http://www.oguzyagmur.com/PermaLink,guid,b9fcc750-0e3b-43e4-a9e8-212ee94afa4e.aspx