Привет. Этим постом мы начинаем наши пятничные новостные выпуски, в которых будем рассказывать о новых технологиях, поддержку которых мы внедрили в наш проект, а также о фичах, которые сделают работу с Vexor максимально продуктивной. Наша команда учитывает пожелания пользователей, и постепенно мы расширяем наш функционал.
Напомним, что Vexor CI – облачный continuous integration сервис для разработчиков с неограниченными ресурсами и поминутной оплатой, позволяющий эффективно тестировать проекты.
Читать полностью »
Рубрика «clojure» - 5
Vexor CI – Что нового?
2014-10-24 в 11:09, admin, рубрики: bitbucket, clojure, continuous integration, java, Node, ruby, ruby on rails, Rust, selenium, Блог компании VexorCI, Веб-разработка, ПрограммированиеVexorCI — свежий взгляд на continuous integration
2014-10-17 в 14:08, admin, рубрики: clojure, continuous integration, java, node.js, ruby, ruby on rails, Rust, Блог компании VexorCI, Веб-разработка, Программирование Привет.
Меня зовут Олег Балбеков, я хочу рассказать вам о нашем новом проекте Vexor CI.

Vexor CI – облачный continuous integration сервис для разработчиков, позволяющий эффективно тестировать проекты.
Ежедневно разработчики используют CI-сервисы, однако большинство из них дорогие, медленные, неэффективные и накладывают большие ограничения на использование.
Vexor:
- для тех, кому надоело тратить время и деньги на поддержание тестовой инфраструктуры;
- для тех, кому давно не хватает ресурсов локального сервера;
- для тех, кто не решается на облачный CI потому, что дорого;
- для тех, кто устал ждать очереди на просчёт тестов в обычном облачном CI;
- для тех, кому действительно важна скорость.
У нас справедливая цена (поминутная оплата) и безлимитные мощности для каждого. Всем подключившимся мы дарим $10 и не берём оплату, пока вы настраиваете сервис. У нас самая дружественная русскоязычная поддержка (в моём лице). Подключайтесь!
Как мы писали Clojure Cup в этом году: The Hat
2014-10-04 в 14:51, admin, рубрики: clojure, clojurecup, clojurescript, Hackathon, Программирование, Спортивное программирование, функциональное программированиеИдея для Clojure Cup этого года родилась примерно вот здесь:

(город Вырица, Ленобласть)
Ожидая обратную электричку мы убивали время, как могли, и грустили, что под рукой нет чего-то вроде Alias'а или Шляпы — всё же салонные игры это интеллигентнее, чем косплей гопоты в заброшке. TL;DR:

Играть: http://playthehat.com (ещё с багами и не работает не на хроме, мы не можем править до окончания голосования судей)
Голосовать: https://clojurecup.com/#/apps/thehat
Более длинная версия поста — ниже.
Читать полностью »
Party hard по-программистски, или как мы писали ClojureCup 2014
2014-10-01 в 12:40, admin, рубрики: clojure, clojurecup, clojurescript, Hackathon, ненормальное программирование, Программирование, Спортивное программированиеВ минувшие выходные Clojure-сообщество испытывало… Ой, так начинался прошлогодний пост с отчётом о прошедшем ClojureCup 2013.
ClojureCup — это 48-часовой онлайн-хакатон, обязательным условием которого является написание приложений на языках Clojure/ClojureScript. В этом году в хакатоне участвовало около 50 команд (в каждой по 1-4 человека), которые сделали множество классных приложений.
Приложения оценивают как жюри (известные в Clojure-сообществе люди), так и обычные пользователи: зайти с помощью twitter-а и проголосовать за понравившиеся вам приложения можно на странице приложений.
А попробовать, что у нас получилось, можно вот тут.

Осторожно: под катом много картинок.
Читать полностью »
Трансдьюсеры в JavaScript. Часть вторая
2014-09-23 в 14:00, admin, рубрики: clojure, clojurescript, FRP, functional programming, javascript, transducer, transducers, Программирование, реактивное программирование, функциональное программирование В первой части мы остановились на следующей спецификации: Трансдьюсер — это функция принимающая функцию step, и возвращающая новую функцию step.
step⁰ → step¹
Функция step, в свою очередь, принимает текущий результат и следующий элемент, и должна вернуть новый текущий результат. При этом тип данных текущего результата не уточняется.
result⁰, item → result¹
Чтобы получить новый текущий результат в функции step¹, нужно вызвать функцию step⁰, передав в нее старый текущий результат и новое значение, которое мы хотим добавить. Если мы не хотим добавлять значение, то просто возвращем старый результат. Если хотим добавить одно значение, то вызываем step⁰, и то что он вернет возвращаем как новый результат. Если хотим добавить несколько значений, то вызываем step⁰ несколько раз по цепочке, это проще показать на примере реализации трансдьюсера flatten:
function flatten() {
return function(step) {
return function(result, item) {
for (var i = 0; i < item.length; i++) {
result = step(result, item[i]);
}
return result;
}
}
}
var flattenT = flatten();
_.reduce([[1, 2], [], [3]], flattenT(append), []); // => [1, 2, 3]
Т.е. нужно вызывать step несколько раз, каждый раз сохраняя текущий результат в переменную, и передавая его при следующем вызове, а в конце вернуть уже окончательный.
В итоге получается, что при обработке каждого элемента, одна функция step, вызывает другую, а та следующую, и так до последней служебной функции step, которая уже сохраняет результат в коллекцию (append из первой части).
Итак, сейчас мы можем:
- Изменять элементы (прим. map)
- Пропускать элементы (прим. filter)
- Выдавать для одного элемента несколько новых (прим. flatten)
Трансдьюсеры в JavaScript. Часть первая
2014-09-22 в 15:02, admin, рубрики: clojure, clojurescript, FRP, functional programming, javascript, transducer, transducers, Программирование, реактивное программирование, функциональное программированиеРич Хикки, автор языка Clojure, недавно придумал новую концепцию — Трансдьюсеры. Их сразу добавили в Clojure, но сама идея универсальна и может быть воспроизведена в других языках.
Сразу, зачем это нужно:
- трансдьюсеры могут улучшить производительность, т.к. позволят не создавать временные коллекции в цепочках операций map.filter.takeWhile.etc
- могут помочь переиспользовать код
- могут помочь интегрировать библиотеки между собой, например underscore/LoDash могут уметь создавать трансдьюсеры, а FRP библиотеки (RxJS/Bacon.js/Kefir.js) могут уметь их принимать
- могут упростить FRP библиотеки, т.к. можно будет выбросить кучу методов, добавив один метод для поддержки трансдьюсеров
Трансдьюсеры — это попытка переосмыслить операции над коллекциями, такие как map(), filter() и пр., найти в них общую идею, и научиться совмещать вместе несколько операций для дальнейшего переиспользования.
Упрощение жизни программиста с vim + vim-slime + tmux
2014-09-16 в 8:49, admin, рубрики: clojure, coffeescript, IDE, javascript, linux, tmux, vim, ПрограммированиеЭта публикация рассказывает о том, как экономить время при разработке для Clojure и NodeJS, а также Bash скриптов, посылая текст из vim в REPL, c использованием tmux + vim + vim-slime. Также приводятся рецепты с nodemon.
Скорее всего, vim-slime сработает и для других интерпретируемых языков (Ruby / Python / PHP / Perl ...). vim-slime также работает со screen.
На хабре достаточно освещались и vim, и tmux. Я только хотел показать, что можно получить от их комбинации.
Если вы знаете vim и tmux, и вам интересен только vim-slime — прыгайте сразу ко второй секции.
Вступление
Мы все стремимся быть производительными. После того, как код написан, мы хотим узнать, работает ли он и получить обратную связь. Мы придумали много способов ускорения обратной связи: статическое выведение типов при компиляции и в IDE, юнит-тесты, интеграционные тесты, REPL, LiveReload и т.д.
Для моих небольших проектов я использую связку REPL и юнит-тестов, что позволяет получать обратную связь мгновенно.
Я веб-разработчик. По работе и в своем проекте обычно я делаю фронтэнд и стыкующуюся с ним часть бэкэнда. В течении рабочей сессии я пишу PHP, phtml, Stylus, css, Coffeescript, Javascript, + sql запросики и пуши в гит; что обеспечивается связкой tmux и vim. Также есть пара маленьких проектов на CoffeeScript, для которых используется комбо tmux + vim + vim-slime + Coffeescript REPL. В проектной сессии увязываются Сlojure, CoffeeScript, Stylus; tmux + vim + vim-slime + Clojure REPL. Под катом я расскажу об трех сетапах для трех окружений.
Читать полностью »
DevConf::Ruby — 14 июня — программа сформирована
2014-06-05 в 6:24, admin, рубрики: clojure, gitlab, ruby, ruby on rails, Блог компании DevConf, конференция веб-разработчиков, метки: clojure, gitlab, ruby, ruby on rails, конференция веб-разработчиков
14 июня (суббота) 2014 — пройдет крупнейшая конференция по Ruby, PHP, Python,JavaScript, Android
62 доклада от авторов языков, баз данных и экспертов в WEB-разработке!
Впервые в России нам удалось собрать авторов MySQL, PostgreSQL, Percona Server, Sphinx, Tarantool в отдельном потоке DevConf::Storage — по сути это отдельная конференция по современным БД.
Поток Ruby насыщен актуальными темами, который обязан знать каждый Ruby-разработчик
Непайтоновый Пайтон
2014-04-11 в 6:19, admin, рубрики: clojure, java, python, ненормальное программирование, Программирование, стили программированияFizzBuzz
Когда я подавал заявку на вступление в Hacker School, я столкнулся со следующей задачкой:
Напишите программу, которая выводит числа от 1 до 100 (включительно). Если число делится на 3, выведите Fizz вместо числа. Если оно делится на 5, выведите Buzz. Если оно делится как на 3, так и 5, выведите FizzBuzz. Вы можете использовать любой язык программирования.
(С тех пор сотрудники Hacker School слегка изменили задачку, скорее всего, для того, чтобы затруднить её решение с помощью интернет-поисковиков. Я намеренно не включил сюда изменённое условие, чтобы минимизировать эффект моего поста на гуглобельность.)
Задачка довольно проста и не требует обдумывания, поэтому хорошо подходит как пример для разых языков и стилей программирования словно Hello, World или задача на поиск чисел Фибоначчи.
Читать полностью »
CodeNotes — победитель Clojure Cup 2013
2013-10-04 в 17:16, admin, рубрики: clojure, clojurecup, Программирование, стартапы, управление задачами, управление проектами, метки: clojure, clojurecup, стартапы, управление задачами Мы сделали это.
Российский проект CodeNotes за авторством Грошева Дмитрия (si14) и Пантюхова Александра (alwxndr) из Санкт-Петербурга, Дину Александра (zloy_alu) из Тюмени и Сорокоумова Александра из Мюнхена занял первое место на хакатоне Clojure Cup 2013.
Мы хотели бы поблагодарить всех тех, кто голосовал за нас и немного рассказать о нашем проекте и о том, что мы хотим из него получить.

Читать полностью »
