В силу исторических причин, у нас в конторе, используется старенькая АТС Panasonic TDA200. И, как известно, журнал звонков она выводит в последовательный порт, для чтения данных из которого, на сервере использовалась одна программулька. У этого ПО есть ряд ограничений, делающий его использование неудобным (размер лог-файла, размер БД) и дабы побороть эти недостатки и в силу природной лени (чтобы избежать постоянной очистки лога и БД вручную) было решено набыдлокодить что-то своё. А так как, уже давно, на глаза попадается слово «python» да и пытливый ум периодически просыпается, то решено было данную задачу реализовать на этом языке и попутно на, хорошо мне знакомом, tcl. Ну а результатами решил поделиться с обществом. Да, сразу замечу, что задача решена и сервис доведён до «промышленной» эксплуатации. Для хранения данных используется СУБД MariaDB (оно уже было), в качестве хост-системы CentOS 7.
Читать полностью »
Рубрика «функциональное программирование» - 23
Всё познаётся в сравнении, или реализация одной простенькой задачи на python и tcl
2017-08-17 в 12:31, admin, рубрики: python, tcl, функциональное программирование10 шагов по решению задач в программировании
2017-08-15 в 7:39, admin, рубрики: Анализ и проектирование систем, Блог компании NIX Solutions, Программирование, советы новичкам, функциональное программирование, метки: советы новичкамПеревод статьи Валинды Чен.
Это сборник советов для разработчиков-новичков, которые смотрят на пустой экран и не знают, с чего начать. Нередко можно услышать от молодых разработчиков, работающих над решением каких-то задач в программировании, что они не уверены, за что нужно хвататься. Ты понимаешь саму задачу, логику, основы синтаксиса и так далее. Если ты видишь чей-то код, или тебе кто-то помогает, то можно всё сделать самому. Но бывает, что ты не уверен в своих силах, или поначалу тебе трудно реализовать свои мысли в коде, несмотря на то, что ты знаешь синтаксис и логику. Под катом — несколько советов по решению этой проблемы, которые помогут вам в повседневной работе.
Читать полностью »
ICFP Contest 2017 — проверка на прочность для настоящих разработчиков
2017-07-28 в 11:02, admin, рубрики: icfp, icfpc, icfpc 2017, анонс, Блог компании СКБ Контур, контекст, ненормальное программирование, Программирование, соревнование, соревнования по программированию, Спортивное программирование, функциональное программированиеICFPC — ежегодное соревнование для программистов. Оно проходит в онлайне и длится 72 часа. ICFPC 2017 начнётся в пятницу 4 августа в 12:00 (UTC) и закончится в понедельник.
Я расскажу, почему нельзя пропускать ICFPC и дам серию советов. Освободи следующие выходные, собери команду и участвуй!
Мониторинг акторов в Akka.Net, но на F#
2017-07-27 в 16:51, admin, рубрики: .net, C#, F#, функциональное программированиеСразу скажу, хаба для F# на хабре нет, поэтому пишу в C#.
Для тех кто не знаком с F#, но знаком с C#, рекомендую наисвежайшую статью от Microsoft.
Она поможет Вам испытывать меньше WTF моментов при прочтении, т.к. моя статья не туториал к синтаксису.
Контекст задачи
Есть сервис, написанный на Akka.NET, он вываливает в разные текстовые логи кучу инфы. Отдел эксплуатации грепает эти логи, жарит по ним регекспами, чтобы узнать о кол-ве ошибок (бизнесовых и не очень), о кол-ве входящих в сервис сообщений и кол-ве исходящих. Далее эта информация заливается в ElasticDB, InfluxDB и показывается в Grafana и Kibana в разных срезах и агрегациях.
Звучит сложно, да и парсить текстовые логи сервиса, который генерит несколько десятков ГБ текстового мусора в день — занятие неблагодарное. Поэтому встала задача — сервис должен быть способен поднять ендпоинт, который можно дёрнуть и получить сразу всю инфу о нём.
Решать задачу будем так:
- Напишем доменную модель для метрик
- Замапим доменную модель метрик на реализацию App.Metrics и поднимем апишечку
- Сделаем структурированный доменный логгер, который натянем на внутренний логгер Akka
- Сделаем обёртку для функциональных акторов, которая спрячет работу с метриками и логгером
- Соберём всё вместе и запустим
Чёрная Лямбда ефрейтора Волкова: новое направление и гранты на летнюю школу
2017-07-21 в 12:43, admin, рубрики: haskell, алгебра везде, Блог компании Школа GoTo, дети наше будущее, инновации, информационная безопасность, летняя школа, Программирование, Промышленное программирование, функциональное программирование, чёрная лямбдаНе далее чем в июле прошла очередная школа GoTo. В этот раз мы решили внести некоторое разнообразие в стандартный набор Ардуин, Питонов, и прочих, и случился Хаскелль. Небольшое отделение из 6 юношей (кусочек нашего общего взвода в 60 человек) бодро промаршивало по -исчислению, основам синтаксиса, прошло посвящение в ФП написанием факториала, посворачивало списки, научилось словосочетанию "параметрически полиморфная функция высшего порядка" и присущему этому пониманию типов и тайпклассов под предводительством ефрейтора Волкова.
А ещё у нас были элементы инфобеза, криптовалюты, React Native, nix
, и, конечно, git
.
И мы начали писать книгу про Haskell.
В общем, получилось задорно.
(Под катом картинки участников, лямбды, илосос, анонс нового направления и гранты)
Scala коллекции: секреты и трюки
2017-07-14 в 16:28, admin, рубрики: scala, Алгоритмы, коллекции, Программирование, функциональное программированиеПредставляю вашему вниманию перевод статьи Павла Фатина Scala Collections Tips and Tricks. Павел работает в JetBrains и занимается разработкой Scala плагина для IntelliJ IDEA. Далее, повествование идет от лица автора.
В этой статье вы найдете упрощения и оптимизации, характерные для повседневного использования API Scala коллекций.
Некоторые советы основаны на тонкостях реализации библиотеки коллекций, однако большинство рецептов — это разумные преобразования, которые на практике часто упускаются из виду.
Этот список вдохновлен моими попытками разработать практичные инспекции для Scala коллекций, для Scala плагина IntelliJ. Сейчас мы внедряем эти инспекции, так что, используя Scala плагин в IDEA, вы автоматически выигрываете от статического анализа кода.
Тем не менее, эти рецепты ценны сами по себе. Они могут помочь вам углубить понимание стандартной библиотеки коллекций Scala и сделать ваш код быстрее и выразительнее.
Обновление:
Если вы испытываете тягу к приключениям,
вы можете узнать, как помочь в развитии IntelliJ плагина для Scala и попробовать свои силы в реализации, подобрав подходящую инспекцию.
Создание движка для блога с помощью Phoenix и Elixir – Часть 10. Тестирование каналов
2017-07-13 в 21:41, admin, рубрики: Elixir, Elixir/Phoenix, Erlang/OTP, phoenix, ruby on rails, wunsh, Разработка веб-сайтов, функциональное программированиеОт переводчика: «Elixir и Phoenix — прекрасный пример того, куда движется современная веб-разработка. Уже сейчас эти инструменты предоставляют качественный доступ к технологиям реального времени для веб-приложений. Сайты с повышенной интерактивностью, многопользовательские браузерные игры, микросервисы — те направления, в которых данные технологии сослужат хорошую службу. Далее представлен перевод серии из 11 статей, подробно описывающих аспекты разработки на фреймворке Феникс казалось бы такой тривиальной вещи, как блоговый движок. Но не спешите кукситься, будет действительно интересно, особенно если статьи побудят вас обратить внимание на Эликсир либо стать его последователями.»
В этой части мы научимся тестировать каналы.
Почему изменения в новом Phoenix 1.3 так важны
2017-07-13 в 7:10, admin, рубрики: Elixir, Elixir/Phoenix, phoenix, ruby on rails, функциональное программированиеPhoenix Framework всегда был классным. Но он никогда не был таким классным, как с новым релизом 1.3 (который сейчас находится в стадии RC2).
Произошло много значительных изменений. Крис МакКорд написал полный путеводитель по изменениям. Так же доступна его речь с LonestarElixir, где он подробно рассказывает про ключевые моменты. Вдохновленный его трудами, в своей статье я постараюсь рассказать вам про самые важные изменения в проекте Phoenix.
Давайте начнем!
Перевод выполнен самим автором оригинальной статьи Никитой Соболевым.
Как использовать implicit’ы в Scala и сохранить рассудок
2017-07-04 в 6:31, admin, рубрики: functional programming, implicit, scala, type level programming, функциональное программированиеScala богата выразительными средствами, за что ее и не любят опытные программисты на классических ООП-языках. Неявные параметры и преобразования — одна из самых спорных фич языка. Слово "неявные", уже как-бы намекает на что-то неочевидное и сбивающее с толку. Тем не менее, если с ними подружиться, implicit'ы открывают широкие возможности: от сокращения объема кода до возможности многие проверки делать в compile-time.
Хочу поделиться своим опытом по работе с ними и рассказать о том, о чем пока умалчивает официальная документация и блоги разработчиков. Если вы уже знакомы со Scala, пробовали использовать неявные параметры, но все еще испытываете некоторые сложности при работе с ними, либо хотя-бы о них слышали, то этот пост может оказаться вам интересен.
Игры на Scheme(Lisp) в среде DrRacket
2017-06-18 в 15:47, admin, рубрики: drRacket, HtDP, htdw, Scheme, Программирование, создание игр, функциональное программированиеВ данной статье используется среда разработки DrRacket.
Для начала рассмотрим связь конечного автомата и игрового процесса.
Объект управления в игре можно представить в виде конечного автомата.
Рассмотрим программу, моделирующую светофор.
Этот пример был описан в предыдущей статье.
Переходом в другое устойчивое состояние является переключение сигнала светофора.
Диаграмму состояний можно изобразить в следующем виде.
Читать полностью »