Linux 2.6.28 Kerneline İlk Bakış

Linux 2.6.28 kerneli resmi olarak yayınlandı. İnternet üzerinde karşıma çıkan bir ilk bakış yazısını okurken bir yandan da Filistin'de, Gazze'deki olaylarla ilgili bir yazıyı okuyordum. İnsan bir an düşünüyor. Bu ne biçim çelişkidir. Linux kerneli yenilikleriyle beraber oldukça kolaylaştırıcı, yararlı şeyler getirmiş. Ama neye yarar? İşimi kolaylaştıracak, artık daha hızlı bir şekilde disklerimi hatalara karşı tarayabileceğim, grafik kartım daha verimli kullanılacak. Falan Filan. E Peki Gazze'de veya dünyanın başka bir yerinde savaş nedeniyle, düzen nedeniyle, açlık nedeniyle, yokluk nedeniyle ölen ve hayatı boyunca bir bilgisayarı olmayacak, bilgisayar görmeyecek olan çocuğa, insana ne faydası var bu kernelin? Bilim ve teknoloji artık çığrından çıkmıştır. İnsanlık için bir işe yaradığı yoktur. Tamamen egemenlere yaramaktadır. Eğer bir Filistin'li çocuğun ölmesine seyirci kalıyorsam ve umursamıyorsam, kernelin yeni sürümü çıkmış, bu da bana yılbaşı hediyesi olmuş neye yarar.

Dünyayı verelim çocuklara hiç değilse bir günlüğüne
allı pullu bir balon gibi verelim oynasınlar
oynasınlar türküler söyliyerek yıldızların arasında
dünyayı çocuklara verelim
kocaman bir elma gibi verelim sıcacık bir ekmek somunu gibi
hiç değilse bir günlüğüne doysunlar
bir günlük de olsa öğrensin dünya arkadaşlığı
çocuklar dünyayı alacak elimizden
ölümsüz ağaçlar dikecekler
Nazım Hikmet

Ayrıntıların ayrımında olmak

