<!doctype html>
<html lang="en">
-
<head>
<meta charset="utf-8">
-
- <title>reveal.js - The HTML Presentation Framework</title>
-
- <meta name="description" content="A framework for easily creating beautiful presentations using HTML">
- <meta name="author" content="Hakim El Hattab">
-
+ <title>Sane Software Development</title>
+ <meta name="description" content="Version control and packaging">
+ <meta name="author" content="Trevor King">
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
-
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
-
<link rel="stylesheet" href="css/reveal.min.css">
<link rel="stylesheet" href="css/theme/default.css" id="theme">
-
<!-- For syntax highlighting -->
<link rel="stylesheet" href="lib/css/zenburn.css">
-
<!-- If the query includes 'print-pdf', use the PDF print sheet -->
<script>
document.write( '<link rel="stylesheet" href="css/print/' + ( window.location.search.match( /print-pdf/gi ) ? 'pdf' : 'paper' ) + '.css" type="text/css" media="print">' );
</script>
-
<!--[if lt IE 9]>
<script src="lib/js/html5shiv.js"></script>
<![endif]-->
</head>
-
<body>
-
<div class="reveal">
-
<!-- Any section element inside of this container is displayed as a slide -->
<div class="slides">
-
<section>
- <h1>Reveal.js</h1>
- <h3>HTML Presentations Made Easy</h3>
- <p>
- <small>Created by <a href="http://hakim.se">Hakim El Hattab</a> / <a href="http://twitter.com/hakimel">@hakimel</a></small>
+ <h2>Sane Software Development</h2>
+ <h3>Version control and packaging</h3>
+ <p style="text-align: center;">
+ <small>Trevor King</small>
</p>
</section>
-
- <section>
- <h2>Heads Up</h2>
- <p>
- reveal.js is a framework for easily creating beautiful presentations using HTML. You'll need a browser with
- support for CSS 3D transforms to see it in its full glory.
- </p>
-
- <aside class="notes">
- Oh hey, these are some notes. They'll be hidden in your presentation, but you can see them if you open the speaker notes window (hit 's' on your keyboard).
- </aside>
- </section>
-
- <!-- Example of nested vertical slides -->
<section>
<section>
- <h2>Vertical Slides</h2>
- <p>
- Slides can be nested inside of other slides,
- try pressing <a href="#" class="navigate-down">down</a>.
- </p>
- <a href="#" class="image navigate-down">
- <img width="178" height="238" src="https://s3.amazonaws.com/hakim-static/reveal-js/arrow.png" alt="Down arrow">
- </a>
+ <h2>Basic version control</h2>
+ <p>Have you ever done something like this:</p>
+ <pre>
+ $ ls
+ analysis-2012-12-20.py
+ analysis-2013-01-15.py
+ analysis-2013-03-14.py
+ </pre>
</section>
<section>
- <h2>Basement Level 1</h2>
- <p>Press down or up to navigate.</p>
+ <h2>Logs</h2>
+ <p>With a version control system (VCS), that becomes:</p>
+ <pre>
+ $ git log --oneline
+ c4af9ce Bump to version 0.7
+ 5b6c6d8 MANIFEST.in: Distribute *.pxd files
+ d07922f README: Double-backtick code for proper ReST markup
+ 27562b0 channel: Fix to-physical setup in AnalogChannel._get_converter
+ …
+ </pre>
+ <p>Earlier versions are stored in the VCS database, so they
+ don't clutter your working directory.</p>
+ <aside class="notes">
+ <p>There are other VCSes
+ besides <a href="http://git-scm.com/">Git</a>, but Git has
+ the most active developer community.</p>
+ </aside>
</section>
<section>
- <h2>Basement Level 2</h2>
- <p>Cornify</p>
- <a class="test" href="http://cornify.com">
- <img width="280" height="326" src="https://s3.amazonaws.com/hakim-static/reveal-js/cornify.gif" alt="Unicorn">
- </a>
+ <h2>Commits</h2>
+ <p>Each commit stores a snapshot of the the current code
+ with some additional metadata:</p>
+ <pre>
+ $ git cat-file -p c4af9ce
+ tree 5c7c8d28e0dd458c30fb8ebf221308c2a1c6a054
+ parent 5b6c6d811337b90226e9fd2cffbdf0d65e615bd5
+ author W. Trevor King <wking@tremily.us> 1360192104 -0500
+ committer W. Trevor King <wking@tremily.us> 1360192104 -0500
+ Bump to version 0.7
+ Changes since 0.6:
+ * MANIFEST.in: Distribute *.pxd files
+ * channel: Fix to-physical setup in AnalogChannel._get_converter
+ * A few documentation fixes and updates
+ </pre>
</section>
<section>
- <h2>Basement Level 3</h2>
- <p>That's it, time to go back up.</p>
- <a href="#/2" class="image">
- <img width="178" height="238" src="https://s3.amazonaws.com/hakim-static/reveal-js/arrow.png" alt="Up arrow" style="-webkit-transform: rotate(180deg);">
- </a>
+ <h2>Trees</h2>
+ <p>Git trees are like file system directories.</p>
+ <pre>
+ $ git ls-tree 5c7c8d2
+ 040000 tree 69281fb4331c61514f198d5f5fabea5343506f4d .be
+ 100644 blob 9aa3b8ae5f8c76b490918a48b5baad2008de1598 .gitignore
+ 100644 blob 4a905eb41b3b8088ff8cf64a4feaebc71df8ca3f .mailmap
+ 100644 blob 792057b957a0b85bb24048e6ed3ebdabfd55820a .update-copyright.conf
+ 100644 blob d511905c1647a1e311e8b20d5930a37a9c2531cd COPYING
+ 100644 blob b3d277e49ed14a8e6c5530cc0b81054e96921dbb MANIFEST.in
+ 100644 blob fbeb14c783f7334722729c19235c75c8b994ead7 README
+ 040000 tree c959dd2701ac400fc0e9ff7f987a7e3be3db55fb doc
+ 040000 tree 82e8191e5ba183698ed9af6d5c24c05e5abd6c3f pycomedi
+ 100644 blob cd0314fee3c9c05f448ccc8285f535c5d6828df6 setup.py
+ 100755 blob b5ea21ecea4aa9d8c069beba4d5b9daf37a70633 test.sh
+ </pre>
</section>
- </section>
-
- <section>
- <h2>Point of View</h2>
- <p>
- Press <strong>ESC</strong> to enter the slide overview. Hold down alt and click on any element to zoom in on it using <a href="http://lab.hakim.se/zoom-js">zoom.js</a>. Alt + click anywhere to zoom back out.
- </p>
- </section>
-
- <section>
- <h2>rvl.io</h2>
- <p>
- If you don't like writing slides in HTML you can use the online editor <a href="http://www.rvl.io" target="_blank">rvl.io</a>.
- </p>
- </section>
-
- <section>
- <h2>Works in Mobile Safari</h2>
- <p>
- Try it out! You can swipe through the slides and pinch your way to the overview.
- </p>
- </section>
-
- <section>
- <h2>Marvelous Unordered List</h2>
- <ul>
- <li>No order here</li>
- <li>Or here</li>
- <li>Or here</li>
- <li>Or here</li>
- </ul>
- </section>
-
- <section>
- <h2>Fantastic Ordered List</h2>
- <ol>
- <li>One is smaller than...</li>
- <li>Two is smaller than...</li>
- <li>Three!</li>
- </ol>
- </section>
-
- <section data-markdown>
- <script type="text/template">
- ## Markdown support
-
- For those of you who like that sort of thing. Instructions and a bit more info available [here](https://github.com/hakimel/reveal.js#markdown).
-
- <section data-markdown>
- ## Markdown support
-
- For those of you who like that sort of thing.
- Instructions and a bit more info available [here](https://github.com/hakimel/reveal.js#markdown).
- </section>
- </script>
- </section>
-
- <section id="transitions">
- <h2>Transition Styles</h2>
- <p>
- You can select from different transitions, like: <br>
- <a href="?transition=cube#/transitions">Cube</a> -
- <a href="?transition=page#/transitions">Page</a> -
- <a href="?transition=concave#/transitions">Concave</a> -
- <a href="?transition=zoom#/transitions">Zoom</a> -
- <a href="?transition=linear#/transitions">Linear</a> -
- <a href="?transition=fade#/transitions">Fade</a> -
- <a href="?transition=none#/transitions">None</a> -
- <a href="?#/transitions">Default</a>
- </p>
- </section>
-
- <section id="themes">
- <h2>Themes</h2>
- <p>
- Reveal.js comes with a few themes built in: <br>
- <a href="?theme=sky#/themes">Sky</a> -
- <a href="?theme=beige#/themes">Beige</a> -
- <a href="?theme=simple#/themes">Simple</a> -
- <a href="?theme=serif#/themes">Serif</a> -
- <a href="?theme=night#/themes">Night</a> -
- <a href="?#/themes">Default</a>
- </p>
- <p>
- <small>
- * Theme demos are loaded after the presentation which leads to flicker. In production you should load your theme in the <code><head></code> using a <code><link></code>.
- </small>
- </p>
- </section>
-
- <section>
- <section data-state="alert">
- <h2>Global State</h2>
- <p>
- Set <code>data-state="something"</code> on a slide and <code>"something"</code>
- will be added as a class to the document element when the slide is open. This lets you
- apply broader style changes, like switching the background.
- </p>
- <a href="#" class="image navigate-down">
- <img width="178" height="238" src="https://s3.amazonaws.com/hakim-static/reveal-js/arrow.png" alt="Down arrow">
- </a>
+ <section>
+ <h2>Blobs</h2>
+ <p>Git blobs are like files.</p>
+ <pre>
+ $ git ls-tree 5c7c8d2
+ …
+ 100644 blob fbeb14c783f7334722729c19235c75c8b994ead7 README
+ …
+ $ git cat-file -p fbeb14c
+ This package provides an object-oriented interface to the Comedi_
+ drivers. The standard Python interface bundled with Comedilib is a
+ simple SWIG clone of the C interface. In pycomedi, we convert the
+ …
+ </pre>
</section>
- <section data-state="blackout">
- <h2>"blackout"</h2>
- <a href="#" class="image navigate-down">
- <img width="178" height="238" src="https://s3.amazonaws.com/hakim-static/reveal-js/arrow.png" alt="Down arrow">
- </a>
+ <section>
+ <h2>Commits, trees, and blobs</h2>
+ <img src="img/18333fig0301-tn.png" />
+ <p style="text-align: center;"><small>
+ From <a href="https://github.com/progit/progit/">Pro Git</a>
+ </small></p>
</section>
- <section data-state="soothe">
- <h2>"soothe"</h2>
- <a href="#" class="image navigate-next">
- <img width="178" height="238" src="https://s3.amazonaws.com/hakim-static/reveal-js/arrow.png" alt="Up arrow" style="-webkit-transform: rotate(-90deg);">
- </a>
+ <section>
+ <h2>Hashes</h2>
+ <p>What's with all the hex strings?
+ (e.g. <code>fbeb14c783f7334722729c19235c75c8b994ead7</code>)</p>
+ <p>Git stores objects (commits, trees, blobs, …) in a
+ <a href="http://en.wikipedia.org/wiki/Content-addressable_storage">content
+ addressable database</a>. This means that when you store
+ some content in the database, you get a key that you can
+ use to retrieve that data later.</p>
+ <pre>
+ $ echo 'test content' | git hash-object -w --stdin
+ d670460b4b4aece5915caf5c68d12f560a9fe3e4
+ $ git cat-file d670460
+ test content
+ </pre>
+ <aside class="notes">
+ <p>Git uses SHA-1 sums to compute the hashes. This
+ helps avoid key collisions during distributed
+ development and provides a number of other benefits
+ (e.g. tamper resistence). You can abbreviate hashes
+ when you use them in commands, but your abbreviation
+ must still be unique.</p>
+ </aside>
</section>
</section>
-
- <section data-state="customevent">
- <h2>Custom Events</h2>
- <p>
- Additionally custom events can be triggered on a per slide basis by binding to the <code>data-state</code> name.
- </p>
- <pre><code contenteditable style="font-size: 18px; margin-top: 20px;">Reveal.addEventListener( 'customevent', function() {
- console.log( '"customevent" has fired' );
-} );
- </code></pre>
- </section>
-
<section>
- <h2>Clever Quotes</h2>
- <p>
- These guys come in two forms, inline: <q cite="http://searchservervirtualization.techtarget.com/definition/Our-Favorite-Technology-Quotations">
- The nice thing about standards is that there are so many to choose from</q> and block:
- </p>
- <blockquote cite="http://searchservervirtualization.techtarget.com/definition/Our-Favorite-Technology-Quotations">
- For years there has been a theory that millions of monkeys typing at random on millions of typewriters would
- reproduce the entire works of Shakespeare. The Internet has proven this theory to be untrue.
- </blockquote>
- </section>
-
- <section>
- <h2>Pretty Code</h2>
- <pre><code contenteditable>
-function linkify( selector ) {
- if( supports3DTransforms ) {
-
- var nodes = document.querySelectorAll( selector );
-
- for( var i = 0, len = nodes.length; i < len; i++ ) {
- var node = nodes[i];
-
- if( !node.className ) ) {
- node.className += ' roll';
- }
- };
- }
-}
- </code></pre>
- <p>Courtesy of <a href="http://softwaremaniacs.org/soft/highlight/en/description/">highlight.js</a>.</p>
+ <section>
+ <h2>Branches</h2>
+ <p>Git commits form
+ a <a href="http://en.wikipedia.org/wiki/Directed_acyclic_graph">directed
+ acyclic graph</a>. To keep track of development, you can
+ label the leaf commits.</p>
+ <img src="img/18333fig0327-tn.png" />
+ <p style="text-align: center;"><small>
+ From <a href="https://github.com/progit/progit/">Pro Git</a>
+ </small></p>
+ </section>
+ <section>
+ <h2>Merges</h2>
+ <p>When a feature looks good, you can merge it into your
+ master branch.</p>
+ <img src="img/18333fig0328-tn.png" />
+ <p style="text-align: center;"><small>
+ From <a href="https://github.com/progit/progit/">Pro Git</a>
+ </small></p>
+ </section>
+ <section>
+ <h2>Rebasing</h2>
+ <p>You can also create new branches by applying the
+ changes from an old branch to a new base commit.</p>
+ <img src="img/18333fig0329-tn.png" />
+ <p style="text-align: center;"><small>
+ From <a href="https://github.com/progit/progit/">Pro Git</a>
+ </small></p>
+ </section>
+ <section>
+ <!--h2>Elaborate branching</h2-->
+ <img src="img/git-flow.png" />
+ <p style="text-align: center;"><small>
+ From <a href="http://nvie.com/posts/a-successful-git-branching-model/">Vincent Driessen</a>
+ </small></p>
+ </section>
</section>
-
<section>
- <h2>Intergalactic Interconnections</h2>
- <p>
- You can link between slides internally,
- <a href="#/2/3">like this</a>.
- </p>
+ <section>
+ <h2>Distributed version control</h2>
+ <p>So far we've talked about managing code locally, but
+ many VCSes make it easy to collaborate. The usual
+ workflow is something like this:</p>
+ <img src="img/18333fig0502-tn.png" />
+ <p style="text-align: center;"><small>
+ From <a href="https://github.com/progit/progit/">Pro Git</a>
+ </small></p>
+ </section>
+ <section>
+ <h2>Public repositories</h2>
+ <p>It's easy to host your own public repositories
+ (e.g. on <code>newton</code>), but there are also a number
+ of free hosting sites
+ (<a href="http://github.com/">GitHub</a>,
+ <a href="http://gitorious.org/">Gitorious</a>,
+ <a href="http://bitbucket.org/">Bitbucket</a>,
+ …).</p>
+ <img src="img/18333fig0413-tn.png" />
+ <p style="text-align: center;"><small>
+ From <a href="https://github.com/progit/progit/">Pro Git</a>
+ </small></p>
+ </section>
</section>
-
<section>
<section>
- <h2>Fragmented Views</h2>
- <p>Hit the next arrow...</p>
- <p class="fragment">... to step through ...</p>
- <ol>
- <li class="fragment"><code>any type</code></li>
- <li class="fragment"><em>of view</em></li>
- <li class="fragment"><strong>fragments</strong></li>
- </ol>
-
+ <h2>Python packaging</h2>
+ <p>Python packaging has been evolving slowly, and there
+ are a number of competing libraries at the moment:</p>
+ <img src="img/state_of_packaging.svg" />
+ <p style="text-align: center;"><small>
+ From
+ the <a href="https://bitbucket.org/tarek/hitchhiker-guide-packaging/overview">Hitchhiker's
+ Guide to Packaging</a>
+ </small></p>
<aside class="notes">
- This slide has fragments which are also stepped through in the notes window.
+ <p>Automatic dependency installation is currently only
+ supported by Setuptools and Distribute, but support is
+ being stabalized for the standard library
+ (e.g. <a href="http://www.python.org/dev/peps/pep-0427/">wheels</a>
+ can
+ use <a href="http://www.python.org/dev/peps/pep-0345/">version
+ 1.2 metadata</a> with <code>Requires-Dist</code>.</p>
</aside>
</section>
<section>
- <h2>Fragment Styles</h2>
- <p>There's a few styles of fragments, like:</p>
- <p class="fragment grow">grow</p>
- <p class="fragment shrink">shrink</p>
- <p class="fragment roll-in">roll-in</p>
- <p class="fragment fade-out">fade-out</p>
- <p class="fragment highlight-red">highlight-red</p>
- <p class="fragment highlight-green">highlight-green</p>
- <p class="fragment highlight-blue">highlight-blue</p>
+ <h2>Python's package index</h2>
+ <img src="img/pypi.jpg" />
+ <p style="text-align: center;"><small>
+ From
+ the <a href="https://bitbucket.org/tarek/hitchhiker-guide-packaging/overview">Hitchhiker's
+ Guide to Packaging</a>
+ </small></p>
+ </section>
+ <section>
+ <h2>Standard package content</h2>
+ <p>Things you should have in every package (Python or
+ otherwise).</p>
+ <dl>
+ <dt><code>README</code></dt>
+ <dd>Purpose, installation instructions, contact
+ information, …</dd>
+ <dt><code>COPYING</code> (or <code>LICENSE</code>)</dt>
+ <dd>How others are allowed to use the package</dd>
+ </dl>
+ </section>
+ <section>
+ <h2>Python package content</h2>
+ <p>The bulk of the configuration (for current libraries)
+ goes in <code>setup.py</code>.</p>
+ <pre>
+ #!/usr/bin/env python
+ from distutils.core import setup
+ setup(name='Distutils',
+ version='1.0',
+ description='Python Distribution Utilities',
+ author='Greg Ward',
+ author_email='gward@python.net',
+ url='http://www.python.org/sigs/distutils-sig/',
+ packages=['distutils', 'distutils.command'],
+ )
+ </pre>
+ </section>
+ <section>
+ <h2>Cutting a release</h2>
+ <pre>
+ …hack hack hack…
+ $ git commit -am 'Bump to version 0.7'
+ $ git tag -s -m 'version 0.7' v0.7
+ $ git push --tags origin master
+ $ python setup.py sdist upload
+ </pre>
+ </section>
+ <section>
+ <h2>Installing packages from PyPI</h2>
+ <pre>
+ $ pip install --user pycomedi
+ Downloading/unpacking pycomedi
+ Downloading pycomedi-0.7.tar.gz (47kB): 47kB downloaded
+ Running setup.py egg_info for package pycomedi
+ Installing collected packages: pycomedi
+ Running setup.py install for pycomedi
+ cythoning pycomedi/_error.pyx to pycomedi/_error.c
+ building 'pycomedi._error' extension
+ x86_64-pc-linux-gnu-gcc … -o build/temp.linux-x86_64-3.2/pycomedi/_error.o
+ …
+ Successfully installed pycomedi
+ Cleaning up...
+ </pre>
</section>
</section>
-
- <section>
- <h2>Spectacular image!</h2>
- <a class="image" href="http://lab.hakim.se/meny/" target="_blank">
- <img width="320" height="299" src="http://s3.amazonaws.com/hakim-static/portfolio/images/meny.png" alt="Meny">
- </a>
- </section>
-
- <section>
- <h2>Export to PDF</h2>
- <p>Presentations can be <a href="https://github.com/hakimel/reveal.js#pdf-export">exported to PDF</a>, below is an example that's been uploaded to SlideShare.</p>
- <iframe id="slideshare" src="http://www.slideshare.net/slideshow/embed_code/13872948" width="455" height="356" style="margin:0;overflow:hidden;border:1px solid #CCC;border-width:1px 1px 0;margin-bottom:5px" allowfullscreen> </iframe>
- <script>
- document.getElementById('slideshare').attributeName = 'allowfullscreen';
- </script>
- </section>
-
- <section>
- <h2>Take a Moment</h2>
- <p>
- Press b or period on your keyboard to enter the 'paused' mode. This mode is helpful when you want to take distracting slides off the screen
- during a presentation.
- </p>
- </section>
-
- <section>
- <h2>Stellar Links</h2>
- <ul>
- <li><a href="https://github.com/hakimel/reveal.js">Source code on GitHub</a></li>
- <li><a href="http://hakim.se/projects/reveal-js">Leave feedback on my site</a></li>
- <li><a href="http://twitter.com/hakimel">Follow me on Twitter</a></li>
- </ul>
- </section>
-
<section>
- <h2>It's free</h2>
- <p>
- reveal.js and <a href="http://www.rvl.io">rvl.io</a> are entirely free but if you'd like to support the projects you can donate below.
- Donations will go towards hosting and domain costs.
- </p>
- <form action="https://www.paypal.com/cgi-bin/webscr" method="post">
- <input type="hidden" name="cmd" value="_donations">
- <input type="hidden" name="business" value="hakim.elhattab@gmail.com">
- <input type="hidden" name="lc" value="US">
- <input type="hidden" name="item_name" value="reveal.js / rvl.io">
- <input type="hidden" name="no_note" value="0">
- <input type="hidden" name="currency_code" value="USD">
- <input type="hidden" name="bn" value="PP-DonationsBF:btn_donate_LG.gif:NonHostedGuest">
- <input type="image" src="https://www.paypalobjects.com/en_US/i/btn/btn_donate_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!">
- </form>
+ <section>
+ <h2>System packaging</h2>
+ <p>Python packaging is great if your packages only depend
+ on other Python packages.
+ My <a href="https://pypi.python.org/pypi/pycomedi/">pycomedi</a>
+ package depends
+ on <a href="http://www.comedi.org/">comedilib</a>. How do
+ I automatically install that? How do I check for the
+ required kernel configuration?</p>
+ <p>We need to reach beyond Python packaging for the
+ distribution's general purpose package manger.</p>
+ </section>
+ <section>
+ <h2>Gentoo packaging</h2>
+ <p>Gentoo's <a href="http://www.gentoo.org/proj/en/qa/pms.xml">Package
+ Manager Specification</a> defines the package format. The
+ core element is the ebuild:</p>
+ <pre>
+ EAPI="5"
+ PYTHON_COMPAT="python{2_6,2_7,3_2,3_3}"
+ inherit eutils distutils-r1 git-2
+ EGIT_REPO_URI="git://tremily.us/${PN}.git"
+ DESCRIPTION="Pythonic wrappers around the Comedilib device drivers."
+ HOMEPAGE="http://blog.tremily.us/posts/${PN}/"
+ LICENSE="GPL-3"
+ SLOT="0"
+ KEYWORDS="~x86 ~amd64"
+ IUSE="doc +kmod test"
+ …
+ </pre>
+ </section>
+ <section>
+ <h2>Ebuild dependencies</h2>
+ <p>Run-time and build-time dependencies can depend
+ on <code>USE</code> flags, which makes supporting optional
+ functionality easy:</p>
+ <pre>
+ …
+ IUSE="doc +kmod test"
+ RDEPEND="sci-libs/comedilib[python]
+ dev-python/numpy
+ sci-libs/scipy
+ kmod? ( dev-python/python-kmod )"
+ DEPEND="$RDEPEND
+ >=dev-python/cython-0.14
+ test? ( dev-python/nose )"
+ …
+ </pre>
+ </section>
+ <section>
+ <h2>Ebuild phases</h2>
+ <p>Ebuilds have a number of phases
+ (<code>pkg_pretend</code>,
+ <code>pkg_setup</code>,
+ <code>src_unpack</code>,
+ <code>src_prepare</code>,
+ <code>src_configure</code>,
+ <code>src_compile</code>,
+ …). Eclasses usually setup good defaults, which you can
+ override as you see fit.</p>
+ <pre>
+ …
+ src_install() {
+ distutils_src_install
+ dodoc README
+ if use doc; then
+ dodoc -r doc/
+ fi
+ }
+ </pre>
+ </section>
+ <section>
+ <h2>Overlays</h2>
+ <p>Since I don't have access to the
+ core <a href="http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/">Portage
+ tree</a>, I store my packages in
+ an <a href="http://www.gentoo.org/proj/en/overlays/userguide.xml">overlay</a>:</p>
+ <pre>
+ # emerge -av app-portage/layman
+ # layman --add wtk
+ # echo "source /var/lib/layman/make.conf" >> /etc/portage/make.conf
+ # emerge -av pycomedi
+ These are the packages that would be merged, in order:
+ Calculating dependencies... done!
+ [ebuild N ~] sci-libs/comedilib-9999::wtk USE="python -doc -ruby" 0 kB
+ [ebuild N ~] dev-python/python-kmod-9999::wtk 0 kB
+ [ebuild N ] sci-libs/scipy-0.9.0-r1 USE="-doc -umfpack" 0 kB
+ [ebuild N ~] sci-libs/pycomedi-9999::wtk USE="kmod -doc {-test}" 0 kB
+ Total: 4 packages (4 new), Size of downloads: 0 kB
+ Would you like to merge these packages? [Yes/No]
+ …
+ </pre>
+ </section>
</section>
-
<section>
<h1>THE END</h1>
- <h3>BY Hakim El Hattab / hakim.se</h3>
+ <p style="text-align: center;">
+ Written with <a href="http://lab.hakim.se/reveal-js/">reveal.js</a>
+ </p>
</section>
-
</div>
-
</div>
-
<script src="lib/js/head.min.js"></script>
<script src="js/reveal.min.js"></script>
-
<script>
-
// Full list of configuration options available here:
// https://github.com/hakimel/reveal.js#configuration
Reveal.initialize({
progress: true,
history: true,
center: true,
-
theme: Reveal.getQueryHash().theme, // available themes are in /css/theme
- transition: Reveal.getQueryHash().transition || 'default', // default/cube/page/concave/zoom/linear/fade/none
-
+ transition: Reveal.getQueryHash().transition || 'none', // default/cube/page/concave/zoom/linear/fade/none
// Optional libraries used to extend on reveal.js
dependencies: [
{ src: 'lib/js/classList.js', condition: function() { return !document.body.classList; } },
// { src: 'plugin/remotes/remotes.js', async: true, condition: function() { return !!document.body.classList; } }
]
});
-
</script>
-
</body>
</html>