27 Nisan 2011 Çarşamba

TİB Performansının doruğunda

İnterneti çocuklar için güvenli hale getirmenin yolu bulunmuş, işte alan adlarında bulunması yasaklı kelimeler listesinden bir demet;
  • atesli
  • escort
  • dump
  • hikaye
  • homemade
  • nefes
  • yerli
  • tube
  • turbanli
  • zoo
http://www.scribd.com/doc/54049096/Alan-Ad%C4%B1-Yasaklar%C4%B1

13 Nisan 2011 Çarşamba

GWT uygulaması ve Django arasında iletişim

Önceki yazıda GWT projesini Django ile sunmayı yazmıştım, bakmadıysanız önce ona bakmanız iyi olur.

GWT 2.2'nin yeni projelerde ürettiği örnek kod bir metin girişi ve bir "Send" düğmesi oluşturuyor ve Java sunucusuna bu metni gönderiyor. Aşağıdaki örnek bunu Django uygulamasına gönderip gelen cevabı da metin giriş kutusuna yazıyor. Kodun tamamını vermiyorum, nasıl çalıştığının anlaşılması yeterli olacaktır, GWT kodu SDK belgelerindekinin neredeyse aynısı zaten. Django kodu da açıklama gerektirmeyecek kadar kısa.

test.java

String url = "action";
final RequestBuilder builder = new RequestBuilder(RequestBuilder.POST, URL.encode(url));
builder.setHeader("Content-Type", "text/plain");

try {
@SuppressWarnings("unused")
Request request = builder.sendRequest(textToServer, new RequestCallback() {

@Override
public void onResponseReceived(Request request, Response response) {
if (200 == response.getStatusCode()) {
nameField.setText( response.getText() );
} else {
nameField.setText( "Server error" );
}
}

@Override
public void onError(Request request, Throwable exception) {
nameField.setText("Connection error");

}
});
} catch (RequestException e) {
// TODO Auto-generated catch block
nameField.setText("Unknown error");
}



urls.py

from django.views.decorators.csrf import csrf_exempt

@csrf_exempt
def action(request):
return HttpResponse("Your name is : %s" %request.raw_post_data )


urlpatterns = patterns('',
('^$', entry),
('^test/(.*)$', "django.views.static.serve", {"document_root":settings.STATIC_DOC_ROOT}),
('^action$', action),
)


Bu iletişim yöntemini JSON verilerini taşımak veya kendi XML-RPC yapınızı kurmak için kullanabilirsiniz.

11 Nisan 2011 Pazartesi

Django ile GWT projesini sunmak

Web projeleri için Django sunucu tarafında güçlü ve kullanımı rahat bir araç, aynı şekilde GWT'de istemci tarafında güçlü ve geliştiricisini rahat ettiren bir teknoloji. Bu ikisinin birlikte kullanımı kulağa hoş gelse de böyle bir kullanım GWT'nin sunucu imkanlarını, Django'nun da template sistemini (kısmen) kullanmaktan vazgeçmek demek.

Eclipse ile GWT projesini derleyince proje dizinindeki /war dizinine sunulacak dosyaları oluşturuyor. Bu dizin Django projesinin de kök dizini olarak kullanılabilir. Test isimli bir GWT projesi derlendiğinde ve Django ile yeni proje oluşturulduğunda şöyle bir dizin yapısı oluşuyor.

 /war
Test.html
Test.css
__init__.py
manage.py
settings.py
urls.py
test
|_...


Bu yapıda html ve css dosyası ile GWT'nin doğrudan erişime ihtiyacı olan test dizinini sabit içerik olarak sunmak gerekiyor. Bunu kullanacağınız sunucudan (Apache, nginx vs.) ayarlamak mümkün, bende kolay olduğu için önce öyle yapmıştım. Django projesi için ayrı bir dizin oluşturup sabit dosyaları doğrudan Apache'nin sunmasını sağladım. Ancak önemli bir sorun çıktı, Django kendi sunmadığı html sayfalarından gelen POST/GET çağrılarını kabul etmiyor. Sonuçta aşağıdaki değişiklikleri yaparak içeriği Django'nun sunmasını sağlamak gerekiyor.

 #Settings.py
ROOT_URLCONF = 'urls' #Çünkü projemiz kök dizinde
import os
TEMPLATE_DIRS = ( os.path.dirname(__file__).replace('\\','/'), )
STATIC_DOC_ROOT = os.path.dirname(__file__).replace('\\','/')+"/test"


Test.html Dosyasını Django'dan template olarak yüklemek için TEMPLATE_DIRS'ı dosyanın bulunduğu dizin olarak tespit ediyoruz, zaten bu sayfa bir defa yüklendikten sonra başka bir sayfa yüklenmeyecek. GWT Dosyalarının bulunduğu /test dizinini de sabit içerik dizini olarak tespit ediyoruz.


1:  #urls.py
2: from django.conf.urls.defaults import *
3: from django.template import loader, Context
4: from django.http import HttpResponse
5: from django.conf import settings
6:
7:
8: def entry(request):
9: t = loader.get_template('Test.html')
10: return HttpResponse(t.render(Context()))
11:
12:
13: urlpatterns = patterns('',
14: ('^$', entry),
15: ('^test/(.*)$', "django.views.static.serve", {"document_root":settings.STATIC_DOC_ROOT}),
16: )

Son olarak Test.css kök dizinde olduğu için onu /test içerisine taşımak, Test.html içerisinde de yolu değiştirmek gerekiyor.

<!-- Test.html -->  
<link type="text/css" rel="stylesheet" href="test/Test.css">

5 Nisan 2011 Salı

Web kamerası ile nesne takibi

Göz veya parmak hareketlerini web kamerası ile yakalayıp bunu referans alarak fareyi kontrol etmek çok zor bir geliştirme olmaz diye düşünmüştüm geçenlerde. Belkide birisi yapmıştır diye bakınırken bu videoya rastladım;


http://www.youtube.com/embed/1GhNXHCQGsM

http://www.geek.com/articles/tagged/zdeneki-kalai/

Öğrenci dediğin böyle olur yav :)