pengeunpedi pengeunpedi pengeunpedi
  penguenyuvasi   pengulog   arşiv   bulut   rss

matrix windows üzerinde çalışsaydı

Tuesday, November 11, 2008 5:42:29 PM tarihinde Fırat KÜÇÜK tarafından gönderildi.

http://www.collegehumor.com/video:1886349

Başlık: The Matrix Runs on Windows
Slogan: Take the red pill. Get the blue screen.

Filmin sonundaki "i am going to learn ubuntu?" cümlesinin de özellikle altını çiziyorum. :)

eğlencelik, incelemekaynak | yorumlar [0]


bir zihnisinir procesi: analog loto

Wednesday, November 5, 2008 8:13:54 PM tarihinde Fırat KÜÇÜK tarafından gönderildi.

Yaşı ilerlemiş elektronik ve bilgisayarcılar için özel tasarladığımız sayısal loto rakibi bir oluşum kendisi. Malumunuz sayısal loto 49 rakam arasından 6 adet seçilerek oynanan bir şans oyunu. Bizde mesai arkadaşları oturup bu konuda yeni bir proje üretme ihtiyacı duyduk. Bizi buna yönlendiren; "Neden sayısal loto var da analog loto yok?" sorusu oldu. Her büyük icadın arkasında da böyle bir Neden sorusu yok mudur?

Sözü dallandırmadan oyunun oynayış şekline geliyorum. Oyun 2.5 cm x 2.5 cm'lik beyaz bir kare içerisine rasgele çizilmiş 1cm uzunluğunda 4 çizgiden oluşuyor. 4 çizginin yerini bulursanız; duruma göre mutlu oluyorsunuz. Henüz oyun yaygınlaşmadığından zenginleşme sözü veremiyoruz. Ama bu proceyi en kısa zamanda milli piyango genel müdürlüğüne ve bilimum konu ile ilgili müteşebbüse sunacağız.

Olayın kısaca matematiği de şu şekilde: Bilindiği gibi 6 - 49 sayısal loto'nun çıkma ihtimali

49 x 48 x 47 x 46 x 45 x 44 = 10,068,347,520

Analog lotonun hesaplaması ise biraz daha meşakkatli. Malumunuz analog bir sistem ideal olarak sonsuz değer alabilir. Bu nedenle işaretlemeleri 0.7 kurşun kalem referans olarak alacağız. Ve nokta aralıklarının da yine 0.7mm olduğunu düşüneceğiz. 0.7 kalem ucu ile yarı çapı 1cm olan bir çember yapıp kaç adet çizginin yaklaşık bir daire olduğuna bakalım.

çevre = 2 x pi x r = 2 x 3.14 x 10 mm = 62.8 mm

1 cm yarı çapına sahip bir çemberin çevresini hesaplamış olduk. Bu çevreyi kaç çizgi ile oluşturabiliriz? Yani merkezden kaç çizgi çıkarsa 360 derecelik bir alan oluşturur?

çizgi adeti = 62.8 / 0.7 = 89.71 =~ 90

Çizgi adetine yaklaşık 90 diyebiliriz. Bu da 360 dereceyi baz alarak düşündüğümüzde her 4 derece için bir 0.7 mm çizik kullanılabiliyor demektir. Şimdi 360 derecelik çizgileri 4 bölgeye ayıralım sol-üst, sağ-üst, sol-alt, sağ-alt şeklinde sol-üst ve sağ-alt bir birinin aynı çizgiler olabilir. Aynı şekilde sol-alt ve sağ-üst bir birinin aynı olabilir. Bu nedenle 2 bölgeyi esas olarak alalım. Yalnızca üst bölgeler.

Sol bölgenin doldurabileceği alan için kaç adet çember merkezi olabileceğini hesaplıyalım.

ilerlenebilecek köşe = 2.5 cm - 1 cm = 1.5 cm = 15 mm

15 mm'lik köşede kaç merkez olabilir?

bir köşedeki merkez sayısı = 15 / 0.7 = 21.42 adet

15 mm x 15 mm'lik bir alanda kaç merkez olabilir?

alandaki merkez sayisi = (15 / 0.7) ^ 2 = 459

bu yönleri sol ve sağ olarak iki bölge olarak düşünmüştük.

toplam merkez sayısı = 459 * 2 = 918

Evet 2.5 cm'lik karedeki 1 cm'lik 0.7 mm kalınlığındaki çizgi 918 farklı şekilde çizilebiliyormuş. 4 çizgi için ihtimal sayısı ise:

ihtimal sayısı = 918 x 917 x 916 x 915 = 705,551,280,840

Çok yakın çizgilerin aynı kabul edilmesi ve yaptığımız hesap hatalarını 705 milyon ihtimal kompanze edebilir diye düşünüyoruz.

atölye, eğlencelikkaynak | yorumlar [2]


google sites ve herkese bir wiki

Monday, November 3, 2008 7:47:32 PM tarihinde Fırat KÜÇÜK tarafından gönderildi.

Madem yeni bir wiki yaptın uzun zamandır neden yazmıyorsun diyenleriniz vardır. ?? (Gerçi burayı benden başka kimsenin okuduğunu zannetmiyorum ya :)) Temel nedeni şu ki yazdığım günlüğe yönetim kısmı koymadım ve pma'dan veri girmek çok zor geliyor. İnşallah 2009 sürümünü yaparsam en önce bir yönetim paneli yapmayı düşünüyorum. Her neyse kimin umrunda. Konumuza dönelim; Google Sites.

Google, wiki sağlayıcısı jotspot'ı satın aldığından beri böyle bir atılım bekliyordum. Nihayet yakın zamanda Google Sites projesi açığa çıktı. Malumunuz en büyük örneği Wikipedia olan wiki oluşumu, yazılanların sürümlendirilmesini ve asla çöpe gitmemesini sağlayan ortak bir belge geliştirme platformu. Aman Allah'ım ben ne yaptım dediğiniz sırada yazdıklarınızı millattan önceki sürümü ile değiştirebiliyorsunuz. Wikipedia'yı Vandallardan koruyan en büyük veli nimet te hiç şüphesiz bu fevkaladelik.

Google şirketi, Sites ile Apple IPod kolaylığında ve Blogger tadında bir projeye imza atmış. Google minimalizmi yine olaya hakim. Etrafta bir sürü düğme göremiyorsunuz. Bu biraz da zaten etrafa bir sürü düğme koyacak kadar özellik olmadığından tabi. (Bunu rakiplerinin durumuna karşın söylüyorum.) Google şirketini kişisel olarak açık kaynağa verdiği destekten dolayı takdir etsem de web çatıları (framework) ve site tasarımı konusunda Yahoo'yu daha başarılı buluyorum.

Wikia, Wikispaces, Wikidot gibi bir çok ücretsiz wiki sağlayıcının yanında bir de Google Sites'ımız oldu. E kendisine hoşgeldin diyoruz. Google Sites'taki güzel özelliklerden birincisi; diğer google hizmetleri olan Blogger, Google Pages (Artık geliştirilmeyecek ve ya yalnızca apps içinde olacak) ve Goole Apps'te olduğu gibi DNS sunucunuza ghs.google.com şeklinde CNAME tanımlayınca kendi alan adınızın karizması ile bir google hizmetine sahip oluyorsunuz.

Diğer bir güzel özellik ise oluşturduğunuz belgelere ek dosya ve yorum ekleyebiliyorsunuz. Bu da biz programcılar için programı şu şekilde yazdım aha da kodu burada dememizi sağlayacak bir güzellik.

Bunlara ilaveten sistem yalnızca web sayfasına dayalı değil. Pano, duyurular sayfası, dosya dolabı ve liste ekleyebiliyorsunuz. Panoya bir çok google öğesi (Picasa slayt gösterisi, google belgesi vs) dahil olabiliyor. Dosya dolabına projeniz ile alakalı paylaşmak istediğiniz dosyaları koyabiliyorsunuz. Liste ise bildiğimiz tablo. Kendi özelleştirilmiş sütunlara sahip tablonuzu oluşturabiliyorsunuz. Bu tablo üzerinde sıralama gibi emellerinizi de gerçekleştirmeniz mümkün.

Google Sites'ta neler eksik?

Öncelikle an itibari ile RSS desteği yok. Cık cık cık Google'a yakıştıramadım. Değişikliklere abone ol gibi bir sistem yapmışlar ama RSS'in yanından bile geçemez elbetteki. Bunun yanında tema desteği blogger'daki kadar gelişmiş değil. Bu da arzu ettiğimiz bir özellik. Dosya dolabına .html uzantılı dosya ekleyemiyoruz. Ve ayrıca Google Code'da olduğu gibi gerçek wiki imlası ile girdi yazamıyoruz. Buradan Google yetkililerine sesleniyoruz; kaybolmayan sakız istiyoruz.

