<!--{{{-->
<link rel='alternate' type='application/rss+xml' title='RSS' href='index.xml' />
<!--}}}-->
Background: #fff
Foreground: #000
PrimaryPale: #8cf
PrimaryLight: #18f
PrimaryMid: #04b
PrimaryDark: #014
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #eee
TertiaryLight: #ccc
TertiaryMid: #999
TertiaryDark: #666
Error: #f88
/*{{{*/
body {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}

a {color:[[ColorPalette::PrimaryMid]];}
a:hover {background-color:[[ColorPalette::PrimaryMid]]; color:[[ColorPalette::Background]];}
a img {border:0;}

h1,h2,h3,h4,h5,h6 {color:[[ColorPalette::SecondaryDark]]; background:transparent;}
h1 {border-bottom:2px solid [[ColorPalette::TertiaryLight]];}
h2,h3 {border-bottom:1px solid [[ColorPalette::TertiaryLight]];}

.button {color:[[ColorPalette::PrimaryDark]]; border:1px solid [[ColorPalette::Background]];}
.button:hover {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::SecondaryLight]]; border-color:[[ColorPalette::SecondaryMid]];}
.button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::SecondaryDark]];}

.header {background:[[ColorPalette::PrimaryMid]];}
.headerShadow {color:[[ColorPalette::Foreground]];}
.headerShadow a {font-weight:normal; color:[[ColorPalette::Foreground]];}
.headerForeground {color:[[ColorPalette::Background]];}
.headerForeground a {font-weight:normal; color:[[ColorPalette::PrimaryPale]];}

.tabSelected{color:[[ColorPalette::PrimaryDark]];
	background:[[ColorPalette::TertiaryPale]];
	border-left:1px solid [[ColorPalette::TertiaryLight]];
	border-top:1px solid [[ColorPalette::TertiaryLight]];
	border-right:1px solid [[ColorPalette::TertiaryLight]];
}
.tabUnselected {color:[[ColorPalette::Background]]; background:[[ColorPalette::TertiaryMid]];}
.tabContents {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::TertiaryPale]]; border:1px solid [[ColorPalette::TertiaryLight]];}
.tabContents .button {border:0;}

#sidebar {}
#sidebarOptions input {border:1px solid [[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel {background:[[ColorPalette::PrimaryPale]];}
#sidebarOptions .sliderPanel a {border:none;color:[[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel a:hover {color:[[ColorPalette::Background]]; background:[[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel a:active {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::Background]];}

.wizard {background:[[ColorPalette::PrimaryPale]]; border:1px solid [[ColorPalette::PrimaryMid]];}
.wizard h1 {color:[[ColorPalette::PrimaryDark]]; border:none;}
.wizard h2 {color:[[ColorPalette::Foreground]]; border:none;}
.wizardStep {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];
	border:1px solid [[ColorPalette::PrimaryMid]];}
.wizardStep.wizardStepDone {background:[[ColorPalette::TertiaryLight]];}
.wizardFooter {background:[[ColorPalette::PrimaryPale]];}
.wizardFooter .status {background:[[ColorPalette::PrimaryDark]]; color:[[ColorPalette::Background]];}
.wizard .button {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryLight]]; border: 1px solid;
	border-color:[[ColorPalette::SecondaryPale]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryPale]];}
.wizard .button:hover {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Background]];}
.wizard .button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::Foreground]]; border: 1px solid;
	border-color:[[ColorPalette::PrimaryDark]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryDark]];}

.wizard .notChanged {background:transparent;}
.wizard .changedLocally {background:#80ff80;}
.wizard .changedServer {background:#8080ff;}
.wizard .changedBoth {background:#ff8080;}
.wizard .notFound {background:#ffff80;}
.wizard .putToServer {background:#ff80ff;}
.wizard .gotFromServer {background:#80ffff;}

#messageArea {border:1px solid [[ColorPalette::SecondaryMid]]; background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]];}
#messageArea .button {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::SecondaryPale]]; border:none;}

.popupTiddler {background:[[ColorPalette::TertiaryPale]]; border:2px solid [[ColorPalette::TertiaryMid]];}

.popup {background:[[ColorPalette::TertiaryPale]]; color:[[ColorPalette::TertiaryDark]]; border-left:1px solid [[ColorPalette::TertiaryMid]]; border-top:1px solid [[ColorPalette::TertiaryMid]]; border-right:2px solid [[ColorPalette::TertiaryDark]]; border-bottom:2px solid [[ColorPalette::TertiaryDark]];}
.popup hr {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::PrimaryDark]]; border-bottom:1px;}
.popup li.disabled {color:[[ColorPalette::TertiaryMid]];}
.popup li a, .popup li a:visited {color:[[ColorPalette::Foreground]]; border: none;}
.popup li a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border: none;}
.popup li a:active {background:[[ColorPalette::SecondaryPale]]; color:[[ColorPalette::Foreground]]; border: none;}
.popupHighlight {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
.listBreak div {border-bottom:1px solid [[ColorPalette::TertiaryDark]];}

.tiddler .defaultCommand {font-weight:bold;}

.shadow .title {color:[[ColorPalette::TertiaryDark]];}

.title {color:[[ColorPalette::SecondaryDark]];}
.subtitle {color:[[ColorPalette::TertiaryDark]];}

.toolbar {color:[[ColorPalette::PrimaryMid]];}
.toolbar a {color:[[ColorPalette::TertiaryLight]];}
.selected .toolbar a {color:[[ColorPalette::TertiaryMid]];}
.selected .toolbar a:hover {color:[[ColorPalette::Foreground]];}

.tagging, .tagged {border:1px solid [[ColorPalette::TertiaryPale]]; background-color:[[ColorPalette::TertiaryPale]];}
.selected .tagging, .selected .tagged {background-color:[[ColorPalette::TertiaryLight]]; border:1px solid [[ColorPalette::TertiaryMid]];}
.tagging .listTitle, .tagged .listTitle {color:[[ColorPalette::PrimaryDark]];}
.tagging .button, .tagged .button {border:none;}

.footer {color:[[ColorPalette::TertiaryLight]];}
.selected .footer {color:[[ColorPalette::TertiaryMid]];}

.sparkline {background:[[ColorPalette::PrimaryPale]]; border:0;}
.sparktick {background:[[ColorPalette::PrimaryDark]];}

.error, .errorButton {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Error]];}
.warning {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryPale]];}
.lowlight {background:[[ColorPalette::TertiaryLight]];}

.zoomer {background:none; color:[[ColorPalette::TertiaryMid]]; border:3px solid [[ColorPalette::TertiaryMid]];}

.imageLink, #displayArea .imageLink {background:transparent;}

.annotation {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border:2px solid [[ColorPalette::SecondaryMid]];}

.viewer .listTitle {list-style-type:none; margin-left:-2em;}
.viewer .button {border:1px solid [[ColorPalette::SecondaryMid]];}
.viewer blockquote {border-left:3px solid [[ColorPalette::TertiaryDark]];}

.viewer table, table.twtable {border:2px solid [[ColorPalette::TertiaryDark]];}
.viewer th, .viewer thead td, .twtable th, .twtable thead td {background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::Background]];}
.viewer td, .viewer tr, .twtable td, .twtable tr {border:1px solid [[ColorPalette::TertiaryDark]];}

.viewer pre {border:1px solid [[ColorPalette::SecondaryLight]]; background:[[ColorPalette::SecondaryPale]];}
.viewer code {color:[[ColorPalette::SecondaryDark]];}
.viewer hr {border:0; border-top:dashed 1px [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::TertiaryDark]];}

.highlight, .marked {background:[[ColorPalette::SecondaryLight]];}

.editor input {border:1px solid [[ColorPalette::PrimaryMid]];}
.editor textarea {border:1px solid [[ColorPalette::PrimaryMid]]; width:100%;}
.editorFooter {color:[[ColorPalette::TertiaryMid]];}

#backstageArea {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::TertiaryMid]];}
#backstageArea a {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;}
#backstageArea a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; }
#backstageArea a.backstageSelTab {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
#backstageButton a {background:none; color:[[ColorPalette::Background]]; border:none;}
#backstageButton a:hover {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;}
#backstagePanel {background:[[ColorPalette::Background]]; border-color: [[ColorPalette::Background]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]];}
.backstagePanelFooter .button {border:none; color:[[ColorPalette::Background]];}
.backstagePanelFooter .button:hover {color:[[ColorPalette::Foreground]];}
#backstageCloak {background:[[ColorPalette::Foreground]]; opacity:0.6; filter:'alpha(opacity=60)';}
/*}}}*/
/*{{{*/
* html .tiddler {height:1%;}

body {font-size:.75em; font-family:arial,helvetica; margin:0; padding:0;}

h1,h2,h3,h4,h5,h6 {font-weight:bold; text-decoration:none;}
h1,h2,h3 {padding-bottom:1px; margin-top:1.2em;margin-bottom:0.3em;}
h4,h5,h6 {margin-top:1em;}
h1 {font-size:1.35em;}
h2 {font-size:1.25em;}
h3 {font-size:1.1em;}
h4 {font-size:1em;}
h5 {font-size:.9em;}

hr {height:1px;}

a {text-decoration:none;}

dt {font-weight:bold;}

ol {list-style-type:decimal;}
ol ol {list-style-type:lower-alpha;}
ol ol ol {list-style-type:lower-roman;}
ol ol ol ol {list-style-type:decimal;}
ol ol ol ol ol {list-style-type:lower-alpha;}
ol ol ol ol ol ol {list-style-type:lower-roman;}
ol ol ol ol ol ol ol {list-style-type:decimal;}

.txtOptionInput {width:11em;}

#contentWrapper .chkOptionInput {border:0;}

.externalLink {text-decoration:underline;}

.indent {margin-left:3em;}
.outdent {margin-left:3em; text-indent:-3em;}
code.escaped {white-space:nowrap;}

.tiddlyLinkExisting {font-weight:bold;}
.tiddlyLinkNonExisting {font-style:italic;}

/* the 'a' is required for IE, otherwise it renders the whole tiddler in bold */
a.tiddlyLinkNonExisting.shadow {font-weight:bold;}

#mainMenu .tiddlyLinkExisting,
	#mainMenu .tiddlyLinkNonExisting,
	#sidebarTabs .tiddlyLinkNonExisting {font-weight:normal; font-style:normal;}
#sidebarTabs .tiddlyLinkExisting {font-weight:bold; font-style:normal;}

.header {position:relative;}
.header a:hover {background:transparent;}
.headerShadow {position:relative; padding:4.5em 0 1em 1em; left:-1px; top:-1px;}
.headerForeground {position:absolute; padding:4.5em 0 1em 1em; left:0px; top:0px;}

.siteTitle {font-size:3em;}
.siteSubtitle {font-size:1.2em;}

#mainMenu {position:absolute; left:0; width:10em; text-align:right; line-height:1.6em; padding:1.5em 0.5em 0.5em 0.5em; font-size:1.1em;}

#sidebar {position:absolute; right:3px; width:16em; font-size:.9em;}
#sidebarOptions {padding-top:0.3em;}
#sidebarOptions a {margin:0 0.2em; padding:0.2em 0.3em; display:block;}
#sidebarOptions input {margin:0.4em 0.5em;}
#sidebarOptions .sliderPanel {margin-left:1em; padding:0.5em; font-size:.85em;}
#sidebarOptions .sliderPanel a {font-weight:bold; display:inline; padding:0;}
#sidebarOptions .sliderPanel input {margin:0 0 0.3em 0;}
#sidebarTabs .tabContents {width:15em; overflow:hidden;}

.wizard {padding:0.1em 1em 0 2em;}
.wizard h1 {font-size:2em; font-weight:bold; background:none; padding:0; margin:0.4em 0 0.2em;}
.wizard h2 {font-size:1.2em; font-weight:bold; background:none; padding:0; margin:0.4em 0 0.2em;}
.wizardStep {padding:1em 1em 1em 1em;}
.wizard .button {margin:0.5em 0 0; font-size:1.2em;}
.wizardFooter {padding:0.8em 0.4em 0.8em 0;}
.wizardFooter .status {padding:0 0.4em; margin-left:1em;}
.wizard .button {padding:0.1em 0.2em;}

#messageArea {position:fixed; top:2em; right:0; margin:0.5em; padding:0.5em; z-index:2000; _position:absolute;}
.messageToolbar {display:block; text-align:right; padding:0.2em;}
#messageArea a {text-decoration:underline;}

.tiddlerPopupButton {padding:0.2em;}
.popupTiddler {position: absolute; z-index:300; padding:1em; margin:0;}

.popup {position:absolute; z-index:300; font-size:.9em; padding:0; list-style:none; margin:0;}
.popup .popupMessage {padding:0.4em;}
.popup hr {display:block; height:1px; width:auto; padding:0; margin:0.2em 0;}
.popup li.disabled {padding:0.4em;}
.popup li a {display:block; padding:0.4em; font-weight:normal; cursor:pointer;}
.listBreak {font-size:1px; line-height:1px;}
.listBreak div {margin:2px 0;}

.tabset {padding:1em 0 0 0.5em;}
.tab {margin:0 0 0 0.25em; padding:2px;}
.tabContents {padding:0.5em;}
.tabContents ul, .tabContents ol {margin:0; padding:0;}
.txtMainTab .tabContents li {list-style:none;}
.tabContents li.listLink { margin-left:.75em;}

#contentWrapper {display:block;}
#splashScreen {display:none;}

#displayArea {margin:1em 17em 0 14em;}

.toolbar {text-align:right; font-size:.9em;}

.tiddler {padding:1em 1em 0;}

.missing .viewer,.missing .title {font-style:italic;}

.title {font-size:1.6em; font-weight:bold;}

.missing .subtitle {display:none;}
.subtitle {font-size:1.1em;}

.tiddler .button {padding:0.2em 0.4em;}

.tagging {margin:0.5em 0.5em 0.5em 0; float:left; display:none;}
.isTag .tagging {display:block;}
.tagged {margin:0.5em; float:right;}
.tagging, .tagged {font-size:0.9em; padding:0.25em;}
.tagging ul, .tagged ul {list-style:none; margin:0.25em; padding:0;}
.tagClear {clear:both;}

.footer {font-size:.9em;}
.footer li {display:inline;}

.annotation {padding:0.5em; margin:0.5em;}

* html .viewer pre {width:99%; padding:0 0 1em 0;}
.viewer {line-height:1.4em; padding-top:0.5em;}
.viewer .button {margin:0 0.25em; padding:0 0.25em;}
.viewer blockquote {line-height:1.5em; padding-left:0.8em;margin-left:2.5em;}
.viewer ul, .viewer ol {margin-left:0.5em; padding-left:1.5em;}

.viewer table, table.twtable {border-collapse:collapse; margin:0.8em 1.0em;}
.viewer th, .viewer td, .viewer tr,.viewer caption,.twtable th, .twtable td, .twtable tr,.twtable caption {padding:3px;}
table.listView {font-size:0.85em; margin:0.8em 1.0em;}
table.listView th, table.listView td, table.listView tr {padding:0px 3px 0px 3px;}

.viewer pre {padding:0.5em; margin-left:0.5em; font-size:1.2em; line-height:1.4em; overflow:auto;}
.viewer code {font-size:1.2em; line-height:1.4em;}

.editor {font-size:1.1em;}
.editor input, .editor textarea {display:block; width:100%; font:inherit;}
.editorFooter {padding:0.25em 0; font-size:.9em;}
.editorFooter .button {padding-top:0px; padding-bottom:0px;}

.fieldsetFix {border:0; padding:0; margin:1px 0px;}

.sparkline {line-height:1em;}
.sparktick {outline:0;}

.zoomer {font-size:1.1em; position:absolute; overflow:hidden;}
.zoomer div {padding:1em;}

* html #backstage {width:99%;}
* html #backstageArea {width:99%;}
#backstageArea {display:none; position:relative; overflow: hidden; z-index:150; padding:0.3em 0.5em;}
#backstageToolbar {position:relative;}
#backstageArea a {font-weight:bold; margin-left:0.5em; padding:0.3em 0.5em;}
#backstageButton {display:none; position:absolute; z-index:175; top:0; right:0;}
#backstageButton a {padding:0.1em 0.4em; margin:0.1em;}
#backstage {position:relative; width:100%; z-index:50;}
#backstagePanel {display:none; z-index:100; position:absolute; width:90%; margin-left:3em; padding:1em;}
.backstagePanelFooter {padding-top:0.2em; float:right;}
.backstagePanelFooter a {padding:0.2em 0.4em;}
#backstageCloak {display:none; z-index:20; position:absolute; width:100%; height:100px;}

.whenBackstage {display:none;}
.backstageVisible .whenBackstage {display:block;}
/*}}}*/
/***
StyleSheet for use when a translation requires any css style changes.
This StyleSheet can be used directly by languages such as Chinese, Japanese and Korean which need larger font sizes.
***/
/*{{{*/
body {font-size:0.8em;}
#sidebarOptions {font-size:1.05em;}
#sidebarOptions a {font-style:normal;}
#sidebarOptions .sliderPanel {font-size:0.95em;}
.subtitle {font-size:0.8em;}
.viewer table.listView {font-size:0.95em;}
/*}}}*/
/*{{{*/
@media print {
#mainMenu, #sidebar, #messageArea, .toolbar, #backstageButton, #backstageArea {display: none !important;}
#displayArea {margin: 1em 1em 0em;}
noscript {display:none;} /* Fixes a feature in Firefox 1.5.0.2 where print preview displays the noscript content */
}
/*}}}*/
<!--{{{-->
<div class='header' macro='gradient vert [[ColorPalette::PrimaryLight]] [[ColorPalette::PrimaryMid]]'>
<div class='headerShadow'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
<div class='headerForeground'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
</div>
<div id='mainMenu' refresh='content' tiddler='MainMenu'></div>
<div id='sidebar'>
<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>
<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>
</div>
<div id='displayArea'>
<div id='messageArea'></div>
<div id='tiddlerDisplay'></div>
</div>
<!--}}}-->
<!--{{{-->
<div class='toolbar' macro='toolbar [[ToolbarCommands::ViewToolbar]]'></div>
<div class='title' macro='view title'></div>
<div class='subtitle'><span macro='view modifier link'></span>, <span macro='view modified date'></span> (<span macro='message views.wikified.createdPrompt'></span> <span macro='view created date'></span>)</div>
<div class='tagging' macro='tagging'></div>
<div class='tagged' macro='tags'></div>
<div class='viewer' macro='view text wikified'></div>
<div class='tagClear'></div>
<!--}}}-->
<!--{{{-->
<div class='toolbar' macro='toolbar [[ToolbarCommands::EditToolbar]]'></div>
<div class='title' macro='view title'></div>
<div class='editor' macro='edit title'></div>
<div macro='annotations'></div>
<div class='editor' macro='edit text'></div>
<div class='editor' macro='edit tags'></div><div class='editorFooter'><span macro='message views.editor.tagPrompt'></span><span macro='tagChooser excludeLists'></span></div>
<!--}}}-->
To get started with this blank [[TiddlyWiki]], you'll need to modify the following tiddlers:
* [[SiteTitle]] & [[SiteSubtitle]]: The title and subtitle of the site, as shown above (after saving, they will also appear in the browser title bar)
* [[MainMenu]]: The menu (usually on the left)
* [[DefaultTiddlers]]: Contains the names of the tiddlers that you want to appear when the TiddlyWiki is opened
You'll also need to enter your username for signing your edits: <<option txtUserName>>
These [[InterfaceOptions]] for customising [[TiddlyWiki]] are saved in your browser

Your username for signing your edits. Write it as a [[WikiWord]] (eg [[JoeBloggs]])

<<option txtUserName>>
<<option chkSaveBackups>> [[SaveBackups]]
<<option chkAutoSave>> [[AutoSave]]
<<option chkRegExpSearch>> [[RegExpSearch]]
<<option chkCaseSensitiveSearch>> [[CaseSensitiveSearch]]
<<option chkAnimate>> [[EnableAnimations]]

