<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>скрипты &#8212; Spryt: вебмастер на пенсии</title>
	<atom:link href="https://spryt.ru/category/skripty/feed/" rel="self" type="application/rss+xml" />
	<link>https://spryt.ru</link>
	<description>Spryt: вебмастер на пенсии</description>
	<lastBuildDate>Tue, 10 Mar 2015 17:03:07 +0000</lastBuildDate>
	<language>ru-RU</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://spryt.ru/wp-content/uploads/2024/12/favicon.png</url>
	<title>скрипты &#8212; Spryt: вебмастер на пенсии</title>
	<link>https://spryt.ru</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Дома</title>
		<link>https://spryt.ru/doma/</link>
					<comments>https://spryt.ru/doma/#comments</comments>
		
		<dc:creator><![CDATA[Spryt]]></dc:creator>
		<pubDate>Tue, 10 Mar 2015 17:03:07 +0000</pubDate>
				<category><![CDATA[скрипты]]></category>
		<category><![CDATA[Я]]></category>
		<guid isPermaLink="false">http://spryt.ru/?p=2637</guid>

					<description><![CDATA[Поездка до дома оказалась тем еще приключением.. 30 часовой перелет с тремя пересадками, в том числе один трансатлантический (10 часов в самолете, а кондоровцы за просмотр фильмов с медиацентра требовали 10 евро, не то что иберия). Суммарно получилось все 60 часов без сна, так как вылет тоже посреди ночи, не поспишь. В Пунта-Кане, Доминикане, оказалось ... <a title="Дома" class="read-more" href="https://spryt.ru/doma/" aria-label="Read more about Дома">Читать далее</a>]]></description>
										<content:encoded><![CDATA[<p>Поездка до дома оказалась тем еще приключением.. 30 часовой перелет с тремя пересадками, в том числе один трансатлантический (10 часов в самолете, а кондоровцы за просмотр фильмов с медиацентра требовали 10 евро, не то что иберия). Суммарно получилось все 60 часов без сна, так как вылет тоже посреди ночи, не поспишь. В Пунта-Кане, Доминикане, оказалось дофига русских (не зря сюда чартеры возят пактеников), а аэропорт оказался самым забавным &#8212; все гейты и часть залов ожиданий накрыты соломенными крышами:</p>
<p><img decoding="async" src="https://spryt.ru/wp-content/uploads/2015/03/img_2978.jpg" alt="Пунта Кана Аэропорт" class="aligncenter size-full wp-image-2638" style="max-width: 900px;" /></p>
<p>Нас бекпкеров набралось 11 человек, кто ехал таким замысловатым маршрутом (зато самым дешевым). Половину длинного перелета в итоге проболтал с немкой, живущей в Эдинбурге, переводчицей) А до Москвы рейс оказался полупустым, так что наконец-то удалось три часа поспать. А вот в Москве и начались неприятности &#8212; как оказалось, Перу относится к странам с &#171;плохим рейтингом&#187;, не говоря уже про мой внешний вид, так что на таможне мне переворошили весь рюкзак (буквально, даже грязное белье), проверили экспресс-тестом на наркотики. В итоге докопались до безобидного, купленного в dute-free чая из листьев коки и каких-то конфет в виде коричневых мягких брусочков &#8212; и ладно бы просто изъяли, я спокойно доехал бы до вокзала и упал в поезд. Но нет, бюрократическая машина, и они оформляли этот чай все 3 часа, записывая акты изъятия, взвешивая этот чай и т.д. В итоге опоздал на поезд, пришлось выкупать следующий (сдать предыдущий билет в аэропорту так же возможности нет), еще -3000 рублей. Чай отправили на экспертизу, буду ждать результатов (объем для личного пользования, так что ничего особо серьезного).</p>
<p>Догадайтесь, что сделал на следующее утро штатный милиционер в поезде? Правильно, тоже самое (обычно они просто досматривают по карманам). Люби Россию, блджад! Самое забавное, что оба они досматривают лишь подозрительных граждан &#8212; но кто ж доверит перевозку наркоты подозрительным гражданам? Или еще попадаются идиоты с дредами, которые таскают с собой косяки в карманах (потому что даже с этими досмотрами я вполне мог найти 5-10 мест где его заныкать, если бы хотел). Комедия.</p>
<p>Ну да не суть, главное что доехал) Впервые попал в зиму, снег вижу впервые за 4 года &#8212; с тех пор как в первый раз уехал в Таиланд.</p>
<p><img decoding="async" src="https://spryt.ru/wp-content/uploads/2015/03/img_2981.jpg" alt="Деревня" class="aligncenter size-full wp-image-2639"  style="max-width: 900px;" /></p>
<p>4-х месячный трип окончен, +3 страны, новый континент. Почти все время в Андах &#8212; мне весьма понравилось жить в городах на 1500-2000м. Южная Америка оказалось не такой уж дорогой, как все пугали, и не такой опасной. В целом, трип получился годный, жаль пришлось досрочно заканчивать &#8212; при таком курсе рубля деньги исчезают слишком быстро (( Альтернатива для зимовок? Вряд ли. Вариант для иммиграции? Очень даже. Последняя неделя в Перу получилась хороша на треки, хотя в целом страна трешовая (разве что еда лучше):</p>
<p><img decoding="async" src="https://spryt.ru/wp-content/uploads/2015/03/img_2894.jpg" alt="Huaraz" class="aligncenter size-full wp-image-2640"  style="max-width: 900px;" /></p>
<p>Планы на будущее &#8212; отрабатывать долг, реализация пары новых проектов, апгрейд старых. А именно &#8212; фриланс (ура, уже есть один небольшой заказ) + с одеском, &#171;пикабу для онямэ&#187; (решил делать на пыхе, ибо буду еще пару месяцев разбираться с монгой, а скрипт мне потом еще понадобится &#8212; а может и на продажу пойдет) + бурж sf, коммьюнити вокруг storyfinder + очередная сессия работ над топсапой. Как минимум до мая-июня никуда особо выбираться не буду (разве что по мелочи), так что все пучком.</p>
<p>Сегодня впервые сделал 3+ часа продуктивного времени (а сейчас уже все 5) &#8212; засел за скрипт для объединении стат нескольких сайтов с LI (мой мелкоскрипт показывал только текущие данные, а монстра вроде LiViewer ставить и тем более платить не хотелось). Например, за последние 30 дней максимальная посещаемость у меня была 2 марта, 4406 посетителей и 22094 просмотра. В итоге получилось что-то вроде этого:</p>
<p><img decoding="async" src="https://spryt.ru/wp-content/uploads/2015/03/li_stat.png" alt="li_stat" class="aligncenter size-full wp-image-2641"  style="max-width: 900px;"/></p>
<p>Есть поддержка стат под паролем, БД разумеется не нужна, только файлу sites.dat дать права на запись. Простой как валенок скрипт (это я к тому, что не надо придираться к плохой структуре &#8212; я писал в первую очередь для себя и максимально просто и быстро). Подобные этому скрипты (обычно конечно они куда сложнее) я с удовольствием делаю на заказ. </p>
<p><a href="https://spryt.ru/li.zip">Скачать скрипт</a></p>
<p>Вот такие новости пока что =) Всем добра!</p>
<p><img decoding="async" src="https://spryt.ru/wp-content/uploads/2015/03/SAM_0173.jpg" alt="Шериф" class="aligncenter size-full wp-image-2642"  style="max-width: 900px;"/></p>
]]></content:encoded>
					
					<wfw:commentRss>https://spryt.ru/doma/feed/</wfw:commentRss>
			<slash:comments>49</slash:comments>
		
		
			</item>
		<item>
		<title>Делаем наглядную статистику событий по дням (PHP + Google Charts)</title>
		<link>https://spryt.ru/delaem-naglyadnuyu-statistiku-sobytij-po-dnyam-php-google-charts/</link>
					<comments>https://spryt.ru/delaem-naglyadnuyu-statistiku-sobytij-po-dnyam-php-google-charts/#comments</comments>
		
		<dc:creator><![CDATA[Spryt]]></dc:creator>
		<pubDate>Fri, 07 Mar 2014 16:17:01 +0000</pubDate>
				<category><![CDATA[вебдев]]></category>
		<category><![CDATA[скрипты]]></category>
		<guid isPermaLink="false">http://spryt.ru/?p=2317</guid>

					<description><![CDATA[Сегодня у нас &#171;вебдев для самых маленьких&#187;, а именно &#8212; оформление разной статистический информации графиками. Задача: есть некоторые события (регистрация пользователей, появление сообщений, поисковый запрос и т.д.), логирующиеся в MySQL, требуется наглядно показать динамику (сколько событий в день/месяц/час), вроде такого: Для начала нужно добавить в таблицу события поле `time_added`, тип TIMESTAMP, значение по умолчанию &#8212; ... <a title="Делаем наглядную статистику событий по дням (PHP + Google Charts)" class="read-more" href="https://spryt.ru/delaem-naglyadnuyu-statistiku-sobytij-po-dnyam-php-google-charts/" aria-label="Read more about Делаем наглядную статистику событий по дням (PHP + Google Charts)">Читать далее</a>]]></description>
										<content:encoded><![CDATA[<p>Сегодня у нас &#171;вебдев для самых маленьких&#187;, а именно &#8212; оформление разной статистический информации графиками. Задача: есть некоторые события (регистрация пользователей, появление сообщений, поисковый запрос и т.д.), логирующиеся в MySQL, требуется наглядно показать динамику (сколько событий в день/месяц/час), вроде такого:</p>
<p><a style="border: 0;" href="http://storyfinder.ru/stat?utm_source=spryt.ru&#038;utm_campaign=post_stat"><img fetchpriority="high" decoding="async" src="https://spryt.ru/wp-content/uploads/2014/03/post_stat.png" alt="post_stat" width="716" height="200" class="aligncenter size-full wp-image-2318" style="border: 0"/></a></p>
<style>
.php .de1, .php .de2 {-moz-user-select: text;-khtml-user-select: text;-webkit-user-select: text;-ms-user-select: text;user-select: text;
margin:0; padding: 0 5px; background:none; vertical-align:top;color:#000;border-left: 1px solid #ccc; margin: 0 0 0 -7px; position: relative; background: #ffffff;}
.php  {color:#ACACAC;}
.php .imp {font-weight: bold; color: red;}
.php li, .php .li1 {-moz-user-select: -moz-none;-khtml-user-select: none;-webkit-user-select: none;-ms-user-select: none;user-select: none;
}
.php .ln {width:1px;text-align:right;margin:0;padding:0 2px;vertical-align:top;}
.php .kw1 {color: #b1b100;}
.php .kw2 {color: #000000; font-weight: bold;}
.php .kw3 {color: #990000;}
.php .kw4 {color: #009900; font-weight: bold;}
.php .co1 {color: #666666; font-style: italic;}
.php .co2 {color: #666666; font-style: italic;}
.php .co3 {color: #0000cc; font-style: italic;}
.php .co4 {color: #009933; font-style: italic;}
.php .coMULTI {color: #666666; font-style: italic;}
.php .es0 {color: #000099; font-weight: bold;}
.php .es1 {color: #000099; font-weight: bold;}
.php .es2 {color: #660099; font-weight: bold;}
.php .es3 {color: #660099; font-weight: bold;}
.php .es4 {color: #006699; font-weight: bold;}
.php .es5 {color: #006699; font-weight: bold; font-style: italic;}
.php .es6 {color: #009933; font-weight: bold;}
.php .es_h {color: #000099; font-weight: bold;}
.php .br0 {color: #009900;}
.php .sy0 {color: #339933;}
.php .sy1 {color: #000000; font-weight: bold;}
.php .st0 {color: #0000ff;}
.php .st_h {color: #0000ff;}
.php .nu0 {color: #cc66cc;}
.php .nu8 {color: #208080;}
.php .nu12 {color: #208080;}
.php .nu19 {color:#800080;}
.php .me1 {color: #004000;}
.php .me2 {color: #004000;}
.php .re0 {color: #000088;}
.php .ln-xtra, .php li.ln-xtra, .php div.ln-xtra {color:black;background:#FFFF88;}
.php span.xtra { display:block; }</p>
</style>
<p>Для начала нужно добавить в таблицу события поле <em>`time_added`</em>, тип <em>TIMESTAMP</em>, значение по умолчанию &#8212; <em>CURRENT_TIMESTAMP</em>. Не нужно даже ничего менять в php-коде &#8212; в это поле будет автоматически добавляться время добавление записи, а в phpmyadmin он будет выглядеть вполне читабельным значением вроде &#171;<em>2014-03-07 18:22:27</em>&#187; (в отличие от записи timestamp-а в int поле). Затем делаем выборку из таблицы:</p>
<div>
<div class="php">
<ol>
<li class="li1">
<div class="de1"><span class="co1">//Получаем метку даты 30 дневной давности о оформляем его в удобовариемый mysql-ем вид</span></div>
</li>
<li class="li2">
<div class="de2"><span class="re0">$last30d</span><span class="sy0">=</span><span class="kw3">date</span><span class="br0">&#40;</span><span class="st0">&quot;c&quot;</span><span class="sy0">,</span><span class="kw3">strtotime</span><span class="br0">&#40;</span><span class="st0">&quot;-30 day&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li2">
<div class="de2"><span class="co1">//Делаем выборку событий из базы старше нужного</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$res</span><span class="sy0">=</span><span class="kw3">mysql_query</span><span class="br0">&#40;</span><span class="st0">&quot;SELECT COUNT(*),time_added FROM wordstat WHERE time_added&gt;&#8217;<span class="es4">$last30d</span>&#8216; GROUP BY DAY(`time_added`)&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span> </div>
</li>
<li class="li2">
<div class="de2"><span class="kw1">while</span><span class="br0">&#40;</span><span class="re0">$row</span><span class="sy0">=</span><span class="kw3">mysql_fetch_array</span><span class="br0">&#40;</span><span class="re0">$res</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$key</span><span class="sy0">=</span><span class="kw3">date</span><span class="br0">&#40;</span><span class="st0">&quot;Y-n-d&quot;</span><span class="sy0">,</span><span class="kw3">strtotime</span><span class="br0">&#40;</span><span class="re0">$row</span><span class="br0">&#91;</span><span class="st_h">&#8216;time_added&#8217;</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$days</span><span class="br0">&#91;</span><span class="re0">$key</span><span class="br0">&#93;</span><span class="sy0">=</span><span class="re0">$row</span><span class="br0">&#91;</span><span class="st_h">&#8216;COUNT(*)&#8217;</span><span class="br0">&#93;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//Сортируем массив в нужном порядке</span></div>
</li>
<li class="li2">
<div class="de2"><span class="kw3">ksort</span><span class="br0">&#40;</span><span class="re0">$days</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
</ol>
</div>
</div>
<p>Не так уж сложно, как видите) Точно так же можно подсчитывать число событий в месяц или год. Следующая задача &#8212; построить график по этим данным. Можно конечно использовать какую-нибудь php-gd библиотеку, или даже самостоятельно всё написать, но зачем, если есть готовые либы? Я использую JS-библиотеку <a href="https://developers.google.com/chart/" title="https://developers.google.com/chart/" target="_blank" rel="nofollow">Google Charts</a>, обладающую просто безграничными возможностями, главное в нём разобраться.</p>
<div>
<div class="php">
<ol>
<li class="li1">
<div class="de1">&lt;script type=&quot;text/javascript&quot; src=&quot;https://www.google.com/jsapi&quot;&gt;&lt;/script&gt;</div>
</li>
<li class="li2">
<div class="de2"><span class="sy0">&lt;</span>script type<span class="sy0">=</span><span class="st0">&quot;text/javascript&quot;</span><span class="sy0">&gt;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li2">
<div class="de2"><span class="co1">// Load the Visualization API library and the piechart library.</span></div>
</li>
<li class="li1">
<div class="de1">google.<span class="me1">load</span><span class="br0">&#40;</span><span class="st0">&#8216;visualization&#8217;</span><span class="sy0">,</span> <span class="st0">&#8216;1.0&#8217;</span><span class="sy0">,</span> <span class="br0">&#123;</span><span class="st0">&#8216;packages&#8217;</span><span class="sy0">:</span><span class="br0">&#91;</span><span class="st0">&#8216;corechart&#8217;</span><span class="br0">&#93;</span><span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li2">
<div class="de2">google.<span class="me1">setOnLoadCallback</span><span class="br0">&#40;</span>drawChart<span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="co1">// &#8230; draw the chart&#8230;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">function</span> drawChart<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="co1">// Create the data table.</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; <span class="kw1">var</span> data <span class="sy0">=</span> <span class="kw1">new</span> google.<span class="me1">visualization</span>.<span class="me1">DataTable</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; data.<span class="me1">addColumn</span><span class="br0">&#40;</span><span class="st0">&#8216;date&#8217;</span><span class="sy0">,</span> <span class="st0">&#8216;Дата&#8217;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; data.<span class="me1">addColumn</span><span class="br0">&#40;</span><span class="st0">&#8216;number&#8217;</span><span class="sy0">,</span> <span class="st0">&#8216;Запросов&#8217;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; data.<span class="me1">addRows</span><span class="br0">&#40;</span><span class="br0">&#91;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; <span class="sy0">&lt;?</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; foreach<span class="br0">&#40;</span>$days as $day<span class="sy0">=&gt;</span>$count<span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li2">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$date</span><span class="sy0">=</span><span class="kw3">strtotime</span><span class="br0">&#40;</span><span class="re0">$day</span><span class="br0">&#41;</span><span class="sy0">*</span><span class="nu0">1000</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">echo</span> <span class="st0">&quot;[new Date(<span class="es4">$date</span>), <span class="es4">$count</span>],<span class="es1">\n</span>&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; <span class="sy0">?&gt;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">var</span> options <span class="sy0">=</span> <span class="br0">&#123;</span><span class="st0">&#8216;title&#8217;</span><span class="sy0">:</span><span class="st0">&#8216;Поисковых запросов, в день:&#8217;</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&#8216;width&#8217;</span><span class="sy0">:</span><span class="nu0">900</span><span class="sy0">,</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&#8216;height&#8217;</span><span class="sy0">:</span><span class="nu0">200</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&#8216;legend&#8217;</span><span class="sy0">:</span><span class="br0">&#123;</span><span class="st0">&#8216;position&#8217;</span><span class="sy0">:</span><span class="st0">&#8216;none&#8217;</span><span class="br0">&#125;</span><span class="sy0">,</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&#8216;titleTextStyle&#8217;</span><span class="sy0">:</span><span class="br0">&#123;</span><span class="st0">&#8216;fontName&#8217;</span><span class="sy0">:</span><span class="st0">&#8216;Georgia&#8217;</span><span class="sy0">,</span><span class="st0">&#8216;fontSize&#8217;</span><span class="sy0">:</span><span class="nu0">20</span><span class="sy0">,</span><span class="st0">&#8216;bold&#8217;</span><span class="sy0">:</span><span class="kw2">false</span><span class="br0">&#125;</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; chartArea<span class="sy0">:</span> <span class="br0">&#123;</span>width<span class="sy0">:</span> <span class="st0">&#8216;100%&#8217;</span><span class="br0">&#125;</span><span class="sy0">,</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; vAxis<span class="sy0">:</span> <span class="br0">&#123;</span>textPosition<span class="sy0">:</span> <span class="st0">&#8216;in&#8217;</span><span class="sy0">,</span>minValue<span class="sy0">:</span> <span class="nu0">0</span><span class="br0">&#125;</span><span class="sy0">,</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span><span class="sy0">;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="co1">// Instantiate and draw our chart, passing in some options.</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; <span class="kw1">var</span> chart <span class="sy0">=</span> <span class="kw1">new</span> google.<span class="me1">visualization</span>.<span class="me1">AreaChart</span><span class="br0">&#40;</span>document.<span class="me1">getElementById</span><span class="br0">&#40;</span><span class="st0">&#8216;chart_div&#8217;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; chart.<span class="me1">draw</span><span class="br0">&#40;</span>data<span class="sy0">,</span> options<span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li2">
<div class="de2"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="sy0">&lt;/</span>script<span class="sy0">&gt;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&lt;div id=&quot;chart_div&quot; style=&quot;width: 900px; height: 200px;&quot;&gt;&lt;/div&gt;</div>
</li>
</ol>
</div>
</div>
<p>И вауля, график готов. Кастомизировать его можно как угодно, мне больше нравится такой вид, а не дефолтный. Как я уже писал, возможности у библиотеки богатые (это ж гугл), <a href="https://developers.google.com/chart/interactive/docs/gallery/areachart" title="https://developers.google.com/chart/interactive/docs/gallery/areachart" target="_blank" rel="nofollow">документация</a> весьма обширная, но её надо читать и вкуривать, и далеко не всё получается как надо (я например не могу настроить сетку внутри графика).</p>
<p>Задача решена. <strike>Да, возможно в MySQL можно задать такой запрос, который выдаст данные в уже нужном отформатированном виде</strike>. Уже перед самой публикацией понял, что я дичайше накосячил (до этого просто выбирал все записи из БД и фасовал их по дате в массив), и при более-менее значительных данных скрипт будет либо падать от нехватки памяти, либо очень очень долго думать. Отсюда вывод &#8212; не верьте всему тому, что написано в интернете) Гугл и stackoverflow быстро выдали мне нужное решение, описанное выше (там только SQL-запрос сменился). Хотя я пока еще использую старое ресурсоемкое решение, так-как мне нужно много более подробной информации, а не только динамика. Наверняка там и в других местах можно реализовать более удобно и правильно, например метод передачи данных между php и js.</p>
<p>PS. Я люблю собирать разнообразную статистику и анализировать её. Правда, не всегдя я делаю это наглядно &#8212; просто лень заморачиваться, можно ведь просто таблицу значений вывести) Но когда это публичная статистика, хочется навести красоту, а потом уже сам привыкаешь к такому удобству, и начинаешь делать так везде.</p>
<p>Исходный код оформлен в <a href="http://pastebin.com/" title="http://pastebin.com/" target="_blank" rel="nofollow">Pastebin</a>, но для совместимости был скопирован со страницы для печати, вместе со стилями (только javascript-оформление не заработало, поэтому слегка криво подсвечен второй кусок кода)</p>
]]></content:encoded>
					
					<wfw:commentRss>https://spryt.ru/delaem-naglyadnuyu-statistiku-sobytij-po-dnyam-php-google-charts/feed/</wfw:commentRss>
			<slash:comments>39</slash:comments>
		
		
			</item>
		<item>
		<title>Верстка это наше всё</title>
		<link>https://spryt.ru/verstka-eto-nashe-vsyo/</link>
					<comments>https://spryt.ru/verstka-eto-nashe-vsyo/#comments</comments>
		
		<dc:creator><![CDATA[Spryt]]></dc:creator>
		<pubDate>Mon, 05 Apr 2010 06:54:48 +0000</pubDate>
				<category><![CDATA[скрипты]]></category>
		<guid isPermaLink="false">http://spryt.ru/?p=453</guid>

					<description><![CDATA[Помните я говорил о создании фейковой студии под сапу? Небольшие продвижки таки есть &#8212; подобрал название (читаемое, но не слишком запоминающиеся), зарегал домен, нашел &#171;трастовый&#187; хостинг (петерхост&#8230; ох уж эта их панелька родом из 2000-х), и даже на скорую руку состряпял одностраничный сайтик. Но ведь надо соответствовать образу дизайн-студии, не так ли? Вот меня и ... <a title="Верстка это наше всё" class="read-more" href="https://spryt.ru/verstka-eto-nashe-vsyo/" aria-label="Read more about Верстка это наше всё">Читать далее</a>]]></description>
										<content:encoded><![CDATA[<p>Помните я говорил о создании фейковой студии под сапу? Небольшие продвижки таки есть &#8212; подобрал название (читаемое, но не слишком запоминающиеся), зарегал домен, нашел &#171;трастовый&#187; хостинг (петерхост&#8230; ох уж эта их панелька родом из 2000-х), и даже на скорую руку состряпял одностраничный сайтик. </p>
<p>Но ведь надо соответствовать образу дизайн-студии, не так ли? Вот меня и понесло &#8212; простенький первоначальный дизайн доделал и переверстал div-ами (до этого все сайты верстал таблицами), потом подогнал под XHTML 1.0 Strict, в полном соответствии со стандартами &#8212; контент в одном месте, оформление &#8212; в другом. Все значения &#8212; относительные, резиновая верстка, кроссбразуерность вплоть до мобильных платформ, и даже с отключенными стилями сайт вполне читаем. Но мне конечно было проще &#8212; я предпочитаю минимализм, а не верстку тремя десятками картинок, фонов и попиксельной расстановке элементов.</p>
<p>Затем &#8212; как управлять сайтом, генерировать стандартные страницы и т.д. (на заметку &#8212; можно сделать двуязычный сайт, страниц в два раза больше). Использовать готовые движки желание не было никакого, либо слишком мощные (WP, Drupal), либо слишком много дописывать (GetSimple). Пришлось писать еще и CMS, причем MVC &#8212; шаблон, данные и логика раздельно, а не собраны в одну кучу, как это у меня обычно бывает. А где хранить данные? Это же простенький сайт, БД подключать резона нет, значит на файлах. А раз файлы, то неплохо бы изучить работу с XML, как наиболее удобную. Даже шаблон, стили и часть кода засунул в XML-файл, вся cms поместилась в три файла <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Кстати, финт ушами &#8212; оказывается, ЧПУ удобней делать не вручную (настраивая в .httaccess отдельные правила), а вордпресс-способом &#8212; все запросы отсылаются в index.php, а там уже разбирается REQUEST_URI и показывается нужная страница.</p>
<p>В итоге у меня сейчас довольно удобный универсальный движок (универсальный для программиста, а не для пользователя &#171;нажал кнопку появился форум&#187;), весьма недурственный шаблон для сайта, и добавилось немного дополнительных знания по верстке и программированию (особенно в части &#171;как грамотно написанный код облегчает работу&#187;).</p>
<p>И теперь идея сайта под сапу мне кажется кощунственной))) И все больше склоняюсь к мысли допиливания CMS, и перевода на неё своих небольших сайтов (а заодно будущих), и скорее всего публикации в открытом доступе. А сам сайт использовать как вполне реальную студию, только работающую над своими проектами &#8212; в том числе этой cms, шаблонамии и прочим (халявные ссылки!). А уж извлечь пользу думаю получится. Так что скоро думаю список &#171;Моих проектов&#187; пополнится <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>Первоапрельский АГС-апдейт прошел мимо.. Все меньше и меньше за ними слежу, домены суспендятся пачками, чистых ГС в сапе осталось всего несколько штук, да и то приносят копейки.</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
МТС жжот &#8212; теперь у меня 2-мбитка, хоть и с ограничениями по трафику)</p>
]]></content:encoded>
					
					<wfw:commentRss>https://spryt.ru/verstka-eto-nashe-vsyo/feed/</wfw:commentRss>
			<slash:comments>39</slash:comments>
		
		
			</item>
		<item>
		<title>PHP автоматизация: авторизация в LinkFeed</title>
		<link>https://spryt.ru/php-avtomatizaciya-avtorizaciya-v-linkfeed/</link>
					<comments>https://spryt.ru/php-avtomatizaciya-avtorizaciya-v-linkfeed/#comments</comments>
		
		<dc:creator><![CDATA[Spryt]]></dc:creator>
		<pubDate>Fri, 19 Mar 2010 12:51:04 +0000</pubDate>
				<category><![CDATA[скрипты]]></category>
		<guid isPermaLink="false">http://spryt.ru/?p=445</guid>

					<description><![CDATA[Так-как у линкфида слишком заковыристое апи, к тому же по умолчанию отключенное, используем старый добрый способ парсинга данных &#171;в лоб&#187;: (если вы не видите код &#8212; у вас отключен яваскрипт. Исходный код) Все довольно просто &#8212; отправляем сайту данные авторизации (логин:пароль), получаем Cookies, и загружаем следующую страницу, используя ранее полученные куки. Парсим ответ, получаем чистые ... <a title="PHP автоматизация: авторизация в LinkFeed" class="read-more" href="https://spryt.ru/php-avtomatizaciya-avtorizaciya-v-linkfeed/" aria-label="Read more about PHP автоматизация: авторизация в LinkFeed">Читать далее</a>]]></description>
										<content:encoded><![CDATA[<p>Так-как у <a href="http://www.linkfeed.ru/2211" target="_blank" rel="nofollow">линкфида</a> слишком заковыристое апи, к тому же по умолчанию отключенное, используем старый добрый способ парсинга данных &#171;в лоб&#187;:</p>
<p><script src="http://pastebin.com/embed_js.php?i=36GXiyYM"></script><br />
(если вы не видите код &#8212; у вас отключен яваскрипт. <a href="http://pastebin.com/raw.php?i=36GXiyYM" target="_blank" rel="nofollow">Исходный код</a>)</p>
<p>Все довольно просто &#8212; отправляем сайту данные авторизации (логин:пароль), получаем Cookies, и загружаем следующую страницу, используя ранее полученные куки. Парсим ответ, получаем чистые данные &#8212; если нужно. Первоначальный скрипт мне скинул <a href="http://seo-analiz.info/" target="_blank" rel="nofollow">ленивый программист</a>, правда у меня он почему-то не заработал и пришлось его переписать и дополнить. Если вы планируете часто использовать подобный скрипт &#8212; то лучше сохранить куки в файл и использовать уже оттуда, а авторизовываться лишь когда это необходимо. К примеру, чтобы постоянно не разлогиниваться с сапы, я вручную выставил время жизни кук на много лет вперед &#8212; так гораздо удобней.</p>
<p>Зачем вообще может пригодится подобный скрипт? К примеру, вы можете залогиниться в той же сапе и автоматически добавить несколько десятков/сотен своих сайтов. Если вы залогинитесь в яндексе, то лимит запросов у вас повышается (хотя ограничение остается), к тому же у яндекса достаточно сервисов, добавление информации в которые не требует ввода капчи <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Да и вообще на любые сервисы, где нет капчи при авторизации &#8212; различные партнерки, вконтакте, соц. закладки и прочие полезные ресурсы. К сожалению, так же действуют спамеры &#8212; комменты отправляются аналогичным POST запросом (и зачем я это сказал..).</p>
<p>Можно отправлять запросы без авторизации &#8212; регистрация LI счетчика, добавление в аддурелку рамблера (когда там не было капчи) и т.д. Чтобы вручную не возиться с исходным кодом, можете воспользоваться <a href="http://jeck.ru/tools/FormsParser/" target="_blank" rel="nofollow">парсером HTML форм</a> от Jeck.ru. Можно вообще не отправлять запросов, а сразу парсить страницу &#8212; ключи с вордстата, кейворды со статистики LI &#8212; там все таки более реальные данные (к сожалению, кто-то обнаглел и эту страницу закрыли), выдачу с Яндекс.Блогов (там есть замечательная ссылка на полный текст записи &#8212; не надо мучиться с очищением текста, сразу готовый контент) и еще много много сайтов, к которым может приложить руки сеошник со знанием php <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>Но будьте аккуратны с хранением cookies &#8212; зная их, можно полностью управлять вашим акком на сайте. Это кстати и являлось целью XSS-атак &#8212; встроить на страницу яваскрипт, дождаться, пока на неё зайдет админ, получить его куки, вручную вставить их себе &#8212; и вауля, вы авторизованы как администратор. Это уже потом, когда заместо надписей &#171;Defased by Вася&#187; стали пихать ссылки, а потом и сапу, начали в срочном порядке закрывать эти баги и отфильтровывать такие ссылки (а они были даже на яндексе). Так-что осторожнее)</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;-</p>
<p>Тестовый сателлит от <a href="http://sayts.ru/46/" target="_blank" rel="nofollow">Сайтуса</a> проиндексировался, 100 страниц из 400 (хотя тут сам виноват, совсем забыл сделать сайтмап). Хотя выглядит он как говно (но может это мне так повезло с тематикой &#8212; сериалы), попробую сделать из других категорий. Мой новостной на старом домене выглядит нормально (даже читабельно), только не индексируется совсем &#8212; видимо дело в домене, он хоть и старый, но наверное успел попасть в черный список. Лучше буду делать на новых <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Поднимать тИЦ этому хламу рука не поднимается. </p>
<p>Оказывается, у меня уже 3 сайта-сервиса: анализ сайтов + генерация сайтмап (тИЦ 110, класс), получение ссылки на скачивание видео с ютуба (посещаемость 100/500 в день, иногда непонятные всплески до 400/1600) и конвертер книг для iPod (полгига книг обработано). И у всех стабильная посещаемость, полезность для посетителей и плюшки для меня. С доходом к сожалению довольно туго (у всех 1-2 страницы в индексе), но и трат кроме как на их создание особо нет, ресурсов они много не потребляют, гигантских баз не требуют. Сейчас думаю, как же эти сервисы можно улучшить, а главное &#8212; увеличить число страниц в индексе &#8212; чтобы хоть как то получить с них доход <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Кстати, какие еще сервисы можно создать? </p>
<p>Мерчант такой мерчант.. Как оказалось, техническая реализация довольно проста, если пользоваться <a href="http://owebmoney.ru/merchant.shtml" target="_blank" rel="nofollow">правильным мануалом</a>, а вот бюрократическую машину пройти &#8212; совсем другой вопрос.. Уже во второй раз отклоняют заявку. Так что введение автоматической оплаты в TopSape опять откладывается на несколько дней.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://spryt.ru/php-avtomatizaciya-avtorizaciya-v-linkfeed/feed/</wfw:commentRss>
			<slash:comments>21</slash:comments>
		
		
			</item>
		<item>
		<title>Скрипт анализа сайтов</title>
		<link>https://spryt.ru/skript-analiza-sajtov/</link>
					<comments>https://spryt.ru/skript-analiza-sajtov/#comments</comments>
		
		<dc:creator><![CDATA[Spryt]]></dc:creator>
		<pubDate>Fri, 14 Nov 2008 06:45:47 +0000</pubDate>
				<category><![CDATA[скрипты]]></category>
		<guid isPermaLink="false">http://spryt.ru/skript-analiza-sajtov/</guid>

					<description><![CDATA[Каждый, у кого больше 3 сайтов, начинает думать о рациональном способе проанализировать все сайты. 1-2 сайта можно проверить напрямую у поисковиков/сервисах, но когда сайтов штук 5, это начинает уже слегка надоедать, особенно после АПов. Поэтому создаются специальные скрипты или сервисы, которые и показывают все пузомерки сайтов (или списка сайтов). Но мне почему то не попадалось ... <a title="Скрипт анализа сайтов" class="read-more" href="https://spryt.ru/skript-analiza-sajtov/" aria-label="Read more about Скрипт анализа сайтов">Читать далее</a>]]></description>
										<content:encoded><![CDATA[<p>Каждый, у кого больше 3 сайтов, начинает думать о рациональном способе проанализировать все сайты. 1-2 сайта можно проверить напрямую у поисковиков/сервисах, но когда сайтов штук 5, это начинает уже слегка надоедать, особенно после АПов. Поэтому создаются специальные скрипты или сервисы, которые и показывают все пузомерки сайтов (или списка сайтов). Но мне почему то не попадалось нормальных серисов для массовой проверки, или же у них были какие то траблы, поэтому мне постоянно приходилось писать их самому)</p>
<p>Этим скриптом я пользуюсь в данный момент. Может быть, данных не так много, но для моих целей &#8212; необходимый и достаточный минимум) Скрипт показывает тИЦ, PR, индекацию в Яндексе, индексацию в Гугле, среднюю посещаемость в день за последние 7 дней. Я этот скрипт использую для анализа своих полу-сдл, блога, проектов, некоторых сателлитов.</p>
<p>Вот так он выглядит:<br />
<img decoding="async" alt="analiz.gif" src="https://spryt.ru/wp-content/uploads/2008/11/analiz.gif" /></p>
<p>Думаете, я собираюсь продавать скрипт? Хех, да нафига оно мне нужно ))) Забирайте так:</p>
<p><a href="https://spryt.ru/analiz.rar">Скачать</a> (4кб)</p>
<p>Да, и еще.. Скрипт предоставляется &#171;как есть&#187;, все баги &#8212; ваши проблемы. Модифицировать можете как угодно, продавать тоже &#8212; больше половины функций &#8212; не мои, я даже не знаю, как они работают)</p>
]]></content:encoded>
					
					<wfw:commentRss>https://spryt.ru/skript-analiza-sajtov/feed/</wfw:commentRss>
			<slash:comments>47</slash:comments>
		
		
			</item>
	</channel>
</rss>
