Wednesday, December 12, 2007

 

YouTube - The Shadows - The Savage (1961)

YouTube - The Shadows - The Savage (1961)

Monday, December 10, 2007

 

Bölüm 4 - "Poor Man's Database System"

Başlık için uygun bir türkçe tanım bulamadığım için Poor Man's Database System'i kullanmak zorunda kaldım. Bu defa 80 li yılların başında Otosan da geliştirdiğimiz "hierarchical" veri tabanı yazılımını anlatacağım. O günün bilgi teknolojileri koşullarını tekrar özetlersem, buzdolabı büyüklüğünde CPU, ekran bağlantısı henüz kavram olarak bile yok, max RAM 128 KB, max disk 300 MB, yazılım olarak sistemde sadece OS, Cobol compiler, ve de sequential ile random access file system mevcut. Tüm uygulamalar batch update mantığı ile hazırlanıyor, (seq dosyaların toplu halde güncellenmesi). Sistem bir de random access dosya erişimine izin veriyor ancak primary key nin ne olduğuna program içerisinde siz karar vermek zorundasınız.
Zaman geçip bizim malzeme planlama sistemi kapsam olarak genişledikçe, ve de dosya büyüklükleri arttıkça kullanıcılardan raporları seçme parametreleri ile hazırlama talepleri gelmeye başladı, örneğin sadece x malzemesinin stokları, veya y satıcısına verilmiş siparişler. Seq dosya organizasyonunda bu istekleri karşılamak için tüm dosyanın baştan okunmaya başlanılması zorunlu, arada seçilmiş kayıtlara tek okumada ulaşmak imkansız. Bu da zaman kaybı demek.
Ben de okuyarak çözüm arıyorum. James Martin in Database Organizations kitabında Random Access file organization techniques'i okuduktan sonra bu işi yapabileceğimize karar verdim.
Yöntem özetle şu şekilde çalışıyor:
1) Kendinize random erişeceğiniz dosya için bir büyüklük seçiyorsunuz, örneğin başlangıç için 20000 kayıt. Buna bağlı olarak da böldüğünde çoğunlukla tek sayı üretecek bir bölen, mesela 20009.
2) Yaratacağınız tabloda primary key olarak belirlenen alanı tesbit edip bir şekilde bundan sayısal bir değer üretecek bir algoritma hazırlayacaksınız. Biz, malzeme ana kütüğü için malzeme numarasını primary key olarak seçmiştik. Bu, alfanümerik bir alan olduğundan, basit bir yöntem ile alfanümerik bu alanı Cobol da nümerik olarak Redefine edince sonuç bir sayısal değer oluyordu.
3) Hashing algorithm in hazırlanması. Burada da sayısal değere dönüştürülmüş stok numarasını daha önce kararlaştırılan bölen (20009) a bölünce kalan, o stok numarasının random key değerini verir. Örneğin, 78VB9006AA stok numarasını nümerik değere dönüştürürsek 39125446 (gerçekte farklı bir sayı olur) ve de bunu 20009 a bölersek kalan 7851 sayısı bu kaydın asıl random primary key değeri elde edilir. Dolayısiyle dosyadaki 7851. nci kayıt 78VB006AA stok numarasına ait olacaktır. Bu algoritma da 2 hususa dikkat etmek gerekir:
bölme sonucu kalan sıfır çıkabilir veya
bölme sonucunda çıkan key değeri ile ilgili kayıt okunduğunda orada daha evvel kaydedilmiş başka bir stok numarasının olduğu görülür (synonym durumu) .
Şimdi bu 2 sorun ile nasıl başa çıkılır:
Random Access olarak erişilecek dosyada hashing sayısından sonrası overflow alanı olarak tesbit edilir. (örneğimizde 20010 dan başlamak üzere). Çünkü hiç bir zaman bölmenin kalanı 20009 veya daha büyük bir sayı olmayacaktır. Bu durumda algoritma 0 veya synonym ile sonuçlanırsa
kayıt overflow alanındaki ilk boş yere kaydedilir.
Bu mekanizmayı çalıştırabilmek için kayıt yapısında olması zorunlu alanlar:
Kayıt tipi (0 ise boş bir kayıt/ 1 ise dolu bir kayıt/ 5 ise iptal kayıt)
Primary key değeri
Stok numarası
Synonym kayıt adresi

Şimdi bir örnekle algoritmayı çalıştıralım:
78VB9006AA stok numarası için rutin 7851 i verdi.
Read Invalid ile 7851. nci kaydı okuduk, kayıt tipi 0-->bu kaydı kullanabiliriz, buna göre:
primary key = 7851
kayıt tipi = 1
Stok numarası = 78VB9006AA
Synonym kayıt adresi = 0 olarak kayıt güncellenir.

daha sonra 80AA0001BC için rutin tekrar 7851 değeri verdi. 7851. kayda Read Invalid sonrası kontrolde kayıt tipi = 1 (geçerli bir kayıt) ama stok numarası (78VB9006AA) # 80AA0001BC. Bu durumda overflow alanındaki ilk boş kayıt 20010 olduğundan, 78VB9006AA nın kaydına synonym kayıt adresi olarak 20010 u yazıp bu kaydı güncelleriz, daha sonra da 20010. ncu kaydı okuyup 80AA0001BC yi yaratırız. Bu mantık birden fazla synonym olması durumunda da geçerlidir, zincirde her okunan kayıtta stok numarası kontrol edilir, eşit olmama durumunda varsa synonym okunur yoksa zaten söz konusu stok numarası sisteme kayıtlı değildir. Dikkat edilmesi gereken başka bir önemli konu kayıt iptalleridir. Random Access organizasyonda kayıtların fiilen silinmesi söz konusu olamayacağından, yapılması gereken şey ilgili kaydın içini boşaltmak ve kayıt tipini de 0 a dönüştürmek. Ancak bu durumda, kayıtta synonym adresi dolu ise artık o kayda erişim imkansızlaşacağından yapılması gereken kaydın içini boşaltmak yerine kayıt tipini değiştirmek (örneğin 5 yapmak) yeterli olacaktır. Dosyaya erişim rutinlerine kayıt tipi 5 ise bu iptal edilmiş bir kayıttır mantığı sorunu çözecektir.
Bu mantıkla ihtiyaç duyulan her dosya için random access erişim sağlanabilir. Biz de malzeme ve satıcı ana kütüklerini bu yöntem ile oluşturup seçmeli erişim olanağını kullanıcılara sağlamıştık.
Buna bağlı olarak da diğer bir sorun satınalma siparişlerine malzeme veya satıcı kodundan erişebilme durumu idi. Kısaca özetlersem, her malzeme için her ay bir veya daha fazla satıcıya satınalma siparişi hazırlanırdı. Planlama sürekli olarak a malzemesine hangi siparişler açılmış, veya b satıcısında hangi malzemelerin siparişleri var sorusunu sorardı.Bu sorunu da pratik bir şekilde çözmek durumunda idik. Kullandığımız yöntem "linked lists" oldu.
Bu da 5. Bölümün konusu olacak. "Linked Lists" i bizim programlara eklediğimizde de zaten sonuç bir "network database" uygulaması idi. 0 lisans ücreti ile biz uzun bir süre şirketin malzeme planlamasını bir veri tabanı ortamında yürüttük. Sonraları sisteme ekranlar bağlanmaya başlandığında bizim programların alt yapısı stok numarası veya satıcı kodu girerek bilgilere ulaşmaya imkan sağladığından interactive mode a geçmek çok kolaylaşmıştı.

 

GENCOB

Bu satırlar sadece Cobol programcıları içindir, diğerlerinin okumasında yarar yoktur!

Meslek yaşamımda sadece Cobol kullandım, binlerce program yazdım. Son zamanlarda bir şeye dikkat ettim, tüm Cobol programlarında iskelet aynı:
Identification Division.
Environment Division.
Data Division.
Procedure Division.
Bunların içinde de özellikle Environment Division da File Select ler; Data Division da da File Definition lar var. Bir programda kullanılacak File sayısı n ise buna bağlı olarak 1*Select File Assign to.., 1*FD File, 1*File Status, 1*Open File, 1*Close File olmak üzere 5n Cobol satırı zorunlu. Dolayısiyle ben bir program yazayım, parametre olarak kullanılacak file name leri vereyim, program çıktı olarak ta bir iskelet Cobol kaynak program yaratsın. Epey uğraştım ama sonunda istediğim oldu. Kullandığım yöntem de String komutu ile Cobol satırlarını oluşturmak ve de bunları editör ün okuyabileceği bir dosyaya kaydetmek. Örneğin:
String "Select " File-name-1 "Assign To Disk" giving Wsatır..
Write Satır from Wsatır.
Burada dikkat edilmesi gereken önemli husus String leri oluştururken kürsör pozisyonunun 72 i aşmaması. Bunun için de sürekli olarak kürsör posizyon değerini saklamak ve her yeni String öncesi pozisyon değerini kontrol etmek.
Bu şekilde önemli iş gücü tasarrufu yaptık. Sonra ben bu programı Internet de AS/400 forumuna gönderdim, kullanılabilir olarak değerlendirdiler ve de bana 50$ lık bir çek gönderdiler.
Bir Google arama yaparsanız Internetin derinliklerinde GENCOB utility Web sayfasına hala ulaşılabiliyor.
System iNetwork (formerly iSeries Network)

The GENCOB Utility by Selim Bozok Give Selim Bozok's GENCOB utility a list of files and other pertinent information, and it generates a skeleton Cobol ...
www.systeminetwork.com/.../index.cfm?fuseaction=ListArticlesByIssue&ID=328&pb_publicationid=3 - 38k - Cached - Similar pages - Note this

Cobol bir zamanlar dünyada en çok kullanılan programlama dili idi, ama hiç bir yazılım firmasının aklına
GENCOB benzeri bir yazılım geliştirme aracı hazırlamak gelmemiş. Bu yazının özeti de her zaman
farklılık yaratılabilir, yeter ki istenilsin.

 

The Shadows

Saatler dışında diğer bir merakım da The Shadows gitar topluluğudur. 1962 de ilk albümleri The Shadows u alıp dinledim, aradan 47 sene geçti, tüm plak ve CD lerini topladım, hala dinlerken ilk günkü kadar keyif alırım. (Bilmeyenler için The Shadows tüm zamanların en müthiş gitar topluluğudur. Cliff Richard a eşlik ederek müzik çalışmalarına başladılar, ama solo plakları da en az Cliff Richard kadar ilgi uyandırdı. The Beatles ortaya çıkıncaya kadar İngilterenin 1 numaralı pop müzik topluluğu idiler). Tabi 60 lı yıllarda The Shadows dinlemenin tek kanalı plak ve radyo; resim ise sadece plak kapakları ile sınırlı. Derken The Young Ones (Gençlik Gençlik) filmi İstanbul da vizyona girdi. Filimde baş rolde de Cliff Richard ve The Shadows. Heyecandan yerimizde duramıyoruz, sonunda bu müthiş topluluğu sahnede izleyebileceğiz. Sonunda bir yaz akşamı film Bostancı da bizim semtteki yazlık sinemaya geldi. Sinemanın işletmecisi de mahalle arkadaşımız. Tüm arkadaşlarımla tahta sandalyelere kurulduk, ağzımız açık, gözümüzü kırpmadan seyrettik. Filmin unutulmaz bir finali vardır; konser salonunda çığlık çığlığa bağıran seyirciler önünde The Shadows kırmızı elbiseleri ve kırmızı Fender Stratocaster gitarları ile The Savage ı çalarlar, daha sonra da sahneye Cliff Richard çıkar, hep birlikte We Say Yeah! söylenir.
özellikle The Savage çalınırken Bruce Welch, Jet Harris ve Hank Marvin in öne doğru yürüyüşlerini hiç unutamam. Bir ara kamera Hank Marvin in kırmızı Fender ini yakın planda gösterir. Hele bu sahne bizim için sanki tüm filmdir.
Neyse filim bitti, biz hep finali konuşuyoruz. Sonunda sinema işletmecisi arkadaşıma rica ettim, makaradan bana 2 kare kesti (o unutulmaz Hank Marvin ve Fender i yakın plan). Ben o 2 küçük asetat film karesine bakarak çok mutlu olurdum. Senelerce sakladım, sonra bir taşınma sırasında kayboldu.
Bugün Internet de Youtube a girip Cliff Richard and The Shadows araması yapınca o konser klibini seyretmek mümkün. Yapay zeka üzerine yayınlanmış eserleri olan Ray Kurzweil bir kitabında 2030 seneleri civarında CPU ların insan beyninden daha güçlü olacağını ve de insanların beyinlerine takılacak bir chip ile bilgisayar olmadan beyin dalgaları ile WIFI üzerinden Internet e bağlanabileceğini yazar. Belki de o günlerde bu satırları okuyanların aklından şu düşünceler geçecek: eskiden hayat ne kadar da zormuş, insanlar önce müzik kliplerini sadece filmlerde izlemiş, sonra bilgisayar aracılığı ile klavye kullanmak gibi zorluklara katlanmışlar, şimdi ise benim The Shadows u dinlemek ve gözümün önüne getirmek için düşünmem yeterli oluyor. Ben gelişme diye işte buna derim!

 

Unutulmaz bir Bilanço Anısı

Sene 1984 Şubat, Otosan da bilanço dönemi, ve buna bağlı olarak da Koç Holding iç denetim ekibinin inceleme, diğer bir deyişle teftiş zamanı. Tüm muhasebe ve de Bilgiİşlem yoğun bir tempoda çalışmakta. Henüz ekran kullanımı yaygınlaşmadığı için hesap incelemeleri için top top dökümler hazırlanmakta. Motor üretimi ve kamyon montajı İnönü fabrikasına kaydırılmış, ancak fabrikanın bilgisayar sistemi olmadığından stok ve muhasebesini biz tutuyoruz. Üretim girdileri yüksek fiyatlı olduğundan sene sonu sayım sonuçları ile kaydi envanter arasındaki farklılıklar da çok önem arzediyor. İç denetim raporu hazırlanabilmesi ve bilançonun kapatılması için de öncelikle stok hesaplarındaki farkların denetlenmesi şart. Bunın için de muhasebe maliyet şefi (Tual Hacaloğlu) fabrikanın envanter raporunu alıp İnönü ye gider, amaç sayım farklarını incelemek, hataları gidermek ve de denetime gerekli açıklamaları yapabilmek.
Aradan bir kaç gün geçer, muhasebeden haber gelir, yarın sabah toplantı var, İnönü stokları konuşulacak.
Sabah toplantı salonuna gidilir, Otosan mali müdürlük komuta heyeti, Koç Holding iç denetim koordinatör ve yardımcısı (geleceğin Füsun Bozok'u), bir de ben. Toplantıya başlanır:
Koordinatör: Evet Tual, neler yaptın anlat.
TH: Efendim İnönü de tüm sayım ve kaydi envanteri karşılaştırdım. Dönüşte gece trende uyumadım, tüm stok sapmalarını bilgisayar çıktısında fosforlu kalemle işaretledim. Listeden siz sorun ben de açıklayayım.
Koordinatör: Olur, listeyi ver bakalım.
Koordinatör bir top bilgisayar çıktısını alır, başlar sayfaları çevirmeye.
Koordinatör: Tuğal, ben bir şey anlamadım, çizili dediğin satırlarda yazı yok, sadece boş satır var.
TH: Aman efendim olamaz, bütün gece işaretledim, bir de ben bakayım.
Hepimiz rapor üzerine eğiliriz, gerçekten de işaretli satırların mürekkebi uçmuş, ortada hiç yazı kalmamış. Nedeni de fosforlu kalemde kullanılan alkol self copy bilgisayar kağıdı ile kimyasal etkileşim yapmış, alkol, buharlaşırken de satırlardaki mürekkebi, beraberinde de Tual in çalışmasını almış götürmüş. Koordinatör kızacak ama kızamıyor, kabahatin kimde olduğuna karar verememiş. Bizler de gülmek istiyoruz ama saygısızlık etmemek için tavana bakıyoruz.
Sonunda koordinatör İnönü fabrikası stok farklarını incelemeden bilançoyu kapattı. Geriye de sadece bu unutulmaz anı kaldı.

This page is powered by Blogger. Isn't yours?