Разработка сайта для Вашего бизнеса. Веб дизайн. Дизайн логотипа, фирменного стиля, рекламная фотография . Комплексный рекламный креатив.

Ralex. We do the work.
На рынке с 1999го года. Средняя ценовая категория. Ориентация на эффективность решений.
Ознакомтесь с нашим портфолио
Узнайте больше о услугах
Свяжитесь с нами:
E-mail: [email protected]
Tel: (044) 587 - 84 - 78
Custom web design & дизайн и разработка сайта "под ключ"
Креативный, эффективный дизайн. Система управления сайтом (СУС).
Custom flexible разработка систем электронной коммерции
Система e-commerce разрабатывается под индивидуальные потребности. Гибкая функциональность.
Search Engine Optimzation & оптимизация под поисковые системы (SEO)
Постоянная оптимизация и мониторинг сайта в поисковых системах. Достигаем результата быстро и эффективно
Custom logo design & дизайн логотипа и фирменного стиля
Многолетний опыт. Огромное портфолио. Уникальное предложение и цена.
профессиональная рекламная фотография
креативно, смело, качественно
Custom logo design & рекламный креатив. дизайн рекламы
Многолетний опыт. Огромное портфолио. Уникальное предложение и цена.

Google Native Client

  1. Зміст статті Наше життя все більше переміщується в Мережу. Браузер став головною програмою на ПК,...
  2. Для чого можна використовувати Native Client
  3. Як це працює
  4. Пишемо Hello NaCl
  5. висновок

Зміст статті

Наша взаимовыгодная связь https://banwar.org/

Наше життя все більше переміщується в Мережу. Браузер став головною програмою на ПК, а Гугл щосили штампує ноутбуки з Chrome замість повноцінної ОС. Здавалося б, в цих умовах перспективи звичайних, не веб-орієнтованих мов програмування вкрай сумнівні. І тим не менше нас, старих добрих хардкорних програмістів на сі приплюснути, ще рано списувати на смітник історії - ми все ще отримуємо купу грошей :), тому що без нормального машинного коду до сих пір ніхто не обходиться.

Потреба в запуску нативного коду в браузері з'явилася не на порожньому місці. Як би не старалися розробники JavaScript і HTML 5 движків, продуктивність їх творінь не витримує конкуренції зі звичайним кодом на C або C ++. Якщо нам потрібно показати круту графіку або вразити оточуючих високоякісним звуком, то типовими інструментами веб-розробника подібне реалізувати важко. Саме це і стало однією з основних причин для появи технології Native Client від Google.

Що таке Native Client

Хлопці з Гугла почали свою нелегку працю над NaCl в далекому 2008 році. Завдання, які вони ставили перед собою, були складні і амбітні. Насамперед треба було забезпечити легку переносимість legacy коду в NaCl. Це була фактично першопричина всієї цієї затії. Якщо у нас є купа старого і не дуже коду на плюсах, який працював суто на десктопах, і ми раптом вирішили, що пора освоювати Інтернет, то нам не треба вчити нову мову програмування і технології, а досить лише перенести наявний код на Native Client платформу .

Але навіть якщо ми і готові переписати все з нуля на незнайомих нам мовами, не факт, що у нас вийде те, що ми очікували. Показувати якісну 2D- і 3D-графіку, використовувати багатопоточність, та й взагалі бути ближче до заліза у нас ну ніяк не вийде. Це була друга мета, яку переслідувала Google. Крім того, як я вже сказав, ніхто не відміняв відносно низьку продуктивність скриптових мов в браузері.

До всього іншого, розумні хлопці з Google подумали і про безпеку користувачів. Весь нативний код виконується в подвійній (!) Пісочниці, що дозволяє блондинкам і іншим просунутим особистостям не боятися забагованних додатків і атак злих вірусів.

Ну і на десерт у нас платформонезавісимость. Так Так! Ми можемо написати плюсовий код, і він буде працювати на Windows, OS X і навіть, не побоюся цього слова, Linux. А вишенькою на цьому десерті буде підтримка x86- і ARM-архітектури.

У 2011-му Гуглец включив підтримку NaCl в Chrome. Інші браузери, на жаль, поки не підтримали ініціативу інтернет-гіганта. Старожилам інтернету в голову мимоволі можуть прийти спогади про ActiveX, який і нині живе (в колі любителів IE), але, на відміну від технології Майкрософт, Native Client поширюється з відкритим вихідним кодом під новою ліцензією BSD. Та й над безпекою в NaCl подумали краще.

