SlideShare ist ein Scribd-Unternehmen logo
1 von 93
Downloaden Sie, um offline zu lesen
Wrestling with
ASP.NET and Web
   Standards
    Anthony Williams




              Image: c http://www.flickr.com/photos/kenmccown/220565863
Hello!
         Image: c Me
Work for a Car Dealer
       Group
                Image: © Listers Group. Used with permission.
IW
       ork
             He
               re




Work for a Car Dealer
       Group
                    Image: © Listers Group. Used with permission.
NOT a used car salesman



         Image: © http://www.bbc.co.uk/comedy/fastshow/wallpaper/images/swiss_1024.jpg
Windows
    IIS
SQL Server
 ASP.NET
             Image: © Microsoft
ASP ≠ ASP.NET


       Image: c http://www.flickr.com/photos/planettelex/826864344
Web Standards
      +
  ASP.NET

       Image: c http://www.flickr.com/photos/wheatfields/515063339
Before we start...


         Image: c http://www.flickr.com/photos/paix_et_amour/2398468615
★ .NET   3.5
★ C#
★ XHTML    1.0 Transitional

               Image: c http://www.flickr.com/photos/paix_et_amour/2398468615
1

    Out of the box


            Image: c http://www.flickr.com/photos/z287marc/3189567558
<%@ Page Language="C#" AutoEventWireup="true"
    CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "‐//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/
xhtml1‐transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    
    </div>
    </form>
</body>
</html>
<!DOCTYPE html PUBLIC "‐//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/
xhtml1‐transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>

</title></head>
<body>
    <form name="form1" method="post" action="Default.aspx" id="form1">
<div>
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/
wEPDwULLTE2MTY2ODcyMjlkZCHkJbOA8HXUlbSk8AyRMGmtOpja" />
</div>
    <div>
    
    </div>
    </form>
</body>
</html>
<!DOCTYPE html PUBLIC "‐//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/
xhtml1‐transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>

</title></head>
<body>
    <form name="form1" method="post" action="Default.aspx" id="form1">
<div>
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/
wEPDwULLTE2MTY2ODcyMjlkZCHkJbOA8HXUlbSk8AyRMGmtOpja" />
</div>
    <div>
    
    </div>
    </form>
</body>
</html>
XHTML
Conformance

      Image: c http://www.flickr.com/photos/mikahiironniemi/76988191
<system.web>
      <XhtmlConformance mode="Transitional" />
</system.web>
<system.web>
      <XhtmlConformance mode="Strict" />
                        mode="Strict"
</system.web>
<system.web>
      <XhtmlConformance mode="Strict" />
</system.web>
<%@ Page Language="C#" AutoEventWireup="true"
    CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "‐//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1‐
<!DOCTYPE html PUBLIC "‐//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/
strict.dtd">
xhtml1‐transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    
    </div>
    </form>
</body>
</html>
<%@ Page Language="C#" AutoEventWireup="true"
    CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "‐//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1‐
strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    
    </div>
    </form>
</body>
</html>
<!DOCTYPE html PUBLIC "‐//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1‐
strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>

</title></head>
<body>
    <form name="form1" method="post" action="Default.aspx" id="form1">
<div>
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/
wEPDwULLTE2MTY2ODcyMjlkZCHkJbOA8HXUlbSk8AyRMGmtOpja" />
</div>
    <div>
    
    </div>
    </form>
</body>
</html>
<!DOCTYPE html PUBLIC "‐//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1‐
strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>

</title></head>
<body>
                           Won’t Validate
    <form name="form1" method="post" action="Default.aspx" id="form1">
<div>
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/
wEPDwULLTE2MTY2ODcyMjlkZCHkJbOA8HXUlbSk8AyRMGmtOpja" />
</div>
    <div>
    
    </div>
    </form>
</body>
</html>
<!DOCTYPE html PUBLIC "‐//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1‐
strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>

</title></head>
<body>
    <form method="post" action="Default.aspx" id="form1">
<div>
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/
wEPDwULLTE2MTY2ODcyMjlkZCHkJbOA8HXUlbSk8AyRMGmtOpja" />
</div>
    <div>
    
    </div>
    </form>
</body>
</html>
<system.web>
      <XhtmlConformance mode="Legacy" />
                        mode="Legacy"
</system.web>
<system.web>
      <XhtmlConformance mode="Legacy" />
</system.web>
2

<asp:repeater />

         Image: c http://www.flickr.com/photos/beatxm/2535486395
<asp:repeater id="rptNavigationLinks" runat="server">
    <headertemplate>
        <ul id="MainNavigation">
    </headertemplate>
    <itemtemplate>
            <li <%# Eval("Link", "class="{0}"") %>>
                <a href="<%# Eval("LinkUrl") %>"><% Eval("LinkTitle") %></a>
            </li>
    </itemtemplate>
    <footertemplate>
        </ul>
    </footertemplate>
