21 Temmuz Cumartesi ´12   —   2 Yorum

OpenGraph nedir?

OpenGraph Facebook'un APIsi için oluşturduğu yeni bir API (Application Programming Interface: Uygulama geliştirme arayüzü) yapısıdır. Proje, genel bir yapıda hazırlandığı için belki standartlaşma ihtimali de var fakat şu an için sadece Facebook kullanıyor.

Neden OpenGraph?

Şu an için zaten sadece Facebook ile kullanabileceğiniz opengraph yapısı, aslında bir uygulama ortamı için özelleştirilebilir esnek bir api yapısı. Yani Facebook'un klasik RESTful API'sinde Facebook'daki bilgiye ulaşabiliyor ve yönetbiliyordunuz. Bunlar hala mevcut ama Facebook'un veri yapısı için tasarlanmış methodlar olduğu için facebook ortamındaki bir facebook uygulaması bu api kanalını kullanamıyordu. Yani Facebook veri yapısına bağımlıydı.

OpenGraph'ın çıkış noktası, internetteki herşeyi içerik olarak özetlemek. Yani adresi belli olan herşey bir içerik olarak kabul ediliyor. Bunu ise linkler ile adresliyor Facebook; mantıklı bir yaklaşım aynı zamanda. Yani her url'in bir içeriği sunduğu düşünülüyor, daha spesifik olarak bu içerikleri istediğiniz kadar parametre ile detaylandırabiliyorsunuz. Bu tanımlamaları yapaken html/xhtml içeriğinizde opengraph ön ekli parametreler kullanarak yapabiliyorsunuz. Facebook'un genel opengraph parametreleri sayfa yani içerik hakkında genel bir bilgi içeriyor.

Bunlardan birkaçı;
og:title         sayfa başlığı
og:description   sayfa tanımı
og:image         sayfayı temsil eden görsel
og:media         sayfa, bir medya sunuyorsa onun doğrudan adresi (video, ses vb)
Bu etiketleri sayfanıza eklediğinizde, biri sayfanızın adresini facebook'da paylaştığı zaman o sayfaya ait içeriği temsil edecek görsel, medya içeriği, içerik tanımı gibi detayları facebook yakalayabiliyor.



Opengraph'ın asıl esnekliğini görebileceğiniz şey, içeriğinizi gerçekten tanımlayacak özel değerleri kendi oluşturacağınız etiketlerle belirleyebilmeniz. Bu yapı aslında sadece facebook için değil genel bir web yaklaşımı için tasarlanmış bir şey. Yani google da opengraph etiketlerini tarayarak sayfanız hakkında özel bir indeks oluşturabilir.

Örnegin bir araba modelinin detay sayfasını tanımlarken, sadece sayfa başlığı, açıklaması veya arabanın görseli o sayfadaki içerik hakkında yeterli bilgi vermeyebilir. Özel olarak arabanın üretim yılı, markası, yolcu kapasitesi, rengi gibi değerleri de belirleyebilirsiniz.

OpenGraph'ın çıkış amacı, Facebook kullanıcılarının aktivitelerini daha detaylı ve özel bir şekilde göstermek istemesi. Facebook ilk "like" butonunu genelleştirdi ve şu anda web'de bir çok sayfada like butonunu kullanıyor herkes. Eğer bir sayfayı beğenirseniz kullanıcı profilinizde "Mehmet, XYZ sayfasını beğendi" şeklinde görünüyor. Ama OpenGraph ile hedeflenen şey, bu kullanıcı aktivitelerini uygulama geliştiricilerine iyi bir yapı ile sunmak. Şu an bir uygulamayı kullandığınızda o uygulama, uygulama içinde yaptığınız aktiviteyi daha detaylı şekilde "Mehmet Ortakoy'de fotoğraf çekti" veya "Mehmet BMW M3 ve 4 diğer araba modeliyle test sürüşü yaptı" gibi çok daha detaylı bir kullanıcı aktivitesi yayınlayabiliyorsunuz.



Bunun için Facebook geliştirici arayüzlerinde önce OpenGraph nesnenizi tanımlamanız gerekiyor. OpenGraph'da her nesne bir web adresi demek ve bu web adreslerini o içeriği sağlayan sayfalar olarak düşünün. Bir diğer parça da "aktivite" tanımı. Yukarıdaki araba örneğinde, "araba" bir nesne, ve sayfamız bir araba detay sayfası, kullanıcı aktivitesi de "test sürüşü yapmak". OpenGraph ile aktivite, nesne tanımı yapıp kullanıcı aktivitesi yayınlamakla ilgili başka bir yazı hazırlayacağım fakat burada açıklayabilmek için daha detaylı bir örnek vermem gerekiyordu.

Neden Facebook uygulamanızı OpenGraph'a geçirmelisiniz?

Şu an halihazırda bir Facebook uygulamanız var olabilir. Uygulamada yapılan aktiviteye ilgili bir içeriği veya aktiviteyi kullanıcının profilinde paylaşıyor olabilirsiniz. Muhtemelen paylaşımda bulunduğunuz içerik genel bir durum güncellemesi gibi görünüyor, genel bir link ile başlık, açıklama ve görsel içeriyor.

Facebook kullanıcı adına paylaştığınız bu içerikleri kısa, uzun, gruplanmış veya topluluğu özetleyecek şekilde şekillendiremez çünkü her girdiyi gruplayacak veya birbiriyle ilişkisini ortaya koyacak bir bağ yok. OpenGraph burada devreye giriyor ve Facebook, nesneler, aktiviteler veya aynı aktiviteyi yapan birden fazla arkadaşınızı tek haber olarak gösterebiliyor.

Yukarıdaki örneği devam ettirsem, benim dışımda 2 arkadaşınız daha "test sürüsü" yapmışsa facebook benim aktivitemi ve değer 2 arkadaşınızın aktivitesini size "Mehmet ve 2 arkadaşınız daha test sürüsü yaptı" olarak gösterebiliyor. Hatta eğer aktiviteniz anlık değil zaman alan bir aktivite ise bunu daha önceden tanımlanmış olan bir OpenGraph özelliği olan eylem uzunluğu ile belirtebiliyorsunuz. Örnegin Facebook, şu an halen devam eden ve aynı nesneyi (yani içeriği) kullanarak aynı eylemde buluan arkadaşlarınızı tek hikayede gösterebiliyor "Mehmet ve Betül şu an Indiana Jones izliyor" (eylem: izlemek, icerik/nesne: Indiana Jones). Gurplama, sadece birden fazla arkadaşınızın aynı eylemı yapması şeklinde olmak zorunda değil. Bir arkadaşınızın aynı türde eylemi farklı nesneler (içerikler) ile yapması da düşünülebilir. Bir önceki ekran görüntüsündeki gruplanmış hikaye, benim Songza uygulamasını kullanarak Johannes Brahms playlistini dinlememi gösteriyor. Fakat songza bu haberi bu şekilde kendisi gruplamıyor. Songza'da her dinlediğim şarkı için Songza OpenGraph ile hangi şarkıyı dinlediğimi facebook'a gönderiyor. Bu içerikler aynı türde içerikler olduğu için bu şekilde tek hikaye olarak görünmeye başlıyor. Bu içerikleri tek seferde dinlemiş olmak zorunda da değilim. Gerekli gruplamayı facebook yapıyor. Biz sadece içeriklerin türleri, birbirleri ile ilişkilerini bildiriyoruz facebook'a. Ekran görüntüsünde görebileceğiniz gibi bu playlist'i tek seferde dinlememe göre değil aynı zamanda bir tarih aralığındaki (ekran görüntüsündeki hikayenin alt kısmında Jul 10 - July 16 şeklinde 6 günlük bir zaman dilimi için) benzer aktivitemi gruplayarak göstreiyor Facebook.

Yukarıdaki faydalar Facebook ortamı için olan faydalar olarak görünebilir fakat, bu hikayelerin göründükleri yerler farkettiğinizden çok daha fazla. Normalde klasik paylaşımda bulunan uygulamanız, kullanıcının profilinde bir içerik paylaştığında o hikaye sadece o kullanıcının profilinde ve o kullanıcının arkadaşlarının ana haber akışında görünüyor. Çoğu zaman ana haber akışı sayfasında (news feed) görünemiyor çünkü yorum yapılan, otomatik olmayan gönderilmiş güncellemeler sizin hikayenizi önem sırasında gerilere itiyor ve çoğu zaman görünmez hale getiriyor.

Eğer OpenGraph'de bir hikaye yayınlarsanız hikayeniz, kullanıcı profilinde gruplanıyor, eğer 5 hikayeden fazla gönderim yapmışsanız bir kutu ile uygulama adınız ve kullanıcı aktivitesi görünümü değiştirilebilir bir şekilde kullanıcı profilinde görüntüleniyor.



