Что такое код icap_delete_calendar


Содержание

Что такое код icap_delete_calendar

Каждому «нормальному» типу воздушного судна (ВС) присваивается код ИКАО и код ИАТА.

Код ИКАО состоит из 4 знаков (букв латинского алфавита и цифр). Код ИКАО для ВС в первую очередь используется при планировании полетов — указывается в 9 поле флайтплана (FPL).

Код ИАТА состоит из 3 знаков (букв латинского алфавита и цифр). В странах СНГ параллельно действует внутренняя система кодов типов воздушных судов, в которой коды состоят из 3 знаков — букв русского алфавита и цифр.

Кодировка воздушных судов по ИКАО и ИАТА

Воздушное судно (Самолет) Тип Код IATA Код ICAO
Airbus A300 Пассажирский AB3 A30B
Airbus A300B2/B4/C4 Пассажирский AB4 A30B
Airbus A300-600 Пассажирский AB6 A306
Airbus A300-600ST Beluga Грузовой ABB A3ST
Airbus A300 Грузовой ABF A30B
Airbus A300C4/F4 Грузовой ABX A30B
Airbus A300-600F Грузовой ABY A306
Airbus A310 Пассажирский 310 A310
Airbus A310-200 Пассажирский 312 A310
Airbus A310-300 Пассажирский 313 A310
Airbus A310C/F Грузовой 31F A310
Airbus A310-200C/F Грузовой 31X A310
Airbus A310-300C/F Грузовой 31Y A310
Airbus A318/319/320/321 Пассажирский 32S n/a
Airbus A318 Пассажирский 318 A318
Airbus A319 Пассажирский 319 A319
Airbus A320-100/-200 Пассажирский 320 A320
Airbus A321-100/-200 Пассажирский 321 A321
Airbus A330 Пассажирский 330 A330
Airbus A330-200 Пассажирский 332 A332
Airbus A330-300 Пассажирский 333 A333
Airbus A340 Пассажирский 340 A340
Airbus A340-200 Пассажирский 342 A342
Airbus A340-300 Пассажирский 343 A343
Airbus A340-500 Пассажирский 345 A345
Airbus A340-600 Пассажирский 346 A346
Airbus A380 Пассажирский 380 n/a
Airbus A380F Грузовой 38F n/a
Antonov AN-12 (Антонов АН-12) Пассажирский ANF AN12
Antonov AN-24 (Антонов АН-24) Пассажирский AN4 AN24
Antonov AN-26/AN-30/AN-32 (Антонов АН-26/АН-30/АН-32) Пассажирский AN6 n/a
Antonov AN-26 (Антонов АН-26) Пассажирский A26 AN26
Antonov AN-30 (Антонов АН-30) Пассажирский A30 AN30
Antonov AN-32 (Антонов АН-32) Пассажирский A32 AN32
Antonov AN-72/AN-74 (Антонов АН-72/АН-74) Пассажирский AN7 AN72
Antonov AN-124 Ruslan (Антонов АН-124 Руслан) Грузовой A4F A124
Antonov AN-140 (Антонов АН-140) Пассажирский A40 A140
Aerospatiale/Alenia ATR 42/72 Пассажирский ATR n/a
Aerospatiale/Alenia ATR 42-300/320 Пассажирский AT4 AT43
Aerospatiale/Alenia ATR 42-500 Пассажирский AT5 AT45
Aerospatiale/Alenia ATR 72 Пассажирский AT7 AT72
Boeing 707-100 Пассажирский 701 B701
Boeing 707-300 Пассажирский 703 B703
Boeing 707/720 Пассажирский 707 n/a
Boeing 707 Грузовой 70F B703
Boeing 707 Грузо-пассажирский 70M B703
Boeing 717 Пассажирский 717 B712
Boeing 727 Пассажирский 727 n/a
Boeing 727-100 Пассажирский 721 B721
Boeing 727-200 Пассажирский 722 B722
Boeing 727-100 Смешанный 72B B721
Boeing 727-200 Смешанный 72C B722
Boeing 727-200 Грузо-пассажирский 72M n/a
Boeing 727-200 Модифицированный пассажирский 72S B722
Boeing 727-100 Грузовой 72X B721
Boeing 727-200 Грузовой 72Y B722
Boeing 737 Пассажирский 737 n/a
Boeing 737-100 Пассажирский 731 B731
Boeing 737-200 Пассажирский 732 B732
Boeing 737-300 Пассажирский 733 B733
Boeing 737-400 Пассажирский 734 B734
Boeing 737-500 Пассажирский 735 B735
Boeing 737-600 Пассажирский 736 B736
Boeing 737-700 Пассажирский 73G B737
Boeing 737-700 (с винглетами) Пассажирский 73W B737
Boeing 737-800 Пассажирский 738 B738
Boeing 737-800 (с винглетами) Пассажирский 73H B738
Boeing 737-900 Пассажирский 739 B739
Boeing 737-200 Грузо-пассажирский 73M B732
Boeing 737 Грузовой 73F n/a
Boeing 737-200 Грузовой 73X B732
Boeing 737-300 Грузовой 73Y B733
Boeing 747 Пассажирский 747 n/a
Boeing 747-100 Пассажирский 741 B741
Boeing 747-200 Пассажирский 742 B742
Boeing 747-300 Пассажирский 743 B743
Boeing 747-400 Пассажирский 744 B744
Boeing 747-400 Domestic Пассажирский 74J B744
Boeing 747SP Пассажирский 74L B74S
Boeing 747SR Пассажирский 74R B74R
Boeing 747 Грузо-пассажирский 74M n/a
Boeing 747-200 Грузо-пассажирский 74C B742
Boeing 747-300 Грузо-пассажирский 74D B743
Boeing 747-400 Грузо-пассажирский 74E B744
Boeing 747 Грузовой 74F n/a
Boeing 747-100 Грузовой 74T B741
Boeing 747-200 Грузовой 74X B742
Boeing 747-300/747-200SUD Грузовой 74U B743
Boeing 747-400 Грузовой 74Y B744
Boeing 747SR Грузовой 74V B74R
Boeing 747-400LCF Dreamlifter Грузовой BLCF
Boeing 747SCA Shuttle Carrier Грузовой BSCA
Boeing 757 Пассажирский 757 n/a
Boeing 757-200 Пассажирский 752 B752
Boeing 757-300 Пассажирский 753 B753
Boeing 757 Смешанный 75M B752
Boeing 757 Грузовой 75F B752
Boeing 767 Пассажирский 767 n/a
Boeing 767-200 Пассажирский 762 B762
Boeing 767-300 Пассажирский 763 B763
Boeing 767-400 Пассажирский 764 B764
Boeing 767 Грузовой 76F n/a
Boeing 767-200 Грузовой 76X B762
Boeing 767-300 Грузовой 76Y B763
Boeing 777 Пассажирский 777 n/a
Boeing 777-200 Пассажирский 772 B772
Boeing 777-300 Пассажирский 773 B773
Boeing 777-200LR Пассажирский 77L B77L
Boeing 777-300ER Пассажирский 77W B77W
Embraer 170/190 Пассажирский EMJ n/a
Embraer 170 Пассажирский E70 E170
Embraer 190 Пассажирский E90 E190
Embraer EMB 120 Brasilia Пассажирский EM2 E120
Embraer EMB 110 Bandeirnate Пассажирский EMB E110
Embraer RJ 135/140/145 Пассажирский ERJ n/a
Embraer RJ 135 Пассажирский ER3 E135
Embraer RJ 140 Пассажирский ERD n/a
Embraer RJ 145 Amazon Пассажирский ER4 E145
Fokker F50 Пассажирский F50 F50
Fokker F70 Пассажирский F70 F70
Fokker F100 Пассажирский 100 F100
Fokker F.28 Fellowship Пассажирский F28 F28
Fokker F.28 Fellowship 1000 Пассажирский F21 F28
Fokker F.28 Fellowship 2000 Пассажирский F22 F28
Fokker F.28 Fellowship 3000 Пассажирский F23 F28
Fokker F.28 Fellowship 4000 Пассажирский F24 F28
Fokker F.27 Fellowship Fairchild Пассажирский F27 F27
Ilyushin IL114 (Ильюшин ИЛ114) Пассажирский I14 I114
Ilyushin IL18 (Ильюшин ИЛ18) Пассажирский IL8 IL18
Ilyushin IL62 (Ильюшин ИЛ62) Пассажирский IL6 IL62
Ilyushin IL76 (Ильюшин ИЛ76) Грузовой IL7 IL76
Ilyushin IL86 (Ильюшин ИЛ86) Пассажирский ILW IL86
Ilyushin IL96 (Ильюшин ИЛ96) Пассажирский IL9 IL96
Ilyushin IL96-300 (Ильюшин ИЛ96-300) Пассажирский I93 IL96
Ilyushin IL96M (Ильюшин ИЛ96М) Пассажирский I9M IL96
Ilyushin IL96 Cargo (Ильюшин ИЛ96 Cargo) Грузовой I9F IL96
Ilyushin IL96-300 Cargo (Ильюшин ИЛ96-300 Cargo) Грузовой I9X IL96
Ilyushin IL96T (Ильюшин ИЛ96Т) Грузовой I9Y IL96
McDonnell Douglas DC-10 Пассажирский D10 DC10
McDonnell Douglas DC-10-10/15 Пассажирский D11 DC10
McDonnell Douglas DC-10-30/40 Пассажирский D1C DC10
McDonnell Douglas DC-10 Грузовой D1F DC10
McDonnell Douglas DC-10-10 Грузовой D1X DC10
McDonnell Douglas DC-10-30/40 Грузовой D1Y DC10
McDonnell Douglas DC-9 Пассажирский DC9 DC9
McDonnell Douglas DC-9-10 Пассажирский D91 DC91
McDonnell Douglas DC-9-20 Пассажирский D92 DC92
McDonnell Douglas DC-9-30 Пассажирский D93 DC93
McDonnell Douglas DC-9-40 Пассажирский D94 DC94
McDonnell Douglas DC-9-50 Пассажирский D95 DC95
McDonnell Douglas MD11 Пассажирский M11 MD11
McDonnell Douglas MD11 Смешанный M1M MD11
McDonnell Douglas MD11 Грузовой M1F MD11
McDonnell Douglas MD80 Пассажирский M80 MD80
McDonnell Douglas MD81 Пассажирский M81 MD81
McDonnell Douglas MD82 Пассажирский M82 MD82
McDonnell Douglas MD83 Пассажирский M83 MD83
McDonnell Douglas MD87 Пассажирский M87 MD87
McDonnell Douglas MD88 Пассажирский M88 MD88
McDonnell Douglas MD90 Пассажирский M90 MD90
Tupolev Tu-134 (Туполев Ту-134) Пассажирский TU3 T134
Tupolev Tu-154 (Туполев Ту-154) Пассажирский TU5 T154
Tupolev Tu-204/Tu-214 (Туполев Ту-204/Ту-214) Пассажирский T20 T204

Коды ИКАО и ИАТА аэропортов:

Код ИКАО аэропорта также состоит из 4 букв, причем по первым двум буквам можно приблизительно определить его местоположение, т.к. первые буквы присваиваются аэропорту в зависимости от региона, где он расположен:

Первая буква указывает на континент, в котором находится аэропорт. Вторая буква — обозначает страну (или несколько стран). Третья буква может определять FIR или зональный центр ОВД, к которому относится данный аэропорт. И только четвертая буква индивидуальная для аэропорта, она присваивается по порядку алфавита (либо, как руководство «выпросит» :).

Коды ИАТА никак не связаны с географическим положением аэропортов, они присваиваются обычно таким образом, чтобы получилось наиболее созвучно и ассоциативно с названием города, где расположен аэропорт, например:

  • FRA — Франкфурт на Майне;
  • TAS — Ташкент;
  • VKO — Внуково (Москва);
  • RMI — Римини;
  • ALG — Алжир;
  • NDJ — Нджамена;
  • PEK — Пекин;
  • . и др.

Исключения составляют только американские и Канадские аэропорты, у которых (практически у всех, кроме некоторых избранных) код ИАТА полностью соответствует последним трем буквам кода ИКАО, например:

  • KDEN — DEN — Денвер;
  • KIAH — IAH — Хьюстон;
  • KACY — ACY — Атлантик Сити;
  • CYYC — YYC — Калгари;
  • CYQX — YQX — Гандер;
  • CYVR — YVR — Ванкувер;
  • . и др.

Интересные факты:

— Город Уфа имеет внутренний код УФА и трехбуквенный код ИАТА — UFA. Это единственный случай, когда в обеих системах код города совпадает с его названием.
— Город Ош имеет внутренний код ОШШ. Единственный случай, когда код города длиннее, чем его название.
— Город Копенгаген имеет код ИАТА CPH (английское написание). Город Саранск имеет внутренний код СРН (русское написание). Коды совпадают по начертанию, что иногда приводит к путанице.

Использование Squ > 0

Администрирование

Статья была опубликована 1 февраля 2010 года в 00:00, а последний раз правилась 1 февраля 2010 года в 10:46.

Я принимал участие в бета-тестировании icap-демона от Dr.Web, остался им доволен (несмотря на некоторые проблемы, не решенные на этот момент), но финансовая сторона вопроса меня сильно ограничивает, поэтому в очередной раз мой выбор пал на ClamAV.

Использование Squid с помощью ClamAV и c-icap для проверки web-трафика на вирусы

В предыдущей статье («Использование ClamAV для проверки ресурсов Samba 3.0.x в Linux») я описал настройку совместной работы ClamAV и Samba для прозрачной проверки загружаемых файлов. Но Samba — не единственный источник потенциальной вирусной угрозы: обычный web-серфинг представляет собой намного бОльшую угрозу, поскольку является внешним источником опасности (Samba же — внутренний источник). В антивирусной защите следует прежде всего контролировать (проверять) всю поступающую извне информацию, один из источников которой — интернет.

Актуальность защиты Samba-ресурсов (те, кто знаком с Win32.Parite.2, меня прекрасно поймут) также достаточно высока. В этой статье я обратил внимание на проверку web-трафика, проходящего через Squid на вирусы, используя ClamAV и c-icap (с протоколом ICAP можно более подробно ознакомиться на сайте www.i-cap.org). Это наиболее верный способ антивирусной проверки web-трафика. Редиректоры в Squid тоже можно использовать, но при больших нагрузках редиректоры сильно ограничены и не позволяют распределить нагрузку. Кроме того, редиректоры крайне ограничены и в возможности обратного взаимодействия с пользователем.

Я принимал участие в бета-тестировании icap-демона от Dr.Web, остался им доволен (несмотря на некоторые проблемы, не решенные на этот момент), но финансовая сторона вопроса меня сильно ограничивает, поэтому в очередной раз мой выбор пал на ClamAV.

Получение необходимых файлов

Для дальнейших действий понадобится:

  • Исходные коды Squid Proxy Server с поддержкой ICAP. Одну из возможных вариаций можно получить со страницы c-icap — http://sourceforge.net/projects/c-icap, последней на этот момент из этого источника оказалась версия 2.5.STABLE11-20050927 (я использовал версию именно от разработчиков c-icap). Также можно получить Squid с поддержкой ICAP от DrюWeb на download.drweb.com. Первый источник отличен от второго тем, что в первом не исправлена проблема с обрывом закачки клиентом (т.е. прокси-сервер в любом случае скачивает файл до конца, что ведет к расходу трафика).
  • c-icap — демон ICAP — http://sourceforge.net/projects/c-icap, последняя версия на данный момент — c-icap-220505.
  • Последняя версия ClamAV, которую нам предоставляют разработчики этого свободного (GNU GPL) антивируса — www.clamav.net.

Установка и настройка ClamAV

О процессе установки и настройки ClamAV можно более подробно узнать из предыдущей статьи — «Использование ClamAV для проверки ресурсов Samba 3.0.x в Linux (на примере Slackware Linux 10.1)».

Для работы не понадобится работающий демон clamd, так что можете смело пропустить его конфигурирование (clamd.conf), если он не используется или не будет использоваться.

c-icap работает со своим антивирусным модулем, основанным на ClamAV, поэтому нам понадобится наличие в системе libclamav (достаточно установленного обычным способом ClamAV). В случае отсутствия в системе libclamav c-icap просто не соберется.

Установка и настройки c-icap с поддержкой ClamAV

Распакуем архив c_icap-220505.tar.gz в /usr/src (или туда, где у вас лежат исходные коды). Скрипт configure в каталоге с исходниками c-icap следует запускать со следующими параметрами:

Или, например, так, если —prefix=/opt/clamav для configure от ClamAV:

Демон c_icap собирается статически. —prefix также можно указать по вкусу. Можно собирать и сам демон:

Необходимо проверить, все ли верно собралось:

И непосредственно установить c-icap в систему (в тот каталог, который был указан через —prefix):

Теперь необходимо исправить некоторые настройки в c-icap.conf. В случае нашего —prefix=/usr/local/c_icap не трудно догадаться, что конфиги лежат в /usr/local/c_icap/etc.

Рекомендую обратить внимание на следующие параметры:

  • User лучше поставить nobody, поскольку wwwrun, указанный по умолчанию, скорее всего отсутствует в системе.
  • TmpDir /tmp — ваш каталог временных файлов.
  • Далее необходимо настроить ACL — Access Control Lists — список IP-адресов, которые могут использовать данный ICAP-демон:

Так можно определить, откуда разрешен доступ к нашему сервису icap, а откуда — нет. Заметьте, что в данных ACL определяется не список непосредственных клиентов прокси-сервера, а именно список клиентов демона ICAP, т.е. список прокси-серверов (их IP-адреса).

Я составил ACL для случая работы демона ICAP и Squid на одном хосте.


  • srv_clamav.ClamAvTmpDir /tmp — временный каталог для модуля ClamAV.
  • srv_clamav.VirSaveDir /var/infected/ — каталог карантина. Другие аналогичные лучше закомментировать!
  • srv_clamav.VirHTTPServer «DUMMY».

Можно попробовать и так:

— URL скрипта на локальном web-сервере, ссылка на который будет сообщена пользователю в уведомлении о попытке доступа к инфицированному объекту.

Необходимо некоторое пояснение: опция srv_clamav.VirSaveDir может быть задана несколько раз — таким образом, что инфицированные файлы будут сохраняться в множестве мест. Если задать одним из карантинных каталогов корень web-сервера, то можно дать пользователям возможность осознанно скачать инфицированный файл. Остается только воспользоваться файлом contrib/get_file.pl в исходных кодах c-icap.

У меня необходимости в этом не было.

Создайте каталог /var/infected и сделайте его владельцем пользователя nobody (chown nobody /var/infected).

Осуществим пробный запуск c-icap:

Если сообщений об ошибках нет, то стоит убедиться и в том, что c-icap прослушивает нужный сокет:

Если видим нечто похожее на следующую строку, все в порядке:

Оставим демона c-icap работать и перейдем к дальнейшим настройкам.

Установка и настройка прокси-сервера Squid

Распакуем в /usr/src полученный ранее Squid:

Перейдем в каталог с исходниками Squid и запустим configure так:

До запуска configure в Squid от Dr.Web необходимо запустить bootstrap.sh, находящийся в корневом каталоге исходных кодов Squid. Если вы используете Squid от Dr.Web, то обязательно прочитайте документацию из пакета drweb-icapd!

Имеем установленный Squid в /usr/local/squid. Теперь изменим настройки в squid.conf.

Необходимо найти пару строк:

Раскомментировать их и установить собственное значение, вместо 192.168.1.0/24 192.168.2.0/24 (в моем случае пользователи прокси-серверs находились в сети 172.16.194.0/24):

Перейдите в /usr/local/squid/var, создайте каталог cache. Теперь там же выполните команду:

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

Осталось создать структуру каталогов для кэширования. Перейдите в /usr/local/squid/sbin и выполните:

По умолчанию параметр cache_dir в squid.conf задан так:

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

На данном этапе мы имеем рабочий Squid, но без поддержки ICAP, т.е. обычной кэширующий прокси-сервер.

Более подробно о настройке Squid можно узнать на squid.opennet.ru.

Добавим поддержку ICAP…

Добавление поддержки ICAP в squid.conf

Найдите по слову icap_enable и выставите значение icap_enable on. Найдите по слову icap_preview_enable и выставите значение icap_preview_enable on. Найдите по слову icap_preview_size и выставите значение icap_preview_size 128. Найдите по слову icap_send_client_ip и выставите значение icap_send_client_ip on. Найдите по слову icap_service и добавьте пару таких icap-сервисов:

Найдите по слову icap_class и добавьте такой icap-класс:

Найдите по слову icap_access и добавьте следующие права доступа:

Суммарно для поддержки ICAP в squid.conf должны быть добавлены следующие строки:

На этом минимальное конфигурирование прокси-сервера закончено.

Если все верно, то сообщений в консоли быть не должно.

Добавьте прокси-сервер в вашем браузере (если проксирование не прозрачное) и откройте страницу http://www.eicar.com/anti_virus_test_file.htm.

Попытайтесь скачать файл eicar.com. Если вы видите подобное сообщение: «A VIRUS FOUND …» — значит все верно работает.

Обратите внимание, что кэш прокси-сервера не должен содержать инфицированных объектов! Поэтому перед началом использования Squid совместно с c-icap кэш лучше очистить. Так же учтите, что браузер имеет свой кэш.

Обновление антивирусных баз ClamAV

Добавьте freshclam в crontab. Реинициализация баз c-icap производится каждые srv_clamav.VirUpdateTime минут — этот параметр можно указать в c-icap.conf (по умолчанию, 15 минут).

Файл c-icap.magic и типы проверяемых объектов

Данный файл может быть найден в том же каталоге, что и c-icap.conf. Он представляет собой описание форматов различных групп типов файлов (TEXT, DATA, EXECUTABLE, ARCHIVE, GRAPHICS, STREAM, DOCUMENT — определенные группы в c-icap.magic по умолчанию). Антивирусная проверка строится по типам файлов, проходящих через проски-сервер. Некоторые типы, например, можно исключить или добавить свои типы.

Формат записи строки, для определения файла по его magic-числу (последовательности):

Offset — смещение, с которого начинается Magic-последовательность. Type и Group — тип и группа, к которой следует относить файл с данной magic-последовательностью. Desc — краткое описание, технической нагрузки не несет.

Для примера загляните в c-icap.magic.

Обратите также внимание, что в c-icap.conf параметр srv_clamav.ScanFileTypes определяет группы и типы файлов (можно прописывать и группы, и типы), которые следует проверять. Что определяет srv_clamav.VirScanFileTypes, я окончательно не понял, но подозреваю, что принудительно проверяемые группы файлов (EXECUTABLE и ARCHIVE по умолчанию).


В моем конфиге c-icap вышеописанные параметры выглядят так:

    Squid выдает сообщение ICAP protocol error, страницы не открываются. Проверьте, верно ли вы указали ACL в c-icap.conf, в данном ACL должен быть разрешен доступ не для пользователей, а для прокси-сервера.

Попробуйте завершить процессы Squid и c-icap, а затем запустить их в следующем порядке: сначала c-icap, а затем Squid.

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

Если проблема так и не решилась, то попробуйте запустить Squid с параметрами -d 10 -N -X:

И c-icap c параметрами -N -d 10 -D: Увидите подробную информацию, по которой можно разобраться, что и где не так.
Squid выдает сообщение ICAP protocol error только на некоторых страницах (на одних и тех же).

Проверьте, есть ли у c-icap права на запись в карантинный каталог (а еще лучше сделать владельцем всех карантинных каталогов пользователя под которым запущен c-icap).

Попробуйте запустить c-icap и Squid в режиме отладки (как это сделать, сказано выше).

Также неплохо посмотреть логи c-icap.

Попробуйте снова загрузить объект, на котором возникает ошибка. Возможно вы узнаете намного больше о проблеме и сможете ее решить.

Теперь и web-серфинг защищен от вирусов и прочих вредоносных кодов (в том числе и некоторые эксплоиты для MS IE). Как корпоративное решение для сервера с большой нагрузкой этот метод не опробован, но, думаю, может быть реализован (хотя бы потому, что нагрузку можно распределить на несколько ICAP-серверов). Как решение для небольшой организации — вполне актуально.

И помните, что разработчики пишут на своем сайте:

  • >The Antivirus ClamAV service
  • >This service is under development.

О некоторых принципах работы протокола ICAP на русском можно узнать из руководства DrWeb-ICAP — одна из успешных коммерческих реализаций протокола ICAP. Можно прочесть и RFC 3507.

Java и работа с iCalendar

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

Подготовка календаря
Подготовка Java

Следующим этапом стала загрузка библиотеки и подключение ее к проекту. Распаковал и указал среде разработки папку с файлами библиотек *.jar. Также в папку с проектом был скопирован мой скачанный файл календаря. Все готово к написанию кода!

Загрузка календаря

Существует два варианта загрузки календаря — из файла и парсинг строки с содержимым календаря. Мы выберем первый способ (второй существенно не отличается от него).

Вывод всех мероприятий

Давайте теперь попробуем вывести куда — нибудь (ну хотя бы в консоль) все мероприятия из нашего календаря.

Стоит обратить внимание на первую строчку, а именно Component.VEVENT. Так мы указываем, что хотим получить именно мероприятия календаря. Если не указать явно, что мы хотим извлечь из календаря, то мы получим список, в котором также окажутся To-Do компоненты (VTODO), заметки (VJOURNAL), и прочие компоненты типа VFREEBUSY, VALARM и VTIMEZONE.

Применение фильтров

Для того, чтобы вывести элементы, в моем случае мероприятия, в определенный период времени, можно применить фильтры.

На момент написания в моем календаре хранились такие записи (в формате «Заголовок»: «Описание» [«Время начала»]):

Event 1: Event 1 — November 1 [7 Nov 2013 13:00:00 GMT]
Event 5: Event 5 — November 12 [12 Nov 2013 12:00:00 GMT]
Event 3: Event 3 — November 10 [10 Nov 2013 19:30:00 GMT]
Event 2: Event 2 — November 9 [9 Nov 2013 08:30:00 GMT]
Event 4: Event 4 — November 11 [11 Nov 2013 08:00:00 GMT]
Event 6: Event 6 — November 13 [13 Nov 2013 09:30:00 GMT]

Event 4: Event 4 — November 11 [11 Nov 2013 08:00:00 GMT]

Увеличив период до трёх дней…

… я получил такую картину:

Event 5: Event 5 — November 12 [12 Nov 2013 12:00:00 GMT]
Event 4: Event 4 — November 11 [11 Nov 2013 08:00:00 GMT]
Event 6: Event 6 — November 13 [13 Nov 2013 09:30:00 GMT]

Создание пустого календаря

iCal4j поддерживает также создание календаря с нуля. Здесь всё просто. Создаем объект календаря, добавляем в него необходимые поля.

Добавление нового мероприятия в календарь

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

Сохранение календаря в файл

Поработав с календарем, нам конечно же нужно его сохранить. Лучше всего сохранить обратно в файл.

Заключение

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

Международные коды авиакомпаний

Международные коды и цифровые обозначения авиакомпаний по классификации организаций ИАТА (IATA) и ИКАО (ICAO). Следует учитывать, что не все представленные в данной таблице авиакомпании являются членами ИАТА.


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

Авиакомпания Код ИАТА
IATA Code
Цифровой код
3-Digit Code
Код ИКАО
ICAO Code
Страна
9 Air AQ 902 JYH Китай
Abaeté Linhas Aéreas AB ABJ Бразилия
Ad Astral Aviation AT* Австралия
Adria Airways JP 165 ADR Словения
Aegean Airlines A3 390 AEE Греция
Aer Lingus EI 053 EIN Ирландия
Aeroflot (Аэрофлот) SU 555 AFL Россия
Aerolíneas Argentinas AR 044 ARG Аргентина
Aerolínea de Antioquia ANQ Колумбия
Aeromás MSM Уругвай
Aeromexico AM 139 AMX Мексика
Aeropostal Alas de Venezuela VH* 152 ALV Венесуэла
Aerosvit Airlines VV 870 AEW Украина
Aero VIP RVP Португалия
Afghan Jet International HN* AJA Афганистан
Africa’s Connection STP Сан-Томе и Принсипи
Afriqiyah Airways 8U 546 AAW Ливия
Aigle Azur ZI 439 AAF Франция
Air Algerie AH 124 DAH Алжир
Air Arabia G9 514 ABY ОАЭ
Air Armenia QN* ARR Армения
Air Astana KC 465 Казахстан
Air Austral UU 760 REU Реюньон
Air Baltic BT 657 BTI Латвия
Air Berlin AB 745 BER Германия
Air Botswana BP 636 BOT Ботсвана
Air Bucharest B1* BUR Румыния
Air Burkina 2J 226 VBW Буркина Фасо
Air Burundi 8Y* PBU Бурунди
Air Canada AC 014 ACA Канада
Air Canada Rouge RV ROU Канада
Air Chang’an 9H 856 CGN Китай
Air Chathams CV CVA Новая Зеландия
Air China CA 999 CCA Китай
Air Contractors AG ABR Ирландия
Air Côte d’Ivoire HF 483 VRE Кот-д’Ивуар
Air Creebec YN 219 CRQ Канада
Air Europa UX 996 AEA Испания
Air France AF 057 AFR Франция
Air Georgian ZX GGN Канада
Air Guilin GT 730 CGH Китай
Air India AI и IC 098 и 058 AIC и IAC Индия
Air Inuit 3H 466 AIE Канада
Air Jamaica Limited JM 201 AJM Ямайка
Air Koryo JS 120 KOR Северная Корея
Air Macau NX 675 AMU Макао
Air Madagascar MD 258 MDG Мадагаскар
Air Malawi QM 167 AML Малави
Air Malta p.l.c. KM 643 AMC Мальта
Air Mauritius MK 239 MAU Маврикий
Air Moldova 9U 572 MLD Молдова
Air Namibia SW 186 NMB Намибия
Air New Zealand NZ 086 ANZ Новая Зеландия
Air Niugini PX 656 ANG Папуа-Новая Гвинея
Air North 4N 287 ANT Канада
Air Nostrum YW 694 ANE Испания
Air One S.p.A. AP 867 Италия
Air Pacific FJ 260 FJI Фиджи
Air Panama 7P 600 PST Панама
Air Rarotonga GZ 755 RAR Острова Кука
Air Sénégal International V7* 407 Сенегал
Air Seychelles HM 061 SEY Сейшелы
Air Tahiti VT 135 VTA Французская Полинезия
Air Tahiti Nui TN 244 THT Французская Полинезия
Air Tanzania TC 197 ATC Танзания
Air Transat TS 649 TSC Канада
Air Vanuatu NF 218 AVN Вануату
Air VIA VL VIM Болгария
Air Whitsunday RWS Австралия
Air Zimbabwe UM 168 AZW Зимбабве
Airblue PA 084 ABQ Пакистан
Aircalin SB 063 ACI Новая Каледония
AirExplore ED 913 AXE Словакия
Airlines of Tasmania FO ATM Австралия
Airnorth TL 935 ANO Австралия
Alas Uruguay YZ ALY Уругвай
Alaska Airlines AS 027 ASA США
Albatros Airlines G2 GAL Венесуэла
Albawings 2B 654 AWT Албания
Alitalia S.p.A. AZ 055 AZA Италия
All Nippon Airways NH 205 ANA Япония
Alliance Airlines QQ UTY Австралия
Alma de Mexico C4 665 Мексика
Amapola Flyg HP APF Швеция
American Airlines AA 001 AAL США
AnadoluJet TK 235 AJA Турция
Andes Líneas Aéreas OY 650 ANS Аргентина
Anguilla Air Services Q3 AXL Ангилья
Ariana Afghan Airlines FG 255 AFG Афганистан
Arkia Israeli Airlines Ltd IZ 238 AIZ Израиль
Armenia Aircompany RM 437 NGT Армения
Aruba Airlines AG 209 ARU Аруба
Aserca Airlines R7 OCA Венесуэла
Asiana OZ 988 AAR Южная Корея
ASKY Airlines KP 032 SKK Того
Atlas Air 5Y 369 США
Atlasglobal KK 610 KKK Турция
AtlasGlobal Украина UH 500 UJX Украина
Aurora (Аврора) HZ 598 SHU Россия
Austral Líneas Aéreas AU 143 AUT Аргентина
Austrian Airlines OS 257 AUA Австрия
Avianca AV 134 AVA Колумбия
Avianca Brasil O6 247 ONE Бразилия
Avianca Costa Rica LR 133 LRC Коста-Рика
Avianca Peru T0 530 TPU Перу
Avianca El Salvador TA TAI Сальвадор
Avior Airlines 9V 742 ROI Венесуэла
Azerbaijan Airlines J2 771 AHY Азербайджан
Azul Linhas Aéreas Brasileira AD 577 AZU Бразилия
Azur Air ZF 037 KTK Россия
Balkan Holidays Airlines, BH Air 1B BGH Болгария
Bangkok Airways PG 829 BKP Таиланд
BB Airways BO BBW Непал
Bahamasair UP 111 BHS Багамы
Bearskin Airlines JV 632 BLS Канада
Beijing Capital Airlines JD 898 CBJ Китай
Belavia — Belarusian Airlines B2 628 BRU Беларусь
Bellview Airlines B3* 208 Нигерия
Biman Bangladesh Airlines BG 997 BBC Бангладеш
Binter Canarias NT 474 IBB Испания
Binter Cabo Verde 3B 383 NTB Кабо-Верде
Bhutan Airlines B3 786 BTN Бутан
Blue Air 0B 475 BMS Румыния
Blue Panorama BV 004 BPA Италия
Blue Wing Airlines BWI Суринам
Blue Wings QW 049 BWG Германия
Blue1 KF 142 BLF Финляндия
bmi BD 236 BMA Великобритания
Boliviana de Aviación OB 930 BOV Боливия
Borajet YB BRJ Турция
Braathens Regional Airlines TF 276 BRX Швеция
British Airways BA 125 BAW Великобритания
Brussels Airlines SN 082 BEL Бельгия
Buddha Air U4 BHA Непал
Bulgaria Air FB 623 LZB Болгария
Bulgarian Air Charter 1T BUC Болгария
BVI Airways XV BVI Британские Виргинские острова
Cabo Verde Airlines VR 696 TCV Кабо-Верде
Caicos Express Airways 9Q CXE Тёркс и Кайкос
Camair-Co QC 040 CRC Камерун
Canadian Airways Congo Республика Конго
Canadian North 5T 518 MPE Канада
Caribbean Airlines BW 106 BWA Тринидад и Тобаго
Carpatair V3 021 KRP Румыния
Caspian Airlines RV 879 CPN Иран
Cathay Pacific CX 160 CPA Гонконг
CCM Airlines XK 146 Франция
Cebu Pacific 5J 203 CEB Филиппины
Chengdu Airlines EU 811 UEA Китай
China Airlines CI 297 CAL Тайвань
China Eastern Airlines MU 781 CES Китай
China Express Airlines G5 987 HXA Китай
China Southern Airlines CZ 784 CSN Китай
China United Airlines KN 822 CUA Китай
Chongqing Airlines OQ 878 CQN Китай
Cimber Air QI 647 CIM Дания
Cirrus Airlines C9 251 Германия
City Airways E8 GTA Таиланд
CityJet WX 689 BCY Ирландия
Cobalt Air CO 354 FCB Кипр
Comair MN 161 CAW ЮАР
Congo Airways 8Z 582 CGA Демократическая Республика Конго
Continental Airlines CO 005 COA США
Continental Micronesia CS 596 CMI Гуам
Conviasa V0 308 VCV Венесуэла
Copa Airlines CM 230 CMP Панама
Corendon Airlines XC 395 CAI Турция
Corsair SS 923 CRL Франция
Croatia Airlines OU 831 CTN Хорватия
Cubana CU 136 CUB Куба
Cyprus Airways CY 048 CYP Кипр
Czech Airlines OK 064 CSA Чехия
Dalian Airlines CA 999 CCD Китай
Delta Air Lines DL 006 DAL США
Denim Air 3D 490 DNM Нидерланды
Direktflyg HSV Швеция
Dniproavia (Днеправиа) Z6 UDN Украина
Donavia (Донавиа) D9 DNV Россия
Donghai Airlines DZ 893 EPA Китай
Dragonair KA 043 HDA Гонконг
Drukair — Royal Bhutan Airlines KB 787 DRK Бутан
EasyFly VE EFY Колумбия
EasyJet Switzerland DS EZS Швейцария
EcoJet 8J ECO Боливия
Edelweiss Air WK 945 EDW Швейцария
Egyptair MS 077 MSR Египет
EL AL LY 114 ELY Израиль
Emirates Airline EK 176 UAE ОАЭ
Enerjet ENJ Канада
Estonian Air OV 960 ELL Эстония
Ethiopian Airlines ET 071 ETH Эфиопия
Etihad Airways EY 607 ETD ОАЭ
EuroAtlantic Airways YU 551 MMZ Португалия
Eurojet Romania RDP Румыния
European Air Transport QY 615 BCS Бельгия
Eurowings EW 104 EWG Германия
Eva Air BR 695 EVA Тайвань
Ewa Air ZD 732 EWR Майотта
Exploits Valley Air Services 8K EVS Канада
Fastjet Zimbabwe FN* FJW Зимбабве
Far Eastern Air Transport FE 436 FEA Тайвань
Federal Express FX 023 FDX США
Felix Airways FO FXX Йемен
Finnair AY 105 FIN Финляндия
First Air 7F 245 FAB Канада
Fly All Ways EDR Суринам
Fly Corporate FC 441 Австралия
Fly Blue Crane 7B FCO ЮАР
flybe.British European BE 267 BEE Великобритания
Flydubai FZ 141 FDB ОАЭ
FlyLAL — Lithuanian Airlines TE 874 LIL Литва
Flynas XY 593 KNE Саудовская Аравия
FlyPelican FP 166 FRE Австралия
FlySafair FA 640 SFR ЮАР
Free Spirit Airlines FS FSA Австралия
Freebird Airlines FH FHY Турция
Fuzhou Airlines FU 666 FZA Китай
Garuda GA 126 GIA Индонезия
Gazpromavia (Газпром авиа) 4G* GZP Россия
Germania Flug GM* 581 GSW Швейцария
Globus (Глобус) GH 674 GLP Россия
Go2Sky 6G RLX Словакия
Gol Linhas Aéreas Inteligentes G3 127 GLO Бразилия
Goma Air GG Непал
Gulf Air GF 072 GFA Бахрейн
Gum Air GUM Суринам
GX Airlines GX 872 CBG Китай
Hahn Air HR* 169 Германия
Hainan Airlines HU 880 CHH Китай
Hapag Lloyd HF 617 HLF Германия
Hebei Airlines NS 836 HBH Китай
Hellas Jet HJ 681 HEJ Греция
Helvetic Airways 2L 102 OAW Швейцария
Hemus Air DU 748 HMS Болгария
Hi Fly 5K HFY Португалия
Hinterland Aviation OI HND Австралия
Hong Kong Express Airways Limited UO 128 HKE Гонконг
Iberia IB 075 IBE Испания
Icar Air RAC Босния и Герцеговина
Icelandair FI 108 ICE Исландия
I fly I4* 757 RSY Россия
Insel Air 7I 958 INC Кюрасао
Inter Island Airways Американское Самоа
Interair D6 625 ILN ЮАР
InterCaribbean Airways JY 653 IWY Тёркс и Кайкос
Iran Air IR 096 IRA Иран
Iran Aseman Airlines EP 815 IRC Иран
Israir 6H 818 ISR Израиль
IZair 4I 597 IZM Турция
JALways Co. Ltd JO 708 JAZ Япония
Japan Airlines JL 131 JAL Япония
Jazz QK 983 JZA Канада
Jet Airways 9W 589 JAI Индия
Jet Asia Airways JF JAA Таиланд
Jet Lite (India) Limited S2 705 Индия
Jetgo Australia JG JGO Австралия
JetSmart JA JAT Чили
Jetstar Airways JQ 041 JST Австралия
Jetstar Asia Airways 3K* 375 JSA Сингапур
Jetstar Pacific Airlines BL 550 PIC Вьетнам
Jiangxi Air RY 989 CJX Китай
Jordan Aviation R5 151 Иордания
Joy Air JR 929 JOY Китай
Juneyao Airlines HO 018 DKH Китай
Kam Air RQ* 384 KMF Афганистан
Kan Air K8 KND Таиланд
Kenya Airways KQ 706 KQA Кения
Kish Air Y9 780 IRK Иран
KLM KL 074 KLM Нидерланды
Korean Air KE 180 KAL Южная Корея
Kosova Airlines KOS Косово
Kulula.com MN CAW ЮАР
Kunming Airlines KY 833 KNA Китай
Kuwait Airways KU 229 KAC Кувейт
LAM TM 068 LAM Мозамбик
Laser Airlines QL* 782 LER Венесуэла
LATAM Argentina 4M 469 Аргентина
LATAM Brasil JJ 957 TAM Бразилия
LATAM Chile LA 045 LAN Чили
LATAM Colombia 4C 035 ARE Колумбия
LATAM Ecuador XL 462 Эквадор
LATAM Perú LP 544 LPE Перу
Latin American Wings H8 JMR Чили
Lauda Air NG 231 LDA Австрия
LIAT LI 140 LIA Антигуа и Барбуда
Libyan Airlines LN 148 LAA Ливия
Línea Aérea Amaszonas Z8 464 AZN Боливия
LongJiang Airlines LT 867 SNG Китай
Loong Air GJ 891 CDC Китай
LOT Polish Airlines LO 080 LOT Польша
LTU LT 266 LTU Германия
Lucky Air 8L 859 LKE Китай
Lufthansa LH 220 DLH Германия
Lufthansa CityLine CL 683 CLH Германия
Luxair LG 149 LGL Люксембург
Mahan Air W5 537 IRM Иран
Malaysia Airlines MH 232 MAS Малайзия
Malev MA 182 MAH Венгрия
Malindo Air OD 816 MXD Малайзия
Malmö Aviation TF 276 BRX Швеция
Mandarin Airlines AE 803 MDA Тайвань
Mango JE 472 MNO ЮАР
Masterjet LMJ Португалия
MAT — Macedonian Airlines IN 367 MAK Македония
Maya Island Air 2M 391 MYD Белиз
MEA ME 076 MEA Ливан
Meridiana IG 191 ISS Италия
Mexicana MX 132 MXA Мексика
MIAT OM 289 MGL Монголия
Montenegro Airlines YM 409 MGX Черногория
Motor-Sich (Мотор Сич) M9 011 MSI Украина
Mustique Airways MAW Сент-Винсент и Гренадины
Nepal Airlines RA 285 RNA Непал
NewGen Airways E3 386 VGO Таиланд
Nextjet 2N NTJ Швеция
Niki HG NLY Австрия
Nok Air DD 596 NOK Таиланд
NokScoot XW 478 NCT Таиланд
NordStar Y7 476 TYA Россия
Nordwind Airlines N4 216 NWS Россия
Northwest Airlines NW 012 NWA США
Norwegian Air Shuttle DY 328 NAX Норвегия
Novair N9 326 NVR Швеция
Novoair VQ 855 NVQ Бангладеш
Nouvelair BJ 796 LBT Тунис
Okay Airways BK 866 OKA Китай
Olympic Airlines S.A. OA 050 OAL Греция
Oman Air WY 910 OAS Оман
Onur Air 8Q 066 OHY Турция
Orbest 6O OBS Португалия
Orenair (Оренбургские авиалинии) R2 ORB Россия
Orient Thai Airlines OX 578 OEA Таиланд
Pakistan International Airlines PK 214 PIA Пакистан
Passaredo Linhas Aéreas 2Z 678 PTB Бразилия
Philippine Airlines PR 079 PAL Филиппины
Phuket Air VAP Таиланд
Pegasus Airlines H9 624 PGT Турция
People’s Viennaline PE PEV Австрия
PGA-Portugália Airlines NI 685 PGA Португалия
Pluna PU 286 PUA Уругвай
PNG Air CG 626 TOK Папуа-Новая Гвинея
Pobeda (Победа) DP 425 PBD Россия
Polynesian Airlines OL 162 PAO Самоа
Porter Airlines PD 451 POE Канада
Portugália Airlines NI 685 PGA Португалия
Precision Air PW 031 PRF Танзания
Qantas QF 081 QFA Австралия
Qatar Airways QR 157 QTR Катар
Qatar Executive QE 157 QQE Катар
Qingdao Airlines QW 912 QDA Китай
R Airlines RK RCT Таиланд
REALtonga RLT Тонга
Red Wings Airlines WZ 309 RWZ Россия
Regent Airways RX 652 RGE Бангладеш
Regional Express ZL 899 RXA Австралия
Rossiya — Russian Airlines (Россия) FV 195 SDM Россия
Royal Air Maroc AT 147 RAM Марокко
Royal Brunei Airlines BI 672 RBA Бруней
Royal Jordanian RJ 512 RJA Иордания
Royal Flight 4R ABG Россия
Ruili Airlines DR 299 RLH Китай
Rutaca Airlines 5R RUC Венесуэла
Rwandair WB 459 RWD Руанда
SA Airlink 4Z 749 LNK ЮАР
Safi Airways 4Q 471 SFW Афганистан
SAS SK 117 SAS Швеция
SAS Norge BU 154 CNO Норвегия
SATA Air Açores SP 737 SAT Португалия
SATA Internacional S4 331 RZO Португалия
Saudi Arabian Airlines SV 065 SVA Саудовская Аравия
SBA Airlines S3 BBR Венесуэла
Senegal Airlines DN SGG Сенегал
SETE Linhas Aéreas 5O SLX Бразилия
Shaheen Air International NL 740 SAI Пакистан
Scoot TZ SCO Сингапур
Shandong Airlines SC 324 CDG Китай
Shanghai Airlines FM 774 CSH Китай
Shenzhen Airlines ZH 479 CSZ Китай
S7 Airlines (Сибирь) S7 421 SBI Россия
Sichuan Airlines 3U 876 CSC Китай
Silkair MI 629 SLK Сингапур
Simrik Airlines SH RMK Непал
Singapore Airlines SQ 618 SIA Сингапур
Sky Airline H2 605 SKU Чили
Sky Regional Airlines KV SKV Канада
Skywise C9 SWZ ЮАР
Skyways JZ 752 SKX Швеция
SmartWings QS 797 TVS Чехия
Solomon Airlines IE 193 SOL Соломоновы Острова
South African Airways SA 083 SAA ЮАР
South African Express XZ EXY ЮАР
South Supreme Airlines JUA Южный Судан
Spanair JK 680 JKK Испания
Sparrow Aviation 9I Швеция
Spring Airlines 9C 089 CQH Китай
SriLankan UL 603 ALK Шри-Ланка
St Barth Commuter PV* SBU Сен-Бартельми
Sudan Airways SD 200 SUD Судан
SunExpress XQ* 564 SXS Турция
Sunwing Airlines WG 292 SWG Канада
Surinam Airways PY 192 SLM Суринам
SVG Air SVG Сент-Винсент и Гренадины
Swaziland Airlink 4Z 749 SZL Свазиленд
Swiss LX 724 SWR Швейцария
Syrianair RB 070 SYR Сирия
TAAG Angola Airlines DT 118 DTA Ангола
TACA TA 202 TAI Сальвадор
Tailwind Airlines TI* 768 TWI Турция
TAM — Transportes Aéreos del Mercosur PZ 692 LAP Парагвай
TAP Portugal TP 047 TAP Португалия
Tara Air YT NYT Непал
TAROM RO 281 ROT Румыния
Tassili Airlines SF 515 Алжир
Ten Airways X5 OTJ Румыния
Thai Airways TG 217 THA Таиланд
Thai Lion Air SL 310 TLM Таиланд
Thai Smile WE* 909 THD Таиланд
Tianjin Airlines GS 826 GCR Китай
Tiara Air 3P TNM Аруба
Tibet Airlines TV 088 TBA Китай
Tigerair TR 668 TGW Сингапур
Tigerair Australia TT TGG Австралия
Tigerair Taiwan IT 608 TTW Тайвань
Tiriac Air TIH Румыния
TNT Airways S.A. 3V 756 TAY Бельгия
Trans Air Congo Q8 223 TSG Республика Конго
Trans Anguilla Airways Ангилья
TransAsia Airways GE 170 TNA Тайвань
Travel Service QS 797 TVS Чехия
Tropic Air 9N 789 TOS Белиз
TUIfly Nordic 6B 951 BLX Швеция
Tunisair TU 199 TAR Тунис
Tunisair Express UG 150 TUX Тунис
Tunisavia TAJ Тунис
Turkish Airlines TK 235 THY Турция
Tus Airways U8 034 CYF Кипр
Tyrolean Airways VO TYR Австрия
Ukraine International Airlines PS 566 AUI Украина
Uni Air B7 525 UIA Тайвань
United Airlines UA 016 UAL США
United Airways 4H UBD Бангладеш
Ural Airlines (Уральские авиалинии) U6 262 SVR Россия
Urumqi Air UQ 886 CUH Китай
US Airways, Inc. US 037 USA США
UTair (ЮТэйр) UT 298 UTA Россия
Uzbekistan Airways HY 250 UZB Узбекистан
V Air ZV VAX Тайвань
Veca Airlines VU VAR Сальвадор
Venezolana VN* VNE Венесуэла
VI Airlink V6 VIL Британские Виргинские острова
VietJet Air VJ 978 VJC Вьетнам
Vietnam Air Services Company — VASCO 0V* 338 VFC Вьетнам
Vietnam Airlines VN 738 HVN Вьетнам
VIM Airlines (ВИМ-Авиа) NN MOV Россия
Vincent Aviation VAL Новая Зеландия
Virgin Atlantic VS 932 VIR Великобритания
Virgin Australia VA 795 VOZ Австралия
Virgin Nigeria VK 786 VGN Нигерия
VivaColombia FC* 641 VVC Колумбия
Vladivostok Air (Владивосток Авиа) XF 277 VLK Россия
Volga-Dnepr Airlines (Волга-Днепр) VI* 412 Россия
Welcome Air 2W WLC Австрия
West Air PN 847 CHB Китай
WestJet WS 838 WJA Канада
White Airways WHT Португалия
Widerøe WF 701 WIF Норвегия
Winair WM 295 WIA Синт-Мартен
Windrose Airlines 7W 461 WRC Украина
Windward Express Синт-Мартен
Wizz Air W6 WZZ Венгрия
Xiamen Airlines MF* 731 CXA Китай
Yakutia Airlines (Якутия) R3 849 SYL Россия
Yamal Airlines (Ямал) YC 664 LLM Россия
Yanair YE 206 ANR Украина
Yemenia IY 635 IYE Йемен
Yeti Airlines YT NYT Непал
Yunnan Hongtu Airlines A6 389 HTU Китай
Zambian Airways 391 MAZ Замбия

Условные обозначения: * Контролируемый дубликат — один и тот же код назначается двум небольшим авиакомпаниям, география полётов которых не пересекается в момент назначения кода и не имеет перспективы такого пересечения в обозримом будущем. Данная ситуация связана с дефицитом двухбуквенных кодов ИАТА — сочетание двух латинских букв не может дать более 576 уникальных вариантов кода. Применение цифр в составе кода увеличивает общее число возможных кодов примерно до 1000, но это не решает проблемы в целом из-за большого количества авиакомпаний-перевозчиков.

Хочешь заработать на авиабилетах и других туристических продуктах? Есть свой сайт, блог или страничка в социальных сетях? Присоединяйся и получай доход!

Денежная компенсация за задержку рейса — не пропустите!

А вы в курсе, что благодаря сервису Compensair авиапассажиры могут получить компенсацию до 600 евро за задержку или отмену рейса?

Compensair — это сервис, который помогает получить компенсацию в случае:

  • Задержки рейса;
  • Отмены рейса;
  • Отказа в посадке (овербукинг);
  • Пропущенной пересадки по вине авиакомпании.

Пассажир может получить от 250 евро до 600 евро за проблемы с рейсом, страной вылета или прилёта которого является Турция, Исландия, Норвегия, Швейцария или любая другая страна Европейского Союза. Возможность получить компенсацию распространяется и на все рейсы авиакомпаний, зарегистрированных в ЕС. При этом важно, чтобы проблемы с рейсом не были вызваны чрезвычайными обстоятельствами:

  • Угроза теракта;
  • Плохие погодные условия;
  • Забастовка.

Воспользоваться услугами могут все пассажиры, независимо от гражданства. Это значит, что получить компенсацию можно даже в том случае, если пассажир не является гражданином ЕС или Турции.

Compensair берёт на себя все хлопоты. Клиенту необходимо подписать форму согласия на представление интересов, а также предоставить информацию о рейсе и номере билета. Далее специалисты проведут подробный анализ ситуации, составят первичную претензию и будут вести «юридический диалог» с авиакомпанией, добиваясь выплаты. Обо всех важных этапах клиент информируется по электронной почте или SMS.

В случае успеха пассажиру выплачивается компенсация. В случае неуспеха пассажир не несёт никаких расходов и прочих издержек.

FullCalendar. Часть 2. Добавление, редактирование и удаление событий.

Продолжаем рассмотрение jQuery плагина FullCalendar, установка которого была описана в предыдущей статье FullCalendar. Часть 1. Установка, настройка и русификация. Что бы использовать больше функциональных возможностей плагина, мы настроим добавление, редактирование и удаление событий, которые будут храниться в базе данных MySQL.

Добавление событий

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

Для начала сделаем эту форму модальным диалоговым окном, при помощи jQuery UI Dialog и создадим в ней 4 кнопки: Добавить, Изменить, Удалить и Отмена.

После этого создадим переменные для доступа к полям формы, настроим обработчик кнопки Добавить событие, создадим функцию очистки значений формы emptyForm, а так же функцию открытия формы formOpen которая принимает параметр mode:

  • add — добавление события
  • edit — изменение события

Теперь при нажатии кнопки Добавить событие мы увидим вот такое диалоговое окно:

Для удобства ввода данных предлагаю использовать jQuery UI Datepicker с небольшой модификацией. Для этого необходимо скачать с сайта плагин Timepicker и подключить к нашему скрипту. После этого активируем Datetimepicker для полей начало и конец:

Благодаря Timepicker выбор даты и времени станет еще более удобнее:

Так же добавим обработку нажатия на определенном дне календаря dayClick, что бы у нас открывалась форма добавления события и устанавливалась соответствующая дата. Для этого добавим в инициализацию календаря обработку события:

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

Изменим определение кнопки добавления в диалоговой форме, добавив тело обработчика:

Данный код извлекает данные из формы и отправляет AJAX запросом скрипту ajax.php с меткой операции op: ‘add’. Так же после успешного выполнения запроса, мы вызываем функцию renderEvent для добавления события непосредственно в календарь. Вторым параметром передаем объект типа Event, который состоит из интуитивно понятных параметров. Свойство allDay объекта Event показывает занимает ли данное событие весь день. Если метка стоит false, то в календаре рядом с заголовком будет выведено время события.

Содержимое ajax.php для добавления записи в базу данных:

Все предельно просто, соединяемся с базой, извлекаем данных из POST, создаем SQL запрос и выполняем его предварительно преобразовав дату и время в формат MySQL Datetime. На этом функциональная часть добавления события выполнена. Можно динамически добавлять события, которые сразу же будут наноситься на календарь.

Источник событий

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

Этот код делает AJAX запрос передавая параметр op: ‘source’. Добавим в файл ajax.php операцию возврата данных в формате JSON:

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

Изменение событий

Для изменения событий будем использовать функцию eventClick. Для этого в инициализацию календаря добавим код обработки, который заполняет форму свойствами события и открывает диалоговое окно с параметром edit:

Так же добавим обработку нажатия кнопки Изменить в форме:

Код очень похож на добавление события, отличается он только операцией op: ‘edit’, и добавлением в передаваемые данные id события. Так же после успешно выполненной операции AJAX, вызываем функцию календаря refetchEvents, для того что бы заново извлечь информацию для всех событий, таким образом обновив данные календаря. Код файла ajax.php для обновления данных:

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

Удаление событий

Для удаления нам необходимо открыть форму в режиме редактирования кликнув по определенному событию. В форме у нас есть кнопка Удалить. Добавим обработчик нажатия кнопки:

Здесь мы передаем скрипту только id события и тип операции op: ‘delete’. После успешного выполнения запроса мы вызываем функцию removeEvents и передаем id события которое удалено. Это нужно для того что бы удалить данное события с календаря. Код файла ajax.php для удаления события:


В итоге мы имеем полноценный календарь, с немалым функционалом. Добавление данных и изменение при помощи удобной формы, а так же удаление событий в режиме редактирования. Это еще далеко не все возможности FullCalendar.

В следующей статье будет рассмотрено перетаскивание событий drag-and-drop, изменение дат начала и конца при помощи изменения размера блока события и еще кое-что интересное.

Ссылки на документацию используемых плагинов:

Международная организация гражданской авиации (ИКАО): устав, члены и структура организации

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

Важность этой Организации несомненна. Но что известно о ней широкой общественности? Как правило, не так уж много. В статье подробнее расскажем о том, что такое международная организация гражданской авиации ИКАО, какова история ее создания, список участников и принципы деятельности.

Что такое ИКАО?

Рассмотрим аббревиатуру — ИКАО. Она образована от английского варианта ICAO, что расшифровывается как International Civil Aviation Organization, а на русский язык переводится как «Международная организация гражданской авиации». На данный момент это одно из крупнейших учреждений ООН, которое отвечает за создание глобальной нормативной базы для обеспечения безопасности международной гражданской авиации.

Штаб-квартира ИКАО располагается в Монреале, Канада. На карте ниже можно ознакомиться с ее точным местонахождением.

Официальными языками Организации являются следующие: английский, русский, французский, арабский, испанский и китайский. Заметим, что именно представитель Китая в настоящее время занимает пост Генерального секретаря ИКАО.

История создания

Международная организация гражданской авиации (ИКАО) была создана после принятия Конвенции гражданской авиации. Поскольку собрание представителей будущих государств проходило в Чикаго, вторым (и, пожалуй, более известным) ее названием является Чикагская конвенция. Дата — 7 декабря 1944 года. Статус специализированного учреждения Организации Объединенных Наций ИКАО получила в 1947 году и вплоть до настоящего времени сохраняет за собой определенную свободу с точки зрения управления и методов осуществления основных задач.

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

Первыми, кто предложил создать эффективную модель развития гражданской авиации, стали США. После предварительных переговоров с союзными государствами было решено организовать созыв представителей 52 государств для принятия единой Конвенции о международной гражданской авиации. Встреча прошла 7 декабря 1944 года в Чикаго. Пять недель делегаты обсуждали множество вопросов, была проведена огромная работа, результатом которой стала Конвенция. По всеобщему согласию делегатов, она вступила в силу лишь в апреле 1947 года, когда была ратифицирована 26-м государством-членом ИКАО.

Члены Организации

