<?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>Блог Данилова Анатолия</title>
	<atom:link href="http://danilovonline.ru/feed/" rel="self" type="application/rss+xml" />
	<link>http://danilovonline.ru</link>
	<description></description>
	<lastBuildDate>Thu, 05 Oct 2017 13:42:33 +0000</lastBuildDate>
	<language>ru-RU</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.8.17</generator>
	<item>
		<title>Кнопочный тумблер на jQuery и Bootstrap</title>
		<link>http://danilovonline.ru/%d0%ba%d0%bd%d0%be%d0%bf%d0%be%d1%87%d0%bd%d1%8b%d0%b9-%d1%82%d1%83%d0%bc%d0%b1%d0%bb%d0%b5%d1%80-%d0%bd%d0%b0-jquery-%d0%b8-bootstrap/</link>
		<comments>http://danilovonline.ru/%d0%ba%d0%bd%d0%be%d0%bf%d0%be%d1%87%d0%bd%d1%8b%d0%b9-%d1%82%d1%83%d0%bc%d0%b1%d0%bb%d0%b5%d1%80-%d0%bd%d0%b0-jquery-%d0%b8-bootstrap/#respond</comments>
		<pubDate>Thu, 05 Oct 2017 13:42:00 +0000</pubDate>
		<dc:creator><![CDATA[DanilovOnline]]></dc:creator>
				<category><![CDATA[Программирование]]></category>
		<category><![CDATA[bootstrap]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[ux]]></category>

		<guid isPermaLink="false">http://danilovonline.ru/?p=1831</guid>
		<description><![CDATA[Кнопочный тумблер с использованием jQuery и Bootsrap вместо стандартного чекбокса Live demo Дальше исходный код JS Bin Man Woman $('.btn-group-checkbox').each(function() { var active_class=$(this).attr('data-active-class'); var target=$('#' + $(this).attr('data-target')); var _this = this; $(_this).find('button').removeClass('active').removeClass(active_class); var v = target.attr('checked')? 1: 0; $(_this).find('button').each(function () { if($(this).attr('data-checked')==v) { $(this).addClass('active').addClass(active_class); } }) $(this).find('button').on("click", function() { $(_this).find('button').removeClass('active').removeClass(active_class); $(this).addClass('active').addClass(active_class); target.attr('checked', ($(this).attr('data-checked')==1)); eval(target.attr('onclick')); }) [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Кнопочный тумблер с использованием jQuery и Bootsrap вместо стандартного чекбокса</p>
<p><img src="http://danilovonline.ru/wp-content/2017-10-05_17-40-20.gif" alt="" width="126" height="62" class="alignleft size-full wp-image-1834" /><br />
<br />
<a href="https://jsfiddle.net/9jqLdtLt/">Live demo</a></p>
<p>Дальше исходный код<br />
<span id="more-1831"></span></p>
<p><code lang="html"><br />
<!DOCTYPE html><br />
<html><br />
<head><br />
  <meta charset="utf-8"><br />
  <meta name="viewport" content="width=device-width"><br />
  <title>JS Bin</title><br />
</head><br />
<body><br />
<script src="https://code.jquery.com/jquery.min.js"></script>
<link href="https://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/css/bootstrap-combined.min.css" rel="stylesheet" type="text/css" />
<script src="https://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/js/bootstrap.min.js"></script><br />
<script src="https://code.jquery.com/jquery-2.2.4.js"></script></p>
<div class="btn-group btn-group-checkbox" data-active-class="btn-info" data-target="sex">
    <button type="button" class="btn btn-small" data-checked="0">Man</button><br />
    <button type="button" class="btn btn-small" data-checked="1">Woman</button>
  </div>
<p>  <input style="display: none"  type="checkbox" value="1" id="sex"></p>
<p></body><br />
</html><br />
</code></p>
<p><code lang="js"><br />
    $('.btn-group-checkbox').each(function() {<br />
        var active_class=$(this).attr('data-active-class');<br />
        var target=$('#' + $(this).attr('data-target'));<br />
        var _this = this;<br />
        $(_this).find('button').removeClass('active').removeClass(active_class);<br />
        var v = target.attr('checked')? 1: 0;<br />
        $(_this).find('button').each(function () {<br />
            if($(this).attr('data-checked')==v) {<br />
                $(this).addClass('active').addClass(active_class);<br />
            }<br />
        })</p>
<p>        $(this).find('button').on("click", function() {<br />
            $(_this).find('button').removeClass('active').removeClass(active_class);<br />
            $(this).addClass('active').addClass(active_class);<br />
            target.attr('checked', ($(this).attr('data-checked')==1));<br />
            eval(target.attr('onclick'));<br />
        })</p>
<p>    })</p>
<p></code></p>
]]></content:encoded>
			<wfw:commentRss>http://danilovonline.ru/%d0%ba%d0%bd%d0%be%d0%bf%d0%be%d1%87%d0%bd%d1%8b%d0%b9-%d1%82%d1%83%d0%bc%d0%b1%d0%bb%d0%b5%d1%80-%d0%bd%d0%b0-jquery-%d0%b8-bootstrap/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>&#171;Прокидывание&#187; параметра через все ссылки</title>
		<link>http://danilovonline.ru/%d0%bf%d1%80%d0%be%d0%ba%d0%b8%d0%b4%d1%8b%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5-%d0%bf%d0%b0%d1%80%d0%b0%d0%bc%d0%b5%d1%82%d1%80%d0%b0-%d1%87%d0%b5%d1%80%d0%b5%d0%b7-%d0%b2%d1%81%d0%b5-%d1%81%d1%81%d1%8b/</link>
		<comments>http://danilovonline.ru/%d0%bf%d1%80%d0%be%d0%ba%d0%b8%d0%b4%d1%8b%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5-%d0%bf%d0%b0%d1%80%d0%b0%d0%bc%d0%b5%d1%82%d1%80%d0%b0-%d1%87%d0%b5%d1%80%d0%b5%d0%b7-%d0%b2%d1%81%d0%b5-%d1%81%d1%81%d1%8b/#respond</comments>
		<pubDate>Thu, 07 Sep 2017 05:00:56 +0000</pubDate>
		<dc:creator><![CDATA[DanilovOnline]]></dc:creator>
				<category><![CDATA[Программирование]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[symfony]]></category>

		<guid isPermaLink="false">http://danilovonline.ru/?p=1808</guid>
		<description><![CDATA[Задача: добавить параметр ко всем ссылкам, генерируемые Symfony UrlGenerator`ом, если он был в текущем запросе. Например, у вас есть особой шаблон, на тот случай, если модуль отображается в iframe другого модуля. Если знаете как это сделать средствами Symfony, то расскажите. Я такого способа не нашел, поэтому сделал свою реализацию. Сначала определимся какие именно параметры нужно [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Задача: добавить параметр ко всем ссылкам, генерируемые Symfony <a href="" target=_blank>UrlGenerator</a>`ом, если он был в текущем запросе.<br />
Например, у вас есть особой шаблон, на тот случай, если модуль отображается в iframe другого модуля.<br />
Если знаете как это сделать средствами Symfony, то расскажите.  Я такого способа не нашел, поэтому сделал свою реализацию. <span id="more-1808"></span></p>
<p>Сначала определимся какие именно параметры нужно прокинуть. У меня они хранятся в конфиге:<br />
<code lang="php"><br />
    //config.php<br />
    ...<br />
    'routing' => array(<br />
        'through_GET_parameters' => array( //эти _GET-параметры(если они есть в запросе) будут добавлены ко всем генерируемым ссылкам<br />
            'param1',<br />
            'param2',<br />
            ...<br />
        ),<br />
    ...<br />
</code></p>
<p>Теперь сделаем свой генератор на основе генератора от Symfony<br />
<code lang="php"><br />
<?php
//VendorsDir/MySpace/Core/UrlGenrator.php

namespace MySpace\Core;

use Symfony\Component\Routing\RequestContext;
use Symfony\Component\Routing\RouteCollection;

class UrlGenerator extends \Symfony\Component\Routing\Generator\UrlGenerator
{
    //тут будет список пар "параметр => значение", которые нужно давить ко всем генерируемым ссылкам<br />
    public $through_GET_parameters = array(); </p>
<p>    public function __construct(RouteCollection $routes, RequestContext $context) {<br />
        parent::__construct($routes, $context);<br />
    }</p>
<p>    public function generate($name, $parameters = array(), $referenceType = self::ABSOLUTE_PATH) {<br />
        $url = parent::generate($name, $parameters, $referenceType);<br />
        if ($this->through_GET_parameters) {<br />
            $gets = array();<br />
            foreach ($this->through_GET_parameters as $k=>$v) {<br />
                if ($v) {<br />
                    $gets[] = urlencode($k) . '=' . urlencode($v);<br />
                } else {<br />
                    $gets[] = urlencode($k);<br />
                }<br />
            }<br />
            // добавим пару символов "&?", что бы после генерации html заменить на нужный символ<br />
            $url .= "?".implode('&', $gets)."&?";<br />
        }</p>
<p>        return $url;<br />
    }<br />
}<br />
</code></p>
<p>После создания генератора, туда нужно положить нужные параметры и их значения из запроса, если они там есть:</p>
<p><code lang="php"><br />
    //bootstrap.php<br />
    use Symfony\Component\Routing\RequestContext;<br />
    use Symfony\Component\HttpFoundation\Request;<br />
    ...<br />
    $generator = new \MySpace\Core\UrlGenerator($routes, new RequestContext(''));</p>
<p>    if(isset($config['routing']['through_GET_parameters'])) {<br />
        foreach ($config['routing']['through_GET_parameters'] as $p) {<br />
            $v = Request::createFromGlobals()->get($p);<br />
            if (!is_null($v)) {<br />
                $generator->through_GET_parameters[$p] = $v;<br />
            }<br />
        }<br />
    }<br />
    ...<br />
</code></p>
<p>После генерации html страницы, мы будем иметь ссылки вида:<br />
<code><br />
  http://domain/module/route/to/action?param1=val1&param2=val2&??custom_param1=cval1&...<br />
</code></p>
<p>В этих ссылках нужно заменить &#171;&#038;??&#187; и &#171;&#038;?&#187; на &#038;</p>
<p><code lang="php"><br />
    //view.php<br />
    ...<br />
    $html = str_replace('&??', '&', $html);<br />
    $html = str_replace('&?', '&', $html);<br />
    echo $html;<br />
    ...<br />
</code></p>
<p>Но есть проблема: когда url генерируем в JS, то такая подмена не произойдет. Поэтому в JS генерируем url &#171;с умом&#187;:<br />
<code lang="js"><br />
    ...<br />
    //в url к данному моменту уже лежит какая то ссылка. Поэтому нужно определить какой символ нужно поставить перед нашими параметрами<br />
    url += ((url.search(/\?/) == -1) ? '?' : '&') + "custom_param2=test"<br />
    ...<br />
</code></p>
]]></content:encoded>
			<wfw:commentRss>http://danilovonline.ru/%d0%bf%d1%80%d0%be%d0%ba%d0%b8%d0%b4%d1%8b%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5-%d0%bf%d0%b0%d1%80%d0%b0%d0%bc%d0%b5%d1%82%d1%80%d0%b0-%d1%87%d0%b5%d1%80%d0%b5%d0%b7-%d0%b2%d1%81%d0%b5-%d1%81%d1%81%d1%8b/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cross-browser AJAX(pure JS)</title>
		<link>http://danilovonline.ru/cross-browser-ajax-pure-js/</link>
		<comments>http://danilovonline.ru/cross-browser-ajax-pure-js/#respond</comments>
		<pubDate>Tue, 02 May 2017 11:35:20 +0000</pubDate>
		<dc:creator><![CDATA[DanilovOnline]]></dc:creator>
				<category><![CDATA[Программирование]]></category>
		<category><![CDATA[js]]></category>

		<guid isPermaLink="false">http://danilovonline.ru/?p=1791</guid>
		<description><![CDATA[]]></description>
				<content:encoded><![CDATA[<p><script src="https://gist.github.com/Danilovonline/1b87ef2ff1b1e0b19714a8b2e6246856.js"></script></p>
]]></content:encoded>
			<wfw:commentRss>http://danilovonline.ru/cross-browser-ajax-pure-js/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Отображение &#171;дерева&#187; в мобильном интерфейсе.</title>
		<link>http://danilovonline.ru/mobile-tree-view/</link>
		<comments>http://danilovonline.ru/mobile-tree-view/#respond</comments>
		<pubDate>Thu, 27 Apr 2017 06:07:29 +0000</pubDate>
		<dc:creator><![CDATA[DanilovOnline]]></dc:creator>
				<category><![CDATA[Юзабилити]]></category>

		<guid isPermaLink="false">http://danilovonline.ru/?p=1776</guid>
		<description><![CDATA[Из результатов гугла на запрос &#171;mobile tree view&#187; можно выделить следующие варианты: А как еще?]]></description>
				<content:encoded><![CDATA[<p>Из результатов гугла на запрос &#171;mobile tree view&#187; можно выделить следующие варианты:</p>

<a href='http://danilovonline.ru/wp-content/3.png' data-rel="lightbox-gallery-1"><img width="150" height="150" src="http://danilovonline.ru/wp-content/3-150x150.png" class="attachment-thumbnail size-thumbnail" alt="" /></a>
<a href='http://danilovonline.ru/wp-content/2-1.jpg' data-rel="lightbox-gallery-1"><img width="150" height="150" src="http://danilovonline.ru/wp-content/2-1-150x150.jpg" class="attachment-thumbnail size-thumbnail" alt="" /></a>
<a href='http://danilovonline.ru/wp-content/1.png' data-rel="lightbox-gallery-1"><img width="150" height="150" src="http://danilovonline.ru/wp-content/1-150x150.png" class="attachment-thumbnail size-thumbnail" alt="" /></a>

<p>А как еще?</p>
]]></content:encoded>
			<wfw:commentRss>http://danilovonline.ru/mobile-tree-view/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Работа с часовыми поясами(таймзонами) в php и mysql</title>
		<link>http://danilovonline.ru/timezone_php_mysql/</link>
		<comments>http://danilovonline.ru/timezone_php_mysql/#respond</comments>
		<pubDate>Sun, 16 Apr 2017 17:11:48 +0000</pubDate>
		<dc:creator><![CDATA[DanilovOnline]]></dc:creator>
				<category><![CDATA[Программирование]]></category>
		<category><![CDATA[js]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://danilovonline.ru/?p=1765</guid>
		<description><![CDATA[Сложности работы с часовыми поясами, думаю, возникают у каждого кто сталкивается с этим впервые. Для примера рассмотрим создание планировщика: пользователь составляет расписание с заданиями &#8212; указывает время когда задание начинается и когда заканчивается. Но, т.к. пользователи находятся в разных странах и, соответственно, в разных часовых поясах, возникает вопросы: “А как хранить время?” и “И как [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Сложности работы с часовыми поясами, думаю, возникают у каждого кто сталкивается с этим впервые.  Для примера рассмотрим создание планировщика: пользователь составляет расписание с заданиями &#8212; указывает время когда задание начинается и когда заканчивается.<br />
Но, т.к. пользователи находятся в разных странах и, соответственно, в разных часовых поясах, возникает вопросы:  “А как хранить время?” и “И как искать задачи, которые надо запустить/остановить сейчас?”<br />
<span id="more-1765"></span></p>
<h2>Что такое часовой пояс и какие возникают проблемы?</h2>
<p>Если не принимать во внимание часовой пояс пользователя, то можно хранить время сервера, на котором запущено приложение. И по крону искать задачи которые уже наступили или уже/еще не работают. Но все меняется, если начать учитывать часовые пояса. </p>
<p>Часовой пояс &#8212; это величина, выраженная в часах и минутах, которое показывает смещение в одну или другую сторону относительно стандартного времени. Этим стандартным временем является <a href="https://ru.wikipedia.org/wiki/%D0%92%D1%81%D0%B5%D0%BC%D0%B8%D1%80%D0%BD%D0%BE%D0%B5_%D0%BA%D0%BE%D0%BE%D1%80%D0%B4%D0%B8%D0%BD%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D0%BE%D0%B5_%D0%B2%D1%80%D0%B5%D0%BC%D1%8F">UTC</a>. Например, в Москве смещение “UTC+03:00”, а в Лос-Анжелесе “UTC-08:00”. А еще смещение может быть “летним” и “зимним”. Например, в Лос-Анжелесе летнее смещение “UTC-07:00”. И для пущей гемаройности перевод времени производится по разному &#8212; в Европе переход на летнее время осуществляется в 01:00 по UTC; в США и Канаде с 2007 года переход на летнее время осуществляется во второе воскресенье марта в 2:00, а обратный переход — в первое воскресенье ноября, также в 2:00. Т.е. перевод времени в разных странах <a href="https://ria.ru/eco/20110208/331894284.html">производится в разное время</a>. А в некоторых странах, например в России, время не изменяется.</p>
<p>Все вот “это” нужно учесть при создание планировщика. Не буду писать как постепенно прийти к правильным решениям -это хорошо описано в статье <a href="https://habrahabr.ru/company/mailru/blog/242645/">“Never say never» или Работаем с таймзонами правильно”</a>. Сразу напишу, как поступить в нашем случае:</p>
<ul>
<li>хранить время сразу в нескольких вариантах:
<ul>
<li>UTC. По utc удобно искать задачи которые нужно выполнить в текущий момент, т.к. это время одинаково для всех;</li>
<li>название часового пояса. Это нужно, для того что бы перевести местное время пользователя ко время utc(т.к. пользователь указывает в расписании именно местное время). Обычно этот параметр хранится в профиле пользователя</li>
</ul>
</li>
<li>местное время. Казалось бы избыточный параметр, но очень полезный &#8212; не надо постоянно пересчитывать utc время в местное, чтобы отобразить его, например, в календаре нашего планировщика;</li>
<li>крон скрипт, который каждую минуту ищет задачи которые надо завершить или начать. Поиск по utc очень прямолинейный и простой;</li>
<li>крон скрипт, который пересчитывает utc время нашего задания после изменения времени с “зимнего” на “летнее” и обратно. Да, да &#8212; именно utc параметр, а не местное время. Местное время же не изменяется -вы как вставали(или ложились) в 7 часов утра, так и продолжаете это делать в  7 часов утра</li>
</ul>
<h2>Инструменты и библиотеки</h2>
<ol>
<li><a href="https://en.wikipedia.org/wiki/List_of_tz_database_time_zones">Список часовых поясов</a>;</li>
<li>На основе этого списка сделал mysql таблицу <a href="https://github.com/Danilovonline/timezones/blob/master/timezones.sql">timezones.sql</a>;</li>
<li>для JS есть библиотека <a href="https://momentjs.com/">Moment.js</a>. Она умеет преобразовывать даты, в том числе учитывая тайм-зоны. Причем у них есть довольно большой файл для локализации и учета часовых поясов;</li>
<li>PHP расширение pecl, которое исправляет недостатки встроенных таймзон в php &#8212; <a href="https://pecl.php.net/package/timezonedb">timezonedb</a>;</li>
<li>определение часового пояса посетителя по его IP можно сделать с помощью <a href="http://dev.maxmind.com/geoip/legacy/web-services/">api от maxmind</a>;</li>
<li><a href="https://developers.google.com/maps/documentation/timezone/intro?hl=ru">Google Maps Time Zone API</a> обеспечивает простой интерфейс для запроса сведений о часовом поясе для какого-либо местоположения на Земле, а также о разнице во времени относительно UTC для этого местоположения;</li>
<li><a href="https://timezonedb.com/download">timezonedb.com</a> &#8212; удобная, постоянно обновляемая база часовых поясов. Содержит не только смещение в конкретном часовом поясе в текущий момент, но и в прошлом. И вроде бы недалекое будущее;</li>
<li>json список всех зон <a href="https://github.com/dmfilipenko/timezones.json/blob/master/timezones.json">https://github.com/dmfilipenko/timezones.json/blob/master/timezones.json</a></li>
</ol>
<h2>Немного практики</h2>
<ol>
<li>Определить в php летнее сейчас время или нет.<br />
<code lang="php"><br />
#is_dst_time.php<br />
$dt = new \DateTime();<br />
$dt->setTimezone(new \DateTimeZone($timezone));<br />
$is_dst = $dt->format('I');<br />
</code>
</li>
<li>Определение сдвига относительно UTC с помощью JS.<br />
  В каких то случаях этого бывает достаточно. Если ваш сервис предусматривает профили пользователей, то я советую не ориентироваться на данные полученные через JS &#8212; лучше спросите у пользователя его часовой пояс.<br />
<code lang="js"><br />
//get_user_timezone_offset.js<br />
var user_timezone_offset = (-new Date().getTimezoneOffset()/60)<br />
</code>
</li>
<li>Корректная работа с временем в mysql.<br />
  Бывает так, что на сервере установлено время не в нулевой зоне(UTC). Поэтому приходится учитывать сдвиг времени относительно UTC. Подробно написано о этой проблеме на Stack Overflow &#8212; <a href="http://stackoverflow.com/questions/930900/how-do-i-set-the-time-zone-of-mysql">How do I set the time zone of MySQL?</a><br />
<code lang="sql"><br />
#sheduller_with_timezones.sql<br />
#Сначала получим значения свига $diff<br />
SELECT substring_index(TIMEDIFF(UTC_TIMESTAMP, now()), ':', 2) as diff;</p>
<p>#Теперь получим корректное время, поставив $diff<br />
SELECT CONVERT_TZ(from_unixtime(`utc_start_time`), '+00:00', '{$diff}') as start FROM `calendar_tbl`</p>
<p>#А так можно получить задачи, которые активны сейчас<br />
SELECT *<br />
FROM `calendar`<br />
WHERE UTC_TIMESTAMP() between<br />
  (CONVERT_TZ(from_unixtime(`utc_start_time`), '+00:00', '{$diff}')) and<br />
  (CONVERT_TZ(from_unixtime(`utc_end_time`), '+00:00', '{$diff}'))<br />
</code></p>
<p>
p.s. что то не так? Или вы работаете с часовыми поясами по другому? Писал статью не только, что бы поделиться опытом, но чтобы понять правильно я делаю или нет.</p>
]]></content:encoded>
			<wfw:commentRss>http://danilovonline.ru/timezone_php_mysql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Перехват &#171;fetch&#187; запросов в js</title>
		<link>http://danilovonline.ru/%d0%bf%d0%b5%d1%80%d0%b5%d1%85%d0%b2%d0%b0%d1%82-fetch-%d0%b7%d0%b0%d0%bf%d1%80%d0%be%d1%81%d0%be%d0%b2/</link>
		<pubDate>Mon, 10 Apr 2017 07:56:24 +0000</pubDate>
		<dc:creator><![CDATA[DanilovOnline]]></dc:creator>
				<category><![CDATA[Программирование]]></category>
		<category><![CDATA[js]]></category>

		<guid isPermaLink="false">http://danilovonline.ru/?p=1759</guid>
		<description><![CDATA[]]></description>
				<content:encoded><![CDATA[<p><script src="https://gist.github.com/Danilovonline/f18c0e5f5b394000fd52d3f22cff91b2.js"></script></p>
]]></content:encoded>
			</item>
		<item>
		<title>Танец Феи Драже</title>
		<link>http://danilovonline.ru/%d1%82%d0%b0%d0%bd%d0%b5%d1%86-%d1%84%d0%b5%d0%b8-%d0%b4%d1%80%d0%b0%d0%b6%d0%b5/</link>
		<pubDate>Wed, 30 Dec 2015 05:11:29 +0000</pubDate>
		<dc:creator><![CDATA[danilov]]></dc:creator>
				<category><![CDATA[Развлечения]]></category>

		<guid isPermaLink="false">http://danilovonline.ru/?p=1674</guid>
		<description><![CDATA[]]></description>
				<content:encoded><![CDATA[<p><iframe width="620" height="350" src="https://www.youtube.com/embed/jt3oAyK_IG8" frameborder="0" allowfullscreen></iframe></p>
]]></content:encoded>
			</item>
		<item>
		<title>Curl, многомерные массивы и передача файлов</title>
		<link>http://danilovonline.ru/curl-%d0%bc%d0%bd%d0%be%d0%b3%d0%be%d0%bc%d0%b5%d1%80%d0%bd%d1%8b%d0%b5-%d0%bc%d0%b0%d1%81%d1%81%d0%b8%d0%b2%d1%8b-%d0%b8-%d0%bf%d0%b5%d1%80%d0%b5%d0%b4%d0%b0%d1%87%d0%b0-%d1%84%d0%b0%d0%b9%d0%bb/</link>
		<pubDate>Mon, 23 Nov 2015 06:59:19 +0000</pubDate>
		<dc:creator><![CDATA[danilov]]></dc:creator>
				<category><![CDATA[Закладки]]></category>
		<category><![CDATA[Программирование]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://danilovonline.ru/?p=1648</guid>
		<description><![CDATA[Задача: из кода на PHP передать веб-службе файл с помощью curl. Решение: Curl, многомерные массивы и передача файлов upd: начиная с php 5.5 работа с файлами изменилась: if ((version_compare(PHP_VERSION, '5.5') >= 0)) { foreach ($requestVars AS $k=>$v) { if (strpos($v, '@') === 0) { $requestVars[$k] = new \CURLFile(str_replace('@', '', $v)); } } }]]></description>
				<content:encoded><![CDATA[<p>Задача: из кода на PHP передать веб-службе файл с помощью curl.</p>
<p>Решение: <a href="http://karamani-lab.blogspot.ru/2013/06/curl.html">Curl, многомерные массивы и передача файлов</a></p>
<p>upd: начиная с php 5.5 работа с файлами изменилась:<br />
<code lang="php"><br />
  if ((version_compare(PHP_VERSION, '5.5') >= 0)) {<br />
    foreach ($requestVars AS $k=>$v) {<br />
      if (strpos($v, '@') === 0) {<br />
        $requestVars[$k] = new \CURLFile(str_replace('@', '', $v));<br />
      }<br />
    }<br />
  }<br />
</code></p>
]]></content:encoded>
			</item>
		<item>
		<title>Питер Друкер. Энциклопедия менеджмента.</title>
		<link>http://danilovonline.ru/%d0%b4%d1%80%d1%83%d0%ba%d0%b5%d1%80-%d1%8d%d0%bd%d1%86%d0%b8%d0%ba%d0%bb%d0%be%d0%bf%d0%b5%d0%b4%d0%b8%d1%8f-%d0%bc%d0%b5%d0%bd%d0%b5%d0%b4%d0%b6%d0%bc%d0%b5%d0%bd%d1%82%d0%b0/</link>
		<comments>http://danilovonline.ru/%d0%b4%d1%80%d1%83%d0%ba%d0%b5%d1%80-%d1%8d%d0%bd%d1%86%d0%b8%d0%ba%d0%bb%d0%be%d0%bf%d0%b5%d0%b4%d0%b8%d1%8f-%d0%bc%d0%b5%d0%bd%d0%b5%d0%b4%d0%b6%d0%bc%d0%b5%d0%bd%d1%82%d0%b0/#respond</comments>
		<pubDate>Fri, 23 Oct 2015 13:39:19 +0000</pubDate>
		<dc:creator><![CDATA[danilov]]></dc:creator>
				<category><![CDATA[Новости]]></category>
		<category><![CDATA[Книги]]></category>
		<category><![CDATA[менеджмент]]></category>

		<guid isPermaLink="false">http://danilovonline.ru/?p=1621</guid>
		<description><![CDATA[У Питера Друкера насчитывается около 50 сочинений. И как правило, у молодых специалистов возникает вопрос &#171;А с какой книжки начать?&#187; В Японии был выпущен трехтомник. Один том посвящен управлению организациями, второй- личности  в организации, а третий-обществу в целом. Для Америки и Британии издание было сокращено до одного тома. Так получилось исчерпывающее, логически последовательное и самодостаточное [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><a href="http://danilovonline.ru/wp-content/Питер-Друкер.jpg" data-rel="lightbox-0" title=""><img class="aligncenter wp-image-1622 size-full" src="http://danilovonline.ru/wp-content/Питер-Друкер.jpg" alt="Питер Друкер" width="620" height="348" srcset="http://danilovonline.ru/wp-content/Питер-Друкер.jpg 620w, http://danilovonline.ru/wp-content/Питер-Друкер-300x168.jpg 300w" sizes="(max-width: 620px) 100vw, 620px" /></a></p>
<p><span style="font-weight: 400;">У Питера Друкера насчитывается около 50 сочинений. И как правило, у молодых специалистов возникает вопрос &#171;А с какой книжки начать?&#187; В Японии был выпущен трехтомник. Один том посвящен управлению организациями, второй- личности  в организации, а третий-обществу в целом. Для Америки и Британии издание было сокращено до одного тома. Так получилось исчерпывающее, логически последовательное и самодостаточное введение в теорию менеджмента, охватывающие вопросы управления предприятием и самоуправления для отдельной личности.</span></p>
<blockquote><p><i><span style="font-weight: 400;">Я искренне надеюсь, что Энциклопедия менеджмента позволит менеджерам, руководителям и профессионалам  завтрашнего  дня  лучше  понять  общество  и  экономику,  в  которых  им  предстоит жить и работать. Я также надеюсь, что эта книга поможет им освоить инструменты, с помощью которых им предстоит решать задачи, поставленные обществом и экономикой будущего.</span></i></p>
<p><i><span style="font-weight: 400;">                                                          —Питер Ф. Друкер</span></i></p></blockquote>
<p><span style="font-weight: 400;">Для себя собрал выжимки. Возможно, кому то будет интересно. Это то, что зацепило меня сейчас. Уверен, что перечитывая в будущем, в книге для себя найду еще много важного и ценного. Хочу отметить, что не стоит принимать решение читать или не читать только основываясь на мои заметки.</span></p>
<ul>
<li><a href="http://danilovonline.ru/друкер-энциклопедия-менеджмент/">Часть 1. Менеджмент</a></li>
<li><a href="http://danilovonline.ru/друкер-энциклопедия-человек/">Часть 2. Человек</a></li>
<li><a href="http://danilovonline.ru/друкер-энциклопедия-общество/">Часть 3. Общество</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://danilovonline.ru/%d0%b4%d1%80%d1%83%d0%ba%d0%b5%d1%80-%d1%8d%d0%bd%d1%86%d0%b8%d0%ba%d0%bb%d0%be%d0%bf%d0%b5%d0%b4%d0%b8%d1%8f-%d0%bc%d0%b5%d0%bd%d0%b5%d0%b4%d0%b6%d0%bc%d0%b5%d0%bd%d1%82%d0%b0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>П. Друкер. Энциклопедия менеджмента. Общество.</title>
		<link>http://danilovonline.ru/%d0%b4%d1%80%d1%83%d0%ba%d0%b5%d1%80-%d1%8d%d0%bd%d1%86%d0%b8%d0%ba%d0%bb%d0%be%d0%bf%d0%b5%d0%b4%d0%b8%d1%8f-%d0%be%d0%b1%d1%89%d0%b5%d1%81%d1%82%d0%b2%d0%be/</link>
		<comments>http://danilovonline.ru/%d0%b4%d1%80%d1%83%d0%ba%d0%b5%d1%80-%d1%8d%d0%bd%d1%86%d0%b8%d0%ba%d0%bb%d0%be%d0%bf%d0%b5%d0%b4%d0%b8%d1%8f-%d0%be%d0%b1%d1%89%d0%b5%d1%81%d1%82%d0%b2%d0%be/#respond</comments>
		<pubDate>Fri, 23 Oct 2015 13:33:56 +0000</pubDate>
		<dc:creator><![CDATA[danilov]]></dc:creator>
				<category><![CDATA[Новости]]></category>
		<category><![CDATA[Книги]]></category>
		<category><![CDATA[менеджмент]]></category>

		<guid isPermaLink="false">http://danilovonline.ru/?p=1618</guid>
		<description><![CDATA[Это заметки и местами «вырезки» из первой части книги П. Друкера «Энциклопедия Менеджмента». Если смотреть на общество конца XIX века и  начала XX века, то можно сказать, что самыми многочисленными представители были крестьяне и домашняя прислуга. В то же время, в начале XX века, начал доминировать новый класс,так называемые &#171;синие воротнички&#187; — производственные рабочие. В [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Это заметки и местами «вырезки» из первой части книги <a href="http://danilovonline.ru/друкер-энциклопедия-менеджмента/">П. Друкера «Энциклопедия Менеджмента»</a>.</p>
<p><span style="font-weight: 400;">Если смотреть на общество конца XIX века и  начала XX века, то можно сказать, что самыми многочисленными представители были крестьяне и домашняя прислуга. В то же время, в начале XX века, начал доминировать новый класс,так называемые &#171;синие воротнички&#187; — производственные рабочие. В середине XX столетия промышленные рабочие в каждой развитой стране (в том числе и в коммунистических странах) превратились в крупнейшую самостоятельную группу. Они стали в высшей степени респектабельны. Однако в 1990 году работники физического труда и их профсоюзы были вынуждены перейти в глухую оборону. Они начали неуклонно сокращаться количественно.Создается впечатление, что работники физического труда в производственных отраслях и их профсоюзы идут тем путем, который уже прошли фермеры. &#171;Класс&#187;, который пришел на смену промышленным рабочим, стал для них серьезным вызовом. Самой молодой доминантной группой становятся работники умственного труда.</span></p>
<p><span id="more-1618"></span></p>
<p><span style="font-weight: 400;">Они составляют не меньше трети трудоспособного населения  Соединенных Штатов  Америки, т.е. примерно такую же долю, какую составляли в лучшие годы промышленные рабочие (за исключением военного времени). Труд большинства работников умственного труда оплачивается не хуже, а нередко даже и лучше, чем труд работников физического труда. А новые рабочие места предоставляют им намного лучшие возможности.</span></p>
<p><span style="font-weight: 400;">Работники умственного труда в обществе знаний будут в меньшинстве. Но во многих странах —скорее всего, в большинстве развитых стран —они окажутся крупнейшей самостоятельной группой населения (в том числе и трудоспособного населения). Даже если другие группы превзойдут их по численности, работники умственного труда будут определять характер и социальный профиль зарождающегося общества знаний. Они не могут быть правящим классом, но они уже стали лидирующим классом общества знаний. А по своим характеристикам, социальному положению, по своим ценностям и ожиданиям они фундаментально отличаются от любой другой группы в истории, которая когда-либо занимала лидирующие (не говоря уж о доминирующих) позиции в обществе.</span></p>
<p><span style="font-weight: 400;">Общество знаний неизбежно станет намного более конкурентным, чем любое другое общество за всю историю человечества. Причина проста: после того как знания станут доступными для всех и каждого, уже не будет оправдания плохой работе. Не будет места &#171;бедным&#187; странам. Останутся только невежественные страны. То же самое будет относиться и к отдельным компаниям, отдельным отраслям и отдельным организациям любого типа. То же самое будет относиться и к отдельным людям. </span></p>
<p><span style="font-weight: 400;">Работники умственного труда в силу необходимости станут узкими специалистами: эти люди будут работать в составе той или иной организации. Сами по себе специализированные знания не в состоянии дать конкретных результатов. Работа хирурга не принесет желаемого результата, если не будет поставлен правильный диагноз, а это, вообще говоря, не входит в обязанности хирурга и даже не относится к его компетенции. Исследователи рынка, сами по себе, не производят ничего, кроме данных. Чтобы преобразовать эти данные в информацию —не говоря уж о том, чтобы обеспечить их эффективность в деятельности, связанной с использованием знаний, —требуются специалисты по маркетингу, специалисты-производственники и специалисты по обслуживанию. </span></p>
<p><span style="font-weight: 400;">Поскольку общество знаний по необходимости должно быть обществом организаций, его центральным и особым органом будет менеджмент.</span></p>
<p><span style="font-weight: 400;">Ни одна организация не может обойтись без менеджмента, без управления —независимо от того, использует ли она этот термин. Все менеджеры занимаются, в принципе, одним и тем же, к какому бы типу их организация ни относилась. Всем им приходится собирать воедино  разных людей, обладающих особыми знаниями,  обеспечивая  их  совместную  организованную  производительную  деятельность.  Всем  им приходится  думать  над  тем,  как  с  максимальной  эффективностью  использовать  сильные  стороны своих работников и как нейтрализовать их недостатки. </span></p>
<p><span style="font-weight: 400;">Эффективный менеджмент предполагает наличие органа, который должен продумывать стратегии, т.е. средства, с помощью которых цели данной организации воплощаются в конкретные результаты. Менеджеры должны определить ценности своей организации, систему взысканий и поощрений, должны выработать дух организации и ее культуру. Для всего этого менеджерам требуется не только знание менеджмента как самостоятельной дисциплины, но и знание и понимание самой организации, ее целей, ценностей, окружения и рынков, ее базовых компетенций.</span></p>
<p><span style="font-weight: 400;">Сущность менеджмента заключается в том, чтобы сделать знания производительной силой. Иными словами, менеджмент представляет собой социальную функцию. А с точки зрения практики, менеджмент относится к гуманитарным дисциплинам.</span></p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://danilovonline.ru/%d0%b4%d1%80%d1%83%d0%ba%d0%b5%d1%80-%d1%8d%d0%bd%d1%86%d0%b8%d0%ba%d0%bb%d0%be%d0%bf%d0%b5%d0%b4%d0%b8%d1%8f-%d0%be%d0%b1%d1%89%d0%b5%d1%81%d1%82%d0%b2%d0%be/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>П. Друкер. Энциклопедия менеджмента. Человек.</title>
		<link>http://danilovonline.ru/%d0%b4%d1%80%d1%83%d0%ba%d0%b5%d1%80-%d1%8d%d0%bd%d1%86%d0%b8%d0%ba%d0%bb%d0%be%d0%bf%d0%b5%d0%b4%d0%b8%d1%8f-%d1%87%d0%b5%d0%bb%d0%be%d0%b2%d0%b5%d0%ba/</link>
		<comments>http://danilovonline.ru/%d0%b4%d1%80%d1%83%d0%ba%d0%b5%d1%80-%d1%8d%d0%bd%d1%86%d0%b8%d0%ba%d0%bb%d0%be%d0%bf%d0%b5%d0%b4%d0%b8%d1%8f-%d1%87%d0%b5%d0%bb%d0%be%d0%b2%d0%b5%d0%ba/#respond</comments>
		<pubDate>Fri, 23 Oct 2015 13:32:01 +0000</pubDate>
		<dc:creator><![CDATA[danilov]]></dc:creator>
				<category><![CDATA[Профессия]]></category>
		<category><![CDATA[Книги]]></category>
		<category><![CDATA[менеджмент]]></category>

		<guid isPermaLink="false">http://danilovonline.ru/?p=1615</guid>
		<description><![CDATA[Это заметки и местами &#171;вырезки&#187; из второй части книги П. Друкера &#171;Энциклопедия Менеджмента&#187;. Интеллект, творческое воображение и высокий уровень знаний —очень важные ресурсы, но только эффективность превращает их в реальные результаты. Сами по себе эти качества лишь указывают на границы потенциально достижимого. Очень часто работники умственного труда не эффективны. Почему же это так? Когда речь идет [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Это заметки и местами &#171;вырезки&#187; из второй части <a href="http://danilovonline.ru/друкер-энциклопедия-менеджмента/">книги П. Друкера &#171;Энциклопедия Менеджмента&#187;</a>.</p>
<p><span style="font-weight: 400;">Интеллект, творческое воображение и высокий уровень знаний —очень важные ресурсы, но только эффективность превращает их в реальные результаты. Сами по себе эти качества лишь указывают на границы потенциально достижимого. </span></p>
<p><span style="font-weight: 400;">Очень часто работники умственного труда не эффективны. Почему же это так? Когда речь идет о ручном, физическом труде, от рабочего требуется лишь производительность, некий набор знаний и навыков, т.е. способность правильно выполнять порученное, а вовсе не организовывать продуктивную работу. Работник физического труда производит материальные вещи и результат его работы можно легко оценить качественно, количественно и т.д. В то же время от работника умственного труда требуется, что бы он думал, но о чем думает работник на работе не известно. Результат работы такого работника это набор какой то информации, каких то данных, которые в последствии должны материализоваться. Величайшая мудрость, которую не удается воплотить в действие, остается  набором  бесполезных  и  бессмысленных  &#171;данных&#187;. Эффективность умственного труда не измеряется в количественных показателях. Не измеряется она и затратами. Эффективность умственного труда измеряется по результатам.</span></p>
<p><span id="more-1615"></span></p>
<p><span style="font-weight: 400;">Каждый работник умственного труда в современной организации считается &#171;руководителем&#187;, если в силу занимаемой должности или своих знаний он отвечает за участок работы, который существенно влияет на способность организации добиваться требуемых результатов и успешно выполнять поставленные перед нею задачи. </span></p>
<p><span style="font-weight: 400;">Четыре не подконтрольных работнику фактора, которые сильно влияют на эффективность, причем отрицательно:</span></p>
<ol>
<li style="font-weight: 400;"><span style="font-weight: 400;">Время руководителя ему не принадлежит</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Руководитель не может расслабиться ни на минуту</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Руководителю приходится действовать в рамках той или иной организации. Это  означает,  что  он  эффективен лишь в том случае, если другие члены организации могут воспользоваться конкретным вкладом, результатами работы данного руководителя</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Руководитель видит свою организацию “изнутри”. О том, что происходит &#171;снаружи&#187;, он узнает через вторые или даже третьи руки.</span></li>
</ol>
<p><span style="font-weight: 400;">В тоже время к руководителю выдвигаются непростые требования &#8212; по простому эти требования можно описать “универсальный гений” &#8212; человек которых всесторонне развит. На практике же получается все наоборот &#8212; всесторонне невежд. Современные специалисты не против быть узконаправленными специалистами. Жаль, что к смежным областям они остаются в лучшем случае равнодушными. Например, чтобы быть хорошим урологом, не обязательно изучать психиатрию, но иметь общее представления о расстройствах психики весьма желательно. Все это приводит неэффективности.</span></p>
<p><span style="font-weight: 400;">Эффективные специалисты очень разнообразны, как и неэффективные. Эффективность это не врожденное качество. Эффективность не зависит от характера, типа человека, от его мировоззрения или чего то еще. Главное, что объединяет, —это методы практической деятельности, которые делают эффективным все, чем они занимаются. Да и сами эти методы у всех эффективных людей, в общем, одни и те же, где бы такой человек ни работал. Иными словами, эффективность —это привычка, навык, т.е. определенная совокупность методов работы. А методам работы, как известно, можно научиться. </span></p>
<p><span style="font-weight: 400;">Эффективно работающего человека всегда интересует, каков его личный вклад в развитие организации, в которой он работает. Он оценивает результаты своей деятельности и пытается понять, как эти результаты влияют на цели, которые поставила перед собой его организация. Он отличается высокой ответственностью. Работники умственного труда, которые не задумываются о своем личном вкладе в развитие организации, ставят перед собой не только явно заниженные, но и, возможно, ложные цели. Человек, который отвечает за собственный вклад, всегда стремится соотнести свою узкую область с деятельностью организации в целом. Когда-нибудь он обязательно поймет, что нужно изучить потребности, направления, ограничения и восприятия других людей, чтобы эти люди смогли воспользоваться плодами его собственного труда. Он, возможно, и не оценит по достоинству работу своих коллег в разных направлениях, но, по крайней мере, он не будет страдать самонадеянностью и высокомерием, присущими так называемым &#171;образованным людям&#187;. А это опасная болезнь, которая разрушает знания, убивая их привлекательность и эффективность.</span></p>
<p><span style="font-weight: 400;">У ориентация на личный вклад в общее дело есть еще одна очень важная функция &#8212; обеспечение хороших отношений между сотрудниками. Благодаря ориентации на личный вклад выполняются четыре базовых условия для построения эффективных отношений между людьми:</span></p>
<ul>
<li style="font-weight: 400;"><span style="font-weight: 400;">общение;</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">коллективная работа;</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">саморазвитие и самосовершенствование;</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">развитие и совершенствование других.</span></li>
</ul>
<p><span style="font-weight: 400;">Любая организация в значительной мере помогает преодолеть ограничения, налагаемые на конечный результат непродолжительностью жизни отдельного человека. Любая организация уже сегодня должна заботиться о воспитании работников, которые будут обеспечивать ее успешное функционирование завтра. Следующее  поколение должно принять как само собой разумеющееся все, чего удалось добиться поколению нынешнему.</span></p>
<p><span style="font-weight: 400;">У каждого работника есть как сильные так и слабые стороны. Задача менеджера не тратить время и энергию на повышение уровня знаний и умений работника в тех областях, в которых он абсолютно некомпетентных, а направить соответствующие ресурсы и силы на превращение хорошего работника в выдающегося мастера своего дела. Определить способности и сильные стороны человека можно лишь одним способом: анализируя результат &#8212; сопоставив планируемый и реальный результат. </span></p>
<p><span style="font-weight: 400;">Реальный результат зависит от стиля работы. Но стиль работы у каждого свой, как и способ обучения. Сильные стороны работника очень редко &#171;конфликтуют&#187; с его стилем работы. Можно даже сказать, что они взаимно дополняются. Но иногда возможен конфликт между моральными принципами работника и его способностями. У каждой организации должна быть определенная система ценностей. Работа в организации, система ценностей которой неприемлема для данного человека, обрекает его на неудовлетворенность и низкую эффективность.</span></p>
<p><span style="font-weight: 400;">При обсуждении эффективности, часто начинают с формирования планов, которые, в свою очередь, часто остаются на бумаге. На самом деле, по наблюдению автора, отправной точкой являются не задачи, которые нужно выполнить, а время. Время —уникальный ресурс. Его нельзя одолжить, взять напрокат, купить или получить каким-либо иным способом. Большая часть времени неминуемо расходуется впустую. Чем выше должность данного работника, тем больше времени он затрачивает на &#171;организационные&#187;, а по сути —непродуктивные —вопросы. Чтобы  обеспечить  эффективность,  каждый  работник  умственного  труда  (и особенно —каждый руководитель) должен научиться планировать свое время крупными &#171;блоками&#187;. Разбивать выполнение одной операции на мелкие порции нецелесообразно и неэффективно, даже если суммарное время оказывается весьма продолжительным.</span></p>
<p><span style="font-weight: 400;">Принять эффективное решение можно следую этим правилам:</span></p>
<ol>
<li style="font-weight: 400;"><span style="font-weight: 400;">Четко выделить проблемы и вопросы, которые носят фундаментальный характер и которые можно решать исключительно на основе определенного правила, принципа.</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Определить  спецификации,  которым  должно  удовлетворить  решение,  т.е.  устанавливали &#171;граничные условия&#187;, которых нужно придерживаться.</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Выработать критерии &#171;правильного&#187; решения.</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Включить в найденное решение действия, необходимые для его практической реализации.</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Проверить правильность и эффективность найденного решения с помощью анализа &#171;обратной связи&#187;, т.е. оценки реального хода событий.</span></li>
</ol>
<p><span style="font-weight: 400;">Каковы черты эффективного руководителя? Суть лидерства —в эффективности.Прежде всего следует отметить, что само по себе умение быть лидером не представляет особой ценности. Умение руководить и вести за собой —это лишь средство. Ключевое качество, отличающее настоящего лидера, —его цель. Истинный лидер отличается от человека, узурпировавшего власть, своими целями. Если компромиссы, на которые приходится идти лидеру, учитывая ограничения, налагаемые на его действия реальной  ситуацией, совместимы с его миссией и целями, значит, этого лидера следует признать эффективным. Лидер должен относиться к своему лидерству как к ответственной миссии, а не как к званию, дарующему ему определенные привилегии.</span></p>
]]></content:encoded>
			<wfw:commentRss>http://danilovonline.ru/%d0%b4%d1%80%d1%83%d0%ba%d0%b5%d1%80-%d1%8d%d0%bd%d1%86%d0%b8%d0%ba%d0%bb%d0%be%d0%bf%d0%b5%d0%b4%d0%b8%d1%8f-%d1%87%d0%b5%d0%bb%d0%be%d0%b2%d0%b5%d0%ba/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>П. Друкер. Энциклопедия менеджмента. Менеджмент</title>
		<link>http://danilovonline.ru/%d0%b4%d1%80%d1%83%d0%ba%d0%b5%d1%80-%d1%8d%d0%bd%d1%86%d0%b8%d0%ba%d0%bb%d0%be%d0%bf%d0%b5%d0%b4%d0%b8%d1%8f-%d0%bc%d0%b5%d0%bd%d0%b5%d0%b4%d0%b6%d0%bc%d0%b5%d0%bd%d1%82/</link>
		<comments>http://danilovonline.ru/%d0%b4%d1%80%d1%83%d0%ba%d0%b5%d1%80-%d1%8d%d0%bd%d1%86%d0%b8%d0%ba%d0%bb%d0%be%d0%bf%d0%b5%d0%b4%d0%b8%d1%8f-%d0%bc%d0%b5%d0%bd%d0%b5%d0%b4%d0%b6%d0%bc%d0%b5%d0%bd%d1%82/#respond</comments>
		<pubDate>Fri, 23 Oct 2015 13:30:50 +0000</pubDate>
		<dc:creator><![CDATA[danilov]]></dc:creator>
				<category><![CDATA[Новости]]></category>
		<category><![CDATA[Книги]]></category>
		<category><![CDATA[менеджмент]]></category>

		<guid isPermaLink="false">http://danilovonline.ru/?p=1611</guid>
		<description><![CDATA[Это заметки и местами &#171;вырезки&#187; из первой части книги П. Друкера &#171;Энциклопедия Менеджмента&#187;. Что такое менеджмент? Зачем он нужен? Какой бывает? Из чего состоит? Какие проблемы решает? Как решает? Отличия в менеджменте в организациях разного типа… Очень много примеров из практики. Эту часть читал не очень внимательно, особенно последнюю треть. Интересно посмотреть на организации в [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Это заметки и местами &#171;вырезки&#187; из первой части <a href="http://danilovonline.ru/друкер-энциклопедия-менеджмента/">книги П. Друкера &#171;Энциклопедия Менеджмента&#187;</a>.</p>
<p><span style="font-weight: 400;">Что такое менеджмент? Зачем он нужен? Какой бывает? Из чего состоит? Какие проблемы решает? Как решает? Отличия в менеджменте в организациях разного типа… Очень много примеров из практики. </span></p>
<p><span style="font-weight: 400;">Эту часть читал не очень внимательно, особенно последнюю треть. Интересно посмотреть на организации в которых мне пришлось поработать сквозь призму этих знаний. Далее выжимка первой части&#8230;</span><span id="more-1611"></span></p>
<p><span style="font-weight: 400;">Самые сложные проблемы управления лежат вовсе не в сфере технологий или политики. Источник этих проблем &#8212; внутри организации.</span></p>
<p><span style="font-weight: 400;">Когда то давным давно, когда еще не было больших организаций, не было и проблем с управления рабочими. Например, на фабрике Ф. Энгельса были только бригадиры, которые следили за порядком в своей небольшой группы. Большой организацией можно было назвать только армию. Поэтому, не удивительно, что первые модели управления в организации были позаимствованы из армии. Такую модель можно охарактеризовать наличием нескольких руководителей высшего звена и армия рабочих, которой они управляют. Но это модель не была статичной и постоянно изменялась. Со временем стал расти уровень образованности работников и стали появляться отделы. Если раньше объем выполненной продукции зависил от количества рабочих, то теперь он стал зависеть от научной составляющей, т.е. стали работать “с умом”. Появилась потребность в управлении рабочими с самыми разными знаниями и умениями.</span></p>
<p><span style="font-weight: 400;">Любая организация(коммерческая фирма, церковь, больница,&#8230;) быстро приходит в упадок, если становится невосприимчивой к инновациям. Любая новая организация терпит крах, если в ней не обеспечивается должный уровень управления.</span></p>
<p><span style="font-weight: 400;">Менеджмент базируется на нескольких важных принципах:</span></p>
<ol>
<li style="font-weight: 400;"><span style="font-weight: 400;">Менеджмент касается человека, и только человека. Задача менеджмента &#8212; обеспечить совместную и эффективную работу людей, давая им возможность реализовать в максимальной степени свои сильные стороны и нейтрализуя их недостатки.</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Т.к. главная задача менеджмента связана с интеграцией людей в единое предприятие, то менеджмент нельзя отделять от культуры общества</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Предприятие не достигнет успеха, если его сотрудники не будут стремится к общим целям и разделять общие ценности</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Менеджмент должен давать возможность роста и развития как предприятия в целом, так и каждому из его работников в отдельности по мере изменения потребностей и появления новых возможностей</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Деятельность организации должна основываться на обменен информацией и на индивидуальной ответственности. Т.е. каждый работник должен донести до других свои обязанности и уровень ответственности. И он должен знать тоже самое о своих коллегах.</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Реальные результаты деятельности организации проявляются только вне этой организации. Результат любой организации &#8212; удовлетворение клиента</span></li>
</ol>
<p><span style="font-weight: 400;">Главная задача руководства &#8212; это  четко и доходчиво предоставить своим сотрудникам цели и миссию организации. Только в этом случае “люди на местах” смогут правильно принимать решения, сочетающиеся с этими целями. А что бы говорить о целях и миссии может быть только одна отправная точка &#8212; это потребитель. Именно потребитель определяет сущность бизнеса.</span></p>
<p><span style="font-weight: 400;">Много написано на тему какие вопросы должно поставить перед собой руководство и как их решать. Задачи маркетинга, инновации, в сфере ресурсов, в сфере производительности, в социальной сфере, минимально необходимой прибыли.</span></p>
<p><span style="font-weight: 400;">Маркетинг и инновации считаются базовыми для формулирования задач. Именно в этих двух сферах фирма видит результаты своей деятельности. И потребитель платит за эффективную работу фирмы именно в этих направлениях.</span></p>
<p><span style="font-weight: 400;">Если сравнивать  коммерческие и некоммерческие организаций, в разрезе задач менеджмента, то это сравнение явно не в пользу первых.  </span></p>
<p><span style="font-weight: 400;">Для большинства менеджмент &#8212; это менеджмент бизнеса. Но это не так. Например, “государственное управление” это то же менеджмент. Различия наблюдаются в терминологии. Задачи и проблемы во многом схожи. </span></p>
<p><span style="font-weight: 400;">Менеджмент зависит от структуры организации. Единственной правильной структуры нет, но существуют некоторые общие “принципы” организации:</span></p>
<ul>
<li style="font-weight: 400;"><span style="font-weight: 400;">организация должна быть прозрачной, т.е. сотрудники должны знать и понимать структуру организации, в которой они работают.</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">обязательно должно быть лицо, принимающее конечное решение в сфере своей компетенции. И должен быть кто-то, кто берет на себя руководство в кризисной ситуации</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">каждый работающий должен иметь только одного “начальника”. Отсюда можно вывести еще один принцип &#8212; организация должна строится “по горизонтали”</span></li>
</ul>
<p><span style="font-weight: 400;">Менеджмент существует ради результатов, которых учреждение достигает во внешней среде. Менеджмент должен определять, каких результатов необходимо достичь; менеджмент должен мобилизовать ресурсы организации для достижения этих результатов. Менеджмент предназначен для того, чтобы любая организация — коммерческое предприятие, церковь, университет или приют для женщин, подвергшихся насилию, — могла достичь запланированного результата во внешней среде, за пределами организации.</span></p>
<p><span style="font-weight: 400;">Кроме высшего руководства в структуре присутствуют менеджеры отделов. По определению, менеджер отвечает за вклад своего звена в результаты деятельности вышестоящего  подразделения  и  предприятия  в  целом.  Таким  образом,  его  деятельность  направлена  по</span></p>
<p><span style="font-weight: 400;">восходящей, а не наоборот. Это означает, что цели деятельности каждого менеджера должны определяться его вкладом в результаты деятельности вышестоящего подразделения. Такое положение требует, что бы каждый менеджер сам выработал и установил цели своего подразделения. Вышестоящее руководство должно, разумеется, одобрить или, наоборот, отвергнуть эти цели. Тем не менее разработка целей входит в обязанности менеджера (в сущности, это его первейшая обязанность). А значит, что менеджер должен высшие цели организации. </span></p>
<p><span style="font-weight: 400;">Разбираются два способа управления &#8212; через принуждение и через измерение эффективности(самоконтроля). Одно из важнейших преимуществ управления на основе поставленных целей заключается в том, что оно позволяет нам вместо управления через принуждение применять управление с помощью самоконтроля. Самоконтроль сильнейший механизм и он работает только тогда когда есть цели. Имея цели можно, если не количественно, то качественно измерить эффективность подразделения. Тут нужно заметить, что когда отчеты, получившиеся в ходе оценки эффективности, используются внутри подразделения, они являются дополнительным мотивирующим фактором. Если же эти отчеты используются руководством выше, то наоборот.</span></p>
<p><span style="font-weight: 400;">Отчеты отчетами, но их не должно быть много. Есть множество примеров, когда менеджер занят львиную долю своего времени составлением отчетов.</span></p>
<p><span style="font-weight: 400;">На  управление  людьми  и  принятие  кадровых  решений  руководители  затрачивают  больше времени, чем на выполнение всех остальных своих обязанностей. </span></p>
<p><span style="font-weight: 400;">В кадровом вопросе выделены базовые принципы: </span></p>
<ol>
<li style="font-weight: 400;"><span style="font-weight: 400;">Если человеку поручена работа, с которой он не справляется, &#8212; значит ошибку совершил руководитель</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Работник должен верить и доверять своему руководителю. Долг руководителя &#8212; гарантировать эффективную работу своих подчиненных</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Кадровые решения определяют потенциал организации, поэтому им следует уделять приоритетное влияние</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Нельзя назначать новичков на ключевые должности</span></li>
</ol>
<p><span style="font-weight: 400;">Подробно и с примерами рассматриваются предпринимательские стратегии: “Блицкриг”, “Удар в спину”, “Творческая имитация”&#8230;</span></p>
]]></content:encoded>
			<wfw:commentRss>http://danilovonline.ru/%d0%b4%d1%80%d1%83%d0%ba%d0%b5%d1%80-%d1%8d%d0%bd%d1%86%d0%b8%d0%ba%d0%bb%d0%be%d0%bf%d0%b5%d0%b4%d0%b8%d1%8f-%d0%bc%d0%b5%d0%bd%d0%b5%d0%b4%d0%b6%d0%bc%d0%b5%d0%bd%d1%82/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HUDWAY Glass</title>
		<link>http://danilovonline.ru/hudway-glass/</link>
		<comments>http://danilovonline.ru/hudway-glass/#comments</comments>
		<pubDate>Thu, 08 Oct 2015 05:08:56 +0000</pubDate>
		<dc:creator><![CDATA[danilov]]></dc:creator>
				<category><![CDATA[Новости]]></category>

		<guid isPermaLink="false">http://danilovonline.ru/?p=1600</guid>
		<description><![CDATA[Удивительные вещи происходят рядом. На кикстартере запущен еще один проект от ижевских ребят.]]></description>
				<content:encoded><![CDATA[<p>Удивительные вещи происходят рядом. На кикстартере запущен еще один <a href="https://www.kickstarter.com/projects/361842686/hudway-glass-keeps-your-eyes-on-the-road-while-dri">проект </a>от ижевских ребят.<br />
<div style="width: 640px;" class="wp-video"><!--[if lt IE 9]><script>document.createElement('video');</script><![endif]-->
<video class="wp-video-shortcode" id="video-1600-1" width="640" height="360" preload="metadata" controls="controls"><source type="video/mp4" src="https://d2pq0u4uni88oo.cloudfront.net/projects/1773882/video-592755-h264_high.mp4?_=1" /><a href="https://d2pq0u4uni88oo.cloudfront.net/projects/1773882/video-592755-h264_high.mp4">https://d2pq0u4uni88oo.cloudfront.net/projects/1773882/video-592755-h264_high.mp4</a></video></div></p>
]]></content:encoded>
			<wfw:commentRss>http://danilovonline.ru/hudway-glass/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
<enclosure url="https://d2pq0u4uni88oo.cloudfront.net/projects/1773882/video-592755-h264_high.mp4" length="31069912" type="video/mp4" />
		</item>
		<item>
		<title>История ЦВТ и Эпам в Ижевске</title>
		<link>http://danilovonline.ru/%d0%b8%d1%81%d1%82%d0%be%d1%80%d0%b8%d1%8f-%d1%86%d0%b2%d1%82-%d0%b8-%d1%8d%d0%bf%d0%b0%d0%bc-%d0%b2-%d0%b8%d0%b6%d0%b5%d0%b2%d1%81%d0%ba%d0%b5/</link>
		<comments>http://danilovonline.ru/%d0%b8%d1%81%d1%82%d0%be%d1%80%d0%b8%d1%8f-%d1%86%d0%b2%d1%82-%d0%b8-%d1%8d%d0%bf%d0%b0%d0%bc-%d0%b2-%d0%b8%d0%b6%d0%b5%d0%b2%d1%81%d0%ba%d0%b5/#respond</comments>
		<pubDate>Thu, 01 Oct 2015 05:06:02 +0000</pubDate>
		<dc:creator><![CDATA[danilov]]></dc:creator>
				<category><![CDATA[Профессия]]></category>

		<guid isPermaLink="false">http://danilovonline.ru/?p=1593</guid>
		<description><![CDATA[В рамках встреч Yodiz Life прошла лекция основателя ЦВТ и Эпама в Ижевске Олега Витальевича Вылегжанина. Вылегжанин рассказал о том как появился ЦВТ. Какие были первые заказы. При каких обстоятельствах возник офис Эпама в Ижевске. Также была затронута тема ИТ-парка в Удмуртии.]]></description>
				<content:encoded><![CDATA[<p>В рамках встреч <a href="https://www.facebook.com/yodizlife">Yodiz Life</a> прошла лекция основателя ЦВТ и Эпама в Ижевске Олега Витальевича Вылегжанина. Вылегжанин рассказал о том как появился ЦВТ. Какие были первые заказы. При каких обстоятельствах возник офис Эпама в Ижевске. Также была затронута тема ИТ-парка в Удмуртии.</p>
<p><iframe width="624" height="439" src="https://www.youtube.com/embed/Dtjm49TaQHs" frameborder="0" allowfullscreen></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://danilovonline.ru/%d0%b8%d1%81%d1%82%d0%be%d1%80%d0%b8%d1%8f-%d1%86%d0%b2%d1%82-%d0%b8-%d1%8d%d0%bf%d0%b0%d0%bc-%d0%b2-%d0%b8%d0%b6%d0%b5%d0%b2%d1%81%d0%ba%d0%b5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ZF2 .htaccess in built-in PHP server</title>
		<link>http://danilovonline.ru/zf2-htaccess-in-built-in-php-server/</link>
		<pubDate>Tue, 29 Sep 2015 11:48:06 +0000</pubDate>
		<dc:creator><![CDATA[danilov]]></dc:creator>
				<category><![CDATA[Программирование]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[zf2]]></category>

		<guid isPermaLink="false">http://danilovonline.ru/?p=1587</guid>
		<description><![CDATA[Для нормального функционирования zf2-приложения требуется наличие модуля mod_rewrite. В .htaccess все запросы через mod_rewrite зарулены на public/index.php В документации запуск встроенного сервера описан так: $ cd public $ php -S localhost:80 Но т.к. .htaccess не подхватится, то при вызове, например, каптчи &#171;http://localhost/user/captcha/ad291fb77e7c0cca7c3bd1f47aa2964e.png&#187; сервер, вместо того, что бы отправить запрос в index.php попытается найти такой файл [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Для нормального функционирования zf2-приложения требуется наличие модуля mod_rewrite. В .htaccess все запросы через mod_rewrite зарулены на public/index.php</p>
<p>В документации запуск встроенного сервера описан так:</p>
<p>  $ cd public<br />
  $ php -S localhost:80</p>
<p>Но т.к. .htaccess не подхватится, то при вызове, например, каптчи &#171;<em>http://localhost/user/captcha/ad291fb77e7c0cca7c3bd1f47aa2964e.png</em>&#187; сервер, вместо того, что бы отправить запрос в index.php попытается найти такой файл и выдаст 404-ю ошибку.</p>
<p>Решение простое. При запуске нужно явно указать вызов index.php при любых запросах. Так:</p>
<p>  $ cd public<br />
  $ php -S localhost:80 index.php</p>
]]></content:encoded>
			</item>
		<item>
		<title>PHP sendmail в Windows</title>
		<link>http://danilovonline.ru/php-sendmail-%d0%b2-windows/</link>
		<pubDate>Thu, 24 Sep 2015 13:20:04 +0000</pubDate>
		<dc:creator><![CDATA[danilov]]></dc:creator>
				<category><![CDATA[Программирование]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://danilovonline.ru/?p=1579</guid>
		<description><![CDATA[Для отправки почты php использует утилиту sendmail. Те кто работает в linux, уже готов к этому. А вот у windows-пользователей возникают проблемы, потому как они ни как не ожидают, что нужно что то настроить. Опишу по шагам: 1) Скачать sendmail отсюда и распакуйте, например, в папку с:\sendmail 2) Откройте sendmail.ini и укажите smtp_server(почтовый сервер), auth_username, [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Для отправки почты php использует утилиту sendmail. Те кто работает в linux, уже готов к этому. А вот у windows-пользователей возникают проблемы, потому как они ни как не ожидают, что нужно что то настроить. Опишу по шагам:</p>
<p>1) Скачать sendmail <a href="http://www.developerfiles.com/wp-content/uploads/2012/05/sendmail.zip">отсюда</a> и распакуйте, например, в папку <em>с:\sendmail</em></p>
<p>2) Откройте <em>sendmail.ini</em> и укажите <em>smtp_server</em>(почтовый сервер), <em>auth_username, auth_password и force_sender</em>(будет подставляться в поле from). Обратите внимание на <em>error_logfile=error.log</em> &#8212; сюда будут писаться ошибки, если что то пойдет не так(например, если укажите неправильный пароль)</p>
<p>3) Откройте ваш php.ini и укажите <em>sendmail_path = &#171;[путь_до_папки]\sendmail\sendmail.exe -t&#187;</em>. Проверьте, значение <em>SMTP = localhost</em> и <em>smtp_port = 25</em></p>
<p>4) Перезапустите apache или другой используемый вами сервер</p>
]]></content:encoded>
			</item>
		<item>
		<title>«Контент перестал быть королём на сайте» — мнение дизайнера об изменениях в отрасли</title>
		<link>http://danilovonline.ru/%d0%ba%d0%be%d0%bd%d1%82%d0%b5%d0%bd%d1%82-%d0%bf%d0%b5%d1%80%d0%b5%d1%81%d1%82%d0%b0%d0%bb-%d0%b1%d1%8b%d1%82%d1%8c-%d0%ba%d0%be%d1%80%d0%be%d0%bb%d1%91%d0%bc-%d0%bd%d0%b0-%d1%81%d0%b0%d0%b9/</link>
		<comments>http://danilovonline.ru/%d0%ba%d0%be%d0%bd%d1%82%d0%b5%d0%bd%d1%82-%d0%bf%d0%b5%d1%80%d0%b5%d1%81%d1%82%d0%b0%d0%bb-%d0%b1%d1%8b%d1%82%d1%8c-%d0%ba%d0%be%d1%80%d0%be%d0%bb%d1%91%d0%bc-%d0%bd%d0%b0-%d1%81%d0%b0%d0%b9/#respond</comments>
		<pubDate>Mon, 21 Sep 2015 09:29:47 +0000</pubDate>
		<dc:creator><![CDATA[danilov]]></dc:creator>
				<category><![CDATA[Профессия]]></category>

		<guid isPermaLink="false">http://danilovonline.ru/?p=1575</guid>
		<description><![CDATA[Ресурс Louder Than Ten опубликовал материал дизайнера Трэвиса Герца о том, как профессионалов из отрасли постепенно вытесняют машины, какова связь между интерфейсом и контентом и почему представителям дизайн-сферы важно задуматься об этом. Коллеги из Faino Interactive перевели статью для рассылки дизайнеров интерфейсов UX Fox. VC публикует материал с разрешения переводчика. Статья о наступающем кризисе в [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Ресурс Louder Than Ten опубликовал материал дизайнера Трэвиса Герца о том, как профессионалов из отрасли постепенно вытесняют машины, какова связь между интерфейсом и контентом и почему представителям дизайн-сферы важно задуматься об этом. Коллеги из Faino Interactive перевели статью для рассылки дизайнеров интерфейсов UX Fox.</p>
<p><a href="https://vc.ru/p/design-machine">VC публикует</a> материал с разрешения переводчика. </p>
<p>Статья о наступающем кризисе в дизайне. О дизайне не для людей, а для машин. Не от людей, а от машин.<br />
Почему так много похожих друг для друга сайтов. Зачем повсеместно используются шаблоны и гайды? Почему дизайн оторван от контекста?</p>
<blockquote><p>Дерьмовый контент продаёт дерьмовый продукт</p></blockquote>
<p>Но не все так плохо&#8230;</p>
<p><a href="https://vc.ru/p/design-machine">«Контент перестал быть королём на сайте» — мнение дизайнера об изменениях в отрасли</a></p>
]]></content:encoded>
			<wfw:commentRss>http://danilovonline.ru/%d0%ba%d0%be%d0%bd%d1%82%d0%b5%d0%bd%d1%82-%d0%bf%d0%b5%d1%80%d0%b5%d1%81%d1%82%d0%b0%d0%bb-%d0%b1%d1%8b%d1%82%d1%8c-%d0%ba%d0%be%d1%80%d0%be%d0%bb%d1%91%d0%bc-%d0%bd%d0%b0-%d1%81%d0%b0%d0%b9/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Что должен уметь и делать ПМ</title>
		<link>http://danilovonline.ru/%d1%87%d1%82%d0%be-%d0%b4%d0%be%d0%bb%d0%b6%d0%b5%d0%bd-%d1%83%d0%bc%d0%b5%d1%82%d1%8c-%d0%b8-%d0%b4%d0%b5%d0%bb%d0%b0%d1%82%d1%8c-%d0%bf%d0%bc/</link>
		<comments>http://danilovonline.ru/%d1%87%d1%82%d0%be-%d0%b4%d0%be%d0%bb%d0%b6%d0%b5%d0%bd-%d1%83%d0%bc%d0%b5%d1%82%d1%8c-%d0%b8-%d0%b4%d0%b5%d0%bb%d0%b0%d1%82%d1%8c-%d0%bf%d0%bc/#respond</comments>
		<pubDate>Fri, 18 Sep 2015 10:32:27 +0000</pubDate>
		<dc:creator><![CDATA[danilov]]></dc:creator>
				<category><![CDATA[Мысли]]></category>
		<category><![CDATA[Профессия]]></category>

		<guid isPermaLink="false">http://danilovonline.ru/?p=1559</guid>
		<description><![CDATA[Недавно Дмитрий Плетнев(@dpletnev) высказался на тему что должен уметь и делать ПМ на izhit.slack.com : Проект для разработчика выглядит как процесс разработки и итог разработки &#8212; качественный продукт. Проект для менеджера это система которая состоит из балансировки между: командой, продуктом, деньгами и клиентом. То есть задача пиэма 1. Отслеживать работу команды, состояние членов команды, формировать [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><img src="https://pp.vk.me/c629301/v629301926/97ed/Wal1Xb8BQWk.jpg" /></p>
<p>Недавно Дмитрий Плетнев(<a href="https://twitter.com/dpletnev">@dpletnev</a>) высказался на тему что должен уметь и делать ПМ на <a href="https://izhit.slack.com">izhit.slack.com</a> :</p>
<blockquote><p>Проект для разработчика выглядит как процесс разработки и итог разработки &#8212; качественный продукт.<br />
Проект для менеджера это система которая состоит из балансировки между: командой, продуктом, деньгами и клиентом. То есть задача пиэма<br />
1. Отслеживать работу команды, состояние членов команды, формировать эту самую команду вместе с лидом и создавать атмосферу в которой команад разработки может спокойно заниматься проектом, комфортно и ей никто и ничто не мешает. В общем виде ПМ должен знать каждого человека внутри команды, его личную жизнь, проблемы, увлечения, сильные/слабые стороны, личную систему мотивации и интересов каждого специалиста.<br />
Дополнительно он должен представлять общую информацию по тех.скиллам всей остальной компании, чтобы понимать каким образом, если надо, он может масштабировать команду.<br />
Если ПМ не может поднять команду когда надо на оверы или наоборот объяснить руководству, что надо дать отдых/бонусы/етц это провал.<br />
Специалист приходит в компанию, а уходит от менеджера, это факт.<br />
2. Продукт &#8212; задача ПМ не просто собирать инфу от заказчика, но и фильтровать ее, очень и очень часто заказчики не врубаются в lean-подход, ограничения по возможностям команды. У нас были дикие проблемы, когда мы не умели с этим работать, загоняли команду разработки, в итоге люди просто увольнялись.<br />
&#8230;<br />
Ну и ПМ как обычно является переводчиком запросов клиента, в программисто-понятный язык. Это может делать и аналитик, если команда и проект оч.большие.<br />
Ну и какбэ ответствтенность за продукт перед клиентом лежит на ПМе.<br />
3. Бабло. Ну тут наверное понятно и так &#8212; задача ПМа сделать проект в бюджет как минимум, если он фиксированный, отслеживать попадание спецов в оценки и своевременно начинать махать флагом, когда идет перерасход часов, бюджета, составление отчетов по часам. Бла бла тут понятно, что разрабы про это думать вообще не должны в принципе.<br />
4. Последнее это собственно гхм, без клиента разработчик не работает. Если клиент не счастлив, у всех нет работы, денег, интересных задач, все это понимают. Тут по факту система похожая на работу с командой. ПМ знает о клиенте все &#8212; где он работал, кем, когда куда он ушел, как зовут его домашнюю собачку, где он отдыхал, какие у него личные KPI, какие возможности роста внутри компании, какие показатели успеха у проекта и как это на всех влияет. У нас были ситуации, когда мы не были в курсе о KPI менеджера, как итог неправильно расставили приоритеты в разработке пока он в отпуске чалился, оп ПМ на стороне клиента лишился полугодового бонуса, всем пока. А дальше естественно &#8212; развитие клиентов, с точки зрения бизнеса.<br />
Вообще по нашему опыту работы &#8212; хорошие отношения с клиентом дают намного больше чем конкретный успешный кейс продукта. Даже если продукт не запустился по черт знает каким причинам, разработчиков будут переносить из компании в компанию, если сформировались внятные отношения и то, что мы делали было охуенного качества.</p></blockquote>
<p>Фото взято со страницы Дмитрия вконтакте.</p>
]]></content:encoded>
			<wfw:commentRss>http://danilovonline.ru/%d1%87%d1%82%d0%be-%d0%b4%d0%be%d0%bb%d0%b6%d0%b5%d0%bd-%d1%83%d0%bc%d0%b5%d1%82%d1%8c-%d0%b8-%d0%b4%d0%b5%d0%bb%d0%b0%d1%82%d1%8c-%d0%bf%d0%bc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Exception’ы в PHP</title>
		<link>http://danilovonline.ru/exception%d1%8b-%d0%b2-php/</link>
		<comments>http://danilovonline.ru/exception%d1%8b-%d0%b2-php/#respond</comments>
		<pubDate>Thu, 03 Sep 2015 10:45:59 +0000</pubDate>
		<dc:creator><![CDATA[danilov]]></dc:creator>
				<category><![CDATA[Новости]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://danilovonline.ru/?p=1545</guid>
		<description><![CDATA[Если вы еще не используете исключения, то читать статью &#171;Правильное использование Exception’ов в PHP&#187; обязательно! А если уже используете &#8212; тем более. Вот содержание: Почему мы не умеем пользоваться эксепшенами Преимущества эксепшенов Контекстная логика Упрощение логики и архитектуры приложения Использование объектов Обработчик по умолчанию, логирование Невозможность не заметить и перепутать Прекращение ошибочной операции Когда следует [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Если вы еще не используете исключения, то читать статью <a href="http://habrahabr.ru/post/264417/">&#171;Правильное использование Exception’ов в PHP&#187;</a> обязательно! А если уже используете &#8212; тем более. Вот содержание:</p>
<pre>
Почему мы не умеем пользоваться эксепшенами
Преимущества эксепшенов
    Контекстная логика
    Упрощение логики и архитектуры приложения
    Использование объектов
    Обработчик по умолчанию, логирование
    Невозможность не заметить и перепутать
    Прекращение ошибочной операции
Когда следует вызывать эксепшены
Эксепшн vs возврат null
Технические эксепшены
Эксепшены утверждений
Изменение логики для избегания эксепшна
Собачки
</pre>
]]></content:encoded>
			<wfw:commentRss>http://danilovonline.ru/exception%d1%8b-%d0%b2-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Как писать руководство пользователя</title>
		<link>http://danilovonline.ru/%d0%ba%d0%b0%d0%ba-%d0%bf%d0%b8%d1%81%d0%b0%d1%82%d1%8c-%d1%80%d1%83%d0%ba%d0%be%d0%b2%d0%be%d0%b4%d1%81%d1%82%d0%b2%d0%be-%d0%bf%d0%be%d0%bb%d1%8c%d0%b7%d0%be%d0%b2%d0%b0%d1%82%d0%b5%d0%bb%d1%8f/</link>
		<comments>http://danilovonline.ru/%d0%ba%d0%b0%d0%ba-%d0%bf%d0%b8%d1%81%d0%b0%d1%82%d1%8c-%d1%80%d1%83%d0%ba%d0%be%d0%b2%d0%be%d0%b4%d1%81%d1%82%d0%b2%d0%be-%d0%bf%d0%be%d0%bb%d1%8c%d0%b7%d0%be%d0%b2%d0%b0%d1%82%d0%b5%d0%bb%d1%8f/#respond</comments>
		<pubDate>Tue, 01 Sep 2015 11:53:01 +0000</pubDate>
		<dc:creator><![CDATA[danilov]]></dc:creator>
				<category><![CDATA[Профессия]]></category>

		<guid isPermaLink="false">http://danilovonline.ru/?p=1542</guid>
		<description><![CDATA[В свое время, когда появилась необходимость(и желание) написать правильное руководство пользователя, пришлось перерыть кучу литературы по теме. В процессе очень помогла статья &#171;Как писать руководство пользователя?&#187;, в которой перебираются наверное все современные стандарты написания руководства. Для себя остановился на руководстве содержащие такие разделы: Аннотация Назначение документа Краткое изложение основной части документа Общие сведения о программе [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>В свое время, когда появилась необходимость(и желание) написать правильное руководство пользователя, пришлось перерыть кучу литературы по теме. В процессе очень помогла статья <a href="http://tdocs.su/1391">&#171;Как писать руководство пользователя?&#187;</a>, в которой перебираются наверное все современные стандарты написания руководства. Для себя остановился на руководстве содержащие такие разделы:</p>
<ul>
<li class="level1">
<div class="li">Аннотация</div>
<ul>
<li class="level2">
<div class="li">Назначение документа</div>
</li>
<li class="level2">
<div class="li">Краткое изложение основной части документа</div>
</li>
</ul>
</li>
<li class="level1">
<div class="li">Общие сведения о программе</div>
<ul>
<li class="level2">
<div class="li">Обозначение и наименование программы</div>
</li>
<li class="level2">
<div class="li">Сведения о назначении программы</div>
<ul>
<li class="level3">
<div class="li">Информация, достаточная для понимания функций программы и ее эксплуатации</div>
<ul>
<li class="level4">
<div class="li">Возможности программы</div>
</li>
<li class="level4">
<div class="li">Классы решаемых задач</div>
<ul>
<li class="level5">
<div class="li">Описание задач</div>
</li>
<li class="level5">
<div class="li">Методы решения задач</div>
</li>
</ul>
</li>
<li class="level4">
<div class="li">Функции, выполняемые программой</div>
</li>
</ul>
</li>
<li class="level3">
<div class="li">Описание основных характеристик и особенностей программы</div>
<ul>
<li class="level4">
<div class="li">Временные характеристики</div>
</li>
<li class="level4">
<div class="li">Режим работы</div>
</li>
<li class="level4">
<div class="li">Средства контроля правильности выполнения и самовосстанавливаемости программы</div>
</li>
</ul>
</li>
<li class="level3">
<div class="li">Ограничения области применения программы</div>
<ul>
<li class="level4">
<div class="li">Сведения о функциональных ограничениях на применение</div>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li class="level1">
<div class="li">Условия применения программы</div>
<ul>
<li class="level2">
<div class="li">Условия, необходимые для выполнения программы</div>
<ul>
<li class="level3">
<div class="li">Сведения о технических и программных средствах, обеспечивающих выполнение программы</div>
<ul>
<li class="level4">
<div class="li">Требования к техническим средствам</div>
<ul>
<li class="level5">
<div class="li">Типы ЭВМ, устройств, используемые при работе программы</div>
</li>
<li class="level5">
<div class="li">Минимальный и (или) максимальный состав аппаратурных и программных средств</div>
</li>
<li class="level5">
<div class="li">Требования к составу и параметрам периферийных устройств</div>
</li>
</ul>
</li>
<li class="level4">
<div class="li">Программное обеспечение, необходимое для функционирование программы</div>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li class="level1">
<div class="li">Описание логической структуры</div>
<ul>
<li class="level2">
<div class="li">Алгоритм программы</div>
</li>
<li class="level2">
<div class="li">Используемые методы</div>
</li>
<li class="level2">
<div class="li">Сведения о структуре программы</div>
</li>
<li class="level2">
<div class="li">Сведения о составных частях программы</div>
</li>
<li class="level2">
<div class="li">Сведения о связях с другими программами</div>
</li>
</ul>
</li>
<li class="level1">
<div class="li">Сведения о входных и выходных данных</div>
</li>
<li class="level1">
<div class="li">Настройка программы</div>
<ul>
<li class="level2">
<div class="li">Описание действий по настройке программы</div>
<ul>
<li class="level3">
<div class="li">Настройка на состав технических средств</div>
</li>
<li class="level3">
<div class="li">Выбор функций</div>
</li>
<li class="level3">
<div class="li">Поясняющие примеры</div>
</li>
</ul>
</li>
</ul>
</li>
<li class="level1">
<div class="li">Дополнительные возможности</div>
<ul>
<li class="level2">
<div class="li">Описание дополнительных функциональных возможностей программы</div>
</li>
<li class="level2">
<div class="li">Описание применения дополнительных функциональных возможностей программы</div>
</li>
</ul>
</li>
</ul>
<p>&nbsp;</p>
<p>Как получается на практике можно посмотреть, например, <a href="http://wiki.izhnet.ru/doku.php/services:tm">руководства пользователя &#171;Сервиса для телефонных продаж и опросов&#187;</a></p>
]]></content:encoded>
			<wfw:commentRss>http://danilovonline.ru/%d0%ba%d0%b0%d0%ba-%d0%bf%d0%b8%d1%81%d0%b0%d1%82%d1%8c-%d1%80%d1%83%d0%ba%d0%be%d0%b2%d0%be%d0%b4%d1%81%d1%82%d0%b2%d0%be-%d0%bf%d0%be%d0%bb%d1%8c%d0%b7%d0%be%d0%b2%d0%b0%d1%82%d0%b5%d0%bb%d1%8f/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Локализация ошибок работы с  формой в ZF2</title>
		<link>http://danilovonline.ru/localization_zf2_form_errors/</link>
		<comments>http://danilovonline.ru/localization_zf2_form_errors/#respond</comments>
		<pubDate>Fri, 14 Aug 2015 10:47:09 +0000</pubDate>
		<dc:creator><![CDATA[danilov]]></dc:creator>
				<category><![CDATA[Программирование]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[zf2]]></category>

		<guid isPermaLink="false">http://danilovonline.ru/?p=1537</guid>
		<description><![CDATA[Перевод ошибок в ZF2 делается так: //Application/Module.php //... use Zend\I18n\Translator\Translator; use Zend\Validator\AbstractValidator; class Module { public function onBootstrap(MvcEvent $e) //... $translator = new Translator(); $translator->addTranslationFile( 'phpArray', 'vendor/zendframework/zendframework/resources/languages/ru/Zend_Validate.php', 'default', 'ru_RU' ); AbstractValidator::setDefaultTranslator( new \Zend\Mvc\I18n\Translator($translator) ); //... Файл vendor/zendframework/zendframework/resources/languages/ru/Zend_Validate.php содержит перевод ошибок. По необходимости, недостающие переводы пишу сюда. Если в проекте используется captcha, то аналогично подключается файл [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Перевод ошибок в ZF2 делается так:</p>
<p><code lang="php"><br />
//Application/Module.php<br />
//...<br />
use Zend\I18n\Translator\Translator;<br />
use Zend\Validator\AbstractValidator;</p>
<p>class Module<br />
{<br />
    public function onBootstrap(MvcEvent $e)<br />
        //...<br />
        $translator = new Translator();<br />
        $translator->addTranslationFile(<br />
            'phpArray',<br />
            'vendor/zendframework/zendframework/resources/languages/ru/Zend_Validate.php',<br />
            'default',<br />
            'ru_RU'<br />
        );<br />
        AbstractValidator::setDefaultTranslator(<br />
            new \Zend\Mvc\I18n\Translator($translator)<br />
        );</p>
<p>        //...<br />
</code></p>
<p>Файл <em>vendor/zendframework/zendframework/resources/languages/ru/Zend_Validate.php</em> содержит перевод ошибок. По необходимости,  недостающие переводы пишу сюда.</p>
<p>Если в проекте используется captcha, то аналогично подключается файл Zend_Captcha.php, который лежит рядом.</p>
<p>Локализации всего приложения делается так:<br />
<code lang="php"><br />
//config/autoload/global.php<br />
//...<br />
return array(<br />
//...<br />
    'translator' => array(<br />
        'locale' => 'ru_RU'<br />
    ),<br />
//...<br />
);<br />
</code></p>
<p>update: например можно сразу добавить<br />
<code lang="php"><br />
  ...<br />
  "Captcha value is wrong" => "Неверный код с картинки"<br />
  ...<br />
</code></p>
]]></content:encoded>
			<wfw:commentRss>http://danilovonline.ru/localization_zf2_form_errors/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Логирование в php проектах</title>
		<link>http://danilovonline.ru/%d0%bb%d0%be%d0%b3%d0%b8%d1%80%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5-%d0%b2-php-%d0%bf%d1%80%d0%be%d0%b5%d0%ba%d1%82%d0%b0%d1%85/</link>
		<comments>http://danilovonline.ru/%d0%bb%d0%be%d0%b3%d0%b8%d1%80%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5-%d0%b2-php-%d0%bf%d1%80%d0%be%d0%b5%d0%ba%d1%82%d0%b0%d1%85/#respond</comments>
		<pubDate>Wed, 25 Mar 2015 12:31:38 +0000</pubDate>
		<dc:creator><![CDATA[danilov]]></dc:creator>
				<category><![CDATA[Программирование]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://danilovonline.ru/?p=1530</guid>
		<description><![CDATA[Начинаю выкладывать на github инструменты, который использую в своих проектах. Первым выложил sLog &#8212; простой способ добавить логирование в свой php-проект. Возможности несколько способов логирования(syslog, file, mail); несколько уровней важностей сообщений(Alert, Error, Debug, &#8230;); логеры настраиваются независимо друг от друга возможность быстро добавить свой логер Логеры доступные &#171;из коробки&#187; syslog &#8212; запись сообщения в syslog file [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Начинаю выкладывать на github инструменты, который использую в своих проектах. </p>
<p>Первым выложил <a title="sLog" href="https://github.com/Danilovonline/sLog">sLog</a> &#8212; простой способ добавить логирование в свой php-проект.</p>
<p><strong>Возможности</strong></p>
<ul>
<li>несколько способов логирования(syslog, file, mail);</li>
<li>несколько уровней важностей сообщений(Alert, Error, Debug, &#8230;);</li>
<li>логеры настраиваются независимо друг от друга</li>
<li>возможность быстро добавить свой логер</li>
</ul>
<p><strong>Логеры доступные &#171;из коробки&#187;</strong></p>
<ul>
<li>syslog &#8212; запись сообщения в syslog</li>
<li>file &#8212; запись сообщения в текстовый файл</li>
<li>mail &#8212; отправка сообщения по эл. почте</li>
</ul>
<p>Подробнее смотрите на <a href="https://github.com/Danilovonline/sLog">GitHub</a></p>
]]></content:encoded>
			<wfw:commentRss>http://danilovonline.ru/%d0%bb%d0%be%d0%b3%d0%b8%d1%80%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5-%d0%b2-php-%d0%bf%d1%80%d0%be%d0%b5%d0%ba%d1%82%d0%b0%d1%85/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Вопросы на собеседовании по JavaScript. DOM</title>
		<link>http://danilovonline.ru/%d0%b2%d0%be%d0%bf%d1%80%d0%be%d1%81%d1%8b-%d0%bd%d0%b0-%d1%81%d0%be%d0%b1%d0%b5%d1%81%d0%b5%d0%b4%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d0%b8-%d0%bf%d0%be-javascript-dom/</link>
		<comments>http://danilovonline.ru/%d0%b2%d0%be%d0%bf%d1%80%d0%be%d1%81%d1%8b-%d0%bd%d0%b0-%d1%81%d0%be%d0%b1%d0%b5%d1%81%d0%b5%d0%b4%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d0%b8-%d0%bf%d0%be-javascript-dom/#respond</comments>
		<pubDate>Thu, 28 Aug 2014 05:49:19 +0000</pubDate>
		<dc:creator><![CDATA[danilov]]></dc:creator>
				<category><![CDATA[Закладки]]></category>
		<category><![CDATA[Программирование]]></category>
		<category><![CDATA[js]]></category>

		<guid isPermaLink="false">http://danilovonline.ru/?p=1524</guid>
		<description><![CDATA[Вопросы на собеседовании по JavaScript. DOM]]></description>
				<content:encoded><![CDATA[<p><a href="http://zlob.in/2014/06/voprosy-na-sobesedovanii-javascript-dom/">Вопросы на собеседовании по JavaScript. DOM</a></p>
]]></content:encoded>
			<wfw:commentRss>http://danilovonline.ru/%d0%b2%d0%be%d0%bf%d1%80%d0%be%d1%81%d1%8b-%d0%bd%d0%b0-%d1%81%d0%be%d0%b1%d0%b5%d1%81%d0%b5%d0%b4%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d0%b8-%d0%bf%d0%be-javascript-dom/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dependency Injection</title>
		<link>http://danilovonline.ru/dependency-injection/</link>
		<comments>http://danilovonline.ru/dependency-injection/#respond</comments>
		<pubDate>Tue, 26 Aug 2014 05:47:35 +0000</pubDate>
		<dc:creator><![CDATA[danilov]]></dc:creator>
				<category><![CDATA[Программирование]]></category>

		<guid isPermaLink="false">http://danilovonline.ru/?p=1515</guid>
		<description><![CDATA[Википедия: Инверсия управления (англ. Inversion of Control, IoC) — важный принцип объектно-ориентированного программирования, используемый для уменьшения связанности в компьютерных программах. Одной из реализаций IoC является внедрение зависимостей (англ. dependency injection). Внедрение зависимости используется во многих фреймворках, которые называются IoC-контейнерами. Задачи DI: Ослабить зависимости Упрощение тестирования Самое понятный разбор темы я увидел в слайдах: Dependency injection [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><a href="https://ru.wikipedia.org/wiki/IoC">Википедия:</a></p>
<blockquote><p><strong>Инверсия управления</strong> (англ. Inversion of Control, IoC) — важный принцип объектно-ориентированного программирования, используемый для уменьшения связанности в компьютерных программах.<br />
Одной из реализаций IoC является внедрение зависимостей (англ. dependency injection). Внедрение зависимости используется во многих фреймворках, которые называются IoC-контейнерами.</p></blockquote>
<p>Задачи DI:</p>
<ol>
<li>Ослабить зависимости</li>
<li>Упрощение тестирования</li>
</ol>
<p>Самое понятный разбор темы я увидел в слайдах:</p>
<p><iframe style="border: 1px solid #CCC; border-width: 1px; margin-bottom: 5px; max-width: 100%;" src="//www.slideshare.net/slideshow/embed_code/9925453" width="427" height="356" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" allowfullscreen="allowfullscreen"> </iframe></p>
<div style="margin-bottom: 5px;"><strong> <a title="Dependency injection in PHP 5.3/5.4" href="https://www.slideshare.net/fabpot/dependency-injection-in-php-5354" target="_blank">Dependency injection in PHP 5.3/5.4</a> </strong> from <strong><a href="http://www.slideshare.net/fabpot" target="_blank">Fabien Potencier</a></strong></div>
<p>&nbsp;</p>
<p><strong>Ссылки по теме:</strong></p>
<ul>
<li><a href="http://yugeon-dev.blogspot.ru/2010/07/inversion-of-control-containers-and_21.html">Вольный перевод статьи Мартина Фаулера &#171;Inversion of Control Containers and the Dependency Injection pattern&#187;</a></li>
<li>Вики: &#171;<a href="https://ru.wikipedia.org/wiki/%D0%98%D0%BD%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D1%8F_%D1%83%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F">Инверсия управления</a>&#171;</li>
<li>Вики: &#171;<a href="https://ru.wikipedia.org/wiki/%D0%92%D0%BD%D0%B5%D0%B4%D1%80%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B7%D0%B0%D0%B2%D0%B8%D1%81%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D0%B8">Внедрение зависимости</a>&#171;</li>
<li><a href="http://habrahabr.ru/post/121976/">Лямбда-функции и замыкания</a></li>
<li><a href="http://zlob.in/2013/12/chto-takoe-dependency-injection-vnedrenie-zavisimostej/">Что такое Dependency Injection (внедрение зависимостей)?</a></li>
<li>Серия статей &#171;<a href="http://www.apofig.com/2010/08/dependency-injection-inversion-of.html">Что такое Dependency injection, Inversion of Control и почему это возникло</a>&#171;</li>
<li>Комменты из статьи &#171;<a href="http://habrahabr.ru/post/132084/">IoC на PHP</a>&#171;</li>
<li><a href="http://habrahabr.ru/post/166287/">Dependency Injection: анти-паттерны</a></li>
<li><a href="https://www.instapaper.com/read/505992072">PHP Dependency Injection Container Performance Benchmarks</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://danilovonline.ru/dependency-injection/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Logout from &#171;AuthType Basic&#187;</title>
		<link>http://danilovonline.ru/logout-from-authtype-basic/</link>
		<comments>http://danilovonline.ru/logout-from-authtype-basic/#respond</comments>
		<pubDate>Wed, 20 Aug 2014 06:44:17 +0000</pubDate>
		<dc:creator><![CDATA[danilov]]></dc:creator>
				<category><![CDATA[Программирование]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://danilovonline.ru/?p=1511</guid>
		<description><![CDATA[Закон Янга: Все великие открытия делаются по ошибке. upd: это решение имеет большой недостаток &#8212; после выхода придется несколько раз ввести пароль. Правильное решение использовать ajax-запрос. Вот работающее решение. Плюс к этому я зачищаю сессию.]]></description>
				<content:encoded><![CDATA[<blockquote><p>Закон Янга:<br />
Все великие открытия делаются по ошибке.</p></blockquote>
<p><script src="https://gist.github.com/Danilovonline/2b0d724fc3d30d3f77f9.js"></script></p>
<p>upd: это решение имеет большой недостаток &#8212; после выхода придется несколько раз ввести пароль. Правильное решение использовать ajax-запрос. Вот <a href="http://stackoverflow.com/a/14329930/2666853">работающее решение</a>. Плюс к этому я зачищаю сессию.</p>
]]></content:encoded>
			<wfw:commentRss>http://danilovonline.ru/logout-from-authtype-basic/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>10 самых распространённых ошибок при программировании на JavaScript</title>
		<link>http://danilovonline.ru/10-%d1%81%d0%b0%d0%bc%d1%8b%d1%85-%d1%80%d0%b0%d1%81%d0%bf%d1%80%d0%be%d1%81%d1%82%d1%80%d0%b0%d0%bd%d1%91%d0%bd%d0%bd%d1%8b%d1%85-%d0%be%d1%88%d0%b8%d0%b1%d0%be%d0%ba-%d0%bf%d1%80%d0%b8-%d0%bf%d1%80/</link>
		<comments>http://danilovonline.ru/10-%d1%81%d0%b0%d0%bc%d1%8b%d1%85-%d1%80%d0%b0%d1%81%d0%bf%d1%80%d0%be%d1%81%d1%82%d1%80%d0%b0%d0%bd%d1%91%d0%bd%d0%bd%d1%8b%d1%85-%d0%be%d1%88%d0%b8%d0%b1%d0%be%d0%ba-%d0%bf%d1%80%d0%b8-%d0%bf%d1%80/#respond</comments>
		<pubDate>Tue, 19 Aug 2014 07:39:52 +0000</pubDate>
		<dc:creator><![CDATA[danilov]]></dc:creator>
				<category><![CDATA[Программирование]]></category>

		<guid isPermaLink="false">http://danilovonline.ru/?p=1502</guid>
		<description><![CDATA[В добавку к записи &#171;6 частых ошибок начинающих JavaScript-программистов&#187; статья &#171;10 самых распространённых ошибок при программировании на JavaScript&#187;]]></description>
				<content:encoded><![CDATA[<p>В добавку к записи <a href="/6-частых-ошибок-начинающих-javascript-программ/">&#171;6 частых ошибок начинающих JavaScript-программистов&#187;</a> статья <a href="http://habrahabr.ru/company/mailru/blog/233553/">&#171;10 самых распространённых ошибок при программировании на JavaScript&#187;</a></p>
]]></content:encoded>
			<wfw:commentRss>http://danilovonline.ru/10-%d1%81%d0%b0%d0%bc%d1%8b%d1%85-%d1%80%d0%b0%d1%81%d0%bf%d1%80%d0%be%d1%81%d1%82%d1%80%d0%b0%d0%bd%d1%91%d0%bd%d0%bd%d1%8b%d1%85-%d0%be%d1%88%d0%b8%d0%b1%d0%be%d0%ba-%d0%bf%d1%80%d0%b8-%d0%bf%d1%80/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Руководство по кроссдоменному AJAX`у</title>
		<link>http://danilovonline.ru/%d1%80%d1%83%d0%ba%d0%be%d0%b2%d0%be%d0%b4%d1%81%d1%82%d0%b2%d0%be-%d0%bf%d0%be-%d0%ba%d1%80%d0%be%d1%81%d1%81%d0%b4%d0%be%d0%bc%d0%b5%d0%bd%d0%bd%d0%be%d0%bc%d1%83-ajax%d1%83/</link>
		<comments>http://danilovonline.ru/%d1%80%d1%83%d0%ba%d0%be%d0%b2%d0%be%d0%b4%d1%81%d1%82%d0%b2%d0%be-%d0%bf%d0%be-%d0%ba%d1%80%d0%be%d1%81%d1%81%d0%b4%d0%be%d0%bc%d0%b5%d0%bd%d0%bd%d0%be%d0%bc%d1%83-ajax%d1%83/#comments</comments>
		<pubDate>Sun, 16 Dec 2012 12:04:21 +0000</pubDate>
		<dc:creator><![CDATA[danilov]]></dc:creator>
				<category><![CDATA[Программирование]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[переводы]]></category>

		<guid isPermaLink="false">http://danilovonline.ru/?p=1395</guid>
		<description><![CDATA[Описание нескольких способов реализации кроссдоменного AJAXa(CORS, JSONP, frame, api proxy, window.postMessage). Теория + примеры.]]></description>
				<content:encoded><![CDATA[<p><i>Это вольный перевод статьи <a href="http://www.d-mueller.de/blog/cross-domain-ajax-guide/" title="Cross Domain AJAX Guide">Cross Domain AJAX Guide</a></i><br />
Ни для кого не секрет, что AJAX-запросы возможны только если совпадают порты, протоколы и домены отправителя запроса и его получателя. Это означает, что следующие запросы не будут работать:</p>
<ul>
<li>запрос к <span style="background:#FFCCCC"><i>http<b>s</b>://foo.bar/target.php</i></span> от <span style="background:#CCFFCC"><i>http://foo.bar/source.php</i></span></li>
<li>запрос к <span style="background:#FFCCCC"><i>http://<b>sub.</b>foo.bar</i></span> от <span style="background:#CCFFCC"><i>http://foo.bar</i></span></li>
<li>запрос к <span style="background:#FFCCCC"><i>http://foo.bar<b>:5000</b></i></span> от <span style="background:#CCFFCC"><i>http://foo.bar</i></span></li>
</ul>
<p><img src="http://danilovonline.ru/wp-content/images/cross-domain-ajax/remote-fail.png" alt="" title="Ошибка AJAX" class="aligncenter size-full wp-image-1175" /><br />
<span id="more-1395"></span> </p>
<h3>CORS</h3>
<p>CORS(Cross-origin resource sharing) &#8212; технология современных браузеров, которая позволяет предоставить веб-странице доступ к ресурсам другого домена(<a href="http://ru.wikipedia.org/wiki/Cross-origin_resource_sharing">wiki</a>). Должна поддерживаться сервером.<br />
Если мы возьмем jQuery, запрашивающая сторона будет выглядеть следующим образом:<br />
<code lang="javascript"><br />
$.ajax({<br />
    type: 'POST',<br />
    url: 'http://d1303.de/remote/cors.php',<br />
    crossDomain: true,<br />
    data: "my_request_is=foo",<br />
    dataType: 'json',<br />
    success: function(responseData, textStatus, jqXHR)<br />
    {<br />
        console.log(responseData);<br />
    },<br />
    error: function (responseData, textStatus, errorThrown)<br />
    {<br />
        console.warn(responseData, textStatus, errorThrown);<br />
        alert('CORS failed - ' + textStatus);<br />
    }<br />
});<br />
</code><br />
Обратите внимание на <b>crossDomain: true</b>. Но будьте осторожны! Это будет работать только  если сервер посылает соответствующие заголовки для CORS.<br />
<code lang="php"><br />
header('Access-Control-Allow-Origin: *');<br />
header('Access-Control-Allow-Methods: POST, GET, OPTIONS');<br />
header('Access-Control-Max-Age: 1000');<br />
header('Access-Control-Allow-Headers: Content-Type');</p>
<p>echo json_encode(array("your_request_was" => $_POST['my_request_is']));<br />
</code><br />
Здесь мы принимаем запросы от каждого источника для методов запроса POST, GET и OPTIONS. Для более подробной информации относительно различных параметров смотри <a href="http://www.w3.org/TR/2008/WD-access-control-20080912/#syntax">этот документ W3C</a>. Например, вы можете принимать запросы следующим образом:<br />
<code lang="php"><br />
switch ($_SERVER['HTTP_ORIGIN']) {<br />
    case 'http://from.com':<br />
    case 'https://from.com':<br />
        header('Access-Control-Allow-Origin: '.$_SERVER['HTTP_ORIGIN']);<br />
        header('Access-Control-Allow-Methods: POST, GET, OPTIONS');<br />
        header('Access-Control-Max-Age: 1000');<br />
        header('Access-Control-Allow-Headers: Content-Type');</p>
<p>        echo json_encode(array("your_request_was" => $_POST['my_request_is']));</p>
<p>    break;<br />
}<br />
</code><br />
Подробнее о серверной реализации CORS читайте на <a href="http://enable-cors.org/">enable-cors.org</a>.<br />
<img src="http://danilovonline.ru/wp-content/images/cross-domain-ajax/cors.png" alt="" title="CORS" class="aligncenter size-full wp-image-1175" /><br />
Превосходная поддержка браузерами(IE >= 8, Firefox >= 3.5, Chrome >= 3).</p>
<h3>JSONP</h3>
<p>Давайте рассмотрим следующий способ реализации кроссдоменного AJAX: JSONP. Как CORS, JSONP должен поддерживаться сервером. Проще говоря, клиент называет серверу функцию обратного вызова для ответа. Сервер затем &#171;заворачивает&#187; ответ в эту функцию. Пример? Пример!<br />
<code lang="javascript"><br />
$.ajax({<br />
    type: 'GET',<br />
    url: 'http://d1303.de/remote/jsonp.php',<br />
    data: "my_request_is=foo",<br />
    dataType: 'jsonp',<br />
    success: function(responseData, textStatus, jqXHR)<br />
    {<br />
        console.log("the response is", responseData);<br />
    },<br />
    error: function (responseData, textStatus, errorThrown)<br />
    {<br />
        console.warn(responseData, textStatus, errorThrown);<br />
        alert('JSONP failed - ' + textStatus);<br />
    }<br />
});<br />
</code><br />
Взгляните как выглядит запрос:<br />
<img src="http://danilovonline.ru/wp-content/images/cross-domain-ajax/JSONP-response.png" alt="" title="JSONP" class="aligncenter size-full wp-image-1175" /><br />
jQuery автоматически добавляет не кэшыруемый параметр с отметкой времени и – более интересно – функцию обратного вызова. На стороне сервера мы теперь можем сделать следующее:<br />
<code lang="php"><br />
$callback = $_GET['callback'];<br />
$response = json_encode(array("your_request_was" => $_GET['my_request_is']));</p>
<p>echo $callback . "(" . $response . ")";<br />
</code><br />
Теперь ответ сервера выглядит как то так:<br />
jQuery теперь может вызвать функцию обратного вызова для &#171;успешного&#187; ответа. Вы также можете изменить имя обратной функции, читайте <a href="http://api.jquery.com/jQuery.ajax/">$.ajax docs</a></p>
<h3>iframe</h3>
<p>Это больше похоже на хак, чем на «чистое» решение. Этот подход заключается в том, чтобы поместить скрытый iframe в вашу страницу и затем создать скрытую форму, которая отправляется на iframe. Таким образом возможно обойти проблему кроссдоменности.<br />
<b>Функция:</b><br />
<code lang="javascript"><br />
function postIframe(target_url, method, params)<br />
{<br />
    //Add iframe<br />
    var iframe = document.createElement("iframe");<br />
    document.body.appendChild(iframe);<br />
    iframe.style.display = "none";</p>
<p>    //Give the frame a name<br />
    var frame_name = "frame_name" + (new Date).getTime();<br />
    iframe.contentWindow.name = frame_name;</p>
<p>    //build the form<br />
    var form = document.createElement("form");<br />
    form.target = frame_name;<br />
    form.action = target_url;<br />
    form.method = method;</p>
<p>    //loop through all parameters<br />
    for (var key in params)<br />
    {<br />
        if (params.hasOwnProperty(key))<br />
        {<br />
            var input = document.createElement("input");<br />
            input.type = "hidden";<br />
            input.name = key;<br />
            input.value = params[key];<br />
            form.appendChild(input);<br />
        }<br />
    }</p>
<p>    document.body.appendChild(form);<br />
    form.submit();<br />
}<br />
</code><br />
Посмотрите, мы засунули на страницу скрытый iframe. После это мы создали форму, содержащую все необходимые нам параметры в скрытых полях. В конце мы отправили форму. Теперь вы можете увидеть такой запрос:<br />
<code lang="javascript"><br />
var obj = { my_request_is: "foo", bar: "baz" };<br />
postIframe("http://d1303.de/remote/iframe.php", "POST", obj);<br />
</code><br />
Однако, есть один большой недостаток: не существует простого способа получить ответ от сервера на наш запрос, это односторонний запрос. Если вы действительно хотите использовать этот подход, вот <a href="http://softwareas.com/cross-domain-communication-with-iframes">более подробная информация</a>.</p>
<h3>Другие подходы</h3>
<p>Несмотря на то, что CORS и JSONP являются наиболее популярными методами кроссдоменного AJAXа, есть другие способы.</p>
<ul>
<li>Взгляните на относительно новый <a href="https://developer.mozilla.org/en-US/docs/DOM/window.postMessage">window.postMessage</a>(фича HTML5) &#8212; примеры <a href="http://davidwalsh.name/window-postmessage">здесь</a> и <a href="http://ejohn.org/blog/cross-window-messaging/">здесь</a>.</li>
<li>Другой классический подход, который обычно используется для такого рода проблем, заключается в расположении скрипта(например, PHP) на вашем сервера, который и будет работать с вашими AJAX-скриптами. Это не будет проблемой, потому что запрашивающая и отвечающая стороны находятся в одном домене. Смотрите отличную статью, &#171;<a href="http://gonzalo123.com/2012/08/13/building-a-simple-api-proxy-server-with-php/">Создание простого API прокси-сервера на PHP</a>&#171;.<br />
]]></content:encoded>
			<wfw:commentRss>http://danilovonline.ru/%d1%80%d1%83%d0%ba%d0%be%d0%b2%d0%be%d0%b4%d1%81%d1%82%d0%b2%d0%be-%d0%bf%d0%be-%d0%ba%d1%80%d0%be%d1%81%d1%81%d0%b4%d0%be%d0%bc%d0%b5%d0%bd%d0%bd%d0%be%d0%bc%d1%83-ajax%d1%83/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>UIC 2012</title>
		<link>http://danilovonline.ru/uic-2012/</link>
		<comments>http://danilovonline.ru/uic-2012/#comments</comments>
		<pubDate>Sat, 24 Nov 2012 21:03:01 +0000</pubDate>
		<dc:creator><![CDATA[danilov]]></dc:creator>
				<category><![CDATA[Мысли]]></category>
		<category><![CDATA[Новости]]></category>

		<guid isPermaLink="false">http://danilovonline.ru/?p=1385</guid>
		<description><![CDATA[В целом конференция UIC2012 понравилась. Пройдя регистрацию, в первый день был удивлен обилием школьников(возможно это первокурсники), которых группами по несколько человек, почти за ручку, привели &#171;воспитатели&#187;. Вроде как конференция для бизнеса, а тут такое. Первый доклад был от гугла(честь отстаивала Линара Мулукова-Бозиева). Кстати программа доступна на официальном сайте UIC2012. Понравилась презентация, а вернее её исполнение(красиво [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>В целом конференция <a href="http://www.ru18.ru/">UIC2012</a> понравилась. Пройдя регистрацию, в первый день был удивлен обилием школьников(возможно это первокурсники), которых группами по несколько человек, почти за ручку, привели &#171;воспитатели&#187;. Вроде как конференция для бизнеса, а тут такое.<span id="more-1385"></span></p>
<p>Первый доклад был от гугла(честь отстаивала Линара Мулукова-Бозиева). Кстати программа доступна на официальном сайте <a href="http://www.ru18.ru/">UIC2012</a>. Понравилась презентация, а вернее её исполнение(красиво &#8212; все летает, крутится, вертится). Были выделены тенденции в  Интеренет, на которые гугл заостряет внимание. Запомнил только &#171;мобильность&#187;. </p>
<p>Второй и третий доклады &#8212; немного истории и немного о текущем состоянии облачных сервисов в России.</p>
<p>Всеми ожидаемая мини-секция &#171;трех толстяков&#187; была феерична. Н.Н. Непейвода &#171;очаравал&#187; зал. Я теперь знаю с кого был слизан Шелдон из &#171;Теории большого взрыва&#187; &#8212; &#171;Я не стал включать описания в свой доклад, потому что мне казалось, что это элементарные вещи&#187; ;))) Обсуждали былое, когда Интернета было мало и он был очень медленен. Немного рассказали о недочетах в современных программах(я же программист и мне запомнилось больше о этом). В частности, поговорили о современных интерфейсах, которые не хотят понять пользователя и помочь ему, загоняя его в свои условности(шаг влево вправо &#8212; расстрел), хотя современное ПО вполне может быть более человечным.</p>
<p>На круглом столе ижевских провайдеров были представители дерзкого Марка, помпезного ЭрТелкома и сухо-официальных Ростелекома, Вымпелкома и Теле2. Провайдеры рассказали про достижения в текущем году(все напирают на качество услуг) и планы на будущее. Например, 4G у сотовых операторов в Ижевске появится в начале 2013 года, а у Ростелекома в 2014. По-моему А. Ермалаев в мини-секции трех толстяков(а может где то в другом месте, а может и не он &#8212; не помню уже) высказал мнение, что интернет-провайдеры в Ижевcке в текущий момент похожи на когда то &#171;крутых&#187; продавцов соли и сахара, рынок насыщен и отличия только лишь в цвете и форме упаковки. Уже продавая один инет многого не добьешься.</p>
<p>Дальше на UIC212 выступал от Д. Завалишина &#8212; первый доклад, который был ценен с практической точки зрения, хоть и &#171;галопом по Европам&#187;.</p>
<p>Доклад зам.министра по информатизации А. Прокошева меня удивил. А конкретнее удивил сам Прокошев &#8212; невероятная осведомленность в вопросах в которых она и должна быть. Видимо я совсем плохого мнения о наших чиновниках. Рассказывал про портал гос.услуг.</p>
<p>Дальше был странный доклад, но интересный, про полит технологии в Интернет. Про способы манипуляции общественным мнением и все такое&#8230;</p>
<p>Потом на UIC2012 был еще один удивительный докладчик А. Алексеев, представитель Лаборатории Касперского. Нужно заметить, что почти все докладчики на UIC2012 выступали на очень высоком уровне. Рассказывал  про угрозы безопасности.</p>
<p>Дальше еще один круглый стол на тему &#171;Преступности в Интернет&#187;. Начали с рассусоливании sms-мошенничества. Но основное время потратили на обсуждении проблемы интернет-зависимости у детей и подростков. Блин, а ведь это действительно огромная проблема.</p>
<p>Второй день был намного полезен с практической точки зрения. Первые два доклада про интернет-магазины я пропустил &#8212; не интересно. </p>
<p>В докладе про Битрикс24 рассказали про социальный интранет. Это когда добавиляют социальную составляющую(общение, обсуждение, лайки) в рабочий процесс в корпоративном Интранете. Тема интересная, я тоже не раз задумывался об &#171;осолизации&#187; нашего конторского Интранета.</p>
<p>Достаточно интересен был доклад про использования Яндекс.Директ, наверное потому что я мало шарю в Интернет-рекламе.</p>
<p>А вот кто шарит в SEO, дык это Д.Брусилов. Если первый день на UIC2012 &#171;персоной дня&#187; был Н.Н. Непейвода, то во второй  день &#8212; это Д. Брусилов. Очень интересный доклад, очень интересная личность. Забить на SEO и писать, писать, писать, создавать/расширять свое &#171;виртуальное тело&#187; &#8212; вот девиз доклада.</p>
<p>Два следующих докладчика подкупили своей простотой и искренностью. С. Прокофьев рассказал как делаются качественные сайты в короткие сроки и за относительно маленький бюджет(но даже этот бюджет поразил &#8212; чем то мы тут не тем занимаемся;))) ). М. Шелунцов рассказал про микросайты, немного про ценообразования и отношения с заказчиком.</p>
<p>Еще был доклад про облачную АТС. Два докладчики представил доклад в виде некоторого шоу(помпезность ЭрТелеком, ёптить). В целом доклад интересен, если ты ничего не знаешь про виртуальную АТС. Мой же интерес был в другом, а именно, как это сделано у конкурентов, т.к. мы в ЛайнерТелеком тоже предлагаем эту услугу(и мне кажется, что у нас виртуальная АТС круче).</p>
<p>Подытожив скажу. что посещением UIC2012 доволен. Услышал много интересного. Почти все докладчики выступили очень достойно. Спасибо Пиком за конференцию. Надеюсь, что через год будет не хуже&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://danilovonline.ru/uic-2012/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>6 частых ошибок начинающих JavaScript-программистов</title>
		<link>http://danilovonline.ru/6-%d1%87%d0%b0%d1%81%d1%82%d1%8b%d1%85-%d0%be%d1%88%d0%b8%d0%b1%d0%be%d0%ba-%d0%bd%d0%b0%d1%87%d0%b8%d0%bd%d0%b0%d1%8e%d1%89%d0%b8%d1%85-javascript-%d0%bf%d1%80%d0%be%d0%b3%d1%80%d0%b0%d0%bc%d0%bc/</link>
		<comments>http://danilovonline.ru/6-%d1%87%d0%b0%d1%81%d1%82%d1%8b%d1%85-%d0%be%d1%88%d0%b8%d0%b1%d0%be%d0%ba-%d0%bd%d0%b0%d1%87%d0%b8%d0%bd%d0%b0%d1%8e%d1%89%d0%b8%d1%85-javascript-%d0%bf%d1%80%d0%be%d0%b3%d1%80%d0%b0%d0%bc%d0%bc/#comments</comments>
		<pubDate>Wed, 14 Nov 2012 18:34:48 +0000</pubDate>
		<dc:creator><![CDATA[danilov]]></dc:creator>
				<category><![CDATA[Программирование]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[переводы]]></category>

		<guid isPermaLink="false">http://danilovonline.ru/?p=1337</guid>
		<description><![CDATA[]]></description>
				<content:encoded><![CDATA[<p><span class="wp-media-buttons-icon"> </p>
]]></content:encoded>
			<wfw:commentRss>http://danilovonline.ru/6-%d1%87%d0%b0%d1%81%d1%82%d1%8b%d1%85-%d0%be%d1%88%d0%b8%d0%b1%d0%be%d0%ba-%d0%bd%d0%b0%d1%87%d0%b8%d0%bd%d0%b0%d1%8e%d1%89%d0%b8%d1%85-javascript-%d0%bf%d1%80%d0%be%d0%b3%d1%80%d0%b0%d0%bc%d0%bc/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Observer</title>
		<link>http://danilovonline.ru/observer/</link>
		<comments>http://danilovonline.ru/observer/#respond</comments>
		<pubDate>Thu, 04 Oct 2012 19:41:22 +0000</pubDate>
		<dc:creator><![CDATA[danilov]]></dc:creator>
				<category><![CDATA[Программирование]]></category>
		<category><![CDATA[js]]></category>

		<guid isPermaLink="false">http://danilovonline.ru/?p=1332</guid>
		<description><![CDATA[Я уже писал о шаблоне &#171;Observer&#187;. Сейчас выкладываю свою &#171;переделку&#187; на git. Тут простой пример использования.]]></description>
				<content:encoded><![CDATA[<p>Я уже <a href="http://danilovonline.ru/?p=1102">писал</a> о шаблоне &#171;Observer&#187;. Сейчас выкладываю свою &#171;переделку&#187; на <a href="https://github.com/Danilovonline/JavaScript/tree/master/Observer">git</a>. <a href="http://danilovonline.ru/code/Observer/example.html">Тут</a> простой пример использования.</p>
]]></content:encoded>
			<wfw:commentRss>http://danilovonline.ru/observer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Мысли о программировании</title>
		<link>http://danilovonline.ru/%d0%bc%d1%8b%d1%81%d0%bb%d0%b8-%d0%be-%d0%bf%d1%80%d0%be%d0%b3%d1%80%d0%b0%d0%bc%d0%bc%d0%b8%d1%80%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d0%b8/</link>
		<comments>http://danilovonline.ru/%d0%bc%d1%8b%d1%81%d0%bb%d0%b8-%d0%be-%d0%bf%d1%80%d0%be%d0%b3%d1%80%d0%b0%d0%bc%d0%bc%d0%b8%d1%80%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d0%b8/#respond</comments>
		<pubDate>Tue, 14 Aug 2012 18:02:19 +0000</pubDate>
		<dc:creator><![CDATA[danilov]]></dc:creator>
				<category><![CDATA[Мысли]]></category>
		<category><![CDATA[Программирование]]></category>

		<guid isPermaLink="false">http://danilovonline.ru/?p=1324</guid>
		<description><![CDATA[Это вольный пересказ &#171;Thoughts on being a programmer&#187;. Не будь мудаком. Простой код сложно писать. Изысканно простой код изысканно сложно писать. То что это очень легко понять, не значит, что писать это было также просто. В самом деле, чем легче читается, тем сложнее пишется. Есть множество способов сделать что-то. Первый способ, о котором вы думаете, [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Это вольный пересказ <a title="Thoughts on being a programmer" href="http://www.yelsew.com/thoughts.html">&#171;Thoughts on being a programmer&#187;</a>.</p>
<ul>
<li>Не будь мудаком.</li>
<li>Простой код сложно писать.</li>
<li>Изысканно простой код изысканно сложно писать.</li>
<li>То что это очень легко понять, не значит, что писать это было также просто.</li>
<li>В самом деле, чем легче читается, тем сложнее пишется.</li>
<li>Есть множество способов сделать что-то.</li>
<li>Первый способ, о котором вы думаете, вряд ли будет лучшим.</li>
<li>Всегда есть много возможностей для улучшения &#8212; в коде, в своих способностях, в вас.</li>
<li>Если вы думаете, что лучше вам уже не стать, то скорее всего так оно и будет.</li>
<li>Научись желать успеха больше, чем вы боитесь неудачи.</li>
<li>Вы постареете тогда, когда больше не сможете обучаться новым трюкам.</li>
<li>Всегда делайте резервную копию перед &#171;читкой&#187; кода.</li>
<li>Иногда быть мудаком &#8212; это нормально. Главное, что бы это не стало привычкой.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://danilovonline.ru/%d0%bc%d1%8b%d1%81%d0%bb%d0%b8-%d0%be-%d0%bf%d1%80%d0%be%d0%b3%d1%80%d0%b0%d0%bc%d0%bc%d0%b8%d1%80%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d0%b8/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
