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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

hr {height:1px;}

a {text-decoration:none;}

dt {font-weight:bold;}

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

.txtOptionInput {width:11em;}

#contentWrapper .chkOptionInput {border:0;}

.externalLink {text-decoration:underline;}

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

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

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

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

.header {position:relative;}
.header a:hover {background:transparent;}
.headerShadow {position:relative; padding:4.5em 0em 1em 1em; left:-1px; top:-1px;}
.headerForeground {position:absolute; padding:4.5em 0em 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:0em 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 .3em 0;}
#sidebarTabs .tabContents {width:15em; overflow:hidden;}

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

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

.tiddlerPopupButton {padding:0.2em 0.2em 0.2em 0.2em;}
.popupTiddler {position: absolute; z-index:300; padding:1em 1em 1em 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 0em;}
.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 0em 0em 0.5em;}
.tab {margin:0em 0em 0em 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 0em 14em;}

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

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

.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:0em 0.25em; padding:0em 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 0em; font-size:.9em;}
.editorFooter .button {padding-top:0px; padding-bottom:0px;}

.fieldsetFix {border:0; padding:0; margin:1px 0px 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 0.3em 0.5em;}
#backstageToolbar {position:relative;}
#backstageArea a {font-weight:bold; margin-left:0.5em; padding:0.3em 0.5em 0.3em 0.5em;}
#backstageButton {display:none; position:absolute; z-index:175; top:0em; right:0em;}
#backstageButton a {padding:0.1em 0.4em 0.1em 0.4em; margin:0.1em 0.1em 0.1em 0.1em;}
#backstage {position:relative; width:100%; z-index:50;}
#backstagePanel {display:none; z-index:100; position:absolute; width:90%; margin:0em 3em 0em 3em; padding:1em 1em 1em 1em;}
.backstagePanelFooter {padding-top:0.2em; float:right;}
.backstagePanelFooter a {padding:0.2em 0.4em 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 1em;}
/* Fixes a feature in Firefox 1.5.0.2 where print preview displays the noscript content */
noscript {display:none;}
}
/*}}}*/
<!--{{{-->
<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>>
* Termino acuñado formalmente en 1956 en la conferencia de ~DarthMounth
* La inteligencia es la “capacidad   que   tiene   el   ser   humano   de adaptarse   eficazmente   al   cambio   de   circunstancias mediante el uso de información sobre esos cambios” -- ''John ~McCarthy'' (definición muy amplia)
* "Cada mente humana es el resultado del accionar de un comité de mentes de menor poder que conversan entre sí y combinan sus respectivas habilidades con el fin de resolver problemas" -- ''Marvin Minsky''
* Una ''técnica de IA'' es aquella que se utiliza con el fin de lograr que un determinado programa se comporte de forma inteligente sin pretender tener en cuenta la “ forma de razonamiento ”empleada para lograr ese comportamiento. Acudiendo solamente a la aplicación de reglas consecutivas al pie de la letra (Algoritmos -> en honor a matemático árabe AL&shy;-KWARIZMI).
** Pero los problemas complejos reales no se pueden solucionar de esta manera; entonce aparecen reglas que tratan de buscar soluciones ''Heurísticas'' en las cuales nunca nada nos garantiza que la aplicación de una de estas reglas nos acerque a la solución como ocurre con los anteriores.
* En la IA se puede observar dos enfoques diferentes:
** 1) La   IA   concebida   como   el   intento   por   desarrollar   una   tecnología   capaz   de   proveer   al ordenador capacidades de razonamiento similares a los de la inteligencia humana. [''Se centra en la utilidad y no el método''. Temas centrales, la representación y gestión del conocimiento. ''~McCarthy y Minsky'']
** 2) La IA en su concepción como investigación relativa a los mecanismos de la inteligencia  humana que se emplean en la simulación de validación de teorías. [''Sistema artificial capaz de realizar procesos cognitivos humanos haciendo importante el método''. Temas centrales, aprendizaje y adaptabilidad. ''Newell y Simon'' de la Carnegie Mellon University]
* La IA al tratar de construir maquinas que se comporten aparentemente como seres humanos han dado lugar al surgimiento de dos bloques enfrentados:
** Enfoque simbólico (top&shy;down ó IA clásica): representación del conocimiento humano (ejemplo ''Cyc'' de ''Douglas B. Lenat'');
*** Conocimiento acerca del problema particular.
*** Conocimiento a cerca de cómo obtener mas conocimiento a partir del que ya tenemos.
** Enfoque subsimbolico (conexionista): se orientan a la simulación de los elementos de mas bajo nivel dentro de los procesos inteligentes con la esperanza de que estos al combinarse permitan que espontáneamente surja el comportamiento inteligente (ejemplo redes neuronales y algoritmos genéticos) [''autonomía, aprendizaje y adaptación'']
* Lenguajes de programación:
** Haga ahora: bucle de instrucciones para una determinada tarea.
** Haga siempre que: no se conoce la solución pero se hacen intentos.
** De constreñimiento: a prueba y error
** Haga algo que tenga sentido [Minsky]: aprender del pasado
** Mejórense a sí mismo [Minsky]: capacidad de escribir programas mejores que ellos mismos.
* Y la creatividad?; en la medida que se logre escribir programas que exhiban propiedad, en esa misma medida se empezara a explicar la ''creatividad''.


>"Pienso que los virus informáticos muestran la naturaleza humana: la única forma de vida que hemos creado hasta el momento es puramente destructiva"
>&nbsp;&nbsp;&nbsp;&nbsp; -- ''Stephen Hawking''
''Actitudes, comportamiento, usos, clasificación de los usuarios de las redes sociales'' ^^(http://www.dreig.eu/caparazon/2009/02/09/actitudes-comportamiento-usos-clasificacion-de-los-usuarios-de-las-redes-sociales/)^^

* La comunicación online ha cambiado. Si antes se basaba solo en tareas o como modo de intercambio de información, ahora es un fin en sí mismo.
* Algunas razones por las q' los ''no usuarios'' no usan SN's:
** Seguridad: no dejar datos personales en lineeea.
** Experiencia técnica: falta de confianza en los PC's e Internet.
** Motivos intelectuales: para algunos es una perdida de tiempo. Usan más los dispositivos móviles.
* Entre ''41'' y ''44%'' de los usuarios de las SN dejan las opciones de privacidad por defecto.
* El ''25%'' han dejado información personal en sus perfiles.
* Los usuarios no son conscientes del riesgo por razones preconcebidas, como:
** La privacidad, seguridad es cuestión de los sitios.
** Falta de confianza en gestionar las opciones que ofrece el sitio.
** ''La información de seguridad, privacidad no es fácil de conseguir en los sitios''.
** Sentimientos de superioridad, típico de la juventud.
** Percepción de q' estos sitios son inofensivos en comparación con otros, Ej. bancos en linea.
* ''Compartir detalles y comunicarse'' con los demás son las premisas de las SN's, de esta manera puede llegar a ser "sospechoso" que alguien no lo haga. Ej. en un vecindario, los más allegados conocen algunos detalles de sus habitantes,  después de algún tiempo (deben interactuar con los vecinos, sino serían sospechosos de algo). Si otras personas hacen algo, puedo sentirme más seguro a hacerlo también (perdida del "pudor": lo que es socialmente correcto mostrar o no), esto contribuye a la ''diversidad''.
* A veces los jóvenes restringen sus perfiles para que sus padres no los "sigan" (ver registro de actividades en las SN's), entonces resulta una pregunta ¿Cuántos de los jóvenes tienen como ''amigos'' a sus padres, agregados a sus SN's? [1]
* Motivos para el uso de SN's:
** Diversión, para la mayoría.
** Formas de comunicación enriquecidas y lúdicas.
** ''Compartir intereses y aprender de la diversidad''.
** Desarrollo de ''social skills''.
** Crear enlaces da importancia y genera bases de confianza.
** ''Videoblogging'' ?? Refuerzan el sentimiento de comunidad??

http://www.youtube.com/v/0cHVbMyRdQ4&amp;hl=es&amp;fs=1

----
Estudio de Ofcom: ''A quantitative and qualitative research report into attitudes, behaviours and use''
* ''Media Literacy'' (Alfabetización en medios): es la habilidad para acceder, entender y crear comunicaciones en una variedad de contextos.
* ''Social Networking Site'' (Sitio de red social): sitios web en los cuales permiten a los usuarios configurar perfiles en linea o páginas personales, y desarrollar una red social en linea. El perfil funciona como como una página donde incluye ''información persona''l (birth, genero, religión, ...), ''gustos'' (películas, libros, ...), ''actividades en tiempo libre'', ''contenidos'' (fotos, vídeo clips, música), ''personalización'' (cambio de colores, estilo en la página), ''crear conexiones'' (lista de "amigos" (quien ha invitado o ha sido invitado por otro usuario), conocidos, contactos).
----
Tiddlers asociados
* [1] SocialNetworkSitesDefinition [paper]
''An intro to the Semantic Web'' by Manu Sporny (Digital Bazaar, Inc)
* Syntax refer to how you say something, but semantic is the meaning behind what you say (the sense). e.g. if in sentences 'I love Gnu/Linux' I change the 'love' word by a heart symbol then syntax changed but semantic is the same (sense).
* Web today is a document web, but semantic web is ''a web of things'' (people, places, events, music, movies, organization, etc) any concept that you think on and relationships between them. 
* ''microformat.org/about''. ''firefox + operator''. ''rdfa.info/about''
Exploratory Data Analysis, EDA
----
Prueba de hipótesis vrs. EDA
* En estadística
** la prueba de hipótesis establece una hipótesis nula (H~~0~~) y una hipótesis alternativa (H~~a~~)
** se establece el nivel de riesgo o significación (es el complemento del nivel de confianza). Ej. si α=0.05 (nivel de significación) quiere decir que tenemos una confianza de un 95% en los datos.
** se dan valores a la variante estadística. Hay varios métodos para probar una hipótesis:
*** Prueba Z
*** Prueba del valor P
*** Prueba t
*** Prueba //Χ//^^2^^ (Chi cuadrado)
*** Otros: series de tiempo, test de control de calidad, tests no parametricas, ...
** aceptamos o rechazamos la hipótesis nula (si la rechazamos estamos aceptando la alternativa)
* En DM - ''EDA''
** Profundiza en el conjunto de datos (vista minable)
** Analiza que y como se relacionan los atributos.
** Identifica relaciones y sub-conjuntos de datos de interés.
** Explora asociaciones iniciales entre los atributos y la variable objetivo (clase).
** Se apoya en paquetes estadísticos como R.
----
Variables correlacionadas
* Se puede presentar:
** dependencias entre atributos, ó
** relación entre atributos y la variable objetivo
* Si hay variables (atributos) correlacionadas o dependientes los resultados serán inestables y no confiables.
* Para analizar estas correlaciones/dependencias:
** en variables numéricas: se usa regresión lineal, coeficiente de determinación (R^^2^^) y correlación (??), coeficiente de correlación de Pearson e histogramas.
** en variables categóricas: histogramas, conteos y porcentajes (es mejor este último)
* ''Binning (Banding)'': se refiere a la categorización de variables numéricas y categóricas en un conjunto de clases convenientes para el análisis. Ej. La categoría //departamento// la puedo categorizar en //regiones//, así, Nariño, Cauca, Valle y Choco se podrían categorizar como región //Pacífica//.
! Installing Android on Ubuntu
* Install Java and Eclipse:
{{{$ sudo apt-get install sun-java6-bin}}}
{{{$ sudo apt-get install ia32-libs}}}  (If you are on a x86_64 system)
** Download and install ''Eclipse 3.2 or 3.4'' from (http://www.eclipse.org/downloads/). Select one of the Java, Java EE, or RCP versions of Eclipse.
* Install Google Android SDK 1.0:
** Download package from http://code.google.com/android/download.html and unzip it.
** Edit ''~/.bashrc'' and add the following line:
{{{
export PATH=${PATH}:/home/falko/android-sdk-linux_x86-1.0_r1/tools
}}}
** Install the Android Eclipse plugin: on Software Update add the Site https://dl-ssl.google.com/android/eclipse/ (if not works, change https by http)
* Finally add Android SDK directory on Eclipse preferences.
[1] [[Installing Google Android SDK 1.0 On Ubuntu 8.04 Desktop | http://images.howtoforge.com/images/google_android_sdk1.0_ubuntu8.04/]]
! Aplicaciones empresariales
''Presentación''
* WAF:
** Visual JSF
+ Como primer ejercicio :~VisualJSF

''Lógica de negocio''
* OSA:
**   SOAP/~WSDl
**   REST (like Ajax)
**	Widget ??

ó componentes propios como los EJB (Solo funcionalidad)
ó los script: no es embebido (solo lógica de negocio)

+ Como primer ejercicio: En java Ejemplo un Bean

''lógica de acceso a datos''
* Proveedores de persistencia
**  de bajo nivel: sentencias sql, manual (se tiene más control, más tiempo de desarrollo)
** de nivel medio: Ej. DAO como para php (Se basa en Patrones)
***    http://www.titaniclinux.net
** de alto nivel: menos tiempo de desarrollo
* ORM:
**  en Java: Hibernate, JPA, Entity 3 (Hibernate+JPA+otras)

+ Como primer ejercio : ~JPA_JSF => Derbi (BD que trae Netbeans)
! Aplicación con Netbeans
* Lógica Presentación
** Desde una pagina JSP y por intermedio del ~SesionBean se hace llamado al ~JPAController
** App
** ~SesionBean
* Lógica de negocio
** JPA Controller
* Lógica de Acceso a Datos
** Clases ORM
** Conexión
'' Ensayo acerca de "cambio de época vrs. época de cambios" ''
* Desarrollo vrs. Conocimiento:
** Modelo de Boisier ... y otros, Chomsky stiglite (Krugher)
* Papel de la Innovación (Ciencia y Tecnología):
** Sistema Regional de Innovación (S.R.I.) => RIS Estrategy
* Educación
* TIC:
** Modelo Tecno-congnitivo
** Paradigma Tecno-económico de las TIC's
* 5 Dimensiones:
** Cultura - Identidad
** Ideología
** Sociedad
----
* Cambio de paradigma ? (filtro)
----
* Lectures:
** ~WIT-OSIS: Monterrey México, Carlos Scheel
** Organizaciones Innovadoras
** Fidel Garcia (Cubano), Experto en Gestión del Conocimiento
----
* Desarrollo => Libertad, auto-capacidad de determinación
* Multiculturalidad (realidad o mentira?)
* Globalización (realidad o mentira?)
----
* ''Competencias Informacionales'' => Media Literacy ????

----
Libro: El lobo estepario de ''Herman Hess''
From ages we are looking for a method to manage backup files and I had something like this (http://groups.google.com/group/TiddlyWiki/msg/d8e5d0d6be082ada?hl=en&) on my TodoList for more than a year !

I've now coded a method in [[store.php]] that maintains the size of the backup directory on the web server near a constant size.

Here is how it works. In store.php each time a new backup file is stored, the backup directory is scanned for files with the same prefix as the uploaded file and it holds only :
*the last file of each preceding month,
*the last file for each preceding week of the current month
*the last file for each preceding day of the current  week
*the last file for each preceding hour of the current day
*all the file of the current hour  

Without the files of the current hour, the number of files in the backup directory for the last year is less than 24 + 7 + 5 + 12 = 48. With an average of 1Mo per backup file, the size of the backup folder should never reach 50 Mo for the last year and 12 Mo more for each previous year.
! Becas
* [[Fundacion Carolina | http://www.fundacioncarolina.es/FundacionCarolina/]]
* [[ ICETEX | http://www.icetex.gov.co]]: link becas internacionales
* [[Mazda | http://www.mazda.com.co]] becas para música y arte.
* JICA, cooperacion Japón/Colombia
* [[SENA | http://www.sena.edu.co]] becas con España
* [[ICETEX - Fondo Agenda de Conectividad  | http://www.icetex.gov.co/portal/Default.aspx?tabid=281]]:  	inicio » Nuestros servicios » Fondos en administración » Fondos Activos » Fondo Agenda de Conectividad  » Instrucciones. Becas condonables CUMBRE.
* http://www.seedinit.org/mainpages2/awards/eligibility/index.php
* [[Fulbright | www.fulbright.edu.co]] Las solicitudes diligenciadas deben enviarse a más tardar el ''viernes 29 de mayo de 2009'' a la Comisión Fulbright en Bogotá por correo expreso, así como también la aplicación en línea según el documento Instrucciones que encuentra en la plataforma ~On-Line ~FulConnect.
! Convocatorias papers

! Convocatorias Business plan
* Premio Santander Universia: http://www.universia.net.co/premio-santander
* Destapa futuro: http://www.redemprendedoresbavaria.net/
* Fondo Emprender (Sena - Fonade): http://www.fondoemprender.com/
* Concurso Nacional de Emprendedores ~BiD Challenge 2008 "Cree en Colombia, Crea empresa": http://www.bidnetwork.org/colombia
* http://www.ventures.com.co : Ventures 2009, convocatorias de 2 Marzo al 26 Abril.
* http://alzado.org : empresa privada española que financia planes de negocio, primer y segundo puesto.
* FINBATEC : Propuesta planes de negocio, COLCIENCIAS
! Búsqueda de artículos
* @@http://scholar.google.com/@@ : buscar de artículos de Google.
* http://www.springerlink.com : solo para búsqueda de abstracts.
* http://www.ieee.org/ieeexplore : solo para búsqueda de abstracts.
* http://www.sciencedirect.com : algunos artículos son de libre acceso, si estas dentro de Unicauca.
* @@http://citeseer.ist.psu.edu/@@ : College of Information Sciences and Technology.
** http://citeseerx.ist.psu.edu/ : versión mejorada en cuanto a presentación de resultados.
* @@http://arxiv.org/@@ : arXiv is an ''e-print service'' in the fields of physics, mathematics, non-linear science, computer science, quantitative biology and statistics.
* http://www.scirus.com/ : it is the most comprehensive scientific research tool on the web.
* http://dblife.cs.wisc.edu/ : busca entre muchas fuentes de datos.
* @@bgcolor(yellow):http://jcmc.indiana.edu/@@ : Journal of ~Computer-Mediated Communication.
* @@http://clusty.com/ : buscador aplicando técnicas de text mining (Clustering)@@
* http://hakia.com/ : PARECE BUENO PROBAR !!!
* http://ebiquity.umbc.edu/ : ''ARTÍCULOS DE REDES SOCIALES Y WEB SEMÁNTICA''
* http://download-book.net/ : ????
* @@http://hal.inria.fr/@@ : ''~HAL-INRIA'' es una plataforma que permite la presentación en línea de los estudios científicos y de consulta.
* @@http://ask.stanford.edu/search@@ : Buscador de la Universidad de Stanford (la casa de Google http://google.stanford.edu)
----
* http://ijlm.net/ : International Journal of Learning and Media - IJLM, MIT.
* http://plos.org/ : artículos muy buenos en áreas como matemática, computación, bioinformática (biología computacional), etc.
* http://oa.upm.es/perl/search/simple : Biblioteca de la Universidad Politécnica de Madrid (Basado en ~EPrints).
* http://www.recolecta.net:8080/arc3/advanced_search.jsp : Buscador avanzado de documentos de investigación en acceso abierto, UPM.
* http://www.scielo.cl/ : A través del portal que integra y provee acceso a la red de sitios ~SciELO en, http://www.scielo.org se puede realizar búsquedas en todas las colecciones ~SciELO existentes o a nivel de un país en particular.
* http://www.sciam.com/ : some articles from Scientific American magazine are on line for free. Good!!
* @@http://www-kasm.nii.ac.jp/@@ : ~KasM: ~Knowledge-as-Media Research Group. Social Networks.
----
--------- OTROS ---------
* http://www.docstoc.com: find and share professional docs.
* http://www.informaworld.com/ : ??

----
* http://www.ilumina-dlib.org/index.asp : iLumina is a digital library of sharable undergraduate teaching materials for chemistry, biology, physics, mathematics, and computer science. It is designed to quickly and accurately connect users with the educational resources they need.

!~E-Prints'
* http://eprints.ucm.es/ : ~E-Prints Complutense es el Archivo Institucional en acceso abierto desarrollado por la Biblioteca de la Universidad Complutense de Madrid para gestionar la documentación digital fruto de la actividad de sus docentes, investigadores y los grupos de investigación validados por la UCM .

!Events
# on Social Networks and Semantic Web
* http://sdow.semanticweb.org/2008/pub : with paper on line [Social Network Analysis]
* http://sdow.semanticweb.org/2009/ : with papers on line [@@REVIEW !!!@@]


! Revistas nacionales
* [[ REVISTA INGENIERÍA E INVESTIGACIÓN| http://www.revistaingenieria.unal.edu.co/]]: Universidad Nacional
* [[ Revista de Educación en Ingeniería | http://site430.mysite4now.net/acofivirtual/revista/revista.php ]]
* [[ Universidad EAN | http://www.ean.edu.co/index.php?option=com_content&task=view&id=1708&Itemid=1385]]
* http://www.acis.org.co/index.php?id=82 : Revista ACIS (Asosiación Colombiana de Ingenieros de Sistemas)


!Revistas de informática
* http://www.ati.es/novatica/: Novática es la revista de ATI (Asociación de Técnicos de Informática). Nacida en 1975 y de periodicidad bimestral, es la revista decana del sector informático español. Desde entonces viene ofreciendo información técnica independiente, rigurosa y de calidad en lengua española sobre el mundo de la Informática.

! Video Lecture
* http://mitworld.mit.edu/ : MIT World is a ''free and open site'' that provides on demand video of significant public events at MIT.
* @@http://techtv.mit.edu/@@ : Trabajos de investigación en áreas como la Educación, Ingeniería, Deportes, Eventos del MIT, entre otras. Excelent!!
* http://www.youtube.com/user/MIT : Canal MIT en Youtube.
* @@http://www.youtube.com/edu@@ : Universidades de EE.UU en Youtube, educación e investigación.
* http://academicearth.org/ : Clases magistrales de todo el mundo, en vídeo.
* @@http://videolectures.net/@@ : charlas magistrales de todo el mundo. Excelent!!
* @@http://www.ted.com/@@: ~TEDtalks las mejores charlas, donde se muestra la creatividad humana al 100%. Excelent!!
* http://showmedo.com/ : Learning with Open Source Comunity
* http://www.dailymotion.com/es/featured/channel/school/1 : Section ''campus''.
* http://www.youtube.com/singularityu : Singularity University's chanel Youtube.

* http://www.youtube.com/user/TEDtalksDirector : TED Talk en ~YouTube.

* http://tutor-usa.com/videos/statistics-probability : videos de probabilidad y estadistica.

* http://igniteshow.com/ : Ignite is coming to 60+ cities on 6 continents during the first Global Ignite Week, March 1-5, 2010.

----
TEACHING VIDEOS
* http://edge.org : The mandate of Edge Foundation is to promote inquiry into and discussion of intellectual, philosophical, artistic, and literary issues, as well as to work for the intellectual and social achievement of society.
* http://thesciencenetwork.org/ : good interviews on education topics.
* http://www.tvo.org/TVO/WebObjects/TVO.woa : 
* http://bigthink.com/ : Videos about technology are not so good.
* http://www.teachertube.com/ : math's videos, turorials, etc
* http://www.youtube.com/education : the top universities from US. [http://www.youtube.com/channels?c=27]

! Videos Repo
* http://blip.tv
* http://vimeo.com/
* http://www.youtube.com
* http://showmedo.com/ : video tutoriales [hay varios de python]
* http://openvideoalliance.org/ : 
* http://www.archive.org/ : 

! Open Education
* http://cool.mcgill.ca/Default.aspx : COOL => ~COurse ~OnLine of ~McGill University.
* http://webcast.berkeley.edu/:  UC Berkeley Webcasts
* http://ocw.mit.edu/OcwWeb/web/home/home/index.htm:  MIT’s Open Courseware
* [[OpenLearn | http://www.open.ac.uk/openlearn/home.php]] has a [[ Learning Space | http://openlearn.open.ac.uk/index.php?__utma=1.2060087280.1262561406.1262561406.1262561406.1&__utmb=1.56.10.1262561406&__utmc=1&__utmx=-&__utmz=1.1262561406.1.1.utmcsr=education-portal.com|utmccn=%28referral%29|utmcmd=referral|utmcct=/articles/Universities_with_the_Best_Free_Online_Courses.html&__utmv=-&__utmk=186517673 ]]
* [[Lab Space | http://labspace.open.ac.uk/?__utma=1.2060087280.1262561406.1262561406.1262561406.1&__utmb=1.56.10.1262561406&__utmc=1&__utmx=-&__utmz=1.1262561406.1.1.utmcsr=education-portal.com|utmccn=%28referral%29|utmcmd=referral|utmcct=/articles/Universities_with_the_Best_Free_Online_Courses.html&__utmv=-&__utmk=186517673]]
* http://oli.web.cmu.edu/openlearning/:  Carnegie Mellon
* http://ocw.tufts.edu/: Tufts University
* http://summer.stanford.edu/programs/crsCs.asp : Cursos en Stanford Ej: http://www.stanford.edu/class/cs106a/
* @@http://www.stanford.edu/class/cs106a/@@ : cs106a Programming Methodology at Stanford University


!Big ideas
* http://ted.com/: TED
* http://bigthink.com/: Big Think
* http://fora.tv/: Fora.tv
* http://ideasproject.com/index.webui: Ideas projects?


! Research Magazines
* http://www.scienceinschool.org/ : the European journal to promote inspiring science teaching by encouraging communication between teachers, scientists and everyone else involved in European science education.

!  Open  Universities
* http://www.uopeople.com/ : la universidad del pueblo gratuita y en linea.
* @@http://worldisopen.com/@@ : "The World Is Open: How Web Technology Is Revolutionizing Education"
* REFERENCIAR LA UNIVERSIDAD ABIERTA DE SUN MICROSYSTEM

! Algoritmos
* http://www.kdkeys.net/ : Algoritmos de minería de datos en varios lenguajes. Necesita registrarse.

! Papers for WWW
* http://www2009.org/proceedings/pdf/

! Imágenes
* http://copyrightfriendly.wikispaces.com/: repositorio de imágenes CC
* wallbase.net : excelente buscador de imágenes (No CC).

!eGlossary
* http://www.glencoe.com/apps/eGlossary612/grade.php : Glosario de términos matemáticos.

!Books on line
* https://www.bubok.es/tienda/Ciencias-aplicadas-e-informatica/9/ : Algunos libros son gratuitos
* http://book.pdfchm.net/Applied-Bioinformatics-An-Introduction/9783540727996/ : Libros de todas las áreas para descargar.
* http://www.interesant.net/magazine/science/ : Magazines
* 

!Indice de revistas científicas
* http://dialnet.unirioja.es/servlet/portadarevistas : Dialnet
* http://redalyc.com : Hemroteka Redalyc
* 

!eBooks con licencia Creative Commons
* http://www.bubok.com/
* http://mega-pdf.com/ : buscador de libros (Excelent)
* http://www.freelibros.com/
* Google Book Downloader: aplicación para descargar libros de Google Books


! How to write a thesis
(http://compscigail.blogspot.com/2009/04/how-to-write-thesis.html)
* [[How To Write a Dissertation | http://www.cs.purdue.edu/homes/dec/essay.dissertation.html]] from Purdue University; especially useful for its list of words to avoid and other grammar tips
* [[How Theses Get Written: Some Cool Tips | http://www.cs.toronto.edu/~sme/presentations/thesiswriting.pdf]] from the University of Toronto; includes great tips for getting started early (which I didn't do this time around, but will for the ~PhD!), and gives great insight into the process from the examiner's point of view.
* [[Resources for Thesis Students | http://www.cs.auckland.ac.nz/msc/]] from the University of Aukland; while not an article about how to write a thesis, this page has many valuable resources in addition to thesis-writing links (beware: many are, unfortunately, dead links!).
* [[How to Write a PhD | http://www.phys.unsw.edu.au/%7Ejw/thesis.html]] Thesis from University of New South Wales; though this one isn't specific to computer science, it is still relevant. You should read the section called Personal, about halfway down - it makes some suggestions about keeping yourself in good mental and physical condition while spending many hours working on your writing.
* [[Writing and Presenting Your Thesis or Dissertation | http://www.learnerassociates.net/dissthes/]] from Michigan State University; this one is long and detailed, so I didn't read through it all, but it looks promising.
[[El imperio digital]]: presenta una evolución de la web.
[[Más allá de Google]]: Reflexiones sobre los sistemas de información.
[[We-magazine]]:





> "Dime y lo olvido, enséñame y lo recuerdo, involúcrame y lo aprendo"
>     -- ''Benjamín Franklin''
! Concept
* It is a Machine Learning Unsupervised learning technique (There is not previous knowledge)
* Aims at dividing objects into groups (clusters) using measures of similarity (@@metrics@@) such that ''similar'' objects are in the same cluster and ''dissimilar'' objects are in different clusters.
* 
! Clustering techniques
* 
! Algorithms

! Search by
* Overview of clustering algorithms
* Clustering and web mining
* @@Survey of clustering data mining techniques@@
! Articulos de Dreig
* [[llega-con-fuerza-la-web-contextual | http://www.dreig.eu/caparazon/2008/12/25/llega-con-fuerza-la-web-contextual/]]: ^^(http://www.readwriteweb.com/archives/contextual_web.php)^^
** Para interactuar con la sobre-información es necesario ''filtrar'' la q' ya existe bajo ''criterios sociales o semánticos''.
** La ''web contextual'' pretenderá que navegadores y páginas reconozcan con mayor precisión lo que el usuario realmente quiere encontrar. ''Menos opciones y más significado'', menos búsquedas en Google y ''más contexto''.
** Mejorar la experiencia del usuario:
*** ''Relevancia'': __entender mejor el contexto__ conlleva mayor __relevancia de los contenidos__ para el usuario.
*** ''Eficiencia - Atajos'': Los atajos contextuales facilitarían las búsquedas. (__Que clase de atajos__) (la idea es no realizar demasiadas búsquedas, como ahora)
*** ''Personalización'': El contexto está basado en las intenciones y la historia de navegación del usuario. __(Contexto con base en el usuario y no de la información en sí ???)__
*** ''Remezcla - Mashups'': en entornos abiertos, puede devolvernos __información relevante e interoperable__ entre servicios de la web (Ubiquity puede insertar un mapa en un correo electrónico de forma muy fácil).
** Tecnologías contextuales: basadas en WS (marcas semánticas [metadatos], xml, rdf, microformatos) y API's abiertas (estas permiten interacción).
** ''La combinación de la información sobre la página con el comportamiento del usuario es lo que crea el contexto y por tanto, una web más inteligente''.
** No hay contexto sin información previa (información+comportamiento=contexto) __(Entonces q' me define un CONTEXTO)__
** También deben ser consideradas contextuales:
*** -''La geolocalización'', u oferta de contenidos según el lugar desde el que esté físicamente el usuario.
*** -''Los contenidos de relevancia “social” '', aquellos que preferimos porque son los que prefieren nuestros contactos en redes sociales.
*** -También aprendería de nuestro ''comportamiento como usuarios'', evitándo que nos encontremos una y otra vez con resultados que consideramos irrelevantes (Google está poniendo en práctica ya un sistema de filtrado de resultados personalizados según nuestras valoraciones previas, [[Google SearchWiki | http://googleblog.blogspot.com/2008/11/searchwiki-make-search-your-own.html]])
** Tecnologías existentes: 
*** [[Web Slices | http://ieaddons.com/en/webslices/]] (de ~IE8) notifica a los usuarios cambios en la info de nuestra página. El concepto es similiar a los feeds; pero de forma más focalizada en partes de la página web. 
*** Cooloris indica al navegador si el sitio que visita contiene o no gráficas en 3D, si las contiene procede a mostrarlas en 3D.
*** ~AdaptativeBlue trabaja la WT mediante ~ABMeta, formato que permite anotar páginas que contienen información sobre libros, música, películas, productos, restaurantes, etc…
** La web contextual en navegadores:
*** [[Accelerators | http://ieaddons.com/en/accelerators/]] de ~IE8, en desarrollo y no es muy eficiente.
*** [[Ubiquity | http://labs.mozilla.com/projects/ubiquity/]] de firefox, en desarrollo y se basa en mashups.
*** Aurora


>"Hazlo todo tan simple como sea posible, pero no más simple"
>&nbsp;&nbsp;&nbsp;&nbsp; -- ''Albert Einstein''
MasterIII
From: http://forja.rediris.es/snippet/detail.php?type=snippet&id=15
Última versión del recorte :1

Formularios en Django
November 30th, 2007 by Jose Jiménez

Django nos proporciona una librería llamada “newforms” para hacernos la vida más facil a la hora de trabajar con formularios, que siempre son uno de los trabajos más tediosos en una aplicación web. Voy a intentar explicar un uso sencillo de la misma para la creación y edición de registros.

Lo primero que hay que hacer es crear una clase que herede de newforms en la que definiremos los campos que deseamos tener en nuestro formulario. Yo he creado en mi aplicación, un archivo forms.py con esta clase:

from django import newforms as forms
class UserForm(forms.Form):
auto_id = True
genders = [('M','Masculino'), ('F','Femenino')]
#User Data
username = forms.CharField(label="Usuario *", required=True)
#Personal Data
first_name = forms.CharField(
label="Nombre *",
required=True,
max_length=30,
widget=forms.TextInput(attrs={'size':20})
)
last_name = forms.CharField(
label="Apellidos *",
required=True,
max_length=30,
widget=forms.TextInput(attrs={'size':20})
)
genero = forms.ChoiceField(label="Genero", choices=genders, required=False)
! Enfoque de Marco Lógico
|    |!Resumen Ejec|!Indicadores|!Medios de Verify|!Factores Ext|
|Objetivo Gen |        |    |    |    |
|Objetivo del Prj |        |    |    |  |
|Resultados |        |    |   |   |
|Actividades |       |   |   |   |
|~EML- RSI |c
<!--{{{-->
<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>
<!--}}}-->
! Una estrategia educativa para hacer participar en la clase a estudiantes de todas las edades
(David Featonby, http://www.scienceinschool.org/2007/issue7/)
Realizar una serie de ''experimentos de fácil demostración'' pero con un ''resultado ligeramente inesperado'', y de esta manera inducir al ''debate en clase''. Una propuesta es formar pequeños grupos de alumnos que compitan entre si en predecir el resultado correcto y en dar la explicación correcta de la situación.
** Para una lista más extensa de experimentos sugeridos visitar: ww.scienceonstage2.co.uk
** Aportaciones y comentarios en el nuevo forum de Science in School: www.scienceinschool.org/forum/whathappens
** ''Science on Stage'' son una serie de festivales de la educación organizados por el ~EIROforum, que también publica Science in School: www.science-on-stage
Contacts:
* ecaldon[at-nospam]unicauca[dot]edu[dot]co
* edycop[at-nospam]gmail[dot]com
* edycop at Skype ~VoIP
Sites:
* [[My website | http://www.unicauca.edu.co/~ecaldon]]
* [[My blog | http://baidarkas.net/ple/user/edycop]]
* [[ My ID card on retaggr | http://www.retaggr.com/card/Edycop]]
* [[My ID page on retaggr | http://www.retaggr.com/page/Edycop]]
by ''Leandro Zanoni'' (~TercerClick)
* Prologo(Alberto Arebalos): La Web es impredecible, caótica y vital. Este libro explica este caos.
* Introducción:
** Nicholas Negroponte. Ser digital (Atlántida, 1995): el mundo de hoy es digital
** 53 millones de Latinoamericanos (Lats) acceden a Internet desde el hogar. Para 2010 serán 1.650 millones.
** Las ventas de la industria musical cayeron ostentablemente entre 2001 y 2006, gracias a iniciativas como ~NetScape, iTunes, ~P2P, etc
** El mercado de juegos crece. ''Las consolas de juegos serán los nuevos medios de comunicación''.
** ~YouTube, según //Time//, "El invento de 2006". Google la compró por 1.650 millones de dolares en el 2007.
** Para el 2012 habrá el doble de notebooks (''Movilidad'')
** Silicon Valley: El valle se desparrama por una zona de valles y colinas y lo conforman pequeñas ciudades como Palo Alto, San José, Cupertino, Mountain View y Santa Clara.
** Un vistazo al pasado, presente y algo del futuro de la Web
* Web 2.0. El protagonista es usted
** Somos nosotros quienes producimos y consumimos contenidos (textos, fotos, audios, videos, links, etc.) y quienes nos unimos con otras personas para compartir información o para hacer nuevos amigos. (Cada persona es parte fundamental en la sociedad de la información, aportar y compartir)
** Las ''redes sociales'' permiten que comunidades puedan interactuar (crear relaciones)
** Word Wide Web (www)
*** ll
* Investigar:
** Forma sistemática de encontrar conocimiento
** Generar inquietudes » Generar conocimiento
** Investigación: Aproximación sucesiva a nuevo conocimiento, "Si el mundo evoluciona por qué no participar en ello"
----
* Investigar:
** Fenómenos Físicos: estudios de principios teóricos en áreas de las ciencias básicas como Física, Biología, Química, Matemática. ''«Científico, hace ciencia»''
** Interacción de la materia: desde los principios básicos construir dispositivos. ''«Investigador, hace tecnología»''
** Tecnologías aplicadas: soluciones. ''«Investigador, hace tecnología»''
** Ciencias técnicas: Son ciencias que pretenden partir desde los principios básicos hasta su aplicación en la industria o comercio. Por ejemplo??
----
* Ámbito de la investigación:
** ''Institutos'' dedicados a investigar como el MIT
** ''Empresas'' con el fin de obtener productos para su comercio
** ''Universidades'' donde su principal función es la formación de investigadores tanto en ciencias básicas como aplicadas.
----
* Ciclo de la invest:
** ''Local'' » a principios de la revolución industrial las investigaciones iniciaron de manera local, tratando de solucionar problemas definidos con resultados a veces inesperados (Ej. el resultado de un tinte) o resultados esperados.
** ''Universal'' » esos conocimientos obtenidos (documentos, publicaciones) de forma local se fueron dispersando por todo el mundo hasta convertirse en universales (Ej. hacer papel)
** ''Local'' » pero actualmente no se puede hacer invest sin tener en cuenta el knowledge universal, pues muchos problemas que nosotros tenemos ya alguien los ha resuelto total o parcialmente, y una vez hecha nuestra investigación esos knowledges obtenidos de forma local (con nuestras herramientas, información y recursos) vuelven a ser parte del knowledge universal (algo así como retribuir algo que dicho ámbito nos aportó y seguir con el ciclo). Se considera que los sitios de aplicación de la investigación son locales (Ej. estudio de una comunidad nativa), mas no la investigación propiamente dicha.
----
Para un trabajo de investigación se debe hacer ''parcelación'' ya que permite limitar el alcance y definir las hipótesis necesarias para poder decir con base en que restricciones se mueve mi trabajo y al final de la invest. dejar planteado nuevos estudio en los cuales abarquen las variables que no tuve en cuenta.
----
*Fin de la Invest.:
** Busca dominar las ciencias básicas para beneficio del hombre (¿Cuál hombre?)
** Busca información (Aplicación)
----
* Taxonomía de la Invest,:
** Invest. pura: CERN
** Invest. orientada: desarrollo de tecnología
** Invet. aplicada:
** Desarrollo de experimental: productos al mercado.
Las ''técnicas y metodologías'' son las que diferencian los campos de investigación.
----
Secuencia completa:
<<<
@@color(red):Ciencia-básica@@ » @@color(green):Tecnologías@@ » @@color(brown):Desarrollo-tecnológico@@ » @@color(purple):Innovación@@
<<<
En toda esta secuencia esta presente el proceso Investigativo »»»»»» I+D+i
''Four to Five Years: Social Operating Systems'' [http://wp.nmc.org/horizon2008]
* In a social network system there is a distinction about deep relationships (connection) and a shallow one. There are unaware connections, they are not explicitly. How do we evaluate the depth of a relationship?
* The proof-of-concept project from Yahoo, still very much in the conceptual stage, is also an effort to illustrate the kinds of activities that will be possible with applications that bring together information and services based on a contact. In a concept demonstration, a Yahoo Life! user opened an email sent to several colleagues meeting at a conference with an invitation to dinner. Possible locations were plotted on a map based on nearness to the convention center and previously stated preferences by the people involved, gleaned from earlier emails. These two examples illustrate how social operating system tools will access the user’s social network and provide services based on information embedded there. While this category of applications is in its infancy, the emergence of tools like these heralds the beginning of the next generation of social software.

  El proyecto prueba-de-concepto de Yahoo, aún esta en estado conceptual, es un esfuerzo para ilustrar las clases de actividades que seran posibles con aplicaciones que traen junto información y servicios basados en un contacto. En una demostración de concepto, un usuario de Yahoo Life! abre un email, envia a varios colegas reunirse en una conferencia con invitación a senar. Las posibles ubicaciones fueron ploteadas en un mapa cercanas al centro de convención y previamente indicadas las preferencias de las personas involucradas, recojidas con anterioridad desde sus emails. Estos dos ejemplos ilustran como las herramientas de los sistemas operativos sociales acederan a las redes sociales de los usuarios y proveran servicios basados en la información que allí se encuentre. Mientras esta categoría de aplicaciones esta en un estado de infancia, las herramientas emergentes como estas, señalan el inicio de la proxima generación del Software social.

* La nueva RS q' se cree debe contemplar la interoperabilidad con otros API's como ~OpenSocial de Google.
* Las personas y sus conecciones con importantes; pero ¿como evaluar si una conección es de calidad ?
* Como descubrir conocimiento? para catalogar a alguien como posible contribuyente de la red.
These algorithms are based on the book: ''Vicente Talanquer. (1996). Fractus, Fracta, Fractal. Fractales de laberintos y Espejos''.

! Script for Julia's Set
{{{
#!/usr/bin/python

import sys

#Based on algorithms by 
# Vicente Talanquer. (1996). Fractus, Fracta, Fractal. Fractales de laberintos y Espejos.

#Julia's Set it is generated by a given value to c in equality
# "Z(n+1) = (Z(n)*Z(n)) + c" it is same that "Z=Z**2+c"
# where c=(Cr,Ci) is a imaginary number.
# After any converts we get:
# real part: a(n+1) = a(n)*a(n) - b(n)*b(n) + Cr
# imaginary part: b(n+1) = 2a(n)*b(n) + Ci

def draw_point(x, y):
	print x, " ",y

def julia(Cr, Ci):
	step = 5000 	#change the value to increment points in shape
	N = 100		#Number of iterations for get priosioner points (they are in set)
	Delta = 4/float(step) #it is the variation 
	ao = -2	#Start Point X axis
	bo = -2	#Start Point Y axis
	#build a net at complex plane
	for j in range(1,step):
		for k in range(1,step):
			a = ao * j * Delta
			B = bo * k * Delta
			i = 0
			RR = 0
			#it is iterate for each point
			while i < N and RR < 4:
				an = (a * a) - (B * B) + Cr 	#real part
				B = (2 * a) * B + Ci		#imaginary part
				a = an
				RR = (a * a) + (B * B)	#Distance between (ao,bo) and (a,B) point
				i+=1
			#it is draw the prisioners (points in set)
			if i < N:
				continue
			draw_point(ao + j * Delta, bo + k * Delta)

if __name__ == "__main__":
	if len(sys.argv) < 3:
		print "\nUsage: julia.py [Cr] [Ci]\n\tExample1: julia.py -0.12 0.66\n\tExample2: julia.py 0.32 0.043\n"
		sys.exit(0)
	try:
		Cr = float(sys.argv[1])
		Ci = float(sys.argv[2])
	except ValueError:
		print "Only numeric values"
		sys.exit(0)
	julia(Cr, Ci)
}}}

! Script for Mandelbrot's Set
{{{
#!/usr/bin/python

import sys

#Based on algorithms by 
# Vicente Talanquer. (1996). Fractus, Fracta, Fractal. Fractales de laberintos y Espejos.

#Mandelbrot's Set is one. Here we just run over a range of c constant
# for instance between -2.4 to 0.8 in real part and -1.25 to 1.25 in imaginary part.
# where c=(Cr,Ci) is a imaginary number.
# After any converts we get:
# real part: a(n+1) = a(n)*a(n) - b(n)*b(n) + Cr
# imaginary part: b(n+1) = 2a(n)*b(n) + Ci

def draw_point(x, y):
	print x, " ",y

def mandelbrot():
	step = 5000 	#change the value to increment points in shape
	N = 100		#Number of iterations for get priosioner points (they are in set)
	Deltr = 3.2/float(step) #variation in real axis
	Delti = 2.2/float(step) #variation  in imaginary axis
	#select c constants to visit
	Cr = -2.4
	#build a net at complex plane
	for j in range(1,step):
		Cr = Cr + Deltr
		Ci = -1.25
		for k in range(1,step):
			Ci = Ci + Delti
			ao = 0	#In this case always Start Point X=0
			bo = 0	#In this case always Start Point Y=0
			i = 0
			RR = 0
			#iterate at Zo = (0,0)
			while i < N and RR < 4:
				an = (ao * ao) - (bo * bo) + Cr 	#real part
				bo = (2 * ao) * bo + Ci		#imaginary part
				ao = an
				RR = (ao * ao) + (bo * bo)	#Distance between (0,0) and (ao,bo) point
				i+=1
			#Draw the prisioners (points in set)
			if i < N:
				continue
			draw_point(Cr, Ci)

if __name__ == "__main__":
	if len(sys.argv) < 1:
		print "\nUsage: mandelbrot.py\n"
		sys.exit(0)
	mandelbrot()
}}}

! Drawing sets
The python scripts above generate a set of coordinates, you must redirect the outputs to a file and then you can to use ''gnuplot'' program for ploting coordinates. Here a bash script called 'plot.sh' for execute gnuplot program :
{{{
#!/bin/bash

gnuplot << EOF
set terminal png
set output "$1.png"
set xlabel "x"
set ylabel "y"
set title "set $1"
#set xrange [ 0 : 10 ]
#set yrange [ -2.0 : -1.4 ]
#set mxtics 5
#set mytics 5
#set xtics 5
#set ytics 0.5
plot 1 noti w l 0,\
	"$1" using 1:2 title "$1" with points #impulses, points, steps, lines
EOF
}}}
Where ''$1'' is the parameter that you must to pass to 'plot.sh' script, it contains coordinates file.


> "No temo a los ordenadores; lo que temo es quedarme sin ellos"
>    -- ''Isaac Asimov''
! Ciclo de la gestión del Kn
# ''Información del conocimiento (knowledge)''
** mucho enfoque ala tecnología 
** Redes Sociales   
** Comunidades de practica 
# ''Circulación del conocimiento (socializar)''
** con kn tactito de uno >> kn tacito de muchos (Naka Takeuchi)
**  ''kn tácito >> kn codificado >> kn tácito''
** 50 % del kn no es posible de forma tácito
** La interacción entre personas -> administración de comentarios para que legue a quienes les interese.
** Como incentivar compartir la experirncia de la gente -> con recompensas ???
** debe estudiarse la cultura Colombiana, incluso local, cultura Payanes
** socio cutural -> confianza
# ''Conocimiento es la estrategia !!!!''
** personas dentro de la orgs
*** como se mide esto????, aristas que mas e lleguen a ese nodo???
*** por medio delas TIC puede mediar para construir esto????
! Gestión estratégica
 . G. TH
 . G. TIC
 . G. calidad
 . G. de los clientes
  Todo esto gira alrededor del kn
! Capital del Kn
*Cap Intelectual
*  Cap humano
*  Cap. estructutal: Sist. Gest. de calidad, Sist. de info, politicas, directrices, estrtegia, vision, msion
*  Cap. relacional: todas la relaciones que se construyen

 @@'' Ges. de la INNOVACION = Gest. del kn''@@

 '' Trans-disciplinariedad !!! ''

 '' Comunidad  de pracitca => para llegar a un kn distribuido  ''
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>>

!Otras ayudas
* [[Ayuda en Español|http://www.giffmex.org/twtutorialespanol.html]]
* [[Ayuda en Ingles|http://www.tiddlywiki.org]]
* ''~AsciencePad'', editor visual para ~TiddlyWiki
** http://math.chapman.edu/~jipsen/asciencepad/asciencepad.html
* ''~TiddlyMath'', enfocado a fórmulas y gráficos
** http://math.chapman.edu/~jipsen/tiddly/tiddlymath.html
* Estilos para ~TiddlyWiki, para cambiarle el aspecto
** http://tiddlystyles.com/
** http://tiddlythemes.com/
* [[GettingStarted]]
* `sum_(n=1)^oo 1/n^2=pi^2/6`
* $\sum_{n=1}^\infty \frac1{n^2}=\frac{\pi^2}6$

! Instalar Plugins
InstallPlugins

!Manual edición en ~TiddlyWiki
VNotes
Sang Shin
Java Technologies Architect
http://www.javapassion.com
----
* Desarrollado en Java. Debug: ~NetBeans o Eclipse
* Modes of running
** Web: javascript code. Produccion
** Hosted: debug, Java (VM). Desarrollo
----
Building User Intreface
* Widgets Gallery (GWT Widget Gallery)
* code.google.com/webtoolkit
----
Remote Procedure Call (RPC)
* Recuperar datos de un servidor de forma asincrona
* Mover toda la lógica de usuario al cliente y dejar la lógica del server (Si se hace apropiadamente !!!)
** Tambien puede reducir el tiempo de carga
* Los objetos deben ser serializables:
** Los tipos de datos básicos son serializables. Ej: char, byte,... String, Date, Float,...
** Los objetos no los son. No se puede enviar el objeto Persona (muy complejo). Mejor pasar un archivo xml. Formatear mediante JSON
* Manejo de excepciones RPC:
** metodo ~AsyncCallback.onFailure(Trowable)
----
*JSNI - Javascript Native Interface
** mezcla código javascript con Java y viceversa
** ya hay javascript code y sabe que funciona, así que desea usarlo (no re-implementarlo)
** No es muy portable (hay conflictos con algunos browsers)
** Ej. public static native method_name/*-{  @@javascript code@@ }-*/
----
GWT configuration
*  *.gwt.xml file
* ~EntryPoint.onModuleLoad() => ''init'' de ~JavaScript
* Lo que esta en ''source path'' se traduce a Javascript, sino esta no lo hara.
* En ''public path'' esta recursos como imágenes, sonidos, etc
* ''Servlet path'' si se usa RPC. Dice a cuales servlet se va a acceder
----
Project structure
* Cliente, server, public, configuración
* 
-----
Prerrequisitos para correr AJAX
* Mobile: Web Run Time (WRT)
* Browser: AJAX Engine
----
En Netbeans:  ~GWT4NB
Appis for GWT: python
To upload a TiddlyWiki on your web server:
#Import UploadPlugin from BidiXTW aka http://TiddlyWiki.bidix.info/
#Install an UploadService on your web server by configuring this scripts [[store.php]]
#set an {{{<<upload [params]>>}}} button for example in your SideBarOptions with {{{params}}} or UploadOptions as describe in UploadPluginDoc
#click on the <<upload>> button
Or sign at http://TiddlySpot.com/
 
* Paso 1: construir el portafilio de servicios
** Se describe elservicio y se expone con SWDL
** Mejores preacticas
**cada servicio tiene varias interfaces (uno de grano fino, y otro de grano grueso) 
* Paso 2: ESB (Bus de servicios empresarial)
** Open ESB
** ChainBuilder
** SOA JBoss
** Cada proveedor tiene su ESB
** El ESB ofrece la transparecnia de invocaciones de los servicios
** Ofrece adaoptaodores JCA (a nivel de datos, NO transforma modelo de datos)
** Metamatrix (JBoss): para cmunicar varios modelos de BD's (similar  JDBC)
* Paso 3: Orquestador, Logica de servcicios (44)
** Lenguaje BPEL: basado en los conceptos de workflows
** Me dice en que secuencia se puede ejcutar los servicios (a parir de unos puedo armar muchis mas)
** Todos usan BPEL menos ChainBauilder
** Se definen las reglas para la comunicacion de los workflows
* Paso 4 Exposicion (Delivery)
** Depende de la solucion, esto cambia
** Entrega de servicios
** Portlets: portales con cierta funcionalidad.
** SOA con Sistema Informacion Ambiental:
*** adicionar componenetes espaciales al ESB
*** WSDL que prove OGC
*** Web mapping para la entrega del servicio (Camaleon, MapLayers, MapWeb, ...)
** Adapatacion de contenido (dependiendo del dispositivo con el que ingrese al portal)
* Paso 5. Dashbooard 
** KPI: mide a nivel de costos corresponde con los niveles de venta que estoy obteniendo
** Capex: gasto de inversion
** Opex: gastos por operacion
** 




To upload a TiddlyWiki on your web server:
#Import UploadPlugin from BidiXTW aka http://TiddlyWiki.bidix.info/ or http://www.tiddlytools.com/ or http://tiddlywiki.bidix.info
#Install an UploadService on your web server by configuring this scripts [[store.php]]
#set an {{{<<upload [params]>>}}} button for example in your SideBarOptions with {{{params}}} or UploadOptions as describe in UploadPluginDoc
#click on the <<upload>> button
Or sign at http://TiddlySpot.com/

-----
Plugins son tiddlers con códigos especiales que aumentan el poder de TiddlyWiki. Es fácil instalar plugins:

* Cuando encuentre el plugin que quiere en su TiddlyWiki, copie la dirección web de la página donde se encuentra el plugin con la ventana de búsqueda de su navegador web.
* En su propio archivo TiddlyWiki, haga clic en "ImportTiddlers" (en la versión 2.2+ se encuentra en el área "backstage"; en versiones anteriores, se encuentra en el panel de opciones en el menú a la derecha.
** Pegue la dirección que copió de la página del plugin a la primera ventana del panel de ImportTiddlers, y haga clic en "Fetch" (adquirir).
** En la próxima ventana, seleccione "Default" y
*** Paste the url you've copied into the top window of the import tiddlers tiddler that appears. Then click Fetch.
*** A list of all the tiddlers found in the other file will appear. Find the tiddler of the plugin you want, then check the box next to it.
*** Below the list is a menu that says "More actions..." Choose "Import these tiddlers."
*** Your screen will blink and change several times while your file is being updated. If you have your TiddlyWiki configured to automatically save every change (which is default), the box will appear in the top right corner saying it has saved the change. If you have it configured another way, then click on "save changes".
*** Hit the 'refresh' or 'reload' button on your browser.
*** The plugin should now be installed and usable on your file. That's it!
* ¿Habrá ''autonomía de participación'' siempre y cuando se haya definido de forma adecuada la ''autonomía de diseño''?
** La ''autonomía de diseño'' se refiere o hace referencia a la libertad en la elección de su propio: __Modelo de Datos__, __Lenguaje de consulta__, __Implementación__, @@__Restricciones__@@, @@__Gerenciamiento de datos__@@ a ser usado y Funcionalidades soportadas.
** La ''autonomía de participación'' se refiere a la capacidad de los componentes de @@decidir cuánto de sus funciones, operaciones y datos compartir@@. También incluye la posibilidad de @@decidir entrar o salir de la cooperación cuando lo deseen@@.
** La parte de diseño es muy importante ya que se define la parte lógica de la solución y por lo tanto las políticas con las debe trabajar la aplicación, esto es, en casos extraordinarios como debería comportarse. Lo anterior implica que si el diseño esta bien formulado entonces puede hacer una ''autonomía de participación''
* ¿Sin tener autonomía de ejecución es muy difícil crear autonomía de comunicación?
** La ''autonomía de comunicación'' se refiere a la capacidad de los componentes de @@decidir cuándo y cómo responder a requisitos de otros componentes@@.
** La ''autonomía de ejecución'' de cada componente se refiere a la @@libertad que tiene cada componente de ejecutar sus propias operaciones@@ sin interferir en la ejecución de operaciones no locales.
** Efectivamente, al no definir qué componentes y cómo deben dejar lo que estan haciendo para atender la petición de otro componente pues cuando se haga una petición de algún servicio puede resultar que el componente que recibe la petición se quede dedicado y descuide sus funcionalidades o que nunca responda.
Definición
** Descubrir conocimiento a partir de una gran cantidad de datos (textos web, txt, bodega de datos, etc) por medio de tecnología de reconocimiento de patrones (correlación de datos con otros) de técnicas estadísticas y matemáticas.
----
Tareas de DM
** Descripción: sugerir explicaciones a los patrones y tendencias que arrojan el conjunto de datos.
** Clasificación: determina a que valor corresponde una instancia (registro, tupla) dentro de un rango definido de categorías (Ej. ingresos[altos, medios, bajos]). El valor objetivo es categórico.
*** Estimación: el valor objetivo es numérico.
*** Predicción: los resultados del clasificación se ubican en el futuro.
** Agrupamiento por similitud (''Clustering''):
*** NO hay variable objetivo.
*** Generar clases que agrupen instancias de características similares y se diferencien de los que están en otras clases.
*** ''» Agrupamiento jerarquico, K-means, Fuzzy C-means, Miméticos, Harmony Search''.
** Asociación: encontrar afinidad entre atributos con el fin de ofrecerlos juntos. Ej. Cuáles items se compran juntos y cuáles no.
----
Aplicaciones
** Crear marketing dirigido (Ej. publicidad resaltando el precio para aquellas personas que son sensibles al precio y/o destacando características del producto para otras personas)
** Ayudar en la toma de decisiones (predecir condiciones financieras)
** Text Mining
** ''Web Mining'':
*** Contenido
*** Estructura - Navegación
*** Uso
----
| !Nombre | !Institución | !email |
|Dr. Martha Millán  | Universidad del Valle |  millan@eisc.univalle.edu.co|
|Mag. Martha Mendoza | Universidad del Cauca  |   mmendoza@unicauca.edu.co|
|Dr. Ricardo Timaran |  Universidad de Nariño |  ritimar@udenar.edu.co|
|Dr. John William Branch   | Universidad Nacional de Colombia – Medellín | jwbranch@unalmed.edu.co|
|Dr. Elizabeth León Guzmán | Universidad Nacional de Colombia – Bogotá | eleonguz@unal.edu.co|
|Dr. Fabio A. González | Universidad Nacional de Colombia - Bogotá | fgonzaleza@unal.edu.co|
|Dr. Jonatan Gómez Perdomo | Universidad Nacional de Colombia – Bogotá | jgomezpe@unal.edu.co|
|Dr. Germán Hernández |  Universidad Nacional de  Colombia – Bogotá| gjhernandezp@unal.edu.co|
|Néstor Dario Duque Méndez | Universidad Nacional de Colombia – Manizales | ndduqueme@unal.edu.co|
|Alfonso Pío Agudelo Salazar | Universidad Nacional de Colombia – Manizales | apagudelosa@unal.edu.co|
|Dr. José Abásolo | Universidad de los Andes | jabasolo@uniandes.edu.co|
|Red de contactos|c


----
Referencias
* [[Análisis y Extracción de Conocimiento en Sistemas de Información | http://www.dsic.upv.es/~jorallo/cursoDWDM]]
''Métodos no supervisados''
* No hay variable objetivo (clase).
* Busca patrones y estructura entre todas las variables.
* El ejemplo típico es ''clustering''
''Métodos supervisados''
* Hay una variable objetivo predefinida (clase).
* Al algoritmo se le da un conjunto de ejemplos, y entre ellas la clase.
* Ej. K-nn (k-nearest neighbors)
----
Metodología para modelos supervisados
* Conjunto de entrenamiento, pre-clasificado (donde se incluya la clase). Este conjunto tiene muchos registros. Este no incluye las nuevas instancias que va a clasificar.
* Conjunto de prueba nos sirve para ajustar el modelo, comparando los resultados de esta fase con los valores reales (variable objetivo). El objetivo es ''minimizar el error''.
* Conjunto de validación, permite con las ''Técnicas de evaluación'' obtener un modelo final sin errores mínimos.
----
Nivel óptimo de complejidad
* En la etapa de entrenamiento no se debe ''sobre-ajustar el modelo'' (tratar de conseguir el mínimo de error) ya que esto incrementa el error en la etapa de validación, además el modelo se vuelve más complejo.
* En un modelo de baja complejidad (Ej. una linea recta) hay ''poca variabilidad'' al tratar de reajustarse para clasificar nuevas instancias, sucede lo contrario cuando se tiene un modelo complejo (Ej. una linea curva), en este caso se presenta ''alta variabilidad''.
* ''Dilema del bajo/sobre ajuste'' (Bias-variance trade-off): un modelo de alta complejidad tiene un sesgo bajo (en términos de error) pero tiene alta variabilidad. Un modelo de baja complejidad tiene un alto sesgo; pero tiene una baja variabilidad.
<<<
@@color(green):Alta complejidad@@ » @@color(green):sesgo bajo@@ » @@color(green):alta variabilidad@@
@@color(red):Baja complejidad@@ » @@color(red):sesgo alto@@ » @@color(red):baja variabilidad@@
<<<
----
Complejidad vrs. Error
* Para estimar la precisión de un modelo se hace a través del ''error cuadrado medio - MSE'', el cual combina el sesgo (bias) y la varianza.
* Entre dos modelos evaluados, es más óptimo aquel con menor MSE.
<<<
MSE = [Σ(y~~i~~ - ŷ~~i~~)^^2^^] / (n - //p// - 1) ; donde //p// es número de variables independientes.
MSE = variance + bias^^2^^
<<<
----
Algoritmo K-nn
* Es muy usado en clasificación. También se usa en estimación y predicción.
* Es  un algoritmo de aprendizaje basado en instancias (registros, tuplas).
<<<
COMIENZO
 Entrada: D = {(x~~1~~ , c~~1~~ ), . . . , (x~~N~~ , c~~N~~ )}
      x = (x~~1~~ , . . . , x~~n~~ ) nuevo caso a clasificar
 PARA todo objeto ya clasificado (x~~i~~ , c~~i~~ )
      calcular d~~i~~ = d(x~~i~~ , x)
 Ordenar d~~i~~ (i = 1, . . . , N ) en orden ascendente
 Quedarnos con los //K// casos D~~x~~^^K^^ ya clasificados más cercanos a //x//
 Asignar a //x// la clase más frecuente en D~~x~~^^K^^
FIN
<<<
[[La web social y los derechos de los usuarios | http://www.dreig.eu/caparazon/2008/11/01/la-web-social-y-los-derechos-de-los-usuarios/]] ^^(http://opensocialweb.org/2007/09/05/bill-of-rights/)^^
> Derechos:
>> * Propiedad sobre ''mi información''
>> * Control de ''mi información''
>> * Libertad de acceso a ''mis datos'' (que yo mismo he ingresado)
> * Red social del futuro:  ''entornos fluidos, interoperables, portables, libres''. Nada más y nada menos que “como aire”.

> ''The future of social network'' (slides by Charlene Li)
>* Components of SN: 
>> ** ''Profiles'': universal identity, but today there are many like ~OpenID, oAuth, Facebook conect, ~Azure-Live Mesh (Microsoft), they must to work together
>> ** ''Relationships'' (social graph): today they are ''explicit and pain'' __(many indentities -Facebook, ~LinkedIn, etc-)__. In future realtionships mapping will be ''automatic'' and ''permission-based''.
>> ** ''Activities'' (social context): __a comment on any SN must reflect on other one like an opinion about my favorite book must reflect on Amazon store__. Authority, interest and trust level among your networks [''endorsement value depends on my SN''].
>> ** ''Business model'' (social influence): personal CPM for mayor high-influence individuals.

''Ubiquitous social networks'' ?
groundswell.forrester.com ?
! Use of Learning Theory
(http://hunch.net/ , ''John Langford'')
* Is Theory in Machine Learning (ML) "only useful for getting papers published" ?
* When designing an algorithm has two important effects in practice:
** It can help make your algorithm behave right at a crude level of analysis, leaving finer details to tuning or common sense.
** An algorithm with learning theory considered in it’s design can be ''more automatic''. The subtle issue here is: How do you measure “more automatic”?
* How do you go about solving a learning problem?
** ''Is it a learning problem or not?'' Learning theory such as __statistical bounds__ and __online learning__ with __experts__ helps substantially here because it provides guidelines about __what is possible to learn and what not__.
** ''What type of learning problem is it?'' Is it a problem where exploration is required or not? Is it a structured learning problem? A multitask learning problem? A cost sensitive learning problem? Are you interested in the median or the mean? Is active learning useable or not? Online or not? Answering these questions is partly definition checking, and since the answer is often “all of the above”, figuring out which aspect of the problem to address first or next is helpful.
** ''What is the right learning algorithm to use?'' Here the relative capacity of a learning algorithm and it’s computational efficiency are most important. If you have few features and many examples, a nonlinear algorithm with more representational capacity is a good idea. If you have many features and little data, linear representations or even exponentiated gradient style algorithms are important. If you have very large amounts of data, the most scalable algorithms (so far) use a linear representation. If you have little data and few features, a Bayesian approach may be your only option.
* Many people have only been exposed to one piece of learning theory, often [[VC theory | http://en.wikipedia.org/wiki/Vapnik-Chervonenkis_theory]] or it’s cousins.
''Related works'':
[[We-magazine]]
!Comics, Video Games
''Shinobi'' (http://www.shinobi-news.com.ar/) ***
Revista digital sobre anime, cómics, cine, j-pop y culturilla otaku. "Shinobi es una puerta abierta para todos los que quieran deleitarse con lo mejor del género fantástico, la música y, de por sí, para cualquier mortal con inquietudes artísticas.", reza el editorial de su primer número. La revista se descarga en formato ejecutable, es muy prolija, bien escrita, con un muy diseño y llena de contenido. La única pega es que resulta imposible de imprimir, por lo que pierde puntos en el área usabilidad. Digan lo que digan, nada mejor que leer de anime en el baño.

''PAMMHG'' (http://www.pammhg.com/)
Una revista de cómics como pocas veces hemos visto. Con calidad profesional e información bien desarrollada e investigada, sorprende -a pesar de su innegable calidad- por ser parte de una comunidad entusiasta y amable.

''~JapanNext'' (http://www.japannext.com.ar/joomla/)
Los fanáticos de la cultura pop de Japón parecen ser uno de los más entusiastas (sin contar a la comunidad de software libre),  en lo que se refiere a revistas en línea. En este caso, ~JapanNext es una revista de Anime, ~J-Pop, manga y cultura oriental, de publicación mensual, hecha por otakus para otakus. Muchas, muchísimas noticias y muy buenos informes especiales  bien desarrollados (con guías de episodios y de personajes incluidas).

''Cargad!'' (http://www.cargad.com/index.php/cargad-numeros-disponibles/)
Una revista completísima, casi una Biblia digital, para los jugadores de Warhammer. Ofrece escenarios, campañas, estrategias, noticias y eventos.
Además, recomienda literatura y cine relacionado. Es tan completa que da miedo. Si uno no está en el mundillo seguramente le ocasione vértigo.
Si juegas Warhammer seguro que la conoces. Si no juegas Warhammer, hay algún que otro informe que podría ser de tu satisfacción. O bien podría ser la puerta de entrada a ese apasionante hobby.

''~ScifiWorld'' (http://www.scifiworld.es/publicaciones.php)
Los responsables de la revista Scifi.es, que mes a mes produjeron la publicación gratuita del Canal ~SciFi, ahora editan su propia revista... en papel. Todavía no queda claro si piensan o no liberar los números atrasados, pero el #1 está disponible para descarga. Esperamos que, con el tiempo, vayan liberando el resto. Sino, el archivo de Scifi.es, por si solo, amerita figurar en esta lista.

! Literatura
''Tauzero'' (http://www.tauzero.org/download/) ***
email: ezine@tauzero.org
Con una línea de pensamiento similar a ~NeoTeo, la declaración de principios de ~TauZero nos sedujo desde el principio: "~TauZero es una revista digital que tiene como objetivo el incentivar y valorar la creación literaria en el género de ciencia ficción en particular, y 'lo fantástico' en general. Un objetivo paralelo es la divulgación de la ciencia y el pensamiento escéptico."

''Qliphoth'' (http://qliphoth.eximeno.com/index.htm)
Fanzine, como le llaman sus creadores, de literatura mitológica (para llamarla de alguna manera). Según el sitio, los relatos que se pueden encontrar van "desde mitología clásica hasta los inefables Mitos de Cthulhu". Qliphoth tiene formato de revista, pero sus entrañas están compuestas de literatura de la buena.
Utilizando Wikipedia (¡como la queremos!) descubrimos que el nombre de la revista es el término Qlifot, en inglés. "significa piel o cáscara al igual que materia o sustancia. El singular de esta palabra es Qlifá o Qelipá, también llamado a veces ("la primera cáscara (emanación) de impureza) con el cual se refieren a los regentes de las huestes de la Maldad en el universo, dentro del sistema de enseñanzas místicas del judaísmo como la Cabalá y Gematría entre otras." Wow.
 
''Axxon'' (http://axxon.com.ar/c-online.htm) ***
Axxon es, sin lugar a dudas, uno de los mejores sitios en castellano sobre ciencia ficción. Y es un sitio con historia, ¡vaya si lo es! Todo comenzó a fines de 1989, cuando los creadores, ante la crisis económica de Argentina, vieron que las posibilidades de publicación eran nulas. Desde entonces, acuñaron la que tal vez sea la primera revista digital en el mundo (tal vez). "La revista comenzó funcionando con un programa que presentaba datos en modo texto de ~PC-DOS y con una cantidad relativamente pequeña de páginas", un programa escrito por los mismo creadores.

''El Templo de las Mil Puertas'' (http://www.eltemplodelasmilpuertas.com/)
Citar la proclama del sitio es más que suficiente para entender la importancia de publicaciones como esta. "Esta iniciativa surge de una reivindicación quizá un poco romántica. Vemos en los kioscos muchas revistas para jóvenes, y en ellas se habla de las cosas que supuestamente nos gustan, de nuestras aficiones y nuestros intereses. Pero nunca se habla de libros. ¿Por qué? ¿Acaso los que hacen estas revistas -todos ellos adultos, por supuesto- siguen creyendo que la gente joven no lee?"

''Alfaeridiani'' (http://dreamers.com/alfaeridiani/)
Alfa Eridiani es una revista de aficionados, hecha por y para aficionados a la ciencia-ficción. Su aparición es bimestral (enero, marzo, abril, mayo, ...). Puedes enviar tus colaboraciones a alfaeridiani@yahoo.es  . Recuerda poner tu nombre, apellidos y correo- e en el interior. Se aceptan formatos DOC y RTF. El texto del cuento debe estar escrito en Times New Roman a 12 pto con un sangrado de 0,75 cm y un salto de párrafo de 1 línea. Los ejemplares que no cumplan estas especificaciones serán devueltos a sus autores.
La Editorial tiene dos revistas Alfa Eridani y su suplemento. ~ALfa Eridiani  es completamente gratuita por lo que no hay que pagar ni se recibe renumeración. Su suplemento, ''Erídano'', está en tramites de pasar al papel. El último enteramente gratuito será el número 18. El 17 ya es de papel. Se puede comprar pinchando en la portada o escribiéndome.

! Software Libre
''Atix'' (http://atix.opentelematics.org/)
Revista de software libre, hecha en Bolivia. Atix es un palabra quechua, con un sentimiento profundo y con gran sentido filosófico: el que lo sabe, el que lo intenta, el que lo puede, el que lo logra. Estimados, me complace anunciar la liberación del número 7 de la Revista Atix (número 1 de la gestión 2009), es así que os invito a bajarla y disfrutar de su contenido, como siempre invitamos a enviarnos sus comentarios.

''Tuxinfo'' (http://www.tuxinfo.com.ar/tuxinfo/)
Revista de software libre, hecha en Argentina. Con el eslogan "Lo importante de la libertad es ser libre para poder elegir", la publicación se dedica, mes a mes, a mostrar lo mejor del software libre.

''~RevistaSL'' (http://www.revista-sl.org/)
@@No publicada@@
El software libre hecho revista, dicen los creadores. Y lo es. "Parece increíble que ya han pasado tres años desde que iniciamos esta aventura, tal vez ninguno de los que colaboramos en esta publicación llegamos a pensar que seguiríamos tanto tiempo con este proyecto que tan sólo pretendía difundir lo que a nosotros nos gusta y en lo que creemos: El Software Libre.", con ese mensaje nos recibe el sitio de Revista SL.

''~SofLix - La Revista Libre'' (http://www.soflix.com/) 
@@No publicada@@
Otra revista sobre software libre, pero que no hace asco en enriquecer su contenido con otro tipo de temáticas. Incluye gadgtes, tecnología, juegos, ciencia y guías prácticas.

''~UXi'' (http://revistauxi.wordpress.com/)
@@No publicada@@
Revista de software libre de la Universidad de Ciencias Informáticas de Cuba. Tiene un nivel elevadísimo, por lo que puede resultar muy críptica para el usuario medio.
Sin embargo, para el pingüino veterano es una de las mejores opciones. Una de las secciones más interesantes es la que ofrece alternativas libres y gratuitas a programas comerciales. Esa la entendemos todos y es impecable.

''~RedUser'' (http://redusers.com/noticias/categorias/revistas-digitales/)
La ~RedUser, sitio de una editorial argentina especializada en informática, ofrece alguna de sus publicaciones en formato digital. Las temáticas son variadas, pero todas relacionadas con la tecnología.
El problema es que, a pesar de la calidad del contenido, el visor en línea es muy incómodo y la digitalización de la revista podría ser mucho mejor. Sin embargo, los artículos, guías, análisis y recomendaciones, valen la pena el dolor de ojos.

''Begins'' (http://www.revistabegins.org/)
@@No publicada@@
Linux, Linux y Linux. Linux y software libre. Linux, software libre y militancia. Todos sinónimos, casi. Los contenidos son muy buenos, incluyen guías, análisis y trucos. Amantes de Windows Vista y defensores de Bill, atenerse.
Una de las publicaciones más militantes del software libre y el código abierto. Nuevamente, el usuario novel se queda afuera. Para el resto, una gozada.

''Linux Journal'' (http://www.linuxjournal.com)
Con acceso restringido :(

''Linux Magazine'' (http://www.linux-mag.com/)
En este sitio no se pueden los artículos; pero si desde Linux Pro Magazine.

''Linux Format'' (http://www.linuxformat.co.uk)
En el link "Archives (~PDFs)" @@se pueden descargar algunos archivos@@ de las ediciones anteriores, para el resto necesita suscripción.
News, reviews, features and tutorials - your complete guide to the world of Linux. Whether you've just discovered Linux, or you're a full-time guru, Linux Format has everything you need to make the most of your OS. Published monthly and sold around the world, the leading UK Linux magazine highlights the latest developments in the world of open source, examines new software and book releases, and shows you how to go further with our hands-on tutorials.

''Linux User & Developer'' (http://www.linuxuser.co.uk)
~LinuxUser & Developer is the UK's only magazine written specifically for Linux professionals and IT decision makers. It is available world-wide from your local newsagents and bookstores, or in the Download Edition (PDF format) direct from this site. @@No se pueden descargar las revistas@@.

''Linux Pro Magazine'' (http://www.linux‐magazine.com) (http://www.linuxpromagazine.com/)
Conocida simplemente como Linux Magazine fuera de EE.UU.
Linux Magazine is a polished, highly technical magazine designed for IT
professionals who specialize in Linux technologies. The publication offers
advertisers a direct line to the world of Linux. The readers are the leading
experts who are first to identify key technical needs of their companies and also
the first to locate opportunities for improving their networks. Linux Magazine reaches
deep into the very heart of the IT business, where critical opinions regarding
needs are formed and buying decisions begin. @@Se pueden descargar@@

''Full Circle Magazine'' (http://fullcirclemagazine.org)
Cubre exclusivamente temas de Ubuntu y asuntos de interés de la comunidad de Ubuntu. Es generada por la comunidad y descarga gratuita.

''Free Software Magazine'' (http://www.freesoftwaremagazine.com)
Publicada en formato PDF y publicada aproximadamente cada dos meses y cubre asuntos relacionados con el mundo del Software Libre, incluyendo temas no relacionados con Linux. @@Sus post son online@@

''Espíritu Libre'' (http://www.revista.espiritolivre.org/?page_id=59)
Revista de Software Libre del Brasil (En portugues)

''DattaMagazine'' (http://www.dattamagazine.com/)
Hosting Dattatec.com edita y brinda una excelente revista de tecnología de forma totalmente gratuita.

! Artes, diseño y fotografía
''Sacapuntas'' (http://www.a-d-a.com.ar/sacapuntas.php)
Son pocos los halagos que podemos dispensar a esta publicación digital sobre la actualidad y la historia del dibujo, concebida por la Asociación de Dibujantes de Argentina. Como era de esperarse, la parte gráfica es orgásmica. Cada página es una obra de arte, transpira talento e inspira a seguir leyendo.
El formato, y en una muy sabia elección por parte de los autores, es apaisado, entrando a la perfección en la pantalla de nuestro ordenador. Hay que descargarla. Ya. Sin excusas. YA.

''Foto DNG'' (http://www.fotodng.com/revista/descarga.php)
Probablemente, si te interesa el tema, ya la conoces. Y si no, deberías. Foto DNG es una publicación mensual en PDF dirigida "a tod@s los aficionados y profesionales de la fotografía, tanto del mundo analógico como del digital y con conocimientos desde los más básicos, hasta los profesionales más veteranos en el mundo de la fotografía."

''~C4Des'' (http://www.c4des.com/c4desforo/index.php?board=14.0)
La revista oficial de 4D Cinema, el programa creación de gráficos y animación 3D desarrollado por Maxon. La versión completa es paga, vale Є3,50, es digital y tiene 108 páginas, con tutoriales y vídeos.
Nosotros descargamos la versión gratuita, con menos páginas (52) y, francamente, nos encantó. Pero solo la podemos recomendar para los que estén REALMENTE interesados en modelado y animación 3D. El resto no le va a encontrar mucho sentido, menos si no poseen la herramienta homónima. En cuyo caso, si quieren una herramienta libre para animar o modelar cosillas en 3D, Blender es la mejor opción. Se pueden lograr cosas como ésta. Nosotros apenas llegamos a esto. No nacimos para trabajar en Pixar.

''Oblongo'' (http://www.oblongomag.com/)
Publicación electrónica bimensual proveniente del único país del mundo con formato Oblongo: Chile. La misión de la revista es difundir el Diseño y la Comunicación Visual de Chile y Latinoamérica, de manera profesional pero entretenida.

''mgz_'' (http://magnoliart.com/)
Magazine de marketing, publicidad, diseño y posicionamiento, de eso trata esta publicación, en palabras propias de su creadores. Pertenece a la red de blogs Magnoliart Media y contiene entrevistas y artículos interesantes. Pocas páginas, pero información inédita. Si la temática te interesa, la revista te va a flipar.

''Designers e-Magazine'' (http://www.designers-mag.com/)
Designers e-Magazine focuses upon centralizing all art works of different artists regardless of their heritage, race, location, proficiency level or age. We welcome all and every kind of art you have to offer, and would like to post them on our web site as a virtual art gallery. Please register yourself with us, so that your art is specifically yours! 

! Tecnología
''dattamagazine'' (http://www.dattamagazine.com/)
Como todos los meses la empresa de Hosting Dattatec.com edita y brinda una excelente revista de tecnología de forma totalmente gratuita. Los invito a descargarla con tan solo un clic desde su sitio oficial.

''Journal of Information Architecture'' (http://journalofia.org/)
The Journal of Information Architecture is an international peer-reviewed scholarly journal. Its aim is to facilitate the systematic development of the scientific body of knowledge in the field of information architecture.


>"Dejen que el futuro diga la verdad y evalúe a cada uno de acuerdo a sus trabajos y a sus logros. El presente es de ellos, pero el futuro, por el cual trabajé tanto, es mío".
> -- ''Nikola Tesla''
[[Home | http://www.unicauca.edu.co/~ecaldon]]
[[Semantic Web]]
[[Conceptual Web]]
[[Social Networks]]
[[Mobile Web]]
[[OpenID]]
[[PLE]]
[[Peer to Peer]]
----
[[Fractals]]
[[Redes TV]]
[[Machine Learning]]
[[Android]]
[[Educación]]
[[AI]]
[[SOA]]
OpenMeeting
----
[[Becas/Convoca]]
BibliotecasOnLine
----
[[commands]]
[[Books]]
[[Magazine]]
----
[[Master]]
MasterII
MasterIII
----
"La mejor forma de predecir el futuro es implementarlo"
     -- ''David Hansson''
''Making sense of the 'semantic Web''' (At http://edition.cnn.com/ by Steve Mollman)
> * New form of AI.
> * The idea behind the semantic Web, very broadly, is that things on the Internet will be described with descriptor languages so that computers can "understand" what they are.
> * //Exmaple// using WS (kiosk's touch screen __["shared interaction space"]__): http://www.youtube.com/watch?v=hAAwKxeoCrk
>> * [[Advanced Tangible Interface Lab | http://www.dfki.de/iui/advanti/lab/]] at the German Research Center for Artificial Intelligence in Saarbrücken.
>> * The team also will soon launch a Web-site version of their system, where users can ''drag'' icons with a cursor instead of their finger. Users also can employ ''speech commands''. __(Here they are using gestures, like human natural gestures)__
> * ''Cluuz.com'' attempt to use semantics for better searching. Cluuz does better than Google with "Nobel prize winners 1990s," but it's worse at many other queries. 
> * The semantic Web, when and if it fully blooms, ''will complement'', ''not replace'', the current Web. What's missing so far are enough ''fun ways'' to use it.
Entorno de desarrollo Netbeans 6.5
Entorno de despliegue ~GlassFish V2 (http://localhost:4848/) 
Java System Application Server (http://localhost:8081/)
----
JSF: Java Server Faces
** MVC -> VC
** V => a partir de JSP. Dentro delos JSP : gráficos pre-diseñados, 
** C => Servlets: Faces servlet (controlador, maneja eventos).
** faces-config.xml => archivo de config para definir el esquema de navegacion entre los JSP's.
** Beans gestionados (managed beans) => permite enlazar la VC con el Modelo (Logica de negocio).
** WAF: difieren en el alcance
*** Application bean: variables de app's, para toda la app, todos los users, y se comparten entre ellos.
*** Session bean: variables de sesiones.
*** Request bean: disponible entre peticiones, para pasar a otros scripts.
*** se debe usar el alcance mas pequeño.
----
Descriptores de despliegue
** ''faces-config.xml'' : navegación (lo define el desarrollador)
** ''web.xml'' : estándar, información de los servlets.
** ''sun-web.xml'' : especifico del server de app (esto hace que la app no sea portable)
----
Bundle: info de la conexión a la BD
Parte teórica
* Arquitectura: como se enmarca
* estrucutras propias del framework

Parte práctica
* Que funcione las app (esten listas)
* Hacer cosas sencillas que funcionen
* Hacer video-tutoriales, ayuda visual
omcaicedo@unicauca
----
''Peq y Med escala''
* JBOSS SEAM [Teacher]
* Ruby on Rails [Gabr]
* Simphony [Fab]
* django [Edwin]
Preparar charla (2-4 Horas):
- charla teórica
- tutorial practico (Videotut)

Mart 17 y J 19 } Gabo
J 19 y Mart 24 } EdwinCaldon
Mart 24 y J 26 } Fab
* Entregar:
** - Doc teorico
** - Tutorial
** - Presentacion:
*** + dominio del tema
*** + menejo del tiempo
*** + manejo del auditorio
----
* ''Computacion ubiqua''
** Context awareness (percepción del contexto):
*** - lbs (location base system)
*** - clima
*** - temperatura
*** - tipo de dispositivo
*** - Preferencias de users
* redes de sensores -> servicios específicos [que siente, como esta]
----
''Arquitectura a 2 Niveles'' [Depende del negocio]
* App delgada: poca log de negocio
** procedimientos almacenados en la BD
* App gruesa: 
** mucha logico en el cliente
** conttrol, 
* Modelo C/S (este modelo tiene tres capas):
** Cliente
** Middleware: permite la comunicación entre cliente y servidor (Varia dependiendo de las apps que se desarrollen Ej: Midd de acceso a datos, Midd a XML, Midd a otros)
** Servidor
* Midd de acceso a datos: Drivers a BD {ODBC, JDBC}
* Midd a XML: Parser xml
* Midd a otros: RMI, CORBA, Serv web.
----
''Aquitecturra de 3 Niveles''
* Midd de comunicaciones: HTTP, FTP, SMTP, Implemen de protocolos de nivel de aplicacion:
** Ej: API de jabber para mail = Midd
** Browser -> RTSP[Midd] -> ~VideoStreaming
* Lógica de App:
** Log de presentación (Ej. administración de templates)
** Log de negocio (Control)
** Log de datos [script de manejo de datos en la BD]
* Usando WAF : Web App Famework
----
''Arquitectura de n-Niveles''
* WAF: MVC -> VC, parte fuerte. El M se puede implementar como quiera Ej. Sevicio Web, o con otros lenguajes.
** El M nos sirve para comunicarnos con Logica de Neg y Lógica de datos.
** Debe generar HMTL, XHTML [Brow+disp movil], Web profile.
* Servicios: seguridad, transacc, pool a BD, [Extras que ofrece los servidores Ej: BD]
----
''Arquitectura de referencia''
* Web cantainer: Apache, Tomcat
** Motor qu epermite gestionar el ciclo de vida de una app web
** CGI: 1ra forma de generar HTML dinamico. Permite incluir unlenguaje X
* Componente SW:
** App ya hechas
* Patrones:
** problemas ya resueltos
** Use un WAF: que tenga soporte, documentación, comunidad
* POJOS
** Tecnología OO
** Ejemplo en Java, pues los Objetos JAVA
----
! Schedule
|!Hora|!Mar|!Mie|!Jue|!Vie|
| 8-10 | MAI |        |        |     |
|2-4    |        | DM |        | SI |
|4-6    |        | MAI |   | IIC |
|6-8    |       | SFDI |        | GTI |
|Horario de clases|c
! Modelado y Construcción de Aplicaciones en Internet (MAI)
(http://jano.unicauca.edu.co/modelado/)
* [[March 3 2009]]: Arquitecturas web
* [[March 10 2009]]: práctica JSF
* [[March 17 2009]]: ruby on rails
* [[April 22 2009]]: Aplicaciones web empresariales
* GoogleWebToolkit
! Gestión de la Tecnología y la Innovación (GTI)
(http://dtm.unicauca.edu.co/maestelematica/cursos/gti/)
* [[April 24 2009]]
* GestioDelKn
! Introducción a la Investigación Científica (IIC)
(http://dtm.unicauca.edu.co/maestelematica/cursos/introinv/)
* [[February 27 2009]]: Qué es investigación ?
* TiposDeInvestigación: Tipos de investigación.
* [[EML]] de mi tesis
! Formación en Docencia (SFDI)
(http://dtm.unicauca.edu.co/maestelematica/cursos/docencia/)
* TheCollegeOfEngineering
* Tiddlers relacionados
** [[Educación]]
** [[Redes TV]]
! Minería de Datos (DM)
Chapters from "Discovering Knowledge in Data An Introduction to Data Mining" book by Daniel T. Larose
* IntroduccionDM
* Pre-procesamientoDeDatos (~Min-Max, ~Z-Score)
* AnalisisExploratorioDatos
* KVecinosMasCercanos
* TallerWeka
-----
* [[Clustering]]
! Seminario de Investigación (SI)
http://dtm.unicauca.edu.co/maestelematica/cursos/seminarioinv/
* [[PlanTrabajo2009-1]]
----

ReunionesTutor
! Schedule
|!Hora|!Lun|!Mar|!Mie|!Jue|!Vie|
| 8-10 |    |     |      |      |  WS   |
| 10-12 |  IPEI  |     |      | IPEI |  CE  |
|2-4    |    |     |      |      |  SI   |
|4-6    |    |     |      |      |     |
|6-8    |    |     |   SFDI   | FM  |     |
|Horario de clases|c
! Web semántica (WS)
* [[Microformato]]
! Seminario de Investigación (SI)
http://dtm.unicauca.edu.co/maestelematica/cursos/seminarioinv/
* Protocolante de Carolina Rios
* Presentación del problema (Mi primera presentación)
* Protocolante de Fabinton Sotelo
! Fundamentos Matemáticos (FM)
http://dtm.unicauca.edu.co/maestelematica/cursos/matematicas/
* Presentación ''paseos en grafos''
! Formación en Docencia (SFDI)
http://dtm.unicauca.edu.co/maestelematica/cursos/docencia/
! Competencias Empresariales (CE)
http://dtm.unicauca.edu.co/maestelematica/cursos/empresariales/
* [[Paradigmas]]
! Integración de Procesos Empresariales a través de Internet (IPEI)
http://jano.unicauca.edu.co/integracion/
* [[Interoperable]]
* ImplementacionSOA
----
! ReunionesTutor
SemSimiRel: Similaridad y relevancia semántica
!Tesis I
* Anteproyecto de Tesis:
** Ontologias de propósito general:
*** FOAF ([[Friend Of A Friend | http://www.foaf-project.org/]]): describing people, the links between them and the things they create and do. We can create our own FOAF file from [[ FOAF-Matic | http://www.ldodds.com/foaf/foaf-a-matic]], [[My FOAF | http://afrodita.unicauca.edu.co/~ecaldon/docs/foaf.rdf]]
*** SIOC ([[Semantically-Interlinked Online Communities | http://sioc-project.org/ontology]]): SIOC provides methods for interconnecting discussion methods such as blogs, forums and mailing lists to each other.
** Ontologías en Salud:
** Anotación Semántica:
*** Anotación basado en Ontologías
** Redes Sociales
*** Social Network Analysis 
**** With ''smartRealm'', reaching the right people in social media is a SNAP (Social Network Authority and Prestige) score. Es un API que posiblemente te permite hacer análisis de SN como autoridad y pretigio de un nodo (individuo).
** Redes Sociales en Salud
*** Patients Like Me, M ....
** Buscadores en Salud
** Plataformas de Redes Sociales
*** Elgg
*** Ning
** API's para Redes Sociales
*** Open Social
*** API Facebook
** Frameworks de desarrollo web
*** Django
**** Django RDF
*** ~RoR
* Desarrollo del Proyecto:
** bla,bla,bla
! Review papers and proccedings
* From ''First International Conference, ICCCI 2009''
** On Social Network section:
*** ~D2ISCO: Distributed Deliberative CBR Systems with jCOLIBRI .  Sergio ~González-Sanz, Juan A. ~Recio-García, and Belén ~Díaz-Agudo
*** ~PlWiki – A Generic Semantic Wiki Architecture .  Grzegorz J. Nalepa
! Review books
* ''The Social Semantic Web''. John G. Breslin · Alexandre Passant · Stefan Decker. Springer Verlag Berlin Heidelberg 2009


ips.homeunix.com : repositorios de todos los codecs
* identificación del problema
* formulación de la hipótesis
* experimentación y recolección de datos
* análisis de los resultados y elaboración de las conclusiones.


! ¿Cuál es el método de la ciencia?

- El ''conocimiento científico'' es a veces desagradable, a menudo contradice a los clásicos (sobre todo si es nuevo), en ocasiones ''tortura al sentido común'' y ''humilla a la intuición''; por último, puede ser conveniente para algunos y no para otros. En cambio aquello que caracteriza al conocimiento científico es su ''verificabilidad'': siempre es susceptible de ser verificado (confirmado o disconfirmado). <''Investigación cuantitativa''>


[1]    Mario Bunge. “¿Cuál es el método de la ciencia?”. En: “La Ciencia. Su método y su filosofía”. Editorial Siglo Veinte. Buenos Aires, 1985.
! Qué es
Un microformato es el enrequicimiento de etiquetas html. Permite mediante piezas especiales, estructurar información, esto se hace dentro de las etiquetas normales de html.
! Pros
* Proporciona un poco de estructura semántica a las páginas web actuales (donde se inserta las etiquetas especiales).
* Hay varios microformatos desarrollados a través de Internet, por ejemplo el microformato ''hCard'' (personas + contactos), ''hReview'' (información de revisiones), ''hAtom'' (información de los contenidos disponibles por sindicación o RSS), ''~DublinCore'' ()
! Contras
* Las limitaciones para representar las relaciones entre fragmentos de datos es evidente. Esto impide hacer una descripción mucho más amplia de la información, más genérica.
* El intercambio de información entre microformatos puede llegar a ser difícil. Por lo que hacer conexiones entre objetos (personas, datos, lugares, etc) puede ser ambigua.
* 

* Web móvil se refiere a la posibilidad de acceder a cualquier sitio web desde cualquier lugar independiente del dispositivo que se use. Para ello la ~W3C ha creado la [[Iniciativa de de Web Móvil | http://www.w3.org/Mobile/]] para resolver problemas de inter-operabilidad y usabilidad.
* El trabajo de la ~W3C se enfoca en dos áreas:
** [[Generación de buenas prácticas | http://www.w3.org/2005/01/BPWGCharter/Overview.html]] ([[grupo | http://www.w3.org/2005/MWI/BPWG/]]): desarrollar pautas, puntos de verificación y buenas prácticas para ayudar a los proveedores de contenido a desarrollar contenido Web que funcione correctamente en dispositivos móviles. Como tecnología para multimedia ([[SMIL | http://www.w3.org/AudioVideo/]]) y gráficos ([[SVG | http://www.w3.org/Graphics/SVG/]]). [Validador de buenas prácticas: http://validator.w3.org/mobile].
** [[Descripción de dispositivos móviles | http://www.w3.org/2005/MWI/DDWG/]] ([[grupo | http://www.w3.org/2005/MWI/DDWG/]]): desarrollo de mecanismos de descripción de dispositivos (BD's de descripciones que los desarrolladores de contenido podrán utilizar para adaptar los contenidos a los diferentes dispositivos). Como [[CC/PP | http://www.w3.org/Mobile/CCPP/]] y [[DPF | http://www.w3.org/TR/2004/WD-DPF-20041122/]] que permite obtener las características de los dispositivos, preferencias de usuario y condiciones de entorno, ó [[DISelect | http://www.w3.org/TR/cselection/]] para selección y filtrado de contenido (esto permite seleccionar ciertas partes del contenido y suprimir otras)



>"No documentes el problema; arréglalo"
>&nbsp;&nbsp;&nbsp;&nbsp; -- ''Atli Björgvin Oddsson''
by ''Jorge Juan Fernández García'' (masalladegoogle@infonomia.com)
* Intro
** Directorio de la Red de Innovadores de Infonomia (http://www.infonomia.com/directorio/index.php)
** Me sorprendió lo que descubrí: todos eran gente común (sin fama, sin peso científico), esto determinará el futuro: ''la red no son conversaciones, son personas con una pasión por compartir. Sin esa pasión, no hay conversaciones''
** '' "Lo que hace la diferencia son las personas normales que hacen cosas extraordinarias" ''
* El infonomista
** DICS: Datos, Información, Conocimiento, Sabiduría
*** Principio de la ''infoxicación'' (//information overload//): se produce más información de la que humanamente podemos procesar (asimilar). Nuestra ''atención'' es el recurso escaso.
**** Problema de la ''atención'':
***** El "ancho de banda personal" es la cantidad de info que recibe por unidad de tiempo: ''b=i/t'' (crece cada día).
***** La "atención personal" es la cantidad de tiempo que uno puede dedicar a cada info que recibe: ''a=t/i'' (disminuye cada día).
**** Hay que diseñar instrumentos que reduzcan el ruido de información que recibimos, y aumentar la productividad del ''tiempo de atención'' del que disponemos (como los feeds por ejemplo).
**** El punto es cómo ''comunicar más eficientemente'': sintetizar el mensaje, facilitar la comprensión, explicar historias no dar datos. (__es información lo que nos sorprende, no lo que ya sabemos__)
*** ''Ley de la gravedad'': el que sabe, atrae.
**** La fuerza de atracción es proporcional al conocimiento que uno acumula; pero los enlaces de consultas puede llegar a ser tan grande que se genera un cuello de botella, y para resolver esto es necesario compartir, y así se crean otros nodos con los cuales se pueda consultar.
**** Compartir el conocimiento no le resta valor, sino que lo fortalece dentro de la red de conocimiento. 
*** Regla del 90-9-1
**** En las comunidades //online// el 90% de usuarios son lurkers, 9% contribuyen de forma esporádica (como emitir un voto) y un 1% participan activamente.
**** Jakob comenta sobe la desigualdad en la participación www.useit.com/jakob (www.nngroup.com, Donal Norman www.jnd.org)
*** Paradoja de los sistemas de búsqueda: tenemos máquinas para generar información, pero no para descubrir info relevante.
**** Dilema de la exhaustividad (''todo lo que hay sobre'') vrs. relevancia (''lo más útil sobre''). Google es un mundo de exhaustividad; pero los humanos trabajamos en un mundo limitado por las cosas relevantes (hasta que creemos un nuevo cerebro)
*** Principio de la sabiduría colectiva: los grupos grandes son más inteligentes que sus integrantes más inteligentes de forma individual.
**** Se requiere 4 condiciones pa' que una multitud sea inteligente:
***** ''Diversidad'': pa' que haya un amplio espectro de ideas.
***** ''Independencia'': cada persona aporta de sus propias ideas y no con base en el comportamiento de las demás.
***** ''Descentralización'': hay especialización en las diferentes áreas del conocimiento (experiencia distribuida)
***** ''Agregación'': se toman decisiones con base en la info recabada (''decisión colectiva'') [Ej: pagerank de Google].
*** Principio del e-mail no deseado: spam, spam-ppt (de amigos y conocidos), spam informacional (de empleados)
*** Teoría del punto de fuga de las noticias: el concepto de conectividad no sólo debe ser útil a la hora de conectar personas en diferentes lugares, sino también a personas que se encuentran cercanas a tí [p. 43].
*** ''Principio WORN (Written Once, Read Never)'': el conocimiento no vale nada por estar bien definido, o bien almacenado; ''sólo tiene valor si se utiliza''.
*** ''Ley de Zipf'': frecuencia de acceso, tráfico de Internet (modelo ''pajarita'' de IBM Research www.almadem.ibm.com/cs/k53/www9.final/)
** Búsqueda y recuperación de información
*** Ley de la miopía en la búsqueda de la información: sino aparece en Google, no existe ("Hay otros mundos, pero no están en Google" -Paul Eluard).
*** Ley de la ''serendipia'': encontrar algo útil de forma inesperada.
*** Ley de las palabras correctas: las palabras más consultadas son las de mayor esencia y dependen del lenguaje, el país, la cultura y la edad entre otros factores (''esencia de la información'' - ''information scent'') [p. 56].
** Trabajador del conocimiento
*** Efecto de la estufa caliente: ''para qué voy a intentarlo, si ya me salió mal una vez, si ya me quemé una vez''.
*** Ley de la participación y de la productividad: O bien soy productivo individualmente (leo y escribo) o me conecto socialmente (participo y comento en otros medios)
*** 
** Comunicación
** Usabilidad, Readability y Visualización
** Presentaciones
** Seguridad
! Definición
* [[Ontología en Wikipedia | http://es.wikipedia.org/wiki/Ontolog%C3%ADa_(Inform%C3%A1tica)]] : formulación de un exhaustivo y riguroso esquema conceptual dentro de uno o varios dominios dados; con la finalidad de facilitar la comunicación y la compartición de la información entre diferentes sistemas y entidades.
* [[La W3C | http://www.w3.org/TR/2004/REC-owl-guide-20040210/#Introduction]]: Ontology is a term borrowed from philosophy that refers to the science of describing the kinds of entities in the world and how they are related.
* https://www.twine.com/user/dreig
! ~OpenID
[[OpenID | http://es.wikipedia.org/wiki/OpenID]] permite al usuario gestionar su ''identidad digital'' de una manera ''centralizada'' (desde el punto de vista de usuario) evitando la utilización identidades diferentes, lo cual nos obliga a recordar un elevado numero de información para identificarnos en los diferentes servicios en línea.
El principal problema es que desde el punto de vista de la usabilidad es bastante engorroso. Los usuarios todavía tienen que recordar y teclear su URL ~OpenID para posteriormente ser redirigidos a la pagina de acceso de su proveedor ~OpenID. Esta experiencia está lejos de ser óptima. No funciona bien... por el momento. No esta pensado para operaciones financieras ni de comercio. Y no se puede asegurar protección contra el spam (ya que cualquiera puede generar url's y colgarlas en blog y foros, e inundarlas de publicidad basura).
! Prairie
[[prairie | http://www.barnraiser.org/prairie]]: Prairie is a lightweight ~OpenID based Internet identity server. Instead of registering at every web site with different username and password combinations you use your identity server to log you in.
Features:
* Simple profile webpage (Internet identity).
* Install as a single user or a service to host many separate users.
* Contact form.
* ~DH-SHA1 support.
* ~DH-SHA256 support.
* ~OpenID 1.1 complient.
* ~OpenID 2.0 complient.
* Themed "skins" which can be easily downloaded and added.
* Multi-lingual.
* Free (GPL) software license.
! Clickpass
[[Clickpass | http://www.clickpass.com/]] es un proveedor ~OpenID de valor añadido que ofrece gestión centralizada de la identidad digital para cualquier sitio web, incluidos los que no han implementado ~OpenID. Los sitios web que deseen implementar el sistema de autenticación ~OpenID de Clickpass pueden integrar el botón ~ClickPass directamente en su web que permitirá a sus usuarios ingresar mediante un único clic. Los usuarios no tendrán ni siquiera que introducir su URL ~OpenID. Más fácil imposible.
! Vidoop
[[Vidoop | http://www.vidoop.com/]] el fuerte de su planteamiento es la robustez y la seguridad. Utiliza un mecanismo de autenticación segura basado en imágenes, denominado Vidoop Secure, pendiente de ser patentado. Es un sistema de autenticación seguro totalmente basado en software, no requiere ningún otro dispositivo u objeto (p.ej. tarjeta de códigos).
! mIDm (~May-Di-My)
''La red de Auto-identificación para una sola autenticación: con mIDm usted es su propio servidor de identidad'' (Stephen Downes) (http://www.downes.ca/idme.htm).
mIDm no es un servicio de autenticación. Esto es, los sitio web tienen que ''confiar'' en la palabra del usuario que ellos son los que dicen que son. Lo lo que hace el proveer a cualquier usuario y quiera una identificación única. También, no es en sí mismo una solución a otros problemas, tal como el spam.
Lo que estoy tratando de probar acá es que podemos tener un sistema gratuito, abierto, distribuido de una única auto-identificación usando nada más que el bloc de notas, algún entendimiento común, y un poco de ingenuidad.
! LDAP
* Andrés Holguín Coral. (2002). ''Autenticación Centralizada Con Tecnología Ldap''. Universidad de Los Andes. andres.holguin@uniandes.edu.co (Caso real de implementación, muy interesante).
*Isabel Cristina Satizábal Echavarría. (2007). CONTRIBUCIÓN A LA VALIDACIÓN DE CERTIFICADOS EN ARQUITECTURAS DE AUTENTICACIÓN Y AUTORIZACIÓN. TESIS DOCTORAL. UNIVERSITAT POLITÉCNICA DE CATALUNYA. DOCTORADO EN INGENIERIA TELEMÁTICA. (Habla de certificados, ciframiento, claves públicas y privadas, etc.)
Open Source Web-conferencing
* [[Official develop site | http://code.google.com/p/openmeetings/]] on Google Code projects
* [[Instalando OpenMeetings 0.7 RC 2 en Debian Lenny | http://liberamemoria.blogspot.com/2009/02/instalando-openmeetings-07-rc-2-en.html]]
* Open Meetings Screncast Series on http://blip.tv/
* Entorno de integración de comunidades:
** Comunidades de aprendizaje (''LC'' - Learning Comunities)
*** La forma en que las ''redes'' aprenden es la forma en la que las ''personas'' aprenden [1].
** Comunidades de práctica (''~CoP'' - Comunities of Practice)
*** Involucrarse en un ambiente auténtico
**** Eg. Un juego de rol
**** Eg. Soporte electrónico de Desempeño
**** Eg. Comunidad de práctica
*** Observar y emular prácticas exitosas
*** Ser “reflexivo”, es decir, participar en conversaciones sobre la práctica. [1]
** Comunidades de intereses (''~CoI'' - Comunities of Interest)
*** El aprendizaje está centrado en los intereses del aprendiz. El aprendiz es propietario de su aprendizaje.
*** Esto implica que el aprendiz elige temas, materiales, estilos de aprendizaje [1].
* Aprendizaje más informal, potenciando el auto-aprendizaje y el aprendizaje en grupo [2].
* Open learning.
* ''La información es un flujo'', no un conjunto de datos, //''su relevancia esta definida por su función''//, no por tópico o categoría. La información es relevante/importante sólo si esta disponible donde se necesita [1].
* Tools [2]:
** [[PLEX | http://www.reload.ac.uk/plex/]] (desktop application) or ~PLEWeb (not available yet).
** [[Elgg | http://elgg.org/]] (the most popular). ''e-portfolio+VLE/LMS+Web2.0 Services''
** [[Webtop | http://edutechwiki.unige.ch/en/Webtop]] (personal configurable Homepage) like iGoogle. or [[eyeOS | http://eyeos.info/]] ???
** [[Epsilen | http://ngcmsgroup.epsilen.com/]] prototype yet.
** [[LiveJournal | http://www.livejournal.com/site/about.bml]] online-blog-plattform with community-building fonctionnalities
** [[Colloquia | http://www.colloquia.net/]]: Colloquia is a software system that supports group working and group learning. It allows any user to set up a working or learning group around a particular topic (a context), add people to it, add resources (web pages, documents etc) to it, set up group tasks, and then engage in group and personal "conversations" about the topic.
** [[Open Source Social Software | file:///media/ecaldon/sala-_/edy/open-source-soc.html]]

* REFS:
** [1] ''Stephen Downes''. Educamp spanish. Dec 7, 2007 (downeseducampspanish-1226872397026311-9.ppt at ~SlideShire).
** [2] ''David Delgado Santana''. Diseño de una estrategia de E-learning 2.0: definición del PLE. (estrategias-para-elearning-20-el-ple2567.ppt at ~SlideShire).


> "El mayor enemigo del conocimiento no es la ignorancia, sino la ilusión del conocimiento"
>     -- ''Stephen Hawking''
<!--{{{-->
<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 id="footer">
<hr />
<div id="contentFooter" refresh='content' tiddler="contentFooter"></div>
 </div>


</div>
<!--}}}-->
! Flink: Semantic Web technology for the extraction and analysis of social networks
* Flink:
**	- extracción, agregación y visualización de redes sociales en linea
**	- basado en web semántica
**	- extrae la información de las personas a partir de las fuentes de información electrónica como paginas, email, archivos publicados, perfiles FOAF.
**	- aplicación de análisis de redes sociales
* Personal information:
**	- intereses
**	- trabajos
**	- opiniones
***		- amigos
***		- colegas
*Desventajas de los SSN centralizados:
** - Los SSN tienen la informacion de los perfiles en BD's con sus propios formatos lo que dificulta un poco el compartir información entre una SSN y otra. @@Como resultado, los datos necesitan estar mantenidos separadamente en diferentes servicios@@.
**- Los SSN centralizados no permiten el control de la info por parte de los mismo usuarios. Aunque los seguidores de Friendster ofrecen niveles de compartir: info publica vs. solo amigos. @@Muchos usuario aun ven como su info es usada de formas no acordadas@@.
* La tecnologia de web semantica puede ayudar:
** Con la Ontologia [[FOAF | http://www.foaf-project.org.]] cada usuario puede tener control de su perfil y cuando lo quiera compartir lo hace usando la relacion //rdfs:seeAlso//
** FOAF es una ontologia ya que relaciona conceptos como autor, amigo, pagina, email, direccion, entre otros, mediante OWL.
* Inteligencia Social:
** Es la integracion basada en semantica y analisis de conocimiento social extraido de @@fuentes@@ electronicas bajo diversas propiedad y control.
*** __Fuentes__ de diario trabajo de la comunidad como paginas HTML sobre personas y eventos, emails y publicaciones.
*** FLINK extrae conocimiento acerca de las redes sociales de la comunidad y consolida lo ques es aprendido usando una representacion semantica comun, particularmente la Ontologia FOAF.
* Propositos de FLINK:
** First: guia de uso y aplicacion de la ultima tecnologia web semantica para diferentes propositos.
** Second: portal que ofrece info para los interasados en representar perfiles, emails, publicaciones y @@estadistica@@. Aportes del uso de FOAF y su uso en sitios web.
** Third: usarlo con proposito de analisis de redes sociales, para indagar en posibles aplicaciones a futuro.
__2. Flink: a who is who of the Semantic Web__
* FLINK es una red profesional que conecta a invesitgadores en Web Semantica (WS), esta comunidad publica y organiza eventos como el International Semantic Web Conferences (ISWC) o el Semantic Web Working Symposium (SWWS). Una comunida de 608 investigadores de EE.UU, Europa, Japon y Australia.
* FLINK navega a traves de la red social de cada investigador (perfiles y enlaces hacia otros investigadores que puede conocer). Visualiza la @@red ego@@ (vecindario de su red social) del investigador.
* El perfil FLINK incluye:
** nombre, email, pagina personal, imagen, afiliacion y localizacion geografica del investigador, asi como los intereses, participaciones en conferencias relacionadas con WS, email enviados a listas publicas y publicaciones sobre WS. 
* FLINK muestra la evidencia que el sistema ha coleccionado acerca de las relaciones entre las personas como @@peso del enlace@@, la distancia fisica, amigos, intereses y rasgos en comun, asi como los emails entre ellos y las publicaciones escritas juntos.
* FLINK construye una Ontologia de temas investigados en WS. Su asociacion (distancia) esta dada por la cantidad de investigadores involucrados en cada topico. Ademas de mostrar cambios de las asociaciones entre diferentes topicos (cierto topico se acercaba mas a otro). [Para ver @@relacion entre sociabilidad y semantica@@ ver @@color(green): P. Mika, Social networks and the semantic web: the next challenge, IEEE Intell. Syst. 20 (1) (January–February 2005) 82–85.@@]
* FLINK muestra estadistica basica de la red social:
** Grado, cercania y @@bgcolor(red):betweenness@@
__3. System design__
* La arquitectura de FLINK se ha dividido en tres:
** ''Adquisición de metadatos'':
*** Adquiere los metadatos: paginas web, perfiles FOAF de la web semántica, emails de publicaciones y datos biográficos. Información de diferentes fuentes. Todo el conocimiento esta representado de acuerdo a una misma Ontología (FOAF + mínima info extendida).
*** Técnica de Web mining: análisis de concurrencia. ''Google Mindshare'':
**** EL Google Mindshare de una persona de acuerdo a un Interés es el __número de páginas donde el nombre del interés y el nombre de la persona concocurren dividido por el número de páginas sobre la persona__.
**** [[SWRC Ontoly | http://ontoware.org/projects/swrc]] - Semantic Web for Research Communities: es una ontología del dominio de las publicaciones de articulos.
**** 
** ''Almacenamiento'':
*** 
** ''Visualización''
** 

''Cita'': Peter Mika. (2005). Flink: Semantic Web technology for the extraction and analysis of social networks. Journal of web semantic, 2005.05.006, 211–223.
! Ontologies are us: A unified model of social networks and semantics


''cita'': P. Mika, Social networks and the semantic web: the next challenge, IEEE Intell. Syst. 20 (1) (January–February 2005) 82–85.
! A comparative study of social network models: Network evolution models and nodal attribute models
* __Redes complejas orientadas a la Física__
* Propositos del @@modelamiento de las redes sociales@@:
** comprender como se forman y evolucionan la redes sociales
** estudiar los procesos sociales dependientes de la red, por simulación tal como la difusión o recuperación de la información, los modelos exitos de redes pueden ser usados para especificar la @@estructura de interacción@@.
* Los modelos se clasifican en dos categorías:
** Aquello en los cuales adicionar un nuevo enlace (Link) depende de la estructura local (''modelo de evolucion de la red ~NEMs'')
*** Modelos de crecimiento (growing models), se adicionan enlaces (link) y nodos hasta que la red contenga el número //N// de nodos deseados.
*** Modelos dinámicos (dinamical models) en el que los pasos para agregar y quitar vínculos (//lazos//) en un conjunto fijo de nodos se repite hasta que la estructura de la red ya no cambie estadísticamente.
** Aquellos en los cuales la probabilidad de cada link existente depende solo de los atributos del nodo (''modelo de atributos del nodo ~NAMs'')
* ''Modelo de Evolución de la Red -~NEMs''
** La generación de la red inicia con una red semilla [G(to)], a partir de una red vacia, por ejemplo.
** Se definen reglas estocásticas con las cuales la "estructura de la red" evoluciona. Estas reglas definen los nodos y enlaces (lazos) que se adicionan o eliminan de un conjunto (nodos y enlaces) dado.Las reglas se abstraen de los mecanismos de vinculos (lazos) sociales, como por ejemplo la tendencia de enlazar amigos de dos amigos :P
** Criterios de parada de NEM:
*** Para una ''NEM de crecimiento'' el algoritmo termina cuando la red ha alcanzado un tamaño predeterminado. Es lo suficientemente grande.
*** Para una ''NEM dinámica'' el algoritmo termina cuando la estadística de la red seleccionada no varia lo suficiente.
* ''Modelo de Atributos del Nodo -~NAMs''
** La probabilidad de que la arista Aij este presente entre el nodo //i// y //j// esta en función de los nodos //i// y //j// unicamente. El aspecto evolutivo esta ausente.
*






! Desenvolvimento de Modelos para Obtenção Automática do Conteúdo de Sites sobre Saúde
* Motores de búsqueda:
** Google Health: sitio donde se cruza perfiles de usuarios para buscar información de acerca de las interacciones.
** Google Scholar: bucador de trabajos académicos de un enfoque especifico
** ~CurbSide.MD (http://www.curbside.md/): búsquedas de usuario basadas en una Ontología propia. Organized answers to real medical questions. Organizando los resultado en categorías como diagnostico, tratamiento, epidemiología, etc.
** Medstory (http://www.medstory.com): búscador integrado a Bing Health (competencia de Microsoft para Google health). Intelligent Search for Health & Medicine. Agrupa los resultados en categorías como sintomas, procedimientos, entre otras.
** ~PubMed (http://www.ncbi.nlm.nih.gov/pubmed): búsqueda de articulos relacionados con la rama de la medicina.
** ~SearchMedica (http://www.searchmedica.com): búsqueda sobre sitios recomendados ...
* Criterios de búsqueda o categorías de búsqueda:
** Informacion general
** Métodos de tratamiento
** Diagnostico
** Medicamentos
** Estudios de caso
** Consejos
** Prevención
* Extraccion de datos:
** Web Harvest (http://web-harvest.sourceforge.net): usa XPath, XQuery, XSLT para formatear docs en XML.



''cita'': Daniel Lichtnow, José Palazzo Moreira de Oliveira y Daniel Lichtnow. (2009). Desenvolvimento de Modelos para Obtenção Automática do Conteúdo de Sites sobre Saúde. Relatório de Pesquisa, Projeto SALUS CYTED508RT0361.
Producto fácil de imitar =>  corto tiempo de vida
Producto diferenciado => más tiempo de vida
*¿Cómo se logra un producto de largo tiempo de vida?
** El conocimiento nos lo dan a cuenta gotas.
** Todo el conocimiento esta detras del firewall.
** Lo que esta detras del corta fuegos se esta dando a cuenta gotas.
** El conocimiento se esta dando a pedacitos (desde las potencias a paises latinos)
*¿Cual es la razón para esto?
** === CONTROL === (concepto politico)
*¿Que hacer?
** Trabajar las áreas que generan @@conocimiento base@@
** orientar las discusiones de las ingenierías a debatir los paradigmas
** @@El software libre sería una solución???@@
* Pasantia , permita a la U saber como un grupo pueda vender la produccion (sociedad, empresas)
* Aplicaciones de tercera generación, primera generación
* Que nivel quiere, para agregar dimenciones
* Para la base: @@ciencias básicas@@: 5 (física, química, biología, matemáticas, filosofía)
** Filosofia => pensamiento
** ej: matematica discutiendo los postulados , teoremas, etc
* Dos teorias:
** conspiracion
** caos (incertidumbre, el conocimiento circula): cambia el paradigma cuando ya no me explica lo que quiero (la filosofia pone entre dicho el paradigma), tolerancia en la incertidumbre (vision a largo plazo)
* Leon se hace dueño por matar la decendencia del otro leon (macho dominante)

Una parte de la clase esta en audio [paradigmas_hector_sanchez.ogg]

PasswordOptionPlugin extends the core Options with a non encrypted password type.

Notice:
*How a style can be specified for a specific option in StyleSheet

----
Test Password: <<option pasPassword myPasOptionInput >>
/***
|''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"
	});
*/
//}}}
! ~P2P and human evolution
* ''Peer to Peer'' is a specific form of ''relational dynamic'', is based on the assumed equipotency of its participants, organized through the ''free cooperation'' of equals in view of the performance of a common task, for the creation of a common good. ''Equipotency (the capacity to cooperate)'' means that there is no prior formal filtering for participation, but rather that it is the immediate practice of ''cooperation'' which determines the expertise and level of participation. It does not deny 'authority', but only fixed forced hierarchy, and therefore accepts authority based on expertise, initiation of the project, etc...
* ~P2P is a network, not a hierarchy; ''it is decentralized''; it a specific form of network using ''distributive intelligence'': intelligence is located at any center, but everywhere within the system.
* ''Cooperation must be free'', not forced, and not based on neutrality (i.e. the buying of cooperation in a monetary system). It exists to produce something.
* ~TiVo (file-serving television), Skype (telephony using the Internet Protocol)
* Modern humans think themselves as autonomous agents using objects, but become themselves objects of the systems of their own creation. This is the drama of modernity, the key to its alienation (paradox or social dynamism).

* REFS:
** [1] ''Michel Bauwens''. (2005). ~P2P and Human Evolution: Peer to peer as the premise of a new mode of civilization.
! Edutella
(http://www.edutella.org/edutella/edutella.shtml)
Edutella is a peer to peer network for searching semantic web metadata. 

> "La imaginación es más importante que el conocimiento. El conocimiento es limitado, mientras que la imaginación no"
>     -- ''Albert Einstein''
|!Fecha	Tema	|!Estado del trabajo	|!Relator	|!Co-relator	|!Protocolante|
|3/6/2009	|Presentación del seminario		|Coordinador|		|	|
|~|Descubrimiento de procesos web como soporte para la gestión del recurso hídrico	|José Armando Ordóñez Córdoba	|Juan Carlos Corrales	|Guillermo Esteban Guerrero Rosero|
|~|Propuesta Arquitectónica para el Soporte de Servicios de Awareness en Sistemas de Gestión de Conocimiento	|Iván Darío Claros Gómez	|Andrés Lara	|José Armando Ordóñez|
|3/20/2009	|Arquitectura de Referencia para la Composición  de Servicios en Ambientes de Computación Ubicua	|Víctor Alberto Hermida Quintero	|Oscar Mauricio Caicedo	|Iván Darío Claros|
|4/3/2009	|Plataforma de entrega de servicios de monitoreo climático basada en software libre como soporte para los Sistemas de Información Ambiental en Colombia, bajo una perspectiva de Arquitectura Basada en Servicios	|Silvio Andrés Ordóñez Zúñiga	|Juan Carlos Corrales	|Víctor Alberto Hermida Quintero|
|4/17/2009	|Recuperacion de la arquitectura software guiada por los principios de la gestion de conocimiento.		|Jesús Antonio Ordóñez Campo	|Jose Luis Arciniegas	|Silvio Andrés Ordóñez Zúñiga|
|5/8/2009	|Identificación y análisis de riesgos de seguridad informática en una red 802.11 basados en soluciones criptográficas		|Siler Amador Donado 	|Carlos Alberto Trujillo	|Jesús Antonio Ordóñez Campo|
|5/22/2009	|Modelo de Referencia para la Gestión del Conocimiento en ~MiPyMes de la Industria del Software		|Alberto González Ramírez 	|Jose Luis Arciniegas	|Siler Amador Donado |
|6/5/2009	|Modelo de tráfico para la Televisión Digital por Cable		|Wilmar Yesid Campo	|Jose Luis Arciniegas	|Alberto González Ramírez |
|6/19/2009	|Personalización en el Descubrimiento de Servicios y su aplicación en e-health		|Guillermo Esteban Guerrero Rosero	|Juan Carlos Corrales	|Wilmar Yesid Campo|
|~|Evaluación del seminario		|Coordinador		|	|
''Planeta Web 2.0. Intel. colectiva o medios Fast Food'' (Web oficial: www.planetaweb2.net)
* Casi una década atrás, ''Tim ~Berners-Lee'' señalaba: ''"Los aparatos de búsqueda han demostrado ser muy útiles para combinar largos índices rápidamente y para encontrar oscuros documentos. Pero han demostrados ser notablemente inútiles, también porque no tienen modo de evaluar la calidad de un documento"'' (2000:163). En ese sentido plantea que la Web semántica debería contribuir a que las computadoras conectadas a Internet puedan describir, suponer y en última instancia razonar, para darle al usuario los mejores resultados de búsqueda.
* Masificación del uso del XML (eXtensible Markup Language) en la construcción de los metadatos de las aplicaciones webs &shy;''describiendo los contenidos, su significado y la relación de los datos entre sí en forma sistemática&shy;'' lo que significará el salto hacia una Web más inteligente (Por resolver).
* La clave en un entorno de sobre-información es y será ''diferenciar la información del ruido de una manera sencilla''. En esta línea, Spivack (2006) señala que es esperable el desarrollo de sistemas capaces de aprender y por sobre todo de entender la información. Ello permitiría jerarquizarla e incluso hacer recomendaciones, ofreciendo al usuario una interacción más intuitiva con la Web. El autor agrega que esta transformación permitiría pasar de una suma de repositorios interconectados a un sistema más interoperable e integral.
* El desarrollo de sistemas capaces de realizar estas funciones no sólo potenciarían el acceso al conocimiento, sino que irían más allá. Al desarrollarse plataformas capaces de ''combinar fuentes, ideas, datos y contenidos podría llegar a generarse un nuevo conocimiento, a través de deducciones lógicas para resolver problemas cotidianos automáticamente'' (~W3C, 2006).
* Un caso interesante es la reciente creación del ''Web Science Research Initiative ([[WSRI | http://www.webscience.org/]])'', impulsada por ~Berners-Lee, que busca estudiar el ecosistema generado entorno a la web.
* Author's webs: e-rgonomic.blogspot.com and digitalismo.com
<<plugins>>
Pre-procesar
** Limpiar los datos con ruido, inconsistencias o incompletos.
** Ejemplo:
*** Datos obsoletos
*** Datos redundantes
*** Datos anómalos (outliers)
*** Datos faltantes
*** Datos inconsistentes (erróneos)
*** Datos no apropiados para aplicar un algoritmo de DM
----
Manejo de datos faltantes
* Ignorarlos, pero algunos algoritmos son sensibles a datos faltantes.
* Filtrar columna o Fila, pero la instancia faltante puede ser importante.
* Buscar el dato real, si es posible sería mejor.
* Remplazar el valor:
** Por constantes definidas, por el usuario.
** Por la moda (categóricos) o media (numéricos) de los datos disponibles. Para esto existen herramientas como ''Insightful Miner''.
** Por un valor aleatorio de acuerdo a la distribución de los datos.
* Datos incompletos: si hay varias fuentes de datos hacer una unión y no una intersección de campos.
----
Identificar datos anómalos (outliers)
* Se pueden identificar mediante gráficas donde en la distribución de datos, aparecen datos alejados de los demás.
----
Transformación de datos
* ''Normalización ~Min-Max'':
> __X -min(X)__ 
> Range(X) =  ^^X*^^ 
** Nuevos valores entre 0 y 1
** La distribución original se conserva
* ''Estandarización ~Z-Score''
> __X -mean(X)__ 
> SD(X) =  ^^X*^^ 
** Nuevos valores entre 0 y 4
** Es sensible a la presencia de datos anómalos.
----
Métodos numéricos para detectar datos anómalos
* Si ~Z-Score < -3 ó ~Z-Score > 3, puede ser dato anómalo
* Usar el rango intercuartil (IQR, interquartile range)
** Menos sensible a datos anómalos
** 4 cuartiles de 25%
** Es anómalo si:
*** IQR < (Q1 - 1.5)
*** IQR < (Q3 + 1.5)
*** Donde IQR = Q3 - Q1
----
Manejo de datos anómalos
* Ignorarlos
* Filtrar columnas o filas
* ''Discretizar'': Por ejemplo de numéricos a categóricos (muy bajo, bajo, medio, alto, muy alto) manda los datos anómalos a muy bajo o muy alto.
----

Referencias
* Datasest para DM: http://archive.ics.uci.edu/ml/datasets.html
* SGI data repository: http://www.sgi.com/tech/mlc/db
* http://www.dataminingconsultant.com/DKD.htm
Hacer preguntas

Una buena manera de ayudar a alguien a que reflexione sobre un tema es hacerle una pregunta al respecto. Una buena pregunta nos puede ayudar a recopilar nuestra información, evaluar nuestras ideas y crear nuevas.

Las preguntas realizadas con la intención de ayudar a otros a aprender se conocen como socráticas.

Las preguntas socráticas requieren escuchar muy cuidadosamente a la otra persona, lo que le ayudará a juzgar y plantear la pregunta de modo constructivo, de ayuda y de no enfrentamiento.

He aquí algunos ejemplos de estas preguntas:

''Preguntas clarificadoras''
* ¿Qué quieres decir cuando dices ............. ?
* ¿Cuál es el punto central?
* ¿Qué tiene ......... que ver con .........?
* ¿Puedes decírmelo de otra manera?
* Déjame ver si entiendo: ¿quieres decir ......... o ......... ?
* ¿Cómo se relaciona esto con nuestro tema?
* María, ¿puedes resumir lo que dijo Ricardo? ... Ricardo, ¿es lo que quisiste decir?
* ¿Puedes darme un ejemplo?
* ¿ ......... podría ser un ejemplo?
''Preguntas que prueban asunciones o suposiciones''
* ¿Qué estás suponiendo?
* ¿Qué está suponiendo Luisa?
* ¿Qué podríamos suponer en lugar de eso?
* Me da la impresión de que das por hecho .......... ¿Te estoy entendiendo correctamente?
* Todo tu razonamiento se basa en la idea de que .......... ¿Por qué lo basas en ......... en lugar de en .........?
* Pareces estar dando por sentado que .......... ¿Cómo justificas el dar eso por garantizado?
* ¿Eso es siempre así? ¿Por qué piensas que esa suposición es válida en este caso?/li>
* ¿Por qué alguien habría de suponer eso?
''Preguntas que prueban motivos y evidencias''
* ¿Podrías explicarnos tus motivos?
* ¿Cómo se aplica eso a este caso?
* ¿Hay alguna razón para dudar de esa evidencia?
* ¿Quién está en la posición de saber si eso es verdad?
*¿Qué le dirías a alguien que sostuviera que .........?
* ¿Puede alguien más aportar alguna evidencia que apoye ese punto de vista?
* ¿Qué razonamiento te ha conducido a esa conclusión?
* ¿Cómo podríamos cerciorarnos de que eso es cierto?
''Preguntas acerca de distintas perspectivas o puntos de vista''
* ¿Qué estás insinuando con eso?
* Cuando dices ........., ¿estás insinuando .........?
* Pero, si sucedió eso, ¿qué más podría suceder como resultado? ¿Por qué?
* ¿A qué conduciría eso?
* Eso ¿debería suceder necesariamente o sólo sería posible o probable que sucediera?
* ¿Hay alguna alternativa?
* Si ......... y ......... son así, enconces ¿qué otra cosa debería también ser cierta?
* Si decimos que ......... es ético, ¿qué pasaría con .........?
''Preguntas que prueban implicaciones y consecuencias''
* ¿Cómo podemos descubrirlo?
* ¿Qué es lo que implica o da por supuesto esta pregunta?
* ¿Podría ......... formular esta pregunta de otra forma?
* ¿Cómo podría alguien resolver o dirimir esta pregunta?
* ¿Podemos descomponer totalmente esta pregunta?
* ¿Es esta pregunta clara? ¿La entendemos?
* ¿Resulta esta pregunta fácil o difícil de responder? ¿Por qué?
* ¿Estamos todos de acuerdo en que ésta es la pregunta?
* Para responder esta pregunta, ¿qué otras deberíamos responder antes?
* ¿Cómo formularía ......... la cuestión?
* ¿Por qué razón este asunto es importante?
* ¿Es ésta la pregunta más importante, o hay alguna otra pregunta subyacente?
* ¿Puedes ver cómo esto está relacionado con ............?

Preguntas adaptadas a partir de Paul, R. (1993). ''Critical Thinking: How To Prepare Students for a Rapidly Changing World'': Foundation for Critical Thinking, Santa Rosa, CA.
* Estudio de ''Burst Media'' (http://www.burstmedia.com/research/current.asp) 
** Uno de los resultados indica que la gente realmente (60%) no le importa si sus datos personales estén de manera pública. ''Parece que la tendencia es que a la mayoría de la gente no le importa este tema'' __POR QUÉ__
** 

* En una red social como Facebook de alguna u otra manera hay una comunidad activa que esta atenta de los abusos que se puedan hacer por parte de la empresa que comprometan los datos provados (perfiles, contactos, relaciones, ''intereses'')
* 
!Semantic Web Programming
* Chapter 3: Modeling Information
** Information is modeling in three langauges: RDF, RDFS and OWL
** RDF define the data model
** We can to create a data model from "object-oriented" and "relational" aproach. [I think that is better OO aproach, I really don't like "relational"]
** Problems of sharing information:
*** syntactic problem: involves ''access to shared data'' [We need same way to communicate data - ''Standars''- common medium]
*** semantic problem: ''incorporating information to productive system'' [Easy ''inter-operability'' and ''undestanding''. To have common encoding of concepts over common medium]
*** Example:
**** In ''serialized object'': structure data by producer is not known by consumer.
**** In relational DB: the database API provider change with every DB, moreover, database scheme is unknown by consumer. One side is dark. :)
**** XML: well-defined syntax, but not semantic. 
*** To share information, computer need data and metadata together. "In a sense, without matadata, there is ''nothing to talk about'' (topic), and without data, there is ''nothing to say'' (words, sentences)"
*** 


* La Web en Tiempo Real (~Real-Time Web) pretende informar eventos generados en la Red en el momento en que ocurren (una aproximación a esto son los rss) y estar presentes cuando ocurre. Disponer de nuestros 5 sentidos para estar pendientes de los eventos de Internet (__¿Si habrá capacidad humana?__)
* El ejemplo típico es la búsqueda sobre Twitter. ''Búsquedas sobre lo que esta pasando en el momento''
* Sin embargo hay otros servicios que apuntan al ~Real-Time Web:
** Sin duda los RSS feeds que mediante los protocolos [[XMPP | http://xmpp.org/about/]] y [[SUP | http://code.google.com/p/simpleupdateprotocol/]] ofrecen actualización casi instantánea de las suscripciones que uno tenga (Ej. Google Reader, [[Notifixious | http://notifixio.us/]]).
** La red social ~FriendFeed ofrece aplicaciones real-time para Firefox en el cual aparece las actividades que realizan los "seguidores" (si tiene muchos, es un completo caos :)
** ''Monitter'' es un buscador sobre Twitter. Si en un post Twitter esta una palabra que estoy buscando inmediatamente me avisa (__Esto sería como un agente configurado por el usuario para que este pendiente de los post Twitter, y si alguien publica algo con dicha(s) palabra(s), me avisa de inmediato???__).
** Web de Tiempo Real en el trabajo como Google Docs (Zoho, ~MindMeister) que permite la edición de docs por varios en tiempo real.
** Los feeds de noticias para usuarios Faceboook (anteriormente se actualizaban cada hora) en vivo (Real time).
** [[Zcapes | http://zcapes.com/]] es una página que resume las conversaciones en tiempo real sobre un evento, actividad, cosa o grupo. Su versión móvil, en ''m.zcapes.com'' resulta realmente potente en ese sentido. Página preconfigurada para contener imágenes, cuadros de texto para información básica y cajas de mensajes para comunicación entre usuarios. También puede contener RSS, Flickr y feeds de Twitter sobre keywords relevantes, encuestas, un servicio RSVP que informa de eventos específicos a los que puede ''invitarse a gente'', etc…
Programa Redes de la //TVE//, con Eduard Punset (http://eduardpunset.es/blog)
! Las emociones
(neurociencia)
* Es preciso emocionarse cuando se hacen las cosas (trabajo, estudio, hobbies, etc) pero no demasiado, ya que puede interferir con los procesos cognitivos de funciones (pericia/habilidad para ejecutar cierta tarea)
! El tiempo
(neurociencia)
* Percibimos las cosas cuando éstas ya han pasado (El ahora, ya no lo es. Hay un ligero retraso en la percepción de la realidad).
* Para percibir que la vida dure un poco hay que ''perseguir cosas nuevas todo el tiempo'' (Como caminar por un camino diferente cuando se regresa a casa), parecera que la vida ha sido más larga.
* Una red donde interactúen sujetos del mundo real como médicos, estudiantes, profesores, investigadores, instituciones prestadoras de servicio, hospitales, clínicas (esto no solo con aquellas personas directamente relacionadas, también pueden haber otras áreas del conocimiento como ciencias políticas, ciencias económicas), es decir un espacio donde confluyan muchas opiniones alrededor de un tema (diferentes puntos de vista ayudan a llegar a un posible unión de esfuerzos que en conjunto pueden llegar a completarse como proyecto).
* Debe haber un mismo lenguaje (términos usados en la plataforma) con el cual haya una interacción más precisa.

* Las ontologías representan conceptos y sus relaciones respecto a una temática en particular, con el fin de generar una terminología estándar enfocada en la medicina para que la comunicación entre todos los sujetos que interactúan en el medio sea más clara y precisa (no haya ambigüedades). 
* ¿Cómo hacer representaciones de ontologías en UML, con el fin de modelar un sistemas médicos inter-operables?
* Para definir la semántica de la red social se puede usar técnicas de Data Mining específicamente clustering para analizar los diferentes recursos de la red, y obtener una especie de metadata con la cual se pueda dar más información de la habitual.
* ¿Cómo definir Ontologías de forma automática, en la red social?
* Lecturas ….
** @@Metodología@@ y herramienta para modelar aplicaciones médicas con inter-operabilidad semántica.
** A partir del modelamiento mediante UML y otros estándares específicos (~HL7) para medicina, se generan modelos que pueden ser reutilizados.
*** Ver más sobre MDA, DIM, RIM, MDD, @@GCM@@, ~R-MIM, IBM Rational Software Architect, ….

* Con base en SNOMED que es una definición de terminología médica (donde cada término tiene asociado un ID, el cual sirve para referenciar términos similares). Con SNOMED se pude acceder a BD's como RIPS (BD colombina donde esta consignado la enfermedad y su tratamiento con los respectivos resultados) 
* Para buscar bibliografia ir www.pubmed.org (temas de salud)
* ¿Como relacionar esto con el proyecto PESCA ? Esto cuando se tenga definido un proyecto concreto.
* Tareas:
** Iniciar la exploración de acerca de las redes sociales en general (Buscar paper). Seguir estilo de Investigación Documental
** Iniciar la exploración de un nodo temático (redes sociales enfocadas a la salud) y ver en detalle lo que están ofreciendo hasta el momento.
** Hacer una revisión artículos y crear fichas documentales.
** Terminar de leer el articulo de Ontologías ~HL7
** Poder graficar los datos obtenidos como en http://www.econbrowser.com/archives/2009/05/dow_jones_econo.html
! Enrutador base
*

! Enrutador Nodo repetidor
* username: rootuaii
* passwd: r00tUa11
* WPA Shared Key: un1v3rs1dadu11
* Local IP Address: 192.168.1.3
* Wireless Network Name (SSID): uaii [Wireless -> Basic]
! Flashear router
* "Access violation"
* "Invalid code pattern"
! Seguridad en el enrutador [1]
* Clave de encriptación.
** ~WPA2 Personal, algoritmo TKIP
* Filtrado de direcciones MAC:
** Generar una lista de direcciones MAC de los equipos que se vayan a conectar al enrutador.
* Ocultar el SSID:
** Desactivar el broadcast (difusión) del SSID (nombre de la red) inalámbrico.
* Cambiar el rango de IP de la red:
** Cambiar el rango de IP de la red privada por 172.X.X.X ó 10.X.X.X
* Configurar la administración del enrutador:
** En un router con ~DD-WRT se puede cambiar el nombre del usuario junto la clave (Cambiar ambos)
** En ~DD-WRT no mostrar información del router (primera página que aparece) [Deshabilitar en administración]
* Deshabilitar DHCP:
** Las direcciones de los equipos deben ser estáticas. Deben estar en el ''rango IP asignado al router''

''[1]'' Como anadir mas seguridad a tu red wireless. FORAT. Blog diponible en http://www.forat.info/2009/04/16/como-anadir-mas-seguridad-a-tu-red-wireless/
! ~Service-Oriented Architecture
* Programs are services
* Devices are services
* Differents types of media (audio, video, text) are integreted
* Enviroments are ''dinamyc'' and ''open''
* Mobility, Ubiquity, RFID
* Principles of SOA:
** ''Openness'': everyone can be provider or consumer
** ''Heterogeneity'': many services of differents tyoes (interoperability is a problem)
** ''Distributedness'': there's no central control of services.
** ''Scalability'': scalability through semantic (''worldwide service'')



> "No podemos resolver nuestros problemas con las mismas ideas que los crearon"
>  -- ''Albert Einstein''
* ''Measures of semantic similarity and relatedness in the biomedical domain''. Ted Pedersen et al.
** __Semantic relatedness__, is a more general notion of the relatedness of concepts. Semantic relatedness refers to the judgments by humans regarding the relatedness of pairs of concepts.
** __Semantic similarity__, is a special case of relatedness that is tied to the likeness (in the shape or form) of the concepts.
** ''~WordNet'': an lexical English database of concepts and relations.
** ''~SNOMED-CT'' (''S''ystematized ''No''menclature of ''Med''icine, ''C''linical ''T''erms):  is an ontological/terminological resource that has a wide coverage of the clinical domain. By College of American Pathologists.
** Research [2,33,34] has shown that humans use the --context-- of words and --concepts-- to build a --mental semantic-- representation of concepts.
* Natural Lenguage Process is a good technique for task in word sense disambiguation, spelling correction and information extraction. (semantic relatedness)

* There are different measure of semantic similarity and relatedness:
** Path finding: Medical Subject Headings (~MeSH) ontology. Similarity is computed as: sim(c1, c2) = 1/p, where p is number nodes on the shortest path between the two concepts (c1, c2) in ~SNOMED-CT. This approach use a single link between two concepts to find similarity, this is not consistent.
** Info content: this approach use the based static called "information content": frequency of occurrence of a concept in a large corpus of text, Additionally, this approach need concept related by "is-a" Hierarchy. IC = -log(freq(c)/freq(root)) where freq(c) is the frequency of concept c and freq(root) is the frequency of the root of the hierarchy.
** Context vector measures: 



! Terminology
* relatedness
* similarity

! Software disponible
* ''Headup'': es una addons para el navegador, que permite ''descubrir'' la información de una persona (de su perfil) o de una temática en especial, como videos(toutube), fotos(flirk), amigos (dentro de la red social), blogs, stiios web, música (lastfm), bookmarks (del.icio.us), etc. Llama la atención el descubrimiento de intereses cuando ingreso a una Red Social como Youtube, mostrando no sólo intereses sino sitios (esto se puede extender a org., docs., épocas, ). [by ~SemantiNet]
* ''Agglom'': es un sitio de favoritos (al estilo del.icio.us) con la novedad de visualizar y recorrer los favoritos como si fuera un álbum de fotos (Web slideshow). [by Read Write Web]
* ''Ubiquity'': es un addons para Firefox. La web esta basada en links y cuando queremos referenciar varias cosas, pues solo dispones de links. Ubiquity ofrece crear ''Mashups'', visualización adecuada de información (Ej. si hay una página con una lista de sitios geográficos, ubiquity te muestra un mapa indicando dichos sitios), traducciones, definiciones (wikipedia), [by Mozilla Labs, http:wiki.mozilla.org/Labs/Ubiquity]

! Future
* Wen I travel I want to choose in a map my current place and later to choose my destiny place, the map application caculate the better path, travel days, hotels, restaurants, gas station, distance in km, all travel statistics for me. (Babylon A.D movie)

! Autores
Personas que escriben acerca de web semántica:
** Frank van Harmelen: http://www.cs.vu.nl/~frankh/publications.html#web-papers




> "Si piensas que los usuarios de tus programas son idiotas, sólo los idiotas usarán tus programas" 
>     -- ''Linus Torvalds''
<<search>><<closeAll>><<permaview>><<newTiddler>><<newJournal "DD MMM YYYY" "journal">><<saveChanges>> <<upload>><<slider chkSliderOptionsPanel OptionsPanel "options »" "Change TiddlyWiki advanced options">>
 of notes
My booklet   
----
Tags relacionados con ''Redes Sociales'':
<<tag [[Social Network]]>>

----
(''Redes pa' pescar una opurtunidad'' by ''La vanguardia'', España)
* ''Tuenti'', ''Facebook'' usada para multi-propositos (contactos, oferta/demanda de empleo, fotos, ...), ''Xing'' (relaciones profesionales), ''~LinkedIn'' (directivos)[25 mill], ''Doostang'' (elitista; vacantes en Google, ~JPMorgan, Wall Street), ''~ITtoolbox'' (profesionales de la tecnología), ''Legal ~OnRamp'' y ''~LawLink'' (abogados), ''~ReelExchange'' (profesionales del vídeo y cine), ''~BitsPR'' (es; profes. de la comunicación y el marketing).
* Men and Women between 25 and 34 years old.
* Las redes sociales siempre han existido, lo que cambia son los soportes tecnológicos usados. 
----
[[Howard Rheingold | http://rheingold.com/]]: importante escritor y crítico sobre los aspectos económicos y socioculturales de internet.
* ''Redes Sociales Online'': es un entorno q' permite cooperación. Las RS siempre han existido pero se han potencializado con las TIS's, estableciendo Comunidades de Práctica Online.
* ''Comunidades Online'': conectan personas y construyen relaciones. Hacen crecer la memoria comunitaria colectiva (el conocimiento compartido).
* ''Medios participativos'': Permiten aprender, compartir, debatir… Requieren ''media literacy'' (competencias, alfabetización en los medios).
* La gente se reúne entorno a afinidades e intereses compartidos, que pueden ser sociales, prácticos, basados en intereses mútuos, técnicos, etc…
* ''Si decidiría ser un buen maestro, capaz de conducir el grupo hacia el debate y las mejores prácticas de conocimiento compartido.''
----
''From Linking to Thinking'' (OCLC SYMPOSIUM AT ALA MIDWINTER 2009)
[''Nova Spivack'' and David Weinberger] (Discussion online: www.oclc.org/nextspace)
* In the next "phase" of web:
** Search across entire web, including structured data
** Attaching site to locations in the physical world  (e.g. Panoramio = SN+~GMaps)
** Semantic Web itself attaches site to concepts (What level of abstraction is it?)
** Everething on the web is linked to networks of concepts. The concepts themselves are also defined on the web. [Nova]
** We don't get full knowledge representation but we can do a lot better in providing ''concepts maps'' and ''ontologies''. [David]
* Prediction:
** Common representation (shared) we will be able to think collectively about the combined perspective and experience of humanity.
** The web must helping us to think about the world and about us. [The web must to be a personal experience but in intelligent way. Closer to the user]
** Something that happened in the physical word will trigger signal on the web that will travel through Networks and triggers other signals. The Web like a system (input-process-output). [Nova] [Technology into us all time. Part of us -''Ubiquity+Networks''-] {COLLECTIVE INTELLIGENCE}
----



> "Si la gente no hiciera cosas estúpidas, nunca se podría haber hecho nada inteligente"
>     -- ''Ludwig Wittgenstein''
''Social Media is Here to Stay... Now What?'' by ''Danah Boyd''
Microsoft Research Tech Fest, Redmond
26 February 2009

Cinco (5) propiedades de los medios sociales:
# ''Persistencia'': lo que digas resuene. Lo poco que se produce en las medios sociales es persistente por defecto.
# ''Replicabilidad'': puedes replicar la información de un medio a otro, fácilmente (contribuyendo a la persistencia); pero no hay agregados (más conocimiento) que permitan catalogarlo como un chisme, en lugar de confirmar o refutar su contenido (copy&paste).
# ''Búsquedas'': es fácil seguir el rastro de alguien para llegar a ella o para llegar a otra persona (contactos). Esto en algunas circunstancias es bueno; pero cuando quieren mantenerte subyugado, pues ya no lo es.
# ''Escalabilidad'': los medios sociales escalan cosas en nuevas maneras. Así la conversación entre uno o dos amigos puede llegar a conocerla todo el mundo. Desde luego no todas las cosas que pueden escalar lo hacen, sino miren a nuestros políticos.
# ''(Des)Localización'': con los dispositivos móviles, estas des-localizado de un punto particular en el espacio, pero al mismo tiempo, las tecnologías basadas en la localización hacen de la ubicación algo más relevante. Esta paradoja significa que estamos simultáneamente más y menos conectados al espacio físico.
Esas 5 propiedades están entrelazadas, pero sus implicaciones van de la mano con las maneras en las cuales ellas (propiedades) alteran la dinámica social. Veamos tres (3) dinámicas diferentes que han sido reconfiguradas como resultado de los medios sociales:
# ''Audiencia invisible'': Nosotros evaluamos las personas que están alrededor nuestro cuando hablamos y ajustamos lo que decimos de acuerdo a la audiencia. Los medios sociales introducen varios tipos de audiencia invisible como los ''lurkers'' quienes están presentes en el momento pero que no podemos ver, o los ''visitantes'' quienes acceden a nuestros contenidos. Como resultado, nos estamos comunicando sin darnos cuenta de la audiencia potencial. ''La audiencia potencial invisible puede censurar''. Entonces, podemos esconder la cabeza y pretender que esas personas no existe o las tenemos en cuenta.
# 
[Paper] ''Social Network Sites: Definition, History, and Scholarship'' (http://jcmc.indiana.edu/vol13/issue1/boyd.ellison.html)
* ''Social Network Sites - A Definition''
** social network sites as web-based services that allow individuals to (1) construct a public or semi-public profile within a bounded system, (2) articulate a list of other users with whom they share a connection, and (3) view and traverse their list of connections and those made by others within the system.
** What makes social network sites unique is not that they allow individuals to meet strangers, but rather that they __enable users to articulate and make visible their social networks__. This can result in connections between individuals that would not otherwise be made, but that is often not the goal, and these meetings are frequently between "latent ties" who share some offline connection.
** "networking" or looking to meet new people; that is not a porpuse of SNS's.
** 

[boyd, d. m., & Ellison, N. B. (2007). Social network sites: Definition, history, and scholarship. Journal of ~Computer-Mediated Communication, 13(1), article 11.]
/*{{{*/

#footer {
 margin:5px;
 padding:15px 0px 20px 0px;
 color: [[ColorPalette::Foreground]];/*#B6145A;*/
 font-size:12px;
 text-align:center;
 clear:both;
 background-color: #fff;
}

#footer hr {
 background-color: [[ColorPalette::PrimaryMid]]; /*#B6145A;*/
 height: 10px;
 margin: 7px 2%;
 border:none;
}

/*}}}*/
/*{{{*/
body {
	background:[[ColorPalette::Background]];
	color:[[ColorPalette::Foreground]];
}

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

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

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

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

.tabSelected{
	color:[[ColorPalette::PrimaryDark]];
	background:[[ColorPalette::TertiaryPale]];
	border-left:1px solid [[ColorPalette::TertiaryLight]];
	border-top:1px solid [[ColorPalette::TertiaryLight]];
	border-right:1px solid [[ColorPalette::TertiaryLight]];
}

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

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

.wizard {background:[[ColorPalette::PrimaryPale]]; border:1px solid [[ColorPalette::PrimaryMid]];}
.wizard h1 {color:[[ColorPalette::PrimaryDark]]; border:none;}
.wizard h2 {color:[[ColorPalette::Foreground]]; border:none;}

.wizardStep {
	background:[[ColorPalette::Background]];
	color:[[ColorPalette::Foreground]];
	border:1px solid [[ColorPalette::PrimaryMid]];
}

.wizardStep.wizardStepDone {
	background:[[ColorPalette::TertiaryLight]];
}

.wizardFooter {background:[[ColorPalette::PrimaryPale]];}

.wizardFooter .status {
	background:[[ColorPalette::PrimaryDark]];
	color:[[ColorPalette::Background]];
}

.wizard .button {
	color:[[ColorPalette::Foreground]];
	background:[[ColorPalette::SecondaryLight]];
	border: 1px solid;
	border-color:[[ColorPalette::SecondaryPale]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryPale]];
}

.wizard .button:hover {
	color:[[ColorPalette::Foreground]];
	background:[[ColorPalette::Background]];
}

.wizard .button:active {
	color:[[ColorPalette::Background]];
	background:[[ColorPalette::Foreground]];
	border: 1px solid;
	border-color:[[ColorPalette::PrimaryDark]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryDark]];
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

.editorFooter {
	color: [[ColorPalette::TertiaryMid]];
}

/*}}}*/
/*{{{*/
* 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 0em 1em 1em; left:-1px; top:-1px;}
.headerForeground {position:absolute; padding:4.5em 0em 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:0em 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 .3em 0;}
#sidebarTabs .tabContents {width:15em; overflow:hidden;}

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

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

.tiddlerPopupButton {padding:0.2em 0.2em 0.2em 0.2em;}
.popupTiddler {position: absolute; z-index:300; padding:1em 1em 1em 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 0em;}
.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 0em 0em 0.5em;}
.tab {margin:0em 0em 0em 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 0em 14em;}

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

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

.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:0em 0.25em; padding:0em 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 0em; font-size:.9em;}
.editorFooter .button {padding-top:0px; padding-bottom:0px;}

.fieldsetFix {border:0; padding:0; margin:1px 0px 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 0.3em 0.5em;}
#backstageToolbar {position:relative;}
#backstageArea a {font-weight:bold; margin-left:0.5em; padding:0.3em 0.5em 0.3em 0.5em;}
#backstageButton {display:none; position:absolute; z-index:175; top:0em; right:0em;}
#backstageButton a {padding:0.1em 0.4em 0.1em 0.4em; margin:0.1em 0.1em 0.1em 0.1em;}
#backstage {position:relative; width:100%; z-index:50;}
#backstagePanel {display:none; z-index:100; position:absolute; width:90%; margin:0em 3em 0em 3em; padding:1em 1em 1em 1em;}
.backstagePanelFooter {padding-top:0.2em; float:right;}
.backstagePanelFooter a {padding:0.2em 0.4em 0.2em 0.4em;}
#backstageCloak {display:none; z-index:20; position:absolute; width:100%; height:100px;}

.whenBackstage {display:none;}
.backstageVisible .whenBackstage {display:block;}

/*}}}*/
! Book ''SUMMERHILL, A RADICAL APPROACH TO CHILD REARING''. By A. S. NEILL With a Foreword by Eric Fromm
* overt authority:
** "You must do this. If you do not, certain sanctions will be applied against you"
* Anonymous authority:
** Past: "You must do this. If you don't, I’ll punish you"
** Present: "I am sure you’ll like to do this"
* Overt authority used __physical force__; anonymous authority employs __psychic manipulation__
!! Principios del sistema Neill
# Neill mantiene una fe firme en "la bondad de los niños", Él cree que el niño promedio no ha nacido discapacitado, cobarde, o un autómata sin sentimientos, sino que tiene grandes potencialidades para amar e interesarse por la vida.
# El propósito de la educación (de hecho el propósito de la vida) es trabajar alegremente y encontrar la felicidad. La felicidad, según Neill, significa estar interesado en la vida; o en otras palabras, responder a la vida no solo con el cerebro sino con toda la personalidad que caracteriza a un individuo.
# En la educación, el desarrollo intelectual no es suficiente. La educación debe ser tanto intelectual como emocional. En la sociedad moderna encontramos un aumento en la separación entre razón y sentimiento. Las vivencias del hombre moderno son esencialmente experiencias de ideas mas que una comprensión integral de lo que su corazón siente, sus ojos ven, y su oídos oyen. De hecho, esta separación entre razón y sentimiento dirige al hombre moderno a un estado de esquizofrenia mental en la cual es incapaz de experimentar cualquier cosa que no este en la razón.
# La educación deber ser integrada a las habilidades y necesidades psíquicas del niño. El niño no es altruista (genorisidad), aún no ama como lo haría un amor maduro de un adulto. Es un error esperar algo de un niño, lo cual sólo puede demostrar de una manera --hipócrita--(no real). La genorisidad (altruismo) se desarrolla después de la niñez.
# La disciplina y el castigo, dogmáticamente impuestas, crean miedo; y el miedo crea agresividad. Esta agresividad puede no ser consciente y abierta, sino que más bien que paraliza el esfuerzo y validez de los sentimientos. La amplia imposición de la disciplina es dañina y estropea el desarrollo psíquico de los niños.
# Estrechamente relacionado a este principio esta la necesidad de la verdadera honestidad por parte del profesor. El autor dice que nunca, en los 40 años de trabajar en Summerhill, mintió a un niño. Cualquiera que lea este libro estará convencido que esta afirmación, así suene presumible, es la simple verdad.
# Un desarrollo humano saludable hace necesario que el niño eventualmente corte el principal enlace con sus padres (padre y madre), o lo que después sustituye po la sociedad, y se convierta realmente en independiente. El niño debe aprender a enfrentar el mundo como un individuo. Él debe aprender a encontrar su seguridad no en un apego simbiótico, sino en la capacidad de comprender el mundo intelectualmente, emocionalmente y artisticamente. Él debe usar todas sus habilidades para encontrar unión con el mundo, mas que encontrar una seguridad a través de la dependencia y dominación.
# ''El sentimiento de culpabilidad'' tiene como función traer al niño a la autoridad. Los sentimientos de culpabilidad son un impedimento a la independencia; ellos inician un ciclo, el cual oscila constantemente entre rebelión, arrepentimiento, dependencia, y de nuevo rebelión. La culpabilidad, como sentimiento de muchas de personas de nuestras sociedad, no es primordialmente una reacción de la voz de la conciencia, sino esencialmente una percepción de obediencia contra la autoridad y miedo a la represalia. No importa si tal castigo es físico o un desamor, @@bgcolor(red):o si simplemente me --redefino-- para sentirme como extranjero@@. Así, los sentimientos de culpabilidad crean --escama--, y --la escama-- prolifera la hostilidad y la hipocresía.
# La escuela Summerhill no ofrece educación religiosa. Esto, sin embargo, no significa que Summerhill esta en des-acuerdo con lo que puede ser llamado los valores humanísticos básicos. Neill lo pone sucintamente: @@"La batalla no es entre creyentes en Teología y no creyentes en Teología; es entre creyentes de la libertad humana y creyentes de la supresión de la libertad humana"@@. El autor continua, @@"algún día una nueva generación no aceptará la religión y mitos anticuados de hoy. Cuando la nueva religión llegué, desmentirá la idea de que el hombre nace en pecado. Una nueva religión adorará un Dios que haga Feliz al hombre"@@.



----
- rather than = mas que
<<list all>>
José Hernández Orallo y Cèsar Ferri Ramírez. (2006). ''Práctica de Minería de Datos''. Curso de Doctorado Extracción Automática de Conocimiento en Bases de Datos e Ingeniería del Software. Universitat Politècnica de València.
{{{
* === Run information ===
Scheme:       weka.classifiers.trees.J48 -C 0.25 -M 2
Relation:     weather
Instances:    14
Attributes:   5
              outlook
              temperature
              humidity
              windy
              play
Test mode:    evaluate on training data

=== Classifier model (full training set) ===
J48 pruned tree
------------------

outlook = sunny
|   humidity <= 75: yes (2.0)
|   humidity > 75: no (3.0)
outlook = overcast: yes (4.0)
outlook = rainy
|   windy = TRUE: no (2.0)
|   windy = FALSE: yes (3.0)

Number of Leaves  :  5 [1]
Size of the tree :  8  [2]

Time taken to build model: 0.01 seconds

=== Evaluation on training set ===
=== Summary ===

Correctly Classified Instances    14   100%  [3]
Incorrectly Classified Instances  0     0%
Kappa statistic                   1     
Mean absolute error               0     
Root mean squared error           0     
Relative absolute error           0%
Root relative squared error       0%
Total Number of Instances         14     

=== Detailed Accuracy By Class ===

TP Rate   FP Rate   Precision   Recall  F-Measure   ROC Area  Class
  1         0          1         1         1          1        yes
  1         0          1         1         1          1        no

=== Confusion Matrix ===

 a b   <-- classified as
 9 0 | a = yes
 0 5 | b = no
}}}

[1] EL número de hojas me indican la cantidad de reglas que se generan
[2] Indica el número de nodos del árbol
[3] Correctly Classified Instances = Precision 
[4] 
* En la pestaña ''Visualize'' se pueden ver relaciones entre los atributos, con el fin de ver si hay correlaciones directas (se descarta uno) o si podemos combinar atributos (como k/Na) para aumentar el porcentaje de clasificación (p. 10).
* ''Técnicas de selección de atributos'' : //Wrappers// y método de //filtros// (p. 12) ???
* 
''The Rise of the Social Operating System'' {http://novaspivack.typepad.com/nova_spivacks_weblog/2007/07/the-rise-of-the.html}
If we zoom out and look at all this activity from a distance it appears that there is a race taking place to become "the social operating" system of the Web. A social operating system might be defined as a system that provides for systematic management and facilitation of ''human social relationships and interactions''.
We might list some of the key capabilities of an ideal "social operating system" as:
* Identity management
** Open portable identity
** Personal profiles ("personas")
** Privacy control
* Relationship management
** Directory and lookup services (location of people to communicate with)
** Social networking (opt-in relationship formation, indirect social connectivity via social networks)
** Spam control
* Communication
** Person to person communication
*** Synchronous (IM, VOIP)
*** Asynchronous (email, SMS)
** Group communication
*** Synchronous (conferencing)
*** Asynchronous (group discussions)
* Social Content distribution
** Personal publishing (blogging, home pages)
** Public content distribution
* Social Coordination
** Event management (scheduling, invitations, RSVP's)
** Calendaring 
* Social Collaboration
** File sharing
** Document collaboration (communal authoring/editing)
** Collaborative filtering
** Recommendation systems
** Knowledge management
** Human powered search
** Project management
** Workflow
* Commerce
** Classified advertising
** Auctions
** Shopping
Visión estratégica 2008: crecimiento en excelencia (Facultad de Ingeniería, Universidad de Bostón)
!1 Resumen ejecutivo
* La academia y la Universidad han construido satisfactoriamente una cultura efectiva de colaboración a través de disciplinas y departamentos.
* Nuestra visión estratégica para los próximos 10 años esta sustentada en la ''colaboración''.
* Integrar la investigación a la educación como ciclo continuo de formación tanto en pregrado como en postgrado.
* Enfocar esfuerzos a la ''investigación multi-disciplinaria'', en todos los niveles.
* En pregrado priorizar la ''educación experimental y teórica'' que prepare a los estudiantes para la ''innovación'', la ingeniería y más allá.
* Clusters de ciencias de la ingeniería que enlazan la facultad con los demás departamentos. __Definir grandes áreas que cubran ingenierías, administración, ciencias básicas, etc.__
* Objetivos propuestos para lograr una renovación en la forma de impartir la educación:
** Transformar las experiencias de educación de pre-grado en ingeniería para asegurar oportunidades de éxito a largo plazo, innovación y liderazgo. La retención será maximizada.
** Incrementar la excelencia investigativa y programas de post-grado que incluyan retos inter-disciplinarios mientras se afianza nuestro núcleo de fortalezas.
** Re-estructurar la academia a
*** mantener la excelencia en educación de pre-grado para esas disciplinas y deptos que son coherentes con nuestra fortalezas de investigación
*** apoyar fortalezas multi-disciplinarias emergentes en post-grado (Ej. crear una nueva ciencia o Ingeniería de materiales o programa de Ingeniería de Sistemas).
*** facilitar la educación e investigación multi-disciplinaria.
** Establecer programas, procesos e infraestructura para estimular y apoyar la innovación acoplados a los intereses del profesorado y objetivos de la carrera.
** Asegurar que la academia sea atractiva, enganche y retenga una comunidad diversa de estudiantes y profesores y que logremos programas sobresalientes para conectarnos a la comunidad mientras se avanza en la apreciación de las matemáticas, ciencia e ingeniería.
** Trabajar institucionalmente con ''ex-alumnos'', liderazgo y tableros de visitas para engranar consejos visionarios en iniciativas y prioridades, e identificar y adquirir recursos cruciales necesarios para lograr y sostener la excelencia.
!2 Introducción
!!2.1 Misión
* ''Educar'' las nuevas generaciones de Ingenieros para que lideren en todas las facetas de la sociedad.
* ''Avanzar en las fronteras del conocimiento'' a través de la ciencia de la Ingeniería (Investigación).
* ''Traducir e innovar'' nuevas tecnologías motivadas por la investigación.
* Participar como ''lideres globales (liderazgo)'' en todas las dimensiones de la ''ciencia, educación, tecnología y sociedad''.
!!2.2 Una mirada a la Facultad de Ingeniería (FI)
* Las estadísticas de la FI sugieren que el crecimiento de docentes ha sido conducida primordialmente por mejoramiento en ''fundamentos en investigación'' y ''educación de post-grados'' (~MsC, ~PhD) que por el incremento (tamaño) en programas de pre-grado.
!3 VISIÓN: derribando barreras
* Preguntas guía:
** En que podemos mejorar ?
** Para qué podemos aumentar o proporcionar recursos ?
** Cuáles son nuestras principales misiones ?
* El enfoque tradicional menciona que cada departamento y programa de post-grado al diseñar su currículo e investigaciones ''NO INTERACTUAN con otras disciplinas o deptos para conocer que tienen en mente y poder articular esfuerzos''.
* ''Barreras de colaboración dentro y fuera de la Facultad'' (inter y multi-disciplinariedad).
* Necesitamos crear ''ingenieros versátiles'' (facilidad de adaptación al cambio) no especialistas. 
* ''Ingenieros versátiles'': no en conocimientos profundos de una disciplina, sino en amplias capacidades de integración, comunicación y conocimiento con otras ingenierías o dominios científicos (además de la propia).

! Preguntas
* Cuantos programas de pre-grado y post-grado tiene Unicauca
* 
! Investigación básica (p. 45) [1]
* Según Vannevar Bush [2] los 5 principios fundamentales para hacer investigación básicos son:
** Fondos presupuestales por periodos largos de años, 5 o más, y que cubra un amplio rango de programas (áreas de investigación).
** La entidad (National Research Foundation) encargada de administrar estos fondos debe estar compuesta por ciudadanos comprometidos con la investigación científica y la educación capaces de entender sus peculiaridades además de promover los trabajos realizados.
** La entidad (National Research Foundation) debería promover investigaciones a través de contratos o concesiones a organizaciones fuera del "gobierno federal" y no deberían operar en laboratorios de su propiedad.
** Apoyar la investigación básica en las Universidades, Facultades públicas y privadas, y los ''Institutos de Investigación'' deben organizar sus políticas de control interno, personal, método y alcance de las investigaciones de tal forma que sean regidas por las mismas instituciones. ''Esto es lo mas importante''.
** Mientras asumen la completa independencia y libertad de carácter, alcance y metodología de la investigación realizada en las Instituciones que reciben fondos públicos, y mientras guarden mesura en la petición de fondos, la "Fundación" propuesta en este punto debe ser responsabilidad del Presidente y del Congreso. ''Sólo a través de tal responsabilidad podemos mantener la apropiada relación entre la ciencia y otros aspectos del sistema democrático''.  Los controles usuales de auditoria, reportes, presupuestos y similares, deben, por supuesto, aplicar a las operaciones de administración y fiscalización de la ""Fundación", sometida, no obstante, a tales regulaciones en los procedimientos son tan necesarias para convenir los requerimientos especiales de investigación.



! Referencias
[1] Ahumada, J. y F.M. Miranda, (2003). Ciencia, tecnología y sociedad: algunas reflexiones. OEA (Ed.). Bogotá (Colombia). Disponible en: http://www.science.oas.org/english/publicae_pol.htm

[2]  Vannevar Bush, Science-The Endless Frontier: A report to the President on a Program for Postwar Scientific Research,, National Science Foundation, Washington, reprinted 1990. Disponible en: http://www.nsf.gov/od/lpa/nsf50/vbush1945.htm
UploadPlugin with <<tag UploadService>> extend TiddlyWiki with @@upload@@ and @@save to web@@ commands. 

See [[HowToUpload]].

[[Upload]] is :
<<tiddler UploadPluginDoc>>
This form upload any file with an UploadService describe in [[Upload]]
----
<html><center>
<form enctype="multipart/form-data" action="store.php" method="post" target="_blank">
 <input type="hidden" name="MAX_FILE_SIZE" value="3000000" />
This file : <input name="userfile" type="file" /><p>
Options* : <input type="text" name="UploadPlugin" size=80 value="backupDir=BACKUP_DIR;uploaddir=UPLOAD_DIR;user=UPLOAD_USER;password=UPLOAD_PASSWORD;debug=0;" /><p>
 <input type="submit" value="Upload" />
</form></center>
</html>
----
 * Substitute BACKUP_DIR, UPLOAD_DIR, UPLOAD_USER and UPLOAD_PASSWORD with your values. See UploadPlugin for option details. 
For security reason, don't save your password in a tiddler.
| !date | !user | !location | !storeUrl | !uploadDir | !toFilename | !backupdir | !origin |
| 17/03/2009 23:48:53 | EdwinCaldon | [[notebook.html|file:///media/ecaldon/notebook.html]] | [[store.php|http://darkstar.example.com/~edycop/tiddlywiki/store.php]] | . | [[notebook.html | http://darkstar.example.com/~edycop/tiddlywiki/notebook.html]] | backup | ok |
| 17/03/2009 23:51:56 | EdwinCaldon | [[notebook.html|file:///media/ecaldon/notebook.html]] | [[store.php|http://darkstar.example.com/~edycop/tiddlywiki/store.php]] | . | [[notebook.html | http://darkstar.example.com/~edycop/tiddlywiki/notebook.html]] | backup | ok |
| 17/03/2009 23:55:42 | EdwinCaldon | [[notebook.html|file:///media/ecaldon/notebook.html]] | [[store.php|http://darkstar.example.com/~edycop/tiddlywiki/store.php]] | upload | [[notebook.html | http://darkstar.example.com/~edycop/tiddlywiki/upload/notebook.html]] | backup | ok |
| 17/03/2009 23:57:08 | EdwinCaldon | [[notebook.html|file:///media/ecaldon/notebook.html]] | [[store.php|http://darkstar.example.com/~edycop/tiddlywiki/store.php]] | . | [[notebook.html | http://darkstar.example.com/~edycop/tiddlywiki/notebook.html]] | backup | ok |
| 20/03/2009 22:46:14 | EdwinCaldon | [[notebook.html|file:///media/ecaldon/notebook.html]] | [[store.php|http://darkstar.example.com/~edycop/tiddlywiki/store.php]] | . | [[notebook.html | http://darkstar.example.com/~edycop/tiddlywiki/notebook.html]] | backup | ok |
| 22/03/2009 18:39:18 | EdwinCaldon | [[notebook.html|file:///media/ecaldon/notebook.html]] | [[store.php|http://afrodita.unicauca.edu.co/~ecaldon/tw/store.php]] | . | [[notebook.html | http://afrodita.unicauca.edu.co/~ecaldon/tw/notebook.html]] | backup |
| 22/03/2009 18:41:17 | EdwinCaldon | [[notebook.html|file:///media/ecaldon/notebook.html]] | [[store.php|http://afrodita.unicauca.edu.co/~ecaldon/tw/store.php]] | . | [[notebook.html | http://afrodita.unicauca.edu.co/~ecaldon/tw/notebook.html]] | backup |
| 24/03/2009 20:12:07 | EdwinCaldon | [[notebook.html|file:///F:/notebook.html]] | [[store.php|http://afrodita.unicauca.edu.co/~ecaldon/tw/store.php]] | . | [[notebook.html | http://afrodita.unicauca.edu.co/~ecaldon/tw/notebook.html]] | backup | failed |
| 24/03/2009 20:13:19 | EdwinCaldon | [[notebook.html|file:///F:/notebook.html]] | [[store.php|http://afrodita.unicauca.edu.co/~ecaldon/tw/store.php]] | . | [[notebook.html | http://afrodita.unicauca.edu.co/~ecaldon/tw/notebook.html]] | backup | failed |
| 24/03/2009 20:13:56 | EdwinCaldon | [[notebook.html|file:///F:/notebook.html]] | [[store.php|http://afrodita.unicauca.edu.co/~ecaldon/tw/store.php]] | . | [[notebook.html | http://afrodita.unicauca.edu.co/~ecaldon/tw/notebook.html]] | backup | ok |
UploadPlugin uses the following sequence for finding parameters :
#''macro'' parameters
#''Options'' saved in cookies
#''Plugin'' default values
!Options used by UploadPlugin
| Option | Value | Default |
|Upload Username: |<<option txtUploadUserName>>| |
|Upload Password: |<<option pasUploadPassword>>| |
|Url of the UploadService script: |<<option txtUploadStoreUrl urlInput>>| store.php |
|Relative Directory where to store the file: |<<option txtUploadDir urlInput>>| . (the script directory) |
|Filename of the uploaded file: |<<option txtUploadFilename urlInput>>| index.html |
|Directory to backup file on webserver^^(1)^^: |<<option txtUploadBackupDir urlInput>>| //null// (none/no backup) |
|Log in UploadLog |<<option chkUploadLog>> Trace Upload| true |
|Maximum of lines in UploadLog |<<option txtUploadLogMaxLine>>| 10 |

^^(1)^^No backup if Backup Directory is empty, the previous file will be overwritten. Use a '.' to backup in the script directory.

<<upload>> with these options.

!Upload Macro parameters
{{{
<<upload [storeUrl [toFilename [backupDir [uploadDir [username]]]]]>>
 Optional positional parameters can be passed to overwrite UploadOptions. 
}}}

!UploadToFile Macro Macro parameters
{{{
<<uploadTofile [filename [tiddlerTitle]]>>
 tiddlerTitle, filename: if omitted the title of the current tiddler
}}}

<<uploadToFile allowedsites.txt allowedsites.txt>>
/***
|''Name:''|UploadPlugin|
|''Description:''|Save to web a TiddlyWiki|
|''Version:''|4.1.4|
|''Date:''|2008-08-11|
|''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: 4,
	date: new Date("2008-08-11"),
	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',false);
bidix.initOption('txtUploadLogMaxLine','10');


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


//}}}
UploadPlugin V 4.1.4 (2008-08-11) :
Using {{{404}}} instead of obsolete (in TW 2.4.1) {{{httpStatus.NotFound}}}. 

Thanks Fred for figuring out and correcting the problem. 


Enjoy UploadPlugin !

-- BidiX
//last update: UploadPlugin v 4.1.3//

!Description
UploadPlugin with <<tag UploadService>> extend TiddlyWiki with @@upload@@ and @@save to web@@ commands. 
UploadPlugin uses Username and Password from UploadOptions stored in cookies to authenticate itself to [[store.php]] or [[store.cgi]].
UploadPlugin requires PasswordOptionPlugin.
French translation available as a separate tiddler UploadPluginMsgFR

!!UploadPlugin
*If the TiddlyWiki is viewed @@from local disk@@ :
**{{{<<upload ...>>}}}
***display as '''upload'''
***after saving to disk, upload to a website.
*If the TiddlyWiki is viewed @@from a website@@ :
**{{{<<upload ...>>}}}
***display as '''save to web'''
***save to the same website.
*If GenerateAnRssFeed in AdvancedOptions is set :
**generate the content of the RSSFeed 
**upload the RssFile
**Caution : use the SiteUrl tiddler to specify the right url of the TiddlyWiki in the generated RssFile
*DisplayMessage
*If a backupDir is specified
**and if a file already exists in the uploadDir withe the same fielname, move it in the backup dir and rename it with a timestamp
*if UploadLog is activated every upload action is logged in UploadLog
**only the last maxLines are stored
**if maxLine = -1 no truncation will occured 
hint : if UploadLog is the first tiddler in the TimelineTab, no tiddler has been changed since last upload.

!![[store.php]]
*UserVariables to set :
//{{{
$AUTHENTICATE_USER = true; // true | false
$USERS = array(
 'UserName1'=>'Password1', 
 'UserName2'=>'Password2', 
 'UserName3'=>'Password3'); // set usernames and strong passwords
$DEBUG = false; // true | false
//}}}
*method GET
**display an information page
*method POST
**if $~AUTHENTICATE_USER is ''true''
***presence and value of user and password are checked with $USER and $PASSWORD 
**if toFilename already exists and backDir parameter specified
***rename toFilename to backupDir/toFilename.AAAAMMDD.HHSS.html
**copy temporaryUploadedFile toFilename
**return status

!![[store.cgi]]
*UserVariables to set :
//{{{
CONFIG = {
 :users => {
 'UserName1'=>'Password1', 
 'UserName2'=>'Password2', 
 'UserName3'=>'Password3')
 },
 :authenticateUser => true,
 :backupExistingFile => true,
 :withUploadDir => true
}
//}}}
*same processing as store.php above

!Usage : 
{{{
<<upload>>
 uses UploadOptions saved in cookies :
 txtUploadUserName: username
 pasUploadPassword : password
 txtUploadStoreUrl : store script
 txtUploadDir : relative path for upload directory
 txtUploadFilename : upload filename
 txtUploadBackupDir : relative path for backup directory

<<upload [storeUrl [toFilename [backupDir [uploadDir [username]]]]]>>
 Optional positional parameters can be passed to overwrite 
 UploadOptions. 
}}}

Suggestion: Install the {{{<<upload ... >>}}} macro in SideBarOptions just below {{{<<saveChanges>>}}} macro.


!User manual
See HowToUpload

!Installation :
*Install the UploadPlugin as usual
*[[Upload]] the [[store.php]] file on your php aware webserver in your TiddlyWiki directory
*Protect your server against malicious upload. Two approaches :
**set $~AUTHENTICATE_USER to true in the [[store.php]] script
***configure $USER and $PASSWORD in the [[store.php]] script on your webserver
***set UploadOptions in conformity with [[store.php]]
**Use server protection :
***for Apache web server ([[for detail see Apache documentation|http://httpd.apache.org/docs/1.3/howto/htaccess.html]]) : 
****configure and upload the [[.htaccess]] [[.passwd]]
***for other web servers see the appropriate documentation
*Configure an upload button, for example in the SideBarOptions
!Suppported Browser
*Firefox and Gecko based browser: tested Ok
*Internet Explorer : tested Ok
*Safari : tested ok on OS X
*Others : Not tested, please report status.

!Revision history
<<tiddler UploadPluginRevisionHistory>>
/***
|''Name:''|UploadPluginLingoEN|
|''Description:''|English Translation|
|''Version:''|4.1.0|
|''Date:''|May 8, 2007|
|''Source:''|http://tiddlywiki.bidix.info/#UploadPluginLingoEN|
|''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:''|UploadPlugin UploadToHomeMacro|
***/
//{{{
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"
};

merge(config.macros.uploadOptions, {
	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'} 
			]}
	});


bidix.upload.messages = {
	//from saving
	invalidFileError: "The original file '%0' does not appear to be a valid TiddlyWiki",
	backupSaved: "Backup saved on web",
	backupFailed: "Failed to save backup file on web",
	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."
};

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)"
});

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

//}}}

//{{{
/*
 * UploadToHomeMacro Lingo
 */
if (config.macros.uploadToHome) {
	merge(config.macros.uploadToHome,{messages: {
			homeParamsTiddler: "HomeParameters",
			prompt: "Save and Upload this TiddlyWiki using parameters in  '%0' tiddler",
			tiddlerNotFound: "Tiddler %0 not found"
		}});
	merge(config.tasks,{
				uploadToHome: {text: "uploadToHome", tooltip: "Upload using '" + config.macros.uploadToHome.messages.homeParamsTiddler + "' tiddler",
				action: config.macros.uploadToHome.action}
		});
}

//}}}
// null logger : no more UploadLog and no upload logging
// BidiX - 2006/11/8
//{{{
config.macros.upload.UploadLog = function() {return this;};
config.macros.upload.UploadLog.prototype.startUpload = function(storeUrl, toFilename, uploadDir,  backupDir) {};
config.macros.upload.UploadLog.prototype.endUpload = function() {};
//}}}

UploadTiddlerPlugin and [[storeTiddler.php]] "upload" or "save to web" a single tiddler by updating, inserting or deleting a single tiddler in a TiddlyWiki file located on the web.

@@Now UploadTiddlerPlugin is able to Upload a Tiddler even if TiddlyWiki is located on a local file.@@

![[UploadTiddlerPlugin]]
*is activated by @@chkUploadTiddler option: <<option chkUploadTiddler>>@@
* to be abe to Upload a Tiddler even if the TiddlyWiki is located on local file@@chkUploadTiddlerFromFile option: <<option chkUploadTiddlerFromFile>>@@
*uses @@txtUploadTiddlerStoreUrl: <<option txtUploadTiddlerStoreUrl>>@@
*override TiddlyWiki.prototype.saveTiddler and deleteTiddler core functions
*uses the same options as UploadPlugin. 
*do an XmlHttpRequest POST to storeTiddler.php only with the corresponding tiddler in storeArea format.
![[storeTiddler.php]]
*Username and password are checked 
*[[storeTiddler.php]] parses TiddlyWiki file
*tiddler is updated, inserted or deleted in the tiddler array
*optionally create and clean backup file
*write updated TiddlyWiki file
!UploadTiddlerPlugin and UploadPlugin
*The paradigm of UploadTiddlerPlugin and [[storeTiddler.php]] is exactly the same as UploadPlugin and [[store.php]]
*No concurrency managed
*Full compatible with UploadPlugin
*[[storeTiddler.php]] can be use to remotly update a TiddlyWiki. storeTiddler.php
*a GET to [[storeTiddler.php]] display a form to upload a tiddler in a TiddlyWiki
/***
|''Name:''|UploadTiddlerMacro|
|''Description:''|Define a macro to upload a tiddler using UploadTiddlerPlugin (see UploadTiddlerPlugin for details).|
|''Version:''|1.0.0|
|''Date:''|2008-09-30|
|''Source:''|http://tiddlywiki.bidix.info/#UploadTiddlerMacro|
|''Usage:''|{{{<<uploadTiddler [tiddlerTitle]>>}}}<br>{{{tiddlerTitle: if omitted the title of the current tiddler}}}|
|''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:''|UploadTiddlerPlugin|
***/
//{{{
version.extensions.UploadTiddlerMacro = {
	major: 1, minor: 0, revision: 0, 
	date: new Date("2008-09-30"),
	source: 'http://tiddlywiki.bidix.info/#UploadTiddlerMacro',
	author: 'BidiX (BidiX (at) bidix (dot) info',
	coreVersion: '2.2.0'
};

config.macros.uploadTiddler = {
	label: "uploadTiddler",
	prompt: "upload tiddler '%0' using UploadTiddlerOptions ",
	warning: "Are you sure you want to upload '%0'?",
	messages: {
		fileUploaded: "tiddler '%0' uploaded to file '%1'",
		fileNotUploaded: "tiddler '%0' NOT uploaded"
	},

	handler: function(place, macroName, params, wikifier,paramString, tiddler) {
		var tiddlerTitle = params[0];
		if (!tiddlerTitle) { 
			tiddlerTitle = tiddler.title;
		} else {
			tiddler = store.getTiddler(tiddlerTitle);
		}
		createTiddlyButton(place, this.label, this.prompt.format([tiddlerTitle]), 
			function () {
				config.macros.uploadTiddler.upload(tiddlerTitle, tiddler); 
				return false;}, 
			null, null, null);
	},

	upload:  function(tiddlerTitle, tiddler) {
		var saved_chkUploadTiddler = config.options.chkUploadTiddler;
		config.options.chkUploadTiddler = true; 
		bidix.uploadTiddler.upload(tiddlerTitle, tiddler,tiddlerTitle);
		config.options.chkUploadTiddler = saved_chkUploadTiddler;
	}
};

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

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"
	}
};

//
// Initializations
//

// require UploadTiddlerPlugin 1.2.2 or better
bidix.checkPlugin("UploadTiddlerPlugin", 1, 2, 2);


//}}}
/***
|''Name:''|UploadTiddlerPlugin|
|''Description:''|Upload a tiddler and Update a remote TiddlyWiki |
|''Version:''|1.2.2|
|''Date:''|2008-09-13|
|''Source:''|http://tiddlywiki.bidix.info/#UploadTiddlerPlugin|
|''Usage:''|Uses {{{<<uploadOptions>>}}}<br>with those UploadTiddler Options : <br>chkUploadTiddler: <<option chkUploadTiddler>><br>txtUploadTiddlerStoreUrl: <<option txtUploadTiddlerStoreUrl>><br>chkUploadTiddlerFromFile: <<option chkUploadTiddlerFromFile>>|
|''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.3.0|
***/
//{{{
version.extensions.UploadTiddlerPlugin = {
	major: 1, minor: 2, revision: 2, 
	date: new Date("2008-09-13"),
	source: 'http://tiddlywiki.bidix.info/#UploadTiddlerPlugin',
	author: 'BidiX (BidiX (at) bidix (dot) info',
	coreVersion: '2.3.0'
};

if (!window.bidix) window.bidix = {}; // bidix namespace
bidix.debugMode = false;
bidix.uploadTiddler = {
	messages: {
		aboutToSaveTiddler: "About to update tiddler '%0'...",
		aboutToRemotelySaveTiddler: "About to REMOTELY update tiddler '%0'...",
		storeTiddlerNotFound: "Script store tiddler '%0' not found",
		tiddlerSaved: "Tiddler '%0' updated in '%1' using '%2' "
	},
	upload: function(title,tiddler,oldTitle) {
		var callback = function(status,params,responseText,url,xhr) {
			if (xhr.status == 404) {
				alert(bidix.uploadTiddler.messages.storeTiddlerNotFound.format([url]));
				return;
			}
			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);
			else 
				displayMessage(bidix.uploadTiddler.messages.tiddlerSaved.format([params[0], params[1], params[2]]));
				store.setDirty(false);
			}

		if ((config.options['chkUploadTiddler']) && 
				((document.location.toString().substr(0,4) == "http") || config.options['chkUploadTiddlerFromFile'])) {
			clearMessage();
			if (document.location.toString().substr(0,4) != "http")
				displayMessage(bidix.uploadTiddler.messages.aboutToRemotelySaveTiddler.format([title]));
			else
				displayMessage(bidix.uploadTiddler.messages.aboutToSaveTiddler.format([title]));
			var ExtTiddler = null;
			var html = null;
			if (tiddler) {
				ExtTiddler = store.getSaver().externalizeTiddler(store,tiddler);
				html = wikifyStatic(tiddler.text,null,tiddler).htmlEncode();
			}
			var form = "title="+encodeURIComponent(title);
			form = form + "&tiddler="+(ExtTiddler?encodeURIComponent(ExtTiddler):'');
			form = form + "&html="+(html?encodeURIComponent(html):'');
			var filename = (config.options['txtUploadFilename']?config.options['txtUploadFilename']:'index.html');
			form = form +"&oldTitle="+encodeURIComponent(oldTitle);
			form = form +"&fileName="+encodeURIComponent(filename);
			form = form +"&backupDir="+encodeURIComponent(config.options['txtUploadBackupDir']);
			form = form +"&user="+encodeURIComponent(config.options['txtUploadUserName']);
			form = form +"&password="+encodeURIComponent(config.options['pasUploadPassword']);
			form = form +"&uploadir="+encodeURIComponent(config.options['txtUploadDir']);
			form = form +"&debug="+encodeURIComponent(0);
			var storeScript = (config.options.txtUploadTiddlerStoreUrl 
								? config.options.txtUploadTiddlerStoreUrl : 'storeTiddler.php');
			var r = doHttp("POST",storeScript,form+"\n",'application/x-www-form-urlencoded',
				config.options['txtUploadUserName'],config.options['pasUploadPassword'],callback,Array(title,filename, storeScript),null);
		}
	}
}
TiddlyWiki.prototype.saveTiddler_bidix = TiddlyWiki.prototype.saveTiddler;
TiddlyWiki.prototype.saveTiddler = function(oldTitle,newTitle,newBody,modifier,modified,tags,fields,clearChangeCount,created) {
	var tiddler = TiddlyWiki.prototype.saveTiddler_bidix.apply(this,arguments);
	var title = (newTitle?newTitle:oldTitle);
	if (oldTitle == title)
		oldTitle = '';
	bidix.uploadTiddler.upload(title, tiddler, oldTitle);
}
TiddlyWiki.prototype.removeTiddler_bidix =TiddlyWiki.prototype.removeTiddler;
TiddlyWiki.prototype.removeTiddler = function(title) {
	TiddlyWiki.prototype.removeTiddler_bidix.apply(this,arguments);
	bidix.uploadTiddler.upload(title, null);
}

//
// Initializations
//

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

// styleSheet
setStylesheet('.txtUploadTiddlerStoreUrl {width: 22em;}',"uploadTiddlerPluginStyles");

//optionsDesc
merge(config.optionsDesc,{
	txtUploadTiddlerStoreUrl: "Url of the UploadTiddlerService script (default: storeTiddler.php)",
	chkUploadTiddler: "Do per Tiddler upload using txtUploadTiddlerStoreUrl (default: false)",
	chkUploadTiddlerFromFile: "Upload tiddler even if TiddlyWiki is located on local file (default: false)"
});

// Options Initializations
bidix.initOption('txtUploadTiddlerStoreUrl','');
bidix.initOption('chkUploadTiddler','');
bidix.initOption('chkUploadTiddlerFromFile','');


// add options in backstage UploadOptions
if (config.macros.uploadOptions) {
	if (config.macros.uploadOptions.options) {
		config.macros.uploadOptions.options.push("txtUploadTiddlerStoreUrl","chkUploadTiddler", "chkUploadTiddlerFromFile");
	}
}

//}}}
/***
|''Name:''|UploadToFileMacro|
|''Description:''|Upload a tiddler as a file using UploadPlugin context. Used with the SimonBaird's HideWhenPlugin ViewTemplate provides a new command in the tiddler toolbar.|
|''Version:''|2.0.1|
|''Date:''|Apr 21, 2007|
|''Source:''|http://tiddlywiki.bidix.info/#UploadToFileMacro|
|''Usage:''|{{{<<uploadTofile [filename [tiddlerTitle]]>>}}}<br>{{{tiddlerTitle, filename: if omitted the title of the current tiddler}}}|
|''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:''|UploadPlugin|
***/
//{{{
version.extensions.UploadToFileMacro = {
	major: 2, minor: 0, revision: 1, 
	date: new Date("Apr 21, 2007"),
	source: 'http://tiddlywiki.bidix.info/#UploadToFilePlugin',
	author: 'BidiX (BidiX (at) bidix (dot) info',
	coreVersion: '2.2.0'
};

// require UploadPlugin 4.0.0 or better
config.macros.uploadToFile = {
	label: "upload %0 to file %1",
	prompt: "upload tiddler '%0' to file '%1' ",
	warning: "Are you sure you want to upload '%0'?",
	messages: {
		fileUploaded: "tiddler '%0' uploaded to file '%1'",
		fileNotUploaded: "tiddler '%0' NOT uploaded"
	},

	handler: function(place, macroName, params, wikifier,paramString, tiddler) {
		// parameters initialization
		var toFilename = params[0];
		var tiddlerTitle = params[1];
		if (!tiddlerTitle) { 
			tiddlerTitle = tiddler.title;
		} else {
			tiddler = store.getTiddler(tiddlerTitle);
		}
		if (!toFilename) { 
			toFilename = tiddlerTitle;
		} 
		var prompt = this.prompt.format([tiddlerTitle, toFilename]);
		createTiddlyButton(place, this.label.format([params[1], params[0]]), this.prompt.format([tiddlerTitle, toFilename]), 
			function () {
				config.macros.uploadToFile.upload(tiddler, null, toFilename); 
				return false;}, 
			null, null, null);
	},

	upload:  function(tiddler, storeUrl, toFilename, uploadDir, backupDir, username, password) {
		if (!tiddler)	{
			alert("Tiddler not found.");
			return false;
		}
		var uploadIt = true; 
		if ((this.warning) && (!confirm(this.warning.format([tiddler.title])))) 
			return false;
		// parameters initialization
		storeUrl = (storeUrl ? storeUrl : config.options.txtUploadStoreUrl);
		toFilename = (toFilename ? toFilename : tiddler.title);
		backupDir = (backupDir ? backupDir : config.options.txtUploadBackupDir);
		uploadDir = (uploadDir ? uploadDir : config.options.txtUploadDir);
		username = (username ? username : config.options.txtUploadUserName);
		password = (password ? password :config.options.pasUploadPassword);
		var callback = function(status,params,responseText,url,xhr) {
			if (status) { 
				if (responseText.substring(0,1) == '0') {
					// 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:")));
					if (destfile.substring(0,2) == './') 
						destfile = destfile.substring(2);
					displayMessage(config.macros.uploadToFile.messages.fileUploaded.format([params[6],destfile]),
						bidix.dirname(url)+'/'+destfile);
				} else {
					alert(responseText);
					displayMessage(config.macros.uploadToFile.messages.fileNotUploaded.format([params[1]]));
				}
			} else {
				displayMessage("HTTP Error " + xhr.status + " in accessing " + url);
			}
		};
		var uploadParams = Array(storeUrl,toFilename,uploadDir,backupDir,username,password, tiddler.title);
		return bidix.upload.httpUpload(uploadParams,tiddler.text,callback,uploadParams);
		
	}
};

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"
	}
};

//
// Initializations
//

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

//}}}
/***
|''Name:''|UploadToHomeMacro|
|''Description:''|Save TiddlyWiki using HomeParameters tiddler|
|''Version:''|0.0.2|
|''Date:''|May 19, 2007|
|''Source:''|http://tiddlywiki.bidix.info/#UploadToHomeMacro|
|''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 (#2125)|
|''Requires:''|UploadPlugin|
|''Usage:''|{{{<<uploadToHome [HomeParameters]>>}}}<br>{{{HomeParameters:}}} optional - Tiddler with upload parameters in slices (see HomeParameters).|
***/
//{{{
version.extensions.UploadToHomeMacro = {
	major: 0, minor: 0, revision: 2,
	date: new Date("May 19, 2007"),
	source: 'http://tiddlywiki.bidix.info/#UploadToHomeMacro',
	author: 'BidiX (BidiX (at) bidix (dot) info',
	coreVersion: '2.2.0 (#3125)'
};

//
// Environment
//

if (!window.bidix) window.bidix = {}; // bidix namespace
bidix.debugMode = false;	// true to activate both in Plugin and UploadService
bidix.checkPlugin("UploadPlugin", 4, 1, 0);

//
// uploadUsing Macro
//

config.macros.uploadToHome = {
	handler: function(place,macroName,params) {
		if (readOnly)
			return;
		var label;
		if (document.location.toString().substr(0,4) == "http") 
			label = config.macros.upload.label.saveLabel;
		else
			label = config.macros.upload.label.uploadLabel;
		var prompt;
		var homeParams = (params[0] ? params[0]:this.messages.homeParamsTiddler);
		if (store.tiddlerExists(homeParams) || store.isShadowTiddler(homeParams)) {
			prompt = this.messages.prompt.toString().format([homeParams]);
		} else {
			throw(this.messages.tiddlerNotFound.toString().format([homeParams]));
		}
		var prompt = this.messages.prompt.toString().format([homeParams]);
		createTiddlyButton(place, label, prompt, function() {config.macros.uploadToHome.action(homeParams);}, null, null, this.accessKey);		
	},
	
	action: function(homeParams) {
		homeParams = (homeParams ? homeParams : config.macros.uploadToHome.messages.homeParamsTiddler);
		if (!store.tiddlerExists(homeParams) && !store.isShadowTiddler(homeParams)) {
			throw(config.macros.uploadToHome.messages.tiddlerNotFound.toString().format([homeParams]));
		}
		config.macros.upload.action(config.macros.uploadToHome.getParamsFromTiddler(homeParams));
	},
	
	getParamsFromTiddler: function(tiddlerTitle) {
		tiddlerTitle = (tiddlerTitle ? tiddlerTitle:this.messages.homeParamsTiddler);
		if (!store.tiddlerExists(tiddlerTitle) && !store.isShadowTiddler(tiddlerTitle)) {
			throw(config.macros.uploadToHome.messages.tiddlerNotFound.toString().format([tiddlerTitle]));
		}
		var sliceNames = [
			"UploadStoreUrl",
			"UploadFilename",
			"UploadBackupDir",
			"UploadDir",
			"UploadUserName"
			//"UploadPassword", // no password in tiddlers
		];
		var sliceValues = store.getTiddlerSlices(tiddlerTitle,sliceNames);
		var parameters = [];
		for(var i=0; i<sliceNames.length; i++) {
			parameters.push(sliceValues[sliceNames[i]]);
		}
		return parameters;
	},
	
	messages: {
		homeParamsTiddler: "HomeParameters",
		prompt: "Save and Upload this TiddlyWiki using parameters in  '%0' tiddler",
		tiddlerNotFound: "Tiddler %0 not found"
	},
	initAtLoad: function () {
		// install Shadowed HomeParameters
		var storeUrl;
		if ((document.location.toString().substr(0,4) == "http")) 
			storeUrl = bidix.dirname(document.location.toString())+'/'+config.macros.upload.defaultStoreScript;
		else
			storeUrl = config.macros.upload.defaultStoreScript;
		var shadowedHomeParameters = (config.shadowTiddlers['HomeParameters']?config.shadowTiddlers['HomeParameters']:'');
		shadowedHomeParameters += [
			"|UploadUserName:|"+config.options['txtUploadUserName']+"|",
			"|UploadStoreUrl:|"+storeUrl+"|",
			"|UploadDir:|.|",
			"|UploadFilename:|index.html|",
			"|UploadBackupDir:||"
			].join("\n");
		merge(config.shadowTiddlers,{'HomeParameters':	shadowedHomeParameters});
		// install Backstage uploadToHome
		merge(config.tasks,{
			uploadToHome: {text: "uploadToHome", tooltip: "Upload using '" + this.messages.homeParamsTiddler + "' tiddler", action: this.action}
		});
		config.backstageTasks.push("uploadToHome");
				
	}
};

config.macros.uploadToHome.initAtLoad();

//}}}
----------
''Ejemplo de enlaces en Tiddly Wiki''
MainMenu
GettingStarted
[[Compatibility|compatibility.html]]
[[ToDo|todo.html]]
[[Backend|backend.html]]
[[Proc-Layer|renderengine.html]]
[[Support-Library|support_library.html]]
<<fullscreen>>
-----
''~TiddlyWiki'' uses Wiki style markup, a way of lightly "tagging" plain text so it can be transformed into HTML. Edit this Tiddler to see samples.

! Header Samples
!Header 1
!!Header 2
!!!Header 3
!!!!Header 4
!!!!!Header 5

! Unordered Lists:
* Lists are where it's at
* Just use an asterisk and you're set
** To nest lists just add more asterisks...
***...like this
* The circle makes a great bullet because once you've printed a list you can mark off completed items
* You can also nest mixed list types
## Like this

! Ordered Lists
# Ordered lists are pretty neat too
# If you're handy with HTML and CSS you could customize the [[numbering scheme|http://www.w3schools.com/css/pr_list-style-type.asp]]
## To nest, just add more octothorpes (pound signs)...
### Like this
* You can also
** Mix list types
*** like this
# Pretty neat don't you think?

! Tiddler links
To create a Tiddler link, just use mixed-case WikiWord, or use [[brackets]] for NonWikiWordLinks. This is how the GTD style [[@Action]] lists are created. 

Note that existing Tiddlers are in bold and empty Tiddlers are in italics. See CreatingTiddlers for details.

! External Links
You can link to [[external sites|http://google.com]] with brackets. You can also LinkToFolders on your machine or network shares.

! Images
Edit this tiddler to see how it's done.
[img[http://img110.echo.cx/img110/139/gorilla8nw.jpg]]

!Tables
|!th1111111111|!th2222222222|
|>| colspan |
| rowspan |left|
|~| right|
|colored| center |
|caption|c

For a complex table example, see PeriodicTable.

! Horizontal Rules
You can divide a tiddler into
----
sections by typing four dashes on a line by themselves.

! Blockquotes
<<<
This is how you do an extended, wrapped blockquote so you don't have to put angle quotes on every line.
<<<
>level 1
>level 1
>>level 2
>>level 2
>>>level 3
>>>level 3
>>level 2
>level 1

! Other Formatting
''Bold''
==Strike==
__Underline__
//Italic//
Superscript: 2^^3^^=8
Subscript: a~~ij~~ = -a~~ji~~
@@highlight@@ Unfortunately highlighting is broken right now.
@@color(green):green colored@@
@@bgcolor(#ff0000):color(#ffffff):red colored@@ Hex colors are also broken right now.
! Open Social Discourse And Web Culture
(Discurso Open Social y cultura Web) - ''Stowe Boyd''
* El discurso abierto tiene la ventaja de apoyarse en las herramientas FLOSS que hay en Internet, como blog, wikis, micrbloggin (twiter), redes sociales (Facebook), en las cuales se llega de forma directa a los //internautas// y son estos quienes deciden si tu aporte es útil o no.
* De nada sirve tener al mejor periodista Pulitzer en una revista si no se le da la libertad necesaria, imponiéndole temas o restricciones, para dar su opinión que es en ultimas lo que importa. O se tiene del otro lado periodistas no Pulitzer (escritores, etc) que escriben en twiter y tienen muchos seguidores, por expresar su opinión y compartirla con los demás.
! The Emergence Of Open Design And Open Manufacturing ***
(La emergencia del diseño y la fabricación abiertos) - ''Michel Bauwens''
* 
! Does Democracy Work?
(¿Funciona la democracia?) Entrevista con ''Lawrence Lessig''
* 
! Sharism: A Mind Revolution
(Sharismo, una revolución de la mente) - ''Isaac Mao''
* 
! Empowering Voices
(Dando poder a las voces) - Entrevista con ''Sami Ben Gharbia''

! We Help Villagers Help Themselves
(Ayudamos al pueblo a ayudarse a sí mismo) - Interview with ''Sonja Vucic''

! Human Is Not Limited to Flesh
(Lo humano no se limita a la carne) - Interview with ''Martine Rothblatt''

! Spirits In A Digital World
(Espíritus en el mundo digital) - Interview with ''A.K.M. Adam''

! Erotic Enlightment Is The Key To Happiness In Society
(La iluminación erótica es la clave de la felicidad en la sociedad) - Interview with ''Iris Brosch''
* [[Creando una red WiFi en Ubuntu 8.04 | http://blogoblo.blogspot.com/2008/06/creando-una-red-wifi-en-ubuntu-804.html]]
* [[Firmware para Linksys | http://www.dd-wrt.com/]], uno de tantos.
* [[Como configurar un Linksys WRT54G como Access Point | http://www.linux-os.com.ar/linuxos/como-configurar-un-linksys-wrt54g-como-access-point/]]
* Manuales Routers ~WRT54GL: http://www-es.linksys.com/

''Tiddlers relacionados''
* //Wireless tools for Linux// en [[commands]]
! Páginas de comandos
* http://www.pixelbeat.org/cmdline_es_AR.html
! Arranque de servicios
Para que el sistema arranque un servicio al inicio, debe estar en ''/et/init.d/'' y para ello podemos usar:
{{{# update-rc.d <name_proccess> defaults}}}
Si queremos eliminarlo:
{{{# update-rc.d -f <name_proccess> remove}}}
! Información de una distro
Mostrar información específica de la distribución:
{{{# lsb_release -a}}}
!Mplayer
* Grabar el audio de una emisora: (1) [En un paso]
{{{
$mplayer <direccionderadio> -dumpstream -dumpfile archivo.mpg
Ejemplo:
$mplayer -cache 256 http://190.144.31.82:8000/ -dumpstream -dumpfile radiocomunicate.mpg
}}}
* Grabar el audio de una emisora: (2) [En dos pasos]
{{{
$mplayer http://www.cadenaser.es/player/SER-TIC.asx -dumpstream
$mplayer stream.dump -ao pcm -aofile stream.wav (Este comando no funciona)
$mplayer stream.dump -ao pcm:file=stream.wav (Este sí funciona)
}}}
* Reproducir solo el audio de un video:
{{{
$mplayer -rootwin <video>
}}}
! ffmpeg
''19 cosas útiles que puedes hacer con ffmpeg en linux - ubuntu'' (www.tuxapuntes.com)
Convertir avi a flv:
{{{$ ffmpeg -i entrada.avi -ab 56 -ar 44100 -b 200 -r 15 -s 320×240 -f flv salida.flv}}}
! Pdf a text plano
{{{$ pdftotext -layout servidor.pdf servidor.c}}}
* layout : Es imprescindible ponerlo, ya que con él guarda la maquetación del pdf original, si no lo poneis se comera todos los saltos de linea, tabuladores y seguramente no sea lo que buscais.
* servidor.pdf : Archivo pdf = origen
* servidor.c : Archivo texto plano o txt = destino
! Pdf a jpg
{{{$ convert business_plan.pdf `echo business_plan.pdf | sed 's/\.pdf$/\.jpg/'`}}}
Convertir varias images jpg a un archivo pdf:
{{{$ convert page_1.jpg page_2.jpg page_3.jpg page_4.jpg page_5.jpg `echo output.pdf | sed 's/\.jpg$/\.pdf/'`}}}
! Pdf a Flash
* Visto en [[jEsuSdA | http://www.jesusda.com/blog/index.php?id=372]]
* Instalar el paquete swftools:
{{{
# apt-get install swftools
}}}
o descargar el [[paquete .deb | http://packages.ubuntu.com/karmic/swftools]]
* Convertir pdf a flash:
{{{
$ pdf2swf -o documento.swf documento.pdf 
}}}
* Convertir el .pdf en un archivo flash e incrustarlo en un visor flash:
{{{
$ pdf2swf -B rfxview.swf -o documento.swf documento.pdf
}}}
''rfxview.swf'' es el visor, se puede descargar de [[aquí | http://www.jesusda.com/blogpics/howto-pdf2swf/rfxview.swf]].
* Insertarlo en una página web:
{{{
<object type="application/x-shockwave-flash" data="documento.swf" width="500" height="415" >
<param name="movie" value="documento.swf" />
<p> Aquí debemos colocar un contenido alternativo para aquellos que no disponen de flash, pej. un link al pdf original. </p>
</object>
}}}
! Cambiar metadatos de un pdf
Extraemos los metadatos del fichero:
{{{$ pdftk fichero.pdf data_dump output metadatos}}}
Obtendremos un fichero como el siguiente:
{{{
$ cat metadatos
InfoKey: Creator
InfoValue: Impress
InfoKey: Title
InfoValue: Excepciones
InfoKey: Producer
InfoValue: OpenOffice.org 2.3
InfoKey: CreationDate
InfoValue: D:20071212181534+01′00′
PdfID0: 4222391eed5691991ce80c37c437579
PdfID1: 4222391eed5691991ce80c37c437579
NumberOfPages: 70
}}}
Editamos el fichero metadatos, modificando el campo del título (el ~InfoValue del campo Title), y reconstruímos el fichero incrustando esos nuevos metadatos:
{{{$ pdftk fichero.pdf update_info metadatos output nuevoFichero.pdf}}}
! Resolución de pantalla
Ctr + alt + {+ ó -} -> no funciona en Ubuntu
En Ubuntu se puede instalar ''resaplet'', con el cual aparece un icono en el panel superior, con las resoluciones  disponibles.
! Desinstalar las versiones antiguas del kernel
Mostrar los kernels que tenemos instalados en nuestro sistema:
{{{ $ dpkg --get-selections | grep linux-image }}}
Esto nos mostrara un listado parecido al siguiente:
{{{
linux-image-2.6-486 install
linux-image-2.6.22-3-486 install
linux-image-2.6.24-1-486 install
linux-image-2.6.25-2-486 install
linux-image-2.6.26-1-486 install
}}}
Desinstalar los núcleos que consideremos convenientes ejecutando la siguiente instrucción:
{{{ # aptitude purge [paquete] }}} [Ej:  linux-image-2.6.24-1-486]
NO desinstales el kernel linux-image-generic ya que es necesario para recibir actualizaciones del kernel.
! Quitar splash de arranque Ubuntu 8.04
# {{{$ sudo gedit /etc/modprobe.d/blacklist-framebuffer}}}. Comentamos la línea blacklist vesafb anteponiendo '#'.  Quedando de la siguiente forma: #blacklist vesafb. Guardamos y cerramos Gedit.
# ''{{{$ sudo gedit /etc/initramfs-tools/modules}}}. En el archivo que abre Gedit agregamos estas 2 líneas al final:
{{{
fbcon
vesafb
}}}
guardar''.
# {{{$ sudo update-initramfs -u}}}
# {{{$ sudo gedit /boot/grub/menu.lst}}} y borramos "splash" en la línea del kernel de Ubuntu. También en la misma línea podemos cambiar "quiet" por "services" o "verbose" para obtener más mensajes.
! Recovery password in Debian System
# on grub-boot prompt. press "e" to enter edit mode
# then press downarrow to reach the line that starts with "kernel" press "e" again
# at the end of this line type in "init=/bin/sh" or "/bin/bash"
# then press enter to make that change and press "b" to boot in a few seconds you will be on your "#" prompt
# only one step left "mount -o remount rw /" this step is necessary coz in this case root file system is mounted as read only.
# finally type "passwd" and you get the screen to change the password. And then type in "init 6" or "reboot"
! Acomodar los botones de las ventanas tipo mac
Con ''gconf-editor'':
/apps/metacity/general/button_layout
Cambiar {{{menu:minimize,maximize,close}}} por {{{minimize,maximize,close:menu}}}
! Formatear memorias USB
* Reparar
{{{ # dosfsck -vlwra /dev/sda1 }}}
{{{ # dosfsck -travV /dev/sda1 }}}
* Ver info del device
{{{# dosfsck -vl /dev/sda1}}}
* Dar formato al device
{{{ $ mkdosfs -F 16 /dev/sda1 }}}
{{{ $ mkdosfs -I -F 16 /dev/sda }}}
{{{ $ mkdosfs -n ecaldon -F 32 /dev/sda }}}
{{{ $ mkdosfs -n ecaldon -I /dev/sda [use este comando] }}}
! Comprimir archivos sqlite de Firefox
Con este pequeño tip podras ganar algo de velocidad y liberar un poco del tan preciado espacio del disco duro. Nota: requiere tener instalado sqlite ($ sudo apt-get intall sqlite3) y cerrado Firefox. Firefox utiliza ficheros con extension .sqlite (que son bases de datos) para almacenar los marcadores, paginas visitadas, etc… con el pequeño inconveniente de que no suele compactar estos ficheros, de manera que con el uso, van creciendo de tamaño. Para compactar estas bases de datos ejecuta el siguiente script:
{{{for f in ~/.mozilla/firefox/*/*.sqlite; do sqlite3 $f 'VACUUM;'; done}}}
! Instalar fuentes
* Nos situamos en la carpeta donde hemos descargado las fuentes .ttf
{{{
$ sudo mkdir -p /usr/share/fonts/truetype/custom
$ sudo mv -i *.ttf /usr/share/fonts/truetype/custom
$ sudo fc-cache -f -v
}}}
! Wireless tools for Linux
* ''ifrename'': ifrename allows to rename wireless network interfaces based on various static criteria to assign a consistent name to each interface. By default, interface names are dynamic, and each network adapter is assigned the first available name (eth0, eth1...) while the order network interfaces are created may vary. Now ifrename allows the user to decide what name a network interface will have. It can use a variety of selectors to match interface names to the network interfaces on the system, the most common selector is the interface MAC address.
* ''iwconfig'': iwconfig is used to display and change the parameters of the network interface which are specific to the wireless operation (e.g. interface name, frequency, SSID). It may also be used to display the wireless statistics (extracted from /proc/net/wireless).
<<<
{{{
$ iwconfig eth1
eth1     IEEE 802.11g  ESSID:"~OSU_PUB"  
         Mode:Managed  Frequency:2.427 ~GHz  Access Point: 00:0D:9D:C6:38:2D   
         Bit Rate=48 Mb/s   ~Tx-Power=20 dBm   Sensitivity=8/0  
         Retry limit:7   RTS thr:off   Fragment thr:off
         Power Management:off
         Link Quality=91/100  Signal level=-39 dBm  Noise level=-87 dBm
         Rx invalid nwid:0  Rx invalid crypt:860  Rx invalid frag:0
         Tx excessive retries:0  Invalid misc:39   Missed beacon:8
}}}
<<<
* ''iwevent'': iwevent displays wireless events generated by drivers and setting changes that are received through the ~RTNetlink socket. Each line displays the specific wireless event which describes what has happened on the specified wireless interface. It doesn't take any arguments.
* ''iwlist'': iwlist is used to scan for available wireless networks and display additional information about them that is not displayed by iwconfig. The main argument is used to select a category of information, iwlist displays in detailed form all information related to this category, including information already shown by iwconfig.
<<<
{{{
$ iwlist eth1 scan
eth1     Scan completed :
         Cell 01 - Address: 00:12:17:46:E6:AF
                   ESSID:"lookmanohands"
                   Protocol:IEEE 802.11bg
                   Mode:Master
                   Channel:1
                   Encryption key:off
                   Bit Rate:1 Mb/s
                   Bit Rate:2 Mb/s
                   Bit Rate:5.5 Mb/s
                   Bit Rate:6 Mb/s
                   Bit Rate:9 Mb/s
                   Bit Rate:11 Mb/s
                   Bit Rate:12 Mb/s
                   Bit Rate:18 Mb/s
                   Bit Rate:24 Mb/s
                   Bit Rate:36 Mb/s
                   Bit Rate:48 Mb/s
                   Bit Rate:54 Mb/s
                   Quality=82/100  Signal level=-48 dBm  
                   Extra: Last beacon: 36ms ago
}}}
<<<
* ''iwpriv'': it is used to manipulate parameters and setting of the Wireless Extension specific to each driver (as opposed to iwconfig which deals with generic ones).
* ''iwspy'': iwspy is used to monitor a set list of nodes and record the link quality of each of them. The information gathered is the same as that available in /proc/net/wireless: quality of the link, signal strength and noise level. This information is updated each time a new packet is received, so each address of the list adds some overhead in the driver.
! Ripear música de ~LastFm
* Instalar lastfmproxy, streamripper (Tener cuenta en Lastfm, obviamente)
{{{
# apt-get install streamripper
# apt-get install lastfmproxy
}}}
* Configurar el archivo de lastfmproxy (''/etc/lastfmproxy/config.py''), colocar el usuario y contraseña. Si hay proxy host, también se configura:
{{{
username = "edycop"
password = "*******"
}}}
* Iniciar el servicio de {{{lastfmproxy}}}, como superusuario.
* Iniciar el ripeo: {{{streamripper http://localhost:1881/lastfm.mp3}}}
* Nota: si acabas de crear una cuenta en last.fm, tiene que 'decirle' last.fm que tipo de música te gusta, iniciando el ~LastFMproxy hacia alguna de estas direcciones:
{{{
http://localhost:1881/lastfm://globaltags/rock
http://localhost:1881/lastfm://globaltags/dance
http://localhost:1881/lastfm://artist/Madonna/similarartists
http://localhost:1881/lastfm://artist/Coldplay/similarartists
}}}
! Proyectores,portátiles y Linux
{{{
$xrandr => muestra los modos de video tanto para el portátil (LVDS) como para el proyector (VGA) si esta conectado.
$xrandr --output VGA  --auto => sacar imagen a proyector

$ xrandr --outuput LVDS --mode 1280x800
$ xrandr --output VGA --mode 1024x768

$xrandr --output VGA --mode 1024x768 --pos 0x25 => proyectar una porción de la pantalla (0x25 => deja por fuera las primeas 25 lineas)

$ xset -dpms => deshabilita el ahorro de energía (mientras se hace la presentación) +dmps, para volver a habilitarlo
$ xset s off    => deshabilita el screensaver (on para habilitarlo)
}}}
! Resolución Pantalla
{{{
Section "Screen"
   Identifier "Screen0"
   Device     "Card0"
   Monitor    "Monitor0"
   DefaultDepth 24
   Subsection "Display"
      Depth       24
      Modes       "1024x768"
   EndSubsection
EndSection
}}}
! ATI Radeon
http://www.ubuntu-es.org/?q=node/126769
Driver: fglx (provativo)
Driver: radeon (libre)
! Configurar ~GRUB2 
Cambiar splah del grub, instalar:
{{{
$ sudo apt-get install grub2-splashimages
}}}
El directorio ''/usr/share/images/grub'' instala las imágenes.
Luego editar:
{{{
$sudo gedit /etc/grub.d/05_debian_theme
}}}
y cambiar:
{{{
for i in {/boot/grub,/usr/share/images/desktop-base}
/moreblue-orbit-grub.{png,tga} ; do
}}}
por
{{{
for i in {/boot/grub,/usr/share/images/grub}
/Lake_mapourika_NZ.{png,tga} ; do
}}}
Donde se cambia ''moreblue-orbit-grub'' por el nombre de la nueva imagen.
También se puede hacer un enlace a la ruta que busca por defecto:
{{{
$sudo ln -s /usr/share/images/grub/Lake_mapourika_NZ.tga /boot/grub/moreblue-orbit-grub.tga
}}}
Actualizar el grub:
{{{
$sudo update-grub2
}}}

Modificar el color del texto de los títulos:
{{{
$sudo gedit /etc/grub.d/05_debian_theme
}}}
Cambiar ... por:
{{{
if background_image `make_system_path_relative_to_its_root ${bg}` ; then
set color_normal=black/black
set color_highlight=magenta/black
else

if background_image `make_system_path_relative_to_its_root ${bg}` ; then
set color_normal=white/black
set color_highlight=white/dark-gray
else

$sudo update-grub2
}}}
! Recuperar ~GRUB2
* Usando una distribución Live:
{{{
$ sudo fdisk -l
$ sudo mount /dev/sda1 /mnt
$ sudo mount --bind /dev /mnt/dev
$ sudo chroot /mnt
# grub-install --recheck /dev/sda

En el que recuperó el Grub hacer:
$ sudo update-grub2

Si el boot esta una particion independiente:
$sudo mount /dev/sda2  /mnt/boot
}}}
* Segunda opcion:
{{{
$sudo fdisk -l
$sudo mount /dev/sda6 /mnt
$sudo grub-install --root-directory=/mnt/ /dev/sda

En el que recuperó el Grub hacer:
$sudo update-grub
}}}
* Con Super Grub Disk 0.9
{{{
$sudo grub-mkconfig (después que termine esto:)
$sudo grub-install /dev/sda (después que termine esto:)
$sudo update-grub
}}}
!configurar ~GRUB2
* The primary configuration file for changing menu display settings is ''/etc/default/grub''.
** Initial Default: ~GRUB_DEFAULT=0
** Timed display: ~GRUB_TIMEOUT=10
** Hidden: #~GRUB_HIDDEN_TIMEOUT=0
** ~GRUB_SAVEDEFAULT=true  If set to true this setting will automatically set the last selected OS from the menu as the default OS on the next boot.
** ~GRUB_DISABLE_OS_PROBER="true"  Enables/disables the os-prober check of other partitions for operating systems, including Windows, Linux, OSX and Hurd.
* ''/etc/grub.d/'' The files in this folder are read during execution of "update-grub" or "update-grub" commands.
** 05_debian_theme: Set background and text colors, themes
** 10_hurd Locates Hurd kernels
** 10_linux Locates Linux kernels based on results of the "lsb_release" command.
** 20_memtest86+: If the file /boot/memtest86+.bin exists, it is included as a menu item.
** 30_os-prober: Searches for Linux and OS's on other partitions and includes them in the menu.
** 40_custom: A template for adding custom menu entries which will be inserted into grub.cfg upon execution of the "update-grub" command. This and any other custom file must be made executable to allow importation into grub.cfg.
* Adding Entries to Grub 2  
** Automatically.: When "update-grub" or "update-grub" is executed, Grub 2 will search for linux kernels and other Operating Systems.
*** 10_linux searches for installed linux kernels on the same partition.
*** 30_os-prober searches for other operating systems.
** Custom User Entries (/etc/grub.d/40_custom)
*** [1]
* Omitting memtest86
** remove the "executable" bit from /etc/grub.d/20_memtest86+: {{{ chmod -x /etc/grub.d/20_memtest86+ }}}
* Booting ~LiveCD and Other ~ISOs 
** [1]
[1] http://ubuntuforums.org/showthread.php?t=1195275





> "El software es como la entropía: difícil de atrapar, no pesa, y cumple la Segunda Ley de la Termodinámica, es decir, tiende a incrementarse"
>     -- ''Norman Augustine''
&copy; Edwin Caldon
<?php
/***
! User settings
Edit these lines according to your need
***/
//{{{
$AUTHENTICATE_USER = true;	// true | false
$USERS = array(
	'UserName1'=>'Password1', 
	'UserName2'=>'Password2', 
	'UserName3'=>'Password3'); // set usernames and strong passwords
$DEBUG = false;				// true | false
$CLEAN_BACKUP = true; 		// during backuping a file, remove overmuch backups
$FOLD_JS = true; 			// if javascript files have been expanded during download the fold them
error_reporting(E_ERROR | E_WARNING | E_PARSE);
//}}}
/***
!Code
No change needed under
***/
//{{{

/***
 * store.php - upload a file in this directory
 * version :1.6.1 - 2007/08/01 - BidiX@BidiX.info
 * 
 * see : 
 *	http://tiddlywiki.bidi.info/#UploadPlugin for usage
 *	http://www.php.net/manual/en/features.file-upload.php 
 *		for details on uploading files
 * usage : 
 *	POST  
 *		UploadPlugin[backupDir=<backupdir>;user=<user>;password=<password>;uploadir=<uploaddir>;[debug=1];;]
 *		userfile <file>
 *	GET
 *
 * each external javascript file included by download.php is change by a reference (src=...)
 *
 * Revision history
 * V1.6.1 - 2007/08/01
 * Enhancement: Add javascript folding
 * V1.6.0 - 2007/05/17
 * Enhancement: Add backup management
 * V1.5.2 - 2007/02/13
 * Enhancement: Add optional debug option in client parameters
 * V1.5.1 - 2007/02/01
 * Enhancement: Check value of file_uploads in php.ini. Thanks to Didier Corbière
 * V1.5.0 - 2007/01/15
 * Correct: a bug in moving uploadFile in uploadDir thanks to DaniGutiérrez for reporting
 * Refactoring
 * V 1.4.3 - 2006/10/17 
 * Test if $filename.lock exists for GroupAuthoring compatibility
 * return mtime, destfile and backupfile after the message line
 * V 1.4.2 - 2006/10/12
 *  add error_reporting(E_PARSE);
 * v 1.4.1 - 2006/03/15
 *	add chmo 0664 on the uploadedFile
 * v 1.4 - 2006/02/23
 * 	add uploaddir option :  a path for the uploaded file relative to the current directory
 *	backupdir is a relative path
 *	make recusively directories if necessary for backupDir and uploadDir
 * v 1.3 - 2006/02/17
 *	presence and value of user are checked with $USERS Array (thanks to PauloSoares)
 * v 1.2 - 2006/02/12 
  *	POST  
 *		UploadPlugin[backupDir=<backupdir>;user=<user>;password=<password>;]
 *		userfile <file>
*	if $AUTHENTICATE_USER
 *		presence and value of user and password are checked with 
 *		$USER and $PASSWORD
 * v 1.1 - 2005/12/23 
 *	POST  UploadPlugin[backupDir=<backupdir>]  userfile <file>
 * v 1.0 - 2005/12/12 
 *	POST userfile <file>
 *
 * Copyright (c) BidiX@BidiX.info 2005-2007
 ***/
//}}}

//{{{

if ($_SERVER['REQUEST_METHOD'] == 'GET') {
	/*
	 * GET Request
	 */
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html;charset=utf-8" >
		<title>BidiX.info - TiddlyWiki UploadPlugin - Store script</title>
	</head>
	<body>
		<p>
		<p>store.php V 1.6.1
		<p>BidiX@BidiX.info
		<p>&nbsp;</p>
		<p>&nbsp;</p>
		<p>&nbsp;</p>
		<p align="center">This page is designed to upload a <a href="http://www.tiddlywiki.com/">TiddlyWiki<a>.</p>
		<p align="center">for details see : <a href="http://TiddlyWiki.bidix.info/#HowToUpload">TiddlyWiki.bidix.info/#HowToUpload<a>.</p>	
	</body>
</html>
<?php
exit;
}

/*
 * POST Request
 */
	 
// Recursive mkdir
function mkdirs($dir) {
	if( is_null($dir) || $dir === "" ){
		return false;
	}
	if( is_dir($dir) || $dir === "/" ){
		return true;
	}
	if( mkdirs(dirname($dir)) ){
		return mkdir($dir);
	}
	return false;
}

function toExit() {
	global $DEBUG, $filename, $backupFilename, $options;
	if ($DEBUG) {
		echo ("\nHere is some debugging info : \n");
		echo("\$filename : $filename \n");
		echo("\$backupFilename : $backupFilename \n");
		print ("\$_FILES : \n");
		print_r($_FILES);
		print ("\$options : \n");
		print_r($options);
}
exit;
}

function ParseTWFileDate($s) {
	// parse date element
	preg_match ( '/^(\d\d\d\d)(\d\d)(\d\d)\.(\d\d)(\d\d)(\d\d)/', $s , $m );
	// make a date object
	$d = mktime($m[4], $m[5], $m[6], $m[2], $m[3], $m[1]);
	// get the week number
	$w = date("W",$d);

	return array(
		'year' => $m[1], 
		'mon' => $m[2], 
		'mday' => $m[3], 
		'hours' => $m[4], 
		'minutes' => $m[5], 
		'seconds' => $m[6], 
		'week' => $w);
}

function cleanFiles($dirname, $prefix) {
	$now = getdate();
	$now['week'] = date("W");

	$hours = Array();
	$mday = Array();
	$year = Array();
	
	$toDelete = Array();

	// need files recent first
	$files = Array();
	($dir = opendir($dirname)) || die ("can't open dir '$dirname'");
	while (false !== ($file = readdir($dir))) {
		if (preg_match("/^$prefix/", $file))
        array_push($files, $file);
    }
	$files = array_reverse($files);
	
	// decides for each file
	foreach ($files as $file) {
		$fileTime = ParseTWFileDate(substr($file,strpos($file, '.')+1,strrpos($file,'.') - strpos($file, '.') -1));
		if (($now['year'] == $fileTime['year']) &&
			($now['mon'] == $fileTime['mon']) &&
			($now['mday'] == $fileTime['mday']) &&
			($now['hours'] == $fileTime['hours']))
				continue;
		elseif (($now['year'] == $fileTime['year']) &&
			($now['mon'] == $fileTime['mon']) &&
			($now['mday'] == $fileTime['mday'])) {
				if (isset($hours[$fileTime['hours']]))
					array_push($toDelete, $file);
				else 
					$hours[$fileTime['hours']] = true;
			}
		elseif 	(($now['year'] == $fileTime['year']) &&
			($now['mon'] == $fileTime['mon'])) {
				if (isset($mday[$fileTime['mday']]))
					array_push($toDelete, $file);
				else
					$mday[$fileTime['mday']] = true;
			}
		else {
			if (isset($year[$fileTime['year']][$fileTime['mon']]))
				array_push($toDelete, $file);
			else
				$year[$fileTime['year']][$fileTime['mon']] = true;
		}
	}
	return $toDelete;
}

function replaceJSContentIn($content) {
	if (preg_match ("/(.*?)<!--DOWNLOAD-INSERT-FILE:\"(.*?)\"--><script\s+type=\"text\/javascript\">(.*)/ms", $content,$matches)) {
		$front = $matches[1];
		$js = $matches[2];
		$tail = $matches[3];
		if (preg_match ("/<\/script>(.*)/ms", $tail,$matches2)) {		
			$tail = $matches2[1];
		}
		$jsContent = "<script type=\"text/javascript\" src=\"$js\"></script>";
		$tail = replaceJSContentIn($tail);
		return($front.$jsContent.$tail);
	}
	else
		return $content;
}

// Check if file_uploads is active in php config
if (ini_get('file_uploads') != '1') {
   echo "Error : File upload is not active in php.ini\n";
   toExit();
}

// var definitions
$uploadDir = './';
$uploadDirError = false;
$backupError = false;
$optionStr = $_POST['UploadPlugin'];
$optionArr=explode(';',$optionStr);
$options = array();
$backupFilename = '';
$filename = $_FILES['userfile']['name'];
$destfile = $filename;

// get options
foreach($optionArr as $o) {
	list($key, $value) = split('=', $o);
	$options[$key] = $value;
}

// debug activated by client
if ($options['debug'] == 1) {
	$DEBUG = true;
}

// authenticate User
if (($AUTHENTICATE_USER)
	&& ((!$options['user']) || (!$options['password']) || ($USERS[$options['user']] != $options['password']))) {
	echo "Error : UserName or Password do not match \n";
	echo "UserName : [".$options['user']. "] Password : [". $options['password'] . "]\n";
	toExit();
}



// make uploadDir
if ($options['uploaddir']) {
	$uploadDir = $options['uploaddir'];
	// path control for uploadDir   
    if (!(strpos($uploadDir, "../") === false)) {
        echo "Error: directory to upload specifies a parent folder";
        toExit();
	}
	if (! is_dir($uploadDir)) {
		mkdirs($uploadDir);
	}
	if (! is_dir($uploadDir)) {
		echo "UploadDirError : $uploadDirError - File NOT uploaded !\n";
		toExit();
	}
	if ($uploadDir{strlen($uploadDir)-1} != '/') {
		$uploadDir = $uploadDir . '/';
	}
}
$destfile = $uploadDir . $filename;

// backup existing file
if (file_exists($destfile) && ($options['backupDir'])) {
	if (! is_dir($options['backupDir'])) {
		mkdirs($options['backupDir']);
		if (! is_dir($options['backupDir'])) {
			$backupError = "backup mkdir error";
		}
	}
	$backupFilename = $options['backupDir'].'/'.substr($filename, 0, strrpos($filename, '.'))
				.date('.Ymd.His').substr($filename,strrpos($filename,'.'));
	rename($destfile, $backupFilename) or ($backupError = "rename error");
	// remove overmuch backup
	if ($CLEAN_BACKUP) {
		$toDelete = cleanFiles($options['backupDir'], substr($filename, 0, strrpos($filename, '.')));
		foreach ($toDelete as $file) {
			$f = $options['backupDir'].'/'.$file;
			if($DEBUG) {
				echo "delete : ".$options['backupDir'].'/'.$file."\n";
			}
			unlink($options['backupDir'].'/'.$file);
		}
	}
}

// move uploaded file to uploadDir
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $destfile)) {
	if ($FOLD_JS) {
		// rewrite the file to replace JS content
		$fileContent = file_get_contents ($destfile);
		$fileContent = replaceJSContentIn($fileContent);
		if (!$handle = fopen($destfile, 'w')) {
	         echo "Cannot open file ($destfile)";
	         exit;
	    }
	    if (fwrite($handle, $fileContent) === FALSE) {
	        echo "Cannot write to file ($destfile)";
	        exit;
	    }
	    fclose($handle);
	}
    
	chmod($destfile, 0644);
	if($DEBUG) {
		echo "Debug mode \n\n";
	}
	if (!$backupError) {
		echo "0 - File successfully loaded in " .$destfile. "\n";
	} else {
		echo "BackupError : $backupError - File successfully loaded in " .$destfile. "\n";
	}
	echo("destfile:$destfile \n");
	if (($backupFilename) && (!$backupError)) {
		echo "backupfile:$backupFilename\n";
	}
	$mtime = filemtime($destfile);
	echo("mtime:$mtime");
} 
else {
	echo "Error : " . $_FILES['error']." - File NOT uploaded !\n";

}
toExit();
//}}}
?>
<?php
/***
! User settings
Edit these lines according to your need
***/
//{{{
$AUTHENTICATE_USER = true;	// true | false
$USERS = array(
	'UserName1'=>'Password1', 
	'UserName2'=>'Password2', 
	'UserName3'=>'Password3'); // set usernames and strong passwords
$DEBUG = false;				// true | false
$CLEAN_BACKUP = true; 		// during backuping a file, remove overmuch backups
error_reporting(E_ERROR | E_WARNING | E_PARSE);
//}}}
/***
!Code
No change needed under
***/
//{{{

/***
 * storeTiddler.php - upload a tiddler to a TiddlyWiki file in this directory
 * version: 1.2.1 - 2008-05-06 - BidiX@BidiX.info
 * 
 * tiddler is POST as <FORM> with :
 *	FORM = 
 *		title=<the title of the tiddler>
 *		tiddler=<result of externalizeTiddler() : the div in StoreArea format>
 *		[oldTitle=<the previous title of the tiddler>] 
 *		[fileName=<tiddlyWiki filename>] (default: index.html)
 *		[backupDir=<backupdir>] (default: .)
 *		[user=<user>] (no default)
 *		[password=<password>] (no default)
 *		[uploadir=<uploaddir>] (default: .)
 *		[debug=1]] (default: false)
 * see : 
 *	http://tiddlywiki.bidi.info/#UploadTiddlerPlugin for usage
 *  http://tiddlywiki.bidi.info/#UploadPlugin for parameter descriptions
 * usage : 
 *	POST FORM
 *		Update <tiddler> in <fileName> TiddlyWiki
 *	GET
 *		Display a form for 
 *
 * Revision history
 * V1.2.1 - 2008-05-06
 * bug correction : Filename is always 'index.html'. The fileName variable isn't used to initialize tiddlyWiki filename. 
 * V1.2.0 - 2008-03-23
 * Exclusive lock to serialize rewrite of file  
 * V1.1.0 - 2008/03/05
 * Delete tiddler with oldTitle
 * V1.0.0 - 2008/02/24
 * First public Version
 * V0.3.0 - 2008/02/23
 * minor adjustments
 * V0.2.0 - 2008/02/23
 * Correction bug on large regex
 * V0.1.0 - 2008/02/09
 * Initial: First working version
 * V0.0.1 - 2008/02/02
 * Initial: Proof Of Concept
 *
 * Copyright (c) BidiX@BidiX.info 2005-2008
 ***/
//}}}

//{{{

if ($_SERVER['REQUEST_METHOD'] == 'GET') {
	/*
	 * GET Request
	 */
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html;charset=utf-8" >
		<title>BidiX.info - TiddlyWiki UploadTiddlerPlugin - Store script</title>
	</head>
	<body>
		<p>
		<p>storeTiddler.php V 1.2.0
		<p>BidiX@BidiX.info
		<p>&nbsp;</p>
		<p>&nbsp;</p>
		<p>&nbsp;</p>
		<p align="center">This page is designed to upload a <a href="http://www.tiddlywiki.com/#Tiddler">Tiddler<a>.</p>
		<p align="center">for details see : <a href="http://TiddlyWiki.bidix.info/#HowToUpload">TiddlyWiki.bidix.info/#HowToUpload<a>.</p>
		<hr>
		<form action="storeTiddler.php" method=POST>
			<center>
				<table>
					<tr>
						<td align=RIGHT>Title:</td>
						<td><input type=TEXT name="title" size=80></td>
					</tr>
					<tr>
						<td align=RIGHT>Tiddler (in StoreArea format):</td>
						<td><TEXTAREA NAME="tiddler" COLS=80 ROWS=10>
&lt;div title=&quot;New Tiddler&quot; modifier=&quot;BidiX&quot; created=&quot;200802161401&quot; tags=&quot;test&quot; changecount=&quot;1&quot;&gt;
&lt;pre&gt;Type the text for &#x27;New Tiddler&#x27;&lt;/pre&gt;
&lt;/div&gt;
						</TEXTAREA></td>
					</tr>
					<tr>
						<td align=RIGHT>Old Title:</td>
						<td><input type=TEXT name="oldTitle" size=80 value=''></td>
					</tr>
					<tr>
						<td align=RIGHT>fileName:</td>
						<td><input type=TEXT name="fileName" size=80></td>
					</tr>
					<tr>
						<td align=RIGHT>backupDir:</td>
						<td><input type=TEXT name="backupDir" size=80></td>
					</tr>
					<tr>
						<td align=RIGHT>user:</td>
						<td><input type=TEXT name="user" size=80></td>
					</tr>
					<tr>
						<td align=RIGHT>password:</td>
						<td><input type=TEXT name="password" size=80></td>
					</tr>
					<tr>
						<td align=RIGHT>uploadir:</td>
						<td><input type=TEXT name="uploadir" size=80></td>
					</tr>
					<tr>
						<td align=RIGHT>debug:</td>
						<td><input type=TEXT name="debug" size=80 value=1></td>
					</tr>
				</table>
				<input type=SUBMIT align="CENTER" value="Upload tiddler">
			</center>
		</form>
	</body>
</html>
<?php
exit;
}

/*
 * POST Request
 */

/*
 * Functions included from store.php
 */

	// Recursive mkdir
	function mkdirs($dir) {
		if( is_null($dir) || $dir === "" ){
			return false;
		}
		if( is_dir($dir) || $dir === "/" ){
			return true;
		}
		if( mkdirs(dirname($dir)) ){
			return mkdir($dir);
		}
		return false;
	}

	function toExit() {
		global $DEBUG, $filename, $backupFilename, $options;
		if ($DEBUG) {
			echo ("\nHere is some debugging info : \n");
			echo("\$filename : $filename \n");
			echo("\$backupFilename : $backupFilename \n");
			print ("\$_FILES : \n");
			print_r($_FILES);
			print ("\$options : \n");
			print_r($options);
	}
	exit;
	}

	function ParseTWFileDate($s) {
		// parse date element
		preg_match ( '/^(\d\d\d\d)(\d\d)(\d\d)\.(\d\d)(\d\d)(\d\d)/', $s , $m );
		// make a date object
		$d = mktime($m[4], $m[5], $m[6], $m[2], $m[3], $m[1]);
		// get the week number
		$w = date("W",$d);

		return array(
			'year' => $m[1], 
			'mon' => $m[2], 
			'mday' => $m[3], 
			'hours' => $m[4], 
			'minutes' => $m[5], 
			'seconds' => $m[6], 
			'week' => $w);
	}

	function cleanFiles($dirname, $prefix) {
		$now = getdate();
		$now['week'] = date("W");

		$hours = Array();
		$mday = Array();
		$year = Array();

		$toDelete = Array();

		// need files recent first
		$files = Array();
		($dir = opendir($dirname)) || die ("can't open dir '$dirname'");
		while (false !== ($file = readdir($dir))) {
			if (preg_match("/^$prefix/", $file))
	        array_push($files, $file);
	    }
		$files = array_reverse($files);

		// decides for each file
		foreach ($files as $file) {
			$fileTime = ParseTWFileDate(substr($file,strpos($file, '.')+1,strrpos($file,'.') - strpos($file, '.') -1));
			if (($now['year'] == $fileTime['year']) &&
				($now['mon'] == $fileTime['mon']) &&
				($now['mday'] == $fileTime['mday']) &&
				($now['hours'] == $fileTime['hours']))
					continue;
			elseif (($now['year'] == $fileTime['year']) &&
				($now['mon'] == $fileTime['mon']) &&
				($now['mday'] == $fileTime['mday'])) {
					if (isset($hours[$fileTime['hours']]))
						array_push($toDelete, $file);
					else 
						$hours[$fileTime['hours']] = true;
				}
			elseif 	(($now['year'] == $fileTime['year']) &&
				($now['mon'] == $fileTime['mon'])) {
					if (isset($mday[$fileTime['mday']]))
						array_push($toDelete, $file);
					else
						$mday[$fileTime['mday']] = true;
				}
			else {
				if (isset($year[$fileTime['year']][$fileTime['mon']]))
					array_push($toDelete, $file);
				else
					$year[$fileTime['year']][$fileTime['mon']] = true;
			}
		}
		return $toDelete;
	}

/*
 * End Functions included from store.php
 */

/*
 * parse and print a TiddlyWiki file
 */

Function readTiddlyWiki($tw) {	
	if (preg_match ("/(.*?<div id=\"storeArea\">.*?)(<div.*)/ms", $tw,$matches)) {
		$head = $matches[1];
		$h = $matches[2];
		$tiddlers = array();
		while (preg_match ("/(.*?)(<div title=\"(.*?)\".*?<\/div>)(.*)/ms", $h,$matches)) {
			$h=$matches[4];
			$tiddlers[$matches[3]] = $matches[2];
		}
		$tail = ltrim($h);
	}
	else {
		echo("The file '$file' isn't a valid TiddlyWiki");
		toExit();
	}
	return array($head, $tiddlers ,$tail);
}

Function writeTiddlyWiki($head,$tiddlers,$tail) {
	$content = $head;
	sort($tiddlers);
	foreach ($tiddlers as $t => $c) {
		$content .= $c . "\n";
	}
	$content .= $tail;
	return $content;
}

// var definitions
$uploadDir = './';
$uploadDirError = false;
$backupError = false;
$backupFilename = '';
$filename = "index.html";
$destfile = $filename;

$options = $_POST; // for store.php name compatibility

// debug activated by client
if ($options['debug'] == 1) {
	$DEBUG = true;
}


// authenticate User
if (($AUTHENTICATE_USER)
	&& ((!$options['user']) || (!$options['password']) || ($USERS[$options['user']] != $options['password']))) {
	echo "Error : UserName or Password do not match \n";
	echo "UserName : [".$options['user']. "] Password : [". $options['password'] . "]\n";
	toExit();
}


if ($options['fileName'])
	$filename = $options['fileName'];


// make uploadDir
if ($options['uploaddir']) {
	$uploadDir = $options['uploaddir'];
	// path control for uploadDir   
    if (!(strpos($uploadDir, "../") === false)) {
        echo "Error: directory to upload specifies a parent folder";
        toExit();
	}
	if (! is_dir($uploadDir)) {
		mkdirs($uploadDir);
	}
	if (! is_dir($uploadDir)) {
		echo "UploadDirError : $uploadDirError - File NOT uploaded !\n";
		toExit();
	}
	if ($uploadDir{strlen($uploadDir)-1} != '/') {
		$uploadDir = $uploadDir . '/';
	}
}
$destfile = $uploadDir . $filename;

// backup existing file
if (file_exists($destfile) && ($options['backupDir'])) {
	if (! is_dir($options['backupDir'])) {
		mkdirs($options['backupDir']);
		if (! is_dir($options['backupDir'])) {
			$backupError = "backup mkdir error";
		}
	}
	$backupFilename = $options['backupDir'].'/'.substr($filename, 0, strrpos($filename, '.'))
				.date('.Ymd.His').substr($filename,strrpos($filename,'.'));
	copy($destfile, $backupFilename) or ($backupError = "rename error");
	// remove overmuch backup
	if ($CLEAN_BACKUP) {
		$toDelete = cleanFiles($options['backupDir'], substr($filename, 0, strrpos($filename, '.')));
		foreach ($toDelete as $file) {
			$f = $options['backupDir'].'/'.$file;
			if($DEBUG) {
				echo "delete : ".$options['backupDir'].'/'.$file."\n";
			}
			unlink($options['backupDir'].'/'.$file);
		}
	}
}


if (file_exists($destfile)) {
	$f = fopen($destfile,'r+');
	if (flock($f, LOCK_EX)) { 
		while (!feof($f)) {
		    $contents .= fread($f, 8192);
		}
		list($head,$tiddlers,$tail) = readTiddlyWiki($contents);
		$title = $_POST['title'];
		$oldTitle = $_POST['oldTitle'];
		if ($oldTitle && ($title != $oldTitle)) {
			unset($tiddlers[$oldTitle]);
		}
		$tiddlers[$title] = stripslashes($_POST['tiddler']);
		$contents = writeTiddlyWiki($head,$tiddlers,$tail);
		if (!rewind($f)) {
			echo("rewind error");
			toExit();
		} 
		if (!ftruncate($f, 0)) {
			echo("ftruncate error");
			toExit();
		};
		if (!fwrite($f, $contents)) {
			echo("fwrite error");
			toExit();			
		}
		fclose($f);	// fclose also unlock the file
		if($DEBUG) {
			echo "Debug mode \n\n";
		}
		if (!$backupError) {
			echo "0 - Tiddler successfully updated in " .$destfile. "\n";
		} else {
			echo "BackupError : $backupError - Tiddler successfully updated in " .$destfile. "\n";
		}
		echo("destfile:$destfile \n");
		if (($backupFilename) && (!$backupError)) {
			echo "backupfile:$backupFilename\n";
		}
		$mtime = filemtime($destfile);
		echo("mtime:$mtime");
	
	}
	else {
		echo "Error : '" . $filename . "' couldn't be locked - File NOT updated !\n";
	}
}
else {
	echo "Error : '" . $filename . "' doesn't exist - File NOT updated !\n";
}
toExit();

?>
~TiddlyWiki has now been translated into over 20 languages - see the [[translation page at TiddlyWiki.org|http://trac.tiddlywiki.org/wiki/Translations]] for more details.