mbp-oskar.lan 2025-5-10:18:42:56

This commit is contained in:
Oscar Plaisant 2025-05-10 18:42:56 +02:00
parent 1239a5463a
commit afcf0f22e4
18 changed files with 548 additions and 71 deletions

View File

@ -491,6 +491,13 @@
],
"close_reversed": false,
"close_field": "source"
},
{
"name": "",
"chain": [],
"rounds": 10,
"close_reversed": false,
"close_field": "up"
}
]
},

View File

@ -1,7 +1,7 @@
{
"remoteURL": "https://gitea.dariow.fr",
"gitLocation": "",
"syncinterval": 0,
"syncinterval": 20,
"isSyncOnLoad": true,
"checkStatusOnLoad": true
}

View File

@ -401,9 +401,76 @@
},
"openFile": false,
"openFileInMode": "default"
},
{
"id": "0b1ce8df-732b-4f1c-aa11-4914666e6416",
"name": "convert inline properties to YAML",
"type": "Macro",
"command": true,
"macroId": "076271f1-41bd-4076-b253-5a9cb7fd1d5a"
},
{
"id": "49fccdfb-e1e1-4c3d-baf8-18b139ff6440",
"name": "convert ALL inline properties to YAML",
"type": "Macro",
"command": false,
"macroId": "acd31cfd-8e03-4c73-98d8-d40e4906e97a"
}
],
"macros": [
{
"name": "convert inline properties to YAML",
"id": "076271f1-41bd-4076-b253-5a9cb7fd1d5a",
"commands": [
{
"name": "Save current file",
"type": "Obsidian",
"id": "6d7e3958-864f-4e3c-a43a-76ceafd5be40",
"commandId": "editor:save-file"
},
{
"name": "convert_inline_to_yaml",
"type": "UserScript",
"id": "48601ce0-820f-47d4-a61d-34549323b302",
"path": "quickadd_scripts/convert_inline_to_yaml.js",
"settings": {}
},
{
"name": "Save current file",
"type": "Obsidian",
"id": "2af2f2a9-6cdb-43ac-9c13-4b846d4385cd",
"commandId": "editor:save-file"
}
],
"runOnStartup": false
},
{
"name": "convert ALL inline properties to YAML",
"id": "acd31cfd-8e03-4c73-98d8-d40e4906e97a",
"commands": [
{
"name": "Save current file",
"type": "Obsidian",
"id": "845535c2-2359-497d-a71d-fdc58c9ac40a",
"commandId": "editor:save-file"
},
{
"name": "convert_ALL_inline_to_yaml",
"type": "UserScript",
"id": "a54f0813-5d36-4d5b-a793-d7d32b05b22c",
"path": "quickadd_scripts/convert_ALL_inline_to_yaml.js",
"settings": {}
},
{
"name": "Save current file",
"type": "Obsidian",
"id": "05488d2d-11a6-4217-87a3-6252e547047b",
"commandId": "editor:save-file"
}
],
"runOnStartup": false
}
],
"macros": [],
"inputPrompt": "single-line",
"devMode": false,
"templateFolderPath": "templates",

@ -1 +0,0 @@
Subproject commit 602a41e7f8b2465babd4ebe38e2b292dc28fa7d2

View File

@ -1,11 +1,8 @@
---
alias: [ "base duale" ]
---
up:: [[espace dual d'un espace vectoriel]]
sibling:: [[base antéduale d'une famille de formes linéaires|base antéduale]]
title::
#s/maths/algèbre
up: "[[espace dual d'un espace vectoriel]]"
sibling: "[[base antéduale d'une famille de formes linéaires|base antéduale]]"
tags: "#s/maths/algèbre"
---
> [!definition] base duale d'un espace vectoriel
@ -20,8 +17,8 @@ title::
> - $\mathcal{B}^{*} = (e_{k}^{*} \mid k \in [\![1; n]\!])$
> - $\mathcal{B}^{*} = \big( (e_{i} \mapsto [i = k]) \mid k \in [\![1; n]\!] \big)$
^definition
![[base duale d'une famille de formes linéaires 2023-01-23 17.35.35.excalidraw|100%]]
![[base duale d'une famille de formes linéaires 2023-01-23 17.35.35.excalidraw|60%]]
# Propriétés
Soient $\mathcal{B} = (e_1, e_2, \dots, e_{n})$ une base, et $\mathcal{B}^{*} = (e_1^{*}, e_2^{*}, \dots, e_{n}^{*})$ sa base duale

View File

@ -6,7 +6,7 @@ tags: "#s/maths/algèbre"
> [!definition] ensemble des formes linéaire d'un espace vectoriel
> Soit $E$ un $\mathbf{K}$-[[espace vectoriel]]
> On note $E^{*}$ l'ensemble des formes linéaires sur $E$
> On note $E^{*}$ l'ensemble des [[forme linéaire|formes linéaires]] sur $E$
>
> $E^{*}$ est appelé **espace dual de $E$**
>
@ -16,8 +16,23 @@ tags: "#s/maths/algèbre"
# Propriétés
- $\dim E^{*} = \dim E$
- Evident car une forme linéaire sur $E$ est une matrice de taille $1\times \dim E$, et donc $E^{*}$ peut être assimilé à $E$ par les matrices des formes linéaires
- preuve : $\dim E* = \dim \left( \mathcal{L}(E, \mathbf{K}) \right) = \underbrace{\dim E \times \dim K}_{\text{taille des matrices de } E^{*}} = \dim E \times 1 = \dim E$
> [!proposition]+ Dimension de l'espace dual
> Si $E$ est de [[dimension d'un espace vectoriel|dimension]] finie
> Alors $E^{*}$ est un [[espace vectoriel]] de même dimension que $E$ :
> $\dim E^{*} = \dim E$
> - I Evident car une forme linéaire sur $E$ est une matrice de taille $1\times \dim E$, et donc $E^{*}$ peut être assimilé à $E$ par les matrices des formes linéaires
>
> > [!démonstration]- Démonstration
> > preuve : $\dim E* = \dim \left( \mathcal{L}(E, \mathbf{K}) \right) = \underbrace{\dim E \times \dim K}_{\text{taille des matrices de } E^{*}} = \dim E \times 1 = \dim E$
> >
> > ---
> > Autrement :
> >
> > On sait que si $E, F$ sont des $\mathbf{K}$-[[espace vectoriel|espaces vectoriels]] de dimension finie, alors $\mathscr{L}(E, F)$ est un $\mathbf{K}$-[[espace vectoriel]] de dimension $\dim(E)\dim(F)$.
> > Ici, $\dim(F) = 1$.
> > Donc si $\dim(E) < +\infty$, on a :
> > $\dim(E^{*}) = \dim(E)$
> [!proposition]+
> Soit $E$ un [[espace vectoriel]]
@ -36,6 +51,10 @@ tags: "#s/maths/algèbre"
> Donc :
> $\displaystyle \varphi\left( e_{j} = \sum\limits_{i = 1}^{n} \lambda _{i}\underbrace{e_{i}^{*}(e_{j})}_{\substack{0 \text{ si } i \neq j\\ 1 \text{ si } i = j }} \right)$
> [!proposition]+ Propriétés des formes linéaires
> Soit $\varphi \in E^{*}$
> Alors $\varphi \neq 0$ si et seulement si $\varphi$ est [[surjection|surjective]]
> Si $\dim (E) = n< +\infty$ alors $\varphi \neq 0 \iff \dim(\ker(\varphi)) = n-1$
# Exemples

View File

@ -1,9 +1,9 @@
---
alias: [ "actions non conventionnelles" ]
up: "[[principes généraux de mise en place de l'action]]"
source: "[[conférence gesticulée.Inculture 4 - le plein d'énergie]]"
tags: "#s/politique"
---
up:: [[principes généraux de mise en place de l'action]]
source:: [[conférence gesticulée.Inculture 4 - le plein d'énergie]]
#s/politique
[[il faut agir de manière non conventionnelle]]
Les actions innatendues ont plus d'effet que les actions conventionnelles (manifestations...). ^0d4ed3

View File

@ -1,8 +1,8 @@
---
alias: [ "déranger en restant à l'aise", "sortir du champ d'expérience de l'ennemi tout en restant dans le notre" ]
up: "[[principes généraux de mise en place de l'action]]"
source: "[[conférence gesticulée.Inculture 4 - le plein d'énergie]]"
---
up:: [[principes généraux de mise en place de l'action]]
source:: [[conférence gesticulée.Inculture 4 - le plein d'énergie]]
Les actions militantes doivent déranger au maximum, mais les militants doivent toujours être dans leur zone de comfort.

View File

@ -1,15 +1,11 @@
---
sr-due: 2022-11-28
sr-interval: 74
sr-ease: 317
alias: injective
aliases:
- injective
- injectif
up: "[[application]]"
sibling: "[[surjection]]"
tags: "#s/maths/analyse"
---
up::[[application]]
sibling::[[surjection]]
#s/maths/analyse
> [!definition] Définition
> Soit f une application de $E$ dans $F$ :

View File

@ -0,0 +1,36 @@
---
aliases:
up:
- "[[polynôme]]"
- "[[endomorphisme linéaire]]"
tags:
- s/maths/algèbre
---
> [!definition] Définition
> Soit $E$ un $\mathbf{K}$-[[espace vectoriel]] avec $\dim(E) = n$
> Soit $P = a_0 + a_1 X + \cdots +a_{k}X^{k} \in K[X]$ ([[polynôme]])
> On note alors :
> - Si $f \in \mathscr{L}(E)$ alors $P(f) = a_0 \mathrm{Id}_{E} + a_1 f + \cdots + a_{k}f^{k}$
> - Si $A \in \mathcal{M}_{n}(K)$ alors $P(A) = a_0 I_{n} + a_1 A + \cdots + a_{k}A^{k}$
^definition
# Propriétés
> [!proposition]+ Les polynômes d'endomorphismes sont linéaires
> $P(f) \in \mathscr{L}(E)$
> [!proposition]+ Préservation des bases
> Si $B$ est une [[base d'un espace vectoriel|base]] de $E$, alors $[P(f)]_{B} = P([f]_{B})$
> - dem Cela vient du fait que $f \mapsto [f]_{B}$ est un [[isomorphisme d'anneaux]]
> [!proposition]+ Linéarité
>
- $(\lambda P + Q)(f) = \lambda P(f) + Q(f)$
- $(PQ)(f) = P(f) \circ Q(f) = (QP)(f)$
- $\ker P(f)$ et $\operatorname{Im} Q(f)$ sont stables par $f$
- Si $\lambda$ est [[valeur propre d'une matrice|valeur propre]] de $f$ alors $P(\lambda)$ est valeur propre de $P(f)$
# Exemples

View File

@ -1,5 +1,7 @@
up:: [[militantisme]]
#s/politique
---
up: "[[militantisme]]"
tags: "#s/politique"
---
```breadcrumbs
title: "Sous-notes"

View File

@ -0,0 +1,177 @@
module.exports = {
settings: {
name: 'Convert Dataview Inline YAML to YAML',
author: 'AmericanBagel',
options: {
'Excluded Files': {
type: 'text',
defaultValue: '.git',
placeholder: 'A ":" seperated list of strings or regex',
},
},
},
entry: async (params, settings) => {
const {
quickAddApi: { inputPrompt, suggester },
} = params;
const metaedit = app.plugins.plugins['metaedit'].api;
const vault = app.vault;
const fs = app.vault.adapter;
function clearFormattingCharacters(string) {
return string.replace(/[*_~]/g, '');
}
function getDataviewInlineYamlLines(string) {
const lines = string.split('\n');
const matches = [];
lines.forEach((line) => {
// (?!`(\$=|=).*`) to exclude inline dataview code
if (
line.match(
/^[*_~]{0,3}[a-zA-Z-_]+[*_~]{0,3}::.*$(?!`(\$=|=).*`)/g
)
&& line.match(/^[*_~]{0,3}[a-zA-Z-_]+[*_~]{0,3}:: (?!`(\$=|=).*`)/gm)
) {
matches.push(line);
}
});
return matches;
}
function removeDataviewInlineYamlLines(string) {
const lines = string.split('\n');
let output = [];
lines.forEach((line) => {
// (?!`(\$=|=).*`) to exclude inline dataview code
if (
!line.match(
/^[*_~]{0,3}[a-zA-Z-_]+[*_~]{0,3}::.*$/g
)
) {
output.push(line);
}
});
output = output.join('\n');
output = output.replace(/%%\s%%/g, '');
return output;
}
function convertToKebabCase(string) {
return string
.replace(/([a-z])([A-Z])/g, '$1-$2')
.replace(/[\s_]+/g, '-')
.toLowerCase();
}
function parseAndAddProperty(obj, line) {
const arr = line.split(':: ');
obj[convertToKebabCase(clearFormattingCharacters(arr[0]))] = arr[1];
}
function isTag(string) {
// if (string.match(/(#[^\s]+)+/g))
if (string.startsWith('#')) {
return true;
}
}
function isLink(string) {
if (string.match(/(\[\[[^\s]+\]\])[ ]*/g)) {
return true;
}
}
function getLinkFrontmatter(key, value) {
console.log(value);
console.log(typeof value);
// This regex makes it only split when outside double brackets
return listToFrontmatter(key, value.match(/(\[\[[^\]]*\]\]|\S)+/g));
}
function getTagFrontmatter(key, value) {
console.log(value);
console.log(typeof value);
return listToFrontmatter(
key,
value.split(' ').map((tag) => tag.replace(/^#/g, ''))
);
}
function listToFrontmatter(key, _value) {
console.log('listToFrontmatter');
console.log('_value: ' + _value);
let value = _value;
if (typeof _value === 'string') {
value = _value.replace(/[ \t]+$/g, '').split(' ');
}
console.log(value);
let out = `${key}:\n`;
for (element of value) {
out += ` - "${element}"\n`;
}
return out;
}
function propertyToFrontmatter(key, value) {
return `${key}: ${value}\n`;
}
async function convertNote(note) {
let contents = await vault.read(note);
const inlineLines = getDataviewInlineYamlLines(contents);
inlineLines.forEach(
(line) => (line = clearFormattingCharacters(line))
);
if (inlineLines.length > 0) {
const inlineProperties = {};
inlineLines.forEach((line) =>
parseAndAddProperty(inlineProperties, line)
);
let frontmatter = '';
for (const [key, value] of Object.entries(inlineProperties)) {
if (isLink(value)) {
console.log('isLink');
frontmatter += getLinkFrontmatter(key, value);
} else if (isTag(value)) {
console.log('isTag');
frontmatter += getTagFrontmatter(key, value);
} else {
frontmatter += propertyToFrontmatter(key, value);
}
}
contents = removeDataviewInlineYamlLines(contents);
let sections = contents.split('---\n');
if (sections.length === 1) {
contents = `---\n${frontmatter}---\n\n` + contents;
} else {
sections[1] =
sections[1].replace(/(?<=\n|^)\s/g, '') + frontmatter;
contents = sections.join('---\n');
}
await fs.write(note.path, contents);
}
}
// Start
const excluded = settings['Excluded Files']?.split(':');
let files = await app.vault.getMarkdownFiles();
console.log(files);
files = files.filter((file) => {
// Check if any excluded substring is present in the file name
return !excluded.some((substring) => file.path.includes(substring));
});
const shouldContinue = await params.quickAddApi.yesNoPrompt(
'Are you sure you want to continue?',
'This will format ALL notes in your vault that are not excluded by the settings. This will effect ' +
files.length +
' files.'
);
files.forEach(async (file) => {
convertNote(file);
});
},
};

View File

@ -0,0 +1,177 @@
module.exports = {
settings: {
name: 'Convert Dataview Inline YAML to YAML',
author: 'AmericanBagel',
options: {
'Excluded Files': {
type: 'text',
defaultValue: '.git',
placeholder: 'A ":" seperated list of strings or regex',
},
},
},
entry: async (params, settings) => {
const {
quickAddApi: { inputPrompt, suggester },
} = params;
const metaedit = app.plugins.plugins['metaedit'].api;
const vault = app.vault;
const fs = app.vault.adapter;
function clearFormattingCharacters(string) {
return string.replace(/[*_~]/g, '');
}
function getDataviewInlineYamlLines(string) {
const lines = string.split('\n');
const matches = [];
lines.forEach((line) => {
// (?!`(\$=|=).*`) to exclude inline dataview code
if (
line.match(
/^[*_~]{0,3}[a-zA-Z-_]+[*_~]{0,3}::.*$(?!`(\$=|=).*`)/g
)
&& line.match(/^[*_~]{0,3}[a-zA-Z-_]+[*_~]{0,3}:: (?!`(\$=|=).*`)/gm)
) {
matches.push(line);
}
});
return matches;
}
function removeDataviewInlineYamlLines(string) {
const lines = string.split('\n');
let output = [];
lines.forEach((line) => {
// (?!`(\$=|=).*`) to exclude inline dataview code
if (
!line.match(
/^[*_~]{0,3}[a-zA-Z-_]+[*_~]{0,3}::.*$/g
)
) {
output.push(line);
}
});
output = output.join('\n');
output = output.replace(/%%\s%%/g, '');
return output;
}
function convertToKebabCase(string) {
return string
.replace(/([a-z])([A-Z])/g, '$1-$2')
.replace(/[\s_]+/g, '-')
.toLowerCase();
}
function parseAndAddProperty(obj, line) {
const arr = line.split(':: ');
obj[convertToKebabCase(clearFormattingCharacters(arr[0]))] = arr[1];
}
function isTag(string) {
// if (string.match(/(#[^\s]+)+/g))
if (string.startsWith('#')) {
return true;
}
}
function isLink(string) {
if (string.match(/(\[\[[^\s]+\]\])[ ]*/g)) {
return true;
}
}
function getLinkFrontmatter(key, value) {
console.log(value);
console.log(typeof value);
// This regex makes it only split when outside double brackets
return listToFrontmatter(key, value.match(/(\[\[[^\]]*\]\]|\S)+/g));
}
function getTagFrontmatter(key, value) {
console.log(value);
console.log(typeof value);
return listToFrontmatter(
key,
value.split(' ').map((tag) => tag.replace(/^#/g, ''))
);
}
function listToFrontmatter(key, _value) {
console.log('listToFrontmatter');
console.log('_value: ' + _value);
let value = _value;
if (typeof _value === 'string') {
value = _value.replace(/[ \t]+$/g, '').split(' ');
}
console.log(value);
let out = `${key}:\n`;
for (element of value) {
out += ` - "${element}"\n`;
}
return out;
}
function propertyToFrontmatter(key, value) {
return `${key}: ${value}\n`;
}
async function convertNote(note) {
let contents = await vault.read(note);
const inlineLines = getDataviewInlineYamlLines(contents);
inlineLines.forEach(
(line) => (line = clearFormattingCharacters(line))
);
if (inlineLines.length > 0) {
const inlineProperties = {};
inlineLines.forEach((line) =>
parseAndAddProperty(inlineProperties, line)
);
let frontmatter = '';
for (const [key, value] of Object.entries(inlineProperties)) {
if (isLink(value)) {
console.log('isLink');
frontmatter += getLinkFrontmatter(key, value);
} else if (isTag(value)) {
console.log('isTag');
frontmatter += getTagFrontmatter(key, value);
} else {
frontmatter += propertyToFrontmatter(key, value);
}
}
contents = removeDataviewInlineYamlLines(contents);
let sections = contents.split('---\n');
if (sections.length === 1) {
contents = `---\n${frontmatter}---\n\n` + contents;
} else {
sections[1] =
sections[1].replace(/(?<=\n|^)\s/g, '') + frontmatter;
contents = sections.join('---\n');
}
await fs.write(note.path, contents);
}
}
// Start
const excluded = settings['Excluded Files']?.split(':');
let files = await app.vault.getMarkdownFiles();
console.log(files);
files = files.filter((file) => {
// Check if any excluded substring is present in the file name
return !excluded.some((substring) => file.path.includes(substring));
});
const shouldContinue = await params.quickAddApi.yesNoPrompt(
'Are you sure you want to continue?',
'This will format ALL notes in your vault that are not excluded by the settings. This will effect ' +
files.length +
' files.'
);
files.forEach(async (file) => {
convertNote(file);
});
},
};

View File

@ -1,13 +1,12 @@
up::[[application linéaire]]
title::"$\mathrm{rang} f = \dim \mathrm{Im} f$"
#s/maths/algèbre
----
Soient $E$ et $F$ deux [[espace vectoriel|espaces vectoriels]]
Soit $f: E\rightarrow F$ une [[application linéaire]]
Le _rang_ de $f$ est $\mathrm{rang} f = \dim \mathrm{Im} f$
---
up: "[[application linéaire]]"
tags: "#s/maths/algèbre"
---
> [!proposition]+ [[rang d'une application linéaire]]
> Soient $E$ et $F$ deux [[espace vectoriel|espaces vectoriels]]
> Soit $f: E\rightarrow F$ une [[application linéaire]]
> Le _rang_ de $f$ est $\operatorname{rang} f = \dim \mathrm{Im} f$
Voir :

View File

@ -1,16 +1,17 @@
---
aliases:
- Inculture 3
up: "[[conférence gesticulée]]"
next: "[[conférence gesticulée.Inculture 4 - le plein d'énergie|Inculture 4 - le plein d'énergie]]"
prev: "[[conférence gesticulée.Inculture 2|Inculture 2]]"
tags: "#s/politique"
---
up:: [[conférence gesticulée]]
next:: [[conférence gesticulée.Inculture 4 - le plein d'énergie|Inculture 4 - le plein d'énergie]]
prev:: [[conférence gesticulée.Inculture 2|Inculture 2]]
#s/politique
> [!smallquery]+ Sous-notes de `$= dv.el("span", "[[" + dv.current().file.name + "]]")`
> ```breadcrumbs
> title: false
> type: tree
> dir: down
> ```
```breadcrumbs
title: "Sous-notes"
type: tree
collapse: false
show-attributes: [field]
field-groups: [downs]
depth: [0, 0]
```

View File

@ -11,10 +11,12 @@ up:: [[conférence gesticulée]]
- [[il faut déranger l'ennemi en restant à l'aise]]
> [!smallquery]+ Sous-notes de `$= dv.el("span", "[[" + dv.current().file.name + "]]")`
> ```breadcrumbs
> title: false
> type: tree
> dir: down
> ```
```breadcrumbs
title: "Sous-notes"
type: tree
collapse: false
show-attributes: [field]
field-groups: [downs]
depth: [0, 0]
```

View File

@ -1,19 +1,18 @@
---
sr-due: 2024-01-11
sr-interval: 365
sr-ease: 339
aliases:
- surjective
- surjectives
- surjectif
excalidraw-plugin: parsed
excalidraw-open-md: true
up:
- "[[application]]"
sibling:
- "[[injection]]"
tags:
- excalidraw
excalidraw-open-md: true
- s/maths/analyse
---
up::[[application]]
sibling::[[injection]]
#s/maths/analyse
> [!definition] Définition
> Soit $f: E\mapsto F$ une [[application]].

View File

@ -1,16 +1,15 @@
up::[[espace vectoriel]]
title::"$\dim(\mathrm{Ker}(f)) + \dim(\mathrm{Im}(f)) = \dim(E)$"
#s/maths/algèbre
----
Soient $E$ et $F$ deux [[espace vectoriel|espaces vectoriels]] de [[dimension d'un espace vectoriel|dimension]] finie,
Soit $f: E\rightarrow F$ une [[application linéaire]],
On a :
$\dim \ker f + \dim \im f = \dim E$
---
up: "[[espace vectoriel]]"
tags: "#s/maths/algèbre"
---
> [!proposition]+ [[théorème du rang]]
> Soient $E$ et $F$ deux [[espace vectoriel|espaces vectoriels]] de [[dimension d'un espace vectoriel|dimension]] finie,
> Soit $f: E\rightarrow F$ une [[application linéaire]],
> On a :
> $\dim(\ker (f)) + \dim (\operatorname{im} (f)) = \dim E$
Voir:
- [[rang d'une application linéaire]]
- [[Noyau d'une application linéaire]]
- [[dimension d'un espace vectoriel]]