<?xml version="1.0" encoding="utf-8"?>
<!-- generator="FeedCreator 1.7.2-ppt DokuWiki" -->
<?xml-stylesheet href="http://www.gareus.de/lib/exe/css.php?s=feed" type="text/css"?>
<rss version="2.0">
    <channel>
        <title>Robin Gareus wiki</title>
        <description></description>
        <link>http://www.gareus.de/</link>
        <lastBuildDate>Sun, 20 May 2012 22:21:24 +0000</lastBuildDate>
        <generator>FeedCreator 1.7.2-ppt DokuWiki</generator>
        <image>
            <url>http://www.gareus.de/lib/tpl/rob/images/favicon.ico</url>
            <title>Robin Gareus</title>
            <link>http://www.gareus.de/</link>
        </image>
        <item>
            <title>sndfile-waveform</title>
            <link>http://www.gareus.de/wiki/sndfile-waveform</link>
            <description>
&lt;h1 class=&quot;sectionedit2&quot;&gt;&lt;a name=&quot;sndfile-waveform&quot; id=&quot;sndfile-waveform&quot;&gt;Sndfile-waveform&lt;/a&gt;&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT2 SECTION &quot;Sndfile-waveform&quot; [1-32] --&gt;
&lt;h2 class=&quot;sectionedit3&quot;&gt;&lt;a name=&quot;preface&quot; id=&quot;preface&quot;&gt;Preface&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Erik de Castro Lopo wrote:
&lt;/p&gt;
&lt;blockquote&gt;&lt;div class=&quot;no&quot;&gt;
 Robin Gareus wrote:&lt;br/&gt;
 &lt;blockquote&gt;&lt;div class=&quot;no&quot;&gt;
 I was actually surprised that there&amp;#039;s actually no sndfile-waveform&lt;br/&gt;
 tool, yet! – Yeah right. It&amp;#039;s a gimmick :)&lt;/div&gt;&lt;/blockquote&gt;

&lt;p&gt;
 &lt;br/&gt;
 You write it and I&amp;#039;ll be happy to add it to sndfile-tools.&lt;br/&gt;
 &lt;br/&gt;
 Erik
&lt;/p&gt;
&lt;/div&gt;&lt;/blockquote&gt;

&lt;p&gt;
&lt;a href=&quot;http://lists.linuxaudio.org/pipermail/linux-audio-user/2012-January/082747.html&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://lists.linuxaudio.org/pipermail/linux-audio-user/2012-January/082747.html&quot;  rel=&quot;nofollow&quot;&gt;LAU email&lt;/a&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT3 SECTION &quot;Preface&quot; [33-392] --&gt;
&lt;h2 class=&quot;sectionedit4&quot;&gt;&lt;a name=&quot;story&quot; id=&quot;story&quot;&gt;Story&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
The story is told as &lt;code&gt;–help&lt;/code&gt; text. The Source is available from the 
&lt;a href=&quot;http://rg42.org/gitweb/?p=sndfile-tools.git;a=summary&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://rg42.org/gitweb/?p=sndfile-tools.git;a=summary&quot;  rel=&quot;nofollow&quot;&gt;git repository&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;
A uniform diff for sndfile-tools 1.03 is available from &lt;a href=&quot;http://rg42.org/gitweb/?p=sndfile-tools.git;a=commitdiff_plain;hp=upstream;h=master&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://rg42.org/gitweb/?p=sndfile-tools.git;a=commitdiff_plain;hp=upstream;h=master&quot;  rel=&quot;nofollow&quot;&gt;here&lt;/a&gt;.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;
sndfile-waveform - waveform image generator

Create a PNG image file visualizing the waveform of the audio.

Usage: ./src/sndfile-waveform [OPTION]  &amp;#60;sound-file&amp;#62; &amp;#60;png-file&amp;#62;

Options:
  -A, --annotation &amp;#60;COL&amp;#62;    specify text and border color; default 0xffffffff
  -b, --border              diplay a border with annotations
  -B, --background &amp;#60;COL&amp;#62;    specify background color; default 0x99ffffff
  -c, --channel             choose channel(s) to plot, 0: merge to mono
                            &amp;#60;0: all channels vertically separated
  -F, --foreground &amp;#60;COL&amp;#62;    specify background color; default 0x99000000
  -g &amp;#60;w&amp;#62;x&amp;#60;h&amp;#62;,               specify the size of the image to create
      --geometry &amp;#60;w&amp;#62;x&amp;#60;h&amp;#62;    default: 800x192
  -h, --help                display this help and exit
  -l, --logscale            use logarithmic scale
  -r, --rectified           rectify waveform
  -t  &amp;#60;num&amp;#62; [/ &amp;#60;den&amp;#62;]       use timecode instead of seconds for x-axis
      --timecode            numerator must be set, denominator defaults to 1
  -T  &amp;#60;offset&amp;#62;              override the BWF time-reference (if any)
                            the offset is specified in audio-frames
  -V, --version             output version information and exit&lt;/pre&gt;
&lt;/div&gt;
&lt;!-- EDIT4 SECTION &quot;Story&quot; [393-1942] --&gt;
&lt;h2 class=&quot;sectionedit5&quot;&gt;&lt;a name=&quot;example_images&quot; id=&quot;example_images&quot;&gt;Example Images&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;sndfile-waveform  /tmp/ywbs.wav example0.png&lt;/pre&gt;

&lt;p&gt;
&lt;a href=&quot;http://www.gareus.de/_detail/wiki/example0.png?id=wiki%3Asndfile-waveform&quot; class=&quot;media wikilink2&quot; title=&quot;wiki:example0.png&quot;&gt;&lt;img src=&quot;http://www.gareus.de/_media/wiki/example0.png&quot; class=&quot;mediacenter&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sndfile-waveform -b -t 10 -T 0 -g 800x400 -c -1 -l /tmp/ywbs.wav example1.png&lt;/pre&gt;

&lt;p&gt;
&lt;a href=&quot;http://www.gareus.de/_detail/wiki/example1.png?id=wiki%3Asndfile-waveform&quot; class=&quot;media wikilink2&quot; title=&quot;wiki:example1.png&quot;&gt;&lt;img src=&quot;http://www.gareus.de/_media/wiki/example1.png&quot; class=&quot;mediacenter&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sndfile-waveform -b -r -g 800x200  /tmp/ywbs.wav example2.png &lt;/pre&gt;

&lt;p&gt;
&lt;a href=&quot;http://www.gareus.de/_detail/wiki/example2.png?id=wiki%3Asndfile-waveform&quot; class=&quot;media wikilink2&quot; title=&quot;wiki:example2.png&quot;&gt;&lt;img src=&quot;http://www.gareus.de/_media/wiki/example2.png&quot; class=&quot;mediacenter&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sndfile-waveform -b -g 800x200 -F 0xFFFFFFFF -B 0xFF000000 -A 0xFF000000 -c 1 -l /tmp/ywbs.wav example3.png&lt;/pre&gt;

&lt;p&gt;
&lt;a href=&quot;http://www.gareus.de/_detail/wiki/example3.png?id=wiki%3Asndfile-waveform&quot; class=&quot;media wikilink2&quot; title=&quot;wiki:example3.png&quot;&gt;&lt;img src=&quot;http://www.gareus.de/_media/wiki/example3.png&quot; class=&quot;mediacenter&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT5 SECTION &quot;Example Images&quot; [1943-] --&gt;</description>
        <category>audio</category>
        <category>floss</category>
        <category>linux</category>
            <pubDate>Wed, 11 Jan 2012 16:14:44 +0000</pubDate>
        </item>
        <item>
            <title>IHM -- recursive semantic hypermedia archive</title>
            <link>http://www.gareus.de/wiki/ihm</link>
            <description>
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;http://www.gareus.de/_export/s5/wiki/ihm&quot; title=&quot;View page as slide show&quot;&gt;&lt;img src=&quot;http://www.gareus.de/lib/plugins/s5/screen.gif&quot; align=&quot;right&quot; alt=&quot;View page as slide show&quot; width=&quot;48&quot; height=&quot;48&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Robin Gareus 
&lt;/p&gt;

&lt;p&gt;
CiTu, Université Paris 8; linuxaudio.org
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT6 SECTION &quot;IHM -- recursive semantic hypermedia archive&quot; [1-140] --&gt;
&lt;h2 class=&quot;sectionedit7&quot;&gt;&lt;a name=&quot;introductionthe_problem&quot; id=&quot;introductionthe_problem&quot;&gt;Introduction: The Problem&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; IHM needs a spiffy media archive :)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; There is no appropriate non-commercial solution.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;em&gt;joomla&lt;/em&gt; or &lt;em&gt;drupal&lt;/em&gt; could be customized; yet that path would require non-sustainable development effort.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT7 SECTION &quot;Introduction: The Problem&quot; [141-387] --&gt;
&lt;h2 class=&quot;sectionedit8&quot;&gt;&lt;a name=&quot;intromotivationuse-case&quot; id=&quot;intromotivationuse-case&quot;&gt;Intro.: Motivation / Use-case&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Why another &lt;em&gt;content-management system&lt;/em&gt; ?
&lt;/p&gt;

&lt;p&gt;
&lt;em&gt;Content&lt;/em&gt; means “some sort of information”, &lt;em&gt;management&lt;/em&gt; in this context means “doing something with it.”
&lt;/p&gt;

&lt;p&gt;
Most of the &lt;acronym title=&quot;Content Management System&quot;&gt;CMS&lt;/acronym&gt; are web-site revisioning systems with emphasis on social networks.
&lt;/p&gt;

&lt;p&gt;
We want a system to &lt;strong&gt;contain abstract items&lt;/strong&gt; or objects (i.e. image, article,
movie, person, location, comments,..) and be able to &lt;strong&gt;define semantic relations&lt;/strong&gt; between them.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT8 SECTION &quot;Intro.: Motivation / Use-case&quot; [388-848] --&gt;
&lt;h2 class=&quot;sectionedit9&quot;&gt;&lt;a name=&quot;introcollaborations_12&quot; id=&quot;introcollaborations_12&quot;&gt;Intro.: Collaborations (1/2)&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Potential applications, existing projects, collaborations:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; IHM - archive about history of man-machine interfaces&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; TheArtCollider - platform for connected creation (CiTu, Paris8)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; MMDB - MyMovieDatabase (GNU project)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Ozalid - upcoming social network and archive of the Bibliothèque nationale de France&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; zeega.org - interactive documentaries and new forms of storytelling (Meta-Lab, Harvard)&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT9 SECTION &quot;Intro.: Collaborations (1/2)&quot; [849-1299] --&gt;
&lt;h2 class=&quot;sectionedit10&quot;&gt;&lt;a name=&quot;introcollaborations_22&quot; id=&quot;introcollaborations_22&quot;&gt;Intro.: Collaborations (2/2)&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Freesound.org - collection of audio-samples&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; newscoop/superdesk - newsroom production system (sourcefabric.org)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; airtime - radio station system (sourcefabric.org)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; mmTeX - fan-fiction layout and book publishing engine.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT10 SECTION &quot;Intro.: Collaborations (2/2)&quot; [1300-1574] --&gt;
&lt;h2 class=&quot;sectionedit11&quot;&gt;&lt;a name=&quot;introgoalsoutline&quot; id=&quot;introgoalsoutline&quot;&gt;Intro.: Goals / Outline&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Complete language-set to define relations&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Modular system (extended by plugins)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Publish/subscribe architecture&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Social network integration&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Pluggable front-ends:&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; n-dimensional navigation, timeline&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; interoperability with existing authoring tools, apps and data-sets.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; integrated &lt;acronym title=&quot;Extensible HyperText Markup Language&quot;&gt;XHTML&lt;/acronym&gt; engine&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT11 SECTION &quot;Intro.: Goals / Outline&quot; [1575-1936] --&gt;
&lt;h2 class=&quot;sectionedit12&quot;&gt;&lt;a name=&quot;implementationdata_model&quot; id=&quot;implementationdata_model&quot;&gt;Implementation: Data Model&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
The datamodel is a language based on triplets:
&lt;/p&gt;

&lt;p&gt;
“Subject” + “predicate” +  “Object”
&lt;/p&gt;

&lt;p&gt;
Where &lt;em&gt;subject&lt;/em&gt; and &lt;em&gt;objects&lt;/em&gt; are an noun for an item/thing/frame/object and &lt;em&gt;predicate&lt;/em&gt; is a verb.
&lt;/p&gt;

&lt;p&gt;
Both, &lt;em&gt;items&lt;/em&gt; and &lt;em&gt;predicates&lt;/em&gt; are modular types and each of
them may optionally have have dynamic &lt;em&gt;attributes or adverbs&lt;/em&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT12 SECTION &quot;Implementation: Data Model&quot; [1937-2298] --&gt;
&lt;h2 class=&quot;sectionedit13&quot;&gt;&lt;a name=&quot;impldata_model_example&quot; id=&quot;impldata_model_example&quot;&gt;Impl.: Data Model Example&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
“Mona Lisa” + was presented [from date to date] at + “the Louvre [website]”.
&lt;/p&gt;

&lt;p&gt;
“Mona Lisa” + was authored [on date] by + “L. da Vinci.”.
&lt;/p&gt;

&lt;p&gt;
Legend:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; “subject, object”&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; + predicate +&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; [attribute]&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT13 SECTION &quot;Impl.: Data Model Example&quot; [2299-2545] --&gt;
&lt;h2 class=&quot;sectionedit14&quot;&gt;&lt;a name=&quot;implreferences_edges&quot; id=&quot;implreferences_edges&quot;&gt;Impl.: References, Edges&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Each item in IHM has a canonical resource-&lt;acronym title=&quot;Uniform Resource Identifier&quot;&gt;URI&lt;/acronym&gt; (aka. UUID) - which can be used to &lt;strong&gt;universally reference&lt;/strong&gt; the content (similar to a permalink).&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Edges are &lt;strong&gt;directional&lt;/strong&gt; (parent/child) links between two resource-URIs using a &lt;strong&gt;predicate&lt;/strong&gt;.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; A matrix defines the potential relations.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT14 SECTION &quot;Impl.: References, Edges&quot; [2546-2879] --&gt;
&lt;h2 class=&quot;sectionedit15&quot;&gt;&lt;a name=&quot;impldata_types_and_relations&quot; id=&quot;impldata_types_and_relations&quot;&gt;Impl.: Data Types and Relations&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;http://www.gareus.de/_detail/wiki/ihm.png?id=wiki%3Aihm&quot; class=&quot;media&quot; title=&quot;wiki:ihm.png&quot;&gt;&lt;img src=&quot;http://www.gareus.de/_media/wiki/ihm.png?w=400&quot; class=&quot;mediaright&quot; align=&quot;right&quot; alt=&quot;&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;
&lt;a href=&quot;http://theartcollider.org/ihm-test/?viz=vis_form_admin_typematrix&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://theartcollider.org/ihm-test/?viz=vis_form_admin_typematrix&quot;  rel=&quot;nofollow&quot;&gt;http://theartcollider.org/ihm-test/?viz=vis_form_admin_typematrix&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT15 SECTION &quot;Impl.: Data Types and Relations&quot; [2880-3018] --&gt;
&lt;h2 class=&quot;sectionedit16&quot;&gt;&lt;a name=&quot;impltechnical_specs&quot; id=&quot;impltechnical_specs&quot;&gt;Impl.: Technical Specs&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;acronym title=&quot;Hypertext Preprocessor&quot;&gt;PHP&lt;/acronym&gt;/JavaScript/XHTML5, REST-&lt;acronym title=&quot;Application Programming Interface&quot;&gt;API&lt;/acronym&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Model/View/Controller&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; OAuth/OpenID for access control and authentication.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Atom/&lt;acronym title=&quot;Extensible Markup Language&quot;&gt;XML&lt;/acronym&gt; is the main data-format for content.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; uses existing &lt;acronym title=&quot;Resource Description Framework&quot;&gt;RDF&lt;/acronym&gt; templates (&lt;acronym title=&quot;Simple Object Access Protocol&quot;&gt;SOAP&lt;/acronym&gt;, DOAP, FOAF, etc)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; modular system: the layout/architecture is defined in the core but the actual visualization, rendering and [interaction + graphic] design is handled by plugins.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT16 SECTION &quot;Impl.: Technical Specs&quot; [3019-3444] --&gt;
&lt;h2 class=&quot;sectionedit17&quot;&gt;&lt;a name=&quot;impldata_aggregation&quot; id=&quot;impldata_aggregation&quot;&gt;Impl.: Data Aggregation&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Each object may be aggregated or synchronized with an external resource &lt;acronym title=&quot;Uniform Resource Identifier&quot;&gt;URI&lt;/acronym&gt;.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Items may reference read-only sources (media archive on disk, 3rd party information) - synchronisation.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Changes to the data-set are published (push) and can be subscribed to. Asynchronous updates.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT17 SECTION &quot;Impl.: Data Aggregation&quot; [3445-3767] --&gt;
&lt;h2 class=&quot;sectionedit18&quot;&gt;&lt;a name=&quot;prototypedemo&quot; id=&quot;prototypedemo&quot;&gt;Prototype: Demo&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;http://www.gareus.de/_detail/robin/ihm2.png?id=wiki%3Aihm&quot; class=&quot;media&quot; title=&quot;robin:ihm2.png&quot;&gt;&lt;img src=&quot;http://www.gareus.de/_media/robin/ihm2.png?w=500&quot; class=&quot;mediacenter&quot; alt=&quot;&quot; width=&quot;500&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Site: &lt;a href=&quot;http://theartcollider.org/ihm-test/&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://theartcollider.org/ihm-test/&quot;  rel=&quot;nofollow&quot;&gt;http://theartcollider.org/ihm-test/&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;acronym title=&quot;Application Programming Interface&quot;&gt;API&lt;/acronym&gt;: &lt;a href=&quot;http://theartcollider.org/ihm-test/api_rest.php&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://theartcollider.org/ihm-test/api_rest.php&quot;  rel=&quot;nofollow&quot;&gt;http://theartcollider.org/ihm-test/api_rest.php&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT18 SECTION &quot;Prototype: Demo&quot; [3768-3927] --&gt;
&lt;h2 class=&quot;sectionedit19&quot;&gt;&lt;a name=&quot;prototypewhat_s_missing&quot; id=&quot;prototypewhat_s_missing&quot;&gt;Prototype: What&amp;#039;s missing&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Proper front-end (web and interaction design[er])&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Item visualization&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Project specific customizations&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Backend-parts:&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Authentication &amp;amp; access-control&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Pub/Sub &lt;acronym title=&quot;Application Programming Interface&quot;&gt;API&lt;/acronym&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Query filtering on edges.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; …&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Community management&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT19 SECTION &quot;Prototype: What's missing&quot; [3928-4225] --&gt;
&lt;h2 class=&quot;sectionedit20&quot;&gt;&lt;a name=&quot;prototypeoutlook_roadmap&quot; id=&quot;prototypeoutlook_roadmap&quot;&gt;Prototype: Outlook, Roadmap&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Publicly usable prototype: after x-mas&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Freeze APIs: spring 2012&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT20 SECTION &quot;Prototype: Outlook, Roadmap&quot; [4226-] --&gt;</description>
        <category>wiki</category>
            <pubDate>Fri, 16 Dec 2011 17:11:34 +0000</pubDate>
        </item>
        <item>
            <title>DokuWiki Slideshow Plugin</title>
            <link>http://www.gareus.de/wiki/pixshow</link>
            <description>
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;

This &lt;a href=&quot;http://dokuwiki.org&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://dokuwiki.org&quot;  rel=&quot;nofollow&quot;&gt;DokuWiki&lt;/a&gt; plugin generates an image-gallery/slideshow from pictures in a given namespace.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT21 SECTION &quot;DokuWiki Slideshow Plugin&quot; [1-169] --&gt;
&lt;h2 class=&quot;sectionedit22&quot;&gt;&lt;a name=&quot;general_information&quot; id=&quot;general_information&quot;&gt;General Information&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;http://www.gareus.de/_detail/oss/pixshow/pixshow1.png?id=wiki%3Apixshow&quot; class=&quot;media&quot; title=&quot;oss:pixshow:pixshow1.png&quot;&gt;&lt;img src=&quot;http://www.gareus.de/_media/oss/pixshow/pixshow1.png?w=300&quot; class=&quot;mediaright&quot; align=&quot;right&quot; title=&quot;Screenshot&quot; alt=&quot;Screenshot&quot; width=&quot;300&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
View demo: &lt;a href=&quot;http://www.gareus.de/?do=pixshow&amp;amp;ns=blog%3Awicked_days&amp;amp;bl=wiki%3Apixshow&amp;amp;hidectrl=false&amp;amp;autostart=true&amp;amp;title=&quot; onclick=&quot;window.location.href='/?do=pixshow&amp;amp;ns=blog%3Awicked_days&amp;amp;bl=wiki%3Apixshow&amp;amp;hidectrl=false&amp;amp;autostart=true&amp;amp;title='+getScreenSize(); return false;&quot; title=&quot;View slide-show&quot;&gt;View slide-show&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;

&lt;h3&gt;&lt;a name=&quot;download&quot; id=&quot;download&quot;&gt;Download&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
The following link gets the latest version of the plugin and works with DokuWiki&amp;#039;s plugin manager: &lt;a href=&quot;http://rg42.org/gitweb/?p=pixshow.git;a=snapshot;h=release;sf=zip&amp;amp;.zip&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://rg42.org/gitweb/?p=pixshow.git;a=snapshot;h=release;sf=zip&amp;amp;.zip&quot;  rel=&quot;nofollow&quot;&gt;Download&lt;/a&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;http://rg42.org/gitweb/?p=pixshow.git;a=snapshot;h=release;sf=zip&amp;amp;.zip&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;&lt;a name=&quot;usage_example&quot; id=&quot;usage_example&quot;&gt;Usage Example&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
The Wiki Syntax
&lt;/p&gt;

&lt;p&gt;
{{pixshow&amp;gt;blog:2011-04-nyc?hidectl&amp;amp;New_York_Visit|view image slide-show of NYC visit}}
&lt;/p&gt;

&lt;p&gt;
creates a link with text “view image slide-show of NYC visit” that leads to a gallery showing images in the name-space &lt;code&gt;blog:2011-04-nyc&lt;/code&gt; titled “New York Visit” with the control-panel initially hidden.
&lt;/p&gt;

&lt;/div&gt;

&lt;h3&gt;&lt;a name=&quot;syntax&quot; id=&quot;syntax&quot;&gt;Syntax&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Note that the &lt;em&gt;pixshow&lt;/em&gt; plugin consists of two parts:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; An &lt;em&gt;action&lt;/em&gt;-plugin which creates the actual slideshow page.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; A &lt;em&gt;syntax&lt;/em&gt;-plugin to create a link to the gallery from within a wiki page.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code&quot;&gt;{{pixshow&amp;gt;NAMESPACE [?OPTIONS] [|link-text] }}&lt;/pre&gt;

&lt;p&gt;
The default &lt;code&gt;link-text&lt;/code&gt; (if none is given) is “View slide-show”.&lt;br/&gt;

&lt;code&gt;OPTIONS&lt;/code&gt; is a ampersand (&lt;code&gt;&amp;amp;&lt;/code&gt;) separated list: &lt;code&gt;noautostart&lt;/code&gt;, &lt;code&gt;hidectrl&lt;/code&gt;, &lt;code&gt;notitle&lt;/code&gt;, &lt;em&gt;TITLE&lt;/em&gt;.&lt;br/&gt;

The last given non-special option is takes as Gallery-title. If none is given, the namespace-name is used as Gallery-title unless &lt;code&gt;notitle&lt;/code&gt; is specified.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT22 SECTION &quot;General Information&quot; [170-1513] --&gt;
&lt;h2 class=&quot;sectionedit23&quot;&gt;&lt;a name=&quot;about&quot; id=&quot;about&quot;&gt;About&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
The &lt;em&gt;pixshow&lt;/em&gt; plugin is based on an independent JavaScript &lt;strong&gt;web-slideshow&lt;/strong&gt; &lt;sup&gt;&lt;a href=&quot;#fn__1&quot; name=&quot;fnt__1&quot; id=&quot;fnt__1&quot; class=&quot;fn_top&quot;&gt;1)&lt;/a&gt;&lt;/sup&gt; which has been modified to use DokuWiki as data-storage and for caching scaled images…
&lt;/p&gt;

&lt;p&gt;
This plugin is intended for users who keep their images organized (and ordered) with a reasonable amount of pictures per folder/namespace and want to artistically &lt;strong&gt;present&lt;/strong&gt; and &lt;strong&gt;share&lt;/strong&gt; those as &lt;strong&gt;image-galleries&lt;/strong&gt;.
&lt;/p&gt;

&lt;p&gt;
It is &lt;strong&gt;not&lt;/strong&gt; intended for &lt;em&gt;drop-all-images-in-one-folder&lt;/em&gt; use-cases. Organization and processing of images is &lt;strong&gt;not&lt;/strong&gt; withing the scope of this plugin.
&lt;/p&gt;

&lt;/div&gt;

&lt;h3&gt;&lt;a name=&quot;features&quot; id=&quot;features&quot;&gt;Features&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;http://www.gareus.de/_detail/oss/pixshow/pixshow_annotated.png?id=wiki%3Apixshow&quot; class=&quot;media&quot; title=&quot;oss:pixshow:pixshow_annotated.png&quot;&gt;&lt;img src=&quot;http://www.gareus.de/_media/oss/pixshow/pixshow_annotated.png?w=250&quot; class=&quot;mediaright&quot; align=&quot;right&quot; title=&quot;Annotated Screenshot&quot; alt=&quot;Annotated Screenshot&quot; width=&quot;250&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; create slide-show from DokuWiki name-space, link back to DokuWiki pages.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; automatic slide-show and manual mode (click on thumbnails)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; clean design / auto-hide control-panels - full-screen playback&lt;sup&gt;&lt;a href=&quot;#fn__2&quot; name=&quot;fnt__2&quot; id=&quot;fnt__2&quot; class=&quot;fn_top&quot;&gt;2)&lt;/a&gt;&lt;/sup&gt;.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; smooth fading transition &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; user customizable fade and delay times &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; dokuwiki authentication (&lt;em&gt;read-permission&lt;/em&gt; is required to view gallery; &lt;em&gt;upload-permission&lt;/em&gt; is needed to edit captions)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; JavaScript &amp;amp; &lt;acronym title=&quot;Extensible HyperText Markup Language&quot;&gt;XHTML&lt;/acronym&gt; only (no Flash/FLEX)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; scale images to browser-window size (binning for width/height values to allow caching of scaled images).&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Drag&amp;#039;n&amp;#039;Drop control panel.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Keyboard shortcuts and built-in help.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Gallery-Title&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Image-Captions (additional meta-data storage; edit captions directly from gallery)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Link-creation / social-bookmarks for each gallery/name-space.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;

&lt;h3&gt;&lt;a name=&quot;caption_admin&quot; id=&quot;caption_admin&quot;&gt;Caption Admin&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;http://www.gareus.de/_detail/oss/pixshow/pixshow_caption2.png?id=wiki%3Apixshow&quot; class=&quot;media&quot; title=&quot;oss:pixshow:pixshow_caption2.png&quot;&gt;&lt;img src=&quot;http://www.gareus.de/_media/oss/pixshow/pixshow_caption2.png?w=150&quot; class=&quot;mediaright&quot; align=&quot;right&quot; title=&quot;Caption Admin&quot; alt=&quot;Caption Admin&quot; width=&quot;150&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
If you access the gallery with write-permissions to the namespace, the control panel includes a text-field to edit/update the image-caption. 
&lt;/p&gt;

&lt;p&gt;
The text can only be modified while the slideshow is stopped (or in manual mode: click on thumbnail). For convenience and additional navigation buttons is available at the bottom of the page:
&lt;a href=&quot;http://www.gareus.de/_detail/oss/pixshow/pixshow_admin.png?id=wiki%3Apixshow&quot; class=&quot;media&quot; title=&quot;oss:pixshow:pixshow_admin.png&quot;&gt;&lt;img src=&quot;http://www.gareus.de/_media/oss/pixshow/pixshow_admin.png&quot; class=&quot;media&quot; title=&quot;Admin Menu&quot; alt=&quot;Admin Menu&quot; /&gt;&lt;/a&gt; - from left to right:
&lt;/p&gt;
&lt;ol&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Move to previous picture (or wrap around)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; show/hide links-popup&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; open controls-panel and edit caption (auto-stop slide-show)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; move to next picture in sequence (or wrap around) - (Note: this button is also replicated at the lower right corner).&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;
The caption-entry field allows UTF-8 text with &lt;acronym title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/acronym&gt;-entities and very basic &lt;acronym title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/acronym&gt; (no wiki syntax!). 
Only &lt;code&gt;&amp;lt;b&amp;gt;..&amp;lt;/b&amp;gt;&lt;/code&gt; (bold text), &lt;code&gt;&amp;lt;em&amp;gt;..&amp;lt;/em&amp;gt;&lt;/code&gt; (emphasize/italic) and the &lt;code&gt;&amp;lt;br/&amp;gt;&lt;/code&gt; (force line-break) &lt;acronym title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/acronym&gt; tags are accepted. Pressing &lt;code&gt;enter&lt;/code&gt; will submit the new text.
&lt;/p&gt;

&lt;p&gt;
The following shortcuts are automatically replaced to &lt;acronym title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/acronym&gt;-entities:
&lt;/p&gt;
&lt;div class=&quot;table sectionedit24&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0 rightalign&quot;&gt;  separators&lt;/th&gt;&lt;td class=&quot;col1 centeralign&quot;&gt;  ... - -- () (-)  &lt;/td&gt;&lt;td class=&quot;col2 centeralign&quot;&gt;  … − — · •  &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;th class=&quot;col0 rightalign&quot;&gt;  quotes&lt;/th&gt;&lt;td class=&quot;col1 centeralign&quot;&gt;  ,, `` &amp;#039;&amp;#039; &amp;lt;&amp;lt; &amp;gt;&amp;gt;  &lt;/td&gt;&lt;td class=&quot;col2 centeralign&quot;&gt;  „ “ ” « »  &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;th class=&quot;col0 rightalign&quot;&gt;  arrows&lt;/th&gt;&lt;td class=&quot;col1 centeralign&quot;&gt;  &amp;lt;- &amp;lt;-&amp;gt; -&amp;gt; &amp;lt;= &amp;lt;=&amp;gt; =&amp;gt;  &lt;/td&gt;&lt;td class=&quot;col2 centeralign&quot;&gt;  ← ↔ → ⇐ ⇔ ⇒  &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;th class=&quot;col0 rightalign&quot;&gt;  special glyphs&lt;/th&gt;&lt;td class=&quot;col1 centeralign&quot;&gt;  (C) (TM) (R) (P) (S) (*) &amp;lt; &amp;gt;  &lt;/td&gt;&lt;td class=&quot;col2 centeralign&quot;&gt;  © ™ ® ¶ § ♥ &amp;lt; &amp;gt;  &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT24 TABLE [4129-4393] --&gt;
&lt;/div&gt;

&lt;h3&gt;&lt;a name=&quot;installation_notes&quot; id=&quot;installation_notes&quot;&gt;Installation Notes&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; increase your DokuWiki&amp;#039;s &lt;code&gt;$conf[&amp;#039;cachetime&amp;#039;]&lt;/code&gt; so that scaled images remain in the cache for an appropriate time period (1 week to 1 month).&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; add &lt;code&gt;&amp;amp;cache=purge&lt;/code&gt; to the &lt;acronym title=&quot;Uniform Resource Locator&quot;&gt;URL&lt;/acronym&gt; in order to purge the &lt;em&gt;internal&lt;/em&gt; cache: &lt;em&gt;pixshow&lt;/em&gt; caches image-size for each namespace. Uploading or deleting a file from a namespace will automatically flush the cache on operating-systems which support the &lt;code&gt;filemtime&lt;/code&gt; system call.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; the captions for each image are stored in &lt;code&gt;data/meta/&amp;lt;NAMESPACE&amp;gt;/&amp;lt;IMAGENAME&amp;gt;.pixs&lt;/code&gt;.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT23 SECTION &quot;About&quot; [1514-4935] --&gt;
&lt;h2 class=&quot;sectionedit25&quot;&gt;&lt;a name=&quot;todo&quot; id=&quot;todo&quot;&gt;TODO&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;http://www.gareus.de/_detail/wiki/pixshow_example.png?id=wiki%3Apixshow&quot; class=&quot;media&quot; title=&quot;wiki:pixshow_example.png&quot;&gt;&lt;img src=&quot;http://www.gareus.de/_media/wiki/pixshow_example.png?w=300&quot; class=&quot;mediaright&quot; align=&quot;right&quot; title=&quot;Screenshot&quot; alt=&quot;Screenshot&quot; width=&quot;300&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; parse user-options (&lt;del&gt;auto-start, show/hide controls&lt;/del&gt;, sort-order, etc)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; plugin (admin) config options:&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; override defaults for user options (auto-start, show/hide control panel/thumbnails) &amp;amp; inverse user-options (noautostart,etc)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; configure style: custom design.css, icons.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; disable features: disable-meta, disable-links, disable-admin-links,…&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; allow to disable internal cache feature (depends on &lt;code&gt;filemtime&lt;/code&gt; which may not be avail on all &lt;acronym title=&quot;Operating System&quot;&gt;OS&lt;/acronym&gt;)&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; [later] detect browser-window resizing also after the slideshow has started and re-load images.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; [later] detect &lt;em&gt;empty folders&lt;/em&gt; (in the syntax plugin) and render gallery links as &lt;em&gt;red&lt;/em&gt; &amp;#039;missing page&amp;#039;.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; [later] smooth auto-hide transition, fade captions.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; additional meta-data (&lt;del&gt;EXIF parser, caption,&lt;/del&gt; comments, discussion, location, date/time,…)&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
&lt;a href=&quot;http://www.gareus.de/wiki/tags/dokuplugin&quot; class=&quot;wikilink1&quot; title=&quot;wiki:tags:dokuplugin&quot; rel=&quot;tag&quot;&gt;dokuplugin&lt;/a&gt;, &lt;a href=&quot;http://www.gareus.de/wiki/tags/floss&quot; class=&quot;wikilink1&quot; title=&quot;wiki:tags:floss&quot; rel=&quot;tag&quot;&gt;floss&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;!-- EDIT25 SECTION &quot;TODO&quot; [4936-] --&gt;&lt;div class=&quot;footnotes&quot;&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__1&quot; id=&quot;fn__1&quot; name=&quot;fn__1&quot; class=&quot;fn_bot&quot;&gt;1)&lt;/a&gt;&lt;/sup&gt; 
I wrote that around 2005&lt;/div&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__2&quot; id=&quot;fn__2&quot; name=&quot;fn__2&quot; class=&quot;fn_bot&quot;&gt;2)&lt;/a&gt;&lt;/sup&gt; 
if browser supports full-screen mode&lt;/div&gt;
&lt;/div&gt;
</description>
        <category>dokuplugin</category>
        <category>floss</category>
            <pubDate>Thu, 27 Oct 2011 14:30:00 +0000</pubDate>
        </item>
        <item>
            <title></title>
            <link>http://www.gareus.de/wiki/jackdebug</link>
            <description>&lt;pre class=&quot;code&quot;&gt;BASEDIR=/home/rgareus/src/svn/jack2mp
killjack.sh; \
LD_LIBRARY_PATH=$BASEDIR/linux:$BASEDIR/common \
JACK_DRIVER_DIR=$BASEDIR/linux \
gdb --args $BASEDIR/dbus/jackdbus auto&lt;/pre&gt;
</description>
        <category>wiki</category>
            <pubDate>Sun, 22 May 2011 17:06:58 +0000</pubDate>
        </item>
        <item>
            <title>Seeing Music - devel</title>
            <link>http://www.gareus.de/wiki/seeing_music</link>
            <description>
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;http://www.gareus.de/_detail/ditaa_seeing_music1_453950117b6f27956c5345dab231eee1.png?id=wiki%3Aseeing_music&amp;amp;cache=&quot; class=&quot;media&quot; title=&quot;ditaa_seeing_music1_453950117b6f27956c5345dab231eee1.png&quot;&gt;&lt;img src=&quot;http://www.gareus.de/_media/ditaa_seeing_music1_453950117b6f27956c5345dab231eee1.png?cache=&quot; class=&quot;media&quot; title=&quot;seeing_music1&quot; alt=&quot;seeing_music1&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
</description>
        <category>wiki</category>
            <pubDate>Tue, 08 Feb 2011 13:19:37 +0000</pubDate>
        </item>
        <item>
            <title>X-Compiling with Minwg</title>
            <link>http://www.gareus.de/wiki/mingw</link>
            <description>

&lt;p&gt;
for want of a better place: Here&amp;#039;s how I cross-compile *cough* windoof apps on Debian Gnu/Linux:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;./configure --host=i586-mingw32msvc --build=i386-linux --prefix=/home/rgareus/.wine/drive_c/x-prefix/&lt;/pre&gt;
&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
&lt;a href=&quot;http://www.gareus.de/wiki/tags/development&quot; class=&quot;wikilink1&quot; title=&quot;wiki:tags:development&quot; rel=&quot;tag&quot;&gt;development&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;
</description>
        <category>development</category>
            <pubDate>Thu, 08 Jul 2010 13:17:16 +0000</pubDate>
        </item>
        <item>
            <title>JACK2 control</title>
            <link>http://www.gareus.de/wiki/jack2contol</link>
            <description>
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Recent versions of &lt;a href=&quot;http://jackaudio.org&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://jackaudio.org&quot;  rel=&quot;nofollow&quot;&gt;Jack2&lt;/a&gt; aka. jackdmp can be controlled via Dbus and most interestingly, jackdmp allows the backend-driver to be replaced dynamically even while jackd is running!
&lt;/p&gt;

&lt;p&gt;
There&amp;#039;s two main use-cases that motivated me:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; to be able to quickly switch between the internal and an external soundcard.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; to have JACK sessions survive system suspend/resume cycles using the “dummy” driver.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
I hardly ever re-boot my laptop and I keep jackd running anytime &lt;sup&gt;&lt;a href=&quot;#fn__1&quot; name=&quot;fnt__1&quot; id=&quot;fnt__1&quot; class=&quot;fn_top&quot;&gt;1)&lt;/a&gt;&lt;/sup&gt;.
&lt;/p&gt;

&lt;p&gt;
So far I use &lt;a href=&quot;http://www.gareus.de/wiki/qjackctl_dbus&quot; class=&quot;wikilink1&quot; title=&quot;wiki:qjackctl_dbus&quot;&gt;Qjackctl&amp;#039;s Dbus&lt;/a&gt; interface to start/stop jackd during suspend; disadvantage is that it terminates all existing jack sessions; it&amp;#039;s not a big deal since most apps can simply re-connect but if jackd can be kept running: why not do so?
&lt;/p&gt;

&lt;p&gt;
I did the switch: jackd here is now jackdmp.. while audio-applications are ignorant about the change and everything there works just like it was before with jack1, suspend-resume and qjackctl is now somewhat broken.
qjackctl (v0.3.6.22) sometimes gets stuck when switching backends; this is a major bummer since I like it&amp;#039;s connection patchbay. &lt;code&gt;patchage&lt;/code&gt; (v0.4.4) suffers a similar issue. It does not update the ports correctly.
Anyway those problems can be fixed in future releases. 
But I hit another little snag: Calling &lt;code&gt;jack_control sm&lt;/code&gt; - which is needed to switch the backend - drops existing connections to system:* i/o ports. OK. The ports may be different in some setups but they&amp;#039;re not here: switching between two stereo cards.
&lt;/p&gt;

&lt;p&gt;
Long story short, here are two shell-scripts. The first to switch between different sound-cards retaining connections. and a secondd to take care of switching to the dummy-driver and back during suspend/resume cycles. They&amp;#039;re rather pragmatic hacks, but good enough to get started:
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;~/bin/myjackctl.sh&lt;/code&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;#!/bin/bash
function switch {
  CONNECTIONS=$(jack_lsp -c)
  jack_control sm || exit
  sleep 1
  IFS=$&amp;#039;\n&amp;#039;
  for line in $CONNECTIONS; do
    if [ ${line:0:3} == &amp;quot;   &amp;quot; ]; then
      OUT=${line:3}
    else
      OUT=&amp;quot;&amp;quot;
      IN=$line
    fi
    # TODO: only connect system &amp;amp; output ports to avoid dups
    # .. but it does not really matter :)
    if [ -n &amp;quot;$OUT&amp;quot; -a -n &amp;quot;$IN&amp;quot; ]; then
      jack_connect &amp;quot;$IN&amp;quot; &amp;quot;$OUT&amp;quot; &amp;amp;&amp;gt;/dev/null
    fi
  done
}

function start {
  DRIVER=${1-&amp;quot;alsa&amp;quot;}
  DEVICE=${2-&amp;quot;hw:0&amp;quot;}
  PERIOD=${3-&amp;quot;1024&amp;quot;}
  RATE=${4-&amp;quot;48000&amp;quot;}
  NPERIODS=${5-&amp;quot;3&amp;quot;}
  MIDI=${6-&amp;quot;none&amp;quot;}
  jack_control ds &amp;quot;$DRIVER&amp;quot;
  test &amp;quot;$DRIVER&amp;quot; == &amp;quot;dummy&amp;quot; || jack_control dps device &amp;quot;$DEVICE&amp;quot;
  test $RATE -eq 0 || jack_control dps rate $RATE
  test $PERIOD -eq 0 || jack_control dps period $PERIOD
  test $NPERIODS -eq 0 -o &amp;quot;$DRIVER&amp;quot; == &amp;quot;dummy&amp;quot; || jack_control dps nperiods $NPERIODS
  test &amp;quot;$DRIVER&amp;quot; == &amp;quot;dummy&amp;quot; || jack_control dps midi-driver &amp;quot;$MIDI&amp;quot;
  jack_control status || jack_control start
}

start $@
switch

#pidof lashd &amp;gt;/dev/null || lashd &amp;amp;&lt;/pre&gt;

&lt;p&gt;
&lt;code&gt;/etc/pm/sleep.d/90jack2ctl.sh&lt;/code&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;#!/bin/bash
case $1 in
  hibernate|suspend)
    pidof jackdbus &amp;gt;/dev/null &amp;amp;&amp;amp; \
      su -l rgareus -c &amp;quot;/home/rgareus/bin/myjackctl.sh dummy&amp;quot; &amp;gt;/dev/null
  ;;
  thaw|resume)
    (sleep 4 ;
     /etc/init.d/rtirq start; \
     SNDDEV=&amp;quot;hw:0&amp;quot;; grep UA25 /proc/asound/cards &amp;gt;/dev/null &amp;amp;&amp;amp; SNDDEV=&amp;quot;hw:1&amp;quot;;
     pidof jackdbus &amp;gt;/dev/null &amp;amp;&amp;amp;
      su -l rgareus -c &amp;quot;/home/rgareus/bin/myjackctl.sh alsa $SNDDEV&amp;quot; &amp;gt;/dev/null
    )&amp;amp;
  ;;
  *) 
  ;;
esac&lt;/pre&gt;
&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
&lt;a href=&quot;http://www.gareus.de/wiki/tags/jack&quot; class=&quot;wikilink1&quot; title=&quot;wiki:tags:jack&quot; rel=&quot;tag&quot;&gt;jack&lt;/a&gt;, &lt;a href=&quot;http://www.gareus.de/wiki/tags/development&quot; class=&quot;wikilink1&quot; title=&quot;wiki:tags:development&quot; rel=&quot;tag&quot;&gt;development&lt;/a&gt;, &lt;a href=&quot;http://www.gareus.de/wiki/tags/audio&quot; class=&quot;wikilink1&quot; title=&quot;wiki:tags:audio&quot; rel=&quot;tag&quot;&gt;audio&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;div class=&quot;footnotes&quot;&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__1&quot; id=&quot;fn__1&quot; name=&quot;fn__1&quot; class=&quot;fn_bot&quot;&gt;1)&lt;/a&gt;&lt;/sup&gt; 
the only exception is to save power when traveling to places where there&amp;#039;s no power-outlet fi. &lt;a href=&quot;http://rg42.org/_media/blog/back_from_finland/online_smile.jpg&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://rg42.org/_media/blog/back_from_finland/online_smile.jpg&quot;  rel=&quot;nofollow&quot;&gt;here&lt;/a&gt;; since jackd - especially at low latencies - increases power-consumption quite a bit.&lt;/div&gt;
&lt;/div&gt;
&lt;span class=&quot;plugin_feedmod_comments&quot;&gt;
  &lt;a href=&quot;http://www.gareus.de/wiki/jack2contol#discussion__section&quot; title=&quot;Read or add comments to this article&quot;&gt;Read or add comments to this article&lt;/a&gt;
&lt;/span&gt;
</description>
        <category>jack</category>
        <category>development</category>
        <category>audio</category>
        <category>floss</category>
            <pubDate>Sun, 06 Jun 2010 23:03:30 +0000</pubDate>
        </item>
        <item>
            <title>Campcaster Debian Packaging</title>
            <link>http://www.gareus.de/wiki/campcaster_slides</link>
            <description>
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;http://www.gareus.de/_export/s5/wiki/campcaster_slides&quot; title=&quot;View page as slide show&quot;&gt;&lt;img src=&quot;http://www.gareus.de/lib/plugins/s5/screen.gif&quot; align=&quot;right&quot; alt=&quot;View page as slide show&quot; width=&quot;48&quot; height=&quot;48&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Robin Gareus&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
linuxaudio.org&lt;br/&gt;

Université Paris&lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT38 SECTION &quot;Campcaster Debian Packaging&quot; [1-111] --&gt;
&lt;h2 class=&quot;sectionedit39&quot;&gt;&lt;a name=&quot;outline&quot; id=&quot;outline&quot;&gt;Outline&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Requirements&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Paths, Locations &amp;amp; persistent storage&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Code &amp;amp; Libraries&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Licensing Issues&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Patches made for the package&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; proposed future changes&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT39 SECTION &quot;Outline&quot; [112-294] --&gt;
&lt;h2 class=&quot;sectionedit40&quot;&gt;&lt;a name=&quot;packaging_requirements&quot; id=&quot;packaging_requirements&quot;&gt;Packaging Requirements&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Basics&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; install &amp;amp; setup&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; remove &amp;amp; keep data &amp;amp; config&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; purge → remove all&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Debianized Paths&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Clean Licenses, as little as possible extra libs&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; maintainable build/patch-system (quilt, git)&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT40 SECTION &quot;Packaging Requirements&quot; [295-546] --&gt;
&lt;h2 class=&quot;sectionedit41&quot;&gt;&lt;a name=&quot;paths&quot; id=&quot;paths&quot;&gt;Paths&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Original campcaster is setup to work from &lt;code&gt;/opt&lt;/code&gt; and the source-tree.&lt;br/&gt;

&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Campcaster&amp;#039;s &lt;code&gt;configure&lt;/code&gt; &amp;amp; &lt;code&gt;Makefile&lt;/code&gt; do not support &lt;code&gt;DESTDIR&lt;/code&gt;.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;prefix&lt;/code&gt; is used to replace paths rather than install-target.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Debian requires installation in &lt;code&gt;/usr&lt;/code&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;/usr/lib/campcaster&lt;/code&gt; - binary arch depenent files&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;/usr/share/camcaster&lt;/code&gt; - arch indep. files (&lt;acronym title=&quot;Hypertext Preprocessor&quot;&gt;PHP&lt;/acronym&gt;, templates)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;/var/[lib]/campcaster&lt;/code&gt; - data storage and variable files&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;/etc/&lt;/code&gt; - configuration, init-scripts, etc&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT41 SECTION &quot;Paths&quot; [547-1060] --&gt;
&lt;h2 class=&quot;sectionedit42&quot;&gt;&lt;a name=&quot;campcaster_problematic_libs&quot; id=&quot;campcaster_problematic_libs&quot;&gt;Campcaster problematic libs&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Debian does not (usually) allow external libs to be part of a package.
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; libodbc++&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; xmlrpc++&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; taglib&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; PEAR (security concerns)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; libserial (avail upstream)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; embedded Smarty&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT42 SECTION &quot;Campcaster problematic libs&quot; [1061-1291] --&gt;
&lt;h2 class=&quot;sectionedit43&quot;&gt;&lt;a name=&quot;licensing&quot; id=&quot;licensing&quot;&gt;Licensing&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Campcaster mixes serveral licenses:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;acronym title=&quot;Hypertext Preprocessor&quot;&gt;PHP&lt;/acronym&gt; licenses (v2.0, v2.02 &amp;amp; v3.0)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;acronym title=&quot;GNU General Public License&quot;&gt;GPL&lt;/acronym&gt; v2/v3&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;acronym title=&quot;Secure Sockets Layer&quot;&gt;SSL&lt;/acronym&gt; - incompatible with &lt;acronym title=&quot;GNU General Public License&quot;&gt;GPL&lt;/acronym&gt;.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; test-sounds (was creative-commons)&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT43 SECTION &quot;Licensing&quot; [1292-1475] --&gt;
&lt;h2 class=&quot;sectionedit44&quot;&gt;&lt;a name=&quot;packages&quot; id=&quot;packages&quot;&gt;Packages&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Main Target: Ubuntu/Lucid
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; campcaster-libs - customized libs&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; campcaster-data - arch-indep files (&lt;acronym title=&quot;Hypertext Preprocessor&quot;&gt;PHP&lt;/acronym&gt;, images,..)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; campcaster-station - executables, server-config&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; campcaster-studio - &lt;acronym title=&quot;Graphical User Interface&quot;&gt;GUI&lt;/acronym&gt; binaries&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT44 SECTION &quot;Packages&quot; [1476-1708] --&gt;
&lt;h2 class=&quot;sectionedit45&quot;&gt;&lt;a name=&quot;patches&quot; id=&quot;patches&quot;&gt;Patches&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; add &lt;code&gt;debian/&lt;/code&gt; - various scripts &amp;amp; man-pages&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; use apache Alias instead of symlink in &lt;code&gt;/var/www&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Change (hardcoded) paths in shell and install scripts&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Add icon in xpm format&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Change pgsql setup scripts for debian postgres 8.3/8.4&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; minor cosmetic changes&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT45 SECTION &quot;Patches&quot; [1709-2006] --&gt;
&lt;h2 class=&quot;sectionedit46&quot;&gt;&lt;a name=&quot;future&quot; id=&quot;future&quot;&gt;Future&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Some patches can (and already have been) merged upstream.
&lt;/p&gt;

