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
<!--{{{-->
<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>>
<<importTiddlers>>
<!--{{{-->
<link rel='alternate' type='application/rss+xml' title='RSS' href='index.xml' />
<!--}}}-->
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]]
<!--{{{-->
<div class='header' role='banner' 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' role='navigation' refresh='content' tiddler='MainMenu'></div>
<div id='sidebar'>
<div id='sidebarOptions' role='navigation' refresh='content' tiddler='SideBarOptions'></div>
<div id='sidebarTabs' role='complementary' refresh='content' force='true' tiddler='SideBarTabs'></div>
</div>
<div id='displayArea' role='main'>
<div id='messageArea'></div>
<div id='tiddlerDisplay'></div>
</div>
<!--}}}-->
/*{{{*/
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]];}

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

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

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

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

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

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

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

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

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

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

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

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

hr {height:1px;}

a {text-decoration:none;}

dt {font-weight:bold;}

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

.txtOptionInput {width:11em;}

#contentWrapper .chkOptionInput {border:0;}

.externalLink {text-decoration:underline;}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

.whenBackstage {display:none;}
.backstageVisible .whenBackstage {display:block;}
/*}}}*/
/***
StyleSheet for use when a translation requires any css style changes.
This StyleSheet can be used directly by languages such as Chinese, Japanese and Korean which need larger font sizes.
***/
/*{{{*/
body {font-size:0.8em;}
#sidebarOptions {font-size:1.05em;}
#sidebarOptions a {font-style:normal;}
#sidebarOptions .sliderPanel {font-size:0.95em;}
.subtitle {font-size:0.8em;}
.viewer table.listView {font-size:0.95em;}
/*}}}*/
/*{{{*/
@media print {
#mainMenu, #sidebar, #messageArea, .toolbar, #backstageButton, #backstageArea {display: none !important;}
#displayArea {margin: 1em 1em 0em;}
noscript {display:none;} /* Fixes a feature in Firefox 1.5.0.2 where print preview displays the noscript content */
}
/*}}}*/
<!--{{{-->
<div class='toolbar' role='navigation' 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>
<!--}}}-->
|''Type:''|file|
|''URL:''|http://www.tiddlytools.com|
|''Workspace:''|(default)|

This tiddler was automatically created to record the details of this server
Bonjour et bienvenue sur ce site, il contient des arcticles publiés d'une base de connaissance personnelle, construite au fil du temps pour mes besoins professionnels ou de formation. Cette base a vocation à traiter tout ce qui touche aux Systèmes d'Information en général et à la géomatique en particulier, et plus précisément l'utilisation des logiciels de SIG libre tels que QGis ou Grass et du système Linux. Si ça peut servir à d'autres... 

Le site est en cours de création, pour le moment il ne permet pas les commentaires, mais n'hésitez pas à [[me contacter|mailto:nico.amb@laposte.net]].



American Standard Code for Information Interchange

Jeu de 128 caractères (7 bits) constituant la norme de codage de caractère la plus ancienne devenue un standard international. Elle contient tous les caractères nécessaires pour écrire en anglais.
!Objectif
Affecter des données associées à des polygones vectoriels (communes, parcelles, ...) aux carreaux d'une grille vectorielle. La technique du carroyage permet de :
*s'affranchir des zonages administratifs ou métier,
*combiner au carreau des données sources hétérogènes en terme de nature ou de précision géographique,
*traiter certaines problématique de confidentialité des données, comme le secret statistique ou les données personnelles. Le découpage d'objets vectoriels par une grille peut suffire à rendre impossible de retrouver la donnée source, l'application de techniques complémentaires de [lissage] peut s'avérer nécessaire. 
Dans tous les cas attention à bien fournir une clé de lecture au pixel correcte.

2 cas peuvent se présenter lors du carroyage :
*désagrégation : le polygone a carroyer est plus gros que le carreau,
*aggrégation : le polygone a carroyer est plus petit que le carreau.

Le choix de la résolution de la grille dépend de plusieurs facteurs : taille et précision des polygones sources, échelle d'exploitation de la grille, ...

!Principe de la méthode
#Les polygones sont rasterisés, c'est-à-dire pixelisés (taille de pixel&nbsp;: 10m de côté), chaque pixel conserve l'identifiant du polygone d'origine.
#Le croisement raster des polygones pixelisés et de la grille permet de déterminer, pour chaque carreau, le nombre de pixels (donc la surface) de chaque polygone qu'il recouvre. On obtient une table de croisement contenant une ligne par combinaison parcelle/carreau, précisant sa surface et les identifiants du polygone et du carreau.
#À partir des données sources associées aux polygones et de la table de croisement (c), on calcule au carreau, via un logiciel de traitement de donnée adapté, les indicateurs souhaités.

L'emploi de la méthode raster permet de raccourcir drastiquement les temps de traitement en conservant une précision équivalente. La résolution (taille du pixel) génère plus ou moins de déformation des polygones sources. Elle doit être idéalement fixée pour que la déformation induite soit inférieure à la précision de la donnée géographique source (ex. une résolution de 10m sur un objet géographique de précision d'ordre décamétrique n'induit pas de déformation). De plus la surface calculée en pixel ne doit servir qu'à calculer une proportion de polygone dans un carreau, cette proportion servira a ventiler la donnée source dans le carreau au prorata de sa superficie. Enfin, si on applique derrière des techniques de lissage, l'effet de la pixellisation sera là aussi probablement nul.


!Données sources, outils et prérequis
*donnée à carroyer : RPG (pour registre parcellaire graphique, le fichier des déclarations graphiques des agriculteurs au titre des aides de la PAC - politique agricole commune)
**fichier shape {{{RPG.shp}}}
*outils
**Logiciel Grass 6.4
**pc portable corei5 ram 4Go, OS Archlinux64

Grass est un logiciel libre et gratuit. Il est par ailleurs intégré à QGis via un plugin spécifique permettant d'effectuer l'ensemble des manipulation décrites ci-dessous sans avoir à maitriser l'interface Grass.

Les prérequis sont donc l'utilisation de Grass ou l'utilisation de QGis avec le plugin Grass, installés sur un pc de bureau standard.


!Création et paramétrage du jeu de données GRASS
Cette séquence décrit les manipulations a effectuer sont QGis-Grass. Elles sont sensiblement identiques sous Grass.
*Barre d'outils GRASS : {{{Nouveau jeu de données}}}
*Géodatabase GRASS : indiquer le chemin de la base de donnée contenant toutes les données géographiques GRASS du projet. Ici on crée un sous-répertoire {{{grassdata}}} dans le répertoire de données du projet) : {{{projet/data/grassdata}}}
*Secteur GRASS : {{{Créer un nouveau Secteur}}}
**appelez-le du nom du secteur géographique de travail ou du projet
**exemple :  le nom du projet + numéros de version majeure et mineure : {{{indicateurs_V0v1}}}
*Projection : dans notre cas {{{RGF93 / Lambert-93 EPSG:2154}}} (choix ne permettant pas la compatibilité totale INSPIRE)
*Région GRASS par défaut : cette étape est fondamentale, c'est là qu'on va fixer l'emprise de la zone de travail pour tous nos traitements
**point d'origine : si on veut être compatible avec une grille prééxistante, le point d'origine doit coincider avec l'une de ses intersections
**résolution : doit être déterminé selon la précision des données de départ, l'objectif, et si on veut être compatible avec une grille de référence pré-existante, le pas de la grille la plus grande doit être un multiple de la grille la plus petite de manière à ce que chacun de ces noeuds corresponde à un noeud de la grille la plus grande.

*dans notre cas, pour Midi-Pyrénées, pour une rasterisation du RPG à 10m (donc résolution = 10m) et une grille à 1km :
{{{
Nord : 6446700
Sud : 6156700
Est : 746000
Ouest : 423000
}}}
**le nombre de lignes et de colonnes, déduits de l'emprise et de la résolution, doit pouvoir être divisé par 100 (en restant entier) pour pouvoir par la suite créer une grille entière de pas 1km à partir d'une région de résolution 10m.
*Jeu de données (mapset) : dans un secteur, on peut avoir autant de jeux de données que d'utilisateurs. Dans notre cas on ne créera qu'un seul jeu de données : {{PRINCIPAL}} (//remarque : GRASS dans QGis oblige à la création de ce jeu de données, sous GRASS directement nous pourrions utiliser le jeu de données par défaut nommé {{{PERMANENT}}}//)
**{{{Finish}}}
*Barre d'outils GRASS : {{{Paramètres de Région GRASS}}} : fixer la largeur et heuteur de cellule (= résolution = dans notre cas 10), le nombre de colonnes et de ligne doit s'ajuster automatiquement.
*la région GRASS se métérialise par un carré rouge vide dans la fenêtre carte de QGis.

!Création de la grille
*grille vectorielle au pas de 1km : utiliser {{{v.mkgrid.region}}} en indiquant le nombre de colonnes et de ligne de la région divisé par 100 dans notre cas pour obtenir un pas de 1 km, soit 323c * 290l. 

La ligne de commande générée par l'interface graphique GRASS est :
{{{
v.mkgrid map="v_grid_1km" grid=290,323 position="region" angle=0 breaks=3
}}}
Un identifiant "cat" est généré automatiquement.

!Rasterisation de la grille
{{{
v.to.rast input=v_grid_1km use=cat output=r_grid_1km
}}}
L'identifiant "cat" est utilisé comme valeur attribuée au pixel.

!Importation et rasterisation du RPG

nombre de polygones : 602769
*importation du RPG au format shape (attention projection de la couche en entrée doit être celle de la projection du secteur)
temps indicatifs : 50 minutes.
{{{
v.in.ogr dsn=projet/Composants/RPG.shp output=v_RPG
}}}


*rasterisation du rpg en gardant l'identifiant ilot comme label
temps indicatifs : 90 minutes.
{{{
v.to.rast input=v_RPG output=r_RPG use=cat labelcolumn=RPG_IDILOT
}}}



!Croisement RPG x grille
La commande {{{r.stats}}} permet de croiser des fichiers raster et de donner la surface des superpositions par identifiant de pixel (cat). Dans notre cas cela permet d'obtenir la surface pour chaque combinaison différente carreau/ilot.
temps indicatifs : 50 minutes
{{{
r.stats -aln input=r_RPG_065,r_grid_1km output=~/gtie/phase3_production/essais/Production/xGEO_065.csv fs=";"
}}}

Le fichier xGEO est créé avec 5 champs, sans ligne d'en-tête :
*champ 1 : l'identifiant (cat) du polygone RPG de la combinaison
*champ 2 : le label, dans notre cas l'identifiant "métier" du polygone RPG (RPG_IDILOT) de la combinaison
*champ 3 : l'identifiant (cat) du polygone grille de la combinaison
*champ 4 : le label, dans notre cas vide, du polygone grille de la combinaison
*champ 4 : la surface en m2


Cette manipulation revient à créer un raster unique à partir de plusieurs rasters existants et typiquement couvrant des zones adjacentes ou se superposant partiellement, via la commande r.patch de Grass.

!Principe
La commande r.patch permet de créer un nouveau raster à partir de multiples rasters existant, en complétant les valeurs nulles, vides (no data) et éventuellement égale à 0.
Nous allons donc créer un MNT régional unique pour Midi-Pyrénées à partir des MNT départementaux récupérés sur le site de l'IGN.

!s'assurer de l'alignement correct des mnt
A priori les modèles numériques de terrain de l'IGN sont correctement alignés, c'est-à-dire que les arrêtes carreaux en superposition ou adjacence se confondent parfaitement.
Sinon il est possible d'ajuster les données adjacentes via v.mkgrid //(non testé)//

!Définir l'emprise et la résolution
A partir de l'emprise de tous les MNT d'entrée, et en respectant leur résolution de départ (25m).
{{{
g.region rast=MNT09@PERMANENT,MNT12@PERMANENT,MNT31@PERMANENT,MNT32@PERMANENT,MNT46@PERMANENT,MNT65@PERMANENT,MNT81@PERMANENT,MNT82@PERMANENT res=25 res3=25 align=MNT09@PERMANENT
}}}

!Création du MNT régional
{{{
r.patch input=MNT09@PERMANENT,MNT12@PERMANENT,MNT31@PERMANENT,MNT32@PERMANENT,MNT46@PERMANENT,MNT65@PERMANENT,MNT81@PERMANENT,MNT82@PERMANENT output=MNT_R73
}}}



Ce tutoriel montre comment créer une nouvelle image géoréférencée (c-a-d un nouveau raster) à partir de la fenêtre carte QGIS. C'est particulièrement pratique pour extraire des fonds de cartes type OpenStreetMap, Google ou Bing affichés très simplement via l'extension OpenLayers.

Limites : cette méthode ne permet pas de recréer ou dupliquer une couche raster identique à l'originale, ni même d'en extraire une partie en conservant ses caractéristiques. L'image obtenue est limitée à l'étendue affichée dans QGis et sa résolution est liée à l'affichage de votre station de travail.

;1. Configurer l'affichage de la carte
Cette section renvoie à l'utilisation de base de [[QGis]]. Dans cet exemple j'affiche la couche OCM (OpenCyclingMap) d'OpenStreetMap.
[img[bdc2_IMG/qgis_extract_raster1.jpg]]

;2. Configuer le SCR (Système de Coordonnées de Référence)
Le futur raster sera géoréférencé selon le SCR du projet (projection à la volée activée), attention à bien le spécifier ici !
*menu @@Préférences@@ / @@Propriétés du projet@@ / onglet @@Système de coordonnées de référence (SCR)@@
[img[bdc2_IMG/qgis_extract_raster2.jpg]]
**dans cet exemple : utilisation du SCR RGF93 / Lambert-93 (EPSG:2154)
**astuce : toujours utiliser le code EPSG (référence unique) dans @@Filtre@@ pour s'assurer du SCR
**sélectionner (surlignage bleu) et cliquer sur @@OK@@
*astuce : en bas à droite de l'écran, le code EPSG du projet est affiché à côté d'une icone sphérique sur laquelle on peut cliquer pour accéder directement à l'onglet SCR des propriétés du projet. Si l'icône est grisée, cela signifie que la projection à la volée est désactivée
[img[bdc2_IMG/qgis_extract_raster3.jpg]]

;3. Exporter la fenêtre carte en tant qu'image
*menu @@Fichier@@ / @@Sauvegarder comme image...@@
*choisir un Type (tif, jpeg, ...)

;4. Ouvrir l'image en tant que raster
*menu @@Couche@@ / @@Ajouter une couche raster...@@
*aller chercher son fichier, attention à bien préciser le type
*cliquer sur @@Ouvrir@@
*une fenêtre s'ouvre automatiquement, la projection n'a pas été enregistrée avec l'image, il faut la spécifier ici
**spécifier le SCR (ici 2154)
**@@OK@@
En l'état ce n'est pas satisfaisant, il faut associer en dur cette image à un SCR, de manière à ce qu'il puisse être directement utilisé dans un logiciel de SIG.

;5. Assigner une projection à l'image
*fermer la couche image si elle est ouverte
*menu @@Raster@@ / @@Projections@@ / @@Assigner une projection@@
[img[bdc2_IMG/qgis_extract_raster4.jpg]]
*spécifer le fichier source
*spécifier le SCR (le même que le SCR du projet lors de l'export, ici 2154)
*cliquer sur @@OK@@, un fichier GéoTIF va être créé, écrasant l'ancien s'il était déjà au format .tif)

Et voilà... y a plus qu'à... Attention cependant aux droits sur les données ainsi géoréférencées !



[[système d'information]]
Cas d'étude : classement des ilots du registre parcellaire graphique (RPG) situés en zone vulnérable nitrate (ZV) selon la pente. Pour chaque classe de pente choisie on détermine une superficie et un pourcentage par rapport à la superficie totale.

3 parties :
1. Création d'un projet GRASS avec le classement des pentes
*formatage du MNT de l'IGN pour importation sous Grass
*création de la couche des pentes
*reclassement de la couche des pentes
2. Calcul des surfaces de pentes sur des couches vecteurs (zones d'étude)
*importation de couches vectorielles OGR
*rasterisation des couches vectorielles importées
*découpages successifs du raster des pentes reclassé par les zones d'étude
*calcul de statistiques raster
*vectorisation de la couche des pentes découpée (facultatif)
*exportation de la couche de pente vecteur au format shapefile pour utilisation dans un autre logiciel de SIG (facultatif)
3. Validation


couches en entrée : 
*MNT au format ASCII Grid de la BDALTI de l'IGN : {{{mnt.asc}}}
*limites départementales GeoFLA N_DEP_FLA_000.TAB
*RPG :{{{rgp.shp}}}
*ZV : {{{N_VULNERABLE_ZSUP_R73.TAB}}}

Prérequis :
manipulation de base Grass
manipulation de base des fichiers sous Linux

Ressources :
portable Core i5, ArchLinux 64bits, grass 6.4.2-4

!Création d'un projet GRASS avec le classement des pentes
!!formatage du MNT de l'IGN pour importation sous Grass
*modifier l'en-tête du fichier asc de l'IGN
**original :
{{{head -n 6 Dpt_81_asc.asc}}} :
{{{
ncols         4601
nrows         3761
xllcorner     580987.50
yllcorner     6252987.50
cellsize      25.00
NODATA_value  -9999
}}}
**description des modifications à apporter :
{{{
cols: ncols
rows: nrows
west: xllcorner
south: yllcorner
north: nrows*cellsize+yllcorner
east: ncols*cellsize+xllcorner
}}}
**en-tête modifée
{{{
cols: 4601
rows: 3761
west: 580987.50
south: 6252987.50
north: 6347012.50
east: 696012.50
}}}

!!Création du jeu de données Grass
*démarrer Grass
*Définir un nouveau secteur
**répertoire de données SIG : {{{/chemin/vers/donneesGrass}}}
**secteur du projet : Tarn_81
**Titre du secteur : Tarn
**sélectionner le code EPSG 2154 comme système de coordonnées de référence
**terminer la création du jeu de donnée et le démarrage de Grass

!!Importation du MNT
{{{
GRASS 6.4.2 (Tarn_81):~ >r.in.ascii input=/chemin/vers/bdalit/Dpt_81_asc.asc output=MNT81
 100%
r.in.ascii terminé.
}}}
temps : < 1 min.

Répéter l'import pour les 8 MNT départementaux de la région Midi-Pyrénées, puis recréer le MNT régional via r.patch en définissant au préalable la région (g.region) à une résolution de 25m. (procédure non décrite ici).

!!Importation d'une dalle du SCAN25 de l'IGN pour vérifications ultérieures avec les courbes de niveau
{{{
GRASS 6.4.2 (Tarn_81):~ > r.in.gdal input=/chemin/vers/scan25/SC25_TOPO_0630_6270_L93.tif  output=SCAN25
Projection of input dataset and current location appear to match
 100%
r.in.gdal terminé. Raster map <SCAN25> created.
}}}

!!Création de la couche raster des pentes
{{{
GRASS 6.4.2 (Tarn_81):~ > r.slope.aspect elevation=MNTR73@PERMANENT slope=pentesR73 format=percent
 100%
Slope raster map <pentesR73> complete
}}}
temps : moins d'une minute

!!Reclassement du raster de pente en x classes
*préalable : créer le fichier de règles, voici ce à quoi il doit ressembler :
{{{cat 5classes_rules.txt}}} :
{{{
0 thru 10  = 1
11 thru 15 = 2
16 thru 20 = 3
21 thru 30 = 4
* = 5
}}}
remarque : il peut y avoir des pentes supérieures à 100% (45°)

*reclassement :
{{{
GRASS 6.4.2 (Tarn_81):~ > r.reclass input=pentesR73@PERMANENT output=pentesR73_5c rules=Composants/5classes_rules.txt
}}}

!Calcul des surfaces de pentes sur des couches vecteurs
!!Importations de couches vectorielles OGR (tab, shp, ...)
*limites départementales
{{{
v.in.ogr dsn=~/Draaf/gb_ref/GEOFLA/N_DEP_FLA_000.TAB output=N_DEP_FLA_000
}}}
créer ensuite les extractions régionale et départementales, via l'interface graphique
afficher les attributs / sélectionner la(les) ligne(s) / extraire ...

*zone vulnérable nitrate
{{{
v.in.ogr dsn=/chemin/vers/couche/N_VULNERABLE_ZSUP_R73.TAB output=zonevul
Projection of input dataset and current location appear to match
(...)
Nombre de surfaces sans centroïde : 6
}}}
*RPG (x8 pour les 8 départements)
{{{
v.in.ogr dsn=/chemin/vers/couche/SURFACES-2011-ILOTS_081_20120203bis.TAB output=rpg2011_081
(...)
}}}
temps : environ 2 minutes max

!!découpage du raster sur les zones d'étude
*remarques préalables :
**le principe du découpage repose sur une rasterisation préalable des zones d'études vecteur, puis l'utilisation de r.mask et mapcalc. Cette méthode est beaucoup plus légère en traitement que des calculs de recouvrement de géométries vectorielles. La rasterisation adapte la géométrie des vecteurs à la résolution (donc à la précision) du MNT qui est la précision à prendre en compte in fine.
**on découpe d'abord la couche des pentes reclassées selon chacune des limites administratives étudiées : la région et les 8 départements. La couche des pentes créée précédemment dépasse largement de ces limites administratives elles-même, car elle résulte d'un assemblage des mnt d'emprises (carrés englobants) départementales.
**on découpera ensuite chaque couche de pente avec la zone vulnérable, puis le rpg non anonyme (régional, et de chaque département)

*rasterisation des couches vectorielles
{{{
GRASS 6.4.2 (Tarn_81):~ > v.to.rast input=zonevul output=r_zonevul column=cat
GRASS 6.4.2 (Tarn_81):~ > v.to.rast input=rpg2011_081 output=r_rpg2011_081 column=cat
(idem pour les 7 autres départements)
GRASS 6.4.2 (Tarn_81):~ > v.to.rast input=N_DEP_FLA_R73 output=r_N_DEP_FLA_R73 column=cat
(idem pour les 8 départements)
}}}

*découpage selon les limites régionales et départementales (9 zones d'études administratives)
{{{
GRASS 6.4.2 (R73):~ > r.mask input=r_N_DEP_FLA_R73
GRASS 6.4.2 (R73):~ > r.mapcalc 'pentesR73_5c_R73 = pentesR73_5c * MASK'
GRASS 6.4.2 (R73):~ > g.remove rast=MASK
Removing raster <MASK>
GRASS 6.4.2 (R73):~ > r.mask input=r_N_DEP_FLA_009
[Raster MASK present]
GRASS 6.4.2 (R73):~ > r.mapcalc 'pentesR73_5c_009 = pentesR73_5c * MASK'
GRASS 6.4.2 (R73):~ > g.remove rast=MASK
Removing raster <MASK>
(à répéter pour les 7 autres départements)
}}}

*découpage des 9 zones avec la zone d'étude "zone vulnérable"
{{{
GRASS 6.4.2 (R73):~ > r.mask input=r_zonevul_R73
[Raster MASK present]
GRASS 6.4.2 (R73):~ > r.mapcalc 'pentesR73_5c_R73_zv = pentesR73_5c_R73 * MASK'
GRASS 6.4.2 (R73):~ > r.mapcalc 'pentesR73_5c_009_zv = pentesR73_5c_009 * MASK'

(à répéter pour les 7 autres départements)

GRASS 6.4.2 (R73):~ > g.remove rast=MASK
Removing raster <MASK>
}}}

*découpage des 9 zones limites x zone vulnérable avec la zone d'étude "rpg"
{{{
GRASS 6.4.2 (R73):~ > r.mask input=r_rpg2012_081
[Raster MASK present]
GRASS 6.4.2 (R73):~ > r.mapcalc 'pentesR73_5c_081_zv_rpg = pentesR73_5c_081_zv * MASK'
GRASS 6.4.2 (R73):~ > g.remove rast=MASK
Removing raster <MASK>
}}}



!!Calculer les surfaces et pourcentages dans chaque classe de pente sur la zone d'étude
*on calcule les pourcentages via r.stats. Attention ces pourcentages sont calculée sur la zone de calcul définie par g.region, correspondant à l'emprise régionale. Il ne faudra pas tenir compte des no-data dans le total.
{{{
GRASS 6.4.2 (Tarn_81):~ > r.stats input=pentesR73_5c_081_zv_rpg -apl
}}}
remarque : ce résultat donne les stats sur l'ensemble de la zone de calcul. on ne prend pas en compte les no-data dans le calcul des surfaces et pourcentage. 
*calculer les stats pour tous les départements et pour la région entière pour les découpages suivants :
**département entier
**département x zone vulnérable
**département x zone vulnérable x 

!!vectorisation de la couche raster des pentes sur la zone d'étude
*à répéter pour les 8 départements :
{{{
GRASS 6.4.2 (R73):~ >r.to.vect -s input=pentesR73_5c_081_zv_rpg output=v_pentesR73_5c_081_zv_rpg feature=area
}}}

!!export OGR
*à répéter pour les 8 départements :
{{{
GRASS 6.4.2 (R73):~ > v.out.ogr -c input=v_pentesR73_5c_081_zv_rpg dsn=chemin/vers/répertoire/cible type=area
}}}
temps : 10 minutes env.

!Validation
!!Vérifications
*estimation visuelle du résultat : superposer les classes de pentes avec le Scan25 sur un échantillon du territoire d'étude et estimer visuellement la correspondance avec les courbes de niveau.
[img[bdc2_IMG/carte_extrait_31.jpeg]]

Appliquer une méthode différente pour comparaison, consistant à vectoriser les classes de pentes et à les croiser avec les zones d'étude vecteurs :
* réalisation de la méthode vecteur complète sur un département (c'est-à-dire obtention de la couche croisée pentes x zone vulnérable x rpg) et comparaison des résultats :
**écarts de pourcentages sur les classes,
**pourcentage d'écart en m2 de chaque classe par rapport à la superficie totale.
* réalisation de la méthode vecteur pour les 8 départements sur les croisements pente x zone vulnérable et comparaison des résultats : pourcentage d'écart entre les superficies totales (les 5 classes agrégées).


!!Estimation de la précision de la méthode
Il est assez difficile de trouver une information précise et complète sur le sujet, les éléments ci-dessous permettent d'avoir une idée de la précision, qui demande à être confirmée par une expertise plus pointue en matière de traitements géographiques sur les MNT et des mesures de terrain.
*MNT BD ALTI : pas de 25m, précision altimétrique de l'ordre de 5 m, toute rupture de pente à l'intérieur d'une surface de 625 m² sera perdue,
*l'algorithme de calcul des pentes se base sur la différence d'altitude entres pixels voisins,
*la précision géographique des zones d'étude est supérieure à celle du MNT, la précision limitante est donc celle de la couche des pentes issue du MNT,
*la rasterisation induit une déformation de la géographie des zones d'étude, dont l'impact est dépendant de la taille des vecteurs. Sur une sélection de 10 000 ilôts du RPG d'un département 81, cette déformation est de l'ordre de 0,02 %. A l'échelle parcellaire elle sera plus importante.
*la précision limitante étant celle du MNT, la rasterisation des zones d'étude à un pas de 25m n'induit pas de biais supplémentaire.
*il est préférable d'exprimer les résultats sous forme de ratio de surfaces.
*à l'échelle parcellaire il y a probablement une imprécision assez forte, par contre à l'échelle du RPG d'un département, on peut penser que les pourcentages de classes de pente obtenus sont exacts à quelques unités près.


Expression type à saisir dans Mapinfo :
{{{
champs1+Chr$(13)+champs2+...
}}}
les variables :
*champ_doublon : champ où vous pensez avoir des doublons
*table : table contenant champ_doublon

procédure :
*Menu « Sélection / SélectionSQL »
*champ colonne : champ_doublon, puis dans la liste agréger choisissez Count(*). exemple : {{{ID_ILOT, Count(*)}}}
*champ table : table
*champ grouper par : champ_doublon
*champ trier par : champ_doublon desc
*Ok

résultat : sélection triée par ordre décroissant sur la colonne Count. Toutes les valeurs du champ Count différentes de 1 sont des doublons.

on peut ensuite sélectionner les lignes dont count > 1 pour les supprimer ensuite (suppression des objets puis compactage) afin d'obtenir une table sans doublons attributaires.

requête SQL :
{{{Select ID_ILOT, Count(*) from RPG_SAU group by ID_ILOT order by ID_ILOT desc into S_doublons_id_ilots}}}
menu Objets-> verifications des régions
Pour détecter les recouvrements de polygones au sein d'une même couche
*Vecteurs / Outils de géotraitement / Intersection
*prendre la même couche en entrée et en couche d'intersection
*en situation de superposition (c'est-à-dire non-recouvrement), on obtient pour chaque polygone un polygone dont tous les champs sont en doubles avec des valeurs identiques.
*en situation de recouvrement, on obtient pour chacun des polygones impliqués 1 polygone __supplémentaire___ dont les champs sont doublés avec des __valeurs différentes__ (donc un nombre d'objets polygones plus élevé).
Un petit dessin vaut mieux que de grands discours... représentation des objets géographiques dans une map, regroupés en une ou plusieurs couches (layers), chaque layer pouvant être relié à une table (attribute table) d'une base de donnée.
[img[bdc2_IMG/grass.png]]
Un IDS (Intrusion Detection System) est un mécanisme destiné à analyser l'activité d'un réseau ou d'une machine afin de détecter les intrusions ou tentatives d'intrusion. 
On distingue les IDS de type réseau, de type machine ou hybrides suivant ce qu'ils analysent.
Un IPS est un mécanisme proactif de détection des intrusions, permettant ainsi de se prémunir de tentatives d'intrusion et de diminuer le risque qu'une attaque se produise.
*Il peut-être considéré comme une une extension de l'[[IDS]] en utilisant des système de détection en direct.
*Il peut être ciblé sur un réseau ou sur un système. 
*Il est susceptible de prendre de mesures préventives face à une tentative d'intrusion identifiée. 
*Son utilisation est rendue délicate du fait de sa capacité à modifier automatiquement les règles de sécurité.
/***
|Name|ImportTiddlersPlugin|
|Source|http://www.TiddlyTools.com/#ImportTiddlersPlugin|
|Documentation|http://www.TiddlyTools.com/#ImportTiddlersPluginInfo|
|Version|4.6.2|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|interactive controls for import/export with filtering.|
Combine tiddlers from any two TiddlyWiki documents.  Interactively select and copy tiddlers from another TiddlyWiki source document.  Includes prompting for skip, rename, merge or replace actions when importing tiddlers that match existing titles.  When done, a list of all imported tiddlers is written into [[ImportedTiddlers]].
!!!!!Documentation
<<<
see [[ImportTiddlersPluginInfo]] for details
<<<
!!!!!interactive control panel
<<<
<<importTiddlers inline>>
{{clear{
^^(see also: [[ImportTiddlers]] shadow tiddler)^^}}}
<<<
!!!!!Revisions
<<<
2011.02.14 4.6.2 fix OSX error: use picker.file.path
2009.10.10 4.6.1 in createImportPanel, Use {{{window.Components}}} instead of {{{config.browser.isGecko}}} to avoid applying FF3 'file browse' fixup in Chrome.
2009.10.06 4.6.0 added createTiddlerFromFile (import text files)
|please see [[ImportTiddlersPluginInfo]] for additional revision details|
2005.07.20 1.0.0 Initial Release
<<<
!!!!!Code
***/
//{{{
version.extensions.ImportTiddlersPlugin= {major: 4, minor: 6, revision: 2, date: new Date(2011,2,14)};

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

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

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

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

config.macros.importTiddlers.handler = function(place,macroName,params,wikifier,paramString,tiddler) {
	if (!params[0] || params[0].toLowerCase()=='core') { // default to built in
		if (config.macros.importTiddlers.coreHandler)
			config.macros.importTiddlers.coreHandler.apply(this,arguments);
		else 
			createTiddlyButton(place,this.label,this.prompt,onClickImportMenu);
	} else if (params[0]=='link') { // show link to floating panel
		createTiddlyButton(place,params[1]||this.label,params[2]||this.prompt,onClickImportMenu);
	} else if (params[0]=='inline') {// show panel as INLINE tiddler content
		createImportPanel(place);
		this.$('importPanel').style.position='static';
		this.$('importPanel').style.display='block';
	} else if (config.macros.loadTiddlers)
		config.macros.loadTiddlers.handler(place,macroName,params); // any other params: loadtiddlers
}
//}}}
//{{{
// Handle link click to create/show/hide control panel
function onClickImportMenu(e) { var e=e||window.event;
	var parent=resolveTarget(e).parentNode;
	var panel=document.getElementById('importPanel');
	if (panel==undefined || panel.parentNode!=parent) panel=createImportPanel(parent);
	var isOpen=panel.style.display=='block';
	if(config.options.chkAnimate)
		anim.startAnimating(new Slider(panel,!isOpen,false,'none'));
	else
		panel.style.display=isOpen?'none':'block';
	e.cancelBubble = true; if (e.stopPropagation) e.stopPropagation(); return(false);
}
//}}}
//{{{
// Create control panel: HTML, CSS
function createImportPanel(place) {
	var cmi=config.macros.importTiddlers; // abbrev
	var panel=cmi.$('importPanel');
	if (panel) { panel.parentNode.removeChild(panel); }
	setStylesheet(store.getTiddlerText('ImportTiddlersPlugin##css'),'importTiddlers');
	panel=createTiddlyElement(place,'span','importPanel',null,null)
	panel.innerHTML=store.getTiddlerText('ImportTiddlersPlugin##html');
	refreshImportList();
	if (!cmi.src.length) cmi.src=store.getTiddlerText('SiteUrl')||'';
	cmi.$('importSourceURL').value=cmi.src;
	if (!cmi.proxy.length) cmi.proxy=store.getTiddlerText('SiteProxy')||'SiteProxy';
	cmi.$('importSiteProxy').value=cmi.proxy;
	if (window.Components) { // FF3 FIXUP
		cmi.$('fileImportSource').style.display='none';
		cmi.$('importLocalPanelFix').style.display='block';
	}
	cmi.$('chkSync').checked=cmi.sync;
	cmi.$('chkImportTags').checked=cmi.importTags;
	cmi.$('chkKeepTags').checked=cmi.keepTags;
	cmi.$('chkAddTags').checked=cmi.addTags;
	cmi.$('txtNewTags').value=cmi.newTags;
	cmi.$('txtNewTags').style.display=cmi.addTags?'block':'none';
	cmi.$('chkSync').checked=cmi.sync;
	cmi.$('chkImportReport').checked=config.options.chkImportReport;
	return panel;
}
//}}}
//{{{
// process control interactions
function onClickImportButton(which,event) {
	var cmi=config.macros.importTiddlers; // abbreviation
	var list=cmi.$('importList'); if (!list) return false;
	var thePanel=cmi.$('importPanel');
	var theCollisionPanel=cmi.$('importCollisionPanel');
	var theNewTitle=cmi.$('importNewTitle');
	var count=0;
	switch (which.id)
		{
		case 'importFromFile':	// show local panel
		case 'importFromWeb':	// show HTTP panel
			cmi.local=(which.id=='importFromFile');
			cmi.showPanel('importLocalPanel',cmi.local);
			cmi.showPanel('importHTTPPanel',!cmi.local);
			break;
		case 'importOptions':	// show/hide options panel
			cmi.showPanel('importOptionsPanel',cmi.$('importOptionsPanel').style.display=='none');
			break;
		case 'fileImportSource':
		case 'importLoad':		// load import source into hidden frame
			importReport();		// if an import was in progress, generate a report
			cmi.inbound=null;	// clear the imported tiddler buffer
			refreshImportList();	// reset/resize the listbox
			if (cmi.src=='') break;
			// Load document, read it's DOM and fill the list
			cmi.loadRemoteFile(cmi.src,cmi.filterTiddlerList);
			break;
		case 'importSelectFeed':	// select a pre-defined systemServer feed URL
			var p=Popup.create(which); if (!p) return false;
			var tids=store.getTaggedTiddlers('systemServer');
			if (!tids.length)
				createTiddlyText(createTiddlyElement(p,'li'),'no pre-defined server feeds');
			for (var t=0; t<tids.length; t++) {
				var u=store.getTiddlerSlice(tids[t].title,'URL');
				var d=store.getTiddlerSlice(tids[t].title,'Description');
				if (!d||!d.length) d=store.getTiddlerSlice(tids[t].title,'description');
				if (!d||!d.length) d=u;
				createTiddlyButton(createTiddlyElement(p,'li'),tids[t].title,d,
					function(){
						var u=this.getAttribute('url');
						document.getElementById('importSourceURL').value=u;
						config.macros.importTiddlers.src=u;
						document.getElementById('importLoad').onclick();
					},
					null,null,null,{url:u});
			}
			Popup.show();
			event.cancelBubble = true;
			if (event.stopPropagation) event.stopPropagation();
			return false;
			// create popup with feed list
			// onselect, insert feed URL into input field.
			break;
		case 'importSelectAll':		// select all tiddler list items (i.e., not headings)
			importReport();		// if an import was in progress, generate a report
			for (var t=0,count=0; t < list.options.length; t++) {
				if (list.options[t].value=='') continue;
				list.options[t].selected=true;
				count++;
			}
			clearMessage(); displayMessage(cmi.countMsg.format([count]));
			cmi.$('importStart').disabled=!count;
			break;
		case 'importSelectNew':		// select tiddlers not in current document
			importReport();		// if an import was in progress, generate a report
			for (var t=0,count=0; t < list.options.length; t++) {
				list.options[t].selected=false;
				if (list.options[t].value=='') continue;
				list.options[t].selected=!store.tiddlerExists(list.options[t].value);
				count+=list.options[t].selected?1:0;
			}
			clearMessage(); displayMessage(cmi.countMsg.format([count]));
			cmi.$('importStart').disabled=!count;
			break;
		case 'importSelectChanges':		// select tiddlers that are updated from existing tiddlers
			importReport();		// if an import was in progress, generate a report
			for (var t=0,count=0; t < list.options.length; t++) {
				list.options[t].selected=false;
				if (list.options[t].value==''||!store.tiddlerExists(list.options[t].value)) continue;
				for (var i=0; i<cmi.inbound.length; i++) // find matching inbound tiddler
					{ var inbound=cmi.inbound[i]; if (inbound.title==list.options[t].value) break; }
				list.options[t].selected=(inbound.modified-store.getTiddler(list.options[t].value).modified>0); // updated tiddler
				count+=list.options[t].selected?1:0;
			}
			clearMessage(); displayMessage(cmi.countMsg.format([count]));
			cmi.$('importStart').disabled=!count;
			break;
		case 'importSelectDifferences':		// select tiddlers that are new or different from existing tiddlers
			importReport();		// if an import was in progress, generate a report
			for (var t=0,count=0; t < list.options.length; t++) {
				list.options[t].selected=false;
				if (list.options[t].value=='') continue;
				if (!store.tiddlerExists(list.options[t].value)) { list.options[t].selected=true; count++; continue; }
				for (var i=0; i<cmi.inbound.length; i++) // find matching inbound tiddler
					{ var inbound=cmi.inbound[i]; if (inbound.title==list.options[t].value) break; }
				list.options[t].selected=(inbound.modified-store.getTiddler(list.options[t].value).modified!=0); // changed tiddler
				count+=list.options[t].selected?1:0;
			}
			clearMessage(); displayMessage(cmi.countMsg.format([count]));
			cmi.$('importStart').disabled=!count;
			break;
		case 'importApplyFilter':	// filter list to include only matching tiddlers
			importReport();		// if an import was in progress, generate a report
			clearMessage();
			if (!cmi.all) // no tiddlers loaded = '0 selected'
				{ displayMessage(cmi.countMsg.format([0])); return false; }
			var hash=cmi.$('importLastFilter').value;
			cmi.inbound=cmi.filterByHash('#'+hash,cmi.all);
			refreshImportList();	// reset/resize the listbox
			break;
		case 'importStart':		// initiate the import processing
			importReport();		// if an import was in progress, generate a report
			cmi.$('importApplyToAll').checked=false;
			cmi.$('importStart').value=cmi.stopText;
			if (cmi.index>0) cmi.index=-1; // stop processing
			else cmi.index=importTiddlers(0); // or begin processing
			importStopped();
			break;
		case 'importClose':		// unload imported tiddlers or hide the import control panel
			// if imported tiddlers not loaded, close the import control panel
			if (!cmi.inbound) { thePanel.style.display='none'; break; }
			importReport();		// if an import was in progress, generate a report
			cmi.inbound=null;	// clear the imported tiddler buffer
			refreshImportList();	// reset/resize the listbox
			break;
		case 'importSkip':	// don't import the tiddler
			cmi.lastAction=which;
			var theItem	= list.options[cmi.index];
			for (var j=0;j<cmi.inbound.length;j++)
			if (cmi.inbound[j].title==theItem.value) break;
			var theImported = cmi.inbound[j];
			theImported.status='skipped after asking';			// mark item as skipped
			theCollisionPanel.style.display='none';
			cmi.index=importTiddlers(cmi.index+1);	// resume with NEXT item
			importStopped();
			break;
		case 'importRename':		// change name of imported tiddler
			cmi.lastAction=which;
			var theItem		= list.options[cmi.index];
			for (var j=0;j<cmi.inbound.length;j++)
			if (cmi.inbound[j].title==theItem.value) break;
			var theImported		= cmi.inbound[j];
			theImported.status	= 'renamed from '+theImported.title;	// mark item as renamed
			theImported.set(theNewTitle.value,null,null,null,null);		// change the tiddler title
			theItem.value		= theNewTitle.value;			// change the listbox item text
			theItem.text		= theNewTitle.value;			// change the listbox item text
			theCollisionPanel.style.display='none';
			cmi.index=importTiddlers(cmi.index);	// resume with THIS item
			importStopped();
			break;
		case 'importMerge':	// join existing and imported tiddler content
			cmi.lastAction=which;
			var theItem	= list.options[cmi.index];
			for (var j=0;j<cmi.inbound.length;j++)
			if (cmi.inbound[j].title==theItem.value) break;
			var theImported	= cmi.inbound[j];
			var theExisting	= store.getTiddler(theItem.value);
			var theText	= theExisting.text+'\n----\n^^merged from: ';
			theText		+='[['+cmi.src+'#'+theItem.value+'|'+cmi.src+'#'+theItem.value+']]^^\n';
			theText		+='^^'+theImported.modified.toLocaleString()+' by '+theImported.modifier+'^^\n'+theImported.text;
			var theDate	= new Date();
			var theTags	= theExisting.getTags()+' '+theImported.getTags();
			theImported.set(null,theText,null,theDate,theTags);
			theImported.status   = 'merged with '+theExisting.title;	// mark item as merged
			theImported.status  += ' - '+theExisting.modified.formatString('MM/DD/YYYY 0hh:0mm:0ss');
			theImported.status  += ' by '+theExisting.modifier;
			theCollisionPanel.style.display='none';
			cmi.index=importTiddlers(cmi.index);	// resume with this item
			importStopped();
			break;
		case 'importReplace':		// substitute imported tiddler for existing tiddler
			cmi.lastAction=which;
			var theItem		  = list.options[cmi.index];
			for (var j=0;j<cmi.inbound.length;j++)
			if (cmi.inbound[j].title==theItem.value) break;
			var theImported     = cmi.inbound[j];
			var theExisting	  = store.getTiddler(theItem.value);
			theImported.status  = 'replaces '+theExisting.title;		// mark item for replace
			theImported.status += ' - '+theExisting.modified.formatString('MM/DD/YYYY 0hh:0mm:0ss');
			theImported.status += ' by '+theExisting.modifier;
			theCollisionPanel.style.display='none';
			cmi.index=importTiddlers(cmi.index);	// resume with THIS item
			importStopped();
			break;
		case 'importListSmaller':		// decrease current listbox size, minimum=5
			if (list.options.length==1) break;
			list.size-=(list.size>5)?1:0;
			cmi.listsize=list.size;
			break;
		case 'importListLarger':		// increase current listbox size, maximum=number of items in list
			if (list.options.length==1) break;
			list.size+=(list.size<list.options.length)?1:0;
			cmi.listsize=list.size;
			break;
		case 'importListMaximize':	// toggle listbox size between current and maximum
			if (list.options.length==1) break;
			list.size=(list.size==list.options.length)?cmi.listsize:list.options.length;
			break;
		}
}
//}}}
//{{{
config.macros.importTiddlers.showPanel=function(place,show,skipAnim) {
	if (typeof place=='string') var place=document.getElementById(place);
	if (!place||!place.style) return;
	if(!skipAnim && anim && config.options.chkAnimate) anim.startAnimating(new Slider(place,show,false,'none'));
	else place.style.display=show?'block':'none';
}
//}}}
//{{{
function refreshImportList(selectedIndex) {
	var cmi=config.macros.importTiddlers; // abbrev
	var list=cmi.$('importList'); if (!list) return;
	// if nothing to show, reset list content and size
	if (!cmi.inbound) {
		while (list.length > 0) { list.options[0] = null; }
		list.options[0]=new Option(cmi.loadText,'',false,false);
		list.size=cmi.listsize;
		cmi.$('importLoad').disabled=false;
		cmi.$('importLoad').style.display='inline';
		cmi.$('importStart').disabled=true;
		cmi.$('importOptions').disabled=true;
		cmi.$('importOptions').style.display='none';
		cmi.$('fileImportSource').disabled=false;
		cmi.$('importFromFile').disabled=false;
		cmi.$('importFromWeb').disabled=false;
		cmi.$('importStart').value=cmi.startText;
		cmi.$('importClose').value=cmi.doneText;
		cmi.$('importSelectPanel').style.display='none';
		cmi.$('importOptionsPanel').style.display='none';
		return;
	}
	// there are inbound tiddlers loaded...
	cmi.$('importLoad').disabled=true;
	cmi.$('importLoad').style.display='none';
	cmi.$('importOptions').style.display='inline';
	cmi.$('importOptions').disabled=false;
	cmi.$('fileImportSource').disabled=true;
	cmi.$('importFromFile').disabled=true;
	cmi.$('importFromWeb').disabled=true;
	cmi.$('importClose').value=cmi.closeText;
	if (cmi.$('importSelectPanel').style.display=='none')
		cmi.showPanel('importSelectPanel',true);

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

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

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

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

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

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

config.macros.importTiddlers.createTiddlerFromFile=function(src,txt) {
	var t=new Tiddler();
	var pos=src.lastIndexOf("/"); if (pos==-1) pos=src.lastIndexOf("\\");
	t.title=pos==-1?src:src.substr(pos+1);
	t.text=txt; 
	t.created=t.modified=new Date();
	t.modifier=config.options.txtUserName;
	if (src.substr(src.length-3,3)=='.js') t.tags=['systemConfig'];
	return [t];
}

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

config.macros.importTiddlers.filterByHash=function(src,tiddlers){
	var hashpos=src.lastIndexOf('#'); if (hashpos==-1) return tiddlers;
	var hash=src.substr(hashpos+1); if (!hash.length) return tiddlers;
	var tids=[];
	var params=hash.parseParams('anon',null,true,false,false);
	for (var p=1; p<params.length; p++) {
		switch (params[p].name) {
			case 'anon':
			case 'open':
				tids.pushUnique(params[p].value);
				break;
			case 'tag':
				if (store.getMatchingTiddlers) { // for boolean expressions - see MatchTagsPlugin
					var r=store.getMatchingTiddlers(params[p].value,null,tiddlers);
					for (var t=0; t<r.length; t++) tids.pushUnique(r[t].title);
				} else for (var t=0; t<tiddlers.length; t++)
					if (tiddlers[t].isTagged(params[p].value))
						tids.pushUnique(tiddlers[t].title);
				break;
			case 'story':
				for (var t=0; t<tiddlers.length; t++)
					if (tiddlers[t].title==params[p].value) {
						tiddlers[t].changed();
						for (var s=0; s<tiddlers[t].links.length; s++)
							tids.pushUnique(tiddlers[t].links[s]);
						break;
					}
				break;
			case 'search':
				for (var t=0; t<tiddlers.length; t++)
					if (tiddlers[t].text.indexOf(params[p].value)!=-1)
						tids.pushUnique(tiddlers[t].title);
				break;
		}
	}
	var matches=[];
	for (var t=0; t<tiddlers.length; t++)
		if (tids.contains(tiddlers[t].title))
			matches.push(tiddlers[t]);
	displayMessage(config.macros.importTiddlers.filterMsg.format([matches.length,hash]));
	config.macros.importTiddlers.lastFilter=hash;
	return matches;
}
//}}}
/***
!!!Control panel CSS
//{{{
!css
#importPanel {
	display: none; position:absolute; z-index:11; width:35em; right:105%; top:3em;
	background-color: #eee; color:#000; font-size: 8pt; line-height:110%;
	border:1px solid black; border-bottom-width: 3px; border-right-width: 3px;
	padding: 0.5em; margin:0em; -moz-border-radius:1em;-webkit-border-radius:1em;
}
#importPanel a, #importPanel td a { color:#009; display:inline; margin:0px; padding:1px; }
#importPanel table { width:100%; border:0px; padding:0px; margin:0px; font-size:8pt; line-height:110%; background:transparent; }
#importPanel tr { border:0px;padding:0px;margin:0px; background:transparent; }
#importPanel td { color:#000; border:0px;padding:0px;margin:0px; background:transparent; }
#importPanel select { width:100%;margin:0px;font-size:8pt;line-height:110%;}
#importPanel input  { width:98%;padding:0px;margin:0px;font-size:8pt;line-height:110%}
#importPanel .box { border:1px solid #000; background-color:#eee; padding:3px 5px; margin-bottom:5px; -moz-border-radius:5px;-webkit-border-radius:5px;}
#importPanel .topline { border-top:1px solid #999; padding-top:2px; margin-top:2px; }
#importPanel .rad { width:auto; }
#importPanel .chk { width:auto; margin:1px;border:0; }
#importPanel .btn { width:auto; }
#importPanel .btn1 { width:98%; }
#importPanel .btn2 { width:48%; }
#importPanel .btn3 { width:32%; }
#importPanel .btn4 { width:23%; }
#importPanel .btn5 { width:19%; }
#importPanel .importButton { padding: 0em; margin: 0px; font-size:8pt; }
#importPanel .importListButton { padding:0em 0.25em 0em 0.25em; color: #000000; display:inline }
#backstagePanel #importPanel { left:10%; right:auto; }
!end
//}}}
!!!Control panel HTML
//{{{
!html
<!-- source and report -->
<table><tr><td align=left>
	import from
	<input type="radio" class="rad" name="importFrom" id="importFromFile" value="file" CHECKED
		onclick="onClickImportButton(this,event)" title="show file controls"> local file
	<input type="radio" class="rad" name="importFrom" id="importFromWeb"  value="http"
		onclick="onClickImportButton(this,event)" title="show web controls"> web server
</td><td align=right>
	<input type=checkbox class="chk" id="chkImportReport"
		onClick="config.options['chkImportReport']=this.checked;"> create report
</td></tr></table>

<div class="box" id="importSourcePanel" style="margin:.5em">
<div id="importLocalPanel" style="display:block;margin-bottom:2px;"><!-- import from local file  -->
enter or browse for source path/filename<br>
<input type="file" id="fileImportSource" size=57 style="width:100%"
	onKeyUp="config.macros.importTiddlers.src=this.value"
	onChange="config.macros.importTiddlers.src=this.value;document.getElementById('importLoad').onclick()">
<div id="importLocalPanelFix" style="display:none"><!-- FF3 FIXUP -->
	<input type="text" id="fileImportSourceFix" style="width:90%"
		title="Enter a path/file to import"
		onKeyUp="config.macros.importTiddlers.src=this.value"
		onChange="config.macros.importTiddlers.src=this.value;document.getElementById('importLoad').onclick()">
	<input type="button" id="fileImportSourceFixButton" style="width:7%" value="..."
		title="Select a path/file to import"
		onClick="var r=config.macros.importTiddlers.askForFilename(this); if (!r||!r.length) return;
			document.getElementById('fileImportSourceFix').value=r;
			config.macros.importTiddlers.src=r;
			document.getElementById('importLoad').onclick()">
</div><!--end FF3 FIXUP-->
</div><!--end local-->
<div id="importHTTPPanel" style="display:none;margin-bottom:2px;"><!-- import from http server -->
<table><tr><td align=left>
	enter a URL or <a href="javascript:;" id="importSelectFeed"
		onclick="return onClickImportButton(this,event)" title="select a pre-defined 'systemServer' URL">
		select a server</a><br>
</td><td align=right>
	<input type="checkbox" class="chk" id="importUsePassword"
		onClick="config.macros.importTiddlers.usePassword=this.checked;
			config.macros.importTiddlers.showPanel('importIDPWPanel',this.checked,true);">password
	<input type="checkbox" class="chk" id="importUseProxy"
		onClick="config.macros.importTiddlers.useProxy=this.checked;
			config.macros.importTiddlers.showPanel('importSiteProxy',this.checked,true);">proxy
</td></tr></table>
<input type="text" id="importSiteProxy" style="display:none;margin-bottom:1px" onfocus="this.select()" value="SiteProxy"
	onKeyUp="config.macros.importTiddlers.proxy=this.value"
	onChange="config.macros.importTiddlers.proxy=this.value;">
<input type="text" id="importSourceURL" onfocus="this.select()" value="SiteUrl"
	onKeyUp="config.macros.importTiddlers.src=this.value"
	onChange="config.macros.importTiddlers.src=this.value;">
<div id="importIDPWPanel" style="text-align:center;margin-top:2px;display:none";>
username: <input type=text id="txtImportID" style="width:25%" 
	onChange="config.options.txtRemoteUsername=this.value;">
 password: <input type=password id="txtImportPW" style="width:25%" 
	onChange="config.options.txtRemotePassword=this.value;">
</div><!--end idpw-->
</div><!--end http-->
</div><!--end source-->

<div class="box" id="importSelectPanel" style="display:none;margin:.5em;">
<table><tr><td align=left>
select:
<a href="javascript:;" id="importSelectAll"
	onclick="return onClickImportButton(this)" title="SELECT all tiddlers">
	all</a>
&nbsp;<a href="javascript:;" id="importSelectNew"
	onclick="return onClickImportButton(this)" title="SELECT tiddlers not already in destination document">
	added</a>
&nbsp;<a href="javascript:;" id="importSelectChanges"
	onclick="return onClickImportButton(this)" title="SELECT tiddlers that have been updated in source document">
	changes</a>
&nbsp;<a href="javascript:;" id="importSelectDifferences"
	onclick="return onClickImportButton(this)" title="SELECT tiddlers that have been added or are different from existing tiddlers">
	differences</a>
</td><td align=right>
<a href="javascript:;" id="importListSmaller"
	onclick="return onClickImportButton(this)" title="SHRINK list size">
	&nbsp;&#150;&nbsp;</a>
<a href="javascript:;" id="importListLarger"
	onclick="return onClickImportButton(this)" title="GROW list size">
	&nbsp;+&nbsp;</a>
<a href="javascript:;" id="importListMaximize"
	onclick="return onClickImportButton(this)" title="MAXIMIZE/RESTORE list size">
	&nbsp;=&nbsp;</a>
</td></tr></table>
<select id="importList" size=8 multiple
	onchange="setTimeout('refreshImportList('+this.selectedIndex+')',1)">
	<!-- NOTE: delay refresh so list is updated AFTER onchange event is handled -->
</select>
<div style="text-align:center">
	<a href="javascript:;"
		title="click for help using filters..."
		onclick="alert('A filter consists of one or more space-separated combinations of: tiddlertitle, tag:[[tagvalue]], tag:[[tag expression]] (requires MatchTagsPlugin), story:[[TiddlerName]], and/or search:[[searchtext]]. Use a blank filter to restore the list of all tiddlers.'); return false;"
	>filter</a>
	<input type="text" id="importLastFilter" style="margin-bottom:1px; width:65%"
		title="Enter a combination of one or more filters. Use a blank filter for all tiddlers."
		onfocus="this.select()" value=""
		onKeyUp="config.macros.importTiddlers.lastFilter=this.value"
		onChange="config.macros.importTiddlers.lastFilter=this.value;">
	<input type="button" id="importApplyFilter" style="width:20%" value="apply"
		title="filter list of tiddlers to include only those that match certain criteria"
		onclick="return onClickImportButton(this)">
	</div>
</div><!--end select-->

<div class="box" id="importOptionsPanel" style="text-align:center;margin:.5em;display:none;">
	apply tags: <input type=checkbox class="chk" id="chkImportTags" checked
		onClick="config.macros.importTiddlers.importTags=this.checked;">from source&nbsp;
	<input type=checkbox class="chk" id="chkKeepTags" checked
		onClick="config.macros.importTiddlers.keepTags=this.checked;">keep existing&nbsp;
	<input type=checkbox class="chk" id="chkAddTags" 
		onClick="config.macros.importTiddlers.addTags=this.checked;
			config.macros.importTiddlers.showPanel('txtNewTags',this.checked,false);
			if (this.checked) document.getElementById('txtNewTags').focus();">add tags<br>
	<input type=text id="txtNewTags" style="margin-top:4px;display:none;" size=15 onfocus="this.select()" 
		title="enter tags to be added to imported tiddlers" 
		onKeyUp="config.macros.importTiddlers.newTags=this.value;
		document.getElementById('chkAddTags').checked=this.value.length>0;" autocomplete=off>
	<nobr><input type=checkbox class="chk" id="chkSync" 
		onClick="config.macros.importTiddlers.sync=this.checked;">
		link tiddlers to source document (for sync later)</nobr>
</div><!--end options-->

<div id="importButtonPanel" style="text-align:center">
	<input type=button id="importLoad"	class="importButton btn3" value="open"
		title="load listbox with tiddlers from source document"
		onclick="onClickImportButton(this)">
	<input type=button id="importOptions"	class="importButton btn3" value="options..."
		title="set options for tags, sync, etc."
		onclick="onClickImportButton(this)">
	<input type=button id="importStart"	class="importButton btn3" value="import"
		title="start/stop import of selected source tiddlers into current document"
		onclick="onClickImportButton(this)">
	<input type=button id="importClose"	class="importButton btn3" value="done"
		title="clear listbox or hide control panel"
		onclick="onClickImportButton(this)">
</div>

<div class="none" id="importCollisionPanel" style="display:none;margin:.5em 0 .5em .5em;">
	<table><tr><td style="width:65%" align="left">
		<table><tr><td align=left>
			tiddler already exists:
		</td><td align=right>
			<input type=checkbox class="chk" id="importApplyToAll" 
			onclick="document.getElementById('importRename').disabled=this.checked;"
			checked>apply to all
		</td></tr></table>
		<input type=text id="importNewTitle" size=15 autocomplete=off">
	</td><td style="width:34%" align="center">
		<input type=button id="importMerge"
			class="importButton" style="width:47%" value="merge"
			title="append the incoming tiddler to the existing tiddler"
			onclick="onClickImportButton(this)"><!--
		--><input type=button id="importSkip"
			class="importButton" style="width:47%" value="skip"
			title="do not import this tiddler"
			onclick="onClickImportButton(this)"><!--
		--><br><input type=button id="importRename"
			class="importButton" style="width:47%" value="rename"
			title="rename the incoming tiddler"
			onclick="onClickImportButton(this)"><!--
		--><input type=button id="importReplace"
			class="importButton" style="width:47%" value="replace"
			title="discard the existing tiddler"
			onclick="onClickImportButton(this)">
	</td></tr></table>
</div><!--end collision-->
!end
//}}}
***/
 
On 24/03/2015, 14:09:29, NAMB imported 82 tiddlers from
[[file:///home/namb/Documents/perso/bdc/bdc2.html|file:///home/namb/Documents/perso/bdc/bdc2.html]]:
<<<
#[[ASCII]] - replaces ASCII - 9/11/2014 17:01:00 by namb
#[[Carroyage : affectation de données au carreau à partir de données vectorielles sous Grass (méthode raster)]] - replaces Carroyage : affectation de données au carreau à partir de données vectorielles sous Grass (méthode raster) - 9/25/2014 22:21:00 by namb
#[[Créer un MNT (Modèle Numérique de Terrain) régional unique à partir de plusieurs MNT départementaux avec Grass]] - replaces Créer un MNT (Modèle Numérique de Terrain) régional unique à partir de plusieurs MNT départementaux avec Grass - 11/6/2014 15:57:00 by Namb
#[[Créer une image géoréférencée depuis la fenêtre carte de QGIS]] - replaces Créer une image géoréférencée depuis la fenêtre carte de QGIS - 9/11/2014 16:53:00 by VotreNom
#[[Détermination de classes de pente sur une zone d'étude à partir du MNT de l'IGN sous Grass]] - replaces Détermination de classes de pente sur une zone d'étude à partir du MNT de l'IGN sous Grass - 9/11/2014 16:53:00 by VotreNom
#[[Expression d'étiquettes multi-champs et retour chariot sous Mapinfo]] - replaces Expression d'étiquettes multi-champs et retour chariot sous Mapinfo - 9/11/2014 16:53:00 by VotreNom
#[[Gestion des doublons attributaires dans Mapinfo]] - replaces Gestion des doublons attributaires dans Mapinfo - 9/11/2014 16:53:00 by VotreNom
#[[Gestion des doublons géographiques dans Mapinfo]] - replaces Gestion des doublons géographiques dans Mapinfo - 9/11/2014 16:53:00 by VotreNom
#[[Gestion des recouvrements dans QGis]] - replaces Gestion des recouvrements dans QGis - 9/11/2014 16:54:00 by VotreNom
#[[Grass : schéma explicatif de la structuration des objets vectoriels et des données]] - replaces Grass : schéma explicatif de la structuration des objets vectoriels et des données - 12/23/2014 14:41:00 by VotreNom
#[[IDS]] - replaces IDS - 9/11/2014 17:02:00 by namb
#[[IPS]] - replaces IPS - 9/11/2014 17:02:00 by namb
#[[Inspire]] - replaces Inspire - 9/11/2014 17:02:00 by namb
#[[Maintien en condition opérationnelle (MCO)]] - added
#[[Modèle de script bash]] - replaces Modèle de script bash - 9/11/2014 16:54:00 by VotreNom
#[[SIG]] - replaces SIG - 9/11/2014 17:03:00 by namb
#[[Transformer une cellule nombre en texte de nombre fixe de caractère (e.g. code INSEE) sous Excel ou Calc]] - replaces Transformer une cellule nombre en texte de nombre fixe de caractère (e.g. code INSEE) sous Excel ou Calc - 9/11/2014 16:54:00 by VotreNom
#[[Wi-Fi]] - replaces Wi-Fi - 9/11/2014 17:03:00 by namb
#[[afficher uniquement les répertoires en bash]] - replaces afficher uniquement les répertoires en bash - 9/11/2014 16:55:00 by VotreNom
#[[ajouter une ligne en début de fichier avec sed]] - replaces ajouter une ligne en début de fichier avec sed - 9/17/2014 14:23:00 by namb
#[[algorithme de tri bulle]] - replaces algorithme de tri bulle - 9/11/2014 16:55:00 by VotreNom
#[[algorithme de tri bulle (orienté java)]] - replaces algorithme de tri bulle (orienté java) - 9/11/2014 16:55:00 by VotreNom
#[[algorithme de tri par insertion (orienté java)]] - replaces algorithme de tri par insertion (orienté java) - 9/11/2014 16:55:00 by VotreNom
#[[algorithme de tri par sélection (orienté java)]] - replaces algorithme de tri par sélection (orienté java) - 9/11/2014 16:55:00 by VotreNom
#[[algorithme de tri shell (orienté java)]] - replaces algorithme de tri shell (orienté java) - 9/11/2014 16:55:00 by VotreNom
#[[algorithme récursif de recherche dichotomique (orienté java)]] - replaces algorithme récursif de recherche dichotomique (orienté java) - 9/11/2014 16:55:00 by VotreNom
#[[architectures de sécurité]] - replaces architectures de sécurité - 9/11/2014 17:03:00 by namb
#[[bash]] - replaces bash - 9/11/2014 17:04:00 by namb
#[[bureautique]] - replaces bureautique - 9/11/2014 17:04:00 by namb
#[[commandes de synchronisation d'un fichier par FTP]] - replaces commandes de synchronisation d'un fichier par FTP - 9/11/2014 16:56:00 by VotreNom
#[[commandes lvm]] - replaces commandes lvm - 9/11/2014 16:56:00 by VotreNom
#[[compter le nombre d'occurrences uniques d'un champ d'un fichier texte csv avec sed et sort]] - replaces compter le nombre d'occurrences uniques d'un champ d'un fichier texte csv avec sed et sort - 9/17/2014 15:21:00 by namb
#[[concaténation de deux champs avec sed]] - replaces concaténation de deux champs avec sed - 9/11/2014 16:56:00 by VotreNom
#[[configurer carte réseau avec ethtool]] - replaces configurer carte réseau avec ethtool - 9/11/2014 16:56:00 by VotreNom
#[[contrôle d'accès]] - replaces contrôle d'accès - 9/11/2014 17:05:00 by namb
#[[couche liaison de données]] - replaces couche liaison de données - 9/11/2014 17:05:00 by namb
#[[couche physique]] - replaces couche physique - 9/11/2014 17:05:00 by namb
#[[couche réseau]] - replaces couche réseau - 9/11/2014 17:05:00 by namb
#[[couche transport]] - replaces couche transport - 11/3/2014 10:26:00 by Namb
#[[créer automatiquement les répertoires parents avec mkdir]] - replaces créer automatiquement les répertoires parents avec mkdir - 9/11/2014 16:57:00 by VotreNom
#[[cycle de développement d'un système d'information]] - replaces cycle de développement d'un système d'information - 9/11/2014 17:05:00 by namb
#[[cycle en V]] - replaces cycle en V - 12/23/2014 14:39:00 by VotreNom
#[[diagramme de GANTT]] - replaces diagramme de GANTT - 9/11/2014 17:06:00 by namb
#[[droit]] - replaces droit - 9/11/2014 17:06:00 by namb
#[[droits UNIX]] - replaces droits UNIX - 9/11/2014 17:06:00 by namb
#[[développement]] - replaces développement - 9/11/2014 17:12:00 by namb
#[[exemple]] - replaces exemple - 10/3/2013 13:38:00 by VotreNom
#[[expressions régulières]] - replaces expressions régulières - 9/11/2014 17:07:00 by namb
#[[extension de volume logique et système de fichier à chaud]] - replaces extension de volume logique et système de fichier à chaud - 9/11/2014 16:57:00 by namb
#[[find]] - replaces find - 9/11/2014 16:57:00 by namb
#[[historique des systèmes UNIX]] - replaces historique des systèmes UNIX - 9/11/2014 17:07:00 by namb
#[[identification des disques par uuid dans /etc/fstab]] - replaces identification des disques par uuid dans /etc/fstab - 9/11/2014 16:57:00 by namb
#[[licence Creative Commons]] - replaces licence Creative Commons - 9/11/2014 17:07:00 by namb
#[[linux]] - replaces linux - 9/11/2014 17:08:00 by namb
#[[loi informatique et libertés]] - replaces loi informatique et libertés - 9/11/2014 17:08:00 by namb
#[[lspci]] - replaces lspci - 9/11/2014 16:58:00 by namb
#[[monitoring réseau]] - replaces monitoring réseau - 9/11/2014 17:08:00 by namb
#[[montage ntfs-3g]] - replaces montage ntfs-3g - 9/11/2014 16:58:00 by namb
#[[mount.cifs]] - replaces mount.cifs - 9/11/2014 17:00:00 by namb
#[[paradigme]] - replaces paradigme - 9/11/2014 17:08:00 by namb
#[[portail captif]] - replaces portail captif - 9/11/2014 17:09:00 by namb
#[[processus]] - replaces processus - 9/11/2014 17:09:00 by namb
#[[processus métier]] - replaces processus métier - 9/11/2014 17:09:00 by namb
#[[programmation]] - replaces programmation - 9/11/2014 17:09:00 by namb
#[[propriété intellectuelle]] - replaces propriété intellectuelle - 9/11/2014 17:09:00 by namb
#[[redirection des sorties standard et erreur dans un script bash]] - replaces redirection des sorties standard et erreur dans un script bash - 9/11/2014 16:58:00 by namb
#[[remplacer les chemins à l'intérieur d'un fichier texte avec sed]] - replaces remplacer les chemins à l'intérieur d'un fichier texte avec sed - 9/11/2014 16:58:00 by namb
#[[renommer en masse des fichiers avec sed]] - replaces renommer en masse des fichiers avec sed - 9/11/2014 16:58:00 by namb
#[[rsync]] - replaces rsync - 9/11/2014 17:10:00 by namb
#[[réseau PERT]] - replaces réseau PERT - 9/11/2014 17:10:00 by namb
#[[sauvegarde totale linux via rsync]] - replaces sauvegarde totale linux via rsync - 9/11/2014 16:59:00 by namb
#[[sed]] - replaces sed - 9/11/2014 17:11:00 by namb
#[[sgid]] - replaces sgid - 9/11/2014 17:11:00 by namb
#[[standards UNIX]] - replaces standards UNIX - 9/11/2014 17:11:00 by namb
#[[sticky bit]] - replaces sticky bit - 9/11/2014 17:11:00 by namb
#[[suid]] - replaces suid - 9/11/2014 17:11:00 by namb
#[[suppression de tous les blancs en fin de ligne avec sed]] - replaces suppression de tous les blancs en fin de ligne avec sed - 9/11/2014 16:59:00 by namb
#[[système]] - replaces système - 9/11/2014 17:11:00 by namb
#[[système d'information]] - replaces système d'information - 9/11/2014 17:12:00 by namb
#[[sécurité Wi-Fi]] - replaces sécurité Wi-Fi - 9/11/2014 17:12:00 by namb
#[[séparer un fichier en n fichiers correspondant à la valeur d'un champ]] - replaces séparer un fichier en n fichiers correspondant à la valeur d'un champ - 9/11/2014 16:59:00 by namb
#[[utilisation de Rsync]] - replaces utilisation de Rsync - 9/11/2014 17:00:00 by namb
<<<

----
On 20/01/2015 22:50:12, namb imported 82 tiddlers from
[[file:///home/namb/Documents/perso/bdc/bdc2.html|file:///home/namb/Documents/perso/bdc/bdc2.html]]:
<<<
#[[ASCII]] - replaces ASCII - 9/11/2014 17:01:00 by namb
#[[Carroyage : affectation de données au carreau à partir de données vectorielles sous Grass (méthode raster)]] - replaces Carroyage : affectation de données au carreau à partir de données vectorielles sous Grass (méthode raster) - 9/25/2014 22:21:00 by namb
#[[Créer un MNT (Modèle Numérique de Terrain) régional unique à partir de plusieurs MNT départementaux avec Grass]] - replaces Créer un MNT (Modèle Numérique de Terrain) régional unique à partir de plusieurs MNT départementaux avec Grass - 11/6/2014 15:57:00 by Namb
#[[Créer une image géoréférencée depuis la fenêtre carte de QGIS]] - replaces Créer une image géoréférencée depuis la fenêtre carte de QGIS - 9/11/2014 16:53:00 by VotreNom
#[[Détermination de classes de pente sur une zone d'étude à partir du MNT de l'IGN sous Grass]] - replaces Détermination de classes de pente sur une zone d'étude à partir du MNT de l'IGN sous Grass - 9/11/2014 16:53:00 by VotreNom
#[[Expression d'étiquettes multi-champs et retour chariot sous Mapinfo]] - replaces Expression d'étiquettes multi-champs et retour chariot sous Mapinfo - 9/11/2014 16:53:00 by VotreNom
#[[Gestion des doublons attributaires dans Mapinfo]] - replaces Gestion des doublons attributaires dans Mapinfo - 9/11/2014 16:53:00 by VotreNom
#[[Gestion des doublons géographiques dans Mapinfo]] - replaces Gestion des doublons géographiques dans Mapinfo - 9/11/2014 16:53:00 by VotreNom
#[[Gestion des recouvrements dans QGis]] - replaces Gestion des recouvrements dans QGis - 9/11/2014 16:54:00 by VotreNom
#[[Grass : schéma explicatif de la structuration des objets vectoriels et des données]] - added
#[[IDS]] - replaces IDS - 9/11/2014 17:02:00 by namb
#[[IPS]] - replaces IPS - 9/11/2014 17:02:00 by namb
#[[Inspire]] - replaces Inspire - 9/11/2014 17:02:00 by namb
#[[Maintien en condition opérationnelle]] - replaces Maintien en condition opérationnelle - 11/3/2014 10:29:00 by Namb
#[[Modèle de script bash]] - replaces Modèle de script bash - 9/11/2014 16:54:00 by VotreNom
#[[SIG]] - replaces SIG - 9/11/2014 17:03:00 by namb
#[[Transformer une cellule nombre en texte de nombre fixe de caractère (e.g. code INSEE) sous Excel ou Calc]] - replaces Transformer une cellule nombre en texte de nombre fixe de caractère (e.g. code INSEE) sous Excel ou Calc - 9/11/2014 16:54:00 by VotreNom
#[[Wi-Fi]] - replaces Wi-Fi - 9/11/2014 17:03:00 by namb
#[[afficher uniquement les répertoires en bash]] - replaces afficher uniquement les répertoires en bash - 9/11/2014 16:55:00 by VotreNom
#[[ajouter une ligne en début de fichier avec sed]] - replaces ajouter une ligne en début de fichier avec sed - 9/17/2014 14:23:00 by namb
#[[algorithme de tri bulle]] - replaces algorithme de tri bulle - 9/11/2014 16:55:00 by VotreNom
#[[algorithme de tri bulle (orienté java)]] - replaces algorithme de tri bulle (orienté java) - 9/11/2014 16:55:00 by VotreNom
#[[algorithme de tri par insertion (orienté java)]] - replaces algorithme de tri par insertion (orienté java) - 9/11/2014 16:55:00 by VotreNom
#[[algorithme de tri par sélection (orienté java)]] - replaces algorithme de tri par sélection (orienté java) - 9/11/2014 16:55:00 by VotreNom
#[[algorithme de tri shell (orienté java)]] - replaces algorithme de tri shell (orienté java) - 9/11/2014 16:55:00 by VotreNom
#[[algorithme récursif de recherche dichotomique (orienté java)]] - replaces algorithme récursif de recherche dichotomique (orienté java) - 9/11/2014 16:55:00 by VotreNom
#[[architectures de sécurité]] - replaces architectures de sécurité - 9/11/2014 17:03:00 by namb
#[[bash]] - replaces bash - 9/11/2014 17:04:00 by namb
#[[bureautique]] - replaces bureautique - 9/11/2014 17:04:00 by namb
#[[commandes de synchronisation d'un fichier par FTP]] - replaces commandes de synchronisation d'un fichier par FTP - 9/11/2014 16:56:00 by VotreNom
#[[commandes lvm]] - replaces commandes lvm - 9/11/2014 16:56:00 by VotreNom
#[[compter le nombre d'occurrences uniques d'un champ d'un fichier texte csv avec sed et sort]] - replaces compter le nombre d'occurrences uniques d'un champ d'un fichier texte csv avec sed et sort - 9/17/2014 15:21:00 by namb
#[[concaténation de deux champs avec sed]] - replaces concaténation de deux champs avec sed - 9/11/2014 16:56:00 by VotreNom
#[[configurer carte réseau avec ethtool]] - replaces configurer carte réseau avec ethtool - 9/11/2014 16:56:00 by VotreNom
#[[contrôle d'accès]] - replaces contrôle d'accès - 9/11/2014 17:05:00 by namb
#[[couche liaison de données]] - replaces couche liaison de données - 9/11/2014 17:05:00 by namb
#[[couche physique]] - replaces couche physique - 9/11/2014 17:05:00 by namb
#[[couche réseau]] - replaces couche réseau - 9/11/2014 17:05:00 by namb
#[[couche transport]] - replaces couche transport - 11/3/2014 10:26:00 by Namb
#[[créer automatiquement les répertoires parents avec mkdir]] - replaces créer automatiquement les répertoires parents avec mkdir - 9/11/2014 16:57:00 by VotreNom
#[[cycle de développement d'un système d'information]] - replaces cycle de développement d'un système d'information - 9/11/2014 17:05:00 by namb
#[[cycle en V]] - replaces cycle en V - 9/11/2014 17:06:00 by namb
#[[diagramme de GANTT]] - replaces diagramme de GANTT - 9/11/2014 17:06:00 by namb
#[[droit]] - replaces droit - 9/11/2014 17:06:00 by namb
#[[droits UNIX]] - replaces droits UNIX - 9/11/2014 17:06:00 by namb
#[[développement]] - replaces développement - 9/11/2014 17:12:00 by namb
#[[exemple]] - replaces exemple - 10/3/2013 13:38:00 by VotreNom
#[[expressions régulières]] - replaces expressions régulières - 9/11/2014 17:07:00 by namb
#[[extension de volume logique et système de fichier à chaud]] - replaces extension de volume logique et système de fichier à chaud - 9/11/2014 16:57:00 by namb
#[[find]] - replaces find - 9/11/2014 16:57:00 by namb
#[[historique des systèmes UNIX]] - replaces historique des systèmes UNIX - 9/11/2014 17:07:00 by namb
#[[identification des disques par uuid dans /etc/fstab]] - replaces identification des disques par uuid dans /etc/fstab - 9/11/2014 16:57:00 by namb
#[[licence Creative Commons]] - replaces licence Creative Commons - 9/11/2014 17:07:00 by namb
#[[linux]] - replaces linux - 9/11/2014 17:08:00 by namb
#[[loi informatique et libertés]] - replaces loi informatique et libertés - 9/11/2014 17:08:00 by namb
#[[lspci]] - replaces lspci - 9/11/2014 16:58:00 by namb
#[[monitoring réseau]] - replaces monitoring réseau - 9/11/2014 17:08:00 by namb
#[[montage ntfs-3g]] - replaces montage ntfs-3g - 9/11/2014 16:58:00 by namb
#[[mount.cifs]] - replaces mount.cifs - 9/11/2014 17:00:00 by namb
#[[paradigme]] - replaces paradigme - 9/11/2014 17:08:00 by namb
#[[portail captif]] - replaces portail captif - 9/11/2014 17:09:00 by namb
#[[processus]] - replaces processus - 9/11/2014 17:09:00 by namb
#[[processus métier]] - replaces processus métier - 9/11/2014 17:09:00 by namb
#[[programmation]] - replaces programmation - 9/11/2014 17:09:00 by namb
#[[propriété intellectuelle]] - replaces propriété intellectuelle - 9/11/2014 17:09:00 by namb
#[[redirection des sorties standard et erreur dans un script bash]] - replaces redirection des sorties standard et erreur dans un script bash - 9/11/2014 16:58:00 by namb
#[[remplacer les chemins à l'intérieur d'un fichier texte avec sed]] - replaces remplacer les chemins à l'intérieur d'un fichier texte avec sed - 9/11/2014 16:58:00 by namb
#[[renommer en masse des fichiers avec sed]] - replaces renommer en masse des fichiers avec sed - 9/11/2014 16:58:00 by namb
#[[rsync]] - replaces rsync - 9/11/2014 17:10:00 by namb
#[[réseau PERT]] - replaces réseau PERT - 9/11/2014 17:10:00 by namb
#[[sauvegarde totale linux via rsync]] - replaces sauvegarde totale linux via rsync - 9/11/2014 16:59:00 by namb
#[[sed]] - replaces sed - 9/11/2014 17:11:00 by namb
#[[sgid]] - replaces sgid - 9/11/2014 17:11:00 by namb
#[[standards UNIX]] - replaces standards UNIX - 9/11/2014 17:11:00 by namb
#[[sticky bit]] - replaces sticky bit - 9/11/2014 17:11:00 by namb
#[[suid]] - replaces suid - 9/11/2014 17:11:00 by namb
#[[suppression de tous les blancs en fin de ligne avec sed]] - replaces suppression de tous les blancs en fin de ligne avec sed - 9/11/2014 16:59:00 by namb
#[[système]] - replaces système - 9/11/2014 17:11:00 by namb
#[[système d'information]] - replaces système d'information - 1/20/2015 22:15:00 by namb
#[[sécurité Wi-Fi]] - replaces sécurité Wi-Fi - 9/11/2014 17:12:00 by namb
#[[séparer un fichier en n fichiers correspondant à la valeur d'un champ]] - replaces séparer un fichier en n fichiers correspondant à la valeur d'un champ - 9/11/2014 16:59:00 by namb
#[[utilisation de Rsync]] - replaces utilisation de Rsync - 9/11/2014 17:00:00 by namb
<<<

----
On 12/11/2014 15:44:25, namb imported 81 tiddlers from
[[file:///home/namb/Documents/perso/bdc/bdc2.html|file:///home/namb/Documents/perso/bdc/bdc2.html]]:
<<<
#[[ASCII]] - replaces ASCII - 9/11/2014 17:01:00 by namb
#[[Carroyage : affectation de données au carreau à partir de données vectorielles sous Grass (méthode raster)]] - replaces Carroyage : affectation de données au carreau à partir de données vectorielles sous Grass (méthode raster) - 9/25/2014 22:21:00 by namb
#[[Créer un MNT (Modèle Numérique de Terrain) régional unique à partir de plusieurs MNT départementaux avec Grass]] - added
#[[Créer une image géoréférencée depuis la fenêtre carte de QGIS]] - replaces Créer une image géoréférencée depuis la fenêtre carte de QGIS - 9/11/2014 16:53:00 by VotreNom
#[[Détermination de classes de pente sur une zone d'étude à partir du MNT de l'IGN sous Grass]] - replaces Détermination de classes de pente sur une zone d'étude à partir du MNT de l'IGN sous Grass - 9/11/2014 16:53:00 by VotreNom
#[[Expression d'étiquettes multi-champs et retour chariot sous Mapinfo]] - replaces Expression d'étiquettes multi-champs et retour chariot sous Mapinfo - 9/11/2014 16:53:00 by VotreNom
#[[Gestion des doublons attributaires dans Mapinfo]] - replaces Gestion des doublons attributaires dans Mapinfo - 9/11/2014 16:53:00 by VotreNom
#[[Gestion des doublons géographiques dans Mapinfo]] - replaces Gestion des doublons géographiques dans Mapinfo - 9/11/2014 16:53:00 by VotreNom
#[[Gestion des recouvrements dans QGis]] - replaces Gestion des recouvrements dans QGis - 9/11/2014 16:54:00 by VotreNom
#[[IDS]] - replaces IDS - 9/11/2014 17:02:00 by namb
#[[IPS]] - replaces IPS - 9/11/2014 17:02:00 by namb
#[[Inspire]] - replaces Inspire - 9/11/2014 17:02:00 by namb
#[[Maintien en condition opérationnelle]] - added
#[[Modèle de script bash]] - replaces Modèle de script bash - 9/11/2014 16:54:00 by VotreNom
#[[SIG]] - replaces SIG - 9/11/2014 17:03:00 by namb
#[[Transformer une cellule nombre en texte de nombre fixe de caractère (e.g. code INSEE) sous Excel ou Calc]] - replaces Transformer une cellule nombre en texte de nombre fixe de caractère (e.g. code INSEE) sous Excel ou Calc - 9/11/2014 16:54:00 by VotreNom
#[[Wi-Fi]] - replaces Wi-Fi - 9/11/2014 17:03:00 by namb
#[[afficher uniquement les répertoires en bash]] - replaces afficher uniquement les répertoires en bash - 9/11/2014 16:55:00 by VotreNom
#[[ajouter une ligne en début de fichier avec sed]] - replaces ajouter une ligne en début de fichier avec sed - 9/17/2014 14:23:00 by namb
#[[algorithme de tri bulle]] - replaces algorithme de tri bulle - 9/11/2014 16:55:00 by VotreNom
#[[algorithme de tri bulle (orienté java)]] - replaces algorithme de tri bulle (orienté java) - 9/11/2014 16:55:00 by VotreNom
#[[algorithme de tri par insertion (orienté java)]] - replaces algorithme de tri par insertion (orienté java) - 9/11/2014 16:55:00 by VotreNom
#[[algorithme de tri par sélection (orienté java)]] - replaces algorithme de tri par sélection (orienté java) - 9/11/2014 16:55:00 by VotreNom
#[[algorithme de tri shell (orienté java)]] - replaces algorithme de tri shell (orienté java) - 9/11/2014 16:55:00 by VotreNom
#[[algorithme récursif de recherche dichotomique (orienté java)]] - replaces algorithme récursif de recherche dichotomique (orienté java) - 9/11/2014 16:55:00 by VotreNom
#[[architectures de sécurité]] - replaces architectures de sécurité - 9/11/2014 17:03:00 by namb
#[[bash]] - replaces bash - 9/11/2014 17:04:00 by namb
#[[bureautique]] - replaces bureautique - 9/11/2014 17:04:00 by namb
#[[commandes de synchronisation d'un fichier par FTP]] - replaces commandes de synchronisation d'un fichier par FTP - 9/11/2014 16:56:00 by VotreNom
#[[commandes lvm]] - replaces commandes lvm - 9/11/2014 16:56:00 by VotreNom
#[[compter le nombre d'occurrences uniques d'un champ d'un fichier texte csv avec sed et sort]] - replaces compter le nombre d'occurrences uniques d'un champ d'un fichier texte csv avec sed et sort - 9/17/2014 15:21:00 by namb
#[[concaténation de deux champs avec sed]] - replaces concaténation de deux champs avec sed - 9/11/2014 16:56:00 by VotreNom
#[[configurer carte réseau avec ethtool]] - replaces configurer carte réseau avec ethtool - 9/11/2014 16:56:00 by VotreNom
#[[contrôle d'accès]] - replaces contrôle d'accès - 9/11/2014 17:05:00 by namb
#[[couche liaison de données]] - replaces couche liaison de données - 9/11/2014 17:05:00 by namb
#[[couche physique]] - replaces couche physique - 9/11/2014 17:05:00 by namb
#[[couche réseau]] - replaces couche réseau - 9/11/2014 17:05:00 by namb
#[[couche transport]] - replaces couche transport - 9/11/2014 17:05:00 by namb
#[[créer automatiquement les répertoires parents avec mkdir]] - replaces créer automatiquement les répertoires parents avec mkdir - 9/11/2014 16:57:00 by VotreNom
#[[cycle de développement d'un système d'information]] - replaces cycle de développement d'un système d'information - 9/11/2014 17:05:00 by namb
#[[cycle en V]] - replaces cycle en V - 9/11/2014 17:06:00 by namb
#[[diagramme de GANTT]] - replaces diagramme de GANTT - 9/11/2014 17:06:00 by namb
#[[droit]] - replaces droit - 9/11/2014 17:06:00 by namb
#[[droits UNIX]] - replaces droits UNIX - 9/11/2014 17:06:00 by namb
#[[développement]] - replaces développement - 9/11/2014 17:12:00 by namb
#[[exemple]] - replaces exemple - 10/3/2013 13:38:00 by VotreNom
#[[expressions régulières]] - replaces expressions régulières - 9/11/2014 17:07:00 by namb
#[[extension de volume logique et système de fichier à chaud]] - replaces extension de volume logique et système de fichier à chaud - 9/11/2014 16:57:00 by namb
#[[find]] - replaces find - 9/11/2014 16:57:00 by namb
#[[historique des systèmes UNIX]] - replaces historique des systèmes UNIX - 9/11/2014 17:07:00 by namb
#[[identification des disques par uuid dans /etc/fstab]] - replaces identification des disques par uuid dans /etc/fstab - 9/11/2014 16:57:00 by namb
#[[licence Creative Commons]] - replaces licence Creative Commons - 9/11/2014 17:07:00 by namb
#[[linux]] - replaces linux - 9/11/2014 17:08:00 by namb
#[[loi informatique et libertés]] - replaces loi informatique et libertés - 9/11/2014 17:08:00 by namb
#[[lspci]] - replaces lspci - 9/11/2014 16:58:00 by namb
#[[monitoring réseau]] - replaces monitoring réseau - 9/11/2014 17:08:00 by namb
#[[montage ntfs-3g]] - replaces montage ntfs-3g - 9/11/2014 16:58:00 by namb
#[[mount.cifs]] - replaces mount.cifs - 9/11/2014 17:00:00 by namb
#[[paradigme]] - replaces paradigme - 9/11/2014 17:08:00 by namb
#[[portail captif]] - replaces portail captif - 9/11/2014 17:09:00 by namb
#[[processus]] - replaces processus - 9/11/2014 17:09:00 by namb
#[[processus métier]] - replaces processus métier - 9/11/2014 17:09:00 by namb
#[[programmation]] - replaces programmation - 9/11/2014 17:09:00 by namb
#[[propriété intellectuelle]] - replaces propriété intellectuelle - 9/11/2014 17:09:00 by namb
#[[redirection des sorties standard et erreur dans un script bash]] - replaces redirection des sorties standard et erreur dans un script bash - 9/11/2014 16:58:00 by namb
#[[remplacer les chemins à l'intérieur d'un fichier texte avec sed]] - replaces remplacer les chemins à l'intérieur d'un fichier texte avec sed - 9/11/2014 16:58:00 by namb
#[[renommer en masse des fichiers avec sed]] - replaces renommer en masse des fichiers avec sed - 9/11/2014 16:58:00 by namb
#[[rsync]] - replaces rsync - 9/11/2014 17:10:00 by namb
#[[réseau PERT]] - replaces réseau PERT - 9/11/2014 17:10:00 by namb
#[[sauvegarde totale linux via rsync]] - replaces sauvegarde totale linux via rsync - 9/11/2014 16:59:00 by namb
#[[sed]] - replaces sed - 9/11/2014 17:11:00 by namb
#[[sgid]] - replaces sgid - 9/11/2014 17:11:00 by namb
#[[standards UNIX]] - replaces standards UNIX - 9/11/2014 17:11:00 by namb
#[[sticky bit]] - replaces sticky bit - 9/11/2014 17:11:00 by namb
#[[suid]] - replaces suid - 9/11/2014 17:11:00 by namb
#[[suppression de tous les blancs en fin de ligne avec sed]] - replaces suppression de tous les blancs en fin de ligne avec sed - 9/11/2014 16:59:00 by namb
#[[système]] - replaces système - 9/11/2014 17:11:00 by namb
#[[système d'information]] - replaces système d'information - 9/11/2014 17:12:00 by namb
#[[sécurité Wi-Fi]] - replaces sécurité Wi-Fi - 9/11/2014 17:12:00 by namb
#[[séparer un fichier en n fichiers correspondant à la valeur d'un champ]] - replaces séparer un fichier en n fichiers correspondant à la valeur d'un champ - 9/11/2014 16:59:00 by namb
#[[utilisation de Rsync]] - replaces utilisation de Rsync - 9/11/2014 17:00:00 by namb
<<<

----
On 29/09/2014 16:37:40, Namb imported 79 tiddlers from
[[file:///home/namb/perso/bdc/bdc2.html|file:///home/namb/perso/bdc/bdc2.html]]:
<<<
#[[ASCII]] - replaces ASCII - 9/11/2014 17:01:00 by namb
#[[Carroyage : affectation de données au carreau à partir de données vectorielles sous Grass (méthode raster)]] - replaces Carroyage : affectation de données au carreau à partir de données vectorielles sous Grass (méthode raster) - 9/11/2014 16:53:00 by VotreNom
#[[Créer une image géoréférencée depuis la fenêtre carte de QGIS]] - replaces Créer une image géoréférencée depuis la fenêtre carte de QGIS - 9/11/2014 16:53:00 by VotreNom
#[[Détermination de classes de pente sur une zone d'étude à partir du MNT de l'IGN sous Grass]] - replaces Détermination de classes de pente sur une zone d'étude à partir du MNT de l'IGN sous Grass - 9/11/2014 16:53:00 by VotreNom
#[[Expression d'étiquettes multi-champs et retour chariot sous Mapinfo]] - replaces Expression d'étiquettes multi-champs et retour chariot sous Mapinfo - 9/11/2014 16:53:00 by VotreNom
#[[Gestion des doublons attributaires dans Mapinfo]] - replaces Gestion des doublons attributaires dans Mapinfo - 9/11/2014 16:53:00 by VotreNom
#[[Gestion des doublons géographiques dans Mapinfo]] - replaces Gestion des doublons géographiques dans Mapinfo - 9/11/2014 16:53:00 by VotreNom
#[[Gestion des recouvrements dans QGis]] - replaces Gestion des recouvrements dans QGis - 9/11/2014 16:54:00 by VotreNom
#[[IDS]] - replaces IDS - 9/11/2014 17:02:00 by namb
#[[IPS]] - replaces IPS - 9/11/2014 17:02:00 by namb
#[[Inspire]] - replaces Inspire - 9/11/2014 17:02:00 by namb
#[[Modèle de script bash]] - replaces Modèle de script bash - 9/11/2014 16:54:00 by VotreNom
#[[SIG]] - replaces SIG - 9/11/2014 17:03:00 by namb
#[[Transformer une cellule nombre en texte de nombre fixe de caractère (e.g. code INSEE) sous Excel ou Calc]] - replaces Transformer une cellule nombre en texte de nombre fixe de caractère (e.g. code INSEE) sous Excel ou Calc - 9/11/2014 16:54:00 by VotreNom
#[[Wi-Fi]] - replaces Wi-Fi - 9/11/2014 17:03:00 by namb
#[[afficher uniquement les répertoires en bash]] - replaces afficher uniquement les répertoires en bash - 9/11/2014 16:55:00 by VotreNom
#[[ajouter une ligne en début de fichier avec sed]] - added
#[[algorithme de tri bulle]] - replaces algorithme de tri bulle - 9/11/2014 16:55:00 by VotreNom
#[[algorithme de tri bulle (orienté java)]] - replaces algorithme de tri bulle (orienté java) - 9/11/2014 16:55:00 by VotreNom
#[[algorithme de tri par insertion (orienté java)]] - replaces algorithme de tri par insertion (orienté java) - 9/11/2014 16:55:00 by VotreNom
#[[algorithme de tri par sélection (orienté java)]] - replaces algorithme de tri par sélection (orienté java) - 9/11/2014 16:55:00 by VotreNom
#[[algorithme de tri shell (orienté java)]] - replaces algorithme de tri shell (orienté java) - 9/11/2014 16:55:00 by VotreNom
#[[algorithme récursif de recherche dichotomique (orienté java)]] - replaces algorithme récursif de recherche dichotomique (orienté java) - 9/11/2014 16:55:00 by VotreNom
#[[architectures de sécurité]] - replaces architectures de sécurité - 9/11/2014 17:03:00 by namb
#[[bash]] - replaces bash - 9/11/2014 17:04:00 by namb
#[[bureautique]] - replaces bureautique - 9/11/2014 17:04:00 by namb
#[[commandes de synchronisation d'un fichier par FTP]] - replaces commandes de synchronisation d'un fichier par FTP - 9/11/2014 16:56:00 by VotreNom
#[[commandes lvm]] - replaces commandes lvm - 9/11/2014 16:56:00 by VotreNom
#[[compter le nombre d'occurrences uniques d'un champ d'un fichier texte csv avec sed et sort]] - added
#[[concaténation de deux champs avec sed]] - replaces concaténation de deux champs avec sed - 9/11/2014 16:56:00 by VotreNom
#[[configurer carte réseau avec ethtool]] - replaces configurer carte réseau avec ethtool - 9/11/2014 16:56:00 by VotreNom
#[[contrôle d'accès]] - replaces contrôle d'accès - 9/11/2014 17:05:00 by namb
#[[couche liaison de données]] - replaces couche liaison de données - 9/11/2014 17:05:00 by namb
#[[couche physique]] - replaces couche physique - 9/11/2014 17:05:00 by namb
#[[couche réseau]] - replaces couche réseau - 9/11/2014 17:05:00 by namb
#[[couche transport]] - replaces couche transport - 9/11/2014 17:05:00 by namb
#[[créer automatiquement les répertoires parents avec mkdir]] - replaces créer automatiquement les répertoires parents avec mkdir - 9/11/2014 16:57:00 by VotreNom
#[[cycle de développement d'un système d'information]] - replaces cycle de développement d'un système d'information - 9/11/2014 17:05:00 by namb
#[[cycle en V]] - replaces cycle en V - 9/11/2014 17:06:00 by namb
#[[diagramme de GANTT]] - replaces diagramme de GANTT - 9/11/2014 17:06:00 by namb
#[[droit]] - replaces droit - 9/11/2014 17:06:00 by namb
#[[droits UNIX]] - replaces droits UNIX - 9/11/2014 17:06:00 by namb
#[[développement]] - replaces développement - 9/11/2014 17:12:00 by namb
#[[exemple]] - replaces exemple - 10/3/2013 13:38:00 by VotreNom
#[[expressions régulières]] - replaces expressions régulières - 9/11/2014 17:07:00 by namb
#[[extension de volume logique et système de fichier à chaud]] - replaces extension de volume logique et système de fichier à chaud - 9/11/2014 16:57:00 by namb
#[[find]] - replaces find - 9/11/2014 16:57:00 by namb
#[[historique des systèmes UNIX]] - replaces historique des systèmes UNIX - 9/11/2014 17:07:00 by namb
#[[identification des disques par uuid dans /etc/fstab]] - replaces identification des disques par uuid dans /etc/fstab - 9/11/2014 16:57:00 by namb
#[[licence Creative Commons]] - replaces licence Creative Commons - 9/11/2014 17:07:00 by namb
#[[linux]] - replaces linux - 9/11/2014 17:08:00 by namb
#[[loi informatique et libertés]] - replaces loi informatique et libertés - 9/11/2014 17:08:00 by namb
#[[lspci]] - replaces lspci - 9/11/2014 16:58:00 by namb
#[[monitoring réseau]] - replaces monitoring réseau - 9/11/2014 17:08:00 by namb
#[[montage ntfs-3g]] - replaces montage ntfs-3g - 9/11/2014 16:58:00 by namb
#[[mount.cifs]] - replaces mount.cifs - 9/11/2014 17:00:00 by namb
#[[paradigme]] - replaces paradigme - 9/11/2014 17:08:00 by namb
#[[portail captif]] - replaces portail captif - 9/11/2014 17:09:00 by namb
#[[processus]] - replaces processus - 9/11/2014 17:09:00 by namb
#[[processus métier]] - replaces processus métier - 9/11/2014 17:09:00 by namb
#[[programmation]] - replaces programmation - 9/11/2014 17:09:00 by namb
#[[propriété intellectuelle]] - replaces propriété intellectuelle - 9/11/2014 17:09:00 by namb
#[[redirection des sorties standard et erreur dans un script bash]] - replaces redirection des sorties standard et erreur dans un script bash - 9/11/2014 16:58:00 by namb
#[[remplacer les chemins à l'intérieur d'un fichier texte avec sed]] - replaces remplacer les chemins à l'intérieur d'un fichier texte avec sed - 9/11/2014 16:58:00 by namb
#[[renommer en masse des fichiers avec sed]] - replaces renommer en masse des fichiers avec sed - 9/11/2014 16:58:00 by namb
#[[rsync]] - replaces rsync - 9/11/2014 17:10:00 by namb
#[[réseau PERT]] - replaces réseau PERT - 9/11/2014 17:10:00 by namb
#[[sauvegarde totale linux via rsync]] - replaces sauvegarde totale linux via rsync - 9/11/2014 16:59:00 by namb
#[[sed]] - replaces sed - 9/11/2014 17:11:00 by namb
#[[sgid]] - replaces sgid - 9/11/2014 17:11:00 by namb
#[[standards UNIX]] - replaces standards UNIX - 9/11/2014 17:11:00 by namb
#[[sticky bit]] - replaces sticky bit - 9/11/2014 17:11:00 by namb
#[[suid]] - replaces suid - 9/11/2014 17:11:00 by namb
#[[suppression de tous les blancs en fin de ligne avec sed]] - replaces suppression de tous les blancs en fin de ligne avec sed - 9/11/2014 16:59:00 by namb
#[[système]] - replaces système - 9/11/2014 17:11:00 by namb
#[[système d'information]] - replaces système d'information - 9/11/2014 17:12:00 by namb
#[[sécurité Wi-Fi]] - replaces sécurité Wi-Fi - 9/11/2014 17:12:00 by namb
#[[séparer un fichier en n fichiers correspondant à la valeur d'un champ]] - replaces séparer un fichier en n fichiers correspondant à la valeur d'un champ - 9/11/2014 16:59:00 by namb
#[[utilisation de Rsync]] - replaces utilisation de Rsync - 9/11/2014 17:00:00 by namb
<<<

----
On 11/09/2014 17:20:31, Namb imported 77 tiddlers from
[[file:///home/namb/perso/bdc/bdc2.html|file:///home/namb/perso/bdc/bdc2.html]]:
<<<
#[[ASCII]] - added
#[[Carroyage : affectation de données au carreau à partir de données vectorielles sous Grass (méthode raster)]] - added
#[[Créer une image géoréférencée depuis la fenêtre carte de QGIS]] - added
#[[Détermination de classes de pente sur une zone d'étude à partir du MNT de l'IGN sous Grass]] - added
#[[Expression d'étiquettes multi-champs et retour chariot sous Mapinfo]] - added
#[[Gestion des doublons attributaires dans Mapinfo]] - added
#[[Gestion des doublons géographiques dans Mapinfo]] - added
#[[Gestion des recouvrements dans QGis]] - added
#[[IDS]] - added
#[[IPS]] - added
#[[Inspire]] - added
#[[Modèle de script bash]] - added
#[[SIG]] - added
#[[Transformer une cellule nombre en texte de nombre fixe de caractère (e.g. code INSEE) sous Excel ou Calc]] - added
#[[Wi-Fi]] - added
#[[afficher uniquement les répertoires en bash]] - added
#[[algorithme de tri bulle]] - added
#[[algorithme de tri bulle (orienté java)]] - added
#[[algorithme de tri par insertion (orienté java)]] - added
#[[algorithme de tri par sélection (orienté java)]] - added
#[[algorithme de tri shell (orienté java)]] - added
#[[algorithme récursif de recherche dichotomique (orienté java)]] - added
#[[architectures de sécurité]] - added
#[[bash]] - added
#[[bureautique]] - added
#[[commandes de synchronisation d'un fichier par FTP]] - added
#[[commandes lvm]] - added
#[[concaténation de deux champs avec sed]] - added
#[[configurer carte réseau avec ethtool]] - added
#[[contrôle d'accès]] - added
#[[couche liaison de données]] - added
#[[couche physique]] - added
#[[couche réseau]] - added
#[[couche transport]] - added
#[[créer automatiquement les répertoires parents avec mkdir]] - added
#[[cycle de développement d'un système d'information]] - added
#[[cycle en V]] - added
#[[diagramme de GANTT]] - added
#[[droit]] - added
#[[droits UNIX]] - added
#[[développement]] - added
#[[exemple]] - added
#[[expressions régulières]] - added
#[[extension de volume logique et système de fichier à chaud]] - added
#[[find]] - added
#[[historique des systèmes UNIX]] - added
#[[identification des disques par uuid dans /etc/fstab]] - added
#[[licence Creative Commons]] - added
#[[linux]] - added
#[[loi informatique et libertés]] - added
#[[lspci]] - added
#[[monitoring réseau]] - added
#[[montage ntfs-3g]] - added
#[[mount.cifs]] - added
#[[paradigme]] - added
#[[portail captif]] - added
#[[processus]] - added
#[[processus métier]] - added
#[[programmation]] - added
#[[propriété intellectuelle]] - added
#[[redirection des sorties standard et erreur dans un script bash]] - added
#[[remplacer les chemins à l'intérieur d'un fichier texte avec sed]] - added
#[[renommer en masse des fichiers avec sed]] - added
#[[rsync]] - added
#[[réseau PERT]] - added
#[[sauvegarde totale linux via rsync]] - added
#[[sed]] - added
#[[sgid]] - added
#[[standards UNIX]] - added
#[[sticky bit]] - added
#[[suid]] - added
#[[suppression de tous les blancs en fin de ligne avec sed]] - added
#[[système]] - added
#[[système d'information]] - added
#[[sécurité Wi-Fi]] - added
#[[séparer un fichier en n fichiers correspondant à la valeur d'un champ]] - added
#[[utilisation de Rsync]] - added
<<<

----
On jeu. 03 oct. 2013 13:40:47 CEST, Namb imported 15 tiddlers from
[[file:///home/namb/perso/bdc/bdc2.html|file:///home/namb/perso/bdc/bdc2.html]]:
<<<
#[[Créer une image géoréférencée depuis la fenêtre carte de QGIS]] - replaces Créer une image géoréférencée depuis la fenêtre carte de QGIS - 10/3/2013 13:35:00 by VotreNom
#[[Détermination de classes de pente sur une zone d'étude à partir du MNT de l'IGN sous Grass]] - replaces Détermination de classes de pente sur une zone d'étude à partir du MNT de l'IGN sous Grass - 7/22/2013 12:37:00 by Nico
#[[Gestion des doublons attributaires dans Mapinfo]] - replaces Gestion des doublons attributaires dans Mapinfo - 5/24/2013 16:49:00 by Nico
#[[Gestion des doublons géographiques dans Mapinfo]] - replaces Gestion des doublons géographiques dans Mapinfo - 5/24/2013 16:48:00 by Nico
#[[Gestion des recouvrements dans QGis]] - replaces Gestion des recouvrements dans QGis - 10/3/2013 13:34:00 by VotreNom
#[[Inspire]] - replaces Inspire - 10/3/2013 13:31:00 by VotreNom
#[[SIG]] - replaces SIG - 5/24/2013 17:10:00 by Nico
#[[concaténation de deux champs avec sed]] - replaces concaténation de deux champs avec sed - 5/24/2013 16:22:00 by Nico
#[[exemple]] - added
#[[identification des disques par uuid dans /etc/fstab]] - replaces identification des disques par uuid dans /etc/fstab - 10/3/2013 13:32:00 by VotreNom
#[[info]] - added
#[[renommer en masse des fichiers avec sed]] - replaces renommer en masse des fichiers avec sed - 10/3/2013 13:33:00 by VotreNom
#[[suppression de tous les blancs en fin de ligne]] - replaces suppression de tous les blancs en fin de ligne - 10/3/2013 13:33:00 by VotreNom
#[[séparer un fichier en n fichiers correspondant à la valeur d'un champ]] - added
#[[technique]] - replaces technique - 5/28/2013 15:01:00 by Nico
<<<

----
On jeu. 03 oct. 2013 13:40:03 CEST, Namb imported 11 tiddlers from
[[publié excludeLists|publié excludeLists]]:
<<<
#[[Créer une image géoréférencée depuis la fenêtre carte de QGIS]] - added
#[[Détermination de classes de pente sur une zone d'étude à partir du MNT de l'IGN sous Grass]] - added
#[[Gestion des doublons attributaires dans Mapinfo]] - added
#[[Gestion des doublons géographiques dans Mapinfo]] - added
#[[Gestion des recouvrements dans QGis]] - added
#[[Inspire]] - added
#[[SIG]] - added
#[[concaténation de deux champs avec sed]] - added
#[[identification des disques par uuid dans /etc/fstab]] - added
#[[renommer en masse des fichiers avec sed]] - added
#[[suppression de tous les blancs en fin de ligne]] - added
<<<
(Infrastructure for spatial information in Europe)

Directive 2007/2/CE du Parlement européen et du Conseil du 14 mars 2007 établissant une infrastructure d'information géographique dans la Communauté européenne. Elle vise à favoriser les échanges de données entre au sein de la Communauté Européenne et impose aux différentes autorités publiques de mettre à disposition et de partager entre elles des données géographiques relevant de 34 thèmes généraux et plus spécialisés (environnement notamment).

Les obligations sont les suivantes :
*la fourniture de données selon des règles de mise en œuvre communes
*la constitution de catalogues de données (métadonnées)
*l'application de règles d'interopérabilité
*l'accès gratuit aux métadonnées
*l'accès aux données pour les acteurs réalisant des missions rentrant dans le cadre d'INSPIRE
*les services pour permettre ses accès
*l'existence d'une organisation adaptée pour piloter la moe de l'infrastructure.

Il s'agit bien d'une infrastructure, c'est à dire un ensemble de moyens techniques, organisationnels, réglementaires, humains, ... offrant un service de "bas niveau" (circulation, échange, méthodes, ..) aux utilisateurs de l'information géographique. On peut faire une analogie avec une infrastructure de transport par exemple : route/chemin de fer, règles de circulation, de gestion, de format d'objets, ...
[[développement]]
[[droit]]
[[méthodologie des SI]]
[[réseaux]]
[[sécurité des systèmes d'information]]
[[SIG]]
[[système]]

//à propos de ce site ://
[[NambWiki]]

[img[bdc2_IMG/trigramme_cielV2.png]] 
!Définition proposée (sources diverses, notamment utilisée au sein des services de l'Etat) :
Ensemble des activités destinées à conserver les caractéristiques fonctionnelles et non fonctionnelles d'un système d'information, et effectives au moment de sa mise en service opérationnelle, ce qui inclut les évolutions mineures, l'assistance et l'exploitation.
!Définition proposée (sources diverses, notamment utilisée au sein des services de l'Etat) :
Ensemble des activités destinées à conserver les caractéristiques fonctionnelles et non fonctionnelles d'un système d'information, et effectives au moment de sa mise en service opérationnelle, ce qui inclut les évolutions mineures, l'assistance et l'exploitation.

!Niveau applicatif Vs niveau infrastructure
*"maintenir" s'oppose à "développer", aux sens initiaux des termes : quand on maintien, on reste stable, on ne progresse pas, on ne régresse pas. ce qui signifie qu'une activité peut-être définie comme MCO si elle n'implique pas d'évolution dans le service qu'elle rend, la valeur ajoutée qu'elle produit. 
*dans le domaine des SI, "évoluer" doit-il être vu en terme de fonctionnalité uniquement ? Je dirais que oui. Une évolution importante de l'infrastructure hébergeant une application, voir du code, si elle n'impacte pas les services rendus, ne revient finalement qu'à la maintenir en condition opérationnelles et assurer sa pérennité.
*Si on se place dans le contexte du centre de production par contre, il y a bien un changement de fonctionnalités impactant le gestionnaire du service informatique chargé de fournir le service applicatif. On est donc plus dans la MCO de l'infrastructure, mais dans un projet d'évolution de l'infrastructure.
*au sein du SI de production, c'est donc les personnes chargées des projets qui vont mener l'opération d'évolution de l'infrastructure, considérée au niveau utilisateurs finaux et MOA comme une opération de MCO.



//{{{
#!/bin/bash
## script_user.sh
## génération automatique de la liste des utilisateurs par serveurs avec interrogation LDAP
# processus :
#	1. sur machine admin : interrogation LDAP et génération fichiers utilisateurs et groupes
#	2. sur machine admin : traitement de ces fichiers pour obtenir un fichier des utilisateurs trié par groupes
# 		et exploitable sous forme web
#	3. sur machine admin : envoi de ce fichier à tous les serveurs Unix/Linux
#	4. sur chaque machine : test présence .profile de chaque utilisateur et génération de la liste des utilisateurs locaux
#	5. sur machine admin : récupération du fichier utilisateur de chaque serveur pour exploitation web
# 
# ce que fait ce script :
#	1. déclaration des variables
#	2. redirection des sorties standard et erreur vers le(s) fichier(s) log
#	3. initiation du script
#	4. interrogation LDAP
#	5. traitement des fichiers LDAP et génération du fichier résultat
#	6. copie du fichier résultat sur les serveurs linux et UNIX
#	7. rétablissement des sorties standard et erreur
#	8. terminaison du script

 
# 1. définition des variables
PROJET="/home/user/dev/bash/script_user"
SCRIPTS="$PROJET/scripts"
DATAS="$PROJET/datas"
LOGS="$PROJET/logs"
FICHIER_GROUP=$DATAS/getent_group
FICHIER_PASSWD=$DATAS/getent_passwd
FICHIER_SERVEURS=$DATAS/liste_serveur
FICHIER_USER_GROUP_TMP=liste_user_group.tmp # fichier temporaire. Comme tout fichier destiné à être supprimé, on ne précise pas le chemin par sécurité
FICHIER_USER_GROUP=$DATAS/liste_user_group.txt # fichier résultat : liste des utilisateurs classés par leur groupe principal
FICHIER_LOG=$LOGS/$0.log
FICHIER_ERRLOG=$LOGS/$0.errlog

# 2. redirection de la sortie standard et de la sortie d'erreur
# 	2 choix possibles :
#	- vers des fichiers séparés : log et errlog
#	- vers un même fichier log
exec 3>&1           # Link file descriptor #3 with stdout.
                    # Saves stdout.
exec 4>&2	 # lie le descripteur de fichier 4 avec la sortie d'erreur
		# sauve la sortie erreur

exec >> $FICHIER_LOG     # stdout remplacé par le fichier log
exec 2>> $FICHIER_LOG # stderr remplacé par le fichier errlog 	  A DECOMMENTER POUR AVOIR UN SEUR FICHIER LOG
#exec 2>> $FICHIER_ERRLOG # stderr remplacé par le fichier errlog A DECOMMENTER POUR AVOIR 2 FICHIERS LOG ET ERRLOG

# 3. initiation du script
echo
echo "**** éxécution du script $0 le $(date)****"

# 4. interrogation du LDAP et génération des fichiers passwd et group
echo -n "- interrogation du LDAP et génération des fichiers passwd et group..."
echo "OK" 

# 5. traitement des fichiers passwd et group : le nom du groupe obtenu par correspondance
	# du gid dans le fichier passwd est ajouté en tête de ligne
echo -n "- traitement des fichiers passwd et group..."
	# test présence fichier passwd
if [ ! -f $FICHIER_PASSWD ]
	then 
		echo "NOK"
		echo "le fichier $FICHIER_PASSWD n'existe pas"
		echo "sortie du script"
		exit 1
fi

echo "OK"

# 6. copie de la liste des utilisateurs sur tous les serveurs
echo -n "- copie de la liste des utilisateurs sur tous les serveurs..."
echo "OK"

# 7. fin de la redirection des sorties standard et erreurs
exec 1>&3 3>&-      # Restore stdout and close file descriptor #3.
exec 2>&4 4>&-      # Restore stdout and close file descriptor #3.

# 8. terminaison du script
#exit 0

# FIN DU SCRIPT

//}}}
Bienvenue sur mon carnet de notes techniques et méthodologiques sur les [[systèmes d'information|système d'information]] en général, et en particulier les [[Systèmes d'Information Géographiques|SIG]], [[Linux|linux]], ... Ce site est d'abord à usage personnel, il me sert à retenir, retrouver et comprendre en posant les concepts et les techniques petit à petit, et en les liant les uns aux autres de manière non linéaire via liens et mots-clés.

Je suis actuellement administrateur d'infrastructure dans un centre de production public, et précédemment en charge du [[SIG]] dans une direction régionale de l'administration ([[mon profil LikedIn|https://www.linkedin.com/profile/public-profile-settings?trk=prof-edit-edit-public_profile]]).

Il a été réalisé avec [[TiddlyWiki|http://www.tiddlywiki.com]], v.2.8.et des poussières, un wiki portable extrêmement pratique à l'usage, où chaque article peut être créé et lié aux autres de manière très simple et rapide. Il est customisable à souhait et permet de grandes choses... quand j'aurai le temps :-).

Vous êtes libre de consulter et réutiliser le contenu de ce site comme bon vous semble, il m'a semblé utile d'en préciser la licence :creative commons CC-BY-SA
(Paternité et Partage des conditions initiales à l'identique).

Les commentaires ne sont pas possibles pour le moment, mais n'hésitez pas à [[me contacter|mailto:nico.amb@gmail.com]].

Nicolas AMB
http://google.com/+NicoAMB


Carnet de notes techniques et méthodologiques
NambWiki.net
Formule :
{{{
=TEXTE(C9;"00000")
}}}
sources : wikipedia

Wi-Fi (prononcé /wifi/) est une technologie déposée de réseau informatique sans fil mise en place pour fonctionner en réseau interne et, depuis, devenu un moyen d’accès à haut débit à Internet. Il est basé sur la norme IEEE 802.11 (ISO/CEI 8802-11).

!Structure (couches du protocole)

La norme 802.11 s’attache à définir les couches basses du modèle OSI pour une liaison sans fil utilisant des ondes électromagnétiques, c’est-à-dire :

*la couche physique (notée parfois couche PHY), proposant trois types de codage de l’information ;
*la couche liaison de données, constituée de deux sous-couches :
**le contrôle de la liaison logique (Logical Link Control, ou LLC) ;
**le contrôle d’accès au support (Media Access Control, ou MAC).

La couche physique définit la modulation des ondes radioélectriques et les caractéristiques de la signalisation pour la transmission de données, tandis que la couche liaison de données définit l’interface entre le bus de la machine et la couche physique, notamment une méthode d’accès proche de celle utilisée dans le standard Ethernet et les règles de communication entre les différentes stations. La norme 802.11 propose donc en réalité trois couches (une couche physique appelée PHY et deux sous-couches relatives à la couche liaison de données du modèle OSI), définissant des modes de transmission alternatifs que l'on peut représenter de la manière suivante:
|Couche Liaison de données||
||802.2 (LLC)|
||802.11 (MAC)|
|Couche Physique (PHY)|DSSS|FHSS|Infrarouges|

Il est possible d’utiliser n’importe quel protocole de transport sur un réseau 802.11 au même titre que sur un réseau ethernet.
*{{{ll -d */}}}
*{{{ls -l | grep ^d}}}
* ajouter une ligne écrite à la main :
{{{sed -i "1i\\ma_ligne" fichier_a_completer"}}}

*ajouter la première ligne d'un fichier d'origine
{{{sed -i "1i\\$(head -n 1 fichier_origine.txt)" S2_siegeR73.csv}}}
On peut bien sur renvoyer le résultat d'une autre commande : {{{$(commande_bash)}}}

*et enfin, automatisme à acquérir, sauvegarder le fichier initial avant qu'il soit modifé, avec l'extension qui va bien :
{{{sed -i.save "1i\\$(head -n 1 fichier_origine.txt)" S2_siegeR73.csv}}}
{{{
ENTREE :
un tableau d'entier

SORTIE :
un tableau d'entier trié dans l'ordre croissant

VARIABLE :
tableau d'entier t
entiers : indiceMax, i
booléen : permut

DEBUT :
indiceMax = (taille de t) - 1
REPETER
   permut = faux
   POUR i variant de 1 à indiceMax FAIRE
      SI t[i-1] > t[i] ALORS
         inverser t[i-1] et t [i]
         permut = vrai
      FIN SI
   FIN POUR
   IndiceMax--
TANT QUE permut = vrai
FIN

}}}
{{{
Tri_bulle(t[0 à N-1) // tableau de taille N
   boolean permut;
   int indiceMax = N - 1;
   REPETER
      permut = faux;
      POUR i variant de 1 à indiceMax FAIRE
         Si t[i-1] > t[i] ALORS
            echanger(t[i-1], t[i]);
            permut = true;
         FIN SI
      FIN POUR
      indiceMax--;
   TANT QUE permut = true;
FIN Tri_bulle
}}}
{{{
Tri_insert(t[0 à N-1]) // tableau de taille N
   POUR i variant de 1 à N-1 FAIRE
      valins = t[i];
      int j = i;
      TANT QUE (j > 0 ET t[j-1] > valins) FAIRE
         t[j] = t[j-1];
         j--;
      FIN TANT QUE
      t[j] = valins;
   FIN POUR
FIN Tri_insert
}}}
{{{
Tri_selec(t[0 à N-1]) // tableau de taille N
   POUR i allant de 0 à N-1 FAIRE
      int imin = i;
      POUR j VARIANT DE imin + 1 A N-1 FAIRE
         SI t[j] < t[imin] ALORS
            imin = j;
         FIN SI
      FIN POUR
      echange(t[i], t[imin]);
   FIN POUR
FIN Tri_selec
}}}
{{{
Tri_shell(t[0 à N-1]) // tableau de taille N
   //initialisation variable pas
   int pas = 0;
   TANT QUE (pas < N) FAIRE
      pas = 3 * pas + 1;
   FIN TANT QUE

   //debut algo
   TANT QUE (pas > 1) FAIRE
      pas = (pas - 1) / 3;
      int i = pas;
      POUR i variant de pas à N-1 FAIRE
         valins = t[i];
         int j = i;
         TANT QUE (j >= pas ET t[j-pas] > valins) FAIRE
            t[j] = t[j-pas];
            j = j - pas;
         FIN TANT QUE
         t[j] = valins;
      FIN POUR
   FIN TANT QUE
FIN Tri_shell
}}}
En langage naturel : pour trouver une valeur dans une liste ordonnée selon une relation d'ordre, on compare la valeur médiane m à la valeur v à rechercher :
- si m = v, on retourne m (cas de base)
- sinon si m < v on procède de même en prenant comme valeur de comparaison la médiane de moitié de la liste allant de m à la fin, et si m > v, en prenant comme valeur de comparaison la médiane de la moitié de la liste allant du début à m.


{{{
Recherche_Dichot(v, t[0 à N-1], ideb, ifin)   //t tableau de taille ordonné selon une relation d'ordre
   SI ideb > ifin ALORS
      retourner -1; //cas de base 1 : la valeur n'a pas été trouvée
   int m = (ideb + ifin)/2; //indice médian
   SI v = t[m] ALORS 
      retourner m;  //cas de base 2 : valeur trouvée
   SINON SI t[m] < v ALORS
      retourner Recherche_Dichot(v, t, m+1, ifin);
   SINON 
      retourner Recherche_Dichot(v, t, ideb, m-1);
FIN Recherche_Dichot;
}}}


<<<
Bash, acronyme de Bourne-Again shell, est le shell du projet GNU. Son nom est un jeu de mots sur le nom du shell historique d'Unix, le Bourne shell. Littéralement, Bourne again signifie « Bourne encore », mais se prononce également presque comme born again, signifiant « né de nouveau » ou encore « réincarné ». Également, to bash signifie « frapper violemment » en anglais.

Basé sur le Bourne shell, Bash lui apporte de nombreuses améliorations, provenant notamment du Korn shell et du C shell. Bash est un logiciel libre publié sous GNU GPL. Il est l'interprète par défaut sur de nombreux Unix libres, notamment sur les systèmes GNU/Linux. C'est aussi le shell par défaut de Mac OS X et il a été porté sous Windows par le projet Cygwin.
<<<
//[[source Wikipedia|http://fr.wikipedia.org/wiki/Bourne-Again_shell]]//


{{{
12 cp -p $LocalFile $LocalFile.old
13 cd "$LocalProject/$LocalDirectory"
14 ftp -n $Server <<End-Of-Session # -n option disables auto-logon
15 quote USER $User
16 quote PASS $Password
17 binary
18 newer "$Filename"
19 bye
20 End-Of-Session
21 
22 if test "$LocalFile".old -ot "$LocalFile"
23   then echo "$LocalFile a été mis-à-jour depuis Memotoo"
24   else
25 echo "upload de $LocalFile sur Memotoo.com"
26 ftp -n $Server <<End-Of-Session # -n option disables auto-logon
27 quote USER $User 
28 quote PASS $Password
29 put $Filename
30 End-Of-Session 
31 fi
32 rm "$LocalFile".old
}}}
*création d'un volume logique
{{{lvcreate -L 192M -n loadasiqdp00000 datavg}}}




{{{sed 's/\(.........\);.*/\1/' monFichier.csv | sort -u > monFichierSansDoublons.csv}}}
*{{{sed}}} pour extraire un champ, ici le premier, en utilisant les sous-chaînes identifiée par {{{( )}}} (voir [[ici|renommer en masse des fichiers avec sed]])
*{{{sort -u}}} pour trier et ne garder que les valeurs uniques de ce champ
exemple de ligne de code permettant d'ajouter un champ à partir de 2 champs existants :
{{{
sed -r 's/^(.{9});[0-9]{5};([0-9]*);.*/&;\1_\2/' Surfaces-2010_S2_R73_total.csv
}}}

*-r pour utiliser les expressions régulières étendues
*les () pour identifier les sous-parties rappelées par \1 \2 et & pour le tout
*ne pas oublier >> fichier pour enregistrer le résultat de la commande sur la sortie standard
- pour forcer une carte à 1000 bits/s sans autonégociation :
{{{ethtool -s eth0 speed 1000 autoneg off}}}
-informations sur le driver d'un port :
{{{ethtool -i eth0}}}
!principes
gestion des identités (des utilisateurs, ordinateurs, sites, ...)
*[[authentification]]
*Autorisation
*Comptabilisation ou traçabilité. 
(en anglais les trois A : Authentication, Authorization, Accountability)
<<<
La couche de liaison de données est la couche de protocole qui transfère des données entre les nœuds adjacents d'un réseau étendu (WAN) ou entre des nœuds sur le même segment d'un réseau local (LAN). La couche de liaison de données fournit les moyens fonctionnels et procéduraux pour le transfert de données entre des entités d'un réseau et, dans certains cas, les moyens de détecter et potentiellement corriger les erreurs qui peuvent survenir au niveau de la couche physique.

Ethernet pour les réseaux locaux (multi-nœuds), le protocole point à point (PPP), HDLC et ADCCP pour des connexions point à points (double nœud) sont des exemples de protocoles de liaison de données.
<<<
//[[source wikipedia|http://fr.wikipedia.org/wiki/Couche_liaison_de_donn%C3%A9es]]//



Véhicule des blocs d'information, appelés trames, sur des supports physiques. Une trame est composée d'une en-tête (header), du contenu et d'un postambule (trailer); elle encapsule des protocoles de niveaux supérieur, comme le protocole [[IP]] dont l'unité de base est le paquet.

sommaire
*[[Ethernet]]
*[[Wi-Fi]]
**[[sécurité Wi-Fi]]

<<<
La couche physique est chargée de la transmission effective des signaux électriques ou optiques entre les interlocuteurs.
Son service est généralement limité à l'émission et la réception d'un bit ou d'un train de bits continu (notamment pour les supports synchrones comme la fibre optique).

Cette couche est chargée de la conversion entre bits et signaux électriques ou optiques.
Elle est en pratique toujours réalisée par un circuit électronique spécifique.

Le service de cette couche est approximativement défini par :
*la norme ISO 7498-1
*précisée par ISO 10022
*précisée par la recommandation X211 du CCITT.
<<<
//[[source wikipedia|http://fr.wikipedia.org/wiki/Couche_physique]]//


sommaire :
*[[1000BASE-T]]
*[[Wi-Fi]]
<<<
La couche réseau construit une voie de communication de bout à bout à partir de voies de communication avec ses voisins directs. Ses apports fonctionnels principaux sont donc:
*le routage : détermination d'un chemin permettant de relier les 2 machines distantes;
*le relayage : retransmission d'un PDU (Protocol Data Unit ou Unité de données de protocole) dont la destination n'est pas locale pour le rapprocher de sa destination finale.
*le contrôle des flux : contrôle de congestion.

Cette couche est donc la seule à être directement concernée par la topologie du réseau. C'est aussi la dernière couche supportée par toutes les machines du réseau pour le transport des données utilisateur : les couches supérieures sont réalisées uniquement dans les machines d'extrémité.

Le PDU de cette couche est souvent appelé « paquet ». La fonction de «relayage» (terme OSI) est parfois appelée «acheminement».
<<<
//[[source wikipedia|http://fr.wikipedia.org/wiki/Couche_r%C3%A9seau]]//



*Internet Protocol [[IP]]
*sécurité de la couche réseau
**[[IPSEC]]
<<<
Définition OSI (ISO 7498-1)

La couche transport gère les communications de bout en bout entre processus. Cette couche est souvent la plus haute couche où on se préoccupe de la correction des erreurs (exception connue dans le monde IP : utilisation de DNS sur UDP). C'est-à-dire que le service de niveau transport consiste généralement en un service en mode connecté offrant le transfert de messages ou d'octets bruts garantis 
<<<
//[[source wikipedia|http://fr.wikipedia.org/wiki/Couche_transport]]//

sous-articles :
*[[TCP]]
*[[UDP]]
*[[interface socket]]
{{{mkdir -p logiciels/phpsybase}}}
Le développement d'un système d'information à partir d'un système réel repose sur 3 étapes fondamentales :
-analyse
-conception
-implémentation

Représentation du processus de développement d'un produit dont le principe est d'associer à chaque étape de spécification et conception une étape de validation de même niveau, dont le plan peut-être établi avant même de passer à l'étape suivante. Par exemple au stade de la spécification, on peut établir le plan de test de validation (recette usine, validation usine, VAU).

schéma du cycle en V :
[img[bdc2_IMG/Cycle_V_temps_details.JPG]]
Source wikipedia, image soumise à la licence de documentation libre GNU.
Outil d'ordonnancement et gestion de projet et permettant de visualiser dans le temps les diverses tâches liées composant un projet, permettant d'en suivre l'avancement, développé par Henry L. Gantt, ingénieur américain, vers 1910.

*les tâches sont affectées à des ressources humaines (une tâche = un responsable)
*on va pouvoir planifier et répartir les tâches selon la disponibilité des ressources
*le diagramme de GANTT fait apparaître en ordonnées les tâches et leurs interdépendance et en abscisse le temps.



sources :
Wikipedia
cours CNAM
Le droit de l'informatique a pour objectif la détermination des droits et devoirs des citoyens et le règlement des litiges relatifs à l'utilisation des systèmes d'informations. Les SI constituent une activité humaine, donc par définition soumise au droit, qui prend de plus en plus d'importance au fur et à mesure des progrès des technologies de l'information et de la communication, et de l'émergence de la société de l'information.

Des vides juridiques sont apparus avec les nouveaux usages de l'informatique et ont entraîné de la part du législateur la création de textes spécifiques. Toutefois, face à un vide juridique, la justice peut être rendue par analogie avec les lois existantes et créer ainsi une jurisprudence. 

L'objet de cette rubrique est de traiter des aspects légaux et réglementaires spécifiques aux systèmes d'information, thème par thème.

//sources : vie-publique.fr, textes officiels, http://www.commentcamarche.net/contents/droits/droits-internet.php3 (1)//, Wikipédia//

Les thèmes abordés sont variés, on peut tenter de les caractériser par objet :
*thèmes intéressant le gestionnaire ou l'utilisateur du système informatique, au sens infrastructures et outils
**[[protection des systèmes d'information]]

*thèmes intéressant le gestionnaire ou l'utilisateur de la donnée
**[[respect de la vie privée]]
**[[propriété intellectuelle]]
***[[licence]]
**[[droit conventionnel]]
**[[existence juridique des transactions informatiques]]
**[[relation entre l'administration et les citoyens]]

*thèmes généraux
**l'[[économie numérique]]
**[[cryptographie]] : les systèmes de chiffrement à clé supérieure à 40 bits et inférieurs à 128 bits sont tolérés moyennant une déclaration administrative, les système utilisant des clés supérieures à 128bits sont soumis à autorisation.






//(1) document intitulé « Introduction aux droits de l'informatique et d'internet » issu de Comment Ça Marche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons//
!Droits étendus
*[[suid]]
*[[sgid]]
*[[sticky bit]]
action de produire un logiciel, ou plus largement un système d'information.

Voir : 
*[[cycle de développement d'un système d'information]]
*[[génie logiciel]] pour la méthodologie appliquée au logiciel, notamment dans sa phase de développement (mais pas que)
*[[programmation]] pour les technique de codage
Entrer le texte de 'exemple'
ou regex (regular expression). Utilisées pour distinguer des chaînes de caractères correspondant à un motif particulier dans une chaîne de caractère (texte, nom de fichier, ...) les contenant. Les expressions régulières permettent de spécifier le motif, par exemple "les chaînes contenant le mot {{{bidule}}}", ou "les chaines commençant par le mot {{{truc}}}, ou "les chaînes commençant par {{{truc}}} et contenant aussi le mot {{{bidule}}}, ou encore "les chaînes contenant le mot {{{bidule}}} ou le mot {{{truc}}} et qui finissent obligatoirement par un ".", ...

En [[bash]], les syntaxes ci-dessous utilisent la commande {{{grep -E}}}, {{{-E}}} pour "Extended", c'est-à-dire se conformer à la norme POSIX ERE (Extended Regular Expressions), permettant plus de possibilités de motifs.

Attention : pour être sur du résultat et dans le doute, toujours utiliser {{{grep -E "motif"}}}, c'est-à-dire mettre les parenthèses et le {{{-E}}}, vous pourriez avoir des comportements inattendus.

!syntaxe de base
*{{{*}}} remplace n'importe quoi, y compris une chaîne vide
**{{{grep -E "*"}}}
*{{{*}}} précédé d'un élement signifie qu'on recherche de 0 à n fois cet élément.
**{{{grep -E ".*"}}} 
*concatenation : simplement ajouter les expressions les unes à la suite des autres
**{{{bidule}}} est la concatenation de toutes les lettres qui le compose
*union : {{{|}}} permet de spécifier 2 motifs permettant chacun de distinguer une chaîne :
**{{{grep -E "truc|bidule"}}} permet de distinguer les chaînes contenant {{{truc}}} ou {{{bidule}}}
*parenthèses  et priorité
**ordre de priorité : {{{*}}}, concatenation, {{{|}}}
**les parenthèses peuvent être utilisées pour spécifier les priorités

!les méta-caractères
En plus de {{{*}}} et {{{|}}}, il en existe un certain nombre sur lesquels un {{{man grep}}} ou Google pourront vous renseigner. 
//remarque :  le {{{/}}} permet d'échapper un méta-caractère, c'est-à-dire de le considérer comme un caractère normal//
*{{{grep -E "^a"}}} : commence par a
*{{{grep -E "a$"}}} : finit par a
les accolades, intervales et classes
*{{{grep -E "[0123456789]$"}}} équivalent {{{[0-9]$}}} : compris dans l'ensemble défini entre accolades, en l'occurence recherche ce qui finit par un chiffre
*{{{grep -E "*[[:digit:]]$"}}} : fait la même chose, via la classe digit
*{{{grep -E "*[^0-9]$"}}} recherche ce qui ne finit PAS par un chiffre


{{{
#lvextend --size +512M /dev/rootvg/var 
  Extending logical volume var to 1,50 GB
  Logical volume var successfully resized

# ext2online /var/
ext2online v1.1.18 - 2001/03/18 for EXT2FS 0.5b
# df -h /var/
Sys. de fich.         Tail. Occ. Disp. %Occ. Monté sur
/dev/mapper/rootvg-var
                      1,5G  893M  543M  63% /var
}}}
exemples d'utilisation :
{{{find . -mtime +2 -print -exec mv {} poub \; }}}

1969 : Ken Thompson (Bell Laboratories, filiale de AT&T) développe une première version d'UNIX (dérivé de UNICS) en assembleur. 
1971 : Dennis Ritchie (Bell Lab.) développe le C, à partir du B, dans le but de réécrire UNIX avec Ken thompson.
1972 - 1979 : développement des version 1 à 7 d'UNIX
1977 : Bill Joy, de l'Université de Californie, développe BSD (Berkeley Software Distribution).

3 branches initiales se sont développées :
- la branche de recherche d'AT&T, qui développa jusqu'en 1990 Unix jusqu'à la version 10,
- la branche commerciale d'AT&T qui développa systemIII puis systemV,
- la branche BSD, jusqu'en 1994.

Les principales familles issues de ces 3 branches :
- les UNIX propriétaires (AIX, HP-UX, etc.) issus de systemV,
- NetBSB, FreeBSD, OpenBSD et MacOS issus de BSD,
- Solaris et Linux, issus des 2 branches.



Intérêt : pouvoir identifier de manière sure un disque susceptible de changer de dénomination par bus (type "/dev/hdx ou /dev/sdx"), par exemple s'il s'agit d'un périphérique usb numéroté à chaque fois dans l'ordre de connexion.
La possibilité d'affecter un identifiant unique et permanent à chaque périphérique bloc à été introduite par [[udev]].

#identifier l'uuid du périphérique
//{{{
dev-wikiciv-001:/home/couscous# ll /dev/disk/by-uuid/
total 0
lrwxrwxrwx 1 root root 10 aoû 22  2009 3f2df6da-5d8c-4c4f-a133-0b916cd0ecd0 -> ../../hda6
lrwxrwxrwx 1 root root 10 aoû 22  2009 4ba05425-bfe1-4c8f-a509-ed9df30cd7b2 -> ../../hda2
lrwxrwxrwx 1 root root 10 aoû 22  2009 68C4F6F3C4F6C27C -> ../../hda1
lrwxrwxrwx 1 root root 10 aoû 22  2009 80578e4c-26f8-4e07-a39c-b3adb1a21196 -> ../../hda9
lrwxrwxrwx 1 root root 10 aoû 22 12:16 B09C-589C -> ../../sda1
lrwxrwxrwx 1 root root 10 aoû 22  2009 c774a73a-b800-4605-a1fb-ca98b8aba97d -> ../../hda5
lrwxrwxrwx 1 root root 10 aoû 22  2009 D2C86C27C86C0BD3 -> ../../hdb1
lrwxrwxrwx 1 root root 10 aoû 22  2009 f07fa26f-e273-47a1-967b-ff03bfc419d7 -> ../../hda8
//}}}

#remplacer dans /etc/fstab la dénomination par bus par UUID=xxxx dans la première colonne
//{{{
dev-wikiciv-001:/home/couscous# sed -i".22082009" "s/\/dev\/sdb1/UUID=B09C-589C/g" /etc/fstab 
dev-wikiciv-001:/home/couscous# cat /etc/fstab
...
UUID=B09C-589C	/mnt/usb_nico	vfat	user,rw		0	0
...
//}}}
Les licences Creative Commons sont un ensemble de licences régissant les droits d'utilisation, de réutilisation ou de distribution d'œuvre, notamment diffusées sur Internet. Elles ont été élaborées par Creative Commons et publiées en 2002. Leur objectif est de protéger les droits d'auteurs tout en permettant la libre circulation de l'œuvre.
source : [[wikipédia|http://fr.wikipedia.org/wiki/Licence_Creative_Commons]]
<<<
Linux est le nom couramment donné à tout système d'exploitation libre fonctionnant avec le noyau Linux. C'est une implémentation libre du système UNIX respectant les spécifications POSIX. Ce système est né de la rencontre entre le mouvement du logiciel libre et le modèle de développement collaboratif et décentralisé via Internet. Son nom vient du créateur du noyau Linux, Linus Torvalds.
<<<
//[[source Wikipedia|http://fr.wikipedia.org/wiki/Linux]]
!Présentation et évolutions
La ''loi du 6 janvier 1978'' relative à l'informatique, aux fichiers et aux libertés a pour objectif la protection de la vie privée et des libertés individuelles. Elle a été complétée et modifiée à plusieurs reprises, notamment par le ''décret du 4 novembre 1991'', qui réorganise les fichiers des renseignements généraux en autorisant les traitements de données nominatives faisant apparaître notamment les activités politiques, philosophiques, religieuses ou syndicales relatives à des personnes exerçant ou ayant un rôle politique et social significatif.

La ''loi du 6 aout 2004'' tend à mettre en œuvre la ''directive européenne 95/46/CE'' du 24 octobre 1995 visant à la protection et à la libre circulation des données à caractère personnel au sein de l'UE. 
Elle limite de le contrôle a priori des fichiers par la CNIL et lui substitue un contrôle le plus souvent a posteriori, avec des possibilités effectives d'intervention renforcées et des des pouvoirs de sanction administrative graduée. 
Elle fait disparaître la distinction entre secteur public et secteur privé au profit d’une distinction en fonction du type de traitement, encadre les traitements non automatisés de données contenues ou appelés à figurer dans des fichiers et simplifie également les procédures pour certains types de traitements avec la possibilité de mettre en place un CIL.


!Les principales dispositions
*périmètre d'application : les traitements automatisés de données à caractère personnel et les traitement non automatisés contenant des données à caractère personnel contenue dans des fichiers ou susceptibles de l'être.
*les données à caractère personnel sont des données relatives à une personne physique et susceptible de permettre son identification directe ou indirecte. 
*conditions de licéité : les données doivent avoir été collectées et traitées de manière loyale, pour une finalité définie, exactes et rectifiées si nécessaire, et conservées pour une durée n'excédant pas la durée nécessaire à la réalisation de la finalité initiale. Il faut également avoir reçu le consentement des personnes concernée, à certaines exception près comme l'exécution d'une mission de service public.
*les traitements de certaines données à caractère personnel sont interdits, sauf exceptions prévues par la loi, notamment les données faisant apparaître les origines ethniques ou raciales, les opinions politiques, philosophiques ou religieuses, l'appartenance syndicale, ou en rapport avec la santé ou la vie sexuelle des personnes.
*la Comission Nationale Informatique et Libertés (CNIL) est une autorité administrative indépendante chargée de veiller au respect de la loi et de l'accomplissement de ses objectifs. Les traitements de données à caractère personnel doivent faire l'objet d'une déclaration auprès de la CNIL, voir sont soumises à autorisation, notamment les interconnexions de fichiers d'intérêts publics différents ou les fichiers contenant le numéro de sécurité sociale.
*Les organisation peuvent nommer un Correspondant Informatique et Libertés (CIL), chargé du respect de la Loi à l'intérieur de l'organisation, et se dispenser de l'obligation de déclaration.
*Les responsables des traitements de données à caractère personnel ont également des obligations, notamment celles d'informer la personne lors de la collecte et de prendre toute précaution utile pour assurer la sécurité de ces informations.
*Les droits des particuliers reconnus par la LIL sont le droit d'information, d'opposition, d'accès et de rectification.

//sources : wikipédia, vie-publique.fr, [[site du Forum des droits sur l’internet|http://www.foruminternet.org/specialistes/publications/dossiers/dossier-nbsp-loi-informatique-et-libertes-un-nouveau-cadre-juridique-pour-le-traitement-des-donnees-a-caractere-personnel-nbsp.html]]//
Liste les périphériques gérés par le [[noyau]]
Outils de surveillance du réseau :
*tcpdump : outil texte de capture de flux
*ehtreal :outil graphique de capture et d'affichage des traces
commande de montage d'un système de fichier NTFS :
{{{mount -t ntfs-3g /dev/sda1 /mnt/bigone/}}}

ligne correspondante dans /etc/fstab :
{{{/dev/sda1       /mnt/bigone/    ntfs-3g rw		0       0}}}
montage d'un partage réseau sur Vista
{{{mount.cifs //192.168.0.10/music /mnt/sonyportable/itunes/ -o user=partage,pass=partage}}}
Un paradigme de programmation est une méthode de programmation reposant sur des principes définis, comme par exemple la programmation impérative ou la programmation orientée objet.
Technique consistant à intercepter toutes les communication en provenance d'un client jusqu'à ce que celui-ci réponde à une ou plusieurs conditions d'accès via son navigateur. Il peut s'agir d'un moyen d'[[authentification]] pour l'accès à un réseau wifi notamment, un péage d'accès, une demande de d'acception des conditions d'utilisation, etc..

Un processus est une suite d'opérations organisées en vue d'un résultat déterminé (CNRTL)

[[processus système]]
[[processus métier]]
En complément d'un [[processus]] au sens générique :
*évènement initiateur
*conditions de délais et de qualités (réponse à un besoin)
*vision fonctionnelle des utilisateurs
*indépendant de toute organisation et de tout système existant

sommaire :
- [[paradigme]]s de programmation
La propriété intellectuelle est l'ensemble des droits accordés sur les créations intellectuelles. On distingue la propriété littéraire et artistique, qui s'applique aux œuvres de l'esprit, et la propriété industrielle, s'appliquant aux invention utilitaires et signes distinctifs (marques, nom de domaines, appellation d'origine).

!Contexte juridique général
*l'ACTA (Accord Commercial Anti-Contrefaçon) doit être ratifié début 2011. Il s'agit d'un traité international visant à établir un cadre juridique en matière de protection intellectuelle, contrefaçon et atteintes au droit d'auteur, sous la houlette d'un organisme de gouvernance indépendant.

!Propriété littéraire et artistique
!!droit d'auteur
Le droit d'auteur en France est régi par par la ''loi du 11 mars 1957'' et la ''loi du 3 juillet 1985'', codifiées dans le ''code de la propriété intellectuelle''. 
*un auteur est une personne physique qui crée une œuvre de l'esprit
*est couverte par le droit d'auteur toute œuvre de l'esprit matérialisée, originale et en rapport avec la personnalité de l'auteur. Un droit de propriété exclusif s'applique dès sa création, de manière automatique et jusqu'à 70 ans après la mort de l'auteur, après quoi l'œuvre tombe dans le domaine public.

!!Protection du [[patrimoine informationnel]]
Les logiciels, les bases de données et les données elles-même font partie du [[patrimoine informationnel]] des organisations. En Europe, on fait plus appel aux droits d'auteur (à l'origine liés à la propriété littéraire et artistique)  et aux [[licence]]s pour protéger les logiciels, contrairement aux États-Unis qui utilisent les brevets (propriété industrielle).

!![[licence]]

!!notion de copyright
C'est une notion de droit américain, dans lequel toute œuvre de l'esprit, pour être protégée, doit faire l'objet d'une demande de copyright. En France il n'a qu'un caractère informatif.

!!droit moral et patrimonial
*le droit moral reconnait à l'auteur la paternité de son œuvre pour une durée illimitée. Il est inaliénable et perpétuel. Cela signifie qu'on doit doit citer le nom et l'auteur de toute œuvre, y.c. du domaine public lorsqu'on l'utilise.
*le droit patrimonial est limité dans le temps (70 ans après la mort de l'auteur) et permet à l'auteur ou ses ayant-droits de céder ses droits de représentation ou de reproduction, éventuellement en y tirant profit.

!!4 limites au droit d'auteurs
*représentation privée et gratuite dans le cadre familial
*droit à la copie privée
*publication d'une citation brève et justifiée
*caricature



!!les droits voisins
*la ''loi "Lang" de 1985'' a introduit dans le ''code de la propriété intellectuelle'' des droits moraux et patrimoniaux aux profits des artistes-interprètes, des producteurs de disque et de vidéos et des entreprises de communications audiovisuelles. Elle a également instituée une rémunération équitable pour les bénéficiaires des droits voisins en contrepartie du droit à la diffusion au public d'un disque publié à des fins de commerce (pour les radios, télévision, discothèques, ...).

*la loi DADVSI du 3 aout 2006 relative au droit d’auteur et aux droits voisins dans la société de l’information est issue de la transposition en droit français de la directive européenne 2001/29/CE sur l'harmonisation de certains aspects du droit d'auteur et des droits voisins dans la société de l'information. Le texte légalise les dispositifs de protection anti-copie pour les auteurs et les ayants droit, en reconnaissant le principe de l’exception pour copie privée limité par l'interdiction de contournement des mesures techniques anti-contrefaçon. Le téléchargement et la mise à disposition de fichiers soumis au droit d’auteur depuis un logiciel d’échange "peer-to-peer" a été requalifié par le Conseil constitutionnel comme des délits de contrefaçon, ce qui autorise des peines allant jusqu’à 3 ans d’emprisonnement et 300 000 euros d’amende.



!!les bases de données
Les bases de données au sens large (sites web inclus) sont protégées par la ''directive européenne du 11 mars 1996'', sous la forme d'un droit d'auteur en tant qu'œuvre de l'esprit pour la forme, et sous la forme d'un droit //sui generis//, classé dans la catégorie des droits voisins, pour le contenu. Il s'agit d'une protection de l'assemblage du contenu en un schéma particulier et non des contenus individuels eux-mêmes, et soumise à des conditions économique, c'est-à-dire que la base de données doit avoir été l'objet d'un investissement économique quantitativement ou qualitativement substantiel.

!propriété industrielle
*un brevet correspond à un droit exclusif d'exploitation, limité dans le temps et l'espace, d'une invention qui doit être rendue publique. L'objectif est de protéger les inventeurs en garantissant l'exploitation exclusive de leur invention pour une période donnée et en même temps de stimuler l'innovation en la rendant publique.
*les marques ou noms de domaines







2 méthodes :
*en jouant sur les descripeurs de fichiers (file descriptor). 1 et 2 correspondent à stdout et la sortie d'erreur .
méthode à appronfondir
//{{{
exec 3>&1           # Link file descriptor #3 with stdout.
                    # Saves stdout.
exec 4>&2       # lie le descripteur de fichier 4 avec la sortie d'erreur
               # sauve la sortie erreur

...corps du script

exec 1>&3 3>&-      # Restore stdout and close file descriptor #3.
exec 2>&4 4>&-      # Restore errout and close file descriptor #4
//}}}

*redirection des sorties stdout et erreurs vers un ou deux fichiers
//{{{
exec >> $FICHIER_LOG     # stdout remplacé par le fichier log
exec 2>> $FICHIER_LOG # stderr remplacé par le fichier errlog     A DECOMMENTER POUR AVOIR UN SEUR FICHIER LOG
#exec 2>> $FICHIER_ERRLOG # stderr remplacé par le fichier errlog A DECOMMENTER POUR AVOIR 2 FICHIERS LOG ET ERRLOG
//}}}

* exemple : [[Modèle de script bash]]
{{{
sed -i".250509" "s/tmp\/ors17/\export\/logiciels\/ors\/ors17/g" /etc/passwd
}}}
-i".250509" permet d'éditer directement le fichier en interactif tout en créant une copie de sauvegarde {{{NomDUFichier.250509}}}
Le principe : utiliser les expressions régulières et les sous-chaînes pour pouvoir faire ce qu'on veut avec les noms de fichiers.

*les sous-chaînes sont identifiées avec des parenthèses ( )
*les sous-chaînes sont appelées dans la seconde partie du sed par leur numéro : 1, 2, ...
*l'intégralité de la chaîne recherchée est appelée par &

exemples :
{{{
ls -d N_PERIM_MAET_ZINF_S_R73_Code_maet__* | sed 's/N_PERIM_MAET_ZINF_S_R73_Code_maet__\(.*\)/mv "&" "\1"/' | sh

ls -d * | sed 's/.*/mv & territoire_&/' | sh
}}}




Rsync est un utilitaire de copie de fichiers puissant et polyvalent, qui peut être utilisé avec un hôte distant aussi bien qu'en local. Ses particularités sont :
*des options permettant de faire à peu près ce qu'on veut en terme de sélection de fichiers et de copie
*un algorithme permettant de ne copier que les différences (delta) entre la source et la destination
*utilise des shells distants rsh ou ssh
*peux également utiliser des démons avec ou sans authentification. Dans ce cas le transfert se fait entre les démons sur la couche TCP.

(Program ou Project Evaluation and Review Technique)

Méthode graphique d'ordonnancement des tâches et des évènements, basée sur :
*les tâches (nom, durée)
*les évènements ou étapes (date au plus tôt et au plus tard)
permettant de déterminer :
*un chemin critique composé de tâches critiques
*des marges libres
*des marges totales


sources :
Wikipedia
cours CNAM
script de sauvegarde totale de mon portable Archlinux via rsync :
{{{
sudo umount Draaf/*
sudo rsync -aAXv /* /home/namb/iomega250 --exclude={/dev/*,/proc/*,/sys/*,/tmp/*,/run/*,/mnt/*,/media/*,/lost+found,/home/*/.gvfs,/home/namb/Draaf/*} --delete
mount Draaf/*
}}}
source https://wiki.archlinux.org/index.php/Full_System_Backup_with_rsync
attention, option {{{--delete}}} activée, qui supprime des éléments de la destination, à utiliser avec précaution (démontage préalable de ressources réseaux par exemple)


restore :
{{{
- rsync -ax /backup/folder/ /system/drive/
}}}
//remarque :// a priori cela devrait fonctionner sur un nouveau système et/ou un nouveau partitionnement. On restaure l'arborescence complète donc faut que tous les volumes soient bien montés avant, conformément à ce qui est indiqué dans la table... ?
1. présentation
Sed est un éditeur de texte non-interactif. Il fonctionne à partir de l'entrée standard ou d'un fichier et retourne le résultat des traitements sur la sortie standard ou un fichier.

2. syntaxe (source TLDP.org/abs)

|!traitement|!opération|!effet|
|[address-range]/p|print|Print [specified address range]|
|[address-range]/d|delete|Delete [specified address range]|
|s/pattern1/pattern2/|substitute|Substitute pattern2 for first instance of pattern1 in a line|
|[address-range]/s/pattern1/pattern2/|substitute|Substitute pattern2 for first instance of pattern1 in a line, over address-range|
|[address-range]/y/pattern1/pattern2/|transform|replace any character in pattern1 with the corresponding character in pattern2, over address-range (equivalent of tr)|
|g|global|Operate on every pattern match within each matched line of input|
|a|add|ajout après la ligne|
|i|insert|insertion avant la ligne|
|...|||

La plage d'adresse correspond soit à des numéros de ligne, soit à toutes les lignes correspondant à un motif

3. options

-e : indique que ce qui suit est une instruction ou un jeu d'instruction. Inutile dans la cas où l'on a une seule instruction

-n : avec print, n'imprime que les lignes correspondant à la plage d'adresse

-i : permet d'éditer le fichier en direct plutôt que d'utiliser la sortie standard



*Appliqué à un exécutable, il permet à n'importe quel utilisateur ayant les droits d'exécution de l'exécuter avec les droits du groupe du fichier.
*Appliqué à un répertoire, il signifie que tout fichier ou répertoire créé à l'intérieur de celui-ci aura comme groupe non pas celui du créateur, mais celui du répertoire portant le sgid, et portera lui-même un sgid.

Le flag S ou s se positionne sur un exécutable ou un répertoire et remplace le x du groupe, la majuscule signifie que le x derrière n'est pas présent.

sa valeur octale est de 2000.

[[POSIX]] est une série de normes développées en 1984 par le groupe /usr/group (UniForm aujourd'hui), sous couvert de l'IEEE (Institute of Electrical and Electronics Engineers), dans le but d'assurer une portabilité maximale entre les différents systèmes.
*Appliqué sur un fichier, le sticky bit (bit collant) signifie que celui doit rester chargé en mémoire après son exécution.
*Appliqué à un répertoire, il interdit à tout utilisateur autre que le propriétaire de supprimer un fichier. Par contre il permet sa modification (remise à zéro par exemple) à une utilisateur possédant les droits d'écriture.

Le flag "t" ou "T" vient remplacer le x de other. la majuscule signifie que le x derrière n'est pas présent.

sa valeur octale est de 1000.
Le flag s ou S se positionne sur un fichier exécutable et remplace le x du propriétaire. Il permet à n'importe quel utilisateur ayant les droits d'exécution sur un binaire de l'exécuter avec les droits du propriétaire du fichier (obligatoirement root ?). C'est le binaire lui-même qui s'exécute en tant que root.

la majuscule signifie que le x derrière n'est pas présent.

sa valeur octale est de 4000.
{{{
sed s/ *$//
}}}
Administration et programmation système sous Linux















Un système d'exploitation (SE ou OS pour Operating System) est un ensemble de logiciel assurant la gestion des ressources matérielle d'un ordinateur et leur mise à disposition des utilisateurs. Par exemple il fournit des points d'entrées pour la gestion des périphériques et fournit une interface de gestion des fichiers.
On peut donc considérer qu'il vise 2 objectifs principaux :
*la gestion des ressources matérielles.
*la présentation, en proposant à l'utilisateur une abstraction des resources matérielle,


Tâches assurées par le SE :
*gestion de la mémoire
*gestion des sytèmes de fichier
*gestion des E/S (autres périphériques)
*gère les exécutions de travaux : multiprogrammation, temps partagé, parallélisme, ..., via l'ordonnancement, les interruptions, la répartition en mémoire, partage des données, ...
*protection et sécurité
*réseaux

sommaire :
*[[historique des systèmes UNIX]]
*[[standards]]
**[[POSIX]]
*[[ordinateur]]
**[[mémoire]]
*[[fonction d'administration]]
*[[installation]]
*[[démarrage et arrêt]]
*[[gestion des utilisateurs]]
*[[logiciels]]
*[[sauvegardes]]
*[[gestion des impressions]]
*[[gestion des périphériques]]
*[[communication série, terminaux et modems]]
*[[configuration réseau]]
*[[interface graphique]]
*[[courrier électronique]]
*[[sécurité du système d'exploitation]]
*[[architecture système]]
**[[noyau Linux]]
**[[systèmes de fichiers]]
**[[optimisation système]]
**[[processus]]
**[[threads]]
*[[langages de scripts]]
*[[surveillance et optimisation syteme]]
*[[dépannage]]








''Définition proposée d'un système d'information'' : Ensemble complexe et organisé de moyens humains, organisationnels, matériels et logiciels pour produire, traiter et restituer de l'information.

Le SI est en général différencié du système informatique à proprement parler, car il va au-delà du matériel et considère l'ensemble de la chaîne de traitement de l'information. Le SI diffère de l'informatique par la façon dont on le considére : le coeur du SI, c'est l'information, le coeur de l'informatique, c'est l'ordinateur.
*système de sécurisation
**le [[portail captif]]
*isoler les valeurs uniques du champ de séparation
{{{
[namb@2011-o-034 S2]$ cat Surfaces-2010_S2_R73_total_join_ilotsHorsR73.csv | sed -r 's/.*,.*,.*,.*,.*,.*,.*,.*,.*,.*,.*,.*,.*,.*,(.*)/\1/' | sort -u | grep -v DPT > liste_DPT_NUM
}}}
*utiliser cette liste de valeur pour faire une recherche sur cette valeur et créer un fichier nommé en utilisant cette valeur
{{{
[namb@2011-o-034 S2]$ for element in $(cat ./liste_DPT_NUM); do cat Surfaces-2010_S2_R73_total_join_ilotsHorsR73.csv | grep -e ".*,.*,.*,.*,.*,.*,.*,.*,.*,.*,.*,.*,.*,.*,$element" > Surfaces-2010_S2_R73_$element.csv; done
}}}
*exemple de sauvegarde d'une bibiliothèque itunes, lancée en interactif :
{{{rsync -Pazhv --delete --exclude=*.tmp /mnt/sonyportable/itunes/iTunes/ /home/couscous/sauvegardes/itunes}}}
**- P pour {{{--partial}}} (garde le fichier incomplet en cas d'interruption de transfert au lieu de le supprimer, ce qui permettra de réduire le temps de transfert la fois suivante) et {{{--progress}}} (affiche une barre de progression)
**-a pour archive, combine différentes options dont les deux ci-dessous :
***- t pour conserver la date de modification
***-r pour récursif
**-v pour verbeux
**-z pour compressé

*sauvegarde de ma bibiliothèque itunes, lancée par script :
{{{rsync -vazh --delete --exclude=*.tmp /mnt/sonyportable/$1/ /home/couscous/sauvegardes/sonyportable/$1}}}
Attention, dans le chemin source, terminer par un / prend en compte le contenu de $1. la syntaxe ci-dessous aurait eu pour effet de créer un autre sous-répertoire $1 sous ..../sonyportable/$1 :
{{{rsync -vazh --delete --exclude=*.tmp /mnt/sonyportable/$1 /home/couscous/sauvegardes/sonyportable/$1}}}