Zastosowanie Ruby

Odbiegając od railsów, czy ruby ma jeszcze jakieś inne zastosowania w których jest często stosowany ?

Czyli krótko gdzie wykorzystuje się jeszcze język Ruby. Zdaję sobie sprawę, że jest to język programowania jak każdy inny, i można go wykorzystać do wszystkiego, jednak chodzi mi o to czy poza aplikacjami webowymi Ruby sprawdza się dobrze gdzieś jeszcze??

http://sketchup.google.com/ to aplikacja desktopowa i używa Ruby.

Są bindy do GTK i QT, ale ja nie jestem przekonany do aplikacji desktopowych na interpretowanych językach (mniejsza responsywność).

A poza tym to nie wiem, też chętnie się dowiem. :slight_smile:

Jekyll – generator statycznych stron napisany w Ruby.

  • jednolinijkowce (http://www.fepus.net/ruby1line.txt)
  • skrypty typu “napisz, uruchom, skasuj”
  • skrypty administratorskie (raczej pod *nix)
  • przetwarzanie tekstu lub innych danych plikowych płaskich
  • prototypowanie
  • aplikacje webowe i bazodanowe (rails, sinatra, czysto rackowe middleware)
  • aplikacje sieciowe i rozproszone (chyba, że jesteś tak wielki jak facebook to niekoniecznie ;-))
  • DSL (http://en.wikipedia.org/wiki/Domain-specific_language)

Do tego trzeba dodać, że istnieją (i powstają kolejne) implementacje interpreterów rubiego, które dają nowe możliwości. Są to:

  • JRuby, implementacja rubiego w javie (mamy dostęp do wszystkiego z jvm), przykładowo ktoś stworzył edytor RedCar w jruby http://redcareditor.com/
  • Rubinius, implementacja, której celej jest wykorzystanie LLVM (jit) i by jak najwięcej kodu było napisanego w … rubym
  • MagLev, implementacja oparta o maszynę wirtualną smalltalka i pozwalająca na wykorzystanie persystencji GemStone
  • IronRuby, odpowiednik JRuby dla .NET

Radarek się rozkręcił i drugie pół postu wyszło mu zupełnie nie na temat :wink:

I tak i nie. Chciałem wspomnieć o innych interpreterach bo one dają nowe możliwości (w których jest szansa, że ruby sprawdza się dobrze).

O, jeszcze z rzeczy których używałem to fajny (bardzo łatwy w użyciu) soft do realtime’owej replikacji MySQL i PostgreSQL:
http://www.rubyrep.org/

My używamy Ruby do zarządzania serwerami w chmurze przez Chef.

Ruby jest najsilniejszy w Internecie i jest to jego poważną zaleta. To w tej dziedzinie jest najwięcej specjalistów, tu jest najwięcej bibliotek. I to wystarczy. Są inne języki, które są dobre w pozostałych dziedzinach - i warto się ich uczyć.

Język, który próbuje być we wszystkim dobry, nie jest tak na prawdę dobry w niczym. Patrz Java :slight_smile:

Przypomniało mi się jeszcze: http://ruby-toolbox.com - katalog bibliotek Rubiego do różnych zastosowań.

Warto chyba o adhearsion wspomniec tez.
http://adhearsion.com/

Rhodes is an open source Ruby-based framework to rapidly build native apps for all major smartphone operating systems (iPhone, Windows Mobile, RIM, Symbian and Android): http://rhomobile.com/products/rhodes/

Podpiszę się pod tym. Sporo osób już teraz pisze aplikacje na OSX używając MacRubiego, dla Androida jest Ruboto, jak wiadomo na JRuby. JRuby dodatkowo można używać z bibliotekami javy, więc budowanie aplikacji desktopowych też jest dostępne, są nawet pewne komercyjne sukcesy na tym polu: http://spin.atomicobject.com/2009/01/30/ruby-for-desktop-applications-yes-we-can

Podejrzewam, że IronRuby też będzie umożliwiał łatwiejsze pisanie aplikacji pod windowsa.

Czy Ruby nadaje się do obliczeń i zastosowań naukowych? Wiem że do tego służy Python, ale on nie podoba mi się, i dlatego ciągle chodzi mi po głowie Ruby.

Problemem tu może być dostępność bibliotek - Python jest powszechnie używany w nauce i powstało do niego sporo różnych narzędzi. W Rubym tego niestety brakuje, choć można spróbować wykorzystać JRuby i dostępne biblioteki Javowe.

btw pojawił się tu wątek IronRuby - o ile dobrze pamiętam, to jest to od jakiegoś czasu martwy projekt, nikt go nie rozwija

Biorąc pod uwagę ilość dostępnych bibliotek, lepiej pozostać przy Pythonie. Ewentualnie coś z narzędzi matlabopodobnych, jak np. opensourcowy Octave.

Dzięki za odpowiedź. Hmmm, to trochę szkoda, myślałem że z Rubim coś zdziałam w tej branży.

W PLIX (największy w Polsce punkt wymiany ruchu internetowego) intensywnie wykorzystywaliśmy rubego do wielu różnych rzeczy. Pomijam tutaj portale webowe, panale klienckie oraz strony produktowe, które były pisane w głównie w railsach.

W PLIX ważną rzeczą był monitoring. W rubym zostało napisane narzędzie do analizowania trapów snmp (Trap Monitor) wysyłanych przez różne urządzenia sieciowe (routery, switche itp.). Dodatkowo jeszcze przed moim odejściem z PLIX intensywnie pracowaliśmy nad monitorowaniem przechodzącego przez nas ruchu sieciowego przy pomocy sFlow. Napisałem wtedy w rubym daemona sieciowego, który parsował pakiety sFlowa. W zależności co wpadło przy pomocy rubego parsowałem ramki ethernetowe, pakiety IP (na razie tylko IPv4), segmenty tcp/udp itp. Dzięki temu mogliśmy zbierać statystyki, które mówiły nam jak rozkłada się ruch pomiędzy klientami.

Jako, że byliśmy w samym środku polskiego internetu to przy pomocy sFlow chcieliśmy wyciągać różnego rodzaju niepożądany ruch sieciowy jak np. ataki DDoS (anomalie w charakterystyce ruchu sieciowego w stosunku do historycznych próbek), ruch botnetowy itp.

Na początku bałem się, że ruby (wtedy był 1.9.x) nie da rady wydajnościowo, ale się myliłem. Z ruchu sieciowego o wielkości 300 Gbit/s dostawaliśmy kilkadziesiąt megabitów ruchu do przeparsowania. Jak sprawdziłem to 30% czasu pracy rubego to było String#unpack i ruby dawał radę.

Dalej. Ruby był wykorzystywany również do napisania tzw. “harvestera” - był to serwer, który przy pomocy snmp zbierał statystyki z ruchu sieciowego z różnych urządzeń sieciowych. Te statystyki były później prezentowane klientom na http://www.plix.pl/pl/network/statistic oraz w panelach klienckich.

Podsumowując w PLIX ruby był głównym językiem do pisania wszelkiego rodzaju narzędzi sieciowych. Poza tym co wymieniłem powstało wiele mniejszych narzędzi jak aktualizator filtrów BGP, różnego rodzaju narzędzia pomagające zarządzać urządzeniami sieciowymi, ściągania danych z baz RIPE itp. itd.

Trochę o tym opowiadaliśmy na różnych konferencjach np. PLNOG:


PS. Warto jeszcze wspomnieć o: https://github.com/morellon/rrd-ffi

2 Likes

Generalnie widzę, że te całe “aplikacje” internetowe to nic innego jak zwykłe strony www, nieco ładniejsze niż te, pisane w html-u czy php. Poza tym że dodatkowo wykorzystują bazy danych, to chyba szczytowe osiągnięcie w pisaniu takich “aplikacji” to zrobienie kolejnego blogu albo forum dyskusyjnego. Dla mnie prawdziwa aplikacja internetowa to np. edytor tekstu w chmurze, a nie szablonowo tworzone strony w RoR, niczym nie różniące się od siebie w działaniu.

Trollerka? Napisali Ci koledzy, że nikt nie inwestował w poważne bilbioteki do zastosowań naukowych w ruby, to chyba rozsądnie poszukać gdzieś indziej, prawda?