PostScript Öğrenelim

0
misafir
PostScript'in nesini öğreneceğiz? O da JPEG ya da PNG gibi bir grafik dosyası formatı değil mi? Evet PostScript bir grafik dosyası formatı ama JPEG ve PNG'den çok farklı. Çünkü PostScript dosyaları aslında birer düz metin dosyası. Bunu görmek için hemen bir terminal açıp şu komutu verebilirsiniz: "cat dosya.ps". Gördüğünüz gibi bip bip sesleri duyulmadı ve anlamsız bir karakter dizisiyle karşılaşmadınız.

Evet buna benzer bir grafik dosyası formatı daha var: SVG. Ama PostScript ondan da farklı. Çünkü SVG bir tür XML belgesi iken PostScript bir programlama dili. Evet yanlış okumadınız, bir programlama dili. Üstelik bu dili aynen python gibi interaktif bir şekilde de kullanabilirsiniz. Açık olan terminalinizden "gs" komutunu verin. "$", "GS>"e dönüşecek ve yeni bir pencere açılacak. Bu pencere boş bir kağıdı temsil ediyor. O zaman hemen üstüne birşeyler çizelim.

Programlama dillerinin çoğunun aksine, PostScript ters leh notasyonunu (reverse polish notation) kullanıyor. Yani iki ile üçü toplamak istediğinizde "2+3" yazmıyorsunuz, "2 3 add" yazıyorsunuz. Şimdi bir üçgen çizmeye çalışalım:

newpath
200 200 moveto
300 300 lineto
400 200 lineto
closepath
stroke

İlk satır kalemi elinize almak gibi düşünülebilir. Ancak bu kalem görünmez bir mürekkeple çiziyor. Son satırdaki komutu vermeden kağıtta bir şey göremeyeceksiniz. "moveto" komutu kalemi kağıdın bir noktasına koymak anlamına geliyor. Koordinat sistemi aynen lisede öğrendiğimiz gibi. Kağıdın sol alt köşesi: "0 0". "lineto" komutu kalemi kaldırmadan belirtilen noktaya kadar çizmek demek, "closepath" ise bulunduğunuz noktayı başladığınız noktayla birleştiren çizgiyi çiziyor. Son komut olan "stroke" ise, görünmez mürekkebi görünür hale getiriyor. Bu sayfa kirlendi. Sayfayı çevirmek için "showpage" komutunu verin. Bu kez son satırdaki "stroke" komutunu "fill" ile değiştirin bakalım ne olacak.

Şimdi biraz daha karışık bir program deneyelim. Bir çemberin otuz derecelik kirişlerini çizelim. Sayfayı çevirip aşağıdaki kodu girin:

newpath
250 200 moveto
0 30 330
{ dup
cos 50 mul 200 add
exch
sin 50 mul 200 add
lineto }
for
closepath
stroke

Biraz fazla karışık oldu galiba. Açıklamaya çalışayım. Herşey ters yazıldığı gibi for döngüsü de ters yazılıyor. Parantez içindeki kısım döngünün tekrarlanan kısmı. Baştaki sayılar ise döngünün başlangıcı, basamağı ve sonu. "dup" stack'e en üstteki sayıdan bir tane daha ekliyor. "exch" ise en üstekki iki sayının yerlerini değiştiriyor. "cos" ve "sin" tahmin edebileceğiniz gibi kosinüs ve sinüs fonksiyonları. "mul" ise çarpma işlemi. "lineto" fonksiyonuna bir değer verilmemiş gibi görünüyor. Ama o da tüm fonksiyonlar gibi stack ile çalışıyor. Dolayısıyla biraz önce hesapladığımız değerleri alıyor. Bu işlemi Lisp ile yapmak isteseniz kimbilir kaç parantez kullanmanız gerekirdi.

PostScript aslında yazı karakterleri ile çizimleri birbirinden ayırt etmiyor. Sadece yazı yazabilmemiz için bazı kolaylıklar sağlanmış:

/Times-Roman findfont
40 scalefont
setfont
100 100 moveto
(Merhaba, Dunya!) show

Tabii ki yine Türkçe için bir kolaylık düşünülmemiş. Bu yüzden dünya yerine dunya demek zorunda kaldık. Ama elimizde bir programlama dili olduğuna göre bunun üstesinden gelebiliriz:

/Times-Roman findfont
80 scalefont
setfont

/sx {
gsave
(\313) show
grestore
(s) show} def

