Развлекался сегодня вечером с BLAS Level 3 через C-интерфейс. Очень сильно мучался из-за практически полного отсутствия вменяемой документации именно по C-интерфейсу, приходилось параллельно CBLAS API Reference листать ещё 3 или 4 доки, чтобы понять как же оно работает. Вобщем, под катом небольшой reference на русском:
Продолжить чтение
Рубрика: Uncategorized
char data[0] — wtf?
Несколько дней назад, один мой знакомый озадачил конструкцией такого вида:
struct pkt { uint32_t flags; uint32_t length; char data[0]; };
Минут 30 мы поломали голову над тем, что это может значить, но вскоре забили. А буквально с час назад он мне дал ссылку, по которой объясняется, что же это такое.
Это поле даёт возможность выделить память под структуру такой конструкцией:
struct pkt* pkt = (struct pkt*) malloc( sizeof(struct pkt) + data_length )
и потом, сделав memset(&pkt->data,0,data_length), мы сможем обращаться к pkt->data[0..data_length-1] и использовать это поле под свои нужды. IMHO, такое лучше делать следующим образом:
struct pkt { uint32_t flags; uint32_t length; char* data; }; struct pkt* pkt=malloc(sizeof(struct pkt)); pkt->data=malloc(data_length);
и дальше работать как надо.
Сменил на работе примерно с месяц назад MTA, поставив вместо Postfix’а Exim. Настроилось базовое всё на удивление быстро, правда я не прикручивал пока что ни антиспам, ни антивирус. Недавно заметил, что exim стал отъедать нехилый кусок ресурсов сервера. Небольшой осмотр показал, что в очереди >30000 писем. Порывшись немного в интернете, нашёл достаточно приятный способ чистки очереди, с использованием exipick:
exipick — показывает сообщения в очереди экзима.
exipick -z — показывает замороженные сообщения
exipick -i — показывает ID сообщений
exipick -o S — показывает сообщения с возрастом >S, где S задаётся в секундах
exim4 -Mrm ID — удаляет из очереди сообщение с указанным ID
В итоге получаем:
exipick -zi | xargs exim4 -Mrm //удалит из очереди все замороженные сообщения
exipick -i | xargs exim4 -Mrm //удалит все сообщения из очереди
exipick -io 86400 | xargs exim4 -Mrm //удалит из очереди сообщения, с возрастом более недели
Firebird2 && пароль SYSDBA
Cегодня потратил около получаса на поиски способа смены забытого пароля у SYSDBA, чуть не дошёл до переустановки сервера, но вовремя наткнулся на решение:
gsec -mo SYSDBA -pw newpassword
Вот так вот всё просто.