Как создать и настроить свой веб-сервер на VDS (05 сен 2024)

Осенью самое время заняться установкой и тюнингом своего веб-сервера. Не правда ли?

API Яндекс Метрика и Highcharts

Больше
8 года 8 мес. назад - 5 года 3 мес. назад #1 от Aleksej
Aleksej создал тему: API Яндекс Метрика и Google Charts
Публикую, как обещал, код, иллюстрирующий возможность построения виджетов для сайта на основе API Яндекс Метрика и Google Charts.
Демо - на страничке блога .


Code:
<html> <head> <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script> <script type="text/javascript"> google.charts.load('current', {'packages':['corechart']}); google.charts.setOnLoadCallback(drawChart); function drawChart() { var data = google.visualization.arrayToDataTable([ ['Country', 'Visits'], <? $obj = json_decode(file_get_contents('https://api-metrika.yandex.ru/stat/v1/data?id=***********&dimensions=ym:s:regionCountry&metrics=ym:s:visits&oauth_token=******************************'), true); for( $i = 0; $i < 12; $i++){ echo '[', "'", $obj['data'][$i]['dimensions'][0]['name'], "'", ', ', $obj['data'][$i]['metrics']['0'], '],'; } ?> ]); var options = { title: 'Visits to Masterpro.ws' }; var chart = new google.visualization.PieChart(document.getElementById('piechart')); chart.draw(data, options); } </script> </head> <body> <div id="piechart" style="width: 900px; height: 500px;"></div> </body> </html>
Последнее редактирование: 5 года 3 мес. назад пользователем p.rishard.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Dev banner 2
Больше
8 года 8 мес. назад - 8 года 8 мес. назад #2 от Aleksej
Aleksej ответил в теме API Яндекс Метрика и Google Charts
Хм. "Не для протокола, Шарапов. А для души моей слова тебе..." как-то так. Третьи сутки висит на модерации в клубе Яндекс Метрика сообщение, которое "как есть" публикую далее - может, хоть после этого отмодерируют наконец и опубликуют. Почему и питаю всю свою сознательную жизнь стойкую неприязнь к офисам: вот по тому самому. Один лажанулся, второй типа не заметил, третий и вправду не заметил, четвертая "умеет ладить с сослуживцами", пятым-десятым вообще нихрена не нужно, окромя в нужный момент лизнуть задницу высокочтимому своему начальству, дружно сложившись всем стадом на покупку презента к днюхе (недавно только с пеной у рта рассказывал московский френд про такое). Не раз убеждался, к слову сказать, что ребята из спорта в офисах не приживаются: иная совершенно ментальность, иные стандарты поведения. Круговая порука мажет как копоть, а в результате - имеем то, что имеем: довольно критичную уязвимость и весьма странную несуразность, о чем и речь в процитированном сообщении. Но - "дальнейшее - молчание", яндексовцы предпочитают у себя в клубе обсуждать более интересные темы: вот научить бы очередную девочку, как ей прознать по отчетам, откуда, какого полу, из какого региона и кто именно забрел к ней на сайт - вот это да, вот это конструктивно и познавательно. А все остальное - хрень:


Доброго дня.

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

  1. Часов 12 назад удалил приложение, на основе которого был создан отладочный токен, и создал новое приложение и новый токен. До сих пор первый токен несуществующего уже приложения работает. Я чего-то не понимаю, вероятно; оно так и должно быть? А безопасность как же?
  2. Не вижу cross-origin заголовков в ответе сервера Метрики. Не ожидал, неудобно работать. Так и задумывалось? Почему?

Последнее редактирование: 8 года 8 мес. назад пользователем Aleksej.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
8 года 8 мес. назад #3 от serge
serge ответил в теме API Яндекс Метрика и Google Charts
Разработчики обновили Google Charts до v.44, которая оказалась практически неработоспособной. Решение в том, чтобы временно использовать предыдущий релиз (43). Всего лишь исправьте одну строчку, все отлично пашет:

Seems to be a bad release (v44). Until it is fixed, the workaround is to explicitly specify previous version of the API to load instead of using current:

Code:
- google.charts.load('current', {'packages':['gantt']}); + google.charts.load('43', {'packages':['gantt']});


А я смогу! - А поглядим! - А я упрямый!

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
8 года 8 мес. назад - 1 год 4 мес. назад #4 от Aleksej
Aleksej ответил в теме API Яндекс Метрика и Highcharts
Код виджета, демо которого возможно увидеть в статье API Яндекс Метрика и Highcharts .

Code:
<script src="https://code.highcharts.com/highcharts.js"></script> <script src="https://code.highcharts.com/highcharts-3d.js"></script> <script src="https://code.highcharts.com/modules/exporting.js"></script> <script src="https://code.highcharts.com/modules/export-data.js"></script> <script src="https://code.highcharts.com/modules/accessibility.js"></script> <div id="container"></div> <script> Highcharts.chart('container', { chart: { type: 'pie', options3d: { enabled: true, alpha: 45, beta: 0 } }, title: { text: 'External referers', align: 'left' }, subtitle: { text: 'Masterpro.ws', align: 'left' }, tooltip: { pointFormat: '{series.name}: <b>{point.percentage:.1f}%</b>' }, plotOptions: { pie: { allowPointSelect: true, cursor: 'pointer', depth: 35, dataLabels: { enabled: true, format: '{point.name}' } } }, series: [{ type: 'pie', name: 'Доля внешних переходов', data: [ <?php function curl_file_get_contents($url) { $authToken = '*********************************'; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/x-yametrika+json', 'Authorization: OAuth' . $authToken]); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); $obj = curl_exec($ch); curl_close($ch); return $obj; } $url = 'https://api-metrika.yandex.ru/stat/v1/data'; $params = array( 'ids' => '**********', 'metrics' => 'ym:s:visits', 'dimensions' => 'ym:s:externalRefererPathLevel1', 'date1' => '15daysAgo', 'date2' => 'yesterday' ); $obj = curl_file_get_contents($url . '?' . http_build_query($params)); $obj = json_decode($obj, true); for ($i = 0;$i < count($obj['data']);$i++) { echo '[', "'", $obj['data'][$i]['dimensions'][0]['name'], "'", ', ', $obj['data'][$i]['metrics']['0'], '],'; } ?> ] }]
Последнее редактирование: 1 год 4 мес. назад пользователем p.rishard. Причина: Изменен пример кода

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
8 года 8 мес. назад - 8 года 8 мес. назад #5 от serge
serge ответил в теме API Яндекс Метрика и Google Charts
B) Исправили:

Hello everyone,
These issues were due to propagation delays/caching issues with us pushing out a new a version of Google Charts. I strongly recommend against using the workaround suggested in this thread. Using the workaround will mean that you will not get any bugfixes or new features. While this might be the right thing to do for some users, we expect that it's not the right thing for the majority. The issues you're experiencing should no longer be occurring, so it should be safe to switch back to 'current' or 'upcoming'.


А я смогу! - А поглядим! - А я упрямый!
Последнее редактирование: 8 года 8 мес. назад пользователем serge.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
8 года 8 мес. назад #6 от Aleksej
Aleksej ответил в теме API Яндекс Метрика и Google Charts
Надо кэш прикручивать, API Метрика работает, увы, совсем небезупречно... в 5 часов утра, например, вполне возможно получить в ответ на запрос вот эдакое сообщение:

Code:
{"errors":[{"error_type":"backend_error","message":"Запрос не может быть обработан в данный момент из-за возросшей нагрузки. Пожалуйста, отправьте запрос повторно через несколько минут."}],"code":503,"message":"Запрос не может быть обработан в данный момент из-за возросшей нагрузки. Пожалуйста, отправьте запрос повторно через несколько минут."}

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
8 года 6 мес. назад #7 от Aleksej
Aleksej ответил в теме API Яндекс Метрика и Google Charts
Нелучшая, следует отметить, особенность Google Chart - TOS не разрешает использовать скрипты локально, т.е. вы не вправе загрузить скрипты на свой сайт и использовать их таким образом. А новые версии чарта не всегда работают безупречно; нам с вами остается только мониторить страничку своего сайта, на которой используется Google Chart, и время от времени соотносить ее неработоспособность с вот примерно такими сообщениями разработчиков, как приведенный ниже пост... без комментариев.


We are about to push a new Google Charts Production Release - V45.

The production release was delayed until now because we were trying to work around a problem, but we were unsuccessful. However, it turns out this problem (which was displaying more than one Material chart in the same page) also existed in the previous release (v42) so this new release will not be any worse than that. If you need this fixed, please try frozen v43 or v44.

The purpose of this push is to update the old jsapi-loaded library with a version that is close to the previously released v44. We are doing this primarily to incorporate some security fixes that are already part of v44 into the jsapi loaded release, and as such, there are very few additional bug fixes and these are unlikely to be visible to people.

The last time we were successful updating the old jsapi loaded library was for v42. So if you are still using that version of the code, you should look at the release notes for v43 and v44 to see what has changed.

If your pages load the library this way, you will be affected by this production release.

If you have problems with this production release, you may want to switch to loading the frozen v42, so your code will look like this...

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
8 года 5 мес. назад #8 от Прохожий
Прохожий ответил в теме API Яндекс Метрика и Google Charts
Имхо, выдирать из контекста статистики только 12 стран суть нелучшее решение... процентное соотношение формируется неправильно.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
8 года 5 мес. назад #9 от serge
serge ответил в теме API Яндекс Метрика и Google Charts

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



Меняем, в цикле, эту строчку:

Code:
for( $i = 0; $i < 12; $i++){


на эту:

Code:
for( $i = 0; $i < count($obj['data']); $i++){

А я смогу! - А поглядим! - А я упрямый!

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
5 года 11 мес. назад - 5 года 3 мес. назад #10 от serge
serge ответил в теме API Яндекс Метрика и Google Charts

Здравствуйте!
Ваши приложения передают токен авторизации в параметрах URL: этот способ авторизации перестанет поддерживаться 13 февраля 2019 года.
Чтобы продолжить работу с API Метрики, вам необходимо настроить авторизацию по токену в HTTP-заголовке.
Пример передачи OAuth-токена в HTTP-заголовке:

Code:
GET /management/v1/counters HTTP/1.1 Host: api-metrika.yandex.ru Authorization: OAuth 05dd3dd84ff948fdae2bc4fb91f13e22bb1f289ceef0037 Content-Type: application/x-yametrika+json Content-Length: 123

Обратите внимание: 23 января, 30 января и 6 февраля 2019 года запланировано профилактическое отключение устаревшего способа авторизации — в эти дни он будет временно отключен, а с 13 февраля полностью прекратит работу. За несколько дней до профилактических отключений мы пришлём напоминание.
Если у вас есть вопросы, напишите в службу поддержки.

Команда Яндекс.Метрики


Вот такое письмо пришло. Стало быть, решение для PHP: если раньше передавали токен через параметры (а кто-то изначально ведь передавал в заголовках, оно то же самое вид сбоку), то теперь надобно как-то так навскидку:

Code:
<? function curl_file_get_contents($url) { $authToken = '**************************'; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/x-yametrika+json', 'Authorization: OAuth' . $authToken]); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); $obj = curl_exec($ch); curl_close($ch); return $obj; } $url = 'https://api-metrika.yandex.ru/stat/v1/data'; $params = array( 'ids' => '*******', 'metrics' => 'ym:s:visits', 'dimensions' => 'ym:s:externalRefererPathLevel1', 'date1' => '7daysAgo', 'date2' => 'yesterday' ); $obj = curl_file_get_contents($url . '?' . http_build_query($params)); $obj = json_decode($obj, true); for ($i = 0;$i < count($obj['data']);$i++) { echo '[', "'", $obj['data'][$i]['dimensions'][0]['name'], "'", ', ', $obj['data'][$i]['metrics']['0'], '],'; } ?>

Пробуйте, кому оно надо. Должно работать.

Прим. модератора. Внимание, немаловажная ремарка , по ссылке.

А я смогу! - А поглядим! - А я упрямый!
Последнее редактирование: 5 года 3 мес. назад пользователем p.rishard. Причина: Дополнено

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Работает на Kunena форум