Внезапно заявился выступать на DevConf: https://devconf.ru/ru/offers/offer/273
Есть шанс, что возьмут, тогда смогу порассказать про безопасное скриптование с помощью #haskell и библиотек
Есть шанс, что возьмут, тогда смогу порассказать про безопасное скриптование с помощью #haskell и библиотек
Turtle и Shake, которые позволяют выбросить bash и make соответственно :)devconf.ru
Автоматизируем и скриптуем безопасно с Haskell - Профессиональная конференция веб-разработчиков Devconf 2018
Всем нам приходится что-то автоматизировать рутинные задачи - кому-то сборку, кому-то резервное копирование или обработку и сбор логов. Часто для подобных задач используются динамически типизированные скриптовые языки, ведь писать скрипты на ник так быстро…
(Что-то давно не писал сюда - запал пропал, как обычно :( Попробую исправиться)
Как говорит описание, это
Если кратко, то с помощью этой штуки можно брать строки вида
и получать
Подобным же образом разбираются меры объема ("3 cups of sugar") и прочие числительные ("eighty eight").
Кмк, такая штука отлично себя покажет в связке с STT и ботами вообще. Скажем, можно написать бота, кторый сможет разобрать человекописанный рецепт пирога и составить список покупок, соответствующий ингридиентам! Или можно просто сделать напоминалку, понимающую фразы типа "завтра в три пятнадцать напомни купить пару лампочек" :)
Важно, что движок подразумевает расширение и на первый взгляд расширяемость сделана довольно удобно.
Facebook открыл исходники ещё одного инструмента на #haskell: https://github.com/facebookincubator/ducklingКак говорит описание, это
Language, engine, and tooling for expressing, testing, and evaluating composable language rules on input strings.. Если кратко, то с помощью этой штуки можно брать строки вида
"the first Tuesday of October"
и получать
{"value":"2017-10-03T00:00:00.000-07:00","grain":"day"}Подобным же образом разбираются меры объема ("3 cups of sugar") и прочие числительные ("eighty eight").
Кмк, такая штука отлично себя покажет в связке с STT и ботами вообще. Скажем, можно написать бота, кторый сможет разобрать человекописанный рецепт пирога и составить список покупок, соответствующий ингридиентам! Или можно просто сделать напоминалку, понимающую фразы типа "завтра в три пятнадцать напомни купить пару лампочек" :)
Важно, что движок подразумевает расширение и на первый взгляд расширяемость сделана довольно удобно.
GitHub
facebook/duckling
Language, engine, and tooling for expressing, testing, and evaluating composable language rules on input strings. - facebook/duckling
Наткнулся на "релизацию"
Оказалось, что оная просто запускает #python под капотом :) И я лично считаю такое решение имеющим смысл - сил в matplotlib вложено столько, что реализовать аналог мало кто отважится. И да, для Haskell есть
Эта библиотека - ещё один шажок, приближающий Haskell к "победе над python" в нише ML и прочей "прикладухи" :)
matplotlib на #haskell: https://github.com/abarbu/matplotlib-haskellОказалось, что оная просто запускает #python под капотом :) И я лично считаю такое решение имеющим смысл - сил в matplotlib вложено столько, что реализовать аналог мало кто отважится. И да, для Haskell есть
diagram и надстройки над оным. Но matplotlib а) сразу умеет очень многое "из коробки" б) синтаксически приближен к MatLab (в части работы с визуализацией), что делает matplotlib отличным инструментом для прикладников, привыкших использовать упомянутый проприетарный продукт.Эта библиотека - ещё один шажок, приближающий Haskell к "победе над python" в нише ML и прочей "прикладухи" :)
GitHub
GitHub - abarbu/matplotlib-haskell: Haskell bindings for Python's Matplotlib
Haskell bindings for Python's Matplotlib. Contribute to abarbu/matplotlib-haskell development by creating an account on GitHub.
Интересный прокет:
Представьте себе, это реализация #haskell ('98) на #racket! Да, статическая типизация с выводом типов, алгебраические типы данных, сопоставление с образцом, даже
Конечно же, проект не претендует на роль ещё одной полноценной реализации языка Haskell, но "привнести любимые фишки в Racket" вполне способен - тем Racket и славен, что всячески поощряет написание и встраивание своих языков :)
Тем интереснее будет, когда будет готов REMIX (см. https://www.youtube.com/watch?v=r1kE3R26dK0), а вместе с ним и возможность вставлять куски кода на одном языке в код на другом, имея полную поддержку со стороны IDE для обоих языков (да, хаскелевы quasi quotes, это камень в ваш огород!)
Hackett (https://github.com/lexi-lambda/hackett)Представьте себе, это реализация #haskell ('98) на #racket! Да, статическая типизация с выводом типов, алгебраические типы данных, сопоставление с образцом, даже
классы типов! И при этом вся мощь макросистемы Racket!Конечно же, проект не претендует на роль ещё одной полноценной реализации языка Haskell, но "привнести любимые фишки в Racket" вполне способен - тем Racket и славен, что всячески поощряет написание и встраивание своих языков :)
Тем интереснее будет, когда будет готов REMIX (см. https://www.youtube.com/watch?v=r1kE3R26dK0), а вместе с ним и возможность вставлять куски кода на одном языке в код на другом, имея полную поддержку со стороны IDE для обоих языков (да, хаскелевы quasi quotes, это камень в ваш огород!)
GitHub
GitHub - lexi-lambda/hackett: WIP implementation of a Haskell-like Lisp in Racket
WIP implementation of a Haskell-like Lisp in Racket - lexi-lambda/hackett
Внезапно обнаружил, что есть #elm'like либа для GUI-строения на
#fsharp
F#. Компилируется в JS силами Fable. Лежит тут: https://fable-elmish.github.io/elmish/ Надо будет попробовать для интересу :)#fsharp
fable-elmish.github.io
Elmish
Elm-like Cmd and Program modules for Fable apps
Шикарная интерактивная обучалка #git'у: http://learngitbranching.js.org/ Учит и азам (коммиты, бранчинг), "пост-азам" (rebase и cherrypicking) и даже идет немного дальше :)
learngitbranching.js.org
Learn Git Branching
An interactive Git visualization tool to educate and challenge!
Livecoding на
Что же, начинание, бесспорно, полезное, хоть и не каждому подходит такой формат "развлечений" 😉
Зато сделана трансляция качественно, "диктора" слышно хорошо, да и тематика не самая "попсовая". Автор даже разместил ссылку на свои
Twitch добрался и до #rust: https://www.twitch.tv/tsoding - тут пишут электронную музыку на сабже.Что же, начинание, бесспорно, полезное, хоть и не каждому подходит такой формат "развлечений" 😉
Зато сделана трансляция качественно, "диктора" слышно хорошо, да и тематика не самая "попсовая". Автор даже разместил ссылку на свои
dotfiles: редактором у него #emacs работает, что лично меня радует 👍, а операционкой - #nixos!Twitch
Tsoding - Twitch
Rendering Chat as Video using C++
Хорошее руководство по
#haskell #tdd
QuickCheck https://begriffs.com/posts/2017-01-14-design-use-quickcheck.html Объясняет саму концепцию property based testing и учит описывать генераторы и свойства. Даже учит оценивать, как распределяются генерируемые аргументы и как покрывают область допустимых значений (!) - такое нечасто встретишь в статейках про PBT (обычно авторы ограничиваются примером про разворот списка).#haskell #tdd
Begriffs
The Design and Use of QuickCheck
How to use QuickCheck with Confidence
"Всю жизнь" думал, что знаю
Оказалось, что не только в Perl, но и вообще в PCRE есть
С подобными фичами можно писать выражения типа такого
а оное, оказывается, в .Net ещё и "улучшить" можно:
Использовать я это всё, конечно, не буду. Приспичит - на комбинаторах парсер напишу!
Но если вдруг кому-то будет интересно, сходите сюда: http://www.rexegg.com/regex-conditionals.html
#pcre #regex
регулярные выражения достаточно хорошо, уж по крайней мере PCRE. Знал, что в Perl можно внутрь выражений вставлять код на Perl (не пользовался ни разу, но был в курсе).Оказалось, что не только в Perl, но и вообще в PCRE есть
условные выражения и рекурсия! Более того, в условии можно узнать, например, что сейчас осуществляется непервый проход, и тем самым управлять рекурсией!С подобными фичами можно писать выражения типа такого
^(?:A(?=A*+[^AB]*+((?(1)\1)B)))++[^B]*+\1$,а оное, оказывается, в .Net ещё и "улучшить" можно:
^(?>(?<Count_A>A)+)(?>[^AB]*)(?>(?<-Count_A>B)+)(?(Count_A)(?!))$Использовать я это всё, конечно, не буду. Приспичит - на комбинаторах парсер напишу!
Но если вдруг кому-то будет интересно, сходите сюда: http://www.rexegg.com/regex-conditionals.html
#pcre #regex
🔥1
Ну вот, эта регулярка проверяет баланс скобок в произвольном S-выражении:
Когда-то (ещё вчера) я думал, что такое на #regex не сделать...
(?(R)|^)\([^()]*((?R)[^()]*)*\)(?(R)|$)Когда-то (ещё вчера) я думал, что такое на #regex не сделать...
Люблю процедурную генерацию контента, особенно графического. Вот интересный образчик "прямо в браузере": http://alastor.instant-adventures.net/
Генерируются планеты Кластера Аластор - автор вдохновлялся творчеством Джека Вэнса. Обратите внимание: ландшафты - живые (луны двигаются)!
Надо будет что-то подобное накодить на elm/purecsript :)
#procedural_generation
Генерируются планеты Кластера Аластор - автор вдохновлялся творчеством Джека Вэнса. Обратите внимание: ландшафты - живые (луны двигаются)!
Надо будет что-то подобное накодить на elm/purecsript :)
#procedural_generation
Делать реализации
The Elm Architecture (#tea) для своих языков, это, похоже, довольно популярное занятие! Выше я уже писал про TEA для F#. Теперь, вот, делюсь TEA для #swift: https://github.com/chriseidhof/tea-in-swiftRelm (http://relm.ml/relm-intro) - библиотека для построения GUI на основе GTK+ с применением подхода "The Elm Architecture" (#tea), на этот раз - на #rust
Зарелизился
В релизе
- перешли на 64bit для OSX/Linux (наконец-то!)
- прикрутили систему контроля версий (пока она самоедльная, но в релиз вошла система версионирования кода в
- сделали пристойный FFI для выхода за пределы SmallTalk VM
- добавили
- добавили
Что приятно, Pharo стал частью
Кстати, нынче на сайте Pharo (http://pharo.org/) есть курс (#MOOC) по Pharo! Правда, пока курс проводится по пятой версии, но концепции языка не поменялись, так что можно проходить и на Pharo 6 :)
Pharo 6 (ещё в начале июня, а я всё торможу и не пишу об этом) - "чисто объектно-ориентированный язык", диалект (скорее даже "сборка") #Smalltalk.В релизе
- перешли на 64bit для OSX/Linux (наконец-то!)
- прикрутили систему контроля версий (пока она самоедльная, но в релиз вошла система версионирования кода в
Git, которая будет основной в Pharo 7)- сделали пристойный FFI для выхода за пределы SmallTalk VM
- добавили
поддержку иммутабельных объектов!- добавили
тёмную тему (САМОЕ ВАЖНОЕ УЛУЧШЕНИЕ!)Что приятно, Pharo стал частью
OpenSmalltalk Initiative - теперь это не просто сторонняя поделка!Кстати, нынче на сайте Pharo (http://pharo.org/) есть курс (#MOOC) по Pharo! Правда, пока курс проводится по пятой версии, но концепции языка не поменялись, так что можно проходить и на Pharo 6 :)
Если игрострой близок вашему сердцу, и вы всегда хотели написать свою игру, и тем паче свой "Рогалик" (#roguelike), то настоятельно рекомендую присоединиться к мероприятию, которое проводит сабреддит по рогаликостроению: https://www.reddit.com/r/roguelikedev/wiki/python_tutorial_series
В рамках мероприятия все желающие читают статьи, публикуемые организатором, и шаг за шагом делают свои версии игры. Материал расчитан на начинающих питонистов, но использование #python не обязательно (я, вот, на #haskell свой рогалик пишу 😉). Более того, можно заявить о своем проекте в коментариях, что приведет к появлению вашего проекта в списке участников. Список уже немал, и постоянно растёт и вместе с ним растёт кол-во языков, которые используют авторы проектов. Так что даже если вы не хотите писать в одиночку, можете напроситься в уже существующий проект - думаю, большинство авторов будет непротив.
Кстати, помимо обучающих статей есть ещё и соответствующая серия видео (для тех, кто любит такое): https://www.youtube.com/playlist?list=PLKUel_nHsTQ1yX7tQxR_SQRdcOFyXfNAb
#gamedev #tutorial
В рамках мероприятия все желающие читают статьи, публикуемые организатором, и шаг за шагом делают свои версии игры. Материал расчитан на начинающих питонистов, но использование #python не обязательно (я, вот, на #haskell свой рогалик пишу 😉). Более того, можно заявить о своем проекте в коментариях, что приведет к появлению вашего проекта в списке участников. Список уже немал, и постоянно растёт и вместе с ним растёт кол-во языков, которые используют авторы проектов. Так что даже если вы не хотите писать в одиночку, можете напроситься в уже существующий проект - думаю, большинство авторов будет непротив.
Кстати, помимо обучающих статей есть ещё и соответствующая серия видео (для тех, кто любит такое): https://www.youtube.com/playlist?list=PLKUel_nHsTQ1yX7tQxR_SQRdcOFyXfNAb
#gamedev #tutorial
Reddit
roguelike development
A community of active roguelike developers. Learn how to make a roguelike, share your progress, follow what others are creating, and engage in discussions about a broad range of related topics and resources.
Когда-то давно я уже натыкался на эту серию видео, а тут мой товарищ о ней напомнил: https://www.youtube.com/playlist?list=PL78FD414366D03B3C - обстоятельный и подробный курс видео про пайку.
Да, курс старый. Да, затрагивает только монтаж в отверстия (и даже пайку внавес на макетки со штифтами!). Но зато хорошо объясняет, например, физические принципы данной формы соединения!
Рекомендую к просмотру хотя бы выборочно.
#diy #electronics #soldering
Да, курс старый. Да, затрагивает только монтаж в отверстия (и даже пайку внавес на макетки со штифтами!). Но зато хорошо объясняет, например, физические принципы данной формы соединения!
Рекомендую к просмотру хотя бы выборочно.
#diy #electronics #soldering
YouTube
PaceWorldWide - How To Solder Lessons - YouTube
https://www.youtube.com/playlist?list=PLGLfVvz_LVvSX7fVd4OUFp_ODd86H0ZIY - плейлист с кучей видео, каждое из которых даёт введение в какую-то конкретную технологию: это и языки типа #lua, #swift, #kotlin, #haskell и библиотеки типа
express.js и jQuery и даже совсем-не-языки, такие как Twitter Bootstrap. В целом вполне неплохой способ посмотреть на что-то новое за обедом :)YouTube
Learn in One Video
Share your videos with friends, family, and the world
Откопал "на антресолях" один из сових первых проектов на микроконтроллерах: USB-фицированный игровой манипулятор (joystick) от "Электроника БК 0010-01". USB реализован программно на базе библиотеки VUSB. Библиотека позволяет на микроконтроллерах AVR с тактовой частотой от 12МГц разрабатывать устройства, работающие в режиме USB Low Speed - обычто это либо CDC-устройства ("виртуальный последовательный порт"), либо HID-устройства (Human Interface Devices). В моём случае имитируется HID-joystick с двумя дискретными осями и двумя кнопками.
USB типа B тут, очевидно, привнесённый, но всё остальное - оригинальное!
В системе девайс видится как
Кого-то может смутить "except ... joysticks", но обычно хоббисты нагло используют именно эту пару id для своих устройств:
Что в Windows (пробовал давно, ещё на XP), что в Linux джойстик определяется и работает нормально:
В системе девайс видится как
$ lsusb
...
Bus 002 Device 008: ID 16c0:05df Van Ooijen Technische Informatica HID device except mice, keyboards, and joysticks
...
Кого-то может смутить "except ... joysticks", но обычно хоббисты нагло используют именно эту пару id для своих устройств:
16c0:05df.Что в Windows (пробовал давно, ещё на XP), что в Linux джойстик определяется и работает нормально:
$ jstest /dev/input/js0
Driver version is 2.1.0.
Joystick (www.obdev.at "Electronika" joystick:)) has 2 axes (X, Y)
and 2 buttons (Trigger, ThumbBtn).
Testing ... (interrupt to exit)
Axes: 0:-32767 1:-32767 Buttons: 0:off 1:off