Category Archives: Кодинг

chan_dongle – приём SMS от буквенных отправителей

asterisk-chan-dongleНаписал небольшой патчик для chan_dongle, позволяющий декодировать буквенных отправителей в PDU SMS. Все желающие могут найти его здесь и накатить на последнюю версию из репозитория. В основную ветку его пока не запихнули.

TCP Ping – open source

PoptocatНекоторое время назад я искал программу для TCP-пинга, и даже кое-что нашёл. Однако это было не то, не хватало таймаутов, плохо работало с SSH и т.п. Поэтому я решил написать свою программу, попутно вспомнив программирование в среде Unix. Можно пинговать хосты по IP-адресу или имени, а также по произвольному порту. Программа измеряет время установления TCP-коннекта. С исходниками программы можно ознакомиться на GitHub. Пожалуй, это первый раз, когда я выкладываю свой хоть и небольшой, но код, на всеобщее обозрение. Пример выполнения программы:

$ tcpping oioki.ru
  OK   Connected to oioki.ru:22, seq=0, time=51.653 ms
  OK   Connected to oioki.ru:22, seq=1, time=50.844 ms
  OK   Connected to oioki.ru:22, seq=2, time=54.059 ms

P.S. Жду комментов и багрепортов 🙂

Собеседование на знание языка C – 12 вопросов и ответов

В этой статье мы рассмотрим интересные задачи на языке C, которые могут помочь студентам (и не только) освежить в памяти свои знания этого языка и подготовиться к заковыристым вопросам на собеседовании.

1. Функция gets()

Вопрос: В приведенной программе есть проблема. Можете её найти?

#include <stdio.h>

int main(void)
{
    char buff[10];
    memset(buff,0,sizeof(buff));

    gets(buff);

    printf("\n The buffer entered is [%s]\n",buff);

    return 0;
}

Ответ: Скрытая проблема в этом коде – это использование функции gets(). Эта функция принимает строку со стандартного ввода без проверки размера буфера, в который будет помещена эта строка. Это запросто может привести к переполнению буфера. В данном случае лучше использовать другую стандартную функцию – fgets().
Continue reading Собеседование на знание языка C – 12 вопросов и ответов

Кросс-доменный ajax-запрос статических JSON-файлов

JSON - JavaScript Object NotationПредположим, что на вашем веб-сервере лежит статический JSON-файл, к примеру, http://mystaticfiles.com/hello.json. Этим сервером может быть Amazon S3, CloudStorage или любая другая CDN. Содержимое файла выглядит примерно так:

{"message": "Hello, world!"}

Допустим, необходимо, чтобы веб-приложение на домене example.com доставало данные из этого статического JSON-файла с помощью Javascript, но обычным AJAX-запросом сделать этого будет нельзя из-за кросс-доменных ограничений. В обычной ситуации, вы бы организовали JSONP-сервис на mystaticfiles.com, и его действительно очень просто реализовать на PHP. Однако в нашем случае на сервере нет никакой логики, он не может исполнять скрипты (т.к. является CDN). Ниже приведено решение этой задачи на jQuery.
Continue reading Кросс-доменный ajax-запрос статических JSON-файлов

Professional XMPP Programming with JavaScript and jQuery

Судя по всему, неплохая книга по разработке XMPP-приложений с использованием Javascript и Jquery. В книге разъясняется протокол XMPP, его типичные применения и задачи, с которыми он справляется лучше всего. В главах книги приведен процесс разработки девяти приложений, причем сложность их постепенно увеличивается. Читатель начнет с традиционной программы “Hello, World”, разумеется с использованием XMPP, и дойдет до нюансов разработки многопользовательской игры “Крестики-нолики” в реальном времени.

Купить бумажную книгу на оригинальном языке можно тут:

Continue reading Professional XMPP Programming with JavaScript and jQuery

Простейший кеш PHP

Простейший эффективный PHP кешЕсли вам нужно отдавать какой-либо конкретный контент очень-очень быстро, но который довольно редко меняется, рекомендую воспользоваться следующим простейшим механизмом кеширования. Будем генерировать какой-либо контент (из баз данных, из внешних источников, файловой системы, каких-либо вычислений…) и сохранять полученный результат на диск в определенный файл. При последующем доступе, если время жизни кеша не прошло (в моем примере это 1 минута), то просто загружаем содержимое кеша из файла. В следующий раз кеш обновится как минимум через минуту, когда будет произведен запрос очередного клиента на получение данного контента.
Continue reading Простейший кеш PHP

Perl: массив массивов, хеш массивов, хеш хешей, стек

Купить книгу по Perl на ОзонеПрограммисты на Perl должны уметь эффективно пользоваться сложными типами данных. В этой статье собраны наиболее полезные посты с сайта PerlMonks, и показаны примеры использования сложных типов данных. По идее, сведений в этой статье должно быть достаточно, но при необходимости можно перейти по ссылке на англоязычный сайт PerlMonks.

1. Массив массивов в Perl

Как определить массив массивов:

@tgs = (
    ['article series', 'sed & awk', 'troubleshooting', 'vim', 'bash'],
    ['ebooks', 'linux 101', 'vim 101', 'nagios core', 'bash 101' ]
);

Continue reading Perl: массив массивов, хеш массивов, хеш хешей, стек