Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Migro primer proyecto C y TP0 a makefile project #80

Merged
merged 27 commits into from
Mar 20, 2024
Merged
Show file tree
Hide file tree
Changes from 24 commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
e674862
Renombro a primer-proyecto-c.md
RaniAgus Mar 16, 2024
1bd720a
Migro TP0 a Visual Studio Code
RaniAgus Mar 16, 2024
2ddceff
Actualizo primer-proyecto-c.md
RaniAgus Mar 16, 2024
a837169
Creación de los módulos
RaniAgus Mar 16, 2024
a46075e
Agrego codigo-compartido.md
RaniAgus Mar 16, 2024
704bba1
Actualizo primer-proyecto-c.md
RaniAgus Mar 16, 2024
b516e13
Mejoras en crear-modulos.md
RaniAgus Mar 16, 2024
a8a8d64
Agrego archivo faltante
RaniAgus Mar 16, 2024
f5fcac5
Quito estructurando sección del sidebar
RaniAgus Mar 17, 2024
ef69e49
Agrego sección de despliegue
RaniAgus Mar 17, 2024
267a30a
Minor detail
RaniAgus Mar 17, 2024
f75c16e
Agrego posibilidad de hacerle zoom a las imágenes
RaniAgus Mar 18, 2024
dfae558
Cómo compilar, reportar errores y ejecutar
RaniAgus Mar 18, 2024
aff8d2d
Duplico cómo compartir errores
RaniAgus Mar 18, 2024
28f6153
Actualizo navbar
RaniAgus Mar 18, 2024
2ce3548
Muevo git para el TP a los primeros pasos
RaniAgus Mar 18, 2024
297c44e
Actualizo argumentos para main
RaniAgus Mar 18, 2024
cb9eeba
Cositas lindas de markdown y vitepress
RaniAgus Mar 18, 2024
23d6460
Agrego requisitos
RaniAgus Mar 18, 2024
d1bbb7a
Merge branch 'main' of github.com:sisoputnfrba/docs into feat/custom-…
RaniAgus Mar 19, 2024
8ea8f33
Agrego lo del script al deploy
RaniAgus Mar 19, 2024
0e265bf
Muevo guías a los primeros pasos
RaniAgus Mar 19, 2024
031d216
Sidebar collapsed false
RaniAgus Mar 19, 2024
f1e2cf9
Hago que me quede en un renglón
RaniAgus Mar 19, 2024
3b90404
Add files via upload
RaniAgus Mar 20, 2024
0b81336
Update docs/primeros-pasos/primer-proyecto-c.md
RaniAgus Mar 20, 2024
0ed900b
Update primer-proyecto-c.md
RaniAgus Mar 20, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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