VMware образы операционных систем

Дата: 24.01.2016Метки:

По специфике своей работы, мне часто приходится использовать VMware образы операционных систем. Когда образ виртуальной машины становится ненужен, я его просто удаляю. Если задуматься, можно заметить, что много времени уходит только на то, чтобы повторно выполнить установку операционной системы на виртуальную машину VMware.

Я решил оптимизировать рабочий процесс. Для этого я решил создать свой архив VMware образов операционных систем. Для установки я использую минимальные образы NetInstall/Minimal дистрибутивов Linux. После распаковки VMware образ можно сразу использовать для быстрого разворачивания операционной системы и тестирования программного обеспечения.

Архив VMware образов операционных систем Данный создан в первую очередь для себя и всех других людей, которые часто используют виртуализацию VMware в процессе своей работы. Имя пользователя user, пароль 123.

VMware образы операционных систем:

  • CentOS 7.1 64-bit
  • Debian 8.3 64-bit
  • Ubuntu Server 15.10 64-bit

Все VMware образы доступны для скачивания с сервера Яндекс.Диск.

Очистка кэша FastCGI в Nginx

Дата: 23.01.2016Метки:

Если у вас в Nginx настроено кэширование с помощью параметра fastcgi_cache, то вы наверняка задумывались над реализацией функции, которая каждый раз при обновлении страниц сайта выполняла бы автоматическую очистку. Для этих целей в Nginx предусмотрена штатная директива fastcgi_cache_purge, которая задает условия для использования запроса на очистку кэша.

Проблема заключается в том, что использование директивы fastcgi_cache_purge доступно только как часть коммерческой подписки Nginx. Как альтернативное решение я предлагаю использовать модуль ngx_cache_purge. Нужно отметить, что кроме fastcgi модуль поддерживает очистку Proxy, SCGI и uWSGI кэш в Nginx.

Для очистки кэша на стороне CMS должна работать специальная функция, которая при каждом обновлении будет отправлять серверу специально сформированных запрос. В этой статье я расскажу о использовании директивы fastcgi_cache_purge на примере WordPress, для которого уже есть готовый плагин.

Чтобы добавить поддержку директивы fastcgi_cache_purge нам необходимо собрать Nginx из исходников. В своей предыдущей статье я уже описывал процесс сборки Nginx из исходников. Из этой инструкции вам необходимо выполнить все пункту предшествующие процессу сборки пакета. Если кратко, то у вас должны быть загружены исходники Nginx и все необходимы для сборки пакеты.

Далее загружаем и распаковываем исходники модуля ngx_cache_purge:

# wget http://labs.frickle.com/files/ngx_cache_purge-2.3.tar.gz
# tar -xzf ngx_cache_purge-2.3.tar.gz

Откройте файл, отвечающий за параметры сборки пакета:

# nano /tmp/nginx-1.9.9/debian/rules

В этом файле нужно найдти секцию override_dh_auto_build и добавить в конец директиву --add-module, которая указывает на директорию размещения модуля ngx_cache_purge:

CFLAGS="" ./configure \
        --prefix=/etc/nginx \
        --sbin-path=/usr/sbin/nginx \
        --conf-path=/etc/nginx/nginx.conf \
        --error-log-path=/var/log/nginx/error.log \
        --http-log-path=/var/log/nginx/access.log \
        --pid-path=/var/run/nginx.pid \
        --lock-path=/var/run/nginx.lock \
        --http-client-body-temp-path=/var/cache/nginx/client_temp \
        --http-proxy-temp-path=/var/cache/nginx/proxy_temp \
        --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp \
        --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp \
        --http-scgi-temp-path=/var/cache/nginx/scgi_temp \
        --user=nginx \
        --group=nginx \
        --with-http_ssl_module \
        $(WITH_HTTP2) \
        --with-cc-opt="$(CFLAGS)" \
        --with-ld-opt="$(LDFLAGS)" \
        --add-module=/usr/src/ngx_cache_purge-2.3
dh_auto_build

Сохраняем файл, переходим в корень каталога с исходниками Nginx и запускаем команду сборки пакета:

# cd /usr/src/nginx-1.9.9
# dpkg-buildpackage -rfakeroot -uc -b

Команда выполнит компиляцию исходников и автоматически соберет deb-пакет nginx_1.9.3-1~jessie_i386.deb. Установим Nginx запустив команду:

# dpkg -i nginx_1.9.3-1~jessie_i386.deb

