Справочник разработчика
Команды под рукой.
Практические заметки по Linux и разработке. Открой нужную тему, возьми пример и возвращайся к работе.
~ $ ls notes/
linux/bash/python/javascript/go/sql/
~ $
Справочник
Ничего не найдено. Попробуй название команды или другую тему.
Linux SSH-ключи и Fail2ban Вход по ключу и проверка защиты от перебора паролей. ЧитатьСвернуть
На своём компьютере создай ключ. Содержимое файла с расширением .pub добавь в ~/.ssh/authorized_keys пользователя на VPS.
ssh-keygen -t ed25519
ssh -o PreferredAuthentications=publickey user@example.org
Вход по ключу проверь в новом окне и оставь текущую сессию открытой. Для входа только по ключу задай следующие параметры OpenSSH.
AuthenticationMethods publickey
PasswordAuthentication no
KbdInteractiveAuthentication no
Проверь синтаксис командой sudo sshd -t, затем перезагрузи конфигурацию через sudo systemctl reload ssh на Ubuntu. Снова проверь вход из отдельного окна.
Если Fail2ban установлен и правило sshd активно, его статус покажет число ошибок и заблокированных адресов.
sudo fail2ban-client status sshd
Linux Домен и Nginx От DNS-записи до ответа сервера и диагностики журнала. ЧитатьСвернуть
Создай DNS-запись A с публичным IPv4 сервера и укажи домен в server_name. Подставь своё имя вместо example.org.
getent ahostsv4 example.org
sudo nginx -t
sudo systemctl reload nginx
curl -I http://example.org
Если конфигурация прошла проверку, но страница недоступна, проверь, слушает ли сервер порт 80, и посмотри журнал службы.
sudo ss -ltn 'sport = :80'
sudo journalctl -u nginx -n 30 --no-pager
Bash Аргументы скрипта Проверь, что путь передан, и обработай пробелы в имени файла. ЧитатьСвернуть
Сохрани пример в read-file.sh. Конструкция ${1:-} даёт пустую строку без аргумента. Кавычки сохраняют путь целиком.
#!/usr/bin/env bash
file=${1:-}
if [[ -z "$file" || ! -f "$file" ]]; then
printf '%s\n' 'Укажи путь к файлу' >&2
exit 1
fi
cat -- "$file"
Запусти bash read-file.sh "мой файл.txt". Код возврата 1 означает ошибку.
Bash Обход файлов Поиск логов и подсчёт строк, даже если в путях есть пробелы. ЧитатьСвернуть
find -print0 разделяет имена нулевым байтом. Баш читает этот разделитель через read -d ''.
while IFS= read -r -d '' file; do
wc -l -- "$file"
done < <(find . -type f -name '*.log' -print0)
Команда ищет файлы в текущем каталоге и его подкаталогах. Замени . на нужный путь.
Python Окружение venv Изоляция зависимостей проекта и установка из requirements.txt. ЧитатьСвернуть
В каталоге проекта на Linux создай и активируй виртуальное окружение. Последняя команда нужна, если у проекта есть requirements.txt.
python3 -m venv .venv
source .venv/bin/activate
python -m pip install -r requirements.txt
Путь к интерпретатору покажет which python. Чтобы выйти из окружения, выполни deactivate.
Python Чтение и запись JSON Сохранение настроек в UTF-8 стандартной библиотекой Python. ЧитатьСвернуть
Пример создаёт демонстрационный файл demo-settings.json в текущем каталоге. Режим x остановится с ошибкой, если такой файл уже существует.
import json
with open("demo-settings.json", "x", encoding="utf-8") as file:
json.dump({"name": "Скриптверста"}, file,
ensure_ascii=False, indent=2)
with open("demo-settings.json", encoding="utf-8") as file:
settings = json.load(file)
print(settings["name"])
Для JSON в строке используй json.loads(). Если формат входных данных повреждён, load() и loads() поднимут JSONDecodeError.
JavaScript Фильтрация массивов Выборка нужных объектов и преобразование результата. ЧитатьСвернуть
filter() оставляет подходящие элементы, а map() превращает их в новый массив.
const tasks = [
{ title: "Проверить DNS", done: true },
{ title: "Настроить Nginx", done: false },
];
const pending = tasks
.filter((task) => !task.done)
.map((task) => task.title);
console.log(pending);
Результат здесь — массив с одной строкой "Настроить Nginx".
JavaScript Запросы через fetch Загрузка JSON с проверкой HTTP-статуса. ЧитатьСвернуть
fetch() возвращает ответ даже при статусе 404. Проверяй response.ok перед чтением тела.
async function loadJson(url) {
const response = await fetch(url);
if (!response.ok) {
throw new Error("HTTP " + response.status);
}
return response.json();
}
Вызови функцию с адресом своего JSON API и обработай ошибку в try…catch.
Go Первый модуль Go Минимальная программа, go.mod и запуск из терминала. ЧитатьСвернуть
В новом каталоге создай модуль командой go mod init example.com/hello. Сохрани программу в main.go.
package main
import "fmt"
func main() {
fmt.Println("Привет, Go!")
}
go run . запустит программу в текущем каталоге. Команда go fmt ./... приведёт исходники модуля к стандартному формату.
Go Обработка ошибок Проверка error и добавление контекста перед возвратом. ЧитатьСвернуть
В Go ошибку обычно проверяют сразу после вызова. Для этого примера импортируй fmt и os.
func readConfig(path string) ([]byte, error) {
data, err := os.ReadFile(path)
if err != nil {
return nil, fmt.Errorf("read config: %w", err)
}
return data, nil
}
%w сохраняет исходную ошибку. Вызывающий код сможет проверить её через errors.Is.
SQL SELECT, WHERE и сортировка Выборка последних открытых задач с понятным порядком строк. ЧитатьСвернуть
Пример для SQLite с таблицей tasks. Колонка done хранит 0 для открытых задач.
SELECT id, title, created_at
FROM tasks
WHERE done = 0
ORDER BY created_at DESC, id DESC
LIMIT 10;
Второе поле сортировки задаёт порядок для строк с одинаковой датой. LIMIT оставляет первые десять строк результата.
SQL Транзакции и откат Проверка изменения в своей сессии перед сохранением. ЧитатьСвернуть
На учебной базе SQLite можно изменить строку внутри транзакции, проверить результат и откатить изменение.
BEGIN;
UPDATE tasks SET done = 1 WHERE id = 42;
SELECT id, title, done FROM tasks WHERE id = 42;
ROLLBACK;
В реальной операции COMMIT сохраняет изменения, а ROLLBACK отменяет их. Выполняй команды в одной сессии.