Sign in

Зарегистрируйтесь, чтобы стать полноправным участником сообщества Masterpro.ws.

2017-03-30

This complex of dusty nebulae lingers along the edge of the Taurus molecular cloud, a mere 450 light-years distant. Stars are forming on the cosmic scene. Composed from almost 40 hours of image data, the 2 degree wide telescopic field of view includes some youthful T-Tauri class stars embedded in the remnants of their natal clouds at the right. Millions of years old and still going through stellar adolescence, the stars are variable in brightness and in the late phases of their gravitational collapse. Their core temperatures will rise to sustain nuclear fusion as they grow into stable, low mass, main sequence stars, a stage of stellar evolution achieved by our middle-aged Sun about 4.5 billion years ago. Another youthful variable star, V1023 Tauri, can be spotted on the left. Within its yellowish dust cloud, it lies next to the striking blue reflection nebula Cederblad 30, also known as LBN 782. Just above the bright bluish reflection nebula is dusty dark nebula Barnard 7.

Astronomy Picture of the Day на вашем сайте

Продолжаем наш интернет-курс, посвященный изучению php, js, xml и json.

Мы научились выводить на страничке сайта прогноз погоды, используя API отличного погодного сервиса World Weather Online, получили курсы валют с сайта ЦБ и перечень уязвимых Joomla-extensions в формате JSON от Phil Taylor, рассмотрели возможность разбора JSON без php вообще, на одних только циклах js... что бы нам с вами еще такого общественно-полезного сделать, дабы закрепить пройденное? - тьфу, я хотел сказать, узнанное и найденное... учеба в бытность когда-то очень-очень давно в одной очень-очень средней школе заставила навсегда запомнить: "проходить" возможно только мимо чего-то, во всех иных случаях контент этого слова неприменим.

 

 

Что же, давайте для разнообразия создадим что-то не столь практичное и актуальное сегодня, как курсы валют с сайта ЦБ, может быть... и, тем не менее. В противовес и антитезу средней школе, так сказать! - помнится, на уроках я как мог отнекивался от чтения совершенно бесталанной, на мой тогда взгляд, "Молодой гвардии", а вот книги Станислава Лема, братьев Стругацких и Владислава Крапивина взахлеб читал уже после уроков. И не могу сказать, что жалею об этом... предлагаю попробовать вновь пойти по этому пути: оставим здоровый практицизм (сделавший, надо сказать, кое-кого из моих однокашников - безукоризненно-образцово-показательных в школьную пору комсомольцев-комсоргов-активистов - вполне успешными деятелями постсоветского капиталистического бизнеса) где-то далеко в стороне и сотворим на сегодняшнем уроке нечто не вполне рациональное... но - заставляющее по-хорошему вспомнить о прочитанных в далеком детстве Эдеме и Солярисе; напишем сегодня код, результатом выполнения которого будет ежедневно обновляемая на нашем сайте картинка, Astronomy Picture of the Day, с сайта NASA - звездные миры, галактики, туманности и квазары... да, каждому свое.

Прежде всего, нам с вами понадобится получить API KEY на странице NASA'S DATA PORTAL. К слову сказать, мы смогли бы добиться решения поставленной задачки и без обращения к API, а посредством, скажем, вот этого, приведенного на форуме, скрипта; но понадобился бы еще и PHP Simple HTML DOM Parser. Да, картинка будет та же самая - APOD, Astronomy Picture of the Day - но зачем оно нам? Напишем свой код; тем более, будет он значительно более простым. Итак:

 

<style type="text/css">
.exp {
font-style: italic;
}
.img_apod img {
width: 70%;
}
</style>
<?
$url = 'https://api.nasa.gov/planetary/apod?api_key=VASH_API_KEY';
$obj = json_decode(file_get_contents($url));
$headers = @get_headers($obj->url);
$rest = substr($headers[1], 10);
if(!preg_match("|200|", $headers[5])) {
$best_images = Array(
"https://apod.nasa.gov/apod/image/1210/geyseraurora_howell_2163.jpg",
"https://apod.nasa.gov/apod/image/1210/meteorviolet_salomonsen_1200.jpg",
"https://apod.nasa.gov/apod/image/1010/hartley2pacman_fernandez.jpg",
"https://apod.nasa.gov/apod/image/1007/ISS023-E-58455lrg.jpg"
);
$rand_keys = array_rand($best_images, 1);
echo '<div class="img_apod"><img src="' . $best_images[$rand_keys] . '"/>';
} else {
?>
<p> </p>
<div class="img_apod"><?='<img src="' . $rest . '"/>';?></div>
<p> </p>
<div class="exp"><?=($obj->date);?></div>
<p> </p>
<div class="exp"><?=($obj->explanation);?></div>
<?
}
?>

 

Комментарии крайне несложны: как видите, в одну строку мы с вами получаем JSON посредством file_get_contents (не забудьте ввести ваш API KEY) и декодируем посредством json_decode, затем проверяем ответ сервера в заголовках и выводим в HTML изображение, дату и описание. Стили уж привяжите к дивам сами, какие пожелаете... еще не мешает добавить те или иные проверки JSON и несколько своих картинок; на случай, если API (или линк на изображение), что называется, "при наличии отсутствия" (такое бывает здесь на удивление нередко) - не поленитесь пролистать форум, ссылка чуть выше. А наш урок на этом - закончен. Enjoy!