В состав членов ИКАО входит 191 государство, среди которых числится Российская Федерация на правах преемницы СССР, вступившего в ИКАО в 1977 году. Сюда входят почти все участники ООН: 190 стран (за исключением Доминики и Лихтенштейна), а также Острова Кука.

Кроме прямых участников, есть особые отраслевые группы, цель которых – создание глобальной нормативной базы, необходимой для эффективной деятельности международной гражданской авиации. Важно отметить, что для достижения консенсуса в отношении обеспечения Международных стандартов и Рекомендуемой практики существует отдельный орган – Совет. Он же занимается оформлением принятых стандартов в форме Приложений к Конвенции о международной гражданской авиации. (Подробнее об остальных функциях Совета поговорим немного позже).

Устав ИКАО

Конвенция о международной гражданской авиации (Чикагская конвенция) содержит 96 статей и включает в себя все внесенные изменения за период с 1948 по 2006 годы. В ней установлены обязанности и привилегии членов ИКАО, указывается суверенитет государств собственной воздушной территории. Подчеркивается, что все международные перелеты должны быть согласованы с государством, над территорией которого они будут осуществляться. В последней статье даются определения основным понятиям, использующимся в гражданской авиации. Так, например, «Международное воздушное пространство» определяется как пространство над открытым морем и иными территориями с особым режимом (Антарктида, международные проливы и каналы, архипелажные воды). Со всеми терминами можно ознакомиться самостоятельно на официальном сайте ИКАО. Они описаны доступным языком, поэтому будут понятны даже тем, кто совсем не знаком с авиационной терминологией.

Кроме того, существуют 19 Приложений к Конвенции, в которых установлены упомянутые выше Международные стандарты и Рекомендуемые практики.

Цели и задачи ИКАО

44 статья Чикагской конвенции гласит, что основные цели и задачи Организации происходят из ее стремления способствовать развитию международного сотрудничества посредством укрепления авиасообщения между государствами-членами. Это заключается в следующих направлениях ее деятельности:

  • Обеспечение авиационной безопасности и безопасности международной аэронавигации.
  • Поощрение и развитие более совершенных способов эксплуатации воздушных судов.
  • Удовлетворение потребности общества в регулярном, безопасном и экономичном аэросообщении.
  • Содействие общему развитию международной гражданской авиации во всех сферах.

Все обозначенные цели и задачи лаконично представлены в стратегическом плане действий Международной организации гражданской авиации ИКАО:

  • Повышение эффективности авиации.
  • Безопасность полетов и авиационная безопасность в целом.
  • Минимизация вредного воздействия гражданской авиации на природу.
  • Непрерывность авиационного развития.
  • Укрепление норм правового регулирования деятельности ИКАО.

Институциональные органы ИКАО (структура)

В соответствии с Чикагской конвенцией, Международная организация гражданской авиации ИКАО имеет четкую структуру. Статья 43 сообщает, что в ее состав входят Ассамблея, Совет и прочие органы, необходимые для ее деятельности.

Ассамблея

Ассамблея состоит из 191 государства, которые входят в состав ИКАО. Это суверенный орган, сессии которого происходят не реже одного раза в три года по требованию Совета. Во время обсуждения того или иного вопроса каждый член обладает правом одного голоса. Непосредственно решения принимаются на основании большинства голосов.

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

Совет

Совет включает в себя 36 государств, которые избираются единожды в течение трех лет. Определяющими критериями выбора служат следующие требования:

  • Государство должно играть немаловажную роль (в идеале – ведущую) в области авиации и осуществлении перевозок воздушными путями;
  • Государство должно в значительной степени способствовать развитию международной авиации и участвовать в обслуживании авиатранспорта.
  • Государство должно обеспечивать представительство в Совете всех географических регионов мира.

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

Руководит Советом избираемый им же на три года президент. В его обязанности входит созыв заседаний Совета и исполнение функций, которые Совет возлагает на него в ходе этих заседаний.

Аэронавигационная комиссия

Аэронавигационная комиссия состоит из 19 членов, которые являются независимыми экспертами, назначенными Советом для рассмотрения и внесения необходимых поправок в Приложения.

Секретариат

Секретариат помогает ИКАО организовывать работу. Особенно важная роль при этом отводится Авиатранспортному комитету, Комитету по совместной поддержке аэронавигационного обеспечения и Комитету технического сотрудничества.

Региональные органы

ИКАО включает также семь региональных комитетов, которые одобрены государствами-членами и допущены к осуществлению Международных стандартов ИКАО и Рекомендуемой практики:


  • Азиатско-Тихоокеанское отделение (Бангкок).
  • Комитет Восточной и Южной Африки (Найроби).
  • Европейский и Североатлантический комитет (Париж).
  • Ближневосточный офис (Каир).
  • Североамериканский, центральноамериканский и карибский комитет (Мексика).
  • Южноамериканский комитет (Лима).
  • Комитет Западной и Центральной Африки (Дакар).

Коды ИКАО

Для обозначения каждого международного аэропорта и авиакомпании используется специально разработанная система кодов. Для аэропортов коды состоят из четырех букв, для авиакомпаний – из трех. Так, например, для аэропорта «Шереметьево» код ИКАО – UUEE, для авиакомпании «Аэрофлот» – AFL. У последней есть телефонный позывной для самолетов, совершающих международные рейсы – AEROFLOT. На официальном сайте можно самостоятельно ознакомиться и с другими не менее интересными кодами и узнать их расшифровку.

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

Что такое код icap_delete_calendar

Всем привет! Тема на сегодня, спам в Google Календаре — подтвердите перевод или вам доступно денежное поощрение. Новый вид спама, который пробирается даже в наши телефоны через Google календарь. Но от него можно очень просто избавиться, если знать что и как делать. В этой статье разберем все по шагам и избавимся от этого вида спама очень просто.

Когда появился спам в Google Календаре

Совсем недавно, я сам столкнулся с данным видом спама в Android и Google Календаре, так как забросил свой iPhone и пользуюсь Huawei. Почему я это сделал и выбрал Huawei P20 Pro читайте здесь. А буквально вчера, мне стали писать знакомые, что и у них появился спам в календаре Google с напоминаниями о подтверждении перевода или денежном поощрении. При чем, весь календарь забит данными напоминалками и даже на телефон все это «добро» приходит.

Выглядит это примерно так, смотрите скриншот.

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

Что такое СПАМ

Не стоит путать спам с рассылками, на которые вы подписались, а потом захотели от них отписаться. Но вместо этого жмете на кнопку спам, это совсем не то.

Спам, это когда вашу почту спарсили в сети и без вашего ведома шлют различные e-mail рассылки и так далее. Вот точное определение.

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

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

Как избавиться от спама в Google Календаре

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

Инструкция по блокировке спама в календаре Google

Первый шаг — нам нужно зайти в свою почту Gmail и справа вверху выбрать все сервисы Google. Далее нам нужно кликнуть на иконку Календарь, чтобы перейти к настройкам.

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

Переходим на Настройки и далее выбираем Мероприятия, как показано на рисунке.

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

Дополнительно можно снять галочку — Автоматически добавлять мероприятия.

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

Вот такая простая инструкция, которая поможет Вам избавиться от Спама в Google Календаре. Теперь Вы защищены от фраз типа — «подтвердите перевод», «вам доступно денежное поощрение» и так далее. Будьте бдительны и все будет замечательно!

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

Бровин Ярослав

Блог одного из разработчиков FireMonkey

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

В этой статье мы рассмотрим расширение функционала стандартного календаря TCalendar и добавим поддержку раскраски требуемых дней в календаре. Расширение будет продемонстрировано с использованием нового подхода разработки компонента в FireMonkey.

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

Статья базируется на версии RAD Studio Delphi Seattle 10. Для ранних версий она не применима.

Код рабочего проекта: Delphi Seattle XE10

Перед тем, как читать эту статью, я советую ознакомиться с предыдущими статьями по теме нового подхода разработки компонента FireMonkey “Контрол – Модель – Презентация”, иначе все здесь покажется непонятным и запутанным ��

Общая стратегия

В RAD Studio XE10 Seattle для стилевой презентации календаря TCalendar была добавлена функциональность по получению содержимых компонентов представления календаря. Это позволяет нам получить доступ к любому контролу, представляющему день месяца по дате, год, кнопки переключения, и тд. Имея доступ к контролу дня, можно полностью менять его настройки отображения текста: шрифт, цвет, а так же помимо этого добавлять в него свои дополнительные контролы для подсветки и контурного обведения дней.

Сразу продемонстрирую конечный вид нашего расширенного календаря:

Обычный TCalendar с поддержкой раскраски дней

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

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

Определение набора расширенных настроек TCalendar

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

  1. ShowWeekends: Boolean — Включить/Выключить подсветку выходных дней
  2. ShowEvents: Boolean — Включить/Выключить подстветку произвольно указанных дней
  3. WeekendsColor: TAlphaColor — Цвет подсветки выходных дней
  4. EventsColor: TAlphaColor — Цвет подсветки произвольных дней
  5. Events: TArray — Набор дат, которые мы хотим подсветить.


Аналогично статье о добавлении поддержки автозаполнения для TEdit, эти данные мы будем хранить в Model.Data.

Например, чтобы сохранить в модели значение параметра ShowWeekends, достаточно написать такой код:

А чтобы получить:

Обратите внимание, что Model.Data работает со значениями типа TValue. А мы в примере выше, помещаем логическое значение True вместо TValue. Уловка заключается в том, что для базовых типов для TValue перегружен оператор присваивания и в этом примере логическое True будет обернуто в TValue автоматически.

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

Хелперы для удобства обращения к новым свойствам

Добавим класс хелпер TCalendarModelHelpers для стандартного календаря TCalendar. Разместим его в отдельном модуле FMX.Calendar.Helpers.pas. В его реализации нет ничего сложного. Лишь добавление одноименных названию новых параметров свойств и написание геттеров и сеттеров.

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

Обратите внимание, что верхние две строчки кода, полностью эквивалентны:

Создание интерфейса демонстрационного проекта

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

UI стенда тестирования календаря

Мы добавили две галки для включения и отключения подсветки выходных дней и любых других. По нажатию на галки, мы обновляем значения параметров календаря:

ListBox Events будет содержать список дат, которые требуется выделить в календаре. Для передачи списка выделенных дней в календарь будем использовать следующий код:

Собираем все даты из списка в единый массив Events и передаем этот массив в модель Calendar1.Model.Data[‘Events’].

Теперь код по добавлению/удалению новой даты в списке:

Теперь наш стенд готов, приступим к созданию новой презентации для нашего календаря.

Создание и регистрация нового представления на базе TStyledCalendar

Для хранения нашего нового представления лучше создать отдельный файл. В дальнейшем можно будет его легко повторно использовать в других проектах, путем простого добавления файла к вашему проекту. Назовем файл: FMX.CalendarHolidayDays.Style.pas

Создаем новое представление. В качестве базового класса выберем TStyledCalendar – это стилевая презентация TCalendar. Именно она используется по умолчанию во всех TCalendar. Назовем наш класс представления TStyledCalendarWithHolidayDays. Приставка Styled — означает, что эта презентация использует стили и не нативная. Название представления может быть любым и ни как не влияет на дальнейшее использование в TCalendar.

Ниже представлен минимальный код по созданию и подмены стандартной реализации стилевого календаря TStyledCalendar на нашу TStyledCalendarWithHolidayDays.

Регистрация представления

Подмена презентаций происходит в секции инициализации и выглядит так:

Суть метода в том, чтобы заменить уже зарегистрированную стилевую презентацию для TCalendar на нашу TStyledCalendarWithHolidayDays.

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

Проверка факта подмены представления

Теперь при запуске проекта с этим, добавленным модулем, все календари TCalendar будут автоматически использовать нашу презентацию. Это легко можно проверить, получив название класса представления непосредственно у календаря:

Запустите проект и нажмите на клавишу «Check Presentation Name». Если все ок, то сообщение выдаст вам название класса вашего представления «TStyledCalendarWithHolidayDays»:

Проверка класса представления

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

Реализация раскраски дней

