6 Ocak 2016 Çarşamba

Son

Her şey doğar, gelişir ve ölür. Bu günlüğün de helvasını yeme vakti çoktan geçmiş. Son yazıyı yayınlayalı bir yıldan fazla olmuş. 

Meğer Pardus projesi ne çok şeye hayat veriyormuş, o gömülünce pek çok şey ruhsuz bedenler, zombiler gibi boşlukta sallanır halde kalmış. Pardus denilince neyi kast ettiğimi herkesin anlamasını beklemiyorum. Anlayanlar için de fazla bir şey yazmaya gerek duymuyorum.

O günleri eğlenceli, öğretici, heyecanlı, farklı bir enerjisi ve farklı insan ilişkileri olan güzel günler olarak hatırlayacağım. 

Çok keyifliydi be... 


17 Haziran 2014 Salı

Pardus'a Göç Etmiş Kamu Kurumları

Takip edenlerin bildiği gibi Pardus projesi 2011 yılı sonunda teknolojik ve idari olarak sona erdirilmişti. Tübitak 2012 yılında yine Pardus adıyla  farklı bir proje geliştirmeye başladı. O yıllarda yeni projenin ilk idarecilerinin basına verdiği röportajlardan hatırladığım kadarıyla kamuda yaygın kullanım, ileri teknoloji gibi ilkelerden heyecanla bahsediliyor kulağa çok hoş geliyordu.

Aradan geçen yıllarda proje nereden nereye geldi hiç takip etmedim. Zaten artık gelinen noktada Pardus projesinin ne kadar kallavi bir teknoloji olduğunun/olmadığının bir önemi yok. Önemli olan kamu kurumlarının ve kamu idaresinin Linux ve özgür yazılımları tercih etme konusundaki iradesi. Maalesef  böyle bir irade göremedik. Tıpkı 2012 öncesinde olduğu gibi.

Ben yine de tarihe not düşme açısından BİMER aracılığı ile Tübitak'tan Pardus'a göç eden kurumların listesini istedim, gelen cevap aşağıda;


06.06.2014 tarih ve .... sayılı başvurunuz, BİMER sistemi üzerinden 
Kurumumuza yönlendirilmiş, Kurumumuz  tarafından incelenmiştir.

Pardus aşağıdaki Kamu Kurumlarında kullanılmaktadır:

- Milli Savunma Bakanlığı
- İSKİ
- Jandarma Genel Komutanlığı
- Gaziantep Halk Sağlığı Merkezi

Bu kurumlarda Pardus'a Göç yapmış toplam kullanıcı sayısı 
11 bin civarındadır.

Bilginize sunarız.

Zaten bu konu kamu idaresinin öncelikleri arasında zurnanın son deliği bile olmadığından kısa ve orta vadede pek umutlanmamak ve vatandaşların çocuğunun rızkından arttırıp ödediği vergilerin bir kısmının lisans anahtarları karşılığında ABD bankalarına aktarılmasını içimize sindirmek lazım.

20 Mart 2014 Perşembe

Mısır İletişim Bakanlığı Açık Kaynak Yazılım Stratejisini Benimsedi

Atef Helmy
Mısır İletişim ve Bilgi Teknolojileri Bakanı Atef Helmy bakanlığın özgür ve açık kaynaklı  yazılımları (FOSS) destekleme stratejisini benimsediğini duyurdu.

6 Ocak 2014 Pazartesi

5651'de Değişiklik Kapıda



Toz duman arasında mecliste bir çorba kanun teklifi var ve 5651 sayılı kanun için değişiklikler içeriyor. Tam metnine http://www2.tbmm.gov.tr/d24/2/2-1928.pdf adresinden ulaşabilirsiniz, ben hızlıca göz attığımda şunları gördüm;

9 Ekim 2013 Çarşamba

Fransız Jandarma Teşkilatı 37.000 Bilgisayarı Ubuntu'ya Taşıdı

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.

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