2006-12-26

ATLAS:AlwaysVisibleControl

Atlas ile birlikte gelen AlwaysVisibleControl aracı sayfanın içeriği değiştiğinde, yeniden boyutlanlandığında kaydırma çubukları ile sayfa kaydırıldığında sürekli belirlediğimiz yerde duran bir araçtır. Sayfa yüklenirken flash kontrolüne yakalanmamak için kontrolün pozisyonunu absolutely olarak belirlemeniz gerekir.

Özellikleri:
TargetControlID– Sürekli gösterilecek olan kontrolün ID’si
HorizontalOffset– Browserin yatay kenarından pixel olarak uzaklığı. Varsayılan olarak 0’dır.
HorizontalSide – Yatay olarak browser üzerindeki tarayıcının pozisyonunu belirler (Left, Center, yada Right) Varsayılanı Left’dir.
VerticalOffset– Browserin diket kenarından pixel olarak uzaklığı. Varsayılan olarak 0’dır.
VerticalSide– Dikey olarak browser üzerindeki tarayıcının pozisyonunu belirler (Top, Middle, yada Bottom) Varsayılanı Top’dır.
ScrollEffectDuration– Kontrolün pozisyonunun değiştiğinde scroll efektinin süresinin uzunluğu. Varsayılan olarak 1 saniyedir.

Örnek:
<ajaxToolkit:AlwaysVisibleControlExtender ID="ace" runat="server"
TargetControlID="timer"
VerticalSide="Top"
VerticalOffset="10"
HorizontalSide="Right"
HorizontalOffset="10"
ScrollEffectDuration=".1" />

REPLICATE, STUFF

REPLICATE : Parametre olarak girilen karakter yada karakter dizilerini tekrarlı çoğaltmaya yarar.

Syntax
REPLICATE ( character_expression , integer_expression )

Örnek : REPLICATE('0',100) --100 adet 0 oluşturur.

STUFF : Belli uzunluktarı karakter dizisini silip yerine başka karakter yada karakter dizisi yazmaya yarar.

Syntax
STUFF ( character_expression , start , length , character_expression )

Örnek : STUFF('Mehhh GÜZEL', 4, 2, 'met')
İlk ifadedeki 4 karakterden itibaren 2 karakterin yerine 'met' yazar. Sonuç : 'Mehmet GÜZEL' olur.

2006-12-25

SQL Server Destekleri

Microsoft Vista işletim sistemiyle birlikte MS SQL Server 2000 MSDE(tüm sürümleri), SQL Server 7.0 ve SQL Server 6.5 sürümlerine destek vermeyecek. SQL Server'ın bu sürümlerini kullanan yazılımcı arkadaşların veritabanlarını MS SQL Server 2005 sürümüne; eğer ücretsiz kullanmak istiyorlarsa MS SQL Server 2005 in Express sürümüne yükseltmeleri yararlı olacaktır.

SP ile Tablo Adı Değiştirme

İstersek tablo adlarımızı SP ile de aşağıdaki gibi değiştirebiliriz:
EXEC SP_RENAME 'EskiTabloAdi', 'YeniTabloAdi'

Bir tablodaki alan adını aşağıdaki gibi değiştirebilirsiniz:
EXEC SP_RENAME 'TabloAdi.AlanAdi', 'YeniAlanAdi','COLUMN'


SP müzün sözdizimi:
SP_RENAME [@objname=] 'object_name' , [@newname=] 'new_name'[, [@objtype=] 'object_type']

Veri İşleme Dili(DML)

Amaç: Bu makale ile SQL(Structure of Query Language)'in DML(Data Manuplation Language) komutlarından SELECT deyimini inceleyip, irdelemeye çalışacağız.

Veri işleme dili(kısaca DML) veritabanı içindeki verileri elde etmek, yeni veri eklemek, mevcut verileri değiştirmek ve silmekle ilgili SQL komutlarıdır. Bu deyimler aşağıdaki gibidir:

  • SELECT
  • INSERT
  • UPDATE
  • DELETE


DML verilerin nasıl tutulduğu ile ilgilenmez sadece var olan kayıtları görüntülemek, değiştirmek,silmek ve yeni kayıt eklemek için kullanılır.

Şimdi sırası ile bu komutların ne olduğunu; hangi ifadeler ile birlikte kullanılabileceğini; sonuç olarak ne döndürdüklerini irdelemeye çalışalım.

SELECT KOMUTU:
Bu deyim veritabanından satırları getirme ve bir yada birden çok tablo(table) veyahut view'dan bir yada birden çok satır(row) veya sütun(column)ün seçilmesine izin verir. Kısaca verileri görmenin en sıkı kullanılan yöntemidir.
Genel Yapısı:
SELECT ifadesinin söz diziminin tam şekli oldukça karmaşıktır. Bununla birlikte en çok kullanılan şekli aşağıdaki gibidir:
SELECT [ DISTINCT ] [ TOP sayi TOP sayi PERCENT ] secim_listesi [ INTO yeni_tablo ]
FROM kaynak_tablo
[ WHERE arama_kriterleri ]
[ GROUP BY gruplama_ifadeleri ]
[ HAVING arama_kriterleri ]
[ ORDER BY sıralama_ifadeleri [ ASC DESC ] ]

