mertoztekin.com

Siteyi açtık ama, yazmak da lazım...

Category: Bilgisayar Genel

Ip Hatırlatma Servisi

Evdeki internetimi bir türlü sabit ip’ye çevirtemedim. Zaman bulupta telekoma gidip dilekçe veremiyorum(telefonla da olmuyormuş). Ara sıra evdeki bilgisayara remote desktopla girmem gerektiğinde “ip neydi yaw?” sorunsalıyla karşılaşmamak için geçen gün çok basit bir çözüm geliştirdim.

Read the full post »

USB Autorun’ı Kapatmak

Çok eskiden beri her format attıktan sonra ilk yaptığım işlem Windowstan USB autoplaylerini kapamak olur. USB disklere bulaşan virüsler autorun dosyası oluşturarak bilgisayarınıza taktığınızda otomatik çalışıp kendini bilgisayara bulaştırır. Bunu engellemenin en kolay ve efektif yolu windowsun Autoplay özelliğini kapatmak.

Read the full post »

Bill Gates üstüne…

Bill GatesBugün şans eseri internette Bill Gates ile ilgili yazılmış bir makale buldum. Kendisi bence günümüz teknolojisine gelinmesini sağlayan en önemli insanlardan biridir(evet Steve Jobsta çok iyi işler yaptı ama kendisini günahım kadar sevmem, sevenlerde steve jobs ile ilgili bir kaç kitap okuyup imanı para olan bu adamdan neden nefret ettiğimi anlayabilirler).

Makalenin orjinalini http://sourcesofinsight.com/2011/01/19/lessons-learned-from-bill-gates/ adresinden okuyabilirsiniz.:

25 Lessons Learned from Bill Gates
Bill is full of lessons and insights.  Here are 25 plays we can take from the pages of his playbook:

  1. Change the world, or go home. There is a little sign on many doors at Microsoft.  It features the blue monster and it reads:  “Change the world, or go home.”  Not only does that phrase capture the spirit of thousands of Softies … it speaks to the way Bill Gates drives his life.  He lives to build a better world, whether it’s one version, one platform, one system, one idea, one cause, one innovation at a time.  The beauty is, he knows how to scale and amplify his impact in powerful ways – he’s on top of his game.
  2. Blaze the trail.  The path isn’t always there.  Sometimes you have to make it.  Sometimes people will think you’re crazy.   Sometimes you are just ahead of the curve.  it’s a dream for a reason, and sometimes making your dreams happen takes going out on a limb and giving your all for what you believe in.  Bill Gates believed that the personal computer was the future and that there should be one on every desktop and in the living room and it would change the way we work and how we live in unimaginable ways.
  3. Make an impact.   Drive from impact.  Bill Gates makes choices based on impact.  Whether it’s following his passion or investing in a cause, he drives from making impact.  He doesn’t just do things because he can.  He does things because they matter and he can make them scale. Read the full post »

Excel’de En Çok Kullandığım Fonksiyonlar

Selamlar,

Uzun süredir kafamda excelde günlük hayatımda en çok kullandığım fonksiyonları burada anlatmak vardı. Aslında çok kolay fonksiyonlar ama hemen hemen hergün 10larca kez kullanıyorum. Ne yazıkki çevremdeki bir çok insan bilmedikleri için Exceli açmıyorlar bile. Belki bu yazı onlara yardımcı olabilir :

DÜŞEYARA()

Düşeyarayı veritabanında yazdığını SQL Select sorgusu gibi düşünebilirsiniz. Belli bir tablo içinden anahtar ile bir satır arıyorsunuz ve o satırdaki herhangi bir kolonun değerini dönüyorsunuz.

=DÜŞEYARA(ArananDeğer , Arama Yapılacak Alan, Dönülecek Kolon Numarası , Yakın Eşleşmemi Tam Eşleşmemi)

ArananDeğer kısmı hangi değeri arıyorsunuz, yani SQLde WHERE ID=”$$$” dediğiniz kısımdaki $$$

