Sayfa: 1 2 3 »

Farklı isimde input type imagelar var ise name üzerinden bunları algılatmak sıkıntı yaratıyor.

Aşağıdaki gibi iki image olsun:

  1. <input type="image" src="images/kaydet.gif"/>
  2. <input type="image" src="images/sakla.gif" name="sakla"/>

Sunucu tarafında “sakla” değeri gelmiş mi gelmemiş mi kontrolü yaparak sonuca ulaşamıyoruz.
Image’lardan gelen değere erişmek için name.x, name.y diye değer gönderiyor browserlar. Bu nedenle “sakla” butonuna basıldığını algılamak için “sakla.x”in var olup olmadığına bakmak yeterli.

Kaynak için buraya bakılabilir.

Netbeans Gelişmeleri    15/07/08

NetBeans tarafında güzel gelişmeler devam ediyor. PHP desteği geliştirilirken aynı zamanda Python ve Scala içinde destek vermeye başlamışlar.

Universal IDE olma olunda son sürat ilerliyorlar bana kalırsa. Tebrik ediyore.

Yaklaşık onbeş-yirmi gündür bir-iki yazılım üzerinde çalışıyorum. Bu süre zarfında ister istemez kendimi geliştirmeye ayırdığım vakit oldukça kısaldı. Hatta kalmamaya yüz tuttu.

100_0768 Burada kendime ayırdığım vakitten kastım sosyal aktiviteler değil. Her yoğunlukta sosyal-çalışma dışı aktivitilere zaman ayırmaya çalışıyorum. Şöyle ki; gündüz çalışma, gece çalışma dışı vaktidir. Çalışmamı özel durumlar hariç her gün belli bir vakitte kesmek perfonmans artışı sağlıyor. Bu elbette ayrı bir konu.

Gelelim kendime ayırdığım vakitten kastıma; uzun zamandır ar-ge yapamıyor, yeniliklerin bir çoğunu takip etsem bile deneyemiyorum. Aslında farkettim ki, bu işlemler için insanın tüm çalışma saatlerini harcaması gerekiyor. Örneğin takip ettiğim onlarca sitede yer alan yeni yazıları henüz okuyamadım. Bunları hergün sistematik şekilde okumaya kalksam bile en az 2-3 saat geçiyor. İçindeki örnekleri denemeye de kalkarsam en az 2-3 saat daha geçecek. Normal bir çalışma düzeninde azami 12 saat ayırdığımızı düşünürsek yarısını sırf bu işlere ayırmamız gerekiyor. Evet, bu yalnızca yeni teknolojileri takip etmek için geçecek olan süre.

Eğer bir de kendiniz yeni bir teknoloji üzerinde çalışıyorsanız piyasa işlerine vakit kalmamış oluyor. Özet şudur ki, çalışmak ile teknoloji takibi aynı anda yürümüyor, yürüse bile verimli olamıyor. Bu verimli olamama durumu hem çalışmaya hem ar-ge’ye ait elbette.

ruby-logonBu yazı daha önce de yazılabilirdi yalnız kıvılcımı ateşleyen Ruby 1.9′un developer sürümü çıkması oldu. Birçok yenilik ve perfonmas artışı içeren bu yeni sürümü henüz test edemedim, sizler test edip yorumlarınızı belirtebilirsiniz. 

Kıvılcımı ateşleyen diğer bir olayda Rails 2.0 hakkında uzun zamandır yazmayı düşünüp yazamadığım inceleme yazısı oldu. Ve bir diğer olayda CodeIgniter Framework’u hakkında yazmayı düşündüğüm yazı. Liste daha da uzamadan yazıyı bitirmek sanırım en iyisi (:

İyi çalışmalar.

nb-logo-productspage Netbeans’ın 6 numaralı serisinin "final" sürümü e-posta listesinde duyuruldu. Web sayfasında da yakında geniş bir bilgi yer alacaktır. Şimdilik yükleme sayfasını yazabiliyorum.

http://download.netbeans.org/netbeans/6.0/final/

 

Türkçe olarakta çıkmasını istiyordu(m|k) fakat takımdaki kişilerin iş yoğunluğu (4 yahut 5 kişilik bir takım zaten) ve tam olarak organize olamama sebebiyle bu isteğimizi en azından final sürümüne yetiştiremedik. Ama er ya da geç Türkçe bir sürüm çıkacak inşallah.

rails 1.2.6 & jRails    25/11/07

Birkaç güvenlik güncelleştirmesi ve sorunu gideren yeni rails sürümü duyuruldu.

gem install rails -y

Bu arada bugün jRails‘e denk geldim. Mevcut rails metodlarında Prototype/Scriptaculous yerine jQuery kullandırabilmeyi amaçlamış.

Heroku.com beta incelemesi için başvuru yapmış idim, bugün bir davetiye geldi. Bende biraz inceleme fırsatı buldum. Güzel düşünülmüş bir sistem.

Heroku.com nedir?

Heroku.com bize diyor ki;

Daha önceden geliştirmiş olduğunuz rails uygulamanızı heroku.com’a aktarın ya da heroku.com üzerinden yeni bir rails uygulaması başlatın (kendi içinde editörü, generate, consol, migrate, veritabanı ve diğer çoğu olay mevcut) herhangi bir gönderim ve ayar işlemi yapmadan uygulamanız anında kullanılabilir hale gelsin.

railsconsole

Güzel bir düşünce aynı zamanda güzel bir uygulama ile de birleştirilmiş.

herokurenklendirme

Renklendirme eşliğinde, aynı zamanda uygulamayı düzenleyebilecek kullanıcıları belirtirek takım çalışması da yapabiliyorsunuz.

 

heroku.com güzel düşünülmüş ilginç bir sistem. Rails geliştiricileri için faydalı olacak bir sisteme benziyor. Günlüğüne de buradan ulaşabilirsiniz.

Sinan Ata‘dan müthiş bir yazı, bu işi 300′e yapan var!

Sinan’ın dediklerine aynen katılıp, okurken yüzümde beliren ufak tebessümü bu olayları daha önce yaşamış olmama veriyorum.

Yaşanmış bir replikte (daha doğrusu tek kişilik replik, verecek cevap bulamamıştım) benden olsun. Program kurduğum bir fabrikada yaşadığım bir olay.

“Abi sen bilgisayarcısın, elektronikten de anlarsın, bizim vcd bozuldu, bi ara getireyim de bakıver…”

İçten bir ses: “obaaa”

WxRuby İle İlgili    13/11/07

cevirgec.png

Bundan bi’ kaç hafta önce yazmıştım çevirgeç‘i anca atabildim internete.

Nedir?

Çevirgeç, belirtilen klasörlerdeki resimleri belirtilen sürede duvar kağıdı yapar. Tüm resimler duvar kağıdı olana kadar aynı ada sahip dosya bir daha duvar kağıdı olmaz. Süre ise saniye cinsinden belirtilir. Aynı zamanda win32 servisi olduğu için bellekte fazla harcama yapmaz.

Neden?

Bu tür bir çok yazılım piyasada mevcut. Bunların bir çoğunda sonraki resime basınca aynı resim gelebiliyor. Ve yine bir çoğunda süre ayarı için belirli dakikaların altına inme/üstüne çıkma olayları yoktu. Ve yine bir çoğu win32 servisi değildi. Ve yine, …

Aynı şekilde çevirgeç’in eksiklerini konu alan “ve ama” ile başlayan çokca satır da gelebilir.
Ve ama, çevirgeçin ayar penceresi yok, ayarlaması zor.
Ve ama, çevirgeç imagemagick convert.exe’ye bağımlı.
Ve ama, çevirgeçin kontrolü konsoldan ya da “hizmetlerden” yapılmak zorunda.
gibi…

Kurulum

Çevirgeçin kurulumu oldukça kolay ama ayar yapması biraz zor. Ayar programını bir sonraki sürüm için (eğer olursa) yazmayı düşünüyorum. Şimdilik “yaml” dosyasını düzenleyerek bu işlemi yapabilirsiniz.

  • gem install cevirgec komutu ile çevirgeçi kurabiliyoruz.
  • Bu sıralar Rubyforge yansılarında sorun var. Gem paketlerini listelemede sorun oluşuyor. Bu nedenle bu adresten dosyayı bilgisayarınıza kaydettikten sonra konsolda kayıt edilen klasöre girerek yukarıdaki komutu verebilirsiniz.
  • Çevirgeçi hizmetlere kurmak için komut istemcisinde: cevirgec kurulum komutunu verebilirsiniz.
  • Kurulum işlemi bu kadar.

Çevirgeç Ayarları

Çevirgeçi kurduktan sonra ayar yapmak için sırasıyla aşağıdaki yordamları izleyebilirsiniz.

  • Ruby’nin kurulu olduğu dizine girin. (Gezginden)
  • Daha sonra \lib\ruby\gems\1.8\gems\cevirgec-0.1-mswin32\lib\cevirgec klasörüne ulaşın.
  • ayarlar.yaml dosyasını açıp düzenleme yapabilirsiniz.
  • ImageMagick convert.exe programını buradan yükleyebilirsiniz. Ayarlar.yaml dosyasında yerini yüklediğiniz klasör olarak belirtmeyi unutmayınız.

Hmm, acilen ayar programı lazım, satırları yazarken bile yoruyor insanı.

Çalıştırma silme, durdurma

komut istemcisinde:
cevirgec kurulum | baslat | durdur | sil | araver | devam | durum
kurulum: cevirgec’i kurar. baslat: çalışmaya başlatır durdur: çalışmasını durdurur
sil: servislerden çevirgeçi siler. araver: çevirgeçin çalışmasına araverir. devam: yeniden çalışmaya başlatır durum: şu an ne durumdaya cevap verir.

Son;

Program sadece win32 sistemlerde çalışıyor. Ayrıca win32utils paketinden bir kaç bağımlılık bulunuyor. Gem otomatik olarak bunlara dair “kurmak ister misiniz?” sorusu soracaktır. “y” ile devam edebilirsiniz.

Bundan önceki yazımda JRuby ile Zemberek kütüphanesinin nasıl kullanılabileceğini basitçe görmüştük. Yazıda yer alan örneklere göz attığımızda Zemberek kütüphanesini kullanırken Java’da izlenen yolu birebir izledik.

Yani bir kelimeye ait önerileri bulmak için şu kodu kullandık.

oneriler = zembo.oner(yazi)
oneriler.each_with_index do |oneri, i|
  ...
  ...

Oysa bu kod Ruby programcıları için pek de güzel sayılmayacaktır.
Şöyle bir erişimin daha güzel olacağı aşikar.

# Meraba önerilerini döndürür
oneriler = "Meraba".oneriler
 
# Meraba'nın yazımı doğru mu?
puts "Meraba".yazim_dogru?
 
# Merhaba'yı heceler, heceleri kullanıma sunar
"Merhaba".hecele { |hece| print "#{hece}-" }

Bunları yapmak için öncelikle ufak bir sınıf ve modül yazmalı daha sonra bunu String sınıfına dahil etmeliyiz.

ZemberekJRuby sınıfı

# Basit Zemberek JRuby Kullanımı
#
# Murat ÇELİKER, murat.celiker@gmail.com
# http://ikinoktayazilim.com/wordpress/
#
 
require 'java'
require 'singleton'
 
# Basit Zemberek Ayrıştırıcımız
# Yalnızca bazı methodlar yer almaktadır
#
class ZemberekJRuby
 
 
include Singleton
 
 
# zemberek kütüphanemizi dahil edelim
 
require 'zemberek-tum-2.0.jar'
 
 
# zemberek sınıflarımızı dahil edelim
 
include_class 'net.zemberek.erisim.Zemberek'
 
include_class 'net.zemberek.tr.yapi.TurkiyeTurkcesi'
 
 
# bir tane zemberek oluşturalım
 
def initialize
   
@zembo = Zemberek.new(TurkiyeTurkcesi.new)
 
end
 
 
# kelimeDenetle çevirisi
 
def kelime_denetle(kelime)
   
@zembo.kelimeDenetle(kelime)
 
end
 
 
# hecele çevirisi
 
def kelime_hecele(kelime)
   
@zembo.hecele(kelime)
 
end
 
 
# oner çevirisi
 
def kelime_oner(kelime)
   
@zembo.oner(kelime)
 
end
 
end

Gördüğünüz gibi basit bir Zemberek JRuby sınıfı yazdık. Singleton kullanarak yalnızca bir kez oluşturulmasını da sağladık. Şimdi artık modülümüzü de yazıp String sınıfına dahil edip daha bi rubysel kullanım yapabiliriz.

TurkceJRb::Katar

# Katar değiştiricimiz
#
# örn: "deneme".denetle
#
module TurkceJRb
 
 
module Katar
   
   
def yazim_dogru?
     
ZemberekJRuby.instance.kelime_denetle(self)
   
end
 
   
def hecele
     
heceler = ZemberekJRuby.instance.kelime_hecele(self)
     
if block_given?
       
heceler.each { |hece| yield(hece) }
     
else
       
return heceler
     
end
   
end
 
   
def oneriler
       
oneri_listesi = ZemberekJRuby.instance.kelime_oner(self)
       
if block_given?
       
oneri_listesi.each { |oneri| yield(oneri) }
     
else
       
return oneri_listesi
     
end
   
end
 
 
end
 
end

Katar sınıfını dahil edelim

# String sınıfına eklemeler yapalım
#
class String
 
include TurkceJRb::Katar
end

Yeni Örneğimiz

İlk yazıdaki örneğimiz artık şu hale geldi:

# örneğimizi katar sınıfı methodlarına çevirelim
#
# String.oneriler , String.denetle gibi
#
yazi = ARGV.shift || 'meraba'
 
if yazi.yazim_dogru?
 
puts "#{yazi} dogru yazilmis"
 
yazi.hecele { |hece| print "#{hece}-" }
else
 
oneriler = yazi.oneriler
 
 
# önerilerimizi ekrana yazdıralım
 
puts "#{yazi} icin size #{oneriler.length} tane onerim var:"
 
oneriler.each_with_index do |oneri, i|
   
puts "Oneri #{i+1}: #{oneri}"
 
end 
 
 
# yahut
 
yazi.oneriler { |oneri| puts "#{oneri}" }
 
 
end

Dosyanın tamamına ait kaynak kod yazının devamında yer almaktadır.

Devamını Okumak İstiyorum

zemberek-jruby-nb.png

Zemberek ülkemizde yazılım adına yapılan en önemli çalışmalardan biridir bana göre. Eğer Pardus ya da OpenOffice kullandıysanız zemberek’in ne denli düzgün çalıştığına şahit olmuşsunuzdur.

Bu yazıda, JRuby[1] üzerinden Zemberek kütüphanelerine erişim konusuna değineceğim.
Sisteminizde JRuby’nin kurulu olduğu varsayılmıştır.
[1] JRuby %100 java ile yazılmış Ruby yorumlayıcısıdır.

Zemberek & JRuby

Öncelikle Zemberek ile çalışabilmek için Zemberek kütüphanelerine sahip olmamız gerekmektedir. Bu kütüphaneye ait dosyaları buradan bulabilir ya da zembereğin tüm modüllerini tek jar dosyası altında toplayan zemberek-tum-2.0.jar dosyasını indirebilirsiniz.

Bu dosyayı Java’nın hali hazırda bulabileceği bir yere kaydedebilir ya da oluşturacağımız dosya ile aynı yere kaydedebilirsiniz. (JRuby’ye require ile kolayca belirtmek için)

Dosyamızı kaydettikten sonra editörümüzü açıp zemberek kullanımına geçebiliriz.

zem.rb

İlk önce JRuby’ye zemberek kütüphanesini dahil etmesini söyleyelim.

require 'java'
 
# zemberek kütüphanemizi dahil edelim
require 'zemberek-tum-2.0.jar'

Zemberek kütüphanesinde kullanacağımız sınıfları projemize dahil edelim.

include_class 'net.zemberek.erisim.Zemberek'
include_class 'net.zemberek.tr.yapi.TurkiyeTurkcesi'

Zemberek için nesnemizi oluşturalım

zembo = Zemberek.new(TurkiyeTurkcesi.new)

Artık şöyle bir kullanım yapabiliriz.

# yazı belirtelim
yazi = ARGV.shift || 'meraba'
 
# belirtlen yazı için öneriler isteyelim
oneriler = zembo.oner(yazi)
 
# önerilerimizi ekrana yazdıralım
puts "#{yazi} icin size #{oneriler.length} tane onerim var:"
oneriler.each_with_index do |oneri, i|
 
puts "Oneri #{i+1}: #{oneri}"
end

Yazının devamında dosyaya ait kaynak kodları bulabilirsiniz.

Devamını Okumak İstiyorum

TurkceRb projesinin yeni sürümünü yakında sunacağım inşallah. Gem paketini kurduktan sonra require “turkce” require “turkce_rails” diyerek kullanabileceğiz, ayrıca rails ile ruby modülleri de ayrılacak. Konu hakkında daha detaylı girdiyi gem paketini oluşturduktan sonra (süresi belli değil henüz) detaylıca yazacağım inşallah.

Yeni sürümü beklemeden “yaziya_cevir” fonksiyonunu siteden paylaşmayı uygun gördüm.

yaziya_cevir_resim.png

yaziya_cevir

Verilen sayıyı yazıya çeviren bir fonksiyon. Örnek olarak

puts 11221312755123.yaziya_cevir
=>
OnBirTrilyonİkiYüzYirmiBirMilyarÜçYüzOnİkiMilyonYediYüzElliBeşBinYüzYirmiÜç

Yazının devamında kaynak kodlarını bulabilirsiniz.

Devamını Okumak İstiyorum

WhiteSpace adlı esrarengiz programlama dili var. Ama artık, vim renklendirmesi ile daha kolay biçimde whitespace programları yazabilirsiniz (!)

whitespace-vim.png
http://en.wikipedia.org/wiki/Image:Whitespace_in_vim2.png

Tablomuzda kayıt ekleme yahut güncelleme anında mutlaka doldurulması gereken alanlar olabilir.

Giriş

Rails tümleşik bir geliştirme ortamıdır. Yazılımın bölümleri arasında ki düzeni siz belirttiğiniz sürece otomatik olarak sağlayabilir.

ActiveRecord modülü gerekli alanların kontrolünü yapmak için bizlere oldukça geniş imkanlar sunar.

Avi formatında, yüksek çözünürlüklü ekran görüntüsüne ulaşabilirsiniz.

validate fonksiyonu

ActiveRecord sınıfı ve buna ait alt sınıflar “validate” fonksiyonuna sahiptir. Bu fonksiyonu yeniden yazarak kendimize göre özelleştirebiliriz.

validate fonksiyonu her kayıt öncesinde çalışır.

class Mesaj < ActiveRecord::Base
 
 
# ...
 
# ...  
 
 
protected
   
def validate
     
errors.add(:isim, "Aynı isimle daha önce mesaj yazılmış") if isim_kontrol(isim)
     
errors.add(:soyisim, "Boş bırakılamaz") if soyisim.empty?
   
end
 
end

Bazı kontrollerin sadece yeni bir kayıt anında yapılmasını ya da bazılarının sadece güncelleme anında yapılmasını isteyebiliriz.

validate_on_create & validate_on_update

Yalnızca yeni kayıt anında kontrol yapılmasını istiyorsak “validate_on_create” fonksiyonunu yeniden yazabiliriz. Aynı biçimde, yalnızca güncelleme anlarında kontrol için de “validate_on_update” fonksiyonunu yeniden yazabiliriz.

Hazır Denetleme Fonksiyonları

Rails, genel denetlemeler için bize hazır fonksiyonlar sunmuştur.

  • Alanın mutlak doluluğunu kontrol etmek için: validates_presence_of
    Örnek kullanım: validates_presence_of :isim
  • İçeriğin belirli formata uyma zorunluşuğı: validates_format_of
    Örnek kullanım: validates_format_of :email, :with => /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z/i
  • İçeriğin uzunluğunun kontrolü: validates_length_of
    Örnek kullanım: validates_length_of :isim, :maximum=>30
  • İçeriğin sayısallığının kontrolü: validates_numericality_of
    Örnek kullanım: validates_numericality_of :oy, :only_integer => true
  • İçeriğin kayda özel olmasının kontrolü: validates_uniqueness_of
    Örnek kullanım: validates_uniqueness_of :isim, :on => :create

Sunum

Makaleye ait sunumu izleyerek örneklerin çalışmasını ve detaylı kullanımını görebilirsiniz.

Avi formatında, yüksek çözünürlüklü ekran görüntüsüne ulaşabilirsiniz.

Pardus & Postgresql    06/08/07

Pardus üzerinde hızlıca Postgresql’i kurmak için aşağıdaki adımları izleyebiliriz:

  • Postgresql kurulumu ( pisi it postgresql-server )
  • Servisi açalım: service postgresql-server start
  • Kullanıcımız için “role” oluşturalım (Konsolda)

    muarifer@muarifer ~ $ su
    Parola:
    muarifer muarifer # su postgres
    postgres@muarifer muarifer $ createuser muarifer
    Shall the new role be a superuser? (y/n) y

    exit
    exit

  • Veritabanımızı oluşturalım: createdb VERITABANI
  • Veritabanına bağlanmak için: psql -d VERITABANI

| Sonraki Sayfa »

Sayfada yayımlanan yazılar aksi belirtmedildiği sürece Murat Arif Çeliker'e aittir. Yorumlar, yorumu yapan kullanıcıların kendi görüşleridir.
açılış - deneyhane - tasarılar - hakkımda - iletişim -

Sitede altyapı olarak Wordpress kullanılmıştır.