Slides for the talk at IDAT (Lima, Peru)

This commit is contained in:
Jesus M. Castagnetto
2005-06-04 20:04:58 +00:00
parent e9f7b32921
commit 5353fc7f4c
44 changed files with 871 additions and 32 deletions

92
idat_2005_peru.xml Normal file
View File

@@ -0,0 +1,92 @@
<?xml version="1.0" encoding="UTF-8"?>
<presentation
navbarbackground="#ffffff"
template="css"
navmode="html"
jskeyboard="1"
navbartopiclinks="0"
stylesheet="presentations/slides/peru/idat2005_style.css"
>
<title>PHP: Una visión global</title>
<subtitle>El lenguaje, su uso, y la comunidades que lo hacen
crecer</subtitle>
<topic>PHP</topic>
<event>Charla en IDAT</event>
<location>Lima, Perú</location>
<date>2005-06-04</date>
<speaker>Jesus M. Castagnetto, Ph.D.</speaker>
<email>jmcastagnetto@php.net</email>
<url>http://talks.castagnetto.org/</url>
<slide>slides/peru/idat2005_title.xml</slide>
<slide>slides/peru/idat2005_toc.xml</slide>
<chapter title="Introducción">
<slide>slides/peru/el_lenguaje.xml</slide>
<slide>slides/peru/filosofia_del_lenguaje.xml</slide>
<slide>slides/peru/lang_de_servidor.xml</slide>
<slide>slides/peru/arquitectura.xml</slide>
<slide>slides/peru/plataformas.xml</slide>
<slide>slides/peru/extensiones.xml</slide>
<slide>slides/peru/estadisticas_de_uso.xml</slide>
<slide>slides/peru/embeber_php.xml</slide>
<slide>slides/peru/conceptos_basicos.xml</slide>
<slide>slides/peru/formularios.xml</slide>
<slide>slides/peru/sintaxis.xml</slide>
<slide>slides/peru/tipos.xml</slide>
<slide>slides/peru/arreglos.xml</slide>
<slide>slides/peru/funciones.xml</slide>
<slide>slides/peru/oop.xml</slide>
<slide>slides/peru/oop_php5.xml</slide>
<slide>slides/peru/regex.xml</slide>
</chapter>
<chapter title="Extensiones">
<slide>slides/peru/ejemplos_de_uso.xml</slide>
<slide>slides/peru/sql.xml</slide>
<slide>slides/peru/sql_ejemplo.xml</slide>
<slide>slides/peru/gd2_imgresize.xml</slide>
<slide>slides/intro/pdf.xml</slide>
<slide>slides/peru/ming_flash.xml</slide>
<slide>slides/peru/ming_flash_rss.xml</slide>
<slide>slides/peru/php5_sqlite.xml</slide>
<slide>slides/peru/php5_simplexml.xml</slide>
</chapter>
<chapter title="Las comunidades">
<slide>slides/peru/las_comunidades.xml</slide>
<slide>slides/peru/ecosistema_de_comunidades.xml</slide>
<slide>slides/peru/comunidad_visiongeneral.xml</slide>
<slide>slides/peru/comunidad_grupocentral.xml</slide>
<slide>slides/peru/comunidad_documentacion.xml</slide>
<slide>slides/peru/pear_comunidad1.xml</slide>
<slide>slides/peru/pear_comunidad2.xml</slide>
<slide>slides/peru/comunidad_todas.xml</slide>
</chapter>
<chapter title="PEAR y PECL">
<slide>slides/peru/pear_titulo.xml</slide>
<slide>slides/peru/pear_que_es.xml</slide>
<slide>slides/peru/pear_metas.xml</slide>
<slide>slides/peru/pear_pepr.xml</slide>
<slide>slides/peru/pear_codingstandards.xml</slide>
<slide>slides/peru/pear_installer1.xml</slide>
<slide>slides/peru/pear_installer2.xml</slide>
<slide>slides/peru/pear_installer3.xml</slide>
<slide>slides/peru/pear_installer4.xml</slide>
<slide>slides/peru/pear_installer_gtk.xml</slide>
<slide>slides/peru/pear_installer_web.xml</slide>
<slide>slides/peru/pear_packages.xml</slide>
<slide>slides/peru/pear_pearinfo.xml</slide>
<!--
<slide>slides/peru/pear_channels.xml</slide>
<slide>slides/peru/pear_newpackagedef.xml</slide>
-->
</chapter>
<chapter title="Final">
<slide>slides/peru/idat2005_conclusion.xml</slide>
<slide>slides/peru/gracias.xml</slide>
<slide>slides/peru/recursos.xml</slide>
</chapter>
</presentation>

View File

@@ -5,7 +5,7 @@
navmode="html"
jskeyboard="1"
navbartopiclinks="0"
stylesheet="presentations/slides/peru/style.css"
stylesheet="presentations/slides/peru/ldd2005_style.css"
>
<title>PHP 5 y PEAR:
Una visión global</title>
@@ -66,6 +66,6 @@ Una visión global</title>
<chapter title="Final">
<slide>slides/peru/ldd2005_conclusion.xml</slide>
<slide>slides/peru/ldd2005_conclusion2.xml</slide>
<slide>slides/peru/ldd2005_gracias.xml</slide>
<slide>slides/peru/gracias.xml</slide>
</chapter>
</presentation>

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<slide title="La arquitectura de PHP">
<image filename="../intro/php4_arch.gif" align="center" />
</slide>

