Настройка OpenMP в CLion и пример программы

Доброго времени суток! Продолжаем рассматривать варианты параллельного исполнения программ. Я уже рассказывал про библиотеку MPI, которая позволяет создавать несколько параллельно исполняемых процессов в системе. Рассказал о базовой установке MPI, интеграции его в CLion и даже поделился своей реализацией алгоритма Флойда-Уоршелла.

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

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

Что такое OpenMP

Признанным открытым стандартном параллельного программирования на языках C/C++ и Fortran является OpenMP. Он включает в себя множество директив препроцессора, библиотечных функций и переменных окружения для реализации многопоточных программ. Более подробную информацию вы сможете найти на вики и прочих источниках, а я перейду непосредственно к настройке.

читать далее «Настройка OpenMP в CLion и пример программы»

Реализация больших чисел на C/C++ со сложением и вычитанием

Доброго времени суток и светлого неба над головой, дорогие друзья! Ни для кого из вас не секрет, что ограничение максимального и минимального значения целого числа, хоть и разнится на разных архитектурах, но существует. Например, для целого числа типа int диапазон его значений равен от –2147483647 – 1 до 2147483647. Казалось бы, 2 миллиарда в каждую сторону это целая гора, но как только вы займетесь настоящей криптографией, либо машинным обучением, теорией вероятностей или еще более крутой математикой, вы поймете, что это чертовски мало. Именно в таком случае на помощь приходят, так называемые, большие числа.

Идея большого числа в том, чтобы вылезти за рамки ограничений стандартных типов данных, оперировать бесконечно большими числами, размер которых будет ограничен только вычислительной мощностью «машины». Как этого достичь? Самый логичный способ заключается в том, чтобы записывать число в строку и конвертировать специальным образом в согласованный массив чисел стандартного типа.

Например, как можно хранить число 123456789123456789, в int оно не поместится. тогда мы поместим его в массив int`ов, mas[0] = 123456, mas[1] = 789123, mas[2] = 456789, напишем специальные алгоритмы, которые будут корректно складывать, вычитать, умножать и делить такие числа.

Как раз о таких алгоритмах инициализации, сложения и вычитания больших чисел я сейчас расскажу, поехали!

читать далее «Реализация больших чисел на C/C++ со сложением и вычитанием»

Как сделать кнопку «наверх» для сайта

Приветствую вас, друзья мои. Сейчас я освящу наверное один из самых популярных вопросов в области «быстрых рецептов» на html/css/js. А именно — создание кнопки «наверх», которая так часто встречается на самых различных ресурсах. И как обычно, пишу я это не просто так, а исходя из своего личного опыта, ибо вы можете заметить у меня такую кнопку в нижней правой части экрана.

Создание кнопки, как и любого активного элемента на веб-странице, делится на три основные части. Необходимо написать html код самой кнопки, навести марафет с помощью css стилей и оживить кнопку с помощью js кода. О каждом этапе в подробностях, поехали!

HTML код кнопки «наверх»

Начать логичнее всего непосредственно с самой кнопки. Существует огромное количество вариантов, но я расскажу о самом визуально красивом способе нарисовать стрелочку на веб-странице — с помощью набора иконок Font Awesome.

читать далее «Как сделать кнопку «наверх» для сайта»

Iptables — настройка Firewall для Linux

Всех приветствую! Разговор пойдет о консольной утилите iptables для Linux систем, которую смело можно обозвать полноценным сетевым экраном. Разобраться в ней «с наскока» не так просто, как хотелось бы, страница с маном кажется просто огромной простыней лишнего текста, не понятно для кого написанной. Конечно, это только мое мнение, именно поэтому я и решил написать эту шпаргалку по iptables, чтобы в следующий раз идти уже по проторенной дорожке.

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

Firewall Iptables

Как гласит викиучебник, iptables является оболочкой над netfilter, которая повсеместно принята за стандарт. Часто под iptables понимают сам межсетевой экран netfilter, и мы не станем исключением. Хотя вообще весь набор программ — межсетевой экран + утилита для управления им так и называется: netfilter/iptables.

читать далее «Iptables — настройка Firewall для Linux»

Установка wine32(x86) и wine64(x64) на Linux Ubuntu 16.04

Доброго времени суток! Вот как бывает, полностью переходишь на unix-подобную операционную систему, мгновенно пропадают головные боли, начинаешь дышать полной грудью и вообще все отлично. Но однажды может наступить такой момент, когда прошлое возвращается вместе со срочной необходимостью запустить программное обеспечение написанное исключительно под Windows. Чаще всего такое происходит со старым ПО, которое уже никто и никогда не перепишет под Linux, а функционал его остается востребованным.

Так случилось и со мной, пару дней назад мне понадобилось быстро собрать поистине много ключевых слов, а единственный инструмент доступен только под 32 битную версию Windows. Даже не под 64 битную, ну что за ужас.

Поэтому, друзья мои, сейчас я расскажу о том, как запускать Windows программы на любой Linux системе с помощью Wine.

Что такое Wine

Буквально в двух словах, Wine это свободная альтернативная  реализация известного всем и каждому Windows API. Wine стремительно развивается каждый божий день, добавляется поддержка все новых программ и улучшается совместимость со старыми. В общем, все отлично. Больше ничего говорить не буду, уже давно пора перейти к настройке, все остальное вы сможете прочитать на вики.

Самый главный совет перед установкой Wine: убедитесь, что реально не существует аналогов программного обеспечения под вашу систему, пусть даже с урезанным функционалом. Зачастую установить аналог и привыкнуть к нему гораздо проще, чем заставить ПО бегать под wine.

Если совсем никакого выхода нет, то прошу к инструкции по установке Wine.

читать далее «Установка wine32(x86) и wine64(x64) на Linux Ubuntu 16.04»