Merak edenler için SELECT deyiminin tam söz dizimi aşağıdaki gibidir:
SELECT statement ::= <> [ ORDER BY { order_by_expression column_position [ ASC DESC ] } [ ,...n ] ] [ COMPUTE { { AVG COUNT MAX MIN SUM } ( expression ) } [ ,...n ] [ BY expression [ ,...n ] ] ] [ FOR { BROWSE XML { RAW AUTO EXPLICIT } [ , XMLDATA ] [ , ELEMENTS ] [ , BINARY base64 ] } ] [ OPTION ( <> [ ,...n ]) ]
<> ::= { <> ( <> ) } [ UNION [ ALL ] <> ) [...n ] ]
<> ::= SELECT [ ALL DISTINCT ] [ { TOP integer TOP integer PERCENT } [ WITH TIES ] ] <> [ INTO new_table ] [ FROM { <> } [ ,...n ] ] [ WHERE <> ] [ GROUP BY [ ALL ] group_by_expression [ ,...n ] [ WITH { CUBE ROLLUP } ] ] [ HAVING <> ]

Örnek: SELECT * FROM GIDER ile Gider tablomuzdaki tüm kayıtları görüntüleyebiliriz. Burda *(asteriks) ile tüm alanları gösteriyoruz. Gider tablomuzdaki Kod ve Aciklama alanları vardı. Yukarıdaki ifade yerine
SELECT Kod, Aciklama FROM GIDER
ifadesi ile de aynı şeyleri görüntüleyebiliriz. Tablomuzdaki veriler aşağıdaki gibi olsun.



SELECT ifadesi istenilen tablodan istenildiği kadar alan seçilebilir. Örneğin sadece Gider Açıklamlarına ihtiyacımız olsaydı bunu için yazacağımız SQL kodu aşağıdaki gibi olurdu:
SELECT Aciklama FROM GIDER

Yeri gelmişken FROM ifadesinin niçin kullanıldığını açıklayayım. FROM ile hangi tablo yada tablolardan verilerimizi çekeceğimizi belirliyoruz.

Bir tablo içerisinde belirli kayıtları ararken aşağıdaki arama operatörlerinden faydalanırız:
  1. Karşılaştırma Operatörleri : =, <>, !=, <, >, >=, <=, !>, !<
  2. Aralık belirtme : BETWEEN, NOT BETWEEN
  3. Liste içerisinde : IN, NOT IN
  4. String benzerliği : LIKE , NOT LIKE
  5. Bilinmeyen Değerler : IS NULL, IS NOT NULL
  6. Oluşsuzlaştırma : NOT

VERİLERİ SIRALAMAK(ORDER BY):

Seçilen veriler istenilirse sıralanabilir. Sıralama bir yada birden çok alana göre yapılabilir. Sıralama ASC artan yada DESC azalan sırada yapılabilir. Alanlar arasına hernagi bir şey yazılmadığı zaman default ASC'dir. Hatırlatmakta yarar var: Bir sorgu içerisinde sıralama birden çok alana göre artan aynı şekilde birden çok alana göre de azalan olabilir.

Örnek: PERSONEL tablosunu Adi ve Soyadi artan, maaşı azalan olacak şekilde görüntüleyelim:

SELECT * FROM PERSONEL
ORDER BY ADI, SOYADI ASC, MAAS DESC

2006-12-22

Zulmü Alkışlayamam

Zulmü alkışlayamam, zalimi asla sevemem;
Gelenin keyfi için geçmişe kalkıp sövemem.
Biri ecdadıma saldırdımı, hatta boğarım!...
-Boğamazsın ki!
-Hiçolmazsa yanımdan kovarım.
Üçbuçuk soysuzun ardından zağarlık yapamam;
Hele hak namına haksızlığa ölsem tapamam.
Doğduğumdan beridir, aşığım istiklale;
Bana hiç tasmalık etmiş değil altın lale!
Yumuşak başlı isem, kim dedi uysal koyunum
Kesilir belki, fakat çekmeye gelmez boyunum!
Kanayan bir yara gördümmü yanar ta ciğerim,
Onu dindirmek için kamçı yerim, çifte yerim!
Adam aldırmada geç git, diyemem aldırırım.
Çiğnerim, çiğnenirim, hakkı tutar kaldırırım!
Zalimin hasmıyım amma severim mazlumu...
İrticanın şu sizin lehçede ma'nası bu mu?

Mehmet Akif Ersoy

Veritabanı Yedekleme

MS SQL Server'da veritabanını aşağıdaki T-SQL kodları ile yedekleyebilirsiniz:

BACKUP DATABASE VeriTabaniAdi TO DISK = N'YedeklenecekPath' WITH INIT , NOUNLOAD , NAME = N'STP backup', NOSKIP , STATS = 10, NOFORMAT

2006-12-21

Kariyer.net'te Güvenlik

