Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
83431a0373 | ||
|
|
bf9709c689 | ||
|
|
4cbfc828c0 | ||
|
|
8fddadb098 | ||
|
|
6e615d6874 | ||
|
|
54d95b9c59 | ||
|
|
21260f1a85 | ||
|
|
10bcde22bf | ||
|
|
7c9d1e3fcc | ||
|
|
e355a29ae9 | ||
|
|
22c8357282 | ||
|
|
3308e10981 | ||
|
|
176bad6d51 | ||
|
|
f7076759e1 | ||
|
|
5eb8e3fc85 | ||
|
|
85a144b6d0 | ||
|
|
f99a7389be | ||
|
|
ff966c31a8 | ||
|
|
e5821067b1 | ||
|
|
655a4c5b22 | ||
|
|
40673661cf | ||
|
|
969e8bea35 | ||
|
|
d409e83ccb | ||
|
|
abd12dd2f3 | ||
|
|
cc77ec90cc | ||
|
|
b8eb2eb7bf | ||
|
|
18f6df7c4d |
@@ -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
|
||||||
|
|||||||
@@ -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"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
|
After Width: | Height: | Size: 21 KiB |
|
After Width: | Height: | Size: 42 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 21 KiB |
|
After Width: | Height: | Size: 25 KiB |
|
After Width: | Height: | Size: 26 KiB |
|
After Width: | Height: | Size: 877 KiB |
|
After Width: | Height: | Size: 34 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'
|
||||||
|
|||||||
@@ -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:
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
<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"**
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
2. Selezionare **"Configura un'app di autenticazione diversa"**
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
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
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|
||||||
@@ -94,9 +100,9 @@ const galleryCollage = await Astro.glob('@/assets/gallery/*.jpg')
|
|||||||
</ProjectCard> -->
|
</ProjectCard> -->
|
||||||
<ProjectCard
|
<ProjectCard
|
||||||
title="Orario"
|
title="Orario"
|
||||||
href="https://lab.phc.dm.unipi.it/orario/"
|
href="https://orario.phc.dm.unipi.it/"
|
||||||
style="--card-bg: #75ca75; --masonry-height: 1;"
|
style="--card-bg: #75ca75; --masonry-height: 1;"
|
||||||
imgSrc="https://lab.phc.dm.unipi.it/orario/icon.png"
|
imgSrc="https://orario.phc.dm.unipi.it/icon.png"
|
||||||
>
|
>
|
||||||
<p>
|
<p>
|
||||||
Questo sito permette di visualizzare il proprio orario delle lezioni, con informazioni sui docenti e
|
Questo sito permette di visualizzare il proprio orario delle lezioni, con informazioni sui docenti e
|
||||||
@@ -105,9 +111,9 @@ const galleryCollage = await Astro.glob('@/assets/gallery/*.jpg')
|
|||||||
</ProjectCard>
|
</ProjectCard>
|
||||||
<ProjectCard
|
<ProjectCard
|
||||||
title="Problemi"
|
title="Problemi"
|
||||||
href="https://lab.phc.dm.unipi.it/problemi/"
|
href="https://problemi.phc.dm.unipi.it/"
|
||||||
style="--card-bg: #aa88c0; --masonry-height: 2;"
|
style="--card-bg: #aa88c0; --masonry-height: 2;"
|
||||||
imgSrc="https://lab.phc.dm.unipi.it/problemi/favicon/android-chrome-512x512.png"
|
imgSrc="https://problemi.phc.dm.unipi.it/favicon/android-chrome-512x512.png"
|
||||||
>
|
>
|
||||||
<p>Bacheca di problemi di Matematica da risolvere, inviandone le soluzioni in LaTeX.</p>
|
<p>Bacheca di problemi di Matematica da risolvere, inviandone le soluzioni in LaTeX.</p>
|
||||||
<p>Di sera, puoi leggere i problemi sullo schermo del Dipartimento in atrio.</p>
|
<p>Di sera, puoi leggere i problemi sullo schermo del Dipartimento in atrio.</p>
|
||||||
@@ -116,7 +122,7 @@ const galleryCollage = await Astro.glob('@/assets/gallery/*.jpg')
|
|||||||
title='Cluster "Steffè"'
|
title='Cluster "Steffè"'
|
||||||
href="http://steffe.cs.dm.unipi.it/"
|
href="http://steffe.cs.dm.unipi.it/"
|
||||||
style="--masonry-height: 2;"
|
style="--masonry-height: 2;"
|
||||||
imgSrc="https://steffe.lb.cs.dm.unipi.it/assets/img/logo.png"
|
imgSrc="/images/steffe-logo.png"
|
||||||
>
|
>
|
||||||
<p>
|
<p>
|
||||||
Cluster progettato ed assemblato durante il progetto speciale per la didattica "Calcolo Parallelo
|
Cluster progettato ed assemblato durante il progetto speciale per la didattica "Calcolo Parallelo
|
||||||
@@ -146,7 +152,7 @@ const galleryCollage = await Astro.glob('@/assets/gallery/*.jpg')
|
|||||||
title="GGWP"
|
title="GGWP"
|
||||||
href="https://ggwp.phc.dm.unipi.it/"
|
href="https://ggwp.phc.dm.unipi.it/"
|
||||||
style="--card-bg: rgb(255, 157, 65); --masonry-height: 2;"
|
style="--card-bg: rgb(255, 157, 65); --masonry-height: 2;"
|
||||||
imgSrc="https://ggwp.phc.dm.unipi.it/ggwp-icon.png"
|
imgSrc="/images/ggwp-icon.png"
|
||||||
>
|
>
|
||||||
<p>
|
<p>
|
||||||
Sito per il tabellone del GGWP, utilizzato durante la gara di Novembre 2024 dagli organizzatori per
|
Sito per il tabellone del GGWP, utilizzato durante la gara di Novembre 2024 dagli organizzatori per
|
||||||
@@ -157,7 +163,7 @@ const galleryCollage = await Astro.glob('@/assets/gallery/*.jpg')
|
|||||||
title="Chat"
|
title="Chat"
|
||||||
href="https://chat.phc.dm.unipi.it/"
|
href="https://chat.phc.dm.unipi.it/"
|
||||||
style="--card-bg: #383838; --card-fg: #ddd; --masonry-height: 1;"
|
style="--card-bg: #383838; --card-fg: #ddd; --masonry-height: 1;"
|
||||||
imgSrc="https://chat.phc.dm.unipi.it/favicon.png"
|
imgSrc="/images/chat-favicon.png"
|
||||||
>
|
>
|
||||||
<p>Istanza di Open-WebUI, una chat stile ChatGPT con alcuni LLM self-hostati dal PHC.</p>
|
<p>Istanza di Open-WebUI, una chat stile ChatGPT con alcuni LLM self-hostati dal PHC.</p>
|
||||||
</ProjectCard>
|
</ProjectCard>
|
||||||
@@ -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 {
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||