Откройте файл и измените настройки виртуального хоста Nginx. Добавьте в секцию server, который будет отвечать за функцию очистки кэша FastCGI:

location ~ /purge(/.*) {
    fastcgi_cache_purge KEYS_ZONE_NAME "$scheme$request_method$host$1";
}

Чтобы работала функция очистки кэша, вам необходимо заменить KEYS_ZONE_NAME на свое значение параметра keys_zone. Проверяем конфигурацию и применяем настройки Nginx. Для Debian/Ubuntu выполните команды:

# nginx -t
# service nginx reload

И последний шаг. В админке WordPress установите плагин Nginx Helper.

Установка PHP 7 в CentOS 7

Дата: 22.01.2016Метки: ,

В данной статье я расскажу о установке PHP 7, выпуск финальной версии которого стал одним из важнейших событий прошедшего года. Команда разработчиков выполнила просто огромную работу, судя по тестам, производительность PHP 7 вплотную приблизилась к показателям конкурента HHVM. Следует отметить, что рост производительности был достигнуть за счет оптимизации и никак не повлиял на увеличение потребления ресурсов.

Если сравнивать с предыдущей версией, то по моему мнению, PHP 7 абсолютно лишен недостатков. Исходя из имеющейся информации, можно сделать прогноз, что темпы перехода на PHP 7 будут достаточно быстрыми. Ранее я уже описывал процесс установки PHP 7 из исходников или репозитория Debian, в этой записи я расскажу как быстро установить PHP 7 в Cent OS 7.

На данный момент в официальном репозитории Cent OS 7 отсутствуют пакеты для установки PHP 7. Связи с чем, стоит немного повременить с переводом на PHP 7 серьезных коммерческих проектов. Зато будет не лишним установить PHP 7 на тестовый серевер, чтобы заранее проверить совместимость приложений и ознакомиться с новыми возможностями языка PHP 7.

В этой записи я опишу свой опыт установки PHP 7 для использования его в сочетании с веб-сервером Nginx. Для установки я использовал систему CentOS 7.1 и пакеты PHP 7 из неофициального репозитория IUS.

Установка PHP 7 в Cent OS 7

Перед установкой PHP 7 нам необходимо подключить к Cent OS репозиторий IUS. Для этого нам необходимо загрузить и выполнить специальный скрипт, после его запуска репозиторий IUS будет автоматически добавлен в систему.

Переходим в каталог tmp и загружаем скрипт на сервер:

cd /tmp
curl 'https://setup.ius.io/' -o setup-ius.sh

Затем выполните скрипт командой:

bash setup-ius.sh

Если на сервере присутствует PHP, удалите все установленные пакеты. Для первой установки PHP 7 на сервере, следующий пункт нужно пропустить.

yum remove php-fpm php-cli php-common

Чтобы установить PHP 7 и модули php-fpm, php-mysqlnd, выполните команду:

yum install php70u-fpm-nginx php70u-cli php70u-mysqlnd

Я установил PHP 7 с минимальным набором модулей. В дальнейшем вы можете установить дополнительные модули по своему усмотрению. Если у вас процесс установки прошел без ошибок — я вас поздравляю. У меня же первый блин был комом, с первой попытки установить PHP 7 в CentOS мне не удалось. Подробнее описание решения проблемы вы можете прочитать в конце статьи.

Настройка PHP 7 для работы с Nginx

После завершения установки PHP 7, нам нужно внести изменения в конфигурацию PHP-FPM и Nginx. По умолчанию в PHP 7 для соединений использует локальный TCP-порт. Общеизвестным фактом является то, что для лучшего быстродействия PHP-FPM и Nginx желательно использовать Unix-сокет.

Используя PHP-FPM можно обрабатывать несколько пулов дочерних процессов. По умолчанию в PHP 7 сконфигурирован на использование одного общего пула WWW. Его настройки хранятся в файле /etc/php-fpm.d/www.conf. Откройте этот файл в текстовом редакторе:

nano /etc/php-fpm.d/www.conf

Закомментируйте строку listen = 127.0.0.1:9000, она отвечает за работу PHP-FPM через порт 9000. Вместо нее раскомментируйте строку listen = /run/php-fpm/www.sock расположенную ниже.

;listen = 127.0.0.1:9000
; WARNING: If you switch to a unix socket, you have to grant your webserver user
;          access to that socket by setting listen.acl_users to the webserver user.
listen = /run/php-fpm/www.sock