GNU lisanslı içerik yönetim sistemi Drupal ile şimdiye kadar bir çok site yaptım (Bir ara Drupal'i size anlatır temel kurulumun nasıl yapıldığını, sizinle paylaşırım). Sitesinden son versiyonu indirip sıkıştırılmış dosyaları açıyor ve ftp ile site sunucunuza(host) yüklüyorsunuz. Siteyi kurmak çok uzun süren bir işlem değil; ancak benim saatlerimi aldı: Yüklediğimde izinlerle ilgili bir hata veriyordu, yani "You don't have permission to access / on this server" hatası. İnternette çözümler aradım, .htaccess dosyasına müdahelelerde bulundum. Dosyaları çalışan sitemin alt klasörüne koyuyor ve alan ismini oraya yönlendiriyorum. İşin tuhaf yanı web sitem ve benzer şekilde alt klasörlerde barındırdığım diğer siteler normal çalışıyordu. .htaccess'te yaptığım değişikliklerle kurulum sayfasını görüyor; ama tasarımını düzgün göremiyordum. Farklı html sayfalarıyla denedim çalıştı, dosyaların izinlerini değiştirip denedim yine de tasarımı tam görülmüyordu. Firefox'ta sayfa biçemiyle ilgili bir sorun da değil. Bilgisayarımı açtım kapattım( sorun çözülmüyorsa başvurulan klasik ilkel yöntem, bazen işe yarar). Başka bilgisayarda denedim, olmadı. Servis sağlayıcımın Drupal ile ilgili önceden bir çok vukuatı var, o olmalı sorun. Değilmiş... Drupal dosyalarını kendi bilgisayarımdan yükledim. Tabii; başka yerden yükleyemem; ama dosyaları bulundurduğum yer ayrı bir disk bölümü ve kullanıcı olarak o bölüme erişme yetkilerim kısıtlı ve sıkıştırılmış dosyaları orada açtığım için tüm dosyaların izinleri de o şekilde ayarlanmış. Yüklediğimde de aynen kalmış. Ben dizinlerin izinlerini değiştirsem de en içteki dosyaları etkilemediği için tasarımsız ve eksik olarak görülüyormuş.Sonuç olarak şunu anladım: bazen sorunların gerçekten "kaynağı"na inmek gerekiyormuş ve sadece ayrıntılar değilmiş önemli olan, o ayrıntıların ayrımında olmak da önemliymiş.

Tahir Özgür : Öykülerin Fotoğrafı

"Öykülerin fotoğrafını çekmek istiyorum

O'nu, bir pasajın girişinde gördüm...

Elinde şemsiye vardı...

Ayağında ise sandelet...

Üzerinde kısa kollu bir gömlek...

Yanında boş bir tabure....

Arkasında yeşil bir duvar...

Bir taburenin üzerinde uyukluyordu...

...Ve yüreğim ağladı o an...

Bayramdan bir gün önceydi....

Yani, "Arefe" günü..

Yani herkesin karınca kaderince bayram hazırlığı yaptığı, çarşıda, 'iğne atsanız yere düşmez' denilen günlerden bir gün...

Alışverişten geliyor ve işyerime çıkıyordum..

İşte öylece gördüm O'nu orada..."

Devamını okumak için lütfen Öykülerin Fotoğrafı adresini tıklayın.

(Sürekli takip ettiğim Fotoritim e-Fotoğraf dergisinden)
(Tahir Özgür'ün özgeçmişi)

GNU/Linux'te kaynak kodtan kurulum yapmak

GNU/Linux işletim sisteminde kaynak kodtan program kurma
Günümüzde artık neredeyse bütün GNU/Linux'lerin (Slackware dışındakiler mi demeliyiz :) ) kullanıcının işini kolaylaştıran bir paket yöneticisi var. Paket yöneticisi olmasa bile kendi özel paket sistemleri (Debian tabanlı sistemler için deb uzantılı, Red Hat sistemler için rpm uzantılı) var. Bu kendi özel paketlerini genellikle çift tıklama ile kurabiliyorsunuz. Paket yöneticisi de çoğu GNU/Linux kullanıcısının bileceği gibi işleri oldukça kolaylaştırıyor. Paketi arıyorsunuz, seçiyorsunuz ve kur diyorsunuz. Paket gerekli bağımlılıklarıyla beraber kuruluyor. Güncellemesi geldiği zaman görebiliyorsunuz, güncel sürümüne sorunsuz bir şekilde yükseltebiliyorsunuz.

Buraya kadar herşey güzel. Diyelim ki paket depolarında olmayan, ve sadece kaynak koduna sahip olduğunuz bir programı kurmak istediniz. Ne yapacaksınız? Paket depolarında aradığı programı bulamayanların ve bir şekilde kaynak koda erişenlerin sorduğu en temel sorudur bu. Özellikle kullanıcı kendisini “uzman” olarak görmüyorsa bu işlem karmaşık ve zor bir işlem olarak gözünü korkutacaktır.

Bu kaynak kod dosyaları arasında aşama aşama ne yapılması gerektiğini anlatan README (Oku Beni) dosyaları vardır. Yoksa, o kaynak dosyasının indirildiği sitede falan olması gerekir. Bütün bu dosyalarda GNU/Linux sistemler için temel aşamalar anlatılır, elbette o program için kurulması gereken bağımlılıklar, kütüphaneler varsa bu “oku beni” dosyasında öncelikle o paketlerin, programların, kütüphanelerin nasıl kurulacağı anlatılır. Bu bağımlılıklar kurulduktan sonra, sıra asıl programı kurmaya gelecektir. Kaynak kodtan kurulma işlemleri aşağıdaki temel adımlardan oluşur. İndirdiğiniz sıkıştırılmış dosyanın tar.gz uzantılı olduğunu varsayarak aşağıdaki aşamalar anlatılmıştır (Bir terminal kullanarak bu komutların girilmesi gerekmektedir):

  • tar xvzf paketismi.tar.gz (veya tar xvjf paketismi.tar.bz2) Bu kod yardımıyla sıkıştırılmış dosyayı açmak için kullanılmaktadır. (Dilerseniz, eğer masaüstü ortama erişiminiz varsa grafiksel bir uygulama ile de sıkıştırılmış dosyayı açabilirsiniz -açabilirsiniz derken genişletmeyi, “extract” kavramını kastediyorum)
  • Açılan paketin oluşturduğu klasöre girmemiz lazım : cd paketismi
  • ./configure yardımıyla derleme öncesi gerekli yapılandırmaların gerçekleşmesini sağlıyoruz.
  • make komutuyla da derleme işleminin başlatılmasını tetikliyoruz.
  • Daha sonra make install komutuyla programın kurulumunu tamamlarız.

Bu komutların ne işe yaradığı, ne olduğu ayrıntılı bir yazı konusu aslında. Temel olarak bunları bilmeden de çoğu paketi kurmak, oluşan hatalar doğrultusunda gerekenleri yapmak sorunları çözecektir. “make” GNU tarafından üretilmiş olan ve çalıştırılabilir veya diğer kaynak kod olmayan dosyaların üretilmesini kontrol eden bir yazılımdır. “makefile” denilen bir dosyadan programın nasıl üretileceğini keşfederek programı üretir (gcc'yi de araştırmanız lazım :), ya da kolay olsun bağlantıları inceleyin ;) ).

Not: Burada anlatılanlar C, C++ kaynak kodlarından kurulumu (derlemeyi) anlatmaktadır. Farklı programlama diline göre, farklı aşamalar olacaktır. Her kaynak koduyla beraber dağıtılan oku beni dosyaları bu işlemi anlattıkları için mutlaka izlenmesi ve okunması gereken belgelerdir. Bu işlemi öğrenmenin en güzel yolu sürekli deneyerek, hataları okuyup çözümler bulmaya çalışarak ve forumlarda hata mesajları için yardım isteyerek mümkündür.

Bağlantılar:
http://www.tuxfiles.org/linuxhelp/softinstall.html 
http://www.newlinuxuser.com/howto-install-deb-rpm-and-source-code-files/
http://linuxpoison.blogspot.com/2008/02/howto-install-software-from-source-code.html
http://www.gnu.org/software/make/ 
http://gcc.gnu.org/ 

Rastgele Sayı Üretme

Bir çok uygulaması olan rastgelelik için, programlarda rastgele sayı üreteçleri kullanılır. Rastgele sayı üreteçleri fiziksel veya yazılımsal bir cihaz olabilir. Fiziksel cihazlara örnek olarak para atma, rulet tekeri (diğer şans oyunları için), Zener diodlarındaki termal gürültü verilebilir. Gerçek anlamda rastgelelilik için özellikle Entropi kaynakları (radyoaktif bozulma, atmosferdeki radyo dalgaları gürültüsü)kullanılabiliyor.

Bilgisayarlara baktığımızda rastgelelik için Yalancı (Pseudo) Rastgele Sayı Üreteçleri dediğimiz algoritmalar kullanılıyor. Bu algoritmalar (PRNG) rastgelelik özelliği olan uzun sayılar oluşturur. En sık karşılaşılan bir PRNG Doğrusal Congruential üreticidir. Bu üretici sayıları üretmek için aşağıdaki tekrarı kullanır:

X_{n+1} = (a X_n + b)\, \textrm{mod}\, m


Kaynak:
Random Number Generation
Bir cevap

MVC ile Java SE ortamında uygulama geliştirme

Model-View-Controller (MVC) nedir?

Grafiksel kullanıcı arayüzü (GUI – Graphical User Interface) kütüphanelerini (AWT, Swing, ..) kullanarak yazılım geliştirdiyseniz, MVC tasarım deseniyle karşılaşmış olmanız oldukça olasıdır. MVC ilk olarak 1979 yılında Xerox Palo Alto araştırma merkezinde Smalltalk geliştiricisi olan Trygve Reenskaug tarafından, veri erişimi, iş mantığını ve kullanıcıya gösterilen davranışları birbirinden ayırmak için ortaya atılmıştır. Daha kesin olarak açıklayacak olursak MVC üç parçaya bölünebilir:



Model: Model veriyi ve bu veriye erişim ile güncellemeyi yöneten kuralları temsil eder. Kurumsal yazılımlarda, model genellikle gerçek yaşam sürecinin yazılım karşılığı olarak hizmet eder.

Görünüm (View):Görünüm modelin içeriğini ortaya çıkarır. Model verisinin tam olarak nasıl gösterilmesi gerektiğini tanımlar. Eğer model verisi değiştiğinde, gerektiğinde görünümde temsili güncellemelidir. Bu itme (push) yaklaşımı kullanımıyla yapılabilir, bu yaklaşımda görünüm model üzerindeki değişiklikler için kendini kaydeder (değişiklik durumunda model katmanı görünümü tetikler). Bir diğer yaklaşım olan çekme (pull) yaklaşımında ise görünüm en güncel veriye ulaşmak için modeli çağırmakla yükümlüdür.

Denetleyici (Controller): Denetleyici kullanıcının görünümle olan etkileşimlerini, modelin gerçekleştireceği eylemlere çevirir. Standalone GUI istemcisinde kullanıcı etkileşimli düğme tıklamaları veya menü seçimleri olabilir, kurumsal web uygulamalarında ise GET ve POST HTTP istekleri olarak gözükürler. Kapsama bağlı olarak, denetleyici kullanıcıya göstermek için yeni bir görünüm üretebilir(sonuçların web sayfası gibi).


Her ne kadar farklı mimariler bu üç bileşenin farklı şekillerde etkileşmesini sağlasa da, Şekil 1'de MVC tasarım deseninin genel kabul görmüş bir gerçekleştirimini görebilirsiniz (Sun BluePrints Catalog'dan alınma):

Şekil 1. Genel kabul görmüş bir MVC gerçekleştirimi


MVC Bileşenleri Arasında Etkileşim


Bu bölümde Şekil 1'deki gerçekleştirime Java platformu (Java SE 6) bağlamında daha derinlemesine bakacağız. Model, görünüm ve denetleyici nesneleri ilklendiği anda aşağıdakiler oluşur:

  1. Görünüm kendisini model üzerinde dinleyici olarak kaydeder. Modelin altındaki verideki herhangi bir değişimde doğrudan değişim bildirimi yayını ortaya çıkar, bu görünüm tarafından alınır. Bu daha önce bahsettiğimiz itme yaklaşımının bir örneğidir. Bu yaklaşımda model ne görünüm, ne de denetleyicinin farkında değildir, sadece değişim bildirimlerini tüm ilgilenen dinleyiciler için yayınlar.

  2. Denetleyici, görünüme bağlanmıştır. Bu tipik olarak görünümde gerçekleştirilen herhangi bir kullanıcı eyleminin, denetleyici sınıfında kayıtlı bir dinleyici metodunu başlatması (invoke) anlamına gelmektedir.

  3. Denetleyici alttaki modele bir referans barındırır.


Kullanıcı görünümle etkileştiği anda, aşağıdaki eylemler oluşur:

  1. Görünüm bir oluşan GUI eylemini -örneğin bir düğmeye tıklamak veya kayan çubuğu hareket ettirmek- algılar. Bunu bu tip bir eylem oluştuğunda çağrılmak üzere kaydedilmiş bir dinleyici metodu kullanarak gerçekleştirir.

  2. Görünüm denetleyici üzerindeki uygun metodu çağırır.

  3. Denetleyici modele erişir, kullanıcının eylemine bağlı olarak uygun bir şekilde güncelleme yapma ihtimali vardır. Eğer model değişirse, ilgili dinleyicileri, görünüm gibi, değişim hakkında bilgilendirir. Bazı mimarilerde, denetleyici ayrıca görünümü güncellemekle de sorumlu olabilir. Bu Java tabanlı kurumsal uygulamalarda sık karşılaşılan bir durumdur.


Şekil 2 bu etkileşimi daha ayrıntılı olarak göstermektedir.

Şekil 2. MVC kullanan bir Java SE uygulaması

Daha öncede söylendiği gibi, model görünüme bir referans içermez, ancak eylem bildirme yaklaşımını değişimle ilgilenen taraflar için kullanır. Bu güçlü tasarımın bir sonucu birden fazla görünüm aynı alt modeli kullanabilir. Modelde bir değişim olduğunda, her bir görünüm bu özellik değişiminden haberdar olarak, kendisini gerektiği şekilde güncelleyebilir. Örneğin Şekil 3 aynı veri modelini kullanan iki farklı görünümü göstermektedir.



Şekil 3. Aynı modeli kullanan birden fazla sayıda görünüm

MVC Tasarımını Değiştirmek


Son zamanlarda daha fazla geçerli olan bir MVC tasarımı denetleyiciyi model ve görünüm arasına yerleştirmektedir. Bu tasarım, Apple Cocoa anaçatısında sıklıkla görülür, Şekil 4'te görülebilir.

Şekil 4.Denetleyicinin Model ve Görünüm arasında olduğu bir MVC tasarımı

Bu tasarımla, daha geleneksel sürüm arasındaki birincil fark, model nesnelerindeki durum değişimlerinin bildirimlerinin görünüme denetleyici aracılığıyla aktarılmasıdır. Böylece, denetleyici model ve görünüm arasındaki veri akışını iki yönlü olarak yönetmiş olur. Görünüm nesneleri, her zaman olduğu gibi, kullanıcı eylemlerini model üzerindeki özellik güncellemelerine dönüştürmek için denetleyiciyi kullanır. Ek olarak, model durumundaki değişiklikler görünüm nesnelerine uygulamanın denetleyici nesneleri üzerinden iletilir.


Böylece, bütün üç bileşende ilklendiğinde, görünüm ve modelin ikisi de denetleyiciye kaydedilir. Kullanıcı görünümle etkileştiğinde, olaylar neredeyse aynıdır:

  1. Görünüm bir oluşan GUI eylemini -örneğin bir düğmeye tıklamak veya kayan çubuğu hareket ettirmek- algılar. Bunu bu tip bir eylem oluştuğunda çağrılmak üzere kaydedilmiş bir dinleyici metodu kullanarak gerçekleştirir.

  2. Görünüm denetleyici üzerindeki uygun metodu çağırır.

  3. Denetleyici modele erişir, kullanıcının eylemine bağlı olarak uygun bir şekilde güncelleme yapma ihtimali vardır. Eğer model değişirse, ilgili dinleyicileri, görünüm gibi, değişim hakkında bilgilendirir. Ancak bu durumda değişim denetleyiciye gönderilir. Denetleyicide gerekli görünüm değişiklikleri için Görünüm katmanıyla haberleşir.


Bu tasarım neden kullanılmalıdır? Bu değiştirilmiş MVC, modeli görünümden tamamen ayırmak için yardımcı olur. Bu durumda, denetleyici kayıtlı olduğu bir veya daha fazla modelde bulmak istediği model özelliklerini zorlayabilir. Ek olarak, kayıtlı olan bir veya daha fazla görünüm için modelin özellik değişimlerini etkileyen metotları sağlayabilir.

Kaynak:Java SE Application Design With MVC

GNU/Linux ile ilgili açık kaynak kitaplar

Altmışın üzerinde açık kaynak GNU/Linux ile ilgili elektronik kitaplara (kitapların hepsi İngilizce)(Kategoriler şeklinde:Kurulum ve başlangıç, güvenlik, sistem yönetimi,programlama, göç{migration}, kernel, Ubuntu, Redhat, Fedora, Knoppix, Debian) şu bağlantıdan erişebilirsiniz.

Shichinin no samurai




Sonunda Yedi Samuray (Shichinin no samurai) filmini izleyebildim :). Sürekli olarak adını ve methini duyduğum Akira Kurosawa filmi. Uzunluğu nedeniyle kesik kesik izlemiş olsam da bir bütün olarak kavrayabildiğime inanıyorum.

Japonya'nın bir dönemini (samurayların aşırı derecede arttığı ve ateşli silahların artmasıyla onlara rağbetin azaldığı diyebilir miyiz?) anlatan film çiftçileri, samurayları, haydutları oldukça güzel anlatıyor. Filmdeki her bir karakterin ince işlenmiş özellikleri ve samurayların onurlu, dirençli mücadele anlayışları samuraylığı bırakmayı düşünen ana kahraman samurayla oldukça güzel anlatılıyor. Çiftçiler, çiftçilerin samuraylara bakışı, korkaklığı, ve korkaklığın nasıl yenilebileceği...

Anlatmakla bitmez bu film, izlemek lazım. Ben özetle mücadelenin gerekliliğini,savaşların birileri için her zaman kayıp olduğunu ve örgütlenmenin önemini anladım filmden. Her izleyen farklı anlayacaktır mutlaka. Teknik olarak filmi değerlendirmek te haddim değil ama görüntüler siyah beyaz olmasına rağmen oldukça güzel, başarılı bence :)

