Цены на виртуальные машины windows
Содержание:
V86 Problem
The most common problem with v86 mode is that you can’t enter Protected mode from inside of a v86 task. In other words, if you are running Windows or have emm386 in memory, you can’t do a «raw» switch into protected mode (it causes an exception). DOS extenders worked around that problem using either VCPI or DPMI interfaces to switch into pmode (actually, promoting their V86 task as a ‘regular’ user task). For an OS programmer such interfaces are simply useless as they’re part of another OS.
There are a few other more «technical» problems people have when using v86 mode, mostly because v86 has some instructions «emulated» by what’s known as a v86-monitor program, as the CPU is in protected mode, some instructions are high up on the security/protection level and running those directly would cause no-end of trouble for the OS.
Microsoft Windows 95: First Retail Release
Windows 95 was the successor to Windows 3.1 and included a number of important new features:
- Support for 32-bit Windows applications
- Long mixed-case filenames (up to 255 characters)
- GUI improvements (e.g., Explorer, Start button, Taskbar, shortcuts)
It was also first version of Windows that required an 80386 CPU (preferably a D-stepping or later).
Windows 95 was released to manufacturing on July 14, 1995 and went on sale at midnight on August 24, 1995.
It is shown running below, following a “Compact Installation” on a 68Mb hard disk. Before the machine can
start, it must download the disk image, which may take a minute or two, depending on the speed of your
internet connection.
More information about this Windows 95 demo is available in the PCjs Blog.
Waiting for machine «deskpro386» to load….
PCjs Explorer
- Hardware
- Arcade
- DEC
- PDP-10
- KA10
- PDP-10 KA10 Test
- Documentation
- KL10
- Documentation
- KA10
- PDP-11
- PDP-11/20
- PDP-11/20 with BASIC
- PDP-11/20 with Bootstrap Loader
- PDP-11/20 with Boot Monitor
- PDP-11/20 with Front Panel
- PDP-11/45
- PDP-11/45 with 256Kb
- PDP-11/45 with VT100
- PDP-11/70
- PDP-11/70 with 4Mb
- PDP-11/70 «Server Array»
- PDP-11/70 with Boot Monitor
- PDP-11/70 with Front Panel
- PDP-11/70 with CPU Exerciser
- PDP-11/70 with RSTS/E
- PDP-11/70 with RT-11
- PDP-11/70 with XXDP+
- PDP-11/70 with VT100
- Documentation
- Documentation
- PDP-11/20
- VT100
- VT100 Terminal
- Dual VT100 Terminals
- VT100 connected to IBM PC AT
- PDP-10
- IBM PC
- AT&T
- AT&T 6300
- Color Display
- Documentation
- AT&T 6300
- CDP
- CDP MPC 1600
- Color Display
- Documentation
- CDP MPC 1600
- COMPAQ
- COMPAQ Portable
- Monochrome Graphics
- Documentation
- DeskPro 286
- DeskPro 386
- COMPAQ Portable
- IBM
- PCJr (Model 4860)
- PC (Model 5150)
- Color Display
- Monochrome Display
- Dual Displays
- VGA Display
- Documentation
- PC XT (Model 5160)
- Color Display
- Enhanced Display
- Monochrome Display
- Documentation
- PC AT (Model 5170)
- Color Display
- VGA Display with CD-ROM
- Documentation
- PC Hard Drives
- PC Video Adapters
- Zenith
- Zenith Z-150
- Color Display
- Documentation
- Zenith Z-150
- AT&T
- Intel 8080
- LED Simulations
- Game of Life
- Lite-Brite
- Ohio Scientific
- Challenger 1P
- Challenger 1P «Array»
- Challenger 1P with Debugger
- Texas Instruments
- TI-42 Calculator
- TI-42
- TI-42 with Diagnostics
- TI-55 Calculator
- TI-55
- TI-57 with Diagnostics
- TI-57 Calculator
- TI-57
- TI-57 with Diagnostics
- TI-57 with Revised ROM
- TI-42 Calculator
- Software
- DEC
- PCjs
- Documents
- Books
- Programming
- Microsoft Programmer’s Library
- Datasheets
- Intel
- Motorola
- Magazines
- BYTE
- DosGetNews()
- Microsoft Languages
- Microsoft Systems Journal
- PC Disk Magazine
- PC Tech Journal
- Manuals
- DEC
- IBM
- Intel
- Microsoft
- Papers
- Research
- Electronic Computer Project
- Tom Estelita
- Research
- Photos
- PCjs
- Library
- Document Archive
- Programming Notes
- Books
Оценка стоимости
Azure Pricing Calculatorздесь
| Тип | Описание | Доступность |
| Windows 10 и Windows 7 | Соответствующая лицензия Windows или Microsoft 365 позволяет использовать рабочие столы и приложения Windows 10 Корпоративная и Windows 7 Корпоративная без дополнительной платы. | Вы можете использовать Windows 10 и Windows 7 с Виртуальным рабочим столом Windows только при наличии одной из следующих лицензий «на пользователя»: * Microsoft 365 E3/E5; * Microsoft 365 A3/A5/Student Use Benefits; * Microsoft 365 F3; * Microsoft 365 бизнес премиум * Windows 10 Корпоративная E3/E5; * Windows 10 для образовательных учреждений A3/A5; * Windows 10 VDA на каждого пользователя. |
| Windows Server | При наличии соответствующей клиентской лицензии служб удаленных рабочих столов вы можете использовать рабочие столы и приложения служб удаленных рабочих столов Windows Server без дополнительной платы. | Вы можете использовать рабочие столы и приложения Windows Server 2012 R2 и более поздних версий только при наличии соответствующей клиентской лицензии служб удаленных рабочих столов «на пользователя» или «на устройство» с действующей программой Software Assurance (SA). |
Windows Desktop Pricing
Виртуализация операционных систем в QEMU
В отличие от VirtualBox и подобных гипервизоров, QEMU не имеет графического интерфейса, работа с ней ведется через командную строку. Команд и параметров для создания и управления виртуальными машинами много, но для начала вам нужно знать хотя бы эти шесть.
• qemu-system — задает архитектуру виртуальной машины.• qemu-img create — создает файл виртуального IMG-диска, на который будет устанавливаться операционная система.• -m — выделяет виртуальной ОС указанный объем оперативной памяти.• -hda — подключает созданный виртуальный диск.• -boot IMG — указывает, что загрузка должна производиться с виртуального диска, вместо IMG следует указать имя IMG-файла.• cdrom — содержит путь к установочному образу ISO, эмулирует дисковод.
Примечание: для запуска операционных систем, работающих в режиме LiveCD достаточно будет трех команд/параметров — первой, третьей и шестой.
Чтобы вам стало всё немного понятнее, установим и запустим с помощью QEMU какую-нибудь операционную систему. Для примера мы выбрали Windows XP, так как она легкая и занимает на диске мало места. QEMU у нас уже установлен, открываем командную строку, переходим в каталог установки и создаем виртуальный жесткий диск следующей командой:
qemu-img.exe create -f raw c.img 5000M
Файл qemu-img.exe в эмуляторе отвечает за создание IMG-образов, с — это название образа, 5000 — размер виртуального диска в мегабайтах. По умолчанию образ будет создан в папке QEMU.
Теперь сформируем следующую команду:
qemu-system-i386w.exe -boot c -m 350 -hda c.img -cdrom «E:\WinXP_SP3.iso»
Исполняемый файл в начале команды отвечает за создание виртуальной машины с архитектурой х86, -boot с ключом -с сообщает, что грузиться она будет с диска, в значение параметра -hda подставляем созданный образ, а в качестве значения параметра –cdrom указываем путь к дистрибутиву Windows.

