<?xml version="1.0" encoding="UTF-8"?>

<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" >

  <channel>
    <title><![CDATA[Комментарии / Профиль psdcoder]]></title>
    <link>https://habr.com/ru/users/psdcoder/comments/</link>
    <description><![CDATA[Хабр: комментарии пользователя psdcoder]]></description>
    <language>ru</language>
    <managingEditor>editor@habr.com</managingEditor>
    <generator>habr.com</generator>
    <pubDate>Sat, 25 Apr 2026 09:29:44 GMT</pubDate>
    
    
      <image>
        <link>https://habr.com/ru/</link>
        <url>https://habrastorage.org/webt/ym/el/wk/ymelwk3zy1gawz4nkejl_-ammtc.png</url>
        <title>Хабр</title>
      </image>
    

    
      

      
        
  
    <item>
      <title>29.04.2017 18:50:50 </title>
      <guid isPermaLink="true">https://habr.com/ru/articles/327494/#comment_10197744</guid>
      <link>https://habr.com/ru/articles/327494/#comment_10197744</link>
      <description><![CDATA[Вот статья про скролл <a href="http://itsze.ro/blog/2017/04/09/infinite-list-and-react.html">infinite-list-and-react</a>]]></description>
      <pubDate>Sat, 29 Apr 2017 18:50:50 GMT</pubDate>
      <dc:creator><![CDATA[]]></dc:creator>
    </item>
  

  
    <item>
      <title>31.01.2017 10:48:24 </title>
      <guid isPermaLink="true">https://habr.com/ru/companies/productivity_inside/articles/320796/#comment_10045400</guid>
      <link>https://habr.com/ru/companies/productivity_inside/articles/320796/#comment_10045400</link>
      <description><![CDATA[Она просто уже и не надеялась…]]></description>
      <pubDate>Tue, 31 Jan 2017 10:48:24 GMT</pubDate>
      <dc:creator><![CDATA[]]></dc:creator>
    </item>
  

  
    <item>
      <title>17.01.2017 16:50:29 </title>
      <guid isPermaLink="true">https://habr.com/ru/companies/yandex/articles/319766/#comment_10018152</guid>
      <link>https://habr.com/ru/companies/yandex/articles/319766/#comment_10018152</link>
      <description><![CDATA[Чего уж тут лукавить, первые пару-тройку дней я действительно ожидал увидеть ответ в почтовом ящике. Но затем, в летней суете, как-то и подзабылось…]]></description>
      <pubDate>Tue, 17 Jan 2017 16:50:29 GMT</pubDate>
      <dc:creator><![CDATA[]]></dc:creator>
    </item>
  

  
    <item>
      <title>17.01.2017 16:50:05 </title>
      <guid isPermaLink="true">https://habr.com/ru/companies/yandex/articles/319766/#comment_10018150</guid>
      <link>https://habr.com/ru/companies/yandex/articles/319766/#comment_10018150</link>
      <description><![CDATA[Отправляя заявку в школу, я честно говоря, и ожидал знакомства с полным стеком БЭМа, т.к. для меня технология, в плане самостоятельного изучения, казалась несколько неподступной. И когда нам предложили самим выбирать технологии для проекта, я сильно не раздумывал. Так что не вижу ничего странного в том, что я изучал БЭМ в Яндексе =)]]></description>
      <pubDate>Tue, 17 Jan 2017 16:50:05 GMT</pubDate>
      <dc:creator><![CDATA[]]></dc:creator>
    </item>
  

  
    <item>
      <title>07.09.2016 14:11:49 </title>
      <guid isPermaLink="true">https://habr.com/ru/articles/309422/#comment_9793780</guid>
      <link>https://habr.com/ru/articles/309422/#comment_9793780</link>
      <description><![CDATA[Только правильно так (имя переменной в которую попадет значение, указывается справа от двоеточия):<br/>
<pre><code class="javascript">const {id: someIdInData} = data
console.log(someIdInData)
</code></pre>]]></description>
      <pubDate>Wed, 07 Sep 2016 14:11:49 GMT</pubDate>
      <dc:creator><![CDATA[]]></dc:creator>
    </item>
  

  
    <item>
      <title>21.07.2016 17:17:30 </title>
      <guid isPermaLink="true">https://habr.com/ru/articles/306128/#comment_9710930</guid>
      <link>https://habr.com/ru/articles/306128/#comment_9710930</link>
      <description><![CDATA[Вместо костыля с перезапуском через 5 минут, я бы рекомендовал использовать встроенные в certbot хуки: в данном случае <b>post-hook</b>, который описан <a href="https://certbot.eff.org/docs/using.html#renewal">тут</a><br/>
<br/>
Т.е. вместо строк в crontab'e:<br/>
<pre><code class="bash">30 2 * * 1 /opt/letsencrypt/letsencrypt-auto renew &gt;&gt; /var/log/le-renew.log
35 2 * * 1 /usr/bin/systemctl reload nginx
</code></pre><br/>
<br/>
достаточно использовать:<br/>
<pre><code class="bash">30 2 * * 1 /opt/letsencrypt/letsencrypt-auto renew --post-hook &quot;service nginx reload&quot; &gt;&gt; /var/log/le-renew.log
</code></pre>]]></description>
      <pubDate>Thu, 21 Jul 2016 17:17:30 GMT</pubDate>
      <dc:creator><![CDATA[]]></dc:creator>
    </item>
  

  
    <item>
      <title>21.05.2016 11:06:35 </title>
      <guid isPermaLink="true">https://habr.com/ru/articles/301288/#comment_9620290</guid>
      <link>https://habr.com/ru/articles/301288/#comment_9620290</link>
      <description><![CDATA[Да собственно ничего)<br/>
У меня есть сайт на <i>angular </i>работающий на данном способе. Но сейчас, с приходом react'а, я предпочитаю пререндерить страницу не только для SEO, но и для пользователей (что имеет свои плюсы). При этом например метод с <b>_escaped_fragment_</b> не понимали боты соц. сетей и для них приходилось городить определение по <i>user-agent'у</i> на уровне <i>nginx'a</i> и перенапрявлять на тот же <b>_escaped_fragment_</b>.<br/>
В общем я за простоту, особенно если спека помечена как deprecated)]]></description>
      <pubDate>Sat, 21 May 2016 11:06:35 GMT</pubDate>
      <dc:creator><![CDATA[]]></dc:creator>
    </item>
  

  
    <item>
      <title>21.05.2016 10:41:10 </title>
      <guid isPermaLink="true">https://habr.com/ru/articles/301288/#comment_9620264</guid>
      <link>https://habr.com/ru/articles/301288/#comment_9620264</link>
      <description><![CDATA[В статье упомянуто об этом способе, а заодно указана <a href="https://developers.google.com/webmasters/ajax-crawling/docs/specification">ссылка на спеку</a> в которой говорится что данный метод <b>deprecated</b>.]]></description>
      <pubDate>Sat, 21 May 2016 10:41:10 GMT</pubDate>
      <dc:creator><![CDATA[]]></dc:creator>
    </item>
  

  
    <item>
      <title>19.05.2016 09:59:12 </title>
      <guid isPermaLink="true">https://habr.com/ru/articles/301146/#comment_9616578</guid>
      <link>https://habr.com/ru/articles/301146/#comment_9616578</link>
      <description><![CDATA[Я делаю сейчас по другому:<br/>
<div class="spoiler"><b class="spoiler_title">Много кода</b><div class="spoiler_text"><pre><code class="javascript">class BlogPage extends Component {
    componentDidMount() {
        this.props.fetchPosts(this.props.params.page);
    }
}

BlogPage.dispatchOnServer = [
    params =&gt; fetchPosts(params.page)
];
</code></pre><br/>
и на сервере используется функция которая резолвит все <b>dispatchOnServer</b> компонентов:<br/>
<pre><code class="javascript">export default (dispatch, components, params) =&gt; {
    const needs = components.reduce((prev, current) =&gt;
        (current ? (current.dispatchOnServer || []).concat(prev) : prev),
        []
    );
    const promises = needs.map(fn =&gt; {
        let action = fn(params);

        if (isFunction(action)) {
            action = action(dispatch);
        } else {
            dispatch(action);
        }

        if (!('promise' in action)) {
            throw new Error('dispatchOnServer action MUST have \'promise\' key');
        }

        return action.promise;
    });

    return Promise.all(promises);
};
</code></pre><br/>
При этом action'ы выглядят так:<br/>
<pre><code class="javascript">export function fetchPosts(offset) {
    return dispatch =&gt; dispatch({
        type: actions.FETCH_POSTS,
        offset,
        promise: fetch(`${constants.API}/posts?offset=${offset}&limit=${constants.POSTS_PER_PAGE}`)
            .then(responseData =&gt; dispatch({
                type: actions.FETCH_POSTS_SUCCESS,
                posts: responseData.data,
                total: responseData.total
            }))
            .catch(error =&gt; dispatch({
                type: actions.FETCH_POSTS_FAILURE,
                error: apiHelpers.formatResponseError(error)
            }))
    });
}
</code></pre><br/>
Ее использование:<br/>
<pre><code class="javascript">app.get('*', (req, res) =&gt; {
    const memoryHistory = createMemoryHistory(req.url);
    const store = initReduxStore(memoryHistory);
    const location = req.url;
    const history = syncHistoryWithStore(memoryHistory, store);

    match({ routes, location, history }, (error, redirectLocation, renderProps) =&gt; {
        if (error) {
            return res
                .status(500)
                .send(error.message);
        }

        if (redirectLocation) {
            return res.redirect(302, redirectLocation.pathname + redirectLocation.search);
        }

        if (renderProps) {
            return fetchComponentsData(store.dispatch, renderProps.components, renderProps.params)
                .then(renderTemplate.bind(null, store, renderProps))
                .then(dataToServing =&gt; res
                    .status(dataToServing.status)
                    .end(dataToServing.html)
                )
                .catch(renderError =&gt; res.status(500).end(renderError.message));
        }

        return res.status(404).send('Not found');
    });
});
</code></pre><br/>
<br/>
</div></div><br/>
Это позволяет держать всю логику наполнения стора в компоненте, хоть и по разному для клиентской части и сервера. Ничего удобнее я пока не видел, хотя хотелось бы конечно =)]]></description>
      <pubDate>Thu, 19 May 2016 09:59:12 GMT</pubDate>
      <dc:creator><![CDATA[]]></dc:creator>
    </item>
  

  
    <item>
      <title>12.11.2015 16:13:15 </title>
      <guid isPermaLink="true">https://habr.com/ru/articles/270637/#comment_8652499</guid>
      <link>https://habr.com/ru/articles/270637/#comment_8652499</link>
      <description><![CDATA[А еще есть шикарнейший http://include-media.com/]]></description>
      <pubDate>Thu, 12 Nov 2015 16:13:15 GMT</pubDate>
      <dc:creator><![CDATA[]]></dc:creator>
    </item>
  

  
    <item>
      <title>18.08.2015 07:07:10 </title>
      <guid isPermaLink="true">https://habr.com/ru/companies/yandex/articles/264631/#comment_8540391</guid>
      <link>https://habr.com/ru/companies/yandex/articles/264631/#comment_8540391</link>
      <description><![CDATA[Осенью должны перевести в статус кандидата.<br/>
http://www.w3.org/Style/CSS/Planet/#item2]]></description>
      <pubDate>Tue, 18 Aug 2015 07:07:10 GMT</pubDate>
      <dc:creator><![CDATA[]]></dc:creator>
    </item>
  

  
    <item>
      <title>11.06.2015 08:47:35 </title>
      <guid isPermaLink="true">https://habr.com/ru/companies/cit/articles/259987/#comment_8456781</guid>
      <link>https://habr.com/ru/companies/cit/articles/259987/#comment_8456781</link>
      <description><![CDATA[Но при этом он вряд-ли знает как грамотно собрать здоровый SPA например. Это из области сравнения теплого с мягким…]]></description>
      <pubDate>Thu, 11 Jun 2015 08:47:35 GMT</pubDate>
      <dc:creator><![CDATA[]]></dc:creator>
    </item>
  

  
    <item>
      <title>08.06.2015 13:03:28 </title>
      <guid isPermaLink="true">https://habr.com/ru/companies/paysto/articles/258973/#comment_8452497</guid>
      <link>https://habr.com/ru/companies/paysto/articles/258973/#comment_8452497</link>
      <description><![CDATA[Конечно, решит) Но все-равно не будет работать в IE &lt; 11, что ограничивает круг использования. <br/>
Да и вообще, имхо, второе демо интересно лишь в роли демо как раз, в проектах бы я такое не применял… Для каждого слова по dom-элементу как-то черезчур)]]></description>
      <pubDate>Mon, 08 Jun 2015 13:03:28 GMT</pubDate>
      <dc:creator><![CDATA[]]></dc:creator>
    </item>
  

  
    <item>
      <title>28.05.2015 18:04:49 </title>
      <guid isPermaLink="true">https://habr.com/ru/companies/paysto/articles/258973/#comment_8438875</guid>
      <link>https://habr.com/ru/companies/paysto/articles/258973/#comment_8438875</link>
      <description><![CDATA[Потому что поверх, с помощью использования псевдоэлемента ::after, отрисовывается прозрачный блок, что и блокирует выделение текста.]]></description>
      <pubDate>Thu, 28 May 2015 18:04:49 GMT</pubDate>
      <dc:creator><![CDATA[]]></dc:creator>
    </item>
  

  
    <item>
      <title>17.03.2015 17:06:21 </title>
      <guid isPermaLink="true">https://habr.com/ru/articles/253121/#comment_8334587</guid>
      <link>https://habr.com/ru/articles/253121/#comment_8334587</link>
      <description><![CDATA[Есть еще отличный extension под Chrome для тестирования запросов: Postman — REST Client]]></description>
      <pubDate>Tue, 17 Mar 2015 17:06:21 GMT</pubDate>
      <dc:creator><![CDATA[]]></dc:creator>
    </item>
  

  
    <item>
      <title>14.03.2015 16:21:56 </title>
      <guid isPermaLink="true">https://habr.com/ru/articles/253039/#comment_8329839</guid>
      <link>https://habr.com/ru/articles/253039/#comment_8329839</link>
      <description><![CDATA[под скомпилированный файл ставить то ничего не нужно, среду необходимо поставить единожды на компьютере разработчика]]></description>
      <pubDate>Sat, 14 Mar 2015 16:21:56 GMT</pubDate>
      <dc:creator><![CDATA[]]></dc:creator>
    </item>
  

  
    <item>
      <title>29.01.2015 18:02:58 </title>
      <guid isPermaLink="true">https://habr.com/ru/articles/249257/#comment_8252689</guid>
      <link>https://habr.com/ru/articles/249257/#comment_8252689</link>
      <description><![CDATA[Присоединюсь к предыдущим комментариям. Может кто-то подскажет хорошего российского регистратора? Насколько это возможно=)]]></description>
      <pubDate>Thu, 29 Jan 2015 18:02:58 GMT</pubDate>
      <dc:creator><![CDATA[]]></dc:creator>
    </item>
  

  
    <item>
      <title>25.12.2014 11:17:12 </title>
      <guid isPermaLink="true">https://habr.com/ru/articles/246733/#comment_8196729</guid>
      <link>https://habr.com/ru/articles/246733/#comment_8196729</link>
      <description><![CDATA[Ко всему вышеперечисленному выше — я бы вынес загрузку данных в resolve роутов. <br/>
И тоже не особо понял чем не угодил в данном случае MySQL и почему ngAnnotate не справится с аннотированием. Со стандартными регистрациями angular'овских компонентов (и даже некоторых сторонних плагинов, например resolv'ы ui-router'а) он отлично справляется без дополнительной помощи. В свои компоненты, при использовании например $injector'a, да, иногда надо добавлять /*@ngInject*/]]></description>
      <pubDate>Thu, 25 Dec 2014 11:17:12 GMT</pubDate>
      <dc:creator><![CDATA[]]></dc:creator>
    </item>
  

  
    <item>
      <title>25.12.2014 11:10:26 </title>
      <guid isPermaLink="true">https://habr.com/ru/articles/246733/#comment_8196707</guid>
      <link>https://habr.com/ru/articles/246733/#comment_8196707</link>
      <description><![CDATA[я так понял у человека index отдается phalcon'ом, и роутинг phalcon'а совпадает с роутингом фронта, поэтому так и выходит… Но вообще да, правильно на любой запрос вернуть index…]]></description>
      <pubDate>Thu, 25 Dec 2014 11:10:26 GMT</pubDate>
      <dc:creator><![CDATA[]]></dc:creator>
    </item>
  

  
    <item>
      <title>27.11.2014 11:41:27 </title>
      <guid isPermaLink="true">https://habr.com/ru/articles/244311/#comment_8149467</guid>
      <link>https://habr.com/ru/articles/244311/#comment_8149467</link>
      <description><![CDATA[А чего спорного? Если человек не пользуется проектом, то откуда он может узнать что в проекте можно улучшить/исправить?]]></description>
      <pubDate>Thu, 27 Nov 2014 11:41:27 GMT</pubDate>
      <dc:creator><![CDATA[]]></dc:creator>
    </item>
  

      

      

    
  </channel>
</rss>