&lt;p&gt;
Major Upstream ToDo Points:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; remove PEAR and rely on available PEAR packages&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; replace xmlrpc++&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; option to use system-wide libs instead of provided ones&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Nice to have:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; flexible install-prefix and install-destination&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; replace &lt;acronym title=&quot;Secure Sockets Layer&quot;&gt;SSL&lt;/acronym&gt; with GNU-TLS (xmlrpc++, curl)&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Packaging ToDo:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; drop campcaster&amp;#039;s &lt;code&gt;postInstallStation.sh&lt;/code&gt; script.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
    it does not conform to debian db/odbc standards
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; remove NFS auto-detection &amp;amp; provide README to set-up remote storage&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT46 SECTION &quot;Future&quot; [2007-] --&gt;</description>
        <category>wiki</category>
            <pubDate>Thu, 25 Feb 2010 00:45:29 +0000</pubDate>
        </item>
        <item>
            <title>building OSX applications</title>
            <link>http://www.gareus.de/wiki/osxbuild</link>
            <description>
&lt;p&gt;
multiple architecture build flags autoconf projects on OSX:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;CFLAGS=&amp;quot;-arch i386 -arch ppc -arch x86_64&amp;quot; \
CXXFLAGS=&amp;quot;-arch i386 -arch ppc -arch x86_64&amp;quot; \
./configure --disable-dependency-tracking&lt;/pre&gt;
</description>
        <category>development</category>
            <pubDate>Fri, 05 Feb 2010 20:00:04 +0000</pubDate>
        </item>
        <item>
            <title>Campcaster 4 Debian &amp; Ubunutu</title>
            <link>http://www.gareus.de/wiki/campcaster</link>
            <description>
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Notes on packaging &lt;a href=&quot;http://www.campware.org/en/camp/campcaster_news/&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://www.campware.org/en/camp/campcaster_news/&quot;  rel=&quot;nofollow&quot;&gt;Campcaster&lt;/a&gt; for Debian &amp;amp; Ubuntu..
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://www.gareus.de/_media/wiki/campcaster_1.3.0-1.tar.gz&quot; class=&quot;media mediafile mf_gz wikilink2&quot; title=&quot;wiki:campcaster_1.3.0-1.tar.gz&quot;&gt;campcaster_1.3.0-1.tar.gz&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
</description>
        <category>wiki</category>
            <pubDate>Tue, 02 Feb 2010 15:59:33 +0000</pubDate>
        </item>
        <item>
            <title>tatort-dl - an ARD-mediathek download utility</title>
            <link>http://www.gareus.de/wiki/tatort-dl</link>
            <description>
&lt;div class=&quot;level1&quot;&gt;



&lt;p&gt;
&lt;a href=&quot;http://www.gareus.de/_detail/wiki/tatort-dl.png?id=wiki%3Atatort-dl&quot; class=&quot;media&quot; title=&quot;wiki:tatort-dl.png&quot;&gt;&lt;img src=&quot;http://www.gareus.de/_media/wiki/tatort-dl.png&quot; class=&quot;mediaright&quot; align=&quot;right&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;code&gt;tatort-dl&lt;/code&gt; is a &lt;a href=&quot;http://en.wikipedia.org/wiki/Shell_script&quot; class=&quot;interwiki iw_wp&quot; target=&quot;_blank&quot; title=&quot;http://en.wikipedia.org/wiki/Shell_script&quot;&gt;shell-script&lt;/a&gt;ed &lt;a href=&quot;http://en.wikipedia.org/wiki/Command-line_interface&quot; class=&quot;interwiki iw_wp&quot; target=&quot;_blank&quot; title=&quot;http://en.wikipedia.org/wiki/Command-line_interface&quot;&gt;CLI&lt;/a&gt; tool for downloading films from &lt;a href=&quot;http://www.ardmediathek.de/&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://www.ardmediathek.de/&quot;  rel=&quot;nofollow&quot;&gt;http://www.ardmediathek.de/&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;
It&amp;#039;s named after it&amp;#039;s main purpose: to download &lt;a href=&quot;http://de.wikipedia.org/wiki/Liste_der_Tatort-Folgen&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://de.wikipedia.org/wiki/Liste_der_Tatort-Folgen&quot;  rel=&quot;nofollow&quot;&gt;Tatorts&lt;/a&gt; ;) However - as of Jan 25 2010 - it also works with any other content on &lt;a href=&quot;http://www.ardmediathek.de/&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://www.ardmediathek.de/&quot;  rel=&quot;nofollow&quot;&gt;http://www.ardmediathek.de/&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;
Please read the license under “help” at ardmediathek.de before using &lt;code&gt;tatort-dl&lt;/code&gt;. Some Films or Clips are only available during certain hours and/or time-periods.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT48 SECTION &quot;tatort-dl - an ARD-mediathek download utility&quot; [1-637] --&gt;
&lt;h2 class=&quot;sectionedit49&quot;&gt;&lt;a name=&quot;installation_and_usage&quot; id=&quot;installation_and_usage&quot;&gt;Installation and Usage&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;em&gt;tatort-rl&lt;/em&gt; will work on all systems supporting &lt;em&gt;bash&lt;/em&gt;, &lt;em&gt;curl/ and &lt;/em&gt;rtmpdump&lt;em&gt;. It&amp;#039;s developed for GNU/Linux and may work on OSX and &lt;acronym title=&quot;Berkeley Standard Distribution - more that just a UNIX computer operating system&quot;&gt;BSD&lt;/acronym&gt;.

Download: &lt;a href=&quot;http://rg42.org/gitweb/?p=scripts.git;a=blob_plain;f=tatort-dl.sh;hb=HEAD&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://rg42.org/gitweb/?p=scripts.git;a=blob_plain;f=tatort-dl.sh;hb=HEAD&quot;  rel=&quot;nofollow&quot;&gt;tatort-dl.sh (latest)&lt;/a&gt;.

Save it as &lt;code&gt;tatort-dl&lt;/code&gt; in &lt;code&gt;~/bin&lt;/code&gt; or &lt;code&gt;/usr/local/bin/&lt;/code&gt; and mark it as executable &lt;code&gt;chmod +x tatort-dl&lt;/code&gt;. 

You need to have &lt;/em&gt;rtmpdump&lt;em&gt; and &lt;/em&gt;curl&lt;em&gt; software installed (&lt;code&gt;sudo apt-get install rtmpdump curl&lt;/code&gt;).

  Usage:
    tatort-dl &amp;lt;ARDmediathek-&lt;acronym title=&quot;Uniform Resource Locator&quot;&gt;URL&lt;/acronym&gt;&amp;gt; [out-file]
  The default out-file name is ./format&amp;lt;ard-uid&amp;gt;.f4v
   
  Example:
    tatort-dl “&lt;a href=&quot;http://www.ardmediathek.de/ard/servlet/content/3517136?documentId=3701294&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://www.ardmediathek.de/ard/servlet/content/3517136?documentId=3701294&quot;  rel=&quot;nofollow&quot;&gt;http://www.ardmediathek.de/ard/servlet/content/3517136?documentId=3701294&lt;/a&gt;”
  

===== Source Code =====

&amp;lt;code|h view tatort-dl.sh source&amp;gt;
extern&amp;gt;&lt;a href=&quot;http://rg42.org/gitweb/?p=scripts.git;a=blob_plain;f=tatort-dl.sh;hb=HEAD&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://rg42.org/gitweb/?p=scripts.git;a=blob_plain;f=tatort-dl.sh;hb=HEAD&quot;  rel=&quot;nofollow&quot;&gt;http://rg42.org/gitweb/?p=scripts.git;a=blob_plain;f=tatort-dl.sh;hb=HEAD&lt;/a&gt;
&amp;lt;/code&amp;gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT49 SECTION &quot;Installation and Usage&quot; [638-] --&gt;</description>
        <category>floss</category>
        <category>video</category>
            <pubDate>Thu, 28 Jan 2010 17:44:55 +0000</pubDate>
        </item>
        <item>
            <title>Qjackctl - DBUS</title>
            <link>http://www.gareus.de/wiki/qjackctl_dbus</link>
            <description>
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Since version 0.3.4.11 &lt;a href=&quot;http://qjackctl.sourceforge.net/&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://qjackctl.sourceforge.net/&quot;  rel=&quot;nofollow&quot;&gt;qjackctl&lt;/a&gt; offers &lt;a href=&quot;http://www.freedesktop.org/wiki/Software/dbus&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://www.freedesktop.org/wiki/Software/dbus&quot;  rel=&quot;nofollow&quot;&gt;DBUS&lt;/a&gt; support to start and stop the JACK audio server:
&lt;/p&gt;

&lt;p&gt;
From the change-log:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;A couple of primitive D-Bus interface slots have been introduced,
giving the option to start/stop the jackd server from the system
bus eg. via dbus-send --system / org.rncbc.qjackctl.start (stop),
(a nice addition supplied by Robin Gareus, thanks).&lt;/pre&gt;

&lt;p&gt;
The DBUS addition qjackctl is mostly useful for laptops to get &lt;a href=&quot;http://jackaudio.org&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://jackaudio.org&quot;  rel=&quot;nofollow&quot;&gt;JACK&lt;/a&gt; back running after a suspend or hibernate cycle.
&lt;/p&gt;

&lt;p&gt;
My motivation was simple: Since skype started working with jackplug in an .asoundrc I missed a couple of calls simply because I forgot to launch jackd after a suspend/resume cycle. I figured that I spend less time hacking an DBUS addition than keep re-starting jackd by hand ;)
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT50 SECTION &quot;Qjackctl - DBUS&quot; [1-915] --&gt;
&lt;h2 class=&quot;sectionedit51&quot;&gt;&lt;a name=&quot;setup&quot; id=&quot;setup&quot;&gt;Setup&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
The command-line to launch JACK via qjackctl is  
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;dbus-send --system /org/rncbc/qjackctl org.rncbc.qjackctl.start&lt;/pre&gt;

&lt;p&gt;
On resume you actually want to execute:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;(sleep 4 ; dbus-send --system /org/rncbc/qjackctl org.rncbc.qjackctl.start)&amp;amp;&lt;/pre&gt;

&lt;p&gt;
which allows audio-devices to settle (eg USB-soundcards to power up, or ALSA settings to be restored) before restarting JACK.
&lt;/p&gt;

&lt;p&gt;
This command needs to be executed when resuming from standby mode. Depending on your GNU/Linux distribution and suspend-software this can be achieved by 
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; writing a hook script in /etc/pm/sleep.d/&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; patching /usr/lib/hal/scripts/linux/hal-system-power-suspend-linux&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; adding a script in /etc/acpi/resume.d/&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT51 SECTION &quot;Setup&quot; [916-1613] --&gt;
&lt;h2 class=&quot;sectionedit52&quot;&gt;&lt;a name=&quot;resume_script&quot; id=&quot;resume_script&quot;&gt;Resume Script&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
On Debian/squeeze I use the first option. Don&amp;#039;t forget to mark the file executable (&lt;code&gt;chmod +x /etc/pm/sleep.d/90qjackctl.sh&lt;/code&gt; ) after creating it.
&lt;/p&gt;

&lt;p&gt;
/etc/pm/sleep.d/90qjackctl.sh 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;#!/bin/bash
case $1 in
      thaw|resume)
              (sleep 4 ; dbus-send --system /org/rncbc/qjackctl org.rncbc.qjackctl.start)&amp;amp;
      ;;
  *)
      ;;
esac&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT52 SECTION &quot;Resume Script&quot; [1614-1998] --&gt;
&lt;h2 class=&quot;sectionedit53&quot;&gt;&lt;a name=&quot;asoundrc&quot; id=&quot;asoundrc&quot;&gt;.asoundrc&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
For lack of a better place to put it, here&amp;#039;s the &lt;a href=&quot;http://alsa.opensrc.org/.asoundrc&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://alsa.opensrc.org/.asoundrc&quot;  rel=&quot;nofollow&quot;&gt;~/.asoundrc&lt;/a&gt; (or &lt;code&gt;/etc/asound.conf&lt;/code&gt;) that I use to run all audio through &lt;a href=&quot;http://jackaudio.org&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://jackaudio.org&quot;  rel=&quot;nofollow&quot;&gt;JACK&lt;/a&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;pcm.!default {
      type plug
      slave { pcm &amp;quot;jack&amp;quot; }
}

pcm.jack {
      type jack
      playback_ports {
              0 system:playback_1
              1 system:playback_2
      }
      capture_ports {
              0 system:capture_1
              1 system:capture_2
      }
}

ctl.mixer0 {
  type hw
  card 1
}&lt;/pre&gt;
&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
&lt;a href=&quot;http://www.gareus.de/wiki/tags/audio&quot; class=&quot;wikilink1&quot; title=&quot;wiki:tags:audio&quot; rel=&quot;tag&quot;&gt;audio&lt;/a&gt;, &lt;a href=&quot;http://www.gareus.de/wiki/tags/jack&quot; class=&quot;wikilink1&quot; title=&quot;wiki:tags:jack&quot; rel=&quot;tag&quot;&gt;jack&lt;/a&gt;, &lt;a href=&quot;http://www.gareus.de/wiki/tags/documentation&quot; class=&quot;wikilink1&quot; title=&quot;wiki:tags:documentation&quot; rel=&quot;tag&quot;&gt;documentation&lt;/a&gt;, &lt;a href=&quot;http://www.gareus.de/wiki/tags/floss&quot; class=&quot;wikilink1&quot; title=&quot;wiki:tags:floss&quot; rel=&quot;tag&quot;&gt;floss&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;!-- EDIT53 SECTION &quot;.asoundrc&quot; [1999-] --&gt;</description>
        <category>audio</category>
        <category>jack</category>
        <category>documentation</category>
        <category>floss</category>
            <pubDate>Sun, 10 Jan 2010 21:10:29 +0000</pubDate>
        </item>
        <item>
            <title></title>
            <link>http://www.gareus.de/wiki/pixhow</link>
            <description>
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;img src=&quot;http://www.gareus.de/lib/images/smileys/fixme.gif&quot; class=&quot;middle&quot; alt=&quot;FIXME&quot; /&gt; : about text and desc.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;http://rg42.org/gitweb/?p=pixshow.git;a=snapshot;h=release;sf=zip&amp;amp;.zip&lt;/pre&gt;
&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
&lt;a href=&quot;http://www.gareus.de/wiki/tags/dokuplugin&quot; class=&quot;wikilink1&quot; title=&quot;wiki:tags:dokuplugin&quot; rel=&quot;tag&quot;&gt;dokuplugin&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;/div&gt;
</description>
        <category>wiki</category>
            <pubDate>Sat, 09 Jan 2010 19:29:55 +0000</pubDate>
        </item>
        <item>
            <title>Valgrind</title>
            <link>http://www.gareus.de/wiki/valgrind</link>
            <description>
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;http://valgrind.org/&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://valgrind.org/&quot;  rel=&quot;nofollow&quot;&gt;Valgrind&lt;/a&gt; is an instrumentation framework for building dynamic analysis tools. In other words it allows to check for memory-leaks and profile software applications.
&lt;/p&gt;

&lt;p&gt;
Since reading it&amp;#039;s manual page takes a bit to get through here are some command-lines to remember for easy usage.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;valgrind --tool=memcheck --leak-check=full --leak-resolution=high --num-callers=50 --show-reachable=yes &amp;lt;program&amp;gt; &amp;lt;args&amp;gt;&lt;/pre&gt;
&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
&lt;a href=&quot;http://www.gareus.de/wiki/tags/development&quot; class=&quot;wikilink1&quot; title=&quot;wiki:tags:development&quot; rel=&quot;tag&quot;&gt;development&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;/div&gt;
</description>
        <category>development</category>
            <pubDate>Sat, 09 Jan 2010 13:50:04 +0000</pubDate>
        </item>
        <item>
            <title>Formatting Syntax</title>
            <link>http://www.gareus.de/wiki/syntax</link>
            <description></description>
        <category>wiki</category>
            <pubDate>Thu, 07 Jan 2010 18:44:18 +0000</pubDate>
        </item>
        <item>
            <title>DokuWiki</title>
            <link>http://www.gareus.de/wiki/dokuwiki</link>
            <description></description>
        <category>wiki</category>
            <pubDate>Thu, 07 Jan 2010 18:44:18 +0000</pubDate>
        </item>
        <item>
            <title></title>
            <link>http://www.gareus.de/wiki/pix</link>
            <description>
&lt;p&gt;
fuer Maus:
</description>
        <category>wiki</category>
            <pubDate>Wed, 06 Jan 2010 19:18:02 +0000</pubDate>
        </item>
        <item>
            <title>Open LDAP Server</title>
            <link>http://www.gareus.de/wiki/ldap</link>
            <description></description>
        <category>wiki</category>
            <pubDate>Tue, 23 Jun 2009 11:27:30 +0000</pubDate>
        </item>
        <item>
            <title>PC Paralell port</title>
            <link>http://www.gareus.de/wiki/pinouts</link>
            <description></description>
        <category>wiki</category>
            <pubDate>Tue, 23 Jun 2009 11:27:30 +0000</pubDate>
        </item>
        <item>
            <title></title>
            <link>http://www.gareus.de/wiki/linuxrereadpartitiontable</link>
            <description></description>
        <category>wiki</category>
            <pubDate>Tue, 23 Jun 2009 11:27:30 +0000</pubDate>
        </item>
        <item>
            <title>Marzipan Soundtrack</title>
            <link>http://www.gareus.de/wiki/marzipanmidi</link>
            <description></description>
        <category>wiki</category>
            <pubDate>Tue, 23 Jun 2009 11:27:30 +0000</pubDate>
        </item>
        <item>
            <title>Code Snipplets</title>
            <link>http://www.gareus.de/wiki/randomcode</link>
            <description></description>
        <category>wiki</category>
            <pubDate>Tue, 23 Jun 2009 11:27:30 +0000</pubDate>
        </item>
        <item>
            <title>X11 VGA to PAL scart</title>
            <link>http://www.gareus.de/wiki/vga2pal</link>
            <description></description>
        <category>wiki</category>
            <pubDate>Tue, 23 Jun 2009 11:27:30 +0000</pubDate>
        </item>
        <item>
            <title>Abc midi tutorial</title>
            <link>http://www.gareus.de/wiki/tutorial</link>
            <description></description>
        <category>wiki</category>
            <pubDate>Tue, 23 Jun 2009 11:27:30 +0000</pubDate>
        </item>
        <item>
            <title>VGA to SCART</title>
            <link>http://www.gareus.de/wiki/vga2scart</link>
            <description></description>
        <category>video</category>
        <category>development</category>
        <category>installation</category>
            <pubDate>Tue, 23 Jun 2009 11:27:30 +0000</pubDate>
        </item>
        <item>
            <title>Whois</title>
            <link>http://www.gareus.de/wiki/whois</link>
            <description></description>
        <category>scratch</category>
            <pubDate>Tue, 23 Jun 2009 11:27:30 +0000</pubDate>
        </item>
        <item>
            <title>Debian Sid on the x60s</title>
            <link>http://www.gareus.de/wiki/x60sid</link>
            <description></description>
        <category>wiki</category>
            <pubDate>Tue, 23 Jun 2009 11:27:30 +0000</pubDate>
        </item>
        <item>
            <title>Tritonus est diabolus in musica.</title>
            <link>http://www.gareus.de/wiki/tritonus</link>
            <description></description>
        <category>wiki</category>
            <pubDate>Tue, 23 Jun 2009 11:27:30 +0000</pubDate>
        </item>
        <item>
            <title>Agame Stratego</title>
            <link>http://www.gareus.de/wiki/stratego</link>
            <description></description>
        <category>mindgames</category>
            <pubDate>Tue, 23 Jun 2009 11:27:30 +0000</pubDate>
        </item>
        <item>
            <title>qemu on Debian/sid</title>
            <link>http://www.gareus.de/wiki/qemu</link>
            <description></description>
        <category>wiki</category>
            <pubDate>Tue, 23 Jun 2009 11:27:30 +0000</pubDate>
        </item>
        <item>
            <title>Latex Wiki</title>
            <link>http://www.gareus.de/wiki/latex</link>
            <description></description>
        <category>wiki</category>
            <pubDate>Tue, 23 Jun 2009 11:27:30 +0000</pubDate>
        </item>
        <item>
            <title>secure shell stuff</title>
            <link>http://www.gareus.de/wiki/ssh</link>
            <description></description>
        <category>wiki</category>
            <pubDate>Tue, 23 Jun 2009 11:27:30 +0000</pubDate>
        </item>
        <item>
            <title>Wiki</title>
            <link>http://www.gareus.de/wiki/start</link>
            <description></description>
        <category>wiki</category>
            <pubDate>Tue, 23 Jun 2009 11:27:30 +0000</pubDate>
        </item>
        <item>
            <title>PlayGround</title>
            <link>http://www.gareus.de/wiki/playground</link>
            <description></description>
        <category>wiki</category>
            <pubDate>Tue, 23 Jun 2009 11:27:30 +0000</pubDate>
        </item>
        <item>
            <title>Javascript Code</title>
            <link>http://www.gareus.de/wiki/javasniplets</link>
            <description></description>
        <category>wiki</category>
            <pubDate>Tue, 23 Jun 2009 11:27:30 +0000</pubDate>
        </item>
        <item>
            <title>git(1) - the stupid content tracker</title>
            <link>http://www.gareus.de/wiki/git</link>
            <description></description>
        <category>wiki</category>
            <pubDate>Tue, 23 Jun 2009 11:27:30 +0000</pubDate>
        </item>
        <item>
            <title>Gareus Family</title>
            <link>http://www.gareus.de/wiki/gareus</link>
            <description></description>
        <category>wiki</category>
            <pubDate>Tue, 23 Jun 2009 11:27:30 +0000</pubDate>
        </item>
        <item>
            <title></title>
            <link>http://www.gareus.de/wiki/firefoxhacks</link>
            <description></description>
        <category>wiki</category>
            <pubDate>Tue, 23 Jun 2009 11:27:30 +0000</pubDate>
        </item>
        <item>
            <title>Fink</title>
            <link>http://www.gareus.de/wiki/fink</link>
            <description></description>
        <category>wiki</category>
            <pubDate>Tue, 23 Jun 2009 11:27:30 +0000</pubDate>
        </item>
        <item>
            <title>Arcade</title>
            <link>http://www.gareus.de/wiki/arcade</link>
            <description></description>
        <category>wiki</category>
            <pubDate>Tue, 23 Jun 2009 11:27:30 +0000</pubDate>
        </item>
        <item>
            <title>Chess boards</title>
            <link>http://www.gareus.de/wiki/chess</link>
            <description></description>
        <category>wiki</category>
            <pubDate>Tue, 23 Jun 2009 11:27:30 +0000</pubDate>
        </item>
        <item>
            <title>ABC midi</title>
            <link>http://www.gareus.de/wiki/abcmidi</link>
            <description></description>
        <category>wiki</category>
            <pubDate>Tue, 23 Jun 2009 11:27:30 +0000</pubDate>
        </item>
        <item>
            <title>Beatrix - the organ software synthesizer</title>
            <link>http://www.gareus.de/wiki/beatrix</link>
            <description>
&lt;div class=&quot;level1&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://people.dsv.su.se/~fk/beatrix_home.html&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://people.dsv.su.se/~fk/beatrix_home.html&quot;  rel=&quot;nofollow&quot;&gt;http://people.dsv.su.se/~fk/beatrix_home.html&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Beatrix is a MIDI-controlled, software synthesizer designed to imitate the sound and properties of the electromechanical organs and sound modification devices that brought world-wide fame to the names and products of Laurens Hammond and Don Leslie.
&lt;/p&gt;

&lt;p&gt;
Disclaimer: beatrix is &lt;em&gt;free&lt;/em&gt; (as in beer) - and redistribution if of the software is not permitted. the official license reads:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;YOU MAY FREELY DOWNLOAD AND INSTALL A COPY OF THE SOFTWARE FOR YOUR PERSONAL USE. YOU MAY NOT BUNDLE, RENAME, SELL,
REDISTRIBUTE, REPACKAGE OR IN ANY OTHER WAY ALTER WHOLE OR PART OF THE SOFTWARE AND ITS DISTRIBUTION WITHOUT PRIOR,
EXPRESS AND WRITTEN PERMISSION FROM THE AUTHOR.&lt;/pre&gt;

&lt;p&gt;
The information on this page &lt;em&gt;could&lt;/em&gt; be used in license-contradicting ways, however the following instructions are complying the license and do not contain any beatrix related source-code.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT56 SECTION &quot;Beatrix - the organ software synthesizer&quot; [1-972] --&gt;
&lt;h2 class=&quot;sectionedit57&quot;&gt;&lt;a name=&quot;about_this&quot; id=&quot;about_this&quot;&gt;About this&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
While &lt;a href=&quot;https://sourceforge.net/projects/bristol&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;https://sourceforge.net/projects/bristol&quot;  rel=&quot;nofollow&quot;&gt;https://sourceforge.net/projects/bristol&lt;/a&gt; would be the &lt;acronym title=&quot;Free/Libre and Open Source Software&quot;&gt;FLOSS&lt;/acronym&gt; synth of choise, beatrix implemets a great Hammond sound that is worth to pursue coding on. However the last official release v041 of beatrix from November 2004 lacks some essential features for professional use (eg. JACK-audio-interface and MIDI-seqencer). 
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT57 SECTION &quot;About this&quot; [973-1322] --&gt;
&lt;h2 class=&quot;sectionedit58&quot;&gt;&lt;a name=&quot;jackification&quot; id=&quot;jackification&quot;&gt;Jackification&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
It would not to complicated to wrap beatrix into a jack-audio and alsa-sequencer application without changing any of beatrix&amp;#039; original source!
&lt;/p&gt;

