Dikkat kurbağa çıkabilir!

dikkat geyik çıkabilir
dikkat geyik çıkabilir

Bu tabelayı bilmeyen kalmamıştır herhalde. Her ne kadar “Dikkat geyik çıkabilir!” diye anlaşılsa da aslında geyik dışındaki yabani hayvanları da kapsayan bir işarettir. Bu işaretler yabani hayvanların sık sık kullandığı yollara konularak sürücüleri kaza ihtimaline karşı uyarır.

Son yıllarda bu işaretlere bir yenisi eklendi. Dikkat amfibi (iki yaşamlı) çıkabilir. Bunlar hem suda hem karada yaşayabilen kurbağa, semender türü canlılar. İlkbaharda havaların ısınmaya başlamasıyla üremek için doğdukları su birikintilerine doğru göç etmeye başlıyorlar ve bu sırada genellikle araba yollarından geçmek zorunda kalıyorlar. Yollarda artan amfibi canlı ölümleri üzerine sürücülerin dikkatini çekmek için aşağıdakine benzer işaretler kullanılmaya başlandı. Görürseniz şaşırmayın!

dikkat kurbağa çıkabilir
dikkat kurbağa çıkabilir

CSS ile imtihanım

Birkaç gündür programda kullandığımız Audit dosyasının görünüşüyle ilgili sorunlarla uğraşıyordum. Audit dosyası verilei barındıran bir XML dosyası. Bu dosya bir XSL dosyası yardımıyla HTML sayfasına dönüştürülüyor. Test bölümü bu HTML çıktısında bazı satırların sayfaya sığmadığını bildirdi ve böylece bu maceramın başlangıcına gelmiş oldum. Çıktıda bazı satırlar sayfaya sığmadığı gibi en sağdaki sütun hep bir sonraki satırdan başlıyordu:

31-03-2016 13:14:16
Recep
Sistem ayarlarıyla öyle oynandı ki sistem artık saçmalamaya başladı
31-03-2016 13:14:15
Recep
Sistem ayarlarıyla oynandı

 

Aradığım çözüm ise son sütunun diğer sütunlarla aynı hizada başlaması ve sayfanın sağından taşan yazının da bir alt satırdan ama sütunun başladığı yerden devam etmesiydi. Ayrıca son sütun birden fazla satıra yayıldığında ise sütunları kapsayan bütün div elementi de aynı yüksekliğe sahip olmalı ki bu kayıt bir sonraki kaydın görüntüsünü bozmamalı. Sonunda şu sayfanın da yardımıyla aradığım sonuca ulaştım:

31-03-2016 13:14:16
Recep
Sistem ayarlarıyla öyle oynandı ki sistem artık saçmalamaya başladı
31-03-2016 13:14:15
Recep
Sistem ayarlarıyla oynandı

[sourcecode]
.table-layout {
display: table; width:100%;
}

.row-layout {
display: table-row; width:100%;
}

.dateTime {
white-space: nowrap;
width: 40%;
display: table-cell;
}

.source {
white-space: nowrap;
width: 20%;
display: table-cell;
}

.audit {
width: 50%;
display: table-cell;
}

<div class="table-layout">
<div class="row-layout">
<div class="dateTime">
31-03-2016 13:14:16
</div>
<div class="source">
Recep
</div>
<div class="audit">
Sistem ayarlarıyla öyle oynandı ki sistem artık saçmalamaya başladı
</div>
</div>
<div class="row-layout">
<div class="dateTime">
31-03-2016 13:14:15
</div>
<div class="source">
Recep
</div>
<div class="audit">
Sistem ayarlarıyla oynandı
</div>
</div>
</div>

[/sourcecode]

Kesirli sayıları sayı doğrusu üzerinde gösterme

Geçen hafta salı akşamı eve geldiğimde Ümit matematik ödeviyle beni bekliyordu. Soruda istenen şey verilen kesirli sayıları sayı doğrusu üzerinde bulmaktı. Sayı doğrusu üzerinde 0 ile 1 arasının 10 eşit bölmeye ayrılmasını da istiyordu ama bu sadece bulunan noktanın konumunu daha iyi görebilmek içindi, çünkü verilen kesirler genelde onluk düzende sonlu basamakla gösterilebilen sayılar değildi. Verilen kesirli sayılardan ilki \(\frac{2}{3} \) idi.

