Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Как установить и запустить приложение для облачной ОС eyeOS
Приложения для eyeOS устанавливаются в подкаталог apps.
Пример пути к данному подкаталогу:
/usr/local//www/apache22/data/eyeOS/eyeOSeebe3bc4ed/apps
Дополнительные модули, в частности, написанные на JavaScript и предназначенные для выполнения в браузере на стороне клиента, располагаются в подкаталоге extern/apps.
Пример пути: /usr/local//www/apache22/data/eyeOS/eyeOSeebe3bc4ed/extern/apps
Кроме указанных подкаталогов дополнительные файлы, необходимые для работы некоторых приложений, устанавливаются в подкаталоги
/usr/local//www/apache22/data/eyeOS/eyeOSeebe3bc4ed/apps/share
/usr/local//www/apache22/data/eyeOS/eyeOSeebe3bc4ed/extern/apps/eyeX
и, возможно, в некоторые другие. Всё определяется составом установочного пакета конкретного приложения (файл с расширением .eyepackage).
Если требуется вручную установить некоторое приложение, например, HelloWorld, то необходимо скопировать в подкаталог apps подкаталог HelloWorld, который содержит следующие файлы установочного пакета:
app.eyecode (на языке PHP)
events.eyecode (на языке PHP)
info.xml (информация о приложении)
Простейшее приложение HelloWorld не нуждается в дополнительных модулях, поэтому в каталог extern/apps и другие дополнительные подкаталоги ничего копировать не нужно.
Для более сложных приложений, например, eyeCalc, входящего в установочный комплект eyeOS, подкаталог extern/apps содержит соответствующий подкаталог eyeCalc, в котором находятся следующие файлы:
eyeCalc.eyecode (на языке PHP)
eyeCalc.js (на языке JavaScript)
eyeCalc.min.js (на языке JavaScript без разделения на строки для ускорения выполнения в браузере?)
Похоже, что все вычисления в приложении eyeCalc выполняются в браузере клиента, а не на стороне сервера, что вполне логично. Таким образом, приложение eyeCalc можно рассматривать как типичный пример разделения вычислительной нагрузки между клиентом и сервером. При этом сервер поддерживает выполнение процесса eyeCalc в контексте eyeOS и формирует окно приложения, а клиент выполняет арифметические операции и вычисляет математические функции, поддерживаемые в калькуляторе.
Прежде чем приводить пример файлов приложения HelloWorld, обратим внимание на правила именования подкаталога пакета и функций программ PHP. Имя подкаталога, содержащего файлы приложения (в данном случае HelloWorld), и префиксов функций, описанных в файлах *.eyecode (например, HelloWorld_run), должны совпадать. В противном случае приложение не будет работать.
Также обратим внимание на тот факт, что в случае запуска сервера apache на *nix-сервере все текстовые файлы пакета имеют формат, принятый для текстовых файлов в ОС UNIX, т.е. строки завершаются управляющим символом <LF> (перевод строки), в то время как в ОС Windows принят другой формат текстовых файлов, в которых строки завершаются парой символов <CR> (возврат каретки) и <LF>. Это может вызвать проблему совместимости при редактировании таких файлов текстовым редактором под Windows.
Возможны, по крайней мере, следующие три способа запуска приложений под eyeOS:
1. Выбор пункта Launch App в выпадающем меню, которое появляется при нажатии круглой кнопки в “панели задач”, располагающейся в самом низу экрана справа. В качестве имени приложения указываем, например, HelloWorld. Этот способ похож на запуск программ в Windows “Пуск/Выполнить…”.
2. Меню в верхней части экрана: “Accessories/Process Manager” вкладка “Processes”, кнопка “New process”.
3. Создание ярлыка на рабочем столе: щелчок правой кнопкой мыши и выбор пункта “New launcher” в выпадающем меню. Здесь также можно выбрать значок для ярлыка.
Ниже приводится текст файлов приложения HelloWorld, которые находятся в подкаталоге
/usr/local//www/apache22/data/eyeOS/eyeOSeebe3bc4ed/apps/HelloWorld
Префиксы имен, которые должны совпадать с именем подкаталога приложения (HelloWorld) выделены цветным маркером.
app.eyecode:
<?php
/*
____ _____
/ __ \ / ____|
___ _ _ ___| | | | (___
/ _ \ | | |/ _ \ | | |\___ \
| __/ |_| | __/ |__| |____) |
\___|\__, |\___|\____/|_____/
__/ |
|___/ 1.9
Web Operating System
eyeOS.org
eyeOS Engineering Team - www.eyeos.org/team
eyeOS is released under the GNU Affero General Public License Version 3 (AGPL3)
provided with this release in license.txt
or via web at gnu.org/licenses/agpl-3.0.txt
Copyright 2005-2009 eyeOS Team (team@eyeos.org)
*/
function HelloWorld_run($params = '') {
// First we create a new Window:
$myWindow = new Window(array(
'cent' => 1,
'father' => 'eyeApps',
'height' => 150,
'name' => 'HelloWorld_Window',
'title' => 'Example Application',
'width' => 250
));
$myWindow->show();
// Now we create the initial "Hello World!" Label:
$myLabel = new Label(array(
'father' => 'HelloWorld_Window_Content',
'name' => 'HelloWorld_Label',
'text' => 'Hello World!',
'x' => 20,
'y' => 20
));
$myLabel->show(0);
// Afterwards we create the Textbox, where the user
// will add the new "Hello World!" message:
$myTextbox = new Textbox(array(
'father' => 'HelloWorld_Window_Content',
'name' => 'HelloWorld_Textbox',
'width' => 150,
'x' => 20,
'y' => 50
));
$myTextbox->show();
// Because the user should be able to start typing
// from the moment he opens the application without
// having to click into the Textbox we focus it:
$myTextbox->focus();
//
$myButton = new Button(array(
'caption' => 'Change Label Text',
'father' => 'HelloWorld_Window_Content',
'name' => 'HelloWorld_Button',
'x' => 20,
'y' => 80
));
// The Textbox need to be a friend of the Button:
// So every time the user clicks the Button the Textbox
// text will be sent.
// A button can have as many friends as you want.
$myButton->addFriend($myTextbox);
$myButton->show();
}
function HelloWorld_end($params = '') {
eyeWidgets('unserialize',$params);
}
?>
events.eyecode:
<?php
/*
____ _____
/ __ \ / ____|
___ _ _ ___| | | | (___
/ _ \ | | |/ _ \ | | |\___ \
| __/ |_| | __/ |__| |____) |
\___|\__, |\___|\____/|_____/
__/ |
|___/ 1.9
Web Operating System
eyeOS.org
eyeOS Engineering Team - www.eyeos.org/team
eyeOS is released under the GNU Affero General Public License Version 3 (AGPL3)
provided with this release in license.txt
or via web at gnu.org/licenses/agpl-3.0.txt
Copyright 2005-2009 eyeOS Team (team@eyeos.org)
*/
// First we create the NAMEOFAPP_on_NAMEOFBUTTON function.
// In this case, the application is HelloWorld and the
// button is called "HelloWorld_Button":
function HelloWorld_on_HelloWorld_Button($params = '') {
// Now we grab the current text from the Textbox...
$myCurrentText = $GLOBALS['HelloWorld_Textbox']->text;
// ... and we set it into the Label:
$GLOBALS['HelloWorld_Label']->setText($myCurrentText);
// Finally we clean the Textbox and focus at it again:
$GLOBALS['HelloWorld_Textbox']->setText('');
$GLOBALS['HelloWorld_Textbox']->focus();
}
// If the application we are developing needs to send / receive
// messages, it is necessary to update its contents through the
// eyeWidget's "updateContent" method.
// It is an automatic function and you can just copy it tp
// your applications, which use messages by simply changing the
// app's name in the function:
function HelloWorld_on_Message($params = '') {
eyeWidgets('updateContent',$params);
}
// The NAMEOFAPP_on_Close() function will be executed every time
// the user closes the application. We recommended you to always send
// the close message to remove the application from the processes table.
function HelloWorld_on_Close($params = '') {
proc('end');
}
?>
info.xml:
<package>
<name>HelloWorld</name>
<category>Utilities</category>
<version>1.9</version>
<description>Utility to show how to use the eyeOS Toolkit</description>
<author>eyeOS Team</author>
<license>AGPL</license>
<type>Utility</type>
<icon>index.php?theme=1&extern=icons/48x48/rename.png</icon>
</package>