Отображение дней в календаре построено на компоненте TListBox с многоколоночным режимом. Когда пользователь переключает месяц или год, стилевая презентация календаря вызывает метод FillDays. Задача этого методы обновить тексты в элементах списка Days: TListBox. Обратите внимание, что сами TListBoxItem в списке не пересоздаются. То есть этот метод только обновляет текст в каждом итеме.

Перекрыв этот метод в нашей презентации мы можем добавить к базовому заполнению дополнительные действия:

  1. Добавить задний фон интересных для нас дней
  2. Изменить параметры шрифта интересных для нас дней.

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

Алгоритм раскраски дней

Добавляем отдельный метод по добавлению заднего фона для каждой даты из нашего списка дат Events. В качестве заднего фона будем использовать TCircle. Вы можете выбрать любой другой компонент на ваш вкус.

TryFindDayItem — это новое API из TStyledCalendar, позволяющее найти по дате соответствующий дню TListBoxItem.

Теперь посмотрим метод создания заднего фона CreateBackground. Он принимает два параметра — итем дня, в который мы будем добавлять наш контрол/ фон TCircle и цвет заливки фона.

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

Обратите внимание на задание свойства Name. По скольку итемы TListBoxItem, соответствующие дням месяца не удаляются, нам нужна процедура по очистки наших окружностей из элементов. Чтобы у нас была возможность каким-то способом идентифицировать фоны в итемах, мы помечаем их через свойство Name и всем окружностям даем название «HightlightBackground«.

Чтобы удалить окружности, используем следующую процедуру:


  1. Пробегаемся по всем итемам
  2. Ищем и удаляем в каждом итеме окружности с названием «HightlightBackground«

Когда все вспомогательные процедуры готов, перекрываем метод FillDays, вызываемый для обновления числе в таблице:

Не забываем, что для того, чтобы использовать Model.ShowWeekends, нужно не забыть подключить модуль с хелперами FMX.Calendar.Helpers, который мы сделали в самом начале статьи. На текущий момент процедура раскраски выходных пока еще не готово. Перейдем к ее реализации

Алгоритм раскраски выходных дней

Попробуйте самостоятельно написать метод получения итемов, соответствующих выходным дням в месяце. А вот мой вариант:

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

Обновление дней, при изменений настроек отображения

При изменении данных в модели Model.Data, контрол TCalendar отсылает уведомление об этом в презентацию в виде сообщения MM_DATA_CHANGED с сообщением типа TDispatchMessageWithValue . Перехватываем сообщение в презентации:

В коде проверяем, что изменилось один из наших параметров:

  • Value.Key — содержит название параметра.
  • Value.Value — содержит значение параметра.

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

Повторное использование

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

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

Код рабочего проекта: Delphi Seattle XE10

calendar.event.update

Редактирует существующее событие.

Параметры функции

Параметр Описание
* id Идентификатор события.
* type Тип календаря.
* ownerId Идентификатор владельца календаря.
from Дата начала выборки.
to Дата окончания выборки.
from_ts Может быть установлен вместо from.
to_ts Может быть установлен вместо to.
* section Идентификатор раздела.
* name Наименование события.
skip_time [Y|N] Указывает, что значение даты передается без времени.
timezone_from Часовой пояс даты и времени начала события. Значение по умолчанию — таймзона текущего пользователя.
timezone_to Часовой пояс даты и времени окончания события. Значение по умолчанию — таймзона текущего пользователя.
description Описание события.
color Цвет фона события.
text_color Цвет текста события.
accessibility Доступность на время события:
  • busy (занят);
  • absent (отсутствую);
  • quest (под вопросом);
  • free (свободен).
importance Важность события:
  • high (высокая);
  • normal (средняя);
  • low (низкая).
private_event [Y|N] Отметка частного события.
rrule Повторяемость события.
is_meeting [Y|N] Признак встречи с участниками события.
location Место проведения.
remind Напоминание о событии:
  • type — временной тип напоминания (min, hour, day);
  • count — числовое значение временного промежутка.
attendees Список участников события (если is_meeting == «Y»).
host Организатор события.
meeting Массив параметров, включающий в себя:
  • text — текст приглашения;
  • open — признак открытой встречи;
  • notify — флаг оповещения о подтверждении\отказе участников;
  • reinvite — флаг запроса повторного подтверждения участия (при редактировании события).
* — обязательные параметры

Возвращаемое значение

Возвращает id отредактированного события.

Пример использования

Пользовательские комментарии

Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.

Для этого нужно всего лишь авторизоваться на сайте

Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.

Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.

Как удалить событие из календаря андроид. Очистить Удалить все события из Google Calendar. Жизнь без GApps, но с приложениями

Приложение «Календарь» используется для просмотра мероприятий, которые вы самостоятельно и создаете, а также мероприятия, на которые вы были приглашены. При первой настройке мобильного устройства, а именно — при настройке основного Google-аккаунта в Календарь были внесены мероприятия, хранящиеся в вашем аккаунте. В данное приложение можно добавить и данные из других учетных записей. Стоит лишь синхронизировать их с вашим приложением.

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

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

  • Повестка дня — представляет собой список мероприятий, хронологически отсортированных. Мероприятия, продолжающиеся целый день или несколько днем обычно отображаются в начале, а дни, в которых отсутствуют мероприятия попросту не отображаются в приложении.
  • День — представляет собой таблицу мероприятий, которая включает в себя целый день. В ней каждая строка представляет собой один час, а красная линия отображает текущее время. Мероприятия, длящиеся весь день или несколько, отображаются в самом верху таблицы.
  • Неделя — содержит в себе график, который характеризует собой неделю. Как и в предыдущих вариантах, мероприятия, занимающие собой весь день или длящиеся несколько дней располагаются в самом верху таблицы.
  • Месяц — в данном режиме мы имеем график мероприятий, расписанный на текущий месяц. Если день содержит какие-либо мероприятия, он имеет возле себя синий столбец. В данном случае отображаются как дни с мероприятиями, так и пустые дни.

Для того, чтобы просмотреть мероприятие, необходимо просто нажать на него, находясь в любом из режимов.

Имеется возможность приглашения сотрудников на мероприятия. Также можно и принимать/отклонять приглашения. В этом случае в ваш «Календарь» автоматически будет внесено событие, на которое вы были приглашены. При этом время мероприятия будет отображаться по времени часового пояса сети.

Для создания мероприятия необходимо выполнить следующие действия:

  1. В абсолютно любом режиме просмотра приложения «Календарь» нажмите клавишу «Меню», затем — Новое мероприятие для открытия формы сведений о мероприятии.
  2. Внесите необходимые сведения о предстоящем мероприятии. К примеру, можно ввести имя мероприятия, время, а также некоторые дополнительные сведения. Если вы используете более одного календаря, можно будет выбрать тот, в который необходимо поместить мероприятие.
  3. По желанию можно пригласить гостей на мероприятие, оповестив их о нем. Для этого в поле «Гости» необходимо внести адреса электронной почты людей, которых вы хотите видеть на своем мероприятии. Для разделения адресов между собой, необходимо разделять их запятой.
  4. Также можно указать и некоторые дополнительные параметры, воспользовавшись Меню -> Показать дополнительные параметры.
  5. После выполнения всех необходимых действий необходимо нажать «Готово» и сохранить событие.


Если вдруг вам необходимо изменить информацию о мероприятии, можно просто нажать на него, а затем нажать Меню -> Изменить мероприятие. При этом откроется уже известный вам экран сведений о мероприятии. Внесите необходимые сведения о мероприятии и нажмите «Готово».

Если вдруг ваши планы изменились, можно удалить мероприятие. Также можно удалять и мероприятия, созданные другими пользователями (при наличии прав доступа). Для удаления необходимо открыть необходимое мероприятие, а затем выбрать Меню -> Удалить мероприятие.

Можно удалить любой календарь, созданный вами кроме основного календаря Outlook, который используется для принимаемых и отправляемых приглашений на собрания. Дополнительные календари, которые открываются, такие как общие, группы или календари SharePoint можно удалить, чтобы они не будут включены в Область навигации или отображаются в представлении «Календарь».

В этой статье

Удаление календаря

В разделе Мои календари представления Календарь щелкните правой кнопкой мыши имя календаря, который нужно удалить.

Примечание: Не удается удалить основной календарь Outlook, которая появляется при первом запуске Outlook.

Выберите команду Удалить календарь .

Для подтверждения удаления нажмите кнопку Да .

Удаление всех элементов из основного календаря

Удалить основной календарь Outlook невозможно, однако можно удалить все его элементы.

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

В области навигации в разделе Мои календари щелкните пункт Календарь .

На вкладке Вид в группе Текущее представление выберите команду Изменить представление и нажмите кнопку Список .

Щелкните список элементов и нажмите сочетание клавиш CTRL+A.

Все элементы в календаре должны быть выделены.

Нажмите клавишу DELETE.

Удаление общего или командного календаря, календаря группы и календаря SharePoint

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

Чтобы удалить общий или командный календарь, календарь группы или календарь SharePoint, выполните указанные ниже действия.

Щелкните имя календаря правой кнопкой мыши и выберите команду Удалить группу или Удалить календарь .

Календарь будет удален из области навигации и из представления «Календарь». Сам календарь не удаляется, так как для просмотра используется только копия содержащихся в нем сведений.

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

Используйте английский вариант этой статьи, который находится , в качестве справочного материала. Вместе с другими участниками сообщества Майкрософт вы можете улучшить эту статью с помощью Community Translation Framework (CTF). Просто наведите указатель мыши на предложение в статье и выберите команду «УЛУЧШИТЬ ПЕРЕВОД» в мини-приложении CTF. Для получения дополнительных сведений о CTF щелкните . Используя CTF, вы соглашаетесь с нашими

Для того, чтобы просмотреть описание события в календаре, нажмите на него один раз. Откроется страница

Для того, чтобы отредактировать какой-либо из параметров события, нажмите Edit . При этом вы перейдете на страницу, похожую на страницу New Event screen (Новое событие), появляющееся, когда вы делаете новую .

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

Есть лишь одно отличие: на этой странице внизу есть большая красная кнопка Delete Event (Удалить событие). Это единственный способ стереть напоминание из вашего календаря.

Как вы уже наверное, заметили, в программе Calendar нет списка запланированных дел. Возможно, он появится когда Apple будет распространить бесплатные обновления программного обеспечения.

Тем временем вы можете запустить Safari и зайти на сайт www.todalist.com, там вы найдете бесплатную программу То Do-list (Список запланированных дел), которая подойдет для iPhone.

Множество подобных приложений для телефонов Nokia с разрешением экрана 360×640, а также игры для нокиа вы найдете на сайте 360na640.ru. Ресурс ориентирован на приложения именно для экрана 360х640 пикселей.

Дополнительные материалы:

  • С помощью весьма эффектной программы календаря, аккуратно синхронизированной с вашим компьютером, iPhone может быть в курсе вашем расписания — и даже напоминать вам о том, что нужно […]
  • Всемирная сеть на iPhone выглядит так же, как и на вашем компьютере, и в этом состоит одна из величайших заслуг Apple. Все, что вы видите, настоящее шрифты, графика, макеты страниц — […]
  • Как и в большинстве современных телефонов, в iPhone есть целый набор дополнительных инструментов — будильников, календарей, блокнотов и т. д. Разница с другими телефонами состоит в […]
  • Спрашивая при встрече «Как поживаешь?», чаще всего в наши дни услышишь в ответ «Куча дел». Мы крутимся как белки в колесе, нам все время нужно куда-то бежать и с кем-то встречаться. И […]

Приложения и сервисы Google (GApps) установлены почти на любом Android-устройстве. Многие владельцы гаджетов не представляют без них своей жизни, другие считают ненужными и не используют. Независимо от оценки полезности приходится признавать недостатки GApps вроде ускоренного расхода батареи или передачи личной информации. Не хотите, чтобы за вами шпионили, а гаджет тормозил и тратил энергию непонятно на что? Тогда избавьтесь от GApps — удалив их, вы не потеряете возможность устанавливать мобильные приложения.

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

