• Sonuç bulunamadı

Sayı 24. Özgürlüğün Sınırlarını Sen Belirle! SUDO. 15 Ekim Aylık Ücretsiz Özgür Yazılım Dergisi

N/A
N/A
Protected

Academic year: 2022

Share "Sayı 24. Özgürlüğün Sınırlarını Sen Belirle! SUDO. 15 Ekim Aylık Ücretsiz Özgür Yazılım Dergisi"

Copied!
34
0
0

Yükleniyor.... (view fulltext now)

Tam metin

(1)

Özgürlüğün Sınırlarını Sen Belirle!

SUDO

Aylık Ücretsiz Özgür Yazılım Dergisi

24

Sayı 15 Ekim

2010

(2)

Keryx /Aybars ÇAPAN Ubuntu ile Özgür Radyo (Söyleşi)

Komut Yorumlama /Semetey COŞKUN

MySQL III /Semetey COŞKUN

YIYILL:: 22 SASAYYII:: 2244

TATARİHH:: 1199 EEKİMM 22001100

SUDO Dergisi,

GNU/GPL lisansı ile dağıtılmaktadır.

SUDO Dergi Tasarımında

Tamamen Özgür Yazılımlar Kullanılmaktadır.

Önce Çocuklar /Semetey COŞKUN

Inkscape Dersi /Ufuk KILIÇASLAN

Ayın İpuçları /Semetey COŞKUN

web: http://sudo.ubuntu-tr.org e-posta: sudo@ubuntu-tr.org Not: SUDO İçeriğindeki firma isimleri, logo ve amblemleri özel lisanslara sahip olabilirler.

Blender /Mehmet ERİBOL

Ayın Masaüstü Yarışması

Sahibi:

UBUNTU TÜRKİYE

Dergi Tayfası / Yazarlar:

Alev ERZURUMLU Ufuk KILIÇASLAN Semetey COŞKUN

Aybars ÇAPAN

Tasarım:

Elif SUNGUR Ömer YATĞIN Ufuk KILIÇASLAN

(3)

Editörden...

Ubuntu Türkiye'nin e-magazin dergisi SUDO'nun 24. sayısı, yani 2. yılı ile yine karşınızdayız.

Heyecanlıyız ama, heyecanımızın tek sebebi 2. yılımızın olması değil, Ubuntu 10.10 sürümünün duyurulması da bir başka heyecan sebebimiz. Bu sürümle birlikte Ubuntu, Özgür

Yazılım'ın faydalarını alarak büyük gelişmeleri de beraberinde duyurdu. Artık bir çok donanım bu sürümle birlikte çok daha kolay kullanılabilecek.

Bir diğer güzel haber ise LibreOffice ile geldi. Yazılım devi Oracle'ın satın aldığı Openoffice.org yazılımını herkes tartışadururken, Google ve birçok Özgür Yazılım destekçisi şirket ve geliştiricinin desteğiyle birlikte yeni bir ofis yazılımı doğdu. Bu, basit gibi görünse de artık büyük şirketlerin Özgür Yazılım'a kafa tuttukları zaman, sonlarının ne olduğunu

görebilmeleri açısından büyük bir olay. Böylece Özgür Yazılım ne kadar güçlü olduğunu tüm dünyaya göstermiş oldu.

Bu ay Özgür Radyo ile olan söyleşimiz ise ayrı bir sevinç sebebimiz. Bu Özgür Yazılım'ın nerelere kadar ilerlediğini gösteren çok güzel bir örnek. Okurken gururlanacağınızdan hiç şüphemiz yok. Teşekkürler Özgür Radyo ve bu söyleşiye aracı olan forum üyemiz @raspacı.

Önce önemsemezler, sonra gülerler, sonra kıskanırlar, en sonunda ise yenilirler…

Mahatma Gandhi

Mehmet ERİBOL

(4)

Soru:

Ubuntu'ya geçiş süreci ne kadar zor oldu? Tam olarak hangi aşamalar izlendi? Yaşadığınız en büyük sıkıntı neydi?

4

Özgür Radyo, İstanbul merkezli, Marmara Bölgesine yayın yapan, 1994 yılından beri faaliyette olan bir radyo. Çalışmalarında özgür yazılımları ve Ubuntu'yu ağırlıklı olarak kullandıkları için bir söyleşi yapmak istedik.

Söyleşiyi İlden Dirini ile yaptık. Umarız faydalı olur.

gördük. Bizce özgür yazılımın ortak çalışma, paylaşarak geliştirme yanı en üstün yanı ve bir kullanıcı olarak bizim de tercih yapmamız konusunda önemli oluyor...

Kendinizi kısaca tanıtır mısınız?

Cevap:

Gazeteciyim. Özgür Radyo'da haber editörü olarak çalışıyorum. Teknik sorunlarla da elimden geldiğince ilgileniyorum.

Alternatif Bilişim grubu içerisinde de Yeni Medya alanı üzerine çalışmalar yürütüyorum.

Soru:

Kaç yıldır Ubuntu kullanıyorsunuz ve Windows'tan Linux tabanlı bir işletim sistemine, özelde ise Ubuntu'ya geçme nedeniniz nedir?

Cevap:

Çalıştığım radyoda 4 yılı aşkın süredir Ubuntu kullanılıyor.

Radyo olarak Linux tabanlı işletim sistemine geçmemiz aslında öneri üzerine oldu. Windows'un o dönem başlattığı korsan yazılımlar hakkında işlem yapılacak açıklamaları da bu tercihi yapma konusunda hız kazandırdı. Ayrıca yayıncılık süreklilik ve hız isteyen bir konu. Tabi işimiz nedeniyle sık sık maruz kaldığımız virüs tehdidi, kararlılık önemli etkenlerden. Ancak Linuxla ve GNU ile tanışınca tercihimiz politik bir hal de aldı. Yazılım endüstrisinin yarattığı yıkımlar ve kullanıcıya dayattıklarını GNU sayesinde daha net

(5)

Soru:

Radyoda teknik ve haber gibi kaç bölüm (sektör) var ve bu bölümlerin kullandığı bilgisayar programları ne gibi farklar gösteriyor?

Cevap:

Radyomuzda haber merkezi, yayın, prodüksiyon ve reklam birimlerimiz var. Haber merkezimizin tamamı Ubuntu kullanıyor.

Yayın, prodüksiyon ve reklam birimlerimizde ise ne yazık ki Windows kullanıyoruz. Yayın, prodüksiyon ve reklam birimlerinde kullanılan radyo otomosyon programı Linux'ta çalışmıyor. Fakat internet, ofis uygulamalarında özgür yazılımları tercih ediyoruz. Firefox, Open Office, Gimp, İnkscape gibi...

Soru:

Radyoda hangi süreçler için ubuntu kullanıyorsunuz?

Cevap:

Temelde haber merkezimiz Ubuntu kullanıyor. Temel olarak yayına hazırlık aşamasında kullanıyoruz. Ayrıca internet sitemizin içeriğinin hazırlanmasında da Ubuntu ve diğer özgür yazılımları kullanıyoruz. Open office, gedit, Audacity, Totem, Odvr, Gimp, Evolution, Pidgin, Ktouch bunların başlıcaları...

Soru:

Ses düzenleme programları konusunda ubuntu size yetiyor mu? Windows muadilleriyle karşılaştırır mısınız?

Cevap:

Haber merkezinde ses düzenleme işlerimiz için Audacity bize yetiyor. Prodüksiyon için ise

şimdilik kapalı yazılımları kullanıyoruz. Fakat Ardour Cevap:

Yaşadığımız en büyük zorluk alışkanlıklarımızdan vazgeçmek oldu. Daha önce kimse Linux tabanlı bir işletim sistemi kullanmamıştı. Zihinlerde Windows ne yazık ki bilgisayarla eş algılanıyor. Sanki Windowssuz bilgisayar olmazmış gibi... Bu özgür yazılımın gelişmesiyle birlikte kırıldı elbette. Ama biz ilk zamanlarda bunun zorluğunu yaşadık. Biz Linux'u tanıdıkça, Linux eksiklerini giderdikçe bu sorunlar da ortadan kalktı. Linux kullanıcıyı Windows gibi 'aptal' yerine koymuyor. Sisteme müdahale edebilmek, istediğimiz programa depolardan rahatlıkla ulaşmak, forumlar sayesinde sorularımızın yanıtına ulaşmak ve elbetteki güvenlik (virüs tehdidinden uzak gönül rahatlığıyla bilgisayar kullanabilmek:)) ) Linux'u bizim için vazgeçilmez kıldı...

5

(6)

6

yönde gelişti? Örneğin haberlerle uğraşan bir çalışan ses düzenlemeyle ilgilenir mi? Ya da tersi mümkün mü?

Cevap:

Önceden bilgisayarı yeniden başlatmaktan çekinen arkadaşlarımız artık sınırlı da olsa uçbirimden sorunlarını çözebiliyorlar. En azından kullandıkları programların sorunlarına ve nasıl giderebileceklerine dair fikirleri var. Bunu geliştirmek konusunda da çok daha rahat adım atıyorlar. Hatta elimizdeki Ubuntu kurulum cdlerini muhabirlerimiz, editörlerimiz tanıdığımız yayıncı arkadaşlara dağıtıyor, sistemlerini değiştirmeleri konusunda kendi deneyimleri üzerinden ikna etmeye de çalışıyor. Linux benim cephemden çok şey ifade ediyor. Garip bir şey ama, "bilmiyorum öyleyse sorarım, yaparım" duygusunu yerleştirdi. Hiçbir teknik eğitim almadım. Ancak Linux belgelendirmeleri, kullanım pratikleri hem programları öğrenme, (ses, fotoğraf, mizampaj...) hem de uçbirim üzerinden sorunlara müdahale edebilme konusunda rahat ilerlememi sağladı. Şu an radyonun bir çok teknik ihtiyacını giderebiliyorum. Linux keşfedilecek koca bir dünya sunuyor ve bu keşiften hala büyük zevk alıyorum :)

Soru:

Halen Windows'ta çalışan ve olmazsa olmaz dediğiniz ubuntuda karşılığı olmayan programlar var mı?

Cevap:

Malesef radyo yayın otomasyon programımız (Solea).

Soru:

Kişisel olarak radyo dışında da Ubuntu kullanıyor musunuz?

gibi yazılımlardan haberdarız. Ubuntu Studio, Studio64 gibi dağıtımları da denedik. Fakat henüz üretim ve yayın aşamasında kullanamıyoruz. Linux camiasının bu alandaki birikimi, desteği arttıkça bu yazılımları kullanmayı ve hayatımızdan kapalı kaynak yazılımları çıkarmayı istiyoruz...

Soru:

Radyonuzun haber servisi ofis programlarında openoffice kullanıyor bu konuda verim açısından sorun oluyor mu?

Cevap:

Haber servisinde Gedit'i daha sık kullanıyoruz aslında.

OpenOffice sunum aşamasında devreye giriyor. Verim açısından bugüne kadar sorun yaşamadık. Sorunlar çıksa da otomatik kurtarmanın bulunması o sorunu ortadan kaldırıyor. Üstelik Openoffice Windows türevli belgeleri açma veya o türevde kaydetme özelliğine de sahip. Bu yanıyla da Word'ü de geride bırakıyor. Ayrıca Openoffice hesap çizelgesi ve sunum da kullandığımız özelliklerden.

Tabii Openoffice'i Oracle'ın almasının ardından başlayan Libreoffice çalışmasını da takip ediyoruz.

Soru:

Yayına çıkan bilgisayarda Windows mu Ubuntu mu kullanıyorsunuz ?

Cevap:

Radyo yayın otomasyon yazılımımız Linux ortamında çalışmamakta bu yüzden Ubuntu kullanamıyoruz. Üretici firmaya bu yöndeki taleplerimizi ilettik. Ancak sonuç alamadık.

Soru:

Linuxa geçişle birlikte radyo çalışanlarının bilişimle ilgisi ne

(7)

7

bir dünya ve bilgilendirme, tanıtma çalışmaları yürütülmeli. Örneğin Ubuntu'yu yıllarca kullansanız bile özel olarak araştırmadığınız sürece ses düzenleme ve yayın programlarından haberdar olmayabilirsiniz. Bunlar ayrıca tanıtılmalı bence... Hatta bu konuda bizim de desteğimiz olur. Linux tabanlı sistemleri kurup buradan yayın yapabiliriz. Bir örnek yaratmış oluruz. Ancak daha önce de dediğim gibi bu konuda desteğe ihtiyacımız var. Çünkü çalışanlarımızın hiç biri bu yetkinlikte değil. Hepimize kolaylıklar...

Cevap:

Elbette.

Soru:

Bu şekilde Ubuntu ile çalışan başka radyocular tanıyor musunuz?

Cevap:

Yakın zamanda bizim de önerimizle İzmir'de yayın yapan Demokrat Radyo bazı bilgisayarlarında Ubuntu kullanmaya başladı.

Bunun yanı sıra Atılım gazetesi, Etkin Haber Ajansı da Ubuntu kullanan yayın kuruluşlarından.

Soru:

Medya alanında çalışan kurum ve kişilere Ubuntu'ya geçiş için önerileriniz nelerdir?

Cevap:

Öncelikle işe tabularını yıkarak başlasınlar. Ubuntu gerisini getiriyor zaten...

Soru:

Teşekkürler. Son olarak eklemek istediğiniz bir husus var mı?

Cevap:

Bize söz hakkı tanıdığınız için biz de teşekkür ederiz. Aslında Özgür yazılımların sektörlere göre tanıtımında eksiklikler var. Daha önce bazı derneklerin düzenlediği panellere katılma şansım olmuştu.

Ne yazık ki daha ziyade bireysel kullanıcı düzeyinde, "Neden Ubuntu?", "Neden Linux?" sorularının yanıtı veriliyor. Ancak bence radyoculara, gazetecilere Linux'u ayrıca anlatmak gerek. Linux koca

Söyleşiyi gerçekleştirdiği için Umut ALTIN'a (raspacı) ve yardımlarını esirgemediği için Serkan ÇALIŞ'a SUDO ekibi olarak teşekkür ediyoruz.

(8)

Me M e h h m m e e t t E E R İB B OL O L

8

Şimdi ışıklandırmaya

geçelim. Işık olayı esasında o kadar önemli değil. Ben sarı, kırmızı ve mavi ışık kullandım.

Lamba veya güneş eklemek için Shift+A

yolunu takip

edebilirsiniz. Mesela ben eklediğim lambanın özelliklerini kısaca yandaki eklediğim resimdeki gibi yaptım.

Merhaba. Bir önceki yazıda nesnemizi savurup durduk. Şimdi biraz ışık, renk ve kamera ayarlarından bahsedelim.

Kamera olayı biraz zor gibi görünür ama değildir. Kamerayı seçin. Normal sahne görünümünde nesnebize hangi açıdan bakmak istiyorsanız o şekle getirin ve Ctrl+Alt+Numpad0 tuşlarına basın.

Kamera hemen o açıdan bakacaktır. Burada önem arzeden kameranın da hareketli olmasıdır. Bunun için 1. kareyede kameramızı istediğimiz açıya getirdikten sonra i tuşuna basıp gelen listeden LocRot seçiyoruz. Niçin LocRot derseniz; nesnemiz için LocRotScale seçiyorduk hep. Çünkü nesnemizin hem konumunu, hem açısını ve hem de boyutunu değiştiriyorduk ve animasyonda da bu ü etkenin de aktif olmasını istiyorduk. Ama kamera için ebat yoktur. Konum(Loc) ve Açı(Rot) vardır. Şimdi kamera için 1. kareye bir anahtar kare ekledik.

Mantıklı olan kameramızın da nesneyle aynı yerlerde birer anahtar kareye sahip olmasıdır. Şöyle ki; eğer nesnemiz 1, 30, 60 ve 70.

karelerde birer anahtar kareye sahipse kameramızı da bu karelerde istenilen nokta ve açıya getirip kameramız seçili iken LocRot anahtar karesi ekleyeceğiz.

Bu belirli noktalara kare ekledikten sonra, bu kareler arasında dolaşıp hangi noktalarda kameranın nesneyi iyi yakalayamadığını düşünüyorsak buralara da uygun noktalardan birer anahtar kare ekliyoruz. Kısacası bu kısım sizin öngörü ile yapmanız gereken kısım oluyor.

(9)

9

Burada ben sarıyı seçtim. Diğer eklediğiniz lamba için istediğiniz resmi seçebilirsiniz. Ayrıca bu şekilde ışığın yönünü de görebilirsiniz. Bu açıdan ben tepeden üç ayrı noktaya yerleştirdim ve hepsinin bakış açısını da küp nesnemize yönlendirdim. Eğer konumunu ayarlamakta zorlanıyorsanız lambayı seçin ve N tuşuna basın. Seçili nesne ile ilgili konum, açı ve hacim bilgilerini görebilirsiniz. Bu size daha iyi fikir verir.

Şimdi de nesnemizin renk geçişlerini yapalım. İsterseniz Material menüsünden tek renkte seçebilirsiniz itserseniz renginin de sürekli değişmesini sağlayabilirsiniz. Bu da çok ufak bir bilgi olduğu için renk geçişini anlatalım biz :). Öncelikle 1. karede iken küp nesnemizi seçelim. Ardından yandaki menüyü açalım .

Bu ekranda istediğiniz herhangi bir rengi seçebilirsiniz. Dikkat etmeniz gereken şey fareniz bu panel üzerinde iken iki defa i tuşuna basmanız. Şimdi 100 veya 150. kareye gidin ve yine aynı şekilde herhangi bir renk seçin ve yine iki defa i tuşuna basın.

(10)

10

Bu kısımda bizi ilgilendiren en önemli yer Start ve End kareleri.

Yani filmimiz nereden başlayacak ve nerede bitecek, bunu belirliyoruz.

Diğer önemli kısım Frame Rate altındaki 24 değeri. Anladığınız gibi bunun anlamı saniyedeki kare sayısını ifade ediyor.

Burada dosyamızın yolunu belirtiyoruz. Varsayılan olarak /tmp geçer. Nasıl bir kayıt istediğimiz ise hemen altında belirliyoruz. Bir video ve bir resim türünü beraber seçmekte fayda var. Sadece bir resim türü seçerseniz her kareyi bir resim olarak kaydeder. Burada ben AVI JPEG seçtim. Böylece her kare jpeg olarak taranıyor ama en sonunda bu jpeg dosyaları yine avi şekline dönüştürülüyor.

Aynı yöntemi kullanarak son kareye kadar istediğiniz yerlerde renk geçişi için anahtar kare ekleyebilirsiniz.

(11)

11

Unutmadan bir de dünyamızı renklendirelim. Aşağıda gördüğünüz gibi üç aşağı beş yukarı bizim dünya böyle :) Genelde arkaplan diyoruz biz buna. Ama üç boyut ele alınınca Dünya daha güzel duruyor veya yer yüzü :)

Daha önce söz verdiğim ancak henüz pek Bir şey elde edemediğim Sequencer olayı var. Bildiğim kadarıyla bu iş için Ardour ve Blender birlikte kullanılıyor. Zira Blender'ın kendi Sequencer(türkçesi nedir acaba?) penceresi hafif kalıyor(muş). Ancak ses eklemek için eğer profesyonelce Bir şey yapmayacaksanız bir video düzenleyicisi ile(kdenlive gibi) blender ile yaptığınız videoya ses ekleyebilirsiniz.

Biraz Bilgilenelim:

Blender 2.4 beta sürümü geçtiğim haftalarda yayınlandı. Bu son beta sürüm olarak elel alınıyor. Blender 2.5 bir adım kaldı artık.

Bir çok hata giderilmesi ve düzeltme ile birlikte 2.5 sürümünü dört gözle bekliyoruz.

Tamamen açık kaynak kullanılarak ve Belnder 2.5 sürümünün gelişimiyle paralel şekilde hazırlanan açık kaynak film Sintel indirilmeye sunuldu. Toplam 15 dakikalık görsel şölen kaçırmayın.

Makehuman:

Kendisi 3B karakter tasarım programı. Tasarlanan karakter basit bir şekilde diğer 3B yazılımlarda kullanılacak şekilde dışa aktarılabiliyor. Blender ile de içe aktarılan bu dosya ile hazır bir şekilde 3B bir karakter çizimini elde etmiş oluyoruz. Karakter tasarlamak isteyenlere duyurulur.

(12)

12

Alternatif 3B programı düşünenlere de iki programı tavsiye edelim. Wings3d ve K3D. Her iki program da çok iyi ancak malumunuz pek tanınmadıklarından belge sıkıntısı mevcut.

Bu ay ki yazımızı da sonlandıralım burada. Tatil bitti iş güç arttı. Sanırım blender ile şu an için bu kadar. Sadece iş kaynaklı değil ayrıca yazı hazırlamakta zor oluyor blender ile. Daha çok video dersler mevcut çünkü daha açıklayıcı oluyor. Ama ara ara blender ile güzel bir çalışma bulursam yine eklerim.

Kalın sağlıcakla.

(13)

Se S em me et te ey y C CO ŞK KU UN N

Herkese merhabalar. Öncelikle bu yazının dergideki yerinden bahsedip biraz da olsun yadırgama olursa bunun önüne geçebilmek için bir giriş yapalım. Öncelikle bu yazıda demagoji, sömürü ya da benzeri şeyler yoktur ki bunlara gerek de yok zaten. Sadece diğer konularda olduğu gibi bu konuda da bildiklerimizi ve öğrenebildiklerimizi size aktarmak istiyoruz.

Zaten hepimizin bildiği gibi, üzerine dergi çıkarttığımız açık kaynağında temel taşlarından olan Linux'un dâhi sloganı "insanlık içindir"... "İnsanlık için" kavramının sadece bilgisayar, internet, açık kaynak değil bu gibi anlayışların yanında biraz duyarlılık ile bütünlüğü sağlanacaktır diye düşünüyoruz. Bu savı arkamıza alarak böyle yazının yazılmasında bir uygunsuzluk görmüyoruz. Muhtemelen sizler de görmemişsinizdir.

Yazının amacı UNICEF ve çalışmaları hakkında, daha çok kendi ağızlarından bilgi vermek. Bir röportaj, söyleşi ya da kendilerinden alınan bir yazı ile değil, tamamen resmi sitelerinden öğrendiklerimizi aktaracağız. Bunun bile bir adım atabilmek için yeteri kadar bilgi sunabileceğini düşünüyoruz.

Önce "UNICEF nedir?, kimdir?" sorusunun cevabını Wikipedia'dan alalım;

"Birleşmiş Milletler Çocuklara Yardım Fonu ya da UNICEF (İngilizce: United Nations Children’s Fund) 1954 yılında Birleşmiş Milletler Genel Kurulu tarafından çocuk haklarının korunması adına tanıtım ve savunu çalışmaları yapmak, çocukların temel gereksinimlerinin karşılanmasına yardımcı olmak ve çocukların potansiyellerini eksiksiz biçimde gerçekleştirmek için fırsatlar yaratmak

üzere görevlendirilmiş bir kuruluştur."

Ayrıca kendi sitelerinde kendileri hakkında demişler ki;

"Birleşmiş Milletler Çocuk Fonu UNICEF, dünyada çocuk haklarının başlıca savunucusudur. Hükümetlerle çalışarak kalıcı sonuçlar elde eden bir örgüttür. Bütün çocukların bedensel, zihinsel ve sosyal bakımdan mümkün olan en üst seviyeye erişecek şekilde gelişebilmeleri için gereken haklarını belirleyen Birleşmiş Milletler Çocuk Hakları Sözleşmesi, UNICEF'in çalışmalarının temelini oluşturur."

Okuduysanız eğer benim gibi "daha insanî bir şey olamaz herhalde" görüşüne katılıyorsunuzdur diye düşünüyorum. Kendini çocuklara adamış bir örgüt...

Ayrıca şunu ekleyeyim fakat zaten böyle bir şeyi tahmin etmişsinizdir: "Unicef Türkiye Milli Komitesi, Bakanlar Kurulu'nun 12.11.1974 gün ve 7/9055 sayılı

kararı ile Kamu'ya yarar dernekler arasına alınmıştır".

"Kamu'ya yarar" ibaresi ile "İnsanlık için" ibaresinin alakasını anlatmama gerek olmadığını düşünüyorum. Yine UNICEF sitesinden kendi misyonları ile ilgili olarak söylemlerde;

