Форум программистов, компьютерный форум, киберфорум
Loafer
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
Старый
Рейтинг: 5.00. Голосов: 1.
Настройки VS Code
Запись от Loafer размещена 13.04.2026 в 19:18
Показов 3020 Комментарии 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
Показов 5002 Комментарии 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
Показов 4066 Комментарии 0
Метки c++, ccache, sccache

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

Алгоритм работы этих приложений можно отобразить картинкой:...
Аватар для Loafer
Старый
Настройка MTProxy
Запись от Loafer размещена 11.06.2025 в 10:55
Показов 4679 Комментарии 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
Показов 3307 Комментарии 21
Метки programming

Прочитал наконец-то большую книгу по программированию за долгое время - Crafting Interpreters. Если вкратце, то книга про то, как создаются языки программирования. По факту, в книге реализуется язык программирования, который автор назвал Lox, двумя способами - интерпретируемый язык на основе AST, и управляемый язык на основе виртуальной машины. Особенностью книги является то, что ЯП реализуется полностью с нуля, не прибегая ко всякого рода внешним утилитам, вроде yacc или lex. Она очень...
Аватар для Loafer
Старый
Настройка NFS
Запись от Loafer размещена 18.04.2022 в 19:51
Показов 1198 Комментарии 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
Показов 3172 Комментарии 0
Метки snmp

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

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

ТерминологияNetfilter - файрвол/брандмауэр ядра Linux.
iptables - утилита для управления Netfilter.
На абстрактном уровне iptables состоит из таблиц (tables). Каждая таблица состоит из цепочек (chains). Каждая цепочка состоит из правил (rules). Надо понимать тот факт, что таблицей по умолчанию является таблица Filter. В этой таблице записываются правила, согласно которым фильтруется входящий/исходящий трафик. За входящий трафик отвечает цепочка INPUT, за исходящий трафик - OUTPUT. Соответственно,
...
Аватар для Loafer
Старый
Преобразование строки в число
Запись от Loafer размещена 02.10.2020 в 14:42
Показов 2071 Комментарии 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
Показов 3049 Комментарии 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
Показов 1119 Комментарии 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
Показов 2947 Комментарии 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
Показов 2623 Комментарии 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
Показов 2696 Комментарии 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
Показов 2656 Комментарии 5

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

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

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

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

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

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

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

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

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

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

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

Нажмите на изображение для увеличения
Название: continents2.jpg
Просмотров: 434
Размер:	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
Показов 2000 Комментарии 0
Метки c++, interview

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

Нажмите на изображение для увеличения
Название: tree_next2.jpg
Просмотров: 1125
Размер:	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
Показов 3560 Комментарии 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
Показов 2705 Комментарии 2
Метки c++, interview

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

Начнем с первой задачи. Задача звучит следующим образом: реализовать LRU-кэш. Что такое LRU-кэш можно прочитать здесь. Если вкратце, то это такая структура данных, которая:
  1. вставляет элемент в начало и удаляет с конца, если кэш полон;
  2. если к
...
Аватар для Loafer
Старый
Debug символы и прочее
Запись от Loafer размещена 01.05.2018 в 15:07
Показов 3454 Комментарии 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
Показов 2603 Комментарии 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
Показов 2588 Комментарии 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
Показов 5515 Комментарии 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
Показов 6013 Комментарии 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
Новые блоги и статьи
Оказывается, Unreal Engine позволяет качество на порядки выше, чем было в Lineedge
Etyuhibosecyu 05.07.2026
Жаль, конечно, что я не узнал об этом, пока Lineedge существовала, а то бы Noname2331 написал, что волки превращаются в пиксельную кашу, а я бы его попросил скачать какую-нибудь бриллиантовую или Pro. . .
Doom для терминала без стрельбы и монстров. 3D Raycasting на ascii.
dcc0 05.07.2026
Попросил нейронную сеть deepai. org написать рейкастинг 3D с библиотекой ncurses для Linux. Чтобы можно было ходить на стрелочки. Чтобы стены были отрисованы символами. Справилась. Первый вариант. . .
Установка статуса документа по условию
Maks 05.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "НарядПутевка" разработанного в КА2. Задача: в табличной части "Материалы" документа при записи автоматически устанавливать статус. . .
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет. Но обычно это 50 лет и более. Наверное, закисление почвы происходит сезонно в средней. . .
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи. Через несколько переработок от PHP кода к C89 (надеюсь, 89). Но довольно запутанно получилось. Код для Linux. Но если убрать time и то, что с ним. . .
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru