ActionScript — Блог Валерия Леонтьева https://valera.ws Место публикации личных заметок. Технологии, управление, бизнес, жизнь Wed, 22 Apr 2015 16:44:58 +0000 ru-RU hourly 1 https://wordpress.org/?v=5.6.2 https://valera.ws/wp-content/uploads/2020/02/favicon.png ActionScript — Блог Валерия Леонтьева https://valera.ws 32 32 Статистика Google Analytics на вашем сайте https://valera.ws/2008.11.30~googleanalytics/ https://valera.ws/2008.11.30~googleanalytics/#comments Sun, 30 Nov 2008 14:16:45 +0000 http://valera.ws/?p=207 Читать далее Статистика Google Analytics на вашем сайте ]]> Один добрый хабрапользователь Andex написал на Хабре статью о том, как на свой сайт экспортировать статистику с Google.Analytics. Подробности читайте в соответствующем блоге. Все замечательно работает (на момент 30 ноября 2008 года), и хорошо выглядит даже дефолтовый набор отчетов, который автор делал для себя. Но есть один недостаток для меня, который я исправил.

Но обо всем по порядку. Для начала прочитайте статью Andex’а и «заведите» статистику на web-сервере.

Если во время установки что-то не заработало, читайте комментарии.

У меня возникла такая проблема: если сходу ошибиться с паролем, то система обратиться к гуглу с неправильным паролем столько раз, сколько отчетов экспортируется. В дефалтном варианте это 8 раз. После этого гугл естественно будет требовать от вас ввода каптчи, чтобы убедиться, что вы не подбираете пароли. А возвращать в этом случае он будет временный редирект (Temporary redirect). Его вы в логе и увидите, при этом stat.php будет вывалить нутисы про Undefined index’ы. В этом случае, надо подождать минут 20, а потом повторно запросить статистику, и все будет хорошо :)

Что меня не устроило в дефалтовых отчетах? Только то, что графики по посетителям и по посещениям были разделены. Вместо того, чтобы на одном графике сделать 3 кривых, было сделано 2 графика по 2 кривых (посетители + просмотры, посещения + просмотры).

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

Итак, что нужно сделать? Нужно составить новый сводный отчет (*.csv), в котором будут храниться объединенные данные по посетителям, посещениям и просмотрам. И нужно сделать *settings.xml-файл, в котором будут настройки визуализации нового графика.

Генерацию сводного отчета я вынес в функцию. Она берет два отдельных отчета и составляет из них общий:

function makeFull($postfix = '')
{
	$fvisits = fopen($GLOBALS["path"] . "visits$postfix.csv", 'r');
	$fvisitors = fopen($GLOBALS["path"] . "visitors$postfix.csv", 'r');
	$ffull = fopen($GLOBALS["path"] . "full$postfix.csv", 'w');
	while (!feof($fvisits))
	{
		$visits_line = explode(';', fgets($fvisits));
		$visitors_line = explode(';', fgets($fvisitors));
		if (count($visits_line) == 3 && count($visitors_line) == 3)
		{
			// новая строка =     дата       ;        посетители       ;       посещения       ;       показы & \n
			$new_line = $visitors_line[0] . ';' . $visitors_line[1] . ';' . $visits_line[1] . ';' . $visitors_line[2];
			fputs($ffull, $new_line);
		}
	}
	fclose($fvisits);
	fclose($fvisitors);
	fclose($ffull);
}

Эту функцию надо поместить в stat.php (например в конец). Вызвать ее нужно 2 раза (отчет за все время и отчет за последние 3 месяца):

makeFull();
makeFull('_3');

Это нужно делать после генерации соответствующих отчетов, т.е. проще всего дописать в конце файла stat.php.

Далее из файлов visitors_3_settings.xml и visitors_settings.xml я сделал копии (full_3_settings.xml и full_settings.xml) и добавил в настройках графиков новый график-кривую (новую секцию <graph gid=»3″></graph>).

Осталось подредактировать index.php, чтобы новые графики отображались вместо старых. В index.php вместо кода первых четырех графиков появился следующий код:

	<div id="visitors" align="center" style="padding-bottom:80px">
<strong>Для просмотра сожержимого, установите последнюю версию Adobe Flash Player</strong>
</div>
<script type="text/javascript">
	// <![CDATA[
	var so = new SWFObject("amline.swf", "amline_chart", "600", "350", "8", "#FFFFFF");
	so.addVariable("path", "./amline/");
	so.addVariable("settings_file", escape("full_settings.xml?<?php echo mktime();?>"));
	so.addVariable("data_file", escape("full.csv?<?php echo mktime();?>"));
	so.addVariable("preloader_color", "#BBBBBB");
	so.write("visitors");
	// ]]>
</script>
<div id="visitors_3" align="center" style="padding-bottom:80px">
<strong>Для просмотра сожержимого, установите последнюю версию Adobe Flash Player</strong>
</div>
<script type="text/javascript">
	// <![CDATA[
	var so = new SWFObject("amline.swf", "amline_chart", "600", "400", "8", "#FFFFFF");
	so.addVariable("path", "./amline/");
	so.addVariable("settings_file", escape("full_3_settings.xml?<?php echo mktime();?>"));
	so.addVariable("data_file", escape("full_3.csv?<?php echo mktime();?>"));
	so.addVariable("preloader_color", "#BBBBBB");
	so.write("visitors_3");
	// ]]>
