Msn Messenger açılmıyor neden ?

16 eylül yani dün güvenlik nedeniyle microsoft herkesin msn’i yükseltmesini istedi, hatta zorladı! Geçmez iseniz msn’niz açılmıyordu falan bazen bu tür durumlarda msn hata kodu gözükür ve sizde bu hata kodunun çözümünü internette araştırarak cevabı öğrenirsiniz ancak bu her zaman yeterli olmayabilir. Bazen bulunduğunuz kurumda da msn’de çok fazla geyik muhabbet yapılıyor diyerekten engellenmiş oluyor. Böyle zamanlarda ise farklı msn siteleri işimizi görüyor. Benim kullandığım siteleri aşağıda bulabilirsiniz eğer farklı msn hata kodu ile karşılaşırsanız burada yorumda bulunarak size yardımcı olabiliriz! Kullandığım servisler ;

http://www.meebo.com/
http://www.ebuddy.com/

C# Parametreli ToString() Metodu

Bugün internette döküman okurken yeni birşey öğrendim. ToString() metodunun içine parametre ekleyerek, sayıları farklı bir şekilde string ifadesine çevirebiliyoruz. Örnekleri görünce daha iyi anlayacaksınız.

1-) C Parametresi:

long sayi = 10000000;
string deger = sayi.ToString("C");
MessageBox.Show(deger);

Bu şekilde C parametresi verdiğimizde sayıyı para birimiyle beraber yazdırır.

2-) N Parametresi:

long sayi = 10000000;
string deger = sayi.ToString("N");
MessageBox.Show(deger);

N parametresi verdiğimizde sayıyı binlik hanelere böler.

3-) D Parametresi:

long sayi = 10000000;
string deger = sayi.ToString("D11");
MessageBox.Show(deger);

D parametresi, verilen sayıyının basamak miktarını yanındaki sayıya tamamlar.

4-) P  Parametresi:

long sayi = 0.50;
string deger = sayi.ToString("P");
MessageBox.Show(deger);

P parametresi ile, verilen double sayı, yüzdelik karşılığına çevrilir.

5-) F Parametresi:

long sayi = 0.50;
string deger = sayi.ToString("N5");
MessageBox.Show(deger);

N parametresi ile virgülden sonra kaç basamak gösterileceğini belirlersiniz.

En etkili ve en basit arayüzü ile Facebook Lite yayında

Bundan bir ay öncesine kadar belli kullanıcılarına yeni sürümü olan lite’ı test ettiren Facebook en sonunda Lite adlı arayüzünü kullanıcılarına sundu. Şimdilik sadece ingilizce kullananlar girebiliyormuş tabi hali hazırda kullanmıyorsanız bile geçiş yapıp deneme imkanına erişebilirsiniz. Lite versiyonuna girebilmek için Lite Facebook‘dan giriş yapın.

Öncelikle şunu belirtmeliyim ki bundan önceki arayüzünü hiç beğenmemiştim çünkü sırf video paylaşım sitesine benziyordu. Ve bunu başarmıştı o zamandan beri  arkadaşlarımın paylaştığı şeyler genelde video içerik oluyordu.  Değişikliklere bakarsak, ilk anda göze çarpan en büyük değişikliklerden biri üst menünün büyütülmesi ve “Home” adı verilen gereksiz menünün ve “arkadaşlar”  menüsünün kaldırılması. Sanki yanındaki logoyo tıklayınca anasayfaya gitmiyormuş gibi “home”n orada durması zaten hataydı. Üst menüde onun yerine etkinlikler gelmiş şu an herhangi bir etkinliğim bulunmadığı için en yakın doğum günleri gözüküyor. Ayrıca inbox’un üzerine gelince aşağıya doğru sarkan zımbırtıyıda kaldırmışlar. Aslına bakarsanız üst menünün genişletilmesi ve daha 2 önce duyurduğumuz Google arama ekranını büyüttü adlı yazıda bahsettiğimiz benzer boyutlara getirilmesi tesadüf olabilir mi ?

