Showing posts with label clojure. Show all posts
Showing posts with label clojure. Show all posts

Saturday, 29 January 2011

Compojure 0.6.0

Я пропустил объявление о выходе новой версии библиотеки Compojure - http://groups.google.com/group/compojure/browse_thread/thread/4f8574d808ddf53e.
Теперь он поддерживает контексты.

Thursday, 6 January 2011

Rails на Clojure

По адресу https://github.com/macourtney/Conjure проживает Rails подобная библиотека для разработки веб приложений на языке Clojure. Из ее особенностей хочется отметить:

1. В качестве слоя доступа к базе данных (ActiveRecord в Rails) используется библиотека clj-record. Это позволяет удобно писать зависимости между сущностями бд, почти как в ActiveRecord, в стиле has_many, belongs_to.

2. Может работать на Google AppEngine. Для этого при создании проекта достаточно набратьlein conjure new -database google-app-engine. А затем с помощью lein uberwar создается веб архив.

3. Удобная работа с Ajax.

Пока из того, что не понравилось – при генерировании модели можно из числовых типов можно указать только integer. Может быть я чего-то не понял, нужно копать дальше. По завершению всех копательств нужно будет написать пост с полным описанием фреймворка.

Saturday, 29 May 2010

Начало работы

Установка

Clojure можно найти на Google Code. Репозитарий исходников находится на GitHub. Там же находится порт на CLR. Совместная разработка ведется на Assembla.


Замечания и обсуждение идет на Clojure Google Group. Пожалуйста присоединяйтесь!

Документацию и советы от сообщества пользователей можно почитать на Wiki. Вы можете свободно принимать участие в написании.

Clojure распространяется как zip файл с clojure.jar, readme, текстом лицензии EPL и исходниками в папке src. Язык использует библиотеку байткода ASM 3.0 и она включена в дистрибутив. Для работы требуется Java 1.5 или выше.


Быстрое начало
В папке, в которую вы разархивировали clojure.zip, наберите команду:
java -cp clojure.jar clojure.main
После чего появится read-eval-print (REPL). Большая часть Clojure написана на ней самой (в файле core.clj, который находится в папке src), который автоматически загружается, когда стартует Clojure  из .jar архива. 

Когда core.clj будет загружен, то Clojure будет в вашем полном распоряжении.
Попробуйте напечатать:
user=> (+ 1 2 3)
6
user=> (. javax.swing.JOptionPane (showMessageDialog nil "Hello World"))
В REPL можно осуществлять только базовое редактирование. Для большего удобства попробуйте запустится через JLine ConsoleRunner:
java -cp jline-0.9.91.jar:clojure.jar jline.ConsoleRunner clojure.main
После чего появится возможность навигации по клавишам левый/правый и листать историю ввода по клавишам вверх/вниз.

Редактирование
Редактировать код на Clojure удобнее всего в каком-нибудь редакторе с поддержкой соответствия скобок. Свежую информацию о таком инструментарии (Netbeans, Eclipse, IntelliJ Idea, Emacs, Vim и другие) можно найти на странице Getting Started в Clojure Assembla. Так же Sean Devlin сделал серию скринкастов, о том как можно настроить редактирование кода на Clojure. Всем спасибо!


Отладка
Я успешно отлаживал код на Clojure с помощью JSwat версии 3.16 на Mac OS X. Вы можете запустить Clojure под JSwat, но возможности редактирования будут ограничены. Лучше присоединить JSwat к работающему Clojure. Вы должны запустить Java с этими флагами, чтобы проводить удаленную отладку:
java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n ...

Когда Clojure запустится, он напечатает что-то типа этого:
Listening for transport dt_socket at address: 63657
Clojure
user=>
Потом в JSwat выберите Attach... и введите localhost в поле Host и адрес сокета в Port. В JSwat откройте файл Clojure, который вы загрузили (включая boot.clj) и можете ставить брейкпойнты в коды на Clojure. Брейкпойнты, стек вызова, локальные переменные и пошаговая отладка (в Сlojure коде, и вызовах с Clojure на Java и обратно) будут работать. Вы также можете подключить запущенный Clojure как inferior Lisp в Emacs. Если вы поменяли .clj, то лучше всего перезагрузить его в, JSwat обнаружить изменения в файле и вы сможете ставить брейкпойнты в коде даже без его перезапуска.

Профайлинг
Профилирование кода на Clojure можно осуществлять с любым профайлером для Java. Я успешно использовал YourKit Java Profiler, лицензии для которого были щедро предоставлены YourKit.

Так YourKit поддерживает open source проекты, любезно обеспечивая их профайлером. YourKit, LLC является создателем инновационных и продвинутых инструментов для профилирования кода в приложениях для Java и .NET. Вы можете найти продукты этой компании на:
YourKit Java Profiler и
YourKit .NET Profiler


Copyright 2008-2010 Rich Hickey

Monday, 10 May 2010

Clojure (перевод с clojure.org)

Clojure - это динамический язык, который работает на виртуальной машине Java (Virtual Machine)  и and CLR. Он является языком общего назначения, комбинирует в себе доступность и интерактивную разработку динамических языков с эффективной и гибкой инфраструктурой для многопоточного программирования. Clojure является компилируемым в JVM байткод, и в то же время остается динамическим. Любая возможость, поддерживаемая Clojure, доступна во время рантайма. Clojure обеспечивает легкий доступ к  Java фреймворкам, с использованием опционального вывода типов и других средств работы с типами, чтобы эти обращения не использовали рефлексию.

Clojure являетя диалектом Lisp, и использует лисповскую философию единства кода и данных и мощную систему макросов. Clojure является функциональным языком программирования и везде, где это только возможно, старается использовать неизменяемые структуры данных. Когда же вам необходимы изменяемые данные Clojure предлагает software transactional memory и систему Agent, которые позволяют построить понятный, правильный и многопоточный дизайн.

Я надеюсь вы найдете предоставляемые Clojure возможности элегантными, мощными, практичными и вам понравиться их использовать.

Основное обсуждение Clojure идет в Google Group - присоединяйтесь!

Rich Hickey