Arama Yapılacak Alan kısmı ise hangi veriler arasında arayacaksınız. Bunu SQL deki tablo adı olarak düşünebilirsiniz. Ama excelde alan seçmeniz gerekiyor(yada daha önce Adlandırdığınız alanı belirtmeniz). Burdaki önemli nokta şu, düşeyara fonksiyonu aranacakdeğeri, belirtilen alanın en sol kolonunda bakıyor. Yani siz A1:D5 gibi bir alan seçtiğinizde, aranacak değerleri A1,A2,A3,A4,A5 kolonunda olmalı. Eğer anahtarınız B kolonunda ise B1:D5 olarak alan belirtmeniz lazım (tabi bu şekilde A kolonundan bilgi alamazsınız, eğer A kolonundan bilgi almanız gerekiyorsa, B kolonu ile A kolonunun yerini değiştirip A1:D5 olarak aratın)

Dönülecek Kolon Numarası, arama yapıldıktan sonra hangi kolonun değerinin yazdırılacağını belirtiyor. Yani siz A1:D5 alan seçtiyseniz ve dönülecek kolon numarasını 1 yaparsanız size bulunan satırın A kolonunun değerini döner. 3 yazarsanız C kolonunu döner. Eğer 6 yazarsanız Boş döner çünkü siz D kolonuna(Max 4) kadar alan seçmiştiniz. 6 girerseniz A+5 = F kolonunu kastetmiş olursunuz. Ki oda seçili değil.

Yakın eşleşmemi tam eşleşmemi kısmına DOĞRU veya YANLIŞ yazabiliyorsunuz. Bunu her zaman YANLIŞ olarak belirtin. YANLIŞ derseniz tam eşleşme gereksinimi olduğunu söylüyorsunuz. Yani eğer aranan değeri bulamazsa #YOK diye uyarı verecektir. Eğer DOĞRU derseniz, aranan değer olmasa bile ona en yakın değeri bulacaktır. Ki buda genelde sizin istemediğiniz bir durum. O yüzden elinizi YANLIŞ yazmaya alıştırın.

Düşey Ara

Düşey Ara yaparken sık sık karşılaşılan bir durum var. Birden fazla kolon anahtarı oluşturuyorsa DÜŞEYARA fonksiyonu yetersiz kalıyor. Yani şöle bir sql düşünün SELECT ADRES FROM TABLO WHERE IL=’06′ AND ILCE =’343′. Burda WHERE kısmında iki koşul koyuyorsunuz. Yukarıda gördüğünüz gibi DÜŞEYARA sadece tek koşul alıyor, oda belirtilen alanın en soldaki kolonu). Bu tarz birden fazla kolon koşulu olduğu durumlarda en kolay yöntem kendi anahtarınızı oluşturmak.

Düşey Ara 2

Örnek olarak 3 kolonlu bir exceliniz olduğunu düşünün. Plaka İl,Müşteri Tipi,Değer. Amacınız Plaka ili ve Müşteri tipi belirterek hangi değer aldığını bulmak. Yapmanız gereken bir kolon açıp (değerin sol tarafında olsun) iki anahtar alanınızı birleştirip yeni bir değer kümesi oluşturmak. Bunun için yeni açtığınız kolona =A1&B1 yazıp aşağı sürükleyebilirsiniz. Böylece iki kelimenin birleşimi yazacaktır. Fakat benim kişisel önerim =A1&B1 yerine =A1&”|”&B1 gibi bir şey yazmak. Yani birleştirme esnasında araya bir karakter koymak. Nedeni şu : Mesela ilk kolon 1den 20ye kadar sayılar, ikinci kolon 0 dan 10 a kadar olan sayılar(bunların metin olduğunu düşünün). Siz bunları =A1&B1 şeklinde birleştirirseniz iki tane 110 elde edersiniz (1+10 ve 11+0 (metin olduğu için direk karakter karakter birleştirdim. Sayısal olsa dahada curcuna)). Bu şekilde bir anahtar oluşturduğunuz aslında unique lik özelliğini kaybediyorsunuz. Bu tür bir sorunla karşılaşmamak için =A1&”|”&B1 tarzında birleştirirseniz 1|10 ve 11|0 gibi farklı anahtarlar oluşacaktır(seçiceğiniz karakterin anahtarlın içinde olmamasına dikkat edin. | karakteri genelde pek bulunmaz o yüzden onu seçmiştim).

