Начальная

Windows Commander

Far
WinNavigator
Frigate
Norton Commander
WinNC
Dos Navigator
Servant Salamander
Turbo Browser

Winamp, Skins, Plugins
Необходимые Утилиты
Текстовые редакторы
Юмор

File managers and best utilites

Как создать свой собственный веб-браузер всего за 5 минут. Создание браузера


Браузер != Браузерный движок / Хабр

Всем привет!

В данной статье я хочу поделиться мыслями на счёт создания собственного браузерного движка. Мы рассмотрим текущие браузеры и браузерные движки. Вспомним про Modest и узнаем его нелёгкую судьбу.

Это будет цикл статей в которых мы создадим свой собственный минималистичный браузерный движок. Каждая статья будет подкреплена реальным кодом и примерами. По прошествии десяти статей у нас с вами будет минимальная рабочая версия браузерного движка, сильно минимальная. После этого, если запал не уйдёт и будет интерес сообщества, продолжим, и в итоге доберёмся до JS.

И конечно, первым делом необходимо понять, что такое браузер и браузерный движок.

Браузер и браузерный движок

Существующий мир сложно представить без браузеров. Они есть на многих устройствах: компьютеры, лэптопы, телефоны, игровые приставки. Если представить браузер в виде машины то браузерный движок это всё то, что скрыто под капотом вашего автомобиля. Браузеры как и автомобили могут отличаться внешним видом и содержимым под капотом. Цвет, кнопочки на панели, аудиосистема. У кого-то под капотом двигатель V8, а у кого-то там масло течёт.

Браузер объединяет периферию и предоставляет функционал позволяющий манипулировать движком, его поведением, предоставляет дополнительные сервисы. Браузерный движок выполняет всю "грязную" работу: загрузка, обработка, отрисовка данных и все возможные расчёты.

Всё как в автомобилях. Есть салон в котором присутствует педаль газа, тормоза и множество переключателей полезных и понятных пользователю. А есть большая механическая часть скрытая от пользователя под капотом.

Кто создает браузеры и движки

Разработкой собственного браузера занимается множество компаний: Google, Mozilla, Apple, Microsoft, Opera Software, Яндекс, Ростелеком, Vivaldi Technologies, много их…

Каждый добавляет какие-то свои "фишки", сервисы в создаваемый браузер. К примеру, Яндекс интегрирует свои сервисы, поиск.

С браузерными движками дела обстоят кардинально иначе. Вот список движков, их разработчиков и обладателей:

  • Blink: Google
  • Gecko: Mozilla
  • WebKit: Apple
  • EdgeHTML: Microsoft

Это основные обладатели и разработчики движков. В разработке им помогают сторонние компании на определенных условиях.

Например, рассмотрим самый популярный проект от компании Google — Chromium. Данный проект содержит в себе движок Blink. Создавать данный проект Google помогают такие компании как Intel, Facebook, IBM, LG Electronics, NVIDIA, Yandex. Полный список можно посмотреть тут. Условия на которых компании помогают создавать Blink/Chromium описаны в разделе Legal stuff на сайте проекта Chromium. Если кратко, то всё что вы создаёте принадлежит (не эксклюзивно) Google.

Браузеры компаний Opera, Яндекс, Ростелеком и другие используют именно этот браузерный движок. Если быть до конца откровенным то заявления вроде "у нас есть свой браузер" не совсем правда. Собственные сервисы — да, а вот всё остальное принадлежит другой компании(ям). И эта другая компания предоставляет свой браузерный движок на определенных условиях.

Лицензии браузерных движков

Любой открытый код содержит в себе лицензию с описанием условий по использованию данного кода, и браузерные движки не исключение.

Если сразу и кратко: лицензии сносные, прям вот из ряда вон ничего нет. Кроме EdgeHTML который закрыт. Легально утащить к себе какой-то проект и закрыто разрабатывать/изменять видимо не выйдет. Лицензии призывают к взаимной открытости.

Blink

Открытый исходный код, ответвление движка WebKit. Как и в WebKit заявлено четыре лицензии:

Самый популярный браузерный движок. Он входит в состав проекта Chromium. Именно на основе Chromium создают собственные браузеры.

Если верить файлу LICENSE проекта Chromium его основная лицензия 3-Clause BSD. Но у проекта есть директория third_party (третьи лица, третья сторона) содержащая множество стороннего кода от которого проект зависит. Иначе говоря, без этого кода собрать браузер не выйдет. У каждого компонента свои лицензии отличные от того что указано в LICENSE проекта:

Gecko

Открытый исходный код. Заявлена одна лицензия:

Активно развивается компаний Mozilla и используется в собственном браузере компании — Firefox. Так же используется в браузере Tor Browser обеспечивающий анонимное пребывание в сети.

Как основа для производителей браузеров большой популярности не имеет.

WebKit

Открытый исходный код. Заявлено четыре лицензии:

Развивается компанией Apple и используется в собственном браузере компании — Safari. Ранее многие компании использовали в своих разработках WebKit, но после покинули проект и переключились на Blink от Google.

EdgeHTML

Закрытый исходный код. Проприетарная лицензия.

Движок используется для браузера компании Microsoft под названием Edge, который пришёл на смену Internet Explorer. Это их новый движок. Предыдущий Trident (MSHTML) компания прекратила развивать.

Риски

Использование стороннего движка порождает очевидные риски:

  1. Закрытие исходного кода
  2. Выход ключевых компаний из разработки
  3. Смена лицензий на код

Никто не может гарантировать, что исходный код свободного браузерного движка не будет закрыт для публичного доступа. Так же возможен выход ключевых компаний из разработки свободного движка, что фактически является его закрытием.

Компании развивающие собственные браузеры должны понимать, что всё будет "хорошо" пока они не составляют угрозу/конкуренцию разработчикам оригинального браузера/браузерного движка. Думаю это очевидно. Компания тратит на разработку движка свои ресурсы, но вдруг появляется другая компания которая используя их движок захватывает рынок. Реакция, думаю, очевидна — смотрим список рисков выше.

«Мы создадим копию движка на текущий момент и продолжим развивать сами» — именно так отвечают производители браузеров на сторонних движках. Большое заблуждение, не выйдет просто так продолжить разработку чужого движка. То есть, взять программистов и поставить им задачу — пишите браузерный движок. Написание браузерного движка сложный технологический процесс. Подтверждением этого служит список их обладателей.

Для примера, компания Microsoft создает свой движок, хоть и закрытый. Google вместе с Apple разрабатывали WebKit, но позже Google сделал форк и начал развитие собственного движка Blink.

