<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Морозов Максим</title>
	
	<link>http://murzix.ru</link>
	<description>Обзоры устройств, отзывы о различных девайсах, новости из мира IT, а также немного фотографий с прогулок.</description>
	<lastBuildDate>Mon, 26 Dec 2011 13:03:56 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/murzix" /><feedburner:info uri="murzix" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Как получить права без прописки (постоянной регистрации) в Санкт-Петербурге?</title>
		<link>http://feedproxy.google.com/~r/murzix/~3/AB81kWXXd7U/</link>
		<comments>http://murzix.ru/2011/12/%d0%ba%d0%b0%d0%ba-%d0%bf%d0%be%d0%bb%d1%83%d1%87%d0%b8%d1%82%d1%8c-%d0%bf%d1%80%d0%b0%d0%b2%d0%b0-%d0%b1%d0%b5%d0%b7-%d0%bf%d1%80%d0%be%d0%bf%d0%b8%d1%81%d0%ba%d0%b8-%d0%bf%d0%be%d1%81%d1%82%d0%be/#comments</comments>
		<pubDate>Sun, 25 Dec 2011 13:43:54 +0000</pubDate>
		<dc:creator>Морозов Максим</dc:creator>
				<category><![CDATA[Новости]]></category>
		<category><![CDATA[Питер]]></category>
		<category><![CDATA[авто]]></category>
		<category><![CDATA[решение проблем]]></category>

		<guid isPermaLink="false">http://murzix.ru/?p=3055</guid>
		<description><![CDATA[Совсем недавно я получил водительские права категории B и теперь могу дать несколько советов тем, кто как и я собирается получать права не по месту прописки. Для начала расскажу о тех документах, которые нужны для получения прав. Временная регистрация Чтобы получить права обязательно нужно иметь временную регистрацию в том регионе, где будут получаться права. Стоит [...]]]></description>
			<content:encoded><![CDATA[<p>Совсем недавно я получил водительские права категории B и теперь могу дать несколько советов тем, кто как и я собирается получать права не по месту прописки.</p>
<p>Для начала расскажу о тех документах, которые нужны для получения прав.</p>
<h3>Временная регистрация</h3>
<p>Чтобы получить права обязательно нужно иметь временную регистрацию в том регионе, где будут получаться права.</p>
<p>Стоит понимать, что купленная в переходе временная регистрация в ГАИ не принимается. К тому же вам может грозить наказание за поделку документов.  </p>
<p><span id="more-3055"></span></p>
<p>Документы проверяют прямо перед сдачей теории. При этом у инспекторов есть база, в которой есть информация по всем сдающим. Если вы всё же попытаетесь подсунуть липовую бумажку на экзамене, вас тут же выпроводят за дверь. В нашей группе так вышло с одной непонятливой девушкой.</p>
<h3>Справка об отсутствии ранее выдававшихся прав</h3>
<p>Для получения прав придётся предоставить справку о том, что до этого момента вы не получали прав и не лишались их (с точки зрения ГИБДД это не взаимоисключающие вещи). Также желательно чтобы в этой справке была приписка о том, что у вас нет неоплаченных штрафов.</p>
<p>Делается эта справка в ГИБДД по месту вашей постоянной регистрации (прописки). Заказать эту справку могут ваши близкие родственники, и выслать вам её по почте. Но тут всё зависит от лояльности конкретных сотрудников ГИБДД.</p>
<p>Главное что стоит учитывать при получении справки – срок её действия всего 3 месяца. Если вы закажете её сразу же после подачи документов в автошколу, то с вероятностью в 90% она уже будет недействительна к сроку сдачи экзамена в ГИБДД и вам придётся получать её заново. Лучше всего заказать справку за полтора месяца до экзамена. Примерно неделю её будут делать и еще недели три она будет идти почтой.</p>
<p>Почему это так расскажу ниже.</p>
<h3>Срок обучения</h3>
<p>Все автошколы стараются максимально расплывчато сообщать о сроках обучения, т.к. сроки эти зависят от множества факторов.</p>
<p>Вы можете не успеть откатать 50 часов практики, или завалить школьный экзамен, или завалить экзамен в ГИБДД и тогда срок обучения может растянуться на годы. С нами в одной группе сдавало несколько человек, которые обучались с февраля. Двое из них в конечном итоге опять завалились в городе. Чтобы у вас не возникало проблем с планами, лучше считать что обучение займёт 4-5 месяцев.</p>
<p>Если вы решили проблему с временной регистрацией и справкой то больше никаких проблем возникнуть не должно. Можете учиться и сдавать экзамен наравне с коренными и укоренёнными жителями <img src="http://murzix.ru/wp-content/plugins/qipsmiles/smiles/smile.gif"  alt="=)" title="=)"/> </p>
<div id="attachment_3058" class="wp-caption alignnone" style="width: 710px"><a href="http://murzix.ru/wp-content/uploads/2011/12/2011-12-21_18-30-22_4471.jpg"><img src="http://murzix.ru/wp-content/uploads/2011/12/2011-12-21_18-30-22_4471-700x525.jpg" alt="Мои водительские права" title="Мои водительские права" width="700" height="525" class="size-medium wp-image-3058" /></a><p class="wp-caption-text">Мои водительские права</p></div>
]]></content:encoded>
			<wfw:commentRss>http://murzix.ru/2011/12/%d0%ba%d0%b0%d0%ba-%d0%bf%d0%be%d0%bb%d1%83%d1%87%d0%b8%d1%82%d1%8c-%d0%bf%d1%80%d0%b0%d0%b2%d0%b0-%d0%b1%d0%b5%d0%b7-%d0%bf%d1%80%d0%be%d0%bf%d0%b8%d1%81%d0%ba%d0%b8-%d0%bf%d0%be%d1%81%d1%82%d0%be/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		<feedburner:origLink>http://murzix.ru/2011/12/%d0%ba%d0%b0%d0%ba-%d0%bf%d0%be%d0%bb%d1%83%d1%87%d0%b8%d1%82%d1%8c-%d0%bf%d1%80%d0%b0%d0%b2%d0%b0-%d0%b1%d0%b5%d0%b7-%d0%bf%d1%80%d0%be%d0%bf%d0%b8%d1%81%d0%ba%d0%b8-%d0%bf%d0%be%d1%81%d1%82%d0%be/</feedburner:origLink></item>
		<item>
		<title>Как восстановить пароль ICQ если забыл email?</title>
		<link>http://feedproxy.google.com/~r/murzix/~3/wIy06DvzNCA/</link>
		<comments>http://murzix.ru/2011/11/recover-icq-password/#comments</comments>
		<pubDate>Mon, 14 Nov 2011 19:25:26 +0000</pubDate>
		<dc:creator>Морозов Максим</dc:creator>
				<category><![CDATA[программы]]></category>
		<category><![CDATA[ICQ]]></category>
		<category><![CDATA[лытдыбр]]></category>
		<category><![CDATA[рамблер]]></category>
		<category><![CDATA[решение проблем]]></category>

		<guid isPermaLink="false">http://murzix.ru/?p=3041</guid>
		<description><![CDATA[Совсем недавно со мной произошла неприятная история – я потерял доступ к своему аккаунту в ICQ. Казалось бы, что в этом страшного &#8211; написал в техподдержку и можно снова общаться. Но не всё так просто. Как так вышло? Не было никакого взлома или какой-то хакерской атаки, причина банальна до безобразия. За все время, что я [...]]]></description>
			<content:encoded><![CDATA[<p>Совсем недавно со мной произошла неприятная история – я потерял доступ к своему аккаунту в ICQ. Казалось бы, что в этом страшного &#8211; написал в техподдержку и можно снова общаться. Но не всё так просто.</p>
<h2>Как так вышло?</h2>
<p>Не было никакого взлома или какой-то хакерской атаки, причина банальна до безобразия. За все время, что я пользуюсь QIP Infuim, мне ни разу не приходилось вводить  пароль ICQ самостоятельно, он хранился в учетной записи QIP и подставлялся автоматически.</p>
<p>Но на прошлой неделе, когда я менял настройки прокси в свойствах подключения к ICQ в QIP, пароль случайно стёрся. И всё бы ничего, если бы не одно но:</p>
<blockquote><p>Я не помню email на который была зарегистрирована аська</p></blockquote>
<p><span id="more-3041"></span></p>
<p>Давным-давно, когда от скрипа жесткого диска содрагался весь мой стол, а интернет в дом поставлялся мелкими дозами по телефонным карточкам, я решил зарегистрировать ICQ. Сейчас в это трудно поверить, но в то время самым популярным поисковиком в рунете был Rambler и именно в нём я и решил искать клиент ICQ. Логично, что этот поисковик предложил мне скачать Rambler-ICQ.</p>
<p>При регистрации нужно было указать email, но у меня его тогда не было, поэтому я согласился зарегистрировать email автоматически. Единственное что я помню об этом ящике это то, что я случайно пропустил первую букву в адресе, и то, что название было какой-то вариацией на тему мурзиков <img src="http://murzix.ru/wp-content/plugins/qipsmiles/smiles/smile.gif"  alt="=)" title="=)"/> Довольно скудные данные, не так ли?</p>
<h2>Почему это так важно?</h2>
<p>Казалось бы, что в этом страшного – можно зарегистрировать новый номер и спокойно жить дальше. Но ведь там же вся адресная книга! Больше 100 записей, половина из которых только в аське и осталась. А вдруг пригодятся? <img src="http://murzix.ru/wp-content/plugins/qipsmiles/smiles/smile.gif"  alt="=)" title="=)"/> </p>
<p>К тому же именно в этот момент на работе нужно было активно консультировать неопределённый круг людей по нашему новому проекту. Делать это удобнее всего в неформальной беседе по аське, т.к. там хоть можно не очень строго придерживаться делового стиля общения.</p>
<blockquote><p>В общем, восстановить нужно было.</p></blockquote>
<h2>Этап первый, форма восстановления пароля</h2>
<p>Восстановить пароль можно на официальном сайте ICQ <noindex><a rel="nofollow" href="https://www.icq.com/password/ru">вот тут</a></noindex>. Эта форма подходит для тех, кто помнит название постового ящика к которому привязан номер ICQ. Я этого не помнил.</p>
<div id="attachment_3043" class="wp-caption alignnone" style="width: 710px"><a href="http://murzix.ru/wp-content/uploads/2011/11/icq-password.png"><img src="http://murzix.ru/wp-content/uploads/2011/11/icq-password-700x325.png" alt="Форма восстановления на сайте ICQ" title="Форма восстановления на сайте ICQ" width="700" height="325" class="size-medium wp-image-3043" /></a><p class="wp-caption-text">Форма восстановления на сайте ICQ</p></div>
<p>Но не всё так плохо! Заботливые дядьки-программисты показали мне первую букву имени моего ящика в уведомлении об отправке! (остальные показали звёздочками)  Таким образом, круг сузился – осталось вспомнить только 4 буквы.</p>
<h2>Этап второй, письмо в техподдержку ICQ</h2>
<p>Под формой восстановления пароля есть ссылка на центр помощи ICQ <noindex><a rel="nofollow" href="http://www.icq.com/support/ru">вот он</a></noindex>, который почему-то никак не хочет отображаться на русском языке.</p>
<div id="attachment_3045" class="wp-caption alignnone" style="width: 710px"><a href="http://murzix.ru/wp-content/uploads/2011/11/icq-hc.png"><img src="http://murzix.ru/wp-content/uploads/2011/11/icq-hc-700x556.png" alt="Центр помощи ICQ" title="Центр помощи ICQ" width="700" height="556" class="size-medium wp-image-3045" /></a><p class="wp-caption-text">Центр помощи ICQ</p></div>
<p>Да и форма обратной связи ведёт на какой-то сервис <noindex><a rel="nofollow" href="http://www.kampyle.com/feedback_form/ff-feedback-form.php?site_code=7964877&#038;lang=en&#038;form_id=67537">kampyle</a></noindex>. Я перевёл свой вопрос через Google Translate и отправил, но ответа до сих пор не получил (пробовал два раза в разные дни)</p>
<div id="attachment_3046" class="wp-caption alignnone" style="width: 441px"><a href="http://murzix.ru/wp-content/uploads/2011/11/icq-feedback.png"><img src="http://murzix.ru/wp-content/uploads/2011/11/icq-feedback.png" alt="Форма обратной связи на сайте ICQ" title="Форма обратной связи на сайте ICQ" width="431" height="334" class="size-full wp-image-3046" /></a><p class="wp-caption-text">Форма обратной связи на сайте ICQ</p></div>
<h2>Этап третий, техподдержка рамблера</h2>
<p>Раз уж аську регистрировали в рамблеровской программе, значит можно написать в рамблер! Раздел Rambler-ICQ находится без проблем, форма обратной связи предсказуемо спрятана  <noindex><a rel="nofollow" href="http://help.rambler.ru/feedback.html?s=icq">в уголок</a></noindex>. Пишем письмо и ждём. На следующий день пишем еще одно и опять ждём. Результат нулевой. Техподдержка опять не отвечает.</p>
<div id="attachment_3047" class="wp-caption alignnone" style="width: 710px"><a href="http://murzix.ru/wp-content/uploads/2011/11/rambler-icq.png"><img src="http://murzix.ru/wp-content/uploads/2011/11/rambler-icq-700x496.png" alt="Форма обратной связи на сайте рамблера" title="Форма обратной связи на сайте рамблера" width="700" height="496" class="size-medium wp-image-3047" /></a><p class="wp-caption-text">Форма обратной связи на сайте рамблера</p></div>
<p>Самое обидное, что даже номера обращения они не выдают, иначе можно было бы пожаловаться на бардак.</p>
<h2>Этап четвёртый, меняем тактику</h2>
<p>Раз уж техподдержка не помогла, нужно помогать себе самостоятельно. Лучше всего было бы напрячь память и вспомнить, что же за email я тогда зарегистрировал. Первая буква мне известна, остальные 4 буквы и цифры должны в как-то напоминать слово мурзик без буквы м. Количество возможных комбинаций не превышает 12 штук. Не так много.</p>
<h2>Этап пятый, определение принадлежности ящика по контрольному вопросу</h2>
<p>Во всех своих важных аккаунтах я стараюсь заполнять контрольный вопрос какой-нибудь абсолютно нелогичной фразой, ответ на которую я смогу написать однозначно. Была надежда, что тогда я уже начал страдать этой паранойей и заполнил данное поле.</p>
<p>Чтобы это выяснить, достаточно перебрать все 12 комбинаций имейла на <noindex><a rel="nofollow" href="http://id.rambler.ru/script/reminder.cgi">данной странице</a></noindex></p>
<div id="attachment_3049" class="wp-caption alignnone" style="width: 710px"><a href="http://murzix.ru/wp-content/uploads/2011/11/rambler-captcha.png"><img src="http://murzix.ru/wp-content/uploads/2011/11/rambler-captcha-700x380.png" alt="Форма фосстановления пароля на сайте рамблера" title="Форма фосстановления пароля на сайте рамблера" width="700" height="380" class="size-medium wp-image-3049" /></a><p class="wp-caption-text">Форма фосстановления пароля на сайте рамблера</p></div>
<p>Вводим раз, вводим второй и тут&#8230;</p>
<h2>Этап шестой, используем баг рамблеровской капчи</h2>
<p>&#8230; и тут выясняется что капча кешируется! (или фаерфокс такой умный, или наша корпоративная прокся)  Т.е. циферки и буковки для защиты от роботов всё время одинаковые. Мало того, во всех проверенных ящиках контрольной фразой была «Ваше любимое число»!</p>
<p>Это сильно упрощает задачу, т.к. люди ленивы и не утруждаются ввести больше трёх одинаковых цифр в это поле. Как позже выяснилось, большая часть вообще вводит одну цифру.</p>
<h2>Финальный этап</h2>
<p>Получасовой перебор цифр заканчивается случайным доступом к нескольким ящикам, некоторые из которых активно использовались. В этот момент стало несколько стыдно, но я решил переписку чужих людей не читать и всячески не мешать пользователям. Через полчаса – voila! Мой ящик был найден после того как в поле был подставлен номер определённого телефона, до его смены (удалось вспомнить =))</p>
<p>Контактные данные совпадают, но доступ к нему заблокирован. Разблокировать ящик можно простым кликом мыши. Ну а после получения доступа к ящику форма из первого этапа восстанавливает пароль без всяких проблем.</p>
<p>Вот так вот мне повезло с восстановлением аськи <img src="http://murzix.ru/wp-content/plugins/qipsmiles/smiles/smile.gif"  alt="=)" title="=)"/> </p>
]]></content:encoded>
			<wfw:commentRss>http://murzix.ru/2011/11/recover-icq-password/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		<feedburner:origLink>http://murzix.ru/2011/11/recover-icq-password/</feedburner:origLink></item>
		<item>
		<title>Проверка ИНН на JavaScript</title>
		<link>http://feedproxy.google.com/~r/murzix/~3/5wJ6-a_RTDk/</link>
		<comments>http://murzix.ru/2011/10/%d0%bf%d1%80%d0%be%d0%b2%d0%b5%d1%80%d0%ba%d0%b0-%d0%b8%d0%bd%d0%bd-%d0%bd%d0%b0-javascript/#comments</comments>
		<pubDate>Mon, 31 Oct 2011 17:49:33 +0000</pubDate>
		<dc:creator>Морозов Максим</dc:creator>
				<category><![CDATA[программирование]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://murzix.ru/?p=3026</guid>
		<description><![CDATA[Очень часто в разнообразных формах ввода данных требуется проверить ИНН на корректность. Делать это нужно в первую очередь на стороне клиента, чтобы избежать повторной загрузки страницы и дать возможность пользователю исправить ошибки. Идентификационный номер налогоплательщика (ИНН) — цифровой код, упорядочивающий учёт налогоплательщиков в Российской Федерации. Присваивается как юридическим, так и физическим лицам. Организациям присваивается с [...]]]></description>
			<content:encoded><![CDATA[<p>Очень часто в разнообразных формах ввода данных требуется проверить ИНН на корректность. Делать это нужно в первую очередь на стороне клиента, чтобы избежать повторной загрузки страницы и дать возможность пользователю исправить ошибки.</p>
<p><span id="more-3026"></span></p>
<blockquote><p><strong>Идентификационный номер налогоплательщика</strong> (ИНН) — цифровой код, упорядочивающий учёт налогоплательщиков в Российской Федерации. Присваивается как юридическим, так и физическим лицам. Организациям присваивается с 1993 года, индивидуальным предпринимателям — с 1997 года, прочим физическим лицам — с 1999 года (с начала действия первой части Налогового кодекса Российской Федерации).</p>
<p><noindex><a rel="nofollow" href="http://ru.wikipedia.org/wiki/Идентификационный_номер_налогоплательщика">Подробнее</a></noindex></p>
</blockquote>
<p>Алгоритм проверки ИНН несколько сложнее, <a href="http://murzix.ru/2011/10/проверка-огрн-и-огрнип-на-javascript/">чем ОГРН</a>, но также не представляет ничего сверхъестественного.  Единственная проблема с которой я столкнулся – не все браузеры могут сразу обращаться к строке как к массиву (в IE6 это не работает), поэтому приходится предварительно создавать массив с нужными нам символами на основе входной строки.</p>
<p>Вот и сама функция.</p>
<blockquote><p><code><font size="2" face="Consolas, Courier New, Courier, Monospace" color="black"><font color="#0000ff">function</font> checkINN(inputNumber){<br/>&nbsp;&nbsp;&nbsp;&nbsp;<font color="#008000">//преобразуем&nbsp;в&nbsp;строку</font><br/>&nbsp;&nbsp;&nbsp;&nbsp;inputNumber = <font color="#A31515">""</font> + inputNumber;<br/>&nbsp;&nbsp;&nbsp;&nbsp;<font color="#008000">//преобразуем&nbsp;в&nbsp;массив</font><br/>&nbsp;&nbsp;&nbsp;&nbsp;inputNumber = inputNumber.split(<font color="#A31515">''</font>);<br/>&nbsp;&nbsp;&nbsp;&nbsp;<font color="#008000">//для&nbsp;ИНН&nbsp;в&nbsp;10&nbsp;знаков</font><br/>&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">if</font>((inputNumber.length == <font color="#A31515">10</font>) &amp;&amp; (inputNumber[<font color="#A31515">9</font>] == ((<font color="#A31515">2</font> * inputNumber[ <font color="#A31515">&nbsp;0</font>] + <font color="#A31515">4</font> * inputNumber[<font color="#A31515">1</font>] + <font color="#A31515">10</font> * inputNumber[<font color="#A31515">2</font>] + <font color="#A31515">3</font> * inputNumber[<font color="#A31515">3</font>] + <font color="#A31515">5</font> * inputNumber[<font color="#A31515">4</font>] + <font color="#A31515">9</font> * inputNumber[<font color="#A31515">5</font>] + <font color="#A31515">4</font> * inputNumber[<font color="#A31515">6</font>] + <font color="#A31515">6</font> * inputNumber[<font color="#A31515">7</font>] + <font color="#A31515">8</font> * inputNumber[<font color="#A31515">8</font>]) % <font color="#A31515">11</font>) % <font color="#A31515">10</font>)){<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">return true</font>;<br/>&nbsp;&nbsp;&nbsp;&nbsp;<font color="#008000">//для&nbsp;ИНН&nbsp;в&nbsp;12&nbsp;знаков</font><br/>&nbsp;&nbsp;&nbsp;&nbsp;}<font color="#0000ff">else if</font>((inputNumber.length == <font color="#A31515">12</font>) &amp;&amp; ((inputNumber[<font color="#A31515">10</font>] == ((<font color="#A31515">7</font> * inputNumber[<font color="#A31515">&nbsp;0</font>] + <font color="#A31515">2</font> * inputNumber[<font color="#A31515">1</font>] + <font color="#A31515">4</font> * inputNumber[<font color="#A31515">2</font>] + <font color="#A31515">10</font> * inputNumber[<font color="#A31515">3</font>] + <font color="#A31515">3</font> * inputNumber[<font color="#A31515">4</font>] + <font color="#A31515">5</font> * inputNumber[<font color="#A31515">5</font>] + <font color="#A31515">9</font> * inputNumber[<font color="#A31515">6</font>] + <font color="#A31515">4</font> * inputNumber[<font color="#A31515">7</font>] + <font color="#A31515">6</font> * inputNumber[<font color="#A31515">8</font>] + <font color="#A31515">8</font> * inputNumber[<font color="#A31515">9</font>]) % <font color="#A31515">11</font>) % <font color="#A31515">10</font>) &amp;&amp; (inputNumber[<font color="#A31515">11</font>] == ((<font color="#A31515">3</font> * inputNumber[<font color="#A31515">&nbsp;0</font>] + <font color="#A31515">7</font> *  inputNumber[<font color="#A31515">1</font>] + <font color="#A31515">2</font> * inputNumber[<font color="#A31515">2</font>] + <font color="#A31515">4</font> * inputNumber[<font color="#A31515">3</font>] + <font color="#A31515">10</font> * inputNumber[<font color="#A31515">4</font>] + <font color="#A31515">3</font> * inputNumber[<font color="#A31515">5</font>] + <font color="#A31515">5</font> * inputNumber[<font color="#A31515">6</font>] + <font color="#A31515">9</font> * inputNumber[<font color="#A31515">7</font>] + <font color="#A31515">4</font> * inputNumber[<font color="#A31515">8</font>] + <font color="#A31515">6</font> * inputNumber[<font color="#A31515">9</font>] + <font color="#A31515">8</font> * inputNumber[<font color="#A31515">10</font>]) % <font color="#A31515">11</font>) % <font color="#A31515">10</font>))){<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">return true</font>;<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<font color="#0000ff">else</font>{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">return false</font>;<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>}  <br/></font></code></p></blockquote>
<p>На вход она получает ИНН длинной 10 или 12 знаков, на выход возвращает <strong>true</strong> или <strong>false</strong>, в зависимости от результатов проверки.</p>
]]></content:encoded>
			<wfw:commentRss>http://murzix.ru/2011/10/%d0%bf%d1%80%d0%be%d0%b2%d0%b5%d1%80%d0%ba%d0%b0-%d0%b8%d0%bd%d0%bd-%d0%bd%d0%b0-javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://murzix.ru/2011/10/%d0%bf%d1%80%d0%be%d0%b2%d0%b5%d1%80%d0%ba%d0%b0-%d0%b8%d0%bd%d0%bd-%d0%bd%d0%b0-javascript/</feedburner:origLink></item>
		<item>
		<title>Проверка ОГРН и ОГРНИП на JavaScript</title>
		<link>http://feedproxy.google.com/~r/murzix/~3/Arw6F4Sx_2Q/</link>
		<comments>http://murzix.ru/2011/10/%d0%bf%d1%80%d0%be%d0%b2%d0%b5%d1%80%d0%ba%d0%b0-%d0%be%d0%b3%d1%80%d0%bd-%d0%b8-%d0%be%d0%b3%d1%80%d0%bd%d0%b8%d0%bf-%d0%bd%d0%b0-javascript/#comments</comments>
		<pubDate>Mon, 24 Oct 2011 17:24:39 +0000</pubDate>
		<dc:creator>Морозов Максим</dc:creator>
				<category><![CDATA[программирование]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://murzix.ru/?p=3013</guid>
		<description><![CDATA[Чтобы блог не пустовал, выложу тут простенький скрипт проверки на валидность ОГРН и ОГРНИП(больше на 2 знака). Вдруг кто-нибудь будет искать готовый ОГРН (основной государственный регистрационный номер) — государственный регистрационный номер записи о создании юридического лица либо записи о первом представлении в соответствии с Федеральным законом Российской Федерации &#171;О государственной регистрации юридических лиц&#187; сведений о [...]]]></description>
			<content:encoded><![CDATA[<p>Чтобы блог не пустовал, выложу тут простенький скрипт проверки на валидность ОГРН и ОГРНИП(больше на 2 знака). Вдруг кто-нибудь будет искать готовый <img src="http://murzix.ru/wp-content/plugins/qipsmiles/smiles/smile.gif"  alt="=)" title="=)"/> </p>
<blockquote><p><strong>ОГРН</strong> (<em>основной государственный регистрационный номер</em>) — государственный регистрационный номер записи о создании юридического лица либо записи о первом представлении в соответствии с Федеральным законом Российской Федерации &laquo;О государственной регистрации юридических лиц&raquo; сведений о юридическом лице, зарегистрированном до введения в действие указанного Закона (пункт 8 Правил ведения Единого государственного реестра юридических лиц).</p>
<p><noindex><a rel="nofollow" href="http://ru.wikipedia.org/wiki/%CE%F1%ED%EE%E2%ED%EE%E9_%E3%EE%F1%F3%E4%E0%F0%F1%F2%E2%E5%ED%ED%FB%E9_%F0%E5%E3%E8%F1%F2%F0%E0%F6%E8%EE%ED%ED%FB%E9_%ED%EE%EC%E5%F0">Подробнее</a></noindex></p>
</blockquote>
<p><span id="more-3013"></span></p>
<p>Вся проверка сводится к вычислению остатка от деления и сравнения его с последним знаком в числе (крайним правым). Если остаток равен 10 то последним знаком должен быть ноль.</p>
<blockquote><p><code><font size="2" face="Consolas, Courier New, Courier, Monospace" color="black"><font color="#0000ff">function</font> checkOgrn(chekedValue){<br/>&nbsp;&nbsp;&nbsp;&nbsp;<font color="#008000">//для&nbsp;ОГРН&nbsp;в&nbsp;13&nbsp;знаков</font><br/>&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">if</font>(chekedValue.length == <font color="#A31515">13</font> &amp;&amp; (parseInt((chekedValue.slice(<font color="#A31515">12</font>,<font color="#A31515">13</font>))) == parseInt(chekedValue.slice(-<font color="#A31515">1</font>))% <font color="#A31515">11</font>)){<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">return true</font>;<br/>&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;<font color="#008000">//для&nbsp;ОГРН&nbsp;в&nbsp;15&nbsp;знаков</font><br/>&nbsp;&nbsp;&nbsp;&nbsp;}<font color="#0000ff">else if</font>(chekedValue.length == <font color="#A31515">15</font> &amp;&amp; (parseInt(chekedValue.slice(<font color="#A31515">14</font>,<font color="#A31515">15</font>)) == parseInt((chekedValue.slice(-<font color="#A31515">1</font>))% <font color="#A31515">13</font>))){<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">return true</font>;<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">return false</font>;<br/>} <br/></font></code></p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://murzix.ru/2011/10/%d0%bf%d1%80%d0%be%d0%b2%d0%b5%d1%80%d0%ba%d0%b0-%d0%be%d0%b3%d1%80%d0%bd-%d0%b8-%d0%be%d0%b3%d1%80%d0%bd%d0%b8%d0%bf-%d0%bd%d0%b0-javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://murzix.ru/2011/10/%d0%bf%d1%80%d0%be%d0%b2%d0%b5%d1%80%d0%ba%d0%b0-%d0%be%d0%b3%d1%80%d0%bd-%d0%b8-%d0%be%d0%b3%d1%80%d0%bd%d0%b8%d0%bf-%d0%bd%d0%b0-javascript/</feedburner:origLink></item>
		<item>
		<title>Тест: новая сим карта с меньшим напряжением</title>
		<link>http://feedproxy.google.com/~r/murzix/~3/NSqQ02CSKXE/</link>
		<comments>http://murzix.ru/2011/09/new-sim/#comments</comments>
		<pubDate>Sun, 04 Sep 2011 13:07:16 +0000</pubDate>
		<dc:creator>Морозов Максим</dc:creator>
				<category><![CDATA[устройства]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[motorola]]></category>
		<category><![CDATA[решение проблем]]></category>
		<category><![CDATA[телефон]]></category>

		<guid isPermaLink="false">http://murzix.ru/?p=3002</guid>
		<description><![CDATA[Как все знают, Android очень прожорливая операционная система. При нормальной интенсивности использования телефон приходится заряжать каждую ночь, иначе на следующий день можно внезапно остаться без связи. В связи с этим пользователи телефона прибегают к различным ухищрениям – когда телефон не нужен, включают режим самолёта, пользуются устройством только при минимальной яркости экрана, устанавливают программы, выгружающие всё [...]]]></description>
			<content:encoded><![CDATA[<p>Как все знают, Android очень прожорливая операционная система. При нормальной интенсивности использования телефон приходится заряжать каждую ночь, иначе на следующий день можно внезапно остаться без связи. В связи с этим пользователи телефона прибегают к различным ухищрениям – когда телефон не нужен, включают режим самолёта, пользуются устройством только при минимальной яркости экрана, устанавливают программы, выгружающие всё из памяти и т.д.</p>
<p>Мне эти махинации не очень  нравится, т.к. устройство должно работать на полную. Уровень яркости должен быть комфортным, производительность высокой, а фоновая синхронизация должна  избавлять от необходимости проверять почту, новости и сообщения в соцсетях руками.</p>
<p>Но не так давно я решил немного улучшить ситуацию с энергопотреблением , заменив сим карту старого образца с напряжением 3.3 Вольта на симку нового образца с напряжением 1.8 Вольта. Отличить эти две симки несложно – у них разные контактные площадки.</p>
<p><span id="more-3002"></span></p>
<div id="attachment_3004" class="wp-caption alignnone" style="width: 428px"><a href="http://murzix.ru/wp-content/uploads/2011/09/2sim.png"><img src="http://murzix.ru/wp-content/uploads/2011/09/2sim.png" alt="Слевая старая симка 3.3V, справа новая на 1.8V" title="Слевая старая симка 3.3V, справа новая на 1.8V" width="418" height="254" class="size-full wp-image-3004" /></a><p class="wp-caption-text">Слевая старая симка 3.3V, справа новая на 1.8V</p></div>
<h3>Как заменить сим карту</h3>
<p>Замена SIM делается очень просто. Достаточно подойти в любой офис продаж вашего оператора, написать заявление и подождать 2 минуты, пока карта будет готова. Через полчаса ею уже можно пользоваться.</p>
<h3>Что я хотел получить от замены</h3>
<p>Честно говоря, я хотел, чтобы телефон функционировал в нормальном режиме до вечера следующего дня. До замены сим карты этого никак не получалось, телефон стабильно разряжался когда я был на работе (т.е. жил не больше чем полтора дня при среднем использовании)  А если телефоном пользоваться активно, то заряда хватало только на 6-7 часов. Это даже меньше одного рабочего дня.</p>
<p>Список моих каждодневных потребностей: FM радио (1 час), читалка книг, плеер, прогноз погоды, Email, новости РБК, ридер башорга и инет по мелочам. Иногда, когда нужно куда-то зайти после работы очень полезным оказывается GPS и карты яндекса. Часто необходимы какие-то мелкие программки, вроде со схемы метро (для расчета времени прибытия на станцию) или расписания электричек.</p>
<h3>Что я получил от замены</h3>
<p>Рабочий день телефона начинается в 7:00 утра, когда я просыпаюсь на работу. В первый день тестов, случился неприятный глюк – днём зависло приложение с каталогом фоновых картинок на рабочий стол PicSpeed. Это подвисание я обнаружил только через полчаса, все эти полчаса приложение активно использовало процессор, поэтому даже на следующий день оно висело в топе по потреблению.</p>
<p>Телефон разрядился к вечеру следующего дня (не совсем разрядился – осталось 10 % заряда)</p>
<div id="attachment_3006" class="wp-caption alignnone" style="width: 490px"><a href="http://murzix.ru/wp-content/uploads/2011/09/snap20110827_002629.png"><img src="http://murzix.ru/wp-content/uploads/2011/09/snap20110827_002629.png" alt="Итоги первого теста" title="Итоги первого теста" width="480" height="854" class="size-full wp-image-3006" /></a><p class="wp-caption-text">Итоги первого теста</p></div>
<p>Следующий тест был более честным, т.к. звонков было больше и на работе я слушал музыку с телефона (в первый день этого не было). Телефон также разрядился к вечеру следующего дня (15% заряда)</p>
<div id="attachment_3007" class="wp-caption alignnone" style="width: 490px"><a href="http://murzix.ru/wp-content/uploads/2011/09/snap20110830_211756.png"><img src="http://murzix.ru/wp-content/uploads/2011/09/snap20110830_211756.png" alt="Итоги второго теста" title="Итоги второго теста" width="480" height="854" class="size-full wp-image-3007" /></a><p class="wp-caption-text">Итоги второго теста</p></div>
<p>Можно было посмотреть, сколько прожил бы телефон в итоге (подождать пока заряд не дойдёт до 5%) но мне не хотелось остаться утром без связи и без будильника.</p>
<p>По началу, мне показалось, что связь стала ловиться хуже, т.к. телефон не смог найти дома сеть 3G. Но на работе телефон ловил также как и раньше (это в нашем-то офисе  который находится подвале, в котором находился архив госорганов)</p>
<p>Ловил также как и раньше, это значит,  что связь была только у туалетов и в кабинете, где  работаю. В остальных местах связи не было.<br />
Дома 3G стал ловиться чуть реже, но я не склонен обвинять в этом сим карту. Т.к. остальных местах с 3G проблем не было.</p>
<h3>Итог</h3>
<p>В итоге я не могу сказать, что получил сильный выигрыш во времени работы от аккумулятора. Увеличение, конечно, есть, но до двух дней комфортного использования аппарат не дотягивает.</p>
<p>Зато теперь можно спокойно дожить до конца дня при очень интенсивном использовании телефона на работе. Это уже плюс.</p>
]]></content:encoded>
			<wfw:commentRss>http://murzix.ru/2011/09/new-sim/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://murzix.ru/2011/09/new-sim/</feedburner:origLink></item>
		<item>
		<title>Битрикс: список активных тем форума</title>
		<link>http://feedproxy.google.com/~r/murzix/~3/1vLyP8DP8qg/</link>
		<comments>http://murzix.ru/2011/08/bitrix-forum-last-post/#comments</comments>
		<pubDate>Wed, 10 Aug 2011 08:36:14 +0000</pubDate>
		<dc:creator>Морозов Максим</dc:creator>
				<category><![CDATA[bitrix]]></category>
		<category><![CDATA[программирование]]></category>
		<category><![CDATA[рабочее]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[работа]]></category>

		<guid isPermaLink="false">http://murzix.ru/?p=2990</guid>
		<description><![CDATA[Затащить работников организации на рабочий форум задача не простая. В связи с этим очень важно учитывать пожелания по необходимому функционалу и оформлению. Наши работники захотели получить список последних сообщений на форуме, т.к. с помощью этого списка легко можно попасть в активное обсуждение, не прибегая к поиску. Постановка задачи Вывести список последних сообщений в «подвале» форума. [...]]]></description>
			<content:encoded><![CDATA[<p>Затащить работников организации на рабочий форум задача не простая. В связи с этим очень важно учитывать пожелания по необходимому функционалу и оформлению.</p>
<p>Наши работники захотели получить список последних сообщений на форуме, т.к. с помощью этого списка легко можно попасть в активное обсуждение, не прибегая к поиску.</p>
<p><span id="more-2990"></span></p>
<h3>Постановка задачи</h3>
<p>Вывести список последних сообщений в «подвале» форума. Задача несложная и решается в несколько строчек. Её можно использовать в качестве учебного примера.</p>
<h3>Поиск решения</h3>
<p>Если посмотреть на форумы, где этот функционал реализован, то несложно заметить что список последних сообщений выводится редко. Оно и понятно, одно активное обсуждение в популярной теме быстро заполнит весь список, вытеснив оттуда другие темы.</p>
<p>Делаем вывод &#8211; нам нужен не список последних сообщений, а список обсуждаемых тем, отсортированный по дате последнего обновления.</p>
<h3>Написание компонента</h3>
<p>Чтобы не добавлять лишнюю логику в оформление форума мы напишем свой маленький компонентик, который будет выводить нужную нам информацию, а потом подключим его туда, где мы хотим видеть эту информацию. Если вы еще ни разу не писали компоненты, то стоит почитать вот это <noindex><a rel="nofollow" href="http://dev.1c-bitrix.ru/api_help/main/general/component20/03.component_place.php">руководство</a></noindex></p>
<p>Для решения задачи нужно написать всего 3 файлика. Логику в component.php и оформление в виде стандартного шаблона <strong>.default</strong> содержащего файлы <strong>template.php</strong> и <strong>style.css</strong>. Как назвать компонент – дело ваше. На работу это не влияет (т.е. в файле <strong>.description.php</strong> пишите то, что вам нужно)</p>
<h3>Логика (файл component.php)</h3>
<p>Получаем список свежеизменённых тем форума отсортировав их по времени последнего изменения и ограничив их количество 15ю.</p>
<blockquote><p><code><font size="2" face="Courier New" color="black">&#60;?<font color="#0000ff">if</font>(!defined(<font color="#A31515">"B_PROLOG_INCLUDED"</font>) || B_PROLOG_INCLUDED!==<font color="#0000ff">true</font>) die();</p>
<p>CModule::IncludeModule(<font color="#A31515">"forum"</font>);</p>
<p><font color="#008000">//количество возвращаемых тем форума</font><br />
$arResult[<font color="#A31515">"numOfTopics"</font>] = 15;</p>
<p><font color="#008000">//запрашиваем темы</font><br />
$db_res = CForumTopic::GetListEx(<br />
&nbsp;&nbsp;array(<br />
&nbsp;&nbsp;&nbsp;&nbsp;<font color="#A31515">"LAST_POST_DATE"</font> =&#62; <font color="#A31515">"DESC"</font><br />
&nbsp;&nbsp;),<br />
&nbsp;&nbsp;array(<br />
&nbsp;&nbsp;),<br />
&nbsp;&nbsp;<font color="#0000ff">false</font>,<br />
&nbsp;&nbsp;$arResult[<font color="#A31515">"numOfTopics"</font>]&nbsp;&nbsp;<br />
);</p>
<p><font color="#0000ff">while</font>($ar_res = $db_res-&#62;Fetch()){<br />
&nbsp;&nbsp;<font color="#008000">//если пользователь имеет право доступа к форуму</font><br />
&nbsp;&nbsp;<font color="#0000ff">if</font>(ForumCurrUserPermissions($ar_res[<font color="#A31515">"FORUM_ID"</font>]) != <font color="#A31515">"A"</font>){<br />
&nbsp;&nbsp;&nbsp;&nbsp;<font color="#008000">//записываем в итоговый массив</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;$arResult[<font color="#A31515">"Topics"</font>][] = $ar_res;<br />
&nbsp;&nbsp;}<br />
}</p>
<p>$<font color="#0000ff">this</font>-&#62;IncludeComponentTemplate();?&#62;</font></p>
<p></code></p></blockquote>
<p>Можно было бы сделать количество отображаемых тем параметром, и получать его в файле <strong>.parameters.php</strong>, но я посчитал это лишним.</p>
<h3>Оформление, html (файл templates/.default/template.php)</h3>
<p>У нас на форуме используется почти стандартный шаблон форума с минимальными косметическими изменениями. В этой ситуации логично использовать стандартные CSS классы оформления, чтобы при изменении общего оформления не пришлось бы менять оформление компонента.</p>
<p><b<br />
<blockquote><code><font size="2" face="Courier New" color="black"><font color="#0000ff">&#60;</font><font color="#800000">div</font> <font color="#ff0000">class</font><font color="#0000ff">="forum-info-box lastPostBox"</font><font color="#0000ff">&#62;</font><br />
&nbsp;&nbsp;<font color="#0000ff">&#60;</font><font color="#800000">div</font> <font color="#ff0000">class</font><font color="#0000ff">="lastPostTitle"</font><font color="#0000ff">&#62;</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;Последние сообщения на форуме<br />
&nbsp;&nbsp;<font color="#0000ff">&#60;/</font><font color="#800000">div</font><font color="#0000ff">&#62;</font><br />
&nbsp;&nbsp;<font color="#0000ff">&#60;?</font>//если в списке есть темы<br />
&nbsp;&nbsp;if(count($arResult["Topics"]) <font color="#0000ff">&#62;</font> 0){<br />
&nbsp;&nbsp;&nbsp;&nbsp;//обходим массив с темами и выводим ссылки<br />
&nbsp;&nbsp;&nbsp;&nbsp;foreach($arResult["Topics"] as $topic){?<font color="#0000ff">&#62;</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">&#60;</font><font color="#800000">div</font> <font color="#ff0000">class</font><font color="#0000ff">="forum-statistics-users"</font><font color="#0000ff">&#62;</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">&#60;</font><font color="#800000">a</font> <font color="#ff0000">href</font><font color="#0000ff">="/forum/forum&#60;?=$topic["</font><font color="#ff0000">FORUM_ID</font>"]?<font color="#0000ff">&#62;</font>/"<font color="#0000ff">&#62;&#60;?</font>=substr($topic["FORUM_NAME"], 0, 40)?<font color="#0000ff">&#62;&#60;/</font><font color="#800000">a</font><font color="#0000ff">&#62;</font> <font color="#0000ff">&#62;</font> <font color="#0000ff">&#60;</font><font color="#800000">a</font> <font color="#ff0000">href</font><font color="#0000ff">="/forum/messages/forum&#60;?=$topic["</font><font color="#ff0000">FORUM_ID</font>"]?<font color="#0000ff">&#62;</font>/topic<font color="#0000ff">&#60;?</font>=$topic["ID"]?<font color="#0000ff">&#62;</font>/message<font color="#0000ff">&#60;?</font>=$topic["LAST_MESSAGE_ID"]?<font color="#0000ff">&#62;</font>/#message<font color="#0000ff">&#60;?</font>=$topic["LAST_MESSAGE_ID"]?<font color="#0000ff">&#62;</font>"<font color="#0000ff">&#62;&#60;?</font>=substr($topic["TITLE"], 0, 40)?<font color="#0000ff">&#62;&#60;/</font><font color="#800000">a</font><font color="#0000ff">&#62;&#60;</font><font color="#800000">em</font> <font color="#ff0000">class</font><font color="#0000ff">="change"</font><font color="#0000ff">&#62;</font>автор:<font color="#0000ff">&#60;/</font><font color="#800000">em</font><font color="#0000ff">&#62;</font> <font color="#0000ff">&#60;?</font>=$topic["LAST_POSTER_NAME"]?<font color="#0000ff">&#62;</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">&#60;/</font><font color="#800000">div</font><font color="#0000ff">&#62;</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">&#60;</font><font color="#800000">div</font> <font color="#ff0000">class</font><font color="#0000ff">="forum-statistics-topics"</font><font color="#0000ff">&#62;</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">&#60;</font><font color="#800000">span</font> <font color="#ff0000">class</font><font color="#0000ff">="change-date"</font><font color="#0000ff">&#62;&#60;?</font>=$topic["LAST_POST_DATE"]?<font color="#0000ff">&#62;&#60;/</font><font color="#800000">span</font><font color="#0000ff">&#62;</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">&#60;/</font><font color="#800000">div</font><font color="#0000ff">&#62;</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">&#60;?</font>}<br />
&nbsp;&nbsp;}else{?<font color="#0000ff">&#62;</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;Свежих сообщений нет.<br />
&nbsp;&nbsp;<font color="#0000ff">&#60;?</font>}?<font color="#0000ff">&#62;</font><br />
<font color="#0000ff">&#60;/</font><font color="#800000">div</font><font color="#0000ff">&#62;</font></p>
<p></font></p>
<p></code></p></blockquote>
<p>Ссылки я вывожу обычным образом без всякого ЧПУ, но в таком виде, как будто ЧПУ использовался <img src="http://murzix.ru/wp-content/plugins/qipsmiles/smiles/smile.gif"  alt="=)" title="=)"/> </p>
<h3>Оформление, css (файл templates/.default/style.css)</h3>
<p>Изменения в оформлении минимальны, чуть больше междустрочный интервал, для большей читабельности и выделение жирным заголовка. Для более удобного просмотра списка при наведении курсора строка затеняется.</p>
<blockquote><p><code><font size="2" face="Courier New" color="black">.lastPostTitle{<br />
&nbsp;&nbsp;font-weight:bold;<br />
&nbsp;&nbsp;padding-bottom: 5px;<br />
}</p>
<p>.change,.forum-statistics-topics span.change-date{<br />
&nbsp;&nbsp;color:gray;<br />
&nbsp;&nbsp;font-weight: normal;<br />
&nbsp;&nbsp;padding-left:1em;<br />
&nbsp;&nbsp;line-height: 2.3em;<br />
}</p>
<p>.lastPostBox .forum-statistics-topics:hover{<br />
&nbsp;&nbsp;background-color: #eeeded;<br />
}</font></p>
<p></code></p></blockquote>
<h3>Вывод компонента</h3>
<p>Самым удобным местом для данного списка я считаю пространство между списком пользователей онлайн и статистикой по сообщениям.</p>
<p>В стандартном комплексном компоненте битрикса этот функционал содержится в компоненте <strong>forum.statistic</strong>, следовательно, в шаблон именно этого компонента нужно добавлять код вызова нашего компонента. Для этого нужно отредактировать файл <strong>/bitrix/templates/название шаблона сайта/components/bitrix/forum/название шаблона форума/bitrix/forum.statistic/.default/template.php</strong></p>
<p>Я назвал компонент <strong>forum.messages.last</strong> и разместил его в пространстве имён </trong>custom</strong>, поэтому у меня получился вот такой код вызова:</p>
<blockquote><p><code><font size="2" face="Courier New" color="black">&#60;?$APPLICATION-&#62;IncludeComponent(<br />
&nbsp;&nbsp;<font color="#A31515">"custom:forum.messages.last"</font>,<br />
&nbsp;&nbsp;<font color="#A31515">".default"</font><br />
);?&#62;</font></p>
<p></code></p></blockquote>
<p>Добавив этот код в указанный выше файл мы получаем вот такой список:</p>
<div id="attachment_2994" class="wp-caption alignnone" style="width: 710px"><a href="http://murzix.ru/wp-content/uploads/2011/08/bitrix-forum-last-post.png"><img src="http://murzix.ru/wp-content/uploads/2011/08/bitrix-forum-last-post-700x391.png" alt="Список последних обновлений на форуме" title="Список последних обновлений на форуме" width="700" height="391" class="size-medium wp-image-2994" /></a><p class="wp-caption-text">Список последних обновлений на форуме</p></div>
<h3>Итог</h3>
<p>В результате пользователи довольны, а мы потратили минимальное количество времени.</p>
]]></content:encoded>
			<wfw:commentRss>http://murzix.ru/2011/08/bitrix-forum-last-post/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://murzix.ru/2011/08/bitrix-forum-last-post/</feedburner:origLink></item>
		<item>
		<title>Графики с использованием jQuery плагина Flot</title>
		<link>http://feedproxy.google.com/~r/murzix/~3/w8AqWx5Y-9k/</link>
		<comments>http://murzix.ru/2011/07/flot-jquery-graph/#comments</comments>
		<pubDate>Thu, 14 Jul 2011 11:16:36 +0000</pubDate>
		<dc:creator>Морозов Максим</dc:creator>
				<category><![CDATA[bitrix]]></category>
		<category><![CDATA[программирование]]></category>
		<category><![CDATA[рабочее]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[JSON]]></category>
		<category><![CDATA[портфолио]]></category>
		<category><![CDATA[работа]]></category>

		<guid isPermaLink="false">http://murzix.ru/?p=2971</guid>
		<description><![CDATA[Как только появляется большое количество данных, сразу возникает необходимость их упорядочить и проанализировать. Для этих целей можно использовать разные представления информации, но мне больше всего нравятся графики, т.к. по ним проще всего понять динамику возникновения события и спрогнозировать дальнейшее его поведение. Постановка задачи Необходимо построить график на основе исходных данных. Для удобства анализа информации нужно [...]]]></description>
			<content:encoded><![CDATA[<p>Как только появляется большое количество данных, сразу возникает необходимость их упорядочить и проанализировать. Для этих целей можно использовать разные представления информации, но мне больше всего нравятся графики, т.к. по ним проще всего понять динамику возникновения события и спрогнозировать дальнейшее его поведение.</p>
<h3>Постановка задачи</h3>
<p>Необходимо построить график на основе исходных данных. Для удобства анализа информации нужно продумать возможность совмещения графиков по различным показателям и просмотр значений в определённых точках.</p>
<p>В итоге хотелось бы получить нечто, напоминающее графики в сервисе <strong>Google Analytics</strong> (они мне очень нравятся)</p>
<p><span id="more-2971"></span></p>
<h3>Поиск решения</h3>
<p>Компоненты, к которым планируется прикрутить статистику, написаны с использованием API <strong>Bitrix</strong>’а и работают на сайтах под управлением битрикса. Логично было предположить, что столь популярная задача уже была продумана разработчиками и имеет свой API.</p>
<p>К тому же, на эту мысль подталкивает наличие в битриксе модуля аналитики, который умеет чертить графики различного типа.</p>
<div id="attachment_2974" class="wp-caption alignnone" style="width: 710px"><a href="http://murzix.ru/wp-content/uploads/2011/07/bitirix-analytics.png"><img src="http://murzix.ru/wp-content/uploads/2011/07/bitirix-analytics.png" alt="Веб аналитика Битрикс: график посещаемости сайта по часам." title="Веб аналитика Битрикс: график посещаемости сайта по часам." width="700" height="550" class="size-full wp-image-2974" /></a><p class="wp-caption-text">Веб аналитика Битрикс: график посещаемости сайта по часам.</p></div>
<p>Но, к сожалению, битрикс умеет строить графики только в панели управления. Да и они не отличаются интерактивностью, т.к. пользователь видит готовую картинку и не может что-либо на ней выделить. К тому же, если пользователь захочет подкорректировать входные данные, то картинку придётся генерировать заново. Это не самый быстрый подход.</p>
<p>Т.к. средствами битрикса задачу не решить, следует найти какой-либо плагин, который предоставляет требуемый функционал. Чтобы графики были достаточно интерактивными плагин должен быть написан на <strong>JavaScript</strong>. При этом желательно чтобы он работал с использованием <strong>jQuery</strong>, т.к. этот фреймворк уже используется на сайте и радует своей простотой и логичностью.</p>
<p>После анализа всех решений остаётся только два варианта – использовать API графиков от <strong>Google</strong> (<noindex><a rel="nofollow" href="http://code.google.com/intl/ru-RU/apis/chart/">ссылка</a></noindex>) и разобраться в <strong>jQuery</strong> плагине <strong>Flot</strong> (<noindex><a rel="nofollow" href="http://code.google.com/p/flot/">ссылка</a></noindex>).</p>
<p>Если сравнить код для вывода гугловых графиков и код вывода графиков <strong>Flot</strong>, то выбор падёт в сторону Flot, т.к. его код прост и понятен.</p>
<h3>Выбор конфигурации графика</h3>
<p>Для начала нужно ознакомиться с тем что умеет делать выбраный плагин на основе простых <noindex><a rel="nofollow" href="http://people.iola.dk/olau/flot/examples/">примеров</a></noindex>. Для моих целей подходят следующие возможности:</p>
<ul>
<li>Выделение точек на графике и просмотр значений в этих точках(<noindex><a rel="nofollow" href="http://people.iola.dk/olau/flot/examples/interacting.html">посмотреть</a></noindex>)</li>
<li>Выделение отрезков графика для детального простотра (<noindex><a rel="nofollow" href="http://people.iola.dk/olau/flot/examples/visitors.html">посмотреть</a></noindex>)</li>
<li>Обновление графиков с использованием <strong>Ajax</strong> (<noindex><a rel="nofollow" href="http://people.iola.dk/olau/flot/examples/ajax.html">посмотреть</a></noindex>)</li>
</ul>
<h3>Способ ввода начальных данных</h3>
<p>В данном компоненте я не вижу смысла мудрить с хитрыми и не стандартными элементами управления. Для определения того, что будет отображаться на графике подойдёт обычная форма с парой полей для ввода временного промежутка и чекбоксами для определённых значений.</p>
<div id="attachment_2976" class="wp-caption alignnone" style="width: 710px"><a href="http://murzix.ru/wp-content/uploads/2011/07/reception-stat.png"><img src="http://murzix.ru/wp-content/uploads/2011/07/reception-stat.png" alt="Форма выбора значений для вывода на графике" title="Форма выбора значений для вывода на графике" width="700" height="330" class="size-full wp-image-2976" /></a><p class="wp-caption-text">Форма выбора значений для вывода на графике</p></div>
<p>При нажатии на кнопку «Искать» данные с формы передаются через <strong>Ajax</strong> к скрипту, который возвращает нам данные в виде <strong>JSON</strong>, в формате, необходимом плагину. После получения данных плагин отрисовывает график.</p>
<p>Если пользователь изменит данные, график отрисуется заново, но страница не перезагрузится. На все эти действия уходит не больше секунды, поэтому интерфейс получается очень отзывчивым.</p>
<h3>Вывод информации на графике</h3>
<p>Плагин выведет столько кривых, сколько мы ему передадим в объекте с данными. Можно вывести  только одну кривую. Вот пример статистики в моём <a href="http://murzix.ru/2011/06/bitrix-reception/">компоненте записи на reception</a>:</p>
<div id="attachment_2977" class="wp-caption alignnone" style="width: 661px"><a href="http://murzix.ru/wp-content/uploads/2011/07/reception-stat-graph.png"><img src="http://murzix.ru/wp-content/uploads/2011/07/reception-stat-graph-651x600.png" alt="График заведения записей в компонете записи на Reception" title="График заведения записей в компонете записи на Reception" width="651" height="600" class="size-medium wp-image-2977" /></a><p class="wp-caption-text">График заведения записей в компонете записей на Reception</p></div>
<p>Можно вывести несколько кривых.</p>
<div id="attachment_2979" class="wp-caption alignnone" style="width: 648px"><a href="http://murzix.ru/wp-content/uploads/2011/07/reception-stat-graph-2.png"><img src="http://murzix.ru/wp-content/uploads/2011/07/reception-stat-graph-2-638x600.png" alt="График заведения и выполнения записей в компонете записи на Reception" title="График заведения и выполнения записей в компонете записи на Reception" width="638" height="600" class="size-medium wp-image-2979" /></a><p class="wp-caption-text">График заведения и выполнения записей в компонете записи на Reception</p></div>
<p>На осях координат можно выводить что угодно. Например, вот этот же плагин для графиков в моём компоненте заявок с веб форм выводит по оси абсцисс среднее время обработки заявки, а по оси ординат дату.</p>
<div id="attachment_2981" class="wp-caption alignnone" style="width: 639px"><a href="http://murzix.ru/wp-content/uploads/2011/07/requests-stat-graph.png"><img src="http://murzix.ru/wp-content/uploads/2011/07/requests-stat-graph-629x600.png" alt="Среднее время обработки заявки с веб формы" title="Среднее время обработки заявки с веб формы" width="629" height="600" class="size-medium wp-image-2981" /></a><p class="wp-caption-text">Среднее время обработки заявки с веб формы</p></div>
<h3>Использование плагина в Internet Explorer</h3>
<p>Для отрисовки графиков <strong>Flot</strong> использует <strong>Canvas</strong>. Этот факт заставляет прибегать к ухищрениям, т.к. IE версии ниже 9ой не может их отобразить. Для решения этой проблемы в условном комментарии следует подключить библиотеку <strong>ExplorerCanvas</strong> (<noindex><a rel="nofollow" href="http://excanvas.sourceforge.net/">скачать</a></noindex>), тогда всё будет хорошо <img src="http://murzix.ru/wp-content/plugins/qipsmiles/smiles/smile.gif"  alt="=)" title="=)"/> </p>
<h3>Как использовать плагин?</h3>
<p>Выкладывать полный код компонента я не вижу смысла, слишком уж большой объём не нужной информации. Здесь я приведу только пример настроек графика, которые я использовал.</p>
<blockquote><p><code><font size="2" face="Courier New" color="black"><font color="#008000">//формат даты</font><br />
<font color="#0000ff">var</font> timeFormat = <font color="#A31515">"%d.%m.%y"</font>;</p>
<p><font color="#008000">// свойства графика</font><br />
<font color="#0000ff">var</font> plot_conf = {<br />
&nbsp;&nbsp;series: {<br />
&nbsp;&nbsp;&nbsp;&nbsp;lines: {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;show: <font color="#0000ff">true</font>,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lineWidth: 2<br />
&nbsp;&nbsp;&nbsp;&nbsp;},<br />
&nbsp;&nbsp;&nbsp;&nbsp;points: {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;show: <font color="#0000ff">true</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;},<br />
&nbsp;&nbsp;selection: {mode: <font color="#A31515">"x"</font>},<br />
&nbsp;&nbsp;xaxis: {<br />
&nbsp;&nbsp;&nbsp;&nbsp;mode: <font color="#A31515">"time"</font>,<br />
&nbsp;&nbsp;&nbsp;&nbsp;timeformat: timeFormat<br />
&nbsp;&nbsp;},<br />
&nbsp;&nbsp;legend:{<br />
&nbsp;&nbsp;&nbsp;&nbsp;show: <font color="#0000ff">true</font>,<br />
&nbsp;&nbsp;&nbsp;&nbsp;noColumns: 6,<br />
&nbsp;&nbsp;&nbsp;&nbsp;container: $(<font color="#A31515">"#legend"</font>)<br />
&nbsp;&nbsp;},<br />
&nbsp;&nbsp;grid: {<br />
&nbsp;&nbsp;&nbsp;&nbsp;backgroundColor:{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;colors: [<font color="#A31515">"#fff"</font>, <font color="#A31515">"#eee"</font>]<br />
&nbsp;&nbsp;&nbsp;&nbsp;},<br />
&nbsp;&nbsp;&nbsp;&nbsp;hoverable: <font color="#0000ff">true</font>,<br />
&nbsp;&nbsp;&nbsp;&nbsp;clickable: <font color="#0000ff">true</font><br />
&nbsp;&nbsp;}<br />
};</p>
<p><font color="#008000">//свойства навигации</font><br />
<font color="#0000ff">var</font> over_conf = {<br />
&nbsp;&nbsp;series: {<br />
&nbsp;&nbsp;&nbsp;&nbsp;lines: {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;show: <font color="#0000ff">true</font>,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lineWidth: 1<br />
&nbsp;&nbsp;&nbsp;&nbsp;},<br />
&nbsp;&nbsp;&nbsp;&nbsp;shadowSize: 0<br />
&nbsp;&nbsp;},<br />
&nbsp;&nbsp;xaxis: {<br />
&nbsp;&nbsp;&nbsp;&nbsp;ticks: [],<br />
&nbsp;&nbsp;&nbsp;&nbsp;mode: <font color="#A31515">"time"</font>,<br />
&nbsp;&nbsp;&nbsp;&nbsp;timeformat: timeFormat<br />
&nbsp;&nbsp;},<br />
&nbsp;&nbsp;yaxis: {<br />
&nbsp;&nbsp;&nbsp;&nbsp;ticks: [],<br />
&nbsp;&nbsp;&nbsp;&nbsp;min: 0,<br />
&nbsp;&nbsp;&nbsp;&nbsp;autoscaleMargin: 0.1<br />
&nbsp;&nbsp;},<br />
&nbsp;&nbsp;selection: {<br />
&nbsp;&nbsp;&nbsp;&nbsp;mode: <font color="#A31515">"x"</font><br />
&nbsp;&nbsp;},<br />
&nbsp;&nbsp;legend:{<br />
&nbsp;&nbsp;&nbsp;&nbsp;show: <font color="#0000ff">false</font><br />
&nbsp;&nbsp;},<br />
&nbsp;&nbsp;grid: {<br />
&nbsp;&nbsp;&nbsp;&nbsp;backgroundColor:{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;colors: [<font color="#A31515">"#fff"</font>, <font color="#A31515">"#eee"</font>]<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;}<br />
}</font></p>
<p></code></p></blockquote>
<p>С тем как вывести график легко разобраться посмотрев в код примеров (<noindex><a rel="nofollow" href="http://people.iola.dk/olau/flot/examples/">посмотреть</a></noindex>).  Если что-либо непонятно, то всё описано в довольно подробном API (<noindex><a rel="nofollow" href="http://people.iola.dk/olau/flot/API.txt">читать</a></noindex>)</p>
<p>К сожалению компоненты, показанные на картинках, доступны только  для пользователей нашей организации, поэтому ссылку на них я дать не могу. Но если у кого-то есть вопросы по работе плагина, я постараюсь ответить</p>
]]></content:encoded>
			<wfw:commentRss>http://murzix.ru/2011/07/flot-jquery-graph/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		<feedburner:origLink>http://murzix.ru/2011/07/flot-jquery-graph/</feedburner:origLink></item>
		<item>
		<title>Аквабус – как мы не покатались на водном такси</title>
		<link>http://feedproxy.google.com/~r/murzix/~3/0qC859BcI3c/</link>
		<comments>http://murzix.ru/2011/07/akvabus-spb/#comments</comments>
		<pubDate>Wed, 06 Jul 2011 19:31:22 +0000</pubDate>
		<dc:creator>Морозов Максим</dc:creator>
				<category><![CDATA[Питер]]></category>
		<category><![CDATA[видео]]></category>
		<category><![CDATA[прогулки]]></category>
		<category><![CDATA[транспорт]]></category>

		<guid isPermaLink="false">http://murzix.ru/?p=2957</guid>
		<description><![CDATA[В Питере каждый год объявляют о том, что по рекам и каналам можно передвигаться на водном такси. В прошлые года мне никак не удавалось обнаружить это самое такси. То ли оно ходило раз в час, то ли его запустили всего один раз «для галочки» Но в этом году всё не так. Как-то раз, на обратном [...]]]></description>
			<content:encoded><![CDATA[<p>В Питере каждый год объявляют о том, что по рекам и каналам можно передвигаться на водном такси. В прошлые года мне никак не удавалось обнаружить это самое такси. То ли оно ходило раз в час, то ли его запустили всего один раз «для галочки» Но в этом году всё не так.</p>
<p>Как-то раз, на обратном пути с работы мы обнаружили интересный причал с желтым тентом на набережной Робеспьера. При более детальном осмотре оказалось, что это остановка тех самых водных трамвайчиков, которые теперь называются аквабусами. Из стендов мы поняли, что трамвайчики ходят только по Неве но при этом по нескольким маршрутам.</p>
<p><span id="more-2957"></span></p>
<p>Маршруты легко рассмотреть на карте, вывешенной на информационном стенде, или на <noindex><a rel="nofollow" href="http://www.transport.spb.ru/docs/2283">сайте</a></noindex></p>
<div id="attachment_2958" class="wp-caption alignnone" style="width: 710px"><a href="http://murzix.ru/wp-content/uploads/2011/07/scheme.jpg"><img src="http://murzix.ru/wp-content/uploads/2011/07/scheme-700x446.jpg" alt="Схема маршрутов аквабуса" title="Схема маршрутов аквабуса" width="700" height="446" class="size-medium wp-image-2958" /></a><p class="wp-caption-text">Схема маршрутов аквабуса</p></div>
<p>По сути, есть только три доступных маршрута, т.к. в Кронштадт маршрут ходит очень редко. Мы оказались на третьей остановке синего маршрута, который идёт от места, где хотели построить газоскрёб Охта-Центр, до университетской набережной.</p>
<p>Стоимость поездки варьируется в зависимости от маршрута. На том месте, где мы оказались, останавливался трамвайчик стоимостью 50 рублей.</p>
<p>Мы принципиально решили прокатиться на этом чуде техники. Через 20 волнительных минут к нам приплыло вот это:</p>
<p><iframe width="700" height="555" src="http://www.youtube.com/embed/CmYWEFY0koA" frameborder="0" allowfullscreen></iframe></p>
<p>Подъехавшее судёнышко оказалось полностью забитым людьми (кто-то внутри даже стоял) Выходить никто не собирался, поэтому нам пришлось ждать следующего катера.</p>
<p>На стенде было заявлено, что интервал движения катеров составляет  10-15 минут. Но на самом деле катера не было больше 20 минут. Некоторые люди уходили так и не дождавшись своего шанса прокатиться.</p>
<p>Второй катер, к сожалению, оказался таким же переполненным, как и первый. Дальше ждать не было смысла, хотелось уже попасть наконец-то домой после тяжелого рабочего дня <img src="http://murzix.ru/wp-content/plugins/qipsmiles/smiles/smile.gif"  alt="=)" title="=)"/> В ближайшую субботу мы решили еще раз попытать счастья, но уже на начальной точке маршрута – Финляндском вокзале.</p>
<p>И каково же было наше удивление, когда уже с раннего утра на причале уже стояла толпа людей. Некоторые из них отсидели в очереди уже по два часа. И всё ради того, чтобы прокатиться в маленьком тесненьком катерочке.</p>
<div id="attachment_2961" class="wp-caption alignnone" style="width: 710px"><a href="http://murzix.ru/wp-content/uploads/2011/07/DSC_6734.jpg"><img src="http://murzix.ru/wp-content/uploads/2011/07/DSC_6734-700x468.jpg" alt="Очередь на аквабус у финляндского вокзала" title="Очередь на аквабус у финляндского вокзала" width="700" height="468" class="size-medium wp-image-2961" /></a><p class="wp-caption-text">Очередь на аквабус у финляндского вокзала</p></div>
<p>Чтобы хоть как-то восполнить потребность водных путешествий, мы пошли на невский и сели в катер с часовой экскурсией по рекам и каналам Санкт-Петербурга. Пусть это и в десять раз дороже, зато в тысячу раз удобнее и приятнее.</p>
<p><iframe width="700" height="555" src="http://www.youtube.com/embed/j7_SXkNNmwo" frameborder="0" allowfullscreen></iframe></p>
<p>В итоге вся затея с водными трамвайчиками мне кажется глупой. Катера выбрали маленькие и медленные. К тому же график движения они не соблюдают.</p>
<p>Ни о какой альтернативе городскому транспорту, про которую вещали СМИ и речи быть не может. Это еще хоть немного актуально для южных  конечных остановок, на которых не так много людей, но всё, что ближе к центру, уже забито битком.</p>
<p>Были бы катера больше и ходили бы чаще, тогда можно было бы сравнивать.</p>
]]></content:encoded>
			<wfw:commentRss>http://murzix.ru/2011/07/akvabus-spb/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://murzix.ru/2011/07/akvabus-spb/</feedburner:origLink></item>
		<item>
		<title>Битрикс: мой компонент для предварительной записи на reception</title>
		<link>http://feedproxy.google.com/~r/murzix/~3/aJQd_W-T8TE/</link>
		<comments>http://murzix.ru/2011/06/bitrix-reception/#comments</comments>
		<pubDate>Wed, 01 Jun 2011 13:50:40 +0000</pubDate>
		<dc:creator>Морозов Максим</dc:creator>
				<category><![CDATA[bitrix]]></category>
		<category><![CDATA[программирование]]></category>
		<category><![CDATA[рабочее]]></category>
		<category><![CDATA[портфолио]]></category>
		<category><![CDATA[проекты]]></category>
		<category><![CDATA[работа]]></category>
		<category><![CDATA[решение проблем]]></category>

		<guid isPermaLink="false">http://murzix.ru/?p=2926</guid>
		<description><![CDATA[Во многих организациях есть такая практика, как предварительная запись перед приходом на reception (или к стойке администрации, если говорить по-русски). Это очень полезная штука, т.к. она позволяет избавиться от очередей и толкучки. При сравнительно небольшом количестве записей для управления этим процессом достаточно экселевского файлика в сетевой папке. Многие фирмы так работают и не жалуются. Но [...]]]></description>
			<content:encoded><![CDATA[<p>Во многих организациях есть такая практика, как предварительная запись перед приходом на reception (или к стойке администрации, если говорить по-русски).  Это очень полезная штука, т.к.  она позволяет избавиться от очередей и толкучки.</p>
<p>При сравнительно небольшом количестве записей для управления этим процессом достаточно экселевского файлика в сетевой папке. Многие фирмы так работают и не жалуются. Но с ростом количества клиентов всплывает большое количество проблем:</p>
<ul>
<li>файл может быть случайно удалён в любое время</li>
<li>невозможно отследить правки в файле, т.к. нет авторизации</li>
<li>нет никакой возможности жестко ограничивать количество записей</li>
<li>оформление записей далеко от идеального</li>
</ul>
<p>Я решил эти проблемы написанием компонента для битрикса с использованием инфоблоков. Они позволяют хранить фактически любые данные, а система учетных записей позволяет легко разграничить права доступа. Вот что у меня получилось (рассказывать буду от большего к меньшему)</p>
<p><span id="more-2926"></span></p>
<h3>Просмотр записей за месяц</h3>
<p>При просмотре месяца важно знать только количество свободных мест по дням и общее количество записей (во многом для статистики)</p>
<p>Записи можно создать на непрошедший день, для которого заданы ограничения по времени. Если день не был создан, то он не имеет фона. Созданные дни могу быть нескольких цветов:</p>
<ul>
<li>зелёный день свободен для записи</li>
<li>оранжевый день уже заполнен на 80%</li>
<li>красный день уже полностью заполнен</li>
<li>серый день уже прошел</li>
</ul>
<div id="attachment_2933" class="wp-caption alignnone" style="width: 688px"><a href="http://murzix.ru/wp-content/uploads/2011/06/reception-month.png"><img src="http://murzix.ru/wp-content/uploads/2011/06/reception-month-678x600.png" alt="Просмотр месяца" title="Просмотр месяца" width="678" height="600" class="size-medium wp-image-2933" /></a><p class="wp-caption-text">Просмотр месяца</p></div>
<h3>Создание или изменение ограничений на день</h3>
<p>Чтобы открыть запись на день его нужно создать. Делать это могут только администраторы данного компонента (чтобы избежать хаоса).</p>
<p>Для удобства пользователей были добавлены кнопки «+» и «-», позволяющие изменять ограничения для временных промежутков. Это очень удобно, т.к. чаще всего промежутки изменяются незначительно. Для очень ленивых были добавлены кнопки для массового уменьшения и увеличения ненулевых значений.</p>
<p>Также можно скопировать ограничения с уже созданного дня. Это полезно при копировании дней. Например, пятница у нас сокращённый день <img src="http://murzix.ru/wp-content/plugins/qipsmiles/smiles/smile.gif"  alt="=)" title="=)"/> </p>
<p>При уменьшении значений проверяется наличие записей на это время. Записать значение меньше чем уже записано фирм не получится.</p>
<p>Создание и изменение происходит через одну форму. Если день уже создан, то он изменяется, если не создан, то создаётся. </p>
<div id="attachment_2936" class="wp-caption alignnone" style="width: 710px"><a href="http://murzix.ru/wp-content/uploads/2011/06/reception-day-edit.png"><img src="http://murzix.ru/wp-content/uploads/2011/06/reception-day-edit-700x279.png" alt="Форма создания и изменения дня" title="Форма создания и изменения дня" width="700" height="279" class="size-medium wp-image-2936" /></a><p class="wp-caption-text">Форма создания и изменения дня</p></div>
<h3>Заполнение месяца</h3>
<p>Заполнять весь месяц руками – долго и скучно. Гораздо проще сразу создать ограничения на все рабочие дни месяца одной кнопкой, а потом уже их править. Ведь, как правило, значения для дней не сильно отличаются.</p>
<p>Если в месяце есть рабочие дни, выпадающие на выходные и наоборот, то их можно указать в соответствующем поле.</p>
<div id="attachment_2937" class="wp-caption alignnone" style="width: 710px"><a href="http://murzix.ru/wp-content/uploads/2011/06/reception-month-add.png"><img src="http://murzix.ru/wp-content/uploads/2011/06/reception-month-add-700x495.png" alt="Форма заполнения месяца" title="Форма заполнения месяца" width="700" height="495" class="size-medium wp-image-2937" /></a><p class="wp-caption-text">Форма заполнения месяца</p></div>
<h3>Просмотр записей за день</h3>
<p>При просмотре дня временные ограничения могут иметь два фона – зелёный для свободных промежутков и серый для закрытых.</p>
<div id="attachment_2938" class="wp-caption alignnone" style="width: 667px"><a href="http://murzix.ru/wp-content/uploads/2011/06/reception-day-free.png"><img src="http://murzix.ru/wp-content/uploads/2011/06/reception-day-free-657x600.png" alt="Просмотр дня - свободные промежутки" title="Просмотр дня - свободные промежутки" width="657" height="600" class="size-medium wp-image-2938" /></a><p class="wp-caption-text">Просмотр дня - свободные промежутки</p></div>
<p>Записи тоже различаются по цвету:</p>
<ul>
<li>белым цветом помечены обычные необработанные записи</li>
<li>серые записи были обработаны успешно</li>
<li>красные записи были отменены или организации имели ошибки в документах</li>
<li>от синего до фиолетового – несколько фирм от одного человека</li>
</ul>
<p>Клик по названию организации открывает просмотр записи. Карандашик нужен для перехода к редактированию.</p>
<div id="attachment_2940" class="wp-caption alignnone" style="width: 665px"><a href="http://murzix.ru/wp-content/uploads/2011/06/reception-day.png"><img src="http://murzix.ru/wp-content/uploads/2011/06/reception-day-655x600.png" alt="Просмотр записей за день" title="Просмотр записей за день" width="655" height="600" class="size-medium wp-image-2940" /></a><p class="wp-caption-text">Просмотр записей за день</p></div>
<h3>Создание записи</h3>
<p>Создать запись может любой пользователь системы.</p>
<p>Пока оператор заполняет данные, в верхней части страницы раз в 20 секунд обновляется информация о свободных промежутках. Это позволяет в онлайн режиме следить за наличием свободных мест на день «не отходя от кассы».</p>
<p>Также можно создать несколько записей за раз. А если еще и ввести контактный телефон, то при просмотре дня все эти записи будут помечаться одним цветом. Это нужно для тех бухгалтеров, кто работает с несколькими фирмами и приходит с общим пакетом документов. У нас есть регламент: одно место – одна фирма.</p>
<p>Если хоть одна запись не может быть создана, то выведется предупреждение. При этом страница не будет перезагружена и данные никуда не денутся. Можно будет изменить время или день и сохранить заново.</p>
<div id="attachment_2941" class="wp-caption alignnone" style="width: 691px"><a href="http://murzix.ru/wp-content/uploads/2011/06/reception-record-add.png"><img src="http://murzix.ru/wp-content/uploads/2011/06/reception-record-add-681x600.png" alt="Создание записей" title="Создание записей" width="681" height="600" class="size-medium wp-image-2941" /></a><p class="wp-caption-text">Создание записей</p></div>
<h3>Изменение записи</h3>
<p>Пользователи могут изменять время и день для подключения, менять статусы и оставлять комментарии. </p>
<p>Администраторы могут менять любые поля в записи. </p>
<div id="attachment_2942" class="wp-caption alignnone" style="width: 672px"><a href="http://murzix.ru/wp-content/uploads/2011/06/reception-record-edit.png"><img src="http://murzix.ru/wp-content/uploads/2011/06/reception-record-edit-662x600.png" alt="Изменение записи" title="Изменение записи" width="662" height="600" class="size-medium wp-image-2942" /></a><p class="wp-caption-text">Изменение записи</p></div>
<h3>Просмотр записи</h3>
<p>Просмотр очень прост. Тут сложно придумать что-то экстраординарное.</p>
<div id="attachment_2943" class="wp-caption alignnone" style="width: 710px"><a href="http://murzix.ru/wp-content/uploads/2011/06/reception-record.png"><img src="http://murzix.ru/wp-content/uploads/2011/06/reception-record-700x259.png" alt="Просмотр записи" title="Просмотр записи" width="700" height="259" class="size-medium wp-image-2943" /></a><p class="wp-caption-text">Просмотр записи</p></div>
<h3>Поиск и сортировка записей</h3>
<p>Если понадобится найти какую-либо запись, то можно воспользоваться поиском по любому значению. </p>
<div id="attachment_2944" class="wp-caption alignnone" style="width: 710px"><a href="http://murzix.ru/wp-content/uploads/2011/06/reception-find.png"><img src="http://murzix.ru/wp-content/uploads/2011/06/reception-find-700x578.png" alt="Поиск по записям" title="Поиск по записям" width="700" height="578" class="size-medium wp-image-2944" /></a><p class="wp-caption-text">Поиск по записям</p></div>
<h3>Заключение</h3>
<p>Таким образом, проблема с записями на reception была решена, а компонент получился симпатичный и полезный.</p>
<p>P.S. цветность уменьшенных скриншотов не совпадает с реальной <img src="http://murzix.ru/wp-content/plugins/qipsmiles/smiles/smile.gif"  alt="=)" title="=)"/> </p>
]]></content:encoded>
			<wfw:commentRss>http://murzix.ru/2011/06/bitrix-reception/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		<feedburner:origLink>http://murzix.ru/2011/06/bitrix-reception/</feedburner:origLink></item>
		<item>
		<title>Недопустимое значение свойства в IE6: именованные цвета</title>
		<link>http://feedproxy.google.com/~r/murzix/~3/yHJQu45FSPw/</link>
		<comments>http://murzix.ru/2011/04/ie6-named-colors/#comments</comments>
		<pubDate>Thu, 28 Apr 2011 12:46:11 +0000</pubDate>
		<dc:creator>Морозов Максим</dc:creator>
				<category><![CDATA[Браузеры]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[ie6]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[программирование]]></category>

		<guid isPermaLink="false">http://murzix.ru/?p=2906</guid>
		<description><![CDATA[Недавно мне пришлось столкнуться с одной проблемой: Internet Explorer 6 выдавал ошибку JavaScript в той строке, в которой никакого JavaScript не было. При этом ругался он на &#171;недопустимое значение свойства&#187;. В остальных браузерах всё работало нормально. После нескольких ритуальных плясок с бубном выяснилось, что ошибка крылась в методе, который затенял неактивные поля формы. Сам скрипт [...]]]></description>
			<content:encoded><![CDATA[<p>Недавно мне пришлось столкнуться с одной проблемой: Internet Explorer 6 выдавал ошибку JavaScript в той строке, в которой никакого JavaScript не было. При этом ругался он на &laquo;недопустимое значение свойства&raquo;. В остальных браузерах всё работало нормально.</p>
<p><span id="more-2906"></span><br />
<div id="attachment_2915" class="wp-caption alignnone" style="width: 490px"><a href="http://murzix.ru/wp-content/uploads/2011/04/ie6-error.png"><img src="http://murzix.ru/wp-content/uploads/2011/04/ie6-error.png" alt="Ошибка ссылается на строку, в которой JS нет" title="Ошибка ссылается на строку, в которой JS нет" width="480" height="290" class="size-full wp-image-2915" /></a><p class="wp-caption-text">Ошибка ссылается на строку, в которой JS нет</p></div></p>
<p>После нескольких ритуальных плясок с бубном выяснилось, что ошибка крылась в методе, который затенял неактивные поля формы. Сам скрипт был правильным, никаких синтаксических или логических ошибок в нём не было. Проблема крылась в тех значениях, которые должны были быть применены к границе неактивного поля формы.</p>
<p>Я пытался поменять цвет границы на lightgray, IE6 меня в этом начинании не поддержал и выдал ошибку.</p>
<p>Какая муха меня укусила, что я решил применить такое значение? Когда под рукой нет никакого графического редактора, удобно применять цвета из стандартного набора именованных цветов (всё равно дизайн потом переделывать, на первых порах главное  &#8211; логика) В определённый момент стандартных 16 цветов мне стало мало, и я начал использовать приставку light перед именем цвета, чтобы получать более светлые оттенки.</p>
<p>Причины возникновения ошибки в IE6 понятны. Браузер старенький, новые стандарты не понимает. В стандарте <noindex><a rel="nofollow" href="http://www.w3.org/TR/CSS21/syndata.html#color-units">CSS 2.1</a></noindex> описано только 17 цветов  (16 цветов из HTML 4.01 и оранжевый). 140 именованных цветов появилось только в стандарте CSS 3. Internet Explorer 6 поддерживает только первую версию CSS, поэтому JavaSсript и ругается нехорошими словами.</p>
<p>Нельзя сказать, что отсутствие дополнительных цветов является глобальной проблемой. Автоматически заменить именованные цвета их RGB эквивалентами несложно. Просто всегда нужно помнить, что есть IE6, и не расслабляться, выкладывая финальные версии скриптов.</p>
<p>Будте бдительны <img src="http://murzix.ru/wp-content/plugins/qipsmiles/smiles/smile.gif"  alt="=)" title="=)"/> </p>
]]></content:encoded>
			<wfw:commentRss>http://murzix.ru/2011/04/ie6-named-colors/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://murzix.ru/2011/04/ie6-named-colors/</feedburner:origLink></item>
	</channel>
</rss>