</asp:repeater>
<ul id="MainNavigation">
    <li class="Home">
        <a href="/">Home</a>
    </li>
    <li>
        <a href="/New">New Cars</a>
    </li>
    <li>
        <a href="/Used">Used Cars</a>
    </li>
    <li>
        <a href="/Jobs">Jobs</a>
    </li>
    <li>
        <a href="/About">About Us</a>
    </li>
</ul>
<asp:repeater id="rptNavigationLinks" runat="server">
    <headertemplate>
        <table id="DataTable">
            <thead>
                <tr>
                    <th> ... </th>
                    <th> ... </th>
                </tr>
            </thead>
            <tbody>
    </headertemplate>
    <itemtemplate>
                <tr>
                    <td> ... </td>
                    <td> ... </td>
                </tr>
    </itemtemplate>
    <footertemplate>
            </tbody>
        </table>
    </footertemplate>
</asp:repeater>
<table id="DataTable">
    <thead>
        <tr>
            <th>Letter</th>
            <th>Phonetic</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>A</td>
            <td>Alpha</td>
        </tr>
        <tr>
            <td>B</td>
            <td>Bravo</td>
        </tr>
        <tr>
            <td>C</td>
            <td>Charlie</td>
        </tr>
    </tbody>
</table>
3

    runat="server"

          Image: http://users.upwardaccess.com/plong/images/btvserver_treadmill.jpg
visible="false"


        Image: c http://www.flickr.com/photos/antonystanley/3093398360
Image: c http://www.flickr.com/photos/antonystanley/3093398360
Image: c http://www.flickr.com/photos/antonystanley/3093398360
Image: c http://www.flickr.com/photos/antonystanley/3093398360
Image: c http://www.flickr.com/photos/antonystanley/3093398360
Image: c http://www.flickr.com/photos/antonystanley/3093398360
Image: c http://www.flickr.com/photos/antonystanley/3093398360
Image: c http://www.flickr.com/photos/antonystanley/3093398360
4

    Blank Alt Text

            Image: c http://www.flickr.com/photos/wolfsoul/1368661325
<asp:image runat="server" id="Image1"
           imageurl="~/accept.png" />
<img id="Image1" src="accept.png"
      style="border‐width:0px;" />
<img id="Image1" src="accept.png"
      style="border‐width:0px;" />
      style="border‐width:0px;"
<img id="Image1" src="accept.png"
      style="border‐width:0px;" />
<asp:image runat="server" id="Image1"
      imageurl="~/accept.png"
      alternatetext="" />
<img id="Image1" src="accept.png"
      style="border‐width:0px;" />
                                alt="" />
<img id="Image1" src="accept.png"
      style="border‐width:0px;" />
<asp:image runat="server" id="Image1"
      imageurl="~/accept.png"
      alternatetext=""
      generateemptyalternatetext="true" />
<asp:image runat="server" id="Image1"
      imageurl="~/accept.png"
      alternatetext=""
      generateemptyalternatetext="true" />
      generateemptyalternatetext="true"
<asp:image runat="server" id="Image1"
      imageurl="~/accept.png"
      alternatetext=""
      generateemptyalternatetext="true" />
<img id="Image1" src="accept.png"
      style="border‐width:0px;" alt="" />
                                alt="" />
<img id="Image1" src="accept.png"
      style="border‐width:0px;" alt="" />
<img id="Image1" src="accept.png" alt=""
     runat="server" />
<!‐‐ Original HTML ‐‐>
<img id="Image1" src="accept.png" />
<!‐‐ Original HTML ‐‐>
<img id="Image1" src="accept.png" />

// Add this to your code‐behind (C#)
Image1.Attributes.Add("alt", "");
<!‐‐ Original HTML ‐‐>
<img id="Image1" src="accept.png" />

// Add this to your code‐behind (C#)
Image1.Attributes.Add("alt", "");

<!‐‐ HTML after additional code‐behind ‐‐>
<img id="Image1" src="accept.png" alt="" />
// You’ll need .NET 3.0 (but seriously, use 3.5) for this to work, as well as needing to import
// (using) the System.Linq and System.Collections.Generic namespaces in all code files that use this. 

// Put the ControlHelper class somewhere in your solution ‐ not necessarily your page:
public static class ControlHelper
{
      public static IEnumerable<Control> AllControls(this ControlCollection Controls)
      {
            foreach (Control CurrentControl in Controls)
            {
                  foreach(var ChildControls in CurrentControl.Controls.AllControls())
                  {
                        yield return ChildControls;
                  }
                  yield return CurrentControl;
            }
      }
}

// Then run this code in your pages that have img elements with runat="server" attributes:
IEnumerable<HtmlImage> ImageControls = 
      Page.Controls
          .AllControls()
          .OfType<HtmlImage>()
          .Where(r => r.Attributes["alt"] == null);

foreach (HtmlImage ImageControl in ImageControls) ImageControl.Attributes.Add("alt", "");
5

    Dealing with
    Submissions

           Image: c http://www.flickr.com/photos/barnett/2836828090
Content Editors


         Image: c http://www.flickr.com/photos/kristiand/3223920178
Sanitise user input


           Image: c http://www.flickr.com/photos/herrolm/2699835587
Sanitise user input
                c http://xkcd.com/327/




           Image: c http://www.flickr.com/photos/herrolm/2699835587
Image: c http://www.flickr.com/photos/herrolm/2699835587
Image: c http://www.flickr.com/photos/herrolm/2699835587
Exception Details: System.Web.HttpRequestValidationException




                                   Image: c http://www.flickr.com/photos/herrolm/2699835587
!"#$%&'($)&*+,&-(.(/0(1-234&*1(3$"5




                       Image: c http://www.flickr.com/photos/herrolm/2699835587
!"#$%&'($)&*+,&-(.(/0(1-234&*1(3$"5




                       Image: c http://www.flickr.com/photos/herrolm/2699835587
!"#"$%&'(%)*
++++++!,-.%"+/-012-$%3%45%"$678-0"%7+9*
!9"#"$%&'(%)*




                       Image: c http://www.flickr.com/photos/herrolm/2699835587
Image: c http://www.flickr.com/photos/herrolm/2699835587
Server.HtmlEncode




          Image: c http://www.flickr.com/photos/herrolm/2699835587
Server.HtmlEncode
  String.Replace()


           Image: c http://www.flickr.com/photos/herrolm/2699835587
Server.HtmlEncode
  String.Replace()
Regular Expressions

           Image: c http://www.flickr.com/photos/herrolm/2699835587
<h1>I can&rsquo;t be bothered</h1>
<p>I&rsquo;ve had enough. Balls to this.</p>
<p>Time to play havoc with the website:</p>
<style>
    * {
        display: none !important;
    }
</style>
<p>Have fun!</p>
<script type="text/javascript">
    alert("I wonder what's happened to the website? Tee‐hee.");
</script>
<((script|style|iframe|object|embed)b[^>]*)>(.*?)</2>
(script|style|iframe|object|embed)
<((script|style|iframe|object|embed)b[^>]*)>(.*?)</2>
// Create a string loaded with our HTML
String InputHtml = " ... ";

// Create a new regular expression, and make sure you treat the 
// entire input as a single line, so that you match n in your
// dot (.) matches.
Regex re = new Regex(
      @"<((script|style|iframe|object|embed)b[^>]*)>(.*?)</2>", 
      RegexOptions.Singleline
);

// Create a new string which replaces any instance of ‘naughty’
// code with a blank string.
String OutputHtml = re.Replace(InputHtml, String.Empty);
<h1>I can&rsquo;t be bothered</h1>
<p>I&rsquo;ve had enough. Balls to this.</p>
<p>Time to play havoc with the website:</p>

<p>Have fun!</p>
Validating (X)HTML


        Image: http://www.aharef.info/static/htmlgraph/?url=http://listersgroup.co.uk
Ampersands


      Image: c http://www.flickr.com/photos/mattwright/237415989
Render it Yourself


          Image: c http://www.flickr.com/photos/brullonulla/2971684462
&(?!(?:[a‐zA‐Z][a‐zA‐Z0‐9]*|#d+);)(?!(?>(?:(?!<![CDATA[|]]>).)*)]]>)
public override void Render(HtmlTextWriter writer)
{
    using (HtmlTextWriter HtmlWriter = new HtmlTextWriter(new System.IO.StringWriter()))
    {
        base.Render(HtmlWriter);
        string Html = HtmlWriter.InnerWriter.ToString();

        // Create the regular expression to find the un‐encoded ampersands...
        Regex re = new Regex(
            @"&(?!(?:[a‐zA‐Z][a‐zA‐Z0‐9]*|#d+);)(?!(?>(?:(?!<![CDATA[|]]>).)*)]]>)",
            RegexOptions.Multiline | RegexOptions.IgnoreCase
        );

        // Use it to replace them with encoded ampersands (&amp;)
        Html = re.Replace("&amp;");

        // Send the HTML to the browser
        HtmlWriter.Write(Html);
    }
}
public override void Render(HtmlTextWriter writer)
{
    using (HtmlTextWriter HtmlWriter = new HtmlTextWriter(new System.IO.StringWriter()))
    {
        base.Render(HtmlWriter);
        string Html = HtmlWriter.InnerWriter.ToString();

        // Create the regular expression to find the un‐encoded ampersands...
        Regex re = new Regex(
            @"&(?!(?:[a‐zA‐Z][a‐zA‐Z0‐9]*|#d+);)(?!(?>(?:(?!<![CDATA[|]]>).)*)]]>)",
            RegexOptions.Multiline | RegexOptions.IgnoreCase
        );

        // Use it to replace them with encoded ampersands (&amp;)
        Html = re.Replace("&amp;");

        // Send the HTML to the browser
        HtmlWriter.Write(Html);
    }
}
<p>Some HTML that will include some encoded ampersands &amp; like 
that one, some double encoded ampersands like this one &amp;amp; 
and some unencoded ampersands, like this one & and this one &. 
Unfortunately& this &ampersand here could actually mean something 
else.</p>

<script type="text/javascript">
    // <![CDATA[
        if (a && b) doSomething("a & b &amp; c");
    // ]]>
</script>
<p>Some HTML that will include some encoded ampersands &amp; like 
that one, some double encoded ampersands like this one &amp;amp; 
and some unencoded ampersands, like this one &amp; and this one 
&amp;. Unfortunately&amp; this &amp;ampersand here could actually 
mean something else.</p>

<script type="text/javascript">
    // <![CDATA[
        if (a && b) doSomething("a & b &amp; c");
    // ]]>
</script>
public override void Render(HtmlTextWriter writer)
{
    using (HtmlTextWriter HtmlWriter = new HtmlTextWriter(new System.IO.StringWriter()))
    {
        base.Render(HtmlWriter);
        string Html = HtmlWriter.InnerWriter.ToString();

        // Create the regular expression to find the un‐encoded ampersands...
        Regex re = new Regex(
            @"&(?!(?:[a‐zA‐Z][a‐zA‐Z0‐9]*|#d+);)(?!(?>(?:(?!<![CDATA[|]]>).)*)]]>)",
            RegexOptions.Multiline | RegexOptions.IgnoreCase
        );

        // Use it to replace them with encoded ampersands (&amp;)
        Html = re.Replace("&amp;");

        // Send the HTML to the browser
        HtmlWriter.Write(Html);
    }
}
public override void Render(HtmlTextWriter writer)
{
    using (HtmlTextWriter HtmlWriter = new HtmlTextWriter(new System.IO.StringWriter()))
    {
        base.Render(HtmlWriter);
        string Html = HtmlWriter.InnerWriter.ToString();

        // Create the regular expression to find the un‐encoded ampersands...
        Regex re = new Regex(
            @"&(?!(?:[a‐zA‐Z][a‐zA‐Z0‐9]*|#d+);)(?!(?>(?:(?!<![CDATA[|]]>).)*)]]>)",
            RegexOptions.Multiline | RegexOptions.IgnoreCase
        );

        // Use it to replace them with encoded ampersands (&amp;)
        Html = re.Replace("&amp;");

        // Send the HTML to the browser
        HtmlWriter.Write(Html);
    }
}
★   Standards out of the box
★   Use the repeater control
★   Use HTML controls (runat=”server”)
★   Fix ASP.NET’s handling of alt=””
★   Be careful with user submissions


                        Image: c http://www.flickr.com/photos/runneralan/3091055611
Questions?
     Image: c http://www.flickr.com/photos/seandreilinger/2326448445
Slides:
http://slideshare.net/
       abitgone


                 Image: c http://www.flickr.com/photos/videocrab/116136642
Videos:
vimeo.com/channels/
  multipackpresents


               Image: c http://www.flickr.com/photos/videocrab/116136642
Thank you!
          Twitter:
        @abitgone
            Web:
      abitgone.co.uk
        Email/Jabber:
  anthony@abitgone.co.uk

Weitere ähnliche Inhalte

Was ist angesagt?

Dreamweaver CS6, jQuery, PhoneGap, mobile design
Dreamweaver CS6, jQuery, PhoneGap, mobile designDreamweaver CS6, jQuery, PhoneGap, mobile design
Dreamweaver CS6, jQuery, PhoneGap, mobile designDee Sadler
 
The web is too slow
The web is too slow The web is too slow
The web is too slow Andy Davies
 
@media - Even Faster Web Sites
@media - Even Faster Web Sites@media - Even Faster Web Sites
@media - Even Faster Web SitesSteve Souders
 
Making Mobile Sites Faster
Making Mobile Sites FasterMaking Mobile Sites Faster
Making Mobile Sites FasterAndy Davies
 
The Case for HTTP/2 - GreeceJS - June 2016
The Case for HTTP/2 -  GreeceJS - June 2016The Case for HTTP/2 -  GreeceJS - June 2016
The Case for HTTP/2 - GreeceJS - June 2016Andy Davies
 
Joomla! Frappe - Κατασκευή εφαρμογών για το Joomla! χωρίς να τραβάτε τα μαλιά...
Joomla! Frappe - Κατασκευή εφαρμογών για το Joomla! χωρίς να τραβάτε τα μαλιά...Joomla! Frappe - Κατασκευή εφαρμογών για το Joomla! χωρίς να τραβάτε τα μαλιά...
Joomla! Frappe - Κατασκευή εφαρμογών για το Joomla! χωρίς να τραβάτε τα μαλιά...Nicholas Dionysopoulos
 
WordPress Standardized Loop API
WordPress Standardized Loop APIWordPress Standardized Loop API
WordPress Standardized Loop APIChris Jean
 
Mobile Web Performance - Getting and Staying Fast
Mobile Web Performance -  Getting and Staying FastMobile Web Performance -  Getting and Staying Fast
Mobile Web Performance - Getting and Staying FastAndy Davies
 
Jason Wilson Final PPP slide show
Jason Wilson Final PPP slide showJason Wilson Final PPP slide show
Jason Wilson Final PPP slide showniigansejason
 
Tim Hill 4.4 PPP Presentation
Tim Hill 4.4 PPP PresentationTim Hill 4.4 PPP Presentation
Tim Hill 4.4 PPP Presentationtimothyghill
 
Building an Appier Web - Velocity Amsterdam 2016
Building an Appier Web - Velocity Amsterdam 2016Building an Appier Web - Velocity Amsterdam 2016
Building an Appier Web - Velocity Amsterdam 2016Andy Davies
 
Souders WPO Web2.0Expo
Souders WPO Web2.0ExpoSouders WPO Web2.0Expo
Souders WPO Web2.0Expoguest0b3d92d
 
Responsive Design Tools & Resources
Responsive Design Tools & ResourcesResponsive Design Tools & Resources
Responsive Design Tools & ResourcesClarissa Peterson
 
Don't sh** in the Pool
Don't sh** in the PoolDon't sh** in the Pool
Don't sh** in the PoolChris Jean
 
Building iPad apps with Flex - 360Flex
Building iPad apps with Flex - 360FlexBuilding iPad apps with Flex - 360Flex
Building iPad apps with Flex - 360Flexdanielwanja
 
Tanner Floyd PPP Final Slides
Tanner Floyd PPP Final SlidesTanner Floyd PPP Final Slides
Tanner Floyd PPP Final SlidesTannerFloyd
 
Augmented Reality (AR) - The Future of Mobile Applications?
Augmented Reality (AR) - The Future of Mobile Applications? Augmented Reality (AR) - The Future of Mobile Applications?
Augmented Reality (AR) - The Future of Mobile Applications? Carin Campanario
 

Was ist angesagt? (19)

Dreamweaver CS6, jQuery, PhoneGap, mobile design
Dreamweaver CS6, jQuery, PhoneGap, mobile designDreamweaver CS6, jQuery, PhoneGap, mobile design
Dreamweaver CS6, jQuery, PhoneGap, mobile design
 
The web is too slow
The web is too slow The web is too slow
The web is too slow
 
Technical Introduction to YDN
Technical Introduction to YDNTechnical Introduction to YDN
Technical Introduction to YDN
 
@media - Even Faster Web Sites
@media - Even Faster Web Sites@media - Even Faster Web Sites
@media - Even Faster Web Sites
 
Making Mobile Sites Faster
Making Mobile Sites FasterMaking Mobile Sites Faster
Making Mobile Sites Faster
 
The Case for HTTP/2 - GreeceJS - June 2016
The Case for HTTP/2 -  GreeceJS - June 2016The Case for HTTP/2 -  GreeceJS - June 2016
The Case for HTTP/2 - GreeceJS - June 2016
 
Joomla! Frappe - Κατασκευή εφαρμογών για το Joomla! χωρίς να τραβάτε τα μαλιά...
Joomla! Frappe - Κατασκευή εφαρμογών για το Joomla! χωρίς να τραβάτε τα μαλιά...Joomla! Frappe - Κατασκευή εφαρμογών για το Joomla! χωρίς να τραβάτε τα μαλιά...
Joomla! Frappe - Κατασκευή εφαρμογών για το Joomla! χωρίς να τραβάτε τα μαλιά...
 
WordPress Standardized Loop API
WordPress Standardized Loop APIWordPress Standardized Loop API
WordPress Standardized Loop API
 
Mobile Web Performance - Getting and Staying Fast
Mobile Web Performance -  Getting and Staying FastMobile Web Performance -  Getting and Staying Fast
Mobile Web Performance - Getting and Staying Fast
 
Jason Wilson Final PPP slide show
Jason Wilson Final PPP slide showJason Wilson Final PPP slide show
Jason Wilson Final PPP slide show
 
Tim Hill 4.4 PPP Presentation
Tim Hill 4.4 PPP PresentationTim Hill 4.4 PPP Presentation
Tim Hill 4.4 PPP Presentation
 
Building an Appier Web - Velocity Amsterdam 2016
Building an Appier Web - Velocity Amsterdam 2016Building an Appier Web - Velocity Amsterdam 2016
Building an Appier Web - Velocity Amsterdam 2016
 
Souders WPO Web2.0Expo
Souders WPO Web2.0ExpoSouders WPO Web2.0Expo
Souders WPO Web2.0Expo
 
Responsive Design Tools & Resources
Responsive Design Tools & ResourcesResponsive Design Tools & Resources
Responsive Design Tools & Resources
 
Don't sh** in the Pool
Don't sh** in the PoolDon't sh** in the Pool
Don't sh** in the Pool
 
Building iPad apps with Flex - 360Flex
Building iPad apps with Flex - 360FlexBuilding iPad apps with Flex - 360Flex
Building iPad apps with Flex - 360Flex
 
Tanner Floyd PPP Final Slides
Tanner Floyd PPP Final SlidesTanner Floyd PPP Final Slides
Tanner Floyd PPP Final Slides
 
Responsive Design Workshop
Responsive Design WorkshopResponsive Design Workshop
Responsive Design Workshop
 
Augmented Reality (AR) - The Future of Mobile Applications?
Augmented Reality (AR) - The Future of Mobile Applications? Augmented Reality (AR) - The Future of Mobile Applications?
Augmented Reality (AR) - The Future of Mobile Applications?
 

Andere mochten auch

TRAZUR TRANSFIERE CONOCIMIENTO Y EXPERIENCIA EN TRAZABILIDAD ANIMAL
TRAZUR TRANSFIERE CONOCIMIENTO Y EXPERIENCIA EN TRAZABILIDAD ANIMALTRAZUR TRANSFIERE CONOCIMIENTO Y EXPERIENCIA EN TRAZABILIDAD ANIMAL
TRAZUR TRANSFIERE CONOCIMIENTO Y EXPERIENCIA EN TRAZABILIDAD ANIMALHugo Estavillo
 
Centro de investigación y estudios superiores en estomatología
Centro de investigación y estudios superiores en estomatologíaCentro de investigación y estudios superiores en estomatología
Centro de investigación y estudios superiores en estomatología1tze
 
Adhesivos..Dolly
Adhesivos..DollyAdhesivos..Dolly
Adhesivos..Dollypatico0111
 
Making Life Easier for Investigators: A Shared Solution for Smarter, Faster C...
Making Life Easier for Investigators: A Shared Solution for Smarter, Faster C...Making Life Easier for Investigators: A Shared Solution for Smarter, Faster C...
Making Life Easier for Investigators: A Shared Solution for Smarter, Faster C...Cognizant
 
Tarea colaborativa
Tarea colaborativaTarea colaborativa
Tarea colaborativaimperium1978
 
Analisis imprimir1
Analisis imprimir1Analisis imprimir1
Analisis imprimir1Rosmery Banr
 
Categorizacion bovina
Categorizacion bovina Categorizacion bovina
Categorizacion bovina Juan Ospina
 
Question2 evaluation
Question2 evaluationQuestion2 evaluation
Question2 evaluationHuong Le
 
Teorías del curriculum clase
Teorías del curriculum claseTeorías del curriculum clase
Teorías del curriculum clasecrisenith
 
Azure Overview Capgemini
Azure Overview CapgeminiAzure Overview Capgemini
Azure Overview Capgeminibramveen
 
Klm airfrance horario_verao_2014_consolidador
Klm airfrance horario_verao_2014_consolidadorKlm airfrance horario_verao_2014_consolidador
Klm airfrance horario_verao_2014_consolidadorConsolidador Aéreo
 
Muestreo decuencial
Muestreo decuencialMuestreo decuencial
Muestreo decuencialAna Sandoval
 
ITSM herramienta estrategica de ayuda al negocio
ITSM herramienta estrategica de ayuda al negocioITSM herramienta estrategica de ayuda al negocio
ITSM herramienta estrategica de ayuda al negocioDiego García
 
Presentació5
Presentació5Presentació5
Presentació5Noeb
 
No sólo de ERES de extinción de contratos vive (y trabaja) la Audiencia Nacio...
No sólo de ERES de extinción de contratos vive (y trabaja) la Audiencia Nacio...No sólo de ERES de extinción de contratos vive (y trabaja) la Audiencia Nacio...
No sólo de ERES de extinción de contratos vive (y trabaja) la Audiencia Nacio...Universidad Autónoma de Barcelona
 

Andere mochten auch (20)

TRAZUR TRANSFIERE CONOCIMIENTO Y EXPERIENCIA EN TRAZABILIDAD ANIMAL
TRAZUR TRANSFIERE CONOCIMIENTO Y EXPERIENCIA EN TRAZABILIDAD ANIMALTRAZUR TRANSFIERE CONOCIMIENTO Y EXPERIENCIA EN TRAZABILIDAD ANIMAL
TRAZUR TRANSFIERE CONOCIMIENTO Y EXPERIENCIA EN TRAZABILIDAD ANIMAL
 
Centro de investigación y estudios superiores en estomatología
Centro de investigación y estudios superiores en estomatologíaCentro de investigación y estudios superiores en estomatología
Centro de investigación y estudios superiores en estomatología
 
Celovito razmišljanje za celovito poročanje: kako lahko komunikatorji prispev...
Celovito razmišljanje za celovito poročanje: kako lahko komunikatorji prispev...Celovito razmišljanje za celovito poročanje: kako lahko komunikatorji prispev...
Celovito razmišljanje za celovito poročanje: kako lahko komunikatorji prispev...
 
Adhesivos..Dolly
Adhesivos..DollyAdhesivos..Dolly
Adhesivos..Dolly
 
Antnio lira
Antnio liraAntnio lira
Antnio lira
 
Making Life Easier for Investigators: A Shared Solution for Smarter, Faster C...
Making Life Easier for Investigators: A Shared Solution for Smarter, Faster C...Making Life Easier for Investigators: A Shared Solution for Smarter, Faster C...
Making Life Easier for Investigators: A Shared Solution for Smarter, Faster C...
 
Tarea colaborativa
Tarea colaborativaTarea colaborativa
Tarea colaborativa
 
Analisis imprimir1
Analisis imprimir1Analisis imprimir1
Analisis imprimir1
 
Mesas 2013 tt
Mesas 2013 ttMesas 2013 tt
Mesas 2013 tt
 
Categorizacion bovina
Categorizacion bovina Categorizacion bovina
Categorizacion bovina
 
Question2 evaluation
Question2 evaluationQuestion2 evaluation
Question2 evaluation
 
5
55
5
 
Teorías del curriculum clase
Teorías del curriculum claseTeorías del curriculum clase
Teorías del curriculum clase
 
Azure Overview Capgemini
Azure Overview CapgeminiAzure Overview Capgemini
Azure Overview Capgemini
 
Klm airfrance horario_verao_2014_consolidador
Klm airfrance horario_verao_2014_consolidadorKlm airfrance horario_verao_2014_consolidador
Klm airfrance horario_verao_2014_consolidador
 
ETERNIDADE
ETERNIDADEETERNIDADE
ETERNIDADE
 
Muestreo decuencial
Muestreo decuencialMuestreo decuencial
Muestreo decuencial
 
ITSM herramienta estrategica de ayuda al negocio
ITSM herramienta estrategica de ayuda al negocioITSM herramienta estrategica de ayuda al negocio
ITSM herramienta estrategica de ayuda al negocio
 
Presentació5
Presentació5Presentació5
Presentació5
 
No sólo de ERES de extinción de contratos vive (y trabaja) la Audiencia Nacio...
No sólo de ERES de extinción de contratos vive (y trabaja) la Audiencia Nacio...No sólo de ERES de extinción de contratos vive (y trabaja) la Audiencia Nacio...
No sólo de ERES de extinción de contratos vive (y trabaja) la Audiencia Nacio...
 

Ähnlich wie The Multipack Presents: "Wrestling With Asp.Net And Web Standards" by Anthony Williams

Widget Summit 2008
Widget Summit 2008Widget Summit 2008
Widget Summit 2008Volkan Unsal
 
Http/2 - What's it all about?
Http/2  - What's it all about?Http/2  - What's it all about?
Http/2 - What's it all about?Andy Davies
 
Website performance optimisation
Website performance optimisationWebsite performance optimisation
Website performance optimisationWebstock
 
웹을 지탱하는 차세대 기술 @한국웹20주년 컨퍼런스
웹을 지탱하는 차세대 기술 @한국웹20주년 컨퍼런스웹을 지탱하는 차세대 기술 @한국웹20주년 컨퍼런스
웹을 지탱하는 차세대 기술 @한국웹20주년 컨퍼런스민태 김
 
HTML5: Markup Evolved
HTML5: Markup EvolvedHTML5: Markup Evolved
HTML5: Markup EvolvedBilly Hylton
 
[refreshpitt] Adaptive Images in Responsive Web Design
[refreshpitt] Adaptive Images in Responsive Web Design[refreshpitt] Adaptive Images in Responsive Web Design
[refreshpitt] Adaptive Images in Responsive Web DesignChristopher Schmitt
 
[HEWEBAR 2012] Adaptive Images in Responsive Web Design
[HEWEBAR 2012] Adaptive Images in Responsive Web Design[HEWEBAR 2012] Adaptive Images in Responsive Web Design
[HEWEBAR 2012] Adaptive Images in Responsive Web DesignChristopher Schmitt
 
[drupalcampatx] Adaptive Images in Responsive Web Design
[drupalcampatx] Adaptive Images in Responsive Web Design[drupalcampatx] Adaptive Images in Responsive Web Design
[drupalcampatx] Adaptive Images in Responsive Web DesignChristopher Schmitt
 
[wcatx] Adaptive Images in Responsive Web Design
[wcatx] Adaptive Images in Responsive Web Design[wcatx] Adaptive Images in Responsive Web Design
[wcatx] Adaptive Images in Responsive Web DesignChristopher Schmitt
 
The case for HTTP/2
The case for HTTP/2The case for HTTP/2
The case for HTTP/2GreeceJS
 
Devoxx be fast and beautiful images
Devoxx be fast and beautiful imagesDevoxx be fast and beautiful images
Devoxx be fast and beautiful imagesDoug Sillars
 
[convergese] Adaptive Images in Responsive Web Design
[convergese] Adaptive Images in Responsive Web Design[convergese] Adaptive Images in Responsive Web Design
[convergese] Adaptive Images in Responsive Web DesignChristopher Schmitt
 
Responsive Email Design and Development
Responsive Email Design and DevelopmentResponsive Email Design and Development
Responsive Email Design and Developmentladyheatherly
 
[psuweb] Adaptive Images in Responsive Web Design
[psuweb] Adaptive Images in Responsive Web Design[psuweb] Adaptive Images in Responsive Web Design
[psuweb] Adaptive Images in Responsive Web DesignChristopher Schmitt
 
分层语义化模板实践 ---- 张克军
分层语义化模板实践 ---- 张克军分层语义化模板实践 ---- 张克军
分层语义化模板实践 ---- 张克军裕波 周
 
[HEWEBFL] Adaptive Images in Responsive Web Design
[HEWEBFL] Adaptive Images in Responsive Web Design[HEWEBFL] Adaptive Images in Responsive Web Design
[HEWEBFL] Adaptive Images in Responsive Web DesignChristopher Schmitt
 

Ähnlich wie The Multipack Presents: "Wrestling With Asp.Net And Web Standards" by Anthony Williams (20)

Widget Summit 2008
Widget Summit 2008Widget Summit 2008
Widget Summit 2008
 
Speed Matters!
Speed Matters!Speed Matters!
Speed Matters!
 
Http/2 - What's it all about?
Http/2  - What's it all about?Http/2  - What's it all about?
Http/2 - What's it all about?
 
Website performance optimisation
Website performance optimisationWebsite performance optimisation
Website performance optimisation
 
웹을 지탱하는 차세대 기술 @한국웹20주년 컨퍼런스
웹을 지탱하는 차세대 기술 @한국웹20주년 컨퍼런스웹을 지탱하는 차세대 기술 @한국웹20주년 컨퍼런스
웹을 지탱하는 차세대 기술 @한국웹20주년 컨퍼런스
 
HTML5: Markup Evolved
HTML5: Markup EvolvedHTML5: Markup Evolved
HTML5: Markup Evolved
 
Oscon 20080724
Oscon 20080724Oscon 20080724
Oscon 20080724
 
[refreshpitt] Adaptive Images in Responsive Web Design
[refreshpitt] Adaptive Images in Responsive Web Design[refreshpitt] Adaptive Images in Responsive Web Design
[refreshpitt] Adaptive Images in Responsive Web Design
 
[HEWEBAR 2012] Adaptive Images in Responsive Web Design
[HEWEBAR 2012] Adaptive Images in Responsive Web Design[HEWEBAR 2012] Adaptive Images in Responsive Web Design
[HEWEBAR 2012] Adaptive Images in Responsive Web Design
 
[drupalcampatx] Adaptive Images in Responsive Web Design
[drupalcampatx] Adaptive Images in Responsive Web Design[drupalcampatx] Adaptive Images in Responsive Web Design
[drupalcampatx] Adaptive Images in Responsive Web Design
 
[wcatx] Adaptive Images in Responsive Web Design
[wcatx] Adaptive Images in Responsive Web Design[wcatx] Adaptive Images in Responsive Web Design
[wcatx] Adaptive Images in Responsive Web Design
 
The case for HTTP/2
The case for HTTP/2The case for HTTP/2
The case for HTTP/2
 
Devoxx be fast and beautiful images
Devoxx be fast and beautiful imagesDevoxx be fast and beautiful images
Devoxx be fast and beautiful images
 
[convergese] Adaptive Images in Responsive Web Design
[convergese] Adaptive Images in Responsive Web Design[convergese] Adaptive Images in Responsive Web Design
[convergese] Adaptive Images in Responsive Web Design
 
Responsive Email Design and Development
Responsive Email Design and DevelopmentResponsive Email Design and Development
Responsive Email Design and Development
 
Mume HTML5 Intro
Mume HTML5 IntroMume HTML5 Intro
Mume HTML5 Intro
 
[psuweb] Adaptive Images in Responsive Web Design
[psuweb] Adaptive Images in Responsive Web Design[psuweb] Adaptive Images in Responsive Web Design
[psuweb] Adaptive Images in Responsive Web Design
 
LSM实践
LSM实践LSM实践
LSM实践
 
分层语义化模板实践 ---- 张克军
分层语义化模板实践 ---- 张克军分层语义化模板实践 ---- 张克军
分层语义化模板实践 ---- 张克军
 
[HEWEBFL] Adaptive Images in Responsive Web Design
[HEWEBFL] Adaptive Images in Responsive Web Design[HEWEBFL] Adaptive Images in Responsive Web Design
[HEWEBFL] Adaptive Images in Responsive Web Design
 

Kürzlich hochgeladen

IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsRoshan Dwivedi
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilV3cube
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 

Kürzlich hochgeladen (20)

IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 

The Multipack Presents: "Wrestling With Asp.Net And Web Standards" by Anthony Williams