Arşiv

Ocak 2010 ayı için arşiv

Sql Server CSV (Comma Seperated Value) çıktı üretme

Özellikle katalog tablolarının CSV çıktılarına sıklıkla ihtiyaç duyarız. Aşağıdaki sql script’ini kullanarak, siz de tablolarınızdan CSV çıktı alabilirsiniz.

Öncelikle tablomuzun orjinal haline bakalım;

SELECT Name
FROM HumanResources.Shift WITH (NOLOCK)

sql-csv-output_1

Şimdi öyle bir sql sorgusu yazacağız ki, çıktımız şu şekilde olacak;

Day, Evening, Night

SELECT
	SUBSTRING((
		SELECT ', ' + Name
		FROM HumanResources.Shift WITH (NOLOCK)
		FOR XML PATH('')
	), 3, 8000) AS CSV

Sorguyu FOR XML anahtar kelimeleri ile çalıştırdığımıza ve PATH olarak ” (boş string) verdiğimize dikkat edin.

SELECT ', ' + Name
FROM HumanResources.Shift WITH (NOLOCK)
FOR XML PATH('')

Böylece aşağıdaki sonucu elde etmiş olduk;

sql-csv-output_2

Son olarak, sql sorgusunu SUBSTRING fonksiyonu içerisine koyduk, böylece baştaki virgül ve boşluk karakterlerinden (“, “) kurtulmuş olduk.

sql-csv-output_3

Sql Server ServerProperty Fonksiyonu

Sql Server’ın çalıştığı sunucu ile ilgili özellik bilgilerine sorgu ile erişmek istediğimizde kullanabileceğimiz bir fonksiyon var;

SERVERPROPERTY ( propertyname )

Örnek;

SELECT
	SERVERPROPERTY('edition') AS SURUM,
	SERVERPROPERTY('productlevel') AS SEVIYE,
	SERVERPROPERTY('productversion') AS VERSIYON,
	SERVERPROPERTY('servername') AS SUNUCU_ADI

SERVERPROPERTY fonksiyonunun alabileceği tüm propertyname parametreleri ve açıklamaları için şuradaki MSDN sayfasına bakınız.

Silverlight 4 TextTrimming özelliği

Silverlight 3 ve öncesi versiyonlarda, yazı alanına sığmayan metinleri, üç nokta ekleyerek trim etmek için, kendi kontrolümüzü yazmamız gerekiyordu.

Mesela, elimizde şöyle uzun bir yazı olsun;

Silverlight helps you create rich web applications that run on Mac OS, Windows, and Linux. Welcome to a new level of engaging, rich, safe, secure, and scalable cross-platform experience.

Bu yazıyı, 250px’lik bir metin alanında göstermemiz lazım, ama sığmayan kısımları yanyana üç nokta ile göstermemiz gerekiyor.

Silverlight helps you create rich web applications …

Silverlight 4 versiyonundan önce, bu isteğimizi yerine getirmek için, kendi TextBlock kontrolümüzü yazmamız gerekirdi.

Silverlight 4 versiyonla birlikte ise, TextBlock kontrolünün TextTrimming=”WordEllipsis” özelliğini kullanabiliyoruz.

Örnek kod:

<TextBlock FontSize="16" TextTrimming="WordEllipsis" Width="250"
Text="Silverlight helps you create rich web applications that run on Mac OS, Windows, and Linux. Welcome to a new level of engaging, rich, safe, secure, and scalable cross-platform experience." />

PDC 2009′da Silverlight 4 Beta yayınlandı

18 Kasım 2009 tarihinde, Microsoft PDC’09 (Microsoft Proffessional Developers Conference 2009) konferansında konuşmacı Scott Gutherie, Silverlight 4 Beta’nın yayınlandığını duyurdu.

Resmi sitesi silverlight.net‘te yer alan şu sayfadan ayrıntılı bilgiye ulaşabilirsiniz.

Channel9′da yeralan video‘dan yenilik olarak nelerin geleceğini izleyebilirsiniz.