/gx {
gsave
5 0 rmoveto
(\306) show
grestore
(g) show} def

100 100 moveto
(Ka) show
sx
(\365) show
gx
(\365) show

showpage

Burada "def" ile iki fonksiyon tanımlanıyor. İlki ş harfini yazmak için, ikincisi de ğ için. 313, ş'nin altındaki cedilla'nın kodu. önce "gsave" komutu ile kalemin eski yerini stack'e yolluyoruz. Cedilla'yı yerleştirip "grestore" ile kalemi eski yerine döndürüyor ve s'yi yazıyoruz. Benzer bir işlem ğ için yapılıyor. 306, harfin üstündeki breve'nin kodu. Breve tam yerine oturmadığı için "rmoveto" komutu ile kalemi hafif sağa hareket ettiriyoruz. Bu komutun "moveto"dan farkı mutlak yerine göreli koordinatları esas alması. 365 ise ı harfinin kodu.

Buradaki kodları bir dosyaya kaydetmek isterseniz, ilk satıra "%!" karakterlerini eklemeyi unutmayın. Sonra isterseniz yaptığınız çizimi kolayca yazıcıdan çıkarabilir; ya da "ps2pdf" programı ile PDF dosyasına dönüştürüp paylaşabilirsiniz. İşin güzel tarafı elle yazılan PostScript dosyalarının, TeX ya da OpenOffice tarafından üretilenlerden çok çok daha az yer kaplaması.

Wikipedia'nın PostScript maddesinin sonunda güzel kaynaklar var. Tavsiye ederim.

Görüşler

0
FZ
Peki bunu öğrenmenin motivasyonu?
0
misafir
Merak yeterli değil mi?
0
FZ
Her seçim sonsuz seçeneği elemek ise eğer o zaman bir şeyi seçmenin ve o esnada geriye kalan seçeneklerden mahrum kalmanın 'merak' sözcüğünden daha fazlası ile açıklanması gerektiğini düşünürüm genellikle, o yüzden sordum. Tabii buna rağmen karşımdaki "yoo, sadece merak ediyordum şimdi ilgilenmeye başladım, belki sonra bunu kullanıp bir şeyler yaparım" derse o zaman çok bir şey diyemem, başa döneriz :)

0
misafir
Aslında yazının içinde ipuçları var. Yazıcıdan türkçe metin çıkartmak istiyorum ve bunun için halihazırda gereken programların -OpenOffice olsun, TeX olsun, hatta AbiWord olsun, groff olsun- çok büyük olduklarını düşünüyorum. Bunu yapmak için Türkçe'ye özelleşmiş çok daha küçük bir program yazabilirim diye düşündüm. Bu yüzden önce PostScript öğrenmek gerekiyordu.
0
masmavi
Steve Jobs'ın konuşmasının metin hali. video halini de bulmanız mümkün.

http://news-service.stanford.edu/news/2005/june15/jobs-061505.html
0
misafir
Apple LaserWriter PostScript'i ilk kullanan yazıcıydı. Apple'ın kurucusu da Steve Jobs. Evet, bağlantı bu galiba...
0
Tarık
FazlaMesai'de hep görmek istediğim malzemelerden biri.
0
FZ
Tüm zamanların en iyi teknik yazarlarından biri Common Lisp, PostScript ve matematik konusunu ele alırsa bakalım neler olur:

12.5.3. Branch Cuts, Principal Values, and Boundary Conditions in the Complex Plane

Sayfanın sonunda ilgili şekiller, bunların PostScript kaynak kodları ve PS çıktısını üreten Common Lisp kaynak kodu incelenebilir.
Görüş belirtmek için giriş yapın...

İlgili Yazılar

Opera, Internet Tarayıcısına BitTorrent Desteği Ekledi

talat

Opera Software, amiral gemisi yazılımı olan Opera internet tarayıcısının BitTorrent desteği eklenmiş deneme sürümünü çıkardı.

Bu eklenti ile Opera, ayrıca bir program gerektiren BitTorrent indirme işlemini kendiliğinden destekleyen ilk internet tarayıcısı oldu.

Ayrıntılar için tıklayın. (eWeek, İngilizce)

GNU/Linux Üzerinde Cinelerra Profesyonel Video Düzenleme

FZ

Mac ustaları Final Cut Pro, Windows çılgınları Adobe Premiere kullanırken elbet GNU/Linux´a gönül veren videocuların da eli boş durmadı. 1996 yılında ilk kez kamuoyuna sunulan Cinerella halen geliştirilmeye olanca hızı ile devam ediyor. Yazılımın profesyonel özelliklerinin arasında gerçek zamanlı görsel etkiler, FireWire G/Ç, render-farm, HDTV, OggVorbis desteği, vs. bulunuyor.

GNU/Linux´un ortaya çıkışından önceki karanlık çağlarda bu tür bir yazılım ve donanım sistemi için 100.000$ civarı bir parayı gözden çıkarmanız gerekirdi. Oysa projenin anonim programcılarından Jack Crossfire takma isimli yazılımcıya göre artık bu kadar harcama yapmanıza gerek yok.

Bu usta programcı ile yapılan bir röportajın da yer aldığı O´Reilly makalesinde belki de en ilginç kısım yazının başında Jack Crossfire´ın kimlikleri saklamak konusunda söylediği sözler: "Bizimki gibi küçülen bir sektörde, yöneticiler şimdilik yetenekli mühendislerin günlük işleri haricinde harika uygulamalar geliştirmelerine hazır değiller. Bu tür yöneticiler sistemi görmezden gelen mühendislerden kurtulmak konusunda bir an bile tereddüt etmezler, sizi kapının önüne koyarlar. Bu ve benzeri sebeplerden ötürü yazılımınızı kendi isminiz altında insanlara sunamazsınız dolayısı ile `Heroine Virtual Ltd.´ tüm geliştirdiğimiz araçları bünyesinde barındıran kuruluşun ismi oldu. Bu özgür yazılım kurumunun arkasında kaç kişinin ne ölçüde emeği olduğunu ise hayalgücünüze bırakıyoruz."

Ekonomik Krizde ERP

speargun

2008 yılında tüm dünyayı etkisi altına alan Global Ekonomik Kriz’in ardından, kriz ortamından fırsatlarla çıkmaya çalışmak bugünlerde en çok konuşulan konulardan biri.Birçok ekonomist; krizden çıkabilmenin yolunun, oturup ağıt yakmak yerine, yeni yatırımlar yaparak ve krizi fırsatlara dönüştürerek mümkün olacağı kanaatinde… Krizin getirdiği fırsatlar değerlendirilirse, kriz gerçekten öğrenme ve iyileşme zamanıdır. Bu fırsatı kaçırmayanlar, krizden daha sağlam çıkarlar.

Bununla ilgili olarak guzel bir makaleyi paylaşmak istiyorum. Aşağıdaki linkten ulaşabilirsiniz.

http://www.erphaber.com/?p=279

Kazaa Yolun Sonuna mı geldi?

anonim

Dünyanın en popüler P2P paylaşım araçlarından biri olan kazaa , Müzik endüstrisiyle uzun zamandır amasız bir mücadele vermekteydi. Uzun zamandır bu çarpışmadan galipte çıkıyordu. Fakat son alınan mahkeme kararıyla yolun sonundaki ışık görünmeye başladı..

Kazaa yazılımının sahibi olan Sharman Networks adına Avustralya'da açılan davaların sonuncusunda şirket , kopya hakkı bulunan dosyaların paylaşıma açıldığı gerekçesiyle suçlu bulundu. Uzun zamandır birçok davadan kıl payı kurtulan şirket için bu karar , çok ağır bir darbe olacak gibi..

Herhangi Bir Metnin Hangi Dilden Olduğunu Hızlıca Anlama

FZ

Yapay zekâ dersim için Prolog ile boğuşurken ve comp.lang.prolog haberleşme/tartışma grubunu mesaja boğarken oraya katkıda bulunan bir hocanın, Gertrand Van Noord'un enteresan bir çalışması dikkatimi çekti.

Perl ile yazılmış bir tür dil kategorizasyon programı. Yani bir GİRDİ'ye bakıp, "hmm bu Türkçe" diyor, başka bir girdiye bakıp "hmm, bu da Portekizce" diyor ve bunu kısa sürede, yüksek başarım oranı ile, 69 farklı dil için yapıyor. Açık kodlu, özgür yazılım kategorisinde alan TextCat'in bir de web demosu var.

Van Noord, TextCat'in ticari ve ticari olmayan rakiplerini de sıralamış. Kendi yazılımına dil sayısı olarak en çok yaklaşan yazılım XEROX Language Identifier ticari bir yazılım ve 40 civarı dil ayırt edebiliyor.

Hep birlikte tekrarlıyoruz: Özgür Yazılımı Seviyoruz! :)