- Frankfurt and Brasil talks.
75
php6-unicode-ffm2006.xml
Normal file
@@ -0,0 +1,75 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<presentation
|
||||
template="css"
|
||||
navmode="html"
|
||||
navbarbackground="#4373b4"
|
||||
navbartopiclinks="0"
|
||||
navColor="#f1fbff"
|
||||
logo1=""
|
||||
stylesheet="presentations/slides/perf/ezp.css"
|
||||
backgroundfixed="1" >
|
||||
<topic>Localization and Internationalization</topic>
|
||||
<title>PHP 6 and Unicode</title>
|
||||
<event>International PHP Conference</event>
|
||||
<location>Frankfurt, Germany</location>
|
||||
<date>November 7th, 2006</date>
|
||||
<speaker>Derick Rethans</speaker>
|
||||
<email>dr@ez.no</email>
|
||||
<url>http://derickrethans.nl/talks.php</url>
|
||||
<slide>slides/clustering/title.xml</slide>
|
||||
|
||||
<!-- UNICODE -->
|
||||
<slide>slides/i18nl10n/what-languages.xml</slide> <!-- what is the problem actually? -->
|
||||
<slide>slides/i18nl10n/challenges2.xml</slide>
|
||||
<slide>slides/i18nl10n/sorting.xml</slide>
|
||||
<slide>slides/i18nl10n/convert.xml</slide>
|
||||
|
||||
<slide>slides/i18nl10n/php-can-do-it-now.xml</slide>
|
||||
<slide>slides/i18nl10n/php-now-iconv.xml</slide>
|
||||
<slide>slides/i18nl10n/php-now-mbstring.xml</slide>
|
||||
<slide>slides/i18nl10n/php-now-locales.xml</slide>
|
||||
|
||||
<!-- UNICODE -->
|
||||
<slide>slides/i18nl10n/unicode.xml</slide>
|
||||
<slide>slides/i18nl10n/composition.xml</slide>
|
||||
<slide>slides/i18nl10n/properties.xml</slide>
|
||||
|
||||
<!-- PHP SOON -->
|
||||
<slide>slides/i18nl10n/goals-1.xml</slide>
|
||||
<slide>slides/i18nl10n/basics-1.xml</slide>
|
||||
<slide>slides/i18nl10n/surrogates.xml</slide> <!-- how does the encoding work? -->
|
||||
<slide>slides/i18nl10n/icu.xml</slide>
|
||||
<slide>slides/i18nl10n/roadmap.xml</slide>
|
||||
<slide>slides/i18nl10n/unicode-semantics.xml</slide>
|
||||
|
||||
<!-- STRINGS -->
|
||||
<slide>slides/i18nl10n/string-types.xml</slide>
|
||||
<slide>slides/i18nl10n/string-literals.xml</slide>
|
||||
<slide>slides/i18nl10n/characters-not-bytes.xml</slide>
|
||||
<slide>slides/i18nl10n/upgrading-locale.xml</slide>
|
||||
<slide>slides/i18nl10n/locale-example.xml</slide>
|
||||
<slide>slides/i18nl10n/locale-example2.xml</slide>
|
||||
<slide>slides/i18nl10n/locale-example-arrays.xml</slide>
|
||||
<slide>slides/i18nl10n/iterator-example.xml</slide>
|
||||
|
||||
<!-- DIFFERENT ENCODINGS -->
|
||||
<slide>slides/i18nl10n/encoding-overview.xml</slide>
|
||||
<slide>slides/i18nl10n/script-encoding.xml</slide>
|
||||
<slide>slides/i18nl10n/script-encoding-pragma.xml</slide>
|
||||
<slide>slides/i18nl10n/script-encoding-fun1.xml</slide>
|
||||
<slide>slides/i18nl10n/script-encoding-fun2.xml</slide>
|
||||
<slide>slides/i18nl10n/runtime-encoding.xml</slide>
|
||||
<slide>slides/i18nl10n/http-output-encoding.xml</slide>
|
||||
|
||||
<slide>slides/i18nl10n/stream-encoding1.xml</slide>
|
||||
<slide>slides/i18nl10n/stream-encoding2.xml</slide>
|
||||
<slide>slides/i18nl10n/stream-encoding3.xml</slide>
|
||||
|
||||
<slide>slides/i18nl10n/translit1.xml</slide>
|
||||
|
||||
<slide>slides/i18nl10n/fallback-encoding.xml</slide>
|
||||
|
||||
<!-- EXIT -->
|
||||
<slide>slides/i18nl10n/when.xml</slide>
|
||||
<slide>slides/i18nl10n/resources.xml</slide> <!-- resources -->
|
||||
</presentation>
|
||||
15
slides/ezc/example-persistentobject-databaseschema-tiein.xml
Normal file
@@ -0,0 +1,15 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<slide>
|
||||
<title>PersistentObjectDatabaseSchemaTiein</title>
|
||||
|
||||
<blurb>Creating definition files from the database:</blurb>
|
||||
<break/>
|
||||
<example><![CDATA[php pear/ezc/PersistentObjectDatabaseSchemaTiein/rungenerator.php
|
||||
-f mysql
|
||||
-s mysql://root@localhost/workshop
|
||||
data/persistentobject-defs]]></example>
|
||||
<break lines="3"/>
|
||||
|
||||
<blurb>Often the generated definition files should be changed, for example
|
||||
to change class names and/or column names.</blurb>
|
||||
</slide>
|
||||
20
slides/ezc/imageconversion-structure.xml
Normal file
@@ -0,0 +1,20 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<slide fontsize="6em">
|
||||
<title>ImageConversion</title>
|
||||
<subtitle>Ideas</subtitle>
|
||||
|
||||
<list>
|
||||
<bullet>Transformations can be applied to images</bullet>
|
||||
<bullet>Each transformation consists of one or more filters</bullet>
|
||||
</list>
|
||||
|
||||
<break lines="2"/>
|
||||
<blurb>Available filters are:</blurb>
|
||||
<list>
|
||||
<bullet>*ezcImageColorspaceFilters*: colorspace</bullet>
|
||||
<bullet>*ezcImageGeometryFilters*: crop, scale, scaleExact, scaleHeight, scalePercent, scaleWidth</bullet>
|
||||
<bullet>*ezcImageWatermarkFilters*: watermarkAbsolute, watermarkPercent</bullet>
|
||||
<bullet>*ezcImageEffectFilters*: border, noise, swirl</bullet>
|
||||
</list>
|
||||
|
||||
</slide>
|
||||
5
slides/ezc/mail-structure.xml
Normal file
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<slide fontsize="6em">
|
||||
<title>Mail</title>
|
||||
<subtitle>Parsed Mail Structure</subtitle>
|
||||
</slide>
|
||||
@@ -7,10 +7,10 @@
|
||||
|
||||
<blurb>Resources:</blurb>
|
||||
<list>
|
||||
<bullet>*Download*: http://ez.no/download/ez_components</bullet>
|
||||
<bullet>*Download*: http://ez.no/ezcomponents/download</bullet>
|
||||
<bullet>*Documentation*: http://ez.no/doc/components/overview</bullet>
|
||||
<bullet>*Mailinglist*: http://lists.ez.no/mailman/listinfo/components</bullet>
|
||||
<bullet>*Forum*: http://ez.no/community/forum/ez_components</bullet>
|
||||
<bullet>*IRC*: #ezcomponents @ Freenode</bullet>
|
||||
<bullet>*These Slides*: :-:url:-:</bullet>
|
||||
</list>
|
||||
</slide>
|
||||
|
||||
36
slides/ezc/template-custom.xml
Normal file
@@ -0,0 +1,36 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<slide fontsize="6em">
|
||||
<title>Template Syntax</title>
|
||||
<subtitle>Custom Functions</subtitle>
|
||||
|
||||
<blurb>Allows you to extend the template language:</blurb><break/>
|
||||
<example><![CDATA[string_to_time( $message->logtime )]]></example>
|
||||
<break lines="2"/>
|
||||
|
||||
<example><![CDATA[<?php
|
||||
class StringToTimeCall implements ezcTemplateCustomFunction
|
||||
{
|
||||
public static function getCustomFunctionDefinition( $name )
|
||||
{
|
||||
if ( $name == "string_to_time" )
|
||||
{
|
||||
$def = new ezcTemplateCustomFunctionDefinition();
|
||||
$def->class = __CLASS__;
|
||||
$def->method = "strtotime";
|
||||
$def->parameters = array("timestring");
|
||||
return $def;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public static function strtotime( $string )
|
||||
{
|
||||
return strtotime( $string );
|
||||
}
|
||||
}
|
||||
|
||||
$config = ezcTemplateConfiguration::getInstance();
|
||||
$config->addExtension( 'StringToTimeCall' );
|
||||
?>]]></example>
|
||||
|
||||
</slide>
|
||||
20
slides/ezc/template-syntax1.xml
Normal file
@@ -0,0 +1,20 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<slide fontsize="6em">
|
||||
<title>Template Syntax</title>
|
||||
|
||||
<blurb>Variable declaration</blurb>
|
||||
<list type="number">
|
||||
<bullet>%{use $parameter}%</bullet>
|
||||
<bullet>%{var $i, $j}%</bullet>
|
||||
</list>
|
||||
<break lines="2"/>
|
||||
<blurb>Assigments and expressions</blurb>
|
||||
<list>
|
||||
<bullet>Assignments: =, +=, -=, *=, >=, /=, %=</bullet>
|
||||
<bullet>Arithmetic operators: +, -, \*, /, %</bullet>
|
||||
<bullet>Comparison operators: ==, ===, !=, !==, <, >, <=, >=</bullet>
|
||||
<bullet>Logical operators: ||, &&, !</bullet>
|
||||
<bullet>increment, decrement: $v++, $v--, ++$v, --$v</bullet>
|
||||
<bullet>*Note:* Assignments cannot be used inside an expression: %{if $a = 2}%</bullet>
|
||||
</list>
|
||||
</slide>
|
||||
23
slides/ezc/template-syntax2.xml
Normal file
@@ -0,0 +1,23 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<slide fontsize="6em">
|
||||
<title>Template Syntax</title>
|
||||
<subtitle>Extra features</subtitle>
|
||||
|
||||
<blurb>Delimiter:</blurb><break/>
|
||||
<example><![CDATA[{foreach array("one", "two", "three") as $n}
|
||||
{$n}{delimiter}, {/delimiter}
|
||||
{/foreach}]]></example>
|
||||
<break lines="3"/>
|
||||
|
||||
<blurb>Cycle:</blurb><break/>
|
||||
<example><![CDATA[{var $elements = 0..(10 + 2)}
|
||||
{cycle $color = array( "#FF0000", "#00FF00" )}
|
||||
|
||||
<table>
|
||||
{foreach $elements as $el increment $color offset 3 limit 5}
|
||||
<tr style="background-color: {$color}">
|
||||
<td>Number</td><td>{$el}</td>
|
||||
</tr>
|
||||
{/foreach}
|
||||
</table>]]></example>
|
||||
</slide>
|
||||
14
slides/ezc/workshop/assignment-base-repository.xml
Normal file
@@ -0,0 +1,14 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<slide fontsize="6em">
|
||||
<title>Assignment: Class Repository (1/3)</title>
|
||||
<subtitle>~15 minutes</subtitle>
|
||||
|
||||
<blurb>In the directory "%~/include/persistent_classes%" create four files containing classes:</blurb>
|
||||
<list type="number">
|
||||
<bullet>%category.php% containing the class %wpcCategory% with the attributes: |ff0000|$id| and |ff0000|$name|.</bullet>
|
||||
<bullet>%image.php% containing the class %wpcImage% with the attributes: |ff0000|$id|, |ff0000|$messageId|, |ff0000|$category_id|, |ff0000|$description|, |ff0000|$send_time|, |ff0000|$orig_x_size|, |ff0000|$orig_y_size|, |ff0000|$owner_email|, |ff0000|$owner_name| and |ff0000|$shutterspeed|.</bullet>
|
||||
<bullet>%image_file.php% containing the class %wpcImageFile% with the attributes: |ff0000|$id|, |ff0000|$image_id|, |ff0000|$type| and |ff0000|$data|.</bullet>
|
||||
<bullet>%log.php% containing the class %wpcLog% with the attributes: |ff0000|$id|, |ff0000|$logtime|, |ff0000|$src|, |ff0000|$category| and |ff0000|$message|.</bullet>
|
||||
</list>
|
||||
|
||||
</slide>
|
||||
35
slides/ezc/workshop/assignment-base-repository2.xml
Normal file
@@ -0,0 +1,35 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<slide fontsize="6em">
|
||||
<title>Assignment: Class Repository (2/3)</title>
|
||||
<subtitle>~15 minutes</subtitle>
|
||||
|
||||
<blurb>Use the following template for classes:</blurb>
|
||||
<example><![CDATA[<?php
|
||||
class wpcImageFile
|
||||
{
|
||||
private $id = null;
|
||||
public $image_id = null;
|
||||
public $type = null;
|
||||
public $data = null;
|
||||
|
||||
public function getState()
|
||||
{
|
||||
$result = array();
|
||||
$result['id'] = $this->id;
|
||||
$result['image_id'] = $this->image_id;
|
||||
$result['type'] = $this->type;
|
||||
$result['data'] = $this->data;
|
||||
return $result;
|
||||
}
|
||||
|
||||
public function setState( array $properties )
|
||||
{
|
||||
foreach ( $properties as $key => $value )
|
||||
{
|
||||
$this->$key = $value;
|
||||
}
|
||||
}
|
||||
}
|
||||
?> ]]></example>
|
||||
|
||||
</slide>
|
||||
32
slides/ezc/workshop/assignment-base-repository3.xml
Normal file
@@ -0,0 +1,32 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<slide fontsize="6em">
|
||||
<title>Assignment: Class Repository (3/3)</title>
|
||||
<subtitle>~15 minutes</subtitle>
|
||||
|
||||
<blurb>In the directory %~/include/persistent_classes/autoload%, create the following files:</blurb>
|
||||
<break lines="2"/>
|
||||
<blurb>category_autoload.php</blurb>
|
||||
<example><![CDATA[<?php
|
||||
return array(
|
||||
'wpcCategory' => 'category.php',
|
||||
);
|
||||
?>]]></example>
|
||||
|
||||
<break lines="2"/>
|
||||
<blurb>image_autoload.php</blurb>
|
||||
<example><![CDATA[<?php
|
||||
return array(
|
||||
'wpcImage' => 'image.php',
|
||||
'wpcImageFile' => 'image_file.php',
|
||||
);
|
||||
?>]]></example>
|
||||
|
||||
<break lines="2"/>
|
||||
<blurb>log_autoload.php</blurb>
|
||||
<example><![CDATA[<?php
|
||||
return array(
|
||||
'wpcLog' => 'log.php',
|
||||
);
|
||||
?>]]></example>
|
||||
|
||||
</slide>
|
||||
21
slides/ezc/workshop/assignment-base-repository4.xml
Normal file
@@ -0,0 +1,21 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<slide fontsize="6em">
|
||||
<title>Assignment: Persistent Object Definitions (1/3)</title>
|
||||
<subtitle>~15 minutes</subtitle>
|
||||
|
||||
<blurb>Change the include/ezc-setup.php file to include:</blurb>
|
||||
<example><![CDATA[<?php
|
||||
ezcBase::addClassRepository(
|
||||
dirname( __FILE__ ) . '/persistent_classes',
|
||||
null,
|
||||
'wpc'
|
||||
);
|
||||
?>]]></example>
|
||||
<break lines="3"/>
|
||||
|
||||
<blurb>Create the persistent object definition files:</blurb>
|
||||
<example><![CDATA[php pear/ezc/PersistentObjectDatabaseSchemaTiein/rungenerator.php
|
||||
-f mysql
|
||||
-s mysql://root@localhost/workshop
|
||||
data/persistentobject-defs]]></example>
|
||||
</slide>
|
||||
13
slides/ezc/workshop/assignment-base-repository5.xml
Normal file
@@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<slide fontsize="6em">
|
||||
<title>Assignment: Persistent Object Definitions (2/3)</title>
|
||||
<subtitle>~15 minutes</subtitle>
|
||||
|
||||
<blurb>Modify the generated files in %~/data/persistentobject-defs%:</blurb>
|
||||
<list type="number">
|
||||
<bullet>Rename the files to %wpccategory.php%, %wpcimage.php%,
|
||||
%wpcimagefile.php% and %wpclog.php%.</bullet>
|
||||
<bullet>In the files, change %$def->class% to the correct classnames:
|
||||
%wpcImage%, %wpcImageFile%, %wpcCategory% and %wpcLog%.</bullet>
|
||||
</list>
|
||||
</slide>
|
||||
30
slides/ezc/workshop/assignment-base-repository6.xml
Normal file
@@ -0,0 +1,30 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<slide fontsize="6em">
|
||||
<title>Assignment: Persistent Object Definitions (3/3)</title>
|
||||
<subtitle>~15 minutes</subtitle>
|
||||
|
||||
<blurb>Add information about relations to the following files:</blurb>
|
||||
<break lines="2"/>
|
||||
<blurb>~/data/persistentobject-defs/wpccategory.php:</blurb>
|
||||
<example><![CDATA[<?php
|
||||
$def->relations['wpcImage'] = new ezcPersistentOneToManyRelation(
|
||||
"category",
|
||||
"image"
|
||||
);
|
||||
$def->relations['wpcImage']->columnMap = array(
|
||||
new ezcPersistentSingleTableMap( 'id', 'category_id' )
|
||||
);
|
||||
?>]]></example>
|
||||
|
||||
<break lines="2"/>
|
||||
<blurb>~/data/persistentobject-defs/wpcimage.php:</blurb>
|
||||
<example><![CDATA[<?php
|
||||
$def->relations['wpcImageFile'] = new ezcPersistentOneToManyRelation(
|
||||
"image",
|
||||
"image_file"
|
||||
);
|
||||
$def->relations['wpcImageFile']->columnMap = array(
|
||||
new ezcPersistentSingleTableMap( 'id', 'image_id' )
|
||||
);
|
||||
?>]]></example>
|
||||
</slide>
|
||||
20
slides/ezc/workshop/assignment-base.xml
Normal file
@@ -0,0 +1,20 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<slide fontsize="6em">
|
||||
<title>Assignment: Installation</title>
|
||||
<subtitle>~10 minutes</subtitle>
|
||||
|
||||
<blurb>Configure pear as follows:</blurb>
|
||||
<example type="shell">
|
||||
pear config-set php_dir /home/ezc/pear
|
||||
pear config-set data_dir /home/ezc/pear-data
|
||||
pear config-set test_dir /home/ezc/pear-test
|
||||
pear config-set doc_dir /home/ezc/pear-doc
|
||||
pear config-set preferred_state alpha</example>
|
||||
<break lines="3"/>
|
||||
<blurb>Install the components with the PEAR installer.</blurb>
|
||||
<break lines="3"/>
|
||||
<blurb>Create the script "%~/include/ezc-setup.php%" that sets up the
|
||||
components' autoloading mechanism. Set the include path to
|
||||
"%/home/ezc/pear:/home/ezc:.%".</blurb>
|
||||
|
||||
</slide>
|
||||
18
slides/ezc/workshop/assignment-configuration.xml
Normal file
@@ -0,0 +1,18 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<slide fontsize="6em">
|
||||
<title>Assignment: Configuration</title>
|
||||
<subtitle>~15 minutes</subtitle>
|
||||
|
||||
<list>
|
||||
<bullet>Create the file "watermark.ini" in
|
||||
%/home/ezc/data/configuration% with the following contents:</bullet>
|
||||
</list>
|
||||
<example>[size]
|
||||
max_width=900
|
||||
max_height=600</example>
|
||||
<list>
|
||||
<bullet>Extend the %scripts/read-mail.php% script to use the
|
||||
configurable sizes for the watermarked image.</bullet>
|
||||
</list>
|
||||
|
||||
</slide>
|
||||
20
slides/ezc/workshop/assignment-eventlog.xml
Normal file
@@ -0,0 +1,20 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<slide fontsize="6em">
|
||||
<title>Assignment: EventLog</title>
|
||||
<subtitle>~30 minutes</subtitle>
|
||||
|
||||
<list>
|
||||
<bullet>Extend the image-details.php script to log how often an image has been viewed. Use the following writer definition:</bullet>
|
||||
</list>
|
||||
<example><![CDATA[<?php
|
||||
$db = ezcDbFactory::create( 'mysql://root@localhost/workshop' );
|
||||
$writer = new ezcLogDatabaseWriter( $db, "log" );
|
||||
$writer->source = 'src';
|
||||
$writer->datetime = 'logtime';
|
||||
$writer->imageid = 'imageid';
|
||||
?>]]></example>
|
||||
<list>
|
||||
<bullet>Make sure to log the imageid in a custom parameter to the logger.</bullet>
|
||||
</list>
|
||||
|
||||
</slide>
|
||||
11
slides/ezc/workshop/assignment-graph.xml
Normal file
@@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<slide fontsize="6em">
|
||||
<title>Assignment: Graph</title>
|
||||
<subtitle>~30 minutes</subtitle>
|
||||
|
||||
<list>
|
||||
<bullet>View the graph.php to see whether the logging works.</bullet>
|
||||
<bullet>And then start modifying the render options. Maybe there is a price for the best looking graph ;-)</bullet>
|
||||
</list>
|
||||
|
||||
</slide>
|
||||
18
slides/ezc/workshop/assignment-imageconversion.xml
Normal file
@@ -0,0 +1,18 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<slide fontsize="6em">
|
||||
<title>Assignment: ImageAnalysis & ImageConversion</title>
|
||||
<subtitle>~25 minutes</subtitle>
|
||||
|
||||
<blurb>Enhance the shell script to extract the photo's shutterspeed
|
||||
with ImageAnalysis and print the results to standard output as
|
||||
well.</blurb>
|
||||
<break lines="3"/>
|
||||
<blurb>Enhance the script to generate three images from the original image. Those images should be generated to %/tmp%:</blurb>
|
||||
<list type="number">
|
||||
<bullet>A greyscale thumbnail in the size of maximum 50x50: %small_thumb.jpg% (type 1)</bullet>
|
||||
<bullet>A thumbnail in the size of maximum 100x100: %large_thumb.jpg% (type 2)</bullet>
|
||||
<bullet>A resized version (800x600) but added on top a watermark (%logo.png%) in the
|
||||
top-left corner: %watermark.jpg% (type 3)</bullet>
|
||||
</list>
|
||||
|
||||
</slide>
|
||||
21
slides/ezc/workshop/assignment-mail1.xml
Normal file
@@ -0,0 +1,21 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<slide fontsize="6em">
|
||||
<title>Assignment: Mail</title>
|
||||
<subtitle>~20 minutes</subtitle>
|
||||
|
||||
<list>
|
||||
<bullet>Send a mail message with Thunderbird
|
||||
(Applications->Internet->Icedove Mail Client) to
|
||||
ezc@workshop.ez.no.local and attach a JPEG image (you can find them in
|
||||
/home/ezc/data/workshop-images).</bullet>
|
||||
|
||||
<bullet>Press "Get Mail" to check if the mail has been sent correctly.
|
||||
The mail should also stay on the server.</bullet>
|
||||
|
||||
<bullet>Write a small console PHP script "~/scripts/import-mail.php"
|
||||
that reads all mails in the mailbox and writes to standard output:
|
||||
sender name, sender email address, filename of the parser attachment,
|
||||
the body of the first text part and the message ID.</bullet>
|
||||
</list>
|
||||
|
||||
</slide>
|
||||
15
slides/ezc/workshop/assignment-persistent-object1.xml
Normal file
@@ -0,0 +1,15 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<slide fontsize="6em">
|
||||
<title>Assignment: PersistentObject</title>
|
||||
<subtitle>~30 minutes</subtitle>
|
||||
|
||||
<blurb>In the %~/scripts/read-mail.php% script create a function that uses the ezcPersistentSession:</blurb>
|
||||
<list type="number">
|
||||
<bullet>Check if the category (the subject of the mail message) already exists, and store the ID of the category in a variable. (Hint: %$q = $session->createFindQuery();%</bullet>
|
||||
<bullet>If it does not exist, create the category and store the new ID in a variable. (Hint: %$session->save( $cat );%)</bullet>
|
||||
<bullet>Check if the mail/image already has been added to the database. (Hint: Use the messageId property of the wpcImage class)</bullet>
|
||||
<bullet>If the image does not exist, create a new one and store it in the database.</bullet>
|
||||
<bullet>Add the 4 related wpcImageFile objects. Use %$session->addRelatedObject();% to link them to the image object.</bullet>
|
||||
</list>
|
||||
|
||||
</slide>
|
||||
13
slides/ezc/workshop/assignment-template1.xml
Normal file
@@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<slide fontsize="6em">
|
||||
<title>Assignment: Template (1/3)</title>
|
||||
<subtitle>Image overview: ~45 minutes</subtitle>
|
||||
|
||||
<list>
|
||||
<bullet>Create a PHP script "%~/www/index.php%"</bullet>
|
||||
<bullet>Set-up the Template component's templatePath and compilePath to %/home/ezc/data/templates%.</bullet>
|
||||
<bullet>Retrieve all %wpcCategory% objects with ezcPersistentSession, and send the resulting array *and* the session itself to a template called "%index.ezt%".</bullet>
|
||||
<bullet>Create the template %~/data/templates/index.ezt% that lists all the categories as "h2" elements.</bullet>
|
||||
</list>
|
||||
|
||||
</slide>
|
||||
17
slides/ezc/workshop/assignment-template2.xml
Normal file
@@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<slide fontsize="6em">
|
||||
<title>Assignment: Template (2/3)</title>
|
||||
<subtitle>Image overview: ~45 minutes</subtitle>
|
||||
|
||||
<list>
|
||||
<bullet>Include the %include/template_function_call.php% file in the
|
||||
%index.php% script and use the %addExtension()% method of the
|
||||
ezcTemplateConfiguration to add it to the template system.</bullet>
|
||||
<bullet>In the template %index.ezt% use the following code to retrieve all related images for each category:</bullet>
|
||||
</list>
|
||||
<example>{foreach $categories as $category}
|
||||
<h2>{$category->name}</h2>
|
||||
{$categoryImages = call( $session, "getRelatedObjects",
|
||||
array( $category, "wpcImage" ))}</example>
|
||||
|
||||
</slide>
|
||||
16
slides/ezc/workshop/assignment-template3.xml
Normal file
@@ -0,0 +1,16 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<slide fontsize="6em">
|
||||
<title>Assignment: Template (3/3)</title>
|
||||
<subtitle>Image overview: ~45 minutes</subtitle>
|
||||
|
||||
<list>
|
||||
<bullet>Then loop over the %$categoryImages% and display them as:</bullet>
|
||||
</list>
|
||||
<example><![CDATA[<a href='image-details.php?id=42'>
|
||||
<img src='image.php?id=42&type=1'/>
|
||||
</a>]]></example>
|
||||
<list>
|
||||
<bullet>If everything is ready, check the result with Firefox.</bullet>
|
||||
</list>
|
||||
|
||||
</slide>
|
||||
8
slides/ezc/workshop/configuration.xml
Normal file
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<slide fontsize="6em">
|
||||
<title>eZ components workshop</title>
|
||||
|
||||
<break lines="15"/>
|
||||
<blurb class="large_blurb_center">Configuration</blurb>
|
||||
|
||||
</slide>
|
||||
10
slides/ezc/workshop/database.xml
Normal file
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<slide fontsize="6em">
|
||||
<title>eZ components workshop</title>
|
||||
|
||||
<break lines="15"/>
|
||||
<blurb class="large_blurb_center">Database</blurb>
|
||||
<blurb class="large_blurb_center">DatabaseSchema</blurb>
|
||||
<blurb class="large_blurb_center">PerisistentObject</blurb>
|
||||
|
||||
</slide>
|
||||
9
slides/ezc/workshop/eventlog.xml
Normal file
@@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<slide fontsize="6em">
|
||||
<title>eZ components workshop</title>
|
||||
|
||||
<break lines="15"/>
|
||||
<blurb class="large_blurb_center">EventLog</blurb>
|
||||
<blurb class="large_blurb_center">EventLogDatabaseTiein</blurb>
|
||||
|
||||
</slide>
|
||||
8
slides/ezc/workshop/graph.xml
Normal file
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<slide fontsize="6em">
|
||||
<title>eZ components workshop</title>
|
||||
|
||||
<break lines="15"/>
|
||||
<blurb class="large_blurb_center">Graph</blurb>
|
||||
|
||||
</slide>
|
||||
8
slides/ezc/workshop/installing.xml
Normal file
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<slide fontsize="6em">
|
||||
<title>eZ components workshop</title>
|
||||
|
||||
<break lines="15"/>
|
||||
<blurb class="large_blurb_center">Installation</blurb>
|
||||
|
||||
</slide>
|
||||
8
slides/ezc/workshop/introduction.xml
Normal file
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<slide fontsize="6em">
|
||||
<title>eZ components workshop</title>
|
||||
|
||||
<break lines="15"/>
|
||||
<blurb class="large_blurb_center">Introduction</blurb>
|
||||
|
||||
</slide>
|
||||
10
slides/ezc/workshop/mail-image.xml
Normal file
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<slide fontsize="6em">
|
||||
<title>eZ components workshop</title>
|
||||
|
||||
<break lines="15"/>
|
||||
<blurb class="large_blurb_center">Mail</blurb>
|
||||
<blurb class="large_blurb_center">ImageConversion</blurb>
|
||||
<blurb class="large_blurb_center">ImageAnalysis</blurb>
|
||||
|
||||
</slide>
|
||||
17
slides/ezc/workshop/program.xml
Normal file
@@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<slide fontsize="6em">
|
||||
<title>eZ components workshop</title>
|
||||
<subtitle>Program</subtitle>
|
||||
|
||||
<list>
|
||||
<bullet>Introduction (30 mins)</bullet>
|
||||
<bullet>Installing the components (15 mins)</bullet>
|
||||
<bullet>Mail, ImageConversion and ImageAnalysis (1 hour)</bullet>
|
||||
<bullet>Database, DatabaseSchema and PersistentObject (1 hour)</bullet>
|
||||
<bullet>Template (1 hour)</bullet>
|
||||
<bullet>Configuration (30 mins)</bullet>
|
||||
<bullet>EventLog (30 mins)</bullet>
|
||||
<bullet>Graph (1 hour)</bullet>
|
||||
</list>
|
||||
|
||||
</slide>
|
||||
8
slides/ezc/workshop/template.xml
Normal file
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<slide fontsize="6em">
|
||||
<title>eZ components workshop</title>
|
||||
|
||||
<break lines="15"/>
|
||||
<blurb class="large_blurb_center">Template</blurb>
|
||||
|
||||
</slide>
|
||||
@@ -4,7 +4,10 @@
|
||||
<subtitle>Improvements</subtitle>
|
||||
|
||||
<list>
|
||||
<bullet>64 bit timestamps</bullet>
|
||||
<bullet>"Using a (signed) 64-bit value introduces a new wraparound date
|
||||
in about 290 billion years, on Sunday, December 4, 292,277,026,596.
|
||||
However, this problem is not widely regarded as a pressing
|
||||
issue."</bullet>
|
||||
<bullet>~strtotime()~ has been rewritten</bullet>
|
||||
<bullet>Nothing is Operating System dependent</bullet>
|
||||
<bullet>Full support for timezones, DST, date modifications</bullet>
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
|
||||
<list>
|
||||
<bullet>Provide a solid platform for PHP application development</bullet>
|
||||
<bullet>Don't force a structure: no "framework"</bullet>
|
||||
<bullet>Clean and simple API</bullet>
|
||||
<bullet>Excellent documentation</bullet>
|
||||
<bullet>Keep backward compatibility for longer periods of time</bullet>
|
||||
|
||||
@@ -4,7 +4,7 @@ require 'ezc_mail_setup.php';
|
||||
error_reporting(E_ALL);
|
||||
|
||||
$parser = new ezcMailParser();
|
||||
$set = new ezcSingleFileSet( dirname(__FILE__).'/ezcmailtest.mail' );
|
||||
$set = new ezcMailFileSet( array( dirname(__FILE__).'/ezcmailtest.mail' ) );
|
||||
echo "Memory: ", xdebug_memory_usage(), " bytes\n\n";
|
||||
|
||||
$mail = $parser->parseMail( $set );
|
||||
|
||||
@@ -137,43 +137,5 @@ class ezcMailPrettyPrinter
|
||||
|
||||
}
|
||||
|
||||
class ezcSingleFileSet implements ezcMailParserSet
|
||||
{
|
||||
private $fp = null;
|
||||
|
||||
public function __construct( $file )
|
||||
{
|
||||
$fp = fopen( $file, 'r' );
|
||||
if( $fp == false )
|
||||
{
|
||||
throw new Exception( "Could not open file $file for testing." );
|
||||
}
|
||||
$this->fp = $fp;
|
||||
}
|
||||
|
||||
public function getNextLine()
|
||||
{
|
||||
if( feof( $this->fp ) )
|
||||
{
|
||||
if( $this->fp != null )
|
||||
{
|
||||
fclose( $this->fp );
|
||||
$this->fp = null;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
$next = rtrim( fgets( $this->fp ), "\r\n" );
|
||||
if( $next == "" && feof( $this->fp ) ) // eat last linebreak
|
||||
{
|
||||
return null;
|
||||
}
|
||||
return $next;
|
||||
}
|
||||
|
||||
public function nextMail()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
@@ -9,9 +9,9 @@
|
||||
|
||||
<blurb>Without PEAR:</blurb>
|
||||
<list class="numbered">
|
||||
<bullet>wget http://xdebug.org/files/xdebug-2.0.0beta5.tgz</bullet>
|
||||
<bullet>tar -xvzf xdebug-2.0.0beta5.tgz</bullet>
|
||||
<bullet>cd xdebug-2.0.0beta5</bullet>
|
||||
<bullet>wget http://xdebug.org/files/xdebug-2.0.0RC1.tgz</bullet>
|
||||
<bullet>tar -xvzf xdebug-2.0.0RC1.tgz</bullet>
|
||||
<bullet>cd xdebug-2.0.0RC1</bullet>
|
||||
<bullet>phpize</bullet>
|
||||
<bullet>./configure</bullet>
|
||||
<bullet>make</bullet>
|
||||
|
||||
|
Before Width: | Height: | Size: 67 KiB After Width: | Height: | Size: 34 KiB |
|
Before Width: | Height: | Size: 52 KiB After Width: | Height: | Size: 52 KiB |
|
Before Width: | Height: | Size: 39 KiB After Width: | Height: | Size: 44 KiB |
|
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 18 KiB |
@@ -11,5 +11,5 @@
|
||||
xdebug_get_code_coverage();
|
||||
xdebug_stop_code_coverate();</example>
|
||||
<break/>
|
||||
<link target="new" href="http://kossu/coverage/index.htm">demo</link>
|
||||
<link target="new" href="http://kossu/coverage/index.html">demo</link>
|
||||
</slide>
|
||||
|
||||
@@ -4,8 +4,12 @@
|
||||
|
||||
<image filename="var_dump.png" align="center" pdf-scale="0.7"/>
|
||||
<break lines="2"/>
|
||||
<blurb>%&lt;?php%</blurb>
|
||||
<blurb>%xdebug_var_dump(); // or just var_dump()%</blurb>
|
||||
<blurb>%?>%</blurb>
|
||||
<example><![CDATA[<?php
|
||||
ini_set( 'xdebug.var_display_max_data', 25 );
|
||||
ini_set( 'xdebug.var_display_max_depth', 4 );
|
||||
|
||||
xdebug_var_dump(); // or just var_dump()
|
||||
?>]]></example>
|
||||
<break lines="2"/>
|
||||
|
||||
</slide>
|
||||
|
||||
46
xdebug-brasil6.xml
Normal file
@@ -0,0 +1,46 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<presentation
|
||||
template="css"
|
||||
navmode="html"
|
||||
navbarbackground="#4373b4"
|
||||
navbartopiclinks="0"
|
||||
navColor="#f1fbff"
|
||||
logo1=""
|
||||
stylesheet="presentations/slides/perf/ezp.css"
|
||||
backgroundfixed="1" >
|
||||
<topic>Debugging</topic>
|
||||
<title>Xdebug</title>
|
||||
<event>PHP Conference Brasil</event>
|
||||
<location>São Paulo, Brasil</location>
|
||||
<date>Dec 2nd, 2006</date>
|
||||
<speaker>Derick Rethans</speaker>
|
||||
<email>dr@ez.no</email>
|
||||
<url>http://files.derickrethans.nl/xdebug-brasil6.pdf</url>
|
||||
<slide>slides/xdebug/title.xml</slide>
|
||||
|
||||
<!-- INTRODUCTION -->
|
||||
<slide>slides/xdebug/why-debugger1.xml</slide>
|
||||
<slide>slides/xdebug/why-debugger2.xml</slide>
|
||||
<slide>slides/xdebug/why-debugger3.xml</slide>
|
||||
<slide>slides/xdebug/how-to-install.xml</slide>
|
||||
<slide>slides/xdebug/how-to-install2.xml</slide>
|
||||
<slide>slides/xdebug/how-to-install-win.xml</slide>
|
||||
<slide>slides/xdebug/how-to-install3.xml</slide>
|
||||
<slide>slides/xdebug/why-crash.xml</slide> <!-- max nesting, function trace -->
|
||||
<slide>slides/xdebug/where-error.xml</slide>
|
||||
<slide>slides/xdebug/debug-req-vars.xml</slide>
|
||||
<slide>slides/xdebug/xdebug-var-dump.xml</slide>
|
||||
<slide>slides/xdebug/how-many-functions.xml</slide>
|
||||
<slide>slides/xdebug/how-much-time.xml</slide>
|
||||
<slide>slides/xdebug/how-much-memory.xml</slide>
|
||||
<slide>slides/xdebug/wtf-happens.xml</slide>
|
||||
<slide>slides/xdebug/live-demo.xml</slide>
|
||||
<slide>slides/xdebug/which-code-do-i-use.xml</slide>
|
||||
<slide>slides/xdebug/profiling.xml</slide>
|
||||
<slide>slides/xdebug/profiling2.xml</slide>
|
||||
<slide>slides/xdebug/live-demo.xml</slide>
|
||||
<slide>slides/xdebug/analyse-running-script.xml</slide>
|
||||
<slide>slides/xdebug/live-demo.xml</slide>
|
||||
<slide>slides/xdebug/resources.xml</slide>
|
||||
|
||||
</presentation>
|
||||