Compare commits

..

29 Commits

Author SHA1 Message Date
Fran314 bf9709c689 updated recovery instructions for 2FA
continuous-integration/drone/push Build is passing Details
5 months ago
Luca Lombardo 4cbfc828c0 Add recovery instructions for Unipi account access without 2FA
continuous-integration/drone/push Build is passing Details
5 months ago
Luca Lombardo 8fddadb098 aggiunte domande istgeom valeria
continuous-integration/drone/push Build is passing Details
8 months ago
Antonio De Lucreziis 6e615d6874 mobile video fix
continuous-integration/drone/push Build is passing Details
8 months ago
Antonio De Lucreziis 54d95b9c59 minor drone lint fix
continuous-integration/drone/push Build is passing Details
8 months ago
Antonio De Lucreziis 21260f1a85 ok forse bastava solo usare alpine dall'inizio
continuous-integration/drone/push Build is passing Details
8 months ago
Antonio De Lucreziis 10bcde22bf yeee forse ora funge
continuous-integration/drone/push Build is passing Details
8 months ago
Antonio De Lucreziis 7c9d1e3fcc debugging 12
continuous-integration/drone/push Build is passing Details
8 months ago
Antonio De Lucreziis e355a29ae9 debugging 11
continuous-integration/drone/push Build is failing Details
8 months ago
Antonio De Lucreziis 22c8357282 debugging 10
continuous-integration/drone/push Build is failing Details
8 months ago
Antonio De Lucreziis 3308e10981 debugging 9
continuous-integration/drone/push Build is failing Details
8 months ago
Antonio De Lucreziis 176bad6d51 debugging 8
continuous-integration/drone/push Build is failing Details
8 months ago
Antonio De Lucreziis f7076759e1 debugging 7
continuous-integration/drone/push Build is failing Details
8 months ago
Antonio De Lucreziis 5eb8e3fc85 debugging 6
continuous-integration/drone/push Build is failing Details
8 months ago
Antonio De Lucreziis 85a144b6d0 debugging 5
continuous-integration/drone/push Build is failing Details
8 months ago
Antonio De Lucreziis f99a7389be debugging 4
continuous-integration/drone/push Build is failing Details
8 months ago
Antonio De Lucreziis ff966c31a8 debugging 3
continuous-integration/drone/push Build is failing Details
8 months ago
Antonio De Lucreziis e5821067b1 debugging 2
continuous-integration/drone/push Build is failing Details
8 months ago
Antonio De Lucreziis 655a4c5b22 debugging
continuous-integration/drone/push Build is failing Details
8 months ago
Antonio De Lucreziis 40673661cf updated .drone.yml
continuous-integration/drone/push Build is failing Details
8 months ago
Antonio De Lucreziis 969e8bea35 updated .drone.yml
continuous-integration/drone/push Build is failing Details
8 months ago
Antonio De Lucreziis d409e83ccb fix drone maybe
continuous-integration/drone/push Build is failing Details
8 months ago
Antonio De Lucreziis abd12dd2f3 updated more packages
continuous-integration/drone/push Build is failing Details
8 months ago
Antonio De Lucreziis cc77ec90cc minor guide update
continuous-integration/drone/push Build is failing Details
8 months ago
Antonio De Lucreziis b8eb2eb7bf fixed build error, updated packages and astro, minor code updates 8 months ago
Francesco Minnocci 18f6df7c4d
feat: Add SSH print guide; add Meme news.
continuous-integration/drone/push Build is failing Details
8 months ago
Luca Lombardo d2a866cb0f feat: add pass/fail option for specific courses in CORSI_DISPONIBILI
continuous-integration/drone/push Build is passing Details
11 months ago
Antonio De Lucreziis b3251906d5 aggiunta foto e descrizione per baldo alla pagina macchinisti
continuous-integration/drone/push Build is passing Details
11 months ago
Antonio De Lucreziis 55d0dc8345 fixed minor style issue
continuous-integration/drone/push Build is passing Details
11 months ago

@ -7,15 +7,19 @@
kind: pipeline kind: pipeline
name: default name: default
type: docker
steps: steps:
- name: deploy - name: deploy
image: node:latest image: node:22-alpine
volumes: volumes:
- name: host-website-dist - name: host-website-dist
path: /mnt/website path: /mnt/website
commands: commands:
- npm install - uname -a
- node -v
- npm ci
- node -e 'import Sharp from "sharp"; console.log(Sharp)'
- npm run build - npm run build
- cp -rT ./dist /mnt/website - cp -rT ./dist /mnt/website
@ -32,8 +36,8 @@ trigger:
--- ---
kind: pipeline kind: pipeline
type: exec # this job is executed on the host machine
name: caddy-permissions name: caddy-permissions
type: exec # this job is executed on the host machine
depends_on: depends_on:
- default - default

Binary file not shown.

23597
package-lock.json generated

File diff suppressed because it is too large Load Diff

