mesaj kaygılı etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
mesaj kaygılı etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

8 Ekim 2008 Çarşamba

CeBIT Bilişim Eurasia vs FOWA Future of Web Apps

7 Ekim itibariyle CeBIT Bilişim Eurasia başladı. Sponsorları dev firmalar olan Turkcell, Akbank ve Türk Telekom. İlk gün gitmeyi çok istiyordum, ancak hafta sonu gidebileceğim sanırsam. Gidince Özgürlük İçin standını da ziyaret etmeyi planlıyorum. Pardus ile ilgili yeni birkaç güzellik varmış onları görmeden olmaz. Biraz ipucu için buraya bakılabilir. İşin açıkçası Pardus ve Özgürlük İçin standları dışında ilgimi çekebileceğini düşündüğüm çok şey olduğuna inanmıyorum. Belki iPhone3G için Turkcell standına da uğranabilir :P

Tabi bir de FOWA'yı duyunca, sağlam bir çektim, onu itiraf etmem gerek sanırsam.

8 Ekim'de Londra'da da FOWA (Future of Web Apps) başlıyormuş. Sponsorları :



Başlıkta da "vs" yazınca karşılaştırmayı eskilere gönderme yaparak örneklemek istedim. Street Fighter'da Dhalsim vs Ken olarak yazmak hiç de yanlış olmaz sanırsam. Hani ilk raundu perfect alırsın, sonra ikinci raund perfect'i bozarsa son raund perfect alayım deyip o raundu bilerek yenilirsin, sonra son raundda perfect alırsın ya, işte öyle bir şey... !

7 Ekim 2008 Salı

Türkçe lorem ipsum

Cezbelendi bundan dolayı masaya doğru teldeki adresini öyle ki mutlu oldular bilgiyasayarı orta camisi cezbelendi türemiş sıfat hesap makinesi. Bilgisayarı yapacakmış gidecekmiş düşünüyor bilgisayarı gazete ama göze çarpan batarya kutusu bundan dolayı sokaklarda göze çarpan gül. Ve bilgisayarı otobüs dergi ama bundan dolayı sandalye eve doğru dergi anlamsız sıradanlıktan sıradanlıktan. Sıla koştum yazın yapacakmış adanaya de. Otobüs de mutlu oldular koşuyorlar sinema hesap makinesi. Gazete düşünüyor beğendim ışık dağılımı çobanın bundan dolayı gül sıla uzattı yapacakmış masaya doğru gazete biber çakıl. Umut duyulmamış cesurca yaptı göze çarpan gül bahar lambadaki layıkıyla mutlu oldular düşünüyor.

Sarmal açılmadan dolayı kapının kulu dergi lambadaki gidecekmiş biber un değirmeni duyulmamış un değirmeni cesurca yaptı bilgisayarı gülüyorum. Yazın lakin lambadaki anlamsız gidecekmiş karşıdakine. Umut bilgiyasayarı bahar salladı türemiş sıfat çünkü tv de biber. Balıkhaneye anlamsız sinema cezbelendi çünkü göze çarpan masanın ona doğru ötekinden dolayı. Patlıcan teldeki anlamsız masanın de.

Telefonu teldeki göze çarpan sinema telefonu çakıl masaya doğru değerli olduğu için koyun filmini mi. Filmini mi duyulmamış bilgiyasayarı kalemi sıla domates gül ötekinden dolayı yapacakmış sıla ekşili çorba ve hesap makinesi. Karşıdakine masaya doğru anlamsız gazete ötekinden dolayı cezbelendi mıknatıslı okuma sayfası masaya doğru ışık dağılımı masanın gördüm düşünüyor. Adanaya masaya doğru karşıdakine eve doğru bundan dolayı gördüm bundan dolayı sıla yapacakmış sokaklarda. Kalemi teldeki sıla yapacakmış göze çarpan kalemi biber mutlu oldular gidecekmiş ışık dağılımı. Nedirnedemek Türkçe Lorem İpsum.


Türkçe lorem ipsum üreteci de ahanda burada.

IBM XML Challenge

Geçen sene ilki yapılan IBM Yazılım Akademisi 2008'e DEbUt takımını oluşturup 4 kişi katıldık. Amacımız bitirme projemizi yaparken mümkün olduğunca kendimize bir şeyler katacak bir projeye girişmekti. Microsoft'un Imagine Cup'ına da katılmak istemiyorduk.

Başlarda bitirme projesi konumuz dahi belli değildi. Özgür yazılım adına bir proje yapmak istiyorduk baratrion ile. Tabi doğal olarak ilk aklımıza gelen Pardus'a dahil olabilecek bir proje olmasıydı. İçerisinde Machine Learning kullanabileceğimiz ve bunu Pardus'a entegre edebileceğimiz bir proje. Serdar Soytetir'den okul yönetimi için bir uygulama geliştirilmesi fikri geldi, o dönemki kararsızlığımız içerisinde bir şekilde danışman hocamız Dr. Emine Ekin'in yönlendirmesiyle Yazılım Akademisi'ne katılmaya karar verdik.

Java ile geliştirme yapacak olmamız da ayrıca bir güzeldi. Malum Dokuz Eylül Üniversitesi Bilgisayar Mühendisliği'nin meşhur hocası "TA" yani Tevfik Aktuğlu'dan Data Structures (Veri Yapıları) dersini; Java ile anlatıyordu kendisi ve hakikaten de çok çok iyi anlatıyordu; almıştık. Kendisinin hazırladığı dökümanlar IBM'de yok, Bruce Eckel görse oturur ağlar, yemişim Thinking in Java'yı derdi (tabi bunu İngilizce nasıl söylerdi o daha da bir ayrı merak konusu).

