Все потоки
Поиск
Написать публикацию
Обновить
6.02

Яндекс API *

Пишем под сервисы Яндекса

Сначала показывать
Порог рейтинга
Уровень сложности

«Сообщения сообщества» и «Вебвизор» от Яндекса

Время на прочтение1 мин
Количество просмотров4K
Добрый день, уважаемый пользователь! Не так давно ВКонтакте анонсировал сервис «Сообщения сообщества». А уже появились первые грабли и костыли по работе с ним, а точнее с тем как посмотреть на свой сайт глазами посетителя. Вы запускаете Яндекс.Вебвизор. А там:

image

Простое решение проблемы под катом.
Читать дальше →

Яндекс.Карты (а также Google Maps и др.), когда вы начнёте использовать mesh-сети?

Время на прочтение2 мин
Количество просмотров9.5K

А ведь для этого есть очень хорошие предпосылки:


  1. Территориальная привязка наиболее часто требуемых квантов информации (изображений части карты/схемы/спутника, метаинформации о пробках и т. д.)
    Значительная часть пешеходов, использующих приложение-карты в окрестности точки А, будут использовать карты окрестности точки А. Значит, можно попробовать получить необходимую информацию не от сервера через мобильный интернет, а от другого пользователя.


  2. Дороговизна трафика до сервера. Приложения-карты часто используются на мобильных устройствах, которые, в свою очередь, используют недешёвый и редко безлимитный мобильный интернет (недовольство сиим фактом на Хабре высказывалось ). Конечно, фрагмент карты не так уж тяжёл, но не следует забывать про подводные камни наподобие округления сессий в большую сторону. Кроме того, скорость мобильного интернета часто оставляет желать лучшего.
    Очевидно, что экономия мобильного трафика — это конкурентное преимущество.

Читать дальше →

API Яндекс.Панорам: как сделать свою виртуальную прогулку или просто довести человека от метро

Время на прочтение11 мин
Количество просмотров33K

Нас очень давно просили сделать API, который позволяет встраивать Панорамы Яндекса на свои сайты, и мы, наконец, смогли это сделать. Даже больше: наш API даёт возможность создавать собственные панорамы.


В этом посте я расскажу, что вообще надо знать, чтобы делать такие виртуальные прогулки. Почему сделать API для них было не так-то просто, как мы разрешали разные встающие на пути проблемы и подробно объясню, что вы сможете сделать с помощью нашего API (больше, чем может на первый взгляд показаться).



Движок


Сервис панорам запустился на Яндекс.Картах в далеком сентябре 2009 года. Поначалу это были лишь несколько панорам достопримечательностей и работали они, как вы, наверное, догадываетесь, на Flash. С тех пор много воды утекло, панорам стало несколько миллионов, начали быстро расти мобильные платформы, а Flash туда так и не пробрался. Поэтому примерно в 2013 году мы решили, что нам нужна новая технология. И основой для этой технологии стал HTML5.

Читать дальше →

Leaflet как оболочка для «Яндекс.Карт» — отображаем 100 тысяч маркеров на карте

Время на прочтение4 мин
Количество просмотров44K
Я очень люблю Leaflet. С его помощью можно очень быстро строить свои интерактивные карты. Однако, практически все доступные поставщики тайлов (слоёв для карт) предоставляют свои услуги за весьма внушительные деньги. Существуют такие OpenSource-проекты, как OSM, но не всегда их тайлы удовлетворяют своим внешним видом.

Цель


Цель заключалась в том, чтобы слепить своего полностью бесплатного кентавра. Мне всегда нравились Yandex-карты, но не их API. Поэтому я заинтересовался вопросом внедрения Яндекс-карты, как слоя для Leaflet.
Читать дальше →

Собственный «Кто звонил?» на базе Мультифона

Время на прочтение6 мин
Количество просмотров7.8K
На какие вопросы вы найдёте ответы в этой статье:

  • как отправлять USSD через GSM/3G/4G-модем и читать ответы;
  • как отправлять SMS через Мультифон;
  • как использовать Яндекс SpeechKit в автоответчике на Asterisk.

На какие вопросы вы не найдёте ответов:

  • зачем нужен собственный «Кто звонил?».
Поехали

