vault backup: 2025-12-10 23:34:33

This commit is contained in:
2025-12-10 23:34:33 +01:00
parent 61da6885cb
commit a024d99e30
11 changed files with 26305 additions and 41 deletions

View File

@@ -1,5 +1,8 @@
{
"accentColor": "#9600ff",
"theme": "system",
"cssTheme": "Adwaita"
"cssTheme": "Adwaita",
"enabledCssSnippets": [
"pgbrk"
]
}

View File

@@ -1,5 +1,7 @@
[
"obsidian-git",
"languagetool",
"oz-calendar"
"oz-calendar",
"better-export-pdf",
"automatic-table-of-contents"
]

View File

@@ -0,0 +1,13 @@
// Automatic Table Of Contents 1.7.3 (https://github.com/johansatge)
var c=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var d=c((ee,k)=>{var g=class{},p={},v=class{},w=t=>t;if(A()){let t=require("obsidian");g=t.Plugin,p=t.MarkdownRenderer,v=t.MarkdownRenderChild,w=t.htmlToMarkdown}k.exports={Plugin:g,MarkdownRenderer:p,MarkdownRenderChild:v,htmlToMarkdown:w};function A(){return typeof process!="object"?!0:!process.env||!process.env.JEST_WORKER_ID}});var y=c((re,b)=>{var s={title:{type:"string",default:"",comment:""},style:{type:"value",default:"nestedList",values:["nestedList","nestedOrderedList","inlineFirstLevel"],comment:"TOC style (nestedList|nestedOrderedList|inlineFirstLevel)"},minLevel:{type:"number",default:0,comment:"Include headings from the specified level"},maxLevel:{type:"number",default:0,comment:"Include headings up to the specified level"},include:{type:"regexp",default:null,comment:""},exclude:{type:"regexp",default:null,comment:""},includeLinks:{type:"boolean",default:!0,comment:"Make headings clickable"},hideWhenEmpty:{type:"boolean",default:!1,comment:"Hide TOC if no headings are found"},debugInConsole:{type:"boolean",default:!1,comment:"Print debug info in Obsidian console"}};b.exports={getOptionsDocs:P,parseOptionsFromSourceText:E};function P(){let t=[];for(let e of Object.keys(s)){let n=s[e],r=n.comment.length>0?` # ${n.comment}`:"",o=n.default!==null?n.default:"";t.push(`${e}: ${o}${r}`)}return t.join(`
`)}function E(t=""){let e={};for(let n of Object.keys(s))e[n]=s[n].default;for(let n of t.split(`
`)){let r=R(n);r!==null&&(e[r.name]=r.value)}return e}function R(t){let e=t.match(/([a-zA-Z0-9._ ]+):(.*)/);if(t.startsWith("#")||!e)return null;let n=e[1].trim(),r=s[n],o=e[2].trim();(!r||!["string","regexp"].includes(r.type))&&(o=o.replace(/#[^#]*$/,"").trim());let a=new Error(`Invalid value for \`${n}\``);if(r&&r.type==="number"){let i=Number.parseInt(o);if(i<0)throw a;return{name:n,value:i}}if(r&&r.type==="boolean"){if(!["true","false"].includes(o))throw a;return{name:n,value:o==="true"}}if(r&&r.type==="value"){if(!r.values.includes(o))throw a;return{name:n,value:o}}if(r&&r.type==="string")return{name:n,value:o};if(r&&r.type==="regexp"){if(o==="null"||o.length===0)return null;try{let i=/^\/(.*)\/([a-z]*)/.exec(o);if(!i)throw new Error("Invalid regexp");let l=new RegExp(i[1],i[2]);return{name:n,value:l}}catch{throw a}}return null}});var x=c((oe,L)=>{var{htmlToMarkdown:S}=d();L.exports={isHeadingAllowed:_,getFormattedMarkdownHeading:W};function _(t,e){return e.include?e.include.test(t):e.exclude?!e.exclude.test(t):!0}function W(t,e){if(e.includeLinks){let n=t;n=$(n),n=j(n),n=M(n,!1);let r=t;return r=M(r,!0),r=q(r),`[[#${r}|${n}]]`}return t}function $(t){return t.replaceAll("*","").replaceAll(/(\W|^)_+(\S)(.*?\S)?_+(\W|$)/g,"$1$2$3$4").replaceAll("`","").replaceAll("==","").replaceAll("~~","").replace(/\[([^\]]+)\]\([^)]+\)/g,"$1")}function j(t){return $(S(t))}function M(t,e){return t.replace(/\[\[([^\]]+)\|([^\]]+)\]\]/g,e?"$1 $2":"$2").replace(/\[\[([^\]]+)\]\]/g,"$1").replaceAll("[[","").replaceAll("| ",e?"":"- ").replaceAll("|",e?" ":"-")}function q(t){return t.replaceAll("#"," ")}});var F=c((le,H)=>{var{isHeadingAllowed:C,getFormattedMarkdownHeading:I}=x();H.exports={getMarkdownFromHeadings:N};function N(t,e){let n={nestedList:D,nestedOrderedList:B,inlineFirstLevel:z},r="";if(e.title&&e.title.length>0){let a=e.style==="inlineFirstLevel"?" ":`
`;r+=`${e.title}${a}`}let o=n[e.style](t,e);return o===null?e.hideWhenEmpty?"":`${r}_Table of contents: no headings found_`:r+o}function D(t,e){return O(t,!1,e)}function B(t,e){return O(t,!0,e)}function O(t,e,n){let r=e?"1.":"-",o=[],a=n.minLevel>0?n.minLevel:Math.min(...t.map(l=>l.level)),i=0;for(let l of t)if(!(i>0&&l.level>i)){if(l.level<=i&&(i=0),!C(l.heading,n)){i=l.level;continue}l.level<a||n.maxLevel>0&&l.level>n.maxLevel||l.heading.length!==0&&o.push(`${" ".repeat(l.level-a)}${r} ${I(l.heading,n)}`)}return o.length>0?o.join(`
`):null}function z(t,e){let n=e.minLevel>0?e.minLevel:Math.min(...t.map(o=>o.level)),r=t.filter(o=>o.level===n).filter(o=>o.heading.length>0).filter(o=>C(o.heading,e)).map(o=>I(o.heading,e));return r.length>0?r.join(" | "):null}});var{Plugin:J,MarkdownRenderer:T,MarkdownRenderChild:K}=d(),{getOptionsDocs:V,parseOptionsFromSourceText:Z}=y(),{getMarkdownFromHeadings:G}=F(),h="table-of-contents",Q="toc",m=class extends J{async onload(){let e=(n,r,o)=>{o.addChild(new f(this.app,r,o.sourcePath,n))};this.registerMarkdownCodeBlockProcessor(h,e),this.registerMarkdownCodeBlockProcessor(Q,e),this.addCommand({id:"insert-automatic-table-of-contents",name:"Insert table of contents",editorCallback:U}),this.addCommand({id:"insert-automatic-table-of-contents-docs",name:"Insert table of contents (with available options)",editorCallback:X})}};function U(t){let e=`\`\`\`${h}
\`\`\``;t.replaceRange(e,t.getCursor())}function X(t){let e=[`\`\`\`${h}
${V()}
\`\`\``];t.replaceRange(e.join(`
`),t.getCursor())}var f=class extends K{constructor(e,n,r,o){super(n),this.app=e,this.element=n,this.sourcePath=r,this.sourceText=o}onload(){this.render(),this.registerEvent(this.app.metadataCache.on("changed",this.onMetadataChange.bind(this)))}onMetadataChange(){this.render()}render(){try{let e=Z(this.sourceText);e.debugInConsole&&u("Options",e);let n=this.app.metadataCache.getCache(this.sourcePath),r=n?.headings?n.headings:[];e.debugInConsole&&u("Headings",r);let o=G(r,e);e.debugInConsole&&u("Markdown",o),this.element.empty(),T.renderMarkdown(o,this.element,this.sourcePath,this)}catch(e){let n=`_\u{1F4A5} Could not render table of contents (${e.message})_`;T.renderMarkdown(n,this.element,this.sourcePath,this)}}};function u(t,e){console.log(`%cAutomatic Table Of Contents %c${t}:
`,"color: orange; font-weight: bold","font-weight: bold",e)}module.exports=m;
/* nosourcemap */

View File

@@ -0,0 +1,10 @@
{
"id": "automatic-table-of-contents",
"name": "Automatic Table Of Contents",
"version": "1.7.3",
"minAppVersion": "1.3.0",
"description": "Create a table of contents in a note, that updates itself when the note changes",
"author": "Johan Satgé",
"authorUrl": "https://github.com/johansatge",
"isDesktopOnly": false
}

View File

@@ -0,0 +1,30 @@
{
"showTitle": true,
"maxLevel": "6",
"displayHeader": true,
"displayFooter": true,
"headerTemplate": "<div style=\"width: 100vw;font-size:10px;text-align:center;\"><span class=\"title\"></span></div>",
"footerTemplate": "<div style=\"width: 100vw;font-size:10px;text-align:center;\"><span class=\"pageNumber\"></span> / <span class=\"totalPages\"></span></div>",
"printBackground": false,
"generateTaggedPDF": false,
"displayMetadata": false,
"debug": false,
"isTimestamp": false,
"enabledCss": false,
"concurrency": "5",
"prevConfig": {
"pageSize": "A4",
"marginType": "1",
"showTitle": true,
"open": true,
"scale": 100,
"landscape": false,
"marginTop": "10",
"marginBottom": "10",
"marginLeft": "10",
"marginRight": "10",
"displayHeader": false,
"displayFooter": true,
"cssSnippet": "0"
}
}

25940
.obsidian/plugins/better-export-pdf/main.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,11 @@
{
"id": "better-export-pdf",
"name": "Better Export PDF",
"version": "1.11.0",
"minAppVersion": "0.15.0",
"description": "Export your notes to PDF, support export preview, add bookmarks outline and header/footer.",
"author": "l1xnan",
"authorUrl": "https://github.com/l1xnan",
"fundingUrl": "https://www.buymeacoffee.com/l1xnan",
"isDesktopOnly": true
}

View File

@@ -0,0 +1,67 @@
#better-export-pdf {
display: flex;
flex-direction: row;
height: 75vh;
}
#better-export-pdf .pdf-preview {
flex: auto;
position: relative;
display: flex;
flex-direction: column;
overflow-x: hidden;
overflow-y: scroll;
align-content: flex-start;
}
#better-export-pdf .pdf-preview .webview-wrapper {
position: relative;
height: 100%;
width: 100%;
}
#better-export-pdf .pdf-preview .print-size {
position: absolute;
right: 8px;
top: 8px;
z-index: 99;
font-size: 0.6rem;
white-space: pre-wrap;
text-align: right;
visibility: hidden;
}
#better-export-pdf .pdf-preview > div {
flex: 1;
height: 100%;
width: 100%;
}
#better-export-pdf .pdf-preview > div.progress {
flex: none;
height: auto;
width: 100%;
text-align: left;
}
#better-export-pdf .pdf-preview .filename {
font-size: 0.75rem;
color: var(--color-base-60);
}
#better-export-pdf .pdf-preview .filename:not(:first-child) {
padding-top: calc(var(--p-spacing));
}
#better-export-pdf webview {
flex: 1;
height: 100%;
width: 100%;
}
#better-export-pdf .setting-wrapper {
width: 320px;
margin-left: 16px;
}
#better-export-pdf .setting-wrapper .setting-item[hidden] {
display: none;
}

14
.obsidian/snippets/pgbrk.css vendored Normal file
View File

@@ -0,0 +1,14 @@
/*Breaker de paginas.*/
/*Hace saltos de pagina despues de cada h1*/
@media print {
h1{
page-break-before: always;
}
h2, h3, h4, h5, h6 {
page-break-after: avoid;
}
.internal-embed{
page-break-after: avoid;
page-break-before: avoid;
}
}

View File

@@ -4,41 +4,17 @@
"type": "split",
"children": [
{
"id": "ff8c33205872ddb4",
"id": "970bc93cb9e76d14",
"type": "tabs",
"children": [
{
"id": "12abf23e5d2d15dd",
"id": "51283a1bd175637d",
"type": "leaf",
"state": {
"type": "markdown",
"state": {
"file": "Documentación personal/Mecanica de Unix/1. Bash Scripting Avanzado/Funciones puras/Ejercicios/Ejercicios - Funciones puras.md",
"mode": "source",
"source": false
},
"type": "empty",
"state": {},
"icon": "lucide-file",
"title": "Ejercicios - Funciones puras"
}
}
]
},
{
"id": "e6733ee149dcba62",
"type": "tabs",
"children": [
{
"id": "cf699ca90183da60",
"type": "leaf",
"state": {
"type": "markdown",
"state": {
"file": "Documentación personal/Mecanica de Unix/1. Bash Scripting Avanzado/Funciones puras/Funciones puras.md",
"mode": "source",
"source": false
},
"icon": "lucide-file",
"title": "Funciones puras"
"title": "Nueva pestaña"
}
}
]
@@ -98,8 +74,7 @@
}
],
"direction": "horizontal",
"width": 317.5,
"collapsed": true
"width": 317.5
},
"right": {
"id": "519d5773673c1040",
@@ -227,7 +202,7 @@
}
],
"direction": "horizontal",
"width": 809.5
"width": 408.5
},
"left-ribbon": {
"hiddenItems": {
@@ -241,16 +216,19 @@
"obsidian-git:Open Git source control": false
}
},
"active": "e615f9321ff830be",
"active": "51283a1bd175637d",
"lastOpenFiles": [
"Documentación personal/Mecanica de Unix/1. Bash Scripting Avanzado/Funciones puras/Funciones puras.md",
"Servidores/M5/Actividades/RA2/RA2 \"Instal·la programari de propòsit general avaluant-ne lescaracterístiques i els entorns daplicació. Instal·lació de programaridutilitat i propòsit general per a un sistema informàtic\".md",
"Servidores/M5/Actividades",
"README.md",
"Servidores/M5/Actividades/RA2",
"Servidores/M5/x.md",
"Documentación personal/Mecanica de Unix/1. Bash Scripting Avanzado/Funciones puras/Ejercicios/Ejercicios - Funciones puras.md",
"Documentación personal/Mecanica de Unix/1. Bash Scripting Avanzado/Funciones puras/Funciones puras.md",
"Documentación personal/Mecanica de Unix/1. Bash Scripting Avanzado/Funciones puras/Ejercicios/calculadora_modular.sh",
"Documentación personal/Mecanica de Unix/1. Bash Scripting Avanzado/Funciones puras/Ejercicios",
"Documentación personal/Mecanica de Unix/1. Bash Scripting Avanzado/Funciones puras",
"Documentación personal/Mecanica de Unix/Mecánica Unix - Manejo de la shell.md",
"README.md",
"Sin título.md",
"Documentación personal/Mecanica de Unix/1. Bash Scripting Avanzado/Expansión de parámetros.md",
"Documentación personal/Mecanica de Unix/1. Bash Scripting Avanzado/Patrones de diseño en Bash.md",
"Documentación personal/Mecanica de Unix/1. Bash Scripting Avanzado/Procesos hijos y paralelismo.md",
@@ -273,12 +251,9 @@
"BDD/SQL/Importación y exportación de base de datos.md",
"Documentación personal/Mecanica de Unix/Bash Scripting/s.md",
"Documentación personal/Mecanica de Unix/1. Bash Scripting Avanzado",
"Documentación personal/Mecanica de Unix",
"BDD/SQL/Diario/Clase 4 de diciembre.md",
"BDD/SQL/Lenguaje de Manupulación de Datos (DML).md",
"BDD/SQL/Lenguaje de definición de datos (DDL).md",
"Documentación personal/Seguridad-Informatica/Vista General 1.canvas",
"Documentación personal/Seguridad-Informatica/desktop.ini",
"Documentación personal/Seguridad-Informatica/1_Imagenes/tools/software/specops.svg",
"Documentación personal/Seguridad-Informatica/1_Imagenes/tools/software/satan.png",
"Documentación personal/Seguridad-Informatica/1_Imagenes/tools/software/nessuslogo.png",

View File

@@ -0,0 +1,199 @@
## ASIX1A - M5 - Sebastian Ariel Duarte Oruez
### 10/12/25
Fet en Obsidian / Markdown
[Enunciat](https://aulavirtual.iesthosicodina.cat/moodle/pluginfile.php/275223/mod_assign/intro/Pt1.%20Instal·lació%20i%20avaluació%20daplicacions%20%282025-26%29.pdf)
# índex
```table-of-contents
```
# Entorn de desenvolupament de software (Linux)
A continuació, es detalla la selecció de software per a l'equip de desenvolupament, justificant les eleccions i comparant-les amb altres alternatives del mercat.
### 1. Entorn de Desenvolupament Integrat (IDE)
**Elecció:** **Visual Studio Code (VSCode)**
- **Justificació:** És actualment l'estàndard de facto a la indústria. És lleuger, de codi obert (en la seva base) i extremadament versàtil gràcies al seu ecosistema d'extensions. Permet unificar el desenvolupament de Javascript, PHP i Python en una sola interfície sense necessitat de canviar de programa.
- **Comparativa:**
- _VSCode vs Sublime Text:_ Sublime és més ràpid, però VSCode té millors eines de depuració (debugging) integrades i millor gestió de Git.
- _VSCode vs WebStorm/PyCharm (JetBrains):_ Les eines de JetBrains són més potents "out-of-the-box", però són de pagament i consumeixen molts més recursos del sistema. VSCode ofereix un equilibri perfecte entre rendiment i funcionalitat gratuïta.
### 2. Control de Versions (Git)
**Elecció:** **Git (Línia de comandes) + Extensió Git integrada a VSCode**
- **Justificació:** Git ve instal·lat per defecte o és trivial d'instal·lar en qualsevol distribució Linux. Tot i que la línia de comandes és essencial, per al dia a dia s'utilitzarà la **integració nativa de VSCode** (o extensions com _GitLens_), que permet veure diferències, fer commits i gestionar branques visualment sense sortir de l'editor.
- **Alternatives gràfiques:** GitKraken (molt visual però amb limitacions en versions gratuïtes) o SmartGit.
### 3. Tractament i Edició d'Imatges
**Elecció:** **GIMP (GNU Image Manipulation Program)**
- **Justificació:** És l'alternativa lliure més potent a Adobe Photoshop. Suporta capes, filtres avançats i scripts, cobrint totes les necessitats d'edició d'imatge per a web i desenvolupament.
- **Comparativa:**
- _GIMP vs Krita:_ Krita està més enfocat a la pintura digital i il·lustració. Per a retoc fotogràfic i manipulació general, GIMP és superior.
- _GIMP vs Inkscape:_ Inkscape és vectorial (SVG), mentre que GIMP és matricial. Per a edició de fotos, GIMP és l'eina correcta.
### 4. Tractament i Edició de Vídeo i Àudio
**Elecció:** **Kdenlive** (Vídeo) i **Audacity** (Àudio)
- **Justificació:**
- **Kdenlive:** És un editor de vídeo no lineal molt robust per a Linux, part del projecte KDE. Suporta múltiples pistes i formats sense necessitat de conversió prèvia.
- **Audacity:** És l'estàndard per a l'edició ràpida d'àudio, neteja de soroll i retall.
- **Comparativa:**
- _Kdenlive vs OpenShot:_ OpenShot és més senzill, però Kdenlive ofereix característiques més professionals necessàries si el projecte creix.
- _Audacity vs Ardour:_ Ardour és un DAW complet (com ProTools), massa complex per a tasques simples. Audacity és més àgil.
### 5. Accés a propietats d'arxius .PSD
**Elecció:** **GIMP** (o Photopea via web si es requereix especificitat)
- **Justificació:** Atès que ja hem instal·lat **GIMP**, aquest és capaç d'obrir i editar arxius natius de Photoshop (.psd). Manté les capes i permet veure propietats, ocultar elements i exportar assets.
- _Nota:_ Si es requereix una fidelitat del 100% sense instal·lar Photoshop (que no corre natiu a Linux), una alternativa online molt utilitzada és **Photopea**, però com a eina d'escriptori, GIMP compleix la funció.
### 6. Mockups i Prototipatge
**Elecció:** **Pencil Project** (pencil.evolus.vn)
- **Justificació:** És una eina de codi obert excel·lent per crear diagrames i prototips d'interfícies d'usuari (GUI) ràpides. Té col·leccions de formes per a Android, iOS i Web.
- **Comparativa:**
- _Pencil vs Balsamiq:_ Balsamiq és de pagament. Pencil és gratuït i ofereix una funcionalitat molt similar per a "wireframing".
- _Pencil vs Figma:_ Figma és l'estàndard actual però és basat en web (tot i que té client d'escriptori, consumeix molta RAM). Per a una eina 100% offline i lleugera, Pencil és ideal.
### 7. Navegadors Web (Testing)
**Elecció:** **Mozilla Firefox** (Principal), **Google Chrome** i **Chromium**
- **Justificació:**
- **Firefox:** Per les seves excel·lents eines de desenvolupament (DevTools) i privacitat.
- **Chrome/Chromium:** Necessari perquè és el motor (Blink) més utilitzat pels usuaris finals. És obligatori testejar que la web es vegi bé aquí.
### 8. Clients FTP Gràfics
**Elecció:** **FileZilla**
- **Justificació:** És el client FTP/SFTP més conegut, multiplataforma i robust. Permet gestió de llocs, cues de transferència i edició remota d'arxius.
- **Alternatives:** _gFTP_ (més antic) o _Cyberduck_ (CLI/Mac, menys comú a Linux GUI).
### 9. Clients SSH Gràfics
**Elecció:** **Termius** (o Remmina)
- **Justificació:** Tot i que a Linux se sol utilitzar la terminal nativa, **Termius** ofereix una interfície moderna per organitzar i guardar credencials de múltiples servidors, amb sincronització.
- _Alternativa clàssica:_ **Putty** (molt utilitzat a Windows, però existeix a Linux) o **Remmina**(que a més de SSH gestiona VNC i RDP, ideal per a administradors de sistemes). Recomanem **Remmina** per ser tot-en-un.
### 10. Comunicació en Temps Real
**Elecció:** **Slack**
- **Justificació:** És l'estàndard en moltes empreses de desenvolupament. Té client natiu per a Linux (.deb/.rpm/snap) que funciona fluidament.
- **Alternatives:** _Discord_ (més enfocat a gaming, tot i que utilitzat en dev) o _Mattermost_ (alternativa Open Source self-hosted).
### Instal·lació de la pila de desenvolupament (Backend/Frontend)
Per completar l'entorn, s'instal·laran els següents serveis sol·licitats:
1. **Servidor Web:** **Apache HTTP Server**. (Estàndard, robust i modular).
2. **Base de Dades Relacional:** **MariaDB**. (Fork de MySQL totalment compatible, open source i amb millor rendiment/comunitat a Linux).
3. **Javascript Runtime:** **Node.js** (Versió LTS per a estabilitat).
4. **Base de Dades NoSQL:** **MongoDB**.
5. **Gestors de BBDD Gràfics:**
- **DBeaver** o **Adminer**: L'enunciat demana _Adminer_ (que és un script PHP), però **DBeaver** és una aplicació d'escriptori universal molt més potent per a desenvolupadors. Si cal cenyir-se a l'enunciat: **Adminer**.
- **MongoDB Compass**: L'eina oficial GUI per a MongoDB.
6. **API Testing:** **Postman**. Imprescindible per provar els endpoints del desenvolupament Backend.
# Entorn Windows (Ofimàtica)
Seguint els criteris d'eficiència i estandardització per al departament administratiu/ofimàtica.
### 1. Suite Ofimàtica
**Elecció:** **LibreOffice** (Opció Open Source) o **Microsoft Office 365** (Estàndard empresarial).
- _Recomanació:_ Si l'empresa busca estalviar costos i utilitzar software lliure com al departament de desenvolupament: **LibreOffice**. Si es requereix màxima compatibilitat amb clients externs: **Microsoft Office**.
- **Justificació LibreOffice:** Inclou Writer (Docs), Calc (Excel) i Impress (PowerPoint). És gratuït i llegeix formats de Microsoft.
### 2. Infografies i Presentacions
**Elecció:** **Canva** (Online - Accés directe) i **Impress/PowerPoint** (Escriptori).
- **Justificació:**
- **Canva:** Per a infografies ràpides i modernes, és insuperable en facilitat d'ús. En ser online, crearem un accés directe a l'escriptori o marcador al navegador.
- **Eina d'escriptori:** Per a presentacions confidencials o sense internet, s'utilitzarà la inclosa a la suite ofimàtica.
### 3. Videoconferència
**Elecció:** **Microsoft Teams** (o Zoom).
- **Justificació:**
- **Teams:** Si l'empresa utilitza entorn Windows, Teams sol venir integrat i permet xat + vídeo + gestió d'arxius.
- **Zoom:** És l'alternativa més estable si només es busca vídeo i no col·laboració documental.
### 4. Comunicació Interna
**Elecció:** **Slack** (Versió Windows).
- **Justificació:** Per mantenir la coherència amb el departament de desenvolupament i que tota l'empresa estigui al mateix canal de comunicació.
### 5. Utilitats Vàries (Necessàries per a l'entorn)
- **Compressor:** **7-Zip** (Gratuït, potent, obre tot).
- **Lector PDF:** **Adobe Acrobat Reader** o **Foxit Reader** (Per signar documents i visualització avançada).
- **Navegador:** **Google Chrome** o **Edge** (Preinstal·lat, funciona bé en entorn corporatiu).
- **Reproductor Multimèdia:** **VLC Media Player** (Per obrir qualsevol vídeo o àudio sense problemes de còdecs).