При этом нужно понимать, что браузерный движок постоянно развивается. Постоянно обновляются спецификации, добавляются новые возможности, улучшаются текущие. Это живая работа. Если взять какой-либо движок на текущую дату и просто использовать его для своего браузера то, примерно, через год-два браузер на этом движке морально устареет.

Адаптация движков

Существует проблема адаптации стороннего движка под нужды собственного браузера. На адаптацию тратится не мало ресурсов. При этом нужно понимать, что браузерные движки часто обновляются, что создает систематические проблемы при интеграции в собственный браузер.

Собственный движок

Прежде всего стоит ответить на главный вопрос — зачем создавать свой браузерный движок? А точнее, кому не надо создавать свой движок?

Свой браузерный движок не стоит создавать если:

  • Нет задачи/стремления захватить рынок.
  • Браузер нужен лишь номинально. Сейчас это модно, делают даже школьники.
  • Создаваемый движок не будет отличаться от существующих: скорость, надёжность, адаптивность.
  • Идёт освоение бюджета.

На текущий момент нет сложности создать собственный браузер на стороннем движке. Их наплодилось не мало и как-то выделиться среди всей этой массы можно только созданием браузера на исключительно своих компонентах, на собственном движке.

Стоит ли заниматься разработкой движка для "заработка", для создания стартапа?

Данный вопрос скорее к сфере его применения. Мне видится несколько направлений:

  1. Собственно, создание полноценного браузера. Сотрудничество с поисковыми системами, различными сервисами. Создание особых версий для государственных структур.
  2. Рынок IoT (интернет-вещей), а так же адаптация для телевизоров, приставок, портативных устройств.
  3. Сервисы на отдельных компонентах браузера. Например, умный анализ контента сайта на риски: запрещенные комментарии, посты от пользователей и так далее. Технический анализ сайтов.
  4. Продажа движка. Самое простое, написать под компанию.

Кроме того, престиж компании разработчика браузерного движка значительно выше чем у клонов. Именно как технологической компании. Это сказывается на популярности компании и привлекательности для существующих и будущих сотрудников. Но это уже скорее о честолюбии, встать в одном списке с такими компаниями как Google, Mozilla, Microsoft.

Заключение

Без сомнения, создание браузерного движка процесс сложный и требующий значительных ресурсов. Подходить к этой разработки необходимо крайне серьёзно и с чётким планом по развитию. Кроме того, это не тот продукт прибыль от которого можно получать на промежуточном этапе разработки. Да, отдельные компоненты можно адаптировать под нужды компаний, но я уверен, что такой подход только отнимет время и значительно затянет разработку.

Развитие браузерного движка сильно зависит от метода его разработки. Каким он будет: открытым, закрытым?

Я уверен, что если компания занимается развитием браузера на основе стороннего браузерного движка то ей следует серьёзно подумать над перспективой создания собственного.

Компании далёкой от браузеров заняться разработкой браузерного движка тоже можно, и не только для того чтобы создать браузер. Если итоговый продукт будет полноценным браузерным движком превосходящим существующие то он будет востребован. Сферы применения были описаны выше.

Цикл статей

  1. Браузер != Браузерный движок
  2. Браузерный движок. Архитектура, работа с памятью.
  3. HTML парсер. Токенизация, обработка токенов, построение дерева. Пишем свой парсер. Из каких стадий состоит разбор HTML, в чём сложность и как разогнать HTML парсер в несколько раз.
  4. Кодировки в HTML. Как определяются, как конвертируются. Напишем свой кодировщик и обсудим положение дел.
  5. CSS парсер и CSS модули. Токенизация, обработка токенов. Создадим свой CSS парсер. Разберём основные аспекты обработки CSS. Выясним в чём сложность, на что тратятся ресурсы и как написать самый быстрый парсер CSS/модулей.
  6. CSS парсер. Grammar. Пишем собственный Grammar для CSS модулей формирующий быстрый, человеко-читаемый код.
  7. CSS Selectors. Как устроены, быстрый поиск HTML элементов по селекторам.
  8. Layout. Скрещиваем HTML и CSS. Назначаем CSS свойства HTML элементам. Разберём порядок назначения, приоритеты и что делать если CSS постоянно изменяется.
  9. Layout. Потоки. Поддержка CSS свойства display: block.
  10. Шрифты. Как расчитывать размер символов, строк. Напишем свой парсер шрифтов. Узнаем, что такое baseline, descender, x-height, как хранятся символы и углубимся в тему расчётов размера символов.
  11. Layout. Поддержка CSS свойства display: inline.

Судьба Modest

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

К сожалению, проект Modest пришлось завершить. Какое-то время проект развивался в компании, в которой я раньше работал. Мне пришлось покинуть компанию. Появились разногласия которые не позволили продолжить разработку проекта. Обычный рабочий процесс, такое бывает.

Не смотря на то, что у меня есть все права на Modest, на код никто не претендует (подписаны бумаги), я решил его "закопать". Чтобы ни у кого не возникало ложных ощущений. Тут надо понимать, что закапывается и весь основной код который развивался вне компании (mycore, myhtml). Но, есть и плюс, возможно, я стал чуть умнее.

Мной было потрачено очень много времени на изучение спецификаций, осознания их, поиск оптимальных алгоритмов, написание черновиков (прототипов), создание myhtml (самый быстрый парсер html) в свободное от работы время, и просто так забросить эту тему я пока не могу. Было потрачено много выходных, праздников, вечеров, ночей.

Теперь я занимаюсь разработкой нового браузерного движка. Разработка с ноля. Имени у него пока нет, только кодовое — lexbor. Вся основа уже написана: работа с памятью, общие алгоритмы, заложена будущая архитектура. Как всегда, всё краше и лучше чем было. В общем, у меня есть самое главное: технология и чёткое видение/понимание как и что развивать.

Одному мне такой проект не потянуть. Если поддержки не найду (финансирования) то прекращу разработку и присоединюсь контребьютером к существующему открытому движку (Blink или Gecko). Попробую побыть там волонтером и реализовать свои идеи. Занимаюсь всем этим исключительно в нерабочее время.

Тут видимо должна быть картинка «ты должен был бороться со злом, а не примкнуть к нему».

Спасибо за внимание!

P.S.: Все ошибки в личку или считать авторским стилем.

habr.com

Как создать свой собственный веб-браузер всего за 5 минут