@ -11,41 +11,44 @@
}, },
"dependencies": { "dependencies": {
"@astrojs/check": "^0.9.4", "@astrojs/check": "^0.9.4",
"@astrojs/node": "9.0.0", "@astrojs/node": "^9.4.3",
"@astrojs/preact": "4.0.0", "@astrojs/preact": "^4.1.1",
"@fontsource-variable/material-symbols-outlined": "^5.1.1", "@fontsource-variable/material-symbols-outlined": "^5.2.21",
"@fontsource/iosevka": "^5.0.11", "@fontsource/iosevka": "^5.2.5",
"@fontsource/mononoki": "^5.0.11", "@fontsource/mononoki": "^5.2.5",
"@fontsource/open-sans": "^5.0.24", "@fontsource/open-sans": "^5.2.6",
"@fontsource/source-code-pro": "^5.0.16", "@fontsource/source-code-pro": "^5.2.6",
"@fontsource/source-sans-pro": "^5.0.8", "@fontsource/source-sans-pro": "^5.2.5",
"@fontsource/space-mono": "^5.0.20", "@fontsource/space-mono": "^5.2.8",
"@phosphor-icons/core": "^2.1.1", "@phosphor-icons/core": "^2.1.1",
"@phosphor-icons/react": "^2.1.7", "@phosphor-icons/react": "^2.1.10",
"@preact/signals": "^1.3.0", "@preact/signals": "^1.3.2",
"@types/jsdom": "^21.1.7", "@types/jsdom": "^21.1.7",
"astro": "5.1.0", "astro": "^5.13.7",
"fuse.js": "^7.0.0", "fuse.js": "^7.1.0",
"katex": "^0.16.9", "katex": "^0.16.22",
"lucide-static": "^0.468.0", "lucide-static": "^0.468.0",
"marked": "^15.0.6", "marked": "^15.0.12",
"preact": "^10.19.6", "node-addon-api": "^8.5.0",
"typescript": "^5.3.3" "node-gyp": "^11.4.2",
"preact": "^10.27.2",
"sharp": "^0.34.3",
"typescript": "^5.9.2"
}, },
"devDependencies": { "devDependencies": {
"@astrojs/mdx": "4.0.2", "@astrojs/mdx": "^4.3.5",
"@rollup/plugin-yaml": "^4.1.2", "@rollup/plugin-yaml": "^4.1.2",
"@types/katex": "^0.16.7", "@types/katex": "^0.16.7",
"jsdom": "^24.1.1", "jsdom": "^24.1.3",
"linkedom": "^0.18.4", "linkedom": "^0.18.12",
"npm-run-all": "^4.1.5", "npm-run-all": "^4.1.5",
"prettier": "^3.5.0", "prettier": "^3.6.2",
"prettier-plugin-astro": "^0.14.1", "prettier-plugin-astro": "^0.14.1",
"rehype-autolink-headings": "^7.1.0", "rehype-autolink-headings": "^7.1.0",
"rehype-slug": "^6.0.0", "rehype-slug": "^6.0.0",
"remark-math": "^6.0.0", "remark-math": "^6.0.0",
"remark-toc": "^9.0.0", "remark-toc": "^9.0.0",
"sass": "^1.71.1", "sass": "^1.92.1",
"tsx": "^4.7.1" "tsx": "^4.20.5"
} }
} }

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 877 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 77 KiB

@ -41,7 +41,13 @@ export const ComboBox = ({
<PhosphorIcon name="caret-down" /> <PhosphorIcon name="caret-down" />
</div> </div>
{open && ( {open && (
<div class={clsx('dropdown', cloak && 'invisible')} ref={el => el && setItemWidth(el.offsetWidth)}> <div
class={clsx('dropdown', cloak && 'invisible')}
ref={el => {
if (!el) return
setItemWidth(el.offsetWidth)
}}
>
{Object.keys(children).map(key => ( {Object.keys(children).map(key => (
<div <div
class="option" class="option"

@ -1,5 +1,5 @@
import { useEffect, useState } from 'preact/hooks' import { useEffect, useState } from 'preact/hooks'
import { Funnel } from '@phosphor-icons/react' import { FunnelIcon } from '@phosphor-icons/react'
import { marked } from 'marked' import { marked } from 'marked'
import extendedLatex from '@/client/lib/marked-latex' import extendedLatex from '@/client/lib/marked-latex'
@ -70,7 +70,7 @@ export const DomandeEsamiCourse = ({ course }: Props) => {
{courseTags.length > 1 && ( {courseTags.length > 1 && (
<div class="card filter"> <div class="card filter">
<div class="grid-h"> <div class="grid-h">
<Funnel /> <FunnelIcon />
<strong>Filtra Tag</strong> <strong>Filtra Tag</strong>
</div> </div>
<div class="flex-row-wrap"> <div class="flex-row-wrap">

@ -1,5 +1,4 @@
import { useState, useEffect } from 'preact/hooks' import { useState, useEffect } from 'preact/hooks'
import { render } from 'preact'
// Tipi per la gestione dei dati // Tipi per la gestione dei dati
type TipoStudente = 'triennale' | 'magistrale' type TipoStudente = 'triennale' | 'magistrale'
@ -63,7 +62,8 @@ const CORSI_DISPONIBILI: Corso[] = [
{ nome: 'Fisica III', anno: '3', cfu: 6 }, { nome: 'Fisica III', anno: '3', cfu: 6 },
{ nome: 'Geometria e topologia differenziale', anno: '3', cfu: 6 }, { nome: 'Geometria e topologia differenziale', anno: '3', cfu: 6 },
{ nome: 'Gruppi e rappresentazioni', anno: '3', cfu: 6 }, { nome: 'Gruppi e rappresentazioni', anno: '3', cfu: 6 },
{ nome: 'Laboratorio computazionale', anno: '3', cfu: 6 }, { nome: 'Laboratorio computazionale', anno: '3', cfu: 6, passFailOnly: true },
{ nome: 'Laboratorio sperimentale di matematica computazionale', anno: '3', cfu: 6, passFailOnly: true },
{ nome: 'Linguaggi di programmazione con laboratorio', anno: '3', cfu: 9 }, { nome: 'Linguaggi di programmazione con laboratorio', anno: '3', cfu: 9 },
{ nome: 'Logica matematica', anno: '3', cfu: 6 }, { nome: 'Logica matematica', anno: '3', cfu: 6 },
{ nome: 'Matematiche elementari da un punto di vista superiore: aritmetica', anno: '3', cfu: 6 }, { nome: 'Matematiche elementari da un punto di vista superiore: aritmetica', anno: '3', cfu: 6 },

@ -9,7 +9,7 @@ const extBlock = options => ({
start(src) { start(src) {
return src.match(/\$\$[^\$]/)?.index ?? -1 return src.match(/\$\$[^\$]/)?.index ?? -1
}, },
tokenizer(src, tokens) { tokenizer(src, _tokens) {
const match = /^\$\$([^\$]+)\$\$/.exec(src) const match = /^\$\$([^\$]+)\$\$/.exec(src)
return match ? { type: 'latex-block', raw: match[0], formula: match[1] } : undefined return match ? { type: 'latex-block', raw: match[0], formula: match[1] } : undefined
}, },
@ -25,7 +25,7 @@ const extInline = options => ({
start(src) { start(src) {
return src.match(/\$[^\$]/)?.index ?? -1 return src.match(/\$[^\$]/)?.index ?? -1
}, },
tokenizer(src, tokens) { tokenizer(src, _tokens) {
const match = /^\$([^\$]+)\$/.exec(src) const match = /^\$([^\$]+)\$/.exec(src)
return match ? { type: 'latex', raw: match[0], formula: match[1] } : undefined return match ? { type: 'latex', raw: match[0], formula: match[1] } : undefined
}, },

@ -32,17 +32,17 @@ const guidesCollection = defineCollection({
}) })
// Per ora sono su un sito a parte ma prima o poi verranno migrati qui // Per ora sono su un sito a parte ma prima o poi verranno migrati qui
const seminariettiCollection = defineCollection({ // const seminariettiCollection = defineCollection({
type: 'content', // type: 'content',
schema: z.object({ // schema: z.object({
title: z.string(), // title: z.string(),
description: z.string(), // description: z.string(),
author: z.string(), // author: z.string(),
publishDate: z.date(), // publishDate: z.date(),
eventDate: z.date(), // eventDate: z.date(),
tags: z.array(z.string()), // tags: z.array(z.string()),
}), // }),
}) // })
const metaCollection = defineCollection({ const metaCollection = defineCollection({
type: 'content', type: 'content',
@ -53,6 +53,6 @@ const metaCollection = defineCollection({
export const collections = { export const collections = {
news: newsCollection, news: newsCollection,
guides: guidesCollection, guides: guidesCollection,
seminarietti: seminariettiCollection, // seminarietti: seminariettiCollection,
meta: metaCollection, meta: metaCollection,
} }

@ -0,0 +1,80 @@
---
id: stampare-via-ssh
title: Stampare via SSH
description: Istruzioni per stampare in dipartimento da remoto, tramite SSH 🖨
author: Antonio De Lucreziis, Francesco Minnocci
tags: [linux, ssh, stampanti]
---
Per stampare in dipartimento non bisogna per forza usare i computer dei laboratori, possiamo che stampare direttamente da remoto tramite SSH. Vediamo come fare!
Se non l'avete mai fatto per prima cosa bisogna poter accedere da remoto ad una macchina chiamata "login", il cui indirizzo è `login.dm.unipi.it`. Per fare l'accesso possiamo usare il seguente comando con l'account di Ateneo (non quello Poisson!)
```bash shell
ssh USERNAME_ATENEO@login.dm.unipi.it
```
Una volta connessi possiamo stampare utilizzando il comando `lpr` seguito dal nome del file che vogliamo stampare. Prima però serve trasferire il file che vogliamo stampare sulla macchina "login". Per fare ciò possiamo usare il comando `scp`: per prima cosa usciamo dalla macchina "login" (premere `Ctrl+D` oppure scrivendo `exit`), andiamo nella cartella dove si trova il file che vogliamo stampare e poi eseguiamo il comando:
```bash shell
scp NOME_FILE.pdf USERNAME_ATENEO@login.dm.unipi.it:~/Documents
```
Dove `NOME_FILE.pdf` è il nome del file che vogliamo stampare e `Documents` è un esempio di cartella dove vogliamo trasferirlo. Una volta trasferito il file possiamo rifare ssh su "login" e stampare il file con il comando:
```bash shell
lpr Documents/NOME_FILE.pdf
```
Alternativamente possiamo stampare direttamente il file senza trasferirlo con il comando:
```bash shell
cat NOME_FILE.pdf | ssh USERNAME_ATENEO@login.dm.unipi.it lpr OPZIONI... -
```
Qui, `[OPZIONI...]` sono le opzioni che possiamo passare a `lpr` (vedi sotto). L'ultimo trattino "`-`" è molto importante e indica che il file da stampare è quello in standard input. Più precisamente, `cat NOME_FILE.pdf` invia il contenuto del file `NOME_FILE.pdf` allo standard output e `|` lo ridireziona a input di `ssh`, che a sua volta lo passa a `lpr` via rete.
## Opzioni di `lpr`
Il comando `lpr` accetta alcune opzioni che possono essere utili:
- `-P` seguito dal nome della stampante: permette di specificare la stampante su cui stampare, le stampanti disponibili in dipartimento sono
- `cdc4` che è la stampante di default e si trova in Aula 4
- `cdclf` che si trova al piano terra nel corridoio dopo l'Aula 4
- `cdc3` che si trova in Aula 3 (è un po' vecchia ma di solito funziona)
- `-#` seguito dal numero di copie: permette di specificare il numero di copie da stampare. In realtà questa opzione non funziona per vari motivi arcani e se uno passa `-#N` per stampare $N$ copie, la stampante stampa $N^2$ copie. (Questo ha scaturito una serie di ragionamenti sul modo ottimo di decomporre $N$ come somma di quadrati [con tanto di sito di comodo](https://shortest-sum-of-squares.netlify.app/)...)
- `-o sides=two-sided-long-edge`: permette di stampare **fronte-retro** (che dovrebbe essere già il default)
- `-o sides=two-sided-short-edge`: permette di stampare fronte-retro con "la rilegatura" delle pagine sul lato corto
- `-o sides=one-sided`: permette di stampare _solo fronte_, comodo per stampare i meme di laurea
- `-o fit-to-page`: permette di ridimensionare il documento per farlo entrare in un foglio (è buona prassi passare sempre questa opzione)
- `-o media=a4`: permette di specificare il formato del foglio, di default è A4 quindi non dovrebbere servire
## Altre comodità
Stampare da remoto porta anche altre comodità, ad esempio possiamo interrompere un file che abbiamo mandato in stampa per sbaglio con il comando (sempre tutti comandi da eseguire su "login")
```bash shell
cancel -a
```
> Attenzione, il comando sopra cancella tutta la propria coda di stampa, non solo l'ultimo lavoro inviato.
Alternativamente possiamo vedere lo stato della coda di stampa con il comando
```bash shell
lpq -a
```
e cancellare un lavoro con uno specifico ID con
```bash shell
cancel ID
```

@ -1,6 +1,6 @@
--- ---
title: Calcola la tua media ed il voto di laurea con il nuovissimo calcolatore del PHC! title: Calcola la tua media ed il voto di laurea con il nuovissimo calcolatore del PHC!
description: È ora disponibile uno strumento per calcolare la propria media pesata e il voto di ammissione alla laurea secondo le regole del dipartimento description: È ora disponibile uno strumento per calcolare la propria media pesata e il voto di ammissione alla laurea secondo le regole del dipartimento.
publishDate: 2025-06-26 publishDate: 2025-06-26
--- ---

@ -0,0 +1,46 @@
---
title: Esplora i meme dell'aula studenti online!
description: |
Gli storici meme sono stati staccati per i lavori, ma non disperare: li potrai vedere su una nuova pagina.
publishDate: 2025-06-26
---
# Esplora i meme dell'aula studenti online!
Visti gli imminenti lavori che occuperanno l'aula studenti, ad inizio Settembre tutti i meme sulle pareti sono stati staccati e riposti temporaneamente in PHC; qui sotto trovate alcuni timelapse della giornata:
<div class="grid-h-split">
<video controls>
<source src="https://static.phc.dm.unipi.it/timelapse-nord.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
<video controls>
<source src="https://static.phc.dm.unipi.it/timelapse-sud.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
<video controls>
<source src="https://static.phc.dm.unipi.it/timelapse-termosifone.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
</div>
Per questo motivo, li abbiamo scansionati ed abbiamo creato una bacheca per poter contemplare i meme dovunque voi siate 🧳
Eccovi dunque il link alla pagina, buon divertimento:
![Screenshot Bacheca](/images/misc/screenshot-bacheca.png)
<p align="center">
<a href="https://meme.phc.dm.unipi.it">meme.phc.dm.unipi.it</a>
</p>
## Coming Soon
Prima o poi faremo anche una mappa interattiva della stanza, basata sul seguente modello 3D ricostruito con tecniche di fotogrammetria:
<video controls>
<source src="https://static.phc.dm.unipi.it/3d-scan-preview.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
> Disclaimer: Se volessi rimuovere una tua immagine da questa pagina, scrivici pure a <a href="mailto:macchinisti@lists.dm.unipi.it">macchinisti@lists.dm.unipi.it</a> e ce ne occuperemo.

@ -0,0 +1,34 @@
---
title: Non avete attivato la 2FA entro il primo dicembre? Ecco come recuperare l'accesso
description: |
Se non avete attivato l'autenticazione a due fattori entro il primo dicembre, siete bloccati fuori dall'account Unipi. La procedura di recupero passa dal supporto tecnico.
publishDate: 2025-12-05
---
# Non avete attivato la 2FA entro il primo dicembre? Ecco come recuperare l'accesso
Se siamo rimasti fuori dal nostro account Unipi perché non abbiamo attivato l'autenticazione a due fattori entro il primo dicembre, il percorso di recupero è piuttosto lineare.
Il primo passo è mandare una mail a
> <a href="mailto:help.polo2@ticket.unipi.it">help.polo2@ticket.unipi.it</a>
usando un indirizzo email personale (quello di ateneo è bloccato). Nel messaggio dobbiamo specificare chiaramente il problema e includere il nostro indirizzo email d'ateneo.
Dopo aver inviato la richiesta, tocca aspettare. Il supporto tecnico resetta manualmente lo status 2FA e ci manda una conferma. A quel punto possiamo procedere con l'attivazione seguendo le istruzioni ufficiali:
> https://it.unipi.it/configurazioni/mfa/autenticazione-a-piu-fattori-mfa-microsoft-365/
**Nota tecnica:** L'app Microsoft Authenticator non è obbligatoria! Qualsiasi autenticatore compatibile con [TOTP](https://en.wikipedia.org/wiki/Time-based_one-time_password) va bene: Google Authenticator, Bitwarden, Authy e altre alternative funzionano perfettamente. L'unica differenza è che l'app Microsoft Authenticator permette di ricevere notifiche l'accesso che consente di fare login con meno click.
Per utilizzare una di queste altre app (invece di Microsoft Authenticator), seguire questi step nella creazione del metodo di autenticazione:
1. Selezionare **"Microsoft Authenticator"**
![Selezionare Microsoft Authenticator](/images/misc/microsoft-2fa-other-app-1.webp)
2. Selezionare **"Configura un'app di autenticazione diversa"**
![Selezionare app diversa](/images/misc/microsoft-2fa-other-app-2.webp)
3. A questo punto il procedimento cambia in base all'app. In generale verrà richiesto di scannerizzare un QR code e di verificare il corretto funzionamento inserendo la TOTP (codice a 6 cifre)

@ -749,7 +749,7 @@ questions:
- course: aritmetica - course: aritmetica
content: | content: |
Quanti sono i polinomi irriducibili di grado $n$ su $\mathbb{F}_p$? (Hint: può essere utile provare prima il caso dei polinomi di secondo grado. Hint: in alternativa si possono contare i polinomi riducibili.) Quanti sono i polinomi irriducibili di grado $n$ su $\mathbb{F}_p$? (Hint: può essere utile provare prima il caso dei polinomi di secondo grado. Hint: in alternativa si possono contare i polinomi riducibili.)
Hint: Altrimenti dimostrate che Hint: Altrimenti dimostrate che
$$\prod_{\mathclap{\substack{p(x) \text{irriducibile} \\ \deg(p(x)) | n}}} p(x) = x^{p^n} - x.$$ $$\prod_{\mathclap{\substack{p(x) \text{irriducibile} \\ \deg(p(x)) | n}}} p(x) = x^{p^n} - x.$$
tags: tags:
- 2015 - 2015
@ -1061,7 +1061,7 @@ questions:
- course: ricerca-operativa - course: ricerca-operativa
content: | content: |
Dato il problema $\max (x_1 + 2x_2)$ soggetto ai vincoli: Dato il problema $\max (x_1 + 2x_2)$ soggetto ai vincoli:
$$ $$
\begin{cases} \begin{cases}
x_2 \leq 4 \\ x_2 \leq 4 \\
@ -1117,6 +1117,400 @@ questions:
tags: tags:
- 2023 - 2023
# Raccolta di Istituzioni di Geometria da Valeria
# Raccolta di Istituzioni di Geometria da Fra
- course: istituzioni-di-geometria
content: |
Intorno tubolare, esistenza
tags:
- 2025
- course: istituzioni-di-geometria
content: |
Gruppi di Lie, esiste un unico sottogruppo connesso con data sottoalgebra
tags:
- 2025
- course: istituzioni-di-geometria
content: |
Frobenius
tags:
- 2025
- course: istituzioni-di-geometria
content: |
Invarianza omotopica di de Rham
tags:
- 2025
- course: istituzioni-di-geometria
content: |
Mayer-Vietoris
tags:
- 2025
- course: istituzioni-di-geometria
content: |
Cartan-Hadamard
tags:
- 2025
- course: istituzioni-di-geometria
content: |
Lemma di Gauss
tags:
- 2025
- course: istituzioni-di-geometria
content: |
Whitney
tags:
- 2025
- course: istituzioni-di-geometria
content: |
Localmente euclideo se e solo se R=0
tags:
- 2025
- course: istituzioni-di-geometria
content: |
Mayer-Vietoris a supporto compatto
tags:
- 2025
- course: istituzioni-di-geometria
content: |
Orientabilità di RP^n e CP^n
tags:
- 2025
- course: istituzioni-di-geometria
content: |
Lemma di Poincaré (dimostrare anche che mappe omotope inducono stesso pullback sulla coomologia), brevissimo accenno al caso a supporto compatto (nessuna dimostrazione)
tags:
- 2025
- course: istituzioni-di-geometria
content: |
Cos'è il trasporto parallelo (tutti i dettagli di buona definizione a partire dalla definizione di campo parallelo)? Se metto una metrica cosa succede? (Statement delle condizioni equivalenti di compatibilità senza dimostrazione)
tags:
- 2025
- course: istituzioni-di-geometria
content: |
Dimostra che l'algebra di Lie associata ad un gruppo di Lie è un'algebra di Lie in senso astratto (voleva giusto sentirsi dire che il bracket di campi invarianti a sinistra è invariante a sinistra senza dimostrazione)
tags:
- 2025
- course: istituzioni-di-geometria
content: |
Teorema di corrispondenza algebre di lie
tags:
- 2025
- course: istituzioni-di-geometria
content: |
Quando gli spazi proiettivi reali sono orientabili
tags:
- 2025
- course: istituzioni-di-geometria
content: |
Esistenza dell'intorno tubolare (senza dimostrazione degli "esercizi")
tags:
- 2025
- course: istituzioni-di-geometria
content: |
Dualità di Poincaré 2
tags:
- 2025
- course: istituzioni-di-geometria
content: |
Definizione di connessione metrica e condizioni equivalenti (solo enunciato)
tags:
- 2025
- course: istituzioni-di-geometria
content: |
Hopf-Rinow
tags:
- 2025
- course: istituzioni-di-geometria
content: |
Isotopia Ambiente
tags:
- 2025
- course: istituzioni-di-geometria
content: |
Differenziale Esterno
tags:
- 2025
- course: istituzioni-di-geometria
content: |
Stokes
tags:
- 2025
- course: istituzioni-di-geometria
content: |
Raddrizzamento simultaneo
tags:
- 2025
- course: istituzioni-di-geometria
content: |
Definizione di fibrato tangente
tags:
- 2025
- course: istituzioni-di-geometria
content: |
Definizione di intorno tubolare e esistenza
tags:
- 2025
- course: istituzioni-di-geometria
content: |
Teorema di Frobenius
tags:
- 2025
- course: istituzioni-di-geometria
content: |
Piatto se e solo se localmente isometrico
tags:
- 2025
- course: istituzioni-di-geometria
content: |
Quando lo spazio proiettivo reale è orientabile? E quello complesso?
tags:
- 2025
- course: istituzioni-di-geometria
content: |
Isotopia e isotopia ambiente
tags:
- 2025
- course: istituzioni-di-geometria
content: |
Differenziale k-forme
tags:
- 2025
- course: istituzioni-di-geometria
content: |
Corrispondenza tra sottogruppi di lie connessi e sottoalgebre di lie
tags:
- 2025
- course: istituzioni-di-geometria
content: |
Torsione di una connessione
tags:
- 2025
- course: istituzioni-di-geometria
content: |
Dualità di poincarè (perché la mappa DP passa in coomologia?)
tags:
- 2025
- course: istituzioni-di-geometria
content: |
Parlare dell'algebra di Lie associata a un Gruppo di Lie
tags:
- 2025
- course: istituzioni-di-geometria
content: |
Enunciato di Frobenius, e perché una distribuzione è integrabile sse è loc. costante
tags:
- 2025
- course: istituzioni-di-geometria
content: |
Poincaré Dualità
tags:
- 2025
- course: istituzioni-di-geometria
content: |
Conseguenze (Betti numeri, specchiabilità)
tags:
- 2025
- course: istituzioni-di-geometria
content: |
Distribuzioni, esempi di distribuzioni che (non) sono embeddings
tags:
- 2025
- course: istituzioni-di-geometria
content: |
Trasporto parallelo e geodetiche
tags:
- 2025
- course: istituzioni-di-geometria
content: |
Esempio di varietà non geodeticamente completa, si può avere compatto? (Hopf rinow)
tags:
- 2025
- course: istituzioni-di-geometria
content: |
Esistenza di forma volume per varietà orientate e di struttura riemanniana sui fibrati
tags:
- 2025
- course: istituzioni-di-geometria
content: |
Definizione di foliazione
tags:
- 2025
- course: istituzioni-di-geometria
content: |
Localmente euclidea sse piatto
tags:
- 2025
- course: istituzioni-di-geometria
content: |
Teorema di Stokes
tags:
- 2025
- course: istituzioni-di-geometria
content: |
Teorema di Hopf-Rinow
tags:
- 2025
- course: istituzioni-di-geometria
content: |
Orientabilità di CP^n
tags:
- 2025
- course: istituzioni-di-geometria
content: |
Definizione di forma volume ed esistenza
tags:
- 2025
- course: istituzioni-di-geometria
content: |
Stokes (dim.)
tags:
- 2025
- course: istituzioni-di-geometria
content: |
isotopia e isotopia ambiente (def. + teo.)
tags:
- 2025
- course: istituzioni-di-geometria
content: |
tensore Riemann (def.)
tags:
- 2025
- course: istituzioni-di-geometria
content: |
teo. sottoalgebre di Lie
tags:
- 2025
- course: istituzioni-di-geometria
content: |
esistenza metrica Lorentziana e Riemanniana
tags:
- 2025
- course: istituzioni-di-geometria
content: |
derivata di k-forme
tags:
- 2025
- course: istituzioni-di-geometria
content: |
lemma Poincaré e teo. sull'omotopia
tags:
- 2025
- course: istituzioni-di-geometria
content: |
Cos'è l'algebra di Lie (molto veloce)
tags:
- 2025
- course: istituzioni-di-geometria
content: |
Cos'è la connessione di Levi Civita ed elencare le forme equivalenti di "compatibilità con la metrica"
tags:
- 2025
- course: istituzioni-di-geometria
content: |
Definire la torsione e fare i conti per mostrare che è un tensore
tags:
- 2025
- course: istituzioni-di-geometria
content: |
Teorema di Whitney (caso compatto e caso generale).
tags:
- 2025
- course: istituzioni-di-geometria
content: |
M ammette struttura lorentziana orientabile temporalmente sse pettinabile.
tags:
- 2025
- course: istituzioni-di-geometria
content: |
Teorema su sottoalgebre di Lie
tags:
- 2025
- course: istituzioni-di-geometria
content: |
geodetiche (praticamente solo quale è l'equazione e perché ha senso fare la nabla di un campo su una curva)
tags:
- 2025
- course: istituzioni-di-geometria
content: |
Frobenius, enunciato e dimostrazione (dando per scontate le def.equivalenti di foliazione)
tags:
- 2025
- course: istituzioni-di-geometria
content: |
Whitney (entrambi)
tags:
- 2025
- course: istituzioni-di-geometria
content: |
quando il proiettivo è orientabile (ed enunciato del teorema da cui segue)
tags:
- 2025
# Raccolta di Istituzioni di Geometria da Fra # Raccolta di Istituzioni di Geometria da Fra
- course: istituzioni-di-geometria - course: istituzioni-di-geometria
@ -2131,25 +2525,25 @@ questions:
- course: geometria-e-topologia-differenziale - course: geometria-e-topologia-differenziale
content: | content: |
Che cos'è un'orientazione su una varietà? Che cos'è un'orientazione su una varietà?
Se la varietà è connessa e orientabile, mostrare che esistono esattamente 2 orientazioni Se la varietà è connessa e orientabile, mostrare che esistono esattamente 2 orientazioni
(se non connessa, ce n'è una per ogni componente) (se non connessa, ce n'è una per ogni componente)
tags: tags:
- 2023 - 2023
- course: geometria-e-topologia-differenziale - course: geometria-e-topologia-differenziale
content: | content: |
Per quale motivo è lecito parlare di orientazione "naturale" Per quale motivo è lecito parlare di orientazione "naturale"
(nel senso di cosa è permesso e cosa no)? (nel senso di cosa è permesso e cosa no)?
tags: tags:
- 2023 - 2023
- course: geometria-e-topologia-differenziale - course: geometria-e-topologia-differenziale
content: | content: |
Per un diffeomorfismo da una varietà connessa su se stessa, Per un diffeomorfismo da una varietà connessa su se stessa,
o ne rispetta l'orientazione, o la "flippa". o ne rispetta l'orientazione, o la "flippa".
Mostrare (idee) che esiste tale $f$ che "flippa" Mostrare (idee) che esiste tale $f$ che "flippa"
(ad esempio considerare un $f_0 : x \mapsto -x$ che flippa la sfera in $\mathbb{R}^n$ (ad esempio considerare un $f_0 : x \mapsto -x$ che flippa la sfera in $\mathbb{R}^n$
e analogamente si può fare per altre varietà in punto, e analogamente si può fare per altre varietà in punto,
allora viene flippata sempre) allora viene flippata sempre)
tags: tags:
- 2023 - 2023

@ -25,7 +25,8 @@
- fullName: Francesco Baldino - fullName: Francesco Baldino
entranceDate: 2022 entranceDate: 2022
description: Bla bla Star Wars description: |
Appassionato di Star Wars, NixOS e lunghe camminate in montagna. Pokemon preferito: Latias.
social: social:
github: https://github.com/Fran314 github: https://github.com/Fran314
website: https://poisson.phc.dm.unipi.it/~baldino website: https://poisson.phc.dm.unipi.it/~baldino

@ -11,7 +11,11 @@ import Card from '@/components/Card.astro'
const news = await getCollection('news') const news = await getCollection('news')
const galleryCollage = await Astro.glob('@/assets/gallery/*.jpg') // const galleryCollage = await Astro.glob('@/assets/gallery/*.jpg')
const galleryCollage: { default: ImageMetadata }[] = Object.values(
import.meta.glob('@/assets/gallery/*.jpg', { eager: true }),
)
--- ---
<PageLayout title="PHC" pageTags="homepage"> <PageLayout title="PHC" pageTags="homepage">
@ -47,21 +51,23 @@ const galleryCollage = await Astro.glob('@/assets/gallery/*.jpg')
<div class="card-list"> <div class="card-list">
{ {
news.toReversed().map(newsItem => ( news
<Card> .sort((s, t) => -s.id.localeCompare(t.id))
<a href={`/notizie/${newsItem.slug}`} class="title"> .map(newsItem => (
{newsItem.data.title} <Card>
</a> <a href={`/notizie/${newsItem.slug}`} class="title">
<div class="text small dimmed"> {newsItem.data.title}
{new Date(newsItem.data.publishDate).toLocaleDateString('it-IT', { </a>
year: 'numeric', <div class="text small dimmed">
month: 'long', {new Date(newsItem.data.publishDate).toLocaleDateString('it-IT', {
day: 'numeric', year: 'numeric',
})} month: 'long',
</div> day: 'numeric',
<div class="text">{newsItem.data.description}</div> })}
</Card> </div>
)) <div class="text">{newsItem.data.description}</div>
</Card>
))
} }
</div> </div>
@ -198,14 +204,16 @@ const galleryCollage = await Astro.glob('@/assets/gallery/*.jpg')
{ {
galleryCollage.map((module, i) => { galleryCollage.map((module, i) => {
const src = module.default.src const src = module.default.src
const filename = src.split('/').at(-1).split('?').at(0).split('.').at(0) const filename = src.split('/').at(-1)?.split('?').at(0)?.split('.').at(0)
if (!filename) return null
const [rows, cols] = filename.includes('@') const [rows, cols] = filename.includes('@')
? filename ? (filename
.split('@') .split('@')
.at(-1) .at(-1)
.split('x') ?.split('x')
.map((s: string) => parseInt(s)) .map((s: string) => parseInt(s)) ?? [1, 1])
: [1, 1] : [1, 1]
return ( return (

@ -12,21 +12,23 @@ const news = await getCollection('news')
<h1><a href="/notizie">Notizie</a></h1> <h1><a href="/notizie">Notizie</a></h1>
<div class="card-list"> <div class="card-list">
{ {
news.toReversed().map(newsItem => ( news
<div class="card"> .sort((s, t) => -s.id.localeCompare(t.id))
<a href={`/notizie/${newsItem.slug}`} class="title"> .map(newsItem => (
{newsItem.data.title} <div class="card">
</a> <a href={`/notizie/${newsItem.slug}`} class="title">
<div class="text small dimmed"> {newsItem.data.title}
{new Date(newsItem.data.publishDate).toLocaleDateString('it-IT', { </a>
year: 'numeric', <div class="text small dimmed">
month: 'long', {new Date(newsItem.data.publishDate).toLocaleDateString('it-IT', {
day: 'numeric', year: 'numeric',
})} month: 'long',
day: 'numeric',
})}
</div>
<div class="text">{newsItem.data.description}</div>
</div> </div>
<div class="text">{newsItem.data.description}</div> ))
</div>
))
} }
</div> </div>
</PageLayout> </PageLayout>

@ -1042,6 +1042,20 @@ $news-accent-bg: #f8e8b1;
grid-auto-flow: row; grid-auto-flow: row;
} }
.grid-h-split {
display: grid;
place-content: center;
place-items: center;
gap: 1rem;
grid-auto-flow: column;
grid-auto-columns: 1fr;
@media screen and (max-width: 1024px) {
grid-auto-flow: row;
grid-auto-columns: auto;
}
}
.clickable { .clickable {
cursor: pointer; cursor: pointer;
} }

@ -13,10 +13,6 @@
min-height: calc(100vh - 10rem); min-height: calc(100vh - 10rem);
} }
/* display: flex;
flex-direction: column;
align-items: center; */
& { & {
display: grid; display: grid;
grid-auto-flow: row; grid-auto-flow: row;
@ -168,6 +164,10 @@
color: #000d; color: #000d;
} }
} }
.card {
grid-template-rows: auto auto 1fr;
}
} }
section.projects { section.projects {

@ -598,6 +598,10 @@
place-content: center; place-content: center;
gap: 0.5rem; gap: 0.5rem;
input[type='number'] {
min-width: 4.25rem;
}
} }
> .actions { > .actions {

@ -146,7 +146,8 @@
} }
} }
img { img,
video {
display: block; display: block;
margin: 0 auto; margin: 0 auto;
@ -156,7 +157,7 @@
border: 2px solid #333; border: 2px solid #333;
border-radius: 0.25rem; border-radius: 0.25rem;
box-shadow: 0.25rem 0.25rem 0 0 #333; box-shadow: 0.25rem 0.25rem 0 0 #333;
/* background: color-mix(in lab, var(--card-base-internal, #ededed), #fff 20%); */ background: #000;
&.fill { &.fill {
width: 100%; width: 100%;
@ -173,6 +174,10 @@
} }
} }
video {
margin: 1rem auto;
}
p:first-child { p:first-child {
margin-top: 0; margin-top: 0;
} }

Loading…
Cancel
Save