БЭМ-методология: с чего всё начиналось и зачем это всё нужно

Время на прочтение13 мин
Количество просмотров247K
На Хабре уже много писали о методологии БЭМ, выросшей в Яндексе. И мы решили, что пора системно рассказать о том, откуда она появилась и что сделало БЭМ таким, каким мы его знаем. Думаем, это будет интересно не только тем, кто уже использует БЭМ, но и тем, кто считает, что эта методология не подходит для их проектов. Возможно, они увидят, что мы решали проблемы, похожие на их собственные, и найдут что-то полезное для себя.

image

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

Расширенный поиск Яндекса (и Гугла) с помощью установленного скрипта или в интерфейсе

Время на прочтение9 мин
Количество просмотров59K
В яндекс-поисковике, как и в Гугле, есть настройки расширенного поиска (по датам, документам, сайтам, стране, языку, ...) и специальные страницы для расширенного поиска. То и другое бывает неудобно из-за интерфейса — большого количества нажимаемых кнопок, кликов и движений. Для некоторых (частоиспользуемых) режимов поиска сделаны юзерскрипты с выбором одной из десятков кнопок в один клик. На экране видны лишь несколько стартовых кнопок, работающих как спадающие списки по наведению мыши.

Такой скрипт, когда-то бывший без спадающих списков, давно работал на страницах Гугла, и, судя по количеству скачиваний, приобрёл популярность среди англоязычных пользователей (есть выбор 5 языков интерфейса). Однажды подумалось, что его несложно будет перенести на Яндекс, и на выходных за пару дней адаптация и перекраска под цвета Яндекса была сделана, и теперь он представляется «целевой аудитории» — людям из IT, которым иногда приходится много искать и которым привычно устанавливать дополнительные скрипты и ходить по гитхабам.
далее

Насколько важен API или сравниваем Яндекс.XML и реальную выдачу

Время на прочтение2 мин
Количество просмотров13K
Всегда было интересно, существует ли разница между поисковой выдачей Яндекса и их API (xml.yandex.ru), решающим такие же задачи (официальная позиция: Яндекс.XML — возможность делать поисковые запросы к Яндексу и публиковать результаты поиска на своем сайте).

Известно, что данные в Яндекс.Вебмастер всегда сильно запаздывают и расходятся с реальностью: информация, которую можно получить через выдачу (количество проиндексированных страниц, ссылки и пр.) появляется в ЯВМ лишь через несколько суток.

Но поскольку в Яндексе выступает против непосредственного парсинга выдачи, они сделали альтернативу через получение данных по xml.
Читать дальше →

Автоматизация вывода виджета Яндекс.Карты на платформе 1C Bitrix

Время на прочтение3 мин
Количество просмотров8.1K
С недавних пор, не по собственной воле, пришлось использовать 1С Битрикс. Не скажу, что получил эстетическое удовольствие от работы с системой, однако ожидал худшего. Итак, проблемы:

  • на странице >200 блоков, каждый из которых содержит информацию о местоположении и виджет bitrix:map.yandex.view. В результате, когда пользователь пытается открыть страницу — процесс браузера съедает все что видит;
  • исходный код страницы — это >6000 строк html текста с элементами php для вывода виджета карт;
  • никакой БД нет. Редактирование этой страницы производилось только руками;
  • местоположение было дано только в виде почтового адреса, от чего добавление карты происходило руками в визуальном редакторе;

Читать дальше →

Подводные камни использования Excel Power Query и MySQL для автоматизации отчетности

Время на прочтение7 мин
Количество просмотров34K
image
Всем привет.
Наступил новый 2016 год, а значит пора обновить инструменты для упрощения скучной механической работы. Отделы аналитики, маркетинга, продаж часто сталкиваются со следующими трудностями при обновлении отчетности:
1. Данные приходится собирать воедино из нескольких источников.
2. Отчеты составляются в Excel, что накладывает значительные ограничения на объем обрабатываемых данных.
3. Внесение изменений в заранее настроенные разработчиками выгрузки дело как правило не самое быстрое.

Если отчеты нужно обновлять еженедельно или даже ежедневно, то эта процедура становится весьма напряжной даже для самых терпеливых. С помощью надстройки Excel Power Query и записи данных в MySQL можно свести обновление большинства отчетов до простого нажатия кнопки «Обновить»:
1. Данные из любого количества источников импортируются через SQL-запросы в обычные таблицы Excel.
2. Даже из большой базы можно записывать в Excel только небольшую часть данных (например, итоговые суммы за нужный диапазон дат с группировкой только по нужным столбцам).
3. Изменения в отчет можно вносить просто поменяв SQL-запрос. Далее формируем нужный отчет стандартными средствами Excel.

В этой статье я покажу как настраивать и автоматически заполнять простые базы данных MySQL (на примере выгрузки статистики всех ключевых слов из Яндекс Метрики), а потом одной кнопкой обновлять отчеты в Excel, используя надстройку Power Query. Power Query имеет весьма странные особенности работы при составлении SQL-запросов (особенно динамических), которые мы разберем во второй части статьи.
Читать дальше →

Интерактивная карта клиентов — Apache Spark Streaming и Яндекс.Карты

Время на прочтение6 мин
Количество просмотров17K
Бигдата напирает. Бизнесу уже недостаточно уметь обрабатывать ночью накопленные за день данные и принимать решение с задержкой в сутки. Хотят, чтобы система анализировала данные в режиме онлайн и реагировала быстро на:
  • изменение котировок
  • действия пользователей в онлайн-игре
  • отображала агрегированную информацию из соцсетей в различных проекциях

и т.д. Если вы так не умеете, то смузи уже не нальют.

Читать дальше →

Применение SpeechKit Cloud API для озвучивания погоды и новостей от Yandex

Время на прочтение9 мин
Количество просмотров14K
Добрый день! В данной статье хотелось бы рассказать о том, как можно сделать на сайте «Голосовой погодный и новостной информер», который бы, например при выборе города не только показывал, но и рассказывал фактический прогноз погоды, а так же произвольную новость. На самом деле этот скрипт разрабатывался для информирования в системе «Умный Дом», но может быть с легкостью переделан под любой сайт, имеющий на хостинге поддержку PHP, что и было сделано для этой статьи. В примере для синтеза речи, будет использоваться технология SpeechKit Cloud API от компании Yandex и XML парсер Yandex погоды и новостей, написанные на PHP.

Что понадобится для реализации:
  • Web сервер с поддержкой PHP (можно локальный типа Денвера).
  • Ключ Yandex SpeechKit (для некоммерческих проектов можно получить бесплатно).
  • Если ключ не дают без наличия у Вас сайта, то создать сайт можно на Hostinger.ru.
  • Список ID городов.

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

Принцип работы:
  • Отправляем запрос на получение mp3 файла, для выбранного города.
  • Парсим XML файл, получая необходимые параметры.
  • Корректируем окончания слов, для постановки правильного произношения.
  • Устанавливаем параметры генерации mp3 файла (голос, тембр, формат файла, язык, текст).
  • Генерируем mp3 файл.
  • Создаем объект Audio HTML 5 и воспроизводим файл.

Скрипт с формой для выбора городов index.html
<!DOCTYPE html>
<html lang="ru">
<head>
<title>Тест SpeechKit Cloud API от компании Yandex.</title>
<meta charset="utf-8">
</head>
<body>
<script language="javascript" type="text/javascript">
function Get_Weather()
{
   var tts_text=document.getElementById('weather').value;
   console.log(tts_text);
	var response="weather.php?&q="+encodeURI(tts_text); //путь до mp3 файла
	var audio = document.getElementById("gameMusic");
		if (audio)
		{
			audio.parentNode.removeChild(audio);
		}
	
		// создаём новый элемент audio
		audio = document.createElement("audio");
		audio.setAttribute("id", "gameMusic");
		audio.setAttribute("autoplay", "true");
		//audio.setAttribute("loop", "false");
	
		var mp3 = document.createElement("source");
		mp3.setAttribute("src", response);
		mp3.setAttribute("type", "audio/mpeg");
	
		audio.appendChild(mp3);
		audio.play();
		document.body.appendChild(audio);
}
function Get_News()
{
   var tts_text=document.getElementById('news').value;
   console.log(tts_text);
	var response="news.php?&q="+encodeURI(tts_text); //путь до mp3 файла
	var audio = document.getElementById("gameMusic");
		if (audio)
		{
			audio.parentNode.removeChild(audio);
		}
	
		// создаём новый элемент audio
		audio = document.createElement("audio");
		audio.setAttribute("id", "gameMusic");
		audio.setAttribute("autoplay", "true");
		//audio.setAttribute("loop", "false");
	
		var mp3 = document.createElement("source");
		mp3.setAttribute("src", response);
		mp3.setAttribute("type", "audio/mpeg");
	
		audio.appendChild(mp3);
		audio.play();
		document.body.appendChild(audio);
}
</script>
<h1><span>Тест SpeechKit Cloud API от компании Yandex.</span></h1>
<h2>Погода</h2>
<select size="1" onclick="Get_Weather();" id="weather"> 
			 <option disabled>Выберите город</option> 
			 <option value="27612">Москва</option> 
			 <option value="34880">Астрахань</option>
			 <option value="26063">Санкт-Петербург</option>
			 <option value="25913">Магадан</option>
