Meld

Meld — это удобный графический инструмент для сравнения файлов и папок, который наглядно показывает все различия. В отличие от консольных утилит, здесь можно не только увидеть отличия, но и сразу их объединять.

Установить Meld в Ubuntu очень просто одной командой:

sudo apt install meld

🚀 Запуск и начало работы

После установки вы можете запустить Meld из меню приложений или из терминала.

Способы запуска из командной строки:

КомандаЧто делает
meldЗапускает программу с пустым окном
meld папка1 папка2Сравнивает две папки
meld файл1 файл2Сравнивает два файла
meld файл1 файл2 файл3Трёхстороннее сравнение файлов
meld папка1 папка2 папка3Трёхстороннее сравнение папок
meld .Сравнивает текущую папку с её версией в Git

При запуске без параметров откроется окно выбора режима: File сравнение (для файлов), Directory сравнение (для папок) или Version Control (для Git).

📁 Сравнение папок

Для сравнения двух папок укажите пути к ним и нажмите Compare.
Обе папки отобразятся в виде деревьев. Цветовая индикация подскажет, в каком состоянии находится каждый файл:

СтатусВнешний видЗначение
ИзменёнСиний и жирныйФайл есть в обеих папках, но отличается
НовыйЗелёный и жирныйФайл есть только в этой папке
ОтсутствуетСерый зачёркнутый текстФайла нет в этой папке
ОшибкаЯрко-красный на жёлтом фонеПроблема с доступом к файлу

Чтобы открыть два файла для детального сравнения, просто дважды кликните по любому файлу в списке — откроется новая вкладка с пофайловым сравнением.

Управление отображением:
На панели инструментов есть кнопки-фильтры:

  • Same — показать одинаковые файлы (по умолчанию включено, нажмите, чтобы скрыть)
  • New — показать новые файлы
  • Modified — показать изменённые файлы

Это очень удобно, когда нужно быстро найти только то, что реально изменилось.

📄 Сравнение файлов

Когда вы открываете два файла рядом, Meld подсвечивает различия:

  • Зелёным — добавленные строки
  • Красным — изменённые строки
  • Серым зачёркнутым — удалённые строки

Для объединения изменений используйте кнопки со стрелками между панелями:

  • Стрелка вправо — скопировать выделенный фрагмент из левого файла в правый
  • Стрелка влево — скопировать из правого в левый

Также можно скопировать целые секции различий одним кликом по соответствующей стрелке рядом с блоком изменений.

🎯 Настройка фильтров

Иногда нужно исключить из сравнения определённые типы файлов (например, .log, __pycache__ или .git).

Как добавить свой фильтр:

  1. Откройте меню Edit → Preferences → File Filters
  2. Нажмите + (плюс) для добавления нового правила
  3. Введите шаблон имени файла, используя специальные символы (*, ?)

Символы для шаблонов:

СимволЧто означаетПример
*Любое количество символов*.log — все файлы с расширением .log
?Один любой символfile?.txtfile1.txt, fileA.txt
[abc]Любой из перечисленных символов[0-9] — любая цифра
{cat,dog}Один из вариантов*.{jpg,png} — изображения

💡 Примечание о регистре имён

Meld по умолчанию различает заглавные и строчные буквы в именах файлов. Это значит, что README.md, Readme.md и readme.md будут считаться разными файлами.

Если вы хотите этого избежать (например, при сравнении папок с Windows), включите опцию View → Ignore Filename Case в меню.

Команда meld . из корня Git-проекта — особенно полезный трюк, который показывает все незакоммиченные изменения в одном окне. Нужна будет помощь с настройкой такого сравнения?

Сборка plv8 для PostgreSQL

sudo apt-get install -y \
    build-essential \
    postgresql-server-dev-16 \
    cmake \
    ninja-build \
    python3 \
    pkg-config \
    libtinfo5 \
    libc++-dev \
    libc++abi-dev \
    libv8-dev \
    curl \
    git \
    wget
# Скачайте и соберите plv8
git clone https://github.com/plv8/plv8.git
cd plv8
make
sudo make install

Если будет ошибка при запуске: https://github.com/plv8/plv8/issues/571

ERROR:  загрузить библиотеку "/usr/lib/postgresql/16/lib/plv8-3.2.4.so" не удалось: /usr/lib/postgresql/16/lib/plv8-3.2.4.so: undefined symbol: _ZTIN2v84base6ThreadE 

ОШИБКА: загрузить библиотеку "/usr/lib/postgresql/16/lib/plv8-3.2.4.so" не удалось: /usr/lib/postgresql/16/lib/plv8-3.2.4.so: undefined symbol: _ZTIN2v84base6ThreadE
SQL state: 58P01

Просмотр статистики активных запросов в PostresSQL

-- Показывает размеры таблиц, участвующих в запросах
WITH table_sizes AS (
    SELECT 
        schemaname,
        tablename,
        pg_size_pretty(pg_total_relation_size(schemaname||'.'||tablename)) as size
    FROM pg_tables 
    WHERE schemaname NOT LIKE 'pg_%' AND schemaname != 'information_schema'
)
SELECT 
    a.pid,
    a.usename,
    a.datname,
    a.query,
    a.state,
    -- Можно добавить JOIN с table_sizes если знаете какие таблики используются
    now() - a.query_start as duration
FROM pg_stat_activity a
WHERE a.state = 'active' 
  AND a.query NOT LIKE '%pg_stat_activity%';

Восстановление grub загрузчика по умолчанию

На ПК были одновременно установлены Ubuntu 22.04 и Windows 10. После обновления Windows 10 до 11 загрузчик сломался и выдавал ошибку.

Примечание: скриншота нет под рукой, но ошибка говорила, что загрузка не возможна требуется восстановление (и это всё на синем экране windows).

Мне помогло следующее решение.

Читать далее «Восстановление grub загрузчика по умолчанию»

Практическое применение elasticsearch+fluent-bit

Данная связка будет применяться для хранения логов от приложений. Ниже пример compose файла:

version: "3.5"
services:
  elasticsearch:
    image: elasticsearch:8.19.3
    ports:
      - "9200:9200"
      - "9300:9300"
    environment:
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
      - discovery.type=single-node
      - xpack.security.enabled=false  # Disable security for development
    volumes:
      - ./elasticsearch/data:/usr/share/elasticsearch/data
      - ./elasticsearch/logs:/usr/share/elasticsearch/logs
  fluentbit:
    build: .
    ports:
      - "8888:8888"
      - "24224:24224"
      - "24224:24224/udp"
    depends_on:
      - elasticsearch
Читать далее «Практическое применение elasticsearch+fluent-bit»

Elasticsearch — основные команды

Термины

  • localhost:9200 — адрес для доступа к elasticsearch

Команды

Проверка доступности:

curl -X GET localhost:9200
Читать далее «Elasticsearch — основные команды»