LINUX.ORG.RU

Сообщения deep-purple

 

Посоветуйте либу для парсинга/генерации JSON

Форум — Development

Посоветуйте какую-нибудь небольшую либу для парсинга/генерации JSON. Не бросайтесь ссылками просто так, нагуглить я и сам могу - либ куча. Хотелось бы увидеть рекомендации.

Покажите какую сами юзали (или даже написали свою). Почему выбрали именно её? Как она себя показала?

 ,

deep-purple
()

Теперь про сокеты

Форум — Development

Собсно:

Получаю дескриптор сокета (socket(AF_INET...), биндю его, листю его. Подключаюсь телнетом, отправляю текст, сервер его получает, все чики-пуки.

Но, после того как вырубаю сервер через Ctrl+C, при повторном его запуске он фейлится на бинде. А через несколько запусков «отходит». В данный момент запилил с goto retry_connect; с sleep(3); но этж кастыль еще какой.

Да, я уже загуглил. Есть SO_REUSEADDR но про него говорят нехорошее вот тут.

У меня таки вопрос - а как эту «проблему» решали вы?

 , , ,

deep-purple
()

Хабровброс?

Форум — Talks

 ,

deep-purple
()

Запутался в указателях на указатели

Форум — Development

0) Выходные, чо ))

1) Возможно то, чего я хочу уже есть, а я и не знаю. Поэтому опишу задачу.

Хочу ф-цию которая:

char *x;
fn(&x, "abcde", 2);
printf("X: %s\n", x); // X: ab

2) Даже если такая есть, всеравно хочу понять как оно работает. Поэтому пишу свою.

void
fn(char **dst, const char *src, const size_t len)
{
    size_t src_len = strlen(src);
    size_t dst_len = (len >= src_len ? src_len : len);
    *dst = (char *) malloc(dst_len + 1);
    // часть закомментирована, падает на **dst++
    while (dst_len-- /*&& (**dst++ = *src++)*/);
    // так работает
    *dst = "ljhg";
    // еще ж в конец *dst надо '\0' воткнуть
}

ЧЯДНТ?

 ,

deep-purple
()

Не понял прикола fopen()

Форум — Development
#include <stdlib.h>
#include <errno.h>
#include <stdio.h>


int
main(int argc, char **argv)
{
    FILE *fp1 = NULL;
    FILE *fp2 = NULL;

    char *abs1 = "/test.bin";
    char *abs2 = "/home/test.bin";

    fp1 = fopen(abs1, "r");
    if (!fp1) {
        printf("Cannot open file %s (%d)\n", abs1, fp1);
    } else {
        printf("Success open file %s (%d)\n", abs1, fp1);
    }

    fp2 = fopen(abs2, "r");
    if (!fp2) {
        printf("Cannot open file %s (%d)\n", abs2, fp2);
    } else {
        printf("Success open file %s (%d)\n", abs2, fp2);
    }

    return 0;
}

Файлов нет, ни того ни другого. При указании «abs1» отрабатывает Success, вот выхлоп:

Success open file /test.bin (8671248)
Cannot open file /home/test.bin (0)

Чо за прикол? ЧЯДНТ?

 

deep-purple
()

Какие сигналы перехватывать обязательно?

Форум — Development

Пилю дальше свое поделие.

Теперь задача - перехватывать сигналы, т.к. надо завершится мягко, что-то сохранить, а не падать трупом.

// SIGKILL - Не перехватывается, не игнорится, не обрабатывается, сразу труп
// SIGSTOP - Не перехватывается, не игнорится, не обрабатывается, просто стоп, freeze чтоли?
// SIGTSTP - Это rerise(?) от VSUSP (Ctrl+Z) может быть блокирован, перехвачен, игнорирован
// SIGCONT - Продолжить после стопа, но нет смысла вешать обработчик

// SIGTERM - Может быть блокирован, перехвачен, игнорирован
// SIGINT  - Это Ctrl+C
// SIGQUIT - Ctrl+\ какой-то дамп, я так понял отладочный коредамп

// SIGHUP  - Отвалился терминал? а как потом вернуться в терминал если он отвалился?

// SIGTTOU - Попытка писать в терминал из фона

// SIGPIPE - Брокнутые FIFO или отвалился сокет
// SIGLOST - Потеряно соединение с сервером(?) с любым ли?

// SIGXCPU - Превышен лимит процессорного времени
// SIGXFSZ - Превышен лимит величины размера файла (если к файлу то м.б. ограничение для fat32, а как насчет дисковой квоты?)

// SIGINFO - Кагдила

Какие еще сигналы надо учесть?

 , ,

deep-purple
()

Кастомные потоки

Форум — Development

Читаю про кастомные потоки.

Во первых смущает:

Portability Note: The facilities described in this section are specific to GNU. Other systems or C implementations might or might not provide equivalent functionality.

Во вторых смущает - а правильного ли я хочу?

А хочу я сделать обертку, которая и выведет в stdout/stderr, и запишет в лог, то что ей передали. Вообще даже три типа хочу кастомных - xx_info, xx_err, xx_debug

Насколько это вменяемо? Реализуемо? Если не вменяемо или не реализуемо, то как правильно? А можно на пальцах? Ато я не особо петрю.

 , , ,

deep-purple
()

Чем занимаешь своих детей, Лоровец?

Форум — Talks

Собственно, вопрос в заголовке. Ребенку 2 года.

Играем в NES-эмулятор (ну, пытаемся с переменным успехом), читаем книги (нормально прёт)..

Последнее что я надумал - забабахать совместно с дитём машину из картона. Сейчас в процессе (викуса памагает, делзыт).

А чем еще интересным занять чадо в домашних условиях?

 , ,

deep-purple
()

Что насчет dwm? Кто юзал/юзает?

Форум — Desktop

Хочу запробовать чего-то такого http://dwm.suckless.org/

Кто это дело уже щупал? Поделитесь впечатлениями. Минусы, плюсы, удобство?

 , ,

deep-purple
()

xpath выбрать ближайших потомков

Форум — General

Есть XML вида:

<root>
    <x>
        <xa></xa>
        <x>
            <xa></xa>
            <xb></xb>
        </x>
        <xb></xb>
    </x>
    <x>
        <xa></xa>
        <xb></xb>
    </x>
</root>
Так:
//x
естессно выбирает всё вне зависимости от вложенности. Есть ли хитрый expression в xpath (с каким-нибудь отрицанием?) чтобы выбрать только те «tagName» которые не являются потомками таких же «tagName»?

 ,

deep-purple
()

Как правильно запилить звуковой буфер с кроссфейдером?

Форум — Development

Мои размышления:

Хочу запилить штуковину, которая будет держать в буфере некоторое кол-во RAWPCM фреймов. Для простоты будем считать что у нас mono.

К примеру внутренняя частота даунмикса будет 44100, тогда если длина кроссфейдера равна 5 секундам, значит надо хранить 44100*5, причем для обоих входных сигналов. Ведь в тот момент когда трек А заканчивается, мы должны начать его заглушать, а трек Б поднимать в громкости. Тестово я уже прогонял этот прикол, волны суммирует, все ок.

Если на вход подается wav то основываясь на хедере и размере файла (на всяк случай проверяю, вдруг в хедере некорректные данные) я могу рассчитать продолжительность трека, ресемплировать его во внутрянку даунмикса и заполнить буфер, ну или вывалить сообщение, что длина трека слишком мала и кроссфейдить нету смысла.

Для нормальной работы мне нужно забить данными как минимум CrossfadeTime*2 времени. Почему? Потому, что допустим трек Б за 5 сек поднялся в громкости на 100% и где-то далее будет флажок «вот на таком то фрейме пора делай fadeout т.к. трек заканчивается». В этот момент в буфере А я уже типа положил данные для fadein.

А вот если на вход подается мп3, тем более в VBR то хрен я подсчитаю его длину, распакованные данные вообще возвращаются как попало, за одну отправку пачки фреймов в декодер на его выходе может быть вообще 0 (НОЛЬ!) PCM-фреймов. Тут конечно каждый может сказать - читай заголовки. Я их читаю. А ты можешь на 100% доверять инфе в заголовках?

Как быть? Что делать? Есть мысли?

 , ,

deep-purple
()

Присоветуйте реализацию для бекенда

Форум — Web-development

Появилась необходимость запилить систему с подписчиками на события/сообщения. Но перед тем как что-то начинать изучать и расковыривать, хотел поинтересоваться у лоровцев, кто какой опыт имеет в этом деле, какие решения использовались, и почему. Какие плюсы и минусы.

Варианты о которых я немного в курсе: nginx push module и realplexor. Тем не менее вопрос глубоко не изучал. Т.е. полезной будет любая информация от вас.

Если немного детальнее - рассылкой будет заниматься только сервер. На клиенте, либо аякс, либо вебсокеты. Необходима возможность рассылки данных как всем листенерам, так и конкретным. Листенеров будет около 1-2 тыс. Сообщения будут вида: «Уважаемые коллеги, пора на обед!» или «Василий Иванович, занесите к директору договор на подпись».

В любом случае - было бы удобно получать не тупо строку, а JSON, т.к. хрен его знает что еще вдруг понадобиться передавать.

 , ,

deep-purple
()

За что не любят пхпшников

Форум — Talks

Открываю сегодня один проект. Перехожу в мастер ветку, делаю гит пулл. И вижу такую картину в одном из файлов:

            $id = 0;
            for(; $id < 1000000; $id++) {
                if($_GET['key'] == md5($id . 'security')) {
                    break;
                }
            }
            if($id) {
                $file = query("select * from files where id='" . $id . "'");
                header("Content-type: " . $file['type']);
                header('Content-Length: ' . $file['size']);
                header('Content-Disposition: attachment; filename="' . $file['name'] . '"');

Для тех кто не понял что тут происходит: получаем значение ключа из гета и в цикле перебираем варианты от 0 до 1 млн, если присланный ключ совпал с хешем, тогда «бряк» :)

Не-не, а дальше то - if($id) т.е. если $id больше нуля, что будет однозначно, т.к. хотябы одна итерация но будет - лезем в базу и отдаем файл.

А цикл - видимо сделана задержка а-ля comet, мол, ты прислал какашку - на тебе мильён итераций в цикле!

 

deep-purple
()

Решил поковырять генту, скока ей места то надо?

Форум — Linux-install

Вобщем скачал я лайф-сиди минимал, запилил разделы, примонтировался, чрутнулся, распаковал третий стейдж, кароч система взлетела. Ах да, все это в виртуалбоксе. Дал ей 256м рамы и 4гб диска.

И чота я не понял, получаю дерево (emerge-webrsync), оно успешно прилетает, и... При распаковке фейлится ругаясь что нет места на диске.

Ей чо, 4гб мало на дерево? А еси я еще компилять начну? Чо эт за минимал такой? Доки сижу читаю. Чую есть вариант не тащить к себе весь мир. Подскажете?

 ,

deep-purple
()

Создать уникальный строковый ключ-идентификатор для DOM-элемента

Форум — Web-development

Предположим есть:

var itemsData = {};
function addItemData(item, data) {
    var iKey = ???;
    if (!itemsData[iKey]) {
        itemsData[iKey] = data;
    }
}
var elem = document.getElementById('my-elem');
addItemData(elem, [1,2,3]);
Откуда кроссбраузерно взять уникальный ключ так, чтобы если ниже по коду передается DOM-элемент, данные для которого уже есть в itemsData, то повторно их уже не добавлять? Не засирая при этом сами DOM-элементы левыми свойствами.

 , ,

deep-purple
()

Пыхопроблема

Форум — Web-development

Есть такой тестовый код:

class a {

    protected $data = array();

    public function set($key, $value) {

        if (!array_key_exists($key, $this->data)) {
            $this->data[$key] = $value;
        }

    }

}


class b extends a {}
class c extends a {}


$b1 = new b();
$b2 = new b();
$b3 = new b();
$c1 = new c();
$c2 = new c();


$b1->set('x', 'b1x');
$b2->set('x', 'b2x');
$b3->set('x', 'b3x');
$c1->set('y', 'c1y');
$c2->set('y', 'c2y');

Пример сильно упрощен, на деле потомки тащат кучу зависимостей (всякие «статичные» данные) которые одинаковые потомки же и используют одинаково. Было бы хорошо эти данные сложить в общее место, попутно проверяя, если такой же потомок (в примере проверяется тупо по ключу) уже насрал своих данных в это общее место, то повторно не вызывать тучу говна, которое пойдет куда-то и будет получать эти данные заново.

В идеальном случае требуется такое поведение, чтобы эта $this->data была для всех классов-потомков глобальной.

Педалить еще одну сущность которая будет все это дело хранить? Блин, костыль же. А завтра мне понадобится аналогичное поведение в другом месте. Опять педалить дополнительную сущность?

 , , ,

deep-purple
()

Денискины мемуары

Форум — Talks

Люди, подскажете где почитать что-то вроде автобиографии Денниса Ритчи? Конкретно - как он допетрил написать сю, о чем думал, какие предположения строил. Не в том плане что, мол, взял, поставил список задач и запилил. И не в том что перед тем как выйти издома он обязательно проверял выключил ли утюг. А в плане каких-то личных, не сказать что переживаний, но размышлений, разговоров с коллегами, обсуждений. Т.е. важны психологический портрет и атмосфера того времени, нежели какие-то сухие факты.

 , ,

deep-purple
()

Обновил ненужно до 4.3

Форум — General

Ага, вобщем Debian 6 на борту. Скачал dynamic-версию этого некрософачного поделия, воткнул ему нужные либы (libphonon.so, libQtWebKit.so, libQtXmlPatterns.so) - взлетело, НО!

Запуск выглядит так:

$ LD_LIBRARY_PATH=/home/deep/Bin/skype-4.3.0.37/ /home/deep/Bin/skype-4.3.0.37/skype
Без установки переменной LD_LIBRARY_PATH оно не взлетает, прописать её в .bashrc не помогло, оно хочет устанавливать непосредственно при запуске. И никак не могу отвязать процесс от терминала. Пробовал перенаправления, nohup, daemon и их комбинации - эта тварь не отвязывается от терминала. Как отвязать? Может скрипт какой запилить?

 , , ,

deep-purple
()

Посоветуйте самый легкий и простой в настройке прокси сервер

Форум — General

Причина:

Работаю с канвасами. Необходимо класть в канвас картинки с чужих доменов, в частности - инстаграм. Однако, по причине политики безопасности в ФФ и хроме (в других наверное тоже) этого делать нельзя. Почитать об ентом можно тут. Собственно инстаграм не отправляет таких спецефичных заголовков.

Следствие:

Т.к. домены там всегда разные (статика разбросана), то средствами своего сервера, например проксировать через nginx, насколько я знаю - будет невозможно. А дергать курлом/вгетом полученную через АПИ сотню картинок - расточительно, к тому же это еще нужно дернуть как внешнюю прогу, в цикле... Буээээ..

Вобщем пришла мысль - поставить какой-нибудь прокси рядышком, и через него дергать эти картиночки.

Посоветуйте самый легкий и простой в настройке прокси. Есть ли другие варианты решения задачи?

 , ,

deep-purple
()

Кому старое железо (и не только, как выяснилось)? Москва, самовывоз

Форум — Linux-hardware

Собственно, знакомый избавляется от хлама. Отдаст за символическую цену, если кому нужно что-то, смотрите список:

HP Color LaserJet CP1215 на запчасти (целиком) Принтер цветной лазерный. Продам на запчасти (картриджи пустые, есть заедание бумаги, рассинхронизация цвета). Сам принтер в хорошем состоянии, корпус целый, механических повреждений нет.

Корпус для жесткого диска (mobile rack) IDE - 2 шт Agestar, корпуса новые, ни разу не использовались. В наличие есть две штуки. Подходят для жестких дисков формата IDE.

Ибп Ippon Back Power Pro 500 (UPS) б/у Полный комплект, проводами могу снабдить даже сверху необходимого. Умер аккумулятор, требуется замена.

APG видеокарта asus v7100 Видеокарта в отличном состоянии. 32 мб памяти, выход VGA.

Свитч Dlink 1005D (Switch) 5 портов, отличное состояние, полный комплект без коробки

Коммутатор Asus GigaX 1005/G (Switch) 5 портов, отличное состояние полный комплект.

Видеокамера miniDV Panasonic Сама камера в идеальном состоянии, использовалась для перегонки видео с miniDV кассет на компьютер. Зажевывает пленку. Полный комплект с коробкой

HDD, б/у, все рабочие. Seagate Barracuda 120 GB ST3120022A Seagate Barracuda 80 GB ST380011A Seagate Barracuda 200 GB ST3200820A Quantium Fireball 30 GB Seagate Barracuda 40 GB ST340015A Maxtor 80GB

Мониторы LeCie Electron 19 Blue Mitsubishi Diamond Pro 920

Zyxel Omni 56K Plus EE Dial-up модем в идеальном состоянии, полный комплект (блок питания и com-com провод для подключения к компьютеру)

Оперативка (DDR DDR2, DIMM) Silicon Power 512Mb DDR 533 (CL 4) DDR2 Kingston 256Mb DDR 333 (CL 2,5) (KVR333X64C25/256) Nanya 256Mb DDR 266 (CL 2) DDR NCP 256Mb DDR 266 AUG 256Mb DDR 266

Материнская плата ASUS A7V8X с процессором (подходящим под мать, не разбирал) и кулером. Материнская плата ASUS K8N socket 754 + проц AMD Athlon x64 3000+ (ADA3000AEP4AR) (отломана одна ножка, вторая полуотломана, из матери не вытаскивался с момента эксцесса, НО отлично работает) + кулер Титан

DVD-привод RW SATA LabelFlash

Еще есть коньки женские 40 размера, новые (2-3 раза одевались пару лет назад)

по ценам не знаю.

в основном 150-250 руб.

Мониторы по 500 руб (в идеале) или в хорошие руки Принтер 1000-1500 в идеале

ИБП и камера 300-500 руб. если берут пачкой харды - все за 800 оперативку - всю за 500

свичи, вот даже не знаю - 500 за оба?

Торг уместен. Москва, самовывоз. м. Новогиреево. Писать в жабер: eltar@xmpp.jp

Лично моя *опа с ушами ко всему барахлу отношения не имеет, за исключением только, что я знаком с этим человеком.

Если я тему положил не в тот раздел, ну, в следующий раз положу в правильный..

 , ,

deep-purple
()

RSS подписка на новые темы