Проверка установленных версий .NET на Windows 10 через PowerShell

Краткий вариант:

Get-ChildItem 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP' -Recurse | Get-ItemProperty -Name version -EA 0 | Where { $_.PSChildName -Match '^(?!S)\p{L}'} | Select PSChildName, version
(далее…)

Изменение hostname в WSL2 (Ubuntu) навсегда

Для изменения имени хоста в терминале достаточно войти в WSL с помощью команды wsl и ввести:

sudo hostname MY_NEW_HOST_NAME

Имя хоста изменится, но после перезагрузки WSL система создаст новое имя и присвоит вашей машине. Это происходит при каждом запуске WSL по умолчанию. Для изменения этого поведения необходимо добавить в конфигурацию WSL (/etc/wsl.conf) следующие настройки:

...
hostname = MY_NEW_HOST_NAME
generateHosts = false
...

Также необходимо указать новое наименование хоста в /etc/hosts вместо созданного системой:

...
127.0.0.1 MY_NEW_HOST_NAME MY_NEW_HOST_NAME
...

После этих манипуляций новое наименование хоста останется навсегда. Для проверки этого выключите WSL и включите заново:

wsl --shutdown
wsl

Настройка прав на файлы и директории в Docker-контейнере для Linux-систем

При использовании стека PHP+DOCKER (+ все остальное) на Linux-системах у вас, скорее всего, возникнут проблемы с правами в контейнере. Нельзя будет записать какой-либо файл в директорию, начнут вылетать ошибки при сохранении логов и всё в таком духе. При использовании фреймворков, например, такого как Laravel, эта проблема уже решена его разработчиком, а во всех других случаях решать коллизию с правами нужно своими руками. Ниже приведён один из простых вариантов решения.

(далее…)

Сбор данных о подписчиках группы Вконтакте (VK) через API с помощью execute

В текущем проекте мне понадобилось довольно плотно взаимодействовать с API Вконтакте. Раньше с ним работать не приходилось. Оказалось, он довольно удобный и функциональный, с опрятной документацией и понятными примерами. Через него можно решать огромное количество задач. Простая схема «вопрос-ответ», впрочем, как и для любого другого API, позволяет легко получать статистику, управлять группами, пользователями и т.д.

(далее…)

Работа с Redis из командной строки (консоли)

Подключение к серверу Redis:

redis-cli -h <host> -p <port>

Если уже вошли (через redis-cli), но не аутентифицировались, то:

AUTH <password>

Пароль можно задать в файле конфигурации «/etc/redis/redis.conf».

Основные команды:

KEYS *
 
SET key value
SETNX key1 value2
MSET key1 "value1" key2 "value2" key3 "value3"
 
GET key
MGET key1 key2 key3 key4
 
EXISTS key
INCR MyIntegerValue
 
EXPIRE keyname 100
TTL keyname
 
TYPE key
 
LRANGE 0 -1 [просмотр всего списка]
LRANGE 0 5 [просмотр с 0 по 5 элемент списка]
 
HSET hash_name key1 value1 [задать значение]
HGETALL hash_name [показать все из хеша]
HKEYS hash_name [показать ключи]
HVALS hash_name [показать значения]
 
ZRANGE keyname 0 -1 [показать все значения из zset]
ZRANGE keyname 0 -1 WITHSCORES [показать все значения с весами из zset]
 
FLUSHALL [удаляет все, будьте осторожны!]

Полезные ссылки

[1045] Access denied for user — Ошибка подключения к БД из PhpStorm’a

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

Сегодня обновлял окружение разработки для одного из поддерживаемых проектов. Одним из изменений было обновление версии MySql с 5.7 на 8. Все локальное окружение, как обычно, крутится на Докере. Обновил docker-compose.yml, пересобрал проект, запустил и при соединении PhpStorm’a к БД увидел вот такую ошибку:

... [1045] Access denied for user '...'@'xxx.xxx.xxx.xxx' ...

После проверки правильности логинов, паролей и остальных параметров подключения, проблема осталась, пересборка контейнеров с очищением всех кешей тоже не помогла. Решение оказалось простым, я остановил Докер, зачистил директорию с данным MySql-контейнера (путь до этой директории лежит в параметре volumes) и запустил Докер заново со сборкой: docker-compose up —build, после этого все работало нормально.

Удаление файлов из git

Удалить файлы из git’a с сохранением в файловой системе:

git rm --cached my_file.txt
git rm --cached -r my_folder_name

Удалить директорию из git’a без сохранения в файловой системе:

git rm file.txt
git rm -r my_folder_name

Чтобы лишние файлы не попадали в репозиторий добавляйте их в .gitignore.

Управление множеством ssh-ключей с паролями (ключевыми фразами или passphrase) через keychain

Наличие множества ssh-ключей и необходимости их использовать для работы доставляет немало проблем. Их нужно где-то хранить, указывать каждый раз при использовании соответствующий ключ, запоминать ключевые фразы и вводить их (passphrase) при использовании. Ситуацию спасают возможность настройки ssh и утилита keychain (или её аналоги).

(далее…)

Немного о тестировании в Yii2

В данное время покрываю тестами проект-долгострой на Yii2. Возможно кому-то пригодятся заметки.

(далее…)