Ремонт apt:

apt download python3-minimal
sudo apt install --reinstall ./python3-minimal_*.deb
sudo apt install -f

Заметки об Олламе (ollama)

Что такое Оллама (ollama)? Это инструмент для запуска больших языковых моделей (LLM — Large Language Model). С помощью Олламы можно запускать на своём сервере или домашнем компьютере публичные языковые модели. Языковых моделей много, даже очень много, и можно найти подходящую под свои задачи и доступные вычислительные мощности.

(далее…)

Удаление ollama из Линукса (Linux) и Виндоуз (Windows)

Что такое ollama описывать сейчас не буду, кто в теме, тот в теме, тут нужно полноценное видео или внушительных размеров статью писать. На это, как обычно, времени не хватает. Теперь к делу. После установки ollama в свою систему вы наверняка обрадуетесь её функционалу, также как и я, но заметите одну странность — отсутствие штатной возможности остановить сервис. Да, вы можете остановить сервис в Линуксе как и любой другой вот так:

systemctl stop ollama.service

Сервис остановится, но при повторном запуске начнёт выдавать ошибки, по крайнём мере в моём случае было так. Да еще при запуске языковых моделей начнёт скачивать их заново, причём, даже тех, которые уже скачаны и настроены. Исходя из всего этого я решил использовать ollama через Докер, а из текущей системы полностью удалить. Скорее всего, к подобным выводам пришли и вы, раз попали на эту страницу.

Удаление в Линуксе:

sudo systemctl stop ollama
sudo systemctl disable ollama
sudo rm /etc/systemd/system/ollama.service
sudo systemctl daemon-reload
 
sudo rm /usr/local/bin/ollama
 
sudo userdel ollama
sudo groupdel ollama

Удаление в Виндоуз как обычно проще, оно осуществляется через стандартные «Программы и компоненты». Команд нет, выбираете из списка ollama и нажимаете «Удалить».

Проверка установленных версий .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, после этого все работало нормально.