Реализация простого и быстрого возведения в степень на C/C++

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

Но прежде, чем начать, почему бы не реализовать обычное возведение? Правильно, нет причин себе в этом отказывать, поехали!

Функция возведения числа в степень

Методом «в лоб», пробежимся в цикле и перемножим число само на себя сколько нужно раз. Работает за O(deg) где deg степень.

читать далее «Реализация простого и быстрого возведения в степень на C/C++»

Настройка подключения по SSH с помощью OpenSSH на Linux

SSH(Secure Shell) — очень крутой инструмент удаленного администрирования, который позволяет безопасно подключаться к консоли сервера. Перечислять причины, по которым это очень удобно можно бесконечно, достаточно просто представить, что не нужно идти в серверную, в которой скорее всего очень жарко(если это плохая серверная) или очень холодно(если хорошая), а можно со своего рабочего места подключиться напрямую.

Но хватит мечтать, пора настраивать!

Установка OpenSSH

Осуществить такое чудо можно с помощью программы OpenSSH, соответственно на сервере должен быть установлен openssh-server, а на клиенте openssh-client.

Установка на сервере

apt-get install openssh-server

Установка на клиенте

apt-get install openssh-client

Ничего не мешает установить клиент и сервер на одной машине и проверить работоспособность подключившись к самому себе командой

ssh user@localhost

Если все работает, то вам будет предложено ввести пароль пользователя user. Естественно, такой пользователь должен существовать на сервере.

читать далее «Настройка подключения по SSH с помощью OpenSSH на Linux»

RabbitMQ — установка и простейший пример на PHP

RabbitMQ — это мощный инструмент, реализующий обмен сообщениями между компонентами программной среды, будь-то процессы, web-приложения, клиент-сервер и прочее. Обмен сообщениями происходит по стандарту AMQP, который своим появлением решил огромную кучу проблем и вылечил множество головных болей разработчиков.

Самым большим преимуществом является то, что стандарт доступен в огромном количестве языков программирования, это позволяет обмениваться сообщениями скрипту на PHP со скриптом на Python и им обоим отправлять сообщения на сервер, который написан на Java. В двух словах — очень удобно!

Основные термины:

Producer — поставщик — программа, которая отправляет сообщения в очередь.

Consumer — подписчик — программа, которая принимает сообщения из очереди, чаще всего находится в режиме ожидания и при получении сообщения сразу же приступает к его обработке.

Queue — очередь — та самая «труба» через которую сообщения от поставщика попадают к подписчику. Очередь не имеет ограничений ни на количество поставщиков, ни на количество подписчиков и даже нет ограничения на количество сообщений, хранящихся в ней на данный момент. Существует очередь внутри самого RabbitMQ и им же полностью обслуживается, наша забота только в том, чтобы отправлять в нее сообщения и получать их.

читать далее «RabbitMQ — установка и простейший пример на PHP»

Реализация быстрой сортировки на C/C++

До текущего момента единственной публикацией о сортировке в моем блоге была статья про реализацию топологической сортировки вершин графа. Пора это исправлять! Строить грандиозных планов о покорении всех видов сортировки я не стану, а начну с одной из самых популярных — быстрая сортировка.

Я буду далеко не первым и не последним, кто скажет, что «быстрая» она только в названии и сейчас существует куча аналогов, и вообще для каждого типа данных нужна своя сортировка. Да, это все правда, но эта правда не отменяет простого факта, что собственноручная реализация быстрой сортировки оттачивает навыки программирования в общем, и она всегда будет в университетских курсах, я в этом уверен. Из этих же соображений был выбран язык программирования для реализации, ибо тут же можно попрактиковаться в использовании указателей в C/C++.

Предлагаю перейти к делу и для начала кратко рассмотреть суть алгоритма.

читать далее «Реализация быстрой сортировки на C/C++»

Измерить время исполнения запроса в MySQL с помощью PROFILES

Еще раз вернемся к теме измерения скорости исполнения чего-либо. Ранее я уже рассказал о том, как измерить скорость исполнения участка кода на C/C++, а сейчас перейду немножко в другую степь, а именно к базам данных. Расскажу и покажу, как легко измерить время исполнения запроса к базе не выходя из консоли MySQL и не написав ни одной строчки кода.

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

Включаем профилирование в MySQL

Первым делом нужно включить инструмент профилирования. Все команды выполняются напрямую из консоли mysql, напомню, как в нее войти.

mysql -u root -p

После этого включаем профилирование.

set profiling=1

С текущего момента информация о запросах будет логироваться, давайте ее получим.

читать далее «Измерить время исполнения запроса в MySQL с помощью PROFILES»