Форум программистов, компьютерный форум, киберфорум
Loafer
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
Старый
Рейтинг: 5.00. Голосов: 1.
Настройки VS Code
Запись от Loafer размещена 13.04.2026 в 19:18
Показов 3145 Комментарии 0

JSON
1
2
3
4
5
6
7
8
9
10
{
    "cmake.configureOnOpen": false,
    "diffEditor.ignoreTrimWhitespace": true,
    "editor.guides.bracketPairs": "active",
    "extensions.ignoreRecommendations": true,
    "files.trimTrailingWhitespace": true,
    "git.blame.editorDecoration.enabled": true,
    "git.confirmSync": false,
    "git.inputValidation": true,
    "git.openRepositoryInParentFolders":
...
Аватар для Loafer
Старый
Рейтинг: 1.00. Голосов: 1.
Шпаргалка по WSL
Запись от Loafer размещена 08.08.2025 в 22:39
Показов 5045 Комментарии 0
Метки linux, ubuntu, windows, wsl

Обнаружил в WSL два очень не приятных момента.

Оказалось, что WSL периодически падает и генерирует core dump'ы, которые занимают крайне ощутимое количество памяти на диске. Чтобы отключить накопление этих файлов, надо в файле %USERPROFILE%\.wslconfig прописать:
Code
1
2
[wsl2]
MaxCrashDumpCount=-1
Также оказалось, что WSL не уменьшает автоматически место, занимаемое WSL-дистрибутивом...
Аватар для Loafer
Старый
Работа с ccache/sccache в рамках C++
Запись от Loafer размещена 11.06.2025 в 12:00
Показов 4147 Комментарии 0
Метки c++, ccache, sccache

Утилиты ccache и sccache занимаются тем, что кешируют промежуточные результаты компиляции, таким образом ускоряя последующие компиляции проекта. Это означает, что если проект будет компилироваться еще раз и в кеше будет обнаружен уже объект компиляции, то будет браться этот объект, вместо полноценной компиляции. Как работает само кеширование, например для sccache, можно посмотреть тут.

Алгоритм работы этих приложений можно отобразить картинкой:...
Аватар для Loafer
Старый
Настройка MTProxy
Запись от Loafer размещена 11.06.2025 в 10:55
Показов 4754 Комментарии 0
Метки mtproxy, telegram

Дополнительная информация к инструкции по настройке MTProxy:
  1. Перед сборкой проекта необходимо добавить флаг -fcommon в конец переменной CFLAGS в Makefile.
  2. Через crontab -e добавить задачу:
    Code
    1
    
    0 3 * * * curl -s https://core.telegram.org/getProxyConfig -o /root/.mtproxy/proxy-multi.conf
  3. Через crontab -e добавить задачу:
    Code
    1
    
    0 4 * * * systemctl restart MTProxy.service
Аватар для Loafer
Старый
Рейтинг: 5.00. Голосов: 3.
Crafting Interpreters
Запись от Loafer размещена 30.03.2024 в 18:14
Показов 3359 Комментарии 21
Метки programming

Прочитал наконец-то большую книгу по программированию за долгое время - Crafting Interpreters. Если вкратце, то книга про то, как создаются языки программирования. По факту, в книге реализуется язык программирования, который автор назвал Lox, двумя способами - интерпретируемый язык на основе AST, и управляемый язык на основе виртуальной машины. Особенностью книги является то, что ЯП реализуется полностью с нуля, не прибегая ко всякого рода внешним утилитам, вроде yacc или lex. Она очень...
Аватар для Loafer
Старый
Настройка NFS
Запись от Loafer размещена 18.04.2022 в 19:51
Показов 1224 Комментарии 2
Метки linux, nfs

Установка пакета:
Bash
1
yum install nfs-utils
Прописываем в файле /etc/nfs.conf:
Code
1
2
3
4
5
6
vers2=n
vers3=y
vers4=n
vers4.0=n
vers4.1=n
vers4.2=n
Прописываем в файле /etc/exports:
Code
1
/root/temp *(ro,root_squash)
Набираем следующие команды:
Bash
1
2
3
exportfs -a
exportfs -r
systemctl restart nfs-server.service
Смонтировать...
Аватар для Loafer
Старый
Шпаргалка по SNMP
Запись от Loafer размещена 26.08.2021 в 18:50
Показов 3185 Комментарии 0
Метки snmp

SNMP - это такой сетевой протокол, предназначенный для передачи некоторых сведений об устройстве. Например, количество CPU на машине, uptime машины и т. д. Чтобы разобраться, какая схема взаимодействия в данном протоколе, необходимо ввести несколько терминов.
ТерминологияSNMP-агент - это то самое приложение, которое крутится на том самом устройстве, сведения о котором нам нужны.
SNMP-менеджер - это приложение, которое опрашивает SNMP-агент, чтобы SNMP-агент предоставил SNMP-менеджеру
...
Аватар для Loafer
Старый
Знакомство с fanotify
Запись от Loafer размещена 16.08.2021 в 13:51
Показов 7406 Комментарии 0

В ядре Linux есть подсистема, которая называется fanotify. Данная подсистема позволяет ставить под мониторинг файловые операции в операционной системе (ОС) над определенными объектами файловой системы: файлы, директории и точки монтирования. Основным объектом в данной подсистеме является внутренний объект ядра, который называется fanotify notification group или просто fanotify group (FG). FG представляет собой список объектов файловой системы, которые
...
Аватар для Loafer
Старый
Рейтинг: 4.50. Голосов: 2.
Шпаргалка по iptables
Запись от Loafer размещена 12.04.2021 в 13:54
Показов 2770 Комментарии 0
Метки centos

ТерминологияNetfilter - файрвол/брандмауэр ядра Linux.
iptables - утилита для управления Netfilter.
На абстрактном уровне iptables состоит из таблиц (tables). Каждая таблица состоит из цепочек (chains). Каждая цепочка состоит из правил (rules). Надо понимать тот факт, что таблицей по умолчанию является таблица Filter. В этой таблице записываются правила, согласно которым фильтруется входящий/исходящий трафик. За входящий трафик отвечает цепочка INPUT, за исходящий трафик - OUTPUT. Соответственно,
...
Аватар для Loafer
Старый
Преобразование строки в число
Запись от Loafer размещена 02.10.2020 в 14:42
Показов 2090 Комментарии 5
Метки c++

Функция, проверяющая, что входная строка содержит корректное для заданного целочисленного типа значение в пределах допустимых значений. На вход передается строка, а необходимый целочисленный тип задается как параметр шаблона.
C++
1
2
3
4
5
6
template <typename T, typename = std::enable_if_t<std::is_integral<T>::value>>
bool check_is_integral(const std::string& str) {
  // Случай str == ''
  if (str.empty()) {
    return false;
  }
...
Аватар для Loafer
Старый
Потокобезопасная очередь
Запись от Loafer размещена 10.08.2020 в 16:51
Показов 3072 Комментарии 11
Метки c++

Оставляю здесь кусок кода, который возможно мне понадобится в будущем.
C++
1
2
3
4
5
6
7
8
9
10
11
12
#pragma once
 
// Очередь реализуется согласано книге Anthony Williams -
// "C++ Concurrency in Action: Practical Multithreading".
// Смотреть главу 6, раздел 6.2
 
#include <condition_variable>
#include <memory>
#include <mutex>
 
template <typename T>
class
...
Аватар для Loafer
Старый
Intervals problem
Запись от Loafer размещена 25.03.2020 в 16:42
Показов 1123 Комментарии 0
Метки c#

Поиск общих интервалов между массивами интервалов.

C#
1
2
3
4
5
6
7
8
9
10
11
using System;
using System.Collections.Generic;
 
namespace intervals
{
    public class Program
    {
        public static List<int> CommonManyIntervals(List<List<int>> vectors)
        {
            List<int> result = CommonTwoIntervals(vectors[0], vectors[1]);
            for (int i = 2; i < vectors.Count; ++i)
...
Аватар для Loafer
Старый
Concurrency problem
Запись от Loafer размещена 23.03.2020 в 14:40
Показов 2956 Комментарии 20
Метки c++, concurrency

Асинхронный запуск переданных лямбда-функций в том порядке, в котором они переданы.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <atomic>
#include <condition_variable>
#include <functional>
#include <iostream>
#include <list>
#include <mutex>
#include <thread>
#include <vector>
 
class Executor
{
public:
  Executor(): _firstExec{true}, _isStop{false}
  {}
...
Аватар для Loafer
Старый
Еще одна задача
Запись от Loafer размещена 15.02.2020 в 16:49
Показов 2641 Комментарии 0

Еще одна задачка, которую мне пришлось решать по тем или иным обстоятельствам. Оставлю ее здесь на память. Приведу ее текст на английском, ибо переводить мне лень.

Yet another taskYou are given two arrays A and B consisting of N integers each.

Index K is named fair if the four sums (A[0] + ... + A[K - 1]), (A[K] + ... + A[N - 1]), (B[0] + ... + B[K - 1]) and (B[K] + ... + B[N - 1]) are all equal. In other words, K is the index where the two arrays, A and B, can be split (into two non-empty
...
Аватар для Loafer
Старый
Ключи Valgrind
Запись от Loafer размещена 19.11.2019 в 18:31
Показов 2734 Комментарии 0

Запись в блоге, чтобы быстро найти необходимые ключи для отладки утечек памяти с помощью Valgrind.

Проверить на наличие Debug-символов:
Bash
1
objdump --syms <executable> | grep debug -i
Запустить Valgrind:
Bash
1
valgrind --tool=memcheck --leak-check=full --show-leak-kinds=all --track-origins=yes --verbose --log-file=valgrind-out.txt <executable>
Аватар для Loafer
Старый
Рейтинг: 5.00. Голосов: 1.
Разбиение диска с помощью Logical Volume Manager
Запись от Loafer размещена 15.04.2019 в 14:41
Показов 2678 Комментарии 5

Возникала у меня следующая проблема. После установки системы RHEL на машину с SSD-диском, у меня остались два HDD-диска, которые "висят в воздухе" и никак не монтированы в систему. Жалко терять целый терабайт памяти просто так. Для монтирования их в систему и дальнейшего использования я решил воспользоваться функционалом, который называется Logical Volume Manager. LVM предоставляет дополнительный слой абстракции над железом. Например,
...
Аватар для Loafer
Старый
Шпаргалка по openssl
Запись от Loafer размещена 21.03.2019 в 14:38
Показов 41050 Комментарии 3

OpenSSL - это инструмент, который позволяет проводить большинство криптографических операций, в числе которых шифрование, цифровая подпись, генерация сертификатов и т. д. Данный инструмент имеет непосредственно саму утилиту openssl и API, которое представлено в библиотеках libcrypto, которая содержит реализации общих криптографических операций, и libssl, которая содержит реализацию протоколов SSL/TLS.

В данной записи я напишу те команды утилиты openssl, которые на данный...
Аватар для Loafer
Старый
Первые шаги на C#
Запись от Loafer размещена 24.01.2019 в 17:55
Показов 2561 Комментарии 4
Метки c#

С недавнего времени решил изучить такой замечательный язык программирования, как C#. После C++ и мучений с системами сборки и с зависимостями C# кажется просто идеальным. Как известно, лучше всего что-то учить, применяя это на практике, решая реальные задачи.

Недавно мне понадобилась утилита для анализа звуковых файлов в формате wav. Утилита просто выводит содержимое заголовка wav-файла в стандартный поток вывода. Для разработки я также использовал NuGet-пакет CommandLineParser.Оставляю...
Аватар для Loafer
Старый
Рейтинг: 5.00. Голосов: 1.
API для работы с ВКонтакте
Запись от Loafer размещена 12.10.2018 в 16:38
Показов 2864 Комментарии 5

Очередной говно-скрипт на Python'е, выложенный здесь, чтобы он не потерялся. В теории, можно было бы выкладывать код на GitHub'е, но я считаю, что там надо выкладывать только что-то стоящее и то, что будет поддерживаться и иметь жизненный цикл.

Скрипт нужен, чтобы сгруппировать друзей заданного пользователя по городам. Также, скрипт выводит друзей друзей из определенного города, если они есть в списке заданного пользователя.
Python
1
2
import getpass
import pprint
...
Аватар для Loafer
Старый
Знакомство с FUSE
Запись от Loafer размещена 30.09.2018 в 18:06
Показов 3069 Комментарии 2

FUSE - это свободный модуль для ядер UNIX-подобных операционных систем, позволяющий разработчикам создавать новые типы файловых систем, доступные для монтирования пользователями без привилегий (в первую очередь - создание виртуальных файловых систем). Более подробно можно почитать здесь и здесь.

Сам я не стал очень глубоко погружаться в изучение данной темы. Просто стало интересно, как можно реализовывать...
Аватар для Loafer
Старый
Рейтинг: 5.00. Голосов: 1.
Перехват сетевого трафика
Запись от Loafer размещена 23.09.2018 в 12:48
Показов 4790 Комментарии 6

В связи с некоторой направленностью деятельности моего нового места работы, мне пришлось разбираться в вещах, в которых я бы сам себя разбираться никогда бы не заставил. Речь идет о перехвате сетевого трафика и о стеке протоколов TCP/IP.
В одной из своих прошлых заметок я приводил код для работы с epoll в Linux на примере реализации супер простого TCP-сервера. Для меня самым непонятным было то, как связаны интерфейс сокетов и перехват
...
Аватар для Loafer
Старый
Задача с собеседования №3
Запись от Loafer размещена 02.09.2018 в 18:19
Показов 3219 Комментарии 14
Метки c++, interview

Третья задача с собеседования. Задача звучит следующим образом. Дано дерево (не обязательно бинарное). На вход функции подаются два узла дерева. Необходимо определить, имеют ли они общего родителя, который не является корнем дерева (возвращается true). Если же общий предок только корень дерева, то возвращается false.

Нажмите на изображение для увеличения
Название: continents2.jpg
Просмотров: 439
Размер:	90.2 Кб
ID:	5022

C++
1
2
3
4
5
6
#include <iostream>
#include <vector>
 
struct Node
{
  Node(int level_, struct
...
Аватар для Loafer
Старый
Задача с собеседования №2
Запись от Loafer размещена 01.09.2018 в 16:52
Показов 2020 Комментарии 0
Метки c++, interview

Вторая задача с собеседования. Задача звучит следующим образом. Дано бинарное дерево. В каждом узле дерева есть указатель next, в котором хранится адрес узла справа. Если узла справа нет, то ссылка равна NULL. Необходимо правильным образом заполнить указатели next в каждом узле.

Нажмите на изображение для увеличения
Название: tree_next2.jpg
Просмотров: 1138
Размер:	80.2 Кб
ID:	5021

C++
1
2
3
4
5
6
7
8
#include <iostream>
#include <string>
 
struct Node
{
  Node(int _value):
  value(_value),
  left(nullptr),
...
Аватар для Loafer
Старый
Использование epoll в Linux
Запись от Loafer размещена 22.08.2018 в 15:27
Показов 3581 Комментарии 0
Метки c++, interview

Программный интерфейс epoll - это API мультиплексированного ввода-вывода, предоставляемого Linux для приложений. Более подробно можно прочитать здесь, либо в справочных man-страницах. Здесь приведен пример работы с epoll, чтобы в дальнейшем можно было быстро вспомнить, как его использовать.
C++
1
2
3
4
5
6
7
8
// for sqrt
#include <cmath>
// for printf
#include <cstdio>
// for memset
#include <cstring>
// for gnu_get_libc_version
#include
...
Аватар для Loafer
Старый
Задача с собеседования №1
Запись от Loafer размещена 12.08.2018 в 19:00
Показов 2728 Комментарии 2
Метки c++, interview

Проходил я собеседование в одну из крупных компаний России. Целью была проверка уровня своих знаний. В этом блоге я хочу выложить свои решения ко всем задачам, которые мне были выданы.

Начнем с первой задачи. Задача звучит следующим образом: реализовать LRU-кэш. Что такое LRU-кэш можно прочитать здесь. Если вкратце, то это такая структура данных, которая:
  1. вставляет элемент в начало и удаляет с конца, если кэш полон;
  2. если к
...
Аватар для Loafer
Старый
Debug символы и прочее
Запись от Loafer размещена 01.05.2018 в 15:07
Показов 3464 Комментарии 0

Компиляция программы с добавлением отладочной информации в запускаемый файл (debug символы):
Bash
1
g++ gcc-debug.cpp -g -Og -o gcc-debug
По умолчанию на Linux-системах отладочная информация хранится в формате DWARF версии 4.
Разделение отладочной информации от остальной информации в ELF-файле происходит следующим образом:
Bash
1
2
3
objcopy --only-keep-debug ./gcc-debug ./gcc-debug.dbg
strip --strip-debug ./gcc-debug
objcopy --add-gnu-debuglink=./gcc-debug.dbg
...
Аватар для Loafer
Старый
From Oracle to MySQL
Запись от Loafer размещена 24.04.2018 в 17:25
Показов 2613 Комментарии 2

Установка пакета:
Bash
1
pip3 install python-docx
Наговнокодил на Python'е:
Python
1
2
3
4
5
6
7
8
9
10
11
12
import docx
import re
import sys
 
def column_0(cell_text):
  sys.stdout.write("  `{}` ".format(cell_text.lower()))
 
def column_1(cell_text):
  if cell_text == "DATE":
    sys.stdout.write("TIMESTAMP ")
  # Поиск NUMBER
  result = re.search(r'NUMBER\((.*)\)', cell_text)
...
Аватар для Loafer
Старый
Работа с гибридной графикой
Запись от Loafer размещена 01.10.2017 в 20:24
Показов 2602 Комментарии 0

Есть ноутбук с наличием интегрированной карты Intel и дискретной карты NVIDIA. Можно организовать совместную работу данных карт с помощью пакета Bumblebee.
Установим необходимые пакеты (драйверы для видеокарт, реализацию OpenGL Mesa и сам пакет Bumblebee):
Bash
1
sudo pacman -S bumblebee bbswitch mesa nvidia xf86-video-intel
Добавим пользователя loafer (как пример) в группу bumblebee:
Bash
1
sudo gpasswd -a loafer bumblebee
Включим запуск...
Аватар для Loafer
Старый
Рейтинг: 2.67. Голосов: 6.
Настройка FTP сервера vsftpd
Запись от Loafer размещена 25.06.2017 в 14:24
Показов 5541 Комментарии 2
Метки ftp

Установка пакета:
Bash
1
sudo pacman -S vsftpd
Прописываем в файле /etc/vsftpd.conf:
Bash
1
2
anonymous_enable=NO
local_enable=YES
Автоматический запуск сервера:
Bash
1
sudo systemctl enable vsftpd.service
Аватар для Loafer
Старый
Рейтинг: 3.00. Голосов: 5.
Настройка ReadyMedia (MiniDLNA)
Запись от Loafer размещена 25.06.2017 в 14:12
Показов 6016 Комментарии 0

Установка пакета:
Bash
1
sudo pacman -S minidlna
Отредактировать файл /etc/minidlna.conf:
Bash
1
2
3
4
5
6
7
user=loafer
media_dir=V,/home/loafer/torrents
friendly_name=Loafer DLNA Server
db_dir=/home/loafer/.config/minidlna/cache
log_dir=/home/loafer/.config/minidlna
inotify=yes
presentation_url=http://192.168.0.101:8200/
Провести следующие действия:
Bash
1
install -Dm644 /etc/minidlna.conf ~/.config/minidlna/minidlna.conf
...
Аватар для Loafer
Новые блоги и статьи
Лето уходит
kumehtar 17.08.2026
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины". За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html Задача: . . .
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru