Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Update site

  • Loading branch information...
commit 44af86d2b7bbe8e5b23fc8d1e80eed7266b70db1 1 parent af05005
@davidjb authored
Showing with 1,230 additions and 854 deletions.
  1. +2 −0  archives.html
  2. +28 −28 author/davidjb.html
  3. +27 −28 author/davidjb10.html
  4. +28 −28 author/davidjb11.html
  5. +28 −27 author/davidjb12.html
  6. +27 −0 author/davidjb13.html
  7. +28 −28 author/davidjb2.html
  8. +28 −30 author/davidjb3.html
  9. +30 −36 author/davidjb4.html
  10. +36 −27 author/davidjb5.html
  11. +27 −28 author/davidjb6.html
  12. +28 −28 author/davidjb7.html
  13. +28 −28 author/davidjb8.html
  14. +28 −27 author/davidjb9.html
  15. +173 −0 blog/2013/07/all-fanstatic-resources-being-served-with-texthtml-mimetype-by-webobwsgi/index.html
  16. +83 −103 category/web.html
  17. +30 −0 category/web2.html
  18. +52 −1 feeds/all-en.atom.xml
  19. +52 −1 feeds/all.atom.xml
  20. +52 −1 feeds/web.atom.xml
  21. +83 −101 index.html
  22. +27 −28 index10.html
  23. +28 −28 index11.html
  24. +28 −27 index12.html
  25. +27 −0 index13.html
  26. +28 −27 index2.html
  27. +27 −30 index3.html
  28. +30 −27 index4.html
  29. +27 −28 index5.html
  30. +28 −28 index6.html
  31. +28 −27 index7.html
  32. +27 −27 index8.html
  33. +27 −27 index9.html
View
2  archives.html
@@ -31,6 +31,8 @@
<h1>Archives for DavidJB.com</h1>
<dl>
+ <dt>Mon 29 July 2013</dt>
+ <dd><a href="http://davidjb.com/blog/2013/07/all-fanstatic-resources-being-served-with-texthtml-mimetype-by-webobwsgi/">All Fanstatic resources being served with &#8216;text/html&#8217; mimetype by&nbsp;WebOb/<span class="caps">WSGI</span></a></dd>
<dt>Tue 28 May 2013</dt>
<dd><a href="http://davidjb.com/blog/2013/05/attributes-not-released-to-new-shibboleth-service-provider-sp/">Attributes not released to new Shibboleth Service Provider&nbsp;(<span class="caps">SP</span>)</a></dd>
<dt>Wed 08 May 2013</dt>
View
56 author/davidjb.html
@@ -117,6 +117,34 @@ <h1 class="entry-title"><a href="http://davidjb.com/blog/2009/10/a-little-time-o
<li><article class="hentry">
<header>
+ <h1><a href="http://davidjb.com/blog/2013/07/all-fanstatic-resources-being-served-with-texthtml-mimetype-by-webobwsgi/" rel="bookmark"
+ title="Permalink to All Fanstatic resources being served with ‘text/html’ mimetype by WebOb/WSGI">All Fanstatic resources being served with &#8216;text/html&#8217; mimetype by&nbsp;WebOb/<span class="caps">WSGI</span></a></h1>
+ </header>
+
+ <div class="entry-content">
+ <footer class="post-info">
+ <abbr class="published" title="2013-07-29T00:00:00">
+ Mon 29 July 2013
+ </abbr>
+
+ <address class="vcard author">
+ By <a class="url fn" href="http://davidjb.com/author/davidjb.html">davidjb</a>
+ </address>
+ <p>In <a href="http://davidjb.com/category/web.html">Web</a>. </p>
+
+</footer><!-- /.post-info --> <p>If you&#8217;re finding that you&#8217;re using <a class="reference external" href="http://fanstatic.org">Fanstatic</a> to
+serve static resources within your Python-based server process, you may be left
+scracthing your head if you suddenly find that resources aren&#8217;t being served
+correctly. For me, this was manifesting as an incorrect <tt class="docutils literal"><span class="pre">Content-Type</span></tt>
+header, always being set to ...</p>
+ <a class="readmore" href="http://davidjb.com/blog/2013/07/all-fanstatic-resources-being-served-with-texthtml-mimetype-by-webobwsgi/">read more</a>
+ <p>There are <a href="http://davidjb.com/blog/2013/07/all-fanstatic-resources-being-served-with-texthtml-mimetype-by-webobwsgi/#disqus_thread">comments</a>.</p> </div><!-- /.entry-content -->
+ </article></li>
+
+
+
+ <li><article class="hentry">
+ <header>
<h1><a href="http://davidjb.com/blog/2010/01/apache-directories-and-trailing-slashes/" rel="bookmark"
title="Permalink to Apache: Directories and trailing slashes">Apache: Directories and trailing&nbsp;slashes</a></h1>
</header>
@@ -310,34 +338,6 @@ <h1 class="entry-title"><a href="http://davidjb.com/blog/2009/10/a-little-time-o
<a class="readmore" href="http://davidjb.com/blog/2009/01/buildout-and-version-problems/">read more</a>
<p>There are <a href="http://davidjb.com/blog/2009/01/buildout-and-version-problems/#disqus_thread">comments</a>.</p> </div><!-- /.entry-content -->
</article></li>
-
-
-
- <li><article class="hentry">
- <header>
- <h1><a href="http://davidjb.com/blog/2009/02/buildout-best-thing-ever/" rel="bookmark"
- title="Permalink to Buildout: Best Thing Ever?">Buildout: Best Thing&nbsp;Ever?</a></h1>
- </header>
-
- <div class="entry-content">
- <footer class="post-info">
- <abbr class="published" title="2009-02-20T08:58:00">
- Fri 20 February 2009
- </abbr>
-
- <address class="vcard author">
- By <a class="url fn" href="http://davidjb.com/author/davidjb.html">davidjb</a>
- </address>
- <p>In <a href="http://davidjb.com/category/python.html">Python</a>. </p>
-<p>tags: <a href="http://davidjb.com/tag/best-thing.html">best thing</a><a href="http://davidjb.com/tag/buildout.html">buildout</a><a href="http://davidjb.com/tag/excellent.html">excellent</a></p>
-</footer><!-- /.post-info --> <p>Taking a little bit of a time-out, I just have to ask the question: is
-Buildout not the best thing ever? (and the people who are so very kind
-to make the&nbsp;recipes?)</p>
-<p>It&#8217;s made my work of managing our Plone infrastructure about 1000 times
-simpler since moving from ...</p>
- <a class="readmore" href="http://davidjb.com/blog/2009/02/buildout-best-thing-ever/">read more</a>
- <p>There are <a href="http://davidjb.com/blog/2009/02/buildout-best-thing-ever/#disqus_thread">comments</a>.</p> </div><!-- /.entry-content -->
- </article></li>
</ol><!-- /#posts-list -->
<p class="paginator">
Page 1 / 13
View
55 author/davidjb10.html
@@ -35,6 +35,33 @@
<ol id="posts-list" class="hfeed" start="9">
<li><article class="hentry">
<header>
+ <h1><a href="http://davidjb.com/blog/2011/05/putting-a-nasa-human-space-flight-sightings-rss-feed-into-your-calendar-program/" rel="bookmark"
+ title="Permalink to Putting a NASA Human Space Flight Sightings RSS feed into your calendar program">Putting a <span class="caps">NASA</span> Human Space Flight Sightings <span class="caps">RSS</span> feed into your calendar&nbsp;program</a></h1>
+ </header>
+
+ <div class="entry-content">
+ <footer class="post-info">
+ <abbr class="published" title="2011-05-14T07:34:00">
+ Sat 14 May 2011
+ </abbr>
+
+ <address class="vcard author">
+ By <a class="url fn" href="http://davidjb.com/author/davidjb.html">davidjb</a>
+ </address>
+ <p>In <a href="http://davidjb.com/category/programming.html">Programming</a>. </p>
+<p>tags: <a href="http://davidjb.com/tag/nasa.html">nasa</a><a href="http://davidjb.com/tag/pipes.html">pipes</a><a href="http://davidjb.com/tag/sightings.html">sightings</a><a href="http://davidjb.com/tag/space.html">space</a><a href="http://davidjb.com/tag/yahoo.html">yahoo</a><a href="http://davidjb.com/tag/yahoo-pipes.html">yahoo pipes</a></p>
+</footer><!-- /.post-info --> <p>I stumbled upon <a class="reference external" href="http://spaceflight.nasa.gov/realdata/sightings/index.html"><span class="caps">NASA</span>&#8217;s space sightings page</a> a little while ago. For
+those of you that don&#8217;t know, it&#8217;s a great site that lists opportunities
+to view satellites that will be visible in your location and when/where
+to look to see them. Amongst the fact this ...</p>
+ <a class="readmore" href="http://davidjb.com/blog/2011/05/putting-a-nasa-human-space-flight-sightings-rss-feed-into-your-calendar-program/">read more</a>
+ <p>There are <a href="http://davidjb.com/blog/2011/05/putting-a-nasa-human-space-flight-sightings-rss-feed-into-your-calendar-program/#disqus_thread">comments</a>.</p> </div><!-- /.entry-content -->
+ </article></li>
+
+
+
+ <li><article class="hentry">
+ <header>
<h1><a href="http://davidjb.com/blog/2011/01/python-eggs-and-missing-files-like-docs/" rel="bookmark"
title="Permalink to Python eggs and missing files (like ‘docs’)">Python eggs and missing files (like&nbsp;&#8216;docs&#8217;)</a></h1>
</header>
@@ -277,34 +304,6 @@
<a class="readmore" href="http://davidjb.com/blog/2013/04/setting-up-a-shibboleth-sp-with-fastcgi-support/">read more</a>
<p>There are <a href="http://davidjb.com/blog/2013/04/setting-up-a-shibboleth-sp-with-fastcgi-support/#disqus_thread">comments</a>.</p> </div><!-- /.entry-content -->
</article></li>
-
-
-
- <li><article class="hentry">
- <header>
- <h1><a href="http://davidjb.com/blog/2013/04/shibboleth-sp-logojpg-missing-from-distributions/" rel="bookmark"
- title="Permalink to Shibboleth SP logo.jpg missing from distributions">Shibboleth <span class="caps">SP</span> logo.jpg missing from&nbsp;distributions</a></h1>
- </header>
-
- <div class="entry-content">
- <footer class="post-info">
- <abbr class="published" title="2013-04-22T00:00:00">
- Mon 22 April 2013
- </abbr>
-
- <address class="vcard author">
- By <a class="url fn" href="http://davidjb.com/author/davidjb.html">davidjb</a>
- </address>
- <p>In <a href="http://davidjb.com/category/it.html">IT</a>. </p>
-<p>tags: <a href="http://davidjb.com/tag/shibboleth.html">Shibboleth</a></p>
-</footer><!-- /.post-info --> <p>Have you recently installed the Shibboleth <span class="caps">SP</span> software and found that
-the error pages the software is generating are missing the Shibboleth logo?
-If so, it&#8217;s because those error pages are attempting to display a logo
-(typically <tt class="docutils literal"><span class="pre">/shibboleth-sp/logo.jpg</span></tt> by default) but the logo of the Griffin
-that ...</p>
- <a class="readmore" href="http://davidjb.com/blog/2013/04/shibboleth-sp-logojpg-missing-from-distributions/">read more</a>
- <p>There are <a href="http://davidjb.com/blog/2013/04/shibboleth-sp-logojpg-missing-from-distributions/#disqus_thread">comments</a>.</p> </div><!-- /.entry-content -->
- </article></li>
</ol><!-- /#posts-list -->
<p class="paginator">
<a href="http://davidjb.com/author/davidjb9.html">&laquo;</a>
View
56 author/davidjb11.html
@@ -35,6 +35,34 @@
<ol id="posts-list" class="hfeed" start="9">
<li><article class="hentry">
<header>
+ <h1><a href="http://davidjb.com/blog/2013/04/shibboleth-sp-logojpg-missing-from-distributions/" rel="bookmark"
+ title="Permalink to Shibboleth SP logo.jpg missing from distributions">Shibboleth <span class="caps">SP</span> logo.jpg missing from&nbsp;distributions</a></h1>
+ </header>
+
+ <div class="entry-content">
+ <footer class="post-info">
+ <abbr class="published" title="2013-04-22T00:00:00">
+ Mon 22 April 2013
+ </abbr>
+
+ <address class="vcard author">
+ By <a class="url fn" href="http://davidjb.com/author/davidjb.html">davidjb</a>
+ </address>
+ <p>In <a href="http://davidjb.com/category/it.html">IT</a>. </p>
+<p>tags: <a href="http://davidjb.com/tag/shibboleth.html">Shibboleth</a></p>
+</footer><!-- /.post-info --> <p>Have you recently installed the Shibboleth <span class="caps">SP</span> software and found that
+the error pages the software is generating are missing the Shibboleth logo?
+If so, it&#8217;s because those error pages are attempting to display a logo
+(typically <tt class="docutils literal"><span class="pre">/shibboleth-sp/logo.jpg</span></tt> by default) but the logo of the Griffin
+that ...</p>
+ <a class="readmore" href="http://davidjb.com/blog/2013/04/shibboleth-sp-logojpg-missing-from-distributions/">read more</a>
+ <p>There are <a href="http://davidjb.com/blog/2013/04/shibboleth-sp-logojpg-missing-from-distributions/#disqus_thread">comments</a>.</p> </div><!-- /.entry-content -->
+ </article></li>
+
+
+
+ <li><article class="hentry">
+ <header>
<h1><a href="http://davidjb.com/blog/2009/12/start-screen-after-suing-to-another-user/" rel="bookmark"
title="Permalink to Start screen after su’ing to another user">Start screen after su&#8217;ing to another&nbsp;user</a></h1>
</header>
@@ -282,34 +310,6 @@
<a class="readmore" href="http://davidjb.com/blog/2009/02/ubuntu-dual-monitors-separating-tasks/">read more</a>
<p>There are <a href="http://davidjb.com/blog/2009/02/ubuntu-dual-monitors-separating-tasks/#disqus_thread">comments</a>.</p> </div><!-- /.entry-content -->
</article></li>
-
-
-
- <li><article class="hentry">
- <header>
- <h1><a href="http://davidjb.com/blog/2009/01/ubuntu-pulseaudio-joy/" rel="bookmark"
- title="Permalink to Ubuntu: PulseAudio Joy">Ubuntu: PulseAudio&nbsp;Joy</a></h1>
- </header>
-
- <div class="entry-content">
- <footer class="post-info">
- <abbr class="published" title="2009-01-06T15:07:00">
- Tue 06 January 2009
- </abbr>
-
- <address class="vcard author">
- By <a class="url fn" href="http://davidjb.com/author/davidjb.html">davidjb</a>
- </address>
- <p>In <a href="http://davidjb.com/category/linux.html">Linux</a>. </p>
-<p>tags: <a href="http://davidjb.com/tag/audio.html">audio</a><a href="http://davidjb.com/tag/headphones.html">headphones</a><a href="http://davidjb.com/tag/pulseaudio.html">pulseaudio</a><a href="http://davidjb.com/tag/sound.html">sound</a><a href="http://davidjb.com/tag/ubuntu.html">ubuntu</a><a href="http://davidjb.com/tag/usb.html">usb</a></p>
-</footer><!-- /.post-info --> <p>Well, it&#8217;s a sad state of affairs when simply unplugging your set of <span class="caps">USB</span>
-headphones causes your Intrepid Ibex install of Ubuntu to crap itself.
-Even with the same set of headphones plugged back into the same port not
-10 seconds later.&nbsp;Painful.</p>
-<p>But, the good news is that ...</p>
- <a class="readmore" href="http://davidjb.com/blog/2009/01/ubuntu-pulseaudio-joy/">read more</a>
- <p>There are <a href="http://davidjb.com/blog/2009/01/ubuntu-pulseaudio-joy/#disqus_thread">comments</a>.</p> </div><!-- /.entry-content -->
- </article></li>
</ol><!-- /#posts-list -->
<p class="paginator">
<a href="http://davidjb.com/author/davidjb10.html">&laquo;</a>
View
55 author/davidjb12.html
@@ -35,6 +35,34 @@
<ol id="posts-list" class="hfeed" start="9">
<li><article class="hentry">
<header>
+ <h1><a href="http://davidjb.com/blog/2009/01/ubuntu-pulseaudio-joy/" rel="bookmark"
+ title="Permalink to Ubuntu: PulseAudio Joy">Ubuntu: PulseAudio&nbsp;Joy</a></h1>
+ </header>
+
+ <div class="entry-content">
+ <footer class="post-info">
+ <abbr class="published" title="2009-01-06T15:07:00">
+ Tue 06 January 2009
+ </abbr>
+
+ <address class="vcard author">
+ By <a class="url fn" href="http://davidjb.com/author/davidjb.html">davidjb</a>
+ </address>
+ <p>In <a href="http://davidjb.com/category/linux.html">Linux</a>. </p>
+<p>tags: <a href="http://davidjb.com/tag/audio.html">audio</a><a href="http://davidjb.com/tag/headphones.html">headphones</a><a href="http://davidjb.com/tag/pulseaudio.html">pulseaudio</a><a href="http://davidjb.com/tag/sound.html">sound</a><a href="http://davidjb.com/tag/ubuntu.html">ubuntu</a><a href="http://davidjb.com/tag/usb.html">usb</a></p>
+</footer><!-- /.post-info --> <p>Well, it&#8217;s a sad state of affairs when simply unplugging your set of <span class="caps">USB</span>
+headphones causes your Intrepid Ibex install of Ubuntu to crap itself.
+Even with the same set of headphones plugged back into the same port not
+10 seconds later.&nbsp;Painful.</p>
+<p>But, the good news is that ...</p>
+ <a class="readmore" href="http://davidjb.com/blog/2009/01/ubuntu-pulseaudio-joy/">read more</a>
+ <p>There are <a href="http://davidjb.com/blog/2009/01/ubuntu-pulseaudio-joy/#disqus_thread">comments</a>.</p> </div><!-- /.entry-content -->
+ </article></li>
+
+
+
+ <li><article class="hentry">
+ <header>
<h1><a href="http://davidjb.com/blog/2009/05/unix-removing-open-logical-volumes-in-centosrhl/" rel="bookmark"
title="Permalink to Unix: Removing Open Logical Volumes in Centos/RHL">Unix: Removing Open Logical Volumes in&nbsp;Centos/<span class="caps">RHL</span></a></h1>
</header>
@@ -280,33 +308,6 @@
<a class="readmore" href="http://davidjb.com/blog/2010/05/virtualenv-python-2-4-plone-3-x-and-lucid-lynx-ubuntu-10-04/">read more</a>
<p>There are <a href="http://davidjb.com/blog/2010/05/virtualenv-python-2-4-plone-3-x-and-lucid-lynx-ubuntu-10-04/#disqus_thread">comments</a>.</p> </div><!-- /.entry-content -->
</article></li>
-
-
-
- <li><article class="hentry">
- <header>
- <h1><a href="http://davidjb.com/blog/2009/07/vlc-has-turned-1/" rel="bookmark"
- title="Permalink to VLC Has Turned 1!"><span class="caps">VLC</span> Has Turned&nbsp;1!</a></h1>
- </header>
-
- <div class="entry-content">
- <footer class="post-info">
- <abbr class="published" title="2009-07-08T02:10:00">
- Wed 08 July 2009
- </abbr>
-
- <address class="vcard author">
- By <a class="url fn" href="http://davidjb.com/author/davidjb.html">davidjb</a>
- </address>
- <p>In <a href="http://davidjb.com/category/software.html">Software</a>. </p>
-<p>tags: <a href="http://davidjb.com/tag/features.html">features</a><a href="http://davidjb.com/tag/software.html">Software</a><a href="http://davidjb.com/tag/update.html">update</a><a href="http://davidjb.com/tag/video.html">video</a><a href="http://davidjb.com/tag/vlc.html">vlc</a></p>
-</footer><!-- /.post-info --> <p>I may well be late to the party and a little late to celebrate, but I&#8217;ve
-just made the startling discovery that <span class="caps">VLC</span> 1.0.0 has now been&nbsp;released.</p>
-<p>I&#8217;ve been using <span class="caps">VLC</span> since (before, actually) I thought there had to more
-to playing videos than needing ...</p>
- <a class="readmore" href="http://davidjb.com/blog/2009/07/vlc-has-turned-1/">read more</a>
- <p>There are <a href="http://davidjb.com/blog/2009/07/vlc-has-turned-1/#disqus_thread">comments</a>.</p> </div><!-- /.entry-content -->
- </article></li>
</ol><!-- /#posts-list -->
<p class="paginator">
<a href="http://davidjb.com/author/davidjb11.html">&laquo;</a>
View
27 author/davidjb13.html
@@ -35,6 +35,33 @@
<ol id="posts-list" class="hfeed" start="9">
<li><article class="hentry">
<header>
+ <h1><a href="http://davidjb.com/blog/2009/07/vlc-has-turned-1/" rel="bookmark"
+ title="Permalink to VLC Has Turned 1!"><span class="caps">VLC</span> Has Turned&nbsp;1!</a></h1>
+ </header>
+
+ <div class="entry-content">
+ <footer class="post-info">
+ <abbr class="published" title="2009-07-08T02:10:00">
+ Wed 08 July 2009
+ </abbr>
+
+ <address class="vcard author">
+ By <a class="url fn" href="http://davidjb.com/author/davidjb.html">davidjb</a>
+ </address>
+ <p>In <a href="http://davidjb.com/category/software.html">Software</a>. </p>
+<p>tags: <a href="http://davidjb.com/tag/features.html">features</a><a href="http://davidjb.com/tag/software.html">Software</a><a href="http://davidjb.com/tag/update.html">update</a><a href="http://davidjb.com/tag/video.html">video</a><a href="http://davidjb.com/tag/vlc.html">vlc</a></p>
+</footer><!-- /.post-info --> <p>I may well be late to the party and a little late to celebrate, but I&#8217;ve
+just made the startling discovery that <span class="caps">VLC</span> 1.0.0 has now been&nbsp;released.</p>
+<p>I&#8217;ve been using <span class="caps">VLC</span> since (before, actually) I thought there had to more
+to playing videos than needing ...</p>
+ <a class="readmore" href="http://davidjb.com/blog/2009/07/vlc-has-turned-1/">read more</a>
+ <p>There are <a href="http://davidjb.com/blog/2009/07/vlc-has-turned-1/#disqus_thread">comments</a>.</p> </div><!-- /.entry-content -->
+ </article></li>
+
+
+
+ <li><article class="hentry">
+ <header>
<h1><a href="http://davidjb.com/blog/2011/07/watch-out-python-2-4-zeo-client-and-python-2-6-zeo-server/" rel="bookmark"
title="Permalink to Watch out: Python 2.4 ZEO client and Python 2.6 ZEO Server">Watch out: Python 2.4 <span class="caps">ZEO</span> client and Python 2.6 <span class="caps">ZEO</span>&nbsp;Server</a></h1>
</header>
View
56 author/davidjb2.html
@@ -35,6 +35,34 @@
<ol id="posts-list" class="hfeed" start="9">
<li><article class="hentry">
<header>
+ <h1><a href="http://davidjb.com/blog/2009/02/buildout-best-thing-ever/" rel="bookmark"
+ title="Permalink to Buildout: Best Thing Ever?">Buildout: Best Thing&nbsp;Ever?</a></h1>
+ </header>
+
+ <div class="entry-content">
+ <footer class="post-info">
+ <abbr class="published" title="2009-02-20T08:58:00">
+ Fri 20 February 2009
+ </abbr>
+
+ <address class="vcard author">
+ By <a class="url fn" href="http://davidjb.com/author/davidjb.html">davidjb</a>
+ </address>
+ <p>In <a href="http://davidjb.com/category/python.html">Python</a>. </p>
+<p>tags: <a href="http://davidjb.com/tag/best-thing.html">best thing</a><a href="http://davidjb.com/tag/buildout.html">buildout</a><a href="http://davidjb.com/tag/excellent.html">excellent</a></p>
+</footer><!-- /.post-info --> <p>Taking a little bit of a time-out, I just have to ask the question: is
+Buildout not the best thing ever? (and the people who are so very kind
+to make the&nbsp;recipes?)</p>
+<p>It&#8217;s made my work of managing our Plone infrastructure about 1000 times
+simpler since moving from ...</p>
+ <a class="readmore" href="http://davidjb.com/blog/2009/02/buildout-best-thing-ever/">read more</a>
+ <p>There are <a href="http://davidjb.com/blog/2009/02/buildout-best-thing-ever/#disqus_thread">comments</a>.</p> </div><!-- /.entry-content -->
+ </article></li>
+
+
+
+ <li><article class="hentry">
+ <header>
<h1><a href="http://davidjb.com/blog/2011/01/buildout-order-of-extends-configuration-files/" rel="bookmark"
title="Permalink to Buildout: order of ‘extends’ configuration files">Buildout: order of &#8216;extends&#8217; configuration&nbsp;files</a></h1>
</header>
@@ -287,34 +315,6 @@
<a class="readmore" href="http://davidjb.com/blog/2010/01/css-internet-explorer-and-self-imposed-limitations-plone/">read more</a>
<p>There are <a href="http://davidjb.com/blog/2010/01/css-internet-explorer-and-self-imposed-limitations-plone/#disqus_thread">comments</a>.</p> </div><!-- /.entry-content -->
</article></li>
-
-
-
- <li><article class="hentry">
- <header>
- <h1><a href="http://davidjb.com/blog/2009/06/datetime-in-pythonzopeplone-is-painful/" rel="bookmark"
- title="Permalink to DateTime in Python/Zope/Plone is painful">DateTime in Python/Zope/Plone is&nbsp;painful</a></h1>
- </header>
-
- <div class="entry-content">
- <footer class="post-info">
- <abbr class="published" title="2009-06-19T13:50:00">
- Fri 19 June 2009
- </abbr>
-
- <address class="vcard author">
- By <a class="url fn" href="http://davidjb.com/author/davidjb.html">davidjb</a>
- </address>
- <p>In <a href="http://davidjb.com/category/python.html">Python</a>. </p>
-<p>tags: <a href="http://davidjb.com/tag/comparison.html">comparison</a><a href="http://davidjb.com/tag/date.html">date</a><a href="http://davidjb.com/tag/plone.html">plone</a><a href="http://davidjb.com/tag/problem.html">problem</a><a href="http://davidjb.com/tag/python.html">python</a><a href="http://davidjb.com/tag/time.html">time</a><a href="http://davidjb.com/tag/zope.html">zope</a></p>
-</footer><!-- /.post-info --> <p>Alright, now for today&#8217;s problem:&nbsp; why do two dates that look different
-when outputted actually end up being the same&nbsp;date?</p>
-<p><strong>Answer:</strong> I&#8217;m not sure, but I&#8217;m pretty sure it&#8217;s got something to do
-with the wacky support the above-mentioned 3 products have for&nbsp;timezones.</p>
-<p><strong>The ...</strong></p>
- <a class="readmore" href="http://davidjb.com/blog/2009/06/datetime-in-pythonzopeplone-is-painful/">read more</a>
- <p>There are <a href="http://davidjb.com/blog/2009/06/datetime-in-pythonzopeplone-is-painful/#disqus_thread">comments</a>.</p> </div><!-- /.entry-content -->
- </article></li>
</ol><!-- /#posts-list -->
<p class="paginator">
<a href="http://davidjb.com/author/davidjb.html">&laquo;</a>
View
58 author/davidjb3.html
@@ -35,6 +35,34 @@
<ol id="posts-list" class="hfeed" start="9">
<li><article class="hentry">
<header>
+ <h1><a href="http://davidjb.com/blog/2009/06/datetime-in-pythonzopeplone-is-painful/" rel="bookmark"
+ title="Permalink to DateTime in Python/Zope/Plone is painful">DateTime in Python/Zope/Plone is&nbsp;painful</a></h1>
+ </header>
+
+ <div class="entry-content">
+ <footer class="post-info">
+ <abbr class="published" title="2009-06-19T13:50:00">
+ Fri 19 June 2009
+ </abbr>
+
+ <address class="vcard author">
+ By <a class="url fn" href="http://davidjb.com/author/davidjb.html">davidjb</a>
+ </address>
+ <p>In <a href="http://davidjb.com/category/python.html">Python</a>. </p>
+<p>tags: <a href="http://davidjb.com/tag/comparison.html">comparison</a><a href="http://davidjb.com/tag/date.html">date</a><a href="http://davidjb.com/tag/plone.html">plone</a><a href="http://davidjb.com/tag/problem.html">problem</a><a href="http://davidjb.com/tag/python.html">python</a><a href="http://davidjb.com/tag/time.html">time</a><a href="http://davidjb.com/tag/zope.html">zope</a></p>
+</footer><!-- /.post-info --> <p>Alright, now for today&#8217;s problem:&nbsp; why do two dates that look different
+when outputted actually end up being the same&nbsp;date?</p>
+<p><strong>Answer:</strong> I&#8217;m not sure, but I&#8217;m pretty sure it&#8217;s got something to do
+with the wacky support the above-mentioned 3 products have for&nbsp;timezones.</p>
+<p><strong>The ...</strong></p>
+ <a class="readmore" href="http://davidjb.com/blog/2009/06/datetime-in-pythonzopeplone-is-painful/">read more</a>
+ <p>There are <a href="http://davidjb.com/blog/2009/06/datetime-in-pythonzopeplone-is-painful/#disqus_thread">comments</a>.</p> </div><!-- /.entry-content -->
+ </article></li>
+
+
+
+ <li><article class="hentry">
+ <header>
<h1><a href="http://davidjb.com/blog/2009/12/david-tries-plone-4-0a2-part-2/" rel="bookmark"
title="Permalink to David tries Plone 4.0a2 (Part 2)">David tries Plone 4.0a2 (Part&nbsp;2)</a></h1>
</header>
@@ -280,36 +308,6 @@
<a class="readmore" href="http://davidjb.com/blog/2011/06/extracting-a-buildout-versions-cfg-from-a-zope-instance-script/">read more</a>
<p>There are <a href="http://davidjb.com/blog/2011/06/extracting-a-buildout-versions-cfg-from-a-zope-instance-script/#disqus_thread">comments</a>.</p> </div><!-- /.entry-content -->
</article></li>
-
-
-
- <li><article class="hentry">
- <header>
- <h1><a href="http://davidjb.com/blog/2009/09/ffmpeg-and-flv-on-ubuntu/" rel="bookmark"
- title="Permalink to ffmpeg and FLV on Ubuntu">ffmpeg and <span class="caps">FLV</span> on&nbsp;Ubuntu</a></h1>
- </header>
-
- <div class="entry-content">
- <footer class="post-info">
- <abbr class="published" title="2009-09-22T10:21:00">
- Tue 22 September 2009
- </abbr>
-
- <address class="vcard author">
- By <a class="url fn" href="http://davidjb.com/author/davidjb.html">davidjb</a>
- </address>
- <p>In <a href="http://davidjb.com/category/linux.html">Linux</a>. </p>
-<p>tags: <a href="http://davidjb.com/tag/ffmpeg.html">ffmpeg</a><a href="http://davidjb.com/tag/flv.html">flv</a><a href="http://davidjb.com/tag/linux.html">linux</a><a href="http://davidjb.com/tag/multimedia.html">multimedia</a><a href="http://davidjb.com/tag/ubuntu.html">ubuntu</a></p>
-</footer><!-- /.post-info --> <p>Wow, ffmpeg is really great for converting multimedia.&nbsp; Unfortunately,
-the support for <span class="caps">MP3</span> audio doesn&#8217;t appear available by default.&nbsp; Sure, it
-can decode <span class="caps">MP3</span> audio and write to an <span class="caps">MP3</span> container, but what about
-having an actual <span class="caps">MP3</span> codec&nbsp;available?</p>
-<pre class="code bash literal-block">
-sudo apt-get purge ffmpeg
-sudo apt-get install libavcodec-unstripped-52 libavdevice-unstripped-52 ...</pre>
- <a class="readmore" href="http://davidjb.com/blog/2009/09/ffmpeg-and-flv-on-ubuntu/">read more</a>
- <p>There are <a href="http://davidjb.com/blog/2009/09/ffmpeg-and-flv-on-ubuntu/#disqus_thread">comments</a>.</p> </div><!-- /.entry-content -->
- </article></li>
</ol><!-- /#posts-list -->
<p class="paginator">
<a href="http://davidjb.com/author/davidjb2.html">&laquo;</a>
View
66 author/davidjb4.html
@@ -35,6 +35,36 @@
<ol id="posts-list" class="hfeed" start="9">
<li><article class="hentry">
<header>
+ <h1><a href="http://davidjb.com/blog/2009/09/ffmpeg-and-flv-on-ubuntu/" rel="bookmark"
+ title="Permalink to ffmpeg and FLV on Ubuntu">ffmpeg and <span class="caps">FLV</span> on&nbsp;Ubuntu</a></h1>
+ </header>
+
+ <div class="entry-content">
+ <footer class="post-info">
+ <abbr class="published" title="2009-09-22T10:21:00">
+ Tue 22 September 2009
+ </abbr>
+
+ <address class="vcard author">
+ By <a class="url fn" href="http://davidjb.com/author/davidjb.html">davidjb</a>
+ </address>
+ <p>In <a href="http://davidjb.com/category/linux.html">Linux</a>. </p>
+<p>tags: <a href="http://davidjb.com/tag/ffmpeg.html">ffmpeg</a><a href="http://davidjb.com/tag/flv.html">flv</a><a href="http://davidjb.com/tag/linux.html">linux</a><a href="http://davidjb.com/tag/multimedia.html">multimedia</a><a href="http://davidjb.com/tag/ubuntu.html">ubuntu</a></p>
+</footer><!-- /.post-info --> <p>Wow, ffmpeg is really great for converting multimedia.&nbsp; Unfortunately,
+the support for <span class="caps">MP3</span> audio doesn&#8217;t appear available by default.&nbsp; Sure, it
+can decode <span class="caps">MP3</span> audio and write to an <span class="caps">MP3</span> container, but what about
+having an actual <span class="caps">MP3</span> codec&nbsp;available?</p>
+<pre class="code bash literal-block">
+sudo apt-get purge ffmpeg
+sudo apt-get install libavcodec-unstripped-52 libavdevice-unstripped-52 ...</pre>
+ <a class="readmore" href="http://davidjb.com/blog/2009/09/ffmpeg-and-flv-on-ubuntu/">read more</a>
+ <p>There are <a href="http://davidjb.com/blog/2009/09/ffmpeg-and-flv-on-ubuntu/#disqus_thread">comments</a>.</p> </div><!-- /.entry-content -->
+ </article></li>
+
+
+
+ <li><article class="hentry">
+ <header>
<h1><a href="http://davidjb.com/blog/2009/07/find-and-replace-across-files-linux-command-line/" rel="bookmark"
title="Permalink to Find and replace across files - Linux command line">Find and replace across files - Linux command&nbsp;line</a></h1>
</header>
@@ -280,42 +310,6 @@
<a class="readmore" href="http://davidjb.com/blog/2010/05/installing-python-2-4-on-ubuntu-10-04-lucid-lynx/">read more</a>
<p>There are <a href="http://davidjb.com/blog/2010/05/installing-python-2-4-on-ubuntu-10-04-lucid-lynx/#disqus_thread">comments</a>.</p> </div><!-- /.entry-content -->
</article></li>
-
-
-
- <li><article class="hentry">
- <header>
- <h1><a href="http://davidjb.com/blog/2013/04/integrating-nginx-and-a-shibboleth-sp-with-fastcgi/" rel="bookmark"
- title="Permalink to Integrating Nginx and a Shibboleth SP with FastCGI">Integrating Nginx and a Shibboleth <span class="caps">SP</span> with&nbsp;FastCGI</a></h1>
- </header>
-
- <div class="entry-content">
- <footer class="post-info">
- <abbr class="published" title="2013-04-22T00:00:00">
- Mon 22 April 2013
- </abbr>
-
- <address class="vcard author">
- By <a class="url fn" href="http://davidjb.com/author/davidjb.html">davidjb</a>
- </address>
- <p>In <a href="http://davidjb.com/category/web.html">Web</a>. </p>
-<p>tags: <a href="http://davidjb.com/tag/nginx.html">Nginx</a><a href="http://davidjb.com/tag/shibboleth.html">Shibboleth</a><a href="http://davidjb.com/tag/fastcgi.html">FastCGI</a></p>
-</footer><!-- /.post-info --> <p><strong>tl;dr</strong>: You can have Nginx with Shibboleth. Rebuild Shibboleth with
-FastCGI support, and recompile Nginx with a custom module:
-<a class="reference external" href="https://bitbucket.org/davidjb/ngx_http_auth_request_module">https://bitbucket.org/davidjb/ngx_http_auth_request_module</a>. You can now
-run the Shibboleth FastCGI authorizer and responder applications and
-successfully&nbsp;authenticate!</p>
-<div class="contents local topic" id="contents">
-<ul class="simple">
-<li><a class="reference internal" href="#background" id="id2">Background</a><ul>
-<li><a class="reference internal" href="#cautionary-note" id="id3">Cautionary&nbsp;note</a></li>
-</ul>
-</li>
-<li><a class="reference internal" href="#install-the-shibboleth-sp-with-fastcgi-support" id="id4">Install the Shibboleth <span class="caps">SP</span> with FastCGI&nbsp;support</a></li>
-<li><a class="reference internal" href="#nginx-with-fastcgi-authorizer-support" id="id5">Nginx ...</a></li></ul></div>
- <a class="readmore" href="http://davidjb.com/blog/2013/04/integrating-nginx-and-a-shibboleth-sp-with-fastcgi/">read more</a>
- <p>There are <a href="http://davidjb.com/blog/2013/04/integrating-nginx-and-a-shibboleth-sp-with-fastcgi/#disqus_thread">comments</a>.</p> </div><!-- /.entry-content -->
- </article></li>
</ol><!-- /#posts-list -->
<p class="paginator">
<a href="http://davidjb.com/author/davidjb3.html">&laquo;</a>
View
63 author/davidjb5.html
@@ -35,6 +35,42 @@
<ol id="posts-list" class="hfeed" start="9">
<li><article class="hentry">
<header>
+ <h1><a href="http://davidjb.com/blog/2013/04/integrating-nginx-and-a-shibboleth-sp-with-fastcgi/" rel="bookmark"
+ title="Permalink to Integrating Nginx and a Shibboleth SP with FastCGI">Integrating Nginx and a Shibboleth <span class="caps">SP</span> with&nbsp;FastCGI</a></h1>
+ </header>
+
+ <div class="entry-content">
+ <footer class="post-info">
+ <abbr class="published" title="2013-04-22T00:00:00">
+ Mon 22 April 2013
+ </abbr>
+
+ <address class="vcard author">
+ By <a class="url fn" href="http://davidjb.com/author/davidjb.html">davidjb</a>
+ </address>
+ <p>In <a href="http://davidjb.com/category/web.html">Web</a>. </p>
+<p>tags: <a href="http://davidjb.com/tag/nginx.html">Nginx</a><a href="http://davidjb.com/tag/shibboleth.html">Shibboleth</a><a href="http://davidjb.com/tag/fastcgi.html">FastCGI</a></p>
+</footer><!-- /.post-info --> <p><strong>tl;dr</strong>: You can have Nginx with Shibboleth. Rebuild Shibboleth with
+FastCGI support, and recompile Nginx with a custom module:
+<a class="reference external" href="https://bitbucket.org/davidjb/ngx_http_auth_request_module">https://bitbucket.org/davidjb/ngx_http_auth_request_module</a>. You can now
+run the Shibboleth FastCGI authorizer and responder applications and
+successfully&nbsp;authenticate!</p>
+<div class="contents local topic" id="contents">
+<ul class="simple">
+<li><a class="reference internal" href="#background" id="id2">Background</a><ul>
+<li><a class="reference internal" href="#cautionary-note" id="id3">Cautionary&nbsp;note</a></li>
+</ul>
+</li>
+<li><a class="reference internal" href="#install-the-shibboleth-sp-with-fastcgi-support" id="id4">Install the Shibboleth <span class="caps">SP</span> with FastCGI&nbsp;support</a></li>
+<li><a class="reference internal" href="#nginx-with-fastcgi-authorizer-support" id="id5">Nginx ...</a></li></ul></div>
+ <a class="readmore" href="http://davidjb.com/blog/2013/04/integrating-nginx-and-a-shibboleth-sp-with-fastcgi/">read more</a>
+ <p>There are <a href="http://davidjb.com/blog/2013/04/integrating-nginx-and-a-shibboleth-sp-with-fastcgi/#disqus_thread">comments</a>.</p> </div><!-- /.entry-content -->
+ </article></li>
+
+
+
+ <li><article class="hentry">
+ <header>
<h1><a href="http://davidjb.com/blog/2012/02/java-http-request-fails-with-javax-net-ssl-sslpeerunverifiedexception-peer-not-authenticated/" rel="bookmark"
title="Permalink to Java HTTP request fails with “javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated”">Java <span class="caps">HTTP</span> request fails with &#8220;javax.net.ssl.SSLPeerUnverifiedException: peer not&nbsp;authenticated&#8221;</a></h1>
</header>
@@ -283,33 +319,6 @@
<a class="readmore" href="http://davidjb.com/blog/2009/12/logged-out-users-cant-bring-up-the-plone-popup-calendar/">read more</a>
<p>There are <a href="http://davidjb.com/blog/2009/12/logged-out-users-cant-bring-up-the-plone-popup-calendar/#disqus_thread">comments</a>.</p> </div><!-- /.entry-content -->
</article></li>
-
-
-
- <li><article class="hentry">
- <header>
- <h1><a href="http://davidjb.com/blog/2011/10/logitech-g930-headphones-audio-quality-under-ubuntu/" rel="bookmark"
- title="Permalink to Logitech G930 Headphones audio quality under Ubuntu">Logitech G930 Headphones audio quality under&nbsp;Ubuntu</a></h1>
- </header>
-
- <div class="entry-content">
- <footer class="post-info">
- <abbr class="published" title="2011-10-24T09:28:00">
- Mon 24 October 2011
- </abbr>
-
- <address class="vcard author">
- By <a class="url fn" href="http://davidjb.com/author/davidjb.html">davidjb</a>
- </address>
- <p>In <a href="http://davidjb.com/category/linux.html">Linux</a>. </p>
-<p>tags: <a href="http://davidjb.com/tag/g930.html">g930</a><a href="http://davidjb.com/tag/headphones.html">headphones</a><a href="http://davidjb.com/tag/linux.html">linux</a><a href="http://davidjb.com/tag/logitech.html">logitech</a><a href="http://davidjb.com/tag/pulseaudio.html">pulseaudio</a><a href="http://davidjb.com/tag/ubuntu.html">ubuntu</a></p>
-</footer><!-- /.post-info --> <p>So I recently purchased a new set of Logitech G930 headphones and am
-currently using them with the latest version of Ubuntu, 11.10.&nbsp; Set up
-was a breeze - just plug, check your PulseAudio config, and play.&nbsp; For
-those of you, like me originally, who were wondering whether the G930 ...</p>
- <a class="readmore" href="http://davidjb.com/blog/2011/10/logitech-g930-headphones-audio-quality-under-ubuntu/">read more</a>
- <p>There are <a href="http://davidjb.com/blog/2011/10/logitech-g930-headphones-audio-quality-under-ubuntu/#disqus_thread">comments</a>.</p> </div><!-- /.entry-content -->
- </article></li>
</ol><!-- /#posts-list -->
<p class="paginator">
<a href="http://davidjb.com/author/davidjb4.html">&laquo;</a>
View
55 author/davidjb6.html
@@ -35,6 +35,33 @@
<ol id="posts-list" class="hfeed" start="9">
<li><article class="hentry">
<header>
+ <h1><a href="http://davidjb.com/blog/2011/10/logitech-g930-headphones-audio-quality-under-ubuntu/" rel="bookmark"
+ title="Permalink to Logitech G930 Headphones audio quality under Ubuntu">Logitech G930 Headphones audio quality under&nbsp;Ubuntu</a></h1>
+ </header>
+
+ <div class="entry-content">
+ <footer class="post-info">
+ <abbr class="published" title="2011-10-24T09:28:00">
+ Mon 24 October 2011
+ </abbr>
+
+ <address class="vcard author">
+ By <a class="url fn" href="http://davidjb.com/author/davidjb.html">davidjb</a>
+ </address>
+ <p>In <a href="http://davidjb.com/category/linux.html">Linux</a>. </p>
+<p>tags: <a href="http://davidjb.com/tag/g930.html">g930</a><a href="http://davidjb.com/tag/headphones.html">headphones</a><a href="http://davidjb.com/tag/linux.html">linux</a><a href="http://davidjb.com/tag/logitech.html">logitech</a><a href="http://davidjb.com/tag/pulseaudio.html">pulseaudio</a><a href="http://davidjb.com/tag/ubuntu.html">ubuntu</a></p>
+</footer><!-- /.post-info --> <p>So I recently purchased a new set of Logitech G930 headphones and am
+currently using them with the latest version of Ubuntu, 11.10.&nbsp; Set up
+was a breeze - just plug, check your PulseAudio config, and play.&nbsp; For
+those of you, like me originally, who were wondering whether the G930 ...</p>
+ <a class="readmore" href="http://davidjb.com/blog/2011/10/logitech-g930-headphones-audio-quality-under-ubuntu/">read more</a>
+ <p>There are <a href="http://davidjb.com/blog/2011/10/logitech-g930-headphones-audio-quality-under-ubuntu/#disqus_thread">comments</a>.</p> </div><!-- /.entry-content -->
+ </article></li>
+
+
+
+ <li><article class="hentry">
+ <header>
<h1><a href="http://davidjb.com/blog/2012/06/members-cant-add-folders-to-plone-via-webdav-401-unauthorized/" rel="bookmark"
title="Permalink to Members can’t add folders to Plone via WebDAV (401 Unauthorized)">Members can&#8217;t add folders to Plone via WebDAV (401&nbsp;Unauthorized)</a></h1>
</header>
@@ -281,34 +308,6 @@
<a class="readmore" href="http://davidjb.com/blog/2011/12/notes-about-redmine-and-github-post-commit-hooks/">read more</a>
<p>There are <a href="http://davidjb.com/blog/2011/12/notes-about-redmine-and-github-post-commit-hooks/#disqus_thread">comments</a>.</p> </div><!-- /.entry-content -->
</article></li>
-
-
-
- <li><article class="hentry">
- <header>
- <h1><a href="http://davidjb.com/blog/2010/07/oh-microsoft-we-do-tire-of-thy-bugs-in-ie/" rel="bookmark"
- title="Permalink to Oh Microsoft, we do tire of thy bugs in IE">Oh Microsoft, we do tire of thy bugs in&nbsp;<span class="caps">IE</span></a></h1>
- </header>
-
- <div class="entry-content">
- <footer class="post-info">
- <abbr class="published" title="2010-07-22T17:20:00">
- Thu 22 July 2010
- </abbr>
-
- <address class="vcard author">
- By <a class="url fn" href="http://davidjb.com/author/davidjb.html">davidjb</a>
- </address>
- <p>In <a href="http://davidjb.com/category/web.html">Web</a>. </p>
-<p>tags: <a href="http://davidjb.com/tag/bug.html">bug</a><a href="http://davidjb.com/tag/css.html">css</a><a href="http://davidjb.com/tag/html.html">html</a><a href="http://davidjb.com/tag/ie.html">IE</a><a href="http://davidjb.com/tag/ie8.html">ie8</a><a href="http://davidjb.com/tag/internet-explorer.html">internet explorer</a><a href="http://davidjb.com/tag/rendering.html">rendering</a><a href="http://davidjb.com/tag/tag.html">tag</a><a href="http://davidjb.com/tag/tags.html">tags</a></p>
-</footer><!-- /.post-info --> <p>Yes, it&#8217;s another post about Microsoft and its poor implementation of
-Internet Explorer. This time it&#8217;s version 8 and its rendering of lists,
-and in specific, links within list items. Most humorously, Microsoft&#8217;s
-own documentation (separate issue; about <a class="reference external" href="http://msdn.microsoft.com/en-us/library/bb250413%28VS.85%29.aspx">rounded corners</a>) gave me a
-laugh when it&nbsp;said ...</p>
- <a class="readmore" href="http://davidjb.com/blog/2010/07/oh-microsoft-we-do-tire-of-thy-bugs-in-ie/">read more</a>
- <p>There are <a href="http://davidjb.com/blog/2010/07/oh-microsoft-we-do-tire-of-thy-bugs-in-ie/#disqus_thread">comments</a>.</p> </div><!-- /.entry-content -->
- </article></li>
</ol><!-- /#posts-list -->
<p class="paginator">
<a href="http://davidjb.com/author/davidjb5.html">&laquo;</a>
View
56 author/davidjb7.html
@@ -35,6 +35,34 @@
<ol id="posts-list" class="hfeed" start="9">
<li><article class="hentry">
<header>
+ <h1><a href="http://davidjb.com/blog/2010/07/oh-microsoft-we-do-tire-of-thy-bugs-in-ie/" rel="bookmark"
+ title="Permalink to Oh Microsoft, we do tire of thy bugs in IE">Oh Microsoft, we do tire of thy bugs in&nbsp;<span class="caps">IE</span></a></h1>
+ </header>
+
+ <div class="entry-content">
+ <footer class="post-info">
+ <abbr class="published" title="2010-07-22T17:20:00">
+ Thu 22 July 2010
+ </abbr>
+
+ <address class="vcard author">
+ By <a class="url fn" href="http://davidjb.com/author/davidjb.html">davidjb</a>
+ </address>
+ <p>In <a href="http://davidjb.com/category/web.html">Web</a>. </p>
+<p>tags: <a href="http://davidjb.com/tag/bug.html">bug</a><a href="http://davidjb.com/tag/css.html">css</a><a href="http://davidjb.com/tag/html.html">html</a><a href="http://davidjb.com/tag/ie.html">IE</a><a href="http://davidjb.com/tag/ie8.html">ie8</a><a href="http://davidjb.com/tag/internet-explorer.html">internet explorer</a><a href="http://davidjb.com/tag/rendering.html">rendering</a><a href="http://davidjb.com/tag/tag.html">tag</a><a href="http://davidjb.com/tag/tags.html">tags</a></p>
+</footer><!-- /.post-info --> <p>Yes, it&#8217;s another post about Microsoft and its poor implementation of
+Internet Explorer. This time it&#8217;s version 8 and its rendering of lists,
+and in specific, links within list items. Most humorously, Microsoft&#8217;s
+own documentation (separate issue; about <a class="reference external" href="http://msdn.microsoft.com/en-us/library/bb250413%28VS.85%29.aspx">rounded corners</a>) gave me a
+laugh when it&nbsp;said ...</p>
+ <a class="readmore" href="http://davidjb.com/blog/2010/07/oh-microsoft-we-do-tire-of-thy-bugs-in-ie/">read more</a>
+ <p>There are <a href="http://davidjb.com/blog/2010/07/oh-microsoft-we-do-tire-of-thy-bugs-in-ie/#disqus_thread">comments</a>.</p> </div><!-- /.entry-content -->
+ </article></li>
+
+
+
+ <li><article class="hentry">
+ <header>
<h1><a href="http://davidjb.com/blog/2010/07/plone-4-local-zeo-blobs-conflict-with-plone-instance/" rel="bookmark"
title="Permalink to Plone 4: Local Zeo blobs conflict with Plone instance">Plone 4: Local Zeo blobs conflict with Plone&nbsp;instance</a></h1>
</header>
@@ -282,34 +310,6 @@
<a class="readmore" href="http://davidjb.com/blog/2009/02/plone-google-calendar-integration/">read more</a>
<p>There are <a href="http://davidjb.com/blog/2009/02/plone-google-calendar-integration/#disqus_thread">comments</a>.</p> </div><!-- /.entry-content -->
</article></li>
-
-
-
- <li><article class="hentry">
- <header>
- <h1><a href="http://davidjb.com/blog/2009/01/plone-how-to-xhtml-compliant-flash-insertion/" rel="bookmark"
- title="Permalink to Plone How-To: XHTML Compliant Flash Insertion">Plone How-To: <span class="caps">XHTML</span> Compliant Flash&nbsp;Insertion</a></h1>
- </header>
-
- <div class="entry-content">
- <footer class="post-info">
- <abbr class="published" title="2009-01-13T16:40:00">
- Tue 13 January 2009
- </abbr>
-
- <address class="vcard author">
- By <a class="url fn" href="http://davidjb.com/author/davidjb.html">davidjb</a>
- </address>
- <p>In <a href="http://davidjb.com/category/plone.html">Plone</a>. </p>
-<p>tags: <a href="http://davidjb.com/tag/filtering.html">filtering</a><a href="http://davidjb.com/tag/flash.html">flash</a><a href="http://davidjb.com/tag/parameters.html">parameters</a><a href="http://davidjb.com/tag/plone.html">plone</a><a href="http://davidjb.com/tag/xhtml.html">xhtml</a></p>
-</footer><!-- /.post-info --> <p>Wow, it seems easy doesn&#8217;t it. Just add an object tag, params, and embed
-and we&#8217;re done, right? Well, sure, if we didn&#8217;t want to adhere to <span class="caps">W3C</span>&nbsp;standards.</p>
-<p>To do the right thing, we need something like&nbsp;this:</p>
-<pre class="code html literal-block">
-<span class="nt">&lt;object</span> <span class="na">type=</span><span class="s">&quot;application/x-shockwave-flash&quot;</span> <span class="na">data=</span><span class="s">&quot;movie.swf&quot;</span> <span class="na">width ...</span></pre>
- <a class="readmore" href="http://davidjb.com/blog/2009/01/plone-how-to-xhtml-compliant-flash-insertion/">read more</a>
- <p>There are <a href="http://davidjb.com/blog/2009/01/plone-how-to-xhtml-compliant-flash-insertion/#disqus_thread">comments</a>.</p> </div><!-- /.entry-content -->
- </article></li>
</ol><!-- /#posts-list -->
<p class="paginator">
<a href="http://davidjb.com/author/davidjb6.html">&laquo;</a>
View
56 author/davidjb8.html
@@ -35,6 +35,34 @@
<ol id="posts-list" class="hfeed" start="9">
<li><article class="hentry">
<header>
+ <h1><a href="http://davidjb.com/blog/2009/01/plone-how-to-xhtml-compliant-flash-insertion/" rel="bookmark"
+ title="Permalink to Plone How-To: XHTML Compliant Flash Insertion">Plone How-To: <span class="caps">XHTML</span> Compliant Flash&nbsp;Insertion</a></h1>
+ </header>
+
+ <div class="entry-content">
+ <footer class="post-info">
+ <abbr class="published" title="2009-01-13T16:40:00">
+ Tue 13 January 2009
+ </abbr>
+
+ <address class="vcard author">
+ By <a class="url fn" href="http://davidjb.com/author/davidjb.html">davidjb</a>
+ </address>
+ <p>In <a href="http://davidjb.com/category/plone.html">Plone</a>. </p>
+<p>tags: <a href="http://davidjb.com/tag/filtering.html">filtering</a><a href="http://davidjb.com/tag/flash.html">flash</a><a href="http://davidjb.com/tag/parameters.html">parameters</a><a href="http://davidjb.com/tag/plone.html">plone</a><a href="http://davidjb.com/tag/xhtml.html">xhtml</a></p>
+</footer><!-- /.post-info --> <p>Wow, it seems easy doesn&#8217;t it. Just add an object tag, params, and embed
+and we&#8217;re done, right? Well, sure, if we didn&#8217;t want to adhere to <span class="caps">W3C</span>&nbsp;standards.</p>
+<p>To do the right thing, we need something like&nbsp;this:</p>
+<pre class="code html literal-block">
+<span class="nt">&lt;object</span> <span class="na">type=</span><span class="s">&quot;application/x-shockwave-flash&quot;</span> <span class="na">data=</span><span class="s">&quot;movie.swf&quot;</span> <span class="na">width ...</span></pre>
+ <a class="readmore" href="http://davidjb.com/blog/2009/01/plone-how-to-xhtml-compliant-flash-insertion/">read more</a>
+ <p>There are <a href="http://davidjb.com/blog/2009/01/plone-how-to-xhtml-compliant-flash-insertion/#disqus_thread">comments</a>.</p> </div><!-- /.entry-content -->
+ </article></li>
+
+
+
+ <li><article class="hentry">
+ <header>
<h1><a href="http://davidjb.com/blog/2009/04/plone-issues-with-products/" rel="bookmark"
title="Permalink to Plone: Issues with products">Plone: Issues with&nbsp;products</a></h1>
</header>
@@ -279,34 +307,6 @@
<a class="readmore" href="http://davidjb.com/blog/2009/08/plone-re-ordering-viewlets/">read more</a>
<p>There are <a href="http://davidjb.com/blog/2009/08/plone-re-ordering-viewlets/#disqus_thread">comments</a>.</p> </div><!-- /.entry-content -->
</article></li>
-
-
-
- <li><article class="hentry">
- <header>
- <h1><a href="http://davidjb.com/blog/2008/11/plone-relative-recent-changes-portlets/" rel="bookmark"
- title="Permalink to Plone: Relative ‘Recent Changes’ Portlets">Plone: Relative &#8216;Recent Changes&#8217;&nbsp;Portlets</a></h1>
- </header>
-
- <div class="entry-content">
- <footer class="post-info">
- <abbr class="published" title="2008-11-20T11:33:00">
- Thu 20 November 2008
- </abbr>
-
- <address class="vcard author">
- By <a class="url fn" href="http://davidjb.com/author/davidjb.html">davidjb</a>
- </address>
- <p>In <a href="http://davidjb.com/category/plone.html">Plone</a>. </p>
-<p>tags: <a href="http://davidjb.com/tag/features.html">features</a><a href="http://davidjb.com/tag/plone.html">plone</a><a href="http://davidjb.com/tag/portlets.html">portlets</a><a href="http://davidjb.com/tag/product.html">product</a><a href="http://davidjb.com/tag/python.html">python</a></p>
-</footer><!-- /.post-info --> <p>The problem I&#8217;ve been faced with today on our Plone systems is that I
-need to created a &#8216;Recent Changes&#8217; portlet that&#8217;s relative to where the
-user is on the&nbsp;site.</p>
-<p>Now, the standard portlet doesn&#8217;t do anything for me, so that&#8217;s pretty
-useless. I had ...</p>
- <a class="readmore" href="http://davidjb.com/blog/2008/11/plone-relative-recent-changes-portlets/">read more</a>
- <p>There are <a href="http://davidjb.com/blog/2008/11/plone-relative-recent-changes-portlets/#disqus_thread">comments</a>.</p> </div><!-- /.entry-content -->
- </article></li>
</ol><!-- /#posts-list -->
<p class="paginator">
<a href="http://davidjb.com/author/davidjb7.html">&laquo;</a>
View
55 author/davidjb9.html
@@ -35,6 +35,34 @@
<ol id="posts-list" class="hfeed" start="9">
<li><article class="hentry">
<header>
+ <h1><a href="http://davidjb.com/blog/2008/11/plone-relative-recent-changes-portlets/" rel="bookmark"
+ title="Permalink to Plone: Relative ‘Recent Changes’ Portlets">Plone: Relative &#8216;Recent Changes&#8217;&nbsp;Portlets</a></h1>
+ </header>
+
+ <div class="entry-content">
+ <footer class="post-info">
+ <abbr class="published" title="2008-11-20T11:33:00">
+ Thu 20 November 2008
+ </abbr>
+
+ <address class="vcard author">
+ By <a class="url fn" href="http://davidjb.com/author/davidjb.html">davidjb</a>
+ </address>
+ <p>In <a href="http://davidjb.com/category/plone.html">Plone</a>. </p>
+<p>tags: <a href="http://davidjb.com/tag/features.html">features</a><a href="http://davidjb.com/tag/plone.html">plone</a><a href="http://davidjb.com/tag/portlets.html">portlets</a><a href="http://davidjb.com/tag/product.html">product</a><a href="http://davidjb.com/tag/python.html">python</a></p>
+</footer><!-- /.post-info --> <p>The problem I&#8217;ve been faced with today on our Plone systems is that I
+need to created a &#8216;Recent Changes&#8217; portlet that&#8217;s relative to where the
+user is on the&nbsp;site.</p>
+<p>Now, the standard portlet doesn&#8217;t do anything for me, so that&#8217;s pretty
+useless. I had ...</p>
+ <a class="readmore" href="http://davidjb.com/blog/2008/11/plone-relative-recent-changes-portlets/">read more</a>
+ <p>There are <a href="http://davidjb.com/blog/2008/11/plone-relative-recent-changes-portlets/#disqus_thread">comments</a>.</p> </div><!-- /.entry-content -->
+ </article></li>
+
+
+
+ <li><article class="hentry">
+ <header>
<h1><a href="http://davidjb.com/blog/2010/07/plone-running-plone-without-copies-of-blobs/" rel="bookmark"
title="Permalink to Plone: running Plone without copies of blobs">Plone: running Plone without copies of&nbsp;blobs</a></h1>
</header>
@@ -280,33 +308,6 @@
<a class="readmore" href="http://davidjb.com/blog/2010/03/plonezope-utilising-zope-testrecorder-for-unit-testing/">read more</a>
<p>There are <a href="http://davidjb.com/blog/2010/03/plonezope-utilising-zope-testrecorder-for-unit-testing/#disqus_thread">comments</a>.</p> </div><!-- /.entry-content -->
</article></li>
-
-
-
- <li><article class="hentry">
- <header>
- <h1><a href="http://davidjb.com/blog/2011/05/putting-a-nasa-human-space-flight-sightings-rss-feed-into-your-calendar-program/" rel="bookmark"
- title="Permalink to Putting a NASA Human Space Flight Sightings RSS feed into your calendar program">Putting a <span class="caps">NASA</span> Human Space Flight Sightings <span class="caps">RSS</span> feed into your calendar&nbsp;program</a></h1>
- </header>
-
- <div class="entry-content">
- <footer class="post-info">
- <abbr class="published" title="2011-05-14T07:34:00">
- Sat 14 May 2011
- </abbr>
-
- <address class="vcard author">
- By <a class="url fn" href="http://davidjb.com/author/davidjb.html">davidjb</a>
- </address>
- <p>In <a href="http://davidjb.com/category/programming.html">Programming</a>. </p>
-<p>tags: <a href="http://davidjb.com/tag/nasa.html">nasa</a><a href="http://davidjb.com/tag/pipes.html">pipes</a><a href="http://davidjb.com/tag/sightings.html">sightings</a><a href="http://davidjb.com/tag/space.html">space</a><a href="http://davidjb.com/tag/yahoo.html">yahoo</a><a href="http://davidjb.com/tag/yahoo-pipes.html">yahoo pipes</a></p>
-</footer><!-- /.post-info --> <p>I stumbled upon <a class="reference external" href="http://spaceflight.nasa.gov/realdata/sightings/index.html"><span class="caps">NASA</span>&#8217;s space sightings page</a> a little while ago. For
-those of you that don&#8217;t know, it&#8217;s a great site that lists opportunities
-to view satellites that will be visible in your location and when/where
-to look to see them. Amongst the fact this ...</p>
- <a class="readmore" href="http://davidjb.com/blog/2011/05/putting-a-nasa-human-space-flight-sightings-rss-feed-into-your-calendar-program/">read more</a>
- <p>There are <a href="http://davidjb.com/blog/2011/05/putting-a-nasa-human-space-flight-sightings-rss-feed-into-your-calendar-program/#disqus_thread">comments</a>.</p> </div><!-- /.entry-content -->
- </article></li>
</ol><!-- /#posts-list -->
<p class="paginator">
<a href="http://davidjb.com/author/davidjb8.html">&laquo;</a>
View
173 blog/2013/07/all-fanstatic-resources-being-served-with-texthtml-mimetype-by-webobwsgi/index.html
@@ -0,0 +1,173 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <title>All Fanstatic resources being served with ‘text/html’ mimetype by WebOb/WSGI</title>
+ <meta charset="utf-8" />
+ <link rel="stylesheet" href="http://davidjb.com/theme/css/main.css" type="text/css" />
+ <link href="http://davidjb.com/feeds/all.atom.xml" type="application/atom+xml" rel="alternate" title="DavidJB.com Atom Feed" />
+
+ <!--[if IE]>
+ <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script><![endif]-->
+
+ <!--[if lte IE 7]>
+ <link rel="stylesheet" type="text/css" media="all" href="http://davidjb.com/css/ie.css"/>
+ <script src="http://davidjb.com/js/IE8.js" type="text/javascript"></script><![endif]-->
+
+ <!--[if lt IE 7]>
+ <link rel="stylesheet" type="text/css" media="all" href="http://davidjb.com/css/ie6.css"/><![endif]-->
+
+</head>
+
+<body id="index" class="home">
+ <header id="banner" class="body">
+ <h1><a href="http://davidjb.com/">DavidJB.com <strong>Ramblings about Plone, Pyramid, Python, the web, Linux, roses and more, by David Beitey.</strong></a></h1>
+ <nav><ul>
+ <li><a href="http://davidjb.com/about.html">About&nbsp;me</a></li>
+ <li><a href="http://davidjb.com/blog/index.html">Blog</a></li>
+ <li><a href="http://davidjb.com/projects.html">Projects</a></li>
+ </ul></nav>
+ </header><!-- /#banner -->
+ <section id="content" class="body">
+ <article>
+ <header>
+ <h1 class="entry-title">
+ <a href="http://davidjb.com/blog/2013/07/all-fanstatic-resources-being-served-with-texthtml-mimetype-by-webobwsgi/" rel="bookmark"
+ title="Permalink to All Fanstatic resources being served with ‘text/html’ mimetype by WebOb/WSGI">All Fanstatic resources being served with &#8216;text/html&#8217; mimetype by&nbsp;WebOb/<span class="caps">WSGI</span></a></h1>
+ <a href="http://twitter.com/share" class="twitter-share-button" data-count="horizontal" data-via="davidjb_">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script>
+ </header>
+
+ <div class="entry-content">
+ <footer class="post-info">
+ <abbr class="published" title="2013-07-29T00:00:00">
+ Mon 29 July 2013
+ </abbr>
+
+ <address class="vcard author">
+ By <a class="url fn" href="http://davidjb.com/author/davidjb.html">davidjb</a>
+ </address>
+ <p>In <a href="http://davidjb.com/category/web.html">Web</a>. </p>
+
+</footer><!-- /.post-info --> <p>If you&#8217;re finding that you&#8217;re using <a class="reference external" href="http://fanstatic.org">Fanstatic</a> to
+serve static resources within your Python-based server process, you may be left
+scracthing your head if you suddenly find that resources aren&#8217;t being served
+correctly. For me, this was manifesting as an incorrect <tt class="docutils literal"><span class="pre">Content-Type</span></tt>
+header, always being set to <tt class="docutils literal">text/html</tt> for any type of static file being
+served. As a side effect, because I&#8217;m using <a class="reference external" href="http://diazo.org">Diazo</a> to
+theme my backend Pyramid application, this was automatically seeing this
+mimetype being returned to the browser and trying to &#8220;theme&#8221; the raw files.
+The global picture looked like a whole bunch of web fonts that weren&#8217;t loading
+on my end&nbsp;application.</p>
+<p>Whoops. There goes a&nbsp;morning.</p>
+<div class="section" id="solution">
+<h2>Solution</h2>
+<p>Good news - it&#8217;s easy; it&#8217;s just a difference between environments on two
+different types of hosts. Deep down under the hood, Fanstatic is serving
+files using <tt class="docutils literal">webob.static.FileApp</tt> and once you know this key piece of
+information, it&#8217;s easy to see that WebOb is using the Python <tt class="docutils literal">mimetypes</tt>
+module and its <tt class="docutils literal">mimetypes.guess_type(filename)</tt> function to lookup
+what type a file&nbsp;is.</p>
+<p>So, you just need to make sure that the <tt class="docutils literal">mimetypes</tt> module is able to know
+about the extensions you&#8217;re serving. It uses <tt class="docutils literal">mimetypes.knownfiles</tt> to look
+up locations for finding mime types
+(<a class="reference external" href="http://docs.python.org/2/library/mimetypes.html#mimetypes.knownfiles">http://docs.python.org/2/library/mimetypes.html#mimetypes.knownfiles</a>).
+You&#8217;ll notice that with the different file locations listed, a different
+host with different services installed will know about different mimetypes.
+For instance, if you&#8217;re got Apache or Nginx installed on your host, you&#8217;ll
+probably see their <tt class="docutils literal">mime.types</tt> file paths in the list, causing your
+application to (inadvertently) know about a lot more file&nbsp;extensions.</p>
+<p>In case your system is like mine and doesn&#8217;t know about web fonts, here&#8217;s what
+I&#8217;ve taken to putting into <tt class="docutils literal">/usr/local/etc/mime.types</tt>:</p>
+<pre class="code python literal-block">
+<span class="n">image</span><span class="o">/</span><span class="n">svg</span><span class="o">+</span><span class="n">xml</span> <span class="n">svg</span> <span class="n">svgz</span>
+<span class="n">application</span><span class="o">/</span><span class="n">vnd</span><span class="o">.</span><span class="n">ms</span><span class="o">-</span><span class="n">fontobject</span> <span class="n">eot</span>
+<span class="n">application</span><span class="o">/</span><span class="n">x</span><span class="o">-</span><span class="n">font</span><span class="o">-</span><span class="n">ttf</span> <span class="n">tff</span>
+<span class="n">font</span><span class="o">/</span><span class="n">opentype</span> <span class="n">ott</span>
+<span class="n">font</span><span class="o">/</span><span class="n">x</span><span class="o">-</span><span class="n">woff</span> <span class="n">woff</span>
+<span class="o">...</span> <span class="nb">any</span> <span class="n">other</span> <span class="nb">file</span> <span class="n">types</span> <span class="n">your</span> <span class="n">system</span> <span class="n">doesn</span><span class="s">'t know about...</span>
+</pre>
+<p>and restarting my Python process. You can confirm if the above worked
+by checking&nbsp;using:</p>
+<pre class="literal-block">
+python -c 'import mimetypes; print(mimetypes.knownfiles)'
+</pre>
+<p>and&nbsp;also:</p>
+<pre class="literal-block">
+&gt;&gt;&gt; import mimetypes; print(mimetypes.guess_type('foo.woff'))
+('font/x-woff', None)
+</pre>
+<p>to make sure something that isn&#8217;t <tt class="docutils literal">(None, None)</tt> returned.</p>
+<p>That&#8217;s&nbsp;all.</p>
+</div>
+
+ </div><!-- /.entry-content -->
+ <div class="comments">
+ <h2>Comments !</h2>
+ <div id="disqus_thread"></div>
+ <script type="text/javascript">
+ var disqus_identifier = "blog/2013/07/all-fanstatic-resources-being-served-with-texthtml-mimetype-by-webobwsgi/";
+ var disqus_url = "http://davidjb.com/blog/2013/07/all-fanstatic-resources-being-served-with-texthtml-mimetype-by-webobwsgi/";
+ (function() {
+ var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
+ dsq.src = 'http://davidjb.disqus.com/embed.js';
+ (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
+ })();
+ </script>
+ </div>
+
+ </article>
+</section>
+ <section id="extras" class="body">
+ <div class="blogroll">
+ <h2>blogroll</h2>
+ <ul>
+ <li><a href="http://planet.plone.org">Planet Plone</a></li>
+ <li><a href="http://jcu.me">jcu.me Research Porfolio</a></li>
+ <li><a href="http://xckd.com">XKCD</a></li>
+ <li><a href="http://appleinsider.com/">Apple Insider</a></li>
+ <li><a href="http://git.io/djb">Latest coding activity</a></li>
+ <li><a href="http://www.ozbargain.com.au">OzBargain</a></li>
+ </ul>
+ </div><!-- /.blogroll -->
+ <div class="social">
+ <h2>social</h2>
+ <ul>
+ <li><a href="http://davidjb.com/feeds/all.atom.xml" type="application/atom+xml" rel="alternate">atom feed</a></li>
+
+ <li><a href="http://git.io/djb">GitHub</a></li>
+ <li><a href="http://twitter.com/davidjb_">Twitter</a></li>
+ <li><a href="http://linkedin.com/in/davidbeitey">LinkedIn</a></li>
+ <li><a href="http://facebook.com/david.beitey">Facebook</a></li>
+ <li><a href="https://plus.google.com/u/0/106527454335411502430">Google+</a></li>
+ </ul>
+ </div><!-- /.social -->
+ </section><!-- /#extras -->
+
+ <footer id="contentinfo" class="body">
+ <address id="about" class="vcard body">
+ Proudly powered by <a href="http://getpelican.com/">Pelican</a>, which takes great advantage of <a href="http://python.org">Python</a>.
+ </address><!-- /#about -->
+
+ <p>The theme is by <a href="http://coding.smashingmagazine.com/2009/08/04/designing-a-html-5-layout-from-scratch/">Smashing Magazine</a>, thanks!</p>
+ </footer><!-- /#contentinfo -->
+
+ <script type="text/javascript">
+ var _gaq = _gaq || [];
+ _gaq.push(['_setAccount', 'UA-24253455-1']);
+ _gaq.push(['_trackPageview']);
+ (function() {
+ var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+ ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+ var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+ })();
+ </script>
+<script type="text/javascript">
+ var disqus_shortname = 'davidjb';
+ (function () {
+ var s = document.createElement('script'); s.async = true;
+ s.type = 'text/javascript';
+ s.src = 'http://' + disqus_shortname + '.disqus.com/count.js';
+ (document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s);
+ }());
+</script>
+</body>
+</html>
View
186 category/web.html
@@ -32,10 +32,10 @@
<aside id="featured" class="body">
<article>
- <h1 class="entry-title"><a href="http://davidjb.com/blog/2013/05/attributes-not-released-to-new-shibboleth-service-provider-sp/">Attributes not released to new Shibboleth Service Provider&nbsp;(<span class="caps">SP</span>)</a></h1>
+ <h1 class="entry-title"><a href="http://davidjb.com/blog/2013/07/all-fanstatic-resources-being-served-with-texthtml-mimetype-by-webobwsgi/">All Fanstatic resources being served with &#8216;text/html&#8217; mimetype by&nbsp;WebOb/<span class="caps">WSGI</span></a></h1>
<footer class="post-info">
- <abbr class="published" title="2013-05-28T00:00:00">
- Tue 28 May 2013
+ <abbr class="published" title="2013-07-29T00:00:00">
+ Mon 29 July 2013
</abbr>
<address class="vcard author">
@@ -43,77 +43,58 @@ <h1 class="entry-title"><a href="http://davidjb.com/blog/2013/05/attributes-not-
</address>
<p>In <a href="http://davidjb.com/category/web.html">Web</a>. </p>
-</footer><!-- /.post-info --><p>Just created a new Shibboleth Service Provider (<span class="caps">SP</span>) instance and found an
-Identity Providers (IdPs) is not releasing attributes to you? Don&#8217;t
-worry, you&#8217;re not alone. In fact, the issue is far more common than you think,
-despite a lack of documentation on the&nbsp;web.</p>
-<div class="section" id="confirming-the-problem">
-<h2>Confirming the&nbsp;problem</h2>
-<p>Firstly, make sure that your Shibboleth <span class="caps">SP</span> configuration is, as best you can
-tell, correct. Also, make sure that your <tt class="docutils literal">shibd</tt> daemon has been
-restarted after any configuration changes you&#8217;ve made (and your
-FastCGI <tt class="docutils literal">shibauthorizer</tt> and <tt class="docutils literal">shibresponder</tt> applications too, if you&#8217;re
-using&nbsp;those).</p>
-<p>If you&#8217;re sure about the above, or just roughly sure that your <span class="caps">SP</span> configuration
-is correct, then try to access your Shibboleth protected resource. If you
-receive one of a variety of different intermediate errors - such as those
-from an IdP page about missing metadata, or similar - then your <span class="caps">SP</span>&#8217;s security
-information hasn&#8217;t yet been propagated within your Federation (or not yet to
-that specific&nbsp;IdP).</p>
-<p>If you don&#8217;t receive an error message from an IdP or your Shibboleth <span class="caps">SP</span>, you
-will likely end up at your application, assuming your web server configuration
-is&nbsp;correct.</p>
-<p>Once you&#8217;re here, then you may find, as I did, that the only Shibboleth user
-attribute that was being sent through from <tt class="docutils literal">shibd</tt> to the application was the
-<tt class="docutils literal">TransientId</tt>. If you enable debug logging on your Shibboleth <span class="caps">SP</span>, then
-you&#8217;ll see in the logs that no attributes are actually being released from that
-given IdP. It&#8217;s worth noting that this is almost certainly going to be an
-intermittent issue for you &#8212; some IdPs will release attributes and others
-flatly refuse. <strong>If you&#8217;re seeing this, then you&#8217;ve hit the same issue as&nbsp;me.</strong></p>
-</div>
-<div class="section" id="about-the-issue">
-<h2>About the&nbsp;issue</h2>
-<p>Some IdPs do not allow attributes to be released to new (arbitrary) SPs until
-such point as the IdP administrator manually reconfigures the IdP&#8217;s attribute
-filter. In some limited cases that I&#8217;ve been exposed to, this situation may
-have been resolved by correcting the attributes being released by the IdP in
-the first place, or correcting file system permission on files, but for the
-most part, it&#8217;s because some IdPs simply need to be manually configured&nbsp;first.</p>
-<p>The IdPs that work with your <span class="caps">SP</span> straight out, however, will be those that
-are allowing automated attribute release. In the case of the <a class="reference external" href="http://aaf.edu.au">Australian
-Access Federation (<span class="caps">AAF</span>)</a>, which my SPs are a part of,
-a few - around 40% - of IdPs are using automated release. The unfortunate
-situation is the rest of&nbsp;them.</p>
-<p>This problem means that your <span class="caps">SP</span> <strong>will not</strong> work with all those other IdPs
-until someone tries to log into your application, and eventually complains to
-you about it. This situation represents an administrative nightmare, since
-a federation, such as the <span class="caps">AAF</span>, has 40+ identity providers, and trying to
-contact each and every IdP to get them to check your <span class="caps">SP</span> and application is
-untenable. Imagine having to do the same for multiple SPs - the workload and
-overhead just increased by factor of 2 or&nbsp;3.</p>
-<p>Alternatively, you could just let your application fail against those IdPs
-that don&#8217;t release attributes; being the good application developer I am,
-I&#8217;m not comfortable building something I know will fail more than half of the&nbsp;time.</p>
-</div>
-<div class="section" id="conclusion-future">
-<h2>Conclusion <span class="amp">&amp;</span>&nbsp;Future</h2>
-<p>My experience directly relates to my <span class="caps">SP</span> being part of the Australian Access
-Federation (<span class="caps">AAF</span>), so other federation experiences may differ. The reason
-the the issue exists is, so far as I&#8217;ve been made aware, because of the variety
-of IdPs that are out there, the differences in their policies and&nbsp;configurations.</p>
-<p>This issue will continue to persist until such time as automated
-attribute release and configuration is allowed from all IdPs. Given how much
-control some IdPs feel they need, this will be a problem for a long time to
-come. I am following this up with the <span class="caps">AAF</span> in this specific case, so we&#8217;ll
-see what comes of&nbsp;it.</p>
-<p>Unfortunately, this represents a failure to trust the Federation that IdPs
-have subscribed to be a part of. In my opinion, that&#8217;s a complete breakdown
-of the nature of what the Federation should be &#8212; cross-institution
-authentication for all that <em>&#8216;just works&#8217;</em>. Realistically, it&#8217;s down to the
-end-user whether they release their attributes to a service anyway &#8212; and
-that&#8217;s exactly how other <span class="caps">SSO</span> providers like OpenID&nbsp;work.</p>
+</footer><!-- /.post-info --><p>If you&#8217;re finding that you&#8217;re using <a class="reference external" href="http://fanstatic.org">Fanstatic</a> to
+serve static resources within your Python-based server process, you may be left
+scracthing your head if you suddenly find that resources aren&#8217;t being served
+correctly. For me, this was manifesting as an incorrect <tt class="docutils literal"><span class="pre">Content-Type</span></tt>
+header, always being set to <tt class="docutils literal">text/html</tt> for any type of static file being
+served. As a side effect, because I&#8217;m using <a class="reference external" href="http://diazo.org">Diazo</a> to
+theme my backend Pyramid application, this was automatically seeing this
+mimetype being returned to the browser and trying to &#8220;theme&#8221; the raw files.
+The global picture looked like a whole bunch of web fonts that weren&#8217;t loading
+on my end&nbsp;application.</p>
+<p>Whoops. There goes a&nbsp;morning.</p>
+<div class="section" id="solution">
+<h2>Solution</h2>
+<p>Good news - it&#8217;s easy; it&#8217;s just a difference between environments on two
+different types of hosts. Deep down under the hood, Fanstatic is serving
+files using <tt class="docutils literal">webob.static.FileApp</tt> and once you know this key piece of
+information, it&#8217;s easy to see that WebOb is using the Python <tt class="docutils literal">mimetypes</tt>
+module and its <tt class="docutils literal">mimetypes.guess_type(filename)</tt> function to lookup
+what type a file&nbsp;is.</p>
+<p>So, you just need to make sure that the <tt class="docutils literal">mimetypes</tt> module is able to know
+about the extensions you&#8217;re serving. It uses <tt class="docutils literal">mimetypes.knownfiles</tt> to look
+up locations for finding mime types
+(<a class="reference external" href="http://docs.python.org/2/library/mimetypes.html#mimetypes.knownfiles">http://docs.python.org/2/library/mimetypes.html#mimetypes.knownfiles</a>).
+You&#8217;ll notice that with the different file locations listed, a different
+host with different services installed will know about different mimetypes.
+For instance, if you&#8217;re got Apache or Nginx installed on your host, you&#8217;ll
+probably see their <tt class="docutils literal">mime.types</tt> file paths in the list, causing your
+application to (inadvertently) know about a lot more file&nbsp;extensions.</p>
+<p>In case your system is like mine and doesn&#8217;t know about web fonts, here&#8217;s what
+I&#8217;ve taken to putting into <tt class="docutils literal">/usr/local/etc/mime.types</tt>:</p>
+<pre class="code python literal-block">
+<span class="n">image</span><span class="o">/</span><span class="n">svg</span><span class="o">+</span><span class="n">xml</span> <span class="n">svg</span> <span class="n">svgz</span>
+<span class="n">application</span><span class="o">/</span><span class="n">vnd</span><span class="o">.</span><span class="n">ms</span><span class="o">-</span><span class="n">fontobject</span> <span class="n">eot</span>
+<span class="n">application</span><span class="o">/</span><span class="n">x</span><span class="o">-</span><span class="n">font</span><span class="o">-</span><span class="n">ttf</span> <span class="n">tff</span>
+<span class="n">font</span><span class="o">/</span><span class="n">opentype</span> <span class="n">ott</span>
+<span class="n">font</span><span class="o">/</span><span class="n">x</span><span class="o">-</span><span class="n">woff</span> <span class="n">woff</span>
+<span class="o">...</span> <span class="nb">any</span> <span class="n">other</span> <span class="nb">file</span> <span class="n">types</span> <span class="n">your</span> <span class="n">system</span> <span class="n">doesn</span><span class="s">'t know about...</span>
+</pre>
+<p>and restarting my Python process. You can confirm if the above worked
+by checking&nbsp;using:</p>
+<pre class="literal-block">
+python -c 'import mimetypes; print(mimetypes.knownfiles)'
+</pre>
+<p>and&nbsp;also:</p>
+<pre class="literal-block">
+&gt;&gt;&gt; import mimetypes; print(mimetypes.guess_type('foo.woff'))
+('font/x-woff', None)
+</pre>
+<p>to make sure something that isn&#8217;t <tt class="docutils literal">(None, None)</tt> returned.</p>
+<p>That&#8217;s&nbsp;all.</p>
</div>
-<p>There are <a href="http://davidjb.com/blog/2013/05/attributes-not-released-to-new-shibboleth-service-provider-sp/#disqus_thread">comments</a>.</p> </article>
+<p>There are <a href="http://davidjb.com/blog/2013/07/all-fanstatic-resources-being-served-with-texthtml-mimetype-by-webobwsgi/#disqus_thread">comments</a>.</p> </article>
</aside><!-- /#featured -->
<section id="content" class="body">
<h1>Other articles</h1>
@@ -124,6 +105,35 @@ <h1 class="entry-title"><a href="http://davidjb.com/blog/2013/05/attributes-not-
<li><article class="hentry">
<header>
+ <h1><a href="http://davidjb.com/blog/2013/05/attributes-not-released-to-new-shibboleth-service-provider-sp/" rel="bookmark"
+ title="Permalink to Attributes not released to new Shibboleth Service Provider (SP)">Attributes not released to new Shibboleth Service Provider&nbsp;(<span class="caps">SP</span>)</a></h1>
+ </header>
+
+ <div class="entry-content">
+ <footer class="post-info">
+ <abbr class="published" title="2013-05-28T00:00:00">
+ Tue 28 May 2013
+ </abbr>
+
+ <address class="vcard author">
+ By <a class="url fn" href="http://davidjb.com/author/davidjb.html">davidjb</a>
+ </address>
+ <p>In <a href="http://davidjb.com/category/web.html">Web</a>. </p>
+
+</footer><!-- /.post-info --> <p>Just created a new Shibboleth Service Provider (<span class="caps">SP</span>) instance and found an
+Identity Providers (IdPs) is not releasing attributes to you? Don&#8217;t
+worry, you&#8217;re not alone. In fact, the issue is far more common than you think,
+despite a lack of documentation on the&nbsp;web.</p>
+<div class="section" id="confirming-the-problem">
+<h2>Confirming the&nbsp;problem ...</h2></div>
+ <a class="readmore" href="http://davidjb.com/blog/2013/05/attributes-not-released-to-new-shibboleth-service-provider-sp/">read more</a>
+ <p>There are <a href="http://davidjb.com/blog/2013/05/attributes-not-released-to-new-shibboleth-service-provider-sp/#disqus_thread">comments</a>.</p> </div><!-- /.entry-content -->
+ </article></li>
+
+
+
+ <li><article class="hentry">
+ <header>
<h1><a href="http://davidjb.com/blog/2013/05/uwsgi-and-libxml2-conflicts-aka-installing-uwsgi-with-a-custom-libxml2/" rel="bookmark"
title="Permalink to uWSGI and libxml2 conflicts (aka Installing uWSGI with a custom libxml2)">uWSGI and libxml2 conflicts (aka Installing uWSGI with a custom&nbsp;libxml2)</a></h1>
</header>
@@ -348,36 +358,6 @@ <h1 class="entry-title"><a href="http://davidjb.com/blog/2013/05/attributes-not-
<a class="readmore" href="http://davidjb.com/blog/2010/07/oh-microsoft-we-do-tire-of-thy-bugs-in-ie/">read more</a>
<p>There are <a href="http://davidjb.com/blog/2010/07/oh-microsoft-we-do-tire-of-thy-bugs-in-ie/#disqus_thread">comments</a>.</p> </div><!-- /.entry-content -->
</article></li>
-
-
-
- <li><article class="hentry">
- <header>
- <h1><a href="http://davidjb.com/blog/2010/01/css-internet-explorer-and-self-imposed-limitations-plone/" rel="bookmark"
- title="Permalink to CSS: Internet Explorer and Self-Imposed Limitations (+ Plone)"><span class="caps">CSS</span>: Internet Explorer and Self-Imposed Limitations (+&nbsp;Plone)</a></h1>
- </header>
-
- <div class="entry-content">
- <footer class="post-info">
- <abbr class="published" title="2010-01-28T11:52:00">
- Thu 28 January 2010
- </abbr>
-
- <address class="vcard author">
- By <a class="url fn" href="http://davidjb.com/author/davidjb.html">davidjb</a>
- </address>
- <p>In <a href="http://davidjb.com/category/web.html">Web</a>. </p>
-<p>tags: <a href="http://davidjb.com/tag/bug.html">bug</a><a href="http://davidjb.com/tag/css.html">css</a><a href="http://davidjb.com/tag/ie.html">IE</a><a href="http://davidjb.com/tag/issue.html">issue</a><a href="http://davidjb.com/tag/limitation.html">limitation</a><a href="http://davidjb.com/tag/plone.html">plone</a><a href="http://davidjb.com/tag/problem.html">problem</a><a href="http://davidjb.com/tag/styles.html">styles</a><a href="http://davidjb.com/tag/stylesheets.html">stylesheets</a></p>
-</footer><!-- /.post-info --> <p>Microsoft and <span class="caps">IE</span> are insane.&nbsp; Yes, we all knew this, but
-here&#8217;s the&nbsp;proof:</p>
-<pre class="literal-block">
-IE won't accept more than 30 style sheets to be loaded via &lt;style&gt; tags within a single page.
-</pre>
-<p>Insanity?&nbsp; Yes.&nbsp; It&#8217;s made even worse by the fact they openly admit this
-lunacy!&nbsp; See ...</p>
- <a class="readmore" href="http://davidjb.com/blog/2010/01/css-internet-explorer-and-self-imposed-limitations-plone/">read more</a>
- <p>There are <a href="http://davidjb.com/blog/2010/01/css-internet-explorer-and-self-imposed-limitations-plone/#disqus_thread">comments</a>.</p> </div><!-- /.entry-content -->
- </article></li>
</ol><!-- /#posts-list -->
<p class="paginator">
Page 1 / 2
View
30 category/web2.html
@@ -35,6 +35,36 @@
<ol id="posts-list" class="hfeed" start="9">
<li><article class="hentry">
<header>
+ <h1><a href="http://davidjb.com/blog/2010/01/css-internet-explorer-and-self-imposed-limitations-plone/" rel="bookmark"
+ title="Permalink to CSS: Internet Explorer and Self-Imposed Limitations (+ Plone)"><span class="caps">CSS</span>: Internet Explorer and Self-Imposed Limitations (+&nbsp;Plone)</a></h1>
+ </header>
+
+ <div class="entry-content">
+ <footer class="post-info">
+ <abbr class="published" title="2010-01-28T11:52:00">
+ Thu 28 January 2010
+ </abbr>
+
+ <address class="vcard author">
+ By <a class="url fn" href="http://davidjb.com/author/davidjb.html">davidjb</a>
+ </address>
+ <p>In <a href="http://davidjb.com/category/web.html">Web</a>. </p>
+<p>tags: <a href="http://davidjb.com/tag/bug.html">bug</a><a href="http://davidjb.com/tag/css.html">css</a><a href="http://davidjb.com/tag/ie.html">IE</a><a href="http://davidjb.com/tag/issue.html">issue</a><a href="http://davidjb.com/tag/limitation.html">limitation</a><a href="http://davidjb.com/tag/plone.html">plone</a><a href="http://davidjb.com/tag/problem.html">problem</a><a href="http://davidjb.com/tag/styles.html">styles</a><a href="http://davidjb.com/tag/stylesheets.html">stylesheets</a></p>
+</footer><!-- /.post-info --> <p>Microsoft and <span class="caps">IE</span> are insane.&nbsp; Yes, we all knew this, but
+here&#8217;s the&nbsp;proof:</p>
+<pre class="literal-block">
+IE won't accept more than 30 style sheets to be loaded via &lt;style&gt; tags within a single page.
+</pre>
+<p>Insanity?&nbsp; Yes.&nbsp; It&#8217;s made even worse by the fact they openly admit this
+lunacy!&nbsp; See ...</p>
+ <a class="readmore" href="http://davidjb.com/blog/2010/01/css-internet-explorer-and-self-imposed-limitations-plone/">read more</a>
+ <p>There are <a href="http://davidjb.com/blog/2010/01/css-internet-explorer-and-self-imposed-limitations-plone/#disqus_thread">comments</a>.</p> </div><!-- /.entry-content -->
+ </article></li>
+
+
+
+ <li><article class="hentry">
+ <header>
<h1><a href="http://davidjb.com/blog/2009/10/html-formatting-made-easy/" rel="bookmark"
title="Permalink to HTML formatting made easy"><span class="caps">HTML</span> formatting made&nbsp;easy</a></h1>
</header>
View
53 feeds/all-en.atom.xml
@@ -1,5 +1,56 @@
<?xml version="1.0" encoding="utf-8"?>
-<feed xmlns="http://www.w3.org/2005/Atom"><title>DavidJB.com</title><link href="http://davidjb.com/" rel="alternate"></link><link href="http://davidjb.com/feeds/all-en.atom.xml" rel="self"></link><id>http://davidjb.com/</id><updated>2013-05-28T00:00:00+10:00</updated><entry><title>Attributes not released to new Shibboleth Service Provider (SP)</title><link href="http://davidjb.com/blog/2013/05/attributes-not-released-to-new-shibboleth-service-provider-sp/" rel="alternate"></link><updated>2013-05-28T00:00:00+10:00</updated><author><name>davidjb</name></author><id>tag:davidjb.com,2013-05-28:blog/2013/05/attributes-not-released-to-new-shibboleth-service-provider-sp/</id><summary type="html">&lt;p&gt;Just created a new Shibboleth Service Provider (&lt;span class="caps"&gt;SP&lt;/span&gt;) instance and found an
+<feed xmlns="http://www.w3.org/2005/Atom"><title>DavidJB.com</title><link href="http://davidjb.com/" rel="alternate"></link><link href="http://davidjb.com/feeds/all-en.atom.xml" rel="self"></link><id>http://davidjb.com/</id><updated>2013-07-29T00:00:00+10:00</updated><entry><title>All Fanstatic resources being served with ‘text/html’ mimetype by WebOb/WSGI</title><link href="http://davidjb.com/blog/2013/07/all-fanstatic-resources-being-served-with-texthtml-mimetype-by-webobwsgi/" rel="alternate"></link><updated>2013-07-29T00:00:00+10:00</updated><author><name>davidjb</name></author><id>tag:davidjb.com,2013-07-29:blog/2013/07/all-fanstatic-resources-being-served-with-texthtml-mimetype-by-webobwsgi/</id><summary type="html">&lt;p&gt;If you&amp;#8217;re finding that you&amp;#8217;re using &lt;a class="reference external" href="http://fanstatic.org"&gt;Fanstatic&lt;/a&gt; to
+serve static resources within your Python-based server process, you may be left
+scracthing your head if you suddenly find that resources aren&amp;#8217;t being served
+correctly. For me, this was manifesting as an incorrect &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;Content-Type&lt;/span&gt;&lt;/tt&gt;
+header, always being set to &lt;tt class="docutils literal"&gt;text/html&lt;/tt&gt; for any type of static file being
+served. As a side effect, because I&amp;#8217;m using &lt;a class="reference external" href="http://diazo.org"&gt;Diazo&lt;/a&gt; to
+theme my backend Pyramid application, this was automatically seeing this
+mimetype being returned to the browser and trying to &amp;#8220;theme&amp;#8221; the raw files.
+The global picture looked like a whole bunch of web fonts that weren&amp;#8217;t loading
+on my end&amp;nbsp;application.&lt;/p&gt;
+&lt;p&gt;Whoops. There goes a&amp;nbsp;morning.&lt;/p&gt;
+&lt;div class="section" id="solution"&gt;
+&lt;h2&gt;Solution&lt;/h2&gt;
+&lt;p&gt;Good news - it&amp;#8217;s easy; it&amp;#8217;s just a difference between environments on two
+different types of hosts. Deep down under the hood, Fanstatic is serving
+files using &lt;tt class="docutils literal"&gt;webob.static.FileApp&lt;/tt&gt; and once you know this key piece of
+information, it&amp;#8217;s easy to see that WebOb is using the Python &lt;tt class="docutils literal"&gt;mimetypes&lt;/tt&gt;
+module and its &lt;tt class="docutils literal"&gt;mimetypes.guess_type(filename)&lt;/tt&gt; function to lookup
+what type a file&amp;nbsp;is.&lt;/p&gt;
+&lt;p&gt;So, you just need to make sure that the &lt;tt class="docutils literal"&gt;mimetypes&lt;/tt&gt; module is able to know
+about the extensions you&amp;#8217;re serving. It uses &lt;tt class="docutils literal"&gt;mimetypes.knownfiles&lt;/tt&gt; to look
+up locations for finding mime types
+(&lt;a class="reference external" href="http://docs.python.org/2/library/mimetypes.html#mimetypes.knownfiles"&gt;http://docs.python.org/2/library/mimetypes.html#mimetypes.knownfiles&lt;/a&gt;).
+You&amp;#8217;ll notice that with the different file locations listed, a different
+host with different services installed will know about different mimetypes.
+For instance, if you&amp;#8217;re got Apache or Nginx installed on your host, you&amp;#8217;ll
+probably see their &lt;tt class="docutils literal"&gt;mime.types&lt;/tt&gt; file paths in the list, causing your
+application to (inadvertently) know about a lot more file&amp;nbsp;extensions.&lt;/p&gt;
+&lt;p&gt;In case your system is like mine and doesn&amp;#8217;t know about web fonts, here&amp;#8217;s what
+I&amp;#8217;ve taken to putting into &lt;tt class="docutils literal"&gt;/usr/local/etc/mime.types&lt;/tt&gt;:&lt;/p&gt;
+&lt;pre class="code python literal-block"&gt;
+&lt;span class="n"&gt;image&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;svg&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="n"&gt;xml&lt;/span&gt; &lt;span class="n"&gt;svg&lt;/span&gt; &lt;span class="n"&gt;svgz&lt;/span&gt;
+&lt;span class="n"&gt;application&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;vnd&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ms&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;fontobject&lt;/span&gt; &lt;span class="n"&gt;eot&lt;/span&gt;
+&lt;span class="n"&gt;application&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;font&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;ttf&lt;/span&gt; &lt;span class="n"&gt;tff&lt;/span&gt;
+&lt;span class="n"&gt;font&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;opentype&lt;/span&gt; &lt;span class="n"&gt;ott&lt;/span&gt;
+&lt;span class="n"&gt;font&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;woff&lt;/span&gt; &lt;span class="n"&gt;woff&lt;/span&gt;
+&lt;span class="o"&gt;...&lt;/span&gt; &lt;span class="nb"&gt;any&lt;/span&gt; &lt;span class="n"&gt;other&lt;/span&gt; &lt;span class="nb"&gt;file&lt;/span&gt; &lt;span class="n"&gt;types&lt;/span&gt; &lt;span class="n"&gt;your&lt;/span&gt; &lt;span class="n"&gt;system&lt;/span&gt; &lt;span class="n"&gt;doesn&lt;/span&gt;&lt;span class="s"&gt;'t know about...&lt;/span&gt;
+&lt;/pre&gt;
+&lt;p&gt;and restarting my Python process. You can confirm if the above worked
+by checking&amp;nbsp;using:&lt;/p&gt;
+&lt;pre class="literal-block"&gt;
+python -c 'import mimetypes; print(mimetypes.knownfiles)'
+&lt;/pre&gt;
+&lt;p&gt;and&amp;nbsp;also:&lt;/p&gt;
+&lt;pre class="literal-block"&gt;
+&amp;gt;&amp;gt;&amp;gt; import mimetypes; print(mimetypes.guess_type('foo.woff'))
+('font/x-woff', None)
+&lt;/pre&gt;
+&lt;p&gt;to make sure something that isn&amp;#8217;t &lt;tt class="docutils literal"&gt;(None, None)&lt;/tt&gt; returned.&lt;/p&gt;
+&lt;p&gt;That&amp;#8217;s&amp;nbsp;all.&lt;/p&gt;
+&lt;/div&gt;
+</summary></entry><entry><title>Attributes not released to new Shibboleth Service Provider (SP)</title><link href="http://davidjb.com/blog/2013/05/attributes-not-released-to-new-shibboleth-service-provider-sp/" rel="alternate"></link><updated>2013-05-28T00:00:00+10:00</updated><author><name>davidjb</name></author><id>tag:davidjb.com,2013-05-28:blog/2013/05/attributes-not-released-to-new-shibboleth-service-provider-sp/</id><summary type="html">&lt;p&gt;Just created a new Shibboleth Service Provider (&lt;span class="caps"&gt;SP&lt;/span&gt;) instance and found an
Identity Providers (IdPs) is not releasing attributes to you? Don&amp;#8217;t
worry, you&amp;#8217;re not alone. In fact, the issue is far more common than you think,
despite a lack of documentation on the&amp;nbsp;web.&lt;/p&gt;
View
53 feeds/all.atom.xml
@@ -1,5 +1,56 @@
<?xml version="1.0" encoding="utf-8"?>
-<feed xmlns="http://www.w3.org/2005/Atom"><title>DavidJB.com</title><link href="http://davidjb.com/" rel="alternate"></link><link href="http://davidjb.com/feeds/all.atom.xml" rel="self"></link><id>http://davidjb.com/</id><updated>2013-05-28T00:00:00+10:00</updated><entry><title>Attributes not released to new Shibboleth Service Provider (SP)</title><link href="http://davidjb.com/blog/2013/05/attributes-not-released-to-new-shibboleth-service-provider-sp/" rel="alternate"></link><updated>2013-05-28T00:00:00+10:00</updated><author><name>davidjb</name></author><id>tag:davidjb.com,2013-05-28:blog/2013/05/attributes-not-released-to-new-shibboleth-service-provider-sp/</id><summary type="html">&lt;p&gt;Just created a new Shibboleth Service Provider (&lt;span class="caps"&gt;SP&lt;/span&gt;) instance and found an
+<feed xmlns="http://www.w3.org/2005/Atom"><title>DavidJB.com</title><link href="http://davidjb.com/" rel="alternate"></link><link href="http://davidjb.com/feeds/all.atom.xml" rel="self"></link><id>http://davidjb.com/</id><updated>2013-07-29T00:00:00+10:00</updated><entry><title>All Fanstatic resources being served with ‘text/html’ mimetype by WebOb/WSGI</title><link href="http://davidjb.com/blog/2013/07/all-fanstatic-resources-being-served-with-texthtml-mimetype-by-webobwsgi/" rel="alternate"></link><updated>2013-07-29T00:00:00+10:00</updated><author><name>davidjb</name></author><id>tag:davidjb.com,2013-07-29:blog/2013/07/all-fanstatic-resources-being-served-with-texthtml-mimetype-by-webobwsgi/</id><summary type="html">&lt;p&gt;If you&amp;#8217;re finding that you&amp;#8217;re using &lt;a class="reference external" href="http://fanstatic.org"&gt;Fanstatic&lt;/a&gt; to
+serve static resources within your Python-based server process, you may be left
+scracthing your head if you suddenly find that resources aren&amp;#8217;t being served
+correctly. For me, this was manifesting as an incorrect &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;Content-Type&lt;/span&gt;&lt;/tt&gt;
+header, always being set to &lt;tt class="docutils literal"&gt;text/html&lt;/tt&gt; for any type of static file being
+served. As a side effect, because I&amp;#8217;m using &lt;a class="reference external" href="http://diazo.org"&gt;Diazo&lt;/a&gt; to
+theme my backend Pyramid application, this was automatically seeing this
+mimetype being returned to the browser and trying to &amp;#8220;theme&amp;#8221; the raw files.
+The global picture looked like a whole bunch of web fonts that weren&amp;#8217;t loading
+on my end&amp;nbsp;application.&lt;/p&gt;
+&lt;p&gt;Whoops. There goes a&amp;nbsp;morning.&lt;/p&gt;
+&lt;div class="section" id="solution"&gt;
+&lt;h2&gt;Solution&lt;/h2&gt;
+&lt;p&gt;Good news - it&amp;#8217;s easy; it&amp;#8217;s just a difference between environments on two
+different types of hosts. Deep down under the hood, Fanstatic is serving
+files using &lt;tt class="docutils literal"&gt;webob.static.FileApp&lt;/tt&gt; and once you know this key piece of
+information, it&amp;#8217;s easy to see that WebOb is using the Python &lt;tt class="docutils literal"&gt;mimetypes&lt;/tt&gt;
+module and its &lt;tt class="docutils literal"&gt;mimetypes.guess_type(filename)&lt;/tt&gt; function to lookup
+what type a file&amp;nbsp;is.&lt;/p&gt;
+&lt;p&gt;So, you just need to make sure that the &lt;tt class="docutils literal"&gt;mimetypes&lt;/tt&gt; module is able to know
+about the extensions you&amp;#8217;re serving. It uses &lt;tt class="docutils literal"&gt;mimetypes.knownfiles&lt;/tt&gt; to look
+up locations for finding mime types
+(&lt;a class="reference external" href="http://docs.python.org/2/library/mimetypes.html#mimetypes.knownfiles"&gt;http://docs.python.org/2/library/mimetypes.html#mimetypes.knownfiles&lt;/a&gt;).
+You&amp;#8217;ll notice that with the different file locations listed, a different
+host with different services installed will know about different mimetypes.
+For instance, if you&amp;#8217;re got Apache or Nginx installed on your host, you&amp;#8217;ll
+probably see their &lt;tt class="docutils literal"&gt;mime.types&lt;/tt&gt; file paths in the list, causing your
+application to (inadvertently) know about a lot more file&amp;nbsp;extensions.&lt;/p&gt;
+&lt;p&gt;In case your system is like mine and doesn&amp;#8217;t know about web fonts, here&amp;#8217;s what
+I&amp;#8217;ve taken to putting into &lt;tt class="docutils literal"&gt;/usr/local/etc/mime.types&lt;/tt&gt;:&lt;/p&gt;
+&lt;pre class="code python literal-block"&gt;
+&lt;span class="n"&gt;image&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;svg&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="n"&gt;xml&lt;/span&gt; &lt;span class="n"&gt;svg&lt;/span&gt; &lt;span class="n"&gt;svgz&lt;/span&gt;
+&lt;span class="n"&gt;application&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;vnd&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ms&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;fontobject&lt;/span&gt; &lt;span class="n"&gt;eot&lt;/span&gt;
+&lt;span class="n"&gt;application&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;font&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;ttf&lt;/span&gt; &lt;span class="n"&gt;tff&lt;/span&gt;
+&lt;span class="n"&gt;font&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;opentype&lt;/span&gt; &lt;span class="n"&gt;ott&lt;/span&gt;
+&lt;span class="n"&gt;font&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;woff&lt;/span&gt; &lt;span class="n"&gt;woff&lt;/span&gt;
+&lt;span class="o"&gt;...&lt;/span&gt; &lt;span class="nb"&gt;any&lt;/span&gt; &lt;span class="n"&gt;other&lt;/span&gt; &lt;span class="nb"&gt;file&lt;/span&gt; &lt;span class="n"&gt;types&lt;/span&gt; &lt;span class="n"&gt;your&lt;/span&gt; &lt;span class="n"&gt;system&lt;/span&gt; &lt;span class="n"&gt;doesn&lt;/span&gt;&lt;span class="s"&gt;'t know about...&lt;/span&gt;
+&lt;/pre&gt;
+&lt;p&gt;and restarting my Python process. You can confirm if the above worked
+by checking&amp;nbsp;using:&lt;/p&gt;
+&lt;pre class="literal-block"&gt;
+python -c 'import mimetypes; print(mimetypes.knownfiles)'
+&lt;/pre&gt;
+&lt;p&gt;and&amp;nbsp;also:&lt;/p&gt;
+&lt;pre class="literal-block"&gt;
+&amp;gt;&amp;gt;&amp;gt; import mimetypes; print(mimetypes.guess_type('foo.woff'))
+('font/x-woff', None)
+&lt;/pre&gt;
+&lt;p&gt;to make sure something that isn&amp;#8217;t &lt;tt class="docutils literal"&gt;(None, None)&lt;/tt&gt; returned.&lt;/p&gt;
+&lt;p&gt;That&amp;#8217;s&amp;nbsp;all.&lt;/p&gt;
+&lt;/div&gt;
+</summary></entry><entry><title>Attributes not released to new Shibboleth Service Provider (SP)</title><link href="http://davidjb.com/blog/2013/05/attributes-not-released-to-new-shibboleth-service-provider-sp/" rel="alternate"></link><updated>2013-05-28T00:00:00+10:00</updated><author><name>davidjb</name></author><id>tag:davidjb.com,2013-05-28:blog/2013/05/attributes-not-released-to-new-shibboleth-service-provider-sp/</id><summary type="html">&lt;p&gt;Just created a new Shibboleth Service Provider (&lt;span class="caps"&gt;SP&lt;/span&gt;) instance and found an
Identity Providers (IdPs) is not releasing attributes to you? Don&amp;#8217;t
worry, you&amp;#8217;re not alone. In fact, the issue is far more common than you think,
despite a lack of documentation on the&amp;nbsp;web.&lt;/p&gt;
View
53 feeds/web.atom.xml
@@ -1,5 +1,56 @@
<?xml version="1.0" encoding="utf-8"?>
-<feed xmlns="http://www.w3.org/2005/Atom"><title>DavidJB.com</title><link href="http://davidjb.com/" rel="alternate"></link><link href="http://davidjb.com/feeds/web.atom.xml" rel="self"></link><id>http://davidjb.com/</id><updated>2013-05-28T00:00:00+10:00</updated><entry><title>Attributes not released to new Shibboleth Service Provider (SP)</title><link href="http://davidjb.com/blog/2013/05/attributes-not-released-to-new-shibboleth-service-provider-sp/" rel="alternate"></link><updated>2013-05-28T00:00:00+10:00</updated><author><name>davidjb</name></author><id>tag:davidjb.com,2013-05-28:blog/2013/05/attributes-not-released-to-new-shibboleth-service-provider-sp/</id><summary type="html">&lt;p&gt;Just created a new Shibboleth Service Provider (&lt;span class="caps"&gt;SP&lt;/span&gt;) instance and found an
+<feed xmlns="http://www.w3.org/2005/Atom"><title>DavidJB.com</title><link href="http://davidjb.com/" rel="alternate"></link><link href="http://davidjb.com/feeds/web.atom.xml" rel="self"></link><id>http://davidjb.com/</id><updated>2013-07-29T00:00:00+10:00</updated><entry><title>All Fanstatic resources being served with ‘text/html’ mimetype by WebOb/WSGI</title><link href="http://davidjb.com/blog/2013/07/all-fanstatic-resources-being-served-with-texthtml-mimetype-by-webobwsgi/" rel="alternate"></link><updated>2013-07-29T00:00:00+10:00</updated><author><name>davidjb</name></author><id>tag:davidjb.com,2013-07-29:blog/2013/07/all-fanstatic-resources-being-served-with-texthtml-mimetype-by-webobwsgi/</id><summary type="html">&lt;p&gt;If you&amp;#8217;re finding that you&amp;#8217;re using &lt;a class="reference external" href="http://fanstatic.org"&gt;Fanstatic&lt;/a&gt; to
+serve static resources within your Python-based server process, you may be left
+scracthing your head if you suddenly find that resources aren&amp;#8217;t being served
+correctly. For me, this was manifesting as an incorrect &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;Content-Type&lt;/span&gt;&lt;/tt&gt;
+header, always being set to &lt;tt class="docutils literal"&gt;text/html&lt;/tt&gt; for any type of static file being
+served. As a side effect, because I&amp;#8217;m using &lt;a class="reference external" href="http://diazo.org"&gt;Diazo&lt;/a&gt; to
+theme my backend Pyramid application, this was automatically seeing this
+mimetype being returned to the browser and trying to &amp;#8220;theme&amp;#8221; the raw files.
+The global picture looked like a whole bunch of web fonts that weren&amp;#8217;t loading
+on my end&amp;nbsp;application.&lt;/p&gt;
+&lt;p&gt;Whoops. There goes a&amp;nbsp;morning.&lt;/p&gt;
+&lt;div class="section" id="solution"&gt;
+&lt;h2&gt;Solution&lt;/h2&gt;
+&lt;p&gt;Good news - it&amp;#8217;s easy; it&amp;#8217;s just a difference between environments on two
+different types of hosts. Deep down under the hood, Fanstatic is serving
+files using &lt;tt class="docutils literal"&gt;webob.static.FileApp&lt;/tt&gt; and once you know this key piece of
+information, it&amp;#8217;s easy to see that WebOb is using the Python &lt;tt class="docutils literal"&gt;mimetypes&lt;/tt&gt;
+module and its &lt;tt class="docutils literal"&gt;mimetypes.guess_type(filename)&lt;/tt&gt; function to lookup
+what type a file&amp;nbsp;is.&lt;/p&gt;
+&lt;p&gt;So, you just need to make sure that the &lt;tt class="docutils literal"&gt;mimetypes&lt;/tt&gt; module is able to know
+about the extensions you&amp;#8217;re serving. It uses &lt;tt class="docutils literal"&gt;mimetypes.knownfiles&lt;/tt&gt; to look
+up locations for finding mime types
+(&lt;a class="reference external" href="http://docs.python.org/2/library/mimetypes.html#mimetypes.knownfiles"&gt;http://docs.python.org/2/library/mimetypes.html#mimetypes.knownfiles&lt;/a&gt;).
+You&amp;#8217;ll notice that with the different file locations listed, a different
+host with different services installed will know about different mimetypes.
+For instance, if you&amp;#8217;re got Apache or Nginx installed on your host, you&amp;#8217;ll
+probably see their &lt;tt class="docutils literal"&gt;mime.types&lt;/tt&gt; file paths in the list, causing your
+application to (inadvertently) know about a lot more file&amp;nbsp;extensions.&lt;/p&gt;
+&lt;p&gt;In case your system is like mine and doesn&amp;#8217;t know about web fonts, here&amp;#8217;s what
+I&amp;#8217;ve taken to putting into &lt;tt class="docutils literal"&gt;/usr/local/etc/mime.types&lt;/tt&gt;:&lt;/p&gt;
+&lt;pre class="code python literal-block"&gt;
+&lt;span class="n"&gt;image&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;svg&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="n"&gt;xml&lt;/span&gt; &lt;span class="n"&gt;svg&lt;/span&gt; &lt;span class="n"&gt;svgz&lt;/span&gt;
+&lt;span class="n"&gt;application&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;vnd&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ms&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;fontobject&lt;/span&gt; &lt;span class="n"&gt;eot&lt;/span&gt;
+&lt;span class="n"&gt;application&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;font&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;ttf&lt;/span&gt; &lt;span class="n"&gt;tff&lt;/span&gt;
+&lt;span class="n"&gt;font&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;opentype&lt;/span&gt; &lt;span class="n"&gt;ott&lt;/span&gt;
+&lt;span class="n"&gt;font&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;woff&lt;/span&gt; &lt;span class="n"&gt;woff&lt;/span&gt;
+&lt;span class="o"&gt;...&lt;/span&gt; &lt;span class="nb"&gt;any&lt;/span&gt; &lt;span class="n"&gt;other&lt;/span&gt; &lt;span class="nb"&gt;file&lt;/span&gt; &lt;span class="n"&gt;types&lt;/span&gt; &lt;span class="n"&gt;your&lt;/span&gt; &lt;span class="n"&gt;system&lt;/span&gt; &lt;span class="n"&gt;doesn&lt;/span&gt;&lt;span class="s"&gt;'t know about...&lt;/span&gt;
+&lt;/pre&gt;
+&lt;p&gt;and restarting my Python process. You can confirm if the above worked
+by checking&amp;nbsp;using:&lt;/p&gt;
+&lt;pre class="literal-block"&gt;
+python -c 'import mimetypes; print(mimetypes.knownfiles)'
+&lt;/pre&gt;
+&lt;p&gt;and&amp;nbsp;also:&lt;/p&gt;
+&lt;pre class="literal-block"&gt;
+&amp;gt;&amp;gt;&amp;gt; import mimetypes; print(mimetypes.guess_type('foo.woff'))
+('font/x-woff', None)
+&lt;/pre&gt;
+&lt;p&gt;to make sure something that isn&amp;#8217;t &lt;tt class="docutils literal"&gt;(None, None)&lt;/tt&gt; returned.&lt;/p&gt;
+&lt;p&gt;That&amp;#8217;s&amp;nbsp;all.&lt;/p&gt;
+&lt;/div&gt;
+</summary></entry><entry><title>Attributes not released to new Shibboleth Service Provider (SP)</title><link href="http://davidjb.com/blog/2013/05/attributes-not-released-to-new-shibboleth-service-provider-sp/" rel="alternate"></link><updated>2013-05-28T00:00:00+10:00</updated><author><name>davidjb</name></author><id>tag:davidjb.com,2013-05-28:blog/2013/05/attributes-not-released-to-new-shibboleth-service-provider-sp/</id><summary type="html">&lt;p&gt;Just created a new Shibboleth Service Provider (&lt;span class="caps"&gt;SP&lt;/span&gt;) instance and found an
Identity Providers (IdPs) is not releasing attributes to you? Don&amp;#8217;t
worry, you&amp;#8217;re not alone. In fact, the issue is far more common than you think,
despite a lack of documentation on the&amp;nbsp;web.&lt;/p&gt;
View
184 index.html
@@ -32,10 +32,10 @@
<aside id="featured" class="body">
<article>
- <h1 class="entry-title"><a href="http://davidjb.com/blog/2013/05/attributes-not-released-to-new-shibboleth-service-provider-sp/">Attributes not released to new Shibboleth Service Provider&nbsp;(<span class="caps">SP</span>)</a></h1>
+ <h1 class="entry-title"><a href="http://davidjb.com/blog/2013/07/all-fanstatic-resources-being-served-with-texthtml-mimetype-by-webobwsgi/">All Fanstatic resources being served with &#8216;text/html&#8217; mimetype by&nbsp;WebOb/<span class="caps">WSGI</span></a></h1>
<footer class="post-info">
- <abbr class="published" title="2013-05-28T00:00:00">
- Tue 28 May 2013
+ <abbr class="published" title="2013-07-29T00:00:00">
+ Mon 29 July 2013
</abbr>
<address class="vcard author">
@@ -43,77 +43,58 @@ <h1 class="entry-title"><a href="http://davidjb.com/blog/2013/05/attributes-not-
</address>
<p>In <a href="http://davidjb.com/category/web.html">Web</a>. </p>
-</footer><!-- /.post-info --><p>Just created a new Shibboleth Service Provider (<span class="caps">SP</span>) instance and found an
-Identity Providers (IdPs) is not releasing attributes to you? Don&#8217;t
-worry, you&#8217;re not alone. In fact, the issue is far more common than you think,
-despite a lack of documentation on the&nbsp;web.</p>
-<div class="section" id="confirming-the-problem">
-<h2>Confirming the&nbsp;problem</h2>
-<p>Firstly, make sure that your Shibboleth <span class="caps">SP</span> configuration is, as best you can
-tell, correct. Also, make sure that your <tt class="docutils literal">shibd</tt> daemon has been
-restarted after any configuration changes you&#8217;ve made (and your
-FastCGI <tt class="docutils literal">shibauthorizer</tt> and <tt class="docutils literal">shibresponder</tt> applications too, if you&#8217;re
-using&nbsp;those).</p>
-<p>If you&#8217;re sure about the above, or just roughly sure that your <span class="caps">SP</span> configuration
-is correct, then try to access your Shibboleth protected resource. If you
-receive one of a variety of different intermediate errors - such as those
-from an IdP page about missing metadata, or similar - then your <span class="caps">SP</span>&#8217;s security
-information hasn&#8217;t yet been propagated within your Federation (or not yet to
-that specific&nbsp;IdP).</p>
-<p>If you don&#8217;t receive an error message from an IdP or your Shibboleth <span class="caps">SP</span>, you
-will likely end up at your application, assuming your web server configuration
-is&nbsp;correct.</p>
-<p>Once you&#8217;re here, then you may find, as I did, that the only Shibboleth user
-attribute that was being sent through from <tt class="docutils literal">shibd</tt> to the application was the
-<tt class="docutils literal">TransientId</tt>. If you enable debug logging on your Shibboleth <span class="caps">SP</span>, then
-you&#8217;ll see in the logs that no attributes are actually being released from that
-given IdP. It&#8217;s worth noting that this is almost certainly going to be an
-intermittent issue for you &#8212; some IdPs will release attributes and others
-flatly refuse. <strong>If you&#8217;re seeing this, then you&#8217;ve hit the same issue as&nbsp;me.</strong></p>
+</footer><!-- /.post-info --><p>If you&#8217;re finding that you&#8217;re using <a class="reference external" href="http://fanstatic.org">Fanstatic</a> to
+serve static resources within your Python-based server process, you may be left
+scracthing your head if you suddenly find that resources aren&#8217;t being served
+correctly. For me, this was manifesting as an incorrect <tt class="docutils literal"><span class="pre">Content-Type</span></tt>
+header, always being set to <tt class="docutils literal">text/html</tt> for any type of static file being
+served. As a side effect, because I&#8217;m using <a class="reference external" href="http://diazo.org">Diazo</a> to
+theme my backend Pyramid application, this was automatically seeing this
+mimetype being returned to the browser and trying to &#8220;theme&#8221; the raw files.
+The global picture looked like a whole bunch of web fonts that weren&#8217;t loading
+on my end&nbsp;application.</p>
+<p>Whoops. There goes a&nbsp;morning.</p>
+<div class="section" id="solution">
+<h2>Solution</h2>
+<p>Good news - it&#8217;s easy; it&#8217;s just a difference between environments on two
+different types of hosts. Deep down under the hood, Fanstatic is serving
+files using <tt class="docutils literal">webob.static.FileApp</tt> and once you know this key piece of
+information, it&#8217;s easy to see that WebOb is using the Python <tt class="docutils literal">mimetypes</tt>
+module and its <tt class="docutils literal">mimetypes.guess_type(filename)</tt> function to lookup
+what type a file&nbsp;is.</p>
+<p>So, you just need to make sure that the <tt class="docutils literal">mimetypes</tt> module is able to know
+about the extensions you&#8217;re serving. It uses <tt class="docutils literal">mimetypes.knownfiles</tt> to look
+up locations for finding mime types
+(<a class="reference external" href="http://docs.python.org/2/library/mimetypes.html#mimetypes.knownfiles">http://docs.python.org/2/library/mimetypes.html#mimetypes.knownfiles</a>).
+You&#8217;ll notice that with the different file locations listed, a different
+host with different services installed will know about different mimetypes.
+For instance, if you&#8217;re got Apache or Nginx installed on your host, you&#8217;ll
+probably see their <tt class="docutils literal">mime.types</tt> file paths in the list, causing your
+application to (inadvertently) know about a lot more file&nbsp;extensions.</p>
+<p>In case your system is like mine and doesn&#8217;t know about web fonts, here&#8217;s what
+I&#8217;ve taken to putting into <tt class="docutils literal">/usr/local/etc/mime.types</tt>:</p>
+<pre class="code python literal-block">
+<span class="n">image</span><span class="o">/</span><span class="n">svg</span><span class="o">+</span><span class="n">xml</span> <span class="n">svg</span> <span class="n