FireBug
Bir web programcısının olmazsa olmaz eklentilerinden biri. Bir web sayfasının içindeki kodları görüp, anında değiştirmek, sadece istenilen alandaki koda ulaşmak çok kolay.
MeasureIt
MeasureIt, seçtiğiniz alanının boyutlarını pixel olarak size söylüyor.
View Source Chart
View Source Chat ile html kodunu renkli ve iç içe bloklar halinde kolayca görüp, tag hatalarını çok kolay yakalayabilir veya sayfanın yapısını hızla çözebilirsiniz.
Web Developer
Web Developer birçok özelliği olan bir toolbar getiriyor.
Sayfayı istediğiniz pixel boyutlarınde resize edebilir, istediğiniz tag leri highlight edebilir veya sayfadan istediğiniz element leri kolayca kaldırabilirsiniz.
29 Nisan 2010 Perşembe
SQL Server da Tarih Formatlama
SQL Server'daki DataTime tipindeki alanları formatlama ihtiyacımız olduğunda kolayca kullanabilecek bir fonksiyon.
Tek yapmanız gereken tarihi ve hangi formatta istedinizi söylemek. Uzun uzun convert kodları yazmaya gerek yok.
Function içerisine comment olarak eklenmiş olan örnek çalıştırma kodunu çalıştırırsak şöyle bir sonuç görebiliriz.
Tek yapmanız gereken tarihi ve hangi formatta istedinizi söylemek. Uzun uzun convert kodları yazmaya gerek yok.
CREATE FUNCTION dbo.fn_FormatDate(@Type varchar(10),@Date Datetime)
RETURNS varchar(50)
AS BEGIN
/*
SELECT NULL [Type] ,CONVERT(varchar,GETDATE(),121) [Date]
UNION SELECT NULL ,dbo.fn_FormatDate(NULL,GETDATE())
UNION SELECT 'M' ,dbo.fn_FormatDate('M',GETDATE())
UNION SELECT 'L' ,dbo.fn_FormatDate('L',GETDATE())
UNION SELECT 'S' ,dbo.fn_FormatDate('S',GETDATE())
UNION SELECT 'SR' ,dbo.fn_FormatDate('SR',GETDATE())
UNION SELECT 'DL' ,dbo.fn_FormatDate('DL',GETDATE())
UNION SELECT 'D' ,dbo.fn_FormatDate('D',GETDATE())
UNION SELECT 'DR' ,dbo.fn_FormatDate('DR',GETDATE())
UNION SELECT 'DN' ,dbo.fn_FormatDate('DN',GETDATE())
UNION SELECT 'H' ,dbo.fn_FormatDate('H',GETDATE())
UNION SELECT 'LM' ,dbo.fn_FormatDate('LM',GETDATE())
*/
DECLARE @RetVal varchar(50)
SELECT @RetVal = NULL
IF @Date IS NULL
GOTO exit_proc
IF ISDATE(@Date) = 0
SELECT @Date = CONVERT(Datetime,'1900-01-01 00:00:00.000')
IF @Type = 'M' BEGIN -- Long2
SELECT @RetVal = dbo.fn_LeadZero(CONVERT(varchar,DAY(@Date)),2) + ' ' + DATENAME(month,@Date) + ' ' + CONVERT(varchar,YEAR(@Date))
GOTO exit_proc
END
IF @Type = 'L' BEGIN -- Long
SELECT @RetVal = CONVERT(varchar(20),@Date,104) + ' ' + DateName(weekday,@Date) + ', ' + CONVERT(varchar(5),@Date,108)
GOTO exit_proc
END
IF @Type = 'S' BEGIN -- Short
SELECT @RetVal = CONVERT(varchar(10),@Date,104) + ' ' + CONVERT(varchar(5),@Date,108)
GOTO exit_proc
END
IF @Type = 'DL' BEGIN -- Day With long format
SELECT @RetVal = CONVERT(varchar(20),@Date,104) + ' ' + DateName(weekday,@Date)
GOTO exit_proc
END
IF @Type = 'D' BEGIN -- Only day
SELECT @RetVal = CONVERT(varchar(10),@Date,104)
GOTO exit_proc
END
IF @Type = 'DR' BEGIN -- Day Reverse
SELECT @RetVal = CONVERT(varchar(10),@Date,102)
GOTO exit_proc
END
IF @Type = 'DN' BEGIN -- Only Dayname
SELECT @RetVal = DateName(weekday,@Date)
GOTO exit_proc
END
IF @Type = 'H' BEGIN -- Only Hour
SELECT @RetVal = CONVERT(varchar(5),@Date,108)
GOTO exit_proc
END
IF @Type = 'LM' BEGIN -- Long With Month Name
SELECT @RetVal = CONVERT(varchar(20),@Date,106) + ' ' + DateName(weekday,@Date) + ', ' + LEFT(CONVERT(varchar(30),@Date,108),5)
GOTO exit_proc
END
IF @Type = 'SR' BEGIN -- Short Reverse
SELECT @RetVal = CONVERT(varchar(10),@Date,120) + ' ' + CONVERT(varchar(5),@Date,108)
GOTO exit_proc
END
IF ISNULL(@Type,'') = '' BEGIN
SELECT @RetVal = CONVERT(varchar,@Date,121)
GOTO exit_proc
END
exit_proc:
IF ISNULL(@RetVal,'') = ''
SELECT @RetVal = CONVERT(varchar(10),@Date,104) + ' ' + CONVERT(varchar(5),@Date,108)
RETURN @RetVal
END
Function içerisine comment olarak eklenmiş olan örnek çalıştırma kodunu çalıştırırsak şöyle bir sonuç görebiliriz.
| Type | Date |
| 2010-04-29 18:56:30.610 | |
| D | 29.04.2010 |
| DL | 29.04.2010 Thursday |
| DN | Thursday |
| DR | 2010.04.29 |
| H | 18:56 |
| L | 29.04.2010 Thursday, 18:56 |
| LM | 29 Apr 2010 Thursday, 18:56 |
| M | 29 April 2010 |
| S | 29.04.2010 18:56 |
| SR | 2010-04-29 18:56 |
27 Nisan 2010 Salı
Rastgele Sayı , Kayıt ve Tarih Üretmek
Aşağıdaki kod örneklerinden yararlanarak rastgele sayı, rastgele tarih ve rastgele kayıt üretebilirsiniz.
Kod biraz karmaşık görünebilir ancak mantığı çok basit.
Rastgele sıralama yapmak için kullandığımız NewID() fonksiyonu yine yardımımıza koşuyor.
1. NewID() den integer tipinde bir sayı üretmek için tip çevirme işlemi yapıyoruz.
2. Sayıların negatif gelme olasılığı da var. Bu nedenle abs fonksiyonuna alıyoruz ki her zaman pozitif bir sayımız olsun.
3. Ancak tarih aralığının en büyük tarihi geçmesini istemediğimiz için öncelikle en büyük - en küçük tarih arasındaki gün sayısına göre, ürettiğimiz sayının modunu alıyoruz.
4. Sonra da yaptığımız şey, en küçük olmasını istediğimiz tarihe bu sayıyı eklemek. Tarihlerdeki toplama işlemi ilgili tarihe gün sayısı ekliyor.
Sonuç, çok hızlı çalışan ve verdiğimiz tarih aralığı arasında rastgele bir tarih üreten bir fonksiyon.
SalesCount'u hesapladığımız yerde de sadece rastgele sayıyı üretiyoruz ve @mod değişkeninde verdiğimiz sayı kadar bir sayı üretmesine izin veriyoruz.
-- A,B ve C ürünlerim olsun.
DECLARE @mod int = 50
Kod biraz karmaşık görünebilir ancak mantığı çok basit.
Rastgele sıralama yapmak için kullandığımız NewID() fonksiyonu yine yardımımıza koşuyor.
1. NewID() den integer tipinde bir sayı üretmek için tip çevirme işlemi yapıyoruz.
2. Sayıların negatif gelme olasılığı da var. Bu nedenle abs fonksiyonuna alıyoruz ki her zaman pozitif bir sayımız olsun.
3. Ancak tarih aralığının en büyük tarihi geçmesini istemediğimiz için öncelikle en büyük - en küçük tarih arasındaki gün sayısına göre, ürettiğimiz sayının modunu alıyoruz.
4. Sonra da yaptığımız şey, en küçük olmasını istediğimiz tarihe bu sayıyı eklemek. Tarihlerdeki toplama işlemi ilgili tarihe gün sayısı ekliyor.
Sonuç, çok hızlı çalışan ve verdiğimiz tarih aralığı arasında rastgele bir tarih üreten bir fonksiyon.
SalesCount'u hesapladığımız yerde de sadece rastgele sayıyı üretiyoruz ve @mod değişkeninde verdiğimiz sayı kadar bir sayı üretmesine izin veriyoruz.
-- buraya 20 tane kayıt ekliyorum. İçinde ne olduğu önemli değil. Önemli olan rastgele data üretmemi sağlayacak kayıt olması
DECLARE @Cnt table(Number int)
DECLARE @i int = 1
WHILE @i<=20 BEGIN
INSERT INTO @Cnt(Number) VALUES(@i)
SET @i+=1
END
-- A,B ve C ürünlerim olsun.
DECLARE @Product TABLE(ProductName varchar(10))
INSERT INTO @Product(ProductName) VALUES
('A'),('B'),('C')
-- Rastgele üreteceğim tarihin aralıklarını belirtiyorum.
DECLARE @mindate DATETIME = '2010-01-01'
DECLARE @maxdate DATETIME = '2010-05-31'
DECLARE @mod int = 50
SELECT
(@mindate +(ABS(CAST(CAST( NewID() AS BINARY(8) )AS INT) ) % CAST((@maxdate - @mindate) AS INT ) ) ) SalesDate, -- rastgele bir tarih üretelim
ABS(CAST(CAST( NewID() AS BINARY(8) )AS INT) ) % @mod as SalesCount, -- rastgele bir sayı üretelim. Mod'u 50 verdim ki en fazla 49 üretsin ve büyük rakamlarla uğraşmayayım.
P.ProductName
FROM @Cnt C CROSS JOIN @Product P
Etiketler:
date,
NewID,
random,
random date,
rastgele,
rastgele tarih,
tarih
26 Nisan 2010 Pazartesi
Yaz Geliştir Yazılım Zirvesi
Daron Yöndem'in blog'unu takip edenlerin zaten haberi olmuştur. Bir de ben buradan duyurayım dedim.
http://daron.yondem.com/tr/PermaLink.aspx?guid=47cfe917-61b2-4ebe-9424-e4cc4fc37d53