</script>

Вот и все. Теперь страница статистики (index.php) выглядит примерно так:

Вид сводных диаграм из Google.Analytics
Вид сводных диаграм из Google.Analytics

Скачка готовых файлов.

Мой мод вывода статистики затронул файлы из пакета statga от Andex’а. Изменения производились в версии statga 2.0.1. Не каснулись пакета только 2 новых файла: full_3_settings.xml и full_settings.xml. Их вы можете смело брать из моего пакета в любом случае. Как модернизировать файлы пакета statga для изменения визуализации написано выше. Так что, если Andex обновит версию, вы сможете внести правки вручную. Если нет, можно использовать готовые файлы версии 2.0.1:

Скачать модефицированную версию statga 2.0.1 feedbee mod.

]]>
https://valera.ws/2008.11.30~googleanalytics/feed/ 11
Статистический отчет по версиям браузеров и флеш-плеера на 12 декабря 2007 года https://valera.ws/2007.12.12~web-stat-2/ Wed, 12 Dec 2007 09:41:26 +0000 http://valera.ws/2007.12.12~web-stat-2/ Читать далее Статистический отчет по версиям браузеров и флеш-плеера на 12 декабря 2007 года ]]> Скачайте PDF-версию отчета — 344,59 Кб.

Очередная порция статистики (см. также «Статистика браузеров и разрешений») по рунету и байнету на базе 3-х сайтов компании, в которой я работаю. Обработана статистика за последний месяц (11.11.2007 — 11.12.2007) трех сайтов, два из которых белорусские, один — российский. Аудитория двух первых сайтов — специалисты финансовой и кадровой сферы (это сайты соответствующих изданий). Третий сайт посвящен поиску работы, поэтому его аудитория довольно широка. Преимущественно, все сайты посещаются с рабочих мест.

Статистика на этот раз коснется версии браузера и версии флеш-плеера у посетителя.

За 30 дней сайты посетили 166 800 уникальных посетителей. Подробная статистика доступна в отчете PDF, а пятерки лидеров по усредненным данным 3-х сайтов выглядят так:

Статистика браузеровТоп-5 браузеров:
1. Internet Explorer 69,68%
2. Opera 21,49%
3. Firefox 8,36%
4. Mozilla 0,25%
5. Safari 0,09%

Статистика браузеровТоп-5 версий флеш:
1. 9.0 60,23%
2. 6.0 12,24%
3. (not set) 10,21%
4. 8.0 5,26%
5. 7.0 6,38%

]]>
Алгоритм вычисления дня Пасхи (православной) на ActionScript для Flash https://valera.ws/2007.08.24~ester/ Fri, 24 Aug 2007 20:18:33 +0000 http://valera.landera.info/2007.08.24~ester/ Читать далее Алгоритм вычисления дня Пасхи (православной) на ActionScript для Flash ]]> ПасхаСегодня на работе понадобился этот код. В гугле нашел только для дельфи. Используя http://ru.wikipedia.org/wiki/Пасха написал этот алгоритм на ActionScript. Перевести его на PHP, C++, C# не составить труда думаю никому… Так что если кому надо — юзайте. Лицензия — все абсолютно free и без гарантий ;)

function makeEaste(year)
{
    a = (19*(year%19) + 15) % 30;
    b = ((2*(year%4) + 4*(year%7) + 6*a + 6) % 7);
    if(a + b > 10)
        p = new Date(year, 3, a + b - 9, 0, 0, 0, 0);
    else
        p = new Date(year, 2, 22 + a + b, 0, 0, 0, 0);
    p.setDate(p.getDate()+13);
    return p;
}

Так как на 10й день после пасхи идет Радоница, получить ее дату можно так: p = makeEaste(year); p.setDate(p.getDate()+9);

З.Ы. Я не AS программер, так что если какие глупые ошибки в коде — не серчайте.

Update. Код на JavaScript:

function makeEaste(year)
{
    var a = (19*(year%19) + 15) % 30;
    var b = ((2*(year%4) + 4*(year%7) + 6*a + 6) % 7);
    if(a + b > 10)
        var p = new Date(year, 3, a + b - 9, 0, 0, 0, 0);
    else
        p = new Date(year, 2, 22 + a + b, 0, 0, 0, 0);
    p.setDate(p.getDate()+13);
    return p;
}

Код на PHP:

function makeEaste($year)
{
    $a = (19*($year%19) + 15) % 30;
    $b = ((2*($year%4) + 4*($year%7) + 6*$a + 6) % 7);
    $p = new DateTime();
    if($a + $b > 10)
        $p->setDate($year, 4, $a + $b - 9);
    else
        $p->setDate($year, 3, 22 + $a + b);
    $p->modify("+13 day");
    return $p;
}
]]>