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

<channel>
	<title>Записки о WordPress. Блог Ирины Соколовской</title>
	<atom:link href="https://oriolo.ru/feed/" rel="self" type="application/rss+xml"/>
	<link>https://oriolo.ru</link>
	<description>Блог Ирины Соколовской о Wordpress и вёрстке</description>
	<lastBuildDate>Tue, 19 May 2020 12:17:08 +0000</lastBuildDate>
	<language>ru-RU</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
	<item>
		<title>Переход с SCSS на PostCSS: мой опыт</title>
		<link>https://oriolo.ru/perehod-s-scss-na-postcss-moj-opyt/</link>
		<comments>https://oriolo.ru/perehod-s-scss-na-postcss-moj-opyt/#comments</comments>
		<pubDate>Sun, 01 May 2016 06:22:33 +0000</pubDate>
		<dc:creator><![CDATA[Ирина]]></dc:creator>
				<category><![CDATA[Front-end]]></category>

		<guid isPermaLink="false">http://oriolo.ru/?p=3300</guid>
		<description><![CDATA[<p>Прямо сейчас я начинаю верстать новый проект. Я решила, что это хороший повод познакомиться с новой для себя технологией, поэтому выбрала в качестве препроцессора PostCSS. Меня привлекает в нем скорость работы и модульность, однако до сих пор не было случая попробовать его на реальном проекте. Сейчас в основном я использую Sass, и невозможность (хоть и временная) использовать node-sass с шестой версией Node.js, и то, как из-за этого у меня поломались стили в проекте, тоже послужило причиной поиска альтернатив. Для начала расскажу, как сейчас у меня выглядит работа со стилями. Как я сейчас работаю со стилями Есть основной файл, main.scss, в &#8230; <a href="https://oriolo.ru/perehod-s-scss-na-postcss-moj-opyt/">Читать далее</a></p>
<p>Пост <a rel="nofollow" href="https://oriolo.ru/perehod-s-scss-na-postcss-moj-opyt/">Переход с SCSS на PostCSS: мой опыт</a> опубликован в блоге <a rel="nofollow" href="https://oriolo.ru">Блог Ирины Соколовской</a></p>
]]></description>
				<content:encoded><![CDATA[<p>Прямо сейчас я начинаю верстать новый проект. Я решила, что это хороший повод познакомиться с новой для себя технологией, поэтому выбрала в качестве препроцессора <a rel="nofollow" href="http://postcss.org" rel="nofollow" >PostCSS</a>. Меня привлекает в нем скорость работы и модульность, однако до сих пор не было случая попробовать его на реальном проекте. Сейчас в основном я использую Sass, и невозможность (хоть и временная) использовать node-sass с шестой версией Node.js, и то, как из-за этого у меня поломались стили в проекте, тоже послужило причиной поиска альтернатив. <span id="more-3300"></span></p>
<p>Для начала расскажу, как сейчас у меня выглядит работа со стилями.</p>
<h3>Как я сейчас работаю со стилями</h3>
<p>Есть основной файл, main.scss, в который подключаются все остальные файлы стилей, разделенные по папкам. Я использую систему папок, похожую на <a rel="nofollow" href="http://sass-guidelin.es/#the-7-1-pattern" rel="nofollow" >модель 7-1</a>, с некоторыми отличиями: у меня почти никогда нет папки <code>vendors/</code> (вместо нее я подключаю сторонние библиотеки через npm), а также папки <code>themes/</code> (даже в больших проектах у меня не было необходимости выделять отдельные темы). В папке <code>components/</code> я создаю отдельный файл для каждого нового класса компонентов. </p>
<p>Сборку делаю через Gulp. Для импорта стилей использую <a rel="nofollow" href="https://www.npmjs.com/package/gulp-sass-glob" rel="nofollow" >gulp-sass-glob</a>, чтобы можно было импортировать папки со стилями целиком, например: <code>@import "../components/**/*.scss";</code>. </p>
<p>В больших проектах использую миксины <a rel="nofollow" href="http://bourbon.io" rel="nofollow" >Bourbon</a>. К собранным стилям применяю <a rel="nofollow" href="https://github.com/postcss/autoprefixer" rel="nofollow" >автопрефиксер</a>.</p>
<p>Единообразие написания стилей и отсутствие в них ошибок проверяется при помощи <a rel="nofollow" href="http://stylelint.io" rel="nofollow" >Stylelint</a> или <a rel="nofollow" href="https://github.com/brigade/scss-lint" rel="nofollow" >SCSS-lint</a> в виде <a rel="nofollow" href="https://atom.io/packages/linter-scss-lint" rel="nofollow" >плагина</a> для редактора Atom (вот мой <a rel="nofollow" href="https://gist.github.com/ierhyna/5f20a8265dac281ab1113d43b159d398" rel="nofollow" >конфиг .scss-lint.yml</a>, основанный на Sass Guidelines). При помощи <a rel="nofollow" href="http://csscomb.com/" rel="nofollow" >CSSComb</a> (и <a rel="nofollow" href="https://atom.io/packages/atom-css-comb" rel="nofollow" >этого плагина</a> для редактора) я автоматически сортирую CSS свойства (<a rel="nofollow" href="https://gist.github.com/ierhyna/5fc7ccd4331acf1c4845352707a8d228" rel="nofollow" >конфиг</a> настроен в соответствии с линтером).</p>
<p>Готовый файл минифицируется через <a rel="nofollow" href="http://cssnano.co/" rel="nofollow" >CSS Nano</a> в виде <a rel="nofollow" href="https://www.npmjs.com/package/gulp-cssnano" rel="nofollow" >плагина для Gulp</a>.</p>
<p>В идеале, мне бы хотелось получить такую конфигурацию, которая будет работать с уже написанными стилями с SCSS-синтаксисом, и чтобы не не нужно было менять привычки написания стилей. Потом, возможно, я подумаю над другими вариантами, но моя задача сейчас &#8211; сделать подобие SCSS, но через PostCSS. То есть, мне нужно:</p>
<ul>
<li>объявление переменных как <code>$</code>,</li>
<li>вложенность стилей, возможность использовать конструкции вида <code>&__elem</code>,</li>
<li>миксины, желательно с синтаксисом как в SCSS (<code>@include mixin-name</code>),</li>
<li>импорт папок целиком, а не по отдельным файлам</li>
<li>не критично, но было бы приятно, найти аналоги того, что я делаю через Bourbon; но в крайнем случае можно написать функции самостоятельно</li>
</ul>
<p>И еще, чтобы был линтер, и все это собиралось бы через Gulp, и быстрее, чем SCSS. В будущем я рассматриваю возможность перехода на NPM-скрипты.</p>
<h3>Переход к PostCSS</h3>
<p>Как выяснилось, я уже использую два, а в некоторых случаях три инструмента из экосистемы PostCSS: это <strong>Автопрефиксер</strong>, <strong>CSS Nano</strong>, и иногда <strong>Stylelint</strong>. Отлично. Осталось найти что-то, что позволит заменить SCSS.</p>
<p>Как я уже писала, одно из преимуществ PostCSS это модульность, то есть для решения каждой отдельной проблемы существует свой плагин, а если не существует, то его можно написать самостоятельно. Большое количество плагинов размещено <a rel="nofollow" href="http://postcss.parts/" rel="nofollow" >здесь</a>.</p>
<h4>Синтаксис</h4>
<p>Среди плагинов я нашла Precss, который позволяет использовать синтаксис из Scss. Однако его возможности мне показались избыточными, из Scss мне нужны только импорт, переменные, вложенность и миксины. Поэтому я решила взять по отдельности плагины <strong>postcss-partial-import</strong>, <strong>postcss-simple-vars</strong>, <strong>postcss-nested</strong>, <strong>postcss-mixins</strong>. </p>
<p>К сожалению, мне пока не удалось найти плагин, который бы мог импортировать содержимое директории целиком. </p>
<p>Приятно порадовал плагин stylefmt, который является заменой для CSS Comb и может форматировать стили в соответствии с конфигом от Stylelint. Кроме того, он есть в виде плагина для Атома.</p>
<h4>Установка</h4>
<p>Вроде бы все нашлось. Теперь можно установить плагины и настроить таск для сборщика Gulp. Я начну с установки плагинов, которые позволят использовать привычный синтаксис, а потом добавлю остальное.</p>
<p></p><pre class="crayon-plain-tag">npm i -D gulp gulp-postcss gulp-sourcemaps autoprefixer postcss-partial-import postcss-simple-vars postcss-nested postcss-mixins</pre><p> </p>
<p>Потестировала, все работает. Значит, можно добавить CSSNano для минификации.</p>
<p></p><pre class="crayon-plain-tag">npm i -D gulp-cssnano</pre><p> </p>
<p>В итоге, таск у меня получился такой:</p>
<p></p><pre class="crayon-plain-tag">'use strict';

const gulp = require('gulp');
const sourcemaps = require('gulp-sourcemaps');

gulp.task('css', function () {
  const postcss = require('gulp-postcss');
  const nano = require('gulp-cssnano');

  return gulp.src('src/css/*.css')
    .pipe( sourcemaps.init() )
    .pipe( postcss([
      require('autoprefixer'),
      require('postcss-partial-import'),
      require('postcss-simple-vars'),
      require('postcss-nested'),
      require('postcss-mixins')
    ]) )
    .pipe(nano())
    .pipe( sourcemaps.write('.') )
    .pipe( gulp.dest('build/') );
});</pre><p></p>
<p>Теперь надо добавить линтер и инструмент для форматирования кода. Я хочу, чтобы ошибки в стилях выводились в консоли и в редакторе, поэтому надо установить <a rel="nofollow" href="https://atom.io/packages/linter-stylelint" rel="nofollow" >плагин Stylelint для Атома</a>, настроить таск для Gulp, и создать файл конфига .stylelintrc. Устанавливается все просто.</p>
<p></p><pre class="crayon-plain-tag">npm i -D gulp-stylelint &amp;&amp; apm install linter-stylelint</pre><p> </p>
<p>А вот с конфигом придется помучиться. Все возможные правила перечислены <a rel="nofollow" href="http://stylelint.io/user-guide/rules/" rel="nofollow" >тут</a>, но создавать их придется вручную. Я для начала установила <a rel="nofollow" href="https://github.com/stylelint/stylelint-config-standard" rel="nofollow" >stylelint-config-standard</a>, <code>npm install -D stylelint-config-standard</code> и прописала в файле .stylelintrc его использование:</p>
<p></p><pre class="crayon-plain-tag">{
  "extends": "/absolute/path/to/stylelint-config-standard"
}</pre><p></p>
<p>Когда будет время, проверю его соответсвтие со своим конфигом для SCSS-lint.</p>
<p>Таск для линтера стилей получился такой:</p>
<p></p><pre class="crayon-plain-tag">gulp.task('lint-css', function () {
  const stylelint = require('gulp-stylelint');

  return gulp.src('src/**/*.css')
    .pipe(stylelint({
      failAfterError: false, // disable fail after error
      reporters: [{
        formatter: 'string',
        console: true
      }]
    }));
});</pre><p> </p>
<p>Добавим инструмент для форматирования кода. Тут, на самом деле, я не до конца разобралась, может ли плагин для Атома работать без установленного npm-пакета.</p>
<p></p><pre class="crayon-plain-tag">npm install -D stylefmt &amp;&amp; apm install stylefmt</pre><p> </p>
<p>Вроде бы, все работает. Для удобства, вот в виде отдельной команды все пакеты, которые я поставила:</p>
<p></p><pre class="crayon-plain-tag">npm i -D gulp gulp-postcss gulp-sourcemaps autoprefixer postcss-partial-import postcss-simple-vars postcss-nested postcss-mixins gulp-cssnano gulp-stylelint stylefmt</pre><p></p>
<p>И плагины для Атома:</p>
<p></p><pre class="crayon-plain-tag">apm install linter-stylelint stylefmt</pre><p></p>
<p>Все это позволило мне начать проект с привычным мне подходом, но используя PostCSS вместо SCSS. Пока что тестирую, и присматриваюсь. Не исключаю, что во всех новых проектах буду использовать эти инструменты.</p>
<p>Пост <a rel="nofollow" href="https://oriolo.ru/perehod-s-scss-na-postcss-moj-opyt/">Переход с SCSS на PostCSS: мой опыт</a> опубликован в блоге <a rel="nofollow" href="https://oriolo.ru">Блог Ирины Соколовской</a></p>
]]></content:encoded>
			<wfw:commentRss>https://oriolo.ru/perehod-s-scss-na-postcss-moj-opyt/feed/</wfw:commentRss>
		<slash:comments>52</slash:comments>
		</item>
		<item>
		<title>Использование ES6 в Gulp</title>
		<link>https://oriolo.ru/ispolzovanie-es6-v-gulp/</link>
		<comments>https://oriolo.ru/ispolzovanie-es6-v-gulp/#comments</comments>
		<pubDate>Sat, 30 Apr 2016 11:18:36 +0000</pubDate>
		<dc:creator><![CDATA[Ирина]]></dc:creator>
				<category><![CDATA[Front-end]]></category>

		<guid isPermaLink="false">http://oriolo.ru/?p=3286</guid>
		<description><![CDATA[<p>Относительно недавно я начала использовать в своих проектах новый стандарт JavaScript, ES6. В этой записи я расскажу, как настроить Gulp, чтобы внутри gulpfile тоже можно было писать на ES6. Способ 1, с использованием Babel Так как я занимаюсь в основном фронтендом, то для того, чтобы код, написанный на ES6, запускался в браузере, я использую Babel. Сборку проекта я делаю при помощи Gulp. Поэтому, можно обработать gulpfile при помощи Babel. Для нового проекта установка будет выглядеть так: Инициализировать npm в папке проекта: npm init Установить для проекта Gulp: npm install --save-dev gulp и Babel: npm install --save-dev babel-core babel-preset-es2015 В файле &#8230; <a href="https://oriolo.ru/ispolzovanie-es6-v-gulp/">Читать далее</a></p>
<p>Пост <a rel="nofollow" href="https://oriolo.ru/ispolzovanie-es6-v-gulp/">Использование ES6 в Gulp</a> опубликован в блоге <a rel="nofollow" href="https://oriolo.ru">Блог Ирины Соколовской</a></p>
]]></description>
				<content:encoded><![CDATA[<p>Относительно недавно я начала использовать в своих проектах новый стандарт JavaScript, ES6. В этой записи я расскажу, как настроить Gulp, чтобы внутри gulpfile тоже можно было писать на ES6.<span id="more-3286"></span></p>
<h3>Способ 1, с использованием Babel</h3>
<p>Так как я занимаюсь в основном фронтендом, то для того, чтобы код, написанный на ES6, запускался в браузере, я использую <a rel="nofollow" href="https://babeljs.io/" rel="nofollow" >Babel</a>. Сборку проекта я делаю при помощи <a rel="nofollow" href="http://gulpjs.com/" rel="nofollow" >Gulp</a>. Поэтому, можно обработать gulpfile при помощи Babel.</p>
<p>Для нового проекта установка будет выглядеть так:</p>
<ol>
<li>Инициализировать npm в папке проекта: <code>npm init</code></li>
<li>Установить для проекта Gulp: <code>npm install --save-dev gulp</code> и Babel: <code>npm install --save-dev babel-core babel-preset-es2015</code></li>
<li>В файле package.json (он появится после выполнения инициализации npm) добавить в раздел со скриптами команду для запуска Gulp:<br />
<pre class="crayon-plain-tag">"scripts": {
  "gulp": "./node_modules/gulp/bin/gulp.js"
}</pre><br />
Благодаря этому, сборка запускается командой <code>npm run gulp</code>.</li>
<li>Теперь надо создать в папке проекта файл <code>.babelrc</code> со следующим содержимым:<br />
<pre class="crayon-plain-tag">{
  "presets": ["es2015"]
}</pre>
</li>
</ol>
<p>После этого можно создать gulpfile с названием <code>gulpfile.babel.js</code>, и написать в нем необходимые такси, например:</p>
<p></p><pre class="crayon-plain-tag">'use strict';

import gulp from 'gulp';
import sass from 'gulp-sass';

const dirs = {
  src: 'src',
  dest: 'build'
};

const sassPaths = {
  src: `${dirs.src}/app.scss`,
  dest: `${dirs.dest}/styles/`
};

gulp.task('styles', () =&gt; {
  return gulp.src(paths.src)
    .pipe(sass.sync().on('error', plugins.sass.logError))
    .pipe(gulp.dest(paths.dest));
});</pre><p> </p>
<p>Babel позволяет использовать внутри gulpfile все новинки, появившиеся в ES6, в том числе модули.</p>
<h3>Способ 2, с использованием новой версии Node.js</h3>
<p>В Node.js версии 6, которая вышла всего несколько дней назад, 27 апреля, <a rel="nofollow" href="https://kangax.github.io/compat-table/es6/" rel="nofollow" >реализовано 93% возможностей</a> ES6, что больше, чем в Babel. Это позволяет использовать новые возможности языка внутри gulpfile без дополнительных инструментов, что, как мне кажется, должно работать быстрее. </p>
<p>К сожалению, использование новых версий возможно не всегда, так как могут возникать конфликты с уже используемыми в проекте пакетами. Например, node-sass, и соответственно gulp-sass, пока не работают на nodejs 6.</p>
<p>Пост <a rel="nofollow" href="https://oriolo.ru/ispolzovanie-es6-v-gulp/">Использование ES6 в Gulp</a> опубликован в блоге <a rel="nofollow" href="https://oriolo.ru">Блог Ирины Соколовской</a></p>
]]></content:encoded>
			<wfw:commentRss>https://oriolo.ru/ispolzovanie-es6-v-gulp/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Установка node-gyp на Windows 8</title>
		<link>https://oriolo.ru/node-gyp-windows-8/</link>
		<comments>https://oriolo.ru/node-gyp-windows-8/#comments</comments>
		<pubDate>Fri, 19 Feb 2016 18:21:09 +0000</pubDate>
		<dc:creator><![CDATA[Ирина]]></dc:creator>
				<category><![CDATA[Front-end]]></category>

		<guid isPermaLink="false">http://oriolo.ru/?p=3234</guid>
		<description><![CDATA[<p>Для работы некоторых модулей Node.js (например, MongoDB, Sails.js, Deployd) нужна компиляция нативного кода, написанного на C++. Это возможно с помощью модуля node-gyp, который, в свою очередь, собирает V8 используя питоновский gyp. Поэтому настроить node-gyp на Windows не просто, хотя на Ubuntu Linux у меня проблем с этим не возникало. В этом посте я поделюсь своим опытом исправления ошибок, которые возникали у меня при установке node-gyp на Windows, и опишу последовательность действий, которая позволила мне заставить сборку работать. Для установки node-gyp необходимы Python и C++. Поэтому сначала ставим: Python 2.7 Microsoft Visual Studio C++ 2013 for Windows Desktop Express и Windows &#8230; <a href="https://oriolo.ru/node-gyp-windows-8/">Читать далее</a></p>
<p>Пост <a rel="nofollow" href="https://oriolo.ru/node-gyp-windows-8/">Установка node-gyp на Windows 8</a> опубликован в блоге <a rel="nofollow" href="https://oriolo.ru">Блог Ирины Соколовской</a></p>
]]></description>
				<content:encoded><![CDATA[<p>Для работы некоторых модулей Node.js (например, MongoDB, Sails.js, Deployd) нужна компиляция нативного кода, написанного на C++. Это возможно с помощью модуля node-gyp, который, в свою очередь, собирает V8 используя питоновский gyp. Поэтому настроить node-gyp на Windows не просто, хотя на Ubuntu Linux у меня проблем с этим не возникало. В этом посте я поделюсь своим опытом исправления ошибок, которые возникали у меня при установке node-gyp на Windows, и опишу последовательность действий, которая позволила мне заставить сборку работать.<span id="more-3234"></span></p>
<p>Для установки node-gyp необходимы Python и C++. Поэтому сначала ставим:</p>
<ul>
<li><a rel="nofollow" href="https://www.python.org/downloads/release/python-2710/" rel="nofollow" >Python 2.7</a></li>
<li><a rel="nofollow" href="https://www.microsoft.com/en-gb/download/details.aspx?id=44914" rel="nofollow" >Microsoft Visual Studio C++ 2013 for Windows Desktop Express</a></li>
<li> и <a rel="nofollow" href="https://www.microsoft.com/en-us/download/details.aspx?id=8279" rel="nofollow" >Windows 7 64-bit SDK</a>, если у вас 64-битная система.</li>
</ul>
<p>После этого надо запустить установку node-gyp глобально: </p>
<p></p><pre class="crayon-plain-tag">npm install -g node-gyp</pre><p></p>
<p>Если node-gyp установлен локально для проекта, то в некоторых случаях возможна ошибка <strong>Failed at install script &#8216;node-gyp rebuild&#8217;</strong>, например:</p>
<p></p><pre class="crayon-plain-tag">npm ERR! bufferutil@1.2.1 install: `node-gyp rebuild`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the bufferutil@1.2.1 install script 'node-gyp rebuild'.
npm ERR! Make sure you have the latest version of node.js and npm installed.
npm ERR! If you do, this is most likely a problem with the bufferutil package,
npm ERR! not with npm itself.</pre><p></p>
<p>Если у вас не установлен Python, или Node.js не может его найти, возникает ошибка <strong>Can&#8217;t find Python executable &#8220;python&#8221;, you can set the PYTHON env variable</strong>:</p>
<p></p><pre class="crayon-plain-tag">> node-gyp rebuild
gyp info it worked if it ends with ok
gyp info using node-gyp@3.3.0
gyp info using node@5.5.0 | win32 | x64
gyp ERR! configure error
gyp ERR! stack Error: Can't find Python executable "python", you can set the PYTHON env variable.
...
gyp ERR! node -v v5.5.0
gyp ERR! node-gyp -v v3.3.0
gyp ERR! not ok</pre><p></p>
<p>Это лечится установкой Python 2.7 (важно ставить именно эту версию, не знаю почему, но версия 3 не поддерживается!), и указанием в терминале пути к исполняемому файлу питона:</p><pre class="crayon-plain-tag">set PYTHON=C:\Users\Irina\AppData\Local\Programs\Python\Python27\python.exe</pre><p></p>
<p>Но указывать путь нужно будет каждый раз, когда вы запускаете node-gyp. Поэтому, если вы используете кастомный терминал (а я надеюсь, что вы это делаете), то лучше добавить эту команду в список команд, которые выполняются при запуске терминала.</p>
<p>Если не найден компилятор С++, то вы увидите ошибку <strong>`gyp` failed with exit code: 1</strong>:</p>
<p></p><pre class="crayon-plain-tag">> node-gyp rebuild
gyp info it worked if it ends with ok
gyp info using node-gyp@3.3.0
gyp info using node@5.5.0 | win32 | x64
gyp http GET https://nodejs.org/download/release/v5.5.0/node-v5.5.0-headers.tar.gz
gyp http 200 https://nodejs.org/download/release/v5.5.0/node-v5.5.0-headers.tar.gz
gyp http GET https://nodejs.org/download/release/v5.5.0/SHASUMS256.txt
gyp http GET https://nodejs.org/download/release/v5.5.0/win-x64/node.lib
gyp http GET https://nodejs.org/download/release/v5.5.0/win-x86/node.lib
gyp http 200 https://nodejs.org/download/release/v5.5.0/SHASUMS256.txt
gyp http 200 https://nodejs.org/download/release/v5.5.0/win-x86/node.lib
gyp http 200 https://nodejs.org/download/release/v5.5.0/win-x64/node.lib
gyp info spawn C:\Users\Irina\AppData\Local\Programs\Python\Python27\python.exe
gyp info spawn args [ 'C:\\Users\\Irina\\AppData\\Roaming\\npm\\node_modules\\node-gyp\\gyp\\gyp_main.py',
...
gyp info spawn args   '-Goutput_dir=.' ]
gyp: binding.gyp not found (cwd: C:\Users\Irina\Documents\project) while trying to load binding.gyp
gyp ERR! configure error
gyp ERR! stack Error: `gyp` failed with exit code: 1
gyp ERR! stack     at ChildProcess.onCpExit (C:\Users\Irina\AppData\Roaming\npm\node_modules\node-gyp\lib\configure.js:305:16)
gyp ERR! stack     at emitTwo (events.js:100:13)
gyp ERR! stack     at ChildProcess.emit (events.js:185:7)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:200:12)
gyp ERR! System Windows_NT 6.3.9600
gyp ERR! command "C:\\Program Files\\nodejs\\node.exe" "C:\\Users\\Irina\\AppData\\Roaming\\npm\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild"
gyp ERR! cwd C:\Users\Irina\Documents\project
gyp ERR! node -v v5.5.0
gyp ERR! node-gyp -v v3.3.0
gyp ERR! not ok</pre><p></p>
<p>Чтобы ее исправить, надо поставить Visual Studio C++ 2013 Express, ссылка на нее есть в начале поста. Имейте в виду, что это огромная среда, которая займет 6,5 гигабайт (!) места на диске (в такие моменты я особенно сильно ненавижу винду &#8211; компилятор gpp на Ubuntu в установленном виде занимает всего 17Мб). После этого надо перезагрузить компьютер, и запустить node-gyp rebuild.</p>
<p>Пост <a rel="nofollow" href="https://oriolo.ru/node-gyp-windows-8/">Установка node-gyp на Windows 8</a> опубликован в блоге <a rel="nofollow" href="https://oriolo.ru">Блог Ирины Соколовской</a></p>
]]></content:encoded>
			<wfw:commentRss>https://oriolo.ru/node-gyp-windows-8/feed/</wfw:commentRss>
		<slash:comments>21</slash:comments>
		</item>
		<item>
		<title>Ресурсы для изучения программирования и веб-разработки</title>
		<link>https://oriolo.ru/resursy-dlya-izucheniya-programmirovaniya-i-veb-razrabotki/</link>
		<comments>https://oriolo.ru/resursy-dlya-izucheniya-programmirovaniya-i-veb-razrabotki/#comments</comments>
		<pubDate>Sat, 23 Jan 2016 14:07:54 +0000</pubDate>
		<dc:creator><![CDATA[Ирина]]></dc:creator>
				<category><![CDATA[О блоге и жизни]]></category>

		<guid isPermaLink="false">http://oriolo.ru/?p=3178</guid>
		<description><![CDATA[<p>В этой статье я хочу рассказать о тех ресурсах, которые я проходила для самообразования в сфере программирования и веб-разработки. Ссылки на ресурсы, которыми я пользуюсь Образовательные ресурсы, которыми я пользуюсь, можно условно разделить на MOOC (massive open online course), набор на которые идет 1-2 раза в год, и на обучающие сервисы, на которых можно начать заниматься в любой момент. MOOC я в основном прохожу на этих сайтах: EDx &#8211; курсы по разным предметам от ведущих университетов мира. Отдельно отмечу очень удобный интерфейс. Coursera &#8211; курсы по предметам темам от ведущих университетов мира. В последнее время Coursera перешла на систему &#8220;специализаций&#8221;, &#8230; <a href="https://oriolo.ru/resursy-dlya-izucheniya-programmirovaniya-i-veb-razrabotki/">Читать далее</a></p>
<p>Пост <a rel="nofollow" href="https://oriolo.ru/resursy-dlya-izucheniya-programmirovaniya-i-veb-razrabotki/">Ресурсы для изучения программирования и веб-разработки</a> опубликован в блоге <a rel="nofollow" href="https://oriolo.ru">Блог Ирины Соколовской</a></p>
]]></description>
				<content:encoded><![CDATA[<p>В этой статье я хочу рассказать о тех ресурсах, которые я проходила для самообразования в сфере программирования и веб-разработки.<span id="more-3178"></span></p>
<h2>Ссылки на ресурсы, которыми я пользуюсь</h2>
<p>Образовательные ресурсы, которыми я пользуюсь, можно условно разделить на MOOC (massive open online course), набор на которые идет 1-2 раза в год, и на обучающие сервисы, на которых можно начать заниматься в любой момент.</p>
<p>MOOC я в основном прохожу на этих сайтах:</p>
<ul>
<li><a rel="nofollow" href="https://www.edx.org/" rel="nofollow" >EDx</a> &#8211; курсы по разным предметам от ведущих университетов мира. Отдельно отмечу очень удобный интерфейс.</li>
<li><a rel="nofollow" href="https://www.coursera.org/" rel="nofollow" >Coursera</a> &#8211; курсы по предметам темам от ведущих университетов мира. В последнее время Coursera перешла на систему &#8220;специализаций&#8221;, когда человек проходит несколько по близким дисциплинам. Мне не очень нравится этот формат, и поэтому я почти не пользуюсь их сайтом в посленее время.</li>
<li><a rel="nofollow" href="http://udacity.com/" rel="nofollow" >Udacity</a> &#8211; курсы по программированию. В целом, довольно неплохо, если нужно быстро познакомиться с какой-то технологией. Однако мне не очень понравится интерфейс сайта, из личного кабинета не виден прогресс по каждому курсу, не удобно сделан поиск.</li>
</ul>
<p>Из обучающих сервисов сейчас я использую Free Code Camp и Khan Academy, о которых расскажу подробнее ниже.</p>
<h2>Отзывы о курсах, которые я прошла</h2>
<h3>Базовые знания о программировании</h3>
<p>Курс <strong><a rel="nofollow" href="https://www.edx.org/course/introduction-computer-science-harvardx-cs50x" rel="nofollow" >Introduction to Computer Science, CS50</a></strong> (EDx, Гарвард). Восхитительный базовый курс по Computer Science. Он дает понимание абстракций, алгоритмов, структур данных, учит алгоритмическому мышлению и другим концепциям, которые лежат в основе всех языков программирования. На мой взгляд, главное преимущество курса перед аналогичными в том, что основная часть видеолекций &#8211; это видеозаписи реальных лекций в Гарварде. Для общения с сокурсниками есть общий чат в Slack. Курс открыт для прохождения всегда.</p>
<p><strong><a rel="nofollow" href="http://khanacademy.org/math/" rel="nofollow" >Курсы по математике на Khan Academy</a></strong>. <del datetime="2016-01-23T11:00:20+00:00">У меня не очень хорошо с математикой.</del> Если честно, то у меня все плохо с математикой. И курсы на Khan Academy помогают с этим справиться. Иногда я удивляюсь, почему в школе нам не объясняли материал так, как на этом сайте. </p>
<h3>Курсы по веб-разработке</h3>
<p><strong><a rel="nofollow" href="https://www.codecademy.com/learn" rel="nofollow" >Codecademy</a></strong>. Про Codecademy, наверное, знают все. Я проходила курсы по JavaScript, jQuery, PHP, Ruby, Ruby on Rails. Если нужно быстро познакомиться с основами новой технологии &#8211; то эти курсы очень полезны, и помогут быстро вникнуть в новый язык. Но как мне кажется, знания на выходе не очень глубокие, и после этих курсов обязательно нужно что-то еще.</p>
<p><strong><a rel="nofollow" href="http://www.freecodecamp.com/" rel="nofollow" >Free Code Camp</a></strong>, &#8211; сервис для изучения Full-stack разработки на JavaScript. Прохожу сейчас. Формат обучения похож на Codecademy. Обучение построено по принципу самообразования от простого к сложному. Сначала дается основа (напрмер, функция JS, и простая задачка на нее), а затем дают задание, которое выходит за рамки изученного, и нужно решить его самостоятельно. Все начинается с HTML, CSS, Bootstrap (эту часть я пропустила), и продолжается заданиями по базовым функциям JS, задачами на алгоритмы, фронтэнд проектами. Планируется к запуску раздел про React. Для общения есть чат в Gitter.</p>
<p><strong><a rel="nofollow" href="https://htmlacademy.ru/" rel="nofollow" >HTML Academy</a></strong>. Если все остальные ресурсы и курсы, которые я описываю, бесплатные и на английском языке, то HTML Academy &#8211; платная (300 руб. в месяц) и на русском. Есть и бесплатная базовая часть, но я ее не проходила. Курс дает хорошее понимание работы HTML5 и CSS3, включая фишки новых стандартов: градиенты, трансформации, анимации, фильтры. Некоторые задания убивали мой мозг на пару часов.</p>
<p>Курс <strong><a rel="nofollow" href="https://www.edx.org/course/html5-part-1-html5-coding-essentials-w3cx-html5-1x" rel="nofollow" >HTML5 Part 1: HTML5 Coding Essentials and Best Practices</a></strong> (EDx, W3Cx). Хороший курс о новых фишках HTML5, и API, которые там появились. Несмотря на название курса, нужно будет использовать <strong>очень</strong> много JavaScript. Рассматриваются темы семантики и доступности сайта для людей с ограниченными возможностями, создания форм на HTML5, работа с canvas, аудио и видео, получение геолокации и данных через камеру и микрофон пользователя.</p>
<p>Курсы на <strong><a rel="nofollow" href="http://udacity.com/" rel="nofollow" >Udacity</a></strong>. Я брала несколько прикладных курсов (Responsive Images, AJAX, OOP in JS, JS Testing). Не могу сказать, что мне очень понравилось, но кое-что полезное я узнала.</p>
<h3>В планах</h3>
<p>Курс <strong><a rel="nofollow" href="https://www.edx.org/course/html5-part-2-advanced-techniques-w3cx-html5-2x" rel="nofollow" >HTML5.2x HTML5 Part 2: Advanced Techniques for Designing HTML5 Apps</a></strong> (EDx, W3Cx). Вторая часть курса про HTML5, рассматриваются вопросы работы с мультимедиа и разработки HTML5 игр. Записалась в декабре, но пока не было времени, чтобы пройти курс.</p>
<p>Еще о двух курсах я слышала хорошие отзывы, но пока не проходила их:</p>
<p>Курс <strong><a rel="nofollow" href="https://see.stanford.edu/Course/CS106A" rel="nofollow" >CS106A &#8211; Programming Methodology</a></strong>, Стэнфорд.</p>
<p>Курс <strong><a rel="nofollow" href="https://see.stanford.edu/Course/CS106B" rel="nofollow" >CS106B &#8211; Programming Abstractions</a></strong>, Стэнфорд.</p>
<p>Занимаетесь ли вы самообразованием, и какие курсы проходили? Что понравилось больше всего?</p>
<p>Пост <a rel="nofollow" href="https://oriolo.ru/resursy-dlya-izucheniya-programmirovaniya-i-veb-razrabotki/">Ресурсы для изучения программирования и веб-разработки</a> опубликован в блоге <a rel="nofollow" href="https://oriolo.ru">Блог Ирины Соколовской</a></p>
]]></content:encoded>
			<wfw:commentRss>https://oriolo.ru/resursy-dlya-izucheniya-programmirovaniya-i-veb-razrabotki/feed/</wfw:commentRss>
		<slash:comments>147</slash:comments>
		</item>
		<item>
		<title>2016. Перерождение блога?</title>
		<link>https://oriolo.ru/2016-pererozhdenie-bloga/</link>
		<comments>https://oriolo.ru/2016-pererozhdenie-bloga/#comments</comments>
		<pubDate>Sun, 17 Jan 2016 16:46:50 +0000</pubDate>
		<dc:creator><![CDATA[Ирина]]></dc:creator>
				<category><![CDATA[О блоге и жизни]]></category>

		<guid isPermaLink="false">http://oriolo.ru/?p=3117</guid>
		<description><![CDATA[<p>Привет, друзья! В этом посте я расскажу об итогах 2015 года, планах на 2016 год, и том, какие изменения ждут этот блог. Прошло много времени с тех пор, когда я предыдущий раз писала в блог. Не потому, что мне лень писать. Основная причина в том, что за последний год мои интересы несколько сдвинулись от WordPress к front-end разработке, моя основная работа теперь &#8211; верстка и JavaScript. И поэтому я не знала, что делать с блогом, писать в него или нет, и если писать, то на какие темы. С другой стороны, возникла необходимость в пространстве, где можно было бы писать о &#8230; <a href="https://oriolo.ru/2016-pererozhdenie-bloga/">Читать далее</a></p>
<p>Пост <a rel="nofollow" href="https://oriolo.ru/2016-pererozhdenie-bloga/">2016. Перерождение блога?</a> опубликован в блоге <a rel="nofollow" href="https://oriolo.ru">Блог Ирины Соколовской</a></p>
]]></description>
				<content:encoded><![CDATA[<p>Привет, друзья! В этом посте я расскажу об итогах 2015 года, планах на 2016 год, и том, какие изменения ждут этот блог.<span id="more-3117"></span></p>
<p>Прошло много времени с тех пор, когда я предыдущий раз писала в блог. Не потому, что мне лень писать. Основная причина в том, что за последний год мои интересы несколько сдвинулись от WordPress к front-end разработке, моя основная работа теперь &#8211; верстка и JavaScript. И поэтому я не знала, что делать с блогом, писать в него или нет, и если писать, то на какие темы. </p>
<p>С другой стороны, возникла необходимость в пространстве, где можно было бы писать о всяких front-end штуках. Возник вопрос, создавать ли новый блог, и что делать с этим.</p>
<p>После долгого периода размышлений, я решила, что лучшим решением будет изменение формата этого блога, чтобы его содержание отвечало моим нынешним интересам. Теперь, я буду писать тут не только о WordPress, но и о JavaScript, HTML5, и всем том, что я использую в своей ежедневной работе.</p>
<p>Старые записи о вордпресс останутся, и будут перенесены в специальную категорию &#8220;Работа с WordPress&#8221;. Вы по-прежднему можете задавать вопросы по их содержанию, и в меру своих возможностей и способностей я буду стараться на них отвечать.</p>
<p>Также, я не бросаю поддержку своих WordPress плагинов, и, хотя у меня нет времени вести разработку также активно, как и раньше, баги я править буду.</p>
<p>Что вы об этом думаете? Пишите в комментарии!</p>
<p>Пост <a rel="nofollow" href="https://oriolo.ru/2016-pererozhdenie-bloga/">2016. Перерождение блога?</a> опубликован в блоге <a rel="nofollow" href="https://oriolo.ru">Блог Ирины Соколовской</a></p>
]]></content:encoded>
			<wfw:commentRss>https://oriolo.ru/2016-pererozhdenie-bloga/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
		<item>
		<title>Улучшенная работа с комментариями в WordPress, плагин Comments by Post Type</title>
		<link>https://oriolo.ru/plugin-comments-by-post-type/</link>
		<comments>https://oriolo.ru/plugin-comments-by-post-type/#comments</comments>
		<pubDate>Sun, 30 Aug 2015 14:13:18 +0000</pubDate>
		<dc:creator><![CDATA[Ирина]]></dc:creator>
				<category><![CDATA[Работа с WordPress]]></category>

		<guid isPermaLink="false">http://oriolo.ru/?p=3044</guid>
		<description><![CDATA[<p>В этом посте я расскажу о том, как улучшить стандартную систему работы с комментариями в консоли WordPress, если у вас несколько типов записей (а их как минимум два на любом блоге), разделив комментарии к разным типам записям по соответствующим пунктам меню.</p>
<p>Пост <a rel="nofollow" href="https://oriolo.ru/plugin-comments-by-post-type/">Улучшенная работа с комментариями в WordPress, плагин Comments by Post Type</a> опубликован в блоге <a rel="nofollow" href="https://oriolo.ru">Блог Ирины Соколовской</a></p>
]]></description>
				<content:encoded><![CDATA[<p>Возможность комментирования &#8211; одно из ключевых отличий блога. Однако иногда управление комментариями не очень удобно для администратора сайта.</p>
<h3>В чем проблема с комментариями?</h3>
<p>Стандартная система работы с комментариями является не очень удобной для пользователя, если в блоге используется несколько типов записей, для которых разрешены комментарии. </p>
<p>Как минимум, в любом блоге есть страницы и посты &#8211; то есть, два типа записей. Кроме того, могут быть еще работы из портфолио или <a href="http://oriolo.ru/goods-catalog/">товары из каталога</a>, которые тоже являются записями по своей сути. </p>
<p>Теперь представим, что для всех видов записей посетители сайта могут оставлять коммментарии. В админке будет примерно следующее:</p>
<p><a href="http://oriolo.ru/wp-content/uploads/2015/08/comments-mess.jpg" rel="lightbox[3044]"><img src="http://oriolo.ru/wp-content/uploads/2015/08/comments-mess-640x324.jpg" alt="Комментарии по-умолчанию" width="640" height="324" class="alignnone size-large wp-image-3046" srcset="https://oriolo.ru/wp-content/uploads/2015/08/comments-mess-640x324.jpg 640w, https://oriolo.ru/wp-content/uploads/2015/08/comments-mess-320x162.jpg 320w, https://oriolo.ru/wp-content/uploads/2015/08/comments-mess-768x389.jpg 768w, https://oriolo.ru/wp-content/uploads/2015/08/comments-mess-1200x608.jpg 1200w, https://oriolo.ru/wp-content/uploads/2015/08/comments-mess-50x25.jpg 50w, https://oriolo.ru/wp-content/uploads/2015/08/comments-mess.jpg 1296w" sizes="(max-width: 640px) 100vw, 640px" /></a></p>
<p>Все комментарии идут подряд, на одной странице. Причем в реальности, они будут отсортированы по дате добавления, а не по типу записи, к которой они относятся (просто у меня так случайно получилось). </p>
<p>Бардак, да. А если комментариев много, то вообще каша получается.</p>
<p>Когда я это увидела, то сразу возник вопрос: &#8220;Можно ли разделить комментарии по типам записей?&#8221;</p>
<h3>И что же делать?</h3>
<p>Варианта, в общем-то, два. Первый: смириться. Второй: использовать плагин, который позволит <strong>разделить комментарии</strong> к разным типам записям по соответствующим пунктам меню. </p>
<p>Готовый плагин я не нашла, поэтому написала собственный.</p>
<p>Посмотрите, как будут организованы комментарии с использованием плагина <strong>Comments by Post Type</strong>:</p>
<p>По пункту меню &#8220;Комментарии&#8221; будут открываться комментарии к постам:</p>
<p><a href="http://oriolo.ru/wp-content/uploads/2015/08/comments-after-all.jpg" rel="lightbox[3044]"><img src="http://oriolo.ru/wp-content/uploads/2015/08/comments-after-all-640x320.jpg" alt="Меню &quot;Комментарии&quot;" width="640" height="320" class="alignnone size-large wp-image-3056" srcset="https://oriolo.ru/wp-content/uploads/2015/08/comments-after-all-640x320.jpg 640w, https://oriolo.ru/wp-content/uploads/2015/08/comments-after-all-320x160.jpg 320w, https://oriolo.ru/wp-content/uploads/2015/08/comments-after-all-768x384.jpg 768w, https://oriolo.ru/wp-content/uploads/2015/08/comments-after-all-1200x600.jpg 1200w, https://oriolo.ru/wp-content/uploads/2015/08/comments-after-all-50x25.jpg 50w, https://oriolo.ru/wp-content/uploads/2015/08/comments-after-all.jpg 1308w" sizes="(max-width: 640px) 100vw, 640px" /></a></p>
<p>А для всех остальных типов записей будет добавлен собственный пункт меню &#8220;Комментарии&#8221;. Вот, например, отдельные комментарии для страниц:</p>
<p><a href="http://oriolo.ru/wp-content/uploads/2015/08/comments-pages.jpg" rel="lightbox[3044]"><img src="http://oriolo.ru/wp-content/uploads/2015/08/comments-pages-640x383.jpg" alt="Страниц" width="640" height="383" class="alignnone size-large wp-image-3057" srcset="https://oriolo.ru/wp-content/uploads/2015/08/comments-pages-640x383.jpg 640w, https://oriolo.ru/wp-content/uploads/2015/08/comments-pages-320x192.jpg 320w, https://oriolo.ru/wp-content/uploads/2015/08/comments-pages-768x460.jpg 768w, https://oriolo.ru/wp-content/uploads/2015/08/comments-pages-50x30.jpg 50w, https://oriolo.ru/wp-content/uploads/2015/08/comments-pages.jpg 1059w" sizes="(max-width: 640px) 100vw, 640px" /></a></p>
<p>и отдельные комментарии для товаров:</p>
<p><a href="http://oriolo.ru/wp-content/uploads/2015/08/comments-goods.jpg" rel="lightbox[3044]"><img src="http://oriolo.ru/wp-content/uploads/2015/08/comments-goods-640x391.jpg" alt="Товары" width="640" height="391" class="alignnone size-large wp-image-3058" srcset="https://oriolo.ru/wp-content/uploads/2015/08/comments-goods-640x391.jpg 640w, https://oriolo.ru/wp-content/uploads/2015/08/comments-goods-320x196.jpg 320w, https://oriolo.ru/wp-content/uploads/2015/08/comments-goods-768x469.jpg 768w, https://oriolo.ru/wp-content/uploads/2015/08/comments-goods-50x31.jpg 50w, https://oriolo.ru/wp-content/uploads/2015/08/comments-goods.jpg 1049w" sizes="(max-width: 640px) 100vw, 640px" /></a></p>
<p>Плагин без настроек, и будет автоматически работать с любыми типами записей, которые поддерживают комментирование. Все изменения касаются только администраторской части сайта, для посетителя визуально ничего не меняется.</p>
<p>На мой взгляд, использование плагина <strong>Comments by Post Type</strong> существенно улучшает систему работы с комментариям для администратора сайта. Буду рада, если кому-то еще он окажется полезным.</p>
<div class="alert alert-info">Взять плагин можно в официальном репозитории плагинов WordPress <a href="https://wordpress.org/plugins/comments-by-post-type/">здесь</a>. Исходный код размещен <a rel="nofollow" href="https://github.com/ierhyna/comments-by-post-type/" rel="nofollow" >у меня на GitHub</a>.</div>
<p>Мнения, комментарии и багрепорты, как обычно, приветствуются.</p>
<p>Пост <a rel="nofollow" href="https://oriolo.ru/plugin-comments-by-post-type/">Улучшенная работа с комментариями в WordPress, плагин Comments by Post Type</a> опубликован в блоге <a rel="nofollow" href="https://oriolo.ru">Блог Ирины Соколовской</a></p>
]]></content:encoded>
			<wfw:commentRss>https://oriolo.ru/plugin-comments-by-post-type/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Как в WordPress переместить комментарий в другой пост</title>
		<link>https://oriolo.ru/wordpress-peremestit-kommentarij/</link>
		<comments>https://oriolo.ru/wordpress-peremestit-kommentarij/#comments</comments>
		<pubDate>Thu, 12 Feb 2015 19:29:54 +0000</pubDate>
		<dc:creator><![CDATA[Ирина]]></dc:creator>
				<category><![CDATA[Работа с WordPress]]></category>

		<guid isPermaLink="false">http://oriolo.ru/?p=2986</guid>
		<description><![CDATA[<p>Бывает, что посетители блога по ошибке оставляют комментарий к другому посту. Сегодня я расскажу, как можно решить эту проблему, и переместить комментарии из одного поста в другой.</p>
<p>Пост <a rel="nofollow" href="https://oriolo.ru/wordpress-peremestit-kommentarij/">Как в WordPress переместить комментарий в другой пост</a> опубликован в блоге <a rel="nofollow" href="https://oriolo.ru">Блог Ирины Соколовской</a></p>
]]></description>
				<content:encoded><![CDATA[<p>Бывает, что посетители блога по ошибке оставляют комментарий к другому посту. Сегодня я расскажу, как можно решить эту проблему, и <strong>переместить комментарий из одного поста в другой</strong>.<span id="more-2986"></span></p>
<p>Есть два варианта, и оба они сводятся к тому, что необходимо изменить ID связанного поста в базе данных.</p>
<h3><small>Cпособ 1.</small> Правка базы данных вручную</h3>
<p>При помощи phpMyAdmin, нужно зайти в таблицу wp_comments, найти там нужный комментарий, и изменить ID записи в ячейке в столбце comment_post_ID:</p>
<p><img src="http://oriolo.ru/wp-content/uploads/2015/02/Vydelenie_038.jpg" alt="Комментарии в БД WordPress" width="528" height="313" class="alignnone size-full wp-image-2988" srcset="https://oriolo.ru/wp-content/uploads/2015/02/Vydelenie_038.jpg 528w, https://oriolo.ru/wp-content/uploads/2015/02/Vydelenie_038-320x190.jpg 320w, https://oriolo.ru/wp-content/uploads/2015/02/Vydelenie_038-50x30.jpg 50w" sizes="(max-width: 528px) 100vw, 528px" /></p>
<p>Чтобы узнать ID комментария, нужно навести в списке комментариев в Консоли курсор на дату комментария, см. на скриншоте:</p>
<p><img src="http://oriolo.ru/wp-content/uploads/2015/02/Podskazka_039.jpg" alt="Как узнать ID комментария" width="559" height="294" class="alignnone size-full wp-image-2990" srcset="https://oriolo.ru/wp-content/uploads/2015/02/Podskazka_039.jpg 559w, https://oriolo.ru/wp-content/uploads/2015/02/Podskazka_039-320x168.jpg 320w, https://oriolo.ru/wp-content/uploads/2015/02/Podskazka_039-50x26.jpg 50w" sizes="(max-width: 559px) 100vw, 559px" /></p>
<p>Аналогичным способом можно узнать ID поста в WordPress. </p>
<p>Остается только заменить в базе ID поста, к которому привязан комментарий сейчас, на ID того поста, куда вы хотите перенести комментарий.</p>
<h3><small>Cпособ 2.</small> Использование плагина Tako Movable Comments</h3>
<p>Для тех, кто не хочет заморачиваться с правкой базы, или боится сделать там ошибку, существует специальный плагин, который позволяет переносить комментарии в другие посты. Плагин называется <strong><a href="https://wordpress.org/plugins/tako-movable-comments/">Tako Movable Comments</a></strong>. Он  поддерживает функции автоподстановки поста по названию и массовый перенос комментариев в другую запись. Также есть возможность перемещать комментарии не только в пост, но и в любой другой тип записи (страница или custom post type).</p>
<p>После установки плагина, в Консоли на странице Комментарии, в выпадающем списке &#8220;Действия&#8221; появится пункт &#8220;Move Comments&#8221;, который позволяет применять действия массово к нескольким комментариям. А на странице редактирования комментария снизу добавится метабокс &#8220;Move Comments with Tako&#8221;, при помощи которого быстро и легко можно переместить текущий комментарий в любую запись, которая есть в блоге.</p>
<p>А вы когда-нибудь переносили комментарии в WordPress в другую запись?</p>
<p>Пост <a rel="nofollow" href="https://oriolo.ru/wordpress-peremestit-kommentarij/">Как в WordPress переместить комментарий в другой пост</a> опубликован в блоге <a rel="nofollow" href="https://oriolo.ru">Блог Ирины Соколовской</a></p>
]]></content:encoded>
			<wfw:commentRss>https://oriolo.ru/wordpress-peremestit-kommentarij/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Нововведения в блоге, 2015</title>
		<link>https://oriolo.ru/novovvedeniya-v-bloge-2015/</link>
		<comments>https://oriolo.ru/novovvedeniya-v-bloge-2015/#comments</comments>
		<pubDate>Sun, 11 Jan 2015 14:11:23 +0000</pubDate>
		<dc:creator><![CDATA[Ирина]]></dc:creator>
				<category><![CDATA[О блоге и жизни]]></category>

		<guid isPermaLink="false">http://oriolo.ru/?p=2952</guid>
		<description><![CDATA[<p>Всем привет! С началом нового года я решила сделать несколько нововведений в своем блоге. В этом посте я расскажу о них немного подробнее. Отдельный раздел для плагинов В прошлом году я создала и выложила на блоге два плагина &#8211; Goods Catalog и Post Series. Они вызвали большое обсуждение и большое количество вопросов (к сожалению, я даже была вынуждена закрыть комментарии к записи про плагин Goods Catalog, так как эта страница сильно тормозила при загрузке). Вопроов было много, и я не успевала отвечать всем. В то же время, я заметила, что основное количество вопросов связано с базовой функциональностью, и было вызвано &#8230; <a href="https://oriolo.ru/novovvedeniya-v-bloge-2015/">Читать далее</a></p>
<p>Пост <a rel="nofollow" href="https://oriolo.ru/novovvedeniya-v-bloge-2015/">Нововведения в блоге, 2015</a> опубликован в блоге <a rel="nofollow" href="https://oriolo.ru">Блог Ирины Соколовской</a></p>
]]></description>
				<content:encoded><![CDATA[<p>Всем привет! С началом нового года я решила сделать несколько нововведений в своем блоге. В этом посте я расскажу о них немного подробнее.<span id="more-2952"></span></p>
<h3>Отдельный раздел для плагинов</h3>
<p>В прошлом году я создала и выложила на блоге два плагина &#8211; <a href="http://oriolo.ru/goods-catalog/" title="Goods Catalog – плагин каталога товаров для WordPress">Goods Catalog</a> и <a href="http://oriolo.ru/posts-series-plugin/" title="Плагин Серии постов для WordPress">Post Series</a>. Они вызвали большое обсуждение и большое количество вопросов (к сожалению, я даже была вынуждена закрыть комментарии к записи про плагин Goods Catalog, так как эта страница сильно тормозила при загрузке). Вопроов было много, и я не успевала отвечать всем. В то же время, я заметила, что основное количество вопросов связано с базовой функциональностью, и было вызвано отсутствием руководств и инструкций для пользователей.</p>
<p>Поэтому, чтобы упросить процесс работы с плагинами, я сделала <a href="http://oriolo.ru/dev/">отдельный раздел</a>, где начала размещать более подробную информацию по работе с плагинами. При создании этого раздела я старалась учесть все вопросы, которые мне задавали по почте, в комментариях или на форуме.</p>
<p>По задумке, там будут публиковаться руководства и инструкции для пользователей плагинов, так как это удобнее, чем публиковать подобные руководства в виде постов в блоге. А блог останется площадкой для обсуждения. Сейчас там размещено <a href="http://oriolo.ru/dev/goods-catalog/quick-start">руководство &#8220;быстрый старт&#8221; по плагину Goods Catalog</a>, и готовится раздел по продвинутым возможностям.</p>
<p>Поэтому, я хотела бы спросить вас, как читателей и пользователей, о том, удобно ли пользоваться этим разделом сайта, и что, по вашему мнению, можно было бы улучшить.</p>
<h3>Подготовка руководства по созданию темы</h3>
<p>Что касается планов на год, то я хочу превратить серию по созданию темы для вордпресс в полноценное руководство, и выпустить в виде PDF-книги. И в этом я тоже хочу спросить совет у вас. Если в уроках были какие-то непонятные моменты, то пожалуйста, пишите в комментарии к урокам. Я постараюсь учесть все замечания при создании книги.</p>
<p>Пост <a rel="nofollow" href="https://oriolo.ru/novovvedeniya-v-bloge-2015/">Нововведения в блоге, 2015</a> опубликован в блоге <a rel="nofollow" href="https://oriolo.ru">Блог Ирины Соколовской</a></p>
]]></content:encoded>
			<wfw:commentRss>https://oriolo.ru/novovvedeniya-v-bloge-2015/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Почему WordPress – не самое удачное решение для создания интернет-магазина</title>
		<link>https://oriolo.ru/pochemu-wordpress-ne-samoe-udachnoe-reshenie-dlya-sozdaniya-internet-magazina/</link>
		<comments>https://oriolo.ru/pochemu-wordpress-ne-samoe-udachnoe-reshenie-dlya-sozdaniya-internet-magazina/#comments</comments>
		<pubDate>Wed, 08 Oct 2014 11:45:25 +0000</pubDate>
		<dc:creator><![CDATA[Ирина]]></dc:creator>
				<category><![CDATA[Работа с WordPress]]></category>

		<guid isPermaLink="false">http://oriolo.ru/?p=2903</guid>
		<description><![CDATA[<p>Пост представляет собой расширенный комментарий, который я написала в ответ на этот вопрос к посту &#8220;Интернет-магазин на WordPress и Woocommerce: преимущества и недостатки данного решения&#8221;. Сначала давайте определим, что понимается под &#8220;точкой продаж&#8221;. Я это понимаю как сайт, на котором представлен каталог продукции с функцией добавления товаров в корзину с последующей оплатой, и автоматизацией дальнейшей обработки заказа (минимум, это отслеживание количества оставшихся товаров на складе). Это минимум. По-хорошему, нужны для пользовательской части функции сортировки, фильтрации, подбора по параметрам, возможность указания атрибутов товара (цвет, размер и прочее), и для администраторской части &#8211; удобное (массовое) добавление товаров, импорт-экспорт (из экселя, cvs, 1C), &#8230; <a href="https://oriolo.ru/pochemu-wordpress-ne-samoe-udachnoe-reshenie-dlya-sozdaniya-internet-magazina/">Читать далее</a></p>
<p>Пост <a rel="nofollow" href="https://oriolo.ru/pochemu-wordpress-ne-samoe-udachnoe-reshenie-dlya-sozdaniya-internet-magazina/">Почему WordPress &#8211; не самое удачное решение для создания интернет-магазина</a> опубликован в блоге <a rel="nofollow" href="https://oriolo.ru">Блог Ирины Соколовской</a></p>
]]></description>
				<content:encoded><![CDATA[<p>Пост представляет собой расширенный комментарий, который я написала <a href="http://oriolo.ru/wordpress-i-woocommerce/#comment-61752">в ответ на этот вопрос</a> к посту &#8220;Интернет-магазин на WordPress и Woocommerce: преимущества и недостатки данного решения&#8221;.<br />
<span id="more-2903"></span></p>
<p>Сначала давайте определим, что понимается под &#8220;точкой продаж&#8221;. Я это понимаю как сайт, на котором представлен каталог продукции с функцией добавления товаров в корзину с последующей оплатой, и автоматизацией дальнейшей обработки заказа (минимум, это отслеживание количества оставшихся товаров на складе). </p>
<p>Это минимум. По-хорошему, нужны для пользовательской части функции сортировки, фильтрации, подбора по параметрам, возможность указания атрибутов товара (цвет, размер и прочее), и для администраторской части &#8211; удобное (массовое) добавление товаров, импорт-экспорт (из экселя, cvs, 1C), управление скидками и промо-опциями, раздельные аккаунты с разными возможностями для менеджера по продажам, администратора, и того, кто забивает продукты в каталог. Плюс регистрация пользователей-покупателей.</p>
<p>Теперь давайте посмотрим, что из этого может WP. </p>
<p>Без плагинов WP не позволяет организовать ничего из перечисленного. С плагинами, можно организовать каталог и корзину. Пользовательская часть, frontend, будет зависеть от того, какая тема оформления используется &#8211; то есть, обычно, все эти сортировки и прочие радости магазина создает не движок, а тема, а информация берется из custom fields. </p>
<p>Что касается администраторской части, то очень проблематично реализуется:</p>
<ul>
<li>разделение ролей пользователей (скорее всего, это опять отдельный плагин),</li>
<li>удобное управление товарами магазина; визуально это будет так же, как и управление записями в блоге. Что не очень удобно, когда у вас несколько тысяч товаров,</li>
<li>массовое управление товарами; вы не сможете, например, добавить ко всем нужным товарам скидку или какую-то другую опцию одним нажатием,</li>
<li>регистрация пользователей-покупателей с отдельными полями для адреса, данных о способе платежа по-умолчанию, и т.д.</li>
<li>оплата через российские платежные системы; все популярные плагины поддерживают оплату только через зарубежные сервисы</li>
<li>массовый импорт-экспорт товаров экселя, cvs, 1C</li>
</ul>
<p>Еще одна возможная проблема &#8211; это обновление (изменение) дизайна для сайта. Так как все пользовательские функции хранятся в файлах темы, а не плагина, то просто так сменить тему на любую понравившуюся уже будет нельзя, без потери функционала. А разработка темы с функциями для магазина &#8211; это, опять же, деньги.</p>
<p>Я не говорю, что сделать магазин на WordPress невозможно. Но функционал WP по-умолчанию не позволяет ничего из того, что нам потребуется. Соответственно, нужно использовать плагины, а это не всегда надежно &#8211; возможны проблемы при обновлении (обновился WP, или плагин магазина, или тема), совместимости с другими плагинами, и т.д. Как начальный вариант, интернет-магазин на WordPress может быть, и не плох. Но если товаров будет много, а продажи пойдут активно, пользоваться им будет не очень удобно. Поэтому, зачем создавать себе лишнюю работу при переносе сайта на другой движок в будущем, если уже существуют готовые специально предназначенные для этого системы?</p>
<p><strong>Обновление от 14 июня 2016 г.:</strong></p>
<p>Эту статью я писала в октябре 2014 года. То есть, полтора года назад. Тогда я была фрилансером и не имела опыта работы с большими заказами, а магазинов делала всего штуки три-четыре. За полтора года, которые прошли с момента написания статьи, я успела поработать в веб-студии, где каждый месяц разрабатывали примерно 4-5 сайтов, из которых половина были интернет магазины. Поэтому, мое мнение немного изменилось, и появились некоторые другие аргументы.</p>
<p>Во-первых, <strong>сайт должен решать задачу вашего клиента</strong>. И исходить нужно именно из этого.</p>
<p>Во-вторых, <strong>важно соотношение цены, качества, и времени</strong>, затраченного вами на разработку.</p>
<p>Например, если клиент хочет за неделю запустить магазин с небольшим бюджетом, а вы до этого работали только с какой-то одной CMS (неважно, WordPress это или что-то еще), то делайте на ней. Сроки не сорвете, проблем с изучением новой CMS не поимеете.</p>
<p>Другой пример, клиент хочет большой магазин, с большим бюджетом, ему важно, чтобы система создавала бухгалтерские отчеты, счета-фактуры, всякие формы по ГОСТу, интегрировалась с банком и прочее — делайте на Битриксе, потому что там все это из коробки. Да, если Вы с ним раньше не работали, в первый раз будет тяжело. Поэтому лучше нанять того, кто работал (опять же, исходя из соотношения цена-качество-трудозатраты).</p>
<p>Клиент хочет эксклюзивные функции, и готов за них платить &#8211; делайте уникальную систему только для него на фреймворке, а не на CMS &#8211; Laravel, Django, Ruby on Rails &#8211; на том, что лучше знаете.</p>
<p>Если клиент и разработчик — это вы в одном лице — делайте на чем вам больше хочется, вам же потом с этим работать.</p>
<p>Так что, если коротко, то нет и не может быть однозначного ответа на вопрос, на какой CMS делать сайт / интернет-магазин / что угодно.</p>
<p>Пост <a rel="nofollow" href="https://oriolo.ru/pochemu-wordpress-ne-samoe-udachnoe-reshenie-dlya-sozdaniya-internet-magazina/">Почему WordPress &#8211; не самое удачное решение для создания интернет-магазина</a> опубликован в блоге <a rel="nofollow" href="https://oriolo.ru">Блог Ирины Соколовской</a></p>
]]></content:encoded>
			<wfw:commentRss>https://oriolo.ru/pochemu-wordpress-ne-samoe-udachnoe-reshenie-dlya-sozdaniya-internet-magazina/feed/</wfw:commentRss>
		<slash:comments>86</slash:comments>
		</item>
		<item>
		<title>Интернет-магазин на WordPress и Woocommerce: преимущества и недостатки</title>
		<link>https://oriolo.ru/wordpress-i-woocommerce/</link>
		<comments>https://oriolo.ru/wordpress-i-woocommerce/#comments</comments>
		<pubDate>Mon, 18 Aug 2014 11:10:27 +0000</pubDate>
		<dc:creator><![CDATA[Ирина]]></dc:creator>
				<category><![CDATA[Работа с WordPress]]></category>
		<category><![CDATA[гостевой пост]]></category>

		<guid isPermaLink="false">http://oriolo.ru/?p=2886</guid>
		<description><![CDATA[<p>WordPress - система, функционал которой можно до неузнаваемости изменить при помощи плагинов. Среди них существуют и плагины для создания интернет-магазинов. Однако использовать WordPress для создания интернет-магазина - спорное решение, имеющее свои достоинства и недостатки. Именно этой теме посвящен этот гостевой пост. Автор публикации – Владимир, член  команды сайта ImageCMS - CMS системы для интернет-магазинов.</p>
<p>Пост <a rel="nofollow" href="https://oriolo.ru/wordpress-i-woocommerce/">Интернет-магазин на WordPress и Woocommerce: преимущества и недостатки</a> опубликован в блоге <a rel="nofollow" href="https://oriolo.ru">Блог Ирины Соколовской</a></p>
]]></description>
				<content:encoded><![CDATA[<p>WordPress &#8211; система, функционал которой можно до неузнаваемости изменить при помощи плагинов. Среди них существуют и плагины для создания интернет-магазинов. Однако использовать WordPress для создания интернет-магазина &#8211; спорное решение, имеющее свои достоинства и недостатки. Именно этой теме посвящен этот гостевой пост. Автор публикации – Владимир, член  команды сайта ImageCMS &#8211; CMS системы для интернет-магазинов.</p>
<p>Несмотря на существующий стереотип об исключительно блоговом предназначении WordPress, на этом движке уже давно можно создать практически все что угодно. Причем, во многих случаях можно обойтись даже без знаний веб-программирования, достаточно просто подобрать хороший шаблон и подобрать необходимые плагины.</p>
<p>В плане создания интернет-магазина, наиболее популярным решением является связка WordPress + <a rel="nofollow" href="http://wordpress.org/plugins/woocommerce/"  >Woocommerce</a>. Сам плагин совершенно бесплатный, и протестировать его работу можно даже на стандартной теме WordPress.</p>
<p>Относительно установки и настройки Woocommerce в Сети можно найти немало статей и мануалов, а вот информации о преимуществах и недостатках реализации интернет-магазина на этой связке, информации гораздо меньше. Поэтому, давайте поговорим именно об этом.</p>
<p>Плюсы создания интернет-магазина на WordPress, в комплекте с Woocommerce:</p>
<ul>
<li>Легкость установки. Достаточно загрузить и активировать сам плагин, после чего добавить несколько строчек в используемый шаблон, чтобы включить поддержку Woocommerce. Все, магазин активирован, и уже можно переходить к его настройке;</li>
<li>Шаблоны. Тем дизайна, изначально поддерживающих интеграцию с плагином, довольно много, а их стоимость обычно в районе $50-70. Большинство шаблонов довольно простые, но, учитывая невысокую стоимость, разработчикам можно это простить;</li>
<li>SEO-оптимизация. Как и в самом WordPress, в Woocommerce проблем с этим нет. ЧПУ, карта сайта, разметка метатегов (заголовки, описания, ключевые слова) для каждой отдельной страницы, возможность подключения аналитики – все это есть;</li>
<li>Простота добавления новых товаров и управление каталогом продуктов;</li>
<li>Юзабилити. Каталог товаров, карточка продукта и различных элементов интернет-магазина на Woocommerce, понятна для любого пользователя, поскольку все реализовано довольно просто;</li>
<li>Мультиязычность. Woocommerce изначально имеет встроенный перевод, в котором, среди поддерживаемых языков есть русский и украинский.</li>
<li>Расширение функционала. Для этого плагина существует множество как платных, так и бесплатных дополнений. Например, Wish List, вариативные товары, сравнение продуктов, и другие. В случае надобности, все это можно использовать;</li>
<li>Бесплатность. Для многих этот фактор является весомым аргументом, особенно если вы еще не определились окончательно с тематикой и у вас нет опыта продвижения. В таком случае, связка WordPress + Woocommerce будет отличным вариантом для экспериментов.</li>
</ul>
<p>Правда, как уже говорилось в начале статьи, при использовании для создания интернет-магазина движка WordPress, с плагином Woocommerce, в процессе работы начинают проявляться и определенные минусы. Я перечислю основные недостатки, чтобы помочь вам сориентироваться, если вы захотите выбрать именно это решение.</p>
<p>Минусы создания интернет-магазина на Woocommerce:</p>
<ul>
<li>Ориентация на Запад. Доступные по умолчанию платежные опции и способы доставки ориентированы преимущественно на западный рынок, поэтому, с адаптацией под определенный регион придется работать самостоятельно. Аналогичная ситуация и с доступными валютами, далеко не для всех стран доступно отображение местных денег;</li>
<li>Вариативные товары. Например, размер одежды или цвет аксессуара. Работать с такими типами товаров в Woocommerce сложнее, чем в движках, специально разработанных для создания интернет-магазина;</li>
<li>Требовательность к ресурсам. После установки плагина на WordPress, нагрузка, создаваемая на ваш сайт, серьезно вырастет. При использовании слабого хостинга, это приведет к увеличению времени загрузки страниц;</li>
<li>Неточности перевода. Локализация, представленная по умолчанию разработчика, в плане качества, будет слабее, чем специализированный перевод сделанный на заказ. Так что, вполне возможно, что при запуске интернет-магазина перевод придется дорабатывать;</li>
<li>Возможные конфликты. Необходимость устанавливать различные плагины, что-то править и изменять, может привести к тому, что одно дополнение будет конфликтовать с другим. Так что при кастомизации и расширении функционала, скорее всего, придется обращаться к специалистам.</li>
</ul>
<p>В целом, можно сказать, что в создании интернет-магазина на WordPress, с плагином Woocommerce, нет ничего сложного. Это идеальный вариант, в случае если вам нужно запустить сайт по принципу Lean Startup, то есть, с нулевыми вложениями. Но, при необходимости расширении функционала, для реализации доступных в большинстве интернет-магазинов опций, могут потребоваться вложения времени и денег, которые в результате превысят стоимость специализированной CMS, заточенной под электронную коммерцию.</p>
<p>Мы расписали основные преимущества и недостатки использования Woocommerce для WordPress, что должно помочь вам сделать определенные выводы и сэкономить время в случае выбора.</p>
<p>Этот гостевой пост подготовлен специалистами компании-разработчика <a rel="nofollow" href="http://www.imagecms.net/?utm_source=blog&#038;utm_medium=guestpost&#038;utm_campaign=guest"  >ImageCMS Shop</a> – системы для быстрого запуска современных интернет-магазинов.</p>
<p>Пост <a rel="nofollow" href="https://oriolo.ru/wordpress-i-woocommerce/">Интернет-магазин на WordPress и Woocommerce: преимущества и недостатки</a> опубликован в блоге <a rel="nofollow" href="https://oriolo.ru">Блог Ирины Соколовской</a></p>
]]></content:encoded>
			<wfw:commentRss>https://oriolo.ru/wordpress-i-woocommerce/feed/</wfw:commentRss>
		<slash:comments>33</slash:comments>
		</item>
	</channel>
</rss>