Bunların yanında hemen farkedilmeyen ancak videoların ve fotoğrafların bulunduğu sayfaların “url”lerinin anlamlı hale getirilmesi özelliği. Peki bunun ne faydası olabilir ? Daha önceden arama özelliğini artıracağını söylemişti belki de video arama özelliği ekleyebilirler veyahut videoları dışardan gelen ziyaretçilere açıp arama motolarında çok daha üst sıralarda çok rahat yer edinebilir. Ayrıca daha önce aldığımız facebook kullanıcı adları da daha belirginleşmiş. Öncesinde profilimizin üzerine geldiğimizde alakasız karakter içeren url’ler çıkarken şimdi direkt facebook.com/kullanıcı adı gözükmekte.  Son olarak sağdaki video menüsünü kaldırması açıkçası şaşırttı çünkü çoğu insan sırf video paylaşım için girerken, video içeriklerin gözümüzün önünde kaldırılması kullanma oranı azaltabilir diye düşünüyorum.

Son olarak 2006’dan beri gördüğüm en basit ve görsele daha çok önem verilmiş bir arayüz olduğunu düşünüyorum. Ayrıca yukarda bahsettiğim özellikler sadece belli başlı olmakla birlikte çok fazla detaya girmedim, örneğin artık fotoğraf ve video yorumları altta değil hemen yan tarafta çıkıyor, eskiden görünüm 3 kolon iken artık 2’ye düşürülmüş gibi. Eğer sizinde Facebook Lite kullanma şansınız olursa kullanıcı düşüncelerinizi bizimle paylaşabilirsiniz.

SqlBulkCopy Class kullanımı

SqlBulkCopy sınıfı, iki veritabanı arasında veya aynı veritabanı içindeki, iki tablo arasında kopyalama yapmak için kullanılan çok basit bir sınıftır. Bu sınıf ile 500.000 adet veriyi 1 dakika içerisinde kopyalayabilmektesiniz. Bu açıdan oldukça kullanışlıdır. Şimdi bir örnekte bunu inceleyelim.

İlk olarak bir Windows form açalım. Ve bir adet buton ekleyelim. Butonun click olayına şağıdaki kodları yazalım.

private void button1_Click(object sender, EventArgs e)

{

SqlConnection baglanti1 = new SqlConnection("server=localhost; initial catalog=Ticari; integrated security=true");

//ilk olarak kopyalayacağımız veritabanı için bağlantı oluşturduk.

SqlCommand komut = new SqlCommand("select * from stok", baglanti1);

baglanti1.Open();

SqlDataReader oku = komut.ExecuteReader();

DataTable dt = new DataTable();

dt.Load(oku);

oku.Close();

baglanti1.Close();

// veritabanını okuyup, bir datatable'a aktardık ve bağlantıyı kapattık.

SqlConnection baglanti2=new SqlConnection("server=localhost; initial catalog=kopyaTicari; integrated security=true");

// şimdi de hedef veritabanı için bir bağlantı oluşturduk.

// Not: Eğer kopyalayacağınız tablolar aynı veritabanı içindeyse tek bir bağlantı yeterlidir. ben farklı veritabanları arasında kopyalama yaptığım için iki farklı bağlantı oluşturdum.

SqlBulkCopy kopyalama = new SqlBulkCopy(baglanti2);

// SqlBulkCopy sınıfından bir adet nesne türettik. Dikkat ettiyseniz bağlantı olarak hedef veritabanının bağlantısını verdik.

baglanti2.Open();

kopyalama.ColumnMappings.Add("id", "id");

kopyalama.ColumnMappings.Add("Malzeme", "Malzeme");

kopyalama.ColumnMappings.Add("Adet", "Adet");

// bu üç satırda kaynak tablodaki sutunların, hedef tablodaki hangi sütunlara kopyalanacağını belirttik.

kopyalama.DestinationTableName = "dbo.kopyastok";

// hedef tablonun ismini belirttik.

kopyalama.WriteToServer(dt);

// kopyalamaya başladık.

baglanti2.Close();

}