Ondalık sayılarla bölme işlemi çok avantajlı gözükmedi ilk anda. Ümit’in bu sayıları derste görüp görmediğini anlamak bile zordu. Ders kitabını biraz karıştırmaya başladım. Kesirler ve sayı doğrularıyla ilgili bulabildiğim tek şey bir geometrik şekil oldu. Bu şekilde gösterilir diyordu ama hiçbir açıklama yoktu. O zaman kitapta önerilen geometrik çözümü öğretmeye karar verdim.

Ders kitabındaki çözüm
Ders kitabındaki çözüm

Örneğin \(\frac{2}{3} \) kesirli sayısı için önce sayı doğrusu çiziliyor. 0 ve 1 sayılarının pozisyonları işaretleniyor. Ardından sayı doğrusunda 0 noktasından sayı doğrusuna dik olacak şekilde başka bir sayı doğrusu çiziliyor. Bu doğru üzerinde de 0’dan verilen kesrin paydasına kadar bütün tamsayılar işaretleniyor. Sonra bu ikinci sayı doğrusundaki payda noktasıyla orijinal sayı doğrusundaki 1 noktalarını birleştiren doğru parçası çiziliyor. Sonra da ikinci sayı doğrusu üzerinde kesrin payından biraz önce çizdiğimiz doğru parçasına paralel bir doğru çiziyoruz. Bu son doğrunun ilk sayı doğrusunu kestiği P noktası aradığımız noktadır. Kitapta bahsedilmeyen tek nokta bu ikinci doğrunun birinci doğru parçasına paralel olmasıydı. Tabii ki Ümit’e bunun neden paralel olması gerektiğini anlatamayacaktım ama en azından cetvel ile bunun basit bir yolunu göstermeliydim.

Paralel doğru parçası için hazırlık
Paralel doğru parçası için hazırlık

İlk çizdiğimiz sayı doğrusundaki 1 sayısına karşılık gelen C noktasından aşağıya doğru ikinci sayı doğrusundaki 3 ve 2 sayılarının oluşturduğu \(\overline{AB} \) doğru parçasının uzunluğu kadar inelim ve bulduğumuz noktaya D noktası diyelim. Böylece \(\lvert{AB}\rvert=\lvert{CD}\rvert \) ve \(\overline{AB}\parallel{\overline{CD}} \) durumlarını elde ederiz. B ve D noktalarını birleştirdiğimizde bir paralelkenar çizmiş olacağız ve böylece \(\overline{BD}\parallel{\overline{AC}} \) şeklinde istediğimiz çizimi de elde ederiz.

Mutlu son
Mutlu son

\(\overline{BD} \) doğru parçasının ilk sayı doğrusunu kestiği P noktası aradığımız noktadır.

Bu çözüm tabii ki basit kesirler için işe yarar, yani kesrin payı paydasından küçükse. Eğer elimizde bileşik ya da tam sayılı kesir varsa yönteme bir adım daha eklememiz lazım. Önce kesri tam sayılı kesre dönüştürelim. Örneğin \(\frac{5}{3} \) kesrini ele alalım. Bu bileşik kesri tam sayılı kesir halinde yazarsak \(\frac{5}{3}=1\frac{2}{3} \) kesrini elde ederiz. Bu çözüm için çizdiğimiz ikinci sayı doğrusunu kesrin tamsayı kısmı kadar sağa kaydırmamız gerekecek. Ondan sonraki bütün çizimler aynı kalacak. Şimdi bu kesrin çözümü olan çizimi görelim.

bileşik kesir çözümü
bileşik kesir çözümü

Mandelbrot kümesi

Sonunda daha önce Julia kümeleri üzerine yazdığım bir yazıda da kısaca bahsettiğim Mandelbrot kümesi programını da hallettim. Aslında sonuçlar Julia kümesindeki kadar ilginç olmadığı için (Meşhur Mandelbrot şeklini kim bilmez ki?) programlara zoomlama eklerini de daha sonra eklemeyi düşünüyorum.