</select>
<h2>Новости</h2>
<select size="1" onclick="Get_News();" id="news"> 
			 <option disabled>Выберите город</option> 
			 <option selected value="Astrakhan">Астрахань</option> 
				<option  value="Volgograd">Волгоград</option>
				<option  value="Krasnodar">Краснодар</option>				
				<option  value="Moscow">Москва</option>
				<option  value="Saratov">Саратов</option>
</select>
</body>
</html>


Горда можно добавлять путём установки новых параметров option в элементе select.

Скрипт генерации mp3 файла для погоды weather.php
<?php
	 $id=$_GET["q"]; // id города
	 $url="http://export.yandex.ru/weather-ng/forecasts/".$id.".xml"; // url xml файла 
    $xml = simplexml_load_file($url); // интерпретируем XML-файл в объект
    //параметры:
    $city=$xml['city']; //город
    $temp=$xml->fact->temperature; // температура
    $weather_type=$xml->fact->weather_type; // тип погоды
    $humidity=$xml->fact->humidity; // влажность
    $wind_direction=$xml->fact->wind_direction; // направление ветра
    $wind_speed=$xml->fact->wind_speed; // скорость ветра
    $pressure=$xml->fact->pressure; // давление
       
   
	$znak="плюс";
	if($wind_direction=="e") {	$wind_direction_text="восточный";}
	if($wind_direction=="w") {	$wind_direction_text="западный";}
	if($wind_direction=="s") {	$wind_direction_text="южный";}
	if($wind_direction=="n") {	$wind_direction_text="северный";}
	if($wind_direction=="se") {	$wind_direction_text="юго-восточный";}
	if($wind_direction=="ne") {	$wind_direction_text="северо-восточный";} 
	if($wind_direction=="sw") {	$wind_direction_text="юго-западный";}
	if($wind_direction=="nw") {	$wind_direction_text="северо-западный";} 
												
	$minus_arry=preg_match("/(-)/", $temp, $minus_out);
	if (!empty($minus_out[1]))
	{ $znak="минус";
		$temp=str_replace("-","",$temp);
	}
							
	 //градус
  	if(	$temp=="1" or $temp=="21" or $temp=="31" or $temp=="41" or $temp=="51" or $temp=="61" or $temp=="71" or $temp=="81" or $temp=="91" or $temp=="101") 
  	{
  			$text="градус";
  	} 
  	else 
  	{
	//градуса	
  	if(   $temp=="2"  or $temp=="3"  or $temp=="4"
  			or $temp=="22" or $temp=="23" or $temp=="24" 
  			or $temp=="32" or $temp=="33" or $temp=="34" 
  			or $temp=="42" or $temp=="43" or $temp=="44" 
  			or $temp=="52" or $temp=="53" or $temp=="54"
  			or $temp=="62" or $temp=="63" or $temp=="64" 
  			or $temp=="72" or $temp=="73" or $temp=="74" 
  			or $temp=="82" or $temp=="83"	or $temp=="84" 
  			or $temp=="92" or $temp=="93" or $temp=="94"
  			or $temp=="102" or $temp=="103"
  		) {$text="градуса";} else {$text="градусов";}  											
  						
  	}
  									
  									
  									
  	//процент
  			
  	if(	$humidity=="1" or $humidity=="21" or $humidity=="31" or $humidity=="41" or $humidity=="51" or $humidity=="61" or $humidity=="71" or $humidity=="81" or $humidity=="91" or $humidity=="101") 
  	{
  		$humidity_text="процент";
  	} 
  	else 
  	{
		//процента	
  		if(   $humidity=="2"  or $humidity=="3"  or $humidity=="4"
  				or $humidity=="22" or $humidity=="23" or $humidity=="24" 
  				or $humidity=="32" or $humidity=="33" or $humidity=="34" 
  				or $humidity=="42" or $humidity=="43" or $humidity=="44" 
  				or $humidity=="52" or $humidity=="53" or $humidity=="54"
  				or $humidity=="62" or $humidity=="63" or $humidity=="64" 
  				or $humidity=="72" or $humidity=="73" or $humidity=="74" 
  				or $humidity=="82" or $humidity=="83" or $humidity=="84" 
  				or $humidity=="92" or $humidity=="93" or $humidity=="94"
  				or $humidity=="102" or $humidity=="103"
  		) {$humidity_text="процента";} else {$humidity_text="процентов";}  											
  								
  	}	
  									
  									
  	 //миллиметр
  	if(	$pressure=="701" or $pressure=="721" or $pressure=="731" or $pressure=="741" or $pressure=="751" or $pressure=="761" or $pressure=="771" or $pressure=="781" or $pressure=="791" or $pressure=="801") 
  	{
  		$pressure_text="милиметр ртутного столба";
  	} 
  	else 
  	{
		//миллиметра	
  		if(   $pressure=="702" or $pressure=="703" or $pressure=="704"
  				or $pressure=="722" or $pressure=="723" or $pressure=="724" 
  				or $pressure=="732" or $pressure=="733" or $pressure=="734" 
  				or $pressure=="742" or $pressure=="743" or $pressure=="744" 
  				or $pressure=="752" or $pressure=="753" or $pressure=="754"
  				or $pressure=="762" or $pressure=="763" or $pressure=="764" 
  				or $pressure=="772" or $pressure=="773" or $pressure=="774" 
  				or $pressure=="782" or $pressure=="783" or $pressure=="784" 
  				or $pressure=="792" or $pressure=="793" or $pressure=="794"
  				or $pressure=="802" or $pressure=="803"
  			) {$pressure_text="милиметра ртутного столба";} else {$pressure_text="милиметров ртутного столба";}  											
  							
  	}
  	$say_text="Сейчас в городе ".$city." ".$weather_type.". Tемпература воздуха ".$znak." ".$temp." ".$text.". Влажность ".$humidity." ".$humidity_text.". Ветер ".$wind_direction_text." ".$wind_speed." метров в секунду. Атмосферное давление ".$pressure." ".$pressure_text." !";
	$qs = http_build_query(array("format" => "mp3","lang" => "ru-RU","speaker" => "jane","key" => "SpeechKit_Cloud_API_Key","emotion" => "good", "text" => $say_text)); // параметры запроса
	$ctx = stream_context_create(array("http"=>array("method"=>"GET","header"=>"Referer: \r\n")));
	$soundfile = file_get_contents("https://tts.voicetech.yandex.net/generate?".$qs, false, $ctx); // запрос на генерацию mp3 файла
 	echo($soundfile);