Burda kodları tekrar açıklamayacağım zaten yanlarında hepsini açıkladım. Eklemek istediğim bir şey var. Ben burada tablonun tamamını kopyaladım. Eğer isteseydim sadece bir ya da iki sütunu da koyalayabilirdim. Bunu, sütunları eşleştirdiğimiz kod satırlarında sağlarız. Mesela aşağıdaki gibi olsaydı sadece id ve Malzeme sütunlarını kopyalamış olacaktık.

kopyalama.ColumnMappings.Add("id", "id");

kopyalama.ColumnMappings.Add("Malzeme", "Malzeme");

Son olarak şunu belirteyim, hedef veritabanını ve tabloyu daha önce kendimiz oluşturduk. Bunu istersek bir kodla da yapabiliriz ama o kısmı burada değil başka bir yazımda ele alacağım. Şimdilik bu kadar yeter 😉

Sql trigger tutorial

Trigger kelime anlamı olarak tetikleyici demektir. trigger, SQL’de bir sorgu çalıştırdığımızda, başka bir sorgunun çalışmasını sağlamak için yazılan koddur. Mesela bir tablodan kayıt sildiğimizde, başka bir tablodan onunla ilgili bir kaydın silinmesi için kullanabiliriz. Yada bir tabloya eklem yaptığımızda başka bir tabloya da onunla ilgili olan bilgileri eklemek iin kullanabiliriz. Üç farklı işlem için trigger vardır. Bunlar; insert, update, delete sorguları içindir. Örnek verdiğimiz zaman daha iyi anlayacaksınız.

1-İnsert için trigger: Bir tabloya kayıt eklediğimizde başka bir tabloda kendiliğinden bir işlemin gerçekleşmesi için yazılır. Aşağıda bunun için bir örnek vardır beraber inceleyelim. Bu trigger, satis isimli tabloya ekleme yaptığımızda, urunler isimli tablodan, satılan ürünün sayısını yapılan satış kadar azaltmak için kullanılmaktadır.

create trigger stokGuncelle on satis --bu satırda trigger adını yazıyoruz ve tetiklemenin kaynağı olan tabloyu yazıyoruz.
for insert --buraya dikkat edin. trigger’ın hangi komut için yazıldığını gösterir.
as
begin
declare @satisAdedi int, @urunid int -- iki adet değişken belirliyoruz.
select @satisAdedi=satisadedi, @urunid=urunid from inserted --yaptığımız insert işleminde satisadedi ve urunid değerlerini alıp bunları daha önce belirlediğimiz değişkenlere atıyoruz
update urunler set stokadedi=stokadedi-@satisAdedi where urunid=@urunid --şimdi aldığımız değişkenleri başka bir tabloda değişiklik yapmak için kullanıyoruz.
end

2- Update için trigger: Bir tabloda güncellemede yaptığımızda başka bir tabloda da güncelleme yapmak için kullanılır. Burada dikkat edilmesi gereken, update işleminin çalışma mantığıdır. Aslında direk olarak update diye birşey yoktur. Update aslında iki basamakta gerçekleşir. Birinci adımda güncelleme yapacağımız satır silinir, ikinci adımda ise o satır yeniden eklenir ama bu sefer güncel değerleri eklenir. Şimdi tirgger kodumuzu inceleyelim.

create trigger duzelt on satisfor update-- update işlemi ile tetiklemenin başlatıldığını gösterir.
as
begin
declare @yenisatisadedi int, @satisadedi int, @urunid int
select @satisAdedi=satisadedi, @urunid=urunid from deleted --silme işleminde silinen satırdaki satisadedi ve urunid değerlerini alıyoruz.
select @yenisatisadedi=satisadedi , @urunid=urunid from inserted --ekleme işleminde eklene satisadedi ve urunid değerlerini alıyoruz.
if(@yenisatisadedi<@satisadedi) --eğer eklenen satisadedi değeri silinen satisadedi değerinden küçük ise işlem yapar. yani güncelleme yaptığımız değer eski değerden az ise.
begin
update urunler set stokadedi=stokadedi-(@satisadedi-@yenisatisadedi)

where urunid=@urunid -- ürünlerdeki stokadedini güncelleme yaptığımızda satisadedi değerindeki değişim kadar azaltır.
end
else
begin
update urunler set stokadedi=stokadedi+(@yenisatisadedi-@satisadedi)
where urunid=@urunid-- ürünlerdeki stokadedini güncelleme yaptığımızda satisadedi değerindeki değişim kadar artırır.
end
end

Bu kod ile, satış tablosunda bir satırı güncellediğimizde, ürünler tablosunda o ürünün stok adedi değiştiriliyor. Yukarıda update işleminin iki basamakta gerçekleştiğini söylemiştik. Kodda da görüldüğü gibi ilk olarak silme işleminde silinen değerleri alıyoruz. Daha sonra ekleme işleminde eklenen değerleri de yeni değerler olarak alıyoruz. Sonra bu değerleri karşılaştırarak değişim miktarına göre ürünlerdeki stok adedini de güncelliyoruz.

3- Delete için trigger: Bu trigger de bir tabloda silme işlemi gerçekleştiğine başka bir tabloda değişiklik yamak için kullanılır. Aşağıdaki kodda satış tablosundan bir satırı sildiğimizde ürünler tablosunda değişiklik yapılıyor. Mesela bir ürünün satışını yaptınız ve satış yaptığınız anda ürünün stok adedini azalttınız. Ama bir aksilik çıktı satışı iptal ettiniz bu durumda ürünü yeniden stoğa eklemeniz gerekmektedir. Aşağıdaki kod da bu işe yaramaktadır.

create trigger iptalEt on satisfor delete
as
begin
declare @satisAdedi int, @urunid int
select @satisAdedi=satisadedi, @urunid=urunid from deleted -- silinen satisadedi ve urunid değerlerini alıyoruz.
update urunler set stokadedi=stokadedi+@satisAdedi --satış tablosundan silinen ürün miktarı kadar ürünü ürünler tablosunda ekliyoruz.
where urunid=@urunid
end

Google arama ekranı daha büyük!

Dün akşam saatlerinde bir arkadaşım internet explorer sayfasının birazcık büyüdüğünü ve bunu nasıl çözebileceğini sorarken daha sonra farkettik ki sorun sadece google da imiş. (Daha önceki yazılarda belirttiğimiz üzere Türkiye’de birçok insan için internet demek google demek olduğundan hangi sayfasının açık olduğunu sorma lüzümunda bulunmamıştım :)) Aslına bakarsanız ortada sorun falan yokmuş sadece google sayfasında arama kutusu genişlemiş hali hazırda aratılan kelimelerin boyutu artmış. Bu durumu da kendi blog’unda duyuru yaparak kullanıcılara haber vermiş. Tabi bazı insanlar için ufak bir değişiklik söz konusu iken google için çok daha fazla önem arzediyor bunun en büyük sebeplerinden biri arama motoru olması. Düşünün kahvehanede çay bardakların bir boy büyük geldiğini herkes kesinlikle durumu farkeder. Çünkü adamların işi bu  !

Ek olarak henüz her yerde gözükmeyebileceğini ve veri tabanların güncellenmesi gerektiğini belirtmişler. Meraklılar için de ayrıca teknik bilgi vermiş; “arama kutusu 13 pixel’den 17 pixel’e büyütülmüş.”

Norton Removal Tool (Kaldırma Programı)

Symantec adlı şirketin en ünlü programı Norton ile kesinlikle karşılaşmışınızdır, bu salak program aslında virüs temizleme olarak bazı senelerde başarı sergilese bile hem bilgisayarı çok kasmasından dolayı hem de çok iyi temizlemediği düşünülerek kaldırılmak istenir.

Yeni bilgisayar aldığımızda nasıl windows kurulu olarak geliyor bazen programlar arasında norton adlı antivirüs de bulunuyor. Peki ne olacak program kaldır denilen yerden kaldırırız derseniz çok hata edersiniz. Çünkü daha kaldırmaya çalışırken bütün dosyaları kalkmaz ve hata verir bu hatayı araştırırken öğrenirsiniz ki bunun için ayrıyeten program gerekiyormuş!

