Написал небольшой патчик для chan_dongle, позволяющий декодировать буквенных отправителей в PDU SMS. Все желающие могут найти его здесь и накатить на последнюю версию из репозитория. В основную ветку его пока не запихнули.
Category Archives: Кодинг
TCP Ping – open source
Некоторое время назад я искал программу для 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-файл, к примеру, 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
Если вам нужно отдавать какой-либо конкретный контент очень-очень быстро, но который довольно редко меняется, рекомендую воспользоваться следующим простейшим механизмом кеширования. Будем генерировать какой-либо контент (из баз данных, из внешних источников, файловой системы, каких-либо вычислений…) и сохранять полученный результат на диск в определенный файл. При последующем доступе, если время жизни кеша не прошло (в моем примере это 1 минута), то просто загружаем содержимое кеша из файла. В следующий раз кеш обновится как минимум через минуту, когда будет произведен запрос очередного клиента на получение данного контента.
Continue reading Простейший кеш PHP
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: массив массивов, хеш массивов, хеш хешей, стек
Видеоуроки Perl
Неплохая подборка видеоуроков по языку Perl нашлось на самом популярном трекере рунета.
125 видеоуроков, более 15 часов. Язык английский.
PHP debug, отладка PHP скриптов
Самый простой способ отладки PHP – записать в начало скрипта следующие две строки:
ini_set('display_errors',1);
error_reporting(E_ALL);
Тогда будут показываться все ошибки на уровне PHP-интерпретатора.