Самые популярные сериалы Swatcher_Bot на конец 2018 года

Собрал подборку самых отслеживаемых сериалов в 2016 году, по результатам работы Swatcher_bot. Игра престолов 2554 Ходячие мертвецы 1218 Теория большого взрыва 1155 Сверхъестественное 904 Викинги 784 Люцифер 736 Мир Дикого Запада 665 Бесстыдники (USA) 643 Мистер Робот 628 Рик и Морти 597

Многопоточное архивирование в Linux при помощи tar

Обратил я тут внимание на то что архивирование в Linux через tar занимает только одно ядро и решил поискать как это можно исправить и утилизировать все 4 ядра своего процессора. В мануале по tar я нашел такую опцию: -I, –use-compress-program PROG filter through PROG (must accept -d) А поиск по интернету выдал мне многопоточные архиваторы: […]

Реализация «легкого» spinlock на атомарных операциях

Решил я тут разобраться с атомарными командами, что это такое, какими они бывают и что делают. В целом если объяснять на пальцах, то атомарные или неделимые операции, как следуют из названия, неделимые. Т.е. команда либо еще не выполнена, либо уже выполнена, мы не сможем застать эту операцию в середине процесса. Естественно это реализуется за счет […]

Быстрая сортировка на С

Продолжаю записи про язык программирования С, точней про различные структуры и простейшие алгоритмы. Следующей в очереди идет быстрая сортировка, вот что о ней пишут в википедии: Быстрая сортировка, сортировка Хоара (англ.quicksort), часто называемая qsort (по имени в стандартной библиотеке языка Си) — широко известный алгоритм сортировки, разработанный английским информатиком Чарльзом Хоаром во время его работы в […]

Самые популярные сериалы в 2016 году

Собрал подборку самых отслеживаемых сериалов в 2016 году, по результатам работы Swatcher_bot. Из событий этого года можно ознаменовать только внезапный переезд к другому VPS-провайдеру в связи с кончиной старого. А так же попадание бота в различные подборки ботов(от лайфхакера, например) что крайне положительно повлияло на количество пользователей. На этот год у меня запланировано несколько нововведений, […]

Поиск в ширину на С

Следующим за поиском в глубину идет поиск в ширину или BFS. Так как и в случае поиска в глубину, реализация будет итеративной, с использованием реализованной ранее очереди. Немного инфы из вики: Поиск в ширину (англ. breadth-first search, BFS) — метод обхода графа и поиска пути в графе. Поиск в ширину является одним из неинформированных алгоритмов поиска[1].   […]

Поиск в глубину на С

Следующим идет поиск в глубину или обход дерева в глубину или же DFS, реализация на Си. Реализация будет не рекурсивная, с использованием очереди из предыдущего поста. Немного информации из вики: Поиск в глубину (англ.Depth-first search, DFS) — один из методов обхода графа. Стратегия поиска в глубину, как и следует из названия, состоит в том, чтобы идти […]

Односвязный список на Си

При подготовке к сертификации я решил заготовить «бомбы» какие-то стандартные  не сложные вещи, которые скорей всего пригодятся мне во время решения теста и на которые не хотелось бы тратить время. И первое с чего я бы хотел начать это односвязный список. Односвязный список будет очень полезен для реализации обхода дерева как в глубину, так и в ширину, точней […]

TI Launchpad G2 с лицензией на Code Composer Studio

Сегодня увидел в блоге посвященном MSP430 микроконтроллерам интересное предложение. TI предлагает набор MSP430 Launchpad G2 за 9.99$ в комплекте с лицензией на Code Composer Studio. Сама по себе студия обычно очень дорогая, порядка 500$ за лицензию. А тут такое щедрое предложение, отладочную плату за такие деньги не всегда возьмешь. Кстати у меня уже давно лежит […]

Пример использования libevent2 для реализации TCP-сервера

libevent2 —  это библиотека предоставляющая механизм вызова callback-функций по приходу событий. Простой пример работы в виде TCP-сервера с буферизированным вводом/выводом. Небольшая напоминалочка себе.   Для начала инициализируем библиотеку. libevent2 инициализируется функцией event_init(): struct event_base *ev_base;   /* Инициализируем библиотеку */ event_init(); /* Указываем обработчик фатальный ошибок */ event_set_fatal_callback((event_fatal_cb) event_fatal_err);   ev_base = event_base_new(); if (!ev_base) { […]