Service

Примітки

geo@nvkarta.com

Інформер погоди

Розробка серверного РНР віджету

На початку, для демонстрації погоди з головної сторінки сайту, ми користувалися адаптивним віджетом WeatherWidget.io, який, своєю чергою звертався до сервісу DarkSky для отримання прогнозної інформації.

Виявилося, що університетська мережа NUSTA не завжди показує віджет погоди клієнтам, який пропонує сайт WeatherWidget.io Можливо, це пов'язано з безпекою і хвилює системного адміністратора, тому сторонні скрипти не всюди виконуються на комп'ютерах університету, то ж ми не стали з ним сперечатися.

Проте, віджет настільки вдало вписався в задум, та показав переваги перед іншими в плані адаптивності, що ми вирішили розробити його самостійно, з приблизним функціоналом, трохи змінивши дизайн. Більше того, зареєструвавшись на головному сайті Dark Sky ми отримали 1000 безкоштовних запитів на день і вважаємо, що як для ресурсу з невеликою авдиторією, того цілком достатньо. Результат:

Forecast: powered by Dark Sky
Ірпінь
зараз
-7°c
Хмарно
Нд
-3°c
-9°c
Пн
-5°c
-12°c
Вт
-5°c
-8°c
Ср
-2°c
-11°c
Чт
-5°c
-7°c
Пт
0°c
-4°c

Тепер, маючи DarkSky Forecast API, та невеликий досвід у написанні скриптів PHP разом з CSS, ми можемо змінювати параметри інформера, й перестанемо хвилюватися про його відображення в подальшому. Що цікаво, стала помітна різниця в отриманні даних, які виявилися точнішими за рахунок меншого часу кешування результату запиту, в порівнянні з віджетом від WeatherWidget Для реалізації адаптивності і сторінки вцілому, ми скористувалися CSS Berry4.0 на платформі Albireo, власне, віджет був реалізований як snippet, саме до цього фреймворку.

На майбутнє:

Код PHP не оптимізований, і ми його доопрацюємо пізніше. В першу чергу, це стосується геокодування, для визначення місця розташування гостей, щоб вони мали можливість бачити погоду у своїй місцевості.

Особливості:

Наш сервер знаходиться в Nederland, і обробляє мітки часу як Unix timestamps в зоні GMT, що приводить до некоректного зображення дат в зоні Europe/Kiev. На локалхості цього не помітно, тому ми були трохи здивовані цим фактом після перенесення скрипта на сервер. Після уважного вивчення документації, знайдене просте рішення - встановлення місцевого часу функцією РНР : date_default_timezone_set("Europe/Kiev"); так що "проблема" була вирішена невдовзі.

На превеликий жаль, після такої цікавої роботи, нас попередили листом, що DarkSky АРІ була 30.03.2020р продана компанії Apple Inc. і перестане працювати безплатно, за виключенням користувачів безпосередньої підписки на АРІ.
Тобто, обслуговування підписки буде продовжено до кінця 2022р, при тому, що нових клієнтів більше не реєструватимуть. Ми вдало вскочили в останній вагон і маємо ключа, принаймні, до кінця 2022-го року, сподіваємось, що політика нового власника зміниться надалі.

Ідеї та матеріали для роботи запозичені:

The DarkSky Companyсервер прогнозу погоди
Weather IconsCSS піктограми для погоди, які створив Erik Flowers
Using the DarkSky API with PHPнавчальний відеокурс (ENG) по використанню API від Peter Medina
DarkSky Forecast APIприклад використання від Tobias Redmann