6.12.2012

measureText()

Bugün bir proje için canvas ile sürüklenebilir kutular oluşturmaya çalışıyordum. Her kutunun da bir başlığı olması gerekiyor. Kutuları gösterdik. Kullanıcıların kutuları seçmesine olanak sağladık. Kullanıcılar kutuları sürükleyebildiler hepsi süper!

Kutunun başlığı parametrik, yani kutuyu çizerken metni biliyoruz ama metnin uzunluğunun kaç piksel olduğundan haberimiz yok yani kutunun genişliğinden uzun bir metin kutunun ve yanındaki her şeyin başlığı olmaya aday :)

İşte bu durumda kutumuzu oluşturmadan önce  başlık metninin kaç piksel genişliğinde yer kaplayacağını bulmamız lazım. Burada canvas contextinin  measureText() metodu imdadımıza yetişiyor. parametre olarak başlık metnimizi verip dönen objenin width değerini aldığımızda; artık kutumuzun genişliğinin ne olması gerektiğini biliyoruz.

11.07.2012

Jelastic


Java web projelerini host etmek hemen hemen her zaman geliştiriciye sistem uzmanlığı deneyimi de yaşatan, zaman zaman insanı canından bezdiren bir durum. Şöyle küçük olmayan, geliştirici ortamından yavaş yavaş kanatlanması gereken bir projeniz varsa Jelastic'i yukarıdaki tabloyu yaşamamak adına bir denemenizi tavsiye ederim.

15 günlük bir deneme hesabı açabiliyorsunuz. Bu deneme hesabında bazı sınırlamalar var ama sonuçta deneme hesabı :) Hesabı farklı coğrafi yerlerde oluşturabilme seçeneği sunulmuş. Kuzey Amerika seçeneği ile Avrupa seçeneğini denedim. Kuzey Amerika da hesap başına daha çok kaynak kullanılmasına imkan sağlanmış.

Hesabınızı açtığınızda artık kendinize bir environment oluşturabiliyorsunuz. Bunun için aşağıda ekran görüntüsünü görebileceğiniz, çok kullanışlı bir araç sağlanmış. Oyuncak gibi resmen. :) Siz istediğiniz özellikleri seçtikçe sağ tarafta aylık minimum ve maksimum maliyetler sizin için hesaplanıyor.


Bu araçla ssl, load balancer (nginx kullanılmış), application sserver (Glassfish, Tomcat 6 ve 7, Jetty), veri tabanı (MySQL, PostgreSQL, MariaDB) ya da noSQL seçebiliyorsunuz. Sunucu sayınızı arttırabiliyor, sunucularınıza public ip alabiliyor, JDK versiyonunuzu değiştirebiliyorsunuz. Tabi ne kadar ıvır zıvır eklerseniz sağ taraftaki tutarların da o oranda arttığını görüyorsunuz :)

En azından bir göz atın derim. Sadece deneme hesabını kurcalamak bile oldukça eğlenceli. Ayrıca deployment çok kolay sadece war dosyanızı web arayüzünden upload ediyorsunuz.

2.07.2012

Native vs Web



Bu aralar internet aleminde yazılım geliştiricilerin itişip kakıştığı bir konu da biz bu telefonlara uygulamaları kendi  işletim sistemlerinin SDK’ları ile mi (Native) geliştirelim yoksa  mobil tarayıcılarda da çalışmak üzere tasarlanmış web uygulamaları mı geliştirelim sorusu.

Uygulamanın birden çok platform da yer alıp almayacağı, geliştiricinin yatkın olduğu dil, geliştirme kolaylığı ve benzeri bir sürü özelliği bu iki seçeneğin artı ve eksilerine yazabiliriz ama ben konuya bir başka açıdan bakmaya çalışıyorum. Ne kadar güzel uygulama geliştirirseniz geliştirin, fikriniz ne kadar muhteşem olursa olsun, para kazanmak için gereken şey kullanıcının o uygulamadan haberdar olmasından ve kolayca edinebilmesinden geçiyor.

Native uygulamalar Apple Appstore, Google Play ya da Microsoft Marketplace gibi hizmetlerin üstünlüğüne sahip. Mozzila Marketplace (Henüz son kullanıcıya açık değil ama) ve Chrome Web Store  durumu eşitlemeye çalışıyor olsa da henüz kendilerinden çokça söz ettirebilmiş değiller. Bu durum geliştirilen uygulamanın pazara inmesinde Native uygulamalar için çok ciddi bir avantaj sağlıyor.

Bir başka konu kullanıcının bakış açısı. Bu anlamda da Native uygulamaların iki avantajından bahsedebiliriz. Kullanıcı derken işi yazılım geliştirmek olmayan bizim ön yargılarımıza sahip olmayan bireylerden bahsediyorum.

Birincisi, kullanıcı alışkanlığı. Delinin biri kuyuya  bir taş atmış kırk akıllı çıkartamamış misali Bu işin başlangıç noktasında I-ıvır ile ilgili olarak geliştirilip kullanıcılara yayılmış olan bir sürü uygulama var. Kullanıcılar hali hazırda Mobil Uygulama Mağazalarını kullanmaya alışmış bu mağazalarla tümleşik hizmet veren ödeme sistemlerine entegre olmuş vaziyetteler. Üstelik hallerinden de memnunlar.


İkincisi, istenilene bir adımda ulaşmanın rahatlığı. Şunu demek istiyorum; ne kadar kısayollar eklenerek tek tıkta web uygulamasına erişimin sağlanması mümkün olsa da kullanıcı bir şeyin içinde başka bir şey kullandığı fikriyle ikinci elden bir deneyim kazandığı psikolojisine kapılıyor.

Bu  durum aslında web uygulamalarının yaygınlaşması sırasında Windows uygulamalarının bazı alanlarda daha az kullanılmaya başlanması ile çok benzeşiyor. İlk başlarda müşteriye “Önce tarayıcıyı açacaksın”’ı anlatmak çok zordu zamanla bu durum değişti. Artık bazı işleri masa üstü uygulamaları ile yapmak bazı işleri web uygulamaları ile yapmak bize garip gelmiyor. Hatta hep kendi bilgisayarımızda hiçbir yazılımın kalmayacağını konuşuyor belki de o duruma doğru hızla ilerliyoruz. Ben oyumu web uygulamalarından yana kullansam da (Hem Masa üstü uygulamalara hem de native mobil uygulamalarına karşı) bunun bir süreç olduğunu unutmadan geliştiricilerin sonuçta nereye varılacağından çok mevcut durumda pazarın nasıl hareket ettiğine bağlı kalmaları gerektiğini düşünüyorum. Sonuçta para da kazanmalıyız değil mi?

5.06.2012

TROLOLOLOLOLOLOLOLOLOLO



Eduard Anatolyevich Khil ya da hepimizin bildiği adıyla trololo man (istediğiniz kadar lolo ekleyin işte) dün vefat etmiş. 
Arkadaşım Özgür Çakmak şu adrese bir baksana dediğinde ve sonrasında canım her sıkıldığında hayatıma keyif katan bu beyefendinin anısının çok uzun süre yaşamaya devam edeceğinden eminim :)

4.06.2012

Scrum


Agile software development yapanların da benimsediği Scrum diye bir yazılım geliştirme metodu varmış.

Hoş bir yönteme benzemekle beraber, Türkiye şartlarında yeterli büyüklükte ve yeterlilikte bir ekibe sahip olmadan uygulanması biraz zor gibi görünüyor.

Her şeyden önce bir product owner'a ihtiyaç var. Yani müşteri ya da müşterinin sizin taraftaki temsilcisi, eğer iç proje ise ilgilisi/sorumlusu da bu yapının içinde yer alacak kadar ilgili olmalı. Vakit ayırmalı. Sınırlarını kabul etmeli. Eh hadi böyle bir şey oldu diyelim. Mesela 30 günlük bir sprint boyunca sprinte başlarken belirlenen sprint backlog'a sprint sonuna kadar bağlı kalınmalı. Scrum master bu süre içerisinde dışarıdan gelen müdahalelere karşı ekibi Thermopylae geçidini tutan Kral Leonidas gibi savunmalı. Eh bu da oldu diyelim. Ekip cross-functional ve self-organized olmalı!

Şimdi benim fikrim o ki bu yukarıdakilerin hepsi olsa zaten ne metod uygularsanız uygulayın o proje yolunda gider :)

Ama yine de güzelmiş :) Ben de istiyorum arkadaşım. Ya böyle bir çalışma ortamı ya da ne içiyorsanız ondan!

16.05.2012

Diablo 3


