27 Kasım 2008 Perşembe

Yel değirmeniniz var mı?

Don KişotBunun "Don Kişot" ile alakalı olduğunu düşünmeyin çünkü değil. Bu "Geleceğe Dönüş" filminden çıkarılacak derslerden biri. Şimdi sorarsınız ne alaka diye. Şöyle anlatayım;

Geleceğe Dönüş 3. filmde hatırlarsanız, sevgili psikopat doktorumuz Emmett Brown ile Marty McFly 1885'ten geri dönmeye çalışıyorlardı. Zaman makinesi için benzin bulamadıklarından dolayı bir trene 88 mil (neden 88 hep merak etmişimdir :)) hız yaptırıp onunla zaman makinesini çalıştırmak istiyorlardı. Buraya kadar tamam. Peki yel değirmeni?

Doktorun evinde hazırladığı maket üzerinde bunun deneyini yapmaya çalıştılar. Bu deneyi yaparken doktor yapılacakları anlatıyordu. Tam metni hatırlamıyorum ama şu şekilde bir konuşma geçmişti:

Geleceğe Dönüş 3
- Makası değiştireceğiz ve buradan uçuruma kadar bize düz bir hat çıkacak. Bu da 88 mil hıza ulaşabilmek için bize yeter.
- Şey, Doktor. Bu "Yel Değirmeni" ne işe yarıyor. Üzerinde "Son dönüş noktası" yazıyor.
- Eğer oraya geldiğimizde yeterli hıza ulaşamazsak durmamız gerekir. O noktadan sonra yeterli hıza ulaşabilmek için imkanımız yok.
- Peki durmazsak ne olur?
- O zaman uçurumdan aşağıya doğru bir yolculuğa çıkarız.
- !?…

Bir projenin yönetiminden örnek verecek olursak; projeden vazgeçme zamanını bilmeliyiz. Alışveriş yaparken kendimize bir limit koymalıyız (ve bu kredi kartımızın limiti olmamalı :)) Aslında hayatta herhangi bir şey için kendimize bir son dönüş noktası (ya da durma noktası) belirlememiz bizim yararımıza olacaktır. Yoksa uçurumdan aşağıya doğru bir yolculuğa çıkarız :)

24 Kasım 2008 Pazartesi

Pazarlamada dördüncü dönem

Pek çok kaynakta pazarlamanın üç döneminden bahsedilir. Bunlar ortaya çıkış sırasıyla; Ürün odaklı pazarlama, Satış odaklı pazarlama, Müşteri odaklı pazarlama.

Ürün Odaklı Pazarlama Ürün odaklı pazarlama

1900 lerden sonra ortaya çıkmış bir kavramdır. O zamanlarda üreticilerin sayısı az olduğu için ürün azdı ve rekabet azdı. Üreticiler kraldı. Müşteriler, üretici ne ürettiyse onu almak zorundaydı. ("Siyah olduğu sürece herkes istediği renkte arabaya sahip olabilecek" Henry Ford) O zamanki ürün fiyatı hesaplaması;

Ürün Fiyatı = Maliyet + Kar

şeklindeydi. Yani üreticiler maliyetlerinin üzerine istedikleri karı ekleyip ürün fiyatını belirlerlerdi.

Satış odaklı pazarlama

Ürün odaklı pazarlamadan sonra (1930 lar) üreticiler ve ürünler çoğalmaya, kraliyet ailesi dağılmaya başladı. Yine sınırlı sayıda ürün vardı, ama bu dönemde öncekine göre tek bir üründen elde edilen kar daha azdı. Ve bu dönemde tüketiciler ihtiyaçlardan zevklere doğru yönelmeye başladılar.

Müşteri odaklı pazarlama

Satış odaklı pazarlamadan sonra (1950 ler) geçerli olan ve günümüzde de geçerliliği süren bu pazarlama şekli, üretici ve ürün sayısının artması yanında artık müşterilerin de seçmeye başlamasından sonra ortaya çıkmıştır. Artık müşteriler kraldır. İstediklerini alır istemediklerini bırakırlar. Bu da üreticilerin formüllerinin yeniden değişmesine yol açmıştır.