Bu programda Julia kümesinden tek fark \(z_{n+1} = z_n^2 + c \) dönüşümünde \(z_{0} = 0 \) başlangıç durumunu almak ve grafiğin noktalarına göre c sabitini belirlemek. Yeni algoritma bu durumda aşağıdaki gibi olacaktır:

Algoritma:

  1. \(z=0 \) olacak şekilde kompleks değişkenimize ilk değer atanır.
  2. Çizim yapılacak ekranın her noktası için: Seçilen nokta bir \(c \) kompleks sayısına dönüştürülür.
  3. Her adımda elde edilen kompleks sayı yarı çapı 2 olan dairenin dışına düşmediği ve maksimum adım sayısına erişilmediği sürece dönüşüm uygulanır.
  4. Seçilmiş nokta için elde edilen adım sayısına göre bir renk üretilir.
  5. Seçilmiş nokta ekran üzerinde bu renge boyanır.

Program Julia kümesindeki programa çok benzediğinden daha fazla açıklama yapmayacağım. Programa aşağıdaki bağlantı üzerinden açılan sayfada erişebilirsiniz. Sağ fare tuşuyla sayfa kodunu ve sayfa içindeki javascript programını indirebilirsiniz.

yilmazaksoy.com/apps/Mandelbrot.html

Aquajogging

Çocuklar yüzme kursuna giderken havuzda yürümeye çalışan bir kadın gördüm. Sırtına garip plastik bir parça giymişti ve bu sayede batmadan yavaşça havuzda boydan boya ilerliyordu. Bu nedir acaba diye merak ettim ve kasadaki bilgi broşürlerinden bunun aquajogging olduğunu öğrendim.  Teknoloji ne kadar ilerlemiş diye düşündüm birden. Ben aquajogging’i icat ettiğimde böyle yardımcı aletler yoktu henüz.

Otuz yıl kadar önceydi sanırım. Yaz tatillerimi Gölcük’e çok yakın olan Ulaşlı köyünde amcamlarda geçirirdim. Günlerimiz sabahları uyuyarak, öğleden sonra kayıkla balığa çıkarak, akşamları futbol, geceleri de saklambaç oynayarak geçerdi. Bir gün Gölcük kaymakamı ailece köye geldi ve amcam onları misafir etti. Hep beraber balığa çıkıldı. Amcam kaymakam beyle ilgilenirken, kuzenim ve ben de kaymakamın kızlarıyla ilgileniyorduk. Kızlar balık tutarken biz ayıklama ve oltaları hazırlama işlerini yapıyorduk. Zevkle yaptığımız bu hizmeti karşılıksız bırakmak istemeyen kaymakam da bizi Ulaşlı’daki askeri kampa davet etti. Biz de bu daveti tabii ki geri çevirmedik.

Kampa gittiğimizde fark ettim ki grupta yüzme bilmeyen bir tek ben vardım. Sorun değildi ama. Havası hafif inik bir adet şambrel ile bu sorun kolayca çözülmüştü. İskele civarında şambrel ile küçük turlara başladım. Kuzenim ve kızlar da civarda yüzüyordu. Küçük bir dalganın ardın şambrel birden henüz okulda öğrenmediğimiz fizik kurallarına uyarak beni üzerinden attı. Küçücük boyumla külçe gibi derin suya gömülmüştüm. Suyun üzerine çıkamamama rağmen ilginç bir şekilde panik de yapmıyordum. Ne kadar bekledim bilmiyorum ama yardıma gelen giden yoktu. Madem öyle ben kurtulayım bari diye düşündüm ve gözlerimi açıp etrafa bakmaya başladım. Su altında bulanık bir şekilde iskelenin tahta bacaklarını görmeyi başardım. Bu sayede karaya ulaşmak için hangi yöne gitmem gerektiğini çözebildim ama su yüzünde yüzemediğim gibi suyun altında da yüzemiyordum. Yüzemediğime göre yürümekten başka çare kalmamıştı. Yürümek içinse zemine inmem gerekiyordu. Yeterince su yuttuğumdan bu da bir sorun olmadı. Ayaklarım yere basıp da planın ilk kısmının başarılı olduğunu görünce artık bu işi başaracağımdan kuşkum kalmamıştı. Yavaşça ama kararlı bir şekilde karanın olduğu tarafa doğru yürümeye başladım. Zeminin yavaşça yükseldiğini fark edebiliyordum, bir süre sonra bana ait olmayan bacaklar görmeye başladım ve bir iki adım sonra da kafamı sudan çıkarabildim. Etrafıma baktığımda kimsenin bu maceramı fark etmediğini anladım ve böylece elde ettiğim mutlak başarının verdiği gururla kaymakamın kızlarına görünmeden kıyıya çıkıp sakince kusmaya başladım.