заинтересованы в создании собственного веб-браузера Google Chrome, как Вы? Вы находитесь в нужном месте. Я расскажу вам самый лучший способ создать свой собственный веб-браузер бесплатно без каких-либо языка программирования. Это онлайн задача, и вы можете сделать свой собственный браузер всего за 5 минут. Вся тренировка абсолютно свободна и нужно только ваши 5 минут. Если есть только один ПК в вашем доме и хотите создать специальный браузер для каждого члена семьи, дать свои несколько минут и ваш собственный браузер будет готов к использованию. После того, что вы никогда не будете

Заинтересованы в создании собственного веб - браузер , как Вы Google Chrome ? Вы находитесь в нужном месте. Я расскажу вам самый лучший способ создать свой собственный веб - браузер бесплатно без каких - либо языка программирования. Это онлайн задача, и вы можете сделать свой собственный браузер всего за 5 минут. Вся тренировка абсолютно свободна и нужно только ваши 5 минут.

Если есть только один ПК в вашем доме и хотите создать специальный браузер для каждого члена семьи, дать свои несколько минут и ваш собственный браузер будет готов к использованию. После этого вы никогда не должны войти / с другими членами семьи.

Создайте свой собственный браузер Создайте свой собственный браузер

Итак, посмотрим на простые шаги, чтобы создать свой собственный персональный веб-браузер:

  • Просто посетите веб - сайт Makemybrowser.com и нажмите на кнопку Начать.
Начало Создание браузера Начало Создание браузера
  • Теперь вам нужно ввести имя для вашего браузера и загрузить значок фото , чтобы показать , как ярлык на рабочем столе.
Выберите имя и значок для вашего браузера Выберите имя и значок для вашего браузера
  • После ввода имени и загрузки, нажмите на картинку Выберите Закладки. На этом шаге вы можете выбрать закладки, чтобы сохранить любой из ваших большинства посещающих веб-страниц. Если вы не хотите , чтобы добавить любую страницу, вы можете пропустить этот шаг, просто двигаться вперед.
Выберите Закладки или Переместить вперед Выберите Закладки или Переместить вперед
  • Да, ребята, вы можете пропустить шаг выше, просто двигаться вперед, нажав на Выбрать тему. Здесь вам нужно выбрать тему для вашего браузера. После выбора темы, просто отметьте термин Я согласен с условиями использования и нажмите на Finish и скачать.
Выбрать тему и Скачать браузер Выбрать тему и Скачать браузер

Это все друзья! После этого может быть предложено сохранить настройки браузера. Таким образом, просто нажмите на кнопку Сохранить, чтобы загрузить ваш браузер. Это все, и теперь вы можете использовать свой собственный созданный веб-браузер.

ПРОЧИТАТЬ: Топ 5 браузеров бесплатно Для Windows

Действительно, созданный вами веб-браузер основан на проекте Google Chromium. Это в мире постился веб-браузер и поддерживает все расширения Chrome от Google. Этот веб-браузер будет вести себя, как в Google Chrome, так как она состоит из одного и того же сценария хрома, как в Google Chrome. Таким образом, пользоваться свой собственный созданный браузер и произвести впечатление на своих друзей и семью.

ru.affdu.com

Разработка браузерной стратегии / Хабр

Всем привет!

Хочу поделиться с хабрасообществом своим опытом написания многопользовательской браузерной стратегии с нуля до рабочего проекта. С точки зрения непосредственно программирования, архитектуры и возникших проблем. Это мой первый опыт создания игры и возможно вы заметите множество недочетов или промахов, или посоветуете чего дельного. Но не суть важно — главное я довел дело до рабочего проекта и наверняка многим будет интересно узнать подробности.

Что представляет собой игра? Видимо наиболее коротким описанием будет «клон Цивилизации» =). Но это не значит что у меня не хватило фантазии придумать что-то свое. Просто сделать «Цивилизацию» было моей мечтой. Вряд ли бы я получил столько удовлетворения от написания другой игры. Ну а фанаты Цивилизации наоборот считают, что моя игра совсем не похожа на Цивилизацию, разве что только с виду. Может это и к лучшему.

Игра называется The Fate of Nation http://fatenation.com

Расписывать архитектуру и логику работы приложения можно до бесконечности поэтому придется видимо разделить на несколько частей статью, если к ней будет интерес. Кроме того не вижу большого смысла приводить много кода, так как реализовать написанное мной можно на любом языке и платформе.

Для создания игры я использовал php и MySQL на сервере, html и javascript на клиенте. Flash не используется. Из html5 есть только видео на сайте и несколько областей с канвасом в самой игре — включая поверхность карты и мини-карту. Объем кода клиентской части в несколько раз превышает серверную часть, поэтому в основном буду рассказывать о клиентской разработке, но начнем с сервера.

Общая архитектура
Общая архитектура приложения выглядит как полностью асинхронное веб приложение на JavaScript. Перезагрузок страниц не предусмотрено. Обмен данными с сервером исключительно через Ajax и JSON. В JSON'е передаются только данные, без html кода. Html разметка загружается отдельно в начале загрузки приложения и процессится с данными через клиентский шаблонизатор по мере загрузки данных с сервера.

На сервере никаких фреймворков не использовал — хотя начинал писать с использованием Zend Framework, который выкосил потом за ненадобностью. Вместо него создал свою простую архитектуру отдаленно напоминающую контроллеры и экшены из ZendFramework.

Как видно из рисунка, на сервере одна точка входа — файл index.php. В процессе игры на сервер идут запросы вроде такого: /Unit/Move. И посылается JSON с параметрами, в данном случае это id юнита и координаты перемещения. Сервер перенаправляет этот запрос на index.php, в котором последовательно выполняется подключение к БД, проверка текущего пользователя и парсинг строки запроса для определения контроллера (Unit) и действия (Move). Если контроллер не задан то сервер выдает индексную страницу с кодом для построения клиентского приложения, но об этом позже. Если же контроллер задан то ищется файл этого контроллера, подключается его код и запускается обработка запросов этого контроллера, где соответственно ищется необходимый экшн, а в нем производится проверка входных данных и дергается бизнес логика.

Для работы с БД написан специальный класс абстракции базы данных через который проходят все запросы к БД от бизнес логики и контроллеров, экранирование данных и прочие небольшие удобства. Собственно на сервере все довольно просто с архитектурой, а зона ответственности сервера заключается лишь в проверке входных данных и выдаче информации из БД. Все остальное делает клиент.

Теперь немного о самой игре.

Карта
Первое что было сделано это карта на которой происходят почти все игровые действия: строительство городов, улучшений (посевы, дороги), перемещение юнитов и исследование карты. Размер карты составил 1000 на 1000 клеток для каждой отдельная запись в БД. Я видел игры где карта сделана бесконечной и записи о клетках динамически вставлялись тогда, когда с клеткой производились какие-либо действия. Но меня такой подход немного пугал своей непредсказуемостью. Гораздо проще планировать игру, когда точно знаешь, что у тебя есть фиксированная карта. Можно запланировать расположение игроков их количество, количество городов и юнитов, приблизительно оценить нагрузку.

