Geçtiğimiz aylarda, kullandığım PC'nin bana ayar vermesini de göz önüne alarak bazı işlerimi Canavar'a taşıdım. Aldığım cihazın tek bir monitör çıkışı var. Ben ise masamın her yeri monitör dolu olsun istiyorum. Öyle seviyorum. Beni yargılamayın. Şimdi hem tüm monitörlerimi kullanabiliyorum hem de iki bilgisayar arasında geçiş inanılmaz kolaylaşmış durumda.
24.06.2020
Sinerji
Geçtiğimiz aylarda, kullandığım PC'nin bana ayar vermesini de göz önüne alarak bazı işlerimi Canavar'a taşıdım. Aldığım cihazın tek bir monitör çıkışı var. Ben ise masamın her yeri monitör dolu olsun istiyorum. Öyle seviyorum. Beni yargılamayın. Şimdi hem tüm monitörlerimi kullanabiliyorum hem de iki bilgisayar arasında geçiş inanılmaz kolaylaşmış durumda.
24.05.2020
Express, Passport, Oauth, Google
Herkese merhaba, size bayram şekeri tadında bir yazı hazırlamaya çalıştım. :) Birlikte Express ile Passport kullanarak Google OAuth örneği yapacağız.
Genelde akış aşağı yukarı şöyle olmalı:
Genelde akış aşağı yukarı şöyle olmalı:
- Kullanıcı login linkine tıklar
- Kullanıcı kimliğini doğrulamak üzere Google'a yönlendirilir
- Google doğrulanan kullanıcı bilgisi ile verdiğimiz URL'e yönlendirme yapar.
- Uygulamada kullanıcı kayıt ya da giriş işlemleri tamamlanır.
Biz işi basitleştirmek için kullanıcının login linkine tıkladığını varsayacak ve doğrudan http://localhost:3000/auth adresine gideceğiz. Kullanıcı kayıt/giriş işlemi yapmak yerine de Google'dan aldığımız e-posta ve isim bilgisini ekranda göstereceğiz.
30.04.2020
Bazı Yakışıklı JavaScript Array Metodları
Javascript çok yaygın kullanılmakla beraber yazılımcıların çokça şikayet ettiği bir dil. Bu sıralar bir proje ile ilgili kod gözden geçirir ve doküman yazarken karşılaştığım / hatırladığım ufak tefek şeyler ile ilgili olarak buraya kısa yazılar bırakacağım. Bir seri gibi olmayacak. Aklıma geldikçe düştüğüm notlar olarak düşünebilirsiniz. Çoğu Javascript, Java, SQL ile ilgili olur diye düşünüyorum. İlgilenenlere şimdiden iyi okumalar.
Javascript'in Array işlemleri için kullanılan metodları oldukça kullanışlı. Bazılarının isimleri biraz kafa karıştırıcı gelebilir ancak alışınca insan çok mutlu oluyor.
Push, pop ve shift'ten bahsedelim istiyorum. Tabi shift'ten bahsederken "Stack" ve "Queue" veri yapılarından bahsetmek enqueue, dequeue kavramlarını hatırlamak lazım.
Stack: son giren ilk çıkar, Queue ise ilk giren ilk çıkar prensibine göre hareket edilen veri yapıları. Enqueue ve Dequeue kavramları da tahmin edebileceğiniz gibi Queue yapısına veri ekleyip çıkarmak için kullanılan kavramlar. C++, Java gibi dillerde native desteklenen bu veri yapılarının Javascript içinde built-in implementasyonları yok.
Array'inize bir eleman push ettiğiniz de array'in sonuna eklemiş; pop ettiğinizde ise son elemanı Array'den çıkarmış olur ve Array'inizi bir Stack olarak kullanmış olursunuz.
Array'inize bir eleman push ettiğiniz de array'in sonuna eklemiş; shift ettiğinizde ise ilk elemanı Array'den çıkarmış olur ve Array'inizi bir Queue olarak kullanmış olursunuz.
Şöyle Örnekleyelim:
Bir de unshift metodu var. Bu metodla da Array'inizin başına eleman ekleyebilirsiniz.
Esen kalın.
Javascript'in Array işlemleri için kullanılan metodları oldukça kullanışlı. Bazılarının isimleri biraz kafa karıştırıcı gelebilir ancak alışınca insan çok mutlu oluyor.
Push, pop ve shift'ten bahsedelim istiyorum. Tabi shift'ten bahsederken "Stack" ve "Queue" veri yapılarından bahsetmek enqueue, dequeue kavramlarını hatırlamak lazım.
Stack: son giren ilk çıkar, Queue ise ilk giren ilk çıkar prensibine göre hareket edilen veri yapıları. Enqueue ve Dequeue kavramları da tahmin edebileceğiniz gibi Queue yapısına veri ekleyip çıkarmak için kullanılan kavramlar. C++, Java gibi dillerde native desteklenen bu veri yapılarının Javascript içinde built-in implementasyonları yok.
Array'inize bir eleman push ettiğiniz de array'in sonuna eklemiş; pop ettiğinizde ise son elemanı Array'den çıkarmış olur ve Array'inizi bir Stack olarak kullanmış olursunuz.
Array'inize bir eleman push ettiğiniz de array'in sonuna eklemiş; shift ettiğinizde ise ilk elemanı Array'den çıkarmış olur ve Array'inizi bir Queue olarak kullanmış olursunuz.
Şöyle Örnekleyelim:
Bir de unshift metodu var. Bu metodla da Array'inizin başına eleman ekleyebilirsiniz.
Esen kalın.
29.04.2020
FRP&MAGIC
Yıl 1999. Hayat çok farklı. İnsanlar çok farklı. Benim hayatımda FRP diye bir şey var. Bir grup aklı başında olduğu şüpheli yaşıtımla gece demeden gündüz demeden bir masanın başına toplanıp; kağıt, kalem, zar filan oturup rol yapma oyunu oynuyoruz. Öyle günlerdi işte.
AD&D meşhurdu. Başka şeyler de oynanırdı ama biz AD&D oynardık. Gecenin bir vakti o masanın üstünü konuyu bilmeyen birisi görse oyun oynadığınıza çok zor inandırırsınız. :D Düşünsenize tütsüler yakılmış. Garip biçimli mumluklarda mumlar yanıyor. Üzerinde yaratık resimleri olan kitaplar, kağıtlar. Gözleri kan çanağı bir grup genç sigara dumanı içinde oturuyor.
Kapalı alanlarda sigara içiliyordu o zaman. Hava soğuksa pencere filan da açılmazdı. Dağılırken kapıyı açınca, insanlardan önce blok halinde duman terkederdi binayı. :)
FRP&Magic dergisi o zaman çıkmıştı işte. Kapağı da şöyleydi:
AD&D meşhurdu. Başka şeyler de oynanırdı ama biz AD&D oynardık. Gecenin bir vakti o masanın üstünü konuyu bilmeyen birisi görse oyun oynadığınıza çok zor inandırırsınız. :D Düşünsenize tütsüler yakılmış. Garip biçimli mumluklarda mumlar yanıyor. Üzerinde yaratık resimleri olan kitaplar, kağıtlar. Gözleri kan çanağı bir grup genç sigara dumanı içinde oturuyor.
Kapalı alanlarda sigara içiliyordu o zaman. Hava soğuksa pencere filan da açılmazdı. Dağılırken kapıyı açınca, insanlardan önce blok halinde duman terkederdi binayı. :)
FRP&Magic dergisi o zaman çıkmıştı işte. Kapağı da şöyleydi:
28.04.2020
ES6 ile Destructuring
2015 yılında çıkan EcmaScript 2015 çeşitli isimlerle anılıyor. EcmaScript 6 ya da Javascript 6 diyen de var ES6 kısaltması ile yetinen de. Hepsi güzel hepsi iyi. :)
ES6 ile gelen bir çok özellik var. Bunlardan eğlenceli bir tanesi de Destructuring. Nedir bu Destructuring derseniz: Budur.
Aşağıdaki kod parçacığında da görebileceğiniz gibi array işlemlerinde oldukça kolaylık sağlıyor.
Array içindeki elemanların yerini değiştirmek için iki farklı kod parçacığı görüyorsunuz. Sizce de ikincisi daha temiz değil mi?
Kullanalım. Kullandıralım.
Esen kalın.
Yine Dutluk Olmuş Buralar
Üç Buçuk yıl nedir yahu! Nasıl ihmal etmişim buraları. Okuyan varsa bile terk edeli çok olmuştur diye düşünüyorum. :)
Bugün bakmak aklıma geldi. Daha doğrusu bir blogum olduğu aklıma geldi. :) Kısa ve içeriği çok parlak olmayan yazılarla yeni bir başlangıç deneyeyim dedim.
Tabi ölü linkleri ayıklamakla başlamak gerekti. Hepsini ayıklayamadıysam karşılaştıklarınızı yazın bana lütfen.
Sonra HTTPS'i etkinleştirmek gerekti. Eski tabi burası ilgilenmeyince öyle kalıyor. Google bu işleri çok kolaylaştırmış. İki tık tık bir şık şık, hoop SSL hazır. Sevinmedim diyemem. :)
Etrafı biraz topladık postunu burada bitiriyorum. Birazdan ufak bir JavaScript postu da atayım. Ortalık kalabalık görünsün.
Esen kalın.
Bugün bakmak aklıma geldi. Daha doğrusu bir blogum olduğu aklıma geldi. :) Kısa ve içeriği çok parlak olmayan yazılarla yeni bir başlangıç deneyeyim dedim.
Tabi ölü linkleri ayıklamakla başlamak gerekti. Hepsini ayıklayamadıysam karşılaştıklarınızı yazın bana lütfen.
Sonra HTTPS'i etkinleştirmek gerekti. Eski tabi burası ilgilenmeyince öyle kalıyor. Google bu işleri çok kolaylaştırmış. İki tık tık bir şık şık, hoop SSL hazır. Sevinmedim diyemem. :)
Etrafı biraz topladık postunu burada bitiriyorum. Birazdan ufak bir JavaScript postu da atayım. Ortalık kalabalık görünsün.
Esen kalın.
6.11.2016
Kişisel bir VPN sunucunuz olsun mu? Bence olsun!
Merhaba,
Malum ülkemizde internet erişiminin ne kadar süreyle hangi adresler için kesileceği pek belli olmuyor. Bu erişim engelleme işlemi sırasında kurunun yanında yaşta yanıyor tabi. Örneğin geçenlerde gitub ve dropbox'a erişimin engellenmesi bir çok meslektaşımı zor durumda bırakmış ancak VPN hizmetleri ile sorun derinleşmeden ilgili kaynaklara yeniden erişebilir hale gelmiştik. Şimdi yayınlanan bazı haberler tanınmış VPN hizmetleri ile ilgili olarakda erişim engelleme yapıldığı yönünde. Şu anda kontrol ettiğimde ben de ZenMate üzerinden erişim sağlayamıyorum mesela.
Bu durum için ise alternatif bir çözüm kendi OpenVPN sunucunuzu kurup, onun üzerinden erişim sağlamak. Bunun için yurt dışındaki hizmet sağlayıcılardan birinden bir vps kiralayabilir trafiğinizi bu openVpn sunucusu üzerinden yönlendirebilirsiniz. Örneğin Digital Ocean tarafından sağlanan portletler işinizi görecektir. Şu linke tıklayarak ayda 5 dolarlık bir portlet oluşturup kişisel openVpn sunucunuzu kurabilirsiniz. Bu sadece bir seçenek tabi pek çok fiyat ve özellikte barındırma hizmeti dünyanın her tarafından sağlanıyor isteğinizi seçip aynı yolu izleyerek sonuca ulaşabilirsiniz. Bu linki kullanırsanız referral olarak ben credit kazanmış olacağım :). Ayrıca sizde 10 doarlık bir credit kazanmış olacaksınız.
Ben bundan sonrasını digital Ocean üzerinden anlatıyorum ama kurduğunuz işletim sistemi Ubuntu 16.04 olduğu sürece adımların pek değişeceğini sanmıyorum.
Öncelikle Ubuntu 16.04 yüklü bir portlet oluşturun. Digital Ocean sanal sunucunuz için pek çok lokasyon sağlıyor. Ben Amerika yerine avrupada bir lokasyon seçmenizi öneririm.
Portletinizi oluşturduktan sonra size sunucunuzun root kullanıcısının şifresi eposta ile gelecek. İster dashboarddaki web consolunu kullanarak isterseniz putty gibi bir SSH client kullanarak sanal sunucunuzda oturum açın. İlk giriş sırasında şifrenizi değiştirmeniz istenecek. Daha sonra aşağıdaki adımları takip edin. Ayrıca bu yazıya örnek olan orjinal tutoriala da isterseniz bu linkten ulaşabilirsiniz.
Malum ülkemizde internet erişiminin ne kadar süreyle hangi adresler için kesileceği pek belli olmuyor. Bu erişim engelleme işlemi sırasında kurunun yanında yaşta yanıyor tabi. Örneğin geçenlerde gitub ve dropbox'a erişimin engellenmesi bir çok meslektaşımı zor durumda bırakmış ancak VPN hizmetleri ile sorun derinleşmeden ilgili kaynaklara yeniden erişebilir hale gelmiştik. Şimdi yayınlanan bazı haberler tanınmış VPN hizmetleri ile ilgili olarakda erişim engelleme yapıldığı yönünde. Şu anda kontrol ettiğimde ben de ZenMate üzerinden erişim sağlayamıyorum mesela.
Bu durum için ise alternatif bir çözüm kendi OpenVPN sunucunuzu kurup, onun üzerinden erişim sağlamak. Bunun için yurt dışındaki hizmet sağlayıcılardan birinden bir vps kiralayabilir trafiğinizi bu openVpn sunucusu üzerinden yönlendirebilirsiniz. Örneğin Digital Ocean tarafından sağlanan portletler işinizi görecektir. Şu linke tıklayarak ayda 5 dolarlık bir portlet oluşturup kişisel openVpn sunucunuzu kurabilirsiniz. Bu sadece bir seçenek tabi pek çok fiyat ve özellikte barındırma hizmeti dünyanın her tarafından sağlanıyor isteğinizi seçip aynı yolu izleyerek sonuca ulaşabilirsiniz. Bu linki kullanırsanız referral olarak ben credit kazanmış olacağım :). Ayrıca sizde 10 doarlık bir credit kazanmış olacaksınız.
Ben bundan sonrasını digital Ocean üzerinden anlatıyorum ama kurduğunuz işletim sistemi Ubuntu 16.04 olduğu sürece adımların pek değişeceğini sanmıyorum.
Öncelikle Ubuntu 16.04 yüklü bir portlet oluşturun. Digital Ocean sanal sunucunuz için pek çok lokasyon sağlıyor. Ben Amerika yerine avrupada bir lokasyon seçmenizi öneririm.
Portletinizi oluşturduktan sonra size sunucunuzun root kullanıcısının şifresi eposta ile gelecek. İster dashboarddaki web consolunu kullanarak isterseniz putty gibi bir SSH client kullanarak sanal sunucunuzda oturum açın. İlk giriş sırasında şifrenizi değiştirmeniz istenecek. Daha sonra aşağıdaki adımları takip edin. Ayrıca bu yazıya örnek olan orjinal tutoriala da isterseniz bu linkten ulaşabilirsiniz.
28.12.2014
Canvas Input
Uzun bir aradan sonra merhaba :)
HTML5 Canvas üzerinde oyun geliştirmeye çalışırken karşılaştığım bir soruna Gold Fire Stüdyoları oldukça güzel bir çözüm bulmuş. Oyunun akışı içerisinde kullanıcıdan girdi almak istediğinizde canvasın dışına çıkmak istemiyorsanız biraz uğraşmanız gerekebiliyor. Gold Fire Stüdyoları da aynı sorunla karşılaşmış ve CanvasInput'u üretmişler.
Öncelikle linkleri vereyim. CanvasInput Github,
Web sayfasında ve githubdaki açıklamalarda da görebileceğiniz gibi HTML Input tagi ile aynı işlevi görecek ama tamamen canvas içinde kullanılacak bir kullanıcı girişi deneyimi sağlamak.
Kullanımı çok basit. CanvasInput.min.js include edildikten sonra aşağıdaki kod bloğu ile en basit haliyle bir input oluşturulabiliyor.
Oluşturduğunuz inputun stilini ve davranışını değiştirmek için pek çok özellik de sağlanmış. Bu özelliklerin listesine de yine CanvasInput'un tanıtıldığı sayfadan erişebilirsiniz.
HTML5 Canvas üzerinde oyun geliştirmeye çalışırken karşılaştığım bir soruna Gold Fire Stüdyoları oldukça güzel bir çözüm bulmuş. Oyunun akışı içerisinde kullanıcıdan girdi almak istediğinizde canvasın dışına çıkmak istemiyorsanız biraz uğraşmanız gerekebiliyor. Gold Fire Stüdyoları da aynı sorunla karşılaşmış ve CanvasInput'u üretmişler.
Öncelikle linkleri vereyim. CanvasInput Github,
Web sayfasında ve githubdaki açıklamalarda da görebileceğiniz gibi HTML Input tagi ile aynı işlevi görecek ama tamamen canvas içinde kullanılacak bir kullanıcı girişi deneyimi sağlamak.
Kullanımı çok basit. CanvasInput.min.js include edildikten sonra aşağıdaki kod bloğu ile en basit haliyle bir input oluşturulabiliyor.
<canvas id="canvas" width="200" height="50"></canvas>
var input = new CanvasInput({
canvas: document.getElementById('canvas')
});
12.03.2013
Yandexle canım Yandexle
Yandex pek çok başarılı hizmetle karşımızda bir taraftan da bir reklam çılgınlığıdır sürüyor. Hele son kampanya on numara Lamborghini (Markayı yazmak bile yorucu arkadaş...) veriyormuş Yandex. Neyse versinler tabi mesele o değil. Şimdi bu Yandex browser denen dalga bildiğin webkit işte ortada "Ay ne güzel!", "Herkez Yandex kullansın süfeeer" gibi bir durum yok hoşuna giden güzel güzel kullansın. Ben logosunu sevmiyorum plaj topu gibi başka bir şey bulamamışlar mı arkadaş. Bak yine uzattım lafı.
Şimdi bu Lamborghini kampanyasına katılma şartı olarak yandex browser indirilecek, kurulacak, kampanya sayfasına gidilecek onunla kayıt olunacak ya. Hiç gerek yok. Chrome ya da firefox kullanıyorsanız eklenti olarak bir user agent switcher indiriyorsunuz şu linkten user agent stringini alıp eklentinin ayarlar sayfasından yeni agent stringi ekliyorsunuz. Hayırlı olsun Yandex browser görünümlü chrome ya da firefox tarayıcınız hazır. Onunla girip yapabilirsiniz kayıt işleminizi. Ha illa bir yandex e-posta hesabı açacaksınız o ayrı.
Niye mi? Hiç eğlence olsun. :)
Şimdi bu Lamborghini kampanyasına katılma şartı olarak yandex browser indirilecek, kurulacak, kampanya sayfasına gidilecek onunla kayıt olunacak ya. Hiç gerek yok. Chrome ya da firefox kullanıyorsanız eklenti olarak bir user agent switcher indiriyorsunuz şu linkten user agent stringini alıp eklentinin ayarlar sayfasından yeni agent stringi ekliyorsunuz. Hayırlı olsun Yandex browser görünümlü chrome ya da firefox tarayıcınız hazır. Onunla girip yapabilirsiniz kayıt işleminizi. Ha illa bir yandex e-posta hesabı açacaksınız o ayrı.
Niye mi? Hiç eğlence olsun. :)
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.
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.
14.10.2011
"I'm not glad he's dead, but I'm glad he's gone."
| stallman.org'dan alınmıştır. |
13.04.2011
Belgariad - 2. Kitap - Tolnedra
...
"Planınızın küçük bir kusuru var Dük Kador," dedi Mandorallen mızrağını bir ağaca dayayarak.
"Ben bir kusur göremiyorum Baron," dedi Kador havalı bir tavırla.
"Kusurunuz pervasızca kılıcımın menziline girmeniz," dedi Mandorallen. "Kafanızı alıverirsem, kafasız bir vücudun bir taca da ihtiyacı olmaz."
Kador, Mandorallen'e endişe ile bakarak, "Yok canım," dedi pek kendinden emin olmayan bir sesle. "Sayıca sizden çok üstünüz."
"Basiretsiz bir fikir," dedi Mandorallen. "Ben cihandaki en kudretli şovalyeyim ve zırhlıyım. Askerleriniz kılıcımın önünde biçilecek buğday başaklarından farksız. Sonunuz geldi Kador." Böyle diyerek koca kılıcını çekti.
...
"Planınızın küçük bir kusuru var Dük Kador," dedi Mandorallen mızrağını bir ağaca dayayarak.
"Ben bir kusur göremiyorum Baron," dedi Kador havalı bir tavırla.
"Kusurunuz pervasızca kılıcımın menziline girmeniz," dedi Mandorallen. "Kafanızı alıverirsem, kafasız bir vücudun bir taca da ihtiyacı olmaz."
Kador, Mandorallen'e endişe ile bakarak, "Yok canım," dedi pek kendinden emin olmayan bir sesle. "Sayıca sizden çok üstünüz."
"Basiretsiz bir fikir," dedi Mandorallen. "Ben cihandaki en kudretli şovalyeyim ve zırhlıyım. Askerleriniz kılıcımın önünde biçilecek buğday başaklarından farksız. Sonunuz geldi Kador." Böyle diyerek koca kılıcını çekti.
...
Kaydol:
Yorumlar (Atom)