22
slides/peru/arreglos.xml Normal file
View File

@@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<slide title="Arreglos">
<example title="Arreglos Ordenados"><![CDATA[<?php
$a[0] = 1;
$a[1] = "foo";
$a[] = 1.57;
?>]]></example>
<example title="Arreglos Associativos"><![CDATA[<?php
$catch_it['gato'] = "ratón";
$catch_it['tigre'] = "venado";
?>]]></example>
<break lines="3"/>
<blurb>*Manipulación de arreglos*</blurb>
<list>
<bullet>Ordenamiento: sort(), rsort(), ksort(), usort(), array_multisort()</bullet>
<bullet>Iteración: reset(), end(), next(), each(), current(), key(), array_walk()</bullet>
<bullet>Avanzado: array_diff(), array_intersect(), array_merge(),
array_merge_recursive(), array_slice(), array_splice(), y mucho mas...</bullet>
</list>
</slide>

View File

@@ -0,0 +1,11 @@
<slide title="El Grupo de Documentación">
<blurb>*Muchos lenguajes, un objetivo*</blurb>
<image filename='../sdphp/images/dot-files/phpdoc_all-small.png' align='right'/>
<list>
<bullet>Documentación escrita en DocBook XML</bullet>
<bullet>Varios Formatos de salida (HTML, PDF, CHM, etc.)</bullet>
<bullet>Multiples lenguajes (from Arabic to Turkish)</bullet>
<bullet>Una comunidada geográfica y linguisticamente diversa</bullet>
<bullet>Todos son voluntartios</bullet>
</list>
</slide>

View File

@@ -0,0 +1,14 @@
<slide title="PHP: comunidad base">
<blurb>*Una comunidad de comunidades*</blurb>
<image filename='../sdphp/images/dot-files/php_core.png' align='center'/>
<list fontsize='4em'>
<bullet>Desarrolladores centrales</bullet>
<bullet>Desarrolladores de extensiones</bullet>
<bullet>Grupo de control de calidad (PHP QA)</bullet>
<bullet>Grupo de Documentación (PHP DOC)</bullet>
</list>
<break lines="2"/>
<blurb>
Todas las comunidades estan intimamente interconectadas y superpuestas.
</blurb>
</slide>

View File

@@ -0,0 +1,3 @@
<slide title="Todas las communidades">
<image filename='../sdphp/images/dot-files/php-small.png' align='center'/>
</slide>

View File

@@ -0,0 +1,8 @@
<slide title="Una vision general">
<image filename='../sdphp/images/dot-files/php-pear-gtk.png' align='right'/>
<list fontsize='5em'>
<bullet>Comunidades de base: PHP, PEAR/PECL, y PHP-GTK.</bullet>
<bullet>Comunidades en la periferia: Programadores, Usuarios finales,
Proveedores, Escritores, etc.</bullet>
</list>
</slide>

View File

@@ -0,0 +1,34 @@
<?xml version="1.0" encoding="UTF-8"?>
<slide title="Conceptos Básicos">
<example title="Variables y Expresiones" width="30em"><![CDATA[<?php
$foo = 1;
$bar = "Probando";
$xyz = 3.14;
$foo = $foo + 1;
?>]]></example>
<example title="Arreglos" width="30em"><![CDATA[<?php
$foo[1] = 1;
$foo[2] = 2;
$bar[1][2] = 3;
?>]]></example>
<example title="Funciones" width="30em"><![CDATA[<?php
phpinfo();
foo();
$len = strlen($foo);
?>]]></example>
<example title="Estructuras de control" width="30em"><![CDATA[<?php
while($foo) {
...
}
?>]]></example>
<example title="Producción de resultados" width="30em"><![CDATA[<?php
echo $foo;
printf(".2f",$price);
?>]]></example>
</slide>

View File

@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<slide title='El Ecosistema'>
<image filename="images/jerry_leibowitz-Ecosystem_small.jpg" align="right"/>
<blurb>
*Ecosistema:*
El complejo de una comunidad de organismos, medio ambiente, e
interrelaciones, visto como una unidad ecológica funcional.
(~Traducido de 'ecosystem' del "Merriam-Webster Dictionary"~)
</blurb>
<break lines="2"/>
<blurb>
Los desarrolladores de PHP y comunidades relacionadas (usuarios,
programadores, esccritores, etc.), constituyen un ecosistema (artificial).
Cada uno se beneficia ("alimenta") de los productos de los otros.
</blurb>
<break lines="2"/>
</slide>

View File

@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<slide title="Usando PHP">
<break lines="5"/>
<blurb align="center">*Ejemplos prácticos de uso de PHP*</blurb>
<list>
<bullet>SQL: uso de bases de datos</bullet>
<bullet>GD2: manipulación de imágenes.</bullet>
<bullet>PDF: creación de PDF</bullet>
<bullet>Flash (Ming): generación de Flash, manipulación de RSS</bullet>
<bullet>SQLite: base de datos simple y ligera</bullet>
<bullet>SimpleXML: simple manejo de XML</bullet>
</list>
</slide>

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<slide title="PHP">
<break lines="10"/>
<blurb align="center">
*El lenguaje, su filosofía de diseño, conceptos básicos, y algo de lo cambios y cosas nuevas en PHP 5*
</blurb>
</slide>

View File

@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<slide title="Incluyendo PHP">
<example title="Los 4 estilos de marcado" result="1"><![CDATA[<html>
<body>
<ul>
<li>
<? echo 'Marcas cortas - Com&uacute;n en c&oacute;digo antig&uuml;o' ?>
</li>
<li>
<?php echo 'Marcas completas - Portable y lo recomendado' ?>
</li>
<li>
<%= 'ASP Tags, poco portable y no muy usado' %>
</li>
<li>
<script language="php">
echo 'Marcado bien verboso - raramente usado';
</script>
</li>
</ul>
</body>
</html>]]></example>
</slide>

View File

@@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
<slide title="PHP es muy usado">
<blurb>Reporte de Netcraft de Diciembre 2004</blurb>
<list>
<bullet>18,455,683 Dominios. 1,317,871 direcciones de IP</bullet>
</list>
<image filename="../intro/phpstats.png" align="center"/>
<link href="http://www.netcraft.com" leader="Source: " align="center" marginright="6em">Netcraft</link>
<blurb>Reporte de módulos de Apache de Septiembre 2004 (SecuritySpace)</blurb>
<list>
<bullet>%10,933,256 Servidores de Apache%</bullet>
<bullet>% 5,405,907 (49.44\%) PHP%</bullet>
<bullet>% 2,952,183 (27.00\%) OpenSSL%</bullet>
<bullet>% 2,868,311 (26.23\%) mod_ssl%</bullet>
<bullet>% 2,114,853 (19.34\%) Frontpage%</bullet>
<bullet>% 1,542,833 (14.11\%) mod_perl%</bullet>
<bullet>% 583,005 (5.33\%) mod_log_bytes%</bullet>
<bullet>% 562,279 (5.14\%) mod_bwlimited%</bullet>
<bullet>% 456,107 (4.17\%) DAV%</bullet>
<bullet>% 430,484 (3.94\%) mod_throttle%</bullet>
<bullet>% 361,366 (3.31\%) mod_jk%</bullet>
<bullet>% 276,478 (2.53\%) mod_fastcgi%</bullet>
<bullet>% 187,720 (1.72\%) mod_auth_pam%</bullet>
</list>
<link href="http://www.securityspace.com/s_survey/data/index.html" leader="Source: ">SecuritySpace.com</link>
</slide>

View File

@@ -0,0 +1,47 @@
<?xml version="1.0" encoding="UTF-8"?>
<slide title="Extensiones">
<list>
<bullet> GD (GIF, JPEG, PNG, WBMP)</bullet>
<bullet> LDAP</bullet>
<bullet> SNMP</bullet>
<bullet> IMAP (POP, NNTP)</bullet>
<bullet> FTP</bullet>
<bullet> MCAL</bullet>
<bullet> IMSP</bullet>
<bullet> IPTC</bullet>
<bullet> BC/GMP (matemáticas de precisión arbitraria)</bullet>
<bullet> Hyperwave</bullet>
<bullet> Interpretador de XML</bullet>
<bullet> Generación de PDF</bullet>
<bullet> FDF (formularios de PDF)</bullet>
<bullet> Semáforos de System V y memoria compartida</bullet>
<bullet> DCOM (sólo Win32)</bullet>
<bullet> Conectividad a Java</bullet>
<bullet> mnogosearch (soporte de udmsearch)</bullet>
<bullet> Cybermut</bullet>
<bullet> Iconv</bullet>
<bullet> Satellite</bullet>
<bullet> Curl</bullet>
<bullet> gettext (Internacionalización de GNU)</bullet>
<bullet> zlib (IO comprimido)</bullet>
<bullet> Conversión de grupo de caracteres/texto (UTF-8, Cyrillic, Hebrew)</bullet>
<bullet> Extensión para las capacidades del navegador de web</bullet>
<bullet> EXIF</bullet>
<bullet> SWF (Flash)</bullet>
<bullet> ASPELL/PSPELL</bullet>
<bullet> MCRYPT</bullet>
<bullet> Cybercash</bullet>
<bullet> Recode</bullet>
<bullet> Readline</bullet>
<bullet> XSLT (Sablotron, libxslt, Xalan)</bullet>
<bullet> WDDX</bullet>
<bullet> NIS</bullet>
<bullet> YAZ (cliente de Z39.50)</bullet>
<bullet> Payflow Pro</bullet>
<bullet> CCVS (Credit Card Verification System)</bullet>
<bullet> Fribidi</bullet>
<bullet> Ncurses</bullet>
<bullet> Muscat</bullet>
<bullet> ... y mucho mas</bullet>
</list>
</slide>

View File

@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<slide title="Filosofía del diseño">
<list>
<bullet fontsize="5em" margintop="1em">
Una solución *pragmática* al problema de desarrolar aplicaciones de Web.
</bullet>
<bullet fontsize="5em" margintop="1em">
Una solución *directa* y obvia para un problema simple.
</bullet>
<bullet fontsize="5em" margintop="1em">
*Escalabilidad* debido a su |ff0000|simplicidad|
</bullet>
<bullet align="center" margintop='3em'>
Acuerdense de la Navaja de Occam: "Entia non sunt multiplicanda praeter necessitatem"
(es decir: No busques una solución compleja si una mas simple existe)
</bullet>
</list>
</slide>

View File

@@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
<slide title="Manejo de formularios">
<example title="Manejo tradicional de formularions"
result="1"><![CDATA[<form action="<?=$PHP_SELF?>" method="POST">
Nombre: <input type="text" name="nombre"><br>
Edad: <input type="text" name="edad"><br>
<input type="submit" value="Enviar">
</form>]]></example>
<example title="Programa que recibe los datos" result="1"
condition="nombre"><![CDATA[Hola <?php echo $nombre; ?>.
Tu edad es <?php echo $edad; ?> a&ntilde;os.]]></example>
<break lines="2" />
<blurb>
*Acerca de register_globals*:
El ejemplo anterior depende de que register_globals este activo. Esto hace
que los valores del formulario sean añadidos automaticamente a los valores
globales, pero el hacer esto puede conducir a escribir código inseguro si no
se hacen los chequeos del caso. Para combatir este problema, desde la
*versión 4.2* de PHP en adelante, register_globals esta desactivado por
defecto.
</blurb>
<break lines="2" />
<example title="Asumiendo register_globals desactivado" result="1"
condition="nombre">
<![CDATA[Hola <?php echo $_POST['nombre']; ?>.
Tu edad es <?php echo $_POST['edad']; ?> a&ntilde;os.]]></example>
</slide>

40
slides/peru/funciones.xml Normal file
View File

@@ -0,0 +1,40 @@
<?xml version="1.0" encoding="UTF-8"?>
<slide title="Funciones definidas por el usuario">
<example title="Una función típica y simple"><![CDATA[<?php
function log_data(&$db, $user, &$data) {
mysql_query("INSERT INTO userdata VALUES ('".
uniqid()."', '$user', '$data')", $db);
}
?>]]></example>
<example title="Pasar por referencia">
<![CDATA[<?php
log_data($db, $PHP_AUTH_USER, $data);
?>]]></example>
<example title="Valores por defecto"><![CDATA[<?php
function hacer_cafe($tazas, $azucar=false, $otros='') {
$cafe_en_polvo = 2 * $tazas; // cucharadas
$agua_caliente = 250 * tazas; // volumen en ml
$cafe = pasar_en_cafetera($cafe_en_polvo, $agua_caliente);
if ($azucar) {
$cafe = mezclar($cafe, $azucar);
}
if ($otros != '') {
$cafe = agregar_otros($cafe, $otros);
}
return $cafe;
}
// cafe solo, 1 taza
$solo = hacer_cafe(1);
// cafe con azúcar para 3
$tres = hacer_cafe(3, true);
// cafe con leche para dos y con azúcar
$dos = hacer_cafe(2, true, 'leche');
?>]]></example>
</slide>

View File

@@ -0,0 +1,11 @@
<slide title="Manipulación de imágenes">
<example
title="Redimensionando y usando el canal Alfa"
filename="ejemplos/img_resize.php"
fontsize="1.4em"
result="1"
rwidth="910"
type="genimage"
/>
<break lines="2"/>
</slide>

View File

@@ -1,19 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<slide title="Gracias a todos ...">
<list>
<bullet effect="hide">
<bullet>
los organizadores, por el esfuerzo de poner este evento
con mucho orden y profesionalismo,
</bullet>
<bullet effect="hide">
<bullet>
los asistentes, por haber soportado bien todas estas horas
sentados, y por no quedarse dormidos cuando daba mi charla,
</bullet>
<bullet effect="hide">
<bullet>
los rayados de PHP y PEAR que siempren hacen algo que
nos asombra y hace la vida del programador mas simple,
</bullet>
<bullet effect="hide">
<bullet>
los usuarios de nuestros programas de Open Source, que
nos dejan dorminos en nuestros laureles, y siempre encuentrar
el problema que nosotros jurabamos no podia ocurrir.

View File

@@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
<slide title="Conclusiones">
<list>
<bullet>
PHP es un lenguaje fácil de aprender, simple de usar, y robusto para
su empleo en web.
</bullet>
<bullet>
PHP nos ofrece una gama muy amplia de extensiones para hacer la vida
sencilla al programador. Inclusive soporte escribir código procedural
y de objetos en forma concurrente.
</bullet>
<bullet>
PHP es un esfuerzo conjunto de los desarrolladores y los usuarios, y uno
puede (y debe) de participar en el proceso, para beneficio común.
</bullet>
<bullet>
PEAR es un proyecto que nos ofrece un grupo sólido de paquetes y librerias
de alto nivel para que no tengamos que "reinventar la rueda" a cada rato.
%:-)%
</bullet>
<bullet>
Código abierto no solo implica accesso a la fuente, sino también la
oportunidad de intercambiar ideas y experiencias, una forma ideal de
continuar nuestro aprendizaje.
</bullet>
</list>
</slide>

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<slide template="titlepage" fontsize='3.5em'>
<title>IDAT 2005</title>
</slide>

View File

@@ -0,0 +1,27 @@
<?xml version="1.0" encoding="UTF-8"?>
<slide title="Agenda">
<list>
<bullet>
*PHP*:
Una visión general del lenguaje y sus características.
</bullet>
<bullet>
*Ejemplos de uso*:
Manipulación de imágenes, generación de PDF, etc.
</bullet>
<bullet>
*Las comunidades*:
Quienes estan involucrados, la dinámica y relaciones.
</bullet>
<bullet>
*PEAR y su comunidad*:
Qué es PEAR, que ofrece, y como funciona.
</bullet>
<bullet>
*Conclusiones*
</bullet>
<bullet>
*Referencias*
</bullet>
</list>
</slide>

View File

@@ -0,0 +1,34 @@
<?xml version="1.0" encoding="UTF-8"?>
<slide title="Trabaja en el servidor">
<blurb>
*PHP es un lenguaje de servidor*:
Aunque se puede embeber PHP en archivos de HTML como un lenguaje
de cliente (ej. Javascript), PHP corre en el servidor y todas las
instrucciones son ejecutadas y reemplazadas por el servidor de
web antes de enviarlo al navegador de web.
</blurb>
<image align="center" filename="../intro/serverside.png" />
<blurb>De manera que si un archivo de HTML contiene:</blurb>
<example><![CDATA[<html>
<head><title>Ejemplo</title></head>
<body>
<?php echo "PHP significa: PHP Hypertext Preprocessor"; ?>
</body>
</html>]]></example>
<blurb>
Lo que el usuario leeria si viera el código fuente de la página en su
navegador, seria:
</blurb>
<example><![CDATA[<html>
<head><title>Ejemplo</title></head>
<body>
PHP significa: PHP Hypertext Preprocessor
</body>
</html>]]></example>
</slide>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<slide title="Las comunidades de PHP">
<break lines="10"/>
<blurb align="center">*Quienes desarollan, documentan, y ayudan en el crecimiento de PHP*</blurb>
</slide>

View File

@@ -1,12 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<slide title="Agenda">
<list>
<bullet effect="hide">
<bullet>
*PHP 5*:
Una visión global de los cambios en PHP 5, y una discusión somera de
algunas extensiones interesantes.
</bullet>
<bullet effect="hide">
<bullet>
*PEAR*:
Qué es PEAR, que ofrece,
y como funciona. Finalmente, mencionaré algunos planes futuros del proyecto

View File

@@ -0,0 +1,14 @@
<slide title="Flash usando Ming">
<link leader="Ver " href="http://www.opaque.net/ming/" target="_blank"/>
<example
align="center"
result="1"
type="flash"
fontsize="1.5em"
iwidth="500"
iheight="300"
filename="ejemplos/ming.php"
rwidth="510"
/>
</slide>

View File

@@ -0,0 +1,13 @@
<slide title="RSS con Ming">
<example
title="Flash + RSS/XML"
result="1"
type="flash"
iwidth="100%"
iheight="70"
filename="ejemplos/ming2.php"
fontsize="1.5em"
outputbackground="#ffffff"
/>
<break lines="2"/>
</slide>

60
slides/peru/oop.xml Normal file
View File

@@ -0,0 +1,60 @@
<?xml version="1.0" encoding="UTF-8"?>
<slide title="Programación Orientada a Objetos">
<example title="Definición de una clase"><![CDATA[<?php
class Inventario {
var $articulos;
function agregar_articulo($artnr, $num) {
$this->articulos[$artnr] += $num;
}
}
?>]]></example>
<example title="Heredando de una clase con constructor"><![CDATA[<?php
class InventarioNombrado extends Inventario {
var $dueno;
function InventarioNombrado($nombre) {
$this->dueno = $nombre;
}
}
?>]]></example>
<example title="Invocación"><![CDATA[<?php
$inv = new InventorioNombrado("NerdChullos");
$inv->agregar_articulo(170923, 2);
?>]]></example>
<example title="Llamadas estaticas a métodos" result="1"><![CDATA[<?php
class Conversiones {
function PulgadasACentimetros($npulg) {
return 2.54 * $npulg;
}
}
echo '5 pulgadas son '.Conversiones::PulgadasACentimetros(5).' centimetros';
?>]]></example>
<break lines='2'/>
<blurb>
*Llamar a métodos en la clase padre*. Esto es útil cuando se necesita
el concatenar los constructores.
</blurb>
<example result="1"><![CDATA[<?php
class Felino {
function Felino() {
echo "Constructor de Felino";
}
}
class Gato extends Felino {
function Gato() {
echo "Constructor de Gato<br />\n";
$name = get_parent_class($this);
parent::$name();
}
}
$a = new Gato();
?>]]></example>
<br clear='2'/>
</slide>

29
slides/peru/oop_php5.xml Normal file
View File