Yukarıda, foursquare'de son 1 ayda kazandığım rozetleri gruplanmış bir şekilde görebiliyoruz. Bu gruplamayı yine facebook yapıyor. Facebook'un geliştirici panelinde, uygulama ayarlarında OpenGraph sekmesinde bu kutuları yani gruplanacak içerik/hikaye türlerini, gruplandıkları zaman ne şekilde gösterileceğini detaylı bir şekilde ayarlayabiliyorsunuz.

Bunun dışında facebook'a bildirilen her hikaye ayrı bir şekilde anlık olarak facebook anasayfasında (news feed) sağ tarafta olan "Ticker" alanında anlık olarak görünüyor ve arkadaşınız haber akışını okuyor olmak durumunda da değil. Bunun dışında eğer birden fazla arkadaşınız aynı aktiviteyi yapıyorsa o hikaye daha üst önem sıralarına çıkıyor. Yani içeriğiniz veya aksiyonunuz birden fazla kişinin yapmasıyla daha önemli hale geliyor.


OpenGraph'ın hikayelere tıklanarak içeriklere (yani sayfanıza) ziyareti arttırdığı bir gerçek. Bu konuda TechCrunch'da veya diğer teknoloji bloglarında spotify'ın ve pinterest'in OpenGraph ile ziyaret ve etkileşim oranlarını katladığını okuyabilirsiniz. Bu iki örnek şu an iki OpenGraph başarı hikayesi olarak verilebilir.


Hazırlayan: Mehmet Fatih YILDIZ
g+

Google plus buyuk bir sisirme ile release oldu herkes hesap aldi hicbir hareket olmadi, tam da bir google social network faili dememize ramak kalmisti ki hizli bir sekilde oyunlar sonra da marka sayfalarini acti, dolayisiyla oyun sirketleri oyunlarini google plus'a tasimaya, sirketler de markalari icin sayfalar uretmeye basladi.

Acikcasi birkac kere bilindik techcrunch, mashable ve birkac apple fan sitesinin accounlarini takip etme girisimim oldu ama hicbir zaman twitter veya facebook feedim gibi takip eder olmadim google plusu, hatta notificationlari cok dogru yerlestirmis olsalar dahi hic ilgimi cekmedi kosedeki 3-5 rakami google plus barindaki.

Sonuc olarak googel plus icin tek cikis yolu senaryom var ve bundan cok buyuk oranda eminim ki google bu konuda sadece dogru zamani bekliyor herkese sunmak icin. Bu yol da tabi ki gelistiricilere bir uygulama altyapisi sunmak, bakin facebook her gun oyuncak gibi apisini, app policy'lerini degistirip duruyorlar, kimse de gikini cikaramiyor buna ragmen her sitede like, comment butonlari, connect ile 1-click signup'lar goruyoruz. Nedeni ise uygulamalar icin bas agrisiz bir kullanici deneyimi sunmalarini saglayacak cok guzel bir arac sunuyorlar.

Google plus boyle bir altyapiyi sunsa facebook'dan cok cok cok daha guclu olacagina inaniyorum, cunku evet facebook veri sunuyor fakat veriyi sunma, gosterme vs konusunda bir arac degil, sadece veri kaynagi, su an populer cunku elindeki veri cok guvenilir yuksek oranda dogru ve tekil (fake accountlarin orani o kadar cok da degil)

Google'in harita, docs, takvim hatta gmail'e bile izinli erisim saglamasi akilalmaz uygulamalar gelisebilecegini gosteriyor bana. Ha insanlar bir parca yapiyor bunu zaten. Tabi senaryo bu kadar kolay ve parlak degil. Google nasil yapacagini bir sekilde cozmeli ve elindeki kisisel veriyi dogaltmanin yolunu bulmali. Kimse google'daki profillerini doldurmaya yeltenmiyor, dogru bilgi sunmaya calismiyor.
Eger google bu altyapi ile dogru bilgileri sunabilir hale gelirse facebook'a zor zamanlar yasatabilir tabi facebook'un sadece izleyici oldugunu varsayiyorum bu senaryoda :-)

Ne kadar cenemizi yorsak da popcorn'umuzu hazirlayip izlemek disinda yapabilecegimiz birsey yok.