?>


В скрипте нужно изменить SpeechKit_Cloud_API_Key на полученный Вами ключ.
Скрипт генерации mp3 файла для новостей news.php
<?php
$city=$_GET['q'];
	 
$data_file="http://news.yandex.ru/".$city."/index.rss"; // адрес xml файла 
$xml = simplexml_load_file($data_file); // раскладываем xml на массив

$number= rand(1,13); //генерируем порядковый номер новости

$news=$xml->channel->item[$number]->description; //новость
$title=$xml->channel->item[$number]->title; //заголовок
    

$content_news = trim(preg_replace('/\s{2,}/', ' ', $news));//удаляем весь хлам
$content_title = trim(preg_replace('/\s{2,}/', ' ', $title));//удаляем весь хлам

$text=$content_title." - ".$content_news;
$search = array('"','"',' ',')','(');
$replace   = array('');

$text = str_replace($search, $replace, $text);
$qs = http_build_query(array("format" => "mp3","lang" => "ru-RU","speaker" => "jane","key" => "SpeechKit_Cloud_API_Key","emotion" => "good", "text" => $text)); // параметры запроса
$ctx = stream_context_create(array("http"=>array("method"=>"GET","header"=>"Referer: \r\n")));
$soundfile = file_get_contents("https://tts.voicetech.yandex.net/generate?".$qs, false, $ctx); // запрос на генерацию mp3 файла
echo($soundfile);    
?>


