<!--{{{-->
<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>>



{{{
super@z-svr:$ df

Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sde5              9767184   2658392   7108792  28% /
varrun                  387836       116    387720   1% /var/run
varlock                 387836         8    387828   1% /var/lock
procbususb              387836       128    387708   1% /proc/bus/usb
udev                    387836       128    387708   1% /dev
devshm                  387836         0    387836   0% /dev/shm
/dev/sde1               289072     72944    216128  26% /boot
/dev/sde6              1951744    616072   1335672  32% /home
/dev/mapper/VGdata3-LVdata31
                     1191621100 703252524 488368576  60% /data
}}}
or
{{{
super@z-svr:$ df -h
}}}
to get size in MB or GB,
or
{{{
$ cat /proc/partitions
}}}
or 
{{{
df -k 
}}}
Go to "Webmin - Webmin Server Index" and add a new server.
Specify:
* webmin username
* password
and set "Make fast RPC calls?" to Yes
{{{
$ sudo fdisk /dev/sda
}}}
{{{
sudo fdisk -l
}}}
and it will show:
{{{

Disk /dev/hdb: 120.0 GB, 120034123776 bytes
255 heads, 63 sectors/track, 14593 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/hdb1               1          19      152586   83  Linux
/dev/hdb2              20       14593   117065655   83  Linux

Disk /dev/hdc: 40.0 GB, 40020664320 bytes
255 heads, 63 sectors/track, 4865 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/hdc1   *           1        4664    37463548+  83  Linux
/dev/hdc2            4665        4865     1614532+   5  Extended
/dev/hdc5            4665        4865     1614501   82  Linux swap / Solaris

Disk /dev/hde: 400.0 GB, 400088457216 bytes
255 heads, 63 sectors/track, 48641 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/hde1               1       48641   390708801   8e  Linux LVM

Disk /dev/hdf: 200.0 GB, 200049647616 bytes
255 heads, 63 sectors/track, 24321 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/hdf1               1       24321   195358401   8e  Linux LVM

Disk /dev/hdg: 120.0 GB, 120034123776 bytes
16 heads, 63 sectors/track, 232581 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/hdg1               1      232581   117220792+  8e  Linux LVM

Disk /dev/sda: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1       60801   488384001   8e  Linux LVM

}}}
{{{
sudo fdisk
}}}
Select ''n'' add new partition.
Select ''p'', primary partition.
Select ''1'' for partition number.
Accept the default ''1'' for first cylinder.
Accept the default ''60801'' for the last cylinder.
{{{
Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-60801, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-60801, default 60801):
Using default value 60801
Command (m for help):
}}}



Select ''t'' to assign the file system.
{{{
Command (m for help): t
Selected partition 1
Hex code (type L to list codes):
}}}

Choose the type ''8e'' for LVM.
Select ''w'' to write changes.
{{{
Command (m for help): m
Command action
   a   toggle a bootable flag
   b   edit bsd disklabel
   c   toggle the dos compatibility flag
   d   delete a partition
   l   list known partition types
   m   print this menu
   n   add a new partition
   o   create a new empty DOS partition table
   p   print the partition table
   q   quit without saving changes
   s   create a new empty Sun disklabel
   t   change a partition's system id
   u   change display/entry units
   v   verify the partition table
   w   write table to disk and exit
   x   extra functionality (experts only)

Command (m for help):

}}}
!Removing
ImageSizePlugin, Plugin: jsMath, SyntaxHighlighterPlugin
{{{
$ sudo pvcreate /dev/sda1
}}}

and then see changes with:
{{{
$ sudo pvscan
}}}

{{{
$ sudo pvscan
  PV /dev/hde1        VG VGdata6   lvm2 [372.61 GB / 0    free]
  PV /dev/hdf1        VG VGdata6   lvm2 [186.30 GB / 0    free]
  PV /dev/hdg1        VG VGdata6   lvm2 [111.79 GB / 0    free]
  PV /dev/evms/sda1                lvm2 [465.76 GB]
  Total: 4 [1.11 TB] / in use: 3 [670.70 GB] / in no VG: 1 [465.76 GB]
}}}
Go to ''Cluster - Cluster Webmin Servers'' and add the servers.
Run a ''pvscan'' first to see your LVM physical volumes.

If your Volume Group is VGdata3 then you add the PV to the VG like this:
{{{
$ sudo vgextend VGdata3 /dev/sda1
  Volume group "VGdata3" successfully extended
}}}
Display results:
{{{
$ sudo pvscan
  PV /dev/sdb1   VG VGdata3   lvm2 [372.60 GB / 0    free]
  PV /dev/sdc1   VG VGdata3   lvm2 [186.30 GB / 0    free]
  PV /dev/sdd1   VG VGdata3   lvm2 [111.79 GB / 0    free]
  PV /dev/sda1   VG VGdata3   lvm2 [465.76 GB / 465.76 GB free]
  Total: 4 [1.11 TB] / in use: 4 [1.11 TB] / in no VG: 0 [0   ]
}}}
This will extend the current volume to a bigger size as specified in the command.
{{{
sudo lvextend -L+476936M /dev/VGdata3/LVdata31
}}}
Use ''vgdisplay'' to get the some numbers to calculate the megabytes to add, otherwise ''lvextend'' will give you error.
{{{
sudo vgdisplay
}}}
Here is the calculation:
{{{
PE Size    Free PE    Total
  MB                   MB
 8.00	   59617     476,936
}}}
Enter this number after the parameter ''-L+''.
For ReiserFS we use the command [[reiserfsck]]:
{{{
super@z-svr:/dev$ sudo reiserfsck /dev/VGdata3/LVdata31
reiserfsck 3.6.19 (2003 www.namesys.com)

*************************************************************
** If you are using the latest reiserfsprogs and  it fails **
** please  email bug reports to reiserfs-list@namesys.com, **
** providing  as  much  information  as  possible --  your **
** hardware,  kernel,  patches,  settings,  all reiserfsck **
** messages  (including version),  the reiserfsck logfile, **
** check  the  syslog file  for  any  related information. **
** If you would like advice on using this program, support **
** is available  for $25 at  www.namesys.com/support.html. **
*************************************************************

Will read-only check consistency of the filesystem on /dev/VGdata3/LVdata31
Will put log info to 'stdout'

Do you want to run this program?[N/Yes] (note need to type Yes if you do):Yes
###########
reiserfsck --check started at Mon Dec 17 12:22:11 2007
###########
Replaying journal..
Reiserfs journal '/dev/VGdata3/LVdata31' in blocks [18..8211]: 0 transactions replayed
Checking internal tree..finished
Comparing bitmaps..finished
Checking Semantic tree:
finished
No corruptions found
There are on the filesystem:
        Leaves 501280
        Internal nodes 3135
        Directories 355355
        Other files 1621236
        Data block pointers 175300507 (0 of them are zero)
        Safe links 0
###########
reiserfsck finished at Mon Dec 17 13:29:56 2007
###########

}}}
{{{
sudo aptitude install rrdtool
}}}
rrdtool gets installed in /usr/bin/rrdtool
{{{
sudo aptitude install snmp
}}}

{{{
sudo aptitude install snmpd
}}}
This adds the space by new disk/partition to the filesystem table.
{{{
 sudo resize_reiserfs -f /dev/VGdata3/LVdata31
}}}
Then mount the LVM to start using it!
{{{
sudo nano /etc/crontab
}}}
and add this line at the end:
{{{
*/5 * * * * www-data /opt/lampp/bin/php /opt/lampp/htdocs/cacti/poller.php > /dev/null 2>&1
}}}
To allow cron to write rrdtool data in cacti we chnage user and group as follows:
{{{
sudo chown -R www-data:www-data /opt/lampp/htdocs/cacti/log
}}}
and
{{{
sudo chown -R www-data:www-data /opt/lampp/htdocs/cacti/rra
}}}

root=UUID=9f5606f8-6a3f-41df-9e7d-d9c1363331f3 ro quiet splash acpi=force

In Webmin change at ''Kernel options''.
Avant Window Navigator

Install: Synapctic
<<tiddler ShowSection with: [[Who]]>> 

<<tiddler ShowSection with: [[What]]>> 

<<tiddler ShowSection with: [[Why]]>> 

<<tiddler ShowSection with: [[How]]>> 

<<tiddler ShowSection with: [[Where]]>> 

<<tiddler ShowSection with: [[When]]>> 

----
To access the SVN repository via WebDAV protocol, you must configure your Apache 2 web server.

First install the following package libapache2-svn.

You must add the following snippet in your /etc/apache2/apache2.conf file:
{{{
  <Location /svn/myrepo>
     DAV svn
     SVNPath /home/svn/myrepo
     AuthType Basic
     AuthName "myrepo subversion repository"
     AuthUserFile /etc/subversion/passwd
     <LimitExcept GET PROPFIND OPTIONS REPORT>
        Require valid-user
     </LimitExcept>
  </Location>
}}}
Once you add the above lines, you must restart apache2 web server. To restart apache2 web server, you can run the following command:
{{{
  sudo /etc/init.d/apache2 restart
}}}
Next, you must create /etc/subversion/passwd file. This file contains user authentication details.

If you have just installed SVN, the passwd file will not yet exist and needs to be created using the "-c" switch. Adding any users after that should be done without the "-c" switch to avoid overwriting the passwd file.

To add the first entry, ie.. to add the first user, you can run the following command:
{{{
  sudo htpasswd2 -c /etc/subversion/passwd user_name
}}}
It prompts you to enter the password. Once you enter the password, the user is added.

To add more users after that, you can run the following command:
{{{
  sudo htpasswd2 /etc/subversion/passwd second_user_name
}}}
If you are uncertain whether the passwd file exists, running the command below will tell you whether the file already exists:
{{{
  cat /etc/subversion/passwd
}}}
Now, to access the repository you can run the following command:
{{{
  $ svn co http://hostname/svn/myrepo myrepo --username user_name
}}}
It prompts you to enter the password. You must enter the password configured using htpasswd2 command. Once it is authenticated the project is checked out. 
Once the SVN repository is created, you can configure the access control. You can edit /home/svn/myrepo/conf/passwd file to configure the access control.

For example, to setup authentication you can uncomment the following lines in the configuration file:
{{{
  # [general]
  # password-db = passwd
}}}

After uncommenting the above lines, you can maintain the user list in passwd file. So, edit the file passwd in the same directory and add new user. The syntax is as follows:

{{{
  username = password
}}}


! Install packages
{{{
sudo apt-get install libpam-ldap libnss-ldap nss-updatedb libnss-db libnet-ldap-perl  libconvert-asn1-perl
}}}

  284  sudo nano  /etc/libnss-ldap.conf
! Make LDAP database default for users
{{{
sudo nano /etc/nsswitch.conf
}}}


sudo nano  /etc/libnss-ldap.conf

7  sudo /etc/init.d/nscd restart

! Test
  291  getent passwd
  292  getent passwd | less
  293  id janet
! Modify files for client
http://www.beginlinux.com/index.php/server_training/server-managment-topics/116-server-management/1017-ldap-client-on-ubuntu-804
{{{
  294  sudo nano /etc/pam.d/common-account
  295  sudo nano /etc/pam.d/common-auth
  297  sudo nano /etc/pam.d/common-password
}}}
  300  getent group
  301  sudo nano /etc/libnss-ldap.secret
  302  sudo nano /etc/pam.d/common-password
  303  sudo nano  /etc/libnss-ldap.conf
  304  nano /etc/libnss-ldap.secret
  305  sudo nano /etc/pam.d/common-password
  306  getent group
  307  getent users
  308  getent user
  309  getent --usage
  310  man getent
  311  ldapsearch -x -H ldap://192.168.1.77 -b dc=reyesaguayo,dc=lan
  312  sudo apt-get install ldap-utils
  313  ldapsearch -x -H ldap://192.168.1.77 -b dc=reyesaguayo,dc=lan
  314  ldapsearch -x -H ldap://192.168.1.77 -b dc=reyesaguayo,dc=lan | less
  315  ldapsearch -x -H ldap://nslu2.reyesaguayo.lan -b dc=reyesaguayo,dc=lan | less
  316  ldapsearch -x -H ldap://nslu2 -b dc=reyesaguayo,dc=lan | less
  317  sudo nano /etc/nsswitch.conf
  318  id janet
  319  id batman
  320  sudo nano /etc/hosts
  321  id mirko

! Create LDIF text file
{{{
superuser@NSLU2:/home$ nano /var/tmp/user1.ldif # edit user in file 
}}}
!! /var/tmp/user1.ldif
{{{
dn: cn=mirko,ou=group,dc=reyesaguayo,dc=lan
cn: mirko
gidNumber: 20000
objectClass: top
objectClass: posixGroup

dn: uid=mirko,ou=people,dc=reyesaguayo,dc=lan
uid: mirko
uidNumber: 20000
gidNumber: 20000
cn: Mirko
sn: Mirko
objectClass: top
objectClass: person
objectClass: posixAccount
objectClass: shadowAccount
loginShell: /bin/bash
homeDirectory: /home/mirko
}}}

! add user
{{{
superuser@NSLU2:/home$ ldapadd -c -x -D cn=admin,dc=reyesaguayo,dc=lan -W -f /var/tmp/user1.ldif # add user in file
Enter LDAP Password: 
adding new entry "cn=mirko,ou=group,dc=reyesaguayo,dc=lan"

adding new entry "uid=mirko,ou=people,dc=reyesaguayo,dc=lan"

superuser@NSLU2:/home$ 
}}}
Modify or create the default router:
{{{
vi /etc/defaultrouter
}}}
Then add a line with the deault router IP:
{{{
192.168.1.1
}}}
Save changes and quit Vi with '':wq''
Now, restart the network service:
{{{
/etc/init.d/network restart
}}}

Edit the file {{{/etc/sysconfig/network}}} and add the line:
{{{
GATEWAY=192.168.1.1
}}}
Restart the network with:
{{{
/etc/rc.d/init.d/network restart
}}}
Run before installing Webmin:
{{{
yum -y install perl-Net-SSLeay
}}}
{{{
groupadd -g 16000 users
}}}
Location =	/home/svn/myrepo/conf
File =		passwd

{{{
### This file is an example password file for svnserve.
### Its format is similar to that of svnserve.conf. As shown in the
### example below it contains one section labelled [users].
### The name and password for each user follow, one account per line.

[users]
super = superpws
user1 = usr1pwd
}}}
PATH=/opt/csw/bin:/usr/sbin:/usr/bin:/usr/dt/bin:/usr/openwin/bin:/usr/ccs/bin
<html>This <span style="font-weight: bold;">svnserve </span>script starts the svn service at boot.</html>
{{{
#!/bin/bash
svnserve -d -r /home/svn
}}}

Now, to access SVN via svn:// custom protocol either from the same machine or different machine, you can run svnserver using svnserve command. The syntax is as follows:
{{{
  $ svnserve -d --foreground -r /home/svn
}}}
where:
 -d -- daemon mode
 --foreground -- run in foreground (useful for debugging)
 -r -- root of directory to serve


Once you run this command, SVN starts listening on default port (3690).
Open the file:
{{{
sudo nano /etc/network/interfaces
}}}

Original DHCP automatic:
{{{
auto eth0
iface eth0 inet dhcp
}}}
Replace it with:
{{{
auto eth0
iface eth0 inet static
        address 192.168.1.83
        netmask 255.255.255.0
        network 192.168.1.0
        broadcast 192.168.1.255
        gateway 192.168.1.1
}}}

And restart the network with:
{{{
sudo /etc/init.d/networking restart
}}}
{{{
nano /etc/sudoers
}}}
We can use RAID or LVM to make the volume later available in the iscsi target.
To do this, we have to stop first the iscsi target and ocfs2:
{{{
sudo /etc/init.d/iscsitarget stop
sudo /etc/init.d/o2cb stop
}}}
After adding the disk, restart the services:
{{{
sudo /etc/init.d/iscsitarget start
sudo /etc/init.d/o2cb start
}}}
With Webmin, in ''Kernel options'' add acpi=force so it looks like this:
{{{
root=/dev/hdc1 ro quiet splash acpi=force
}}}

sudo ln -s /usr/share/munin/plugins/mbmon_ /etc/munin/plugins/mbmon_temp
Source: http://www.debian-administration.org/articles/229		
Posted by chris (80.203.xx.xx) on Tue 24 Jan 2006 at 17:58

On the server /etc/munin.conf contains
{{{
dbdir   /var/lib/munin
htmldir /var/www/munin
logdir  /var/log/munin
rundir  /var/run/munin

tmpldir /etc/munin/templates

[host1.domain.tld]
       address xxx.xxx.xxx.xxx

[host2.domain.tld]
       address yyy.yyy.yyy.yyy
}}}

And the munin-node.conf contains
{{{
log_level 4
log_file /var/log/munin/munin-node.log
port 4949
pid_file /var/run/munin/munin-node.pid
background 1
setseid 1

host *
user root
group root
setsid yes

ignore_file ~$
ignore_file \.bak$
ignore_file %$
ignore_file \.dpkg-(tmp|new|old|dist)$
ignore_file \.rpm(save|new)$

host_name host1.domain.tld

allow ^127\.0\.0\.1$
allow ^xxx\.xxx\.xxx\.xxx$
}}}

On the second machine (client only) munin-node.conf contains
{{{
log_level 4
log_file /var/log/munin/munin-node.log
port 4949
pid_file /var/run/munin/munin-node.pid
background 1
setseid 1

host *
user root
group root
setsid yes

ignore_file ~$
ignore_file \.bak$
ignore_file %$
ignore_file \.dpkg-(tmp|new|old|dist)$
ignore_file \.rpm(save|new)$

host_name host2.domain.tld

allow ^127\.0\.0\.1$
allow ^xxx\.xxx\.xxx\.xxx$
allow ^yyy\.yyy\.yyy\.yyy$
}}}
Houston, Texas 77381
LinkedIn: http://www.linkedin.com/in/alfonsorreyes
My website: http://www.linkedin.com/in/alfonsorreyes

/***
name: AllTagsExceptPlugin
author: Garrett
version: 0.1.0
This is a revision of Clint Checketts' allTagsExcept plugin, which lists all tags except those listed.

<<option chkDisableExcept>> show hidden system tags

!!Usage
{{{
<<AllTagsExcept tag1 tag2 ...>>
}}}
!!!Code
***/
/*{{{*/
version.extensions.AllTagsExcept = {major: 0, minor: 1, revision: 0};

if (!config.options.chkDisableExcept) config.options.chkDisableExcept=false; // default to standard action

config.macros.AllTagsExcept = {tooltip: "Show notes tagged with '%0'",noTags: "There are no tags to display"};

config.macros.AllTagsExcept.handler = function(place,macroName,params)
{
	var tags = store.getTags();
	var theDateList = createTiddlyElement(place,"ul");
	if(tags.length == 0)
		createTiddlyElement(theDateList,"li",null,"listTitle",this.noTags);
	for(var t=0; t<tags.length; t++)
		{
		var includeTag = true;
            	for (var p=0;p<params.length; p++) if ((tags[t][0] == params[p])&&(!config.options.chkDisableExcept)) includeTag = false;
            	if (includeTag)
			{
			var theListItem =createTiddlyElement(theDateList,"li");
			var theTag = createTiddlyButton(theListItem,tags[t][0] + " (" + tags[t][1] + ")",this.tooltip.format([tags[t][0]]),onClickTag);
			theTag.setAttribute("tag",tags[t][0]);
			}
		}
}
/*}}}*/
To add a new user to sudo, open the Users and Groups tool from System -> Administration menu. Then click on the user and then on properties. Choose the User Privileges tab. In the tab, find Executing system administration tasks and check that.

/!\ In the terminal this would be: 
{{{
sudo adduser $user admin, 
}}}
where you replace $user with the name of the user. 
{{{
sudo aptg-get install apache2
}}}
''phpsysinfo''
: http://phpsysinfo.sourceforge.net/

''phpMyAdmin''
:: http://www.phpmyadmin.net/home_page/downloads.php

''Wordpress''
: http://codex.wordpress.org/Installing_WordPress#Famous_5-Minute_Install
* pxelinux
* dhcpd
* tftpd
* named
* httpd
* CentOS-4.2-ServerCD-i386
* CentOS-4.2-ServerCD-x86_64
* RIP (Recovery is Possible)
* Memtest86+
* FreeDOS
{{{
   $ sudo chown -R root:subversion myrepo

}}}
{{{
   $ sudo chmod -R g+rws myrepo
}}}
# [[add your interface and MAC address in /etc/iftab]]
# [[Modify accordingly your /etc/network/interfaces]]
Here's a Perl script I've written (sbeaver) to rescan all HBAs on an ESX host. You don't need to tell it how many HBAs you have and it detects if SW iSCSI is in use and rescans that too if it's enabled.
{{{
#!/usr/bin/perl -w
#Filename: rescan-hbas.pl
#No warranty is provided with this script
use strict;
my @hbas = `/usr/sbin/esxcfg-info \| grep vmkernel -i \| grep hba \| awk -F\. \{\'print \$29\'\}`;
print "The following HBAs were detected on this system:\n";
print "\t@hbas";
foreach my $hba (@hbas) {
system("/usr/sbin/esxcfg-rescan $hba");
}
print "Checking to see if SW iSCSI is in use....";
my $iscsi = `/usr/sbin/esxcfg-swiscsi -q`;
chomp ($iscsi);
print "$iscsi\n";
if ($iscsi eq "Software iSCSI is enabled") {
system("/usr/sbin/esxcfg-swiscsi -s")
}
}}}

Source: http://communities.vmware.com/message/681870#681870
{{{
$ sudo  tar cvfz backup-home.tar.gz /home
}}}

Verify is all right:
{{{
$ sudo tar -tvf backup-home.tar.gz
}}}
{{{
[user@server ~]$ mysqldump -A > ~/all_my_databases.sql
}}}

::-A: all databases
{{{
[superuser@destin ~]$ sudo apt-get install cc-bacula
Password:
Reading Package Lists...
Building Dependency Tree...
The following extra packages will be installed:
  autofs bacula-mysql bacula-mysql-server cc-autofs dvd+rw-tools eject mkisofs
  mt-st mtx samba-client sharutils webconfig-bacula which
The following NEW packages will be installed:
  autofs bacula-mysql bacula-mysql-server cc-autofs cc-bacula dvd+rw-tools
  eject mkisofs mt-st mtx samba-client sharutils webconfig-bacula which
0 upgraded, 14 newly installed, 0 removed and 73 not upgraded.
Need to get 26.6MB of archives.
After unpacking 56.1MB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 ftp://rh.apt.clarkconnect.com System/updates autofs 1:4.1.3-234 [298kB]
Get:2 ftp://apt.clarkconnect.com System/os bacula-mysql-server 4.1.10a-7.1.cc [9154kB]
Get:3 ftp://rh.apt.clarkconnect.com System/updates mkisofs 8:2.01.1-5.0.EL4.4 [555kB]
Get:5 ftp://apt.clarkconnect.com System/os bacula-mysql 2.0.2-1.2.cc [11.2MB]
Get:6 ftp://apt.clarkconnect.com System/os cc-autofs 4.3-20 [6060B]
Get:7 ftp://apt.clarkconnect.com System/os dvd+rw-tools 7.0-0.cc [86.3kB]
Get:8 ftp://apt.clarkconnect.com System/os eject 2.0.13-11 [37.4kB]
Get:9 ftp://apt.clarkconnect.com System/os mt-st 0.8-1 [37.1kB]
Get:10 ftp://apt.clarkconnect.com System/os samba-client 0:3.0.25b-1.1.cc [4699kB]
Get:11 ftp://apt.clarkconnect.com System/os sharutils 4.2.1-22.2 [95.4kB]
Get:12 ftp://apt.clarkconnect.com System/os webconfig-bacula 4.1-1.cc [136kB]
Get:13 ftp://apt.clarkconnect.com System/os which 2.16-4 [23.1kB]
Get:14 ftp://apt.clarkconnect.com System/os cc-bacula 4.3-20 [177kB]
Fetched 26.6MB in 1m38s (270kB/s)
Committing changes...
Preparing...                ##################################################
autofs                      ##################################################
bacula-mysql-server         ##################################################
mtx                         ##################################################
bacula-mysql                ##################################################
cc-autofs                   ##################################################
mkisofs                     ##################################################
dvd+rw-tools                ##################################################
eject                       ##################################################
mt-st                       ##################################################
samba-client                ##################################################
sharutils                   ##################################################
webconfig-bacula            ##################################################
which                       ##################################################
cc-bacula                   ##################################################
Done
}}}
/*{{{*/
/* SHORTCUTS */
[[StyleSheetShortcuts]]

/* ADJUSTMENTS TO SHORTCUTS */
.small	{ font-size:90%; line-height:120%; }
.fine	{ font-size:80%; line-height:120%; }
.tiny	{ font-size:70%; line-height:120%; }
.groupbox	{ padding:.5em; border:1px solid gray; -moz-border-radius:.5em; -webkit-border-radius:.5em; }

/* CUSTOM SHORTCUTS */
.scroll	{ display:block; overflow:auto; width:auto; max-height:8em; padding-bottom:.5em; }
.scroll ul	{ margin:0; }
.scroll li	{ white-space:nowrap; }
*[id="mainMenu"] .scroll li  /* MOZ ONLY */	{ margin-left:-2em; }

/* ADJUSTMENTS TO STANDARD ELEMENTS */
StyleSheetAdjustments

/* ADJUSTMENTS TO CUSTOM ELEMENTS */
.storyListbox	{ font-size:80%; }
.siteNav	{ position:absolute;z-index:1;right:.5em;top:2em;width:14em; }
.siteNav, .siteNav .button	{ color:#fff }
.siteNav .button:hover	{ color:#009 }
.siteNav input[type="checkbox"]	{ margin:0; }

/*}}}*/
http://tp0x45.blogspot.com/2009/03/openjdk-issue-in-ubuntu-810-64-bit.html


I used these instructions on an Ubuntu Intrepid AMD 64-bit machine and worked with no glitch.

I had to remove first any Java previous installation with 
<<tiddler ShowSection with: [[remove Ubuntu java]]>>

Instead of moving the entire new java folder what I did was creating a symbolic link:
<<tiddler ShowSection with: [[create symbolic link of java in /usr/lib/jvm]]>>

And then create the links to java utilities in /usr/bin:
<<tiddler ShowSection with: [[create java alternatives in /usr/bin]]>>

!Create a link for the Firefox plugin:
<<tiddler ShowSection with: [[Create a link to plugin for Mozilla Firefox]]>>>
in boot options we can set ARMD to allow hot-swap devices to boot up.
/usr/bin/gcc

[NOT FOUND] PHP Binary Path: The path to your PHP binary file (may require a php recompile to get this file).
! From Vmplayer
{{{
vmplayer -h 192.168.1.90:8333 -u "super" -p "pwd" -M "240"   &
}}}
:''M'' is the VM number
:''u'' is the user
:''p'' is the password
{{{
vmplayer -h 192.168.1.90:8333 -u "super" -p "pwd" -M "16"  &
}}}
where:
{{{
:16		360Server
:32		OfficeXP
:240		Amahi
}}}

The machines will start when called

Reference: http://communities.vmware.com/docs/DOC-8840

!Login as root to avoid problem with /sbin in the path
ocfs2 will call some commands that are files in /sbin which is not included by default in the PATH. Login as root and execute commands as such.
{{{
sudo service iscsi start

}}}
!Add or modify nodes
{{{
nano /etc/ocfs2/cluster.conf
}}}
The file will look like this:
{{{
node:
        name = a3800xp64
        cluster = ocfs2
        number = 0
        ip_address = 192.168.1.6
        ip_port = 7777

node:
        name = chaski.reyesaguayo.lan
        cluster = ocfs2
        number = 1
        ip_address = 192.168.1.86
        ip_port = 7777

node:
        name = colorado.reyesaguayo.com
        cluster = ocfs2
        name = colorado.reyesaguayo.com
        cluster = ocfs2 
        number = 2
        ip_address = 192.168.1.84
        ip_port = 7777

node:
        name = inti.reyesaguayo.lan
        cluster = ocfs2
        number = 3
        ip_address = 192.168.1.90
        ip_port = 7777

cluster:
        name = ocfs2
        node_count = 4
}}}

{{{
   11  /etc/init.d/iscsi restart
    4  chkconfig --del o2cb
    5  chkconfig --add o2cb
    6  chkconfig --list o2cb
    7  /etc/init.d/o2cb offline ocfs2
    8  /etc/init.d/o2cb unload
    9  /etc/init.d/o2cb configure
   12  fdisk -l
   13  /etc/init.d/o2cb status
   14  mkfs -t ocfs2 -N 2 -L lun1 /dev/sdb1

}}}
!Configuring ocfs2 the first time
{{{
sudo /etc/init.d/o2cb configure
}}}
The output is:
{{{
Configuring the O2CB driver.

This will configure the on-boot properties of the O2CB driver.
The following questions will determine whether the driver is loaded on
boot.  The current values will be shown in brackets ('[]').  Hitting
<ENTER> without typing an answer will keep that current value.  Ctrl-C
will abort.

Load O2CB driver on boot (y/n) [n]: y
Cluster to start on boot (Enter "none" to clear) [ocfs2]: ocfs2
Specify heartbeat dead threshold (>=7) [31]: 31
Specify network idle timeout in ms (>=5000) [30000]: 
Specify network keepalive delay in ms (>=1000) [2000]: 
Specify network reconnect delay in ms (>=2000) [2000]: 
Writing O2CB configuration: OK
O2CB cluster ocfs2 already online
}}}

{{{
sudo /etc/init.d/o2cb status
}}}
!
!Create the filesystem
{{{
mkfs -t ocfs2 -N 2 -L ocfs2_volume /dev/sdd1
}}}

!Mount the filesystem
{{{
mount -t ocfs2 /dev/sdd1 /storage/d1300g
}}}
* Dell PowerEdge 6600 Quad Intel Xeon Server
* edit 
{{{
# vi /etc/sysconfig/network-scripts/ifcfg-eth0
}}}
* Change IP and save file
* Restart network:
{{{
# service network restart
}}}

it's located in /etc/sysconfig/network

{{{
$ sudo passwd root
}}}
Edit the file
{{{
/etc/sysconfig/network-scripts/ifcfg-eth0
}}}
and make the desired changes.

Restart the network with:
{{{
/etc/rc.d/init.d/network restart
}}}
{{{
cat /etc/redhat-release
}}}
!!Pick one of these
* fc5
* fc6
* suse 101
* esx301
* sol10
* ub606s
* ub804
Hostname:	server.clarkconnect.lan
Domain: 	clarkconnect.lan
http://digital-freak.com/index.php/linux/39-clearos

* ClarkConnect - mount user's ftp drives
* ClarkConnect - repairing Cyrus

ClearOS supports both gateway and standalone server modes.

Standalone mode is used to create a server on a local area network (behind an existing firewall). Only one network card is required.
Gateway mode allows your system to act as a firewall, gateway and server on your local network. At least two network cards are required. If you have two or more network cards installed in the server and want to protect your local network against threats originating from the Internet, then select gateway mode.
After entering all the client machine details you need to the following command to take the effect of our new changes effect.
{{{
sudo /usr/share/munin/munin-update  --force-root
}}}
{{{
esxcfg-firewall --closePort 10000,tcp,in
}}}
/***
Authors: Eric Shulman & Bradley Meck
version: 2007.30.03
source: http://www.tiddlytools.com/
***/
/*{{{*/
config.commands.collapseTiddler = {
text: "-",
tooltip: "Collapse this tiddler",
handler: function(event,src,title)
{
var e = story.findContainingTiddler(src);
if(e.getAttribute("template") != config.tiddlerTemplates[DEFAULT_EDIT_TEMPLATE]){
var t = (readOnly&&store.tiddlerExists("WebCollapsedTemplate"))?"WebCollapsedTemplate":"CollapsedTemplate";
if(e.getAttribute("template") != t ){
e.setAttribute("oldTemplate",e.getAttribute("template"));
story.displayTiddler(null,title,t);
}
}
}
}

config.commands.expandTiddler = {
text: " | ",
tooltip: "Expand this tiddler",
handler: function(event,src,title)
{
var e = story.findContainingTiddler(src);
story.displayTiddler(null,title,e.getAttribute("oldTemplate"));
}
}

config.macros.collapseAll = {
handler: function(place,macroName,params,wikifier,paramString,tiddler){
createTiddlyButton(place,"-","Collapse all tiddlers",function(){
story.forEachTiddler(function(title,tiddler){
if(tiddler.getAttribute("template") != config.tiddlerTemplates[DEFAULT_EDIT_TEMPLATE])
var t = (readOnly&&store.tiddlerExists("WebCollapsedTemplate"))?"WebCollapsedTemplate":"CollapsedTemplate";
story.displayTiddler(null,title,t);
})})
}
}

config.macros.expandAll = {
handler: function(place,macroName,params,wikifier,paramString,tiddler){
createTiddlyButton(place,"expand all","Expand all tiddlers",function(){
story.forEachTiddler(function(title,tiddler){
var t = (readOnly&&store.tiddlerExists("WebCollapsedTemplate"))?"WebCollapsedTemplate":"CollapsedTemplate";
if(tiddler.getAttribute("template") == t) story.displayTiddler(null,title,tiddler.getAttribute("oldTemplate"));
})})
}
}

config.commands.collapseOthers = {
text: "Ø",
tooltip: "Expand this tiddler and collapse all others",
handler: function(event,src,title)
{
var e = story.findContainingTiddler(src);
story.forEachTiddler(function(title,tiddler){
if(tiddler.getAttribute("template") != config.tiddlerTemplates[DEFAULT_EDIT_TEMPLATE]){
var t = (readOnly&&store.tiddlerExists("WebCollapsedTemplate"))?"WebCollapsedTemplate":"CollapsedTemplate";
if (e==tiddler) t=e.getAttribute("oldTemplate");
//////////
// ELS 2006.02.22 - removed this line.  if t==null, then the *current* view template, not the default "ViewTemplate", will be used.
// if (!t||!t.length) t=!readOnly?"ViewTemplate":"WebViewTemplate";
//////////
story.displayTiddler(null,title,t);
}
})
}
}
/*}}}*/
<div>
<span class='toolbar' macro='toolbar +editTiddler expandTiddler collapseOthers closeOthers -closeTiddler'></span>
<span class='title' macro='view title'></span>
</div>
Add this line to the "Screen" section:
{{{
# added for no title bars in windows
    Option          "AddARGBGLXVisuals" "true"
}}}
!Plugins installed
*[[InlineJavascriptPlugin]]
**used for the [[DisplayControl]]
**and for [[HideTags]]
*[[TextAreaPlugin]] -- removed for now
**deselect the edit contents, and adds ctr-f,ctrl-g,cmd-v search/replace to editing.
*[[jsMathPlugin]]
**this processes the [[LaTeX]].  The AJAX part had problems, so I put the jsmath load into the source directly.
**inserted custom LaTeX/jsmath command abbreviations into plugin.
*[[CollapsePlugin]] 
**[[CollapsedTemplate]]
*[[RearrangeTiddlersPlugin]] -- disabled for now. Cannot select tiddler titles
*[[ListTaggedPlugin]] 
**used for folder/tag listings
*[[AllTagsExceptPlugin]]
**check to see system tags
*[[CopyTiddlerPlugin]]
*[[DisableWikiLinksPlugin]] 
**remove checkbox so it's always on
**this is very tricky in combination with [[jsMathPlugin]] and \ss pytw problem
*[[FaviconPlugin]]
*[[ReferencesPlugin]] -- places reference tiddlers on the bottom
*[[RecentPlugin]]
**set to show last 2

! Content tables
**[[SiteTitle]]
**[[SiteSubtitle]]
**[[SiteUrl]]
**[[DefaultTiddlers]]
**[[MainMenu]]
**[[SideBarOptions]]
**[[OptionsPanel]]
***[[SideBarOptionsText]]
**[[AdvancedOptions]]
**[[SideBarTabs]]
***[[TabContents]]
***[[TabTimeline]]
***[[TabAll]] 
***[[TabTags]]
**[[DisplayControl]]

! CSS layout templates:
**[[PageTemplate]]
**[[ViewTemplate]]
**[[EditTemplate]]
**[[CollapsedTemplate]]
*And these change the system and css options:
**[[SystemConfig]]
**[[StyleSheet]]
**[[StyleSheetPrint]]
*[[StyleSheetLayout]]
*[[StyleSheetColors]]

!Evil raw html/javascript TW source code tweakage

*Insert this just after body. (This starts jsmath)
**{{{<script src="jsMath/jsMath.js"></script>}}}

!edited jsMath.js
*changed cookie default font scaling to {{{scale: 110}}} and {{{warn: 0}}}

{{{
LogLevel warning 
Encryption Never   
SystemGroup lpadmin
# Allow remote access
Port 631
Listen /var/run/cups/cups.sock
# Enable printer sharing and shared printers.
Browsing On
BrowseOrder allow,deny
BrowseAllow all 
#BrowseAddress @LOCAL 
BrowseAddress 192.168.1.0
DefaultAuthType Basic
DefaultEncryption IfRequested
<Location />
  Allow localhost
  Allow 192.168.1.*
  Allow all
  # Allow shared printing and remote administration...
  Order allow,deny  
#  Allow @LOCAL
  Allow all
</Location>
<Location /admin/conf>
  AuthType Basic
  Require user @SYSTEM
  Allow localhost   
  Allow 192.168.1.6
  # Allow remote access to the configuration files...
  Order allow,deny
  Allow @LOCAL 
</Location>
<Policy default>   
  <Limit Send-Document Send-URI Hold-Job Release-Job Restart-Job Purge-Jobs Set$
    Require user @OWNER @SYSTEM
    Order deny,allow
  </Limit>
  <Limit CUPS-Add-Modify-Printer CUPS-Delete-Printer CUPS-Add-Modify-Class CUPS$
    AuthType Default  
    Require user @SYSTEM
    Order deny,allow 
  </Limit>
  <Limit Pause-Printer Resume-Printer Enable-Printer Disable-Printer Pause-Prin$
    AuthType Default
    Require user @SYSTEM
    Order deny,allow
  </Limit>
  <Limit Cancel-Job CUPS-Authenticate-Job>
    Require user @OWNER @SYSTEM
    Order deny,allow
  </Limit>
  <Limit All>
    Order deny,allow
  </Limit>
</Policy>
<Location />
  Deny From All     
  Allow From 127.0.0.1
  Allow From 192.168.1.0/24
  Allow From 192.168.0.0/24
  Allow all    
  # Allow shared printing and remote administration...
  Order allow,deny
  Allow @LOCAL
</Location>
<Location /admin>
  Allow localhost    
  Allow 192.168.1.6
  # Allow remote administration...
  Order allow,deny  
  Allow @LOCAL
</Location>
}}}
<<tiddler ShowSection with: [[1. Define master server]]>>
<<tiddler ShowSection with: [[2. Add managed server]]>>
<<tiddler ShowSection with: [[3. Define Cluster Webmin servers]]>>
Location: /etc/munin/plugin-conf.d/munin-node

Parameters can be specified on a per-drive basis, eg:
{{{
[smart_hda]
user root
group disk
env.smartargs -H -c -l error -l selftest -l selective -d ata
env.smartpath /usr/local/sbin/smartctl
}}}
Copy the file to ESX server from a file server:
{{{
 scp super@192.168.1.60:/dat/sh/fil/linux/mc/mc-4.5.55-12.i386.rpm /opt
}}}

Install mc:
{{{
 rpm -ivh mc-4.5.55-12.i386.rpm
}}}

{{{
super@local_svr:~$ sudo scp root@remote_svr:/etc/samba/smb.conf.original /etc/samba
}}}

<<forEachTiddler
  where 
       'tiddler.tags.contains(context.inTiddler.title)'
  write 
     ' "<<slider chkSlider"+tiddler.title + " " 
     + tiddler.title + " " + tiddler.title + "» "+ tiddler.text[0]+ "$))" 
     + "[[o|"+tiddler.title+"]] \n" ' >>
/***
|Name|CopyTiddlerPlugin|
|Source|http://www.TiddlyTools.com/#CopyTiddlerPlugin|
|Version|3.0.0|
|Author|Eric Shulman - ELS Design Studios|
|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|plugin|
|Requires||
|Overrides||
|Description|Quickly create a copy of any existing tiddler|

!!!!!Usage
<<<
View a tiddler and select the "copy" toolbar item.  A new tiddler editor is opened with a title of "Copy of TiddlerName" containing copies of the text/tags from the original tiddler.  Note: If select the "copy" toolbar item while //editing// a tiddler, the current values of the text/tags that are displayed in the existing tiddler editor are used (including any unsaved changes you may have made to those values).
<<<
!!!!!Installation
<<<
import (or copy/paste) the following tiddlers into your document:
''CopyTiddlerPlugin'' (tagged with <<tag systemConfig>>)

* When using the default (shadow) EditTemplate, the plugin automatically updates the template to include the ''copyTiddler'' toolbar command.
* If you have created a custom EditTemplate tiddler, you will need to manually add the ''copyTiddler'' toolbar command to your existing template toolbar definition.
* If you add ''copyTiddler'' to the ViewTemplate toolbar definition, the ''copy'' toolbar command will also appear when viewing a tiddler.
{{{
<!-- add 'copyTiddler' command to existing toolbar definition -->
<div class='toolbar' macro='toolbar ... copyTiddler ... '>
}}}
<<<
!!!!!Revisions
<<<
''2007.06.28 [3.0.0]'' complete re-write to handle custom fields and alternative view/edit templates
''2007.05.17 [2.1.2]'' use store.getTiddlerText() to retrieve tiddler content, so that SHADOW tiddlers can be copied correctly when in VIEW mode
''2007.04.01 [2.1.1]'' in copyTiddler.handler(), fix check for editor fields by ensuring that found field actually has edit=="text" attribute
''2007.02.05 [2.1.0]'' in copyTiddler.handler(), if editor fields (textfield and/or tagsfield) can't be found (i.e., tiddler is in VIEW mode, not EDIT mode), then get text/tags values from stored tiddler instead of active editor fields.  Allows use of COPY toolbar directly from VIEW mode (based on a request from LaurentCharles)
''2006.12.12 [2.0.0]'' completely rewritten so plugin just creates a new tiddler EDITOR with a copy of the current tiddler EDITOR contents, instead of creating the new tiddler in the STORE by copying the current tiddler values from the STORE.
''2005.xx.xx [1.0.0]'' original version by Tim Morgan
<<<
!!!!!Credits
>This feature was originally developed by Tim Morgan.  Current version developed by EricShulman from [[ELS Design Studios|http://www.elsdesign.com]]
!!!!!Code
***/
//{{{
version.extensions.copyTiddler= {major: 3, minor: 0, revision: 0, date: new Date(2007,6,28)};

// automatically tweak shadow EditTemplate to add "copyTiddler" toolbar command (following "cancelTiddler")
config.shadowTiddlers.EditTemplate=config.shadowTiddlers.EditTemplate.replace(/cancelTiddler/,"cancelTiddler copyTiddler");

config.commands.copyTiddler = {
	text: 'copy',
	hideReadOnly: true,
	tooltip: 'Make a copy of this tiddler',
	prefix: "Copy of ",
	handler: function(event,src,title) {
		var tiddlerElem=document.getElementById(story.idPrefix+title); // current tiddler element
		var template=tiddlerElem.getAttribute("template") // current tiddler template
		var newTitle = this.prefix+title; // add "copy of" to create new tiddler title
		if (!story.isDirty(title)) { // if existing tiddler is being VIEWED (not EDITED)
			// duplicate existing stored tiddler (and clear "changecount")
			var tid=store.getTiddler(title);
	                store.saveTiddler(newTitle,newTitle,tid.text,config.options.txtUserName,new Date(),tid.tags, tid.fields, true);
			// display new tiddler using same view template as current tiddler
			story.displayTiddler(story.findContainingTiddler(src),newTitle,template);
		} else {
			// display new tiddler editor using same editor template as current tiddler
			story.displayTiddler(story.findContainingTiddler(src),newTitle,template);
			// get fields from current tiddler editor
			var fields=config.commands.copyTiddler.gatherFields(tiddlerElem);
			// set fields in new editor
			var newTiddlerElem = document.getElementById(story.idPrefix+newTitle);
			for (var f=0; f<fields.length; f++) { 
				if (fields[f].name=="title") fields[f].value=newTitle; // rename title in new tiddler
				var fieldElem=config.commands.copyTiddler.findField(newTiddlerElem,fields[f].name);
				if (fieldElem) {
					if (fieldElem.getAttribute("type")=="checkbox")
						fieldElem.checked=fields[f].value;
					else 
						fieldElem.value=fields[f].value;
				}
			}
		}
		story.focusTiddler(newTitle,"title");
		return false;
	},
	findField: function(tiddlerElem,field) {
		var inputs=tiddlerElem.getElementsByTagName("input");
		for (var i=0; i<inputs.length; i++) {
			if (inputs[i].getAttribute("type")=="checkbox" && inputs[i].field == field) return inputs[i];
			if (inputs[i].getAttribute("type")=="text" && inputs[i].getAttribute("edit") == field) return inputs[i];
		}
		var tas=tiddlerElem.getElementsByTagName("textarea");
		for (var i=0; i<tas.length; i++) if (tas[i].getAttribute("edit") == field) return tas[i];
		var sels=tiddlerElem.getElementsByTagName("select");
		for (var i=0; i<sels.length; i++) if (sels[i].getAttribute("edit") == field) return sels[i];
		return null;
	},
	gatherFields: function(tiddlerElem) { // get field names and values from current tiddler editor
		var fields=[];
		// get checkboxes and edit fields
		var inputs=tiddlerElem.getElementsByTagName("input");
		for (var i=0; i<inputs.length; i++) {
			if (inputs[i].getAttribute("type")=="checkbox")
				if (inputs[i].field) fields.push({name:inputs[i].field,value:inputs[i].checked});
			if (inputs[i].getAttribute("type")=="text")
				if (inputs[i].getAttribute("edit")) fields.push({name:inputs[i].getAttribute("edit"),value:inputs[i].value});
		}
		// get textareas (multi-line edit fields)
		var tas=tiddlerElem.getElementsByTagName("textarea");
		for (var i=0; i<tas.length; i++)
			if (tas[i].getAttribute("edit")) fields.push({name:tas[i].getAttribute("edit"),value:tas[i].value});
		// get selection lists (droplist or listbox)
		var sels=tiddlerElem.getElementsByTagName("select");
		for (var i=0; i<sels.length; i++)
			if (sels[i].getAttribute("edit")) fields.push({name:sels[i].getAttribute("edit"),value:sels[i].value});
		return fields;
	}
};
//}}}
/etc
{{{
superuser@debian:~$ sudo afs-newcell
}}}
{{{
                            Prerequisites

In order to set up a new AFS cell, you must meet the following:

1) You need a working Kerberos realm with Kerberos4 support. 
   
2) You need to create the single-DES AFS key and load it into

3) This machine should have a filesystem mounted on /vicepa.  

4) You will need an administrative principal created in a Kerberos

5) The AFS client must not be running on this workstation.  It will be

Do you meet these requirements? [y/n] y
If the fileserver is not running, this may hang for 30 seconds.
/etc/init.d/openafs-fileserver stop
What administrative principal should be used? root/admin

/etc/openafs/server/CellServDB already exists, renaming to .old
/etc/init.d/openafs-fileserver start
bos adduser debian.reyesaguayo.virt root.admin -localauth

Creating initial protection database.  This will print some errors
about an id already existing and a bad ubik magic.  These errors can
be safely ignored.

pt_util: /var/lib/openafs/db/prdb.DB0: Bad UBIK_MAGIC. Is 0 should be 354545
Ubik Version is: 2.0
Error while creating system:administrators: Entry for id already exists

bos create debian.reyesaguayo.virt ptserver simple /usr/lib/openafs/ptserver -localauth
bos create debian.reyesaguayo.virt vlserver simple /usr/lib/openafs/vlserver -localauth
bos create debian.reyesaguayo.virt fs fs -cmd '/usr/lib/openafs/fileserver -p 23 -busyat 600 -rxpck 400 -s 1200 -l 1200 -cb 65535 -b 240 -vc 1200' -cmd /usr/lib/openafs/volserver -cmd /usr/lib/openafs/salvager -localauth
bos setrestart debian.reyesaguayo.virt -time never -general -localauth
Waiting for database elections: done.
vos create debian.reyesaguayo.virt a root.afs -localauth
Volume 536870912 created on partition /vicepa of debian.reyesaguayo.virt
/etc/init.d/openafs-client force-start
Starting AFS services: openafs afsd.
afsd: All AFS daemons started.

Now, get tokens as root/admin in the reyesaguayo.virt cell.
Then, run afs-rootvol.
}}}
{{{
superuser@debian:~$ 
}}}
{{{
sudo mysqladmin --user=root create cacti
}}}
[[set up disk]]
[[update the system]]
[[install basic applications]]
[[install internet applications]]
[[install utility applications]]
[[install applications with dpkg]]
{{{
$ sudo ln -s /opt/java/x64/jdk1.6.0_12/jre/lib/amd64/libnpjp2.so /usr/lib/mozilla/plugins/
}}}
free partition  file mounted using loop module. Create file:
{{{
sudo dd if=/dev/zero of=/var/lib/openafs/vicepa bs=1024k count=32
sudo mke2fs /var/lib/openafs/vicepa
sudo mount -oloop /var/lib/openafs/vicepa /vicepa
}}}
Reference: 
@@http://code.ximeta.com/trac-ndas/wiki/HowToOCFS2@@
http://download.oracle.com/docs/cd/E15458_01/doc.22/e15444/storage.htm
!Pre-work
!!Create mount point folder for cluster file system
!!Add IP addresses of all nodes and cluster
{{{
sudo nano /etc/hosts
}}}
!!Add a root password to all nodes
!Install ocfs2
{{{
sudo apt-get install ocfs2-tools ocfs2console
}}}
!Configure OCFS2
!!Add nodes
{{{
sudo ocfs2console
}}}
# Select the "Cluster > Configure Nodes..." menu option
# On the "Node Configuration" screen, click the "+ Add" button.
# Enter the server name and IP address for the first node
Add the next nodes
!!Propagate configuration to all nodes

!Reconfigure ocfs2-tools to enable the driver
{{{
sudo dpkg-reconfigure -p medium -f readline ocfs2-tools
}}}
Respond the questions:
{{{
Would you like to start an OCFS2 cluster (O2CB) at boot time? yes
Name of the cluster to start at boot time: ocfs2
}}}
!Start service
{{{
/etc/init.d/o2cb load    # depending on OS, this can also be o2fs instead of o2cb
/etc/init.d/o2cb online  # can also be o2fs
}}}
!Check status
{{{
sudo /etc/init.d/o2cb status
}}}
{{{
Module "configfs": Loaded
Filesystem "configfs": Mounted
Module "ocfs2_nodemanager": Loaded
Module "ocfs2_dlm": Loaded
Module "ocfs2_dlmfs": Loaded
Module "ocfs2_stackglue": Loaded
Filesystem "ocfs2_dlmfs": Mounted
Checking O2CB cluster ocfs2: Online
Heartbeat dead threshold = 31
  Network idle timeout: 30000
  Network keepalive delay: 2000
  Network reconnect delay: 2000
Checking O2CB heartbeat: Active
}}}
!Create partition

!Format file system

!Mount cluster file system
{{{
sudo mount -t ocfs2 /dev/shared_partition /local_mount_folder
}}}
Example:
{{{
sudo mount -t ocfs2 /dev/sdb1 /u02
}}}
Reference: 
@@http://code.ximeta.com/trac-ndas/wiki/HowToOCFS2@@
http://download.oracle.com/docs/cd/E15458_01/doc.22/e15444/storage.htm
<<tiddler ShowSection with: [[Pre-work to OCFS2 installation]]>>
!Install ocfs2
{{{
sudo apt-get install ocfs2-tools ocfs2console
}}}
!Add nodes
{{{
sudo ocfs2console
}}}
# Select the "Cluster > Configure Nodes..." menu option
# On the "Node Configuration" screen, click the "+ Add" button.
# Enter the server name and IP address for the first node
Add the next nodes
!!Propagate configuration to all nodes
<<tiddler ShowSection with: [[Reconfigure ocfs2-tools to enable the driver]]>>
!Start service
{{{
sudo /etc/init.d/o2cb load    # depending on OS, this can also be o2fs instead of o2cb
sudo /etc/init.d/o2cb online  # can also be o2fs
}}}
!Check status
{{{
sudo /etc/init.d/o2cb status
}}}
{{{
Module "configfs": Loaded
Filesystem "configfs": Mounted
Module "ocfs2_nodemanager": Loaded
Module "ocfs2_dlm": Loaded
Module "ocfs2_dlmfs": Loaded
Module "ocfs2_stackglue": Loaded
Filesystem "ocfs2_dlmfs": Mounted
Checking O2CB cluster ocfs2: Online
Heartbeat dead threshold = 31
  Network idle timeout: 30000
  Network keepalive delay: 2000
  Network reconnect delay: 2000
Checking O2CB heartbeat: Active
}}}
!Restart services
{{{
sudo /etc/init.d/o2cb restart # restart service
sudo /etc/init.d/ocfs2 restart # restart service
sudo /etc/init.d/o2cb status
}}}
!Create partition

!Format file system

!Mount cluster file system
{{{
sudo mount -t ocfs2 /dev/shared_partition /local_mount_folder
}}}
Example:
{{{
sudo mount -t ocfs2 /dev/sdb1 /u02
}}}
/etc
{{{
[user@colo data]$ ln -s /data/files/Programming/java/OpenSourcePhysics ~/lnx-home/Programming/
}}}
{{{
   $ sudo mkdir /home/svn
   $ cd /home/svn

}}}
{{{
   $ sudo mkdir myrepo
}}}
{{{
$ sudo svnadmin create /home/svn/myrepo
}}}
{{{
$ sudo ln -s /backup /data
}}}
Log in to the setup account and create the initial manager account by following this procedure:

1. Using an SSHv1 or SSHv2 client, connect to the IP address of the SP.

2. Authenticate as the user setup with no password required.
{{{
# ssh spipaddress -l setup
}}}
3. Follow the on-screen prompts to create the initial manager account.

After you create the initial manager account, the setup account is deleted and you are logged out of the server. You can then log in using the new initial manager account, from which you can create other user accounts.

Note - If you are prompted for a password, this indicates that the SP has already been secured with an account. If you do not know the management user name and password, you can reset the SP from the operator panel by navigating to the SP menu and selecting the Use defaults option. Note that all current settings for users and networks will be lost and the SP will reboot. 

http://docs.sun.com/source/817-5249-17/chapter1.html#85327
|!File:		|												|
|!Source:		|												|
|!Install:		|dpkg -i 											|
|!Group:		|System Tools										|
|!Cat:		|CatName										|
|!Architecture:	|64-bit											|
|!Location:	|file:///files/linux/crossover/							|
!Custom Paths

In some cases, it is desirable to host a Flexshare in a location other than the default path (/var/flexshare/shares/SHARENAME). For example, a mounted USB Mass Storage Device or an encrypted filesystem. In this case, edit the file /etc/flexshare.conf using an editor or a utility like SCP. The parameter key is named FlexshareDirCustom. The format of the value is name:path. For multiple entries, each definition is separated by the pipe (|) character. The following is a valid entry example:

FlexshareDirCustom=Iomega:/mnt/dmcrypt/Iomega|USB:/mnt/usb

The above would provide two additional paths to the dropdown list of any Flexshare...The first (Iomega) mounts an Iomega REV drive with an encrypted filesystem to the path /mnt/dmcrypt/Iomega. The second is an example of a mounted USB drive at /mnt/usb. 

Link: http://www.clarkconnect.com/docs/Modules_-_Flexshare
/***
The StyleSheet holds the custom style modifications.  It augments  and overrides the hidden default pages.
***/

/*{{{*/
body {background:#ddd;
        position: static;
	font-size: .75em;
	font-family: arial,helvetica;}
.header {height: 5.8em;}
.headerShadow {
	padding: 2em 1em 1em 20em;
	left: 1px;
	top: 1px;}
.headerForeground {
	padding: 2em 1em 1em 20em;
	color: #ddd}
.siteTitle {font-size: 2.5em;}
.siteSubtitle {font-size: 1em;}
#displayControl {
	position:absolute;
	top:0;
	left:0;
	margin:0em;
	padding: 0em;
	background: #ddd;}
#displayControl a{text-decoration: none; font-size: 1em; color: #04b;}
#sidebar {
	font-size: 1em;
	left: 0em;
	width: 19em;
	overflow: hidden;}
#mainMenu {
	position: relative;
	width: 17em;
	margin: .5em 0em 0em .5em;
	padding: 0.3em .5em 0.3em .5em;
	text-align: left;
	line-height: 1.4em;
	font-size: 1em;
	border-bottom:1px solid #bbb;
	border-right:1px solid #bbb;
	background:#eee;}
#sidebarOptions {
	width: 17.5em;
	margin: .5em .5em 0em .5em;
	padding: 0.3em 0em 0.3em 0.4em;
        overflow: hidden;
	font-size: 1em;
	border-bottom:1px solid #bbb;
	border-right:1px solid #bbb;
	background:#eee;}
#sidebarOptions a {
	margin: 0em 0em;
	padding: 0.15em .3em;
	font-size: 1.1em;
	display: inline;}
#sidebarOptions input {
	margin: 0em 0.1em;
	width: 7.5em;
	font-size: 1em;
	padding: 0.2em 0.2em;
	border: 1px solid #888;}
#sidebarOptions .button {border: 1px solid #eee;}
#sidebarOptions .button:hover {
	color: #014;
	background: #fe8;
	border: 1px solid #db4;}


#sidebarOptions .sliderPanel {
	margin-top: .5em;
	margin-right: 1em;
	margin-bottom: .5em;
	margin-left: .5em;
	font-size: 1em;
	padding: 1em;
	background: #aaa;}
#sidebarOptions .sliderPanel a {
	display: inline;}

/***
AReyes: Removed 
    #sidebarOptions .sliderPanel input {
	width: 1em;
	font-size: 1em;}
Because was cutting username texbox at 10% width
***/

#sidebar .inputFix input{width: 8em;}
#sidebarTabs {
	width: 16em;
	margin: .5em .5em 1em .5em;
	font-size: 1em;}
#sidebarTabs .tabset {padding: 1.0em 0em 0em 0em;}
#sidebarTabs .tab {margin: .5em 0em 0em 0.5em;
	padding: 2px;
	border-top: 1px solid #ddd;
	border-left: 1px solid #ddd;
	border-right:1px solid #bbb;}
#sidebarTabs .tabContents {
	width: 18em;
	margin: 0em 0em 0em 0em;
	padding: .25em 0em .25em 0em;
	border-top: none;
	border-left: none;
	border-bottom:1px solid #bbb;
	border-right:1px solid #bbb;
	overflow: hidden;}
#sidebarTabs .tabContents ul{
	margin-left: .65em;
	overflow: hidden;}
.popup {
	background: #fe8;
	border: 1px solid #db4;}
.popup hr {
	color: #db4;
	background: #db4;
	border-bottom: 1px;}
.popup li.disabled {
	color: #db4;}
.popup li a, .popup li a:visited {
	color: #04b;
	border: none;}
.popup li a:hover {
	background: #04b;
	color: #fe8;
	border: none;}
#displayArea {
	margin-left: 18.5em;
	margin-right: 0em;
	margin-top: 0em;
	padding-top: 0em;
	padding-bottom: .25em;}
.toolbar {
	float: right;
	font-size: 1em;}
.tiddler {
	border-bottom: 1px solid #bbb;
	border-right: 1px solid #bbb;
	margin: .5em .5em .5em .75em;
	padding-bottom: .5em;
	padding-top: .75em;
	background-color: white;}
.shadow .title {
	color: #000; background: #fff;}
.title {
	font-size: 1.75em;
        background: #fff;
	color: #000;}
h1,h2,h3,h4,h5,h6 {
	padding-left: 0em;
	padding-top: 0em;
	padding-bottom: 0em;
	margin-top: .5em;
	margin-bottom: .1em;
	color: #000;
	background: transparent;}
h1 {font-size: 1.2em;}
h2 {font-size: 1.15em;}
h3 {font-size: 1.1em;}
h4 {font-size: 1.05em;}
h5 {font-size: 1em;}
h6 {font-size: 0.8em;}
.subtitle {
	font-size: .8em;
	padding-right: 1em;
        padding-left: 3em;
        padding-top: 0em;
        margin-bottom: 0.25em;
	color: #888;}
/*      ie fix?                                                                              */
.viewer {
       line-height: 120%;
       font-size: 1.25em;}
.viewer .listTitle {list-style-type:none; margin-left:-2em; background-color:white;}
.viewer ul, .viewer ol {
	margin-left: 0.5em;
	margin-top: 0em;
	margin-bottom: 0em;
	padding-left: 1.5em;}
.viewer pre {overflow: visible;}
.viewer hr {
	border: 0;
	border-top: solid 1px #666;}
.editorFooter .button {padding-top: 0px; padding-bottom: 0px;}

/*}}}*/
<<tiddler ShowSection with: [[testdisk]]>>

References:
https://help.ubuntu.com/community/DataRecovery

The Openfiler administrator account username is "openfiler". The default password is "password".
[[Welcome]]
hourly
daily
weekly
...

/***
Authors: Eric Shulman
version: 1.0.0
source: http://www.tiddlytools.com/
This plugin allows you to disable TiddlyWiki's automatic WikiWord linking behavior, so that WikiWords embedded in tiddler content will be rendered as regular text, instead of being automatically converted to tiddler links.  To create a tiddler link when automatic linking is disabled, you must enclose the link text within {{{[[}}} and {{{]]}}}.
!!!!!Code
***/
//{{{
version.extensions.disableWikiLinks= {major: 1, minor: 0, revision: 0, date: new Date(2005,12,9)};

// G changed to have this on, without checkbox
config.options.chkDisableWikiLinks= true;

// find the formatter for wikiLink and replace handler with 'pass-thru' rendering
for (var i=0; i<config.formatters.length && config.formatters[i].name!="wikiLink"; i++);
config.formatters[i].coreHandler=config.formatters[i].handler;
config.formatters[i].handler=function(w) {
	// if not enabled, just do standard WikiWord link formatting
	if (!config.options.chkDisableWikiLinks) return this.coreHandler(w);
	// supress any leading "~" (if present)
	var skip=(w.matchText.substr(0,1)==config.textPrimitives.unWikiLink)?1:0;
	w.outputText(w.output,w.matchStart+skip,w.nextMatch)
}
//}}}
&nbsp;<script label="O" title="toggle sidebar">
   var sb=document.getElementById('sidebar');
   var da=document.getElementById('displayArea');
   if (sb.style.display == 'none') {
      da.style.marginLeft = '18.5em';
      sb.style.display = 'block';}
   else {
      da.style.marginLeft = '0em';
      sb.style.display = 'none';}
</script>&nbsp;<script label="O" title="toggle title">
   var h=document.getElementById('head');
   if (h.style.height == '1em') {
      h.style.height = '5.8em';}
   else {
      h.style.height = '1em';}
</script>&nbsp;<script label="§" title="save tiddlywiki">
saveChanges();
</script>&nbsp;
http://www.linuxlove.info/site/21/xbox-360-media-sharing-ushare-and-fuppes/

http://ppa.launchpad.net/james-lee/ubuntu/pool/main/f/fuppes/
Generic Linux:
{{{
wget http://voxel.dl.sourceforge.net/sourceforge/webadmin/webmin-1.490.tar.gz
}}}
or 
{{{
wget http://prdownloads.sourceforge.net/webadmin/webmin-1.490.tar.gz
}}}

or for Debian:
{{{
wget http://prdownloads.sourceforge.net/webadmin/webmin_1.490_all.deb
}}}
Example script (CHECK SYNTAX SINCE THIS IS FROM MEMORY)
{{{
#!/bin/bash
#
# First, disable the path to VMFS1 on vmhba1
esxcfg-mpath --lun=vmhba1:0:1 --path=vmhba1:0:1:1 --state=off
#
# rescan vmhba1 and vmhba3, forcing failover if it did not occur already
vmkfstools -s vmhba1
vmkfstools -s vmhba3
#
# now that path to VMFS1 is on vmhba3, reenable path via vmhba1
esxcfg-mpath --lun=vmhba1:0:1 --path=vmhba1:0:1:1 --state=on
#
# policy. That is why we run the script at each boot
vmkfstools -s vmhba1
vmkfstools -s vmhba3
}}}

Copy this script to a file called (anything you want) multipath.sh
chmod 755 multipath.sh

Add /your folder/multipath.sh after the last line in your rc.local (back up rc.local to rc.local.bk first just in case).

Source: http://communities.vmware.com/message/638291#638291
ESX 3.5 is compatible with packages from Red Hat Linux 8.0 for i386
In order to change the timezone of your system you will need to access the file:


1. Log in as root, check timezone by executing `date`. 
{{{
# date
}}}

2. Change to the directory /usr/share/zoneinfo 
{{{
#  cd /usr/share/zoneinfo 
}}}
Find the time zone in the folders. For Central time, it would be /Americas/Chicago

3. Backup the previous timezone configuration:
{{{
# mv /etc/localtime  /etc/localtime-old
}}}

4. Create a symbolic link from the appropiate timezone to /etc/localtime. 
{{{
# ln -sf /usr/share/zoneinfo/Americas/Chicago /etc/localtime
}}}
6. Set the ZONE entry in the file /etc/sysconfig/clock file 
{{{
# nano /etc/sysconfig/clock
}}}
It should look after editing to something like this:

ZONE="America/Chicago"
UTC=false
ARC=false

7. Set the hardware clock by executing:
{{{
# /sbin/hwclock --systohc
}}}
The error message:
{{{
*sys-package-mgr*: can't write index file
}}}
is due to two things:
* inexistance of directory /cachedir/packages
* lack of rights on directory /cachedir/packages
!Solution:
If we installed Jython in 
{{{
/opt/jython2.2.1
}}}
the we must create the directory /cachedir/packages:
{{{
$ sudo mkdir -p /opt/jython2.2.1/cachedir/packages
}}}
Then assign full rights 777 to /opt/jython2.2.1/cachedir and below:
{{{
$ sudo chmod -R 777 /opt/jython2.2.1/cachedir
}}}
If this works only the first time, we may need to assign rights one more time.
Edit the file containing the IP info:
{{{
nano /etc/sysconfig/network-scripts/ifcfg-eth0
}}}

Edit the gateway and host info:
{{{
nano /etc/sysconfig/network
}}}
Restart the interfaces...
{{{
/etc/init.d/network restart
}}}
__________________
<!--{{{-->
<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>
<!--}}}-->
/***
|Name|EditTiddlerPlugin|
|Source|http://www.TiddlyTools.com/#EditTiddlerPlugin|
|Version|1.2.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|plugin|
|Requires||
|Overrides||
|Description|embed an 'edit' link in tiddler content to invoke edit on any specified tiddler title|

!!!!!Usage:
<<<
{{{<<editTiddler TiddlerName linktext>>}}}
If no tiddler title is specified (or the special keyword "here" is used), the tiddler containing the rendered macro is assumed.  You can also specify optional alternative "link text" to be displayed. The default link text is "edit".
<<<
!!!!!Revisions:
<<<
2007.03.22 1.2.0 added support for 'here' keyword and optional 2nd param to specify label text
2007.03.15 1.1.1 fixed 'get tiddler ID' logic so it actually works! D'oh! 
2007.03.11 1.1.0 changed 'get tiddler ID' logic so that macro can be used outside a tiddler (i.e., in mainMenu) by specifying the ID
2006.10.04 1.0.1 invoke findContainingTiddler() as fallback when 'tiddler' param is null
2006.04.28 1.0.0 Initial release
<<<
!!!Code:
***/
//{{{
config.macros.editTiddler={
	handler: function(place,macroName,params,wikifier,paramString,tiddler) {
		var tid=params.shift(); // use specified tiddler ID (or "here")
		if (!tid || tid=="here") {
			if (tiddler)
				tid=tiddler.title; // use current tiddler, fallback to find tiddler if none provided
			else { 
				var here=story.findContainingTiddler(place);
				if (!here) return; // not in a tiddler, do nothing
				tid=here.getAttribute('tiddler'); // get ID from tiddler element
			}
		}
		var label="edit"; if (params[0]) label=params.shift();
		createTiddlyButton(place,label,'edit tiddler: '+tid,this.onclick).setAttribute('which',tid);
	},
	onclick: function(e) {
		story.displayTiddler(null,this.getAttribute('which'),DEFAULT_EDIT_TEMPLATE);
	}
}
//}}}
Steps to Enable Mouse Wheel Scrolling in Ubuntu Hardy under VMware Fusion

# Launch a Terminal (Applications menu -> Accessories -> Terminal).

# Type:
{{{
    sudo gedit /etc/X11/xorg.conf
}}}
# Scroll down (it’s not far, perhaps 20 - 30 lines) till you see a block that looks like this:
{{{
    Section "InputDevice"
    Identifier "Configured Mouse"
    Driver "vmmouse"
    [.. blah blah blah ..]
    EndSection
}}}
# Replace that whole section with this:
{{{
    Section "InputDevice"
    Identifier "Configured Mouse"
    Driver "vmmouse"
    Option "CorePointer"
    Option "Device" "/dev/input/mice"
    Option "Protocol" "ImPS/2"
    Option "Buttons" "5"
    Option "ZAxisMapping" "4 5"
    EndSection
}}}
# Save the file, then close all your apps and hit Ctrl+Alt+Backspace. X restarts within a few seconds, and you’re back up and running. Scrolling should now be possible!

Found in: http://peterc.org/2008/64-how-to-enable-vertical-mouse-wheel-scrolling-in-ubuntu-hardy-on-vmware-fusion.html
{{{
passwd root
}}}
When getting this type of errors:
{{{
*sys-package-mgr*: can't create package cache dir, '/usr/share/java/cachedir/packages'
}}}
or 
{{{
*sys-package-mgr*: can't write index file
}}}
the problem is with the JYTHON_HOME cachedir permission.
What I did in Ubuntu 8.1 and Linux Mint Felicia is to change permission in the folder:
{{{
/usr/share/java/cachedir
}}
to this:
{{{
sudo chmod -R 755 /usr/share/java/cachedir
}}}

Related:
http://www.prasannatech.net/2009/02/jython-sys-package-mgr-processing-jar.html
<<tiddler ShowSection with: [[install iscsitarget application]]>>
{{{
sudo mount -a
}}}
/%
|Name|ExpandSlidersScript|
|Source|http://www.TiddlyTools.com/#ExpandSlidersScript|
|Version|1.1.0|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|script|
|Requires|InlineJavascriptPlugin NestedSlidersPlugin (optional)|
|Overrides||
|Description|simulateously expand/collapse all nested sliders in a tiddler (or ID'd DOM element)|

Usage:
	<<tiddler ExpandSlidersScript with: elementID expandlabel collapselabel>>
Where elementID is one of:
	""   = the current tiddler
	here = the current container
	ID   = specific DOM element ID (e.g., "mainMenu")

%/<script label="expand" title="expand/collapse sliders">
	var here=story.findContainingTiddler(place)||place.parentNode.parentNode; // tiddler or container
	if ('$1'!='$'+'1' && '$1'.length) {
		if ('$1'=='here') here=place.parentNode.parentNode; // container
		else here=document.getElementById('$1'); // ID
	}
	if (!here) return false;
	var expandlabel='expand'; if ('$2'!='$'+'2') var expandlabel='$2';
	var collapselabel='collapse'; if ('$3'!='$'+'3') var collapselabel='$3';
	var elems=here.getElementsByTagName('*');
	var state=(place.innerHTML.toLowerCase()==expandlabel)?'none':'block';
	for (var e=0; e<elems.length; e++) { var p=elems[e];
		if (p.className!='sliderPanel' || p.style.display!=state) continue;
		if (p.button) window.onClickNestedSlider({target:p.button});
		else p.previousSibling.onclick();
	}
	place.innerHTML=state=='none'?collapselabel:expandlabel;
	return false;
</script><script>
	place.lastChild.style.fontWeight='normal';
	var expandlabel='expand'; if ('$2'!='$'+'2') var expandlabel='$2';
	var collapselabel='collapse'; if ('$3'!='$'+'3') var collapselabel='$3';
	var currlabel=place.lastChild.innerHTML.toLowerCase();
	place.lastChild.innerHTML=expandlabel;
</script>
# interactive
text

install
url --url=http://[UDA_IPADDR]/[OS]/[FLAVOR]
lang en_US.UTF-8
keyboard us
skipx
network --device eth0 --bootproto dhcp
rootpw secret
firewall --disabled
selinux --disabled
authconfig --enableshadow --enablemd5
timezone Europe/Amsterdam
zerombr
bootloader --location=mbr 
clearpart --linux --all --drives=sda
part /boot --fstype ext3 --size=100 --asprimary --ondisk=sda
part swap --fstype swap --size=256 --grow --maxsize=512 --ondisk=sda
part / --fstype ext3 --size=1 --grow --asprimary --ondisk=sda
reboot

%pre

%packages
kernel
e2fsprogs
grub

%post
{{{
bash-3.00# df -h
Filesystem             size   used  avail capacity  Mounted on
/dev/dsk/c1t0d0s0      8.9G   3.4G   5.4G    39%    /
/devices                 0K     0K     0K     0%    /devices
ctfs                     0K     0K     0K     0%    /system/contract
proc                     0K     0K     0K     0%    /proc
mnttab                   0K     0K     0K     0%    /etc/mnttab
swap                   1.5G   844K   1.5G     1%    /etc/svc/volatile
objfs                    0K     0K     0K     0%    /system/object
/usr/lib/libc/libc_hwcap1.so.1
                       8.9G   3.4G   5.4G    39%    /lib/libc.so.1
fd                       0K     0K     0K     0%    /dev/fd
swap                   1.5G    52K   1.5G     1%    /tmp
swap                   1.5G    32K   1.5G     1%    /var/run
/dev/dsk/c1t0d0s5      1.9G   2.1M   1.9G     1%    /opt
/dev/dsk/c1t0d0s6      1.5G   1.5M   1.4G     1%    /opt/studio
/dev/dsk/c1t0d0s7      1.4G   1.4M   1.3G     1%    /export/home
/hgfs                   16G   4.0M    16G     1%    /hgfs
/vol/dev/dsk/c0t0d0/sol_10_807_x86
                       2.5G   2.5G     0K   100%    /cdrom/sol_10_807_x86
/tmp/VMwareDnD           0K     0K     0K     0%    /var/run/vmblock
}}}
{{{
cat /etc/lsb-release
}}}
or 
{{{
lsb_release -a
}}}
or 
{{{
cat /etc/issue
}}}
{{{
$ egrep '(vmx|svm)' /proc/cpuinfo
}}}
{{{
sudo /sbin/dumpe2fs /dev/sdc1 | grep 'Block size'
}}}
{{{
# whereis swat
swat: /usr/sbin/swat /usr/share/man/man8/swat.8.gz
}}}
{{{
# find / -name swat
/etc/webmin/samba/swat
/etc/xinetd.d/swat
/usr/sbin/swat
/usr/share/samba/swat
}}}
!Disconnect the new or second disk
Disconnect the new disk from the 2nd USB port USB1. 
Only connect the 1st disk that was booting from the USB0 port.
!Reconnect 2nd disk after system has initialized
Once the system is stable, meaning can be pinged and ssh'd the we will proceed to connect the 2nd disk. Wait for 30-45 second until 2nd disk is recognized by the OS.

!Find the UID for the disk that contains root /
Install the application [[tree]] with:
{{{
sudo apt-get install tree
}}}
Find the UID with:
{{{
tree /dev/disk
}}}
The output would like like this:
{{{
/dev/disk
|-- by-id
|   |-- usb-Generic_External_483831395431474820202020 -> ../../sda
|   |-- usb-Generic_External_483831395431474820202020-part1 -> ../../sda1
|   |-- usb-IC25N020_ATCS04-0_0 -> ../../sdb
|   |-- usb-IC25N020_ATCS04-0_0-part1 -> ../../sdb1
|   `-- usb-IC25N020_ATCS04-0_0-part2 -> ../../sdb2
|-- by-path
|   |-- pci-0000:00:01.2-usb-0:1:1.0-scsi-0:0:0:0 -> ../../sdb
|   |-- pci-0000:00:01.2-usb-0:1:1.0-scsi-0:0:0:0-part1 -> ../../sdb1
|   |-- pci-0000:00:01.2-usb-0:1:1.0-scsi-0:0:0:0-part2 -> ../../sdb2
|   |-- pci-0000:00:01.2-usb-0:2:1.0-scsi-0:0:0:0 -> ../../sda
|   `-- pci-0000:00:01.2-usb-0:2:1.0-scsi-0:0:0:0-part1 -> ../../sda1
`-- by-uuid
    `-- 88585d7d-fc0e-4764-a4dd-7749670e6db4 -> ../../sdb1

3 directories, 11 files
}}}

!!The original [[fstab]] file would look like this:
{{{
# /etc/fstab: static file system information.
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc            /proc           proc    defaults        0       0
/dev/sda1       /               ext3    defaults,errors=remount-ro 0       1
/dev/sda2       none            swap    sw              0       0
/dev/sda1       /media/usb0     auto    rw,user,noauto  0       0
/dev/sda2       /media/usb1     auto    rw,user,noauto  0       0
}}}
It may have incorrect references to the disk devices. The part "/dev/sda1" corresponding to the root will have to change by the UUID identifier.

!!Copy the UUID label below "by-uuid" to fstab
Replace the file system label in the "/" row with "UUID=88585d7d-fc0e-4764-a4dd-7749670e6db4". The [[fstab]] file would look like this:
{{{
# /etc/fstab: static file system information.
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc            /proc           proc    defaults        0       0
UUID=88585d7d-fc0e-4764-a4dd-7749670e6db4       /               ext3    defaults,errors=remount-ro 0       1
/dev/sdb2       none            swap    sw              0       0
/dev/sdb1       /media/usb0     auto    rw,user,noauto  0       0
}}}

! Save the changes to the initramfs. Be patient; it takes around 3 minutes.
{{{
sudo update-initramfs -u
}}}

And flash it:
{{{
sudo flash-kernel
}}}

!Reboot

!Final fstab
After all partitioning, formatting of the new disk the fstab file would look like this:
{{{
# /etc/fstab: static file system information.
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc            /proc           proc    defaults        0       0
UUID=88585d7d-fc0e-4764-a4dd-7749670e6db4       /               ext3    defaults,errors=remoun$
/dev/sdb2       none            swap    sw              0       0
/dev/sdb1       /media/usb0     auto    rw,user,noauto  0       0
/dev/sda1  /data  ext2  suid,dev,exec  0  0
}}}

Source: http://www.mail-archive.com/debian-arm@lists.debian.org/msg07802.html
Or Uninstall gnash, swfdec, flashplugin-nonfree, nspluginwrapper etc
and try the new 64bit Flash Plugin. http://labs.adobe.com/downloads/flashplayer10.html
/%

Usage:
	<<tiddler ReplaceTiddlerTitle with: "new title text">>

%/<script>
	var tid="$1";
var s = "$1";
var out = "";
	if (tid=='$'+'1') { // use current tiddler
		var here=story.findContainingTiddler(place); if (!here) return;
		var tid=here.getAttribute('tiddler');
	}
out = "<<chkSlider" + s + " " + s + " " + s + ">>";
notes = "$2";
lbl = "$1"+"..." + "\xBB";
folder = "$1"+ "F";

wikify("<<slider " + "chkSlider"+ "_" + "$1" + "F " + "$1" + "F  " +  lbl + " " + "[[" +notes +"]]"+ ">>"  ,place);

//return (s);
</script>
/***
|''Name:''|ForEachTiddlerPlugin|
|''Version:''|1.0.8 (2007-04-12)|
|''Source:''|http://tiddlywiki.abego-software.de/#ForEachTiddlerPlugin|
|''Author:''|UdoBorkowski (ub [at] abego-software [dot] de)|
|''Licence:''|[[BSD open source license (abego Software)|http://www.abego-software.de/legal/apl-v10.html]]|
|''Copyright:''|&copy; 2005-2007 [[abego Software|http://www.abego-software.de]]|
|''TiddlyWiki:''|1.2.38+, 2.0|
|''Browser:''|Firefox 1.0.4+; Firefox 1.5; InternetExplorer 6.0|
!Description

Create customizable lists, tables etc. for your selections of tiddlers. Specify the tiddlers to include and their order through a powerful language.

''Syntax:'' 
|>|{{{<<}}}''forEachTiddler'' [''in'' //tiddlyWikiPath//] [''where'' //whereCondition//] [''sortBy'' //sortExpression// [''ascending'' //or// ''descending'']] [''script'' //scriptText//] [//action// [//actionParameters//]]{{{>>}}}|
|//tiddlyWikiPath//|The filepath to the TiddlyWiki the macro should work on. When missing the current TiddlyWiki is used.|
|//whereCondition//|(quoted) JavaScript boolean expression. May refer to the build-in variables {{{tiddler}}} and {{{context}}}.|
|//sortExpression//|(quoted) JavaScript expression returning "comparable" objects (using '{{{<}}}','{{{>}}}','{{{==}}}'. May refer to the build-in variables {{{tiddler}}} and {{{context}}}.|
|//scriptText//|(quoted) JavaScript text. Typically defines JavaScript functions that are called by the various JavaScript expressions (whereClause, sortClause, action arguments,...)|
|//action//|The action that should be performed on every selected tiddler, in the given order. By default the actions [[addToList|AddToListAction]] and [[write|WriteAction]] are supported. When no action is specified [[addToList|AddToListAction]] is used.|
|//actionParameters//|(action specific) parameters the action may refer while processing the tiddlers (see action descriptions for details). <<tiddler [[JavaScript in actionParameters]]>>|
|>|~~Syntax formatting: Keywords in ''bold'', optional parts in [...]. 'or' means that exactly one of the two alternatives must exist.~~|

See details see [[ForEachTiddlerMacro]] and [[ForEachTiddlerExamples]].

!Revision history
* v1.0.8 (2007-04-12)
** Adapted to latest TiddlyWiki 2.2 Beta importTiddlyWiki API (introduced with changeset 2004). TiddlyWiki 2.2 Beta builds prior to changeset 2004 are no longer supported (but TiddlyWiki 2.1 and earlier, of cause)
* v1.0.7 (2007-03-28)
** Also support "pre" formatted TiddlyWikis (introduced with TW 2.2) (when using "in" clause to work on external tiddlers)
* v1.0.6 (2006-09-16)
** Context provides "viewerTiddler", i.e. the tiddler used to view the macro. Most times this is equal to the "inTiddler", but when using the "tiddler" macro both may be different.
** Support "begin", "end" and "none" expressions in "write" action
* v1.0.5 (2006-02-05)
** Pass tiddler containing the macro with wikify, context object also holds reference to tiddler containing the macro ("inTiddler"). Thanks to SimonBaird.
** Support Firefox 1.5.0.1
** Internal
*** Make "JSLint" conform
*** "Only install once"
* v1.0.4 (2006-01-06)
** Support TiddlyWiki 2.0
* v1.0.3 (2005-12-22)
** Features: 
*** Write output to a file supports multi-byte environments (Thanks to Bram Chen) 
*** Provide API to access the forEachTiddler functionality directly through JavaScript (see getTiddlers and performMacro)
** Enhancements:
*** Improved error messages on InternetExplorer.
* v1.0.2 (2005-12-10)
** Features: 
*** context object also holds reference to store (TiddlyWiki)
** Fixed Bugs: 
*** ForEachTiddler 1.0.1 has broken support on win32 Opera 8.51 (Thanks to BrunoSabin for reporting)
* v1.0.1 (2005-12-08)
** Features: 
*** Access tiddlers stored in separated TiddlyWikis through the "in" option. I.e. you are no longer limited to only work on the "current TiddlyWiki".
*** Write output to an external file using the "toFile" option of the "write" action. With this option you may write your customized tiddler exports.
*** Use the "script" section to define "helper" JavaScript functions etc. to be used in the various JavaScript expressions (whereClause, sortClause, action arguments,...).
*** Access and store context information for the current forEachTiddler invocation (through the build-in "context" object) .
*** Improved script evaluation (for where/sort clause and write scripts).
* v1.0.0 (2005-11-20)
** initial version

!Code
***/
//{{{

 
//============================================================================
//============================================================================
// ForEachTiddlerPlugin
//============================================================================
//============================================================================

// Only install once
if (!version.extensions.ForEachTiddlerPlugin) {

if (!window.abego) window.abego = {};

version.extensions.ForEachTiddlerPlugin = {
 major: 1, minor: 0, revision: 8, 
 date: new Date(2007,3,12), 
 source: "http://tiddlywiki.abego-software.de/#ForEachTiddlerPlugin",
 licence: "[[BSD open source license (abego Software)|http://www.abego-software.de/legal/apl-v10.html]]",
 copyright: "Copyright (c) abego Software GmbH, 2005-2007 (www.abego-software.de)"
};

// For backward compatibility with TW 1.2.x
//
if (!TiddlyWiki.prototype.forEachTiddler) {
 TiddlyWiki.prototype.forEachTiddler = function(callback) {
 for(var t in this.tiddlers) {
 callback.call(this,t,this.tiddlers[t]);
 }
 };
}

//============================================================================
// forEachTiddler Macro
//============================================================================

version.extensions.forEachTiddler = {
 major: 1, minor: 0, revision: 8, date: new Date(2007,3,12), provider: "http://tiddlywiki.abego-software.de"};

// ---------------------------------------------------------------------------
// Configurations and constants 
// ---------------------------------------------------------------------------

config.macros.forEachTiddler = {
 // Standard Properties
 label: "forEachTiddler",
 prompt: "Perform actions on a (sorted) selection of tiddlers",

 // actions
 actions: {
 addToList: {},
 write: {}
 }
};

// ---------------------------------------------------------------------------
// The forEachTiddler Macro Handler 
// ---------------------------------------------------------------------------

config.macros.forEachTiddler.getContainingTiddler = function(e) {
 while(e && !hasClass(e,"tiddler"))
 e = e.parentNode;
 var title = e ? e.getAttribute("tiddler") : null; 
 return title ? store.getTiddler(title) : null;
};

config.macros.forEachTiddler.handler = function(place,macroName,params,wikifier,paramString,tiddler) {
 // config.macros.forEachTiddler.traceMacroCall(place,macroName,params,wikifier,paramString,tiddler);

 if (!tiddler) tiddler = config.macros.forEachTiddler.getContainingTiddler(place);
 // --- Parsing ------------------------------------------

 var i = 0; // index running over the params
 // Parse the "in" clause
 var tiddlyWikiPath = undefined;
 if ((i < params.length) && params[i] == "in") {
 i++;
 if (i >= params.length) {
 this.handleError(place, "TiddlyWiki path expected behind 'in'.");
 return;
 }
 tiddlyWikiPath = this.paramEncode((i < params.length) ? params[i] : "");
 i++;
 }

 // Parse the where clause
 var whereClause ="true";
 if ((i < params.length) && params[i] == "where") {
 i++;
 whereClause = this.paramEncode((i < params.length) ? params[i] : "");
 i++;
 }

 // Parse the sort stuff
 var sortClause = null;
 var sortAscending = true; 
 if ((i < params.length) && params[i] == "sortBy") {
 i++;
 if (i >= params.length) {
 this.handleError(place, "sortClause missing behind 'sortBy'.");
 return;
 }
 sortClause = this.paramEncode(params[i]);
 i++;

 if ((i < params.length) && (params[i] == "ascending" || params[i] == "descending")) {
 sortAscending = params[i] == "ascending";
 i++;
 }
 }

 // Parse the script
 var scriptText = null;
 if ((i < params.length) && params[i] == "script") {
 i++;
 scriptText = this.paramEncode((i < params.length) ? params[i] : "");
 i++;
 }

 // Parse the action. 
 // When we are already at the end use the default action
 var actionName = "addToList";
 if (i < params.length) {
 if (!config.macros.forEachTiddler.actions[params[i]]) {
 this.handleError(place, "Unknown action '"+params[i]+"'.");
 return;
 } else {
 actionName = params[i]; 
 i++;
 }
 } 
 
 // Get the action parameter
 // (the parsing is done inside the individual action implementation.)
 var actionParameter = params.slice(i);


 // --- Processing ------------------------------------------
 try {
 this.performMacro({
 place: place, 
 inTiddler: tiddler,
 whereClause: whereClause, 
 sortClause: sortClause, 
 sortAscending: sortAscending, 
 actionName: actionName, 
 actionParameter: actionParameter, 
 scriptText: scriptText, 
 tiddlyWikiPath: tiddlyWikiPath});

 } catch (e) {
 this.handleError(place, e);
 }
};

// Returns an object with properties "tiddlers" and "context".
// tiddlers holds the (sorted) tiddlers selected by the parameter,
// context the context of the execution of the macro.
//
// The action is not yet performed.
//
// @parameter see performMacro
//
config.macros.forEachTiddler.getTiddlersAndContext = function(parameter) {

 var context = config.macros.forEachTiddler.createContext(parameter.place, parameter.whereClause, parameter.sortClause, parameter.sortAscending, parameter.actionName, parameter.actionParameter, parameter.scriptText, parameter.tiddlyWikiPath, parameter.inTiddler);

 var tiddlyWiki = parameter.tiddlyWikiPath ? this.loadTiddlyWiki(parameter.tiddlyWikiPath) : store;
 context["tiddlyWiki"] = tiddlyWiki;
 
 // Get the tiddlers, as defined by the whereClause
 var tiddlers = this.findTiddlers(parameter.whereClause, context, tiddlyWiki);
 context["tiddlers"] = tiddlers;

 // Sort the tiddlers, when sorting is required.
 if (parameter.sortClause) {
 this.sortTiddlers(tiddlers, parameter.sortClause, parameter.sortAscending, context);
 }

 return {tiddlers: tiddlers, context: context};
};

// Returns the (sorted) tiddlers selected by the parameter.
//
// The action is not yet performed.
//
// @parameter see performMacro
//
config.macros.forEachTiddler.getTiddlers = function(parameter) {
 return this.getTiddlersAndContext(parameter).tiddlers;
};

// Performs the macros with the given parameter.
//
// @param parameter holds the parameter of the macro as separate properties.
// The following properties are supported:
//
// place
// whereClause
// sortClause
// sortAscending
// actionName
// actionParameter
// scriptText
// tiddlyWikiPath
//
// All properties are optional. 
// For most actions the place property must be defined.
//
config.macros.forEachTiddler.performMacro = function(parameter) {
 var tiddlersAndContext = this.getTiddlersAndContext(parameter);

 // Perform the action
 var actionName = parameter.actionName ? parameter.actionName : "addToList";
 var action = config.macros.forEachTiddler.actions[actionName];
 if (!action) {
 this.handleError(parameter.place, "Unknown action '"+actionName+"'.");
 return;
 }

 var actionHandler = action.handler;
 actionHandler(parameter.place, tiddlersAndContext.tiddlers, parameter.actionParameter, tiddlersAndContext.context);
};

// ---------------------------------------------------------------------------
// The actions 
// ---------------------------------------------------------------------------

// Internal.
//
// --- The addToList Action -----------------------------------------------
//
config.macros.forEachTiddler.actions.addToList.handler = function(place, tiddlers, parameter, context) {
 // Parse the parameter
 var p = 0;

 // Check for extra parameters
 if (parameter.length > p) {
 config.macros.forEachTiddler.createExtraParameterErrorElement(place, "addToList", parameter, p);
 return;
 }

 // Perform the action.
 var list = document.createElement("ul");
 place.appendChild(list);
 for (var i = 0; i < tiddlers.length; i++) {
 var tiddler = tiddlers[i];
 var listItem = document.createElement("li");
 list.appendChild(listItem);
 createTiddlyLink(listItem, tiddler.title, true);
 }
};

abego.parseNamedParameter = function(name, parameter, i) {
 var beginExpression = null;
 if ((i < parameter.length) && parameter[i] == name) {
 i++;
 if (i >= parameter.length) {
 throw "Missing text behind '%0'".format([name]);
 }
 
 return config.macros.forEachTiddler.paramEncode(parameter[i]);
 }
 return null;
}

// Internal.
//
// --- The write Action ---------------------------------------------------
//
config.macros.forEachTiddler.actions.write.handler = function(place, tiddlers, parameter, context) {
 // Parse the parameter
 var p = 0;
 if (p >= parameter.length) {
 this.handleError(place, "Missing expression behind 'write'.");
 return;
 }

 var textExpression = config.macros.forEachTiddler.paramEncode(parameter[p]);
 p++;

 // Parse the "begin" option
 var beginExpression = abego.parseNamedParameter("begin", parameter, p);
 if (beginExpression !== null) 
 p += 2;
 var endExpression = abego.parseNamedParameter("end", parameter, p);
 if (endExpression !== null) 
 p += 2;
 var noneExpression = abego.parseNamedParameter("none", parameter, p);
 if (noneExpression !== null) 
 p += 2;

 // Parse the "toFile" option
 var filename = null;
 var lineSeparator = undefined;
 if ((p < parameter.length) && parameter[p] == "toFile") {
 p++;
 if (p >= parameter.length) {
 this.handleError(place, "Filename expected behind 'toFile' of 'write' action.");
 return;
 }
 
 filename = config.macros.forEachTiddler.getLocalPath(config.macros.forEachTiddler.paramEncode(parameter[p]));
 p++;
 if ((p < parameter.length) && parameter[p] == "withLineSeparator") {
 p++;
 if (p >= parameter.length) {
 this.handleError(place, "Line separator text expected behind 'withLineSeparator' of 'write' action.");
 return;
 }
 lineSeparator = config.macros.forEachTiddler.paramEncode(parameter[p]);
 p++;
 }
 }
 
 // Check for extra parameters
 if (parameter.length > p) {
 config.macros.forEachTiddler.createExtraParameterErrorElement(place, "write", parameter, p);
 return;
 }

 // Perform the action.
 var func = config.macros.forEachTiddler.getEvalTiddlerFunction(textExpression, context);
 var count = tiddlers.length;
 var text = "";
 if (count > 0 && beginExpression)
 text += config.macros.forEachTiddler.getEvalTiddlerFunction(beginExpression, context)(undefined, context, count, undefined);
 
 for (var i = 0; i < count; i++) {
 var tiddler = tiddlers[i];
 text += func(tiddler, context, count, i);
 }
 
 if (count > 0 && endExpression)
 text += config.macros.forEachTiddler.getEvalTiddlerFunction(endExpression, context)(undefined, context, count, undefined);

 if (count == 0 && noneExpression) 
 text += config.macros.forEachTiddler.getEvalTiddlerFunction(noneExpression, context)(undefined, context, count, undefined);
 

 if (filename) {
 if (lineSeparator !== undefined) {
 lineSeparator = lineSeparator.replace(/\\n/mg, "\n").replace(/\\r/mg, "\r");
 text = text.replace(/\n/mg,lineSeparator);
 }
 saveFile(filename, convertUnicodeToUTF8(text));
 } else {
 var wrapper = createTiddlyElement(place, "span");
 wikify(text, wrapper, null/* highlightRegExp */, context.inTiddler);
 }
};


// ---------------------------------------------------------------------------
// Helpers
// ---------------------------------------------------------------------------

// Internal.
//
config.macros.forEachTiddler.createContext = function(placeParam, whereClauseParam, sortClauseParam, sortAscendingParam, actionNameParam, actionParameterParam, scriptText, tiddlyWikiPathParam, inTiddlerParam) {
 return {
 place : placeParam, 
 whereClause : whereClauseParam, 
 sortClause : sortClauseParam, 
 sortAscending : sortAscendingParam, 
 script : scriptText,
 actionName : actionNameParam, 
 actionParameter : actionParameterParam,
 tiddlyWikiPath : tiddlyWikiPathParam,
 inTiddler : inTiddlerParam, // the tiddler containing the <<forEachTiddler ...>> macro call.
 viewerTiddler : config.macros.forEachTiddler.getContainingTiddler(placeParam) // the tiddler showing the forEachTiddler result
 };
};

// Internal.
//
// Returns a TiddlyWiki with the tiddlers loaded from the TiddlyWiki of 
// the given path.
//
config.macros.forEachTiddler.loadTiddlyWiki = function(path, idPrefix) {
 if (!idPrefix) {
 idPrefix = "store";
 }
 var lenPrefix = idPrefix.length;
 
 // Read the content of the given file
 var content = loadFile(this.getLocalPath(path));
 if(content === null) {
 throw "TiddlyWiki '"+path+"' not found.";
 }
 
 var tiddlyWiki = new TiddlyWiki();

 // Starting with TW 2.2 there is a helper function to import the tiddlers
 if (tiddlyWiki.importTiddlyWiki) {
 if (!tiddlyWiki.importTiddlyWiki(content))
 throw "File '"+path+"' is not a TiddlyWiki.";
 tiddlyWiki.dirty = false;
 return tiddlyWiki;
 }
 
 // The legacy code, for TW < 2.2
 
 // Locate the storeArea div's
 var posOpeningDiv = content.indexOf(startSaveArea);
 var posClosingDiv = content.lastIndexOf(endSaveArea);
 if((posOpeningDiv == -1) || (posClosingDiv == -1)) {
 throw "File '"+path+"' is not a TiddlyWiki.";
 }
 var storageText = content.substr(posOpeningDiv + startSaveArea.length, posClosingDiv);
 
 // Create a "div" element that contains the storage text
 var myStorageDiv = document.createElement("div");
 myStorageDiv.innerHTML = storageText;
 myStorageDiv.normalize();
 
 // Create all tiddlers in a new TiddlyWiki
 // (following code is modified copy of TiddlyWiki.prototype.loadFromDiv)
 var store = myStorageDiv.childNodes;
 for(var t = 0; t < store.length; t++) {
 var e = store[t];
 var title = null;
 if(e.getAttribute)
 title = e.getAttribute("tiddler");
 if(!title && e.id && e.id.substr(0,lenPrefix) == idPrefix)
 title = e.id.substr(lenPrefix);
 if(title && title !== "") {
 var tiddler = tiddlyWiki.createTiddler(title);
 tiddler.loadFromDiv(e,title);
 }
 }
 tiddlyWiki.dirty = false;

 return tiddlyWiki;
};


 
// Internal.
//
// Returns a function that has a function body returning the given javaScriptExpression.
// The function has the parameters:
// 
// (tiddler, context, count, index)
//
config.macros.forEachTiddler.getEvalTiddlerFunction = function (javaScriptExpression, context) {
 var script = context["script"];
 var functionText = "var theFunction = function(tiddler, context, count, index) { return "+javaScriptExpression+"}";
 var fullText = (script ? script+";" : "")+functionText+";theFunction;";
 return eval(fullText);
};

// Internal.
//
config.macros.forEachTiddler.findTiddlers = function(whereClause, context, tiddlyWiki) {
 var result = [];
 var func = config.macros.forEachTiddler.getEvalTiddlerFunction(whereClause, context);
 tiddlyWiki.forEachTiddler(function(title,tiddler) {
 if (func(tiddler, context, undefined, undefined)) {
 result.push(tiddler);
 }
 });
 return result;
};

// Internal.
//
config.macros.forEachTiddler.createExtraParameterErrorElement = function(place, actionName, parameter, firstUnusedIndex) {
 var message = "Extra parameter behind '"+actionName+"':";
 for (var i = firstUnusedIndex; i < parameter.length; i++) {
 message += " "+parameter[i];
 }
 this.handleError(place, message);
};

// Internal.
//
config.macros.forEachTiddler.sortAscending = function(tiddlerA, tiddlerB) {
 var result = 
 (tiddlerA.forEachTiddlerSortValue == tiddlerB.forEachTiddlerSortValue) 
 ? 0
 : (tiddlerA.forEachTiddlerSortValue < tiddlerB.forEachTiddlerSortValue)
 ? -1 
 : +1; 
 return result;
};

// Internal.
//
config.macros.forEachTiddler.sortDescending = function(tiddlerA, tiddlerB) {
 var result = 
 (tiddlerA.forEachTiddlerSortValue == tiddlerB.forEachTiddlerSortValue) 
 ? 0
 : (tiddlerA.forEachTiddlerSortValue < tiddlerB.forEachTiddlerSortValue)
 ? +1 
 : -1; 
 return result;
};

// Internal.
//
config.macros.forEachTiddler.sortTiddlers = function(tiddlers, sortClause, ascending, context) {
 // To avoid evaluating the sortClause whenever two items are compared 
 // we pre-calculate the sortValue for every item in the array and store it in a 
 // temporary property ("forEachTiddlerSortValue") of the tiddlers.
 var func = config.macros.forEachTiddler.getEvalTiddlerFunction(sortClause, context);
 var count = tiddlers.length;
 var i;
 for (i = 0; i < count; i++) {
 var tiddler = tiddlers[i];
 tiddler.forEachTiddlerSortValue = func(tiddler,context, undefined, undefined);
 }

 // Do the sorting
 tiddlers.sort(ascending ? this.sortAscending : this.sortDescending);

 // Delete the temporary property that holds the sortValue. 
 for (i = 0; i < tiddlers.length; i++) {
 delete tiddlers[i].forEachTiddlerSortValue;
 }
};


// Internal.
//
config.macros.forEachTiddler.trace = function(message) {
 displayMessage(message);
};

// Internal.
//
config.macros.forEachTiddler.traceMacroCall = function(place,macroName,params) {
 var message ="<<"+macroName;
 for (var i = 0; i < params.length; i++) {
 message += " "+params[i];
 }
 message += ">>";
 displayMessage(message);
};


// Internal.
//
// Creates an element that holds an error message
// 
config.macros.forEachTiddler.createErrorElement = function(place, exception) {
 var message = (exception.description) ? exception.description : exception.toString();
 return createTiddlyElement(place,"span",null,"forEachTiddlerError","<<forEachTiddler ...>>: "+message);
};

// Internal.
//
// @param place [may be null]
//
config.macros.forEachTiddler.handleError = function(place, exception) {
 if (place) {
 this.createErrorElement(place, exception);
 } else {
 throw exception;
 }
};

// Internal.
//
// Encodes the given string.
//
// Replaces 
// "$))" to ">>"
// "$)" to ">"
//
config.macros.forEachTiddler.paramEncode = function(s) {
 var reGTGT = new RegExp("\\$\\)\\)","mg");
 var reGT = new RegExp("\\$\\)","mg");
 return s.replace(reGTGT, ">>").replace(reGT, ">");
};

// Internal.
//
// Returns the given original path (that is a file path, starting with "file:")
// as a path to a local file, in the systems native file format.
//
// Location information in the originalPath (i.e. the "#" and stuff following)
// is stripped.
// 
config.macros.forEachTiddler.getLocalPath = function(originalPath) {
 // Remove any location part of the URL
 var hashPos = originalPath.indexOf("#");
 if(hashPos != -1)
 originalPath = originalPath.substr(0,hashPos);
 // Convert to a native file format assuming
 // "file:///x:/path/path/path..." - pc local file --> "x:\path\path\path..."
 // "file://///server/share/path/path/path..." - FireFox pc network file --> "\\server\share\path\path\path..."
 // "file:///path/path/path..." - mac/unix local file --> "/path/path/path..."
 // "file://server/share/path/path/path..." - pc network file --> "\\server\share\path\path\path..."
 var localPath;
 if(originalPath.charAt(9) == ":") // pc local file
 localPath = unescape(originalPath.substr(8)).replace(new RegExp("/","g"),"\\");
 else if(originalPath.indexOf("file://///") === 0) // FireFox pc network file
 localPath = "\\\\" + unescape(originalPath.substr(10)).replace(new RegExp("/","g"),"\\");
 else if(originalPath.indexOf("file:///") === 0) // mac/unix local file
 localPath = unescape(originalPath.substr(7));
 else if(originalPath.indexOf("file:/") === 0) // mac/unix local file
 localPath = unescape(originalPath.substr(5));
 else // pc network file
 localPath = "\\\\" + unescape(originalPath.substr(7)).replace(new RegExp("/","g"),"\\"); 
 return localPath;
};

// ---------------------------------------------------------------------------
// Stylesheet Extensions (may be overridden by local StyleSheet)
// ---------------------------------------------------------------------------
//
setStylesheet(
 ".forEachTiddlerError{color: #ffffff;background-color: #880000;}",
 "forEachTiddler");

//============================================================================
// End of forEachTiddler Macro
//============================================================================


//============================================================================
// String.startsWith Function
//============================================================================
//
// Returns true if the string starts with the given prefix, false otherwise.
//
version.extensions["String.startsWith"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};
//
String.prototype.startsWith = function(prefix) {
 var n = prefix.length;
 return (this.length >= n) && (this.slice(0, n) == prefix);
};



//============================================================================
// String.endsWith Function
//============================================================================
//
// Returns true if the string ends with the given suffix, false otherwise.
//
version.extensions["String.endsWith"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};
//
String.prototype.endsWith = function(suffix) {
 var n = suffix.length;
 return (this.length >= n) && (this.right(n) == suffix);
};


//============================================================================
// String.contains Function
//============================================================================
//
// Returns true when the string contains the given substring, false otherwise.
//
version.extensions["String.contains"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};
//
String.prototype.contains = function(substring) {
 return this.indexOf(substring) >= 0;
};

//============================================================================
// Array.indexOf Function
//============================================================================
//
// Returns the index of the first occurance of the given item in the array or 
// -1 when no such item exists.
//
// @param item [may be null]
//
version.extensions["Array.indexOf"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};
//
Array.prototype.indexOf = function(item) {
 for (var i = 0; i < this.length; i++) {
 if (this[i] == item) {
 return i;
 }
 }
 return -1;
};

//============================================================================
// Array.contains Function
//============================================================================
//
// Returns true when the array contains the given item, otherwise false. 
//
// @param item [may be null]
//
version.extensions["Array.contains"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};
//
Array.prototype.contains = function(item) {
 return (this.indexOf(item) >= 0);
};

//============================================================================
// Array.containsAny Function
//============================================================================
//
// Returns true when the array contains at least one of the elements 
// of the item. Otherwise (or when items contains no elements) false is returned.
//
version.extensions["Array.containsAny"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};
//
Array.prototype.containsAny = function(items) {
 for(var i = 0; i < items.length; i++) {
 if (this.contains(items[i])) {
 return true;
 }
 }
 return false;
};


//============================================================================
// Array.containsAll Function
//============================================================================
//
// Returns true when the array contains all the items, otherwise false.
// 
// When items is null false is returned (even if the array contains a null).
//
// @param items [may be null] 
//
version.extensions["Array.containsAll"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};
//
Array.prototype.containsAll = function(items) {
 for(var i = 0; i < items.length; i++) {
 if (!this.contains(items[i])) {
 return false;
 }
 }
 return true;
};


} // of "install only once"

// Used Globals (for JSLint) ==============
// ... DOM
/*global document */
// ... TiddlyWiki Core
/*global convertUnicodeToUTF8, createTiddlyElement, createTiddlyLink, 
 displayMessage, endSaveArea, hasClass, loadFile, saveFile, 
 startSaveArea, store, wikify */
//}}}


/***
!Licence and Copyright
Copyright (c) abego Software ~GmbH, 2005 ([[www.abego-software.de|http://www.abego-software.de]])

Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:

Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.

Redistributions in binary form must reproduce the above copyright notice, this
list of conditions and the following disclaimer in the documentation and/or other
materials provided with the distribution.

Neither the name of abego Software nor the names of its contributors may be
used to endorse or promote products derived from this software without specific
prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
DAMAGE.
***/
!ext2
{{{
sudo mkfs -t ext2 /dev/sda1
}}}
{{{
sudo mkfs -t ext2 /dev/sda1
}}}
!ext3
{{{
mkfs.ext3 -b 4096 /dev/hdb1
}}}
{{{
/sbin/mkfs -t ext3 /dev/hdbX
}}}
<<tiddler ShowSection with: [[Mount the AFS volume]]>>
<<tiddler ShowSection with: [[Create a AFS cell]]>>
!installation
!configuration files locations

!!user configuration file
{{{
~/.screenrc	
}}}
!!!folder for global settings
{{{
/usr/share/screen-profiles/		
}}}
!!!folder where screen status commands reside
{{{
/var/lib/screen-profiles		
}}}
!!!file with calls to status commands	
{{{
/usr/share/screen-profiles/profiles/common	
}}}

!Examples
!!!Example of screen status commands
{{{
# /var/lib/screen-profiles/cpu-count
count=`grep -c "^processor.*:" /proc/cpuinfo`                                   
[ "$count" = "1" ] || echo $count"x" 
}}}
!!!Example of ~/.screenrc
{{{
# default sessions
screen -t msfz751       0 motd+shell
screen -t superuser     1 sux superuser
screen -t inti          2 ssh superuser@192.168.1.90
screen -t chaski        3 ssh superuser@192.168.1.86
screen -t nslu2         4 ssh superuser@nslu2
#screen -t a3800        5 bash
select 0
}}}
!Modified files
!!! /var/lib/screen-profiles/menu
{{{
printf " \005{= kw}%s" `gettext "Menu:<F12>"`
}}}

[[screen keys]]
http://www.pixelbeat.org/lkdb/screen.html
{{{
platform get mac
}}}
{{{
platform get power state
}}}
http://wayciak.wordpress.com/2008/10/04/getting-started-with-sol-on-sun-fire-v20z-and-v40z/
$$
q = q_{max } \left[ 1 - 0.2 \left( \frac{ p_{wf}} {\bar p} \right) - 0.8 \left( \frac{ p_{wf}} {\bar p} \right)^2 \right]
$$
or 
$$
p_{wf} = 0.125 \bar p \left[ \sqrt {81 -80 \left( \frac{ q} {q_{max}} \right) } -1 \right]
$$
+++
{{{
$$
q = q_{max } \left[ 1 - 0.2 \left( \frac{ p_{wf}} {\bar p} \right) - 0.8 \left( \frac{ p_{wf}} {\bar p} \right)^2 \right]
$$
}}}
{{{
$$
p_{wf} = 0.125 \bar p \left[ \sqrt {81 -80 \left( \frac{ q} {q_{max}} \right) -1} \right]
$$
}}}
===
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>>
{{borderlessL{
|option|Name|
|<<option txtUserName>>|username for signing your edits:|
|<<option txtBackupFolder>>|Name of folder to use for backups|
}}}
{{{
sudo apt-get install sun-java6-plugin
}}}
!!! References:
http://www.blog.highub.com/linux/install-java-on-ubuntu-firefox/
!!! Tester
http://www.javatester.org/version.html
!!!Google Desktop
dpkg
64-bit
Picasa
Dia
Gimp
InkScape
Scribus
Xsane
!Run command in history
{{{
!<line number of command>
}}}
!Ignore duplicates
{{{
export HISTCONTROL=ignoredups
}}}
!Erase all duplicates from history
{{{
export HISTCONTROL=erasedups
}}}
!Time stamp commands in history
{{{
export HISTTIMEFORMAT='%F %T '
}}}
! Ignore specific commands
{{{
export HISTIGNORE="pwd:ls:ls -ltr:mc:exit:"
}}}

Sources:
http://www.thegeekstuff.com/2008/08/15-examples-to-master-linux-command-line-history/
http://www.servepath.com/support/debian_ip_configuration.htm
IP: http://192.168.1.100:8080
admin/ispconfig

http://www.vmware.com/appliances/directory/va/324933

Shell admin User:	 administrator
Shell password:	 ispconfig
ISPconfig panel user:	 admin
ISPconfig panel password: ispconfig
Mysql Root user:	 root
Mysql Root password	 ispconfig

http://thesmartfield.com/images/tw-modeling/
http://thesmartfield.com/modeling/images/
/***
|Name|ImportTiddlersPlugin|
|Source|http://www.TiddlyTools.com/#ImportTiddlersPlugin|
|Documentation|http://www.TiddlyTools.com/#ImportTiddlersPluginInfo|
|Version|4.5.1|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides|config.macros.importTiddlers.handler|
|Description|interactive controls for import/export with filtering.|
Combine tiddlers from any two TiddlyWiki documents.  An interactive control panel lets you pick a source document and import selected tiddlers, with prompting for skip, rename, merge or replace actions when importing tiddlers that match existing titles.  Generates a detailed report of import 'history' in ImportedTiddlers.
!!!!!Documentation
<<<
see [[ImportTiddlersPluginInfo]] for details
<<<
!!!!!interactive control panel:
<<<
<<importTiddlers inline>>
{{clear{
^^(see also: [[ImportTiddlers]] shadow tiddler)^^}}}
<<<
!!!!!Revisions
<<<
2009.07.03 [4.5.1] fixups for TW252: doHttp() doesn't return XHR and convertUTF8ToUnicode() not needed for local I/O
2009.05.04 [4.5.0] import from CSV-formatted files
|please see [[ImportTiddlersPluginInfo]] for additional revision details|
2005.07.20 [1.0.0] Initial Release
<<<
!!!!!Code
***/
//{{{
version.extensions.ImportTiddlersPlugin= {major: 4, minor: 5, revision: 1, date: new Date(2009,7,3)};

// IE needs explicit global scoping for functions/vars called from browser events
window.onClickImportButton=onClickImportButton;
window.refreshImportList=refreshImportList;

// default cookie/option values
if (!config.options.chkImportReport) config.options.chkImportReport=true;

// default shadow definition
config.shadowTiddlers.ImportTiddlers='<<importTiddlers inline>>';

// use shadow tiddler content in backstage panel
if (config.tasks) config.tasks.importTask.content='<<tiddler ImportTiddlers>>' // TW2.2 or above
//}}}
//{{{
// backward-compatiblity for TW2.0.x and TW1.2.x
if (config.macros.importTiddlers==undefined) config.macros.importTiddlers={};
if (typeof merge=='undefined') {
	function merge(dst,src,preserveExisting) {
		for(var i in src) { if(!preserveExisting || dst[i] === undefined) dst[i] = src[i]; }
		return dst;
	}
}
if (config.browser.isGecko===undefined)
	config.browser.isGecko=(config.userAgent.indexOf('gecko')!=-1);
//}}}
//{{{
merge(config.macros.importTiddlers,{
	$: function(id) { return document.getElementById(id); }, // abbreviation
	label: 'import tiddlers',
	prompt: 'Copy tiddlers from another document',
	openMsg: 'Opening %0',
	openErrMsg: 'Could not open %0 - error=%1',
	readMsg: 'Read %0 bytes from %1',
	foundMsg: 'Found %0 tiddlers in %1',
	filterMsg: "Filtered %0 tiddlers matching '%1'",
	summaryMsg: '%0 tiddler%1 in the list',
	summaryFilteredMsg: '%0 of %1 tiddler%2 in the list',
	plural: 's are',
	single: ' is',
	countMsg: '%0 tiddlers selected for import',
	processedMsg: 'Processed %0 tiddlers',
	importedMsg: 'Imported %0 of %1 tiddlers from %2',
	loadText: 'please load a document...',
	closeText: 'close',
	doneText: 'done',
	startText: 'import',
	stopText: 'stop',
	local: true,		// default to import from local file
	src: '',		// path/filename or URL of document to import (retrieved from SiteUrl)
	proxy: '',		// URL for remote proxy script (retrieved from SiteProxy)
	useProxy: false,	// use specific proxy script in front of remote URL
	inbound: null,		// hash-indexed array of tiddlers from other document
	newTags: '',		// text of tags added to imported tiddlers
	addTags: true,		// add new tags to imported tiddlers
	listsize: 10,		// # of lines to show in imported tiddler list
	importTags: true,	// include tags from remote source document when importing a tiddler
	keepTags: true,		// retain existing tags when replacing a tiddler
	sync: false,		// add 'server' fields to imported tiddlers (for sync function)
	lastFilter: '',		// most recent filter (URL hash) applied
	lastAction: null,	// most recent collision button performed
	index: 0,		// current processing index in import list
	sort: ''		// sort order for imported tiddler listbox
});
//}}}
//{{{
// hijack core macro handler
if (config.macros.importTiddlers.coreHandler==undefined)
	config.macros.importTiddlers.coreHandler=config.macros.importTiddlers.handler;

config.macros.importTiddlers.handler = function(place,macroName,params,wikifier,paramString,tiddler) {
	if (!params[0] || params[0].toLowerCase()=='core') { // default to built in
		if (config.macros.importTiddlers.coreHandler)
			config.macros.importTiddlers.coreHandler.apply(this,arguments);
		else 
			createTiddlyButton(place,this.label,this.prompt,onClickImportMenu);
	} else if (params[0]=='link') { // show link to floating panel
		createTiddlyButton(place,params[1]||this.label,params[2]||this.prompt,onClickImportMenu);
	} else if (params[0]=='inline') {// show panel as INLINE tiddler content
		createImportPanel(place);
		this.$('importPanel').style.position='static';
		this.$('importPanel').style.display='block';
	} else if (config.macros.loadTiddlers)
		config.macros.loadTiddlers.handler(place,macroName,params); // any other params: loadtiddlers
}
//}}}
//{{{
// Handle link click to create/show/hide control panel
function onClickImportMenu(e) { var e=e||window.event;
	var parent=resolveTarget(e).parentNode;
	var panel=document.getElementById('importPanel');
	if (panel==undefined || panel.parentNode!=parent) panel=createImportPanel(parent);
	var isOpen=panel.style.display=='block';
	if(config.options.chkAnimate)
		anim.startAnimating(new Slider(panel,!isOpen,false,'none'));
	else
		panel.style.display=isOpen?'none':'block';
	e.cancelBubble = true; if (e.stopPropagation) e.stopPropagation(); return(false);
}
//}}}
//{{{
// Create control panel: HTML, CSS
function createImportPanel(place) {
	var cmi=config.macros.importTiddlers; // abbrev
	var panel=cmi.$('importPanel');
	if (panel) { panel.parentNode.removeChild(panel); }
	setStylesheet(cmi.css,'importTiddlers');
	panel=createTiddlyElement(place,'span','importPanel',null,null)
	panel.innerHTML=cmi.html;
	refreshImportList();
	var siteURL=store.getTiddlerText('SiteUrl'); if (!siteURL) siteURL='';
	cmi.$('importSourceURL').value=siteURL;
	cmi.src=siteURL;
	var siteProxy=store.getTiddlerText('SiteProxy'); if (!siteProxy) siteProxy='SiteProxy';
	cmi.$('importSiteProxy').value=siteProxy;
	cmi.proxy=siteProxy;
	if (config.browser.isGecko) { // FF3 FIXUP
		cmi.$('fileImportSource').style.display='none';
		cmi.$('importLocalPanelFix').style.display='block';
	}
	cmi.$('chkSync').checked=cmi.sync;
	cmi.$('chkImportTags').checked=cmi.importTags;
	cmi.$('chkKeepTags').checked=cmi.keepTags;
	cmi.$('chkAddTags').checked=cmi.addTags;
	cmi.$('txtNewTags').value=cmi.newTags;
	cmi.$('txtNewTags').style.display=cmi.addTags?'block':'none';
	cmi.$('chkSync').checked=cmi.sync;
	cmi.$('chkImportReport').checked=config.options.chkImportReport;
	return panel;
}
//}}}
//{{{
config.macros.importTiddlers.css = '\
#importPanel {\
	display: none; position:absolute; z-index:11; width:35em; right:105%; top:3em;\
	background-color: #eee; color:#000; font-size: 8pt; line-height:110%;\
	border:1px solid black; border-bottom-width: 3px; border-right-width: 3px;\
	padding: 0.5em; margin:0em; -moz-border-radius:1em;-webkit-border-radius:1em;\
}\
#importPanel a, #importPanel td a { color:#009; display:inline; margin:0px; padding:1px; }\
#importPanel table { width:100%; border:0px; padding:0px; margin:0px; font-size:8pt; line-height:110%; background:transparent; }\
#importPanel tr { border:0px;padding:0px;margin:0px; background:transparent; }\
#importPanel td { color:#000; border:0px;padding:0px;margin:0px; background:transparent; }\
#importPanel select { width:100%;margin:0px;font-size:8pt;line-height:110%;}\
#importPanel input  { width:98%;padding:0px;margin:0px;font-size:8pt;line-height:110%}\
#importPanel .box { border:1px solid #000; background-color:#eee; padding:3px 5px; margin-bottom:5px; -moz-border-radius:5px;-webkit-border-radius:5px;}\
#importPanel .topline { border-top:1px solid #999; padding-top:2px; margin-top:2px; }\
#importPanel .rad { width:auto; }\
#importPanel .chk { width:auto; margin:1px;border:0; }\
#importPanel .btn { width:auto; }\
#importPanel .btn1 { width:98%; }\
#importPanel .btn2 { width:48%; }\
#importPanel .btn3 { width:32%; }\
#importPanel .btn4 { width:23%; }\
#importPanel .btn5 { width:19%; }\
#importPanel .importButton { padding: 0em; margin: 0px; font-size:8pt; }\
#importPanel .importListButton { padding:0em 0.25em 0em 0.25em; color: #000000; display:inline }\
#backstagePanel #importPanel { left:10%; right:auto; }\
';
//}}}
//{{{
config.macros.importTiddlers.html = '\
<!-- source and report -->\
<table><tr><td align=left>\
	import from\
	<input type="radio" class="rad" name="importFrom" id="importFromFile" value="file" CHECKED\
		onclick="onClickImportButton(this,event)" title="show file controls"> local file\
	<input type="radio" class="rad" name="importFrom" id="importFromWeb"  value="http"\
		onclick="onClickImportButton(this,event)" title="show web controls"> web server\
</td><td align=right>\
	<input type=checkbox class="chk" id="chkImportReport"\
		onClick="config.options[\'chkImportReport\']=this.checked;"> create report\
</td></tr></table>\
\
<div class="box" id="importSourcePanel" style="margin:.5em">\
<div id="importLocalPanel" style="display:block;margin-bottom:2px;"><!-- import from local file  -->\
enter or browse for source path/filename<br>\
<input type="file" id="fileImportSource" size=57 style="width:100%"\
	onKeyUp="config.macros.importTiddlers.src=this.value"\
	onChange="config.macros.importTiddlers.src=this.value;document.getElementById(\'importLoad\').onclick()">\
<div id="importLocalPanelFix" style="display:none"><!-- FF3 FIXUP -->\
	<input type="text" id="fileImportSourceFix" style="width:90%"\
		title="Enter a path/file to import"\
		onKeyUp="config.macros.importTiddlers.src=this.value"\
		onChange="config.macros.importTiddlers.src=this.value;document.getElementById(\'importLoad\').onclick()">\
	<input type="button" id="fileImportSourceFixButton" style="width:7%" value="..."\
		title="Select a path/file to import"\
		onClick="var r=config.macros.importTiddlers.askForFilename(this); if (!r||!r.length) return;\
			document.getElementById(\'fileImportSourceFix\').value=r;\
			config.macros.importTiddlers.src=r;\
			document.getElementById(\'importLoad\').onclick()">\
</div><!--end FF3 FIXUP-->\
</div><!--end local-->\
<div id="importHTTPPanel" style="display:none;margin-bottom:2px;"><!-- import from http server -->\
<table><tr><td align=left>\
	enter a URL or <a href="javascript:;" id="importSelectFeed"\
		onclick="onClickImportButton(this,event)" title="select a pre-defined \'systemServer\' URL">\
		select a server</a><br>\
</td><td align=right>\
	<input type="checkbox" class="chk" id="importUsePassword"\
		onClick="config.macros.importTiddlers.usePassword=this.checked;\
			config.macros.importTiddlers.showPanel(\'importIDPWPanel\',this.checked,true);">password\
	<input type="checkbox" class="chk" id="importUseProxy"\
		onClick="config.macros.importTiddlers.useProxy=this.checked;\
			config.macros.importTiddlers.showPanel(\'importSiteProxy\',this.checked,true);">proxy\
</td></tr></table>\
<input type="text" id="importSiteProxy" style="display:none;margin-bottom:1px" onfocus="this.select()" value="SiteProxy"\
	onKeyUp="config.macros.importTiddlers.proxy=this.value"\
	onChange="config.macros.importTiddlers.proxy=this.value;">\
<input type="text" id="importSourceURL" onfocus="this.select()" value="SiteUrl"\
	onKeyUp="config.macros.importTiddlers.src=this.value"\
	onChange="config.macros.importTiddlers.src=this.value;">\
<div id="importIDPWPanel" style="text-align:center;margin-top:2px;display:none";>\
username: <input type=text id="txtImportID" style="width:25%" \
	onChange="config.options.txtRemoteUsername=this.value;">\
 password: <input type=password id="txtImportPW" style="width:25%" \
	onChange="config.options.txtRemotePassword=this.value;">\
</div><!--end idpw-->\
</div><!--end http-->\
</div><!--end source-->\
\
<div class="box" id="importSelectPanel" style="display:none;margin:.5em;">\
<table><tr><td align=left>\
select:\
<a href="javascript:;" id="importSelectAll"\
	onclick="onClickImportButton(this);return false;" title="SELECT all tiddlers">\
	all</a>\
&nbsp;<a href="javascript:;" id="importSelectNew"\
	onclick="onClickImportButton(this);return false;" title="SELECT tiddlers not already in destination document">\
	added</a>\
&nbsp;<a href="javascript:;" id="importSelectChanges"\
	onclick="onClickImportButton(this);return false;" title="SELECT tiddlers that have been updated in source document">\
	changes</a>\
&nbsp;<a href="javascript:;" id="importSelectDifferences"\
	onclick="onClickImportButton(this);return false;" title="SELECT tiddlers that have been added or are different from existing tiddlers">\
	differences</a>\
</td><td align=right>\
<a href="javascript:;" id="importListSmaller"\
	onclick="onClickImportButton(this);return false;" title="SHRINK list size">\
	&nbsp;&#150;&nbsp;</a>\
<a href="javascript:;" id="importListLarger"\
	onclick="onClickImportButton(this);return false;" title="GROW list size">\
	&nbsp;+&nbsp;</a>\
<a href="javascript:;" id="importListMaximize"\
	onclick="onClickImportButton(this);return false;" title="MAXIMIZE/RESTORE list size">\
	&nbsp;=&nbsp;</a>\
</td></tr></table>\
<select id="importList" size=8 multiple\
	onchange="setTimeout(\'refreshImportList(\'+this.selectedIndex+\')\',1)">\
	<!-- NOTE: delay refresh so list is updated AFTER onchange event is handled -->\
</select>\
<div style="text-align:center">\
	<a href="javascript:;"\
		title="click for help using filters..."\
		onclick="alert(\'A filter consists of one or more space-separated combinations of:\\n\\ntiddler titles\\ntag:[[tagvalue]]\\ntag:[[tag expression]] (requires MatchTagsPlugin)\\nstory:[[TiddlerName]]\\nsearch:[[searchtext]]\\n\\nUse a blank filter for all tiddlers.\')"\
	>filter</a>\
	<input type="text" id="importLastFilter" style="margin-bottom:1px; width:65%"\
		title="Enter a combination of one or more filters. Use a blank filter for all tiddlers."\
		onfocus="this.select()" value=""\
		onKeyUp="config.macros.importTiddlers.lastFilter=this.value"\
		onChange="config.macros.importTiddlers.lastFilter=this.value;">\
	<input type="button" id="importApplyFilter" style="width:20%" value="apply"\
		title="filter list of tiddlers to include only those that match certain criteria"\
		onclick="onClickImportButton(this)">\
	</div>\
</div><!--end select-->\
\
<div class="box" id="importOptionsPanel" style="text-align:center;margin:.5em;display:none;">\
	apply tags: <input type=checkbox class="chk" id="chkImportTags" checked\
		onClick="config.macros.importTiddlers.importTags=this.checked;">from source&nbsp;\
	<input type=checkbox class="chk" id="chkKeepTags" checked\
		onClick="config.macros.importTiddlers.keepTags=this.checked;">keep existing&nbsp;\
	<input type=checkbox class="chk" id="chkAddTags" \
		onClick="config.macros.importTiddlers.addTags=this.checked;\
			config.macros.importTiddlers.showPanel(\'txtNewTags\',this.checked,false);\
			if (this.checked) document.getElementById(\'txtNewTags\').focus();">add tags<br>\
	<input type=text id="txtNewTags" style="margin-top:4px;display:none;" size=15\ onfocus="this.select()" \
		title="enter tags to be added to imported tiddlers" \
		onKeyUp="config.macros.importTiddlers.newTags=this.value;\
		document.getElementById(\'chkAddTags\').checked=this.value.length>0;" autocomplete=off>\
	<nobr><input type=checkbox class="chk" id="chkSync" \
		onClick="config.macros.importTiddlers.sync=this.checked;">\
		link tiddlers to source document (for sync later)</nobr>\
</div><!--end options-->\
\
<div id="importButtonPanel" style="text-align:center">\
	<input type=button id="importLoad"	class="importButton btn3" value="open"\
		title="load listbox with tiddlers from source document"\
		onclick="onClickImportButton(this)">\
	<input type=button id="importOptions"	class="importButton btn3" value="options..."\
		title="set options for tags, sync, etc."\
		onclick="onClickImportButton(this)">\
	<input type=button id="importStart"	class="importButton btn3" value="import"\
		title="start/stop import of selected source tiddlers into current document"\
		onclick="onClickImportButton(this)">\
	<input type=button id="importClose"	class="importButton btn3" value="done"\
		title="clear listbox or hide control panel"\
		onclick="onClickImportButton(this)">\
</div>\
\
<div class="none" id="importCollisionPanel" style="display:none;margin:.5em 0 .5em .5em;">\
	<table><tr><td style="width:65%" align="left">\
		<table><tr><td align=left>\
			tiddler already exists:\
		</td><td align=right>\
			<input type=checkbox class="chk" id="importApplyToAll" \
			onclick="document.getElementById(\'importRename\').disabled=this.checked;"\
			checked>apply to all\
		</td></tr></table>\
		<input type=text id="importNewTitle" size=15 autocomplete=off">\
	</td><td style="width:34%" align="center">\
		<input type=button id="importMerge"\
			class="importButton" style="width:47%" value="merge"\
			title="append the incoming tiddler to the existing tiddler"\
			onclick="onClickImportButton(this)"><!--\
		--><input type=button id="importSkip"\
			class="importButton" style="width:47%" value="skip"\
			title="do not import this tiddler"\
			onclick="onClickImportButton(this)"><!--\
		--><br><input type=button id="importRename"\
			class="importButton" style="width:47%" value="rename"\
			title="rename the incoming tiddler"\
			onclick="onClickImportButton(this)"><!--\
		--><input type=button id="importReplace"\
			class="importButton" style="width:47%" value="replace"\
			title="discard the existing tiddler"\
			onclick="onClickImportButton(this)">\
	</td></tr></table>\
</div><!--end collision-->\
';
//}}}
//{{{
// process control interactions
function onClickImportButton(which,event) {
	var cmi=config.macros.importTiddlers; // abbreviation
	var list=cmi.$('importList'); if (!list) return;
	var thePanel=cmi.$('importPanel');
	var theCollisionPanel=cmi.$('importCollisionPanel');
	var theNewTitle=cmi.$('importNewTitle');
	var count=0;
	switch (which.id)
		{
		case 'importFromFile':	// show local panel
		case 'importFromWeb':	// show HTTP panel
			cmi.local=(which.id=='importFromFile');
			cmi.showPanel('importLocalPanel',cmi.local);
			cmi.showPanel('importHTTPPanel',!cmi.local);
			break;
		case 'importOptions':	// show/hide options panel
			cmi.showPanel('importOptionsPanel',cmi.$('importOptionsPanel').style.display=='none');
			break;
		case 'fileImportSource':
		case 'importLoad':		// load import source into hidden frame
			importReport();		// if an import was in progress, generate a report
			cmi.inbound=null;	// clear the imported tiddler buffer
			refreshImportList();	// reset/resize the listbox
			if (cmi.src=='') break;
			// Load document, read it's DOM and fill the list
			cmi.loadRemoteFile(cmi.src,cmi.filterTiddlerList);
			break;
		case 'importSelectFeed':	// select a pre-defined systemServer feed URL
			var p=Popup.create(which); if (!p) return;
			var tids=store.getTaggedTiddlers('systemServer');
			if (!tids.length)
				createTiddlyText(createTiddlyElement(p,'li'),'no pre-defined server feeds');
			for (var t=0; t<tids.length; t++) {
				var u=store.getTiddlerSlice(tids[t].title,'URL');
				var d=store.getTiddlerSlice(tids[t].title,'Description');
				if (!d||!d.length) d=store.getTiddlerSlice(tids[t].title,'description');
				if (!d||!d.length) d=u;
				createTiddlyButton(createTiddlyElement(p,'li'),tids[t].title,d,
					function(){
						var u=this.getAttribute('url');
						document.getElementById('importSourceURL').value=u;
						config.macros.importTiddlers.src=u;
						document.getElementById('importLoad').onclick();
					},
					null,null,null,{url:u});
			}
			Popup.show();
			event.cancelBubble = true;
			if (event.stopPropagation) event.stopPropagation();
			return(false);
			// create popup with feed list
			// onselect, insert feed URL into input field.
			break;
		case 'importSelectAll':		// select all tiddler list items (i.e., not headings)
			importReport();		// if an import was in progress, generate a report
			for (var t=0,count=0; t < list.options.length; t++) {
				if (list.options[t].value=='') continue;
				list.options[t].selected=true;
				count++;
			}
			clearMessage(); displayMessage(cmi.countMsg.format([count]));
			cmi.$('importStart').disabled=!count;
			break;
		case 'importSelectNew':		// select tiddlers not in current document
			importReport();		// if an import was in progress, generate a report
			for (var t=0,count=0; t < list.options.length; t++) {
				list.options[t].selected=false;
				if (list.options[t].value=='') continue;
				list.options[t].selected=!store.tiddlerExists(list.options[t].value);
				count+=list.options[t].selected?1:0;
			}
			clearMessage(); displayMessage(cmi.countMsg.format([count]));
			cmi.$('importStart').disabled=!count;
			break;
		case 'importSelectChanges':		// select tiddlers that are updated from existing tiddlers
			importReport();		// if an import was in progress, generate a report
			for (var t=0,count=0; t < list.options.length; t++) {
				list.options[t].selected=false;
				if (list.options[t].value==''||!store.tiddlerExists(list.options[t].value)) continue;
				for (var i=0; i<cmi.inbound.length; i++) // find matching inbound tiddler
					{ var inbound=cmi.inbound[i]; if (inbound.title==list.options[t].value) break; }
				list.options[t].selected=(inbound.modified-store.getTiddler(list.options[t].value).modified>0); // updated tiddler
				count+=list.options[t].selected?1:0;
			}
			clearMessage(); displayMessage(cmi.countMsg.format([count]));
			cmi.$('importStart').disabled=!count;
			break;
		case 'importSelectDifferences':		// select tiddlers that are new or different from existing tiddlers
			importReport();		// if an import was in progress, generate a report
			for (var t=0,count=0; t < list.options.length; t++) {
				list.options[t].selected=false;
				if (list.options[t].value=='') continue;
				if (!store.tiddlerExists(list.options[t].value)) { list.options[t].selected=true; count++; continue; }
				for (var i=0; i<cmi.inbound.length; i++) // find matching inbound tiddler
					{ var inbound=cmi.inbound[i]; if (inbound.title==list.options[t].value) break; }
				list.options[t].selected=(inbound.modified-store.getTiddler(list.options[t].value).modified!=0); // changed tiddler
				count+=list.options[t].selected?1:0;
			}
			clearMessage(); displayMessage(cmi.countMsg.format([count]));
			cmi.$('importStart').disabled=!count;
			break;
		case 'importApplyFilter':	// filter list to include only matching tiddlers
			importReport();		// if an import was in progress, generate a report
			clearMessage();
			if (!cmi.all) // no tiddlers loaded = '0 selected'
				{ displayMessage(cmi.countMsg.format([0])); return false; }
			var hash=cmi.$('importLastFilter').value;
			cmi.inbound=cmi.filterByHash('#'+hash,cmi.all);
			refreshImportList();	// reset/resize the listbox
			break;
		case 'importStart':		// initiate the import processing
			importReport();		// if an import was in progress, generate a report
			cmi.$('importApplyToAll').checked=false;
			cmi.$('importStart').value=cmi.stopText;
			if (cmi.index>0) cmi.index=-1; // stop processing
			else cmi.index=importTiddlers(0); // or begin processing
			importStopped();
			break;
		case 'importClose':		// unload imported tiddlers or hide the import control panel
			// if imported tiddlers not loaded, close the import control panel
			if (!cmi.inbound) { thePanel.style.display='none'; break; }
			importReport();		// if an import was in progress, generate a report
			cmi.inbound=null;	// clear the imported tiddler buffer
			refreshImportList();	// reset/resize the listbox
			break;
		case 'importSkip':	// don't import the tiddler
			cmi.lastAction=which;
			var theItem	= list.options[cmi.index];
			for (var j=0;j<cmi.inbound.length;j++)
			if (cmi.inbound[j].title==theItem.value) break;
			var theImported = cmi.inbound[j];
			theImported.status='skipped after asking';			// mark item as skipped
			theCollisionPanel.style.display='none';
			cmi.index=importTiddlers(cmi.index+1);	// resume with NEXT item
			importStopped();
			break;
		case 'importRename':		// change name of imported tiddler
			cmi.lastAction=which;
			var theItem		= list.options[cmi.index];
			for (var j=0;j<cmi.inbound.length;j++)
			if (cmi.inbound[j].title==theItem.value) break;
			var theImported		= cmi.inbound[j];
			theImported.status	= 'renamed from '+theImported.title;	// mark item as renamed
			theImported.set(theNewTitle.value,null,null,null,null);		// change the tiddler title
			theItem.value		= theNewTitle.value;			// change the listbox item text
			theItem.text		= theNewTitle.value;			// change the listbox item text
			theCollisionPanel.style.display='none';
			cmi.index=importTiddlers(cmi.index);	// resume with THIS item
			importStopped();
			break;
		case 'importMerge':	// join existing and imported tiddler content
			cmi.lastAction=which;
			var theItem	= list.options[cmi.index];
			for (var j=0;j<cmi.inbound.length;j++)
			if (cmi.inbound[j].title==theItem.value) break;
			var theImported	= cmi.inbound[j];
			var theExisting	= store.getTiddler(theItem.value);
			var theText	= theExisting.text+'\n----\n^^merged from: ';
			theText		+='[['+cmi.src+'#'+theItem.value+'|'+cmi.src+'#'+theItem.value+']]^^\n';
			theText		+='^^'+theImported.modified.toLocaleString()+' by '+theImported.modifier+'^^\n'+theImported.text;
			var theDate	= new Date();
			var theTags	= theExisting.getTags()+' '+theImported.getTags();
			theImported.set(null,theText,null,theDate,theTags);
			theImported.status   = 'merged with '+theExisting.title;	// mark item as merged
			theImported.status  += ' - '+theExisting.modified.formatString('MM/DD/YYYY 0hh:0mm:0ss');
			theImported.status  += ' by '+theExisting.modifier;
			theCollisionPanel.style.display='none';
			cmi.index=importTiddlers(cmi.index);	// resume with this item
			importStopped();
			break;
		case 'importReplace':		// substitute imported tiddler for existing tiddler
			cmi.lastAction=which;
			var theItem		  = list.options[cmi.index];
			for (var j=0;j<cmi.inbound.length;j++)
			if (cmi.inbound[j].title==theItem.value) break;
			var theImported     = cmi.inbound[j];
			var theExisting	  = store.getTiddler(theItem.value);
			theImported.status  = 'replaces '+theExisting.title;		// mark item for replace
			theImported.status += ' - '+theExisting.modified.formatString('MM/DD/YYYY 0hh:0mm:0ss');
			theImported.status += ' by '+theExisting.modifier;
			theCollisionPanel.style.display='none';
			cmi.index=importTiddlers(cmi.index);	// resume with THIS item
			importStopped();
			break;
		case 'importListSmaller':		// decrease current listbox size, minimum=5
			if (list.options.length==1) break;
			list.size-=(list.size>5)?1:0;
			cmi.listsize=list.size;
			break;
		case 'importListLarger':		// increase current listbox size, maximum=number of items in list
			if (list.options.length==1) break;
			list.size+=(list.size<list.options.length)?1:0;
			cmi.listsize=list.size;
			break;
		case 'importListMaximize':	// toggle listbox size between current and maximum
			if (list.options.length==1) break;
			list.size=(list.size==list.options.length)?cmi.listsize:list.options.length;
			break;
		}
}
//}}}
//{{{
config.macros.importTiddlers.showPanel=function(place,show,skipAnim) {
	if (typeof place=='string') var place=document.getElementById(place);
	if (!place||!place.style) return;
	if(!skipAnim && anim && config.options.chkAnimate) anim.startAnimating(new Slider(place,show,false,'none'));
	else place.style.display=show?'block':'none';
}
//}}}
//{{{
function refreshImportList(selectedIndex) {
	var cmi=config.macros.importTiddlers; // abbrev
	var list=cmi.$('importList'); if (!list) return;
	// if nothing to show, reset list content and size
	if (!cmi.inbound) {
		while (list.length > 0) { list.options[0] = null; }
		list.options[0]=new Option(cmi.loadText,'',false,false);
		list.size=cmi.listsize;
		cmi.$('importLoad').disabled=false;
		cmi.$('importLoad').style.display='inline';
		cmi.$('importStart').disabled=true;
		cmi.$('importOptions').disabled=true;
		cmi.$('importOptions').style.display='none';
		cmi.$('fileImportSource').disabled=false;
		cmi.$('importFromFile').disabled=false;
		cmi.$('importFromWeb').disabled=false;
		cmi.$('importStart').value=cmi.startText;
		cmi.$('importClose').value=cmi.doneText;
		cmi.$('importSelectPanel').style.display='none';
		cmi.$('importOptionsPanel').style.display='none';
		return;
	}
	// there are inbound tiddlers loaded...
	cmi.$('importLoad').disabled=true;
	cmi.$('importLoad').style.display='none';
	cmi.$('importOptions').style.display='inline';
	cmi.$('importOptions').disabled=false;
	cmi.$('fileImportSource').disabled=true;
	cmi.$('importFromFile').disabled=true;
	cmi.$('importFromWeb').disabled=true;
	cmi.$('importClose').value=cmi.closeText;
	if (cmi.$('importSelectPanel').style.display=='none')
		cmi.showPanel('importSelectPanel',true);

	// get the sort order
	if (!selectedIndex)   selectedIndex=0;
	if (selectedIndex==0) cmi.sort='title';		// heading
	if (selectedIndex==1) cmi.sort='title';
	if (selectedIndex==2) cmi.sort='modified';
	if (selectedIndex==3) cmi.sort='tags';
	if (selectedIndex>3) {
		// display selected tiddler count
		for (var t=0,count=0; t < list.options.length; t++) {
			if (!list.options[t].selected) continue;
			if (list.options[t].value!='')
				count+=1;
			else { // if heading is selected, deselect it, and then select and count all in section
				list.options[t].selected=false;
				for ( t++; t<list.options.length && list.options[t].value!=''; t++) {
					list.options[t].selected=true;
					count++;
				}
			}
		}
		clearMessage(); displayMessage(cmi.countMsg.format([count]));
	}
	cmi.$('importStart').disabled=!count;
	if (selectedIndex>3) return; // no refresh needed

	// get the alphasorted list of tiddlers
	var tiddlers=cmi.inbound;
	tiddlers.sort(function (a,b) {if(a['title'] == b['title']) return(0); else return (a['title'] < b['title']) ? -1 : +1; });
	// clear current list contents
	while (list.length > 0) { list.options[0] = null; }
	// add heading and control items to list
	var i=0;
	var indent=String.fromCharCode(160)+String.fromCharCode(160);
	if (cmi.all.length==tiddlers.length)
		var summary=cmi.summaryMsg.format([tiddlers.length,(tiddlers.length!=1)?cmi.plural:cmi.single]);
	else
		var summary=cmi.summaryFilteredMsg.format([tiddlers.length,cmi.all.length,(cmi.all.length!=1)?cmi.plural:cmi.single]);
	list.options[i++]=new Option(summary,'',false,false);
	list.options[i++]=new Option(((cmi.sort=='title'   )?'>':indent)+' [by title]','',false,false);
	list.options[i++]=new Option(((cmi.sort=='modified')?'>':indent)+' [by date]','',false,false);
	list.options[i++]=new Option(((cmi.sort=='tags')?'>':indent)+' [by tags]','',false,false);
	// output the tiddler list
	switch(cmi.sort) {
		case 'title':
			for(var t = 0; t < tiddlers.length; t++)
				list.options[i++] = new Option(tiddlers[t].title,tiddlers[t].title,false,false);
			break;
		case 'modified':
			// sort descending for newest date first
			tiddlers.sort(function (a,b) {if(a['modified'] == b['modified']) return(0); else return (a['modified'] > b['modified']) ? -1 : +1; });
			var lastSection = '';
			for(var t = 0; t < tiddlers.length; t++) {
				var tiddler = tiddlers[t];
				var theSection = tiddler.modified.toLocaleDateString();
				if (theSection != lastSection) {
					list.options[i++] = new Option(theSection,'',false,false);
					lastSection = theSection;
				}
				list.options[i++] = new Option(indent+indent+tiddler.title,tiddler.title,false,false);
			}
			break;
		case 'tags':
			var theTitles = {}; // all tiddler titles, hash indexed by tag value
			var theTags = new Array();
			for(var t=0; t<tiddlers.length; t++) {
				var title=tiddlers[t].title;
				var tags=tiddlers[t].tags;
				if (!tags || !tags.length) {
					if (theTitles['untagged']==undefined) { theTags.push('untagged'); theTitles['untagged']=new Array(); }
					theTitles['untagged'].push(title);
				}
				else for(var s=0; s<tags.length; s++) {
					if (theTitles[tags[s]]==undefined) { theTags.push(tags[s]); theTitles[tags[s]]=new Array(); }
					theTitles[tags[s]].push(title);
				}
			}
			theTags.sort();
			for(var tagindex=0; tagindex<theTags.length; tagindex++) {
				var theTag=theTags[tagindex];
				list.options[i++]=new Option(theTag,'',false,false);
				for(var t=0; t<theTitles[theTag].length; t++)
					list.options[i++]=new Option(indent+indent+theTitles[theTag][t],theTitles[theTag][t],false,false);
			}
			break;
		}
	list.selectedIndex=selectedIndex;		  // select current control item
	if (list.size<cmi.listsize) list.size=cmi.listsize;
	if (list.size>list.options.length) list.size=list.options.length;
}
//}}}
//{{{
// re-entrant processing for handling import with interactive collision prompting
function importTiddlers(startIndex) {
	var cmi=config.macros.importTiddlers; // abbrev
	if (!cmi.inbound) return -1;
	var list=cmi.$('importList'); if (!list) return;
	var t;
	// if starting new import, reset import status flags
	if (startIndex==0)
		for (var t=0;t<cmi.inbound.length;t++)
			cmi.inbound[t].status='';
	for (var i=startIndex; i<list.options.length; i++) {
		// if list item is not selected or is a heading (i.e., has no value), skip it
		if ((!list.options[i].selected) || ((t=list.options[i].value)==''))
			continue;
		for (var j=0;j<cmi.inbound.length;j++)
			if (cmi.inbound[j].title==t) break;
		var inbound = cmi.inbound[j];
		var theExisting = store.getTiddler(inbound.title);
		// avoid redundant import for tiddlers that are listed multiple times (when 'by tags')
		if (inbound.status=='added')
			continue;
		// don't import the 'ImportedTiddlers' history from the other document...
		if (inbound.title=='ImportedTiddlers')
			continue;
		// if tiddler exists and import not marked for replace or merge, stop importing
		if (theExisting && (inbound.status.substr(0,7)!='replace') && (inbound.status.substr(0,5)!='merge'))
			return i;
		// assemble tags (remote + existing + added)
		var newTags = '';
		if (cmi.importTags)
			newTags+=inbound.getTags()	// import remote tags
		if (cmi.keepTags && theExisting)
			newTags+=' '+theExisting.getTags(); // keep existing tags
		if (cmi.addTags && cmi.newTags.trim().length)
			newTags+=' '+cmi.newTags; // add new tags
		inbound.set(null,null,null,null,newTags.trim());
		// set the status to 'added' (if not already set by the 'ask the user' UI)
		inbound.status=(inbound.status=='')?'added':inbound.status;
		// set sync fields
		if (cmi.sync) {
			if (!inbound.fields) inbound.fields={}; // for TW2.1.x backward-compatibility
			inbound.fields['server.page.revision']=inbound.modified.convertToYYYYMMDDHHMM();
			inbound.fields['server.type']='file';
			inbound.fields['server.host']=(cmi.local?'file://':'')+cmi.src;
		}
		// do the import!
		store.suspendNotifications();
		store.saveTiddler(inbound.title, inbound.title, inbound.text, inbound.modifier, inbound.modified, inbound.tags, inbound.fields, true, inbound.created);
                store.fetchTiddler(inbound.title).created = inbound.created; // force creation date to imported value (needed for TW2.1.x and earlier)
		store.resumeNotifications();
		}
	return(-1);	// signals that we really finished the entire list
}
function importStopped() {
	var cmi=config.macros.importTiddlers; // abbrev
	var list=cmi.$('importList'); if (!list) return;
	var theNewTitle=cmi.$('importNewTitle');
	if (cmi.index==-1){ 
		cmi.$('importStart').value=cmi.startText;
		importReport();	// import finished... generate the report
	} else {
		// import collision...
		// show the collision panel and set the title edit field
		cmi.$('importStart').value=cmi.stopText;
		cmi.showPanel('importCollisionPanel',true);
		theNewTitle.value=list.options[cmi.index].value;
		if (cmi.$('importApplyToAll').checked && cmi.lastAction && cmi.lastAction.id!='importRename')
			onClickImportButton(cmi.lastAction);
	}
}
//}}}
//{{{
function importReport() {
	var cmi=config.macros.importTiddlers; // abbrev
	if (!cmi.inbound) return;
	// if import was not completed, the collision panel will still be open... close it now.
	var panel=cmi.$('importCollisionPanel'); if (panel) panel.style.display='none';
	// get the alphasorted list of tiddlers
	var tiddlers = cmi.inbound;
	// gather the statistics
	var count=0; var total=0;
	for (var t=0; t<tiddlers.length; t++) {
		if (!tiddlers[t].status || !tiddlers[t].status.trim().length) continue;
		if (tiddlers[t].status.substr(0,7)!='skipped') count++;
		total++;
	}
	// generate a report
	if (total) displayMessage(cmi.processedMsg.format([total]));
	if (count && config.options.chkImportReport) {
		// get/create the report tiddler
		var theReport = store.getTiddler('ImportedTiddlers');
		if (!theReport) { theReport=new Tiddler(); theReport.title='ImportedTiddlers'; theReport.text=''; }
		// format the report content
		var now = new Date();
		var newText = 'On '+now.toLocaleString()+', '+config.options.txtUserName
		newText +=' imported '+count+' tiddler'+(count==1?'':'s')+' from\n[['+cmi.src+'|'+cmi.src+']]:\n';
		if (cmi.addTags && cmi.newTags.trim().length)
			newText += 'imported tiddlers were tagged with: "'+cmi.newTags+'"\n';
		newText += '<<<\n';
		for (var t=0; t<tiddlers.length; t++) if (tiddlers[t].status)
			newText += '#[['+tiddlers[t].title+']] - '+tiddlers[t].status+'\n';
		newText += '<<<\n';
		// update the ImportedTiddlers content and show the tiddler
		theReport.text	 = newText+((theReport.text!='')?'\n----\n':'')+theReport.text;
		theReport.modifier = config.options.txtUserName;
		theReport.modified = new Date();
                store.saveTiddler(theReport.title, theReport.title, theReport.text, theReport.modifier, theReport.modified, theReport.tags, theReport.fields);
		story.displayTiddler(null,theReport.title,1,null,null,false);
		story.refreshTiddler(theReport.title,1,true);
	}
	// reset status flags
	for (var t=0; t<cmi.inbound.length; t++) cmi.inbound[t].status='';
	// mark document as dirty and let display update as needed
	if (count) { store.setDirty(true); store.notifyAll(); }
	// always show final message when tiddlers were actually loaded
	if (count) displayMessage(cmi.importedMsg.format([count,tiddlers.length,cmi.src.replace(/%20/g,' ')]));
}
//}}}
//{{{
// // File and XMLHttpRequest I/O
config.macros.importTiddlers.askForFilename=function(here) {
	var msg=here.title; // use tooltip as dialog box message
	var path=getLocalPath(document.location.href);
	var slashpos=path.lastIndexOf('/'); if (slashpos==-1) slashpos=path.lastIndexOf('\\'); 
	if (slashpos!=-1) path = path.substr(0,slashpos+1); // remove filename from path, leave the trailing slash
	var file='';
	var result='';
	if(window.Components) { // moz
		try {
			netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');

			var nsIFilePicker = window.Components.interfaces.nsIFilePicker;
			var picker = Components.classes['@mozilla.org/filepicker;1'].createInstance(nsIFilePicker);
			picker.init(window, msg, nsIFilePicker.modeOpen);
			var thispath = Components.classes['@mozilla.org/file/local;1'].createInstance(Components.interfaces.nsILocalFile);
			thispath.initWithPath(path);
			picker.displayDirectory=thispath;
			picker.defaultExtension='html';
			picker.defaultString=file;
			picker.appendFilters(nsIFilePicker.filterAll|nsIFilePicker.filterText|nsIFilePicker.filterHTML);
			if (picker.show()!=nsIFilePicker.returnCancel) var result=picker.file.persistentDescriptor;
		}
		catch(e) { alert('error during local file access: '+e.toString()) }
	}
	else { // IE
		try { // XPSP2 IE only
			var s = new ActiveXObject('UserAccounts.CommonDialog');
			s.Filter='All files|*.*|Text files|*.txt|HTML files|*.htm;*.html|';
			s.FilterIndex=3; // default to HTML files;
			s.InitialDir=path;
			s.FileName=file;
			if (s.showOpen()) var result=s.FileName;
		}
		catch(e) {  // fallback
			var result=prompt(msg,path+file);
		}
	}
	return result;
}

config.macros.importTiddlers.loadRemoteFile = function(src,callback) {
	if (src==undefined || !src.length) return null; // filename is required
	var original=src; // URL as specified
	var hashpos=src.indexOf('#'); if (hashpos!=-1) src=src.substr(0,hashpos); // URL with #... suffix removed (needed for IE)
	clearMessage();
	displayMessage(this.openMsg.format([src.replace(/%20/g,' ')]));
	if (src.substr(0,5)!='http:' && src.substr(0,5)!='file:') { // if not a URL, read from local filesystem
		var txt=loadFile(src);
		if (!txt) { // file didn't load, might be relative path.. try fixup
			var pathPrefix=document.location.href;  // get current document path and trim off filename
			var slashpos=pathPrefix.lastIndexOf('/'); if (slashpos==-1) slashpos=pathPrefix.lastIndexOf('\\'); 
			if (slashpos!=-1 && slashpos!=pathPrefix.length-1) pathPrefix=pathPrefix.substr(0,slashpos+1);
			src=pathPrefix+src;
			if (pathPrefix.substr(0,5)!='http:') src=getLocalPath(src);
			var txt=loadFile(src);
		}
		if (!txt) { // file still didn't load, report error
			displayMessage(config.macros.importTiddlers.openErrMsg.format([src.replace(/%20/g,' '),'(filesystem error)']));
		} else {
			displayMessage(config.macros.importTiddlers.readMsg.format([txt.length,src.replace(/%20/g,' ')]));
			if (version.major+version.minor*.1+version.revision*.01<2.52) txt=convertUTF8ToUnicode(txt);
			if (callback) callback(true,original,txt,src,null);
		}
	} else {
		doHttp('GET',src,null,null,config.options.txtRemoteUsername,config.options.txtRemotePassword,callback,original,null);
	}
}

config.macros.importTiddlers.readTiddlersFromHTML=function(html)
{
	var remoteStore=new TiddlyWiki();
	remoteStore.importTiddlyWiki(html);
	return remoteStore.getTiddlers('title');	
}

config.macros.importTiddlers.readTiddlersFromCSV=function(CSV) {
	var remoteStore=new TiddlyWiki();
	var lines=CSV.split('\n'); var names=lines[0].split(','); CSV=lines.join('\n')
	// ENCODE commas and newlines within quoted values
	var comma='!~comma~!'; var commaRE=new RegExp(comma,'g');
	var newline='!~newline~!'; var newlineRE=new RegExp(newline,'g');
	CSV=CSV.replace(/\x22((?:[^\x22]|\x22\x22)*?)\x22/g,
		function(x){ return x.substr(1,x.length-2).replace(/\,/g,comma).replace(/\n/g,newline); });
	// PARSE lines
	var lines=CSV.split('\n');
	for (var i=1; i<lines.length; i++) { if (!lines[i].length) continue;
		var values=lines[i].split(',');
		// DECODE commas, newlines and doubled-quotes within quoted values
		for (var v=0; v<values.length; v++)
			values[v]=values[v].replace(commaRE,',').replace(newlineRE,'\n').replace(/\x22\x22/g,'\x22');
		// EXTRACT tiddler values
		var title=''; var text=''; var tags=[]; var fields={};
		var created=null; var when=new Date(); var who=config.options.txtUserName;
		for (var v=0; v<values.length; v++) { var val=values[v];
			if (names[v]) switch(names[v].toLowerCase()) {
				case 'title':	title=val.replace(/\[\]\|/g,'_'); break;
				case 'created': created=new Date(val); break;
				case 'modified':when=new Date(val); break;
				case 'modifier':who=val; break;
				case 'text':	text=val; break;
				case 'tags':	tags=val.readBracketedList(); break;
				default:	fields[names[v].toLowerCase()]=val; break;
			}
		}
		// CREATE tiddler in temporary store
		if (title.length) remoteStore.saveTiddler(title,title,text,who,when,tags,fields,true,created||when);
	}
	return remoteStore.getTiddlers('title');	
}

config.macros.importTiddlers.filterTiddlerList=function(success,params,txt,src,xhr) {
	var cmi=config.macros.importTiddlers; // abbreviation
	var src=src.replace(/%20/g,' ');
	if (!success) { displayMessage(cmi.openErrMsg.format([src,xhr.status])); return; }
	cmi.all=cmi.readTiddlersFromHTML(txt);
	if (!cmi.all||!cmi.all.length) cmi.all=cmi.readTiddlersFromCSV(txt)
	var count=cmi.all?cmi.all.length:0;
	var querypos=src.lastIndexOf('?'); if (querypos!=-1) src=src.substr(0,querypos);
	displayMessage(cmi.foundMsg.format([count,src]));
	cmi.inbound=cmi.filterByHash(params,cmi.all); // use full URL including hash (if any)
	cmi.$('importLastFilter').value=cmi.lastFilter;
	window.refreshImportList(0);
}

config.macros.importTiddlers.filterByHash=function(src,tiddlers)
{
	var hashpos=src.lastIndexOf('#'); if (hashpos==-1) return tiddlers;
	var hash=src.substr(hashpos+1); if (!hash.length) return tiddlers;
	var tids=[];
	var params=hash.parseParams('anon',null,true,false,false);
	for (var p=1; p<params.length; p++) {
		switch (params[p].name) {
			case 'anon':
			case 'open':
				tids.pushUnique(params[p].value);
				break;
			case 'tag':
				if (store.getMatchingTiddlers) { // for boolean expressions - see MatchTagsPlugin
					var r=store.getMatchingTiddlers(params[p].value,null,tiddlers);
					for (var t=0; t<r.length; t++) tids.pushUnique(r[t].title);
				} else for (var t=0; t<tiddlers.length; t++)
					if (tiddlers[t].isTagged(params[p].value))
						tids.pushUnique(tiddlers[t].title);
				break;
			case 'story':
				for (var t=0; t<tiddlers.length; t++)
					if (tiddlers[t].title==params[p].value) {
						tiddlers[t].changed();
						for (var s=0; s<tiddlers[t].links.length; s++)
							tids.pushUnique(tiddlers[t].links[s]);
						break;
					}
				break;
			case 'search':
				for (var t=0; t<tiddlers.length; t++)
					if (tiddlers[t].text.indexOf(params[p].value)!=-1)
						tids.pushUnique(tiddlers[t].title);
				break;
		}
	}
	var matches=[];
	for (var t=0; t<tiddlers.length; t++)
		if (tids.contains(tiddlers[t].title))
			matches.push(tiddlers[t]);
	displayMessage(config.macros.importTiddlers.filterMsg.format([matches.length,hash]));
	config.macros.importTiddlers.lastFilter=hash;
	return matches;
}
//}}}

Get status of virtual processor:
{{{
psrinfo -v
}}}
Memory size:
{{{
prtconf -v |grep Memory
}}}
/***
''InlineJavascriptPlugin''
^^version: 1.6.0
author: Eric Shulman - ELS Design Studios
source: http://www.tiddlytools.com/
license: [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]^^
see source link (above) for usage.
!!!!!Code
***/
/*{{{*/
version.extensions.inlineJavascript= {major: 1, minor: 6, revision: 0, date: new Date(2007,2,19)};

config.formatters.push( {
	name: "inlineJavascript",
	match: "\\<script",
	lookahead: "\\<script(?: src=\\\"((?:.|\\n)*?)\\\")?(?: label=\\\"((?:.|\\n)*?)\\\")?(?: title=\\\"((?:.|\\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) {
			if (lookaheadMatch[1]) { // load a script library
				// make script tag, set src, add to body to execute, then remove for cleanup
				var script = document.createElement("script"); script.src = lookaheadMatch[1];
				document.body.appendChild(script); document.body.removeChild(script);
			}
			if (lookaheadMatch[5]) { // there is script code
				if (lookaheadMatch[4]) // show inline script code in tiddler output
					wikify("{{{\n"+lookaheadMatch[0]+"\n}}}\n",w.output);
				if (lookaheadMatch[2]) { // create a link to an 'onclick' script
					// add a link, define click handler, save code in link (pass 'place'), set link attributes
					var link=createTiddlyElement(w.output,"a",null,"tiddlyLinkExisting",lookaheadMatch[2]);
					link.onclick=function(){try{return(eval(this.code))}catch(e){alert(e.description?e.description:e.toString())}}
					link.code="function _out(place){"+lookaheadMatch[5]+"\n};_out(this);"
					link.setAttribute("title",lookaheadMatch[3]?lookaheadMatch[3]:"");
					link.setAttribute("href","javascript:;");
					link.style.cursor="pointer";
				}
				else { // run inline script code
					var code="function _out(place){"+lookaheadMatch[5]+"\n};_out(w.output);"
					code=code.replace(/document.write\(/gi,'place.innerHTML+=(');
					try { var out = eval(code); } 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;
		}
	}
} )
/*}}}*/
{{{
yum groupinstall "GNOME Desktop Environment"
}}}
!Install java6 JDK
{{{
sudo apt-get install sun-java6-jdk
}}}

!!!extra packages installed as dependencies
{{{
  gsfonts-x11 java-common odbcinst1debian1 sun-java6-bin sun-java6-jre
  unixodbc
}}}
!List what JVM we have in the machine:
{{{
$ update-java-alternatives -l
}}}

!Download Java: jdk or jre

!Remove other Firefox Kava plugins
{{{
sudo apt-get remove icedtea-gcjwebplugin
}}}

!Install Java in /opt/java

!Update Java in system
{{{
sudo update-alternatives --install "/usr/bin/java" "java" "/opt/java/jdk1.6.0_12/bin/java" 1

sudo update-alternatives --set java /opt/java/jdk1.6.0_12/bin/java
}}}
Another sintax:
{{{
sudo update-alternatives --install /usr/bin/java java /opt/jre1.6.0_12/bin/java 1
}}}

!Install default JVM
{{{
java -version
sudo update-java-alternatives -s <JRE Version>
}}}

!Update javac
{{{
sudo update-alternatives --install "/usr/bin/javac" "javac" "/opt/java/jdk1.6.0_12/bin/javac" 1

sudo update-alternatives --set javac /opt/java/jdk1.6.0_12/bin/javac

javac -version
}}}



!Install Java plugin for Firefox
{{{
sudo ln -s /opt/java/jdk1.6.0_12/jre/lib/amd64/libnpjp2.so /usr/lib/mozilla/plugins/
}}}

References:
http://www.trausch.us/2009/02/15/installing-sun-jre-6u12-on-ubuntu-intrepid-810/
!Download jython
!Install Jython
{{{
$ sudo java -jar jython_installer-2.2.1.jar
}}}
I installed it under /opt
!Create cache folder
{{{
$ sudo mkdir -p /opt/jython2.2.1/cachedir/packages
}}}
!Give read/write access to ../cachedir
{{{
$ sudo chmod -r 777  /opt/jython2.2.1/cachedir
}}}

<<tiddler ShowSection with: [[Start AFS client]]>>
* copy the compressed file [[sharity.3.6.linux-i386.tar.gz]] to the host
* unpack the file
* change to unpacked directory [[sharity.3.6.linux-i386]]
* execute the installation file
{{{
$ sudo ./setup
}}}
* have at hand the domain and server names
* respond to the questions and accept the defaults

{{{
wget http://prdownloads.sourceforge.net/webadmin/webmin-1.500-1.noarch.rpm  
}}}

{{{
sudo rpm -U webmin-1.500-1.noarch.rpm
}}}
{{{
cd /opt
}}}
Copy the file from your file server:
{{{
scp super@192.168.1.60:/data/shared/files/linux/webmin/webmin-1.390-1.noarch.rpm .
}}}
Install:
{{{
rpm -ivh webmin-1.390-1.noarch.rpm
}}}
This is the output:
{{{
warning: webmin-1.390-1.noarch.rpm: V3 DSA signature: NOKEY, key ID 11f63c51
Preparing...                ########################################### [100%]
Operating system is Redhat Enterprise Linux
   1:webmin                 ########################################### [100%]
Webmin install complete. You can now login to http://s40vz.local:10000/
as root with your root password.
}}}
[[Preparation before installing OpenAFS]]
[[Install Kerberos]]
[[Create and mount the AFS volume]]
[[Create a AFS cell]]
[[view full Document]]

In Ubuntu:
{{{
sudo aptitude install upslug2
}}}

Example:
If Linux desktop is connected to the network by eth1 port:
{{{
$ sudo upslug2 -d eth1 -i di-nslu2.bin
}}}
{{{
wget ftp://starlane.gotdns.org/php-5.2.9/ClarkConnect5.0/*.rpm
sudo yum --nogpgcheck install php-*
sudo /sbin/service httpd restart
php -v
}}}

!! Reference:
http://starlane.gotdns.org/node/24
! Verify that these services are running
* Web Server

! Create flexshare phpsysinfo
! Copy app files to
{{{
 /var/flexshare/shares/phpsysinfo
}}
!! Configure the application
Copy the config.php.new file and rename it to config.php.
!! Run the application from Flexshares
<insert picture>
or use the link:
http://system.mydomain.lan/flexshare/phpsysinfo/

{{{
pkgadd -d http://www.blastwave.org/pkg_get.pkg
}}}
Add wget:
{{{
/opt/csw/bin/pkg-get -i wget
}}}
Modify the path to find pkg-get:
{{{
PATH=/opt/csw/bin:/usr/sbin:/usr/bin:/usr/dt/bin:/usr/openwin/bin:/usr/ccs/bin
}}}
Also can [[modify the path in the user profile]].

Now, we are ready to install any package. Example: Install Midnight Commander:
{{{
pkg-get -i mc
}}}

!Support for /lib/lsb/init-functions:
!!Download
Use the ClarkConnect/CentOS libraries.
!!Install
{{{
sudo apt-get install redhat-lsb
}}}
!!Output
{{{
Reading Package Lists...
Building Dependency Tree...
The following extra packages will be installed:
  at binutils gettext m4 patch
The following NEW packages will be installed:
  at binutils gettext m4 patch redhat-lsb
0 upgraded, 6 newly installed, 0 removed and 63 not upgraded.
Need to get 4491kB of archives.
}}}
{{{
apt-get install ssh
}}}
{{{
sudo apt-get install openssh-server
}}}
http://pigtail.net/LRP/printsrv/cygwin-sshd.html
!Install telnet-server
{{{
$ sudo apt-get install telnet-server
}}}
!Enable the telnet-server
Edit the file /etc/xinetd.d/telnet and change Enable to "no".
{{{
# default: on
# description: The telnet server serves telnet sessions; it uses \
#	unencrypted username/password pairs for authentication.
service telnet
{
	flags		= REUSE
	socket_type	= stream        
	wait		= no
	user		= root
	server		= /usr/sbin/in.telnetd
	log_on_failure	+= USERID
	disable		= no
}
}}}
!Restart xinet
{{{
$ sudo /etc/init.d/xinetd restart
}}}
!Test
From a remote terminal type:
{{{
telnet 192.168.1.84	#where 192.168.1.84 is the host we just installed telnet-server
}}}
{{{
mc
gParted
webmin
Firefox 3
}}}
http://www.thoughtpolice.co.uk/vmware/howto/centos-5-vmware-tools-install.html
http://www.thewebmasterscafe.net/webhosting/vmware-tools-on-linux.html

{{{
aptitude install autoconf automake binutils cpp gcc linux-headers-$(uname -r) make psmisc
}}}
Change to the folder where webmin has been unpacked:
{{{
[root@yourhost /tmp]# cd webmin-1.490
}}}
Start installation indicating the preferred install directory:
{{{
[root@yourhost /tmp/webmin-1.490]# ./setup.sh /opt/webmin
}}}
Respond to the installation questions and run webmin from a browser.
{{{
superuser@zeus:~$ sudo apt-get install kde-core
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages were automatically installed and are no longer required:
  libgpod1
Use 'apt-get autoremove' to remove them.
The following extra packages will be installed:
  arts kappfinder kate kcontrol kdebase kdebase-bin kdebase-data kdebase-kio-plugins
  kdelibs kdelibs-data kdelibs4c2a kdepasswd kdeprint kdesktop kdm kfind khelpcenter
  kicker klipper kmenuedit konqueror konqueror-nsplugins kpager kpersonalizer ksmserver
  ksplash ksysguard ksysguardd ktip kwin libavahi-compat-libdnssd1 libkonq4 poster psutils
Suggested packages:
  kate-plugins kde-i18n kdebase-doc-html mtools fam efax hylafax-client mgetty-fax htdig
  kicker-applets konq-plugins ksvg libgcj7-awt libjessie-java gv
Recommended packages:
  kregexpeditor
The following NEW packages will be installed:
  arts kappfinder kde-core kdebase kdelibs kdepasswd kdeprint khelpcenter klipper
  kmenuedit konqueror-nsplugins kpager kpersonalizer ksmserver ksplash ksysguard
  ksysguardd ktip libavahi-compat-libdnssd1 poster psutils
The following packages will be upgraded:
  kate kcontrol kdebase-bin kdebase-data kdebase-kio-plugins kdelibs-data kdelibs4c2a
  kdesktop kdm kfind kicker konqueror kwin libkonq4
14 upgraded, 21 newly installed, 0 to remove and 172 not upgraded.
Need to get 47.8MB of archives.
}}}
Install first the samba file system or sharity3 will not install.

{{{
$ sudo apt-get install smbfs
}}}
{{{
sudo nano /etc/cups/cupsd.conf
sudo /etc/init.d/cups restart
}}}
![[Prepare the system for print server installation]]
!Install rrdtool dependencies
!!Download libart files
!!Install libart files
{{{
apt-get install libart_lgpl-devel
}}}
{{{
	Reading Package Lists...
	Building Dependency Tree...
	The following extra packages will be installed:
	  libart_lgpl
	The following NEW packages will be installed:
	  libart_lgpl libart_lgpl-devel
}}}

!rrdtool
!!Download rrdtool files
wget http://dag.wieers.com/rpm/packages/rrdtool/perl-rrdtool-1.2.23-1.el4.rf.i386.rpm
wget http://dag.wieers.com/rpm/packages/rrdtool/rrdtool-1.2.23-1.el4.rf.i386.rpm
wget http://dag.wieers.com/rpm/packages/rrdtool/rrdtool-devel-1.2.23-1.el4.rf.i386.rpm

!!Install rrdtool files
{{{
rpm -ivh rrdtool-devel-1.2.23-1.el4.rf.i386.rpm rrdtool-1.2.23-1.el4.rf.i386.rpm perl-rrdtool-1.2.23-1.el4.rf.i386.rpm
}}}
{{{
sudo ln -s /usr/share/munin/plugins/uptime /etc/munin/plugins/
}}}
Run the following from the console:
{{{
cd /tmp
wget http://prdownloads.sourceforge.net/webadmin/webmin-1.441-1.noarch.rpm
rpm -i webmin-1.441-1.noarch.rpm
}}}
file:\\\\\Colorado\ebooks\sun\10v2040z.pdf

http://www.cisco.com/univercd/cc/td/doc/product/svbu/sfvs/3pig311/10v2040z.pdf
/***
|''Name:''|IntelliTaggerPlugin|
|''Version:''|1.0.2 (2007-07-25)|
|''Type:''|plugin|
|''Source:''|http://tiddlywiki.abego-software.de/#IntelliTaggerPlugin|
|''Author:''|Udo Borkowski (ub [at] abego-software [dot] de)|
|''Documentation:''|[[IntelliTaggerPlugin Documentation]]|
|''~SourceCode:''|[[IntelliTaggerPlugin SourceCode]]|
|''Licence:''|[[BSD open source license (abego Software)]]|
|''~CoreVersion:''|2.0.8|
|''Browser:''|Firefox 1.5.0.2 or better|
***/
/***
!Version History
* 1.0.2 (2007-07-25): 
** Feature: "Return" key may be used to accept first tag suggestion (beside "Alt-1")
** Bugfix: Keyboard shortcuts (Alt+3 etc.) shifted
* 1.0.1 (2007-05-18): Improvement: Speedup when using TiddlyWikis with many tags
* 1.0.0 (2006-04-26): Initial release

***/
// /%
if(!version.extensions.IntelliTaggerPlugin){if(!window.abego){window.abego={};}if(!abego.internal){abego.internal={};}abego.alertAndThrow=function(s){alert(s);throw s;};if(version.major<2){abego.alertAndThrow("Use TiddlyWiki 2.0.8 or better to run the IntelliTagger Plugin.");}version.extensions.IntelliTaggerPlugin={major:1,minor:0,revision:2,date:new Date(2007,6,25),type:"plugin",source:"http://tiddlywiki.abego-software.de/#IntelliTaggerPlugin",documentation:"[[IntelliTaggerPlugin Documentation]]",sourcecode:"[[IntelliTaggerPlugin SourceCode]]",author:"Udo Borkowski (ub [at] abego-software [dot] de)",licence:"[[BSD open source license (abego Software)]]",tiddlywiki:"Version 2.0.8 or better",browser:"Firefox 1.5.0.2 or better"};abego.createEllipsis=function(_2){var e=createTiddlyElement(_2,"span");e.innerHTML="&hellip;";};abego.isPopupOpen=function(_4){return _4&&_4.parentNode==document.body;};abego.openAsPopup=function(_5){if(_5.parentNode!=document.body){document.body.appendChild(_5);}};abego.closePopup=function(_6){if(abego.isPopupOpen(_6)){document.body.removeChild(_6);}};abego.getWindowRect=function(){return {left:findScrollX(),top:findScrollY(),height:findWindowHeight(),width:findWindowWidth()};};abego.moveElement=function(_7,_8,_9){_7.style.left=_8+"px";_7.style.top=_9+"px";};abego.centerOnWindow=function(_a){if(_a.style.position!="absolute"){throw "abego.centerOnWindow: element must have absolute position";}var _b=abego.getWindowRect();abego.moveElement(_a,_b.left+(_b.width-_a.offsetWidth)/2,_b.top+(_b.height-_a.offsetHeight)/2);};abego.isDescendantOrSelf=function(_c,e){while(e){if(_c==e){return true;}e=e.parentNode;}return false;};abego.toSet=function(_e){var _f={};for(var i=0;i<_e.length;i++){_f[_e[i]]=true;}return _f;};abego.filterStrings=function(_11,_12,_13){var _14=[];for(var i=0;i<_11.length&&(_13===undefined||_14.length<_13);i++){var s=_11[i];if(s.match(_12)){_14.push(s);}}return _14;};abego.arraysAreEqual=function(a,b){if(!a){return !b;}if(!b){return false;}var n=a.length;if(n!=b.length){return false;}for(var i=0;i<n;i++){if(a[i]!=b[i]){return false;}}return true;};abego.moveBelowAndClip=function(_1b,_1c){if(!_1c){return;}var _1d=findPosX(_1c);var _1e=findPosY(_1c);var _1f=_1c.offsetHeight;var _20=_1d;var _21=_1e+_1f;var _22=findWindowWidth();if(_22<_1b.offsetWidth){_1b.style.width=(_22-100)+"px";}var _23=_1b.offsetWidth;if(_20+_23>_22){_20=_22-_23-30;}if(_20<0){_20=0;}_1b.style.left=_20+"px";_1b.style.top=_21+"px";_1b.style.display="block";};abego.compareStrings=function(a,b){return (a==b)?0:(a<b)?-1:1;};abego.sortIgnoreCase=function(arr){var _27=[];var n=arr.length;for(var i=0;i<n;i++){var s=arr[i];_27.push([s.toString().toLowerCase(),s]);}_27.sort(function(a,b){return (a[0]==b[0])?0:(a[0]<b[0])?-1:1;});for(i=0;i<n;i++){arr[i]=_27[i][1];}};abego.getTiddlerField=function(_2d,_2e,_2f){var _30=document.getElementById(_2d.idPrefix+_2e);var e=null;if(_30!=null){var _32=_30.getElementsByTagName("*");for(var t=0;t<_32.length;t++){var c=_32[t];if(c.tagName.toLowerCase()=="input"||c.tagName.toLowerCase()=="textarea"){if(!e){e=c;}if(c.getAttribute("edit")==_2f){e=c;}}}}return e;};abego.setRange=function(_35,_36,end){if(_35.setSelectionRange){_35.setSelectionRange(_36,end);var max=0+_35.scrollHeight;var len=_35.textLength;var top=max*_36/len,bot=max*end/len;_35.scrollTop=Math.min(top,(bot+top-_35.clientHeight)/2);}else{if(_35.createTextRange!=undefined){var _3b=_35.createTextRange();_3b.collapse();_3b.moveEnd("character",end);_3b.moveStart("character",_36);_3b.select();}else{_35.select();}}};abego.internal.TagManager=function(){var _3c=null;var _3d=function(){if(_3c){return;}_3c={};store.forEachTiddler(function(_3e,_3f){for(var i=0;i<_3f.tags.length;i++){var tag=_3f.tags[i];var _42=_3c[tag];if(!_42){_42=_3c[tag]={count:0,tiddlers:{}};}_42.tiddlers[_3f.title]=true;_42.count+=1;}});};var _43=TiddlyWiki.prototype.saveTiddler;TiddlyWiki.prototype.saveTiddler=function(_44,_45,_46,_47,_48,_49){var _4a=this.fetchTiddler(_44);var _4b=_4a?_4a.tags:[];var _4c=(typeof _49=="string")?_49.readBracketedList():_49;_43.apply(this,arguments);if(!abego.arraysAreEqual(_4b,_4c)){abego.internal.getTagManager().reset();}};var _4d=TiddlyWiki.prototype.removeTiddler;TiddlyWiki.prototype.removeTiddler=function(_4e){var _4f=this.fetchTiddler(_4e);var _50=_4f&&_4f.tags.length>0;_4d.apply(this,arguments);if(_50){abego.internal.getTagManager().reset();}};this.reset=function(){_3c=null;};this.getTiddlersWithTag=function(tag){_3d();var _52=_3c[tag];return _52?_52.tiddlers:null;};this.getAllTags=function(_53){_3d();var _54=[];for(var i in _3c){_54.push(i);}for(i=0;_53&&i<_53.length;i++){_54.pushUnique(_53[i],true);}abego.sortIgnoreCase(_54);return _54;};this.getTagInfos=function(){_3d();var _56=[];for(var _57 in _3c){_56.push([_57,_3c[_57]]);}return _56;};var _58=function(a,b){var a1=a[1];var b1=b[1];var d=b[1].count-a[1].count;return d!=0?d:abego.compareStrings(a[0].toLowerCase(),b[0].toLowerCase());};this.getSortedTagInfos=function(){_3d();var _5e=this.getTagInfos();_5e.sort(_58);return _5e;};this.getPartnerRankedTags=function(_5f){var _60={};for(var i=0;i<_5f.length;i++){var _62=this.getTiddlersWithTag(_5f[i]);for(var _63 in _62){var _64=store.getTiddler(_63);if(!(_64 instanceof Tiddler)){continue;}for(var j=0;j<_64.tags.length;j++){var tag=_64.tags[j];var c=_60[tag];_60[tag]=c?c+1:1;}}}var _68=abego.toSet(_5f);var _69=[];for(var n in _60){if(!_68[n]){_69.push(n);}}_69.sort(function(a,b){var d=_60[b]-_60[a];return d!=0?d:abego.compareStrings(a.toLowerCase(),b.toLowerCase());});return _69;};};abego.internal.getTagManager=function(){if(!abego.internal.gTagManager){abego.internal.gTagManager=new abego.internal.TagManager();}return abego.internal.gTagManager;};(function(){var _6e=2;var _6f=1;var _70=30;var _71;var _72;var _73;var _74;var _75;var _76;if(!abego.IntelliTagger){abego.IntelliTagger={};}var _77=function(){return _72;};var _78=function(tag){return _75[tag];};var _7a=function(s){var i=s.lastIndexOf(" ");return (i>=0)?s.substr(0,i):"";};var _7d=function(_7e){var s=_7e.value;var len=s.length;return (len>0&&s[len-1]!=" ");};var _81=function(_82){var s=_82.value;var len=s.length;if(len>0&&s[len-1]!=" "){_82.value+=" ";}};var _85=function(tag,_87,_88){if(_7d(_87)){_87.value=_7a(_87.value);}story.setTiddlerTag(_88.title,tag,0);_81(_87);abego.IntelliTagger.assistTagging(_87,_88);};var _89=function(n){if(_76&&_76.length>n){return _76[n];}return (_74&&_74.length>n)?_74[n]:null;};var _8b=function(n,_8d,_8e){var _8f=_89(n);if(_8f){_85(_8f,_8d,_8e);}};var _90=function(_91){var pos=_91.value.lastIndexOf(" ");var _93=(pos>=0)?_91.value.substr(++pos,_91.value.length):_91.value;return new RegExp(_93.escapeRegExp(),"i");};var _94=function(_95,_96){var _97=0;for(var i=0;i<_95.length;i++){if(_96[_95[i]]){_97++;}}return _97;};var _99=function(_9a,_9b,_9c){var _9d=1;var c=_9a[_9b];for(var i=_9b+1;i<_9a.length;i++){if(_9a[i][1].count==c){if(_9a[i][0].match(_9c)){_9d++;}}else{break;}}return _9d;};var _a0=function(_a1,_a2){var _a3=abego.internal.getTagManager().getSortedTagInfos();var _a4=[];var _a5=0;for(var i=0;i<_a3.length;i++){var c=_a3[i][1].count;if(c!=_a5){if(_a2&&(_a4.length+_99(_a3,i,_a1)>_a2)){break;}_a5=c;}if(c==1){break;}var s=_a3[i][0];if(s.match(_a1)){_a4.push(s);}}return _a4;};var _a9=function(_aa,_ab){return abego.filterStrings(abego.internal.getTagManager().getAllTags(_ab),_aa);};var _ac=function(){if(!_71){return;}var _ad=store.getTiddlerText("IntelliTaggerMainTemplate");if(!_ad){_ad="<b>Tiddler IntelliTaggerMainTemplate not found</b>";}_71.innerHTML=_ad;applyHtmlMacros(_71,null);refreshElements(_71,null);};var _ae=function(e){if(!e){var e=window.event;}var tag=this.getAttribute("tag");if(_73){_73.call(this,tag,e);}return false;};var _b2=function(_b3){createTiddlyElement(_b3,"span",null,"tagSeparator"," | ");};var _b4=function(_b5,_b6,_b7,_b8,_b9){if(!_b6){return;}var _ba=_b8?abego.toSet(_b8):{};var n=_b6.length;var c=0;for(var i=0;i<n;i++){var tag=_b6[i];if(_ba[tag]){continue;}if(c>0){_b2(_b5);}if(_b9&&c>=_b9){abego.createEllipsis(_b5);break;}c++;var _bf="";var _c0=_b5;if(_b7<10){_c0=createTiddlyElement(_b5,"span",null,"numberedSuggestion");_b7++;var key=_b7<10?""+(_b7):"0";createTiddlyElement(_c0,"span",null,"suggestionNumber",key+") ");var _c2=_b7==1?"Return or ":"";_bf=" (Shortcut: %1Alt-%0)".format([key,_c2]);}var _c3=config.views.wikified.tag.tooltip.format([tag]);var _c4=(_78(tag)?"Remove tag '%0'%1":"Add tag '%0'%1").format([tag,_bf]);var _c5="%0; Shift-Click: %1".format([_c4,_c3]);var btn=createTiddlyButton(_c0,tag,_c5,_ae,_78(tag)?"currentTag":null);btn.setAttribute("tag",tag);}};var _c7=function(){if(_71){window.scrollTo(0,ensureVisible(_71));}if(_77()){window.scrollTo(0,ensureVisible(_77()));}};var _c8=function(e){if(!e){var e=window.event;}if(!_71){return;}var _cb=resolveTarget(e);if(_cb==_77()){return;}if(abego.isDescendantOrSelf(_71,_cb)){return;}abego.IntelliTagger.close();};addEvent(document,"click",_c8);var _cc=Story.prototype.gatherSaveFields;Story.prototype.gatherSaveFields=function(e,_ce){_cc.apply(this,arguments);var _cf=_ce.tags;if(_cf){_ce.tags=_cf.trim();}};var _d0=function(_d1){story.focusTiddler(_d1,"tags");var _d2=abego.getTiddlerField(story,_d1,"tags");if(_d2){var len=_d2.value.length;abego.setRange(_d2,len,len);window.scrollTo(0,ensureVisible(_d2));}};var _d4=config.macros.edit.handler;config.macros.edit.handler=function(_d5,_d6,_d7,_d8,_d9,_da){_d4.apply(this,arguments);var _db=_d7[0];if((_da instanceof Tiddler)&&_db=="tags"){var _dc=_d5.lastChild;_dc.onfocus=function(e){abego.IntelliTagger.assistTagging(_dc,_da);setTimeout(function(){_d0(_da.title);},100);};_dc.onkeyup=function(e){if(!e){var e=window.event;}if(e.altKey&&!e.ctrlKey&&!e.metaKey&&(e.keyCode>=48&&e.keyCode<=57)){_8b(e.keyCode==48?9:e.keyCode-49,_dc,_da);}else{if(e.ctrlKey&&e.keyCode==32){_8b(0,_dc,_da);}}if(!e.ctrlKey&&(e.keyCode==13||e.keyCode==10)){_8b(0,_dc,_da);}setTimeout(function(){abego.IntelliTagger.assistTagging(_dc,_da);},100);return false;};_81(_dc);}};var _e0=function(e){if(!e){var e=window.event;}var _e3=resolveTarget(e);var _e4=_e3.getAttribute("tiddler");if(_e4){story.displayTiddler(_e3,_e4,"IntelliTaggerEditTagsTemplate",false);_d0(_e4);}return false;};var _e5=config.macros.tags.handler;config.macros.tags.handler=function(_e6,_e7,_e8,_e9,_ea,_eb){_e5.apply(this,arguments);abego.IntelliTagger.createEditTagsButton(_eb,createTiddlyElement(_e6.lastChild,"li"));};var _ec=function(){if(_71&&_72&&!abego.isDescendantOrSelf(document,_72)){abego.IntelliTagger.close();}};setInterval(_ec,100);abego.IntelliTagger.displayTagSuggestions=function(_ed,_ee,_ef,_f0,_f1){_74=_ed;_75=abego.toSet(_ee);_76=_ef;_72=_f0;_73=_f1;if(!_71){_71=createTiddlyElement(document.body,"div",null,"intelliTaggerSuggestions");_71.style.position="absolute";}_ac();abego.openAsPopup(_71);if(_77()){var w=_77().offsetWidth;if(_71.offsetWidth<w){_71.style.width=(w-2*(_6e+_6f))+"px";}abego.moveBelowAndClip(_71,_77());}else{abego.centerOnWindow(_71);}_c7();};abego.IntelliTagger.assistTagging=function(_f3,_f4){var _f5=_90(_f3);var s=_f3.value;if(_7d(_f3)){s=_7a(s);}var _f7=s.readBracketedList();var _f8=_f7.length>0?abego.filterStrings(abego.internal.getTagManager().getPartnerRankedTags(_f7),_f5,_70):_a0(_f5,_70);abego.IntelliTagger.displayTagSuggestions(_a9(_f5,_f7),_f7,_f8,_f3,function(tag,e){if(e.shiftKey){onClickTag.call(this,e);}else{_85(tag,_f3,_f4);}});};abego.IntelliTagger.close=function(){abego.closePopup(_71);_71=null;return false;};abego.IntelliTagger.createEditTagsButton=function(_fb,_fc,_fd,_fe,_ff,id,_101){if(!_fd){_fd="[edit]";}if(!_fe){_fe="Edit the tags";}if(!_ff){_ff="editTags";}var _102=createTiddlyButton(_fc,_fd,_fe,_e0,_ff,id,_101);_102.setAttribute("tiddler",(_fb instanceof Tiddler)?_fb.title:String(_fb));return _102;};abego.IntelliTagger.getSuggestionTagsMaxCount=function(){return 100;};config.macros.intelliTagger={label:"intelliTagger",handler:function(_103,_104,_105,_106,_107,_108){var _109=_107.parseParams("list",null,true);var _10a=_109[0]["action"];for(var i=0;_10a&&i<_10a.length;i++){var _10c=_10a[i];var _10d=config.macros.intelliTagger.subhandlers[_10c];if(!_10d){abego.alertAndThrow("Unsupported action '%0'".format([_10c]));}_10d(_103,_104,_105,_106,_107,_108);}},subhandlers:{showTags:function(_10e,_10f,_110,_111,_112,_113){_b4(_10e,_74,_76?_76.length:0,_76,abego.IntelliTagger.getSuggestionTagsMaxCount());},showFavorites:function(_114,_115,_116,_117,_118,_119){_b4(_114,_76,0);},closeButton:function(_11a,_11b,_11c,_11d,_11e,_11f){var _120=createTiddlyButton(_11a,"close","Close the suggestions",abego.IntelliTagger.close);},version:function(_121){var t="IntelliTagger %0.%1.%2".format([version.extensions.IntelliTaggerPlugin.major,version.extensions.IntelliTaggerPlugin.minor,version.extensions.IntelliTaggerPlugin.revision]);var e=createTiddlyElement(_121,"a");e.setAttribute("href","http://tiddlywiki.abego-software.de/#IntelliTaggerPlugin");e.innerHTML="<font color=\"black\" face=\"Arial, Helvetica, sans-serif\">"+t+"<font>";},copyright:function(_124){var e=createTiddlyElement(_124,"a");e.setAttribute("href","http://tiddlywiki.abego-software.de");e.innerHTML="<font color=\"black\" face=\"Arial, Helvetica, sans-serif\">&copy; 2006-2007 <b><font color=\"red\">abego</font></b> Software<font>";}}};})();config.shadowTiddlers["IntelliTaggerStyleSheet"]="/***\n"+"!~IntelliTagger Stylesheet\n"+"***/\n"+"/*{{{*/\n"+".intelliTaggerSuggestions {\n"+"\tposition: absolute;\n"+"\twidth: 600px;\n"+"\n"+"\tpadding: 2px;\n"+"\tlist-style: none;\n"+"\tmargin: 0;\n"+"\n"+"\tbackground: #eeeeee;\n"+"\tborder: 1px solid DarkGray;\n"+"}\n"+"\n"+".intelliTaggerSuggestions .currentTag {\n"+"\tfont-weight: bold;\n"+"}\n"+"\n"+".intelliTaggerSuggestions .suggestionNumber {\n"+"\tcolor: #808080;\n"+"}\n"+"\n"+".intelliTaggerSuggestions .numberedSuggestion{\n"+"\twhite-space: nowrap;\n"+"}\n"+"\n"+".intelliTaggerSuggestions .intelliTaggerFooter {\n"+"\tmargin-top: 4px;\n"+"\tborder-top-width: thin;\n"+"\tborder-top-style: solid;\n"+"\tborder-top-color: #999999;\n"+"}\n"+".intelliTaggerSuggestions .favorites {\n"+"\tborder-bottom-width: thin;\n"+"\tborder-bottom-style: solid;\n"+"\tborder-bottom-color: #999999;\n"+"\tpadding-bottom: 2px;\n"+"}\n"+"\n"+".intelliTaggerSuggestions .normalTags {\n"+"\tpadding-top: 2px;\n"+"}\n"+"\n"+".intelliTaggerSuggestions .intelliTaggerFooter .button {\n"+"\tfont-size: 10px;\n"+"\n"+"\tpadding-left: 0.3em;\n"+"\tpadding-right: 0.3em;\n"+"}\n"+"\n"+"/*}}}*/\n";config.shadowTiddlers["IntelliTaggerMainTemplate"]="<!--\n"+"{{{\n"+"-->\n"+"<div class=\"favorites\" macro=\"intelliTagger action: showFavorites\"></div>\n"+"<div class=\"normalTags\" macro=\"intelliTagger action: showTags\"></div>\n"+"<!-- The Footer (with the Navigation) ============================================ -->\n"+"<table class=\"intelliTaggerFooter\" border=\"0\" width=\"100%\" cellspacing=\"0\" cellpadding=\"0\"><tbody>\n"+" <tr>\n"+"\t<td align=\"left\">\n"+"\t\t<span macro=\"intelliTagger action: closeButton\"></span>\n"+"\t</td>\n"+"\t<td align=\"right\">\n"+"\t\t<span macro=\"intelliTagger action: version\"></span>, <span macro=\"intelliTagger action: copyright \"></span>\n"+"\t</td>\n"+" </tr>\n"+"</tbody></table>\n"+"<!--\n"+"}}}\n"+"-->\n";config.shadowTiddlers["IntelliTaggerEditTagsTemplate"]="<!--\n"+"{{{\n"+"-->\n"+"<div class='toolbar' macro='toolbar +saveTiddler -cancelTiddler'></div>\n"+"<div class='title' macro='view title'></div>\n"+"<div class='tagged' macro='tags'></div>\n"+"<div class='viewer' macro='view text wikified'></div>\n"+"<div class='toolbar' macro='toolbar +saveTiddler -cancelTiddler'></div>\n"+"<div class='editor' macro='edit tags'></div><div class='editorFooter'><span macro='message views.editor.tagPrompt'></span><span macro='tagChooser'></span></div>\n"+"<!--\n"+"}}}\n"+"-->\n";config.shadowTiddlers["BSD open source license (abego Software)"]="See [[Licence|http://tiddlywiki.abego-software.de/#%5B%5BBSD%20open%20source%20license%5D%5D]].";config.shadowTiddlers["IntelliTaggerPlugin Documentation"]="[[Documentation on abego Software website|http://tiddlywiki.abego-software.de/doc/IntelliTagger.pdf]].";config.shadowTiddlers["IntelliTaggerPlugin SourceCode"]="[[Plugin source code on abego Software website|http://tiddlywiki.abego-software.de/archive/IntelliTaggerPlugin/Plugin-IntelliTagger-src.1.0.2.js]]\n";(function(){var _126=restart;restart=function(){setStylesheet(store.getTiddlerText("IntelliTaggerStyleSheet"),"IntelliTaggerStyleSheet");_126.apply(this,arguments);};})();}
// %/
/***
!~IntelliTagger Stylesheet
***/
/*{{{*/
.intelliTaggerSuggestions {
	position: absolute;
	width: 600px;

	padding: 2px;
	list-style: none;
	margin: 0;

	background: #eeeeee;
	border: 1px solid DarkGray;
}

.intelliTaggerSuggestions .currentTag {
	font-weight: bold;
}

.intelliTaggerSuggestions .suggestionNumber {
	color: #808080;
}

.intelliTaggerSuggestions .numberedSuggestion{
	white-space: nowrap;
}

.intelliTaggerSuggestions .intelliTaggerFooter {
	margin-top: 4px;
	border-top-width: thin;
	border-top-style: solid;
	border-top-color: #999999;
}
.intelliTaggerSuggestions .favorites {
	border-bottom-width: thin;
	border-bottom-style: solid;
	border-bottom-color: #999999;
	padding-bottom: 2px;
}

.intelliTaggerSuggestions .normalTags {
	padding-top: 2px;
}

.intelliTaggerSuggestions .intelliTaggerFooter .button {
	font-size: 10px;

	padding-left: 0.3em;
	padding-right: 0.3em;
}

/*}}}*/
webhttrack browse
!!! Filezilla
:: install with apt-get

Google Chrome
Google Earth
Google Gadget
Thunderbird
Pudgin
Remote Desktop Viewer
SeaMonkey
Shiretoko
Shredder 3 Mail
[[Skype]]
Swiftfox
Terminal Server Client
webhttrack - websote copier
Seamonkey
:: install with apt-get.
Skype
:: install with dpkg.
Opera
:: install with dpkg.
Konqueror
:: install with apt-get.
!! OpenOffice 9.1
{{{
wget -q http://news.softpedia.com/images/extra/LINUX/small/key -O- | sudo apt-key add -
}}}
!! Cairo Dock
{{{
wget -q http://repository.cairo-dock.org/cairo-dock.gpg -O- | sudo apt-key add -
}}}
----Installation:-----------------------------------------------------

Version 2.x 
	Uncompress the three .desktop files in Root_Actions_2.x to ~/.kde/share/apps/konqueror/servicemenus (This will enable the menu for individual users, if you wish to enable the menu for all users, copy the files to /usr/share/apps/konqueror/servicemenus instead).

	Uncompress the rootactions-servicemenu.pl script in Root_Actions_2.x to a directory in your $PATH. /usr/local/bin or /usr/bin are two valid options.

	Make the script executable.

link: http://www.kde-apps.org/content/show.php/Root+Actions+Servicemenu?content=48411
F12

|LDAP Server settings|!before			|!after			|
||slapd				|/usr/libexec/slapd|
||/etc/ldap/slapd.conf		|/etc/openldap/slapd.conf|
||/etc/openldap/schema		|/etc/openldap/schema|


Linux LDAP NSS library config file: /etc/ldap.conf

{{{
gksudo "gnome-open %u"
}}}

Source: http://ubuntuforums.org/showthread.php?t=24008
/***
| Name|LessBackupsPlugin|
| Description|Intelligently limit the number of backup files you create|
| Version|3.0 ($Rev: 2320 $)|
| Date|$Date: 2007-06-18 22:37:46 +1000 (Mon, 18 Jun 2007) $|
| Source|http://mptw.tiddlyspot.com/#LessBackupsPlugin|
| Author|Simon Baird|
| Email|simon.baird@gmail.com|
| License|http://mptw.tiddlyspot.com/#TheBSDLicense|
!!!Description
You end up with just backup one per year, per month, per weekday, per hour, minute, and second.  So total number won't exceed about 200 or so. Can be reduced by commenting out the seconds/minutes/hours line from modes array

!!!Notes
Works in IE and Firefox only.  Algorithm by Daniel Baird. IE code by by Saq Imtiaz.
!!!Code
***/
//{{{
window.getSpecialBackupPath = function(backupPath) {

	var MINS  = 60 * 1000;
	var HOURS = 60 * MINS;
	var DAYS  = 24 * HOURS;

	// comment out the ones you don't want
	var modes = [
		["YYYY",  365*DAYS], // one per year for ever
		["MMM",   31*DAYS],  // one per month
		["ddd",   7*DAYS],   // one per weekday
		//["d0DD",  1*DAYS],   // one per day of month
		["h0hh",  24*HOURS], // one per hour
		["m0mm",  1*HOURS],  // one per minute
		["s0ss",  1*MINS],   // one per second
		["latest",0]         // always keep last version. (leave this).
	];

	var now = new Date();

	for (var i=0;i<modes.length;i++) {

		// the filename we will try
		var specialBackupPath = backupPath.replace(/(\.)([0-9]+\.[0-9]+)(\.html)$/,
						'$1'+now.formatString(modes[i][0]).toLowerCase()+'$3')

		// open the file

		try {
			if (config.browser.isIE) {
				var fsobject = new ActiveXObject("Scripting.FileSystemObject")
				var fileExists  = fsobject.FileExists(specialBackupPath);
				if (fileExists) {
					var fileObject = fsobject.GetFile(specialBackupPath);
					var modDate = new Date(fileObject.DateLastModified).valueOf();
				}
			}
			else {
				netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
				var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
				file.initWithPath(specialBackupPath);
				var fileExists = file.exists();
				if (fileExists) {
					var modDate = file.lastModifiedTime;
				}
			}
		}
		catch(e) {
			// give up
			return backupPath;
		}

		// expiry is used to tell if it's an 'old' one. Eg, if the month is June and there is a
		// June file on disk that's more than an month old then it must be stale so overwrite
		// note that "latest" should be always because the expiration period is zero (see above)
		var expiry = new Date(modDate + modes[i][1]);
		if (!fileExists || now > expiry)
			return specialBackupPath;
	}
}

// hijack the core function
window.getBackupPath_orig = window.getBackupPath;
window.getBackupPath = function(localPath) {
	return getSpecialBackupPath(getBackupPath_orig(localPath));
}

//}}}
{{{
libx11-dev libxext-dev libxpm-dev libxt-dev x-dev zlib1g-dev libjpeg62-dev libqt3-mt-dev kdelibs4-dev libkjsembed-dev libkonq4-dev
}}}

{{{
sudo apt-get install debhelper
}}}
{{{
user@A3800:~$ ln -s /CIFS/entire_network/ra/colo/users/lnx-home/* ~/
}}}
Link to tiddlers, such as [[Horizontal Rule]].
{{{
Link to tiddlers, such as [[Horizontal Rule]].
}}}
Link to [[external sites|http://www.osmosoft.com]] or [[ordinary tiddlers|Horizontal Rule]] with ordinary words,
without the messiness of the full URL appearing.
{{{
Link to [[external sites|http://www.osmosoft.com]] or [[ordinary tiddlers|Horizontal Rule]] with ordinary words,
without the messiness of the full URL appearing.
}}}
Or just type out http://www.osmosoft.com and it will be automatically linkified.


http://www.pixelbeat.org/cmdline.html
http://www.esxguide.com/esx/content/view/30/30/
Linux uses a very different naming convention than Windows for hard drives. The hard drives are named after their physical connection.

Sample hard drive names are as follows:
{{{
/dev/hda 	master device on primary IDE channel
/dev/hdb    	slave device on primary IDE channel
/dev/hdc 	master device on secondary IDE channel
/dev/hdd 	slave device on secondary IDE channel
/dev/sda 	first SCSI hard drive
/dev/sdb 	second SCSI hard drive
}}}

Source: http://martybugs.net/linux/hddtemp.cgi


192.168.1.135

sudo apt-get install mc nfs-common 

//''Result:''//
<<forEachTiddler 
 where
 'tiddler.tags.length == 0'
>>
See also [[ForEachTiddlerExamples]].
 (for example what files are provided by the installed samba package)
Syntax: dpkg -L {package-name}
Example:
{{{
dpkg -L samba
}}}
/***
|''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);
}
//}}}
{{{
/var/public/smbmount/DISK1
/var/public/smbmount/DISK2
}}}
/backup/install/scripts
{{{
C:\Program Files (x86)\VMware\VMware License Server\Licenses\vmware.lic
}}}
{{{
		  <Check> Use LDAP
Local LDAP Svr	  <Check> Use Local LDAP Server
* Server: 	  127.0.0.1
Base DN:	  dc=openfiler, dc=nas
Root Bind DN 	  cn=root, dc=openfiler, dc=nas
Root bind pwd	  password
SMB LDAP config	  <Check> cn=root, dc=openfiler, dc=nas
User pwd policy   <Check> Allow user to change password

}}}
http://www.kremalicious.com/2008/06/ubuntu-as-mac-file-server-and-time-machine-volume/
&nbsp;&nbsp;[[About]]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[[Tags]]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[[Contents|TabContents]]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[[To Do]]
!X11 configuration for Ubuntu and Debian that make mouse and autosize work with vmware-tools

!!Edit X11 file:
{{{
nano /etc/X11/xorg.conf
}}}

!!Replace with the following content:
{{{
# xorg.conf (X.Org X Window System server configuration file)
#
# This file was generated by dexconf, the Debian X Configuration tool, using
# values from the debconf database.
#
# Edit this file with caution, and see the xorg.conf manual page.
# (Type "man xorg.conf" at the shell prompt.)
#
# This file is automatically updated on xserver-xorg package upgrades *only*
# if it has not been modified since the last upgrade of the xserver-xorg
# package.
#
# If you have edited this file but would like it to be automatically updated
# again, run the following command:
#   sudo dpkg-reconfigure -phigh xserver-xorg

Section "InputDevice"
	Identifier	"VMware Keyboard"
	Driver		"kbd"
	Option		"XkbRules"	"xorg"
	Option		"XkbModel"	"pc105"
	Option		"XkbLayout"	"us"
EndSection

Section "InputDevice"
	Identifier	"VMware Mouse"
	Driver		"vmmouse"
	Option		"CorePointer"
	Option		"Device"	"/dev/input/mice"
	Option		"Emulate3Buttons"	"true"
	Option		"ZAxisMapping"	"4 5"
EndSection

Section "Device"
    Identifier  "VMware SVGA"
    Driver      "vmware"
EndSection


Section "Screen"
	Identifier	"Default Screen"
    Device      "VMware SVGA"
    Monitor     "vmware"
    # Don't specify DefaultColorDepth unless you know what you're
    # doing. It will override the driver's preferences which can
    # cause the X server not to run if the host doesn't support the
    # depth.
    Subsection "Display"
        # VGA mode: better left untouched
        Depth       4
        Modes       "640x480"
        ViewPort    0 0
    EndSubsection
    Subsection "Display"
        Depth       8
        Modes       "1024x768"
        ViewPort    0 0
    EndSubsection
    Subsection "Display"
        Depth       15
        Modes       "1024x768"
        ViewPort    0 0
    EndSubsection
    Subsection "Display"
        Depth       16
        Modes       "1024x768"
        ViewPort    0 0
    EndSubsection
    Subsection "Display"
        Depth       24
        Modes       "1024x768"
        ViewPort    0 0
    EndSubsection
EndSection

Section "ServerLayout"
	Identifier	"Default Layout"
	Screen		"Default Screen"
	InputDevice	"VMware Keyboard"	"CoreKeyboard"
	InputDevice "VMware Mouse"	"CorePointer"
EndSection
Section "Monitor"
    Identifier      "vmware"
    VendorName      "VMware, Inc"
    HorizSync       1-10000
    VertRefresh     1-10000
EndSection
}}}
!Download launcher and place it in /usr/share/applications/
{{{
sudo wget 'https://help.ubuntu.com/community/MATLAB?action=AttachFile&do=get&target=matlab.desktop' -O /usr/share/applications/matlab.desktop
}}}
!Download icon and place it under /usr/share/icons/
{{{
sudo wget http://upload.wikimedia.org/wikipedia/commons/2/21/Matlab_Logo.png -O /usr/share/icons/matlab.png
}}}

<<tiddler ShowSection with: matlab-desktop>>
Source: https://help.ubuntu.com/community/MATLAB
One command to add Medibuntu repository
{{{
sudo wget \
  --output-document=/etc/apt/sources.list.d/medibuntu.list \
  http://www.medibuntu.org/sources.list.d/$(lsb_release -cs).list &&
sudo apt-get --quiet update &&
sudo apt-get --yes --quiet --allow-unauthenticated install medibuntu-keyring &&
sudo apt-get --quiet update
}}}
|!File:		|												|
|!Source:		|												|
|!sources.list:	|"""deb http://www.mendeley.com/repositories/xUbuntu_9.04 /"""	|
|!Install:		|apt-get install mendeleydesktop							|
|!Group:		|Education											|
|!Architecture:	|64-bit											|
|!Location:	|file:///files/linux/crossover/							|
|!Cat:		|CatName										|
3.2 How do I cut and paste text with mouse?

   Hold down shift key while using mouse to cut and paste.
/etc
{{{
# file: /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

iface eth0 inet static
address 10.1.1.6
netmask 255.255.255.0
gateway 192.168.1.1

# The primary network interface
iface eth1 inet static
address 192.168.1.60
netmask 255.255.255.0
gateway 192.168.1.1
auto eth1

}}}
/etc

/etc/default

{{{
#   If so, set this variable to a statd argument like: "--port 1000".
STATDOPTS="-n clusterF"
}}}
To monitor a S.M.A.R.T device, link smart_<device> to the smart_ plugin file. E.g.
{{{
sudo ln -s /usr/share/munin/plugins/smart_ /etc/munin/plugins/smart_hda
}}}
Example. For drive sdb:
{{{
$ sudo hddtemp /dev/sdb
   /dev/sdb: ST3400632A: 46°C

$ sudo ln -s /usr/share/munin/plugins/smart_ /etc/munin/plugins/smart_sdb
}}}
Example. For drive sdc:
{{{
$ sudo hddtemp /dev/sdc
   /dev/sdc: WDC WD2000JB-00EVA0: 38°C

$ sudo ln -s /usr/share/munin/plugins/smart_ /etc/munin/plugins/smart_sdc
}}}
{{{
$ sudo hddtemp /dev/sdd
WARNING: Drive /dev/sdd doesn't seem to have a temperature sensor.
WARNING: This doesn't mean it hasn't got one.
WARNING: If you are sure it has one, please contact me (hddtemp@guzu.net).
WARNING: See --help, --debug and --drivebase options.
/dev/sdd: WDC WD1200JB-00CRA1:  no sensor
}}}

{{{
$ sudo hddtemp /dev/sde
/dev/sde: WDC WD800JB-22JJA0: 39°C

$ sudo ln -s /usr/share/munin/plugins/smart_ /etc/munin/plugins/smart_sde
}}}

{{{
superuser@zeus:/home$ sudo /etc/init.d/munin-node restart
}}}
{{{
echo "sudo mount --bind /aux/v1500g/ /var/flexshare/shares" | cat >> /etc/rc.d/rc.local
}}}
Command run as root
{{{
/var/www/site1    /var/sftp/webadmin/site1           none    bind  0  3
/var/www/site2    /var/sftp/webadmin/site2           none    bind  0  3
}}}
As default, only the network interfaces "eth0" and "eth1" are queried. If the computer is later connected via wireless or use a dial-up line, they will have to be added manually:

{{{
# general
sudo ln -s /usr/share/munin/plugins/if_ /etc/munin/plugins/if_<interface>
sudo ln -s /usr/share/munin/plugins/if_err_ /etc/munin/plugins/if_err_<interface>

# Example
sudo ln -s /usr/share/munin/plugins/if_ /etc/munin/plugins/if_ppp0
sudo ln -s /usr/share/munin/plugins/if_err_ /etc/munin/plugins/if_err_ppp0
}}}

Source: http://wiki.ubuntuusers.de/Munin
Munin collects the data that the programs lm-sensors and hddtemp deliver. If these programs are already installed during the installation of munin-node, they will usually be detected and the plugin activated. If these plugins are installed later, then they will have to be installed manually:

{{{
sudo ln -s /usr/share/munin/plugins/sensors_ /etc/munin/plugins/sensors_fan
sudo ln -s /usr/share/munin/plugins/sensors_ /etc/munin/plugins/sensors_volt
sudo ln -s /usr/share/munin/plugins/sensors_ /etc/munin/plugins/sensors_temp
}}}
Will return "yes" if all required programs are found.

{{{
$ sudo /usr/share/munin/plugins/smart_ autoconf
  yes
}}}

This allows read/write of permissions as well:
{{{
/data       192.168.1.0/255.255.255.0(rw,no_root_squash,async,no_subtree_check)
}}}
This only read/write but dos not allow changing permissions:
{{{
/data          192.168.1.0/255.255.255.0(rw,sync,no_subtree_check)
}}}
{{{
sudo apt-get -y install nfs-kernel-server
}}}
<<tiddler ShowSection with: [[nfs-kernel-server installation results]]>>

{{{
Disk name 	Total size 	Make and model 	Partitions 	Actions
SCSI device A 	465.76 GB 	Generic External 	1 	
SCSI device B 	18.62 GB 	IC25N020 ATCS04-0 	2
}}}
as listed in Webmin
<<tiddler ShowSection with: [[NSLU2 partitions at boot]]>>
<<tiddler ShowSection with: [[Fix boot problem with two disks]]>>
Nagios (formerly Netsaint) is a daemon written in C that is designed to monitor networked hosts and services. It has the ability to notify contacts (via email, pager or other methods) when problems arise and are resolved. Host and service checks are performed by external "plugins", making it easy to write custom checks in your language of choice. Several CGIs are included in order to allow you to view the current and historical status via a Web browser, and a WAP interface is also provided to allow you to acknowlege problems and disable notifications from an internet-ready cellphone


Source: http://www.ohloh.net/tags/hosting
/***
|Name|NestedSlidersPlugin|
|Source|http://www.TiddlyTools.com/#NestedSlidersPlugin|
|Version|2.3.2|
|Author|Eric Shulman - ELS Design Studios|
|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|plugin|
|Requires||
|Overrides|Slider.prototype.stop|
|Description|show content in nest-able 'slider' or 'floating' panels, without needing to create separate tiddlers for each panel|

!!!!!Configuration
<<<
Enable animation for slider panels
<<option chkFloatingSlidersAnimate>> allow sliders to animate when opening/closing
>(note: This setting is in //addition// to the general option for enabling/disabling animation effects:
><<option chkAnimate>> enable animations (entire document)
>For slider animation to occur, you must also allow animation in general.

Debugging messages for 'lazy sliders' deferred rendering:
<<option chkDebugLazySliderDefer>> show debugging alert when deferring slider rendering
<<option chkDebugLazySliderRender>> show debugging alert when deferred slider is actually rendered
<<<
!!!!!Usage
<<<
When installed, this plugin adds new wiki syntax for embedding 'slider' panels directly into tiddler content.  Use {{{+++}}} and {{{===}}} to delimit the slider content.  You can also 'nest' these sliders as deep as you like (see complex nesting example below), so that expandable 'tree-like' hierarchical displays can be created.  This is most useful when converting existing in-line text content to create in-line annotations, footnotes, context-sensitive help, or other subordinate information displays.

Additional optional syntax elements let you specify
*default to open
*cookiename
*heading level
*floater (with optional CSS width value)
*transient display (clicking elsewhere closes panel)
*custom class/label/tooltip/accesskey
*alternate label/tooltip (displayed when panel is open)
*panelID (for later use with {{{<<DOM>>}}} macro.  See [[DOMTweaksPlugin]])
*automatic blockquote style on panel
*deferred rendering of panel content
The complete syntax, using all options, is:
//{{{
++++(cookiename)!!!!!^width^*{{class{[label=key|tooltip][altlabel|alttooltip]}}}#panelID:>...
content goes here
===
//}}}
where:
* {{{+++}}} (or {{{++++}}}) and {{{===}}}<br>marks the start and end of the slider definition, respectively.  When the extra {{{+}}} is used, the slider will be open when initially displayed.
* {{{(cookiename)}}}<br>saves the slider opened/closed state, and restores this state whenever the slider is re-rendered.
* {{{!}}} through {{{!!!!!}}}<br>displays the slider label using a formatted headline (Hn) style instead of a button/link style
* {{{^width^}}} (or just {{{^}}})<br>makes the slider 'float' on top of other content rather than shifting that content downward.  'width' must be a valid CSS value (e.g., "30em", "180px", "50%", etc.).  If omitted, the default width is "auto" (i.e., fit to content)
* {{{"*"}}} //(without the quotes)//<br>denotes "transient display": when a click occurs elsewhere in the document, the slider/floating panel will be automatically closed.  This is useful for creating 'pulldown menus' that automatically go away after they are used.  //Note: using SHIFT-click on a slider label will open/close that slider without triggering the automatic closing of any transient slider panels that are currently displayed, permitting ''temporary'' display of several transient panels at once.//
* """{{class{[label=key|tooltip][altlabel|alttooltip]}}}"""<br>uses label/tooltip/accesskey.  """{{class{...}}}""", """=key""", """|tooltip""" and """[altlabel|alttooltip]""" are optional.  'class' is any valid CSS class name, used to style the slider label text.  'key' must be a ''single letter only''.  altlabel/alttooltip specifiy alternative label/tooltip for use when slider/floating panel is displayed.
* {{{#panelID:}}}<br>defines a unique DOM element ID that is assigned to the panel element used to display the slider content.  This ID can then be used later to reposition the panel using the {{{<<DOM move id>>}}} macro (see [[DOMTweaksPlugin]]), or to access/modify the panel element through use of {{{document.getElementById(...)}}}) javascript code in a plugin or inline script.
* {{{">"}}} //(without the quotes)//<br>automatically adds blockquote formatting to slider content
* {{{"..."}}} //(without the quotes)//<br>defers rendering of closed sliders until the first time they are opened.  //Note: deferred rendering may produce unexpected results in some cases.  Use with care.//

//Note: to make slider definitions easier to read and recognize when editing a tiddler, newlines immediately following the {{{+++}}} 'start slider' or preceding the {{{===}}} 'end slider' sequence are automatically supressed so that excess whitespace is eliminated from the output.//
<<<
!!!!!Examples
<<<
simple in-line slider: 
{{{
+++
   content
===
}}}
+++
   content
===
----
use a custom label and tooltip: 
{{{
+++[label|tooltip]
   content
===
}}}
+++[label|tooltip]
   content
===
----
content automatically blockquoted: 
{{{
+++>
   content
===
}}}
+++>
   content
===
----
all options combined //(default open, cookie, heading, sized floater, transient, class, label/tooltip/key, blockquoted, deferred)//
{{{
++++(testcookie)!!!^30em^*{{big{[label=Z|click or press Alt-Z to open]}}}>...
   content
===
}}}
++++(testcookie)!!!^30em^*{{big{[label=Z|click or press Alt-Z to open]}}}>...
   content
===
----
complex nesting example:
{{{
+++[get info...=I|click for information or press Alt-I]
	put some general information here,
	plus a floating panel with more specific info:
	+++^10em^[view details...|click for details]
		put some detail here, which could in turn contain a transient panel,
		perhaps with a +++^25em^*[glossary definition]explaining technical terms===
	===
===
}}}
+++[get info...=I|click for information or press Alt-I]
	put some general information here,
	plus a floating panel with more specific info:
	+++^10em^[view details...|click for details]
		put some detail here, which could in turn contain a transient panel,
		perhaps with a +++^25em^*[glossary definition]explaining technical terms===
	===
===
<<<
!!!!!Installation
<<<
import (or copy/paste) the following tiddlers into your document:
''NestedSlidersPlugin'' (tagged with <<tag systemConfig>>)
<<<
!!!!!Revision History
<<<
''2007.11.14 - 2.3.2'' in onClickNestedSlider(), prevent SHIFT-click events from opening a new, empty browser window by setting "cancelBubble=true" and calling "stopPropagation()".  Note: SHIFT-click is still processed as a normal click (i.e., it toggles the slider panel display).  Also, using SHIFT-click will prevent 'transient' sliders from being automatically closed when another slider is opened, allowing you to *temporarily* display several transient sliders at once.
''2007.07.26 - 2.3.1'' in document.onclick(), propagate return value from hijacked core click handler to consume OR bubble up click as needed.  Fixes "IE click disease", whereby nearly every mouse click causes a page transition.
|please see [[NestedSlidersPluginHistory]] for additional revision details|
''2005.11.03 - 1.0.0'' initial public release
<<<
!!!!!Credits
<<<
This feature was implemented by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]] with initial research and suggestions from RodneyGomes, GeoffSlocock, and PaulPetterson.
<<<
!!!!!Code
***/
//{{{
version.extensions.nestedSliders = {major: 2, minor: 3, revision: 2, date: new Date(2007,11,14)};
//}}}

//{{{
// options for deferred rendering of sliders that are not initially displayed
if (config.options.chkDebugLazySliderDefer==undefined) config.options.chkDebugLazySliderDefer=false;
if (config.options.chkDebugLazySliderRender==undefined) config.options.chkDebugLazySliderRender=false;
if (config.options.chkFloatingSlidersAnimate==undefined) config.options.chkFloatingSlidersAnimate=false;

// default styles for 'floating' class
setStylesheet(".floatingPanel { position:absolute; z-index:10; padding:0.5em; margin:0em; \
	background-color:#eee; color:#000; border:1px solid #000; text-align:left; }","floatingPanelStylesheet");
//}}}

//{{{
config.formatters.push( {
	name: "nestedSliders",
	match: "\\n?\\+{3}",
	terminator: "\\s*\\={3}\\n?",
	lookahead: "\\n?\\+{3}(\\+)?(\\([^\\)]*\\))?(\\!*)?(\\^(?:[^\\^\\*\\[\\>]*\\^)?)?(\\*)?(?:\\{\\{([\\w]+[\\s\\w]*)\\{)?(\\[[^\\]]*\\])?(\\[[^\\]]*\\])?(?:\\}{3})?(\\#[^:]*\\:)?(\\>)?(\\.\\.\\.)?\\s*",
	handler: function(w)
		{
			lookaheadRegExp = new RegExp(this.lookahead,"mg");
			lookaheadRegExp.lastIndex = w.matchStart;
			var lookaheadMatch = lookaheadRegExp.exec(w.source)
			if(lookaheadMatch && lookaheadMatch.index == w.matchStart)
			{
				// var defopen=lookaheadMatch[1]
				// var cookiename=lookaheadMatch[2]
				// var header=lookaheadMatch[3]
				// var panelwidth=lookaheadMatch[4]
				// var transient=lookaheadMatch[5]
				// var class=lookaheadMatch[6]
				// var label=lookaheadMatch[7]
				// var openlabel=lookaheadMatch[8]
				// var panelID=lookaheadMatch[9]
				// var blockquote=lookaheadMatch[10]
				// var deferred=lookaheadMatch[11]

				// location for rendering button and panel
				var place=w.output;

				// default to closed, no cookie, no accesskey, no alternate text/tip
				var show="none"; var cookie=""; var key="";
				var closedtext=">"; var closedtip="";
				var openedtext="<"; var openedtip="";

				// extra "+", default to open
				if (lookaheadMatch[1]) show="block";

				// cookie, use saved open/closed state
				if (lookaheadMatch[2]) {
					cookie=lookaheadMatch[2].trim().slice(1,-1);
					cookie="chkSlider"+cookie;
					if (config.options[cookie]==undefined)
						{ config.options[cookie] = (show=="block") }
					show=config.options[cookie]?"block":"none";
				}

				// parse label/tooltip/accesskey: [label=X|tooltip]
				if (lookaheadMatch[7]) {
					var parts=lookaheadMatch[7].trim().slice(1,-1).split("|");
					closedtext=parts.shift();
					if (closedtext.substr(closedtext.length-2,1)=="=")	
						{ key=closedtext.substr(closedtext.length-1,1); closedtext=closedtext.slice(0,-2); }
					openedtext=closedtext;
					if (parts.length) closedtip=openedtip=parts.join("|");
					else { closedtip="show "+closedtext; openedtip="hide "+closedtext; }
				}

				// parse alternate label/tooltip: [label|tooltip]
				if (lookaheadMatch[8]) {
					var parts=lookaheadMatch[8].trim().slice(1,-1).split("|");
					openedtext=parts.shift();
					if (parts.length) openedtip=parts.join("|");
					else openedtip="hide "+openedtext;
				}

				var title=show=='block'?openedtext:closedtext;
				var tooltip=show=='block'?openedtip:closedtip;

				// create the button
				if (lookaheadMatch[3]) { // use "Hn" header format instead of button/link
					var lvl=(lookaheadMatch[3].length>6)?6:lookaheadMatch[3].length;
					var btn = createTiddlyElement(createTiddlyElement(place,"h"+lvl,null,null,null),"a",null,lookaheadMatch[6],title);
					btn.onclick=onClickNestedSlider;
					btn.setAttribute("href","javascript:;");
					btn.setAttribute("title",tooltip);
				}
				else
					var btn = createTiddlyButton(place,title,tooltip,onClickNestedSlider,lookaheadMatch[6]);
				btn.innerHTML=title; // enables use of HTML entities in label

				// set extra button attributes
				btn.setAttribute("closedtext",closedtext);
				btn.setAttribute("closedtip",closedtip);
				btn.setAttribute("openedtext",openedtext);
				btn.setAttribute("openedtip",openedtip);
				btn.sliderCookie = cookie; // save the cookiename (if any) in the button object
				btn.defOpen=lookaheadMatch[1]!=null; // save default open/closed state (boolean)
				btn.keyparam=key; // save the access key letter ("" if none)
				if (key.length) {
					btn.setAttribute("accessKey",key); // init access key
					btn.onfocus=function(){this.setAttribute("accessKey",this.keyparam);}; // **reclaim** access key on focus
				}
				btn.onmouseover=function(event) // mouseover on button aligns floater position with button
					{ if (window.adjustSliderPos) window.adjustSliderPos(this.parentNode,this,this.sliderPanel,this.sliderPanel.className); }

				// create slider panel
				var panelClass=lookaheadMatch[4]?"floatingPanel":"sliderPanel";
				var panelID=lookaheadMatch[9]; if (panelID) panelID=panelID.slice(1,-1); // trim off delimiters
				var panel=createTiddlyElement(place,"div",panelID,panelClass,null);
				panel.button = btn; // so the slider panel know which button it belongs to
				btn.sliderPanel=panel; // so the button knows which slider panel it belongs to
				panel.defaultPanelWidth=(lookaheadMatch[4] && lookaheadMatch[4].length>2)?lookaheadMatch[4].slice(1,-1):"";
				panel.setAttribute("transient",lookaheadMatch[5]=="*"?"true":"false");
				panel.style.display = show;
				panel.style.width=panel.defaultPanelWidth;
				panel.onmouseover=function(event) // mouseover on panel aligns floater position with button
					{ if (window.adjustSliderPos) window.adjustSliderPos(this.parentNode,this.button,this,this.className); }

				// render slider (or defer until shown) 
				w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;
				if ((show=="block")||!lookaheadMatch[11]) {
					// render now if panel is supposed to be shown or NOT deferred rendering
					w.subWikify(lookaheadMatch[10]?createTiddlyElement(panel,"blockquote"):panel,this.terminator);
					// align floater position with button
					if (window.adjustSliderPos) window.adjustSliderPos(place,btn,panel,panelClass);
				}
				else {
					var src = w.source.substr(w.nextMatch);
					var endpos=findMatchingDelimiter(src,"+++","===");
					panel.setAttribute("raw",src.substr(0,endpos));
					panel.setAttribute("blockquote",lookaheadMatch[10]?"true":"false");
					panel.setAttribute("rendered","false");
					w.nextMatch += endpos+3;
					if (w.source.substr(w.nextMatch,1)=="\n") w.nextMatch++;
					if (config.options.chkDebugLazySliderDefer) alert("deferred '"+title+"':\n\n"+panel.getAttribute("raw"));
				}
			}
		}
	}
)

// TBD: ignore 'quoted' delimiters (e.g., "{{{+++foo===}}}" isn't really a slider)
function findMatchingDelimiter(src,starttext,endtext) {
	var startpos = 0;
	var endpos = src.indexOf(endtext);
	// check for nested delimiters
	while (src.substring(startpos,endpos-1).indexOf(starttext)!=-1) {
		// count number of nested 'starts'
		var startcount=0;
		var temp = src.substring(startpos,endpos-1);
		var pos=temp.indexOf(starttext);
		while (pos!=-1)  { startcount++; pos=temp.indexOf(starttext,pos+starttext.length); }
		// set up to check for additional 'starts' after adjusting endpos
		startpos=endpos+endtext.length;
		// find endpos for corresponding number of matching 'ends'
		while (startcount && endpos!=-1) {
			endpos = src.indexOf(endtext,endpos+endtext.length);
			startcount--;
		}
	}
	return (endpos==-1)?src.length:endpos;
}
//}}}

//{{{
window.onClickNestedSlider=function(e)
{
	if (!e) var e = window.event;
	var theTarget = resolveTarget(e);
	var theLabel = theTarget.firstChild.data;
	var theSlider = theTarget.sliderPanel
	var isOpen = theSlider.style.display!="none";

	// toggle label
	theTarget.innerHTML=isOpen?theTarget.getAttribute("closedText"):theTarget.getAttribute("openedText");
	// toggle tooltip
	theTarget.setAttribute("title",isOpen?theTarget.getAttribute("closedTip"):theTarget.getAttribute("openedTip"));

	// deferred rendering (if needed)
	if (theSlider.getAttribute("rendered")=="false") {
		if (config.options.chkDebugLazySliderRender)
			alert("rendering '"+theLabel+"':\n\n"+theSlider.getAttribute("raw"));
		var place=theSlider;
		if (theSlider.getAttribute("blockquote")=="true")
			place=createTiddlyElement(place,"blockquote");
		wikify(theSlider.getAttribute("raw"),place);
		theSlider.setAttribute("rendered","true");
	}
	// show/hide the slider
	if(config.options.chkAnimate && (theSlider.className!='floatingPanel' || config.options.chkFloatingSlidersAnimate))
		anim.startAnimating(new Slider(theSlider,!isOpen,e.shiftKey || e.altKey,"none"));
	else
		theSlider.style.display = isOpen ? "none" : "block";
	// reset to default width (might have been changed via plugin code)
	theSlider.style.width=theSlider.defaultPanelWidth;
	// align floater panel position with target button
	if (!isOpen && window.adjustSliderPos) window.adjustSliderPos(theSlider.parentNode,theTarget,theSlider,theSlider.className);
	// if showing panel, set focus to first 'focus-able' element in panel
	if (theSlider.style.display!="none") {
		var ctrls=theSlider.getElementsByTagName("*");
		for (var c=0; c<ctrls.length; c++) {
			var t=ctrls[c].tagName.toLowerCase();
			if ((t=="input" && ctrls[c].type!="hidden") || t=="textarea" || t=="select")
				{ ctrls[c].focus(); break; }
		}
	}
	var cookie=theTarget.sliderCookie;
	if (cookie && cookie.length) {
		config.options[cookie]=!isOpen;
		if (config.options[cookie]!=theTarget.defOpen)
			saveOptionCookie(cookie);
		else { // remove cookie if slider is in default display state
			var ex=new Date(); ex.setTime(ex.getTime()-1000);
			document.cookie = cookie+"=novalue; path=/; expires="+ex.toGMTString();
		}
	}
	// prevent SHIFT-CLICK from being processed by browser (opens blank window... yuck!)
	// but allow plain click to bubble up to page background (to dismiss open popup, if any)
	if (e.shiftKey) { e.cancelBubble=true; if (e.stopPropagation) e.stopPropagation(); }
	return false;
}
//}}}

//{{{
// click in document background closes transient panels 
document.nestedSliders_savedOnClick=document.onclick;
document.onclick=function(ev) { if (!ev) var ev=window.event; var target=resolveTarget(ev);
	// call original click handler
	if (document.nestedSliders_savedOnClick)
		var retval=document.nestedSliders_savedOnClick.apply(this,arguments);
	// if click was inside transient panel (or something contained by a transient panel)... leave it alone
	var p=target;
	while (p)
		if ((p.className=="floatingPanel"||p.className=="sliderPanel")&&p.getAttribute("transient")=="true") break;
		else p=p.parentNode;
	if (p) return retval;
	// otherwise, find and close all transient panels...
	var all=document.all?document.all:document.getElementsByTagName("DIV");
	for (var i=0; i<all.length; i++) {
		 // if it is not a transient panel, or the click was on the button that opened this panel, don't close it.
		if (all[i].getAttribute("transient")!="true" || all[i].button==target) continue;
		// otherwise, if the panel is currently visible, close it by clicking it's button
		if (all[i].style.display!="none") window.onClickNestedSlider({target:all[i].button}) 
	}
	return retval;
};
//}}}

//{{{
// adjust floating panel position based on button position
if (window.adjustSliderPos==undefined) window.adjustSliderPos=function(place,btn,panel,panelClass) {
	if (panelClass=="floatingPanel") {
		var left=0;
		var top=btn.offsetHeight; 
		if (place.style.position!="relative") {
			var left=findPosX(btn);
			var top=findPosY(btn)+btn.offsetHeight;
			var p=place; while (p && p.className!='floatingPanel') p=p.parentNode;
			if (p) { left-=findPosX(p); top-=findPosY(p); }
		}
		if (findPosX(btn)+panel.offsetWidth > getWindowWidth())  // adjust position to stay inside right window edge
			left-=findPosX(btn)+panel.offsetWidth-getWindowWidth()+15; // add extra 15px 'fudge factor'
		panel.style.left=left+"px"; panel.style.top=top+"px";
	}
}

function getWindowWidth() {
	if(document.width!=undefined)
		return document.width; // moz (FF)
	if(document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) )
		return document.documentElement.clientWidth; // IE6
	if(document.body && ( document.body.clientWidth || document.body.clientHeight ) )
		return document.body.clientWidth; // IE4
	if(window.innerWidth!=undefined)
		return window.innerWidth; // IE - general
	return 0; // unknown
}
//}}}

//{{{
// TW2.1 and earlier:
// hijack Slider animation handler 'stop' handler so overflow is visible after animation has completed
Slider.prototype.coreStop = Slider.prototype.stop;
Slider.prototype.stop = function()
	{ this.coreStop.apply(this,arguments); this.element.style.overflow = "visible"; }

// TW2.2+
// hijack Morpher animation handler 'stop' handler so overflow is visible after animation has completed
if (version.major+.1*version.minor+.01*version.revision>=2.2) {
	Morpher.prototype.coreStop = Morpher.prototype.stop;
	Morpher.prototype.stop = function()
		{ this.coreStop.apply(this,arguments); this.element.style.overflow = "visible"; }
}
//}}}
{{{
IP addr:	10.0.0.4
Netmask		255.0.0.0
Nameservers:	10.0.0.138
}}}
/***
| Name:|NewHerePlugin|
| Description:|Creates the new here and new journal macros|
| Version:|3.0 ($Rev: 1845 $)|
| Date:|$Date: 2007-03-16 15:19:22 +1000 (Fri, 16 Mar 2007) $|
| Source:|http://mptw.tiddlyspot.com/#NewHerePlugin|
| Author:|Simon Baird <simon.baird@gmail.com>|
| License|http://mptw.tiddlyspot.com/#TheBSDLicense|
***/
//{{{
merge(config.macros, {
	newHere: {
		handler: function(place,macroName,params,wikifier,paramString,tiddler) {
			wikify("<<newTiddler "+paramString+" tag:[["+tiddler.title+"]]>>",place,null,tiddler);
		}
	},
	newJournalHere: {
		handler: function(place,macroName,params,wikifier,paramString,tiddler) {
			wikify("<<newJournal "+paramString+" tag:[["+tiddler.title+"]]>>",place,null,tiddler);
		}
	}
});

//}}}
Xsane
:: install with apt-get.
VLC
:: install with apt-get.
OpenOffice 3
:: install with apt-get.

vmware WS 64-bit
:: installs from binary
gkrellm
:: install with apt-get.
ubuntu ms-core-fonts
:: install with apt-get.
{{{
date | awk -F : '{ print $1 ":" $2 }' | awk '{ print $1 " " $2 " " $3 }' 
}}}

{{{
ls -1 /bin | xargs -l1 whatis 2>/dev/null | grep -v "nothing appropriate" 
}}}

!!!! List files with numbered lines
{{{
ls | cat -n
}}}

!!!! Count lines
{{{
ls -1|wc -l
}}}

!!!! Processes consuming more CPU
{{{
ps -eo user,pcpu,pid,cmd | sort -r -k2 | head -6
}}}

!!!! Sort user list
{{{
cat /etc/passwd | sort
}}}
only the username:
{{{
cat /etc/passwd | sort | cut -d":" -f1
}}}

http://www.opentechsupport.net/forum/member-contributed-guides/20438-unix-linux-linux-shell-one-liners.html

http://www.linux.com/archive/feature/141921

http://www.linux.com/archive/feature/147568
{{{
esxcfg-firewall --allowOutgoing --blockIncoming
}}}
{{{
esxcfg-firewall --openPort 10000,tcp,in,Webmin
}}}
!Modify iptables
Add following line
{{{
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 10000 -j ACCEPT
}}}
with
{{{
# nano /etc/sysconfig/iptables
}}}
before lines
{{{
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT
}}}
!Restart service
{{{
service iptables restart
}}}
!Modify iptables
Add following line
{{{
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
}}}
with
{{{
# nano /etc/sysconfig/iptables
}}}
before lines
{{{
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT
}}}
!Restart service
{{{
service iptables restart
}}}
{{{
# interactive
graphical
install
url --url=http://10.0.0.104/fedora/fc5/
lang en_US.UTF-8
langsupport --default=en_US.UTF-8 en_US.UTF-8
keyboard us
skipx
network --device eth0 --bootproto dhcp
rootpw secret
firewall --disabled
selinux --disabled
authconfig --enableshadow --enablemd5
timezone Europe/Amsterdam
zerombr
bootloader --location=mbr 
clearpart --linux --all --drives=hda
part /boot --fstype ext3 --size=100 --asprimary --ondisk=hda
part swap --fstype swap --size=256 --grow --maxsize=512 --ondisk=hda
part / --fstype ext3 --size=1 --grow --maxsize=4000 --asprimary --ondisk=hda
reboot


%pre

kernel
e2fsprogs
grub

%post
}}}

{{{
# interactive
graphical
install
url --url=http://10.0.0.104/fedora/fc5/
lang en_US.UTF-8
langsupport --default=en_US.UTF-8 en_US.UTF-8
keyboard us
skipx
network --device eth0 --bootproto dhcp
rootpw secret
firewall --disabled
selinux --disabled
authconfig --enableshadow --enablemd5
timezone Europe/Amsterdam
zerombr
bootloader --location=mbr 
clearpart --linux --all --drives=hda
part /boot --fstype ext3 --size=100 --asprimary --ondisk=hda
part swap --fstype swap --size=256 --grow --maxsize=512 --ondisk=hda
part / --fstype ext3 --size=1 --grow --maxsize=4000 --asprimary --ondisk=hda
reboot


%pre

kernel
e2fsprogs
grub

%post
}}}
''root password''
secret
user: admin
pwd:  password
To set root password:
# ssh to server
{{{
$ ssh admin@192.168.1.223
}}}
# login as admin
# Create password for root
{{{
$ sudo passwd root
}}}
or just use admin since it is a sudoer.

|!File:		|												|
|!Source:		|												|
|!Install:		|apt-get upgrade 											|
|!Group:		|Office									|
|!Cat:		|CatName										|
|!Architecture:	|64-bit											|
|!Location:	|file:///files/linux/crossover/							|

[[Jaunty: ubuntu application keys]]

These options are saved in the browser:

username: <<option txtUserName>>
backupDir: <<option txtBackupFolder>>
<<option chkSaveBackups>> [[SaveBackups]]
<<option chkAutoSave>> [[AutoSave]]
<<option chkRegExpSearch>> [[RegExpSearch]]
<<option chkCaseSensitiveSearch>> [[CaseSensitiveSearch]]

Change [[AdvancedOptions]]
{{{
Server String:	Openfiler NAS
NetBIOS name:	localhost.localdomain
}}}
This is the content of the file [[/etc/sysconfig/network-scripts/ifcfg-eth0]]:
{{{
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.100.1
NETMASK=255.255.255.0
GATEWAY=192.168.100.1
}}}

* Based on CentOS 4.3
* ready to kickstart 32-bit and 64-bit CentOS-4.2 server installs
* The VM is currently set up for ''host-only'' networking - to serve installs externally, just edit the VM settings and change the network interface to ''bridged''.
<!--{{{-->
<div id='head' class='header' macro='gradient vert #18f #04b'>
   <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 id='displayControl' refresh='content' tiddler='DisplayControl'></div> <!-- added by G -->
</div>
<div id='sidebar'>
   <div id='mainMenu' refresh='content' tiddler='MainMenu'></div>
   <div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>
   <div id='sidebarTabs' refresh='content' tiddler='SideBarTabs'></div>
</div>
<div id='displayArea'>
   <div id='messageArea'></div>
   <div id='tiddlerDisplay'></div>
</div>
<!--}}}-->
{{{
Slice			MB		
0	/		10000		bigger the better
1	swap		 1024		double the memory
2
3
4			  32		for mirroring meta-device databases
5	/opt		2048		set space for the packages
6	/opt/studio	1536		for development
7	/export/home	1440		for users
}}}
|!Subcommand|!Description|
|platform console|Manages access to the platform serial console.|
|platform os state|Manages the current state of the operating system (OS).|
|platform power state|Manages the state of the platform power.|
|platform get hostname|Displays the host name of the current primary platform.|
|platform get mac|Returns the MAC addresses for the two on-board platform NICs.|
|platform get product id|Displays the product ID for the current system. |
!Source
Synaptic
!OS
ubuntu-jaunty
!Examples:
{{{
$ poweriso convert "MATLABBook.daa" -o ~/Desktop/70MatlabBooks.iso -ot iso
}}}
!Location
!!Create mount point folder for cluster file system
Necessary to mount ocfs partition to local file system
!!Add IP addresses of all nodes and cluster
Important step so ocfs2 file system knows about the nodes it will be talking
{{{
sudo nano /etc/hosts
}}}
!!Add a root password to all nodes
This password will be used later to propagate nodes configuration from one node to the other; Makes it easier.
!!Install software:
{{{
    1  apt-get update
    2  apt-get upgrade
    3  apt-get install sudo
    6  apt-get install mc
}}}

!! Install remote administration
!! Webmin
{{{
    7  wget http://prdownloads.sourceforge.net/webadmin/webmin-1.490.tar.gz
    8  ls
    9  pwd
   10  ls
   11  tar xzvf webmin-1.490.tar.gz
   12  ls
   13  cd webmin-1.490
   14  ls
   15  ./setup.sh /opt/webmin
}}}
!! Other administration stuff
{{{
   17  nano /etc/sudoers
}}}
{{{
sharity login -s smb://server
sharity keychain default smb://server 
}}}
Username: root
Password: qwerty
[[EJS]]
Idle (Python 2.6)
[[LabView 8.5]]
[[Matlab 2009]]
[[Mathematica 7]]
Python
SciLab
java 64 and 32 bit
:: download from Java Sun and install under /opt
EasyEclipse
:: download and install under /opt. Create link to application manually.
/***
|Name:|QuickOpenTagPlugin|
|Description:|Changes tag links to make it easier to open tags as tiddlers|
|Version:|3.0.1 ($Rev: 3861 $)|
|Date:|$Date: 2008-03-08 10:53:09 +1000 (Sat, 08 Mar 2008) $|
|Source:|http://mptw.tiddlyspot.com/#QuickOpenTagPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License:|http://mptw.tiddlyspot.com/#TheBSDLicense|
***/
//{{{
config.quickOpenTag = {

	dropdownChar: (document.all ? "\u25bc" : "\u25be"), // the little one doesn't work in IE?

	createTagButton: function(place,tag,excludeTiddler) {
		// little hack so we can do this: <<tag PrettyTagName|RealTagName>>
		var splitTag = tag.split("|");
		var pretty = tag;
		if (splitTag.length == 2) {
			tag = splitTag[1];
			pretty = splitTag[0];
		}
		
		var sp = createTiddlyElement(place,"span",null,"quickopentag");
		createTiddlyText(createTiddlyLink(sp,tag,false),pretty);
		
		var theTag = createTiddlyButton(sp,config.quickOpenTag.dropdownChar,
                        config.views.wikified.tag.tooltip.format([tag]),onClickTag);
		theTag.setAttribute("tag",tag);
		if (excludeTiddler)
			theTag.setAttribute("tiddler",excludeTiddler);
    		return(theTag);
	},

	miniTagHandler: function(place,macroName,params,wikifier,paramString,tiddler) {
		var tagged = store.getTaggedTiddlers(tiddler.title);
		if (tagged.length > 0) {
			var theTag = createTiddlyButton(place,config.quickOpenTag.dropdownChar,
                        	config.views.wikified.tag.tooltip.format([tiddler.title]),onClickTag);
			theTag.setAttribute("tag",tiddler.title);
			theTag.className = "miniTag";
		}
	},

	allTagsHandler: function(place,macroName,params) {
		var tags = store.getTags(params[0]);
		var filter = params[1]; // new feature
		var ul = createTiddlyElement(place,"ul");
		if(tags.length == 0)
			createTiddlyElement(ul,"li",null,"listTitle",this.noTags);
		for(var t=0; t<tags.length; t++) {
			var title = tags[t][0];
			if (!filter || (title.match(new RegExp('^'+filter)))) {
				var info = getTiddlyLinkInfo(title);
				var theListItem =createTiddlyElement(ul,"li");
				var theLink = createTiddlyLink(theListItem,tags[t][0],true);
				var theCount = " (" + tags[t][1] + ")";
				theLink.appendChild(document.createTextNode(theCount));
				var theDropDownBtn = createTiddlyButton(theListItem," " +
					config.quickOpenTag.dropdownChar,this.tooltip.format([tags[t][0]]),onClickTag);
				theDropDownBtn.setAttribute("tag",tags[t][0]);
			}
		}
	},

	// todo fix these up a bit
	styles: [
"/*{{{*/",
"/* created by QuickOpenTagPlugin */",
".tagglyTagged .quickopentag, .tagged .quickopentag ",
"	{ margin-right:1.2em; border:1px solid #eee; padding:2px; padding-right:0px; padding-left:1px; }",
".quickopentag .tiddlyLink { padding:2px; padding-left:3px; }",
".quickopentag a.button { padding:1px; padding-left:2px; padding-right:2px;}",
"/* extra specificity to make it work right */",
"#displayArea .viewer .quickopentag a.button, ",
"#displayArea .viewer .quickopentag a.tiddyLink, ",
"#mainMenu .quickopentag a.tiddyLink, ",
"#mainMenu .quickopentag a.tiddyLink ",
"	{ border:0px solid black; }",
"#displayArea .viewer .quickopentag a.button, ",
"#mainMenu .quickopentag a.button ",
"	{ margin-left:0px; padding-left:2px; }",
"#displayArea .viewer .quickopentag a.tiddlyLink, ",
"#mainMenu .quickopentag a.tiddlyLink ",
"	{ margin-right:0px; padding-right:0px; padding-left:0px; margin-left:0px; }",
"a.miniTag {font-size:150%;} ",
"#mainMenu .quickopentag a.button ",
"	/* looks better in right justified main menus */",
"	{ margin-left:0px; padding-left:2px; margin-right:0px; padding-right:0px; }", 
"#topMenu .quickopentag { padding:0px; margin:0px; border:0px; }",
"#topMenu .quickopentag .tiddlyLink { padding-right:1px; margin-right:0px; }",
"#topMenu .quickopentag .button { padding-left:1px; margin-left:0px; border:0px; }",
"/*}}}*/",
		""].join("\n"),

	init: function() {
		// we fully replace these builtins. can't hijack them easily
		window.createTagButton = this.createTagButton;
		config.macros.allTags.handler = this.allTagsHandler;
		config.macros.miniTag = { handler: this.miniTagHandler };
		config.shadowTiddlers["QuickOpenTagStyles"] = this.styles;
		store.addNotification("QuickOpenTagStyles",refreshStyles);
	}
}

config.quickOpenTag.init();

//}}}

http://www.linuxquestions.org/questions/linux-server-73/mdadm-device-is-busy-yet-not-busy-656990/
If for some reason you have enabled your root account and wish to disable it again, open a terminal and issue the following command:

{{{
sudo passwd -l root
}}}

https://help.ubuntu.com/community/RootSudo
{{{
sudo passwd -l root
}}}
{{{
sudo partprobe
}}}
In /etc/inittab, change the line:
{{{
ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now
}}}

to
{{{
ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -h now
}}}

Restart initab with:
{{{
sudo telinit q
}}}
//''Shows DefaultTiddlers + most recently modified tiddlers as default when any TiddlyWiki or adaptation is first loaded.''//
//To use, copy this tiddler's contents to a new tiddler on your site and tag it "systemConfig".//

{{{
var num = 3;
var ignore_tags = ['systemConfig', 'systemTiddlers', 'plugin', 'system'];

function in_array(item, arr){for(var i=0;i<arr.length;i++)if(item==arr[i])return true};
function get_parent(tiddler){while(tiddler && in_array('comments', tiddler.tags)) tiddler=store.fetchTiddler(tiddler.tags[0]);return tiddler};
function unique_list(list){var l=[];for(i=0;i<list.length;i++)if(!in_array(list[i], l))l.push(list[i]);return l};
function get_recent_tiddlers(){
  var tiddlers = store.getTiddlers('modified');
  var names = store.getTiddlerText("DefaultTiddlers").readBracketedList();
  var ignore_tiddlers = [];
  for(var i=0; i<ignore_tags.length; i++)
    ignore_tiddlers=ignore_tiddlers.concat(store.getTaggedTiddlers(ignore_tags[i]));
  for(var i=tiddlers.length-1; i>=0; i--) {
    if(in_array('comments', tiddlers[i].tags)) {
      var t = get_parent(tiddlers[i]);
      if(t)names.push(t.title)
    }
    else if(!in_array(tiddlers[i], ignore_tiddlers))
      names.push(tiddlers[i].title);
  }
  return unique_list(names).slice(0, num);
}
var names = get_recent_tiddlers();
_restart = restart
restart = function() {
  if(window.location.hash) _restart();
  else story.displayTiddlers(null,names);
}
}}}
{{{
sudo dpkg-reconfigure -p medium -f readline ocfs2-tools
}}}
or 
{{{
sudo dpkg-reconfigure ocfs2-tools
}}}
that will give more options.

Respond the questions:
{{{
Would you like to start an OCFS2 cluster (O2CB) at boot time? yes
Name of the cluster to start at boot time: ocfs2
Timeout: <<use 31 milliseconds>>
}}}
{{{
sudo bash -c "echo test output with sudo >> /etc/_test"
}}}
/***
''Name:'' ReferencesPlugin
''Author:'' Garrett Lisi
''Description:'' Places a comma separated list of referring notes at the bottom of each note -- replacing the "references" command bar button.
''Installation:'' Copy this note, change the [[StyleSheet]] to set the references class style, and add a line in the [[ViewTemplate]].

''Code:''
***/
/*{{{*/
config.macros.references = {};
config.macros.references.handler = function(place,macroName,params,wikifier,paramString,tiddler)
{
	var references = store.getReferringTiddlers(tiddler.title);
	if(references.length>0)
		{
//		createTiddlyText(place,"\xAB ");	
		createTiddlyLink(place,references[0].title,true);
		}
	for(var r=1; r<references.length; r++)
		if(references[r].title != tiddler.title)
			{
			createTiddlyText(place,", ");
			createTiddlyLink(place,references[r].title,true);
			}
}
/*}}}*/
.references {
	font-size: 1em;
	text-align: center;
	color: #666;
	margin-top: .75em;
	padding: .25em;
	border: 1px solid #eee;
	background-color: #eee;}
.selected .references {
	background-color: #eee;
	border: 1px solid #ccc;}
.references .tiddlyLinkExisting {font-weight: normal;}
<div class='references' macro="references"></div>
{{{
$ sudo resize_reiserfs -s 296M /dev/lvm-test/lvm0 
}}}
Also:
{{{
$ sudo resize_reiserfs -f /dev/myvg/homevol
}}}
Another example:
{{{
super@z-svr:$ sudo resize_reiserfs -f /dev/VGdata3/LVdata31

resize_reiserfs 3.6.19 (2003 www.namesys.com)

ReiserFS report:
blocksize             4096
block count           297914368 (175818752)
free blocks           122092144 (254)
bitmap block count    9092 (5366)

Syncing..done


resize_reiserfs: Resizing finished successfully.
}}}
{{{
$ ssh superuser@sun-platform "platform set power state on"
}}}
Don't need to reboot, just use ''-o remount'':
{{{
sudo mount /home -o remount
}}}

{{{
sudo mount /aux -o remount
}}}

{{{
sudo mount /backup -o remount
}}}
/***
| Name:|RenameTagsPlugin|
| Description:|Allows you to easily rename or delete tags across multiple tiddlers|
| Version:|3.0 ($Rev: 1845 $)|
| Date:|$Date: 2007-03-16 15:19:22 +1000 (Fri, 16 Mar 2007) $|
| Source:|http://mptw.tiddlyspot.com/#RenameTagsPlugin|
| Author:|Simon Baird <simon.baird@gmail.com>|
| License|http://mptw.tiddlyspot.com/#TheBSDLicense|
Rename a tag and you will be prompted to rename it in all its tagged tiddlers.
***/
//{{{
config.renameTags = {

	prompts: {
		rename: "Rename the tag '%0' to '%1' in %2 tidder%3?",
		remove: "Remove the tag '%0' from %1 tidder%2?"
	},

	removeTag: function(tag,tiddlers) {
		store.suspendNotifications();
		for (var i=0;i<tiddlers.length;i++) {
			store.setTiddlerTag(tiddlers[i].title,false,tag);
		}
		store.resumeNotifications();
		store.notifyAll();
	},

	renameTag: function(oldTag,newTag,tiddlers) {
		store.suspendNotifications();
		for (var i=0;i<tiddlers.length;i++) {
			store.setTiddlerTag(tiddlers[i].title,false,oldTag); // remove old
			store.setTiddlerTag(tiddlers[i].title,true,newTag);  // add new
		}
		store.resumeNotifications();
		store.notifyAll();
	},

	storeMethods: {

		saveTiddler_orig_renameTags: TiddlyWiki.prototype.saveTiddler,

		saveTiddler: function(title,newTitle,newBody,modifier,modified,tags,fields) {
			if (title != newTitle) {
				var tagged = this.getTaggedTiddlers(title);
				if (tagged.length > 0) {
					// then we are renaming a tag
					if (confirm(config.renameTags.prompts.rename.format([title,newTitle,tagged.length,tagged.length>1?"s":""])))
						config.renameTags.renameTag(title,newTitle,tagged);

					if (!this.tiddlerExists(title) && newBody == "")
						// dont create unwanted tiddler
						return null;
				}
			}
			return this.saveTiddler_orig_renameTags(title,newTitle,newBody,modifier,modified,tags,fields);
		},

		removeTiddler_orig_renameTags: TiddlyWiki.prototype.removeTiddler,

		removeTiddler: function(title) {
			var tagged = this.getTaggedTiddlers(title);
			if (tagged.length > 0)
				if (confirm(config.renameTags.prompts.remove.format([title,tagged.length,tagged.length>1?"s":""])))
					config.renameTags.removeTag(title,tagged);
			return this.removeTiddler_orig_renameTags(title);
		}

	},

	init: function() {
		merge(TiddlyWiki.prototype,this.storeMethods);
	}
}

config.renameTags.init();

//}}}
In one the nodes, restart the iscsi service:
{{{
sudo /etc/init.d/open-iscsi restart
}}}
Check the target volumes are there:
{{{
sudo iscsiadm -m discovery -t st -p 192.168.1.86
}}}
and the session:
{{{
sudo iscsiadm -m session
}}}
Verify the system is reading the ocfs2 partition:
{{{
sudo fdisk -l
}}}
Take note of the current size of the partition.
Delete the partition from fdisk with:
{{{
sudo fdisk /dev/sdf
}}}
and then write the changes and exit,
Run again fdisk but this time we will create a partition.
{{{
sudo fdisk /dev/sdf
}}}
Write the changes and notice the size of the newly created partition.
Run
{{{
sudo fdisk -l
}}}
one more time to see if the partition grew.

{{{
$ sudo /etc/init.d/munin-node restart
}}}
{{{
service sshd restart
}}}
service mgmt-vmware restart
esxcfg-firewall --blockIncoming --blockOutgoing
As user:
{{{
/sbin/ifconfig
}}}

As root:
{{{
ifconfig
}}}
{{{
vmware-toolbox & 
}}}
Port = 22
user = root
pwd  = secret

!Before modification
{{{
Location of the Samba configuration file	/usr/local/samba/lib/smb.conf
Location of the Samba password file	 	/usr/local/samba/private/smbpasswd
Full path to smbstatus				/usr/local/samba/bin/smbstatus
Full path to smbpasswd				/usr/local/samba/bin/smbpasswd			
Full path to smbd				/usr/local/samba/bin/smbd		
Full path to nmbd				/usr/local/samba/bin/nmbd
Full path to swat				/usr/local/samba/bin/swat
Full path to smbgroupedit			/usr/local/samba/bin/smbgroupedit
Full path to pdbedit	 			/usr/local/samba/bin/pdbedit
Full path to net command			/usr/local/samba/bin/net
}}}
!After modification
{{{
Location of the Samba configuration file	/etc/samba/smb.conf
Location of the Samba password file	 	/usr/local/samba/private/smbpasswd
Full path to smbstatus				/usr/bin/smbstatus
Full path to smbpasswd				/usr/bin/smbpasswd			
Full path to smbd				/usr/sbin/smbd		
Full path to nmbd				/usr/sbin/nmbd
Full path to swat				None
Full path to smbgroupedit			None
Full path to pdbedit	 			/usr/bin/pdbedit
Full path to net command			/usr/bin/net
}}}
Samba not installed by default
{{{
#  mount -t smbfs -o username=superuser //colorado/os /vmimages/iso
}}}
Author: http://kevin.vanzonneveld.net/code/instkey/

{{{
#!/bin/bash
#
 
REMOTE_USER="root"
 
err(){
    echo "ERROR: ${1} Aborting..."
    exit 1
}
 
installkeyat(){
    if [ -n "${1}" ];then
        REMOTE_HOST="${1}"
    else
        err "1st argument should be the remote hostname."
    fi
 
    if [ -n "${2}" ];then
        REMOTE_USER="${2}"
    else
        REMOTE_USER="root"
    fi
 
    [ -d "~/.ssh" ] || mkdir -p ~/.ssh
    if [ ! -f ~/.ssh/id_dsa.pub ];then
        echo "Local SSH key does not exist. Creating..."
        echo "JUST PRESS ENTER WHEN ssh-keygen ASKS FOR A PASSPHRASE!"
        echo ""
        ssh-keygen -t dsa -f ~/.ssh/id_dsa
 
        [ $? -eq 0 ] || err "ssh-keygen returned errors!"
    fi
 
    [ -f ~/.ssh/id_dsa.pub ] || err "unable to create a local SSH key!"
 
 
    while true; do
        echo -n "Install my local SSH key at ${REMOTE_HOST} (Y/n) "
        read yn
        case $yn in
            "y" | "Y" | "" )
                echo "Local SSH key present, installing remotely..."
                cat ~/.ssh/id_dsa.pub | ssh ${REMOTE_USER}@${REMOTE_HOST} "if [ ! -d ~${REMOTE_USER}/.ssh ];then mkdir -p ~${REMOTE_USER}/.ssh ; fi && if [ ! -f ~${REMOTE_USER}/.ssh/authorized_keys2 ];then touch ~${REMOTE_USER}/.ssh/authorized_keys2 ; fi &&  sh -c 'cat - >> ~${REMOTE_USER}/.ssh/authorized_keys2 && chmod 600 ~${REMOTE_USER}/.ssh/authorized_keys2'"
                [ $? -eq 0 ] || err "ssh returned errors!"
             break ;;
            "n" | "N" ) echo -n "" ; break ;;
            * ) echo "unknown response.  Asking again" ;;
        esac
    done
}
 
 
installkeyat ${1} ${2}
}}}
!Secure Shell (SSH)

Secure Shell (SSH) access option was removed in 4.0 as a security precaution. Most users do not need SSH access, and yet, many end-users would select all options, not knowing the risks. To enable SSH access for a user, login as root and type:
{{{
passwd <username>
usermod -s /bin/bash <username>
}}}
{{{
find . -name '*.class' -exec rm "{}" \; 
}}}

@@find .@@ 		find files under current folder
@@-name '*class'@@	files with extension .class
@@-exec rm "{}" \; @@	remove all the files found by find
{{{
acpid - 	power management
anacron - 	Runs cron jobs on machines that aren't always turned on.
acpi-support - 	power management
apmd - 		power management
atd - 		similar to cron
cron - 		schedules maintenance tasks to run in the background
dbus - 		plug N play
festival	
fetchmail - 	email server
gdm - 		gnome login manager
hotkey		setup - self-descriptive
hplip - 	HP printers
klogd - 	kernel log
makedev - 	makes /dev entry for TV cards & related devices
mdadm - 	software RAID
pcmcia - 	pcmcia cards
powernowd - 	AMD CPU throttling
ppp - 		dialup modems
rsync - 	file copy daemon
sysklogd - 	syslog daemon
usplash - 	pretty graphics on bootup
rmnologin - 	enables logins when system is done booting
stop-bootlogd 	self-descriptive
vbesave - 	power management
}}}
{{{
vi /etc/inet/resolv.conf
}}}
Add following lines:
{{{
nameserver      68.94.156.1
nameserver      68.94.157.1
}}}
Save and quit.
Change to /etc:
{{{
cd /etc 
}}}
Change user and group:
{{{
chown root:sys ./inet/resolv.conf
}}}
Create symlink:
{{{
ln -s ./inet/resolv.conf . 
}}}


The remote printer is an internet printer that uses IPP and a Canon MP160 USB printer attached to an NSLU2 configured as Print Server. The operating system in the NSLU2 is Debian.

The local computer uses Ubuntu Jaunty and doesn't have any printer attached.
We will add the printer to the local computer using TurboPrint.

The remote printer data is as follows:
{{{
http://nslu2:631/printers/CanonMP160
}}}
where:
:: {{{nslu2}}}: is the CUPS server
:: {{{631}}}: is the CUPS port
:: {{{CanonMP160}}}: is the CUPS printer that has been already created and set up in the CUPS print server.

Using the [[TurboPrint Control Center]] or the Linux printing application [[system-config-printer]], add a printer:
* select ''Other'' in ''Printer''
* then select ''Other (CUPS URl)''  in ''Connection''
* enter {{{http://NSLU2:631/printers/CanonMP160}}} in the ''URl'' field.
* then complete the following
{{{
Manufacturer: Canon
Model: Canon_Pixma_MP160
}}}
* and:
{{{
Config Name: Canon_PIXMA_MP160_remote
Short Name: tp_MP160_remote
}}}

{{{
http://192.168.1.77:631/printers/CanonMP160
}}}
!!!Sharity3
tar.gz file. 
Unpack and install with ./setup
In 64-bit it won't install unless dependencies are installed first
/usr/local/sharity3/var/user.cfg.
{{{
$ tail -f /var/log/syslog
}}}
{{{
sensor get
}}}
{{{
$ uname -a
}}}
@@font-size:75%;<<editTiddler [[$1]]>>@@
<<tiddler [[$1]]>> 
!$1 @@font-size:75%;<<editTiddler [[$1]]>>@@
<<tiddler [[$1]]>> 
<<search>><<newTiddler>><<permaview>><<collapseAll>><<closeAll>><<slider chkSliderOptionsPanel OptionsPanel '»' 'Change options'>>
<<tabs txtMainTab Contents 'Hierarchy of tags and content' TabContents Latest 'Recently modified tiddlers' TabTimeline Tags 'List all tags' TabTags All 'List all tiddlers' TabAll More "More lists" TabMore>>
.sliderPanel { margin-left: 0.750em; }  
notes from Linux installations
LinuxAdmin
http://interstice.com/~aglisi/dg/index.cgi
|!File:		|skype_2.1.0.47-0medibuntu0.9.04.1_amd64.deb			|
|!Source:		|MediBuntu										|
|!Install:		|dpkg -i 											|
|!Group:		|Internet											|
|!Cat:		|CatName										|
|!Architecture:	|64-bit											|
|!Location:	|file:///home/shared/Public/Downloads/64-bit/skype-amd64/	|
/***
|Name|SliderMacro|
|Version|1.0.3|
|Requires|~TW2.x|


!Code
***/
//{{{

// this part is not actually required but useful to other people using your plugin
version.extensions.SliderFolderMacro = { major: 1, minor: 0, revision: 3, date: new Date(2006,3,3),
 source: "http://simonbaird.com/mptw/#HelloWorldMacro"
};

config.macros.sliderFolder = {
	label: "sliderFolder",
	prompt: "This will send a message" 
};
config.macros.sliderFolder.handler = function (place,macroName,params,wikifier,paramString,tiddler) {
	tg = params[0] && params[0] != '.' ? params[0] : "NameForgotten";
	lb = params[1] && params[1] != '.' ? params[1] : tg;
	nt = params[2] && params[2] != '.' ? params[2] : "CommentForgotten";

	var who = params.length > 0 ? params[0] : "world";
//	var tg = params.length > 0 ? params[0] : "world";
//	var note = params[1] != null ?  params[1] : "please, add a comment"; 
	var note = nt;

	note = "[["+note+"]]";
	var folder =  tg + "F";

	var lbl = "[["+lb + " " + "\xBB" +  "]]";
	var opnTid = "[[" + "\xA4" + "|"+ tg + "]]";
	var opnFdr = "[[" + "⊡" + "|"+folder+"]]";


	//wikify("Hello //" + who + "// from the '" + macroName + "' macro in tiddler [[" + tiddler.title + "]].", place);
	wikify(opnTid+" <<slider " + "[[chkSlider" + folder + "]]" + " " + "[[" + folder + "]]" + " " + lbl + " " + note + ">>" + opnFdr,place);

//"<slider slide>\n{{contents{\n" + t.text + "\n}}}\n</slider>";

}

// a one liner...
config.macros.MySlider = { 
	handler: function(place,name,params) { 
		wikify("//''@@font-size:5em;color:#696;"+ params[0] + "!@@''//", place); 
	} 
};


//}}}

/***

!Another example
{{{<<MySlider Yeah>>}}}

<<MySlider Yeah>>

<<sliderFolder>>

***/

http://www.blastwave.org/docs/step-063.html
http://www.blastwave.org/packages.php
{{{
sudo apt-get remove ttf-oriya-fonts
}}}
Refenence: http://www.codeweavers.com/support/wiki/cxoffice_ubuntu810visio
{{{
Where is your gzip program? [/bin/gzip] 
Where is your tar program? [/bin/tar] 
Where is your unzip program? [/usr/bin/unzip] 
Where is your make program? [/usr/bin/make] 
Where is your wget program? [/usr/bin/wget] 
Warning: ncftpget not found in PATH
Where is your ncftpget program? [] 
Warning: ncftp not found in PATH
Where is your ncftp program? [] 
Where is your ftp program? [/usr/bin/ftp] 
Where is your gpg program? [/usr/bin/gpg] 
What is your favorite pager program? [/usr/bin/less] 
What is your favorite shell? [/bin/bash]
}}}
{{{
/dev/hdc1       /               ext3      rw,auto,acl        0  1
/dev/VGdata6/LVdata61  /backup  reiserfs  acl,suid,dev,exec  0  0
/dev/hdb2  /aux                 reiserfs  acl,suid,dev,exec  0  0
}}}
{{{
sudo /etc/init.d/openafs-client start
}}}
{{{
/etc/init.d/dhcpd start
}}}
{{{
 $ sudo /etc/init.d/tftpd-hpa start
 $ tftp localhost -c get di_nslu2.bin
 $ ls di-*
}}}
Type the text for 'New Tiddler'
<<tiddler ShowSection with: [[6.1 Install rrdtool]]>>
<<tiddler ShowSection with: [[6.2 Install snmp and snmpd]]>>
<<tiddler ShowSection with: [[7.7 Create cron job for rrdtool and cacti]]>>
<<tiddler ShowSection with: [[7.8 Change user:group to www-data]]>>

!est config file
{{{
# rsnapshot configtest
}}}
!Test hourly config
{{{
# rsnapshot -t hourly
}}}
!Run job
{{{
# rsnapshot hourly
}}}
!Run a diiferent snapshot config file
{{{
sudo rsnapshot -c /etc/rsnapshot_etc.conf configtest
}}}
<<tiddler ShowSection with: [[Copy and mount ISO to Samba mount]]>>
<<tiddler ShowSection with: [[Choose type of Operating System]]>>
[[DGStyleSheet]]
[[ReferencesStyleSheet]]
[[SiteMapStyleSheet]]
[[IntelliTaggerStyleSheet]]
[[TagsTreeStyleSheet]]
[[UserDefinedStyleSheet]]
[[StyleSheetShortcuts]]
[[BasicsStyleSheet]]
.viewer pre {padding:0.5em; margin-left:0.5em; font-size:0.85em; line-height:1.4em; overflow:auto;}
/*{{{*/
#mainMenu
	{ text-align:left; width:14em; padding:0.5em; }
#mainMenu table, #mainMenu table td 
	{ border:1px solid #999; border-collapse:collapse; padding:.3em; }

#displayArea
	{ margin-left:16em; margin-right:15em; }


/*}}}*/
/***
|Name|StyleSheetShortcuts|
|Source|http://www.TiddlyTools.com/#StyleSheetShortcuts|
|Version||
|Author|Eric Shulman - ELS Design Studios|
|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|CSS|
|Requires||
|Overrides||
|Description|'convenience' classes for common formatting, alignment, boxes, tables, etc.|

These 'style tweaks' can be easily included in other stylesheet tiddler so they can share a baseline look-and-feel that can then be customized to create a wide variety of 'flavors'.
***/
/*{{{*/

/* text alignments */
.left
	{ display:block;text-align:left; }
.center
	{ display:block;text-align:center; }
.center table
	{ margin:auto !important; }
.right	
	{ display:block;text-align:right; }
.justify
	{ display:block;text-align:justify; }
.indent
	{ display:block;margin:0;padding:0;border:0;margin-left:2em; }
.floatleft
	{ float:left; }
.floatright
	{ float:right; }
.valignTop, .valignTop table, .valignTop tbody, .valignTop th, .valignTop tr, .valignTop td
	{ vertical-align:top; }
.valignBottom, .valignBottom table, .valignBottom tbody, .valignBottom th, .valignBottom tr, .valignBottom td
	{ vertical-align:bottom; }
.clear
	{ clear:both; }
.wrap
	{ white-space:normal; }
.nowrap
	{ white-space:nowrap; }
.hidden
	{ display:none; }
.show
	{ display:inline !important; }
.span
	{ display:span; }
.block
	{ display:block; }
.relative
	{ position:relative; }
.absolute
	{ position:absolute; }

/* 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; }
.italic
	{ font-style:italic; }
.underline
	{ text-decoration:underline; }

/* plain list items (no bullets or indent) */
.nobullets li { list-style-type: none; margin-left:-2em; }

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

/* show/hide browser-specific content for InternetExplorer vs. non-IE ("moz") browsers */
*[class="ieOnly"]
	{ display:none; } /* hide in moz (uses CSS selector) */
* html .mozOnly, *:first-child+html .mozOnly
	{ display: none; } /* hide in IE (uses IE6/IE7 CSS hacks) */

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

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

/* stretchable images (auto-size to fit tiddler) */
.stretch img { width:95%; }

/* grouped content */
.outline
	{ display:block; padding:1em; -moz-border-radius:1em;-webkit-border-radius:1em; border:1px solid; }
.menubox
	{ display:block; padding:1em; -moz-border-radius:1em;-webkit-border-radius:1em; border:1px solid; background:#fff; color:#000; }
.menubox .button, .menubox .tiddlyLinkExisting, .menubox .tiddlyLinkNonExisting
	{ color:#009 !important; }
.groupbox
	{ display:block; padding:1em; -moz-border-radius:1em;-webkit-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; }

/* scrolled content */
.scrollbars { overflow:auto; }
.height10em { height:10em; }
.height15em { height:15em; }
.height20em { height:20em; }
.height25em { height:25em; }
.height30em { height:30em; }
.height35em { height:35em; }
.height40em { height:40em; }

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

/* stretchable edit fields and textareas (auto-size to fit tiddler) */
.stretch input { width:99%; }
.stretch textarea { width:99%; }

/* compact input fields (limited to a few characters for entering percentages and other small values) */
.onechar input   { width:1em; }
.twochar input   { width:2em; }
.threechar input { width:3em; }
.fourchar input  { width:4em; }
.fivechar input  { width:5em; }

/* text colors */
.white { color:#fff !important }
.gray  { color:#999 !important }
.black { color:#000 !important }
.red   { color:#f66 !important }
.green { color:#0c0 !important }
.blue  { color:#99f !important }

/* rollover highlighting */
.mouseover 
	{color:[[ColorPalette::TertiaryLight]] !important;}
.mouseover a
	{color:[[ColorPalette::TertiaryLight]] !important;}
.selected .mouseover
	{color:[[ColorPalette::Foreground]] !important;}
.selected .mouseover .button, .selected .mouseover a
	{color:[[ColorPalette::PrimaryDark]] !important;}

/* rollover zoom text */
.zoomover
	{ font-size:80% !important; }
.selected .zoomover
	{ font-size:100% !important; }

/* [[ColorPalette]] text colors */
.Background	{ color:[[ColorPalette::Background]];	 }
.Foreground	{ color:[[ColorPalette::Foreground]];	 }
.PrimaryPale	{ color:[[ColorPalette::PrimaryPale]];	 }
.PrimaryLight	{ color:[[ColorPalette::PrimaryLight]];	 }
.PrimaryMid	{ color:[[ColorPalette::PrimaryMid]];	 }
.PrimaryDark	{ color:[[ColorPalette::PrimaryDark]];	 }
.SecondaryPale	{ color:[[ColorPalette::SecondaryPale]]; }
.SecondaryLight	{ color:[[ColorPalette::SecondaryLight]];}
.SecondaryMid	{ color:[[ColorPalette::SecondaryMid]];	 }
.SecondaryDark	{ color:[[ColorPalette::SecondaryDark]]; }
.TertiaryPale	{ color:[[ColorPalette::TertiaryPale]];	 }
.TertiaryLight	{ color:[[ColorPalette::TertiaryLight]]; }
.TertiaryMid	{ color:[[ColorPalette::TertiaryMid]];	 }
.TertiaryDark	{ color:[[ColorPalette::TertiaryDark]];	 }
.Error		{ color:[[ColorPalette::Error]];	 }

/* [[ColorPalette]] background colors */
.BGBackground	  { background-color:[[ColorPalette::Background]];	}
.BGForeground	  { background-color:[[ColorPalette::Foreground]];	}
.BGPrimaryPale	  { background-color:[[ColorPalette::PrimaryPale]];	}
.BGPrimaryLight	  { background-color:[[ColorPalette::PrimaryLight]];	}
.BGPrimaryMid	  { background-color:[[ColorPalette::PrimaryMid]];	}
.BGPrimaryDark	  { background-color:[[ColorPalette::PrimaryDark]];	}
.BGSecondaryPale  { background-color:[[ColorPalette::SecondaryPale]]; 	}
.BGSecondaryLight { background-color:[[ColorPalette::SecondaryLight]];	}
.BGSecondaryMid	  { background-color:[[ColorPalette::SecondaryMid]];	}
.BGSecondaryDark  { background-color:[[ColorPalette::SecondaryDark]]; 	}
.BGTertiaryPale	  { background-color:[[ColorPalette::TertiaryPale]];	}
.BGTertiaryLight  { background-color:[[ColorPalette::TertiaryLight]]; 	}
.BGTertiaryMid	  { background-color:[[ColorPalette::TertiaryMid]];	}
.BGTertiaryDark	  { background-color:[[ColorPalette::TertiaryDark]];	}
.BGError	  { background-color:[[ColorPalette::Error]];	 	}
/*}}}*/
libneon26
libsvn1
{{{
superuser ALL=(ALL) NOPASSWD: ALL
}}}


{{{
$ sudo rsync -vapog --progress -e "ssh -i /root/rsync-key-zeus" \
/data/ root@quilla:/backup/
}}}

Synchronizes from local directory /data at machine "zeus" to remote directory /backup at host "quilla". Verbose (v), archive (a) and preserve permissions (p), owner (o) and group (g). Show progress during transfer (~--progress). No need to enter password at the remote host because using ssh and the key.
{{{
# rsync -vapog --progress -e "ssh -i /root/rsync-key-zeus" /data/ \
root@quilla:/backup/
}}}
Synchronizes folder "/data" in local machine to remote machine "quilla" for user "root" at remote folder "/backup". Show progress (speed, file, completion). 

/***
The new SystemConfig feature allows arbitrary JavaScript code to be executed at startup from any tiddler that is tagged with 'systemConfig', one of the new SpecialTags.
***/
/*{{{*/
config.messages.messageClose.text = "\xD7";
config.messages.messageClose.tooltip = "Close this message";
config.views.wikified.defaultText = "";
config.views.wikified.tag.labelTags = "";
config.views.wikified.tag.openTag = "";
config.views.wikified.tag.tooltip = "Show other tiddlers tagged with '%0'";
config.views.editor.tagPrompt = "separated by spaces, using [[double square brackets]] if necessary";

config.commands.closeTiddler.text = "\xD7";
config.commands.closeTiddler.tooltip = "Close this tiddler";

config.commands.closeOthers.text = "\xA4";
config.commands.closeOthers.tooltip = "Close all others";
config.commands.jump.text = "\xBB";
config.commands.jump.tooltip = "Jump to another open tiddler";
config.commands.copyTiddler.text = "\xA9";
config.commands.copyTiddler.readOnlyText = "  ";
config.commands.editTiddler.text = "\x45";
config.commands.editTiddler.readOnlyText = "  ";
config.commands.editTiddler.tooltip = "Edit this tiddler (double click)";
config.commands.references.text = "\xA5";
config.commands.references.tooltip = "Tiddlers that link to this one";
config.commands.saveTiddler.text = "\xA7";
config.commands.saveTiddler.readOnlyText = ".";
config.commands.saveTiddler.tooltip = "Save changes";
config.commands.cancelTiddler.text = "\xA2";
config.commands.cancelTiddler.tooltip = "Cancel changes";
config.commands.deleteTiddler.text = "\xD8";
config.commands.deleteTiddler.tooltip = "Delete this tiddler";
config.commands.syncing.text = "↔";
config.commands.fields.text = "≡";

config.macros.timeline.dateFormat = "MMM DD, YYYY";
config.macros.search.prompt = "Search this site";
config.macros.search.successMsg = "%0 tiddlers found matching %1";
config.macros.search.failureMsg = "No tiddlers found matching %0";
config.macros.newTiddler.prompt = "Create a new tiddler";
config.macros.newTiddler.label = "+";
config.macros.saveChanges.label = "Save";
config.macros.saveChanges.prompt = "Save this whole wiki as an html file";
config.macros.newJournal.prompt = "Create a new tiddler from the current date and time";
config.macros.permaview.label = "\xA5";
config.macros.permaview.prompt = "Make a URL showing all currently displayed tiddlers";
config.macros.closeAll.label = "\xD7";
config.macros.permaview.label = "\xA5";
config.macros.search.label = "\xA7";
/*}}}*/
<<tag [[Operating System]]>> 
<<tag Linux>> 
<<tag [[Linux Commands]]>> 
<<tag linux-101>> 
<<tag Ubuntu>> 
<<tag [[ubuntu-applications]]>>
<<tag ubuntu-solutions>> 
<<tag applications>> 
<<tag services>> 
<<tag hardware>> 
<<tag monitoring>> 
<<tag network>> 
<<tag how-to>> 
<<tag configuration>> 
<<tag vmware>> 
<<tag cluster>> 
<<tag system>> 
<<tag backup>> 
<<tag installation>> 
<<tag one-liners>> 
----
<<tiddler showFrontTiddlers>>
<<tagsTree meta ""  1 5 index label>>

{{tuduSlider{<<slider chkModeling Modeling 'Modeling »'>>}}}{{tuduSlider{<<slider chkProduction Production 'Production »'>>}}}{{tuduSlider{<<slider chkphysics physics 'physics »'>>}}}{{tuduSlider{<<slider chkMeta meta 'Meta... »'>>}}}


[[Instructions]]
NewPluginTemplateInput


^^~TiddlyWiki is © 2007 [[UnaMesa|http://www.unamesa.org/]]^^
<<tagsTree menu ""  1 5 index label>>
----
[[About]]
[[Welcome]]
Existing [[Tags]] and tiddler population:
<<AllTagsExcept excludeLists folder plugin system systemConfig systemTiddlers template>>
<<tabs txtFavourite
Urgent "Priority 1" ToDo1
Important "Priority 2" ToDo2
"Need To Do" "Priority 3" ToDo3
>>
{{{
<<tabs txtFavourite
Urgent "Priority 1" ToDo1
Important "Priority 2" ToDo2
"Need To Do" "Priority 3" ToDo3
>>
}}}
/***
| Name|TagglyTaggingPlugin|
| Description|tagglyTagging macro is a replacement for the builtin tagging macro in your ViewTemplate|
| Version|3.1 ($Rev: 2351 $)|
| Date|$Date: 2007-07-12 10:18:02 +1000 (Thu, 12 Jul 2007) $|
| Source|http://mptw.tiddlyspot.com/#TagglyTaggingPlugin|
| Author|Simon Baird <simon.baird@gmail.com>|
| License|http://mptw.tiddlyspot.com/#TheBSDLicense|
!Notes
See http://mptw.tiddlyspot.com/#TagglyTagging
***/
//{{{
config.taggly = {

	// for translations
	lingo: {
		labels: {
			asc:        "\u2191", // down arrow
			desc:       "\u2193", // up arrow
			title:      "title",
			modified:   "modified",
			created:    "created",
			show:       "+",
			hide:       "-",
			normal:     "normal",
			group:      "group",
			commas:     "commas",
			sitemap:    "sitemap",
			numCols:    "cols\u00b1", // plus minus sign
			label:      "Tagged as '%0':",
			excerpts:   "excerpts",
			contents:   "contents",
			sliders:    "sliders",
			noexcerpts: "title only"
		},

		tooltips: {
			title:    "Click to sort by title",
			modified: "Click to sort by modified date",
			created:  "Click to sort by created date",
			show:     "Click to show tagging list",
			hide:     "Click to hide tagging list",
			normal:   "Click to show a normal ungrouped list",
			group:    "Click to show list grouped by tag",
			sitemap:  "Click to show a sitemap style list",
			commas:   "Click to show a comma separated list",
			numCols:  "Click to change number of columns",
			excerpts: "Click to show excerpts",
			contents: "Click to show entire tiddler contents",
			sliders:  "Click to show tiddler contents in sliders",
			noexcerpts: "Click to show entire title only"
		}
	},

	config: {
		showTaggingCounts: true,
		listOpts: {
			// the first one will be the default
			sortBy:     ["title","modified","created"],
			sortOrder:  ["asc","desc"],
			hideState:  ["show","hide"],
			listMode:   ["normal","group","sitemap","commas"],
			numCols:    ["4","1","2","3","5","6"],
			excerpts:   ["noexcerpts","excerpts","contents","sliders"]
		},
		valuePrefix: "taggly.",
		excludeTags: ["excludeLists","excludeTagging"],
		excerptSize: 50,
		excerptMarker: "/%"+"%/"
	},

	getTagglyOpt: function(title,opt) {
		var val = store.getValue(title,this.config.valuePrefix+opt);
		return val ? val : this.config.listOpts[opt][0];
	},

	setTagglyOpt: function(title,opt,value) {
		if (!store.tiddlerExists(title))
			// create it silently
			store.saveTiddler(title,title,config.views.editor.defaultText.format([title]),config.options.txtUserName,new Date(),null);
		// if value is default then remove it to save space
		return store.setValue(title,
			this.config.valuePrefix+opt,
			value == this.config.listOpts[opt][0] ? null : value);
	},

	getNextValue: function(title,opt) {
		var current = this.getTagglyOpt(title,opt);
		var pos = this.config.listOpts[opt].indexOf(current);
		// a little usability enhancement. actually it doesn't work right for grouped or sitemap
		var limit = (opt == "numCols" ? store.getTaggedTiddlers(title).length : this.config.listOpts[opt].length);
		var newPos = (pos + 1) % limit;
		return this.config.listOpts[opt][newPos];
	},

	toggleTagglyOpt: function(title,opt) {
		var newVal = this.getNextValue(title,opt);
		this.setTagglyOpt(title,opt,newVal);
	}, 

	createListControl: function(place,title,type) {
		var lingo = config.taggly.lingo;
		var label;
		var tooltip;
		var onclick;

		if ((type == "title" || type == "modified" || type == "created")) {
			// "special" controls. a little tricky. derived from sortOrder and sortBy
			label = lingo.labels[type];
			tooltip = lingo.tooltips[type];

			if (this.getTagglyOpt(title,"sortBy") == type) {
				label += lingo.labels[this.getTagglyOpt(title,"sortOrder")];
				onclick = function() {
					config.taggly.toggleTagglyOpt(title,"sortOrder");
					return false;
				}
			}
			else {
				onclick = function() {
					config.taggly.setTagglyOpt(title,"sortBy",type);
					config.taggly.setTagglyOpt(title,"sortOrder",config.taggly.config.listOpts.sortOrder[0]);
					return false;
				}
			}
		}
		else {
			// "regular" controls, nice and simple
			label = lingo.labels[type == "numCols" ? type : this.getNextValue(title,type)];
			tooltip = lingo.tooltips[type == "numCols" ? type : this.getNextValue(title,type)];
			onclick = function() {
				config.taggly.toggleTagglyOpt(title,type);
				return false;
			}
		}

		// hide button because commas don't have columns
		if (!(this.getTagglyOpt(title,"listMode") == "commas" && type == "numCols"))
			createTiddlyButton(place,label,tooltip,onclick,type == "hideState" ? "hidebutton" : "button");
	},

	makeColumns: function(orig,numCols) {
		var listSize = orig.length;
		var colSize = listSize/numCols;
		var remainder = listSize % numCols;

		var upperColsize = colSize;
		var lowerColsize = colSize;

		if (colSize != Math.floor(colSize)) {
			// it's not an exact fit so..
			upperColsize = Math.floor(colSize) + 1;
			lowerColsize = Math.floor(colSize);
		}

		var output = [];
		var c = 0;
		for (var j=0;j<numCols;j++) {
			var singleCol = [];
			var thisSize = j < remainder ? upperColsize : lowerColsize;
			for (var i=0;i<thisSize;i++) 
				singleCol.push(orig[c++]);
			output.push(singleCol);
		}

		return output;
	},

	drawTable: function(place,columns,theClass) {
		var newTable = createTiddlyElement(place,"table",null,theClass);
		var newTbody = createTiddlyElement(newTable,"tbody");
		var newTr = createTiddlyElement(newTbody,"tr");
		for (var j=0;j<columns.length;j++) {
			var colOutput = "";
			for (var i=0;i<columns[j].length;i++) 
				colOutput += columns[j][i];
			var newTd = createTiddlyElement(newTr,"td",null,"tagglyTagging"); // todo should not need this class
			wikify(colOutput,newTd);
		}
		return newTable;
	},

	createTagglyList: function(place,title) {
		switch(this.getTagglyOpt(title,"listMode")) {
			case "group":  return this.createTagglyListGrouped(place,title); break;
			case "normal": return this.createTagglyListNormal(place,title,false); break;
			case "commas": return this.createTagglyListNormal(place,title,true); break;
			case "sitemap":return this.createTagglyListSiteMap(place,title); break;
		}
	},

	getTaggingCount: function(title) {
		// thanks to Doug Edmunds
		if (this.config.showTaggingCounts) {
			var tagCount = store.getTaggedTiddlers(title).length;
			if (tagCount > 0)
				return " ("+tagCount+")";
		}
		return "";
	},

	getExcerpt: function(inTiddlerTitle,title,indent) {
    if (!indent)
			indent = 1;
		if (this.getTagglyOpt(inTiddlerTitle,"excerpts") == "excerpts") {
			var t = store.getTiddler(title);
			if (t) {
				var text = t.text.replace(/\n/," ");
				var marker = text.indexOf(this.config.excerptMarker);
				if (marker != -1) {
					return " {{excerpt{<nowiki>" + text.substr(0,marker) + "</nowiki>}}}";
				}
				else if (text.length < this.config.excerptSize) {
					return " {{excerpt{<nowiki>" + t.text + "</nowiki>}}}";
				}
				else {
					return " {{excerpt{<nowiki>" + t.text.substr(0,this.config.excerptSize) + "..." + "</nowiki>}}}";
				}
			}
		}
		else if (this.getTagglyOpt(inTiddlerTitle,"excerpts") == "contents") {
			var t = store.getTiddler(title);
			if (t) {
				return "\n{{contents indent"+indent+"{\n" + t.text + "\n}}}";
			}
		}
		else if (this.getTagglyOpt(inTiddlerTitle,"excerpts") == "sliders") {
			var t = store.getTiddler(title);
			if (t) {
				return "<slider slide>\n{{contents{\n" + t.text + "\n}}}\n</slider>";
			}
		}
		return "";
	},

	notHidden: function(t,inTiddler) {
		if (typeof t == "string") 
			t = store.getTiddler(t);
		return (!t || !t.tags.containsAny(this.config.excludeTags) ||
				(inTiddler && this.config.excludeTags.contains(inTiddler)));
	},

	// this is for normal and commas mode
	createTagglyListNormal: function(place,title,useCommas) {

		var list = store.getTaggedTiddlers(title,this.getTagglyOpt(title,"sortBy"));

		if (this.getTagglyOpt(title,"sortOrder") == "desc")
			list = list.reverse();

		var output = [];
		var first = true;
		for (var i=0;i<list.length;i++) {
			if (this.notHidden(list[i],title)) {
				var countString = this.getTaggingCount(list[i].title);
				var excerpt = this.getExcerpt(title,list[i].title);
				if (useCommas)
					output.push((first ? "" : ", ") + "[[" + list[i].title + "]]" + countString + excerpt);
				else
					output.push("*[[" + list[i].title + "]]" + countString + excerpt + "\n");

				first = false;
			}
		}

		return this.drawTable(place,
			this.makeColumns(output,useCommas ? 1 : parseInt(this.getTagglyOpt(title,"numCols"))),
			useCommas ? "commas" : "normal");
	},

	// this is for the "grouped" mode
	createTagglyListGrouped: function(place,title) {
		var sortBy = this.getTagglyOpt(title,"sortBy");
		var sortOrder = this.getTagglyOpt(title,"sortOrder");

		var list = store.getTaggedTiddlers(title,sortBy);

		if (sortOrder == "desc")
			list = list.reverse();

		var leftOvers = []
		for (var i=0;i<list.length;i++)
			leftOvers.push(list[i].title);

		var allTagsHolder = {};
		for (var i=0;i<list.length;i++) {
			for (var j=0;j<list[i].tags.length;j++) {

				if (list[i].tags[j] != title) { // not this tiddler

					if (this.notHidden(list[i].tags[j],title)) {

						if (!allTagsHolder[list[i].tags[j]])
							allTagsHolder[list[i].tags[j]] = "";

						if (this.notHidden(list[i],title)) {
							allTagsHolder[list[i].tags[j]] += "**[["+list[i].title+"]]"
										+ this.getTaggingCount(list[i].title) + this.getExcerpt(title,list[i].title) + "\n";

							leftOvers.setItem(list[i].title,-1); // remove from leftovers. at the end it will contain the leftovers

						}
					}
				}
			}
		}

		var allTags = [];
		for (var t in allTagsHolder)
			allTags.push(t);

		var sortHelper = function(a,b) {
			if (a == b) return 0;
			if (a < b) return -1;
			return 1;
		};

		allTags.sort(function(a,b) {
			var tidA = store.getTiddler(a);
			var tidB = store.getTiddler(b);
			if (sortBy == "title") return sortHelper(a,b);
			else if (!tidA && !tidB) return 0;
			else if (!tidA) return -1;
			else if (!tidB) return +1;
			else return sortHelper(tidA[sortBy],tidB[sortBy]);
		});

		var leftOverOutput = "";
		for (var i=0;i<leftOvers.length;i++)
			if (this.notHidden(leftOvers[i],title))
				leftOverOutput += "*[["+leftOvers[i]+"]]" + this.getTaggingCount(leftOvers[i]) + this.getExcerpt(title,leftOvers[i]) + "\n";

		var output = [];

		if (sortOrder == "desc")
			allTags.reverse();
		else if (leftOverOutput != "")
			// leftovers first...
			output.push(leftOverOutput);

		for (var i=0;i<allTags.length;i++)
			if (allTagsHolder[allTags[i]] != "")
				output.push("*[["+allTags[i]+"]]" + this.getTaggingCount(allTags[i]) + this.getExcerpt(title,allTags[i]) + "\n" + allTagsHolder[allTags[i]]);

		if (sortOrder == "desc" && leftOverOutput != "")
			// leftovers last...
			output.push(leftOverOutput);

		return this.drawTable(place,
				this.makeColumns(output,parseInt(this.getTagglyOpt(title,"numCols"))),
				"grouped");

	},

	// used to build site map
	treeTraverse: function(title,depth,sortBy,sortOrder) {

		var list = store.getTaggedTiddlers(title,sortBy);
		if (sortOrder == "desc")
			list.reverse();

		var indent = "";
		for (var j=0;j<depth;j++)
			indent += "*"

		var childOutput = "";
		for (var i=0;i<list.length;i++)
			if (list[i].title != title)
				if (this.notHidden(list[i].title,this.config.inTiddler))
					childOutput += this.treeTraverse(list[i].title,depth+1,sortBy,sortOrder);

		if (depth == 0)
			return childOutput;
		else
			return indent + "[["+title+"]]" + this.getTaggingCount(title) + this.getExcerpt(this.config.inTiddler,title,depth) + "\n" + childOutput;
	},

	// this if for the site map mode
	createTagglyListSiteMap: function(place,title) {
		this.config.inTiddler = title; // nasty. should pass it in to traverse probably
		var output = this.treeTraverse(title,0,this.getTagglyOpt(title,"sortBy"),this.getTagglyOpt(title,"sortOrder"));
		return this.drawTable(place,
				this.makeColumns(output.split(/(?=^\*\[)/m),parseInt(this.getTagglyOpt(title,"numCols"))), // regexp magic
				"sitemap"
				);
	},

	macros: {
		tagglyTagging: {
			handler: function (place,macroName,params,wikifier,paramString,tiddler) {
				var refreshContainer = createTiddlyElement(place,"div");
				// do some refresh magic to make it keep the list fresh - thanks Saq
				refreshContainer.setAttribute("refresh","macro");
				refreshContainer.setAttribute("macroName",macroName);
        			refreshContainer.setAttribute("title",tiddler.title);
				this.refresh(refreshContainer);
			},

			refresh: function(place) {
				var title = place.getAttribute("title");
				removeChildren(place);
				if (store.getTaggedTiddlers(title).length > 0) {
					var lingo = config.taggly.lingo;
					config.taggly.createListControl(place,title,"hideState");
					if (config.taggly.getTagglyOpt(title,"hideState") == "show") {
						createTiddlyElement(place,"span",null,"tagglyLabel",lingo.labels.label.format([title]));
						config.taggly.createListControl(place,title,"title");
						config.taggly.createListControl(place,title,"modified");
						config.taggly.createListControl(place,title,"created");
						config.taggly.createListControl(place,title,"listMode");
						config.taggly.createListControl(place,title,"excerpts");
						config.taggly.createListControl(place,title,"numCols");
						config.taggly.createTagglyList(place,title);
					}
				}
			}
		}
	},

	// todo fix these up a bit
	styles: [
"/*{{{*/",
"/* created by TagglyTaggingPlugin */",
".tagglyTagging { padding-top:0.5em; }",
".tagglyTagging li.listTitle { display:none; }",
".tagglyTagging ul {",
"	margin-top:0px; padding-top:0.5em; padding-left:2em;",
"	margin-bottom:0px; padding-bottom:0px;",
"}",
".tagglyTagging { vertical-align: top; margin:0px; padding:0px; }",
".tagglyTagging table { margin:0px; padding:0px; }",
".tagglyTagging .button { visibility:hidden; margin-left:3px; margin-right:3px; }",
".tagglyTagging .button, .tagglyTagging .hidebutton {",
"	color:[[ColorPalette::TertiaryLight]]; font-size:90%;",
"	border:0px; padding-left:0.3em;padding-right:0.3em;",
"}",
".tagglyTagging .button:hover, .hidebutton:hover, ",
".tagglyTagging .button:active, .hidebutton:active  {",
"	border:0px; background:[[ColorPalette::TertiaryPale]]; color:[[ColorPalette::TertiaryDark]];",
"}",
".selected .tagglyTagging .button { visibility:visible; }",
".tagglyTagging .hidebutton { color:[[ColorPalette::Background]]; }",
".selected .tagglyTagging .hidebutton { color:[[ColorPalette::TertiaryLight]] }",
".tagglyLabel { color:[[ColorPalette::TertiaryMid]]; font-size:90%; }",
".tagglyTagging ul {padding-top:0px; padding-bottom:0.5em; margin-left:1em; }",
".tagglyTagging ul ul {list-style-type:disc; margin-left:-1em;}",
".tagglyTagging ul ul li {margin-left:0.5em; }",
".editLabel { font-size:90%; padding-top:0.5em; }",
".tagglyTagging .commas { padding-left:1.8em; }",
"/* not technically tagglytagging but will put them here anyway */",
".tagglyTagged li.listTitle { display:none; }",
".tagglyTagged li { display: inline; font-size:90%; }",
".tagglyTagged ul { margin:0px; padding:0px; }",
".excerpt { color:[[ColorPalette::TertiaryDark]]; }",
"div.tagglyTagging table,",
"div.tagglyTagging table tr,",
"td.tagglyTagging",
" {border-style:none!important; }",
".tagglyTagging .contents { border-bottom:2px solid [[ColorPalette::TertiaryPale]]; padding:0 1em 1em 0.5em;",
"  margin-bottom:0.5em; }",
".tagglyTagging .indent1  { margin-left:3em;  }",
".tagglyTagging .indent2  { margin-left:4em;  }",
".tagglyTagging .indent3  { margin-left:5em;  }",
".tagglyTagging .indent4  { margin-left:6em;  }",
".tagglyTagging .indent5  { margin-left:7em;  }",
".tagglyTagging .indent6  { margin-left:8em;  }",
".tagglyTagging .indent7  { margin-left:9em;  }",
".tagglyTagging .indent8  { margin-left:10em; }",
".tagglyTagging .indent9  { margin-left:11em; }",
".tagglyTagging .indent10 { margin-left:12em; }",
"/*}}}*/",
		""].join("\n"),

	init: function() {
		merge(config.macros,this.macros);
		config.shadowTiddlers["TagglyTaggingStyles"] = this.styles;
		store.addNotification("TagglyTaggingStyles",refreshStyles);
	}
};

config.taggly.init();

//}}}

/***
InlineSlidersPlugin
By Saq Imtiaz
http://tw.lewcid.org/sandbox/#InlineSlidersPlugin

// syntax adjusted to not clash with NestedSlidersPlugin

***/
//{{{
config.formatters.unshift( {
	name: "inlinesliders",
	// match: "\\+\\+\\+\\+|\\<slider",
	match: "\\<slider",
	// lookaheadRegExp: /(?:\+\+\+\+|<slider) (.*?)(?:>?)\n((?:.|\n)*?)\n(?:====|<\/slider>)/mg,
	lookaheadRegExp: /(?:<slider) (.*?)(?:>)\n((?:.|\n)*?)\n(?:<\/slider>)/mg,
	handler: function(w) {
		this.lookaheadRegExp.lastIndex = w.matchStart;
		var lookaheadMatch = this.lookaheadRegExp.exec(w.source)
		if(lookaheadMatch && lookaheadMatch.index == w.matchStart ) {
			var btn = createTiddlyButton(w.output,lookaheadMatch[1] + " "+"\u00BB",lookaheadMatch[1],this.onClickSlider,"button sliderButton");
			var panel = createTiddlyElement(w.output,"div",null,"sliderPanel");
			panel.style.display = "none";
			wikify(lookaheadMatch[2],panel);
			w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;
		}
   },
   onClickSlider : function(e) {
		if(!e) var e = window.event;
		var n = this.nextSibling;
		n.style.display = (n.style.display=="none") ? "block" : "none";
		return false;
	}
});

//}}}
*<<tag meta>>- describes the operation of this site
**<<tag editing>>- tips on editing and authoring notes, including all sorts of tools
**<<tag 0>>- a note that's linked to but is empty or needs editing
**<<tag system>>- control how the site operates and is layed out
***<<tag xsystemConfig>>- deactivated code
***<<tag systemNotes>>- system control notes loaded at startup, used to control content
***<<tag plugin>>- code snippets enhancing functionality, and containing descriptions of what they do
***<<tag template>>- custom css page template, used to describe layout
***<<tag folder>>- a folder is a tag is a note
**<<tag illus>>- notes containing illustrations
**<<tag slide>>- presentation slide (start note title with ".")
/***
|''Name:''|TagsTreePlugin|
|''Description:''|Displays tags hierachy as a tree of tagged tiddlers.<br>Can be used to create dynamic outline navigation.|
|''Version:''|1.0.1|
|''Date:''|Jan 04,2008|
|''Source:''|http://visualtw.ouvaton.org/VisualTW.html|
|''Author:''|Pascal Collin|
|''License:''|[[BSD open source license|License]]|
|''~CoreVersion:''|2.1.0|
|''Browser:''|Firefox 2.0; InternetExplorer 6.0|
!Demo
On the plugin [[homepage|http://visualtw.ouvaton.org/VisualTW.html]] :
*Try to tag some <<newTiddler>> with a tag displayed in the menu and edit MainMenu.
*Look at some tags like [[Plugins]] or [[menu]].
!Installation
#import the plugin,
#save and reload,
#optionally, edit TagsTreeStyleSheet.
! Usage
{{{<<tagsTree>>}}} macro accepts the following //optional// parameters.
|!#|!parameter|!description|!by default|
|1|{{{root}}}|Uses {{{root}}} tag as tree root|- In a //tiddler// content or template : uses the tiddler as root tag.<br>- In the //page// content or template (by ex MainMenu) : displays all untagged tags.|
|2|{{{excludeTag}}}|Excludes all such tagged tiddlers from the tree|Uses default excludeLists tag|
|3|{{{level}}}|Expands nodes until level {{{level}}}.<br>Value {{{0}}} hides expand/collapse buttons.|Nodes are collapsed on first level|
|4|{{{depth}}}|Hierachy depth|6 levels depth (H1 to H6 header styles)|
|5|{{{sortField}}}|Alternate sort field. By example : "index".|Sorts tags and tiddlers alphabetically (on their title)|
|6|{{{labelField}}}|Alertnate label field. By example : "label".|Displays tiddler's title|

!Useful addons
*[[FieldsEditorPlugin]] : //create//, //edit//, //view// and //delete// commands in toolbar <<toolbar fields>>.
*[[TaggerPlugin]] : Provides a drop down listing current tiddler tags, and allowing toggling of tags.
!Advanced Users
You can change the global defaults for TagsTreePlugin, like default {{{level}}} value or level styles, by editing or overriding the first config.macros.tagsTree attributes below.
!Code
***/
//{{{
config.macros.tagsTree = {
	expand : "+",
	collapse : "–",
	depth : 6,
	level : 1,
	sortField : "",	
	labelField : "",
	styles : ["h3","h4","h5","h6","h7","div"],
	trees : {}
}

config.macros.tagsTree.handler = function(place,macroName,params,wikifier,paramString,tiddler)
{
	var root = params[0] ? params[0] : (tiddler ? tiddler.title : null);
	var excludeTag = params[1] ? params[1] : "excludeTagsTree";
	var level = params[2] ? params[2] : config.macros.tagsTree.level;
	var depth = params[3] ? params[3] : config.macros.tagsTree.depth;
	var sortField = params[4] ? params[4] : config.macros.tagsTree.sortField;
	var labelField = params[5] ? params[5] : config.macros.tagsTree.labelField;
	var showButtons = (level>0);
	var id = config.macros.tagsTree.getId(place);
	if (config.macros.tagsTree.trees[id]==undefined) config.macros.tagsTree.trees[id]={};
	config.macros.tagsTree.createSubTree(place,id,root,excludeTag,[],level>0 ? level : 1,depth, sortField, labelField,showButtons);
}

config.macros.tagsTree.createSubTree = function(place, id, root, excludeTag, ancestors, level, depth, sortField, labelField,showButtons){
	var childNodes = root ? this.getChildNodes(root, ancestors) : this.getRootTags(excludeTag);
	var isOpen = (level>0) || (!showButtons);
	if (root && this.trees[id][root]!=undefined) isOpen = this.trees[id][root]; 
	if (root && ancestors.length) {
		var t = store.getTiddler(root);
		if (childNodes.length && depth>0) {
			var wrapper = createTiddlyElement(place , this.styles[Math.min(Math.max(ancestors.length,1),6)-1],null,"branch");
			if (showButtons) {
				b = createTiddlyButton(wrapper, isOpen ? config.macros.tagsTree.collapse : config.macros.tagsTree.expand, null, config.macros.tagsTree.onClick);
				b.setAttribute("treeId",id);
				b.setAttribute("tiddler",root);					
			}
			createTiddlyText(createTiddlyLink(wrapper, root),t&&labelField ? t.fields[labelField] ? t.fields[labelField] : root : root);
		}
		else 
			createTiddlyText(createTiddlyLink(place, root,false,"leaf"),t&&labelField ? t.fields[labelField] ? t.fields[labelField] : root : root);
	}
	if (childNodes.length && depth) {
		var d = createTiddlyElement(place,"div",null,"subtree");
		d.style.display= isOpen ? "block" : "none";
		if (sortField)
			childNodes.sort(function(a, b){
				var fa=a.fields[sortField];
				var fb=b.fields[sortField];
				return (fa==undefined && fb==undefined) ? a.title < b.title ? -1 : a.title > b.title ? 1 : 0 : (fa==undefined && fb!=undefined) ? 1 :(fa!=undefined && fb==undefined) ? -1 : fa < fb ? -1 : fa > fb ? 1 : 0;
			})
		for (var cpt=0; cpt<childNodes.length; cpt++)
			this.createSubTree(d, id, childNodes[cpt].title, excludeTag, ancestors.concat(root), level-1, depth-1, sortField, labelField, showButtons);	
	}	
}

config.macros.tagsTree.onClick = function(e){
	var id = this.getAttribute("treeId");
	var tiddler = this.getAttribute("tiddler");	
	var n = this.parentNode.nextSibling;
	var isOpen = n.style.display != "none";
	if(config.options.chkAnimate && anim && typeof Slider == "function")
		anim.startAnimating(new Slider(n,!isOpen,null,"none"));
	else
		n.style.display = isOpen ? "none" : "block";
	this.firstChild.nodeValue = isOpen ? config.macros.tagsTree.expand : config.macros.tagsTree.collapse;
	config.macros.tagsTree.trees[id][tiddler]=!isOpen;
	return false;
}

config.macros.tagsTree.getChildNodes = function(root ,ancestors){
	var childs = store.getTaggedTiddlers(root);
	var result = new Array();
	for (var cpt=0; cpt<childs.length; cpt++)
		if (childs[cpt].title!=root && ancestors.indexOf(childs[cpt].title)==-1) result.push(childs[cpt]);
	return result;
}

config.macros.tagsTree.getRootTags = function(excludeTag){
	var tags = store.getTags(excludeTag);
	tags.sort(function(a,b) {return a[0].toLowerCase() < b[0].toLowerCase() ? -1 : (a[0].toLowerCase() == b[0].toLowerCase() ? 0 : +1);});
	var result = new Array();
	for (var cpt=0; cpt<tags.length; cpt++) {
		var t = store.getTiddler(tags[cpt][0]);
		if (!t || t.tags.length==0) result.push(t ? t : {title:tags[cpt][0],fields:{}});
	}
	return result;
}

config.macros.tagsTree.getId = function(element){
	while (!element.id && element.parentNode) element=element.parentNode;
	return element.id ? element.id : "<html>";
}

config.shadowTiddlers.TagsTreeStyleSheet = "/*{{{*/\n";
config.shadowTiddlers.TagsTreeStyleSheet +=".leaf, .subtree {display:block; margin-left : 0.5em}\n";
config.shadowTiddlers.TagsTreeStyleSheet +=".subtree {margin-bottom:0.5em}\n";
config.shadowTiddlers.TagsTreeStyleSheet +="#mainMenu {text-align:left}\n";
config.shadowTiddlers.TagsTreeStyleSheet +=".branch .button {border:1px solid #DDD; color:#AAA;font-size:9px;padding:0 2px;margin-right:0.3em;vertical-align:middle;text-align:center;}\n";
config.shadowTiddlers.TagsTreeStyleSheet +="/*}}}*/";

store.addNotification("TagsTreeStyleSheet", refreshStyles); 

config.shadowTiddlers.MainMenu="<<tagsTree>>"

config.shadowTiddlers.PageTemplate = config.shadowTiddlers.PageTemplate.replace(/id='mainMenu' refresh='content' /,"id='mainMenu' refresh='content' force='true' ")

//}}}
/*{{{*/
.leaf, .subtree {display:block; margin-left : 0.5em}
.subtree {margin-bottom:0.5em}
#mainMenu {text-align:left}
.branch .button {border:1px solid #DDD; color:#AAA;font-size:9px;padding:0 2px;margin-right:0.3em;vertical-align:middle;text-align:center;}
/*}}}*/

The line:
{{{url --url ftp://192.168.1.81/nfs/esx/esx301}}}
is important because it indicates the root folder for the ESX images.

{{{
# Automatically generated UDA Kickstart script for ESX3
# Network Configurations
network --device eth0 --bootproto static --ip 192.168.1.83 --netmask 255.255.255.0 --gateway 192.168.1.1 --nameserver 192.168.1.1   --hostname ESX1 --addvmportgroup=0 

# Regional Settings
keyboard us
lang en_US
langsupport --default en_US
timezone  America/New_York

# Installatition settings
skipx
mouse none
firewall --disabled
rootpw secret
reboot
install
url --url ftp://192.168.1.81/nfs/esx/esx301

# Driver disks

# Load drivers

# Bootloader options
bootloader --location=mbr --driveorder=sda  

# Authentication
auth --enableshadow --enablemd5

# Partitioning
clearpart --all --drives=sda --initlabel
part /boot --fstype ext3  --size 250  --ondisk=sda 
part swap   --size 1600  --ondisk=sda 
part / --fstype ext3  --size 5120  --ondisk=sda 
part /var --fstype ext3  --size 2048  --ondisk=sda 
part /tmp --fstype ext3  --size 2048  --ondisk=sda 
part /opt --fstype ext3  --size 2048  --ondisk=sda 
part /home --fstype ext3  --size 2048  --ondisk=sda 
part None --fstype vmkcore  --size 100  --ondisk=sda 
part None --fstype vmfs3  --size 1 --grow --ondisk=sda 

# Network Configurations
network --device eth0 --bootproto static --ip 10.0.0.105 --netmask 255.0.0.0 --gateway 10.0.0.1 --nameserver 10.0.0.2   --hostname ESX1 --addvmportgroup=0 

# VMWare License options
vmaccepteula
vmlicense --mode=server --server=27000@virtualcenter.mycompany.com --edition=esxfull --features=backup,vsmp


%vmlicense_text

%packages
@base


%post
# Your postinstall script goes here!
}}}

/***
|''Name:''|TiddlerListMacro|
|''Version:''|2.3 (8-Jan-2008)|
|''Source''|http://jackparke.googlepages.com/jtw.html#TiddlerListMacro ([[del.icio.us|http://del.icio.us/post?url=http://jackparke.googlepages.com/jtw.html%23TiddlerListMacro]])|
|''Author:''|[[Jack]]|
|''Type:''|Macro|
|''Documentation:''|[[TiddlerListMacroDocumentation]]|
!Usage
{{{<<tiddlerList parameter1:"value1" parameter2:"value2" ...>>}}}
See TiddlerListMacroDocumentation and TiddlerListMacroExamples
!Code
***/
//{{{
version.extensions.tiddlerList = {major: 2, minor: 3, revision: 0, date: new Date("Jan 08, 2008")};
// template = [header, item, separator, group, footer]
config.macros.tiddlerList={
 formats : {list:true, nlist:true, span:true, stack:true, csv:true, table:true},
 templates : {
 list : [ "%0\n", "* %0\n", "", "%group\n", "%0\n"],
 nlist : [ "%0", "# %0\n", "", "%group\n", "%0\n"],
 span : [ "%0", "%0", " ", "%group", "%0"],
 stack : [ "%0", "%0", "\n", "%group", "%0"],
 csv : [ "%0", "%0", ", ", "%0", "%0\n"],
 table : ["|!%0|\n", "|%0|\n", "", "|%group|\n", "|%0|\n"]
 },
 dateFormat : "DD MMM YYYY"
}

if (typeof gCurrentTiddler == 'undefined')
 var gCurrentTiddler;

config.macros.tiddlerList.handler = function(place,macroName,params,wikifier,paramString,tiddler)
{
 // Some globals
 var count=0, groupCount=0, theGroup="", lastGroup="", firstInGroup = false;
 var currentTiddler = tiddler;
 gCurrentTiddler = tiddler;
 var listWikiText="";
 var formats = this.formats;
 
 // SQL-Like parameters
 var parameters = paramString.parseParams("name",null,true);
 var pTags = parameters[0]["tags"]?parameters[0]["tags"][0].split(","):[];
 var pOrder = parameters[0]["order"]?parameters[0]["order"][0]:"title";
 var pTop = parameters[0]["top"]?parameters[0]["top"][0]:-1;
 var pText = parameters[0]["text"]?parameters[0]["text"][0]:"";
 var pTitle = parameters[0]["title"]?parameters[0]["title"][0]:"";
 var pSearch = parameters[0]["search"]?parameters[0]["search"][0]:"";
 var pFilter = parameters[0]["filter"]?parameters[0]["filter"][0]:"";
 var pHeader = parameters[0]["header"]?paramFormat(parameters[0]["header"][0]):"";
 var pFooter = parameters[0]["footer"]?paramFormat(parameters[0]["footer"][0]):"";
 var pGroup = parameters[0]["group"]?parameters[0]["group"][0]:"";
 var pDateFormat = parameters[0]["dateFormat"]?parameters[0]["dateFormat"][0]:this.dateFormat;
 var pCustomParameter = parameters[0]["customParameter"]?parameters[0]["customParameter"][0]:"";
 var pFormat = parameters[0]["format"]?parameters[0]["format"][0]:"list";
 pFormat = formats[pFormat]?pFormat:"list"
 
 // Separator
 var pSeparator = parameters[0]["separator"]?paramFormat(parameters[0]["separator"][0]):(parameters[0]["seperator"]?paramFormat(parameters[0]["seperator"][0]):this.templates[pFormat][2])

 // Template for group
 var pGroupTemplate = this.templates[pFormat][3];
 if (parameters[0]["groupTemplate"])
 pGroupTemplate = paramFormat(parameters[0]["groupTemplate"][0])
 pGroupTemplate = pGroupTemplate.replace("$))", ">>")
 
 // Template for group footer
 var pGroupFooterTemplate = "";
 if (parameters[0]["groupFooterTemplate"])
 pGroupFooterTemplate = paramFormat(parameters[0]["groupFooterTemplate"][0])
 pGroupFooterTemplate = pGroupFooterTemplate.replace("$))", ">>")
 
 // Template for item
 var pItemTemplate = this.templates[pFormat][1];
 if (parameters[0]["itemTemplate"])
 pItemTemplate = paramFormat(parameters[0]["itemTemplate"][0])
 pItemTemplate = pItemTemplate.replace("$))", ">>").replace("%link", "%0").replace("%item", "%1").replace("%abstract", "%2").replace("%text", "%3").replace("%created", "%4").replace("%modified", "%5").replace("%modifier", "%6").replace("%group", "%7").replace("%title", "%8").replace("%tags", "%9").replace("%nolink", "%10").replace("%custom", "%11")
 // Template for footer
 var pFooterTemplate = this.templates[pFormat][4].replace("%count", "%1")

 // Get all tiddlers
 var tiddlers = store.reverseLookup("tags","excludeLists",false);

 // Sorting
 if(!pOrder)
 pOrder = "title";
 if (pOrder.match(/^\-/i)) {
 pOrder = pOrder.substr(1)
 var sortDesc = true;
 }
 // Sorting on a standard field
 if (pOrder.match(/(title)|(text)|(modifier)|(modified)|(created)|(tags)/))
  if (sortDesc)
   tiddlers.sort(function (a,b) {if(a[pOrder] == b[pOrder]) return(0); else return (a[pOrder] > b[pOrder]) ? -1 : +1; });
  else
  tiddlers.sort(function (a,b) {if(a[pOrder] == b[pOrder]) return(0); else return (a[pOrder] < b[pOrder]) ? -1 : +1; });
 else
  if (sortDesc)
   tiddlers.sort(function (a,b) {if(a.fields[pOrder] == b.fields[pOrder]) return(0); else return (a.fields[pOrder] > b.fields[pOrder]) ? -1 : +1; });
  else
   tiddlers.sort(function (a,b) {if(a.fields[pOrder] == b.fields[pOrder]) return(0); else return (a.fields[pOrder] < b.fields[pOrder]) ? -1 : +1; });

 // Header
 if (pHeader)
 listWikiText += formatItem(this.templates[pFormat][0], [pHeader], pFormat)
 
 for(var t=0; t<tiddlers.length; t++) {
 tiddler = tiddlers[t];
 if (pText!="" && tiddler.text=="") tiddler.text=store.getValue(tiddler, 'text')
 if (pTop==-1 || count<pTop) {
 if (pText=="" || tiddler.text.match(pText)) {
 if (pTitle=="" || tiddler.title.match(pTitle)) {
 if (pSearch=="" || (tiddler.title.match(pSearch) || tiddler.text.match(pSearch))) {
 if (pFilter=="" || eval(pFilter)) {
 if (pTags.length==0 || compareArrays(tiddler.tags, pTags, "all")) {
 count++;
 if (tiddler.text=="") tiddler.text=store.getValue(tiddler, 'text')
 // Grouping
 if (pGroup) {
 theGroup = eval(pGroup);
 if(theGroup != lastGroup) {
 groupCount++;firstInGroup = true;
 if (pGroupFooterTemplate && groupCount>1)
 listWikiText += pGroupFooterTemplate.replace("%group", theGroup)
 listWikiText += pGroupTemplate.replace("%group", theGroup)
 lastGroup = theGroup;
 } else
  firstInGroup = false;
 }
 // Separators
 if (count>1 && !firstInGroup) listWikiText += pSeparator;
 //Plaintext title
 var noLink = tiddler.title.match(config.textPrimitives.wikiLink)?"~" + tiddler.title:tiddler.title;
 // Custom parameter
 if (pCustomParameter)
 var custom="";
 try {
 custom = eval(pCustomParameter)
 } catch (e) {}
 // List individual tiddler
 var strItem = formatItem(pItemTemplate,["[[" + tiddler.title + "]]",count,tiddler.text.substr(0,300),tiddler.text,tiddler.created.formatString(pDateFormat),tiddler.modified.formatString(pDateFormat),tiddler.modifier,theGroup,tiddler.title,tiddler.tags.join(" "),noLink,custom], pFormat)
 for (var fld in tiddler.fields) strItem = strItem.replace('%field.' + fld, tiddler.fields[fld]);
 listWikiText += strItem
 }
 }
 }
 }
 }
 }
 }
 
 // Last group footer
 if (pGroup && pGroupFooterTemplate && count>0)
 listWikiText += pGroupFooterTemplate.replace("%group", theGroup)

 // Footer
 if (pFooter) {
 pFooter = pFooter.replace("%count", count)
 listWikiText += formatItem(pFooterTemplate, [pFooter], pFormat)
 }
 
 // Render result
 if (!parameters[0]["debug"])
 wikify(listWikiText,place, null, currentTiddler)
 else
 place.innerHTML = "<textarea style=\"width:100%;\" rows=30>" + listWikiText + "</textarea>"
 
 
 // Local functions
 
 function paramFormat(param) {
 // Allow "\n" in non evalled parameters
 return param.replace(/\\n/g, "\n");
 }
 
 function formatItem(template, values, format) {
 // Fill template with values (depending on list format)
 if (format.match(/table/) && values[0].match(/\|/))
 return ("%0\n").format(values)
 else
 return template.format(values)
 }
 
 function compareArrays(array, values, logic) {
 // Compare items in array with AND("all") or OR("any") logic
 var matches=0;
 for(var v=0; v<values.length; v++) 
 if(values[v].replace(/^\s+|\s+$/g,"").match(/^\-/) && !array.contains(values[v].replace(/^\s+|\s+$/g,"").substr(1)))
 matches++;
 else if (array.contains(values[v]))
 matches++;
 return ((logic=="all" && matches==values.length) || (logic!="all" && matches>0))
 }
 
}

String.prototype.prettyTrim = function(len,prefix,postfix) {
 var result = this.trim().replace(/\r\n/g,' ').replace(/\n/g,' ');
 if (!prefix) prefix = '';
 if (!postfix) postfix = '';
 if (result.length > len - 3)
 return prefix + result.substr(0,len) + '...' + postfix;
 else if (result.length > 0)
 return prefix + result + postfix;
 else
 return result;
}

//}}}
Files for making new tiddlers
----

/%
!folder

*''Note: Once you are done with the following instructions delete them and start your new project here.''
# Rename this tiddler to your desired project name. It will been added to your projects under the heading Projects
# Set the status above
#''You can add any number of tasks under any project by clicking __add:»subtopic__ in its toolbar above.''
#You can check the status of all projects by calling up the tiddler Projects and clicking on the appropriate button.
''Note: ''You can create any status you want by creating a tiddler with the status name then __tag it status__ and adding another button using the existing ones as a model.

!end
%/


/%
!project
<html><span style="padding-right:0.15em;" macro='monkeyTagger status'></span> </html>

*''Note: Once you are done with the following instructions delete them and start your new project here.''
# Rename this tiddler to your desired project name. It will been added to your projects under the heading Projects
# Set the status above
#''You can add any number of tasks under any project by clicking __add:»subtopic__ in its toolbar above.''
#You can check the status of all projects by calling up the tiddler Projects and clicking on the appropriate button.
''Note: ''You can create any status you want by creating a tiddler with the status name then __tag it status__ and adding another button using the existing ones as a model.

!end
%/

/%
!html
<html><hide linebreaks>

</html>
!end
%/

/%
!iframe
{{borderless center{
|vertical-align:bottom;<<tiddler ToggleRightSidebar with: "Sidebar »">>&nbsp;|<<tiddler NavButtons>>|&nbsp;open in new window[img[New window|http://img229.imageshack.us/img229/1687/extlink7226466sx5.gif][TYPE URL HERE]]|
----
<html><div align="center"><iframe  src ="TYPE URL HERE" width="100%" align="center" height="600" scrolling="auto" frameborder="0" allowtransparency style="border:none;"></iframe></div></html>}}}
!end
%/

/%
!journal2
Put your preconfigured journal information here in TiddlerMakeFile
!end
%/

/%
!object
<html><div align="center"> <object width="425" height="350"><param name="movie" value="TYPE URL HERE"></param><param name="wmode" value="transparent"></param><embed src="TYPE URL HERE" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"></embed></object></div></html>
!end
%/

/%
!table
{{floatright{<<tiddler CreateHtmlTable>>}}}{{wrappingClass{<<tabs makeTable "×" "" ""
 "Make 2" "create 2 columns" "MakeTable##2"
 3 "create 3 columns" "MakeTable##3"
 4 "create 4 columns" "MakeTable##4"
 "5 columns" "create 5 columns" "MakeTable##5">>}}}/%
!2
<html><hide linebreaks><!-- see HTMLFormattingPlugin --><form action="javascript:;"
	onsubmit="
		/* validate new title */
		var t=this.title.value;
		if (!t.length || t==this.title.defaultValue)
			{ alert('A title is required'); this.title.focus(); return false; }
		if (store.tiddlerExists(t) && !confirm(config.messages.overwriteWarning.format([t])))
			{ this.title.focus(); return false; }

		/* get current tiddler (if any) */
		var tid=store.getTiddler(t);
		var who=tid?tid.modifier:config.options.txtUserName;
		var when=tid?tid.modified:new Date();
		var txt=tid?tid.text:'';
		var tags=tid?tid.tags:[];
		var fields=tid?tid.fields:{};

		/* get form values and construct new tiddler text */
		var fmt='|%0|%1|\n%2\n';
		var newtxt=fmt.format([this.field1.value,this.field2.value,this.field3.value]);

		/* insert new text at marker (or end, if no marker) */
		var marker='/*MARKER*/';
		if (txt.indexOf(marker)==-1) txt=txt+newtxt;
		else txt=txt.replace(new RegExp(marker.escapeRegExp()),newtxt+marker);

		/* get new tags and add to existing tags (if any) */
		var newtags=this.tagsfield.value.readBracketedList();
		for (var i=0; i<newtags.length; i++) tags.pushUnique(newtags[i]);

		/* write and show tiddler */
		store.saveTiddler(t,t,txt, who, when, tags, fields);
		story.displayTiddler(story.findContainingTiddler(this),t);
		return false;">
Title <input name="title" value="enter a title" onfocus="this.select()">
Field1 <input name="field1" value="field1 value" onfocus="this.select()">
Field2 <input name="field2" value="field2 value" onfocus="this.select()"><br>
<textarea name="field3" rows=5 style="width:100%;">field3 value goes here</textarea><br>
<input name="tagsfield" value="space-separated tags go here" style="width:100%;"><br>
<input type="submit" value="create tiddler">
</form></html>
!3
<html><hide linebreaks><form action="javascript:;"
	onsubmit="
		var t=this.title.value;
		if (!t.length || t==this.title.defaultValue)
			{ alert('A title is required'); this.title.focus(); return false; }
		if (store.tiddlerExists(t) && !confirm(config.messages.overwriteWarning.format([t])))
			{ this.title.focus(); return false; }
var txt='|%0|%1|%2|\n%3'.format([this.field1.value,this.field2.value,this.field3.value,this.field4.value]);
		var tags=this.tagsfield.value.readBracketedList();
		store.saveTiddler(t,t,txt, config.options.txtUserName, new Date(), tags, {});
		story.displayTiddler(story.findContainingTiddler(this),t);
		return false;">
<input name="title" value="enter a title" style="width:23%;" onfocus="this.select()">
<input name="field1" value="field value 1" style="width:23%;" onfocus="this.select()">
<input name="field2" value="field value 2" style="width:23%;" onfocus="this.select()">
<input name="field3" value="field value 3" style="width:23%;" onfocus="this.select()"><br>
<textarea name="field4" rows=5 style="width:99%;"></textarea><br>
<input name="tagsfield" value="space-separated tags go here" style="width:99%;"><br>
<input type="submit" value="create tiddler">
</form></html>
!4
<html><hide linebreaks><form action="javascript:;"
	onsubmit="
		var t=this.title.value;
		if (!t.length || t==this.title.defaultValue)
			{ alert('A title is required'); this.title.focus(); return false; }
		if (store.tiddlerExists(t) && !confirm(config.messages.overwriteWarning.format([t])))
			{ this.title.focus(); return false; }
var txt='|%0|%1|%2|%3|\n%4'.format([this.field1.value,this.field2.value,this.field3.value,this.field4.value,this.field5.value]);
		var tags=this.tagsfield.value.readBracketedList();
		store.saveTiddler(t,t,txt, config.options.txtUserName, new Date(), tags, {});
		story.displayTiddler(story.findContainingTiddler(this),t);
		return false;">
<input name="title" value="enter a title" style="width:18%;" onfocus="this.select()">
<input name="field1" value="field value 1" style="width:18%;" onfocus="this.select()">
<input name="field2" value="field value 2" style="width:18%;" onfocus="this.select()">
<input name="field3" value="field value 3" style="width:18%;" onfocus="this.select()">
<input name="field4" value="field value 4" style="width:18%;" onfocus="this.select()"><br>
<textarea name="field5" rows=5 style="width:99%;"></textarea><br>
<input name="tagsfield" value="space-separated tags go here" style="width:99%;"><br>
<input type="submit" value="create tiddler">
</form></html>
!5
<html><hide linebreaks><form action="javascript:;"
	onsubmit="
		var t=this.title.value;
		if (!t.length || t==this.title.defaultValue)
			{ alert('A title is required'); this.title.focus(); return false; }
		if (store.tiddlerExists(t) && !confirm(config.messages.overwriteWarning.format([t])))
			{ this.title.focus(); return false; }
		/* extract field values and construct new tiddler text */
var txt='|%0|%1|%2|%3|%4|\n%5'.format([this.field1.value,this.field2.value,this.field3.value,this.field4.value,this.field5.value,this.field6.value]);
		/* extract and parse space-separated, bracketed tags into array of strings */
		var tags=this.tagsfield.value.readBracketedList();
		/* create and show new tiddler */
		store.saveTiddler(t,t,txt, config.options.txtUserName, new Date(), tags, {});
		story.displayTiddler(story.findContainingTiddler(this),t);
		return false;">
<input name="title" value="enter a title" style="width:15%;" onfocus="this.select()">
<input name="field1" value="field value 1" style="width:15%;" onfocus="this.select()">
<input name="field2" value="field value 2" style="width:15%;" onfocus="this.select()">
<input name="field3" value="field value 3" style="width:15%;" onfocus="this.select()">
<input name="field4" value="field value 4" style="width:15%;" onfocus="this.select()">
<input name="field5" value="field value 5" style="width:15%;" onfocus="this.select()"><br>
<textarea name="field6" rows=5 style="width:99%;"></textarea><br>
<input name="tagsfield" value="space-separated tags go here" style="width:99%;"><br>
<input type="submit" value="create tiddler">
</form></html>
!0
%/


/%
!tabs
<<tabs tabsCookie
[[Intro ]] "tooltip 1" [[MakeTabsIntro]]
[[TabTwoName]] "tooltip 2" [[tiddler two]]
[[TabThreeName]] "tooltip 3" [[Tiddler three]]
[[TabFourName]] "tooltip 3" [[Tiddler four]] 
>>
!end


/%
!tabtags
<<forEachTiddler
    where
       'tiddler.tags.contains(context.inTiddler.title)'

    sortBy
       'tiddler.title.toUpperCase()'

    write '" [["+tiddler.title+" ]] \"view ["+tiddler.title+"]\" [["+tiddler.title+"]] "'

        begin '"<<tabs txtMyAutoTab "'

        end '">"+">"'

        none '"//No tiddler tagged with \"Groceries\"//"'
>>

!end



%/

<<tiddler ShowLink with: [[to do]]>> 
|~ViewToolbar|closeTiddler closeOthers copyTiddler deleteTiddler  +editTiddler  >  fields syncing permalink references jump <|
|~EditToolbar|+saveTiddler -cancelTiddler deleteTiddler|
/***
Contains the stuff you need to use Tiddlyspot
Note you must also have UploadPlugin installed
***/
//{{{

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

// 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)

// 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 Guides|http://tiddlywikiguides.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/]], [[announcements|http://announce.tiddlyspot.com/]], [[blog|http://tiddlyspot.com/blog/]], 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")

});
//}}}
<<upload http://linuxadmin.tiddlyspot.com/store.cgi index.html . .  linuxadmin>><html><a href='http://linuxadmin.tiddlyspot.com/download' class='button'>download</a></html>
{{{
platform set power state on
}}}
{{{
platform set power state
}}}
Format:
{{{
platform set power state [{-W|--nowait}] [{-f|--forced}]
[{-t|--timeout} TIME] {off|on|cycle}
}}}
Ultimate Deployment Appliance
!For Openfiler 2.3
{{{
web server: 	192.168.1.104
Directory:	fedora/fc6
}}}

!For ESX 3.5
{{{
url --url=http://192.168.1.104/esx/esx301
}}}
Ultimate Deployment Appliance
Version 1.4

0. Introduction

The Ultimate Deployment Appliance will help you deploy your servers or workstations. The goal of the project is to be able to fully deploy a computer by booting to PXE and choosing the prepared operating system template. Of course this is already possible, but as I discovered, it takes a lot of time to setup a service like this. This appliance will do it for you. Windows, Linux (Fedora, Ubuntu, Suse), Solaris X86 and VMWare ESX 2.x.x and 3.x.x are supported.

Connect your laptop to an uninstalled system with a network cross-cable, boot the server up with PXE and choose the operating system template you have prepared on your laptop. This appliance is geared towards totally unattended installations, so after choosing the template you can sit back and relax.

The appliance will mount the ISO files of your operating system install CD/DVD's and import only a very small subset of the files required for PXE booting other clients. Installation files and packages are served by the appliance right from the ISO images (samba/nfs/http).

1. Getting Started
1.1 Default settings
{{{

    * root password
      The default root password for this appliance is: test
      You can change the root password from the command prompt.

    * admin password
      The default admin password for the webinterface of this appliance is: admin
      You can change the admin password using the web-interface

    * IP Configuration
      IP Address: 10.0.0.104
      Netmask: 255.0.0.0
      Gateway: 10.0.0.1
      You can change the IP settings using the web-interface

    * DHCP Server
      Range: 10.0.0.100 - 10.0.0.200
      You can change the DHCP settings using the web-interface.
}}}
1.2 Before you start
Using this appliance is at your own risk.


   1. Make sure that you do not have other DHCP servers on your network (or live with the dangers)
   2. Fire up the Ultimate Deployment Appliance
   3. Log in on the appliance console as root (default user is root, password see above)
   4. Change the root password (use passwd)
   5. Browse to http://10.0.0.104
   6. Login as admin (default password see above)
   7. Change the admin password from the webinterface
   8. Check/change the IP settings (Make sure no other computers on the network use the same IP)
   9. Check/change the DHCP settings

1.3 Hints and tips


   1. It's easy to hack, break, misuse etc. this appliance. If you find a problem help me fix it or don't complain.
   2. Use Filezilla for downloading your favorite Linux DVD iso file, it can handle files larger than 2 gb.
   3. Use 1-disk distributions, since the appliance can't change disks for you. Windows is usually shipped as 1 CD-distributions, but Linux comes with many packages, so to get a good install get DVD ISO's.

2. Software and support

2.1 Supported operating systems
The following table shows what operating systems can be remotely installed over the network using the Ultimate Deployment Appliance.
{{{
    * Linux Fedora Core 4 (Retrieves both the kickstart file and the installation packages over http)
    * Linux Fedora Core 5 (Retrieves both the kickstart file and the installation packages over http)
    * Windows XP Professional (Home edition is not tested, but might work)
    * Windows 2000 Server (Workstation and Andvanced server are not tested, but may work)
    * Windows 2003 Enterprise Edition (Standard and web edition are not tested but may work)
    * Ubuntu Linux 6.06 LTS (Uses kickstart)
    * Suse Linux 10.0, 10.1 and 10.2 (uses Autoyast)
    * Solaris 10 X86 (Uses Jumpstart)
    * VMWare ESX 2.5.x and 3.x.x (Uses Kickstart)

    * BartPE (Live CD over PXE)
    * Recovery Is Possible (Live CD over PXE)
    * Damn Small Linux (Live CD over PXE)
    * GParted (Live CD over PXE)
}}}
2.2 Used software and information
{{{
   1. Fedora Core 4
   2. RIS for linux package
   3. Apache
   4. pxelinux
   5. Cabextract
   6. Samba
   7. tftpd (with case-insensitive patch from the RIS for linux package)
   8. dhcpd
}}}
For more information go to the website at:
http://www.ultimatedeployment.org

Last updated: 01/12/2008

Operating system: Fedora Core 5

Applications installed:
{{{
RIS for linux package Apache pxelinux Cabextract Samba tftpd (with case-insensitive patch from the RIS for linux package) dhcpd
}}}

VMware Tools installed: No

Size: 280 MB
Torrent available: Yes
(What is BitTorrent?)
{{{
Primary account
Username: root
Password: test
}}}
Submitted by: _the_dude_ 
!Passwords
!!''root password''
The default root password for this appliance is: test

!!Web ''admin password''
The default admin password for the webinterface of this appliance is: admin
You can change the admin password using the web-interface 

!Network
!!''IP Configuration''
IP Address: 10.0.0.104
Netmask: 255.0.0.0
Gateway: 10.0.0.1
Nameserver: 10.0.0.138
You can change the IP settings using the web-interface 

!!''DHCP Server''
Range: 10.0.0.100 - 10.0.0.200
You can change the DHCP settings using the web-interface.
user: root
pwd: admin

Web:
user: admin
pwd:  
root: secret
test: test   <- user
Install network in [[bridged mode]] to allow extenal installations.

By default, the UDA appliance come in [[host mode]].
OSSP uuid
OSSP uuid is an ISO-C and Perl application programming interface (API)
and corresponding command line interface (CLI) for the generation of
DCE 1.1 and ISO/IEC 11578:1996 compliant Universally Unique Identifier
(UUID). It supports DCE 1.1 variant UUIDs of version 1 (time and node
based), version 3 (name based) and version 4 (random number based).

UUIDs are 128 bit numbers which are intended to have a high likelihood
of uniqueness over space and time and are computationally difficult
to guess. They are globally unique identifiers which can be locally
generated without contacting a global registration authority. UUIDs
are intended as unique identifiers for both mass tagging objects
with an extremely short lifetime and to reliably identifying very
persistent objects across a network.

This package contains the Universally Unique Identifier Command-Line Tool.

Dapper
{{{
# interactive
text
install
url --url=http://10.0.0.104/ubuntu/ub606s/
lang en_US.UTF-8
langsupport --default=en_US.UTF-8 en_US.UTF-8
keyboard us
skipx
network --device eth0 --bootproto dhcp
rootpw secret
user test --fullname "Test User" --password test
firewall --disabled
selinux --disabled
authconfig --enableshadow --enablemd5
timezone Europe/Amsterdam
zerombr
bootloader --location=mbr 
clearpart --linux --all --drives=hda
part /boot --fstype ext3 --size=100 --asprimary --ondisk=hda
part swap --fstype swap --size=256 --grow --maxsize=512 --ondisk=hda
part / --fstype ext3 --size=1 --grow --asprimary --ondisk=hda
reboot

%pre

%packages
kernel
e2fsprogs
grub

%post
}}}
Edgy Eft
{{{
# interactive
text
install
url --url=http://10.0.0.104/ubuntu/ub610/
lang en_US.UTF-8
langsupport --default=en_US.UTF-8 en_US.UTF-8
keyboard us
skipx
network --device eth0 --bootproto dhcp
rootpw secret
user test --fullname "Test User" --password test
firewall --disabled
selinux --disabled
authconfig --enableshadow --enablemd5
timezone Europe/Amsterdam
zerombr
bootloader --location=mbr 
clearpart --linux --all --drives=hda
part /boot --fstype ext3 --size=100 --asprimary --ondisk=hda
part swap --fstype swap --size=256 --grow --maxsize=512 --ondisk=hda
part / --fstype ext3 --size=1 --grow --asprimary --ondisk=hda
reboot

%pre

%packages
kernel
e2fsprogs
grub

%post
}}}
Feisty Fawn
Gutsy
Installs with SVN resinding under {{{/home/superuser/Downloads/SVN}}}
{{{
sudo apt-get install xcompmgr transset
}}}

This make Gnome-do docky work
7.04 Feisty
7.10  Gutsy
8.04  Hardy
8.1   Intrepid
9.04  Jaunty

Version 1.4
{{{
Importing OS fc5 from CentOS-5.1-i386-bin-DVD.iso on share DISK2
Unmounting old Share
umount: /var/public/www/fedora/fc5: not found OK
Creating directory /var/public/www/fedora
OK Setting Permissions: OK

Creating directory /var/public/www/fedora/fc5
OK Setting Permissions: OK

Creating directory /var/public/tftproot
Directory /var/public/tftproot exists, good
OK Setting Permissions: OK

Mounting isofile /var/public/smbmount/DISK2/CentOS-5.1-i386-bin-DVD.iso on /var/public/www/fedora/fc5
OK

Adding iso file to fstab
Adding the line to fstab
OK

Importing file /var/public/www/fedora/fc5/images/pxeboot/vmlinuz to /var/public/tftproot/vmlinuz.fc5
OK
Importing file /var/public/www/fedora/fc5/images/pxeboot/initrd.img to /var/public/tftproot/initrd.fc5

OKDONE
}}}
{{{
vmware-uninstall-tools.pl
}}}
Move the downloaded file to /tmp:
{{{
mv webmin-1.490.tar.gz /tmp
cd /tmp
}}}
unpack it:
{{{
tar xzvf webmin-1.490.tar.gz
}}}

A directory {{{/tmp/webmin-1.441}}} will be created.
| !date | !user | !location | !storeUrl | !uploadDir | !toFilename | !backupdir | !origin |
| 27/01/2010 09:55:43 | AlfonsoReyes | [[LinuxAdmin.html|file:///home/alfonso/Documents/Databases/LinuxAdmin.html]] | [[store.cgi|http://linuxadmin.tiddlyspot.com/store.cgi]] | . | [[index.html | http://linuxadmin.tiddlyspot.com/index.html]] | . |
| 02/02/2010 18:08:47 | Alfonso Reyes | [[LinuxAdmin.html|file:///home/alfonso/Documents/Databases/LinuxAdmin.html]] | [[store.cgi|http://linuxadmin.tiddlyspot.com/store.cgi]] | . | [[index.html | http://linuxadmin.tiddlyspot.com/index.html]] | . |
| 16/03/2010 11:35:22 | Alfonso Reyes | [[/|http://linuxadmin.tiddlyspot.com/]] | [[store.cgi|http://linuxadmin.tiddlyspot.com/store.cgi]] | . | [[index.html | http://linuxadmin.tiddlyspot.com/index.html]] | . |
| 16/03/2010 11:39:22 | Alfonso Reyes | [[/|http://linuxadmin.tiddlyspot.com/]] | [[store.cgi|http://linuxadmin.tiddlyspot.com/store.cgi]] | . | [[index.html | http://linuxadmin.tiddlyspot.com/index.html]] | . |
| 16/03/2010 11:39:53 | Alfonso Reyes | [[/|http://linuxadmin.tiddlyspot.com/]] | [[store.cgi|http://linuxadmin.tiddlyspot.com/store.cgi]] | . | [[index.html | http://linuxadmin.tiddlyspot.com/index.html]] | . |
/***
|''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"
	});
*/
//}}}

/***
|''Name:''|UploadPlugin|
|''Description:''|Save to web a TiddlyWiki|
|''Version:''|4.1.0|
|''Date:''|May 5, 2007|
|''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 (#3125)|
|''Requires:''|PasswordOptionPlugin|
***/
//{{{
version.extensions.UploadPlugin = {
	major: 4, minor: 1, revision: 0,
	date: new Date("May 5, 2007"),
	source: 'http://tiddlywiki.bidix.info/#UploadPlugin',
	author: 'BidiX (BidiX (at) bidix (dot) info',
	coreVersion: '2.2.0 (#3125)'
};

//
// 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
		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}
				
			]);
	},
	refreshOptions: function(listWrapper) {
		var uploadOpts = [
			"txtUploadUserName",
			"pasUploadPassword",
			"txtUploadStoreUrl",
			"txtUploadDir",
			"txtUploadFilename",
			"txtUploadBackupDir",
			"chkUploadLog",
			"txtUploadLogMaxLine",
			]
		var opts = [];
		for(i=0; i<uploadOpts.length; i++) {
			var opt = {};
			opts.push()
			opt.option = "";
			n = uploadOpts[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 = 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,null,null,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 = Array(uploadParams[0],rssPath,uploadParams[2],'',uploadParams[4],uploadParams[5]);
		bidix.upload.httpUpload(rssUploadParams,convertUnicodeToUTF8(generateRss()),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 == httpStatus.NotFound)
			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; 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');


/* don't want this for tiddlyspot sites

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

*/


//}}}


/***
!User this for tables without borders
***/
.borderlessL, .borderlessL table, .borderlessL td, .borderlessL tr, .borderlessL th, .borderlessL tbody { border:0 !important; margin:0 !important; padding:0 !important; td.vertical-align:top !important;margin-left: 0 !important; margin-right: auto !important; padding:7px !important;} 

/***
!This will allow to stretch images
***/
.stretch img { 
	width:100%; 
}

.tuduSlider .button{ display: block; color: #eeeeff; text-align: left;
font-weight: bold;
border-top: solid 1px #bbb;
border-left: solid 1px #bbb;
border-right: solid 1px #888;
border-bottom: solid 1px #888;
background: #550099;
margin-left: -0.3em;
padding: 0 1px 1px 20px;
}

.tuduSlider .button:hover{
border-top: solid 1px #777;
border-left: solid 1px #777;
border-right: solid 1px #bbb;
border-bottom: solid 1px #bbb;
background: #888;
padding: 1px 0 0 21px;
}
From the command line as root:
{{{
# cpan
}}}
Follow the steps to configure.

After finishing the installation run this:
{{{
cpan> install Net::LDAP
}}}
!!!Example:
In a browser go to:
{{{
http://nslu2:631/
}}}
PROBLEM:
VMware Server 2 (hostd) crashes on CentOS 5 after upgrading to the latest releases of glibc and glibc-common

http://www.davidmarkley.com/vmware/vmware-server-2-on-centos-5-4

vnc4server
<!--{{{-->
<div class='right'><span macro='newHere label:"++" '></span></div>
<div class='toolbar' macro='toolbar [[ToolbarCommands::ViewToolbar]]'></div>
<div class="tagglyTagged" macro="tags"></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='viewer' macro='view text wikified'></div>
[[ReferencesViewTemplate]]
<div class="tagglyTagging" macro="tagglyTagging"></div>
<div class='tagClear'></div>
<!--}}}-->

Sometime the CD-ROM cause the virtual machine to freeze. The best settings to avoid this are:

{{{
Device Status
	Connected:		No
	Connect at power on:	No
Connection:
	Use physical drive:	Yes
	Location:		Host
	Autodetect:		Yes
}}}
 [/lib/modules/2.6.20-16-generic/build/include] 

[/var/lib/vmware/Virtual Machines] 
Port = 903
If you are using the server edition then you also need to install the following 3 X libraries and their dependencies.

*  libxtst6
*  libxt6
*  libxrender1
 1. Download the VMware Server Binary (.tar.gz) package for Linux from the [WWW] VMware website. You will also need to register to receive the free-of-charge serial number which is required during installation.
 2.  Enable the universe software channel (see Repositories for instructions).
 3.   (Optional) switch from 386 kernel to 686 kernel and reboot
 4.   (Optional) If you using Edubuntu as your host OS then you might want to un-install

* SchoolTool (aptitude remove schooltool) Since it uses 119M in its idle state.
* LTSP (aptitude remove ltsp-server-standalone) So you can remove DHCPD
* DHCPD (aptitude remove dhcp3-server) How many DHCP servers do you need ?
 5.    Install the following packages:
 * build-essentials
 * linux-headers
 * xinetd
 6.

{{{
sudo aptitude install build-essential linux-headers-`uname -r` xinetd
}}}
       
The second package is the linux-headers- package for your currently-installed kernel; the uname -r part will automatically insert your kernel version for you. to install two required packages.

If you are using the server edition then you also need to install the following 3 X libraries and their dependencies.

 *  libxtst6
*   libxt6
*   libxrender1

{{{
sudo aptitude install libxtst6 libxt6 libxrender1
}}}

 1.

      Once you have installed the required packages, you can now begin the VMware installer. Open a Terminal and type the following:

cd <temporary-location-with-disk-space>
tar zxvf /<download-location>/VMware-server-<xxx>.tar.gz
cd vmware-server-distrib/
sudo ./vmware-install.pl

    *

      Replace <download-location> with the path of the directory where you saved the archive, and replace <xxx> with the version number of the package you downloaded. The VMware installer program will be started in the Terminal window.

   6.

      Follow the on-screen instructions. You can leave most of the options as their defaults, by pressing the Return key and not typing anything after each question.
vmnet
vmmon
{{{
Starting VMware services:

   Virtual machine monitor                                             done
   Virtual ethernet                                                    done
   Bridged networking on /dev/vmnet0                                   done
   Host-only networking on /dev/vmnet1 (background)                    done
   Host-only networking on /dev/vmnet8 (background)                    done
   NAT service on /dev/vmnet8                                          done
}}}
{{{
sudo aptitude install build-essential linux-headers-`uname -r`

sudo mv /usr/lib/vmware/modules/binary /usr/lib/vmware/modules/binary.old

sudo vmware-modconfig --console --install-all
}}}

http:/192.168.1.61/websvn
!Install Dependencies
{{{
sudo apt-get install libnet-ssleay-perl libauthen-pam-perl libio-pty-perl libmd5-perl
}}}
!Download Webmin
download from webmin.com 
!Install
install with dpkg.

{{{
yum -y install perl-Convert-ASN1 
}}}
{{{
yum -y install perl-LDAP
}}}
This is a personal wiki that focus on the basics of modeling and simulations oriented to petroleum production engineering.

Each tiddler describes some bit of of computational physics and simulations while linking it to everything else. The tiddlers are organized by [[Tags]] in an expandable list to the left of this window. Or you can look up subjects on the menu on the left sidebar or type any phrase to search for in the empty field to the left (the serach is very powerful).  From any tiddler you can follow links to others or click in the bottom list of tiddlers that link to it. Or you can see which tiddlers have been edited recently, under "[[Latest|TabTimeline]]." That's about it for basic orientation &mdash; you can read more [[About]] what you're looking at, or pick it up as you go. This site is best viewed with TeX fonts installed on your computer, rather than image fonts.

The last two tiddlers I worked on are below.
The site is principally authored by me, [[Alfonso Reyes]]. 
<script>return config.options.txtUserName</script>, <<tiddler SiteTitle>> - <<tiddler SiteSubtitle>> v<<version>> - Last Modified: <script>document.write(document.lastModified);</script>
Place the following script in /usr/local/bin and make it executable.

{{{
#!/bin/bash
wine "C:\Program Files\Microsoft Office\Office12\winword.exe" "`winepath -w "$@"`"
}}}

Reference:
http://ubuntuforums.org/archive/index.php/t-586846.html
XAMPP is an easy to (optionally) install Apache distribution containing MySQL, PHP and Perl. XAMPP is really very easy to install and to use - just download, extract and start. This includes XAMPP Lite, an additional extra small XAMPP edition. It's the successor of the old MiniXAMPP. Get a fully functional web server within minutes under Windows, Mac OS X, Linux and Solaris

Source: http://www.ohloh.net/tags/hosting
/***
|''Name:''|YourSearchPlugin|
|''Version:''|2.1.3 (2008-04-16)|
|''Source:''|http://tiddlywiki.abego-software.de/#YourSearchPlugin|
|''Author:''|UdoBorkowski (ub [at] abego-software [dot] de)|
|''Licence:''|[[BSD open source license (abego Software)|http://www.abego-software.de/legal/apl-v10.html]]|
|''Copyright:''|&copy; 2005-2008 [[abego Software|http://www.abego-software.de]]|
|''~CoreVersion:''|2.1.0|
|''Community:''|[[del.icio.us|http://del.icio.us/post?url=http://tiddlywiki.abego-software.de/index.html%23YourSearchPlugin]]|
|''Browser:''|Firefox 1.0.4+; Firefox 1.5; ~InternetExplorer 6.0|
!About YourSearch
YourSearch gives you a bunch of new features to simplify and speed up your daily searches in TiddlyWiki. It seamlessly integrates into the standard TiddlyWiki search: just start typing into the 'search' field and explore!

For more information see [[Help|YourSearch Help]].
!Compatibility
This plugin requires TiddlyWiki 2.1. 
Check the [[archive|http://tiddlywiki.abego-software.de/archive]] for ~YourSearchPlugins supporting older versions of TiddlyWiki.
!Source Code
***/
/***
This plugin's source code is compressed (and hidden). Use this [[link|http://tiddlywiki.abego-software.de/archive/YourSearchPlugin/Plugin-YourSearch-src.2.1.3.js]] to get the readable source code.
***/
///%
if(!version.extensions.YourSearchPlugin){version.extensions.YourSearchPlugin={major:2,minor:1,revision:3,source:"http://tiddlywiki.abego-software.de/#YourSearchPlugin",licence:"[[BSD open source license (abego Software)|http://www.abego-software.de/legal/apl-v10.html]]",copyright:"Copyright (c) abego Software GmbH, 2005-2008 (www.abego-software.de)"};if(!window.abego){window.abego={};}
if(!Array.forEach){Array.forEach=function(_1,_2,_3){for(var i=0,len=_1.length;i<len;i++){_2.call(_3,_1[i],i,_1);}};Array.prototype.forEach=function(_5,_6){for(var i=0,len=this.length;i<len;i++){_5.call(_6,this[i],i,this);}};}
abego.toInt=function(s,_9){if(!s){return _9;}
var n=parseInt(s);return(n==NaN)?_9:n;};abego.createEllipsis=function(_b){var e=createTiddlyElement(_b,"span");e.innerHTML="&hellip;";};abego.shallowCopy=function(_d){if(!_d){return _d;}
var _e={};for(var n in _d){_e[n]=_d[n];}
return _e;};abego.copyOptions=function(_10){return!_10?{}:abego.shallowCopy(_10);};abego.countStrings=function(_11,s){if(!s){return 0;}
var len=s.length;var n=0;var _15=0;while(1){var i=_11.indexOf(s,_15);if(i<0){return n;}
n++;_15=i+len;}
return n;};abego.getBracedText=function(_17,_18,_19){if(!_18){_18=0;}
var re=/\{([^\}]*)\}/gm;re.lastIndex=_18;var m=re.exec(_17);if(m){var s=m[1];var _1d=abego.countStrings(s,"{");if(!_1d){if(_19){_19.lastIndex=re.lastIndex;}
return s;}
var len=_17.length;for(var i=re.lastIndex;i<len&&_1d;i++){var c=_17.charAt(i);if(c=="{"){_1d++;}else{if(c=="}"){_1d--;}}}
if(!_1d){if(_19){_19.lastIndex=i-1;}
return _17.substring(m.index+1,i-1);}}};abego.select=function(_21,_22,_23,_24){if(!_24){_24=[];}
_21.forEach(function(t){if(_22.call(_23,t)){_24.push(t);}});return _24;};abego.consumeEvent=function(e){if(e.stopPropagation){e.stopPropagation();}
if(e.preventDefault){e.preventDefault();}
e.cancelBubble=true;e.returnValue=true;};abego.TiddlerFilterTerm=function(_27,_28){if(!_28){_28={};}
var _29=_27;if(!_28.textIsRegExp){_29=_27.escapeRegExp();if(_28.fullWordMatch){_29="\\b"+_29+"\\b";}}
var _2a=new RegExp(_29,"m"+(_28.caseSensitive?"":"i"));this.tester=new abego.MultiFieldRegExpTester(_2a,_28.fields,_28.withExtendedFields);};abego.TiddlerFilterTerm.prototype.test=function(_2b){return this.tester.test(_2b);};abego.parseNewTiddlerCommandLine=function(s){var m=/(.*?)\.(?:\s+|$)([^#]*)(#.*)?/.exec(s);if(!m){m=/([^#]*)()(#.*)?/.exec(s);}
if(m){var r;if(m[3]){var s2=m[3].replace(/#/g,"");r=s2.parseParams("tag");}else{r=[[]];}
var _30=m[2]?m[2].trim():"";r.push({name:"text",value:_30});r[0].text=[_30];return{title:m[1].trim(),params:r};}else{return{title:s.trim(),params:[[]]};}};abego.parseTiddlerFilterTerm=function(_31,_32,_33){var re=/\s*(?:(?:\{([^\}]*)\})|(?:(=)|([#%!])|(?:(\w+)\s*\:(?!\/\/))|(?:(?:("(?:(?:\\")|[^"])+")|(?:\/((?:(?:\\\/)|[^\/])+)\/)|(\w+\:\/\/[^\s]+)|([^\s\)\-\"]+)))))/mg;var _35={"!":"title","%":"text","#":"tags"};var _36={};var _37;re.lastIndex=_32;while(1){var i=re.lastIndex;var m=re.exec(_31);if(!m||m.index!=i){throw"Word or String literal expected";}
if(m[1]){var _3a={};var _3b=abego.getBracedText(_31,0,_3a);if(!_3b){throw"Invalid {...} syntax";}
var f=Function("tiddler","return ("+_3b+");");return{func:f,lastIndex:_3a.lastIndex,markRE:null};}
if(m[2]){_37=true;}else{if(m[3]){_36[_35[m[3]]]=1;}else{if(m[4]){_36[m[4]]=1;}else{var _3d=m[6];var _3e=m[5]?window.eval(m[5]):m[6]?m[6]:m[7]?m[7]:m[8];var _33=abego.copyOptions(_33);_33.fullWordMatch=_37;_33.textIsRegExp=_3d;var _3f=[];for(var n in _36){_3f.push(n);}
if(_3f.length==0){_33.fields=_33.defaultFields;}else{_33.fields=_3f;_33.withExtendedFields=false;}
var _41=new abego.TiddlerFilterTerm(_3e,_33);var _42=_3d?_3e:_3e.escapeRegExp();if(_42&&_37){_42="\\b"+_42+"\\b";}
return{func:function(_43){return _41.test(_43);},lastIndex:re.lastIndex,markRE:_42?"(?:"+_42+")":null};}}}}};abego.BoolExp=function(s,_45,_46){this.s=s;var _47=_46&&_46.defaultOperationIs_OR;var _48=/\s*(?:(\-|not)|(\())/gi;var _49=/\s*\)/g;var _4a=/\s*(?:(and|\&\&)|(or|\|\|))/gi;var _4b=/\s*[^\)\s]/g;var _4c=/\s*(\-|not)?(\s*\()?/gi;var _4d;var _4e=function(_4f){_4c.lastIndex=_4f;var m=_4c.exec(s);var _51;var _52;if(m&&m.index==_4f){_4f+=m[0].length;_51=m[1];if(m[2]){var e=_4d(_4f);_49.lastIndex=e.lastIndex;if(!_49.exec(s)){throw"Missing ')'";}
_52={func:e.func,lastIndex:_49.lastIndex,markRE:e.markRE};}}
if(!_52){_52=_45(s,_4f,_46);}
if(_51){_52.func=(function(f){return function(_55){return!f(_55);};})(_52.func);_52.markRE=null;}
return _52;};_4d=function(_56){var _57=_4e(_56);while(1){var l=_57.lastIndex;_4a.lastIndex=l;var m=_4a.exec(s);var _5a;var _5b;if(m&&m.index==l){_5a=!m[1];_5b=_4e(_4a.lastIndex);}else{try{_5b=_4e(l);}
catch(e){return _57;}
_5a=_47;}
_57.func=(function(_5c,_5d,_5e){return _5e?function(_5f){return _5c(_5f)||_5d(_5f);}:function(_60){return _5c(_60)&&_5d(_60);};})(_57.func,_5b.func,_5a);_57.lastIndex=_5b.lastIndex;if(!_57.markRE){_57.markRE=_5b.markRE;}else{if(_5b.markRE){_57.markRE=_57.markRE+"|"+_5b.markRE;}}}};var _61=_4d(0);this.evalFunc=_61.func;if(_61.markRE){this.markRegExp=new RegExp(_61.markRE,_46.caseSensitive?"mg":"img");}};abego.BoolExp.prototype.exec=function(){return this.evalFunc.apply(this,arguments);};abego.BoolExp.prototype.getMarkRegExp=function(){return this.markRegExp;};abego.BoolExp.prototype.toString=function(){return this.s;};abego.MultiFieldRegExpTester=function(re,_63,_64){this.re=re;this.fields=_63?_63:["title","text","tags"];this.withExtendedFields=_64;};abego.MultiFieldRegExpTester.prototype.test=function(_65){var re=this.re;for(var i=0;i<this.fields.length;i++){var s=store.getValue(_65,this.fields[i]);if(typeof s=="string"&&re.test(s)){return this.fields[i];}}
if(this.withExtendedFields){return store.forEachField(_65,function(_69,_6a,_6b){return typeof _6b=="string"&&re.test(_6b)?_6a:null;},true);}
return null;};abego.TiddlerQuery=function(_6c,_6d,_6e,_6f,_70){if(_6e){this.regExp=new RegExp(_6c,_6d?"mg":"img");this.tester=new abego.MultiFieldRegExpTester(this.regExp,_6f,_70);}else{this.expr=new abego.BoolExp(_6c,abego.parseTiddlerFilterTerm,{defaultFields:_6f,caseSensitive:_6d,withExtendedFields:_70});}
this.getQueryText=function(){return _6c;};this.getUseRegExp=function(){return _6e;};this.getCaseSensitive=function(){return _6d;};this.getDefaultFields=function(){return _6f;};this.getWithExtendedFields=function(){return _70;};};abego.TiddlerQuery.prototype.test=function(_71){if(!_71){return false;}
if(this.regExp){return this.tester.test(_71);}
return this.expr.exec(_71);};abego.TiddlerQuery.prototype.filter=function(_72){return abego.select(_72,this.test,this);};abego.TiddlerQuery.prototype.getMarkRegExp=function(){if(this.regExp){return"".search(this.regExp)>=0?null:this.regExp;}
return this.expr.getMarkRegExp();};abego.TiddlerQuery.prototype.toString=function(){return(this.regExp?this.regExp:this.expr).toString();};abego.PageWiseRenderer=function(){this.firstIndexOnPage=0;};merge(abego.PageWiseRenderer.prototype,{setItems:function(_73){this.items=_73;this.setFirstIndexOnPage(0);},getMaxPagesInNavigation:function(){return 10;},getItemsCount:function(_74){return this.items?this.items.length:0;},getCurrentPageIndex:function(){return Math.floor(this.firstIndexOnPage/this.getItemsPerPage());},getLastPageIndex:function(){return Math.floor((this.getItemsCount()-1)/this.getItemsPerPage());},setFirstIndexOnPage:function(_75){this.firstIndexOnPage=Math.min(Math.max(0,_75),this.getItemsCount()-1);},getFirstIndexOnPage:function(){this.firstIndexOnPage=Math.floor(this.firstIndexOnPage/this.getItemsPerPage())*this.getItemsPerPage();return this.firstIndexOnPage;},getLastIndexOnPage:function(){return Math.min(this.getFirstIndexOnPage()+this.getItemsPerPage()-1,this.getItemsCount()-1);},onPageChanged:function(_76,_77){},renderPage:function(_78){if(_78.beginRendering){_78.beginRendering(this);}
try{if(this.getItemsCount()){var _79=this.getLastIndexOnPage();var _7a=-1;for(var i=this.getFirstIndexOnPage();i<=_79;i++){_7a++;_78.render(this,this.items[i],i,_7a);}}}
finally{if(_78.endRendering){_78.endRendering(this);}}},addPageNavigation:function(_7c){if(!this.getItemsCount()){return;}
var _7d=this;var _7e=function(e){if(!e){var e=window.event;}
abego.consumeEvent(e);var _80=abego.toInt(this.getAttribute("page"),0);var _81=_7d.getCurrentPageIndex();if(_80==_81){return;}
var _82=_80*_7d.getItemsPerPage();_7d.setFirstIndexOnPage(_82);_7d.onPageChanged(_80,_81);};var _83;var _84=this.getCurrentPageIndex();var _85=this.getLastPageIndex();if(_84>0){_83=createTiddlyButton(_7c,"Previous","Go to previous page (Shortcut: Alt-'<')",_7e,"prev");_83.setAttribute("page",(_84-1).toString());_83.setAttribute("accessKey","<");}
for(var i=-this.getMaxPagesInNavigation();i<this.getMaxPagesInNavigation();i++){var _87=_84+i;if(_87<0){continue;}
if(_87>_85){break;}
var _88=(i+_84+1).toString();var _89=_87==_84?"currentPage":"otherPage";_83=createTiddlyButton(_7c,_88,"Go to page %0".format([_88]),_7e,_89);_83.setAttribute("page",(_87).toString());}
if(_84<_85){_83=createTiddlyButton(_7c,"Next","Go to next page (Shortcut: Alt-'>')",_7e,"next");_83.setAttribute("page",(_84+1).toString());_83.setAttribute("accessKey",">");}}});abego.LimitedTextRenderer=function(){var _8a=40;var _8b=4;var _8c=function(_8d,_8e,_8f){var n=_8d.length;if(n==0){_8d.push({start:_8e,end:_8f});return;}
var i=0;for(;i<n;i++){var _92=_8d[i];if(_92.start<=_8f&&_8e<=_92.end){var r;var _94=i+1;for(;_94<n;_94++){r=_8d[_94];if(r.start>_8f||_8e>_92.end){break;}}
var _95=_8e;var _96=_8f;for(var j=i;j<_94;j++){r=_8d[j];_95=Math.min(_95,r.start);_96=Math.max(_96,r.end);}
_8d.splice(i,_94-i,{start:_95,end:_96});return;}
if(_92.start>_8f){break;}}
_8d.splice(i,0,{start:_8e,end:_8f});};var _98=function(_99){var _9a=0;for(var i=0;i<_99.length;i++){var _9c=_99[i];_9a+=_9c.end-_9c.start;}
return _9a;};var _9d=function(c){return(c>="a"&&c<="z")||(c>="A"&&c<="Z")||c=="_";};var _9f=function(s,_a1){if(!_9d(s[_a1])){return null;}
for(var i=_a1-1;i>=0&&_9d(s[i]);i--){}
var _a3=i+1;var n=s.length;for(i=_a1+1;i<n&&_9d(s[i]);i++){}
return{start:_a3,end:i};};var _a5=function(s,_a7,_a8){var _a9;if(_a8){_a9=_9f(s,_a7);}else{if(_a7<=0){return _a7;}
_a9=_9f(s,_a7-1);}
if(!_a9){return _a7;}
if(_a8){if(_a9.start>=_a7-_8b){return _a9.start;}
if(_a9.end<=_a7+_8b){return _a9.end;}}else{if(_a9.end<=_a7+_8b){return _a9.end;}
if(_a9.start>=_a7-_8b){return _a9.start;}}
return _a7;};var _aa=function(s,_ac){var _ad=[];if(_ac){var _ae=0;var n=s.length;var _b0=0;do{_ac.lastIndex=_ae;var _b1=_ac.exec(s);if(_b1){if(_ae<_b1.index){var t=s.substring(_ae,_b1.index);_ad.push({text:t});}
_ad.push({text:_b1[0],isMatch:true});_ae=_b1.index+_b1[0].length;}else{_ad.push({text:s.substr(_ae)});break;}}while(true);}else{_ad.push({text:s});}
return _ad;};var _b3=function(_b4){var _b5=0;for(var i=0;i<_b4.length;i++){if(_b4[i].isMatch){_b5++;}}
return _b5;};var _b7=function(s,_b9,_ba,_bb,_bc){var _bd=Math.max(Math.floor(_bc/(_bb+1)),_8a);var _be=Math.max(_bd-(_ba-_b9),0);var _bf=Math.min(Math.floor(_ba+_be/3),s.length);var _c0=Math.max(_bf-_bd,0);_c0=_a5(s,_c0,true);_bf=_a5(s,_bf,false);return{start:_c0,end:_bf};};var _c1=function(_c2,s,_c4){var _c5=[];var _c6=_b3(_c2);var pos=0;for(var i=0;i<_c2.length;i++){var t=_c2[i];var _ca=t.text;if(t.isMatch){var _cb=_b7(s,pos,pos+_ca.length,_c6,_c4);_8c(_c5,_cb.start,_cb.end);}
pos+=_ca.length;}
return _c5;};var _cc=function(s,_ce,_cf){var _d0=_cf-_98(_ce);while(_d0>0){if(_ce.length==0){_8c(_ce,0,_a5(s,_cf,false));return;}else{var _d1=_ce[0];var _d2;var _d3;if(_d1.start==0){_d2=_d1.end;if(_ce.length>1){_d3=_ce[1].start;}else{_8c(_ce,_d2,_a5(s,_d2+_d0,false));return;}}else{_d2=0;_d3=_d1.start;}
var _d4=Math.min(_d3,_d2+_d0);_8c(_ce,_d2,_d4);_d0-=(_d4-_d2);}}};var _d5=function(_d6,s,_d8,_d9,_da){if(_d9.length==0){return;}
var _db=function(_dc,s,_de,_df,_e0){var t;var _e2;var pos=0;var i=0;var _e5=0;for(;i<_de.length;i++){t=_de[i];_e2=t.text;if(_df<pos+_e2.length){_e5=_df-pos;break;}
pos+=_e2.length;}
var _e6=_e0-_df;for(;i<_de.length&&_e6>0;i++){t=_de[i];_e2=t.text.substr(_e5);_e5=0;if(_e2.length>_e6){_e2=_e2.substr(0,_e6);}
if(t.isMatch){createTiddlyElement(_dc,"span",null,"marked",_e2);}else{createTiddlyText(_dc,_e2);}
_e6-=_e2.length;}
if(_e0<s.length){abego.createEllipsis(_dc);}};if(_d9[0].start>0){abego.createEllipsis(_d6);}
var _e7=_da;for(var i=0;i<_d9.length&&_e7>0;i++){var _e9=_d9[i];var len=Math.min(_e9.end-_e9.start,_e7);_db(_d6,s,_d8,_e9.start,_e9.start+len);_e7-=len;}};this.render=function(_eb,s,_ed,_ee){if(s.length<_ed){_ed=s.length;}
var _ef=_aa(s,_ee);var _f0=_c1(_ef,s,_ed);_cc(s,_f0,_ed);_d5(_eb,s,_ef,_f0,_ed);};};(function(){function alertAndThrow(msg){alert(msg);throw msg;}
if(version.major<2||(version.major==2&&version.minor<1)){alertAndThrow("YourSearchPlugin requires TiddlyWiki 2.1 or newer.\n\nCheck the archive for YourSearch plugins\nsupporting older versions of TiddlyWiki.\n\nArchive: http://tiddlywiki.abego-software.de/archive");}
abego.YourSearch={};var _f2;var _f3;var _f4=function(_f5){_f2=_f5;};var _f6=function(){return _f2?_f2:[];};var _f7=function(){return _f2?_f2.length:0;};var _f8=4;var _f9=10;var _fa=2;var _fb=function(s,re){var m=s.match(re);return m?m.length:0;};var _ff=function(_100,_101){var _102=_101.getMarkRegExp();if(!_102){return 1;}
var _103=_100.title.match(_102);var _104=_103?_103.length:0;var _105=_fb(_100.getTags(),_102);var _106=_103?_103.join("").length:0;var _107=_100.title.length>0?_106/_100.title.length:0;var rank=_104*_f8+_105*_fa+_107*_f9+1;return rank;};var _109=function(_10a,_10b,_10c,_10d,_10e,_10f){_f3=null;var _110=_10a.reverseLookup("tags",_10f,false);try{var _111=[];if(config.options.chkSearchInTitle){_111.push("title");}
if(config.options.chkSearchInText){_111.push("text");}
if(config.options.chkSearchInTags){_111.push("tags");}
_f3=new abego.TiddlerQuery(_10b,_10c,_10d,_111,config.options.chkSearchExtendedFields);}
catch(e){return[];}
var _112=_f3.filter(_110);var _113=abego.YourSearch.getRankFunction();for(var i=0;i<_112.length;i++){var _115=_112[i];var rank=_113(_115,_f3);_115.searchRank=rank;}
if(!_10e){_10e="title";}
var _117=function(a,b){var _11a=a.searchRank-b.searchRank;if(_11a==0){if(a[_10e]==b[_10e]){return(0);}else{return(a[_10e]<b[_10e])?-1:+1;}}else{return(_11a>0)?-1:+1;}};_112.sort(_117);return _112;};var _11b=80;var _11c=50;var _11d=250;var _11e=50;var _11f=25;var _120=10;var _121="yourSearchResult";var _122="yourSearchResultItems";var _123;var _124;var _125;var _126;var _127;var _128=function(){if(version.extensions.YourSearchPlugin.styleSheetInited){return;}
version.extensions.YourSearchPlugin.styleSheetInited=true;setStylesheet(store.getTiddlerText("YourSearchStyleSheet"),"yourSearch");};var _129=function(){return _124!=null&&_124.parentNode==document.body;};var _12a=function(){if(_129()){document.body.removeChild(_124);}};var _12b=function(e){_12a();var _12d=this.getAttribute("tiddlyLink");if(_12d){var _12e=this.getAttribute("withHilite");var _12f=highlightHack;if(_12e&&_12e=="true"&&_f3){highlightHack=_f3.getMarkRegExp();}
story.displayTiddler(this,_12d);highlightHack=_12f;}
return(false);};var _130=function(){if(!_125){return;}
var root=_125;var _132=findPosX(root);var _133=findPosY(root);var _134=root.offsetHeight;var _135=_132;var _136=_133+_134;var _137=findWindowWidth();if(_137<_124.offsetWidth){_124.style.width=(_137-100)+"px";_137=findWindowWidth();}
var _138=_124.offsetWidth;if(_135+_138>_137){_135=_137-_138-30;}
if(_135<0){_135=0;}
_124.style.left=_135+"px";_124.style.top=_136+"px";_124.style.display="block";};var _139=function(){if(_124){window.scrollTo(0,ensureVisible(_124));}
if(_125){window.scrollTo(0,ensureVisible(_125));}};var _13a=function(){_130();_139();};var _13b;var _13c;var _13d=new abego.PageWiseRenderer();var _13e=function(_13f){this.itemHtml=store.getTiddlerText("YourSearchItemTemplate");if(!this.itemHtml){alertAndThrow("YourSearchItemTemplate not found");}
this.place=document.getElementById(_122);if(!this.place){this.place=createTiddlyElement(_13f,"div",_122);}};merge(_13e.prototype,{render:function(_140,_141,_142,_143){_13b=_143;_13c=_141;var item=createTiddlyElement(this.place,"div",null,"yourSearchItem");item.innerHTML=this.itemHtml;applyHtmlMacros(item,null);refreshElements(item,null);},endRendering:function(_145){_13c=null;}});var _146=function(){if(!_124||!_125){return;}
var html=store.getTiddlerText("YourSearchResultTemplate");if(!html){html="<b>Tiddler YourSearchResultTemplate not found</b>";}
_124.innerHTML=html;applyHtmlMacros(_124,null);refreshElements(_124,null);var _148=new _13e(_124);_13d.renderPage(_148);_13a();};_13d.getItemsPerPage=function(){var n=(config.options.chkPreviewText)?abego.toInt(config.options.txtItemsPerPageWithPreview,_120):abego.toInt(config.options.txtItemsPerPage,_11f);return(n>0)?n:1;};_13d.onPageChanged=function(){_146();};var _14a=function(){if(_125==null||!config.options.chkUseYourSearch){return;}
if((_125.value==_123)&&_123&&!_129()){if(_124&&(_124.parentNode!=document.body)){document.body.appendChild(_124);_13a();}else{abego.YourSearch.onShowResult(true);}}};var _14b=function(){_12a();_124=null;_123=null;};var _14c=function(self,e){while(e!=null){if(self==e){return true;}
e=e.parentNode;}
return false;};var _14f=function(e){if(e.target==_125){return;}
if(e.target==_126){return;}
if(_124&&_14c(_124,e.target)){return;}
_12a();};var _151=function(e){if(e.keyCode==27){_12a();}};addEvent(document,"click",_14f);addEvent(document,"keyup",_151);var _153=function(text,_155,_156){_123=text;_f4(_109(store,text,_155,_156,"title","excludeSearch"));abego.YourSearch.onShowResult();};var _157=function(_158,_159,_15a,_15b,_15c,_15d){_128();_123="";var _15e=null;var _15f=function(txt){if(config.options.chkUseYourSearch){_153(txt.value,config.options.chkCaseSensitiveSearch,config.options.chkRegExpSearch);}else{story.search(txt.value,config.options.chkCaseSensitiveSearch,config.options.chkRegExpSearch);}
_123=txt.value;};var _161=function(e){_15f(_125);return false;};var _163=function(e){if(!e){var e=window.event;}
_125=this;switch(e.keyCode){case 13:if(e.ctrlKey&&_127&&_129()){_127.onclick.apply(_127,[e]);}else{_15f(this);}
break;case 27:if(_129()){_12a();}else{this.value="";clearMessage();}
break;}
if(String.fromCharCode(e.keyCode)==this.accessKey||e.altKey){_14a();}
if(this.value.length<3&&_15e){clearTimeout(_15e);}
if(this.value.length>2){if(this.value!=_123){if(!config.options.chkUseYourSearch||config.options.chkSearchAsYouType){if(_15e){clearTimeout(_15e);}
var txt=this;_15e=setTimeout(function(){_15f(txt);},500);}}else{if(_15e){clearTimeout(_15e);}}}
if(this.value.length==0){_12a();}};var _166=function(e){this.select();clearMessage();_14a();};var args=_15c.parseParams("list",null,true);var _169=getFlag(args,"buttonAtRight");var _16a=getParam(args,"sizeTextbox",this.sizeTextbox);var btn;if(!_169){btn=createTiddlyButton(_158,this.label,this.prompt,_161);}
var txt=createTiddlyElement(_158,"input",null,null,null);if(_15a[0]){txt.value=_15a[0];}
txt.onkeyup=_163;txt.onfocus=_166;txt.setAttribute("size",_16a);txt.setAttribute("accessKey",this.accessKey);txt.setAttribute("autocomplete","off");if(config.browser.isSafari){txt.setAttribute("type","search");txt.setAttribute("results","5");}else{txt.setAttribute("type","text");}
if(_169){btn=createTiddlyButton(_158,this.label,this.prompt,_161);}
_125=txt;_126=btn;};var _16d=function(){_12a();var _16e=_f6();var n=_16e.length;if(n){var _170=[];for(var i=0;i<n;i++){_170.push(_16e[i].title);}
story.displayTiddlers(null,_170);}};var _172=function(_173,_174,_175,_176){invokeMacro(_173,"option",_174,_175,_176);var elem=_173.lastChild;var _178=elem.onclick;elem.onclick=function(e){var _17a=_178.apply(this,arguments);_146();return _17a;};return elem;};var _17b=function(s){var _17d=["''","{{{","}}}","//","<<<","/***","***/"];var _17e="";for(var i=0;i<_17d.length;i++){if(i!=0){_17e+="|";}
_17e+="("+_17d[i].escapeRegExp()+")";}
return s.replace(new RegExp(_17e,"mg"),"").trim();};var _180=function(){var i=_13b;return(i>=0&&i<=9)?(i<9?(i+1):0):-1;};var _182=new abego.LimitedTextRenderer();var _183=function(_184,s,_186){_182.render(_184,s,_186,_f3.getMarkRegExp());};var _187=TiddlyWiki.prototype.saveTiddler;TiddlyWiki.prototype.saveTiddler=function(_188,_189,_18a,_18b,_18c,tags,_18e){_187.apply(this,arguments);_14b();};var _18f=TiddlyWiki.prototype.removeTiddler;TiddlyWiki.prototype.removeTiddler=function(_190){_18f.apply(this,arguments);_14b();};config.macros.yourSearch={label:"yourSearch",prompt:"Gives access to the current/last YourSearch result",handler:function(_191,_192,_193,_194,_195,_196){if(_193.length==0){return;}
var name=_193[0];var func=config.macros.yourSearch.funcs[name];if(func){func(_191,_192,_193,_194,_195,_196);}},tests:{"true":function(){return true;},"false":function(){return false;},"found":function(){return _f7()>0;},"previewText":function(){return config.options.chkPreviewText;}},funcs:{itemRange:function(_199){if(_f7()){var _19a=_13d.getLastIndexOnPage();var s="%0 - %1".format([_13d.getFirstIndexOnPage()+1,_19a+1]);createTiddlyText(_199,s);}},count:function(_19c){createTiddlyText(_19c,_f7().toString());},query:function(_19d){if(_f3){createTiddlyText(_19d,_f3.toString());}},version:function(_19e){var t="YourSearch %0.%1.%2".format([version.extensions.YourSearchPlugin.major,version.extensions.YourSearchPlugin.minor,version.extensions.YourSearchPlugin.revision]);var e=createTiddlyElement(_19e,"a");e.setAttribute("href","http://tiddlywiki.abego-software.de/#YourSearchPlugin");e.innerHTML="<font color=\"black\" face=\"Arial, Helvetica, sans-serif\">"+t+"<font>";},copyright:function(_1a1){var e=createTiddlyElement(_1a1,"a");e.setAttribute("href","http://www.abego-software.de");e.innerHTML="<font color=\"black\" face=\"Arial, Helvetica, sans-serif\">&copy; 2005-2008 <b><font color=\"red\">abego</font></b> Software<font>";},newTiddlerButton:function(_1a3){if(_f3){var r=abego.parseNewTiddlerCommandLine(_f3.getQueryText());var btn=config.macros.newTiddler.createNewTiddlerButton(_1a3,r.title,r.params,"new tiddler","Create a new tiddler based on search text. (Shortcut: Ctrl-Enter; Separators: '.', '#')",null,"text");var _1a6=btn.onclick;btn.onclick=function(){_12a();_1a6.apply(this,arguments);};_127=btn;}},linkButton:function(_1a7,_1a8,_1a9,_1aa,_1ab,_1ac){if(_1a9<2){return;}
var _1ad=_1a9[1];var text=_1a9<3?_1ad:_1a9[2];var _1af=_1a9<4?text:_1a9[3];var _1b0=_1a9<5?null:_1a9[4];var btn=createTiddlyButton(_1a7,text,_1af,_12b,null,null,_1b0);btn.setAttribute("tiddlyLink",_1ad);},closeButton:function(_1b2,_1b3,_1b4,_1b5,_1b6,_1b7){var _1b8=createTiddlyButton(_1b2,"close","Close the Search Results (Shortcut: ESC)",_12a);},openAllButton:function(_1b9,_1ba,_1bb,_1bc,_1bd,_1be){var n=_f7();if(n==0){return;}
var _1c0=n==1?"open tiddler":"open all %0 tiddlers".format([n]);var _1c1=createTiddlyButton(_1b9,_1c0,"Open all found tiddlers (Shortcut: Alt-O)",_16d);_1c1.setAttribute("accessKey","O");},naviBar:function(_1c2,_1c3,_1c4,_1c5,_1c6,_1c7){_13d.addPageNavigation(_1c2);},"if":function(_1c8,_1c9,_1ca,_1cb,_1cc,_1cd){if(_1ca.length<2){return;}
var _1ce=_1ca[1];var _1cf=(_1ce=="not");if(_1cf){if(_1ca.length<3){return;}
_1ce=_1ca[2];}
var test=config.macros.yourSearch.tests[_1ce];var _1d1=false;try{if(test){_1d1=test(_1c8,_1c9,_1ca,_1cb,_1cc,_1cd)!=_1cf;}else{_1d1=(!eval(_1ce))==_1cf;}}
catch(ex){}
if(!_1d1){_1c8.style.display="none";}},chkPreviewText:function(_1d2,_1d3,_1d4,_1d5,_1d6,_1d7){var _1d8=_1d4.slice(1).join(" ");var elem=_172(_1d2,"chkPreviewText",_1d5,_1d7);elem.setAttribute("accessKey","P");elem.title="Show text preview of found tiddlers (Shortcut: Alt-P)";return elem;}}};config.macros.foundTiddler={label:"foundTiddler",prompt:"Provides information on the tiddler currently processed on the YourSearch result page",handler:function(_1da,_1db,_1dc,_1dd,_1de,_1df){var name=_1dc[0];var func=config.macros.foundTiddler.funcs[name];if(func){func(_1da,_1db,_1dc,_1dd,_1de,_1df);}},funcs:{title:function(_1e2,_1e3,_1e4,_1e5,_1e6,_1e7){if(!_13c){return;}
var _1e8=_180();var _1e9=_1e8>=0?"Open tiddler (Shortcut: Alt-%0)".format([_1e8.toString()]):"Open tiddler";var btn=createTiddlyButton(_1e2,null,_1e9,_12b,null);btn.setAttribute("tiddlyLink",_13c.title);btn.setAttribute("withHilite","true");_183(btn,_13c.title,_11b);if(_1e8>=0){btn.setAttribute("accessKey",_1e8.toString());}},tags:function(_1eb,_1ec,_1ed,_1ee,_1ef,_1f0){if(!_13c){return;}
_183(_1eb,_13c.getTags(),_11c);},text:function(_1f1,_1f2,_1f3,_1f4,_1f5,_1f6){if(!_13c){return;}
_183(_1f1,_17b(_13c.text),_11d);},field:function(_1f7,_1f8,_1f9,_1fa,_1fb,_1fc){if(!_13c){return;}
var name=_1f9[1];var len=_1f9.length>2?abego.toInt(_1f9[2],_11e):_11e;var v=store.getValue(_13c,name);if(v){_183(_1f7,_17b(v),len);}},number:function(_200,_201,_202,_203,_204,_205){var _206=_180();if(_206>=0){var text="%0)".format([_206.toString()]);createTiddlyElement(_200,"span",null,"shortcutNumber",text);}}}};var opts={chkUseYourSearch:true,chkPreviewText:true,chkSearchAsYouType:true,chkSearchInTitle:true,chkSearchInText:true,chkSearchInTags:true,chkSearchExtendedFields:true,txtItemsPerPage:_11f,txtItemsPerPageWithPreview:_120};for(var n in opts){if(config.options[n]==undefined){config.options[n]=opts[n];}}
config.shadowTiddlers.AdvancedOptions+="\n<<option chkUseYourSearch>> Use 'Your Search' //([[more options|YourSearch Options]]) ([[help|YourSearch Help]])// ";config.shadowTiddlers["YourSearch Help"]="!Field Search\nWith the Field Search you can restrict your search to certain fields of a tiddler, e.g"+" only search the tags or only the titles. The general form is //fieldname//'':''//textToSearch// (e."+"g. {{{title:intro}}}). In addition one-character shortcuts are also supported for the standard field"+"s {{{title}}}, {{{text}}} and {{{tags}}}:\n|!What you want|!What you type|!Example|\n|Search ''titles "+"only''|start word with ''!''|{{{!jonny}}} (shortcut for {{{title:jonny}}})|\n|Search ''contents/text "+"only''|start word with ''%''|{{{%football}}} (shortcut for {{{text:football}}})|\n|Search ''tags only"+"''|start word with ''#''|{{{#Plugin}}} (shortcut for {{{tags:Plugin}}})|\n\nUsing this feature you may"+" also search the extended fields (\"Metadata\") introduced with TiddlyWiki 2.1, e.g. use {{{priority:1"+"}}} to find all tiddlers with the priority field set to \"1\".\n\nYou may search a word in more than one"+" field. E.g. {{{!#Plugin}}} (or {{{title:tags:Plugin}}} in the \"long form\") finds tiddlers containin"+"g \"Plugin\" either in the title or in the tags (but does not look for \"Plugin\" in the text). \n\n!Boole"+"an Search\nThe Boolean Search is useful when searching for multiple words.\n|!What you want|!What you "+"type|!Example|\n|''All words'' must exist|List of words|{{{jonny jeremy}}} (or {{{jonny and jeremy}}}"+")|\n|''At least one word'' must exist|Separate words by ''or''|{{{jonny or jeremy}}}|\n|A word ''must "+"not exist''|Start word with ''-''|{{{-jonny}}} (or {{{not jonny}}})|\n\n''Note:'' When you specify two"+" words, separated with a space, YourSearch finds all tiddlers that contain both words, but not neces"+"sarily next to each other. If you want to find a sequence of word, e.g. '{{{John Brown}}}', you need"+" to put the words into quotes. I.e. you type: {{{\"john brown\"}}}.\n\nUsing parenthesis you may change "+"the default \"left to right\" evaluation of the boolean search. E.g. {{{not (jonny or jeremy)}}} finds"+" all tiddlers that contain neither \"jonny\" nor \"jeremy. In contrast to this {{{not jonny or jeremy}}"+"} (i.e. without parenthesis) finds all tiddlers that either don't contain \"jonny\" or that contain \"j"+"eremy\".\n\n!'Exact Word' Search\nBy default a search result all matches that 'contain' the searched tex"+"t. E.g. if you search for {{{Task}}} you will get all tiddlers containing 'Task', but also '~Complet"+"edTask', '~TaskForce' etc.\n\nIf you only want to get the tiddlers that contain 'exactly the word' you"+" need to prefix it with a '='. E.g. typing '=Task' will find the tiddlers that contain the word 'Tas"+"k', ignoring words that just contain 'Task' as a substring.\n\n!~CaseSensitiveSearch and ~RegExpSearch"+"\nThe standard search options ~CaseSensitiveSearch and ~RegExpSearch are fully supported by YourSearc"+"h. However when ''~RegExpSearch'' is on Filtered and Boolean Search are disabled.\n\nIn addition you m"+"ay do a \"regular expression\" search even with the ''~RegExpSearch'' set to false by directly enterin"+"g the regular expression into the search field, framed with {{{/.../}}}. \n\nExample: {{{/m[ae][iy]er/"+"}}} will find all tiddlers that contain either \"maier\", \"mayer\", \"meier\" or \"meyer\".\n\n!~JavaScript E"+"xpression Filtering\nIf you are familiar with JavaScript programming and know some TiddlyWiki interna"+"ls you may also use JavaScript expression for the search. Just enter a JavaScript boolean expression"+" into the search field, framed with {{{ { ... } }}}. In the code refer to the variable tiddler and e"+"valuate to {{{true}}} when the given tiddler should be included in the result. \n\nExample: {{{ { tidd"+"ler.modified > new Date(\"Jul 4, 2005\")} }}} returns all tiddler modified after July 4th, 2005.\n\n!Com"+"bined Search\nYou are free to combine the various search options. \n\n''Examples''\n|!What you type|!Res"+"ult|\n|{{{!jonny !jeremy -%football}}}|all tiddlers with both {{{jonny}}} and {{{jeremy}}} in its tit"+"les, but no {{{football}}} in content.|\n|{{{#=Task}}}|All tiddlers tagged with 'Task' (the exact wor"+"d). Tags named '~CompletedTask', '~TaskForce' etc. are not considered.|\n\n!Access Keys\nYou are encour"+"aged to use the access keys (also called \"shortcut\" keys) for the most frequently used operations. F"+"or quick reference these shortcuts are also mentioned in the tooltip for the various buttons etc.\n\n|"+"!Key|!Operation|\n|{{{Alt-F}}}|''The most important keystroke'': It moves the cursor to the search in"+"put field so you can directly start typing your query. Pressing {{{Alt-F}}} will also display the pr"+"evious search result. This way you can quickly display multiple tiddlers using \"Press {{{Alt-F}}}. S"+"elect tiddler.\" sequences.|\n|{{{ESC}}}|Closes the [[YourSearch Result]]. When the [[YourSearch Resul"+"t]] is already closed and the cursor is in the search input field the field's content is cleared so "+"you start a new query.|\n|{{{Alt-1}}}, {{{Alt-2}}},... |Pressing these keys opens the first, second e"+"tc. tiddler from the result list.|\n|{{{Alt-O}}}|Opens all found tiddlers.|\n|{{{Alt-P}}}|Toggles the "+"'Preview Text' mode.|\n|{{{Alt-'<'}}}, {{{Alt-'>'}}}|Displays the previous or next page in the [[Your"+"Search Result]].|\n|{{{Return}}}|When you have turned off the 'as you type' search mode pressing the "+"{{{Return}}} key actually starts the search (as does pressing the 'search' button).|\n\n//If some of t"+"hese shortcuts don't work for you check your browser if you have other extensions installed that alr"+"eady \"use\" these shortcuts.//";config.shadowTiddlers["YourSearch Options"]="|>|!YourSearch Options|\n|>|<<option chkUseYourSearch>> Use 'Your Search'|\n|!|<<option chkPreviewText"+">> Show Text Preview|\n|!|<<option chkSearchAsYouType>> 'Search As You Type' Mode (No RETURN required"+" to start search)|\n|!|Default Search Filter:<<option chkSearchInTitle>>Title ('!')     <<option chk"+"SearchInText>>Text ('%')     <<option chkSearchInTags>>Tags ('#')    <<option chkSearchExtendedFiel"+"ds>>Extended Fields<html><br><font size=\"-2\">The fields of a tiddlers that are searched when you don"+"'t explicitly specify a filter in the search text <br>(Explictly specify fields using one or more '!"+"', '%', '#' or 'fieldname:' prefix before the word/text to find).</font></html>|\n|!|Number of items "+"on search result page: <<option txtItemsPerPage>>|\n|!|Number of items on search result page with pre"+"view text: <<option txtItemsPerPageWithPreview>>|\n";config.shadowTiddlers["YourSearchStyleSheet"]="/***\n!~YourSearchResult Stylesheet\n***/\n/*{{{*/\n.yourSearchResult {\n\tposition: absolute;\n\twidth: 800"+"px;\n\n\tpadding: 0.2em;\n\tlist-style: none;\n\tmargin: 0;\n\n\tbackground: #ffd;\n\tborder: 1px solid DarkGra"+"y;\n}\n\n/*}}}*/\n/***\n!!Summary Section\n***/\n/*{{{*/\n.yourSearchResult .summary {\n\tborder-bottom-width:"+" thin;\n\tborder-bottom-style: solid;\n\tborder-bottom-color: #999999;\n\tpadding-bottom: 4px;\n}\n\n.yourSea"+"rchRange, .yourSearchCount, .yourSearchQuery   {\n\tfont-weight: bold;\n}\n\n.yourSearchResult .summary ."+"button {\n\tfont-size: 10px;\n\n\tpadding-left: 0.3em;\n\tpadding-right: 0.3em;\n}\n\n.yourSearchResult .summa"+"ry .chkBoxLabel {\n\tfont-size: 10px;\n\n\tpadding-right: 0.3em;\n}\n\n/*}}}*/\n/***\n!!Items Area\n***/\n/*{{{*"+"/\n.yourSearchResult .marked {\n\tbackground: none;\n\tfont-weight: bold;\n}\n\n.yourSearchItem {\n\tmargin-to"+"p: 2px;\n}\n\n.yourSearchNumber {\n\tcolor: #808080;\n}\n\n\n.yourSearchTags {\n\tcolor: #008000;\n}\n\n.yourSearc"+"hText {\n\tcolor: #808080;\n\tmargin-bottom: 6px;\n}\n\n/*}}}*/\n/***\n!!Footer\n***/\n/*{{{*/\n.yourSearchFoote"+"r {\n\tmargin-top: 8px;\n\tborder-top-width: thin;\n\tborder-top-style: solid;\n\tborder-top-color: #999999;"+"\n}\n\n.yourSearchFooter a:hover{\n\tbackground: none;\n\tcolor: none;\n}\n/*}}}*/\n/***\n!!Navigation Bar\n***/"+"\n/*{{{*/\n.yourSearchNaviBar a {\n\tfont-size: 16px;\n\tmargin-left: 4px;\n\tmargin-right: 4px;\n\tcolor: bla"+"ck;\n\ttext-decoration: underline;\n}\n\n.yourSearchNaviBar a:hover {\n\tbackground-color: none;\n}\n\n.yourSe"+"archNaviBar .prev {\n\tfont-weight: bold;\n\tcolor: blue;\n}\n\n.yourSearchNaviBar .currentPage {\n\tcolor: #"+"FF0000;\n\tfont-weight: bold;\n\ttext-decoration: none;\n}\n\n.yourSearchNaviBar .next {\n\tfont-weight: bold"+";\n\tcolor: blue;\n}\n/*}}}*/\n";config.shadowTiddlers["YourSearchResultTemplate"]="<!--\n{{{\n-->\n<span macro=\"yourSearch if found\">\n<!-- The Summary Header ============================"+"================ -->\n<table class=\"summary\" border=\"0\" width=\"100%\" cellspacing=\"0\" cellpadding=\"0\">"+"<tbody>\n  <tr>\n\t<td align=\"left\">\n\t\tYourSearch Result <span class=\"yourSearchRange\" macro=\"yourSearc"+"h itemRange\"></span>\n\t\t&nbsp;of&nbsp;<span class=\"yourSearchCount\" macro=\"yourSearch count\"></span>\n"+"\t\tfor&nbsp;<span class=\"yourSearchQuery\" macro=\"yourSearch query\"></span>\n\t</td>\n\t<td class=\"yourSea"+"rchButtons\" align=\"right\">\n\t\t<span macro=\"yourSearch chkPreviewText\"></span><span class=\"chkBoxLabel"+"\">preview text</span>\n\t\t<span macro=\"yourSearch newTiddlerButton\"></span>\n\t\t<span macro=\"yourSearch openAllButton\"></span>\n\t\t<span macro=\"yourSearch lin"+"kButton 'YourSearch Options' options 'Configure YourSearch'\"></span>\n\t\t<span macro=\"yourSearch linkB"+"utton 'YourSearch Help' help 'Get help how to use YourSearch'\"></span>\n\t\t<span macro=\"yourSearch clo"+"seButton\"></span>\n\t</td>\n  </tr>\n</tbody></table>\n\n<!-- The List of Found Tiddlers ================="+"=========================== -->\n<div id=\"yourSearchResultItems\" itemsPerPage=\"25\" itemsPerPageWithPr"+"eview=\"10\"></div>\n\n<!-- The Footer (with the Navigation) ==========================================="+"= -->\n<table class=\"yourSearchFooter\" border=\"0\" width=\"100%\" cellspacing=\"0\" cellpadding=\"0\"><tbody"+">\n  <tr>\n\t<td align=\"left\">\n\t\tResult page: <span class=\"yourSearchNaviBar\" macro=\"yourSearch naviBar"+"\"></span>\n\t</td>\n\t<td align=\"right\"><span macro=\"yourSearch version\"></span>, <span macro=\"yourSearc"+"h copyright\"></span>\n\t</td>\n  </tr>\n</tbody></table>\n<!-- end of the 'tiddlers found' case ========="+"================================== -->\n</span>\n\n\n<!-- The \"No tiddlers found\" case ================="+"========================== -->\n<span macro=\"yourSearch if not found\">\n<table class=\"summary\" border="+"\"0\" width=\"100%\" cellspacing=\"0\" cellpadding=\"0\"><tbody>\n  <tr>\n\t<td align=\"left\">\n\t\tYourSearch Resu"+"lt: No tiddlers found for <span class=\"yourSearchQuery\" macro=\"yourSearch query\"></span>.\n\t</td>\n\t<t"+"d class=\"yourSearchButtons\" align=\"right\">\n\t\t<span macro=\"yourSearch newTiddlerButton\"></span>\n\t\t<span macro=\"yourSearch linkButton 'YourSearch Options'"+" options 'Configure YourSearch'\"></span>\n\t\t<span macro=\"yourSearch linkButton 'YourSearch Help' help"+" 'Get help how to use YourSearch'\"></span>\n\t\t<span macro=\"yourSearch closeButton\"></span>\n\t</td>\n  <"+"/tr>\n</tbody></table>\n</span>\n\n\n<!--\n}}}\n-->\n";config.shadowTiddlers["YourSearchItemTemplate"]="<!--\n{{{\n-->\n<span class='yourSearchNumber' macro='foundTiddler number'></span>\n<span class='yourSea"+"rchTitle' macro='foundTiddler title'/></span>&nbsp;-&nbsp;\n<span class='yourSearchTags' macro='found"+"Tiddler field tags 50'/></span>\n<span macro=\"yourSearch if previewText\"><div class='yourSearchText' macro='fo"+"undTiddler field text 250'/></div></span>\n<!--\n}}}\n-->";config.shadowTiddlers["YourSearch"]="<<tiddler [[YourSearch Help]]>>";config.shadowTiddlers["YourSearch Result"]="The popup-like window displaying the result of a YourSearch query.";config.macros.search.handler=_157;var _20a=function(){if(config.macros.search.handler!=_157){alert("Message from YourSearchPlugin:\n\n\nAnother plugin has disabled the 'Your Search' features.\n\n\nYou may "+"disable the other plugin or change the load order of \nthe plugins (by changing the names of the tidd"+"lers)\nto enable the 'Your Search' features.");}};setTimeout(_20a,5000);abego.YourSearch.getStandardRankFunction=function(){return _ff;};abego.YourSearch.getRankFunction=function(){return abego.YourSearch.getStandardRankFunction();};abego.YourSearch.getCurrentTiddler=function(){return _13c;};abego.YourSearch.closeResult=function(){_12a();};abego.YourSearch.getFoundTiddlers=function(){return _f2;};abego.YourSearch.getQuery=function(){return _f3;};abego.YourSearch.onShowResult=function(_20b){highlightHack=_f3?_f3.getMarkRegExp():null;if(!_20b){_13d.setItems(_f6());}
if(!_124){_124=createTiddlyElement(document.body,"div",_121,"yourSearchResult");}else{if(_124.parentNode!=document.body){document.body.appendChild(_124);}}
_146();highlightHack=null;};})();}
//%/
!!Create a script:
{{{
sudo nano /usr/local/bin/get_packages.sh
}}}
!!Add this line to the script:
{{{
dpkg --get-selections > /home/shared/package_list
}}}
!!Make it executable:
{{{
sudo chmod +x get_packages.sh
}}}
This will add address 192.168.0.1 to existing segment (for instance, to 255.255.255.0):
{{{
$ sudo route add 192.168.0.1 eth0
}}}
{{{
echo "/dev/vgBig/lvBig  /aux/v1500g  ext3  defaults  0  0" | cat >> /etc/fstab
}}}

Command has to be executed by root
Add a linux user ''janet'' to group ''users'':
{{{
useradd janet -m -G users
}}}

Add the linux user ''janet'' to the SAMBA password database:
{{{
smbpasswd -a janet
}}}
{{{
echo "deb http://ftp.de.debian.org/debian/ sarge main contrib non-free" >>/etc/apt/sources.list
}}}

! References: 
http://forums.untangle.com/tip-day/1571-how-install-phpsysinfo-5-03-a.html
!!!Modify /etc/apt/sources.list
{{{
sudo gedit /etc/apt/sources.list
}}}
!!!add these lines
{{{
# thunderbird 3
deb http://ppa.launchpad.net/ubuntu-mozilla-daily/ppa/ubuntu jaunty main
deb-src http://ppa.launchpad.net/ubuntu-mozilla-daily/ppa/ubuntu jaunty main
}}}

!!!Add repository key:
{{{
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 247510BE
}}}
!!!Update repository
sudo apt-get update
!!! Install
{{{
sudo apt-get install thunderbird-3.0 thunderbird-3.0-gnome-support
}}}
!References:
http://www.ubuntu-inside.me/2009/08/howto-install-thunderbird-3-beta-on.html
{{{
net rpc user add <username> -U root
net rpc user password <username> "<password>" -U root
smbpasswd -e <username>
}}}
Now, we creater profile directory:
{{{
mkdir /home/samba/profiles/<username>
chown <username> /home/samba/profiles/<username>
}}}

The syntax for creating a user account is this:
{{{
net rpc user add <username> -S <server hostname> -U <user to connect as>
}}}
The syntax for setting a password for the user account is this:
{{{
net rpc user password <username> "<password>" -U <user to connect as>
}}}
get your MAC address with "ifconfig -a" and modify file /etc/iftab.
{{{
# file: /etc/iftab
# This file assigns persistent names to network interfaces.
# See iftab(5) for syntax.

eth0 mac 00:00:07:02:09:a3 arp 1
eth1 mac 00:05:09:08:00:0A
}}}
http://aiddlywiki.sourceforge.net/

http://aiddlywiki.sourceforge.net/wikibar_demo_2.html
{{{
echo "allow_shell = 1" | cat >> /etc/system/webconfig
}}}

[/usr/lib/cgi-bin/apcupsd/]

For all the cgi files.

{{{
/etc/apcupsd/apcupsd.conf
/usr/lib/cgi-bin/apcupsd/multimon.cgi
/usr/lib/cgi-bin/apcupsd/upsfstats.cgi
/usr/lib/cgi-bin/apcupsd/upsstats.cgi
/usr/lib/cgi-bin/apcupsd/upsimage.cgi
/etc/init.d/apcupsd start
/etc/init.d/apcupsd stop
}}}
File = /etc/default/apcupsd

{{{
# Apcupsd-devel internal configuration

APCACCESS=/sbin/apcaccess
ISCONFIGURED=yes
}}}
''Configurable options for APC UPS Daemon''
{{{
Configuration file for apcupsd 			/etc/apcupsd/apcupsd.conf
Time interval for update screens (in sec) 	30
Path to multimon.cgi 				/usr/lib/cgi-bin/apcupsd/multimon.cgi
Path to upsfstats.cgi 				/usr/lib/cgi-bin/apcupsd/upsfstats.cgi
Path to upsstats.cgi 				/usr/lib/cgi-bin/apcupsd/upsstats.cgi
Path to upsimage.cgi 				/usr/lib/cgi-bin/apcupsd/upsimage.cgi
Start apcupsd command 				/etc/init.d/apcupsd start
Stop apcupsd command 				/etc/init.d/apcupsd stop
}}}
{{{
sudo dpkg --get-selections > package_list
}}}
In the new machine or virtual machine or new hard disk installation:
{{{
sudo dpkg --set-selections < package_list
}}}
Install the packages:
{{{
sudo apt-get -u dselect-upgrade
}}}
Reference: [[a package generator script]]

Ctrl + A 	Go to the beginning of the line you are currently typing on

Ctrl + E 	Go to the end of the line you are currently typing on

ESC + B		Go backwards one word

ESC + F 	Go forward one word

Ctrl + D 	Exit the current shell

!!! Open application:
{{{
$ gnuplot
}}}
the gnuplot shell appears:
{{{
gnuplot >
}}}
!!! graph sin(x)
{{{
gnuplot > plot sin(x)
}}}
!!! graph sin(x) and cos(x) in the same plot
{{{
gnuplot > plot sin(x), cos(x)
}}}





libphp-adodb is no longer installed in /usr/share/adodb. New installation path is now /usr/share/php/adodb.

Please update your php.ini file. Maybe you must also change your web-server configuraton.

{{{
sudo nano /etc/resolv.conf
}}}
{{{
sudo nano /etc/sysconfig/network
}}}
{{{
sudo dpkg-reconfigure tzdata
}}}
{{{
$ netstat -uap
}}}
it will show something like this:
{{{
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
...
udp        0      0 *:tftp                  *:*                                 -               
...
}}}
!Compile
{{{
gfortran -c report.f
}}}
!Link
{{{
gfortran -o report-exe report.o
}}}
!Execute
{{{
./report-exe
}}}

!Edit the iscsi configuration file:
{{{
sudo nano /etc/ietd.conf
}}}
!Define the targets and devices.
Example:
{{{
# iqn.yyyy-mm.<reversed domain name>[:identifier]
#
# "yyyy-mm" is the date at which the domain is valid and the identifier
# is freely selectable. For further details please check the iSCSI spec.
# Target iqn.2001-04.com.example:storage.disk2.sys1.xyz
#       Alias .lan.reyesaguayo.chaski.storage.lun1
#       IncomingUser chap chap
#       OutgoingUser
#       IncomingUser chap chap
#       OutgoingUser
# this was a partition in disk0
#Target iqn.2001-04:.lan.reyesaguayo.chaski.storage.lun2
#       Alias LUN2
#       Lun 0 Type=fileio,Path=/dev/sdc4
#Target iqn.2001-04:.lan.reyesaguayo.chaski.storage.lun1
#       Alias LUN1
#       Lun 0 Type=fileio,Path=/dev/vg0/storage_lun1
Target iqn.2001-04:.lan.reyesaguayo.chaski.esata
        Alias esata
        Lun 0 Type=fileio

Target iqn.2001-04:.lan.reyesaguayo.chaski.part4
        Alias .lan.reyesaguayo.chaski.part4
        Lun 0 Type=fileio,Path=/dev/vg1/part4

}}}
{{{
arping -f 192.168.0.1; telnet 192.168.0.1 9000
}}}
Use PowerIso.
use MagicISO.
Install with PlayOnLinux first.
{{{
sudo cp /opt/firefox/icons/mozicon128.png /usr/share/icons/hicolor/48x48/apps/firefox3.png
}}}
Create a folder for the ISO files under /vmimages:
{{{
cd /vmimages
mkdir isos
cd isos
}}}
Open firewall to medium security:
{{{
esxcfg-firewall --allowOutgoing --blockIncoming
}}}
Example 1:
Copy the ISO file for CentOS 5:
{{{
scp super@192.168.1.61:/aux/dwn/bt/cpl/CentOS-5.1-i386-bin-DVD/CentOS-5.1-i386-bin-DVD.iso .
}}}

Example 2:
Copy the ISO file for Solaris 10:
{{{
scp msf@192.168.1.5:/home/msf/sol-10-u4-ga-x86-dvd.iso .
}}}

Example 3:
Copy the ISO file for Ubuntu Dapper Drake:
{{{
scp msf@192.168.1.5:/home/msf/ubuntu-6.06.1-desktop-i386.iso .
}}}
To create the Virtual Machine: run the ''Vmware Infrastructure Client'' in any Windows PC and install the Virtual Machine.
{{{
super@local:/home/shared$ scp -P 2222 user_prefs remote_user@remote_host:~/.spamassassin/
}}}
::{{{ -P 2222 }}}  is the port of the remote server
::{{{user_prefs}}} is a file 
{{{
$ sudo tar cf - test_su | (cd /backup/home/superuser; tar xvf -)
}}}


http://thehackerslinux.wordpress.com/2007/07/24/using-tar-to-copy-files/
Tar is really useful command :)
Here is short explanation :
tar cf - . | (cd /target; tar xvf -)
so: tar everything in current dir (.) and put the tar file to standard output (-), then change dir to /target and un-tar to current dir everything from standard input (-).
In this case standard output from first tar is piped to standard input of second tar.
07-31-2005, 09:18 AM
Last time when I've tried to do that with scp, it didn't perserve the uid/gid). After a bit of struggling with man pages, that line did the trick:
{{{
tar cvf - [local file/dir] | ssh 172.16.0.1 tar xvf - --directory [remote dir]
}}}
{{{
sudo apt-get install checkinstall
sudo checkinstall make install
}}}
{{{
sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.6.0_12/bin/java 1
sudo update-alternatives --install /usr/bin/javaws javaws /usr/lib/jvm/jdk1.6.0_12/bin/javaws 1
sudo update-alternatives --install /usr/bin/jar jar /usr/lib/jvm/jdk1.6.0_12/bin/jar 1
}}}
{{{
msfz@server $ ln -s /CIFS/users[colorado]/msfz751 ~/Home2
}}}

{{{
super@server $ sudo ln -s /CIFS/public\[colorado\] /media/colorado/public
}}}
where:
''colorado'' is the server and ''public'' is a share.
{{{
sudo ln -s /opt/java/x64/jdk1.6.0_12/ /usr/lib/jvm
}}}
! Define automatic folder
Set the automatic home folder in module="Users and Groups", menu-option="Module Config", field="Automatic home directory base"

/mnt/volumegroup/userhomes/homebase

whre:
volume group=volumegroup
logical volume=userhomes
share=homebase

! Create users from OpenFiler
Openfiler will create the user directrory as follows:
{{{
/mnt/volumegroup/userhomes/homebase/msfz751
}}}

{{{
sudo smbpasswd -x uucp
sudo smbpasswd -x gnats
sudo smbpasswd -x uucp
sudo smbpasswd -x statd
sudo smbpasswd -x gnats
sudo smbpasswd -x proxy
sudo smbpasswd -x mail  
sudo smbpasswd -x daemon
sudo smbpasswd -x man   
sudo smbpasswd -x irc
sudo smbpasswd -x identd
sudo smbpasswd -x debian-exim
sudo smbpasswd -x proxy      
sudo smbpasswd -x sys  
sudo smbpasswd -x bin
sudo smbpasswd -x www-data
sudo smbpasswd -x sshd    
sudo smbpasswd -x list
sudo smbpasswd -x backup
sudo smbpasswd -x sync
}}}
{{{
NSLU2:/home/superuser# apt-get -f install                   
Reading package lists... Done
Building dependency tree... Done
Correcting dependencies... Done
The following extra packages will be installed:

  libauthen-pam-perl libio-pty-perl libmd5-perl libnet-ssleay-perl openssl

Suggested packages:
  ca-certificates

The following NEW packages will be installed:
  libauthen-pam-perl libio-pty-perl libmd5-perl libnet-ssleay-perl openssl

0 upgraded, 5 newly installed, 0 to remove and 0 not upgraded.
1 not fully installed or removed.
Need to get 1263kB of archives.
After unpacking 3596kB of additional disk space will be used.
}}}

! Install with:
{{{
sudo apt-get install libauthen-pam-perl libio-pty-perl libmd5-perl libnet-ssleay-perl openssl
}}}
{{{
sudo aptitude install build-essential
sudo apt-get install linux-headers-`uname -r`
sudo aptitude install xinetd
sudo apt-get install ia32-libs
}}}
Set the 
{{{
no_create_root=1 
}}}
in the rsnapshot.conf file.
{{{
wget http://neacm.fe.up.pt/pub/getdeb/ubuntu/hardy/fu/fuppes_0.svn-r578-1~getdeb1_i386.deb
}}}
http://mtrons.googlepages.com/debpackages
{{{
svn co https://fuppes.svn.sourceforge.net/svnroot/fuppes/trunk fuppes
cd fuppes
autoreconf -vfi
./configure --enable-video-transcoding
make
}}}
If not interested in generating a DEB package run the lines below, 
{{{
sudo make install
sudo ldconfig
}}}
otherwise skip them and run 
<<tiddler ShowSection with: [[create a .deb package]]>>
!Uninstall
{{{
sudo make uninstall
}}}
Source: http://www.cyberciti.biz/tips/linux-debian-package-management-cheat-sheet.html
Syntax: dpkg -l
{{{
# dpkg -l
}}}
{{{
# dpkg -l apache
}}}

You can also use this command to see (verify) if package sudo is install or not (note that if package is installed then it displays package name along with small description):
{{{
# dpkg -l | grep -i 'sudo'
}}}

{{{
sharity license xxx-xxx-xxx-xxxx
}}}
Add the line ServerName "YourSite.com" to apache2.conf to make the message to go away.
this command gives the same error as given by fuppes:
{{{
ffmpeg -i $movie -vcodec mpeg4 -vtag divx -vb 5000k -aspect 2.424 -r 23.976 -acodec ac3 -ac 6 -ab 384k $movie.avi
}}}
esXpress.com or backup.p2v.net, PHD Smart Delta, Patent Pending.

phd  for the menu

If this is an upgrade, goto to Config menu (phd c), then Copy to import.
Or type:  phd import

If this is a new install, make sure you configure the VMFS and NETWORK for the V
BAs

Remember, when you need to upgrade esXpress, always remove the rpm
(rpm -e esxpress), then re-install it (rpm -i esxpress*.rpm).
''Never rpm -U''


interface = 	eth0
address = 	10.1.1.2
netmask =	255.255.255.0
gateway =	192.168.1.1
{{{
$ sudo /sbin/ethtool eth0
Password:
}}}
Output:
{{{
Settings for eth0:
        Supported ports: [ TP ]
        Supported link modes:   10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Half 1000baseT/Full
        Supports auto-negotiation: Yes
        Advertised link modes:  10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Half 1000baseT/Full
        Advertised auto-negotiation: Yes
        Speed: 1000Mb/s
        Duplex: Full
        Port: Twisted Pair
        PHYAD: 1
        Transceiver: internal
        Auto-negotiation: on
        Supports Wake-on: g
        Wake-on: d
        Current message level: 0x000000ff (255)
        Link detected: yes
}}}
The card supports WOL as per this result:
{{{
        Supports Wake-on: g
}}}
But it is deactivated:
{{{
        Wake-on: d
}}}

After this command:
<<tiddler "get WOL status of network card">>
WOL is enabled:
{{{
Settings for eth0:
        Supported ports: [ TP ]
        Supported link modes:   10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Half 1000baseT/Full
        Supports auto-negotiation: Yes
        Advertised link modes:  10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Half 1000baseT/Full
        Advertised auto-negotiation: Yes
        Speed: 1000Mb/s
        Duplex: Full
        Port: Twisted Pair
        PHYAD: 1
        Transceiver: internal
        Auto-negotiation: on
        Supports Wake-on: g
        Wake-on: g
        Current message level: 0x000000ff (255)
        Link detected: yes
}}}
{{{
*/not_this
not_this
not_this/
home/not_this
}}}

{{{
*/not_this
}}}
::No file or directory named "not_this" will be backed up. The "find" will list no files.

{{{
not_this
}}}
:: No file or directory named "not_this" will be backed up. The "find" will list no files.

{{{
not_this/
}}}
:: No directory named "not_this" will be backed up. Ordinary files will be. The "testrsnap/home/not_this/home/b/not_this" will not be backed up because it is in a subdirectory named "testrsnap/home/not_this/". The "find" will only list 
./not_this: ASCII text.
 
{{{
home/not_this
}}}
:: No file or directory named "home/not_this" will be backed up. The find will list 
./homes/not_this: directory
./homes/this/not_this: directory
./not_this: ASCII text


http://aplawrence.com/Unixart/rsnapshot.html

For @@Unknown encoder 'libxvid'@@ error, install:
{{{
sudo apt-get install libavcodec-unstripped-52
}}}
{{{
ffmpeg -i "what women want.avi" -ab 128k -b 1000k -acodec libmp3lame -vcodec libxvid -aspect 4:3 "What Women Want_.avi"
}}}
{{{
ffmpeg -i source_video.avi -ab 128k -b 1000k -acodec libmp3lame -vcodec libxvid -aspect 4:3 out.avi
}}}
{{{
ffmpeg -y -i input.avi -vcodec h264 -b 1000000 -acodec aac -ar 48000 -ab 160 -f mov output.mov
}}}
{{{
ffmpeg -i /home/USER/ -r 29.97 -vcodec xvid -b 700k -acodec aac -ab 128k -bufsize 4M -qmax 51 -mbd 2 -flags +4mv+trell -aic 2 -cmp 2 -subcmp 2 -ar 44100 -g 300 -s 320x240 -aspect 4:3 -ac 2 -f mp4 -y /home/USER/
}}}
{{{
ffmpeg -i input.avi -r 29.97 -vcodec libxvid -b 700k -acodec libfaac -ab 128k -bufsize 4M -qmax 51 -mbd 2 -flags +4mv+trell -aic 2 -cmp 2 -subcmp 2 -ar 44100 -g 300 -s 320x240 -aspect 4:3 -ac 2 -f mp4 -y output.mp4
}}}
References:
http://ubuntuforums.org/showthread.php?t=634463

{{{
findsmb
}}}

{{{
rm -fr /etc/udev/rules.d/70-*
shutdown -r now
}}}
http://www.tuxfiles.org/linuxhelp/fstab.html

http://www.linuxquestions.org/questions/linux-general-1/how-do-i-create-a-read-only-bind-mount-in-fstab-778248/
{{{
[user@local ~]$ ssh -p 2222 super@remote.server 'tar -czvf full-site-backup_03JUN2009.tar.gz ~/'
}}}
where:
:-p: port
[[~/.fuppes/fuppes.cfg]]
[[~/.fuppes/vfolder.cfg]]
! @@it works@@

{{{
<file ext="mkv">
         <type>VIDEO_ITEM</type>
          <mime_type>video/x-msvideo</mime_type>
          <transcode enabled="true">
             <transcoder>ffmpeg</transcoder>
             <ext>wmv</ext>
             <mime_type>video/x-ms-wmv</mime_type>
             <video_codec>wmv2</video_codec>
             <audio_codec>wmav1</audio_codec>
             <video_bitrate>1800000</video_bitrate>
             <audio_bitrate>128000</audio_bitrate>
          </transcode>
</file>
}}}
{{{
    <device name="Xbox 360" virtual="Xbox 360" enabled="true">
        <user_agent>Xbox/2.0.\d+.\d+ UPnP/1.0 Xbox/2.0.\d+.\d+</user_agent>
        <user_agent>Xenon</user_agent>
        <xbox360>true</xbox360>
        <file_settings>
            <file ext="mp3"><type>AUDIO_ITEM_MUSIC_TRACK</type></file>
            <file ext="jpg"><type>IMAGE_ITEM_PHOTO</type></file>
            <file ext="avi"><type>VIDEO_ITEM</type><mime_type>video/avi</mime_type></f$
        </file_settings>
        <description_values>
        <friendly_name>%s %v : 1 : Windows Media Connect</friendly_name>
        <model_name>Windows Media Connect compatible (%s)</model_name>
        <model_number>2.0</model_number>
        </description_values>
    </device>
}}}
{{{
exiv2 liba52-0.7.4 libexiv2-5 libgif-dev libgif4 libsimage20 libsndfile1  libsndfile1-dev
}}}

{{{
sudo apt-get install ffmpeg build-essential \
libavutil-dev libavformat-dev libavcodec-dev \
subversion libtool automake autoconf \
libsqlite3-dev libpcre3-dev libxml2-dev
}}}

{{{
sudo apt-get install build-essential subversion autoconf automake gettext libtool \ 
 libpcre3-dev libxml2-dev libsqlite3-dev libfaad-dev libmad0-dev libflac-dev \
 libmagick++-dev libvorbis-dev libtwolame-dev libmpcdec-dev uuid-dev  libavformat-dev \ 
 libavutil-dev libavcodec-dev libmpeg4ip-dev libmp4v2-dev libtag1-dev libexpat1-dev
}}}

{{{
sudo apt-get install ffmpeg build-essential \
libavutil-dev libavformat-dev libavcodec-dev \
subversion libtool automake autoconf \
libsqlite3-dev libpcre3-dev libxml2-dev
}}}

{{{
sudo apt-get install lame liblame-dev libflac-dev libvorbis-dev ffmpeg libavformat-dev libmpcdec-dev twolame faad imagemagick
}}}


taglib
http://ubuntuforums.org/showthread.php?t=618781&page=4
{{{
$ sudo /sbin/ethtool eth0
}}}
{{{
ls -l /dev/disk/by-uuid
}}}
Example:
{{{
superuser@NSLU2:~$ ls -l /dev/disk/by-uuid
total 0
lrwxrwxrwx 1 root root 10 Oct 31 11:41 8027a70a-31a7-4b0f-8783-1cea780ab51b -> ../../sda1
lrwxrwxrwx 1 root root 10 Oct 31 11:41 eab45b02-251f-48f2-9fcf-e2d3840dc1d5 -> ../../sda3
superuser@NSLU2:~$
}}}
{{{
$ dmesg |grep eth0
}}}
Output
{{{
eth0: Tigon3 [partno(BCM95704A6) rev 2001 PHY(5704)] (PCIX:133MHz:64-bit) 10/100/1000Base-T Ethernet 00:c0:9f:22:5b:62
eth0: RXcsums[1] LinkChgREG[0] MIirq[0] ASF[0] WireSpeed[1] TSOcap[1]
eth0: dma_rwctrl[769f4000] dma_mask[64-bit]
tg3: eth0: Link is up at 1000 Mbps, full duplex.
tg3: eth0: Flow control is on for TX and on for RX.
eth0: no IPv6 routers present
device eth0 entered promiscuous mode
audit(1231175397.323:3): dev=eth0 prom=256 old_prom=0 auid=4294967295 ses=429496729
}}}
{{{
I=`nvram get wl0_ifname`
echo $I
}}}
{{{
GNU Fortran 4.2.3
for Mac OS X 10.4.4 or higher

This package contains gfortran 4.2.3 for Mac OS X 10.4.4 (Tiger) with Darwin (Apple) drivers. Supported 
targets are ppc, ppc64, i686 and x86_64. Multiple -arch flags can be specified to build fat binaries. All 
compilers are universal i.e. run natively on both Intel and PowerPC Macs. Both dynamic and static libraries 
are supplied.

Requirements:
- Mac OS X 10.4.4 or higher

All files will be installed in /usr/local

The compiler collection can be used by adding /usr/local/bin to your PATH, e.g.:
export PATH=$PATH:/usr/local/bin

To remove this package, run: sudo gfortran-uninstall

NOTE: Programs compiled with this Fortran compiler will dynamically link to libraries in /usr/local/lib to 
prevent incompatibilities with other installed compilers such as Xcode. Use static libraries or supply the 
libraries with your application if you want such binaries to run anywhere.

The preflight script of this package will fix /usr/loca/lib that was broken by Xcode installation (which 
creates an infinite symlink) if the problem is detected.
}}}
grow the OCFS2 file system using 
{{{
tunefs.ocfs2
}}}
[[Add the physical disk to the iscsi target]]
[[Resize the partition with fdisk]]
[[Resize the ocfs2 file system]]

Example:
{{{
tunefs.ocfs2 -S /dev/sdg1
}}}
Pre-encrypted password:
{{{
U6aMy0wojraho
}}}


Restart:
{{{
sudo /etc/init.d/hddtemp restart
}}}
Interface = 127.0.0.1
Port = 7634
{{{
sudo dpkg -L hddtemp
}}}

cn=Manager,dc=reyesaguayo,dc=com

!Install open-iscsi
{{{
sudo aptitude install open-iscsi
}}}
!Set Discovery to Auto-Login
{{{
sudo nano /etc/iscsi/iscsid.conf
}}}
with 
{{{
node.startup = automatic
}}}
!Restart open-iscsi
{{{
sudo /etc/init.d/open-iscsi restart
}}}
!Discover iSCSI target
{{{
sudo iscsiadm -m discovery -t st -p IP_TARGET_HOST
}}}
Example:
{{{
sudo iscsiadm -m discovery -t st -p 192.168.1.86
}}}
The output will look like this:
{{{
192.168.1.86:3260,1 iqn.2001-04:.lan.reyesaguayo.chaski.storage.lun2
192.168.1.86:3260,1 iqn.2001-04:.lan.reyesaguayo.chaski.storage.lun1
}}}

!If using CHAP, add user, password and mode
{{{
sudo nano /etc/iscsi/iscsid.conf
}}}
for the initiator:
{{{
# *************
# CHAP Settings
# *************

# To enable CHAP authentication set node.session.auth.authmethod
# to CHAP. The default is None.
node.session.auth.authmethod = CHAP

# To set a CHAP username and password for initiator
# authentication by the target(s), uncomment the following lines:
node.session.auth.username = chap
node.session.auth.password = chap
}}}
!Restart again open-iscsi to get disk
{{{
sudo /etc/init.d/open-iscsi restart
}}}
!Confirm if iscsi disk is present
{{{
sudo fdisk -l
}}}
!Check if Sessions Started
{{{
sudo iscsiadm -m session
}}}

!Mount the disk after iscsi starts
Edit the file {{{/etc/rc.local}}}
{{{
sudo nano -w /etc/rc.local
}}}
Add {{{mount a}}}
{{{
mount -a
exit 0
}}}
Reboot. It should mount automatically now
!References
http://ubuntuforums.org/showthread.php?t=1210320
{{{
sudo apt-get install db4.2-util
}}}
{{{
sudo yum -y install screen
}}}
{{{
sudo apt-get update
sudo apt-get install kubuntu-desktop
}}}
{{{
$ sudo perl -MCPAN -e "install MP3::Info
}}}
{{{
sudo yum install nfs-utils nfs-utils-lib sytem-config-nfs
}}}
!! Install packages
{{{
sudo yum install nfs-utils nfs-utils-lib sytem-config-nfs 
}}}
!! Create folders for NFS mounts
{{{
sudo mkdir -p /NFS/inti/datadisk; sudo mkdir -p /NFS/inti/downdisk; sudo mkdir -p /NFS/inti/otherdisk                                        
}}}
!! Add mounts to /etc/fstab
{{{
sudo nano /etc/fstab                                                            
}}}
Add these lines:
{{{
inti:/storage/datadisk    /NFS/inti/datadisk        nfs     suid,dev,exec  0  0     
inti:/storage/downdisk   /NFS/inti/downdisk      nfs     suid,dev,exec  0  0     
inti:/storage/otherdisk   /NFS/inti/otherdisk      nfs     suid,dev,exec  0  0     
}}}
{{{
sudo /usr/sbin/exportfs
}}}
!! Restart services
{{{
sudo /sbin/service portmap restart                                              
sudo /sbin/service nfs restart 
}}}
!! Mount NFS in fstab
{{{
sudo mount -a                                                                   
}}}
http://www.webupd8.org/2009/05/install-openoffice-31-in-ubuntu-jaunty.html

{{{
deb http://ppa.launchpad.net/bugbear5/ooo-jaunty/ubuntu jaunty main
}}}
{{{
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys EC4751ED
sudo apt-get update && sudo apt-get dist-upgrade
}}}
!References:
http://www.pvfs.org/cvs/pvfs-2-8-branch-docs/doc//pvfs2-quickstart.pdf
!Ubuntu
{{{
sudo apt-get install  mdadm
}}}
! install curl-devel
{{{
$ sudo apt-get install curl-devel
}}}

Output:
{{{
Reading Package Lists...
Building Dependency Tree...
The following extra packages will be installed:
  e2fsprogs-devel krb5-devel libidn-devel openssl-devel pkgconfig zlib-devel
The following NEW packages will be installed:
  curl-devel e2fsprogs-devel krb5-devel libidn-devel openssl-devel pkgconfig
  zlib-devel
0 upgraded, 7 newly installed, 0 removed and 61 not upgraded.
Need to get 3636kB of archives.
After unpacking 9590kB of additional disk space will be used
}}}

<<tiddler ShowSection with: [[install development environment in ClarkConnect]]>>



!Errors
After running:
{{{
$ sudo ./configure -q && make -s
}}}

the compiling process stops because of these errors:
{{{
...
Package libcurl was not found in the pkg-config search path.
Perhaps you should add the directory containing `libcurl.pc'
to the PKG_CONFIG_PATH environment variable
No package 'libcurl' found
configure: error: Package requirements (libcurl >= 7.16.3) were not met:

Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.

Alternatively, you may set the environment variables LIBCURL_CFLAGS
and LIBCURL_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.
}}}

!References:
[[install torrentflux-b4rt in CentOS]]
 install the default Ubuntu desktop:
{{{
# apt-get install ubuntu-desktop
}}}
google-chrome
google-desktop
virtualbox-3.0

{{{
sudo apt-get install mc ssh rsnapshot nfs-common nfs-kernel-server lvm2 gparted unison 
}}}
{{{
sudo dpkg -i fuppes_0+svn578-0ubuntu1~hardy4_i386.deb
}}}
since dependencies are not re4solved by [[dpkg]], run this command to install them:
{{{
sudo apt-get -f install
}}}
{{{
$ sudo apt-get install cc-devel
}}}

Output:
{{{
Reading Package Lists...
Building Dependency Tree...
The following extra packages will be installed:
  ElectricFence atk autoconf automake automake14 automake15 automake16
  automake17 bison byacc bzip2-devel cdecl cproto ctags cvs cyrus-sasl-devel
  dialog expat-devel flex gcc gcc-c++ gcc-g77 gcc-java gcc-objc gdb gdbm-devel
  gmp-devel gpm-devel gtk2 guile hesiod-devel krbafs krbafs-devel kudzu-devel
  libcap-devel libf2c libgcj libgcj-devel libobjc libstdc++ libstdc++-devel
  libtermcap-devel libtool libusb-devel libuser-devel libxml2-devel lockdev
  lockdev-devel nasm ncurses-devel newt-devel pam pam-devel pango patchutils
  pciutils-devel pmake readline-devel rpm-build slang-devel strace swig tcsh
  umb-scheme
The following packages will be upgraded
  libobjc libstdc++ pam
The following NEW packages will be installed:
  ElectricFence atk autoconf automake automake14 automake15 automake16
  automake17 bison byacc bzip2-devel cc-devel cdecl cproto ctags cvs
  cyrus-sasl-devel dialog expat-devel flex gcc gcc-c++ gcc-g77 gcc-java
  gcc-objc gdb gdbm-devel gmp-devel gpm-devel gtk2 guile hesiod-devel krbafs
  krbafs-devel kudzu-devel libcap-devel libf2c libgcj libgcj-devel
  libstdc++-devel libtermcap-devel libtool libusb-devel libuser-devel
  libxml2-devel lockdev lockdev-devel nasm ncurses-devel newt-devel pam-devel
  pango patchutils pciutils-devel pmake readline-devel rpm-build slang-devel
  strace swig tcsh umb-scheme
3 upgraded, 62 newly installed, 0 removed and 58 not upgraded.
Need to get 42.7MB/47.3MB of archives.
After unpacking 131MB of additional disk space will be used
}}}
[[fuppes: install dependencies]]
[[download and compile fuppes]]
[[fuppes configuration files]]
{{{
sudo apt-get install gcc4
}}}
! Install
!! command
{{{
sudo apt-get install gcc4-gfortran
}}}
!! output:
{{{
[super@colorado ~]$ sudo apt-get install gcc4-gfortran
Reading Package Lists...
Building Dependency Tree...
The following extra packages will be installed:
  gcc4 libgfortran
The following NEW packages will be installed:
  gcc4 gcc4-gfortran libgfortran
0 upgraded, 3 newly installed, 0 removed and 60 not upgraded.
Need to get 3430kB/8356kB of archives.
After unpacking 16.3MB of additional disk space will be used.
}}}

! Test
{{{
sudo apt-get install thunderbird firefox-3.5 filezilla
}}}
<<tiddler ShowSection with: [[install iscsitarget application]]>>
<<tiddler ShowSection with: [[configure iscsitarget]]>>
<<tiddler ShowSection with: [[start/stop/restart iscsitarget]]>>
{{{
sudo apt-get install iscsitarget
}}}
{{{
$ sudo apt-get install kernel-PAE-devel#2.6.18-92.cc4
}}}

* Output
{{{
Reading Package Lists...
Building Dependency Tree...
The following NEW packages will be installed:
  kernel-PAE-devel#2.6.18-92.cc4
0 upgraded, 1 newly installed, 0 removed and 3 not upgraded.
Need to get 4929kB of archives.
After unpacking 15.2MB of additional disk space will be used.
}}}
{{{
sudo apt-get install lm_sensors
}}}
{{{
sudo yum -y install mc 
}}}
{{{
conary update mc=contrib.rpath.org@rpl:1/4.6.1a-1-0.1
}}}
{{{
ipkg -d ram install
}}}
{{{
apt-get -y --force-yes -f install libmp3-info-perl ..
}}}
{{{
NSLU2:/etc/opt# sudo apt-get install phpldapadmin
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
  libpam-ldap
Use 'apt-get autoremove' to remove them.
The following extra packages will be installed:
  apache2 apache2-mpm-prefork apache2-utils apache2.2-common
  libapache2-mod-php5 libapr1 libaprutil1 libmysqlclient15off libpq5
  mysql-common php5-common php5-ldap
Suggested packages:
  apache2-doc apache2-suexec apache2-suexec-custom php-pear
The following NEW packages will be installed:
  apache2 apache2-mpm-prefork apache2-utils apache2.2-common
  libapache2-mod-php5 libapr1 libaprutil1 libmysqlclient15off libpq5
  mysql-common php5-common php5-ldap phpldapadmin
}}}
! dependencies
! install lighttpd
! install mysql server
!! initialize database and tables
!! test
!! set up password
!! install phpmyadmin   

! create the database file witg sqlite
{{{
# cd /var/lib/sqlite
# sqlite torrentflux.db
sqlite > .exit
# ls
}}}
change permissions:
{{{
# chown -R www-data:www-data /var/lib/sqlite
}}}

!!! write the database configuration file 
{{{
/var/www/torrentflux/inc/config/config.db.php
}}}

wget http://download.berlios.de/tf-b4rt/torrentflux-b4rt_1.0-beta2.tar.bz2

Results of database connection:
{{{
Query Ok: CREATE TABLE tf_test ( tf_key VARCHAR(255) NOT NULL default '', tf_value TEXT NOT NULL, PRIMARY KEY (tf_key) ) TYPE=MyISAM
Query Ok: DROP TABLE tf_test
}}}

Configuration writing on:
{{{
 /var/www/torrentflux/inc/config/

/var/www/torrentflux/inc/config/config.db.php
}}}

* Database - Create Tables
* Next: Insert Data Into Database
* Next: Server Configuration
* Configuration - Server Settings Validation
Folder for downloads:
{{{
sudo mkdir --parent /data/appshare/torrentflux
sudo chown -R apache:apache /data/appshare/torrentflux
}}}
* Install utilities:
{{{

}}}

* Add RAR support to CentOS 4
{{{
wget http://dag.wieers.com/packages/unrar/unrar-3.6.2-1.el4.rf.i386.rpm
rpm -Uvh unrar-3.6.2-1.el4.rf.i386.rpm
unrar e rarfile.rar
}}}

* Add uudeview support
encoder and a decoder, for transmitting and receiving binary files over electronic lines
Binary path:
{{{
/usr/bin/uudeview
}}}

* Add php-cli support:
** add a new CC repository:
{{{
rpm [pcn] ftp://rhel-4:hiptop@rh.apt.clarkconnect.com System extras
}}}
to 
{{{

{{{
sudo apt-get install php-cli
}}}

Source: http://www.clarkconnect.com/forums/showflat.php?Cat=0&Board=UBB5&Number=109268&Searchpage=1&Main=109105&Words=torrentflux&topic=&Search=true#Post109268

!References:
[[install Transmission in CentOS]]
{{{
 sudo apt-get install nautilus-gksu nautilus-open-terminal  nautilus-actions gnome-commander
}}}
This will allow to run X sessions in a terminal creating the X authorization:
{{{
sudo apt-get install sux
}}}

{{{
sudo apt-get -y install vsftpd
}}}
Ehen you get this error message:
{{{*sys-package-mgr*: can't write cache file error message}}}

{{{
*sys-package-mgr*: processing new jar, '/opt/java/jdk1.6.0_12/jre/lib/resources.jar'
*sys-package-mgr*: processing new jar, '/opt/java/jdk1.6.0_12/jre/lib/rt.jar'
*sys-package-mgr*: processing new jar, '/opt/java/jdk1.6.0_12/jre/lib/jsse.jar'
*sys-package-mgr*: processing new jar, '/opt/java/jdk1.6.0_12/jre/lib/jce.jar'
*sys-package-mgr*: processing new jar, '/opt/java/jdk1.6.0_12/jre/lib/charsets.jar'
*sys-package-mgr*: processing new jar, '/opt/java/jdk1.6.0_12/jre/lib/ext/sunpkcs11.jar'
*sys-package-mgr*: processing new jar, '/opt/java/jdk1.6.0_12/jre/lib/ext/localedata.jar'
*sys-package-mgr*: processing new jar, '/opt/java/jdk1.6.0_12/jre/lib/ext/sunjce_provider.jar'
*sys-package-mgr*: processing new jar, '/opt/java/jdk1.6.0_12/jre/lib/ext/dnsns.jar'
}}}

Do this:
{{{
sudo mkdir /usr/share/jython/cachedir/packages
}}}
And then:
{{{
sudo chmod 777 /usr/share/jython/cachedir
}}}
!packages installed
gsfont-x11
java-common
odbcinst1debian1 
sun-java6-bin 
sun-java6-jre
unixodbc xutils-dev



{{{
sudo /etc/init.d/ocfs2 restart	# restart service
}}}
{{{
Stopping Oracle Cluster File System (OCFS2) OK
Starting Oracle Cluster File System (OCFS2) OK
}}}

{{{
sudo /etc/init.d/ocfs2 stop    # restart cluster services
}}}
{{{
Stopping Oracle Cluster File System (OCFS2) OK
}}}

{{{
sudo /etc/init.d/ocfs2 start   #start cluster service
}}}
{{{
Starting Oracle Cluster File System (OCFS2) OK
}}}
You must choose a master pass phrase to protect your keychain. The keycha               in
contains passwords and other secret data. You need this pass phrase after
an upgrade or a restore from backup. Please choose something which can not
be guessed easily (no dictionary words) and which you can remember, although
you don't need it regularly. If you can't decide now, type ^C and use
{{{
/usr/local/sharity3/bin/sharity keychain setpass
}}}
or the GUI application
{{{
/usr/local/sharity3/bin/sharitygui
}}}
!! graphical (optional)
: Perform the kickstart installation in graphical mode. This is the default.

!! network

Example:
{{{
network --bootproto=static --ip=192.168.1.88 --netmask=255.255.255.0 --gateway=192.168.1.1 --nameserver 192.168.1.1
}}}
!! skipx
: If present, X is not configured on the installed system.
{{{
for name in $(ps ux | awk '/npviewer.bin/ && !/awk/ {print $2}'); do kill "$name"; done
}}}

Ref: http://ubuntuforums.org/showthread.php?t=994922
{{{
/usr/bin/konqueror --profile filemanagement
}}}

for root:
{{{
kdesu "konqueror --profile filemanagement"
}}}

In Ubuntu Intrepid:
{{{
$ kdesudo "konqueror --profile filemanagement"
}}}
or 
{{{
$ gksudo "konqueror --profile filemanagement"
}}}

{{{
/sbin/e2label /dev/hdbX /mount/point
}}}
sudo aptitude install libpcre3-dev
http://www.dd-wrt.com/wiki/index.php/Iptables_command
{{{
$ ls -l /CIFS/music\[colorado\]/
}}}

{{{
sharity login -s smb://colorado                                   
}}}


!Configure MX records

! Open ports

! Configure mail server 
!!! IP settings
!!! Domain and hostname
In the  [[SMTP Mail Server]] page and ''General Settings'':
{{{
Primary Domain 		thesmartfield.com    
Hostname     	        mail.thesmartfield.com
}}}
! Open webmail
{{{
echo "superuser  ALL=(ALL) ALL" | cat >> /etc/sudoers
}}}
! Download webmin
<<tiddler "Download webmin with wget">>
! Unpack webmin
<<tiddler UnpackWebmin>>
! Install webmin
<<tiddler InstallWebmin>>
!References:
https://forums.openfiler.com/viewtopic.php?id=1908
http://webmin.com/tgz.html



Map A Drive

(Under Windows) If you just want URL access to the space to test, you can use \\IPAddress\ShareName format in Explorer, and supply the login and password credentials you set up.  You can also do a Map Network Drive and supply the share path and the credentials.

Under Linux, you will need to make a folder for the mount point, of which VMWare people typically use /vmimages/smb or similar folder paths.  Then in the /etc/fstab file, you edit with 'nano -w /etc/fstab' and enter a line to link the mount point to the network share.  An example line might be:
{{{
//some.hostname.com/backups  /vmimages/smb1 smbfs rw,dmask=777,fmask=777,credentials=/root/.credentials/.smb_access 0 0
}}}
Modify the first two items, which are [Your Share on OF] and [Your Path for the share to be seen locally]

This also requires you to create a hidden folder: 'mkdir /root/.credentials' and edit the hidden file: 'nano /root/.credentials/.smb_access' and placed the following login and password lines (modify for your credentials):

username=openfiler
password=somepassword

Use Ctrl-X to exit and follow the prompts to save the file.

If all is good, you can mount the share with 'mount -a' and no errors return back.

Source: https://forums.openfiler.com/viewtopic.php?id=2491

{{{
#!/usr/bin/env xdg-open
[Desktop Entry]
Type=Application
Icon=/usr/share/icons/matlab.png
Name=MATLAB R2009a
Comment=Start MATLAB - The Language of Technical Computing
Exec=matlab -desktop
Categories=Development;
}}}

[[mbmon]] has by default:
port = 411

In order for [[gkrellm]] to read temperature and voltages from the motherboard [[mbmon]] requires to be called like this:
{{{
mbmon -r -P port
}}}

The daemon script just does that.
Data in columns:
{{{
sudo mbmon -r 
}}}
Type the text for 'menu'

@@doesn't work@@
{{{
<file ext="mkv">
<type>VIDEO_ITEM</type>
<mime_type>video/x-matroska</mime_type>
<transcode enabled="true">
<transcoder>ffmpeg</transcoder>
<ext>mpg</ext>
<mime_type>video/mpeg</mime_type>
<video_codec>mpeg2video</video_codec>
<audio_codec>mp2</audio_codec>
<ffmpeg_params>-ac 2</ffmpeg_params>
<audio_bitrate>128000</audio_bitrate>
</transcode>
</file>
}}}

http://ubuntuforums.org/showthread.php?t=597650&page=3
{{{
/etc/resolv.conf
}}}
Set the path in the files:
{{{
/etc/default/login 
/etc/default/su 
}}}

powerful disaster recovery suite
Mondo is reliable. It backs up your Debian GNU/Linux server or workstation to
tape, CD-R, CD-RW, NFS or hard disk partition. In the event of catastrophic
data loss, you will be able to restore all of your data [or as much as you
want], from bare metal if necessary. Mondo is in use by numerous blue-chip
enterprises and large organizations, dozens of smaller companies, and tens of
thousands of users.

Mondo is comprehensive. Mondo supports LVM, RAID, ext2, ext3, JFS, XFS,
ReiserFS, VFAT, and can support additional file systems easily. It supports
adjustments in disk geometry, including migration from non-RAID to RAID. Mondo
runs on all major Linux distributions and is getting better all the time. You
may even use it to backup non-Linux partitions, such as NTFS.

Homepage: http://www.mondorescue.org
{{{
Setting up afio (2.5-4) ...
Setting up lzop (1.01-4) ...
Setting up mindi-busybox (1.2.1-2) ...

Setting up syslinux (3.11-3ubuntu4) ...
Setting up ms-sys (2.1.0-1) ...
Setting up mindi (2.20-2ubuntu1) ...
Setting up buffer (1.19-8) ...
Setting up mondo (2.20-1.1) ...

}}}


http://aplawrence.com/Linux/mount_bind.html
Use this in FTP folders when symbolic links do not work:
{{{
mount /path/src /path/dest --bind --ro
}}}

Then make the change permanent in /etc/fstab:
{{{
/path/src        /path/dest         auto    ro,bind        0       0
}}}

Source: http://www.seanodonnell.com/code/?id=74
At this point, we are ready to edit the /etc/fstab file. I added:
{{{
/dev/sdb                /data                   ocfs2   _netdev         0 0
}}}
The _netdev command tells the OS that this drive is mounted over the network, so we need to wait for the network to be available before attempting to mount this drive. By this point, OCFS will have started up, so it will be ready to handle the drive. You can see that I’m mounting mine to a /data directory.
{{{
sudo mount --bind /aux/v1500g/ /var/flexshare/shares
}}}
{{{
sudo mount -t cifs //server/install /mnt/smb/inti/install -o credentials=/home/super/.smbpasswd
}}}
then map the new mount to a home folder:
{{{
sudo ln -s /mnt/smb/server/install ~/install
}}}
{{{
sudo mount -t ocfs2 /dev/sdg1 /storage/datadisk
}}}
Example:
we have /dev/foo mounted at /foo and I want a "link" to that under /home/fred:
{{{
mount --bind /foo /home/fred/foo
}}}
Example:
{{{
mount --bind /var/ftp/music /home/msfz751/music
}}}

Example:
!in fstab
{{{
/NFS/inti/downdisk            /data/downloads    none     bind     0 0 
}}}


/my/real/dir /to/mount/dir none rw,bind 0 0

none - No options associated with mount point (like quotas)
rw - The mount point is read and writeable.
bind - The mount point is a bound directory



Plugins available in /usr/share/munin/plugins should be activated through soft links to /etc/munin/plugins/
{{{
# Normal Plugins
sudo ln -s /usr/share/munin/plugins/<module> /etc/munin/plugins/

# Example. For module hddtemp_smartctl
sudo ln -s /usr/share/munin/plugins/hddtemp_smartctl /etc/munin/plugins/

# Wildcard-Plugin
sudo ln -s /usr/share/munin/plugins/<modul>_ /etc/munin/plugins/<module>_<element>
}}}

After activating the plugins munin-node should be re-started.
<<tagCloud systemConfig BugReport MenuPackage MediaPackage DiscoveryPackage TaskPackage YourSearchProject  Plugin Help includeNew>>

Restart mysql:
{{{
sudo /etc/init.d/mysql restart
}}}

Change mysql adm inistrator password:
{{{
sudo /etc/init.d/mysql reset-password
}}}
!Important keys
Ctrl+K:	cut line or selected text and save it in the buffer
Ctrl+U:	paste line or selected text in the buffer
Alt+A:	select text
ALt+6:	copy text
Ctrl+X:	exit nano

!Disable wrapping when opening a file
{{{
nano -w /etc/fstab
}}}

!Miscelaneous
@@^@@ is @@Ctrl@@
@@M@@ is @@Alt@@

!References:
http://www.gentoo.org/doc/en/nano-basics-guide.xml

{{{
Need to get 402kB of archives.
After unpacking 1323kB of additional disk space will be used.
Get:1 http://us.archive.ubuntu.com feisty/main libevent1 1.1a-1 [18.0kB]
Get:2 http://us.archive.ubuntu.com feisty/main libgssapi2 0.10-4build1 [21.4kB]
Get:3 http://us.archive.ubuntu.com feisty/main libnfsidmap2 0.18-0build1 [21.3kB]
Get:4 http://us.archive.ubuntu.com feisty-updates/main librpcsecgss3 0.14-2ubuntu1.2 [31.9kB]
Get:5 http://us.archive.ubuntu.com feisty/main portmap 5-24 [33.9kB]
Get:6 http://us.archive.ubuntu.com feisty/main nfs-common 1:1.0.12-4 [132kB]
Get:7 http://us.archive.ubuntu.com feisty/main nfs-kernel-server 1:1.0.12-4 [143kB]
Fetched 402kB in 2s (193kB/s)
Preconfiguring packages ...

}}}
http://www.dd-wrt.com/wiki/index.php/Useful_Scripts
{{{
ssid=`nvram get wl0_ssid`
}}}
{{{
nvram set manual_boot_nv=1
}}}


{{{
sudo mount.ocfs2 /dev/drbd0 /drbd0
}}}

{{{
mount -t ocfs2 /dev/ndas-00xxxxxx:0p1 /mnt/ocfs2
}}}

{{{

}}}

{{{

}}}
{{{
sudo /etc/init.d/o2cb status
sudo /etc/init.d/o2cb unload
sudo /etc/init.d/o2cb online


sudo dpkg-reconfigure -p medium -f readline ocfs2-tools




}}}
{{{
sudo nano /etc/ocfs2/cluster.conf
}}}
Example:
{{{
node:   
        name = a3800xp64
        cluster = ocfs2
        number = 0
        ip_address = 192.168.1.6
        ip_port = 7777

node:   
        name = chaski.reyesaguayo.lan
        cluster = ocfs2
        number = 1
        ip_address = 192.168.1.86
        ip_port = 7777

node:   
        name = inti.reyesaguayo.lan
        cluster = ocfs2
        number = 2
        ip_address = 192.168.1.90
        ip_port = 7777

node:   
        name = tor.reyesaguayo.vir
        cluster = ocfs2
        number = 3
        ip_address = 192.168.1.132
        ip_port = 7777

cluster:
        name = ocfs2
        node_count = 4
}}}
!Build Your Own Oracle RAC Cluster on Oracle Enterprise Linux and iSCSI
http://www.oracle.com/technology/pub/articles/hunter_rac10gr2_iscsi.html

!Building an Inexpensive Oracle RAC 11g Release 1 on Linux - (CentOS 5.1 / iSCSI)
http://www.idevelopment.info/data/Oracle/DBA_tips/Oracle11gRAC/CLUSTER_10.shtml
{{{
sudo mkfs.ocfs2 /dev/drbd0
}}}

{{{
mkfs.ocfs2 -b 4k -C 32K -L "MyOCFS2Cluster" -N 4 /dev/sda2
}}}

{{{
mkfs -t ocfs2 /dev/ndas-00xxxxxx:0p1 # p1 means the first partition
}}}

{{{
mkfs.ocfs2 -b 4K -T mail -N 2 -v /dev/drbd0
}}}

{{{
mkfs -t ocfs2 -N 2 -L ocfs2_drbd0 /dev/drbd0
}}}

{{{
mkfs.ocfs2 -b 4k -C 32K -L "label" -N 4 /dev/sdxX
}}}
You could either use the console or use mkfs.ocfs2 directly to format the volume. For console, refer to the user's guide.
{{{
	# mkfs.ocfs2 -L "oracle_home" /dev/sdX
}}}
The above formats the volume with default block and cluster sizes, which are computed based upon the size of the volume.
{{{
	# mkfs.ocfs2 -b 4k -C 4k -L "oracle_home" -N 8 /dev/sdX
}}}
The above formats the volume for 8 nodes with a 4K block size and a 4K cluster size.

Source: http://oss.oracle.com/projects/ocfs2/dist/documentation/ocfs2_faq.html

the default share name is a combination of volumegroup.volume.foldername by default, but it can be overridden by supplying the override share name. It will allow you to reference the share in the format of  {{{//IP_or_HostName/ShareName}}}

Reference: https://forums.openfiler.com/viewtopic.php?id=2491

{{{
  apt-move cfengine2 dash debootstrap dhcp3-server fai-client fai-doc
  fai-kernels fai-quickstart fai-server libapt-pkg-perl nfs-kernel-server
  rsh-server syslinux tftpd-hpa
}}}
!! Generate the keys at the client
{{{
super@client:~$ ssh-keygen -t rsa
}}}

!! Create .ssh folder in server if doesn't exit yet
{{{
super@client:~$ ssh super@192.168.1.112 mkdir -p .ssh
}}}

!! Copy the public key to the Sun platform
{{{
super@client:~$ scp ~/.ssh/id_rsa.pub 192.168.1.112:/tmp
}}}

!! Run the Sun platform command "add public key"
{{{
super@client:~$ ssh 192.168.1.112 access add public key -k /tmp/id_rsa.pub
}}}

!! Remove key from /tmp after use
{{{
super@client:~$ ssh 192.168.1.112 rm -f /tmp/id_rsa.pub
}}}

!! Turn on the OS
{{{
super@client:~$ ssh super@192.168.1.112 "platform set power state on"
}}}
!! Create the keys at the client
{{{
super@serverA:~> ssh-keygen -t rsa
}}}

!! Create .ssh folder at remote server
{{{
super@serverA:~> ssh userB@serverB mkdir -p .ssh
}}}

!! Copy keys from client to server
{{{
super@serverA:~> cat .ssh/id_rsa.pub | ssh userB@serverB 'cat >> .ssh/authorized_keys'
}}}

!! Change the permissions of folder .ssh to 700 at remote server
{{{
super@serverA:~> ssh userB@serverB chmod 0700 .ssh
}}}

!!Change the permissions of .ssh/authorized_keys2 to 640
{{{
super@serverA:~> ssh erB@serverB  chmod 640 .ssh/authorized_keys
}}}

!! Test
{{{
a@A:~> ssh b@B hostname

a@A:~> ssh serverB uname -a
}}}

!If you already have a local id_rsa.pub and the remote .ssh exists
!! Copy keys from client to server
{{{
super@serverA:~> cat .ssh/id_rsa.pub | ssh userB@serverB 'cat >> .ssh/authorized_keys'
}}}







Source: http://linuxproblem.org/art_9.html
{{{
ln -s /CIFS/share\[server\] /myshare 
}}}

Example:
{{{
ln -s /CIFS/music\[colorado\] ~/music
}}}
{{{
for ip in 192.168.1.{80..81}; do ping -c 1 -t 1 $ip > /dev/null && echo "${ip} is up"; done
}}}
http://stackoverflow.com/questions/733418/how-can-i-write-a-linux-bash-script-that-tells-me-which-computer-are-on-in-my-la
Type the text for 'plugin'
Type the text for 'plugin-examples'
http://www.tjansson.dk/?p=54
{{{
[public]
        comment = Public Campusnet Shares
        browsable = yes
        path = /data/pub
        public = yes
        writable = no
        write list = dawuss
        guest ok = yes
}}}

The {{{public}}} keyword means any user without password can access the share.

Source: http://micheljansen.org/blog/entry/182
{{{
/etc
}}}

rPath Appliance Platform Agent
<<tiddler ShowSection with: [[username and password, rPath]]>>

{{{
sudo apt-get remove sun-java6-jdk  sun-java6-bin
}}}
or
{{{
sudo apt-get remove java-common openjdk-6-jre-headless openjdk-6-jre openjdk-6-jre-lib
}}}
{{{
rm -rf /path/to/the/folder
}}}
{{{
sun:/home/# var="test a string"
sun:/home/# echo $var | sed -e "s/ //g"
testastring
}}}

{{{
bash-3.00$ v="one two three"
bash-3.00$ v=${v/ /}
bash-3.00$ echo $v
onetwo three
bash-3.00$ v="one two three"
bash-3.00$ while [[ $v == *\ * ]] ; do v=${v/ /} ; done
bash-3.00$ echo $v
onetwothree
bash-3.00$
}}}

Source: http://www.unix.com/shell-programming-scripting/34503-delete-spaces-variable-unix-script.html
{{{
rpm -e VMware-server
}}}
{{{
service qos restart
}}}
{{{
service wan restart 
}}}
{{{
service firewall restart
}}}
After pausing a listing with ctrl-s resume the operation with:
{{{
ctrl-q
}}}

By default it doesn't come with a root password.  You need to log in locally to the virtual machine console and assign a password with the command {{{passwd}}}.

Reference: https://forums.openfiler.com/viewtopic.php?pid=3908


This is because perl up to version 5.10.x doesn't give direct access to 
the lchown() system call. There is a third-party module available on 
the CPAN for it though, and if it's installed then rsnapshot will use 
it. You can install it like so: 
{{{
sudo perl -MCPAN -e 'install Lchown' 
}}}
http://www.backupcentral.com/phpBB2/two-way-mirrors-of-external-mailing-lists-3/rsnapshot-24/could-not-lchown-symlink-89132/

{{{
user@local:~$ rsync -va --progress -e "ssh -p 222 -i /home/user/.ssh/id_rsa"
 ~/Pictures/ rem_user@remote_host.com:~/images/
}}}
remote port of website is 2222.
We want to exclude file {{{/public_ftp/.ftpquota}}}, otherwise transmission ends because is owned by root.
The dot at the end of the command means we want to backup to the current local directory.
{{{
rsync -avz --progress --exclude '/public_ftp/.ftpquota' -e "ssh -p 2222" user@remote.com:~/ .
}}}

{{{
rsync -avz --progress --exclude=.ftpquota -e "ssh -p 2222" user@remote.com:~/  ~/remote
}}}
1. Place the file in:
{{{
/etc/init.d
}}}
2. Make the file executable:
{{{
$chmod +x myScript
}}}
3. Make the file to start at boot:
{{{
$ update-rc.d myScript defaults 
}}}

The option “defaults� puts a link to start myScript in run levels 2, 3, 4 and 5. (and puts a link to stop myScript into 0, 1 and 6.)

[[more...|http://ubuntu.wordpress.com/2005/09/07/adding-a-startup-script-to-be-run-at-bootup/#comment-833]]
{{{
color0  (black)  	 = Black
color1 	(red)	 	= Red3
color2 	(green) 	= Green3
color3 	(yellow) 	= Yellow3
color4 	(blue) 		= Blue3
color5 	(magenta) 	= Magenta3
color6 	(cyan)	 	= Cyan3
color7 	(white) 	= AntiqueWhite
color8 	(bright black) 	= Grey25
color9 	(bright red) 	= Red
color10 (bright green) 	= Green
color11 (bright yellow) = Yellow
color12 (bright blue) 	= Blue
color13 (bright magenta) = Magenta
color14 (bright cyan) 	= Cyan
color15 (bright white) 	= White
foreground 		= Black
background 		= White 
}}}

Create a file in your home directory named .smbpasswd (the period at the start of the filename makes it a hidden file). Modifify the permissions on the file so only you have permission to read and write to it. The only thing in the file is your Windows username and password. Here's the commands you would enter to create the credentials file:
{{{
cd
echo username=mywindowsusername > .smbpasswd
echo password=mywindowspassword >> .smbpasswd
chmod 600 .smbpasswd
}}}
Substitute your Windows username and password in the commands. No one else except root would be able to read the contents of this file.

Once that is created, you would modify the line in the /etc/fstab file to look like this:

//servername/sharename /mountdirectory smbfs credentials=/home/myhomedirectory/.smbpasswd 0 0

You can also use the credentials option in the smbmount command for security reasons. That command would look like this:

smbmount //servername/sharename /mountdirectory -o credentials=/home/myhomedirectory/.smbpasswd

Source: http://www.justlinux.com/nhf/Filesystems/Mounting_smbfs_Shares_Permanently.html
<<saveChanges>>
{{{
/tmp/var/spool/cron/crontabs
}}}

* CTRL + A + p for previous screen
* CTRL + A + n for next screen
* CTRL + A + A to name screen
* CTRL + a + S split screen
* CTRL + a + TAB change screen
* CTRL + a + q close split screen
{{{
#!/bin/bash
fan1=`/usr/bin/sensors | grep fan1 | cut -d ':' -f2 | cut -d 'R' -f1`
fan2=`/usr/bin/sensors | grep fan2 | cut -d ':' -f2 | cut -d 'R' -f1`
fan3=`/usr/bin/sensors | grep fan3 | cut -d ':' -f2 | cut -d 'R' -f1`

fan11=`echo $fan1 | sed -e "s/ //g"`
fan21=`echo $fan2 | sed -e "s/ //g"`
fan31=`echo $fan3 | sed -e "s/ //g"`
echo fan1:$fan11 fan2:$fan21 fan3:$fan31
}}}

Output:
{{{
fan1:0 fan2:9926 fan3:9926
}}}
{{{
#!/usr/bin/php -f
<?php

//$parm = $_SERVER["argv"][1];
$parm = " -d ata /dev/hda";

$max_allowed = 40;

$foo=exec("/usr/bin/sudo /usr/sbin/smartctl -a $parm | egrep -i \"Celsius|Current\" | grep Temp");
$foo=explode(" ",$foo);
$foo=$foo[sizeof($foo)-1];
$foo=explode(" ",trim(ltrim($foo)));
$foo="temp:".intval($foo[0])." allowed:".$max_allowed;
echo $foo;
?>
}}}
https://forums.openfiler.com/viewtopic.php?pid=3649#p3649

[[remake_vol_info]]
Ref.: http://howtoforge.com/vmware_tools_on_linux_p2

!Install the virtual keyboard:
{{{
apt-get install xvkbd
}}}

!Create these two scripts:
!!switcher1.sh
{{{
#! /bin/sh
sleep 2
xvkbd -text "\C\A\[Right]"
sleep 2 
vmware-toolbox --minimize &> /dev/null
}}}

!!switcher2.sh
{{{
#! /bin/sh
sleep 10
xvkbd -text "\C\A\[Left]"
}}}
!Make them executable
!Load the scripts at login with "Sessions"
{{{
echo "echo 12000 > /proc/sys/vm/dirty_writeback_centisecs" | sudo sh
}}}
Note that there are two echo commands.

Ref.: http://www.linuxjournal.com/content/running-complex-commands-sudo

{{{
/usr/bin/sensors | grep temp2 | /bin/awk '{print $2}'
}}}
{{{
$ /usr/bin/sensors | grep fan | cut -d ':' -f2 | cut -d 'R' -f1
}}}
{{{
Usage: sp get date {-h|--help}
       sp get dns {-h|--help}
       sp get events {-h|--help}
       sp get hostname {-h|--help}
       sp get mac {-h|--help}
       sp get ip {-h|--help}
       sp get locatelight {-h|--help}
       sp get logfile {-h|--help}
       sp get jnet {-h|--help}
       sp get mounts {-h|--help}
       sp get port80 {-h|--help}
       sp get smtp server {-h|--help}
       sp get smtp subscribers {-h|--help}
       sp get snmp proxy community {-h|--help}
       sp get snmp community {-h|--help}
       sp get snmp-destinations {-h|--help}
       sp get ssl {-h|--help}
       sp get status {-h|--help}
       sp get tdulog {-h|--help}
}}}
set the RAM to 64MB by issuing the commands to change sdram_init from 0x010b to 0x0113.
{{{
nvram set sdram_init=0x0113
nvram set sdram_ncdl=0x000
nvram commit
reboot
}}}
http://ubuntuforums.org/showthread.php?t=858475

Quoted:
"Since version 4.8, openssh has had the ability to (fairly) easily chroot sftp users into a specified directory using a new sshd_config directive, ChrootDirectory. The purpose of this guide is to demonstrate how to set up a simple chrooted sftp system from square one implementing this self-contained chroot mechanism (using only openssh without the need for rssh), and how to add users under this paradigm."
parttions:
{{{
/boot		100MB	primary
/root		30GB	primary
/home	4GB		logical
/opt		3GB		logical
swap		2GB		logical
}}}
sftp://arequipa.local/

smb://arequipa/

network:///

sftp://hda.local/
{{{
You must choose a master pass phrase to protect your keychain. The keychain
contains passwords and other secret data. You need this pass phrase after
an upgrade or a restore from backup. Please choose something which can not
be guessed easily (no dictionary words) and which you can remember, although
you don't need it regularly. If you can't decide now, type ^C and use

/opt/sharity3/bin/sharity keychain setpass

or the GUI application

/opt/sharity3/bin/sharitygui

later to set your pass phrase.
------------------------------
}}}
{{{
cat /tmp/var/lib/misc/dnsmasq.leases
}}}
<<forEachTiddler 
 where 
 'tiddler.tags.contains("front")'
>>
{{{
sudo apt-cache showpkg ssh | less
}}}

Example:
{{{
sudo apt-cache showpkg ocfs2-tools
}}}
{{{
# vdf -h

Filesystem            Size  Used Avail Use% Mounted on
/dev/sda3              22G  9.0G   12G  45% /
/dev/sda1             198M   26M  162M  14% /boot
none                  132M     0  132M   0% /dev/shm
/dev/sda6             2.0G   46M  1.8G   3% /var/log
/vmfs/devices         1.5T     0  1.5T   0% /vmfs/devices
/vmfs/volumes/47bcf597-6e521c77-e741-00093d115fa8
                      112G  561M  111G   0% /vmfs/volumes/storage1
/vmfs/volumes/47caac5a-3012b541-d70a-00093d115fa7
                      274G  258G   16G  94% /vmfs/volumes/datastore1
}}}
{{{
$ sudo /usr/sbin/smartctl -a /dev/hda
}}}
 * Enabling S.M.A.R.T....
 * /dev/hda...
 * (failed)...
 * /dev/hdb...
 * (failed)...
   ...done.
 * Starting S.M.A.R.T. daemon smartd
   ...fail!
{{{
[global]
# General
netbios name = AREQUIPA
netbios aliases = COLORADO
workgroup = REYESAGUAYO
server string = Home Server

# Logging
syslog = 0
log level = 1
log file = /var/log/samba/%L-%m
max log size = 0
utmp = Yes

# Network
bind interfaces only = yes
interfaces = lo eth0 eth1 
smb ports = 139

# Printing
printcap name = /etc/printcap
load printers = Yes

# Security settings
security = user
guest account = guest
#restrict anonymous = 2

# WINS
wins support = Yes
wins server = 

# PDC
domain logons = Yes
add machine script = /usr/sbin/samba-add-machine "%u"
logon drive = U:
logon script = logon.cmd
logon path = \\%L\profiles\%U
logon home = \\%L\%U

# Other
preferred master = Yes
domain master = Yes
unix password sync = Yes
passwd program = /usr/sbin/userpasswd %u
passwd chat = *password:* %n\n *password:* %n\n *successfully.*
username map = /etc/samba/smbusers

# LDAP
include = /etc/samba/smb.ldap.conf

# Winbind
include = /etc/samba/smb.winbind.conf

#============================ Share Definitions ==============================

include = /etc/samba/flexshare.conf

[homes]
	comment = Home Directories
	path = /aux/v1500g//home/%U
	valid users = %D\%S
	read only = No
	browseable = No
	available = Yes

[printers]
	comment = Print Spool
	path = /var/spool/samba
	printing = cups
	cups options = raw
	use client driver = Yes
	printable = Yes
	read only = No
	browseable = No
	available = No

[print$]
	comment = Printer Drivers
	path = /var/samba/drivers
	read only = No
	browseable = No
	available = No

[netlogon]
	comment = Network Logon Service
	path = /var/samba/netlogon
	read only = No
	locking = No
	browseable = No
	available = Yes

[profiles]
	comment = Profile Share
	path = /var/samba/profiles
	read only = No
	profile acls = Yes
	browseable = No
	available = Yes
}}}

{{{
[user@local ~]$ cat .ssh/id_rsa.pub | ssh -p 2222  user@remote.server 'cat >> .ssh/authorized_keys'
}}}
{{{
# service dhcpd start
}}}
start up dhcpd and begin installing:
{{{
/etc/init.d/dhcpd start
}}}
To enable dhcpd at boot, also run:
{{{
/sbin/chkconfig dhcpd on
}}}
gnome-session &

Sudo adds a log entry of the command(s) run (In /var/log/auth.log). 

More: https://help.ubuntu.com/community/RootSudo
{{{
ln -s /data/private/SharedDocuments/LinuxAdmin.html /data/home/shared/linux-home/Databases/
}}}
{{{ $ sudo rsync -va --progress -e "ssh -i /root/rsync-key-zeus" /data/ root@quilla:/backup/
}}}
It will synchronize the remote local folder "/data" with local folder "/backup" at host "quilla" and user "root". It will use a key  in "/root/rsync-key-zeus" through ssh.
Gnome printer application
Type the text for 'systemTiddlers'
<<tiddler TabTimeline>>
Type the text for 'template'
{{{
#### Contents of the preconfiguration file
### Localization
# Locale sets language and country.
d-i debian-installer/locale string en_US

# Keyboard selection.
# Disable automatic (interactive) keymap detection.
d-i console-setup/ask_detect boolean false
#d-i console-setup/modelcode string pc105
d-i console-setup/layoutcode string us
# To select a variant of the selected layout (if you leave this out, the
# basic form of the layout will be used):
#d-i console-setup/variantcode string dvorak

### Network configuration
# netcfg will choose an interface that has link if possible. This makes it
# skip displaying a list if there is more than one interface.
d-i netcfg/choose_interface select auto

# To pick a particular interface instead:
#d-i netcfg/choose_interface select eth1

# If you have a slow dhcp server and the installer times out waiting for
# it, this might be useful.
#d-i netcfg/dhcp_timeout string 60

# If you prefer to configure the network manually, uncomment this line and
# the static network configuration below.
#d-i netcfg/disable_dhcp boolean true

# If you want the preconfiguration file to work on systems both with and
# without a dhcp server, uncomment these lines and the static network
# configuration below.
#d-i netcfg/dhcp_failed note
#d-i netcfg/dhcp_options select Configure network manually

# Static network configuration.
d-i netcfg/get_nameservers string 192.168.1.1
d-i netcfg/get_ipaddress string 192.168.1.42
d-i netcfg/get_netmask string 255.255.255.0
d-i netcfg/get_gateway string 192.168.1.1
d-i netcfg/confirm_static boolean true

# Any hostname and domain names assigned from dhcp take precedence over
# values set here. However, setting the values still prevents the questions
# from being shown, even if values come from dhcp.
d-i netcfg/get_hostname string unassigned-hostname
d-i netcfg/get_domain string unassigned-domain

# Disable that annoying WEP key dialog.
d-i netcfg/wireless_wep string
# The wacky dhcp hostname that some ISPs use as a password of sorts.
#d-i netcfg/dhcp_hostname string radish

### Mirror settings
d-i mirror/country string enter information manually
d-i mirror/http/hostname string [UDA_IPADDR]
d-i mirror/http/directory string /[OS]/[FLAVOR]
#d-i mirror/http/hostname string archive.ubuntu.com
#d-i mirror/http/directory string /ubuntu
d-i mirror/http/proxy string

# Suite to install.
#d-i mirror/suite string feisty
d-i mirror/suite string jaunty
# Suite to use for loading installer components (optional).
#d-i mirror/udeb/suite string feisty
d-i mirror/udeb/suite string jaunty

### Partitioning
# If the system has free space you can choose to only partition that space.
# Note: this must be preseeded with a localized (translated) value.
d-i partman-auto/init_automatically_partition \
       select Guided - use entire disk
#      select Use the largest continuous free space

# Alternatively, you can specify a disk to partition. The device name must
# be given in traditional non-devfs format.
# For example, to use the first SCSI hard disk:
d-i partman-auto/disk string /dev/sda
# d-i partman-auto/disk string /dev/discs/disc0/disc
# Or, if you want to use LVM:
#d-i partman-auto-lvm/disk string /dev/sda

# You can choose from any of the predefined partitioning recipes.
# Note: this must be preseeded with a localized (translated) value.
d-i partman-auto/choose_recipe \
       select All files in one partition (recommended for new users)
#d-i partman-auto/choose_recipe \
#       select Separate /home partition
#d-i partman-auto/choose_recipe \
#       select Separate /home, /usr, /var, and /tmp partitions

# Or provide a recipe of your own...
# The recipe format is documented in the file devel/partman-auto-recipe.txt.
# If you have a way to get a recipe file into the d-i environment, you can
# just point at it.
#d-i partman-auto/expert_recipe_file string /hd-media/recipe

# If not, you can put an entire recipe the preconfiguration file in one
# (logical) line. This example creates a small /boot partition, suitable
# swap, and uses the rest of the space for the root partition:
#d-i partman-auto/expert_recipe string                         \
#      boot-root ::                                            \
#              40 50 100 ext3                                  \
#                      $primary{ } $bootable{ }                \
#                      method{ format } format{ }              \
#                      use_filesystem{ } filesystem{ ext3 }    \
#                      mountpoint{ /boot }                     \
#              .                                               \
#              500 10000 1000000000 ext3                       \
#                      method{ format } format{ }              \
#                      use_filesystem{ } filesystem{ ext3 }    \
#                      mountpoint{ / }                         \
#              .                                               \
#              64 512 300% linux-swap                          \
#                      method{ swap } format{ }                \
#              .

# This makes partman automatically partition without confirmation.
d-i partman/confirm_write_new_label boolean true
d-i partman/choose_partition \
       select Finish partitioning and write changes to disk
d-i partman/confirm boolean true

### Clock and time zone setup
# Controls whether or not the hardware clock is set to UTC.
d-i clock-setup/utc boolean true

# You may set this to any valid setting for $TZ; see the contents of
# /usr/share/zoneinfo/ for valid values.
d-i time/zone string US/Eastern

### Apt setup
# You can choose to install restricted and universe software, or to install
# software from the backports repository.
#d-i apt-setup/restricted boolean true
#d-i apt-setup/universe boolean true
#d-i apt-setup/backports boolean true
# Uncomment this to avoid adding security sources, or
# add a hostname to use a different server than security.ubuntu.com.
d-i apt-setup/security_host string

# Additional repositories, local[0-9] available
d-i apt-setup/local0/repository string \
       deb http://[UDA_IPADDR]/[OS].[FLAVOR] feisty main
#d-i apt-setup/local0/comment string local server
# Enable deb-src lines
#d-i apt-setup/local0/source boolean true
# URL to the public key of the local repository
#d-i apt-setup/local0/key string http://local.server/key

### Account setup
# Skip creation of a root account (normal user account will be able to
# use sudo). The default is false; preseed this to true if you want to set
# a root password.
#d-i passwd/root-login boolean false
# Alternatively, to skip creation of a normal user account.
#d-i passwd/make-user boolean false

# Root password, either in clear text
d-i passwd/root-password password test
d-i passwd/root-password-again password test
# or encrypted using an MD5 hash.
#d-i passwd/root-password-crypted password [MD5 hash]

# To create a normal user account.
d-i passwd/user-fullname string Ubuntu User
d-i passwd/username string ubuntu
# Normal user's password, either in clear text
d-i passwd/user-password password test
d-i passwd/user-password-again password test
# or encrypted using an MD5 hash.
#d-i passwd/user-password-crypted password [MD5 hash]

### Base system installation
# Select the initramfs generator used to generate the initrd for 2.6 kernels.
#d-i base-installer/kernel/linux/initramfs-generators string yaird

### Boot loader installation
# Grub is the default boot loader (for x86). If you want lilo installed
# instead, uncomment this:
#d-i grub-installer/skip boolean true

# This is fairly safe to set, it makes grub install automatically to the MBR
# if no other operating system is detected on the machine.
d-i grub-installer/only_debian boolean true

# This one makes grub-installer install to the MBR if if finds some other OS
# too, which is less safe as it might not be able to boot that other OS.
d-i grub-installer/with_other_os boolean true

# Alternatively, if you want to install to a location other than the mbr,
# uncomment and edit these lines:
#d-i grub-installer/bootdev  string (hd0,0)
#d-i grub-installer/only_debian boolean false
#d-i grub-installer/with_other_os boolean false

### Package selection
tasksel tasksel/first multiselect ubuntu-standard, ubuntu-desktop
#tasksel tasksel/first multiselect ubuntu-standard, lamp-server
#tasksel tasksel/first multiselect ubuntu-standard, kubuntu-desktop

#d-i pkgsel/include string openssh-server build-essential

# Some versions of the installer can report back on what software you have
# installed, and what software you use. The default is not to report back,
# but sending reports helps the project determine what software is most
# popular and include it on CDs.
#popularity-contest popularity-contest/participate boolean false

### Finishing up the first stage install
# Avoid that last message about the install being complete.
d-i finish-install/reboot_in_progress note

# This will prevent the installer from ejecting the CD during the reboot,
# which is useful in some situations.
#d-i cdrom-detect/eject boolean false

### X configuration
# X can detect the right driver for some cards, but if you're preseeding,
# you override whatever it chooses. Still, vesa will work most places.
#xserver-xorg xserver-xorg/config/device/driver select vesa

# A caveat with mouse autodetection is that if it fails, X will retry it
# over and over. So if it's preseeded to be done, there is a possibility of
# an infinite loop if the mouse is not autodetected.
#xserver-xorg xserver-xorg/autodetect_mouse boolean true

# Monitor autodetection is recommended.
xserver-xorg xserver-xorg/autodetect_monitor boolean true
# Uncomment if you have an LCD display.
#xserver-xorg xserver-xorg/config/monitor/lcd boolean true
# X has three configuration paths for the monitor. Here's how to preseed
# the "medium" path, which is always available. The "simple" path may not
# be available, and the "advanced" path asks too many questions.
xserver-xorg xserver-xorg/config/monitor/selection-method \
       select medium
xserver-xorg xserver-xorg/config/monitor/mode-list \
       select 1024x768 @ 60 Hz

### Preseeding other packages
# Depending on what software you choose to install, or if things go wrong
# during the installation process, it's possible that other questions may
# be asked. You can preseed those too, of course. To get a list of every
# possible question that could be asked during an install, do an
# installation, and then run these commands:
#   debconf-get-selections --installer > file
#   debconf-get-selections >> file


#### Advanced options
### Shell commands
# d-i preseeding is inherently not secure. Nothing in the installer checks
# for attempts at buffer overflows or other exploits of the values of a
# preconfiguration file like this one. Only use preconfiguration files from
# trusted locations! To drive that home, and because it's generally useful,
# here's a way to run any shell command you'd like inside the installer,
# automatically.

# This first command is run as early as possible, just after
# preseeding is read.
#d-i preseed/early_command string anna-install some-udeb

# This command is run just before the install finishes, but when there is
# still a usable /target directory. You can chroot to /target and use it
# directly, or use the apt-install and in-target commands to easily install
# packages and run commands in the target system.
#d-i preseed/late_command string apt-install zsh; in-target chsh -s /bin/zsh
}}}

t1
!!Install
{{{
sudo apt-get install testdisk
}}}
!!Run
{{{
sudo testdisk
}}}
!!Recovery
* Choose to create log file
* Select device to recocer. I.e.: /dev/sdb
* Select INTEL/PC Partition
* Choose 'Analyze', 'Proceed' and select 'Search'.
* If you are very, very sure with the findings select "Write to Disk"
* Reboot to see changes
!!References
http://ubuntuforums.org/showthread.php?t=387922

this means that the debian installation firmware has been installed and ready to continue full install.
{{{
11  apt-get install apache2 php5-mysql libapache2-mod-php5 mysql-server bzip2
   12  sudo apt-get install apache2 php5-mysql libapache2-mod-php5 mysql-server bzip2
   13  cd /var/www
   14  wget http://prdownload.berlios.de/tf-b4rt/torrentflux-b4rt_1.0-beta2.tar.bz2
   15  sudo wget http://prdownload.berlios.de/tf-b4rt/torrentflux-b4rt_1.0-beta2.tar.bz2
   17  sudo wget http://download.berlios.de/tf-b4rt/torrentflux-b4rt_1.0-beta2.tar.bz2
   20  sudo rm torrentflux-b4rt_1.0-beta2.tar.bz2
   21  ls -alt
   22  sudo tar -xjvf torrentflux-b4rt_1.0-beta2.tar.bz2
   24  sudo tar -xjvf torrentflux-b4rt_1.0-beta2.tar.bz2.1
   25  sudo apt-get upgrade
  27  sudo mv torrentflux-b4rt_1.0-beta2 torrentflux
   28  sudo mv torrentflux-b4rt_1.0-beta2.tar.bz2.1 ~/
   30  sudo apt-get install php5-cli php5-gd phpmyadmin zip unzip unrar libxml-dom-perl libxml-simple-perl libthreads-shared-perl libhtml-parser-perl transmission-cli libdigest-sha1-perl bittornado
   32  sudo chmod 777 /var/www/torrentflux/html/inc/config/
 51  sudo rm /var/www/torrentflux/html/setup.php
   62  sudo chown -R www-data:www-data torrentflux
   55  cd torrentflux
   62  sudo chown -R www-data:www-data torrentflux
   63  cd watchfolder
   64  ls -alt
   65  sudo chown -R msfz751:www-data msfz751
   66  sudo chown -R superuser:www-data admin
   70  cd torrentflux
   73  sudo chown -R msfz751:www-data msfz751
   74  sudo chown -R superuser:www-data admin
   92  sudo chown -R msfz751:www-data msfz751
   93  cd ../torrentflux
   94  sudo chown -R msfz751:www-data msfz751
  186  cd /var/www/torrentflux/html/
  193  sudo ln -s  /var/opt/torrentflux/html /var/www/torrentflux
}}}
!Boot Parameters
{{{
append append initrd=initrd.ub610.gz - ramdisk_size=14984    \
root=/dev/rd/0 rw preseed/locale=en_US kbd-chooser/method=us \
console-keymaps-at/keymap=us ks=http://192.168.1.104/kickstart/u804s.cfg -- 
}}}
!Script kickstart
{{{
# interactive
graphical
install
url --url=http://192.168.1.104/ubuntu/ub610/
lang en_US.UTF-8
langsupport --default=en_US.UTF-8 en_US.UTF-8
keyboard us
}}}

!OS Definition
|OS	|Type	|Subtype	|Share	|ISO File|
|ub610	|Ubuntu Linux	|6.10 Edgy Eft	|isos	|ubuntu-8.04-server-i386.iso |
<<tiddler [[Google Desktop]]>>
<<tiddler [[Webmin - Ubuntu]]>>
<<tiddler [[Sharity - Ubuntu]]>>

Kpassx
:: install with apt-get.
Shutter
:: install with dpkg.


{{{
sudo apt-get --purge remove mdadm
}}}
{{{
tar xjvf home_inv-1.2.0.tar.bz2
}}}

x''j''vf
{{{
conary update conary
conary updateall
conary update openfiler
}}}

Links:
https://forums.openfiler.com/viewtopic.php?pid=7879#p7879
install and remove System-V style init script links.update-rc.d automatically updates the System V style init script links /etc/rcrunlevel.d/NNname to scripts /etc/init.d/name. These are run by init when changing runlevels and are generally used to start and stop system services such as daemons. runlevel is one of the runlevels supported by init, 0123456789S, and NN is the two-digit sequence code used by init to decide which order to run the scripts in.
{{{
update-rc.d Syntax

update-rc.d [-n] [-f] name remove

update-rc.d [-n] name defaults [NN | NN-start NN-stop]

update-rc.d [-n] name start|stop NN runlevel runlevel start|stop NN runlevel runlevel
}}}

When run with either the defaults, start, or stop options, update-rc.d makes links /etc/rcrunlevel.d/[SK]NNname pointing to the script /etc/init.d/name,If any files /etc/rcrunlevel.d/[SK]??name already exist then update-rc.d does nothing. This is so that the system administrator can rearrange the links, provided that they leave at least one link remaining, without having their configuration overwritten.

Available Options

-n Don’t do anything, just show what we would do.

-f Force removal of symlinks even if /etc/init.d/name still exists.

Examples:

Insert links using the defaults
{{{
sudo update-rc.d samba defaults
}}}

Equivalent command using explicit argument sets
{{{
sudo update-rc.d samba start 20 2 3 4 5 . stop 20 0 1 6 .
}}}
If you want to remove the script from the startup use the following command
{{{
sudo update-rc.d -f samba remove
}}}
Source: http://www.debianadmin.com/manage-linux-init-or-startup-scripts.html
admin
password
use WebDAV then use "http://192.168.0.2/mnt/resources/test-fe-openfiler/test_fichiers/".
http://www.commandlinefu.com/commands/using/arp
typically, if you have two hbas, two switches and two sps, you will have a full mesh.
{{{
vmhba[portnumber]:[target]:[LUN]:[Partition]
port number is hba number
target is sp (a=0; b=1)
LUN= lun number
Partition will always be 1
}}}
For LUN 24 on a full mesh fabric you will have:

vmhba1:0:24:1 on active preferred (preferred does not matter for MRU)
vmhba1:1:24:1 standby
vmhba2:0:24:1 on (not actually active though)
vmhba2:1:24:1 standby

So SPA is target 0 and SPB is target 1. The way typical full mesh fabric failover works is this. If there is a link failure, ESX will try to use the next path available to the same target. This prevents LUN thrashing. So if the link to SPA is down on vmhba1, it will try vmhba2:0:24:1 next. If that one does not work (meaning SPA is down), it will bry a standby path. Once that happens, the SAN is basically instructed to trespass the LUN to SPB. Not a massive issue, but this will cause all other ESX servers looking for that LUN to change their paths as well to the new target.

So the failover is not quite arbitrary from a target perspective. 
!!List running VMs
{{{
vmrun -T server -h https://192.168.1.90:8333/sdk -u super -p foncho list
}}}




{{{
sudo apt-get install kdebase kdm x-window-system-core
}}}
The vmware server loses its headers after an OS update.
Reconfigure downloading new headers and running vmware-config.pl
{{{
$ sudo apt-get install linux-headers-`uname -r`
}}}
will download and install:

linux-headers-2.6.15-51 
linux-headers-2.6.15-51-server

[[link|http://www.ubuntugeek.com/how-to-install-vmware-server-from-canonical-commercial-repository-in-ubuntu-feisty.html]]
''eth0'' is the network for heartbeat
''eth1'' is for LAN and WAN
{{{
The following bridged networks have been defined:

. vmnet0 is bridged to eth0

Do you wish to configure another bridged network? (yes/no) [no] yes

Configuring a bridged network for vmnet2.

Your computer has multiple ethernet network interfaces available: eth1, vmnet1,
vmnet8. Which one do you want to bridge to vmnet2? [eth0] eth1

The following bridged networks have been defined:

. vmnet0 is bridged to eth0
. vmnet2 is bridged to eth1

}}}

* Host only:
{{{
vmnet1host-only on private subnet 192.168.239.0
}}}
Please specify a port for remote connections to use [902] 

Please specify a port for standard http connections to use [8222] 

Please specify a port for secure http (https) connections to use [8333] 

!List all running virtual machines
{{{
sudo vmware-vim-cmd -U superuser -P @foncho# vmsvc/getallvms
}}}
{{{
sudo aptitude install build-essential

sudo apt-get install linux-headers-`uname -r`
}}}
* bluez-utils
* gdm
* hplip
* pcmcia
* pcmciautils
* powernowd
* festival
vncconfig not available with vncserver version 3.
systemConfig plugin that are deactived
/***
|Name:|zzConfig|
|Version:|1.0|
|Customized by:|Alfonso Reyes|
|CoreVersion:|2.4.3|
|Description|Hard code cookies & modify shadow tiddlers|
***/
{{{
config.options.txtUserName="Alfonso Reyes";
config.options.txtEmptyBody="31"; // minimum length of tiddler to consider it empty; used in every folder
config.options.txtBackupFolder="backup"; // this will avoid saving in root TW folder
config.views.editor.defaultText = "";   // don't need message when creating a new tiddler
config.options.chkSaveBackups=true;  // true:will save backups indicated by ".txtBackupFolder"
config.options.chkAutoSave=true;  // true: will auto save this tiddlywiki when a change occurs
config.options.chkInsertTabs = true;    // tab inserts a tab when editing a tiddler


// Modify Shadow Tiddler Site Information
merge(config.shadowTiddlers,{
	SiteTitle: "Modeling & Simulations",
	SiteSubtitle: "beta - for petroleum production engineering",
	SiteUrl: "",
	});
config.shadowTiddlers.WindowTitle='<<tiddler SiteTitle>> - <<tiddler SiteSubtitle>>';
window.getPageTitle=function() { return wikifyPlain('WindowTitle'); }
store.addNotification('WindowTitle',refreshPageTitle); // so title stays in sync with tiddler changes

merge(config.macros.toolbar,{ moreLabel: 'more\u25BC', lessLabel: '\u25C4less' });

}}}
{{{
<?xml version="1.0" encoding="UTF-8"?>
<fuppes_config version="0.7.2.3">
  <shared_objects>
    <dir>/media/truecrypt8/Movies</dir>
    <dir>/media/truecrypt9/Movies</dir>
    <dir>/media/truecrypt10/Movies</dir>
  </shared_objects>

<network>
    <!--empty = automatic detection-->
    <interface>eth0</interface>
    <!--empty or 0 = random port-->
    <http_port>9137</http_port>
    <!--list of ip addresses allowed to access fuppes. if empty all ips are allowed-->
    <allowed_ips>
      <!--<ip>192.168.0.1</ip>-->
      <ip>192.168.0.20</ip>
      <ip>192.168.0.10</ip>
    </allowed_ips>
  </network>
  <content_directory>
    <!--a list of possible charsets can be found under:
      http://www.gnu.org/software/libiconv/-->
    <local_charset>UTF-8</local_charset>
    <!--libs used for metadata extraction when building the database. [true|false]-->
    <use_imagemagick>true</use_imagemagick>
    <use_taglib>true</use_taglib>
    <use_libavformat>true</use_libavformat>
  </content_directory>
  <transcoding>
    <!--[lame|twolame]-->
    <audio_encoder>lame</audio_encoder>
    <!--[true|false]-->
    <transcode_vorbis>true</transcode_vorbis>
    <transcode_musepack>true</transcode_musepack>
    <transcode_flac>true</transcode_flac>
  </transcoding>
  <device_settings>
    <!--"default" settings are inhertied by specific devices and can be overwritten-->
    <device name="default">
      <!--specify the maximum length for file names (0 or empty = unlimited)-->
      <max_file_name_length>0</max_file_name_length>
      <!--[file|container]-->
      <playlist_style>file</playlist_style>
      <show_childcount_in_title>false</show_childcount_in_title>
      <enable_dlna>false</enable_dlna>
      <transcoding_release_delay>4</transcoding_release_delay>
      <file_settings>
        <!--audio files-->
        <file ext="mp3">
          <type>AUDIO_ITEM</type>
          <mime_type>audio/mpeg</mime_type>
          <dlna>MP3</dlna>
        </file>
        <file ext="ogg">
          <type>AUDIO_ITEM</type>
          <mime_type>application/octet-stream</mime_type>
          <transcode enabled="true">
            <ext>mp3</ext>
            <mime_type>audio/mpeg</mime_type>
            <dlna>MP3</dlna>
            <http_encoding>chunked</http_encoding>
            <decoder>vorbis</decoder>
            <encoder>lame</encoder>
            <bitrate>192</bitrate>
            <samplerate>44100</samplerate>
          </transcode>
        </file>
        <file ext="mpc">
          <type>AUDIO_ITEM</type>
          <mime_type>application/octet-stream</mime_type>
          <transcode enabled="true">
            <ext>mp3</ext>
            <mime_type>audio/mpeg</mime_type>
            <dlna>MP3</dlna>
            <http_encoding>chunked</http_encoding>
            <decoder>musepack</decoder>
            <encoder>lame</encoder>
            <bitrate>192</bitrate>
            <samplerate>44100</samplerate>
          </transcode>
        </file>
        <file ext="wav">
          <type>AUDIO_ITEM</type>
          <mime_type>audio/x-wav</mime_type>
        </file>
        <file ext="flac">
          <type>AUDIO_ITEM</type>
          <mime_type>audio/x-flac</mime_type>
          <transcode enabled="true">
            <ext>mp3</ext>
            <mime_type>audio/mpeg</mime_type>
            <dlna>MP3</dlna>
            <http_encoding>chunked</http_encoding>
            <decoder>flac</decoder>
            <encoder>lame</encoder>
            <bitrate>192</bitrate>
            <samplerate>44100</samplerate>
          </transcode>
        </file>
        <file ext="wma">
          <type>AUDIO_ITEM</type>
          <mime_type>audio/x-ms-wma</mime_type>
          <dlna>WMAFULL</dlna>
        </file>
        <!--image files-->
        <file ext="jpg">
          <ext>jpeg</ext>
          <type>IMAGE_ITEM</type>
          <mime_type>image/jpeg</mime_type>
          <convert enabled="false">
            <!--<dcraw enabled="true">-q 0</dcraw>-->
            <ext>png</ext>
            <mime_type>image/png</mime_type>
            <height>0</height>
            <width>0</width>
            <!--set "greater" to "true" if you only want to resize images greater than "height" or "width"-->
            <greater>false</greater>
            <!--set "less" to "true" if you only want to resize images less than "height" or "width"-->
            <less>false</less>
            <!--set "less" and "greater" to "false" if you always want to resize-->
          </convert>
        </file>
        <file ext="bmp">
          <type>IMAGE_ITEM</type>
          <mime_type>image/bmp</mime_type>
        </file>
        <file ext="png">
          <type>IMAGE_ITEM</type>
          <mime_type>image/png</mime_type>
        </file>
        <file ext="gif">
          <type>IMAGE_ITEM</type>
          <mime_type>image/gif</mime_type>
        </file>
        <!--video files-->
        <file ext="mpg">
          <ext>mpeg</ext>
          <type>VIDEO_ITEM</type>
          <mime_type>video/mpeg</mime_type>
        </file>
        <file ext="mp4">
          <type>VIDEO_ITEM</type>
          <mime_type>video/mp4</mime_type>
        </file>
        <file ext="avi">
          <type>VIDEO_ITEM</type>
          <mime_type>video/avi</mime_type>
        </file>
        <file ext="wmv">
          <type>VIDEO_ITEM</type>
          <mime_type>video/x-ms-wmv</mime_type>
        </file>
        <file ext="vob">
          <type>VIDEO_ITEM</type>
          <mime_type>video/x-ms-vob</mime_type>
        </file>
        <file ext="vdr">
          <type>VIDEO_ITEM</type>
          <mime_type>video/x-extension-vdr</mime_type>
          <transcode enabled="true">
            <ext>vob</ext>
            <mime_type>video/x-ms-vob</mime_type>
          </transcode>
        </file>
        <file ext="flv">
          <type>VIDEO_ITEM</type>
          <mime_type>application/x-flash-video</mime_type>
        </file>
        <file ext="asf">
          <type>VIDEO_ITEM</type>
          <mime_type>video/x-ms-asf</mime_type>
        </file>
        <!--playlists-->
        <file ext="pls">
          <type>PLAYLIST</type>
          <mime_type>audio/x-scpls</mime_type>
        </file>
        <file ext="m3u">
          <type>PLAYLIST</type>
          <mime_type>audio/x-mpegurl</mime_type>
        </file>
      </file_settings>
    </device>
    <!--If you have more than one device it is a good idea to set the ip address manually as some devices may have conflicting "user agents".-->
    <device name="PS3" enabled="false">
      <user_agent>UPnP/1.0 DLNADOC/1.00</user_agent>
      <user_agent>PLAYSTATION3</user_agent>
      <!--<ip></ip>-->
      <enable_dlna>true</enable_dlna>
      <transcoding_release_delay>50</transcoding_release_delay>
      <file_settings>
        <file ext="ogg">
          <type>AUDIO_ITEM_MUSIC_TRACK</type>
          <transcode enabled="true">
            <http_encoding>stream</http_encoding>
          </transcode>
        </file>
      </file_settings>
    </device>
    <device name="Xbox 360" virtual="Xbox 360" enabled="true">
        <user_agent>Xbox/2.0.\d+.\d+ UPnP/1.0 Xbox/2.0.\d+.\d+</user_agent>
        <user_agent>Xenon</user_agent>
        <xbox360>true</xbox360>
        <file_settings>
            <file ext="mp3"><type>AUDIO_ITEM_MUSIC_TRACK</type></file>
            <file ext="jpg"><type>IMAGE_ITEM_PHOTO</type></file>
            <file ext="avi"><type>VIDEO_ITEM</type><mime_type>video/avi</mime_type></file>
        </file_settings>
	<description_values>
	<friendly_name>%s %v : 1 : Windows Media Connect</friendly_name>
	<model_name>Windows Media Connect compatible (%s)</model_name>
	<model_number>2.0</model_number>
	</description_values> 
    </device>
    <device name="Telegent TG 100" virtual="default" enabled="false">
      <user_agent>dma/1.0 \(http://www.cybertan.com.tw/\)</user_agent>
      <user_agent>UPnP/1.0 DLNADOC/1.00</user_agent>
      <playlist_style>file</playlist_style>
      <max_file_name_length>101</max_file_name_length>
    </device>
  </device_settings>
</fuppes_config>
}}}
{{{
<?xml version="1.0" encoding="UTF-8"?>
<fuppes_vfolder_config version="0.2">

 <vfolder_layout device="default" enabled="false">

    <vfolder name="Genre">
      <vfolders property="genre">
        <items type="audioItem" />
      </vfolders>
    </vfolder>

    <vfolder name="Genre/Artists">
      <vfolders property="genre">
        <vfolders property="artist">
          <items type="audioItem" />
        </vfolders>
      </vfolders>
    </vfolder>

    <vfolder name="Artists/Albums">
      <vfolders property="artist">
        <vfolders property="album">
          <items type="audioItem" />
        </vfolders>
      </vfolders>
    </vfolder> 
    
    <vfolder name="ABC/Artists/Albums">
      <vfolders split="ABC">
        <vfolders property="artist">
          <vfolders property="album">
            <items type="audioItem" />
          </vfolders>
        </vfolders>
      </vfolders>
    </vfolder>
       
    <vfolder name="Photos">
      <vfolder name="All">
        <items type="imageItem" />
      </vfolder>
      <vfolder name="Folders">
        <folders filter="contains(imageItem)" />
      </vfolder>      
    </vfolder>

    <vfolder name="Videos">
      <vfolder name="All">
        <items type="videoItem" />
      </vfolder>
      <vfolder name="Folders">
        <folders filter="contains(videoItem)" />
      </vfolder>
    </vfolder>
    
    <vfolder name="shared dirs">
      <shared_dirs full_extend="true" />
    </vfolder>
    
  </vfolder_layout>

  <vfolder_layout device="Xbox 360" enabled="true">

    <vfolder name="Music" id="1">
      <vfolder name="Album" id="7">
        <vfolders property="album" type="container.album.musicAlbum">
          <items type="audioItem" />
        </vfolders>
      </vfolder>
            
      <vfolder name="All Music" id="4">
        <items type="audioItem" />
      </vfolder>
      
      <vfolder name="Artist" id="6">
        <vfolders property="artist" type="container.person.musicArtist">
          <items type="audioItem" />
        </vfolders>
      </vfolder>
      
      <vfolder name="Folders" id="20">
        <folders filter="contains(audioItem)" />
      </vfolder>
      
      <vfolder name="Genre" id="5">
        <vfolders property="genre" type="container.genre.musicGenre">
          <items type="audioItem" />
        </vfolders>
      </vfolder>
      
      <vfolder name="Playlist" id="15" />
    </vfolder>
   
    <vfolder name="Pictures" id="3">
      <vfolder name="Album" id="13" />
      
      <vfolder name="All Pictures" id="11">
        <items type="imageItem" />
      </vfolder>
      
      <vfolder name="Date Taken" id="12" />
      
      <vfolder name="Folders" id="22">
        <folders filter="contains(imageItem)" />
      </vfolder>
    </vfolder>

    <vfolder name="Playlists" id="18">
      <vfolder name="All Playlists" id="19" />
      <vfolder name="Folders" id="23" />
    </vfolder>

    <vfolder name="Video" id="2">
      <vfolder name="Actor" id="10" />
      <vfolder name="Album" id="14" />
      <vfolder name="All Video" id="8">
				<items type="videoItem" />
			</vfolder>
      <vfolder name="Folders" id="21" />
      <vfolder name="Genre" id="9" />
    </vfolder>
    <vfolder name="Browse Folders" id="21">  
<shared_dirs full_extend="true" />  
</vfolder>

  </vfolder_layout>

</fuppes_vfolder_config>
}}}