che differenza ce tra hard disk e ssd?
un hard disk è il classico disco rigido meccanico utilizzato praticamente da sempre sui pc, all'interno ci sono dei piatti magnetici che ruotano e delle testine per leggerli e scriverli.
gli ssd invece non hanno parti meccaniche al loro interno ma hanno solo dei chip di memoria, sono molto più veloci in lettura e scrittura rispetto ad un hdd.
ecco a confronto l'interno di un ssd (sinistra) e di un hdd da 2,5" (destra):
http://www.ireal.it/wp-content/uploads/2014/05/inside-ssd-1024x683.jpg
<p>ssl e ssh forniscono entrambi gli elementi crittografici per costruire un tunnel per il trasporto di dati riservati con integrità controllata. per quella parte, usano tecniche simili e possono soffrire dello stesso tipo di attacchi, quindi dovrebbero fornire una sicurezza simile (cioè una buona sicurezza) supponendo che siano entrambi correttamente implementati. che entrambi esistano è una specie di <a href="http://en.wikipedia.org/wiki/not\_invented\_here"> nih </a> sindrome: gli sviluppatori ssh avrebbero dovuto riutilizzare ssl per la parte del tunnel (il protocollo ssl è abbastanza flessibile da accogliere molte varianti, incluso il non utilizzo dei certificati).</p><p>differiscono sulle cose che si trovano intorno al tunnel. ssl utilizza tradizionalmente i certificati x.509 per annunciare le chiavi pubbliche del server e del client; ssh ha il suo formato. inoltre, ssh viene fornito con una serie di protocolli per ciò che va <em> all'interno del tunnel </em> (multiplexing di diversi trasferimenti, esecuzione dell'autenticazione basata su password all'interno del tunnel, gestione dei terminali. ..) mentre non esiste nulla di simile in ssl o, più precisamente, quando tali elementi vengono utilizzati in ssl non vengono considerati parte di ssl (ad esempio, quando si esegue l'autenticazione http basata su password in un tunnel ssl, noi dire che fa parte di "https", ma funziona davvero in un modo simile a quello che succede con ssh).</p><p>concettualmente, potresti prendere ssh e sostituire la parte del tunnel con quella di ssl. potresti anche prendere https e sostituire la cosa ssl con ssh con trasporto dati e un hook per estrarre la chiave pubblica del server dal suo certificato. non vi è alcuna impossibilità scientifica e, se eseguita correttamente, la sicurezza rimarrebbe la stessa. tuttavia, non esiste un insieme diffuso di convenzioni o strumenti esistenti per questo.</p><p>quindi non usiamo ssl e ssh per le stesse cose, ma questo è dovuto a quali strumenti sono stati storicamente forniti con le implementazioni di quei protocolli, <em> non </em> a causa di un differenza relativa alla sicurezza. e chiunque implementi ssl o ssh sarebbe ben consigliato di esaminare che tipo di attacchi sono stati provati su entrambi i protocolli.</p> ah, percio ssd lo faccio diventare d:. anche se ci sono file windows tipo flight simulator 2020?

se vuoi essere piu' sicuro puoi anche clonarlo (di programmi ce ne sono a bizzeffe anche free) essendo di solo data puoi farlo da windows. tu salvali sempre in cloud, non si sa mai. ovviamente devi prima spegnere la console prima di rimuovere l'hard disk. il mistero si infittisce .... dunque, alimentatore è ok, nessun problema. uso un ssd primario per so ed un hard disc wd black secondario per storaggio. il visualizzatore eventi riporta solo quello che dice la cronologia affidabilità: windows ha smesso di funzionare e arresto non corretto di windows. memoria potrebbe starci, ma ho fatto talmente tanti test ieri che lo escluderei. boh ..... l'unica cosa a cui penso, non avendo avuto nessun tipo di problema in ogni altra situazione, è che forse la mia configurazione e le dll di quei tre giochi, se settati al max ed in 4k, non vanno d'accordo, non so che pensare d'altro. 

