Pull to refresh

Comments 35

Познавательно, спасибо. Побольше бы таких примеров.
И почему первый комментарий одинаково похоже во всех статьях?
Да и второй не сильно отличается:)(и третий тоже:)(чтобы не засорять топик:)))
Забавное поведение: при проектировании формы, окно а-ля Windows 9x, кнопка а-ля Windows Vista / Seven. При запуске всё в точности наоборот.

Но за статью спасибо, в очередной раз Ruby меня восхитил.
Ну, при проектировании все будет выглядеть так, как показывает программа-дизайнер :)
А вид при запуске зависит от конкретной ОС, хотя там можно настроить, чтобы везде выглядело одинаково.
Инетересно, но есть ряд минусов(IMHO):
1. слишком много «телодвижений» нужно сделать, гораздо удобнее использовать All`In`One.
2. проистекает из 1, сложность применения в разработке приложений серьёзного уровня. Оно, возможно, и можно быстро изменить гую, для небольших приложений, а вот построить «навороченное» гуи, я думаю займёт порядком времени.
3. (Моё глубоко-субъективное ИМХО) WxWidgets не самая быстрая библиотека.
1. Я вот честно говоря таких решений для Ruby вообще не видел :)
2. Почему? Не больше, чем в остальных дизайнерах
3. Ну, тут уж у каждого свое мнение :)
1. IronRuby + VS2010 (немного конечно натянутый пример), я думаю раз они встраивают Ruby в VS, то должны подключить редактор WinForms(как минимум) под «это дело». Конечно не «чистый» Ruby, но что есть.
2. Это мой взгляд, просто когда так 50 форм, и где-то 100 различных пользовательский контролов, становится уже не весело, даже в «навароченных» редакторах. Хотя, были люди в наше время ;).
Ухты, вот за IronRuby спасибо. Интересная штука, обязательно поковыряю :)
А на тему такого количества форм — вряд ли такого масштаба проекты возьмутся писать на руби :)
Насчет 3, на чем именно медленне? Есть бенчмарки? Я обычно именно wx использую, интересно узнать про подводные камни. Или это и вправду совсем имхо из серии «джава тормозная»?:)
Нет, это не из серии «джава тормозная» :), это из серии когда я программировал под Linux на С++, мне было сказано использовать Wx, хотели убить 2х зайцев сразу, написав кроссплатформенное приложение, для Windows и Linux, ну или хотя бы с минимальной «переточкой». В конечном итоге отказались от WxWidgets под Windows и использовали связку boost+Win32 api, а под Linux оставили.
А вот подводных камней, таких «крупных» не нашли. Хотя, мне лично, не понравилась там работа с ресайзингом. Но это из другой оперы :)
Ну а почему не предложить свое решение? Что конкретно не так в телодвижениях? Какая библиотека быстрее?
простите, но сильно режет глаз: почему «гем»?
это же gem — драгоценный камень. то есть джем.
как-то я их привык гемами называть, не смотря на то, что это неправильно :)
Это в английском он джем.
А в русском языке есть, например, слово геммология — раздел минералогии, изучающий драгоценные камни, есть даже геммологический институт. Ну, и рядом, с художественным уклоном есть термин «гемма». Так что, чего бы ему не быть гемом? :) Или, может, геммом…
Ребята, подскажите хороший джем для написания сложного большого-пребольшого ГУЯ (для диссера надо).
Хотелось бы, использовать не event-listener pattern, а связывание и триггеры, как в JavaFX. Для тех, кто не в теме, объясню.

Есть TextBox со свойством text (то, что пользователь ввел).
Есть переменная var textFromTextBox.
Пишу textFromTextBox = bind myGUITextBox.text
И теперь пр любом изменении пользовательского инпута в TextBox ГУЯ, значение textFromTextBox будет обновляться само.
Никаких событий, листнеров и прочей ереси.

Кроме того, есть ли вменяемый джем для создания анимации?

