Yazılımda gösterip de vermemek

Bu sabah ekibin matematikçisi M bizim büroya geldi ve kontrol ekibindeki bir çocuğa programda yardım ettikten sonra hiç beklemediğimiz bir konuya girdi. Yazdıkları programda bizim işimize yarayabilecek bir arayüz fikrinden bahsetti. Şaşırdık çünkü yıllardır istediğimiz en basit arayüzü bile vermemek için elinden gelen her şeyi yapan kişi de ta kendisiydi. Hatta daha da ileri gitti ve kullandıkları framework’ün aslında yeniden yazılması gerektiğini söyledi. Şaşkınlıktan ağzımız açık kaldı, dilimiz tutuldu ve Ali İhsan’ın da dediği gibi algılayamadığımız daha başka şeyler de oldu.

Kendime geldiğimde bu fikri dikkatlice onayladım. Kesin bir tuzak olmalıydı bu. M asla yıllardır savunduğumuz bir şeyi, hatta iki şeyi, kendiliğinden böyle kolayca kabul etmezdi. O framework’ü zamanında tasarlayan ekipte beraber çalıştığım başka bir arkadaş da bunun yenilenmesi gerektiğini, zamanla sistemin çok değiştiğini, bu sırada yeni şeyler öğrendiğimizi filan söyledi. Bu giriş heralde hedeflediğimizden hızlı oldu ki M birden bütün sistemi değiştirmenin mümkün olmadığı konusuna atladı. Fırsatı kaçırdık mı diye endişelenmeye başladım. Bu değişikliğin nasıl yapılabileceği konusunda çözüm önerileri sunduk. Hatta bu işi adım adım yapabileceğimizi, ilk olarak da aradaki haberleşmeyi düzelterek başlayabileceğimizi söyledik. Ayrıca bu adımı başka programlar arasında daha önce yaptığımız için yeterli tecrübemiz de vardı ama M bu öneriyi duyunca hemen imkansız dedi. Kaçan balık bu sefer gerçekten de çok büyüktü.

Yapacak bir şey kalmamıştı. Sustuk. M konuşmaya devam etti. Başka bir sorundan bahsetti. Bu seferki sorun da kullanıcı arabiriminde o an kullanılmayan ayar parametrelerinin gizlenmesi üzerineydi. O an anladım ki derdi kendi programında değişiklik değil de bizim programımızda değişiklik yaptırmaktı. Sorun değildi ama, eğer sonuçta işimize yarayacaksa neden olmasın dedik. Dedik ama bizim de isteklerimiz vardı. Bu değişiklikleri yapmak için ihtiyacımız olan arayüzü bize sunarsan bu sorunu kolayca halledebiliriz dedik. Kendisi bu arayüzü programda tanımlamaya çalışıyordu (aslında bunu programlamak istediğini hiç sanmıyordum ama yine de iyi adımdı en azından) ama kullanıcı arabirimini programlayan arkadaş birer konfigürasyon dosyasıyla bu işi daha kolay halledebileceğimizi söyledi. M nedense buna bile yanaşmak istemedi. Oysa bu çözümde programlama yapmasına bile gerek yoktu.

Yine sustuk. Bunun üzerine başka bir konuya atladı. Sensör verisi olarak kaydetmem gereken önemli verilerden birini tanımlamada nasıl bir sorunları olduğunu anlatmaya başladı. Bu sorunu çözmek için o veriyi çok garip bir formatta sunabileceğini söyledi. Ben de artık istediğim hiçbir şeyi alamayacağımdan emin olduğumdan o zaman ben de o veriyi hiç dokunmadan o formatta kaydedeceğimi, AR-GE elemanları da bu verilerin nasıl kullanılabileceğini sorduklarında onları kendisine (M’ya) yönlendireceğimi söyledim.

Sanırım M’dan arayüz alma hayalimizi artık gömmenin zamanı geldi. Ne kadar gösterirse göstersin bir şey vermeyeceğinden eminim artık. Onu başka türlü zorlamanın yollarını devreye sokmanın zamanı geldi de geçiyor. Yok, yok, zor kullanarak falan değil. Yazılımla!

Bir matematik kitabı

Normalde okullarda öğrenilen konuları kendi kendime öğrenmeyi sevdiğimi söylemiştim. Tabii ki buradaki en büyük sorunum da bana uygun kaynakları bulmak. Bir sürü kitaba başlayıp yarısında ya da başlarında bıraktığım olur. Son haftalarda yine matematiğe başladım. Seçtiğim alanlardan biri de sayılar teorisi.

Kitap olarak bu sefer Joseph H. Silverman’in “A friendly introduction to number theory” adlı kitabını kullanıyorum. Okuduğum diğer matematik kitaplarından farklı bir tarzda yazılmış. Öyle tanım, aksiyom, teorem, ispat döngüsüyle gitmiyor. Daha çok, gözlemler, sorular ve başka gözlemler şeklinde ilerliyor. Arada bu gözlemlerle ilgili ispatlar da veriliyor.

Alıştırma soruları da önce gözlem ve denemelerle başlıyor. En son adım olarak ispat soruluyor. Yani önce ilginç bir şey gösteriliyor, daha doğrusu bunu görebilmemizi istiyor, daha sonra bu gördüğümüz şeyin ne olabileceğini bize tanımlatıyor ve son olarak da acaba bu doğru bir sonuç mu diye de bize sorgulatıyor. Bir oyun gibi, deney gibi.

Aslında teknik olarak diğer kitaplarda da okuyucu bu yöntemi kendi kullanabilir. Yani bir teorem önce verilmişse, okuyucunun kendisi önce denemeler yapabilir ve biraz ikna olabilir. Sonra verilen teoremin ispatına girişebilir. Yine de iki yaklaşım arasında bence bir psikolojik fark var. Bana o teoremin hazır verilmiş olması, bir dizi ya da film seyrederken birisinin bana spoiler vermesi gibi etki yapıyor.

Kitabın hala çok başlarındayım. Bakalım bitirebilecek miyim ve eğer bitirirsem o zaman kitap hakkında neler düşüneceğim?

Geyik böceği

Yılın ikinci babalar gününde tripodu alıp ormana gideyim dedim. Şu sıralar asıl hedefim tırtıllar. Bu nedenle genellikle ısırganlara ve sarımsak otlarına dikkatle bakıyorum. Diğer bitkilere de gözüme bir şey çarparsa.

Ormana girer girmez ilk tırtıl örneğimi hedefimde olmayan bir birki üzerinde gördüm. Bitkiyi de tanımadığımdan tırtılın ne olabileceği konusunda hiçbir fikrim yok.

Günün asıl sürprizi ise biraz daha ileride tam geri dönmek üzereyken karşıma çıktı. Erkek bir geyik böceği. Larvaları ancak özel şartlarda yaşayabildiği için buralarda çok ender görebildiğim, kıtanın en büyük böceği. Canlı olarak ikinci kez görüyordum.

Babalar gününde daha güzel bir hediye zor olurdu bence.

Stajyer

Sabah işe geldiğimde tabii ki sorunlar beni bekliyordu. Haftaya hazır olması gereken makine çalışmıyordu. Makineyi kontrol ettim ve elemana buna yanlış konfigürasyon yüklemişsiniz dedim. Eleman da bana doğru paketi kullandıklarını söyledi. Kontrol ettim, gerçekten de paket doğruydu ama makineye yüklenmiş olan paket yanlıştı. Bu sefer olaya kurulum kısmını programlayan arkadaş da müdahil oldu. O da hatayı bulamadı ama. Ben tam problemi incelemeyi bırakmıştım ki ilk eleman dün sistem çalışmayınca şefin isteği doğrultusunda yine eski konfigürasyonu yüklediklerini anlattı. Eski konfigürasyonda satılan makineye uygun konfigürasyon değildi tabii ki. Bu açıklamayı duyunca ben de “eğer sistemdeki hataları bulmak ve çözmek istiyorsanız bizim şefi dinlemeyin” dedim.

Daha sonra stajyer son gününü benimle geçirmek için geldi. Buralarda oldukça yaygın bir uygulama bu. Lise öğrencileri ilgilendikleri meslek alanındaki bir şirkette iki hafta kadar staj yapıyor. İşlerin nasıl yürüdüğünü görüyor. Gerçekten o mesleğin kendisine göre olup olmadığını anlama fırsatı buluyor ve üniversitede ona göre bir yol seçebiliyor.

Lise ikinci sınıf öğrencisi için epey bilgisi vardı. Akşama kadar onun ya da benim aklıma ne geldiyse yazdığım programdan örnekler göstererek anlattım. Bu kadar şeyi anladığını ya da takip edebildiğini sanmıyorum ama en azından nasıl bir iş yaptığımızı ve bu işi nasıl yaptığımızı görmüş oldu. Son olarak da sensör verilerini kaydeden sistemdeki bir hatayı aradık ve sorunu giderdik. Bu aynı zamanda hafta sonu için de iyi bir motivasyon oldu ve mesaiyi hemen sonlandırdık.

Günün geri kalan kısmında bahçedeki çiçeklere baktım biraz. Yeni bir çiçek daha açmış. Bunun yanında salyangozlar bir türü komple yiyip bitirmiş. Sanırım bahçeye kirpi transferinden başka bir şansım yok.

KBB

Bugün baş dönme sorunum için arkadaşların tavsiyesi üzerine KBB randevum vardı. Öğleden sonra izin alıp gittim. Google haritalar uygulamasına rağmen doktoru bulabildim. Bunu dikkate alıp erken gitmiştim zaten. Muayenehanede kayıt işimi yaptıktan sonra bekleme salonlarında korona kurallarına göre bir yer arama çalışması başladı. Sonunda herkese en az iki metre uzakta olan bir köşeye geçtim ve beklemeye başladım.

Sıra bana geldiğinde doktora durumu anlattım. Kısa bir muayeneden sonra işitme ve denge organı testleri yapılsın dedi ve bu sefer başka bir yerde beklemeye başladım. Önce telefonda biraz oyun oynadımç Sonra ondan da sıkıldım ve kitap okumaya başladım. Beklediğim yerdeki muayene işlemleri biteli neredeyse bir saat olmuştu. Sonra doktorun resepsiyonda benim test sonuçlarını sorduğunu duydum. Ardından testleri yapacak kadın da benim adımı anons etti. Tahmin ettiğim gibi beni unutmuşlardı. Neyse basit testler hemen yapıldı ve kısa bir süre sonra da doktor geldi sonuçları söyledi. Kulak ve denge organımda bir sorun yoktu. Tahmin ettiği gibi sorun boyunla ya da omurgayla olmalıymış. Ortopediste görünmemi söyledi. Zaten gelecek ay ortopedist randevum var, bunu da sorarım artık.

Doğru düzgün oturmayı beceremediğimden büyük ihtimalle boyun kısmında bir sorun bulacaktır ortopedist. Bu baş dönmeleri aslında beni çok rahatsız etmiyor ama her sorunun artık en azından benim için basit çözümlerinin olmaması beni korkutmaya başlıyor sanki. Korktuğum şey yavaş yavaş ölüyor olmam değil. Bu işkence sadece. Durumu oldukça büyüttüğümün farkındayım ama yapmayı sevdiğim epey şeyi son aylarda hiç yapamadım. Bunların artarak devam edecek olması asıl korkum.

Neyse dinlenmekten başka bir şeye ihtiyacım da yok şu an. Dün başladığım taxi driver filmini biraz önce bitirdim. Yarın da liseden gelen stajyerimizin bizim gruptaki son günü ve yarınki danışmanı benim. Bakalım nasıl olacak.

İşler ve denemeler

Şirkette yine projelerin ve sorunların çakıştığı bir döneme geldik. Bu dönemi enteresan bir şefle atlatmak durumundayız ama hallederiz bunu da. Şefimiz birkaç yıldır bölümü yönetmekte ve kendisine enteresan bir görev verilmiş. Şirkette olası bütün toplantılara katılmak zorunda. Yani biz öyle sanıyoruz. Dolayısıyla bize bir çok işi söylemeyi unutuyor. Masası benimkinden, hatta benim evdeki masamdan daha dağınık. Bu yüzden biz de masalarımızı düzenlemeyi çoktan bıraktık.

Şefimizin ilginç bir özelliği her soruna pragmatik bir çözüm araması. Tabii ki bütün zamanını toplantılarda geçirdiğinden başka bir çözüm için zamanı kalmıyor. Asıl sorun bu pragmatik çözümlerin genelde problemleri çözmemesi. Başlarda bir iki bunların işe yaramayacağı konusunda kendisini uyardıysak da kendisini bundan vazgeçiremedik. Bu işi bir de o kadar zekice yapıyor ki. Önce bir konsept belirleyelim diye bir toplantı ayarlıyor. Toplantı ilerledikçe pragmatik çözümüne sürüklüyor bizi ve sonunda kendimizi planı onaylarken görüyoruz.

Hatta bu yöntemi müşteriyle proje yaparken de denedi. Son projelerin birinde müşteri bizim makine için bir kullanıcı ara birimi yazmak istedi. Biz de müşteri tam olarak ne yapmak istiyor diye sorduğumuzda bize bunun müşterinin de bilmediğini söyledi. Bizim tepkimiz de tabii ki “hah, şimdi sıçtık” oldu. Zaten istenen zamanda bitirme şansımız olmayan bir projenin sınırlarının olmaması kadar güzel bir şey yoktur bu dünyada. Bizim şef ise, her şeyin yolunda olduğunu ve müşteriye sadece bizim standard ara birimimizi vereceğimizi ve müşterinin bunu kullanarak işlerini yapmak zorunda olacağını söyledi. Tabii ki buna tepkimiz de “sen öyle san” oldu. Bu müşteri bizim patronun kankasıydı. Sonuçta bir sorun çıktığında doğrudan patronla görüşen bir müşteriye bunu demek biraz zor olacaktı ama bekleyelim, görelim dedik.

Müşteri ne yapacağını tam bilmediği dönemde bu ara birim ile çalışabileceğini söyledi. Tabii ki bu bizim şefi sevindirse de bunun nasıl bir tuzak olduğunun farkındaydık. Bu ara birim kullanıcılar için değil otomatik sistemler için yapılmış bir ara birimdi.

Zamanla müşterinin fikirleri vücut kazanmaya başlayınca istekler de bir bir gelmeye başladı. Pragmatik çözüm iflas etmişti. Artık bu ara birimi fazla zedelemeden işi bitirmeyi düşünmeye başlamıştık.

Aylar sonra, bugün ara birim kısmını bitirmeyi başardık ama yine de bir iki açık nokta var gibi geliyor bana. Bakalım o kısımlar ne zaman patlayacak?

Bunun yanında bir de başka bir müşteride bir sorun çıkmış. Bu sorun e-posta zincirinin sonunda bana da ulaştı fakat sorunun ne olduğunu bir türlü anlayamıyorum. Ben bu kısımda sadece verileri müşteriye iletiyorum, verilerin içeriği hakkında hiçbir bilgim yok ama anladığım kadarıyla bu veriler müşterinin beklediği şekilde değil. İşte, mesajları defalarca okumama rağmen sorunun tam olarak ne olduğunu bir türlü çözemedim. Destek ekibi müşterinin baskı yapmaya başladığını söyleyerek acil bir çözüm istiyor ama anlamadan neyi çözeyim? Sorunu tam anlatın diyince de mesajda yazıyor diyorlar. O kadar okuma yazmam olduğunu bilmiyorlar mı acaba? En sonunda programı kontrol ettim ve olası sorunları listeledim. Sorun bunlardan biriyse çözülebilir dedim, değilse anlamıyorum sorununuzu diye bir mesaj yazdım. Destek ekibinden sorun buna benziyor mesajı geldi, bunu nasıl çözebiliriz diye sordular. Ben de programlaması kolay ama sadece bir değil, üç müşteriyi etkileyecek bir çözüm bu diye cevap yazdım. Önce hepsiyle bir ortak yol bulmamız gerekiyor yani. Bu cevabı şefe de gönderdim. Ondan sonra muhabbeti seyretmeye başladım. Bizim şef yıllardır çalışan bir programın birden böyle yapmayacağı fikrini savunmaya başladı. Hiç sevmediğim bir yöntemdir bu. Zaten işimiz çok, bir de bununla biz uğraşmayalım, zaten servisin görevi anlayışlı bu savunma en fazla bir iki gün kazandırır bize. Diğer taraftan bizim servis bunu kendi başına çözemez ve sonuçta kızgın bir müşteri iki gün sonra bu sefer bir programcı gelsin, problemi burada çözsün der. O programcı da büyük ihtimalle ben olurum. Bu müşteriye daha önce de gitmiştim. Programcılara karşı iyi davranıyorlar. Bu açıdan sorun etmiyorum ama bu problemle ciddi olarak ilgilenmeyerek boşu boşuna gerilimi artırmaya da gerek yok. Sonuçta o zamanı öyle ya da böyle kaybedeceğiz.

Şimdilik topu müşteriye atmış durumdayız ama gelişmelerden sizi haberdar ederim.

Akşam bahçede action cam denemelerine devam ettim. Henüz istediğim şeyi başaramadım ama doğru yolda olduğumu düşünüyorum. Yarın sabah ve akşam birer deneme daha yapmayı planlıyorum.

Bugünkü başarısız bir denemem de Pinocchio illüzyonu oldu. Vibratör yerine elektrikli diş fırçası kullandım ama iddia edilen illüzyonu hissetmedim. Heralde doğru noktayı bulamadım. Ona da sonra bakarım.

Masamın üzerindeki çiçeklerin hepsini sonunda bahçeye çıkardım. Havalar iyi, yağış da yeterince var. Tek sorun, çiçeklerimi yemek için can atan salyangozlar. Onları çiçeklerin yakınında görünce sadece uzak bir yere atıyorum. Başka tonla ot var bahçede, onları yesinler. Komşunun bahçesindeki çiçekler de fena değil aslında ama hep bana geldiklerine göre ya en güzel çiçekler bende ya da organik bir bahçeye sahibim. Böyle devam edeyim.

Ordan burdan

Geçenlerde ikinci bir tripod almıştım, hani çocukların kırdığının yerine. Ne büyük bir nimetmiş. Işığın yetersiz olduğu durumlarda inanılmaz faydalı. Bu sayede orman gibi ışığın çok az olduğu yerlerde de fotoğraf çekebileceğim.

İlk denemeyi dün yaptım. Çok da yağmur yağıyordu ama tripodu ve makineyi kapıp kısa bir ava çıktım. Hava durumu nedeniyle böcek görmeyi beklemiyordum ama kim bilir. Hava yeterince sıcaktı. Yağmur dursa hemen saklandıkları yerden çıkabilirlerdi. Yağmur dinmedi ama. Ben de yağmurdan kaçmayan motifler aradım.

https://www.instagram.com/p/CBdsOhOJnL6/
https://www.instagram.com/p/CBdsWjrp8Tz/
https://www.instagram.com/p/CBdoCQgpAKM/
Ormandan bir çiçek

Yağmur iyice bastırdığından ormanda daha fazla kalmadım. Ayrıca bileğimde atel ve elimde o kadar yük de hiç de rahat olmuyormuş. Ya ben yük taşıma sorununa bir çözüm bulacağım, ya da ortopedist şimdilik sağlam olan elime.

Dört günlük tatil dönüşü şirketteki işler düşündüğümden daha kolay geldi. Alıştıkça zor gelmeye başlar yine.

Bundan başka, doktor serisine devam ediyorum. Perşembe günü KBB doktorundan randevum var. Bakalım gizemli baş dönmelerim onun alanının konusu muymuş? Tansiyon ilaçlarımı almadığımda kısa süreli baş dönmelerim oluyordu ama gün boyu yattığım yerde bile olanların bir açıklaması olmalı. Olmasa da pek sorun etmem heralde.

Birkaç gündür Serkan’a aldığım action cam ile denemeler yapıyorum. Hala bir sonuç alabilmiş değilim ama elbet bir gün şansım yaver gidecektir. Şimdi gidip bir daha kontrol edeyim.

Dillerden çektiklerim

Türkiye’de bir çok insanın hayali olan bir eğitim aldım. Anadolu Lisesi’nde başlayan İngilizce eğitim, Fen Lisesi’nde verilen aradan sonra Boğaziçi Üniversite’sinde yine devam etti. Aslında ben yabancı dil konuşmayı sevmem, daha çok okuyucu ve dinleyiciyimdir ama eğitim dili yabancı dil olunca mutlak kaçış olmuyor. Yine de minimum utanç verici vakayla bu kısmı atlattım.

Nedense okul bittikten sonra İngilizce konuşmaktan o kadar korkmuyordum artık. Tabii İngilizce konuşulan bir ülke yerine Almanya’ya geldim. En fazla birkaç cümle Almanca biliyordum. Daha sonra farkettim ki o birkaç cümle de günlük hayatta hiç kullanılmıyormuş.

Tabii bu eğitimin ardından insanda bir özgüven oluşuyor. Her sorunun altından kalkarım duygusu hakim oluyor. Almanca’yı öğrenmek kolay oldu ama yine dinlemek ve okumak için. Konuşmayı hala sevmiyordum. Bu sorada staj yaptığım yerlerde çok zorlanırsam İngilizce de konuşabildiğimden ciddi sorunlar yaşamıyordum. Günlük hayat öyle değil ama. Fırından ekmek alırken bile ekmeğin bin tane çeşidinin olması o “bir adet ekmek almak istiyorum” cümlesinin ne kadar boş olduğunu yüzüme çarpıyordu. Satıcı tabii ki hangisini istediğimi soruyordu ama hangisi diye sormuyordu. Sorusunu tercüme etmeye kalksam sanırım şöyle bir şey olurdu: Oaaannnnnii? Evet ders kitaplarındaki o Almanca yaşadığım yerde kullanılmayan bir dildi. Pfälzisch denen bir dili öğrenmem gerekiyordu. Komik olan şey ise bu dertten Almanların da muzdarip olmasıydı. Başka şehirlerden buraya gelip yerleşmiş Almanlar da bu dili anlamıyordu. Neyse, zamanla bu dili anlamaya başladım ama asla konuşmayı denemedim. Anlamaya başladım dediysem sadece duyduğumda anlıyordum. İnanmazsınız belki ama bu dilin yazılı hali de var. Okurken kesinlikle bunu anlamıyorum. Buna karşı bir yöntem geliştirdim ama. O kısımları sesli okuyorum. Sesi duyduğumda da anlıyorum. Dilin beyinde çözümlenmesi gerçekten de ilginç bir mekanizma olmalı.

Daha sonra asosyalliği biraz azalttım. Bunun için konuşmam gerekti ama. Bunu da hallettim. Almanca ile bir sorunum kalmamıştı artık. Yani kısmen kalmamıştı. Bazen arada Türkçe kelimeler kaçırdığım oluyor ama sorun olmuyor. Asıl sorun ise artık şirkette ortaya çıktı. İngilizce konuşan elemanlarla anlaşamıyordum. Yani anlaşmanın bana doğru olan kısmı çalışıyordu da ben düşündüklerimi İngilizce’ye çeviremiyordum. İngilizce cümle kurarken aklıma önce Almanca kelimeler geliyordu. Bu kelimelerin Almanca olduğunu farkedersem İngilizce karşılığını biraz düşünmem gerekiyordu ama bu da konuşmamı çok yavaşlatıyordu. Söylediğim kelimenin Almanca olduğunu da genelde karşımdaki kişinin yüz ifadesinden anlıyordum. Dil ve konuşma merkezlerimde bence otomatik işlemesi gereken bir şey doğru çalışmıyordu ve bu yüzden acayip enerji harcamak zorunda kalıyordum.

Bunun üzerine İngilizce konuşma antrenmanları yapmaya başladım. Tabii ki kendi kendime. Bakalım bu bir işe yarayacak mı?

Dillerden çektiğim bu kadarla da kalmadı. İnternette de sorunlar yaşayıp duruyorum. Sanal alemde birileriyle konuşurken önce bir dil seçmem gerekiyor. Genelde hep Türkiye’deki arkadaşlarımla konuştuğumda bu dilin Türkçe olduğu aşikar ama konuşma klavye üzerinden yapıldığından bir sorun var. Klavyenin harf dizilimine dikkat etmem gerekiyor. Türkçe QWERTY dizilimiyle mi Türkçe konuşacağım yoksa Alman QWERTZ dizilimiyle mi? Bazen ilk yazdığım cümle çok anlamsız oluyor. Hızlı hızlı yazayım derken ne yazdığıma bakmadığımdan sonucu mesajı gönderdikten sonra görüyorum. Arkadaslar gülüyordur belki ama bu beni ara ara çok kızdırıyor. Beynin otomatik yaptığı ya da otomatik yapmasını beklediğim şeylerin bir çoğunu kontrol etmek zorunda kalmak beni rahatsız ediyor. Bu akşam yine başıma geldi ama bazen bu yazdığım şeyi düzeltmek bile istemiyorum. Özellikle çok yorgun ya da kızgın olduğumda.

Şimdi de daha fazla bir şey yazmak istemeyecek kadar yorgunum. Yatayım en iyisi.

Vücuttan sinyaller var

Aslında sinyaller uzun zamandır vardı da ben dinlemiyordum. Bunlar stres gibi sinsi sinyaller de değildi. Açıkça iki aydır sol bileğim ve elim bir şeyi tutunca ağrıyordu. Heralde kışın ardından bahçede çalışırken başladı. Sonunda bu cuma doktorun verdiği reçeteyle atel (evet geçen gün bulamadığım kelime atelmiş) almaya gittim.

