Pull to refresh
46
0
iv_s @iv_s

User

Send message

Конечные автоматы в Ruby

Reading time4 min
Views9.2K
Статья за авторством хабраюзера preprocessor, который не смог ее опубликовать по всем понятной причине. Так что все плюсики ему:)

Конечный автомат (Finite-state machine) — это такая штука, описывающая поведение объекта с конечным количеством состояний. Пути перехода из одного состояния в другое, условия этого перехода, действия выполняемые во время перехода или после. С теорией у меня всегда было плохо, поэтому больше вдаваться в нее не буду, вместо этого, для тех кто интересуется подробностями, могу порекомендовать посмотреть википедию (как же без нее) http://en.wikipedia.org/wiki/Finite-state_machine и http://ru.wikipedia.org/wiki/Конечный_автомат, а оттуда уже капать на сколько захочется. На практике это можно использовать много где, от парсинга строк (привет Ragel), до модели User в вашем веб-приложении.
Читать дальше →
Total votes 34: ↑27 and ↓7+20
Comments15

SQLite и полноценный UNICODE

Reading time2 min
Views31K
Наверно многим известна embed база данных SQLite. SQLite полностью поддерживает кодировки UTF-8 и UTF-16. Но есть один нюанс, для строковых и текстовых полей, символы которых выходят за пределы ASCII таблицы, не работает нечувствительный к регистру LIKE и ORDER BY.
Например:
sqlite> SELECT "ы" LIKE "Ы";
0
в то время как
sqlite> SELECT "s" LIKE "S";
1
Давайте разберемся как же это исправить.
Читать дальше →
Total votes 23: ↑23 and ↓0+23
Comments22

Калькулятор на MySQL

Reading time1 min
Views3K
Калькулятор, использовать так:
./mysqlcalc "(1+3*5)*12"

Сам код:
#!/bin/bash
echo "select $1;" | mysql -uuser -ppassword | sed '1d'

Или, если у вас дистрибутив без sed'a, тогда так:
#!/bin/bash
echo "select $1;" | mysql -uuser -ppassword | tail -n 1

user и password заменить на ваше имя пользователя и пароль соответственно.

Жду баг репортов, патчей и пожеланий по дальнейшему развитию!
Total votes 19: ↑11 and ↓8+3
Comments17

Ruby и C. Часть 3.

Reading time3 min
Views3.3K
В прошлых частях(часть 1,часть 2) мы рассмотрели использование С для ускорения или расширения Ruby. Сейчас же мы узнаем как использовать Ruby интерпретатор в программах, написанных на С/С++.
В некоторых приложениях возникает необходимость во встроенном языке, для более тонкой настройки или для написания расширений без перекомпиляции. Ruby очень хорошо подходит для этой цели, т.к. имеет простое и удобное API для втраивания в C/C++ приложения. Например Google SketchUp использует Ruby в качестве скриптового языка.

Давайте рассмотрим как встроить Ruby в наши С/С++ приложения.
Читать дальше →
Total votes 10: ↑8 and ↓2+6
Comments11

Ruby и C. Часть 2.

Reading time4 min
Views5.7K
В прошлой части мы рассмотрели библиотеку RubyInline, которая позваляет делать вставки C кода прямо в Ruby методы. Ее очень удобно использовать если нам нужно ускорить несколько критичных методов. Но если нам нужно реализовать C библиотеку и использовать в Ruby, или сделать обертку для уже существующей, то нам на помощь придет C API для создания расширений.

Читать дальше →
Total votes 33: ↑28 and ↓5+23
Comments11

Ruby && Python && Perl && PHP && Ruby1.9

Reading time3 min
Views14K
В коментариях к моей статье были высказанны просьбы протестировать производительность приведенного там примера на других языках. Что я и пытался сделать.
Как видно из заголовка, в тесте участвовали практически все популярные сегодня динамические языки, а также новая версия Ruby.
Давайте взглянем на результаты.
Читать дальше →
Total votes 44: ↑37 and ↓7+30
Comments221

Ruby и C. Часть 1.

Reading time3 min
Views6.5K
Ruby очень легко интегрируется с языком программирования C. Можно создавать расширения для Ruby. Или мы можем сделать обертку для библиотеки на C, и использовать ее как обычную Ruby библиотеку. Так же можно реализовать критичные вычисления на C прямо в Ruby коде! Другой вариант интеграции — это использование Ruby в C/C++ программах, в качестве скриптового языка. Например, как это сделано в Google SketchUp.

Давайте посмотрим, какие возможности Ruby представляет для интеграции с C.

Читать дальше →
Total votes 44: ↑44 and ↓0+44
Comments40

DSL и динамические вкусности Ruby

Reading time5 min
Views13K
В этой статье я проиллюстрирую основные возможности Ruby для построения Domain Specific Languages(DSL). DSL, это небольшие, узкоспециализированные языки для решения конкретных задач. В отличие от языков общего назначения, таких как C++ или Java, DSL обычно очень компактны, и обладают высокой выразительностью в контексте решаемой задачи.

Различные DSL широко распространены в библиотеках и фреймворках для Ruby. Например в Rails DSL используются для создания миграций.

А теперь, давайте посмотрим какие возможности Ruby предоставляет для построения DSL
Читать дальше →
Total votes 48: ↑44 and ↓4+40
Comments43

Information

Rating
Does not participate
Works in
Registered
Activity