Yazgeliştir etkinliklerinin en yenisi olan Yazgeliştir Zirvelerinin ilki 29 Mayıs Cumartesi günü Microsoft İstanbul ofisinde gerçekleştirilecek. Etkinlikte Microsoft Regional Director (RD), Microsoft Most Valuable Professional (MVP) ve Yazgeliştir editörleri konuşmacı olacak. Microsoft’un çeşitli yazılım geliştirme ürün ve araçları ile ilgili seminerlere katılabilir, Visual Studio 2010, SQL Server 2008 R2, ASP.Net 4.0, Sharepoint 2010 ile gelen yenilikleri konunun uzmanlarından öğrenebilirsiniz. Etkinlikte aynı zamanda Yazgeliştir editörleri ile bir araya gelip kendilerine danışmak istediğiniz konularda sorular sorabilirsiniz.
29 Mayıs 2010, Microsoft İstanbul Ofisi
Kayıt olmak için tıklayın!
http://daron.yondem.com/tr/PermaLink.aspx?guid=47cfe917-61b2-4ebe-9424-e4cc4fc37d53
Yazgeliştir etkinliklerinin en yenisi olan Yazgeliştir Zirvelerinin ilki 29 Mayıs Cumartesi günü Microsoft İstanbul ofisinde gerçekleştirilecek. Etkinlikte Microsoft Regional Director (RD), Microsoft Most Valuable Professional (MVP) ve Yazgeliştir editörleri konuşmacı olacak. Microsoft’un çeşitli yazılım geliştirme ürün ve araçları ile ilgili seminerlere katılabilir, Visual Studio 2010, SQL Server 2008 R2, ASP.Net 4.0, Sharepoint 2010 ile gelen yenilikleri konunun uzmanlarından öğrenebilirsiniz. Etkinlikte aynı zamanda Yazgeliştir editörleri ile bir araya gelip kendilerine danışmak istediğiniz konularda sorular sorabilirsiniz.
29 Mayıs 2010, Microsoft İstanbul Ofisi
Kayıt olmak için tıklayın!
| Sabah Oturumu | |||||
| 10:00 - 10:30 | Kayıt | ||||
| 10:30 - 12:00 | Yazgeliştir Zirve Açılış Konuşması Kerem Özsü (RD), Atakan Kesler (RD) | ||||
| 12:00 - 12:45 | Öğle Arası | ||||
| Öğleden Sonra Paralel Oturumlar | |||||
| 12:45 - 13:30 | Visual Studio 2010 Yeni Özellikler | SQL Server 2008 R2 Yeni Özellikler | Yeni Nesil Veri Programcılığı: WCF RIA Servisleri | ||
| Cengiz Han (MVP) | Selçuk Uzun (Microsoft) | Emre Coşkun | |||
| 13:40 - 14:25 | ASP.NET 4.0 Webforms ile Gelen Yenilikler | SharePoint 2010 - Visio Servisleri | SharePoint 2010 - PerformancePoint Servisleri | ||
| Uğur Umutluoğlu (MVP) | Atakan Kesler (RD) | Osman Çokakoğlu (MVP) | |||
| 14:35 - 15:15 | Silverlight ile RIA'da kullanıcı istatistikleri nasıl yakalanır? | Windows Phone 6.5 için Uygulama Geliştirme | WPWE400: Windows Embedded için Silverlight | ||
| Daron Yöndem (RD, MVP) | Ekin Özçiçekçiler (MVP) | Hasan Aytış | |||
| 15:25 - 16:10 | ASP.Net MVC 2.0 ile Gelen Yenilikler | TFS 2010 Yeni Özellikler | Microsoft Dynamics CRM 4.0 için Programlama Teknikleri | ||
| Emrah Uslu | Kerem Özsü (RD) | Volkan Korkmaz, Barış Kanlıca (MVP) | |||
Excel'den SQL Server'a Veri Okuma
Excel'den SQL Server'a data okumak için kullanılacak birçok yöntem var.
Eğer excel'den okuyacağımız data, tek bir tablo içine eklenecek veya tek bir tabloyu güncelleyecek ise en çok kullandığım ve bana en pratik gelen yöntem ise, excel de sql script ini oluşturmak ve bunu çalıştrmak.
Test etmek için basit bir tablo oluşturalım ve içine birkaç kayıt ekleyelim.
Şimdi de bir excel dosyamız olsun ve excel dosyasındaki kayıtları bu tabloya ekleyecek script'i oluşturalım.
="INSERT INTO Musteri(AdSoyad, Adres, Ilce, Il,DogumTarihi) VALUES('" & A2 & "','" & B2 & "','" & C2 & "','" & D2 & "','" & TEXT(E2;"yyyy-aa-gg") & "')"
Burada dikkat edilecek 2 nokta var. 1. si karakter verileri tek tırnak (') içine almak, 2. ise, tarih tipindeki verileri formatlamak.
Bunun için de Text fonksiyonunu kullandım ve "yyyy-aa-gg" formatında gelmesini istedim. Bu sql server'ın herhangi bir convert işlemi yapmayı gerektirmeden kolaylıkla anladığı tarih formatı. 15 Şubat 2010 tarihi bu format ile '2010-02-15' şeklinde görünecek.
Formülü oluşturduktan sonra tek yapmam gereken F2 hücresini tutup aşağı doğru çekmek ve oluşan script'i bir SQL IDE'sine kopyalamak.
Eğer excel'den okuyacağımız data, tek bir tablo içine eklenecek veya tek bir tabloyu güncelleyecek ise en çok kullandığım ve bana en pratik gelen yöntem ise, excel de sql script ini oluşturmak ve bunu çalıştrmak.
Test etmek için basit bir tablo oluşturalım ve içine birkaç kayıt ekleyelim.
CREATE TABLE Musteri(MusteriNo int identity(1,1) primary key,
AdSoyad varchar(100), Adres varchar(100),
Ilce varchar(30), Il varchar(30),DogumTarihi datetime)
GO
INSERT INTO Musteri(AdSoyad, Adres, Ilce, Il,DogumTarihi) VALUES
('Deneme 1','Adres 1','Ilce 1', 'Il 1','1975-10-11'),
('Deneme 2','Adres 2','Ilce 2', 'Il 2','1980-01-01')
Şimdi de bir excel dosyamız olsun ve excel dosyasındaki kayıtları bu tabloya ekleyecek script'i oluşturalım.
="INSERT INTO Musteri(AdSoyad, Adres, Ilce, Il,DogumTarihi) VALUES('" & A2 & "','" & B2 & "','" & C2 & "','" & D2 & "','" & TEXT(E2;"yyyy-aa-gg") & "')"
Burada dikkat edilecek 2 nokta var. 1. si karakter verileri tek tırnak (') içine almak, 2. ise, tarih tipindeki verileri formatlamak.
Bunun için de Text fonksiyonunu kullandım ve "yyyy-aa-gg" formatında gelmesini istedim. Bu sql server'ın herhangi bir convert işlemi yapmayı gerektirmeden kolaylıkla anladığı tarih formatı. 15 Şubat 2010 tarihi bu format ile '2010-02-15' şeklinde görünecek.
Formülü oluşturduktan sonra tek yapmam gereken F2 hücresini tutup aşağı doğru çekmek ve oluşan script'i bir SQL IDE'sine kopyalamak.
INSERT INTO Musteri(AdSoyad, Adres, Ilce, Il,DogumTarihi) VALUES('Deneme 3','Adres 3','Ilce 3','Il 3','1974-12-15')
INSERT INTO Musteri(AdSoyad, Adres, Ilce, Il,DogumTarihi) VALUES('Deneme 4','Adres 4','Ilce 4','Il 4','1966-08-10')
INSERT INTO Musteri(AdSoyad, Adres, Ilce, Il,DogumTarihi) VALUES('Deneme 5','Adres 5','Ilce 5','Il 5','1976-05-27')
INSERT INTO Musteri(AdSoyad, Adres, Ilce, Il,DogumTarihi) VALUES('Deneme 6','Adres 6','Ilce 6','Il 6','1980-05-12')
INSERT INTO Musteri(AdSoyad, Adres, Ilce, Il,DogumTarihi) VALUES('Deneme 7','Adres 7','Ilce 7','Il 7','1966-02-01')
INSERT INTO Musteri(AdSoyad, Adres, Ilce, Il,DogumTarihi) VALUES('Deneme 8','Adres 8','Ilce 8','Il 8','1978-12-03')
INSERT INTO Musteri(AdSoyad, Adres, Ilce, Il,DogumTarihi) VALUES('Deneme 9','Adres 9','Ilce 9','Il 9','1972-07-05')
INSERT INTO Musteri(AdSoyad, Adres, Ilce, Il,DogumTarihi) VALUES('Deneme 10','Adres 10','Ilce 10','Il 10','1979-10-10')
16 Nisan 2010 Cuma
T-SQL ile Fibonacci Serisi
İşte Fibonacci Serisinin ilk 30 sayısını getiren kod. @CountOfNumbers'ı değiştirerek daha fazla sayıya da ulaşabilirsiniz. Tabii ki, bigint veri tipinin izin verdiği aralık içinde kalıyorsa.
DECLARE @CountOfNumbers int = 30
DECLARE @Fibonacci TABLE(OrderNo int, FibonacciNumber bigint)
INSERT INTO @Fibonacci(OrderNo,FibonacciNumber)
VALUES
(1,0), -- 1. sayı = 0
(2,1) -- 2. sayı = 1
DECLARE @i int = 3, -- 3 den başlatalım, 1. ve 2. yi sayıları tabloya ekledi
@F1 bigint = 0,
@F2 bigint = 1,
@F bigint
WHILE @i<=@CountOfNumbers BEGIN
SET @F = @F1 + @F2
INSERT INTO @Fibonacci(OrderNo,FibonacciNumber) VALUES(@i,@F)
SET @F1 = @F2
SET @F2 = @F
SET @i+=1
END
SELECT * FROM @Fibonacci
Bir Tablodan Rastgele 5 Kayıt Getirmek
-- Önce test etmek için geçici bir tablo tanımlayalım.
DECLARE @Dummy TABLE(ID int identity(1,1),Number int)
-- Bu tabloya 100 tane kayıt atalım.
-- SQL Server 2008 de değişkeni tanımlarken başlangıç değeri de verebilirsiniz. SQL Server 2008 öncesinde tanımlamayı ve başlangıç değeri vermeyi ayrı satırlarda yapmalısınız.
DECLARE @i int = 1
WHILE @i<=100 BEGIN
INSERT INTO @Dummy(Number) VALUES(@i*@i)
SELECT @i+=1 -- Bu da SQL Server 2008 e ait bir özellik. SELECT @i=@i+1 ifadesine karşılık gelir.
END
-- Dataları çekeceğimiz tablomuzu oluşturduk. Bakalım nasıl kayıtlar var.
SELECT * FROM @Dummy
ID Number
1 1
2 4
3 9
4 16
5 25
6 36
.. ..
99 9801
100 10000
Şimdi bu tablodan rastgele 5 tanesini seçelim.
SELECT TOP 5 *
FROM @Dummy
ORDER BY NewID()
ID Number
99 9801
25 625
65 4225
51 2601
15 225
NewID fonksiyonu uniqueidentifier tipinde bir veri oluşturur ve her çektiğinizde de farklı bir değer oluşturur. Her seferinde farklı değerler üreten bu fonksiyonu ORDER BY a ekledim, böylece bizim tablomuzun kayıt yaratılma sırasına göre değil, anlık üretilen NewID ye göre sıralayacak kayıtları. "TOP 5" ifadesi de ilk 5 kaydın gelmesini sağlayacak.
DECLARE @Guid uniqueidentifier = NewID()
SELECT @Guid as Guid
Guid
7facc454-b048-4e44-8d72-b7a9b97fb370
Akla hemen neden random sayı üreten RAND() fonksiyonunu kullanmadık diye bir soru da gelebilir.
RAND() fonksiyonu bir transaction içinde aynı sayıyı üretir.
SELECT RAND() as Random, * FROM @Dummy
kodunu çalıştırırsak Random kolonunda hep aynı sayının geldiğini görebilirsiniz.