----
Also see [[AdvancedOptions]]
<<importTiddlers>>
For my EOF exercise I decided to use Sea Surface High data from the [[AVISO|http://www.aviso.oceanobs.com/]] group. This is the area I chose. The time span are from 1992-2008.

[img[http://i2.ytimg.com/vi/Ugyahst_3R8/default.jpg][http://www.youtube.com/watch?v=Ugyahst_3R8]]

This second video was just for fun:
[img[http://i3.ytimg.com/vi/Jaf2MjJ5tg0/default.jpg][http://www.youtube.com/watch?v=Jaf2MjJ5tg0]]
The rotating table is an essential tool to teach GFD. It should be mandatory to all oceanography courses to have one.
Here is the first time I played with it:

{{{https://wikis.mit.edu/confluence/display/PAOCLABG/Balanced+Motion+-+Valve+(UMassD)}}}

Here are scripts to play with real Hurricane data:

[[my_qscathurr.m]]

For the video click: 
[img[http://i2.ytimg.com/vi/MqX_UVhTVK8/default.jpg][http://www.youtube.com/watch?v=MqX_UVhTVK8]]
BCL rule 1: There are no rules, they are more like guidelines;
BCL rule 2: Do not say that this is your code, it is probably not even mine, I usually just copy-and-pasted from [[Google Code search|http://www.google.com/codesearch?hl=en]];
BCL rule 3: If you make some money using any code from here and find yourself grateful, buy me a  [[Beer|http://www.guinness.com]]

[img[http://img218.imageshack.us/img218/5669/180pxcopyleftsvg.png][Bro-Code]]

The Bro-Code is in compliance with [[copyleft|http://en.wikipedia.org/wiki/Copyleft]] licensing. Because Coriolis deflect to the left in South America!
Sure it is nice to have both DOI and URL in the references list. There are several nice templates to do it. Although, sometimes we want our references without the DOI and URL. What is surprising is that I could not find a clean bibtex style template (bst) ! Therefore I made mine:

[[ametsoc_clean.bst|http://www.mediafire.com/?zyckym3hnmt]]

It is based on the http://www.ametsoc.org/ rules.
Background: #fff
Foreground: #000
PrimaryPale: #fff
PrimaryLight: #006600
PrimaryMid: #003300
PrimaryDark: #014
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #eee
TertiaryLight: #ccc
TertiaryMid: #999
TertiaryDark: #666
Error: #f88
{{{
// CustomTracker as a namespace for tracking related functions
var CustomTracker = {
// store a reference to the original displayTiddler function
displayTiddler: story.displayTiddler
};

CustomTracker.track = function() {
if (readOnly) {
pageTracker._trackPageview.apply(this, arguments);
}
};

CustomTracker.trackAndDisplayTiddler = function(srcElement, titles) {
// log with the tracker
CustomTracker.track('/' + titles);
// call the original displayTiddler function
CustomTracker.displayTiddler.apply(this,arguments);
};

// replace the default displayTiddler function with a tracking version
story.displayTiddler = CustomTracker.trackAndDisplayTiddler;

// Call once for the initial page load
CustomTracker.track();
}}}
[[Fancy Techniques]]
[[Statistics]]
<<tabs tabsClass
[[Rotating Table]] "Rotating Table" [[Rotating Table]]
[[Data Analysis]] "Data Analysis" [[Data Analysis]]
[[Videos]] "Youtube" [[Videos]]
>>
[[Welcome]]
The Effective Degrees of Freedom are preferred instead of just the time series length. However, I never really got a "significant difference" using it. Anyways, it is a simple computation that will make your computations more reliable (and avoid problem with reviewers).

$$N^*=\displaystyle\frac{N}{\displaystyle\sum^{\infty}_{\tau=-\infty}\rho_{xx}(\tau)\rho_{yy}(\tau)+\rho_{xy}(\tau)\rho_{yx}(\tau)}$$
[[funcoeszz|http://funcoeszz.net/]] &rarr; Shell Swiss Army Knife !!!

[[Kdocker]]  &rarr; Dock anything

[[Portable Apps|http://portableapps.com/]]  &rarr; a life saver in a ~PenDrive

[[Kbibtex]] &rarr; bibliographic references

[[OpenOffice]] &rarr; Addons

[[Winetricks|http://winezeug.googlecode.com/svn/trunk/winetricks]]  &rarr; Easy Wine

[[VirtualBox]] &rarr; Alternative to Qemu and ~VMWare
A professor once told me:

"If it is not in your raw data there is no fancy analysis to prove it!" [[Dr. Steven F. DiMarco|http://oceanography.tamu.edu/Directory/Faculty/Phys/dimarco.html]]

It is somehow similar (although more honest)  to:

"I have learned the following rule to be useful when dealing with advanced methods. Such methods are often needed to find a signal in a vast noisy space, i.e. the needle in the haystack. But after having the needle in our hand, we should be able to identify the needle by simply looking at it. Whenever you are unable to do so there is a good chance that something is rotten in the analysis" 

from Storch and Navarra: http://andvari.vedur.is/~halldor/TEXT/eofsvd.html
1 &rarr; copy the ttf files to /usr/share/fonts
2 &rarr; run /usr/sbin/fonts-config
3 &rarr; for MS fonts just run fetchmsttfonts.sh
These 3 animation were made with data from the monthly SST for the Pacific from the Reynolds ~SST product from the Climate Analysis Center (CAC). They show respectively the full SST without any filtering , the seasonal cycle only, and the anomalies (Full SST - Seasonal cycle). The are good to present together the EOF decomposition of this data set.

[img[http://i3.ytimg.com/vi/RUNzSA-f7aQ/default.jpg][http://www.youtube.com/watch?v=RUNzSA-f7aQ]] [img[http://i1.ytimg.com/vi/TvgKJkOj5-4/default.jpg][http://www.youtube.com/watch?v=TvgKJkOj5-4]] [img[http://i2.ytimg.com/vi/-BhatVL-d78/default.jpg][http://www.youtube.com/watch?v=-BhatVL-d78]]

ps: Pay attention to the ENSO signal at the first and third animation.
Type these at the Matlab prompt:

{{{
version('-release')
spy
why
tic
toc
bench
phone
penny
}}}
This bibtex file create links for your citations to Google Scholar or the if available DOI.

[[ametsoc_google.bst|http://www.mediafire.com/?znjktx322hr]]

Just add this to the Tex file:
{{{
% make links for urls (DOI and google scholar)
\usepackage[bookmarks=false,citecolor=blue,colorlinks=true,urlcolor={blue},linkcolor={blue},pdfstartview={XYZ null null 1.22}]{hyperref}
}}}
Today's learning something new is my first Google earth animation plot made directly from Matlab.

Toolbox used: http://code.google.com/p/googleearthtoolbox/
Data used: http://opendap.aviso.oceanobs.com/thredds/dodsC/dt_upd_global_merged_madt_h

Here is el niño (I mean the kmz file):
http://www.mediafire.com/?sharekey=dc028ed0d067e018c79b87b207592a1ce04e75f6e8ebb871

I know, imagesc.m sucks for low resolution, I'll make a new one using pcolor.m soon.
http://turner.faculty.swau.edu/webstuff/htmlsymbols.html
[[NetCDF4+NCO]]

[[local svn repo]]

[[recover root password]]

[[Fonts on OpenSuse]]

[[resize a VDI]]
version.extensions.InlineJavascriptPlugin= {major: 1, minor: 9, revision: 5, date: new Date(2009,4,11)};

config.formatters.push( {
        name: "inlineJavascript",
        match: "\\<script",      
        lookahead: "\\<script(?: src=\\\"((?:.|\\n)*?)\\\")?(?: label=\\\"((?:.|\\n)*?)\\\")?(?: title=\\\"((?:.|\\n)*?)\\\")?(?: key=\\\"((?:.|\\n)*?)\\\")?( show)?\
\>((?:.|\\n)*?)\\</script\\>",                                                                                                                                        

        handler: function(w) {
                var lookaheadRegExp = new RegExp(this.lookahead,"mg");
                lookaheadRegExp.lastIndex = w.matchStart;             
                var lookaheadMatch = lookaheadRegExp.exec(w.source)   
                if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
                        var src=lookaheadMatch[1];                          
                        var label=lookaheadMatch[2];                        
                        var tip=lookaheadMatch[3];                          
                        var key=lookaheadMatch[4];                          
                        var show=lookaheadMatch[5];                         
                        var code=lookaheadMatch[6];                         
                        if (src) { // external script library               
                                var script = document.createElement("script"); script.src = src;
                                document.body.appendChild(script); document.body.removeChild(script);
                        }                                                                            
                        if (code) { // inline code                                                   
                                if (show) // display source in tiddler                               
                                        wikify("{{{\n"+lookaheadMatch[0]+"\n}}}\n",w.output);        
                                if (label) { // create 'onclick' command link
                                        var link=createTiddlyElement(w.output,"a",null,"tiddlyLinkExisting",wikifyPlainText(label));
                                        var fixup=code.replace(/document.write\s*\(/gi,'place.bufferedHTML+=(');
                                        link.code="function _out(place,tiddler){"+fixup+"\n};_out(this,this.tiddler);"
                                        link.tiddler=w.tiddler;
                                        link.onclick=function(){
                                                this.bufferedHTML="";
                                                try{ var r=eval(this.code);
                                                        if(this.bufferedHTML.length || (typeof(r)==="string")&&r.length)
                                                                var s=this.parentNode.insertBefore(document.createElement("span"),this.nextSibling);
                                                        if(this.bufferedHTML.length)
                                                                s.innerHTML=this.bufferedHTML;
                                                        if((typeof(r)==="string")&&r.length) {
                                                                wikify(r,s,null,this.tiddler);
                                                                return false;
                                                        } else return r!==undefined?r:false;
                                                } catch(e){alert(e.description||e.toString());return false;}
                                        };
                                        link.setAttribute("title",tip||"");
                                        var URIcode='javascript:void(eval(decodeURIComponent(%22(function(){try{';
                                        URIcode+=encodeURIComponent(encodeURIComponent(code.replace(/\n/g,' ')));
                                        URIcode+='}catch(e){alert(e.description||e.toString())}})()%22)))';
                                        link.setAttribute("href",URIcode);
                                        link.style.cursor="pointer";
                                        if (key) link.accessKey=key.substr(0,1); // single character only
                                }
                                else { // run script immediately
                                        var fixup=code.replace(/document.write\s*\(/gi,'place.innerHTML+=(');
                                        var c="function _out(place,tiddler){"+fixup+"\n};_out(w.output,w.tiddler);";
                                        try      { var out=eval(c); }
                                        catch(e) { out=e.description?e.description:e.toString(); }
                                        if (out && out.length) wikify(out,w.output,w.highlightRegExp,w.tiddler);
                                }
                        }
                        w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;
                }
        }
} )
These 3 simulations are done with a [[Matlab]] code provided in [[Cushman-Roisin's|http://engineering.dartmouth.edu/~cushman/books/GFD.html]] new book.

The first and second show a symmetric and a symmetric jets respectively They do not (should not) progate along channel. The third one is the Bickley jet, this one create a train on propagating waves.

Symmetric, Asymmetric and Bickley  [[Jet instability]] 
[img[http://i2.ytimg.com/vi/iMegq3MIDyo/default.jpg][http://www.youtube.com/watch?v=iMegq3MIDyo]] [img[http://i3.ytimg.com/vi/VA3RUSgkOqU/default.jpg][http://www.youtube.com/watch?v=VA3RUSgkOqU]] [img[http://i1.ytimg.com/vi/T7rFiGjHBX4/default.jpg][http://www.youtube.com/watch?v=T7rFiGjHBX4]]
[[kbibtex|http://www.unix-ag.uni-kl.de/~fischer/kbibtex/]]  &rarr; this sure helps to keep the mess organized!

There are lots of nice features like on-line search and batch editing.

here is my [[bib|http://www.mediafire.com/?sharekey=dc028ed0d067e018c79b87b207592a1ce04e75f6e8ebb871]] file
I use:

kdocker -m -i /home/filipe/Documents/themes/icons/firefox_dock.png firefox %u
kdocker -m -i /home/filipe/Documents/themes/icons/thunderbird_dock.png thunderbird

http://kdocker.sourceforge.net/
<<tabs tabsClass
[[bibtex]] "Bibtex" [[bibtex]]
[[latex]] "Bibtex" [[latex]]
[[web]] "HTML" [[web]]
[[TiddlyWiki]] "TiddlyWiki" [[TiddlyWiki]]>>
{{{
tabsym = sym(table);   % convert to symbolic
tabsym = vpa(tab1,3);  % numerical precision
tabtex  = latex(tab1); % convert to latex
}}}
http://pong.tamu.edu/~rob/blog/ &rarr; info for Mac users

http://rsignell.tiddlyspot.com/ &rarr; more info

http://los.io.usp.br/ &rarr; Satellite Oceanography Lab at IOUSP

http://lado.io.usp.br/pt/ &rarr; Ocean Dynamics Lab at IOUSP

http://filipenotebook.tiddlyspot.com/ &rarr; my research Open Notebook

http://remembrance.tiddlyspot.com/ &rarr; my wife's Open Notebook

http://juefi.tiddlyspot.com/ &rarr; all work and no play...
//Contrary to popular belief, Unix is user friendly. It just happens to be very selective about who to make friends with.//

<<tabs tabsClass
[[Software]] "softwares" [[Software]]
[[Scripts]] "Scripts" [[Scripts]]
[[How2s]] "How to ..." [[How2s]]>>

//May the source be with you//
/***
|''Name:''|LoadRemoteFileThroughProxy (previous LoadRemoteFileHijack)|
|''Description:''|When the TiddlyWiki file is located on the web (view over http) the content of [[SiteProxy]] tiddler is added in front of the file url. If [[SiteProxy]] does not exist "/proxy/" is added. |
|''Version:''|1.1.0|
|''Date:''|mar 17, 2007|
|''Source:''|http://tiddlywiki.bidix.info/#LoadRemoteFileHijack|
|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
|''~CoreVersion:''|2.2.0|
***/
//{{{
version.extensions.LoadRemoteFileThroughProxy = {
 major: 1, minor: 1, revision: 0, 
 date: new Date("mar 17, 2007"), 
 source: "http://tiddlywiki.bidix.info/#LoadRemoteFileThroughProxy"};

if (!window.bidix) window.bidix = {}; // bidix namespace
if (!bidix.core) bidix.core = {};

bidix.core.loadRemoteFile = loadRemoteFile;
loadRemoteFile = function(url,callback,params)
{
 if ((document.location.toString().substr(0,4) == "http") && (url.substr(0,4) == "http")){ 
 url = store.getTiddlerText("SiteProxy", "/proxy/") + url;
 }
 return bidix.core.loadRemoteFile(url,callback,params);
}
//}}}
[[Matlab-Python]]
[[Linux-Shell]]
[[Data-Analysis-GFD]]
[[Latex-TiddlyWiki]]
[[Links]]
<<tiddler ToggleRightSidebar>>
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
try {
var pageTracker = _gat._getTracker("UA-9133259-2");
pageTracker._trackPageview();
} catch(err) {}</script>
Some functions/scripts are my own whereas others are contribution from other nice Matlab users that share their stuff too. However, if you are using a file from here please follow the rules of the BCL (A.K.A. [[Bro-Code]] License).

<<tabs tabsClass
[[scripts]] "matlab scripts" [[scripts]]
[[tricks]] "tricks" [[tricks]]
[[toolboxes]] "toolboxes" [[toolboxes]]
[[python]] "python" [[python]]>>

Subversion repository at Google codes:

Matlab toolbox project:
{{{svn checkout http://ocefpaf-matlab.googlecode.com/svn/trunk/ ocefpaf-matlab-read-only}}}

Python scripts:
{{{svn checkout http://ocefpaf-python.googlecode.com/svn/trunk/ ocefpaf-python-read-only}}}
These are simple steps to add Opendap capabilities to your Matlab without the hassle of compiling mex-files for netcdf nor loaddap.m dependencies.

1) download the Java interface:

ftp://ftp.unidata.ucar.edu/pub/netcdf-java/v4.1.1/netcdfAll-4.1.1.jar

2) Add netcdfAll-4.1.1.jar to your Matlab java path in a startup.m. If you do not have a user defined startup.m you can create one and add it to Matlab path.

{{{
% Start SNCTOOLS with java OpenDap
javaaddpath('/home/users/mymatlab/netcdfAll-4.1.1.jar','-end');
setpref ( 'SNCTOOLS', 'USE_JAVA', true );
}}}

3) The Java "raw" interface is not very friendly. However, SNCTOOLS toolbox uses the Java interface and translate to an easier Matlab command. It comes with netcdf toolbox and the mexnc. To download SNCTOOLS:

http://mexcdf.sourceforge.net/downloads/

For netcdf-4 use this branch:

{{{
svn co https://mexcdf.svn.sourceforge.net/svnroot/mexcdf/snctools/branches/nc4/ snctools
}}}

4) Add SNCTOOLS to Matlab path and you are done! SNCTOOLS is smart enough to use as default the newest Matlab 2009a netcdf interface, when available, or the mexnc interface. For the Java interface we still need to add the option:

{{{
setpref ( 'SNCTOOLS', 'USE_JAVA', true );
}}}

I use that inside my Matlab startup.m file, but instead you might choose to place it on the individual Matlab scripts to avoid changing SNCTOOLS default.

Here is an example on how to download ~OpenDap data directly into Matlab:

{{{
% url for Sea Surface Height derive velocities from AVISO :
url='http://opendap.aviso.oceanobs.com/thredds/dodsC/dt_upd_global_merged_madt_uv';

% data info (work on files or urls)
nc_dump(url)

% get some data
lon=nc_varget(url,'NbLongitudes',[ilonmin],[Nblon]);
lat=nc_varget(url,'NbLatitudes',[ilatmin],[Nblat]);
u=nc_varget(url,'Grid_0001',[itime ilonmin ilatmin],[Nbtime Nblon Nblat]);
v=nc_varget(url,'Grid_0002',[itime ilonmin ilatmin],[Nbtime Nblon Nblat]);
}}}

Where:
* {{{NbLongitudes}}}, {{{NbLatitudes}}}, {{{Grid_0001}}} and {{{Grid_0002}}} are variables names from the data set, you can check with the nc_dump.
* {{{itime}}}, {{{ilonmin}}}, {{{ilatmin}}} are the initial values for time, lon and lat that you want to get.
* {{{Nbtime}}}, {{{Nblon}}}, {{{Nblat}}} are the "stride" or "distance" from the initial number of points (similar to FORTRAN indexation). To decided these values we have to know the dt,dx,dy of each data set. Again this information can be found with nc_dump.
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>~/mayavi_says_hi.py.html</title>
<meta name="Generator" content="Vim/7.3">
<meta name="plugin-version" content="vim7.3_v6">
<meta name="syntax" content="python">
<meta name="settings" content="use_css">
<style type="text/css">
<!--
pre { font-family: monospace; color: #000000; background-color: #ffffff; }
body { font-family: monospace; color: #000000; background-color: #ffffff; }
.Comment { color: #0000ff; }
.Identifier { color: #008b8b; }
.Constant { color: #ff00ff; }
.Statement { color: #a52a2a; font-weight: bold; }
.PreProc { color: #a020f0; }
-->
</style>
</head>
<body>
<pre>
<span class="PreProc">import</span> numpy <span class="Statement">as</span> np
<span class="PreProc">import</span> matplotlib.pyplot <span class="Statement">as</span> plt

<span class="PreProc">from</span> mayavi <span class="PreProc">import</span> mlab

x, y = np.meshgrid(np.linspace(-<span class="Constant">3</span>, <span class="Constant">3</span>, <span class="Constant">50</span>), np.linspace(-<span class="Constant">5</span>, <span class="Constant">5</span>, <span class="Constant">50</span>) )
z = np.exp(-x**<span class="Constant">2</span> - <span class="Constant">0.5</span> * y**<span class="Constant">2</span>) * np.cos(<span class="Constant">4</span> * x) + np.exp(-<span class="Constant">3</span> * ((x + <span class="Constant">0.5</span>)**<span class="Constant">2</span> + <span class="Constant">0.5</span> * y**<span class="Constant">2</span>))
idx = np.<span class="Identifier">abs</span>(z) &gt; <span class="Constant">0.001</span>
z[idx] = <span class="Constant">0.001</span> * np.sign(z[idx])


s = mlab.mesh(x, y, z*<span class="Constant">1000</span>)
mlab.show()

<span class="PreProc">from</span> sympy <span class="PreProc">import</span> symbols, pprint
<span class="PreProc">from</span> sympy <span class="PreProc">import</span> cos, exp
x, y, z = symbols(<span class="Constant">'x, y, z'</span>)
f = exp(-x**<span class="Constant">2</span> - y**<span class="Constant">2</span>/<span class="Constant">2</span>) * cos(<span class="Constant">4</span>*x) + exp(-<span class="Constant">3</span>*((x + <span class="Constant">0.5</span>)**<span class="Constant">2</span> + y**<span class="Constant">2</span>/<span class="Constant">2</span>))
pprint(f)

<span class="Comment"># Latex: $e^{-x^2 - \frac{y^2}{2}}\cos(4x) + e^{-3((x+0.5)^2+\frac{y^2}{2})}$</span>

<a target='_blank' title='ImageShack - Image And Video Hosting' href='http://imageshack.us/photo/my-images/827/snapshotgu.png/'><img src='http://img827.imageshack.us/img827/3880/snapshotgu.png' border='0'/></a>

Uploaded with <a target='_blank' href='http://imageshack.us'>ImageShack.us</a>

<span class="Comment"># Original: <a href="http://www.walkingrandomly.com/?p=2720">http://www.walkingrandomly.com/?p=2720</a></span>

</pre>
</body>
</html>
The m-file can be download from here:
http://www.mathworks.com/matlabcentral/fileexchange/8997

use like this:
{{{
[x,y]=meetpoint(freqs,Pxx,[M2 M2],ylim);
text(x,y,'\leftarrow M2','FontSize',10,'FontName','Andale Mono')
}}}
*''~NetCDF classic to ~NetCDF-4''
** Convert one file:
{{{
ncks -4 -L 1  old.nc  new.nc
}}}
**Convert all files:
{{{
find . -type f -name "*.nc" -exec ncks -4 -L 1 --overwrite {} {} \;
}}}
For extra compression try:
{{{
ncpdq -4 -L 2 file.nc ncfile-pack.nc
}}}
*This simple step reduced my netcdf files more than 50%, in my case I got and extra 5GB to spare.

The prerequisites are hdf5, udunits and netcdf. Use the one-click install bellow to get it all together with nco 3.9.9:
 [img[http://img2.imageshack.us/img2/5610/oneclick.png][http://download.opensuse.org/repositories/home://ocefpaf/openSUSE_11.2/oceanography.ymp]]

To read these files in Matlab you'll need [[MatlabOpenDapJava]] and this snctools branch:
{{{
svn co https://mexcdf.svn.sourceforge.net/svnroot/mexcdf/snctools/branches/nc4/ snctools
}}}
*checkout project
{{{
osc checkout <project>
}}}
*create a package
{{{
osc meta pkg -e  <project> <package>
osc up
cd <package>
}}}
*copy project files and
{{{
osc add *
osc commit
}}}

*local build
{{{
osc build openSUSE_11.1 i586 <specfile>
}}}

*misc
{{{
osc st
osc results   <platform>
osc buildlog  <platform> <arch>
osc rebuildpac [dir]
}}}
Recently I've registered as an ~OpenSuse Build Service packager (OBS). If you are wondering what OBS is check this copy-and-paste from Wikipedia:

"//The openSUSE Build Service is an open and complete distribution development platform designed to encourage developers to compile packages for multiple Linux distributions including openSUSE, Red Hat, Mandriva, Ubuntu, Fedora and Debian. It typically simplifies the packaging process, so developers can more easily package a single program for many distributions, and many openSUSE releases, making more packages available to users regardless of what distribution version they use.//"

The motivation is not only to fill some softwares blanks for ~OpenSuse, but also to compile some packages in a more "oceanographic-way". By oceanographic I mean with the right options and switches that we actually use.

Some instructions on how to use it can be found here: [[OBS]]

Click [[here|http://download.opensuse.org/repositories/home:/ocefpaf/openSUSE_11.2/]] for the Opensuse 11.2 i586 RPM repository or click on the one-click-install below.

[img[http://img2.imageshack.us/img2/5610/oneclick.png][http://download.opensuse.org/repositories/home://ocefpaf/openSUSE_11.2/oceanography.ymp]]

I would like to invite anyone interested to help in anyway possible. For example:
*Finding new versions and/or new packages useful for oceanography;
*Installing and testing the packages;
*Improving the SPEC files;
*Building the packages for different distros, architectures, and platforms via a project branch or a new project;


Please contact [[me|ocefpaf]] if you want to help or are unsure on how to use this repository.
[[PDF Import Extension|http://www.sun.com/software/staroffice/extensions.jsp]]
[[CoGrOO|http://cogroo.sourceforge.net/]]
[[VERO|http://www.broffice.org/verortografico]]
[[OpenOffice.org2GoogleDocs|http://extensions.services.openoffice.org/node/3480]]
/***
|''Name:''|PasswordOptionPlugin|
|''Description:''|Extends TiddlyWiki options with non encrypted password option.|
|''Version:''|1.0.2|
|''Date:''|Apr 19, 2007|
|''Source:''|http://tiddlywiki.bidix.info/#PasswordOptionPlugin|
|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
|''~CoreVersion:''|2.2.0 (Beta 5)|
***/
//{{{
version.extensions.PasswordOptionPlugin = {
	major: 1, minor: 0, revision: 2, 
	date: new Date("Apr 19, 2007"),
	source: 'http://tiddlywiki.bidix.info/#PasswordOptionPlugin',
	author: 'BidiX (BidiX (at) bidix (dot) info',
	license: '[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D]]',
	coreVersion: '2.2.0 (Beta 5)'
};

config.macros.option.passwordCheckboxLabel = "Save this password on this computer";
config.macros.option.passwordInputType = "password"; // password | text
setStylesheet(".pasOptionInput {width: 11em;}\n","passwordInputTypeStyle");

merge(config.macros.option.types, {
	'pas': {
		elementType: "input",
		valueField: "value",
		eventName: "onkeyup",
		className: "pasOptionInput",
		typeValue: config.macros.option.passwordInputType,
		create: function(place,type,opt,className,desc) {
			// password field
			config.macros.option.genericCreate(place,'pas',opt,className,desc);
			// checkbox linked with this password "save this password on this computer"
			config.macros.option.genericCreate(place,'chk','chk'+opt,className,desc);			
			// text savePasswordCheckboxLabel
			place.appendChild(document.createTextNode(config.macros.option.passwordCheckboxLabel));
		},
		onChange: config.macros.option.genericOnChange
	}
});

merge(config.optionHandlers['chk'], {
	get: function(name) {
		// is there an option linked with this chk ?
		var opt = name.substr(3);
		if (config.options[opt]) 
			saveOptionCookie(opt);
		return config.options[name] ? "true" : "false";
	}
});

merge(config.optionHandlers, {
	'pas': {
 		get: function(name) {
			if (config.options["chk"+name]) {
				return encodeCookie(config.options[name].toString());
			} else {
				return "";
			}
		},
		set: function(name,value) {config.options[name] = decodeCookie(value);}
	}
});

// need to reload options to load passwordOptions
loadOptionsCookie();

/*
if (!config.options['pasPassword'])
	config.options['pasPassword'] = '';

merge(config.optionsDesc,{
		pasPassword: "Test password"
	});
*/
//}}}
'PhD' synonym for 4 years of torture (at least).
This simulation was done with a [[Matlab]] code provided in [[Cushman-Roisin's|http://engineering.dartmouth.edu/~cushman/books/GFD.html]] new book. 

What is cool about this simulation is how the turbulence goes to higher scales instead of lower.
[img[http://i4.ytimg.com/vi/K2a1gkjh0yo/default.jpg][http://www.youtube.com/watch?v=K2a1gkjh0yo]]
[[Balanced vortex]]
Subversion repository at Google codes for the my Shell scripts project:

svn co http://ocefpaf-shell.googlecode.com/svn/trunk/ ocefpaf-shell-read-only


tip: spice up some script by changing {{{echo}}} to {{{figlet}}}
<<search>><<closeAll>><<permaview>><<newTiddler>><<newJournal "YYYY-MM-DD" "journal">><<saveChanges>><<tiddler TspotSidebar>><<slider chkSliderOptionsPanel OptionsPanel "options »" "Change TiddlyWiki advanced options">>
Another attempt to keep the mess organized
Ocefpaf Work Journal 
[[Oceanography]]

[[Essentials list]]
I read this somewhere regarding statical model/analisys

Classical analysis:
//
      Problem => Data => Model => Analysis => Conclusions
//

Exploratory Data Analysis:
//
      Problem => Data => Analysis => Model => Conclusions"
//

The first one is the "ideal", the second one is the "sugar-coated" version of &mdash; I do not know what I'm doing!

Then we have the Bayesian approach:
//
      Problem => Data => Model => Prior Distribution => Analysis => Conclusions
//

Where the hell is my prior? Well, continuing the text explain further the approaches:

//
Thus for classical analysis, the data collection is followed by the imposition of a model (normality, linearity, etc.) and the analysis, estimation, and testing that follows are focused on the parameters of that model. For EDA, the data collection is not followed by a model imposition; rather it is followed immediately by analysis with a goal of inferring what model would be appropriate.

Finally, for a Bayesian analysis, the analyst attempts to incorporate scientific/engineering knowledge/expertise into the analysis by imposing a data-independent distribution on the parameters of the selected model; the analysis thus consists of formally combining both the prior distribution on the parameters and the collected data to joint ly make inferences and/or test assumptions about the model parameters.

In the real world, data analysts freely mix elements of all of the above three approaches (and other approaches). The above distinctions were made to emphasize the major differences among the three approaches.
//
.viewer {
  line-height: 125%;
  font-family: serif;
  font-size: 12pt;
}

.viewer code {
 font-size:9pt;
 line-height:1.4em;
}

.viewer pre { 
  background-color: #f8f8ff; 
  border-color: #ddf;
  padding:0.5em;
  margin-left:0.5em;
  font-size:9pt;
  line-height:1.4em;
  overflow:auto;
}

#displayArea {
	margin: 1em 15.5em 0em 1em; /* neutralize default margins */
}

#mainMenu {
	position: static; /* neutralize default settings */
	width: auto; /* neutralize default settings */
	overflow: auto; /* contain floats */
	border-bottom: 2px solid [[ColorPalette::PrimaryDark]];
	padding: 0;
	text-align: left;
	color: [[ColorPalette::PrimaryPale]];
	background-color: [[ColorPalette::PrimaryMid]];
}

#mainMenu a,
#mainMenu .button,
#mainMenu .tiddlyLink {
	display: block;
	float: left;
	margin: 0;
	padding: 0.2em 0.75em;
	font-size: 1.15em;
	font-weight: bold;
	color: [[ColorPalette::PrimaryPale]];
}

#mainMenu a:hover,
#mainMenu .button:hover,
#mainMenu .tiddlyLink:hover {
	background-color: [[ColorPalette::PrimaryDark]];
}

#mainMenu br {
	display: none;
}

/* horizontal main menu */

#displayArea { margin: 1em 15.5em 0em 1em; } /* use the full horizontal width */

#topMenu { background: [[ColorPalette::PrimaryMid]]; color: [[ColorPalette::PrimaryPale]]; padding: 0.2em 0.2em 0.2em 0.5em; border-bottom: 2px solid #000000; }

#topMenu br { display: none; }

#topMenu .button, #topMenu .tiddlyLink, #topMenu a { margin-left: 0.25em; margin-right: 0.25em; padding-left: 0.5em; padding-right: 0.5em; color: [[ColorPalette::PrimaryPale]]; font-size: 1.15em; }

#topMenu .button:hover, #topMenu .tiddlyLink:hover { background: [[ColorPalette::PrimaryDark]]; }

 .firstletter{ float:left; width:0.75em; font-size:400%; font-family:times,arial; line-height:60%; }

.viewer .FOO table tr.oddRow { background-color: #bbbbbb; }
.viewer .FOO table tr.evenRow { background-color: #fff; } 








/*Invisible table*/

.viewer .invisibletable table { 
border-color: white;
 }

.viewer .invisibletable table td { 
font-size: 1em;
font-family: Verdana;
border-color: white;
padding: 10px 20px 10px 0px;
text-align: left;
vertical-align: top;
} 

.viewer .invisibletable table th { 
color: #005566;
background-color: white;
border-color: white;
font-family: Verdana;
font-size: 1.2em;
font-weight: bold;
padding: 10px 20px 10px 0px;
text-align: left;
vertical-align: top;
} 

/* GIFFMEX TWEAKS TO STYLESHEETPRINT (so that nothing but tiddler title and text are printed) */


@media print {#mainMenu {display: none ! important;}}
@media print {#topMenu {display: none ! important;}}
@media print {#sidebar {display: none ! important;}}
@media print {#messageArea {display: none ! important;}} 
@media print {#toolbar {display: none ! important;}}
@media print {.header {display: none ! important;}}
@media print {.tiddler .subtitle {display: none ! important;}}
@media print {.tiddler .toolbar {display; none ! important; }}
@media print {.tiddler .tagging {display; none ! important; }}
@media print {.tiddler .tagged {display; none ! important; }}
@media print {#displayArea {margin: 1em 1em 0em 1em;}}
@media print {.pageBreak {page-break-before: always;}}

a.button{
 border: 0;

} 

/*Color changes*/


#sidebarOptions input {
	border: 1px solid [[ColorPalette::TertiaryPale]];
}

#sidebarOptions .sliderPanel {
	background: [[ColorPalette::TertiaryPale]];
}

#sidebarOptions .sliderPanel a {
	border: none;
	color: [[ColorPalette::PrimaryMid]];
}

#sidebarOptions .sliderPanel a:hover {
	color: [[ColorPalette::Background]];
	background: [[ColorPalette::TertiaryPale]];
}

#sidebarOptions .sliderPanel a:active {
	color: [[ColorPalette::PrimaryMid]];
	background: [[ColorPalette::TertiaryPale]];
}

/*Makes sliders bold*/

.tuduSlider .button{font-weight: bold;
}

/* (2) Adjusts the color for all headlines so they are both readable and match my color schemes. */

h1,h2,h3,h4,h5 {
 color: #000;
 background: [[ColorPalette::TertiaryPale]];
}

.title {
color: [[ColorPalette::PrimaryMid]];
}

/* (2) Makes text verdana. */

body {
 font-family: verdana;
font-size: 9pt;
}

/* (4) Allows for Greek - one way */

   .greek {
      font-family: Palatino Linotype;
      font-style: normal;
      font-size: 150%;
   }

/* (5) Shortens the height of the Header */

.headerShadow {
 padding: 1.5em 0em 1em 1em;
}

.headerForeground {
 padding: 2em 0em 1em 1em;
}

/* (8) Makes ordered and unordered lists double-spaced between items but single-spaced within items. */

.viewer li {
   padding-top: 0.5em;
   padding-bottom: 0.5em;

} 

/*Makes block quotes line-less*/

.viewer blockquote {
border-left: 0px;
margin-top:0em;
margin-bottom:0em; 
}

/* Cosmetic fixes that probably should be included in a future TW... */

.viewer .listTitle { list-style-type:none; margin-left:-2em; }
.editorFooter .button { padding-top: 0px; padding-bottom:0px; }

Important stuff. See TagglyTaggingStyles and HorizontalMainMenuStyles

[[Styles TagglyTagging]]
[[Styles HorizontalMainMenu]]

Just colours, fonts, tweaks etc. See MessageTopRight and SideBarWhiteAndGrey

body { 
  background: #eee; }
.headerForeground a { 
  color: #6fc;}
.headerShadow { 
  left: 2px; 
  top: 2px; }
.siteSubtitle { 
  padding-left: 1.5em; }

.shadow .title {
  color: #999; }

.tiddler {
  border-top:    1px solid #ccc; 
  border-left:   1px solid #ccc; 
  border-bottom: 3px solid #ccc; 
  border-right:  3px solid #ccc; 
  margin: 0.5em; 
  background:#fff; 
  padding: 0.5em; 
  -moz-border-radius: 1em; }

#messageArea { 
  background-color: #eee; 
  border-color: #8ab; 
  border-width: 4px; 
  border-style: dotted; 
  font-size: 90%; 
  padding: 0.5em; 
  -moz-border-radius: 1em; }

#messageArea .button { text-decoration:none; font-weight:bold; background:transparent; border:0px; }

#messageArea .button:hover {background: #acd; }

.editorFooter .button { 
  padding-top: 0px; 
  padding-bottom:0px; 
  background: #fff;
  color: #000; 
  border-top:    1px solid #ccc; 
  border-left:   1px solid #ccc; 
  border-bottom: 2px solid #ccc; 
  border-right:  2px solid #ccc; 
  margin-left: 3px;
  padding-top: 1px;
  padding-bottom: 1px;
  padding-left: 5px;
  padding-right: 5px; }
  
.editorFooter .button:hover { 
  border-top:    2px solid #ccc; 
  border-left:   2px solid #ccc; 
  border-bottom: 1px solid #ccc; 
  border-right:  1px solid #ccc; 
  margin-left: 3px;
  padding-top: 1px;
  padding-bottom: 1px;
  padding-left: 5px;
  padding-right: 5px; }

.tagged {
  padding: 0.5em;
  background-color: #eee;
  border-top:    1px solid #ccc; 
  border-left:   1px solid #ccc; 
  border-bottom: 3px solid #ccc; 
  border-right:  3px solid #ccc; 
  -moz-border-radius: 1em; }

.selected .tagged {
  padding: 0.5em;
  background-color: #eee;
  border-top:    1px solid #ccc; 
  border-left:   1px solid #ccc; 
  border-bottom: 3px solid #ccc; 
  border-right:  3px solid #ccc; 
  -moz-border-radius: 1em; }

Clint's fix for weird IE behaviour
body {position:static;}
.tagClear{margin-top:1em;clear:both;}


@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
/* text alignments */
.left
	{ display:block;text-align:left; }
.center
	{ display:block;text-align:center; }
.right	
	{ display:block;text-align:right; }
.justify
	{ display:block;text-align:justify; }
.indent
	{ margin:0;padding:0;border:0;margin-left:2em; }
.floatleft
	{ float:left; }
.floatright
	{ float:right; }
.clear
	{ clear:both; }
.wrap
	{ white-space:normal; }
.nowrap
	{ white-space:nowrap; }
.hidden
	{ display:none; }
.span
	{ display:span; }
.block
	{ display:blockquote; }

/* font sizes */
.big
	{ font-size:14pt;line-height:120% }
.medium
	{ font-size:12pt;line-height:120% }
.normal
	{ font-size:9pt;line-height:120% }
.small
	{ font-size:8pt;line-height:120% }
.fine
	{ font-size:7pt;line-height:120% }
.tiny
	{ font-size:6pt;line-height:120% }
.larger
	{ font-size:120%; }
.smaller
	{ font-size:80%; }

/* font styles */
.bold
	{ font-weight:bold; }
.italics
	{ font-style:italics; }
.underline
	{ text-decoration:underline; }

/* multi-column tiddler content (not supported in Internet Explorer) */
.twocolumns
	{ display:block; -moz-column-count:2; -moz-column-gap:1em; -moz-column-width:50%;}
.threecolumns
	{ display:block; -moz-column-count:3; -moz-column-gap:1em; -moz-column-width:33%}
.fourcolumns
	{ display:block; -moz-column-count:4; -moz-column-gap:1em; -moz-column-width:25%}

/* borderless tables */
.borderless, .borderless table, .borderless td, .borderless tr, .borderless th, .borderless tbody
	{ border:0 !important; margin:0 !important; padding:0 !important; }

/* thumbnail images (fixed-sized scaled images) */
.thumbnail img { height:5em !important; }

/* grouped content */
.outline
	{ display:block; padding:1em; -moz-border-radius:1em; border:1px solid; }
.menubox
	{ display:block; padding:1em; -moz-border-radius:1em; border:1px solid; background:#ccccff; color:#000; }
.menubox .button, .menubox .tiddlyLinkExisting, .menubox .tiddlyLinkNonExisting
	{ color:#009 !important; }
.groupbox
	{ display:block; padding:1em; -moz-border-radius:1em; border:1px solid; background:#ffe; color:#000; }
.groupbox a, .groupbox .button, .groupbox .tiddlyLinkExisting, .groupbox .tiddlyLinkNonExisting
	{ color:#009 !important; }
.groupbox code
	{ color:#333 !important; }
.borderleft
	{ margin:0;padding:0;border:0;margin-left:1em; border-left:1px dotted; padding-left:.5em; }
.borderright
	{ margin:0;padding:0;border:0;margin-right:1em; border-right:1px dotted; padding-right:.5em; }
.borderbottom
	{ margin:0;padding:1px 0;border:0;border-bottom:1px dotted; margin-bottom:1px; padding-bottom:1px; }
.bordertop
	{ margin:0;padding:0;border:0;border-top:1px dotted; margin-top:1px; padding-top:1px; }

/* compact form */
.smallform
	{ white-space:nowrap; }
.smallform input, .smallform textarea, .smallform button, .smallform checkbox, .smallform radio, .smallform select
	{ font-size:8pt; }

/* colors */
.green { color:#6f6 !important }
.red { color:#f66 !important }
.blue { color:#99f !important }
//Follow the tags to re-create the steps that build this site.//
[[TiddlyWiki]]
/%
|Name|ToggleRightSidebar|
|Source|http://www.TiddlyTools.com/#ToggleRightSidebar|
|Version|2.0.0|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|script|
|Requires|InlineJavascriptPlugin|
|Overrides||
|Description|show/hide right sidebar (MainMenu)|

Usage: <<tiddler ToggleRightSidebar with: "label">>

Config settings:
	config.options.chkShowRightSidebar (true)
	config.options.txtToggleRightSideBarLabelShow (◄)
	config.options.txtToggleRightSideBarLabelHide (►)

%/<script label="$1" title="show/hide right sidebar content">
	var co=config.options;
	if (co.chkShowRightSidebar=='undefined') co.chkShowRightSidebar=true;
	co.chkShowRightSidebar=!co.chkShowRightSidebar;
	var sb=document.getElementById('sidebar'); if (!sb) return;
	sb.style.display=co.chkShowRightSidebar?'block':'none';
	document.getElementById('displayArea').style.marginRight=co.chkShowRightSidebar?'':'1em';
	saveOptionCookie('chkShowRightSidebar');
	var labelShow=co.txtToggleRightSideBarLabelShow||'&#x25C4;';
	var labelHide=co.txtToggleRightSideBarLabelHide||'&#x25BA;';
	if (typeof(place)!='undefined' && '$1'=='$'+'1') {
		place.innerHTML=co.chkShowRightSidebar?labelHide:labelShow;
		place.title=(co.chkShowRightSidebar?'hide':'show')+' right sidebar';
	}
	var sm=document.getElementById('storyMenu'); if (sm) config.refreshers.content(sm);
</script><script>
	var co=config.options;
	if (co.chkShowRightSidebar=='undefined') co.chkShowRightSidebar=true;
	var sb=document.getElementById('sidebar'); if (!sb) return;
	sb.style.display=co.chkShowRightSidebar?'block':'none';
	document.getElementById('displayArea').style.marginRight=co.chkShowRightSidebar?'':'1em';
	if ('$1'=='$'+'1') {
		var labelShow=co.txtToggleRightSideBarLabelShow||'&#x25C4;';
		var labelHide=co.txtToggleRightSideBarLabelHide||'&#x25BA;';
		place.lastChild.innerHTML=co.chkShowRightSidebar?labelHide:labelShow;
		place.lastChild.title=(co.chkShowRightSidebar?'hide':'show')+' right sidebar';
	}
</script>
/***
Description: Contains the stuff you need to use Tiddlyspot
Note, you also need UploadPlugin, PasswordOptionPlugin and LoadRemoteFileThroughProxy
from http://tiddlywiki.bidix.info for a complete working Tiddlyspot site.
***/
//{{{

// edit this if you are migrating sites or retrofitting an existing TW
config.tiddlyspotSiteId = 'ocefpaf';

// make it so you can by default see edit controls via http
config.options.chkHttpReadOnly = false;
window.readOnly = false; // make sure of it (for tw 2.2)
window.showBackstage = true; // show backstage too

// disable autosave in d3
if (window.location.protocol != "file:")
	config.options.chkGTDLazyAutoSave = false;

// tweak shadow tiddlers to add upload button, password entry box etc
with (config.shadowTiddlers) {
	SiteUrl = 'http://'+config.tiddlyspotSiteId+'.tiddlyspot.com';
	SideBarOptions = SideBarOptions.replace(/(<<saveChanges>>)/,"$1<<tiddler TspotSidebar>>");
	OptionsPanel = OptionsPanel.replace(/^/,"<<tiddler TspotOptions>>");
	DefaultTiddlers = DefaultTiddlers.replace(/^/,"[[WelcomeToTiddlyspot]] ");
	MainMenu = MainMenu.replace(/^/,"[[WelcomeToTiddlyspot]] ");
}

// create some shadow tiddler content
merge(config.shadowTiddlers,{

'WelcomeToTiddlyspot':[
 "This document is a ~TiddlyWiki from tiddlyspot.com.  A ~TiddlyWiki is an electronic notebook that is great for managing todo lists, personal information, and all sorts of things.",
 "",
 "@@font-weight:bold;font-size:1.3em;color:#444; //What now?// &nbsp;&nbsp;@@ Before you can save any changes, you need to enter your password in the form below.  Then configure privacy and other site settings at your [[control panel|http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/controlpanel]] (your control panel username is //" + config.tiddlyspotSiteId + "//).",
 "<<tiddler TspotControls>>",
 "See also GettingStarted.",
 "",
 "@@font-weight:bold;font-size:1.3em;color:#444; //Working online// &nbsp;&nbsp;@@ You can edit this ~TiddlyWiki right now, and save your changes using the \"save to web\" button in the column on the right.",
 "",
 "@@font-weight:bold;font-size:1.3em;color:#444; //Working offline// &nbsp;&nbsp;@@ A fully functioning copy of this ~TiddlyWiki can be saved onto your hard drive or USB stick.  You can make changes and save them locally without being connected to the Internet.  When you're ready to sync up again, just click \"upload\" and your ~TiddlyWiki will be saved back to tiddlyspot.com.",
 "",
 "@@font-weight:bold;font-size:1.3em;color:#444; //Help!// &nbsp;&nbsp;@@ Find out more about ~TiddlyWiki at [[TiddlyWiki.com|http://tiddlywiki.com]].  Also visit [[TiddlyWiki.org|http://tiddlywiki.org]] for documentation on learning and using ~TiddlyWiki. New users are especially welcome on the [[TiddlyWiki mailing list|http://groups.google.com/group/TiddlyWiki]], which is an excellent place to ask questions and get help.  If you have a tiddlyspot related problem email [[tiddlyspot support|mailto:support@tiddlyspot.com]].",
 "",
 "@@font-weight:bold;font-size:1.3em;color:#444; //Enjoy :)// &nbsp;&nbsp;@@ We hope you like using your tiddlyspot.com site.  Please email [[feedback@tiddlyspot.com|mailto:feedback@tiddlyspot.com]] with any comments or suggestions."
].join("\n"),

'TspotControls':[
 "| tiddlyspot password:|<<option pasUploadPassword>>|",
 "| site management:|<<upload http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/store.cgi index.html . .  " + config.tiddlyspotSiteId + ">>//(requires tiddlyspot password)//<br>[[control panel|http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/controlpanel]], [[download (go offline)|http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/download]]|",
 "| links:|[[tiddlyspot.com|http://tiddlyspot.com/]], [[FAQs|http://faq.tiddlyspot.com/]], [[blog|http://tiddlyspot.blogspot.com/]], email [[support|mailto:support@tiddlyspot.com]] & [[feedback|mailto:feedback@tiddlyspot.com]], [[donate|http://tiddlyspot.com/?page=donate]]|"
].join("\n"),

'TspotSidebar':[
 "<<upload http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/store.cgi index.html . .  " + config.tiddlyspotSiteId + ">><html><a href='http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/download' class='button'>download</a></html>"
].join("\n"),

'TspotOptions':[
 "tiddlyspot password:",
 "<<option pasUploadPassword>>",
 ""
].join("\n")

});
//}}}
| !date | !user | !location | !storeUrl | !uploadDir | !toFilename | !backupdir | !origin |
| 02/09/2010 13:52:56 | ocefpaf | [[/|http://ocefpaf.tiddlyspot.com/]] | [[store.cgi|http://ocefpaf.tiddlyspot.com/store.cgi]] | . | [[index.html | http://ocefpaf.tiddlyspot.com/index.html]] | . |
| 02/12/2011 15:20:25 | ocefpaf | [[/|http://ocefpaf.tiddlyspot.com/]] | [[store.cgi|http://ocefpaf.tiddlyspot.com/store.cgi]] | . | [[index.html | http://ocefpaf.tiddlyspot.com/index.html]] | . | failed |
| 02/12/2011 15:20:35 | ocefpaf | [[/|http://ocefpaf.tiddlyspot.com/]] | [[store.cgi|http://ocefpaf.tiddlyspot.com/store.cgi]] | . | [[index.html | http://ocefpaf.tiddlyspot.com/index.html]] | . | failed |
| 02/12/2011 15:21:54 | ocefpaf | [[/|http://ocefpaf.tiddlyspot.com/]] | [[store.cgi|http://ocefpaf.tiddlyspot.com/store.cgi]] | . | [[index.html | http://ocefpaf.tiddlyspot.com/index.html]] | . | ok |
| 02/12/2011 15:23:31 | ocefpaf | [[/|http://ocefpaf.tiddlyspot.com/]] | [[store.cgi|http://ocefpaf.tiddlyspot.com/store.cgi]] | . | [[index.html | http://ocefpaf.tiddlyspot.com/index.html]] | . |
| 02/12/2011 15:30:57 | ocefpaf | [[/|http://ocefpaf.tiddlyspot.com/#Mayavi_says_Hi]] | [[store.cgi|http://ocefpaf.tiddlyspot.com/store.cgi]] | . | [[index.html | http://ocefpaf.tiddlyspot.com/index.html]] | . |
| 17/02/2012 15:29:35 | ocefpaf | [[/|http://ocefpaf.tiddlyspot.com/]] | [[store.cgi|http://ocefpaf.tiddlyspot.com/store.cgi]] | . | [[index.html | http://ocefpaf.tiddlyspot.com/index.html]] | . |
| 19/02/2012 13:23:03 | ocefpaf | [[/|http://ocefpaf.tiddlyspot.com/]] | [[store.cgi|http://ocefpaf.tiddlyspot.com/store.cgi]] | . | [[index.html | http://ocefpaf.tiddlyspot.com/index.html]] | . | failed |
| 19/02/2012 13:23:23 | ocefpaf | [[/|http://ocefpaf.tiddlyspot.com/]] | [[store.cgi|http://ocefpaf.tiddlyspot.com/store.cgi]] | . | [[index.html | http://ocefpaf.tiddlyspot.com/index.html]] | . | ok |
| 19/02/2012 13:31:36 | ocefpaf | [[/|http://ocefpaf.tiddlyspot.com/]] | [[store.cgi|http://ocefpaf.tiddlyspot.com/store.cgi]] | . | [[index.html | http://ocefpaf.tiddlyspot.com/index.html]] | . |
/***
|''Name:''|UploadPlugin|
|''Description:''|Save to web a TiddlyWiki|
|''Version:''|4.1.3|
|''Date:''|Feb 24, 2008|
|''Source:''|http://tiddlywiki.bidix.info/#UploadPlugin|
|''Documentation:''|http://tiddlywiki.bidix.info/#UploadPluginDoc|
|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
|''~CoreVersion:''|2.2.0|
|''Requires:''|PasswordOptionPlugin|
***/
//{{{
version.extensions.UploadPlugin = {
	major: 4, minor: 1, revision: 3,
	date: new Date("Feb 24, 2008"),
	source: 'http://tiddlywiki.bidix.info/#UploadPlugin',
	author: 'BidiX (BidiX (at) bidix (dot) info',
	coreVersion: '2.2.0'
};

//
// Environment
//

if (!window.bidix) window.bidix = {}; // bidix namespace
bidix.debugMode = false;	// true to activate both in Plugin and UploadService
	
//
// Upload Macro
//

config.macros.upload = {
// default values
	defaultBackupDir: '',	//no backup
	defaultStoreScript: "store.php",
	defaultToFilename: "index.html",
	defaultUploadDir: ".",
	authenticateUser: true	// UploadService Authenticate User
};
	
config.macros.upload.label = {
	promptOption: "Save and Upload this TiddlyWiki with UploadOptions",
	promptParamMacro: "Save and Upload this TiddlyWiki in %0",
	saveLabel: "save to web", 
	saveToDisk: "save to disk",
	uploadLabel: "upload"	
};

config.macros.upload.messages = {
	noStoreUrl: "No store URL in parmeters or options",
	usernameOrPasswordMissing: "Username or password missing"
};

config.macros.upload.handler = function(place,macroName,params) {
	if (readOnly)
		return;
	var label;
	if (document.location.toString().substr(0,4) == "http") 
		label = this.label.saveLabel;
	else
		label = this.label.uploadLabel;
	var prompt;
	if (params[0]) {
		prompt = this.label.promptParamMacro.toString().format([this.destFile(params[0], 
			(params[1] ? params[1]:bidix.basename(window.location.toString())), params[3])]);
	} else {
		prompt = this.label.promptOption;
	}
	createTiddlyButton(place, label, prompt, function() {config.macros.upload.action(params);}, null, null, this.accessKey);
};

config.macros.upload.action = function(params)
{
		// for missing macro parameter set value from options
		if (!params) params = {};
		var storeUrl = params[0] ? params[0] : config.options.txtUploadStoreUrl;
		var toFilename = params[1] ? params[1] : config.options.txtUploadFilename;
		var backupDir = params[2] ? params[2] : config.options.txtUploadBackupDir;
		var uploadDir = params[3] ? params[3] : config.options.txtUploadDir;
		var username = params[4] ? params[4] : config.options.txtUploadUserName;
		var password = config.options.pasUploadPassword; // for security reason no password as macro parameter	
		// for still missing parameter set default value
		if ((!storeUrl) && (document.location.toString().substr(0,4) == "http")) 
			storeUrl = bidix.dirname(document.location.toString())+'/'+config.macros.upload.defaultStoreScript;
		if (storeUrl.substr(0,4) != "http")
			storeUrl = bidix.dirname(document.location.toString()) +'/'+ storeUrl;
		if (!toFilename)
			toFilename = bidix.basename(window.location.toString());
		if (!toFilename)
			toFilename = config.macros.upload.defaultToFilename;
		if (!uploadDir)
			uploadDir = config.macros.upload.defaultUploadDir;
		if (!backupDir)
			backupDir = config.macros.upload.defaultBackupDir;
		// report error if still missing
		if (!storeUrl) {
			alert(config.macros.upload.messages.noStoreUrl);
			clearMessage();
			return false;
		}
		if (config.macros.upload.authenticateUser && (!username || !password)) {
			alert(config.macros.upload.messages.usernameOrPasswordMissing);
			clearMessage();
			return false;
		}
		bidix.upload.uploadChanges(false,null,storeUrl, toFilename, uploadDir, backupDir, username, password); 
		return false; 
};

config.macros.upload.destFile = function(storeUrl, toFilename, uploadDir) 
{
	if (!storeUrl)
		return null;
		var dest = bidix.dirname(storeUrl);
		if (uploadDir && uploadDir != '.')
			dest = dest + '/' + uploadDir;
		dest = dest + '/' + toFilename;
	return dest;
};

//
// uploadOptions Macro
//

config.macros.uploadOptions = {
	handler: function(place,macroName,params) {
		var wizard = new Wizard();
		wizard.createWizard(place,this.wizardTitle);
		wizard.addStep(this.step1Title,this.step1Html);
		var markList = wizard.getElement("markList");
		var listWrapper = document.createElement("div");
		markList.parentNode.insertBefore(listWrapper,markList);
		wizard.setValue("listWrapper",listWrapper);
		this.refreshOptions(listWrapper,false);
		var uploadCaption;
		if (document.location.toString().substr(0,4) == "http") 
			uploadCaption = config.macros.upload.label.saveLabel;
		else
			uploadCaption = config.macros.upload.label.uploadLabel;
		
		wizard.setButtons([
				{caption: uploadCaption, tooltip: config.macros.upload.label.promptOption, 
					onClick: config.macros.upload.action},
				{caption: this.cancelButton, tooltip: this.cancelButtonPrompt, onClick: this.onCancel}
				
			]);
	},
	options: [
		"txtUploadUserName",
		"pasUploadPassword",
		"txtUploadStoreUrl",
		"txtUploadDir",
		"txtUploadFilename",
		"txtUploadBackupDir",
		"chkUploadLog",
		"txtUploadLogMaxLine"		
	],
	refreshOptions: function(listWrapper) {
		var opts = [];
		for(i=0; i<this.options.length; i++) {
			var opt = {};
			opts.push();
			opt.option = "";
			n = this.options[i];
			opt.name = n;
			opt.lowlight = !config.optionsDesc[n];
			opt.description = opt.lowlight ? this.unknownDescription : config.optionsDesc[n];
			opts.push(opt);
		}
		var listview = ListView.create(listWrapper,opts,this.listViewTemplate);
		for(n=0; n<opts.length; n++) {
			var type = opts[n].name.substr(0,3);
			var h = config.macros.option.types[type];
			if (h && h.create) {
				h.create(opts[n].colElements['option'],type,opts[n].name,opts[n].name,"no");
			}
		}
		
	},
	onCancel: function(e)
	{
		backstage.switchTab(null);
		return false;
	},
	
	wizardTitle: "Upload with options",
	step1Title: "These options are saved in cookies in your browser",
	step1Html: "<input type='hidden' name='markList'></input><br>",
	cancelButton: "Cancel",
	cancelButtonPrompt: "Cancel prompt",
	listViewTemplate: {
		columns: [
			{name: 'Description', field: 'description', title: "Description", type: 'WikiText'},
			{name: 'Option', field: 'option', title: "Option", type: 'String'},
			{name: 'Name', field: 'name', title: "Name", type: 'String'}
			],
		rowClasses: [
			{className: 'lowlight', field: 'lowlight'} 
			]}
};

//
// upload functions
//

if (!bidix.upload) bidix.upload = {};

if (!bidix.upload.messages) bidix.upload.messages = {
	//from saving
	invalidFileError: "The original file '%0' does not appear to be a valid TiddlyWiki",
	backupSaved: "Backup saved",
	backupFailed: "Failed to upload backup file",
	rssSaved: "RSS feed uploaded",
	rssFailed: "Failed to upload RSS feed file",
	emptySaved: "Empty template uploaded",
	emptyFailed: "Failed to upload empty template file",
	mainSaved: "Main TiddlyWiki file uploaded",
	mainFailed: "Failed to upload main TiddlyWiki file. Your changes have not been saved",
	//specific upload
	loadOriginalHttpPostError: "Can't get original file",
	aboutToSaveOnHttpPost: 'About to upload on %0 ...',
	storePhpNotFound: "The store script '%0' was not found."
};

bidix.upload.uploadChanges = function(onlyIfDirty,tiddlers,storeUrl,toFilename,uploadDir,backupDir,username,password)
{
	var callback = function(status,uploadParams,original,url,xhr) {
		if (!status) {
			displayMessage(bidix.upload.messages.loadOriginalHttpPostError);
			return;
		}
		if (bidix.debugMode) 
			alert(original.substr(0,500)+"\n...");
		// Locate the storeArea div's 
		var posDiv = locateStoreArea(original);
		if((posDiv[0] == -1) || (posDiv[1] == -1)) {
			alert(config.messages.invalidFileError.format([localPath]));
			return;
		}
		bidix.upload.uploadRss(uploadParams,original,posDiv);
	};
	
	if(onlyIfDirty && !store.isDirty())
		return;
	clearMessage();
	// save on localdisk ?
	if (document.location.toString().substr(0,4) == "file") {
		var path = document.location.toString();
		var localPath = getLocalPath(path);
		saveChanges();
	}
	// get original
	var uploadParams = new Array(storeUrl,toFilename,uploadDir,backupDir,username,password);
	var originalPath = document.location.toString();
	// If url is a directory : add index.html
	if (originalPath.charAt(originalPath.length-1) == "/")
		originalPath = originalPath + "index.html";
	var dest = config.macros.upload.destFile(storeUrl,toFilename,uploadDir);
	var log = new bidix.UploadLog();
	log.startUpload(storeUrl, dest, uploadDir,  backupDir);
	displayMessage(bidix.upload.messages.aboutToSaveOnHttpPost.format([dest]));
	if (bidix.debugMode) 
		alert("about to execute Http - GET on "+originalPath);
	var r = doHttp("GET",originalPath,null,null,username,password,callback,uploadParams,null);
	if (typeof r == "string")
		displayMessage(r);
	return r;
};

bidix.upload.uploadRss = function(uploadParams,original,posDiv) 
{
	var callback = function(status,params,responseText,url,xhr) {
		if(status) {
			var destfile = responseText.substring(responseText.indexOf("destfile:")+9,responseText.indexOf("\n", responseText.indexOf("destfile:")));
			displayMessage(bidix.upload.messages.rssSaved,bidix.dirname(url)+'/'+destfile);
			bidix.upload.uploadMain(params[0],params[1],params[2]);
		} else {
			displayMessage(bidix.upload.messages.rssFailed);			
		}
	};
	// do uploadRss
	if(config.options.chkGenerateAnRssFeed) {
		var rssPath = uploadParams[1].substr(0,uploadParams[1].lastIndexOf(".")) + ".xml";
		var rssUploadParams = new Array(uploadParams[0],rssPath,uploadParams[2],'',uploadParams[4],uploadParams[5]);
		var rssString = generateRss();
		// no UnicodeToUTF8 conversion needed when location is "file" !!!
		if (document.location.toString().substr(0,4) != "file")
			rssString = convertUnicodeToUTF8(rssString);	
		bidix.upload.httpUpload(rssUploadParams,rssString,callback,Array(uploadParams,original,posDiv));
	} else {
		bidix.upload.uploadMain(uploadParams,original,posDiv);
	}
};

bidix.upload.uploadMain = function(uploadParams,original,posDiv) 
{
	var callback = function(status,params,responseText,url,xhr) {
		var log = new bidix.UploadLog();
		if(status) {
			// if backupDir specified
			if ((params[3]) && (responseText.indexOf("backupfile:") > -1))  {
				var backupfile = responseText.substring(responseText.indexOf("backupfile:")+11,responseText.indexOf("\n", responseText.indexOf("backupfile:")));
				displayMessage(bidix.upload.messages.backupSaved,bidix.dirname(url)+'/'+backupfile);
			}
			var destfile = responseText.substring(responseText.indexOf("destfile:")+9,responseText.indexOf("\n", responseText.indexOf("destfile:")));
			displayMessage(bidix.upload.messages.mainSaved,bidix.dirname(url)+'/'+destfile);
			store.setDirty(false);
			log.endUpload("ok");
		} else {
			alert(bidix.upload.messages.mainFailed);
			displayMessage(bidix.upload.messages.mainFailed);
			log.endUpload("failed");			
		}
	};
	// do uploadMain
	var revised = bidix.upload.updateOriginal(original,posDiv);
	bidix.upload.httpUpload(uploadParams,revised,callback,uploadParams);
};

bidix.upload.httpUpload = function(uploadParams,data,callback,params)
{
	var localCallback = function(status,params,responseText,url,xhr) {
		url = (url.indexOf("nocache=") < 0 ? url : url.substring(0,url.indexOf("nocache=")-1));
		if (xhr.status == 404)
			alert(bidix.upload.messages.storePhpNotFound.format([url]));
		if ((bidix.debugMode) || (responseText.indexOf("Debug mode") >= 0 )) {
			alert(responseText);
			if (responseText.indexOf("Debug mode") >= 0 )
				responseText = responseText.substring(responseText.indexOf("\n\n")+2);
		} else if (responseText.charAt(0) != '0') 
			alert(responseText);
		if (responseText.charAt(0) != '0')
			status = null;
		callback(status,params,responseText,url,xhr);
	};
	// do httpUpload
	var boundary = "---------------------------"+"AaB03x";	
	var uploadFormName = "UploadPlugin";
	// compose headers data
	var sheader = "";
	sheader += "--" + boundary + "\r\nContent-disposition: form-data; name=\"";
	sheader += uploadFormName +"\"\r\n\r\n";
	sheader += "backupDir="+uploadParams[3] +
				";user=" + uploadParams[4] +
				";password=" + uploadParams[5] +
				";uploaddir=" + uploadParams[2];
	if (bidix.debugMode)
		sheader += ";debug=1";
	sheader += ";;\r\n"; 
	sheader += "\r\n" + "--" + boundary + "\r\n";
	sheader += "Content-disposition: form-data; name=\"userfile\"; filename=\""+uploadParams[1]+"\"\r\n";
	sheader += "Content-Type: text/html;charset=UTF-8" + "\r\n";
	sheader += "Content-Length: " + data.length + "\r\n\r\n";
	// compose trailer data
	var strailer = new String();
	strailer = "\r\n--" + boundary + "--\r\n";
	data = sheader + data + strailer;
	if (bidix.debugMode) alert("about to execute Http - POST on "+uploadParams[0]+"\n with \n"+data.substr(0,500)+ " ... ");
	var r = doHttp("POST",uploadParams[0],data,"multipart/form-data; ;charset=UTF-8; boundary="+boundary,uploadParams[4],uploadParams[5],localCallback,params,null);
	if (typeof r == "string")
		displayMessage(r);
	return r;
};

// same as Saving's updateOriginal but without convertUnicodeToUTF8 calls
bidix.upload.updateOriginal = function(original, posDiv)
{
	if (!posDiv)
		posDiv = locateStoreArea(original);
	if((posDiv[0] == -1) || (posDiv[1] == -1)) {
		alert(config.messages.invalidFileError.format([localPath]));
		return;
	}
	var revised = original.substr(0,posDiv[0] + startSaveArea.length) + "\n" +
				store.allTiddlersAsHtml() + "\n" +
				original.substr(posDiv[1]);
	var newSiteTitle = getPageTitle().htmlEncode();
	revised = revised.replaceChunk("<title"+">","</title"+">"," " + newSiteTitle + " ");
	revised = updateMarkupBlock(revised,"PRE-HEAD","MarkupPreHead");
	revised = updateMarkupBlock(revised,"POST-HEAD","MarkupPostHead");
	revised = updateMarkupBlock(revised,"PRE-BODY","MarkupPreBody");
	revised = updateMarkupBlock(revised,"POST-SCRIPT","MarkupPostBody");
	return revised;
};

//
// UploadLog
// 
// config.options.chkUploadLog :
//		false : no logging
//		true : logging
// config.options.txtUploadLogMaxLine :
//		-1 : no limit
//      0 :  no Log lines but UploadLog is still in place
//		n :  the last n lines are only kept
//		NaN : no limit (-1)

bidix.UploadLog = function() {
	if (!config.options.chkUploadLog) 
		return; // this.tiddler = null
	this.tiddler = store.getTiddler("UploadLog");
	if (!this.tiddler) {
		this.tiddler = new Tiddler();
		this.tiddler.title = "UploadLog";
		this.tiddler.text = "| !date | !user | !location | !storeUrl | !uploadDir | !toFilename | !backupdir | !origin |";
		this.tiddler.created = new Date();
		this.tiddler.modifier = config.options.txtUserName;
		this.tiddler.modified = new Date();
		store.addTiddler(this.tiddler);
	}
	return this;
};

bidix.UploadLog.prototype.addText = function(text) {
	if (!this.tiddler)
		return;
	// retrieve maxLine when we need it
	var maxLine = parseInt(config.options.txtUploadLogMaxLine,10);
	if (isNaN(maxLine))
		maxLine = -1;
	// add text
	if (maxLine != 0) 
		this.tiddler.text = this.tiddler.text + text;
	// Trunck to maxLine
	if (maxLine >= 0) {
		var textArray = this.tiddler.text.split('\n');
		if (textArray.length > maxLine + 1)
			textArray.splice(1,textArray.length-1-maxLine);
			this.tiddler.text = textArray.join('\n');		
	}
	// update tiddler fields
	this.tiddler.modifier = config.options.txtUserName;
	this.tiddler.modified = new Date();
	store.addTiddler(this.tiddler);
	// refresh and notifiy for immediate update
	story.refreshTiddler(this.tiddler.title);
	store.notify(this.tiddler.title, true);
};

bidix.UploadLog.prototype.startUpload = function(storeUrl, toFilename, uploadDir,  backupDir) {
	if (!this.tiddler)
		return;
	var now = new Date();
	var text = "\n| ";
	var filename = bidix.basename(document.location.toString());
	if (!filename) filename = '/';
	text += now.formatString("0DD/0MM/YYYY 0hh:0mm:0ss") +" | ";
	text += config.options.txtUserName + " | ";
	text += "[["+filename+"|"+location + "]] |";
	text += " [[" + bidix.basename(storeUrl) + "|" + storeUrl + "]] | ";
	text += uploadDir + " | ";
	text += "[[" + bidix.basename(toFilename) + " | " +toFilename + "]] | ";
	text += backupDir + " |";
	this.addText(text);
};

bidix.UploadLog.prototype.endUpload = function(status) {
	if (!this.tiddler)
		return;
	this.addText(" "+status+" |");
};

//
// Utilities
// 

bidix.checkPlugin = function(plugin, major, minor, revision) {
	var ext = version.extensions[plugin];
	if (!
		(ext  && 
			((ext.major > major) || 
			((ext.major == major) && (ext.minor > minor))  ||
			((ext.major == major) && (ext.minor == minor) && (ext.revision >= revision))))) {
			// write error in PluginManager
			if (pluginInfo)
				pluginInfo.log.push("Requires " + plugin + " " + major + "." + minor + "." + revision);
			eval(plugin); // generate an error : "Error: ReferenceError: xxxx is not defined"
	}
};

bidix.dirname = function(filePath) {
	if (!filePath) 
		return;
	var lastpos;
	if ((lastpos = filePath.lastIndexOf("/")) != -1) {
		return filePath.substring(0, lastpos);
	} else {
		return filePath.substring(0, filePath.lastIndexOf("\\"));
	}
};

bidix.basename = function(filePath) {
	if (!filePath) 
		return;
	var lastpos;
	if ((lastpos = filePath.lastIndexOf("#")) != -1) 
		filePath = filePath.substring(0, lastpos);
	if ((lastpos = filePath.lastIndexOf("/")) != -1) {
		return filePath.substring(lastpos + 1);
	} else
		return filePath.substring(filePath.lastIndexOf("\\")+1);
};

bidix.initOption = function(name,value) {
	if (!config.options[name])
		config.options[name] = value;
};

//
// Initializations
//

// require PasswordOptionPlugin 1.0.1 or better
bidix.checkPlugin("PasswordOptionPlugin", 1, 0, 1);

// styleSheet
setStylesheet('.txtUploadStoreUrl, .txtUploadBackupDir, .txtUploadDir {width: 22em;}',"uploadPluginStyles");

//optionsDesc
merge(config.optionsDesc,{
	txtUploadStoreUrl: "Url of the UploadService script (default: store.php)",
	txtUploadFilename: "Filename of the uploaded file (default: in index.html)",
	txtUploadDir: "Relative Directory where to store the file (default: . (downloadService directory))",
	txtUploadBackupDir: "Relative Directory where to backup the file. If empty no backup. (default: ''(empty))",
	txtUploadUserName: "Upload Username",
	pasUploadPassword: "Upload Password",
	chkUploadLog: "do Logging in UploadLog (default: true)",
	txtUploadLogMaxLine: "Maximum of lines in UploadLog (default: 10)"
});

// Options Initializations
bidix.initOption('txtUploadStoreUrl','');
bidix.initOption('txtUploadFilename','');
bidix.initOption('txtUploadDir','');
bidix.initOption('txtUploadBackupDir','');
bidix.initOption('txtUploadUserName','');
bidix.initOption('pasUploadPassword','');
bidix.initOption('chkUploadLog',true);
bidix.initOption('txtUploadLogMaxLine','10');


// Backstage
merge(config.tasks,{
	uploadOptions: {text: "upload", tooltip: "Change UploadOptions and Upload", content: '<<uploadOptions>>'}
});
config.backstageTasks.push("uploadOptions");


//}}}

Here some miscellaneous videos posted on youtube:



PWP experiment:

<html>
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/2cEOWKdj8wM&hl=en&fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/2cEOWKdj8wM&hl=en&fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object>
</html>

[[Balanced vortex]] experiment:

<html>
<object style="height: 344px; width: 425px"><param name="movie" value="http://www.youtube.com/v/MqX_UVhTVK8"><param name="allowFullScreen" value="true"><param name="allowScriptAccess" value="always"><embed src="http://www.youtube.com/v/MqX_UVhTVK8" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="425" height="344"></object>
</html>

[[Quasi-Geostrophy]] model simulation:
<html>
<object style="height: 344px; width: 425px"><param name="movie" value="http://www.youtube.com/v/K2a1gkjh0yo"><param name="allowFullScreen" value="true"><param name="allowScriptAccess" value="always"><embed src="http://www.youtube.com/v/K2a1gkjh0yo" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="425" height="344"></object>
</html>

<html>
</html>

Symmetric, Asymmetric and Bickley  [[Jet instability]] :
[img[http://i2.ytimg.com/vi/iMegq3MIDyo/default.jpg][http://www.youtube.com/watch?v=iMegq3MIDyo]] [img[http://i3.ytimg.com/vi/VA3RUSgkOqU/default.jpg][http://www.youtube.com/watch?v=VA3RUSgkOqU]] [img[http://i1.ytimg.com/vi/T7rFiGjHBX4/default.jpg][http://www.youtube.com/watch?v=T7rFiGjHBX4]]

[[Full SST, Seasonal cycle only and anomalies]]:
[img[http://i3.ytimg.com/vi/RUNzSA-f7aQ/default.jpg][http://www.youtube.com/watch?v=RUNzSA-f7aQ]] [img[http://i1.ytimg.com/vi/TvgKJkOj5-4/default.jpg][http://www.youtube.com/watch?v=TvgKJkOj5-4]] [img[http://i2.ytimg.com/vi/-BhatVL-d78/default.jpg][http://www.youtube.com/watch?v=-BhatVL-d78]]

[[Altimeter]] derived velocities:
[img[http://i2.ytimg.com/vi/Ugyahst_3R8/default.jpg][http://www.youtube.com/watch?v=Ugyahst_3R8]] [img[http://i3.ytimg.com/vi/Jaf2MjJ5tg0/default.jpg][http://www.youtube.com/watch?v=Jaf2MjJ5tg0]]
[[VirtualBox|http://www.virtualbox.org/]] is yet another virtualization tool like ~VMWare and Qemu. 

The reasons to use are:  
1) Very easy to configure;
2) Far more evolved than Qemu, actually it compete equally with ~VMWare;
3) ~OpenSource version! Allows for machine creating, unlike ~VMWare player;
4) Installable from "linux package manager". No need for kernel compilation over and over.


How to [[resize a VDI]]!

To start a Virtual Machine directly, without the first gui interface, just make an icon for:
> {{{VBoxManage startvm <your virtual machine name>}}}
 
Welcome to my open work journal.

After losing data a couple of times, and/or looking for a specific script to compute 2+2 in a 500G external disk for hours I thought that it was finally the time to join the crowd and have my stuff on the web.

Suggestions and feedbacks are welcome. Everything here is distributed in an "Open Source like" fashion. Check the [[Bro-Code]] for more information. *

This web-page is neither a tutorial nor a How To anything. It is just some thoughts,  Tips and Tricks  that I need quick access to**. If you want to use them too, be my guest. If you want to give some [[feedback|ocefpaf]], even better.




\* Yes, the lawyers have own. If I do not specify a license, Copyright is automatic...
\** RSS readers add this feed: http://ocefpaf.tiddlyspot.com/index.xml
[[Google bibtex]] &rarr; Link your references to Google Scholar
[[Clean bibtex]] &rarr;  Cleaner bibtex file
<html>
<head>
<title>~/Latex-Tricks/beamer-template.tex.html</title>
<meta name="Generator" content="Vim/7.2">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<style type="text/css">
<!--
.Type { color: #2e8b57; font-weight: bold; }
pre { font-family: monospace; color: #000000; background-color: #ffffff; }
body { font-family: monospace; color: #000000; background-color: #ffffff; }
.Comment { color: #0000ff; }
.Statement { color: #a52a2a; font-weight: bold; }
.Special { color: #6a5acd; }
.Constant { color: #ff00ff; }
.PreProc { color: #a020f0; }
-->
</style>
</head>
<body>
<pre>
<span class="Comment">% beamer example</span>
<span class="Statement">\documentclass</span><span class="Special">[</span><span class="Constant">xcolor=dvipsnames</span><span class="Special">]{</span><span class="PreProc">beamer</span><span class="Special">}</span>          <span class="Comment">% change color</span>
<span class="Statement">\setbeamercolor</span><span class="Special">{</span>structure<span class="Special">}{</span>fg=OliveGreen!50!black<span class="Special">}</span> <span class="Comment">% apply nice green color</span>
<span class="Statement">\usetheme</span><span class="Special">{</span>Warsaw<span class="Special">}</span>                                  <span class="Comment">% theme Warsaw</span>
<span class="Statement">\usepackage</span><span class="Special">[</span><span class="Constant">framed,numbered</span><span class="Special">]</span><span class="Special">{</span><span class="Special">mcode</span><span class="Special">}</span>                <span class="Comment">% matlab code inside text</span>
<span class="Statement">\usepackage</span><span class="Special">{</span><span class="Special">multimedia</span><span class="Special">}</span>                            <span class="Comment">% movie and sound</span>
<span class="Statement">\setbeamertemplate</span><span class="Special">{</span>blocks<span class="Special">}[</span>rounded<span class="Special">][</span>shadow=true<span class="Special">]</span>   <span class="Comment">% nice round shadow box</span>
<span class="Statement">\setbeamertemplate</span><span class="Special">{</span>navigation symbols<span class="Special">}{}</span>           <span class="Comment">% remove lower navigation pannel</span>
<span class="Statement">\useoutertheme</span><span class="Special">{</span>infolines<span class="Special">}</span>                          <span class="Comment">% add info lines at the bottom</span>
<span class="Statement">\usepackage</span><span class="Special">{</span><span class="Special">amssymb,amsmath</span><span class="Special">}</span>                       <span class="Comment">% math</span>
<span class="Statement">\usepackage</span><span class="Special">{</span><span class="Special">fancybox</span><span class="Special">}</span>                              <span class="Comment">% box [shadowbox, fbox, doublebox, ovalbox, Ovalbox]</span>

<span class="Comment">% titlepage</span>
<span class="Statement">\title</span><span class="Special">[</span>seminario<span class="Special">]{</span>titulo<span class="Special">}</span>
<span class="Statement">\subtitle</span><span class="Special">{</span>subtitulo<span class="Special">}</span>
<span class="PreProc">\author{</span>Filipe Fernandes<span class="PreProc">}</span>
<span class="Statement">\institute</span><span class="Special">[</span>SMAST<span class="Special">]{</span>
  School for Marine Science and Technology<span class="Special">\\</span>
  <span class="Statement">\vspace</span>*<span class="Special">{</span><span class="Constant">0.25cm</span><span class="Special">}</span>
  University of Massachusetts Dartmouth<span class="Special">\\</span>
  <span class="Statement">\vspace</span>*<span class="Special">{</span><span class="Constant">0.25cm</span><span class="Special">}</span>
  <span class="Type">\texttt</span><span class="Special">{</span>ocefpaf@gmail.com<span class="Special">}</span>
<span class="Special">}</span>
<span class="Statement">\date</span><span class="Special">[</span>May 2009<span class="Special">]{</span>May 11, 2009<span class="Special">}</span>

<span class="PreProc">\begin{document}</span>

<span class="Comment">%% the titlepage frame</span>
<span class="Statement">\begin</span><span class="Special">{</span><span class="PreProc">frame</span><span class="Special">}[</span>plain<span class="Special">]</span>
  <span class="Statement">\titlepage</span>
<span class="Statement">\end</span><span class="Special">{</span><span class="PreProc">frame</span><span class="Special">}</span>

<span class="Comment">%% outline</span>
<span class="Statement">\begin</span><span class="Special">{</span><span class="PreProc">frame</span><span class="Special">}</span>
<span class="Statement">\frametitle</span><span class="Special">{</span>Outline of the talk<span class="Special">}</span>

<span class="Statement">\begin</span><span class="Special">{</span><span class="PreProc">itemize</span><span class="Special">}</span>
  <span class="Statement">\item</span> Introduction
  <span class="Statement">\pause</span>
  <span class="Statement">\item</span> Statement of the main theorem
  <span class="Statement">\pause</span>
  <span class="Statement">\item</span> Technical lemmata
  <span class="Statement">\pause</span>
  <span class="Statement">\item</span> Proof of the main theorem
  <span class="Statement">\pause</span>
  <span class="Statement">\item</span> Conclusions
<span class="Statement">\end</span><span class="Special">{</span><span class="PreProc">itemize</span><span class="Special">}</span>
<span class="Statement">\end</span><span class="Special">{</span><span class="PreProc">frame</span><span class="Special">}</span>

<span class="Comment">%% the presentation begin here</span>

<span class="Comment">%% DEMO FRAME</span>
<span class="Statement">\begin</span><span class="Special">{</span><span class="PreProc">frame</span><span class="Special">}</span>
<span class="Statement">\frametitle</span><span class="Special">{</span>demo slide<span class="Special">}</span>
<span class="Statement">\textcolor</span><span class="Special">{</span>red<span class="Special">}{</span>a colored text<span class="Special">}</span>
<span class="Comment">%% add a movie</span>
<span class="Statement">\movie</span><span class="Special">[</span>height=<span class="Constant">5cm</span>,width=<span class="Constant">6.5cm</span>,loop<span class="Special">]{</span>energy movie<span class="Special">}{</span>foo.avi<span class="Special">}</span>
<span class="Comment">%autostart,loop,repeat,palindrome,borderwidth,showcontrols,externalviewer</span>

<span class="Comment">%% Add figures</span>
<span class="Statement">\begin</span><span class="Special">{</span><span class="PreProc">center</span><span class="Special">}</span>
  <span class="Statement">\includegraphics</span><span class="Special">[width=0.3</span><span class="Statement">\textwidth</span><span class="Special">]</span><span class="Special">{</span><span class="Special">image1.pdf</span><span class="Special">}</span>
  <span class="Statement">\includegraphics</span><span class="Special">[width=0.3</span><span class="Statement">\textwidth</span><span class="Special">]</span><span class="Special">{</span><span class="Special">image2.png</span><span class="Special">}</span>
  <span class="Statement">\includegraphics</span><span class="Special">[width=0.3</span><span class="Statement">\textwidth</span><span class="Special">]</span><span class="Special">{</span><span class="Special">image3.jpg</span><span class="Special">}</span>
<span class="Statement">\end</span><span class="Special">{</span><span class="PreProc">center</span><span class="Special">}</span>

<span class="Comment">%% displayed formula:</span>
<span class="Special">\[</span><span class="Special"> </span><span class="Statement">\int</span><span class="Statement">_</span><span class="Special">{</span><span class="Special">-</span><span class="Statement">\infty</span><span class="Special">}</span><span class="Statement">^</span><span class="Statement">\infty</span><span class="Special"> e</span><span class="Statement">^</span><span class="Special">{</span><span class="Special">-x</span><span class="Statement">^</span><span class="Special">2</span><span class="Special">}</span><span class="Special"> \, dx </span><span class="Statement">=</span><span class="Special"> </span><span class="Statement">\sqrt</span><span class="Special">{</span><span class="Statement">\pi</span><span class="Special">}</span><span class="Special"> </span><span class="Special">\]</span>

<span class="Comment">%% itemized list:</span>
<span class="Statement">\begin</span><span class="Special">{</span><span class="PreProc">itemize</span><span class="Special">}</span>
  <span class="Statement">\item</span> itemized item 1
  <span class="Statement">\item</span> itemized item 2
  <span class="Statement">\item</span> itemized item 3
<span class="Statement">\end</span><span class="Special">{</span><span class="PreProc">itemize</span><span class="Special">}</span>
<span class="Comment">%% theorem</span>
<span class="Statement">\begin</span><span class="Special">{</span><span class="PreProc">theorem</span><span class="Special">}</span>
  In a right triangle, the square of hypotenuse equals
  the sum of squares of two other sides.
<span class="Statement">\end</span><span class="Special">{</span><span class="PreProc">theorem</span><span class="Special">}</span>
<span class="Statement">\end</span><span class="Special">{</span><span class="PreProc">frame</span><span class="Special">}</span>

<span class="PreProc">\end{document}</span>
</pre>
</body>
</html>
<html>
<head>
<title>~/Latex-Tricks/latex-template.tex.html</title>
<meta name="Generator" content="Vim/7.2">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<style type="text/css">
<!--
pre { font-family: monospace; color: #000000; background-color: #ffffff; }
body { font-family: monospace; color: #000000; background-color: #ffffff; }
.Comment { color: #0000ff; }
.Statement { color: #a52a2a; font-weight: bold; }
.Special { color: #6a5acd; }
.Constant { color: #ff00ff; }
.PreProc { color: #a020f0; }
-->
</style>
</head>
<body>
<pre>
<span class="Comment">%% style</span>
<span class="Statement">\documentclass</span><span class="Special">[</span><span class="Constant">a4paper,10pt</span><span class="Special">]{</span><span class="PreProc">article</span><span class="Special">}</span>
<span class="Comment">% ...         [letterpaper,10pt]{report}</span>
<span class="Comment">% ...         [a4paper,10pt]{scrartcl}</span>
<span class="Comment">% ...         [12pt,portuguese,a4paper,pdftex]{article}</span>

<span class="Statement">\usepackage</span><span class="Special">{</span><span class="Special">setspace</span><span class="Special">}</span>                                 <span class="Comment">% add command \doublespacing</span>
<span class="Statement">\usepackage</span><span class="Special">{</span><span class="Special">lineno</span><span class="Special">}</span>                                   <span class="Comment">% number lines</span>
<span class="Statement">\usepackage</span><span class="Special">[</span><span class="Constant">left=2.5cm,top=3cm,right=2.5cm</span><span class="Special">]</span><span class="Special">{</span><span class="Special">geometry</span><span class="Special">}</span> <span class="Comment">% change geometry</span>

<span class="Comment">%% insert draft-like watermark</span>
<span class="Statement">\usepackage</span><span class="Special">{</span><span class="Special">draftwatermark</span><span class="Special">}</span>
<span class="Statement">\SetWatermarkAngle</span><span class="Special">{</span>45<span class="Special">}</span>
<span class="Statement">\SetWatermarkLightness</span><span class="Special">{</span>0.8<span class="Special">}</span>
<span class="Statement">\SetWatermarkFontSize</span><span class="Special">{</span><span class="Constant">5cm</span><span class="Special">}</span>
<span class="Statement">\SetWatermarkScale</span><span class="Special">{</span>5<span class="Special">}</span>
<span class="Statement">\SetWatermarkText</span><span class="Special">{</span>DRAFT<span class="Special">}</span>

<span class="Comment">%% portuguese</span>
<span class="Statement">\usepackage</span><span class="Special">{</span><span class="Special">ucs</span><span class="Special">}</span>            <span class="Comment">% unicode</span>
<span class="Statement">\usepackage</span><span class="Special">[</span><span class="Constant">utf8</span><span class="Special">]</span><span class="Special">{</span><span class="Special">inputenc</span><span class="Special">}</span> <span class="Comment">% utf8+accents</span>

<span class="Comment">%% font</span>
<span class="Statement">\usepackage</span><span class="Special">[</span><span class="Constant">T1</span><span class="Special">]</span><span class="Special">{</span><span class="Special">fontenc</span><span class="Special">}</span>
<span class="Statement">\usepackage</span><span class="Special">{</span><span class="Special">lmodern</span><span class="Special">}</span> <span class="Comment">% better for PDFLatex</span>

<span class="Comment">%% Figures</span>
<span class="Statement">\usepackage</span><span class="Special">{</span><span class="Special">epsf,epsfig</span><span class="Special">}</span> <span class="Comment">% includegraphics [pdf, png etc]</span>
<span class="Comment">% \usepackage{subfigure}</span>
<span class="Comment">% \usepackage{rotating}</span>
<span class="Comment">% \usepackage[pdftex]{graphicx} % ? conflicts with the package below</span>
<span class="Statement">\usepackage</span><span class="Special">{</span><span class="Special">epstopdf</span><span class="Special">}</span> <span class="Comment">% convert eps2pdf on the fly</span>

<span class="Comment">%% Bibtex and extras</span>
<span class="Statement">\usepackage</span><span class="Special">{</span><span class="Special">natbib</span><span class="Special">}</span> <span class="Comment">% bibtex</span>
<span class="Statement">\usepackage</span><span class="Special">{</span><span class="Special">url</span><span class="Special">}</span>    <span class="Comment">% add url</span>
<span class="Statement">\usepackage</span><span class="Special">[</span><span class="Constant">bookmarks=false,colorlinks=true,urlcolor={green},linkcolor={green},pdfstartview={XYZ null null 1.22}</span><span class="Special">]</span><span class="Special">{</span><span class="Special">hyperref</span><span class="Special">}</span> <span class="Comment">% change colors for all references</span>

<span class="Comment">%% Math</span>
<span class="Statement">\usepackage</span><span class="Special">[</span><span class="Constant">framed,numbered</span><span class="Special">]</span><span class="Special">{</span><span class="Special">mcode</span><span class="Special">}</span> <span class="Comment">% add matlab code</span>
<span class="Statement">\usepackage</span><span class="Special">{</span><span class="Special">amssymb,amsmath</span><span class="Special">}</span>        <span class="Comment">% AMS math</span>
<span class="Statement">\usepackage</span><span class="Special">{</span><span class="Special">mathtools</span><span class="Special">}</span>              <span class="Comment">% extra math</span>
<span class="Statement">\everymath</span><span class="Special">{</span><span class="Statement">\displaystyle</span><span class="Special">}</span>          <span class="Comment">% all equation in displaystyle</span>

<span class="Comment">%% User commands</span>
<span class="Statement">\newcommand</span><span class="Special">{</span><span class="Statement">\pd</span><span class="Special">}[</span><span class="Constant">2</span><span class="Special">]{</span><span class="Statement">\frac</span><span class="Special">{</span><span class="Statement">\partial</span> <span class="Special">#1</span><span class="Special">}{</span><span class="Statement">\partial</span> <span class="Special">#2</span><span class="Special">}}</span> <span class="Comment">% partial derivatives</span>

<span class="Comment">%% PDF metadata</span>
<span class="Statement">\pdfinfo</span><span class="Special">{</span><span class="Comment">% hyperref overrides this</span>
  /Title    (Título)
  /Author   (Filipe Fernandes)
  /Creator  (Filipe Fernandes)
  /Producer (Filipe Fernandes)
  /Subject  (assunto)
  /Keywords (palavra-chave)
<span class="Special">}</span>

<span class="Comment">%% Front page</span>
<span class="PreProc">\title{</span>Título<span class="PreProc">}</span>
<span class="PreProc">\author{</span>Filipe Fernandes<span class="PreProc">}</span>
<span class="Statement">\date</span><span class="Special">{</span>dd-mmm-yyyy<span class="Special">}</span> <span class="Comment">% if comment gets today</span>

<span class="PreProc">\begin{document}</span>
<span class="Statement">\maketitle</span>
<span class="Statement">\clearpage</span>
<span class="Statement">\doublespacing</span>

<span class="PreProc">\section</span>*<span class="Special">{</span>section 1<span class="Special">}</span>

<span class="Statement">\clearpage</span>

<span class="PreProc">\section</span>*<span class="Special">{</span>Appendix<span class="Special">}</span>
<span class="Statement">\lstinputlisting</span><span class="Special">{</span>./m-file.m<span class="Special">}</span>    <span class="Statement">\clearpage</span>

<span class="PreProc">\end{document}</span>
</pre>
</body>
</html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>~/00-NOBKP/podcasts/download_podcast.py.html</title>
<meta name="Generator" content="Vim/7.3">
<meta name="plugin-version" content="vim7.3_v6">
<meta name="syntax" content="python">
<meta name="settings" content="use_css">
<style type="text/css">
<!--
pre { font-family: monospace; color: #000000; background-color: #ffffff; }
body { font-family: monospace; color: #000000; background-color: #ffffff; }
.Special { color: #6a5acd; }
.Identifier { color: #008b8b; }
.Constant { color: #ff00ff; }
.Statement { color: #a52a2a; font-weight: bold; }
.PreProc { color: #a020f0; }
.Comment { color: #0000ff; }
-->
</style>
</head>
<body>
<pre>
<span class="Comment">#!/usr/bin/env python</span>
<span class="Comment">#</span>
<span class="Comment">#</span>
<span class="Comment"># download_podcast.py</span>
<span class="Comment">#</span>
<span class="Comment"># purpose:  Download podcasts</span>
<span class="Comment"># author:   Filipe P. A. Fernandes</span>
<span class="Comment"># e-mail:   ocefpaf@gmail</span>
<span class="Comment"># web:      <a href="http://ocefpaf.tiddlyspot.com/">http://ocefpaf.tiddlyspot.com/</a></span>
<span class="Comment"># created:  05-Sep-2011</span>
<span class="Comment"># modified: Mon 05 Sep 2011 02:57:18 PM EDT</span>

<span class="PreProc">import</span> sys
<span class="PreProc">import</span> urllib
<span class="PreProc">from</span> ocefpaf.download_helper <span class="PreProc">import</span> progress_hook, filter_file

<span class="Comment"># ----------------------------------------------------------------------------</span>
<span class="Statement">if</span> 0:
    url = <span class="Constant">'<a href="http://media.libsyn.com/media/mdpitalian/">http://media.libsyn.com/media/mdpitalian/</a>'</span>
    num = <span class="Constant">101</span>  <span class="Comment"># Number of podcasts.</span>

    <span class="Statement">for</span> pod <span class="Statement">in</span> <span class="Identifier">range</span>(num):
        filename = <span class="Constant">'mdpi-%03d.mp3'</span> % pod
        <span class="Identifier">print</span>(<span class="Constant">&quot;Downloading %s&quot;</span> % filename)
        mp3 = urllib.urlretrieve(url+filename, filename, reporthook=progress_hook(sys.stdout))
        sys.stdout.write(<span class="Constant">'</span><span class="Special">\n</span><span class="Constant">'</span>)
        sys.stdout.flush()

<span class="Comment"># ----------------------------------------------------------------------------</span>
<span class="Statement">if</span> 1:
    url = <span class="Constant">'<a href="http://media.libsyn.com/media/maxmondo1it/">http://media.libsyn.com/media/maxmondo1it/</a>'</span>
    start = <span class="Constant">014</span>
    end = <span class="Constant">147</span>

    <span class="Statement">for</span> pod <span class="Statement">in</span> <span class="Identifier">range</span>(start, end + <span class="Constant">1</span>):
        filename = <span class="Constant">'mm-ii-pod-%03d.mp3'</span> % pod
        <span class="Identifier">print</span>(<span class="Constant">&quot;Downloading %s</span><span class="Special">\n</span><span class="Constant">&quot;</span> % filename)
        mp3 = urllib.urlretrieve(url+filename, filename, reporthook=progress_hook(sys.stdout))
        sys.stdout.write(<span class="Constant">'</span><span class="Special">\n</span><span class="Constant">'</span>)
        sys.stdout.flush()

<span class="Comment"># ----------------------------------------------------------------------------</span>
<span class="Statement">if</span> 0:
    uri = <span class="Constant">&quot;<a href="http://www.learnitalianpod.com">http://www.learnitalianpod.com</a>&quot;</span>
    num = <span class="Constant">53</span>  <span class="Comment"># Number of pages.</span>
    <span class="Statement">for</span> k <span class="Statement">in</span> <span class="Identifier">range</span>(<span class="Constant">1</span>, num):
        <span class="Statement">if</span> k == 1:
            url = uri
        else:
            url = <span class="Constant">'%s/page/%d/'</span> % (uri, k)

        <span class="Identifier">print</span>(<span class="Constant">'</span><span class="Special">\n</span><span class="Constant">%s'</span> % url)

        <span class="Comment"># Get only the mp3.</span>
        mp3_list = filter_file(url, <span class="Constant">&quot;mp3&quot;</span>)
        podcasts = []
        <span class="Statement">for</span> mp3 <span class="Statement">in</span> mp3_list:
            fmp3 = mp3.split(<span class="Constant">'/'</span>)[-<span class="Constant">1</span>]
            sys.stdout.write(<span class="Constant">'</span><span class="Special">\n</span><span class="Constant">%s</span><span class="Special">\n</span><span class="Constant">'</span> % mp3)
            urllib.urlretrieve(mp3, fmp3, reporthook=progress_hook(sys.stdout))
            sys.stdout.write(<span class="Constant">'</span><span class="Special">\n</span><span class="Constant">'</span>)
            sys.stdout.flush()
</pre>
</body>
</html>
We need:
*[[tex2pdf.py|http://gael-varoquaux.info/computers/posters/tex_to_pdf_py]]
*[[preamble.tex]]
*[[header.tex]]
*[[frame1.tex]]

obs: I got the idea [[here|http://gael-varoquaux.info/computers/posters/LaTeX-scribus.html]]
<html>
<head>
<title>~/svn-tools/ocefpaf-shell/fixPDF.py.html</title>
<meta name="Generator" content="Vim/7.2">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<style type="text/css">
<!--
.Constant { color: #ff00ff; }
.Special { color: #6a5acd; }
.Statement { color: #a52a2a; font-weight: bold; }
.Identifier { color: #008b8b; }
pre { font-family: monospace; color: #000000; background-color: #ffffff; }
body { font-family: monospace; color: #000000; background-color: #ffffff; }
.Comment { color: #0000ff; }
.PreProc { color: #a020f0; }
-->
</style>
</head>
<body>
<pre>
<span class="Comment">#!/usr/bin/env python</span>
<span class="Comment"># -*- coding: utf-8 -*-</span>

<span class="Comment">#! fixPDF.py</span>
<span class="Comment">#! ========================================</span>
<span class="Comment">#! author:   Filipe P. A. Fernandes</span>
<span class="Comment">#! e-mail:   ocefpaf@gmail.com</span>
<span class="Comment">#! web:      <a href="http://ocefpaf.tiddlyspot.com/">http://ocefpaf.tiddlyspot.com/</a></span>
<span class="Comment">#! date:     26-Jul-2010</span>
<span class="Comment">#! modified: 26-Jul-2010</span>
<span class="Comment">#!</span>
<span class="Comment">#! obs: This &quot;fix&quot; requires pdftk. I tried a python-only</span>
<span class="Comment">#! solution, using the several PDF packages out there,</span>
<span class="Comment">#! but the truth is: pdftk is still the best!</span>
<span class="Comment">#! However, a new file is created since pdftk cannot overwrite</span>
<span class="Comment">#! the input file.</span>

<span class="PreProc">import</span> subprocess
<span class="PreProc">import</span> sys
<span class="PreProc">import</span> tempfile
<span class="PreProc">import</span> getopt

<span class="Statement">def</span> <span class="Identifier">usage</span>():
    <span class="Statement">print</span> &quot;<span class="Constant"> Usage: fixPDF [options] &lt;infilename&gt;</span>&quot;
    <span class="Statement">print</span>
    <span class="Statement">print</span> &quot;<span class="Constant"> A new file is created since pdftk does not overwrite the input file.</span>&quot;
    <span class="Statement">print</span> &quot;<span class="Constant"> If the result is OK just overwrite the old file with the new one.</span>&quot;
    <span class="Statement">print</span> &quot;<span class="Constant"> Two extra metada entries are created: full title and the DOI number.</span>&quot;
    <span class="Statement">print</span>
    <span class="Statement">print</span> &quot;<span class="Constant">-f, --fulltitle      use full title instead of filename, do not use with title</span>&quot;
    <span class="Statement">print</span> &quot;<span class="Constant">-t, --title          force a title instead of filename, this will override --fulltitle</span>&quot;
    <span class="Statement">print</span> &quot;<span class="Constant">-o, --outfile        output, default is &lt;infilename&gt;-new.pdf</span>&quot;
    <span class="Statement">print</span> &quot;<span class="Constant">-v, --verbose        increase verbosity</span>&quot;
    <span class="Statement">print</span>

<span class="Statement">def</span> <span class="Identifier">main</span>():
    <span class="Statement">try</span>:
        opts, args = getopt.getopt(sys.argv[1:], '<span class="Constant">hvft:o:</span>', ['<span class="Constant">help</span>','<span class="Constant">verbose</span>','<span class="Constant">fulltitle</span>','<span class="Constant">title=</span>','<span class="Constant">output=</span>'])
    <span class="Statement">except</span> getopt.GetoptError, err:
        <span class="Statement">print</span> str(err)
        usage()
        sys.exit(2)

    <span class="Statement">if</span> len(args) != 1:
        usage()
        sys.exit(2)

    &quot;&quot;&quot;<span class="Constant"> defaults </span>&quot;&quot;&quot;
    fulltitle = False
    verbose   = False
    tmp       = tempfile.mktemp()
    infile    = args.pop()
    outfile   = infile[:-4] + &quot;<span class="Constant">-new.pdf</span>&quot;

    <span class="Statement">for</span> opt, arg <span class="Statement">in</span> opts:
        <span class="Statement">if</span> opt <span class="Statement">in</span> (&quot;<span class="Constant">-h</span>&quot;, &quot;<span class="Constant">--help</span>&quot;):
            usage()
            sys.exit()
        <span class="Statement">elif</span> opt <span class="Statement">in</span> (&quot;<span class="Constant">-f</span>&quot;, &quot;<span class="Constant">--fulltitle</span>&quot;):
            fulltitle = True
        <span class="Statement">elif</span> opt <span class="Statement">in</span> (&quot;<span class="Constant">-v</span>&quot;, &quot;<span class="Constant">--verbose</span>&quot;):
            verbose = True
        <span class="Statement">elif</span> opt <span class="Statement">in</span> (&quot;<span class="Constant">-t</span>&quot;, &quot;<span class="Constant">--title</span>&quot;):
            title = arg
        <span class="Statement">elif</span> opt <span class="Statement">in</span> (&quot;<span class="Constant">-o</span>&quot;, &quot;<span class="Constant">--output</span>&quot;):
            outfile = arg
        <span class="Statement">else</span>:
            <span class="Statement">assert</span> False, &quot;<span class="Constant">unhandled option</span>&quot;

    command = ('<span class="Constant">pdftk</span>',
               infile,
               '<span class="Constant">dump_data</span>',
               '<span class="Constant">output</span>',
               tmp
               )

    <span class="Statement">try</span>:
        subprocess.check_call(command)
    <span class="Statement">except</span>:
        <span class="Statement">print</span> &quot;&quot;&quot;<span class="Constant"> pdftk FAILED -- check if pdftk is installed</span>
<span class="Constant">        and/or the pdf file</span>&quot;&quot;&quot;
        sys.exit(-1)

    f = open(tmp, '<span class="Constant">r</span>')
    lines = f.readlines()
    f.close()

    <span class="Statement">for</span> line <span class="Statement">in</span> lines:
        <span class="Statement">if</span> &quot;<span class="Constant">doi:</span>&quot; <span class="Statement">in</span> line:
            idx1 = lines.index(line)
            doi  = line
            <span class="Statement">if</span> verbose:
                <span class="Statement">print</span> &quot;<span class="Constant">-- doi --</span>&quot;
                <span class="Statement">print</span> doi
        <span class="Statement">elif</span> &quot;<span class="Constant">BookmarkTitle:</span>&quot; <span class="Statement">in</span> line:
            idx2   = lines.index(line)
            line   = line.strip('<span class="Constant">BookmarkTitle:</span>')
            ftitle = line
            <span class="Statement">if</span> verbose:
                <span class="Statement">print</span> &quot;<span class="Constant">-- full title --</span>&quot;
                <span class="Statement">print</span> ftitle
            <span class="Statement">break</span> <span class="Comment"># only the first BookmarkTitle contains the original title</span>

    <span class="Statement">if</span> '<span class="Constant">doi</span>' <span class="Statement">in</span> locals():
        fname = infile[:-4].replace('<span class="Constant">_</span>','<span class="Constant"> </span>')
        fname = fname.replace('<span class="Constant">-</span>','<span class="Constant"> </span>')

        <span class="Statement">if</span> '<span class="Constant">title</span>' <span class="Statement">in</span> locals():
            newtitle = title
        <span class="Statement">elif</span> fulltitle:
            newtitle = ftitle
        <span class="Statement">else</span>:
            newtitle = fname

        lines[idx1] = &quot;<span class="Constant">InfoValue:</span>&quot; + newtitle + &quot;<span class="Special">\n</span>&quot;
        <span class="Statement">print</span> lines[idx1]

        <span class="Statement">if</span> verbose:
            <span class="Statement">print</span> &quot;<span class="Constant">-- Writting new title --</span>&quot;
            <span class="Statement">print</span> newtitle
            <span class="Statement">print</span>

        eline  = &quot;<span class="Constant">InfoKey: DigitalObjectIdentifier</span><span class="Special">\n</span>&quot; + doi
        eline += &quot;<span class="Constant">InfoKey: FileName</span><span class="Special">\n</span>&quot; + &quot;<span class="Constant">InfoValue: </span>&quot; + infile
        eline += &quot;<span class="Special">\n</span><span class="Constant">InfoKey: FullTitle</span><span class="Special">\n</span>&quot; + &quot;<span class="Constant">InfoValue: </span>&quot; + ftitle
        lines[-1] = eline

        <span class="Statement">if</span> verbose:
            <span class="Statement">print</span> &quot;<span class="Constant">-- Writting new metada --</span>&quot;
            <span class="Statement">print</span> eline

        f = open(tmp, '<span class="Constant">w</span>')
        f.writelines(lines)
        f.close()
    <span class="Statement">else</span>:
        <span class="Statement">print</span> &quot;<span class="Constant">This pdf does not contain a DOI in its metada</span>&quot;
        sys.exit(-1)

    &quot;&quot;&quot;<span class="Constant"> re-create the PDF with the new metada </span>&quot;&quot;&quot;
    command = ('<span class="Constant">pdftk</span>',
               infile,
               '<span class="Constant">update_info</span>',
               tmp,
               '<span class="Constant">output</span>',
               outfile
              )

    subprocess.check_call(command)

    <span class="Statement">if</span> verbose:
        <span class="Statement">print</span> &quot;<span class="Constant">-- new pdf --</span>&quot;
        <span class="Statement">print</span> outfile

<span class="Statement">if</span> __name__ == '<span class="Constant">__main__</span>':
    main()
</pre>
</body>
</html>
<html>
<head>
<title>~/Latex-Tricks/pdf-frame/frame1.tex.html</title>
<meta name="Generator" content="Vim/7.2">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<style type="text/css">
<!--
.Type { color: #2e8b57; font-weight: bold; }
.Constant { color: #ff00ff; }
pre { font-family: monospace; color: #000000; background-color: #ffffff; }
body { font-family: monospace; color: #000000; background-color: #ffffff; }
.Comment { color: #0000ff; }
.Statement { color: #a52a2a; font-weight: bold; }
.Special { color: #6a5acd; }
-->
</style>
</head>
<body>
<pre>
<span class="Comment">% ONE FRAME</span>
<span class="Statement">\frame</span><span class="Special">[</span>plain<span class="Special">]{</span>
<span class="Statement">\begin</span><span class="Special">{</span>minipage<span class="Special">}{</span>0.3<span class="Statement">\linewidth</span><span class="Special">}</span>
<span class="Statement">\begin</span><span class="Special">{</span>block<span class="Special">}{</span><span class="Type">\LARGE</span> Título do frame<span class="Special">}</span>

<span class="Type">\Large</span>
Um texto explicando o frame:
<span class="Statement">\begin</span><span class="Special">{</span>itemize<span class="Special">}</span>
    <span class="Statement">\item</span><span class="Special">[</span><span class="Statement">\rule</span><span class="Special">{</span><span class="Constant">1ex</span><span class="Special">}{</span><span class="Constant">1ex</span><span class="Special">}]</span> Item 1

    <span class="Statement">\item</span><span class="Special">[</span><span class="Statement">\rule</span><span class="Special">{</span><span class="Constant">1ex</span><span class="Special">}{</span><span class="Constant">1ex</span><span class="Special">}]</span> Item 2

    <span class="Statement">\item</span><span class="Special">[</span><span class="Statement">\rule</span><span class="Special">{</span><span class="Constant">1ex</span><span class="Special">}{</span><span class="Constant">1ex</span><span class="Special">}]</span> Item 3

<span class="Statement">\end</span><span class="Special">{</span>itemize<span class="Special">}</span>

<span class="Statement">\end</span><span class="Special">{</span>block<span class="Special">}</span>
<span class="Statement">\end</span><span class="Special">{</span>minipage<span class="Special">}</span>

<span class="Special">}</span>
</pre>
</body>
</html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>~/ESO/get_ESO.py.html</title>
<meta name="Generator" content="Vim/7.3">
<meta name="plugin-version" content="vim7.3_v6">
<meta name="syntax" content="python">
<meta name="settings" content="use_css">
<style type="text/css">
<!--
pre { font-family: monospace; color: #000000; background-color: #ffffff; }
body { font-family: monospace; color: #000000; background-color: #ffffff; }
.Special { color: #6a5acd; }
.Constant { color: #ff00ff; }
.Identifier { color: #008b8b; }
.Statement { color: #a52a2a; font-weight: bold; }
.PreProc { color: #a020f0; }
.Comment { color: #0000ff; }
-->
</style>
</head>
<body>
<pre>
<span class="Comment">#!/usr/bin/env python</span>
<span class="Comment">#</span>
<span class="Comment">#</span>
<span class="Comment"># get_ESO.py</span>
<span class="Comment">#</span>
<span class="Comment"># purpose:  Download pics for background</span>
<span class="Comment"># author:   Filipe P. A. Fernandes</span>
<span class="Comment"># e-mail:   ocefpaf@gmail</span>
<span class="Comment"># web:      <a href="http://ocefpaf.tiddlyspot.com/">http://ocefpaf.tiddlyspot.com/</a></span>
<span class="Comment"># created:  17-Feb-2012</span>
<span class="Comment"># modified: Fri 17 Feb 2012 03:26:38 PM EST</span>
<span class="Comment">#</span>
<span class="Comment"># obs: ESO top 100</span>
<span class="Comment"># <a href="http://www.eso.org/public/images/archive/top100/">http://www.eso.org/public/images/archive/top100/</a></span>

<span class="PreProc">import</span> sys
<span class="PreProc">import</span> urllib
<span class="PreProc">import</span> urllib2
<span class="PreProc">import</span> requests
<span class="PreProc">from</span> BeautifulSoup <span class="PreProc">import</span> BeautifulSoup, BeautifulStoneSoup

<span class="PreProc">from</span> ocefpaf.download_helper <span class="PreProc">import</span> progress_hook


<span class="Statement">def</span> <span class="Identifier">soupfy</span>(url):
    <span class="Constant">&quot;&quot;&quot;Returns a soup object.&quot;&quot;&quot;</span>
    html = urllib2.urlopen(url).read()
    soup = BeautifulSoup(html, convertEntities=BeautifulStoneSoup.ALL_ENTITIES)
    <span class="Statement">return</span> soup

url = <span class="Constant">&quot;<a href="http://www.eso.org/public/images/archive/top100/">http://www.eso.org/public/images/archive/top100/</a>&quot;</span>
soup = soupfy(url)

<span class="Statement">for</span> entry <span class="Statement">in</span> soup.findAll(<span class="Identifier">True</span>, attrs={<span class="Constant">'class'</span>: [<span class="Constant">'title'</span>]}):
    <span class="Statement">if</span> entry.text == <span class="Constant">&quot;ESO for the Public&quot;</span>:
        <span class="Statement">pass</span>
    else:
        <span class="Comment"># Download screen size version.</span>
        uri = <span class="Constant">'<a href="http://www.eso.org/public/archives/images/screen/">http://www.eso.org/public/archives/images/screen/</a>'</span>
        <span class="Comment"># FIXME: Terrible hack! Try has_key('href')</span>
        img = <span class="Identifier">str</span>(entry).split(<span class="Constant">'/'</span>)[<span class="Constant">3</span>]
        <span class="Statement">for</span> ext <span class="Statement">in</span> [<span class="Constant">'jpg'</span>, <span class="Constant">'JPG'</span>]:
            img = img + <span class="Constant">'.'</span> + ext
            url = uri + img
            <span class="Statement">if</span> requests.get(url).status_code == 200:
                <span class="Identifier">print</span>(<span class="Constant">'Downloading &quot;%s&quot;'</span> % entry.text)
                img = urllib.urlretrieve(url, filename=img,
                                         reporthook=progress_hook(sys.stdout))
                sys.stdout.write(<span class="Constant">'</span><span class="Special">\n</span><span class="Constant">'</span>)
                sys.stdout.flush()
                <span class="Statement">break</span>
</pre>
</body>
</html>
<html>
<head>
<title>~/Latex-Tricks/pdf-frame/header.tex.html</title>
<meta name="Generator" content="Vim/7.2">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<style type="text/css">
<!--
pre { font-family: monospace; color: #000000; background-color: #ffffff; }
body { font-family: monospace; color: #000000; background-color: #ffffff; }
.Comment { color: #0000ff; }
.Statement { color: #a52a2a; font-weight: bold; }
.Special { color: #6a5acd; }
.Constant { color: #ff00ff; }
.PreProc { color: #a020f0; }
-->
</style>
</head>
<body>
<pre>
<span class="Statement">\documentclass</span><span class="Special">[</span><span class="Constant">xcolor=dvipsnames</span><span class="Special">]{</span><span class="PreProc">beamer</span><span class="Special">}</span>          <span class="Comment">% change color                                                 </span>
<span class="Statement">\setbeamercolor</span><span class="Special">{</span>structure<span class="Special">}{</span>fg=OliveGreen!50!black<span class="Special">}</span> <span class="Comment">% apply nice green color</span>
<span class="Statement">\usetheme</span><span class="Special">{</span>Warsaw<span class="Special">}</span>                                  <span class="Comment">% theme Warsaw</span>
<span class="Statement">\usepackage</span><span class="Special">[</span><span class="Constant">framed,numbered</span><span class="Special">]</span><span class="Special">{</span><span class="Special">mcode</span><span class="Special">}</span>                <span class="Comment">% matlab code inside text</span>
<span class="Statement">\setbeamertemplate</span><span class="Special">{</span>blocks<span class="Special">}[</span>rounded<span class="Special">][</span>shadow=true<span class="Special">]</span>   <span class="Comment">% nice round shadow box</span>
<span class="Statement">\setbeamertemplate</span><span class="Special">{</span>navigation symbols<span class="Special">}{}</span>           <span class="Comment">% remove lower navigation pannel</span>
<span class="Statement">\useoutertheme</span><span class="Special">{</span>infolines<span class="Special">}</span>                          <span class="Comment">% add info lines at the bottom</span>
<span class="Statement">\usepackage</span><span class="Special">{</span><span class="Special">amssymb,amsmath</span><span class="Special">}</span>                       <span class="Comment">% math</span>
<span class="Statement">\usepackage</span><span class="Special">{</span><span class="Special">fancybox</span><span class="Special">}</span>                              <span class="Comment">% box [shadowbox, fbox, doublebox, ovalbox, Ovalbox]</span>
<span class="Statement">\usepackage</span><span class="Special">[</span><span class="Constant">utf8</span><span class="Special">]</span><span class="Special">{</span><span class="Special">inputenc</span><span class="Special">}</span>                        <span class="Comment">% add accents</span>
</pre>
</body>
</html>
Add this package:
{{{\usepackage{mdwlist} % single-space itemize}}}
then:
{{{
\begin{itemize*}
 \item
\end{itemize*}
}}}
//{{{

// AJAX code adapted from http://timmorgan.org/mini
// This is already loaded by ziddlywiki...
if(typeof(window["ajax"]) == "undefined") {
  ajax = {
      x: function(){try{return new ActiveXObject('Msxml2.XMLHTTP')}catch(e){try{return new ActiveXObject('Microsoft.XMLHTTP')}catch(e){return new XMLHttpRequest()}}},
      gets: function(url){var x=ajax.x();x.open('GET',url,false);x.send(null);return x.responseText}
  }
}

// Load jsMath
jsMath = {
  Setup: {inited: 1},          // don't run jsMath.Setup.Body() yet
  Autoload: {root: new String(document.location).replace(/[^\/]*$/,'jsMath/')}  // URL to jsMath directory, change if necessary
};
var jsMathstr;
try {
  jsMathstr = ajax.gets(jsMath.Autoload.root+"jsMath.js");
} catch(e) {
  alert("jsMath was not found: you must place the 'jsMath' directory in the same place as this file.  "
       +"The error was:\n"+e.name+": "+e.message);
  throw(e);  // abort eval
}
try {
  window.eval(jsMathstr);
} catch(e) {
  alert("jsMath failed to load.  The error was:\n"+e.name + ": " + e.message + " on line " + e.lineNumber);
}
jsMath.Setup.inited=0;  //  allow jsMath.Setup.Body() to run again

// Define wikifers for latex
config.formatterHelpers.mathFormatHelper = function(w) {
    var e = document.createElement(this.element);
    e.className = this.className;
    var endRegExp = new RegExp(this.terminator, "mg");
    endRegExp.lastIndex = w.matchStart+w.matchLength;
    var matched = endRegExp.exec(w.source);
    if(matched) {
        var txt = w.source.substr(w.matchStart+w.matchLength,
            matched.index-w.matchStart-w.matchLength);
        if(this.keepdelim) {
          txt = w.source.substr(w.matchStart, matched.index+matched[0].length-w.matchStart);
        }
        e.appendChild(document.createTextNode(txt));
        w.output.appendChild(e);
        w.nextMatch = endRegExp.lastIndex;
    }
}

config.formatters.push({
  name: "displayMath1",
  match: "\\\$\\\$",
  terminator: "\\\$\\\$\\n?", // 2.0 compatability
  termRegExp: "\\\$\\\$\\n?",
  element: "div",
  className: "math",
  handler: config.formatterHelpers.mathFormatHelper
});

config.formatters.push({
  name: "inlineMath1",
  match: "\\\$",
  terminator: "\\\$", // 2.0 compatability
  termRegExp: "\\\$",
  element: "span",
  className: "math",
  handler: config.formatterHelpers.mathFormatHelper
});

var backslashformatters = new Array(0);

backslashformatters.push({
  name: "inlineMath2",
  match: "\\\\\\\(",
  terminator: "\\\\\\\)", // 2.0 compatability
  termRegExp: "\\\\\\\)",
  element: "span",
  className: "math",
  handler: config.formatterHelpers.mathFormatHelper
});

backslashformatters.push({
  name: "displayMath2",
  match: "\\\\\\\[",
  terminator: "\\\\\\\]\\n?", // 2.0 compatability
  termRegExp: "\\\\\\\]\\n?",
  element: "div",
  className: "math",
  handler: config.formatterHelpers.mathFormatHelper
});

backslashformatters.push({
  name: "displayMath3",
  match: "\\\\begin\\{equation\\}",
  terminator: "\\\\end\\{equation\\}\\n?", // 2.0 compatability
  termRegExp: "\\\\end\\{equation\\}\\n?",
  element: "div",
  className: "math",
  handler: config.formatterHelpers.mathFormatHelper
});

// These can be nested.  e.g. \begin{equation} \begin{array}{ccc} \begin{array}{ccc} ...
backslashformatters.push({
  name: "displayMath4",
  match: "\\\\begin\\{eqnarray\\}",
  terminator: "\\\\end\\{eqnarray\\}\\n?", // 2.0 compatability
  termRegExp: "\\\\end\\{eqnarray\\}\\n?",
  element: "div",
  className: "math",
  keepdelim: true,
  handler: config.formatterHelpers.mathFormatHelper
});

// The escape must come between backslash formatters and regular ones.
// So any latex-like \commands must be added to the beginning of
// backslashformatters here.
backslashformatters.push({
    name: "escape",
    match: "\\\\.",
    handler: function(w) {
        w.output.appendChild(document.createTextNode(w.source.substr(w.matchStart+1,1)));
        w.nextMatch = w.matchStart+2;
    }
});

config.formatters=backslashformatters.concat(config.formatters);

window.wikify = function(source,output,highlightRegExp,tiddler)
{
    if(source && source != "") {
        if(version.major == 2 && version.minor > 0) {
            var wikifier = new Wikifier(source,getParser(tiddler),highlightRegExp,tiddler);
            wikifier.subWikifyUnterm(output);
        } else {
            var wikifier = new Wikifier(source,formatter,highlightRegExp,tiddler);
            wikifier.subWikify(output,null);
        }
        jsMath.ProcessBeforeShowing();
    }
}
//}}}
[[itemize*]] &rarr; Single space itemize
[[vim+spellcheck+pdflatex+bibtex]] &rarr; Almost as good as kile in a WYSIWYG way
[[mcode]] &rarr; better than verbatim to display matlab code in Latex
[[default_latex]] &rarr; startup template
[[default_beamer]] &rarr; startup template
[[extract_beamer_frames]] &rarr; useful to compose poster with scribus
create a repositoy directory
{{{
mkdir REPO
}}}

inside the directory create the project
{{{
svnadmin create project
}}}

import the data to the repository
{{{
svn import origin-dir file:///REPO/project/trunk -m "Import of project: rev 0"
}}}

check out a copy
{{{
svn co file:///REPO/project/trunk workdir
}}}

check differences before commit
{{{
svn diff
}}}

to commit the changes (send the modifications to the repository)
{{{
svn commit -m "log message e.g.: rev 1"
}}}

check the log
{{{
svn log
svn log -r 5:HEAD # for a particular revision
}}}

update the copy
{{{
svn update
}}}
The files can be download from [[here|http://www.mathworks.com/matlabcentral/fileexchange/8015]].

Some examples:
<html><head>
<title>~/Latex-Tricks/mcode_demo.tex.html</title>
<meta name="Generator" content="Vim/7.2">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<style type="text/css">
<!--
.Type { color: #2e8b57; font-weight: bold; }
pre { font-family: monospace; color: #000000; background-color: #ffffff; }
body { font-family: monospace; color: #000000; background-color: #ffffff; }
.Statement { color: #a52a2a; font-weight: bold; }
.Special { color: #6a5acd; }
.PreProc { color: #a020f0; }
.Comment { color: #0000ff; }
.Constant { color: #ff00ff; }
-->
</style></head> <body><pre>
<span class="Statement">\documentclass</span><span class="Special">{</span><span class="PreProc">article</span><sp
an class="Special">}</span>

<span class="Comment">% load package with ``framed'' and ``numbered'' option.</span>
<span class="Statement">\usepackage</span><span class="Special">[</span><span class="Constant">framed,numbered</span><span class="Special">]</span><span class="Special">{</span><span class="Special">mcode</span><span class="Special">}</span>

<span class="PreProc">\begin{document}</span>

1) This inline demo <span class="Statement">\mcode</span><span class="Special">{</span>for i=1:3, disp('cool'); end;<span class="Special">}</span> uses the <span class="PreProc">\verb|\mcode{}|</span> command.

2) The following is a block using the <span class="PreProc">\verb|lstlisting|</span> environment.
<span class="PreProc">\begin{lstlisting}</span>
<span class="PreProc">for i=1:3</span>
<span class="PreProc">        disp('cool');                   §and some \LaTeX\ in here: $x^2$§</span>
<span class="PreProc">        x_last = x(§\fontfamily{pcr}\selectfont end§);</span>
<span class="PreProc">end</span>
<span class="PreProc">\end{lstlisting}</span>

Note: That package was loaded with the <span class="PreProc">\verb|framed|</span> and <span class="PreProc">\verb|
numbered|</span> option.

3) Finally, you can also directly include an external m-file from somewhere on your hard drive (the very code you
use in MATLAB, if you want) using the <span class="PreProc">\verb|\lstinputlisting{/SOME/PATH/FILENAME.M}|</span>
command.

<span class="PreProc">\end{document}</span>
</pre>
</body> </html>
<html>                                                                                  
<head>                                                                                  
<title>my_qscathurr.m</title>                                                           
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">                
<meta name="generator" content="highlight.m &copy; 2003 Guillaume Flandin">             
<style type="text/css">                                                                 
  .comment {color: #228B22;}                                                            
  .string {color: #B20000;}                                                             
  .keyword, .cont {color: #0000FF;}                                                     
  .cont {text-decoration: underline;}                                                   
  .code {color: #000000;}                                                               
</style>                                                                                
</head>                                                                                 
<body>                                                                                  
<pre class="mcode"><span class="comment">%</span>                                       
<span class="comment">% my_qscathurr.m</span>                                           
<span class="comment">% purpose: Plot Hurricane(?) Catarina and Rossby number</span>    
<span class="comment">% author: Filipe P. A. Fernandes</span>                           
<span class="comment">% e-mail: ocefpaf@gmail.com</span>                                
<span class="comment">% web:    http://ocefpaf.tiddlyspot.com/</span>                   
<span class="comment">% date:   06-Apr-2009</span>                                      
<span class="comment">% last modified:   07-Apr-2009</span>                             
<span class="comment">%</span>                                                          
<span class="comment">% obs: based in qscathurr.m at:</span>                            
<span class="comment">%      http://www-paoc.mit.edu/12307/mass%20wind/scatterometer_instructions.htm</span>
<span class="comment">%      uses: get_scat_daily_v03.m and sd_round.m</span>                               
<span class="comment">%</span>                                                                              

cls

<span class="comment">% My choice</span>
fname = <span class="string">'20040325'</span>; <span class="comment">% storm filename</span>
storm = <span class="string">'Catarina'</span>; <span class="comment">% storm name for title only</span>
cntr = [-28.6539 317.8352]; <span class="comment">% lat, lon of storm center</span>                     
pass = 2; <span class="comment">% satellite pass: [1 ascending 2 descending]</span>                     
pad = 5;  <span class="comment">% degrees from storm center to extract data</span>                      

<span class="comment">% original hurricane</span>
<span class="comment">%  fname='20080711'; storm='Bertha'; cntr=[29.1 -62.1+360]; pass=2; pad=5;</span>

<span class="comment">% exctrat data using &quot;get_scat_daily_v03.m&quot;</span>
[mingmt,windspd,winddir,scatflag,radrain] = get_scat_daily_v03(fname);            
<span class="comment">% create lon, lat points</span>                             
lon = [0.125:.25:359.875]; lat = [-89.875:.25:89.875];                            

<span class="comment">% convert from speed,dir to zonal and merional components</span>
[u,v]=pol2cart(deg2rad(90 - winddir),windspd);                                        

<span class="comment">% find indices</span>
lt1 = find(lat &lt;= (cntr(1)-pad),1,<span class="string">'last'</span>);
lt2 = find(lat &gt;= (cntr(1)+pad),1,<span class="string">'first'</span>);
ln1 = find(lon &lt;= (cntr(2)-pad),1,<span class="string">'last'</span>); 
ln2 = find(lon &gt;= (cntr(2)+pad),1,<span class="string">'first'</span>);

LON = lon(ln1:ln2);
LAT = lat(lt1:lt2);
W   = windspd(ln1:ln2,lt1:lt2,pass)';
U   = u(ln1:ln2,lt1:lt2,pass)';      
V   = v(ln1:ln2,lt1:lt2,pass)';      

<span class="comment">% wind speed</span>
figure(1),                               
  subplot(1,2,1), hold on                
    [c,h] = contour(LON,LAT,W);          
    cl = clabel(c,h,<span class="string">'manual'</span>,<span class="string">'VerticalAlignment'</span>,<span class="string">'Middle'</span>,<span cla
ss="cont">...</span>                                                                                                                                   
                <span class="string">'FontSize'</span>,14,<span class="string">'LabelSpacing'</span>,330,<span class="string">'rotation'</span>,0);    
    <span class="keyword">for</span> hh = 1:length(cl)                                                                                                 
      strh = get(cl(hh),<span class="string">'String'</span>);                                                                                         
      set(cl(hh),<span class="string">'String'</span>,[strh,<span class="string">' m s^{-1}'</span>],<span class="string">'BackgroundColor'</span>,<spa
n class="string">'none'</span>,<span class="string">'Margin'</span>,0.1);                                                                              
    <span class="keyword">end</span>                                                                                                                   
<span class="comment">% plot range rings</span>                                                                                                        
    thet = 0:.05:2*pi;                                                                                                                                 
    <span class="keyword">for</span> r = 1:pad                                                                                                         
    rad = r*ones(1,length(thet));                                                                                                                      
    [xc,yc] = pol2cart(thet,rad);                                                                                                                      
    x = xc + cntr(2);                                                                                                                                  
    y = yc + cntr(1);                                                                                                                                  
    plot(x,y,<span class="string">'k:'</span>);                                                                                                        
    <span class="keyword">end</span>                                                                                                                   
    plot(cntr(2),cntr(1),<span class="string">'kx'</span>); <span class="comment">% center</span>                                                      
    title(<span class="string">'Wind Speed'</span>);                                                                                                   
    axis square;                                                                                                                                       
<span class="comment">% stream lines</span>                                                                                                            
  subplot(1,2,2), hold on                                                                                                                              
    h = streamslice(LON,LAT,U,V);                                                                                                                      
    set(h,<span class="string">'linewidth'</span>,1.5,<span class="string">'color'</span>,<span class="string">'k'</span>)                             
    title(<span class="string">'Streamlines'</span>)                                                                                                   
    set(gca,<span class="string">'xlim'</span>,lon([ln1 ln2]))                                                                                         
    set(gca,<span class="string">'ylim'</span>,lat([lt1 lt2]))                                                                                         
    axis square;                                                                                                                                       

<span class="comment">% rossby Numbers</span>
subplot(1,2,2), limx=xlim;          <span class="comment">% get x limits (longitude)</span>
dg2m=111000.*cos(pi/180*cntr(1));   <span class="comment">% convert degree to meters</span>
pt=6;                               <span class="comment">% number of point to evaluate Rossby number</span>
r1 = (limx(2) - cntr(2))*dg2m;      <span class="comment">% radius in meters</span>                         
r = linspace(0,r1,pt);              <span class="comment">% radius at pt</span>

<span class="comment">% theoretical Ro</span>
Rot = 0.5*(((r1.^2)./(r.^2)) - 1);  <span class="comment">% theoretical Rossby number</span>
lonx=linspace(cntr(2),limx(2),pt);  <span class="comment">% longitude at pt for plot (right from the center)</span>
[P, Pstr]=sd_round(Rot, 2, 1, 5);   <span class="comment">% round Rossby number (two decimal points)</span>
Pstr{1}=num2str(Rot(1));            <span class="comment">% add inf to the first Ro</span>

<span class="comment">% observed Ro</span>
lonxb=linspace(cntr(2),limx(1),pt);         <span class="comment">% longitude at pt for plot (left from the center)</span>
[idy,dist]=near(LAT,cntr(1),1);             <span class="comment">% Y-center</span>
<span class="keyword">for</span> i = 1:pt                                <span class="comment">% X-center</span>
 [idx(i),dist(i)]=near(LON,lonxb(i),1);
 Roo(i) = W(idx(i),idy)./(abs(sw_f(cntr(1)))*r(i)); <span class="comment">% Observed Rossby number</span>
<span class="keyword">end</span>
[Po, Postr]=sd_round(Roo, 2, 1, 5);   <span class="comment">% round Rossby number (two decimal points)</span>
Postr{1}=num2str(Roo(1));             <span class="comment">% add inf to the first Ro</span>

<span class="comment">% plot Rossby numbers</span>
<span class="keyword">for</span> i = 1:length(lonx)
  h=text(lonx(i),cntr(1),Pstr(i));
  set(h,<span class="string">'Color'</span>,<span class="string">'r'</span>,<span class="string">'FontSize'</span>,12,<span class="string">'FontWeight'
</span>,<span class="string">'Bold'</span>)
  h=text(lonxb(i),cntr(1),Postr(i));
  set(h,<span class="string">'Color'</span>,<span class="string">'b'</span>,<span class="string">'FontSize'</span>,12,<span class="string">'FontWeight'
</span>,<span class="string">'Bold'</span>)
<span class="keyword">end</span>

suplabel(<span class="string">'Longitude'</span>,<span class="string">'x'</span>)
suplabel(<span class="string">'Latitude'</span>,<span class="string">'y'</span>)
suplabel([<span class="string">'Hurricane '</span>,storm,<span class="string">' '</span>,[fname(1:4) <span class="string">'/'</span> fname(5:6) <span c
lass="string">'/'</span> fname(7:end)]],<span class="string">'t'</span>)
savefig(<span class="string">'hurricane'</span>,1,<span class="string">'pdf'</span>,<span class="string">'-r300'</span>)
</pre>

</body>
</html>
<html>                                                             
<head>                                                             
<title>nceprr_loaddap.m</title>                                    
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="generator" content="highlight.m &copy; 2003 Guillaume Flandin">
<style type="text/css">                                                    
  .comment {color: #228B22;}                                               
  .string {color: #B20000;}                                                
  .keyword, .cont {color: #0000FF;}                                        
  .cont {text-decoration: underline;}                                      
  .code {color: #000000;}                                                  
</style>                                                                   
</head>                                                                    
<body>                                                                     
<pre class="mcode"><span class="comment">%</span>                          
<span class="comment">% nceprr.m</span>                                    
<span class="comment">% purpose: load ncep data from opendap</span>        
<span class="comment">% author: Filipe Fernandes</span>                    
<span class="comment">% date: 30-May-08</span>                             
<span class="comment">%</span>                                             
<span class="comment">% obs:  FillValue not working</span>                 
<span class="comment">% start date has a problem need a -1 day...</span>   

cls

<span class="comment">% NCEP NARR</span>
<span class="comment">%  url='http://nomads.ncdc.noaa.gov:9091/dods/NCEP_NARR_DAILY/200608/200608/narr-a_221_20060
8dd_hh00_000'; % August</span>                                                                                    
url=<span class="string">'http://nomads.ncdc.noaa.gov:9091/dods/NCEP_NARR_DAILY/200609/200609/narr-a_221_200609dd_
hh00_000'</span>; <span class="comment">% September</span>                                                        

<span class="comment">% fetch attributes</span>
att = loaddap(<span class="string">'-A'</span>,url);

<span class="comment">% [time][latmin:latmax][lonmin:lonmax] [0:247][54:121][361:441]</span>
<span class="comment">% time 1 month, lat: 27.75 to 50.25, lon: -80.125 to -50.125</span>   
tconst   = <span class="string">'[0:247]'</span>;                                           
latconst = <span class="string">'[75:135]'</span>;                                          
lonconts = <span class="string">'[374:454]'</span>;                                         

<span class="comment">% time vector starting from &quot;days since 1-1-1 00:00:0.0&quot;</span>
loaddap([url,<span class="string">'?time'</span>])
time_str=datestr(datenum(1,1,0)+time-1);

<span class="comment">% Whole NARR domain</span>
lat=[0:0.3750:89.6250];
lon=[-220:0.3750:-0.6250];

<span class="comment">% u,v-time-lon-lat</span>
durl=[url,<span class="string">'?ugrd10m.ugrd10m'</span>,tconst,latconst,lonconts];loaddap(durl);
durl=[url,<span class="string">'?vgrd10m.vgrd10m'</span>,tconst,latconst,lonconts];loaddap(durl);
durl=[url,<span class="string">'?vgrd10m.lon'</span>,lonconts];loaddap(durl);
durl=[url,<span class="string">'?vgrd10m.lat'</span>,latconst];loaddap(durl);
durl=[url,<span class="string">'?vgrd10m.time'</span>,tconts];loaddap(durl);

<span class="comment">% Fill value na marra...</span>
ugrd10m(ugrd10m == max(ugrd10m(:))) = NaN;
vgrd10m(vgrd10m == max(vgrd10m(:))) = NaN;

<span class="comment">% test plot</span>
figure(1); set(1,<span class="string">'color'</span>,<span class="string">'w'</span>); hold on
 quiver(lon,lat,ugrd10m(:,:,1),vgrd10m(:,:,1),<span class="string">'k'</span>);
 xlabel(<span class="string">'Lon'</span>); ylabel(<span class="string">'Lat'</span>)
 title(<span class="string">'wind [m/s]'</span>)
</pre>

</body>
</html>
Check if a binary has OASP header:
{{{od -An -c -N38 binaryfile.bin }}}

<<tabs tabsClass
[[oasp_stats2table]] "m-file" [[oasp_stats2table]]
[[oasp_jhour]] "m-file" [[oasp_jhour]]
[[oasp_jhour2matlab]] "m-file" [[oasp_jhour2matlab]]
[[oasp_greg]] "m-file" [[oasp_greg]]
[[oasp_bin2dat]] "m-file" [[oasp_bin2dat]]
[[oasp_bin2asc]] "m-file" [[oasp_bin2asc]]>>
<html>
<head>
<title>oasp_bin2asc.m</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="generator" content="highlight.m &copy; 2003 Guillaume Flandin">
<style type="text/css">
  .comment {color: #228B22;}
  .string {color: #B20000;}
  .keyword, .cont {color: #0000FF;}
  .cont {text-decoration: underline;}
  .code {color: #000000;}
</style>
</head>
<body>
<pre class="mcode"><span class="keyword">function</span> oasp_bin2asc(filein,fileout,bo);
<span class="comment">% oasp_bin2asc.m - convert OASP binary file to ASCII</span>
<span class="comment">%</span>
<span class="comment">% use:  fileout = oasp_bin2asc(filein,fileout,bo)</span>
<span class="comment">% input:</span>
<span class="comment">%    input  - filein: binary file</span>
<span class="comment">%           - fileout: ascii file</span>
<span class="comment">%           - bo: byte order -&gt; 'be' for Big-endian </span>
<span class="comment">%                               'le' for Little-endian</span>
<span class="comment">%</span>
<span class="comment">% example:</span>
<span class="comment">%    oasp_bin2asc('unix_ec011.tn','unix_ec011.asc','be')</span>
<span class="comment">%</span>
<span class="comment">% author:   Filipe P. A. Fernandes</span>
<span class="comment">% e-mail:   ocefpaf@gmail.com</span>
<span class="comment">% web:      http://ocefpaf.tiddlyspot.com/</span>
<span class="comment">% date:     25-Jun-2009</span>
<span class="comment">% modified: 25-Jun-2009</span>
<span class="comment">%</span>
<span class="comment">% obs: need to test with a larger sample</span>
<span class="comment">%      some records spacing are unexplained</span>
<span class="comment">%</span>

<span class="comment">% check endianness, here is where the trick is!</span>
<span class="keyword">if</span> bo == <span class="string">'be'</span>
  byteorder = <span class="string">'ieee-be'</span>;
<span class="keyword">else</span>
  byteorder = <span class="string">'ieee-le'</span>;
<span class="keyword">end</span>

<span class="comment">% open inoput file for reading</span>
[fidr,msg] = fopen(filein,<span class="string">'rb'</span>, byteorder);

<span class="comment">% check if file was successfully opened</span>
  <span class="keyword">if</span> fidr &lt; 0, error([<span class="string">'cannot read file: '</span> filein]); <span class="keyword">end</span>

<span class="comment">%% get header</span>
  <span class="comment">% ascii part</span>
  entries = 38; <span class="comment">% there are some spaces and line breaks that need to be checked !</span>
                <span class="comment">% will it ever be 38 ?! need to check !</span>
  header = fread(fidr, entries, <span class="string">'char'</span>); headertxt = char(header');

  <span class="comment">% numeric part</span>
  [rec, count]   = fread(fidr, 4, <span class="string">'double'</span>, byteorder); <span class="comment">% start date</span>
  [num, count]   = fread(fidr, 3, <span class="string">'int32'</span>, byteorder);  <span class="comment">% record length</span>
  [inc, count]   = fread(fidr, 2, <span class="string">'double'</span>, byteorder); <span class="comment">% increment</span>
                                                        <span class="comment">% they all contain some kind of line break beteween them</span>
                                                        <span class="comment">% need to check later</span>

<span class="comment">%% data</span>
  [data, count]   = fread(fidr, [3 num(3)], <span class="string">'real*4'</span> , byteorder);
                                            <span class="comment">% real*4, and all other precision info, are hard coded.</span>
                                            <span class="comment">% if binary change this might be a source of error.</span>

  <span class="comment">% write ascii output</span>
  [fidw,msg] = fopen(fileout,<span class="string">'w'</span>);
  <span class="comment">% check if file was created</span>
  <span class="keyword">if</span> fidw &lt; 0, error([<span class="string">'cannot write file: '</span> fileout]); <span class="keyword">end</span>

  <span class="comment">% write header</span>
  fprintf(fidw, <span class="string">'%s\n'</span>,[<span class="string">'% filename '</span> headertxt(5:13)]);
  fprintf(fidw, <span class="string">'%s\n'</span>,[<span class="string">'% date '</span> headertxt(23:30)]);
  fprintf(fidw, <span class="string">'%s\n'</span>,[<span class="string">'% time '</span> headertxt(31:38)]);
  fprintf(fidw, <span class="string">'%s %6.8f\n'</span>,<span class="string">'% start'</span>,rec(2));
  fprintf(fidw, <span class="string">'%s %6.8f\n'</span>,<span class="string">'% finish'</span>,rec(4));
  fprintf(fidw, <span class="string">'%s\n'</span>,[<span class="string">'% num '</span> num2str(num(3))]);
  fprintf(fidw, <span class="string">'%s %E\n'</span>,<span class="string">'% inc'</span>,inc(2));

  <span class="comment">% write data</span>
  fprintf(fidw, <span class="string">'%g \n'</span>,data(3,:)');
<span class="comment">% here the 3 by length (num(3)) is a &quot;magic&quot; number that needs an explanation !!!</span>
<span class="comment">% probably only by reading the full original fortran code and/or asking the guy that</span>
<span class="comment">% wrote the binary file... I'm throwing away the first two colouns and keeping onlyt the data</span>

<span class="comment">%% close ASCII file</span>
  status = fclose(fidw);
  <span class="comment">% check if file was successfully closed</span>
  <span class="keyword">if</span> status &lt; 0, error([<span class="string">'cannot write file: '</span> fileout]); <span class="keyword">end</span>

<span class="keyword">return</span>
</pre>

</body>
</html>
<html>
<head>
<title>oasp_bin2dat.m</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="generator" content="highlight.m &copy; 2003 Guillaume Flandin">
<style type="text/css">
  .comment {color: #228B22;}
  .string {color: #B20000;}
  .keyword, .cont {color: #0000FF;}
  .cont {text-decoration: underline;}
  .code {color: #000000;}
</style>
</head>
<body>
<pre class="mcode"><span class="keyword">function</span> oasp_bin2dat(filein,fileout,bo);
<span class="comment">%</span>
<span class="comment">% oasp_bin2dat.m - convert OASP binary file to ASCII</span>
<span class="comment">%</span>
<span class="comment">% use:  fileout = oasp_bin2dat(filein,fileout,bo)</span>
<span class="comment">% input:</span>
<span class="comment">%    input  - filein: binary file</span>
<span class="comment">%           - fileout: ascii file</span>
<span class="comment">%           - bo: byte order -&gt; 'be' for Big-endian </span>
<span class="comment">%                               'le' for Little-endian</span>
<span class="comment">%</span>
<span class="comment">% example:</span>
<span class="comment">%    oasp_bin2dat('unix_ec011.tn','unix_ec011.dat','be')</span>
<span class="comment">%</span>
<span class="comment">% author:   Filipe P. A. Fernandes</span>
<span class="comment">% e-mail:   ocefpaf@gmail.com</span>
<span class="comment">% web:      http://ocefpaf.tiddlyspot.com/</span>
<span class="comment">% date:     25-Jun-2009</span>
<span class="comment">% modified: 25-Jun-2009</span>
<span class="comment">%</span>
<span class="comment">% obs: this version is different from oasp_bin2asc it also</span>
<span class="comment">%      saves the time vector in matlab serial date format</span>
<span class="comment">%</span>

<span class="comment">% check endianness, here is where the trick is!</span>
<span class="keyword">if</span> bo == <span class="string">'be'</span>
  byteorder = <span class="string">'ieee-be'</span>;
<span class="keyword">else</span>
  byteorder = <span class="string">'ieee-le'</span>;
<span class="keyword">end</span>

<span class="comment">% open inoput file for reading</span>
[fidr,msg] = fopen(filein,<span class="string">'rb'</span>, byteorder);

<span class="comment">% check if file was successfully opened</span>
  <span class="keyword">if</span> fidr &lt; 0, error([<span class="string">'cannot read file: '</span> filein]); <span class="keyword">end</span>

<span class="comment">%% get header</span>
  <span class="comment">% ascii part</span>
  entries = 38; <span class="comment">% there are some spaces and line breaks that need to be checked !</span>
                <span class="comment">% will it ever be 38 ?! need to check !</span>
  header = fread(fidr, entries, <span class="string">'char'</span>); headertxt = char(header');

  <span class="comment">% numeric part</span>
  [rec, count]   = fread(fidr, 4, <span class="string">'double'</span>, byteorder); <span class="comment">% start date</span>
  [num, count]   = fread(fidr, 3, <span class="string">'int32'</span>,  byteorder); <span class="comment">% record length</span>
  [inc, count]   = fread(fidr, 2, <span class="string">'double'</span>, byteorder); <span class="comment">% increment</span>
                                                        <span class="comment">% they all contain some kind of line break beteween them</span>
                                                        <span class="comment">% need to check later</span>

<span class="comment">%% data</span>
  [data, count]   = fread(fidr, [3 num(3)], <span class="string">'real*4'</span> , byteorder);
                                            <span class="comment">% real*4, and all other precision info, are hard coded.</span>
                                            <span class="comment">% if binary change this might be a source of error.</span>

<span class="comment">%% here the 3 by length (num(3)) is because FORTRAN add a record dimension every data</span>
  data=data(3,:);
<span class="comment">%% time vector</span>
  time=oasp_jhour2matlab(rec(2)):inc(2)/24:oasp_jhour2matlab(rec(4));

  <span class="comment">% write ascii output</span>
  [fidw,msg] = fopen(fileout,<span class="string">'w'</span>);
  <span class="comment">% check if file was created</span>
  <span class="keyword">if</span> fidw &lt; 0, error([<span class="string">'cannot write file: '</span> fileout]); <span class="keyword">end</span>

  <span class="comment">% write header</span>
  fprintf(fidw, <span class="string">'%s\n'</span>,[<span class="string">'% filename '</span> headertxt(5:13)]);
  fprintf(fidw, <span class="string">'%s\n'</span>,[<span class="string">'% date '</span> headertxt(23:30)]);
  fprintf(fidw, <span class="string">'%s\n'</span>,[<span class="string">'% time '</span> headertxt(31:38)]);
  fprintf(fidw, <span class="string">'%s %6.8f\n'</span>,<span class="string">'% start'</span>,rec(2));
  fprintf(fidw, <span class="string">'%s %6.8f\n'</span>,<span class="string">'% finish'</span>,rec(4));
  fprintf(fidw, <span class="string">'%s\n'</span>,[<span class="string">'% num '</span> num2str(num(3))]);
  fprintf(fidw, <span class="string">'%s %E\n'</span>,<span class="string">'% inc'</span>,inc(2));

  <span class="comment">% write data</span>
  fprintf(fidw, <span class="string">'%g \t %e\n'</span>,[data;time]);

<span class="comment">%% close ASCII file</span>
  status = fclose(fidw);
  <span class="comment">% check if file was successfully closed</span>
  <span class="keyword">if</span> status &lt; 0, error([<span class="string">'cannot write file: '</span> fileout]); <span class="keyword">end</span>

<span class="keyword">return</span>
</pre>

</body>
</html>
<html>
<head>
<title>oasp_greg.m</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="generator" content="highlight.m &copy; 2003 Guillaume Flandin">
<style type="text/css">
  .comment {color: #228B22;}
  .string {color: #B20000;}
  .keyword, .cont {color: #0000FF;}
  .cont {text-decoration: underline;}
  .code {color: #000000;}
</style>
</head>
<body>
<pre class="mcode"><span class="keyword">function</span> [gtime] = oasp_greg(jhours)
<span class="comment">%</span>
<span class="comment">% oasp_greg.m - Converts Julian hours from OASP to Gregorian calendar.</span>
<span class="comment">%</span>
<span class="comment">% use:  [gtime]=oasp_greg(jhours);</span>
<span class="comment">% input:</span>
<span class="comment">%    input - jhours from OASP</span>
<span class="comment">%</span>
<span class="comment">% output:</span>
<span class="comment">%    output - calendar date [yyyy mo da hr mi sec]. </span>
<span class="comment">%</span>
<span class="comment">% example:</span>
<span class="comment">%    [1998,01,11]=oasp_greg(859296)</span>
<span class="comment">%</span>
<span class="comment">%</span>
<span class="comment">% author:   Filipe P. A. Fernandes</span>
<span class="comment">% e-mail:   ocefpaf@gmail.com</span>
<span class="comment">% web:      http://ocefpaf.tiddlyspot.com/</span>
<span class="comment">% date:     05-Oct-2009</span>
<span class="comment">% modified: 05-Oct-2009</span>
<span class="comment">%</span>
<span class="comment">% obs: based on RPStuff gregorian.m</span>
<span class="comment">%</span>

      jd=jhours/24;

<span class="comment">% Add 0.2 milliseconds before Gregorian calculation to prevent</span>
<span class="comment">% roundoff error resulting from math operations on time </span>
<span class="comment">% from occasionally representing midnight as </span>
<span class="comment">% (for example) [1990 11 30 23 59 59.99...] instead of [1990 12 1 0 0 0]);</span>
<span class="comment">% If adding a 0.2 ms to time (each time you go back and forth between </span>
<span class="comment">% Julian and Gregorian) bothers you more than the inconvenient representation</span>
<span class="comment">% of Gregorian time at midnight you can comment this line out...</span>

      jd=jd+2.e-9;    

<span class="comment">%      if you want Julian Days to start at noon...</span>
<span class="comment">%      h=rem(jd,1)*24+12;</span>
<span class="comment">%      i=(h &gt;= 24);</span>
<span class="comment">%      jd(i)=jd(i)+1;</span>
<span class="comment">%      h(i)=h(i)-24;</span>

      secs=rem(jd,1)*24*3600;

      j = floor(jd) + 693902; <span class="comment">%-1721119;</span>
      in = 4*j -1;
      y = floor(in/146097);
      j = in - 146097*y;
      in = floor(j/4);
      in = 4*in +3;
      j = floor(in/1461);
      d = floor(((in - 1461*j) +4)/4);
      in = 5*d -3;
      m = floor(in/153);
      d = floor(((in - 153*m) +5)/5);
      y = y*100 +j;
      mo=m-9;
      yr=y+1;
      i=(m&lt;10);
      mo(i)=m(i)+3;
      yr(i)=y(i);
      [hour,min,sec]=s2hms(secs);
      gtime=[yr(:) mo(:) d(:) hour(:) min(:) sec(:)];
</pre>

</body>
</html>
<html>
<head>
<title>oasp_jhour.m</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="generator" content="highlight.m &copy; 2003 Guillaume Flandin">
<style type="text/css">
  .comment {color: #228B22;}
  .string {color: #B20000;}
  .keyword, .cont {color: #0000FF;}
  .cont {text-decoration: underline;}
  .code {color: #000000;}
</style>
</head>
<body>
<pre class="mcode"><span class="keyword">function</span> [jhour] = oasp_jhour(y, m, d, h, m, s)
<span class="comment">%</span>
<span class="comment">% oasp_jhour.m - description of what the function performs</span>
<span class="comment">%</span>
<span class="comment">% use:  [jhour] = oasp_jhour(d,m,ano,hora);</span>
<span class="comment">% input:</span>
<span class="comment">%    input - dia  -&gt; day</span>
<span class="comment">%          - mes  -&gt; month</span>
<span class="comment">%          - ano  -&gt; year</span>
<span class="comment">%          - hora -&gt; hour</span>
<span class="comment">%</span>
<span class="comment">% output:</span>
<span class="comment">%    output - Julian hours for OASP at 0000 hours, 1 Jan, 1900</span>
<span class="comment">%</span>
<span class="comment">% example:</span>
<span class="comment">%    859296 = oasp_jhour(1998,01,11)</span>
<span class="comment">%</span>
<span class="comment">% author:   Filipe P. A. Fernandes</span>
<span class="comment">% e-mail:   ocefpaf@gmail.com</span>
<span class="comment">% web:      http://ocefpaf.tiddlyspot.com/</span>
<span class="comment">% date:     04-Oct-2009</span>
<span class="comment">% modified: 04-Oct-2009</span>
<span class="comment">%</span>
<span class="comment">% obs: based on RPStuff julian.m</span>
<span class="comment">%</span>

<span class="comment">% Convert Gregorian calendar dates to corresponding</span>
<span class="comment">% Julian hours. Although the formal definition</span>
<span class="comment">% holds that Julian days start and end at noon, here</span>
<span class="comment">% Julian days start and end at midnight.</span>
<span class="comment">%</span>
<span class="comment">% In this convention, Julian day 0 began at 0000 hours, 1 Jan, 1900.</span>
<span class="comment">% 859296.00000000    jan 11 1998   0: 0:  0.000</span>
<span class="comment">% 2147483647</span>

      <span class="keyword">if</span> nargin==3,
        h=0.;
      <span class="keyword">elseif</span> nargin==1,
        [m,n]=size(y);
        <span class="keyword">if</span> n==3, <span class="comment">%assume h=m=s=0 if not supplied</span>
           h=zeros(m,1);
        <span class="keyword">else</span>
       h=h+(m+s/60)/60;
        <span class="keyword">end</span>
        d=y(:,3);
        m=y(:,2);
        y=y(:,1);
      <span class="keyword">end</span>
      mo=m+9;
      yr=y-1;
      i=find(m&gt;2);
      mo(i)=m(i)-3;
      yr(i)=y(i);
      c = floor(yr/100);
      yr = yr - c*100;
      j = floor((146097*c)/4) + floor((1461*yr)/4) + floor((153*mo +2)/5) +d -693902; <span class="comment">%+1721119;</span>

<span class="comment">%     If you want julian days to start and end at noon,</span>
<span class="comment">%     replace the following line with:</span>
<span class="comment">%     j=j+(h-12)/24;</span>

      jhour=j*24+h;
</pre>

</body>
</html>
<html>
<head>
<title>oasp_jhour2matlab.m</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="generator" content="highlight.m &copy; 2003 Guillaume Flandin">
<style type="text/css">
  .comment {color: #228B22;}
  .string {color: #B20000;}
  .keyword, .cont {color: #0000FF;}
  .cont {text-decoration: underline;}
  .code {color: #000000;}
</style>
</head>
<body>
<pre class="mcode"><span class="keyword">function</span> [matdate] = oasp_jhour2matlab(jhours);
<span class="comment">%</span>
<span class="comment">% oasp_jhour2matlab.m - convert OASP jhours to matlab datenum</span>
<span class="comment">%</span>
<span class="comment">% use:  [matdate] = oasp_jhour2matlab(jhours);</span>
<span class="comment">% input:</span>
<span class="comment">%    input - jhours from OASP</span>
<span class="comment">%</span>
<span class="comment">% output:</span>
<span class="comment">%    output - matlab date serial date number</span>
<span class="comment">%</span>
<span class="comment">% example:</span>
<span class="comment">%    729766 = oasp_jhour2matlab(859296)</span>
<span class="comment">%</span>
<span class="comment">% other m-files required: oasp_greg.m</span>
<span class="comment">%</span>
<span class="comment">% author:   Filipe P. A. Fernandes</span>
<span class="comment">% e-mail:   ocefpaf@gmail.com</span>
<span class="comment">% web:      http://ocefpaf.tiddlyspot.com/</span>
<span class="comment">% date:     05-Oct-2009</span>
<span class="comment">% modified: 05-Oct-2009</span>
<span class="comment">%</span>
<span class="comment">% obs: </span>
<span class="comment">%</span>

[gtime]   = oasp_greg(jhours);
matdate = datenum(gtime);
</pre>

</body>
</html>
<html>
<head>
<title>oasp_stats2table.m</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="generator" content="highlight.m &copy; 2003 Guillaume Flandin">
<style type="text/css">
  .comment {color: #228B22;}
  .string {color: #B20000;}
  .keyword, .cont {color: #0000FF;}
  .cont {text-decoration: underline;}
  .code {color: #000000;}
</style>
</head>
<body>
<pre class="mcode"><span class="keyword">function</span> [stats] = oasp_stats2table(data,tabfile)
<span class="comment">%</span>
<span class="comment">% oasp_stats2table.m - save a table of basic statistics</span>
<span class="comment">%</span>
<span class="comment">% use:  [mmean,mmedian,mmode,vvar,sstd,bvar,bstd] = oasp_stats2table(data);</span>
<span class="comment">% input:</span>
<span class="comment">%    input - data, for different datasets use a cell array</span>
<span class="comment">%            tabfilele</span>
<span class="comment">%</span>
<span class="comment">% output:</span>
<span class="comment">%    output - mmean   -&gt; mean</span>
<span class="comment">%             mmedian -&gt; media</span>
<span class="comment">%             mmode   -&gt; mode</span>
<span class="comment">%             vvar    -&gt; variance</span>
<span class="comment">%             sstd    -&gt; standard deviation</span>
<span class="comment">%             bvar    -&gt; biased variance</span>
<span class="comment">%             bstd    -&gt; biased standard deviation</span>
<span class="comment">%</span>
<span class="comment">% example:</span>
<span class="comment">%    [mmean,mmedian,mmode,vvar,sstd,bvar,bstd] = oasp_stats2table([{dataset1} {dataset2}]);</span>
<span class="comment">%</span>
<span class="comment">% other m-files required: saveascii.m</span>
<span class="comment">%</span>
<span class="comment">% author:   Filipe P. A. Fernandes</span>
<span class="comment">% e-mail:   ocefpaf@gmail.com</span>
<span class="comment">% web:      http://ocefpaf.tiddlyspot.com/</span>
<span class="comment">% date:     07-Oct-2009</span>
<span class="comment">% modified: 07-Oct-2009</span>
<span class="comment">%</span>
<span class="comment">% obs: use all &quot;ignore nans&quot; version</span>
<span class="comment">%</span>

<span class="keyword">if</span> ~iscell(data)
  f = find(isnan(data));
  <span class="keyword">if</span> isempty(f);
    mmean   = mean(data);
    mmedian = median(data);
    mmode   = mode(data);
    vvar    = var(data);
    sstd    = std(data);
    bvar    = sum((data-mmean).^2) / length(data);
    bstd    = sqrt(bvar);
  <span class="keyword">else</span>
    mmean   = nanmean(data);
    mmedian = nanmedian(data);
    mmode   = mode(data);
    vvar    = nanvar(data);
    sstd    = nanstd(data);
    data(f) = [];
    bvar    = sum((data-mmean).^2) / length(data);
    bstd    = sqrt(bvar);
  <span class="keyword">end</span>
stats=[mmean,mmedian,mmode,vvar,sstd,bvar,bstd];
<span class="keyword">else</span>
  <span class="keyword">for</span> k=1:length(data)
    f = find(isnan(data{k}));
    <span class="keyword">if</span> isempty(f);
      mmean   = mean(data{k});
      mmedian = median(data{k});
      mmode   = mode(data{k});
      vvar    = var(data{k});
      sstd    = std(data{k});
      bvar    = sum((data{k}-mmean).^2) / length(data{k});
      bstd    = sqrt(bvar);
    <span class="keyword">else</span>
      mmean   = nanmean(data{k});
      mmedian = nanmedian(data{k});
      mmode   = mode(data{k});
      vvar    = nanvar(data{k});
      sstd    = nanstd(data{k});
      data(f) = [];
      bvar    = sum((data{k}-mmean).^2) / length(data{k});
      bstd    = sqrt(bvar);
    <span class="keyword">end</span>
  stats(k,:)=[mmean,mmedian,mmode,vvar,sstd,bvar,bstd];
  <span class="keyword">end</span>
<span class="keyword">end</span>

<span class="keyword">if</span> nargin==2
  <span class="comment">% make latex table using saveascii</span>
  saveascii(<span class="string">'Mean Median Mode Variance Standard Deviation Biased-var Biased-std'</span>,tabfile)
  saveascii(stats,tabfile,{<span class="string">'%g'</span>, <span class="string">'%g'</span>, <span class="string">'%g'</span>, <span class="string">'%g'</span> , <span class="string">'%g'</span>, <span class="string">'%g'</span>, <span class="string">'%g'</span>},{<span class="string">' &amp; '</span>, <span class="string">' &amp; '</span>, <span class="string">' &amp; '</span>, <span class="string">' &amp; '</span>, <span class="string">' &amp; '</span>, <span class="string">' &amp; '</span>},<span class="string">'a'</span>)
  eval([<span class="string">'!sed -i ''s/$/\\\\/'' '</span>, tabfile,<span class="string">''</span>])
<span class="keyword">end</span>

<span class="keyword">return</span>
</pre>

</body>
</html>
Who to blame:

> Filipe Pires Alvarenga Fernandes
> 
> PhD candidate at University of Massachusetts Dartmouth
> Email: [img[http://services.nexodyne.com/email/icon/64dIUSQ8eg%3D%3D/vS11GdA%3D/R01haWw%3D/0/image.png]]
<html>
<head>
<title>~/Latex-Tricks/pdf-frame/preamble.tex.html</title>
<meta name="Generator" content="Vim/7.2">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<style type="text/css">
<!--
.Type { color: #2e8b57; font-weight: bold; }
pre { font-family: monospace; color: #000000; background-color: #ffffff; }
body { font-family: monospace; color: #000000; background-color: #ffffff; }
.Statement { color: #a52a2a; font-weight: bold; }
.Special { color: #6a5acd; }
.Constant { color: #ff00ff; }
.PreProc { color: #a020f0; }
.Comment { color: #0000ff; }
-->
</style>
</head>
<body>
<pre>
<span class="Statement">\documentclass</span><span class="Special">[</span><span class="Constant">slidestop,11pt,compress</span><span class="Special">]{</span><span class="PreProc">beamer</span><span class="Special">}</span>
<span class="Comment">%\geometry{verbose,a3paper}</span>
<span class="Statement">\geometry</span><span class="Special">{</span>verbose,a2paper<span class="Special">}</span>
<span class="Statement">\usepackage</span><span class="Special">{</span><span class="Special">beamerthemeshadow</span><span class="Special">}</span>
<span class="Statement">\usepackage</span><span class="Special">{</span><span class="Special">beamerouterthemedefault</span><span class="Special">}</span>
<span class="Statement">\usepackage</span><span class="Special">{</span><span class="Special">graphicx</span><span class="Special">}</span>
<span class="Comment">%\usepackage[T1]{fontenc}</span>

<span class="Statement">\usepackage</span><span class="Special">[</span><span class="Constant">T1</span><span class="Special">]</span><span class="Special">{</span><span class="Special">fontenc</span><span class="Special">}</span>
<span class="Statement">\usepackage</span><span class="Special">[</span><span class="Constant">latin1</span><span class="Special">]</span><span class="Special">{</span><span class="Special">inputenc</span><span class="Special">}</span>

<span class="Statement">\usenavigationsymbolstemplate</span><span class="Special">{}</span> <span class="Comment">% To remove navigation symbols</span>

<span class="Comment">%%%%%%%%%%%%%%%%%%%%%%%%%% Local defines : %%%%%%%%%%%%%%%%%%%%%%</span>
<span class="Comment">% define a slanted fraction:</span>
<span class="Statement">\def</span><span class="Statement">\slantfrac</span><span class="Special">#1#2</span><span class="Special">{</span><span class="Statement">\kern</span>.<span class="Constant">1em</span><span class="Statement">^</span><span class="Special">{</span><span class="Special">#1</span><span class="Special">}</span><span class="Statement">\kern</span>-.<span class="Constant">3em</span>/<span class="Statement">\kern</span>-.<span class="Constant">1em</span><span class="Statement">_</span><span class="Special">{</span><span class="Special">#2</span><span class="Special">}}</span>
<span class="Comment">% define Dirac's braket notation (stolen from braket.sty, that</span>
<span class="Comment">% unfortunately does not come with TeTeX</span>
<span class="Statement">\def</span><span class="Statement">\bra</span><span class="Special">#1</span><span class="Special">{</span><span class="Statement">\mathinner</span><span class="Special">{</span><span class="Statement">\langle</span><span class="Special">{</span><span class="Special">#1</span><span class="Special">}</span>|<span class="Special">}}</span>
<span class="Statement">\def</span><span class="Statement">\ket</span><span class="Special">#1</span><span class="Special">{</span><span class="Statement">\mathinner</span><span class="Special">{</span>|<span class="Special">{</span><span class="Special">#1</span><span class="Special">}</span><span class="Statement">\rangle</span><span class="Special">}}</span>
<span class="Statement">\xdefinecolor</span><span class="Special">{</span>darkgreen<span class="Special">}{</span>rgb<span class="Special">}{</span>0,0.5,0<span class="Special">}</span>
<span class="Statement">\xdefinecolor</span><span class="Special">{</span>darkred<span class="Special">}{</span>rgb<span class="Special">}{</span>0.7,0,0<span class="Special">}</span>
<span class="Comment">% Use the beamer balls. {{{-- (see beamerbaseauxtemplates.sty)</span>
<span class="Statement">\makeatletter</span>
<span class="Statement">\pgfdeclareradialshading</span><span class="Special">[</span>fg,parent.bg<span class="Special">]{</span>ballsphere<span class="Special">}{</span><span class="Statement">\pgfpoint</span><span class="Special">{</span>-<span class="Constant">0.1849315ex</span><span class="Special">}{</span>.<span class="Constant">2260273ex</span><span class="Special">}}</span><span class="Comment">%</span>
<span class="Special">{</span><span class="Comment">%</span>
color(<span class="Constant">0cm</span>)=(fg!15);
color(<span class="Constant">0.1643835ex</span>)=(fg!75);
color(<span class="Constant">0.3287671ex</span>)=(fg!70!black);
color(<span class="Constant">0.4520547ex</span>)=(fg!50!black);
color(<span class="Constant">0.53ex</span>)=(parent.bg)<span class="Special">}</span>
<span class="Statement">\def</span><span class="Statement">\ball</span><span class="Special">{</span><span class="Statement">\mbox</span><span class="Special">{</span><span class="Statement">\beamer</span>@usesphere<span class="Special">{</span>item projected<span class="Special">}{</span>bigsphere<span class="Special">}}}</span>
<span class="Statement">\def</span><span class="Statement">\alertball</span><span class="Special">{</span><span class="Statement">\mbox</span><span class="Special">{</span><span class="Statement">\beamer</span>@usesphere<span class="Special">{</span>alerted text<span class="Special">}{</span>ballsphere<span class="Special">}}}</span>
<span class="Statement">\def</span><span class="Statement">\exampleball</span><span class="Special">{</span><span class="Statement">\mbox</span><span class="Special">{</span><span class="Statement">\beamer</span>@usesphere<span class="Special">{</span>example text<span class="Special">}{</span>ballsphere<span class="Special">}}}</span>
<span class="Statement">\def</span><span class="Statement">\whiteball</span><span class="Special">{</span><span class="Statement">\mbox</span><span class="Special">{</span><span class="Statement">\beamer</span>@usesphere<span class="Special">{</span>white<span class="Special">}{</span>bigsphere<span class="Special">}}}</span>
<span class="Statement">\makeatother</span>    <span class="Comment">% --}}}</span>

<span class="Statement">\renewcommand</span><span class="Special">{</span><span class="Type">\emph</span><span class="Special">}[</span>1<span class="Special">]{</span><span class="Statement">\structure</span><span class="Special">{</span><span class="Type">\bfseries</span> <span class="Constant">#1</span><span class="Special">}}</span>
<span class="Statement">\renewcommand\implies</span><span class="Special">{</span><span class="Statement">\ifmmode</span> <span class="Statement">\implies</span> <span class="Statement">\else</span>
<span class="Statement">\structure</span><span class="Special">{</span>~<span class="Special">$</span><span class="Statement">\Rightarrow</span><span class="Special">$}</span>~<span class="Statement">\fi</span><span class="Special">}</span>
<span class="Statement">\newcommand</span><span class="Statement">\plus</span><span class="Special">{</span><span class="Statement">\ifmmode</span> + <span class="Statement">\else</span> <span class="Statement">\structure</span><span class="Special">{</span>~<span class="Special">$</span><span class="Special">+</span><span class="Special">$}</span>~<span class="Statement">\fi</span><span class="Special">}</span>
<span class="Statement">\let\oldsim\sim</span>
<span class="Statement">\renewcommand\sim</span><span class="Special">{</span><span class="Statement">\ifmmode</span> <span class="Statement">\oldsim</span> <span class="Statement">\else</span>
<span class="Statement">\structure</span><span class="Special">{</span>~<span class="Special">$</span><span class="Statement">\boldsymbol</span><span class="Special">{</span><span class="Statement">\oldsim</span><span class="Special">}$}</span>~<span class="Statement">\fi</span><span class="Special">}</span>


<span class="Comment">% I want HUGE fonts</span>
<span class="Comment">%\newcommand{\HUGE}{\fontsize{48}{55}\selectfont}</span>
<span class="Statement">\newcommand</span><span class="Special">{</span><span class="Statement">\HUGE</span><span class="Special">}{</span><span class="Statement">\fontsize</span><span class="Special">{</span>28<span class="Special">}{</span>31<span class="Special">}</span><span class="Statement">\selectfont</span><span class="Special">}</span>

<span class="Comment">% Display a grid to help align images :</span>
<span class="Comment">%\beamertemplategridbackground[1cm]</span>
<span class="Comment">%\beamertemplatesolidbackgroundcolor{red}</span>
<span class="Comment">% grid size of slide : (0cm,-7cm)x(11cm,1cm)</span>

<span class="Statement">\xdefinecolor</span><span class="Special">{</span>example<span class="Special">}{</span>rgb<span class="Special">}{</span>0.97,0.97,0.94<span class="Special">}</span>
<span class="Comment">%\xdefinecolor{example}{rgb}{0.95,0.95,0.95}</span>
<span class="Comment">%\xdefinecolor{exampledark}{rgb}{0.24,0.2,0.3}</span>
<span class="Statement">\xdefinecolor</span><span class="Special">{</span>exampledark<span class="Special">}{</span>rgb<span class="Special">}{</span>0.3,0.3,0.3<span class="Special">}</span>
<span class="Comment">%\setbeamercolor{block body}{fg=black,bg=intro}</span>
<span class="Statement">\setbeamercolor</span><span class="Special">{</span>block body example<span class="Special">}{</span>fg=black,bg=example<span class="Special">}</span>
<span class="Statement">\setbeamercolor</span><span class="Special">{</span>block title example<span class="Special">}{</span>fg=white,bg=exampledark<span class="Special">}</span>
</pre>
</body>
</html>
[[python-seawater]]&rarr; [[Python|http://www.python.org/]] translation of the [[CSIRO|http://www.cmar.csiro.au/datacentre/ext_docs/seawater.htm]] Matlab Seawater Package
[[pyreport|http://gael-varoquaux.info/computers/pyreport/]] &rarr; create nice literate report on your python scripts
[[fixPDF]] &rarr; Replace DOI from pdf metada with filename. It can also be the real title, but it is not recommend...
Documentation at Pypi now:

http://packages.python.org/seawater
1 &rarr; boot options: "init=/bin/bash"
2 &rarr; remount the "/": mount -o remount,rw /
3 &rarr; passwd
4 &rarr; reboot
1 &rarr; create a new VDI with a larger size
2 &rarr; set the old VDI as the primary IDE master and the new VDI as Primary IDE slave
3 &rarr; boot Vbox from any partition tool live CD
4 &rarr; run "fdisk -l", "dd if=/dev/hda of=/dev/hdb", and "fsck"
5 &rarr; resize the new partition with the partition tool and you're done!
[[my_qscathurr.m]] &rarr; plot hurricane and rossby number 
[[nceprr_loaddap.m]] &rarr; download surface flux forcing
[[oasp-toolbox]]

links:
http://woodshole.er.usgs.gov/operations/sea-mat/
http://www2.ocgy.ubc.ca/~rich/index.html
http://www.jmlilly.net/jmlsoft.html
[[Fun]]  &rarr; To start, the usual fun time with Matlab.

[[MatlabOpenDapJava]]  &rarr; Easiest way to access ~OpenDap data.

[[Meetpoint]] &rarr; Simple solution to make annotation to plots.

[[LatexTable]] &rarr; Make Latex table direct from Matlab.

[[Google earth animation]]  &rarr; ~GoogleEarth Toolbox example
* create a  @@color(blue):.vimrc@@ with:
{{{
set spell
setlocal spell spelllang=en_us
}}}

* the commands are:
{{{
]s ([s) — next (previous) misspelled word
z=  — view spelling suggestions for a mispelled word
zg — add a word to the dictionary
zug — undo the addition of a word to the dictionary
}}}

* install  @@color(blue):latexmk@@ and create the alias"
{{{
alias latexmkspeciale="grep -l '\\documentclass' *tex | xargs latexmk -pdf -pvc -silent"
}}}

* create a  @@color(blue):.latexmkrc@@:
{{{
$pdf_previewer = "start okular";
$pdf_update_method = 0;
}}}

* I did not test  @@color(blue):vim-latexsuite@@ and @@color(blue):latex-suite@@, but they  are need to fully simulate kile. Also the following lines in the  @@color(blue):.vimrc@@:
{{{
filetype indent on
filetype plugin on
filetype on
let g:tex_flavor='latex'
set grepprg=grep\ -nH\ $*
}}}

* How I use it? I call @@color(blue):latexmkspeciale@@ first, then open my tex using vi and every time I save it will update automagically!


obs: source http://www.tjansson.dk/?p=278
[[HTML symbols]]
[[THREDDS|http://www.unidata.ucar.edu/projects/THREDDS/tech/tutorial/]]