Читать дальше →

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

Время на прочтение2 мин
Количество просмотров16K

Разбирая архивы наткнулся на свой скрипт трёхгодичной давности для управления окнами доставок интернет магазина. Скрипт называется The Maasdam Project в честь дырок от сыра.

Зачем это?



Любому интернет магазину приходится решать проблему планирования доставок и коммуникации с покупателем:
  • на какой день можно обеспечить доставку?
  • в какой временной интервал (окно) её можно сделать?
  • можно ли в это окно ещё засунуть один заказик или служба доставки лопнет?


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

Ближайшие события

19 принципов разработки по БЭМ, или что должен знать каждый разработчик библиотек

Время на прочтение11 мин
Количество просмотров43K
БЭМ набирает популярность и становится актуальнее — например, недавно Google выпустил новую библиотеку блоков под названием Material Design Lite, реализованную по БЭМ-методологии. Команда БЭМ тоже не сидела без дела — мы выпустили новую версию библиотеки bem-components, на базе которой построены сайты и проекты не только Яндекса, но и других разработчиков.

Эти события натолкнули нас на мысль ещё раз вспомнить и рассказать вам, как сформировались принципы разработки библиотек в БЭМ-методологии. Надеемся, что многим это будет интересно и полезно. Итак, поехали.

image

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

Если вы хотите узнать на примерах, как мы пришли к нашим принципам разработки, добро пожаловать под кат.
Читать дальше →

Как мы делали Разговор: от прототипа на хакатоне до приложения Яндекса

Время на прочтение9 мин
Количество просмотров19K
Недавно Яндекс выпустил экспериментальное приложение Разговор, которое помогает общаться глухим и слабослышащим людям. Сейчас проходит международная неделя глухих, и мы решили, что это очень хороший повод рассказать о нашем приложении, о том, зачем мы его делали и как получилось так, что Яндекс поддержал нашу идею. А также о том, как отличается процесс работы над прототипом для хакатона от выпуска полноценного продукта.

image

Прошлой осенью в МФТИ, где я учился, на базовой кафедре Яндекса нам читали курс «Создание новых интернет-продуктов». Он задумывался как некий стартаперский практикум, в рамках которого нужно было придумать что-то, что успешно бы решало существующую проблему с помощью технологий Яндекса. Мы с несколькими моими однокурсниками подумали, что коммуникация людей, выключенных из привычного общения голосом с остальным слышащим миром, – задача, которая подходит под такие критерии. Согласно Всемирной организации здравоохранения, 10% жителей Земли имеют проблемы со слухом, 1,5-2% из них страдают тяжелыми нарушениями. В России их — 2,2 млн. Было бы здорово сделать что-то, что могло бы помочь этим людям в повседневной жизни.
Читать дальше →

API для валидатора от Яндекса. А также почему валидаторы микроразметки выдают разные ответы?

Время на прочтение7 мин
Количество просмотров16K
Некоторое время назад мы выпустили API для своего валидатора микроразметки. И сегодня я хочу поговорить как об API, так и вообще о валидаторах. Чтобы, например, понять, почему результаты разных валидаторов различаются.

Валидаторы бывают разных типов и разрабатываются для разных целей. В общем их можно разделить на два типа: универсальные и специализированные. Универсальные – наш валидатор, Structured data testing tool от Google, Validator.nu, Structured Data Linter, Markup Validator от Bing – проверяют сразу несколько стандартов разметки. При этом валидаторы от поисковых систем проверяют разметку еще и на соответствие документации к своим продуктам на ее основе. Специализированные валидаторы, такие как JSON-LD Playground, Open Graph Object Debugger, – это инструменты от разработчиков самих стандартов. С помощью Open Graph Object Debugger можно проверить правильность разметки Open Graph, а JSON-LD Playground показывает, как разметка JSON-LD будет разбираться роботами.



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