Satıcı kadın reçetedeki ürünün tamamının sigorta tarafından karşılanmadığını söyledi ve alternatif ürün var mı diye arayabileceğini söyledi. Ne kadar para vermem gerekeceğini sordum ve 15 avro cevabını alınca bir şey değilmiş dedim. Aslında bu aletin içinde 15 avroluk bir malzeme olduğunu da sanmıyorum ama neyse.

Hasta olmayı genelde sevmem ama hasta olduğumda da onları komik durumlara çevirmeye çalışırım. Başkalarına moral vererek moral bulma çabası gibi. Her zaman başarılı olamıyorum ama bu kadarını da yapmasam çıldırabilirim. Bu sefer de atelimi renkli oyun hamurlarıyla Thanos’un eldivenine benzettim. Bu sırada epey kurumuş oyun hamurlarını bebek yağı ile yeniden yumuşatabileceğimi keşfetmiş oldum. Bakalım parmağımı şıklattığımda kimler yok olacak?

Sinyaller bu kadar mı? Hayır. Hafta sonu ile hafif bir depresiflik de geldi yerleşti. Oysa tek elle epey iş de yaptım. Algoritma simülasyonlarıma yeni bir tanesini ekledim. Wikipedia’nın eksik bulduğum yanlarından biridir bu. Bilgi var ama animasyon ve simülasyon yok gibi. Oysa algoritma gibi şeylerin işleyişini seyredebilmek öğrenmeyi çok daha kolaylaştırabilir. Koca açığı tek başıma kapatamam heralde ama bir yerden başlamak lazımdı.

Bu depresif durumlar nereden geliyor bilmiyorum. İnsanlar mutlu. Tatil dönemi başlıyor. Bu mu rahatsız ediyor beni? Kim bilir? Belki de yine başka stresler birikti içimde. Bu gibi durumlarda hobilere saldırırdım ama genelde onlar da bir işe yaramazdı. Yani verimli olurdum olmasına da bu his kaybolmazdı. En iyisi biraz dinleneyim. Zaten atel kullanırken pek bir şey yapmak mümkün olmuyor.

Rabin-Karp algoritması

Bu yazıda metin içinde yazı aramada kullanılan bu algoritmayı basitçe tanıtıp simülasyonunu göstereceğim. Basit yazı arama algoritmasında her adımda aradığımız yazıyı metin üzerinde kaydırıp tek tek aynı pozisyonda aynı harflerin olup olmadığına bakmıştık. Yani aradığımız yazıyı bulana kadar her adımda ilk farklı harfe rastlayana kadar her harfi defalarca karşılaştırmıştık.

Bu algoritmada aynı harfleri defalarca karşılaştırma sorununa ilginç bir çözüm sunuluyor. Rolling hash denen bu algoritmayı daha önceki yazımda ele alıp simülasyonunu vermiştim. Kabaca aynı yazı parçalarının hash değerleri aynı olmalıdır fikrinden yola çıkılarap geliştirilmiş bir algoritma bu rabin-karp algoritması. Tabii ki her adımda kaydırılmış yazı parçalarının hash değerlerini tekrar tekrar her harfi kullanarak hesaplamamak için rolling hash kullanılıyor. Metinde aranan parça ile aynı hash değerini veren bir parça bulunduğunda bu parçanın harflerini tek tek karşılaştırmak gerekiyor çünkü farklı metin parçaları aynı hash değerlerini üretebilir.

Simülasyonda da bunu yapıyorum. Her kaydırmadan kontrol edilen metin parçası gri renkle işaretleniyor. İlk adımda hash değeri bütün harf değerleri üzerinden hesaplanıyor. Ardından her kaydırmada rollin hash algoritması kullanılarak yeni parçanın hash değeri daha hızlı hesaplanıyor. Eğer bir yerde aynı hash değerleri bulunursa bu sefer o alt parçanın bütün harfleri aranan yazının harfleriyle tek tek karşılaştırılıyor. Eğer harfler aynı ise bu harf yeşile boyanıyor, değilse kırmızı. Bütün harfler yeşil ise o zaman aradığımız yazıyı bulduk demektir ve algoritma sonlanıyor.

Bu linkten simülasyonu kullanabilirsiniz.