Итого получилось 1000 * 1000 = 1 000 000 записей в БД для карты. До этого я не работал с таким количеством записей и меня это насторожило. Думал что будет тормозить.

Я решил перехитрить MySql и разместить карту в 10-ти таблицах по 100 000 записей в каждой с надеждой, что станет быстрее работать. В итоге пришлось написать дурацкую логику по выборке клеток из нескольких таблиц сразу, а замеры показали что производительность только упала. Вернул все назад в 1-у таблицу.

  • x, y — это координаты клетки.
  • terrain — тип территории (луг, лес, гора...).
  • resource — ресурс если он есть на клетке (глина, лошади).
  • wens9_code — название поля произошло от west-east-north… 9 — означает что изображение данной клетки зависит от территорий 8-ми рядом стоящих клеток и естественно от территории самой этой клетки — всего 9. Эту логику я спер с 3-ей цивилизации, насмотревшись их спрайтов территорий там где по 512 вариантов иконок для одной клетки!)) Потом у меня вскипел мозг разбирая зависимости по которым они выбирали иконки и я понял, какой это большой геморрой. =) И все только для одного: чтобы спрайты имели жесткие концы в виде ромбиков 128 на 64 пикселя. В конце концов мы решили использовать png24 с полупрозрачными краями накладывающиеся друг на друга и создающих в 10 раз лучший и разнообразный ландшафт, чем в описанном примере из Цив3. А выбираем иконки случайно независимо от соседних клеток. Это видно на скрине — сразу не скажешь где там одинаковые иконки полей. Вот горы по краям размыть забыли и они имеют четкие границы — что плохо смотрится.
  • starting_position — означает что в этой клетке появится игрок.
Конечно это не весь список полей, но здесь и далее для упрощения буду приводить только те поля, о которых рассказываю в статье.
Регионы
Клиент написан таким образом, что он не запрашивает с сервера определенные клетки, а запрашивает их партиями по 100 штук (10 на 10), которые я назвал регионами. То есть каждая клетка принадлежит какому-то региону и клиент запрашивает регионы и не конкретные клетки. Как только игрок перемещает карту так, что становится виден новый регион, мы посылаем запрос на сервер за этим регионом и граничащими с ним. Данные каждого загруженного регионакешируются на 30 секунд на клиенте. Это позволяет легко прокручивать карту без тормозов и лишних запросов на сервер и избавляет от задержки при появлении нового региона на карте — так как мы загружаем все соседние наперед.

Когда я делал эти «регионы» я не предполагал насколько они увеличат производительность. Оказалось выделить 100 клеток фильтруя по полю региона получается многократно быстрее чем фильтруя по координатам. Несмотря на то, что я объединил x и y координаты клетки в одно поле location = 1000*x + y. Сделал это прежде всего для удобства — чтобы легче было достать одну клетку.

Затем каждую сущность (города, юниты, ресурсы), которые располагаются на карте и имеют соответственно конкретные координаты, я также пометил регионом, что увеличило производительность выборок в сотни раз. Одно дело искать значения в таблице по ключу с миллионом уникальных значений и другое дело по ключу с 10 000 значений.

Таким образом получилась такая система: клиент запрашивает регионы — сервер достает из БД карту и все сущности на ней, быстро фильтруя по регионам — клиент отрисовывает это все в браузере на канвасе. У каждой сущности есть такие поля как время до окончания битвы или время до перемещения в следующую клетку — в этом случае по истечении этих таймаутов мы обновляем локально только то что требуется. Например если мы исследуем карту то догружаем только что открытые клетки и не более. Если вражеский юнит переместился — догружаем следующую точку его перемещения.

Исследование карты
Однако меня терзал еще один вопрос. Мне позарез хотелось сделать исследование карты — чтобы изначально она была не разведана и нужно было ходить по ней чтобы что-то увидеть.

Такого я не видел еще в браузерных играх (собственно как и юнитов передвигающихся по карте, а не по воздуху). Я принялся за расчеты. Стартовая позиция игрока расположена внутри региона. То есть максимальное количество игроков 10 000 как и регионов. Каждый игрок может разведать всю карту. Итого 10 000 * 1 000 000 = 10 миллиардов записей может быть в таблице пермишенов на клетки! Таблица карты показалась на фоне этого детским лепетом =). Конечно эта цифра завышена. Вряд ли кому-то удастся разведать всю карту — она очень большая. Но десятки и сотни миллионов записей в таблице пермишенов точно могут быть в конце игры.

И на эту таблицу нужно было джойнить все сущности включая саму карту каждый раз при выборке регионов. Здесь опять спас меня ключ по полю региона, который позволил делать эти джоины намного быстрее.

Провести нагрузочное тестирование чтобы определить на каком этапе сервер начнет тормозить не удалось еще. Максимум что я видел это чуть более 2-ух миллионов записей в таблице пермишенов.

Перемещение юнитов
Чтобы сделать перемещение юнитов пришлось тоже подумать и переписать логику несколько раз. Первое что нам нужно, это точно отслеживать время открытия новых клеток чтобы можно было отфильтровывать клетки, юниты и города по этим данным. Сразу напрашивается использовать таблицу пермишенов на карту, но со спец-полем — означающим время когда эта запись станет активной. Так и было сделано. Клиент отправляет id юнита, и новую координату дислокации. Сервер просчитывает текущую позицию юнита, координаты клеток по которым он будет перемещаться, и в зависимости от территории этих клеток, типа юнита и других параметров высчитывает время когда этот юнит будет в каждой клетке. Затем дополнительно просчитываются таким же образом соседние клетки в зависимости от радиуса обзора юнита.

Все это вставляется в таблицу пермишенов на клетки и карта работает как часы. Юнит ходит по карте, при каждом его перемещении мы запрашиваем клетки вокруг него, стандартными методами, которые отфильтруют сущности уже по новым данным пермишенов учитывая время активации пермишена, где будут заветные открытые области.

Далее записи пермишенов, которые говорят о перемещении юнита мы помечаем еще 2 полями: id юнита и типом записи: 'обзорные клетки' или 'клетки по которым идет юнит'. Первое поле нужно чтобы при остановке юнита или смене пункта назначения можно было их удалить, второе нужно чтобы при выборке юнита записать ему времена смены дислокации.

Затем коллеги по работе мне подсказали еще один довольно очевидный момент: ввести поле означающее время выхода юнита с данной клетки. Я назвал его out_timestamp. Это позволило легко выбирать текущие позиции всех юнитов и соответственно фильтровать вражеских юнитов по видимым нами клеткам.

Уверен, что мой пример не самая удачная архитектура для подобной игры, но вроде работает =) В следующих статьях могу рассказать о клиентской архитектуре, кешировании, используемом фреймворке и о том, как мне удалось сделать демонстрационную версию игры работающую без запросов к серверу, чисто на клиенте.

Да, кстати, часто после различных постов об игре народ начинает хвалить графику, а не геймплей. Так что скажу сразу — я ее не рисовал!!! Это все наш художник-дизайнер Максим Кудрицкий.

P. S. Спасибо TheShock за помощь и поддержку в написании топика! =)

habr.com

Какой сервис для создания браузерных расширений выбрать? / Хабр

Большинство из нас слышали про браузерные расширения, многие активно пользуются ими в повседневной жизни. Они облегчают нам доступ к популярным сервисам, оперативно предоставляют нам нужную информацию.

Я знаком с браузерными расширениями не понаслышке, работаю в ИТ-бизнесе и многие из проблем, с которыми я сталкиваюсь в работе, успешно решаются с помощью браузерных расширений.

Некоторое время назад я попытался найти онлайн-сервис, который бы позволял быстро создавать браузерные расширения для различных нужд. Во время поисков я наткнулся на три (бесплатных) сервиса, которые вызвали во мне интерес, и я хочу поделиться ими с вами, уважаемые хабражители.

Community Toolbar
Разработкой этого сервиса занимается компания Conduit, которая занимается браузерными расширениями уже более 10 лет. Они заявляют о примерно 260 тыс. паблишеров и 250 млн. конечных пользователей.

Community Toolbar поддерживает следующие популярные браузеры и их обновления: Chrome, Firefox, Internet Explorer и Safari. Этот сервис позволяет создавать тулбары и наполнять их различными виджетами, которые могут быть загружены из хранилища Apps Marketplace. Некоторые из этих виджетов монетизируемые и могут приносить доход владельцам тулбаров, или, как их называют, паблишерам. Для получения дохода Community Toolbar предлагает множество инструментов монетизации. Например, вы можете использовать инструмент Active Rewards Program, который позволяет получать деньги за каждого активного пользователя или за пользователей, которые пользуются монетизируемыми виджетами. К другим инструментам монетизации относятся распространение другого ПО вместе с инсталлером, показ купонов, спонсируемых поисковых запросов и т.д.

Для распространения созданного расширения Community Toolbar предоставляет landing-страницу, на которой содержится скриншот созданного тулбара и кнопка для его загрузки.

После того, как вы начнёте кампанию по распространению вашего тулбара, вам скорее всего понадобятся аналитические данные — для этого Community Toolbar предоставляет данные (в том числе пострановые) по количеству установок, активных пользователей, использованию виджетов, но к сожалению здесь не хватает данных о количестве удалений продукта. Для тех, кто хочет использовать API, сервис предагает документацию, но не предоставляет возможности онлайн-разработки.

Crossrider
Следующий сервис, который заслуживает внимания — Crossrider. Это большая платформа для онлайн-разработки, ориентированная на разработчиков со знанием JavaScript. Согласно данным сервиса, продуктами Crossrider пользуются примерно 15 тыс. разработчиков и 700 млн. (!) конечных пользователей.

На базе платформы Crossrider могут быть созданы различные расширения, среди которых боковые панели (sidebar), браузерные кнопки с различным контентом, расширения без GUI — всё зависит о фантазии и желания разработчика, и Crossrider предоставляет отличные инструменты для этого. Расширение может быть дополнено различными плагинами, такими как поисковый плагин, е-майл плагин и т. д. Crossrider также поддерживает такие популярные браузеры, как Chrome, Firefox, Internet Explorer, Safari.

Для тех, кто хочет монетизировать создаваемое расширение, Crossrider предоставляет различные инструменты, такие как купоны, спонсируемые поисковые запросы, добавление рекламы InText.

Для распространения расширений Crossrider предлагает более лучшие возможности, чем Community Toolbar — настраиваемая landing-страница, страница “Thank You” (появляется после установки продукта), ссылки для загрузки расширения для каждого браузера в отдельности — это лишь некоторые опции. В дополнение к этому Crossrider предлагает создание продукта специально для Chrome Store и инструкцию по его загрузке.

Что касается аналитических данных, то Crossrider предлагает информацию по количеству установок/удалений, активных пользователей, в том числе по странам и по браузерам.

Без сомнения, Crossrider является лучшим сервисом для разработчиков. Он содержит подробную документацию, позволяет локальную разработку и синхронизацию с онлайн-платформой.

NeoBars
Последним сервисом, который вызвал во мне интерес, является NeoBars — продукт компании “Macte! Labs”, которая занимается разработкой браузерных расширений уже более 5 лет.

Несмотря на то, что сервис находится в стадии бета-тестирования, по некоторым параметрам он вполне заслуживает сравнения с упомянутыми выше “гигантами”.

На платформе NeoBars можно создавать различные типы расширений: тулбары (InfoBars) с различными виджетами, Notifiers (поп-ап окно с различным контентом, открывающееся в браузерной кнопке). Также можно создавать свои расширения, используя инструмент Developer Tools и знания JavaScript.

NeoBars также поддерживает наиболее популярные браузеры (Chrome, Firefox, Internet Explorer, Safari) а в дополнение к ним ещё и Opera. Данный сервис пока не использует инструменты монетизации, но как следует из FAQ, команда работает над их внедрением. Однако паблишеры, создающие своё расширение с помощью Developer Tools, могут добавить в код свои инструменты монетизации. Для распространения созданных расширений NeoBars предлагает landing-страницу с инсталлерами для Windows/Mac и ссылками для каждого браузера в отдельности.

Что касается аналитики, то здесь NeoBars также предоставляет обширные возможности — данные о количестве установок/удалений, активных пользователей, использовании виджетов в тулбарах — все эти данные можно проанализировать по странам и по браузерам. Следует упомянуть то, что NeoBars позволяет получать аналитику в зависимости от способа распространения расширения — с помощью Windows/Mac инсталлера или побраузерно.

NeoBars позволяет разрабатывать собственные расширения онлайн, используя инструмент “Developer Tools”, который позволяет разработчикам создавать модули для InfoBars и Notifiers, или создавать отдельные продукты.

