Pazar, Ocak 22, 2006

Ruby ile eğitime destek

#!/usr/bin/env ruby
require 'http-access2'

proxy = ENV['HTTP_PROXY']
istemci = HTTPAccess2::Client.new(proxy)
sayfa = istemci.get_content('http://www.ntvmsnbc.com/modules/egitimedestek/')

okul = sayfa.split(/<b>(.*Okul.*)<\/b>/)

puts "Destek Olunan Okul: #{okul[1]}"

Cumartesi, Eylül 10, 2005

JEdit

Java ile yazılmış mükemmel bir editör. Plug-in desteği var ve hemen hemen her dili destikliyor. http://www.jedit.org/
Burada ise JEdit üzerinde ruby dosyalarımızı daha etkili nasıl kullanırız plug-inleri var
JEdit + Ruby

Not:
jEdit is a mature and well-designed programmer's text editor with 7 years of development behind it.

Apache & Rails

Rails uygulamalarını kendi getirdiği WEBRick sunucusu yerine apache üzerinde sunmak daha faydalıdır. Bunun için kendimize ait bir "host" açmamız ve bu hostun apache tarafından yönetileceğini söylememiz gerekir. Rails yazılımızın dizinindeki README dosyasında apache üzerinde çalıştırmak için gerekli örnek kodları kendisi verir. Uygulanışı ise şu şekilde.

Apache ayar dosyasını açınız. ( apache dizini / httpd.conf -> örn: /etc/apache/httpd.conf )
1. MOD_REWRITE olduğundan emin olunuz.
LoadModule rewrite_module libexec/apache/mod_rewrite.so


2. Sunucusal Ayarlar


<VirtualHost *:80>
ServerName Sunucu
DocumentRoot /var/www/icerik/public
ErrorLog /var/www/icerik/log/server.log

<Directory /var/www/icerik/public>
Options ExecCGI FollowSymLinks
AllowOverride all
Allow from all
Order allow,deny
</Directory>
</VirtualHost>
>

ServerName sunucunuzun adı (!)
DocumentRoot yazılımınızı "public" dizini
ErrorLog hataların kayıt edileceği yer
= DocumentRoot

Dosyayı kaydediyoruz ve şimdi "hosts" dosyasını ayarlamamız lazım.
"hosts" dosyasını açıyoruz
127.0.0.1 Sunucu

satırını ekliyoruz.

Artık apache üzerinde rails kullanabiliriz.

Cuma, Eylül 09, 2005

Ruby On Rails İle Uygulama Geliştirme " Bölüm 1 "

Artık iyiden iyiye rails'a merak saldım. Artık bu sayfada zaman buldukça döküman yazıp eklemeye çalışacağım.

RUBY ON RAILS ILE YAZILIM GELISTIRMEYE BAŞLANGIÇ


Öncelikle yeni bir rails dosyasına başlanılır. Programı nerede oluşturacaksak o klasörde
rails ProgramAdi

şeklinde yeni bir program oluşturulur. Bu şekilde belli dosyalar oluşmuş olacaktır.


Rails programları şu üç türden oluşmaktadır.
MVC -> MODEL VIEW CONTROLLER

MODEL -> Veritabanı ilişkiler
VIEW -> Sayfanın görünümsel dosyaları
CONTROLLER -> Veritabanı ve görünüm arasındaki ilişki


Yeni bir conntrollerin ( bundan sonra denetleyici olarak geçecek ) ve modelin ( bundan sonra şablon olarak geçecek ) oluşturulması gerekir. View ise ( bundan sonra görünüm olarak geçecek ) bir denetleyiciye ait görünüm dosyasıdır. Uzantıları "rhtml" biçimindedir. Örneğin http://adresiniz/deneme adresi için tasarınızın dizinindeki view dizininde "deneme.rhtml" oluşturursanız ve denetleyiciye "deneme" biçiminde bir istek alımcısı belirtseniz rails bunu sizin yerinize koyacaktır.

Yeni bir denetleyici ve model oluşumu
Aslında bir denetleyici ve model oluşturmak için gerekli dosyaları oluşturmak yeterlidir. Fakat bunu sizin yerinize rails yapabilir. Tasarınızın bulunduğu klasöre giderek
kullanım: ruby script/generate TUR isim
şablon (model): rubu script/generate model Isim
denetleyici (controller): ruby script/generate controller isim

Not: şablon isimleri ilk harfi büyük şekilde başlamalıdır.
[DOĞRU] Murat Isim
[YANLIŞ] MURAT isim murat

Not 2: Şablon isminin veritabanındaki tablo ile ilgili isme sahip olması yararlıdır. Zira karıştırma olasılığı azalır.


Denetleyici neyi denetleyecek, neye bağlı kalacak?

Denetleyici (controller) sayfadan gelen kullanıcı isteklerini kontrol eder, bunları şablona (modele) iletir. Gelen verileri ayarlar, işlemlerini yapar. Bunları görüntüsel hale çevirmek "görünüm"ün işidir. Rails ile bir veritabanı kullanan yazılım geliştirmek bu mantığa dayanır. Veritabanını ayarlar, Tabloyu belirt (not: rails şu anda 6 kadar veritabanı desteklemektedir.), Verileri süz, gelen isteğe cevap ver, bunları kullanıcın görebileceği görüntüsel hale çevir.

İçerik Sistemi

Bir programlama dili öğrenirken izlediğim yol her zaman dilin belli kurallarını öğrendikten sonra hemen örnek kodları incelemektir. O dil ile yapılmış ufağından başlayarak büyüğüne doğru yazılımları inceleyerek bir fikir sahibi olurum zaten onları incelerken hangi fonksiyonun ne iş yaptığı meydana çıkar. Bunun için bizde rails üzerinden bir içerik sistemi geliştirelim. Belki tam bir içerik sistemi olmasa bile en azından günlük notlar alabileceğiniz bir "blog" sistemi. Bunun için yeni bir yazılıma başlayacağımızı railse bildirelim ki o da bizim için gerekli olan dosyaları oluştursun. Tasarıyı oluşturacağımız klasöre gidip
rails icerik

komutunu veriyoruz.

bizim için components , db, lib, public, test, app, config, doc, log, script, vendor klasörlerini oluşturdu. Kısaca;
public -> sayfamızdaki resimlerin, css dosyalarının ve diğer tüm dosyaların (yazılımdan başka) bulunduğu dizindir.
config -> programın veritabansal ayarının yapıldığı dosyaların bulunduğu dizin.
script -> railsin çalışması için gerekli olan ruby dosyaları.
app -> tüm yazılımızı geliştireceğimiz yer.

şimdi railsin çalışıp çalışmadığını kontrol edelim. oluşturduğumuz klasörde
ruby script/server
komutunu çalıştırarak WEBRick sunucusunu çalıştırıyoruz. (Rails dosyaları bir çok sunucuda çalışabilir. Örnek ayarlar ilerleyen bölümlerde yer alacaktır.) Kısaca webrick sunucusu bizim kodları test edebilmemiz için 3000. portta yer alır. Ruby ile oluşturulmuştur. Şimdi http://localhost:3000/ yazarak sunucumuza bağlanabiliriz. İçerik sistemine bağlanmak için http://localhost:3000/icerik/ adresini deneyebiliriz. Adrese girdiğimiz zaman bize hata verecektir. Çünkü henüz içerik için herhangi bir şablon ve denetleyici belirtmedik. Fakat öncelikle içerik sisteminin olduğu veritabanını oluşturup bunu railse bildirmemiz gerekiyor. Bu sistem için ben mysql kullanacağım. (Not: Veritabanı değişimi için tek yapmanız gereken bunu railse bildirmenizdir.) Örneğin "icerik" veritabanında "icerikler" adlı tablo oluşturdum.

CREATE DATABASE 'icerik';

CREATE TABLE `icerikler` (
`id` int(11) NOT NULL auto_increment,
`icerik_basligi` varchar(200) NOT NULL default '',
`icerik` longtext NOT NULL,
`yazilma_tarihi` datetime NOT NULL default '0000-00-00 00:00:00',
`icerik_kategorisi` varchar(100) NOT NULL default '',
PRIMARY KEY (`id`)
) TYPE=MyISAM AUTO_INCREMENT=1
;

Şimdi rails programında veritabanı ayarlarını yapabiliriz. "config" klasöründeki "database.yml" dosyasına bunu belirtelim. ( NOT: YML Dosya biçimi yanl dilinde yazılmıştır. www.yaml.org )

development:
adapter: mysql # VERITABANI TÜRÜ
database: icerik # VERITABANI
host: localhost # SUNUCU ADRESI
username: root # KULLANICI ADI
password: # KULLANICIYA AIT SIFRE



Veritabanı ayarlarını yaptık artık bu veritabanındaki tabloyu işlemek üzere bir şablonumuz ve bu ilişkiyi ayarlayan bir denetleyicimiz lazım. (View en son sayfa görünümü için gerekli olacağından yeri geldiğince ayarlanacaktır.)

Öncelikle bir şablon oluşturmamız gerekiyor. Şablonun ilk harfi mutlaka büyük harf ile başlamalıdır. Kullanılabilirlik açısından tablo ile ilgili bir isim olması faydalıdır. Biz tablomuza icerik adını koyduğumuza göre şablon adımızı icerik olarak koyabiliriz. Tekrar tasarımızın olduğunu klasöre gidiyoruz ve railse bize bir şablon oluşturmasını söylüyoruz.

ruby script/generate model Icerik


Yapılan iş railsin kodlarından bize gerekli olan klasör ve dosyaları oluşturtturmak. Rails ruby üzerine kurulu olduğu için ruby ye script klasöründeki generate dosyasına erişip bize icerik adında model oluştur diyoruz. Oda bize gerekli klasör ve dosyaları oluşturuyor. Şimdi bu model ile kullanılmak üzere birde denetleyici oluşturalım. Denetleyici isimleri küçük harf ile başlamalıdır. Denetleyici hangi şablonu daha çok kullanacak ise karıştırmamak amacıyla şablon ile aynı ismi vermek mantıklıdır.

ruby script/generate controller icerik


Aynı şekilde oda bizim için gerekli dosyaları oluşturdu. Şimdi denetleyicinin hangi modele ait olduğunu belirtelim. Denetleyicilerin bulunduğu yere giderek (tasarı klasörü/app/controllers) oluşturduğumuz denetleyici dosyasını açalım. (ISIM.rb şeklinde) biz icerik olarak oluşturduğumuz için " icerik.rb " dosyasını açıyoruz. Class yapısınıdan sonra
model :icerik

şeklinde bunun "icerik" şablonuna ait olduğunu belirtiyoruz. burada şablonumuzun adı her zaman küçük harfle yazılmalıdır. Şimdi sayfamıza baktığımız zaman (http://localhost:3000/icerik) bilinmeyen eylem hatası aldığımızı görüyoruz. demek oluyor ki şimdilik sorunsuz gidiyoruz. Hata aldık nasıl sorunsuz gidiyoruz derseniz railsde bir sorun yok çünkü biz denetleyicimize ana sayfada ne yapması gerektiğini söylemedik. Ana sayfada (index genel tabirdir.) n'apması gerektiğini denetleyicimize bildirelim. Aynı dosyada;

def index
render_text("Icerik Sisteminden Merhabalar!")
end


yazalım. Şimdi sayfaya açtığımız icerik sisteminde merhabalar yazısını göreceğiz. Yeni bir sayfa belirtmek isterseniz def ile adını belirtip adrese o adı yazacağınız zaman fonksiyonda belirttiğiniz işlemler yapılacaktır. (Burada index genel tabirdir.)

Evet buraya kadar sorunsuz geldik. Şimdi model dosyamızın hangi tabloyu kullanacağını belirtiyoruz. app/models/icerik.rb dosyasını açıyoruz ve ona "icerikler" tablosunu kullanması gerektiğini söylüyoruz.

set_table_name "icerikler"


şimdi ana sayfa içeriklerden gerekli bilgileri alacak olan kodlarımızı yazalım. öncelikle bunları bir array üzerine alalım ki işlem yapmamız kolaylaşsın. denetleyici listeyi şablon üzerinden alacağı için şablonda tüm listeyi alan bir fonksiyon oluşturalım.

def self.liste
find_all()
end


evet şimdi modele liste diye fonksiyon geldiği zaman artık biz tüm kayıtları alabileceğiz. find_all sonucu bir array şeklinde geri döner. bunu denetleyici üzerinden alalım. sonuç dizi olarak döndüğü için gelen sonucu bir diziye atayalım. (not: şu anki tüm işlemleri ana sayfada yapıyoruz.)

@icerikler = Icerik.liste


burada @icerikler bundan sonra kullanacağımız dizinin adı, Icerik şeklinde belirtilen kısım şablonun (modelin) adı ki ilk harfi büyük ve liste şablonda belirtilen fonksiyonun adı. Şimdi biz içerik listesini @icerikler dizisine aldık. Ama bunu kimse göremiyor şu an. MVC sistemininde M ve C kısımlarını yaptık. Verileri aldık, bunları düzenledik şimdi göstermesi kaldı. Şu anda index üzerinde çalıştığımız için index.rhtml adında bir görüntü dosyası oluşturalım. Şu anda icerik modeli üzerinde olduğumuz için bunu app/views/icerik/index.rhtml şeklinde kaydedelim. Peki index.rhtml. Kayıtları göstermek için bir başka fonksiyon belirtir isek hem bundan sonraki işlerde sorun olmaz hem tasarımı değiştirmek daha kolay olur. Bunun için öncelikle kayitlari_goster fonksiyonu yapalım. bu fonksiyon kendisine gönderilen dizi üzerinde işlem yapacak. Bu fonksiyon denetleyicinin tamamında kullanılacağı için rails tarafından bize yardım amaçlı (:) oluşturulmuş dosya üzerine koyalım ki tüm denetleyici tarafından kullanılsın. app/helpers/icerik_helper.rb dosyasını açalım ve aşağıdaki kodları ekleyelim.


def kayitlari_goster(lste)
yazi = ""
lste.each do |@kayit|
yazi << @kayit.icerik_basligi end return yazi end


yapılan işlem şu şekilde. kayitlari_goster adında bir fonksiyon belirtiyoruz. Buna bir dizi gönderiliyor. ve o dizinin her elemanını ayırarak ve gerekli görünümü yaparak geri gönderiyor. her ayrılan değerden noktadan sonra tablodaki alanı yazarak o alana ait bilgiyi alabiliriz. tüm değerleri ve şekli şemali "yazi" değişkenine atıyoruz ve en son o değeri fonksiyondan çeviriyoruz. Şimdi sıra index.rhtml dosyasını düzenlemeye geldi. Artık burası tasarım bölümü ve biraz da sizin yapımcılığınıza kalmış :) Ben örnek olarak şöyle bir sayfa oluşturdum:


<html>
<head>
<title>Icerik Sistemi</title>


<body>
<h1>Icerik Listesi</h1gt;
<%= kayitlari_goster(@icerikler) %>
</body>


Yeni kayıt ekleme, arama, kategorileme gibi özelliklerin eklenme işlemi vs. tüm diğer işlemler adım adım incelenecek, kodlar oluşturalacak.

