На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Страницы: (4) [1] 2 3 ... Последняя » все  ( Перейти к последнему сообщению )  
> Использование PHP для клиентских приложений , Создание языка ультра-высокого уровня
    Идея:
    Использование сетевых языков для клиентских приложений.

    Структура:
    Создание приложения происходит следующим образом:
    Программная оболочка (создание\программирование расширенного PHP файла, файл в формате *.phpa (php advance)) -> интерпретатор (обрабатывает и заменяет некоторые значения для совместимости с оригинальным PHP, сохраняет файл в формате *.php) -> компилятор (исполняемый байт-код) -> выполнение программы.

    Выполнение приложения:
    - Установка (в идеале) общего окружения для всех программ данного типа (подразумеваю хранение php_****.dll в System32 и прочее, что-то вроде C++ Redistrutable)
    - Запуск скомпилированного (сархивированного) файла с помощью предустановленного приложения (что-то вроде флеш - файл запускается приложением)
    - Открывается заданное приложение (визуализация XHTML\HTML + CSS, исполнение JS\AJAX\PHP, хранение данных - любая PHP-совместимая БД)

    Цель:
    Ускорение в десятки раз создания небольших клиентских приложений, в основном направленные на работу с базами данных и сетью.

    Примеры внедрения:
    Справочники, Реестр данных, Даунлоадеры, Менеджеры (изображений\видео и так далее), Небольшие игры, Чаты, Почтовые клиенты и так далее.

    Реализация:
    Итерация 1 - сборка тестового окружения:
    Язык VB6. Папка с приложением содержит каталог bin и исполняемый *.exe файл. Каталог bin содержит отредактированную версию Denwer. Каталог bin/home/***/www/ (вместо символов *** - набор любых числобуквенных символов, например md5 времени создания каталога) содержит исполняемый файл *.php (имеется ввиду исполняемый в данной среде).
    Реализация *.exe файла (алгоритм работы приложения):
    - Запуск Denwer
    - Ожидание завершения запуска
    - Использование движка (стандартного контрола) IE для визуализации\запуска приложения
    - Открытие (по умолчанию адреса http://***/index.php) в "псевдо" браузере файла *.php

    Итог: Решил использовать язык VB6 ради ускорения создания тестового окружения.

    Итерация 2 - сборка конечного (идеального) окружения:
    Язык C++. Используется только один файл данных любого формата (определённого ранее), содержащего данные о приложении.
    Реализация предустановленного приложения:
    - Открытие файла данных в приложении
    - Распаковка БД (если есть) из файла данных в папку приложения (предустановленная среда)
    - Распаковка Файлов (в идеале только байт-кода) в папку приложения
    - Распаковка изображений и т.д. (в идеале - должны содержаться в файле БД) в папку приложения
    - Все распакованные данные можно сохранить, для ускорения следующей загрузки (т.е. как бы установка), либо удалить после завершения работы с приложением
    - Получение данных о приложении из файла данных (размер создаваемого окна, название приложения и прочее)
    - Инициализация движка WebKit с и передача туда выполненного (откомпилированного) байт-кода

    Результат в идеале должен быть следующий: Пользователь не будет видеть разницы между запуском обычного приложения и запуском псевдо-PHP приложением - двойной клик по файлу открывает саму программу. Для программиста же это значительное ускорение разработки. Можно сравнить просто, что быстрее вёрстка страницы сайта или попытка реализовать такой же интерфейс в приложении. Дальше PHP позволяет очень много вольности, что очень незначительно сказывается на скорости и значительно на приятности работы\скорости разработки.

    Нюансов уйма, например если использовать WebKit, то можно получить аппаратное ускорение приложения, плюс использовать OpenGL (WebGL) для реализации 3х- и 2х-мерных игр. Язык C++ используется именно из-за того, что PHP\WebKit и прочее написаны именно на нём.

    Я об этом проекте долго думал, может это глупость, но тестовую сборку я всё-таки сделаю, работы на денёк, а если понравится идея, почему бы не реализовать её. :) Если есть какие-то вопросы и недопонятки - задавайте :)
      Serafim ты слышал о такой вещи http://habrahabr.ru/blogs/php/85092/ ?
        FullArcticFox, угу :) Только здесь фишка немного другая - использование HTML для создания пользовательского интерфейса приложений - это только один из моментов ;)
          http://ru.wikipedia.org/wiki/PHP-GTK
            А нафиг это всё? :huh: Только работа со знакомым языком? А в чём такое особое ускорение разработки этих приложений? ;)
              люди, у кого нибудь работает webgl?
              тестил на mozilla firefox 4 Beta 4, делал about:config менял там на true - не работает.
              на chrome 7.0.503.0 beta тоже самое....

              как тестить webgl?
                Так, вроде закончил предварительную версию. Встречайте первую полноценную бета-версию. :blush:

                При открытии exe'шника - по умолчанию открываются настройки:
                настройкиПрикреплённый файлprev.jpg (102,47 Кбайт, скачиваний: 651)
                Поля:
                1) Путь к папке с исполняемой средой (там где на жёстком диске находится локалхост например)
                2) Путь к файлу через http (путь, где можно открыть этот файл через браузер)
                3/4) Размер окна, открываемого по-умолчанию

                Что бы запустить php файл на исполнение, требуется открыть его с помощью этого приложения.

                Пожалуйста, сообщите, если найдёте ошибку, буду очень признателен :thanks:
                первая бэта-версияПрикреплённый файлXphp.rar (35,06 Кбайт, скачиваний: 232)
                исходники, просьба не слишком пинать :rolleyes: :D Прикреплённый файлXphp_VB6.rar (23,57 Кбайт, скачиваний: 227)
                Сообщение отредактировано: Serafim -
                  Не знаю, как насчет пользовательских приложений. Не думаю, что кто-то специально будет изучать для этого php.
                  Но, я так понял, эта программа может выполнить php-скрипт без установки web-сервера и интерпретатора php, эмулируя таким образом на локальном компьютере web-сервер.
                    Цитата amk @
                    Но, я так понял, эта программа может выполнить php-скрипт без установки web-сервера и интерпретатора php, эмулируя таким образом на локальном компьютере web-сервер.

                    Пока что нет. Фактически он работает используя уже готовое окружение (установленное ранее). Теперь я займусь как раз вставкой сервака в программу, т.е. как ты сказал будет эмуляция сервера на локальном компе :yes: Это как раз на стадии разработки
                      Просто, если сервак установлен, то как бы нет проблем выполнить скрипт на нем. А если не установлен, то, ты пишешь программа и работать не будет.
                      Соответственно, если человек занимается Web-разработкой, он и так имеет доступ к серверу и может обойтись без твоей программы.
                      Если не занимается, то программа оказывается ему бесполезна.
                        amk, сказал же, что сервак будет развёртываться при первом старте программы в фоновом режиме, не заметном пользователю. Фактически он будет видеть рабочее приложение по которому надо щёлкнуть двойным щелчком, что бы запустить :)
                          Цитата Serafim @
                          сервак будет развёртываться при первом старте программы
                          Ты уверен, что это ему просто так удастся?

                          1. Программа может быть запущена из под непривелигированного пользователя (у меня на компе (что дома, что на работе), например, других и нет (есть конечно, но они (точнее я) на компьютере не работают, а только обслуживают его (что интересно, я на работе к своему компу системщиков не подпускаю - они, того и гляди, все испортят))).
                          2. В Windows (да и в других ОС тоже) существует такая вещь, как квоты на использование дискового пространства.
                            amk, а почему Денвер умеет запускаться с флешки? :huh:
                              Ну, он наверно уже развернут на этой флэшке. Ничего не пытается писать за пределами своего каталога, да и в своем старается не мусорить. Если что вне его и пишет, то в профиле текущего пользователя
                                Цитата amk @
                                Ну, он наверно уже развернут на этой флэшке. Ничего не пытается писать за пределами своего каталога, да и в своем старается не мусорить. Если что вне его и пишет, то в профиле текущего пользователя

                                Если внимательно прочитать как устроена моя программа - можно понять что я запускаю скрипты из исполняемой среды, которую я эмулирую через Апач+ПхП. Осталось только дописать некоторые места. Мне не нужены мегабольшие права, что бы запустить чат ;)

                                З.Ы. Для проекта попытался использовать Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.7.12) Gecko/20051002, но потерпел поражение. Всё работает, но глючит страшно, так что вернулся обратно на ИЕ7 :(
                                1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                                0 пользователей:


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0914 ]   [ 16 queries used ]   [ Generated: 18.05.24, 00:26 GMT ]