Уже с месяц Яндекс блокирует строку поиска для тех, у кого включена блокировка Яндекс метрики. Выглядит это вот так:
Довольно подло. Стоит отключить блокировщик, как все работает
Мы не гордые, пойдем в гугл.
Зашла легко и быстро, меньше чем за день.
В книге много чего поверхностного, и после каждой главы еще по 3-7 ссылок для дальнейшего обучения. Но приятно то, что книга свежая, про Symfony5 рассказывает, и что на профессиональном уровне, а не вот это — а сейчас мы напишем Hello world
Знал, но хорошо освежил в памяти
А вот это для меня было новое
Ранее я описывал алгоритм авторизации Digest, как самому собрать пакет данных
Для PHP все оказалось проще, в CURL уже есть готовый механизм, который делает 2 запроса для правильной авторизации
Это параметр CURLOPT_HTTPAUTH => CURLAUTH_DIGEST,
Полностью запрос:
$request =[
'SOAPAction: "http://yandex.ru/"',
'Content-Type: text/xml;charset=UTF-8',
];
$options = array(
CURLOPT_URL => $url,
CURLOPT_HEADER => true,
CURLOPT_VERBOSE => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_SSL_VERIFYPEER => false, // for https
CURLOPT_USERPWD => $username . ":" . $password,
CURLOPT_HTTPAUTH => CURLAUTH_DIGEST,
CURLOPT_HTTPHEADER => $request,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS =>"xmlRequest=" . $input_xml // если нужно передать xml в теле POST
);
$ch = curl_init();
curl_setopt_array( $ch, $options );
try {
$raw_response = curl_exec( $ch );
// validate CURL status
if(curl_errno($ch))
throw new Exception(curl_error($ch), 500);
// validate HTTP status code (user/password credential issues)
$status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($status_code != 200)
throw new Exception("Response with Status Code [" . $status_code . "].", 500);
} catch(Exception $ex) {
if ($ch != null) curl_close($ch);
throw new Exception($ex);
}
if ($ch != null) curl_close($ch);
echo "raw response: " . $raw_response;
Хонг Юни
Нунчи. Корейское искусство предугадывать поступки людей и мягко управлять любой ситуацией
ISBN: 978-5-04-108801-9
Не понравилась от слова совсем. Книга написаная женщиной для женщин, где основной посыл — как бы чего не случилось и лучше помолчать, пусть другие сами догадываются что у вас на уме. Будьте скрытыми и анализируйте до тараканов. Примеры в книге очень примитивные и явно нацелены на американскую аудиторию.
Одна из цитат — Эйфелева башня: Единственное место, где ее не видно
Это гениально! Раньше такие цитаты очень любили в ВК.
Ричард Брэнсон
Бизнес в стиле Virgin
ISBN: 978-5-00117-644-2
Забавная книга, часть которой изложена в стиле вопрос — ответ. В основном Ричард рассказывает о своей компании и его опыт сложно транслировать. Понравился один момент: Virgin Airlines взяла на себя обязанности по улучшению экологии и уменьшению к 2020 году вредных выбросав. Думаю в 2020 году это удалось не только Virgin.
Удивил тот факт, что мужик уже давно не молодой, за 70. Но взгляды его довольно прогрессивные.
Прочитал Чичваркин Е…гений. Если из 100 раз тебя посылают 99 ISBN: 978-5-91180-641-5 Особо ценного материала в книги нет и пересказать ее сложно. На тройку.
https://habr.com/ru/company/domclick/blog/548610/
Липкие сессии для самых маленьких [Часть 1] _ Блог компании ДомКлик _ Хабр
https://12factor.net/ru/
Understanding your Symfony app with Prometheus:
https://blog.4xxi.com/understanding-your-symfony-app-with-prometheus-fdb4b0124d99
Сбор и анализ логов с Fluentd:
https://habr.com/ru/company/selectel/blog/250969/
О сборке метриков:
https://www.youtube.com/watch?v=RPK5fp9-4yI
Fluentd
https://mcs.mail.ru/help/ru_RU/cases-logs/case-swarm
Fluentd docker
https://docs.docker.com/config/containers/logging/fluentd/
Про PUSHGATWAY очень мало написано в инете, особенно под PHP
Для установки локально PUSHGATWAY docker-compose.yml:
pushgateway:
image: prom/pushgateway
restart: always
container_name: app2022-pushgateway
ports:
- 9091:9091
- 9090:9090
networks:
- front
- backend
Есть библиотека для работы с pushgateway
https://github.com/PromPHP/prometheus_push_gateway_php -> promphp/prometheus_push_gateway_php
Однако, нашел хороший простой класс, который основан на GuzzleHttp\Client:
https://github.com/markarik/wnl-platform/blob/9f4383e850373e1849f04f6d1487268cf91fa615/app/Console/PrometheusPushgateway.php
Немного модифицировал его под свои нужды, и получилось вот такое
<?php
namespace App\Handler;
use GuzzleHttp\Client;
use GuzzleHttp\Exception\GuzzleException;
class PrometheusPushgateway
{
public function notify($count, $code=200)
{
$url = 'http://pushgateway:9091/metrics/job/symfony/instance/sender';
$url = getenv('PUSHGATWAY_URL');
$client = new Client();
try {
$bodyLines = [
"# HELP response_symfony_code_count",
"# TYPE response_symfony_code_count",
"response_symfony_code_count {code=\"${code}\"} ${count}"
];
$body = implode("\n", $bodyLines) . "\n";
$client->request('POST', $url, [
'body' => $body
]);
} catch (GuzzleException $exception) {
exit('error');
}
}
}