Bu icadımı bir daha denemeyi düşünmediğimden ona bir isim verme ihtiyacı duymamıştım ama şimdi bütün dünyada bu kadar popüler olduğunu gördüğüme göre belki bir şans daha verebilirim.

Cenaze

ACI KAYBIMIZ

Lambrecht eşrafından

AURORA DINKLY

24 Kasım 2015 gecesi hakk’ın rahmetine kavuşmuştur.

Cenazesi 28 Kasım 2015 günü öğle namazının ardından bahçedeki mezarlığa defnedilecektir.

İş arkadaşları Aurora'nın tabutu başında
İş arkadaşları Aurora’nın tabutu başında

Bir tartı sorusu üzerine çeşitlemeler

Klasik bir tartı sorusu vardır:

Kral kuyumcuya 10 torba her biri 10 gram ağırlığında altın para siparişi verir. Kuyumcu da siparişi yerine getirir ama kralın fark etmeyeceğini düşünerek bir torbadaki altınları 9 gram yapar. Bu hile bir şekilde kralın kulağına gider ve kuyumcuyu cezalandırmak ister. Son bir şans olarak da kuyumcudan hileli torbayı tek bir tartıda bulmasını ister. Bu tartıda her torbadan istediği kadar para kullanabilir ve terazi paraların ağırlığını oldukça duyarlı bir şekilde gösterebiliyor.

Bu soru genelde hep bu şekilde sorulur ve çok basit bir cevap beklenir. Hatta benim çalıştığım şirkette iş görüşmesinde adaylara sorulan standart sorulardan biridir. Cevap gerçekten de basittir. Birinci torbadan 1, ikinci torbadan 2, üçüncü torbadan 3 ve bu şekilde devam ederek son torbadan da 10 adet para alınır ve teraziye konur. Eğer paralar hilesiz olsaydı terazi bize 550 gram göstermeliydi. Beklenen ile gösterilen değer arasındaki fark torba numarasını verir. Örneğin eğer terazi 543 gram gösterirse demek ki 7 numaralı torba hileli paralarla doludur. Çünkü o torbadan 7 tane para aldık ve her para normalden bir gram daha hafif.

Bu soru çok daha değişik şekillerde de sorulabilir aslında. Örneğin en fazla bir torba hileliyse diye sorulsa yukarıdaki çözüm bunu da çözer. Eğer hileli torba yoksa terazide 550 gram okuruz.

Bir torba hileliyse en az kaç para ile hileli torbayı bulabiliriz? Eğer bir torbanın hileli olduğu verilmişse onuncu torbadan 10 tane para almaya gerek yok. O zaman çözümdeki mantığı 450 gram toplamı için yorumlamamız yeterli. Eğer terazi 450 gramdan az gösterirse hatalı torbanın numarası aradaki fark kadardır. Eğer 450 gram ölçersek de hatalı torba onuncu torbadır.

 Peki ya kaç torbanın hatalı olduğu verilmezse bu soruyu en az kaç parayla çözebiliriz?

Veri yedeklemenin önemi

Benden bilgisayarla ilgili bir tavsiye istense düşünmeden “verilerinizi sürekli yedekleyin” derim. En azından veri kaybı olasılığına karşı bir plan yapmalarını söylerim. Bilgisayarınızı hiç bozulmayacakmış gibi kullanın ve ertesi gün bozulacakmış gibi verilerinizi yedekleyin.