Kar = Ürün Fiyatı - Maliyet

Artık ürün fiyatı üreticilerin kendi isteklerine göre belirlenmemektedir. Bu yüzden üreticiler karını artırmak için maliyetlerini aşağıya çekme yoluna gitmektedirler.

Bundan sonraki dönem ise "Zaman odaklı pazarlama" dönemi olacaktır. Kısaca açıklayacak olursak; insanların iş yoğunluğu sürekli artmakta ve zaman insanlara git gide daha az gelmekte. Üretici sayısının, ürün çeşitliliğinin ve dolayısıyla rekabetin sürekli artacağı önümüzdeki yıllarda üreticilerin ürününü satabilmesi için yalnızca iki saniyesi olacaktır. Peki insanlar sadece iki saniyede nasıl beğenecekler ve alacaklar. Bunu iki şekilde düşünebiliriz; yapay zeka yeterince gelişir ve insanların yerine makineler seçim yapar, ya da genetik yeterince gelişir ve klonlar insanların yerine seçim yapar.

Ben makinelerin ya da klonların zevklerine güvenmem diyorsanız, çok değerli iki saniyenizi gözden çıkartacaksınız demektir :)

Kolay gelsin…

23 Kasım 2008 Pazar

Neden dört doğru bir yanlışı götürmüyor?

16 Kasım Pazar günü ALES'e girdim. İlk defa bir sınav bu kadar kolay geçti. Ama zaman biraz dengesiz gibiydi. Sanki akreple yelkovan yer değiştirmiş gibi, saatler hızlı dakikalar yavaş geçiyordu. Nerdeyse çıkıp gidecektim sınavın yarısında.
Dört yıldır test de çözmemiştim hiç (dün bir test çözdüm yalan söylemiyim:)) Aslında kalemim bile yoktu arkadaşımdan aldım. Ne güzeldi ya. Keşke ÖSS de bu kadar rahat geçseydi.

Sınav o kadar garipti ki bazen düşlere daldım. Bir seferinde uyandığımda Kız Kulesi'nin karşısında çay içiyordum. Bir seferinde trende gidiyordum. Sonra New York borsasının kapısına kilit vurulduğunu gördüm. Tesadüf bu ya, tam da önümde dünya borsasının krizden dolayı 100 milyar dolar kaybettiğini söyleyen bir soru vardı (tabi kayıp trilyonlarla ifade ediliyor bugün)
Sonra blog'umda neler yazsam diye düşündüm, aklıma yüzlerce şey geldi. Otaku hikayeleri, inovasyon örnekleri, ipuçları, yaşam dersleri, Java ve C# makaleleri, …
Kim ne yapıyor diye etrafa şöyle bir göz gezdirdim.

Herkesin başı önde soru çözerken yan sıradaki kız da beni kesiyormuş, bir an göz göze geldik :) (Sınavdan sonra baktım, benden önce çıkmış yetişemedim. Kalemlerimizi değişirdik belki forma değişir gibi. Belki bir çay içmeye de vakit bulurduk ya, neyse…)

Sonra fark ettim ki hala sınavdayım, devam edeyim dedim kendi kendime. Hep duyduğum bir soru aklıma geldi: "Neden dört yanlış bir doğruyu götürüyor da, dört doğru bir yanlışı götürmüyor?" buradan yola çıktım başka nedenler buldum:

"Neden bu sınavlar hep sabahın köründe olur?" (Zaten Pazar, yapın öğleden sonra :))
"Neden öğretmenler, cevaplarını zaten bildikleri soruları bize sorarlar?"
"Neden iki gün okula gidip beş gün tatil yapmıyoruz?"
"Neden otobüsler bizi kuyrukta beklemiyor?"
"Neden herkes ayakta?"

Aha, sınav bitmiş… :)

TT.

15 Kasım 2008 Cumartesi

İnovasyon

Dünyada inovasyon. Şirketlerde inovasyon. Üretimde inovasyon. Tüketimde inovasyon…
Sanırım son yıllarda en çok duyulan kelimelerden biri de bu kelime. (Son aylarda "Kriz" kelimesi hepsine açık ara fark atmış olsa da :))

inovasyon ampul Peki nedir bu inovasyon? Sakarya Üniversitesinde okurken (geçtiğimiz yıl) rektör yardımcısı Prof. Dr. Hasan Rıza Güven hocamız bu konuda çok güzel bir örnek vermişti. Sanırım inovasyon için ondan daha güzel bir örnek olamaz.

"Simit önceden sokaklarda satılırdı. Ucuzdu. Yoksul insanların aldığı, zenginlerin tenezzül bile etmediği bir yiyecekti. Bu gün biz simiti saraylarda yiyoruz. İşte bu inovasyondur."
Şimdi bir soralım. "İnovasyon değişim midir yoksa dönüşüm mü?" Simit, saraya çıktığında da aynı simit olduğuna göre ben inovasyon için "dönüşümdür" diyorum. Bunu bir formülle açıklayacak olursak (Arada kimya dersi de vermiş olalım :))


2H2 + O2 --> 2H2O (Hidrojen + Oksijen = Su) bu bir değişimdir. Çünkü maddenin aslı korunmamıştır.

Su(Katı) <--> Su(Sıvı) <--> Su(Gaz) bu bir dönüşümdür. Maddenin aslı korunmuş, sadece inovasyona uğramıştır.

TT.

inovasyon kibritBenim gördüğüm bir inovasyonu sizinle paylaşmak isterim.
Sizin de bildiğiniz gibi süper kahramanlar (Süperman, Spiderman, Batman, …) halkın sevdiği, örnek davranışları olan, insanlara yardım eden kişilerdir. Ama yapımcıların dehasıyla inovasyon sinemaya da taşındı. "Hancock" (Şarapçı Süper Kahraman :)) Kötü alışkanlıklara sahip, insanlar ondan nefret ediyor, pis, … Tabi sonra düzeliyor, ama başlangıçtaki hali tam bir inovasyon ürünü.

İnovasyonu resimlerle ifade edersek nasıl olur, şuradan bakabilirsiniz.
Ben gördüğüm ve duyduğum inovasyon ürünlerini sizinle paylaşmaya devam edeceğim. Siz de paylaşmak isterseniz bana gönderebilirsiniz.

11 Kasım 2008 Salı

Sana Bakmak

her şey yapılabilir

bir beyaz kağıtla

uçak örneğin uçurtma mesela

altına konulabilir

bir ayağı ötekinden kısa olduğu için

sallanan bir masanın

veya şiir yazılabilir

süresi ötekilerden kısa

bir ömür üzerine.

bir beyaz kağıda

her şey yazılabilir

senin dışında

güzelliğine benzetme bulmak zor

sen iyisi mi sana benzemeye çalışan

her şeyden

bir gülden bir ilk bir sonbahardan sor

belki tabiattadır çaresi

10 Kasım 2008 Pazartesi

Java Seri Port Haberleşmesi (Serial Port Connection)

Daha önce geliştirdiğim bir projede Java ile seri port (Serial Port) üzerinden haberleşme yapmıştım. Bu projede ADASU Genel Müdürlüğü için, PDKS(Personel Devam Kontrol Sistemi) cihazlarıyla seri port üzerinden bağlantı kurarak personel giriş çıkışlarını kontrol eden bir sistem tasarlamıştım. Projede en çok zorlandığım kısım seri port'u kapatmak olmuştu (serialPort.Close) Çünkü öyle bir şey ki, port açılıyor ve programı sonlandırmadan kapatılamıyordu. Java ile yazılım geliştirenler bilir; "en büyük sorun, hata vermeyen hatalardır." :) Şimdi size açtığınız seri portu nasıl kapatacağınız hakkında bilgi vereyim. (How to close Serial Port)

Her şeyden önce projenize seri port ile haberleşme sağlayabilmek için CommDriver ve ana klasöre de win32com.dll kütüphanesini eklemelisiniz. Yoksa haberleşmeyi sağlayamazsınız. Ekte bulunan dosyalardan bunları indirebilirsiniz.

Java ile seri port bağlantısı (Serial Port Connection) için gerekli tüm bilgileri şu linklerde bulabilirsiniz

http://java.sun.com/products/javacomm/
http://www.java2s.com/
http://www.captain.at/
http://saloon.javaranch.com/

Ben size Google aramalarında bulmakta zorlanacağınız serialPort.Close() metodunun bir ayrıntısını aktaracağım. Önce serialPort.Open() fonksiyonunu yazalım;

3 Kasım 2008 Pazartesi

SQL İpuçları

Bu yazımda sizlere SQL hakkında bazı ipuçları vereceğim. SQL gerçekten mükemmel bir dil. Normal bir programlama diliyle yapabildiğimiz her şeyi SQL ile yapabiliyoruz. Veritabanından çektiğimiz verilerin mutlak değerini almak, karekökünü almak, Convert işlemi uygulamak ve bunun gibi birçok işlemi SQL ile yapabiliyoruz.

Bu konu için aslında çoğu programcının başına gelen bir problemden bahsedeyim. Bu problem, SQL Server ile Visual C#.NET’in farklı tarih formatları kullanması ile oluşan bir problemdir. (Bazılarınızın gülümsediğini hissediyorum :)) Bu problem .NET’in tarih formatının "dd.MM.yyyy" olması, SQL Server’in tarih formatının ise "MM.dd.yyyy" olması ile ortaya çıkar. Bunu çözmek için önceden (aslında şimdi de) C#’da

string tarih = DateTime.Now.Month.ToString() + "." + DateTime.Now.Day.ToString() + "." + DateTime.Now.Year.ToString();

string tarih = DateTime.Now.ToString("MM.dd.yyyy");

System.Globalization.CultureInfo culture = new System.Globalization.CultureInfo("en-GB");

string tarih = Convert.ToDateTime(txtTarih.Text, culture);

gibi ifadeler kullanıyordum. Eminim ki birçoğunuz da bunlara benzer şekillerde bir çözümler bulmuştu. Ama bu çözümler SqlDataSource’da otomatik olarak oluşturduğumuz update ve insert cümlelerinde pek fazla işe yaramaz. (Tabi siz insert ve update alanlarını TemplateField olarak ayarlayıp kod tarafında işlem yapmak isterseniz bunları kullanabilirsiniz) Bu sorunun SQL ile çözümü ise

INSERT INTO TABLO(kisi, tarih) VALUES(@kisi, CONVERT(datetime, @tarih, 103))

şeklindedir. Burada CONVERT() fonksiyonu, gelen parametreyi herhangi bir SQL veri tipine çevirmemize yarar. 103 ise "dd/MM/yyyy" tarih formatını belirtmemize yarar. Bu kısma 108 girdiğimizde saat değerini elde ederiz. ("HH.mm.ss") Biz burada SQL Server’a hangi formatta veri gönderdiğimizi belirtiyoruz. O da hangi formatta olduğunu anlayıp o şekilde işlem yapıyor. Eğer formatını belirtmezsek

“The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value.The statement has been terminated.”

gibi bir hata ile karşılaşırız.
Tarih formatlamanın Oracle’daki karşılığı ise TO_DATE() fonksiyonudur. Bu şekilde girilen bilgiyi tarih bilgisine dönüştürüp Oracle’a kaydedebilirsiniz. Ayrıca Oracle’da tarihe göre arama yapabilmek için bu fonksiyonu kullanmak zorundasınızdır. Kullanılışı ise

TO_DATE(@tarih, 'dd.MM.yyyy')

şeklindedir.

2 Kasım 2008 Pazar

Dosyadan Okuma Ve Dosyaya Yazma İşlemleri

Bu yazımda System.IO isim alanı altında bulunan StreamReader ve StreamWriter sınıflarıyla herhangi bir text dosyasından okuma ve dosyaya yazma konularına değineceğim. Programımız bir Windows uygulaması olacak.

Dosyaya Yazma