Projeler içerisinden aklımıza en çok yatan Time Table Management (Zaman çizelgesi Yönetimi) oldu. Tabi başlarda hem akademik bir proje de olur gazıyla atladık ama nereden bilelim bu meret deli zormuş. Hatta ne kadar zor olabilir ki diyenlere, canım NP'yi bildin mi diye yanıt vermek istiyorum.

Gerek problemin zor oluşu, gerekse IBM araçlarından WebSphere Application Server, Rational Application Developer, DB2' yu kullanmamız bakımından çok güzel bir tecrübe oldu. Tabi kullanılabilecek teknolojiler bu kadarla da sınırlı değil. Versiyon kontrol sistemlerinden SVN (biz SVN kullandık) ya da CVS kullanılabilir. Object Relational Mapper olarak Hibernate olmazsa olmazlardan. Sıralandıkça sıralanabilir. Şov yaptırmayın bana :P

Hakikaten bir proje geliştirilmesinde baştan sona her adımı uyguluyorsunuz. Hatta öyle ki modeller oluşturup, class diagramlar çıkararak projeyi tasarlamanız isteniyor ve özellikle de son sınıf öğrencileri için çok güzel bir tecrübe oluyor, tabi referans kısmına hiç değinmeme gerek yok.

Aslında bu başlığı o kadar çok dallandırıp budaklandırıp bir destana dönüştüresim olsa da müjdeli haber, uzatmayacağım :P

Yazılım Akademisi 2009 pure XML temasıyla geliyor. Bu seneki proje konuları da ilgi çekici gözüküyor. Tabi ki kendi belirleyeceğiniz bir proje ile de katılmanız mümkün.

Şiddetle tavsiye olunuyor, katılınız efem.

PS: IBM ile uzaktan yakında ilgim yok, Eclipse kullanıyorum, IBM dökümanlarının da hastasıyım o kadar.

Yukarıdaki PS kesmedi : Ben de bu yazıyı etikete boğmazsam ... ! :-m (çemçük smiley)

1 Ekim 2008 Çarşamba

Design Patterns'ten Bir Alıntı

Inheritance cansa, Composition canandır ... !

21 Ağustos 2008 Perşembe

Django'da Model Tanımlarken Gerekebilecek İpucu

Aşağıdaki gibi örnek bir model kodu oluşturmam gerekliydi. Model yapısından da anlaşılacağa üzere User'lar kendi Tag'lerini yaratabilecek (her tag'in bir creator'ı olacak) ve aynı zamanda User'lar bu Tag'leri kendilerine ekleyebilecekler. Buraya kadar gayet basit, fakat sorun model dosyasını oluşturmaya başlayınca çıkıyor ortaya.

Deneme yanılma ile problemleri aşmaya çalışıyordum.

models.py


class User(models.Model):
  username = models.CharField(max_length=100)
  fav_tags = models.ManyToManyField(Tag)
  name = models.CharField(max_length=100)
  surname = models.CharField(max_length=100)
  password = models.CharField(max_length=100)

class Tag(models.Model):
  creator = models.ForeignKey(User)
  name = models.CharField(max_length=500)


Bunda fav_tags = models.ManyToManyField(Tag) satırındaki Tag icin tanımlanamıyor hatası verdi. Kod satır satır işlendiğinden Tag'in bir class olduğundan habersiz bu arkadaş. Aradaki relation ManyToMany olduğundan ve bu ilişki iki class içerisinden birinde yazılacağından fav_tags = models.ManyToManyField(Tag) satırını kaldırdım ve dosya şu hale geldi.


class User(models.Model):
  username = models.CharField(max_length=100)
  name = models.CharField(max_length=100)
  surname = models.CharField(max_length=100)
  password = models.CharField(max_length=100)

class Tag(models.Model):
  creator = models.ForeignKey(User)
  users = models.ManyToManyField(User)
  name = models.CharField(max_length=500)


Bu defa da Tag sınıfının altında iki adet User ile ilişki tanımlandığından hata verdi. Önceki yöntem buna göre daha iyiydi, bir şekilde Tag'in class olduğunu söyleyebilirsem, sorun hallolacaktı. Python'da Forward Declaration nasıl yapılıyor diye baktım ve sonuç alamadım.

Ben de en üst satıra


class Tag(models.Model):
  pass


ekledim ve syncdb dediğim vakit database tabloları oluşturuldu, fakat Tag sınıfı için oluşan tabloda sadece id alt alanı vardı ve sadece bu en üste eklediğim satır için tablo oluşturulmuştu, herhangi bir alt alanı olmadığından sadece id alt alanı eklenmişti.

Bir ara pes etmeye yakınken, irc'den django kanalında sorarsam belki sonuç alabilirim dedim ve hakikaten çok basit bir çözümü olduğunu öğrendim.


class User(models.Model):
  username = models.CharField(max_length=100)
  fav_tags = models.ManyToManyField("Tag")
  name = models.CharField(max_length=100)
  surname = models.CharField(max_length=100)
  password = models.CharField(max_length=100)

class Tag(models.Model):
  creator = models.ForeignKey(User)
  name = models.CharField(max_length=500)


fav_tags = models.ManyToManyField("Tag") satırındaki Tag'i String olarak yazdığım vakit hiç sorunsuz bu işi halledebiliyormuşum. En azından çok da fazla kafayı yemeden sorun hallolduğu için mutluyum.

Bazen gereğinden fazla kompleks düşünmemek gerek... ! Mesajımı da veririm arkadaş :-m