Стоимость жилья как функция координат

Время на прочтение5 мин
Количество просмотров34K

Цены на жильё формируются из многочисленных факторов, основные из которых — это близость к центру города и наличие рядом различной инфраструктуры. Но реальные цены только в бумажных газетах и риэлторских сайтах. Мы будем строить свою карту с ценами на недвижимость в Москве при помощи python, яндекс API и matplotlib, специальный репортаж с места событий под катом.
Репортаж

В помощь аналитику: пишем свою автоматическую выгрузку отчетов Яндекс.Метрики с помощью AWS бесплатно

Время на прочтение7 мин
Количество просмотров21K
В своей практике работы аналитиком мне часто приходится сталкиваться с ситуациями, когда коллеги ежедневно тратят много времени на нудную выгрузку данных для очередной отчетности. Если для Google Analytics и других продуктов Google написано множество плагинов, сервисов и надстроек для Excel, то для Яндекс Метрики и других аналитических систем удалось найти только пару-тройку библиотек 2013 года.

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

В этой и следующих статьях я покажу как с помощью Amazon Web Services просто настраивать автоматическую выгрузку данных. На AWS можно в течение 12 месяцев пользоваться бесплатным аккаунтом, в лимиты которого входит описанный в статье алгоритм. Можно выбрать и любой другой сервис аренды вычислительных мощностей, однако совсем бесплатных я не встречал. К тому же на инстансах AWS уже есть питон с нужными библиотеками.
Читать дальше →

Botan.io — экспериментальный инструмент аналитики ботов Telegram от Яндекса

Время на прочтение1 мин
Количество просмотров26K
Недавно мы в Яндексе сделали в качестве эксперимента несколько ботов для Telegram. И перед нами встал очевидный вопрос — как нам их измерять? Очень не хватало хорошей, простой и доступной системы аналитики.

Мы стали искать готовые системы, которые бы подошли для нашей цели. Для начала решили посмотреть на аналитику для мобильных приложений. В этой отрасли сейчас правят бал Flurry, Mixpanel и Localytics. После небольшого исследования стало ясно, что Flurry и Localytics созданы с упором на мобильное SDK и простого способа слать им события с сервера нет и не предвидится.

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



Не найдя ничего, что полностью бы нас устраивало, мы посмотрели на возможности нашей Метрики. И сделали собственный инструмент аналитики ботов — Botan. Это обёртка вокруг AppMetric, мобильной версии Метрики для приложений.

Теперь мы хотим поделиться нашим решением со всеми и сделали его бесплатным. Botan позволяет собирать события из ваших ботов в мобильную Яндекс.Метрику и строить большинство доступных там отчетов.
Читать дальше →

Как найти себе место на земле и не попасть на счетчик Яндекса

Время на прочтение5 мин
Количество просмотров40K
… эта история началась давным-давно в далекой-далекой стране Краковия, чьи жители беспечно проживали свои жизни и не знали…

Но сам я местный, и сегодня расскажу вам страшную историю, о том, что мешало спать (лично мне) долгие годы. И это не налоги (с ними все нормально), это — геокодер Яндекс.Карт!
Геокодер — это один из HTTP-сервисов Яндекс.Карт, получающий в запросе текстовое представление адреса и возвращающий в ответе найденные на его основании объекты. Либо наоборот: получающий координаты и отвечающий адресом.

Именно геокодер подскажет, где на карте находится чудная страна Краковия. И именно он будет главным героем этой истории, завязка которой была описана совершенно в другой книге — в древнем фолианте Пользовательское соглашение API Яндекс.Карт. Легенда гласит, что существует ограничение на количество запросов к функции геокодирования. Максимально допустимо делать в сутки не более 25 000 запросов к HTTP и JS геокодеру в сутки. Или овсянка, сэр.

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



Что делать? Для наглядности достанем из кустов рояль — 8 лет назад на Хабре засветился проект «еСоседи» — «Карта интересных мест». Все эти годы я продолжаю работать над ним.
Читать дальше →