Published with Blogger-droid v1.7.4
19 Ağustos 2011 Cuma
Telefondan blog yazmak Blogger-droid
Düşündüm şöyle bir şey olsa güzel olmaz mi? Dedim google a bir şeyler yazarım cevap alamazsam kendim bir şeyler yaparım. Kafama da koydum. Tabi ben aciz bu kafayla bunu düşündüğüme göre koskoca Androidin arkasında olanlar bunu düşünmez mi :) cevap çok belli, telefondan yazı gönderebilmek güzelmiş. Telefondan blog yazmak isteyenler marketten bu programı indirebilirler.
15 Ağustos 2011 Pazartesi
HTC MP3 ü alarm sesi olarak ayarlamak
HTC bu özelliğinin kullanımıyla beni çok şaşırttı. Alarmlara gelip menüye basarak direkt mp3 ü seçebilmeyi düşünmüştüm, başka türlü olmayacağını düşünerek internette arama yapmadan devamlı telefonu kurcaladım :) Son olarak malesef aramak zorunda kaldım. Kendi sitesindeki açıklama için buraya tıklayabilirsiniz.
Kısaca ben de yazayım buradan. SD kartımızın içerisine alarms adında bir klasör oluşturuyoruz. Alarm olmasını istediğimiz müziği oraya kopyalıyoruz. Buraya koyduğumuz müzik otomatik olarak alarm müziği seçeneklerinden biri oluyor.
19 Aralık 2008 Cuma
ASP.net AJAX Extensions
Visual Studio 2005 inizde web projesi oluştururken toolbox ınızda AJAX Extensions bölümü yoksa buradan indirip bilgisayarınıza setup ı kurun.
AJAX Extensions ScriptManager, UpdatePanel gibi önemli kontrolleri bulundurur. Örneğin internetten bulduğunuz bir Ajax tool kullanacaksınız, sayfanızda bir tane ScriptManager, ve sayfada server a gidecek yerin UpdatePanel içinde olması gerekmektedir. Yani Ajax kullanılan yerde bu extensions lar olmak zorundadır.
AJAX Extensions ScriptManager, UpdatePanel gibi önemli kontrolleri bulundurur. Örneğin internetten bulduğunuz bir Ajax tool kullanacaksınız, sayfanızda bir tane ScriptManager, ve sayfada server a gidecek yerin UpdatePanel içinde olması gerekmektedir. Yani Ajax kullanılan yerde bu extensions lar olmak zorundadır.
16 Aralık 2008 Salı
Visual Studio 2008 C# klavye kısayolları posteri
Daron Hocamızın açıklamasa hiç haberimizin olmayacağı :) Visual Studio 2008 de C# ile kod yazarken ihtiyacımız olan bütün klavye kısayolları. Görmeyenler için buradan da duyuruyorum. Artık kod yazarken mouse a son.
Kullanmadığımız ne kadar da çok kısayol varmış meğer. Posteri buradan indirebilirsiniz.
Kullanmadığımız ne kadar da çok kısayol varmış meğer. Posteri buradan indirebilirsiniz.
15 Aralık 2008 Pazartesi
C# Konsol Uygulamalarında Global Değişken
C# konsol uygulamalarında global değişken tanımlanamıyor. Global değişkenler tanımlandığı alandaki, fonksiyonlarda tekrar tanımlanmaya gerek duymadan kullanılabilen değişkenlerdir. Konsol uygulamalarında global değişken tanımlama yok, bunun yerine;
static int sayi = 0;
tanımlanıp global değişken gibi kullanılabilir.
static int sayi = 0;
tanımlanıp global değişken gibi kullanılabilir.
11 Aralık 2008 Perşembe
Resim Üzerine Yazı Yazma
Resim üzerine yazı yazma konusu herkesin bildiği bir şey. Graphics sınıfı kulanılarak istenen yere drawSring fonksiyonuyla yazı yazılır.
Sorun şurda, birden fazla resimler üzerine reklam amacıyla bir yazı yazmaya çalışıtığınızda farklı resimlere aynı font büyüklüğü değerini kulanılmıyor, tahmini bir değer de verilmiyor. width 100px olan bir resme 10 font büyüklü olursa, 200px olan bir resme 20 font büyüklüğü olur mantığı yanlıştır ve çalışmaz. Gerçek örnekler üzerinden gidersek 1600x1200 olan bir resimde font büyüklüğü bir arttığında resim üzerinde yazılan yazının büyüklüğü 42px kadar artar, fakat 900x1250 olan bir resimde ise 10px kadar artar. O yüzden kafamızdan bir font büyüklüğü belirleyemiyoruz.
Bir zamandır bununla uğraşıyordum bunu nasıl otomatik bir hale getirebilirim diye. Kodunu paylaşmak istedim. Alınan resmin tam ortasına yazılması istenen yazıyı yazıyor.
int fontSize = 1;
bool enough = false;
SizeF f = new SizeF();
string name = ""; // buraya serverda olan resmin adını yazıyoruz mesela a.jpg
Bitmap bmp = new Bitmap(Server.MapPath("~/resim/" + name));
Graphics g = Graphics.FromImage(bmp);
StringFormat format = new StringFormat(StringFormatFlags.FitBlackBox);
format.Alignment = StringAlignment.Center;
format.LineAlignment = StringAlignment.Center;
while (enough == false)
{
f = g.MeasureString("www.xx.com.tr", new Font("Verdana", fontSize, FontStyle.Regular));
if (f.Width <= bmp.Width - 40) //40 değeri formatta verilen dikdörtgenden dışarı çıkmaması için öylesine verilmiş bir değerdir
{
fontSize++;
}
else if (f.Width > bmp.Width - 40)
{
enough = true;
}
}
g.DrawString("www.xx.com.tr", new Font("Tahoma", fontSize, FontStyle.Bold), Brushes.White, new RectangleF(10, bmp.Height / 3, bmp.Width - 20, bmp.Height / 3), format);
bmp.Save(Server.MapPath("~/yaziliResim/Written" + name)); //resmin yazılmış şeklini kaydetme
Sorun şurda, birden fazla resimler üzerine reklam amacıyla bir yazı yazmaya çalışıtığınızda farklı resimlere aynı font büyüklüğü değerini kulanılmıyor, tahmini bir değer de verilmiyor. width 100px olan bir resme 10 font büyüklü olursa, 200px olan bir resme 20 font büyüklüğü olur mantığı yanlıştır ve çalışmaz. Gerçek örnekler üzerinden gidersek 1600x1200 olan bir resimde font büyüklüğü bir arttığında resim üzerinde yazılan yazının büyüklüğü 42px kadar artar, fakat 900x1250 olan bir resimde ise 10px kadar artar. O yüzden kafamızdan bir font büyüklüğü belirleyemiyoruz.
Bir zamandır bununla uğraşıyordum bunu nasıl otomatik bir hale getirebilirim diye. Kodunu paylaşmak istedim. Alınan resmin tam ortasına yazılması istenen yazıyı yazıyor.
int fontSize = 1;
bool enough = false;
SizeF f = new SizeF();
string name = ""; // buraya serverda olan resmin adını yazıyoruz mesela a.jpg
Bitmap bmp = new Bitmap(Server.MapPath("~/resim/" + name));
Graphics g = Graphics.FromImage(bmp);
StringFormat format = new StringFormat(StringFormatFlags.FitBlackBox);
format.Alignment = StringAlignment.Center;
format.LineAlignment = StringAlignment.Center;
while (enough == false)
{
f = g.MeasureString("www.xx.com.tr", new Font("Verdana", fontSize, FontStyle.Regular));
if (f.Width <= bmp.Width - 40) //40 değeri formatta verilen dikdörtgenden dışarı çıkmaması için öylesine verilmiş bir değerdir
{
fontSize++;
}
else if (f.Width > bmp.Width - 40)
{
enough = true;
}
}
g.DrawString("www.xx.com.tr", new Font("Tahoma", fontSize, FontStyle.Bold), Brushes.White, new RectangleF(10, bmp.Height / 3, bmp.Width - 20, bmp.Height / 3), format);
bmp.Save(Server.MapPath("~/yaziliResim/Written" + name)); //resmin yazılmış şeklini kaydetme
11 Kasım 2008 Salı
C++ Dizi İşlemlerinde Dikkat Edilmesi Gerekenler
Bu yazıda C++ kullanıcıları için çok önemli bir şeye değineceğim. Bunu da edindiğim acı tecrübeden yola çıkarak yazıyorum. C++ bildiğimi zannederdim, okulda hocamızın verdiği ödevde uzun zaman sonra C++ kullanmam gerekiyordu. 2 gün boyunca boş zamanlarımda sadece char dizisini almaya ve bunu print etme işlemine çalıştım inanın. Bu ödevin önemli bir kısmını tamamlamış bulunuyorum :). Bu ödevi yaparken karşılaştığım ve yapılması yüksek ihtimal mantık hatalarından bahsedeceğim. Bu konulara hakim olup dikat etmeniz önemli. Bu sorunlarla ben karşılaştım başkaları karşılaşmasın. Bi göz atmanızı tavsiye ederim.
Aşağıda anlatacağım işlemlerde char* array = new char[20]; dizisini kullanacağım.
1 - Öncelikle 20 karakter tutabilecek bir diziye bellekten yer ayırdık. Şimdi buna array[0] = 'a'; değerini atayalım ve print edelim. a___-----_İİİ gibi anlaşılmaz şeyler print edecektir. Bunun için yer ayırdığımız dizinin her bir elemanını dolaşarak temizlemeliyiz.
for(int i=0 ; i<20;>i++)
{
array[i] ='\0'; // \0 null demektir.
}
2 - Şimdi bu diziye ilk değer olarak array[0] = 'a'; atadık. Biliyorsunuz ki dizinin son elemanından sonra null değeri vardır bu da dizinin bittiği anlamına gelir. O yüzden bu diziyi başka işlemlerde kullanacaksanız, sonunu null yapmazsanız hata alma olasılığınız çok yüksektir. Bunu önlemek için de verdiğimiz en son değerden sonraki değeri null yapmalıyız. Yani array[1] = '\0'; değerini mutlaka vermeliyiz.
3 - array[0] = '2' ile array[0] = 2 aynı şey değildir bunu çoğu kimse bilir yine de buraya ekleyip hatırlatmanın iyi olacağını düşündüm.
4 - Uzunluk ile ilgili problem. Programda int uzunluk = strlen(array); diye uzunluğu bulduk diyelim ve uzunluk = 5 olsun, dizinin de dolu olduğunu düşünelim. Dizide array[uzunluk] = 'a'; demek veya for döngüsü içinde
for(int i=0 ; i <= uzunluk; i++) {
array[i] ='a';
}
bu şekilde kullanmak programın runtime ında hataya sebep olacaktır. Çünkü diziler indis olarak 0 dan uzunluk - 1' e kadardır.
5 - Dizinin ilk 0 elemanının dolu olduğun düşünelim. 'ahmetuzun'. array[1] = '\0' yani dizinin ikinci elemanının değerini null yapıyoruz. Diziyi print ettiğiniz zaman ekrana gelen a olacaktır. strlen(array) in sonucu da 1 olacaktır. Yani dizi dolu olsa bile, null değerini koyduğumuz yerden sonraki veriler kaybolur.
6 - Şimdi yeni bir dizi tanımlıyoruz. char* temp = new char[20]; bu dizi genelde geçici bir dizi olarak tanımlanır ve işi bittiğinde silinir. temp dizisini tanımladık ve temp dizisine temp = array diyerek yukarıda tanımlamış olduğumuz diziyi atadık. Daha sonra temp dizisini kullandık ve delete[] temp; diyerek bu diziyi bellekte boşuna yer kaplamasın diye sildik.
Eğer bu şekilde yaparsanız array dizimizde silinir. Çünkü bu diziler referansa göre çağırılırlar. Yani çağırılan dizinin bellek adresine bakılır. temp = array demekle bu iki dizinin bellek adreslerini bir yapmış oluyoruz. Bu yüzden temp silinirse array de gider. Zaten görüldüğü üzere burada temp dizisiyle array dizisi bellekte aynı yeri kapladığı için silmeye gerek de yok.
Daha bu tarz yapılabilecek hatalar varsa eklerim. Sizlerin bildiğiniz bu tarz hatalar varsa onları da eklerim :D
Aşağıda anlatacağım işlemlerde char* array = new char[20]; dizisini kullanacağım.
1 - Öncelikle 20 karakter tutabilecek bir diziye bellekten yer ayırdık. Şimdi buna array[0] = 'a'; değerini atayalım ve print edelim. a___-----_İİİ gibi anlaşılmaz şeyler print edecektir. Bunun için yer ayırdığımız dizinin her bir elemanını dolaşarak temizlemeliyiz.
for(int i=0 ; i<20;>i++)
{
array[i] ='\0'; // \0 null demektir.
}
2 - Şimdi bu diziye ilk değer olarak array[0] = 'a'; atadık. Biliyorsunuz ki dizinin son elemanından sonra null değeri vardır bu da dizinin bittiği anlamına gelir. O yüzden bu diziyi başka işlemlerde kullanacaksanız, sonunu null yapmazsanız hata alma olasılığınız çok yüksektir. Bunu önlemek için de verdiğimiz en son değerden sonraki değeri null yapmalıyız. Yani array[1] = '\0'; değerini mutlaka vermeliyiz.
3 - array[0] = '2' ile array[0] = 2 aynı şey değildir bunu çoğu kimse bilir yine de buraya ekleyip hatırlatmanın iyi olacağını düşündüm.
4 - Uzunluk ile ilgili problem. Programda int uzunluk = strlen(array); diye uzunluğu bulduk diyelim ve uzunluk = 5 olsun, dizinin de dolu olduğunu düşünelim. Dizide array[uzunluk] = 'a'; demek veya for döngüsü içinde
for(int i=0 ; i
array[i] ='a';
}
bu şekilde kullanmak programın runtime ında hataya sebep olacaktır. Çünkü diziler indis olarak 0 dan uzunluk - 1' e kadardır.
5 - Dizinin ilk 0 elemanının dolu olduğun düşünelim. 'ahmetuzun'. array[1] = '\0' yani dizinin ikinci elemanının değerini null yapıyoruz. Diziyi print ettiğiniz zaman ekrana gelen a olacaktır. strlen(array) in sonucu da 1 olacaktır. Yani dizi dolu olsa bile, null değerini koyduğumuz yerden sonraki veriler kaybolur.
6 - Şimdi yeni bir dizi tanımlıyoruz. char* temp = new char[20]; bu dizi genelde geçici bir dizi olarak tanımlanır ve işi bittiğinde silinir. temp dizisini tanımladık ve temp dizisine temp = array diyerek yukarıda tanımlamış olduğumuz diziyi atadık. Daha sonra temp dizisini kullandık ve delete[] temp; diyerek bu diziyi bellekte boşuna yer kaplamasın diye sildik.
Eğer bu şekilde yaparsanız array dizimizde silinir. Çünkü bu diziler referansa göre çağırılırlar. Yani çağırılan dizinin bellek adresine bakılır. temp = array demekle bu iki dizinin bellek adreslerini bir yapmış oluyoruz. Bu yüzden temp silinirse array de gider. Zaten görüldüğü üzere burada temp dizisiyle array dizisi bellekte aynı yeri kapladığı için silmeye gerek de yok.
Daha bu tarz yapılabilecek hatalar varsa eklerim. Sizlerin bildiğiniz bu tarz hatalar varsa onları da eklerim :D
Kaydol:
Kayıtlar (Atom)