Затем найдите блок listen.acl_users и раскомментируйте в нем строку listen.acl_users = nginx.

; When POSIX Access Control Lists are supported you can set them using
; these options, value is a comma separated list of user/group names.
; When set, listen.owner and listen.group are ignored
;listen.acl_users = apache,nginx
;listen.acl_users = apache
listen.acl_users = nginx
;listen.acl_groups =

Закройте файл и сохраните изменения. Теперь нам необходимо изменить конфигурацию Nginx, для того чтобы веб-сервер использовал сокет во время взаимодействия с PHP-FPM. Откройте файл:

nano /etc/nginx/conf.d/php-fpm.conf

Нам необходимо переключить способ взаимодействия Nginx и PHP-FPM с tcp-порта 9000 на использование сокета. Для этого измените содержимое файла следующим образом:

# PHP-FPM FastCGI server
# network or unix domain socket configuration

upstream php-fpm {
        #server 127.0.0.1:9000;
        server unix:/run/php-fpm/www.sock;
}

Закройте файл и сохраните изменения. Чтобы новые директивы вступили в силу нам необходимо перезапустить PHP-FPM и Nginx:

systemctl restart php-fpm
systemctl restart nginx

Вы можете проверить статус каждого сервиса, используя systemctl:

systemctl status php-fpm
systemctl status nginx

Проверка работы PHP 7

После того как мы установили PHP 7 и подготовили к работе веб-сервер Nginx, необходимо убедится, что все настроено правильно. Начните с проверки версии PHP, для этого выполните команду:

# php -v
PHP 7.0.1 (cli) (built: Dec 18 2015 16:35:26) ( NTS )
Copyright (c) 1997-2015 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2015 Zend Technologies

Затем создадим в корневом каталоге веб-сервера файл info.php:

nano /usr/share/nginx/html/info.php

Скопируйте в файл следующий код:

<?php
phpinfo();

Закройте файл и сохраните изменения. Введите в браузере ip-адрес или доменное имя вашего сервера и укажите название файла info.php:

http://server_ip/info.php

Если вы правильно установили и настроили PHP 7 в CentOS, вы должны увидеть страницу содержащую информацию о конфигурации PHP 7.

Проблемы во время установки PHP 7

Далее я расскажу о небольшой проблеме, с которой я столкнулся во время установки PHP 7 на CentOS 7.1.

Error: Package: php70u-fpm-7.0.1-1.ius.centos7.x86_64 (ius)
           Requires: libsystemd.so.0()(64bit)
Error: Package: php70u-fpm-7.0.1-1.ius.centos7.x86_64 (ius)
           Requires: libsystemd.so.0(LIBSYSTEMD_209)(64bit)
 You could try using --skip-broken to work around the problem
 You could try running: rpm -Va --nofiles --nodigest

Очень часто хостеры вносят свои изменения в шаблоны контейнеров виртуальных машин. В моем случае, проблема была вызвана тем, что CentOS 7 использовала кривые зеркала centos-base и testing репозиториев. Для тех, кто столкнулся с подобной проблемой, откройте файл:

nano /etc/yum.repos.d/CentOS-Base.repo

Чтобы устанавливать пакеты из официальных репозиториев CentOS 7, используйте конфигурацию ниже:

[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

#released updates
[updates]
name=CentOS-$releasever - Updates
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

Редактор по умолчанию в Ubuntu

Дата: 20.01.2016Метки:

В процессе работы в Ubuntu по ошибке выбрал в качестве редактора по умолчанию ed. Для того чтобы изменить редактор по умолчанию обычно необходимо просто выполнить команду:

# update-alternatives --config editor

Как оказалось, данный метод не работает если запустить команду из под sudo su. Что бы я не делал, crontab -e упорно не хотел использовать редактор nano.

Немного погуглив, на одном из форумов нашел простое решение моей проблемы. Чтобы сбросить настройки и повторно выбрать редактор по умолчанию в Debian/Ubuntu удалите файл:

rm $HOME/.selected_editor

Настройка сети на VPS от OVH

Дата: 19.01.2016Метки:

Настройка сети на виртуальном сервере OVH имеет свои нюансы. После установки сервер автоматически получает настройки сети по DHCP. Если вы хотите использовать дополнительный адрес, тогда вам необходимо вручную изменить настройки сетевого интерфейса eth0. В этой заметке я опишу процесс настройки статического ip-адреса и расскажу как добавить дополнительный адрес для вашего сервера.

Все действия производятся на сервере с установленной системой Debian/Ubuntu. Для начала нам необходимо получить информацию о сетевых настройках, которые сервер автоматически получил по DHCP. Для этого поочередно выполните команды ifconfig и route.

В моем случае я получил следующий результат:

# ifconfig
eth0      Link encap:Ethernet  HWaddr ff:ff:ff:ff:ff:ff
          inet addr:41.23.36.11  Bcast:41.23.36.11  Mask:255.255.255.255
          inet6 addr: fe80::f816:3eff:fedc:9a4/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1622483 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1351266 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:1106814117 (1.0 GiB)  TX bytes:1152293091 (1.0 GiB)
# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         41.23.36.1     0.0.0.0         UG    0      0        0 eth0
41.23.36.1     *               255.255.255.255 UH    0      0        0 eth0

Для настройки сети нас интересует следующая информация:

Inet addr: 41.23.36.11
Bcast: 41.23.36.11
Mask: 255.255.255.255
Gateway: 41.23.36.1

Откройте файл:

nano /etc/network/interfaces

Закомментируйте строки, которые отвечают за автоматическое получения адреса по DHCP:

#auto eth0
#iface eth0 inet dhcp

И добавьте свои настройки сети, как это сделано в примере ниже:

auto eth0
iface eth0 inet static
address 41.23.36.11
netmask 255.255.255.255
broadcast 41.23.36.11
post-up route add 41.23.36.1 dev eth0
post-up route add default gw 41.23.36.1
post-down route del default gw 41.23.36.1
post-down route del 41.23.36.1 dev eth0

Если вы хотите использовать дополнительный ip-адрес для вашего сервера, необходимо добавить алиас для сетевого интерфейса eth0:

auto eth0:0
iface eth0:0 inet static
address 41.24.32.121
netmask 255.255.255.255
broadcast 41.24.32.121

WordPress и оригинальные тексты Яндекс

Воровство контента может стать настоящей головной болью для владельцев молодого сайта. Проблема в том, что защитить контент от воровства практически невозможно. Зато мы можем предупредить возможные последствия со стороны поисковой системы с помощью сервиса Оригинальные тексты Яндекс.

Обидно, когда украденный контент отображается в поисковой выдаче перед вашим сайтом. В силу возраста и раскрученности ресурса, страницы быстро индексируются и поисковой система считает сайт, который украл ваш материал в качестве первоисточника. Но это не самая большая проблема, с которой вы можете столкнуться.

Парадокс заключается в том, что бывают случаи, когда другие сайты делают copypast и добросовестно в качестве источника указывают активную ссылку на сайт, который украл ваш материал. В такой ситуации у нас нет ни одного шанса доказать свое авторство поисковой системе.

Чтобы защитить сайт от воровства контента можно попытаться заранее оповестить поисковую систему разместив анонс на материл в социальных сетях. Другим способом, который позволит поисковой системе определить первоисточник материала, является использование сервиса Оригинальные тексты Яндекс. Для этого перед публикацией материала необходимо добавить текст в форму Оригинальные тексты Яндекс.

Чтобы облегчить задачу по добавлению контента в сервис Оригинальные тексты Яндекс, в WordPress можно использовать специальный плагин Webmaster Yandex. Чтобы использовать плагин сайт должен быть добавлен в Яндекс.Вебмастер. После активации плагина в админке WordPresss необходимо настроить доступ к API сервиса.

Скрыть версию PHP и Nginx

Дата: 09.01.2016Метки: ,

Если просмотреть заголовок ответа веб-сервера, можно получить информацию о используемой версии PHP и Nginx на сервере. В случае регулярных обновлений информация не представляет серьезной опасности. Тем не менее, если есть такая возможность, лучше лишний раз перестраховаться и предусмотрительно скрыть версию PHP и Nginx от любопытных глаз.

Для примера с помощью этого сервиса я получил заголовок ответа веб-сервера для первого попавшегося сайта:

Server: nginx/1.9.5
Content-Type: text/html; charset="UTF-8"
Transfer-Encoding: chunked
Connection: keep-alive
Vary: Accept-Encoding
X-Powered-By: PHP/5.5.9-1ubuntu4.14
Set-Cookie: PHPSESSID=bsi4talrrugln1btgfen1mjmj3;
expires="Sun, 08-Jan-2017 19:27:38 GMT"; Max-Age=31536000;
path=/
Cache-Control: no-cache
Date: Sat, 09 Jan 2016 19:27:38 GMT
Content-Encoding: gzip

Как видите, мы без особого труда можем точно установить используемую версию PHP, Nginx, название и версию установленной операционной системы.

Чтобы скрыть версию PHP, измените значение параметра expose_php в файле php.ini:

expose_php = off

Чтобы скрыть версию Nginx, необходимо добавить в секцию http следующий параметр:

server_tokens off;

Не забудьте перезапустить PHP и Nginx, для того чтобы изменения вступили в силу.

Работа с опциями в WordPress

В этой заметке я кратко опишу процесс создания, редактирования и изменения и удаления опций в WordPress. Изначально потребность работы с опциями в WordPress у меня возникла в процессе написания функции для минификации содержимого файлов CSS. Чтобы не выполнять постоянно одну и туже операцию, нужно было хранить в базе WordPress хэш искомого файла стилей.

Создать новую опцию

Для создания опции в WordPress используется функция add_option(). После первого выполнения функция создает в базе WordPress новую запись, которую WordPress будет использовать для хранения настроек. Если опция с указанным именем уже существует, то в процессе вызова функции ничего не произойдет.

Синтаксис использования функции add_option():

add_option($name, $value = '', $deprecated = '', $autoload = 'yes');

Описание параметров:

  • $name — название опции, которая будет добавлена. Используйте слова в нижнем регистре, вместо пробела используйте нижнее подчеркивание.
  • $value — значение опции.  Может быть пустым.
  • $deprecated - текст описывающий опцию. Параметр больше не используется. Оставляем значение пустым.
  • $autoload — должна ли опция загружаться автоматически функцией wp_load_alloptions. Использует значения: yes или no.

Пример использования функции для добавления новой опции в WordPress:

add_option("my_option_name", '123', '', 'yes');

Необходимо отметить, что описание опций больше не используется в WordPress, поэтому, третий параметр всегда указывается пустым.

Получить значение опции

Когда новая опция создана в базе WordPress, ее значение можно получить с помощью функции get_option(). Если в MySQL опция с указанным именем не существует, функция вернет FALSE.

Синтаксис использования функции get_option():

get_option($name, $default);

Описание параметров:

  • $name — название опции, значение которой необходимо получить.
  • $value — значение по умолчанию, если никакого значения не вернулось.

Обновить значение опции

Как правило, функцию update_option() используют для изменения существующих опций в WordPress. Но эту функцию можно использовать и для создания новой опции. В этом случае update_option() проверяет наличие опции с указанным именем в базе данных. В случае ее отсутствия, будет автоматически вызвана функция add_option().

update_option($name, $newvalue);

Описание параметров:

  • $name — название опции, значение которой необходимо изменить.
  • $newvalue — новое значение для опции.

Пример использования функции для изменения значения опции в WordPress:

$option_name = 'my_option'; 
$newvalue = '123';
if ( get_option($option_name) ) {
    update_option($option_name, $newvalue);
}

Связи с тем, что при отсутствии опции с указным именем функция update_option() создает новую запись в базе, перед ее использованием рекомендуется выполнить проверку наличия опции.

Удалить опцию из базы WordPress

Чтобы удалить опцию из таблицы options в базе данных WordPress необходимо использовать функцию delete_option().

Синтаксис использования функции delete_option():

delete_option( $name );
  • $name — название опции, которая будет удалена.

Пример использования функции для удаления одной или нескольких опций в WordPress:

// Описание функции
function deleteOptions()
{
        // Массив с названиями опций
	$args = func_get_args();
	$num = count($args);
        
        // Удаление одной опции
	if ($num == 1) {
		return (delete_option($args[0]) ? TRUE : FALSE);
	}
        // Удаление группы опций
	elseif (count($args) > 1)
	{
		foreach ($args as $option) {
			if ( ! delete_option($option))
				return FALSE;
		}
		return TRUE;
	}
	return FALSE;
}

// Вызов функции deleteOptions
if (deleteOptions('is_installed', 'my_plugin_version', 'my_option'))
   echo 'Опции были удалены!';
else
   echo 'Ошибка в процессе удаления!';

Ремонт блока питания Chieftec APS-600C

Через несколько дней после замены видеокарты сломался блок питания Chieftec APS-600C на домашнем компьютере. Если включить компьютер, то блок питания подает напряжение на материнскую плату, на процессорном кулере вращается вентилятор, но компьютер не загружается.

Перед покупкой специально выбирал блок питания понадежней. Предыдущий мой блок питания марки Chieftec без проблем работает и по сей день уже около 10-ти лет, к сожалению, Chieftec APS-600C прослужил только 3 года. Теперь придется пересмотреть мое отношения к этому производителю.

Мультиметром проверил напряжение на выходе блока питания. На удивление, напряжение полностью соответствует стандарту. Если комуто понадобиться, то для проверки напряжения использовал схему по эой ссылке. Для включения блока питания отдельно от компьютера, вам нужно замкнуть разъем, который ведет к зеленому проводу с любым соседним черного цвета.

У меня нет опыта в ремонте электроники, поэтому пришлось выполнить быстрый ремонт (если это можно так называть) по информации найденной в интернете. Причина проблемы была в том, что на разьем, отмеченный как PG 8, не поступал сигнал Power Good.

В блоках питания Chieftec для контроля напряжения используется микросхема PS224. В обычной ситуации микросхема подает напряжение 5В на гнездо PG 8. В случае каких-либо неисправностей, на этот разъем напряжение не поступает (в моем случае напряжение было около 0.3В).

В интернете есть информация, что данная проблема может быть вызвана неисправностью микросхемы PS224, но лично я в этом сомневаюсь. Проверять не стал, нужно было быстро привести блок питания в рабочее состояние до покупки нового. В свободное время можно будет заменить PS224. Микросхема продается в интернете и стоит недорого.

В моем случае напряжение на выходе блока питания было в норме. Поэтому, в качестве быстрого решения проблемы, можно подать 5В с цепи питания на разъем PG 8. После данной манипуляции мой компьютер успешно загрузился. Используйте данный метод с осторожностью, это временное решение, до тех пор пока будет не выяснена причина неисправности.

Подсветка синтаксиса в WordPress

Достаточно длительное время я присматривался к различным решениям для подсветки синтаксиса в WordPress. Основными требованиями было легкость, простота установки и использования. Громоздкие плагины для WordPress были сразу мной откинуты. Среди всех решений, мне больше всего приглянулись Highlight.js, Prism.

Оба скрипта написаны на JavaScript, имеют примерно одинаковый размер благодаря наличию выбора языков программирования. Оба скрипта легко прикрутить к WordPress без использования дополнительных плагинов. Вы можете использовать любой из этих скриптов, я же остановил свой выбор на Prism.

Настройка Prism в WordPress

Начну с того, что Prism имеет неудобный формат выделения области кода. В прочем, Highlight.js имеет аналогичный недостаток. Для использования Prism необходимо выделить код следующим образом:

<pre class="lang-javascript"><code class="lang-javascript">
/* Использование Prism для подсветки синтаксиса JavaScript */
<code></pre>

Мне совершенно не нравится такой формат выделения кода, поэтому я решил его заменить на более лаконичный:

<pre class="lang-javascript">
/* Использование Prism для подсветки синтаксиса JavaScript */
</pre>

Для начала необходимо выбрать набор языков программирования для подсветки кода и скачать Prism по этой ссылке. После того как скачали Prism, в файле prism.js необходимо найти следующую строку:

for(var a,r=document.querySelectorAll('code[class*="language-"], [class*="language-"] code, code[class*="lang-"], [class*="lang-"] code'),l=0;a=r[l++];

Вручную измените code на pre или полностью замените строку на код из примера ниже:

for(var a,r=document.querySelectorAll('pre[class*="language-"], [class*="language-"] pre, pre[class*="lang-"], [class*="lang-"] pre'),l=0;a=r[l++];

После чего копируем файл prism.js в каталог с темой WordPress. Далее необходимо скопировать стили для подсветки синтаксиса в содержимое файла style.css вашей темы. В процессе может понадобится настроить стили под дизайн вашего сайта.

Подключаем загрузку скрипта в functions.php:

function add_prism() {
    wp_register_script('prismjs', get_stylesheet_directory_uri() . '/prism.js', false, '1.0', true);
    wp_enqueue_script('prismjs');
}
add_action('wp_enqueue_scripts', 'add_prism');

Для подсветки кода в WordPress выделяем область помощью тега pre, а для имени стиля указываем язык программирования:

<pre class="lang-php">
/* Использование Prism для подсветки синтаксиса PHP */
</pre>