@@ -0,0 +1,29 @@
<?xml version="1.0" encoding="UTF-8"?>
<slide title="Objetos en PHP 5">
<list>
<bullet>Constructores (%__construct()%)
y destructores (%__destruct()%) unificados</bullet>
<bullet>*PPP*: Private, Protected, Public. Se puede
restringir el alcance de variables y métodos</bullet>
<bullet>Objetos son *siempre pasados por referencia*,
de manera que si se necesita una copia se hace por
clonamiento (%__clone()%)</bullet>
<bullet>Interceptores para el accesso a variables (%__get()%,
%__set()%) y métodos (%__call()%)</bullet>
<bullet>Implementación de *interfazes* y de clases *abstractas*
(similar a Java)</bullet>
<bullet>Referencia indirecta. Si un metodo genera un objeto, se puede
acceder a las propiedades de este directamente:
%$obj->crearGato()->maullar()%.</bullet>
<bullet>Excepciones: métodos en objetos pueden generar excepciones,
nuevas excepciones se pueden definir, y se usa "%try ... catch ...%"
para poder manipularlas.</bullet>
<bullet>Clases pueden implementar constantes (%const%)</bullet>
<bullet>Métodos pueden ser marcados como estáticos (%static%)</bullet>
<bullet>Clases y métodos pueden ser marcados como finales (%final%)
para evitar que sean extendidos/modificados.</bullet>
<bullet>En la definición de métodos se puede aludir al tipo de
objeto aceptado como parámetro: %function alimentar(Gato $michi)%.</bullet>
<bullet>... y aun hay mas</bullet>
</list>
</slide>

10
slides/peru/pdf.xml Normal file
View File

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<slide title="Generación dinámica de PDF">
<example
title="Una factura en PDF"
fontsize="1.5em"
result="1"
filename="../intro/invoice.php"
/>
</slide>

View File

@@ -1,14 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<slide title="Las metas de PEAR">
<list>
<bullet effect="hide">Proveer paquetes de código modulares y reusables.</bullet>
<bullet effect="hide">Mantener un buen nivel de calidad en el código que
<bullet>Proveer paquetes de código modulares y reusables.</bullet>
<bullet>Mantener un buen nivel de calidad en el código que
sale del repositorio.</bullet>
<bullet effect="hide">Tener un estilo de codificación consistente y claro,
<bullet>Tener un estilo de codificación consistente y claro,
asi como un diseño razonable para cada paquete.</bullet>
<bullet effect="hide">Asegurarse de que lo paquetes son adecuadamente
<bullet>Asegurarse de que lo paquetes son adecuadamente
mantenidos, y errores son corregidos.</bullet>
<bullet effect="hide">Proveer un ambiente para la discusión constructiva en la
<bullet>Proveer un ambiente para la discusión constructiva en la
cual todos son considerados a la par.</bullet>
</list>
</slide>

View File

@@ -3,12 +3,12 @@
<image filename="images/pear-poster_small.jpg" align="right"/>
<list>
<bullet effect="hide">¿Una fruta dulce y jugosa?</bullet>
<bullet effect="hide">¿Una comunidad de programadores?</bullet>
<bullet effect="hide">¿Un repositorio de código de buena calidad y reusable?</bullet>
<bullet effect="hide">¿Un sistema para la distribución y mantenimiento de
<bullet>¿Una fruta dulce y jugosa?</bullet>
<bullet>¿Una comunidad de programadores?</bullet>
<bullet>¿Un repositorio de código de buena calidad y reusable?</bullet>
<bullet>¿Un sistema para la distribución y mantenimiento de
código?</bullet>
<bullet effect="hide">¿Un proyecto en continua evolución?</bullet>
<bullet effect="hide">¿Un sitio de web todo verde?</bullet>
<bullet>¿Un proyecto en continua evolución?</bullet>
<bullet>¿Un sitio de web todo verde?</bullet>
</list>
</slide>

View File

@@ -3,10 +3,10 @@
<blurb>*PEAR*: PHP Extensions and Applications Repository.
El repositorio de código reusable en PHP</blurb>
<list>
<bullet effect="hide">¿Qué es PEAR?</bullet>
<bullet effect="hide">¿Quiénes componen PEAR?</bullet>
<bullet effect="hide">La dinámica del desarrollo en PEAR</bullet>
<bullet effect="hide">Planes futuros: canales de distribución, dependencias distribuidas,
<bullet>¿Qué es PEAR?</bullet>
<bullet>¿Quiénes componen PEAR?</bullet>
<bullet>La dinámica del desarrollo en PEAR</bullet>
<bullet>Planes futuros: canales de distribución, dependencias distribuidas,
etc.</bullet>
</list>
</slide>

View File

@@ -2,10 +2,10 @@
<slide title="PHP 5">
<blurb>*¿Qué hay de nuevo en PHP 5?*</blurb>
<list type="darrow" fontsize="3.5em">
<bullet effect="hide">Soporte para Programación Orientada a Objetos</bullet>
<bullet effect="hide">SimpleXML: una forma directa y simple de manipular XML</bullet>
<bullet effect="hide">SQLite: base de datos sencilla pero poderosa</bullet>
<bullet effect="hide">Streams y Filtros</bullet>
<bullet effect="hide">... y mucho más (SPL, SOAP, DOM, XSL, Tidy, etc.)</bullet>
<bullet>Soporte para Programación Orientada a Objetos</bullet>
<bullet>SimpleXML: una forma directa y simple de manipular XML</bullet>
<bullet>SQLite: base de datos sencilla pero poderosa</bullet>
<bullet>Streams y Filtros</bullet>
<bullet>... y mucho más (SPL, SOAP, DOM, XSL, Tidy, etc.)</bullet>
</list>
</slide>

