пятница, 24 января 2020 г.

cl-maxminddb

В общем, нужно было делать запрос к базам MaxMind. Не нашёл ничего вменяемого под CL. Хотел было быстренько сделать биндинги к си библиотеке, но там были передачи значений на стеке, что-то я запутался и подумал, что можно и нативно налабать. В общем, накидал. Читает, правда без всякой обработки ошибок в том плане, что версия БД и т.д. прочие вещи, которые можно было бы сделать. Но он работает. :) Вот код. Собственно, небольшой пример:

> (with-mmdb (mmdb "/var/lib/GeoIP/GeoLite2-City.mmdb")
    (mmdb-query mmdb "8.8.8.8"))

(("continent" ("code" . "NA") ("geoname_id" . 6255149)
  ("names" ("de" . "Nordamerika") ("en" . "North America")
   ("es" . "Norteamérica") ("fr" . "Amérique du Nord") ("ja" . "北アメリカ")
   ("pt-BR" . "América do Norte") ("ru" . "Северная Америка")
   ("zh-CN" . "北美洲")))
 ("country" ("geoname_id" . 6252001) ("iso_code" . "US")
  ("names" ("de" . "USA") ("en" . "United States") ("es" . "Estados Unidos")
   ("fr" . "États-Unis") ("ja" . "アメリカ合衆国") ("pt-BR" . "Estados Unidos")
   ("ru" . "США") ("zh-CN" . "美国")))
 ("location" ("accuracy_radius" . 1000) ("latitude" . 37.751d0)
  ("longitude" . -97.822d0) ("time_zone" . "America/Chicago"))
 ("registered_country" ("geoname_id" . 6252001) ("iso_code" . "US")
  ("names" ("de" . "USA") ("en" . "United States") ("es" . "Estados Unidos")
   ("fr" . "États-Unis") ("ja" . "アメリカ合衆国") ("pt-BR" . "Estados Unidos")
   ("ru" . "США") ("zh-CN" . "美国"))))

пятница, 10 января 2020 г.

Покупка товара по ценнику и закон

Зашёл я тут в Магнит, решил прикупить конфеты. Покупаю, пробивают мне и снимают с меня слегка больше, чем на ценнике я видел до этого. Не скажу, что я сильно прям удивился. Но позвал заведующую и попросил сделать всё по закону. Вроде, конечно, всё получилось, но они говорят, мол, всё это с кармана продавца, магазин не компенсирует и т.д. Я, конечно, понимаю, что, например, у них цены централизованно обновляются в базе и что ценники можно не успеть перепечатать, но за такой процесс разве не магазин должен отвечать?

пятница, 5 апреля 2019 г.

Guile 2.0 и парсинг xml в несколько потоков

Вчера столкнулся с ещё одной странностью в guile. При использовании библиотеки sxml для парсинга xml, соотвественно, всё кажется нормальным, пока парсинг идёт в одном потоке. Но как только потоков несколько, то сразу начинается веселье - xml не парсятся, жалуются на отсутствие нужных закрывающих тегов и прочая ерунда, которая говорит о том, что входные данные неправильные. Это в версии 2.0. Версию 2.2 не проверял из-за того, что её как-то геморнее устанавливать и непонятно надо ли. Пришлось на процесс парсинга делать мютекс и захватывать его на время парсинга. Но что-то какое ощущение, что поделка сугубо студенческая.

среда, 27 февраля 2019 г.

Если хочется какой-то вменяемой разработки на схеме, то лучше брать Racket. Он значительно удобнее и проще. Опыт использования guile показал мне только боль и печаль. Причём сам он неплох, но нужно использовать свежие версии, а свежих версий в Debian Stable нет. Там 2.0 только. А в 2.0 guile, грёбаный стыд, нельзя сделать https запрос. И с 2.0 версией не работает емаксовый плагин. :( В общем, кто будет что начинать на схеме - только Racket. Там всё более развито. А если так смотреть, то вместо схемы лучше взять Common Lisp. Он как-то ближе и проще. :)

понедельник, 8 августа 2016 г.

Всё, наскладывались оригами

Три дня прошли, контест закончен. Всё круто, сейчас надо отдохнуть. :)

пятница, 5 августа 2016 г.

Лидерборд апдейт

Сейчас 8:48. Какие-то бомжи на первом месте в лидерборде.


четверг, 4 августа 2016 г.

Продолжаем наблюдать за твитами ICFPC-2016

Смотрим, что нам пришло:
->>>+++++>>+>+>> +>++>+>+[+++[>++ ++++++#<->>+ >[-]>.-#[>>>>>>[ +<]>--#]#>--.->- --..>#>->#.->--> ++++.+++>.[-]<<< <[.<]>[>]<[.<]<<.
Кто-то комментирует, говорит, похоже на оригами. В общем, это программа на языке Brainfuck, которая выводит следующее:
 Hello, fold/unfold!
В общем, орги продолжают намекать.