Fransa’da ordunun bir kolu olan ve kamu güvenliğinden sorumlu Jandarma teşkilatı son yıllarda sahipli yazılımlardan kurtulma konusunda liderlik ediyor.
9 Ekim 2013 Çarşamba
29 Ağustos 2013 Perşembe
Tornado websocket client
Tornado'nun sunucu hizmetleri ile ilgili bir sürü örnek var ama istemci olarak hele hele WebSocket için neredeyse hiçbir örnek bulamadım internette, onun için buraya yazalım dursun, bir gün birine lazım olur.
from tornado import websocket, ioloop, gen, escape class SocketClient(): def __init__(self): self.headers = httputil.HTTPHeaders() self.headers['Content-Type'] = 'application/json' self.request = httpclient.HTTPRequest( url = "wss://some.url", validate_cert = False, client_key = "client-key.pem", client_cert = "client-cert.pem", connect_timeout = 60, request_timeout = 60) def connect(self, connCallback, msgCallback): self.request.headers = self.headers self.__msgcallback = msgCallback self.__conncallback = connCallback wssConn = websocket.WebSocketClientConnection(ioloop.IOLoop.current(), self.request) wssConn.connect_future.add_done_callback(self.__on_connResult) def __on_connResult(self, conn): if conn.exception() == None: self.__wssConn = conn.result() self.__conncallback(True) self.__read() else: print(conn.exception().args) self.__conncallback(False) def send(self, data): self.__wssConn.write_message(escape.utf8(json.dumps(data))) @gen.coroutine def __read(self): while True: msg = yield self.__wssConn.read_message() if msg is None: self.__conncallback(False) break self.__msgcallback(msg)
5 Temmuz 2013 Cuma
Yun, BeagleBoard, Rascal, Raspi, Cubieboard & pcDuino
(http://www.cooking-hacks.com/ Sitesinden çeviridir.)
Arduino Yun’un piyasaya çıkmasını beklerken sanıyorum piyasadaki yeni Linux aygıtları hakkında daha çok bilgi sahibi olmak ilginç olabilir. Yeni geliştirilenlerle birlikte pek çoğu Arduino uyumluluğu konusunda anlaşmış.
Neden?
Arduino 2005 yılında piyasaya sürüldüğünde modüler bir platform olarak standart olmuştu. Sonraki tüm yeni aygıtlar insanlara Arduino kadar kolay kullanılabilir özellikte bir platform sağlamak istedi.
Bazıları Ethernet, Wifi, HDMI ve NAND Flash ile gelebiliyor, karşılaştıracağımız her kartta özellikler değişiyor. Fakat hepsi GPIO arabirimine sahip, hatta kolay port etmek için genişletilebilir kartları var.
Her birine kısaca bakalım
28 Mayıs 2013 Salı
Websocket soyutlama mümkün mü?
Geçen yıl zaten çok az ilgilenebildiğim yazılım hobimi sadece Web geliştirme üzerine yoğunlaştırmaya karar vermiştim, önceki yıllarda Python ile masaüstü uygulamaları falan yapıyordum.
HTML5 Uygulamaları mobil cihazlarda falan her yerde çalışabiliyor, yani tek bir kod ile tarayıcı çalıştıran her türlü cihaza uygulama sunma imkanı var. Doğal kod çalıştırmanın avantajları elbette var ama bence Dünya yavaş yavaş HTML5 çevresinde dönmeye başlıyor, zamanla tarayıcılar donanım kaynaklarına ulaşabilecek API'lere kavuşacak. Bunun son örneği Google'ın başını çektiği bir organizasyonun geliştirdiği WebRTC API.
HTML5'te neler yeni diye bakınca Websocket'i gördüm, bir W3C standardı. Klasik HTTPRequest işleminin aksine istemci ve sunucu arasında kalıcı bir bağlantı kuruluyor ve bağımsız olarak karşılıklı mesaj gönderilebiliyor. Bir nevi e-posta sistemi gibi. Bu, long polling gibi zorlama yöntemlerin yerine geçecek bir teknoloji. Bağlantı ws:// adresine basit bir HTTP 1.1 çağrısı ile başlıyor, sunucu bağlantıyı kabul ederse HTTP protokolü terk ediliyor ve sabit bir bağlantı açılıyor.
HTTPRequest ile RPC çağrıları yapmaya devam ederken Websocket ile sunucudaki olaylar anlık olarak istemciye iletilebiliyor. Bu konu oldukça ilgimi çektiğinden en azından basit bir chat uygulaması yaparak pratik yapmaya karar vermiştim. Ama bir sorun vardı hiç JS bilmiyordum, çünkü en sevmediğim dildir :)
JS Sorununu CoffeeScript ile aştım, Coffee ile gerçekten okunası kodlar yazılabiliyor. Diğer sorun da arayüz yazmak, tarayıcılar arası uyumsuzluklar vs. ile uğraşmak. Bunları da Dojo Framework ile hallettim, Dojo kütüphanesi tam teşekküllü bir araç takımı sunuyor, mobil cihazlar için kütüphaneleri de var, ayrıca kodu doğal DOM nesnelerden de soyutluyor, declare, hitch gibi bazı fonksiyonları ve evented gibi sınıfları doğal JS'ten de uzaklaştırıyor, iyi yani. Tarayıcı uyumunu da dert etmiyorsun. En önemlisi iyi belgelenmiş.
Sunucu tarafında fazla zorlanmamak için zaten bildiğim Python kullanmak istedim, tabii ki Tornado Server. Basit, hızlı, belgesi bol, kütüphane olarak hemen her şey var. Tornado'yu Nginx'in arkasına aldım, çok gerekli miydi bilmiyorum açıkcası ama ileride bir şeyler yapıp deploy etmek istediğimde veya bir VPS kiralamaya kalkarsam diye Nginx'i tecrübe etmiş olayım dedim.
Dojo ve Tornado'da emekleme aşamasını geçmem bayağı zaman aldı, zira bazen 15-20 gün tek satır kod yazmadım ve her seferinde yav ne yazmıştım diyerek yeni baştan öğreniyormuşum gibi oldum. Neyse ki artık temel bazı kütüphaneler yazmaya başladım.
Sunucuda yazdığım chat/main.py uygulamasındaki nesneleri;
@rpchook class login(object): def run(self, data): ... @sockethook class chat(object): def message(self, msg): ...
İstemcide;
login = new chat.main.login() login.on("loaded", lang.hitch(this, this.loaded)) login.send(data) chat = new chat.main.chat() chat.on("message", lang.hitch(this, this.message)) chat.send(msg)
gibi kullanabilmek için bir şeyler yazdım, RPC tarafı kolaydı ama Socket konusu farklı, sunucuda her bir socket için bir loop çalışıyor, ben istemcide soyutlama yapmak istediğimden tek bir loop kullanacak bir tasarım yaptım, iyi mi kötü mü henüz bilmiyorum, kodlama bitip çalışan bir şeyler ortaya çıkarsa belli olacak.
Eli yüzü düzgün bir şey olana kadar kod yayınlamayacağım. Kod vermeyeceksen ne diye bu kadar dil döktün demeyin, sıkıntıdan öylesine yazdım, zaten hiç bağlantı falan uğraşamayacağım, hızlı hızlı yazdım geçtim, adı üstünde günlük değil mi bu?
15 Mart 2013 Cuma
Google Reader'dan Taşınma Zamanı
Google, en çok kullandığım RSS takip uygulamasını 1 Temmuz'da emekliye ayıracağını açıkladı. Daha 3 ay var ama o gün gelmeden başka bir yere taşınıp alışmak iyi olur diye düşündüm. 15 Dakikalık bir araştırma sonucu Bloglines'ı bir deneyeyim dedim.
Abonelikleri almak için https://www.google.com/takeout/#custom:reader adresine gidip zip arşivini bilgisayarınıza indiriyorsunuz, içinden çıkan subscriptions.xml dosyası OPML biçiminde, yani bloglines gibi sitelerde içeri aktarabiliyorsunuz.
26 Şubat 2013 Salı
WebRTC Değişimin başlangıcı mı?
Gerçekte
Skype, GoogleTalk, Jitsi gibi uygulamalar ve Adobe Flash uygulamaları
olmadan da web tarayıcısı üzerinden ve hiçbir eklenti kurmadan anında
görsel ve sesli iletişim kurabilmek teknik olarak mümkün. Ancak bunun
için standart bir protokol olmadığından her firma kendi teknolojilerini
geliştirmek zorunda kalıyor. Örneğin Google, Hangout uygulaması için her
bir tarayıcı ve her bir işletim sistemi için ayrı ayrı eklenti ve
uygulamalar geliştirmek durumunda. Ancak yakında tüm bu yazılımlara
gerek kalmayacak gibi görünüyor.
Google,
Mozilla ve Opera ile birlikte bu iş için WebRTC (Web Real Time
Communications) adında bir W3C standardı üzerinde 2011 yılından beri
çalışıyor. Bu sayede tek bir HTML5 uygulaması ile farklı sistemler ve
tarayıcılar üzerinden gerçek zamanlı sesli ve görsel iletişim mümkün
olacak. Gerekli kütüphaneler tarayıcılarda gömülü olacak ve standart Javascript API'leri sayesinde yönetilecek, herhangi bir cihazda kullanıcının ihtiyacı olan tek şey modern bir web
tarayıcıdan ibaret olacak.
AT&T, Mozilla ile birlikte geliştirdiği WebRTC'yi temel alan WebPhone projesi için "vision for the future of seamlessly integrated communication." diyor. İnternet bağlantısının olduğu her
yerden hiçbir ek yazılıma gerek duyulmadan platform bağımsız kesintisiz anlık veri paylaşımı imkanı A.Graham Bell’in icadını tarih kitaplarına kaldırabilir mi?
Özellikle IPv6’nın sağlayacağı avantajlar, mobil cihazların gelişimi ve VOIP desteği ile birlikte düşününce olabilir diyorum.
WebRTC Desteği Firefox ve Chrome tarayıcıların son sürümlerine ekleniyor, Firefox ile test etmek için http://mozilla.github.com/webrtc-landing/ adresindeki örneklere bakabilirsiniz.
WebRTC'de öntanımlı kodlama VP8 olmuş (başka açık kodlamalar da destekleniyor ve ileride eklenebilir), ancak Microsoft bu durumdan pek memnun olmamış olacak ki CU-RTC adını verdiği benzer bir çalışmayı bağımsız olarak yürütüyor ve WebRTC'den daha esnek ve özelleştirilebilir olduğunu iddia ediyor.
http://html5labs.interoperabilitybridges.com/cu-rtc-web/cu-rtc-web.htm
15 Ocak 2013 Salı
Windows'ta başlangıç komutlarını arkaplanda çalıştırmak
Bir Windows sistemde belirli aralıklarla sonsuz bir döngüde bir komutun çalışmasına ve bu işin sistem açılışında MSDOS penceresi olmadan arkaplanda başlamasına ihtiyacım oldu. Linux tecrübelerime dayanarak bu işin oldukça kolay olabileceğini sanmıştım ama hiç de öyle değilmiş. Bu işi yapmak için araçlar vardır mutlaka ama böyle basit bir şey için ek yazılım kullanmak... Önce CMD, START ve CALL komutlarının parametrelerine bakmaya başladım, işin içinden çıkamayınca Gogıllamaya ve deneme/yamulma yöntemine başladım... derken aşağıdaki çözüme ulaştım.
Çalıştırmak istediğim komutlar ve timeout parametresiye belirlediğim saniye cinsinden zaman aşımı süresini C:\run.bat dosyasına kaydediyorum. (Örnek işe yarar bir şey olsun diye TMP dizinini temizleyen bir komut yazayım)
:deltmp del %TMP%\* /s /q for /D %%i IN ("%TEMP%\*") do rmdir /S /Q "%%i" timeout /t 10 goto deltmp
Sonra bunu çağıracak aşağıdaki VBScript kodunu bir run.vbs dosyasına kaydedip, kullanıcının Başlangıç menüsüne yapıştırıyorum.
Set WshShell = CreateObject("WScript.Shell") WshShell.Run chr(34) & "C:\run.bat" & Chr(34), 0 Set WshShell = Nothing
5 Ocak 2013 Cumartesi
Bodhi Linux, epey eğlenceli bir eleman
Enlightenment (bundan sonra E diyeceğim) sonunda kararlı 17 sürümünü yayınladı. Yaklaşık 1.3 sürümünden bugüne kullandığım Ubuntu LTS tabanlı E dağıtımı Bodhi Linux ise 2.2.0 sürümü ile bu güncellemeyi ilk sunan dağıtımlardan birisi oldu. Bence E, hız ve hafiflik konusunda harika, Bodhi Linux ise E'yi en iyi, en güncel ve en derli toplu sunan dağıtım. Meraklısı için aşağıda bol görselli bir inceleme var;
Kaydol:
Kayıtlar (Atom)