#HEX • IT
390 subscribers
504 photos
104 videos
64 files
480 links
Channel by @alexeev_dev.

Авторский блог.

IT, статьи и другая информация.
Download Telegram
В 60-е годы советский физик Валентин Турчин создал Рефал — язык программирования, ориентированный на обработку символов и разработку ИИ.
Вместо последовательных инструкций, он использует правила для преобразования выражений. Рефал-функции сопоставляют образцы с выражениями, делая код компактным и понятным.


Представьте, что у нас есть «рефал-функция» с одним правилом:

Образец: add(X, Y)
Шаблон:
X + Y
Если мы подадим на вход этой функции
add(2, 3), то:
1. Образец
add(X, Y) совпадает с выражением add(2, 3).
2. Переменной
X присваивается значение 2, а Y — значение 3.
3. В шаблоне
X + Y происходит замена переменных, и получается 2 + 3.
4. В «поле зрения» Рефал-автомата вместо
add(2, 3) появляется 2 + 3.

И если быть точнее, язык был создан в 1966–1968 годах.
🔥11
Поделить нельзя — умножить, или Алгоритм быстрого деления по методу Ньютона-Рафсона

Все мы в школе проходили деление «столбиком» — простой алгоритм, который несложно реализовать, вот только не очень быстрый. В прошлый раз мы рассматривали, как компилятор оптимизирует деление в случаях, когда делитель известен во время компиляции, но применение его напрямую, чтоб оптимизировать деление для делителей, определяемых в run-time, невозможно: вычисление констант сдвига и умножения само по себе требует деления.

В этот раз поговорим о другом методе, сводящем деление к умножениям и битовым сдвигам, основанном на методе поиска корней функции
🔥31
Нашёл интересную статью, может кому то да и будет интересно.

Ассемблер для программистов на языках высокого уровня: Hello World

Обсудим основы языка и сопоставим их с конструкциями высокоуровневого программирования. Завершив прочтение этого руководства, вы сможете ориентироваться в ассемблерном коде, будете знать, где искать информацию, и даже сможете самостоятельно писать простые программы.
21
#статья

Статья про создание своей C++ библиотеки с документаций и CMake готова!

Ждите публикацию!

А пока можете поставить звезды на GitHub репозиторий продукта статьи: https://github.com/alxvdev/libnumerixpp
🔥11
😁2🤣1
Дисковая и файловая подсистемы

Диски в Linux: LVMRAID - Программный RAID-массив средствами LVM (Logical Volume Management)
Диски в Linux: Перенос каталога /home на отдельный раздел/том LVM
Диски в Linux: Основы LVM - Logical Volume Management, Менеджер логических томов
Файловые системы в Linux: Квотирование в XFS
Хранение файлов в Linux: Индексные дескрипторы (inodes)
Хранение файлов в Linux: Жесткие ссылки (hard links)
Резервное сохранение в Linux: Использование утилит копирования
Резервное сохранение в Linux: Возможности жестких ссылок
2👍1
#HEX • IT pinned «#статья Статья про создание своей C++ библиотеки с документаций и CMake готова! Ждите публикацию! А пока можете поставить звезды на GitHub репозиторий продукта статьи: https://github.com/alxvdev/libnumerixpp»
Bython - python со скобками

Это проект, который заменяет все отступы в Python на фигурные скобки. Больше не нужно о них париться — если накосячите с табами и пробелами или перенесете кусок кода с другим стилем отступов, то ничего не сломается.

https://pypi.org/project/Bython/
👍1😁1
График энергопотребления языков программирования
🔥1😁11
Перегрузка функций

C++ позволяет определять функции с одним и тем же именем, но разным набором параметров. Подобная возможность и называется function overloading. Компилятор уже сам выбирает нужный тип функции.

При этом различные версии функции могут также отличаться по возвращаемому типу. Однако компилятор при выборе ориентируется именно на кол-во параметров и их тип.

Простейший пример:

#include <iostream>

int max(int, int);
double max(double, double, double);

int main() {
int result1 = {max(1, 3)};
double result2 = {max(3.0000001, 3.000001)};

std::cout << result1 << std::endl;
std::cout << result2 << std::endl;

return 0;
}

int max(int a, int b) {
return (a >= b ? a : b);
}

double sum(double a, double b) {
return (a >= b ? a : b);
}

Функции могут отличаться и количеством аргументом, и их типом и так далее.

Но стоит учитывать что функция с параметрами-ссылками и обычными параметрами считаются одинаковыми. Но если в одной функции параметр является константой и ссылкой/указателем, то эти функции уже будут различаться компилятором.
👍1🔥1
«Ненавижу, _____, C++-массивы», или Почему про них нужно знать, но не нужно использовать в своей каждодневной работе

Встроенные массивы нужно уметь готовить, но вот вопрос: а стоит ли, если в С++ есть более безопасные альтернативы? Вопрос этот, скорее, риторический, может быть даже и философский. Оставим себе лишь надежду на то, что после этой небольшой заметки ответить на этот вопрос будет чуточку легче.
👍1🔥1
Утилита ss (Socket Statistics) в Linux предоставляет информацию о сетевых сокетах, соединениях TCP/UDP, маршрутах и других сетевых параметрах.

Несколько примеров использования ss:

Отобразить все открытые сокеты:
ss -a


Отобразить информацию о всех TCP-соединениях:
ss -t


Отобразить информацию о всех UDP-соединениях:
ss -u


Отобразить статистику по сетевым сокетам в реальном времени:
ss -s


Отобразить подробную информацию о TCP-соединениях и фильтровать вывод по заданному адресу и порту (например, IP-адресу 192.168.0.1 и порту 80):
ss -t -a 'dst 192.168.0.1:80'


Отобразить информацию о сетевых интерфейсах и маршрутах:
ss -i


Отобразить информацию о сокетах, которые находятся в состоянии ожидания:
ss -o state wait


Отобразить подробную информацию о конкретном сокете с заданным идентификатором:
ss -t -a -e sport = :<порт>


Отобразить информацию о сокетах, установленных в режиме прослушивания:
ss -l


Отобразить информацию о сокетах с указанным типом протокола (например, RAW, DGRAM, STREAM):
ss -t -a -K <тип_протокола>
5👍31