Size: a a a

2017 April 14
brain_dump_etc
Несколько предвзятая, но полезная книга (скорее, брошюрка) о том, как же нужно делать свой API, чтобы пользователи-разработчики были довольны: https://apigee.com/about/resources/ebooks/web-api-design
(прямая ссылка на PDF: https://pages.apigee.com/rs/apigee/images/api-design-ebook-2012-03.pdf).

Книжка охватывает широкий круг тем - упомянуты и аутентификация, и версионирование и поиск. К каждому пункту прилагаются примеры существующих API известных серсисов, и каждый пример снабжен комментариями автора о плюсах и минусах этого конкретного решения. Повторюсь - вкусовщины в книжке много, но в рациональных зёрен не одна горсть наберется :)

#software_design #api #book
источник
2017 April 15
brain_dump_etc
Вот это да! Nayn Cat теперь и в вашем терминале! http://nyancat.dakko.us/
Как минимум, оцените размах и проработку - даже в OS/2 работает! И конечно работает в "тонких" VT220-терминалах :) Очень круто!
источник
brain_dump_etc
источник
2017 April 22
brain_dump_etc
Недавно перешел на хранение и синхронизацию .dotfiles в Git-репозитории. Для этого воспользовался утилитой YADM - Yet Another Dotfiles Manager (https://thelocehiliosan.github.io/yadm/).

Раньше я синхронизироал мои конфиги через Dropbox и симлинки из него, а раскладыванием симлинков занималась утилита SUS - Super User Spark (https://github.com/NorfairKing/super-user-spark). В целом связка "Dropbox+SUS" меня устраивала, но не хватало версионности. А YADM эту проблему решил, ибо Git. Причем даже симлинки не нужны - YADM версионирует файлы прямо по месту.

Кстати, и SUS и YADM умеют хранить несколько версий для отдельных конфигов, что удобно в случае различных OS и различных по конфигурации машин, а YADM умеет даже шаблонизацию.

#dotfiles #linux
источник
2017 May 02
brain_dump_etc
Внезапно заявился выступать на DevConf: https://devconf.ru/ru/offers/offer/273
Есть шанс, что возьмут, тогда смогу порассказать про безопасное скриптование с помощью #haskell и библиотек Turtle и Shake, которые позволяют выбросить bash и make соответственно :)
devconf.ru
Автоматизируем и скриптуем безопасно с Haskell - Профессиональная конференция веб-разработчиков Devconf 2018
Всем нам приходится что-то автоматизировать рутинные задачи - кому-то сборку, кому-то резервное копирование или обработку и сбор логов. Часто для подобных задач используются динамически типизированные скриптовые языки, ведь писать скрипты на ник так быстро и просто! Но написание безопасных и предсказуемо работающих скриптов и сценариев для систем сборки требует определенной дисциплины.
Данный доклад покажет, что те же задачи, которые мы решаем с помощью привычных Bash и Make, можно решать и на Haskell, получая при этом
- большую безопасность и предсказуемость;
- кроссплатформенность (написанный однажды скрипт будет работать и в unix-подобных системах, и на Windows);
- ту же скорость и простоту разработки (типы писать не придется, не нужно будет даже ничего компилировать - если не хочется!).
источник
2017 May 14
brain_dump_etc
(Что-то давно не писал сюда - запал пропал, как обычно :( Попробую исправиться)

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 и ботами вообще. Скажем, можно написать бота, кторый сможет разобрать человекописанный рецепт пирога и составить список покупок, соответствующий ингридиентам! Или можно просто сделать напоминалку, понимающую фразы типа "завтра в три пятнадцать напомни купить пару лампочек" :)

Важно, что движок подразумевает расширение и на первый взгляд расширяемость сделана довольно удобно.
источник
brain_dump_etc
Наткнулся на "релизацию" matplotlib на #haskell: https://github.com/abarbu/matplotlib-haskell

Оказалось, что оная просто запускает #python под капотом :) И я лично считаю такое решение имеющим смысл - сил в matplotlib вложено столько, что реализовать аналог мало кто отважится. И да, для Haskell есть diagram и надстройки над оным. Но matplotlib а) сразу умеет очень многое "из коробки" б) синтаксически приближен к MatLab (в части работы с визуализацией), что делает matplotlib отличным инструментом для прикладников, привыкших использовать упомянутый проприетарный продукт.

Эта библиотека - ещё один шажок, приближающий Haskell к "победе над python" в нише ML и прочей "прикладухи" :)
источник
2017 May 19
brain_dump_etc
Интересный прокет: 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, это камень в ваш огород!)
источник
2017 June 01
brain_dump_etc
Внезапно обнаружил, что есть #elm'like либа для GUI-строения на F#. Компилируется в JS силами Fable. Лежит тут: https://fable-elmish.github.io/elmish/ Надо будет попробовать для интересу :)

#fsharp
источник
2017 June 03
brain_dump_etc
Шикарная интерактивная обучалка #git'у: http://learngitbranching.js.org/ Учит и азам (коммиты, бранчинг), "пост-азам" (rebase и cherrypicking) и даже идет немного дальше :)
источник
2017 June 10
brain_dump_etc
Livecoding на Twitch добрался и до #rust: https://www.twitch.tv/tsoding - тут пишут электронную музыку на сабже.

Что же, начинание, бесспорно, полезное, хоть и не каждому подходит такой формат "развлечений" 😉

Зато сделана трансляция качественно, "диктора" слышно хорошо, да и тематика не самая "попсовая". Автор даже разместил ссылку на свои dotfiles: редактором у него #emacs работает, что лично меня радует 👍, а операционкой - #nixos!
источник
2017 June 14
brain_dump_etc
Хорошее руководство по QuickCheck https://begriffs.com/posts/2017-01-14-design-use-quickcheck.html Объясняет саму концепцию property based testing и учит описывать генераторы и свойства. Даже учит оценивать, как распределяются генерируемые аргументы и как покрывают область допустимых значений (!) - такое нечасто встретишь в статейках про PBT (обычно авторы ограничиваются примером про разворот списка).

#haskell #tdd
источник
2017 June 20
brain_dump_etc
"Всю жизнь" думал, что знаю регулярные выражения достаточно хорошо, уж по крайней мере 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
источник
brain_dump_etc
Ну вот, эта регулярка проверяет баланс скобок в произвольном S-выражении:
(?(R)|^)\([^()]*((?R)[^()]*)*\)(?(R)|$)

Когда-то (ещё вчера) я думал, что такое на #regex не сделать...
источник
2017 June 23
brain_dump_etc
Люблю процедурную генерацию контента, особенно графического. Вот интересный образчик "прямо в браузере": http://alastor.instant-adventures.net/

Генерируются планеты Кластера Аластор - автор вдохновлялся творчеством Джека Вэнса. Обратите внимание: ландшафты - живые (луны двигаются)!

Надо будет что-то подобное накодить на elm/purecsript :)

#procedural_generation
источник
brain_dump_etc
Пример
источник
brain_dump_etc
Делать реализации The Elm Architecture (#tea) для своих языков, это, похоже, довольно популярное занятие! Выше я уже писал про TEA для F#. Теперь, вот, делюсь TEA для #swift: https://github.com/chriseidhof/tea-in-swift
источник
brain_dump_etc
Relm (http://relm.ml/relm-intro) - библиотека для построения GUI на основе GTK+ с применением подхода "The Elm Architecture" (#tea), на этот раз - на #rust
источник
2017 June 28
brain_dump_etc
Зарелизился Pharo 6 (ещё в начале июня, а я всё торможу и не пишу об этом) - "чисто объектно-ориентированный язык", диалект (скорее даже "сборка") #Smalltalk.

В релизе
- перешли на 64bit для OSX/Linux (наконец-то!)
- прикрутили систему контроля версий (пока она самоедльная, но в релиз вошла система версионирования кода в Git, которая будет основной в Pharo 7)
- сделали пристойный FFI для выхода за пределы SmallTalk VM
- добавили поддержку иммутабельных объектов!
- добавили тёмную тему (САМОЕ ВАЖНОЕ УЛУЧШЕНИЕ!)

Что приятно, Pharo стал частью OpenSmalltalk Initiative - теперь это не просто сторонняя поделка!

Кстати, нынче на сайте Pharo (http://pharo.org/) есть курс (#MOOC) по Pharo! Правда, пока курс проводится по пятой версии, но концепции языка не поменялись, так что можно проходить и на Pharo 6 :)
источник
2017 July 02
brain_dump_etc
Если игрострой близок вашему сердцу, и вы всегда хотели написать свою игру, и тем паче свой "Рогалик" (#roguelike), то настоятельно рекомендую присоединиться к мероприятию, которое проводит сабреддит по рогаликостроению: https://www.reddit.com/r/roguelikedev/wiki/python_tutorial_series

В рамках мероприятия все желающие читают статьи, публикуемые организатором, и шаг за шагом делают свои версии игры. Материал расчитан на начинающих питонистов, но использование #python не обязательно (я, вот, на #haskell свой рогалик пишу 😉). Более того, можно заявить о своем проекте в коментариях, что приведет к появлению вашего проекта в списке участников. Список уже немал, и постоянно растёт и вместе с ним растёт кол-во языков, которые используют авторы проектов. Так что даже если вы не хотите писать в одиночку, можете напроситься в уже существующий проект - думаю, большинство авторов будет непротив.

Кстати, помимо обучающих статей есть ещё и соответствующая серия видео (для тех, кто любит такое): https://www.youtube.com/playlist?list=PLKUel_nHsTQ1yX7tQxR_SQRdcOFyXfNAb

#gamedev #tutorial
источник