n° 185
Maggio/Giugno 2013
Maggio 20, 2013, 01:53:22 pm *
Benvenuto! Accedi o registrati.
Hai dimenticato l'e-mail di attivazione?

Accesso con nome utente, password e durata della sessione
Notizia:
 
  Indice Linux Windows Techassistance Gameassistance videogame hardware Aiuto Ricerca Agenda Downloads Accedi Registrati  

* Messaggi recenti
Messaggi recenti
  Visualizza messaggi
Pagine: [1] 2 3 ... 131
1  Programmazione Web / JavaScript/AJAX / Re: Pari o dispari inserita:: Maggio 15, 2013, 06:56:43 pm
Probabilmente l'autore ha voluto creare un nome inutilmente complesso per una funzione ancora più inutilmente complessa, giudicando la via della sanità mentale troppo ovvia e noiosa, e finendo per non capirci più niente lui stesso ("is Not UnEven", vuol dire "non è non-pari", quindi semplicemente "è pari". Ma l'implementazione della funzione verifica se è dispari!).

Scrivere funzioni del genere senza usare triple negazioni, confronti booleani assurdi e if inutili, del resto, è davvero immediato:

Codice:
isEven = function(n) {
    return n % 2 == 0;
}

o anche:

Codice:
isOdd = function(n) {
    return n % 2 != 0; //o ancor meglio: n & 1 == 1;
}

Fra i numerosi errori dell'articolo l'unico che vale veramente la pena di segnalare è che non si ribadisce mai abbastanza che con l'operatore modulo bisogna stare attenti ai numeri negativi. Implementare isOdd come (n%2 == 1) fa sì che numeri come -5 vengano considerati "pari".

In genere non mi piace affatto il gioco al massacro sul lavoro altrui (si apprezza sempre lo sforzo, quantomeno), ma fatico a non farmi cadere le braccia, vedendo il numero di errori (logici, stilistici e linguistici) stipati in un articolo tanto breve e in così poche righe di codice. E' un'ennesima dimostrazione di quanto i tutorial su Internet finiscano troppo spesso per essere una fonte di disinformazione e di quanto sia importante affidare chi inizia a risorse valide e di qualità riconosciuta.

Lasciato questo monito, da tenere in considerazione la prossima volta che qualcuno chiederà: "mi date un sito con un tutorial gratuito in italiano su X?", chiudo il thread per evitare che si trasformi in un tiro a segno sulla Croce Rossa, che è l'esatto opposto dello spirito costruttivo che anima questo forum.
2  Varie ed Eventuali / Concetti, idee, algoritmi / Re: Creazione coppie di numeri inserita:: Maggio 09, 2013, 12:54:06 pm
Quando ho letto il problema ho avuto un forte déjà vu, ma non riuscivo bene a ricordare da dove venisse. Ora mi è venuto in mente: abbiamo già trattato esattamente la stessa cosa molti anni fa, su questo stesso forum, in uno storico e bellissimo thread che è stato ripreso anche dalla rivista stessa. Lo trovi qui.

In quel caso, che forse è anche il tuo, la ragione di questo giochino era la creazione di un calendario di incontri per un torneo. Sono saltate fuori diverse implementazioni, fra cui una con backtracking e un'elegante soluzione con matrice tabù da parte di M.A.W. 1968.
3  Microsoft Office / Excel / SPOSTATO: Creazione coppie di numeri inserita:: Maggio 09, 2013, 12:12:27 am
Questa discussione è stata spostata in Concetti, idee, algoritmi.

http://www.ioprogrammo.it/index.php?topic=22750.0
4  Varie ed Eventuali / Concetti, idee, algoritmi / Re: Creazione coppie di numeri inserita:: Maggio 09, 2013, 12:11:31 am
E' un bel problema di ottimizzazione combinatoria, in stile sudoku. La soluzione apparentemente non è banalissima: un semplice ciclo di riempimento che badi solo a soddisfare i vincoli (come quello che ho abbozzato velocemente qui, in javascript) non basta: occorre popolare le celle in modo da precludere il meno possibile l'inserimento dei valori nelle celle successive. Infatti la soluzione banale funziona bene per potenze di 2 (n=8, 16, 32...), ma non per altri casi (n=6, 10, etc...). Non è da escludere che una soluzione, in alcuni casi, semplicemente non esista.

Una soluzione adeguata richiede un riempimento più "intelligente" sfalsando il ciclo secondo quale criterio ben congegnato, o seguendo un'euristica (ad esempio assegnando una priorità diversa alle coppie a seconda della quantità di numeri rimasti per ciascuna delle colonne), o con backtracking, o con una commistione di queste tre cose.

In attesa di verificare una di queste soluzioni, sposto il thread in Concetti, Idee, Algoritmi, in modo da dargli più visibilità.

Posso chiedere, per mia curiosità personale, da quale necessità pratica viene questo "giochino"? O è solo un divertimento matematico?
5  Linguaggi di programmazione / Ambienti di programmazione / Re: Consiglio per sviluppare su WEB inserita:: Aprile 30, 2013, 12:42:42 pm
Citazione
puntando sui nuovi ambienti x ASP.NET tipo  MVC, razor

Ti conviene prima fare un bel po' di esperienza con l'asp.net classico. MVC & co. sono ottime soluzioni che però aggiungono uno strato extra, che è meglio studiarsi a parte, una volta digerito bene tutto quello che sta sotto.
6  Linguaggi di programmazione / Ambienti di programmazione / Re: Consiglio per sviluppare su WEB inserita:: Aprile 30, 2013, 12:04:06 pm
Citazione
Mi conviene provare con MVC o Razor?

Non direi. Visto che sei agli inizi, il percorso obbligato è iniziare:

1) SOLO con html e css, studiati bene.
2) Quindi con javascript, studiato bene
3) Librerie lato client, tipo jquery e qualche libreria MVC (tipo backbone/ember/angular. Sceglierai quando sarai arrivato a questo punto).
4) Una soluzione lato server (la scelta naturale è asp.net, ma sceglierai quando sarai arrivato a questo punto)
5) Volendo, uno o più framework MVC lato server. Tipo asp.net MVC / razor.

Ci sono anche altre soluzioni, ovviamente, ma i primi 3 punti sono indispensabili e non cambiano, quindi comincia da quelli. L'IDE è assolutamente irrilevante, pertanto ti consiglio di usare VS stesso, o se proprio vuoi partire da qualcosa di più masochistico, Notepad(magari ++, o simili, per avere almeno uno straccio di syntax highlighting e bracket matching).
7  Linguaggi di programmazione / Ambienti di programmazione / Re: Consiglio per sviluppare su WEB inserita:: Aprile 29, 2013, 09:07:18 pm
Citazione
la scelta migliore per te è certamente usare ASP.Net, e quindi Visual Studio

Appoggio in pieno il suggerimento. A meno che tu, secks, non abbia specifici vincoli per valutare alternative.

Quelli che hai posto finora sembrano strani: uso almeno sei IDE diversi quotidianamente (VS, MonoDevelop, XCode, Eclipse, Aptana e Komodo), e Visual Studio è secondo me innegabilmente il migliore. Il fatto che non ti sembri "agevole" per il web dipende probabilmente dal fatto che hai poca esperienza (ci sono anche soluzioni come MVC, razor, eccetera, che semplificano le cose ancora di più).

Il vincolo dei sistemi operativi multipli è anch'esso strano (di solito è più un problema per lo sviluppo desktop: un sito web è comunque accessibile da qualunque browser su qualunque piattaforma). Anche se è molto masochistico scrivere un sito in asp.net per poi farlo girare su una macchina linux, potresti valutare anche l'uso di mono... Occhi al cielo


8  Linguaggi di programmazione / C/C++ / Re: La matematica inserita:: Aprile 29, 2013, 08:55:21 pm
La libreria <math.h> (o <cmath>, se stai sviluppando in C++), ha tutto l'occorrente. Per le parentesi dovrai complicare un po' la tua calcolatrice, introducendo la gestione di uno stack per memorizzare i risultati con diversi gradi di priorità.
9  Linguaggi di programmazione / Linux C/C++ / Re: Pila e Coda (Linguaggio C) inserita:: Aprile 28, 2013, 08:32:37 am
Benvenuto sul forum,

ti invito a leggere il regolamento, in particolare i punti 2e e 2g.
10  Microsoft Office / Excel / Re: colore sfondo cella in base a valore di un'altra cella inserita:: Aprile 25, 2013, 11:44:45 am
Citazione
Con Vba una soluzione potrebbe essere questa:

La soluzione è buona e giusta, ma il codice di "validazione" è orripilante. Molto più indicato sarebbe usare una ricerca in una stringa, o ancor meglio una regex, o ancor più semplicemente lasciar fare a vba stesso e catturare l'eventuale eccezione:

Codice:
Sub coloraCella(cellaDaColorare as Range, colore as Long)
    On Error GoTo errHandler
    
    Dim red As Byte, green As Byte, blue As Byte
    
    red = CByte("&h" & Left(colore, 2))
    green = CByte("&h" & Mid(colore, 3, 2))
    blue = CByte("&h" & Right(colore, 2))
    
    cellaDaColorare.Interior.Color = RGB(red, green, blue)
    Exit Sub
errHandler:
    MsgBox ("dati non corretti")
End Sub