Yeniliklerden kısaca bahsetmek gerekirse;

  • Yazdırma ile ilgili yenilikler
  • Zengin Metin Alanı kontrolünün eklenmesi
  • Datagrid üzerinde kolonlara otomatik genişlik verilebilmesi ve Kopyalama desteği
  • Fare tekerlerine gelen destek
  • Sağ tuş desteği
  • Windows’un panosuna erişim imkanı
  • Browser içerisindeki silverlight nesnesinin sürükle-bırak tekniğinde bırakma noktası olarak belirlenebilmesi
  • Webcamerası ve Mikrofon desteği
  • PNG dosya türünün tüm formatlarına tam destek
  • Out-Of-Browser moduna daha çok destek
  • WebBrowser kontrolü
  • İstemci bilgisayarın dosya sistemine erişim yeteneği
  • Google Chrome desteği
  • Multi-touch desteği

Listenin tamamına ve açıklamalarına buradan ulaşabilirsiniz.

Silverlight ekibi 4. versiyonun betasını yayınlarken, Expression Blend ekibi de boş durmamış ve Silverlight 4 çıktı üretebilen Expression Blend versiyonunun beta’sını yayınlamış.

Microsoft Download’da yer alan şu sayfadan Expression Blend Preview for .Net 4 versiyonunu indirebilirsiniz.

DataTable ve DataReader nesnelerini yarıştıralım

.Net ortamında veriye erişim modeli olarak kullanabileceğimiz iki seçenek vardır; Bağlantılı (Connected) ve Bağlantısız (Disconnected) Ortam.

  • Bağlantılı veri erişim modelinde, veriye erişmek için DataReader classını,
  • Bağlantısız veri erişim modelinde ise, genellikle DataTable classını kullanırız.

Bu yazımda, bu iki class’ı benzer şartlar altında yarıştıracağız ve hangisinin veriyi daha hızlı getirdiğine karar vereceğiz.

DataTable_vs_DataReader

Projenin kaynak kodlarını buradan download edebilirsiniz.

Kaynak kodlara baktığınızda görebileceğiniz gibi, proje tek form’dan oluşuyor. Formun Load event’inde, AdventureWorks2008R2 veritabanına bağlantı açılıyor ve PR_TABLO_LISTESI procedure’ü çalıştırılıyor.

PR_TABLO_LISTESI procedure’ünün kodları;

CREATE PROCEDURE PR_TABLO_LISTESI
AS
DECLARE @T TABLE (TABLO_ADI VARCHAR(100), SATIR_SAYISI INT)

INSERT INTO @T
EXEC sp_msForEachTable 'SELECT ''?'', COUNT(*) FROM ? WITH (NOLOCK)'

SELECT * FROM @T ORDER BY SATIR_SAYISI DESC

Gördüğünüz gibi, procedure’ün yaptığı çok fazla birşey yok. Pek fazla bilinmeyen ve dökümante edilmemiş sp_msForEachTable sistem prosedür’ünü kullanarak veritabanında bulunan her tablonun ismini ve satır sayısını döndürüyor.

Bu sistem prosedür’ünün nasıl kullanıldığını başka bir yazıda anlatmayı planlıyorum. (Eminim BilgeAdam’daki öğrencilerim bu prosedür’ü hatırlayacaklardır)

Form’un Load eventinin devamında, prosedür’den dönen liste (tablo isimleri ve satır sayıları) lvTablolar ismindeki ListView component’ine dolduruluyor.

cmbTekrarAdet isimli combobox’da yer alan (5 Adet, 10 Adet, 20 Adet) elemanlarından varsayılan olarak 10 Adet elemanı seçili olarak geliyor. Bu combobox, testin peşpeşe kaç defa tekrar edeceğini belirliyor. Böylece bilgisayardaki anlık performans değişikliklerine karşı önlem almış oluyoruz.

Yarış Başlasın Butonunun Click event’inde, yeni bir Thread nesnesini YarisBaslasin() methodunu çalıştıracak şekilde oluşturuyoruz ve başlatıyoruz.

YarisBaslasin() methodunu Arayüz’den (User Interface : UI) ayrı bir thread’den başlatarak, test süresince formda oluşacak kilitlenmeleri önlemiş olduk.

Method’un içerisinde DataTableHesapla() ve DataReaderHesapla() methodları çağırılıyor.

Bu methodlarda TekrarAdet defa (cmbTekrarAdet kontrolünden geliyor) SqlConnection açılıyor, ListView’da seçili tabloya SELECT çekiliyor ve dönen kayıtların üzerinde tek tek geziliyor.

Son olarak, DataTable ve DataReader nesnelerinde bu işlemlerin ne kadar sürdüğü karşılaştırılıyor ve sonuç ekranın altındaki bir label’da gösteriliyor.