После выполнения команды появляется окошко QEMU с загрузочным меню, в котором мы выбираем установку на диск.

Далее проходим все этапы установки операционной системы вплоть до локальных настроек и загрузки рабочего стола.



Чтобы запустить закрытую виртуальную машину, выполните команду qemu-system-i386w.exe -hda name.img, где name — название вашего виртуального диска, чтобы удалить ставшую ненужной VM, просто удалите из каталога установки QEMU созданный IMG-образ.
Управлять QEMU можно с помощью клавиатуры и мыши, для переключения между эмулятором и хостовой машиной используйте комбинацию Ctrl+Alt+G. Запущенная с минимальными настройками ОС не будет иметь доступа к аудио- и сетевой карте, не будет также возможности обмена файлами между виртуальной и хостовой системами.
Нельзя сказать, что QEMU лучше или хуже VirtualBox либо VMware, это альтернативное средство виртуализации, имеющие как свои плюсы, так и минусы. QEMU менее удобен, требует знания документации и демонстрирует весьма небольшую производительность. Для ускорения работы в Windows требуется установка и настройка Диспетчера аппаратного ускорения HAXM, в Linux – подключение загружаемого модуля ядра KVM. С другой стороны, инструмент позволяет эмулировать работу устройств на базе разных архитектур, не поддерживаемые популярными гипервизорами.
PCjs Explorer
- Hardware
- Arcade
- DEC
- PDP-10
- KA10
- PDP-10 KA10 Test
- Documentation
- KL10
- Documentation
- KA10
- PDP-11
- PDP-11/20
- PDP-11/20 with BASIC
- PDP-11/20 with Bootstrap Loader
- PDP-11/20 with Boot Monitor
- PDP-11/20 with Front Panel
- PDP-11/45
- PDP-11/45 with 256Kb
- PDP-11/45 with VT100
- PDP-11/70
- PDP-11/70 with 4Mb
- PDP-11/70 «Server Array»
- PDP-11/70 with Boot Monitor
- PDP-11/70 with Front Panel
- PDP-11/70 with CPU Exerciser
- PDP-11/70 with RSTS/E
- PDP-11/70 with RT-11
- PDP-11/70 with XXDP+
- PDP-11/70 with VT100
- Documentation
- Documentation
- PDP-11/20
- VT100
- VT100 Terminal
- Dual VT100 Terminals
- VT100 connected to IBM PC AT
- PDP-10
- IBM PC
- AT&T
- AT&T 6300
- Color Display
- Documentation
- AT&T 6300
- CDP
- CDP MPC 1600
- Color Display
- Documentation
- CDP MPC 1600
- COMPAQ
- COMPAQ Portable
- Monochrome Graphics
- Documentation
- DeskPro 286
- DeskPro 386
- COMPAQ Portable
- IBM
- PCJr (Model 4860)
- PC (Model 5150)
- Color Display
- Monochrome Display
- Dual Displays
- VGA Display
- Documentation
- PC XT (Model 5160)
- Color Display
- Enhanced Display
- Monochrome Display
- Documentation
- PC AT (Model 5170)
- Color Display
- VGA Display with CD-ROM
- Documentation
- PC Hard Drives
- PC Video Adapters
- Zenith
- Zenith Z-150
- Color Display
- Documentation
- Zenith Z-150
- AT&T
- Intel 8080
- LED Simulations
- Game of Life
- Lite-Brite
- Ohio Scientific
- Challenger 1P
- Challenger 1P «Array»
- Challenger 1P with Debugger
- Texas Instruments
- TI-42 Calculator
- TI-42
- TI-42 with Diagnostics
- TI-55 Calculator
- TI-55
- TI-57 with Diagnostics
- TI-57 Calculator
- TI-57
- TI-57 with Diagnostics
- TI-57 with Revised ROM
- TI-42 Calculator
- Software
- DEC
- PCjs
- Documents
- Books
- Programming
- Microsoft Programmer’s Library
- Datasheets
- Intel
- Motorola
- Magazines
- BYTE
- DosGetNews()
- Microsoft Languages
- Microsoft Systems Journal
- PC Disk Magazine
- PC Tech Journal
- Manuals
- DEC
- IBM
- Intel
- Microsoft
- Papers
- Research
- Electronic Computer Project
- Tom Estelita
- Research
- Photos
- PCjs
- Library
- Document Archive
- Programming Notes
- Books
Для чего можно использовать «виртуалки»
- для тестов или обучения в других операционных системах (Windows, Linux, MacOS и т.д.)
- разработка программ для других ОС
- работать в разных местах с одинаковым программным окружением
- для анонимности
Думаю, можно ещё придумать способы применения, это первое что пришло мне в голову. Например, на бывшей работе я не мог поставить нужные мне программы на компьютер, хоть и был админом. Это было связано с безопасностью и лицензионными вопросами. Тогда я установил себе виртуальную машину, поставил на неё Windows и все нужные мне программы, и в ней работал. Вечером записывал образ на внешний жёсткий диск и уносил с собой домой.
К тому же, рабочий интернет был сильно урезан по скорости, но был доступ к другому провайдеру. Я поставил вторую сетевую карту и настроил её в виртуальной машине. Т.е., в «обычной» винде на неё даже не стояли драйвера, а в виртуальной среде через неё работал быстрый интернет.
Виртуальный жёсткий диск хранится в одном файле и его данные можно шифровать. Т.е., если кто-то приходит к вам без спроса, то можно просто закрыть виртуальную операционную систему и кроме браузера и Excel’а на вашем компьютере ничего найти не получится
PCjs Explorer
- Hardware
- Arcade
- DEC
- PDP-10
- KA10
- PDP-10 KA10 Test
- Documentation
- KL10
- Documentation
- KA10
- PDP-11
- PDP-11/20
- PDP-11/20 with BASIC
- PDP-11/20 with Bootstrap Loader
- PDP-11/20 with Boot Monitor
- PDP-11/20 with Front Panel
- PDP-11/45
- PDP-11/45 with 256Kb
- PDP-11/45 with VT100
- PDP-11/70
- PDP-11/70 with 4Mb
- PDP-11/70 «Server Array»
- PDP-11/70 with Boot Monitor
- PDP-11/70 with Front Panel
- PDP-11/70 with CPU Exerciser
- PDP-11/70 with RSTS/E
- PDP-11/70 with RT-11
- PDP-11/70 with XXDP+
- PDP-11/70 with VT100
- Documentation
- Documentation
- PDP-11/20
- VT100
- VT100 Terminal
- Dual VT100 Terminals
- VT100 connected to IBM PC AT
- PDP-10
- IBM PC
- AT&T
- AT&T 6300
- Color Display
- Documentation
- AT&T 6300
- CDP
- CDP MPC 1600
- Color Display
- Documentation
- CDP MPC 1600
- COMPAQ
- COMPAQ Portable
- Monochrome Graphics
- Documentation
- DeskPro 286
- DeskPro 386
- COMPAQ Portable
- IBM
- PCJr (Model 4860)
- PC (Model 5150)
- Color Display
- Monochrome Display
- Dual Displays
- VGA Display
- Documentation
- PC XT (Model 5160)
- Color Display
- Enhanced Display
- Monochrome Display
- Documentation
- PC AT (Model 5170)
- Color Display
- VGA Display with CD-ROM
- Documentation
- PC Hard Drives
- PC Video Adapters
- Zenith
- Zenith Z-150
- Color Display
- Documentation
- Zenith Z-150
- AT&T
- Intel 8080
- LED Simulations
- Game of Life
- Lite-Brite
- Ohio Scientific
- Challenger 1P
- Challenger 1P «Array»
- Challenger 1P with Debugger
- Texas Instruments
- TI-42 Calculator
- TI-42
- TI-42 with Diagnostics
- TI-55 Calculator
- TI-55
- TI-57 with Diagnostics
- TI-57 Calculator
- TI-57
- TI-57 with Diagnostics
- TI-57 with Revised ROM
- TI-42 Calculator
- Software
- DEC
- PCjs
- Documents
- Books
- Programming
- Microsoft Programmer’s Library
- Datasheets
- Intel
- Motorola
- Magazines
- BYTE
- DosGetNews()
- Microsoft Languages
- Microsoft Systems Journal
- PC Disk Magazine
- PC Tech Journal
- Manuals
- DEC
- IBM
- Intel
- Microsoft
- Papers
- Research
- Electronic Computer Project
- Tom Estelita
- Research
- Photos
- PCjs
- Library
- Document Archive
- Programming Notes
- Books
Kernels below 1MB
It has been suggested that you map your kernel to a ‘high’ logical address (e.g. 0xC0000000) to avoid VM86 tasks interfering with it. This is especially important with large kernels which leave no room for VM86 code below 1MB, or when larger programs are expected to run within the VM86 box.
If all that is needed is a BIOS interrupt wrapper, then the following should work:
- ensure that your 16bits code is on a separate page from any 32 bits code
- enable paging
- make kernel pages unwritable (and unreadable ?) for DPL3 and allow user-access only to those pages that contains your 16 bits code and pages that contains BIOS code or data.
PCjs Blog
Windows 95 In Your Web Browser
Today, the last serious bug preventing a successful boot of Windows 95 was fixed. I won’t bore you with
the details.
OK, I will: three arithmetic instructions (specifically, AND, OR and XOR) include a variation that
converts an immediate signed byte into a signed word. Those variations were failing to truncate the result when
a 16-bit operand size was in effect, and if the destination was a register, the upper 16 bits of that register
could become corrupted.
The Windows 95 Test Machine hard disk has been updated
with a complete set of Windows 95 files from a “Compact” installation, and first boot has finished, so instead
of the initial “Getting ready to run Windows 95 for the first time…” splash screen, you’ll see the normal
Windows 95 startup screen.
The machine is still a bit finicky. It easily gets confused about the state of its shift keys if you switch away
from the browser and then back again. And Explorer windows don’t open in the correct view; for example, both
My Computer and Recycle Bin open the same (incorrect) view. In short, there are still some serious bugs
to be resolved, but booting has been achieved.
The adventure continues.
Waiting for machine «deskpro386» to load….
Прочее
Раз в браузере работает даже Windows 98, значит, нет никаких преград, которые бы помешали запихнуть туда все, что появилось до него. И это активно делают. В наш небольшой обзор не вошли эмулятор NES с парой десятков приложенных игр, эмулятор «Радио-86РК» и многие другие. Неплохой список ты можешь найти на сайте Фредерика Кембуса и экспериментировать самостоятельно. Там, в частности, есть ссылки на эмуляторы совсем уж старинных машин вроде Z1, UNIVAC и даже разностной машины Бэббиджа.
Подробнее о том, как создают браузерные эмуляторы, читай в статье «Байт из других миров. Как ретрокомпьютеры эмулируют на JavaScript».
Windows 1.01
Эта версия Windows вышла в ноябре 1985 года. Именно она стала первой ОС в свободном доступе. Кроме того, это была первая система Билла Гейтса. К слову, это всё происходило ещё до того, как появилась глобальная сеть Интернет.
По существу эта ОС была графической оболочкой для MS-DOS. Windows 1.01 запускалась непосредственно в MS-DOS как программа. В ней (и в эмуляторе) были доступны приложения Calculator, Calendar, Clipboard Viewer, Clock, Notepad, Paint, Reversi, Cardfile, Terminal и Write.
«Под капотом» у Windows 1.01 были собственные драйверы для видео-карты, мыши, клавиатуры, принтера и последовательного порта. Цветность ОС зависела от графического адаптера, поэтому есть не только цветной, но и чёрно-белый эмулятор Windows 1.01.
Welcome to PCjs
PCjs uses JavaScript to recreate the IBM PC experience, using original ROMs, CPUs running at their original speeds,
and early IBM video cards and monitors, including the classic green monochrome MDA monitor and the venerable “flickery” CGA monitor.
Over time, PCjs emulations have expanded to include selected PC Compatibles and more
classic machines, such as Minicomputers, Programmable Calculators, Terminals,
and Arcade Games.
To learn more, visit the PCjs open-source project on GitHub.
PCjs Highlights
A few hand-picked PCjs Machines are highlighted below, featuring hardware and/or software that may be considered historically
interesting or unusual. You can browse more hardware and software combinations, and a small collection of related documentation,
using the .
Entering V86
The CPU is executing in virtual 86 mode when the VM bit (bit 17) is set in the EFLAGS register. If you want to enter virtual 86 mode you must set this bit to 1.
A way of modifying the EFLAG register is to use the pushf and popf instructions. These instructions repectively push and pop the eflags register on the stack. So you could push the register, modify it on the stack and pop it. But the popf instruction don’t modify bits 16 and 17 in the eflags register.
The only way to set the VM flag is to use the iret instruction. This instruction is normaly use to return from an interrupt. When executing a iret the CPU pop eip, cs, eflags, esp, ss from the stack and continue executing at the new eip.
; you should declare this function as : ; extern void enter_v86(uint32_t ss, uint32_t esp, uint32_t cs, uint32_t eip); enter_v86: mov epb, esp ; save stack pointer push dword ; ss push dword ; esp pushfd ; eflags or dword , (1 << 17) ; set VM flags push dword ; cs push dword ; eip iret
PCjs Explorer
- Hardware
- Arcade
- DEC
- PDP-10
- KA10
- PDP-10 KA10 Test
- Documentation
- KL10
- Documentation
- KA10
- PDP-11
- PDP-11/20
- PDP-11/20 with BASIC
- PDP-11/20 with Bootstrap Loader
- PDP-11/20 with Boot Monitor
- PDP-11/20 with Front Panel
- PDP-11/45
- PDP-11/45 with 256Kb
- PDP-11/45 with VT100
- PDP-11/70
- PDP-11/70 with 4Mb
- PDP-11/70 «Server Array»
- PDP-11/70 with Boot Monitor
- PDP-11/70 with Front Panel
- PDP-11/70 with CPU Exerciser
- PDP-11/70 with RSTS/E
- PDP-11/70 with RT-11
- PDP-11/70 with XXDP+
- PDP-11/70 with VT100
- Documentation
- Documentation
- PDP-11/20
- VT100
- VT100 Terminal
- Dual VT100 Terminals
- VT100 connected to IBM PC AT
- PDP-10
- IBM PC
- AT&T
- AT&T 6300
- Color Display
- Documentation
- AT&T 6300
- CDP
- CDP MPC 1600
- Color Display
- Documentation
- CDP MPC 1600
- COMPAQ
- COMPAQ Portable
- Monochrome Graphics
- Documentation
- DeskPro 286
- DeskPro 386
- COMPAQ Portable
- IBM
- PCJr (Model 4860)
- PC (Model 5150)
- Color Display
- Monochrome Display
- Dual Displays
- VGA Display
- Documentation
- PC XT (Model 5160)
- Color Display
- Enhanced Display
- Monochrome Display
- Documentation
- PC AT (Model 5170)
- Color Display
- VGA Display with CD-ROM
- Documentation
- PC Hard Drives
- PC Video Adapters
- Zenith
- Zenith Z-150
- Color Display
- Documentation
- Zenith Z-150
- AT&T
- Intel 8080
- LED Simulations
- Game of Life
- Lite-Brite
- Ohio Scientific
- Challenger 1P
- Challenger 1P «Array»
- Challenger 1P with Debugger
- Texas Instruments
- TI-42 Calculator
- TI-42
- TI-42 with Diagnostics
- TI-55 Calculator
- TI-55
- TI-57 with Diagnostics
- TI-57 Calculator
- TI-57
- TI-57 with Diagnostics
- TI-57 with Revised ROM
- TI-42 Calculator
- Software
- DEC
- PCjs
- Documents
- Books
- Programming
- Microsoft Programmer’s Library
- Datasheets
- Intel
- Motorola
- Magazines
- BYTE
- DosGetNews()
- Microsoft Languages
- Microsoft Systems Journal
- PC Disk Magazine
- PC Tech Journal
- Manuals
- DEC
- IBM
- Intel
- Microsoft
- Papers
- Research
- Electronic Computer Project
- Tom Estelita
- Research
- Photos
- PCjs
- Library
- Document Archive
- Programming Notes
- Books
Virtual x86
Шумиха вокруг браузерных эмуляторов начала набирать обороты в 2011 году, когда Фабрис Беллар запустил проект JSLinux — эмулятор ПК с Linux, который работает на его домашней страничке. С тех пор идею Беллара неплохо развили: проект Virtual x86 предлагает на выбор список из семи дистрибутивов UNIX и Linux, а также Windows 1.01, Windows 95 и 98, Kolibri OS и Oberon. В отличие от PCjs, этот эмулятор не пытается стартовать Windows с нуля и ограничивается загрузкой образа оперативной памяти. Даже для Windows 98 это всего 12 Мбайт, так что процесс идет быстро. Увы, все операционки максимально урезаны и не имеют подключения к интернету.
WVD Fall 2019 Release (GA) и Spring 2020 Update (Preview)
Spring 2020 UpdateSLA 99.9%SLA 99.95%
- This content applies to the Fall 2019 release that doesn’t support Azure Resource Manager Windows Virtual Desktop objects.
- This content applies to the Spring 2020 update with Azure Resource Manager Windows Virtual Desktop objects.
- Управление жизненным циклом объектов сервиса через Azure Portal без необходимости развёртывания дополнительного веб приложения и использования отдельного набора PowerShell команд.
- Возможность назначения приложений на группы пользователей
- Использование Azure RBAC для управления ролями, необходимыми для использования сервиса, а не .
- Встроенная возможность масштабирования, без необходимости использования внешнего приложения на основе Logic Apps