Спасибо!
Впринцепе что wxRuby, что QTRuby, что FoxRuby — все для большого-пребольшого ГУЯ подходят(в с++ то на них такое и пишут).
С байндами сложнее(эх, как же все круто было в первой интерпретируемой версии JavaFX:)). Чесно говоря, я такого не видел. Хотя, если мы в листенере устанавливаем значение переменной, это не тот же байнд получается?:)(ну не так синтаксически красиво конечно).

С анимацией можно использовать ruby-opengl, там почти один в один отображение сишного апи.
Также, если рисовать 2D анимацию, можно попробовать gosu. Это библиотека для 2D игр. Хотя и у нее есть байндинги к ogl, вон даже Rubystain(клон Wolfenstain) на ней написали:)
Понял, будем смотреть. Спасибо!
Да, если смотреть транслированный JavaFX код в Java код (если хитро «поломать компилятор», то он отрыгивает Java-сырец в консоль), то все бинды меняются на евент-листенеры. Но это уже дело компилятора, с биндами кода в разы меньше, но надо быть в 1000 раз внимательнее и аккуратнее, т.к. глобальные бинды вызывают рак мозга.
Мы использовали shoes для маленькой десктопной тулзы. На хабре было краткое описание habrahabr.ru/blogs/ruby/60075/
Штука чрезвычайно гибкая и простая, но визуальных редакторов гуя для нее нет.
Зато действительно кроссплатформенная, приложение честно запускалось в винде, макоси и линуксе.
Слышал отзывы, что shoes как-раз только для маленьких тулз и подходит. Там же сложности с созданием собственных контролов. Плюс он использует свой собственный лаунчер, что не всегда удобно.
Кстати, wx, qt, fox и tk библиотеки для руби так же кросплатформенные.
А вот сама либа да, очень удобная. Из всех гуи библиотек для руби самая изящная, так сказать настоящий руби-стайл:) Ну все-таки ведь _why ее писал.
У shoes есть packager в бинарники :)
Да, я читал :) Спасибо, буду смотреть.
> Хотелось бы, использовать не event-listener pattern, а связывание и триггеры, как в JavaFX

Разные подходы есть. Среди них выделяется передача сообщений (Newsqueak, с ним я незнаком толком), обработка потоков событий (stream processing, как в Fudgets), и FRP (события + behaviors, тут целая куча библиотек: FrTime, Flapjax — FrTime в Javascript, Reactive, YAMPA, etc.).

Самый главный плюс — это не отсутствие event callback'ов, а тот факт, что программу можно собирать из кусочков (composability очень хороший).

Именно библиотечек для FRP GUI, готовых к использованию видел только две: адаптер FrTime к MrEd (это на Scheme) и Grapefruit (на Haskell).

На самом деле, тот же wxHaskell+XTC+Autoforms вполне подходят, ИМХО, если не вдаваться в FRPшный экстремизм. :)

ЗЫ все выше — о декларативщине. как я понимаю, JavaFX весьма императивна, поэтому не следует ожидать, что предложенные решения вообще окажутся понятными и простыми.
Почему же, JavaFX — декларативна.
Мне больше Ruby + Qt нравиться.
а для Qt есть визуальные редакторы? я просто так и не нашел :)
qt designer, делаешь ui файл и конвертация его в класс Ruby. Аналогично это и для C++\Qt
Промохнулся, ответ yamalight'у
спасибо, посмотрю чего там как.
я, кстати, вспомнил чего мне тогда не понравилось — на win очень много проблем с установкой qtruby gem'а
Ну это да. По этой причине я и начал писать на C++\Qt :)
а обязательно конвертировать? Вроде для PyQt есть какая-то штуковина чтобы юзать *.ui файлы напрямую
а кто его знает… для питона я использовал pyuic4, ну а для руби rbuic4
Для QtRuby тоже есть такое. Вот пример использования
techbase.kde.org/Development/Languages/Ruby#Loading_.ui_files_at_runtime_with_Qt::UILoader
Sign up to leave a comment.

Articles