Шпаргалки Просто Программиста
Как увеличить размер диска в Proxmox VE: пошаговое руководство
Виртуализация стала неотъемлемой частью современной ИТ-инфраструктуры, и Proxmox VE — одна из самых популярных платформ для управления виртуальными машинами. Однако при активном использовании ресурсов часто возникает необходимость расширить дисковое пространство виртуальной машины. Хотя сам Proxmox позволяет легко увеличить объём виртуального диска через веб-интерфейс, этого недостаточно: операционная система внутри виртуальной машины не всегда автоматически распознаёт новые размеры. В этой статье мы рассмотрим, как корректно расширить раздел файловой системы после увеличения диска в Proxmox VE.
Зачем нужны программисты?
В современном мире цифровые технологии проникают в практически все сферы жизни: от домашних устройств и медицинского оборудования до управления бизнесом и образования. В этом контексте роль программистов становится критически важной.
Отладка заголовков в Nginx
Сервер Nginx позволяет передавать заголовки при проксировании через директивы:
Синтаксис: proxy_set_header поле значение;
Умолчание:
proxy_set_header Host $proxy_host;
proxy_set_header Connection close;
Контекст: http, server, location
Выглядит в конфиге это примерно так:
location / {
proxy_pass http://headers;
proxy_set_header X-FORWARDED-FOR $remote_addr;
}
Я столкнулся с тем, что не всегда и не все заголовки передаются, но об этом позже. Отсюда возник вопрос: каким образом определить на проксирующем nginx, какие переданы заголовки.
Работа с API криптобиржи Yobit на golang - Получение собственного баланса
Все примеры работают с go version go1.9.2 linux/amd64
Работа с API для торгов
Получение своего баланса
Прежде всего для работы с api торгов нужно создать пару Ключ - Секрет на странице https://yobit.io/ru/api/keys/
Все будет немного сложнее, чем в предыдущем примере. Именно авторизация на бирже и подпись параметров вызвали у меня больше всего вопросов. Потому-то и хочется оставить рабочий код здесь.
Для начала каждый запрос нам нужно будет подписывать. И чтобы запросы (и подписи) отличались, биржа требует указывать каждый раз параметр nonce в виде целого числа в диапазоне 1..2147483646. При чем в каждом следующем запросе это число должно быть больше, чем в предыдущем. Для обнуления нужно создать новый ключ.
Для получения параметра nonce напишем отдельную функцию, чтобы мы могли пользоваться им даже после рестарта приложения:
import (
"io/ioutil"
"strconv"
)
func GetNonce(key string) (nonce int, err error) {
nonceFileName := "nonce." + key[0:8] + ".txt"
nonceBytes, err := ioutil.ReadFile(nonceFileName)
if err == nil {
nonce, _ = strconv.Atoi(string(nonceBytes))
}
nonce++
err = ioutil.WriteFile(nonceFileName, []byte(strconv.Itoa(nonce)), 0644)
return
}
Для того, чтобы хранить параметр для каждого ключа отдельно, используем часть ключа как часть имени файла.
Работа с API криптобиржи Yobit на golang - Получение доступных пар
Все примеры работают с go version go1.9.2 linux/amd64
Работа с открытым API
Получение информации о доступных валютных парах
Посмотрим, что написано в документации:
Пример запроса: https://yobit.net/api/3/info
Пример ответа:
{
"server_time":1418654531,
"pairs":{
"ltc_btc":{
"decimal_places":8,
"min_price":0.00000001,
"max_price":10000,
"min_amount":0.0001,
"hidden":0,
"fee":0.2
}
...
}
}
В первую очередь для работы с json-api нам потребуется создать структуры данных, в котрые мы будем разбирать полученный JSON.
Настройка мониторинга php-fpm через Datadog
Для настройки мониторинга необходимо внести некоторые изменеия в pool, который собираемся мониторить, настройку хоста в nginx и подключить конфиг агенту datadog.
Для начала откроем файл пула и раскоментируем следующие строки:
pm.status_path = /status
ping.path = /ping
ping.response = pong
Используем в Ubuntu sudo без пароля
Если вам нужно часто управлять вашим домашним компьютером или сервером, может надоедать постоянно вводить пароль с командой sudo. Решение этого вопроса нашлось на http://askubuntu.com/a/147265.
Достаточно открыть терминал и ввести команду:
sudo visudo
после чего в последний раз ввести пароль.
Эта команда откроет конфигурацию sudo, в которую внизу нужно прописать:
username ALL=(ALL) NOPASSWD: ALL
где username - это имя вашего пользователя.
Сравнение 2х основных утилит для сжатия статических файлов
Решил сравнить способности по сжатию javascript у 2х основных утилит closure compiler от google и yui compressor от yahoo.
Будем сравнивать с несжатой и сжатой версией jquery:
java -jar compiler.jar --js jquery-1.11.1.js --js_output_file=jquery-1.11.1.cc.js
java -jar compiler.jar --compilation_level ADVANCED_OPTIMIZATIONS --js jquery-1.11.1.js --js_output_file=jquery-1.11.1.cca.js
java -jar yuicompressor.jar jquery-1.11.1.js -o jquery-1.11.1.yui.js
| jquery-1.11.1.js | 282766 |
| jquery-1.11.1.min.js | 95786 |
| jquery-1.11.1.cca.js | 87933 |
| jquery-1.11.1.cc.js | 96284 |
| jquery-1.11.1.yui.js | 107452 |
Лучше всего сжатие у closure compiler с опцией ADVANCED_OPTIMIZATIONS.
На следующем месте идет сжатый jquery от вендоров, так что если под рукой нет компрессора с java, лучше использовать его.
Как ни странно, мой любимый yui compressor на последнем месте. Но, в его защиту можно сказать, что он оставляет все комментарии с копирайтами, удалив которые, наверняка, можно было бы сэкономить еще. А так же, closure compiler не умеет сжимать css а размер его jar-файла 6 856 128 байт, против 891 148 yui, что в 7,69 раз больше.
Так что yui compressor по прежнему остается не заменимой утилитой, которую можно таскать и вместе с проектом в git, а так же сжимать как стили, так и скрипты, пусть и не с максимальной экономией.
Переименовать файлы в нижний регистр
Переименовать все файлы в текущей и во всех вложенных директориях в нижний регистр:
find ./ -type f | awk '{ print $1 " " tolower($1) }' | xargs -L 1 mv
Харитон Мизгирь пишет: Чтобы обрабатывались пути с пробелами и проч. непечатностями надо использовать конструкцию типа:
find -print0 | xargs -0
Объяснение по поводу параметра -print0 (find'а) и -0 (xargs'а)
В имени файла может попасться символ, который требует экранирования при обработке (single or double quotes, spaces or newlines). print0 заставляет выводить список найденных файлов разделяя их через нуль-символ (\0, в духе языка C, где он используется для декларации конца строки). xargs тоже должен быть готов к такому разделителю, для этого служит -0.
find и xargs по разному себя ведет когда ищут из текущей директории или когда ищут из родительской (в родительской прекрасно обрабатывал директории с пробелами и любыми кавычками, которые находились в дочерней директории). newlines не обрабатывается нигде.
Обновление Nginx 1.1 на 1.6 в Ubuntu 12.04
Решил обновить Nginx на последнюю стабильную версию, т.к. по умолчанию в Ubuntu 12.04 все еще лежит старьё Nginx 1.1, а на официальном сайте предлагают уже 1.6 и 1.7
Казалось бы, всё просто, как рекомендует официальный сайт:
Скачиваем сертификат и устанавливаем в систему:
wget http://nginx.org/keys/nginx_signing.key
sudo apt-key add nginx_signing.key
Потом открываем /etc/apt/sources.list
sudo nano /etc/apt/sources.list
и вставляем в конец файла
deb http://nginx.org/packages/ubuntu/ precise nginx
deb-src http://nginx.org/packages/ubuntu/ precise nginx
Далее выполняем обновление и получаем готовый свеженький Nginx:
sudo apt-get update
sudo apt-get dist-upgrade
Но, не тут-то было. Вместо профита получаем ошибку