İlk olarak programımıza System.IO kütüphanesini ekleyelim. Daha sonra formumuza 3 adet TextBox ekleyelim ve Name özelliklerini sırasıyla txtAd, txtSoyad, txtNo olarak belirleyelim. Ek olarak 1 adet Button ekleyelim ve Name özelliğini btnYaz olarak belirleyelim.
Form üzerine çit tıkladıktan sonra kod tarafında yol isimli string türünde bir genel değişken tanımlayalım ve aşağıdaki değeri verelim.
string yol = @"C:Kayıt.txt";
Bu yolla C sürücüsünde Kayıt.txt isimli bir metin belgesi oluşturacağız. Daha sonra yine genel değişken olarak StreamWriter tipinde yaz isimli bir değişken tanımlayalım. Bu değişkeni, bizim dosyamıza yazma işlemini gerçekleştirebilmek için tanımladık.
StreamWriter yaz;
Formu çift tıkladığımızda oluşan Form1_Load olayı içine aşağıdaki satırı yazalım.
yaz = new StreamWriter(yol, true);
Burada daha önce tanımladığımız yaz ismindeki değişkenden StreamWriter tipinde bir nesne oluşturuyoruz. Bu nesnedeki yol değeriyle C sürücüsünde Kayıt.txt isimli bir metin belgesi oluşuyor. true değeri ise bu metin belgesine veri ekleme işleminin olabileceğini belirtiyor. Yani içinde bir veri varsa onun sonraki satırından itibaren girdiğimiz veriyi ekliyor. Eğer false değeri girersek metin belgesinin içeriğini temizler ve yerine bizim girdiğimiz yeni verileri yazar.
Forma dönüp butonun üzerine çift tıklayarak btnYaz_Click olayını oluşturalım. Bu olay yordamının içine aşağıdaki satırları girelim.
string veri = txtAd + " " + txtSoyad + " " + txtNo;
yaz.WriteLine(veri);
yaz.Flush();
Bu satırlarda veri isimli değişkene TextBox’ lardaki veriler aralarında birer boşluk bırakılarak giriliyor. Daha sonraki satırda ise veri isimli değişkenin değeri metin belgesine aktarılmak üzere belleğe yazılıyor. Son satırda ise veri metin belgesine aktarılıyor. Son satır olmazsa veri bellekten bir süre sonra silinir ve belgeye yazılmaz.

1 Kasım 2008 Cumartesi

XML Dokümanlarını Kodla Oluşturmak

Bu yazımda günümüzde çok kullanılan XML dökümanlarını kodla oluşturmaya değineceğim.

Bir XML dökümanı hazırlamak için C# dilinde XmlTextWriter sınıfını kullanabiliriz. Bu sınıf yardımıyla XML olarak biçimlendirmek istediğimiz verileri istersek elle, istersek bir kaynaktan alarak kullanabiliriz. Ben bu yazımda verileri bir veri tabanından alarak XML formatına dönüştürmeyi tercih ettim. Kodlarımı konsol uygulaması şeklinde yaptım. Dilerseniz bir Windows uygulaması açıp sadece bir buton atıp, o butonun Buton_Click olayına bu kodları kopyala yapıştır yapabilirsiniz. Ve burada oluşturulacak dosyaların adresleri, aksi belirtilmedikçe program klasörünün kök dizini olarak belirlenmiştir. Neyse fazla uzatmadan konuya geçelim.

Programda kullanmak için ilk önce aşağıdaki gibi “Dünyadan” isimli bir veri tabanını ve bu veri tabanında “Ülkeler” isimli bir tabloyu oluşturup verileri girelim.

Burada Access veritabanı kullandım. SQL veritabanı kullanıldığında da çok fazla değişen bir şey olmayacaktır.

Kodları yazmaya başlamadan önce, ilk olarak programımıza
using System.Xml;
using System.Data;
using System.Data.OleDb;
kütüphanelerini ekleyelim. Bu kütüphaneler veri tabanından veri çekmek ve XML dökümanını oluşturmak için gereklidir aksi halde programımız derlenmez.

Related Posts Plugin for WordPress, Blogger...