forked from neoshadybeat/symfony2-workshop-transparencias
-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.html
455 lines (426 loc) · 14 KB
/
index.html
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
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
<!doctype html>
<html lang="es">
<head>
<meta charset="utf-8">
<title>reveal.js - The HTML Presentation Framework</title>
<meta name="description" content="Workshop symfony2 UCA">
<meta name="author" content="Cayetano Soriano">
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
<link rel="stylesheet" href="css/reveal.min.css">
<link rel="stylesheet" href="css/theme/simple.css" id="theme">
<!-- For syntax highlighting -->
<link rel="stylesheet" href="lib/css/zenburn.css">
<!-- If the query includes 'print-pdf', use the PDF print sheet -->
<script>
document.write( '<link rel="stylesheet" href="css/print/' + ( window.location.search.match( /print-pdf/gi ) ? 'pdf' : 'paper' ) + '.css" type="text/css" media="print">' );
</script>
<!--[if lt IE 9]>
<script src="lib/js/html5shiv.js"></script>
<![endif]-->
</head>
<body>
<div class="reveal">
<!-- Any section element inside of this container is displayed as a slide -->
<div class="slides">
<section data-state="intro">
<h1>Workshop</h1>
<h3>Symfony2</h3>
</section>
<section>
<section>
<h1>$whoami</h1>
</section>
<section>
<p>
<ul>
<li>Cayetano Soriano Gallego</li>
<li>Acabando PFC ITIS</li>
<li>Actualmente trabajo en Crononauta</li>
<li>Llevo un año y medio con symfony2</li>
<li>Mantenedor de symfony2admingenerator</li>
<li>twitter <b>@neoshadybeat</b></li>
</ul>
</p>
</section>
</section>
<section>
<h2>Contraseña wifi</h2>
<p>
<img src="img/logo-wifi.jpg" height="60" alt="">
</p>
<p>
<img src="img/qr-wifi.png" height="200" alt="">
</p>
<p>
<ul>
<li><b>Essid:</b> ucAirPublica</li>
<li><b>Contraseña essid:</b> caminantenohaycamino</li>
<li><b>Nombre de usuario:</b> ucongreso03</li>
<li><b>Clave de acceso:</b> c668938</li>
</ul>
</p>
</section>
<section>
<section>
<h2>¿Qué es symfony2?</h2>
<p>
<q> Symfony is a PHP Web Development Framework.
That doesn’t answer your question?
Ok, let’s try that again.
Symfony is a PHP Framework, a Philosophy, and a Community - all working together in harmony.
</q><br>symfony.com
<br><br>
<q> It is written with speed and flexibility in mind. It allows developers to build better and easy to maintain websites with PHP.
</q><br>symfony.com
</p>
<aside class="notes">
Oh hey, these are some notes. They'll be hidden in your presentation, but you can see them if you open the speaker notes window (hit 's' on your keyboard).
</aside>
</section>
<section>
<img src="img/cool_jesus.jpg" alt="cool">
</section>
</section>
<section>
<section>
<h2>Symfony2</h2>
<h2>vs</h2>
<h2>Symfony2-standard</h2>
</section>
<section>
<h2>Symfony2</h2>
<p>Symfony2 realmente no es un framework, son una serie de librerías desacopladas que realizan labores específicas, llamados componentes, con los cuales puedes realizar tu propio framework</p>
</section>
<section>
<h2>Symfony2-standard</h2>
<p>Symfony2-standard, es el framework resultante de unir los componentes de symfony2, junto con algunos componentes de terceros, siendo todos estos componentes <b>bundelizados</b></p>
</section>
</section>
<section>
<section>
<h2>Definición de algunos términos</h2>
</section>
<section>
<p><b>bundle:</b> Un bundle no es más que un directorio que tiene una estructura definida que puede alojar cualquier cosa, desde clases para los controladores y recursos web.
</p>
</section>
<section>
<p><b>YAML:</b> YAML Ain't Another Markup Language, es un lenguaje de marcado ligero <a href="http://www.yaml.org/" title="YAML">más información</a>
</p>
</section>
<section>
<p><b>MVC:</b> Modelo-Vista-Controlador, es un patrón de diseño</p>
<p class="fragment">
<img src="img/mvc.png" alt="MVC">
<ul >
<li class="fragment">
<b>Modelo:</b> Capa de datos.
</li>
<li class="fragment">
<b>vista:</b> Se encarga de mostrar la interfaz del usuario.
</li>
<li class="fragment">
<b>controlador:</b> Dónde se realiza la lógica de negocio.
</li>
</ul>
</p>
</section>
<section>
<p><b>Estandar PSR-0</b> Es un estandar de php, para facilitar la integración de librerias de terceros, se basa en usar una estructura específica en el espacio de nombres (namespace), y también para el nombre de los archivos.
<a href="https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-0.md" title="PSR-0">más información</a>
</p>
</section>
</section>
<section>
<section>
<h1>Composer</h1>
<p>
<img src="img/composer.png" alt="composer">
</p>
<p class="fragment">
Dependency Manager for PHP
</p>
</section>
<section>
<h2>¿Qué es?</h2>
<p>Es un archivo <b>phar</b> (archivos php empaquetados), el cual hace uso del componente console de symfony2, el cual sirve, para descargar las dependencias de una librería, mediante un archivo de configuración composer.json</p>
</section>
<section>
<h2>Packagist</h2>
<p>Es la página dónde se cuelgan los paquetes, con unos archivos de configuración en el cual les dice, de que paquetes dependen y dónde pueden encontrarlos
<img src="img/packagist.png" alt="">
</p>
</section>
<section>
<h2>Comandos más relevantes de composer</h2>
<p>
<ul>
<li><b>install</b> instalará todos los paquetes mencionados en el archivo composer.json, en caso de no existir el archivo composer.lock (versiones bloqueados de los paquetes)</li>
<li> <b>update</b> instalará todos los paquetes mencionados en el archivo composer.json y actualizará el archivo composer.lock, con las última versión de los paquetes</li>
<li><b>require</b> instala un paquete</li>
<li><b>show</b> muestra información sobre un paquete dado</li>
<li><b>search</b> busca un paquete en el repositorio de packagist</li>
</ul>
</p>
</section>
</section>
<section>
<section>
<h2>Twig</h2>
<p>
Sistema de plantillas
</p>
<a href="#" class="image navigate-down">
<img height="238" src="img/twig.png" alt="web Twig">
</a>
</section>
<section>
<h2>Sintaxis twig</h2>
</section>
<section>
<p>Herencia de otra plantilla y reescritura de bloques</p>
<pre>
<code class="django">
{% extends "plantilla" %}
</code>
</pre>
<p>Bloque de código el cual puede ser reemplazado por las plantillas que hereden de ella</p>
<pre>
<code class="django">
{% block "nombre_bloque" %}
</code>
</pre>
<p>Bucle for en la plantilla ...</p>
<pre>
<code class="django">
{% for item in seq %}{% endfor %}
</code>
</pre>
</section>
<section>
<p>if en la plantilla ...</p>
<pre>
<code class="django">
{% if condition %}{% endif %}
</code>
</pre>
<p>acceso a tributos de una clase</p>
<pre>
<code class="django">
{{ objeto.atributo }}
</code>
</pre>
</section>
<section>
<h2>Específicos de symfony2</h2>
</section>
<section>
<p>Generar una url</p>
<pre>
<code class="django">
{{path('url',{'parm': objeto.atributo})}}
</code>
</pre>
<p>Acceso a recursos estáticos</p>
<pre>
<code class="django">
{{ asset('url_a_js') }}
</code>
</pre>
</section>
</section>
</section>
<section>
<section>
<h2>Doctrine2</h2>
<p class="fragment">
Es el ORM por defecto en symfony2, distribución standard.
</p>
</section>
<section>
<h2>¿Qué es un ORM?</h2>
<p>
Es una técnica de programación para convertir datos entre el sistema de tipos (modelos), utilizado en un lenguaje de programación orientado a objetos y el utilizado en una base de datos relacional, utilizando un motor de persistencia.
</p>
</section>
<section>
<h2>¿cómo se crea la base de datos?</h2>
<p>
<ul>
<li class="fragment">Via YAML</li>
<li class="fragment">Vía XML</li>
<li class="fragment" style="color:red">Vía anotaciones</li>
</ul>
</p>
</section>
<section>
<h2>Relaciones que permite implementar</h2>
<p>
<ul>
<li class="fragment">una a una</li>
<li class="fragment">una a varios</li>
<li class="fragment">varios a varios</li>
</ul>
</p>
</section>
<section>
<h2>Métodos mágicos</h2>
<p>
Te permite hacer llamadas a la base de datos, delímitándolos por campos
<ul>
<li>findBy*</li>
<li>findByOneBy*</li>
</ul>
</p>
</section>
<section>
<h2>Sentencias DQL (Doctrine query lenguage)</h2>
<ul>
<li>Parecido a HQL (Hibernate query lenguage)</li>
<li>Permite hacer select, update y delete</li>
<li>Es orientación a objetos</li>
</ul>
<p>
<h3>Ejemplo:</h3>
<pre>
<code>
SELECT u FROM MyProject\Model\User u WHERE u.age > 20
</code>
</pre>
</p>
</section>
</section>
<section>
<h1>Enlaces</h1>
<ul>
<li><a href="http://knpbundles.com">Knpbundles</a> índice de bundles de symfony2</li>
<li><a href="http://symfony.com/">Symfony.com</a> Web oficial de symfony2</li>
<li><a href="http://symfony.es">Symfony.es</a> Symfony en castellano</li>
<li><a href="http://www.symfony2cheatsheet.com/">Cheat Sheet sf2</a></li>
</ul>
</section>
<section>
<section>
<h1>Proyecto a realizar ...</h1>
</section>
<section>
<h1>Un blog!!!</h1>
</section>
<section>
<h1>Orden del día ...</h1>
</section>
<section>
<p>
<ul>
<li>Instalación de symfony2 con composer</li>
<li>Explicar las partes de symfony2</li>
<li>Instalación de Bundle de terceros</li>
<li>Creación de Bundles</li>
<li>Consola de symfony2</li>
<li>Doctrine2, en symfony2 (entidades, relaciones, ciclo de vida)</li>
<li>Sistema de plantillas twig, en symfony2</li>
<li>Formularios</li>
<li>Routing</li>
<li>knp-paginator</li>
</ul>
</p>
</section>
<section>
<h1>One more thing ...</h1>
<h2 class="fragment">Si sobra tiempo</h2>
<ul class="fragment">
<li>Swiftmailer</li>
<li>Assetics</li>
<li>Listeners</li>
<li>Crear métodos en twig</li>
<li>Capifony (deploy)</li>
<li>Symfony Admingenerator</li>
</ul>
</section>
</section>
<section>
<section>
<h2>Máquina virtual</h2>
<h3>Urls de los entornos</h3>
<p>
<ul>
<li>http://symfony2-playground instalación limpia</li>
<li>http://symfony2-workshop clone del repositorio</li>
</ul>
</p>
</section>
<section>
<h2>La contraseña para todo es ...</h2>
<h4 class="fragment">symfony</h4>
</section>
<section>
<h2>En el escritorio hay ...</h2>
<h3 class="fragment">Sublime "dopado"</h3>
<h3 class="fragment">symfony2cheetsheat</h3>
<h3 class="fragment">PDF documentación</h3>
</section>
</section>
<section>
<section>
<h2>Un poquito de spam</h2>
</section>
<section>
<h2>Betabeers Cádiz</h2>
<p class="fragment">
Reunión mensual de desarrolladores, que se realiza en Cádiz,
</p>
<p class="fragment">
Tenemos cervezita gratis, refrescos y <b class="fragment">GALLETITAS SALADAS!!!</b>
</p>
<p>
<b>twitter</b> @betabeerscdz
</p>
</section>
<section>
<h2>Cádiz developers</h2>
<p class="fragment">
Grupo de facebook dónde los developers gaditanos, planeamos conquistar el mundo y hablar de nuestras cosas
</p>
<p class="fragment">
<a href="http://cadizdev.com">cadizdev.com</a>
</p>
</section>
<section>
<h2>Symfony Group Andalucía</h2>
<p class="fragment">
Estamos trabajando en ello ....
</p>
</section>
</section>
<section>
<h1>HERE WE GO!!!</h1>
</section>
</div>
</div>
<script src="lib/js/head.min.js"></script>
<script src="js/reveal.min.js"></script>
<script>
// Full list of configuration options available here:
// https://github.com/hakimel/reveal.js#configuration
Reveal.initialize({
controls: true,
progress: true,
history: true,
center: true,
theme: Reveal.getQueryHash().theme, // available themes are in /css/theme
transition: Reveal.getQueryHash().transition || 'default', // default/cube/page/concave/zoom/linear/none
// Optional libraries used to extend on reveal.js
dependencies: [
{ src: 'lib/js/classList.js', condition: function() { return !document.body.classList; } },
{ src: 'plugin/markdown/showdown.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
{ src: 'plugin/markdown/markdown.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
{ src: 'plugin/highlight/highlight.js', async: true, callback: function() { hljs.initHighlightingOnLoad(); } },
{ src: 'plugin/zoom-js/zoom.js', async: true, condition: function() { return !!document.body.classList; } },
{ src: 'plugin/notes/notes.js', async: true, condition: function() { return !!document.body.classList; } }
// { src: 'plugin/remotes/remotes.js', async: true, condition: function() { return !!document.body.classList; } }
]
});
</script>
</body>
</html>