Vale la pena di notare che per la stramaledetta endianness war vba interpreta i colori RGB al contrario rispetto al formato HTML (cioè &HBBGGRR al posto di #RRGGBB), il che è un peccato, perché altrimenti si sarebbe potuta evitare la suddivisione in RGB scrivendo semplicemente:

Codice:
Sub coloraCella(cellaDaColorare as Range, colore as Long)
    On Error GoTo errHandler
    cellaDaColorare.Interior.Color = Clng("&h" & colore)    
    Exit Sub
errHandler:
    MsgBox ("dati non corretti")
End  Sub
11  Programmazione Web / PHP / Re: PHP per videogame inserita:: Aprile 22, 2013, 12:54:07 pm
Citazione
Io mi appoggerei ad una funzione di criptatura MD5, SHA1, SHA2 o una fatta da me stesso se avessi voglia di cimentarmi

Memorizzare un hash nella pagina può essere un modo semplice per risolvere il problema dell'utente che vede la risposta nel sorgente, se GFG non ha grandi pretese di sicurezza per il suo gioco. Ma per un browser game serio l'unica via è quella suggerita da MatrixTeo, dato che qualunque iniziativa presa lato client può essere facilmente aggirata semplicemente alterando il codice in corsa (oggi cmd+alt+i sanno usarlo anche i bambini).

Nei browser game reali tutti i controlli si fanno lato server e il client serve solo a visualizzare le risposte del server e inviare dati via ajax. I dati possono avere una pre-validazione, ma devono essere necessariamente ricontrollati lato server, dato che i furboni sono sempre in agguato. E soprattutto, nessun dato sensibile (tipo risposte) dev'essere ospitato sul client.

In questo caso specifico: l'utente scrive la risposta sul suo browser, il browser la invia al server, il server controlla e restituisce l'esito, sotto forma di una pagina a cui andare, o di html da iniettare nella pagina corrente. Meglio evitare che il browser faccia un semplice "if (rispostaServer == 'ok') {...} else {...}", altrimenti siamo daccapo (nulla vieta al furbone di alterare il contenuto di rispostaServer, rendendolo 'ok' un attimo prima del controllo).

Inutile dire che eventuali punteggi e variabili di progressivo (tipo risposteGiusteDateFinora) non vanno assolutamente passate, ma tenute solo lato server (si presuppone ovviamente un meccanismo di session).
12  Varie ed Eventuali / Concetti, idee, algoritmi / Re: Formula per matrice riempita secondo diagonali inserita:: Aprile 18, 2013, 01:39:11 pm
Citazione
Se vuoi sapere tutto sulle pizze sessagesimali, leggi questo thread e soprattutto questo.

Ah, i tempi d'oro del forum e della rivista Occhi al cielo

Citazione
Speriamo assolutamente di no:

Magari aprirei un'altra sezione: "Come sono arrivato alla soluzione di un algoritmo efficiente quand'anche si tratti di una reimplementazione asincrona ed estemporanea".

Eh, magari un giorno, in un blog tipo "le mie memorie" Felice Nel qual caso, ti avvertirò aggiungendoci un: "ah, i tempi d'oro del forum e della rivista..."
13  Linguaggi di programmazione / C/C++ / Re: Problema con lista di interi C++ inserita:: Aprile 18, 2013, 12:27:38 pm
Hai provato a debuggare? E' una pratica che ti consiglio di considerare parte integrante della programmazione, soprattutto finché non sviluppi la capacità di compilare ed eseguire mentalmente il codice C++.

Così ad occhio, il programma fallisce perché nel caso dell'inserimento in testa, quando la lista è vuota, non imposti il successore a 0. Il nodo successivo si trova quindi in una locazione casuale di memoria, che viene richiamata al secondo inserimento, causando il crash dell'applicazione.
14  Varie ed Eventuali / Concetti, idee, algoritmi / Re: Formula per matrice riempita secondo diagonali inserita:: Aprile 14, 2013, 04:06:37 am
@Dev
Citazione
La differenza coi risultati di un dilettante si vede parecchio.

Vedi che non mi so spiegare? Il dilettante in questione sono io, che ci ho messo un post di 50 righe per spiegare qualcosa che un divulgatore migliore avrebbe spiegato più chiaramente e formalmente in 5! Felice

Ti ringrazio invece ancora per l'intervento. Questo spazio è per fornire soluzioni diverse con diversi gradi di complessità. Ogni intervento sensato (e il tuo lo era, eccome) arricchisce la discussione ed è il benvenuto.

PS: Ho aggiornato il post con la soluzione completa (comprendendo l'altra sottomatrice). Così ora al posto di 50 righe sono 60...  Occhi al cielo

Citazione
Non avevo considerato l'impiego di memoria basandomi, di fatto, esclusivamente sul 4x4 da te esposto.

Considera che ho usato le formule in questo thread in un'applicazione reale questa notte (descrivere il problema sarebbe bello, perché è un impiego molto interessante e inaspettato di una cosa che sembra solo un divertimento matematico, ma ci vorrebbe un altro post chilometrico e credo che annoierei chiunque. Finirà nella lista delle "soluzioni bellissime che potrò raccontare solo a me stesso"  Indeciso). Alla fine, comunque, la matriciona misurava 216 * 216 = 232 = 4294967296 elementi! Senza le formule in O(1) descritte in questo thread, non avrei avuto alcuna possibilità di cavarmela e avrei dovuto accontentarmi di una pessima alternativa.
15  Varie ed Eventuali / Concetti, idee, algoritmi / Re: Formula per matrice riempita secondo diagonali inserita:: Aprile 13, 2013, 11:48:57 pm
Citazione
In sostanza, abbiamo quindi: n= (-1+sqrt(8*v+1))/2

Ammirazione e pizze sessagesimali. Sia per la formula, che per l'effetto "Sherlock" che c'è sempre quando posti una soluzione:


- Ma Holmes! Come ha potuto sapere che [...]?
- Ma mio caro Watson, è bastato [...]
- Beh, a ben pensarci ci si poteva arrivare
[sappiamo tutti di no Occhi al cielo]

Grazie ancora.
Pagine: [1] 2 3 ... 131
Copyright © 2011 Edizioni Master SpA. p.iva : 02105820787

Tutti i diritti di proprietà letteraria e artistica riservati. - Privacy



Links to Page