26 Nisan 2011 Salı

XML kodundan boşlukları silmek

using System;
using System.Text.RegularExpressions;

public static class XMLUtility
{
public static string RemoveWhitespace( string xml )
{
Regex regex = new Regex(@">\s*<");
xml = regex.Replace(xml, "><");
return xml.Trim();
}
}

20 Nisan 2011 Çarşamba

70-515 sınavına hazırlık

Evet, saçma bir çalışma yapmaya ne dersin ey yazılımcı deseler ne dersin.
"Gideyimde microsoft sertifikalarımı tamamlayayım bari"
Kendini nedense devamlı geliştirmek zorunda sanan zavallı yazılımcı tayfası için biçilmiş kaftandır bu sınavlar, madalyalarını sırım sırım sıralamışken, bir yenisini daha ister ve maalesef gidip Microsoftun sınavından sertifikaları tamamlamaya karar verir. İşte ben...
İnternette pekçok paralı sitede soru cevap şeklinde sınav bilgileri satılmakta ama ben birazda işe yarasın moduyla öğrenme niyetindeyim. Sınavda öğrensende bilsende yapamayacağın trikli sorular olduğunu da kabul ediyorum ama napalım başa gelen çekilir.

İşin ilginç yanı gerçekten aman bu ne ki bile demediğimiz otomatik oluşan sayfa kodları gibi kodların ne işe yaradığını anlamak çok da eğlenceli geliyor. Kullanırken kasmazken şimdi "Haa demek bu demek hmmm" veya "Aaaa bu şekilde de mi kullanılıyormuş" derken bende kendime şaşırıyorum ve itiraf ediyorum, "Hiiiç merak etmemişim, şimdiye dek bilmediğim için de ölmedim o da ayrı"

Sadade gelirsem, sertifika sınavından bunca yıldır yazılımcılık yapıp da çakmamak için MCTS.Self.Paced.Training.Kit.Exam.70-515.pdf  kitabından yararlanıyorum, isteyen olursa gönderebilirim.

Godaddy'den C# kodu ile email göndermek

Bu fonksiyon ile godaddyden accountunuz varsa rahatlıkla iletişim formundan kendinize mail atmakta kullanabilirsiniz.

public bool MailGonderIletisimFormu(string p_Ad,string p_email,string p_icerik)
{
bool sonuc = false;
try{
MailMessage message = new MailMessage();
message.IsBodyHtml = true;
message.From = new MailAddress(p_email);
message.To.Add(xxxx@hotmail.com);
//new MailAddress(p_kullaniciBilgileri.MailAdresi));  de kullanılabilir
message.Subject = "ILETISIM FORMU";
message.Body = p_icerik ;

SmtpClient smtp = new SmtpClient("relay-hosting.secureserver.net");
smtp.Credentials = new System.Net.NetworkCredential("info@xxyy.com", "111111");
smtp.Port = 25;
smtp.EnableSsl = false;
smtp.Send(message);
sonuc = true;
}
catch (Exception err)
{}
return sonuc;
}

14 Nisan 2011 Perşembe

C#'da tasarımsal HTML kaymaları

Eğer sorunsuz gözüken HTML sayfası arkasına kod yazmak üzere kullandığınızda bozuluyorsa olası sebepler ve çözümleri;
1- Kullandığınız button veya imagebuttonlar, eğer mümkünse olayı map ile çözümlemelisiniz.
2- Sabit verilmeyen kolon ve satırlar için uzunluk ve yükseklik değerleri, çözüm bunları sabitlemek tabii ki
3- Tablonun <td> koduna <td align="left" valign="top"> gibi bir özellik vermemek, bu özelliği verip o satıra topluca bir arka fon resmi koyduğunuzda zor yoldan da olsa sorunu çözebiliyorsunuz.

13 Nisan 2011 Çarşamba

Unit Test nedir?

Unit Test

Unit test yaparken temel amaç yazdığınız kodun her satırının başka bir kod tarafından otomatik olarak test edilmesidir. Burdaki "test" kullanıcı testi değil, fonksiyonunun düzgün çalıştığının test'idir.
Her test diğer testlerden bağımsız olarak çalışmalı ve tüm bu testlerin tek bir sonucu olmalıdır yani TRUE yada FALSE. Unit test kodları içerisinde görsel doğrulama (ekrana bir şey yazma, mesaj gösterme v.s.) gibi işlemler yapmazsınız.
UnitTest kodları yanlızca çalışması beklenen durumlar için değil metodun verdiği hataları da test eder. Yani müşteri numarasını - değerde verdiğinizde fonksiyonun hata veriyor olmasını beklersiniz.
UnitTest ile pratikde çıkan sorun genelde işler acil olduğu için bu test kodları sonraya bırakılır. bunu yapmayın! İşiniz ne kadar acil olursa olsun test kodlarını yazmadığınız her metod ileride harcadığınız zamanı tekrar tekrar uzatacaktır.

Code Coverage

Unit test sonuçlarına bakarken kalan açık kalabilecek tek nokta yazdığınız kodun ne kadarının test edildiğini bilmektir. Bunu analiz edebilmek içinde coverage tool'larını kullanabilirsiniz.
Coverage tool'ları unit test kodlarını simüle ederek asıl kod üzerindeki çalıştırılan satırların analizini çıkarırlar. %80 civarındaki bir coverage toplamı genel olarak kabul edilebilir orandadır.

Mock Objects

Unit test yaparken temel amaç yazdığınız tek bir metod'u denemektir. Karmaşık sistemlerde test yaparken tüm uygulamayı çalışır halde tutmak zor olacaktır, bunun yerine sadece gereken ortamı simüle edecek kodlar yazmanız gerekebilir.
Örneğin aslında ldap'a bağlanan Logon() metodunun çağırdığı fonksiyonlar yerine sanki ldap gibi davranan ama fonksiyonel bir iş yapmayan objeler geliştirebilirsiniz. Burda test edilmesi gereken active directory değil yazdığınız logon metodudur.
Bu tür fonksiyon yada class'lara mock objects deniyor. Genelde mock object içermeyen bir unit test fazla fonksiyonel olmayacaktır.

6 Nisan 2011 Çarşamba

Web Alanı(Hosting) ve Web Alan Adı (Domain Name) için doğru adres


GoDaddy senelerdir birlikte çalıştığım firma.
Seneler önce Türkiye'den servis sağlayıcılarla çalışmayı bıraktım. Batanından tutun da, göçenine, veri kaybından, günlerce response alınamayan sayfalara kadar yaşadıklarım yetmiyordu bir de müşteri hizmetleriyle kavgalar ediyor, deli gibi de paralar bayılıyordum. Bu firmaların Türkiye'nin gelişecek firmaları gözüyle bakılan yerler olduğunu hatta hala 2 tanesinin ayakta ve en büyük hosting firmalarından sayılıyor ama o kadar da büyüyemedikleri de göz ardı edilmemeli, hep hizmet eksikliklerinden benim gibi bir çok insanın olduğunu tahmin ediyorum.
Daha sonra sene 2000de Godaddy'yi keşfettim, indirimli alan adı veya hostinge ihtiyacı olanlara duyurulur.


Bu arada artık .co uzantılı alan adlarının önemi de yatsınamaz hale geldi, ben bir tane edindim bile.
.com alan adlarında yaşanan sıkıntıları atlatabilmek için başlanan .co serisinde isim bulmak oldukça kolay ve yaygınlaşacağına kesin gözüyle bakıyorum.


1 Nisan 2011 Cuma

External table is not in the expected format.

Exception: System.Data.OleDb.OleDbException: External table is not in the expected format.

Bu exceli okumaya çalışırken aldığım bir hata. Bağlantı yapılamaması ile alakalı.

System.Data.OleDb.OleDbConnection cn;
System.Data.OleDb.OleDbDataAdapter cmd;
System.Data.DataSet ds = new DataSet();
cn = new System.Data.OleDb.OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0;" + "data source=E:\\a.xls;Extended Properties=Excel 8.0;");

cn.Open(); --> hataya düştüğümüz alan

Hatanın nedeni benim için Excelin versiyonlarının burada 8.0 belirtilmesi ve Office 2010 .xlsx formarında dosya okumaya çalışmaktan kaynaklanıyordu.
Eğer Office 2010 ile kaydedilmiş bir dosyayı okumak istiyorsanız bağlantınızı 12.0'a çekmeniz gerekiyor.
Umarım işinize yarar