Göçmen

akdenizde bir balıktım bir zamanlar,
denizin kumu yastığım.
yanımda asi, durmaz terse akar,
sırtımda medeniyetlerin evi, mezopotamya.

birgün yürüdüm gittim batık kente, egeye.
yeni yetme bir evlat, okulumuz hayat.
sanki hep ordaydim, hep kalacaktim,
egenin denizi ve yeşili.

bir baktım bozkırdayım, soğuk ve sert,
bense hala denizin tuzu üzerimde,
görevim dik durmak,
yanımda birkaç dost.

iki kıtanın arasına geldim sonra,
dünya halkları buluşmuş burada,
herşey yakın, herşey uzak,
herkes yanında, kimse yanında değil.

bir balık yada bir insan,
ne farkeder gelip geçici hepsi,
izimi süremeyecekse sonradan gelen
ve bir oltaya takılıp gideceksem.

Vaka analizi nedir?

"Case study" kavramını bir yerlerden duymuşumdur; ancak bu kavram karşıma "Vaka analizi" olarak çıkınca ve bu analizi yapmam istenince tam olarak ne yapmam gerektiğini kestiremedim. Aslında o an bunu "case study"'e karşılık geldiğini bile anlayamadım. Anlasam farkedermiydi, hayır.

Burada kendi adıma iki sorun var: Birincisi neden "case study" nedir biliyorken, "vaka analizi" deyince anlayamadım? İkincisi benim eğitimim boyunca "vaka analizi" olarak nitelenen bu çalışma biçimi üzerine neden
hiç çalışmadık?

Farklı bir çalışma şekli olan vaka analizini doğru yapabilmek için belli bir yöntemi izlemek, incelenen olay üzerinde yorum ve tartışma yaparken şu başlıklara yanıt aramak gerekiyor:

  • Sorun nedir?
  • Sorunu etkileyen faktörler neler?
  • Çözüm yaklaşımı nedir?
  • Alternatif çözümler neler olabilir?Hangi çözüm, niçin?
  • Sonuç

Konu ile ilgili olarak şu bağlantıyı da okuyabilirsiniz.

IBM'in Tahammülsüzlüğü

IBM'de başlayan sendikalaşma mücadelesinde ön saflarda olan iki çalışanı işten çıkarıldı. Bununla ilgili duyuru:

"Sevgili dostlar,

IBM sendika temsilcileri bizler "Nedim Akay" ve Elvan Demircioğlu" Pazartesi ve Salı günü sırayla işten çıkarıldık.

Çıkarılma ile ilgili sizlere hem Elvan ve hem de kendi adıma söyleyeceğim tek şey; "BİZLER DOĞRU ŞEYLER YAPIYORMUŞUZ".

Davamıza olan inacımız pekiştiren bu işten çıkarılma için sizlerden beklediğimiz destek; Örgütlenmemizin tüm Bilişim sektörüne genişlemesine yardımcı olmanız, mail gruplarınıza, facebook gruplarınıza BİLİŞİM SEKTÖRÜNDE ÖRGÜTLENME VAR mesajını göndermeniz, EMO toplantılarını ve planladığımız panellerin geniş kitlelere duyurulmasına yardımcı olmanız.

Ve elbette izleyici olmaktan katılımcı olmaya geçmeye gönüllü olmanız.


Sevgi ve saygılarımla,
Nedim Akay
Eski:) Bilişim Çalışanı"

Yazılım Patentlerine Hayır!