В помощь разработчикам создан отладчик — Debugger Tool, который устанавливается как браузерное расширение и позволяет проверять и отлаживать написанный код.

Чтобы подытожить всё сказанное, я объединил информацию по каждому из сервисов в диаграмме ниже:

Если вкратце подвести итог, то Community Toolbar в настоящее время предлагает только создание тулбаров, хотя браузерные расширения непрерывно развиваются. Crossrider позволяет разрабатывать различные расширения, однако данный сервис доступен только для разработчиков.

NeoBars привнёс на рынок браузерных расширений свежую и интересную концепцию — сделать создание браузерных расширений доступным для различных категорий людей, даже для тех, кто не умеет программировать. Мне интересно, как будет развиваться данный проект в дальнейшем и я надеюсь, что команда продолжит развитие в выбранном направлении.

Спасибо за прочтение, жду ваших мыслей в комментариях.

habr.com

создание браузера

КАК СОЗДАТЬ БРАУЗЕР ЗА 10 МИНУТ? (СОЗДАЕМ СВОЙ ХРОМ)

Группа ВКонтакте: http://vk.com/midnight_yt Создаем свой браузер на основе Chromium в программе PHP DevelStudio 3.0 Скачать DevelStudio:...

создание браузера в PHP Devel Studio

This Video was made by ARMEN PRODUCTIONS ==================================== Follow Me On Twitter - https://twitter.com/armenproduction ...

Создание Браузера в Visual Basic.NET RUS

Создания браузера на русском.

Урок по созданию простого браузера в Android Studio

Купить хостинг: https://goo.gl/ip6K1h По промокоду "StartAndroid" при оплате хостинга на год и более, вы получаете еще месяц...

Delphi 7 #2 - Создание браузера

Delphi 7 Tutorial [2]. В этом уроке мы будем создавать свой браузер в Delphi 7. Ставим лайки =) Не забываем про подписку...

Своими Клешнями #2 - Браузер с вкладками на c#(WebBrowser )

Во втором выпуске своими клешнями, запилим свой браузер. паблик в вк - https://vk.com/nextdev Автор - https://vk.com/daszma.

Уроки Андроид программирования | #15 - Простой браузер

В этом уроке мы создадим простейший браузер для нашего приложения. Он будет способен отображать конкретный...

[Algoritm 2] Как создать программу - Урок 1 - Простой браузер

http://algoritm2.ru - Программа "Алгоритм" http://www.youtube.com/user/TheBarbaris01 - Второй канал (обзоры, летс плеи, прохождения) Так...

как создать простой браузер на C#.avi

Создание своего простенького браузера на visual studio 2010.

Создание своего браузера для Android(конструктор)

Мой skype: mix_shop_ufa.

Qt 5.4 - Пишем свой браузер 1 часть

Ссылка на скачивание Qt: http://www.qt.io/download/ Ссылка на цвета RGB http://www.stm.dp.ua/web-design/color-html.php.

#Как создать браузер с вкладками в PHP Devel Studio

МОЙ ПРОЕКТ: http://nevelnex.com ИСХОДНИК СКАЧАТЬ: http://disk-space.ru/download/75c44333f9/brauzer.dvs.html В этом уроке я рассказал как создат...

[DevelStudio] Браузер (Мульти вкладочность, загрузки, поиск, история, закладки)

Ссылка на исходник: https://yadi.sk/d/-ukyz_cv3Hywcp Отключайте ошибки в дс!

Vivaldi - программа, созданная на основе свободного браузера Chromium

Статья на блоге Oleglav.com - http://oleglav.com/vivaldi-brauzer-sozdannyj-na-kode-chromium/ Музыкальный канал - http://www.dailymotion.com/oleglav ...

Создание браузера в Алгоритм 2 | Часть 1

Программа http://www.algoritm2.ru/ Кряк depositfiles.com/files/phlbfsid2 Как установить Кряк http://www.youtube.com/watch?v=16dmq8OG57E Сильно буду...

Создание браузера для Android

Сайт: http://custom.maxthon.com/ ▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱ Ты подписался на меня?Тогда...

Создание веб браузера на C# Создаем красивый и быстрый браузер в Делфи 7

Извините за звук...Микрофон я уже настроил)))Следующие видео будут лучше)))

Создание нескольких аккаунтов в одном браузере Google Chrome

Как делать бизнес в интернете легко и профессионально, даже если вы новичок? Получите готовую автоматизиро...

создание браузера История создания нового Яндекс.Браузера

Браузер, которого нет (yandex.ru/future)

Создаем свое приложение на примере браузера

http://gmy.su/:nzyk программа для создания игр.

Создание своего браузера!

Не получилось выложить коды здесь выложу в коменты! И приношу извинения что без монтажа!!!!!!!!

Пишем свой первый extension/расширение/плагин для браузеров Chrome и Opera

Видео о том как написать свой первый плагин для хрома и оперы Пустой проект плагина: http://goo.gl/yNHTkL.

создание веб браузера Создание браузера Создание Веб Браузера//Дизайн// #1

Я вк http://vk.com/id257818154 Моя группа вк http://vk.com/merkanomars.

как сделать свой браузер в Xcode на Swift? #4

Пишите вопросы в комменты. Я всё читаю :)

Создание браузера в делфи

ничего сложного нет по вапросам писать сюда http://vk.com/apple000 подписывайтесь на группу вконтакте и узнаете мног...

Урок 32. Создаем простое приложение - интернет браузер для андроид | Уроки Android Studio

В этом уроке вы увидите, как сделать простейший браузер, который отобразит страницу в интернете по http-адрес...

создание браузера в delphi

В этом видео вы научитесь создавать свой личный браузер! Вот если что моя страница вк:http://vk.com/by_arturik.

[C#] Создание своего браузера Быстрое создание простого браузера на Delphy 7 Dr.Linus

Быстрое создание простого браузера.

Пишем собственные расширения для браузера google chrome на javaScript

В данном видео вы у знаете о общей концепции написания расширений для браузера google chrome на javaScript. При этом...

Delphi. Создание файлового браузера. (Артём Кашеваров)

Автор: Артём Кашеваров Подробное содержание на сайте АВТОРА, или у нас: ▻ Сайт автора: http://programmerinfo.ru ▻ Сайт...

Как создать свою тему оформления в Google Chrome. Темы для браузера!

Мой второй канал https://www.youtube.com/channel/UC_kkAB6gbOFC3rwsof9UV4w Привет Друзья! Сегодня мы с вами поговорим о том, как создат...

История создания браузера Google Chrome

Посмотрите созданный группой разработки видеоклип о том, как они разрабатывали идеи и функции браузера...

1) Урок по созданию Браузера за 5 минут. от Хлебореза.avi

Смотреть в качестве 720 .В этом уроке я показываю что теперь каждый любитель сможет создать свою программу,ил...

PhP Devel studio. Создание браузера! Создание Браузера

Спецально для Zhyk.ru...

en iyi nes oyunlar? ndng enes batur gta 5 dizisi sony xperia z3 hoparlor sorunu werwera54 ????? ???? ????? ??? wix hesab? silme corel draw kurulumu han kanal story mode windows yukleme veya kurtarma medyas?n? tak?n guldur guldur 109 bolum

debojj.net

Создание браузера

КАК СОЗДАТЬ БРАУЗЕР ЗА 10 МИНУТ? (СОЗДАЕМ СВОЙ ХРОМ)

Группа ВКонтакте: http://vk.com/midnight_yt Создаем свой браузер на основе Chromium в программе PHP DevelStudio 3.0 Скачать DevelStudio:...

создание браузера в PHP Devel Studio

This Video was made by ARMEN PRODUCTIONS ==================================== Follow Me On Twitter - https://twitter.com/armenproduction ...

Создание Браузера в Visual Basic.NET RUS

Создания браузера на русском.

Урок по созданию простого браузера в Android Studio

Купить хостинг: https://goo.gl/ip6K1h По промокоду "StartAndroid" при оплате хостинга на год и более, вы получаете еще месяц...

Delphi 7 #2 - Создание браузера

Delphi 7 Tutorial [2]. В этом уроке мы будем создавать свой браузер в Delphi 7. Ставим лайки =) Не забываем про подписку...

Своими Клешнями #2 - Браузер с вкладками на c#(WebBrowser )

Во втором выпуске своими клешнями, запилим свой браузер. паблик в вк - https://vk.com/nextdev Автор - https://vk.com/daszma.

Уроки Андроид программирования | #15 - Простой браузер

В этом уроке мы создадим простейший браузер для нашего приложения. Он будет способен отображать конкретный...

[Algoritm 2] Как создать программу - Урок 1 - Простой браузер

http://algoritm2.ru - Программа "Алгоритм" http://www.youtube.com/user/TheBarbaris01 - Второй канал (обзоры, летс плеи, прохождения) Так...

как создать простой браузер на C#.avi

Создание своего простенького браузера на visual studio 2010.

Создание своего браузера для Android(конструктор)

Мой skype: mix_shop_ufa.

Qt 5.4 - Пишем свой браузер 1 часть

Ссылка на скачивание Qt: http://www.qt.io/download/ Ссылка на цвета RGB http://www.stm.dp.ua/web-design/color-html.php.

#Как создать браузер с вкладками в PHP Devel Studio

МОЙ ПРОЕКТ: http://nevelnex.com ИСХОДНИК СКАЧАТЬ: http://disk-space.ru/download/75c44333f9/brauzer.dvs.html В этом уроке я рассказал как создат...

[DevelStudio] Браузер (Мульти вкладочность, загрузки, поиск, история, закладки)

Ссылка на исходник: https://yadi.sk/d/-ukyz_cv3Hywcp Отключайте ошибки в дс!

Vivaldi - программа, созданная на основе свободного браузера Chromium

Статья на блоге Oleglav.com - http://oleglav.com/vivaldi-brauzer-sozdannyj-na-kode-chromium/ Музыкальный канал - http://www.dailymotion.com/oleglav ...

Создание браузера в Алгоритм 2 | Часть 1

Программа http://www.algoritm2.ru/ Кряк depositfiles.com/files/phlbfsid2 Как установить Кряк http://www.youtube.com/watch?v=16dmq8OG57E Сильно буду...

Создание браузера для Android

Сайт: http://custom.maxthon.com/ ▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱ Ты подписался на меня?Тогда...

Создание веб браузера на C# Создаем красивый и быстрый браузер в Делфи 7

Извините за звук...Микрофон я уже настроил)))Следующие видео будут лучше)))

Создание нескольких аккаунтов в одном браузере Google Chrome

Как делать бизнес в интернете легко и профессионально, даже если вы новичок? Получите готовую автоматизиро...

создание браузера История создания нового Яндекс.Браузера

Браузер, которого нет (yandex.ru/future)

Создаем свое приложение на примере браузера

http://gmy.su/:nzyk программа для создания игр.

Создание своего браузера!

Не получилось выложить коды здесь выложу в коменты! И приношу извинения что без монтажа!!!!!!!!

Пишем свой первый extension/расширение/плагин для браузеров Chrome и Opera

Видео о том как написать свой первый плагин для хрома и оперы Пустой проект плагина: http://goo.gl/yNHTkL.

создание веб браузера Создание браузера Создание Веб Браузера//Дизайн// #1

Я вк http://vk.com/id257818154 Моя группа вк http://vk.com/merkanomars.

как сделать свой браузер в Xcode на Swift? #4

Пишите вопросы в комменты. Я всё читаю :)

Создание браузера в делфи

ничего сложного нет по вапросам писать сюда http://vk.com/apple000 подписывайтесь на группу вконтакте и узнаете мног...

Урок 32. Создаем простое приложение - интернет браузер для андроид | Уроки Android Studio

В этом уроке вы увидите, как сделать простейший браузер, который отобразит страницу в интернете по http-адрес...

создание браузера в delphi

В этом видео вы научитесь создавать свой личный браузер! Вот если что моя страница вк:http://vk.com/by_arturik.

[C#] Создание своего браузера Быстрое создание простого браузера на Delphy 7 Dr.Linus

Быстрое создание простого браузера.

Пишем собственные расширения для браузера google chrome на javaScript

В данном видео вы у знаете о общей концепции написания расширений для браузера google chrome на javaScript. При этом...

Delphi. Создание файлового браузера. (Артём Кашеваров)

Автор: Артём Кашеваров Подробное содержание на сайте АВТОРА, или у нас: ▻ Сайт автора: http://programmerinfo.ru ▻ Сайт...

Как создать свою тему оформления в Google Chrome. Темы для браузера!

Мой второй канал https://www.youtube.com/channel/UC_kkAB6gbOFC3rwsof9UV4w Привет Друзья! Сегодня мы с вами поговорим о том, как создат...

История создания браузера Google Chrome

Посмотрите созданный группой разработки видеоклип о том, как они разрабатывали идеи и функции браузера...

1) Урок по созданию Браузера за 5 минут. от Хлебореза.avi

Смотреть в качестве 720 .В этом уроке я показываю что теперь каждый любитель сможет создать свою программу,ил...

PhP Devel studio. Создание браузера! Создание Браузера

Спецально для Zhyk.ru...

mods para escadona como baixar minecraft todas as versoes ip sky survival como baixar minecraft sem placa de video baixar the sims 3 showtime huzuni 1.8 mediafire como conseguir gp no blood strike resident evil 7 zangado criar ts3 gratis como instalar iptv na smart tv samsung

debojj.net

Создание собственного браузера

2012-01-06 13:31

Все кто работают под Mac OS знают о таком веб браузере как Safari. Он также поставляется с iOS. Safari основан на движке WebKit. Этот движок очень быстро позволяет обрабатывать веб–запросы, загружать сайты и пр.

 

C помощью компонента UIWebView мы можем отображать не только сайты. Он позволяет отображать следующее содержимое:

 

  • Сайты
  • Просто HTML
  • Документы Microsoft Office, Adobe PDF, Документы Apple iWork
  • Медиа-контент

 

Но об этом позже. Для начала давайте начнем с простого. Создадим проект на основе Single View Application и назовем его Browser.

 

Изменим файл ViewController.h:

 

#import <UIKit/UIKit.h> @interface ViewController : UIViewController @property (strong, nonatomic) IBOutlet UIWebView *myBrowser; @end

 

Чтобы загрузить какой-либо сайт нужно вызвать у UIWebView метод loadRequest:, в него нужно передать NSURLRequest, который в свою учередь создается с помощью NSURL. NSURL содержит в себе URL, который нужно загрузить. Внесем изменения в файл ViewController.m, с учетом всего вышеописаного.

 

#import "ViewController.h" @implementation ViewController @synthesize myBrowser; - (void)viewDidUnload { [super viewDidUnload]; self.myBrowser = nil; } - (void)viewDidLoad { [super viewDidLoad]; NSURL *imaladecLink = [NSURL URLWithString:@"http://www.imaladec.net/"]; [myBrowser loadRequest:[NSURLRequest requestWithURL:imaladecLink]]; } @end

 

Теперь осталось связать объект myBrowser с объектом интерфейса. Для этого перейдем в ViewController.xib. В библиотеке объектов находим WebView и перетягиваем в наш View. Кликаем по File’s Owner, переходим в Connections Inspector и связываем два наших объекта. 

 

Если вы все сделали правильно, должна быть примерно такая картина:

 

 

Это самое простое отображение веб страницы. 

 

Давайте усложним нашу задачу. Добавим переходы: вперед, назад, перезагрузка страницы. Для этого немного переделаем наш интерфейс. Вновь возвращаемся в ViewController.xib, добавляем в него Toolbar и NavigationBar. Затем, добавим четыре кнопки Bar Burron Item в Toolbar. Подпишите их соответственно: назад, вперед, обновить и стоп. 

 

 

UIWebView имеет 4 метода навигации (кнопки для которых мы только что добавили). Эти методы можна вызывать программно. В этом случае для каждой из кнопок нам прийдется создавать функцию, которая будет вызываться при нажатии на кнопку и помещать нужный метод в эту функцию. Или связать их на прямую через инспектор связей. Я предлагаю воспользоваться вторым способом. Для этого выделите WebView на интерфейсе и в Connactions Inspector - Received Actions установите связи следующим образом:

 

 

Все отлично, но при открытии странички мы видем только ее часть (верхний левый угол), при этом, у нас отсутствует возможность изменять размер отображаемой области. Чтобы исправть эти неудобства в инспекторе атрибутов WebView слудет установить галочку Scales Page To Fit:

 

 

Наш браузер отображает одну единственную траницу, но вы можете самостоятельно это изменить. Добавить UITextField в навигейшин бар, чтоб пользователи могли вводить нужную ссылку по которой будет загружаться страница.

 

В начале урока я писал о том, что UIWebView предназначен не только для открытия интернет-страничек. Давайте попробуем это сделать. В первую очередь, внесем изменения в интерфейс класса ViewController.h:

 

#import <UIKit/UIKit.h> @interface ViewController : UIViewController <UIActionSheetDelegate> @property (strong, nonatomic) IBOutlet UIWebView *myBrowser; -(IBAction)showMenu; @end

 

В него мы добавили протокол UIActionSheetDelegate и метод showMenu. В этом методе мы будем показывать ActionSheet для выбора варианта загрузки контента. Соответственно, изменим и реализацию (ViewController.m):

 

#import "ViewController.h" @implementation ViewController @synthesize myBrowser; - (void)viewDidUnload { [super viewDidUnload]; self.myBrowser = nil; } -(IBAction)showMenu { UIActionSheet *actionsheet = [[UIActionSheet alloc] initWithTitle:@"Выберите действие" delegate:self cancelButtonTitle:@"Отмена" destructiveButtonTitle:nil otherButtonTitles: @"iMaladec", @"Просмотр HTML", @"Просмотр PDF", nil]; [actionsheet showInView:self.view]; } -(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex { NSURL *url = nil; if (buttonIndex == 0) { url = [NSURL URLWithString:@"http://www.imaladec.net/"]; } else if (buttonIndex == 1) { NSString *pathToFile = [[NSBundle mainBundle] pathForResource:@"imaladecHTML" ofType:@"html"]; url = [NSURL fileURLWithPath:pathToFile]; } else if (buttonIndex == 2) { NSString *pathToFile = [[NSBundle mainBundle] pathForResource:@"imaladecPDF" ofType:@"pdf"]; url = [NSURL fileURLWithPath:pathToFile]; } [myBrowser loadRequest:[NSURLRequest requestWithURL:url]]; } @end

 

Все, что нам осталось сделать - это добавить на NavigationBar кнопку, а нажатие на нее связать с вызовом метода showMenu. Если кто-то не понимает, что написано в этом методе - можно прочитать урок UIActionSheet. И если все сделано правильно - должна получиться примерно следующая картинка:

 

 

Чтобы все работало - вам нужно добавить файлы imaladecHTML.html и imaladecPDF.pdf. Аналогичным способом можете попробовать открыть аудио или видео-файлы.

 

Исходный код можно скачать здесь.

www.imaladec.com


 

..:::Новинки:::..

Windows Commander 5.11 Свежая версия.

Новая версия
IrfanView 3.75 (рус)

Обновление текстового редактора TextEd, уже 1.75a

System mechanic 3.7f
Новая версия

Обновление плагинов для WC, смотрим :-)

Весь Winamp
Посетите новый сайт.

WinRaR 3.00
Релиз уже здесь

PowerDesk 4.0 free
Просто - напросто сильный upgrade проводника.

..:::Счетчики:::..