"UNICEF'e göre çocukların yaşatılmaları, korunmaları ve gelişmeleri insanlığın gelişme öğesi olan evrensel kalkınmanın

13

(14)

belirleyicileridir."

"UNICEF, tarafsızdır ve işbirliğinde ayrımcılığa karşıdır. Bütün hizmet ve çalışmalarında öncelik en muhtaç durumdaki çocuklara ve ülkelere verilir."

"UNICEF kendini, özellikle en muhtaç durumdaki çocukların yardımına koşmaya adamış bir kuruluş olarak savaş, çatışma ve doğal afet ortamlarında olan çocuklara ve ailelerine yardım götürür. Aşırı yoksulluk içindeki ve her türlü şiddete, istismara maruz kalmış çocuklarla, engelli çocuklara UNICEF öncelik verir."

Gibi aklınıza gelebilecek her türlü insancıl ve aslında gerekli olan şeyler mevcut fakat isteyen kendi sitelerinden daha ayrıntılı bilgi edinebilir ki amaç da kişileri UNICEF ile bağ içine sokmaktır. Sadece tanıtımını yapıp "bakın böyle işte gördünüz mü" demek değildir.

"5 Yaşında Anaokuluna!", "Okul ekliyoruz", "Pakistan Sel Felaketi" gibi kampanyalar mevcut.

Örneğin "Okul ekliyoruz" kampanyasının açıklaması şu şekilde başlıyor; "Çeşitli nedenlerle okula gitmeyen, gönderilmeyen yüz binlerce çocuğumuz desteğimizle yürütülen "Haydi Kızlar Okula"

kampanyasıyla okullu oldu. Ancak sahadan alınan bilgiler daha yüz binlerin açıkta kaldığı ve bunda en önemli darboğazın okulsuzluk, sınıfsızlık olduğu idi. Bunlara çözüm bulmak şarttı."

Bütün kampanyalarının tanıtımını yapmamıza ya da bir sayıda hepsinden bahsetmemize imkan yok tahmin ettiğiniz üzere; fakat açıklamalardan sadece birer paragraf bile "Evet, hemen destek olalım"

demeye yetecek tarzda ve gerekli bilgilendirme düzeyinde.

Bütün çalışmaların amacı, neye yönelik olduğu, nasıl katkı sağlayabileceğiniz gibi soruların hepsinin cevabını UNICEF'in sitesinden edinebilirsiniz.

Fakat şunu belirtmek isterim ki böyle bir oluşuma bir mesaj ile bile oturduğumuz yerden dâhi katkı yapabilmemiz güzel bir durum açıkcası benim şahsi görüşüme göre. Herkes yardım edebilsin diye ellerinden geleni yapmışlar gibi gözüküyor.

Banka hesap numaraları, telefon bağlantıları, mesaj ile yardımlar gibi bütün her şey sitelerinde açıkca belirtilmiştir. İlgili bağlantı;

Bu kadar duyarlı insanların olduğunu bilmek de güzel. Yazıyı okuyan duyarlı kişilere de ayrıca teşekkür ederiz.

14

(15)

İlk olarak, butonumuzu çizmek için, Rectangle (dikdörtgen) aracını araç kutusundan seçelim ya da kısayolu olan R tuşuna tıklayalım ve şekildeki gibi butonumuzu çizelim. Çizdikten sonra dikdörtgenimiz seçili hale gelecektir, alt kısımdaki renk kutusundan gördüğümüz ilk mor renk olan Purple rengine tıklayarak rengini aşağıdaki gibi ayarlayalım.

Bu yazıda, açık kaynak kodlu vektörel grafik uygulaması olan Inkscape'in kullanımına ve temel özelliklerine bir giriş yapacağız.

SUDO'nun 2010 yılı, Mart, Nisan, ve Mayıs sayılarında, Ramazan GÜRBÜZ arkadaşımız Linux'ta Grafik Tasarım, Vektörel Tasarım ve Kendi Penguenimizi Çiziyoruz yazıları ile vektörel tasarım ve Inkscape'in kullanımına dair bilgiler vermişti. Bu nedenle, vektörel tasarım ve Inkscape ile ilgili temel bilgileri edinmek için bu yazıları okumanızı öneriyorum. Çünkü bu yazıda uygulamalı olarak Inkscape'in özelliklerine eğileceğiz. Vektörel çizimin en önemli avantajının, hazırladığımız tasarımları istediğimiz boyutta ve aynı kalitede resimler halinde aktarabilmemiz olduğunu belirtelim. Bu yazıda, Inkscape'in Ubuntu 10.10 deposunda da bulunan son sürümü olan Inkscape 0.48 kullanılacaktır. Bir çok yeni özellik eklenmesine karşın, dersimizi Lucid depolarında bulunan 0.47 sürümü ile de takip edebilirsiniz. Arayüzde farklılıklar vardır ancak takip etmenize engel değildir.

Öncelikle Inkscape uygulamasını Yazılım Merkezi ya da farklı bir yoldan kurduktan sonra başlatalım.

Şimdi kısa bir süre uygulamanın arayüzünü inceleyelim. Sol tarafta araç kutumuz var ve içinde dikdörtgen, elips, çokgen çizebileceğimiz çeşitli araçlar ile farklı şekiller çizebileceğimiz çizim araçları ve diğer araçlar var. Bu araç kutusundaki araçları kısayolları ile seçmeyi öğrenirsek, daha hızlı çalışabiliriz.

Uf U f uk u k K KI IL L I I ÇA Ç AS SL L A A N N

15

(16)

istiyorsanız, CTRL+Z kısayolunu kullanabilirsiniz. Ovalliği elle girerek belirlemek isterseniz, aşağıdaki resimde gördüğünüz üstte yer alan Rx ve Ry değerlerini verdiğim şekilde girebilirsiniz.

Şimdi butonumuzun köşelerini oval hale getireceğiz. Butonumuz seçili değil ise soldaki araç kutusundan Ok ile gösterilen araca tıklayalım ya da kısayolu olan S tuşunu kullanarak dikdörtgenimizi seçelim ve seçili iken tekrar Rectangle (dikdörtgen) aracımızı sol taraftan seçelim. Butonumuzun üç köşesinde kutucuk ve daireler belirecek. Sol alttaki daireden tutarak yukarı çekersek, kenarların ovalleştiğini göreceğiz. Aynı şekilde bu dairenin altından çıkan diğer daireyi de istediğimiz gibi sola çekerek ovalliğin ayarını kendimize göre ayarlayabiliriz. Bu kısımda küçük daireleri istediğiniz yönden çekerek ovalliği ayarlayabilirsiniz. Eğer yaptığınız işlemi geri almak

Oval kenarlı butonumuzun kaba şekli hazır. Butonumuz şu haliyle renk olarak epey sade. Bu nedenle bir geçiş efekti ekleyeceğiz. Bunun için öncelikle şekildeki gibi sağ taraftaki dikine menüde (Commands Bar) bulunan Fill and Stroke butonuna tıklayarak ya da

CTRL+SHIFT+F kısayoluyla renk diyaloğunu açıyoruz.

16

(17)

17

Ardından, yanda görüldüğü gibi Linear Gradient butonuna basarak, doğrusal geçiş ayarlarına giriyoruz.

Butonumuzun bir tarafı şeffaflaştı, ancak önemli değil, biz istediğimiz ayarı yapacağız. Edit butonuna tıklayarak geçiş menüsüne giriyoruz.

Bu menüden geçiş için çok sayıda farklı renk ve ton ayarlayabiliriz.

Ancak şu an işler fazla karışsın istemiyoruz. Gördüğümüz gibi 2 adet geçiş durağı var (stop3774 ve stop3776 diye). Biz stop3776 olanı, yani şeffaf geçiş durağını seçiyoruz, aşağıda görüldüğü gibi.

(18)

18

Geçiş duraklarının altında RGB, HSL, CMYK, Wheel ve CMS adlı farklı renk ayarlama menüleri var. Biz şimdilik HSL menüsüne giriyoruz ve şekildeki gibi önce A ayarını 255'e getirerek geçiş durağını tamamen opaklaştırıyoruz ve L ayarını da düşürerek 48 olarak ayarlıyoruz. Böylelikle, yanda görüldüğü gibi geçiş durağı rengimizi koyulaştırdık.

Şimdi Gradient Editor diyaloğunu kapatalım ve elle istediğimiz bir geçiş şekli ayarlamaya çalışalım. Bunun için de ya şekilde işaretçiyle gösterildiği gibi araç kutusundan Create and Edit Gradients adlı geçiş aracına tıklıyoruz, ya da çizdiğimiz butonun üzerine çift tıklıyoruz.

Butonumuzu boydan boya enine bölen çizgi, geçiş ayarını yapacağımız çizgidir.

(19)

19

Bu çizginin her bir ucu, bir geçiş durağını temsil eder. Örneğin burada kare olan uç, butonumuzun normal rengini, yani daha açık renkli olan durağı, yuvarlak renkli uç da sonradan ayarladığımız daha koyu renkli geçiş durağını gösterir. Bu çizgiyi istediğimiz şekilde hareket ettirebiliriz. Çizginin konumu ve uzunluğu, duraklar arası renk geçişinin yönünü ve sertliğini ayarlamamızı sağlar. Yumuşak bir açık-koyu geçişi için çizgimizi şekildeki gibi ayarlayalım. Çizginin bu şekilde tam dik inmesini istiyorsak, CTRL tuşuna basarak fareyle çizgiyi hareket ettirelim. CTRL fonksiyonu, Inkscape'te çizgileri, geçişleri, yolları tam dik ya da belli açılarla (45 derece) gibi net şekilde ayarlamaya yarar.

Şimdi farklı bir bölüme geldik. Butonumuza hoş bir parlaklık vermek için bir dizi işlem yapacağız. İlk olarak butonumuzu klonluyoruz;

bunu yapmak için butonumuzu seçip CTRL+D tuşlarına basmamız yeterli. Aynı renkte bir klon butonumuzun tam üzerine oturacaktır (farkedemeyiz). Kopyaladığımız buton seçili durumda olduğu için, rengini değiştiremek için aşağıdan bir renk seçelim. Seçtiğimiz rengin hiç önemi yok, kafamızı karıştırmaması için ilgisiz bir renk seçebiliriz.

Ben turuncu seçtim.

(20)

20

Şimdi Elipse aracını kullanarak basit bir elips çizeceğiz. Bunun için soldan şekilde seçili olduğu gibi Elipse aracına tıklıyoruz ya da E kiısayoluyla aracı seçiyoruz. Daha sonra işaretçimizle şekilde görüldüğü büyüklükte dikdörtgenin üzerine bir elips çiziyoruz. Farklı bir yere de çizsek sorun değil, Select aracıyla (V kısayolu) tutup sürükleyerek butonumuz üzerinde aynı yere yerleştirebiliriz. Elipsin buton üzerindeki konumu şekildeki gibi olmalı ve butonumuzun üst yarısını yaklaşık olarak kapatmalı.

Şimdi elipsimiz seçili durumda değilse önce seçiyoruz, seçili ise Path menüsüne girerek Object to Path işlemini gerçekleştirerek, ya da SHIFT+CTRL+C kısayoluyla elipsimizi path formuna çeviriyoruz.

Görüntüde herhangi bir değişiklik olmayacak. Bundan sonra ise yine elips seçili değilse seçiyoruz, seçili ise SHIFT tuşuna basılı tutarak turuncu butonumuza fare ile tıklayarak seçiyoruz. SHIFT tuşuna basılı tutmak, her iki şekli de seçmemizi sağlar. Her iki şekil de seçili halde ise, yine Path menüsüne giderek, Intersection komutunu veriyoruz ve kesişimlerini alıyoruz. İşlemleri verdiğim sırayla

gerçekleştirdiyseniz, aşağıdaki gibi bir durum ortaya çıkacaktır.

(21)

21

Yaptığımız işlemler ile, çizdiğimiz elips ve kopyaladığımız butonun kesişimini almış bulunuyoruz. Böylelikle butonumuzun üst tarafında turuncu bir şekil oluşmuş oldu. Bu turuncu şekil seçili değilse seçiyoruz ve önce Path menüsüne girerek Object to Path işlemini yaparak ya da yine SHIFT+CTRL+C kısayoluyla şekli path formuna dönüştürüyoruz. Daha sonra ise dönüştürdüğümüz şekil seçili iken Path menüsüne girerek Dynamic Offset diyoruz ya da CTRL+J kısayolunu kullanıyoruz. Bu işlemden sonra şeklimiz aynı kalacak, fakat sol üst kısmında resimde işaretçi ile gösterilen "node"

belirecektir.

Bu beliren node, bizim şeklimizin boyutunu buton içinde değiştirmeye yarayacak. Buradan tutarak aşağı doğru çekelim ve şeklimizi butonun sınırları içerisine alarak küçültelim. bu küçülttüğümüz şeklin rengini de aşağıdaki renk paletinden beyaz seçerek beyaz yapalım.

Aşağıdaki gösterdiğim resimdeki gibi olacaktır.

(22)

22

Beyaz yaptığımız şekli seçerek yine Path menüsünden Object to Path yapıyoruz ve daha sonra yine Path menüsünden Dynamic Offset yapıyoruz. Yine sol üstte beliren node kısmından tutarak bu sefer şeklimizi büyütüyoruz ve butonun daha büyük bir kısmını kaplamasını sağlıyoruz, yandaki resimde olduğu gibi.

Şimdi beyaz şeklimiz seçili değilse seçiyoruz ve sağ taraftaki dik menüden, fırça simgeli renk diyaloğunu açıyoruz ya da

SHIFT+CTRL+F kısayolunu kullanıyoruz. Buradan Linear Gradient (doğrusal geçiş) seçiyoruz daha önce butonumuzun ilk rengindeki geçişi ayarlarken yaptığımız gibi çıkan geçiş çizgisini, resimde benim gösterdiğim gibi konumlandıralım.

(23)

23

Her şey yolunda gittiyse, renk diyaloğunu kapayalım. Işıltılı ve güzel bir butonumuz olmalı. File menüsünden yaptığımız çalışmayı, Save diyerek kaydedelim. Oluşturduğumuz butonu, fare ile çevreleyerek tamamını seçelim. File menüsünden Export Bitmap menüsüne girelim ve üstteki seçeneklerden Selection kısmının seçili olduğundan emin olalım. İstediğimiz boyutu belirleyip, yerini de belirtirsek, butonumuzdan her boyutta PNG dosyaları oluşturabiliriz, hem de resim kalitesi hiç azalmadan.

Dersimiz bitti. Siz de aynı yolları kullanarak, istediğiniz şekillerde, farklı butonlar oluşturabilirsiniz.

Not: Bu ders hazırlanırken, http://screencasters.heathenx.org/episode- 017/ adresindeki video dersten yararlanılmıştır.

(24)

Se S e me m e te t e y y C CO Ş KU K UN N

1.) Çoğu kullanıcı bazı işlemleri yapmak için root kullanıcısına şifre atar. Daha sonra yetki gerektiren işlemlerini root kullanıcısı üzerinden hallediyor. İlk ipucumuz root kullanıcısının şifresi yokken bu kullanıcı hesabına giriş yapmak. Bu işlemi yapabilmek için root kullanıcısına bir şifre vermek zorunda değiliz. Bunu bir kaç komut ile yapabiliyoruz.

komutlarını girdikten sonra kendi kullanıcı şifremiz ile root hesabına düşebiliyoruz.

2.) Uçbirimden bölümleriniz hakkında ayrıntılı bilgiyi "df -h"

komutu ile alabilirsiniz. komutu ile parametreleri incelediğinizde de parametresinin anlaşılır düzeyde bilgi verdiğini göreceksiniz.

3.) Kopyala - yapıştır işlemlerinden alışkanlık edindiğimiz

kısa yolları uçbirim için geçerli değildir. Hatta o anda çalışan süreci sonlandırmak için kullanılır. Yani örneğin mysql çalışıyor ve uçbirimden mysql'e erişim sağladınız. Bir yazı ya da tabloyu kopyalamak için kombinasyonunu kullanırsanız eğer, işleminiz kopyalamaya değil, mysql'i sonlandırmaya yarar. Ya da hangi süreç o anda çalışıyorsa... Mysql kullanmayıp merak edenler önce

"top" komutunu çalıştırıp sonra "ctrl + c" kombinasyonu ile deneyebilirler. Temrminalde kopyala - yapıştır işlemlerini

(kopyala) ve "ctrl + shift + v" (yapıştır) şeklinde hallediyoruz. Tabi alışkanlık haline gelince daha kolay olan bir yol da; verinin üstünü farenin sol tuşu ile tarayıp hiç kopyala demeden farenin 3. tuşuna

(tekerlek) basmak. Böylece doğrudan yapıştırma işlemini yapabilirsiniz.

4.) Uçbirimde çok işlem yapıp çıktıları takip etmek zorunda kalınca, işler bazen karmaşık bir hâl alabiliyor. Bu durumlarda "clear"

komutu ile ekranı temizleyip gözlerinizi rahatlatabilirsiniz. Fakat ekran temizlemeyi unutup da önce komutu yazarsanız eğer ve de komut eğer uzunsa; önce o uzun komutu sil -> "clear" komutunu ver ->

komutu tekrar yaz... Bu adımları izlemek yerine

kombinasyonu işinizi görecektir. Bu şekilde hem ekranı temizleyip hem de var olan yazılmış komutu saklayabilirsiniz.

24

(25)

A A yb y ba ar rs s Ç ÇA AP PA AN N

Ayrıca package details seçeneği ile programın türü,sürümü,bağımlılıkları,boyutu ve hangi depoda yer aldığı hakkında bilgi sahibi olabiliyoruz.

Bize lazım olan paketi seçip download dediğimizde,paketi bağımlılıkları ile beraber indiriyor.

İndirilen paketlere "~/.keryx/projects" dizini altında ulaşabilirsiniz.Tabi ki ayarlardan bu dizini değiştirmeniz mümkün.

Program açıkken refresh diyerek depoları güncelleyebilir,get updates diyerekde sistemi güncelleyebilirsiniz.

Paketlere "~/.keryx/projects/<your_project_name>/packages/" dizini altında ulaşabilirsiniz.Size lazım olan paketleri usb bellek,cd ve benzeri araçlar ile aldıktan sonra yüklemek istediğiniz bilgisayarda "sudo dpkg -i –force-depends *.deb" gibi bir komut yürüterek kurabilirsiniz.

Bu pencereden ister yeni bir proje oluşturuyoruz,istersekde oluşturulan projelerden herhangi birini seçebiliyoruz.

Seçimimizi yaptıktan sonra ise paket listesini yenileyip

yenilemeyeceğimizi soruyor.Güncel bir sistem için tabi ki yenilememiz lazım.

Programımız üzerinden paket seçimi oldukça basit bir şekilde yapılabiliyor.

Programımızı açtığımızda karşıma güzel ve sade bir proje seçme/oluşturma ekranı geliyor.

Güncellenen dosyaları diğer bilgisayarlarda da kullanabilirsiniz.

Böylelikle internetiniz olmadan da başka bilgisayardan indirdiğiniz güncellemeler ile programlarınızı güncel tutabilirsiniz.

25

(26)

Se S em me et te ey y C CO ŞK KU UN N

Yazıya başlamadan önce "uçbirim = terminal" eşitliğini de belirtirsem kafa karıştırmaya mahâl vermemiş olurum.

Özellikle yeni başlayan arkadaşların kafasında tam şekillenemediğini düşünüyorum "uçbirim" olayının. Verilen komutları kod olarak düşünüp, sanki uçbirimden yapılan işlemler, kodlar ile terminal "programlanıp" bir takım işlemler yaptırılıyor gibi algılanabiliyor. Bir yerde bu doğru aslında ama işler tam olarak da bu şekilde yürümüyor, yani biz terminale işlemler yaptırmıyor,

"yaptırtıyoruz" diyebilirim sanırım...

Yani uçbirime girdiğimiz komutlar, birer kod değil, programlardır. En çok kullanılanlardan örnek verecek olursam "apt- get" bir kod değil, bir program adıdır. Bu komut ile bizim yaptığımız;

terminale, "apt-get" programını çalıştır demektir. Ya da "cp, mv ve cat"

gibi komutlar ayrıca bir kodlama değil, sadece "cp, cat ve mv"

programcıklarını çalıştıran komutlardır.

Bash, bütün bunların (programların) aynı anda kullanılabilmesi, sistem komutlarına erişim ve bu sayede örneğin paralel programlama (mesela fork) gibi olanakların bile sağlanması ile de "programlama özelliği" katabiliyor işin içine. Yani bir çok komutu bir dosya içerisinde toplayıp, bir programmış gibi terminalden çalıştırabilirsiniz. Doğrudan çalıştırabilirsiniz çünkü önceden dediğimiz gibi uçbirim sadece bu sizin yazdığınuz komutları yorumlayacaktır, bu nedenle derleme gibi bir işlem yoktur. Şimdilik bu kısmı ile ilgilenmiyorum, asıl ilgilendiğimiz komut yorumlama ve C kısmına yavaş yavaş girebiliriz.

Terminal, belirli dizinler içersinde, komut satırından girilen argümanları arar. Dizinlerin tutulduğu bu çevre değişkenini PATH olarak isimlendiriyoruz.

$PATH

komutunu vererek, bu dizinleri elde edebilir, hatta ayrıca da bu dizinlerden birisi olan "/bin" dosyasını açıp cp, mv, cat gibi programcıkları görebilirsiniz. Ayrıca bu "PATH" değişkenine kendiniz de dizin ekleyebilirsiniz. Örneğin kendi yazdığınız programları

"Programlarım" isimli bir dizinde saklıyorsunuz diyelim. Uçbirimden bu programları çalıştırmak için, programların doğrudan ismi ile çalışbilmesi için (mv, cp gibi...) ya PATH değişkenine, "Programlarım"

dizinini dahil etmelisiniz ya da zaten PATH değişkeni içersinde bulunan bir dizin içerisinde programlarınızı saklamalısınız. Yani kendi programlarımızı çalıştırmak için tam yol girmemiz ile diğer programları sadece ismi ile çalıştırabilmemizdeki fark bundan kaynaklanıyor.

Kod, komut nedir biraz karıştı burada sanırım, bu kelimeler ile anlatmak istediklerim tam olarak şunlardır: Bu yazının ekleri içerisindeki kaynak dosyalar (.c uzantılı dosyalar) içerisinde yazılmış kelime gruplarından kod, uçbirimde, bu kodları derleyerek oluşturduğumuz programları çağıran girdilerden de komut olarak bahsediyorum.

Bahsettiklerimi daha iyi anlamak için olayı çok basite indirgersek; bir PATH değişkenimiz var , verilen komutları çeşitli anahtarlara göre yorumlayan ve çalıştırılabilir programları PATH değişkeninin içerdiği dizinlerde arayan bir uygulama...

Bir yorumlayıcı...

26

(27)

Programın ana fonksiyonunda (main), sonsuz bir döngü kuruldu. Yani daima kullanıcıdan bir giriş isteyecek. Kullanıcı "exit"

yazdığı zaman sonsuz döngü kırılıp, program sonlanıyor. "PATH"

yazdığı zaman, ilgili değişken ve içerdiği dizin sayısı görüntüleniyor.

Öncelikle söylemem gereken, kodlardan anlayacağınız gibi, programın çalışabilmesi için, programın bulunduğu dizin altında

"dizinler" adı ile bir metin dosyası oluşturmanız gerekiyor. Bu metin dosyası bir nevi bizim depomuz olacak. "dizinler" adlı boş bir metin dosyası oluşturup programı çalıştırabiliriz.

Program global olan PATH adında bir değişken içeriyor. Bu değişken bizim dizinlerimizi saklıyor. Ana programı derleyip çalıştırıyoruz ve program açılınca karşımıza çıkan komut satırına (>>>) "PATH" yazarak ilgili değişkenin içeriğini görebiliriz. Programı ilk açtığımızda PATH yazdığımızda;

PATH:

Toplam 0 tane dizin içeriyor

Gibi bir sonuç almamız lazım. Çünkü yorumlayıcımıza hangi dizinlere bakacağını bildirmedik daha. Bildirdiğimiz dizinler ne işimize yaracayacak? Program belli anahtar kelimeler dışında (exit, PATH) girilen verileri bu belirlediğimiz dizinlerde çalışan dosya olarak arayacak. "PATH" adresine yeni bir dizin eklemek için programın komut satırından "Dizinekle" yazıyoruz.

>>>Dizinekle

Eklenecek dizini Girin:/home/sem0900/Desktop/YeniDizin

>>>PATH

PATH:/home/sem0900/Desktop/YeniDizin:

Toplam 1 tane dizin içeriyor

Gördüğünüz gibi yeni dizini programa fonksiyon yardımı ile eklemiş olduk. Artık programı kapatıp açsak dahi bu dizinimiz hatırlanmış olacak, çünkü "dizinler" dosyasında kayıtlı olacak (girilen yeni dizinin var olduğundan emin olmalısınız çünkü bu dizinlerde programa girilen girdiler aranacak). Ben "YeniDizin" içerisine

"kopyala.c" isimli ek dosyasını örneğin "kopyala" adı ile derleyip yerleştiriyorum. Aynı şekilde "kes.c" ek dosyasını ise "kes" adı ile derleyip aynı dizin içerisine koyuyorum.

Şimdi ana programımızda,

"kes"

"kopyala"

komutlarından birisini verirsek (ya da programları hangi isim ile derlediyseniz), program bu komutları yorumlayarak, ilgili programları çalıştıracaktır. Daha sonradan istediğiniz uygulamayı PATH dosyası içerisine atıp, ana programda bu dosyanın adını yazarak çalıştırabilirsiniz.

Kesme ve kopyalama işlemlerine dikkat ederseniz standart C fonksiyonları ile yapılmıştır, yani herhangi bir "Bash" komutu ya da doğrudan sistem çağrısı yok. Programlardaki sistem çağrısı sadece ekran temizlemek (system("clear") için ve dosyaları çalıştırmak için kullanıldı, bu çağrı "clear" yerine "CLS" olarak değiştirilip program Windows'ta da kullanılabilir belki ufak modifikiyasyonlar da isteyebilir, emin değilim, denemedim çünkü. Bu sayede kendi uçbiriminizi istediğiniz ortamda kullanabilirsiniz. Tabi ki her sistemin kendine özel fonksiyonları kullanılarak çok daha geniş işleve sahip

bir komut yorumlayıcı yazılabilir.

27

(28)

Çünkü dosya ve dizin arama işlemleri sistemden sisteme farklılık göstermektedir. Neyse, biz kendi alanımıza dönebiliriz...

Kendimize bir program daha yazalım, örneğin bir şifreleme programı olsun. Hazır yazılmışı var; "sifrele.c" ek dosyasını "sifrele"

adıyla derliyorum ve bu sefer programımın "PATH" alanını genişleterek yeni bir dizin daha ekliyorum. Önce masaüstü dizinimde

"Programlarım" adında bir dizin oluşturuyorum ve sonra da PATH değişkenime bu dizinimi ekliyorum.

>>>Dizinekle

Eklenecek dizini Girin:/home/sem0900/Desktop/Programlarım Kontrol amaçlı olarak komut satırına "PATH" girerek yeni dizinin eklenip eklenmediğini kontrol edebilirsiniz. Daha sonra yeni dizin de eklendi ise "sifrele" programını "Programlarım" dizinine attıktan sonra artık komut satırımızda "sifrele" girdiğimiz zaman bizi bu programa yönlendirecektir.

Tabii ki bu dizinler içerisinde sadece kendi yazdığınız değil, herhangi bir programı çalıştırabilirsiniz. Hatta /bin dizini altında "bash"

dosyasını dahi PATH değişkeninin içerdiği dizinlere kopyalayarak çalıştırabilirsiniz. İlginç oluyor ama evet mümkün...

Yazdığmız program tahmin ettiğiniz üzere çok yetersiz bir program, daha önce söylediğim şekilde olayın çok fazla basite indirgenmiş hali olduğunun altını tekrar çizmek isterim. Sadece bu yazıda örnek olarak gösterebilmek için yazılmış, basit bir programdır.

Çok basit bir uygulama ile komut yorumlayıcı mantığını anlatmaya çalıştım. Bu doğrultuda kafasında ufak soru işareti olan

arkadaşlar var ise umarım yardımcı olabilmişimdir.

NOT 1: Yazı içerisinde kullanılan programlarda (kes, kopyala, sifrele) hata kontrolü yapılmamıştır. Yani programlar çalışacaktır fakat bir tam sayı yerine alfabetik bir karakter girilmesi hatalı çalışmaya yol açabilir. Konunun anlaşılması yönünde programlar amaç olmadığı için hata kontrolüne gerek duymadım.

NOT 2: Olayın çok basite indirgendiğini tekrar söylemek isterim. Program biraz değiştirilerek daha profesyonel bir çalışma yapılabilir. En göz önünde olanlardan; "Dizinekle" fonksiyonunda kullanıcının girdiği dizinlerin var oldup olmadığının kontrolü, "NOT 1"

içerisinde bahsedilen kontroller, PATH değişkeninin içerdiği dizinlerde örneğin "kes" adında dosya var ise çalışan dosya olup olmadığının kontrolü eklenebilir, programlara komut satırı argümanları dahil edilerek, uçbirimde çalıştırdığımız diğer programlar gibi parametre ile çalışması sağlanabilir... Bu şekilde istediğiniz doğrultusunda çalışmanızı genişletebilirsiniz.

28

(29)

Se S e me m e t t e e y y C CO Ş KU K UN N

Şimdiye kadar öğrendiğimiz komutlar ile genel anlamda yapılabilecek bir çok şeyi yapabiliyoruz. Veri tabanı oluşturma, veri tabanı silme, bir veri tabanına tablo ekleme/çıkartma, tabloya veri ekleme, çıkartma, güncelleme, tabloya eklenen verileri istenilen düzende geri alma, bir kaç tablodan aynı anda veri çekme, iç içe sorgular...

Bu gibi işlemlerin hepsini yapabiliyoruz. Fakat çok büyük eksik olarak, hiç bir fonksiyonu kullanmadık. Bu büyük eksiklik. Örneğin;

"aaaaa" gibi girilmiş bir kaydı "AAAAA" gibi çekmek istersek bu bildiklerimiz ile yapamayacağımız anlamına geliyor. Bu yazıda standart MySQL fonksiyonlarına giriş yapacağız.

Bir önceki sayıda size verilen veri tabanı üzerinden devam edeceğim yine. Fakat ben veri tabanını baştan kurmuş bulunuyorum. O nedenle çıktılarımız arasında fark olabilir. Önemli mi bu fark? Hayır konunun anlaşılması açısından önemli değil, sadece bende ID numarası 1 olan bir veri sizde 151, bende 2 olan sizde 200 olabilir. Tabii isterseniz bunları düzeltebilirsiniz.

Başlayalım;

Fonksiyonlar aralarında belli kıstaslara göre sınıflara ayrılıyor.

Örneğin katar fonksiyonları, tarih fonksiyonları gibi. Katar fonksiyonları da bir karakter dizisi içerisinde (katar ile karakter dizisi aynı anlamda kullanılmaktadır) konum, pozisyon, kesme, doldurma ve benzeri şekilde kendi aralarında ayrılıyorlar. Ben sadece "katar fonksiyonları" diyerek genel olarak karakter dizisini ilgilendiren fonksiyonları anlatacağım. Siz zaten ne işe yaradığını anlayabilirsiniz.

Bu fonksiyonları hepsi, parametre olarak aldıkları karakterler dizilerinin, karakter sayısını bulmak için kullanılırlar.

Yani;

Yukarıdaki bütün sorgular aynı sonucu döndürecektir, sonuç ise;

Burada dikkat edilmesi gereken, fonksiyonları bu şekilde tek başlarına kullanırken dahi "select" ifadesinin kullanılmasını unutmamak.

29

(30)

Bu fonksiyon parametre olarak aldığı karakterleri ya da karakter dizilerini birleştirir. Kullanımı basit ve aşağıda olduğu gibidir.

Daha önceden belirttiğim gibi öğrendiğimiz şeyler birbirinden bağımsız değil. Yani bu fonksiyonları tablolardan veri çekerken kullanabilirsiniz ki asıl amaç da budur zaten. Aşağıdaki gibi;

Çıktıyı incelerseniz, bütün kişilerin isim ve soyisimleri birleştirildi fakat çok da etkili bir görünüme sahip değil.

Bu şekilde daha çok göze hitap ediyor sanırım. Öncelikle şuna dikkat etmelisiniz; "select concat(isim, soy_isim) as Kisiler from uyeler;"

komutunda "concat()" fonksiyonun parametrelerini tırnak içerisine almadık. Çünkü eğer ki tırnak içine alsaydık, MySQL bunları "uyeler"

tablosunun birer sütunu değil de birer karakter katarı olarak ele alırdı ve beklenmedik sonuçlar alırdık. Çıktımız şuna benzeyen ve bu şekilde

e uzayıp giden bir çıktı olurdu;

Ayrıca

komutuna da gerek olmadığını söylemem lazım. Çünkü MySQL bunu zaten düşünmüştür. Bir sonraki fonksiyona geçelim;

concat() fonksiyonundan farklı olarak, bir fazla parametre alır.

concat_ws() fonksiyonu, ilk parametresini, bitiştireceği karakter dizileri arasında, ayraç olarak kullanır. Aşağıdaki komutun çıktısını inceleyerek daha rahat görebilirsiniz.

30

(31)

Girişte bahsettiğim fonksiyonların kendi içlerinde sınıflandırılmasına örnek olarak, bu gördüğümüz fonksiyonlar

"Uzunluk ve Bitiştirme Fonksiyonları" olarak geçmektedir.

Bu fonksiyonlar, parametre olarak verilen karakter dizisinin, sağından veya solundan boşlukları siler.

Bu şekilde girilen parametrenin sağından itibaren boşlukların atıldığını görürsünüz. ltrim() kullanımı da aynıdır. Yalnız daha iyi görmek için şu şekilde denemek de fayda var;

mysql> select length(rtrim('Ubuntu-tr '));

Gördüğünüz gibi her iki fonksiyonu birleştirmiş olduk. Yani rtrim() fonksiyonunun geri dönüş değerini ("Ubuntu-tr") length() fonksiyonuna atamış olduk.

Bu fonksiyona parametre olarak verilen bir karakter dizisinin başından, sonundan ya da genel olarak içinden, istenilen bir karakter çıkartılabilir. Karakter dizimiz; "XXXUbuntuXXXSUDOXXX" olsun diyelim.

Aşağıdaki uygulamalar ile bütün kullanımlarını göreceksiniz.

31

(32)

Kesme değil doldurma işlemi için kullanılırlar. Örneğin "Ubuntu- SUDO" karakteri dizisini "XXXUbuntu-SUDO" haline getirmek için;

Komutunu verebilirsiniz. Buradaki 14 ise;

karakter katarına, boyutu 14 olana kadar 'X' karakterinin ekleneceğini belirtiyor. rpad() kullanımı da aynı şekildedir. Bizim karakter katarımızın boyutu 11 olduğu için büyüklüğü 14 girdik...

Fakat her zaman üzerinde çalışacağınız karakter katarının uzunluğunu bilme gibi bir lüksünüz olmaz. Örneğin FCM Tayfasındaki herkesin kullanıcı adının başına ve sonuna "XXX" dizisini eklemek istiyorsunuz diyelim; herkesin kullanıcı adını eşit uzunlukta girmesini bekleyemeyiz tabi ki. Bu nedenle yukarıdaki örnekte olduğu gibi sabit bir değer kullanamayız. Yukarıdaki örnekte 14 kullanmıştık fakat bu örnek için işler öyle olmayacak, çünkü her bir adımda işlem yapılacak olan karakter katarı farklı uzunlukta olacak. Aşağıdaki kodu inceleyebilirsiniz;

Yukarıdaki komut sadece length, rpad() ve lpad() fonksiyonları ve "as" anahtarından oluşuyor. Buradaki belirlemeniz gereken asıl durum; uzunlukların değişken olmasının önemli olmaması. Çünkü zaten işlem yapacağımız karakter katarının uzunluğunu length() fonksiyonu ile belirleyebiliyoruz. Daha sonra örneğin 3 tane 'X' ekleyeceğimiz için uzunluğu "length(kullanici_adi) + 3" olarak almamızda bir sakınca yok. Bu şekilde farklı uzunluk sorununu aşmış oluyoruz.

Örnek karışık gibi dursa da incelediğinizde basit olduğunu göreceksiniz.

Bu fonksiyon ile bir karakter dizisi içerisindeki başka bir karakter dizisinin yerini bulabiliyoruz.

Şeklinde bir deneme yapabiliriz. Ben sayma ihtiyacı hissetmedim açıkcası ama sayarsanız da doğruluğunu göreceğinizi tahmin ediyorum. Ayrıca locate() fonksiyonunun aşırı yüklenmiş durumları da vardır. Aynı fonksiyonu daha fazla parametre ile kullanabilirsiniz.

32

(33)

33

Şeklinde bir komut girerseniz sonuç olarak "0" döndüğünü göreceksiniz. Bu şekilde iki şeyi birden söylemiş olacağım ben de.

Öncelikle locate() fonksiyonu hedef karakter dizisinde, aranan alt karakteri bulamaz ise "0" değeri döndürür. Eğer ki derseniz;

"programlama dillerinde ilk karakter 0 olarak belirleniyor. Ya aradığımız alt karakter en başta ise yine 0 değeri dönmeyecek mi?"...

Hayır dönmeyecek; MySQL'de farklı olarak, ilk eleman 1 olarak kabul edilmekte. O nedenle bir karışıklık yok, aradığınız karakter dizisi en başta ise "1" sonucunu alacaksınız.

Bu komutumuzdaki "20" parametresi ise; aramanın, karakter dizisinin 20. elemanından itibaren yapılmasını sağlıyor. Ve 20.

elemandan sonra "SUDO" dizisini bulamadığı için de "locate"

fonksiyonu 0 değeri döndürüyor.

Bir karakter katarını budayarak alt karakterleri elde etmeye yarayan fonksiyonlardır.

Komutlarının çıktılarından, doğrudan fonksiyon işlev ve parametreleri anlaşılıyor diye düşünüyorum. "substring" ise, ilk parametresi ile verilen karakter dizisinin, ikinci parametresi ile verilen elemanından başlayarak, üçüncü parametresi ile verilen değer kadar

karakteri sonuç olarak döndürür. Cümleyi okuyunca fark ettim;

kullanması, tanımından çok daha kolay.

Bu fonksiyonları bir karakter dizisini olduğu gibi büyük ya da küçük harfe dönüştürmek için kullanabilirsiniz.

mysql> select isim, ucase(soy_isim) from uyeler;

fonksiyonunun da kullanımı aynı sadece işlevi zıttır.

Bir karakter dizisinde bulunan bir alt karakter dizisini istenilen başka bir karakter dizisi ile değiştirir;

(34)

Bu ayki En Güzel Masaüstü Yarışması'nın Kazananı:

aliorhan

34

Referanslar

Benzer Belgeler

Dersin Amacı Antik sahne tekniklerinin bilgi donanımını kazanak ve bu bilgileri modern dans sahnelemelerine uyarlamak. Dersin Süresi 2 Saat

Konya İnşaat Sektörü Güven Endeksi, Eylül 2015’te bir önceki aya ve geçen yılın aynı dönemine göre düştü.. Türkiye genelini temsil eden inşaat

Türkiye genelini temsil eden Hizmetler Sektörü Güven Endeksi ise Eylül 2015’te bir önceki aya göre 6,3 puan ve geçen yılın aynı dönemine göre 3,8 puan düşerek -1,9

Bu şu demek: İnterne- te bağlanma yeteneğine sahip ve üzerinde Skype uyumlu işletim sistemi barındıran bir akıllı telefonunuz varsa, Skype’ın mobil sürü-

Yüzme bilse bile panik hâlinde denize düşmüş insanlardan mutlaka uzaklaşmam ge- rektiği, yoksa, ne kadar iyi bir yüzücü olsam da hayatlarını kurtarma güdü- süyle

• MyDLP Web Security: Web sunucunuz üzerinden dışarıya gizli veri çıkışını engeller... Ufak

Hem dahası da var: Apple’ın yeni nesil iPod Shuffle ile birlikte gelen kulaklık- lara bir kontrol yongası eklediği ve cihazın uyumluluğunu sadece kendi orijinal kulak-..

Fakat geçti¤imiz ay bir sürpriz gerçekleflti ve Adobe, Photos- hop’un sadece ‹nternet üzerinden kullan›lan Photoshop Express adl› sü- rümünü ücretsiz olarak