Архив рубрики: Scripting/coding

HowTo и примеры использования bash, C, Python, Ruby и т.д.

Linux: C — адресное пространство процесса

17 сентября 2017
 

 Адресное пространство процесса на примере программы на C. Используемые утилиты и файлы: size /proc/$PID/maps objdump pmap Все примеры выполняются на ОС: [simterm] $ cat /etc/os-release | grep NAME NAME=»Arch Linux» PRETTY_NAME=»Arch Linux» [/simterm] С ядром: [simterm] $ uname -mrs Linux 4.12.8-2-ARCH x86_64 [/simterm] С использованием gcc: [simterm] $ gcc —version gcc (GCC) 7.2.0 [/simterm]

C: связанные списки

28 августа 2017
 

 Связанные списки являются второй по частоте использования структурой данных после массивов. Они являются достаточно простой реализацией динамических структур данных, использующие указатели (pointers) для реализации. Понимание работы указателей является необходимым условием для того, что бы понять связанные списки. Кроме того — требуется понимание динамического выделения памяти и знать, что такое структуры и как ими пользоваться. Ниже… Читать далее »

Arch Linux: уведомления в Openbox с libnotify

23 августа 2017
 

 Надо добавить всплывающее окошко, которое бы по крону выводило какой-то текст на экран. Используем libnofity, выполняем на Arch Linux (хотя принципиальной разницы нет — хоть на Убунте). Документация самого libnotify — тут>>>.

C: структуры

21 августа 2017
 

 Структура (structure) в C — коллекция переменных различного типа, доступ к которым возможен по одному и тому же имени. Например, вы хотите сохранить информацию о человеке — его имя, гражданство и зарплату. Вы можете создать переменные name, citizenship, salary и хранить информацию в них. Но что, если вам потребуется хранить информацию о нескольких людях? Можно… Читать далее »

C: «мониторинг» NGINX с помощью AF_INET

8 августа 2017
 

 В продакшене мы будем использовать что-то вроде Monit, а для Dev — решил написать маленькую утилиту, которая проверяет доступность NGINX и отправляет письмо при проблемах. Программа содержит две рабочие функции — socket_get(), которая с помощью connect()  пытается подключиться к порту NGINX (AF_INET сокету), и send_alarm(), которая с помощью system() выполняет mailx для отправки сообщений. Отправку… Читать далее »

Travis: деплой конфигов NGINX в Azure File share

7 августа 2017
 

 Имеется ресурс группа, которая включает в себя один Azure Load Balancer, за котором находится Azure VMSS с двумя виртуальными машинами. На машинах работает NGINX, который использует файлы настроек виртуалхостов, которые хранятся в файл-шаре, которая монтируется к обеим машинам. Полное описание проекта — Azure: VMSS за Load Balancer, renew SSL от Let’s Encrypt, SMB file share и NGINX-proxy.… Читать далее »

C: создание и применение shared library в Linux

31 июля 2017
 

 Библиотека — это файл, содержащий скопилированный код из нескольких объектных файлов в один файл библиотеки, который может содержать функции используемые другими программами. Библиотеки могут быть статичными (static) и динамическими или разделяемыми (dynamic, shared). Ниже — краткий пример создания и применения shared library на C в Linux. Доступ к общей библиотеке может осуществляться по нескольким именам:… Читать далее »

Viber: получить history в текстовом виде и скрипт бекапа

10 июля 2017
 

 Как и Skype — Linux-клиент Viber хранит данные в локальной SQLite базе: $ ls -l ~/.ViberPC/38096***26/ | grep db -rw-r—r— 1 setevoy setevoy 38912 Jun 30 15:30 data.db -rw-r—r— 1 setevoy setevoy 32768 Jul 10 10:38 data.db-shm -rw-r—r— 1 setevoy setevoy 1048032 Jul 10 10:38 data.db-wal -rw-r—r— 1 setevoy setevoy 5072896 Jul 10 09:59 viber.db… Читать далее »

Python: структуры данных

30 июня 2017
 

 Перевод — краткий обзор структур данных в Python. Оригинал — тут>>>. В Python 3 имеется четыре встроенных типа данных — списки (list), кортежи (turple), словари (dictionary) и списки (set).

C: libssh — пример SSH-«клиента»

26 мая 2017
 

 Ниже рассматривается пример написания SSH-клиента на C с использованием libssh. Сама библиотека libssh уже устарела, и вместо неё рекомендуется libssh2. Сравнение libssh и libssh2 есть тут>>>. Тем не менее у libssh отличные примеры (которые и используются в примерах ниже с небольшими отличаями) и документация, поэтому использую её. RFC 4251 в SSH Protocol Architecture описывает три основных… Читать далее »