Diablo 3 piyasaya çıktı büyük ihtimalle biliyorsunuzdur. Bende WOW annual pass aracılığıyla oyuna sahip olmuş durumdayım. Görsel olarak çok tatmin edici. Oyunun görselliği dışında çok da bir önceki versiyonundan farkı yok diyebilirim. Ama oynanır eğlenilir.

Oyunun en sıkıntılı noktası offline olarak oynanamıyor olması. Normalde çok büyük sıkıntı olmayacak olan bu durum Blizzard'ın authentication sunucuları size cevap vermeyince kabusa dönüşebiliyor. Wow sayesinde milyonlarca kullanıcının ne kadar trafik yaratabileceği, ne kadar kaynağa ihtiyaç duyacağı konusunda ciddi miktarda bilgiye sahip olduğunu düşündüğüm Blizzard uzuuuuun beta programına ve yaptığı stres testine rağmen sattığı kadar kullanıcıya hizmet sunacak yapıyı oluşturamamış gibi görünüyor. Concurrent requestlerden dolayı hizmet veremiyoruz diye bilgi vermek de ilginç olmuş :) Ne olmasını bekliyorlardı bilmiyorum. Kullanıcılar kendi aralarında koordine olup sırayla mı login olacaklardı?

Bakalım Mists of Pandaria yayınlanınca neler olacak :)



11.05.2012

Jquery ile sürükleyelim :)


Jquery'nin UI kütüphanesi ile birlikte bir şeyleri sürükleyip bırakılabilir hale getirmek cidden çok basitmiş. Hem de çok eğlenceli :) Jquery ve Jquery UI'ı indirmek bir ön gereksinim tabi. UI'ı download ederken istediğiniz paketleri de seçebiliyorsunuz.

Sonra basit bir html dosyası oluşturalım. Linkteki gistte de gördüğünüz gibi indirdiğimiz jquery dosyalarını import edip iki tane div oluşturuyoruz. Divlerimize basitçe stil veriyoruz. Sonra script taglarının içine hangi element(ler)in sürüklenebilir olduğunu belirten minicik bir ifade yazıyoruz ve hatta stack opsiyonu ile belirttiğiniz classa ait bir elementi sürüklerken z-index de ayarlanıyor ve son dokunduğunuz kutu hep üstte kalıyor. Hepsi bu. Artık sürüklenip bırakılabilen kutularımız var :)

4.05.2012

Javascript Call fonksiyonu


Bu aralar herkes her şeyi javascriptle yapıyor. Bende bir librarynin source code'unu incelerken görüp nedir bu acaba diye mereak edip tanıştığım bir fonksiyonu buradan paylaşayım dedim. Anladığım kadarıyla böyle çokta kullanılmayan ama gerektiğinde de hayat kurtaran bir fonksiyon call fonksiyonu.

Bir javascript sınıfı tanımladık diyelim bu sınıftan bir başka sınıf türetmek istediğimizde, javacasıyla söylemek gerekirse bir sınıfı extend etmek istediğimizde ne yapacağız? Hiyerarşide üstte olan sınıfın method ve fieldlarına alttaki sınıftan nasıl erişilecek? İşte bu sorunun cevabı call fonksiyonunda.

Ayrıca anonim fonksiyonların çağrılmasında da kullanılabiliyormuş.

Detaylı bilgi için MDN.

3.05.2012

Trello


Hani böyle her şey bir karışır. Kafa karman çorman olur. O sırada ben bir şey yapacaktım da neydi diye düşünür ya insan. Hah işte o sırada açıp bu Trello şeysine bakıyorum ben. Şeysi diyorum çünkü nasıl tanımlayayım nedir bu Trello kafamda çok net değil. Çok işime yarıyor orası net :)

Şimdi şöyle, Trello da temel olarak panolarımız (board) listelerimiz ve kartlarımız var. Öreğin workboard diye bir pano açıp, bu panoya to do, doing, done diye üç tane liste ekleyip, işlerinizi bu pano üstünde kolaylıkla takip edebiliyorsunuz.
Her panoya üyeler ekleyip kartları bu üyelere atayabilir, kartları etiketleyip (renkli menkli :) ), bitiş tarihi ekleyip, checklistlerle bezeyebilirsiniz :)

İşiniz bitince de kartınızı arşivleyip kalabalığı azaltabiliyorsunuz :)

Herkese tavsiye olunur.