Ruby & Lavoro


#1

Ciao a tutti, sto facendo pressioni affinchè la società per cui lavoro
utilizzi ruby per sviluppare ma tra le caratteristiche necessarie (e
che io non ho mai usato) hanno richiesto:

  • possibilità di usare a basso livello la porta seriale (e quando dico
    basso intendo poter lavorare sui singoli segnali alzandoli e
    abbassandoli), so che esiste ruby-serial e voglio provarlo ma non ho
    idea di quanto mi permetta di fare
  • possibilità di lavorare con socket TCP
  • che queste possibilità siano utilizzabili sia sotto linux che sotto
    windows (e magari anche sotto aix e sco)

Inoltre ho trovato uno script chiamato rubyscript2exe, qualcuno l’ha
mai usato o provato ?

Grazie a tutti per l’attenzione :wink:


#2

— Federico G. removed_email_address@domain.invalid ha
scritto:

provarlo ma non ho
idea di quanto mi permetta di fare

non ho idea neanche io se sia adatto.

  • possibilità di lavorare con socket TCP

si, e portabili tra tutte le piattaforme supportate

  • che queste possibilità siano utilizzabili sia
    sotto linux che sotto
    windows (e magari anche sotto aix e sco)

mi pare di ricordare che il supporto seriale non sia
portabile, o meglio, che ci siano un paio di moduli
separati per win32 e *nix

Inoltre ho trovato uno script chiamato
rubyscript2exe, qualcuno l’ha
mai usato o provato ?

no, ma occhio che rs2exe fa solo un file unico
cliccabile, all’interno si vedono ancora i sorgenti in
chiaro. Non so se sia un problema ma tanto per
ricordarlo :slight_smile:


icq: #69488917
blog: http://riffraff.blogsome.com


Yahoo! Mail: gratis 1GB per i messaggi e allegati da 10MB
http://mail.yahoo.it


#3
  • possibilità di usare a basso livello la porta seriale (e quando dico
    basso intendo poter lavorare sui singoli segnali alzandoli e
    abbassandoli), so che esiste ruby-serial e voglio provarlo ma non ho
    idea di quanto mi permetta di fare

Quello che chiedi tu è normalmente possibile solo da MS/DOS.

Linux permette ad un processo (dotato di privilegi sufficienti: una
volta si usava la funzione iopl della libreria C, maneggiabile
ovviamente solo da un utente con root privileges) di scrivere su
quasi qualsiasi porta I/O, e pertanto è sufficiente per lavorare su
seriali, parallele, etc, a basso livello; probabilmente la faccenda
sarà più complicata se usate delle RS232 non standard.
Non è poi una gran porcata usare la seriale da Linux e poi, “sotto il
naso”, alzargli e abbassargli a piacere i vari segnali.

Se dovete banalmente pilotare un modem (e interrompere o riprendere
il flusso in determinati momenti) potrebbero bastare perfino le varie
tcgetattr/tcsetattr di sistema (che non richiedono privilegi
particolari) e usare per il resto la porta seriale come se fosse un
file in lettura/scrittura (magari senza neppure ruby-serial). Al più
ti troverai a scrivere un’estensione di Ruby come la ruby-serial, per
implementare quelle rognose chiamate del tipo “leggi un carattere o
restituisci -1 entro due decimi di secondo”.

Sotto Windows, SCO, AIX dovrebbe poter essere possibile la stessa
cosa, ma non saprei dove andare a pescare documentazione.

alf


#4

A quanto ne so io (è meno di un mese che lavoro qui) le richieste che
mi hanno fatto servono per valutare se in ruby può essere fatto ciò
che attualmente viene fatto in C (quindi mi pare di aver capito anche
il controllo della seriale su varie piattaforme ma ancora non ho
esplorato tutto).

Per adesso ho visto che ruby-serial è dichiarato funzionante su
windows e posix quindi adesso devo solo installarlo e vedere se
risponde alle mie esigenze in quanto a “bassezza” :wink:

Magari riesco a farmi pagare per imparare qualcosa che altrimenti
avrei dovuto imparare nel mio tempo libero :smiley:

Ovviamente vi terrò aggiornati.
Grazie a tutti.


#5

Credo che la cosa migliore sia valutare cosa c’è di disponibile su
siti come rubyforge.org.
Una occhiata veloce con un ricerca mirata riporta il link al progetto
“ruby/serialPort” (http://ruby-serialport.rubyforge.org/):

E dal readme sembrerebbe un qualcosa di simile a quanto interessa a te:

<<
Ruby/SerialPort is a Ruby library that provides a class for using
RS-232 serial ports. This class also contains low-level functions to
check and set the current state of the signals on the line.

The native Windows version of this library supports Microsoft’s Visual
C++
and Borland’s C++ compilers.

Se poi si tratta di rifare quanto già viene fatto in C allora problemi
di tempistica dei sistemi operativi o di permessi di accesso agli I/O
dovrebbero già essere stati valutati (mi viene anche da chiedermi,
dato che avete già la cosa in C, perchè la vuoi rigirare su un
qualcosa di completamente diverso… vada per la promozione di Ruby,
ma valuta i rischi di introduzione di una nuova tecnologia nel tuo
ambito, tenendo conto della manutenzione del progetto da parte di chi
ruby non sa neppure cos’è).

Ciao
Pietro

2006/4/24, Federico G. removed_email_address@domain.invalid:


#6

Se non ci sono problemi sulle prestazioni di uno script in ruby,
questo è sicuramente un linguaggio a più alto livello rispetto al C,
con tutti i vantaggi che ne derivano.

Ciao
Pietro

2006/4/24, Federico G. removed_email_address@domain.invalid:


#7

Il fatto è che il lavoro consiste in tanti piccoli interfacciamenti,
quindi tanti piccoli programmini indipendenti gli uni dagli altri e
quindi usare un nuovo linguaggio per iniziare a scrivere i nuovi e
valutare con il tempo se convenga convertire i vecchi o aspettare che
semplicemente divengano obsoleti e inutilizzati non è assolutamente un
problema se il nuovo liguaggio permette di fare ciò che veniva fatto
anche prima.

Per quanto riguarda la manutenzione sarei io a dovermene occupare e
già quando mi hanno assunto gli ho spiegato che sul C non avevo mai
lavorato prima, a questo punto per loro non cambia molto.
Io punto su ruby (oltre al fatto che mi piaccia molto e che voglia
approfondirlo) perchè ho assisitito un collega nella fase di sviluppo
di un interfacciamento e il metodo più efficente è una serie di switch
annidati per controllare, carattere per carattere, i comandi di un
protocollo mentre in ruby posso usare il case per avere un confronto
molto più malleabile e poi non posso negare che ho sempre odiato i
puntatori :wink:


#8

On 4/23/06, Federico G. removed_email_address@domain.invalid wrote:

  • possibilità di usare a basso livello la porta seriale (e quando dico
    basso intendo poter lavorare sui singoli segnali alzandoli e
    abbassandoli), so che esiste ruby-serial e voglio provarlo ma non ho
    idea di quanto mi permetta di fare

Non dipende tanto da Ruby, quanto dal S.O… se quello che volete
fare è supportato dal sistema operativo, allora è probabile che si
riesca a farlo anche in Ruby. Con Ruby su Windows puoi accedere alla
API di Win32, su Unix puoi accedere alle chiamate di sistema Posix.

Matteo


#9
  • possibilità di lavorare con socket TCP

Sicuramente, ed anche molto bene. Ritengo Ruby molto indicato per il
networking, ed il codice e` anche molto portabile su Windows.

  • che queste possibilità siano utilizzabili sia sotto linux che sotto
    windows (e magari anche sotto aix e sco)

Parlo esclusivamente della parte quotata, ossia networking in Ruby.
La portabilita` su Linux e Windows credo sia fuori discussione. Per
quanto riguarda Aix e Sco non ne ho idea, ma dovrebbe essere
possibile; la mia esperienza comprende Solaris ed HP-UX e non ho mai
avuto problemi.

Inoltre ho trovato uno script chiamato rubyscript2exe, qualcuno l’ha
mai usato o provato ?

Lo uso tutti i giorni, per distribuire piccoli script ed utility varie
ai colleghi che ne hanno bisogno, che usano Windows e che non hanno
voglia/tempo/capacitadi installarsi tutta la suite Ruby. A mio giudizio la sua utilita si ferma qui.
Tieni presente che l’eseguibile comprende l’interprete ruby e le
librerie, per cui le sue dimensioni saranno molto piuelevate (in media siamo intorno agli 800KB, ho raggiunto il mega quando ho usato wxRuby). Inoltre, come ti hanno gia scritto, il sorgente non enascosto: non e un buon metodo quindi per fare hiding.
Di fatto, basta ricordarsi che non e` un compilatore.

Ciao!
Marco.