Apple, Adobe ve Web Standartları

Bildiğiniz gibi Apple’ın iPad’lerde Flash’ı desteklemeyeceğini(izin vermeyecekleri) açıklaması büyük tartışmalar yaratmıştı. Yakın zamanda Apple’ın kurucusu ve CEOsu Steve Jobs, Flash hakkındaki düşüncelerini bir açık mektupla duyurdu. Mektupta genel olarak

  • Tamamen Adobe’un malı olduğu için Açok (Open) Web standartlarına uymadığı
  • Webdeki videoların çoğu Flash arayüzlü olsa da çeşitli uygulamalarla onlara erişilebileceği
  • Flash’ın yeterince güvenli bir sistem olmadığı
  • Güç tüketiminin fazla olduğu
  • Dokunma ile sağlanan etkileşimin verimli kullanılamaması
  • Flash ile uygulama geliştirilmesinin geliştiricileri kısıtlaması, yarı standart uygulamalar üretmesi ve platformun özellikleri etkili kullanamaması

konularına değinmiş. Atrıca Flash’ın HTML5 gibi standartların gelişmesiyle pek de gerekli olmayan bir teknoloji olacağını düşünüyor.

Apple tarafından bakınca haklı oldukları noktalar olduğunu söylemek gerek. Fakat burada dikkat çekilmesi gereken daha önemli noktalar var. Flash konusunda söylediklerinde haklı olması Steve Job’un tutumunu haklı çıkartmıyor. Özellikle sattığı cihazların kullanımı konusunda kendi kullanıcılarını ne kadar kısıtladığını ve iPhone ve iPadlere uygulama geliştirmek için sadece Mac kullanabildiğimizi, Apple Store dışında yazılım yükleyemediğimizi göz önüne alırsak, Apple’ın özgürlük, açık standartlar gibi kavramlar üzerinden Adobe’u eleştirmesini biraz garip karşıladım.

Apple’ın kullanıcının kullandığı yazılımları ve platformları bu kadar kısıtlaması işin garip bir tarafı. Standart olarak flasın gelmemesi, tavsiye edilmesi fakat yine de bunun kullanıcının tercihine bırakılması çok daha etkili bir çözüm olurdu.

Özetle Adobe’ın belli konularda haksız olması Apple’ı bu konuda haklı yapmıyor bence.

Bu düşüncelerimin üzerine FSF’dan (Free Software Foundation) John Sullivan’ın yaptığı bir açıklama konuyu bence daha net bir biçimde ele alıyor.

Steve Jobs’un açık standartların ve özgür webin önemine dikkat çektikten sonra ortaya koyduğu çözümün saçma olduğunu savunuyor ve insanların Adobe’un tescilli yazılımlarıyle Apple’ın duvarlarla çevrilmiş bahçesi arasında bir seçim yapmaya zorlandığını özgürlüğün ikisiyle de alakasız olduğunu anlatmış.

Hele şükür birisi duygularımıza tercüman olmuş…

Google Chrome OS

Google’ın işletim sistemi çıkartacağına dair dedikodular çok önceden İnternet’te duyulmaya başlamıştı. Hatta söylendiğine göre daha Google buna karar vermeden böyle şeyler söyleyenler vardı. Bu söylentiler Google’a ilham kaynağı oldu. Öncelikle bir çeşit Linux dağıtımı olacağını duyduk daha sonra bir Ubuntu türevi olacağını duyduk.Herkesin kendine göre bir beklentisi gelişti. Ben de bu yazıyı Google Chrome OS’un ne olduğunu var olanlardan ne farkı olduğunu anlatmak için yazıyorum.

İngilizceyle aranız iyiyse şu videoyu izlemenizi tavsiye ediyorum. Google’ın Chrome OS’u tanıtmak için hazırladığı bir video.

Google Chrome OS’un ne olduğunu anlayabilmek için Chrome‘un en azından ne olduğunu bilmeniz gerekir. Chrome Google’ın hazırladığı webkit motorunu kullanan bir web tarayıcısıdır. Temel amacı kullanımı kolaylaştırmak, basit ve hızlı bir web deneyimi sağlamaktır.

Chrome OS ise bir işletim sistemidir. İsminde Chrome bulundurmasının sebebi kendi içerisinde Chrome tarayıcısını çalıştıran bir işletim sistemi olmasıdır. Başka bir işletim sisteminde de pekala tarayıcı çalıştırabilirsiniz fakat Google Chrome OS bilgisayar başında asıl yaptığı İnternet kullanmak olan kullanıcılar için ortaya atılmış bir işletim sistemidir. İnternet olmadan pek anlamlı olduğu söylenemez.

Beklentilerin aksine Google tarafından desteklenecek olan masaüstü bilgisayarlar için olan bir Linux dağıtımı değildir. Şu anda kaynak kodundan derlenerek bilgisayarınıza denemek amacıyla kurulabiliyor olsa da asıl amacı Apple mantığıyla belirli donanımlar üzerinde (ki bu çoğu zaman netbooklar) sorunsuz çalışmak üzere geliştirilmektedir. Klasik bir bilgisayar kullanıcısının bütün ihtiyaçlarını karşılamak amaçlanmamıştır. Tamamen hafif istemci (thinclient) mantığına göre yapılmıştır ve bütün uygulamaları web uygulamalarıdır. (E-posta, video izleme, müzik dinleme, oyun oynama, ofis uygulamaları,…) diğer yandan internette kullanabileceğiniz tüm web uygulamaları da aynı zamanda bir Chrome OS uygulamasıdır. Dolayısıyla yükleme gerektirmezler.

Proje basit şekilde çekirdeğin Chrome tarayıcısının değiştirilmiş bir versiyonunu çalıştırmak için özelleştirilmesi bunun yanında gerekli olmayacak bütün servislerin ve uygulamaların yok edilmesi ve duruma uygun kütüphanelerin, yazılımların geliştirilmesi olarak özetlenebilir. Google’ın açıklamasına göre “Televizyon mantığında açılıp kapatılarak kullanılabilen bir İnternet cihazı için öngörülen bir işletim sistemidir.”

İnternette dolaşan Türkçe haberlerde malesef haberciliğin kötü örneklerini gördük. Google’ın “Sabit disk ve RAM’e ihtiyaç duymayan işletim sistemi geliştirdiğine” dair haberler yayınlandı. Malesef bunlar meselenin bilgisiz kişiler sonucu haber yapılması tercümelerin ise eksik ve yanlış yapılması ile ilgili durumlar. Hiç RAM’e ihtiyaç duymadan şu andaki bilgisayar mimarilerinde bir işletim sisteminin çalışması mümkün değildir. Asıl söylenmek istenen “fazla” RAM ve disk alanına ihtiyaç duymayan bir işletim sistemi olduğu dolayısıyla son derece ucuz donanımlarla performans gösterebileceğidir. Dönen diskli bellekler yerine flash bellek gibi bellek üniteleri tercih edilecektir. Bu bellekler de önbellek olarak (cache) kullanılarak sistem performansını arttırmayı amaçlamaktadır. İşletim sisteminin kendisi ise salt okunur (read only) bir kısımda bulunarak herhangi zararlı bir yazılımın etkisinden korunmuş olacaktır.

Özetlemek gerekirse:

  • Google Chrome OS Chrome tarayıcısını çalıştırmak için asgari düzeyde hizmet ve yazılım koşturacak bir işletim sistemidir.
  • Verilerinizin tümü İnternet’te depolanır. Mevcut donanım üzerindeki veriler performansı arttırmak için önbelleklemede kullanılır.
  • Uygulamaların tümü web uygulamasıdır. Chrome OS ile bütün web uygulamaları da kullanılabilir. Herhangi bir uygulamanın yüklenmesi söz konusu değildir.
  • (Televizyon mantığıyla) Hızlı başlayan ve hızlı çalışan İnternet cihazları içindir.
  • Başka bir cihazda oturum açıldığında tamamen aynı arayüz ve aynı uygulamalarla karşılaşılır.
  • Kullanıcı verileri önbellekte tamamen şifrelenmiş biçimde saklanır, böylece bir başkasının veriye erişmesi engellenir.
  • Hız, basitlik ve güvenlik öğeleri üzerinde tasarlanmıştır.
  • Masaüstü (ta da dizüstü) bilgisayarınızın yanına bir internet cihazı olarak öngörülmüştür. Kullanacağınız ana işletim sistemi olarak tasarlanmamıştır.
  • Usb gibi arayüzlerden kendi bellek ünitelerinize erişmenize olanak sağlar (film izlemek, resimlere bakmak)
  • Chrome OS açık kaynak kodlu bir projedir ve açık kaynak kodlu teknolojiler kullanır.
  • Proje sonuca ulaştığında firmalarla anlaşılarak İnternet kullanımı için özelleşmiş Chrome OS cihazları çıkacaktır.

Bir arkadaşım kaynak kodundan Chrome OS’u kendi bilgisayarında derledi ve çalıştırdı. İzlenimlerini okumak isterseniz yazıya buradan ulaşa bilirsiniz.

Daya ayrıntılı bilgiye İngilizce olmak üzere şuralardan erişebilirsiniz:

  • http://en.wikipedia.org/wiki/Google_Chrome_OS
  • http://googleblog.blogspot.com/2009/07/introducing-google-chrome-os.html
  • http://www.techradar.com/news/software/operating-systems/10-things-to-know-about-google-chrome-os-614370
  • http://www.youtube.com/watch?v=5JyFbF7QFlY (Open Source Announcement)

Linux ssh ve proxy

Şu anda Hacettepe Üniversitesi’nde yurtlardan hiç birinde internet bağlantısı yok. 3 şey sayesinde sanıyorum internete erişebilen bir tek benim.

İltiraf etmek gerekirse ilki şans. Tesadüfen hacettepe.edu.tr alan adı altındaki adreslere erişebildiğimi fark ettim. Dışarıya çıkışlarda bir sorun olmalı.

İkincisi bölümümüz tarafından sağlanan ssh (Secure Shell) ile hesabımıza uzaktan etişme hakkı. Bu makine de hacettepe.edu.tr altında olduğu için buna bağlanmam da pek sorun olmadı. Eriştiğim bilgisara sadece komut satırı ara yüzüyle erişsem de komut satırı tarayıcısı sayesinde internete girmeyi deneyebildim. (Lynx ya da links deneyebilirsiniz.) Gariptir ki bağlandığım makinenin internete sorunsuz erişebildiğini farkettim. Aslında teorik olarak bir şekilde internete eriştiğinizde onu istediğiniz gibi kullanıyor olmanız gerekir. Fakat bahsettiğim tarayıcılar normal ihtiyaçları pek karşılayamıyorlar malesef.

Üçüncü etmense Linux’un daha doğrusu Linux’taki ssh yazılımının sağladığı bir olanak.

#ssh -D <portNo> <adres>

Kullandığınızda <adres> ile belirttiğiniz adresteki bilgisayara bağlanır. (kullanıcı adı belirtmek için kullaiciadi@adres seçmelisiniz.) ve bilgisayarınızın <portNo> ile belirttiğimiz portundan bir vekil sunucu (proxy server) açar.

Tarayıcınızın vekil sunucu ayarlarında adres olarak 127.0.0.1 (her zaman kendi bilgisayarınızı gösterir) port olarak seçtiğiniz portu gösterip vekil sunucunun SOCKS olduğunu belirttiğinizde bağlandığınız o bilgisayar üzerinden internete erişebiliyor olmanız gerekir.

Kabul etmek gerekirse benim için işe yaraması biraz şansla alakalı fakat bu olayın daha yaygın olarak kullanıldığı yerler de yok değil.

Normalde yerel ağlarda (özellikle kablosuz ağlarda) bilgisayarınızın yolladığı veri paketlerinin okunup okunmadığını bilmenin pek bir yolu yoktur. İletişiminizin gizliğini güvence altına alamazsınız. Bu gibi durumlarda (biraz paronayakça bir düşünce olsa da) güvendiğiniz sitelere yolladığınız bilgierin bile izleniyor olma olasılığı vardır. Hem de bahsi geçen sitelerin hiçbir kabahati olmadan…

SSH ise iki bilgisayar arasında güvenli iletişim sağlayabilmek için yaratılmıştır. SSH yoluyla iletişim kuran iki bilgisayarın iletişimi dinlense bile anlamsız şifrelenmiş verilerle karşılaşacaklardır. Bağlandığınız bilgisayarın fiziksel olarak güvenli olduğunu düşünürsek verileriniz tamamen güvende olur.

64bit linuxta 32bit kod derleme

Bu tarzda ilk blog girdim. Burayı ziyaret edecek herkesi ilgilendirir mi bilemiyorum (ziyaret eden var mı onu da bilemiyorum). Ama birilerinin işine yarayabilir umuduyla yazıyorum. Teknik konuları da yazılar yazmayı düşünüyorum.

Okuldaki bir ödev için C ve Assembly kullanarak bir proje geliştirmem gerekiyordu. Derleyici olarak nasm ve gcc kullanılacaktı. Fakat bir sorun vardı ödevin 32 bitlik bir bilgisayarda geliştirilmesi öngörülüyordu ve benim kullandığım bilgisayarda 64 bit bir kubuntu sürümü vardı(8.04 Hardy). Teorik olarak 32 bit makinede çalışacak olan bir kod 64 bitlik derleyicide derlenebiliyordu ama işler teorikte olduğu kadar kolay yürümedi.

Bir assembly yordamının C kodu içerisinden çaırılması gerkiyordu.

Nasm ile assembly kodunu derlerken “nasm elf” seçeneğini kullandım. Zaten elf seçeneği elf32parametresiyle aynı anlama geliyordu. (64 bitlik bir derleme için elf64 kullanılacağını da belirteyim.) Assembly kodunun derlendiği kısımda pek bir zorlukla karşılaşmamıştım.

C kodunu doğrudan c ile derledikten sonra nasm’ın oluşturduğu ikili kod dosyasıyla bağlamak mümkün değildi. C kodunun da 32 bite göre derlenmesi gerekiyordu. bunun için gcc’nin -m32 parametresini kullanmak gerekti. Fakat stdio kütüphanesinin 32 bit için olan bir sürümü bulunamadığı için hata alıyordum.

error: gnu/stubs-32.h: No such file or directory

kubuntu için libc6-dev-i386 paketini yüklemek sorunu halletmişti

sudo apt-get install libc6-dev-i386

bu kez gcc ile dosyaları birbirine bağlamaya çalıştığımda şuna benzer bir hata alıyordum:

/usr/bin/ld: cannot find -lgcc…

Biraz araştırdıktan sonra gccnin bendeki 4.2.4 nolu sürümüyle ilgili bir sorun olduğunu öğrendim. Gccnin daha eski bir sürümünü yüklemek gerekecekti. gcc-3.4 benim işimi gördü:

sudo apt-get install gcc-3.4

daha sonra derleme işlemlerini bu gcc sürümüyle yapmak gerekiyordu. hala gcc komutu sistemde gccnin en son sürümüne karşılık geldiğinden derlemeyi

gcc-3.4 -m32 ….

şeklinde gerçekleştirdim ve elimde çalışan bir dosya oldu. 32 bitlik bir makinada denediğimde de programın sorunsuz çalıştığını gördüm.

Derleme işlemini gerçekleştirmek için makefile kullanmanız ve makefileda derlemeyi şöyle gerçekleştirmeniz işinizi kolaylaştırabilir

compiler=gcc-3.4 -m32

$(compiler) input…..

Bu tarz blog girdileri yazmak konusunda pek deneyimli sayılmam ama dilerim birilerinin işine yarar.