Son olarak bu kadar kelamı boşuna etmedik ve pedi.penguenyuvasi.org'u Google Sites iktisadi teşebbüsüne taşıdık.

haber, incelemekaynak | yorumlar [5]


uzun bir bekleyişten sonra

Sunday, September 14, 2008 10:07:21 AM tarihinde Fırat KÜÇÜK tarafından gönderildi.

Yaklaşık 1 senedir bu günlüğüme yazı yazmıyordum. 2009 yılının yaklaşması itibari ile penguenyuvasi.org için tamamen yerli üretim bir blog çalışması içerisine girdim. Sözü fazla uzatmadan kısmet bugüneymiş diyorum. :)

Penguenyuvası'nda neler yapıldı ve neler yeni?

Öncelikle tüm görsel öğeler inkscape ve gimp kullanılarak tek tek el ile hazırlandı. Tabi yuvarlak hatlı penguenler oldu biraz ama neyse :)

Kodlama kısmını başta PHP ve codeigniter kullanarak gerçekleştirdim. (PHP ile proje yapacaklara tavsiyem codeigniter veya symfony'i mutlaka denemeleri.) Ama sonra beni tanıyanlar bilirler 2 hafta önce canım sıkıldı ve kalan kısmını PHP ile devam etmek yerine tamamen Java'da yazmanın daha mantıklı olacağını düşündüm her nasılsa???

Kodlama esnasında kullandığım teknolojiler şunlar:

  1. Düzenleyici ve IDE olarak: netbeans 6.1, vim, gedit
  2. Veritabanı: MySQL (5.0.51a-3ubuntu5.1)
  3. Sunucu: Ubuntu 7.10 üzerinde Apache 2.2.4-3ubuntu0.1 ve Apache Tomcat 6.0.18
  4. Programlama dili: Java
  5. Alt teknolojiler: Java Bean, Filter, Servlet, Jspx, Jspf, Tag handler, Tagx, TLD'ler

Kodlama esnasında kendime bir projenin Java'dan PHP'e dönüştürülmesinin çoka akıllı bir davranış olmadığı konusunda bir çok telkinde bulundum, hatta zaman zaman kendime küfrettim. PHP'de tek metod ile yapacağınız bir şey için Java'da 3-4 satır kod yazmanız kaçınılmaz. Fakat Java teknolojilerinde daha çok detaya inmek mümkün. Sunucu ile ilişkileriniz daha sıkı.

Sıkı ilişki kelimesini açarsak web sunucu ve web sunucu üzerinde çalışan uygulamalar, aynı dilde yazıldığından bu bir avantaj. Bir kaç örnek verelim Servlet dediğimiz web uygulamacığı çalışmadan önce veya çalıştıktan sonra gelen ve gönderilen parametreleri bir süzgeçten (javax.servlet.Filter) geçirebiliyorsunuz. Bu da sizin PHP'de yalnızca Apache'ye modül yazarak gerçekleştirebileceğiniz işleri yapmanıza imkan tanıyor.

<filter>
  <filter-name>Suzgec</filter-name>
  <filter-class>org.pengulab.penguenyuvasi.filters.PenguFilter</filter-class>
</filter>
<filter-mapping>
  <filter-name>Suzgec</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>

Url örüntülerini (url-pattern) kolayca yönlendirebilmemiz (servlet-mapping) de bir avantaj. Örneğin tüm .pengu uzantılı dosyalara Pengu servlet'inin cevap vermesini sağlıyabiliriz. Böylelikle kendi şablon dilimizi hatta web üzerinde çalışan betik programlama dilimizi yapmamızı sağlar. (Javy webde böyle çalışıyor şuanda)

<servlet>
  <servlet-name>Pengu</servlet-name>
  <servlet-class>org.pengulab.penguenyuvasi.handlers.PenguHandler</servlet-class>
</servlet>
<servlet-mapping>
  <servlet-name>Pengu</servlet-name>
  <url-pattern>/*.pengu</url-pattern>
</servlet-mapping>

Bunu Apache'de yapmak için bir Tutucu (Handler) yazmamız lazım. Bu Handler'ı .htaccess dosyasında veya genel yapılandırma dosyasında tanımlarız. Apache'nin bütünleşik veya modüllerinde gelen tutucularına ilaveten Java'da olduğu gibi bir tutucu yapmak için Action komutunu kullanıyoruz. (wepy'de bu şekilde çalışıyordu.)

Action add-footer /cgi-bin/footer.pl
AddHandler add-footer .html

Tekrar kullanılabilir öğeler (reusable components) yapma konusunda ise Java oldukça yetenekli tag, tagx dosyaları ile tld kütüphaneleri ile kendi özelleştirilmiş xml etiketlerinizi oluşturabiliyorsunuz. Hatta javanın ifade dili (EL - Expression Language) için işlevlerde yazabiliyorsunuz bu sayede.

penguenyuvasi.org'da neler yeni sorusunun cevabına gelirsek uzun bir zamandır viki imlası ile günlük girdisi yazma hayalim vardı. Bu hayali yeni sürüm ile gerçekleştirdim. Pegi adını verdiğim viki imlası ayrıştırıcısını kullanarak daha kolay ve anlaşılır gönderiler yazmak mümkün. Bir de şirin mi şirin etiket bulutumuz var. Bu da web 2.0'ın nimetlerinden. Gerçi yeni trend bildiğiniz gibi RIA (Rich Internet Applications) yani janjanlı flex, ajax, silverlight sayfaları. Bu uygulamalar internetin yakın gelecekteki hali hakkında ipuçları veriyor. Sanırım HTML artık flash veya applet gibi öğeleri içene gömmekte kullandığımı 4 - 5 satırlık bir geleceğe doğru gidiyor.

Karşılaşılan zorluklar

Java denilince akla yerel problemi geliyor. Oldukça sık karşılaştığım canım Türkçeme yapılan eziyetler'den kurtulamadım bir türlü. Forward ve include'a ait parametrelerde kullandığınız Türkçe karakterler bozuk gönderilmekte. Bu nedenle:

request.setCharacterEncoding("UTF-8");

ifadesi ise bu durumun çaresi fakat her betiğe tek tek yazmak zor olacağı için filter çözümü daha uygun gibi:

import java.io.*;
import javax.servlet.*;

public class EncodingFilter implements Filter {

  private String encoding;

  public void destroy() {
  }

  public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
    request.setCharacterEncoding((encoding == null || encoding.isEmpty()) ? "UTF-8" : encoding);
    chain.doFilter(request, response);
  }

  public void init(FilterConfig config) throws ServletException {
    encoding = config.getInitParameter("encoding");
  }
}

web.xml dosyasınada şu şekilde girdide bulunabiliriz.

<filter>
  <filter-name>EncodingFilter</filter-name>
  <filter-class>org.pengulab.penguenyuvasi.filters.EncodingFilter</filter-class>
  <init-param>
    <param-name>encoding</param-name>
    <param-value>UTF-8</param-value>
  </init-param>
</filter>
<filter-mapping>
  <filter-name>EncodingFilter</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>

Bunun daha kısa bir yolu varsa önerileri bekliyorum. Diğer bir yerel problemi ise veritabanına yaptığımız sorgularda baş gösteriyor. Bunu düzeltmemiz için JDBC bağlantı dizgesinin sonuna ek iki adet parametre eklememiz gerekli:

jdbc:mysql://localhost:3306/veritabani?characterEncoding=utf8&useUnicode=true
atölye, haber, inceleme, java, php, sorun çözümükaynak | yorumlar [0]


yerel ayrımcılığı 2

Saturday, August 4, 2007 10:04:00 PM tarihinde Fırat KÜÇÜK tarafından gönderildi.

Synth, yeni nesil java uygulamaları için şahane estetik arabirimler yapmamızı sağlayan bir teknoloji. Fakat Türkçe yerelinde problemler çıkartmakta idi. Tabi bunu yaklaşık 6 - 7 saat uğraştıktan sonra anladım ve 10 - 12 saat sonra bir patch yazdım. Umarım kabul edilir.

Gelelim Synth'e aşağıda vereceğim Java Web Start örneklerini Patch JDK6'ya eklenene kadar sisteminizi İngilizceye alıp görüntüleyebilirsiniz:

Nimbus : Swing'in yeni hali:


synthetica temaları:





Java'nın standart örnekleri

http://java.sun.com/docs/books/tutorial/uiswing/



java, sorun çözümükaynak | yorumlar [0]




<<  <  1  2  3  4  5  >  >>  


pengulog

her hakkı erkektir © 2008 e-posta