DOLAYLI()

Dolaylı fonksiyonuda bir çok zaman ihtiyacınız olacak fonksiyon. Her ne kadar ismi çok amacını anlatmasada, bu fonksiyonu belirli bir hücrenin değerini, hücre adresini isim olarak yazarak bulmaya yarıyor. Yani B1 kolonuna gelip =DOLAYLI(”A1″) yazarsanız size A1 deki değeri yazar. Oldukça kullanışlı çünkü içerisi kelime olarak girildiğinden =DOLAYLI(”D”&(SATIR()+12)) gibi alt fonksiyonlar yazabilirsiniz. Kolay ve oldukça kullanışlı bir fonksiyon

Dolaylı

ADRES()

Adres fonksiyonu tek başına anlamlı olmasada DOLAYLI ile birlikte çok kullanacaksınız. Amacı belirtilen satır numarası ve sütun numarası için size o hücrenin Excel adresini vermek. Mesela 1 1 verirseniz size A1 yazıcaktır. 44 22 derseniz V44 ismini dönecektir. Bunun bazı alt parametreleri var ($ yazsınmı yazmasınmı gibi). Bunları açıkçası hiç kullanma gereği duyduğumu hatırlamıyorum. Ama bir iki deneme yaparak sizde çözebilirsiniz.

SATIR() ve SÜTUN()

Satır ve sütun fonksiyonları adından da anlaşılacağı gibi bulunduğu hücrenin satır veya sütun numaralarını verir. Mesela A4 kolonuna =SATIR() yazarsanız 1, =SÜTUN() yazarsanız 4 değerini verecek. Bunu yukarıdaki fonksiyonlarla kullanarak ilginç denemeler yapabilirsiniz. Mesela bir satırın sağ altındaki değeri bulmak için =DOLAYLI(ADRES(SATIR()+1;SÜTUN()+1)) yazabilirsiniz.

Aklıma geldikçe başka fonksiyonlarıda yazmaya çalışırım ama dediğim gibi bu fonksiyonlar günlük ihtiyacınızın %80 ini karşılayacaktır. Yukarıda anlattıklarımı içeren örnek excel dokümanını da inceleyebilirsiniz.

Örnek Excel Dosyası

Excel2Xml

Selamlar!

uzun zamandır bişi yazamıyordum. Master, iş, Starcraft2(ki sanırım en büyük suçlu o) derken pek ilgilenemedim. Neyse bugün biraz bi zamanım oldu ve geçenlerde şirkette yazdığım bi programı eklemeye karar verdim.

Şirkette analizini yaptığım ve yürüttüğüm bir proje için (batchte çalışan çoklu poliçelendirme sistemi) excelden xml’e çeviren bir programa ihtiyaç oldu. İş birimi çoklu poliçelendirme işlemi yapılacak kayıtların bilgilerini excel ile göndermek, yazılım ise xml ile almak istiyordu. İki tarafta kendince haklı olduğundan, sorunu araya bir dönüştürücü program yazarak çözmeye karar verdim. Excelden aslında XML üretmek için VBA yazılabiliyor fakat benim denemelerimde bir türlü UTF8 formatında dosya yaratamadım. Bu yüzden C# ile exceli okuyan, exceli istenen formatta xmle çeviren bir program yazdım.

Programın işleyişi oldukça basit : ekrandan Excel dosyasını ve Xml formatında Format dosyasını okutuyorsununuz. Program ilk önce Format dosyasını okuyor(Formatter sınıfı : XmlDocument), bir iki küçük check yapıyor(doğru dosya okundumu diye), daha sonra arka planda excel applicationu açıp, excel dosyasındaki ilgili sheeti DataTable olarak dönüyor.

Ekran Görüntüsü

Sonra bu datatableı, okunan formata göre işleyip bir preview sayfası çıkartıyor. Bu sayfada kullanıcı acaba mappingi doğru yapmışmı, yanlış okunan birşey varmı diye kontrol ediyor. Ayrıca eğer formatta bazı alanlar için özel kurallar girildiyse(zorunlu alan, numeric alan, enum vs.) o checkleri yapıp kullanıcıyı uyarıyor.

Eğer bir sorun yoksa Save As ekranı açıp, exceli istenen formatta Xml’e çeviriyor.

Preview Ekranı

Programın ne yazıkki unit testinglerini yazıcak vaktim olmadı. Zaten çokta kasış bişi olmadığından anlamakta zorluk çekilmeyecektir.

Eklere örnek bir xml ve excel dosyası da ekledim.

Format dosyası ile ilgili aşağıdaki kullanım klavuzunu yazmıştım. Neyin ne işe yaradığını kısaca anlatıyor. Bazı alanlar (DGR alanı gibi) şirkete özel kurallar. O yüzden sizin ihtiyacınız olmayacağından silebilirsiniz.

Format Xml İçeriği
<Format> : Format bölümü ana bölümdür ve bir kez tanımlanır.

  • tarih = Formatın düzenlenme tarihi
  • baslangicSatir = Excelde hangi satırdan itibaren poliçe kayıtları giriliyor.
  • maxSatir = Okunacak en fazla satır // şuan aktif değil
  • sheetName = Poliçe listesinin bulunduğu Sayfa ismi

<Alan> : Çıktı XML inde bulunacak bölümlerin listesi. <Alan> node’u iç içe olarak tanımlanabilir. Xml çıktısındaki hiyerarşik  yapıyla aynı şekilde tanımlanmalıdır. Node’un Text kısmına eğer var ise Exceldeki kolon ismi yazılmalıdır(A kolonu, B kolonu gibi).

  • name = Çıktı Xml’inde node ismi ne olarak yazılacak
  • root = Çıktı Xml’inde ana node olduğunu belirtir. Format dosyası içinde bir kere belirtilmelidir.
  • bosOlabilir = ilgili alanının Excel dosyasında belirtilmiş kolonda boş olup olamayacağını belirtir. Varsayılan true’dur.
  • dgrAlani = ilgili alanın Excel dosyasında DGR/TR olarak hem isim hemde ID tutan bir alan olduğunu belirtir. Dönüştürme esnasında isim kısmı silinip sadece ID kısmı çıktı xmline basılır. Varsayılan false’dur.
  • tarihKontrol = ilgili alanın Excel dosyasında tarih (YYYYAAGG) formatında girilmiş olmasını kontrol eder. Varsayılan false’dur.
  • enum = İlgili alanın Excelde sadece belirtilmiş kayıtlar arasında girilmiş olup olmadığını kontrol eder. Olası tüm seçenekler | karakteri ile ayrılarak girilmelidir.
  • value = value kısmı varsayılan değer olarak kullanılır. Eğer Excel’de ilgili alan boş bırakılmış ise, çıktı xml ine varsayılan değer yazılır.
  • requiredAlan = Eğer ilgili alan, çıktı xml’ine sadece altındaki herhangi bir alanın değeri verilmiş ise basılacak ise requiredAlan kısmına, altında boş olmaması gereken alanın ismi yazılır. Örnek olarak Donanım alanı sadece altında bulunan Bedel alanı doldurulmuş ise çıktı xml ine basılacaktır.

Format dosyasının değiştirilmesi :

Durum 1: Excel formatı değiştirilmiş ise

Excel formatında eğer yeni bir kolon eklenmiş veya kolonların sırası değiştirilmiş ise, format dosyasında <Alan> node’unun text kısmında karşılık gelen Kolon Adı kısmı güncellenmelidir. Yani, eğer müşteri numarası artık B kolonunda değil D kolonunda alınacak ise

