Interessante.
Quasi ci stavo pensando, anche se il prezzo ovviamente è bello alto.
Poi ho visto che nessuna tastiera ha PageUp, PageDown e compagnia su tasti dedicati, ma sono invece sulle frecce direzionali e vanno usati assieme al tasto Fn.
Operazioni che dovrebbero essere accessibili con un solo dito hanno invece bisogno di entrambe le mani :/ Ho già fatto l'errore di comprare un Dell, che ha lo stesso difetto, e maledico la mia scelta ogni giorno.
l’account meglio su Codeberg / Gitea / Forgejo che sono 100% open rispetto a Gitlab o Github 😉
Gitea e Forgejo non offrono un servizio però, solo un'applicazione (se sbaglio linka pure, sono interessato).
Chiedere di mettere su e gestire un'infrastruttura del genere aperta al pubblico per condividere un programma mi sembra un po' esagerato. Per quanto sia divertente / soddisfacente / facile (opinione personale da uno che ha il suo server Gitea personale).
Devo esser sincero, inizialmente, leggendo la tua risposta, l’avevo intesa come un classico “io son meglio”, non volta ad apprendere, ragionare o migliorare la conoscenza di un neofita in Rust - modo in cui sembra trasparire tu mi consideri.
Allora vuol dire che non sono riuscito a trasmettere il tono giocoso e spensierato che avrei voluto. Mi spiace.
E forse ho frainteso il tuo messaggio originale in questo punto:
Questo codice è un macello!
Grazie, mi sono impegnato! Se hai notato bug, typo o cose insensate per favore commenta qui sotto!
In questa tua replica sembri molto meno propenso a ricevere commenti di quanto avessi letto nel messaggio originale.
Questo codice è un macello! /s
Lascerò a Clippy il compito di indicare tutti i problemi.
Aggiungi #![deny(clippy::pedantic)]
in cima ed esegui cargo clippy
.
Altri commenti in ordine sparso:
È decisamente poco idiomatico, anche se immagino sia stato scritto così apposta, dato che è indirizzato a chi il linguaggio non lo conosce.
Usare match
per estrarre esplicitamente gli errori è il modo sbagliato di usare Rust.
Quello giusto è usare l'operatore ?
, che lo fa in modo implicito (o al massimo if let
o let else
).
Non servono nemmeno anyhow o simili, le funzioni possono restituire Result<_, Box>
.
Senza contare che match
crea un nuovo scope e un nuovo livello di indentazione, il codice sembra la bandiera del Nepal.
Per lo stesso motivo, usa std::fs::read_from_string
invece di creare un file esplicitamente.
Gli argomenti trng
e trg
della funzione pick_random
suonano identici, ma a giudicare dal tipo sono ben diversi.
Forse potremmo controllare response.status() e fare un bel match...
Meglio usare Response::error_for_status
.
C'è quasi sempre un modo migliore di un match
esplicito per gestire gli errori.
Creare diversi moduli
Prima di creare nuovi moduli penserei a creare nuove funzioni.
main()
fa decisamente troppe cose.
Infine:
Perché non su github?
Al momento non ho un account che posso usare per queste cose, mi dispiace!
Questa non è una buona scusa. Gli account su GitHub / Gitlab / SourceHut / BitBucket... non costano niente.
Però tutto sommato è stata una buona idea, e il codice in sé non è poi così malvagio per un principiante (o per qualcuno che scrive per principianti). Magari riesci a fare incuriosire qualcuno.
e anche qua ci sarebbe da aprire un capitolo a parte sulla bulimia di giochi degli ultimi anni… meglio l’ennesima partita ad un gran gioco che conosciamo bene, tipo Gaia, oppure un gioco diverso ogni sera, senza mai approfondire nulla?
Qualche tempo fa andavo a giocare spesso con un amico. La nostra regola non scritta era di giocare ogni volta a un gioco nuovo e a uno che già conoscevamo.
Era un buon compromesso: sicuramente giocavamo a qualcosa che ci piaceva, e ogni tanto scoprivamo delle nuove (o vecchie) gemme.
Il locale di giochi da tavolo che c'è qui in città ha la versione deluxe di Terraforming Mars con tutte le tessere stampate in 3D e minuziosamente pitturate a mano dal proprietario.
Fa la sua figura, l'unico leggero difetto è che sono difficili da togliere dalle custodie, dato che sono relativamente piatte. E ovviamente aumentano la dimensione della scatola, anche se la causa principale sono le varie espansioni.
Non ho mai giocato a Root, ma sembra interessante. Perché dici che si ama o si odia?
Secondo me il problema principale di Munchkin è quello di essere non monotòno (con l'accento sulla terza sillaba, in senso matematico).
In qualsiasi momento, anche dopo due ore di gioco, c'è sempre il rischio di tornare all'inizio e dover rifare tutto da capo. In alcuni casi diventa davvero frustrante e ti fa passare la voglia di giocare.
Però in effetti è quasi un classico, e può essere molto divertente.
Trekking Through History. Semplice ma piacevole.
Il nostro gruppo gioca spesso a Timeline come "antipasto", un gioco semplice e diretto. Una volta abbiamo provato Timeline Challenge, ma ci è sembrato troppo contorto. Trekking Through History ha un tema simile, ma ci è sembrato più divertente.
Vivo in un paese dove il contante è praticamente inutilizzato. Da anni (decadi?) esiste un sistema per trasferire istantaneamente soldi da un conto all'altro, usando solo il numero di telefono, con zero commissioni. È un problema risolto.
Quando sono in Italia, teniamo il conto preciso di chi ha pagato cosa, e si cerca di bilanciare in modo che tenda a somma zero. Quando il totale è intorno a 10 / 20 €, si lascia perdere. Oltre si prende in considerazione il bonifico (ma il bonifico in valuta estera ha commissioni criminali, quindi spesso si lascia perdere lo stesso).