1. აპრილი
    22
    2010

    Facebook Development Platform

    გუშინ ჩატარდა f8, სადაც Facebook-მა წარადგინა რამოდენიმე ახალი პროდუქტი რომელთა საშუალებითაც შესაძლებელი ხდება ინტერნეტი კიდევ უფრო სოციალური გახდეს და ყველაფერი ერთმანეთს დაუკავშირდეს.

    კონკრეტულად კი შემდეგი პროდუქტები წარმოგვიდგინა FB-მ:

    Social Plugins

    FB-ს ძველი ვიჯეტების (კომენტარების, ფანების, ... ბლოკები) ახალი ვერსია/ვარიანტი, რომლებიც გაცილებით მარტივად მუშაობენ და კიდევ უფრო მარტივად შეიძლება მათი საიტზე ინტეგრაცია.

    ამ ვიჯეტებისგან ყველაზე მარტივად და ამავდროულად ყველაზე მნიშვნელოვანი არის Like ღილაკი, მისი გამოყენებისთვის საკმარისია გვერდზე დავამატოთ ერთი ხაზი HTML კოდი. ის ცვლის ძველ გაზიარების/Share ღილაკს, რომელთან შედარებითაც აქვს ის უპირატესობა, რომ ღილაკთანვე შეგიძლია ნახო რომელ შენს მეგობრებს მოეწონა იგივე "ობიექტი" (მუსიკა, ფილმი, სურათი, სტატია ...). როგორც მაგალითად ამ გვერდზე მარჯვნივ (თუ რათქმაუნდა ვინმემ თქვენი მეგობრებიდან დააჭირა მოწონების ღილაკს ).


    Graph API

    FB API-ის ახალი ვერსია, რომელიც ასევე ძალიან გამარტივებულია და უფრო ინტუიტიურია მისი გამოყენება. ასევე დეველოპერისთვის გაცილებით ადვილია მისი გამოყენების წესების გაგება.

    ადრე მქონდა შეხება ძველ API-სთან და ძლივს გავუგე თავი და ბოლო, მაგრამ გუშინ როცა მის ახალ ვარიანტს გადავხედე (და არა დეტალურად ჩავიკითხე) მისი იდეოლოგია და პრინციპები მაშინვე ნათელი გახდა.

    ასევე თუ ადრე აპლიკაციებს უწევდათ რაღაც პერიოდულობით მომხმარებლების პროფილების შემოწმება FB-ზე ცვლილებების სანახავად, ახლა ეს საჭირო აღარ არის, PubHubSubBub-ის საშუალებით FB თვითონვე მომენტალურად შეგატყობინებთ პროფილის ცვლილების შესახებ.


    Authentication

    3rd party აპლიკაციებისთვის გამარტივდა მომხმარებლებისგან უფლებების მიღების პროცედურა, მომხმარებელიც ნათლად (ერთიანად და არა ცალ-ცალკე როგორც ადრე იყო)ხედავს თუ რა უფლებები სჭირდება აპლიკაციას. ასევე რაც ჩვენთვის დევლოპერებისთვის არის მთავარი, გამარტივდა აპლიკაციების FB-ში ავტორიზაციის პროცესი. ისინი გადავიდნენ OAuth 2.0-ზე, რაც მის პირველ ვერსიასთან შედარებით გაცილებით მოხერხებულია.


    Open Graph Protocol

    და ზემოთ ჩამოთვლილ პროდუქტებს შორის ყველაზე მნიშვნელოვანი, რომლის საშუალებითაც FB ცდილობს მთელი ინტერნეტ ინფორმაცია დააკავშიროს ერთმანეთთან და რაც ყველაზე მთავარია ჩვენთან ... ადამიანებთან. მისი გამოყენებით ინტერნეტი კიდევ უფრო სემანტიკური ხდება, მაგალითად თუ ამ გვერდის HTML კოდს ნახავთ დასაწყისში წააწყდებით შემდეგ მეტა ინფორმაციას, რაც ყოველგვარი ახსნის გარეშე გასაგები უნდა იყოს :

    <meta property="og:site_name" content="დეველოპერის დღიურები" />

    <meta property="fb:admins" content="giolekva" />

    <meta property="og:title" content="Facebook Development Platform" />

    <meta property="og:description" content="გუშინ ჩატარდა f8, სადაც Facebook-მა წარადგინა რამოდენიმე ახალი პროდუქტი რომელთა საშუალებითაც შესაძლებელი ხდება ინტერნეტი კიდევ უფრო სოციალური გახდეს და ყველაფერი ერთმანეთს დაუკავშირდეს." />

    <meta property="og:type" content="blog" />

    <meta property="og:url" content="http://www.giolekva.com/facebook-development-platform" />

    ზოგადად ძალიან დიდი ნაბიჯი გადაიდგა ინტერნეტ (და არამარტო) სივრცეში. FB ცდილობს გახდეს ადამიანების იდენტურობის წყარო, რისი მიღწევაც გუშინ გადადგმული ნაბიჯების შედეგად სავსებით რეალურია. ბევრმა შეიძლება დაიწყოს იმაზე კამათი, რომ ირღვევა ადამიანის ანონიმურობა და მისი უფლებები, მაგრამ ჩემი აზრით ეს ასე არ არის. რეალურად ნებისმიერი ინფორმაციის მიღება ინტერნეტის გარეშეც შეიძლება, მაგრამ შეიძლება დაგვჭირდეს რამოდენიმე ქვეყანაში გადაფრენა და დიდი დრო დაგვეხარჯოს . ასე რომ თუ ამ კუთხით შევხედავთ დღევანდელ ინტერნეტ მოძრაობებს და მის განვითარებას, ყველაფერი გაცილებით მარტივადაა .

    ჩემი აზრით FB-მ Google-ს საკმაო რაოდენობით საფიქრალი გაუჩინა, Open Graph Protocol + მოწონების ღილაკის საშუალებით FB-ს შეუძლია გრაფში ჩართული მთელი ინფორმაცია საკმაოდ ჭკვიანურად დაალაგოს და ჩვენთვის საინტერესო ფორმატით შემოგვთავაზოს.

    ეს არის მოკლედ რისი დაწერაც აქ შეიძლებოდა , უფრო დაწვრილებითი ინფორმაციისთვის ზემოთ მითითებულ ბმულებს შეგიძლიათ გადახედოთ.

    პ.ს. არ დაგავიწყდეთ მოწონების/Like ღილაკზე დაჭერა, რომლის რეალიზებასაც თავისი გვერდებზე მეტა ინფორმაციის დართვითურთ მაქსიმუმ 5 წუთი დასჭირდა

  2. ნოემბერი
    4
    2009

    ჩემი Google Wave რობოტი - Mathy

    რამოდენიმე დღის წინ ინტერესის და თავისუფალი დროის გამო მომინდა გამეკეთებინა რაიმე მარტივი Google Wave რობოტი. ასე დაიბადა Mathy , რომლის იდეაც იმაში მდგომარეობს, რომ თუ თქვენ მას ჩაამატებთ wave-ში, ის ეცდება თქვენს მიერ დაწერილ ტექსტში მოძებნოს მათემატიკური გამოსახულება, რომელსაც შემდეგ გამოითვლის და პასუხსაც დაგიწერთ.

    ჯერ ზოგადად დავწერ Google Wave-ის შესახებ და როგორ შეიძლება მისი შესაძლებლობების გაფართოება რობოტებისა და გაჯეტების საშუალებით, შემდეგ კი კონკრეტულად ჩემს რობოტზე ვილაპარაკებ.

    მაშ ასე Google Wave არის ინტერნეტში ურთიერთობის ახალი საშუალება. როგორც მისი შემქმნელები ამბობენ ასეთი იქნებოდა E-Mail ახლანდელ დროში რომ შექმნილიყო. Google Wave საშუალებას გვაძლევს:

    • დაიწყოთ საუბარი ნებისმიერ Google Wave მომხმარებელთან
    • ნებისმიერ დროს საუბარში შეიძლება ჩართოთ სხვა მომხმარებელი
    • საუბრისას შეიძლება გამოიყოს ჯგუფი და ცალკე გააგრძელონ საუბარი, ისე რომ სხვები ვერ ხედავენ ამ ყველაფერს
    • როგორც კი რომელიმე მომხმარებელი დაიწყებს აკრებვას, დანარჩენები მაშინვე ხედავენ მას
    • ვეივში შეიძლება დაემატოს რობოტები და გაჯეტები, რომლებიც უფრო მოსახერხებელს და მარტივს ხდიან საუბარს
    • ინახება საუბრის მთელი ისტორია და ნებისმიერ დროს შეიძლება "გადავახვიოთ უკან" და გადავხედოთ თუ როგორ განვითარდა საუბარი

    Google Wave განსაზღვრავს რამოდენიმე ფუნდამენტალურ ტერმინს:

    • wave - არის საუბარი, რომელშიც მონაწილეობენ როგორც ადამიანები ასევე რობოტები. რომლის რედაქტირებაც ხდება რეალურ დროში და ის შეიცავს თავისი თავის ისტორიას. wave აერთიანებს ერთ ან რამოდენიმე wavelet-ს.
    • wavelet - ესეც არის საუბარი ოღონდ გამოყოფილი საწყისი საუბრიდან, ის შეიცავს შეტყობინებებს იგივე blip-ებს. wavelet განსაზღვრავს ვის აქვს მასზე წვდომა. ყველა wavelet-ის მონაწილეს (მათ შორის რობოტებსაც) აქვს სრული უფლება წაიკითხონ/შეცვლონ/წაშალონ ნებისმიერი რამ wavelet-ში.
    • blip - არის პრიმიტიული ტიპი, რომელიც წარმოადგენს შეტყობინებას. შეტყობინება შეიძლება შექმნას ნებისმიერმა wavelet-ის მონაწილემ, მათ შორის რობოტმაც.

    ეს არის ვეივის ძირითადი პრინციპები (თუ რომელიმე გამომრჩა შემახსენეთ ). ზემოთ ვახსენე რობოტები და გაჯეტები. მათ შორის არის რამოდენიმე მნიშვნელოვანი განსხვავება:

    • რობოტი ეშვება რაიმე application სერვერზე (ჯერ-ჯერობით მხოლოდ appengine-ზე შეიძლება გაეშვას), გაჯეტი კი ეშვება თვითონ ვეივის კლიენტზე (ანუ მაგალითად თქვენს ბრაუზერში)
    • ვეივში არ შეიძლება იყოს ორი ერთი და იგივე ტიპის რობოტი, გაჯეტი კი რამდენიც გვინდა იმდენი შეგვიძლია ჩავამატოტ
    • რობოტს იგივე უფლებები აქვს რაც ჩვეულებრივ ადამიანს რომელიც ჩართულია ვეივში (მათ შეუძლიათ ვეივის მოდიფიცირება), გაჯეტს კი არ შეუძლია ვეივი შეცვალოს ის მხოლოდ თავის თავს აკონტროლებს
    • რობოტს შეუძლია მოდიფიცირება გაუკეთონ გაჯეტებს, გაჯეტებმა კი რობოტების არსებობაზე არაფერი იციან

    კარგი იქნება თუ ამ ვიდეოს ნახავთ, სადაც მოხდა ვეივის პირველი პრეზენტაცია და ფართო საზოგადოებისთვის ჩვენება. აქ კარგად და დაწვრილებით არის ახსნილი ვეივის შესაძლებლობები:

    რაც შეეხება რობოტებს და -ს. რობოტს აქვს საშუალება უსმინოს სხვადასხვა ტიპის wave event-ებს და შესაბამისი რეაგირება მოახდინოს (შეცვალოს უკვე არსებული blip, შექმნას ახალი blip და ა.შ.). სტანდარტული ივენთები შეგიძლიათ ნახოთ აქ: Robot Events

    ახლა მოკლედ ჩემი რობოტი Mathy-ს შესახებ. როგორც ზემოთ ავღნიშნე ის უსმენს საუბარს ვეივში და როგორც კი აღმოაჩენს მათემატიკურ გამოსახულებას, გამოითვლის და იქვე მიუწერს შედეგს. მისი რეალიზებისთვის საჭიროა ჩვენ ვუსმინოთ blip_submitted ივენთს, ამოვიღოთ ტექსტი ბლიპიდან, მოვძებნოთ მასში მათემატიკური გამოსახულება, გამოვითვალოთ და ბლიპში შესაბამის ადგილას ჩავსვათ შედეგი.

    import re

    from waveapi import events

    from waveapi import model

    from waveapi import robot

    from waveapi.document import Range

    # regexp რომელიც ემთხვევა მათემატიკურ გამოსახულებას

    s = r'(([\d\+\-\*\/\(\)\s\%]+)(\s*=)(\d+)?)'

    def onBlipSubmitted(properties, context):

    # ვიღებთ გაგზავნი ბლიპის იდენტიფიკატორს

    blip = context.GetBlipById(properties['blipId'])

    # ბლიპის ტექსტის ამოღება

    text = blip.GetDocument().GetText()

    dif = 0

    for t in re.finditer(s, text):

    if t.group(4) is None:

    start = dif + t.end(3)

    end = start

    l = 0

    else:

    start = dif + t.start(4)

    end = dif + t.end(4)

    l = len(str(t.group(4)))

    # გამოსახულების მნიშვნელობის გამოთვლა

    res = str(eval(t.group(2)))

    if t.group(4) is not None and res == t.group(4):

    continue

    # პასუხის ჩაწერა ბლიპში

    blip.GetDocument().SetTextInRange(Range(start, end), res)

    dif += len(res) - l

    if __name__ == '__main__':

    # რობოტის პროფილის შექმნა

    myRobot = robot.Robot(

    'Mathy',

    image_url='http://pymathy.appspot.com/static/avatar.png',

    version='2.0',

    profile_url='http://pymathy.appspot.com/'

    )

    # ვუთითებთ თუ რომელი მეთოდი გამოიძახოს BLIP_SUBMITTED ივენთის დროს

    myRobot.RegisterHandler(events.BLIP_SUBMITTED, onBlipSubmitted)

    myRobot.Run()

    სამწუხაროდ დიდი დრო დამაკარგვინა -ს გაგებამ, არ არის ჯერ კარგად დოკუმენტირებული და მიწევდა ყველა ობიექტის ლოგირება, რომ გამეგო რაში შიეძლებოდა გამომეყენებინა.

    ასევე მინდა ავღნიშნო regexp r'(([\d\+\-\*\/\(\)\s\%]+)(\s*=)(\d+)?)', რომელსაც ვიყენებ ბლიპში მათემატიკური გამოსახულებების მოსაძებნად. საწმუხაროდ ის ემთხვევა არასწორ გამოსახულებებსაც, ისეთებს სადაც არ არის კორექტულად გამოყენებყლი ფრჩხილები, მაგ.: 1+2*(3+5 . ფრჩხილებიანი გამოსახულებების კორექტულობის დადგენისთვის საჭიროა რეკურსიული რეგულარული გამოსახულება რისი მხარდაჭერაც python-ს ჯერ არ აქვს სამწუხაროდ.

    Mathy-ის Google Wave მისამართი არის pymathy@appspot.com, რომელიც შეგიძლიათ ჩაიმატოთ კონტაქტებში და გამოიყენოთ საუბრისას . აქ კი შეგიძლიათ ჩაერთოთ ღია ვეივში და გამოცადოთ Mathy: Mathy Demo

  3. ოქტომბერი
    6
    2009

    PubSubHubBub

    ეხლახანს დავამატე ბლოგზე PubSubHubBub-ის მხარდაჭერა. რაც ნიშნავს რომ ვისაც გამოწერილი აქვს ჩემი ბლოგის feed GReader-ში, FriendFeed-ში ან სხვა რომელიმე საიხლეების წასაკითხ საიტზე რომელიც მხარს უჭერს ზემოთ აღნიშნულ პროტოკოლს, თითქმის მომენტალურად შეძლებს ახალი პოსტის ნახვას მისი გამოქვეყნების თანავე . თუმცა FriendFeed გაცილებით სწრაფია სხვებზე.

    განახლება: იხილეთ დემოს ვიდეო

    განახლება: ძალიან სასაცილო ახსნა თუ რა არის pubhubsubbub მისი შემქნელებისგან: