<!--{{{-->
<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]];}
.readOnly {background:[[ColorPalette::TertiaryPale]];}

#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;} */
#displayArea { margin: 1em 15.5em 0em 1em; } /* use the full horizontal width */

.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>>
''[[ Step-by-Step howto format partition 2TB HDD | http://forums.opensuse.org/english/get-technical-help-here/install-boot-login/476669-step-step-how-format-partition-2tb-drive.html ]]''
''[[ System Rescue CD - Partitioning Howto | http://www.sysresccd.org/Sysresccd-Partitioning-EN-Introduction-to-disk-partitioning ]]''
''[[ Basic fdisk commands | http://www.thegeekstuff.com/2010/09/linux-fdisk/ ]]''
''[[ Audio, Video, PPT lectures on Algorithms by Steven Skiena author of Algorithm Design Manual | http://www.cs.sunysb.edu/~algorith/video-lectures/ ]]''
''[[ Algorist.com by Steven Skiena | http://www.algorist.com/ ]]''
''[[  Audio, Video, PPT lectures on Discrete Structures by Steven Skiena | http://www.cs.sunysb.edu/~algorith/math-video/ ]]''
''[[ Steven Skiena's Algorithm Design Manual Solutions Wiki | http://www2.algorithm.cs.sunysb.edu:8080/mediawiki/index.php/The_Algorithms_Design_Manual_%28Second_Edition%29 ]]''
''[[ Stony Brook Algorithm Repository | http://www.cs.sunysb.edu/~algorith/ ]]''
''[[ IEEE Past recipients for Computer Science & Eng. Undergrad Teaching Award | http://awards.computer.org/ana/award/viewPastRecipients.action;jsessionid=F53F830C57AC18E9525AD71F541C8E75?id=32 ]]''
----
[[ Data Structures and Algorithms in Java 2nd Ed. by Robert Lafore | http://www.amazon.com/Data-Structures-Algorithms-Java-2nd/dp/0672324539/ref=sr_1_1?s=books&ie=UTF8&qid=1311323466&sr=1-1 ]]
[[ Beginning Algorithms | http://www.amazon.com/Beginning-Algorithms-Wrox-Guides/dp/0764596748 ]]
----
[[ Intro to Algorithms a Creative Approach by Udi Manber | http://www.amazon.com/Introduction-Algorithms-Creative-Udi-Manber/dp/0201120372/ref=sr_1_1?s=books&ie=UTF8&qid=1311320933&sr=1-1 ]]
[[ 5 Part Series on "Algorithms in C++" by Robert Sedgewick | http://www.amazon.com/Bundle-Algorithms-Parts-1-5-Fundamentals/dp/020172684X/ref=sr_1_1?s=books&ie=UTF8&qid=1311321856&sr=1-1 ]]
[[ Algorithms for Interviews by Adnan Aziz | http://www.amazon.com/Algorithms-Interviews-Adnan-Aziz/dp/1453792996/ref=pd_sim_b_5 ]]
''[[ Discussion on Head First like books on Data Structures and Algorithms at stackoverflow | http://stackoverflow.com/questions/455627/head-first-style-data-structures-algorithms-book/456545#456545 ]]''
----
!! See Also
[[ Audio, Video, PPT lectures on Computational Biology by Steven Skiena author of Algorithm Design Manual | http://www.algorithm.cs.sunysb.edu/computationalbiology/ ]]
''[[ Howto set and get email headers with alpine | http://patches.freeiz.com/alpine/alpine-info/misc/headers.html ]]''
''[[ Howto use the alpine Reply command | http://patches.freeiz.com/alpine/alpine-info/commands/reply.html ]]''
''[[ MIME and attachements in alpine | http://patches.freeiz.com/alpine/alpine-info/misc/mime.html ]]''
''[[ send email from command line with alpine patch | http://patches.freeiz.com/alpine/info/outgoing.html ]]''
''[[ Story behind How the book 'Apprenticship Patterns' was written | http://nuts.redsquirrel.com/post/222493871/the-publication-of-apprenticeship-patterns ]]''
----
!! Continuous Learning
[[ SE Radio Episode 138 - Learning As a Part of Development with Alan Kelly | http://www.se-radio.net/2009/06/episode-138-learning-as-a-part-of-development-with-allan-kelly/ ]]
''[[ PDF on Knowledge Hydrant : Study Group Patterns | http://www.industriallogic.com/papers/khdraft.pdf ]]''
''[[ Industrial Logic Papers on Design Patterns, Perpetual Learning Patterns, Agile and XP | http://www.industriallogic.com/papers/  ]]''
[[ PDF on Continuous Learning in XP | http://www.industriallogic.com/xp/ContinuousLearning.pdf ]]
[[ Book: Changing Software Development: Learning to Become Agile, Allan Kelly | http://www.amazon.com/Changing-Software-Development-Learning-Become/dp/047051504X ]]
[[ Book: The Living Company, Arie de Geus | http://www.amazon.com/Living-Company-Arie-Geus/dp/1578518202 ]]
[[ PDF Distillation of book - The Fifth Discipline - The Art and Practise of the learning organization | www.audubon-area.org/NewFiles/sengesum.pdf ]]
[[ Book: The Fifth Discipline, Peter Senge | http://www.amazon.com/Fifth-Discipline-Practice-Learning-Organization/dp/0385517254 ]]
[[ Book: The Knowing-Doing Gap, Pfeffer & Sutton | http://www.amazon.com/Knowing-Doing-Gap-Companies-Knowledge-Action/dp/1578511240 ]]
[[ Paper: How do Committees invent?, Melvin Conwy | http://www.melconway.com/research/committees.html ]]
[[ Shout out the Problem Dummy Books Style | http://www.industriallogic.com/pulse/20000130.html ]]
----
!! Gurus Voice
[[ Paul Graham at wikipedia | http://en.wikipedia.org/wiki/Paul_Graham_%28computer_programmer%29 ]]
[[ Paul Graham's book Hackers and Painters at wikipedia | http://en.wikipedia.org/wiki/Hackers_%26_Painters ]]
[[ Paul Graham online and free articles | http://www.paulgraham.com/articles.html ]]
[[ SE Radio Episode 134 - 'Release It' with Michael Nygard | http://www.se-radio.net/2009/05/episode-134-release-it-with-michael-nygard ]]
[[ SE Radio Episode 150 - 'Uncle Bob' on Trends in the Software Industry over the last 40 years |  http://www.se-radio.net/2009/11/episode-150-software-craftsmanship-with-bob-martin/%20 ]]
[[ Good RSS Feeds for Programmers/Developers from faqoverflow | http://www.faqoverflow.com/stackoverflow/5119.html ]]
----
[[ 97 Things Every Software Architect Should Know| http://www.amazon.com/Things-Every-Software-Architect-Should/dp/059652269X/ref=sr_1_9?s=books&ie=UTF8&qid=1313671241&sr=1-9 ]]
[[ Dissertation on RESTful systems by Roy Thomas Fielding | http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm ]]
[[ State at wikipedia | http://en.wikipedia.org/wiki/State_(computer_science) ]]
[[ Stateful at wikipedia | http://en.wikipedia.org/wiki/Stateful ]]
[[ Stateless server at wikipedia | http://en.wikipedia.org/wiki/Stateless_server ]]
[[ Examples of RESTful systems | http://en.wikipedia.org/wiki/Examples_of_Representational_State_Transfer ]]
[[ Idempotent methods | http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Idempotent_methods_and_web_applications ]]
Review of Wiki Article ''[[ OrmHate by Martin Fowler | http://martinfowler.com/bliki/OrmHate.html ]]''
Article is in defense of Object Relational Mapping tools like iBatis, Hibernate, Active Record.
These tools handle 80% of the boiler-plate code of bi-directionally mapping in-memory objects to relational databases. 
They have to account for transactions, multi-users changing the database/objects and still work. Too much to re-invent here.
The rest 20% is normally handled by a DB expert who can handle the SQL directly.
As an alternative CQRS handles uni-directional read-only access to databases i.e. maps DB to objects only.
Another alternative is to avoid usage of relational databases by using NoSQL tools like MongoDB, Riak, Neo4j, Cassandra etc.
----
!! See Also
NoSQL tools like MongoDB, Riak, Neo4j in ''[[ NoSQL distilled by Martin Fowler | http://martinfowler.com/bliki/NosqlDistilled.html ]]''
[[ Aggregate Oriented Databases by Martin Fowler | http://martinfowler.com/bliki/AggregateOrientedDatabase.html ]]
[[ Polyglot persistence by martin fowler | http://martinfowler.com/bliki/PolyglotPersistence.html ]]
''[[ Polyglot programming | http://memeagora.blogspot.in/2006/12/polyglot-programming.html ]]''
!! Automation Scripting
[[ Python for Unix and Linux System Administration | http://www.amazon.com/Python-Unix-Linux-System-Administration/dp/0596515820/ref=sr_1_2?s=books&ie=UTF8&qid=1313670902&sr=1-2 ]]
[[ Python Testing Cookbook | http://www.packtpub.com/python-testing-cookbook/book ]]
[[ Perl for System Administration: Managing multi-platform environments with Perl | http://www.amazon.com/Perl-System-Administration-multi-platform-environments/dp/1565926099/ref=sr_1_6?s=books&ie=UTF8&qid=1313670902&sr=1-6 ]]
!!!Expect
[[ Exploring Expect: A Tcl-based Toolkit for Automating Interactive Programs | http://www.amazon.com/Exploring-Expect-Tcl-based-Automating-Interactive/dp/1565920902/ref=sr_1_1?s=books&ie=UTF8&qid=1313671154&sr=1-1 ]]
----
!!Tools
!!! Autoit
[[ Autoit: A BASIC like scripting language for GUI automation | http://www.autoitscript.com/site/autoit/ ]]
''[[ Autoit at wikipedia | http://en.wikipedia.org/wiki/AutoIt ]]''
----
!!! Productivity
[[ The Productive Programmer | http://www.amazon.com/Productive-Programmer-Theory-Practice-OReilly/dp/0596519788/ref=sr_1_1?s=books&ie=UTF8&qid=1313671241&sr=1-1 ]]
----
!!! System Administration
[[ Automating Unix and Linux System Administration | http://www.amazon.com/Automating-Linux-System-Administration-Experts/dp/1430210591/ref=sr_1_1?s=books&ie=UTF8&qid=1313670902&sr=1-1 ]]
----
!! Test Automation
''[[ Python Testing Cookbook | http://www.packtpub.com/python-testing-cookbook/book ]]''
[[ TestAutomation at wikipedia | http://en.wikipedia.org/wiki/Test_automation ]]
[[ TestAutomation Tools at wikipedia | http://en.wikipedia.org/wiki/Test_automation#Notable_test_automation_tools ]]
[[ List of GUI Testing Tools at wikipedia | http://en.wikipedia.org/wiki/List_of_GUI_testing_tools ]]
----
!! Tips and Tricks
{{{
$> dirs    #display dir-stack
$> pushd   #switch top 2 directories
$> pushd dirNew  #add dirNew to dir-stack top AND cd to dirNew
$> pushd -n  newDir   # only add newDir to top of dir-stack
$> pushd -n dir5; pushd -n dir4; pushd -n dir3; pushd -n dir2; pushd -n dir1; pushd -n dir0
~ dir5
~ dir4 dir5
~ dir3 dir4 dir5
~ dir2 dir3 dir4 dir5
~ dir1 dir2 dir3 dir4 dir5
~ dir0 dir1 dir2 dir3 dir4 dir5
$> popd -n
}}}
[[ Navigating the Bash Directory Stack | http://www.gnu.org/software/bash/manual/bashref.html#The-Directory-Stack ]]
[[ Modifying Bash history | http://www.gnu.org/software/bash/manual/bashref.html#Using-History-Interactively ]]
[[ Command line editing | http://www.gnu.org/software/bash/manual/bashref.html#Command-Line-Editing ]]
----
!! Bash Globbing
''[[ Bash Guide on globbing | http://mywiki.wooledge.org/glob ]]''
----
!Bash Options
{{{
#Display current options
$> set -o
#Change options
$> set -o noclobber           #don't allow overwriting of existing files
$> touch existing-file
$> set +o noclobber

$> set -o noglob               # don't do file expansion for '*', '?' etc.
$> set +o noglob              # revert to file expansion default option
}}}
[[ Bash options from Bash Beginners Guide | http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_03_06.html ]]
----
!Bash Scripting
!! Shell Variables
Print Global variables
{{{
$> env
$> printenv
}}}
----
Script Command line parameters
{{{
$0       #scriptname with full path
$1       #first parameter to script
$#       #last parameter
${#@}     #No. of parameters to script
}}}
----
Print current shell variables
{{{
$> set
$> set VARNAME=VALUE
}}}
----
Make a local shell variables into global environment variables
{{{
$> export VARNAME=VALUE
}}}
----
!! Array variables
''[[ Using Array variable in Bash at BashFAQ | http://mywiki.wooledge.org/BashFAQ/005 ]]''
''[[ Append values to an existing array variable in bash | http://www.poundbangwhack.com/2010/02/04/how-to-append-values-to-an-array-in-bash ]]''
----
!! String variables
''[[ string manipulation operations in bash | http://tldp.org/LDP/abs/html/string-manipulation.htmlhttp://tldp.org/LDP/abs/html/string-manipulation.html ]]''
----
[[ Associative arrays in Bash at stackoverflow | http://stackoverflow.com/questions/688849/associative-arrays-in-shell-scripts ]]
[[ Hash tables in Bash at stackoverflow | http://stackoverflow.com/questions/1494178/how-to-define-hash-tables-in-bash ]]
----
[[ Trap'ing exit event in Bash scripts | http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_12_02.html ]]
[[

''[[ declaring type of variable in Bash | http://tldp.org/LDP/abs/html/declareref.html ]]''
''[[ Using null operator as no-op placeholder in bash | http://aplawrence.com/Basics/leading-colon.html ]]''
----
Command line parameters to a shell script
{{{
$@ #space seperated script parameters (starting from one)
$*  #similar to $@ ( deprecated )
$#   #count of command line parameters to shell script
$?   # return value of any sub-script or command
`basename $0`  # returns script name minus the absolute path
}}}
[[ Bash Special Script Parameters | http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_03_02.html#sect_03_02_05 ]]
[[ Bash Variables - Normal, Reserved and Special ones | http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_03_02.html ]]

{{{
$> vi testFunctionParams
#!/bin/bash
set -x

Test()
{
 echo "Inside Test() with $# params=$@"
}

definedEmptyVar=
myVar="a"

Test $definedEmptyVar $myVar "ab" "cd"
Test ${definedEmptyVar} $myVar "ab" "cd"
Test "${definedEmptyVar}" $myVar "ab" "cd"

$> ./testFunctionParameters
+ definedEmptyVar=
+ myVar=a
+ Test a ab cd
+ echo 'Inside Test() with 3 params=a' ab cd
Inside Test() with 3 params=a ab cd
+ Test a ab cd
+ echo 'Inside Test() with 3 params=a' ab cd
Inside Test() with 3 params=a ab cd
+ Test '' a ab cd
+ echo 'Inside Test() with 4 params=' a ab cd
Inside Test() with 4 params= a ab cd
}}}
''[[ Linux tip: Bash parameters and parameter expansions | http://www.ibm.com/developerworks/library/l-bash-parameters/index.html ]]''
''[[ Parameter expansion at bash hacker's wiki | http://wiki.bash-hackers.org/syntax/pe ]]''
''[[ Bash parameter substitution at Adv. Bash Scripting Guide | http://tldp.org/LDP/abs/html/parameter-substitution.html ]]''
----
!! Tips and Tricks
''[[ Remove duplicate words from input | http://stackoverflow.com/questions/952268/how-to-remove-duplicate-words-from-a-plain-text-file-using-linux-command ]]''
''[[ Trim leading and trailing spaces in string variable | http://mywiki.wooledge.org/BashFAQ/067 ]]''
''[[ Process substitution in Bash | http://tldp.org/LDP/abs/html/process-sub.html ]]''
''[[ Dissecting a bad one liner in bash | http://wiki.bash-hackers.org/howto/dissectabadoneliner ]]''
----
!!! Variable value lost during loop or subshell
''[[ Variable value gets lost in subshell at stackoverflow.com | http://stackoverflow.com/questions/3085518/variables-value-gets-lost-in-subshell ]]''
''[[ Variable value lost in loop (and subshell) at stackoverflow.com | http://stackoverflow.com/questions/124167/bash-variable-scope ]]''
[[ Variable value gets lost in subshell at unix.com | http://www.unix.com/shell-programming-scripting/42314-help-dealing-arra.html ]]
--
!!! Bash hack to find a word in a string
{{{
   if [[ " $foo " = *" $bar "* ]]; then
      echo "Found $bar."
   fi
}}}
''[[ Find a word in a string at BashFAQ | http://mywiki.wooledge.org/BashFAQ/046 ]]''
----
!! Shell Expansion
Command Substitution
{{{
$(ls -al)
or
`ls -al`
}}}
Parameter Expansion
{{{
${VARNAME}
}}}
Process Substitution
{{{
cat <(process)           #Note no space between <(
or
ls  >(process)           #Note no space between >(
}}}
[[ Different Types of Shell Expansion | http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_03_04.html ]]
----
Sourcing a script file into current execution context i.e. another script file or in current shell
{{{
#Within a script file
. /path/script-file    (OR)
source /path/script-file
----
#At the bash prompt
$> .   /path/script-file  (OR)
$> source /path/script-file
}}}
----
!! Conditional Operators (if-else)
Using the [[ ... ]] test construct, rather than [ ... ] can prevent many logic errors in scripts. For example, the &&, ||, <, and > operators work within a [[ ]] test, despite giving an error within a [ ] construct.
{{{
TODO
}}}
[[ Bash Test Condition Constructs if-else at Adv. Bash Scripting | http://tldp.org/LDP/abs/html/testconstructs.html ]]
''[[ Tutorial comparing different conditional mechanisms in Bash | http://www.linuxtutorialblog.com/post/tutorial-conditions-in-bash-scripting-if-statements ]]''
''[[ if condition testing pitfalls at bash hacker's wiki | http://wiki.bash-hackers.org/commands/classictest ]]''
----
!! Bash other comparison operators
{{{
-z $var      #check for null variable
-n $var      #check for not null variable
}}}
''[[ Bash Other Comparison Operators at Adv. Bash Scripting | http://tldp.org/LDP/abs/html/comparison-ops.html ]]''
----
!! Bash File Test Operator
{{{
TODO
}}}
''[[ Bash File Test Operators at Adv. Bash Scripting | http://tldp.org/LDP/abs/html/fto.html ]]''
----
''[[ case statement in bash | http://wiki.bash-hackers.org/syntax/ccmd/case ]]''
----
!! Operations on Variables
Variable creation and initialization
{{{
${VAR:-init-string}
${MYVAR:-hello}         # if MYVAR is undefined or null MYVAR='hello' else MYVAR=$MYVAR
}}}
Variable initialization
{{{
${VAR:=init-string}
${MYVAR:=hello}       #
}}}
string-length
{{{
${#VAR}            #Returns no. of string-length
}}}
substring
{{{
${VAR:OFFSET:LENGTH}
}}}
{{{
${VAR#word}              #Delete shortest match of <word> in variable's value
${VAR##word}            #Delete longest match of <word> in variable's value
----
${VAR%word}              #Delete shortest match of <word> in variable's value starting from string-end
${VAR%%word}           #Delete longest match of <word> in variable's value starting from string-end
----
${VAR/pattern/subst}              #Replace first match of pattern with substitution string
${VAR//pattern/subst}              #Replace ALL matches of pattern with substitution string
}}}
''[[ Transformations on Shell Variables from Bash Beginner's Guide | http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_10_03.html ]]''
''[[ Parameter Substitution on variables from Advanced Bash Scripting Guide | http://tldp.org/LDP/abs/html/parameter-substitution.html ]]''
[[ Variable mangling shell variables with string operators from linuxjournal | http://www.linuxjournal.com/article/8919 ]]
----
!! wildcards, globbing and regular expressions
''[[ * + ? wildcards at Advanced Bash Scripting Guide | http://tldp.org/LDP/abs/html/special-chars.html#ASTERISKREF ]]''
''[[ * + ? wildcards with details at Advanced Bash Scripting Guide | http://tldp.org/LDP/abs/html/x16947.html#ASTERISKREG  ]]''
[[ Regular Expressions and Globbing at Advanced Bash Scripting Guide | http://tldp.org/LDP/abs/html/regexp.html ]]
----
!! Shell Commands
''initilog''
{{{
More info: man initilog
reads /etc/initlog.conf settings file
-c/--cmd=command   # command to run and redirect its output to syslog files
-e/--event=1,2,3,4     #passed,failed,user-interrupt,failed-dependancy
-n/--name=<string>     # prepend <string> to the logged lines e.g. "inetd"
-q                  #quiet unless command returns non-zero return value i.e. [ $? != 0 ]
--run=program  #execute program with open file descriptor for program to send back commands to initlog
--conf=file        #specify alternate config file

See also: syslog(3) and logger(1)
}}}
----
''env'' - run a command in an environment or display current global environment
{{{
$> env -i VAR1=VALUE VARN=VALUE <command> <params>
$> env
}}}
----
''pidof''
{{{
$> man pidof
$> pidof <options> program [program...]
-s       #display only single pid for given name
-x       #display even 
-o <pid>      #exclude given pid from listing - ex: %PPID (parent pid)
}}}
----
[[ Bash Programming Introduction Howto at tldp.org | http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO.html ]]
[[ Bash Guide for Beginners at tldp.org | http://tldp.org/LDP/Bash-Beginners-Guide/html ]]
''[[ Advanced Bash Scripting Guide at tldp.org | http://tldp.org/LDP/abs/html ]]''
''[[ Greg's Bash Guide | http://mywiki.wooledge.org/BashGuide ]]''
----
[[ Discussion on good books on bash with good links | http://www.linuxquestions.org/questions/programming-9/need-a-very-good-book-on-bash-scripting-577304 ]]
[[ Heiner's SHELLdorado (also see links section) | http://www.shelldorado.com ]]
[[ Linuxguru's shell scrip resources |  http://www.linuxguruz.org/z.php?id=911 ]]
[[ Bash shell scripts directory for Linux, FreeBSD, Solaris, UNIX |  http://bash.cyberciti.biz ]]
[[ dotfiles.org | http://dotfiles.org ]]
[[ Wicked Cool Shell Scripts |  http://www.intuitive.com/wicked ]]
[[ Shellscripts.org | http://shellscripts.org/index ]]
[[ NixCraft |  http://www.cyberciti.biz/tips/category/shell-scripting ]]
[[ UNIX shell scripting |  http://unix.ittoolbox.com/topics/t.a...3&p=393&h1=393 ]]
[[ Scroogle "shell scripting" tutorials | http://www.scroogle.org/cgi-bin/nbbw...g%22+tutorials ]]
----
!!Debugging 
{{{
   $> script -f -q <logfile>
   $> ./myscript.sh
   ^D
}}}
[[ Capturing all Input and Output to a script | http://stackoverflow.com/questions/5267773/capture-all-input-and-output-from-a-bash-script]]
''[[ Greg's Bash Guide wiki on debugging scripts | http://mywiki.wooledge.org/BashGuide/Practices#Debugging ]]''
----
Debugging entire script
{{{
   $> bash -n -x -v script.sh       # syntax-check, trace, verbose (print input lines)
   (OR)
   #!/bin/bash -nxv                    # Add this line at the first line of script
}}}
----
Debugging parts of script
{{{
 set -x          #activate tracing
 ....
 set +x         #DE-activate tracing

 set -f          #Disable filename globbing
  ...
 set +f          #Activate filename generation with globbing
}}}
----
Debugging Script Location 
{{{
$> export PS4='+${BASH_SOURCE}:${LINENO}:${FUNCNAME[0]}: '
$> bash -n -x -v script.sh
}}}
----
Debugging with echo and tee
{{{
  echo $suspect_variable
  cat abc.txt | tee input.txt | process.sh | tee output.txt | less
}}}
----
Tracing variable after every command
{{{
# Echoes the value of $variable after every command using DEBUG
trap 'echo "VARIABLE-TRACE> \$variable = \"$variable\""' DEBUG

#Dumping variable info on EXIT
trap 'echo Variable Listing --- a = $a  b = $b' EXIT
}}}
----
//Note: Bash options are a bit counterintuitive //
{{{
-x     (activates tracing)
+x    (deactivates tracing)
}}}
----
!! How to run a Test Suite using a bash script
{{{
#!/bin/bash
# Run tests on all xml files and show diff between input and output

for file in $(ls xml/*.xml); do
    echo "Processing file: $file"
    ./my_filter.py < $file | xmllint --format - > "$file.out"
    xmllint --format $file > $file.in
    diff "$file.in" "$file.out"                   #TODO: Need to add logic for testing pass or fail
    #rm -f "$file.in" "$file.out"
    echo "=========================="
    read    #enter something to move to next testcase
done

for f in /etc/*           
do
   echo ${f}
done
}}}
[[ for-loop at Bash Beginner's Guide | http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_09_01.html ]]
----
[[ exec vs eval in bash scripting | http://www.unix.com/shell-programming-scripting/54347-bash-shell-exec-eval-source-looking-help-understand.html ]]
[[ How to use exec bash command properly | http://serverfault.com/questions/176966/how-to-continue-execution-of-shell-script-after-calling-other-shell-script-with ]]
[[ Howto make bash print every command before execution at stackoverflow | http://serverfault.com/questions/16204/how-to-make-bash-scripts-print-out-every-command-before-it-executes ]]
[[ Discussion on How to debug a bash script at stackoverflow | http://stackoverflow.com/questions/951336/how-to-debug-a-bash-script ]]
[[ How to debug bash scripts | http://aymanh.com/how-debug-bash-scripts ]]
''[[ Bash hackers debugging tips | http://wiki.bash-hackers.org/scripting/debuggingtips ]]''
[[ Basics of Debugging Bash Scripts | http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_02_03.html ]]
[[ Advanced Debugging of Bash Scripts | http://tldp.org/LDP/abs/html/debugging.html ]]
[[ Bash Debugger at sourceforge | http://bashdb.sourceforge.net ]]
----
!! Reference
''[[ Bash Hacker's Wiki | http://wiki.bash-hackers.org/start ]]''
[[ Illustrated Bash Redirection Tutorial | http://wiki.bash-hackers.org/howto/redirection_tutorial ]]
[[ Bash Reference Manual | http://www.gnu.org/software/bash/manual/bashref.html ]]
''[[ Chet Ramay's Official Bash FAQ | http://tiswww.case.edu/php/chet/bash/FAQ ]]''
''[[ Bash FAQ at Greg's Wiki | http://mywiki.wooledge.org/BashFAQ ]]''
''[[ Learning Bash with Bash Guide at Greg's Wiki | http://mywiki.wooledge.org/BashGuide ]]''
''[[ Bash PitFalls at Greg's Wiki | http://mywiki.wooledge.org/BashPitfalls ]]''
----
!! Bash Best Practises
[[ Steve Parker's Bash Shell Scripting Tutorial | http://steve-parker.org/sh/intro.shtml ]]
[[ Understanding how bash interprets your script at BashFAQ | http://mywiki.wooledge.org/Arguments ]]
''[[ How to write Robust Bash Shell Scripts | http://www.davidpashley.com/articles/writing-robust-shell-scripts.html ]]''
''[[ Bash Scripting Gotchas | http://tldp.org/LDP/abs/html/gotchas.html ]]''
''[[ Bash PitFalls at Greg's Wiki | http://mywiki.wooledge.org/BashPitfalls ]]''
----
! Bash Shell
[[ Bash Variables - Normal, Reserved and Special ones | http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_03_02.html ]]
[[ The Definitive Guide to Bash Command Line History | http://www.catonmat.net/blog/the-definitive-guide-to-bash-command-line-history ]]
[[ Working Productively in Bash's Vi Command Line Editing Mode | http://www.catonmat.net/blog/bash-vi-editing-mode-cheat-sheet ]]
[[ Bash Shell Reference book | http://www.linuxtopia.org/online_books/bash_reference_guide/index.html ]]
----
!!Related Howtos
[[ How to configure your Bash command line prompt | http://www.tldp.org/HOWTO/Bash-Prompt-HOWTO ]]
----
[[ Sed - UNIX Stream Editor - Cheat Sheet | http://www.catonmat.net/blog/sed-stream-editor-cheat-sheet ]]
[[ Ed - Unix Text Editor - Cheat Sheet | http://www.catonmat.net/blog/ed-unix-text-editor-cheat-sheet ]]
[[ Plain Text Versions of Sed, ed and AWK Cheat Sheets | http://www.catonmat.net/blog/plain-text-versions-of-sed-ed-and-awk-cheat-sheets ]]
[[ A Unix Utility You Should Know About: Pipe Viewer | http://www.catonmat.net/blog/unix-utilities-pipe-viewer ]]
[[ Perl Special Variable Cheat Sheet | http://www.catonmat.net/blog/perls-special-variable-cheat-sheet ]]
----
!Reference
[[ Bash FAQ | http://tiswww.case.edu/php/chet/bash/FAQ ]]
[[ Greg's Bash Wiki FAQ | http://mywiki.wooledge.org/BashFAQ ]]
!!How to make the code stand-out and be the centre of focus in your post.
Use code-boxes on blogger
a) Define a text-area
{{{
<textarea name="textarea" cols="40" rows="4" wrap="VIRTUAL">
code goes here
</textarea>
}}}
b) Use CSS in your html for the code box
{{{
.code {
  background:#f5f8fa;
  #Border style - thin line, dotted-line etc
  border: solid #5C7B90;
  #Border thickness
  border-width: 1px 1px 1px 20px; 	
  #Black code box outline
  color: #000000;  			
  #Font style
  font: 13px 'Courier New', Courier, monospace; #add italics ??
  #Border Line thickness
  line-height: 16px;
  margin: 10px 0 10px 10px;
  max-height: 200px;
  min-height: 16px;
  overflow: auto;
  padding: 28px 10px 10px; width: 90%;
}

.code:hover {
  background: #FAFAFA; 
}
}}}
----
!! Reference
[[ How to use code-boxes on blogger | http://ilook12.blogspot.com/2009/10/putting-code-box-on-blogger-posts.html ]]
!! Boost.Python
A Wrapper-Generator for importing C++ Libraries into Python Scripts as Packages
[[ Tutorial Introduction on Boost.Python | http://www.boost.org/doc/libs/1_46_0/libs/python/doc/tutorial/index.html ]]
[[ PDF - Building Hybrid Systems with Boost.Python | http://www.boost.org/doc/libs/1_46_0/libs/python/doc/PyConDC_2003/bpl.pdf ]]
[[ Building Hybrid Systems with Boost.Python | http://www.boostpro.com/writing/bpl.html ]]
----
[[ Boost.Python a wrapper generator for using C++ Libraries in Python | http://www.boost.org/doc/libs/1_46_0/libs/python/doc/ ]]
[[ Boost.Python Pickle support for serializing/deserializing objects to/from file | http://www.boost.org/doc/libs/1_46_0/libs/python/doc/v2/pickle.html ]]
[[ Boost.Python Internals Article | http://www.boost.org/doc/libs/1_46_0/libs/python/doc/internals.html ]]
[[ Extending Python with C++ at wikibooks | http://en.wikibooks.org/wiki/Python_Programming/Extending_with_C%2B%2B ]]
----
!! Reference
[[ Boost Bibliography | http://www.boost.org/users/bibliography.html ]]
!! Informational
''[[ Bridge wiki at linuxfoundation.org | http://www.linuxfoundation.org/collaborate/workgroups/networking/bridge ]]''
[[ Spanning Tree Protocol at wikipedia | http://en.wikipedia.org/wiki/Spanning_Tree_Protocol ]]
[[ Subnet aggregation with SuperNetting at wikipedia | http://en.wikipedia.org/wiki/Supernet ]]
''[[ Linux Networking Wiki at linuxfoundation.org | http://www.linuxfoundation.org/collaborate/workgroups/networking ]]''
----
!! Howto
''[[ How to add an alias to a network bridge at LHN | http://www.linuxhomenetworking.com/forums/showthread.php/19221-Adding-an-Alias-to-Network-Bridge ]]''
''[[ Creating Interface aliases at LHN | http://www.linuxhomenetworking.com/wiki/index.php/Quick_HOWTO_:_Ch03_:_Linux_Networking#Creating_Interface_Aliases ]]''
----
!!Installation Steps
{{{
$> ctags --version
# Note: the default installed vi and ctags (emacs) might not work for you. 
# So install latest vim and ctags using 'yum'
$> yum -y install vim
$> yum -y install ctags
$> yum -y install gcc gcc-c++ //For C/C++ development
}}}
----
!!Download 
*taglist.vim file from [[here|http://www.vim.org/scripts/script.php?script_id=273]]
*vtreeexplorer.vim file from [[here|http://www.vim.org/scripts/script.php?script_id=184]]
* cvim.vim plugin from [[here|http://www.vim.org/scripts/download_script.php?src_id=9679]]
!!Extract taglist.zip to ~/.vim
{{{
   $> cd ~/.vim 
   $> unzip /usr/src/taglist_45.zip
}}}
----
!!Setup vim and bash settings
{{{
$> cat >> ~/.vimrc
filetype plugin on
"set vim's tag search-path
set tags+=../tags,tags;
"set vim's file search-path
set path+=/usr/include
^D
$> cat >> ~/.bash_profile
alias vi=`which vim`
^D
$> source ~/.bash_profile
}}}
----
!!Build the tag file for my source code and any header files in /usr/include
{{{
   $> cd ~/myself/src 
   $> ln -s /usr/include ./include 
   $> ctags -R --c++-kinds=+pl --fields=+iaS --extra=+q .                    
        Note: Here i=inheritance, a=public/private/protected info, S=signature of method (params or param-list) AND 
                 q=add class::member fully qualified name for class members
}}}
----
!!Browse Source Code using Ctags commands inside vim
{{{
:ta main  #go to function main
#Cmds for list of functions
:ta /^get  #list functions starting with get
:ts          #show list of functions
:tn          #goto next tag in list of functions
:tp          #goto prev tag
:tf           #goto first tag
:tf           #goto last tag 
}}}
----
!!Browsing Source using Taglist
{{{
$> vim myfile.cpp
<Esc+:>TlistOpen
Ctrl+]
Ctrl+t
Select an entry and press space bar to get count of functions etc.
}}}
----
! Adding Custom Language to Ctags and Vim
''Note: There is a pre-existing [[ xslt mode with etags in emacs | http://www.kubusz.net/emacs/xslide/xslide.el ]]''
!! XSLT Source Code Browsing with Vim and Ctags
!!! Creating a tags file
1) Test out the regular-expressions for your custom language: 
{{{
$> egrep 'pattern' *.xsl
}}}
2) Copy-paste custom language with the above regular-expressions into ~/.ctags.
{{{
$> vi ~/.ctags
--langdef=EXSLT
--langmap=EXSLT:.xsl
--regex-EXSLT=/<xsl:variable[ \t]+name=\"([-a-zA-Z0-9_]+)\"/\1/v,variable/i
--regex-EXSLT=/<func:function[ \t]+name=\"([-a-zA-Z0-9_:]+)\"/\1/f,function/i
--regex-EXSLT=/<xsl:template[ \t]+match=\"([/-a-zA-Z0-9_:]+)\"/\1/t,template/i
$> cd srcdir
$> ctags -R *
$> vi ./tags        #check for tag-entries containing the search patterns
$> vi test.xsl     #Use Ctrl-] to jump from a pattern usage to its definition, Ctrl-T to jump back
}}}
Note: 
1) Above solution for templates only uses xpath of match="xyz".
   The search-key for the template (displays taglist for templates with same xpath).
   Potentially a template is uniquely identifiable using match AND mode:
   <template match="xpath" mode="one">
   Solution: Choose from multiple results of taglist (Or) 
   Use '*' and '#' to forwards/backward search in current or other opened files.
2) ctags will work with exslt functions:
   <func:function name="myns:foo"
3) ctags will work with xslt variables (displays taglist for variables with same name):
   <xsl:variable name="user"
4) The ( and ) are used to create a tag-entry in tags file where \1 is the matching keyword.
5) [[ Extending Ctags for a new language | http://ctags.sourceforge.net/EXTENDING.html ]] requires C coding and is a different cup of tea totally.
----
''[[ My question on Browsing XSLT with Ctags and Vim | http://stackoverflow.com/questions/6466928/is-there-a-ctags-like-tool-for-browsing-navigating-xslt-code-in-vim ]]''
''[[ Adding ActionScript language using Ctags and TList in vim | http://stackoverflow.com/questions/2502955/how-can-i-generate-a-tags-file-for-groovy-classes-for-use-in-vim-emacs ]]''
''[[ Adding Clipper language to Ctags on Zeus | http://www.zeusedit.com/zforum/viewtopic.php?t=3367 ]]''
''[[ Creating and Browsing with Ctags files in Vim | http://vim.wikia.com/wiki/Browsing_programs_with_tags ]]''
''[[ Vim documentation on Using Ctags | http://vimdoc.sourceforge.net/htmldoc/usr_29.html#29.1 ]]''
''[[ Vim documentation on Using CScope |http://www.arl.wustl.edu/~fredk/Courses/Docs/vim/if_cscop.html#csto ]]''
[[ Adding custom languages to Ctags with langdef/langmap at pnotepad | http://www.pnotepad.org/docs/howto/tag_custom_languages ]]
[[ ctags tag format for C and FORTRAN mini explanation | http://pwet.fr/man/linux/commandes/posix/ctags ]]
[[ Howto extend Ctags using a language extension | http://ctags.sourceforge.net/EXTENDING.html ]]
----
!!!Other languages
[[ Make ctags work with modern javascript | http://stackoverflow.com/questions/4477322/how-to-make-vim-ctags-works-for-modern-javascript ]]
[[ modern javascript langdef and langmap for ctags | http://weblogs.asp.net/george_v_reilly/archive/2009/03/24/exuberant-ctags-and-javascript.aspx ]]
[[ Shell script to Generate Ctags for Embedded SQL | http://www.linuxdocs.org/HOWTOs/Vim-HOWTO-6.html#ss6.1 ]]
[[ Shell script to generate Ctags for Javascript, Korn and Bourne Shells | http://www.linuxdocs.org/HOWTOs/Vim-HOWTO-6.html#ss6.2 ]]
[[ Haskell tags generator download | http://hackage.haskell.org/package/hasktags ]]
[[ How to compile in CSS support to Ctags | http://scie.nti.st/2006/12/22/how-to-add-css-support-to-ctags ]]
----
!Tutorials
[[YoLinux Vim and Ctags tutorial (search for ctags) | http://www.yolinux.com/TUTORIALS/LinuxTutorialAdvanced_vi.html]]
[[YoLinux Vim and CScope tutorial | http://www.yolinux.com/TUTORIALS/LinuxTutorialAdvanced_vi.html#CSCOPE]]
[[Superb Vim tutorial on CScope|http://vimdoc.sourceforge.net/htmldoc/if_cscop.html#cscope]]
''[[ Navigating Linux Source Code with etags, idutils, global | http://www.ddj.com/cpp/184401358]]''
----
!''Configuring'':
''[[ Vim Ctags Tips and Tricks at stackoverflow | http://stackoverflow.com/questions/563616/vim-and-ctags-tips-and-tricks/563992#563992 ]]''
''[[ Setting up separate ctags db's for C/C++ standard libs, boost, and third party libs | http://stackoverflow.com/questions/2824952/setting-up-separate-ctags-dbs-for-c-c-standard-libs-boost-and-third-party-li ]]''
''[[ Vim Ctags search-paths | http://stackoverflow.com/questions/1749288/tips-for-setting-up-complex-ctags-search-paths ]]''
[[ TUI Browsing with Vim Ctags and Taglist | http://www.thegeekstuff.com/2009/04/ctags-taglist-vi-vim-editor-as-sourece-code-browser ]]
[[ CVim plugin | http://www.thegeekstuff.com/2009/01/tutorial-make-vim-as-your-cc-ide-using-cvim-plugin]]
[[ SoftPanorama Ctags HUGE Collection | http://www.softpanorama.org/Editors/ctags.shtml ]]
----
!Reference:
''[[Superb Vim tutorial on "Moving through programs"|http://vimdoc.sourceforge.net/htmldoc/usr_29.html]]''
''[[ Browsing and Editing XML Files Remotely with GVim on Windows | http://www.adrianlynch.com/view/blog/vim-for-windows/ ]]''
[[Vim online help on "tagsearch"|http://vimdoc.sourceforge.net/htmldoc/tagsrch.html]]
[[ ctags manpage | http://linux.die.net/man/1/ctags ]]
----
''[[ ctags at wikipedia | http://en.wikipedia.org/wiki/Ctags ]]''
[[ Etags Homepage | http://ctags.sourceforge.net/index.html ]]
''[[ Etags FAQ | http://ctags.sourceforge.net/faq.html ]]''
''[[ Howto Setup tag files for a files spread across different directories | http://ctags.sourceforge.net/faq.html#15 ]]''
[[ Exuberant Ctags - How to support a new language (requires C Coding) | http://ctags.sourceforge.net/EXTENDING.html ]]
[[Emacs etags file format explained|http://stackoverflow.com/questions/1990579/understanding-the-ctags-e-file-format-ctags-for-emacs]]
----
!See Also:
[[ Tools for Browsing C code at stackoverflow | http://stackoverflow.com/questions/68247/what-is-a-good-tool-to-aid-in-browsing-following-c-code ]]
[[Survey of Source Code Browsing Tools|http://grok2.tripod.com/code_comprehension.html]]
[[ Hypercode persisting your code idea with the code | http://groups.google.com/group/whits/browse_thread/thread/3af4fe682836f2d3/88dcaf2ccd55df8e ]]
----
* Download cscope_maps.vim plugin from [[here|http://cscope.sourceforge.net/cscope_maps.vim]] into the ~/.vim/plugin folder
* Make a list of C++ sources and headers
{{{
find . -name '*.cpp' >> cscope.files
find . -name '*.hpp' >> cscope.files
find . -name '*.cc' >> cscope.files
find . -name '*.h' >> cscope.files
}}}
* Generate the ~CScope database file cscope.out
{{{
$> cd /home/myself/src
$> cscope -b -q
$> ls cscope.*
cscope.files
cscope.in.out
cscope.out
cscope.po.out
}}}
* Browse with Standalone ~CScope GUI
{{{
$> cscope -d
}}}
! ~CScope integration with Vim
{{{
# Point Vim to the CScope db file cscope.out
CSCOPE_DB=/home/myself/src/cscope.out
export CSCOPE_DB
}}}

!See Also:
[[Vim CScope Tutorial|http://cscope.sourceforge.net/cscope_vim_tutorial.html]]
[[Using CScope with Large Projects Tutorial|http://cscope.sourceforge.net/large_projects.html]]
!! Howto
''[[ The Bugzilla Guide v3.2.10 | http://www.bugzilla.org/docs/3.2/en/html ]]''
''[[ Bugzilla - Searching for Bugs in v3.2 | http://www.bugzilla.org/docs/3.2/en/html/query.html ]]''
''[[ Improving Searching speeds in Bugzilla (using Sphinx) | http://www.confuego.org/archives/13-Improving-Bugzilla-search-speeds.html ]]''
----
!! PyBugz
''[[ PyBugz on github | https://github.com/williamh/pybugz ]]''
''[[ PyBugz README | https://github.com/williamh/pybugz#readme ]]''
''[[ Howto install pybugz | https://gitorious.org/openzilla/openzilla/commit/6012175d361b50410c8f69152d57b4a3e8616bab/diffs ]]''
''[[ PyBugz - Search Bugzilla from command line using python script | http://lizards.opensuse.org/2008/06/19/how-to-search-more-efficiently-in-bugzilla-with-pybugz ]]''
''[[ Pybugz configuration howto | http://wiki.koha-community.org/wiki/Pybugz_configuration ]]''
''[[ Difference between an Addon, Extension, Plugin in Firefox | http://stackoverflow.com/questions/2041261/what-is-the-difference-between-a-firefox-extension-and-a-firefox-add-on ]]''
----
!! Build your own Firefox Extension
[[Build Your Own Firefox Extension (PDF) | http://s3.sitepoint.com/freebook/codeburner-book-bundle.zip ]]
[[ FireFox extension Development blog | http://mozilla-firefox-extension-dev.blogspot.com/ ]]
[[ Hacking Firefox Book Website | http://www.hackingfirefox.com ]]
[[ Programming Firefox O'Reilly | http://oreilly.com/catalog/9780596102432 ]]
''[[ Programming Firefox online book at scribd | http://www.scribd.com/doc/15490906/Programming-Firefox-by-OReilly-Media ]]''
----
!! Build Your Own Firefox Addon
[[ Develop your own Firefox Addon using Addon Builder and SDK | https://addons.mozilla.org/en-US/developers ]]
[[ Addon Howto Library | https://addons.mozilla.org/en-US/developers/docs/how-to ]]
[[ Addon API and Reference Docs | https://addons.mozilla.org/en-US/developers/docs/reference ]]
[[ Addon Packager | https://addons.mozilla.org/en-US/developers/tools/builder ]]
[[ Addon Validator | https://addons.mozilla.org/en-US/developers/addon/validate ]]
----
''[[ Firefox 4 mobile addons for Android and Nokia | http://blog.mozilla.com/addons/2011/03/29/firefox-4-for-mobile-is-here/ ]]''
https://developer.mozilla.org/en/extensions
http://www.slideshare.net/skeevs/mozilla-firefox-extension-development
http://www.slideshare.net/peterbuck/mozilla-firefox-extension-development-course-2-advanced-4033000
http://www.slideshare.net/romihardiyanto/mozilla-addons-development-talk-its-20090424-rodin
http://www.slideshare.net/CaptSolo/xul-mozilla-application-platform
http://www.slideshare.net/dynamis/firefox-extdev-introduction
http://www.slideshare.net/littlebtc/ext-0509
http://www.slideshare.net/robnyman/how-to-write-your-first-firefox-extensio
http://blog.mozilla.com/addons/2009/01/28/how-to-develop-a-firefox-extension/
----
!! boost::noncopyable
[[ boost::noncopyable utility mix-in class  | http://www.boost.org/doc/libs/1_46_1/libs/utility/utility.htm#Class_noncopyable ]]
[[ NonCopyable Mixin at C++ Idioms wikibook | http://en.wikibooks.org/wiki/More_C%2B%2B_Idioms/Non-copyable_Mixin ]]
[[ Deriving from boost::noncopyable doesn't count as derivation but more like an assert | http://stackoverflow.com/questions/2052224/virtual-destructor-for-boostnoncopyable-classes ]]
----
!! boost::type_traits
[[ boost::type_traits tutorial | http://www.boost.org/doc/libs/1_44_0/libs/type_traits/doc/html/index.html ]]
----
!! boost::bind()
Used to create a functor by binding params to a functions signature
Its much better than the C++ STL adapter functions bind1st() and bind2nd().
You can 
a) bind any number of parameters for a given function (not limited to unary/binary functions).
b) bind member function parameters
c) bind function pointers
d) bind function objects
You can also use boost::ref() and boost::cref() to bind to a function object reference.
----
!!! boost::bind() tutorials
''[[ How does boost::bind work (internals) at Ravi Honnavalli's blog | http://ravi-honnavalli.blogspot.com/2011/06/how-does-boostbind-work_05.html ]]''
[[ Clear and simple blog on boost::bind usage with examples | http://gb01.blogspot.com/2008/03/c-boost-bind-good-functor.html ]]
[[ Discussion on summing a vector using boost::bind | http://blog.objectmentor.com/articles/2010/06/12/c-algorithms-boost-and-function-currying ]]
[[ Summing a vector | http://schuchert.wikispaces.com/cpptraining.SummingAVector ]]
''[[ boost::bind 1.44 docs | http://www.boost.org/doc/libs/1_44_0/libs/bind/bind.html ]]''
[[boost::bind 1.45 docs | http://www.boost.org/doc/libs/1_45_0/libs/bind/bind.html ]]
----
!!Articles
[[ Exception Handling: A False Sense of Security by Tom Cargill | http://www.awprofessional.com/content/images/020163371x/supplements/Exception_Handling_Article.html ]]
[[ Article on Exceptions vs Error Codes | http://www.gamearchitect.net/Articles/ExceptionsAndErrorCodes.html ]]
[[ Designing exception-safe Generic Containers by Herb Sutter | http://www.cs.huji.ac.il/course/2003/ood/resources/Exception_Safe_Generic_Containers.pdf ]]
[[ Exception-Safety in Generic Components by David Abrahams | http://www.boost.org/community/exception_safety.html ]]
[[ Exception-Safe Class Design, Part 1 by Herb Sutter at GotW | http://www.gotw.ca/gotw/059.htm ]]
[[ Principles guiding Exception safe code at stackoverflow | http://stackoverflow.com/questions/106586/what-are-the-principles-guiding-your-exception-handling-policy ]]
[[ assembly output of exception handling code at stackoverflow | http://stackoverflow.com/questions/307610/how-do-exceptions-work-behind-the-scenes-in-c ]]
[[ Discussion on exception handling implementation at stackoverflow | http://stackoverflow.com/questions/490773/how-is-the-c-exception-handling-runtime-implemented ]]
----
[[ VC++ SEH based Exception handling at CodeProject | http://www.codeproject.com/KB/cpp/exceptionhandler.aspx ]]
[[A Crash Course on the Depths of Win32™ Structured Exception Handling by Matt Pietrek | http://www.microsoft.com/msj/0197/exception/exception.aspx ]]
---- 
!!Specs
[[ Itanium C++ ABI at codesourcery | http://www.codesourcery.com/public/cxx-abi ]]
[[ C++ TR1 draft spec with Section 5.4 on exception handling | http://www.open-std.org/jtc1/sc22/wg21/docs/TR18015.pdf ]]
[[ Comparison of C++ casting operators from cppreference | http://www.cppreference.com/wiki/keywords/casting_comparison ]]
[[ C++ Typecasting article from cplusplus.com | http://www.cplusplus.com/doc/tutorial/typecasting ]]
[[ Wikipedia on C++ Typecasting | http://en.wikibooks.org/wiki/C%2B%2B_Programming/Programming_Languages/C%2B%2B/Code/Statements/Variables/Type_Casting ]]
----
[[ dyanmic_cast vs reinterpret_cast vs static_cast at stack over flow | http://stackoverflow.com/questions/332030/when-should-static-cast-dynamic-cast-and-reinterpret-cast-be-used ]]
[[ Comparison of casting at stack over flow | http://stackoverflow.com/questions/28002/regular-cast-vs-static-cast-vs-dynamic-cast ]]
22-24 weeks courses (full time and part time) from CDAC Hyderabad
[[ CDAC Diploma in Embedded Systems Design | http://cdachyd.in/cet/cet_syllabus_desd.htm ]]
[[ CDAC Diploma Advanced Multimedia Course | http://acts.cdac.in/courses_post_graduate.aspx ]]
[[ CDAC Diploma in Systems Security | http://acts.cdac.in/courses_post_graduate.aspx ]]
[[ CDAC Diploma in Systems Software | http://cdachyd.in/cet/cet_syllabus_dssd.htm ]]
!! Training
[[ Ksecure CEH Training | http://www.ksecure.net/ethical-hacking-training.htm ]]
----
!! Info
[[ CEH on Wikipedia | http://en.wikipedia.org/wiki/Certified_Ethical_Hacker  ]]
----
!!Video Tutorials
[[ 1hr Video on CGI Scripts from IIT Kharagpur | http://www.youtube.com/watch?v=cP1fN6xf3nI ]]
----
!! Debugging CGI-bin scripts
If you are working with a complex form, and it is too much work to manually enter parameters, then you can capture the parameters to a file to use offline by adding a few lines to the top of your script:
{{{
    #!/usr/bin/perl -wT

    use strict;
    use CGI;

    my $q = new CGI;

    ## BEGIN INSERTED CODE
    open FILE, "> /tmp/query1" or die $!;
    $q->save( \*FILE );
    print $q->header( "text/plain" ), "File saved\n";
    ## END INSERTED CODE
    .
    .
}}}
----
Now you should have a file saved to /tmp/query1 which you can use from the command line. Remove the inserted code first (or comment it out for future use), then you can use the query file like this:
{{{
    $ ./catalog.cgi < /tmp/query1
}}}
----
[[ A fool's guide to CGI with Perl | http://www.cs.tut.fi/~jkorpela/perl/cgi.html ]]
[[ Checklist for Common Gotchas - Idiot's Guide to Perl CGI | http://www.kulichki.com/ostrova/bera/Manuals/Perl/idiots-guide.html ]]
[[ Debugging tools section of CGI programming with Perl 2nd Ed. | http://docstore.mik.ua/orelly/linux/cgi/ch15_01.htm ]]
[[ CGI programming with Perl chapter on Debugging | http://docstore.mik.ua/orelly/linux/cgi/ch15_01.htm ]]
[[ mod_perl Programming book online at linuxtopia | http://www.linuxtopia.org/online_books/mod_perl_programming_book/index.html ]]
[[mod_perl doc | http://perl.apache.org/docs/general/perl_reference/perl_reference.html ]]
[[ mod_perl : Finding the error/warning line number | http://perl.apache.org/docs/1.0/guide/debug.html#Finding_the_Line_Which_Triggered_the_Error_or_Warning ]]
----
!Perl
!! Using external Perl library by giving path
{{{
#Header line to access any external perl library
use lib qw( /PATH/TO/lib/perl );
}}}
----
!! Enabling syslog
{{{
#Step1: Update the syslog.conf file
*.debug<tab>/tmp/myfolder/syslog
#Step2: Touch the log file
$> touch /tmp/myfolder/syslog
#Step3: Force syslog daemon to update itself with new syslog.conf settings
$> ps -eaf | grep syslogd
#Send the hangup (HUP) signal to syslogd
$> kill -1 <syslogd pid>  (OR)
$> kill -1 `cat /var/run/syslogd.pid`
#Note: Get the syslog pid number using cat and locate
$> cat `locate syslogd.pid` 
}}}
[[ Enabling Syslog | http://www.facetcorp.com/tnotes/facetwin/tn_syslog.html ]]
[[ man page for syslog's logger command on command line | http://unixhelp.ed.ac.uk/CGI/man-cgi?logger+1 ]]
----
!!Perl Debugging with syslog and Data::Dumper
{{{
#Debugging block start
use Sys::Syslog;use Sys::Syslog qw(:DEFAULT setlogsock);
syslog('debug', 'debug-test');
use Data::Dumper;
my $dmsg = Dumper ( \$hr );
syslog('debug', 'hr: %s', $dmsg);
#Debugging block end
}}}
----
!! Perl Debugging with syslog
{{{
# Pseudocode for init of programname
# my $programname = basename( arv[0] );
    sub logit {
        my ($priority, $msg) = @_; 
        return 0 unless ($priority =~ /info|err|debug/);

        setlogsock('unix');
        # $programname is assumed to be a global.  Also log the PID
        # and to CONSole if there's a problem.  Use facility 'user'.
        openlog($programname, 'pid,cons', 'user');
        syslog($priority, $msg);
        closelog();
        return 1;
    }
}}}
----
!Syntax checking modifications to a perl script
{{{
$> perl -e 'BEGIN{push @INC, "/path/to/perl-scriptfolder"}' -wcT myperlscript.pm
}}}
----
[[ Perl Syntax Checking | http://community.activestate.com/forum-topic/how-perform-perl-syntax-check-perl-c ]]
[[ Syslogging with Perl | http://lexington.pm.org/meetings/022001.html ]]
[[ Perl debugger commands and options | http://docstore.mik.ua/orelly/linux/cgi/ch15_03.htm#ch15-28900 ]]
[[ The CodeStriker Guide | http://codestriker.sourceforge.net/codestriker.html ]]
!! Collaboration
[[ WebDAV at wikipedia | http://en.wikipedia.org/wiki/WebDAV ]]
''[[ WebDAV FAQ | http://www.webdav.org/other/faq.html ]]''
''[[ WebDAV Resources | http://webdav.org ]]''
''[[ Zope WebDAV Python library | http://cvs.zope.org/Packages/webdav ]]''
''[[ Doing groupware collaboration using open source | http://www.fredshack.com/docs/groupware.html ]]''
''[[ Apache's mod_dav server plugin | http://www.webdav.org/mod_dav ]]''
[[ WebDAV in Ubuntu | http://ubuntuguide.org/wiki/U_WebDAV ]]
[[ Links on WebDAV - Distributed Authoring | http://www.ics.uci.edu/~ejw/authoring/implementation.html ]]
[[ Freshmeat review on Plone CMS written in python | http://freshmeat.net/projects/plone ]]
[[ Zope's webdav article | http://www.zope.org/Documentation/Articles/WebDAV ]]
[[ PortableContext API for implementing Switchbook (user controlled alternative to facebook) | http://portablecontext.org/default2.html ]]
----
[[ javascript nitty-gritties of year-ending boundary condition across IST and UTC at bytes.com | http://bytes.com/topic/javascript/answers/152796-getutcfullyear-returns-wrong-info-1st-jan ]]
''[[ Run a cron job every 5 minutes given a start-time and end-time | http://superuser.com/questions/133456/run-a-cron-job-every-5-minutes-between-two-times ]]''
[[ Basic Crontab howto | http://www.thegeekstuff.com/2009/06/15-practical-crontab-examples ]]
''[[ Cron and Crontab usage and examples | http://www.pantz.org/software/cron/croninfo.html ]]''
''[[ cron at softpanorama | http://www.softpanorama.info/Utilities/cron.shtml ]]''
[[ Introduction to cron | http://www.unixgeeks.org/security/newbie/unix/cron-1.html ]]
''[[ Anacron examples and comparison with Cron | http://www.thegeekstuff.com/2011/05/anacron-examples ]]''
----
!! Setting the date and time for testing cron
[[ How to set date and time | http://www.cyberciti.biz/faq/howto-set-date-time-from-linux-command-prompt ]]
!! Howto increase the size of middle "displayArea" for your tiddlers
Step1: Comment out the left side 'MainMenu'
{{{
&lt;!--
&lt;div id='mainMenu' refresh='content' tiddler='MainMenu'&gt;&lt;/div&gt;
--&gt;
}}}
Step2: Make displayArea use the full horizontal space
{{{
/* #displayArea {margin:1em 17em 0 14em;} */
#displayArea { margin: 1em 15.5em 0em 1em; } /* use the full horizontal width */
}}}
Step3: Autohide the right sidebar  (TODO)
----
[[ Toggle default left/right sidebars, tags, titles, fullscreen from tiddlytools.com | http://www.tiddlytools.com/#InstantBookmarklets ]]
----
!! Copy paste links and Citations
Multi-Links Firefox addon is the best as per this review of Firefox copy-paste links:
//Multi Links lets you open, copy or bookmark multiple links at the same time rather than having to do them all individually.//
''[[ Copy single/multiple URLs with Titles by using Firefox addons | http://www.searchenginejournal.com/3-firefox-addons-to-easier-copy-links-and-anchor-texts/26742/ ]]''
''[[ How to add Citations to Referenced works to Tiddlywiki as in Wikipedia | http://osdir.com/ml/tiddlywiki/2010-01/msg00184.html ]]''
[[ Discussion on Adding FootNotes (Citations) to your Tiddlywiki  | http://groups.google.com/group/tiddlywiki/browse_thread/thread/228433ff0d94cd9c?pli=1 ]]
----
[[ Removing the irritating "MainMenu" on the left side of your tiddlywiki page | http://groups.google.com/group/tiddlywiki/browse_thread/thread/cc4d5dddb69862e9/fc609f191bcbfe25?lnk=gst&q=how+to+remove+MainMenu#fc609f191bcbfe25 ]]
[[ How to autohide the right sidebar | http://groups.google.com/group/tiddlywiki/browse_thread/thread/202ed652a7fb088e/c2697170014c7a21?lnk=gst&q=how+to+hide+sidebar#c2697170014c7a21 ]]
[[ How to increase size of the editable text area for long tiddlers | http://groups.google.com/group/tiddlywiki/browse_thread/thread/2b7b99f3d98d93d9/49f9537af59ac243?lnk=gst&q=how+to+increase+tiddler+area#49f9537af59ac243 ]]
!! Remotely editing files with sshmenu, bcvi, screen and vim
''No need to install your favourite vim settings etc on the remote server just use bcvi to start gvim on your workstation. 
It uses scp internally to create an editing session from workstation to server''
''[[ Transparent multi-hop ssh | http://sshmenu.sourceforge.net/articles/transparent-mulithop.html ]]''
''[[ sshmenu setup howto | http://sshmenu.sourceforge.net/setup/ ]]''
''[[ Remotely editing files with bcvi and vim | http://sshmenu.sourceforge.net/articles/bcvi/ ]]''
''[[ Editing remote files in vim via scp | http://vim.wikia.com/wiki/Editing_remote_files_via_scp_in_vim ]]''
----
Screen
''[[ Screen FAQ | http://www4.cs.fau.de/~jnweiger/screen-faq.html ]]''
''[[ Screen - An Introduction and Beginner's Tutorial | http://www.kuro5hin.org/story/2004/3/9/16838/14935 ]]''
[[ How to keep SSH sessions running with Screen after disconnect at stackoverflow | http://unix.stackexchange.com/questions/479/keep-ssh-sessions-running-after-disconnection ]]
[[ Good Blog comments on using Screen | http://ubuntu-tutorials.com/2007/05/04/command-line-multitasking-with-screen ]]
[[ Screen Tutorial at ubuntu | https://help.ubuntu.com/community/Screen ]]
[[ Screen VT100/ANSI Terminal Emulator Cheat Sheet | http://www.catonmat.net/blog/screen-terminal-emulator-cheat-sheet ]]
----
!! Loading large files in vim
{{{
set syn off #Note: You can also press Ctrl-C to stop vim from trying to do syntax highlighting
set nohl
set eventignore+=FileType 
setlocal noswapfile 
bufhidden=unload 
buftype=nowrite 
undolevels=-1
}}}
[[ Faster loading of huge files in vim | http://vim.wikia.com/wiki/Faster_loading_of_large_files ]]
[[ VimTip on faster loading of huge files | http://vim.wikia.com/wiki/VimTip611 ]]
[[ Vim LargeFile script | http://www.vim.org/scripts/script.php?script_id=1506 ]]
[[ Discussion on editing huge files at stackoverflow | http://stackoverflow.com/questions/159521/text-editor-to-open-big-giant-huge-large-text-files ]]
----
!! Running a macro multiple times
{{{
#Start recording the macro
q@a
#do the actions
#Stop recording the macro
q
#Play the macro
@a
#Play the macro NN times
99@a
}}}
''[[ vim macro record and replay howto | http://www.thegeekstuff.com/2009/01/vi-and-vim-macro-tutorial-how-to-record-and-play ]]''
----
!! Repeating an action on a search
{{{
#grep for pattern and delete the matching empty line
:g/^$/d

#search for pattern and replace
:%s/^$//e
}}}
''[[ replace empty lines in vim | http://vim.wikia.com/wiki/VimTip72 ]]''
----
! Useful .vimrc settings
{{{
set nu
set tags+=../tags,tags;
set path+=/usr/include
"ALWAYS display filename etc on status line at bottom
set laststatus=2

"Enable unicode utf-8 encoding and font support in vim
:set fileencodings=iso-2022-jp,euc-jp,utf8,cp932,shift-jis,sjis,cp936,euc-cn,default,latin1
:e ++enc=utf8


"Enable unicode utf-8 encoding and font support in vim- (doesn't work but keeping it anyway)
:set encoding=utf-8
:set guifont=*
:set guifontwide=*
}}}
[[Sample .vimrc from stackoverflow forum|http://stackoverflow.com/questions/164847/what-is-in-your-vimrc]]
[[ Enabling Japanese fonts in vim | http://dallarosa.tumblr.com/post/13278782524/a-tale-of-japanese-support-on-vim ]]
[[ Enabling japanese/chinese unicode characters in vim | http://superuser.com/questions/10532/vim-how-to-handle-unicode-files-with-text-in-multiple-more-than-two-languages ]]
----
{{{
=%
<i%
}}}
[[ Howto Quickly indent source code using Vim at stackoverflow | http://stackoverflow.com/questions/235839/how-do-i-indent-multiple-lines-quickly-in-vi ]]
''[[ Indenting source code at Vim wikia | http://vim.wikia.com/wiki/Indenting_source_code ]] ''
----
!Tutorials
[[Derek Wyatt's Vim Video Tutorial for Novice Level | http://www.derekwyatt.org/vim/vim-tutorial-videos/vim-novice-tutorial-videos]]
[[Derek Wyatt's Vim Video Tutorial for Intermediate Level | http://www.derekwyatt.org/vim/vim-tutorial-videos/vim-intermediate-tutorial-videos]]
[[Derek Wyatt's Vim Video Tutorial for Advanced Level | http://www.derekwyatt.org/vim/vim-tutorial-videos/vim-advanced-tutorial-videos]]
[[LinuxConfig Vim Video Tutorial for all levels|http://www.linuxconfig.org/Vim_Tutorial]]
[[YoLinux Advanced Vim Tutorial|http://www.yolinux.com/TUTORIALS/LinuxTutorialAdvanced_vi.html]]
----
!Reference
''[[Superb Vim manual online|http://vimdoc.sourceforge.net/htmldoc/help.html]]''
''[[Vim Tips Wiki|http://vim.wikia.com/wiki/Vim_Tips_Wiki]]''
!!DNS
!!! Querying DNS server for host-name resolution
{{{
$> nslookup www.google.com
Server:		<Your DNS Server IP>
Address:	        <Your DNS Server IP>#<Number>

Non-authoritative answer:
www.google.com	canonical name = www.l.google.com.
Name:	www.l.google.com
Address: <IP1>
Name:	www.l.google.com
Address: <IP2>
Name:	www.l.google.com
Address: <IP3>
Name:	www.l.google.com
Address: <IP4>
Name:	www.l.google.com
Address: <IP5>
}}}
''[[ How to troubleshoot Bind and DNS problems | http://www.cyberciti.biz/tips/troubleshooting-bind-dns-2.html ]]''
[[ DNS Troubleshooting | http://www.gideonrasmussen.com/article-05.html ]]
[[Dynamic DNS|http://www.linuxhomenetworking.com/wiki/index.php/Quick_HOWTO_:_Ch19_:_Dynamic_DNS]]
[[DNS Quick Howto|http://www.linuxhomenetworking.com/wiki/index.php/Quick_HOWTO_:_Ch18_:_Configuring_DNS]]
----
!!Watching Files for changes (creation, modification, deletion)
{{{
#watch these files every 1sec and show diff between iterations
watch -n1 --differences=cumulative "ls -al /home/self/changing-file.txt /etc/abc.conf"

#watch for execution of a certain command or script to display command line parameters
watch -n1 'ps -eafx | grep <mycmd>'

#Bash one-liner to continuously check for a running process
while true; do ps -eafx | grep <mycmd> ; done
}}}
[[ GNU Watch command at wikipedia | http://en.wikipedia.org/wiki/Watch_%28Unix%29 ]]
--
!! Auditing file changes with auditd
{{{
#Configure audit watches
$> auditctl  

#Search for changes to file
$> ausearch 
}}}
[[ Using Audit trails to track changes to a file | http://www.cyberciti.biz/tips/linux-audit-files-to-see-who-made-changes-to-a-file.html ]]
----
!! Finding Open Files with lsof or fuser
''[[ finding processes using files with fuser command | http://wiki.linuxquestions.org/wiki/Fuser ]]''
[[ IBMdeveloperworks article on using lsof for debugging your application | http://www.ibm.com/developerworks/aix/library/au-lsof.html ]]
[[ A Unix Utility You Should Know About: lsof | http://www.catonmat.net/blog/unix-utilities-lsof ]]
''[[ The Power of lsof | http://danielmiessler.com/study/lsof ]]''
[[ Leveraging lsof to debug network applications | http://ph7spot.com/musings/leveraging-lsof ]]
[[ lsof FAQ | ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/FAQ ]]
[[ lsof manpage | http://www.netadmintools.com/html/lsof.man.html ]]
----
!! systemtap
[[ RHEL 6 systemtap guide | http://www.linuxtopia.org/online_books/rhel6/rhel_6_systemtap_guide ]]
----
!! Valgrind Memcheck
''[[ Valgrind Memcheck intro at Gnome New Developer Tutorial | http://people.gnome.org/~newren/tutorials/developing-with-gnome/html/ch03s03.html ]]''
''[[ 9 example tests to exercise valgrind | http://people.gnome.org/~newren/tutorials/developing-with-gnome/html/apes02.html ]]''
----
!! Tracing system calls with strace
[[ strace at wikipedia | http://en.wikipedia.org/wiki/Strace ]]
[[ strace man page | http://www.linuxmanpages.com/man1/strace.1.php  ]]
[[ strace at sourceforge | http://sourceforge.net/projects/strace/ ]]
[[ PDF Linux Internals and Debugging with strace from oss.oracle | http://oss.oracle.com/~wli/linuxtalk/linuxtalk.pdf ]]
[[ Fun with strace and gdb | http://www-128.ibm.com/developerworks/aix/library/au-unix-strace.html?ca=dgr-lnxw07GDB ]]
[[ Debugging with strace at redhat | http://www.redhat.com/magazine/010aug05/features/strace/ ]]
[[ Debugging web-apps with strace | http://www.techyouruniverse.com/software/debugging-web-apps-with-strace ]]
[[ Debugging applications with strace at debian-admin | http://www.debian-administration.org/articles/352 ]]
[[ strace introduction article at linuxplanet | http://www.linuxplanet.com/linuxplanet/tutorials/7229/1 ]]
[[ strace blog post | http://blog.ksplice.com/2010/08/strace-the-sysadmins-microscope/ ]]
[[ 5 ways to troubleshoot using strace | http://www.hokstad.com/5-simple-ways-to-troubleshoot-using-strace.html ]]
[[ strace power troubleshoot at linuxhelp | http://linuxhelp.blogspot.com/2006/05/strace-very-powerful-troubleshooting.html ]]
[[ code your own strace | http://blog.nelhage.com/2010/08/write-yourself-an-strace-in-70-lines-of-code/ ]]
----
!!!Excerpts from strace manpage
{{{
$> strace -t -f -ff -ostrace.program  /path/to/program

$> man strace      #NOTE: no space between option and value below
-c count time, calls, and errors for each system call in summary report
-S <sortby> time|calls|name|nothing
-o <logfile> write output to filename
-ff  create logfile.pid for each subprocess (used with -o)
-f follow child processess across fork()s
-v verbose unabbreviated display for env-variables, stat, etc. (all the gory details)
-p <pid> attach to pid (can use multiple -p p1 -p p2 -p pN)          #Ctrl-C to stop tracing
-s strsize  max string size to display (default is 32)
--
-e expr  # [qualifier =][!]value1[,value2, ...]   
            # where qualifier=trace|abbrev|verbose|raw|signal|read|write
            # and value depends on qualifier

-e trace=all|none|file|process|network|signal|ipc
--
-t prefix each line with time of day
-tt prefix each line with time of day with microseconds
-ttt prefix each line with time from epoch in microseconds
-r relative timestamp
}}}
----
!! Tracing libary calls with ltrace
Very similar to strace command except that it lets you watch library calls in addition to system calls.
{{{
$> ltrace -s100 -p 1234 -dd > ltrace.txt
$> vi ltrace.txt              #Search for libary calls like strncmp(), strncat(), malloc(), free() in addition to system calls

Has many options very similar to strace
-p <pid> #attach to pid and trace
-S          #trace system calls in addition to library calls
-n<num> #indent nested calls by num spaces
-d[dd]   #debugging output more d's for more verbose output
-s num  #max string length to display
-C         #demangle C++ names
}}}
----
!! Reverse engineering
[[ Peeking inside an application | http://www.ouah.org/RevEng/x47.htm ]]
[[ Disassembling your application to understand it | http://www.ouah.org/RevEng/t1.htm ]]
!! vimdiff
{{{
$> vimdiff file1 file2
$> vimdiff -c 'set diffopt+=iwhite ' file1 file2
}}}
''Note: If certain text disappears due to colour of hunk and syntax highlighting 
then just do :set syn off''
[[ Ignore (most of) whitespace changes in vimdiff | http://vim.wikia.com/wiki/Ignore_white_space_in_vimdiff ]]
--
''[[ vim diff howto | http://andrejk.blogspot.com/2008/04/vimdiff-howto.html ]]''
{{{
ctrl+w ctrl+w - switch windows
dp - diff put #put diff block in current window to "other" window
do - diff obtain  #get diff block from "other" window to current window
[c - previous difference
]c - next difference
:diffupdate - refresh the diff view manually if required
:syntax off - syntax off
zo - open folded text
zc - close folded text
}}}
''[[ vim diff tutorial | http://vimdoc.sourceforge.net/htmldoc/diff.html#vimdiff ]]''
----
* diff file1 file2 > file1-2.diff  && vim file1-2.diff (shows syntax highlighted diff file)
----
* sdiff file1 file2 > merge1-2.txt
*// Note: Shows a side-by-side comparison of the 2 files. 
*Cuts off mid-sentence to fit file text into 2 vertical columns
* '>'/'<' indicates merge left/right and '|' indicates 'change'
//
----
* jedit visual diff plugin
----
* [[ colorized diff | http://colordiff.sourceforge.net ]]
{{{
$> yum install colordiff
}}}
[[ Tips for colorizing svn diff output | http://drupal.org/node/191106 ]]
----
!! winmerge
[[winmerge NOT ported to linux | http://sourceforge.net/mailarchive/forum.php?thread_name=16c1f1390703131241s21f78843k5f857a4b940021bf%40mail.gmail.com&forum_name=winmerge-development ]]
----
!svn diff output
{{{
$> diff -u file.before file.after > fix.patch
$> cp file.before before.tst
$> patch before.tst fix.patch
$> patch -p## before.tst fix.patch       # where ## is number of directories to ignore in /a/b/c/d/e/file.before or file.after
}}}
''[[ Excellent article from Wikipedia on Understanding svn diff output | http://en.wikipedia.org/wiki/Diff#Unified_format ]]''
''[[Excellent article from Wikipedia on Understanding diff output | http://en.wikipedia.org/wiki/Diff ]]''
----
* [[ meld.sourceforge.net | http://meld.sourceforge.net ]]
----
* [[ xxdiff | http://furius.ca/xxdiff ]]
----
* tkdiff file1 file2 (OR) tdiff   (allows you to select directories)
[[Download the tkdiff archive | http://sourceforge.net/projects/tkdiff ]], 
{{{
$> yum install tcl
$> yum install tk
$> wget http://downloads.sourceforge.net/project/tkdiff/tkdiff/4.1.4/tkdiff-4.1.4-unix.tar.gz
$> tar -zxvf tkdiff-4.1.4-unix.tar.gz
$> su -
$> cp tkdiff /usr/local/bin/
}}}
[[ Howto "install" the tkdiff script | http://www.linuxquestions.org/questions/linux-newbie-8/how-to-install-tkdiff-796987]]
----
!Reference
''[[ Comparison of file comparison tools | http://en.wikipedia.org/wiki/Comparison_of_file_comparison_tools]]''
[[ diff utils discussion on Stackoverflow | http://stackoverflow.com/questions/704707/viewing-unified-diff-with-meld-vimdiff-other-tools ]]
!Distributed Collaboration Tools
Essentially the problem with distributed teams is how to keep the communication going when people work on 
#different locations
#times
#project modules
#viewpoints
----
The following points need to be built into the shared environment
*encourage communication - shared purpose, belonging to the community, recognition within the team.
*co-ordinate communication - chat room with searchable history by whole team to avoid repetition of discussion.
*capture asynchronous communication - people availability is at different times
*ease-of-use - use tools to reduce mental overhead of doing above activities
----
! Tools to help tune communication needs and reduce communication overhead.
!!Web Hosting
#[[ Comparison of FOSS hosting sites at wikipedia | http://en.wikipedia.org/wiki/Comparison_of_open_source_software_hosting_facilities ]]
[[ Hosting FOSS comparison | http://www.ibiblio.org/fosphost/exhost.htm ]]
[[ Open Source Project Setup | http://stackoverflow.com/questions/493513/opensource-project-setup ]]
[[ What Open Source Hosting should I use | http://stackoverflow.com/questions/29736/what-open-source-hosting-service-should-i-use ]]
#[[ Which Project hosting to choose on stack over flow | http://stackoverflow.com/questions/10490/best-open-source-project-hosting-site ]]
#[[ Dated but good feature list Comparison of hosting site features at ibiblio | http://www.ibiblio.org/fosphost/exhost.htm ]]
#[[ Hosting a project at several hosting sites | http://stackoverflow.com/questions/536528/hosting-an-open-source-project-at-several-sites ]]
#GitHub
##[[ Features | https://github.com/features/projects ]]
##[[ Pricing Plan | https://github.com/plans ]]
##[[ List of Git supporting other hosting sites | https://git.wiki.kernel.org/index.php/GitHosting ]]
#GoogleCode
##[[ Android | http://developer.android.com/index.html ]]
##[[ Google code project hosting FAQ | http://code.google.com/p/support/wiki/FAQ#Project_Hosting_FAQ ]]
##[[ Google code Getting Started | http://code.google.com/p/support/wiki/GettingStarted ]]
##[[ Latest Features on Google Code | http://code.google.com/p/support/wiki/WhatsNew ]]
# SourceForge
##[[ BetaForge | ]]
##[[ Features of SourceForge | http://sourceforge.net ]] (TODO)
##[[ Feature Requests in SourceForge | http://sourceforge.net/tracker/?group_id=7130&atid=357130 ]]
# CodePlex
## [[ CodePlex has TFS support for windows developers | http://www.codeplex.com ]]
----
#Version Control
##[[ Comparison of version control systems at wikipedia | http://en.wikipedia.org/wiki/Comparison_of_revision_control_software ]]
##[[ Comparion of git mercurial and bazaar at stack over flow | http://stackoverflow.com/questions/77485/what-are-the-relative-strengths-and-weaknesses-of-git-mercurial-and-bazaar ]]
##Git
##BitKeeper
##SVN
##CVS
----
!! Getting Started with Open Source - Stackoverflow discussions
[[ Seeking advice for OpenSource project | http://stackoverflow.com/questions/2022200/seeking-advice-for-taking-a-project-open-source ]]
[[ How to go open source and get community support | http://stackoverflow.com/questions/1788110/how-to-go-open-source-get-community-support ]]
[[ How to get users to your open source project | http://stackoverflow.com/questions/317855/how-to-get-users-to-your-open-source-project ]]
[[ How to promote your open source project | http://stackoverflow.com/questions/95710/how-do-you-promoteadvertiseevangelize-your-open-source-project ]]
[[ How to get contributors to your open source project | http://stackoverflow.com/questions/265417/how-to-persuade-people-to-contribute-to-an-open-source-project ]]
[[ Howto for an Open Source Newbie | http://stackoverflow.com/questions/188495/open-source-virgin-what-steps-to-take ]]
[[ Best way to get into an Open Source Project | http://stackoverflow.com/questions/88740/best-way-to-get-into-an-open-source-project ]]
''[[ Get started on Open Source Projects with OpenHatch | http://openhatch.org/ ]]''
[[ Howto get started code reading open source projects like firefox | http://stackoverflow.com/questions/3488105/how-to-get-started-with-reading-open-source-project-like-firefox-and-mysql ]]
[[ What level of programming should I have to contribute to open source | http://stackoverflow.com/questions/664/what-level-of-programming-should-i-have-to-contribute-to-open-source  ]]
[[ How to contribute code back to Open Source Project | http://stackoverflow.com/questions/2284/how-to-contribute-code-back-to-open-source-project ]]
[[ Open source projects that are easy to contribute (code) to | http://stackoverflow.com/questions/52095/open-source-projects-that-are-easy-to-contribute-code-to ]]
[[ RedHat - How to get your code into an open source project | http://et.redhat.com/~rjones/how-to-supply-code-to-open-source-projects/ ]]
[[ How did you start with open source projects | http://stackoverflow.com/questions/718107/how-did-you-get-involved-with-your-open-source-community ]]
[[ How to find open source projects which require your skills | http://stackoverflow.com/questions/296629/how-do-you-find-an-open-source-project-that-needs-skills-you-have-to-offer-and-wa ]]
[[ How to get support for a new Open Source Project | http://stackoverflow.com/questions/186251/how-best-to-get-support-and-feedback-for-a-new-open-source-project ]]
[[ Motivation for developers on Open Source Project | http://stackoverflow.com/questions/265417/how-to-persuade-people-to-contribute-to-an-open-source-project ]]
[[ Advice on Starting an Open Source Project | http://stackoverflow.com/questions/1717425/im-starting-an-opensource-project-any-advice ]]
----
!! Publicizing your project
Slashdot
Freshmeat
Twitter
----
!!Why Seeing is Believing !!
#Video Tutorials - A video is worth a million Words. Don't tell me how Just show me!! We've evolved in an audio-visual world where confusing scenes are understood in a real time holistic way. Imagine a lion trying to hunt by step-by-step GPS directions!! Like lions We're very good Copy Cats. Including tags and textual video transcripts makes for easy searching.
#Video Conferencing - Commitment and Trust are intrinsically tangled. We've got built-in BS filters which have evolved to read faces, voices and body-language all at once. Any mismatch is immediately picked up. See the TV Series LieToMe for dramatized enactment.
##Skype
#Whiteboard - A Picture is Worth a Thousand Words.
##Digital Pen, 
##MS NetMeeting
#MindMap - Visualizing and organizing ideas.
#Screen Sharing (VNC) - First hand experience is better than second hand reports.
----
!Healthy Grapevines make for Sweet Grapes
#FAQ: //"Faq-O-Matic is a CGI-based system that automates the process of maintaining a FAQ (or Frequently Asked Questions list). It allows visitors to your FAQ to take part in keeping it up-to-date. A permission system also makes it useful as a help-desk application, bug-tracking database, or documentation system."//
##[[ Article on FAQ-o-matic | http://www.usenix.org/publications/login/1998-6/faq.html ]]
##[[ OpenLDAP FAQ maintained using FAQ-o-matic | http://www.openldap.org/faq/data/cache/1.html ]]
##[[ FAQ-o-matic | http://sourceforge.net/projects/faqomatic ]]
##[[FAQ-o-matic User Guide | http://faqomatic.sourceforge.net/cgi-bin/fom?file=2 ]]
#Wiki : Wikis do 2 things really well 
##"Give them muddy raindrops and they'll give you pools of cool waters"
##They help clean, sift and weave together stray comments into dependable references (Wikipedia... need I say more).
##TWiki
## TiddlyWiki
## WikiMania - hosting site for collaborative wiki
## Swik.net - hosting site for open source project wikis
### [[ SWik main page | http://swik.net/SWiK ]]
###[[Getting Started with SWik | http://swik.net/SWiK/Getting+Started ]]
#IRC (with logging and global search) - Ask the guy who comes to office wearing a plaster cast. Pretty soon it gets very tiring explaining what happened to the Nth person you meet. Imagine if that happened every day for years. Enough to make you wear sign-boards round your neck. Chats texts mimic conversations but allow for recording, refinement and reuse.
#MailingLists (MailMan)
##Remote Pair Programming - Like a spider web with a struggling fly and a hungry spider - Local actions have global impact and Global actions have local consequences. Pair Programming helps couple the immediacy of writing software with the awareness of the depth and width of the software.
##Eclipse Plugins
#Code Review tools - CodeStriker,
----
!Specialized tools reduce incidental overhead
#IDEs - You concentrate on your work and let the IDE take care of adapting the different tools to suit your needs. This reduces the context-switching overhead when using different tools each with its own set of options, quirks and idiosyncracies.
----
!! Tool Links
[[ Collaboration Tools at Sourceforge sorted by Ratings | http://sourceforge.net/search/?q=collaboration&sortdir=desc&limit=25&sort=rating ]]
[[ Collabtive | http://sourceforge.net/projects/collabtive ]]
[[ FengOffice | http://sourceforge.net/projects/opengoo ]]
[[ TeamLab | http://sourceforge.net/projects/teamlab ]]
[[ CodeStriker | http://sourceforge.net/projects/codestriker ]]
[[ ACE a collaborative editor | http://sourceforge.net/projects/ace ]]
[[ Kablink | http://sourceforge.net/projects/kablink ]]
[[ MindTouch collaborative enterprise wiki | http://sourceforge.net/projects/dekiwiki ]]
[[ TWiki | http://twiki.org ]]
[[ TWiki Plugins | http://twiki.org/cgi-bin/view/Plugins/PluginPackage ]]
[[ FAQ-o-matic | http://sourceforge.net/projects/faqomatic ]]
----
!!Distributed Development Team
!!!Video tutorials
[[ Video on Agile Distributed Team | http://www.youtube.com/watch?v=z59YRkTivu4&feature=digest ]]
[[ UPE Workshop #3: Open-source development best practices - 1hr Video from Google | http://www.youtube.com/watch?v=L7zTHmjv5ak ]]
[[ Learning from Stackoverflow.com - 50 Min Video from Google | http://www.youtube.com/watch?v=NWHfY_lvKIQ&feature=relmfu ]]
----
Karl Fogel is one of the maintainers for the Open Source Version Control software Subversion (SVN for short). 
He shares his experience with Open Source in his online free book "Producing Open Source Software"
Also Check out the video's at the bottom of the page.
[[ Karl Fogel's online book on Producing Open Source Software | http://producingoss.com ]]
[[ Video - How Open Source Projects Survive Poisonous People (And You Can Too) | http://video.google.com/videoplay?docid=-4216011961522818645 ]]
[[ Video - Principles of Participation for Open-Information Communities by Karl Fogel at Google Talk | http://www.archive.org/details/kfogel-flats-2007-keynote ]]
[[ Podcast on distributed development by Ben and Fiz | http://youtube.com/watch?v=ZtYJoatnHb8 ]]
''[[ DeveloperExperience ; UI Design Principles applied to Library, Tool and Framework design | http://developerexperience.org/ ]]''
----
!!!Articles
''[[ Free and Open Source Project Management Howto at tldp | http://tldp.org/HOWTO/Software-Proj-Mgmt-HOWTO/index.html ]]''
[[ Virtual Team on wikipedia | http://en.wikipedia.org/wiki/Virtual_team ]]
[[ Tools for Geographically Distributed Development Teams (GDD) | http://stackoverflow.com/questions/5864/geographically-distributed-development ]]
[[ Open source Tools for Distributed Development | http://stackoverflow.com/questions/365016/distributed-development-team-tools-needed ]]
[[ PDF on Workplace e-collaboration | http://web.iwi.unisg.ch/org/iwi/iwi_pub.nsf/wwwPublAuthorGer/7D3FE2E6593E6164C125759A004758A5/$file/AB_Workplace_E-Collaboration.pdf ]]
[[ GDD related articles | http://www.infoscape.com.au/print_relaled_info.php ]]
----
!! References
[[ Recommended books on Open Source | http://stackoverflow.com/questions/3315905/recommended-books-on-open-source ]]
[[ 'The Cathedral and the Bazaar' online book by Eric S Raymond | http://catb.org/esr/writings/cathedral-bazaar ]]
[[ Producing Open Source Software by Karl Fogel | http://producingoss.com/ ]]
[[ Open Sources: Voices from the Open Source Revolution online book | http://oreilly.com/catalog/opensources/book/toc.html ]]
[[ 'Tribes - we need you lead us' by Seth Godin | http://sethgodin.typepad.com/seths_blog/2008/10/a-dollar-or-les.html ]]
[[ Softpanorama collection of links on Distributed Team  |http://www.softpanorama.org/SE/distributed_software_development.shtml ]]
[[ Presentation on Distributed XP | http://www.kircher-schwanninger.de/michael/publications/DistributedXP.pdf ]]
[[ Agile Scrum in a fully distributed team | victorpalau.wordpress.com/2010/11/11/hw-cert-is-going-agile ]]
[[ 10 tools for distributed developer teams | mashable.com/2010/07/14/distributed-developer-teams ]]
[[ Stack over flow on Distributed | http://stackoverflow.com/questions/365016/distributed-development-team-tools-needed ]]
[[ InfoQ articles on Distributed Teams | http://www.infoq.com/distributed_teams ]]
[[ linuxtopia collection | http://www.linuxtopia.org/online_books/index.html ]]
[[ Effective Emacs | http://sites.google.com/site/steveyegge2/effective-emacs ]]
[[ Emacs Wiki | http://www.emacswiki.org/cgi-bin/wiki ]]
[[ Guided Tour of Emacs | http://www.gnu.org/software/emacs/tour/ ]]
[[ GNU Emacs Manual  | http://www.gnu.org/software/emacs/manual/html_node/emacs/index.html ]]
[[ Converting from Vim to Emacs | http://bradbeveridge.wordpress.com/2007/06/21/how-a-vim-user-converts-to-emacs/ ]]
----
!! Lisp
[[ Functional Programming at wikipedia | http://en.wikipedia.org/wiki/Functional_programming ]]
!Main Heading
!!Sub Heading
!!! Sub Sub Heading
!Text formatting
 ''bold text'', //italic text//, __underlined text__ , @@highlighted text@@
{{{
''bold made with single quotes''
//italic text with double-backslash//
__underlined text with underscores__
@@HIGHLIGHTED Text with surrounding @@
}}}
----
!Lists
!! Bullet List
*Entry One
**Sub-entry A
***Sub-sub-entry i
***Sub-sub-entry ii
**Sub-entry B
*Entry Two
*Entry Three
----
!! Numbered List
#Entry One
##Sub-entry A
###Sub-sub-entry i
###Sub-sub-entry ii
##Sub-entry B
#Entry Two
#Entry Three
!Snippet Block
{{{
   $> command-line stuff/source code block
}}}
----
!! Inline webpage
Embedded inline webpage
<html>
<iframe src="http://en.wikipedia.org/wiki/Main_Page" width="100%" height="100%" frameborder="1" vspace="0" hspace="0" marginwidth="0" marginheight="0" scrolling="yes">
</iframe>
</html>
----
!Inline Image
[img[ example image | http://upload.wikimedia.org/wikipedia/commons/thumb/d/d4/Siberian_Tiger_by_Malene_Th.jpg/156px-Siberian_Tiger_by_Malene_Th.jpg]]
{{{
[img[alternate text|URL or file:///home/self/Desktop/TEST.png]]
}}}
----
!Hyper Links
InternalLinkToAnotherTiddler (uses PascalCase syntax)
[[External Link to Google.com|http://www.google.com]]
----
!Keyboard Shortcuts
[[Keyboard Shortcuts for Tiddlywiki|http://tiddlywiki.org/wiki/Keyboard_Shortcuts]]
----
! Collapsible Lists
[[ Expand/Collapse Lists using NestedSlidersPlugin at TiddlyTools | http://www.tiddlytools.com/#NestedSlidersPlugin ]]
----
! Tiddlywiki Themes
[[TiddlyTheme based on Wikipedia | http://tiddlythemes.com/#TiddlyPedia]]
----
! Links to other tiddlers-by-tag
<<tagging tiddlywiki>>
----
!Editing/Formatting your TiddlyWiki
[[Quick Tips for formatting your Tiddlywiki|http://www.blogjones.com/TiddlyWikiTutorial.html#EasyToEdit]]
!Creating a CSS style-sheet from default TiddlyWiki settings
The StyleSheetLayout and StyleSheetColors contain the default settings. 
NOTE: Do @@__NOT__@@ change them.
Add your custom over-rides in the StyleSheet shadow tiddler.
Copy the colors and layout to a new .css file for getting a consistent look in your blog etc.
----
!CSS Tutorial
[[W3Schools CSS Tutorial|http://w3schools.com/css/css_intro.asp]]
[[W3Schools CSS TryItEditor|http://w3schools.com/css/tryit.asp?filename=trycss_default]]
----
!See Also:
!![[TiddlyWiki Tutorial|http://www.blogjones.com/TiddlyWikiTutorial.html]]
//All you have to do to alter the style and structure of this page is to change a few ShadowTiddlers. The primary ones you're going to be interested in are the following:

    * PageTemplate -- Contains the overall structure of the page, including the gradient macro for the masthead.
    * EditTemplate -- Contains the structure and order of the tiddler editor screen
    * ViewTemplate -- Contains the structure and order of the tiddler view screen
    * StyleSheetColors -- Contains the CSS for the colors used by the TiddlyWiki
    * StyleSheetLayout -- Contains the CSS for the layout of the TiddlyWiki
    * StyleSheetPrint -- Contains the CSS used when printing from the TiddlyWiki
//
----
!Reference
''[[ TiddlyTools extending Tiddlywiki with Plugins | http://www.tiddlytools.com ]]''
[[See the TiddlyWikiTutorial for copy-paste examples | http://www.blogjones.com/TiddlyWikiTutorial.html]]
[[Tiddler Toddler for basic examples | http://tiddlertoddler.tiddlyspot.com ]]
[[ ExtJS at wikipedia | http://en.wikipedia.org/wiki/Ext_JS ]]
[[ ExtJS Samples | http://dev.sencha.com/deploy/ext-4.0.0/examples ]]
[[ ExtJS Localization Sample | http://dev.sencha.com/deploy/ext-4.0.0/examples/locale/multi-lang.html ]]
[[ ExtJS Template and Databinding sample | http://dev.sencha.com/deploy/ext-4.0.0/examples/platform/templates.html ]]
----
!! Introduction
[[ PPT on ExtJS at slideshare.net | http://www.slideshare.net/MomentumDesignLab/extjs-presentation  ]]
[[ Getting started with ExtJS from couchDB | http://wiki.apache.org/couchdb/Getting_started_with_ExtJS ]]
----
[[ FOSS India | http://foss.in ]]
''[[ Showmedo - Video Learning site with open-source community content |  http://showmedo.com/ ]]''
[[ FOSS Projects at Oracle | http://oss.oracle.com/ ]]
!! RFC959
[[ FTP wiki at wikipedia | http://en.wikipedia.org/wiki/File_Transfer_Protocol ]]
''[[ List of FTP commands | http://en.wikipedia.org/wiki/File_Transfer_Protocol#List_of_FTP_commands ]]''
''[[ List of FTP Reply Codes | http://en.wikipedia.org/wiki/File_Transfer_Protocol#FTP_reply_codes ]]''
''[[ Superb RFC on FTP | http://www.w3.org/Protocols/rfc959/ ]]''
''[[ Latest RFC 959 on FTP with links to updates | http://tools.ietf.org/html/rfc959 ]]''
----
!! Installation
''[[ Quick HOWTO : Ch15 : Linux FTP Server Setup | http://www.linuxhomenetworking.com/wiki/index.php/Quick_HOWTO_:_Ch15_:_Linux_FTP_Server_Setup ]]''
----
!! FTP commands
[[ Basic FTP commands for transferring files | http://www.ce.utexas.edu/prof/maidment/ce397/lectures/ftp.htm ]]
''[[ Understanding FTP using raw FTP commands and telnet | http://www.webdigi.co.uk/blog/2009/ftp-using-raw-commands-and-telnet/ ]]''
''[[ List of raw FTP commands and the parameters | http://www.nsftools.com/tips/RawFTP.htm ]]''
''[[ PDF - FTP sequence diagram at DNS and TCP connection level | http://www.eventhelix.com/RealtimeMantra/Networking/FTP.pdf ]]''
----
!! TLAs
{{{
user-PI, server-PI = Protocol Interpreter ( ftp command interpreter)
DTP = Data Transfer Process
NVT = Network Virtual Terminal
NVFS = Network Virtual File System
file-page = page of a "holey-file"/discontinuous file
L = (listening) control port number 21
L-1 = data port number 20
}}}
----
!! Design overview
1) Control channel (port 21) for the FTP protocol commans (out-of-band commands channel) follows the Telnet Protocol.
2) Data Channel (port 20 or other in passive mode) for data transfer.
''[[ Overview of FTP Protocol Design | http://www.w3.org/Protocols/rfc959/2_Overview.html ]]''
''[[ File Transfer protocol at TCP/IP Guide | http://www.tcpipguide.com/free/t_FileTransferProtocolFTP.htm ]] ''
''[[ Telnet Protocol at the TCP/IP Guide | http://www.tcpipguide.com/free/t_TelnetProtocol.htm ]]''
[[ RFC 854 Telnet Protocol Specification | http://tools.ietf.org/html/rfc854 ]]
[[ RFC 855 Telnet Option Specifications | http://tools.ietf.org/html/rfc855 ]]
----
!! Active vs Passive FTP
Active mode is where the server actively connects to client for the Data channel.
Passive mode is named after the 'PASV <portnum>' command sent to server by client to be in passive mode i.e. client will initiate the data connection on <portnum>.
{{{
 Active FTP :
     command : client >1023 -> server 21
     data    : client >1023 <- server 20

 Passive FTP :
     command : client >1023 -> server 21
     data    : client >1023 -> server >1023
}}}
''[[ Active FTP vs. Passive FTP, a Definitive Explanation | http://slacksite.com/other/ftp.html ]]''
[[ How Proxy Server serves FTP clients | http://www.codeproject.com/Articles/9547/How-Proxy-Server-serves-FTP-clients ]]
----
----
!!! Data Transfer modes
STREAM - stream of bits with connection close to signify EOF.
BLOCK - header followed by data. multiple files can be sent EOR and EOF can be used. So multiple files can be transferred on same connection.
COMPRESSED - uses RLE (run-length encoding style to "compress" repeating characters and fillers like spaces) esp. for printer files.
Restart marks are inserted by server to allow transfer restart from the restart mark for block and compressed modes.
On a restart of transfer restart mark is sent on control connection followed by the transfer command RETR, STOR, LIST.
''[[ Data Transfer Functions | http://www.w3.org/Protocols/rfc959/3_DataTransfer.html ]]''
----
!! FTP Protocol level commands
These are commands that a FTP Protocol Interpreter needs to implement as per RFC 959
''[[ File Transfer Functions | http://www.w3.org/Protocols/rfc959/4_FileTransfer.html ]]''
----
!!!Difference between protocol level and user level ftp "commands"
{{{
Note: 
a) commands like 'USER' are protocol commands understood by the PI i.e. Protocol Interpreter.
b) They are different from commands like 'user' used by a human to interact with an ftp client program (ftp.exe)
Example:
a)  'USER <username>' is a __protocol level__ command understood by ANY ftp command interpreter.
b) 'user <username>' is a __user level__ command understood by say ftp.exe which implements the FTP Protocol.
}}}
----
!! FTP user level commands
These are commands keyed in by user of ftp program
{{{
ftp> ?
Commands may be abbreviated.  Commands are:
!		debug		mdir		sendport	site
$		dir		mget		put		size
account		disconnect	mkdir		pwd		status
append		exit		mls		quit		struct
ascii		form		mode		quote		system
bell		get		modtime		recv		sunique
binary		glob		mput		reget		tenex
bye		hash		newer		rstatus		tick
case		help		nmap		rhelp		trace
cd		idle		nlist		rename		type
cdup		image		ntrans		reset		user
chmod		lcd		open		restart		umask
close		ls		prompt		rmdir		verbose
cr		macdef		passive		runique		?
delete		mdelete		proxy		send

ftp> ? $
$         	execute macro
!         	escape to the shell
ascii     	set ascii transfer type
binary    	set binary transfer type
bye       	terminate ftp session and exit
quit      	terminate ftp session and exit
case      	toggle mget upper/lower case id mapping
chmod     	change file permissions of remote file
close     	terminate ftp session
cr        	toggle carriage return stripping on ascii gets
form      	set file transfer format
hash      	toggle printing `#' for each buffer transferred
Hash mark printing on (1024 bytes/hash mark).
idle      	get (set) idle timer on remote side
mdir      	list contents of multiple remote directories
trace     	toggle packet tracing
}}}
----
[[ Video to visualize FTP with comments | http://www.visualland.net/view.php?cid=1163&protocol=FTP&title=1.%20FTP%20Basics&ctype=1 ]]
[[ Capturing ssh traffic for ftp-sftp | http://www.tectia.com/manuals/connectsecure-admin/61/ssh-capture.html ]]
[[ FTP conversation explained simply | http://www.ncftp.com/libncftp/doc/ftp_overview.html ]]
[[ Running FTP commands over telnet | http://www.webdigi.co.uk/blog/2009/ftp-using-raw-commands-and-telnet ]]
[[ FTP session sequence diagram | http://www.eventhelix.com/RealtimeMantra/Networking/FTP.pdf ]]
[[ FTP List of Raw commands | http://www.nsftools.com/tips/RawFTP.htm ]]
!Reference
[[Wikipedia on FTP | http://en.wikipedia.org/wiki/File_Transfer_Protocol ]]
''[[ FTP RFC 1579 (informational) | http://tools.ietf.org/html/rfc1579 ]]''
[[ FTP RFC 959 (standard) | http://tools.ietf.org/html/rfc959 ]]
* Download the ISO image CD/DVD
[[ Download options for latest fedora core | http://fedoraproject.org/en/get-fedora ]]
* Burn the ISO
* Boot the Setup 
{{{
1) Press Ctrl-S to get into the BIOS settings
2) Ensure that Select Startup Sequence is [Enabled]
3) Exit BIOS
4) Keep pressing F12 (or the key specified in BIOS sidebar help) 
5) Wait till you get the Startup Sequence Selection Menu.
6) Select the CD/DVD drive to boot and install to hard-drive
}}}
[[Howto on Boot Sequence Selection | http://docs.fedoraproject.org/en-US/Fedora/14/html/Burning_ISO_images_to_disc/sect-Burning_ISO_images_to_disc-Next_steps.html]]
* On the FC Desktop click on the "Install to HardDrive" icon
* Add User/Root
* Set the yum repositories (uncomment baseurl and comment the mirrorlist in yum.repos.d/fedora.repo, yum.repos.d/fedora-updates.repo)
{{{
$> yum check-update
$> yum list
$> yum update
}}}
[[Burning ISO Images to Disc|http://docs.fedoraproject.org/en-US/Fedora/14/html/Burning_ISO_images_to_disc/index.html]]
----
!! LibreOffice
{{{
$> mkdir LibreOffice-3.4.1/
$> cd LibreOffice-3.4.1/

#Download 2 RPMS from the download page
http://download.documentfoundation.org/libreoffice/stable/3.4.1/rpm/x86/LibO_3.4.1_Linux_x86_install-rpm_en-US.tar.gz
http://download.documentfoundation.org/libreoffice/stable/3.4.1/rpm/x86/LibO_3.4.1_Linux_x86_helppack-rpm_en-US.tar.gz

#Install LibreOffice and desktop menu integration RPMs
$> tar -zxvf LibO_3.4.1_Linux_x86_install-rpm_en-US.tar.gz
$> cd LibO_3.4.1rc3_Linux_x86_install-rpm_en-US/RPMS/
$> rpm -ivh *.rpm
$> cd desktop-integration/
$> rpm -ivh *.rpm
$> yum install --nogpgcheck *redhat*.rpm

#Install HelpPack RPM
$>  cd LibreOffice-3.4.1/
$> tar -zxvf LibO_3.4.1_Linux_x86_helppack-rpm_en-US.tar.gz
$> cd LibO_3.4.1rc3_Linux_x86_helppack-rpm_en-US/RPMS/
$> rpm -ivh libobasis3.4-en-US-help-3.4.1-103.i586.rpm
}}}
1) During first run of the LibreOffice I was getting an error dialog message at multiple points in the loading stage along with the LibreOffice splash screen.
2) Error message informed me to resolve the clash of Defective JRE by changing settings in the Tools->Options->Java and select the correct JRE
3) Problem is due to clash between Sun JRE and OpenJDK JRE 
[[ LibreOffice JRE Defective Error Message |  http://forums.opensuse.org/english/get-technical-help-here/applications/456886-libreoffice-jre-defective-message.html ]]
[[ Installation Steps for LibreOffice | http://www.unixmen.com/linux-tutorials/1218-install-libreoffice-in-linux-fedora-ubuntu-debian-#josc4770 ]]
[[ Download LibreOffice | http://www.libreoffice.org/download/ ]]
[[ Comparison of LibreOffice vs OpenOffice at Slashdot | http://www.infoworld.com/d/applications/open-office-dilemma-openofficeorg-vs-libreoffice-716 ]]
!! Good reads to learn Firebug
''[[ Firebug how to log function calls | http://www.softwareishard.com/blog/firebug/firebug-tip-log-function-calls ]]''
''[[ Firebug Log DOM events | http://www.softwareishard.com/blog/firebug/firebug-tip-log-dom-events ]]''
''[[ Firebug Visual Cheat-Sheet | http://duvet-dayz.com/firebug-cheatsheet ]]''
--
''[[ Do Only What Matters: Firebug | http://khaidoan.wikidot.com/firebug ]]''
''[[ Excellent blog with super tricks and tips on using firebug like a pro | http://www.softwareishard.com/blog/firebug ]]''
[[ Good list of FireFox events | https://developer.mozilla.org/en-US/docs/Mozilla_event_reference?redirectlocale=en-US&redirectslug=DOM%2FDOM_event_reference ]]
----
!! How to fix “Firebug’s log limit has been reached.”
[[ Fix console.log file limit in Firebug | http://www.kumarchetan.com/blog/2010/02/04/fix-firebugs-log-limit-has-been-reached ]]
{{{
1) Enter about:config in firefox address bar
2) Enter extensions.firebug.console.logLimit in the "Filter" control
3) Default limit is 500. Double click the setting to set the new limit to say 5000
}}}
----
!! Firebug automatic de-minifier (helps with breakpoints)
''[[ Firebug plugin for de-minifying javascript at stackoverflow | http://stackoverflow.com/questions/4279319/is-there-a-plugin-that-allows-me-to-automatically-unminify-the-javascript-includ ]]''
''[[ Firebug deminifier for Firefox v3.6 and later | https://addons.mozilla.org/en-US/firefox/addon/javascript-deminifier ]]''
{{{
 Note: Version 1.0.7 Released January 8, 2012 13.3 KB Works with Firefox 3.6 and later 
}}}
----
!! Internet Explorer IE8 Developer Tools debugger
''[[ IE8 Debug messages in Console View | http://msdn.microsoft.com/en-us/library/ie/gg589530%28v=vs.85%29.aspx#ConsoleTabView ]]''
''[[ Debugging Script with Internet Explorer Developer Tools at MSDN | http://msdn.microsoft.com/en-us/library/dd565625%28v=vs.85%29.aspx#consolelogging ]]''
----
!! Firebug-lite for IE
''[[ console.log() in IE doesn't display a javascript object | http://stackoverflow.com/questions/1956384/how-do-i-dump-javascript-vars-in-ie8 ]]''
[[ How to install and use firebug-lite on IE and other browsers | http://www.makeuseof.com/tag/install-firebug-for-browsers-other-than-firefox ]]
[[ Video - How to circumvent bookmarking issue for firebug-lite bookmarklet in IE | http://www.youtube.com/watch?v=vLJ2RaNZ22E ]]
----
!! Firebug conversation tracking
Debugging example: click a submit button which makes an RPC call
Open Firebug click on Console Tab OR Net Tab->XHR to see conversation going on between browser and server
{{{
i.e. POST messages with corresponding debug info:
[Headers, Post, Response, JSON, Cookies]
Data is passed between browser and server using JSON in both POST and Response.
}}}
----
!!errors in perl scripts etc can be traced in error_log file 
{{{
$> tail -f /var/log/httpd/error_log
}}}
[[ Apache logs location | http://www.cyberciti.biz/faq/apache-logs/ ]]
----
!!MichaelSync Tutorial Notes
''[[ Firebug Tutorial – Overview of Firebug | http://michaelsync.net/2007/09/08/firebug-tutorial-overview-of-firebug ]]''
----
!!! Console Tab
''[[ Console API example usage | http://getfirebug.com/wiki/index.php/Console_API ]]''
''[[ Firebug Tutorial on Logging, Profiling and CommandLine Part1 | http://michaelsync.net/2007/09/09/firebug-tutorial-logging-profiling-and-commandline-part-i ]]''
''[[ Firebug Tutorial on Logging, Profiling and CommandLine Part2 | http://michaelsync.net/2007/09/10/firebug-tutorial-logging-profiling-and-commandline-part-ii ]]''
{{{
#Get the function call stack trace **with arguments***
console.trace();

console.log("object = %o", object);
console.log("Hidden input =%o", $('mydiv_Hidden') );

console.log("GURU: Entering function myfunction(var1=%s, var2=%s)", var1, var2);
console.debug("GURU: Click on the link => to go to source code line number");
console.dir(obj); #DOM tab representation of object
console.dirxml(obj); #HTML tab representation of object
console.log("GURU: Leaving function myfunction(varr1=%s, var2=%s)", var1, var2);

#dump javascript object to console
console.log("GURU: object=%o", obj); #FireFox: Get hyperlink to object contents in FireBug
console.log("GURU: object=", JSON.stringify(obj), null, 4 );   #IE8: avoids obj.toString() which outputs the useless output: "object=[object Object]"
console.log("GURU: object=", obj.id );  #normally a good way to identify a DOM/HTML element
}}}
''[[ How to log javascript objects to console log | http://stackoverflow.com/questions/10781315/confused-by-the-javascript-console-log-output-of-function-variables ]]''
----
!! Injecting arbitrary javascript utility scripts into firebug
From the Firebug Console run the following to "inject" code snippets/utility scripts to help in the debugging
{{{
var headID = document.getElementsByTagName("head")[0];
var newScript = document.createElement('script');
newScript.type = 'text/javascript';
newScript.src = 'http://ajax.cdnjs.com/ajax/libs/json2/20110223/json2.js'; #Inject json2.js for JSON.stringify(object)
headID.appendChild(newScript);
[...]
console.log( JSON.stringify(object));
}}}
Source: ''[[ Injecting arbitrary javascript files into firebug | http://dev.enekoalonso.com/2008/11/30/injecting-javascript-with-firebug]]''
[[ Is there a publicly available CDN for json2 | http://stackoverflow.com/questions/2994577/is-there-a-publicly-available-cdn-that-hosts-json2 ]]
--
!!!Dynamically injecting utility functions into Firebug
{{{
function fn() {
    alert('hello JS');
}
var head = document.getElementsByTagName('head')[0],
script = document.createElement('script');
script.src = '';    
head.appendChild(script);

//FF doesn't support innerText
script[script.innerText ? 'innerText' : 'textContent'] = '(' + fn + ')()';
head.appendChild(script);
}}}
----
!!!!Stack trace allows the following things:
a) Function call sequence details along with argument values passed to each function. 
b) Each function is clickable to take you to it's source in the Script tab. 
c) Each argument can also be inspected in the DOM or HTML tabs
{{{
console.trace(); 
}}}
----
!!!! Inspect object in DOM or appropriate Tab
{{{
inspect(myContainer["objkey"]);
}}}
----
''[[ Firebug Tutorial – Using Commandline API in Firebug | http://michaelsync.net/2007/09/15/firebug-tutorial-commandline-api ]]''
{{{
Commandline API function in Firebug
** 1. $(id)                 //Shorthand for document.getElementById(”) in Javascript
   2. $$(selector)       //Used for finding matching CSS array of elements
** 3. $x(xpath)          //Returns an array of elements matching the given XPath
** 4. dir(object)         //Dump objects properties with hyperlinks as in DOM Tab.
   5. dirxml(node)      //Dump HTML/XML element's XML source tree (as in HTML Tab)
   6. cd(window)       //Command line expressions are relative to the top-level window of page by default. This allows you to 'cd' to a frame in the page instead.
   7. clear()            //clears the console log
** 8. inspect(object[, tabName])     //Inspect the object in most suitable Firebug Tab or tab specified.
   9. keys(object)          //Returns an array of property names of given object 
  10. values(object)        //Returns an array of property values of given object
**11. debug(fn) & undebug(fn)  //Add/Remove breakpoint in first line of function
**12. monitor(fn) & unmonitor(fn)    //Displays calls to given function (esp. useful if used with console.trace())
**13. monitorEvents(object[, types]) & unmonitorEvents(object[, types])
  14. profile([title]) & profileEnd()
}}}
----
!!!HTML Tab
''[[ Firebug Tutorial – HTML tab : Playing with HTML DOM | http://michaelsync.net/2007/09/19/firebug-tutorial-html-tab-playing-with-html-dom ]]''
''[[ Firebug Tutorial – HTML Tab : Examples | http://michaelsync.net/2007/09/23/firebug-tutorial-html-tab-examples ]]''
----
!!! Script tab
''[[ Firebug Tutorial – Script Tab : Javascript Debugging | http://michaelsync.net/2007/09/30/firebug-tutorial-script-tab-javascript-debugging ]]''
----
!! Net, CSS and DOM Tabs
''[[ Firebug Tutorial – Section 4 : Net, CSS and DOM tabs | http://michaelsync.net/2007/10/15/firebug-tutorial-section-4-net-css-and-dom-tabs ]]''
----
!! FireBug Video Tutorials
[[ Debugging and Testing the Web with Firebug - 40 Min Video from Google | http://www.youtube.com/watch?v=7p24bC8ZR3U ]]
[[ Google Workshop #5d: Debugging Web applications - 20 Min Video from Google | http://www.youtube.com/watch?v=33vkMnSlZV4 ]]
[[ Rob Campbell Slides on Debugging Web Applications | http://people.mozilla.org/%7Ercampbell/Debugging%20the%20Web.html ]]
----
[[ Jay Garcia Video on - What's new in Firebug 1.6 | http://vimeo.com/18411877 ]]
[[ Joe Hewitt's Yahoo Video - Welcome to Firebug 1.0 | http://video.yahoo.com/video/play?vid=111597 ]]
[[ Joe Hewitt's Video Firebug Power User Demo | http://ajaxian.com/archives/joe-hewitt-firebug-power-user-demo ]]
[[ Video on Firebug Breakpoints | http://snook.ca/archives/javascript/firebug-breakpoints ]]
[[ Screencast Guide to Debugging Javascript with Firebug | http://www.digitalmediaminute.com/screencast/firebug-js ]]
[[ Video Introduction to Firebug at firebug.com | http://getfirebug.com/video/Intro2FB.htm ]]
[[ Debugging Ajax Applications with Firebug | http://www.youtube.com/watch?v=W4jXAaEMp2M ]]
[[ Kristarella Video on Debugging CSS with Firebug | http://vimeo.com/3087755 ]]
[[ Intro to Firebug for debugging CSS | http://css-tricks.com/video-screencasts/15-introduction-to-firebug ]]
[[ Quick & Easy CSS Development with Firebug (embedded video) | http://www.tutorial9.net/tutorials/web-tutorials/quick-easy-css-development-with-firebug ]]
[[ Firebug 1.3 video | http://didenko.com/files/firebug_demo.mp4 ]]
[[ Jesse Newland's screencast of Firebug 1.0 | http://files.jnewland.com/firebug.mov ]]
----
!! Other Tutorials
''[[Firebug Learning Links at Firebug Wiki | http://getfirebug.com/wiki/index.php/Firebug_Links ]]''
[[ Firebug Cheat Sheet | http://duvet-dayz.com/firebug-cheatsheet ]]
[[ Firebug Keyboard and Mouse Shortcuts | http://getfirebug.com/wiki/index.php/Keyboard_and_Mouse_Shortcuts ]]
[[ Introduction to Firebug | http://www.evotech.net/blog/2007/06/introduction-to-firebug ]]
[[ Debug Logging Tips with Firebug | http://getfirebug.com/logging ]]
[[ Javascript Debugging Tips with Firebug Javascript | http://getfirebug.com/javascript ]]
----
!! Reference
''[[ Tweaking Firebug Preferences at Firebug wiki | http://getfirebug.com/wiki/index.php/Firebug_Preferences ]]''
[[ Console Panel at Firebug wiki | http://getfirebug.com/wiki/index.php/Console ]]
[[ Command Line at Firebug wiki | http://getfirebug.com/wiki/index.php/Command_Line ]]
[[ HTML Panel at Firebug wiki | http://getfirebug.com/wiki/index.php/HTML_Panel ]]
[[ CSS Panel at Firebug wiki | http://getfirebug.com/wiki/index.php/CSS_Panel ]]
[[ Script Panel at Firebug wiki | http://getfirebug.com/wiki/index.php/Script_Panel ]]
[[ DOM Panel at Firebug wiki | http://getfirebug.com/wiki/index.php/DOM_Panel ]]
[[ Net Panel at Firebug wiki | http://getfirebug.com/wiki/index.php/Net_Panel ]]
----
''[[ Firebug 1.5: Editing, Debugging, and Monitoring Web Pages by Chandan Luthra and Deepak Mittal (Apr 7, 2010) | http://www.amazon.com/Firebug-1-5-Editing-Debugging-Monitoring/dp/1847194966/ref=sr_1_1?s=books&ie=UTF8&qid=1304519605&sr=1-1 ]]''
[[ Firebug Wiki Howto | http://getfirebug.com/wiki/index.php/Main_Page ]]
[[ Firebug FAQ | http://getfirebug.com/wiki/index.php/FAQ ]]
[[  Firebug Architecture | http://getfirebug.com/wiki/index.php/Firebug_1.6_Architecture_Review ]]
[[ Firebug Architecture Refactoring in 1.7 | http://getfirebug.com/wiki/index.php/Firebug_1.7:_Architecture_Refactoring ]]
[[ Debugging Research done for making Firebug | http://getfirebug.com/wiki/index.php/Firebug_Research ]]
----
!! Useful Firebug Extensions (in order of usefulness)
''[[ (No Reviews) Reverse Engineering Function call sequence with FireFlow | https://addons.mozilla.org/en-US/firefox/addon/fireflow ]]''
''[[ FireFlow Blog at Imaginea | http://blog.imaginea.com/fireflow ]]''
''[[ Export or Save Firebug Console Logs using ConsoleExport | http://www.softwareishard.com/blog/consoleexport ]]''
''[[ Save HTTP Conversations from FireBug Net Tab using Net Export | http://www.softwareishard.com/blog/netexport ]]''
''[[ Get ACE IDE support in Firebug CommandLine using AceBug | http://www.msi-stuff.com/acebug ]]''
''[[ Get Syntax Highlighting in Firebug with FireRainBow | http://firerainbow.binaryage.com ]]''
''[[ Track your changes in Firebug using FireDiff | http://www.incaseofstairs.com/firediff ]]''
''[[ CommandLine autocompleter using FireBug AutoCompleter | https://addons.mozilla.org/de/firefox/addon/firebug-autocompleter ]]''
[[ Links to Firebug Extensions at Firebug Wiki | http://getfirebug.com/wiki/index.php/Firebug_Extensions ]]
[[ (BUGGY) Track Conversation History in Firebug's Net Panel using Net History | https://addons.mozilla.org/en-US/firefox/addon/firebug-net-panel-history-over ]]
----
!! Miscellaneous
[[ Learning jQuery with Firebug | http://ejohn.org/blog/hacking-digg-with-firebug-and-jquery ]]
----
!! Internet Explorer
''[[ Internet Explorer Developer Toolbar | http://www.microsoft.com/downloads/details.aspx?familyid=e59c3964-672d-4511-bb3e-2d5e1db91038&displaylang=en ]]''
''[[ Fiddler Free Web Debugging Proxy for Windows | http://www.fiddler2.com/fiddler2 ]]''
----
!! CoLT
Allows copying of a single link with Title and URL as per given output template
[[ Copy Link Text extension to firefox | https://addons.mozilla.org/en-US/firefox/addon/colt/ ]]
----
!!Copyurlplus
Allows text selection, link selection with copy of title, url and selected text
''[[ copyurlplus which xpi version to install for different firefox versions | http://dmcritchie.mvps.org/firefox/firefox.htm#copyurlplus ]]''
''[[ download copyurlplus xpi version 1.3.4 for firefox 3.6 | http://btcorp.dyndns.org/Tools/FireFoxExtensions/FF_3.6_extensions/ ]]''
''[[ notes on customizing copyurlplus by dmcritchie | http://dmcritchie.mvps.org/firefox/copyurlplus.htm ]]''
[[ Making a Firefox extension work in later versions of firefox | http://johnbokma.com/mexit/2006/11/03/updating-an-extension.html ]]
[[ Making copyurlplus extension work in later versions of firefox firefox | http://johnbokma.com/mexit/2007/01/18/copy-url-plus-extension-firefox.html ]]
----
!! CopyAllURLs
Allows copying of all open tabs (optionally with history and sorting) with Title, URL as per given output template
[[ Copy all URLs from open tabs (optionally with history) | https://addons.mozilla.org/en-US/firefox/addon/copyallurls/?src=search ]]
#Download the firefox 4 beta 8 from the website
# Unzip the tar.gz file
# Add to Panel->Custom Application Launcher->path to unzipped 'firefox' executable
# Enjoy new features like Tab Grouping etc.
----
!Missing Status Bar
*When you mouse hover over a link old status bar used to show the url. This now appears in grey-out color in the address bar itself. 
*You __can__ view the "Add on bar" used by add-ons to  display their icons.
----
!Firefox Beta Feedback
#[[Firefox Submit Feedback | http://input.mozilla.com/en-US/feedback ]]
#[[Firefox Beta 4 Test Pilot FAQ | https://testpilot.mozillalabs.com/faq ]]
# [[Test Pilot Info | chrome://testpilot/content/welcome.html ]]
!SELinux Alert:
{{{
SELinux is preventing /usr/lib/firefox-4.0/firefox-bin from using the execstack access on a process.

Plugin: allow_execstack 
you do not think /usr/lib/firefox-4.0/firefox-bin should need to map stack
memory that is both writable and executable.If you do not think /usr/lib/firefox-4.0/firefox-bin should need to map stack memory that is both writable and executable.
you need to report a bug. This is a potentially dangerous access.
Contact your security administrator and report this issue.
}}}
----
!!Generating H/W and S/W Configuration Report for reporting bugs:
In firefox address bar type in:
   //about:support//
{{{
  Application Basics
        Name        Firefox
        Version        4.0b8

        User Agent        Mozilla/5.0 (X11; Linux i686; rv:2.0b8) Gecko/20100101 Firefox/4.0b8
        Profile Directory          Open Containing Folder
        Enabled Plugins          about:plugins
        Build Configuration          about:buildconfig

  Extensions        
        Name        Version        Enabled        ID
        Google Toolbar for Firefox         7.1.20101113Lb1         true         {3112ca9c-de6d-4884-a869-9855de68056c}

  Modified Preferences
      Name      Value
        accessibility.typeaheadfind.flashBar        0
        browser.fixup.alternate.enabled        false
        browser.places.smartBookmarksVersion        2
        browser.startup.homepage        https://mail.google.com
        browser.startup.homepage_override.buildID        20101221191859
        browser.startup.homepage_override.mstone        rv:2.0b8
        extensions.lastAppVersion        4.0b8
        network.cookie.prefsMigrated        true
        places.history.expiration.transient_current_max_pages        20837
        privacy.sanitize.migrateFx3Prefs        true
        security.warn_viewing_mixed        false

  Graphics
      GPU Accelerated Windows      0/1
}}}
----
!!Previous Bug Reports
See comments for further info: [[ Red Hat Bug Report (512845) | https://bugzilla.redhat.com/show_bug.cgi?id=512845]] 
[[ Fedora Forum Bug Report (237485) | http://fedoraforum.org/forum/showthread.php?t=237485 ]]
----
!See Also
[[SELinux Guide | http://fedoraproject.org/wiki/SELinux ]]
In Firefox proxy settings for network.proxy.failover_timeout is set as 1800 seconds i.e. 30 minutes
FireFox settings Accessible from about:config filter on network.proxy:
[[ Help on network.proxy.failover_timeout option of firefox | http://kb.mozillazine.org/Network.proxy.failover_timeout ]]
[[ Help on network.proxy.type proxy config option of firefox | http://kb.mozillazine.org/Network.proxy.type ]]
[[ Discussion on firefox timeout compared to IE | http://forums.mozillazine.org/viewtopic.php?f=7&t=102322&start=0 ]]
!Gdb:
!! Stack Trace with gdb
Installing debuginfo packages (rpms) for related release software rpms
{{{
$> yum install yum-utils -y                       #yum-utils contains the debuginfo-install command
$> debuginfo-install xmlcopyeditor
$> debuginfo-install firefox
$> yum update -y
}}}
[[ How to get a stack trace with gdb | http://fedoraproject.org/wiki/StackTraces#gdb ]]
''[[ GDB debugging intro at Gnome New Developer Tutorial | http://people.gnome.org/~newren/tutorials/developing-with-gnome/html/ch03.html#gdb ]]''
''[[ strace intro at Gnome New Developer Tutorial | http://people.gnome.org/~newren/tutorials/developing-with-gnome/html/ch03s02.html ]]''
''[[ Getting Traces with gdb - gnome manual | http://live.gnome.org/GettingTraces/Details ]]''
''[[ Stack Traces from fedora manual | http://fedoraproject.org/wiki/StackTraces ]]''
''[[ How to setup Crash Handling for Debug stacktrace backtrace | http://fedoraproject.org/wiki/Features/CrashHandling ]]''
''[[ ABRT wiki (readonly) | https://fedorahosted.org/abrt/wiki ]]''
''[[ The Art of Decoding stacktraces or backtraces without debug info by Alexander Larsson| http://blogs.gnome.org/alexl/2005/08/26/the-art-of-decoding-backtraces-without-debug-info/ ]]''
''[[ How to add debuginfo to a package | http://fedoraproject.org/wiki/Packaging:Debuginfo ]]''
''[[ Java StackTraces for Java Based Applications like Eclipse | http://fedoraproject.org/wiki/JavaStackTraces ]]''
''[[ How to debug virtualization problems | http://fedoraproject.org/wiki/How_to_debug_Virtualization_problems ]]''
----
!!Compiling a program for debugging:
{{{
    g++ -ggdb -O0 hello.cpp  # 
    g++ -g3 -O0 hello.cpp      # -g3 compiles debug info for preproc macros and no optimization
}}}
----
!!Running a program under the debugger without arguments
{{{
    $> gdb myProgram
}}}
----
!!Setting the program arguments:
{{{
   a)  $> gdb --args myProgram  10 20 30 40
   b)  (gdb) start 10 20 30 40  # sets temporary breakpoint at main() and calls run.
   c)  (gdb) file myProgram
        (gdb) run 10 20 30 40
   d)   (gdb)  set args 10 20 30 40
         (gdb) show args
        (gdb) run
    e) $> gdb myProgram core
    f) $> gdb -tui myProgram core  # start vim/emacs ide for debug session
}}}
----
!!Redirect input/output of debugged program (inferior process):
{{{
    (gdb) file myProgram
    (gdb) run  < input.txt > myProgram.log

    #Start debug session by Running a wrapper program to setup the environment for the debugged executable:
    (gdb) set exec-wrapper env 'LD_PRELOAD=libtest.so'
    (gdb) run
}}}
----
!!Quitting gdb:
{{{
    a)  quit
    b) Ctrl-d
}}}
----
!!Displaying source code:
{{{
(gdb)    list    #  displays 10 lines from current point in source code
(gdb)    list    #   displays 10 lines of the function
(gdb)    list -10     # displays negative 10 lines i.e. above current point in source code.
}}}
----
!!Printing information:
{{{
(gdb)     print iCount    #   prints value of iCount variable
(gdb)     print $eax    #   prints value in eax register
(gdb)     print my_func(10+2)    #   prints the return value of myFunc(12)    
(gdb)     printf "%s\n" myPtr    #   prints the string pointed to by myPtr
}}}
----
!!Change variables:
{{{
(gdb)     set  iCount=100
}}}
----
Control-flow statements:
!!Setting a breakpoint:
{{{
(gdb)     break main                     #   set breakpoint on a function    
(gdb)     break  myfile.cpp:10    #   set breakpoint on Filename:Linenumber
}}}
----
Attach a conditional to a bnum where bnum is a breakpoint, watchpoint or catchpoint
{{{
    (gdb) cond bnum x != 0

    (gdb) step  [count]  #   step to next source level statement (includes entering into a function call)
    (gdb) stepi  [count]  #   step to next machine level instruction (includes step-into a function call)
    (gdb) next   [count]  #   step to next source level statement (stepping over a function call)
    (gdb) nexti   [count]  #   step to next machine level instruction (stepping over a function call)
}}}
----
Useful for reaching a function or skipping over a loop
{{{
    (gdb) until [location]    # continue execution until you reach the location.

    (gdb) continue  [ignore-count]      # continue execution with optional count to ignore a breakpoint
    (gdb) call  add(10,20)   # call any function from gdb
    (gdb) finish      # finish the current function and stop in calling function
    (gdb) return    # force return to calling function
    (gdb) advance myfunc   # jump to an arbitrary location in the program
}}}
----
!!Autocomplete in gdb: (Press tab at end of word or alt+?)
{{{
    (gdb) break m(TAB)
    (gdb) br 'myFun(TAB)
    (gdb) br 'myFun(Alt+?)
    (gdb) print 'mystruct.my(Alt+?)       #   displays all members of mystruct
}}}
----
!!Break Command Lists:   
{{{
   a)break 403 if x>0      commands
        silent
        printf "x is %d\n", x
        continue
      end
    b) break myFunction
        commands
            silent
      set x = y + 4
            continue
        end
}}}
----
!!Stack frame operations:
{{{
    frame    #display brief description of currently selected stack frame
    info frame [addr]   #verbose description about stack frame
    frame n    # select frame by number
    frame addr  #  useful to select bug-corrupted frame by address rather than frame number

    up (-)N    # move up by (-)N stack frames
    down (-)N    # move down to (-)N stack frames downward
    backtrace [full (-)N]    #   show function call-stack upto N depth, Full shows locals also for current thread
    thread apply all backtrace [full  (-)N] # displays backtrace for all threads in a multi-threaded application.

    info args    # display arguments of current stack frame
    info locals    # display in-scope (static/auto) variables of current stack frame.
    info catch    # display info on exception handlers in current stack-frame
}}}
----
!!Automatic display of info:
{{{
    info display    # lists the various auto displays
    display /fmt expression
    disable|enable display dnum
    display    # forces output of all the enabled display-expressions
}}}
Note: GDB automatically disables display of a local variable when it goes out of scope.
----
!!Examining Memory:
{{{
    a) (gdb) info line main
            Line 9 of "hi.cpp" starts at pc 0x000c and ends at 0x0100
       (gdb) disassemble /m 0x000c, 0x0100       # /m = mixed source+assembly, /r = raw machine instructions

    b) # n=Count, f=format (`x', `d', `u', `o', `t', `a', `c', `f', `s'), units=(byte=1, halfword=2, word=4, giant=8)
        x /10s1 &myarray    # print 10 bytes string of myarray
}}}
----
!!Attaching to a running process by PID:
{{{
    attach 1234      # attaches to external process by PID and stops it 
    break myBuggyFunction     # set break point
    continue                              # continue execution of stopped process
    detach              # gdb detaches from the running process. Can run/attach another process from hereon.
}}}
----
!!Kill the debugee process:
Note:  
a) If you exit gdb while you have an attached process, you detach that process.
b) If you use the run command (while attached), you kill that process.
c) By default, gdb asks for confirmation if you try to do either of these things
{{{
    kill   # useful for a) recompile while retaining breakpoints b) switch to debugging the proc's core dump
}}} 
---- 
!!Choose Files:
1) Take symbols from a.syms, execute a.out, use core, and attach to pid 1234
{{{    
$> gdb -symbols a.syms   -exec a.out   -core core    -pid 1234 
}}}
2) Take symbol-table from the executable, use core and attach to pid 1234
{{{
$>  gdb -se a.out -core core -pid 1234
}}}
3) Standalone gdb commands to choose symbol-file, exec-file , core-file:
{{{
(gdb) file progAndsym.out    #   choose both symbol and executable files
(gdb) exec-file prog.out
(gdb) symbol-file  symbols.sym
(gdb) core-file core.1234
}}}
----
!!Gdb help:
{{{
    a) (gdb) help #command in gdb
    b) apropos search-term   # similar to apropos command to search based on search terms
    c) info  # help on program being debugged       
       help info  #see what all commands are possible for info
    d) set radix 10
       show radix    #   display current gdb settings for radix
       show          #   by default displays all current gdb settings       
       help show    #   see what all commands are possible for show
}}}
----
!!Saving GDB command history:    
{{{
(gdb) set history filename fname
(gdb) set history save on|off
}}}
----
!!Running shell or make commands:
{{{
    a) (gdb) shell ls
    b) (gdb) make clean
       (gdb) make all
}}}
----
!!Logging gdb output:
{{{
    set logging on|off
    set logging file mygdb.log,
    set logging overwrite on|off    #   set append on/off
    set logging redirect on|off    #   redirect output to logfile AND console
    show logging    #   show current logging settings
}}}
----
!!Get/Set GDB settings: 
Note: It's better to set/get environment variables through .profile/.login files.
{{{
    a) cd directory    # set current directory
        pwd
    b) (gdb) info proc        # displays current directory of debugged process at any time
    c) (gdb) show paths
        (gdb) path directory
    d) (gdb) show environment [varname]
        (gdb) set environment varname [=value]   #  set value as null if optinal value is missing
       (gdb) unset env varname
}}}
----
''Note: gmake version discussed here is version 3.79''
----
!! Variables
''Simply expanded variable:''
{{{
simple_var1 := 10
simple_var2 := 20

#simple expansion of variables as of this moment
simple_expanded_var := $(simple_var1) $(simple_var2) $(simple_var3)

simple_var3 := 30

echo $(simple_expanded_var)        #prints "10 20 " as $(simple_var3) was undefined at that point in time
}}}
''Recursively expanded variable:''
{{{
#reuse-vars.mk
recur_var = $(simple_var1) $(simple_var2) $(simple_var3)

#makefile1.mk
simple_var1 := 10
simple_var2 := 20
simple_var3 := 30

echo $(recur_var)        #prints "10 20 30" as variable references are expanded at point of use of $(recur_var)
}}}
Variables and functions in all parts of a makefile are expanded when read, except for :
a) shell commands in rules, 
b) right-hand sides of variable definitions using `=', and
c) bodies of variable definitions using the define directive. (like C++ macros)
''[[ Two Flavors of a variable | http://sunsite.ualberta.ca/Documentation/Gnu/make-3.79/html_chapter/make_6.html#SEC59 ]]''
''[[ Appending more text to a variable | http://sunsite.ualberta.ca/Documentation/Gnu/make-3.79/html_chapter/make_toc.html#TOC65 ]]''
''[[ Setting variables | http://sunsite.ualberta.ca/Documentation/Gnu/make-3.79/html_chapter/make_6.html#SEC64 ]]''
''[[ Computed Variable Names | http://sunsite.ualberta.ca/Documentation/Gnu/make-3.79/html_chapter/make_toc.html#TOC62 ]]''
----
!! Substituting Variable Value
1) Using $(var:a=b)
{{{
foo := a.o b.o c.o
bar := $(foo:.o=.c)

sets `bar' to `a.c b.c c.c'.  Note: Here $(foo) is a space separated word-list
}}}
2) Using the '%' symbol
{{{
foo := a.o b.o c.o
bar := $(foo:%.o=%.c)

sets `bar' to `a.c b.c c.c'.  Note: Here $(foo) is a space separated word-list
}}}
3) Same thing can be done using $(patsubst pattern,replacement,text)
{{{
$(var:suffix=replacement)
      is equivalent to 
$(patsubst %suffix,%replacement,$(var))
}}}
Note: Here '%' is equivalent to reg-exp type '*' so you can use something like
{{{
main-dir := /tmp
sub-dirs := tmp1 tmp2 tmp3
dirs := $(sub-dirs:%=$(main-dir)/%)               

# Given the syntax of $(var:<pattern>=<replacement>)
# where <pattern> is %
# <replacement> is $(var)/%  
# i.e. prepend tmp1 tmp2 tmp3 with /tmp

sets 'dirs' to  '/tmp/tmp1 /tmp/tmp2 /tmp/tmp3'
}}}
''[[ Functions for Transforming text | http://sunsite.ualberta.ca/Documentation/Gnu/make-3.79/html_chapter/make_8.html#SEC75 ]]''
''[[ Variable Substitution References | http://sunsite.ualberta.ca/Documentation/Gnu/make-3.79/html_chapter/make_6.html#SEC60 ]]''
----
!! Automatic variables
[[ Automatic variables quick intro | http://sunsite.ualberta.ca/Documentation/Gnu/make-3.79/html_chapter/make_15.html#SEC123 ]]
[[ Automatic variables chapter | http://sunsite.ualberta.ca/Documentation/Gnu/make-3.79/html_chapter/make_10.html#SEC101 ]]
{{{
$@ #The file name of the target. 
$<  #The name of the first prerequisite. 
$*  #The stem with which an implicit rule matches
$?  #space separated list of all the prerequisites that are newer than the target

$^  #space separated list of all prerequisites, omitting duplicate prerequisites
$+ #space separated list of all prerequisites, retaining duplicate prerequisites in original order

$% #The target member name, when the target is an archive member. 
}}}
----
!! Directory part or File-within-directory part of an automatic variable 
{{{
#Generic syntax
$(<auto-var>D)
$(<auto-var>F)

Example:
1) $(@D),  $(@F)
2) $(*D),    $(*F)
3) $(%D),  $(%F)
4) $(<D),   $(<F)
5) $(^D),    $(^F)
6) $(+D),   $(+F)
7) $(?D),   $(?F)    
}}}
----
[[ VPATH and vpath directive of gmake | http://www.cmcrossroads.com/article/basics-vpath-and-vpath?page=0%2C1 ]]
----
!! Reference
''[[ Quick Reference for gmake 3.79 | http://sunsite.ualberta.ca/Documentation/Gnu/make-3.79/html_chapter/make_15.html#SEC123 ]]''
''[[ Online GNU make 3.79 manual | http://sunsite.ualberta.ca/Documentation/Gnu/make-3.79/html_chapter/make_toc.html ]]''
''[[ Online Book - Managing Projects with GNU Make 3rd Edition | http://oreilly.com/catalog/make3/book/index.csp ]]''
''[[ PPT Understanding make with slides | http://owen.sj.ca.us/~rk/howto/slides/make ]]''
----
!! Parallel Building with make
''[[ Parallel building with make and pre-requisites at stackoverflow | http://stackoverflow.com/questions/2121620/parallel-building-with-gnumake-and-prerequisites ]]''
''[[ Order only pre-requisites of gnu-make | http://www.gnu.org/software/make/manual/make.html#Prerequisite-Types ]]''
----
[[ Overview of Scratch, Alice, Python and Pygame | http://young-programmers.blogspot.com/2009/07/overview-of-scratch-alice-python-and.html ]]
----
!Scratch
[[ Videos on Game Development with Scratch | http://young-programmers.blogspot.com/search/label/scratch ]]
[[ Scratch at MIT | http://scratch.mit.edu ]]
----
!Python Game Development
!!Video Tutorial
[[ PyGame subset for Jython/Android Platform | http://pygame.renpy.org ]]
[[ Video Game Tutorial in Python | http://www.youtube.com/watch?v=kLjT576ubgo ]]
[[ 21 Part Video Tutorial Series on Python Game Development | http://www.youtube.com/user/phyces#g/u ]]
[[ Game of Life using Jython - Video Game Podcast for children and above on Scratch, Python, Java | http://young-programmers.blogspot.com/2009/12/jythonswing-game-of-life-version-2.html ]]
----
!!Book List
Snake Wrangling For Kids Learning to Program with Python 3 (Linux, Windows, Mac-OS editions)
Beginning Game Development with Python and PyGame - From Novice to Professional
Game Programming with Python, Lua and Ruby
[[ Python Game Programming wiki at Wikipedia | http://en.wikibooks.org/wiki/Python_Programming/Game_Programming_in_Python ]]
[[ Inventing Your Own Computer Games with Python | http://inventwithpython.com ]]
[[ Moin wiki on Python Game Programming | http://wiki.python.org/moin/GameProgramming ]]
[[ PyGame Tutorials Wiki | http://pygame.org/wiki/tutorials ]]
[[ Python Game Libraries | http://wiki.python.org/moin/PythonGameLibraries ]]
----
!!Jython
[[ Videos on Jython Game Development | http://young-programmers.blogspot.com/search/label/Jython ]]
!!!Android
[[ The Pygame Subset for Android | http://www.renpy.org/pygame ]] is a port of a subset of Pygame functionality to the Android platform. The goal of the project is to allow the creation of Android-specific games, and to ease the porting of games from PC-like platforms to Android.
----
!!!Book List
Jython for Java Programmers
Mobile Python - Rapid Prototyping of Applications on the Mobile Platform
Next Generation Web Frameworks in Python
Python Programming with the Java Class Libraries - A Tutorial for Building Web and Enterprise Applications with Jython
The Definitive Guide to Jython - Python for the Java Platform
----
''[[ Gedit Plugins | http://live.gnome.org/Gedit/Plugins ]]''
!! Generating Programs
[[ Generative Programming by Krzysztof Czarneck | http://www.amazon.com/Generative-Programming-Methods-Tools-Applications/dp/0201309777 ]] talks about generating programs using programs.
[[ Basic intro to generative programming | http://msdn.microsoft.com/en-us/magazine/cc301675.aspx ]]
[[ Automatic Programming at wikipedia | http://en.wikipedia.org/wiki/Automatic_programming ]]
[[ Books on Generative Programming at stackoverflow | http://stackoverflow.com/questions/50418/can-you-recommend-books-about-generative-programming ]]
----
[[ Policy Based Design wiki at wikipedia | http://en.wikipedia.org/wiki/Policy-based_design ]]
[[ Mixin Classes wiki at wikipedia | http://en.wikipedia.org/wiki/Mixin ]]
[[ Template Metaprogramming wiki at wikipedia | http://en.wikipedia.org/wiki/Template_metaprogramming ]]
[[ Video - Learning from stackoverflow | http://www.youtube.com/watch?v=NWHfY_lvKIQ&feature=player_detailpage ]]
[[ Video - Good Stack Overflow Citizen by Jeff Atwood | https://www.youtube.com/watch?v=HRRWDf-xB2Y ]]
[[ Article - Eric S Raymond on 'How to ask questions the smart way' | http://www.catb.org/~esr/faqs/smart-questions.html ]]
[[ Article - How to Ask Questions (Simple English) at perlmonk | http://www.perlmonks.org/?node_id=788576 ]]
[[ Article - How NOT to ask a Question at perlmonk | http://www.perlmonks.org/?node=How%20%28not%29%20to%20ask%20a%20question ]]
[[ Article - How to search for code | http://www.google.de/codesearch ]]
[[ Article - Stackoverflow guidelines on how to ask questions on the forum | http://stackoverflow.com/questions/ask ]]
[[ Article - How to search in a smart way for previously answered questions on stackoverflow | http://stackoverflow.com/search ]]
[[ Blog - Finding answers to your questions | http://techtalkies.blogspot.com/2010/09/how-to-find-answer-to-some-your.html ]]
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>>
!! AVOID STALE copy
'' DO a 'Ctl+Shift+R' to avoid stale copies of SpotNotes ''





----
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>>
!! Setup Git For Windows
Step0:
#[[ Create a Repository in GitHub | http://help.github.com/create-a-repo ]]
----
Step1: Install Git for windows from this [[ Download list | http://code.google.com/p/msysgit/downloads/list ]] download Git-1.7.4-preview20110204.exe. Note: You need msysgit Only if you want to build Git on windows from the source code. 
#[[ Illustrated Guide to Git on Windows | http://nathanj.github.com/gitguide/tour.html ]]
#[[ Howto Install Git for Windows | https://git.wiki.kernel.org/index.php/MSysGit:InstallMSysGit ]]
----
Step2a: 
#[[ Download SmartGit for Windows | http://www.syntevo.com/?wicket:interface=:2:::: ]]
#Install SmartGit and point it to the Git .exe during setup
#Point it to the repository created in Step1 [[ GitHub's Picture Guide to setting up Git on Windows | http://help.github.com/win-set-up-git ]]
----
Step2b:
#[[ Download TortoiseGit | http://code.google.com/p/tortoisegit/downloads/list ]]
#[[TortoiseGit FAQ | http://code.google.com/p/tortoisegit/wiki/FAQ ]]
----
!! Setup Git For Linux
[[ GitHub's Picture Guide to setting up Git on Linux | http://help.github.com/linux-set-up-git ]]
----
!! Git Clients
[[ TortoiseGit for windows | http://code.google.com/p/tortoisegit ]]
[[ Git windows and go - intro to git on windows | http://kylecordes.com/2008/git-windows-go ]]
[[ Best Git client for windows | http://kylecordes.com/2010/git-gui-client-windows ]]
[[ SmartGit for windows and linux | http://www.syntevo.com/smartgit/index.html ]]
[[ git-idea for IntelliJ Java IDE | http://code.google.com/p/git-idea ]]
[[ Eclipse Git | http://www.eclipse.org/egit ]]
[[ Git Extensions | http://code.google.com/p/gitextensions ]]
----
[[ Eclipse wiki on all things Git | http://wiki.eclipse.org/Git ]]
[[ EGit User Guide | http://wiki.eclipse.org/EGit/User_Guide ]]
[[ Free version of IntelliJ IDE for Java Android Development | http://www.jetbrains.com/idea/download/index.html ]]
----
!! Git Hosting
[[ Free hosting features offered by GitHub | https://github.com/features/projects ]]
[[ GUI for git and hosting of projects | http://git-scm.com/tools ]]
[[ Help on git, GitHub and hosting issues | http://help.github.com ]]
[[ GitHosting wiki | https://git.wiki.kernel.org/index.php/GitHosting]]
----
!!Video
[[ GitCasts Video Tutorials | http://gitcasts.com ]]
[[ 1 hour Video on Git by O'Reilly | http://www.youtube.com/watch?v=OFkgSjRnay4 ]]
[[ Better Git Talk at google | http://www.youtube.com/watch?v=8dhZ9BXQgc4 ]]
[[ Google Talk on Git by Linus Torvalds  | http://www.youtube.com/watch?v=4XpnKHJAok8&feature=channel ]]
[[ Good Screencast on Git Usage | http://www.ralfebert.de/blog/tools/git_screencast ]]
[[ Comparison of Git and other version control systems by Python guys | http://www.python.org/dev/peps/pep-0374/ ]]
----
!!Tutorial
[[ Git Video Tutorial for General overview of Git | http://learn.github.com/p/intro.html ]]
[[ Git QuickStart wiki | https://git.wiki.kernel.org/index.php/QuickStart ]]
[[ DZone Git Reference Card | http://refcardz.dzone.com/refcardz/getting-started-git ]]
[[ Visual Git cheat-sheet | http://zrusin.blogspot.com/2007/09/git-cheat-sheet.html ]]
[[ Everyday Git with 20 commands | http://www.kernel.org/pub/software/scm/git/docs/everyday.html ]]
[[ Learn Git one commit at a time | http://gitready.com ]]
[[ 25 tips for Intermediate Git Users | http://andyjeffries.co.uk/articles/25-tips-for-intermediate-git-users ]]
----
!!FAQ
[[ Git Wiki | https://git.wiki.kernel.org/index.php/Main_Page ]]
[[ Git FAQ wiki | https://git.wiki.kernel.org/index.php/GitFaq ]]
[[ help.Git | http://help.github.com ]]
[[ Git Comparison wiki | https://git.wiki.kernel.org/index.php/GitComparison ]]
[[ Very good Git documentation from users | https://git.wiki.kernel.org/index.php/GitDocumentation ]]
----
!! EBooks
[[ Git community book | http://book.git-scm.com/index.html ]]
[[ PDF - Git community book | http://book.git-scm.com/book.pdf ]]
[[ Git User Manual | http://www.kernel.org/pub/software/scm/git/docs/user-manual.html ]]
[[ Pro Git Book free online | http://progit.org/book ]]
----
!!Reference
[[ Understanding Git Conceptually | http://www.eecs.harvard.edu/~cduan/technical/git ]]
[[ Understanding Git Bottom-up | http://www.newartisans.com/2008/04/git-from-the-bottom-up.html ]]
[[ PDF - Understanding Git Bottom-up | http://ftp.newartisans.com/pub/git.from.bottom.up.pdf ]]
[[ Git Workflows by Linus Torvalds | https://git.wiki.kernel.org/index.php/GitWorkflows ]]
----
!!See Also
[[ Git tutorials suggested on stackoverflow | http://stackoverflow.com/questions/183918/any-good-git-tutorials ]]
!Presentations
[[ Slides on Linkers and Loaders from slideshare | www.slideshare.net/.../linkers-and-loaders-presentation ]]
[[ Slides on Assemblers,  Linkers and Loaders | www.utdallas.edu/~hxh017200/cs3340/notes/A12_SystemSoftware.ppt ]]
[[ Slides on Linkers and Loaders | www.csie.ncu.edu.tw/~chia/Course/Assembly/loader.ppt ]]
[[ Slides on Linkers and Loaders by Shaun Ross | www.cs.montana.edu/~sross/cs550/presentation/linkerLoader.ppt ]]
----
!Do-And-Learn Tutorials
[[ C, C++, gas, linker, loader tutorial by Tenouk | http://www.tenouk.com/ModuleW.html ]]
[[ Tenouk tutorial on Stack construction and destruction for a function call | http://www.tenouk.com/Bufferoverflowc/Bufferoverflow1.html ]]
[[ Tenouk Tutorial on gcc, gdb and friends | http://www.tenouk.com/Module000.html ]]
[[ Tenouk Tutorial on ldd, readelf, od | http://www.tenouk.com/Module111.html ]]
----
!Tutorials on ELF
[[An unsung hero: The hardworking ELF, by Peter Seebach |  http://www-128.ibm.com/developerworks/power/library/pa-spec12/index.html ]]
[[ ELF: From The Programmer's Perspective | http://linux4u.jinr.ru/usoft/WWW/www_debian.org/Documentation/elf/elf.html ]]
[[The Executable and Linking Format (ELF), by Michael L. Haung | http://www.cs.ucdavis.edu/~haungs/paper/node10.html ]]
[[ Tutorial on ELF(3) and GELF(3), by Neelakanth Nadgir | http://developers.sun.com/solaris/articles/elf.html ]]
[[ ELF symbol versioning, by Ulrich Drepper | http://www.akkadia.org/drepper/symbol-versioning ELF symbol versioning ]]
[[ Library versioning under FreeBSD, by Daniel Eischen | http://people.freebsd.org/~deischen/symver/freebsd_versioning.txt ]]
----
!Implementation specific
[[ SYSV ABI specification | http://www.sco.com/developers/gabi/latest/contents.html ]]
[[ GNU Hash ELF Sections by Ali Bahrami | http://blogs.sun.com/ali/entry/gnu_hash_elf_sections ]]
[[ A description of `PT_GNU_RELRO` sections, by Ian Lance Taylor | http://www.airs.com/blog/archives/189 Linker relro ]]
----
!Source code
[[ Perl source code for Example Linker developed in chapters 3 and 4 of Linkers and Loaders | http://linker.iecc.com/code.html ]]
[[ Example programs, by Emmanuel Azencot |  http://freemanu1.free.fr/elf_examples/index.html ]]
[[ Elftoolchain - tools (nm, ar, as, ld, etc.) for the ELF object format | http://sourceforge.net/projects/elftoolchain ]]
----
!Reference
[[ Linkers and Loaders book website | http://linker.iecc.com ]]
[[ Free Drafts of the book Linkers and Loaders | http://www.iecc.com/linker ]]
[[ Online Linkers and Loaders at scribd | www.scribd.com/doc/14149945/Linkers-and-Loaders ]]
[[ Linkers and Libraries Guide by Sun Microsystems. | http://docs.sun.com/app/docs/doc/817-1984 ]]
[[ Assemblers, Linkers and Loaders pdf | www.cs.gmu.edu/~setia/cs365-S02/assembler.pdf ]]
!! About
Go open source language is like compiled C with a Python feel to it.
Created by Ken Thompson, Rob Pike. It's meant for writing massive servers
Used for writing goroutine() distributed across many concurrent threads (10,000+)
It's also distributed across different machines using the Doozer distributed process manager.
----
!! Video, PPT
''[[ PPT Presentation on 'Go' language June 2010 by Rob Pike | http://assets.en.oreilly.com/1/event/45/Go%20Presentation.pdf ]]''
''[[ Video - Go Promotional Video at youtube | http://www.youtube.com/watch?v=wwoWei-GAPo ]]''
''[[ PPT - Go features | http://assets.en.oreilly.com/1/event/45/Another%20Go%20at%20Language%20Design%20Presentation.pdf]]''
[[ Video - Go features by Rob Pike | http://sydney.edu.au/engineering/it/videos/seminar_pike ]]
----
!! Articles
[[ The go programming language | http://golang.org/ ]]
[[ C++, Java, Go performance benchmarking | http://www.theregister.co.uk/2011/07/01/go_v_cpluplus_redux/ ]]
[[ Google go | http://www.theregister.co.uk/2011/05/05/google_go/ ]]
[[ Go language in google production | http://www.theregister.co.uk/2010/05/20/go_in_production_at_google/ ]]
----
!! Learning
[[ golang docs | http://golang.org/doc/docs.html ]]
[[ Go Tutorial for C++ programmers | http://golang.org/doc/go_for_cpp_programmers.html ]]
[[ Go language Tutorial | http://golang.org/doc/go_tutorial.html ]]
[[ Effective Go | http://golang.org/doc/effective_go.html ]]
[[ golang FAQ | http://golang.org/doc/go_faq.html ]]
''[[ PPT golang web server programming tutorial | http://wh3rd.net/practical-go/ ]]''
[[ PPT - golang Google TechTalk by Rob Pike | http://golang.org/doc/talks/go_talk-20091030.pdf ]]
----
!! Doozer
[[ Article Introducing Doozer distributed process manager | http://xph.us/2011/04/13/introducing-doozer.html ]]
[[ Go at Heroku Doozer | http://www.xydo.com/toolbar/18754928-go_at_heroku_doozer ]]
[[ Doozer source at github | https://github.com/ha/doozerd ]]
[[ Blog on sidewiki features | http://interestingwebs.blogspot.com/2009/12/how-to-use-google-sidewiki.html ]]
[[ Using HTML in Sidewiki | http://www.google.com/support/toolbar/bin/answer.py?hl=en&answer=163222 ]]
[[ Using Sidewiki without installing GoogleToolbar | http://www.google.com/support/toolbar/bin/answer.py?hl=en&answer=164493 ]]
[[ How to block sidewiki on your webpage | http://www.sidewikispam.com/#1260127840460 ]]
''[[ Http : The Definitive Guide by David Gourley and Brian Totty | http://www.amazon.com/HTTP-Definitive-Guide-David-Gourley/dp/1565925092/ref=sr_1_1?ie=UTF8&s=books&qid=1307958794&sr=1-1 ]]''
''[[ HTTP wiki at wikipedia | http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol ]]''
[[ List of HTTP Status/Error Codes at wikipedia | http://en.wikipedia.org/wiki/List_of_HTTP_status_codes ]]
[[ List of HTTP Headers | http://en.wikipedia.org/wiki/List_of_HTTP_headers ]]
[[ List of HTTP Header Fields at wikipedia | http://en.wikipedia.org/wiki/List_of_HTTP_header_fields ]]
----
!! Content-Length
[[ HTTP Content Length in RFC2616 | http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html ]]
[[ Message Length (Restrictions on Content Length) in RFC2616 | http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.4 ]]
[[ Extra bytes at end of download (search for Content-Disposition) | http://stackoverflow.com/questions/3440115/http-content-length-incorrect-size-served ]]
----
!! Transfer Encoding
[[ Transfer Encoding in RFC2616 | http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.41 ]]
[[ Transfer Encoding Types in RFC2616 | http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.6 ]]
[[ Chunked Transfer Encoding at wikipedia | http://en.wikipedia.org/wiki/Chunked_transfer_encoding ]]
[[ Chunked Transfer in RFC 2616 | http://tools.ietf.org/html/rfc2616#section-3.6.1 ]]
----
!!Content-Type
[[ Content-Type or MIME Type | http://en.wikipedia.org/wiki/Mime_type ]]
[[ RFC 2046 MIME Types | http://tools.ietf.org/html/rfc2046 ]]
----
!! Content-Disposition
[[ RFC 2183 on Security issues with using Content-Disposition HTTP Header Field | http://www.ietf.org/rfc/rfc2183.txt ]]
----
!! Persistent Session
[[ HTTP Persistent Connection at wikipedia | http://en.wikipedia.org/wiki/HTTP_persistent_connection ]]
[[ HTTP Persistent Connections in RFC 2616 | http://www.w3.org/Protocols/rfc2616/rfc2616-sec8.html ]]
[[ HTTP Pipelining of Requests at wikipedia | http://en.wikipedia.org/wiki/HTTP_pipelining ]]
[[ HTTP Cookie at wikipedia | http://en.wikipedia.org/wiki/HTTP_cookie ]]
[[ Cross Site Scripting at wikipedia | http://en.wikipedia.org/wiki/Cross-site_scripting ]]
[[ Keep Alive Notes by Roy Felding | http://ftp.ics.uci.edu/pub/ietf/http/hypermail/1995q4/0063.html ]]
[[ Configuring Firefox Keep Alive for Persistent Connnections | http://kb.mozillazine.org/Network.http.keep-alive.timeout ]]
[[ Configuration Mania for Firefox | http://lifehacker.com/267618/tweak-aboutconfig-options-with-configuration-mania ]]
[[ 1998 article on Persistence support in different browsers | http://pages.cs.wisc.edu/~cao/papers/persistent-connection.html ]]
----
!! Proxy Servers
[[ Proxy Server at wikipedia | http://en.wikipedia.org/wiki/Proxy_server ]]
[[ Web Cache at wikipedia | http://en.wikipedia.org/wiki/Web_cache ]]
[[ Cache Validation with Etag at wikipedia | http://en.wikipedia.org/wiki/HTTP_ETag ]]
[[ Gateway at wikipedia | http://en.wikipedia.org/wiki/Gateway_(telecommunications) ]]
[[ Origin Server or Upstream Server at wikipedia | http://en.wikipedia.org/wiki/Upstream_server ]]
[[ Firewall at wikipedia | http://en.wikipedia.org/wiki/Firewall_(computing) ]]
----
!! HTTP State Transitions 
''[[ HTTP Sequence diagram (pdf) at eventhelix-realmantra | http://www.eventhelix.com/RealtimeMantra/Networking/#HTTP_Sequence_Diagrams ]]''
''[[ HTTP Made Easy by JMarshall | http://www.jmarshall.com/easy/http ]]''
''[[ TCP/IP and application protocols sequence diagrams (pdf) at eventhelix | http://www.eventhelix.com/RealtimeMantra/Networking ]]''
----
!! Capture content on the wire using ngrep
{{{
$> ngrep -Wbyline -dlo port 3000
$> ngrep -Wbyline google port 80
}}}
[[ Wrong content-length | http://www.mail-archive.com/catalyst@lists.rawmode.org/msg01465.html ]]
[[ ngrep basic usage | http://ngrep.sourceforge.net/usage.html ]]
[[ ngrep usage article  on linux.com | http://www.linux.com/archive/feed/46268 ]]
----

!! Debugging
nc or netcat
socat
ngrep
fiddler
wireshark
tcpdump
{{{
tcpflow -cvs | httpflow.py
}}}
TCPWatch (Python)
Tamperdata
[[ latest version of http-twiddle | http://github.com/hassy/http-twiddle ]]
----
!! Telnet
{{{
[gmallapu@guru-linuxdev ~]$ telnet www.google.com 80
Trying 74.125.127.105...
Connected to www.google.com.
Escape character is '^]'.
GET / HTTP/1.1
host: www.google.com

HTTP/1.1 200 OK
Date: Fri, 15 Apr 2011 13:00:16 GMT
Expires: -1
Cache-Control: private, max-age=0
Content-Type: text/html; charset=ISO-8859-1
Set-Cookie: PREF=ID=4b510bfa6bac31fa:FF=0:TM=1302872416:LM=1302872416:S=PrxMK3mgFt4eca4P; expires=Sun, 14-Apr-2013 13:00:16 GMT; path=/; domain=.google.com
Set-Cookie: NID=46=WXdAeNXkS0rRGrYBdgxDZJj7ZLKw6mVVFgbr9PwyVhSUK2UrV6jfLthlXQeT-oF2rGEgbhhbH6NiiLrOtqlu_aHc_Fl5L0of_ln50gIFSxV5Q09ieCE1eDxu6OnyH09k; expires=Sat, 15-Oct-2011 13:00:16 GMT; path=/; domain=.google.com; HttpOnly
Server: gws
X-XSS-Protection: 1; mode=block
Transfer-Encoding: chunked

1000
[...]
}}}
[[ Simulating web conversation POST with PHP and curl | http://stackoverflow.com/questions/4925824/simulating-a-post-with-php-curl ]]
[[ Http Header debugging with telnet and other tools | http://www.oddmuse.org/cgi-bin/oddmuse/HTTP_Header_Debugging ]]
[[ Best Viewed with telnet to port 80 | http://www.dgate.org/~brg/bvtelnet80 ]]
[[ TroubleShooting HTTP using Telnet | http://www.esqsoft.com/examples/troubleshooting-http-using-telnet.htm ]]
----
!Reference
!!RFC
''[[HTTP RFC 1945 (informational) | http://tools.ietf.org/html/rfc1945 ]]''
[[ PDF of HTTP RFC 1945 (informational) | http://tools.ietf.org/pdf/rfc1945 ]]
[[ HTTP RFC 2616 (standard) | http://www.w3.org/Protocols/rfc2616/rfc2616.html ]]
[[ PDF of HTTP RFC 2616 (standard) | http://tools.ietf.org/html/rfc2616 ]]
Haskell is a functional programming language
[[ Haskell wiki | http://www.haskell.org/haskellwiki/Haskell ]]
[[ Asynchronous querying of DNS using UDNS | www.corpit.ru/mjt/udns.html ]]
[[ Jeff Darcy's notes on high-performance server design | http://pl.atyp.us/content/tech/servers.html ]]
howto create scalable websites [[ Book on Building Scalable website by Cal Henderson | http://www.amazon.com/gp/product/0596102356 ]]
[[ 2001 Paper on Asynchronous communication to boost network performance on a Server | http://www.kegel.com/c10k.html ]]
----
[[ Howto  use Listening socket using epoll at stackoverflow | http://stackoverflow.com/questions/6401642/dealing-with-listening-socket-by-epoll ]]
''[[ Howto use epoll with complete example in C | https://banu.com/blog/2/how-to-use-epoll-a-complete-example-in-c/ ]]''
----
[[ SYN Flooding at wikipedia | http://en.wikipedia.org/wiki/SYN_flood ]]
[[ SYN Flooding attacks and counter-measures | http://tools.ietf.org/html/rfc4987 ]]
----
!
{{{
$> lsof -P -n -l +M -i4 -i6
$> netstat -tulpn
$> /etc/services file
}}}
See Also: [[List out Listening Services/Programs and Ports with lsof and netstat commands|http://www.cyberciti.biz/faq/find-out-which-service-listening-specific-port]]
[[ How-to undelete a file in ext3 | http://www.xs4all.nl/~carlo17/howto/undelete_ext3.html ]]
[[ Using 'foremost' file recovery tool on ext3 in linux | http://www.brighthub.com/computing/linux/articles/34156.aspx ]]
[[ How-to undelete any open, deleted file on linux | http://www.barricane.com/undelete-open-file-from-inode ]]
[[ Using 'unmount' 'lsdel' and 'dumpfs' on ext2 to recover files in linux | http://www.ehow.com/how_2064953_recover-deleted-files-linux.html ]]
[[Wikipedia on ICAP Protocol | http://en.wikipedia.org/wiki/Internet_Content_Adaptation_Protocol ]]
[[Very Informational article on ICAP RFC | http://tools.ietf.org/html/rfc3507 ]]

To handle high volume traffic servers need to be 
#Loosely coupled co-operative modular services (kinda like plug-n-play)
#Utilize caching to reduce volume of traffic
#Services must be Replicated to allow for fallback
#Services must be Load Balanced i.e. distributed across the network to avoid bottlenecks.
# Secure in terms of reducing unwanted, unauthorized content and increasing of customization per access
----
ICAP helps to modify HTTP requests/responses including the header/body(html-content). 
It allows scanning/rewriting/replacement of HTTP Request/Response and html headers, cookies, body/content. 
For purposes like virus scanning, url filtering, ad-insertion, caching  etc.
Reduces load by caching/blocking or distributes load over the different server machines or network.
----
[[ Safe Squid example usage of ICAP options for scanning content (see below) | http://www.safesquid.com/html/portal.php?page=38 ]]
//Profiles Section for sample profile virus_scan//
{{{
$> telnet icap-server:icap-port
icap://icap-server-ip:optional-port/OPTION?profile=virus_scan&enabled=true&comment=blah-blah&file=ext1|ext2|...extN&timematchmode=absolutetime
^D
}}}
{{{
Option 	   Value
Enabled 	     true
Comment    The following file types will be scanned for viruses
File 	            (386|ADE|ADP|ADT|APP|ASP|BAS|BAT|BIN|BTM|CBT|CHM|CLA|CLASS|CMD|COM|CPL|CRT
|CSC|CSS|DLL|DOC|DOT|DRV|EML|EMAIL|EXE|FON|HLP|HTA|HTM|HTML|INF|INI|INS|ISP
|JS|JSE|LIB|LNK|MDB|MDE|MHT|MHTM|MHTML|MP3|MSO|MSC|MSI|MSP|MST|OBJ|OCX|
OV\?|PCD|PGM|PIF|PPT|PRC|REG|RTF|SCR|SCT|SHB|SHS|SMM|SYS|URL|VB|VBE|VBS|VXD
|WSC|WSF|ZIP|GZ|RAR|WSH|XL\?)
Time match mode 	absolutetime 
}}}
----
!Blue Coat
[[ Blue Coat Virus Scanning Using ICAP (pdf) | http://www.bluecoat.com/doc/517 ]]
----
!Squid-cache (FOSS http caching proxy )
[[ Squid-cache website | http://www.squid-cache.org ]]
[[ Squid Cache Wiki on ICAP | http://wiki.squid-cache.org/FrontPage ]]
[[ ContentAdaptation: How to analysis, capture, blocking, replacing, or modifying the messages being proxied | http://wiki.squid-cache.org/SquidFaq/ContentAdaptation]] 
[[ CacheDigests: ICAP on steroids | http://wiki.squid-cache.org/SquidFaq/CacheDigests ]]

!See Also
[[ TinyProxy FOSS | http://tinyproxy.sourceforge.net ]]
!IISC Activities
//The innovative Young Fellowship Program in Science for young students at the +2 level and Young Engineering Fellowship Program for third year BE Students have received overwhelming response.
        The Centre for Scientific and Industries Consultancy, the recently founded Society for Innovation and Development, Sir Dorabji Tata Centre for Tropical Diseases and Advanced Bio Energy Technology Society provide an effective interface with industry.//
!Extension Lectures
      //Many faculty members of the Indian Institute of Science have volunteered to deliver lectures in institutions of higher learning at the technical level, in Engineering and science colleges at semi—technical level and in schools, public/cultural organizations, Doordarshan and All India Radio at the popular level.
       These Lectures on Science, Engineering and Technology subject are being arranged not only in Bangalore, but also in centers within a radius of 500 KM around Bangalore mostly in the State of Karnataka. Many of these lectures are supported by demonstration, slides or models. The audience will often have a chance to personally interact with the speakers after the talk to learn more in their area of interest.//
[[SC Centre for Continuing Education Extension Lecture Programme|http://cce.iisc.ernet.in/exlp.html]]
[[Extension Lecture Programme Details (PDF) |http://cce.iisc.ernet.in/Exlp201010.pdf]]

!Centre for Continuing Education
Indian Institute of Science
Bangalore 560 012
E-mail: chairman@cce.iisc.ernet.in
!Qualifications
B.E/B.Tech./MCA or Equivalent. Need Certificate or Provisional Certificate (not mark-sheet)
See the pdf files for each course as required for exact details as in some places B.Sc. is mentioned.
!Courses
!!Interesting courses held in 2010 (Jan-2011 to May-2011)
''Strategic Management :''
//How to arrive at strategic decisions in business for managers and entrepreneurs.//
''Project Management:''
//Howto go about managing your project//
''Intelligent Agents and Applications:''
//Applying AI/Expert System concepts in your programs//
''Communication Protocols Design & Testing:''
//Howto design a Network System/Protocol//
!Important Dates
{{{
Issue of application commences (@ Rs. 150/-) 	15-11-2010 - MONDAY
Last date for submission of application	03-12-2010 -FRIDAY
Intimation for aptitude/objective test*	08-12-2010 - WEDNESDAY
Aptitude / Objective test *	19-12-2010 - SUNDAY
Intimation of selection 	22-12-2010 - WEDNESDAY
Receiving fees 	From 27-12-2010 To 12-01-2011 - MONDAY To WEDNESDAY   
Classes Commence 	20-01-2011 - THURSDAY
Final Exams Commence 	23-05-2011 To 28-05-2011 - MONDAY To SATURDAY
}}}
* (only if required) - Please check with PROFICIENCE Office on the specified date.
Reference:
[[Proficience Courses for Jan-May2011|http://cce.iisc.ernet.in/Proficience/coursedetailsJM2009.php]]
[[Full Course Details PDF|http://cce.iisc.ernet.in/Proficience/full%20book.pdf]]
[[IISC-CEC Enquiry WebPage|http://cce.iisc.ernet.in/enquiry.html]]
! Javascript
!!Video Tutorials
''[[ Video - YUI Theatre | http://yuilibrary.com/theater ]]''
[[ Video - javascript videos at Ontwik | http://ontwik.com/category/javascript ]]
''[[ Coding Pitfalls and Conventions of Javascript | http://www.mediawiki.org/wiki/Manual:Coding_conventions/JavaScript ]]''
[[ UPE Workshop #1: JavaScript 101 - 1hr Video from Google | http://www.youtube.com/watch?v=N4shxf9qi_I ]]
[[ JavaScript - The Good Parts - 1hr Video from Google | http://www.youtube.com/watch?v=hQVTIJBZook ]]
[[ Upcoming changes to the Javascript Language | http://www.youtube.com/watch?v=-yDS1eGfuWQ&feature=relmfu ]]
[[ Best Practises in JavaScript Library Design from google | http://www.youtube.com/watch?v=0LKDImgRfrg&feature=player_detailpage ]]
[[ Introduction to JavaScript and Browser DOM - 1hr Video from Google | http://www.youtube.com/watch?v=ljNi8nS5TtQ ]]
[[ TechTalkies Videos on Javascript | http://www.youtube.com/user/TechTalkies?blend=8&ob=5#p/u ]]
[[ 1hr Video Tutorial on Javascript (1/3) from IIT Kharagpur | http://www.youtube.com/watch?v=uUhOEj4z8Fo ]]
----
!! Beginner
''[[ Javascript 101 | http://dailyjs.com/js101.html ]]''
''[[ Javascript language (see the articles with JS101 in the title) | http://dailyjs.com/tags.html#language ]]''
[[ Help I don't know Javascript CSS HTML | http://mootools.net/blog/2007/06/05/help-i-dont-know-javascript ]]
[[ Learning Adv. Javascript | http://dailyjs.com/2010/01/08/learning-javascript ]]
!!!Presentations
[[ Doug Crockford - JavaScript : The Good Parts Presentation | http://www.crockford.com/codecamp/goodparts.ppt ]]
[[ Blog on JavaScript : The Good Parts | http://googlecode.blogspot.com/2009/03/doug-crockford-javascript-good-parts.html ]]
----
!! Intermediate
''[[ Let's make a Javascript Framework at DailyJS | http://dailyjs.com/tags.html#lmaf ]]''
''[[ Free Online Book 'Learning Javascript Design Patterns' by Addy Osmani | http://addyosmani.com/resources/essentialjsdesignpatterns/book/ ]]''
----
!! Advanced
!! Javascript Closures
[[ How do javascript closures work at stackoverflow | http://stackoverflow.com/questions/111102/how-do-javascript-closures-work ]]
''[[ Javascript closures for Dummies with examples and gotchas | http://web.archive.org/web/20080209105120/http://blog.morrisjohns.com/javascript_closures_for_dummies ]]''
''[[ Understanding javascript closures | http://javascriptweblog.wordpress.com/2010/10/25/understanding-javascript-closures ]]''
''[[ Leak Free Javascript closures | http://web.archive.org/web/20070510000404/http://laurens.vd.oever.nl/weblog/items2005/closures ]]''
----
!! Online Test Javascript code
Test js code on different frameworks like jQuery/YUI etc (just use different browser)
''[[ JSBin | http://jsbin.com ]]''
''[[ JSFiddler | http://jsfiddle.net ]]''
[[ CodePen | http://codepen.io/pen ]]
[[ Vimfiddler - like jsfiddler but on local computer | https://github.com/codeape2/vimfiddler ]]
''[[ Tools to test javascript output online | http://stackoverflow.com/questions/3773426/jsfiddle-clones ]]''
[[ Dynamic JavaScript Deobfuscator Addon for Firefox | https://addons.mozilla.org/en-US/firefox/addon/javascript-deobfuscator ]]
----
!! Books
[[ Javascript - The Good Parts by Doug Crockford | http://www.amazon.com/JavaScript-Good-Parts-Douglas-Crockford/dp/0596517742/ref=pd_sim_b_13 ]]
''[[ Javascript : The Definitive Guide by David Flanagan |http://my.safaribooksonline.com/book/programming/javascript/9781449393854 ]]''
[[ Javascript Cookbook by Shelley Powers | http://www.amazon.com/JavaScript-Cookbook-Shelley-Powers/dp/0596806132/ref=pd_sim_b_22 ]]
[[ Javascript Patterns book by Stoyan Stefanov | http://www.amazon.com/JavaScript-Patterns-Stoyan-Stefanov/dp/0596806752/ref=pd_sim_b_5 ]]
----
!!Reference
[[ JavaScript/ECMAScript Specs  | http://www.ecma-international.org/publications/standards/Ecma-262.htm ]]
''[[ Javascript : The Definitive Guide by David Flanagan |http://my.safaribooksonline.com/book/programming/javascript/9781449393854 ]]''
!! My buying parameters
!! Fixed costs
{{{
Price
Power consumption
Warranty
}}}
!!! Features variable costs
{{{
Wide viewing angle
resolution
refresh rate
dot-pitch
contrast-ratio
brightness candelas
Pixel Response Rate (PRR)
DVI
tilting monitor
}}}
!!Chrome
{{{
Touch panels
Audio/USB ports and built-in speakers
}}}
Note:  Samsung is market leader on OLED and AMOLED. Sony has left the OLED and going to use Crystal LED.

[[ TopTenReviews - 2012 Comparison | http://computers.toptenreviews.com/monitors/ ]]
''[[ Review of LED Technology  - TN Film, MVA, PVA and IPS Which one's for you at pureoverclock.com | http://www.pureoverclock.com/review.php?id=641&page=1 ]]''
''[[ OLED: organic LED | http://www.pcmonitors.org/articles/oled-monitors ]]''
--
Older
[[ PCQuest LED Monitor features Oct 2010 | http://pcquest.ciol.com/content/search/showarticle.asp?artid=123388 ]]
[[ PCQuest LED Monitor comparions Oct 2010 | http://pcquest.ciol.com/content/search/showarticle.asp?artid=123387 ]]
----
!! LED Monitor parameters
{{{
+ Resolution: 1024x768 min. 1920x1080
+ Refresh Rate: 60 Hz min.
+ Viewing angle : wide viewing angle >160 degrees (horizontal). 160 / 160 (TN Film), 176 / 176 (MVA and PVA matrices) or 178/178 (IPS). GO FOR IPS technology
+ colour gamut: percentage of NTSC color range. 
   ccfl and analog sRGB offer 72-92%.
  
+ Wide Screen: Gives bigger screen but dot pitch stays same as smaller diagonal. Better for video and not for browsing.
+ Tilting monitor (by 90 degrees) for portrait/landscape viewing are better for some documents.
+ Dot pitch: The more the dotpitch the better.
+ Both DVI + Analog ports: Conversion from digital to analog and back reduces signal quality.
+ Brightness: More brightness means better image quality.
   For regular use, value of 250 candelas per meter square is enough. 
+ Contrast Ratio: 10000:1 contrast ratio (min)
+ Pixel Response Rate: Time (milliseconds) to change pixel color reduces Ghosting effect.
 8-16ms for browsing, 2-5ms for video/gaming
+ Price
+ Warranty
+ Power consumption during max. brightness and standby. (10 min to 20watts avg 50 watts max)
+ Touch controls instead of buttons and locking the settings
+ Audio speakers OR headphone Jack in monitor
+ Extended USB ports from PC back to Monitor front.
}}}
----
Note: On average LED/LCD use 40% less power than CCFL-LCDS
Top 3 reviewed:
{{{
Dell UltraSharp U2311H (300$ = 15,000 INR)
ASUS ML239H ()
BENQ EW2420 ()
}}}
----
!!Types of LED/LCD monitors
a) ''[[ OLED: organic LED at wikipedia | http://en.wikipedia.org/wiki/Organic_light-emitting_diode ]]'' 
{{{
+ 1 per pixel instead of backlight for sections of screen
+ Doesn't use backlight at all so excellent for true black regions
- blue polymer fades faster than red, green (?? any solution to this yet??)
- polymer based OLED's degenerate with usage (5 years)
- exposure to UV burns out the polymers (needs anti-UV coatings)
- not so good in normal light conditions (needs anti-reflective coatings)
- power consumption is 40% less for display with lots of black (video??)
- white document with black text consumes as much as 3x power (browsing).
}}}
b) RGB-LED (full-array of LEDs allowing sections of true black)
{{{
+ allows sections of true black per screen (as against EdgeLED)
+ higher dynamic contrast ratios
- ?? bulkier than EdgeLED ??
}}}
c) Edge-LED/WLED (strip of white LEDs at edge of screen)
{{{
- one bulb per screen, greyish blacks
+ allows extremely thin screens
}}}
d) CCFL-LCD (Cold Cathode Fluorescent Lamps):
{{{
- old technology
- array of CFL lamps which flood the entire display leading to leakage through LCD gell screen at front.
- ?? use mercury pollutant in the lamps??
}}}
----
''[[ LED vs LCD introduction | http://indiatechonline.com/led-lcd-monitor-24.php ]]//
[[ Determine LCD monitor model number | http://www.laptopscreen.com/English/section/FAQ/1245191276/Determine+your+LCD+screen+model+number/ ]]
!!Debugging LDAP
{{{
#Start/Stop the LDAP service (required by slapadd but not by ldapadd)
$> /etc/init.d/ldap stop
$> /etc/init.d/ldap start

# Displays the debug-levels available (-d -1 is for Trace level)
$> slapd -d ?
$> vi /etc/openldap/slapd.conf 
loglevel    -1           #set highest loglevel

#Need to stop slapd daemon to run slapadd
$> slapadd -v -d -1 -l <file.ldif>

#Directly access library calls from shell. No need to stop slapd daemon
$> ldapadd -v -d -1                                     
$> ldapmodify -v -d -1
}}}
//-v enable verbose mode. 
-c enable continue (ignore errors) mode. 
-u enable dry-run (don't write to backend) mode. 
-d level enable debugging messages as defined by the specified level (-1 is all Trace level debug)
-l  use ldif file as input//
[[ slapadd vs ldapadd | http://www.openldap.org/lists/openldap-software/200301/msg00275.html ]]
[[ ldap_modify_s man page | http://linux.die.net/man/3/ldap_modify_s ]]
[[ ldap_search man page | http://www.openldap.org/software/man.cgi?query=ldapsearch&apropos=0&sektion=0&manpath=OpenLDAP+2.0-Release&format=html ]]
----
[[ Common Causes of LDAP Errors | http://www.linuxtopia.org/online_books//network_administration_guides/ldap_administration/appendix-common-errors_Common_causes_of_LDAP_errors.html ]]
[[ OpenLDAP debug logging post | http://www.openldap.org/faq/data/cache/358.html ]]
[[ slapadd man page online | http://linux.die.net/man/8/slapadd ]]
[[ slapd command line options including debug level | http://www.openldap.org/doc/admin24/runningslapd.html#Command-Line%20Options ]]
[[ Slapd configuration file explained | http://www.openldap.org/doc/admin24/slapdconfig.html#BDB%20and%20HDB%20Database%20Directives ]]
[[ Slapd database creation tools | http://www.openldap.org/doc/admin24/dbtools.html ]]
[[ ASN.1, BER, DER Encodings used in LDAP | ftp://ftp.rsasecurity.com/pub/pkcs/ascii/layman.asc ]]
''[[ LDAP Distinguished Names | http://www.selfadsi.org/ldap-path.htm ]]''
----
! Reference
[[ LDAP RFC 4510 | http://tools.ietf.org/html/rfc4510 ]]
[[ LDAP at wikipedia | http://en.wikipedia.org/wiki/LDAP ]]
----
[[ OpenLDAP Administrators Guide v2.4 | http://www.openldap.org/doc/admin24 ]]
[[ OpenLDAP Quick Start Guide  | http://www.openldap.org/doc/admin24/quickstart.html ]]
[[ OpenLDAP Configuring slapd | http://www.openldap.org/doc/admin24/slapdconf2.html ]]
[[ The slapd configuration file | http://www.openldap.org/doc/admin24/slapdconfig.html ]]
[[ OpenLDAP Database Creation and Maintainance | http://www.openldap.org/doc/admin24/dbtools.html ]]
----
[[ LDAP for Rocket Scientists online book | http://www.zytrax.com/books/ldap ]]
[[ LDAP Administration Guide online book | http://www.linuxtopia.org/online_books//network_administration_guides/ldap_administration/index.html ]]
[[ YoLinux Tutorial on OpenLDAP deployment | http://www.yolinux.com/TUTORIALS/LinuxTutorialLDAP.html ]]
[[ OpenLDAP Faq-o-matic | http://www.openldap.org/faq/data/cache/1.html ]]
[[OpenLDAP Project|http://www.openldap.org]]
[[ Step-by-step wiki on - Moving to LDAP | https://wiki.acm.jhu.edu/Moving_to_LDAP ]]
----
!!LDAP extension control settings
[[ LDAP3 extension controls with ldap_set_option function and session options  | http://msdn.microsoft.com/en-us/library/aa367025%28v=vs.85%29.aspx ]]
----
!What is LDAP
#A Directory (DIT) stores nested info like a file-system/domain-name tree/XML document. It is general purpose like file-systems and can store any kind of info (outlook contacts/security roles). 
#Data can be sourced from multiple back-end stores including databases like berkeley LDBM.
#Optimised for reading. Like Filesystems sub-trees can be distributed and mounted onto the "root" directory.
# OpenLDAP is implemented as a 2 daemon solution - slapd & slurpd
#slapd services client requests - get/set local operations
##slapd allows search filters (similar to SQL) with logical, comparison, boolean operators on directory, group, entity, attribute
#slurpd provides change-log replication across distributed servers - global sync operations 
##slurpd uses LDIF (LDAP data interchange format) i.e. list of <name,value+> for replicating info across LDAP servers
#Naming of entities and groups using Distinguish Name (DN). 
##DN is similar to absolute file path seen in file-systems AND
##Relative Distinguish Name (RDN) is similar to relative file path seen in file-systems
Example:
{{{
(Country=US)->(Company=WidgetCo)->(Division=Texas)->(RegionalOffice=Austin)->(Manager={ uid=johndoe, cn='John Doe', sn='Doe', ...} )
dc->dc->ou->ou1->ou1.1->item1 {UID,att1....attN}
DN => uid=Manager, ou=RegionalOffice, ou=Division, dc=Company, dc=Country
RDN => uid=Manager, ou=RegionalOffice
}}}
----
!Pseudo grammar for DIT: 
{{{
directory : group+
group : group+ | item+
item : UID attribute+
attribute : name value+
name : [0-9][A-Za-z]+ //string
value : [0-9][A-Za-z]+ //string
UID : [0-9][A-Za-z]+ //unique id
}}}
//Note: See LDAP ABNF grammar for more details:// [[Appendix A RFC 4523 LDAP Schema D|http://www.faqs.org/rfcs/rfc4523.html]]
----
!See Also:
''[[Brad Marshall's Introduction to LDAP | http://quark.humbug.org.au/publications/ldap/introldap.html]]''
!!LDAP
''[[ WHYTO Guide to OpenLDAP for rocket scientists | http://www.zytrax.com/books/ldap ]]''
''Newbie Short Intro:''[[BradMarshall: Introduction to LDAP | http://quark.humbug.org.au/publications/ldap/introldap.html]]
''Excellent Slides on LDAP '': [[BradMarshall: LDAP Tutorial (PDF) | http://quark.humbug.org.au/publications/ldap/ldap_tut_v2.pdf]]
''Theory In Practise:''[[Centralized Logins Using LDAP and RADIUS | http://www.linuxhomenetworking.com/wiki/index.php/Quick_HOWTO_:_Ch31_:_Centralized_Logins_Using_LDAP_and_RADIUS]]
[[BradMarshall: LDAP Theory and Management (PDF) | http://quark.humbug.org.au/publications/ldap/ldap-theory-sageau-2006.pdf]] 
Slapd/Apache: [[BradMarshall: LDAP Servers and Applications (PDF) | http://quark.humbug.org.au/publications/ldap/ldap-apps-sageau-2006.pdf]]
----
Ignore all sections with UUCP, IPX, SLIP, PLIP, PPP for now
!Chapter 1
*1.2 TCP/IP Networks 
**Basics of what is tcp/ip and how it works logically
*1.5 Maintaining Your System
**Basics on what support a sys admin should provide after setting up the system
*** Check system/service log files
*** Automate mailing of issues using scripts for services and cron.
*** Setup feedback mechanism in terms of root, postmaster, hostmaster (network/dns), newsmaster email-ids.
**1.5.1 System Security
***Basics of security measures to take to ensure system security
**** COPS program checks file permissions are safe
**** shadow password suite ensures more secure passwords
**** setup all services with need-to-know powers (setuid/root and restrict access to particular directories)
**** tcpd allows to restrict some services to some hosts only.
**** use ssh suite instead of rlogin suite
**** check system logs for signs of intrusion. tripwire automates this and prevents covering of tracks by intruder.
!Chapter 2
TODO
!! LXR - General purpose code browsing software
[[ lxr project on sourceforge | http://sourceforge.net/projects/lxr/ ]]
[[ lxr project website | http://lxr.sourceforge.net ]]
----
!! Installation 
[[ Public LXR for Ruby at stackoverflow | http://stackoverflow.com/questions/5194891/lxr-for-ruby-interpreter ]]
[[ Installation Steps at lxr.sourceforge.net | http://lxr.sourceforge.net/install.shtml ]]
[[ How to Setup LXR blog | http://mohammadthalif.wordpress.com/2010/07/24/how-to-setup-lxr-%E2%80%93-step-by-step-guide-3 ]]
[[ old discussion on LXR setup | http://www.linuxquestions.org/questions/linux-software-2/lxr-linux-cross-referencer-alternative-for-centos-653425/ ]]
----
''[[ WordPress Hosting solutions | http://wordpress.org/hosting ]]
[[ My Mirror Blog on LXR | http://exploring-stl.blogspot.com/2011/05/lxr-source-code-referencing-using.html ]]
----
<html>
<iframe src="http://techtalkies.blogspot.com/2010/10/learning-python.html" width="100%" height="100%" frameborder="1" vspace="0" hspace="0" marginwidth="0" marginheight="0" scrolling="yes">
</iframe>
</html>
''[[ Learning Python - My Collection of Resources and Links  | http://techtalkies.blogspot.com/2010/10/learning-python.html ]]''
!! Learning Resources Reviews
[[ Definitive list for Good Books on C++ at stackoverflow | http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list ]]
[[ Definitive list for Good books on C at stackoverflow | http://stackoverflow.com/questions/562303/the-definitive-c-book-guide-and-list ]]
[[ Best C++ Resources | http://stackoverflow.com/questions/155762/best-c-resource ]]
[[ Best C++ articles at artima | http://www.artima.com/cppsource/top_cpp_publications.html ]]
----
!! Beginners
[[ PDF - Article by Bjarne Stroustrup on Learning C++ as a New Language | http://www2.research.att.com/~bs/new_learning.pdf ]]
''[[ About Book - Principles and Practice Using C++ (for Beginners) by Bjarne Stroustrup | http://www.research.att.com/~bs/programming.html ]]''
[[ Book - Principles and Practice Using C++ (for Beginners) by Bjarne Stroustrup | http://www.amazon.com/Programming-Principles-Practice-Using-C/dp/0321543726/ref=sr_1_2?s=books&ie=UTF8&qid=1329465714&sr=1-2 ]]
''[[ C++ FAQ Lite | http://www.parashift.com/c++-faq-lite ]]''
----
!! Intermediate
{{{
TODO
}}}
--
!!C++ for programmers (from other languages)
''[[ Essential C++ by Stanley Lippmann | http://www.amazon.com/Essential-C-Stanley-B-Lippman/dp/0201485184/ref=sr_1_1?s=books&ie=UTF8&qid=1329466274&sr=1-1 ]]''
''[[ Accelerated C++ by Andrew Koenig and Barbara Moo | http://www.amazon.com/Accelerated-C-Practical-Programming-Example/dp/020170353X/ref=sr_1_1?s=books&ie=UTF8&qid=1329465714&sr=1-1  ]]''
''[[ C++ For C Programmers by Ira Pohl | http://www.amazon.com/C-Programmers-Third-3rd/dp/0201395193/ref=sr_1_1?ie=UTF8&qid=1329465687&sr=8-1 ]]''
----
!!! C++ Gotchas
''[[ C++ Frequently Questioned Answers (anti-c++) | http://yosefk.com/c++fqa ]]''
[[ C++ In a Nutshell | http://www.amazon.com/gp/product/059600298X/ref=cm_cr_asin_lnk ]]
----
!!Advanced
----
[[ SE Radio - Episode 143 API Design with Jim Des Rivires | http://www.se-radio.net/2009/08/episode-143-api-design-with-jim-des-rivieres/ ]]
[[ Eclipse API Central Wiki | http://wiki.eclipse.org/API_Central  ]]
[[ Book: The art of the meta-object protocol | http://www.amazon.com/Art-Metabobject-Protocol-Gregor-Kiczales/dp/0262610744 ]]
----
[[ Practical API Design General Wiki |  http://wiki.apidesign.org/wiki/Main_Page ]]
[[ API Design Patterns | http://wiki.apidesign.org/wiki/APIDesignPatterns ]]
[[ Wiki on the book Practical API Design | http://wiki.apidesign.org/wiki/TheAPIBook ]]
[[ Book - 'Practical API Design - Confessions of a Java Framework Architect' by Jaroslav Tulach (NetBeans) | http://www.amazon.com/Practical-API-Design-Confessions-Framework/dp/1430209739/ref=sr_1_9?ie=UTF8&s=books&qid=1238586814&sr=1-9 ]]
[[ 97 Things Every Software Architect Should Know| http://www.amazon.com/Things-Every-Software-Architect-Should/dp/059652269X/ref=sr_1_9?s=books&ie=UTF8&qid=1313671241&sr=1-9 ]]
----
[[ Beautiful Architecture by some leading software guys | http://www.amazon.com/Beautiful-Architecture-Leading-Thinkers-Software/dp/059651798X/ref=pd_bxgy_b_text_b ]]
[[ Large scale C++ Design lecture notes on libraries | http://www.mpi-inf.mpg.de/~kettner/courses/lib_design_03/notes/large.html ]]
[[Linux specific google search|http://www.google.com/linux]]
[[Google Groups|http://groups.google.com]]
----
/***
|''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);
}
//}}}
!! Windows Unix HTML and Newlines
''[[ HTML URL Requests Encoding Reference | http://www.w3schools.com/tags/ref_urlencode.asp ]]''
''[[ HMTL- ASCII Encoding Reference | http://www.w3schools.com/tags/ref_ascii.asp ]]''
''[[ Newlines and Carriage returns across Windows and Linux | http://mc-computing.com/languages/CR_LF.htm ]]''
----
!! Localization
''[[ Variable width encoding at wikipedia | http://en.wikipedia.org/wiki/Variable-width_encoding ]]''
''[[ Multibyte variable length encoding | http://en.wikipedia.org/wiki/Variable-width_encoding#CJK_multibyte_encodings ]]''
''[[ Unicode variable width encoding at wikipedia | http://en.wikipedia.org/wiki/Variable-width_encoding#Unicode_variable-width_encodings ]]''
''[[ Characters vs. Bytes in Unicode, UTF-8 | http://www.tbray.org/ongoing/When/200x/2003/04/26/UTF ]]''
----
!! Unicode and UTF-8
''[[ Joel Spolsky - Unicode | http://www.joelonsoftware.com/articles/Unicode.html ]]''
''[[ Character Table for Unicode at wikiedia | http://en.wikibooks.org/wiki/Unicode/Character_reference ]]''
''[[ UTF-8 | http://en.wikipedia.org/wiki/UTF-8 ]]''
''[[ Unicode and UTF8 FAQ for Unix/Linux | http://www.cl.cam.ac.uk/~mgk25/unicode.html ]]''
''[[ Encodings FAQ on Japanese | http://www.sljfaq.org/afaq/encodings.html ]]''
''[[ Codepages | http://www.i18nguy.com/unicode/codepages.html ]]''
''[[ Using Unicode in C/C++ | http://www.evanjones.ca/unicode-in-c.html ]]''
''[[ Encoding/Decoding UTF8 in C++ | http://www.codeproject.com/Articles/5281/UTF-8-Encoding-and-Decoding ]]''
''[[ Setting Japanese language fonts in VIM | http://dallarosa.tumblr.com/post/13278782524/a-tale-of-japanese-support-on-vim ]]''
[[ PDF Presentation Slides Unicode-EPC2002-Talk | http://downloads.egenix.com/python/Unicode-EPC2002-Talk.pdf ]]
[[ Chapter 9 on Unicode of Dive Into Python | http://diveintopython.org/xml_processing/unicode.html ]]
[[ How to Use UTF-8 with Python | http://www.evanjones.ca/python-utf8.html ]]
[[ Python Unicode Objects by effbot | http://effbot.org/zone/unicode-objects.htm ]]
[[ Joel Spolsky on Unicode and Character Sets (No Excuses!) | http://www.joelonsoftware.com/articles/Unicode.html ]]
[[ Unicode HOWTO — Python v2.7.1 documentation | http://docs.python.org/howto/unicode ]]
[[ XML.com: Proper XML Output in Python | http://www.xml.com/pub/a/2002/11/13/py-xml.html ]]
[[ XML.com: Unicode Secrets | http://www.xml.com/pub/a/2005/05/18/unicode.html ]]
[[ Unicode In Python, Completely Demystified | http://www.farmdev.com/talks/unicode ]]
[[ Unicode HOWTO — Python v2.7.1 documentation | http://docs.python.org/howto/unicode.html ]]
[[ Unicode website | http://www.unicode.org ]]
----
!! UTF-8
[[ UTF-8 History | http://www.cl.cam.ac.uk/~mgk25/ucs/utf-8-history.txt ]]
[[ UTF-8 website | http://www.utf-8.com ]]
[[ UTF-8 RFC 3629 | http://rfc-ref.org/RFC-TEXTS/3629/index.html ]]
----
!! iconv
[[ iconv based unicode converter | http://pypi.python.org/pypi/iconv ]]
[[ iconv utility to convert between character-set encodings | http://www.gnu.org/software/libiconv/documentation/libiconv/iconv.1.html ]]
[[ libiconv library to convert between character-set encodings | http://www.gnu.org/software/libiconv ]]
----
!!charmap command to view different unicode characters and their codes.
{{{
TODO
}}}
!Logging Tools
Log analysis tools, resources
[[Auditd - Linux Audit|http://people.redhat.com/sgrubb/audit]]
[[Auditd: CAPP rules example|http://www.math.ias.edu/doc/audit-1.0.3/capp.rules]]
[[Tools & Tips for auditing code|http://www.vanheusden.com/Linux/audit.html]]
Track unlink syscall (rm): TrackFS, libauditunlink, LAUS, LTT (Syscalltrack on 2.4)
# FWanalog (Summarizes IPF & IPtables firewall logs)
# FWlogsum (Summarizes Checkpoint FW1 logs)
# FWlogwatch (Summarizes firewall & IDS logs)
# KLogger (WinNT/Win2K keystroke logger)
# Linux Event Logger (For Enterprise-Class Systems): http://evlog.sourceforge.net/
# Lmon (PERL-based real time log monitoring solution)
# LogSentry (Monitors logs for security violations)
# Logsurfer (Monitors logs in realtime)
# PIdentd (Provides UserID with TCP connects)
# Swatch (Monitors syslog messages)
# Secure Remote Syslogger (Encrypted streaming syslog)
# SnortSnarf (HTMLized Snort Log Reviewer)
# Syslog-NG (Replacement for standard syslog facility)
# Syslog.Org (Vast info on syslogging)
# Throughput Monitor (An event counter per timeframe log analyzer): http://home.uninet.ee/~ragnar/throughput_monitor/
Loganalysis.org (check the library): http://www.loganalysis.org/
Counterpane, Log Analysis Resources: http://www.counterpane.com/log-analysis.html
EVlog, Linux Event Logging for Enterprise-class systems
Throughput Monitor
[[TiddlyWiki Syntax]]
[[Sys-Admin-Cmd-Ref]]
[[Net-Admin-Cmd-Ref]]
[[Areas To Work On]]
[[GettingStarted]]
[[ 'Modern C++ Design' Book Review by Herb Sutter | http://www.gotw.ca/publications/mcd_review.htm ]]
[[ Modern C++ Design wiki at wikipedia | http://en.wikipedia.org/wiki/Modern_C%2B%2B_Design ]]
----
[[ Loki wiki at wikipedia | http://en.wikipedia.org/wiki/Loki_%28C%2B%2B%29 ]]
[[ The extended Loki-lib at sourceforge | http://loki-lib.sourceforge.net/ ]]
[[ Original Source Code for Loki as in 'Modern C++ Design' | http://www.awprofessional.com/content/images/0201704315/sourcecode/loki.zip ]]
----
[[ Andrei Alexandrescu wiki at wikipedia | http://en.wikipedia.org/wiki/Andrei_Alexandrescu ]]
[[ Andrei Alexandrescu homepage | http://erdani.org/ ]]
[[ My wiki on Understanding Linux Kernel, Network Internals | http://linux-internals.tiddlyspot.com/ ]]
[[ My Learning Notes Wiki | http://learning-notes.tiddlyspot.com/ ]]
!! Installation and Configuring
[[ ntpd stays sysnchronized with local clock | http://fixunix.com/ntp/67764-ntpd-4-2-2p1-stays-synchronized-local.html ]]
''[[ NTP Server howto | http://mdshaonimran.wordpress.com/2012/04/26/ntp-server-how-to ]]''
''[[ NTP Server and Client Configuration in debian | http://www.debianadmin.com/ntp-server-and-client-configuration-in-debian.html ]]''
{{{
$> yum install ntp
$> chkconfig ntpd on
$> service ntpd start
$> ntpdate pool.ntp.org
$> ntpq -p ; ntpq -p <ipaddress|hostname>
$> ntptrace
$> ntpdc -p; ntpdc -p <ipaddress|hostname>
}}}
----
setup the local NTP server to get ntp time from another NTP server and ensure that time is synced
setup the local ntp client to get ntp time from local NTP server and ensure that time is synced
''[[ NTP Quick Howto | http://www.linuxhomenetworking.com/wiki/index.php/Quick_HOWTO_:_Ch24_:_The_NTP_Server#Download_and_Install_The_NTP_Package ]]''
''[[ configuration file syntax restrict option | http://www.eecis.udel.edu/~mills/ntp/html/accopt.html#restrict ]]''
----
!! Troubleshooting
''[[ no server found suitable for synchronization | http://www.linuxquestions.org/questions/linux-server-73/ntpdate-no-server-suitable-for-synchronization-found-931430/ ]]''
''[[ ntpdsim - NTPd simulator | http://www.cyberciti.biz/files/unix-ntpd-docs/ntpdsim.html ]]''
''[[ Debugging NTPd | http://www.cyberciti.biz/files/unix-ntpd-docs/debug.html ]]''
''[[ Unix NTPd docs | http://www.cyberciti.biz/files/unix-ntpd-docs ]]''
''[[ NTP Troubleshooting FAQ | http://support.ntp.org/Support/TroubleshootingNTP ]]''
''[[ NTP Known Os Issues | http://support.ntp.org/Support/KnownOsIssues ]]''
''[[ NTP On-line Troubleshooting Utilities | http://support.ntp.org/bin/view/Support/TroubleshootingNTP#Section_9.5. ]]''
----
!! Reference
[[ NTP RFC 5905 | http://tools.ietf.org/html/rfc5905 ]]
Burning Installation CDs Guide: http://docs.fedoraproject.org/en-US/Fedora/14/html/Burning_ISO_images_to_disc/index.html
Deployment Guide: http://docs.fedoraproject.org/en-US/Fedora/14/html/Deployment_Guide/index.html
Installation Guide: http://docs.fedoraproject.org/en-US/Fedora/14/html/Installation_Guide/index.html
User Guide: http://docs.fedoraproject.org/en-US/Fedora/14/html/User_Guide/index.html
SELinux Guide: http://fedoraproject.org/wiki/SELinux
----
! Network config files
// /etc/hosts  //
*Resolves hostnames esp. on small networks with no DNS server. 
*Required is a Mandatory line for loopback device (127.0.0.1) as localhost.localdomain.
// /etc/resolv.conf  //
* Specifies the IP addresses of DNS servers and the search domain. 
* The network initialization scripts populate this file automatically.
// /etc/sysconfig/network //
* Specifies routing and host information for all network interfaces.
// /etc/sysconfig/network-scripts/ifcfg-<interface-name>  //
* For each NIC (i.e. eth0, eth1, fddi0, fddi1 etc), there is a corresponding interface configuration script
* Fixed IP address for each NIC (OR)
{{{
DEVICE=eth0
BOOTPROTO=none
ONBOOT=yes
NETMASK=255.255.255.0
IPADDR=192.168.2.252
USERCTL=no
}}}
*Get the IP address from the DHCP server
{{{
DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=yes
}}}
----
!Network Interface Alias
Alias interface configuration files, which are used to bind multiple addresses to a single interface, use the ifcfg-<if-name>:<alias-value> naming scheme.
For example, an ifcfg-eth0:0 file could be configured to specify DEVICE=eth0:0 and a static IP address of 10.0.0.2, serving as an alias of an Ethernet interface already configured to receive its IP information via DHCP in ifcfg-eth0. Under this configuration, eth0 is bound to a dynamic IP address, but the same physical network card can receive requests via the fixed, 10.0.0.2 IP address.
''[[ Creating Interface Aliases | http://www.linuxhomenetworking.com/wiki/index.php/Quick_HOWTO_:_Ch03_:_Linux_Networking#Creating_Interface_Aliases ]]''
----
!Checking and Changing Services
{{{
$> runlevel  #displays current runlevel
$> vi /etc/inittab  #stores default runlevel
$> service <svc-name> status | start | stop | restart
$> service --status-all    #Get status of all services
$> system-config-services #GUI application for configuring services
$> ntsysv [--runlevel 1-5 ] #TUI services display and updation in inittab
$> chkconfig --list [svc-name] #commandline tool to display and update runlevel of services
$> chkconfig <svc-name>  [on|off] [--level 1-5] #for svc's managed by xinetd no runlevel req., on|off is enough
}}}
See Chapter 7 in Fedora Deployment Guide
----
!! What color is my ethernet parachute
{{{
$> grep eth0 /etc/modules.conf
alias eth0 8139too    #(dummy output)
$> lsmod | less   #see the kernel module name 8139too found above
}}}
[[ Getting make, brand, model of Ethernet Card in Linux | http://www.cyberciti.biz/faq/linux-find-out-what-driver-my-ethernet-card-is-using ]]
----
! Network Troubleshooting:
[[Intro to Linux Networking|http://www.linuxhomenetworking.com/wiki/index.php/Quick_HOWTO_:_Ch02_:_Introduction_to_Networking]]
[[Network Troubleshooting|http://www.linuxhomenetworking.com/wiki/index.php/Quick_HOWTO_:_Ch04_:_Simple_Network_Troubleshooting]]
[[Monitoring Server Performance|http://www.linuxhomenetworking.com/wiki/index.php/Quick_HOWTO_:_Ch22_:_Monitoring_Server_Performance]]
[[ Network troubleshooting up the protocol stack | http://www.gideonrasmussen.com/article-04.html ]]
[[ Simple Network Troubleshooting | http://www.linuxhomenetworking.com/wiki/index.php/Quick_HOWTO_:_Ch04_:_Simple_Network_Troubleshooting ]]
----
!Reference
[[ How Network Traffice Flows | http://www.gideonrasmussen.com/article-03.html ]]
[[ Fedora Core Deployment Guide | http://docs.fedoraproject.org/en-US/Fedora/14/pdf/Deployment_Guide/Fedora-14-Deployment_Guide-en-US.pdf]]
[[Linux Network Administrators Guide 2nd Edition|http://tldp.org/LDP/nag2/nag2.pdf]]
!!Netcat
[[ A Unix Utility You Should Know About: Netcat | http://www.catonmat.net/blog/unix-utilities-netcat ]]
----
!tcpdump
[[ capturing info with tcpdump for use with wireshark | http://www.wireshark.org/docs/wsug_html_chunked/AppToolstcpdump.html ]]
{{{
#capture with tcpdump for later viewing with wireshark
tcpdump -i eth0 -s 0 -w tcpdump4wireshark.cap      # -s 0 stands for capture whole packets
#tcpdump -i eth0 -s 65535 -w tcpdump4wireshark.cap
}}}
----
''Format: tcpdump [options] [filter-expression]''
Useful options
{{{
-c <count>  capture only count no. of packets
-a resolve addresses to host names
-n print numeric addresses do NOT resolve addresses to host names
-E use encryption key to decrypt packets. (use with care i.e. don't use real secret key)
-l make output line buffered - useful for       tcpdump -l | tee logfile | less
-w <logfile>  capture packets to logfile
-s <byte-count>  no. of bytes to snap a packet on. Use 0 to capture whole packets
-S dump absolute sequence numbers rather than relative sequence numbers
----
-t DON'T print time stamp in dump
-tt unformatted time stamp
-ttt prepend time delta between current and previous line in dump
-tttt prepend formatted date+timestamp on every line
----
-v
-vv
-vvv   increase verbosity in packet capture
}}}
[filter-expression]
{{{
   type: `host foo', `net 128.3', `port 20'
   dir(ection): `src foo', `dst net 128.3', `src or dst port ftp-data'
   proto: `ether src foo', `arp net 128.3', `tcp port 21', 'tcp'
}}}
----
''[[ tcpdump video tutorial on linux | http://www.msamir.net/the-art-of-network-debugging-with-tcpdump ]]
[[ tcpdump for dummies | http://www.alexonlinux.com/tcpdump-for-dummies ]]
[[ tcpdump tutorial and primer | http://danielmiessler.com/study/tcpdump ]]
[[ tcpdump with sample syntax and examples | http://openmaniak.com/tcpdump.php ]]''
[[ Mnemonic or How To Remember Your TCP Flags | http://danielmiessler.com/study/tcpflags ]]
[[ Not All SYN Packets Are Created Equal | http://danielmiessler.com/study/synpackets ]]
----
[[ tcpdump command manpage online | http://linux.about.com/library/cmd/blcmdl8_tcpdump.htm ]]
[[ tcptrace online manual | http://www.tcptrace.org/manual/index.html ]]
----
''[[ Excellent - Network Troubleshooting at LHN | http://www.linuxhomenetworking.com/wiki/index.php/Quick_HOWTO_:_Ch04_:_Simple_Network_Troubleshooting ]]''
[[ Explore Linux '/proc file system' | http://www.thegeekstuff.com/2010/11/linux-proc-file-system ]]
[[ 15 'tcpdump' command examples | http://www.thegeekstuff.com/2010/08/tcpdump-command-examples ]]
[[ 'editcap' Guide: 11 Examples To Handle Network Packet Dumps Effectively | http://www.thegeekstuff.com/2009/02/editcap-guide-11-examples-to-handle-network-packet-dumps-effectively ]]
[[ 'mergecap' and 'tshark': Merge Packet Dumps and Analyze Network Traffic | http://www.thegeekstuff.com/2009/03/mergecap-and-tshark-merge-packet-dumps-and-analyze-network-traffic/ ]]
[[ 7 Practical 'ps' Command Examples for Process Monitoring | http://www.thegeekstuff.com/2011/04/ps-command-examples ]]
[[ 15 Practical Linux 'top' Command Examples | http://www.thegeekstuff.com/2010/01/15-practical-unix-linux-top-command-examples ]]
[[ 10 'netstat' Command Examples | http://www.thegeekstuff.com/2010/03/netstat-command-examples ]]
[[ 7 'strace' Examples to Debug the Execution of a Program in Linux | http://www.thegeekstuff.com/2011/11/strace-examples ]]
--
[[ Networking articles at howstuffworks | http://computer.howstuffworks.com/computer-networking-channel.htm ]]
[[ All Networking Howto's Categorised by Task at tldp.org | http://tldp.org/HOWTO/HOWTO-INDEX/networking.html ]]
[[ IP command reference by Martin Brown | http://linux-ip.net/gl/ip-cref/ ]]
[[ IP Tunnels by Martin Brown | http://linux-ip.net/gl/ip-tunnels ]]
''[[ Linux Networking Wiki at linuxfoundation.org | http://www.linuxfoundation.org/collaborate/workgroups/networking ]]''
''[[ Ebook Linux Network Administrator Guide | http://www.linuxtopia.org/online_books/linux_network_administrators_guide/index.html ]]''
''[[ Guide to IP Layer Network Management with Linux by Martin Brown | http://linux-ip.net ]]''
----
!! Finding out which ssh connections are active on a server
{{{
$> netstat -an |  grep ':22 '
Active Internet connections (servers and established)
Proto Recv-Q Send-Q     Local Address             Foreign Address      State      
tcp      0       0         0.0.0.0:22                    0.0.0.0:*       LISTEN      
tcp      0       0         192.168.198.25:22       192.168.198.50:59278    ESTABLISHED 
tcp      0       0         192.168.198.25:22       192.168.198.50:58584    ESTABLISHED 
}}}
Note: In this particular case there are:
a) a single socket on port 22 i.e. ssh port listening for connections.
b) 2 ssh sessions from outside.

''Each connection is uniquely identified by 4 data parts <local-ip:ssh-port, foreign-ip:random-port> respt.
1) Refer Craig Hunt's TCP-IP Network Administration 3rd Ed. 
    chapter 2.6 Protocols, Ports, and Sockets for a really clear explanation.
2) The man page on accept clarifies that listening port 22 is different from the newly created port 22. 
    They differ as original socket is a listening socket and it doesn't have any <foreign-ip:random-port> associated with it.
3) __So in the example above the "composite key" to uniquely identify between 2 ssh connections between same set of computers is supplied by the random-port on the foreign-ip. No other connection on the network has the same "composite key"__
''
----
!! Mapping services to port numbers (and vice-versa)
{{{
$> cat /etc/services | grep -iw <portnumber|service>
}}}
NOTE:
1) TCP/UDP are transport protocols.
2) ftp and ssh etc are application layer protocols.
    Here 22/tcp or 22/udp uniquely identifies ssh.
{{{
Example:
$> cat /etc/services | grep -w 22
ssh		22/tcp				# SSH Remote Login Protocol
ssh		22/udp				# SSH Remote Login Protocol
$> cat /etc/services | egrep -iw 'ftp|ssh'
ssh		22/tcp				# SSH Remote Login Protocol
ssh		22/udp				# SSH Remote Login Protocol
x11-ssh-offset	6010/tcp			# SSH X11 forwarding offset
}}}
Even transport protocols have numbers e.g. tcp is protocol 6. 
Mostly this is used by the IP Layer to handover the PDU to the destination protocol.
{{{
$> cat /etc/protocols | egrep -iw 'tcp|udp'
tcp	6	TCP		# transmission control protocol
udp	17	UDP		# user datagram protocol
}}}
----
!Internet connectivity disappears
! Disconnected from Network
#Check the connection icon on Taskbar
#If it shows disconnect reconnect using eth0
!Restart named, httpd services
{{{
/etc/init.d/httpd restart
/etc/init.d/named restart
}}}
''[[ How to find your ethernet card by making it blink!! | http://www.linuxjournal.com/content/fun-ethtool ]]''
''[[ Linux Networking setup at LHN | http://www.linuxhomenetworking.com/wiki/index.php/Quick_HOWTO_:_Ch03_:_Linux_Networking ]]''
----
!! Remote Desktop
{{{
#Is the remote desktop service running on remote machine
$> chkconfig --list | grep xrdp

#Is the xrdp installed
$> yum list | grep xrdp

#On remote machine
$> yum install xrdp tiger-vncserver

#Run xrdp serive manually
$> xrdp
$> xrdp-sesman

#Or Add xrdp as a startup service
$> chkconfig xrdp on

#Confirm the remote desktop service is running on remote machine
$> chkconfig --list | grep xrdp

#From local machine connect to the remote machine
$> rdesktop -g 97% <remote.ip.addr> -u username
}}}
----
!!Configuring IP, Gateway, DNS, Hostname, Network and Internet Connectivity
Note: Use Network Manager if possible OR use ifconfig and other commands. Using BOTH can lead to conflicts.
{{{
#Test basic connectivity
$> ping <self.ip.network.addr>
$> ping <gateway.server.ip.addr>
$> ping <dns.server.ip.addr>

# Check self
$> ifconfig        
    #should show correct IP address, Broadcast Addr, Netmask with working interface eth0/eth1 etc

# Check routing tables
$> route -n        
  #should show correct Gateway

#Configure DNS server
$> vi /etc/resolv.conf
nameservice <ip-address-dns-server>

#Used by NetworkManager
$> vi /etc/sysconfig/network-scripts/ifcfg-eth0
IPADDR=<self-ip>
NETWORK=self.ip.network.0
BROADCAST=self.ip.network.255
DNS1=dns.server.ip.addr
GATEWAY=gateway.server.ip.addr
DOMAIN=mynetwork.com

$> vi /etc/hosts
127.0.0.1      mymachine.mynetwork.com    mymachine
::1      mymachine.mynetwork.com    mymachine
<self.ip.network.addr>          my.machine.network.com    mymachine

$> vi /etc/sysconfig/network
HOSTNAME=mymachine.mynetwork.com
$> service network restart

#Add service to bootup
$> chkconfig <service> on

$> service network restart

#Careful with these commands
#$> telinit 1       #go to single user mode
#$> telinit 2-5       #go to multi-user mode
#$> telinit 6     #REBOOT machine

#Confirm basic connectivity
$> ping <self.ip.network.addr>
$> ping <gateway.server.ip.addr>
$> ping <dns.server.ip.addr>

# Confirm changes
$> ifconfig        
    #should show correct IP address, Broadcast Addr, Netmask with working interface eth0/eth1 etc

# Check routing tables
$> route -n        
  #should show correct Gateway

$> hostname
$> traceroute www.google.com
$> nslookup mygateway.mynetwork.com     #resolve network names
$> nslookup www.google.com                     #resolve internet names
}}}
----
!! Network Manager
[[ Network Manager | http://projects.gnome.org/NetworkManager ]]
[[ Network Manager at wikipedia | http://en.wikipedia.org/wiki/NetworkManager ]]
[[ NetworkManager debugging | http://live.gnome.org/NetworkManager/Debugging ]]
''[[ Conflict between NetworkManager and ifconfig at ubuntu | http://askubuntu.com/questions/1786/what-is-the-difference-between-network-manager-and-ifconfig-ifup-etc ]]''
[[ HP Howto debug network connection loss | http://bizsupport1.austin.hp.com/bizsupport/TechSupport/Document.jsp?lang=en&cc=us&taskId=110&prodSeriesId=3368540&prodTypeId=321957&objectID=c00556757&printver=true ]]
[[ cnetworkmanager - command line Network Manager | http://vidner.net/martin/software/cnetworkmanager/ ]]
----
!!Chaning IP address using ifconfig and route commands
{{{
$> ifconfig
$> route -n
$> ifconfig eth0 down
$> ifconfig eth0 <self.ip.address> netmask 255.255.255.0 up
$> route add default gw <gateway.server.ip.address>
$> route -n
}}}
''[[ Basic IP address change | http://linux-ip.net/html/basic-changing.html ]]''
----
!! Web Servers
''[[ How Web Servers work at howstuffworks | http://computer.howstuffworks.com/web-server.htm ]]''
----
!! Bridging
''[[ How Routers Work at howstuffworks | http://computer.howstuffworks.com/router.htm ]]''
''[[ All Network Bridging Related HowTo's at tldp.org | http://tldp.org/HOWTO/HOWTO-INDEX/networking.html#NETBRIDGE ]]''
[[ Bridging at wikipedia | http://en.wikipedia.org/wiki/Bridging_%28networking%29 ]]
[[ Subnetworks and network masking at wikipedia | http://en.wikipedia.org/wiki/Subnetwork ]]
[[ CIDR or Classless Inter-Domain Routing at wikipedia | http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing ]]
[[ IP addressing and Subnetting for new users by Cisco | http://www.cisco.com/en/US/tech/tk365/technologies_tech_note09186a00800a67f5.shtml# ]]
[[ Understanding Subnetting | http://danielmiessler.com/study/subnetting ]]
----
!!~FireWall
iptables is built on top of netfilter, the packet alteration framework for Linux 2.4.x and 2.6.x. It is a major rewrite of its predecessor ipchains, and is used to control packet filtering, Network Address Translation (masquerading, portforwarding, transparent proxying), and special effects such as packet mangling.
[[ | http://www.gideonrasmussen.com/article-02.html ]]
[[Linux Firewalls with IpTables|http://www.linuxhomenetworking.com/wiki/index.php/Quick_HOWTO_:_Ch14_:_Linux_Firewalls_Using_iptables]]
[[manpage on iptables |http://linuxmanpages.com/man8/iptables.8.php]]
[[TLDP Firewall and Proxy Server Howto|http://tldp.org/HOWTO/Firewall-HOWTO.html]]
[[Linux Basic Firewall Configuration|http://www.techotopia.com/index.php/Basic_Fedora_Linux_Firewall_Configuration]]
[[Using Firestarter to Configure FC Linux Firewall|http://www.techotopia.com/index.php/Using_Firestarter_to_Configure_a_Fedora_Linux_Firewall]]
[[NetFilter/IpTables site|http://www.netfilter.org]]
''[[ How NAT works at howstuffworks | http://computer.howstuffworks.com/nat.htm ]]''
----
!! Telnet FTP and xinetd
[[Configure FTP Server|http://www.linuxhomenetworking.com/wiki/index.php/Quick_HOWTO_:_Ch15_:_Linux_FTP_Server_Setup]]
[[Configure Telnet, TFTP and xinetd|http://www.linuxhomenetworking.com/wiki/index.php/Quick_HOWTO_:_Ch16_:_Telnet,_TFTP,_and_xinetd]]
!Apache Web Server
[[The Apache Web Server|http://www.linuxhomenetworking.com/wiki/index.php/Quick_HOWTO_:_Ch20_:_The_Apache_Web_Server]]
----
!!NFS
[[Configure NFS|http://www.linuxhomenetworking.com/wiki/index.php/Quick_HOWTO_:_Ch29_:_Remote_Disk_Access_with_NFS]]
----
!!NIS
[[Configuring NIS|http://www.linuxhomenetworking.com/wiki/index.php/Quick_HOWTO_:_Ch30_:_Configuring_NIS]]
----
!!DHCP
[[Configuring the DHCP Server|http://www.linuxhomenetworking.com/wiki/index.php/Quick_HOWTO_:_Ch08_:_Configuring_the_DHCP_Server]]
[[DHCP Quick Howto|http://www.linuxhomenetworking.com/wiki/index.php/Quick_HOWTO_:_Ch08_:_Configuring_the_DHCP_Server]]
----
!! Reference Books
Linux Network Administration and Linux System Admnistration O'Reilly
Essential System Administration by Frisch.
TCP/IP Illustrated
The Practice of System and Network Administration, by Limoncelli, Hogan and Chalup
{{{
Review: "Technologies will come and go (and can be easily Googled as required), but the information in that book is timeless (and priceless)."
}}}
Debian Administrator's Handbook:  http://www.debian.org/doc/manuals/debian-reference/index.en.html
{{{  Review:"Basic intro to all aspects of admin." }}}
!!Video Tutorials
[[ UPE Workshop #2: Introduction to Web services - 1hr Video from Google | http://www.youtube.com/watch?v=OqnZjLMWjXM ]]
[[ Web Services Middleware: All Grown Up! - 50Min Video from Google | http://www.youtube.com/watch?v=PJfxNKplAZ4&feature=related ]]
[[ Collection of Video Tutorials on Internet and Networking from IIT Kharagpur | http://www.youtube.com/user/nptelhrd#g/c/04D5787E247DC324 ]]
----
[[ 1500 Videos from GoogleTechTalk | http://www.youtube.com/user/GoogleTechTalks ]]
----


!Chapter 2
!!IP ADDRESSES
IP Address = Network part + Host Part (32 bits = 8 bits * 4 bytes with each byte addressing 0-255 values respt.)
----
!!!Reserved IP addresses:
224.0.0.0 = reserved for special use
0.0.0.0 = default route (used in routing table and config files)
127.0.0.1 = loopback address
----
!!!Special addresses
172.19.198.0 = network address (used in routing table and config files)
172.19.198.255 = broadcast address (i.e. turn all bits in Host part to 1 given mask as 255.255.255.0)
224.0.0.9 = multicast address (starting 4 bits of address are 1110 i.e. 224)

Network Part = 172.19.198.XXX (network mask = 255.255.255.0 i.e. the last byte is for hosts + reserved IPs)
Host Part = 0 - 255 ( with Reserved IPs: 0 = network address, 255 = broadcast address )

172.19.198.20 = unicast address targetting a single IP address

!!Subnets with CIDR
255.255.255.0 - ex: 192.168.10.22/24

Using 4 Bits gives us 16 Subnets - the subnets start from 2^8 to 2^5
Network mask      Bit-Value
255.255.255.128 = 128 		= 2^7
255.255.255.192 = 192 		= 128 + 64 = 2^7 + 2^6
255.255.255.224 = 224 		= 128 + 64 + 32 = 2^7 + 2^6 + 2^5
255.255.255.240 = 240 		= 128 + 64 + 32 + 16 = 2^7 + 2^6 + 2^5 + 2^4

Imagine an odometer with a 4 digit counter for subnets and another 4 digit counter for hosts
7-6-5-4|3-2-1-0  BitNumber
0-0-0-0|0-0-0-0  (Sb,Host)

The other 4 bits in the 4th byte are used for the hosts:
172.19.198.0-15 fall in 1st subnet
172.19.198.241-255 falls in 16th subnet

[[ Informational RFC 1878 with Pre-calculated subnet masks | http://tools.ietf.org/html/rfc1878 ]]
[[ Calculating number of addresses on a subnet at LHN | http://www.linuxhomenetworking.com/wiki/index.php /Quick_HOWTO_:_Ch02_:_Introduction_to_Networking#Calculating_The_Number_of_Addresses_Assigned_to_a_Subnet ]]
----
!! IP Address Classes (obsoleted by CIDER)
Rule of Thumb for choosing IP Address "classes" for your networks:
"The smaller the starting quad the bigger the number of hosts"

     0.0.0.0              - reserved for default route
a)   0.0.0.1 to 127.0.0.0 - use up first 1 byte for the network leaving 4 bytes for HUGE no. of hosts/subnets-with-hosts
b) 128.0.0.0 to 191.0.0.0 - use up first 2 bytes for the network leaving 2 bytes for MEDIUM no. of hosts/subnets-with-hosts
c) 192.0.0.0 to 223.0.0.0 - use up first 3 bytes for network leaving 1 byte for SMALL no. of hosts/subnets-with-hosts
d) 224.0.0.0 to 239.0.0.0 - reserved for multicast
e) 240.0.0.0 to 255.255.255.255 - reserved 

Note: Actually this table shows why the names Class A,B,C,"D" were chosen as they were.

Evaluating addresses according to the class rules limits the length of network numbers to 8, 16, or 24 bits—1, 2, or 3 bytes. 
*** IMP ***
The IP address, however, is not really byte-oriented. It is 32 contiguous bits. 
The address bit mask provides a flexible way to define the network and host portions of an address. 
IP uses the network portion of the address to route the datagram between networks. 
The full address, including the host information, is used to identify an individual host. 
Because of the dual role of IP addresses, the flexibility of address masks not only makes more addresses available for use,
 but also has a positive impact on routing. 
[[ Superneting to avoid routing table overflow by aggregation of multiple subnets into a supernet | http://en.wikipedia.org/wiki/Supernet ]]
NOTE:
Both types of addresing divide address-space into 2 parts : network part and host part 
Class base addressing allows division at byte level. 
But CIDR is more efficient as it allows addressing at bit level.
----
''Key Terms used in Exception Safety:''
#Exception Neutral: (Basic gaurantee)
##Our code either doesn't catch anything or just propagates the exceptions to the caller (from new/delete orT() or ~T() ).
##No leaks. 
##Try to maintain good-enough object state if not perfect state as in a rollback.
#Exception Safe : (Strong gaurantee)
##Atomic operations - (All or Nothing changes) i.e. maintain consistent state even in case of exceptions (as in commit/rollback of databases)
----
''Thumb-Rules:''
#Never allow exceptions to leave destructors i.e. ~T() throw()
##Add try { } catch () { } to any destructor which could potentially throw an exception
#The C++ Compiler silently inserts function calls which may throw exceptions, esp:
##user-defined operators, 
##user-defined conversions
##silent temporary objects
#Safe function calls are 
##no-throw function calls with exception spec of throw(), or
##no-throw standard library functions explicitly documented as such
----
''Stack and StackImpl Solution:''
Golden Rule: A class/function must do one and one thing only
Object creation/destruction consists of 2 type of statements:
a) memory allocation and 
b) object construction i.e. state creation/destruction

(Judo technique - use exceptions rather than fighting with them)
Since exceptions drive a wedge between 'a' and 'b' type of statements.
Do a clean break by factoring them out into 2 nodes NodeA and NodeB.
With this the need for try/catch disappears.
Now exceptions actually help us "return" from error condition without an explicit
if-else or try-catch.

Rule0) NodeB -> NodeA (B depends on A) 
Rule1) Factor out these 2 activities into 2 different classes StackImpl and Stack
----
''Destructors That Throw and Why They're Evil:''
3 Rules to write code that is Exception-Safe and Exception-Neutral:
#Isolate your resource management
#Use the "update a temporary and swap" idiom, and 
#Never write destructors which allow exceptions to escape
----
Rationale:
2 Phase approach to Object creation:
2 Phase approach to Object creation:
Single Allocation Phase i.e. new(sizeof(T)*nelems) followed by N (In-Place) construction
{{{
StackImpl(size_t size=0)
  : v_( static_cast<T*>               // see Item M2 for info on static_cast
    ( size == 0
    ? 0
    : ::operator new(sizeof(T)*size) ) ),
    vsize_(size),
    vused_(0)
  { }
}}}
N (In-Place)Destruction followed by Single Deallocation
{{{
  ~StackImpl() {
    destroy( v_, v_+vused_ );         // this can't throw
    ::operator delete( v_ );
  }
}}}
This is the reason why 
a) construct() uses  new (p) T(value); i.e. construct only 
   (no allocation as that is **already** taken care of by StackImpl<T>() )
b) destroy() uses p->~T(); i.e. destruction only 
   (no deallocation as that is taken care of **later** by ~StackImpl<T>() )
----
!!Acknowledgements
Notes based on some very interesting discussions with [[ Ravi Honnavalli | http://ravi-honnavalli.blogspot.com ]] and annotations on the article [[ Exception Safe Generic Containers by Herb Sutter | http://ptgmedia.pearsoncmg.com/imprint_downloads/informit/aw/meyerscddemo/DEMO/MAGAZINE/SU_FRAME.HTM ]]
[[ Herb Sutter Blog on all things C++ | http://herbsutter.com ]]
! FOSS Content Filtering Web Proxies
[[ Wikipedia on Content Control softwares | http://en.wikipedia.org/wiki/Content-control_software ]]
[[ 2003 Article on Open source Web Proxies - Squid (SquidGuard), Dan's Guardian and Privoxy | http://www.linuxjournal.com/article/6807 ]]
[[ Dan's Guardian FOSS | http://dansguardian.org ]]
[[ Untangle Web Proxy - with its own appliances, proxies, transparent routers | www.untangle.com ]]
----
!! Squid-cache
[[ Wikipedia on Squid | http://en.wikipedia.org/wiki/Squid_%28software%29 ]]
[[ Squid website | http://www.squid-cache.org ]]
[[ Squid transparent web proxy wiki | http://www.dd-wrt.com/wiki/index.php/Squid_Transparent_Proxy ]]
[[ Squid configuration manual | http://www.squid-cache.org/Doc/config ]]
----
!! Squid guard
[[ Squid guard homepage | http://www.squidguard.org ]]
[[ Squid guard feature list | http://www.squidguard.org/about.html ]]
[[ Squid guard documentation | http://www.squidguard.org/Doc ]]
[[ Article Using Squid-guard for content filtering | http://www.linux.com/archive/feed/60050 ]]
[[ Getting Started with Squid guard | http://www.squidguard.org/Doc/configure.html ]]
----
[[ Comparison of Firewalls on Wikipedia | http://en.wikipedia.org/wiki/Comparison_of_firewalls ]]
----
!NetFilter (Linux)
[[ Wikipedia on Netfilter/iptables | http://en.wikipedia.org/wiki/Netfilter/iptables ]]
[[ Article Netfilter and Iptables -- Stateful Firewalling for Linux | http://techupdate.zdnet.com/techupdate/stories/main/0,14179,2817396,00_print.html ]]
[[ “Writing Netfilter Modules” PDF Ebook |  http://jengelh.medozas.de/documents/Netfilter_Modules.pdf ]]
[[ Netfilter Conference 2010 PPTs | http://workshop.netfilter.org/2010/wiki/index.php/List_of_presentations ]]
[[ Wikipedia on Nftables (alpha) - The future of NetFilter/IpTables | http://en.wikipedia.org/wiki/Nftables ]]
----
!! iptables (new)  vs ipchains (old)
Basic difference is stateless vs. stateful (ipchains vs. iptables)
[[ Wikipedia on IpChains | http://en.wikipedia.org/wiki/Ipchains]]
[[ Wikipedia on IpTables | http://en.wikipedia.org/wiki/Iptables]]
----
! ipfirewall and PF (BSD) //STUB//
[[ Wikipedia on PF | http://en.wikipedia.org/wiki/PF_%28firewall%29 ]]
[[ Wikipedia on ipfirewall | http://en.wikipedia.org/wiki/Ipfirewall ]]
----
Viewing the contents of a x509 certificate
{{{
$> openssl x509 -text -in mycertifcate
}}}
----
!Reference
[[ SSL sequence diagram (pdf) at eventhelix | http://www.eventhelix.com/RealtimeMantra/Networking/SSL.pdf ]]
!! Howtos
[[ OpenSSL Howto documents | http://www.openssl.org/docs/HOWTO ]]
''[[ OpenSSL certificates howto | http://www.openssl.org/docs/HOWTO/certificates.txt ]]''
''[[ OpenSSL command line howto | http://www.madboa.com/geek/openssl/ ]]''
----
!! Background info
[[ Wikipedia on SSL | http://en.wikipedia.org/wiki/Secure_Sockets_Layer ]]
[[ Wikipedia on X.509 | http://en.wikipedia.org/wiki/X.509 ]]
[[ Wikipedia on "Certificate Authority" | http://en.wikipedia.org/wiki/Certificate_authority ]]
[[ Wikipedia on Root Certificate | http://en.wikipedia.org/wiki/Root_certificate ]]
[[ Wikipedia on Public Key Cryptography | http://en.wikipedia.org/wiki/Public-key_cryptography ]]
!! Oracle SQL Developer
[[ PDF - Oracle SQL Developer User Guide | http://download.oracle.com/docs/cd/E12151_01/doc.150/e12152.pdf ]]
[[ Oracle SQL Developer at wikipedia | http://en.wikipedia.org/wiki/Oracle_SQL_Developer ]]
[[ Oracle SQL Developer Tutorial | http://st-curriculum.oracle.com/tutorial/SQLDeveloper/index.htm ]]
[[ Connecting Oracle SQL Developer to MS SQL Server | http://hodentek.blogspot.com/2008/12/oracle-sql-developer-tool-15-with-sql.html ]]
[[ How-to Export Tables/Entire DB with Oracle SQL Developer | http://hodentek.blogspot.com/2008/02/how-to-export-query-results-from-oracle.html ]]
----
!! Oracle SQL*Plus Command Line Client
[[ SQL*Plus CLI FAQ | http://www.orafaq.com/wiki/SQL*Plus_FAQ ]]
[[ SQL*Plus CLI command reference | http://www.lorentzcenter.nl/awcourse/oracle/server.920/a90842/ch13.htm ]]
[[ SQL*Plus Tutorial | http://www.sql-plus.com/ ]]
----
!! Oracle
[[ Oracle cost based optimization
[[ Jonathan Lewis on Oracle Tuning | http://www.jlcomp.demon.co.uk/ ]]
[[ Jonathan Lewis blog on Oracle Tuning | http://jonathanlewis.wordpress.com ]]
----
[[ PDF wiki at wikipedia | http://en.wikipedia.org/wiki/Portable_Document_Format ]]
[[ PDF Editing Software | http://en.wikipedia.org/wiki/Portable_Document_Format#Editing_PDFs_.28structure.29 ]]
[[ Software for Annotating PDFs | http://en.wikipedia.org/wiki/Portable_Document_Format#Annotating_PDFs ]]
[[ PDF related Software (conversion, viewing, online,   | http://en.wikipedia.org/wiki/Portable_Document_Format#Other_applications_and_functionalities ]]
[[ List of PDF Software | http://en.wikipedia.org/wiki/List_of_PDF_software ]]
[[ DjVu format | http://en.wikipedia.org/wiki/DjVu ]]
!!!Php
[[ UPE Workshop #4: Server-Side Technologies (PHP) - 50 Min Video from Google | http://www.youtube.com/watch?v=IRghktdj2AA&feature=mfu_in_order&list=UL ]]
----
/***
|''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"
	});
*/
//}}}
!! Perl Tutorials
[[ PDF - Perl Refresher slides from madmongers | http://www.madmongers.org/uploads/6c/aK/6caKTzS1bOUO_IdjwN4m1w/perl-refresher.pdf ]]
[[ 1hr Video Tutorial on Perl (1/4) from IIT Kharagpur | http://www.youtube.com/watch?v=1pVolaKhxVM ]]
[[ Perl Survival Guide for C Programmers | http://www.teaser.fr/~amajorel/psgfcp/ ]]
[[ Perl For C++ Programmers | http://www.sfu.ca/~zblair/perlForC.html ]]
----
!! Syslogging with Perl
[[ Perl Sys::Syslog Gotchas | http://perldoc.perl.org/Sys/Syslog.html#THE-RULES-OF-SYS%3a%3aSYSLOG ]]
[[ Perl Sys::Syslog doc | http://perldoc.perl.org/Sys/Syslog.html ]]
[[ Perl Syntax Checking | http://community.activestate.com/forum-topic/how-perform-perl-syntax-check-perl-c ]]
[[ Article on SysLogging with Perl | http://lexington.pm.org/meetings/022001.html#syslogging%20with%20perl ]]
----
!! Installing packages with CPAN
{{{
$> yum install ncftp perl-CPAN
}}}
''[[ Perl Regular Expressions Tutorial | http://www.ryerson.ca/perl/manual/pod/perlre.html#Regular_Expressions ]]''
[[ Installing Perl Modules using CPAN | http://perl.about.com/od/packagesmodules/qt/perlcpan.htm ]]
[[ Installing Perl Modules using yum provides | http://anarosnetwork.blogspot.com/2011/03/yum-install-perl-modules.html ]]
[[ List installed Perl Modules using instmodsh | http://www.cyberciti.biz/faq/how-do-i-find-out-what-perl-modules-already-installed-on-my-system/ ]]
[[ Install Perl modules using CPAN shell | http://www.cyberciti.biz/faq/how-do-i-install-a-perl-module/ ]]
----
!Syntax checking modifications to a perl script
{{{
$> perl -e 'BEGIN{push @INC, "/path/to/perl-scriptfolder"}' -wcT myperlscript.pm
}}}
----
!! Check environment variable values
{{{
$> updatedb &
$> locate Dumper
$> perl -MData::Dumper -e'print Dumper %ENV'
}}}
----
!! Easy logging using logger/syslog
{{{
$> system("logger", "-t GURU", "$dumpvariable");
}}}
----
!!! Perl debugger
{{{
$> perl -d myscript
#Run the debugger with Trace option
$> perl -MDevel::Trace -d:Trace myscript
}}}
[[ Trace your perl scripts | http://www.effectiveperlprogramming.com/blog/1429 ]]
[[ Cultured Perl : Debugging Perl with ease | http://www.ibm.com/developerworks/linux/library/l-pl-deb/index.html ]]
[[ Adding directories to the perl library path | http://www.perlhowto.com/extending_the_library_path ]]
----
!! Dump variables to console or log with Data::Dumper
{{{
   $boo = [ 1, [], "abcd", \*foo,
             {1 => 'a', 023 => 'b', 0x45 => 'c'}, 
             \\"p\q\'r", $foo, $fuz];

    ########
    # simple usage
    ########

    $bar = eval(Dumper($boo));
    print($@) if $@;
    print Dumper($boo), Dumper($bar);  # pretty print (no array indices)

    $Data::Dumper::Terse = 1;          # don't output names where feasible
    $Data::Dumper::Indent = 0;         # turn off all pretty print
    print Dumper($boo), "\n";

    $Data::Dumper::Indent = 1;         # mild pretty print
    print Dumper($boo);

    $Data::Dumper::Indent = 3;         # pretty print with array indices
    print Dumper($boo);

    $Data::Dumper::Useqq = 1;          # print strings in double quotes
    print Dumper($boo);

    $Data::Dumper::Pair = " : ";       # specify hash key/value separator
    print Dumper($boo);
}}}
Note: For more examples including above code see:
''[[Data::Dumper Example Code | http://cpan.uwinnipeg.ca/htdocs/Data-Dumper/Data/Dumper.html#EXAMPLES ]]''
[[ Data::Dumper doc | http://cpan.uwinnipeg.ca/htdocs/Data-Dumper/Data/Dumper.html ]]
''[[ Dumping variable values and names from perlmonks.org | http://www.perlmonks.org/?node_id=701033 ]]''
''[[ Using Data::Dumper to print out an array of hashes from perlmonks.org | http://www.perlmonks.org/?node_id=704380 ]]''
''[[ Serializing complex data into flat files from perl cookbook | http://docstore.mik.ua/orelly/linux/dbi/ch02_05.htm ]]''
[[ Deciphering output of Data::Dumper from perlmonks.org | http://www.perlmonks.org/?node_id=657139 ]]
''[[ Adding default parameters to a perl subroutine or function | http://www.perlmonks.org/?node_id=161091 ]]''
----
!! Dumping scalar, list and hash variables to console with print()
''[[ Dump perl variables to screen | http://www.troubleshooters.com/codecorn/littperl/perlsub.htm]]''
{{{
sub doscalar
   {
   my($scalar) = "This is the scalar";
   my($ref) = \$scalar;
   print "${$ref}\n";   # Prints "This is the scalar".
   }

sub dolist
   {
   my(@list) = ("Element 0", "Element 1", "Element 2");
   my($ref) = \@list;
   print "@{$ref}\n";    # Prints "Element 0 Element 1 Element 2".
   print "${$ref}[1]\n"; # Prints "Element 1".
   }

sub dohash
   {
   my(%hash) = ("president"=>"Clinton",
                "vice president" => "Gore",
                "intern" => "Lewinsky");
   my($ref) = \%hash;

   # NOTE: Can't put %{ref} inside doublequotes!!! Doesn't work!!!
   # Prints "internLewinskyvice presidentGorepresidentClinton".
   # NOTE: Hash elements might print in any order!
   print %{$ref}; print "\n";

   # NOTE: OK to put ${$ref}{} in doublequotes.
   # NOTE: Prints "Gore".
   print "${$ref}{'vice president'}\n";
   }

&doscalar;
&dolist;
&dohash;
}}}
''[[ Printing a hash variable from perl cookbook | http://docstore.mik.ua/orelly/perl/cookbook/ch05_06.htm ]]''
----
''[[ Perl =~ operator | http://docstore.mik.ua/orelly/perl2/prog/ch05_02.htm ]]''
''[[ Different types of quoting with/without interpolation | http://docstore.mik.ua/orelly/perl2/prog/ch02_06.htm#ch02-sect-pick ]]''
''[[ Perl unless keyword | http://www.misc-perl-info.com/perl-unless.html ]]''
----
!!Reference
''[[ Effective Perl Programming Blog | http://www.effectiveperlprogramming.com ]]''
[[ Perl Debugging Tools | http://debugger.perl.org/tools.html ]]
[[ Perl5 By Example Online book | http://affy.blogspot.com/p5be/index.htm ]]
!! Command line psql client for postgres
{{{
$> which psql
$> psql -U <user-name> <DB>
DB=> \x  #shows ouput in eXpanded format i.e key-value pair of fieldname: fieldvalue for each row
DB=> \d      #'DESCRIBE' db schema/table-name i.e. shows list of table/sequence names etc
DB=> select * from <table-name>\g  #\g stands for "go" i.e. send command in client's buffer to DBMS
DB=> \d <table-name>      #'DESCRIBE' format of <table-name>
DB=> \o  <output-file-name>         #send the output to <file-name>
DB=> \q                 #quit the session
}}}
!!!How to quickly search for a field in the entire database/tables
{{{
#Dumb entire db-schema to text file
$> psql -U <user-name> <DB>
DB=> \o /tmp/db-schema.txt
DB=> \d *
DB=> \q

#Use vim to search for field name in the dump of db schema
$> vi /tmp/db-schema.txt
Esc:set ic
Esc/field-name
}}}
----
!! Howtos
''[[ Introduction to PostGres VACUUM, ANALYSE, EXPLAIN and COUNT by Jim Nasby | http://wiki.postgresql.org/wiki/Introduction_to_VACUUM,_ANALYZE,_EXPLAIN,_and_COUNT ]]''
[[ Routine and Auto Vacuuming from postgres docs | http://www.postgresql.org/docs/8.3/interactive/routine-vacuuming.html ]]
[[ ANALYSE row estimation in postgres | http://www.postgresql.org/docs/current/static/row-estimation-examples.html ]]
''[[Extracting META information from PostGres | http://www.alberton.info/postgresql_meta_info.html ]]''
----
!!Reference
[[ Functions and Operators in PostGreSQL 8.3 | http://www.postgresql.org/docs/8.2/static/functions.html ]]
''[[ Pattern matching queries in PostGreSQL 8.3 - LIKE, ILIKE and SIMILAR TO and POSIX style reg-ex operators | http://www.postgresql.org/docs/8.3/static/functions-matching.html ]]''
[[ Postgresql performance optimization wiki | http://wiki.postgresql.org/wiki/Performance_Optimization ]]
[[ Online free books on mySQL and PostgreSQL |  http://www.linuxtopia.org/online_books/database_guides_index.html ]]
''[[ Processes Inside Out | http://linux.startcom.org/docs/en/Introduction%20to%20Linux/sect_04_01.html ]]''
[[ proc file system  man page | http://www.kernel.org/doc/man-pages/online/pages/man5/proc.5.html ]]
!!Video Tutorials
[[ Some Python IDEs - 1hr video from google | http://www.youtube.com/watch?v=t6pdG1oWFX4 ]]
[[ Google Python Class Day 1 Part 1 (series) - 1hr Video from google | http://www.youtube.com/watch?v=tKTZoB2Vjuk ]]
[[ The Python Object Model - 1hr video from google | http://www.youtube.com/user/nptelhrd#g/c/04D5787E247DC324 ]]
[[ Advanced Python or Understanding Python - 1hr video from google | http://www.youtube.com/watch?v=E_kZDvwofHY ]]
[[ Google I/O 2008 - Painless Python Part 1 of 2 - 1hr video from google | http://www.youtube.com/watch?v=bDgD9whDfEY ]]
----
!!Getting Started
[[ Beginning Python 2nd Edition | http://books.google.co.in/books?id=r-boTztidzsC&printsec=frontcover&dq=Beginning+Python:+from+novice+to+professional&hl=en&ei=19OaTdLlLMaUtwfU39jUBw&sa=X&oi=book_result&ct=result&resnum=2&ved=0CDYQ6AEwAQ#v=onepage&q&f=false ]] with Project chapters 
#Chapter 15 - creating a shared document (like wikis) using python and cgi-bin
#Chapter 26 for creating a bulletin-board using cgi and databases.
#Chapter 27 - creating a file-sharing application like gnutella, bittorrent using xml-rpc
#Chapter 29 - creating an arcade game with ~PyGame
[[ Download source code for Beginning Python 2nd Edition | http://apress.com/book/downloadfile/4064 ]]
----
!! GUI
!!!TkInter
Thinking in TkInter Book
[[ TkInter book online | http://effbot.org/tkinterbook/tkinter-index.htm#class-reference ]]
[[ TkInter book (older but more complete) at pythonware | http://www.pythonware.com/library ]]
[[ An introduction to Python TkInter at pythonware | http://www.pythonware.com/library/tkinter/introduction ]]
----
!!!wxWidgets
[[ wxPython Linux Tutorial | http://wiki.wxpython.org/AnotherTutorial ]]
----
!!! GUI Builder
[[ RapydTk - GUI builder for Python | http://www.bitflipper.ca/rapyd ]]
[[ SpecTcl GUI builder- Extracted from Komodo IDE into open source | http://spectcl.sourceforge.net ]]
----
[[ GUI modules in Python tk, tkinter, ttk, tix | http://docs.python.org/library/tk.html ]]
[[ Other GUI modules like PyQt, wxWidgets, PyGTK etc | http://docs.python.org/library/othergui.html ]]
----
!!!File Explorer
[[ Python Tix Tkinter DirTree source demo for displaying a directory tree | http://svn.python.org/projects/python/branches/pep-0384/Demo/tix/samples/DirTree.py ]]
[[ Python wxWidgets TreeView source demo for displaying a directory tree | http://osdir.com/ml/python.wax.user/2006-01/msg00020.html ]]
wx.GenericDirCtrl
wx.FileTreeView
[[ Tutorial on using wx.TreeCtrl | http://wiki.wxpython.org/AnotherTutorial#wx.TreeCtrl ]]
----
!! Installing Python Modules (using distutils)
#Download the archive file
#Unzip it
# cd to the the unzipped folder
# python setup.py build
# python setup.py install
[[ Installing and distributing python modules | http://docs.python.org/distutils/index.html#distutils-index ]]
[[ Tutorial on Distributing Python Modules at pythonware |  http://docs.python.org/install/index.html ]]
----
!! Basics
[[ Python Tutorial at docs.python | http://docs.python.org/tutorial/index.html ]]
[[ PDF - The Python Standard Library By Example | http://huiyublog.googlecode.com/files/The%2520Python%2520Standard%2520Library%2520by%2520Example.pdf ]]
''[[ Brief Tour of the Python Standard Library | http://docs.python.org/tutorial/stdlib.html ]]''
''Commonly used syntax of python [[ Learn Python in 10 Minutes Tutorial | http://www.korokithakis.net/tutorials/python ]]''
[[ Dive Into Python online pdf | http://diveintopython.org ]]
''[[ Dive Into Python 3 : Dissecting a Python program | http://diveintopython3.org/your-first-python-program.html ]]''
[[ Beginners Guide to Python | http://wiki.python.org/moin/BeginnersGuide ]]
[[ Python 101 : Introduction to Python | http://www.rexx.com/~dkuhlman/python_101/python_101.html ]]
[[ Building Skills in Python (for programmers) | http://www.linuxtopia.org/online_books/programming_books/python_programming/index.html ]]
[[ Instant Python Tutorial | http://hetland.org/writing/instant-python.html ]]
[[ Python Algorithms | http://hetland.org/writing/python-algorithms ]]
''[[ Learning Python - My Collection of Resources and Links  | http://techtalkies.blogspot.com/2010/10/learning-python.html ]]''
Python Language overview [[ Python Syntax and Semantics at wikipedia | http://en.wikipedia.org/wiki/Python_syntax_and_semantics ]]
----
!! Syntax checking tools in Python
''[[ pylint | http://pypi.python.org/pypi/pylint ]]'' __gives very detailed heuristic advice on do's and don'ts for Python code__
''[[ pep8 | http://pypi.python.org/pypi/pep8 ]]'' __Python style guide__
[[ pychecker | http://pypi.python.org/pypi/PyChecker ]] __minus point is that it executes the code it's supposed to check__
[[ pyflakes | http://pypi.python.org/pypi/pyflakes ]] __minus point is that it's very lite i.e. not much deep analysis__
''[[ Which Python checking tool to use at stackoverflow | http://stackoverflow.com/questions/1428872/pylint-pychecker-or-pyflakes ]]''
''[[ What are the comprehensive lint checkers for Python? - Stack Overflow | http://stackoverflow.com/questions/5611776/what-are-the-comprehensive-lint-checkers-for-python ]]''
----
!!Indentation in Python
Python IDLE IDE
a) Use Format menu
{{{
a) (Un)Indent Region
b) (Un)Tabify Region
c) Strip trailing Whitespace
}}}
b) Use Edit menu
{{{
  Preferences menu item to set tab-width to 4 spaces
}}}
c) Don't intermix vim and IDLE unless you match the tab/space settings equally in both as below: 
[[ indent aka python.vim Vim script | http://www.vim.org/scripts/script.php?script_id=974 ]]
[[ python omnicomplete (intellisense) Vim script | http://www.vim.org/scripts/script.php?script_id=1542 ]]
[[ pydoc plugin for Vim | http://www.vim.org/scripts/script.php?script_id=910 ]]
[[ python code folding plugin for Vim  | http://www.vim.org/scripts/script.php?script_id=1494 ]]
[[ Code browsing and auto completion in Vim Python | http://dancingpenguinsoflight.com/2009/02/code-navigation-completion-snippets-in-vim ]]
----
''[[ Vim PythonInfo wiki by moin | http://wiki.python.org/moin/Vim ]]''
[[ Python Code Completion script for Vim | http://www.vim.org/scripts/script.php?script_id=1542 ]]
[[ Customizing Vim as Python IDE | http://dancingpenguinsoflight.com/2009/02/python-and-vim-make-your-own-ide ]]
[[ Indenting Python with Vim | http://henry.precheur.org/vim/python ]]
[[ Vim Settings for Python | http://www.vex.net/~x/python_and_vim.html ]]
[[ How to setup Vim correctly for Python at stackoverflow | http://stackoverflow.com/questions/65076/how-to-setup-vim-properly-for-editing-python-files-py ]]
[[ Myths about indentation | http://www.secnetix.de/olli/Python/block_indentation.hawk ]]
----
!! Command-line options
[[ argparse API Reference | http://docs.python.org/library/argparse.html ]]
[[ optparse API Reference | http://docs.python.org/library/optparse.html ]]
[[ getopt for python API reference | http://docs.python.org/library/getopt.html ]]
----
!! Logger library
[[ logging.Logger - Basic Tutorial | http://docs.python.org/howto/logging.html#logging-basic-tutorial ]]
[[ logging.Logger - Advanced Tutorial |  http://docs.python.org/howto/logging.html#logging-advanced-tutorial ]]
[[ logging.Logger - Cookbook | http://docs.python.org/howto/logging-cookbook.html#logging-cookbook ]]
[[ logging.Logger - API Reference | http://docs.python.org/library/logging.html ]]
----
!! Debugging
!!! Display stack-trace from a function call in a python script
{{{
import traceback;
f = open('/tmp/stack-trace.log', 'w')
traceback.print_stack(file=f)
f.close()
}}}
----
!!! Pretty print python object or variable dump
{{{
from pprint import pprint
f = open('/tmp/dump.log', 'w')
pprint(mydictionary, f)
f.close()
}}}
[[ Pretty Print Python Data Structures | http://docs.python.org/library/pprint.html ]]
[[ Read/Write Files in Python | http://docs.python.org/tutorial/inputoutput.html ]]
----
!!! pydb - python debugger
{{{
TODO
}}}
[[ How to source/reload when using 'python -i' | http://stackoverflow.com/questions/5793149/how-to-reload-my-python-source-file-when-interactively-interpreting-it-with-pyt ]]
[[ Interactive Debugging in Python | http://onlamp.com/pub/a/python/2005/09/01/debugger.html ]]
[[ pdb documentation at docs.python | http://docs.python.org/library/pdb.html ]]
[[ pdb debugger commands | http://docs.python.org/library/pdb.html#debugger-commands ]]
[[ Blog notes on using pdb | http://pythonconquerstheuniverse.wordpress.com/category/python-debugger ]]
[[ Lint for Python [[ Pychecker (lint for python) | http://pychecker.sourceforge.net ]]
[[ pydb website | http://bashdb.sourceforge.net/pydb ]]
[[ Howto Python Debugging with GDB (ver 7.1) | http://www.cinsk.org/wiki/Debugging_with_GDB:_How_to_create_GDB_Commands_in_Python ]]
----
!! Types
[[ Built-in Types in Python at docs.python | http://docs.python.org/library/stdtypes.html#string-formatting ]]
----
!!Strings
[[ Python Tutorial - Introduction to Python strings | http://docs.python.org/tutorial/introduction.html#strings ]]
[[ Python string methods | http://docs.python.org/library/stdtypes.html#string-methods ]]
[[ Python string formatting operations like sprintf() | http://docs.python.org/library/stdtypes.html#string-formatting ]]
[[ Python string.format() (ver 2.6 onwards) | http://docs.python.org/library/string.html#new-string-formatting ]]
----
!! Common problems (FAQ)
{{{
Q) I get an exception like so : "TypeError: not all arguments converted during string formatting"
A) Count the no. of % symbols vs no. of tuple members parameters of string formatting
}}}
----
!! Control-Flow ( if/else, for, while loops, break, continue )
[[ if , for, while, try, with, functions, class definitions | http://docs.python.org/reference/compound_stmts.html ]]
[[ main() or __main__ in python | http://docs.python.org/reference/toplevel_components.html ]]
[[ Control-flow statements in Python Tutorial | http://docs.python.org/tutorial/controlflow.html ]]

!!! lambda functions
{{{
def indentXML() :
    #Let indentString variable refer to the anonymous lambda function object
    indentString = lambda level: "    "  * level             #uses string's * repetition operator 
...
    curLevel++
    #indent xml info
    cprint indentString(curLevel) + node.getInfo()       #get unindented xml string and add indent level

}}}
Here it looks like a function call but actually expands to an inline insertion of the lambda expression.
[[ lamdba function usage in Dive Into Python | http://diveintopython.org/power_of_introspection/lambda_functions.html ]]
[[ string repetition using '*' string operator in Python | http://www.java2s.com/Code/Python/String/Demonstratesstringconcatenationandrepetition.htm ]]
----
!! Error and Exception handling
[[ Built-in Standard Library Exceptions | http://docs.python.org/library/exceptions.html ]]
[[ Error and Exception Handling in Python Tutorial | http://docs.python.org/tutorial/errors.html ]]
[[ Exceptions are Classes Too in Python Tutorial | http://docs.python.org/tutorial/classes.html#exceptions-are-classes-too ]]
----
!! Data-Structures
!!! Set
[[ Set Tutorial | http://greeennotebook.com/2010/06/python-sets-tutorial ]]
----
!!! Dictionary
[[ Dictionary at docs.python | http://docs.python.org/tutorial/datastructures.html#dictionaries ]]
[[ case-insensitive dictionary | http://stackoverflow.com/questions/2082152/case-insensitive-dictionary ]]
{{{
>>> d = { 'a' : 1, 'b' : 2, 'c':3 }
>>> d
{'a': 1, 'c': 3, 'b': 2}
>>> d.keys()
['a', 'c', 'b']
>>> d.values()
[1, 3, 2]
>>> 'a' in d
True
>>> d['x'] = 24
>>> d
{'a': 1, 'x': 24, 'c': 3, 'b': 2}
>>> 'x' in d
True
>>> d['z'] = 26
>>> d
{'a': 1, 'x': 24, 'c': 3, 'b': 2, 'z': 26}
>>> del d['z']
>>> d
{'a': 1, 'x': 24, 'c': 3, 'b': 2}
>>> d['phonelist'] = [ 1, 2, 3, 4, 5 ]
>>> d
{'a': 1, 'x': 24, 'c': 3, 'b': 2, 'phonelist': [1, 2, 3, 4, 5]}
>>> d['phonelist']
[1, 2, 3, 4, 5]
>>> d['PHONELIST'] = [ 2, 3, 4, 5, ]
>>> d
{'a': 1, 'c': 3, 'b': 2, 'phonelist': [1, 2, 3, 4, 5], 'x': 24, 'PHONELIST': [2, 3, 4, 5]}
>>> for key, value in d.iteritems():
	print "Key:", key, "Value:", value

Key: a Value: 1
Key: c Value: 3
Key: b Value: 2
Key: phonelist Value: [1, 2, 3, 4, 5]
Key: x Value: 24
Key: PHONELIST Value: [2, 3, 4, 5]
}}}
----
!! Stack
[[ Using Lists as Stacks in python | http://docs.python.org/tutorial/datastructures.html#using-lists-as-stacks ]]
----
!! Classes
[[ Classes in Python at docs.python | http://docs.python.org/tutorial/classes.html ]]
[[ A first look at classes in python at docs.python | http://docs.python.org/tutorial/classes.html#a-first-look-at-classes ]]
----
!! Profilers
[[ Python Performance Tips |  http://wiki.python.org/moin/PythonSpeed/PerformanceTips ]]
[[ The Python Profilers at docs.python | http://docs.python.org/library/profile.html ]]
[[ Psyco JIT optimizing bytecode compiler | http://psyco.sourceforge.net/introduction.html ]]
[[ PyInline - embed C source code into your Python script | http://pyinline.sourceforge.net ]]
----
!! C Shared Libraries
[[ ctypes Tutorial - shared library support in python | http://docs.python.org/library/ctypes.html#ctypes-tutorial ]]
[[ ctypes API Reference | http://docs.python.org/library/ctypes.html#ctypes-reference ]]
----
!Python and XML
[[ Python HTML and XML markup packages | http://docs.python.org/library/markup.html ]]
[[ Basic Python and libxml usage | http://www.xml.com/pub/a/2003/05/14/py-xml.html ]]
[[ Howto escape xml single, double quotes, <, > symbols in Python | http://wiki.python.org/moin/EscapingXml ]]
----
!! PyXML (abandoned project OR absorbed into Python standard library)
[[ PyXML Tutorials and Documentation | http://pyxml.sourceforge.net/topics/docs.html ]]
[[ PyXML FAQ on Python XML libraries | http://www.rexx.com/~dkuhlman/pyxmlfaq.html ]]
----
!! libxml2
[[ Python libxml2 small example | http://developers-blog.org/blog/default/2009/12/02/Python-XML-Processing-libxml2 ]]
[[ Python libxml2 API reference | http://dsnra.jpl.nasa.gov/software/Python/site-packages/Support/libxml2.html ]]
[[ Using libxml in Python | http://www.xml.com/pub/a/2003/05/14/py-xml.html ]]
[[ Config file processing with libxml2 and PERL | http://www.ibm.com/developerworks/aix/library/au-libxml2.html ]]
[[ libxml python bindings webpage | http://xmlsoft.org/python.html ]]
[[ C libxml2 tutorial | http://student.santarosa.edu/~dturover/?node=libxml2 ]]
XmlTextReader: Dom/SAX hybrid with cursor facility for need based reading of xml:
[[ LibXML2 XmlTextReader Tutorial for C and Python | http://xmlsoft.org/xmlreader.html ]]
----
!! SAX
''[[ Parsing XML with SAX in Python simple example | http://www.devarticles.com/c/a/XML/Parsing-XML-with-SAX-and-Python ]]''
[[ xml.sax.handler in python | http://docs.python.org/library/xml.sax.handler.html ]]
[[ xml.sax.reader in python | http://docs.python.org/library/xml.sax.reader.html ]]
[[ xml.sax Attributes interface in python | http://docs.python.org/library/xml.sax.reader.html#attributes-objects ]]
[[ xml.sax in python | http://docs.python.org/library/xml.sax.html ]]
[[ Howto set the encoding for SAX parser in python | http://stackoverflow.com/questions/857597/setting-the-encoding-for-sax-parser-in-python ]]
[[ SAX project in java with examples and documentation | http://www.saxproject.org ]]
[[ SAX Incremental Parser usage example with feed(), close() | http://code.activestate.com/lists/python-list/357004/ ]]
--
[[ Handling Huge CSV and XML files in Python | http://dev.lethain.com/handling-very-large-csv-and-xml-files-in-python/ ]]
[[ Python xml.elementree handle very large xml file at stackoverflow | http://stackoverflow.com/questions/3707155/can-python-xml-elementtree-parse-a-very-large-xml-file ]]
[[ SAX2DOM chunker for huge XML files | http://www.xml.com/pub/a/2004/07/28/py-xml.html ]]
[[ Building Dictionaries with SAX uses PyXML | http://www.xml.com/pub/a/2004/01/14/py-xml.html ]]
----
!! xml.etree.cElementTree
''[[ Parsing large xml file in Python with source example | http://stackoverflow.com/questions/476949/splitting-a-large-xml-file-in-python ]] ''
[[ Howto parse large xml files in python | http://stackoverflow.com/questions/324214/what-is-the-fastest-way-to-parse-large-xml-docs-in-python ]]
[[ xml.cElementTree parse on demand and free after usage is complete | http://effbot.org/zone/element-iterparse.htm ]]
[[ xml.cElementTree incremental parsing with iterparse() | http://effbot.org/zone/element-iterparse.htm#incremental-parsing ]]
[[ cElementTree API for low memory usage xml parsing | http://effbot.org/zone/celementtree.htm ]]
----
!! xml.etree.ElementTree (standard library) (slurps entire parsed doc into memory use xml.etree.cElementTree instead or libxml2)
[[ Blog on Learning XML parsing using python's xml.etree | http://www.learningpython.com/2008/05/07/elegant-xml-parsing-using-the-elementtree-module ]]
[[ xml.etree article (2003)  | http://www.xml.com/pub/a/2003/02/12/py-xml.html ]]
[[ xml.etree at docs.python | http://docs.python.org/library/xml.etree.elementtree.html ]]
[[ xml.etree at effbot website | http://effbot.org/zone/pythondoc-elementtree-ElementTree.htm ]]
[[ xml.etree website | http://effbot.org/zone/element-index.htm ]]
[[ xpath support and limitations in xml.etree | http://effbot.org/zone/element-xpath.htm ]]
[[ missing support for processing instructions/comments above the root element in xml.etree | http://stackoverflow.com/questions/1489949/elementtree-in-python-2-6-2-processing-instructions-support ]]
----
!! lxml.etree (external implmentation of etree)
[[ High-performance XML parsing in Python with lxml | http://www.ibm.com/developerworks/xml/library/x-hiperfparse/ ]]
[[ howto use event-driven parsing of iterparse() from the lxml tutorial | http://lxml.de/tutorial.html#event-driven-parsing ]]
[[ iterparse() of lxml tutorial | http://lxml.de/parsing.html#iterparse-and-iterwalk ]]
[[ lxml incremental parsing (non-blocking) | http://lxml.de/tutorial.html#incremental-parsing ]]
[[ sax support in lxml | http://lxml.de/sax.html ]]
[[ lxml tutorial | http://lxml.de/tutorial.html ]]
[[ lxml website | http://lxml.de ]]
----
!! minidom (very resource hungry only usable for small files)
[[ Minidom tutorial at wiki.python | http://wiki.python.org/moin/MiniDom ]]
[[ minidom at docs.python | http://docs.python.org/library/xml.dom.minidom.html ]]
[[ Processing XML in Python Using 'minidom' ( Chapter 5 of Dive Into Python) | http://www.faqs.org/docs/diveintopython/kgp_divein.html ]]
[[ Filtering values in xml using minidom | http://stackoverflow.com/questions/2286633/how-do-i-filter-values-from-xml-file-in-python ]]
[[ Finding node and its parent using minidom | http://stackoverflow.com/questions/4958626/how-to-find-a-specific-tag-in-an-xml-file-and-then-access-its-parent-tag-with-py ]]
----
!! OS interface
system() command
{{{
 text_file = "./abc.txt"
 os.system("cat " + text_file )
}}}
[[ Common os.path operations in Python | http://docs.python.org/library/os.path.html ]]
[[ Tour of Python standard library: The OS interface | http://docs.python.org/tutorial/stdlib.html#operating-system-interface ]]
[[ Python's 'os' module for individual file commands | http://docs.python.org/library/os.html#module-os ]]
----
!! Filesystem
[[ PDF - Python Tutorial on File and Directory access | http://heather.cs.ucdavis.edu/~matloff/Python/PyFileDir.pdf ]]
[[ Python docs on File and Directory Access | http://docs.python.org/library/filesys.html ]]
[[ Python's shutil module for high-level file collection commands | http://docs.python.org/library/shutil.html ]]
----
!! Pipes
{{{
 os.popen("cat " + text_file ).read()

 #Code to grep for 'main()' in strCode and set flag foundMain
 foundMain = os.popen("cat -  | grep 'main()' | wc -l ", "w").write( strCode ).read()
}}}
[[ Using os.popen at docs.python | http://docs.python.org/library/subprocess.html ]]
[[ Backticks operator equivalent in python | http://stackoverflow.com/questions/1410976/equivalent-of-backticks-in-python ]]
----
!! Unicode and UTF-8
[[ PDF Presentation Slides Unicode-EPC2002-Talk | http://downloads.egenix.com/python/Unicode-EPC2002-Talk.pdf ]]
[[ Chapter 9 on Unicode of Dive Into Python | http://diveintopython.org/xml_processing/unicode.html ]]
[[ How to Use UTF-8 with Python | http://www.evanjones.ca/python-utf8.html ]]
[[ Python Unicode Objects by effbot | http://effbot.org/zone/unicode-objects.htm ]]
[[ Joel Spolsky on Unicode and Character Sets (No Excuses!) | http://www.joelonsoftware.com/articles/Unicode.html ]]
[[ Unicode HOWTO — Python v2.7.1 documentation | http://docs.python.org/howto/unicode ]]
[[ XML.com: Proper XML Output in Python | http://www.xml.com/pub/a/2002/11/13/py-xml.html ]]
[[ XML.com: Unicode Secrets | http://www.xml.com/pub/a/2005/05/18/unicode.html ]]
[[ Unicode In Python, Completely Demystified | http://www.farmdev.com/talks/unicode ]]
[[ Unicode HOWTO — Python v2.7.1 documentation | http://docs.python.org/howto/unicode.html ]]
[[ Unicode website | http://www.unicode.org ]]
----
!! UTF-8
[[ UTF-8 History | http://www.cl.cam.ac.uk/~mgk25/ucs/utf-8-history.txt ]]
[[ UTF-8 website | http://www.utf-8.com ]]
[[ UTF-8 RFC 3629 | http://rfc-ref.org/RFC-TEXTS/3629/index.html ]]
----
!! iconv
[[ iconv based unicode converter | http://pypi.python.org/pypi/iconv ]]
[[ iconv utility to convert between character-set encodings | http://www.gnu.org/software/libiconv/documentation/libiconv/iconv.1.html ]]
[[ libiconv library to convert between character-set encodings | http://www.gnu.org/software/libiconv ]]
----
[[ PEP 8 -- Style Guide for Python Code | http://www.python.org/dev/peps/pep-0008 ]]
[[ PEP 100 -- Python Unicode Integration | http://www.python.org/dev/peps/pep-0100/ ]]
[[ Unicode at fileformat | http://www.fileformat.info/info/unicode ]]
----
!! Reference
[[ The Python Tutorial | http://docs.python.org/tutorial/index.html ]]
[[ Python FAQ | http://www.python.org/doc/FAQ.html ]]
[[ The Python Language Reference | http://docs.python.org/reference/index.html ]]
[[ Python Standard Library (API Reference) at docs.python | http://docs.python.org/library/index.html ]]
[[ Search for libraries at Python Package Index | http://pypi.python.org/pypi ]]
''[[ Inspect live objects in Python 3 | http://docs.python.org/py3k/library/inspect.html ]]''
''[[ 'Six' a Python 2 and 3 compatibility library | http://packages.python.org/six ]]''
[[ Python Browsable LXR Source code tree (ver3.1.2, ver2.6.5, ver2.5.4) | http://lxr.gwbnsh.net.cn/#python/ ]]
''[[ PyCon Python Conference India | http://in.pycon.org/ ]]''
''[[ PyCon worldwide | http://pycon.org/ ]]''
----
TODO: Add notes after going through:
''[[ RPM Guide |  http://docs.fedoraproject.org/en-US/Fedora_Draft_Documentation/0.1/html/RPM_Guide/ ]]''
[[ Brief RPM tutorial from securing linux online book | http://www.faqs.org/docs/securing/chap3sec20.html ]]
----
''[[ Quick RPM guide | http://www.tfug.org/helpdesk/linux/rpm.html ]]''
''[[ Frequent Usage of RPM commands Tutorial | http://fedoranews.org/alex/tutorial/rpm ]]''
{{{
#Verify ALL installed packages 
 rpm -Va 
 rpm --verify -a
#Install package
 rpm -ivh <pkg>
#Upgrade package (uninstalls previous version and installs later pkg)
 rpm -Uvh <pkg> 
#Find which rpm a file originated from 
 rpm -qf /path/to/file
#List all files (with paths) in a given rpm
 rpm -qlp mystery.rpm
#List prerequisites for a rpm package
rpm -qpR mypackage.rpm
rpm -qR mypackage
#List Dependencies on a rpm package
rpm -q --whatrequires mypackage
#Install new package and backup old package
rpm -Uvh --repackage new-package.rpm
#Remove package with backup for later reverting
rpm -e --repackage new-package.rpm
#Revert back to old package
rpm -Uvh --oldpackage /var/spool/repackage/old-package.rpm
}}}
''[[ RPM Repackage and Rollback feature explained in easy english | http://dailypackage.fedorabook.com/index.php?/archives/17-Wednesday-Why-Repackaging-and-Rollbacks.html ]]''
''[[ RPM Transaction Support Article | http://www.linuxjournal.com/article/7034 ]]''
''[[ Problem with RPM's repackage on relocation | http://www.spinics.net/lists/rpm/msg03233.html ]]''
''[[ How to find an RPM file's dependencies (prerequisites) | http://www.cyberciti.biz/faq/how-do-i-find-what-dependencies-a-rpm-file-has/ ]]''
''[[ Maximum RPM : Taking the RPManager to the limit | http://www.rpm.org/max-rpm ]]''
----
!! Search for RPMs
[[RPM find|http://www.rpmfind.net]]
[[ Redhat's RPM ftp site | ftp://ftp.redhat.com ]]
----
!! Howto extract files from RPM to local directory
{{{
$> mkdir tmp
$> cp /path/to/mypackage.rpm ./tmp
$> rpm2cpio mypackage.rpm | cpio -idmv        #extracts all dirs and files under ./tmp
}}}
''[[ How to extract an RPM's content files without installing | http://www.cyberciti.biz/tips/how-to-extract-an-rpm-package-without-installing-it.html ]]''
[[ RPM Howto on tldp | http://tldp.org/HOWTO/RPM-HOWTO ]]
----
!! Reference
[[ rpm.org website with documentation | http://www.rpm.org/wiki/Docs ]]
[[ Fedora RPM Guide | http://docs.fedoraproject.org/en-US/Fedora_Draft_Documentation/0.1/html/RPM_Guide/index.html ]]
[[ RPM Database Recovery Guide | http://www.rpm.org/wiki/Docs/RpmRecovery ]]
----
!! Connecting over intermediate machine
{{{
$> ssh -X <intermediate-machine-ip>
$> rdesktop -g 97% <remote-machine> -u <username>
}}}
----
!! Switching windows in remote machine
{{{
 ctrl+alt+tab
}}}
----
[[ facemash algorithm | http://humannaturegroup.wordpress.com/2010/10/09/the-facemash-algorithm ]]
[[ shotgun approach to ranking chess players (Elo Rating) | http://shotgunapproach.wordpress.com/2010/10/08/update-the-algorithm-for-facemash-in-the-social-network ]]
[[ Wikipedia on The Elo Rating System | http://en.wikipedia.org/wiki/Elo_rating_system ]]
[[ Wikipedia on Logistic Distribution (preferred by Chess Associations to Normal distribution of the Elo Rating System | http://en.wikipedia.org/wiki/Logistic_distribution ]]
!! MIME
//"Base64 is, of course, one possibility for encoding non-ASCII text content. MIME also provides an alternative encoding called quoted-printable that is suitable for character sets like ISO 8859-1 that are mostly ASCII compatible."//
i.e. Base64 is suitable for pure non-ASCII text and Quoted-Printable is more useful for ASCII text with few non-ASCII characters in it.
''[[ Simplified Guide to MIME | http://www.hunnysoft.com/mime/mime-guide.html ]]''
''[[ The MIME Information Page | http://www.hunnysoft.com/mime/index.html ]]''
''[[ Help for Decoding MIME attachments | http://www.hunnysoft.com/mime/decode.html ]]''
''[[ Email RFCs | http://www.hunnysoft.com/mime/email-rfc-index.html ]]''
''[[ Sample MIME messages | http://www.hunnysoft.com/mime/samples/index.html ]]''
----
!! Email address validation
''[[ Blog - "I knew how to validate an email address UNTIL I went into the RFC" | http://haacked.com/archive/2007/08/21/i-knew-how-to-validate-an-email-address-until-i.aspx ]]''
''[[ RFC3696 - A Human Readable guide to RFC 2822 by it's author | http://tools.ietf.org/html/rfc3696 ]]''
----
!!! Local-part
!!Unquoted
{{{
Without quotes, local-parts may consist of any combination of alphabetic characters, 
digits, or any of the special characters

      ! # $ % & ' * + - / = ?  ^ _ ` . { | } ~

period (".") may also appear, but may not be used to start or end the local part, 
nor may two or more consecutive periods appear.  
Stated differently, any ASCII graphic (printing) character other than the at-sign ("@"), 
backslash, double quote, comma, or square brackets may appear without quoting.  
}}}
!! Quoted
{{{
If any of that list of excluded characters are to appear, they must be quoted.
}}}
!!! Valid test email addresses
{{{
Abc\@def@example.com
Fred\ Bloggs@example.com
Joe.\\Blow@example.com
"Abc@def"@example.com
"Fred Bloggs"@example.com
user+mailbox@example.com
customer/department=shipping@example.com
$A12345@example.com
!def!xyz%abc@example.com
_somename@example.com
}}}
''[[ Restrictions on email addresses | http://tools.ietf.org/html/rfc3696#page-5 ]]''
--
!!! Domain-part
--
!!! Reference
''[[ RFC 822 - original rfc on email addresses | http://www.faqs.org/rfcs/rfc822.html ]]''
''[[ RFC 2822 - Internet Message Format | http://tools.ietf.org/html/rfc2822 ]]''
''[[ RFC 2821 - SMTP protocol |  http://tools.ietf.org/html/rfc2821 ]]''
----
!! Debugging SMTP
''[[ Configuring and Administering Mail (with Sendmail) | http://www.bga.org/~lessem/psyc5112/usail/mail/ ]]''
''[[ Debugging SMTP sendmail conversation | http://www.bga.org/~lessem/psyc5112/usail/mail/debugging ]]''
''[[ PDF - Sendmail Installation and Operation Guide (with Debugging) | http://www.trimm.nl/sendmail/operationguide_8.11.pdf ]]''
----
!! How email works
{{{
The Real E-mail System
For the vast majority of people right now, the real e-mail system consists of two different servers running on a server machine.
One is called the SMTP server, where SMTP stands for Simple Mail Transfer Protocol. 
The SMTP server handles outgoing mail.
The other is either a POP3 server or an IMAP server, both of which handle incoming mail.
POP stands for Post Office Protocol, and IMAP stands for Internet Mail Access Protocol. 
The SMTP server listens on well-known port number 25, POP3 listens on port 110 and IMAP uses port 143 
}}}
''[[ How email works at howstuffworks | http://communication.howstuffworks.com/email.htm ]]''
''[[ Basic info on Spam Filter FAQ | http://manas.tungare.name/articles/spam-filter-faq ]]''
----
!! Common SMTP commands
{{{
common commands are:

    * HELO - introduce yourself
    * EHLO - introduce yourself and request extended mode
    * MAIL FROM: - specify the sender
    * RCPT TO: - specify the recipient
    * DATA - specify the body of the message (To, From and Subject should be the first three lines.)
    * RSET - reset
    * QUIT - quit the session
    * HELP - get help on commands
    * VRFY - verify an address
    * EXPN - expand an address
    * VERB - verbose
}}}
''[[ SMTP commands at howstuffworks | http://communication.howstuffworks.com/email3.htm ]]''
----
!! Common POP3 commands
{{{
    * USER - enter your user ID
    * PASS - enter your password
    * QUIT - quit the POP3 server
    * LIST - list the messages and their size
    * RETR - retrieve a message, pass it a message number
    * DELE - delete a message, pass it a message number
    * TOP - show the top x lines of a message, pass it a message number and the number of lines
}}}
''[[ POP3 at howstuffworks | http://communication.howstuffworks.com/email4.htm ]]''
----
!!SMTP
''[[ Introduction to All about Email Headers for anti-spam users | http://www.owlriver.com/spam/stop-spam.html ]]''
[[ Email Header Fields | http://en.wikipedia.org/wiki/Email#Header_fields ]]
''[[ SMTP Protocol at wikipedia | http://en.wikipedia.org/wiki/Simple_Mail_Transfer_Protocol ]]''
''[[ SMTP wiki at wikipedia | http://en.wikipedia.org/wiki/SMTP ]]''
''[[ SMTP RFC 5321 | http://tools.ietf.org/html/rfc5321 ]]''
''[[ Internet Message Format RFC 5322 | http://tools.ietf.org/html/rfc5322 ]]''
----
!! Setup SMTP and DNS
!!! Zone file for DNS
Common Types of DNS records:
{{{
a) Host (A) -- Basic mapping of IP address to host name.
b) Canonical Name (CNAME) -- Alias for your domain. Anyone accessing that alias will be automatically directed to the server indicated in the A record.
c) Mail Exchanger (MX) -- This maps e-mail traffic to a specific server. It could indicate another host name or an IP address. For example, people who use Google for the e-mail for their domain will create an MX record that points to ghs.google.com.
d) Name Server (NS) -- This contains the name server information for the zone. If you configure this, your server will let other DNS servers know that yours is the ultimate authority (SOA) for your domain when caching lookup information on your domain from other DNS servers around the world.
e) Start of Authority (SOA) -- This is one larger record at the beginning of every zone file with the primary name server for the zone and some other information. If your registrar or hosting company is running your DNS server, you won't need to manage this.
}}}
''[[ Structure of a DNS record at microsoft KB | http://support.microsoft.com/kb/163971 ]]''
--
{{{
$> vi /etc/named.conf
# 2 name-servers for the default mydomain
@ NS my-ns1.mydomain.com
@ NS my-ns2.mydomain.com

#Mail exchange server for my domain i.e. http://mail.mydomain.com
@ MX 10 mail
mail A 192.10.17.20

#Games redirection to outside domain i.e. http://www.games.mydomain.com. Note the www for web access
games A 23.142.10.50
www CNAME games
}}}
''[[ How DNS works at howstuffworks | http://computer.howstuffworks.com/dns.htm ]]''
''[[ How to add a new domain name to your DNS at howstuffworks | http://computer.howstuffworks.com/dns4.htm ]]''
--
''[[ How to configure MX Records for SMTP traffic | http://www.petri.co.il/configure_mx_records_for_incoming_smtp_email_traffic.htm ]]''
''[[ How to Configure DNS for your Mail Service and avoid misconfigurations | http://www.opengroup.org/comm/the_message/magazine/mmv5n1/dns.htm ]]''
''[[ Example for Configuring DNS MX Records | http://www.process.com/techsupport/tcpware/faqs/dns003.html ]]''
''[[ How to send an  email using telnet | http://www.wikihow.com/Send-Email-Using-Telnet ]]''
''[[ Debugging POP/IMAP/SMTP With Telnet | http://damonparker.org/blog/2005/09/12/debugging-popimapsmtp-with-telnet ]]''
''[[ How to check if an email address exists without sending an email? | http://www.webdigi.co.uk/blog/2009/how-to-check-if-an-email-address-exists-without-sending-an-email/ ]]''
''[[ How to test your smtp server and send basic email | http://www.unixforum.co.uk/topic/3-how-to-test-your-smtp-server-and-send-basic-email ]]''
[[ Trouble Shooting SMTP Mail issues | http://www.gideonrasmussen.com/article-06.html ]]
[[ Books on SMTP with postfix | http://www.linuxtopia.org/online_books/mail_systems/postfix_documentation/index.html ]]
----
!!MIME
''[[ MIME Message format at wikipedia |  http://en.wikipedia.org/wiki/MIME ]]''
{{{
RFC 2045: Structure of MIME messages
RFC 2046: Media Typing System and Media Types
RFC 2047: Extensions to RFC 822 to allow non-US-ASCII text data in Internet mail header fields.
RFC 2048: IANA registration procedures
RFC 2049: MIME conformance criteria and illustrative examples of MIME message formats, acknowledgements and bibliography.

[Old RFCs]: Above RFCs are revisions of RFCs 1521, 1522, and 1590, which themselves were revisions of RFCs 1341 and 1342.
An appendix in RFC 2049 describes differences and changes from previous versions.
}}}
----
!!! DKIM
Very informative RFC ''[[ DKIM Signatures RFC 4871 | http://www.ietf.org/rfc/rfc4871.txt ]]''
Esp. look at the Sample below and Example Scenarios in the Appendices. TODO: restart from 3.6
----
Sample DKIM Signature Header:
{{{
DKIM-Signature: a=rsa-sha256; d=example.net; s=brisbane;
      c=simple; q=dns/txt; i=@eng.example.net;
      t=1117574938; x=1118006938;
      h=from:to:subject:date;
      z=From:foo@eng.example.net|To:joe@example.com|
        Subject:demo=20run|Date:July=205,=202005=203:44:08=20PM=20-0700;
      bh=MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTI=;
      b=dzdVyOfAKCdLXdJOc9G2q8LoXSlEniSbav+yuU4zGeeruD00lszZ
               VoG4ZHRNiYzR

}}}
MX Records are maintained on senders' DNS Servers for verification by recipient verifiers to verify DKIM signed headers.
Message Header is signed using senders private RSA key.
Verification requires query to sender's DNS server to get the public key.
[[ MX Records  | http://en.wikipedia.org/wiki/MX_record ]]
[[ Generate sample DNS Records at DNSWatch | http://www.dnswatch.info/dkim/create-dns-record ]]
----
{{{
  User -> MUA -> MSA -> MTA -> … -> MTA -> MDA ->-> MRA ->-> MUA -> User

Note: 
a) with the arrow styles changing to distinguish between push steps (->) and pull steps (->->).
b) Acronyms
MUA = Mail User Agent (thunderbird, outlook)
MSA = Mail Submission Agent
MTA = Mail Transfer Agent (sendmail)
MDA = Mail Delivery Agent (procmail, maildrop - filters spam)
MRA = Mail Retrieval Agent (fetchmail)
}}}
''[[ Email Agent (infrastructure) | http://en.wikipedia.org/wiki/E-mail_agent_%28infrastructure%29 ]]''
--
Quotes from ''[[ MailConcept at Mutt wiki | http://wiki.mutt.org/?MailConcept ]]''
''[[ Mail Layout Diagram at Mutt wiki | http://wiki.mutt.org/?MailConcept/Layout ]]''
''[[ Mail Processing Chain Diagram at Mutt wiki | http://wiki.mutt.org/?MailConcept/Flow ]]''
{{{
the client (MUA), the server that sends and queues mail (MTA), retrieval from remote mailboxes (MRA), local delivery and rewriting of messages (MDA), and remote submission of messages (MSA). 
}}}
----
!! MUA (thunderbird/outlook etc)
Software which sends/receives mail from its inbox.
POP3 - mails kept in local hard-disk
IMAP - mails kept in server and only displayed locally (except for archive purposes)
Exchange, Domino/Notes
----
!! base64 encoding MIME
Converts non-universal ASCII text into universal ASCII text fitting into 8 bits. 
It uses a-z, A-Z, 0-9, ", %, &, ', (, ), *, +, -, _ and , (the comma).
It uses 8*8 bits to store the values from 0-63. Hence the name.
{{{
#encode ascii to base64
$> base64    
Mary had a little lamb
^D
base64
TWFyeSBoYWQgYSBsaXR0bGUgbGFtYi4K
#Decode base64 to ascii
$> base64 -d
TWFyeSBoYWQgYSBsaXR0bGUgbGFtYi4K
^D
Mary had a little lamb
}}}
''[[ Howto Encode Decode base64 at linux command prompt | http://joysofprogramming.com/base64-encoding-decoding-terminal ]]''
''[[ intro to base64 at hcidata | http://www.hcidata.info/base64.htm ]]''
[[ base64 wiki at wikipedia  | http://en.wikipedia.org/wiki/Base64 ]]
----
!! Reference
) Hunt, C (2003). sendmail Cookbook. O'Reilly Media
) [[ Johnson, K (2000). Internet Email Protocols: A Developer's Guide. Addison-Wesley Professional | http://www.amazon.com/Internet-Email-Protocols-Developers-Guide/dp/0201432889/ref=pd_sim_b_1 ]]
) [[ Loshin, P (1999). Essential Email Standards: RFCs and Protocols Made Practical. John Wiley & Sons |  ]]
) [[ Rhoton, J (1999). Programmer's Guide to Internet Mail: SMTP, POP, IMAP, and LDAP. Elsevier. | http://www.amazon.com/Programmers-Guide-Internet-Mail-Technologies/dp/1555582125/ref=sr_1_1?s=books&ie=UTF8&qid=1334126591&sr=1-1 ]]
{{{
Pros:
Cons: Code in VB,
}}}
) [[ Wood, D (1999). Programming Internet Mail. O'Reilly | http://www.scribd.com/doc/63791580/Programming-Internet-Email ]] 
{{{
  Beginner book
  code in perl,java code and 
  conceptual info 
  easy to read
}}}
) WinNT Specific - Hughes, L (1998). Internet e-mail Protocols, Standards and Implementation. Artech House Publishers
----
''[[ Understand SNMP Traps at cisco | http://www.cisco.com/application/pdf/paws/7244/snmp_trap.pdf ]]''
[[ Tutorial on SNMP Traps at jfnnms | http://www.jffnms.org/docs/snmptraps.html ]]
''[[ snmptrap wiki at net-snmp.org | http://www.net-snmp.org/wiki/index.php/TUT:snmptrap ]]''
''[[ snmptranslate to translate snmp-talk to plain text | http://net-snmp.sourceforge.net/wiki/index.php/TUT:snmptranslate ]]''
----
!! SNMP agent/monitor
[[ Comparsion of network management systems at wikipedia | http://en.wikipedia.org/wiki/Network_monitoring_comparison ]]
----
!! Reference
''[[ SNMP FAQ | http://faqs.cs.uu.nl/na-dir/snmp-faq/idx.html ]]''
!!Unable to ssh to another machine
Check System->Administration->Firewall sshd is enabled or not. Checkmark ssh and apply changes.
----
Check for connectivity
{{{
$> ping <other-ip-number> 
}}}
----
Check the routing table
{{
$> /sbin/route -n 
        Kernel IP routing table
        Destination     Gateway         Genmask       Flags   Metric Ref    Use Iface
   a)* 192.168.2.0    0.0.0.0            255.255.255.0   U       1          0        0 eth0
   b)*  0.0.0.0              192.168.2.1  0.0.0.0               UG    0          0        0 eth0
*a) == IP address for eth0
*b) == Gateway for 192.168.2.* machines
}}}
----
Check if port 22 is open for ssh
{{{
$> nmap -T5 -sV <my-ip-addr>
     Starting Nmap 5.21 ( http://nmap.org ) at <timestamp>
     Nmap scan report for <my-ip-addr>
     Host is up (0.000021s latency).
     Not shown: 999 closed ports
     PORT   STATE SERVICE VERSION
     22/tcp open  ssh     OpenSSH 5.5 (protocol 2.0)

     Service detection performed. Please report any incorrect results at http://nmap.org/submit/ .
     Nmap done: 1 IP address (1 host up) scanned in 1.14 seconds
}}}
----
Check for sshd in memory
{{{
$> ps aux | grep sshd
}}}
----
Check sshd status
{{{
$> /sbin/service sshd status (may display status as stopped so do a restart)
}}}
----
Restart sshd 
{{{
$> /sbin/service sshd restart
}}}
----
[[SSH doesn't connect but Ping works | http://www.linuxforums.org/forum/networking/79687-ssh-doesnt-connect-ping-works.html]]
[[Configuring FC Linux Remote Access using SSH|http://www.techotopia.com/index.php/Configuring_Fedora_Linux_Remote_Access_using_SSH]]

[[Mini How-to : Configure ssh keys on Linux|http://nixcraft.com/getting-started-tutorials/429-mini-how-how-configure-ssh-keys-linux.html]]
[[Installing and Configuring SSH Server|http://www.nixtutor.com/linux/installing-and-configuring-an-ssh-server]]
[[Secure Remote Logins and File Copying|http://www.linuxhomenetworking.com/wiki/index.php/Quick_HOWTO_:_Ch17_:_Secure_Remote_Logins_and_File_Copying]]
[[SSH/SSH2 Setup from Source-RPM Guide|http://www.linuxhelp.net/guides/ssh]]
[[OpenSSH Wiki for Archlinux|https://wiki.archlinux.org/index.php/SSH]]
[[Mounting a Remote FileSystem with SSHFS|http://www.nixtutor.com/linux/setting-up-sshfs]]
[[Adding Port-knocking to your SSH Server for Extra Security|http://www.marksanborn.net/linux/add-port-knocking-to-ssh-for-extra-security]]
[[OpenSSH Project|http://www.openssh.org]]
[[Configuring SSH with PassPhrase | http://www.cyberciti.biz/faq/ssh-password-less-login-with-dsa-publickey-authentication]]
!!Videos:
@@''[[ STL Video Tutorial Series by Stephen Lavavej | http://www.eventhelix.com/realtimemantra/object_oriented/stl-tutorial.htm ]]''@@
[[Going Deep into STL with Stephen Lavavej (Video) | http://channel9.msdn.com/Shows/Going+Deep/C9-Lectures-Stephan-T-Lavavej-Standard-Template-Library-STL-2-of-n]]
[[ Inside STL with Stepan Lavavej (Video) | http://channel9.msdn.com/shows/Going+Deep/VC-10-Stephan-T-Lavavej-and-Damien-Watkins-Inside-STL/]]
[[C++0x Features in VC10 | http://blogs.msdn.com/b/vcblog/archive/2009/02/03/rvalue-references-c-0x-features-in-vc10-part-2.aspx]]
----
Found the below resources quite useful:  
May not be up-to-date but [[SGI Stl Programmer's Guide | http://www.sgi.com/tech/stl/stl_introduction.html ]]. 
It has a good conceptual overview of the STL library.
----
Source code navigation:  
I've used the [[ Free Evaluation Source Insight Code Browser | http://www.sourceinsight.com/eval.html ]] which allows to jump all around the source code from sgi's stl code.  
Alternatively you can try out 
[[LXR | http://lxr.linux.no/+trees]], 
[[ Doxygen | http://www.stack.nl/~dimitri/doxygen ]],
[[ Ctags | http://ctags.sourceforge.net ]]
----
See Also:  
[[ C++ Templates - The Complete Guide by Nicolai Josuttis | http://www.josuttis.com/tmplbook ]]
[[ C++ Template Meta-Programming - Concepts, Tools and Techniques | http://www.boostpro.com/mplbook ]]
[[ Inside the C++ Object Model by Stanley Lippman| http://my.safaribooksonline.com/book/programming/cplusplus/0201834545 ]]
!Security
@@__Superb Collection of Linux Security References from ~LinuxQuestions__@@: [[here|http://www.linuxquestions.org/questions/linux-security-4/security-references-45261]]
[[Linux Administrator's Security Guide (LASG)|http://www.seifried.org/lasg]]
[[ RedHat Securing and Optimizing Linux online version | http://www.faqs.org/docs/securing ]]
[[Securing & Optimizing Linux - The Ultimate Solution (PDF)| http://www.tldp.org/LDP/solrhe/Secur...ution-v2.0.pdf]]
[[Linux Security HOWTO|http://tldp.org/HOWTO/Security-HOWTO/index.html]]
[[Linux Security Quick Reference Guide (PDF)|http://www.tldp.org/REF/ls_quickref/QuickRefCard.pdf]]
[[Security Quick-Start HOWTO for Linux|http://tldp.org/HOWTO/Security-Quickstart-Redhat-HOWTO]]
[[TLPD Networking security HOWTO's|http://www.tldp.org/HOWTO/HOWTO-INDE...ml#NETSECURITY]]
[[ Free online linux security books at linuxtopia | http://www.linuxtopia.org/online_books/linux_security_index.html ]]
----
! Authentication
!! PAM
[[The Linux PAM System Administrator's Guide|http://www.kernel.org/pub/linux/libs/pam/Linux-PAM-html/Linux-PAM_SAG.html]]
----
!!Kerberos
[[Kerberos FAQ Index|http://www.faqs.org/faqs/kerberos-faq]]
----
[[Net-Admin-Cmd-Ref]]
!! Sed and AWK
[[ Sed in AWK blog (comparison of sed and awk one-liners) | http://awk.info/?doc/tip/sedInAwk.html ]]
----
!! AWK
[[ GNU AWK User Guide | http://www.gnu.org/software/gawk/manual/html_node/index.html#Top ]]
[[ comp.lang.awk FAQ | http://www.faqs.org/faqs/computer-lang/awk/faq/ ]]
[[ awk introduction | http://www.uga.edu/~ucns/wsg/unix/awk/ ]]
[[ awk links | http://www.dmoz.org/Computers/Programming/Languages/Awk/ ]]
[[ AWK wikibook | http://en.wikibooks.org/wiki/AWK ]]
----
!! Sed
[[ sed at wikipedia | http://en.wikipedia.org/wiki/Sed ]]
[[ sed cheatsheet quick reference card | http://devcheatsheet.com/tag/sed/ ]]
[[ Sed one liners at sed.sourceforge.net | http://sed.sourceforge.net/sed1line.txt ]]
[[ sed one liners at unix guide | http://www.unixguide.net/unix/sedoneliner.shtml ]]
[[ Sed'ers grab bag | http://sed.sourceforge.net/grabbag/seders ]]
[[ Sed FAQ | http://sed.sourceforge.net/sedfaq1.html ]]
[[ SED And Regular Expressions | http://www.rueytay.com.tw/~changyj/sed/ ]]
[[ Sed by example | http://www-106.ibm/com/developerworks/library/l-sed1.html ]]
[[ Sed wikibook | http://en.wikibooks.org/wiki/Sed ]]
[[ sed-users | http://groups.yahoo.com/group/sed-users/ ]]
[[ sed-users mailing list homepage | http://www.math.fu-berlin.de/user/guckes/sed/ ]]
----
!! Tutorial
''[[ Common configuration changes for sendmail | http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Deployment_Guide/s2-email-mta-sendmail.html#s3-email-mta-sendmail-changes ]]''
''[[ Deploying Sendmail at redhat docs | http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Deployment_Guide/s2-email-mta-sendmail.html ]]''
''[[ Quick Howto on Sendmail at LHN | http://www.linuxhomenetworking.com/wiki/index.php/Quick_HOWTO_:_Ch21_:_Configuring_Linux_Mail_Servers ]]''
----
Spot Notes
[[ LINKS - Resources on SW Maintenance at stackexchange.com | http://programmers.stackexchange.com/questions/73532/how-to-manage-maintenance ]]
''[[ Everything I can find about Software Maintenance | http://agile.dzone.com/news/everything-i-can-find-about ]]''
[[ PDF - 60 Years of Software Maintenance - Lessons Learned | www.inf.u-szeged.hu/icsm2005/tutorials/ZvegintzovN60Years.pdf ]]
''[[ LINKS - Software Maintenance posts at stackoverflow.com | http://stackoverflow.com/search?q=software+maintenance ]]''
''[[ Antipatterns - How To Write Unmaintainable Code by Roedy Green | http://www.thc.org/root/phun/unmaintain.html]]''
!! Software Archaeology
[[ Software Archaeology at wikipedia | http://en.wikipedia.org/wiki/Software_archaeology ]]
[[ Signature Survey: A Method for Browsing Unfamiliar Code by Ward Cunningham | http://c2.com/doc/SignatureSurvey/ ]]
[[ Agile Legacy System Analysis and Integration Modeling | http://www.agilemodeling.com/essays/agileLegacyIntegrationModeling.htm ]]
[[ PDF - Software Archeology: Modernizing Old Systems | http://adm.omg.org/docs/Software_Archeology_4-Mar-2009.pdf ]]
[[ Eating the IT Elephant: Moving from greenfield development to brownfield | http://books.google.com/books?id=GYvP0u2k2uMC&pg=PA93 ]]
[[ Beautiful Architecture | http://books.google.com/books?id=h34pwy005nYC&pg=PA29 ]]
[[ PDF - Andy Hunt and Dave Thomas, Software Archaeology | http://media.pragprog.com/articles/mar_02_archeology.pdf ]]
[[ FLOSS Weekly Podcast Interview with Ward Cunningham on zoom out to find patterns in code | http://twit.tv/floss27 ]]
[[ PDF - Seeking the Source: Software Source Code as a Social and Technical Artifact | http://www.dourish.com/publications/2005/DeSouzaFroehlichDourish-SeekingSource-GROUP.pdf ]]
[[ Software Archeology: What Is It and Why Should Java Developers Care? | http://java.sys-con.com/node/487614 ]]
[[ Raiders of the Lost Code | http://www.zdnetasia.com/raiders-of-the-lost-code-39199788.htm ]]
[[ Position Papers on Software Archaeology: Understanding Large Systems | http://www.visibleworkings.com/archeology/position-papers.html ]]
[[ PDF - How To Apply Software Archeology To Your Development Process by Michael Rozlog | http://www.eclipsecon.org/2008/sub/attachments/How_to_apply_Software_Archeology_to_your_development_process.pdf ]]
----
!! Reverse Engineering to Understand Software Systems
[[ Understanding systems using reverse engineering for software archaeology | http://www.imagix.com/links/reverse_engineering.html ]]
[[ PDF - Using Software Reverse Engineering to Understand a Program | http://reversingproject.info/ ]]
[[ Reverse Engineering CASE Tools | http://case-tools.org/reverse_engineering.html ]]
----
[[ SE Radio Episode 148: Software Archaeology with Dave Thomas | http://www.se-radio.net/2009/11/episode-148-software-archaeology-with-dave-thomas/ ]]
[[ Dave Thomas Software Archaeologist | http://pragdave.pragprog.com ]]
[[ Book: Code Reading – the Open Source Perspective | http://www.amazon.com/gp/product/0201799405/ ]]
[[ PDF Article: Software Archaeology | http://media.pragprog.com/articles/mar_02_archeology.pdf  ]]
--
''[[ Podcast with Grady Booch on Software Archaeology  | http://www.oopsla.org/oopsla2008/content_include/podcast/oopsla200808.mp3 ]]''
[[ SE Radio - Episode 130 - Code Visualization with Michele Lanza | http://www.se-radio.net/2009/03/episode-130-code-visualization-with-michele-lanza/ ]]
[[ Code Crawler reverse engineering tool - Michele Lanza | http://www.inf.usi.ch/faculty/lanza/codecrawler.html ]]
[[ Code Crawler Presentations - Michele Lanza | http://www.slideshare.net/michele.lanza ]]
----
!! ACE for Embedded Systems
''[[ ACE Subset for embedded systems | http://huihoo.org/ace_tao/ACE-5.2+TAO-1.2/ACE_wrappers/docs/ACE-subsets.html ]]''
''[[ Minimum TAO for embedded systems | http://www.dre.vanderbilt.edu/~schmidt/DOC_ROOT/TAO/docs/minimumTAO.html ]]''
[[ 'soreduce' tool for reducing ACE library memory footprint | http://www.dre.vanderbilt.edu/~schmidt/DOC_ROOT/ACE/apps/soreduce/README ]]
[[ Metrics for the latest footprint of ACE | http://www.dre.vanderbilt.edu/Stats/footprint.shtml ]]
''[[ stthreads event driven state machine (alternative to ACE Reactor) | http://state-threads.sourceforge.net/docs/faq.html#edsm ]]''
----
!! Source Code Browsing Tools
!! Command-Line utilities
[[ Exuberant Ctags | http://ctags.sourceforge.net/ ]]
[[ ack better than grep | http://betterthangrep.com/ ]]
[[ idutils | http://www.gnu.org/software/idutils/ ]]
[[ CScope website | http://cscope.sourceforge.net ]]
[[ CScope with Vim Tutorial | http://cscope.sourceforge.net/cscope_vim_tutorial.html ]]
[[ SilentBob | http://silentbob.sourceforge.net/ ]]
[[ Download SilentBob | http://sourceforge.net/projects/silentbob/ ]]
[[ Using CScope and SilentBob to browse source code | http://www.linux.com/archive/feature/114237 ]]
[[ Cbrowser GUI front-end for CScope | http://cbrowser.sourceforge.net ]]
[[ KScope KDE GUI CScope | http://sourceforge.net/projects/kscope/ ]]
[[ Softpanorama collection of articles on find, grep, xargs | http://www.softpanorama.org/Tools/find.shtml ]]
----
!!! Free
[[ Source Navigator GUI | http://sourcenav.sourceforge.net/ ]]
[[ OpenGrok | http://hub.opensolaris.org/bin/view/Project+opengrok/WebHome ]]
[[ Lucene | http://lucene.apache.org/ ]]
[[ MXR - LXR for Mozilla | http://mxr.mozilla.org/ ]]
--
[[ Webglimpse uses Glimpse source code search engine used by LXR | http://webglimpse.net/download.php ]]
[[ Glimpse website | http://glimpse.cs.arizona.edu/ ]]
[[ Glimpse src download | http://www.ibiblio.org/pub/Linux/utils/text/glimpse-3.6.src.tgz ]]
[[ Glimpse download | ftp://ftp.cs.arizona.edu/glimpse ]]
''[[ Glimpse Survey with detailed notes  | http://www.ncsi.iisc.ernet.in/raja/netlis/wise/glimpse/glimpse.htm ]]''
----
!!! Commercial
[[ SD Source Code Search Engine | http://www.semanticdesigns.com/Products/SearchEngine/ ]]
[[ Understand source code browser | http://www.scitools.com/ ]]
----
!! Reference
''[[ Web interface for git repositories | http://stackoverflow.com/questions/438163/whats-the-best-web-interface-for-git-repositories ]]''
[[ Source code browsing tools for C and C++ at stackoverflow | http://stackoverflow.com/questions/100143/what-tool-do-you-use-to-index-c-c-code ]]
[[ Indexing and presenting source code at stackoverflow | http://stackoverflow.com/questions/531515/indexing-and-presenting-source-code ]]
[[ Tools for understanding C source code at stackoverflow | http://stackoverflow.com/questions/4139800/tools-for-understanding-c-code ]]
[[ Good source code search engine at stackoverflow | http://stackoverflow.com/questions/106419/whats-a-good-source-code-search-engine ]]
[[ Source code analysis discussion at stackoverflow | http://stackoverflow.com/questions/205348/source-code-analysis-what-do-you-do ]]
''[[ Comparison of Text Editors at wikipedia | http://en.wikipedia.org/wiki/Comparison_of_text_editors#Programming_features ]]''
----
!! Installation
{{{
$> apt-get install squid3
$> apt-get install squid3-dbg
$> vi /usr/share/doc/squid3-common/QUICKSTART
$> 
}}}
[[ Squid on Debian | http://wiki.squid-cache.org/KnowledgeBase/Debian ]]
[[ Squid Wiki | http://wiki.squid-cache.org ]]
[[ SquidFAQ | http://wiki.squid-cache.org/SquidFaq ]]
''[[ SquidFAQ on ConfiguringSquid | http://wiki.squid-cache.org/SquidFaq/ConfiguringSquid ]]''
''[[ Quick HOWTO : Ch32 : Controlling Web Access with Squid | http://www.linuxhomenetworking.com/wiki/index.php/Quick_HOWTO_:_Ch32_:_Controlling_Web_Access_with_Squid ]]''
''[[ Transparent Proxy with Linux and Squid mini-HOWTO by Daniel Kiracofe | http://tldp.org/HOWTO/TransparentProxy.html ]]''
----
!! FTP proxy via squid
[[ Squid proxy and ftp server config1 | http://www.linuxsolved.com/forums/index.php?topic=1052.0 ]]
[[ Squid proxy and ftp server config2 | http://nixcraft.com/linux-software/384-ftp-through-squid.html ]]
[[ Squid proxy and ftp server config3 | http://www.linuxquestions.org/questions/linux-networking-3/ftp-server-access-through-squid-proxy-not-working-315684 ]]
----
Connect the dots: All experiences that you intuitively know are important will one day come together
Love Your Work: Bricks and heads, rejection and enduring love.
Death: Is what you do what you would do on your last living day. Keep searching, don't settle till you find what you love.
Death is a Clearing house for change. 
World Catalog/Steve Jobs: ~Stay-Hungry,Stay-Foolish.
[[Steve Jobs TED How to Live as you Die|http://www.ted.com/talks/steve_jobs_how_to_live_before_you_die.html]]
!! Svn merge using Meld
''[[ Using Meld as your SVN merge utility | http://codingundertheinfluence.blogspot.in/2010/01/using-meld-as-your-external-diff3.html ]]''
''[[ Using Meld with SVN | http://berikontech.blogspot.in/2010/11/merging-svn-using-meld.html ]]''
''[[ Using External Diff and Merge Tools at svn book | http://svnbook.red-bean.com/en/1.5/svn.advanced.externaldifftools.html ]]''
----
!!SVN Login
Enter username and password
''[[ SVN how to encrypt your password (only from svn 1.6 onwards) | http://stackoverflow.com/questions/3824513/svn-encrypted-password-store ]]''
''[[ SVN encrypted password feature new to svn 1.6 onwards | http://blogs.collab.net/subversion/2009/07/subversion-16-security-improvements ]]''
----
!!Checkout source code 
{{{
$> svn co <source-code folder>

#Example: 
$> svn co http://svn.example.com/repos/calc/trunk   #gets you only the current head (RIGHT)
$> svn co http://svn.example.com/repos/calc           # gets you ALL the versions that ever were in calc project (WRONG)
}}}
----
SVN commands are of 2 types:
#local commands which operate on the local repository (.svn) and working-copy
#global commands which operate on global repository and local repository
----
!Local Repository Commands
!! Tree modifying commands 
//Note: These commands only modify local repository and need 'svn commit' to reach global repository)//
{{{
$> svn add <file|dir>
$> svn delete <file|dir>
$> svn copy <from> <to>          #copies all the version logs also
$> svn move <from> <to>         #equivalent to svn copy + svn delete combination
$> svn mkdir <newdir>

$> svn revert <filename>           #(undo command) reverts to previous condition of filename
}}}
----
!! Identifying your local changes 
View diff between __working copy and ''local repository''__
{{{
$> cd <svn-root-folder>
#compares working copy with local repository
$> svn status           
  A=Addition, C=Conflict, D=Deletion, M=Modification, ?=not under version control
$> svn diff
}}}
!! unified diff output for individual files using normal diff command
{{{
$> diff -u original newfile
}}}
[[ 'svn status' command reference in SVN (1.4) | http://svnbook.red-bean.com/en/1.4/svn.ref.svn.c.status.html ]]
----
!Global Repository Commands
!! Identifying global changes (i.e. contributions by other developers)
{{{
$> svn status -u -v      #compares working copy with global repository with 1 extra output flag - '*' = Updates in the global repository
$> svn log -r COMMITTED [path/to/file]      #display log for commits (optionally show commits to file)
$> svn log -r <end-revision-no>:<start-revision-no>     #shows changes between given revision-no range
$> svn diff -c <revision-no>    #show changes between given revision-no and its immediate previous revision
$> svn blame <-r> <-v> <filename>   #Show version-number author for each line of the file. Access global repository

NOTE: Use
$> svn help log             #option help for 'log' command
  -r [--revision] ARG      : ARG (some commands also take ARG1:ARG2 range)
                                    A revision argument can be one of:
                                    NUMBER       revision number
                                    '{' DATE '}' revision at start of the date
                                    'HEAD'       latest in repository
                                    'BASE'       base rev of item's working copy
                                    'COMMITTED'  last commit at or before BASE
                                    'PREV'       revision just before COMMITTED
  -c [--change] ARG        : the change made in revision ARG
  -q [--quiet]             : print nothing, or only summary information
  -v [--verbose]           : print extra information
  -g [--use-merge-history] : use/display additional information from merge history
  --stop-on-copy           : do not cross copies while traversing history
  --xml --with-all-revprops  : retrieve all revision properties (useful for scripting search with xpath)
----
$> svn help diff
    -x --unified|--ignore-space-change|--ignore-all-space|--ignore-eol-style|--show-c-function
    --depth empty|files|immediates|infinity
    --summarize
    --xml   #outputs logs in xml. This allows searching for 'fileattributes' as in svn-grep etc.

# Editing properties on file(s)
$> svn proplist --verbose file-list
$> svn propset <property-name> '<property-value>' file-list
$> svn propdel <property-name> file-list
}}}
''[[ svn 1.4 proplist | http://svnbook.red-bean.com/en/1.4/svn.advanced.props.html ]]''
''[[ svngrep - grep svn log files for string and copy relevant files to a folder | http://blog.kotowicz.net/2010/05/grep-subversion-log-messages-with-svn.html ]]''
''[[ svngrep download page | https://github.com/koto/svn-tools/blob/master/svn-grep ]]''
----
!Examining history of changes
''[[ Examining History with svn 1.4 | http://svnbook.red-bean.com/en/1.4/svn.tour.history.html ]]''
--
!! Step 1 identify the file(s) with changes (addition)
{{{
$> grep -snR 'search-string' src/* 
}}}
----
!! Step2 get the revision number of the change
{{{
$> svn blame filename | grep 'search-string'    #Get committer/modifier name AND source code line
<revision-no>   <line(s) containing search-string>
}}}
----
!! Step3 Identify bug-number, revisions (before/after change), committer
{{{
$> svn log [--verbose] <filename> or <directory-name>   #use verbose only if you need ALL details for checkins 
<revision-number> <committer> <date-time> 
<bug-number>
<bug-fix-info>
}}}
----
!! Step4 Diffs of exact changes across revisions
{{{
$> svn diff -r <before-revision:after-revision> <filename> | grep 'search-string'
 (OR)
$> svn diff -c <after-revision> <filename>        #Equivalent to giving 'svn diff -r before:after'
     -   old-source line(s)
     +   new-line source line(s)
}}}
----
!! Step5 Diff of all changes from given revision to now
{{{
$>svn diff -r <revision-no> <filename>          #compares given revision-no with current-working-copy
}}}
----
!! Step6 Display file in a particular revision
{{{
$> svn cat -r <revision-no> <filename> | tee filename.revision-no
}}}
----
!! Step7 See list of files in directory for a given revision-no.
{{{
$> svn list -r <revision-no>
}}}
----
See Also:
{{{
$> svn export <repository URL> -r <revision-no>         #exports current dir without the .svn files
$> cd dir; svn checkout -r <revision-no>            #checkout <dir> to given revision-no
}}}
----
!!Updating working copy
{{{
$> cd source_code_folder
$> svn update
}}}
----
!! Conflicting changes
{{{
$> cd source_code_folder
$> svn update
   C  common.txt
#In case of Conflicts you end up with 4 files 
* common.txt.mine - my file before update screwed things up
* common.txt - file with the merged conflicts
* common.txt.r1 - file before other users commit
* common.txt.r2 - file after the other users commit
----
Merge the conflict by hand or discard changes from either of the conflicts
$> svn revert common.txt      #revert to before the conflicts = 'start from scratch'
$> cp common.txt.r2 common.txt   #accept other users commit
$> cp common.txt.mine common.txt  #accept my changes
----
$> svn resolved common.txt        #used after merging or discarding any one of the conflicting temporary files
}}}
----
!! Commiting your changes to repository
{{{
$> cd folder-to-commit
$> svn commit [-F commit.msg] [-m "commit message]
}}}
----
!! SVN (1.4) howtos
''[[ SVN Tour - Basic usage of SVN (1.4) | http://svnbook.red-bean.com/en/1.4/svn.tour.html ]]''
#''[[ Examining history logs in SVN (1.4)  | http://svnbook.red-bean.com/en/1.4/svn.tour.history.html ]]''
#''[[ CVS Users hold that 'svn update' or Overview of  your Changes with 'svn status' in SVN (1.4) | http://svnbook.red-bean.com/en/1.4/svn.tour.cycle.html#svn.tour.cycle.examine.status ]]''
#''[[ SVN (1.4) for CVS users | http://svnbook.red-bean.com/en/1.4/svn.forcvs.html ]]''
#''[[ Using Branches in SVN(1.4) | http://svnbook.red-bean.com/en/1.4/svn.branchmerge.using.html ]]'
''[[CVS to SVN commands cross-reference | http://wiki.gnucash.org/wiki/Subversion#CVS_to_SVN_cross_reference ]]''
#''[[ Using svn blame in SVN (1.4) | http://svnbook.red-bean.com/en/1.4/svn.ref.svn.c.blame.html ]]''
#[[ Using svn diff across 2 different repositories at stackoverflow | http://stackoverflow.com/questions/1221215/svn-diff-across-2-different-repositories ]]
#''[[Difference across revisions | http://www.learnosity.com/techblog/index.cfm/2009/1/16/SVN--Get-list-of-files-changed-between-revisions ]]''
----
[[ How to 'undo' a commit in SVN (1.4) | http://svnbook.red-bean.com/en/1.4/svn.branchmerge.commonuses.html#svn.branchmerge.commonuses.undo ]]
[[ Resurrecting deleted items in SVN (1.4) | http://svnbook.red-bean.com/en/1.4/svn.branchmerge.commonuses.html#svn.branchmerge.commonuses.resurrect ]]
[[ Customizing your SVN (1.4) experience | http://svnbook.red-bean.com/en/1.4/svn.customization.html ]]
[[ Quick start Guide to SVN (1.4) | http://svnbook.red-bean.com/en/1.4/svn.intro.html ]]
----
!! SVN internals
[[ Repository Layer of SVN (1.4) | http://svnbook.red-bean.com/en/1.4/svn.developer.layerlib.html#svn.developer.layerlib.repos ]]
[[ Inside the Working Copy in SVN (1.4) | http://svnbook.red-bean.com/en/1.4/svn.developer.insidewc.html ]]
----
!Reference:
[[RabbitVCS GUI client for SVN in linux | http://wiki.rabbitvcs.org/wiki/ ]]
[[SVN FAQ|http://subversion.apache.org/faq.html]]
[[ SVN 1.4's advanced property settings | http://svnbook.red-bean.com/en/1.4/svn.advanced.props.html ]]
----
!! SVN version 1.5
[[Version Control with Subversion (1.5) Online HTML book|http://svnbook.red-bean.com/en/1.5/index.html]]
[[Version Control with Subversion (1.5) (PDF)|http://svnbook.red-bean.com/en/1.5/svn-book.pdf]]
----
!Basic
''[[ Excellent - Installing and Configuring Software and Services on Linux | http://www.linuxhomenetworking.com/wiki/index.php/Quick_HOWTO_:_Ch06_:_Installing_Linux_Software ]]''
''[[ Excellent - The Linux Boot Process and Configuring Services | http://www.linuxhomenetworking.com/wiki/index.php/Quick_HOWTO_:_Ch07_:_The_Linux_Boot_Process]]''
''[[ Fedora Software Maintenance Guide | http://docs.fedoraproject.org/en-US/Fedora/14/html/Software_Management_Guide/index.html ]]''
''[[ PDF - Debian Administrator's Handbook | http://debian-handbook.info/download/stable/debian-handbook.pdf ]]''
''[[ Online - Debian Administrator's Handbook | http://debian-handbook.info/browse/stable ]]''
--
''[[ Configuring Linux Users and sudo | http://www.linuxhomenetworking.com/wiki/index.php/Quick_HOWTO_:_Ch09_:_Linux_Users_and_Sudo]]''
''[[ Quick and Dirty Guide to Linux File Permissions | http://www.linuxquestions.org/linux/answers/Security/Quick_and_Dirty_Guide_to_Linux_File_Permissions ]]''
''[[ How to gather system information | http://www.cyberciti.biz/tips/linux-command-to-gathers-up-information-about-a-linux-system.html ]]''
[[ Howto Troubleshoot - Syslog | http://www.linuxhomenetworking.com/wiki/index.php/Quick_HOWTO_:_Ch05_:_Troubleshooting_Linux_with_syslog]]
[[ Howto install Linux Software | http://www.linuxhomenetworking.com/wiki/index.php/Quick_HOWTO_:_Ch06_:_Installing_Linux_Software]]
[[ Open source software installation wiki | http://www.installationwiki.org/InstallationWiki_Home ]]
''[[ How to create iso image from CD using linux dd command | http://www.cyberciti.biz/tips/linux-creating-cd-rom-iso-image.html ]]''
''[[ LinuxQuestions Wiki (LQWiki) | http://wiki.linuxquestions.org/wiki/Main_Page ]]''
----
!! Look inside an ISO file 
How to mount/unmount an iso file:
{{{
$> su -
$> mkdir /tmp/mnt-iso
$> mount -o loop /path/to/iso/my-test.iso /tmp/mnt-iso
$> ls /tmp/mnt-iso
$> umount /tmp/mnt-iso
}}}
----
!Intermediate
Automatically run a command at a specific time using the 'at' command
{{{
#Get current terminal
$> tty
/dev/pts/11

#Add job to queue and attach to terminal above
$> at now + 4 hours
at> cd /home/user/src/; make all > /dev/pts/11
^D
job 1 at <date> <time>

#View queued jobs
$> atq
#Displays list of queued jobs in following format:
<job-id> <date> <time> <queue> <username>
}}}
''[[ Survival Guide to Cron and related utilities | http://www.zytrax.com/tech/survival/cron.html ]]''
----
!! Lookup processes for a particular user
{{{
#Truncate long lines to max 120 characters
$> ps -eaf | grep USERNAME | cut -c1-120 | egrep -v 'sshd|-bash'
}}}
----
!! Backup a remote directory or folder recursively
{{{
$> mkdir ~/backup-remote-machine
$> scp -rp user@remote-machine:/path/to/dir .
}}}
----
!! Setting the prompt to point to the current version of your source code directory
Tired of typing which version of the source tree you're in by typing pwd everytime?
Just change your prompt to display this everytime instead using the PROMPT_COMMAND variable.
{{{
$> vi ~/.bashrc
#Using echo -n keeps the output of PROMPT_COMMAND i.e. the version-number on the same line as the $PS1 prompt
export PROMPT_COMMAND="echo -n $(pwd | grep -o 'ver-[0-9]-[0-9]')"

   OR
$> vi ~/.bashrc
export PS1="[\$(pwd | grep -o 'ver-[0-9]-[0-9]')] [\u@\h:\W]\$"
#Prompt appears like this
[ver-2-5][me@machine1:/home/me]$>
}}}
''[[ Take control of your bash prompt at thegeekstuff.com | http://www.thegeekstuff.com/2008/09/bash-shell-take-control-of-ps1-ps2-ps3-ps4-and-prompt_command ]]''
''[[ Executing External commands in the prompt at Bash prompt howto | http://tldp.yolinux.com/HOWTO/Bash-Prompt-HOWTO.html#AEN279 ]]''
--
Bind shortcut key to clear screen using inputrc for bind library
{{{
$> vi ~/.inputrc
"\C-l":"clear-screen"
}}}
''[[ bash commandline tips and tricks at commandlinefu | http://www.commandlinefu.com/commands/browse ]]''
----
!! Brasero CD/DVD Burner
''[[ List of Fedora CD/DVD Burning Software | http://www.linuxsolutions.fr/upgrading-fedora-cd-dvd-burning ]]''
''[[ How to verify the integrity of an ISO or burnt CD/DVD on linux | http://g33kgrrl.wordpress.com/2009/03/05/verify-the-integrity-of-an-iso-or-burned-cd/ ]]''
''[[ Prevent Brasero from auto-starting with a Blank CD/DVD | http://askubuntu.com/questions/8854/how-can-i-disable-the-autostart-of-brasero-when-i-insert-a-blank-cd-dvd ]]''
''[[ Brasero - disable post burning image checksum | http://ubuntugenius.wordpress.com/2010/11/15/disable-annoying-creating-image-checksum-in-brasero-after-ubuntu-10-10-upgrade ]]''
''[[ Brasero stuck at - creating image checksum | http://ubuntuforums.org/showthread.php?t=1596842 ]]''
----
!! LiveUSB (installing iso images from USB)
''[[ How to install linux or other iso's from a LiveUSB | http://g33kgrrl.wordpress.com/2009/06/22/make-a-gnu-linux-liveusb ]]''
----
!Advanced
[[Linux System Administrator's Guide (PDF) |http://www.ibiblio.org/pub/Linux/docs/LDP/system-admin-guide/sag.pdf]]
!! Redirect output of build/make into a log file
{{{
#Redirect stdout to log file and THEN redirect stderr to stdout
$> make > mylogfile.txt 2>&1
}}}
----
!! Command line shortcuts
Nifty Tools
{{{
screen
ssh
rsync
nmap
nc
telnet
strace
dmidecode
ccze to watch logs in color

pv command (pipe viewer)
$ pv access.log | gzip > access.log.gz
611MB 0:00:11 [58.3MB/s] [=>      ] 15% ETA 0:00:59
}}}
[[ Screen Manual | http://www.gnu.org/software/screen/manual/html_node/index.html ]]
==================
!! Command line shortcuts
One-liners
{{{
alias ls="ls --color=auto"

tail -F /var/log/messages
tail -F /var/log/dmesg
tail -F /var/log/kern.log

chmod <user>:<group> filename

#Change to previous directory
cd -

#Push/Pop directory
pushd, popd
}}}
command line magic
{{{
ALT-. (ESC+. in some terminals) copies last used argument (super-useful)

CTRL-R search in history
CTRL-L clear terminal (like clear command but faster)

#Runs current command and shows next commonly used command in a sequence like ./configure, make, make install
Ctrl-O 

CTRL-W deletes word
ALT-B (ESC+B in some terminals) move backward a word
ALT-F (ESC+F in some terminals) move forward a word
CTRL-E jump to EOL
CTRL-A jump to BOL

#repeats last command-line beginning with foo
$> !foo
}}}
''[[ http://www.commandlinefu.com | http://www.commandlinefu.com/ ]]''
----
!! Find largest files and folders
{{{
$> du -xak .|sort -n|tail -50
}}}
----
!! How to check if linux is 64bit or 32bit
{{{
$> getconf WORD_BIT
32       #32 bit
}}}
----
!! Continuously check for and kill a process by name
{{{
$> (while(true); do killall -9 MYCMD 2>/dev/null ; sleep 1; done) &
}}}
----
!! Creating a iso image of an installable CD/DVD
{{{
#First need to unmount the  CD/DVD if it's already mounted
$> umount /dev/cdrom

#Creating the iso image from CD/DVD
$> dd if=/dev/cdrom of=/home/user/setups/cdimg1.iso

#Mounting the iso image using loopback device
mkdir -p /mnt/isoimage
mount -o loop -t iso9660 /home/user/setups/cdimg1.iso /mnt/isoimage

#Unmounting the iso image
umount -lf /mnt/isoimage
}}}
[[ Howto create an iso image from a CD or DVD | http://www.cyberciti.biz/tips/linux-creating-cd-rom-iso-image.html ]]
[[ Howto create and use iso images from CD or DVD | http://kevin.vanzonneveld.net/techblog/article/make_iso_images_on_linux/ ]]
----
!! Managing file and directory access permissions for user, group and others
''[[ YoLinux Tutorial on Managing Groups and file directory permissions | http://www.yolinux.com/TUTORIALS/LinuxTutorialManagingGroups.html ]]''
''[[ Sharing files with others at linux cookbook | http://dsl.org/cookbook/cookbook_9.html#SEC124 ]]''
''[[ Restricting user permissions at yolinux | http://www.yolinux.com/TUTORIALS/LinuxTutorialSysAdmin.html#RESTRICTUSERS ]]''
----
!! Backup fileswith access permissions using tar
{{{
tar -zcvpPf backup.tar.gz -Tfilelist   #Create the backup with filelist containing absolute path to files
tar -ztf backup.tar.gz                    #List backup contents
tar -zdf backup.tar.gz                   #Compare backup to files on filesystem
}}}
----
{{{
<Function>
-c, --create   #create a new archive
-x, --extract, --get    #extract files from an archive
-t, --list #list the contents of an archive
-u, --update   #only append files that are newer than copy in archive
-d, --diff, --compare    #find differences between archive and file system
---------
<Other options>
-C, --directory DIR        #change to directory DIR
-f, --file=ARCHIVE        #use archive file or device ARCHIVE
-P, --absolute-paths     #don't strip leading `/'s from file names
-p, --preserve-permissions  #extract all protection information
-T, --files-from=F   #get names to extract or create from file F
-v, --verbose
-h, --dereference   #don't dump symlinks; dump the files they point to
}}}
----
!! Zipping and Unzipping rar files on Linux
[[ Open or extract rar files under linux unix | http://www.cyberciti.biz/faq/open-rar-file-or-extract-rar-files-under-linux-or-unix/ ]]
[[ 'unrar'-ing .rar files on linux | http://www.linux.com/learn/tutorials/442423-handling-rar-and-7-zip-archives-in-linux ]]
----
!! Running a cron job
{{{
$> vi /etc/cron.daily/
#clear apache logs at one minute past midnight (00:01) of every day of the month, of every day of the week
1 0 * * *  printf > /www/apache/logs/error_log           
}}}
[[ Cron at wikipedia | http://en.wikipedia.org/wiki/Cron ]]
----
!! Printing full or absolute path using find command
{{{
find `pwd -P` -name <search-filename>
}}}
Note:If you give the find command an absolute path, it gives the results with an absolute path.
[[ How can I list files with their absolute path using find | http://stackoverflow.com/questions/246215/how-can-i-list-files-with-their-absolute-path-in-linux ]]
----
!! Finding large files on your harddisk
{{{
du -H . | egrep 'MB|GB' | sort -n
}}}
----
!! Extract pid or command line parameters for a program name on command prompt
{{{
$> ps aux | grep firefox | awk '{ print $2 }'      #outputs the 2nd column of the ps output 
$> ps aux | grep firefox | awk '{ print $NF }'   #outputs the last column of the ps output
}}}
----
!! Create/extract a zip file
{{{
#Recurse through tst directory and create tst.zip
$> zip -r tst.zip tst/
$> unzip -d tst tst.zip
}}}
----
!! Searching by file-type and containing search-string text
{{{
$> file * | grep -i python | cut -d: -f1 | xargs --replace=ABC grep -Hn <search-string> ABC
}}}
----
!! Directory listing (sorted by extension, filesize (desc) )
{{{
# -S==size, -X==extension, -r==desc-sort
$>  ls -al -S -X -r | egrep -v '.svn|.cvsignore'        
}}}
----
!!Watching for file changes (creation, modification, deletion)
{{{
#watch these files every 1sec and show diff between iterations
watch -n1 --differences=cumulative "ls -al /home/self/changing-file.txt /etc/abc.conf"

#watch for execution of a certain command or script to display command line parameters
watch -n1 'ps -eafx | grep <mycmd>'

#watch these files every 1sec and show diff between iterations
$> watch -n1 -d "ls -al /tmp/*.log /tmp/.flag_file "

#Bash one-liner to continuously watch for a running process
$> while true; do ps -eafx | grep <mycmd> ; done
}}}
[[ Watch command at wikipedia | http://en.wikipedia.org/wiki/Watch_%28Unix%29 ]]
----
!! Top command
{{{
$> top -b -p pid > top.log  #Capture top output for a given pid
$> top -u <username>  #Display username's process in top
$> top -p <pid-list>       #Display only given pids
$> top -n 3                   #Display top for 3 iterations
$> top -b -n 1  > top.log # Capture top output in batch mode
----
Commands available in Top display
<space-bar> - change refresh rate
M - sort by memory usage
C - sort by CPU usage (default)
O - select column to sort by any column
R - sort in reverse order of current display
W - write top settings to ~/.toprc file

k - kill task by pid
z or b - highlight running processes
c - show command line params and absolute path of processes
u - display <username's> processes only
}}}
Notes excerpted from 
[[ Useful options for Top Command in Unix | http://www.thegeekstuff.com/2010/01/15-practical-unix-linux-top-command-examples ]]
[[ Capture Top Command output in a text file | http://www.thegeekstuff.com/2009/10/how-to-capture-unix-top-command-output-to-a-file-in-readable-format ]]
----
!Vim file browser
{{{
$> vim /path/to/dir/
}}}
Vim commands
{{{
p - preview a file from dir browser
Esc:Vex - split vertical and explore
'-' -  go Up to parent directory
}}}
[[ Using vim as a file browser | http://vim.runpaint.org/other-uses-vim/browsing-directories ]]
----
! View a folder structure with colors on 
{{{
$> ls -R --color=always | less -R
}}}
[[ Viewing color highlighting with less command | http://superuser.com/questions/36022/less-and-grep-color ]]
!Search using find command
{{{
#Search for .sh files excluding a particular directory
$> find . -path <exclude-dir> -prune -o -print | egrep -i '*\.sh$'

# uses the form ( name1 OR name2 OR name3 )
$> $ find . \( -name '*.sh' -o -name '*.pl' -o -name '*.c' \) -exec egrep 'abc|def|ghi' {} \;

# Search for function definition myFunction in the xslt files
$> find . -name '*.xsl' | xargs -I ABC egrep -nH "name=\"<func:function name=\"myFunction" ABC

#Search for string ABC and exclude '.svn' (directory or file) and 'external' and 'build' folders
$> find . -path BUILD -prune-o -path external -prune -o -wholename '*.svn*' -prune -o -exec grep -Iw ABC {} +
Notes: -o is OR operation (use OR to avoid boolean short-circuit)
a) exclude folder BUILD => -path BUILD -prune 
b) exclude folder external => -path external -prune
c) exclude any file or folder with .svn in it => -wholename '*.svn*' -prune
d) execute command in batch mode on a set of files => -exec cmdline {} +  #use -exec cmdline {} \; to run it on individual files
e) grep should ignore binary files and do 'word' search => grep -Iw

#Debugging find executions to speed up the query
$> find -D rates . -name test 
}}}
''[[ Find recipes | http://danielmiessler.com/study/find ]]''
''[[ How can I get find to ignore .svn directory at stackoverflow | http://stackoverflow.com/questions/2314643/how-can-i-get-find-to-ignore-svn-directories ]]''
[[ Compose your find query by entering your settings in a GUI form | http://find.unixpin.com ]]
[[ find mini-tutorial | http://www.softpanorama.org/Tools/Find/find_mini_tutorial.shtml ]]
[[ Typical errors in using find | http://www.softpanorama.org/Tools/Find/typical_errors_in_using_find.shtml ]]
[[ Advanced techniques for using find command | http://www.ibm.com/developerworks/aix/library/au-unix-find.html ]]
[[ Softpanorama collection of articles on using find, grep, xargs | http://www.softpanorama.org/Tools/find.shtml ]]
----
! Search using grep command
{{{
#Shows only text matching the search pattern (not the line containing the pattern)
$> egrep -o 'pattern' input.txt 
}}}
[[ grep mini tutorial from softpanorama | http://www.softpanorama.org/Tools/grep.shtml ]]
----
! Using xargs command
[[ xargs man page | http://www2.research.att.com/~gsf/man/man1/xargs.html ]]
[[ xargs tutorial from softpanorama | http://www.softpanorama.org/Tools/xargs.shtml ]]
----
!Find Disk Footprint for a directory
{{{
# Display sub-totals for each sub-directory
$> du -h <dir>
# Summary of total directory
$> du -schS <dir>
# Display Free Disk Space on partitions in MB, GB
$> df --si
}}}
----
!Mouse copy-paste on terminal
Left Button: Select text
Middle Button: Paste text
Right Button: Extend the selection
{{{
$> su -
$> yum install gpm
$> /etc/init.d/gpm start
$> /etc/init.d/gpm stop
}}}
[[Howto Configure Mouse copy-paste on terminal|http://www.cyberciti.biz/tips/howto-linux-configure-the-mouse-at-a-text-based-terminal-for-copy-and-paste-operation.html]]
[[ Discussion on Best Clipboard manager for linux  | http://www.webupd8.org/2010/08/best-linux-clipboard-manager.html ]]
----
!Avoid no-activity timeout based logout on a terminal:
{{{
#Increase timeout based logout
$> export TMOUT=60

#Manually lock your system
$> yum install vlock
$> vlock
}}}
[[Timeout based logout in Linux|http://www.cyberciti.biz/tips/increase-security-by-locking-admin-screenconsole.html]]
----
!Searching for commands and files:
!!Building search databases:
{{{
$> updatedb (updates the db used by 'locate' command)
$> mandb (updates the db used by the 'man', 'whatis', 'apropos' command)
$> makewhatis (updates the db used by 'apropos' command) 
}}}
----
!!Locating Useful Files and Information
{{{
$> grep <pattern> <filename>
$> find <path> -name <filename>
$> locate <filename>
$> apropos <search-term>
$> which <cmd-name>
$> man <section-number> <topic-name>
}}}
----
!Mounted filesystems:
!!Statically mounted file-systems using config files:
{{{
$> vi /etc/mtab
$> vi /etc/fstab
}}}
[[Introduction to fstab|http://www.nixtutor.com/miscellaneous/introduction-to-fstab]]
----
!!Dynamically Re-mounting read-only directory as read-write:  
{{{
$> mount -o remount -o rw /mydirectory
}}}
----
!Reference
''[[ Linux system administration and configuration Tutorial at YoLinux | http://www.yolinux.com/TUTORIALS/LinuxTutorialSysAdmin.html ]]''
''[[ Monitoring System performance with linux commands | http://linux.101hacks.com/monitoring-performance ]]''
''[[ Howto use Linux System commands at Linux101hacks | http://linux.101hacks.com/toc ]]''
''[[Softpanorama collection of tutorials on Unix commands | http://www.softpanorama.org/Tools/index.shtml ]]''
''[[ Excellent howto on using syslog from linuxhomenetworking | http://www.linuxhomenetworking.com/wiki/index.php/Quick_HOWTO_:_Ch05_:_Troubleshooting_Linux_with_syslog ]]''
----
!!Vim syntax highlighting and colorizing
{{{
$> vi logsyntax.vim
:syn match myDebug /^DBG:/ nextgroup=myProcID
:syn match myProcID /\d\+:/ nextgroup=myFile
:syn match myFile /\S\+\.[ch]pp:/ nextgroup=myLineNum
:syn match myLineNum /\d\+:/ nextgroup=myFunction
:syn match myFunction /\s\+:/ nextgroup=myMessage
:syn match myMessage  /.*$/

":hi def myDebug guifg=blue
":hi def myProcID guifg=green
":hi def myFile guifg=yellow
":hi def myLineNum guifg=lightblue
":hi def myFunction guifg=red
":hi def myMessage guifg=lightgreen

:hi link myDebug Keyword
:hi link myProcID Identifier
:hi link myFile Keyword
:hi link myLineNum Constant
:hi link myFunction Function
:hi link myMessage String

":syn match ERRVAL /error \+\d\+/
":syn match HEX /0x[0-9a-f-A-F]+/
":syn match URL /:\/\/[0-9a-zA-Z./]\+/
":hi link myError Error
}}}
Copy to  ~/.vim/syntax, and do :set syntax=logsyntax.vim to highlight stuff.
----
!! Code Snippet to log to syslog from perl
{{{
sub log_it {
    require Sys::Syslog;
    my $self = shift;                #'self' == 'this' ptr?
    my $priority = shift;
    my $msg = shift;
    Sys::Syslog::setlogsock("unix");
    Sys::Syslog::openlog("mylog", "ndelay", "daemon");    #see facility in 'man openlog' 
    Sys::Syslog::syslog($priority, $msg, @_);
    Sys::Syslog::closelog();
}
}}}
----
[[ Quick syntax highlighting for log files with vim | http://snaike.blogspot.com/2007/04/test.html ]]
''[[ Vim Script to speedup processing of Large files | http://www.vim.org/scripts/script.php?script_id=1506 ]]''
''[[ Howto use Vim as a log file viewer | http://superuser.com/questions/147194/tips-for-using-vim-as-a-log-viewer ]]''
--
''[[ Vim (v7.3) syntax highlighting documentation | http://vimdoc.sourceforge.net/htmldoc/usr_44.html ]]''
''[[ Creating your own Vim Syntax and highlight files | http://vim.wikia.com/wiki/Creating_your_own_syntax_files ]]''
[[ How to create your own syntax highlighting for custom logfiles in vim | http://stackoverflow.com/questions/2193157/vim-simple-steps-to-create-syntax-highlight-file-for-logfiles ]]
''[[ Display which syntax highlighting group is used at current cursor location | http://vim.wikia.com/wiki/Identify_the_syntax_highlighting_group_used_at_the_cursor ]]''
''[[ How to debug a syntax highlighting chain (for syntax creators | http://mysite.verizon.net/astronaut/vim/index.html#HILINKS ]]''
''[[ syntax highlighting disappears for root/su user in vim | http://superuser.com/questions/216676/vim-syntax-highlighting-disappeared-for-text-files-txt ]]''
[[ How to tell vim the file type if it's not auto-detected | http://vim.wikia.com/wiki/Forcing_Syntax_Coloring_for_files_with_odd_extensions ]]
[[ Howto display different/mixed syntax highlighting regions in same file in vim | http://stackoverflow.com/questions/519753/vimembedded-syntax-highligting ]]
----
!! Syslog colorizer
!!!syscolorize
Has a syscolorize.vim file [[ syscolorize | http://sourceforge.net/projects/syscolorize/ ]]
{{{
$> vi ~/.syscolorize.conf
#Add custom filter here for DEBUG:ID:abc.cpp:line-num:function:message
#Ignore multi-thread interleaved message like DEBUGDEBUG::
<filter>
        process        = DEBUG
        color             = darkyellow
        ignore           = DEBUGDEBUG        
        <replace>
                match   = DEBUG:|%\d%:|%S\.[ch]%pp:|\d:|%\S%:|%\S+%
                colors   = blue normal yellow normal red green
        </replace>
</filter>
}}}
''[[Vim syslog syntax file : Add syntax color to log files created by sysklogd | http://www.vim.org/scripts/script.php?script_id=419 ]]''
----
!!!ccze
{{{
$> yum install ccze
$> cat mylogfile.txt | ccze | less
}}}
[[ ccze man page | http://manpages.ubuntu.com/manpages/hardy/man1/ccze.1.html ]]
''[[ Watch multiple log files, colorized, slow motion scrolling using ccze | http://www.askapache.com/security/elite-log-file-scrolling-with-color-syntax.html ]]''
[[ How to create a custom ccze plugin for your log format | http://pwet.fr/man/linux/conventions/ccze_plugin ]]
''[[ How to colorize your log file with ccze by tersmitten | http://blog.tersmitten.nl/archives/932 ]]''
''[[ How to grep the output of ccze | http://jamesoff.net/site/2008/07/09/grepping-the-output-of-ccze/ ]]''
[[ algernongng creator of ccze is rewriting it afresh as of 4-Jul-2011 | http://freshmeat.net/users/algernongng ]]
----
!!! Colorize (parent script form of ccze compiled)
{{{
$> yum install colorize
$> cat /var/log/daemon.log | colorize
$> tail -0f /var/log/daemon.log /var/log/apache/access.log | colorize
$> colorize < /var/log/messages
}}}
[[ Colorize site | https://github.com/raszi/colorize ]]
[[ Colorize perl script tar.gz file | http://colorize.raszi.hu/downloads/colorize_0.3.4.tar.gz ]]
----
!!!PCRE colorizer
{{{
$> yum install pcre
}}}
[[ PCRE colorizer (Perl Compatible Regular Expression) | http://www.pcre.org/ ]]
----
[[ atglogcolorizer | http://atglogcolorizer.sourceforge.net/ ]]
[[ CSed a colorizing stream editor | http://freshmeat.net/projects/csed/ ]]
[[ Online tool to convert text log file snippets to colorized HTML | http://stackoverflow.org/tools/highlight.php ]]
--
[[ Ernest's Blog on log colorizers | http://ernstdehaan.blogspot.com/2007/03/log-colorizing.html ]]
[[ integrating colorizer output with vim | http://vim.1045645.n5.nabble.com/log-color-highlighting-using-vim-Or-injecting-log-colorizer-output-into-vim-td1165534.html ]]
''[[ Directory of Log Analyzers  at Sourcefile.org | http://www.sourcefiles.org/Log_Analyzers/ ]]''
''[[ Directory of Log Monitors at sourcefile.org | http://www.sourcefiles.org/Monitoring/Logs/ ]]''
----
!!Syslog GUI
!!! Chainsaw
''[[ Chainsaw Log File Viewer from Apache | http://logging.apache.org/chainsaw/index.html ]]''
[[ Chainsaw download for Java, OSX, Unix and Dos | http://logging.apache.org/chainsaw/download.html ]]
[[Chainsaw Installation Notes and dependencies | http://logging.apache.org/chainsaw/distributionnotes.html ]]
----
!!! Splunk
[[ Analyze standalone log file with Splunk at stackoverflow | http://splunk-base.splunk.com/answers/23007/reading-downloaded-log-files-locally ]]
[[ Howto Add Data to Splunk | http://www.splunk.com/base/Documentation/latest/User/Adddatatutorial  ]]
[[ Where is my Data (local vs remote data sources) for Splunk | http://www.splunk.com/base/Documentation/latest/Data/Whereismydata ]]
[[ How to use Splunk apps to input data | http://www.splunk.com/base/Documentation/latest/Data/Usingapps ]]
[[ How to get going with Splunk - best practises and process of configuring data sources | http://www.splunk.com/base/Documentation/latest/Data/Howtogetgoing ]]
[[ Configure Splunk data inputs | http://www.splunk.com/base/Documentation/latest/Data/Configureyourinputs ]]
[[ What Splunk can Index | http://www.splunk.com/base/Documentation/latest/Data/WhatSplunkcanmonitor ]]
--
[[ Splunk free vs enterprise comparison | http://www.splunk.com/view/free-vs-enterprise/SP-CAAAE8W ]]
[[ How to shift to Splunk-Free | http://www.splunk.com/base/Documentation/4.2.2/Admin/MoreaboutSplunkFree ]]
''[[ Splunk free apps and add-ons for input types at Splunkbase | http://splunkbase.splunk.com/ ]]''

What happens to your data once it enters Splunk, and how you can configure Splunk to make the data even more useful.  
[[ What Splunk does with your data (and how to make it do it better) | http://www.splunk.com/base/Documentation/latest/Data/WhatSplunkdoeswithyourdata ]]
[[ How data moves through Splunk in the Distributed Deployment manual | http://www.splunk.com/base/Documentation/latest/Deploy/Datapipeline ]]
[[ Managing Splunk Knowledge | http://www.splunk.com/base/Documentation/latest/Knowledge/WhatisSplunkknowledge ]]

----
''[[ Using gnome-system-log viewer with user-supplied-filters | http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Deployment_Guide/s1-logfiles-viewing.html ]]''
[[ Vigilog Log file viewer and coloring filter for log4j and java.logging based log-formats | http://sourceforge.net/projects/vigilog/ ]]
[[ Gamut Log File Viewer (windows) | http://sourceforge.net/projects/gamutlogviewer/ ]]
[[ Kiwi syslog free viewer (windows) | http://www.kiwisyslog.com/help/syslog/index.html?kiwi_logfile_viewer.htm ]]
[[ Best Log File Viewer at stackoverflow | http://stackoverflow.com/questions/835199/what-is-the-best-freeware-open-source-log-file-viewer-with-a-filter-and-sort-op ]]
----
!! Enabling Syslog messages
[[ Problem with syslog - messages not being logged | http://www.syslog.org/forum/syslog-and-syslogd/syslog-messages-not-being-logged ]]
[[ Enabling remote logging in syslog | http://www.syslog.org/forum/syslog-and-syslogd/linux-syslogd-to-start-at-port-514-udp ]]
Watch for new messages:
{{{
$> tail -f /var/log/messages
}}}
----
Check syslog destination files:
{{{
$> cat /etc/syslog.conf | egrep 'local[0-7]'    #Here local0 to local7 is used for local logging
}}}
----
Test if the syslog is doing its work
{{{
#Test local logging using local0 to local7. Check in syslog.conf for logfile locations
$> logger -p local0.info "this is a test"        
}}}
----
Check that syslog is listening on UDP port 514
{{{
$> cat /etc/services | grep syslog
   syslog          514/udp
}}}
----
Check what ports syslogd is listening on (default in new version is local ports only)
{{{
$> netstat -np |grep syslog
unix  2      [ ]         DGRAM                    4581597 <port-no>/syslogd       /dev/log
unix  11     [ ]         DGRAM                    4581599 <port-no>/syslogd       /var/dev/log
}}}
----
Send signal to re-read the /etc/syslog.conf file
{{{
$> kill -SIGHUP `cat /var/run/syslogd.pid`
}}}
----
Check syslog's startup configuration files
syslog startup config files need to have the following options set:
*'-m 0' disables 'MARK' messages.
*'-r' enables logging from remote machines
{{{
#Check the bootup config file for syslog
$> cat /etc/init.d/syslog | grep SYSLOGD_OPTIONS
   SYSLOGD_OPTIONS="-r m 0"  #Note it should be '-r' space '-m 0'

#Check the system wide config file for syslog has following contents
$> cat /etc/sysconfig/syslog | grep SYSLOGD_OPTIONS
   SYSLOGD_OPTIONS="-r m 0"  #Note it should be '-r' space '-m 0'

#Restart the syslogd daemon. Service restart is needed as changes are made to syslog's startup config files
$> service syslog restart
}}}
----
Check syslog listening on port 514 for remote logging:
{{{
$> netstat -a | egrep 'Local|syslog'
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
udp        0           0             *:syslog                  *:*

$> netstat -an | egrep 'Local|:514'
Proto Recv-Q Send-Q Local Address           Foreign Address         State  
udp        0             0       0.0.0.0:514                 0.0.0.0:*                      
}}}
----
!! Reference
[[ syslog on wikipedia | http://en.wikipedia.org/wiki/Syslog ]]
[[ Syslog configuration debugging | http://www.softpanorama.org/Logs/Syslog/syslog_configuration_debugging.shtml ]]
[[ How to monitor logfiles on linux | http://nixcraft.com/linux-software/477-howto-linux-monitor-logfiles.html ]]
[[ Syslog.org Forums on syslogd, syslog, syslog-ng, windows events, log analysis, web-server logs | http://www.syslog.org/forum ]]
----
[[ Log analyzer links at softpanorama | http://www.softpanorama.org/Logs/log_analyzers.shtml ]]
[[ Introduction to Syslog Protocol from Monitorware | http://www.monitorware.com/common/en/articles/syslog-described.php ]]
[[ PDF - The Ins and Outs of System Logging Using Syslog | http://www.sans.org/reading_room/whitepapers/logging/ins-outs-system-logging-syslog_1168 ]]
!! Tutorial
[[ TCP Tutorial Notes | http://www.ssfnet.org/Exchange/tcp/tcpTutorialNotes.html ]]
[[Teach Yourself TCP IP in 14 Days(PDF): http://www.bitman.ca/manuals.html]]
----
!!! Connection Termination
''[[ TCP State Transition on Connection Termination from faqs.org | http://www.faqs.org/docs/iptables/tcpconnections.html ]]''
''[[ TCP Connection Termination at TCP IP Guide | http://www.tcpipguide.com/free/t_TCPConnectionTermination-2.htm ]]''
''[[ FSM State Transitions from the TCP IP Guide | http://www.tcpipguide.com/free/t_TCPOperationalOverviewandtheTCPFiniteStateMachineF-2.htm ]]''
[[ TCP State Transition Diagram | http://ttcplinux.sourceforge.net/documents/one/tcpstate/tcpstate.html ]]
''[[ TCP State Transition Diagram PDF |  http://www.cs.northwestern.edu/~agupta/cs340/project2/TCPIP_State_Transition_Diagram.pdf ]]''
''With info on RST [[ TCP Module1 | http://www.cs.virginia.edu/~cs458/slides/module13-tcp1.pdf ]]''
''[[ Networking Presentations and PDFs from Virginia Edu | http://www.cs.virginia.edu/~cs458/slides ]]''
----
!! Articles
[[ Networking blog at lovemytool website | http://www.lovemytool.com/blog ]]
[[ Connection Setup - Practical TCP Series - Chris Greer | http://www.lovemytool.com/blog/2010/06/practical-tcp-series-the-connection-setup-by-chris-greer.html ]]
[[ TCP Connection Teardown Expected and Unexpected - Practical TCP Series - Chris Greer | http://www.lovemytool.com/blog/2010/09/practical-tcp-series-connection-teardown-expected-and-unexpected-by-chris-greer.html ]]
[[ TCP Sequence and Ack Numbers - Practical TCP Series - Chris Greer  | http://www.lovemytool.com/blog/2010/08/practical-tcp-series-sequence-and-acknowledgement-numbers-by-chris-greer.html ]]
[[ TCP Window - Practical TCP Series - Chris Greer | http://www.lovemytool.com/blog/2010/07/practical-tcp-series-the-tcp-window-by-chris-greer.html  ]]
[[ TCP Flags - Practical TCP Series - Chris Greer | http://www.lovemytool.com/blog/2010/07/practical-tcp-series-tcp-flags-by-chris-greer.html ]]
----
!! Keep Alive
TCP Keep-Alive - Occurs when the sequence number is equal to the last byte of data in the previous packet. Used to elicit an ACK from the receiver.
TCP Keep-Alive ACK - Self-explanatory. ACK packet sent in response to a "keep-alive" packet. 
''[[ TCP Keep-Alive HowTo | http://tldp.org/HOWTO/html_single/TCP-Keepalive-HOWTO/#overview ]]''
----
!! Copy html to tiddlywiki using TiddlySnip (Feature request)
There's a tiddlysnip forum discussion on adding rich text(html) copy-paste to TiddlySnip (dated 2006).
Checking the website shows no further work in this area. 
The copy pasted html is a very crucial part of writing Tiddly's, esp when you build on other people's work.
----
Problem statement:
* Many problems have scattered (partial) solutions across multiple blogs, wikis, web-pages.
* Many tiddlies contain my own customized solution. 
* I still need to provide further info links to myself and readers.
* They are crucial to provide background info which helps solve similar or related problems.
* Many times these sources cross-reference each other with hyperlinks.
* Problem is these links are very tenuous as web-pages move around. 
----
Solution:
# What's constant though is the content or hyperlink title. 
# Recovering moved pages is as easy as directly searching for the hyperlink title in google. 
# The brief summary is an annotation cum fallback mechanism which helps to guess search keywords.
----
!!Format used to save references
{{{
<Brief text summary>: [[ <original hyper link title> at <website> | <url to webpage> ]]
}}}
----
!Reference:
# See discussion on copy paste rich text html using tiddlysnip for tiddlywiki [[ TiddlySnip beta: testing and feedback requested | http://groups.google.com/group/tiddlysnip/browse_thread/thread/42c54b1a26eb82fb/92a9978c546e8d31?lnk=gst&q=rich+text+html#92a9978c546e8d31 ]]
# HTML capture with formatting: [[ Capture web page with formatting | http://groups.google.com/group/tiddlywiki/browse_thread/thread/a419a95a02bbc03a/b7456eb8ae7b0275?lnk=gst&q=how+do+I+move+content+from+blog+to+wiki#b7456eb8ae7b0275 ]]

----
!! TiddlySnip Installation
The installation instructions on the [[ tiddlysnip website | http://tiddlysnip.com/#InstallationGuide ]] don't seem to work. 
However this newsgroup contains the correct way to do the installation to circumvent firefox3 'security update error'. 
Refer : http://groups.google.com/group/tiddlysnip/browse_thread/thread/51de55789797da7b/7dd33235d0576052#7dd33235d0576052
!! How to recover a partial upload of your wiki to tiddlyspot
Symptom: You can see text/blank screen instead of your familiar tiddlywiki.
Howto recover:
# Open the last backup of your wiki http://wikiname.tiddlyspot.com/backup
# You'll see a partial upload with smaller file-size than expected. THIS is the problem
# Open the last full uploaded html file in a new tab
# Enter the password, username and click on the save to web. This should overwrite the partially uploaded index.html. 
# Check your wiki http://wikiname.tiddlyspot.com/ by doing a full reload (bypassing the browser cache) by doing Shift+Ctrl+R in firefox. You should be able to see the restored backup now.
# OR Check the UploadLog tiddler which shows which backup was saved as index.html at the bottom of the upload log table.
[[ Howto recover from a partial upload of your tiddlywiki to Tiddlyspot | http://groups.google.com/group/tiddlywiki/browse_thread/thread/e3813eb195a099ae ]]
----
http://guruduttmallapur.tiddlyspot.com
http://guru-on-net.tiddlyspot.com
[[Revision history/backup versions of TiddlySpot data | http://guruduttmallapur.tiddlyspot.com/backup]]
[[TiddlySpot FAQ|http://faq.tiddlyspot.com]]
[[TiddlySpot Blog|http://tiddlyspot.com/blog]]
----
!TODO
Apparently you can use Tiddlywiki backstage out-of-the-box to 
#Sync tiddlers with a server 
#import tiddlers from a url/server/file/feed
#use plugins
Get hold of videos/wikis showing how these features work esp. with regard to 
*[[Certain number of backups are supported | http://your-site-name.tiddlyspot.com/backup]]
*upload/dowload, 
*syncing across computers,
*plugin usage
!TiddlyWiki Internals
[[ Tiddlywiki internals explained in 3 part series | http://softwareas.com/tiddlywiki-internals-1-of-3-architectural-concepts ]]
[[ A guide to the most important classes in TiddlyWiki | http://softwareas.com/reflections-from-a-tiddlywiki-tiddler-and-thoughts-on-a-guide-for-web-app-development-with-tiddlywiki ]]
[[ Design Docs for TiddlyWiki (dated 2009) | http://softwareas.com/tiddlydocsdocs-design-docs-for-tiddly ]]
----
!! TiddlyTools customized TW
[[ Customized TiddlyWiki with TiddlyTools | http://www.tiddlytools.com/quickstart ]]
----
! Wiki Collaboration with other users
!!TiddlySpace
[[ TiddlySpace for collaborating with TiddlyWiki | http://tiddlyspace.tiddlyspace.com ]]
----
!!Geiwiki
Excerpt from forum answer on [[ Version controlling your wiki discussion on stackoverflow | http://stackoverflow.com/questions/85994/how-do-you-keep-a-personal-wiki-tiddlywiki-current-and-in-sync-in-multiple-loca ]]
//
If you might want to edit your wiki on several computers at the same time, 
you would definitely want a server-based solution that syncs at a finer level than the file. 
Giewiki (http://giewiki.appspot.com) is a server-based TiddlyWiki solution 
based on Google's App Engine, which does just that. And unlike any other hosted TiddlyWikis that I know of,
you can create several pages in any hierachy and navigate them through an auto-generated sitemap. 
You can try it out by creating a subdomain site at giewiki.appspot.com, 
or you can download the source and install it into a free appspot site of your own. 
And you can make it as personal or public as you like.//
[[ Giewiki website | http://giewiki.appspot.com ]]
[[ Giewiki Sandbox for experimenting with your wiki | http://giewiki.appspot.com/SandBox ]]
----
!!Dropbox
Version control, Backup, Synchronizing and Collaboration all in one for your Tiddlywiki with DropBox
[[ Download DropBox for Linux | http://www.dropbox.com/downloading?src=index ]]
[[ Discussion on Version Control for wikis at stackoverflow.com | http://stackoverflow.com/questions/85994/how-do-you-keep-a-personal-wiki-tiddlywiki-current-and-in-sync-in-multiple-loca/4569690#4569690 ]]
----
!! Wiki Inter Operability
[[ Markdown wiki syntax | http://daringfireball.net/projects/markdown ]]
[[ Discussion on converting from and to Mediawiki and tiddlywiki | http://www.mail-archive.com/tiddlywiki@googlegroups.com/msg06518.html ]]
[[ Importing MediaWiki WikiBooks into Tiddlywiki | http://groups.google.com/group/tiddlywiki/browse_thread/thread/88d417154430322b ]]
[[ Using MediaWiki markup in Tiddlywiki | http://tiddlywiki.org/wiki/MediaWiki_Markup#Other_formatting ]]
[[ MediaWiki official markup | http://www.mediawiki.org/wiki/Help:Formatting ]]
[[ Importing/converting from different formats to tiddlywiki using server plugins/adaptors  | http://tiddlywiki.org/wiki/Server_Adaptor_Mechanism ]]
[[ David Iberri's html2wiki on CPAN (perl based) | http://search.cpan.org/~diberri/HTML-WikiConverter-0.68 ]]
[[ Convert wiki to xhtml with wiki2xhtml | http://sourceforge.net/projects/wiki2xhtml ]]
[[ Tim Janik's experiences on using html2wiki to migrate his beast docs to mediawiki | http://timj.testbit.eu/2011/02/05/new-beast-website ]]
[[ Python script to convert wiki from TWiki to Tiddlywiki format | http://www.penlug.org/foswiki/bin/view/Main/TiddlyWiki?raw=on ]]
----
!! Formatting your TiddlyWiki
[[ Discussion on Generating a Table of Contents to your tiddlers sections | http://groups.google.com/group/TiddlyWiki/browse_frm/thread/d25b6d431be2c12c/eba3136e49b6c15a?lnk=gst&q=showtoc&pli=1 ]]
[[ Plugins to Generate Table of Contents For Individual Tiddlers | http://tiddlywiki.org/wiki/Table_of_Contents_For_Individual_Tiddlers ]] 
[[ DcTableOfContentsPlugin for TOC in tiddlers | http://devpad.tiddlyspot.com/#DcTableOfContentsPlugin ]]
----
!! HTML and Tiddlywiki format conversion
[[ iFrames to include remote HTML with autoresizing into TiddlyWiki | http://www.amirharel.com/2009/07/28/implementing-iframe-toolbar ]]
[[ Cross Domain iFrame Resize for including remote HTML in TiddlyWiki | http://geekswithblogs.net/rashid/archive/2007/01/13/103518.aspx ]]
''[[ Embedding/Including Remote or Local HTML files in TiddlyWiki | http://groups.google.com/group/tiddlywiki/browse_thread/thread/a36da367935a43a7?pli=1 ]]''
[[ Importing HTML file into TiddlyWiki using AttachFilePlugin | http://groups.google.com/group/tiddlywiki/browse_thread/thread/912f969ac46e067e ]]
----
[[ David Iberri's html2wiki on CPAN (perl based) | http://search.cpan.org/~diberri/HTML-WikiConverter-0.68 ]]
[[ Convert wiki to xhtml with wiki2xhtml | http://sourceforge.net/projects/wiki2xhtml ]]
[[ Tim Janik's experiences on using html2wiki to migrate his beast docs to mediawiki | http://timj.testbit.eu/2011/02/05/new-beast-website ]]
----
[[ Export tiddler to HTML + CSS using SnapshotPlugin of Tiddlywiki | http://www.tiddlytools.com/#SnapshotPlugin ]]
[[ Converting HTML Tables to Wiki Tables | http://www.uni-bonn.de/~manfear/html2wiki-tables.php ]]
[[ Using tables in mediawiki format Mediawiki User Guide | http://meta.wikimedia.org/wiki/MediaWiki_User%27s_Guide:_Using_tables ]]
Convert html to wiki format with html2wiki [[ David Iberri's online html2wiki converter | http://toolserver.org/~diberri/cgi-bin/html2wiki/index.cgi ]]
[[ Article on converting wiki to HTML format and back at freewaregenius.com | http://www.freewaregenius.com/2007/09/27/convert-
html-to-wiki-and-back/ ]]
----
!! Todo List with TiddlyWiki
[[ TiddlyWiki Derivatives to get things done | http://www.linux.com/archive/feature/152948 ]]
----
!! Mindmap and TiddlyWiki integration
[[ TiddlyTagMindMap with TiddlyWiki | http://tiddlytagmindmap.tiddlyspot.com ]]
[[ Brain-like Mindmap Plugin for TiddlyWiki | http://groups.google.com/group/TiddlyWiki/browse_thread/thread/149c8178319d9785 ]]
[[ Discussion on  TiddlyWIki Freemind integration plugin | http://groups.google.com/group/tiddlywiki/browse_thread/thread/ffac7d45d0e33d89/54b53d75fcb090f6?lnk=gst&q=freemind#54b53d75fcb090f6 ]]
[[ JuanPedro, creator of the Freemind Flash Browser | http://sourceforge.net/users/juanpedro ]]
----
[[ JAMMP Jit Another Mind Map Plugin | http://groups.google.com/group/tiddlywiki/browse_thread/thread/33caa76e44d0dc8f/f3af416412e248c1?lnk=gst&q=mindmap#f3af416412e248c1 ]]
[[ JAMMP Visualizing Plugin  | http://jammp.tiddlyspace.com ]]
[[ JIT website for JAMMP | http://thejit.org ]]
[[ Tiddlywiki Hypergraph plugin | http://project.dahukanna.net/tiddlywiki/hypertiddlywiki/index.htm ]]
----
!! Tiddlysnip
[[ TiddlySnip - FireFox Extension copy-paste directly to TiddlyWiki and TiddlySpot | http://tiddlysnip.com/#About ]]
[[ Article on TiddlySnip, TiddlyWiki and Firefox | http://www.linux.com/archive/feature/120048 ]]
[[ FireFox3 (Install TiddlySnip in Firefox (tiddlysnip.xpi) from disk to overcome security updates error) | http://groups.google.com/group/tiddlysnip/browse_thread/thread/51de55789797da7b/7dd33235d0576052#7dd33235d0576052 ]]
----
!! Forums
[[ TiddlyWiki Google Discussion Forum | http://groups.google.com/group/tiddlywiki ]]
[[ TiddlySnip Google Discussion Forum | http://groups.google.com/group/tiddlysnip ]]
----
In addition to the built-in macros, you can also create your own macros. 
See below on how to import scripts written by others. 

Here's the code in this tiddler that creates that happy guy up there:

<<mycustommacro input1 input2>>

Here's how to add the ''mycustommacro'' macro to this wiki:

#First, create a new tiddler entitled ''mycustommacro''
#Then, copy the mycustommacro code and pasted it into my new tiddler.
#After that, tag the tiddler with the systemConfig tag
#Finally, save changes and reload the wiki.

@@Scrapbook, search index implementation:@[[Client Side Tools |http://tiddlywiki.org/wiki/Client-Side_Tools]]
@@internet upload and multi-user sharing:@@ [[Different Tiddlywiki Server Side Implementations|http://tiddlywiki.org/wiki/Server-Side_Solutions]]
[[Tiddlywiki Repositories from main TW site|http://tiddlywiki.org/wiki/Plugin_Repositories]]
[[Tiddlywiki plugins bookmarked on delicious|http://www.delicious.com/tag/tiddlywikiplugin]]
[[Tiddlywiki Google Groups|http://groups.google.com/group/TiddlyWiki]]

{{{
$> locate prefs.js | xargs -iABC egrep -Hn 'user_pref.*(granted|p0.id)' ABC
$> cp /home/self/.mozilla/firefox/blah-default/prefs.js /home/self/.mozilla/firefox/blah-default/prefs.js.orig 
$> cp /home/self/.mozilla/firefox/blah-self/prefs.js /home/self/.mozilla/firefox/blah-self/prefs.js.orig
}}}
Find and delete lines containing ''granted'' or ''p[0-9].id''
{{{
$> vi /home/gmallapu/.mozilla/firefox/blah-default/prefs.js /home/gmallapu/.mozilla/firefox/blah-self/prefs.js
}}}
!Reference:
[[Howto make Firefox forget 'Deny Save to Tiddlywiki'|http://groups.google.com/group/TiddlyWiki/browse_thread/thread/d00c441fd67b39f0/99e8868f62086fe3]]
[[ 10 Time Management Mistakes | http://www.mindtools.com/pages/article/time-management-mistakes.htm ]]
[[ Action Programs (Industrial Strength ToDo lists | http://www.mindtools.com/pages/article/newHTE_83.htm ]]
----
1) Indexing an entry to a number/string
2) Most significant digit used to index first level.
3) In case of similar MSB use next digit to index the collision with increase in depth.
4) Pro: Works best for diversity in lookup string
   Con: The more similar the MSB the more the depth required but conversely similar entries will be clustered in a bunch. 
The more similar the run-length the more the clustering and depth-wise search.
The more dissimilar the digit the more spread out the keys and breadth-wise search.
----
Bill Clinton and Bush George differ at the 2nd character.
So they cluster on 'B' sub-tree and spread-out on 'i'/'u' within the 'B' sub-tree.
See the way the President's name are stored in the trie example to get a clearer idea of this.
----
The k'th differing character ends the hierarchical level at level K.
If strings differ on the 3rd character then at least 3 levels would be required.
Having a trie[0-26] with a-z mapping to 1-26 with 0 reserved for '\0'
{{{
a,    (stored at trie[1][0] )
aa,  (stored at trie[1][1][0])
aaa, (stored at trie[1][1][1] )
aab, (stored at trie[1][1][2] )
aac, (stored at trie[1][1][3] )
aad, (stored at trie[1][1][4] )
aae, (stored at trie[1][1][5] )
}}}
----
!Reference
[[ Simple explanation of a Trie | http://www.webreference.com/js/tips/000318.html ]]
[[ Simple Implementation of a Phone Directory using Trie in Javascript | http://www.webreference.com/js/column57 ]]
----
[[ Danvk.org: Boggle Game Visual depiction | http://www.danvk.org/wp/?p=67 ]]
[[ Danvk.org: Boggle Game solver prototype in Ruby | http://www.danvk.org/wp/2007-01-30/boggle-2-the-shortest-solver ]]
[[ Danvk.org: Boogle better solver in Ruby | http://www.danvk.org/wp/2007-01-30/boggle-3-succeed-by-not-being-stupid ]]
[[ Danvk.org: Tries the perfect data structure for Boogle | http://www.danvk.org/wp/2007-02-01/tries-the-perfect-data-structure ]]
[[ Danvk.org: Moving Boggle to C++ | http://www.danvk.org/wp/2007-02-04/moving-boggle-to-c ]]
[[ Danvk.org: Tries are Awesome | http://www.danvk.org/wp/2007-02-06/in-which-we-discover-that-tries-are-awesome ]]
/***
Description: Contains the stuff you need to use Tiddlyspot
Note, you also need UploadPlugin, PasswordOptionPlugin and LoadRemoteFileThroughProxy
from http://tiddlywiki.bidix.info for a complete working Tiddlyspot site.
***/
//{{{

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

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

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

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

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

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

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

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

'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")

});
//}}}
# In firefox address bar type about:config. 
# Add search filter "services.sync" to see all the options for your firefox sync add-on
# Search for sync.jar under "C:\Documents and Settings\I\Application Data\Mozilla\Firefox\Profiles"
# Extract the sync.jar containing the .js files into a temp folder. 
# Search for a "select" statement for retrieving the bookmarks from the sqllite database file found at "C:\Documents and Settings\I\Application Data\Mozilla\Firefox\Profiles\d5vcvjq9.default\places.sqlite"
# This leads us to the setup.js file which is the entry-point for the firefox addon UI xul dialog box.
# Add alert("hello, world") statements as required into setup.js. 
# To see the alerts in "Error Console" of Firefox add the modified setup.js file back into the sync.jar in your firefox folder above.
----
''Resources:''
[[What is Firefox Sync | http://support.mozilla.com/en-US/kb/what-firefox-sync?redirectlocale=en-US&redirectslug=What+is+Firefox+Sync]]
[[ The Places DB in Firefox | https://developer.mozilla.org/en/Places ]]
[[ZBlog: Playing with Firefox's SQLite Database | http://blog.zarate.tv/2009/03/04/playing-with-firefoxs-sqlite-bookmarks ]]
[[Tweaking Firefox's SQLLite Database | http://articles.sitepoint.com/article/hierarchical-data-database/1]]
----
[[ How to do a RECURSIVE QUERY | http://publib.boulder.ibm.com/infocenter/db2luw/v8/topic/com.ibm.db2.udb.doc/ad/samples/clp/s-flt-db2.htm ]]
[[ Install SQLite Manager Add-on for Firefox to view any SQLite DB | https://addons.mozilla.org/en-US/firefox/addon/5817 ]]
[[ SQLite Manager Website | http://code.google.com/p/sqlite-manager ]]
----
[[ Bookmark Service Design from Mozilla | http://mozilla-xp.com/mozilla.dev.documentation/Bookmark-Service-Design ]]
----
!XML internals
''[[ Simply super article on  "How XSLT Works" by Evan Lenz | http://lenzconsulting.com/how-xslt-works ]]''
''[[ International Symposium on Processing XML Efficiently (slides and papers) | http://www.balisage.net/Proceedings/vol4/contents.html ]]''
----
!! XPATH
Just follow the important structure definitions to understand the XPATH API
''[[ XPATH struct xmlNodeSet | http://xmlsoft.org/html/libxml-xpath.html#xmlNodeSet ]]''
''[[ XPATH struct xmlXPathObject | http://xmlsoft.org/html/libxml-xpath.html#xmlXPathObject ]]''
''[[ XPATH Internals docs | http://xmlsoft.org/html/libxml-xpathInternals.html ]]''
''[[ XPATH API of libxml2 | http://xmlsoft.org/html/libxml-xpath.html ]]''
----
!! XSLT
Para-phrased from XSLTC internals document on XSLT ''NOT'' being a programming language:
//"XSLT is not a programming language! Just so you remember. XSLT is a declarative language and can be used by you to describe ''what'' you want put in your output document and ''what'' you want this output to look like. It does not describe ''how'' these tasks should be carried. That is the job of the XSLT processor. All XSLT processors have their (own internal implementation-defined) properties and ways of handling XSL elements and XPath properties."//
----
''[[What kind of a language is XSLT by Michael Kay | http://www.ibm.com/developerworks/xml/library/x-xslt/?article=xr ]]''
1)"XSLT is to XML what SQL is to Tabular Data" i.e. 
{{{
  a) SQL bases output on input based on transformational rules and criteria.
  b) xslt uses templates as rules and xpath as criteria (but unlike SQL it doesn't allow ANY changes to input data)
}}}
2) //"It is not possible to separate the processing of the element's start tag and end tag into separate operations, because an element is represented atomically as a single node in the tree model." [Michael Kay] // i.e. 
{{{
  a) Works on Node of input tree and 
  b) ''NOT'' on xml text level (scanning/parsing level)
}}}
3) //"each template defines a fragment of the output tree as a function of a fragment of the input tree, and produces no side effects.The XSLT language allows variables to be defined, but does not allow an existing variable to change its value -- ''there is no assignment statement.'' [Michael Kay]"//
{{{
  a) Maps from Input Node-Set to Output Node-Set (in a mathematical function(x) sense)
  b) You always work on copies of node-sets as variables are "read-only" (once constructed)
}}}
----
''[[ Saxon: Anatomy of an xslt processor (2005) | http://www.ibm.com/developerworks/library/x-xslt2/ ]]''
1) XSLT processing steps:
{{{
  a) Input XML -> Parser (Java SAX) -> Events -> Builder -> InputTree (like DOM)
  b) Input XSL -> Parser (Java SAX) -> Events -> StyleSheetCompiler ->StyleSheetTree (decorated with XPath expressions)
  c) InputTree and StyleSheetTree -> StylesheetInterpreter -> OutputFragments -> Outputter(outFormat)-> disk/pipe/terminal
}}}
2) //"It is quite common in a server environment to use the same style sheet repeatedly to transform many different source documents. To allow this, the compiled style sheet is strictly read-only at execution time, allowing it to be used in multiple execution threads simultaneously." [Michael Kay]// 
{{{ 
i.e. StylesheetTree is functioning as "decision-tree(CODE) and must be read-only for all the multiple-threads using it. 
}}}
3) StyleSheet Compilation:
{{{
   a) Validation
   b) Expression tree creation, simplification and attaching to StyleSheet tree.
   c) Allocation of variables on stack-frame attached to each template rule. Binding of variable local or global variable references.
   d) function-call binding at compile time.
}}}
4) XPath gets it's name from location-path forming an X with self at the intersection i.e. axes can yield ancestor, elder-siblings, younger-siblings, self or descendants.
5) attribute value template (AVT) ex: <td width="{$x * 2}">
6) Interpreter uses the below things:
{{{
   a) The run-time context identifies "current" node
   b) xpath expressions (used in select="@abc" attributes) are evaluate()ed by XPath Interpreter.  
       evaluate() uses expression-trees created at compile-time to compute the expressions at run-time.
   c) match-patterns are used by template matching hash-table lookup code.
}}}
7) Pattern-matching 
//"Saxon's strategy is therefore to separate rules into two kinds: specific rules, where the node type and name are explicitly specified in the pattern, and general rules, where they aren't. The data structure for the decision tree contains a hash table for the specific rules, keyed on the node type and node name, in which each entry is a list of rules sorted by decreasing priority; plus a single list for all the general rules, again in priority order. To find the pattern for a particular node, the processor makes two searches: one for the highest-priority specific rule for the relevant node type and name that matches the node, and one for the highest-priority general rule that matches the node. Whichever of these has highest priority is then chosen." [Michael Kay] //
{{{
Given 2 lookup tables:
1) SpecificRulesHashTable
2) GenericRulesHashTable,

Get 1 candidate each from each HashTable. Highest priority Rule wins.

Each HashTable has the following structure
hashEntry = HashTable( key=(node-type+node-name) )
hashEntry -> rule-list matching key (rules sorted by descending-priority)
}}}
----
''[[ PPT - 'Inside an XSLT processor' by Michael Kay | www9.org/devday-xml/session3/kay.ppt ]]''
6 parts to xslt stylesheet = form + match-pattern + bind(form-field, value(input tree members) ) + apply further rules recursively
A "template" is actually a RULE specifying:
1) match-pattern specifies which node of the input tree this "template" should be applied to.
2) output "form" like html layout with inline "form-labels" and "form-fields"
3) bind(form-field, value = xpath(tree,path) )        #Note "bind" here is more like an SQL variable bound to Crystal Report Template.
4) xslt instruction like <xsl:apply-templates /> to continue processing after the template
----
//''In-memory versus event-driven:''
In-memory interfaces, such as DOM, create data structures that represent the XML
document. Event-driven interfaces, such as SAX, receive data from the parser as it
parses the document.
''Push versus pull:''
A push interface pushes data from the parser to the application. When the parser
has some data, it uses a callback interface to push that data to the application. SAX
is an example of a push interface. On the other hand, a pull interface is still eventdriven,
but the application tells the parser when it wants the next event. StAX, the
Streaming API for XML, is an example of a pull interface. (StAX is also known as
JSR 173.)
DataBinding and VTD:
a) There are two other approaches we’ll mention briefly. In data binding, an XML document
is transformed into an object. The contents of the original XML document are
represented as the properties of that object. 
b) Finally, a new parsing technique called non-extractive XML processing
 creates Virtual Token Descriptors that contain the offset, length, and other information 
of XML tokens inside the XML file itself.
The Wikipedia entry http://en.wikipedia.org/wiki/XML#Programming_interfaces has
more detail on these approaches as well as links to various tools that implement them.
//
Refer: 
''Programming Interfaces for XML: DOM, SAX, and Others, Chapter 1'' of XSLT by Doug Tidwell (2nd Edition, 2008)
''[[ Comparison of Push vs Pull coding in Xslt | http://www.xml.com/pub/a/2005/07/06/tr.html ]]''
# Push i.e. stateless templates as context-based event handlers ''(leads to few modifications)''
# Pull   i.e. stateful programming logic with if/choose(Coding C Style) ''(leads to lots of modifications everywhere)''
Pull is better only when you apply the same steps to ALL nodes. Push is better for ??
----
!!!libxslt and libxml2
!!!! Tutorials
[[ libxslt tutorial | http://xmlsoft.org/XSLT/tutorial/libxslttutorial.html ]]
----
!!!! Talks
''[[ Collection of PPTs and Talks by Daniel Veillard creator of libxml2 and libxslt with python bindings | http://veillard.com/#Public ]]''
''[[ PPT - "Libxml : From Specs to Running Code" - Talk by Daniel Veillard at Xerox 2003 |  http://veillard.com/Talks/2003Xerox/Overview.html ]]''
----
!!!! Source code
[[ libxml and libxslt sources at xmlsoft.org | http://xmlsoft.org/sources/ ]]
//''[[ old versions of libxml and libxslt | http://xmlsoft.org/sources/old/ ]]''//
----
!!!! Internals
TODO: Need to write up notes on this superb article ''[[ libxslt Library Internals for XSLT C Library for GNOME | http://xmlsoft.org/XSLT/internals.html ]]''
[[ Howto on Writing extensions (like exslt) to XSLT | http://xmlsoft.org/XSLT/extensions.html ]]
----
!!!! Reference
[[ libxslt API | http://xmlsoft.org/XSLT/html/libxslt-lib.html ]]
----
!!! Xalan
Xalan is an XSLT processor (available in both Java and C++ flavours)
#java-Xalan uses SAX2 api for parsing xml (multilingual api)
#cpp-Xalan uses Xerces api for parsing xml (C++ api)
[[ java-Xalan | http://xml.apache.org/xalan-j/ ]]
[[ cpp-Xalan | http://xml.apache.org/xalan-c/ ]]
[[ SAX2 | http://sax.sourceforge.net/ ]] 

Apache has also created an XSLTC compiler for speeding up xslt transforms:
''[[ XLSTC compiler design docs | http://xml.apache.org/xalan-j/xsltc/xsltc_compiler.html ]]''
----
!!!Saxon
''[[ Understanding Recursion in an XSLT script | http://www.juniper.net/techpubs/software/junos/junos82/swconfig82-automation/html/xslt-overview9.html#1038399 ]]''
''[[ Properties of Streamable XSLT Templates at Saxonica | http://www.saxonica.com/documentation/sourcedocs/streaming/streaming-templates.xml ]]''
''[[ Streaming of Large Documents at Saxonica | http://www.saxonica.com/documentation/sourcedocs/streaming.xml ]]''
''[[ Understanding a streaming xslt processor's internals (2010) | http://www.balisage.net/Proceedings/vol5/html/Kay01/BalisageVol5-Kay01.html#d23731e1033 ]]''
----
!! DOMC
Understanding DOM with DOMC (a C implementation of DOM - minus a few features)
Note: DOMC is freely available under the MIT License here:
[[ DOMC website | http://www.ioplex.com/~miallen/domc ]]
!!! Use the Source Luke!!
#[[Download the DOMC source code (200 KB) | http://www.ioplex.com/~miallen/domc/dl/ ]]
#[[Download the libmba helper code (200 KB) | http://www.ioplex.com/~miallen/libmba/dl/ ]]
#cd domc/src
#ctags *
#vim domc.h
#Navigate through the struct Document, Node, NodeList etc to understand the utter simplicity of the DOM C implementation
domc.h and node.c are THE most important files.
----
!!! Core implementation
a) DOM_Node is THE struct to understand and it's very very simple.
   It's recursively defined - a tree is a node containing other nodes/nodelists.
   This struct is used to populate the Document Tree of DOM
1) Fixed Data part - common to all nodes from document to attribute
{{{
struct DOM_Node {
    DOM_String *nodeName;
    DOM_String *nodeValue;
    unsigned short nodeType;             //Used as selector on union of variable parts below
  
    //Pointers to other Nodes
    DOM_Node *parentNode;
    DOM_NodeList *childNodes;

    DOM_Node *firstChild;
    DOM_Node *lastChild;
    DOM_Node *previousSibling;
    DOM_Node *nextSibling;

    DOM_NamedNodeMap *attributes;      //Note: DOM_NamedNodeMap is a typedef for DOM_NodeList
    DOM_Document *ownerDocument;
[...]
}}}
2) Variable (Meta-Data) part - DOMNode.nodeType above identifies node type as document/element/attribute/PI
The 'union u' is used as a per node meta-data cache by the DOMC tree builder during 
a) construction of DOM Tree and 
b) application of Stylesheet to produce output
{{{
   XML->ExpatParser->Events->Builder->DOMTree(DOMNode)
}}}
[[ expat parser | http://en.wikipedia.org/wiki/Expat_%28XML%29 ]]
[[ DOM UI events (Key, mouse, logical, ...) | http://www.w3.org/TR/2000/REC-DOM-Level-2-Events-20001113/events.html ]] 
[[ DOM Events | http://www.w3.org/TR/2000/REC-DOM-Level-2-Events-20001113/events.html#Events-registration ]]
----
Hmmm.... DOMC seems to use clone() on elements/attributes. 
TODO: 
a) Confirm if this is to save memory by only storing name-value pairs for attributes with on-demand cloning of DOM_Node from/to name-value pairs described as FlyWeight Pattern in [[ "Saxon : Anatomy of an XSLT processor" by Michael Kay | http://www.ibm.com/developerworks/library/x-xslt2/ ]]
b) DOM also allows to insert/modify/append tree fragments to existing trees. clone() might be used for this too.
----
TODO: Confirm if node.u the same as the node._private described in [[ the libxml internals design doc | http://xmlsoft.org/XSLT/internals.html#libxml ]]
{{{
    union {
        struct {
            DOM_DocumentType *doctype;
            DOM_Element *documentElement;
                        DOM_DocumentView *document;
                        DOM_AbstractView *defaultView;
                        DOM_Node *commonParent;
                        DOM_String *version;
                        DOM_String *encoding;
                        int standalone;
        } Document;
        struct {
            DOM_String *tagName;
        } Element;
        struct {
            DOM_String *name;
            int specified;
            DOM_String *value;
                        DOM_Element *ownerElement;
        } Attr;
        struct { // small code stripped out for clarity } DocumentType;
        struct { // small code stripped out for clarity } CharacterData;
        struct { // small code stripped out for clarity } Notation;
        struct { // small code stripped out for clarity } Entity;
        struct { // small code stripped out for clarity } ProcessingInstruction;
    } u;
}}}
b) DOM_NodeList itself is a doubly-linked list with head/tail pointers
{{{

typedef struct DOM_NodeList DOM_NamedNodeMap;        //Note: DOM_NamedNodeMap reuses the DOM_NodeList

struct NodeEntry {
        NodeEntry *prev;
        NodeEntry *next;
        DOM_Node *node; 
};

struct DOM_NodeList {
    DOM_Document *_ownerDocument;
        DOM_Element *_ownerElement;
        int length;
        NodeEntry *first;
        NodeEntry *last;
        unsigned short filter;
        struct DOM_NodeList *list; /* Used for entities and notations */
#if FAST_NODELIST
        struct hashmap* _map;                   //Used for fast lookup based on @attribute name (need libmba for the hashmap)
#endif
};

}}}
Don't need the documentation at all but here it is anyway :
''[[ DOMC - A C Implementation of DOM docs | http://www.ioplex.com/~miallen/domc/dl/docs/ref/domc.html ]]''
''[[ Design view of DOM-like trees created by libXML | http://xmlsoft.org/XSLT/internals.html#libxml ]]''
----
!! Japanese
''[[ Superb info on Encoding in Japanese | http://www.sljfaq.org/afaq/encodings.html ]]''
''[[ Windows UTF-8 and Unicode | http://superuser.com/questions/221593/windows-7-utf-8-and-unicode ]]''
''[[ How to Identify a Charset at MS-Help | http://msdn.microsoft.com/en-us/library/aa752010%28v=vs.85%29.aspx ]]''
''[[ Samba Howto on unicode and localization | http://www.samba.org/samba/docs/man/Samba-HOWTO-Collection/unicode.html ]]''
[[Code Pages Supported by Windows | http://msdn.microsoft.com/en-us/goglobal/bb964654]]
[[ Windows Codepage: 932 (Japanese Shift-JIS) | http://msdn.microsoft.com/en-us/goglobal/cc305152 ]]
----
!! Tools
''[[ How to determine Text File Encoding | http://codesnipers.com/?q=node/68 ]]''
''[[ How can I determine Encoding of a file | http://developers.sun.com/global/technology/standards/reference/faqs/determining-file-encoding.html ]]''
[[ chcp windows command to list/set the codepage | http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/chcp.mspx?mfr=true ]]
''[[ Perl script to Guess charset | http://search.cpan.org/~dankogai/Encode-2.40/lib/Encode/Guess.pm ]]''
''[[ Utility to convert SHIFT-JIS japanese to UTF-8 | http://superuser.com/questions/265368/utility-for-converting-shift-jis-encoded-files-to-utf-8-encoded-files ]]''
----
!! Links
''[[ Collection of links on Unicode and Codepages | http://www.i18nguy.com/unicode/codepages.html ]]''
| !date | !user | !location | !storeUrl | !uploadDir | !toFilename | !backupdir | !origin |
| 29/01/2014 12:51:37 | Guru | [[/|http://guruduttmallapur.tiddlyspot.com/]] | [[store.cgi|http://guruduttmallapur.tiddlyspot.com/store.cgi]] | . | [[index.html | http://guruduttmallapur.tiddlyspot.com/index.html]] | . |
| 21/02/2014 14:34:04 | Guru | [[/|http://guruduttmallapur.tiddlyspot.com/]] | [[store.cgi|http://guruduttmallapur.tiddlyspot.com/store.cgi]] | . | [[index.html | http://guruduttmallapur.tiddlyspot.com/index.html]] | . | ok |
| 21/02/2014 14:36:49 | Guru | [[/|http://guruduttmallapur.tiddlyspot.com/]] | [[store.cgi|http://guruduttmallapur.tiddlyspot.com/store.cgi]] | . | [[index.html | http://guruduttmallapur.tiddlyspot.com/index.html]] | . | ok |
| 21/02/2014 14:38:02 | Guru | [[/|http://guruduttmallapur.tiddlyspot.com/]] | [[store.cgi|http://guruduttmallapur.tiddlyspot.com/store.cgi]] | . | [[index.html | http://guruduttmallapur.tiddlyspot.com/index.html]] | . |
| 21/02/2014 14:55:46 | Guru | [[/|http://guruduttmallapur.tiddlyspot.com/#[[Example%20TiddlyWiki%20Syntax]]]] | [[store.cgi|http://guruduttmallapur.tiddlyspot.com/store.cgi]] | . | [[index.html | http://guruduttmallapur.tiddlyspot.com/index.html]] | . |
| 21/02/2014 15:02:41 | Guru | [[/|http://guruduttmallapur.tiddlyspot.com/#%5B%5BExample%20TiddlyWiki%20Syntax%5D%5D]] | [[store.cgi|http://guruduttmallapur.tiddlyspot.com/store.cgi]] | . | [[index.html | http://guruduttmallapur.tiddlyspot.com/index.html]] | . |
| 09/03/2014 07:52:58 | Guru | [[/|http://guruduttmallapur.tiddlyspot.com/]] | [[store.cgi|http://guruduttmallapur.tiddlyspot.com/store.cgi]] | . | [[index.html | http://guruduttmallapur.tiddlyspot.com/index.html]] | . |
| 27/08/2014 09:35:03 | Guru | [[/|http://guruduttmallapur.tiddlyspot.com/]] | [[store.cgi|http://guruduttmallapur.tiddlyspot.com/store.cgi]] | . | [[index.html | http://guruduttmallapur.tiddlyspot.com/index.html]] | . | ok |
| 27/08/2014 10:07:19 | Guru | [[/|http://guruduttmallapur.tiddlyspot.com/]] | [[store.cgi|http://guruduttmallapur.tiddlyspot.com/store.cgi]] | . | [[index.html | http://guruduttmallapur.tiddlyspot.com/index.html]] | . |
| 01/03/2015 02:06:20 | Guru | [[/|http://guruduttmallapur.tiddlyspot.com/]] | [[store.cgi|http://guruduttmallapur.tiddlyspot.com/store.cgi]] | . | [[index.html | http://guruduttmallapur.tiddlyspot.com/index.html]] | . |
/***
|''Name:''|UploadPlugin|
|''Description:''|Save to web a TiddlyWiki|
|''Version:''|4.1.3|
|''Date:''|Feb 24, 2008|
|''Source:''|http://tiddlywiki.bidix.info/#UploadPlugin|
|''Documentation:''|http://tiddlywiki.bidix.info/#UploadPluginDoc|
|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
|''~CoreVersion:''|2.2.0|
|''Requires:''|PasswordOptionPlugin|
***/
//{{{
version.extensions.UploadPlugin = {
	major: 4, minor: 1, revision: 3,
	date: new Date("Feb 24, 2008"),
	source: 'http://tiddlywiki.bidix.info/#UploadPlugin',
	author: 'BidiX (BidiX (at) bidix (dot) info',
	coreVersion: '2.2.0'
};

//
// Environment
//

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

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

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

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

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

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

//
// uploadOptions Macro
//

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

//
// upload functions
//

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

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

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

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

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

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

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

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

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

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

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

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

//
// Utilities
// 

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

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

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

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

//
// Initializations
//

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

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

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

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


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


//}}}

!! Do Not Disturb Registry for phones
{{{
SMS 'START DND' or 'STOP DND' to 1909 from your cell phone. Takes upto 45 days to activate
}}}
[[ National Do Not Call Registry for India | http://ndncregistry.gov.in/ndncregistry/index.jsp ]]
[[ Search your number's DND activation for india here | http://ndncregistry.gov.in/ndncregistry/search.misc ]]
!!VMServer vs. ESXi
[[ Diagram of architecture of VMWare Server vs ESXi | http://www.thegeekstuff.com/2010/06/vmware-server-and-vmware-esxi-introduction ]]
[[ vSphere land blogposts on ESXi | http://vsphere-land.com/tag/esxi ]]
----
!! 4.1
''[[ VMWare ESXi 4.1 Cookbook Video Recipes | http://itcookbook.net/book/vmware-esxi-recipes ]]''
[[ Patching the free ESXi 4.1 installable with CLI command | http://searchvmware.techtarget.com/tip/Two-ways-to-patch-VMware-ESXi-Installable ]]
----
!! vSphere Client 4.1

----
!! 4.0
[[ VMWare ESXi 4.0 step-by-step installation guide | http://www.thegeekstuff.com/2010/06/vmware-esxi-installation-guide ]]
[[ VMWare vSphere Client 4.0 step-by-step installation guide | http://www.thegeekstuff.com/2010/06/vmware-vsphere-client-install ]]
----
''Copy of my undelivered mail to Valgrind Dev-list:''
{{{
Hi,

This is regarding an updation to the "Valgrind Frontends/GUIs" page: http://www.valgrind.org/downloads/guis.html

Could you add an entry for Eclipse IDE's incubation project called Linux Tools.

This is a GUI plugin suite to  integrate Valgrind into the Eclipse C++ CDT.

As can be seen on forums like stackoverflow.com lots of people are interested in
using Valgrind (and such other tools) from the Eclipse IDE but don't know
how to go about doing it. Having an entry on Valgrind's pages would help out
such people.

Some useful links on usage of Valgrind with LinuxTools:

[Website]
This is the Eclipse Linux Tools website:
http://www.eclipse.org/linuxtools/index.php
 
2) Valgrind support page:
http://www.eclipse.org/linuxtools/projectPages/valgrind/
 
[Usage]
1) Valgrind User Guide (Wiki):
http://wiki.eclipse.org/Linux_Tools_Project/Valgrind/User_Guide
 
2) How-to configure Valgrind plugin of Eclipse (with Video Demos):
http://www.eclipse.org/linuxtools/projectPages/valgrind/
 
3) How-to configure Callgrind plugin of Eclipse:
http://www.eclipse.org/linuxtools/projectPages/callgraph/
 
4) How-to use Valgrind with Eclipse as an External Tool:
http://kapo-cpp.blogspot.com/2007/02/detecting-memory-leak.html
 
[Download]
Eclipse IDE for C/C++ Linux Developers 
(includes Incubating components like valgrind, gprof, systemtap etc) (120 MB): 
http://techtalkies.blogspot.com/2010/09/howto-install-eclipse-cdt-for-c.html

[Installation]
My blog post "Howto install Eclipse CDT for C++ programming on Linux":
http://techtalkies.blogspot.com/2010/09/howto-install-eclipse-cdt-for-c.html


- Gurudutt Mallapur.
}}}
!!Searching and view results with grep and vim
{{{
#Search for 'myfunction' in current window
:grep 'myfunction' %
#Search for 'myfunction' in current directory
:grep 'myfunction' *
#Search for 'myfunction' in directory
:grep 'myfunction'  ../../*

#View hyperlinks in the 'quickfix window' use CTRL+w+w to jump to it and press enter to view the corresponding file
:cw
}}}
''[[ Find In Files from within vim using grep |  http://vim.wikia.com/wiki/Find_in_files_within_Vim ]]''
!! Frequently used commands
{{{
# Get back AddressBar (mainToolBar)
:set go+=mTB

#Find command
/
}}}
----
[[ vimperator cheatsheet | http://simplicityroad.livejournal.com/1938.html ]]
[[ links on vimperator | http://www.calmar.ws/firefox ]]
''[[ How to control Firefox using Vim keybindings - article at linux.com | http://www.linux.com/archive/feed/114419 ]]''
''[[ Vimperator FireFox addon install | https://addons.mozilla.org/en-US/firefox/addon/vimperator/contribute/roadblock/?src=addondetail&version=2.3.1 ]]''
''[[ Visual Vimperator CheatSheet | http://sheet.shiar.nl/vimperator ]]''
''[[ vimperator labs | http://vimperator.org/vimperator ]]''
''[[ vimperators liberator library for extending mozilla thunderbird, firefox, XUL, songbird | http://vimperator.org/?title=Tips_and_Tricks ]]''
----
!! See Also
[[ delicious search on vimperator | http://www.delicious.com/search?p=vimperator&chk=&context=main|&fr=del_icio_us&lc= ]]
[[ Super Collection of books on Virtualization (VMWare, VirtualBox etc) | http://www.virtuatopia.com/index.php/Main_Page ]]
''[[ Hyper Visor Essentials | http://www.virtuatopia.com/index.php/Hyper-V_Essentials ]]''
!! AVOID STALE copy
'' DO a 'Ctl+Shift+R' to avoid stale copies of SpotNotes ''





----
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://guruduttmallapur.tiddlyspot.com/controlpanel]] (your control panel username is //guruduttmallapur//).
<<tiddler TspotControls>>
See also GettingStarted.

@@font-weight:bold;font-size:1.3em;color:#444; //Working online// &nbsp;&nbsp;@@ You can edit this ~TiddlyWiki right now, and save your changes using the "save to web" button in the column on the right.

@@font-weight:bold;font-size:1.3em;color:#444; //Working offline// &nbsp;&nbsp;@@ A fully functioning copy of this ~TiddlyWiki can be saved onto your hard drive or USB stick.  You can make changes and save them locally without being connected to the Internet.  When you're ready to sync up again, just click "upload" and your ~TiddlyWiki will be saved back to tiddlyspot.com.

@@font-weight:bold;font-size:1.3em;color:#444; //Help!// &nbsp;&nbsp;@@ Find out more about ~TiddlyWiki at [[TiddlyWiki.com|http://tiddlywiki.com]].  Also visit [[TiddlyWiki.org|http://tiddlywiki.org]] for documentation on learning and using ~TiddlyWiki. New users are especially welcome on the [[TiddlyWiki mailing list|http://groups.google.com/group/TiddlyWiki]], which is an excellent place to ask questions and get help.  If you have a tiddlyspot related problem email [[tiddlyspot support|mailto:support@tiddlyspot.com]].

@@font-weight:bold;font-size:1.3em;color:#444; //Enjoy :)// &nbsp;&nbsp;@@ We hope you like using your tiddlyspot.com site.  Please email [[feedback@tiddlyspot.com|mailto:feedback@tiddlyspot.com]] with any comments or suggestions.
!! Adding a static IP route
[[ How to add persistent static routes in windows | http://www.itsyourip.com/networking/howto-add-persistent-static-routes-in-windows ]]
[[ adding a static IP route | http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/sag_tcpip_pro_addstaticroute.mspx?mfr=true ]]
[[ How to Use Static Routes with Routing and Remote Access Service | http://support.microsoft.com/kb/178993 ]]
----
!! How to find out MAC and 32/64 bit OS in windows
''[[ How to find whether your windows system is 32 bit or 64 bit | http://support.microsoft.com/kb/827218#Win2003 ]]''
[[ How to find the MAC address of your computer in windows | http://www.wikihow.com/Find-the-MAC-Address-of-Your-Computer ]]
[[ Configuring Windows XP for Ethernet network connection | http://www.nbcs.rutgers.edu/newdocs/winXP/net/winXPnet.php3 ]]
!! PPTs
[[ sharkfest '08 Presentations | http://sharkfest.wireshark.org/sharkfest.08 ]]
[[ sharkfest '09 Presentations | http://sharkfest.wireshark.org/sharkfest.09 ]]
[[ sharkfest '10 Presentations | http://sharkfest.wireshark.org/sharkfest.10 ]]
----
!! Video Tutorials
[[ Free introductory videos on wireshark | http://wiresharkbook.com/coffee/index.html ]]
[[ Videos downloadable from wireshark docs | http://www.wireshark.org/docs ]]
[[ Training Materials for Wireshark university | http://www.wiresharktraining.com/files ]]
[[ Video/PDF WSU01 - Wireshark Functionality and Fundamentals | www.wiresharktraining.com/files/wsu01-04spc_info.pdf ]]
[[ Video/PDF WSU02 - Wireshark TCP/IP Network Analysis | www.wiresharktraining.com/files/wsu02spc.pdf ]]
[[ Laura's Wireshark Jumpstart Material | http://www.scribd.com/doc/17301433/Wireshark-Jump-Start-Material-Laura-Chappell ]]
----
!! Install Wireshark
To enable packet capture without root permission follow instructions in these 2 blogs
{{{
#Fedora
#Already installed wireshark, just need to enable packet-capture without needing to run wireshark as root
$> su -
$> yum install bison flex gtk2-devel libpcap-devel c-ares-devel libsmi-devel gnutls-devel libgcrypt-devel krb5-devel GeoIP-devel

#Find dumpcap to enable packet capture for this program
$> locate dumpcap
/usr/sbin/dumpcap

#set capabilities to enable packet capture for non-root users
$> setcap 'CAP_NET_RAW+eip CAP_NET_ADMIN+eip' /usr/sbin/dumpcap        

$> ldconfig         #Refreshes the shared library cache with updated libraries
}}}
''Step-wise instructions for Fedora and Ubuntu: [[ Compile and Install Wireshark on Fedora and Ubuntu by Marc Weisel | http://binarynature.blogspot.com/2011/05/compile-and-install-wireshark-on-fedora.html ]]''
''Steps and explantion of steps: [[  Enabling Wireshark Packet Capture as Non-Root user by Jeremy Stretch at packetlife | http://packetlife.net/blog/2010/mar/19/sniffing-wireshark-non-root-user/ ]]''
''Step-by-step instructions and explanation: [[ Packet Capture Priviledges at wireshark wiki  | http://wiki.wireshark.org/CaptureSetup/CapturePrivileges ]]''
----
!! Network Trouble-shooting Newbie Howtos
[[ Wireshark wiki at wikipedia | http://en.wikipedia.org/wiki/Wireshark ]]
[[ New to Network Troubleshooting at wikishark wiki | http://wiki.wireshark.org/NetworkTroubleshooting/Overview ]]
[[ Network Troubleshooting at wikishark wiki | http://wiki.wireshark.org/NetworkTroubleshooting ]]
[[ Principles of network troubleshooting | http://www.inetdaemon.com/tutorials/troubleshooting/index.shtml ]]
[[ 3Com's Network Troubleshooting Overview | http://support.3com.com/infodeli/tools/netmgt/tncsunix/product/091500/c1ovrvw.htm ]]
[[ Cisco's Internetwork Troubleshooting Handbook | http://www.cisco.com/univercd/cc/td/doc/cisintwk/itg_v1/index.htm ]]
[[ Cisco's Overview section provides a good general problem-solving model | http://www.cisco.com/univercd/cc/td/doc/cisintwk/itg_v1/tr1901.htm ]]
----
!! Wireshark Newbie Howtos
[[ Capture setup at wireshark wiki | http://wiki.wireshark.org/CaptureSetup ]]
[[ Capture setup for Ethernet at wireshark wiki | http://wiki.wireshark.org/CaptureSetup/Ethernet ]]
----
!! Installation
{{{
# install the gui and command line commands for wireshark
$> yum install wireshark-gnome wireshark
}}}
----
!! Capture server-side packets and view on client side using tethereal
{{{
[server ]$> tethereal -f "tcp port not ssh" -w /tmp/tethereal/server-eth.cap
Capturing on eth0
986 
[server ]$> chmod 777 /tmp/tethereal/server-eth.cap
[server ]$> scp server:/tmp/tethereal/eth.cap client:/home/user/Desktop/tethereal/server-eth.cap
[client ]$> wireshark server-eth.cap &  #view the server side capture on any client machine
}}}
----
!! Customizing Wireshark
Using conversations to drill down to what you want ( Statistics > Conversations )
[[ Display filters at wireshark wiki | http://wiki.wireshark.org/DisplayFilters ]]
{{{
$> locate dfilters
/root/.wireshark/dfilters
/usr/share/wireshark/dfilters
}}}
[[ Coloring rules at wireshark wiki | http://wiki.wireshark.org/ColoringRules ]]
----
!! How Wireshark interprets/translates/maps packets/port-numbers to protocols
Regular dissectors just look at Port Numbers
Heuristic Dissectors peer inside the Packet Contents to determine the protocol.
[[ Wireshark Regular Dissector (by Port number) vs Heuristic Dissectors (by Packet Contents) to determine Protocol | http://www.wireshark.org/lists/wireshark-dev/200904/msg00055.html ]]
[[ IANA Well Known Port Numbers | http://www.iana.org/assignments/port-numbers ]]
----
!! Reassembly of TCP segments
Wireshark displays packet with ''Info: ..TCP segment of a reassembled PDU''
[[ TCP_Reassembly at wiki.wireshark | http://wiki.wireshark.org/TCP_Reassembly ]]
[[ TCP packet Info: Reassembled PDU in wireshark | http://www.wireshark.org/lists/wireshark-users/200806/msg00047.html ]]
{{{
The message means that TCP handed off the dissection to a higher layer protocol dissector (like HTTP dissector)
This dissector told the TCP dissector to collect multiple TCP segment to construct one PDU. 
If all goes well, the packet that contains the last part of the application PDU will have full dissection
of the application protocol. If this does not happen, please file a bug on http://bugs.wireshark.org and
attach the capture file of that particular tcp session.
You can disable the reassembly of TCP segments by un-checking the 
"Allow subdissector to desegment TCP streams" in the TCP protocol preferences. 
That way, all parts of the application PDU will be displayed on their own.
}}}
Note: Need to enable HTTP Reassembly in addition to TCP Reassembly using
#Edit->Preferences->Protocol->TCP->"Allow subdissector to desegment TCP streams"
#Edit->Preferences->Protocol->HTTP->Reassemble header/bodies/chunked transfers across multiple TCP segments
----
!! TCP and HTTP Relative Sequence Numbers
''[[ Understanding TCP Sequence and ACK numbers in wireshark | http://packetlife.net/blog/2010/jun/7/understanding-tcp-sequence-acknowledgment-numbers ]]''
[[ Web Proxy Sends TCP Reset Instead of Only Closing Session at MS-kb | http://support.microsoft.com/kb/317122 ]]
[[ Turn on/off TCP Relative Sequence Numbering | http://wiki.wireshark.org/TCP_Relative_Sequence_Numbers  ]]
{{{
Edit->Preferences->Protocols->TCP->Relative sequence numbers and window scaling
}}}
----
!! Wireshark shows False Negative on Header Checksum
Strangely checksum option was unchecked yet wireshark displayed checksum errors for my own machine's outgoing packets.
Solution: 
{{{
$> vi /home/user/.wireshark/preferences
    set tcp.check_checksum:FALSE and save the preferences
}}}
Exit wireshark and restart it with capture file.
Note: Wireshark->View->Reload doesn't work as preferences seem to be refreshed only at startup.
[[ Disabling checksum validation in wireshark at packetlife  | http://packetlife.net/blog/2008/aug/23/disabling-checksum-validation-wireshark/ ]]
[[ Checksum validation disabling on wireshark FAQ | http://www.wireshark.org/faq.html#q11.1 ]]
----
Control what and how much you capture with [[ Capture filters at wireshark wiki | http://wiki.wireshark.org/CaptureFilters ]]
tcpdump settings are common with other pcap based analyzers [[ tcpdump manual page | http://www.tcpdump.org/tcpdump_man.html ]]
[[ tcpdump and wireshark cheat sheets (pdf) | http://packetlife.net/blog/2008/oct/18/cheat-sheets-tcpdump-and-wireshark/ ]]
----
!! Wireshark Protocol Dissector
[[ Download Wireshark Generic Dissector Global Wireshark Plugin | http://wsgd.free.fr/index.html ]]
----
!! Export downloaded GIF, JPEG, PDF files from Wireshark Trace/Dump
# Select JPEG 200 OK packet
#Select JPEG from middle pane
# Right click->Export Selected Bytes
[[ Howto export JPEG file from wireshark| http://www.wireshark.org/lists/wireshark-users/200611/msg00125.html ]]
----
!! Tools and Utilities to extend/complement WireShark
''[[ Tools for working with wireshark and tshark at wiki | http://wiki.wireshark.org/Tools ]]''
----
! Reference
[[ Wireshark User Guide | http://www.linuxtopia.org/online_books/network_security/wireshark_user_guide/index.html ]]
''[[ Wireshark Display Filter Cheat Sheet | http://packetlife.net/media/library/13/Wireshark_Display_Filters.pdf ]]''
''[[ PDF Wireshark User Guide | http://www.wireshark.org/download/docs/user-guide-a4.pdf ]]''
''[[ Command line Man Pages on tcpdump, wireshark, tshark, dumpcap etc | http://www.wireshark.org/docs/man-pages/ ]]''
''[[ Wireshark Articles and bibliography | http://www.wireshark.org/bibliography.html ]]''
[[ Wireshark display filter reference | http://www.wireshark.org/docs/dfref ]]
''[[ Wireshark Configuration Files and Folders | http://www.wireshark.org/docs/wsug_html_chunked/ChAppFilesConfigurationSection.html ]]''
----
[[ Online Wireshark User Guide | http://www.wireshark.org/docs/wsug_html_chunked/index.html ]]
[[ Wireshark HTTP protocol reference wiki | http://wiki.wireshark.org/Hyper_Text_Transfer_Protocol?action=show&redirect=HTTP ]]
[[ Wireshark Protocol Reference wiki | http://wiki.wireshark.org/ProtocolReference ]]
[[ wireshark and tools command line man-pages | http://www.wireshark.org/docs/man-pages ]]
[[ Wireshark documentation | http://www.wireshark.org/docs ]]
[[ Laura Chapell's booklist | http://wiresharkbook.com/booklist.htm ]]
[[ libpcap  wiki at wikipedia | http://en.wikipedia.org/wiki/Pcap ]]
----
!! Older references
[[ Ethereal website | http://www.ethereal.com]]
[[ Ethereal FAQ | http://www.ethereal.com/faq.html ]]
[[ Ethereal Docs | http://www.ethereal.com/docs ]]
[[ Ethereal wiki | http://wiki.ethereal.com ]]
----
!! Syntax Checking
{{{
#Useful for checking errors in the xml (not xslt) like mismatched start/end of elements, incorrect comment syntax etc.
$> xmllint <myscript.xsl> | less
}}}
----
! Editors
!!XmlCopyEditor
[[ xmlcopyeditor CUI (GPL) for linux | http://sourceforge.net/apps/trac/xml-copy-editor ]]
[[ installation steps from xmlcopyeditor wiki | http://sourceforge.net/apps/trac/xml-copy-editor/wiki ]]
xmlcopyeditor dependencies:
* libwxgtk2.8-dev
* libboost-dev
* libxerces-c2-dev
* libxml2-dev
* libxslt-dev
* libpcre++-dev 
----
!!!XmlCopyEditor Installation
{{{
# Install dependenices
$> su -
$> yum install wxGTK wxGTK-devel pcre-devel xerces-c xerces-c-devel aspell-devel
$> rpm -ivh xmlcopyeditor*.rpm 
     (OR)
$> tar xvzf  xmlcopyeditor-*.tar.gz
$> cd  xmlcopyeditor-*
$> ./configure  --enable-unicode
$> make 
$> make install
}}}
[[ Download xmlcopyeditor 1.2.0.6 RPM | http://rpm.pbone.net/index.php3/stat/4/idpl/13870745/dir/pclinuxos/com/xmlcopyeditor-1.2.0.6-1pclos2010.i586.rpm.html ]]
[[ xmlcopyeditor installation howto for fedora | http://facti.net/drupal/node/103 ]]
----
!!vim
!! Xml folding in Vim
{{{
#Enable xml folding
:set foldmethod=syntax
zo - open
zO - Open recursively
zc - close
zC - Close recursively
}}}
----
!! Xml pretty printing
{{{
$> xmllint --format ugly.xml > pretty.xml
$> cat ugly.xml | xmllint - --format > pretty.xml
}}}
''[[ xml pretty printing | http://www.pinkjuice.com/howto/vimxml/moretasks.xml#prettyprinting ]]''
''[[ reindent.xsl - stylesheet to pretty-print XML | http://skew.org/xml/stylesheets/reindent/ ]]''
[[Guide to editing XML with Vim | http://www.pinkjuice.com/howto/vimxml]]
[[Guide to editing XML with Vim (PDF) | http://www.pinkjuice.com/howto/vimxml/print/vimxml.pdf]]
----
!! Vim Scripts
''[[ Excellent - XML Hacks - Howto edit XML with Vim | http://etutorials.org/XML/xml+hacks/Chapter+2.+Creating+XML+Documents/Hack+13+Edit+XML+with+Vim ]]''
[[ xsl.vim : syntax highlighter plugin for vim | http://www.vim.org/scripts/script.php?script_id=257 ]]
[[ xmledit : A vim filetype plugin to help edit XML and HTML documents | http://www.vim.org/scripts/script.php?script_id=301 ]]
[[ xsltassistant.vim : vim script to help you write a XSLT file  | http://www.vim.org/scripts/script.php?script_id=2547 ]]
[[ xslt: XSLT filetype plugin autocomplete | http://www.vim.org/scripts/script.php?script_id=1328 ]]
[[ xml.vim : script to help in editing xml xhtml and xslt files | http://www.vim.org/scripts/script.php?script_id=1397 ]]
----
!! xopus
[[ xopus XML editor for Browsers | http://xopus.com/ ]]
[[ xopus feature list and videos | http://xopus.com/xopus-web-based-wysiwyg-xml-editor.html ]]
[[ WYSIWYG XML Editors | http://stackoverflow.com/questions/1663856/open-source-tool-script-for-visual-editing-of-xml ]]
----
!!KomodoEdit
[[ KomodoEdit free open source | http://www.activestate.com/komodo%5Fedit/ ]]
[[ KomodoEdit Feature List | http://www.activestate.com/komodo-ide/features ]]
//Community Editions are available as a free download for ActivePerl, ActivePython and ActiveTcl.
Recommended for open source projects and community developers, the latest versions are available for Windows, Mac, and Linux (not AIX, HP-UX, or Solaris). It is only supported through community forums and cannot be distributed within applications.//
[[ Free Download of CommunityEdition of KomodoEdit | http://www.activestate.com/downloads ]]
----
!! Other Xml Utilities
[[ Comparison of xml editors at wikipedia | http://en.wikipedia.org/wiki/Comparison_of_XML_editors ]]
[[ XML editors at Open Directory Project | http://www.dmoz.org/Computers/Data_Formats/Markup_Languages/XML/Tools/Editors ]]
[[ List of xml editors at xml.com | http://www.xml.com/pub/pt/3 ]]
[[ Comparison of free xml editors | http://www.roseindia.net/opensource/open-source-xml-editor.shtml ]]
[[Comparison of FOSS XML Editors for Linux | http://www.linux.com/archive/feed/43020 ]]
[[ XML.com review of XML Editors | http://www.xml.com/pub/rg/XML_Editors ]]
[[ XML Editors listing at Scripting News | http://essaysfromexodus.scripting.com/directory/1026/xmlEditors ]]
[[ Best Free Editor for xml, xslt, xsl-fo at stackoverflow | http://stackoverflow.com/questions/2424708/what-is-the-best-free-editor-for-xslt-and-mybe-xslfo-and-xml ]]
----
[[ EditiX free xml editor | http://free.editix.com/download.html ]]
Visual Studio Express Edition (Web Developer Edition)
[[ Freeware XmlPad 3 for windows at wmhelp.com | http://www.wmhelp.com/xmlpad3.htm ]]
[[ XMLStarlet commandline xml utilities | http://xmlstar.sourceforge.net/overview.php ]]
[[ XMLStarlet docs | http://xmlstar.sourceforge.net/docs.php ]]
[[ kxmleditor at sourceforge | http://sourceforge.net/projects/kxmleditor ]]
[[ QuantaPlus Kdedevweb at wikipedia | http://en.wikipedia.org/wiki/Quanta_Plus ]]
[[ Eclipse XSLT plugin with XPATH | http://eclipsexslt.sourceforge.net/chapter-usage.html ]]
----
!!Generate XSLT to view xml as HTML
{{{
$> xmllint --shell doc.xml              #Opens a shell with directory like commands ls, cat, pwd, grep, dir, xpath, set
}}}
''[[ Excellent - Analysing an XML Elements as a Tree View (using tree-view.css and tree-view.xsl) | http://skew.org/xml/stylesheets/treeview ]]''
''[[ Browsing XML like a directory or folder with xpaths using xmllint's shell option | http://linux.byexamples.com/archives/565/your-xml-friend-xpath-command-line-xmllint/ ]]''
[[ StylusStudio | http://www.stylusstudio.com/xslt%5Feditor.html ]]
[[ Altova StyleVision | http://www.altova.com/products/stylevision/xslt%5Fstylesheet%5Fdesign%5Ffor%5Fhtml.html ]]
[[ Visual Editor to generate xslt to display xml as html | http://stackoverflow.com/questions/1143543/drag-and-drop-generation-of-xslt-for-displaying-xml-as-html ]]
----
! XSLT Processor
[[ Free community edition command line xslt processor for Windows: AltovaXML | http://www.altova.com/altovaxml.html ]]
[[ Free online xslt testing service | http://stackoverflow.com/questions/996798/suggestions-for-an-online-xslt-tester ]]
----
! Debugging
[[ XSLT debugger at sourceforge | http://xsldbg.sourceforge.net/ ]]
''[[ xsldb sample debugging session | http://xsldbg.sourceforge.net/#xsldbg%20example%20session ]]''
''[[ KXSLDbg | http://www.kde.org/applications/development/kxsldbg/ ]]''
''[[ KXSLDbg Handbook | http://docs.kde.org/development/en/extragear-sdk/kxsldbg/index.html ]]''
[[ How to debug XSLT on the fly Uche Ogbuji | http://www.ibm.com/developerworks/xml/library/x-debugxs/index.html ]]
----
!! Other Debuggers
Oxygen, 
LiquidXML Studio, 
Altova XMLSpy,
Visual Studio with [[ xsltprofiler addin | http://code.msdn.microsoft.com/xsltprofiler ]]
[[ Free Version of Xselerator | http://sourceforge.net/projects/xselerator/ ]]
[[ Discussion on Best XSLT debugger at stackoverflow | http://stackoverflow.com/questions/209211/best-xslt-editor-debugger ]]
----
[[ Linqer - SQL to LINQ converter | http://www.sqltolinq.com/ ]]
[[ Linqer trial version download | http://www.sqltolinq.com/download ]]
----
''[[ Simply super article on  "How XSLT Works" by Evan Lenz | http://lenzconsulting.com/how-xslt-works ]]''
''[[ Debugging XSLT stylesheet scripts FAQ | http://www.sagehill.net/docbookxsl/DebuggingXSL.html ]]''
!!Tutorials
''[[ XSLT For Dummies online book | http://www.vckbase.com/vckbase/ebooks/xslt/html/x0-0.htm ]]''
''[[ XSLT Cookbook 2 online book | http://xsltcookbook2.atw.hu/xsltckbk2-chp-8-sect-2.html ]]''
''[[ Jeni Tennison XSLT Tutorial | http://jenitennison.com/xslt/index.html ]]''
''[[ XML, XSLT, XPATH, XQuery Quick-Reference Cards | http://www.mulberrytech.com/quickref/ ]]''
''[[ XSL tutorial at w3schools | http://www.w3schools.com/xsl ]]''
[[ XSL tutorials at xmlfiles.com | http://www.xmlfiles.com/xsl/ ]]
[[ XSLT examples at w3schools | http://www.w3schools.com/xsl/xsl_examples.asp ]]
[[ XSLT by Example at objects by design | http://objectsbydesign.com/projects/xslt/xslt_by_example.html ]]
''[[ XSLT By Example Blog | http://xsltbyexample.blogspot.com/ ]]''
[[ XML,XSL, XPATH tutorial at sitepoint | http://www.sitepoint.com/really-good-introduction-xml/ ]]
[[ XSL Hands on Tutorial at DW | http://www.ibm.com/developerworks/xml/library/x-hands-on-xsl/index.html?dwzone=xml ]]
[[ XSLT Tutorial at Zvon (1999) | http://zvon.org/xxl/XSLTutorial/Output/index.html ]]
[[ Learn XSLT Tutorial | http://www.learn-xslt-tutorial.com/ ]]
[[ Getting Started with XSLT at NetTuts | http://net.tutsplus.com/tutorials/html-css-techniques/getting-started-with-xslt/ ]]
[[ Chapter 6 of XML and Web Technologies on XSLT | http://www.brics.dk/ixwt/xslt.pdf]]
[[ XSL Concepts and Practical Use (a bit dated 2000) | http://nwalsh.com/docs/tutorials/xsl/xsl/frames.html ]]
[[ XSL Tutorial Slides by nwalsh | http://nwalsh.com/docs/tutorials/xsl/xsl/slides.html ]]
[[ XSLT and XPATH tutorial at xmlmaster.org  |http://www.xmlmaster.org/en/article/d01/c08/ ]]
[[ Chapter 17 of XML Bible on XSL | http://www.cafeconleche.org/books/bible2/chapters/ch17.html ]]
[[ XSL-FO Tutorial with Samples | http://www.antennahouse.com/XSLsample/XSLsample.htm ]]
''[[ What is Functional Programming | http://www.defmacro.org/ramblings/fp.html ]]''
----
!! Groups
''[[ Top XML at O'reilly | http://oreilly.com/xml ]]''
''[[ XSLT Open mailing list at Mulberry Tech | http://www.mulberrytech.com/xsl/xsl-list/ ]]''
----
!! Gurus
''[[ Michael Kay Blog at saxonica | http://saxonica.blogharbor.com/blog ]]''
''[[ Jeni Tennison's Blog on XSLT | http://www.jenitennison.com/blog/ ]]''
''[[ Dmitri Novatchev's XSLT blog | http://dnovatchev.wordpress.com/ ]]''
----
!! Howtos (Tips and Tricks)
@@''[[ XSLT Identity transform or copy with exceptions explained | http://www.xmlplease.com/xsltidentity ]]''@@
''[[ Group By using the Muenchian Method by Jeni Tennison | http://www.jenitennison.com/xslt/grouping/muenchian.html ]]''
@@''[[ XSLT Efficiency Guidelines | http://docs.syntext.com/developers_guide/xslt-efficiency.html ]]''@@
----
''[[ Reducing XSLT copies of variables | http://blog.jwbroek.com/2010/05/xslt-copies-and-sequences.html ]]''
Note: xsl:sequence uses references instead of copies. This saves copying time and memory. 
But it has a downside. You shouldn't use it in successive filtering of nodes.
Since you can still access the "filtered" branches/nodes with xpaths
{{{
<xsl:variable name="A"><xsl:sequence select="document($path)" /></xsl:variable>
<xsl:variable name="B"><xsl:sequence select="$A [ not(@name='A')  ]" /></xsl:variable>
<xsl:variable name="C"><xsl:sequence  select="$B[ not(@name='B') ]" /></xsl:variable>

<!-- Works for sequence but returns empty node-set for copy-of -->
<xsl:message><xsl:value-of select="exsl:node-set($C)/*[@name='A']" /></xsl:message>
}}}
{{{
The elements xsl:sequence and xsl:copy-of can in most situations be substituted for one another. 
But in our example there is a big difference. Both variables contain the price element and its value. 
But the price element in the variable made with xsl:sequence is only a reference. 
With XPath expressions we can still move to parent element and into another child. 
With xsl:copy-of only what is copied is in the variable.
}}}
Refer: ''[[ xsl:sequence vs xsl:copy-of | http://www.xmlplease.com/xmltraining/xslt-by-example/examples/sequence_1.html ]]
----
''[[ XSLT tips for clean and fast code | http://www.onenaught.com/posts/23/xslt-tips-for-cleaner-code-and-better-performance ]]''
[[ How NOT to Program XSLT | http://www2.sims.berkeley.edu/academics/courses/is290-8/s04/lectures/5/dragons/allslides.html ]]
----
Workaround on appending to a file: ''[[ Discussion on Appending to a File | http://www.biglist.com/lists/xsl-list/archives/200707/msg00360.html ]]''
----
[[ Set operators in XPATH (and XSLT) | http://blog.jwbroek.com/2010/04/set-operators-in-xpath.html ]]
''[[ XSLT lookup tables | http://www.ibm.com/developerworks/library/x-xsltip.html ]]''
[[ Packaging XSLT Tables as EXSLT functions | http://www.ibm.com/developerworks/xml/library/x-tiplook2/index.html ]]
[[ Introduction to XSLT with simple examples | http://www.ibm.com/developerworks/library/it/it-0801art14/index.html ]]
[[ XSLT for the Uninitiated | http://theruntime.com/blogs/jaykimble/archive/2006/02/13/XSLT-for-the-Uninitiated-Part-1-Beginning-Xpath.aspx ]]
[[ Samples on Howto Transform XML using XSL-FO | http://www.antennahouse.com/XSLsample/XSLsample.htm ]]
[[ FAQ on XSLT Grouping | http://dpawson.co.uk/xsl/sect2/N4486.html#d6060e85 ]]
[[ Multi Pass XSLT by Uche | http://www.ibm.com/developerworks/xml/library/x-tipxsltmp/index.html ]]
[[ Multi Stage XSLT | http://www.oreillynet.com/xml/blog/2006/08/multistage_xslt_scripts.html ]]
[[ MVC with XML, JavaScript and XSLT | http://blog.stevensanderson.com/category/xslt/ ]]
[[ XQuery By Example Blog | http://xquerybyexample.blogspot.com/ ]]
[[ Using XSLT to filter and sort in the browser | http://www.johnvey.com/features/deliciousdirector/xslt-filter-sort.html ]]
----
''[[ Wrapping XSLT string functions like index-of(), string-before() to make them case-insensitive | http://blog.darwin-it.nl/2010/08/index-of-replace-and-key-value-parsing.html ]]''
[[ Finding relatives using xslt | http://www.xml.com/pub/a/2000/10/04/transforming/trxml5.html ]]
[[ Test if descendant node exists | http://stackoverflow.com/questions/5968809/xslt-test-if-node-exists-regardless-if-its-a-child-or-grandchild-of-current-nod ]]
[[ How to find if current node is ancestor or descendant of a particular node | http://stackoverflow.com/questions/1886154/xsl-how-to-test-if-the-current-node-is-a-descendent-of-another-node ]]
[[ How to remove duplicate xml nodes using xslt | http://stackoverflow.com/questions/355691/how-to-remove-duplicate-xml-nodes-using-xslt ]]
----
!! Tools
''[[ XPATHER Firefox Addon for XPATHs | https://addons.mozilla.org/en-US/firefox/addon/xpather/ ]]''
''[[ Online test your XPATH queries with XLAB at ZVON.org | http://zvon.org/comp/tests/r/test-xlab.html ]]''
''[[ Jeni Tennison's Unit testing tool for XSLT Code | http://www.jenitennison.com/xslt/utilities/unit-testing/ ]]''
----
!! Books
''[[ Online XSLT Mastering XML Transformations 2nd Ed. | http://docstore.mik.ua/orelly/xml/xslt/index.htm ]]''
''[[ XSLT For Dummies online book | http://www.vckbase.com/vckbase/ebooks/xslt/html/x0-0.htm ]]''
''[[ XSLT Cookbook 2 online book | http://xsltcookbook2.atw.hu/xsltckbk2-chp-8-sect-2.html ]]''
[[ Book review of "XSLT 2nd Ed. Doug Tidwell" | http://word.mvps.org/tutorials/books/XML_Transformations.htm ]]
[[ XSLT for Dummies Source code and X-Factor IDE Download | http://www.dummies.com/store/product/XSLT-For-Dummies.productCd-0764536516,navId-322468,descCd-DOWNLOAD.html ]]
----
!!Reference
[[ XSLT Reference | http://www.zvon.org/xxl/XSLTreference/Output/ ]][[ XSLT Reference | http://www.zvon.org/xxl/XSLTreference/Output/ ]]
''[[ What you can NOT do with XSLT (FAQ dated 2000) by dpawson | http://www.dpawson.co.uk/xsl/sect2/nono.html ]]''
''[[ Future of XSLT as a skillset | http://news.ycombinator.com/item?id=1330607 ]]''
[[ XSL FAQ at dpawson | http://www.dpawson.co.uk/xsl/ ]]
[[ XSLT FAQ at xmlsoft | http://xmlsoft.org/XSLT/FAQ.html ]]
[[ Oasis XSL Coverpages - Collection of very technical material (updated 2003) | http://xml.coverpages.org/xsl.html ]]
[[ XSLT Element Reference at w3schools | http://www.w3schools.com/xsl/xsl_w3celementref.asp ]]
[[ XSLT Function Reference at w3schools | http://www.w3schools.com/xsl/xsl_functions.asp ]]
[[ XPATH, XQUERY and XSLT 2.0 Functions Reference at w3schools | http://www.w3schools.com/xpath/xpath_functions.asp ]]
[[ XSLT at wikipedia | http://en.wikipedia.org/wiki/XSLT ]]
[[ XSL at wikipedia | http://en.wikipedia.org/wiki/Extensible_Stylesheet_Language ]]
[[ XSLT Spec at w3.org | http://www.w3.org/TR/1999/REC-xslt-19991116 ]]
[[ XPATH Spec at w3.org | http://www.w3.org/TR/1999/REC-xpath-19991116/ ]]
[[ AJAX-XSLT google's Client side Javascript implementation of XSLT | http://goog-ajaxslt.sourceforge.net/ ]]
----
!! Exslt
!!! Tutorial
[[ Howto use Exslt at exslt.org | http://exslt.org/howto.html ]]
[[ Exslt by Example | http://www.ibm.com/developerworks/library/x-exslt.html ]]
[[ Exslt tools at stylusstudio | http://www.stylusstudio.com/xslt/exslt.html ]]
[[ XSLT videos at stylusstudio | http://www.stylusstudio.com/videos/ ]]
----
!!! Article
[[ Understanding the node-set() function of exslt | http://www.xml.com/pub/a/2003/07/16/nodeset.html ]]
[[ Extending XSLT with EXSLT | http://www.xml.com/pub/a/2005/01/05/tr-xml.html ]]
[[ Teaching XSLT new tricks with EXSLT | http://www.oreillynet.com/xml/blog/2007/03/teaching_xslt_new_tricks_with.html ]]
----
!!! Reference
[[ Exslt website for extensions to XSL | http://exslt.org ]]
[[ exslt node-set docs | http://www.exslt.org/exsl/functions/node-set/ ]]
[[ exslt func:function docs | http://www.exslt.org/func/elements/function ]]
----
!! xsltproc
{{{
$> xsltproc --verbose --debug tst.xsl tst.xml

$> man xsltproc 
    --verbose or -v: show logs of what's happening
    --timing: display the time used
    --debug: dump the tree of the result instead
    --stringparam name value : pass a (parameter, UTF8 string value) pair
    --dumpextensions: dump the registered extension elements and functions to stdout
}}}
[[ xsltproc tool options | http://xmlsoft.org/XSLT/xsltproc2.html ]]
[[ xsltproc man page | http://xmlsoft.org/XSLT/xsltproc.html ]]
----
!! Excerpted Notes on some commonly used xsl functions
[[ xslt function parameters and variables | http://www.w3.org/TR/xslt#variables ]]
[[ xslt top level variables (global) | http://www.w3.org/TR/xslt#top-level-variables ]]
[[ The xsl:template mode attribute | http://zvon.org/xxl/XSLTreference/Output/xslt_template_mode.html ]]
{{{
Both xsl:template and xsl:apply-templates have an optional mode attribute. 
If xsl:template does not have a match attribute, it must not have a mode attribute. 
If an xsl:apply-templates element has a mode attribute, then it applies only to those template rules from xsl:template elements that have a mode attribute with the same value; 
if an xsl:apply-templates element does not have a mode attribute, then it applies only to those template rules from xsl:template elements that do not have a mode attribute.
}}}
[[ xsl:copy element | http://www.w3schools.com/xsl/el_copy.asp ]]
{{{
The <xsl:copy> element creates a copy of the current node. 
Note: Namespace nodes of the current node are automatically copied as well, but child nodes and attributes of the current node are not automatically copied!
}}}
[[ xsl:copy-of element | http://www.w3schools.com/xsl/el_copy-of.asp ]]
{{{
The <xsl:copy-of> element creates a copy of the current node.
Note: Namespace nodes, child nodes, and attributes of the current node are automatically copied as well!
Tip: This element can be used to insert multiple copies of the same node into different places in the output.
}}}
----
[[ Joining two node sets in xslt | http://p2p.wrox.com/xslt/61490-joining-two-node-sets.html ]]
{{{
<xsl:variable name="Sections" select="/root/Sections"/>
<xsl:variable name="SectionCounts" select="/root/SectionCounts"/>
<xsl:for-each select="$Sections/Entity[EntityId = $SectionCounts/Entity[Count != 0]/EntityId]">
  ...
</xsl:for-each>

You asked for an xsl:for-each solution, so I gave you one, 
but if you had a little more experience you would probably have asked for xsl:apply-templates, 
 to make your code more modular. You don't need either of the variables here, they are just for readability.
}}}
----
[[ XPATH Specs on preceding-sibling | http://www.w3.org/TR/xpath/ ]]
{{{
# following-sibling::chapter[position()=1] selects the next chapter sibling of the context node
# preceding-sibling::chapter[position()=1] selects the previous chapter sibling of the context node
}}}
----
!! exit from a stylesheet using terminate
{{{
<xsl:message terminate="yes">Exiting...</xsl:message>
}}}
!! Tutorials
[[ YUI Coding examples | http://yuilibrary.com/yui/docs/examples ]]
----
!!Reference
''[[ YUI User Guides | http://yuilibrary.com/yui/docs/guides ]]''
''[[ YUI FAQ | http://yuilibrary.com/yui/docs/tutorials/faq ]]''
''[[ YUI API docs | http://yuilibrary.com/yui/docs/api ]]''
[[ YUI library website | http://yuilibrary.com ]]
!! Yum errors
Problem: [[ Cannot retrieve metadata from repository (repomd.xml) for fedora | http://www.linuxquestions.org/questions/linux-newbie-8/yum-error-cannot-retrieve-repository-metadata-repomd-xml-for-repository-base-698882/ ]]
Solution: Check network ip, route, gateway and dns adding dns/gateway info properly
[[ NetworkManager conflicts with ifconfig |  http://askubuntu.com/questions/1786/what-is-the-difference-between-network-manager-and-ifconfig-ifup-etc ]]
----
!! Howto (Re)Install Full Fedora DVD iso image on a CD installed Fedora machine
{{{
# Backup original repositories to restore later
$> cd /etc/yum.repos.d
$> mkdir original_repfiles
$> mv * original_repfiles/

# Mount the DVD iso
$> mkdir /mnt/dvd
$> mount -r -o loop /home/user/Desktop/FedoraDVD/Fedora-14-i386-DVD.iso /mnt/dvd

# Install the 'createrepo' command (may be already installed)
$> cd /mnt/dvd
$> find . -name 'createrepo*'
$> rpm -ivh ./Packages/createrepo-0.9.8-5.fc14.noarch.rpm

# Create repository
$> vim fedora-dvd.repo
[fedora-dvd]
name=Fedora $releasever - $basearch
failovermethod=priority
baseurl=file:///mnt/dvd
enabled=1
metadata_expire=7d
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$basearch

$> createrepo .
$> yum clean all
$> yum list

#Install entire DVD
$> yum reinstall '*'   # note the quotes around the *

# Restore original repositories
$> cd /etc/yum.repos.d
$> mkdir fedora-dvd-repo
$> mv * fedora-dvd-repo
$> mv fedora-dvd-repo/original_repfiles/* .
$> vim fedora-dvd-repo/fedora-dvd.repo
enabled=0

# Update DVD installation to latest updates
$> yum update
}}}
[[ Howto install from a DVD using Yum and rollback changes once you're done | http://crazy4tips.blogspot.com/2010/01/install-packages-offile-from-fedora-12.html ]]
[[ Howto install from a DVD using Yum | http://code.google.com/p/iredmail/wiki/Create_a_Local_Yum_Repository#Mount_your_CD/DVD_or_ISO_images ]]
[[Howto Create a Yum Repository from DVD ISO image | http://www.cyberciti.biz/tips/redhat-centos-fedora-linux-setup-repo.html ]]
[[ Somewhat complex wiki on same topic of Local install from "subset repositories" using YUM and ISO files | http://www.city-fan.org/tips/SubsetRepositoriesFedora12 ]]
----
!! Installing Java JRE 1.6 from SUN ( as GNU Java (GCJ) or OpenJDK is not fully compatible yet with SUN's implementation??)
[[ Installation instructions for JRE 1.6 | http://java.com/en/download/help/linux_install.xml#selfextracting ]]
[[ Howto install Sun Java on CentOS | http://wiki.centos.org/HowTos/JavaOnCentOS#head-98e26dc0ed04622c86be3e0d9cdb2baf63c07b19 ]]
[[ Howto install Sun Java at trading shim faq | http://www.trading-shim.org/faq/?java ]]
{{{
#Step1: Dowload 2 files from SUN site
    jre-6u24-linux-i586-rpm.bin  (installer script) and 
    jre-6u24-linux-i586.bin (actual jre-1.6)
----
#Step2: Run as root and chmod the installer script file
$> su -
$> chmod +x jre-6u24-linux-i586-rpm.bin 
----
#Step3: Execute the installer script
$> ./jre-6u24-linux-i586-rpm.bin 
Unpacking...
Checksumming...
Extracting...
UnZipSFX 5.50 of 17 February 2002, by Info-ZIP (Zip-Bugs@lists.wku.edu).
replace jre-6u24-linux-i586.rpm? [y]es, [n]o, [A]ll, [N]one, [r]ename: y
  inflating: jre-6u24-linux-i586.rpm  
Preparing...                ########################################### [100%]
   1:jre                    ########################################### [100%]
Unpacking JAR files...
	rt.jar...
	jsse.jar...
	charsets.jar...
	localedata.jar...
	plugin.jar...
	javaws.jar...
	deploy.jar...
 
Done.
----
#Step4: Point to the right installation of java
#Get current java source and version in case you need to undo the java switch
$> which java
$> java -version
java version "1.6.0_20"
OpenJDK Runtime Environment (IcedTea6 1.9.7) (fedora-52.1.9.7.fc14-i386)
OpenJDK Server VM (build 19.0-b09, mixed mode)
$> file /usr/bin/java
/usr/bin/java: symbolic link to `/etc/alternatives/java'
----
#Switch between to the SUN java from OpenJDK
$> ln -f -s /usr/java/jre1.6.0_24/bin/java /usr/bin/java
----
# Check if the switch worked
$> java -version
java version "1.6.0_24"
Java(TM) SE Runtime Environment (build 1.6.0_24-b07)
Java HotSpot(TM) Server VM (build 19.1-b02, mixed mode)
---
}}}
----
!! Yum Repository commands
{{{
$> yum repolist [all|enabled|disabled]
$> yum --enablerepo=updates clean metadata   #clean up a yum repository
}}}
----
!!Useful installations
{{{
#Development
$> yum install gcc gcc-c++ 
$> yum install gdb make svn build-essential rabbitvcs*
$> yum install boost boost-devel boost-doc cmake

#Source-code
$> yum install vim gvim ctags cscope gpm

$> yum install tcl tk colordiff
$> yum install vlock #manually lock your console

#Network Debugging
$> yum install wireshark-gnome wireshark   
$> yum install NetworkManager nmap ethtool tcptrack

$> yum list java*
$> yum install rhino  #javascript
$> yum install firefox4

# XML tools
$> yum install wxGTK wxGTK-devel pcre-devel xerces-c-2.8 xerces-c-2.8-devel aspell-devel
$> yum install libxml2 libxml2-devel libxslt libxslt-devel expat expat-devel
$> yum install xmlcopyeditor

# Open window (vertical/horizontal/custom) Tiling support with x-tile window manager
$> yum install x-tile

#Mindmap
$> yum install freemind
#NOTE: to have x-tile autostart at login: 
$> mkdir -p ~/.config/autostart && ln -s /usr/share/applications/x-tile.desktop ~/.config/autostart/x-tile.desktop

#Adobe Reader X (version 9)
a) Choose the following at the download site a) Linux, b) English, c) Reader 9.4.2 English for bin d) Click on Download a 43 Mb file
OR 
b)Directly dowload the rpm file from here ftp://ftp.adobe.com/pub/adobe/reader/unix/9.x/9.4.2/enu/AdbeRdr9.4.2-1_i486linux_enu.rpm
$> yum localinstall ./AdbeRdr*_enu.rpm --nogpgcheck -y
(OR)
$> rpm -ivh AdbeRdr9.4.2-1_i486linux_enu.rpm
$> /opt/Adobe/Reader9/bin/acroread &

#Chm viewer
$> yum install kchmviewer
#RTF editor
$> rpm -ivh ted*.rpm

#KDE development/tools
$> yum install kdesdk kdesdk-kompare #file/dir comparison
$> yum install k3b
$> yum install kdewebdev
}}}
[[ Install C++ compiler using yum on fedora | http://www.linuxquestions.org/questions/linux-newbie-8/how-to-install-g-compiler-622270 ]]
[[Setup the yum repositories(FC11)|http://digitizor.com/2009/06/17/how-to-fix-the-cannot-retrieve-repository-metadata-repomd-xml-error-in-fedora-11]]
[[Yum Guide|http://yum.baseurl.org/wiki/Guides]]
[[Yum - Software Management Guide (FC5)|http://docs.fedoraproject.org/en-US/Fedora_Core/5/html-single/Software_Management_Guide]]
[[ FAQ on upgrading Fedora using Yum | http://fedoraproject.org/wiki/YumUpgradeFaq]]
[[ Install vlc player on fedora linux | http://www.videolan.org/vlc/download-fedora.html ]]
----
[[ Howto Install Adobe Acrobat Reader on Fedora | http://www.idurun.com/?p=560 ]]
[[ Download Adobe Acrobat Reader X directly from ftp site | http://tech.jucktion.com/585/adobe-pdf-reader-x-offline-installer ]]
[[ Adobe Acrobat Reader X download | http://get.adobe.com/reader/otherversions ]]
[[ Adobe Acrobat Platform support | http://www.adobe.com/products/reader/faq.html#multiplatform-support ]]
[[ Ted RTF editor for Linux | http://www.nllgg.nl/Ted ]]
[[ x-tile tiling window manager setup info | http://www.giuspen.com/x-tile/ ]]
----
!Yum Video install howto (VLC and Flash)
{{{
#Installing VLC
$> rpm -ivh http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-stable.noarch.rpm
$> yum install vlc mozilla-vlc
#Installing Flash 
$> rpm -Uvh adobe-release-i386-1.0-1.noarch.rpm 
$> rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-adobe-linux
$> vi /etc/yum.repos.d/adobe-linux-i386.repo 
$> yum install nspluginwrapper alsa-plugins-pulseaudio flash-plugin
}}}
''[[ Howto install VLC media player for fedora | http://www.videolan.org/vlc/download-fedora.html ]]''
''[[ Howto install Adobe Flash Player for fedora | http://fedoraproject.org/wiki/Flash#Enabling_Flash_plugin ]]''
[[ Firefox video related addons | https://addons.mozilla.org/en-US/firefox/browse/type:7 ]]
[[ Linux videos | http://video.linux.com ]]
----
!! Yum command list
!!! Yum common commands
{{{
$> yum list [ pkg-name | regex ]
$> yum list installed [opt-pkg-name(s)]
$> yum list all
$> yum list updates
$> yum check-update
$> yum update [opt-pkg-name(s)]
$> yum remove pkg-name(s)
# show packages installed via other repos
$> yum list extras
# trace file to its providing package
$> yum whatprovides /etc/passwd
}}}
----
!!! Installing Software Groups
{{{
$> yum grouplist
----
  Installed Groups:
----
  Administration Tools
  GNOME Desktop Environment
  Graphical Internet
   Network Servers
   Office/Productivity
   Server Configuration Tools
   Sound and Video
   System Tools
----
   Available Groups:  (Useful Dev. Groups)
----
   Authoring and Publishing
   Books and Guides
   DNS Name Server
   Development Libraries
   Development Tools
   Directory Server
   Educational Software
   Electronic Lab
   Engineering and Scientific
   FTP Server
   Fedora Eclipse
   Fedora Packager
   GNOME Software Development
   Java Development
   KDE Software Compilation
   KDE Software Development
   MinGW cross-compiler
   MySQL Database
   Perl Development
   PostgreSQL Database
   Virtualization
   Web Development

$> yum groupinfo "group name"           #List Group members
$> yum groupinstall "group name"
$> yum groupupdate "group name"
$> yum groupremove "group name"
}}}
----
!!Yum Docs
[[Yum Command Quick Reference | http://www.cyberciti.biz/faq/rhel-centos-fedora-linux-yum-command-howto ]]
[[Yum tutorial|http://www.cyberciti.biz/faq/rhel-centos-fedora-linux-yum-command-howto]]
[[Yum Guide|http://yum.baseurl.org/wiki/Guides]]
[[Yum - Software Management Guide (FC5)|http://docs.fedoraproject.org/en-US/Fedora_Core/5/html-single/Software_Management_Guide]]
----
!!See Also
!!!Fedora Core Docs
[[Get Fedora|http://fedoraproject.org/get-fedora.html]]
[[Fedora Core Documentation (dated but useful)|http://docs.fedoraproject.org/en-US/index.html]]
[[Unofficial Fedora FAQ|http://www.fedorafaq.org]]
[[ RPM Guide from Fedora | http://docs.fedoraproject.org/en-US/Fedora_Draft_Documentation/0.1/html/RPM_Guide ]]
!! frox pure ftp proxy
frox is a pure ftp proxy which can work as a standalone and also with squid http proxy.
[[ frox website | http://frox.sourceforge.net ]]
''[[ frox FAQ | http://frox.sourceforge.net/doc/FAQ.html ]]''
''[[ Howto setup a transparent ftp probxy using frox and proftpd | http://blog.wains.be/2005/11/18/howto-setting-up-a-transparent-ftp-proxy-using-frox-and-proftpd ]]''
''[[ howto run wget behind a proxy server | http://linuxers.org/tutorial/wget-proxy-how-run-wget-behind-proxy-server ]]''
''[[ How to enable frox daemon at init | http://ubuntuforums.org/showthread.php?t=1625085 ]]''
{{{
#Install frox
$> apt-get install frox

#enable frox as daemon at init
$> vi /etc/default/frox
# Set to "yes" to have the init script start frox.
#RUN_DAEMON=no
RUN_DAEMON=yes

$> service frox restart
}}}
----
!! frox configuration
{{{
$> vi /etc/frox.conf
# Address to listen on - default is 0.0.0.0 If you are using an OS other
# than Linux and are doing transparent proxying then you will need to set
# this to the IP of a local interface. If using linux you could leave it
# commented out to listen on all local IPs.
#
Listen 192.168.2.1

# Port to listen on. Must be supplied.
#
Port 2121

# If specified then bind to this device
#
BindToDevice eth1

# A hack that should allow you to get away without putting resolver libraries
# into the chroot jail. The default is fine unless for some reason you have
# this hostname in /etc/hosts. If this sort of thing offends you, you may
# comment this out and copy resolver libraries into the chroot jail instead.
# See FAQ section 3.2 for details.
#
ResolvLoadHack wontresolve.doesntexist.abc

# User and group to drop priveliges to. This must be specified - if
# you really want to run as root (not a good idea) you must say so
# specifically, and have compiled with --enable-run-as-root.
#
# User nobody
# Group nogroup
User self
Group self

# This is frox's working directory - it must be specified. Temporary
# files and sockets will be created here. If you are using local
# caching then the cache will be stored in this directory too. It
# should be owned by frox with permissions 700. By default frox will
# also chroot to this dir on startup. To avoid this you must specifically
# set DontChroot to Yes.
#
 WorkingDir /usr/local/lib/frox
 DontChroot Yes

# Logging level. 0=No logging. 5=Critical errors only. 10= All errors.
# 15=Errors, other important stuf. 20= Errors, connections, cache
# hits/misses 25=Debug info including text of control session. By
# default frox will log through syslog as facility daemon. If you want
# frox to log to a file instead specify this in LogFile below. You may
# set LogFile to "stderr" if you wish it to log there. XferLogging
# defaults to on, and results in a one line log entry for each file
# transferred irrespective of the log level. You can turn this off
# below.
#
 LogLevel 25
 LogFile /usr/local/lib/frox/frox-log
 XferLogging yes

# Active --> Passive conversion. If set then all outgoing connections
# from the proxy will be passive FTP, regardless of the type of the
# connection coming in. This makes firewalling a lot easier. Defaults
# to no.
#
APConv yes

# Allow non-transparent proxying support. The user can connect
# directly to frox, and give his username as user@host:port or
# user@host. Defaults to no. NTPAddress gives the address to which
# incoming connections must be addressed if the client is to be offered
# non-transparent proxying. For most people using this it will be the same
# as the Listen address above. If not given then all connections will be
# offered non transparent proxying. If you are not using transparent
# proxying at all then you should leave NTPAddress commented out.
#
DoNTP yes
#NTPAddress 192.168.2.1:2121

# Note: Need to need to set the ACL sub-sections in order to really be secure
# # You don't really believe in this security stuff, and just want
# # everything to work.
ACL Allow * - *
}}}
----
!! See Also
[[ SuSe ftp-proxy | http://packages.debian.org/squeeze/net/ftp-proxy ]]
----
!! /etc/vsftpd.conf
Sample configuration
{{{
# Run standalone?  vsftpd can run either from an inetd or as a standalone
# daemon started from an initscript.
listen=YES

# Allow anonymous FTP? (Beware - allowed by default if you comment this out).
anonymous_enable=NO

# Uncomment this to allow the anonymous FTP user to upload files. This only
# has an effect if the above global write enable is activated. Also, you will
# obviously need to create a directory writable by the FTP user.
#anon_upload_enable=YES

# Uncomment this if you want the anonymous FTP user to be able to create
# new directories.
#anon_mkdir_write_enable=YES

# Uncomment this to allow local users to log in.
local_enable=YES

write_enable=YES

# Activate logging of uploads/downloads.
xferlog_enable=YES

# You may override where the log file goes if you like. The default is shown
# below.
xferlog_file=/var/log/vsftpd.log

# If you want, you can have your log file in standard ftpd xferlog format.
# Note that the default log file location is /var/log/xferlog in this case.
xferlog_std_format=YES

# You may fully customise the login banner string:
ftpd_banner=Welcome to blah FTP service.

# You may restrict local users to their home directories.  See the FAQ for
# the possible risks in this before using chroot_local_user or
# chroot_list_enable below.
chroot_local_user=NO

# You may specify an explicit list of local users to chroot() to their home
# directory. If chroot_local_user is YES, then this list becomes a list of
# users to NOT chroot().
chroot_local_user=NO
chroot_list_enable=NO
# (default follows)
chroot_list_file=/etc/vsftpd.chroot_list
}}}
''[[ vsftpd setup and configuration | http://www.brennan.id.au/14-FTP_Server.html ]]''