Remover programını symantec’in kendi sitesinden indirebilirsiniz! (Sağ tıkla farklı kaydet demeniz yeterli)

Adobe Air nedir, ne işe yarar ? İndir!

Uzun zamandır okuyucularla paylaşmak istediğim uygulamalardan bir tanesi de Adobe Air idi. Uygulamanın varlığından ilk haberdar olduğum zaman  worpdress comments moderatorü keşfetmeme denk gelir.  Bu eklentiden kısaca bahsetmek gerekirse  masaüstünüze kurduğunuz plugin sayesinde blogunuza gelen yorumlarınızı an itibariyle sağ alt köşede bulunan saatin yanında beliren ikondan takip edebiliyordunuz bu sayede gelen yorumları oradan okuyup onaylayabiliyordunuz. Açıkçası bu eklentinin çalışması için her ne kadar Adobe Air gerekli olsa da işlevsel olarak tam anlaşılmıyordu. Peki nedir bu adobe air ?

Adobe Air web uygulamalarının bir nevi masaüstüne inmiş hali denilebilir. Normalde bir siteye internet tarayıcısı ile ulaşacağımıza bu uygulama ile rahatlıkla kontrol edebiliyoruz. En önemli örnek ise friendfeed idi.  İşte o zaman ne kadar kullanışlı ve ne kadar elzem bişi olduğuna kanaat getiriyorsunuz.

Peki Adobe air bu durumda ne işe yaradı ?

Kurmuş olduğunuz uygulama sayesinde friendfeed hesabınızda takip ettiğiniz insanların yorumları bilumum tartışmalar sizin ekranınıza hemde anlık olarak! yansıyor. Yani takip ettiğiniz insanlardan birinin yorumu aynı msnden ileti gelir vaziyette sağ altta beliyor ve böylece friendfeed’i sürekli yenilemek ve internet üzerinden takip etmenize gerek kalmıyor! Aslına bakarsanız bunlar hiçbirşey piyasada öyle yapılmış şeyler var ki dudak ucuklatan cinsten. Sizleri daha fazla merakta bırakmayıp en kısa zamanda kullanılması gereken 10’a yakın uygulamayı seçip sizlerle paylaşacağım!

Unutmadan nereden indirebilirim diyorsanız kendi sitesinden son sürümü 1.5.2 download edebilirsiniz!

İnternetten bedava telefon görüşmesi ! Foxfon

2007 senesinin popüler programı foxfon bugünlerde geçmişini mumla arıyor! Daha önceleri ücretsiz olarak insanların sabit hatları aramalarına izin veriyordu. Gerçi en fazla bir hesap ile 5 dakika konuşabiliyordunuz ama günümüzde kimsenin kimseye karşılık beklemeden iş yapmadığı bu dönemde bence bu bile çoktur.

Peki foxfon ile bedava nasıl telefon görüşmesi sağlanabiliyordu ?
Aslında çok basitti internet tarayıcısı olarak firefox kullanıyor olmanız gerekiyordu ayrıca basit bir eklenti indirip kurmanız kafi idi. Daha sonra hesap açıyordunuz ve bu esnada girdiğiniz mail adresine pin kodu geliyordu bu şekilde register işleminiz tamamlanmış oluyor. Bundan sonra dilediğiniz sabit numaraları toplam da en fazla 5 dakika görüşebilecek şekilde arayabiliyordunuz.

Sene 2009 eylül, artık foxfon ne download ediliyor ne de install. Şimdilerde foxfon sitesi satılığa çıkarılmış. Tabi bunu ilk başta anlamayan necip türk milleti insanımız bulmuş olduğu iletişim formu ile kayıt olmaya çalışıyor. Halbuki adamlar siteye teklif verecek insanların onlara ulaşabilmesi için iletişim formu yapmış. 🙂 Yani artık foxfon bitmiştir internetten bedava görüşme yapamazsınız!

Yeni başlayanların yaptığı 5 CSS hatası

Piyasada CSS hakkında birçok makale var bunların bir kısmı çok yararlı olup bazıları ise yanlış anlaşılmalara ve hata yapmaya sebep olmaktadır. Özellikle CSS’ye yeni başlayanların sıklıkla yaptıkları birçok hata mevcuttur. Bu yazıda en çok yapılan hataların 5’ini inceleyeceğiz.

1-) Class ve ID leri aşırı kullanmayın
Yeni başlayanlar sayfada bulunan her elemente class ve ID ekliyorlar. Bu hem gereksiz hem de CSS’nin kullanım amacını toptan iptal etmiş oluyor. Class ve ID lerin aşırı kullanımı sadece stil sayfanızın kalabalıklaşmasına neden olmayıp ayrıca gereksizdir. Aşağıda bu bahsettiğimle alakalı örnek bulabilirsiniz.

Yanlış Örnek:

<div id="container" class="container">
  <p class="heading"><strong class="extrastrong">Welcome</strong></p>
  <p class="link1"><a href="#" class="link">Home</a></p>
  <p class="link2"><a href="#" class="link">About</a></p>
  <p class="link3"><a href="#"> class="link"Services</a></p>
  <p class="link4"><a href="#"> class="link"Contact</a></p>
</div>

Doğru Örnek:

<div id="container">
    <h1>This is a heading</h1>
        <ul>
            <li><a href="#">Home</a></li>
            <li><a href="#">About</a></li>
            <li><a href="#">Services</a></li>
            <li><a href="#">Contact</a></li>
         </ul>
</div>

2-) İnline stilini kullanmayın
HTML sitenizi biçimlendirirken sıralı (inline) stilini kullanmayın. Bu özellik de her elemente ayrı ayrı uygulanmak zorunda. Ayrıca CSS yi harici olarak çağırarak tek dosya üzerinden çalışmak varken neden bu kadar kendimizi zorlayalım ki ?
Yanlış Örnek:

<p style="color: #fff; font-size: 2em;">This is a sentence.</p>

Doğru Örnek:

<p>This is a sentence.</p> 
/*Harici Stil Dosyası*/
p { color: #fff; font-size: 2em; } 

3-) Absolute position’ı kötüye kullanmayın
Absolute position’ın doğru kullanımını öğrenmek gerekiyor. Örneğin sayfadaki her elemente absolute position uygulanmamalı. Efektive olarak nasıl kullanılabileceği öğrenilmeli, çünkü bu uygulama CSS için önemlidir.

4-) Hatasız ve dağınık olmamasına özen gösterin
Eğer CSS’niz hatasız ve düzenli olursa bu hem arama motorları için iyidir ayrıca diğer geliştiriciler tarafından daha rahat geliştirilebilir veya düzenlenebilir. Hataları düzeltmek için W3C doğrulamasını kullanabilirsiniz. Mesela Mac ve PC lerde Dreamweaver programı kullanılarak da hatalar kontrol edilebilir.

5-) Her yerde DİV etiketi kullanmayın
Yeni başlayanların yaptığı en büyük hatalardan biri de CSS’nin her yerinde div etiketi kullanmasıdır. Bu durumun sebeblerinden birisi de table’dan div’e geçmedir. Kesinlikle div etiketi kullanmayın demiyorum ancak sayfanın her elementinde kullanılmamalı. Örneğin bir paragraf etiketi ile “p” div etiketi “div” yer değiştirmemelidir.
Yanlış Örnek:

<div id="container">
    <div id="nav">
                <ul id="navlist">
                        <li>Home</li>
                        <li>About</li>
                        <li>Services</li>
                        <li>Contact</li>
                </ul>
    </div>
        <div id="heading"></div>
            <div id="news">News</div>
            <div id="stories">Stories</div>
</div> 

Doğru Örnek:

<div id="container">
    <ul id="navlist">
            <li>Home</li>
            <li>About</li>
            <li>Services</li>
            <li>Contact</li>
    </ul>
        <h1>Heading</h1>
            <p id="news">News</p>
            <p id="stories">Stories</p>
</div> 

Kaynak