October 2006 - Posts

Designing Data Tier Components and Passing Data Through Tiers

Her yiğidin bir yoğurt yiyişi var misali her programcı kendi 3-tier yapısını oluşturuyor.
 
İhtiyaçlar doğrultsunda şekillenen katmanlı mimarinin başlarken temel alınacak ve 3-tier uygulamaların nasıl tasarlanması gerektiğini "güzel" anlatan az makalelerden biri.
 
Posted by Selçuk Yavuz | with no comments
Filed under:

How Projects Really Work

Boğaziçi Üniversitesi'inde master yapan bir arkadaşıma hocası tarafından fotokopi olarak verildiğinde gördüm önce.
 
Daha sonra bir arkadaş PDF sürümünü gönderdi.
 
Nihayetinde sitesini açmışlar : http://www.projectcartoon.com/cartoon/2
 
Gerçekte projelerin nasıl işlediğini daha güzel tarif eden bir şey olamazdı herhalde :)
Posted by Selçuk Yavuz | with no comments
Filed under:

Yüksek boyutlu LOG dosyalarını indirmek..

Uygulamalarında veritabanı olarak SQL Server kullananların ortak derdidir. LDF dosyam çok büyük boyutlara ulaştı ne yapmalıyım ?
 
Bu işlemleri yapmadan önce veritabanınızın komple yedeğini almanızı öneririm.
 
Veritabanını Detach edin. Ardından girin LDF dosyasını silin. Veritabanınızı Attach edin. Attach işlemi sırasında LDF dosyasının olmadığını yeni bir tane oluşturmak isteyip istemediğinizi soracak. OK dediğinizde 1 KB lik bir LDF dosyanız olacak.
 
LDF dosyanızın şişmesini engellemek için
 
1. LDF dosyanıza bir sınır verin.
2. Veritabanızın AutoShrink özelliğini enable yapın.
3. İşlemleriniz çok çok kritik değilse Recovery Model değerine Simple atayın.
Posted by Selçuk Yavuz | with no comments
Filed under:

My for C# 2.0

.Net Framework 2.0 ile gelen yeniliklerden biride VB.NET diline geçilen torpillerden My namespace'i.
 
C# dilinde olmayan bu kullanışlı namespace'i C# projelerinizde kullanmak istiyorsanız idesing.net sitesinin Downloads bölümünden indirebilirsiniz. 
 
Sizden bir email adresi istiyorlar. Linki emailinize gönderiyorlar. ThatDemo ismli bir zip dosyası indireceksiniz. That.dll i projenize reference olarak ekledikten sonra VB.NET teki gibi My yerine That namespace'i altında kullanabiliyor olacaksınız.
Posted by Selçuk Yavuz | with no comments
Filed under:

Yazılımcı yazar, yazmayan sistemcidir kablocudur

Değerli hocam Hakkı Öcal'ın bir konferansında katılımcılardan bir tanesi şöyle bir şey söylemişti.
 
"Hocam programcılık iyi güzelde ben kod yazmayı sevmiyorum."
 
Hakkı Hocam'ın verdiği cevap :
 
"Ben de" :)
 
Çalıştığım eğitim kurumunda Sistem ve Network eğitimleri veren bir dostumda şöyle bir tespitte bulunmuştu :
 
"Ya siz yazılımcılar sürekli 'nasıl daha az kod yazarım, kod yazmadan şu işi nasıl yaparım'ın peşindesiniz. Sizin asli göreviniz 'yazmak' değil mi" ?
 
Hal böyle iken programcılar olarak bizde sürekli yazdığımız Stored Procedure yada Class'ları oluşturan bir program yazmak durumunda kalıyoruz.
 
Şu an itibariyle sourceforge.net'te Code Generators kategorisi altında 2088 proje mevcut.
 
VS.NET 2005 ile gelen sihirbazlarda artık yazdığımız kod sayısı giderek azalmaya başladı. Bu da ister istemez, teknoloji devriminde işsiz kalan fabrika işçileri gibi çevremdeki bazı programcı arkadaşların "işsiz mi kalacağız" endişesi duymasına neden oluyor.
 
Son olarak 2003'te .Net eğitimi aldığım değerli bir başka hocamın bir cümlesini aktarmak istiyorum : 
 
"Yazılımcı yazar, yazmayan kablocudur, sistemcidir" :)
Posted by Selçuk Yavuz | with no comments
Filed under:

Exe'den EXE oluşturmak ve çalıştırmak.

http://forum.mutasyon.net te sorulan bir soru üzerine verdiğim cevabı burayada aktarmak istedim.
 
Main.EXE ve Child.EXE isminde iki adet EXE dosyamız olduğunu düşünelim.

Senaryomuza göre Main.EXE'den Child.EXE i oluşturup çalıştıracağız.

Project -> Add Extisting Item diyerek Child.EXE yi projenize ekleyin.

Solution Explorer penceresinde Child.EXE yi seçin.

Properties penceresinde Build Action özelliğine Embeded Resource atayın.

Main.EXE de istediğiniz bir yerde aşağıdaki kodu çalıştırın :

System.Reflection.Assembly asm;
asm = System.Reflection.
Assembly.GetExecutingAssembly();
string resourceName = asm.GetName().Name + ".Child.exe"
;
System.IO.Stream stream = asm.GetManifestResourceStream(resourceName);

byte[] buffer = new byte[stream.Length];
int bufferSize = Convert.ToInt32(stream.Length);
stream.Read(buffer, 0, bufferSize);

string tempFileFolder = System.Environment.GetFolderPath(Environment.SpecialFolder.InternetCache);
string tempFilePath = System.IO.Path.Combine(tempFileFolder, "Child.exe");

System.IO.FileStream fs = new System.IO.FileStream(tempFilePath, System.IO.FileMode.Create);
fs.Write(buffer, 0, bufferSize);
fs.Close();

System.Diagnostics.Process.Start(tempFilePath);

Doğal olarak Childe.EXE çalışırken bir güvenlik uyarı alıyorsunuz. 
Posted by Selçuk Yavuz | with no comments
Filed under: ,
More Posts