-
Notifications
You must be signed in to change notification settings - Fork 2
/
agenda.haml
305 lines (305 loc) · 18.4 KB
/
agenda.haml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
!!! 5
%html
%head
%title RubyDay - agenda
%link{:rel => "stylesheet", :type => "text/css", :href => "stylesheets/agenda.css", :media => "all"}/
%meta{:charset => "UTF-8"}
%body
.container
.header
.info
Domande?
%a{:href => "mailto:[email protected]"} [email protected]
%ul.nav
%li
%a.button{:href => "/"} home
%li
%a.button.current{:href => "agenda.html"} agenda
%li
%a.button{:href => "partecipa.html"} partecipa
%li
%a.button{:href => "speakers.html"} speakers
%li
%a.button{:href => "sponsor.html"} sponsors
%li
%a.button{:href => "credits.html"} credits
.logo
.motto
/ %h1 Ruby Day - I talk
%h2 Il programma, a meno di piccole modifiche finali, è il seguente
.content
.talks#talks-table
%table
%thead
%tr
%th
%th Track #1 - Ruby Mine
%th Track #2 - Ruby Space
%tbody
%tr.break
%td{:colspan => 3} 8.30 ~ 9.00 - Registrazione
%tr
%td 9.00 - 9.40
%td{:colspan => 2} Giovanni Intini - Presentazione RubyDay.it, la storia della comunità Ruby in Italia.
%tr.break
%td{:colspan => 3} 9.40 ~ 10.10 - Coffee Break
%tr
%td 10.10 - 11.10
%td
%a{:href => "#talk1-1"} The Aeolus Project
.tagged.green cloud
%td
%a{:href => "#talk2-1"} Ruby on Rails survival guide of an aged Java developer
.tagged.cyan rails
%tr
%td 11.10 - 12.10
%td
%a{:href => "#talk1-2"} Varnish e caching di applicazioni Rails
.tagged.cyan rails
.tagged.gray http
%td
%a{:href => "#talk2-2"} MacRuby
%tr
%td 12.10 - 13.10
%td
%a{:href => "#talk1-3"} Analisi statica per un linguaggio dinamico
.tagged.red tools
%td
%a{:href => "#talk2-3"} Symfony2 and RoR3 friends for an hour
.tagged.cyan rails
%tr.break
%td{:colspan => 3} 13.10 ~ 14.10 - Pausa pranzo
%tr
%td 14.10 - 15.10
%td
%a{:href => "#talk1-4"} A metaprogramming Spell Book for Ruby and Rails
.tagged.yellow meta
%td
%a{:href => "#talk2-4"} Webby: ASCII alchemy for quick website authoring
.tagged.red tools
%tr
%td 15.10 - 16.10
%td
%a{:href => "#talk1-5"} Progettare e sviluppare mobile web applications utilizzando Mockup, Sencha Touch e Sinatra
.tagged.blue mobile
%td
%a{:href => "#talk2-5"} Minegems: Hosting privato di gemme
.tagged.red tools
%tr
%td 16.10 - 17.10
%td
%a{:href => "#talk1-6"} RSpec best practices
.tagged.red tools
%td
%a{:href => "#talk2-6"} To batch or not to batch
%tr
%td 17.10 - 18.10
%td
%a{:href => "#talk1-7"} Continuous integration/deployment
.tagged.gray tools
%td
%a{:href => "#talk2-7"} Solid design for Rails applications
.tagged.cyan rails
%tr.break
%td{:colspan => 3} 18.10 ~ 18.30 - Saluti finali e distribuzione premi
/
.section
%h1 Talk
%p Ogni talk dura un'ora: 45 minuti per la presentazione del relatore, a cui seguiranno 10 minuti di domande e risposte. Gli ultimi 5 minuti sono per permettere il cambio sala agevolmente.
.section
%h1 Track #1
%p La track #1 sarà nella sala 1 da 300 posti.
.section
%h1 Track #2
%p La track #2 sarà nella sala 2 da 400posti
.talks-details
.track1
.talk#talk1-1
%a.back{:href => "#talks-table"} ↑ table
%h2
The Aeolus Project -
%a{:href => "speakers/francesco-vollero.html"} Francesco Vollero
%p
Il mondo dei cloud provider è veramente vario e cresce ogni giorno di più il numero di provider che offrono questi servizi.
%p La scelta è infinitamente varia, per rispondere alla necessità più disparate per l'utente medio. Aeolus Project nasce per offrire un sistema di gestione centralizzato dei diversi provider cloud per grandi società.
%p Infatti questo progetto si propone come un sistema completo di gestione delle immagini di macchine virtuali, eseguirle nella loro infrastruttura interna (es. VMware vSphere, RHEV) e nello stesso tempo copiare/eseguire/gestire queste immagini virtuali in diversi cloud hosters (es. Amazon EC2, Rackspace, IBM Smart Business Cloud, Microsoft Azure, etc).
%p Potrebbe apparire un'idiozia al primo sguardo ma è una opzione nel caso in cui, supponiamo, amazon ec2 va giù e possiamo avere la stessa istanza della macchina virtuale (diciamo) su Rackspace e continuare a lavorare da lì.
%p Aeolus si occupa di tutto ciò che riguarda la conversione/trasferimento/etc automaticamente.Vi starete chiedendo, che ci azzecca questo con il Ruby day? Beh, ci azzecca molto, poiché molte parti di questo progetto sono in Ruby. Tipo? Uno dei componenti più importanti, deltacloud è scritto in Sinatra, parti della gestione delle code è scritto in Ruby e la nostra interfaccia UI è scritta in Rails.
.talk#talk1-2
%a.back{:href => "#talks-table"} ↑ table
%h2
Varnish e caching di applicazioni Rails -
%a{:href => "speakers/antonio-carpentieri.html"} Antonio Carpentieri
%p
"Varnish Cache is an open-source web application accelerator. You install it in front of any server that speaks HTTP and you can configure it to cache the contents."
%p
Come utilizzare e configurare Varnish davanti a Rails 2.3.x e Rails 3.0.x per far lavorare le tue macchine solo quando è necessario. Vedremo come evitare i più comuni pitfall ed ottenere un caching efficace, a partire dall’ esperienza fatta nell’integrazione di Varnish su una applicazione web in Rails attualmente in produzione.
%p
Vedremo anche quali sono i risultati in termini di performance e carico sulle nostre macchine.
.talk#talk1-3
%a.back{:href => "#talks-table"} ↑ table
%h2
Analisi statica per un linguaggio dinamico -
%a{:href => "speakers/marco-borromeo.html"} Marco Borromeo
%p
Tutti sappiamo che Ruby è definito un linguaggio "dinamico", e accostarlo alla parola "statico" fa un pò impressione. Ma ci sono casi dove analizzare staticamente il nostro codice può far solo bene: l'analisi statica ci permette di identificare velocemente blocchi di codice ripetuti o molto simili tra loro, verificare la copertura dei tests, eventuali problemi sul design del codice, trovare files che cambiano spesso e misurare la complessità media del codice.
%p Tenere costantemente monitorati questi dati durante lo sviluppo ci permette di prevenire situazioni dove diventa difficile mantenere il codice, fare bugfixing o introdurre nuove funzionalità.
%p Durante il talk verranno esaminati i principali tool a disposizione per gestire l'analisi statica di codice Ruby, con esempi di refactoring di codice reale a partire dai dati emersi dalle analisi.
.talk#talk1-4
%a.back{:href => "#talks-table"} ↑ table
%h2
A Metaprogramming Spell Book -
%a{:href => "speakers/paolo-perrotta.html"} Paolo Perrotta
%p
When I started to learn Ruby, I was awed by the code of experienced rubyists. That code was full of amazing magic tricks that I could barely understand. People called those tricks metaprogramming.
%p With time, I found that metaprogramming sits right at the core of Ruby. To really understand Ruby, I had to understand all those scary tricks! Feeling like a sorcerer's apprentice, I set out to write a Spell Book of metaprogramming techniques. Once I'd finished the Spell Book, metaprogramming didn't seem like black magic anymore. Instead, it just felt like any other set of techniques.
%p In this talk, I'll show you the content of my Spell Book, so that you don't have to go through the trouble of writing one yourself.
.talk#talk1-5
%a.back{:href => "#talks-table"} ↑ table
%h2
Progettare e sviluppare mobile web applications utilizzando Mockup, Sencha Touch e Sinatra -
%a{:href => "speakers/matteo-collina.html"} Matteo Collina,
%a{:href => "speakers/daniele-bottillo.html"} Daniele Bottillo
%p
Mavigex è un’azienda giovane e dinamica che propone soluzioni mobili e interattive all’ avanguardia. La presenza di molteplici piattaforme nel mercato degli smartphone ha portato a scegliere di sviluppare mobile applications con un approccio web-based: HTML5, CSS3 e il framework JavaScript Sencha Touch. Tra i vari linguaggi server-side, verrà mostrato come Ruby e il framework Sinatra siano la scelta che si integra meglio con questo approccio.
%p Partendo da semplici mockup, durante la presentazione verrà illustrato il processo di sviluppo di queste mobile web applications mostrando la soluzione di un problema specifico, quale la fruizione di recensioni geolocalizzate. Verrà presentato il progetto dell’interazione tra l’ applicazione e il suo backend, poi verranno illustrati brevemente i framework Sencha Touch e Sinatra. L’applicazione sviluppata verrà poi distribuita su un’infrastruttura di cloud computing.
.talk#talk1-6
%a.back{:href => "#talks-table"} ↑ table
%h2
RSpec best practices -
%a{:href => "speakers/simone-carletti.html"} Simone Carletti
%p
Il testing è da sempre uno dei pilastri dello sviluppo in Ruby. Ruby è stato uno dei primi linguaggi ad avere un framework completo per lo unit testing direttamente all'interno della standard library.
%p
Tuttavia, questo non ha impedito la nascita di nuovi strumenti e librerie per il testing e continuous integration.
%p
Questo talk prende in esame RSpec, una delle alternative più mature e diffuse a Test::Unit, la libreria di testing distribuita nella Ruby Standard Library.
%p
RSpec è una libreria elegante e completa, in grado di combinare l'importanza di scrivere test "leggibili" con l'obiettivo fondamentale di riprodurre e validare al meglio l'efficacia del nostro programma.
%p
Vedremo come usare al meglio RSpec, quali sono i vantaggi rispetto a Test::Unit e come scrivere test in modo efficace ed efficiente. Non mancheranno accenni al testing in generale, altre librerie come Cucumber, Shoulda, Mocha, RR e all'uso di RSpec con Rails ed altri framework Ruby.
.talk#talk1-7
%a.back{:href => "#talks-table"} ↑ table
%h2
Continuous integration/deployment -
%a{:href => "speakers/sam-reghenzi.html"} Sam Reghenzi
%p
Continuous integration/deployment cos'è, perché è importante e come implementarlo per un progetto ruby/rails ottenendo molto con poco sforzo.
.track2
.talk#talk2-1
%a.back{:href => "#talks-table"} ↑ table
%h2
Ruby on Rails survival guide of an aged java developer -
%a{:href => "speakers/giancarlo-pace.html"} Gian Carlo Pace
%p
Switching to ruby language and to the rails framework can be puzzling if you come from a deep java background knowledge. "How can I...? How do I...?" are the most common question during the ramp up period of the learning curve and there is a good chance to get lost in the big "cave of the gems".
%p In this talk I'll try to explain the tips and tricks a java developer should know to avoid some common pitfalls and deliver his first rails project on time.
.talk#talk2-2
%a.back{:href => "#talks-table"} ↑ table
%h2
MacRuby -
%a{:href => "speakers/simone-d-amico.html"} Simone D'Amico
%p
Introduzione e presentazione di MacRuby, implementazione di ruby 1.9 per Mac Os X. Si vedrà come, e con quali tecnologie, MacRuby s'integra in Cocoa, il framework di riferimento per lo sviluppo su piattaforma Apple. Si vedranno anche i requisiti e le procedure necessarie per pubblicare, ed eventualmente vendere, la propria applicazione ruby sull'App Store.
.talk#talk2-3
%a.back{:href => "#talks-table"} ↑ table
%h2
syMfony and RoR3: friends for an hour -
%a{:href => "speakers/alessandro-cinelli.html"} Alessandro Cinelli,
%a{:href => "speakers/sandro-paganotti.html"} Sandro Paganotti,
%a{:href => "speakers/alberto-barilla.html"} Alberto Barillà
%p
Il talk è focalizzato sulla spiegazione delle princiapli differenze/similitudini fra questi due web framework mainstream. Adotteremo un approccio Top-Down parallelo nel quale gli aspetti di maggior importanza di entrambi i framework verranno descritti uno per uno a partire da quelli più infrastrutturali fino ad arrivare a quelli prevalentemente implementativi. Nella parte conclusiva dello speech ci focalizzeremo nel mostrare le filosofie dietro questi framework esponendo le feature più interessanti di entrambi i mondi.
%p
Tre speaker parteciperanno a questo speech. ognuno avrà un particolare ruolo: Alessandro, essendo PHP developer, si occuperà di approfondire glia spetti implementativi di syMfony2;
%p
Sandro è un hacker Ruby di vecchia data, che conosce e governa le technicalities del framework Rails; Alberto è il cialtrone (o più comunemente moderatore, nei circoli più mondani) che cercherà di fare da collante fra i due lati della forza.
.talk#talk2-4
%a.back{:href => "#talks-table"} ↑ table
%h2
Webby: ASCII alchemy for quick website authoring -
%a{:href => "speakers/andrea-schiavini.html"} Andrea Schiavini
%p
Webby allows to quickly manage a small website by combining the contents of a page with a layout to produce HTML. It supports different templating engines (ERB, Textile, Markdown, HAML, SASS), rake tasks to build the site and deploy it to a server, templates to quickly build resources like blog posts and much more.
%p
Introduzione a webby, installazione e dimostrazione del suo funzionamento per la creazione di un sito personale utilizzando haml e sass. Mostreremo anche come sia possibile usare i siti generati da Webby con Amazon S3.
%p
Opzionale: qualche accenno alla web typography con 960 GS.
.talk#talk2-5
%a.back{:href => "#talks-table"} ↑ table
%h2
Minegems: private gem hosting -
%a{:href => "speakers/luca-guidi.html"} Luca Guidi
%p
L'ecosistema Ruby si è notevolmente evoluto: RVM, Bundler ed un nuovo RubyGems.org hanno reso più agevole lavorare con le gemme.
%p
Sfortunatamente siamo ancora lontani dalla soluzione ideale: i deploy sono ancora troppo lenti, le gemme private sono distribuite tramite sistemi non standardizzati, i plugin Rails non possono essere facilmente distribuiti. In questo talk verrà spiegato come è stato sviluppato un servizio di hosting privato di gemme.
.talk#talk2-6
%a.back{:href => "#talks-table"} ↑ table
%h2
To batch or not to batch -
%a{:href => "speakers/luca-mearelli.html"} Luca Mearelli
%p
Sviluppare un'applicazione web sembra essere diventato molto semplice da quando abbiamo framework come rails o sinatra, ma la realtà è un po' più complessa di quello che sembra :)
%p
Qualunque applicazione dovrà fare una o più di queste operazioni, o operazioni simili:
%ul
%li mandare email
%li generare documenti o esportazioni dei dati
%li ridimensionare o trasformare foto
%li interrogare web service remoti
%p
Tutte queste sono troppo lente e pesanti per essere eseguite nel normale ciclo di richiesta/risposta.
%p
Non potendo eseguire certe attività in poche frazioni di secondo, l'unica possibilità che abbiamo è farle al di fuori dell'applicazione, utilizzando un meccanismo di esecuzione asincrono.
%p
Quando l'applicazione si trova a dover eseguire un'attività "lenta", ne potrà lanciare l'esecuzione e potrà proseguire a rispondere all'utente senza doverne aspettare la conclusione. Nei casi in cui sia necessario utilizzare il risultato dell'operazione asincrona, si farà in modo che questi possano essere recuperati con facilità.
%p
Questo permette all'applicazione di rimanere rapida e reattiva alle richieste degli utenti e rende più facile farla scalare.
%p
Oltre alle operazioni "lente" richieste dagli utente, è spesso necessario eseguire attività di manutenzione programmata (ad esempio: la pulizia delle sessioni), vedremo dunque come alcuni strumenti permettono di programmare nel tempo le attività asincrone, indipendentemente dalle richieste degli utenti.
%p
Esistono varie possibilità e librerie che permettono di implementare un sistema del genere e durante il talk utilizzando vari esempi, parleremo soprattutto di code, workers, & co:
%ul
%li Resque
%li Delayed_job
%p
Ma anche di crontab:
%ul
%li Craken
%li Whenever
%p
Accennando infine ad altri approcci (attuali & storici)
%ul
%li Beanstalkd and Stalker
%li BackgroundRb
%li SQS
%li Nanite
.talk#talk2-7
%a.back{:href => "#talks-table"} ↑ table
%h2
Solid design for Rails applications -
%a{:href => "speakers/matteo-vaccari.html"} Matteo Vaccari
%p
Le applicazioni Rails sono progettate secondo uno schema preciso: model, view, controller. Quando l'applicazione è giovane, i modelli le view e i controller sono di una chiarezza cristallina. Ma con l'andare del tempo, si aggiungono gli IF e le modifiche e l'originale chiarezza viene offuscata. Che fare quando la view, il modello o il controller diventano foreste impenetrabili?
%p
In questa presentazione vorrei mostrare alcune tecniche per riportare la semplicità in un'applicazione Rails, ritornando ad alcuni ben noti principi di programmazione a oggetti.
.footer
%script{:type => "text/javascript", :src => "https://ajax.googleapis.com/ajax/libs/jquery/1.6.0/jquery.min.js"}
:javascript
$(document).ready(function() {
$('table a').click(function() {
$('.talk.selected').removeClass('selected');
$('html, body').animate({
scrollTop: $($(this).attr('href')).addClass('selected').offset().top
}, 500);
return false;
});
$('.talk > a.back').click(function() {
$('.talk.selected').removeClass('selected');
$('html, body').animate({
scrollTop: $('#talks-table').offset().top
}, 500);
return false;
});
})