View File

@@ -0,0 +1,34 @@
<?xml version="1.0" encoding="UTF-8"?>
<slide title="Plataformas">
<blurb>*Sistemas Operativos*</blurb>
<list>
<bullet>UNIX (todas las variantes, incluyendo Linux)</bullet>
<bullet>Win32 (NT/W95/W98/W2000)</bullet>
<bullet>QNX</bullet>
<bullet>MacOS (WebTen)</bullet>
<bullet>OSX</bullet>
<bullet>OS/2</bullet>
<bullet>BeOS</bullet>
<bullet>OS/390 (experimental)</bullet>
<bullet>AS/400 (experimental)</bullet>
</list>
<blurb>*Interfaces a Servidores*</blurb>
<list>
<bullet>Módulo de Apache 1.x (UNIX,Win32)</bullet>
<bullet>CGI/FastCGI</bullet>
<bullet>thttpd </bullet>
<bullet>fhttpd</bullet>
<bullet>phttpd</bullet>
<bullet>ISAPI (IIS, Zeus)</bullet>
<bullet>NSAPI (Netscape iPlanet)</bullet>
<bullet>Java servlet </bullet>
<bullet>AOLServer</bullet>
<bullet>Módulo de Roxen/Caudium</bullet>
<bullet>SRM (Script Running Machine)</bullet>
<bullet>Módulo de Apache 2.x</bullet>
<bullet>Tux (experimental)</bullet>
<bullet>pi3web (experimental)</bullet>
</list>
</slide>

19
slides/peru/recursos.xml Normal file
View File

@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<slide title="Recursos de información">
<link leader="PHP: " href="http://www.php.net" target="_blank"/>
<link leader="Manual de PHP: " href="http://www.php.net/manual" target="_blank"/>
<link leader="Como ayudar a los grupos de documentación: " href="http://www.php.net/dochowto" target="_blank"/>
<link leader="PHP QA: " href="http://qa.php.net" target="_blank"/>
<link leader="PECL: " href="http://pecl.php.net (PHP extensions)" target="_blank"/>
<link leader="PEAR: " href="http://pear.php.net" target="_blank"/>
<link leader="Paquetes de PEAR: " href="http://pear.php.net/packages.php" target="_blank"/>
<link leader="Manual de PEAR: " href="http://pear.php.net/manual" target="_blank"/>
<link leader="El grupo de PEAR: " href="http://pear.php.net/group" target="_blank"/>
<link leader="Base de datos de problemas: " href="http://bugs.php.net" target="_blank"/>
<link leader="Listas de correo: " href="http://news.php.net" target="_blank"/>
<link leader="CVS: " href="http://cvs.php.net" target="_blank"/>
<link leader="Calendario de eventos: " href="http://www.php.net/cal.php" target="_blank"/>
<link leader="Otros sitios de PHP.net: " href="http://www.php.net/sites.php" target="_blank"/>
<link leader="Libros: " href="http://www.php.net/books.php" target="_blank"/>
<link leader="Otras referencias: " href="http://www.php.net/links.php (tutoriales, revistas, etc.)" target="_blank"/>
</slide>

16
slides/peru/regex.xml Normal file
View File

@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<slide title="Expresiones regulares">
<blurb>*Compatibles con POSIX*</blurb>
<example title="Regex POSIX" result="1"><![CDATA[<?php
echo ereg_replace('ceviche estaba muy ([[:alpha:]]+)',
'arroz con fritangita es bien \1',
'El ceviche estaba muy sabroso.');
?>]]></example>
<blurb>*Al estilo de Perl*</blurb>
<example title="Regex PCRE" result="1"><![CDATA[<?php
echo preg_replace('/ceviche ([\w\s]+)/',
'majas \1',
'El ceviche estaba muy sabroso.');
?>]]></example>
</slide>

29
slides/peru/sintaxis.xml Normal file
View File

@@ -0,0 +1,29 @@
<?xml version="1.0" encoding="UTF-8"?>
<slide title="Sintaxis del lenguaje">
<example title="Sintaxis similar a C" fontsize="1.8em" width="40em">
<![CDATA[<?php
for ($loop = -5; $loop < 5; $loop++) {
if ($i < 0) {
echo "-";
} elseif ($i > 0) {
echo "+";
}
echo "$loop<BR>\n";
}
while(--$loop) {
switch($i % 2) {
case 0:
echo "Even<BR>\n";
break;
case 1:
echo "Odd<BR>\n";
break;
}
}
do {
echo "$loop<BR>";
} while (++$loop < 10);
?>]]></example>
</slide>

31
slides/peru/sql.xml Normal file
View File