Salı, Haziran 21, 2005

Yazılım: All Tray

Alltray adlı yazılımla Kde ,Gnome, XFCE 4, Fluxbox ve WindowMaker üzerinde yazılım desteklemese dahi yazılımı "TRAYBAR" özelliğine sahip biçimde çalıştırabilirsiniz. Örneğin aMSN yazılımı Alltray yazılımı ile çalıştırırsanız "Kapat" düğmesine bastığınız zaman aMsn otomatik olarak "traybar"'a atılır. Yükleme sayfasında yer almayan Slackware Paketi burada .

kullanımı:
alltray YAZILIM

kullanım örneği:
alltray amsn

Cumartesi, Mart 19, 2005

Usb Kamera, Flash Disk

Veri depolama yeteneğine sahip usb li aygıtları linux üzerinde şu şekilde bağlayabiliriz.

1. Aygıtın Yerini Öğrenme
fdisk -l
Buradan aygıt yerini öğrenebiliriz. (sda1 , sdb1 gibi)

2. Bağlanılacak Yeri Oluşturma
mkdir /mnt/kamera
* yer değiştirilebilir

3. Aygıtı Yerine Bağlama
mount -t vfat –o rw /dev/sda1 /mnt/kamera

Cumartesi, Mart 12, 2005

Renkli Dosya Listeleme (ls, dir)

dosyaları listelemek için "ls" yahut "dir" komutunu verdiğinizde dosya tipine göre ayrı renklendirme yapabilme imkanı var. Bunun için "dircolors" yazılımcığı kullanılıyor.

1. İlk önce kullanıcı klasörünüzde .dir_colors adında hangi dosya uzantısının hangi renkte görüntüleneceği dosya oluşturmalısınız.

İpucu: Slackware de /etc/DIR_COLORS dosyası önceden ayarlanmış bir dosyadır. Bunu "cp /etc/DIR_COLORS ~/.dir_colors" yazarak kendi dizininize alabilirsiniz.


2. Dircolors un kurulduğunu haber verelim
dircolors

3. Otomatik Renklendirme yapmasını sağlayalım
bunun için ~/.bashrc dosyasını açınız ve aşağıdaki satırları ekleyiniz:
alias dir='dir --color'
alias ls='ls --color'


4. Konsolu açıp kapadığınızda değişme gerçekleşecektir.

Paketten Kernel Derlemek,Güncellemek {Slackware}

Slackware üzerinde paketlerden çekirdeği (kernel) derlemek oldukça kolay.
Öncelikle çekirdek paketlerini yüklüyoruz. (ftp://ftp.slackware.com ya da slackware cd sinin extra kısmında)

1. Dosyaların bulunduğu konuma geliyoruz
cd /home/kullanıcı/kernel

2. Paketleri Kuruyoruz
installpkg kernel-generic*
installpkg kernel-modules*
installpkg kernel-headers* { bazı sürümlerde bulunmayabalir }

3. /boot/ klasörüne geçiyoruz
cd /boot/

4. Initrd Oluşturuyoruz
mkinitrd -c -k KERNELSÜRÜMÜ -m DOSYASISTEMI
örn: mkinitrd -c -k 2.6.7 -m reiserfs

5. Lilo Ayarlarını Değiştireceğiz
/etc/lilo dosyasını açıp gerekli değişiklikleri eklemeliyiz;
# Linux Ayarlari
image = /boot/vmlinux-generic-SURUM
initrd = /boot/initrd.gz
root = DOSYA_SISTEMININ_BULUNDUGU_BOLUMLEME
label = Linux
read-only

6. Lilo Güncellemesi
lilo

Cuma, Şubat 18, 2005

Swaret

Slackware linux için hazır derlenmiş paketleri komutla yüklemek için en güzel yazılım. Swaret
( Grafiksel arayüz ortamı şeklinde sürümleride bulunabilir . )
Counters
website counter