Skip to content

Commit

Permalink
Merge pull request #80 from sisoputnfrba/feat/custom-template
Browse files Browse the repository at this point in the history
Migro primer proyecto C y TP0 a makefile project
  • Loading branch information
iago64 authored Mar 20, 2024
2 parents 6f2c5ab + 0ed900b commit 4f6e71a
Show file tree
Hide file tree
Showing 41 changed files with 887 additions and 317 deletions.
39 changes: 17 additions & 22 deletions docs/.vitepress/configs/navbar.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,28 +6,23 @@ export const navbar: DefaultTheme.NavItem[] = [
link: 'https://faq.utnso.com.ar/blog'
},
{
text: 'Docs',
items: [
{
text: 'Primeros pasos',
link: '/primeros-pasos/',
activeMatch: '/primeros-pasos/'
},
{
text: 'Guías',
link: '/guias/',
activeMatch: '/guias/',
},
{
text: 'Consultas',
link: '/consultas',
activeMatch: '/consultas',
},
{
text: '¿Quiénes somos?',
link: '/quienes-somos',
},
],
text: 'Primeros pasos',
link: '/primeros-pasos/',
activeMatch: '/primeros-pasos/'
},
{
text: 'Guías',
link: '/guias/',
activeMatch: '/guias/',
},
{
text: 'Consultas',
link: '/consultas',
activeMatch: '/consultas',
},
{
text: '¿Quiénes somos?',
link: '/quienes-somos',
},
{
text: 'Inscripciones',
Expand Down
64 changes: 28 additions & 36 deletions docs/.vitepress/configs/sidebar.ts
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ export const sidebar: DefaultTheme.Sidebar = [
},
{
text: 'Primeros pasos',
collapsed: true,
collapsed: false,
items: [
{
text: '¿Dónde me anoto?',
Expand All @@ -48,7 +48,23 @@ export const sidebar: DefaultTheme.Sidebar = [
},
{
text: 'Crear tu primer proyecto C',
link: '/primeros-pasos/entorno-desarrollo'
link: '/primeros-pasos/primer-proyecto-c'
},
{
text: 'Git para el Trabajo Práctico',
link: '/primeros-pasos/git'
},
{
text: 'Manejo de Punteros',
link: '/guias/programacion/punteros',
},
{
text: 'Guía de Sockets',
link: '/guias/linux/sockets',
},
{
text: 'Guía de Serialización',
link: '/guias/linux/serializacion',
},
{
text: 'Trabajo Práctico 0',
Expand All @@ -58,20 +74,20 @@ export const sidebar: DefaultTheme.Sidebar = [
},
{
text: 'Consola de Linux y Git',
collapsed: true,
collapsed: false,
items: [
{
text: 'Guía de uso de Bash',
link: '/guias/consola/bash'
},
{
text: 'Git para el Trabajo Práctico',
link: '/guias/consola/git'
},
{
text: 'Rutas Relativas y Absolutas',
link: '/guias/consola/rutas'
},
{
text: 'Guía de despliegue de TP',
link: '/guias/herramientas/deploy'
},
{
text: 'Mario Bash',
link: 'https://faq.utnso.com.ar/mariobash'
Expand All @@ -84,16 +100,12 @@ export const sidebar: DefaultTheme.Sidebar = [
},
{
text: 'Programación en C',
collapsed: true,
collapsed: false,
items: [
{
text: 'Repaso de Arquitectura',
link: 'https://faq.utnso.com.ar/guia-repaso-arquitectura'
},
{
text: 'Manejo de Punteros y Memoria Dinámica',
link: '/guias/programacion/punteros',
},
{
text: 'Buenas Prácticas de C',
link: '/guias/programacion/buenas-practicas'
Expand All @@ -103,13 +115,9 @@ export const sidebar: DefaultTheme.Sidebar = [
link: '/guias/programacion/main'
},
{
text: 'Cómo hacer una consola interactiva',
text: 'Hacer una consola interactiva',
link: '/guias/programacion/readline'
},
{
text: 'Video de Shared Libraries',
link: '/guias/programacion/shared-libraries'
},
{
text: 'Tutorial interactivo de C',
link: 'https://www.learn-c.org/'
Expand All @@ -118,18 +126,10 @@ export const sidebar: DefaultTheme.Sidebar = [
},
{
text: 'Syscalls de Linux',
collapsed: true,
collapsed: false,
items: [
{
text: 'Guía de Sockets',
link: '/guias/linux/sockets',
},
{
text: 'Guía de Serialización',
link: '/guias/linux/serializacion',
},
{
text: 'Charla de Threads y Sincronización',
text: 'Charla de Threads y Sincro',
link: '/guias/linux/threads',
},
{
Expand All @@ -140,12 +140,8 @@ export const sidebar: DefaultTheme.Sidebar = [
},
{
text: 'Herramientas útiles',
collapsed: true,
collapsed: false,
items: [
{
text: 'Guía para crear proyectos C',
link: 'https://raniagus.github.io/so-project-template/'
},
{
text: 'Debugging en Eclipse',
link: '/guias/herramientas/debugger'
Expand All @@ -158,10 +154,6 @@ export const sidebar: DefaultTheme.Sidebar = [
text: 'Unit Testing con CSpec',
link: '/guias/herramientas/cspec'
},
{
text: 'Guía de despliegue de TP',
link: '/guias/herramientas/deploy'
},
],
},
]
21 changes: 18 additions & 3 deletions docs/.vitepress/theme/index.js
Original file line number Diff line number Diff line change
@@ -1,17 +1,32 @@
import DefaultTheme from 'vitepress/theme';
import { onMounted, watch, nextTick } from 'vue';
import { useRoute } from 'vitepress';
import mediumZoom from 'medium-zoom';
import Image from './components/Image.vue';
import Link from './components/Link.vue';
import YouTube from './components/YouTube.vue';

import './styles/custom.scss';
import './styles/print.scss';
import './index.scss';

export default {
...DefaultTheme,
enhanceApp: (ctx) => {
enhanceApp(ctx) {
//DefaultTheme.enhanceApp(ctx);
ctx.app.component('Image', Image);
ctx.app.component('Link', Link);
ctx.app.component('YouTube', YouTube);
},
setup() {
const route = useRoute();
const initZoom = () => {
mediumZoom('.main img', { background: 'var(--vp-c-bg)' });
};
onMounted(() => {
initZoom();
});
watch(
() => route.path,
() => nextTick(() => initZoom())
);
},
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,11 @@
page-break-inside: avoid;
}
}

.medium-zoom-overlay {
z-index: 30;
}

.medium-zoom-image {
z-index: 31;
}
1 change: 0 additions & 1 deletion docs/.vitepress/theme/styles/custom.scss

This file was deleted.

12 changes: 10 additions & 2 deletions docs/consultas.md
Original file line number Diff line number Diff line change
Expand Up @@ -137,9 +137,17 @@ de soporte en [Discord](https://faq.utnso.com.ar/discord-invite).

::: tip

Este video les puede ayudar a reportar mejor los errores que encuentren:
Si necesitan compartirnos un error de compilación desde Visual Studio Code, nos
servirá de gran ayuda contar con la salida del compilador. Para obtenerla,
podemos navegar a la pestaña de _Terminal_ y **copiar el texto** que aparece al
ejecutar la tarea de compilación:

<YouTube v="qKkmU13uKHw"/>
![vscode-copy-compiler-output](/img/primeros-pasos/primer-proyecto-c/vscode-copy-compiler-output.gif)

Un texto de error es mucho más útil que una captura de pantalla, ya que nos
permite copiarlo e investigarlo sin tener que transcribirlo manualmente. Además,
si alguien más tiene el mismo problema, va a poder encontrar la solución
utilizando el buscador del foro.

:::

Expand Down
85 changes: 56 additions & 29 deletions docs/guias/consola/rutas.md
Original file line number Diff line number Diff line change
Expand Up @@ -70,48 +70,75 @@ directorio actual de nuestro proceso. Este no necesariamente es el mismo
directorio desde el que ejecutamos el proceso (porque pudo haber hecho un
`chdir()`), pero por lo general sí lo va a ser.

## Eclipse
## Visual Studio Code

Pero más de una vez nos pasa que, trabajando con Eclipse, los path relativos se
resuelven bien ejecutando nuestro proceso desde Eclipse, pero falla cuando lo
ejecutamos desde la consola.
Pero más de una vez nos pasa que, trabajando con Visual Studio Code, los path
relativos se resuelven bien ejecutando nuestro proceso desde el editor, pero
falla cuando lo ejecutamos desde la consola.

El problema, acá, es el CWD en cada caso.

Cuando vamos a ejecutar desde la consola, por lo general vamos al directorio
`Debug/` que contiene nuestro ejecutable, y le damos `./miEjecutable` para
correrlo. En ese caso, el CWD es nuestro directorio Debug/, y todas las rutas
`bin` que contiene nuestro ejecutable, y le damos `./miEjecutable` para
correrlo. En ese caso, el CWD es nuestro directorio `bin`, y todas las rutas
relativas se resuelven a partir de allí.

Pero eclipse no hace eso, o al menos no por defecto. Si vamos a las Run
Configurations de eclipse (`Run` > `Run configurations...`) y seleccionamos la
de algún proyecto que ya hayamos ejecutado, vamos a encontrar que la pestaña de
"Arguments" es algo así:

![eclipse-run-config-arguments](/img/guias/consola/eclipse-run-config-arguments.png)

¡Ahí está! Abajo de todo dice que el working directory de nuestro proceso va a
ser `${workspace_loc:NUESTRO_PROYECTO}`, que es la forma horrenda que tiene
eclipse para decir "el directorio raíz del proyecto". De hecho, si miramos la
pestaña "Main" de las `Run Configurations`, podemos observar algo raro arriba de
todo:
Pero la configuración de Visual Studio Code provista por la cátedra,
por defecto, utiliza otra ruta para ejecutar el programa. Si nos fijamos en la
carpeta `.vscode` de nuestro proyecto, vamos a encontrar un archivo llamado
`launch.json`. Una vez lo abramos, veremos algo así:

```json
{
// See https://go.microsoft.com/fwlink/?linkid=830387
// for the documentation about the launch.json format
"version": "0.2.0",
"configurations": [
{
"name": "run",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/bin/${workspaceFolderBasename}", // [!code focus]
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}", // [!code focus]
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "build"
}
]
}
```

![eclipse-run-config-main](/img/guias/consola/eclipse-run-config-main.png)
¡Ahí está! El campo `cwd` es la carpeta desde la cual Visual Studio Code va a
"hacerle `cd`". En este caso, siempre va a ser la carpeta en donde se encuentra
nuestro proyecto.

Nuestra aplicación no es coercion (el nombre del proyecto al que le saqué la
captura), si no Debug/coercion. Ese es el comando que eclipse "va a ejecutar en
la consola". Digamos, eclipse va a hacer una especie de `cd` al directorio que
marca como "Working directory", y desde ahí va a ejecutar lo que diga en el
campo `C/C++ Application`:
Entonces, si nosotros queremos ejecutar nuestro programa desde la consola de la
misma forma que lo hace Visual Studio Code, vamos a tener que hacerlo de la
siguiente manera:

```bash
cd coercion
./Debug/coercion
cd mi-proyecto
./bin/mi-proyecto
```

Entonces, como nosotros desde la consola solemos entrar a Debug en lugar de
ejecutar desde el directorio raíz del proyecto, ahí es donde aparecen las
diferencias con las rutas relativas.
::: tip

En realidad, lo que hace Visual Studio Code es ejecutar el programa utilizando
`gdb` para poder hacer debugging; y, como pueden ver en el campo `program`,
utiliza una ruta absoluta para llegar al binario. Pero, a fines prácticos, el
resultado es el mismo.

:::

## Del otro lado del espejo

Expand Down
Loading

0 comments on commit 4f6e71a

Please sign in to comment.