← All posts tagged programming

borman
лытдыбр programming После полутора часов внимательного find&replace в виме на ручном приводе, вздохнул и написал в 200 строк на питоне интерактивный функциональный ленивый sed с упрощенными регулярками и подсветкой синтаксиса, работающий сразу с пачкой файлов.
borman
programming ОМГ C Внезапно узнал, что unaligned read = UB. Даже по uint32_t*. И GCC 5.1 использует это как индульгенцию вместо нормального кода сделать кровь кишки сегфолт распидарасило. Чото грустно.
borman
programming elm Потыкал палочкой Elm. Штука красивая (не javascript, однако). Почти как хаскель — раз уж скомпилилось, наверняка работает правильно. Но вот как на нем дергать какие-нибудь http-ручки — это просто тушите свет.
borman
бред Python programming Обратите внимание, как то, что в <languagename> решается с помощью <featurename>, в Python достигается при помощи договоренностей, прилежания, усидчивости и тестов.
inspired by #2789198
borman
programming байка ...через 4 дня отладки N обнаружил, что из всех криптобиблиотек openssl единственная инициализирует параметр XXX не нулем, а случайным значением. Еще через 5 дней отладки выяснилось, что это не случайное значение, а неинициализированная переменная...
borman
PHP programming quote WTF I'm not exactly clear on how PHP == works, but you can see the MD5 for yourself:
$ echo -n 240610708 | md5sum
0e462097431906509019562988736854 —
$ echo -n QNKCDZO | md5sum
0e830400451993494058024219903391 —
$ echo -n aabg7XSs | md5sum
0e087386482136013740957780965295 —
All of them start with 0e, which makes me think that they're being parsed as floats and getting converted to 0.0.

via news.ycombinator.com
borman
лытдыбр programming rust Внезапно, ачивмент: впервые запостил вопрос на SO.

stackoverflow.com

Удивительно повезло с отвечающим: в течение 5 минут прибежал некоторый товарищ, правильно ответил и исправил в вопросе грамматику по мелочи.
borman
лытдыбр programming rust Пока что самое веселое, чего удалось добиться, это
illegal hardware instructionВпрочем, я даже знаю, где и оно, и почему (ибо unsafe и прохихикал время жизни замыкания).
borman
programming rust Страшное дело — в процессе активного развития языка успели понаписать про него кучу материалов, поэтому приходится всегда проверять дату публикации того, куда перешел из выдачи гугла. Или банить по ключевым словам (увидел незнакомый тип указателя — скрыл).
borman
? programming code Haskell
Дано: библиотека, умеющая читать некоторый структурированный формат. Парсит входной поток и отдает его в виде последовательности логических "событий". Интерфейс на C, интересно обернуть его для хаскеля. В связи с этим есть вопросы.

В целом оригинальный интерфейс выглядит как-то так:
stream = xxx_stream_from_fd(0);
// stream' = xxx_stream_from_string(data, length);
reader = xxx_reader_new(stream);
while ((event_type = xxx_reader_get_next_event(reader)) != XXX_EVENT_END_STREAM) {
    switch (event_type) { ... value = xxx_reader_get_???(reader); }
}
xxx_reader_delete(reader);
xxx_stream_delete(reader);

Понятно, что в х-е это должно быть какой-то монадой. 
1. Обязательно ли для случая с from_string чтобы всё происходило в IO? Этого хотелось бы избежать. Как в таком случае должен выглядеть тип, общий для обоих вариантов входных потоков?
2. xxx_reader_get_string возвращает указатель на кусок буфера внутри парсера (для zero copy). Указатель инвалидируется следующим вызовом get_next_event. Возможно ли безопасно описать такой контракт в типах?
borman
programming Придумал для себя упражнение на языки — к моей библиотеке работы с JSON-like форматом *** сделать биндинги для CPython, PyPy, Julia, Rust, Haskell. Может, еще и интереса ради Go добавлю.