Avrupa Birliği kapsamında getirilmeye çalışılan yazılım patent yasası, Amerika'daki kötü örneklerde olduğu sorunlar yaratabilir, yaratacaktır. Bunu önlemek için Avrupa Birliği ve üyelerindeki yasa koyucuların dikkatini çekmek üzere “Stop Software Patents” isminde bir web sitesi destekçilerin imzasını topluyor. Sitenin hedefi kaygılı Avrupalıların, kurumların ve şirketlerin sesini birleştirmek ve Avrupa'daki politikacıların yasamadaki düzenlemelerle yazılım patentlerini durdurmaları yönünde çağrı yapmak olarak açıklanmış.
Sitede patent sisteminin bazı kesimlerin ekonomik yararını sağlamaya yönelik olarak rekabeti önleyen ve yenilikçiliğe katkıda bulunmayan bir şekilde kötüye kullanıldığı açıklandıktan sonra yazılım pazar ortamının yazılım patentleri olmadan çok daha iyi olacağı vurgulanmış. Sağlıklı rekabetin ayrıca pazardaki oyuncuları yenilikçiliğe zorlayacağı belirtilmiş.
Avrupa mahkemesinin kararları hala demokratik kontrolden uzak ulusal patent ofisleri ve Avrupa Patent Ofisi (EPO) tarafından verilen yazılım patentlerinin doğruluğunu kabul etmektedir. Bu ofisler bu patentleri vermeye devam ettikleri gibi, onlara yönelik kulis çalışmaları da yapmaktadır. Şu anki patent sisteminin içinde bulunduğu derin krize rağmen, kolay verme politikalarıyla Avrupa iş faaliyetlerini riske atamıyor ve reform yapamıyorlar.
2005 yılında komisyon, Avrupa'nın küçük ve büyük ölçekli şirketleri - Avrupa'daki yenilikçiliğin ana gücü - yerine büyük uluslararası tekellerin çıkarlarını destekler olmuştur. Avrupa Parlamentosu yazılım patenti yönergesini sonunda red etmiştir, ancak yasal girişimler ve düzenlemeler için hakkı yoktur.
Sitede ayrıca çok sayıda bilimsel ve ekonomik çalışma yazılım patentlerinin olmamasını doğruladığı söylenmektedir. Yazılım yazarlarının telif hakkı yasalarıyla hali hazırda korunduğu, bu şekilde diğer geliştiricilerin aynı alanda sağlıklı bir rekabet altında yenilikçi bir şekilde geliştirme yapmalarının sağlandığı, ancak bu korumanın yazılım patentleriyle zayıflatıldığı ifade edilmiştir. Herhangi bir ihlalin farkında olmadan yazılım patentlerini çiğnemenin oldukça kolay olduğu günümüzde, yazılım şirketleri yenilikçilik için patent sistemini kullanmaz ve ihtiyaç duymazlar. Üstüne üstlük “şüpheli” bir şekilde verilmiş olan patent sahiplerinden korunmaları gerekir. Yazılım patentleri yasal amaçlarından sapmaktadır. Yazılım üzerindeki patentler yenilikçiliğin zarar gördüğü davaların açılmasına neden olmakta, demokratik doğrulama düzenekleri bozguna uğramaktadır. Yazılım üreticileri araştırma ve geliştirmeye ayıracakları emek ve zamanı; bürokrasi, davalar, ve yazılım hakkında verilmiş şüpheli iddiaları atlatmaya harcamaktadır. Yazılım patenti sahipleri, bazıları yazılım bile üretmeyen kişiler, pazar üzerinde adil olmayan bir kontrol için yöntemler sağlamaya çalışmaktadırlar. ABD'de yazılım patentlerine dayanarak açılmış olan milyarlarca dolarlık davalar var, ve bu davalar sadece yazılım şirketleri arasında değil ayrıca diğer şirketlere yönelik olarak da sadece web sitesine sahip oldukları için (bu Avrupa'da da olmaya başlamıştır) açılmıştır. Avrupa'da bu hatadan kaçınmak gerekir.
Özetle bu dilekçe bağlamında yasa koyuculardan beklentiler şu şekildedir:
-herhangi bir yazılım patentini yoksaymak için gereken bağımsız ve sürekli patent yasası için gereken ulusal yasal düzenlemeleri gerçekleştirmek
-programlama aygıtları üzerinde çalışan yazılımlar tarafından ihlal edilebilecek patentler üzerindeki tüm verilmiş hakları geçersiz kılmak
-bu kuralların Avrupa düzeyinde, Avrupa Patent Konvansiyonuda dahil olmak üzere, yayılmasına yönelik çaba göstermeleri
Dilekçenin Adresi: http://stopsoftwarepatents.eu/

Kaynak : http://www.bilisim.emo.org.tr/

Tellico: Kolleksiyon Yönetimi Aracı

Bilgisayarımda Ubuntu'yu tek başına kullanmaya başladığımdan beri; bir çok sorunla karşılaşsam da(lafı gelmişken bu sorunlarının çoğunu çözmeme yardımcı olan Emre'ye teşekkürler :) ) neden GNU-Linux'a geçiş için bu kadar geç kaldığıma hayıflanır oldum. Çünkü daha önce Windows'ta bulamadığım veya crack, seri numarası ve benzer bir çok şeyle uğraştığım yazılımları özgür yazılım felsefesiyle daha kolay buluyor ve kullanabiliyorum.

Bunlardan biri de: Tellico. Kullanımı rahat ve gereksinimleri karşılayacak bir kütüphane programı yıllarca bulunacak veya kodlanacak listemdeydi. Paket yöneticisinde kısa bir aramadan sonra bulduğum Tellico'yu hemen yükleyebildim.

Bu sadece bir kitaplık programı değil; video, müzik, pul, bozuk para, kart, şarap koleksiyonlarının da oluşturulabildiği hatta kendi özel koleksiyonlarınızı yapabileceğiniz bir program.

Yeni girdi yaratın(Ctrl+N) diyerek seçilen kolleksiyon türüne özgü bilgi alanlarını doldurarak kayıt ekleyebiliyoruz.

Güzel bir tarafı Koleksiyon menüsünden koleksiyon alanları(Ctrl+U) kısmına giderek bu alanları düzenleyebilmek ve gerekirse yeni bir alan girmek. Bu alanların tipini; metin, paragraf, sayı, URL veya tablo olarak belirtebiliyor ve bu alanları gruplandırabiliyoruz.

Menünün altında sağ taraftaki kısım ile var olan kayıtlar arasında alan veya metin bazında filtreleme de yapabiliyoruz.


Çok hoşuma giden bir özellik de internet üzerinden veri kaynaklarına bağlanarak internet araması(Ctrl+M) ile arama yapmak ve bulunan girdiyi koleksiyonumuza ekleyebilmemiz. Ayarlar menüsü Tellico'yu yapılandır biriminden yeni veri kaynaklarını ekleyebilmeye de olanak sağlıyor. Örneğin imdb.com'a bağlanarak aradığımız bir filmi bulabiliyor ve koleksiyonumuza ekleyebiliriz.(Bakın; aşağıdaki resim)



Bütün bunlar özelliklerin bir kısmı; geniş bilgi için: Tellico Rehberi(İngilizce)



Monochrome

Yann Tiersen'den Monochrome gelsin.

Bilimin Efendisi

Geçmişten günümüze; insanlık için yapılanlarla, bilim aracılığıyla insanlık için yapılabilecekler arasında uzaklık çok daha genişlemiştir. Bilim artık bilim adamı için de umut verici ve yararlı birşey olmaktan çok giderek daha yararsız ve yıkıcı olarak görülmektedir.

Bilimin karmaşık hale gelmesiyle birlikte maliyeti o kadar yükselmiştir ki, ancak hükümetler yada tekellerin desteğiyle ilerleyebilmektedir; ki bu destek çoğunlukla askeri amaçların gerçekleştirilmesi amacıyla verilmektedir. Bilimi bağımlı hale getiren bu koşullar, parayı ödeyenin amaçları doğrultusunda bilim üretimini zorunlu kılıyor. Hedef askeri bilim olunca, gizlilik ilk şart oluyor.

Özgür araştırma, özgür yayın gibi eski kavramlar yok olurken; üretilen bilim, parayı verenin istediği yönde değilse, araştırma fonlarından da mahrum bırakılıyorsunuz. Akademik çevrelerde ilerleyebilmenin ön koşullarından biri de, istenilen bu hedeflerin peşinde koşmak; hiç bir şekilde durumu eleştirmemekten geçiyor. Bilimsel araştırma ve akademik görevler için neredeyse bağlılık yeminleri etmek ve politik sınamalardan geçmek zorunda kalıyoruz. Ancak bu yapıyı kabul edenler "saygın" birer bilim adamı olabilir ve yüksek görevlere getirilirler. Bugün bilim, akademik çevreler içinde hapsolmuş; ancak pratikte kar sağladığı yada öldürücü silahlar üretebildiği sürece varolmasına izin verilen bir olgu haline gelmiştir[4].

Özgür yazılım kavramının "solcu" görünmesinin nedeni de bununla ilişkili olabilir. Özgürlük, paylaşmak ve ilerlemek; bu kavramlar anlam olarak iyi şeyleri akla getirse de bugünkü pratikte, açık açık söylenmese de, çoğunlukla kötü ve tehlikeli çağrışımlar olarak görülüyorlar.

Oysa bilimin efendisi olacak toplum, önce bilime ve bilim ile uğraşana saygı duymalı, bilim adamına öncelik vermeli sonra bilimi hayatının parçası olarak görmeli.
"Kendilerini bilimsel çalışmalara adayabilecek kadar şanslı olanların bilgilerini insanlığın hizmetine sunmada kimseden geri kalmamaları, en önde gelmeleri gerekir." (Paul Lafargue)

Son 25 yılın uluslararası bilimsel dökümüne göre Türkiye dünya bilimine yüzde 1'lik bir katkı bile yapamamış[5]. Biz yeteri kadar çalışmıyor muyuz, yoksa çalışıyoruz da boş işlere mi çalışıyoruz. Yanlış, boş hedefler mi koyuyoruz, yada hiç hedef bile koyamıyor muyuz? Etkililik ve etkinlik; her ikisinde de sorunlarımız olduğu görülüyor. Konuyla ilgili olarak "Öğretim Üyesi ya da Bilim İnsanı Kimdir?" başlıklı yazıyı okumanızı tavsiye ederim.

Bugün bilim teknolojiye indirgenmiş bir haldedir. Öyleyse “bilim”, veya var olan alt yapı mekanizması için neredeyse eş anlamlı olarak kullanabileceğimiz “teknoloji” nedir sorusu tekrar cevaplanmalıdır. Teknoloji bilimin yeni teknikler araştıran ve var olan teknikleri inceleyen koludur. Teknoloji emeğin üretkenliğini arttırır ve gelişen teknoloji, bir işin, işçi tarafından daha az emek gücü sarf edilerek yapılmasına olanak verir. Problem bilimin neredeyse tek bir koluna yani teknik-bilime indirgenmiş olmasındadır.

Görülüyor ki bugün bilimin efendisi, sistemin gerektirdiği gibi sermaye ve sermayeye sahip olanlardır. O halde biz ne yapabiliriz?

Bilimin gelişmesinde iki önemli etken var: İlk olarak bilim, insanların en temel gereksinimleri olan yiyecek, giyecek ve barınma ' yı sağlayacak üretim ve ulaştırma araçlarını sağlayacak; ikinci olarak da bilim, paranın ve tekellerin gösterdiği hedeflerden kurtularak günlük yaşamın bir parçası, halkın uğraşı haline gelecektir[4].

Sistem kapitalizm de olsa, başlangıç "Üretim" den geçiyor. Verimli üretim ise bilimin yol göstermesiyle sağlanabilir. Üretimi az olan ülkemizde, yaşam dışa bağımlı, yani dışarda üretileni tüketmek üzerine kurulu hale geldi. İthalat'ın artışı da bundan, üretmeden tüketmekten kaynaklanıyor.

Kayda değer bir üretimi olmayan birey ve toplum, varolan düzen içerisinde ancak figuran olabiliyor. Başrol oyuncuları ise, sistemin çalışmasını sağlayan çarklar. Burada üç seçenek çıkıyor karşımıza: Ya sağlam bir çomak olup gireceksin çarkların arasına ve kırılmayacaksın; ya sistemin en iyi oyuncularından biri olarak kritik bir çark olup, senin gibi olan diğer çarklarla beraber çalışarak sistemi sen isteyince bozacaksın, ya da yeni düzen için çarklardan birinin kırılıp bozulmasını bekleyeceksin.

Sadece düşünmek ve konuşmakla bir çomak olup da birşeyleri düzeltmek şimdiye kadar pek mümkün olmamış. Ki yıllar öncesinden şöyle özetlenmiş bu durum: "Filozoflar dünyayı değişik şekillerde yorumlamakla kaldılar oysa önemli olan dünyayı değiştirmekti. (K.Marx)"

Birey için esas olan üreten bir çark olmak; bir başka deyişle sistemin en iyi oyuncularından biri olmaktan geçiyor. Sonra çarkların birlikteliği önem kazanıyor. Bunun için de herşeyden önce yapılmış olanların nasıl ve neden yapıldığını incelemek yoluyla varolan sistemi çok iyi anlamak gerekiyor.

Burada Diyalektiğin yasaları tam olarak anlam bulur: “niceliğin niteliğe dönüşümü","Yadsımanın Yadsınması" ve "zıtların iç içe geçmesi" yasaları varolan sistemi anlarken yol gösterici olabilir:

“Yadsıma” sadece bir şeyin yok olması, başka bir şeye dönüşerek ölmesi anlamına gelir. Örneğin insanlık tarihinin ilk dönemlerinde sınıflı toplumun gelişmesi, daha önceki sınıfsız toplumun yadsınmasını temsil ediyordu. Yadsımanın yadsınması yasası yalnızca bir sistemin doğarken başka bir sistemi yok olmaya ittiğini söyler.

“Zıtların iç içe geçmesi” yasası, değişim süreçlerinin çelişkiler sayesinde, tüm doğal ve toplumsal süreçlerin içinde gömülü olan farklı unsurlar arasındaki çatışmalar sayesinde ortaya çıktığını söyler.

“Niceliğin niteliğe dönüşümü" Bir şeyin yapısı değişmediği zaman, nicel bir değişiklik vardır (su örneğinde ısının bir derece değişmesi, bir yapı değişmesi olmadığı gibi). Ama şey, yapısını değiştirirse, yani şey başka bir şey olursa, buradaki değişme nitel değişikliktir. Öyleyse görüyoruz ki, şeylerin evrimi sonsuzcasına nicel olamaz; şeyler dönüşürken, sonunda, nitel bir değişikliğe uğrarlar: Nicelik, nitelik haline dönüşür.[1]"

O halde şimdi yapmamız gereken üretimin şeklini ve amacını belirlemek, sonra beraber çalışıp, üretmek:

"İnsanlar, her biri bilinçli olarak istedikleri kendi amaçlarını izleyerek, bu tarih nasıl bir biçim alırsa alsın, kendi tarihlerini yaparlar, ve işte bu başka başka doğrultularda etki yapan sayısız iradenin ve bunların dış dünya üzerindeki çeşitli yankılarının bileşkesi, tarihi oluşturur. Öyleyse burada da önemli olan sayısız bireyin ne istediğidir. İrade, tutku ile ya da düşünme ile belirlenir. Ama, kendileri de doğrudan tutkuyu ya da düşünmeyi belirleyen araçlar çok değişik niteliktedir. … Öte yandan, … etkin insanların beyinlerinde hangi tarihsel nedenlerin bu güdülere dönüştüğünü kendi kendine sorabilir insan.(F. Engels)"[1]

Engels, toprağın verimliliğinin düşmesi teorisine karşı çıkıyor; "Toprağın büyüklüğü sınırlıdır, bu doğru. Ancak bilimin ilerlemesi sınırsızdır ve hiç değilse nufüs artışı kadar hızlıdır. Tarımın ilerlemesi kimyaya çok şey borçludur.
Bilim kendisini en az nüfus kadar çoğaltır: Nüfus en son kuşağın sayısına oranla artar; bilim ise en son kuşak taafındankendisine miras olarak bırakılan toplam bilgi miktarına oranla ilerler ve dolayısıyla en olağan koşullarda geometrik dizi içinde gelişir - öyleyse nedir bilim için olanaksız olan?"


Birkaç söz:

Thomas Edison:
"Deha yüzde 1 esinlenme, yüzde 99 ise terlemeden ibarettir".

Goethe:
"Kişinin bilmediği ya da hiçbir şekilde fikrinin olmadığı düşünceler gece kafasının labirentlerinde dolaşır."

Poincare:
"Mantığımızla kanıtlar, içgüdülerimizle yaratırız." Geometri ya da herhangi bir başka bilim için salt mantıktan daha fazla şeyler de gerekir. İçgüdü dışında da bunu tanımlayabilecek başka bir sözcük yok".

Plato:
“İhtiyaç, buluşun anasıdır.”


Kaynaklar:

[1]http://www.anlikhaber.net/site
[2]http://blog.milliyet.com.tr/Blog.aspx?BlogNo=22669
[3]http://www.tubav.org.tr/dergi.php(Ortaş, İ. (2004). Öğretim üyesi ya da bilim insanı kimdir?. PiVOLKA, 3(12), 11-16.)
[4]Marksizm Ve Bilim ( J. D. Bernal )
[5]http://arama.hurriyet.com.tr/arsivnews.aspx?id=7917417

Yeşil Elektronik

Fazlamesai kaynaklı habere dayanarak, teknoloji firmalarının yeşillik düzeyini gösteren greenpeace sitesine şu bağlantıdan erişebilirsiniz. Listede çevre kriterleri açısından en iyi firmanın Nokia olduğu göze çarpıyor. En kötü firmaların ise Nintendo ve Microsoft olduğu. Site ingilizce, listedeki firmalar hakkında ayrıntılı bilgiye de ulaşabilirsiniz.

Akademi ve Ö/AKK Yazılım

Uzun zamandır diğer işlerimden fırsat bulup doğru dürüst bir yazı yazamadığımın farkındayım. EMO İzmir şubesinin yayın komisyonuna girdiğimden beri en azından iki ayda bir bültene yazı yazmaya çalışıyorum. Bunun üstüne Elektrik Mühendisliği dergisi benden önümüzdeki dergi sayısı için bir yazı istedi. Oraya dört sayfalık bir yazı yazdım. Ayrıca üzerinde çalıştığım başka yazılar da var. Yarıladığım ama tamamlamak için zaman ayıramadığım bir çeviri işim var. Doktora sürecim tez aşamasına girdi, tez konumu önerdim ve kabul edildi. Şimdi Aralık ayında ilk tez izlemem olacak. O zamana kadar hazırlık yapmam gerekiyor. Algoritma teorisine yakın konularla uğraşmaya başladığım için programlama veya yazılım konusunda yeni yazılar da yazamıyorum. Özetle inanılmaz yoğunluktan dolayı ve kafamı toplayamadığım için günlüğü ihmal ettim gibi gözükebilir. Bunun üstüne sanırım bağışıklık sistemimin dağılmasından dolayı iki haftada bir nezle, grip, soğuk algınlığı, faranjit türü bir hastalığın pençesine düştüğümü de belirtmeliyim. Yani sizin anlayacağınız ne sağlığım yolunda gidiyor, ne de planlayabildiğim bir zamanım kalıyor :) Arada kişisel olarak kendime ayırdığım zamanda bile internet üzerinde takip ettiğim günlükleri, biriktirdiğim okunacak yazı ve kitapları okumaya çalışıyorum. Bu kadar yakınma yeter. Uzun zamandır yapmadığım bir şekilde kendimden bahsetmiş oldum.

Bugün aslında başlıktan da anlayabileceğiniz gibi akademik ortamlarda, üniversitelerde özgür ve açık kaynak kodlu yazılım kullanımından bahsedecektim. Bahsedeyim.

Akademi dediğimiz ve bilim ürettiğini varsaydığımız kuruluşların bu ürettikleri bilginin-deneyin tekrar üretilebilirliğinden (deneylerin tekrarlanabilirliği önemli bir kriterdir) sorumludur. Bu bağlamda kapalı veya sahipli, oldukça maliyetli bir yazılım kullanmaları aslında o yazılıma erişimi bir şekilde olmayan kişilerin, akademik kurumların deneyi tekrar edebilmesini zora sokmaktadır. Bunu çözmenin bir yöntemi Ö/AKK kullanmaktır. Ö/AKK kullanımının bir diğer avantajı öğrencilerin, araştırmacıların kaynak koduna erişebilmesi dolayısıyla çalışmasını daha iyi kavrayabilmesinde yatıyor. Bilgisayar bilimlerinde okuyan bir öğrenciye işletim sistemi çekirdeğini anlattıktan sonra açık kaynak bir çekirdek üzerinde tekniklerin nasıl uygulandığını göstermeniz oldukça yararlı olacaktır.

Ö/AKK bir de alternatifler anlamına gelir. Her türlü yazılım, program için bir alternatifiniz vardır. Ama sahipli yazılımlarda o sahipli yazılım sizi belli başlı platformlara zorlayabilmektedir, alternatiflerinizi elinizden almaktadır.

Bu nedenlerden dolayı benim naçizane görüşüm akademilerde, üniversitelerde, enstitülerde Ö/AKK kullanılmalıdır. Tıpkı eğitimin tüm aşamasını karşılayan eğitim kurumlarının hepsinde de kullanılması gerektiği gibi.

Not: İki kişinin kodveus günlüğünü izlemesini farketmemle blogger tarafından takip edilen (izlenen) bloglar şeklinde bir uygulama başlattığını gördüm. Profil sayfamdan takip ettiğim günlükleri görebilirsiniz.

!

4 günlük cezamızı çektik, bugün bloglarımıza yine ulaşabiliyoruz. Biz ne yaptık ki? Neydi günlük yazarlarının suçu ki 4 gün ulaşılamadı bilgi ve deneyim paylaşmaktan başka amacı olmayan günlüklerimize?

Birileri yasa dışı maç yayını yapmış diye, binlerce blog kapatılır mı? Yasaklamaların bir an önce son bulması dileğiyle; İleri görüşlü, açık fikirli ve devrimci Atatürk'ün hediyesi Cumhuriyet Bayramı kutlu olsun!

Ölüm Günü


Daha önce Fazıl Hüsnü Dağlarca üzerine birşeyler yazmıştım ve şairin Kadıköy'de yanlızlığa terkedildiğini ve onu ancak ölüm gününde hatırlayacağımızı söylemiştim. Maç tahminlerim tutmuyor ancak böyle şeylerdeki öngörülerim beni hiç yanıltmadı. Öyle şairlerimiz varki, bizi derinden tanımış, bizi ifade etmiş, insanın beyni dönüyor onları okurken. Bu insanlar o kadar pisliğin arasından o temiz kelimeleri nasıl buluyorlar; ve bizler, bu toprakların çocukları sizi nasıl oluyorda tanımıyoruz?

Türk Dil Kurumu'nun töreninde Farık Nafiz Çamlıbel'in şiiri, Fazıl Hüsnü Dağlarca'nın şiiri diye okunmuş, Dağlarca başka bir şairin şiiri ile uğurlanmış. Bu gafa gülelim mi, ağlayalım mı bilmiyorum. Ama biz Dağlarca'yı kendi dörtlükleri ile uğurlayalım.

Söyle sevda içinde türkümüzü,
Aç bembeyaz bir yelken
Neden herkes güzel olmaz,
Yaşamak bu kadar güzelken?

İnsan, dallarla, bulutlarla bir,
Ayrı maviliklerden geçmiştir
İnsan nasıl ölebilir,
Yaşamak bu kadar güzelken?

Bir başka ölüm gününde buluşmak üzere!

Türkiyeye interneti kim, ne zaman getirdi?

Bizim okuduğumuz dönemde kendisinden ders alma şansına sahip olamadığımız, ama adının Ege Bilgisayar Mühendisliği için çok önemli olduğunu hepimizin bildiği bir hocamız vardı: Oğuz Manas.

RFID ile ilgili bir araştırma yaparken, çok da dolaylı olarak, kendisi ile yapılmış bir röportaja rastladım. Üniversitenin ilk yıllarında hocalarımız "Türkiyeye interneti bizim okulumuz getirdi" derdi, bunu biz böyle öğrendik ama dışardı herkes ODTÜ getirdi diye biliyordu. Oysa bu röportaj ile gerçek olan ortaya çıkıyor. 1993 te ODTÜ'nun kurduğu kamuya açık internetin altyapısı tam 7 yıl önce, 1986 yılında Ege Üniversitesinde Oğuz Manas'ın öncülüğünde Üniversiteler arası çalışan şekliyle kurulmuş.

Bana kalırsa kimin getirdiğinden çok, Ege Üniversitesinin ve hocamız Oğuz Manas'ın bu alandaki çalışmalarının unutulmaması; yenilikçi ve ileriye dönük bu akımın devamı önemli.

Einstein'ın Mantık Sorusu

Geçen yıldan beri Einstein'ın mantık sorusu olarak bilinen problemin Prolog'da çözümünü paylaşmak istiyordum. Zamanın ve bilgisayarımdaki verilerin derinliğinde kaybolmuş küçük çalışmamı nihayet gün yüzüne çıkarabildim.

Einstein'ın mantık sorusu:

Kurallar :
1) Beş farklı renkte beş ev var,
2) Her evde beş farklı ülkeden birer kişi oturuyor,
3) Bu evlerde yasayan kişiler;
- Farklı tür içecek içiyor
- Farklı marka sigara içiyor
- Farklı cins hayvan besliyor,
4) Sigara, içecek ve hayvanların hiçbiri aynı cins değil.

Verilen Bilgiler :
1) İngiliz kırmızı evde yaşıyor.
2) İsveçli köpek besliyor.
3) Danimarkalı çay içiyor.
4) Beyaz evin solunda yeşil ev var.
5) Yeşil evin sahibi kahve içiyor.
6) Kuş bakan kişi Pall Mall marka sigara içiyor.
7) Sarı evin sahibi Dunhill marka sigara içiyor.
8) Tam merkezdeki evde yasayan kişi süt içiyor.
9) Norveçli ilk evde oturuyor.
10) Kedi besleyen kişinin evinin yanındaki evde oturan kişi Blend marka sigara içiyor.
11) Dunhill marka sigara içen kişinin evinin yanındaki evde oturan kişi at besliyor.
12) Blue Master marka sigara içen kişi aynı zamanda meyve suyu içiyor.
13) Alman Prince marka sigara içiyor.
14) Mavi evin yanında oturan kişi norveçli.