<Alan bosOlabilir="false">B</Alan>

yerine

<Alan bosOlabilir="false">D</Alan>

olarak güncellenmelidir.

Excel’de kontrolsel değişiklikler (zorunlu alan, tarih alanı vb.) yapıldığında aynı değişikliklerin, kolonun dönüşümünden sorumlu <Alan>’ın attributeleri için tanımlanmalıdır. Örnek olarak, plaka türü artık zorunlu olmayan bir alan olur ise bosOlabilir = değeri true yapılabilir veya varsayılan değeri zaten true olduğu için silinebilir.

Dosyayı İndirmek İçin : Excel2Xml

Excelde Dolaylı Liste ile Veri Doğrulama

Dünya ekonomisine en çok katkı sağlayan ürün nedir diye sorsalar hiç düşünmeden Excel derim sanırım. Kesinlikle sınırsız bir program. Dün karar verdim artık zamanım olursa bloguma excel ile ilgili bildiğim/öğrendiğim ve benim çok işime yarayan özellikleri koyacağım. ilk olarak veri doğrulamada(data validation) en çok kullanılan listeleme özelliğini anlatayım dedim. Umarım işinize yarar

Read the full post »

eXtreme Programming-2

Daha önceki yazımda bahsettiğim gibi master dersim için extreme programming ile ilgili bir sunum yapmıştım. Projenin ikinci safhası olarak sunumumu derli toplu bir şekilde yazmam istenmişti. Aşağıda da yazdığım yazı bulunmakta. Bir önceki yazıma göre daha derli toplu.

Yazıyı word halinde indirmek isterseniz :Sistem Analizi_XPdoc

Read the full post »

eXtreme Programming

(Bu yazımın daha dertli toplu versiyonunu buradan okuyabilirsiniz)

Yarın akşam System Analysis And Design’s dersinde eXtreme Programming ile ilgili bir sunum yapıcağım. Bu akşam sunuma hazırlanırken kenara yazıcağım notları daha derli toplu şekilde buraya yazıp başka insanlarında faydalanmasının en iyisi olacağını düşündüm. Bu metadolojiye gerçekten çok inanıyorum. Umarım yazımı okuduktan sonra sizinde hoşunuza gider.

eXtreme Programming Nedir?

eXtreme Programming Kent Beck tarafından ilk defa 6 Mart 1996 yılında ortaya atılan bir Yazılım Geliştirme Metodolojisidir (Software Engineering Methodology). İsmine bakıldığında daha çok yazılımın kodlaması ile ilgili gözüksede (ekstrem şekilde kodlamak? tek eli kullanarak, işaret ve baş parmağı bant ile birbirine yapıştırmak fln gibi saçma ekstrem bir spor gibi) aslında tamamen mantık ve insan bağları üzerine kurulmuş tüm yazılım sürecini kapsayan bir metodolojidir.

Read the full post »

Turing Makinesi

Bundan yaklaşık 5 yıl kadar önce Tubitak Yayınlarında “Kralın Yeni Usu” serisinden ismini şuan hatırlamadığım bir kitap okuyordum. Bu kitapta insan zekası ile bilgisayar algoritmalarını karşılaştırıyordu. Oldukça eğlenceli ve güzel bir kitaptı. Tavsiye ederim.

Kitabın bir bölümünde Alan Turing‘in “Turing Makinası“ndan bahsediyor. Turing makinesini bilgisayar dünyası için bu kadar önemli kılan şey, aslında şuan kullandığımız bilgisayarların Turing makinesinin çalışma mantığına çok benzer olmasıdır. Bir nevi günümüz teknolojisine ışık tutmuştur.

Turing makinesi ile ilgili çalıştığım şirketin 3 ayda bir çıkan dergisine bir yazı yazmıştım. Oldukça basite indirgenmiş (hatta bazen konudan sapmış) olsa bile belki sizinde ilginizi çekebilir :

Read the full post »