Gectigimiz yil tumblr aktivitesi 1 milyar yaziya ulasmisti, simdi 1 yil icinde 10 katina ulasmis. Sasirtici degil aslinda, cunku mikrobloglarin populerligi gittikce artiyor, herkes uzun uzun seyler yazmaya degil gereksiz ve daha kisa yayilabilir seyler uretmeyi seviyor. Herseyin bu kadar hizli tuketildigi bir ortamda daha hizli tuketilecek seyler ureten kaynaklari daha cok seviyor insanlar, twitter, facebook (status update'ler) ve benzeri servisler bunu sagliyor.

Ancak tumblr'i bu kadar basit bir keseye koymuyorum, arayuzu ve kullanilabilirligi ve sifirdan bir blogsa sahip olup icerik uretmeye baslamanin bu kadar kolay olmasindan dolayi bu servisi basit gormuyorum, tam tersi basitligi saglamadaki sofistikeligi en dogru uygulayan startuplardan birisi oldugunu dusunuyorum. Ofislerinin bizim ofise yakin oldugunu hatirladikca gidip kapilarini calip tanismak istiyorum aslinda ekibiyle.

Neyse, hem bir startup olarak hem de sosyal bir ag olarak bu kadar istikrarli ve hizli gelismlerini kullanicilarin gozunde love mark olabilmis olmasina veriyorum. Hakediyorlar da...

Kaynaktan aldigim yazidaki tumblr'a iliskin istatistikleri hizlica siraliyorum. Tumblr 1 yilda sayfa goruntulemesini 1,5 milyardan 13 milyara cikarmis, su anda 28 milyon blog ustunde gunde 36 milyon yazi yaziliyormus.

Kaynak: http://goo.gl/Qw7QU
20 Ocak Perşembe ´11   —   3 Yorum
Son 5 yil icinde sosyal networkler fcok hizli bir sekilde populerlesti, hatta facebook deve donusup google gibi bir lideri sallayacak konuma geldi. Bu detaylari yazmama gerek yok piyasada bunlari takip ettiginiz milyon tane blog var zaten. Ben isin web gelistiricileri tarafindaki gidisatini sizlerle paylasmak istiyorum.

Bu sosyallesen ve web 2.0 kavraminin gercekten oturdugunu hissetmemizi saglayan tek sey sitelerin yani web uygulamalarinin birbirleri ile cok guzel haberlesmeye baslamalaridir. Bunu bu kadar iyi anlamamizi saglayan orneklerden biri yine aslinda facebook. Tabi ki google veya yahoo servislerinde de bircok yontemle haberlesiyorduk fakat ortak bir dil/standart yoktu. Simdi ise her yer API doldu. Yani uygulamalar artik aralarinda en azindan bazi standartlara uyarak haberlesmeye basladilar. Bunun en buyuk ornegi oauth apileridir. Su an elinizi nereye atsaniz yakalayacaginiz sitelerin cogunun apisi var. Aslinda bu gelismeye cok olumlu bakiyorum ben. Cunku artik sitelerin verilerini kendilerine saklama gibi bir tavri yok.

Cok basit bir ornek vermem gerekirse, yillardir kullandigim delicious servisi yahoo tarafindan alindiktan sonra servisin yayin hayatini sonlandiracagi yazildi her yerde. Bir parca gercek de olabilir, onemli degil, olagan seyler bunlar. Ancak kullanici olarak ben yillarca tagledigim bookmarklarimi kaybetme tehlikesi sezdim. Bu gelisme bundan 10 sene once olsa oturup giden bookmarklarima dua etmekten baska secenegim olmazdi. Ya da tek tek oturup bookmarklarimi kopyalamaya calisirdim. Ama butun icerigi koruyacagim tartisma konusu olurdu.

Simdi ise, aninda birileri bir arac gelistirip, kullaniciya api erisim izni sorarak sizin bookmarklarinizi evernote veya baska formatlarda okunabilecek sekilde export etmenizi saglayabiliyor veya boyle bir araca gerek duymadan bir uygulama gelistiricisi olarak siz de apiye kendi uygulamanizla baglanip istediginiz sekilde verinizi kullanabilirsiniz.

Tehlike ve avantaj

Bu isin tek tehlikeli olmaya basladigi bir konu var, o da internette her yer kopya iceriklerle dolmaya baslamasi. Bunun rahatsiz edici yanini orneklemem gerekirse, her gun takip ettigim yuzlerce twitter hesabinin binlerce tweetini cok hizli sekilde okumam gerekiyor ve okudugum icerigin yarisindan fazlasi otomatik uretilen veya kopya icerik. Eger icerigi kaliteli ise bunun kotu bir yani yok. Yani mesela mashable'da post edilen bir haberi tweet'den okuyarak ulasiyorsam problem degil ama insanlarin foursquare check-inlerini gormek beni rahatsiz ediyor. Eger bu sayi okudugunuz 10 tweetin 1-2 tanesini kapsiyorsa dayanilmaz olabiliyor. Bu acidan dusunuldugunde api kullanimi her yere uymuyor. Yani bunu gereksiz kullanacak insanlar her zaman oluyor.

Fakat bunun cok guzel bir yani var, mesela cok spesifik bir konuda bir web sayfasi yapiyorsunuz ve bu sayfanin icinde twitter'da konusulan tweetleri hashtage gore sayfanizda gostermek istiyorsunuz. Cunku kullanicinin bu akisi o sayfada gormesi oldukca anlamli veya degerli olabiliyor. Insanlarin aliskin oldugu servisleri uygulamaniza entegre ederseniz sadece uygulamanizin kullanilabilirligini kolaylastirmis olmuyor ayni zamanda hazir olan icerige de ulasabiliyor oluyorsunuz. Yani konu sadece yeni icerigin dis kaynaklarda toplanmasi degil. Hatta o, isin onemsiz kismi. Mesela arkadaslik uzerine kurulu bir uygulama yapiniz var ise insanlarin facebook hesaplarina ve arkadas listesine api araciligiyla erisip kullanicinin karsisina cikarmaniz hem kullanicinin saniyeler icinde, bazen 1-2 click ile sizin ana fonksiyonunuza erismesini saglayabiliyorsunuz.

mfyz.com?

Artik neredeyse hic yazi yazmadigim mfyz.com hakkinda tabi ki planlarim var. mfyz.com'um su an gezdiginiz (v0.7) surumunu kodlarken sadece flickr apisini kullanarak tum galeri bolumunu flickra devretmistim. Bu konuda cok rahatim. Hem cok daha az kod yaziyor hem de bu bolumun yonetimi icin zaten surekli kullaniyor oldugum flickr hesabima masaustu araclarimi kullanarak cok hizli fotograf yukleyebiliyorum. Sitede gorunmesi icin o fotografa mfyz.com etiketi eklemem yetiyor. Sanirim bu ornek isin kolayligini ve avantajini iyi ornekliyor.

Ne zaman olacagini bilmiyorum ama bir sure sonra codeigniter kullanarak, test edilebilir bir kod ile, bircok dis kayanak kullanilmis bir mfyz.com hazirlamayi planliyorum. Ornek veriyorum butun yorum ve forum cevaplarini disqus ile yonetmeyi, butun resimleri yine flickr ile, dokuman iceriklerini belki bir wiki motoru ile, kullanici yonetimini codeigniter'in bir kullanici yonetimi kutuphanesi ile ya da tamamen facebook connect ve twitter oauth ile, belki arayuzdeki bazi kisimlari jquery pluginleri ile sunacagim.

Eskiden bu tarz servisleri esnek kullanabilme sansiniz yoktu. Kim ne kod verirse onu kullanmak zorunda idiniz. Ancak wordpress, thumblr gibi servisler arayuz konusunda bir motor ustunde herseyin yapilabilecegini herkese ispatladiktan sonra isler degisti. Zaten bu isin kolay kismi. Eger biraz daha zaman harcayip apileri kullanarak kendi arayuzlerinizi cizmeyi tercih ederseniz zaten bu noktada ozgun bir is cikarmamak icin tek engel kendiniz kaliyorsunuz.

Popüler Etiketler

twitter bootstrap kurulum nasıl network social facebook javascript js windows db database service free api php css3 browsers support framework less css imza html signature apple mail ruffles wanda oyun meta portfolio iphone ipad phpstorm jetbrains mysql pgsql sql mssql ide editor subversion svn tebrik kitap ui design development ios mobile workspace google media coding opengraph graph share html5 form input export tool macosx app iOS login session optimizasyon analyse procedure gimp örnek kod konsol terminal date diff query injection cache seo search optimization jquery widget htaccess apache mootools blog regex web app open source connect howto statistics istatistik insanlar url code rss lifestream dokuman chart grafik linux fstab ntfs radio style sitemap applications firefox download kontrol yapıları if while itunes banner doritos tytz ipucu app store store in-app purchase purchase verification integration storekit itunes connect server digital route router mod_rewrite auth http pharma hack wordpress ux icons sosyal medya ie internet explorer cookie xmlhttprequest ajax browser xml nedir plugin box switch screen zaman internet button mdb2 pear ubuntu mfyz webkit music osx deployment version control git select compile compiler on-the-fly wireless language laptop notebook icon ikon xhtml spam subdomain player license lisans fql proje kampanya cms object tarih job developer ingilizce table parse www redirect crossdomain generator newsletter subscription calendar logo assets link startups textarea prepare execute