Home

Advertisement

Algebra of Programming

  • Dec. 30th, 2009 at 2:52 PM
Илья Ключников поделился сканами к AOP.
Помнится, я долго и безуспешно пытался найти её, пусть теперь вот тут лежит: http://mskhug.ru/attachment/wiki/AOP/aop.djvu
Имеется фото картинки, нарисованной на тетрадном листе:
Рисунок - простым карандашом.
Лист с голубенькими горизонтальными линейками.

Естесственно, в некоторых местах линии проходят через рисунок.

Хочется аккуратно и без скурпулезной ручной работы убрать линии из .jpg чтобы от них не осталось заметного следа и при этом рисунок пострадал минимально.

Пока простого и эфеективного решения не придумал (линии не достаточно тонкие и однородные по цвету).

Подскажите направление решения задачи.

P.S. crossposted to [info]useful_faq here.
UPD1:
Пока наилучший из наипростейших вариантов следующий:
- идти по картинке поперек синих линий, находя точки этих линии по условию B > R
- каждый такой поперечный отрезок линии заменить на линейную интерполяцию цвета (берем точку перед началом и после конца "синего" и между ними интерполируем), добавляя к каждому пикселу немножко случайного шума.
Артефакты видны (бледные полосы на месте линий, местами разрывы в рисунке, если присматриваться), но морда уже не выглядывает из-за решетки, и в первом приближении вышло неплохо, особенно если учесть минимум работы руками.

haskell, http, XML

  • Dec. 28th, 2009 at 12:17 PM
Есть задача - стянуть с HTTP сервера XML файл, распарсить его и получить некие данные (XPath), и вывести их в консоль

При работе с HTTP нужно будет передать данные сессии (cookies) в GET запросе

Вопрос сообществу - что православно использовать для

- работы с HTTP
- разбора XML
- формирования вывода на консоль, желательно с поддержкой шаблонов (в идеале - XSLT)

В гугле не забанили, хакэдж смотрел, но хочется услышать мнения

Встречайте, http://erlanger.ru/

  • Dec. 27th, 2009 at 4:36 PM
Встречайте, http://erlanger.ru/

Почти три года тому назад у Кирилла Заборского (Qrilka) и Олега Тайкало (mirrorer) появилась мысль, что неплохо было бы начать перевод документации по Эрлангу на русский язык. У меня тогда как раз намечались свободные вычислительные мощности и я легко поддался на уговоры разместить вики с переводами у себя на сервере.

Время шло. Перевод шел с разной скоростью, обрастал такими вещами, как например, переводами man-страниц, и я на свою беду решил снабдить сайт еще и новостями из мира Erlanga. Это было два с половиной года тому назад.

За два с половиной года набралось ни много ни мало 500 новостей (а если бы я не был ленивым, то их было бы в полтора раза больше :) ). Организовалось достаточно активное русскоязычное сообщество в Google Groups (в первую очередь благодаря «хозяину» группы Максиму Трешкину(zerthurd)) и в Jabber'е (признавайтесь, кто создал :) )

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

Я посчитал, что негоже нам всем ютиться на erlanger.dmitriid.com и решил еще в январе 2009-го перенести сайт на подобающий домен. Всего год спустя необходимость поборола лент и вот — встречайте, http://erlanger.ru/

лямбда-образ функции

  • Dec. 25th, 2009 at 12:02 AM
Помогите пожалуйста разобраться в лямбда-исчислении.
Как определить лямбда-образ функции:
F(<x1,x2...xn>)=max от i=1 до n (xi*n+i)
понятно что образ будет вида:
<<F>>=lambda y. (y<<0>> lambda y`("что-то еще если массив не пустой"))
Но как описать функции  длины и максимума? И как применить их?

Dec. 25th, 2009

  • 12:20 AM
Как правильно писать библиотеки на Haskell или Ocaml, чтобы упростить их дальнейшее использование из других языков? Есть ли какой-то стандартный метод?

OCaml 3.11 & Lwt

  • Dec. 22nd, 2009 at 8:31 PM
Я правильно понимаю, что Lwt теперь умеет работать в нативном коде?
День добрый!
Заранее извиняюсь за несколько сумбурно сформулированный вопрос, ибо не представляю еще всех сложностей проблемы.
Опишу вратце ситуацию и решаемую задачу:
Есть организация - банк, в которой эксплуатируется множество телекоммуникационных устройств, в основном CISCO разных моделей, и FreeBSD по-мелочи. Есть специалисты, которые их конфигурируют. Также в организации есть прихлебатели типа меня - безопасники, задача которых бдить, контроллировать и быть в курсе. На данный момент не охваченный сегмент средствами моего технического мониторинга является как раз конфиги(настройки) сети. Собственно ставится задача выгружать, хранить и уметь извлекать нужную информацию о настройках. В основном конечно интерисует построение картины о возможности внешних поключений в сеть банка и разрешенных исходящих соединений из организации. В основном это нужно, что-бы иметь возможность проверить по-факту насколько реальные настройки соответсвуют задекларированным в различных политиках на бумаге. Технически мне видится, стоит задача парсинга конфигов циски и извлечения из них необходимых мне данных.
После чтения статей, блогов, журналов о фнкциональном программировании у меня сложилось впечатление, что это как-раз та область "народного хозяйства", где применение функциональной парадигмы будет более оправдано и за счет гибкости подхода и поможет решить задачу. Но, если честно, я на 100% не представляю насколько будет все сложно и можно ли добиться результата вообще.
Пока взял вот читать книгу по окамлу, но идет тяжко.
Собственно вопрос, что думаете по поводу этой задачи и использования ФП-языков для ее решения?
Стоит ли сосредоточиться на окамле или все-таки взять более распространенный питон? Ни питона ни окамла я не знаю, на фп раньше не писал, очень давно увлекался фортом. Основными средствами является С++ и немножко пхп.

Заранее спасибо за помощь и мнение.
Вышел в свет третий выпуск журнала «Практика функционального программирования».

Коллектив авторов поздравляет вас с наступающим Новым Годом! Чтобы вам было, чем занять послепраздничные выходные (и большую часть января :), мы подготовили для вас конкурс!

Кроме того, в уникальной цирковой программе: рекурсивные функции тянут себя за хвост, факир прячет уходящие за горизонт фермы memcached под тонким уровнем абстракции, дрессированный верблюд превращается в кучу перьев и 1001 процесс, развенчание полиморфизма и разрезание функциональной парадигмы на части без наркоза.



Перейти к оглавлению номера.
Существует ли примочка для GHCi, чтобы он запоминал между запусками, какие модули подключены, историю команд?

Update. Действительно, история команд сохраняется, я упустил это. Даже поиск команд по Ctrl+R, как в bash, есть. Как правильно заметил [info]mibori, меня интересует нечто большее, использование GHCi вместо bash. На Haskell можно писать скрипты, но интерпретатор Haskell на низком уровне. И сохранять определения, данные через "let … = …" и "var <- …", было бы неплохо, а они сбрасываются даже при перезагрузке модуля, не говоря о перезагрузке GHCi. И нужна частичная загрузка модуля, то есть когда загружаются только корректные определения из модуля.

Dec. 17th, 2009

  • 8:47 PM
А оговаривается ли где-то в стандарте порядок раскрытия макросов?
Репост отсюда вот:
http://lisper.ru/forum/thread/126

Дело в том, что ради интереса попробовал реализовать вот такую штуку
(eval-when (:compile-toplevel :load-toplevel :execute) 
  (defvar *cleaners* '())) 
 
(defmacro with-cleaners ((&rest resources) &body body) 
  "Each resource is of form (name value)" 
  (setf *cleaners* '()) 
  `(let ,resources 
     (macrolet ((add-cleaner (&body cleaner-body) 
                  (push cleaner-body *cleaners*) 
                  nil) 
                (invoke-cleaners () 
                  `(progn ,@(reduce #'nconc *cleaners*) 
                          ,(setf *cleaners* '())))) 
       (unwind-protect 
         (progn ,@body) 
         (invoke-cleaners))))) 

и обнаружил, что оно не везде работает так, как хотелось(должно вычислять все cleaner формы в конце области видимости)(оно полагается на порядок раскрытия слева-направо; соответственно, например, Clozure CL оно работает, а в SBCL, например - нет(и это только в случае с unwind-protect, как я понял. Если вместо него обычная функция, порядок - слева направо))