Sto programmando un sistema di permessi che lavora con i bit. Ora però mi sorge spontanea la domanda: qual è il limite di opzioni che posso inserire?
Consigliate o sconsigliate questo metodo? Se si, dove e perché?
Grazie in anticipo.
Sto programmando un sistema di permessi che lavora con i bit. Ora però mi sorge spontanea la domanda: qual è il limite di opzioni che posso inserire?
Consigliate o sconsigliate questo metodo? Se si, dove e perché?
Grazie in anticipo.
Un pò come il chmod...
L'ho usato per salvarci in un forum i permessi degli utenti.... Ed è molto comodo. Tra l'altro, è anche molto "piccolo" il dato da salvare: in un numero, ci salvavo tutti i permessi (una decina, penso.. quindi ci stava tutto in un numero non maggiore di "1024"!).
Adesso che ci penso, però, dopo molti bit, aggiungendo ulteriori bit il numero diventa enorme (un bit in più, raddoppia il numero), quindi forse dopo un pò sarebbe meglio creare un secondo numero etc etc... Il limite di opzioni massime non saprei: bisogna vedere il numero maggiore di PHP (perché stiamo parlando di PHP, vero?)... Comunque è molto alto!
Ciao!
Ultima modifica di alemoppo : 18-01-2012 alle ore 01.49.48
regolamento altervista_______________ regolamento forum
Dipende dal tipo che stai usando. Se è un intero da 32-bit sono ovviamente 32. Considera che i server di Altervista lavorano proprio a 32-bit, quindi andare oltre potrebbe creare dei problemi.
Piuttosto, se stai usando il database, proverei ad usare il tipo SET di MySQL che permette di definire un campo che può contenere fino a 64 etichette che possono essere attive indipendentemente una dall'altra. In pratica è quello che stai facendo tu con in più il fatto che ad ogni bit è associato una nome testuale che rende più comprensibile il tutto.
Esatto, devo fare proprio un sistema di permessi per il forum.
L'unica limitazione è il fatto che non posso avere più di un tot di opzioni, anche se ora che ci penso, ogni BIT è un opzione, quindi presumo un massimo di 32 in un x86 e 64 in un x64, o sbaglio?
Il numero più alto in PHP in un sistema a 32bit è (int) 2147483647, mentre in uno a 62 è (int) 9223372036854775807 (anche in negativo).
@saitfander: in pratica è come dare un alias ed automaticamente mi viene creato il valore int e bin dell'alias sino ad un massimo di 64 opzioni?
Grazie per le risposte.
Sinceramente non capisco cosa vuoi fare.
Se il tuo problema occupare il minor spazio possibile allora usa i char, un char occupa 8 bit, e lo puoi valorizzare con numeri e lettere.
"L'intelligenza è una pianta che va curata continuamente.
Dovreste vedere com'è bello, il mio bonsai."
Rat-man®
[Gradient Text]
[Su che server sei?]
->flickr
Il mio problema non è lo spazio (ne parlammo anche in un altro post dove scrissi che son fissato con l'ottimizzazione), ma fare un sistema di permessi dinamico, non complesso e che, se possibile, occupi il meno spazio possibile sia in memoria che nel DB, ma questo è l'ultimo dei problemi.
Il sistema dei permessi sarà utilizzato in tutto il CMS e saranno dei semplici switch si/no, quindi mi sono buttato sui bit (1/0), dato che il sistema è ottimizzato su TUTTI i fronti.
Ho chiesto quali sarebbero stati i limiti e, nel caso, se avessero impedito l'utilizzo di questo metodo per fare, appunto, il sistema dei permessi su scritto. Poi ho chiesto qualche altra valida alternativa al sistema binari, ma che non sia troppo invasivo.
Ho letto del sistema ACL, ma prima di prenderlo in considerazione, vorrei capire cosa mi conviene di più.
{una mia curiosità}
Ma se ad esempio facciamo(su una macchina x64).Codice PHP:
$v = 2^80;
L'interprete non lo "spezza" in due variabili da 64?
Oppure usa mantissa/esponente, quindi ancora ci stà largamente?
E se scriviamo(1 exp 20), come si comporta?Codice PHP:
$v = 100000000000000000000;
Grazie,
Ciao!
regolamento altervista_______________ regolamento forum
Stando alla guida, se il valore scritto supera i limiti, viene interpretato come numero in virgola mobile.
Per effettuare calcoli esatti con precisione arbitraria c'è questa libreria: http://www.php.net/manual/en/intro.gmp.php, che spezza il numero in tante word e poi esegue le operazioni su queste.