forked from phc/website
cmd: updated prettier config and reformatted content
This commit is contained in:
@@ -18,6 +18,7 @@ export default {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
files: '*.{yml,yaml,json}',
|
files: '*.{yml,yaml,json}',
|
||||||
|
excludeFiles: 'package-lock.json',
|
||||||
options: {
|
options: {
|
||||||
tabWidth: 2,
|
tabWidth: 2,
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -34,21 +34,14 @@ export const ComboBox = ({
|
|||||||
}, [])
|
}, [])
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div
|
<div class="combobox" ref={comboRef} style={{ width: isMobile() ? undefined : itemWidth + 48 + 'px' }}>
|
||||||
class="combobox"
|
|
||||||
ref={comboRef}
|
|
||||||
style={{ width: isMobile() ? undefined : itemWidth + 48 + 'px' }}
|
|
||||||
>
|
|
||||||
<div class="selected" onClick={() => setOpen(!open)}>
|
<div class="selected" onClick={() => setOpen(!open)}>
|
||||||
<div class="content">{children[value]}</div>
|
<div class="content">{children[value]}</div>
|
||||||
{/* <span class="material-symbols-outlined">expand_more</span> */}
|
{/* <span class="material-symbols-outlined">expand_more</span> */}
|
||||||
<PhosphorIcon name="caret-down" />
|
<PhosphorIcon name="caret-down" />
|
||||||
</div>
|
</div>
|
||||||
{open && (
|
{open && (
|
||||||
<div
|
<div class={clsx('dropdown', cloak && 'invisible')} ref={el => el && setItemWidth(el.offsetWidth)}>
|
||||||
class={clsx('dropdown', cloak && 'invisible')}
|
|
||||||
ref={el => el && setItemWidth(el.offsetWidth)}
|
|
||||||
>
|
|
||||||
{Object.keys(children).map(key => (
|
{Object.keys(children).map(key => (
|
||||||
<div
|
<div
|
||||||
class="option"
|
class="option"
|
||||||
|
|||||||
+2
-2
@@ -2,8 +2,8 @@ const icons = Object.fromEntries(
|
|||||||
Object.entries(
|
Object.entries(
|
||||||
import.meta.glob<{ default: ImageMetadata }>(`node_modules/@phosphor-icons/core/assets/light/*.svg`, {
|
import.meta.glob<{ default: ImageMetadata }>(`node_modules/@phosphor-icons/core/assets/light/*.svg`, {
|
||||||
eager: true,
|
eager: true,
|
||||||
})
|
}),
|
||||||
).map(([path, module]) => [path.split('/').pop()!.split('.')[0].replace('-light', ''), module])
|
).map(([path, module]) => [path.split('/').pop()!.split('.')[0].replace('-light', ''), module]),
|
||||||
)
|
)
|
||||||
|
|
||||||
type Props = {
|
type Props = {
|
||||||
|
|||||||
@@ -69,21 +69,21 @@ export const UtentiPage = () => {
|
|||||||
? $utentiData.value.filter(user => MACCHINISTI.includes(user.uid))
|
? $utentiData.value.filter(user => MACCHINISTI.includes(user.uid))
|
||||||
: $filter.value === 'rappstud'
|
: $filter.value === 'rappstud'
|
||||||
? $utentiData.value.filter(user => RAPPSTUD.includes(user.uid))
|
? $utentiData.value.filter(user => RAPPSTUD.includes(user.uid))
|
||||||
: $utentiData.value
|
: $utentiData.value,
|
||||||
)
|
)
|
||||||
|
|
||||||
const $fuse = useComputed(
|
const $fuse = useComputed(
|
||||||
() =>
|
() =>
|
||||||
new Fuse($filteredData.value, {
|
new Fuse($filteredData.value, {
|
||||||
keys: ['gecos', 'uid'],
|
keys: ['gecos', 'uid'],
|
||||||
})
|
}),
|
||||||
)
|
)
|
||||||
|
|
||||||
const $searchText = useSignal('')
|
const $searchText = useSignal('')
|
||||||
const $searchResults = useComputed(() =>
|
const $searchResults = useComputed(() =>
|
||||||
$searchText.value.trim().length > 0
|
$searchText.value.trim().length > 0
|
||||||
? $fuse.value?.search($searchText.value).map(result => result.item) ?? []
|
? ($fuse.value?.search($searchText.value).map(result => result.item) ?? [])
|
||||||
: $filteredData.value
|
: $filteredData.value,
|
||||||
)
|
)
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
@@ -110,7 +110,7 @@ export const UtentiPage = () => {
|
|||||||
<PhosphorIcon name={v.icon} />
|
<PhosphorIcon name={v.icon} />
|
||||||
{v.label}
|
{v.label}
|
||||||
</>,
|
</>,
|
||||||
])
|
]),
|
||||||
)}
|
)}
|
||||||
</ComboBox>
|
</ComboBox>
|
||||||
<div class="search">
|
<div class="search">
|
||||||
@@ -149,10 +149,7 @@ export const UtentiPage = () => {
|
|||||||
</div>
|
</div>
|
||||||
<div class="text">{poissonUser.gecos}</div>
|
<div class="text">{poissonUser.gecos}</div>
|
||||||
<div class="right">
|
<div class="right">
|
||||||
<a
|
<a href={`https://poisson.phc.dm.unipi.it/~${poissonUser.uid}`} target="_blank">
|
||||||
href={`https://poisson.phc.dm.unipi.it/~${poissonUser.uid}`}
|
|
||||||
target="_blank"
|
|
||||||
>
|
|
||||||
{/* <span class="material-symbols-outlined">open_in_new</span> */}
|
{/* <span class="material-symbols-outlined">open_in_new</span> */}
|
||||||
<PhosphorIcon name="arrow-square-out" />
|
<PhosphorIcon name="arrow-square-out" />
|
||||||
</a>
|
</a>
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import { useEffect, useState } from 'preact/hooks'
|
|||||||
export const trottleDebounce = <T extends any[], R>(
|
export const trottleDebounce = <T extends any[], R>(
|
||||||
fn: (...args: T) => R,
|
fn: (...args: T) => R,
|
||||||
delay: number,
|
delay: number,
|
||||||
options: { leading?: boolean; trailing?: boolean } = {}
|
options: { leading?: boolean; trailing?: boolean } = {},
|
||||||
): ((...args: T) => R | undefined) => {
|
): ((...args: T) => R | undefined) => {
|
||||||
let lastCall = 0
|
let lastCall = 0
|
||||||
let lastResult: R | undefined
|
let lastResult: R | undefined
|
||||||
|
|||||||
@@ -9,8 +9,8 @@ const { name } = Astro.props
|
|||||||
|
|
||||||
const icons = Object.fromEntries(
|
const icons = Object.fromEntries(
|
||||||
Object.entries(
|
Object.entries(
|
||||||
import.meta.glob<{ default: ImageMetadata }>(`node_modules/@phosphor-icons/core/assets/light/*.svg`)
|
import.meta.glob<{ default: ImageMetadata }>(`node_modules/@phosphor-icons/core/assets/light/*.svg`),
|
||||||
).map(([path, module]) => [path.split('/').pop()!.split('.')[0].replace('-light', ''), module])
|
).map(([path, module]) => [path.split('/').pop()!.split('.')[0].replace('-light', ''), module]),
|
||||||
)
|
)
|
||||||
|
|
||||||
if (!icons[name]) {
|
if (!icons[name]) {
|
||||||
|
|||||||
@@ -66,7 +66,10 @@ Vediamo un piccolo esempio di file `index.html` che possiamo creare:
|
|||||||
style="max-width: 300px; border-radius: 10px;"
|
style="max-width: 300px; border-radius: 10px;"
|
||||||
/>
|
/>
|
||||||
<p>Ciao! Sono Sergio Steffè.</p>
|
<p>Ciao! Sono Sergio Steffè.</p>
|
||||||
<p>Email: <a href="mailto:sergio.steffe@example.com">sergio.steffe@example.com</a></p>
|
<p>
|
||||||
|
Email:
|
||||||
|
<a href="mailto:sergio.steffe@example.com">sergio.steffe@example.com</a>
|
||||||
|
</p>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
```
|
```
|
||||||
|
|||||||
+12
-32
@@ -35,10 +35,7 @@ Una card semplice ha un titolo ed una descrizione.
|
|||||||
```astro
|
```astro
|
||||||
<div class="card" style="--card-base: var(--guide-base); max-width: 25rem;">
|
<div class="card" style="--card-base: var(--guide-base); max-width: 25rem;">
|
||||||
<div class="title">Titolo</div>
|
<div class="title">Titolo</div>
|
||||||
<div class="text">
|
<div class="text">Descrizione lorem ipsum dolor sit amet consectetur adipisicing elit. Aspernatur, labore?</div>
|
||||||
Descrizione lorem ipsum dolor sit amet consectetur
|
|
||||||
adipisicing elit. Aspernatur, labore?
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -51,10 +48,7 @@ Le card possono essere di dimensioni diverse. Questa è una card grande.
|
|||||||
```astro
|
```astro
|
||||||
<div class="card large" style="--card-base: lightgreen; max-width: 25rem;">
|
<div class="card large" style="--card-base: lightgreen; max-width: 25rem;">
|
||||||
<div class="title">Titolo</div>
|
<div class="title">Titolo</div>
|
||||||
<div class="text">
|
<div class="text">Descrizione lorem ipsum dolor sit amet consectetur adipisicing elit. Aspernatur, labore?</div>
|
||||||
Descrizione lorem ipsum dolor sit amet consectetur
|
|
||||||
adipisicing elit. Aspernatur, labore?
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -100,10 +94,7 @@ Se c'è poco testo, può essere inserito direttamente nella card.
|
|||||||
|
|
||||||
```astro
|
```astro
|
||||||
<div class="card">
|
<div class="card">
|
||||||
<div class="text">
|
<div class="text">Descrizione lorem ipsum dolor sit amet consectetur adipisicing elit. Aspernatur, labore?</div>
|
||||||
Descrizione lorem ipsum dolor sit amet consectetur
|
|
||||||
adipisicing elit. Aspernatur, labore?
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -113,16 +104,15 @@ Altrimenti può essere inserito in un tag `<p>`.
|
|||||||
<div class="card">
|
<div class="card">
|
||||||
<div class="text">
|
<div class="text">
|
||||||
<p>
|
<p>
|
||||||
Lorem ipsum dolor sit amet consectetur, adipisicing elit.
|
Lorem ipsum dolor sit amet consectetur, adipisicing elit. Distinctio, vel! Veritatis est sit beatae eveniet.
|
||||||
Distinctio, vel! Veritatis est sit beatae eveniet.
|
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
Error, minus, asperiores quaerat nulla cumque, nisi ipsam
|
Error, minus, asperiores quaerat nulla cumque, nisi ipsam assumenda consectetur accusamus tempore
|
||||||
assumenda consectetur accusamus tempore consequatur quae. Fugit?
|
consequatur quae. Fugit?
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
Quos sapiente amet numquam quis, libero odit eum, eius
|
Quos sapiente amet numquam quis, libero odit eum, eius perspiciatis repellat nesciunt cupiditate asperiores
|
||||||
perspiciatis repellat nesciunt cupiditate asperiores maiores?
|
maiores?
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -132,19 +122,10 @@ C'è anche il modificatore `small` e `dimmed` per ridurre la grandezza del testo
|
|||||||
|
|
||||||
```astro
|
```astro
|
||||||
<div class="card" style="max-width: 25rem;">
|
<div class="card" style="max-width: 25rem;">
|
||||||
<div class="text">
|
<div class="text">Some normal text, this is a very long text that should wrap on the next line</div>
|
||||||
Some normal text, this is a very long
|
<div class="text small">This is some small text</div>
|
||||||
text that should wrap on the next line
|
<div class="text dimmed">This is some dimmed text</div>
|
||||||
</div>
|
<div class="text small dimmed">This is some small dimmed text</div>
|
||||||
<div class="text small">
|
|
||||||
This is some small text
|
|
||||||
</div>
|
|
||||||
<div class="text dimmed">
|
|
||||||
This is some dimmed text
|
|
||||||
</div>
|
|
||||||
<div class="text small dimmed">
|
|
||||||
This is some small dimmed text
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -197,7 +178,6 @@ import { ComboBox } from '@/lib/components/ComboBox'
|
|||||||
const [value, setValue] = useState('option-1')
|
const [value, setValue] = useState('option-1')
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
```jsx
|
```jsx
|
||||||
<ComboBox value={value} setValue={setValue}>
|
<ComboBox value={value} setValue={setValue}>
|
||||||
{{
|
{{
|
||||||
|
|||||||
@@ -35,4 +35,3 @@ Il nuovo sito unifica varie funzionalità che prima erano sparse in diversi siti
|
|||||||
## Conclusioni
|
## Conclusioni
|
||||||
|
|
||||||
Speriamo che il nuovo sito vi piaccia e vi sia utile. Se avete suggerimenti o richieste, non esitate a contattarci. Buona navigazione, magari iniziando dalla [pagina sulla storia del PHC](/storia)!
|
Speriamo che il nuovo sito vi piaccia e vi sia utile. Se avete suggerimenti o richieste, non esitate a contattarci. Buona navigazione, magari iniziando dalla [pagina sulla storia del PHC](/storia)!
|
||||||
|
|
||||||
|
|||||||
@@ -19,6 +19,6 @@ export const GET: APIRoute = ({ params: { course } }) => {
|
|||||||
headers: {
|
headers: {
|
||||||
'content-type': 'application/json',
|
'content-type': 'application/json',
|
||||||
},
|
},
|
||||||
}
|
},
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
+18
-29
@@ -80,8 +80,7 @@ const galleryCollage = await Astro.glob('@/assets/gallery/*.jpg')
|
|||||||
>
|
>
|
||||||
<p>Gitea è un servizio di hosting per progetti software, come GitHub ma autogestito.</p>
|
<p>Gitea è un servizio di hosting per progetti software, come GitHub ma autogestito.</p>
|
||||||
<p>
|
<p>
|
||||||
Qui puoi trovare i progetti del PHC, e accedendo con un account di Ateneo potrai crearne
|
Qui puoi trovare i progetti del PHC, e accedendo con un account di Ateneo potrai crearne di nuovi.
|
||||||
di nuovi.
|
|
||||||
</p>
|
</p>
|
||||||
</ProjectCard>
|
</ProjectCard>
|
||||||
<!-- <ProjectCard
|
<!-- <ProjectCard
|
||||||
@@ -98,8 +97,8 @@ const galleryCollage = await Astro.glob('@/assets/gallery/*.jpg')
|
|||||||
imgSrc="https://lab.phc.dm.unipi.it/orario/icon.png"
|
imgSrc="https://lab.phc.dm.unipi.it/orario/icon.png"
|
||||||
>
|
>
|
||||||
<p>
|
<p>
|
||||||
Questo sito permette di visualizzare il proprio orario delle lezioni, con informazioni sui
|
Questo sito permette di visualizzare il proprio orario delle lezioni, con informazioni sui docenti e
|
||||||
docenti e le aule.
|
le aule.
|
||||||
</p>
|
</p>
|
||||||
</ProjectCard>
|
</ProjectCard>
|
||||||
<ProjectCard
|
<ProjectCard
|
||||||
@@ -118,8 +117,8 @@ const galleryCollage = await Astro.glob('@/assets/gallery/*.jpg')
|
|||||||
imgSrc="https://steffe.lb.cs.dm.unipi.it/assets/img/logo.png"
|
imgSrc="https://steffe.lb.cs.dm.unipi.it/assets/img/logo.png"
|
||||||
>
|
>
|
||||||
<p>
|
<p>
|
||||||
Cluster progettato ed assemblato durante il progetto speciale per la didattica "Calcolo
|
Cluster progettato ed assemblato durante il progetto speciale per la didattica "Calcolo Parallelo
|
||||||
Parallelo dall'Infrastruttura alla Matematica".
|
dall'Infrastruttura alla Matematica".
|
||||||
</p>
|
</p>
|
||||||
</ProjectCard>
|
</ProjectCard>
|
||||||
<ProjectCard
|
<ProjectCard
|
||||||
@@ -128,10 +127,7 @@ const galleryCollage = await Astro.glob('@/assets/gallery/*.jpg')
|
|||||||
style="--card-bg: #bd9fec; --masonry-height: 2;"
|
style="--card-bg: #bd9fec; --masonry-height: 2;"
|
||||||
imgSrc="https://seminarietti.phc.dm.unipi.it/favicon.png"
|
imgSrc="https://seminarietti.phc.dm.unipi.it/favicon.png"
|
||||||
>
|
>
|
||||||
<p>
|
<p>Storico degli incontri organizzati dal PHC su argomenti di informatica, matematica e tecnologia.</p>
|
||||||
Storico degli incontri organizzati dal PHC su argomenti di informatica, matematica e
|
|
||||||
tecnologia.
|
|
||||||
</p>
|
|
||||||
</ProjectCard>
|
</ProjectCard>
|
||||||
<ProjectCard
|
<ProjectCard
|
||||||
title="Tutorato"
|
title="Tutorato"
|
||||||
@@ -140,8 +136,8 @@ const galleryCollage = await Astro.glob('@/assets/gallery/*.jpg')
|
|||||||
imgSrc="https://tutorato.phc.dm.unipi.it/favicon.svg"
|
imgSrc="https://tutorato.phc.dm.unipi.it/favicon.svg"
|
||||||
>
|
>
|
||||||
<p>
|
<p>
|
||||||
Un sito con tutte le informazioni sui tutorati di Matematica, con tanto di archivio degli
|
Un sito con tutte le informazioni sui tutorati di Matematica, con tanto di archivio degli anni
|
||||||
anni passati.
|
passati.
|
||||||
</p>
|
</p>
|
||||||
</ProjectCard>
|
</ProjectCard>
|
||||||
<ProjectCard
|
<ProjectCard
|
||||||
@@ -151,8 +147,8 @@ const galleryCollage = await Astro.glob('@/assets/gallery/*.jpg')
|
|||||||
imgSrc="https://ggwp.phc.dm.unipi.it/ggwp-icon.png"
|
imgSrc="https://ggwp.phc.dm.unipi.it/ggwp-icon.png"
|
||||||
>
|
>
|
||||||
<p>
|
<p>
|
||||||
Sito per il tabellone del GGWP, utilizzato durante la gara di Novembre 2024 dagli
|
Sito per il tabellone del GGWP, utilizzato durante la gara di Novembre 2024 dagli organizzatori per
|
||||||
organizzatori per inserire le risposte alla gara in tempo reale.
|
inserire le risposte alla gara in tempo reale.
|
||||||
</p>
|
</p>
|
||||||
</ProjectCard>
|
</ProjectCard>
|
||||||
<ProjectCard
|
<ProjectCard
|
||||||
@@ -161,9 +157,7 @@ const galleryCollage = await Astro.glob('@/assets/gallery/*.jpg')
|
|||||||
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="https://chat.phc.dm.unipi.it/favicon.png"
|
||||||
>
|
>
|
||||||
<p>
|
<p>Istanza di Open-WebUI, una chat stile ChatGPT con alcuni LLM self-hostati dal PHC.</p>
|
||||||
Istanza di Open-WebUI, una chat stile ChatGPT con alcuni LLM self-hostati dal PHC.
|
|
||||||
</p>
|
|
||||||
</ProjectCard>
|
</ProjectCard>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
@@ -182,22 +176,18 @@ const galleryCollage = await Astro.glob('@/assets/gallery/*.jpg')
|
|||||||
supporto tecnico per installare ed usare <strong>Linux</strong> sul proprio portatile
|
supporto tecnico per installare ed usare <strong>Linux</strong> sul proprio portatile
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<strong>costruiamo</strong>, <strong>smontiamo</strong> ed <strong>aggiustiamo</strong
|
<strong>costruiamo</strong>, <strong>smontiamo</strong> ed <strong>aggiustiamo</strong>
|
||||||
>
|
|
||||||
computer (antichi e moderni)
|
computer (antichi e moderni)
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<strong>sviluppo software</strong> di backend e frontend per siti web (ma non solo)
|
<strong>sviluppo software</strong> di backend e frontend per siti web (ma non solo)
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
organizzazione di <strong>seminari</strong> di divulgazione (vedi <a href="#projects"
|
organizzazione di <strong>seminari</strong> di divulgazione (vedi <a href="#projects">sopra</a>)
|
||||||
>sopra</a
|
|
||||||
>)
|
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
<p>
|
<p>
|
||||||
Infine, il PHC è prima di tutto un luogo dove <strong>imparare</strong>, <strong
|
Infine, il PHC è prima di tutto un luogo dove <strong>imparare</strong>, <strong>trasmettere</strong
|
||||||
>trasmettere</strong
|
|
||||||
> le proprie conoscenze e <strong>condividere</strong> la passione per la tecnologia.
|
> le proprie conoscenze e <strong>condividere</strong> la passione per la tecnologia.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
@@ -229,13 +219,12 @@ const galleryCollage = await Astro.glob('@/assets/gallery/*.jpg')
|
|||||||
<div class="title">Vuoi diventare macchinista?</div>
|
<div class="title">Vuoi diventare macchinista?</div>
|
||||||
<div class="text">
|
<div class="text">
|
||||||
<p>
|
<p>
|
||||||
<strong>Macchinista non si nasce, si diventa:</strong> se sei uno studente di Matematica e
|
<strong>Macchinista non si nasce, si diventa:</strong> se sei uno studente di Matematica e vuoi diventare
|
||||||
vuoi diventare un macchinista, vienici a trovare!
|
un macchinista, vienici a trovare!
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
L'unico prerequisito è la voglia di imparare! Di solito, c'è un periodo di "apprendistato"
|
L'unico prerequisito è la voglia di imparare! Di solito, c'è un periodo di "apprendistato" nel quale
|
||||||
nel quale si apprendono le basi; una volta superato potrai diventare un macchinista a
|
si apprendono le basi; una volta superato potrai diventare un macchinista a tutti gli effetti.
|
||||||
tutti gli effetti.
|
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</Card>
|
</Card>
|
||||||
|
|||||||
@@ -12,8 +12,8 @@ const images = Object.fromEntries(
|
|||||||
Object.entries(
|
Object.entries(
|
||||||
import.meta.glob<{ default: ImageMetadata }>('@/assets/macchinisti/*', {
|
import.meta.glob<{ default: ImageMetadata }>('@/assets/macchinisti/*', {
|
||||||
eager: true,
|
eager: true,
|
||||||
})
|
}),
|
||||||
).map(([path, module]) => [path.split('/').pop()!.split('.')[0], module])
|
).map(([path, module]) => [path.split('/').pop()!.split('.')[0], module]),
|
||||||
)
|
)
|
||||||
|
|
||||||
const currentMacchinisti = macchinisti.filter(macchinista => !macchinista.exitDate)
|
const currentMacchinisti = macchinisti.filter(macchinista => !macchinista.exitDate)
|
||||||
@@ -35,9 +35,9 @@ const getMacchinistaPicture = (fullName: string) => {
|
|||||||
<p>
|
<p>
|
||||||
<em>> Chi sono i macchinisti?</em>
|
<em>> Chi sono i macchinisti?</em>
|
||||||
<br />
|
<br />
|
||||||
Questo è l'appellativo dato agli studenti che si occupano di gestire l'infrastuttura e i servizi
|
Questo è l'appellativo dato agli studenti che si occupano di gestire l'infrastuttura e i servizi del
|
||||||
del PHC (vedi la homepage per informazioni su come diventare un macchinista). Qua sotto trovi
|
PHC (vedi la homepage per informazioni su come diventare un macchinista). Qua sotto trovi i macchinisti
|
||||||
i macchinisti attualmente attivi in PHC.
|
attualmente attivi in PHC.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -60,8 +60,8 @@ const getMacchinistaPicture = (fullName: string) => {
|
|||||||
<div class="title"><s>Deus</s> Ex Macchinisti</div>
|
<div class="title"><s>Deus</s> Ex Macchinisti</div>
|
||||||
<div class="text">
|
<div class="text">
|
||||||
<p>
|
<p>
|
||||||
Qui raccogliamo qualche informazione sui macchinisti del passato, che hanno contribuito a
|
Qui raccogliamo qualche informazione sui macchinisti del passato, che hanno contribuito a rendere il
|
||||||
rendere il PHC quello che è oggi.
|
PHC quello che è oggi.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
+23
-31
@@ -17,9 +17,8 @@ import WebSite from '@/assets/gallery/005-website-development@3x4.jpg'
|
|||||||
<div class="title">Storia</div>
|
<div class="title">Storia</div>
|
||||||
<div class="text">
|
<div class="text">
|
||||||
<p>
|
<p>
|
||||||
Il PHC nasce quasi venti anni fa, nel lontano 1999 ed ha perciò una ricca storia. Qui
|
Il PHC nasce quasi venti anni fa, nel lontano 1999 ed ha perciò una ricca storia. Qui proveremo ad
|
||||||
proveremo ad annoverare la storia del PHC, in una timeline con gli eventi più salienti del
|
annoverare la storia del PHC, in una timeline con gli eventi più salienti del progetto.
|
||||||
progetto.
|
|
||||||
</p>
|
</p>
|
||||||
<img
|
<img
|
||||||
class="small flat"
|
class="small flat"
|
||||||
@@ -36,26 +35,25 @@ import WebSite from '@/assets/gallery/005-website-development@3x4.jpg'
|
|||||||
<div class="timeline">
|
<div class="timeline">
|
||||||
<Timeline title="Un nuovo look" year="Nov 2024">
|
<Timeline title="Un nuovo look" year="Nov 2024">
|
||||||
<p>
|
<p>
|
||||||
Dopo <s>mesi</s> anni di lavoro e di progettazione, il sito del PHC viene riscritto da zero
|
Dopo <s>mesi</s> anni di lavoro e di progettazione, il sito del PHC viene riscritto da zero in Astro.
|
||||||
in Astro. Il progetto è stato voluto principalmente da <strong
|
Il progetto è stato voluto principalmente da <strong>Antonio De Lucreziis</strong> (in foto, in fase
|
||||||
>Antonio De Lucreziis</strong
|
di sviluppo), con il supporto di <strong>Francesco Minnocci</strong>.
|
||||||
> (in foto, in fase di sviluppo), con il supporto di <strong>Francesco Minnocci</strong>.
|
|
||||||
</p>
|
</p>
|
||||||
<img class="fill" src={WebSite.src} alt="Sviluppo del sito" />
|
<img class="fill" src={WebSite.src} alt="Sviluppo del sito" />
|
||||||
</Timeline>
|
</Timeline>
|
||||||
<Timeline title="Luca e le grandi pulizie" year="Apr 2024">
|
<Timeline title="Luca e le grandi pulizie" year="Apr 2024">
|
||||||
<p>
|
<p>
|
||||||
Nel 2024, <strong>Luca Lombardo</strong> entra a far parte del PHC. Questo stesso anno vengono
|
Nel 2024, <strong>Luca Lombardo</strong> entra a far parte del PHC. Questo stesso anno vengono effettuate
|
||||||
effettuate delle grandi pulizie nella stanza del PHC, come non si faceva dal lontano 2006.
|
delle grandi pulizie nella stanza del PHC, come non si faceva dal lontano 2006.
|
||||||
</p>
|
</p>
|
||||||
<img class="fill" src={imgPulizie.src} alt="pulizie phc" />
|
<img class="fill" src={imgPulizie.src} alt="pulizie phc" />
|
||||||
</Timeline>
|
</Timeline>
|
||||||
<Timeline title="Il cluster di Raspberry Pi" year="2023">
|
<Timeline title="Il cluster di Raspberry Pi" year="2023">
|
||||||
<p>
|
<p>
|
||||||
Il dipartimento acquista in due fasi diverse 34 (cloni) di Raspberry Pi 4, che vengono
|
Il dipartimento acquista in due fasi diverse 34 (cloni) di Raspberry Pi 4, che vengono assemblati in
|
||||||
assemblati in un cluster per il progetto "High Performance Mathematics". Il cluster è
|
un cluster per il progetto "High Performance Mathematics". Il cluster è stato assemblato,
|
||||||
stato assemblato, configurato e messo in funzione con la forte collaborazione macchinisti
|
configurato e messo in funzione con la forte collaborazione macchinisti del PHC, che ancora oggi ne
|
||||||
del PHC, che ancora oggi ne curano la manutenzione.
|
curano la manutenzione.
|
||||||
</p>
|
</p>
|
||||||
<img class="fill" src={imgCluster.src} alt="cluster di raspberry pi" />
|
<img class="fill" src={imgCluster.src} alt="cluster di raspberry pi" />
|
||||||
</Timeline>
|
</Timeline>
|
||||||
@@ -82,9 +80,8 @@ import WebSite from '@/assets/gallery/005-website-development@3x4.jpg'
|
|||||||
</Timeline>
|
</Timeline>
|
||||||
<Timeline title="Rinnovo del sito" year="2004">
|
<Timeline title="Rinnovo del sito" year="2004">
|
||||||
<p>
|
<p>
|
||||||
Dopo un periodo di inattività del progetto, il sito del PHC viene riscritto in PHP e
|
Dopo un periodo di inattività del progetto, il sito del PHC viene riscritto in PHP e trasferito sul
|
||||||
trasferito sul dominio <a
|
dominio <a href="https://web.archive.org/web/20040823112401/http://poisson.phc.unipi.it/"
|
||||||
href="https://web.archive.org/web/20040823112401/http://poisson.phc.unipi.it/"
|
|
||||||
>poisson.phc.unipi.it</a
|
>poisson.phc.unipi.it</a
|
||||||
>, il cui design è caratterizzato da un <a
|
>, il cui design è caratterizzato da un <a
|
||||||
href="https://web.archive.org/web/20060609003904im_/http://poisson.phc.unipi.it/logo_studenti.orig.png"
|
href="https://web.archive.org/web/20060609003904im_/http://poisson.phc.unipi.it/logo_studenti.orig.png"
|
||||||
@@ -108,33 +105,28 @@ import WebSite from '@/assets/gallery/005-website-development@3x4.jpg'
|
|||||||
</Timeline>
|
</Timeline>
|
||||||
<Timeline title="Rete del PHC e DNS" year="1999">
|
<Timeline title="Rete del PHC e DNS" year="1999">
|
||||||
<p>
|
<p>
|
||||||
Nel maggio del 1999 viene attivata la rete 131.114.10.0, con tanto di nameserver sul
|
Nel maggio del 1999 viene attivata la rete 131.114.10.0, con tanto di nameserver sul dominio <a
|
||||||
dominio <a href="https://web.archive.org/web/20010410215451/http://www.phc.unipi.it/"
|
href="https://web.archive.org/web/20010410215451/http://www.phc.unipi.it/">phc.unipi.it</a
|
||||||
>phc.unipi.it</a
|
|
||||||
>.
|
>.
|
||||||
</p>
|
</p>
|
||||||
</Timeline>
|
</Timeline>
|
||||||
<Timeline title="Fondazione del PHC" year="1999">
|
<Timeline title="Fondazione del PHC" year="1999">
|
||||||
<p>
|
<p>
|
||||||
In seguito alla proposta del prof. <strong>Sergio Steffè</strong>, in data 26 febbraio
|
In seguito alla proposta del prof. <strong>Sergio Steffè</strong>, in data 26 febbraio 1999 il
|
||||||
1999 il Dipartimento di Matematica approva una delibera per stanziare la stanza 106, una sottorete, il dominio DNS phc.dm.unipi.it ed
|
Dipartimento di Matematica approva una delibera per stanziare la stanza 106, una sottorete, il
|
||||||
alcuni computer ad uso di un gruppo di studenti (Riccardo Murri e Massimiliano Sala), così da avere un luogo in cui
|
dominio DNS phc.dm.unipi.it ed alcuni computer ad uso di un gruppo di studenti (Riccardo Murri e
|
||||||
"smanettare", offrire spazio a progetti interessanti, dare supporto informatico agli studenti e gestire il sito Poisson
|
Massimiliano Sala), così da avere un luogo in cui "smanettare", offrire spazio a progetti
|
||||||
|
interessanti, dare supporto informatico agli studenti e gestire il sito Poisson
|
||||||
</p>
|
</p>
|
||||||
<img
|
<img class="fill" src="https://poisson.phc.dm.unipi.it/~steffe/sergio.jpg" alt="Sergio Steffè" />
|
||||||
class="fill"
|
|
||||||
src="https://poisson.phc.dm.unipi.it/~steffe/sergio.jpg"
|
|
||||||
alt="Sergio Steffè"
|
|
||||||
/>
|
|
||||||
</Timeline>
|
</Timeline>
|
||||||
<Timeline title="Apertura di Poisson" year="~1995">
|
<Timeline title="Apertura di Poisson" year="~1995">
|
||||||
<p>
|
<p>
|
||||||
Nell'attuale Aula 4, allora semplice Aula studenti, nasce il sito web <strong
|
Nell'attuale Aula 4, allora semplice Aula studenti, nasce il sito web <strong
|
||||||
>poisson.dm.unipi.it</strong
|
>poisson.dm.unipi.it</strong
|
||||||
>
|
>
|
||||||
su dei computer messi a disposizione agli studenti da Vinicio Villani. Una versione del 1996
|
su dei computer messi a disposizione agli studenti da Vinicio Villani. Una versione del 1996 di tale
|
||||||
di tale sito si trova nel <a
|
sito si trova nel <a href="https://web.archive.org/web/19971017065805/http://poisson.dm.unipi.it/"
|
||||||
href="https://web.archive.org/web/19971017065805/http://poisson.dm.unipi.it/"
|
|
||||||
>Web Archive</a
|
>Web Archive</a
|
||||||
>
|
>
|
||||||
</p>
|
</p>
|
||||||
|
|||||||
@@ -75,12 +75,7 @@ function setup() {
|
|||||||
const handle = window.setInterval(() => {
|
const handle = window.setInterval(() => {
|
||||||
const time = new Date().getTime() - startTime.getTime()
|
const time = new Date().getTime() - startTime.getTime()
|
||||||
|
|
||||||
update(
|
update(state, g.canvas.width / window.devicePixelRatio, g.canvas.height / window.devicePixelRatio, time)
|
||||||
state,
|
|
||||||
g.canvas.width / window.devicePixelRatio,
|
|
||||||
g.canvas.height / window.devicePixelRatio,
|
|
||||||
time
|
|
||||||
)
|
|
||||||
render(g, state, time)
|
render(g, state, time)
|
||||||
}, 1000 / RENDERER_FPS)
|
}, 1000 / RENDERER_FPS)
|
||||||
|
|
||||||
@@ -266,25 +261,16 @@ const DIR_AVAILABLE_PREDICATE: Record<WireDirection, (pos: Point2, grid: Grid<Wi
|
|||||||
implies(grid.has([x - 1, y]), () => grid.get([x - 1, y]) !== 'down-right') &&
|
implies(grid.has([x - 1, y]), () => grid.get([x - 1, y]) !== 'down-right') &&
|
||||||
implies(grid.has([x + 1, y]), () => grid.get([x + 1, y]) !== 'down-left'),
|
implies(grid.has([x + 1, y]), () => grid.get([x + 1, y]) !== 'down-left'),
|
||||||
['down-left']: ([x, y], grid) =>
|
['down-left']: ([x, y], grid) =>
|
||||||
!grid.has([x - 1, y + 1]) &&
|
!grid.has([x - 1, y + 1]) && implies(grid.has([x - 1, y]), () => grid.get([x - 1, y]) === 'down-left'),
|
||||||
implies(grid.has([x - 1, y]), () => grid.get([x - 1, y]) === 'down-left'),
|
|
||||||
['down-right']: ([x, y], grid) =>
|
['down-right']: ([x, y], grid) =>
|
||||||
!grid.has([x + 1, y + 1]) &&
|
!grid.has([x + 1, y + 1]) && implies(grid.has([x + 1, y]), () => grid.get([x + 1, y]) === 'down-right'),
|
||||||
implies(grid.has([x + 1, y]), () => grid.get([x + 1, y]) === 'down-right'),
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function pruneDirections(
|
function pruneDirections(grid: Grid<WireCell>, position: Point2, directions: WireDirection[]): WireDirection[] {
|
||||||
grid: Grid<WireCell>,
|
|
||||||
position: Point2,
|
|
||||||
directions: WireDirection[]
|
|
||||||
): WireDirection[] {
|
|
||||||
return directions.filter(dir => DIR_AVAILABLE_PREDICATE[dir](position, grid))
|
return directions.filter(dir => DIR_AVAILABLE_PREDICATE[dir](position, grid))
|
||||||
}
|
}
|
||||||
|
|
||||||
function generateWire(
|
function generateWire(grid: Grid<WireCell>, startingPoint: Point2): { position: Point2; direction: WireCell }[] {
|
||||||
grid: Grid<WireCell>,
|
|
||||||
startingPoint: Point2
|
|
||||||
): { position: Point2; direction: WireCell }[] {
|
|
||||||
const segmentLength = Math.floor(1 - Math.random() ** 2) * 10 + 30
|
const segmentLength = Math.floor(1 - Math.random() ** 2) * 10 + 30
|
||||||
let currentPosition = startingPoint
|
let currentPosition = startingPoint
|
||||||
let currentDirection: WireDirection = randomChoice(['down', 'down', 'down', 'down-left', 'down-right'])
|
let currentDirection: WireDirection = randomChoice(['down', 'down', 'down', 'down-left', 'down-right'])
|
||||||
@@ -292,11 +278,7 @@ function generateWire(
|
|||||||
const steps: { position: Point2; direction: WireCell }[] = []
|
const steps: { position: Point2; direction: WireCell }[] = []
|
||||||
|
|
||||||
for (let i = 0; i < segmentLength; i++) {
|
for (let i = 0; i < segmentLength; i++) {
|
||||||
const availableDirections = pruneDirections(grid, currentPosition, [
|
const availableDirections = pruneDirections(grid, currentPosition, ['down', 'down-left', 'down-right'])
|
||||||
'down',
|
|
||||||
'down-left',
|
|
||||||
'down-right',
|
|
||||||
])
|
|
||||||
if (availableDirections.length === 0) {
|
if (availableDirections.length === 0) {
|
||||||
break
|
break
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Reference in New Issue
Block a user