aggiungo che ieri per sfizio ho collegato la macchina a monitor non 4k, semplicemente full hd: mai nessun tipo di crash con nessuno dei tre programmi .... mi vien da pensare che sia il 4k il problema, ma le temperature di scheda e cpu mi dicono di no. mah <p><code>var=$var1</code> è una versione semplificata di <code>var=${var1}</code>. ci sono cose che il secondo può fare che il primo non può, ad esempio fare riferimento a un indice di array (non portatile) o rimuovere una sottostringa (posix-portatile). vedere la sezione <a href="http://tldp.org/ldp/bash-beginners-guide/html/chap\_10.html">altre informazioni sulle variabili</a> della guida di bash per principianti e <a href="http://pubs.opengroup.org/onlinepubs/009695399/utilities/xcu\_chap02.html#tag\_02\_06\_02">espansione parametri</a> nelle specifiche posix.</p><p>utilizzo delle virgolette attorno a una variabile come in <code>rm -- "$var1"</code> o <code>rm -- "${var}"</code> è una buona idea. questo rende il contenuto della variabile un'unità atomica. se il valore della variabile contiene spazi vuoti (bene, i caratteri in <code>$ifs</code> variabile speciale, spazi vuoti per impostazione predefinita) o caratteri globbing e non lo citi, quindi ogni parola viene considerata per la generazione del nome file (globbing) la cui espansione rende altrettanti argomenti per tutto ciò che stai facendo.</p><pre><code>$ find . . ./*r* ./-rf ./another ./filename ./spaced filename ./another spaced filename ./another spaced filename/x $ var='spaced filename' # usually, 'spaced filename' would come from the output of some command and you weren't expecting it $ rm $var rm: cannot remove 'spaced': no such file or directory # oops! i just ran 'rm spaced filename' $ var='*r*' $ rm $var # expands to: 'rm' '-rf' '*r*' 'another spaced filename' $ find . . ./another ./spaced filename ./another spaced filename $ var='another spaced filename' $ rm -- "$var" $ find . . ./another ./spaced filename </code></pre><p>sulla portabilità: secondo <a href="http://pubs.opengroup.org/onlinepubs/9699919799/utilities/v3\_chap02.html#tag\_18\_06\_02">posix.1-2008 sezione 2.6.2</a> , le parentesi graffe sono opzionali.</p> <p><code>mknod</code> era originariamente utilizzato per creare il carattere e bloccare i dispositivi che popolano <code>/dev/</code>. oggi software come <code>udev</code> crea e rimuove automaticamente i nodi del dispositivo sul filesystem virtuale quando l'hardware corrispondente viene rilevato dal kernel, ma in origine <code>/dev</code> era solo una directory in <code>/</code> popolato durante l'installazione.</p><p>quindi sì, in caso di un disastro quasi completo che causa il <code>/dev</code> filesystem virtuale da non caricare e/o <code>udev</code> in modo spettacolare, utilizzando <code>mknod</code> per ripopolare scrupolosamente almeno un albero di dispositivi rudimentali per ottenere <em>qualcosa</em> è possibile eseguire il backup ... ma sì, è l'ora della storia dell'orrore di sysadmin. personalmente, raccomando una chiavetta usb o un cd di salvataggio.</p><p>a parte la creazione di pipe denominate, non riesco a pensare a un singolo possibile uso quotidiano per cui un utente finale dovrebbe preoccuparsi - e anche questo sta allungando la definizione di "uso quotidiano".</p> <p>come detto, è visto come un'unità usb da ubuntu, ma il sistema è progettato per la sincronizzazione in rete. la maggior parte delle cose non ha bisogno di un computer, ad esempio i miei contatti e i miei numeri di telefono si sincronizzano con il mio account gmail e facebook. immagini con picassa, file con dropbox, attività con remember the milk, ecc ...</p><p>lo collego davvero solo a un computer per eseguire i backup quando eseguo gli aggiornamenti di sistema (possiedo un htc magic con l'ultimo cyanogenmod rc). tutte le altre sincronizzazioni vengono eseguite magicamente sulla rete.</p> <p>suggerirei che esiste una distinzione tra un'applicazione web <em>site</em> e <em>web</em> - una distinzione che non esisteva molto bene quando jacob nielson scrisse il suo libro.</p><p>quando si fa clic su un collegamento web da <em>microsoft word</em>, si apre una nuova pagina del browser e il documento di word rimane in posizione.</p><p>allo stesso modo, quando si fa clic su un collegamento all'interno di <em>applicazione web</em>, l'utente si aspetta che si apra una nuova pagina del browser e che il suo lavoro rimanga.</p><p>per i file di aiuto, c'è un altro precedente: aiuto quasi sempre (*) si apre in una finestra separata e lascia intatto il lavoro degli utenti.</p><p>(*) non riesco a pensare a un'applicazione in cui non funziona, ma ci sono sempre delle eccezioni.</p> <h2>rng hardware vs software</h2><p>la prima cosa che citi è una fonte di rumore hardware. la misurazione ad alta precisione di alcuni fenomeni metastabili è sufficiente per generare dati imprevedibili. questo può essere fatto con un diodo zener polarizzato al contrario, con oscillatori ad anello, con un adc o persino con un contatore geiger. si può anche fare la mia misurazione dei ritardi a livello di nanosecondi nei tempi tra i tasti premuti. queste fonti di rumore possono fallire se l'hardware stesso inizia a guastarsi. ad esempio, un transistor può guastarsi se non è progettato specificamente per funzionare al contrario ad alta tensione. mentre queste tecniche hanno vari livelli di fragilità, non è ciò che viene discusso nel testo che hai citato.</p><p>il secondo tipo di rng menzionato è un rng software chiamato generatore di numeri pseudocasuali (prng<sup>*</sup>). questo è un algoritmo che accetta un <em>seed</em>, che è come una chiave di crittografia, e lo espande in un flusso infinito di dati. tenta di garantire che i dati non possano essere previsti o divulgati a parte la pura casualità, senza la conoscenza del seme casuale segreto con cui è iniziato l'algoritmo. in questo caso, il prng è implementato nel software puro, quindi la sua rottura richiede solo l'introduzione di un bug nel codice, che è ciò di cui parla il testo che hai citato. è semplicemente il codice che è <em>fragile</em>, rischiando il completo fallimento se vengono apportate modifiche al codice che si discostano dal comportamento previsto dell'algoritmo.</p><p>a prng può essere pensato come un algoritmo di crittografia riproposto. in effetti, è possibile creare un crittograficamente sicuro prng utilizzando un codice come aes per crittografare un contatore. fintanto che la chiave di crittografia (seed) è segreta, l'output non può essere previsto e il seed non può essere scoperto. quando ci si pensa in questo modo, diventa più facile capire come può una piccola modifica non significativa del codice rompere completamente la sicurezza dell'algoritmo.</p><h2>collezionando casualità</h2><p>quindi, in che modo i dispositivi moderni raccolgono effettivamente la casualità? prendiamo un server in esecuzione silenziosamente in un datacenter da qualche parte. per supportare cose come tls, ha bisogno di una grande quantità di dati completamente imprevedibili che non possono essere distinti da un flusso veramente casuale. senza una fonte di rumore hardware dedicata, la casualità deve provenire dall'interno. i computer si sforzano di essere completamente deterministici, ma hanno un sacco di input da dispositivi non deterministici. enter ... interrompe!</p><p>nell'hardware moderno, un <em>interruzione</em> è un segnale emesso dall'hardware per avvisare la cpu di un cambio di stato. permette alla cpu di evitare il polling rapido di tutti i dispositivi hardware per gli aggiornamenti e invece di fidarsi che il dispositivo lo avviserà in modo asincrono quando sarà il momento. quando si verifica un interrupt, viene chiamato un <em>interrupt handler</em> per elaborare il segnale. si scopre che questo gestore è il posto perfetto per ottenere casualità! quando si misura la tempistica degli interrupt a livello di nanosecondi, è possibile ottenere rapidamente un bel po 'di casualità. questo perché gli interrupt vengono attivati ​​per ogni sorta di cose, dai pacchetti che arrivano sul nic ai dati letti da un disco rigido. alcune di queste fonti di interruzione sono altamente non deterministiche, come un disco rigido azionamento che si basa sul movimento fisico di un attuatore.</p><p>una volta che sono stati raccolti sufficienti bit casuali dal sistema operativo, un piccolo seme di almeno 128 bit può essere inserito in un crittograficamente sicuro prng per generare un flusso illimitato di dati pseudocasuali. a meno che qualcuno non possa prevedere esattamente quando si sono verificati tutti gli interrupt passati, con precisione dei nanosecondi, non saranno in grado di derivare il seme e non saranno in grado di prevedere il futuro prng. ciò rende l'output completamente adatto alle chiavi tls.</p><p><sub>* un orientato alla sicurezza prng è chiamato prng crittograficamente sicuro o csprng. l'uso di un normale prng quando un'applicazione richiede un csprng può provocare sicurezza vulnerabilità.</sub></p> <p>query di esempio sotto, ecco alcuni dettagli su come ho risolto.</p><p>usando <code>datediff(wk, ...)</code> ci darà il numero di settimane tra le 2 date. sql server valuta questo come differenza tra i numeri settimanali piuttosto che in base al numero di giorni. questo è perfetto, dal momento che possiamo usare questo per determinare quanti weekend sono passati tra le date. </p><p>quindi possiamo moltiplicare questo valore per 2 per ottenere il numero di giorni del fine settimana che si sono verificati e sottrarlo dal <code>datediff(dd, ...)</code> per ottenere il numero di giorni della settimana. </p><p>questo non si comporta correttamente al 100% quando la data di inizio o di fine cade di domenica, però. così ho aggiunto in alcuni casi la logica alla fine del calcolo per gestire quelle istanze.</p><p>si potrebbe anche voler considerare se <code>datediff</code> dovrebbe essere completamente inclusivo. per esempio. la differenza tra 9/10 e 9/11 1 giorno o 2 giorni? in quest'ultimo caso, dovrai aggiungere 1 al prodotto finale.</p><pre><code>declare @d1 datetime, @d2 datetime select @d1 = '9/9/2011', @d2 = '9/18/2011' select datediff(dd, @d1, @d2) - (datediff(wk, @d1, @d2) * 2) - case when datepart(dw, @d1) = 1 then 1 else 0 end + case when datepart(dw, @d2) = 1 then 1 else 0 end </code></pre>