lem

Ищу работу

Программирую под Linux уж скоро 8 лет как.

Люблю и умею: C, Python, shell, awk.
Не умею, но хотел бы научиться: assembly, kernel development, Go, Android (low-level).
Haskell люблю, но мега-программ не писал.
Не люблю, но умею: C++, SQL, Perl.

Моя свежая резюма: https://gist.github.com/gists/712672/download
Проф. сеть: http://www.linkedin.com/in/vorotylo

Пишите на <valery.vv@gmail.com>, с удовольствием отвечу.

lem

слово дня

Безысходник
Любой отвратительный код, который волей-неволей приходится поддерживать.

(В моём случае это C++ сорсы препроцессинга. YMMV.)

lem

Post Hackathonic

Всё-таки, полезная штука хакатоны.

Достаточное количество неглупых людей, собранных на продолжительное время вместе и при этом предоставленных самим себе... Они раскрываются. :)

Что я вынес для себя с `LtU-Kiev Hackathon 2010':

  • vimperator (осваиваю),
  • chromium browser (однажды),
  • IDA (услышал про),
  • 3D printing (расширил кругозор).

Осуществить задуманное – механизм плагинов для under.c – я не успел, но достаточно далеко продвинулся в этом направлении. Надеюсь добить на неделях.

Было комфортно, мне понравилось.  Вот только в субботу глаз был, как у кролика, а в воскресенье вечером страшно болела башка. У меня есть нехорошие подозрения насчёт gl-клубного освещения.

lem

announcing under.c

`under' utility decodes binary DER data to S-expressions and/or encodes those back to DER.

Aren't you curious of how iteratees may look in C?

$ echo '(p1 (p2 "48 45 4c 4c 4f") (p3 ""))' | under -e | hexdump -C
00000000  e1 09 c2 05 48 45 4c 4c  4f c3 00                 |....HELLO..|
0000000b
$ ^hexdump -C^openssl asn1parse -inform DER -i
    0:d=0  hl=2 l=   9 cons: priv [ 1 ]        
    2:d=1  hl=2 l=   5 prim:  priv [ 2 ]        
    9:d=1  hl=2 l=   0 prim:  priv [ 3 ]        

Homepage: http://github.com/vvv/under.c
Tag: implemented-in::c, interface::commandline, role::program, scope::utility, works-with-format::der

lem

mag(cc)ic

Такой вот дивный макрос

/* Allocate memory for type and fill it with zero-valued bytes */
#define new_zeroed(type) ({               \
        type *__x = malloc(sizeof(type)); \
        memset(__x, 0, sizeof(type));     \
        __x; })

заменяет собой специализированные функции вида

static inline struct Foo *
new_zeroed_Foo(void)
{
        struct Foo *new = malloc(sizeof(struct Foo));
        memset(new, 0, sizeof(*new));
        return new;
}

Как этот синтаксис работает — понятия не имею. (Просветите дурака?)

Идею списал отсюда:
http://lxr.linux.no/#linux+v2.6.33/tools/perf/util/include/linux/kernel.h#L26

* * *

Update: Ага. По официальной версии оно зовётся compound statement. А `gcc -pedantic' ругается на него, называя braced-group. Что ж, будем знать...

Вот ещё на stackoverflow интересное пишут про ISO C equivalent.