mnshome.info
marzenia się spełniają



  XS Example (Array ref returns)
15.02.2018 07:57

SV * xdg_mime_list_mime_parents (mime_type)
  const char *    mime_type
INIT:
  AV * results;
  char **parents;
  char **p;
  results = (AV *)sv_2mortal((SV *)newAV());
CODE:
  parents = xdg_mime_list_mime_parents (mime_type);       
  for (p = parents; p && *p; p++) {
    av_push(results, newSVpv(*p, 0));
  }
  free (parents);
  RETVAL = newRV((SV *)results);
OUTPUT:
   RETVAL

  sv_2mortal
09.02.2018 17:52
#!/usr/bin/perl -slw
use strict;
use Inline C => Config => BUILD_NOISY => 1;
use Inline C => <<'END_C',  NAME => 'junk', CLEAN_AFTER_BUILD => 0;

AV* return_an_array() {
    AV* av;
    av = newAV();
    av_push( av, newSViv( 7  ) );
    av_push( av, newSViv( 42 ) );
    return sv_2mortal( av );
}

END_C

my $ref = return_an_array();
use Data::Dumper;
print Dumper($ref);
  SMSbox: Отправка SMS о проблемах с питанием серверной фермы на базе USB-модема HUAWEI и операционной системы FreeBSD
22.06.2015 11:33

Стоит сразу оговорится, что операционная система может быть не только FreeBSD,
а любая другая, Linux/Unix совместимая. Также, в качестве модема может быть 
использован не только HUAWAI вендер, но и любой другой, например, ZTE.

Некоторое время назад возникла задача: в случае отказа электропитания 
необходимо уведомить заинтересованных лиц о возникшей проблеме по SMS минуя
выход в сеть Internet.

В качестве готово решения по обнаружению возникшей проблемы было решено 
использовать Perl модуль App::MonM (c функцией Checkit). Хотя жесткой привязки 
к данному модулю нет, может использоваться лубая система мониторинга, например,
Zabbix. Дело всего лишь выбора системного администратора. по факту срабатывания
триггера системы мониторинга возникает событие отправки SMS. Для обработки 
данного события как правило выполняется внешняя утилита. Формат запуска был 
принят в рамках некого стандарта:

  # program_name <PHONE_NUMBER> <SUBJECT> <MESSAGE>
  # program_name <PHONE_NUMBER> <MESSAGE>

Именно в таком формате происходит отправка SMS штатными средствами Zabbix 
(см. документацию https://www.zabbix.com/documentation/2.4/manual).

Помимо Zabbix'а данный формат используют и другие системы момниторинга, в т.ч.
App::MonM. Для конфигурирования последнего достаточно прописать в 
конфигурационный файл monm.conf строку формата:

  SMSGW "program_name program_args [PHONE] "[MESSAGE]""

Для реализации задачи было принято решение написать свою программу smsbox
(program_name). Программа написана на языках Perl и C. Для установки необходимо
скачать ее с сайта dist.suffit.org (http://dist.suffit.org/smsbox-1.04.tar.gz)
и установить стандартным способом:

  # wget http://dist.suffit.org/smsbox-1.04.tar.gz
  # tar -zxf smsbox-1.04.tar.gz
  # cd smsbox-1.04
  # perl Makefile.PL
  # make

Установить необходимые зависимости (при отображении варнингов) и выполнить:
  
  # make test
  # make install
  # make clean

  
Далее необходимо установить модем. после установки модема командой smsbox
получаем синтаксис вызова. На дату написания статьи синтаксис таков:

  # smsbox

    Usage:
        smsbox [-d] [-i /path/to/inbox] [-o /path/to/outbox] [-s /path/to/sentbox]
               [-f statusfile.json] [--ussd="*100#"] [--balance="<PHONE_NUMBER>"]
               [--noinbox] [--noussd] <IO_DEVICE_OR_FILE>

        smsbox [-d] -S [-o /path/to/outbox] <PHONE_NUMBER> <SUBJECT> <MESSAGE>

Программа имеет возможности:

  -- Отправка SMS (из папки outbox)
  -- Получение баланса (в файл statusfile.json по USSD запросу)
  -- Получение входящих SMS (и помещение их в каталог inbox)
  -- Создание одного SMS сообщения в формате JSON (в папку outbox)
  -- Отправка баланса по SMS (из файла statusfile.json)

Ключи программы:
  -d            -- Режим отладки
  -i, -o, -s    -- Определение каталогов inbox, outbox, sentbox
  -f            -- Определение имени файла статус-файла (по умолчанию statusfile.json)
  -u            -- USSD запрос для получения баланса (по умолчанию *100#)
  -I, --noinbox -- НЕ выполнять получение входящей почты
  -U, --noussd  -- НЕ выполнять получение USSD
  -B, --balance -- Получение баланса для указанного номера телефона
  -S            -- Режим создания нового сообщения

Другие параметры:
  <IO_DEVICE_OR_FILE>   -- Имя устройства модема, например: /dev/modem
  <PHONE_NUMBER>        -- Номер телефона для отправки сообщения
  <SUBJECT>             -- Тело темы сообщения
  <MESSAGE>             -- Тело текста сообщения

Пример вызова программы с целью создания нового сообщения баланса:

  # cd /root && smsbox -Id /dev/cuaU0.2 -B 79037011110

Пример строки конфигурации для создания сообщения с помощью программы monm:

  SMSGW "smsbox -S -o /root/outbox/ [PHONE] "[MESSAGE]""

Пример отправки созданных сообщений из папки /root/outbox/:

  # cd /root && smsbox -IUd /dev/cuaU0.2

 

  Просчет CRC32 для того чтобы никогда не забывать и помнить как отчий наш
13.05.2015 16:40

#include <stdio.h>
#include <string.h>

typedef unsigned int uint32_t;

static const uint32_t my_crc32_table[256] =
{
    0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 
    0x076dc419, 0x706af48f, 0xe963a535, 0x9e6495a3, 
    0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988, 
    0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, 
    0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de, 
    0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 
    0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 
    0x14015c4f, 0x63066cd9, 0xfa0f3d63, 0x8d080df5, 
    0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172, 
    0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, 
    0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 
    0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59, 
    0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 
    0x21b4f4b5, 0x56b3c423, 0xcfba9599, 0xb8bda50f, 
    0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, 
    0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 
    0x76dc4190, 0x01db7106, 0x98d220bc, 0xefd5102a, 
    0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433, 
    0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, 
    0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01, 
    0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 
    0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 
    0x65b0d9c6, 0x12b7e950, 0x8bbeb8ea, 0xfcb9887c, 
    0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65, 
    0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 
    0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, 
    0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0, 
    0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9, 
    0x5005713c, 0x270241aa, 0xbe0b1010, 0xc90c2086, 
    0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f, 
    0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 
    0x59b33d17, 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, 
    0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a, 
    0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683, 
    0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8, 
    0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, 
    0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 
    0xf762575d, 0x806567cb, 0x196c3671, 0x6e6b06e7, 
    0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc, 
    0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, 
    0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 
    0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b, 
    0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 
    0xdf60efc3, 0xa867df55, 0x316e8eef, 0x4669be79, 
    0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, 
    0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 
    0xc5ba3bbe, 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 
    0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d, 
    0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, 
    0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713, 
    0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 
    0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 
    0x86d3d2d4, 0xf1d4e242, 0x68ddb3f8, 0x1fda836e, 
    0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777, 
    0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 
    0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, 
    0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 
    0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db, 
    0xaed16a4a, 0xd9d65adc, 0x40df0b66, 0x37d83bf0, 
    0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9, 
    0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 
    0xbad03605, 0xcdd70693, 0x54de5729, 0x23d967bf, 
    0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94, 
    0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d
};

uint32_t my_crc32(uint32_t crc, const unsigned char *buf, int len) {
  if (buf == NULL || len < 0) return crc;
  crc ^= 0xffffffffL;
  while (len--) crc = (crc >> 8) ^ my_crc32_table[(crc ^ *buf++) & 0xff];
  return crc ^ 0xffffffffL;
}

int main(void) {
  unsigned char *str = "123456789";
  int len = strlen(str);
  uint32_t crc32 = my_crc32(0, str, len);

  printf("Ok. CRC32 for \"%s\" (len:%d) = %X\n", str, len, crc32);
  return 0;
}

// __END__

c
  Makefile + gcc (windows 32)
25.02.2013 16:56

PROGRAM = test
CC = gcc

.PHONY : all
.USESHELL :

all : $(PROGRAM).exe
    @ rem echo $(SHELL)
    @ $(PROGRAM).exe
    @ sleep 1
    - @ rm $(PROGRAM).exe

$(PROGRAM).exe :
    @ $(CC) -o $(PROGRAM) $(PROGRAM).c

c
  Пример работы с gcc
14.10.2011 16:22

1. Правим samp1.c:

------------------
#include
#include

#include
int main() {
  write(1,"privet\n",7);
}
 
2. Компилим:
------------
gcc -c samp1.c
 
3. Линкуем:
-----------
gcc -fPIC -o samp1.exe samp1.o

c
THUD XYZZY PLUGH FRED WALDO GARPLY
GRAULT CORGE QUUZ QUX BAZ BAR FOO

Проплата домена suffit.org

0
0
0
days
:
0
0
hrs
:
0
0
min
:
0
0
sec

поиск по дате...
поиск по содержимому...
GGCzat 1.00
Tagi
Artefakty
06.05.2016 10:42:36
Создать RESTfull обработчик как модуль
24.06.2017 17:34:47
MNSHOME: Переходить на Centos!
19.08.2015 11:35:42
Переезд разработчиков на тестовый MySQL сервере
28.12.2015 10:44:39
MDScore: Marionette.js
02.06.2015 13:52:56
С Даши за ECB/VTB24
30.10.2017 10:40:53
Создать функционал 2 в 1: mod_perl библиотеку для получения отчета по бэкапам за последние сутки
29.11.2017 10:38:08
Создать простые функции криптования AES256+Blowfish+base64
01.12.2017 10:37:43
SubProject: static-site
Thu, 28 Feb 2019 10:44:39 +0400

Linki zewnętrzne

#OPERA
Czytam
GRY
MnshomeInfo
Monitoring
Photo
Przyjaciele
Serwisy
fla-master

IP

Valid XHTML 1.0 Transitional

Valid CSS!


Copyright © 1998-2017 Serż Minus. All rights reserved


do góry