Süre ölçmek, ADO.NET Connected ve Disconnected Environment’ı karşılaştırmak için tek başına kullanılacak bir yöntem değil. Fakat en azından bir fikir verebilir.

jQuery için SlideShow eklentisi : CrossSlide

22 Kasım 2009 3 yorum

jQuery ile uygulama geliştirirken en büyük avantajımız, web’de çok fazla plugin bulabilmemizdir.

Bir arkadaşımın sorusu üzerine, slide-show yaptırabileceği jQuery plugin’i aramaya başladım.

Karşılaştığım birkaç plugin’den en çok hoşuma giden, CrossSlide oldu.

Örnek kullanımını görmek için demo sayfasına bakabilirsiniz.

Sıkıştırılmamış hali 11Kb olan plugin’i şuradan indirebilirsiniz. (Nedense plugin’in minify versiyonu bulunmuyor.)

Minify halini arayan geliştiriciler için, plugin’i http://jscompress.com adresinden minify ettirdim. Minify edilmiş halini (6.46Kb) buradan download edebilirsiniz.

Minify edilmiş halini değil, packed halini download etmek istiyorsanız, aynı siteden packed (4.59Kb) ettirdim. Onu da buradan download edebilirsiniz.

jQuery için web’de bulabileceğiniz diğer slide-show eklentileri;

CSS tekniği ile uyarı / bilgi mesaj alanı

Yazdığımız web uygulamalarında, uyarı / bilgilendirme mesajı vermeye her zaman ihtiyaç duyarız.

Gelelim, CSS tekniklerini kullanarak, bu mesaj kutularını nasıl yapabileceğimize.

Öncelikle style’larımızı yazdığımız css dosyasına, şu satırları ekleyelim;

.alert
{
  background: #fff6bf url(exclamation.png) 15px 50% no-repeat;
  text-align: left;
  padding: 5px 20px 5px 45px;
  border-top: 2px solid #ffd324;
  border-bottom: 2px solid #ffd324;
}
.info
{
  background: #f8fafc url(information.png) 15px 50% no-repeat;
  text-align: left;
  padding: 5px 20px 5px 45px;
  border-top: 2px solid #b5d4fe;
  border-bottom: 2px solid #b5d4fe;
}

Şimdi tek yapmamız gereken, paragraf tagları arasına mesajımızı yazmak ve paragraf tagına ilgili class’ı atamak.

Örnek;

<p class="alert">Uyarı mesajı buraya gelecek.</p>

<p class="info">Bilgilendirme mesajı buraya gelecek.
Birden fazla satır olabilir.</p>

İşte sonuç;

CSS_Mesaj_Kutulari

Demo sayfasını görmek ve kodları indirmek için tıklayın.

Şu adreste, bu tekniğin uygulandığı, download edilebilir kodları bulabilirsiniz.

Yazının orjinaline ise şu kaynaktan ulaşabilirsiniz.

CSS ile resim önyükleme (image preloading) tekniği

İstediğiniz resimleri, aşağıdaki css tekniği ile önyükleyebilirsiniz.

#preloadedImages
{
  width: 0px;
  height: 0px;
  display: inline;
  background-image: url(path/imageA.png);
  background-image: url(path/imageB.png);
  background-image: url(path/imageC.png);
  background-image: url(path/imageD.png);
  background-image: url(path/imageE.png);
  background-image: url();
}

Ajax “Yükleniyor” simgesi bulabileceğiniz güzel bir kaynak

Yazdığınız uygulamalarda, yükleniyor simgesine ihtiyacınız olursa, kesinlikle şu siteye bir göz atmanızı tavsiye ederim: ajaxload.info

“Generator” kısmında yer alan seçenekleri, isteğinize / ihtiyacınıza göre belirledikten sonra, “Generate It!” butonuna tıklıyorsunuz.

“Preview” kısmında, yükleniyor simgeniz hareketli olarak beliriyor.

Eğer seçmiş olduğunuz ayarlar sonucu oluşan simge hoşunuza gittiyse, “Download It!” butonuna tıklayarak hareketli gif formatında download edebilirsiniz.

Asp.Net MVC 2 Beta yayınlandı!

17 Kasım 2009 tarihinde, Microsoft PDC’09 (Microsoft Proffessional Developers Conference 2009) konferansında konuşmacı Bob Muglia, ASP.NET MVC 2 Beta’nın yayınlandığını duyurdu.

Microsoft sitesinden ücretsiz olarak download edebilirsiniz.

MVC (Model – View – Controller) hakkında daha fazla yardım almak için; ASP.NET MVC sayfasını ziyaret edebilirsiniz.

MVC 2 Beta versiyonu, Visual Studio 2008 SP1 için toollar içeriyor, fakat Visual Studio 2010 için güncellenmiş tool’ları içermiyor, çünkü MVC 2 release versiyonu zaten VS2010 ile birlikte dağıtılacak.

Şu anda VS2010 Beta 2′de yer alan component’lar ile MVC 2 Beta’da yer alan component’lar uyumsuz oldukları için, VS2010 bu beta versiyonda desteklenmiyor.

ASP.NET MVC 2 Beta’da gelen yeni özelliklerden bazıları;

  • Render Action
  • AsyncController
  • Expression tabanlı Helper class’lar (TextBoxFor, TextAreaFor, vs..)
  • İstemci tarafında onay/kontrol mekanizmalarında yapılan geliştirmeler
  • Boş proje şablonu

Yayınlanmış beta versiyonla ilgili daha ayrıntılı bilgi için şuradaki dökümana bakabilirsiniz.

Aynı konuşmanın devamında Bob Muglia, bundan sonraki işlerinin, yılsonu gelmeden RC (Release Candidate) çıkartmak olduğunu söylüyor.

Kısa Sınav – 2

18 Kasım 2009 2 yorum

Windows Forms projenizde, birkaç saniye süren bir işlem yaptırmanız lazım.

Kullanıcı Arayüzü (User Interface – UI), bu işlem süresince sürekli olarak güncellenmeli ve işlemin durumunu bir progressbar nesnesinde göstermeli.

Geliştirme bakımından en az uğraş ile bu görevi nasıl yerine getirirsiniz?

  • Asenkron Delegate pattern kullanırım
  • BackgroundWorker component’i kullanırım
  • Thread class’ını kullanırım
  • İşlemi başlatır, Timer nesnesi ile periyodik olarak ProgressBar’ı güncellerim

Sorunun doğru cevabı için; Devamını oku…

Windows API Code Pack for Microsoft .NET Framework

18 Kasım 2009 1 yorum

Windows 7 ile gelen yeni özellikleri (JumpList, Tabbed Thumbnails, Thumbnail Toolbars, MultiTouch Desteği, vs..) .Net uygulamalarınızda kullanmak istiyorsanız, şurada yer alan Windows API Code Pack for Microsoft .NET Framework kurulumunu indirin ve bilgisayarınıza kurun.

Kurulum tamamlandıktan sonra, .Net projelerinize ilgili dll’leri referans olarak ekleyerek, çeşitli Windows 7 özelliklerine programatik olarak erişebileceksiniz.

Özellikle, Tabbed Thumbnail özelliğinin, uygulamalara kullanım kolaylığı katacağını düşünüyorum.

MediaPlayer‘ın Windows 7 ile gelen versiyonu, bu özelliği güzel kullanan uygulamalardan biri.

Wiindows7_MediaPlayer_TabbedThumbnail

Siz de uygulamalarınıza böyle bir özellik katmak istiyorsanız, örnek kod..

Gereksinimler:

  • Minimum .Net Framework 3.5 SP1
  • Yazdığınız uygulamayı test edebilmeniz için Windows 7 (eh, haliyle!)

Asp.net’te web.config ile globalization

Web uygulamalarında, geliştirme yaptığınız bilgisayarınızda türkçe karakterleri düzgün görüyorsanız, fakat uygulamayı sunucuya publish ettiğinizde türkçe karakterlerde bozulma oluşuyorsa (özellikle ğ,ü,ö,ı,ş karakterlerinde); sorun büyük ihtimalle sunucunun dil ayarlarından kaynaklanıyordur.

Sunucunun dil ayarları ile uğraşmak yerine, web.config dosyasında yapacağınız küçük bir değişiklik ile, bu sorunun üstesinden gelebilirsiniz.

Yapılması gereken, System.Web node’ u içerisine;

<globalization fileEncoding="iso-8859-9" responseEncoding="iso-8859-9" />

tagını eklemek.

Kısa Sınav – 1

Aşağıdaki seçeneklerden hangisi geçerli bir AppDomain nesnesi oluşturmak için doğru C# kodudur?

AppDomain d = new AppDomain("Domain", new Zone(SecurityZone.Internet));
AppDomain d = AppDomain.CreateDomain("Domain");
AppDomain d = new AppDomain("Domain");
object[] z = { new Zone(SecurityZone.Internet) };
Evidence e = new Evidence(z, null);
AppDomain d = new AppDomain("Domain", e);

Sorunun doğru cevabı için; Devamını oku…

Yeni bir seri : Kısa Sınav

Özellikle uygulama geliştiriciler için, kısa sınav formatında paylaşımlarım olacak.

Google, HTTP protokolüne alternatif olarak SPDY üzerinde çalışıyor

Google, “Let’s make the web faster” vizyonu çerçevesinde pazara sürekli yeni ürünler/teknolojiler çıkartmaya devam ediyor.

Şuradan tamamını okuyabileceğiniz döküman ile HTTP protokolüne alternatif geliştirdiğini de öğrenmiş olduk.

Yeni protokole SPDY (SPeeDY şeklinde telaffuz ediliyor) ismini vermişler ve SSL üstünde çalışmasını sağlamışlar.

SPDY protokolünün tanımını yaptıkları dokümanda, HTTP’nin şu limitlerinden bahsediyorlar;

Bağlantı başına tek istek : HTTP, aynı anda tek kaynak talep edebilir, getirebilir. HTTP protokolü aynı anda tek istekte bulunabiliyor ve bu istekleri FIFO (First In, First Out) mantığı ile kuyruğa alıp işliyor.

Browser’lar bu problemi çözebilmek için, aynı anda 2 bağlantı açıyorlardı, 2008 yılından beri hemen hemen tüm browserlar, aynı anda bağlantı sayısını 6′ya çıkarttılar.

Sadece istemci istekte bulunabilir : HTTP protokolünde, sunucudan isteği sadece istemci yapabilir. Hatta sunucu, istemci’nin bir kaynağa ihtiyacı olduğunu bilse bile, istemci adına bu kaynağa erişip, sonucu istemciye döndüremez.

Request ve Response Header’larının sıkıştırılamaması : Günümüzde request header’larının boyutu, 200 bayt ile 2 kilobayt arasında değişiyor. Uygulamanızda cookie vs. kullanıyorsanız, boyut ortalama 700-800 bayt oluyor. Her isteğin (request) ve cevabın (response) headerında yer alan bilginin sıkıştırılmadan taşınması, önemli gecikmelere yol açmaktadır.

Gereksiz header bilgileri : Header’da hiç değişmeyecek bilgilerin (User-Agent, Host, Accept, … gibi) tekrar tekrar gönderilmesi gereksizdir. HTTP protokolü, bu bilgileri her isteğin ve cevabın headerına ekliyor.

Veri sıkıştırmasının varsayılan olmaması : HTTP protokolünde veri, varsayılan olarak sıkıştırılmamış formattadır. SPDY protokolünde Google, varsayılan olarak verinin tamamının sıkıştırılmış formatta olmasını sağlıyor. Devamını oku…

Sql Server 2008′de sıkıştırılmış yedek alma (compressed backup)

17 Kasım 2009 8 yorum

Sql Server 2008 ile birlikte gelen güzel bir yenilikten bahsetmek istiyorum, backup sırasında sıkıştırma (backup with compression).

Bu özelliği test etmek için, Sql Server 2008 R2 kurulu makinama AdventureWorks 2008R2 veritabanını yükledim.

Yükleme işleminden hemen sonra, şu sql cümlesi ile veritabanının backup’ını aldım;

BACKUP DATABASE
  AdventureWorks2008R2
TO DISK = 'C:\EnginPOLAT\AdventureWorks2008R2_Backup.bak'
WITH
  NOFORMAT,
  INIT,
  SKIP,
  NOREWIND,
  NOUNLOAD,
  STATS = 10

Karşılaştırma yapabilmek ve COMPRESSION anahtar kelimesini denemek için, bir de şu sql cümlesi ile yedek aldım;

BACKUP DATABASE
  AdventureWorks2008R2
TO DISK = 'C:\EnginPOLAT\AdventureWorks2008R2_Backup.bak'
WITH
  COMPRESSION,
  NOFORMAT,
  INIT,
  SKIP,
  NOREWIND,
  NOUNLOAD,
  STATS = 10

Gördüğünüz gibi, sıkıştırma özelliğini kullanmak için, backup script’inin options parçasına (WITH anahtar kelimesinden sonra gelen kısım), COMPRESSION anahtar kelimesini eklemek yeterli.

Şimdi gelelim karşılaştırmalara;

Orjinal boyut : 200.192 KB (Data) + 38.912 KB (Log)

Backup işlemi (Normal) sonucu oluşan dosya : 186.461 KB

Backup işlemi (Compression) sonucu oluşan dosya : 44.507 KB

Normal backup’a göre sıkıştırma oranı : %77

Backup alma süreleri açısından karşılaştırma,

Backup işlemi (Normal) : 7.505 saniye (24.018 MB / saniye)

Backup işlemi (Compression) : 4.521 saniye (39.862 MB / saniye)

Hız artışı : %40

Ne yazık ki, CPU kullanım oranlarını ölçemedim. Eğer ölçebilen varsa, yorumlarınızı duymak isterim.

MSDN’de yeralan şu sayfada yazdığına göre, backup işlemine compression eklemek, CPU kullanımında önemli bir artışa yol açarmış.

Varsayılan olarak alınacak tüm backup’larda sıkıştırma özelliğini açmak istersek;

EXEC sp_configure 'backup compression default', '1';
RECONFIGURE WITH OVERRIDE

script’ini çalıştırmak yeterli.

Kaynak : Technet, MSDN

.Net ortamında pattern kavramı

16 Kasım 2009 1 yorum

Pattern, kelime olarak fransızca patron kelimesinden gelmektedir ve tekrarlayan olayları veya nesneleri ifade etmektedir.

Yazılım dünyasında ise, “sürekli karşılaşılan durumlar için geliştirilmiş ve dökümante edilmiş, çözüm yolu standart haline gelmiş, tasarım kalıpları” şeklinde tanımlanabilir.

    En bilindik tasarım kalıpları;

  • Abstract Factory
  • Adapter
  • Bridge
  • Builder
  • Chain of Responsibility
  • Command
  • Composite
  • Decorator
  • Facade
  • Factory Method
  • Flyweight
  • Interpreter
  • Iterator
  • Mediator
  • Memento
  • Observer
  • Prototype
  • Proxy
  • Singleton
  • State
  • Strategy
  • Template Method
  • Visitor

Bundan sonraki birkaç yazımda bu tasarım kalıplarının ne olduklarını ve projelere nasıl uygulandıklarını, örneklerle anlatmaya çalışacağım.

C#’ta anahtar kelimeyi değişken ismi olarak kullanma

NET_CLR_Unleashed

Google Kitaplar‘da, şuradan bulabileceğiniz .Net CLR Unleashed kitabından edindiğim bir bilgiyi paylaşmak istiyorum.

CLS (Common Language Specification), CLS-Uyumlu tüm dillerin, anahtar kelimelerin değişken ismi olarak kullanabilmesini sağlayacak bir mekanizma sunmasını ister.

C# dili için bu mekanizma, anahtar kelimenin başına gelen @ işareti ile sağlanır.

@ işareti kullanılarak, şunlar yapılabilir;

int @int = 8;
Console.WriteLine("integer değişken : {0}", @int);
bool @bool = true;
Console.WriteLine("boolean değişken : {0}", @bool);

Bu sayede, anahtar kelime olan “int”, değişken ismi olarak kullanılabildi.

Kaynak : MSDN: C# Keywords, MSDN: CLS, MSDN: What is CLS, Amazon: NET CLR Unleashed

Best Philosophical Quotes

15 Kasım 2009 4 yorum

Web’de gezerken karşılaştığım ve çok hoşuma giden bir sayfada okuduklarımı paylaşmak istiyorum;

Tek saati olan bir adam saatin kaç olduğunu bilir, iki saati olan bir adam ise asla emin olamaz. (Lee Segall)

Hiç dört-yapraklı yonca bulamamış bir insan da şanslı mıdır? (Stanislaw J. Lec)

Bir insan kendine inandığı kadar büyük değildir, Ona inanan insan sayısı kadar büyüktür. (Woodrow Wilson)

Herşeyin güzelliği vardır, fakat herkes göremez. (Confucius)

Her problem kendi çözümünün tohumlarını içerir (Stenley Arnold)

İyi huy (nezaket), sağırların duyabildiği, körlerin görebildiği bir dildir. (Mark Twain)

Geriye bakarken ileri yürüyemezsin

Eğer gerçekler teori ile uyumsuzsa, teoriyi değiştir.

Kaynak : Best Philosophical Quotes