&lt;p&gt;
You would need to add jack-audio client code and wrap the midi-I/O into alsa much like &lt;a href=&quot;http://www.gareus.de/_media/robin/beatrix-v041-jack7u.diff&quot; class=&quot;media mediafile mf_diff&quot; title=&quot;robin:beatrix-v041-jack7u.diff&quot;&gt;beatrix-v041-jack7u.diff&lt;/a&gt; - I also suggest to compile beatrix with the &lt;code&gt;-O3&lt;/code&gt; option (in &lt;code&gt;Makefile&lt;/code&gt;) and replace the &lt;em&gt;usage&lt;/em&gt; documentation to include the &lt;code&gt;[-R &amp;lt;sample-rate&amp;gt;]&lt;/code&gt; optional command line argument (in &lt;code&gt;main.c&lt;/code&gt;).
&lt;/p&gt;

&lt;p&gt;
After this small exercise, one would find that some internal buffer-sizes and hardcoded optimizations in beatrix yield to unwanted audio-effects when running at samplerates other than 22050.
There are two proposed &lt;em&gt;workarounds&lt;/em&gt;: re-sample or change pitch!
&lt;/p&gt;

&lt;p&gt;
With jack at 22050Hz and multiples thereof (eg. 44.1kHz) there are no problems. Running at 48k SPS would need either of those fixes:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;./beatrix osc.tuning=404.249986  # internal seq at 22050, tune corrected.
 # 404.25 = 440 Hz / 24000 * 22050
 # internal pitch corrected from 22050 to 24k (*2 to JACK - 48kHz)&lt;/pre&gt;
&lt;pre class=&quot;code&quot;&gt;./beatrix -R 24001 osc.tuning=440.018333 # internal seq upsampled x2
 #(-R 24000 would be correct, but collides with beatrix internals)&lt;/pre&gt;
&lt;pre class=&quot;code&quot;&gt;./beatrix -R 48001 osc.tuning=440.009179 # natively synth at 48k
 # Beware: Beatrix ties the effects to sample-buffer size.
 # Using large sample-rates, it is possible to configure
 # long reverb and whirl-effect, which may cause internal buffer
 # overflows. &lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT58 SECTION &quot;Jackification&quot; [1323-2809] --&gt;
&lt;h2 class=&quot;sectionedit59&quot;&gt;&lt;a name=&quot;comments&quot; id=&quot;comments&quot;&gt;Comments&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Since many synth-internals are hardcoded in beatrix, a rewrite of the engine would be better suited than trying to fix existing code which is not even &lt;em&gt;free&lt;/em&gt;. The rewrite could however make use of existing code - given the author consents.
&lt;/p&gt;

&lt;p&gt;
A good alternative Hammond sound can be played with: &lt;a href=&quot;http://ll-plugins.nongnu.org/azr3/&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://ll-plugins.nongnu.org/azr3/&quot;  rel=&quot;nofollow&quot;&gt;http://ll-plugins.nongnu.org/azr3/&lt;/a&gt; a JACK port of the AZR3 VST plugin by Rumpelrausch Täips; &lt;acronym title=&quot;GNU General Public License&quot;&gt;GPL&lt;/acronym&gt; and everything. 
&lt;/p&gt;

&lt;p&gt;
There are also a few CSound instruments available: fi. &lt;a href=&quot;http://www.goodeveca.net/RotorOrgan/&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://www.goodeveca.net/RotorOrgan/&quot;  rel=&quot;nofollow&quot;&gt;RotorOrgan&lt;/a&gt; or &lt;a href=&quot;http://www.csounds.com/jmc/Instruments/instruments.htm&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://www.csounds.com/jmc/Instruments/instruments.htm&quot;  rel=&quot;nofollow&quot;&gt;DirectHammond&lt;/a&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT59 SECTION &quot;Comments&quot; [2810-] --&gt;</description>
        <category>jack</category>
        <category>musix</category>
        <category>audio</category>
            <pubDate>Wed, 13 May 2009 13:27:40 +0000</pubDate>
        </item>
        <item>
            <title>OAuth for Dokuwiki</title>
            <link>http://www.gareus.de/wiki/dokuoauth_simple</link>
            <description>
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
This is the &lt;em&gt;simple&lt;/em&gt; version of the &lt;a href=&quot;http://www.gareus.de/wiki/dokuoauth&quot; class=&quot;wikilink1&quot; title=&quot;wiki:dokuoauth&quot;&gt;dokuoauth&lt;/a&gt; plugin.
&lt;/p&gt;

&lt;p&gt;
It implements basic [&lt;a href=&quot;http://oauth.net&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://oauth.net&quot;  rel=&quot;nofollow&quot;&gt;http://oauth.net&lt;/a&gt;|oAuth]] support for &lt;a href=&quot;http://dokuwiki.org&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://dokuwiki.org&quot;  rel=&quot;nofollow&quot;&gt;DokuWiki&lt;/a&gt; using &lt;strong&gt;hardcoded&lt;/strong&gt; tokens instead of the whole oauth-flow. It&amp;#039;s mainly intended as example while the &lt;a href=&quot;http://www.gareus.de/wiki/dokuoauth&quot; class=&quot;wikilink1&quot; title=&quot;wiki:dokuoauth&quot;&gt;dokuoauth&lt;/a&gt; plugin is being developed.
&lt;/p&gt;

&lt;p&gt;
The plugin is symmetric: It authenticates OAuth signed requests to dokuwiki as well as adds an oAuth signature to an outgoing request (feed, sync) to hosts for which tokens are defined.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT60 SECTION &quot;OAuth for Dokuwiki&quot; [1-517] --&gt;
&lt;h2 class=&quot;sectionedit61&quot;&gt;&lt;a name=&quot;installation&quot; id=&quot;installation&quot;&gt;Installation&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Install (with plugin-manager): &lt;a href=&quot;http://rg42.org/gitweb/?p=dokuoauth.git;a=snapshot;h=simple;sf=tgz&amp;amp;.tar.gz&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://rg42.org/gitweb/?p=dokuoauth.git;a=snapshot;h=simple;sf=tgz&amp;amp;.tar.gz&quot;  rel=&quot;nofollow&quot;&gt;http://rg42.org/gitweb/?p=dokuoauth.git;a=snapshot;h=simple;sf=tgz&amp;amp;.tar.gz&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Edit &lt;code&gt;lib/plugins/dokuoauth/tokens.php&lt;/code&gt; with an editor.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; activate the plugin: Admin → Configuration-editor → DokuoAuth → enable&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT61 SECTION &quot;Installation&quot; [518-794] --&gt;
&lt;h2 class=&quot;sectionedit62&quot;&gt;&lt;a name=&quot;configuration&quot; id=&quot;configuration&quot;&gt;Configuration&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Example &lt;code&gt;tokens.php&lt;/code&gt;
&lt;/p&gt;
&lt;pre class=&quot;php code php&quot;&gt;&lt;span class=&quot;co1&quot;&gt;// oauth-consumer - outgoing requests - local=consumer&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$oauth_providers&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;a target=&quot;_blank&quot; href=&quot;http://www.php.net/array&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;
    &lt;a target=&quot;_blank&quot; href=&quot;http://www.php.net/array&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;
        &lt;span class=&quot;st_h&quot;&gt;'host'&lt;/span&gt;             &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;localhost&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;st_h&quot;&gt;'user'&lt;/span&gt;             &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;co2&quot;&gt;# if not empty only this user can use this token
&lt;/span&gt;        &lt;span class=&quot;st_h&quot;&gt;'key'&lt;/span&gt;              &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;ctoken&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;st_h&quot;&gt;'secret'&lt;/span&gt;           &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;csecret&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;st_h&quot;&gt;'token'&lt;/span&gt;            &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;atoken&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;st_h&quot;&gt;'token_secret'&lt;/span&gt;     &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;asecret&amp;quot;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;st_h&quot;&gt;'signature_method'&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;'HMAC-SHA1'&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;// Oauth service provider - incoming requests - local=serviceprovider&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$oauth_tokens&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;a target=&quot;_blank&quot; href=&quot;http://www.php.net/array&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;
    &lt;a target=&quot;_blank&quot; href=&quot;http://www.php.net/array&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;
        &lt;span class=&quot;st_h&quot;&gt;'key'&lt;/span&gt;              &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;ctoken&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;st_h&quot;&gt;'secret'&lt;/span&gt;           &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;csecret&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;st_h&quot;&gt;'token'&lt;/span&gt;            &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;atoken&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;st_h&quot;&gt;'token_secret'&lt;/span&gt;     &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;asecret&amp;quot;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;st_h&quot;&gt;'user'&lt;/span&gt;             &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;me&amp;quot;&lt;/span&gt; &lt;span class=&quot;co2&quot;&gt;# authenticate this user
&lt;/span&gt;    &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;a target=&quot;_blank&quot; href=&quot;http://www.php.net/array&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;
        &lt;span class=&quot;st_h&quot;&gt;'key'&lt;/span&gt;              &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;ct&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;st_h&quot;&gt;'secret'&lt;/span&gt;           &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;cs&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;st_h&quot;&gt;'token'&lt;/span&gt;            &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;at&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;st_h&quot;&gt;'token_secret'&lt;/span&gt;     &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;as&amp;quot;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;st_h&quot;&gt;'user'&lt;/span&gt;             &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;admin&amp;quot;&lt;/span&gt; &lt;span class=&quot;co2&quot;&gt;# authenticate this user
&lt;/span&gt;    &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
The &lt;code&gt;$oauth_providers&lt;/code&gt; is used for transparently OAuth signing outgoing requests. The Plugins intercepts requests via &lt;a href=&quot;http://www.google.com/search?q=devel%3Aevent%3Ahttpclient_request_send&amp;amp;btnI=lucky&quot; class=&quot;interwiki iw_go&quot; target=&quot;_blank&quot; title=&quot;http://www.google.com/search?q=devel%3Aevent%3Ahttpclient_request_send&amp;amp;btnI=lucky&quot;&gt;devel:event:httpclient_request_send&lt;/a&gt;, if the hostname matches &amp;#039;host&amp;#039; and the current (local) user matches the given &amp;#039;user&amp;#039;.
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;$oauth_tokens&lt;/code&gt; are for incoming requests with an &lt;code&gt;oauth_signature&lt;/code&gt; query parameter. If the tokens match and the signature is valid, the given &amp;#039;user&amp;#039; is automatically logged in for this request. It works for any &lt;acronym title=&quot;Hyper Text Transfer Protocol&quot;&gt;HTTP&lt;/acronym&gt; request, though it&amp;#039;s mainly intended for XMLRPC. 
&lt;/p&gt;

&lt;p&gt;
There can be multiple &lt;code&gt;$oauth_providers&lt;/code&gt; (for differnt hosts and users) as well as &lt;code&gt;$oauth_tokens&lt;/code&gt; (different users).
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT62 SECTION &quot;Configuration&quot; [795-2506] --&gt;
&lt;h2 class=&quot;sectionedit63&quot;&gt;&lt;a name=&quot;examples_and_testing&quot; id=&quot;examples_and_testing&quot;&gt;Examples and Testing&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;

&lt;h3&gt;&lt;a name=&quot;from_dokuwiki&quot; id=&quot;from_dokuwiki&quot;&gt;from dokuwiki&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Add a feed to a private namespace to a wiki-page. The outgoing request (to retrieve the feed) will be signed,
and the signature will be used to authenticate against DokuWiki again.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;{{rss http://localhost/dokuwiki/feed.php?mode=list&amp;amp;ns=private}}&lt;/pre&gt;

&lt;p&gt;
Make sure that the &lt;code&gt;tokens.php&lt;/code&gt; on the server lists the &lt;code&gt;host&lt;/code&gt; (here localhost) in &lt;code&gt;$oauth_providers&lt;/code&gt; and the feed-source has the same tokens and a username that can read the private-namespace in &lt;code&gt;$oauth_tokens&lt;/code&gt;.
&lt;/p&gt;

&lt;/div&gt;

&lt;h3&gt;&lt;a name=&quot;from_the_commandline&quot; id=&quot;from_the_commandline&quot;&gt;from the commandline&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
use &lt;code&gt;oauthsign&lt;/code&gt; from &lt;a href=&quot;http://www.gareus.de/oss/oauth/start&quot; class=&quot;wikilink1&quot; title=&quot;oss:oauth:start&quot;&gt;oauth-utils&lt;/a&gt;.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;oauthsign -c ctoken -C csecret -t atoken -T asecret -x &amp;quot;http://localhost/dokuwiki/feed.php?mode=list&amp;amp;ns=private&amp;quot;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;&lt;a name=&quot;debugging&quot; id=&quot;debugging&quot;&gt;debugging&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Enable &lt;em&gt;debug Logging&lt;/em&gt; (Admin → Configuration-editor → DokuoAuth) and look in the file &lt;code&gt;/tmp/oAuth.debug&lt;/code&gt;.
&lt;/p&gt;
&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
&lt;a href=&quot;http://www.gareus.de/wiki/tags/dokuplugin&quot; class=&quot;wikilink1&quot; title=&quot;wiki:tags:dokuplugin&quot; rel=&quot;tag&quot;&gt;dokuplugin&lt;/a&gt;, &lt;a href=&quot;http://www.gareus.de/wiki/tags/floss&quot; class=&quot;wikilink1&quot; title=&quot;wiki:tags:floss&quot; rel=&quot;tag&quot;&gt;floss&lt;/a&gt;, &lt;a href=&quot;http://www.gareus.de/wiki/tags/www&quot; class=&quot;wikilink1&quot; title=&quot;wiki:tags:www&quot; rel=&quot;tag&quot;&gt;www&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;!-- EDIT63 SECTION &quot;Examples and Testing&quot; [2507-] --&gt;</description>
        <category>dokuplugin</category>
        <category>floss</category>
        <category>www</category>
            <pubDate>Fri, 13 Mar 2009 14:13:10 +0000</pubDate>
        </item>
        <item>
            <title>InOut</title>
            <link>http://www.gareus.de/wiki/inout</link>
            <description>
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
..work in progress..
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT66 SECTION &quot;InOut&quot; [1-42] --&gt;
&lt;h2 class=&quot;sectionedit67&quot;&gt;&lt;a name=&quot;interaction_concept&quot; id=&quot;interaction_concept&quot;&gt;Interaction Concept&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Flow for &lt;em&gt;&lt;a href=&quot;http://citu.info/#projet_123_1&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://citu.info/#projet_123_1&quot;  rel=&quot;nofollow&quot;&gt;InOut&lt;/a&gt; Collab.&lt;/em&gt;
&lt;/p&gt;
&lt;ol&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Create Account (once)&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; agree to CC-SA &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; choose username &amp;amp; pass; request a &lt;em&gt;secutity token&lt;/em&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Choose Interaction Mode (for each session)&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;em&gt;simple&lt;/em&gt; - webcam, browser, file-upload&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;em&gt;normal&lt;/em&gt;:&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level3&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;em&gt;relay&lt;/em&gt; - DSL, low bandwidth, firewalled users&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level3&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;em&gt;p2p&lt;/em&gt; - requires IP, direct access to icecast &amp;amp; &lt;acronym title=&quot;Open Sound Control - &amp;quot;postmodern MIDI&amp;quot;&quot;&gt;OSC&lt;/acronym&gt; ports &lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Connect A/V streams&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level3&quot;&gt;&lt;div class=&quot;li&quot;&gt; create &lt;em&gt;OUT&lt;/em&gt;-port (provide hashed &lt;em&gt;security-token&lt;/em&gt; and/or register on server)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level3&quot;&gt;&lt;div class=&quot;li&quot;&gt; announce public &lt;acronym title=&quot;Open Sound Control - &amp;quot;postmodern MIDI&amp;quot;&quot;&gt;OSC&lt;/acronym&gt; commands/modifiers for this &lt;em&gt;OUT&lt;/em&gt; port (via XMPP)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level3&quot;&gt;&lt;div class=&quot;li&quot;&gt; retrieve a list of available &lt;em&gt;OUT&lt;/em&gt;-ports (from others), that can be used as &lt;em&gt;IN&lt;/em&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;/div&gt;
&lt;!-- EDIT67 SECTION &quot;Interaction Concept&quot; [43-772] --&gt;
&lt;h2 class=&quot;sectionedit68&quot;&gt;&lt;a name=&quot;brainstorm&quot; id=&quot;brainstorm&quot;&gt;Brainstorm&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Use XMPP for join/leave the network (alike jabber chat) and feedback (xmpp group chat)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; unique ID for all ports. &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; use &lt;acronym title=&quot;Open Sound Control - &amp;quot;postmodern MIDI&amp;quot;&quot;&gt;OSC&lt;/acronym&gt; for real-time control messages (client specific)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; provide a minimal set of &lt;acronym title=&quot;Open Sound Control - &amp;quot;postmodern MIDI&amp;quot;&quot;&gt;OSC&lt;/acronym&gt; for &lt;em&gt;simple mode&lt;/em&gt; eg. zoom, seek, effect settings&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; provide a &lt;acronym title=&quot;Extensible HyperText Markup Language&quot;&gt;XHTML&lt;/acronym&gt; &amp;lt;video/&amp;gt; interface to monitor/select active streams &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; media-browser for available files in the pool&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; simple-mode: &lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; server-side A/V creation tools (&lt;acronym title=&quot;Open Sound Control - &amp;quot;postmodern MIDI&amp;quot;&quot;&gt;OSC&lt;/acronym&gt;-in; A/V out) &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; server-side filters (&lt;acronym title=&quot;Open Sound Control - &amp;quot;postmodern MIDI&amp;quot;&quot;&gt;OSC&lt;/acronym&gt; controlled) &lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
&lt;a href=&quot;http://www.gareus.de/wiki/tags/development&quot; class=&quot;wikilink1&quot; title=&quot;wiki:tags:development&quot; rel=&quot;tag&quot;&gt;development&lt;/a&gt;, &lt;a href=&quot;http://www.gareus.de/wiki/tags/installation&quot; class=&quot;wikilink1&quot; title=&quot;wiki:tags:installation&quot; rel=&quot;tag&quot;&gt;installation&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;!-- EDIT68 SECTION &quot;Brainstorm&quot; [773-] --&gt;</description>
        <category>development</category>
        <category>installation</category>
            <pubDate>Fri, 20 Feb 2009 15:07:05 +0000</pubDate>
        </item>
        <item>
            <title>Collaborative Video Editing</title>
            <link>http://www.gareus.de/wiki/video_collaboration</link>
            <description>
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT69 SECTION &quot;Collaborative Video Editing&quot; [1-43] --&gt;
&lt;h2 class=&quot;sectionedit70&quot;&gt;&lt;a name=&quot;links_resources&quot; id=&quot;links_resources&quot;&gt;Links &amp;amp; Resources&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://www.syncvue.com/&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://www.syncvue.com/&quot;  rel=&quot;nofollow&quot;&gt;http://www.syncvue.com/&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://corp.kaltura.com/&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://corp.kaltura.com/&quot;  rel=&quot;nofollow&quot;&gt;http://corp.kaltura.com/&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://www.masternewmedia.org/news/2006/04/21/grassroots_collaborative_online_video_editing.htm&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://www.masternewmedia.org/news/2006/04/21/grassroots_collaborative_online_video_editing.htm&quot;  rel=&quot;nofollow&quot;&gt;http://www.masternewmedia.org/news/2006/04/21/grassroots_collaborative_online_video_editing.htm&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://metavid.org/wiki/Help:Installation&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://metavid.org/wiki/Help:Installation&quot;  rel=&quot;nofollow&quot;&gt;http://metavid.org/wiki/Help:Installation&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT70 SECTION &quot;Links &amp; Resources&quot; [44-] --&gt;</description>
        <category>wiki</category>
            <pubDate>Fri, 16 Jan 2009 03:37:54 +0000</pubDate>
        </item>
        <item>
            <title>DokuWiki LADSPA plugin</title>
            <link>http://www.gareus.de/wiki/dokuladspa</link>
            <description>
&lt;div class=&quot;level1&quot;&gt;

&lt;div class=&quot;notewarning&quot;&gt; Work in progres
&lt;/div&gt;

&lt;p&gt;
Visualizes &lt;acronym title=&quot;Linux Audio Developer&amp;#039;s Simple Plugin API&quot;&gt;LADSPA&lt;/acronym&gt; plugins and allows to &lt;em&gt;demonstrate&lt;/em&gt; audio effect-presets in a wiki &lt;del&gt;page&lt;/del&gt; story.
&lt;/p&gt;

&lt;p&gt;
see &lt;a href=&quot;http://mir.dnsalias.com/gitweb/?p=dokuladspa.git&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://mir.dnsalias.com/gitweb/?p=dokuladspa.git&quot;  rel=&quot;nofollow&quot;&gt;git repository&lt;/a&gt; for now.
&lt;/p&gt;
&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
&lt;a href=&quot;http://www.gareus.de/wiki/tags/floss&quot; class=&quot;wikilink1&quot; title=&quot;wiki:tags:floss&quot; rel=&quot;tag&quot;&gt;floss&lt;/a&gt;, &lt;a href=&quot;http://www.gareus.de/wiki/tags/www&quot; class=&quot;wikilink1&quot; title=&quot;wiki:tags:www&quot; rel=&quot;tag&quot;&gt;www&lt;/a&gt;, &lt;a href=&quot;http://www.gareus.de/wiki/tags/dokuplugin&quot; class=&quot;wikilink1&quot; title=&quot;wiki:tags:dokuplugin&quot; rel=&quot;tag&quot;&gt;dokuplugin&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;/div&gt;
</description>
        <category>floss</category>
        <category>www</category>
        <category>dokuplugin</category>
            <pubDate>Thu, 01 Jan 2009 14:38:33 +0000</pubDate>
        </item>
        <item>
            <title>DokuWiki Tag Entry Plugin</title>
            <link>http://www.gareus.de/wiki/tagentry</link>
            <description>
&lt;h1 class=&quot;sectionedit75&quot;&gt;&lt;a name=&quot;dokuwiki_tag_entry_plugin&quot; id=&quot;dokuwiki_tag_entry_plugin&quot;&gt;Dokuwiki Tag Entry Plugin&lt;/a&gt;&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
This dokuwiki plugin provides functionality to assign tags to a wiki-page.
&lt;/p&gt;&lt;div class=&quot;notewarning&quot;&gt;Work in Progress
&lt;/div&gt;

&lt;p&gt;
&lt;a href=&quot;http://www.gareus.de/_detail/oss/dokutagentry/tagentry2.png?id=wiki%3Atagentry&quot; class=&quot;media&quot; title=&quot;oss:dokutagentry:tagentry2.png&quot;&gt;&lt;img src=&quot;http://www.gareus.de/_media/oss/dokutagentry/tagentry2.png&quot; class=&quot;mediaright&quot; align=&quot;right&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
The &lt;em&gt;tagentry&lt;/em&gt; plugin displays a set of &lt;em&gt;tag-name checkboxes&lt;/em&gt; just below the edit form and automatically modifies the content of the wiki-text entry-area using javascript once the checkbox is activated.
It requires the &lt;a href=&quot;http://www.google.com/search?q=plugin%3Atag&amp;amp;btnI=lucky&quot; class=&quot;interwiki iw_go&quot; target=&quot;_blank&quot; title=&quot;http://www.google.com/search?q=plugin%3Atag&amp;amp;btnI=lucky&quot;&gt;tag&lt;/a&gt; and &lt;a href=&quot;http://www.google.com/search?q=plugin%3Apagelist&amp;amp;btnI=lucky&quot; class=&quot;interwiki iw_go&quot; target=&quot;_blank&quot; title=&quot;http://www.google.com/search?q=plugin%3Apagelist&amp;amp;btnI=lucky&quot;&gt;plugin:pagelist&lt;/a&gt; plugins.
Per default it lists pages below &lt;code&gt;tag:&lt;/code&gt; as tag-names.
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;http://www.gareus.de/_media/oss/dokutagentry/tagentry.zip&quot; class=&quot;media mediafile mf_zip&quot; title=&quot;oss:dokutagentry:tagentry.zip&quot;&gt;download&lt;/a&gt; latest version (use this link with the Plugin Manager).&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; view &lt;a href=&quot;http://mir.dnsalias.com/gitweb/?p=tagentry.git;a=summary&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://mir.dnsalias.com/gitweb/?p=tagentry.git;a=summary&quot;  rel=&quot;nofollow&quot;&gt;devel repository&lt;/a&gt;.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
ToDo:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; move &lt;em&gt;render&lt;/em&gt; functions to helper&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; improve tag listing &lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; pages that exist in namespace &lt;code&gt;$conf[&amp;#039;plugin&amp;#039;][&amp;#039;tag&amp;#039;][&amp;#039;namespace&amp;#039;];&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; all available tags&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; order by &lt;em&gt;importance&lt;/em&gt; or &lt;em&gt;use-count&lt;/em&gt; and limit the max number of displayed tags&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
</description>
        <category>FLOSS</category>
        <category>dokuplugin</category>
            <pubDate>Wed, 31 Dec 2008 15:55:24 +0000</pubDate>
        </item>
        <item>
            <title>Time Based Text</title>
            <link>http://www.gareus.de/wiki/tbt</link>
            <description>
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Dokuwiki plugin for &lt;a href=&quot;http://tbt.dyne.org/&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://tbt.dyne.org/&quot;  rel=&quot;nofollow&quot;&gt;time based text&lt;/a&gt;.
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://www.gareus.de/_media/wiki/tbt-0.1.0.zip&quot; class=&quot;media mediafile mf_zip wikilink2&quot; title=&quot;wiki:tbt-0.1.0.zip&quot;&gt;download&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
</description>
        <category>FLOSS</category>
        <category>dokuplugin</category>
        <category>development</category>
            <pubDate>Mon, 22 Dec 2008 14:11:30 +0000</pubDate>
        </item>
        <item>
            <title>FLOSS Lighting</title>
            <link>http://www.gareus.de/wiki/lighting</link>
            <description>
&lt;div class=&quot;level1&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://llg.cubic.org/links.html&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://llg.cubic.org/links.html&quot;  rel=&quot;nofollow&quot;&gt;http://llg.cubic.org/links.html&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://llg.cubic.org/dmx4linux/&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://llg.cubic.org/dmx4linux/&quot;  rel=&quot;nofollow&quot;&gt;DMX 4 Linux&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://sourceforge.net/projects/qlc/&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://sourceforge.net/projects/qlc/&quot;  rel=&quot;nofollow&quot;&gt;http://sourceforge.net/projects/qlc/&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
</description>
        <category>wiki</category>
            <pubDate>Wed, 17 Dec 2008 17:42:34 +0000</pubDate>
        </item>
        <item>
            <title>linuxfilm.org</title>
            <link>http://www.gareus.de/wiki/linuxfilm</link>
            <description>
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
A collection of links to articles to start brainstorming about linuxfilm, linuxAV and libreAV:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://www.linuxjournal.com/article/8589&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://www.linuxjournal.com/article/8589&quot;  rel=&quot;nofollow&quot;&gt;http://www.linuxjournal.com/article/8589&lt;/a&gt; (Nov 2005)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://www.linuxjournal.com/article/5817&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://www.linuxjournal.com/article/5817&quot;  rel=&quot;nofollow&quot;&gt;http://www.linuxjournal.com/article/5817&lt;/a&gt; (may 2002)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://www.linux.com/feature/60624&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://www.linux.com/feature/60624&quot;  rel=&quot;nofollow&quot;&gt;http://www.linux.com/feature/60624&lt;/a&gt; (march 2007)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://www.linuxmovies.org/software.html&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://www.linuxmovies.org/software.html&quot;  rel=&quot;nofollow&quot;&gt;http://www.linuxmovies.org/software.html&lt;/a&gt; (2005)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://www.linuxmovies.org/&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://www.linuxmovies.org/&quot;  rel=&quot;nofollow&quot;&gt;http://www.linuxmovies.org/&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://en.wikibooks.org/wiki/Movie_Making_Manual-Linux_in_film_production&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://en.wikibooks.org/wiki/Movie_Making_Manual-Linux_in_film_production&quot;  rel=&quot;nofollow&quot;&gt;http://en.wikibooks.org/wiki/Movie_Making_Manual-Linux_in_film_production&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://dreamlinuxforums.org/index.php?board=50.0&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://dreamlinuxforums.org/index.php?board=50.0&quot;  rel=&quot;nofollow&quot;&gt;http://dreamlinuxforums.org/index.php?board=50.0&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://loll.sourceforge.net/linux/links/Audio-Video/Video/&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://loll.sourceforge.net/linux/links/Audio-Video/Video/&quot;  rel=&quot;nofollow&quot;&gt;http://loll.sourceforge.net/linux/links/Audio-Video/Video/&lt;/a&gt; (lots of links)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://www.linux.com/articles/60970&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://www.linux.com/articles/60970&quot;  rel=&quot;nofollow&quot;&gt;http://www.linux.com/articles/60970&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://en.wikiversity.org/wiki/Topic:Film_production&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://en.wikiversity.org/wiki/Topic:Film_production&quot;  rel=&quot;nofollow&quot;&gt;http://en.wikiversity.org/wiki/Topic:Film_production&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://www.dvguru.com/2006/10/05/fonts-and-resources-to-spruce-up-your-film-or-dvd/&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://www.dvguru.com/2006/10/05/fonts-and-resources-to-spruce-up-your-film-or-dvd/&quot;  rel=&quot;nofollow&quot;&gt;http://www.dvguru.com/2006/10/05/fonts-and-resources-to-spruce-up-your-film-or-dvd/&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://www.filmeditings.com/linux-video-editing-software.php&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://www.filmeditings.com/linux-video-editing-software.php&quot;  rel=&quot;nofollow&quot;&gt;http://www.filmeditings.com/linux-video-editing-software.php&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://cuisine.bigasterisk.com/&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://cuisine.bigasterisk.com/&quot;  rel=&quot;nofollow&quot;&gt;http://cuisine.bigasterisk.com/&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://lumiera.org/&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://lumiera.org/&quot;  rel=&quot;nofollow&quot;&gt;http://lumiera.org/&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://cinelerra.org/&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://cinelerra.org/&quot;  rel=&quot;nofollow&quot;&gt;http://cinelerra.org/&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://groups.google.com/group/open-source-video-editing-foundation/about&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://groups.google.com/group/open-source-video-editing-foundation/about&quot;  rel=&quot;nofollow&quot;&gt;http://groups.google.com/group/open-source-video-editing-foundation/about&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://www.kinodv.org/&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://www.kinodv.org/&quot;  rel=&quot;nofollow&quot;&gt;http://www.kinodv.org/&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://gmerlin.sourceforge.net/&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://gmerlin.sourceforge.net/&quot;  rel=&quot;nofollow&quot;&gt;http://gmerlin.sourceforge.net/&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://openmovieeditor.org/&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://openmovieeditor.org/&quot;  rel=&quot;nofollow&quot;&gt;http://openmovieeditor.org/&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://ubuntustudio.org/&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://ubuntustudio.org/&quot;  rel=&quot;nofollow&quot;&gt;http://ubuntustudio.org/&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://www.cinepaint.org/&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://www.cinepaint.org/&quot;  rel=&quot;nofollow&quot;&gt;http://www.cinepaint.org/&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://www.pitivi.org/wiki/Main_Page&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://www.pitivi.org/wiki/Main_Page&quot;  rel=&quot;nofollow&quot;&gt;http://www.pitivi.org/wiki/Main_Page&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
</description>
        <category>wiki</category>
            <pubDate>Sun, 14 Dec 2008 17:28:05 +0000</pubDate>
        </item>
        <item>
            <title></title>
            <link>http://www.gareus.de/wiki/dokurpcpub</link>
            <description>
&lt;p&gt;
soon to come - stripped down &lt;a href=&quot;http://www.gareus.de/wiki/dokupubsub&quot; class=&quot;wikilink1&quot; title=&quot;wiki:dokupubsub&quot;&gt;dokupubsub&lt;/a&gt; plugin.
makes (oauth signed) wiki2 &lt;acronym title=&quot;Extensible Markup Language&quot;&gt;XML&lt;/acronym&gt;-&lt;acronym title=&quot;Remote Procedure Call&quot;&gt;RPC&lt;/acronym&gt; requests to distribute dokuwiki page edits.
&lt;/p&gt;

&lt;p&gt;
see &lt;a href=&quot;http://mir.dnsalias.com/gitweb/?p=dokurpcpub.git;a=summary&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://mir.dnsalias.com/gitweb/?p=dokurpcpub.git;a=summary&quot;  rel=&quot;nofollow&quot;&gt;git repository&lt;/a&gt;
&lt;/p&gt;
</description>
        <category>wiki</category>
            <pubDate>Fri, 24 Oct 2008 13:46:58 +0000</pubDate>
        </item>
        <item>
            <title>dokuwiki OAuth tests and examples</title>
            <link>http://www.gareus.de/wiki/dokuoauth_examples</link>
            <description>
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
You can access the dokuwiki OAuth &lt;acronym title=&quot;Application Programming Interface&quot;&gt;API&lt;/acronym&gt; by making requests to &lt;code&gt;doku.php?do[oauth]=XXX&lt;/code&gt; or simply by making &lt;em&gt;any&lt;/em&gt; request adding the &lt;code&gt;oauth_signature&lt;/code&gt; request-parameter.
&lt;/p&gt;

&lt;p&gt;
get &lt;a href=&quot;http://liboauth.sf.net&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://liboauth.sf.net&quot;  rel=&quot;nofollow&quot;&gt;liboauth&lt;/a&gt; and &lt;a href=&quot;http://www.gareus.de/oss/oauth/start&quot; class=&quot;wikilink1&quot; title=&quot;oss:oauth:start&quot;&gt;oauth-utils&lt;/a&gt;.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;curl &amp;quot;http://example.org/doku.php?do\[oauth\]=addconsumer&amp;amp;consumer_key=key&amp;amp;consumer_secret=secret&amp;quot;
oauthsign -x &amp;quot;http://example.org/doku.php?do=admin&amp;quot; key secret accesskey accesssecret&lt;/pre&gt;

&lt;p&gt;
Here&amp;#039;s a script that walks through the complete oAuth Core 1.0 protocol:
&lt;/p&gt;
&lt;pre class=&quot;bash code bash&quot;&gt;&lt;span class=&quot;re2&quot;&gt;DW&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;http://localhost/robwiki/&amp;quot;&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;DWOA&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es3&quot;&gt;${DW}&lt;/span&gt;?do[oauth]=&amp;quot;&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;DWRPC&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es3&quot;&gt;${DW}&lt;/span&gt;lib/exe/xmlrpc.php&amp;quot;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re2&quot;&gt;CK&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;key&amp;quot;&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;CS&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;secret&amp;quot;&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;CU&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re2&quot;&gt;TOKENFILE&lt;/span&gt;=&lt;span class=&quot;sy0&quot;&gt;`&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;mktemp&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;tmp&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;oauth.XXXXXXXXXX&lt;span class=&quot;sy0&quot;&gt;`&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;||&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;exit&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;function&lt;/span&gt; cleanup &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;rm&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$TOKENFILE&lt;/span&gt;; &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;kw3&quot;&gt;trap&lt;/span&gt; cleanup EXIT
&amp;nbsp;
&lt;span class=&quot;kw3&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot; +++ add consumer.&amp;quot;&lt;/span&gt;
curl &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es3&quot;&gt;${DW}&lt;/span&gt;?do\[oauth\]=addconsumer&amp;amp;consumer_key=&lt;span class=&quot;es3&quot;&gt;${CK}&lt;/span&gt;&amp;amp;consumer_secret=&lt;span class=&quot;es3&quot;&gt;${CS}&lt;/span&gt;&amp;amp;callback_uri=&lt;span class=&quot;es3&quot;&gt;${CU}&lt;/span&gt;&amp;quot;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw3&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot; +++ getting request token..&amp;quot;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;$OAUTHSIGN&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-X&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-f&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$TOKENFILE&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-w&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-e&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es3&quot;&gt;${DWOA}&lt;/span&gt;requesttoken&amp;quot;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es2&quot;&gt;$CK&lt;/span&gt;&amp;quot;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es2&quot;&gt;$CS&lt;/span&gt;&amp;quot;&lt;/span&gt; \
        &lt;span class=&quot;sy0&quot;&gt;||&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot; !!! no request token returned.&amp;quot;&lt;/span&gt;; &lt;span class=&quot;kw3&quot;&gt;exit&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;||&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;exit&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;;
&amp;nbsp;
&lt;span class=&quot;kw3&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot; +++ Authorization.&amp;quot;&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;REQTOK&lt;/span&gt;=&lt;span class=&quot;sy0&quot;&gt;`&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;cat&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$TOKENFILE&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;awk&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;'/oauth_token_key=(.*)/{ print substr($1,17);}'&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;`&lt;/span&gt;
&lt;span class=&quot;kw3&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;visit &lt;span class=&quot;es3&quot;&gt;${DWOA}&lt;/span&gt;authorize&amp;amp;oauth_token=&lt;span class=&quot;es3&quot;&gt;${REQTOK}&lt;/span&gt;&amp;quot;&lt;/span&gt;
&lt;span class=&quot;kw3&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-n&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;to authorize this request token and press enter..&amp;quot;&lt;/span&gt;
&lt;span class=&quot;kw2&quot;&gt;read&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw3&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot; +++ exchanging request token for access token&amp;quot;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;$OAUTHSIGN&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-X&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-f&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$TOKENFILE&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-w&lt;/span&gt;  &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es3&quot;&gt;${DWOA}&lt;/span&gt;accesstoken&amp;quot;&lt;/span&gt; \
        &lt;span class=&quot;sy0&quot;&gt;||&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot; !!! token exchange failed&amp;quot;&lt;/span&gt;; &lt;span class=&quot;kw3&quot;&gt;exit&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;||&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;exit&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;;
&amp;nbsp;
&lt;span class=&quot;kw3&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot; +++ making test request..&amp;quot;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;$OAUTHSIGN&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-x&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-f&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$TOKENFILE&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es3&quot;&gt;${DW}&lt;/span&gt;?do=admin&amp;quot;&lt;/span&gt; \
        &lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;grep&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Logged in as:&amp;quot;&lt;/span&gt;
     &lt;span class=&quot;co0&quot;&gt;#  || echo &amp;quot; !!! test request failed&amp;quot;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw3&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot; +++ performing XML-RPC..&amp;quot;&lt;/span&gt;
curl &lt;span class=&quot;re5&quot;&gt;--data-ascii&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;@&lt;/span&gt;- &lt;span class=&quot;re5&quot;&gt;-H&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Content-Type: text/xml&amp;quot;&lt;/span&gt; \
        &lt;span class=&quot;sy0&quot;&gt;`&lt;/span&gt;oauthsign &lt;span class=&quot;re5&quot;&gt;-p&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-G&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-f&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$TOKENFILE&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;${DWRPC}&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;`&lt;/span&gt; \
&lt;span class=&quot;co2&quot;&gt;&amp;lt;&amp;lt; EOF
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;iso-8859-1&amp;quot;?&amp;gt;
&amp;lt;methodCall&amp;gt;
&amp;lt;methodName&amp;gt;wiki.getPageInfo&amp;lt;/methodName&amp;gt;
&amp;lt;params&amp;gt;
 &amp;lt;param&amp;gt;
  &amp;lt;value&amp;gt;
   &amp;lt;string&amp;gt;wiki:start&amp;lt;/string&amp;gt;
  &amp;lt;/value&amp;gt;
 &amp;lt;/param&amp;gt;
&amp;lt;/params&amp;gt;
&amp;lt;/methodCall&amp;gt;
EOF&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
&lt;em&gt;Note&lt;/em&gt;: Apache rewrite-rules modify the base-string! - this is to be fixed or worked-around. So far query-parameter and &lt;acronym title=&quot;Uniform Resource Locator&quot;&gt;URL&lt;/acronym&gt; must not be modified before they&amp;#039;re passed to the &lt;acronym title=&quot;Hypertext Preprocessor&quot;&gt;PHP&lt;/acronym&gt; script (Using &lt;code&gt;DirectoryIndex doku.php&lt;/code&gt; works, redirecting from index.php does not!) - This is a minor issue since in general oAuth requests always use a full absolute &lt;acronym title=&quot;Uniform Resource Locator&quot;&gt;URL&lt;/acronym&gt; ending with &lt;code&gt;/doku.php&lt;/code&gt; (or &lt;code&gt;/lib/lib/exe/xmlrpc.php&lt;/code&gt;) to access the dokuwiki &lt;acronym title=&quot;Application Programming Interface&quot;&gt;API&lt;/acronym&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT79 SECTION &quot;dokuwiki OAuth tests and examples&quot; [1-2455] --&gt;
&lt;h1 class=&quot;sectionedit80&quot;&gt;&lt;a name=&quot;old_test_examples&quot; id=&quot;old_test_examples&quot;&gt;old Test &amp;amp; Examples&lt;/a&gt;&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
get &lt;a href=&quot;http://liboauth.sf.net&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://liboauth.sf.net&quot;  rel=&quot;nofollow&quot;&gt;liboauth&lt;/a&gt; and &lt;a href=&quot;http://trac.mediamatic.nl/picnic/browser/tools/anymeta/oauthsign.c&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://trac.mediamatic.nl/picnic/browser/tools/anymeta/oauthsign.c&quot;  rel=&quot;nofollow&quot;&gt;oauthsign&lt;/a&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;curl -v &amp;quot;$(./oauthsign GET &amp;quot;http://localhost/dokuwiki/doku.php?do=admin&amp;amp;id=start&amp;quot; key accesskey secret accesssecret )&amp;quot; 2&amp;gt;&amp;amp;1 | less&lt;/pre&gt;

&lt;p&gt;
To invoke oAuth &lt;acronym title=&quot;Application Programming Interface&quot;&gt;API&lt;/acronym&gt; callbacks start with:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;curl &amp;quot;http://localhost/robwiki/doku.php?do\[oauth\]=token&amp;amp;oauth_version=1.0&amp;amp;oauth_nonce=123456789affeb00b&amp;amp;oauth_timestamp=1234567890&amp;amp;oauth_consumer_key=key&amp;amp;oauth_signature_method=HMAC-SHA1&amp;amp;oauth_signature=2U6rOwNhH%2FE25%2FniBor%2B6Zz4TwQ%3D&amp;quot;&lt;/pre&gt;
&lt;pre class=&quot;code&quot;&gt;$ curl -v &amp;quot;$(./oauthsign GET &amp;#039;http://localhost/robwiki/?do[oauth]=token&amp;#039; key accesskey secret accesssecret )&amp;quot; 2&amp;gt;&amp;amp;1 | less
#
$ ./oauthsign GET &amp;#039;http://localhost/robwiki/?do[oauth]=token&amp;#039; key accesskey secret accesssecret 
http://localhost/robwiki/?do%5Boauth%5D=token&amp;amp;oauth_consumer_key=key&amp;amp;oauth_nonce=RY4ZHtOrlztZRBpn9LEjIli1Ae4&amp;amp;oauth_signature_method=HMAC-SHA1&amp;amp;oauth_timestamp=1223642226&amp;amp;oauth_token=accesskey&amp;amp;oauth_version=1.0&amp;amp;oauth_signature=Cd89NAcMebpJFvlDh3YvgNEZe4g%3D&lt;/pre&gt;

&lt;p&gt;
Test-script:
&lt;/p&gt;
&lt;pre class=&quot;bash code bash&quot;&gt;&lt;span class=&quot;co0&quot;&gt;#!/bin/sh&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;CONKEY&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;key&amp;quot;&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;CONSEC&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;secret&amp;quot;&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;DOKUURL&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;http://localhost/robwiki/&amp;quot;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw3&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;CONSUMER: key=&lt;span class=&quot;es2&quot;&gt;$CONKEY&lt;/span&gt; sec=&lt;span class=&quot;es2&quot;&gt;$CONSEC&lt;/span&gt;&amp;quot;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;#################&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;# get request-key&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;URL&lt;/span&gt;=$&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;oauthsign GET &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es3&quot;&gt;${DOKUURL}&lt;/span&gt;?do=requesttoken&amp;quot;&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$CONKEY&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$CONSEC&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re2&quot;&gt;RV&lt;/span&gt;=$&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;curl &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es2&quot;&gt;$URL&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;REQKEY&lt;/span&gt;=$&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es2&quot;&gt;$RV&lt;/span&gt;&amp;quot;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;awk&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-F&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;'&amp;amp;'&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;'/oauth_token=(.*)/{ print substr($1,13);}'&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;REQSEC&lt;/span&gt;=$&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es2&quot;&gt;$RV&lt;/span&gt;&amp;quot;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;awk&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-F&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;'&amp;amp;'&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;'/oauth_token_secret=/{ print substr($2,20);}'&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;#REQKEY=&amp;quot;requestkey&amp;quot;&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#REQSEC=&amp;quot;requestsecret&amp;quot;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw3&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;REQUEST: key=&lt;span class=&quot;es2&quot;&gt;$REQKEY&lt;/span&gt; sec=&lt;span class=&quot;es2&quot;&gt;$REQSEC&lt;/span&gt;&amp;quot;&lt;/span&gt;
&lt;span class=&quot;kw3&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot; ---- &amp;quot;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;##################&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;# get access-token&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;URL&lt;/span&gt;=$&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;oauthsign GET &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es3&quot;&gt;${DOKUURL}&lt;/span&gt;?do=accesstoken&amp;quot;&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$CONKEY&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$REQKEY&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$CONSEC&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$REQSEC&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re2&quot;&gt;RV&lt;/span&gt;=$&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;curl &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es2&quot;&gt;$URL&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;ACCKEY&lt;/span&gt;=$&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es2&quot;&gt;$RV&lt;/span&gt;&amp;quot;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;awk&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-F&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;'&amp;amp;'&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;'/oauth_token=(.*)/{ print substr($1,13);}'&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;ACCSEC&lt;/span&gt;=$&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es2&quot;&gt;$RV&lt;/span&gt;&amp;quot;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;awk&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-F&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;'&amp;amp;'&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;'/oauth_token_secret=/{ print substr($2,20);}'&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;kw3&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;ACCESS: key=&lt;span class=&quot;es2&quot;&gt;$ACCKEY&lt;/span&gt; sec=&lt;span class=&quot;es2&quot;&gt;$ACCSEC&lt;/span&gt;&amp;quot;&lt;/span&gt;
&lt;span class=&quot;kw3&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot; ---- &amp;quot;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;#ACCKEY=&amp;quot;accesskey&amp;quot;&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#ACCSEC=&amp;quot;accesssecret&amp;quot;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;##############&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;# make request&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;URL&lt;/span&gt;=$&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;oauthsign GET &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es3&quot;&gt;${DOKUURL}&lt;/span&gt;?do=admin&amp;quot;&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$CONKEY&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$ACCKEY&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$CONSEC&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$ACCSEC&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
curl &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es2&quot;&gt;$URL&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;!-- EDIT80 SECTION &quot;old Test &amp; Examples&quot; [2456-] --&gt;</description>
        <category>development</category>
        <category>dokuplugin</category>
        <category>floss</category>
        <category>www</category>
            <pubDate>Sun, 19 Oct 2008 13:49:58 +0000</pubDate>
        </item>
        <item>
            <title>OAuth for Dokuwiki</title>
            <link>http://www.gareus.de/wiki/dokuoauth</link>
            <description>
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Towards &lt;a href=&quot;http://oauth.net&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://oauth.net&quot;  rel=&quot;nofollow&quot;&gt;oAuth&lt;/a&gt; support for &lt;a href=&quot;http://dokuwiki.org&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://dokuwiki.org&quot;  rel=&quot;nofollow&quot;&gt;dokuwiki&lt;/a&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT81 SECTION &quot;OAuth for Dokuwiki&quot; [1-116] --&gt;
&lt;h2 class=&quot;sectionedit82&quot;&gt;&lt;a name=&quot;code&quot; id=&quot;code&quot;&gt;Code&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; patch dokuwiki&amp;#039;s &lt;code&gt;inc/auth.php&lt;/code&gt; to provide a trigger that allows to &lt;em&gt;hook into&lt;/em&gt; the authentication mechanism. &lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code diff&quot;&gt;
&lt;span class=&quot;diff_deletedline&quot;&gt;--- a/inc/auth.php&lt;/span&gt;
&lt;span class=&quot;diff_addedline&quot;&gt;+++ b/inc/auth.php&lt;/span&gt;
&lt;span class=&quot;diff_blockheader&quot;&gt;@@ -72,7 +72,13 @@&lt;/span&gt;
         // external trust mechanism in place
         $auth-&amp;#62;trustExternal($_REQUEST['u'],$_REQUEST['p'],$_REQUEST['r']);
       }else{
&lt;span class=&quot;diff_deletedline&quot;&gt;-        auth_login($_REQUEST['u'],$_REQUEST['p'],$_REQUEST['r']);&lt;/span&gt;
&lt;span class=&quot;diff_addedline&quot;&gt;+        $evt = new Doku_Event('ACTION_ON_AUTH',$ACT);&lt;/span&gt;
&lt;span class=&quot;diff_addedline&quot;&gt;+        $evt-&amp;#62;advise_before();&lt;/span&gt;
&lt;span class=&quot;diff_addedline&quot;&gt;+        if(empty($_SERVER['REMOTE_USER'])) {&lt;/span&gt;
&lt;span class=&quot;diff_addedline&quot;&gt;+            auth_login($_REQUEST['u'],$_REQUEST['p'],$_REQUEST['r']);&lt;/span&gt;
&lt;span class=&quot;diff_addedline&quot;&gt;+        }&lt;/span&gt;
&lt;span class=&quot;diff_addedline&quot;&gt;+        $evt-&amp;#62;advise_after();&lt;/span&gt;
&lt;span class=&quot;diff_addedline&quot;&gt;+        unset($evt);&lt;/span&gt;
       }
     }&lt;/pre&gt;&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; use an &lt;em&gt;action-plugin&lt;/em&gt; to provide authentication on a per &lt;acronym title=&quot;Hyper Text Transfer Protocol&quot;&gt;HTTP&lt;/acronym&gt;-request basis:&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;php code php&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;&lt;a target=&quot;_blank&quot; href=&quot;http://www.php.net/defined&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;defined&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;'DOKU_INC'&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;a target=&quot;_blank&quot; href=&quot;http://www.php.net/die&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;die&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw2&quot;&gt;class&lt;/span&gt; action_plugin_oauth &lt;span class=&quot;kw2&quot;&gt;extends&lt;/span&gt; DokuWiki_Action_Plugin &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; register&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$contr&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;re0&quot;&gt;$contr&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;register_hook&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;'ACTION_ON_AUTH'&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                              &lt;span class=&quot;st_h&quot;&gt;'BEFORE'&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                              &lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                              &lt;span class=&quot;st_h&quot;&gt;'handle_act_authhook'&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;re0&quot;&gt;$contr&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;register_hook&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;'ACTION_ACT_PREPROCESS'&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                              &lt;span class=&quot;st_h&quot;&gt;'BEFORE'&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                              &lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                              &lt;span class=&quot;st_h&quot;&gt;'handle_act_preprocess'&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; handle_act_authhook&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$event&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$param&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;&lt;a target=&quot;_blank&quot; href=&quot;http://www.php.net/empty&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;empty&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$_REQUEST&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;'oauth_signature'&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
            &lt;span class=&quot;co1&quot;&gt;// verify signature&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;// check consumer and access token&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;// -&amp;gt; set username for this session&lt;/span&gt;
&amp;nbsp;
            &lt;span class=&quot;co1&quot;&gt;// http://oauth.googlecode.com/svn/code/php/&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;require_once&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;dokuoauth.php&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
            try &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
                &lt;span class=&quot;re0&quot;&gt;$req&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; OAuthRequest&lt;span class=&quot;sy0&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;me2&quot;&gt;from_request&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
                &lt;a target=&quot;_blank&quot; href=&quot;http://www.php.net/list&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;list&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$consumer&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$token&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$doku_server&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;verify_request&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$req&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; catch &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;OAuthException &lt;span class=&quot;re0&quot;&gt;$e&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
                &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$e&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;getMessage&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es1&quot;&gt;\n&lt;/span&gt;&amp;lt;hr /&amp;gt;&lt;span class=&quot;es1&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
                &lt;a target=&quot;_blank&quot; href=&quot;http://www.php.net/print_r&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;print_r&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$req&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
                &lt;a target=&quot;_blank&quot; href=&quot;http://www.php.net/die&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;die&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;co1&quot;&gt;// XXX&lt;/span&gt;
            &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
            &lt;span class=&quot;co1&quot;&gt;// dokuwiki - set user&lt;/span&gt;
            &lt;span class=&quot;re0&quot;&gt;$user&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;'root'&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;re0&quot;&gt;$_SERVER&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;'REMOTE_USER'&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$user&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;kw2&quot;&gt;global&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$USERINFO&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;kw2&quot;&gt;global&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$auth&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;re0&quot;&gt;$USERINFO&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$auth&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;getUserData&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$user&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; handle_act_preprocess&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$event&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$param&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;re0&quot;&gt;$handled&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;&lt;a target=&quot;_blank&quot; href=&quot;http://www.php.net/empty&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;empty&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$event&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;data&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;'oauth'&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;// ...&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;// token-exchange, admin, etc.&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;//&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$handled&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
            &lt;span class=&quot;re0&quot;&gt;$event&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;stopPropagation&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;re0&quot;&gt;$event&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;preventDefault&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;//Setup VIM: ex: et sw=4 ts=4 enc=utf-8 :&lt;/span&gt;&lt;/pre&gt;
&lt;div class=&quot;notewarning&quot;&gt; work in progress
&lt;/div&gt;

&lt;/div&gt;
&lt;!-- EDIT82 SECTION &quot;Code&quot; [117-2723] --&gt;
&lt;h2 class=&quot;sectionedit83&quot;&gt;&lt;a name=&quot;discussion&quot; id=&quot;discussion&quot;&gt;Discussion&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
adding the &lt;code&gt;ACTION_ON_AUTH&lt;/code&gt; event to &lt;a href=&quot;http://www.dokuwiki.org/devel:events_list&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://www.dokuwiki.org/devel:events_list&quot;  rel=&quot;nofollow&quot;&gt;existing events&lt;/a&gt; does not seem to be too far out; however it raises the following concerns:
&lt;/p&gt;
&lt;ol&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; makes it easier to write a exploit-plugin&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; may slow down the system - the Auth plugin is called for each request!&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; it&amp;#039;s somewhat &lt;em&gt;parallel&lt;/em&gt; to &lt;code&gt;inc/auth/*.php&lt;/code&gt; structure.&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;
The first is not really true, &lt;em&gt;any&lt;/em&gt; plugin can used to perform malicious actions; it&amp;#039;s just that &lt;code&gt;ACTION_ON_AUTH&lt;/code&gt; should never be used carelessly which ties into the second issue: pay strict attention to optimize performance of the callback handler - On a wiki with ACLs it will be called for &lt;strong&gt;each&lt;/strong&gt; request!
&lt;/p&gt;

&lt;p&gt;
Which is also what makes it different from &lt;code&gt;inc/auth/&lt;/code&gt; authentication mechanisms… more on that later.. I&amp;#039;m going to ask on the dokuwiki mailing list..
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT83 SECTION &quot;Discussion&quot; [2724-] --&gt;</description>
        <category>FLOSS</category>
        <category>WWW</category>
        <category>dokuplugin</category>
            <pubDate>Fri, 10 Oct 2008 12:12:03 +0000</pubDate>
        </item>
        <item>
            <title>SOAP</title>
            <link>http://www.gareus.de/wiki/soap</link>
            <description>
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT84 SECTION &quot;SOAP&quot; [1-20] --&gt;
&lt;h2 class=&quot;sectionedit85&quot;&gt;&lt;a name=&quot;client&quot; id=&quot;client&quot;&gt;Client&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;perl code perl&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;use&lt;/span&gt; warnings&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw2&quot;&gt;use&lt;/span&gt; strict&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw2&quot;&gt;use&lt;/span&gt; SOAP&lt;span class=&quot;sy0&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;me2&quot;&gt;Lite&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw2&quot;&gt;use&lt;/span&gt; Getopt&lt;span class=&quot;sy0&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;me2&quot;&gt;Long&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw2&quot;&gt;use&lt;/span&gt; Data&lt;span class=&quot;sy0&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;me2&quot;&gt;Dumper&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;my&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$opt&lt;/span&gt;  &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
GetOptions&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$opt&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;st_h&quot;&gt;'server=s'&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;st_h&quot;&gt;'command=s'&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;st_h&quot;&gt;'urn=s'&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;my&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$NS&lt;/span&gt;     &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;urn:&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$opt&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;urn&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;||&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;SOAPServer::Handler&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;my&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$HOST&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;'http://'&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$opt&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;server&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;my&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$soap&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; SOAP&lt;span class=&quot;sy0&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;me2&quot;&gt;Lite&lt;/span&gt;
  &lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;readable&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
  &lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;uri&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$NS&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
  &lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;proxy&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$HOST&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;my&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$soapd&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; SOAP&lt;span class=&quot;sy0&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;me2&quot;&gt;Data&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;type&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;hash &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$opt&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;my&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$som&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$soap&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;command&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$soapd&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;a target=&quot;_blank&quot; href=&quot;http://perldoc.perl.org/functions/print.html&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;print&lt;/span&gt;&lt;/a&gt; Dumper &lt;span class=&quot;re0&quot;&gt;$som&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;result&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;!-- EDIT85 SECTION &quot;Client&quot; [21-515] --&gt;
&lt;h2 class=&quot;sectionedit86&quot;&gt;&lt;a name=&quot;server&quot; id=&quot;server&quot;&gt;Server&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;

&lt;h3&gt;&lt;a name=&quot;apache_config&quot; id=&quot;apache_config&quot;&gt;apache config&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;
Listen 8088
&amp;#60;VirtualHost _default_:8088&amp;#62;
  DocuemtRoot    /var/www/
  ServerName     soap
  ErrorLog       /var/log/apache2/soap_error.log
  TransferLog    /var/log/apache2/soap_transfer.log
  &amp;#60;Location /soap&amp;#62;
        SetHandler perl-script
        PerlHandler Apache2::SOAP
        PerlSetVar dispatch_to SOAPServer::Handler
  &amp;#60;/Location&amp;#62;
&amp;#60;/VirtualHost&amp;#62;&lt;/pre&gt;
&lt;/div&gt;

&lt;h3&gt;&lt;a name=&quot;handler_script&quot; id=&quot;handler_script&quot;&gt;handler script&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;pre class=&quot;perl code perl&quot;&gt;&lt;a target=&quot;_blank&quot; href=&quot;http://perldoc.perl.org/functions/package.html&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;package&lt;/span&gt;&lt;/a&gt; SOAPServer&lt;span class=&quot;sy0&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;me2&quot;&gt;Handler&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw2&quot;&gt;use&lt;/span&gt; SOAP&lt;span class=&quot;sy0&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;me2&quot;&gt;Lite&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw2&quot;&gt;sub&lt;/span&gt; command &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;my&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$class&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$soap_hash&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;co5&quot;&gt;@_&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;re0&quot;&gt;$data&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; SOAP&lt;span class=&quot;sy0&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;me2&quot;&gt;Data&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;new&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;re0&quot;&gt;$data&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;type&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;hash &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;result &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;'hiho'&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;a target=&quot;_blank&quot; href=&quot;http://perldoc.perl.org/functions/print.html&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;print&lt;/span&gt;&lt;/a&gt; &lt;span class=&quot;kw2&quot;&gt;STDERR&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;huhu&lt;span class=&quot;es0&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;a target=&quot;_blank&quot; href=&quot;http://perldoc.perl.org/functions/return.html&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;return&lt;/span&gt;&lt;/a&gt; &lt;span class=&quot;re0&quot;&gt;$data&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;!-- EDIT86 SECTION &quot;Server&quot; [516-] --&gt;</description>
        <category>wiki</category>
            <pubDate>Tue, 07 Oct 2008 20:42:36 +0000</pubDate>
        </item>
        <item>
            <title>Dokuwiki XML RPC</title>
            <link>http://www.gareus.de/wiki/dokuxmlrpc</link>
            <description>
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
dokuwiki supports &lt;a href=&quot;http://www.jspwiki.org/wiki/WikiRPCInterface2&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://www.jspwiki.org/wiki/WikiRPCInterface2&quot;  rel=&quot;nofollow&quot;&gt;|WikiRPCInterface2&lt;/a&gt; Remote Procedure Calls (&lt;acronym title=&quot;Remote Procedure Call&quot;&gt;RPC&lt;/acronym&gt;), speaking the Extensible Markup Language (&lt;acronym title=&quot;Extensible Markup Language&quot;&gt;XML&lt;/acronym&gt;). see: &lt;a href=&quot;http://www.dokuwiki.org/devel:xmlrpc&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://www.dokuwiki.org/devel:xmlrpc&quot;  rel=&quot;nofollow&quot;&gt;dokwiki XMLRPC&lt;/a&gt;. 
&lt;/p&gt;

&lt;p&gt;
As &lt;a href=&quot;http://www.gareus.de/blog/linux_sound_tags&quot; class=&quot;wikilink1&quot; title=&quot;blog:linux_sound_tags&quot;&gt;heavy dokuwiki user&lt;/a&gt; I am interested to make use of this interface for &lt;a href=&quot;http://www.gareus.de/wiki/dokupubsub&quot; class=&quot;wikilink1&quot; title=&quot;wiki:dokupubsub&quot;&gt;various purposes&lt;/a&gt;. Here&amp;#039;s some basics: a “hello world, what&amp;#039;s your Dokuwiki version number?” example in &lt;acronym title=&quot;Hypertext Preprocessor&quot;&gt;PHP&lt;/acronym&gt;.
&lt;/p&gt;
&lt;pre class=&quot;php code php&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;&amp;lt;?php&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$host&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;example.org&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$dokuwikipath&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;/&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$dw_user&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$dw_pass&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;re0&quot;&gt;$req&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;a target=&quot;_blank&quot; href=&quot;http://www.php.net/xmlrpc_encode_request&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;xmlrpc_encode_request&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;dokuwiki.getVersion&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;a target=&quot;_blank&quot; href=&quot;http://www.php.net/array&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$res&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; dokuXmlRpc&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$req&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;a target=&quot;_blank&quot; href=&quot;http://www.php.net/print_r&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;print_r&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$res&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co2&quot;&gt;########################################################################
&lt;/span&gt;&lt;span class=&quot;co2&quot;&gt;# XML-RPC
&lt;/span&gt;&lt;span class=&quot;co2&quot;&gt;# see http://php.net/manual/en/ref.xmlrpc.php
&lt;/span&gt;&lt;span class=&quot;co2&quot;&gt;##
&lt;/span&gt;
&lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; dokuXmlRpc&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$request&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw2&quot;&gt;global&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$host&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$dokuwikipath&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$dw_user&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$dw_pass&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;re0&quot;&gt;$x&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; dokuPost&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$host&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$dokuwikipath&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$request&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$user&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$pass&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;re0&quot;&gt;$response&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;a target=&quot;_blank&quot; href=&quot;http://www.php.net/xmlrpc_decode&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;xmlrpc_decode&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$x&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;a target=&quot;_blank&quot; href=&quot;http://www.php.net/xmlrpc_is_fault&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;xmlrpc_is_fault&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$response&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;a target=&quot;_blank&quot; href=&quot;http://www.php.net/trigger_error&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;trigger_error&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;xmlrpc: &lt;span class=&quot;es4&quot;&gt;$response[faultString]&lt;/span&gt; (&lt;span class=&quot;es4&quot;&gt;$response[faultCode]&lt;/span&gt;)&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$response&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; dokuPost&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$host&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$dokuwikipath&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$data_to_send&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$headers&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$user&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$pass&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;re0&quot;&gt;$fp&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;a target=&quot;_blank&quot; href=&quot;http://www.php.net/fsockopen&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;fsockopen&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;'ssl://'&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$host&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;443&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$fp&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;a target=&quot;_blank&quot; href=&quot;http://www.php.net/trigger_error&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;trigger_error&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;dokuXmlRpc: can not connect to server.&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
  &lt;span class=&quot;re0&quot;&gt;$path&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$dokuwikipath&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;'lib/exe/xmlrpc.php?'&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$user&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$path&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.=&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;'user='&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;a target=&quot;_blank&quot; href=&quot;http://www.php.net/urlencode&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;urlencode&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$user&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;'&amp;amp;'&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$pass&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$path&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.=&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;'pass='&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;a target=&quot;_blank&quot; href=&quot;http://www.php.net/urlencode&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;urlencode&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$pass&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;'&amp;amp;'&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;re0&quot;&gt;$path&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;a target=&quot;_blank&quot; href=&quot;http://www.php.net/preg_replace&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;preg_replace&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;'![?&amp;amp;]$!'&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;''&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$path&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
  &lt;a target=&quot;_blank&quot; href=&quot;http://www.php.net/fputs&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;fputs&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$fp&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;POST &lt;span class=&quot;es4&quot;&gt;$path&lt;/span&gt; HTTP/1.1&lt;span class=&quot;es1&quot;&gt;\r&lt;/span&gt;&lt;span class=&quot;es1&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;a target=&quot;_blank&quot; href=&quot;http://www.php.net/fputs&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;fputs&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$fp&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Host: &lt;span class=&quot;es4&quot;&gt;$host&lt;/span&gt;&lt;span class=&quot;es1&quot;&gt;\r&lt;/span&gt;&lt;span class=&quot;es1&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;a target=&quot;_blank&quot; href=&quot;http://www.php.net/fputs&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;fputs&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$fp&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Content-type: text/xml&lt;span class=&quot;es1&quot;&gt;\r&lt;/span&gt;&lt;span class=&quot;es1&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;a target=&quot;_blank&quot; href=&quot;http://www.php.net/fputs&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;fputs&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$fp&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Content-length: &amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt; &lt;a target=&quot;_blank&quot; href=&quot;http://www.php.net/strlen&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;strlen&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$data_to_send&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es1&quot;&gt;\r&lt;/span&gt;&lt;span class=&quot;es1&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;a target=&quot;_blank&quot; href=&quot;http://www.php.net/fputs&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;fputs&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$fp&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Connection: close&lt;span class=&quot;es1&quot;&gt;\r&lt;/span&gt;&lt;span class=&quot;es1&quot;&gt;\n&lt;/span&gt;&lt;span class=&quot;es1&quot;&gt;\r&lt;/span&gt;&lt;span class=&quot;es1&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;a target=&quot;_blank&quot; href=&quot;http://www.php.net/fputs&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;fputs&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$fp&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$data_to_send&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
  &lt;span class=&quot;kw1&quot;&gt;while&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;&lt;a target=&quot;_blank&quot; href=&quot;http://www.php.net/feof&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;feof&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$fp&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$res&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;.=&lt;/span&gt; &lt;a target=&quot;_blank&quot; href=&quot;http://www.php.net/fgets&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;fgets&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$fp&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;128&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
  &lt;a target=&quot;_blank&quot; href=&quot;http://www.php.net/fclose&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;fclose&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$fp&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$headers&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;re0&quot;&gt;$res&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;a target=&quot;_blank&quot; href=&quot;http://www.php.net/preg_replace&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;preg_replace&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;/^.*&lt;span class=&quot;es1&quot;&gt;\r&lt;/span&gt;&lt;span class=&quot;es1&quot;&gt;\n&lt;/span&gt;&lt;span class=&quot;es1&quot;&gt;\r&lt;/span&gt;&lt;span class=&quot;es1&quot;&gt;\n&lt;/span&gt;/s&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;''&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$res&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$res&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
</description>
        <category>WWW</category>
        <category>development</category>
            <pubDate>Mon, 25 Aug 2008 17:28:19 +0000</pubDate>
        </item>
        <item>
            <title>DokuWiki Publish/Subscribe</title>
            <link>http://www.gareus.de/wiki/dokupubsub</link>
            <description>
&lt;h1 class=&quot;sectionedit100&quot;&gt;&lt;a name=&quot;dokuwiki_publishsubscribe&quot; id=&quot;dokuwiki_publishsubscribe&quot;&gt;dokuwiki Publish/Subscribe&lt;/a&gt;&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Ideas on Server to Server communication to synchronize &lt;a href=&quot;http://dokuwiki.org&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://dokuwiki.org&quot;  rel=&quot;nofollow&quot;&gt;dokuwiki&lt;/a&gt; content.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT100 SECTION &quot;dokuwiki Publish/Subscribe&quot; [1-140] --&gt;
&lt;h2 class=&quot;sectionedit101&quot;&gt;&lt;a name=&quot;about&quot; id=&quot;about&quot;&gt;About&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Motivations ranges from adding features as dokuwiki mirror, backup and decentralized load-balancing solutions to semantic web communication and data-portability.
&lt;/p&gt;

&lt;p&gt;
Kludge solutions (like &lt;a href=&quot;http://www.gareus.de/wiki/dokursync&quot; class=&quot;wikilink1&quot; title=&quot;wiki:dokursync&quot;&gt;dokursync&lt;/a&gt;) work fine for smaller sites but there&amp;#039;s need for improvement on scalability and offering web-standards.
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;Outline&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://OAuth.net&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://OAuth.net&quot;  rel=&quot;nofollow&quot;&gt;http://OAuth.net&lt;/a&gt; &amp;amp; &lt;a href=&quot;http://openID.org&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://openID.org&quot;  rel=&quot;nofollow&quot;&gt;http://openID.org&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;acronym title=&quot;Remote Procedure Call&quot;&gt;RPC&lt;/acronym&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; XMPP &amp;amp; Atom &lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
I envisage a subscription and publication plugin for dokuwiki, making use of existing infrastructure (eg. Atom and raw data export). A mechanism to distribute locks may be included in either or will be implemented as a optional standalone plugin.
&lt;/p&gt;

&lt;p&gt;
Current ideas include using a XMPP ↔ &lt;acronym title=&quot;Hyper Text Transfer Protocol&quot;&gt;HTTP&lt;/acronym&gt; gateway and or the &lt;a href=&quot;http://www.dokuwiki.org/devel:xmlrpc&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://www.dokuwiki.org/devel:xmlrpc&quot;  rel=&quot;nofollow&quot;&gt;WikiRPCInterface2&lt;/a&gt;. Then again, using a custom &lt;acronym title=&quot;Remote Procedure Call&quot;&gt;RPC&lt;/acronym&gt; notification to distribute edit-locks would be easier to maintain, setup and may have lower latency, but lacks interoperability.
&lt;/p&gt;

&lt;p&gt;
The intention is to minimize dokuwiki changes, and also keep the dokuwiki plugins rather simple. re-use existing frameworks and protocols.
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;Ideas&lt;/strong&gt;
&lt;/p&gt;

&lt;p&gt;
The preferred mechanism would be to implement Jabber XMPP  &lt;a href=&quot;http://www.xmpp.org/extensions/xep-0060.html&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://www.xmpp.org/extensions/xep-0060.html&quot;  rel=&quot;nofollow&quot;&gt;Publish-Subscribe&lt;/a&gt; extension in conjunction with a XMPP → &lt;acronym title=&quot;Remote Procedure Call&quot;&gt;RPC&lt;/acronym&gt; gatewaty.
&lt;/p&gt;

&lt;p&gt;
Having dokuwiki publish news is a minor task; email-subscription is already possible. Formatting it in &lt;acronym title=&quot;Extensible Markup Language&quot;&gt;XML&lt;/acronym&gt; or Atom and signing the change is straight-forward; wrapping and sending it to a gateway also easy.
&lt;/p&gt;

&lt;p&gt;
Acting upon subscriptions is a bit trickier. It&amp;#039;s feasible to just generate an automatic edit request via &lt;acronym title=&quot;Hyper Text Transfer Protocol&quot;&gt;HTTP&lt;/acronym&gt;-POST for each incoming XMPP news. This could be built-in or happen at a gateway; with design depending on implementation: Authentication could happen internally (dokuwiki signs data-changeset), as part of the protocol (oAuth) or via transport (HTTPS). the choice depends on the use-case and application: user-administrated vs. admin-maintained or low-traffic-decentraliced-wiki vs. mirror/load-balancing.
&lt;/p&gt;

&lt;p&gt;
options:
&lt;/p&gt;
&lt;ol&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; dokuwiki provides OAuth for setUID-requests - &lt;em&gt;normal&lt;/em&gt; &lt;code&gt;do=save&lt;/code&gt; POST requests can be used to perform updates. (oAuth-tokens are tunneled with XMPP-message/request to &lt;em&gt;any&lt;/em&gt; gateway - openID can be used as &lt;em&gt;remote&lt;/em&gt; user-account) &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; whitelist/blacklist approach: local xmpp gateway filters and performs wiki updates (write files or &lt;em&gt;hardcoded-auth&lt;/em&gt; POST)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; custom dokuwiki shared-Auth mechanism. &lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;
(1) is the most flexible and cool, alas also the most complex choice. (2) is pragmatic and probably fast (good performance and short implementation-time) wheres (3) may offer more advanced SPAM protection, user configuration and mapping and as well be on the way to provide a lock mechanism.
&lt;/p&gt;

&lt;p&gt;
PubSub does not strictly address locking. A solution would be to publish an “invalidated” version of a page when beginning to edit and re-publish afterwards. It would either require very short draft-timeout times or dokuwiki would need send &lt;acronym title=&quot;Asynchronous JavaScript and XML&quot;&gt;AJAX&lt;/acronym&gt; requests on cancel edit and re-publish.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT101 SECTION &quot;About&quot; [141-3138] --&gt;
&lt;h2 class=&quot;sectionedit102&quot;&gt;&lt;a name=&quot;storm&quot; id=&quot;storm&quot;&gt;Storm&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://wokkel.ik.nu/&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://wokkel.ik.nu/&quot;  rel=&quot;nofollow&quot;&gt;http://wokkel.ik.nu/&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://idavoll.ik.nu&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://idavoll.ik.nu&quot;  rel=&quot;nofollow&quot;&gt;http://idavoll.ik.nu&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://www.dokuwiki.org/devel:xmlrpc&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://www.dokuwiki.org/devel:xmlrpc&quot;  rel=&quot;nofollow&quot;&gt;http://www.dokuwiki.org/devel:xmlrpc&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://www.jspwiki.org/wiki/WikiRPCInterface2&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://www.jspwiki.org/wiki/WikiRPCInterface2&quot;  rel=&quot;nofollow&quot;&gt;http://www.jspwiki.org/wiki/WikiRPCInterface2&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://www.mediamatic.net/page/26605/en&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://www.mediamatic.net/page/26605/en&quot;  rel=&quot;nofollow&quot;&gt;http://www.mediamatic.net/page/26605/en&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://www.mediamatic.net/module/PubSub/&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://www.mediamatic.net/module/PubSub/&quot;  rel=&quot;nofollow&quot;&gt;http://www.mediamatic.net/module/PubSub/&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
wokkel implements a &lt;acronym title=&quot;Hyper Text Transfer Protocol&quot;&gt;HTTP&lt;/acronym&gt; ↔ XMPP gatway that distributing Atom feeds along with an &lt;em&gt;authoritative resource &lt;acronym title=&quot;Uniform Resource Identifier&quot;&gt;URI&lt;/acronym&gt;&lt;/em&gt;. It&amp;#039;s intended to run on a host reachable by the web-server (localhost, or in DMZ);  the XMPP port is open to public (it&amp;#039;s a jabber server) while the &lt;acronym title=&quot;Hyper Text Transfer Protocol&quot;&gt;HTTP&lt;/acronym&gt; has a whitelist IP filter.
&lt;/p&gt;

&lt;p&gt;
idavoll/wokkel &lt;acronym title=&quot;Hyper Text Transfer Protocol&quot;&gt;HTTP&lt;/acronym&gt; command summary:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; create XMPP node ID&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; publish content to XMPP node ID (sends out xmpp messages)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; subscribe to node (will generate a &lt;acronym title=&quot;Hyper Text Transfer Protocol&quot;&gt;HTTP&lt;/acronym&gt; POST to a given address for an incoming XMPP message)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; unsubscribe from node id&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
see &lt;a href=&quot;http://idavoll.ik.nu/wiki/HTTP_Interface&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://idavoll.ik.nu/wiki/HTTP_Interface&quot;  rel=&quot;nofollow&quot;&gt;http://idavoll.ik.nu/wiki/HTTP_Interface&lt;/a&gt; and &lt;a href=&quot;http://idavoll.ik.nu/wiki/HTTP_Interface_Subscription&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://idavoll.ik.nu/wiki/HTTP_Interface_Subscription&quot;  rel=&quot;nofollow&quot;&gt;http://idavoll.ik.nu/wiki/HTTP_Interface_Subscription&lt;/a&gt;
After publication the XMPP-node ID should be included in the xhtml header to provide subscription discovery.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT102 SECTION &quot;Storm&quot; [3139-] --&gt;</description>
        <category>wiki</category>
            <pubDate>Thu, 21 Aug 2008 20:11:32 +0000</pubDate>
        </item>
        <item>
            <title>Dokuwiki &amp; rsync</title>
            <link>http://www.gareus.de/wiki/dokursync</link>
            <description>
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
A method to synchronize two dokuwiki installations. 
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT103 SECTION &quot;Dokuwiki &amp; rsync&quot; [1-86] --&gt;
&lt;h2 class=&quot;sectionedit104&quot;&gt;&lt;a name=&quot;about&quot; id=&quot;about&quot;&gt;About&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
The idea is simple: For each wiki-write-transaction a small dokuwiki action plugin launches rsync to publish/update the underlying data storage. 
&lt;/p&gt;

&lt;p&gt;
Synchronization happens in the background: a small perl script prevents multiple simultaneous &lt;a href=&quot;http://en.wikipedia.org/wiki/rsync&quot; class=&quot;interwiki iw_wp&quot; target=&quot;_blank&quot; title=&quot;http://en.wikipedia.org/wiki/rsync&quot;&gt;rsync&lt;/a&gt; processes and re-runs if changes occur during an active transfer.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT104 SECTION &quot;About&quot; [87-426] --&gt;
&lt;h2 class=&quot;sectionedit105&quot;&gt;&lt;a name=&quot;notes&quot; id=&quot;notes&quot;&gt;Notes&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
While &lt;code&gt;rsync&lt;/code&gt; is capable of bi-directionally synchronizing multiple wikis. The script below is in use on a (read/write) master to (mostly read-only) slave wiki.  Use rsync&amp;#039;s &lt;code&gt;-u&lt;/code&gt; option, but with care: page-locks, and edit-drafts are not distributed.  - While suitable for a small group of editors, race-conditions may occur on larger public wikis.
&lt;/p&gt;

&lt;p&gt;
One workaround is to make a receiving namespace read-only; optionally in combination with the &lt;a href=&quot;http://www.dokuwiki.org/plugin:include&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://www.dokuwiki.org/plugin:include&quot;  rel=&quot;nofollow&quot;&gt;include plugin&lt;/a&gt; to make parts locally writable content.
&lt;/p&gt;

&lt;p&gt;
Alternatively one can make use of redirecting or proxying write-requests (&lt;acronym title=&quot;Hyper Text Transfer Protocol&quot;&gt;HTTP&lt;/acronym&gt;-POSTs in general) to the central &lt;em&gt;master&lt;/em&gt;. There can be different master servers per namespace; but depends on secure cross-site requests and authentication token passing.
&lt;/p&gt;

&lt;p&gt;
Last but not least NFS-sharing the &lt;code&gt;data/lock&lt;/code&gt; folder may be an option. see &lt;a href=&quot;http://www.gareus.de/wiki/dokupubsub&quot; class=&quot;wikilink1&quot; title=&quot;wiki:dokupubsub&quot;&gt;dokupubsub&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT105 SECTION &quot;Notes&quot; [427-1340] --&gt;
&lt;h2 class=&quot;sectionedit106&quot;&gt;&lt;a name=&quot;source&quot; id=&quot;source&quot;&gt;Source&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;php code php&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;&amp;lt;?php&lt;/span&gt;
&lt;span class=&quot;co4&quot;&gt;/**
 * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
 * @author     Robin Gareus &amp;lt;robin@gareus.org&amp;gt;
 */&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;// must be run within Dokuwiki&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;&lt;a target=&quot;_blank&quot; href=&quot;http://www.php.net/defined&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;defined&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;'DOKU_INC'&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;a target=&quot;_blank&quot; href=&quot;http://www.php.net/die&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;die&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;&lt;a target=&quot;_blank&quot; href=&quot;http://www.php.net/defined&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;defined&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;'DOKU_PLUGIN'&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;a target=&quot;_blank&quot; href=&quot;http://www.php.net/define&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;define&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;'DOKU_PLUGIN'&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;DOKU_INC&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;'lib/plugins/'&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;require_once&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;DOKU_PLUGIN&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;'action.php'&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw2&quot;&gt;class&lt;/span&gt; action_plugin_rsync &lt;span class=&quot;kw2&quot;&gt;extends&lt;/span&gt; DokuWiki_Action_Plugin &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
  &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; getInfo&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;a target=&quot;_blank&quot; href=&quot;http://www.php.net/array&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;
      &lt;span class=&quot;st_h&quot;&gt;'author'&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;'Robin Gareus'&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;st_h&quot;&gt;'email'&lt;/span&gt;  &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;'robin@gareus.org'&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;st_h&quot;&gt;'date'&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;'2007-05-23'&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;st_h&quot;&gt;'name'&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;'rsync plugin'&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;st_h&quot;&gt;'desc'&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;'rsync dokuwiki data'&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;st_h&quot;&gt;'url'&lt;/span&gt;    &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;''&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
  &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; register&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$contr&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;re0&quot;&gt;$contr&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;register_hook&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;'IO_WIKIPAGE_WRITE'&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                          &lt;span class=&quot;st_h&quot;&gt;'AFTER'&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                          &lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                          &lt;span class=&quot;st_h&quot;&gt;'handle_wikipage_write'&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                          &lt;a target=&quot;_blank&quot; href=&quot;http://www.php.net/array&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
  &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; handle_wikipage_write&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$event&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$param&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw2&quot;&gt;global&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$conf&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;// if an old revision is saved or the file is empty -&amp;gt; run away&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$event&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;data&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;||&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$event&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;data&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;//$ns=$event-&amp;gt;data[1];&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;//$path=$event-&amp;gt;data[0][0];&lt;/span&gt;
&amp;nbsp;
    &lt;a target=&quot;_blank&quot; href=&quot;http://www.php.net/system&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;system&lt;/span&gt;&lt;/a&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;/usr/local/bin/dokusync.pl &amp;amp;&amp;gt;/tmp/rwikisync.log &amp;amp;&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
The &lt;acronym title=&quot;Practical Extraction and Report Language&quot;&gt;Perl&lt;/acronym&gt; script to rsync the actual data. Save as &lt;code&gt;/usr/local/bin/dokusync.pl&lt;/code&gt; or change the path in the above plugin code accordingly.
&lt;/p&gt;
&lt;pre class=&quot;perl code perl&quot;&gt;&lt;span class=&quot;co1&quot;&gt;#!/usr/bin/perl&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;### CONFIG&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$rsyncopts&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;-azv --delete --no-o --no-g --chmod=Dg+wx,ug+rw&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$myssh&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;ssh -i /var/opt/id_rsa -l username&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;@excludelist&lt;/span&gt;  &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;_darcs&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;cache/&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;attic/&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;private/&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;index/&amp;quot;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$src&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;/var/www/data/&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$dstpath&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;/site/docroot/data/&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$dsthost&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;example.org&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re0&quot;&gt;$dst&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$dsthost&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;:&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$dstpath&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;###prevent multiple instances&lt;/span&gt;
&lt;span class=&quot;kw2&quot;&gt;use&lt;/span&gt; File&lt;span class=&quot;sy0&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;me2&quot;&gt;Pid&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$pidfile&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; File&lt;span class=&quot;sy0&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;me2&quot;&gt;Pid&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;new&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; file &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;/var/lock/rwikisync.pid&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;my&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$num&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$pidfile&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;running&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;# touch restart-file&lt;/span&gt;
        &lt;a target=&quot;_blank&quot; href=&quot;http://perldoc.perl.org/functions/system.html&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;system&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;touch /var/lock/rsyncrestart&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;a target=&quot;_blank&quot; href=&quot;http://perldoc.perl.org/functions/die.html&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;die&lt;/span&gt;&lt;/a&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Already running: $num - restart scheduled&lt;span class=&quot;es0&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$pidfile&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;### build commandline&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$command&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;rsync &amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$rsyncopts&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot; -e &lt;span class=&quot;es0&quot;&gt;\&amp;quot;&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$myssh&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\&amp;quot;&lt;/span&gt; &amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;foreach&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;@excludelist&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;re0&quot;&gt;$command&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot; --exclude '&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;co5&quot;&gt;$_&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;'&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$command&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$src&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$dst&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;### and execute it..&lt;/span&gt;
&lt;a target=&quot;_blank&quot; href=&quot;http://perldoc.perl.org/functions/system.html&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;system&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;date&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;a target=&quot;_blank&quot; href=&quot;http://perldoc.perl.org/functions/system.html&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;system&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$command&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;### fix group permissions&lt;/span&gt;
&lt;a target=&quot;_blank&quot; href=&quot;http://perldoc.perl.org/functions/system.html&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;system&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$myssh&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$dsthost&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot; &lt;span class=&quot;es0&quot;&gt;\&amp;quot;&lt;/span&gt;chgrp -R www-data &amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$dstpath&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot; 2&amp;gt;/dev/null&lt;span class=&quot;es0&quot;&gt;\&amp;quot;&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;# check if restart was attempted -&amp;gt; rm restart file and rsync again..&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;e &lt;span class=&quot;st0&quot;&gt;&amp;quot;/var/lock/rsyncrestart&amp;quot;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;a target=&quot;_blank&quot; href=&quot;http://perldoc.perl.org/functions/unlink.html&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;unlink&lt;/span&gt;&lt;/a&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;/var/lock/rsyncrestart&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;a target=&quot;_blank&quot; href=&quot;http://perldoc.perl.org/functions/system.html&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;system&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$command&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re0&quot;&gt;$pidfile&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;remove&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;!-- EDIT106 SECTION &quot;Source&quot; [1341-] --&gt;</description>
        <category>dokuplugin</category>
        <category>FLOSS</category>
        <category>WWW</category>
        <category>development</category>
            <pubDate>Thu, 21 Aug 2008 18:24:56 +0000</pubDate>
        </item>
        <item>
            <title>Image Compositor Socket</title>
            <link>http://www.gareus.de/wiki/ics</link>
            <description>
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;http://ardour.org&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://ardour.org&quot;  rel=&quot;nofollow&quot;&gt;ardour&lt;/a&gt; - the new digital audio workstation - includes rudimentary support to display video-timelines. - For this to work the video-data needs to be supplied by a 3rd-party application via &lt;acronym title=&quot;Transmission Control Protocol - very important core protocol of the internet.&quot;&gt;TCP&lt;/acronym&gt;-socket, hence the name: Image Compositor Socket. 
&lt;/p&gt;

&lt;p&gt;
Back in 2004/2005 &lt;code&gt;aniComp&lt;/code&gt; from the CMT, Glasgow Animatics-server was supported in Ardour-0.99; but since then
ardour-2.X ICS code has been mostly unmaintained. 
&lt;/p&gt;

&lt;p&gt;
I took to code a &lt;a href=&quot;http://www.gareus.de/oss/sodankyla/start&quot; class=&quot;wikilink1&quot; title=&quot;oss:sodankyla:start&quot;&gt;video-server&lt;/a&gt; that implements the ICS protocol and this wiki page collects related information concerning ardour. 
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT107 SECTION &quot;Image Compositor Socket&quot; [1-626] --&gt;
&lt;h2 class=&quot;sectionedit108&quot;&gt;&lt;a name=&quot;ics_and_ardour_2x&quot; id=&quot;ics_and_ardour_2x&quot;&gt;ICS and ardour 2.X&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
ardour-0.99.3 works /just fine/. However the 2.0-ongoing branch (currently ardour-2.5, svn  rev. 3617) requires patching some regressions of the video-display.
&lt;/p&gt;

&lt;p&gt;
You can grab split-patches and follow discussion at &lt;a href=&quot;http://tracker.ardour.org/&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://tracker.ardour.org/&quot;  rel=&quot;nofollow&quot;&gt;http://tracker.ardour.org/&lt;/a&gt; or download a &lt;a href=&quot;http://www.gareus.de/_media/wiki/ardour-r3617-video2.patch&quot; class=&quot;media mediafile mf_patch&quot; title=&quot;wiki:ardour-r3617-video2.patch&quot;&gt;combined patch&lt;/a&gt; based on the &lt;code&gt;git:/ /mir.dnsalias.com/ardour2 ics&lt;/code&gt; branch 
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT108 SECTION &quot;ICS and ardour 2.X&quot; [627-1025] --&gt;
&lt;h2 class=&quot;sectionedit109&quot;&gt;&lt;a name=&quot;setup&quot; id=&quot;setup&quot;&gt;Setup&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
ardour enables it&amp;#039;s video-capabilities if it can find an executable &lt;code&gt;aniComp&lt;/code&gt; in &lt;code&gt;$PATH&lt;/code&gt;.
probably the easiest way to accoplish this is to
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo ln -s /bin/true /usr/local/bin/aniComp&lt;/pre&gt;

&lt;p&gt;
ardour2 will also need the an additional line in the &lt;code&gt;ardour.menus&lt;/code&gt; configuration file:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;&amp;lt;menuitem action=&amp;#039;aniConnect&amp;#039;/&amp;gt;&lt;/pre&gt;

&lt;p&gt;
I&amp;#039;ve added it below the “AddTrackBus” entry.
&lt;/p&gt;

&lt;p&gt;
Launch the socket-server, ardour and activate ardour&amp;#039;s “connect” menu-entry.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT109 SECTION &quot;Setup&quot; [1026-1482] --&gt;
&lt;h2 class=&quot;sectionedit110&quot;&gt;&lt;a name=&quot;ics_protocol&quot; id=&quot;ics_protocol&quot;&gt;ICS Protocol&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
ICS uses &lt;acronym title=&quot;Transmission Control Protocol - very important core protocol of the internet.&quot;&gt;TCP&lt;/acronym&gt; port 30000.  the general syntax is in &lt;acronym title=&quot;American Standard Code for Information Interchange&quot;&gt;ASCII&lt;/acronym&gt; text: Every message but the raw-video-data is encoded as Text, integers are represented as decimal values. 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;NUMBER  := &amp;lt;ascii-decimal-integer (3 or 10bytes)&amp;gt;
TEXT    := &amp;lt;length (3bytes)&amp;gt;&amp;lt;data (length bytes)&amp;gt;
REPLY   := &amp;quot;RT0&amp;quot; | &amp;quot;RT1&amp;quot;
COMMAND := &amp;lt;2-byte-command&amp;gt; [2-byte-id]* [TEXT]* [NUMBER]*&lt;/pre&gt;

&lt;p&gt;
there are various 2-byte identifiers for commands, items and attributes (eg. &lt;code&gt;IN&lt;/code&gt;: insert, &lt;code&gt;RM&lt;/code&gt;: remove, &lt;code&gt;IT&lt;/code&gt;: imageframe time axis etc). for a full list see the ardour source:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;gtk2_ardour/ardour_image_compositor_socket.h
gtk2_ardour/imageframe_socket_handler.cc
gtk2_ardour/imageframe_socket_handler.h&lt;/pre&gt;

&lt;p&gt;
If you don&amp;#039;t have aniComp and can&amp;#039;t wait until &lt;a href=&quot;http://www.gareus.de/oss/sodankyla/start&quot; class=&quot;wikilink1&quot; title=&quot;oss:sodankyla:start&quot;&gt;sodankyla&lt;/a&gt; is deployable, you can connect to ardour using the gnu-tool &lt;code&gt;socket&lt;/code&gt;.  Here&amp;#039;s an annotated example session:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;#
# $ socket -v -ls 30000
#
# load session
SAOS019/tmp/a25/a25.ardour
#
# create new video-track &amp;quot;TTTT&amp;quot;
INIT004TTTT
# rename &amp;quot;TTTT&amp;quot; to &amp;quot;NAME&amp;quot;
MVIT004TTTT004NAME
# insert a new marker-track (just testing)
INMT005VNAME004NAME
# add a new video-scene/group to the video-track
INIG004NAME007myscene
# add an image to the video-scene
INII004NAME007myscene004myID00000000000000000000
#
# ardour asks:
#
# &amp;quot;RQID004NAME007myscene004myID066&amp;quot; 
#      |  +   |  +      |  +   | 
#      |      |         |      preferred height
#      Track  Scene     Chunk 
#
#
# reply - header
#   Width
#   |  Height
#   |  |  SPP
#   |  |  |  Data len
#   |  |  |  | 
RDID00800600300000000000000000000000000000144
# expect &amp;quot;RT1&amp;quot; from ardour.
# now send image data - here: 144 bytes 
000...000 (repeat)&lt;/pre&gt;

&lt;p&gt;
Note: ardour-0.99.3 expects &lt;code&gt;SPP=4&lt;/code&gt; and &lt;em&gt;RGBA&lt;/em&gt; image data. The patched ardour2 can handle &lt;em&gt;RGB24&lt;/em&gt; and &lt;em&gt;RGBA32&lt;/em&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT110 SECTION &quot;ICS Protocol&quot; [1483-3349] --&gt;
&lt;h1 class=&quot;sectionedit111&quot;&gt;&lt;a name=&quot;external_resources&quot; id=&quot;external_resources&quot;&gt;external resources&lt;/a&gt;&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://subversion.ardour.org/svn/ardour2/branches/2.0-ongoing/gtk2_ardour/ardour_image_compositor_socket.h&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://subversion.ardour.org/svn/ardour2/branches/2.0-ongoing/gtk2_ardour/ardour_image_compositor_socket.h&quot;  rel=&quot;nofollow&quot;&gt;http://subversion.ardour.org/svn/ardour2/branches/2.0-ongoing/gtk2_ardour/ardour_image_compositor_socket.h&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://animix.sourceforge.net/anicomp/images/anicomp_preview_2.png&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://animix.sourceforge.net/anicomp/images/anicomp_preview_2.png&quot;  rel=&quot;nofollow&quot;&gt;http://animix.sourceforge.net/anicomp/images/anicomp_preview_2.png&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://sourceforge.net/projects/animix/&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://sourceforge.net/projects/animix/&quot;  rel=&quot;nofollow&quot;&gt;http://sourceforge.net/projects/animix/&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT111 SECTION &quot;external resources&quot; [3350-] --&gt;</description>
        <category>FLOSS</category>
        <category>JACK</category>
        <category>Video</category>
        <category>Development</category>
            <pubDate>Mon, 21 Jul 2008 14:38:31 +0000</pubDate>
        </item>
        <item>
            <title>Dokubookmark - Website Tagger</title>
            <link>http://www.gareus.de/wiki/dokubookmark</link>
            <description>
&lt;h1 class=&quot;sectionedit112&quot;&gt;&lt;a name=&quot;bookmark_wiki&quot; id=&quot;bookmark_wiki&quot;&gt;Bookmark Wiki&lt;/a&gt;&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Inspired by the &lt;a href=&quot;http://wiki.splitbrain.org/wiki:tips:weblog_bookmarklet&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://wiki.splitbrain.org/wiki:tips:weblog_bookmarklet&quot;  rel=&quot;nofollow&quot;&gt;Dokuwiki-Weblog&lt;/a&gt; &lt;a href=&quot;http://en.wikipedia.org/wiki/Bookmarklet&quot; class=&quot;interwiki iw_wp&quot; target=&quot;_blank&quot; title=&quot;http://en.wikipedia.org/wiki/Bookmarklet&quot;&gt;Bookmarklet&lt;/a&gt; hack.  Here&amp;#039;s a &lt;em&gt;safer&lt;/em&gt; method to safe bookmarks in dokuwiki.
&lt;/p&gt;

&lt;p&gt;
see &lt;a href=&quot;http://www.gareus.de/wiki/bookmarklets&quot; class=&quot;wikilink2&quot; title=&quot;wiki:bookmarklets&quot; rel=&quot;nofollow&quot;&gt;bookmarklets&lt;/a&gt; for a method that does not require additional &lt;acronym title=&quot;Hypertext Preprocessor&quot;&gt;PHP&lt;/acronym&gt; code.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT112 SECTION &quot;Bookmark Wiki&quot; [1-283] --&gt;
&lt;h2 class=&quot;sectionedit113&quot;&gt;&lt;a name=&quot;bookmarklet&quot; id=&quot;bookmarklet&quot;&gt;Bookmarklet&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Add a new bookmark in your browser with the text below. Edit it to match the hostname and protocol to match your dokuwiki server.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;javascript:Q=document.selection?document.selection.createRange().text:document.getSelection(); void(window.open(&amp;#039;https://your.hostname/dwlog.php?te=&amp;#039;+escape(Q)+&amp;#039;&amp;amp;ur=&amp;#039;+ escape(location.href)+&amp;#039;&amp;amp;ti=&amp;#039;+escape(document.title),&amp;#039;dokuwikiadd&amp;#039;,&amp;#039;scrollbars=yes,resizable=yes,toolbars=yes,width=600,height=300,left=200,top=200,status=yes&amp;#039;));&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT113 SECTION &quot;Bookmarklet&quot; [284-771] --&gt;
&lt;h2 class=&quot;sectionedit114&quot;&gt;&lt;a name=&quot;source&quot; id=&quot;source&quot;&gt;Source&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
..work in progress..
&lt;/p&gt;

&lt;p&gt;
The script offers two methods: 
&lt;/p&gt;
&lt;ol&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; directly &lt;em&gt;redirect&lt;/em&gt; to dokuwiki edit/preview form.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; intermediate page (allows to change page-name)&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;
The first can also be archived directly with a &lt;a href=&quot;http://www.gareus.de/wiki/bookmarklet&quot; class=&quot;wikilink1&quot; title=&quot;wiki:bookmarklet&quot;&gt;bookmarklet&lt;/a&gt;, which is however not compatible with all browsers..  - this first method is basically the same javascript but read from the server instead of the browser&amp;#039;s bookmark.
&lt;/p&gt;

&lt;p&gt;
The 2nd Method provides more elaborate interaction. This code adds a &lt;em&gt;checkable&lt;/em&gt; list of tags and allows to change the page-name or namespace, before going into &lt;em&gt;preview-edit&lt;/em&gt; mode.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT114 SECTION &quot;Source&quot; [772-] --&gt;</description>
        <category>FLOSS</category>
        <category>WWW</category>
        <category>dokuplugin</category>
            <pubDate>Fri, 04 Jul 2008 00:31:35 +0000</pubDate>
        </item>
        <item>
            <title>Bookmarklets</title>
            <link>http://www.gareus.de/wiki/bookmarklet</link>
            <description>
&lt;h1 class=&quot;sectionedit115&quot;&gt;&lt;a name=&quot;dokuwiki_bookmark_log&quot; id=&quot;dokuwiki_bookmark_log&quot;&gt;Dokuwiki Bookmark Log&lt;/a&gt;&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Inspired by the &lt;a href=&quot;http://wiki.splitbrain.org/wiki:tips:weblog_bookmarklet&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://wiki.splitbrain.org/wiki:tips:weblog_bookmarklet&quot;  rel=&quot;nofollow&quot;&gt;Dokuwiki-Weblog&lt;/a&gt; &lt;a href=&quot;http://en.wikipedia.org/wiki/Bookmarklet&quot; class=&quot;interwiki iw_wp&quot; target=&quot;_blank&quot; title=&quot;http://en.wikipedia.org/wiki/Bookmarklet&quot;&gt;Bookmarklet&lt;/a&gt; hack.  Here&amp;#039;s a &lt;em&gt;safer&lt;/em&gt; method to safe bookmarks in dokuwiki.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT115 SECTION &quot;Dokuwiki Bookmark Log&quot; [1-213] --&gt;
&lt;h2 class=&quot;sectionedit116&quot;&gt;&lt;a name=&quot;bookmarklet&quot; id=&quot;bookmarklet&quot;&gt;Bookmarklet&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Add a new bookmark in your browser with the text below. Edit it to match the hostname and protocol (http, https) of your dokuwiki server.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;javascript:Q=document.selection?document.selection.createRange().text:document.getSelection(); void(window.open(&amp;#039;https://your.hostname/dwlog.php?te=&amp;#039;+escape(Q)+&amp;#039;&amp;amp;ur=&amp;#039;+ escape(location.href)+&amp;#039;&amp;amp;ti=&amp;#039;+escape(document.title),&amp;#039;dokuwikiadd&amp;#039;,&amp;#039;scrollbars=yes,resizable=yes,toolbars=yes,width=600,height=300,left=200,top=200,status=yes&amp;#039;));&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT116 SECTION &quot;Bookmarklet&quot; [214-709] --&gt;
&lt;h2 class=&quot;sectionedit117&quot;&gt;&lt;a name=&quot;source&quot; id=&quot;source&quot;&gt;Source&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;

&lt;h3&gt;&lt;a name=&quot;ideastodo&quot; id=&quot;ideastodo&quot;&gt;Ideas/ToDo&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; show [common] tags as checkboxes&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; skip one step (Location: redirect to edit/preview page, doku _template) &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; check dokuwiki auth, sectok&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT117 SECTION &quot;Source&quot; [710-] --&gt;</description>
        <category>wiki</category>
            <pubDate>Thu, 03 Jul 2008 01:13:14 +0000</pubDate>
        </item>
        <item>
            <title>getting things done</title>
            <link>http://www.gareus.de/wiki/gtd</link>
            <description>
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Dokuwiki&amp;#039;s ToDo list - won&amp;#039;t get things done faster, but maybe with less latency. 
Has to compete with trac+git ;)
&lt;/p&gt;

&lt;p&gt;
Example:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;&amp;lt;gtd [warn=dd] [due=dd]&amp;gt;
[#] [@context] [p:project] [d:yyyy-mm-dd|mm-dd|dd] [w:dd]
[describing text]

[#] [@context] [p:project] [d:yyyy-mm-dd|mm-dd|dd] [w:dd]
[describing text]
&amp;lt;/gtd&amp;gt;&lt;/pre&gt;
&lt;div class=&quot;table sectionedit119&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0&quot;&gt; [warn=dd] &lt;/th&gt;&lt;td class=&quot;col1&quot;&gt; set a global warning period in days before the task has to be finished, the item changes its&amp;#039; color to orange &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; optional (defaults to 5) &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;th class=&quot;col0&quot;&gt; [due=dd] &lt;/th&gt;&lt;td class=&quot;col1&quot;&gt; set a global due to period in days before the task has to be finished, the item changes its&amp;#039; color to red &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; optional (defaults to 2) &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;th class=&quot;col0&quot;&gt; [#] &lt;/th&gt;&lt;td class=&quot;col1&quot;&gt; A leading &amp;#039;#&amp;#039; marks a Todo as done &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; optional &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;th class=&quot;col0&quot;&gt; [@context] &lt;/th&gt;&lt;td class=&quot;col1&quot;&gt; The context of the Todo ( &lt;code&gt;_&lt;/code&gt; will be transformed to space ). &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; required &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row4&quot;&gt;
		&lt;th class=&quot;col0&quot;&gt; [p:project] &lt;/th&gt;&lt;td class=&quot;col1&quot;&gt; Specifies if a todo item belongs to a certain project ( &lt;code&gt;_&lt;/code&gt; will be transformed to space ). &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; optional &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row5&quot;&gt;
		&lt;th class=&quot;col0&quot;&gt; [w:dd] &lt;/th&gt;&lt;td class=&quot;col1&quot;&gt; overwrite global warning period by days &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; optional &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row6&quot;&gt;
		&lt;th class=&quot;col0&quot;&gt; [d:yyyy-mm-dd] &lt;/th&gt;&lt;td class=&quot;col1&quot;&gt; The date until when the task should be done, if you use mm-dd the year will be appended automatically, same if you only use dd the month and the year will be appended automatically &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; optional &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row7&quot;&gt;
		&lt;th class=&quot;col0&quot;&gt; [describing text] &lt;/th&gt;&lt;td class=&quot;col1&quot;&gt; Describing text. Must be on a new (&lt;strong&gt;one&lt;/strong&gt; linebreak) line (Wiki Syntax can be used to format). &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; required &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT119 TABLE [363-1342] --&gt;
&lt;p&gt;
&amp;lt;gtd warn=3 due=1&amp;gt;
&lt;/p&gt;

&lt;p&gt;
@mycontext p:example d:2008-05-29
describing text of a task
&lt;/p&gt;

&lt;p&gt;
@mycontext p:example d:15 w:20
describing text of some due task that has to be done this month
&lt;/p&gt;

&lt;p&gt;
@mycontext p:example d:30 w:10
another describing text of a monthly task
&lt;/p&gt;

&lt;p&gt;
@mycontext p:enhancements d:2020-01-01
this task is not due in the near future
&lt;/p&gt;

&lt;p&gt;
@mycontext p:enhancements d:2008-07-19 w:50
..to be done mid July.. 
&amp;lt;/gtd&amp;gt;
&lt;/p&gt;
&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
&lt;a href=&quot;http://www.gareus.de/wiki/tags/scratch&quot; class=&quot;wikilink2&quot; title=&quot;wiki:tags:scratch&quot; rel=&quot;tag&quot;&gt;scratch&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;/div&gt;
</description>
        <category>scratch</category>
            <pubDate>Mon, 30 Jun 2008 01:41:02 +0000</pubDate>
        </item>
        <item>
            <title>Goban</title>
            <link>http://www.gareus.de/wiki/goban</link>
            <description>
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT120 SECTION &quot;Goban&quot; [1-21] --&gt;
&lt;h2 class=&quot;sectionedit121&quot;&gt;&lt;a name=&quot;link_collection&quot; id=&quot;link_collection&quot;&gt;link collection&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://gtl.xmp.net/&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://gtl.xmp.net/&quot;  rel=&quot;nofollow&quot;&gt;http://gtl.xmp.net/&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://www.european-go.org/rating/gor.html&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://www.european-go.org/rating/gor.html&quot;  rel=&quot;nofollow&quot;&gt;http://www.european-go.org/rating/gor.html&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://stason.org/TULARC/games/go/&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://stason.org/TULARC/games/go/&quot;  rel=&quot;nofollow&quot;&gt;http://stason.org/TULARC/games/go/&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://www.goproblems.com/&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://www.goproblems.com/&quot;  rel=&quot;nofollow&quot;&gt;http://www.goproblems.com/&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT121 SECTION &quot;link collection&quot; [22-] --&gt;</description>
        <category>mindgames</category>
            <pubDate>Tue, 29 Apr 2008 08:30:09 +0000</pubDate>
        </item>
        <item>
            <title>the Frontera Project</title>
            <link>http://www.gareus.de/wiki/frontera</link>
            <description>
&lt;h1 class=&quot;sectionedit122&quot;&gt;&lt;a name=&quot;outline_and_resource_collection_for_the_frontera_project&quot; id=&quot;outline_and_resource_collection_for_the_frontera_project&quot;&gt;Outline and Resource Collection for the Frontera Project&lt;/a&gt;&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
* &lt;a href=&quot;http://frontera.sf.net&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://frontera.sf.net&quot;  rel=&quot;nofollow&quot;&gt;http://frontera.sf.net&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT122 SECTION &quot;Outline and Resource Collection for the Frontera Project&quot; [1-98] --&gt;
&lt;h2 class=&quot;sectionedit123&quot;&gt;&lt;a name=&quot;camera&quot; id=&quot;camera&quot;&gt;Camera&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
* &lt;a href=&quot;http://wiki.elphel.com/index.php?title=Camera_software&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://wiki.elphel.com/index.php?title=Camera_software&quot;  rel=&quot;nofollow&quot;&gt;http://wiki.elphel.com/index.php?title=Camera_software&lt;/a&gt;
* testOnDemandRTSPServer in package &lt;em&gt;livemedia-utils&lt;/em&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT123 SECTION &quot;Camera&quot; [99-] --&gt;</description>
        <category>FLOSS</category>
        <category>Video</category>
        <category>Installation</category>
            <pubDate>Wed, 16 Apr 2008 15:05:38 +0000</pubDate>
        </item>
        <item>
            <title>Viber - the video monitor</title>
            <link>http://www.gareus.de/wiki/viber</link>
            <description>
&lt;h1 class=&quot;sectionedit124&quot;&gt;&lt;a name=&quot;viber_-_video_monitoring_software&quot; id=&quot;viber_-_video_monitoring_software&quot;&gt;Viber - video monitoring software&lt;/a&gt;&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
scratches on newspaper margins:
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT124 SECTION &quot;Viber - video monitoring software&quot; [1-81] --&gt;
&lt;h2 class=&quot;sectionedit125&quot;&gt;&lt;a name=&quot;design&quot; id=&quot;design&quot;&gt;Design&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;http://www.gareus.de/_detail/ditaa_test_e0b6ca1442de753f457bfb27e6c5a0a1.png?id=wiki%3Aviber&amp;amp;cache=&quot; class=&quot;media&quot; title=&quot;ditaa_test_e0b6ca1442de753f457bfb27e6c5a0a1.png&quot;&gt;&lt;img src=&quot;http://www.gareus.de/_media/ditaa_test_e0b6ca1442de753f457bfb27e6c5a0a1.png?cache=&quot; class=&quot;media&quot; title=&quot;test&quot; alt=&quot;test&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT125 SECTION &quot;Design&quot; [82-1578] --&gt;
&lt;h2 class=&quot;sectionedit126&quot;&gt;&lt;a name=&quot;thread_model&quot; id=&quot;thread_model&quot;&gt;Thread model&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
There can be multiple display (one for each window), and decoder (one for each file) threads.
However there is only &lt;strong&gt;one&lt;/strong&gt; &lt;em&gt;master&lt;/em&gt; sync source (thread) at a given time. 
How this sync source affects the different tracks is specified by the session which can include a per track transport which can be derived from the master in arbitrary ways. 
&lt;/p&gt;

&lt;p&gt;
The buffer thread needs to ensure that the cache will contain the data that the video-display thread will need in the near future. 
&lt;/p&gt;

&lt;p&gt;
There is &lt;strong&gt;one&lt;/strong&gt; buffer thread that spawns decoders in the background (the decoders should finish their work before the display thread comes along). The buffer-thread is mainly concerned with latency compensation, and generates a map of video-frames to timecode&amp;lt;footnote&amp;gt;The underlying decoder→framecache may perform additional transformations in the timecode (eg. EDL)&amp;lt;/footnote&amp;gt;.
&lt;/p&gt;

&lt;p&gt;
The buffer thread has different modes of operation:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; still picture &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; play (readahead, compensate latency)&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
The play-mode should recognize varispeed or backwards playback..
&lt;/p&gt;

&lt;p&gt;
The buffer-thread needs not to be a thread but can be a callback from the sync-source&amp;lt;footnote&amp;gt;In principle the buffer-function can be run periodically from jack_process callback. But this is not practical since it can be up to a hundred ms latency: 4096/44100&amp;lt;/footnote&amp;gt;. Theres more to be said about this.
&lt;/p&gt;

&lt;/div&gt;

&lt;h3&gt;&lt;a name=&quot;video_display_thread&quot; id=&quot;video_display_thread&quot;&gt;Video Display Thread&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
This thread only flips buffers and stores a timestamp along with the screen&amp;#039;s retrace count, at a freq between 25..120Hz.
&lt;/p&gt;

&lt;p&gt;
It synchronizes to DRI vblank (wait for interrupt - &lt;code&gt;GLXWaitVideoSyncSGI&lt;/code&gt;  or directly &lt;code&gt;DRM_IOCTL_WAIT_VBLANK&lt;/code&gt;, &lt;code&gt;DRM_VBLANK_RELATIVE&lt;/code&gt;) ; if unavailable these could be substituted by a RTC, HPET device sync or a realtime thread (&lt;code&gt;jack_client_create_thread(..)&lt;/code&gt;)
&lt;/p&gt;

&lt;p&gt;
Note: to prevent async_x_replies; this thread should wake up the &lt;em&gt;UI interaction Thread&lt;/em&gt; for calling &lt;code&gt;XFlush() &lt;/code&gt;as to prevent async-X11-replies.  
ToDo: check for fallback: what if there&amp;#039;s no VGA ;)
ToDo: figure out the latency of &lt;code&gt;XvShmPutImage()&lt;/code&gt; relative to the retrace count.
&lt;/p&gt;

&lt;/div&gt;

&lt;h3&gt;&lt;a name=&quot;ui_interaction_thread_or_callbacks&quot; id=&quot;ui_interaction_thread_or_callbacks&quot;&gt;UI interaction Thread or Callbacks&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;ol&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; handles  XPending() events.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; process remote-control cmds (MIDI?, &lt;acronym title=&quot;Open Sound Control - &amp;quot;postmodern MIDI&amp;quot;&quot;&gt;OSC&lt;/acronym&gt;, stdio,..)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; modify (load/save) session&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;/div&gt;

&lt;h3&gt;&lt;a name=&quot;sync_source_thread_or_callbacks&quot; id=&quot;sync_source_thread_or_callbacks&quot;&gt;Sync Source Thread or Callbacks&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
provide a clock source. 
linking this to audio hardware: the thread would in intervals around 50Hz (48k/1024 or 192k/4096) but that may vary from 1Hz (8k/8192) up to 6kHz (192k/32). 
&lt;/p&gt;

&lt;p&gt;
thread &lt;em&gt;plugins&lt;/em&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; dummy - fixed frame &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; jack_transport&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; jack freewheeling ?!)  skip video frames for as fast as possible audio (video progress monitor)- as fast as possible video makes no sense&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; amidi_seq thread (MTC)&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
callback &lt;em&gt;plugins&lt;/em&gt; - wake up
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; jack_audio (LTC)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; jack_audio (debug; scope - connect to VGA luminosity)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; jack_midi (MTC) &lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;

&lt;h3&gt;&lt;a name=&quot;decoder_buffer_thread_s&quot; id=&quot;decoder_buffer_thread_s&quot;&gt;Decoder, Buffer Thread(s)&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
simplified &lt;acronym title=&quot;Application Programming Interface&quot;&gt;API&lt;/acronym&gt;:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;openFile(path|streamURL?)
  * &lt;/code&gt;getFileInfo(VC, ..)&lt;code&gt; - returns possible data formats, framerate, time offset, etc.
  * &lt;/code&gt;SetRenderFormatandSize(dataformat, size)&lt;code&gt;
  * &lt;/code&gt;SetDecoderParams(seekparams)&lt;code&gt;
  * &lt;/code&gt;storeFrameandInfo(timecode, *data)&amp;#039;&amp;#039;;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
The buffer thread links them all together.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT126 SECTION &quot;Thread model&quot; [1579-] --&gt;</description>
        <category>wiki</category>
            <pubDate>Sun, 30 Mar 2008 11:43:53 +0000</pubDate>
        </item>
        <item>
            <title>VideoDB</title>
            <link>http://www.gareus.de/wiki/videosync</link>
            <description>
&lt;p&gt;
&lt;img src=&quot;http://www.gareus.de/_media/graphviz/132f8bdf3390e60f809baaf21b6505c3.png&quot; class=&quot;media&quot; title=&quot;Graph&quot; alt=&quot;Graph&quot; /&gt;
&lt;/p&gt;
</description>
        <category>wiki</category>
            <pubDate>Mon, 28 Jan 2008 17:11:58 +0000</pubDate>
        </item>
        <item>
            <title>Simulating Analog Audio Cicuits</title>
            <link>http://www.gareus.de/wiki/spicesound</link>
            <description>
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Idea: feed the &lt;em&gt;great&lt;/em&gt; &lt;a href=&quot;http://sourceforge.net/projects/ngspice&quot; class=&quot;interwiki iw_sf&quot; target=&quot;_blank&quot; title=&quot;http://sourceforge.net/projects/ngspice&quot;&gt;SPICE&lt;/a&gt; simulator with audio-data.
&lt;/p&gt;

&lt;p&gt;
Solution: add a &lt;em&gt;libsndfile&lt;/em&gt; voltage-source to SPICE ;)
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT127 SECTION &quot;Simulating Analog Audio Cicuits&quot; [1-180] --&gt;
&lt;h2 class=&quot;sectionedit128&quot;&gt;&lt;a name=&quot;general_information&quot; id=&quot;general_information&quot;&gt;general information&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
It&amp;#039;s yet a quick experiment, and requires patching the SPICE source-code. Initial tests show that it might be realistic to simulate simple schematics in real-time&lt;sup&gt;&lt;a href=&quot;#fn__1&quot; name=&quot;fnt__1&quot; id=&quot;fnt__1&quot; class=&quot;fn_top&quot;&gt;1)&lt;/a&gt;&lt;/sup&gt;. Although the spice command is already named &lt;code&gt;jack&lt;/code&gt; it&amp;#039;s yet only a file-reader. For testing, there is a tool &lt;code&gt;txt2snd&lt;/code&gt; to convert spice &lt;code&gt;.print&lt;/code&gt; lines into wav&lt;sup&gt;&lt;a href=&quot;#fn__2&quot; name=&quot;fnt__2&quot; id=&quot;fnt__2&quot; class=&quot;fn_top&quot;&gt;2)&lt;/a&gt;&lt;/sup&gt; files. 
&lt;/p&gt;

&lt;p&gt;
one (of the many) problem is running spice in audio-samplerate time-steps… - it&amp;#039;s work in progres.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT128 SECTION &quot;general information&quot; [181-761] --&gt;
&lt;h2 class=&quot;sectionedit129&quot;&gt;&lt;a name=&quot;prepare&quot; id=&quot;prepare&quot;&gt;prepare&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; patch spice: &lt;a href=&quot;http://www.gareus.de/_media/wiki/ng-spice-rework-17-sndfile.diff&quot; class=&quot;media mediafile mf_diff&quot; title=&quot;wiki:ng-spice-rework-17-sndfile.diff&quot;&gt;ng-spice-rework-17-sndfile.diff&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; compile &lt;a href=&quot;http://www.gareus.de/_media/wiki/txt2snd-0.1.tgz&quot; class=&quot;media mediafile mf_tgz&quot; title=&quot;wiki:txt2snd-0.1.tgz&quot;&gt;txt2snd-0.1.tgz&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; prepare some libsndfile readable audio file. &lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT129 SECTION &quot;prepare&quot; [762-927] --&gt;
&lt;h2 class=&quot;sectionedit130&quot;&gt;&lt;a name=&quot;spice_syntax&quot; id=&quot;spice_syntax&quot;&gt;spice syntax&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
The patched spice knows a new type of voltags-source &lt;code&gt;jack&lt;/code&gt; with the optional argument &lt;code&gt;file&lt;/code&gt;.
&lt;/p&gt;

&lt;p&gt;
an example netlist entry - here: connecting the sound-source &lt;code&gt;/tmp/test.wav&lt;/code&gt; to pin 4(Signal) and pin 0 (GND)  with a range of [-1..+1] Volts.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;V_V2 4 0 file /tmp/test.wav jack 0 0 1.0 0&lt;/pre&gt;

&lt;p&gt;
&lt;strong&gt;Syntax:&lt;/strong&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;jack &amp;lt;id&amp;gt; &amp;lt;v_offset&amp;gt; &amp;lt;v_mult&amp;gt; &amp;lt;t_off&amp;gt;
file &amp;lt;filename&amp;gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;&amp;lt;id&amp;gt;&lt;/code&gt; is an integer identifier 0 to 3&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;&amp;lt;v_offset&amp;gt;&lt;/code&gt; is offset added in Volts&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;&amp;lt;v_mult&amp;gt;&lt;/code&gt; is the multiplier when converting sndfile-float [0..1] to volts&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;&amp;lt;t_off&amp;gt;&lt;/code&gt; is a offset in miliseconds added when seeking the sound-file&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; NOTE: The option &lt;code&gt;file&lt;/code&gt; must precede the option &lt;code&gt;jack&lt;/code&gt;.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT130 SECTION &quot;spice syntax&quot; [928-1627] --&gt;
&lt;h2 class=&quot;sectionedit131&quot;&gt;&lt;a name=&quot;txt2snd&quot; id=&quot;txt2snd&quot;&gt;txt2snd&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;code&gt;txt2snd&lt;/code&gt; allows to convert spice output int wav files - it&amp;#039;s yet rather simple but has a built-in help.
&lt;/p&gt;

&lt;p&gt;
It reads 4 tabulator seprarated values per line in the format:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;&amp;lt;idx/int&amp;gt; &amp;lt;time|ms/float&amp;gt; &amp;lt;ignored/float&amp;gt; &amp;lt;value/float&amp;gt;&lt;/pre&gt;

&lt;p&gt;
example:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;11      8.916652e-05    1.846313e-02    -7.477363e-01&lt;/pre&gt;

&lt;p&gt;
this format can easly be generated by SPICE. this example 20 seconds of &lt;code&gt;net 5&lt;/code&gt; will be in written at 48kSPS  
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;.print tran  v(4) v(5)
.tran 2.08333e-05 20.0 0 2.08333e-05
.op&lt;/pre&gt;

&lt;p&gt;
Note: the rounding (spice-milliseconds to audio-sample) is buggy and includes an only sometimes working workaround (use &lt;code&gt;–verbose&lt;/code&gt; to investigate skipped/missing frames).
&lt;/p&gt;

&lt;p&gt;
the following script might come in handy..
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;#!/bin/sh
INFILE=example.netlist
OUTFILE=/tmp/spice.txt
WAVFILE=/tmp/spice.wav
echo &amp;quot;# writing data to $OUTFILE&amp;quot;
ngspice -b $INFILE | awk &amp;#039;BEGIN{go=0;} /^-------------------------------------/{go=1;} /^[0-9]/{if (go==1) print $0;}&amp;#039; &amp;gt; $OUTFILE
echo &amp;quot;# txt to snd&amp;quot;
cat $OUTFILE | txt2snd $WAVFILE
echo &amp;quot;# done.&amp;quot;&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT131 SECTION &quot;txt2snd&quot; [1628-2675] --&gt;
&lt;h1 class=&quot;sectionedit132&quot;&gt;&lt;a name=&quot;example&quot; id=&quot;example&quot;&gt;Example&lt;/a&gt;&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
A complete spice3 example:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;V_V2 1 0 file /tmp/test.wav jack 0 0 1.0 0
R_R1 1 0 1M

.print tran  v(1) v(1)
.tran 2.08333e-05 2.0 0 2.08333e-05
.op
 
.END&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT132 SECTION &quot;Example&quot; [2676-2869] --&gt;
&lt;h1 class=&quot;sectionedit133&quot;&gt;&lt;a name=&quot;references&quot; id=&quot;references&quot;&gt;References&lt;/a&gt;&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://sourceforge.net/project/showfiles.php?group_id=38962&amp;amp;package_id=31152&amp;amp;release_id=352845&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://sourceforge.net/project/showfiles.php?group_id=38962&amp;amp;package_id=31152&amp;amp;release_id=352845&quot;  rel=&quot;nofollow&quot;&gt;spice source&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://www-ti.informatik.uni-tuebingen.de/~bernauer/lehre/ti-1-0506/spice/ngspice.pdf&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://www-ti.informatik.uni-tuebingen.de/~bernauer/lehre/ti-1-0506/spice/ngspice.pdf&quot;  rel=&quot;nofollow&quot;&gt;http://www-ti.informatik.uni-tuebingen.de/~bernauer/lehre/ti-1-0506/spice/ngspice.pdf&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT133 SECTION &quot;References&quot; [2870-] --&gt;&lt;div class=&quot;footnotes&quot;&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__1&quot; id=&quot;fn__1&quot; name=&quot;fn__1&quot; class=&quot;fn_bot&quot;&gt;1)&lt;/a&gt;&lt;/sup&gt; 
simulating 1sec audio of the foxx-effect on my Core-Duo 1.6GHz takes about 4sec&lt;/div&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__2&quot; id=&quot;fn__2&quot; name=&quot;fn__2&quot; class=&quot;fn_bot&quot;&gt;2)&lt;/a&gt;&lt;/sup&gt; 
16-bit signed-int-LE&lt;/div&gt;
&lt;/div&gt;
</description>
        <category>wiki</category>
            <pubDate>Tue, 29 May 2007 02:43:00 +0000</pubDate>
        </item>
        <item>
            <title>ardour</title>
            <link>http://www.gareus.de/wiki/ardour</link>
            <description>
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;http://ardour.org/&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://ardour.org/&quot;  rel=&quot;nofollow&quot;&gt;ardour&lt;/a&gt; is digital audio workstation software. You can use it to record, edit and mix multi-track audio. You can produce your own CDs, mix video soundtracks, or just experiment with new ideas about music and sound.
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;tools:&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://www.gareus.de/oss/xjadeo/xjadeo&quot; class=&quot;wikilink1&quot; title=&quot;oss:xjadeo:xjadeo&quot;&gt;xjadeo&lt;/a&gt; - video player synchronized to ardour via jack-transport.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://www.gareus.de/oss/gjvt/gjvidtimeline&quot; class=&quot;wikilink1&quot; title=&quot;oss:gjvt:gjvidtimeline&quot;&gt;gjvidtimeline&lt;/a&gt; - video timeline, can be &lt;a href=&quot;http://www.gareus.de/oss/gjvt/gjardoursync&quot; class=&quot;wikilink1&quot; title=&quot;oss:gjvt:gjardoursync&quot;&gt;synced to ardour&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
&lt;strong&gt; local resources:&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; {{wiki:ardour-svn1686-ui1024.diff|patch to ardour source} - decrease default font-size for 1024&amp;times;768 &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://www.gareus.de/_media/wiki/ardour2_ui.rc&quot; class=&quot;media mediafile mf_rc&quot; title=&quot;wiki:ardour2_ui.rc&quot;&gt;ardour2_ui.rc&lt;/a&gt; - decreased font-size for 1024&amp;times;768 - resource config file for ardour2&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
</description>
        <category>wiki</category>
            <pubDate>Mon, 09 Apr 2007 15:54:58 +0000</pubDate>
        </item>
    </channel>
</rss>

