Tips and Tricks etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
Tips and Tricks etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

21 Ekim 2008 Salı

.NET -> Web.Config dosyasinda upload dosya büyüklügünü ayarlamak

Asp.Net yada web service uygulamalarinda default olarak belirlenen 4 MB dan daha büyük bir dosya upload edilemek istediginde asagidaki hata olusur.

"There was an exception running the extensions specified in the config file.
--> Maximum request length exceeded."

Bu problemi icin web.config dosyasi icerisine elementleri icerisine, asagidaki kod satirlarini ekleyerek cözebiliriz.

<httpRuntime
executionTimeout="1200"
maxRequestLength="10240"
useFullyQualifiedRedirectUrl="false"
minFreeThreads="8"
minLocalRequestFreeThreads="4"
appRequestQueueLimit="100" />


Burada belirtilen maxRequestLength="10240" degeri ile 10 MB kadar dosyalarin upload edilebilcegini ayarlamis oluyoruz.

14 Ekim 2008 Salı

.NET -> .Net siniflarindan XSD schema dosyasi yaratmak.

XML dosyalarinin dogrulanmasinda XSD dosyalarinin kullanildigindan bir önceki yazida bahsetmistim. Bir assembly icerisindeki bir yada birden fazla sinifdan XSD schema dosyasi yaratmak icin, .NET Framework icerisinde bulunan "xsd.exe" yardimci uygulamasi kullanilabilir.

Nasil kullanildigina dair bir örnek verirsek.

xsd C:\TestApplication.exe /t:Product

Burdaki ilk paremetre assembly nin oldugu path bilgisidir. /t: anahtarindan sonra belirtilen deger de assembly icinde schema dosyasi olusturulmak istenen sinif ismidir.

Bu sekilde Product sinifi icin XSD dosyasi uygulama ile ayni dizinde yaratilmis olur.

Olusturulan bu dosya özellikle deserialize islemleri yapilmadan önce, XML dosyanin iceriginin dogrulanmasinda kullanilir.

13 Ekim 2008 Pazartesi

.NET -> Dosya yolu üzerinde "Path" static sinifi ile islemler

System.IO namespace'i altinda bulunan static "Path" sinifi ile dosya yada dizin bilgisi iceren string ifadeler üzerinde islemler yapabiliriz. Yararli metodlardan bazilari;

- ChangeExtension: Dosyanin var olan uzantisi degistirilir. Eger yeni uzanti belirtilmemisse, var olan uzanti silinir.
- GetDirectoryName: Dosyanin bulundugu dizin ismini döndürür.
- GetFileName: Belirtilen dosyayolundan, dosya ismini geri döndürür.
Console.WriteLine(Path.GetFileName(@"..\System\myFile.txt"));
>> myFile.txt

- GetFileNameWithoutExtension: Dosya ismini uzantisi olmaksizin döndürür.
- GetFullPath: Paremetre olarak verilen string sadece dosya ismi barindiriyorsa, uygulamanin calistigi dizin bilgisi ile dosya yolu olusturur. Örnegin uygulama C:\Test dizininde calisiyor olsun.

Console.WriteLine(Path.GetPathRoot("myfile.txt"));
>> C:\Test\myFile.txt

- GetPathRoot: Dosya yolunun root dizinini döndürür.
Console.WriteLine(Path.GetPathRoot(@"C:\Temp\myfile.txt"));
>> C:\

- HasExtension: Dosya yolu uzanti ile sonlaniyorsa True döndürür.
- Combine: iki string ifadeyi birlestirir.
Console.WriteLine(Path.Combine(@"C:\Temp", "myfile.txt"));
>> C:\Temp\myfile.txt

- GetInvalidFileNameChars: Dosya isimlerinde gecersiz olacak karakterlerin listesini char[] array olarak geri döndürür.
- GetInvalidPathChars: Dosya yolu icin gecersiz olan karakterleri char[] array olarak geri döndürür.
- GetTempPath: Sistemin temp dizinini almak icin kullanilir.
- GetTempFileName: Sistemin temp dizini icerinde 0 Byte büyüklügünde bir dosya yaratir ve bu dosyanin dosya yolunu geri döndürür.

2 Haziran 2008 Pazartesi

Sql Server 2005 - Timeout problemi

Sql Server 2005 de birden fazla index'i ve data yogunlugu olan bir tablonun tasariminda degisiklik yapmak istedigimde ( var olan bir varchar alanin büyüklügü degistirildiginde), asagidaki time out hatasi ile karsilastim.

- Unable to modify table. Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.

Cözüm olarak table designer transaction timeout süresini yükseltmek gerekli. Bunun icin, Sql Server Management Studio da;

Tools > Options > Designers > Table and Database Designers


"Transaction time-out after" alaninda default olarak gelen 30 saniyelik degeri yükseltirsek problemin üstesinden gelebiliriz.


14 Mayıs 2008 Çarşamba

18 Mart 2008 Salı

SQL Performans - NOT EXISTS yerine JOIN kullanarak perfomans artisi saglamak.

Iki iliskili tablo arasinda kayitlarin varligi sorgulanirken sql de "not exists" ifadesi kullaniliriz. Bu nekadar pratik ve yazimi kolay gözüksede performans acisindan büyük sorun cikarmaktadir.

Ve bu performans problemi üst tablolardaki join sayisi arttikca daha da büyümektedir. Bu sorunu cözmek icin "not exists" ifadesi yerine yazacagimiz sorguda JOIN kullanabiliriz.

Örnek olarak;

SELECT dk.VKopf_Nr
FROM Dossier_Kopf dk INNER JOIN
Dossier_Verfahren dv ON DV.Ref_Kopf = DK.VKopf_Nr
WHERE dk.Ref_Instanz='BM' and dk.VKopf_Sprache = 'D'
and DV.Ref_PSchritt IN (6,67)
and not exists (
select ref_dkopf from dbo.Verfahren_Rechtsfolge
where ref_dkopf = dk.VKopf_Nr
)

Yukardaki sorgununu tamamlanma süresi: 00:01:34

Bu sorguyu birde JOIN kullarak yazalim.

SELECT dk.VKopf_Nr
FROM Dossier_Kopf dk INNER JOIN
Dossier_Verfahren dv ON DV.Ref_Kopf = DK.VKopf_Nr
LEFT OUTER JOIN dbo.Verfahren_Rechtsfolge VR
ON DV.Ref_Kopf = VR.ref_dkopf
WHERE dk.Ref_Instanz='BM' and dk.VKopf_Sprache = 'D'
and DV.Ref_PSchritt IN (6,67)
and VR.ref_dkopf is null

Join kullanarak yazilan sorgununu tamamlanma süresi: 00:00:01


Elde ettigimiz sonuc her iki sorgudada aynidir fakat görüldügü gibi sorgularin calisma zamanlari arasinda cok büyük fark olusur.

Sonuc olarak JOIN ifadesi kullanarak yazilan sorgular bize cok büyük bir performans artisi saglamaktadir.





5 Mart 2008 Çarşamba

Connection Pooling and the "Timeout expired" exception FAQ

Özellikle web tabanli, ayni anda birden fazla kullanicisi olan uygulamalarda karsilasilan connection pooling ve connection timeout problemlerine karsi yazilmis bir FAQ makalesi.


http://blogs.msdn.com/angelsb/archive/2004/08/25/220333.aspx

26 Şubat 2008 Salı

Sql Server - Sa şifresini değistirmek

iki yöntem de kullanilabilir.

1) USE [master]
GO
ALTER LOGIN [sa] WITH DEFAULT_DATABASE=[master],
DEFAULT_LANGUAGE=[us_english], CHECK_EXPIRATION=ON, CHECK_POLICY=ON
GO
USE [master]
GO
ALTER LOGIN [sa] WITH PASSWORD=N'yeni_sifre' MUST_CHANGE
GO

2) start > run > cmd...
OSQL -S -E
1> EXEC sp_password NULL, '
yeni_sifre', 'sa'
2> GO

5 Şubat 2008 Salı

Sql Server - Identity Column resetlemek

Sql Server'da bir tablo icerisinde bulunan, identity kolonu resetlemek yada identity baslangic numarasini vermek icin asagidaki DBCC ifadesi kullanilabilir.

DBCC (Database Console Commands) CHECKIDENT ifadesinin son parametresini istenilen baslangic degeri atilir. "0" degeri vererek identity kolonu resetleyelim.

USE TestDB
GO
DBCC CHECKIDENT (TestTable, RESEED, 0)
GO


DBCC (Database Console Commands) in diger ifadelerinin listesini ve aciklamasini asagidaki linkden bulabilirsiniz.

http://msdn2.microsoft.com/en-us/library/aa258281.aspx

22 Ocak 2008 Salı

Oracle - PL-SQL ile Dosya Boyutunu bulma

CREATE OR REPLACE FUNCTION flength (
location_in IN VARCHAR2,
file_in IN VARCHAR2
)
RETURN PLS_INTEGER

IS
TYPE fgetattr_t IS RECORD (
fexists BOOLEAN,
file_length PLS_INTEGER,
block_size PLS_INTEGER
);

fgetattr_rec fgetattr_t;
BEGIN
UTL_FILE.fgetattr (
location => location_in,
filename => file_in,
fexists => fgetattr_rec.fexists,

file_length => fgetattr_rec.file_length,
block_size => fgetattr_rec.block_size
);
RETURN fgetattr_rec.file_length;
END flength;
/

SQL Server - T-Sql ile Dosya boyutunu bulma

CREATE FUNCTION udf_GetFileSize (@filename varchar(1000))
returns bigint
as
BEGIN
DECLARE @FS int
DECLARE @OLEResult int
DECLARE @FileID int
DECLARE @Size bigint
DECLARE @Flag bigint

Set @size =0
Set @Flag =0

EXECUTE @OLEResult = sp_OACreate 'Scripting.FileSystemObject', @FS OUT
EXECUTE @OLEResult = sp_OAMethod @FS, 'GetFile', @FileID OUT,@filename

IF @OLEResult <> 0
begin
set @Flag =-1
end
else
begin
EXECUTE @OLEResult = sp_OAGetProperty @FileId,'Size', @Size OUT
IF @OLEResult <> 0
begin
set @Flag =-2
end
end

EXECUTE @OLEResult = sp_OADestroy @FileID
EXECUTE @OLEResult = sp_OADestroy @FS

if @flag <> -1 and @flag <> -2
begin
set @flag = @size
end
return @flag
END

'Kullanimi
select dbo.udf_GetFileSize ('c:\temp\test.txt')

17 Ağustos 2007 Cuma

Remote Dektop da Ctrl+Alt+Del yapmak

Remote Desktop kullanirken explorer.exe beklenmedik bir sekilde kapanirsa ekraniniz microsoft un güzel mavisi ile kaplanir. Bu durumda Task Manager calistirip Run kismindan explorer.exe tekrar balslatmak gerekir. Task Manager i baslatmak icin Remote Desktop da ctrl + alt + del ne yazikki ise yaramiyor. Bunun icin gerekli olan kombinasyon:

Ctrl + Alt + End

Kücük bir ipucu :)