Yirmi yıl kadar önceydi. Üniversitedeydim, 1990’ların ilk yarısıydı, kişisel bilgisayarların hayatımıza yeni girdiği, cep telefonlarının henüz piyasada olmadığı zamanlar. Bir hafta sonu Gölcük’e annemlere gitmeye karar verdim. Yanımda da masaüstü bilgisayarımı getirmeyi planlamıştım. Böylece hafta sonu projem üzerinde de çalışabilecektim. Babam da bilgisayarımı merak ediyordu. Çok meraklı, öğrenmeye aç biriydi ve bu yüzden hiç yabancı dil bilmemesine rağmen kendine nispeten basit bir bilgisayar da almıştı. Benim son model pentium bilmem kaç işlemcili bilgisayarımı da görmek için sabırsızlanıyordu.

Bilgisayarımla yaptığım yüz kilometre yolculuktan sonra eve vardım. Bilgisayarı kurdum ve babama biraz gösterip televizyon seyretmeye geçtim. Sonra da yaptığım yorucu yolculuk yüzünden erkenden yatmaya gittim. Tahminimce babam da bütün gece yalnız başına bilgisayarımla boğuşmuş olmalı.

Sabah bir ara annem odaya geldi ve beni uyandırmaya çalıştı. Proje kabusundan uyanır gibi olup bilgisayarın başına geçmem gerektiğini düşünürken annemle aramızda şöyle bir konuşma geçti.

Annem: Oğlum baban sabit sürücüyü silmiş.

Ben: Aman, bana ne? Kendi bilgisayarı işte. Birazdan zaten proje için kalkacağım, o zaman bakarım.

Annem: Senin sürücüyü silmiş ama.

Ben: O zaman projeyi yapmama gerek de kalmadı. Biraz daha uyuyayım bari.

Tabii ki bu kazanın suçlusu da ben olmuştum. Neden ona yardım etmemişim? Uyuyor olmam hafifletici sebep bile sayılmadı. Babam ben uyurken bilgsayarımda bildiği bütün komutları denemiş ve bu sırada işletim sisteminin “sürücüyü formatlamak istediğinizden emin misiniz?” sorusunu da dil sorunu yüzünden anlamayıp evet diye cevaplamış. O günden sonra ne zaman babama “Anlamadığın her soruya evet cevabını mı verirsin?” diye sorduğumda “Bana yardım etmediniz ki” cevabını verdi.

Bundan sonraki ilk ve son yedekleme kazam 2004 yılında şirkette program yazarken bilgisayarın ekran kartının küçük bir patlamayla son üç günlük işimi erişilemez hale getirmesiydi. Fazladan mesai ile o üç günü birkaç saat içinde yeniden yazdım ama ömrümden de yıllar gitti bu sırada.

Bu tavsiyenin en eğlenceli kısmı da tavsiyeyi alanın buna uymayacağını bilmem. Nedense insanlar böyle bir şeyin başlarına gelmeyeceğine inanıyor. Daha iki gün önce Max da o kadar uyarıma rağmen projedeki değişiklikleri sisteme aktarmadığı bir sırada sabit sürücüsünün pes etmesi sonucu bu dersi zor yoldan öğrendi. “Nasıl böyle bir şey olabilir ki?” diye söylenirken, Ralf her zamanki gibi “her yıl sabit sürücülerin yüzde hede hödösü kendiliğinden bozulmakta” şeklinde bilimsel açıklamasını yapmıştı bile. İnsanların pat diye düşüp öldüğü bir dünyada donanımın sonsuza kadar yaşayacağına inanmamak lazım. En azından ölüm nedeniniz beklenmedik bir anda bozulan donanım olmasın.

Ümit ve mantık

Geçen pazar arabayla giderken Ümit’le Katja arasında şöyle bir konuşma geçti:

Katja: Aaa, dün mantar almayı unuttuk, anneannen istemişti.

Ümit: Peki ne yapacağız şimdi?

Katja: Bir şey yapmayacağız. Sana hatırlat demiştim, hatırlatmadın. O zaman yemekte mantar olmayacak.

Ümit: Ne yani, pencereden atlamaman gerektiğini hatırlatmazsam pencereden atlayacak mısın?

O gün belki mantarsız kaldık ama bir mantık dersi daha zengindik artık.