İstenilen Bilgi :

Su içen kişinin evi hangi renk?

Balığı besleyen kimdir?

Visual Prolog'taki kod

domains

ID= symbol

EV = ev(ID,SIRA) % Her bir ev bir sirayla tanimlaniyor

EVLISTE = reference EV* % Ev listesi

SIRA = integer % Ev sirasi

SIRALISTE = SIRA* % Sira listesi

predicates

nondeterm cozum

nondeterm aday(EVLISTE,EVLISTE,EVLISTE,EVLISTE,EVLISTE)

nondeterm perm(EVLISTE)

nondeterm kisitlar(EVLISTE,EVLISTE,EVLISTE,EVLISTE,EVLISTE)

nondeterm permutasyon(SIRALISTE,SIRALISTE)

nondeterm sil(SIRA,SIRALISTE,SIRALISTE)

uye(EV,EVLISTE)

nondeterm yaninda(SIRA,SIRA)

nondeterm solunda(SIRA,SIRA)

clauses

cozum():-

kisitlar(Renkler,Icecekler,Uyruklar,Sigaralar,Hayvanlar),

aday(Renkler,Icecekler,Uyruklar,Sigaralar,Hayvanlar),

uye(ev(balik,BalikEvi),Hayvanlar),

uye(ev(BalikBesleyen,BalikEvi),Uyruklar),

write("Balik ",BalikBesleyen," tarafindan besleniyor\n").

aday(L1,L2,L3,L4,L5):-

perm(L1),

perm(L2),

perm(L3),

perm(L4),

perm(L5).

perm([ev(_,A),ev(_,B),ev(_,C),ev(_,D),ev(_,E)]):-

permutasyon([A,B,C,D,E],[1,2,3,4,5]).

kisitlar(Renkler,Icecekler,Uyruklar,Sigaralar,Hayvanlar):-

% Ingiliz kirmizi evde oturuyor

uye(ev(ingiliz EV),Uyruklar),

uye(ev(kirmizi, EV1),Renkler),

% isvecli kopek besliyor

uye(ev(isvecli, EV2),Uyruklar),

uye(ev(kopek, EV2),Hayvanlar),

% danimarkali cay iciyor

uye(ev(danimarkali, EV3),Uyruklar),

uye(ev(cay, EV3),Icecekler),

% Beyaz evin solunda yesil ev var.

uye(ev(yesil, EV4),Renkler),

solunda(EV5, EV4),

uye(ev(beyaz, EV5),Renkler),

% yesil evin sahibi kahve iciyor

uye(ev(kahve, EV6),Icecekler),

uye(ev(yesil, EV6),Renkler),

% Kus bakan kisi PallMall marka sigara iciyor

uye(ev(pallMall, EV7),Sigaralar),

uye(ev(kus, EV7),Hayvanlar),

% Sari evin sahibi Dunhill marka sigara iciyor

uye(ev(dunhill, EV8),Sigaralar),

uye(ev(sari, EV8),Renkler),

% Tam merkezde oturan kisi sut iciyor

uye(ev(sut,3),Icecekler),

% Ilk siradaki evde Norvecli oturuyor

uye(ev(norvecli,1),Uyruklar),

% Kedi besleyen kisinin evinin yanındaki evde

%oturan kisi Blend marka sigara içiyor.

uye(ev(blend, EV9),Sigaralar),

yaninda(EV9, EV10),

uye(ev(kedi, EV10),Hayvanlar),

% Dunhill marka sigara içen kisinin evinin yanindaki evde oturan kisi at besliyor.

uye(ev(dunhill, EV11),Sigaralar),

yaninda(EV11, EV12),

uye(ev(at, EV12),Hayvanlar),

% Bluemaster marka sigara icen ayni zamanda meyve suyu iciyor

uye(ev(bluemaster, EV13),Sigaralar),

uye(ev(orange_juice, EV13),Icecekler),

% Alman Prince marka sigara iciyor

uye(ev(alman, EV14),Uyruklar),

uye(ev(prince, EV14),Sigaralar),

% mavi evin yanındaki evde oturan norvecli

uye(ev(norvecli, EV15),Uyruklar),

yaninda(EV15, EV16),

uye(ev(mavi, EV16),Renkler).

permutasyon([],[]).

permutasyon([A|X],Y):-

sil(A,Y,Y1),

permutasyon(X,Y1).

sil(A,[A|X],X).

sil(A,[B|X],[B|Y]):-

sil(A,X,Y).

uye(A,[A|_]):-!.

uye(A,[_|X]):-

uye(A,X).

yaninda(X,Y):-

solunda(X,Y).

yaninda(X,Y):-

solunda(Y,X).

solunda(1,2).

solunda(2,3).

solunda(3,4).

solunda(4,5).

goal

cozum.


Üstteki kod için bazı açıklamalar:
  • uye(EV,EVLISTE): Renk,İçecek gibi alanlarla belirlenmiş bir ev listesinde(EVLİSTE) ilk parametre olarak verilen evin(EV) bulunup bulunmadığına bakıyor.
  • permutasyon(SIRALISTE,SIRALISTE):Dizilebilecek her türlü kombinasyonu yapar.
  • sil(SIRA,SIRALISTE,SIRALISTE):ilk parametreyle verilen değişkenin 2. parametredeki listeden silinip 3. parametre olarak verilmesini sağlar.

Hiçbir şey ifade etmiyor mu? Tamam, prolog'ta temel bir kaç şeye daha değineğim o zaman.

Prolog bildirimsel(declarative) bir dildir. Yani bir olguyu bildirmemiz gerek. Örnek olarak hava güneşli diyeceksek gunesli. dememiz yeterli.
Eğer olgumuz, gerçeğimiz(fact) bir parametre içeriyorsa örneğin "Dünya yuvarlaktır", diyeceksek, yuvarlak yüklemini dünya öznesini-parametresini- kullanarak şu şekilde belirtiriz: yuvarlak(dünya).
Peki iki parametreli bir olguyu nasıl anlatabiliriz? Diyelim ki "Emre İlker'in abisidir" olgusunu bildireceğiz. Şöyle yapmamız gerekirdi. abi(emre,ilker).

Tüm bunları insanın düşünce tarzına benzer şekilde tanımlıyoruz. Hatta cümlenin sonuna nokta da koyuyoruz.

Dikkat ettiyseniz parametreleri küçük harfle yazdık. Çünkü büyük harfle yazdığımızda onu değişken(variable) olarak algılıyor. Kim Emre'nin kardeşidir sorusu için, abi(emre,Kim). dememiz gerekir.

Olguları bildirmenin dışında kurallar dediğimiz cümlecikler de vardır. Burada önemli olan :- işaretinin eğer anlamına geldiğini bilmektir. Bunu kullanarak kurallar yazarız. Örneğin Emre'den büyük olan İlker'den de büyüktür.
buyuk(Buyuk,ilker):-buyuk(Buyuk,emre).


Prolog'da ,(virgül) "ve" anlamına gelirken ;(noktalı virgül) "veya" anlamına gelir. % (yüzde işareti) kod dışı yazılar için kullanılır.

Son olarak Liste denilen kavramdan bahsetmemek olmaz. Tanımlanırken, nelerden oluştuğunu gösteren türden sonra * koyularak belirtilir. Liste dizilere benzer. Bu dizinin ilk elemanı başı(header) kalan elemanlar da kuyruğudur(tail). [bas|kuyruk] olarak gösterilebilir.



Kaynaklar:
Kısa bir Prolog Öğretici
Visual Prolog'a Giriş

Dostum

Dostum, göründüğüm gibi değilim. Görünüş sadece giydiğim bir elbisedir. Senin sorgularından beni, benim kayıtsızlığımdan seni koruyan, özenle örülmüş bir elbise. Benim içimdeki 'ben', dostum, sessizlik içinde oturur, sonsuzluğa dek kalacak orada, doyulmaz, erişilmez. Ne söylediklerime inanmanı, ne de yaptıklarıma güvenmeni isterim - çünkü sözlerim senin aklından geçenlerin dile getirilmesinden, yaptıklarımsa umutlarının eylemleştirilmesinden başka bir şey değildir. 'Rüzgar doğuya esiyor' dediğin zaman 'evet, doğuya esiyor' derim: çünkü düşüncelerimin rüzgarda değil, deniz üzerinde dolaştığını bilesin istemem.

Denizlerde gezen düşüncelerimi anlayamazsın, zaten anlamanı da istemem. bırak denizimle başbaşa kalayım. Senin için gündüz olduğu zaman dostum, benim için gecedir: böyle olsa da ben yeşil tepelere değerek oynayan öyle vaktini, vadiden süzülen mor gölgeleri anlatırım; çünkü sen ne karanlığımın türkülerini duyabilir, Ne de yıldızlara çarpan kanatlarımı görebilirsin-görmemenden, duymamandan hoşnutum ben. Bırak gecemle başbaşa kalayım.

Sen cennetine yükselirken ben cehennemime inerim - o zaman bile bu ulaşılmaz uçurumu ötesinden bana seslenirsin, 'arkadaşım, yoldaşım' ben de sana seslenirim, 'yoldaşım, arkadaşım' - çünkü cehennemimi görmeni istemem. Alevler görüşünü yakacak, duman burnuna dolacaktı. Senin gelmeni istemeyecek kadar çok severim cehennemimi. Bırak, cehennemimle başbaşa kalayım.

Sen gerçeği, güzeli, doğruluğu seversin; ben de sen hoşnut olasın diye bunları sevmenin yerinde ve iyi olduğunu söylerim ama içimden senin sevgine gülerim. Gene de gülüşümü göresin istemem. Bırak kahkahalarımla başbaşa kalayım.

Dostum, sen iyi, ihtiyatlı, akıllısın; hayır sen eksiksizsin - ben de seninle ölçülü ve düşünerek konuşurum. Oysa ben deliyim. Ama gizliyorum deliliğimi. Bırak deliliğimle başbaşa kalayım.

Dostum, sen benim dostum değilsin, ama ben bunu sana nasıl anlatacağım? Benim yolum senin yolun değil, gene de birlikte yürüyoruz elele.

Halil Cibran

Fakirlik

Fakirlik, nedir? Bu soruyu kendinize sorduğunuz zaman nasıl bir cevap üretiyorsunuz, ayağında plastik kundura olan insan mıdır fakir olan? Sadece maddi bir kavram mıdır? Yoksa manevi olarak ta bir fakirlik kavramı oluşturulabilir mi?

Günümüzde milyonlarca insan Afrika'da veya dünyanın diğer geri bıraktırılmış bölgelerinde açlıktan, ilaçsızlıktan ölüyor. Dünyanın büyük bir kısmında insanlar fakirlik üst sınırı denilen bir gelirden mahrum bir şekilde yaşıyorlar. Milyonlarca insan ölüme doğuyor, hayatında çikolata, sinema, tiyatro nedir bilmeden ölüyor.

Dünyanın başka bölgelerinde ise insanların en büyük derdi göz kenarlarında yaşanan kırışıklıklar için çıkmış olan yeni kremi denemekten, son model cipin fiyatının biraz yüksek olmasından (buna rağmen alacaktır), dünyanın başka yerindeki hiç bir işe yaramayan aç insanlardan duyduğu tiksintiden ibaret. Bir uçurum söz konusu dünyada yaşayan insanlar arasında (bu uçurumu da sömüren-sömürülen ilişkisi belirliyor bazıları kabul etmese de). İnsanın, insan olarak yaşamını sürdürebilmesi için en düşük gereksinimini oluşturan gıda, sağlık, eğitim gibi ihtiyaçlarının en temeli gıdanın bile karşılanamadığı insanların yanında, anlamsız tüketim çılgınlığına yakalanmış insanların olduğu bir dünyadan bahsediyoruz. Bir kısım insanın başka insanların saçma zevkleri için günde 15-20 saat çalıştığı bir dünyadan bahsediyoruz. Evinde 3000 çift ayakkabı barındıran, her gün farklı bir kıyafet giymek için milyonlar harcayan, kozmetik harcamaları milyonlarca aç insanı doyuracak bir dünyadan bahsediyoruz. Biri fakirlik mi dedi? Elimizde değil ne de olsa çözmek değil mi, tanrının isteği.

Evet, dilediğimiz kadar çalışalım, para kazanalım, yaşamımızı mutlu bir şekilde sürdürelim. Dünyanın bir köşesinde fakir insanlar, sömürülen insanlar var. Onların varlığını inkar ederek, yok sayarak, sadece kendimizi tatmin etmek için thehungersite'de her gün bir kere tıklayarak bu fakirliğe-açlığa çözüm bulamayız. Ne mi yapmalıyız?

Açlığı, yoksulluğu, fakirliği, yoksunluğu önlemek için, ve büyük ustanın dediği gibi doymak için ekmeğe, kitaba, hürriyete mücadele etmeliyiz ne kadar küçük olsak ta bu büyük dünyada.

Açlık Ordusu Yürüyor / Nazım Hikmet Ran

Açlık ordusu yürüyor
yürüyor ekmeğe doymak için
ete doymak için
kitaba doymak için
hürriyete doymak için.

Yürüyor köprüler geçerek kıldan ince kılıçtan keskin
yürüyor demir kapıları yırtıp kale duvarlarını yıkarak
yürüyor ayakları kan içinde.

Açlık ordusu yürüyor
adımları gök gürültüsü
türküleri ateşten
bayrağında umut
umutların umudu bayrağında.

Açlık ordusu yürüyor
şehirleri omuzlarında taşıyıp
daracık sokakları karanlık evleriyle şehirleri
fabrika bacalarını
paydostan sonralarının tükenmez yorgunluğunu taşıyarak.

Açlık ordusu yürüyor
ayı ini köyleri ardınca çekip götürüp
ve topraksızlıktan ölenleri bu koskoca toprakta.

Açlık ordusu yürüyor
yürüyor ekmeksizleri ekmeğe doyurmak için
hürriyetsizleri hürriyete doyurmak için açlık ordusu yürüyor
yürüyor ayakları kan içinde.

İnsan Pazarı / Hasan Hüseyin Korkmazgil

gondulardan gelmişik
açlık nedir bilmişik
aman ağbey yaman ağbey
gör bizi

sabahın seherinde sıcak yataktan
kopmuşuk da gelmişik bu güvenpark'a
gelmişik de birikmişik bu güvenpark'ta
'angara angara güzel angara'
aman ağbey yaman ağbey
gör bizi

çorum'lardan suvas'lardan oluruk
çangırı'dan ezirgan'dan gelirik
gırşeher'den yozgat'tanık vallaha
anşe'lerik fatma'larık gülüzar'larık
güllü'lerik hatçe'lerik ağbeyim
açlık nedir bilirik
hele sen bir al bizi
hele sen bir olur de
biz her işi görürük

cam silerik parıl parıl
halı kilim silkerik
ağartırık gap-gacağı
aş da yaparık
çamaşır dikiş nakış
yatak da gabartırık
süpürürük tertemiz
gül-gülüstan ederik
bakma öyle kibir kibir ağbeyim
bakma öyle horgörük
hele sen bir olur de
hele sen bir al bizi
hele sen bir goku sür
sultan olur sekerik
açlığın dini olmaz ağbeyim
yoksulluğun vatanı
kör olasın gahpe devran
biz açlığı bilirik

güvenpark'ta bir anıt var
gördün mü
aha böyle yamrı yumru bir daşdan
bildin mi
yazıyo ki o anıtta ağbeyim
'övün çalış güven türk'
garga bokun yememiş
it deşmemiş çöplüğü
biz gelirik gondulardan ağbeyim
aha orda bekleşirik
beklerik ki gelsinler
bizi ordan alsınlar
yap desinler aha şunu
yap desinler aha bunu
üşenmezik erinmezik
biz her işi görürük
yeter ki gelsin epmek
yeter ki brakmasın bu can bu teni

türkük diye övünüyok ağbeyim
açlık türkü bilmiyo ki
varak diyok iş üstüne
çağır çağır gelmiyo ki
çalışsak da güvensek da ağbeyim
övünsek da olma mı
anam sayrı üç yıldır
babam işsiz ağbeyim
gardaşlarım daha güççük
daha suçsuz ağbeyim
birileri gelse de alsa ya beni
yuğsam da arıtsam ya kirlilerini

dersim'lerden suvas'lardan oluruk
gıtlıklardan gıyımlardan gelirik
erinmezik üşenmezik ağbeyim
biz açlığı bilirik
güvenpark'ta o anıta
selam saygı ederik