Сбор информации о пользователе. Google не просто открыто это делает, но и открыто в этом признаётся. Для чего она следит за нами? Официально — для продажи таргетированной рекламы. (Да-да, и для этого сканируются даже наши письма из Gmail.) Неофициально же можно строить целую пирамиду из теорий, начиная с инопланетного заговора и венчая слоганом «скандалы, интриги, расследования». К примеру, пару лет назад Google начала массово скупать компании, занимающиеся развитием искусственного интеллекта. Особенно те, которые в этом хоть сколько-то преуспели. Смекаете?

Так или иначе, а совершенно официальная слежка есть, и многим это не нравится. Побочная неприятность от всего этого — расход трафика.

Сервис, который не использовали в принципе, успел отъесть 13 МБ за несколько месяцев.

Повышенный расход заряда аккумулятора. Недавно компания Avast Software составила список приложений с автозапуском, которые сокращают время автономной работы устройства и занимают оперативную память. Шесть из десяти самых «прожорливых» приложений в этом антирейтинге — приложения Google. А ведь далеко не всем охота носить с собой внешний аккумулятор или использовать батарею повышенной ёмкости.


Топ-10 самых прожорливых приложений по версии Avast

Занимаемое место в ПЗУ и ОЗУ. Для продвинутых гаджетов это не очень актуально, но не все же гоняются за новинками, а к тем, приблизительно, ста пятидесяти мегабайтам, которые занимают GApps, чувствительны даже смартфоны с 16 ГБ флэш-памяти. Наконец, Google-приложения занимают место в оперативной памяти, и чем дальше, тем больше растут аппетиты не только у ОС Android, но и у GApps. Каждый мегабайт из хотя бы 2 ГБ ОЗУ для активного гаджетомана сегодня на вес золота, а все эти прожорливые приложения отбирают их и отбирают.

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

Создание резервной копии системы. Для создания бэкапа всей системы () необходимо воспользоваться встроенными возможностями рекавери. Рекавери (от англ. recovery mode — «режим восстановления») — это своеобразная мини-ОС, которая есть в любом смартфоне. Она хранится в специальной области памяти и обладает крайне ограниченным набором системных функций вроде сброса на заводские настройки. Нас же интересуют сторонние рекавери с куда более богатой функциональностью. Наиболее популярные сторонние рекавери — CWM (ClockworkMod) и . Как зайти в Рекавери читаем —

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

Чтобы сделать резервную копию в TWRP необходимо в главном меню выбрать пункт Backup , а в CWM — Backup and restore . В большинстве случаев вполне подойдут стандартные настройки.

Получаем рут . В подавляющем большинстве случаев процесс получения root-прав прост и не несёт в себе каких-либо рисков. Вам нужно будет подключить смартфон к компьютеру и запустить утилиту либо запустить специальное приложение на самом смартфоне.

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

Папка /system/app (большая часть приложений) :

  • Books.apk — Google Книги
  • Magazines.apk — Google Журналы
  • Maps.apk — Google Карты
  • Music2.apk — Google Музыка
  • CalendarGoogle.apk — Google Календарь
  • Chrome.apk — Google Chrome
  • Drive.apk — Google Drive
  • GoogleEars.apk — Google Ears (аналог Shazam)
  • GoogleEarth.apk — Google Земля
  • Hangouts.apk — Google Hangouts
  • Keep.apk — Google Keep
  • PlayGames.apk — Google PlayGames
  • PlusOne.apk — Google+
  • Gmail2.apk — Gmail
  • GoogleContactsSyncAdapter.apk — синхронизация контактов
  • CloudPrint.apk — система облачной печати
  • GenieWidget.apk — виджет новостей и погоды
  • GoogleHome.apk — домашний экран с интегрированным Google Now
  • GoogleTTS.apk — система синтеза речи
  • LatinImeGoogle.apk — клавиатура с поддержкой жестов
  • QuickOffice.apk — QuickOffice
  • Street.apk — Google Street
  • SunBeam.apk — живые обои SunBeam
  • Videos.apk — Google Фильмы
  • YouTube.apk — YouTube

Поскольку приложения разбросаны по нескольким папкам, перейдём в другие. В папке /system/priv-app находятся сервисы и фреймворки для механизма синхронизации… и слежки, разумеется:

  • CalendarProvider.apk — хранитель данных календаря
  • GoogleFeedback.apk — система отправки отчётов об использовании Google Play
  • GoogleOneTimeInitilalizer.apk — мастер установки дополнительных Google-приложений
  • GoogleBackupTransport.apk — синхронизация данных установленных приложений, паролей Wi-Fi и некоторых настроек
  • GoogleLoginService.apk — сервис, который связывает устройство с Google-аккаунтом
  • GooglePartnerSetup.apk — сервис, позволяющий сторонним приложениям получить доступ к сервисам Google
  • GoogleServicesFramwork.apk — фреймворк с дополнительной функциональностью
  • Phonesky.apk — Play Store
  • talkback.apk — оповещение голосом о событиях на устройстве
  • PrebuiltGmsCore.apk — Google Services, ядро всего комплекта GApps;
  • SetupWizard.apk — мастер настройки при первом запуске
  • Wallet.apk — Google Кошелёк
  • Velvet.apk — поиск от Google, включает в себя строку поиска на рабочем столе и Google Now

И, наконец, в папке /system/framework находятся фреймворки, необходимые для работы приложений Google:

  • com.google.android.maps.jar
  • com.google.android.media.effects.jar
  • com.google.widevine.software.drm.jar

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

Жизнь без GApps, но с приложениями

Итак, избавились от ненужных приложений Google и вздохнули полной грудью. Но что делать, когда понадобится установить игру или прикладную программу? Официального-то магазина приложений на устройстве теперь нет. Зато, как обычно, есть несколько способов решить возникшую проблему.

Скачивание и установка apk-файлов. Имейте в виду, теперь вам частенько придётся вручную устанавливать приложения через apk-файлы, которые вы сами где-то скачаете. APK — это формат архивов программ для Android; именно они требуются, чтобы установить приложение. Чтобы делать это вручную, нужно прежде всего в настройках системы. Потом запустить apk-файл — его можно напрямую загрузить из интернета (вновь на свой страх и риск, разумеется) или, например, воспользоваться помощью сервиса APK Downloader : на этом сайте вы можете скачать apk тех приложений, которые представлены в Google Play Store. Есть и система поиска, и каталог по разделам — всё как в обычном Play Store. Вы скачиваете apk, переписываете его в ваш смартфон, запускаете установку и надеетесь, что для работы этому приложению не нужны никакие из удалённых GApps.

Кстати, искать приложения можно ещё проще: находите в Google Play на десктопе нужное приложение в браузере и заменяете в строке ввода URL часть «play.google.com » на «apk-dl.com ». Всё просто.

Установка альтернативных магазинов приложений. Можно обойтись без манипуляций с apk-файлами и установить клиенты магазинов приложений, в которых все программы легальны и проверены на вирусы.

Магазин приложений, который устанавливается при заходе с мобильного устройства по данной ссылке. Русского языка и выбора страны «Россия» в настройках нет, поэтому данный сервис подойдёт тем, у кого с английским нет особых проблем. В магазине, по данным Википедии, содержится более 800 тысяч приложений.

Онлайн-магазин от компании Яндекс, в котором представлено более 100 тысяч приложений, и все проверены Антивирусом Касперского. Из особенностей магазина можно отметить возможность оплачивать покупки с помощью сервиса Яндекс.Деньги или со счёта мобильного телефона. Судя по всему, работа над этим сервисом в Яндекс заморожена, но программы продолжают туда добавляться.

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

Использование сервисов Google без пакета GApps

Бесплатных альтернатив почтовому клиенту, картам, и Google Диск множество. Но можно вовсе не устанавливать никакие приложения, ведь если вам понадобится воспользоваться одним из сервисов Google — можно открыть его веб-версию. Кстати, советуем перед удалением тех или иных приложений и сервисов Google проверить, как работают их веб-версии. Функциональность сервиса в браузере часто меньше, чем в специальном клиентском приложении. К тому же не все они сохраняют ваши данные. Например, YouTube в браузере не будет запоминать момент, на котором вы остановили проигрывание ролика. В то же время иногда веб-версии занимают меньше места в ОЗУ и в целом отъедают меньше ресурсов.

Как вернуть приложения и сервисы Google

Если что-то безнадёжно испортилось или вам не понравилась жизнь без Google, восстановить все сервисы и приложения можно одним из трёх способов.

Установка через рекавери. Вам нужно найти архивный файл с GApps специально для вашего смартфона, а в идеале — для вашей версии прошивки, стоковой или сторонней. Подобрать и скачать такой файл поможет приложение Open GApps . Более подробно читаем тут ( Как установить сервисы Google ). Оно автоматически определяет версию системы и архитектуру и предлагает скачать правильный файл. Скачанный тем или иным способом архив необходимо поместить на SD-карту.

Восстановление прошивки из бэкапа. Если вы сделали бэкап с помощью CWM или TWRP , нужно перезагрузиться в режим рекавери. Обычно для этого нужно при включении смартфона удерживать кнопку уменьшения или увеличения громкости. Зайдя в рекавери, первым делом необходимо очистить накопитель от остатков нерабочей системы. Если у вас установлен TWRP , выберите пункт Wipe , затем Advanced Wipe и установите галочки так, как показано на скриншотах.

В случае с CWM достаточно выбрать пункт Wipe Data / Factory Reset и подтвердить действие. После этого вернитесь в главное меню рекавери и нажмите на Restore (для TWRP ) или Backup and restore (для CWM ). Вне зависимости от того, какой рекавери вы используете, дальнейшие действия будут интуитивно понятны: вам необходимо выбрать архив с вашей резервной копией и подтвердить действие. Если бэкапа нет, после сброса (Wipe ) вы можете через рекавери установить на смартфон ту же самую или другую прошивку, поставляемую в виде zip-файла. Подробнее здесь:

Google Calendar является очень популярным тайм-менеджмент, планирование событий и напоминание о том, что сервис поможет вам следить за всех ваших событий. Google Calendar в комплекте с большим количеством замечательных возможностей. Она также позволяет отслеживать события, упомянутые в вашем аккаунте Gmail зарегистрировано. Как вы продолжаете добавлять события, в течение определенного периода времени, вы можете понять, что ваш календарь Google обрастает и должен быть очищен. Удаление события одно за другим, может оказаться очень неспокойное. Итак, есть ли способ, чтобы очистить все события, которые вы не хотите, чтобы отслеживать больше? Да, есть! С помощью нескольких простых шагов, которые вы можете очистить все события в главном календаре. Тем не менее, вы не можете выполнить те же действия, чтобы очистить события из вторичного календаря.

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

Удаление всех событий из Google Calendar

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

Чтобы удалить все события из Google Calendar, сделать, как показано ниже:

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

Удаление дополнительного календаря

Как уже упоминалось ранее, если ваш дополнительный календарь Google тоже обрастает то нет никакого способа, вы можете удалить все события из него. Тем не менее, вы можете удалить сам дополнительный календарь и создать еще один с таким же именем. Посмотрите, как создать дополнительный календарь, на всякий случай, если вы не вспомните, как вы создали один в прошлом.

Чтобы удалить дополнительный календарь:

Это действие удалит выбранный дополнительный календарь на постоянной основе. Если у вас есть общие календарь с другими, он будет удален со своего счета, а также.

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

Исправление проблем

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

  • Очистить куки и кэш-память вашего браузера
  • Используйте другой браузер
  • Выключите другие устройства (например, ваш мобильный телефон или планшетный ПК), которые могут быть синхронизированы с Google Calendar.

Если у Вас возникли вопросы по этой теме, пожалуйста, не стесняйтесь задавать в разделе комментариев. Мы в TechWelkin и наш читатель сообщество будет пытаться помочь вам. Благодарим Вас за использование TechWelkin!

Илон Маск рекомендует:  Географические сервисы
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL