dreamway89

dreamway89 wrote 29 posts

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

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

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

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

Немного о линковки статических библиотек

Базовые понятия, кратко Совершенно неожиданное открытие сделал недавно. Оказывается порядок появления файлов на входе линковщика важен, если мы говорим о линковки статических библиотек. Для того что бы понять почему так происходит, нужно понимать принцип работы линковщика. Объектные файлы как предоставляют(экспортируют) символы(имена функций, переменных), так и ожидают(импортируют) их. Рассмотрим небольшой пример: int imported(int); static int internal(int x) […]

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

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

Установка MongoDB в Ubuntu 16.04

Я уже писал про mongodb данных в одной из предыдущей своих статей, но для установки базы на Ubuntu 16.04 требуется слегка изменить процесс. В основном это связано с переходом Ubuntu на systemd. Итак, первоначально добавляем публичный ключ в систему управления пакетами: sudo apt-key adv —keyserver hkp://keyserver.ubuntu.com:80 —recv EA312927   После этого добавляем репозиторий в список репозиториев: echo […]

Sublime Text 3 для Сишника

    Мне нравиться sublime text и я использую его для программирования, решил я освоить его по лучше, заодно написать небольшую шпаргалку по тем плагинам что уже использую.     Начнем с самого главного: Package Control Менеджер пакетов, позволяет устанавливать плагины из единого источника и управлять ими. Невероятно удобный инструмент работы с плагинами. Для установки, […]

Пишем собственный init на С

Потребовалось мне как-то написать свой init, для ускорения загрузки. Особенность, в том что он должен быть статически слинкован и не должен завершаться, кроме этого во время работы инита могут быть не доступны stdin и stdout. #include <stdio.h> #include <sys/mount.h> int main() { fprintf(stderr, «Hello World Init!\n»); /* mount /proc for example */ if(mount(«none», «/proc», «proc», 0, […]

libuv — библиотека для асинхронного I/O

Процессе изучения Javascript и Node я как системный программист не мог не поинтересоваться его внутренним устройством. Одной из интересных находок стала библиотека libuv. libuv libuv — кроссплатформенная библиотека асинхронного ввода-вывода(I/O), разрабатываемая для Node.JS. Библиотека «навязывает» асинхронный, событийно-ориентированный стиль программирования(Node же). Эта библиотека как и libevent2 использует наиболее эффективный из доступных в системе способов асинхронной работы с […]

Javascript promise — промисификация кода

Использование promise для улучшения читаемости кода и избавления от callback-hell’a. Я разрабатывал своего бота в процессе изучения Javascript и не сильно запаривался о виде кода и о хороших практиках и наваратил там такой лапши из callback’ов, что сам уже не мог им дать ладу и когда сайт донор немного поменял верстку бот перестал нормлаьно работать, […]

Организация ротации логов в PM2 — pm2-logrotate

Сначала я пробовал использовать библиотеку для логгирования работы бота, потом думал писать свое приложении для организации ротации логов, но потом наткнулся на этот модуль расширения для PM2, который логгирует всю информация, которую ваше приложение пишет в консоль и организует ротацию логов по дням, по размеру лог файла. Так же очень важной особенностью этого расширения является то, […]