@@ -0,0 +1,31 @@
<slide title="Soporte de Bases de Datos">
<blurb>*SQL*</blurb>
<list>
<bullet> Adabas D</bullet>
<bullet> Empress</bullet>
<bullet> IBM DB2</bullet>
<bullet> Informix</bullet>
<bullet> Ingres</bullet>
<bullet> Interbase</bullet>
<bullet> Frontbase</bullet>
<bullet> mSQL</bullet>
<bullet> MS-SQL (directamente)</bullet>
<bullet> MySQL</bullet>
<bullet> ODBC</bullet>
<bullet> Ovrimos</bullet>
<bullet> Oracle (OCI7,OCI8)</bullet>
<bullet> PostgreSQL</bullet>
<bullet> Raima Velocis</bullet>
<bullet> Solid</bullet>
<bullet> Sybase</bullet>
<bullet> DB++</bullet>
</list>
<break lines="2"/>
<blurb>*Otras*</blurb>
<list>
<bullet>dBase</bullet>
<bullet>filePro (sólo lectura)</bullet>
<bullet>dbm (ndbm, gdbm, Berkeley db)</bullet>
</list>
<break lines="2"/>
</slide>

View File

@@ -0,0 +1,26 @@
<slide title="Ejemplo de SQL">
<blurb>
En los programas de PHP que se conectan a bases de datos, el procedimiento
es casi siempre similar al código a continuación: se hace la conexión al
servidor de base de datos, seleccionar la base de datos, ejecutar la
búsqueda, y finalmente iterar en los resultados.
</blurb>
<break lines="2"/>
<example title='Usado MySQL'><![CDATA[<?php
$db = mysql_connect("db.server.com","username","password");
mysql_select_db("productos", $db);
$result = mysql_query("SELECT * FROM detalles", $db);
if ($result) {
echo "<TABLE>\n";
echo "<TR><TH>Name</TH><TH>Description</TH></TR>\n";
while ($a = mysql_fetch_array($result)) {
echo "<TR><TD>{$a['nombre']}</TD>";
echo "<TD>{$a['descr']}</TD></TR>";
}
echo "</TABLE>";
} else {
echo "<P>No hay productos</P>";
}
?>]]></example>
<break lines="2"/>
</slide>

36
slides/peru/tipos.xml Normal file
View File

@@ -0,0 +1,36 @@
<?xml version="1.0" encoding="UTF-8"?>
<slide title="Tipos básicos de datos">
<example title="Números (enteros y reales)" result="1"><![CDATA[<?php
$a = 1234;
$b = 0777;
$c = 0xff;
$d = 1.25;
echo "$a $b $c $d<br />\n";
?>]]></example>
<example title="Cadenas" result="1"><![CDATA[<?php
$name = 'Rasmus $last'; // Comillas simples
$str = "Hola $name\n"; // Comillas dobles
echo $str;
?>]]></example>
<example title="Booleanos" result="1"><![CDATA[<?php
$greeting = true;
if($greeting) {
echo "Hola todos";
$greeting = false;
}
?>]]></example>
<blurb>*Asignación dinámica de tipos*</blurb>
<list>
<bullet>No se necesita declarar el tipo de una variable</bullet>
<bullet>Las conversiones entre tipos son automáticas (aunque también se
pueden forzar)</bullet>
</list>
<example result="1"><![CDATA[<?php
echo 5 + "1.5" + "10e2";
?>]]></example>
</slide>

View File

@@ -2,7 +2,11 @@
Header('Content-Type: image/png');
$height = 600;
$txt = 'My nephew Marcio, the future Linux kernel hacker';
$size = ImageTTFBbox(25,0,'timesi',$txt);
$font = '/usr/X11R6/lib/X11/fonts/TTF/luximri.ttf';
if (!file_exists($font)) {
$font = 'timesi';
}
$size = ImageTTFBbox(14,0,$font,$txt);
$txt_w = abs($size[2]-$size[0]);
$txt_h = abs($size[6]-$size[1]);
$bg = ImageCreateFromJpeg('../images/jmc_nephew.jpg');
@@ -17,11 +21,11 @@
$black = ImageColorAllocate($im,0,0,0);
$col = ImageColorResolveAlpha($im,10,10,10,50);
ImageFilledRectangle($im,10,5,470,90,0x30ffffff);
ImageTTFText($im,25,0,20,40,$black,'timesi',$sizing);
ImageTTFText($im,14,0,20,40,$black,$font,$sizing);
ImageDestroy($bg);
$box = ($width-$txt_w)/2;
ImageFilledRectangle($im,$box-10,$height-$txt_h-30,$width-$box,$height-5,$col);
$yellow = ImageColorAllocate($im,255,255,10);
ImageTTFText($im,25,0,$box,$height-$txt_h-5,$yellow,'timesi',$txt);
ImageTTFText($im,14,0,$box,$height-$txt_h-5,$yellow,$font,$txt);
ImagePNG($im);
?>

View File

@@ -5,7 +5,7 @@
navmode="html"
jskeyboard="1"
navbartopiclinks="0"
stylesheet="presentations/slides/peru/upchstyle.css"
stylesheet="presentations/slides/peru/upch2005_style.css"
>
<title>Introducción a Servicios de Web</title>
<topic>Web Services</topic>