Ремонт блока питания 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. После данной манипуляции мой компьютер успешно загрузился. Используйте данный метод с осторожностью, это временное решение, до тех пор пока будет не выяснена причина неисправности.

JavaScript класс элемента

В этой записи я расскажу как с помощью JavaScript добавить или изменить атрибут class для элементов страницы. Часто этот метод используют для создания динамических элементов страницы. Чтобы в JavaScrip добавить, удалить, переключить или проверить класс элемента используют методы, которые содержит свойство classList:

  • classList.add
  • classList.remove
  • classList.toggle
  • classList.contains
  • classList.length
  • classList.item

Добавить класс

classList.add — добавить класс элемента.

Синтаксис:

element.classList.add(name);
  • name — имя класса.

В примере я использую метод classList.add чтобы добавить класс style для для элемента <div>:

<div id="div1">Hello World</div>

<script>
var div1 = document.getElementById("div1");
div1.classList.add("style");
</script>

Удалить класс

classList.remove — удалить класс элемента.

Синтаксис:

element.classList.remove(name);
  • name — имя класса.

В примере я использую метод classList.remove чтобы удалить класс style для для элемента <div>:

<div id="div1" class="style">Hello World</div>

<script>
var div1 = document.getElementById("div1");
div1.classList.remove("style");
</script>

Переключить класс

classList.toggle — добавить имя класса, если его нет, или удалить, если он есть.

Синтаксис:

element.classList.toggle(name);
  • name — имя класса.

В примере я использую метод classList.toggle чтобы добавить класс style для для элемента <div>:

<div id="div1">Hello World</div>

<script>
var div1 = document.getElementById("div1");
div1.classList.toggle("style");
</script>

Или удалить класс style, если он есть:

<div id="div1" class="style">Hello World</div>

<script>
var div1 = document.getElementById("div1");
div1.classList.toggle("style");
</script>

Проверить наличие класса

classList.contains — возвращает логическое значение, указывающее, имеет ли элемент указанный класс или нет.

Синтаксис:

element.classList.contains(name);
  • name — имя класса.

В примере я использую метод classList.contains чтобы добавить класс style для для элемента <div>:

<div id="div1" class="style">Hello World</div>

<script>
var div1 = document.getElementById("div1");
alert(div1.classList.contains("style"));
</script>

Количество классов

classList.length — возвращает количество классов в элементе.

Синтаксис:

element.classList.length;

В примере я использую метод classList.length чтобы получить количество классов для для элемента <div>:

<div id="div1" class="style1 style2">Hello World</div>

<script>
var div1 = document.getElementById("div1");
alert(div1.classList.length);
</script>

Узнать имя класса

classList.item — возвращает имя класса по его порядковому номеру.

Синтаксис:

element.classList.item(number);
  • number — порядковый номер класса.

В примере я использую метод classList.item чтобы получить имя класса по его порядковому:

<div id="div1" class="style1 style2">Hello World</div>

<script>
var div1 = document.getElementById("div1");
alert(div1.classList.item(0));
</script>

JavaScript атрибут элемента

В данной записи я расскажу как с помощью JavaScript добавить, удалить, изменить и получить значение атрибута элемента. В JavaScript для работы с атрибутами существуют следующие функции:

  • setAttribute
  • getAttribute
  • hasAttribute
  • removeAttribute

Добавить или изменить атрибут

setAttribute — функция добавляет новый атрибут или изменяет значение существующего атрибута по указанному элементу.

Синтаксис функции:

element.setAttribute(name, value);
  • name — задает имя атрибута.
  • value — указывает новое значение атрибута.

В примере я использую функцию setAttribute чтобы добавить атрибут disabled для элемента <button>:

<button id="btn">Hello World</button>

<script>
var b = document.querySelector("#btn");
b.setAttribute("disabled", "disabled");
</script>

Получить значение атрибута

getAttribute — функция вернет значение указанного атрибута элемента.

Синтаксис функции:

var attribute = element.getAttribute(attributeName);
  • attribute — строка содержащая значение атрибута.
  • attributeName — имя атрибута, значение которого вы хотите получить.

В примере я использую функцию getAttribute чтобы получить значение атрибута элемента <div>:

<div id="div1" align="center">Hello World</div>

<script>
var div1 = document.getElementById("div1");
var align = div1.getAttribute("align");

alert(align);
</script>

Проверить наличие атрибута

hasAttribute — метод возвращает логическое значение, указывающее, имеет ли элемент указанный атрибут или нет.

Синтаксис функции:

var result = element.hasAttribute(attName);
  • result — значение true или false.
  • AttName — задает имя атрибута.

В примере я использую функцию hasAttribute чтобы проверить наличие атрибута align="center" для элемента <div>:

<div id="div1" align="center">Hello World</div>

<script>
var d = document.getElementById("div1");

if (d.hasAttribute("align")) {
    alert("align center");
}
</script>

Удалить атрибут

removeAttribute — удаляет атрибут из указанного элемента.

Синтаксис функции:

element.removeAttribute(attrName);
  • attrName — строка с именем атрибута, который нужно удалить.

В примере я использую функцию removeAttribute чтобы удалить атрибут align="center" для элемента <div>:

<div id="div1" align="center">Hello World</div>

<script>
document.getElementById("div1").removeAttribute("align");
</script>

Определить код символа

В данной записи я расскажу как определить код символа с помощью обычного текстового редактора Microsoft Word. Получить код символа может понадобится в процессе работы с CSS, для того чтобы указать свойство content. В качестве значения данного свойства используются коды символов Unicode.

Определить код символа в Word

Для примера попробуем найти код символа код символа точка. Сначала откроем чистый документ Word и добавим в него символ точки ., теперь чтобы получить код символа Unicode необходимо выделить один символ и затем нажать сочетание клавиш Alt+X.

Для примера определим код символа точка. Для начала откроем чистый документ Word и добавим в него символ точки ., теперь чтобы получить код символа Unicode необходимо выделить один символ и затем нажать сочетание клавиш Alt+X.

Код символа точка в формате Unicode 002E. Чтобы указать свойство content в CSS, необходимо просто добавить обратный слэш:

.dropdown-toggle:after {
	content: "\002E";
}

Таблица кодов символов

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

Прописать IPv6 адрес в DNS

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

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

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

Для этого вам понадобится сервер с выделенным адресом IPv6. После настройки сетевых интерфейсов, необходимо добавить в DNS записи AAAA, которые будут указывать на адрес вашего сервера:

# Для IPv6
@      AAAA    2a00:1450:8003::93
www    AAAA    2a00:1450:8003::93

# Для IPv4
@      A       216.58.209.174
www    A       216.58.209.174

Таким образом, для одного домена, мы указываем одновременно А и AАAA записи, которые указывают на IPv4 и IPv6 адреса нашего сервера.

Настройка iptables для IPv6

Ранее я уже описывал процесс настройки iptables для Linux VPS. В этой записи я расскажу как использовать аналогичные правила для IPv6-подключения. В Linux для работы с протоколом IPv6 есть отдельная версия утилиты iptables — ip6tables.

В примере ниже вы можете увидеть набор правил для ip6tables, которые я использую на своем WEB-сервере. Как вы уже заметили, список достаточно небольшой. Разрешены входящие ICMP-пакеты и открыты порты 80 и 443.

ip6tables -P INPUT DROP
ip6tables -P FORWARD DROP
ip6tables -P OUTPUT ACCEPT

ip6tables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
ip6tables -I INPUT 1 -i lo -j ACCEPT
ip6tables -A INPUT -p icmpv6 -j ACCEPT

ip6tables -A INPUT -p tcp --dport http -j ACCEPT
ip6tables -A INPUT -p tcp --dport https -j ACCEPT

Для того чтобы сохранить настройки, выполните команду:

ip6tables-save > /etc/ip6tables.conf

Чтобы восстановить настройки ip6tables:

ip6tables-restore < /etc/ip6tables.conf

Авторизация прокси по NTLM в Linux

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

В корпоративной среде основанной на продуктах Microsoft, достаточно часто можно встретить использование прокси-сервера встроенного в ISA Server/Forefront TMG. Как правило, авторизация пользователей на таком прокси производится c помощью NTLM.

Если на сегодняшний день в Windows большинство программ имеют встроенную поддержку NTLM, то Linux этим похвастаться не может. Связи с чем, в данной статье речь пойдет о механизме использования прокси с NTLM аутентификацией в Linux.

Для этого мы будем использовать cntlm — небольшой, быстрый промежуточный HTTP-прокси, который возьмет функцию NTLM аутентификации на себя. Его задача пропускать через себя запросы от программ к прокси-серверу.

Установка cntlm

Чтобы установить cntlm в Debian/Ubuntu выполните следующую команду:

# apt-get install cntlm

Для установки cntlm в CentOS/RHEL необходимо подключить репозиторий Epel. После чего выполнить команду:

# yum -y install cntlm

Настройка cntlm

Откройте конфигурационный файл:

# nano /etc/cntlm.conf

Установите имя пользователя, домен, адрес и порт прокси-сервера, локальный интерфейс и порт на котором cntlm будет принимать входящие соединения:

Username        user
Domain          domain.net
Proxy           192.168.1.1:8080
Listen          127.0.0.1:3128

Запускаем cntlm:

# cntlm -c /etc/cntlm.conf

Выясним какой тип авторизации использует наш прокси-сервер:

# cntlm -c /etc/cntlm.conf -M http://ya.ru
Password:
Config profile  1/4... OK (HTTP code: 200)
----------------------------[ Profile  0 ]------
Auth            NTLMv2
PassNTLMv2      C9ACE7FB80841EB5B94D1C4E10D7DB5B
------------------------------------------------

Теперь когда мы знаем тип используемой аутентификации и хеш нашего пароля. Необходимо добавить в сntlm.conf следующие параметры:

Username        user
Domain          domain.net
Proxy           192.168.1.1:8080
Listen          127.0.0.1:3128
Auth NTLM
PassNTLMv2      C9ACE7FB80841EB5B94D1C4E10D7DB5B

Для использования cntlm в качестве локального прокси в Linux, нужно настроить переменные окружения http_proxy, https_proxy, ftp_proxy:

# export {http,https,ftp}_proxy="http://127.0.0.1:3128/"

Чтобы отключить прокси, выполните команду:

# unset {http,https,ftp}_proxy

Настройка OpenVPN через покси

Достаточно часто приходится работать в условиях ограниченного доступа к сети интернет. Область применения HTTP/HTTPS прокси достаточно узкая и используется в основном для работы браузера и прочих поддерживающих подключение через прокси программ.

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

Подробнее о установке и настройке OpenVPN вы можете прочитать в отдельной статье. Отмечу, что для работы клиента через прокси, OpenVPN должен принимать соединения на 80 или 443 порту. А для передачи данных должен использоваться протокол TCP. За данные функции отвечают следующие настройки:

port 443
proto tcp

Аналогичные настройки необходимо произвести на стороне клиента.

Если вы используете клиент OpenVPN в Windows, то его GUI поддерживает настройку соединения через прокси. В случае запуска клиента на Linux или в режиме службы, необходимо прописать адрес прокси и данные для авторизации в конфигурационном файле OpenVPN.

OpenVPN поддерживает соединения через HTTP прокси-сервер, со следующими режимами аутентификации:

  • Без проверки подлинности
  • Обычная проверка подлинности
  • NTLM аутентификация

Предположим, что наш HTTP прокси расположен в локальной сети по адресу 192.168.1.1 и принимает соединения на 8080 порту. В этом случае, необходим добавить в конфигурационный файл клиента OpenVPN следующие настройки:

# Без проверки подлинности
http-proxy 192.168.1.1 8080

# Обычная проверка подлинности
http-proxy 192.168.1.1 8080 stdin basic

# NTLM аутентификация
http-proxy 192.168.1.1 8080 stdin ntlm

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

http-proxy 192.168.1.1 8080 proxy-auth.txt ntlm

Содержимое файла proxy-auth.txt:

username
password

Иконки CSS

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

Я испытываю слабость ко всем нестандартным штукам. Поэтому, в этом посте хочу рассказать о понравившейся мне библиотеке CSS-иконок — Fort Awesome Icons. Библиотека иконок реализована на чистом CSS. Кроме статических вариантов в сборке представлены анимированные CSS-иконки. С полным набором CSS-иконок можно ознакомится на этой странице. Чтобы использовать CSS-иконки на своем сайте, необходимо добавить в одержимое HTML-документа код из примера ниже.

<i class="fa fa-camera-retro fa-lg"></i> fa-lg
<i class="fa fa-camera-retro fa-2x"></i> fa-2x
<i class="fa fa-camera-retro fa-3x"></i> fa-3x
<i class="fa fa-camera-retro fa-4x"></i> fa-4x
<i class="fa fa-camera-retro fa-5x"></i> fa-5x

В зависимости от требуемого размера элемента, необходимо указать атрибут class. С полной информацией по использованию иконок можно ознакомится на странице GitHub.

Еще хороший ресурс с большим количеством иконок на различные темы icons8.

Создать пользователя и базу MySQL

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

Короткая заметка на тему как создать пользователя и базу MySQl для дальнейшей установки WordPress или любого другого движка. Все действия будем выполнять через консоль. В процессе понадобится создать безопасный пароль, я рекомендую сгенерировать случайную комбинацию с помощью сервиса Password Generator.

Чтобы создать базу MySQL заходим в mysql клиент под root. Параметры databasename, user и password нужно заменить на свои.

mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or g.
Your MySQL connection id is 11455

Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.

mysql> create database databasename;
Query OK, 1 row affected (0.00 sec)

mysql> grant all privileges ON databasename.* TO "user"@"localhost"
    -> identified by "password";
Query OK, 0 rows affected (0.00 sec)
  
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

mysql> exit
Bye

Удалить пользователя и базу MySQL:

drop user 'user'@'localhost';
drop database databasename;