Для чого можна використовувати Native Client

На практиці Native Client можна використовувати в першу чергу для запуску іграшок в браузері. Власне, перший досвід вже є - під Google NaCl портувала Quake. Так, так, ту саму Кваку 1996 року випуску, в якій ти провів стільки років, розрубуючи жирних огрів саперною лопаткою (якщо ти не знаєш, як зарубати лопатою збройного гранатометом і бензопилою огра, напиши мені) і розриваючи на шматки зомбі з рокетлаунчера.

Виконання машинного коду в браузері відмінно допоможе розвантажити сервер. Наприклад, якщо у нас є онлайн-сервіс для конвертації відео в різні формати, то алгоритм роботи з ним повинен виглядати приблизно так: користувач завантажує відео на сервер, довго чекає, поки наш потужний CPU перелопатить файл, викидаючи в атмосферу багато калорій тепла, а потім щасливий користувач завантажує результат з нашого сервера. Але якщо ми перенесемо конвертор з сервера на клієнт, то ми відразу приберемо навантаження з нашого заліза і нехило порозчищаємо інтернет-канал, який за «помірну» плату надав нам хостер. Та й користувач буде задоволений - в середньому конвертація повинна пройти швидше, так як сотні мегабайт туди-назад по мережі не ганяються. А для користувачів з параноєю можна з гордістю заявити, що їх дорогоцінні personal data цілком обробляються тільки на їх ПК. Це, до речі, актуально і для корпоративного сектора.

Як це працює

Native Client - це загальна назва для набору різноманітних програмних компонентів, які працюють разом для забезпечення безпечного функціонування C ++ коду в інтернеті. На високому рівні NaCl складається з тулчейна (компілятора, линкера і так далі) і рантайм-бібліотек, які вбудовані в браузер і дозволяють нативному коду безпечно працювати з потрібними API.

Для переносимості додатків між різними архітектурами існує розширення Portable Native Client (PNaCl). Відмінність його полягає в тому, що при компіляції код транслюється в проміжне представлення, а вже після запуску на тій чи іншій платформі браузер переводить це уявлення в машинний код.

Для забезпечення безпеки Гугл зробив дві речі. Перша - це спеціальний набір API, з яким може працювати код, що виконується під NaCl. Нативний модуль не повинен намагатися вийти за межі дозволеного API, втручатися в роботу стороннього коду або браузера.

Другий важливий момент, що забезпечує безтурботне життя для користувачів Native Client, - це спеціальний аналізатор коду, який повинен упевнитися, що програма не намагається зробити нічого протиправного.

Другий важливий момент, що забезпечує безтурботне життя для користувачів Native Client, - це спеціальний аналізатор коду, який повинен упевнитися, що програма не намагається зробити нічого протиправного

Крім того, NaCl-модулі завжди запускаються в процесах з обмеженими правами. Ці запобіжні заходи дозволяють говорити про подвійну пісочниці для нативного коду, що працює в браузері.

C ++ код може спілкуватися з JavaScript за допомогою спеціальних повідомлень. Повідомлення пересилаються асинхронно, тобто не треба чекати, поки інша сторона отримає його.

Пишемо Hello NaCl

Тепер у нас є уявлення про Native Client, і потрібно пробувати написати що-небудь корисне ... або не дуже. Ми будемо робити Hello World, ну або Hello NaCl.

Для початку потрібно скачати і встановити Native Client SDK. Посилання на сторінку завантаження ти знайдеш в урізанні. Там же буде і інструкція по установці. Скажу лише, що обов'язково буде потрібен Python 2.7 і make.

Разом з SDK йде простий веб-сервер, який може хостити додатки на localhost. Найпростіший шлях запустити його - це виконати наступні команди:
$ Cd pepper _ $ (VERSION) / getting_started
$ Make serve
SDK може містити в собі кілька різних версій, правильну потрібно підставити замість $ (VERSION). Також можна використовувати будь-який інший веб-сервер. PNaCl включений за замовчуванням у версії хрому 31 і старше. Але потрібно стежити, щоб обрана версія SDK підтримувалася встановленою версією Chrome.

Великий і могутній Гугл любить відданих розробників і тому люб'язно надав приклад з мінімальним кодом для створення NaCl-модуля. Лежить цей код в папці pepper _ $ (VERSION) / getting_started / part1 і складається з декількох файлів. Перший - це index.html. У ньому знаходиться HTMLLayout і JS-код для взаємодії з плюсовим модулем. Якщо уважно придивитися, то можна помітити файл з розширенням nmf, а точніше, hello_tutorial.nmf. Це маніфест, який вказує на нашу HTML, NaCl-модуль і служить вмістилищем додаткових налаштувань для тонкого тюнінга.

Далі йде hello_tutorial.cc, він і є ісходником на C ++, який потім можна зібрати за допомогою Makefile. Зробити це до неподобства просто:
$ Cd pepper _ $ (VERSION) / getting_started / part1
$ make
Якщо ми використовували веб-сервер, що йде разом з SDK, то після монтажу в хромі досить вбити такий URL: http: // localhost: 5103 / part1 , І ти станеш свідком дива - текст на сторінці, зміниться з LOADING ... на SUCCESS. Вражає, чи не так?

Так як ми збиралися робити Hello NaCl, то нам доведеться трохи змінити код. Для цього заглянемо в файл index.html і знайдемо там JavaScript-функцію moduleDidLoad. До речі, зараз саме час пробігтися по всьому коду HTML-файлу і зупинитися на незрозумілих речах, благо всі вони щедро присмачені коментарями. У функції moduleDidLoad відбувається завантаження нашого NaCl-модуля hello_tutorial і висновок того самого тексту SUCCESS, який ми встигли побачити під час переходу по лінку / part1. Тепер пошлемо нативному модулю слово hello, для цього досить викликати функцію postMessage у змінної модуля. У коді це буде виглядати приблизно так:
function moduleDidLoad () {
HelloTutorialModule = document.getElementById ( 'hello_tutorial');
updateStatus ( 'SUCCESS');
// Надсилаємо повідомлення Native Client модулю
HelloTutorialModule.postMessage ( 'hello');
}
Повідомлення послали, тепер треба його отримати. Для цього треба реалізувати член-функцію HandleMessage в файлі hello_tutorial.cc. У файлі міститься TODO, яке недвозначно натякає на те, що потрібно робити. У обробнику повідомлення ми будемо відправляти браузеру відповідь за допомогою функції PostMessage, але перед цим виконаємо пару перевірок.
virtual void HandleMessage (const pp :: Var & var_message) {
if (! var_message.is_string ())
return;
std :: string message = var_message.AsString ();
pp :: Var var_reply;
if (message == "hello") {
var_reply = pp :: Var ( "hello from NaCl");
PostMessage (var_reply);
}
}
Як видно з коду, ми відразу ж перевіряємо, чи прийшла нам рядок, а не щось інше. Клас Var служить обгорткою з лічильником посилань для сирих змінних C ++. Саме об'єкти цього класу пересилаються між веб-сторінкою і нативним модулем. Далі ми перевіряємо, що нам прийшло саме hello, і відправляємо відповідь, попередньо обернувши його об'єктом класу Var.

У index.html вже є обробник повідомлень від NaCl-модуля. Він просто виведе JS alert з отриманої рядком:
function handleMessage (message_event) {
alert (message_event.data);
}
Після того як ми зробили потрібні зміни, можна збирати заново модуль і оновлювати сторінку http: // localhost: 5103 / part1 . Побачивши message box із заповітною рядком hello from NaCl, ми можемо з гордістю заявити, що освоїли нову технологію.

висновок

Гугл придумав корисну штуку. Шкода, що поки ніхто, крім «корпорації добра», не підтримав Native Client платформу. Досить висока продуктивність є перевагою в порівнянні з Java, аплети якої також можуть виконуватися в браузері, а високий рівень безпеки уделивает ActiveX від Microsoft. Будемо чекати, поки Chrome захопить світ або інші розробники браузерів впровадять в свої творіння Native Client.

Вражає, чи не так?
Категории
  • Биология
  • Математика
  • Краеведению
  • Лечебная
  • Наука
  • Физике
  • Природоведение
  • Информатика
  • Новости

  • Новости
    https://banwar.org/
    Наша взаимовыгодная связь https://banwar.org/. Запустив новый сайт, "Пари Матч" обещает своим клиентам незабываемый опыт и возможность выиграть крупные суммы.


    Наши клиенты
    Клиенты

    Быстрая связь

    Тел.: (044) 587-84-78
    E-mail: [email protected]

    Имя:
    E-mail:
    Телефон:
    Вопрос\Комментарий: