<rmcreative>

RSS

Все заметки с тегом «Facebook»

Можно уточнить:

    (1)
  1. (1)
    (1)
  1. (2)
  2. (1)
  3. (1)
    (2)
    (1)
    (3)
    (1)
    (1)
  1. Hack и HHVM

    25 марта 2014

    С последней заметки про успехи Facebook в ускорении PHP прошло какое-то время, и вот снова появился повод написать на эту тему. Facebook всё это время не только улучшал HHVM, в скором появлении возможности запускать на котором обычный PHP-код уже не сомневается практически никто, но и реализовал под него свой язык с названием Hack.

    Сам язык очень интересный. Я уверен, что у него найдутся свои адепты и что он хорошо повлияет на PHP в целом, но имеется одно большое но. Он не совместим с PHP. Если что, вернуться на PHP не получится. А это, в отличие от PHP под HHVM, который можно безболезненно заменить на обычный PHP, большой риск.

    7 комментариев
  2. Перспективы HHVM 2013

    23 декабря 2013

    Довольно много времени прошло с последнего раза как я писал про реализацию PHP в исполнении Facebook. С того времени многое поменялось.

    1. Юнит-тесты по 21 OpenSource проекту проходят на 99%. Тесты Yii проходят на 99,11%.
    2. Ещё сильнее ускорили исполнение кода.
    3. Добавили поддержку FastCGI, так что можно спокойно оттестировать свой проект под Apache или nginx.

    В планах у команды HHVM на 2014 ещё большее ускорение виртуальной машины и полная совместимость с оригинальным PHP. Настрой серьёзный. В начале месяца Josh Waltzman из команды HHVM связывался с членами php-fig, в том числе и со мной. В планах ещё много дополняющих PHP вкусняшек: строгая типизация, коллекции, быстрый статический анализ. Жаль, что поддержки Windows в планах пока нет по техническим причинам. Это прилично сократит аудиторию...

    Если в 2012 HHVM был годен только на использование внутри Facebook, то под конец 2013 перспективы его использования для своих проектов выглядят вполне реальными.

    7 комментариев
  3. Чем Facebook занимался после HipHop

    16 октября 2012

    Думаю, многие слышали про HipHop — компилятор PHP, который использовался в Facebook.

    Анонсирован он был в 2010 году. С тех пор Facebook не останавливался в своём желании ускорить разработку и выполнение кода.

    В декабре 2011 нам показали виртуальную машину для HipHop. Примерно тогда же Facebook перешёл на неё, значительно ускорив выполнение кода. Код всё ещё компилировался. Для разработки это было явно неудобно и была сделана JIT-версия, которая компилировала и выполняла код на лету. Производительность при этом, хоть и была ниже, чем у компилированного кода, но ненамного.

    В мае 2012 Facebook спонсирует двухмесячную разработку простого интерпретатора PHP на PyPy. В итоге выходит JIT-компилятор, способный переваривать большинство конутрукций и функций PHP (без классов). Код выполняется быстрее, чем в HipHop VM. И это за два месяца.

    Ближе к середине августа всплывают слухи о том, что Facebook планирует переписать HipHop VM под JVM, основанные на том, что инженеры Facebook побывали на JVM Language Summit и живо интересовались данной темой. В той же заметке приводится оценка в шесть человеколет на реализацию проекта, что не так много, учитывая ресурсы Facebook. К тому же, есть варианты купить и использовать Quercus или Project Zero.

    Каким путём пойдёт Facebook далее пока не ясно. Ясно одно: в этом направлении они останавливаться не собираются.

    7 комментариев
  4. Facebook JavaScript SDK, новые fql.query и fql.multiquery

    29 июня 2012

    Много где написано, что REST API Facebook устарел, но, я не нашёл в официальной документации JavaScript SDK, что с этим делать в случае FQL. Описанные в примерах fql.query и fql.multiquery посылают запросы как раз на устаревший restserver.php.

    Как это обычно бывает у Facebook, решение сделали по-тихому. Кому нужна документация, верно?

    fql.query:

    // старая версия
    FB.api(
      {
        method: 'fql.query',
        query: 'SELECT name FROM user WHERE uid=me()'
      },
      function(response) {
        alert('Your name is ' + response[0].name);
      }
    );
     
    // новая версия
    FB.api('/fql', {
        q: 'SELECT name FROM user WHERE uid=me()'
      },
      function(response) {
        // формат ответа отличается
        alert('Your name is ' + response.data[0].name);
      }
    );

    fql.multiquery:

    // старая версия
    FB.api(
      {
        method: 'fql.multiquery', 
        queries: {
          username: 'SELECT name FROM user WHERE uid = me()',
          userpic: 'SELECT pic_big FROM user WHERE uid = me()'
        }
      },
      function(response){
        console.log(response);
      }
    );
     
    // новая версия
    FB.api('/fql', {
        q: {
          username: 'SELECT name FROM user WHERE uid = me()',
          userpic: 'SELECT pic_big FROM user WHERE uid = me()'
        }
      },
      function(response){
        console.log(response);
      }
    );
    Комментировать
  5. Facebook FB.ui send на мобильных устройствах

    1 июня 2012

    В очередной раз Facebook заставил попотеть. После реализации приглашалок через диалоги Facebook выяснилось, что они никак не хотят работать на мобильных девайсах, выдавая загадочную API Error Code 3, Unknown method. This method isn't supported by this display type.

    Оказывается, вызывать диалоги на мобильных устройствах и планшетах через JavaScript SDK — дохлый номер. Однако, примеры с URL в описании диалогов работали, поэтому родилась вот такая штука:

    // определяем, мобильный ли браузер
    // не забудьте iPad
    if(isMobileBrowser()) {
      var params = {
        // если не используете SDK, можно просто вставить ID приложения
        app_id: FB._apiKey,
        name: header,
        link: link,
        description: description,
        // позволяет видеть ошибки, лишним не будет
        show_error: 1,
        to: userID,
        redirect_uri: window.location.href,
        // не рисовать лишнее, ресайзить попап автоматом
        display: 'popup'
    };
    // строим URL
    var url = 'http://www.facebook.com/dialog/send?';
    var parts = [];
    $.each(params, function(key, val){
      parts.push(key+'='+encodeURIComponent(val));
    });
    // открываем попап
    var facebookPopup = window.open(url+parts.join('&'),'facebook-popup','height=300,width=200');
    // ставим на него фокус
    if (window.focus) {
      facebookPopup.focus();
    }
    7 комментариев
  6. Как Facebook подменяет ссылки

    24 мая 2012

    Наткнулся на занятную особенность Facebook. А именно на то, как он работает со ссылками.

    Для проекта потребовалось реализовать систему приглашений. Схема стандартная:

    1. Генерируем уникальный хеш.
    2. Подставляем к основному URL.
    3. Посылаем через сообщение Facebook.
    4. Получивший сообщение пользователь идёт по ссылке с хешем и видит своё приглашение.

    В процессе тестирования вроде-бы простой схемы выяснилось интересное: на шаге №4 пользователь получал сообщение без хеша.

    Первое подозрение пало на параметр, передаваемый GET-ом. Сделали частью URL и… не помогло, что сильно удивило и озадачило. Через несколько дней копаний оказалось, что при отправке сообщения:

    1. Facebook идёт по ссылке в сообщении.
    2. Парсит страницу и берёт из неё тег <meta property="og:url" content="http://example.com/content/my-stuff" />. Хеша для приглашения у нас в этом URL, конечно, не было.
    3. Подменяет ссылку, которая была в сообщении, на ту, что была получена из метатега.

    Отсюда выводы:

    1. При работе с Facebook помните про особые метатеги.
    2. Никогда не меняйте состояние приложения через GET.
    7 комментариев