Kariyer.net'te login olup ilanlara bakıyorsunuz. Bir de bakıyorsunuz arkadaşınızın özelliklerine uyan bir ilan var. Onun linkini kopyalayıp arkadaşa göndereyim demeyin. Gönderdiğiniz kişi tüm bilgilerinizi görüp, güncelleyip, silebilir. En azından bu bug giderilene kadar tavsiye et ile ilanları gönderiniz.

Teknik olarak her üye için sabit ARN kodu aşağıdaki gibi ekleniyor.

http://web7.kariyer.net/JobSearch/jobdetail.kariyer?arn=XXXXX

İlan sayfasında bu kod olduğu sürece siteye link üzerinden giren kişinin yetkili olup olmadığı kontrol edilmiyor. Bu da güvenlik açığına sebep oluyor.

Güvenlik açığını Kariyer.net'in destek birimlerine ulaştırdım. Umarım bir an önce bu açığı giderip üyeleri rahatlatırlar.

AJAX 2

Bilindiği gibi Web tabanlı uygulamalarda istemcide açılan bir sayfa için önce bu talep Web sunucusuna bildirilir. Bu talep neticesinde web sunucusunda sayfa nesnesinin oluşturulması, kodların çalıştırılması, HTML çıktı üretimi, sayfa için Dispose gibi adımlar gerçekleştirildikten sonra istemci tarafında görüntülenir.

AJAX ve ATLAS gibi teknolojik terimler web sayfalarında en çok karşılaştığımız post-back hareketlerinde sayfanın tamamını sunucuya göndermeden sayfanın belirli kesitlerini sunucuya gönderip sadece ilgili sonucu döndürmeye yönelik olarak tasarlanmışlardır.

ASP.NET 2.0 üstünde istemci tarafından geri bildirim için ICallbackEventHandler arayüzü kullanılır. Bu arayüz beraberinde iki metodu barındırır. Bunlar: GetCallbackResult ve RaiseCallbackEvent'tır.

RaiseCallbackEvent metodu string tipinde bir parametre alır.
GetCallbackResult metodu ise string tipinde bir değeri geriye döndürür.

Client Script Callback mimarisinde her ne kadar sayfanın tümü istemciden sunucuya gönderilmese de sayfaya ait Page_Init(), Page_Load() ve Page_Unload() gibi olaylar çalışmaktadır. Bununla birlikte PreRender, Render ve post-back olaylarına ait metodlar çalıştırılmamaktadır.

Client Script Callback Internet Explorer'da Activex kullanır. Mimarinin doğru şekilde çalışması için Activex ayarlarının açık olması lazım. Tarayıcınızda ClientCallback desteğinin olup olmadığını Request.Browser.SupportsCallback ile öğrenebilirsiniz.

Güvenlik Açıkları

FireFox'ta 9 alt başlıkta güvenlik açığı çıktı:
  1. Hacker'ların FireFox kullanıcılarına uzaktan kod saldırıları yapmalarına imkan sağlayan hafıza taşması,
  2. JavaScript kod hafızasında meydana gelen taşma,
  3. FireFox'taki pencerelerin Direct3D aletini kullanırken "Js'dto()" fonksiyonunda meydana gelen hatalar,
  4. Pencerelerde meydana gelen sınır hataları ve bunun üzerine CSS'yi kullanarak Bitmap temelli bir resim yerleştirerek tampon taşması,
  5. JavaScript görevlerinden bir tanesinin hatalı olması sonucu hacker'ların istediği kodu rahatlıkla çalıştırabilmeleri,
  6. LiveConnect fonksiyonundaki hatadan kaynaklı hacker'ların saldırısına açık olunması,
  7. Yüklenen "img" nesnelerinden "src" parametresinin hata oluşturması ile meydana gelen JavaScript kodunun URL değiştirmede kullanabilmesi ayrıca bu HTML kodu çalıştırmaya izin vermesi,
  8. SVG işlemede meydana gelen hatada HTML kod çalıştırabilmesi,
  9. Geri besleme özelliğindeki iconlarda meydana gelen hatalar.

Bu güvenlik açıklarından korunmak için FireFox browserınızı 1.5.0.9/2.0.0.1 sürümlerine veyahut çıkacak diğer üst sürümlerine yükseltmeniz lazım.

2006-12-20

NULL İpucu

Birçok kişiden IF AlanDegeri=NULL THEN koşulu neden gerçekleşmez tarzında soru aldım. Koşul cümlelerinde NULL ile karşılaştırma yapıldığında koşul cümlesi her zaman FALSE değeri üretir. Bu yüzden koşul cümlenizin doğru sonuç üretmesini istiyorsanız aşağıdaki gibi AlanDegeri=NULL yerine IsNull(AlanDegeri) yapısını kullanınız:

IF IsNull(AlanDegeri) THEN
ELSE
END IF

.::YASAL UYARI::.

©2004-2024 Mehmet GÜZEL, www.mehmetguzel.net

Site içeriği kaynak gösterilmek koşuluyla yayınlanabilir. Yazılan yazı ve yorumlar sadece yazı ve yorum sahiplerini bağlar.